From 19b3d67763603c16e3239a0d12a6fbc6b2b4a116 Mon Sep 17 00:00:00 2001 From: Hyyan Abo Fakher Date: Sat, 7 Mar 2020 13:57:22 +0100 Subject: [PATCH] feat: add `resetRowHeights` api method --- BBjGridExWidget.bbj | 12 ++++++++++++ client/dist/bbj-grid-widget.js | 13 ++++++++++++- client/dist/bbj-grid-widget.min.js | 2 +- client/dist/report.html | 2 +- client/src/api/rows.js | 13 +++++++++++-- 5 files changed, 37 insertions(+), 5 deletions(-) diff --git a/BBjGridExWidget.bbj b/BBjGridExWidget.bbj index 156a8ace..b7b1b8f1 100644 --- a/BBjGridExWidget.bbj +++ b/BBjGridExWidget.bbj @@ -2365,6 +2365,18 @@ class public BBjGridExWidget extends BBjWidget implements BBjGridExWidgetColumns #setRowHeight(str(index!) , height!) methodend rem /** + rem * Reset The row heights. + rem * + rem *
#API + rem * + rem * The rows height is calculated once when the data is first given to the grid. + rem * If the data changes, or the width of a column changes, then you may require the grid to calculate + rem * the height again by calling this method + rem */ + method public void resetRowHeights() + #executeScript("$wnd.gw_resetRowHeights('" + #GRIDID$ + "')") + methodend + rem /** rem * Set a sorting for one or more columns rem * rem *
#API diff --git a/client/dist/bbj-grid-widget.js b/client/dist/bbj-grid-widget.js index fb688495..4d66be2b 100644 --- a/client/dist/bbj-grid-widget.js +++ b/client/dist/bbj-grid-widget.js @@ -26852,6 +26852,7 @@ exports.gw_ensureIndexVisible = gw_ensureIndexVisible; exports.gw_navigateToNextRow = gw_navigateToNextRow; exports.gw_getRowNodeId = gw_getRowNodeId; exports.gw_setRowsData = gw_setRowsData; +exports.gw_resetRowHeights = gw_resetRowHeights; exports.gw_setRowData = gw_setRowData; exports.gw_removeRows = gw_removeRows; exports.gw_addRows = gw_addRows; @@ -26963,6 +26964,16 @@ function gw_setRowsData(id, json) { options.api.setRowData(json); options.rowData = json; } +/** + * Reset the row height + * + * @param {String} id the grid id + */ + + +function gw_resetRowHeights(id) { + (0, _utilities.gw_getGrid)(id).options.api.resetRowHeights(); +} /** * Update a row on the grid * @@ -28219,4 +28230,4 @@ module.exports = __webpack_require__(/*! ./src/index.js */"./src/index.js"); /***/ }) /******/ }))); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vLi4vLi4vYmFzaXMtaW5wdXQtbWFza2luZy9ub2RlX21vZHVsZXMvYmJqLW1hc2tzL3NyYy9OdW1iZXJNYXNrL051bWJlck1hc2suanMiLCJ3ZWJwYWNrOi8vLy4vLi4vLi4vYmFzaXMtaW5wdXQtbWFza2luZy9ub2RlX21vZHVsZXMvYmJqLW1hc2tzL3NyYy9OdW1iZXJNYXNrL2luZGV4LmpzIiwid2VicGFjazovLy8uLy4uLy4uL2Jhc2lzLWlucHV0LW1hc2tpbmcvbm9kZV9tb2R1bGVzL2Jiai1tYXNrcy9zcmMvU3RyaW5nTWFzay9TdHJpbmdNYXNrLmpzIiwid2VicGFjazovLy8uLy4uLy4uL2Jhc2lzLWlucHV0LW1hc2tpbmcvbm9kZV9tb2R1bGVzL2Jiai1tYXNrcy9zcmMvU3RyaW5nTWFzay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYWctZ3JpZC1jb21tdW5pdHkvZGlzdC9zdHlsZXMvYWctZ3JpZC5jc3M/YjQzNiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYWctZ3JpZC1jb21tdW5pdHkvZGlzdC9zdHlsZXMvYWctdGhlbWUtYmFsaGFtLWRhcmsuY3NzP2NkYzEiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FnLWdyaWQtY29tbXVuaXR5L2Rpc3Qvc3R5bGVzL2FnLXRoZW1lLWJhbGhhbS5jc3M/YjkzMCIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYWctZ3JpZC1jb21tdW5pdHkvZGlzdC9zdHlsZXMvYWctdGhlbWUtbWF0ZXJpYWwuY3NzPzExYWUiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrOi93ZWJwYWNrL2Jvb3RzdHJhcCA5OTA1NGJkNzlmMjNlYTBmMDk4OCIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvQ29tcG9uZW50L2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9jb3JlLWRlY29yYXRvcnMvc3JjL2F1dG9iaW5kLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9jb3JlLWRlY29yYXRvcnMvc3JjL292ZXJyaWRlLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VHZXRUYWcuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc09iamVjdExpa2UuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlcy5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvY29yZS1kZWNvcmF0b3JzL3NyYy9wcml2YXRlL3V0aWxzLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNPYmplY3QuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fU3ltYm9sLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3Jvb3QuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9lcS5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzQXJyYXlMaWtlLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi90b0ludGVnZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvQm9vbGVhblN3aXRjaC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvVGVtcGxhdGVSZW5kZXJlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlQXNzaWduVmFsdWUuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZGVmaW5lUHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0Z1bmN0aW9uLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2ZyZWVHbG9iYWwuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vZ2xvYmFsLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VSZXN0LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaWRlbnRpdHkuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXBwbHkuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNJdGVyYXRlZUNhbGwuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0xlbmd0aC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19pc0luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2FycmF5TGlrZUtleXMuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0FycmF5LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vLyh3ZWJwYWNrKS9idWlsZGluL2hhcm1vbnktbW9kdWxlLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2lzUHJvdG90eXBlLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNFcnJvci5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19vdmVyQXJnLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2FycmF5TWFwLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3JlSW50ZXJwb2xhdGUuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy90b1N0cmluZy5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvY29yZS1kZWNvcmF0b3JzL3NyYy9yZWFkb25seS5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvZGF0ZS1mbnMtdHovZXNtL3V0Y1RvWm9uZWRUaW1lL2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9kYXRlLWZucy10ei9lc20vX2xpYi90elBhcnNlVGltZXpvbmUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vc3JjL0V2ZW50c01peGluL2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9EYXRlVGltZUlucHV0L2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvQm9vbGVhbkVkaXRvci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvQm9vbGVhbkVkaXRvci9Cb29sZWFuRWRpdG9yLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9Db21wb25lbnQvQ29tcG9uZW50LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9Cb29sZWFuU3dpdGNoL0Jvb2xlYW5Td2l0Y2guanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2NvcmUtZGVjb3JhdG9ycy9zcmMvbGF6eS1pbml0aWFsaXplLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9Cb29sZWFuU3dpdGNoL3N0eWxlLnNjc3MiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vc3JjL0Jvb2xlYW5Td2l0Y2gvc3R5bGUuc2Nzcz84ZjAyIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvbGliL3VybHMuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vc3JjL0Jvb2xlYW5SZW5kZXJlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvQm9vbGVhblJlbmRlcmVyL0Jvb2xlYW5SZW5kZXJlci5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvQm9vbGVhbkZpbHRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvQm9vbGVhbkZpbHRlci9Cb29sZWFuRmlsdGVyLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9Cb29sZWFuRmlsdGVyL3N0eWxlLnNjc3MiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vc3JjL0Jvb2xlYW5GaWx0ZXIvc3R5bGUuc2Nzcz84MmRiIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9OdW1iZXJFZGl0b3IvaW5kZXguanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vc3JjL051bWJlckVkaXRvci9OdW1iZXJFZGl0b3IuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vc3JjL051bWJlckVkaXRvci9zdHlsZS5zY3NzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9OdW1iZXJFZGl0b3Ivc3R5bGUuc2Nzcz80YjdjIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9UZXh0RWRpdG9yL2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9UZXh0RWRpdG9yL1RleHRFZGl0b3IuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vc3JjL1RleHRFZGl0b3Ivc3R5bGUuc2NzcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvVGV4dEVkaXRvci9zdHlsZS5zY3NzPzEzYzEiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vc3JjL1RlbXBsYXRlUmVuZGVyZXIvVGVtcGxhdGVSZW5kZXJlci5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL3RlbXBsYXRlLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvYXNzaWduSW5XaXRoLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2NvcHlPYmplY3QuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXNzaWduVmFsdWUuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0TmF0aXZlLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VJc05hdGl2ZS5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19nZXRSYXdUYWcuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fb2JqZWN0VG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNNYXNrZWQuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY29yZUpzRGF0YS5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL190b1NvdXJjZS5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19nZXRWYWx1ZS5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19jcmVhdGVBc3NpZ25lci5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19vdmVyUmVzdC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19zZXRUb1N0cmluZy5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlU2V0VG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9jb25zdGFudC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19zaG9ydE91dC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2tleXNJbi5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlVGltZXMuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0FyZ3VtZW50cy5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlSXNBcmd1bWVudHMuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0J1ZmZlci5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL3N0dWJGYWxzZS5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzVHlwZWRBcnJheS5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlSXNUeXBlZEFycmF5LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VVbmFyeS5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19ub2RlVXRpbC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlS2V5c0luLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX25hdGl2ZUtleXNJbi5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2F0dGVtcHQuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc1BsYWluT2JqZWN0LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2dldFByb3RvdHlwZS5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlVmFsdWVzLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2N1c3RvbURlZmF1bHRzQXNzaWduSW4uanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZXNjYXBlU3RyaW5nQ2hhci5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2tleXMuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUtleXMuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbmF0aXZlS2V5cy5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL3RlbXBsYXRlU2V0dGluZ3MuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9lc2NhcGUuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZXNjYXBlSHRtbENoYXIuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVByb3BlcnR5T2YuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVRvU3RyaW5nLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNTeW1ib2wuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fcmVFc2NhcGUuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fcmVFdmFsdWF0ZS5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvSW1hZ2VSZW5kZXJlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvSW1hZ2VSZW5kZXJlci9JbWFnZVJlbmRlcmVyLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9EYXRlVGltZUZpbHRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvRGF0ZVRpbWVGaWx0ZXIvRGF0ZVRpbWVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2RhdGUtZm5zLXR6L2VzbS9fbGliL3R6VG9rZW5pemVEYXRlL2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3ViTWlsbGlzZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkTWlsbGlzZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vdG9EYXRlL2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9kYXRlLWZucy10ei9lc20vdG9EYXRlL2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9FdmVudHNNaXhpbi9FdmVudHNNaXhpbi5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvRGF0ZVRpbWVJbnB1dC9EYXRlVGltZUlucHV0LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9EYXRlVGltZUlucHV0L3N0eWxlLnNjc3MiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vc3JjL0RhdGVUaW1lSW5wdXQvc3R5bGUuc2Nzcz9jNzMyIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9EYXRlVGltZUVkaXRvci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvRGF0ZVRpbWVFZGl0b3IvRGF0ZVRpbWVFZGl0b3IuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6L3dlYnBhY2svYm9vdHN0cmFwIDBlNDFkYTFlODgzMDAzZmI4ZjI5Iiwid2VicGFjazovLy93ZWJwYWNrOi9leHRlcm5hbCB7XCJjb21tb25qc1wiOlwiYmJqLW1hc2tzL3NyYy9TdHJpbmdNYXNrXCIsXCJjb21tb25qczJcIjpcImJiai1tYXNrcy9zcmMvU3RyaW5nTWFza1wiLFwiYW1kXCI6XCJiYmotbWFza3Mvc3JjL1N0cmluZ01hc2tcIixcInJvb3RcIjpbXCJCQmpcIixcIk1hc2tzXCIsXCJTdHJpbmdNYXNrXCJdfSIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvVGV4dElucHV0L2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9UZXh0SW5wdXQvVGV4dElucHV0LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9UZXh0SW5wdXQvdG9vbHMuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vc3JjL051bWJlcklucHV0L2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9OdW1iZXJJbnB1dC9OdW1iZXJJbnB1dC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovZXh0ZXJuYWwge1wiY29tbW9uanNcIjpcImJiai1tYXNrcy9zcmMvTnVtYmVyTWFza1wiLFwiY29tbW9uanMyXCI6XCJiYmotbWFza3Mvc3JjL051bWJlck1hc2tcIixcImFtZFwiOlwiYmJqLW1hc2tzL3NyYy9OdW1iZXJNYXNrXCIsXCJyb290XCI6W1wiQkJqXCIsXCJNYXNrc1wiLFwiTnVtYmVyTWFza1wiXX0iLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6L3dlYnBhY2svYm9vdHN0cmFwIGVmZWY4N2EwMWMzZWQyMmNhMzU4Iiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9OdW1iZXJNYXNrL2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9EYXRlTWFzay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvU3RyaW5nTWFzay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvTnVtYmVyTWFzay9OdW1iZXJNYXNrLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9EYXRlTWFzay9EYXRlTWFzay5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvd2Vla3N0YXJ0L2Rpc3QvZXMtbW9kdWxlL21haW4uanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL3dlZWtzdGFydC9kaXN0L2VzLW1vZHVsZS9hcGkuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL3dlZWtzdGFydC9kaXN0L2VzLW1vZHVsZS9sYW5nUmVnaW9uTWFwLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy93ZWVrc3RhcnQvZGlzdC9lcy1tb2R1bGUvcmVnaW9uRGF5TWFwLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9TdHJpbmdNYXNrL1N0cmluZ01hc2suanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vc3JjL1R5cGVzL2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9UeXBlcy9UeXBlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZmxhdHBpY2tyL2Rpc3QvZmxhdHBpY2tyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9qc3MvanNzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ZuL2FycmF5L2Zvci1lYWNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ZuL2FycmF5L2luY2x1ZGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ZuL251bWJlci9pcy1pbnRlZ2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ZuL3N0cmluZy9zdGFydHMtd2l0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hLWZ1bmN0aW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hbi1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktbWV0aG9kcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LXNwZWNpZXMtY3JlYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jb3JlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2N0eC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19kZWZpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2Rlc2NyaXB0b3JzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2RvbS1jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZXhwb3J0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2ZhaWxzLWlzLXJlZ2V4cC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mYWlscy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mdW5jdGlvbi10by1zdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZ2xvYmFsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2hhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19oaWRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2lvYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtYXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtaW50ZWdlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pcy1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtcmVnZXhwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2xpYnJhcnkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWRwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcmVkZWZpbmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2hhcmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmljdC1tZXRob2QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLWNvbnRleHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8tYWJzb2x1dGUtaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8taW50ZWdlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1pb2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWxlbmd0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8tcHJpbWl0aXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3VpZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL193a3MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZm9yLWVhY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmlzLWludGVnZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN0YXJ0cy13aXRoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LmFycmF5LmluY2x1ZGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kZWVwLXBhcnNlLWpzb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vL0Q6L0dpdGh1Yi9iYmotbWFza3MvZGlzdC9iYmotbWFza3MuanMtZXhwb3NlZCIsIndlYnBhY2s6Ly8vRDovR2l0aHViL2Jhc2lzLWFnZ3JpZC1jb21wb25lbnRzL2Rpc3QvYmFzaXMtYWdncmlkLWNvbXBvbmVudHMuanMtZXhwb3NlZCIsIndlYnBhY2s6Ly8vRDovR2l0aHViL2Jhc2lzLWlucHV0LW1hc2tpbmcvZGlzdC9iYXNpcy1pbnB1dC1tYXNraW5nLmpzLWV4cG9zZWQiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2ZsYXRwaWNrci9kaXN0L2ZsYXRwaWNrci5qcy1leHBvc2VkIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9qc3MvanNzLmpzLWV4cG9zZWQiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2ZsYXRwaWNrci9kaXN0L2ZsYXRwaWNrci5jc3M/N2I2OCIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19TeW1ib2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXBwbHkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXJyYXlMaWtlS2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19hcnJheU1hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19hc3NpZ25WYWx1ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlQXNzaWduVmFsdWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUdldFRhZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlSXNBcmd1bWVudHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUlzTmF0aXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VJc1R5cGVkQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUtleXNJbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlUHJvcGVydHlPZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlUmVzdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlU2V0VG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVRpbWVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VUb1N0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlVW5hcnkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVZhbHVlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19jb3B5T2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2NvcmVKc0RhdGEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY3JlYXRlQXNzaWduZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY3VzdG9tRGVmYXVsdHNBc3NpZ25Jbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19lc2NhcGVIdG1sQ2hhci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19lc2NhcGVTdHJpbmdDaGFyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2ZyZWVHbG9iYWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0TmF0aXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2dldFByb3RvdHlwZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19nZXRSYXdUYWcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0VmFsdWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNJbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19pc0l0ZXJhdGVlQ2FsbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19pc01hc2tlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19pc1Byb3RvdHlwZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19uYXRpdmVLZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX25hdGl2ZUtleXNJbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19ub2RlVXRpbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19vYmplY3RUb1N0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19vdmVyQXJnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX292ZXJSZXN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3JlRXNjYXBlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3JlRXZhbHVhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fcmVJbnRlcnBvbGF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19yb290LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3NldFRvU3RyaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3Nob3J0T3V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3RvU291cmNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvYXNzaWduSW5XaXRoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvYXR0ZW1wdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2NvbnN0YW50LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvZXEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9lc2NhcGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pZGVudGl0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzQXJndW1lbnRzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzQXJyYXlMaWtlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNCdWZmZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0Vycm9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNGdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzTGVuZ3RoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNPYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc09iamVjdExpa2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc1BsYWluT2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNTeW1ib2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc1R5cGVkQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9rZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMva2V5c0luLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvc3R1YkZhbHNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvdGVtcGxhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy90ZW1wbGF0ZVNldHRpbmdzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvdG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FnLWdyaWQtY29tbXVuaXR5L2Rpc3Qvc3R5bGVzL2FnLWdyaWQuY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hZy1ncmlkLWNvbW11bml0eS9kaXN0L3N0eWxlcy9hZy10aGVtZS1iYWxoYW0tZGFyay5jc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FnLWdyaWQtY29tbXVuaXR5L2Rpc3Qvc3R5bGVzL2FnLXRoZW1lLWJhbGhhbS5jc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FnLWdyaWQtY29tbXVuaXR5L2Rpc3Qvc3R5bGVzL2FnLXRoZW1lLW1hdGVyaWFsLmNzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZmxhdHBpY2tyL2Rpc3QvZmxhdHBpY2tyLmNzcyIsIndlYnBhY2s6Ly8vLi9zcmMvc3R5bGUvY2xhc3Nlcy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvbGliL3VybHMuanMiLCJ3ZWJwYWNrOi8vLyh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vbW9kdWxlLmpzIiwid2VicGFjazovLy8uL3NyYy9hcGkvY2VsbHMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2FwaS9jaGFydHMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2FwaS9jb2x1bW5zLmpzIiwid2VicGFjazovLy8uL3NyYy9hcGkvY29udGV4dC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYXBpL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9hcGkvaW5pdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYXBpL2pzcy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYXBpL21lbnVzLmpzIiwid2VicGFjazovLy8uL3NyYy9hcGkvb3ZlcmxheXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2FwaS9yb3dzLmpzIiwid2VicGFjazovLy8uL3NyYy9hcGkvc3RhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2FwaS9zdGF0dXNiYXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2FwaS90b29scGFuZWwuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2FwaS91dGlsaXRpZXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2V2ZW50cy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2V2ZW50cy9lZGl0aW5nLmpzIiwid2VicGFjazovLy8uL3NyYy9ldmVudHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2V2ZW50cy9rZXlib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvZXZlbnRzL3JlYWR5LmpzIiwid2VicGFjazovLy8uL3NyYy9ldmVudHMvc2VsZWN0aW9ucy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvZXZlbnRzL3N0YXRlLmpzIiwid2VicGFjazovLy8uL3NyYy9ldmVudHMvdXRpbGl0aWVzLmpzIiwid2VicGFjazovLy8uL3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvcG9seWZpbGxzLmpzIiwid2VicGFjazovLy8uL3NyYy9zdHlsZS9jbGFzc2VzLmNzcz9iNzM4Il0sIm5hbWVzIjpbIk51bWJlck1hc2siLCJudW1iZXIiLCJtYXNrIiwiZ3JvdXBpbmdTZXBhcmF0b3IiLCJkZWNpbWFsU2VwYXJhdG9yIiwiZm9yY2VUcmFpbGluZ1plcm9zIiwibG9vc2UiLCJtYXNrTGVuIiwibGVuZ3RoIiwic3RyIiwibmFtZSIsIm1lc3NhZ2UiLCJtYXNrQmVmb3JlRGVjaW1hbCIsIm1hc2tBZnRlckRlY2ltYWwiLCJmb3VuZERlY2ltYWwiLCJpIiwibSIsImNoYXJBdCIsIm51bSIsIl9yb3VuZCIsImJ5dGVzIiwiX3RvQ2hhckFycmF5IiwiaW5MZW4iLCJudW1CZWZvcmVEZWNpbWFsIiwibnVtQWZ0ZXJEZWNpbWFsIiwidG9TdHJpbmciLCJmaWxsQnl0ZSIsImZsb2F0Qnl0ZSIsImluUG9zIiwib3V0UG9zIiwiZmxvYXRQb3MiLCJmaWxsSW5pdCIsImlzTmVnYXRpdmUiLCJfZ2V0U2lnbiIsImVtaXREZWNpbWFsIiwiaW5kZXhPZiIsImZvdW5kWmVybyIsImZvdW5kRGlnaXQiLCJjdXJyZW5jeSIsInJldCIsIkFycmF5IiwibWFza1BvcyIsImpvaW4iLCJwcmVjaXNpb24iLCJyZXZlcnNlU2hpZnQiLCJudW1BcnJheSIsInNwbGl0IiwiX3NoaWZ0IiwiTWF0aCIsInJvdW5kIiwic2lnbnVtIiwiY2hhcnMiLCJzdHJpbmciLCJzdWJzdHJpbmciLCJ4IiwiaXNOdW1iZXJSZWdleCIsImlzV2hpdGVzcGFjZVJlZ2V4IiwicHVuY3R1YXRpb25MaXN0IiwiaXNMb3dlckNhc2UiLCJ0b0xvd2VyQ2FzZSIsInRvVXBwZXJDYXNlIiwiaXNVcHBlckNhc2UiLCJwYXNzT3JUaHJvd0Vycm9yIiwiY2hhciIsInBvcyIsIlN0cmluZ01hc2siLCJTdHJpbmciLCJzdHJMZW4iLCJtYXNrQnl0ZSIsImJ5dGUiLCJ0ZXN0IiwiQ29tcG9uZW50IiwiZGVmaW5lUHJvcGVydHkiLCJPYmplY3QiLCJnZXRQcm90b3R5cGVPZiIsImZuIiwibWFwU3RvcmUiLCJzdXBlclN0b3JlIiwiYmluZCIsImRlc2NzIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImtsYXNzIiwia2V5cyIsImdldE93bktleXMiLCJsIiwia2V5IiwiZGVzYyIsImF1dG9iaW5kTWV0aG9kIiwidmFsdWUiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwiY29uc3RydWN0b3IiLCJ0YXJnZXQiLCJnZXQiLCJnZXRCb3VuZFN1cGVyIiwiYm91bmRGbiIsIndyaXRhYmxlIiwic2V0IiwiY3JlYXRlRGVmYXVsdFNldHRlciIsImFyZ3MiLCJhdXRvYmluZENsYXNzIiwiaGFuZGxlIiwiR0VORVJJQ19GVU5DVElPTl9FUlJPUiIsIkZVTkNUSU9OX1JFR0VYUCIsIlN5bnRheEVycm9yUmVwb3J0ZXIiLCJkZXNjcmlwdG9yIiwidG9waWMiLCJwYXJhbXMiLCJwYXJlbnRLbGFzcyIsImNoaWxkS2xhc3MiLCJwYXJlbnREZXNjcmlwdG9yIiwiY2hpbGREZXNjcmlwdG9yIiwiY29uZGl0aW9uIiwibXNnIiwicmVwb3J0ZXIiLCJwYXJlbnQiLCJjaGlsZCIsInBhcmVudFZhbHVlVHlwZSIsImNoaWxkVmFsdWVUeXBlIiwiaXNGdW5jdGlvbk92ZXJVbmRlZmluZWQiLCJjaGVja0Z1bmN0aW9uU2lnbmF0dXJlcyIsInBhcmVudEhhc0dldHRlciIsImNoaWxkSGFzR2V0dGVyIiwicGFyZW50SGFzU2V0dGVyIiwiY2hpbGRIYXNTZXR0ZXIiLCJwYXJlbnRUeXBlIiwiZ2V0RGVzY3JpcHRvclR5cGUiLCJjaGlsZFR5cGUiLCJjaGVja0RhdGFEZXNjcmlwdG9ycyIsImNoZWNrQWNjZXNzb3JEZXNjcmlwdG9ycyIsInN1Z2dlc3Rpb25UcmFuc2Zvcm1zIiwic3VnZ2VzdGlvbiIsInN1cGVyS2xhc3MiLCJzdXBlckRlc2NyaXB0b3IiLCJzdWdnZXN0ZWRLZXkiLCJmaW5kUG9zc2libGVBbHRlcm5hdGl2ZXMiLCJjaGVja0Rlc2NyaXB0b3JzIiwiZGVjb3JhdGUiLCJudWxsVGFnIiwidW5kZWZpbmVkVGFnIiwic3ltVG9TdHJpbmdUYWciLCJTeW1ib2wiLCJnZXRSYXdUYWciLCJvYmplY3RUb1N0cmluZyIsImJhc2VHZXRUYWciLCJpc09iamVjdExpa2UiLCJtb2R1bGUiLCJsaXN0IiwiY29udGVudCIsImNzc1dpdGhNYXBwaW5nVG9TdHJpbmciLCJpdGVtIiwibW9kdWxlcyIsImFscmVhZHlJbXBvcnRlZE1vZHVsZXMiLCJpZCIsIm1lZGlhUXVlcnkiLCJjc3NNYXBwaW5nIiwidXNlU291cmNlTWFwIiwic291cmNlTWFwcGluZyIsInRvQ29tbWVudCIsInNvdXJjZVVSTHMiLCJiYXNlNjQiLCJidG9hIiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJKU09OIiwiZGF0YSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldE93blByb3BlcnR5TmFtZXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpc0Rlc2NyaXB0b3IiLCJlbnRyeUFyZ3MiLCJoYW5kbGVEZXNjcmlwdG9yIiwiTWV0YSIsImxhenlJbml0aWFsaXplIiwiTUVUQV9LRVkiLCJvYmoiLCJuZXdWYWx1ZSIsIndhcm4iLCJjb25zb2xlIiwic2VlbkRlcHJlY2F0aW9ucyIsInR5cGUiLCJpc09iamVjdCIsInJvb3QiLCJmcmVlU2VsZiIsInNlbGYiLCJmcmVlR2xvYmFsIiwiRnVuY3Rpb24iLCJvdGhlciIsImVxIiwiaXNMZW5ndGgiLCJpc0Z1bmN0aW9uIiwiaXNBcnJheUxpa2UiLCJkaXJ0eU51bWJlciIsIk51bWJlciIsImlzTmFOIiwicmVxdWlyZWQiLCJCb29sZWFuU3dpdGNoIiwiVGVtcGxhdGVSZW5kZXJlciIsIm9iamVjdCIsImJhc2VBc3NpZ25WYWx1ZSIsImZ1bmMiLCJnZXROYXRpdmUiLCJhc3luY1RhZyIsImZ1bmNUYWciLCJnZW5UYWciLCJwcm94eVRhZyIsInRhZyIsImdsb2JhbCIsImciLCJzZXRUb1N0cmluZyIsIm92ZXJSZXN0IiwiaWRlbnRpdHkiLCJiYXNlUmVzdCIsImFwcGx5IiwiaXNJbmRleCIsImluZGV4IiwiaXNJdGVyYXRlZUNhbGwiLCJNQVhfU0FGRV9JTlRFR0VSIiwicmVJc1VpbnQiLCJvYmplY3RQcm90byIsImhhc093blByb3BlcnR5IiwiaXNBcnIiLCJpc0FycmF5IiwiaXNBcmciLCJpc0FyZ3VtZW50cyIsImlzQnVmZiIsImlzQnVmZmVyIiwiaXNUeXBlIiwiaXNUeXBlZEFycmF5Iiwic2tpcEluZGV4ZXMiLCJyZXN1bHQiLCJiYXNlVGltZXMiLCJpbmhlcml0ZWQiLCJhcnJheUxpa2VLZXlzIiwib3JpZ2luYWxNb2R1bGUiLCJDdG9yIiwicHJvdG8iLCJpc1Byb3RvdHlwZSIsImRvbUV4Y1RhZyIsImVycm9yVGFnIiwiaXNQbGFpbk9iamVjdCIsImlzRXJyb3IiLCJ0cmFuc2Zvcm0iLCJvdmVyQXJnIiwiYXJyYXkiLCJpdGVyYXRlZSIsImFycmF5TWFwIiwicmVJbnRlcnBvbGF0ZSIsImJhc2VUb1N0cmluZyIsImRhdGUiLCJ0b0RhdGUiLCJ1dGNEYXRlIiwib2Zmc2V0TWlsbGlzZWNvbmRzIiwidHpQYXJzZVRpbWV6b25lIiwic3ViTWlsbGlzZWNvbmRzIiwiTUlMTElTRUNPTkRTX0lOX0hPVVIiLCJNSUxMSVNFQ09ORFNfSU5fTUlOVVRFIiwicGF0dGVybnMiLCJ0aW1lem9uZSIsInRpbWV6b25lWiIsInRpbWV6b25lSEgiLCJ0aW1lem9uZUhITU0iLCJ0aW1lem9uZUlBTkEiLCJ0b2tlbiIsImhvdXJzIiwicGFyc2VJbnQiLCJ2YWxpZGF0ZVRpbWV6b25lIiwiYWJzb2x1dGVPZmZzZXQiLCJtaW51dGVzIiwidG9rZW5zIiwidHpUb2tlbml6ZURhdGUiLCJhc1VUQyIsIkRhdGUiLCJ0aW1lc3RhbXBXaXRoTXNaZXJvZWQiLCJFdmVudHNNaXhpbiIsIkRhdGVUaW1lSW5wdXQiLCJCb29sZWFuRWRpdG9yIiwiQm9vbGVhbiIsImtleVByZXNzQmFja3NwYWNlT3JEZWxldGUiLCJzd2l0Y2hlciIsInRydWVWYWx1ZSIsImZhbHNlVmFsdWUiLCJ2YWx1ZUFzU3RyaW5nIiwiX2d1aSIsImZhbGxiYWNrIiwib3B0aW9uIiwiQUdyaWRDb21wb25lbnRzTWV0YUNvbmZpZyIsImNvbnRleHQiLCJ3aW4iLCJkb2MiLCJpbml0aWFsVmFsdWUiLCJsaXN0ZW5lciIsImJvb2xTd2l0Y2giLCJkb2N1bWVudCIsImxhYmVsIiwiZSIsIm92ZXJyaWRlIiwiYXV0b2JpbmQiLCJpbml0aWFsaXplciIsInJlcXVpcmUiLCJvcHRpb25zIiwid2luZG93IiwidXBkYXRlIiwibG9jYXRpb24iLCJiYXNlVXJsIiwiY3VycmVudERpciIsImZpeGVkQ3NzIiwidW5xdW90ZWRPcmlnVXJsIiwibmV3VXJsIiwiQm9vbGVhblJlbmRlcmVyIiwiaXNJbml0IiwiYm9vbGVhblRydWVSZW5kZXJWYWx1ZSIsImJvb2xlYW5GYWxzZVJlbmRlclZhbHVlIiwiYm9vbGVhblRydWVWYWx1ZSIsImJvb2xlYW5GYWxzZVZhbHVlIiwiQm9vbGVhbkZpbHRlciIsInRvVGl0bGVDYXNlIiwid29yZCIsInN0cmlwSFRNTCIsInRtcCIsIl9ib29sZWFuRmlsdGVyVHJhbnNsYXRpb24iLCJ0cmFuc2xhdGUiLCJpc0NsZWFyRmlsdGVyIiwiaXNSZXNldEJ1dHRvbiIsImlzQXBwbHlCdXR0b24iLCJyZXNldCIsImJvZHkiLCJhcHBseUZpbHRlclBhbmVsIiwibW9kZWwiLCJfZmlsdGVyVGV4dCIsImZpbHRlclRleHRBc1N0cmluZyIsIk51bWJlckVkaXRvciIsIm1pbiIsIm1heCIsInN0ZXAiLCJzdGFydFZhbHVlIiwiQmFzaXMiLCJlbGVtZW50cyIsIm9uVXBkYXRlIiwib25JbnZhbGlkIiwiaW5wdXQiLCJjYXN0ZWQiLCJldmVudCIsImlzVmFsaWQiLCJUZXh0RWRpdG9yIiwicGF0dGVybiIsInRpdGxlIiwidGVtcGxhdGUiLCJyZUVtcHR5U3RyaW5nTGVhZGluZyIsInJlRW1wdHlTdHJpbmdNaWRkbGUiLCJyZUVtcHR5U3RyaW5nVHJhaWxpbmciLCJyZUVzVGVtcGxhdGUiLCJyZU5vTWF0Y2giLCJyZVVuZXNjYXBlZFN0cmluZyIsInNldHRpbmdzIiwidGVtcGxhdGVTZXR0aW5ncyIsImd1YXJkIiwiYXNzaWduSW5XaXRoIiwiY3VzdG9tRGVmYXVsdHNBc3NpZ25JbiIsImltcG9ydHMiLCJpbXBvcnRzS2V5cyIsImltcG9ydHNWYWx1ZXMiLCJiYXNlVmFsdWVzIiwiaW50ZXJwb2xhdGUiLCJzb3VyY2UiLCJyZURlbGltaXRlcnMiLCJSZWdFeHAiLCJzb3VyY2VVUkwiLCJpbnRlcnBvbGF0ZVZhbHVlIiwiZXNjYXBlU3RyaW5nQ2hhciIsImlzRXNjYXBpbmciLCJpc0V2YWx1YXRpbmciLCJvZmZzZXQiLCJtYXRjaCIsInZhcmlhYmxlIiwiYXR0ZW1wdCIsImNyZWF0ZUFzc2lnbmVyIiwiY29weU9iamVjdCIsImtleXNJbiIsImlzTmV3IiwicHJvcHMiLCJjdXN0b21pemVyIiwiYXNzaWduVmFsdWUiLCJvYmpWYWx1ZSIsImdldFZhbHVlIiwiYmFzZUlzTmF0aXZlIiwicmVSZWdFeHBDaGFyIiwicmVJc0hvc3RDdG9yIiwiZnVuY1Byb3RvIiwiZnVuY1RvU3RyaW5nIiwicmVJc05hdGl2ZSIsImlzTWFza2VkIiwidG9Tb3VyY2UiLCJuYXRpdmVPYmplY3RUb1N0cmluZyIsImlzT3duIiwidW5tYXNrZWQiLCJtYXNrU3JjS2V5IiwidWlkIiwiY29yZUpzRGF0YSIsInNvdXJjZXMiLCJhc3NpZ25lciIsIm5hdGl2ZU1heCIsInN0YXJ0Iiwib3RoZXJBcmdzIiwic2hvcnRPdXQiLCJiYXNlU2V0VG9TdHJpbmciLCJjb25zdGFudCIsIkhPVF9DT1VOVCIsIkhPVF9TUEFOIiwibmF0aXZlTm93IiwiY291bnQiLCJsYXN0Q2FsbGVkIiwic3RhbXAiLCJyZW1haW5pbmciLCJhcmd1bWVudHMiLCJiYXNlS2V5c0luIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJiYXNlSXNBcmd1bWVudHMiLCJhcmdzVGFnIiwiZnJlZUV4cG9ydHMiLCJleHBvcnRzIiwiZnJlZU1vZHVsZSIsIm1vZHVsZUV4cG9ydHMiLCJCdWZmZXIiLCJuYXRpdmVJc0J1ZmZlciIsInN0dWJGYWxzZSIsIm5vZGVJc1R5cGVkQXJyYXkiLCJub2RlVXRpbCIsImJhc2VVbmFyeSIsImJhc2VJc1R5cGVkQXJyYXkiLCJhcnJheVRhZyIsImJvb2xUYWciLCJkYXRlVGFnIiwibWFwVGFnIiwibnVtYmVyVGFnIiwib2JqZWN0VGFnIiwicmVnZXhwVGFnIiwic2V0VGFnIiwic3RyaW5nVGFnIiwid2Vha01hcFRhZyIsImFycmF5QnVmZmVyVGFnIiwiZGF0YVZpZXdUYWciLCJmbG9hdDMyVGFnIiwiZmxvYXQ2NFRhZyIsImludDhUYWciLCJpbnQxNlRhZyIsImludDMyVGFnIiwidWludDhUYWciLCJ1aW50OENsYW1wZWRUYWciLCJ1aW50MTZUYWciLCJ1aW50MzJUYWciLCJ0eXBlZEFycmF5VGFncyIsImZyZWVQcm9jZXNzIiwidHlwZXMiLCJuYXRpdmVLZXlzSW4iLCJpc1Byb3RvIiwib2JqZWN0Q3RvclN0cmluZyIsImdldFByb3RvdHlwZSIsInN0cmluZ0VzY2FwZXMiLCJiYXNlS2V5cyIsIm5hdGl2ZUtleXMiLCJyZUVzY2FwZSIsInJlRXZhbHVhdGUiLCJlc2NhcGUiLCJyZVVuZXNjYXBlZEh0bWwiLCJyZUhhc1VuZXNjYXBlZEh0bWwiLCJlc2NhcGVIdG1sQ2hhciIsImh0bWxFc2NhcGVzIiwiYmFzZVByb3BlcnR5T2YiLCJJTkZJTklUWSIsInN5bWJvbFByb3RvIiwic3ltYm9sVG9TdHJpbmciLCJpc1N5bWJvbCIsInN5bWJvbFRhZyIsIkltYWdlUmVuZGVyZXIiLCJpbWFnZVdpZHRoIiwiaW1hZ2VIZWlnaHQiLCJpbWFnZUxpc3QiLCJEYXRlVGltZUZpbHRlciIsIlRPS0VOUyIsIlRPS0VOX0VRVUFMIiwiVE9LRU5fTk9UX0VRVUFMIiwiVE9LRU5fTEVTUyIsIlRPS0VOX0dSRUFURVIiLCJUT0tFTl9SQU5HRSIsIlRPS0VOX0FORCIsIlRPS0VOX09SIiwiQ29uZGl0aW9uUGFuZWwiLCJ3aXRoRXZlbnRzTWl4aW4iLCJfZmlsdGVyVGltZUlucHV0IiwiX2ZpbHRlclRvRGF0ZVRpbWVJbnB1dCIsIl9maWx0ZXJPcHRpb25zIiwiX2RlZmF1bHRPcHRpb24iLCJvcHRpb25zVHJhbnNsYXRpb25zIiwic2VsZWN0Iiwic3RhdGUiLCJndWkiLCJmaWx0ZXJPcHRpb25zIiwic2VsZWN0RWwiLCJmaWx0ZXJJbnB1dCIsImZpbHRlclRvSW5wdXQiLCJldnQiLCJlbCIsImZpbHRlckRhdGVUbyIsIk9OX0NPTkRJVElPTl9DSEFOR0VEIiwicmVhZG9ubHkiLCJmaWx0ZXIiLCJmaWx0ZXJUbyIsIkpvaW5Db25kaXRpb25QYW5lbCIsIl9maXJzdENvbmRpdGlvblBhbmVsIiwiX3NlY29uZENvbmRpdGlvblBhbmVsIiwiX29wZXJhdG9yUGFuZWwiLCJfcGFyYW1zIiwic3VwcHJlc3NBbmRPckNvbmRpdGlvbiIsInNlY29uZENvbmRpdGlvbkd1aSIsIm9wZXJhdG9yUGFuZWxHdWkiLCJPTl9KT0lOX0NPTkRJVElPTl9DSEFOR0VEIiwiY29uZGl0aW9uMSIsImNvbmRpdGlvbjIiLCJvcGVyYXRvciIsIl9Kb2luQ29uZGl0aW9uUGFuZWwiLCJfc3RhdGUiLCJfZG9lc0ZpbHRlclBhc3NPcHRpb25zIiwiZW5hYmxlVGltZSIsImluUmFuZ2VJbmNsdXNpdmUiLCJ2YWx1ZUdldHRlciIsImRvZXNQYXNzRmlyc3RDb25kaXRpb24iLCJkb2VzUGFzc1NlY29uZENvbmRpdGlvbiIsImNsb25lIiwiZGF0ZVRpbWVNYXNrIiwibG9jYWxlIiwiSW50bCIsIkJCaiIsImZpcnN0Q29uZGl0aW9uQXNTdHJpbmciLCJzZWNvbmRDb25kaXRpb25Bc1N0cmluZyIsIm9wZXJhdG9yQXNTdHJpbmciLCJwYXNzZWQiLCJ1dGNUb1pvbmVkVGltZSIsImlzQXBwbHlCdXR0b25BY3RpdmUiLCJkdGYiLCJnZXREYXRlVGltZUZvcm1hdCIsInBhcnRzT2Zmc2V0IiwiaGFja3lPZmZzZXQiLCJ0eXBlVG9Qb3MiLCJ5ZWFyIiwibW9udGgiLCJkYXkiLCJob3VyIiwibWludXRlIiwic2Vjb25kIiwiZm9ybWF0dGVkIiwiZmlsbGVkIiwicGFyc2VkIiwiZHRmQ2FjaGUiLCJ0ZXN0RGF0ZUZvcm1hdHRlZCIsImhvdXIxMiIsInRpbWVab25lIiwiaG91ckN5Y2xlU3VwcG9ydGVkIiwiaG91ckN5Y2xlIiwicmVxdWlyZWRBcmdzIiwiYW1vdW50IiwidG9JbnRlZ2VyIiwiYWRkTWlsbGlzZWNvbmRzIiwidGltZXN0YW1wIiwiYXJnU3RyIiwiYXJndW1lbnQiLCJERUZBVUxUX0FERElUSU9OQUxfRElHSVRTIiwiZGF0ZVRpbWVEZWxpbWV0ZXIiLCJwbGFpblRpbWUiLCJ0aW1lWm9uZURlbGltZXRlciIsIllZIiwiWVlZIiwiWVlZWSIsIllZWVlZIiwiTU0iLCJEREQiLCJNTUREIiwiV3d3IiwiV3d3RCIsIkhIIiwiSEhNTSIsIkhITU1TUyIsImRpcnR5T3B0aW9ucyIsImFkZGl0aW9uYWxEaWdpdHMiLCJkYXRlU3RyaW5ncyIsInNwbGl0RGF0ZVN0cmluZyIsInBhcnNlWWVhclJlc3VsdCIsInBhcnNlWWVhciIsInJlc3REYXRlU3RyaW5nIiwicGFyc2VEYXRlIiwidGltZSIsInBhcnNlVGltZSIsImdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMiLCJkYXRlU3RyaW5nIiwidGltZVN0cmluZyIsInBhdHRlcm5ZWVkiLCJwYXR0ZXJuWVlZWVkiLCJ5ZWFyU3RyaW5nIiwiY2VudHVyeVN0cmluZyIsInZhbGlkYXRlRGF0ZSIsImRheU9mWWVhciIsInZhbGlkYXRlRGF5T2ZZZWFyRGF0ZSIsIndlZWsiLCJ2YWxpZGF0ZVdlZWtEYXRlIiwiZGF5T2ZJU09XZWVrWWVhciIsImRheU9mV2VlayIsInBhcnNlRmxvYXQiLCJ2YWxpZGF0ZVRpbWUiLCJzZWNvbmRzIiwiZm91cnRoT2ZKYW51YXJ5RGF5IiwiZGlmZiIsIkRBWVNfSU5fTU9OVEgiLCJEQVlTX0lOX01PTlRIX0xFQVBfWUVBUiIsImlzTGVhcFllYXIiLCJpc0xlYXBZZWFySW5kZXgiLCJkaXJ0eURhdGUiLCJiYXNlVGltZXpvbmVPZmZzZXQiLCJtaWxsaXNlY29uZHNQYXJ0T2ZUaW1lem9uZU9mZnNldCIsImhhbmRsZXJzIiwiaGFuZGxlciIsInBpY2tlciIsInNlbGVjdGVkRGF0ZSIsInRpbWVfMjRociIsImVuYWJsZVNlY29uZHMiLCJub0NhbGVuZGFyIiwiZGF0ZUZvcm1hdCIsImZsYXRwaWNrciIsIndyYXAiLCJhbGxvd0lucHV0Iiwib25DaGFuZ2UiLCJmb3JtYXREYXRlIiwibWF4RGF0ZSIsIm1pbkRhdGUiLCJkZWZhdWx0SG91ciIsImRlZmF1bHRNaW51dGUiLCJkaXNhYmxlTW9iaWxlIiwid2Vla051bWJlcnMiLCJmb3JtYXQiLCJkYXRlVGltZUZvcm1hdHRlciIsImV4cHJlc3Npb24iLCJzZWxlY3RlZERhdGVzIiwid2Vla0RheXNTaG9ydCIsIndlZWtEYXlzTG9uZyIsIndlZWtkYXkiLCJtb250aHNTaG9ydCIsIm1vbnRoc0xvbmciLCJ3ZWVrZGF5cyIsInNob3J0aGFuZCIsImxvbmdoYW5kIiwibW9udGhzIiwiZGF5c0luTW9udGgiLCJmaXJzdERheU9mV2VlayIsIm9yZGluYWwiLCJyYW5nZVNlcGFyYXRvciIsIndlZWtBYmJyZXZpYXRpb24iLCJzY3JvbGxUaXRsZSIsInRvZ2dsZVRpdGxlIiwiYW1QTSIsInllYXJBcmlhTGFiZWwiLCJob3VyQXJpYUxhYmVsIiwibWludXRlQXJpYUxhYmVsIiwiT05fREFURV9DSEFOR0VEIiwiRGF0ZVRpbWVFZGl0b3IiLCJfaW5wdXQiLCJfdmFsdWUiLCJUZXh0SW5wdXQiLCJjc3NDbGFzc0Vycm9yIiwiY3NzQ2xhc3NTdWNjZXNzIiwicGFyZW50Q2xhc3MiLCJpc1dyYXBwZWQiLCJpbnB1dElkIiwiaW5wdXROYW1lIiwib3JpZ2luYWxQYXR0ZXJuIiwiZGVmYXVsdFBhdHRlcm4iLCJnZW5lcmF0ZVBhdHRlcm5Gcm9tTWFzayIsInVubWFza0lucHV0IiwibWFza0lmTm90TWFza2VkIiwidW5tYXNrIiwidGV4dElucHV0IiwiZXZlbnRUeXBlIiwia2V5Q29kZSIsImtleUNvbnRlbnQiLCJpbnNlcnRQb3NpdGlvbiIsImZpbmRDYXJldFBvc2l0aW9uIiwibWFza0Vycm9yIiwic2VsZWN0aW9uU3RhcnQiLCJ1bm1hc2tlZFZhbHVlIiwic2V0VGltZW91dCIsInBvc2l0aW9uIiwidmFsdWVNYXNrZWQiLCJ2YWx1ZVVubWFza2VkIiwiZXJyb3IiLCJTVVBQT1JURURfTUFTS1MiLCJJU19VTklDT0RFX1BST1BFUlRZX1NVUFBPUlRFRCIsImV2YWwiLCJpc01hc2tlZFZhbHVlIiwiY2FjaGVLZXkiLCJtYXNrQXNBcnJ5IiwicmVnZXgiLCJjIiwibWFza0FzQXJyYXkiLCJtYXNrZWRWYWx1ZUFzQXJyYXkiLCJtYXNrZWRWYWx1ZSIsImVsSGFzTWFzayIsIk51bWJlcklucHV0IiwiY291bnREZWNpbWFscyIsImFjdHVhbElucHV0IiwiYWN0dWFsSW5wdXRJZCIsImFjdHVhbElucHV0TmFtZSIsImFjdHVhbElucHV0U3RlcCIsImFjdHVhbElucHV0TWF4IiwiYWN0dWFsSW5wdXRNaW4iLCJhY3R1YWxJbnB1dEdyb3VwaW5nU2VwYXJhdG9yIiwiYWN0dWFsSW5wdXREZWNpbWFsU2VwYXJhdG9yIiwiYWN0dWFsSW5wdXRGb3JjZVRyYWlsaW5nWmVyb3MiLCJhY3R1YWxJbnB1dE1hc2siLCJhY3R1YWxJbnB1dENsYXNzZXMiLCJhY3R1YWxJbnB1dFJlcXVpcmVkIiwidW5tYXNrZWRJbnB1dCIsImRlY2ltYWxzIiwicmVzdG9yZSIsIkRhdGVNYXNrIiwiVXRpbHMiLCJEYXRlcyIsImdldERheU9mWWVhciIsImdldFdlZWtOdW1iZXIiLCJnZXRXZWVrU3RhcnRCeUxvY2FsZSIsIklTX0RBVEVfUkVHRVgiLCJJU19USU1FX1JFR0VYIiwiZml4U2hvcnRJU08iLCJnZXRUaW1lem9uZU9yT2Zmc2V0IiwiVHlwZXMiLCJvcmlnaW5hbEdldFdlZWtTdGFydEJ5TG9jYWxlIiwib25lRGF5IiwicGFkIiwiZCIsImRheU51bSIsIndlZWtTdGFydCIsInllYXJTdGFydCIsImRhdGVPYmplY3QiLCJ0cmFuc2xhdGlvbiIsIm1vbnRoU2hvcnQiLCJtb250aExvbmciLCJkYXlTaG9ydCIsImRheUxvbmciLCJ3ZWVrTnVtYmVyIiwiZGF0ZURldGFpbHMiLCJZeiIsIllzIiwiWWwiLCJZcCIsIllkIiwiWSIsIk16IiwiTXMiLCJNbCIsIk1wIiwiTWQiLCJNIiwiRHoiLCJEcyIsIkRsIiwiRHAiLCJEZCIsIkQiLCJIeiIsIkhzIiwiSGwiLCJIcCIsIkhkIiwiSCIsImh6IiwiaHMiLCJobCIsImhwIiwiaGQiLCJoIiwibXoiLCJtcyIsIm1sIiwibXAiLCJtZCIsInN6Iiwic3MiLCJzbCIsInNwIiwic2QiLCJzIiwiUFAiLCJQIiwicHAiLCJwIiwiSnoiLCJKcyIsIkpsIiwiSmQiLCJKIiwiV3oiLCJXcyIsIldsIiwiV3AiLCJXZCIsIlciLCJ3eiIsIndzIiwid2wiLCJ3cCIsIndkIiwidyIsImZhY3RvcnkiLCJkZWZpbmUiLCJfX2Fzc2lnbiIsImFzc2lnbiIsInQiLCJuIiwicHJvdG90eXBlIiwiY2FsbCIsIkhPT0tTIiwiZGVmYXVsdHMiLCJfZGlzYWJsZSIsIl9lbmFibGUiLCJhbHRGb3JtYXQiLCJhbHRJbnB1dCIsImFsdElucHV0Q2xhc3MiLCJhbmltYXRlIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwiYXJpYURhdGVGb3JtYXQiLCJjbGlja09wZW5zIiwiY2xvc2VPblNlbGVjdCIsImNvbmp1bmN0aW9uIiwiZGVmYXVsdFNlY29uZHMiLCJkaXNhYmxlIiwiZW5hYmxlIiwiZXJyb3JIYW5kbGVyIiwiZXJyIiwiZ2V0V2VlayIsImdpdmVuRGF0ZSIsImdldFRpbWUiLCJzZXRIb3VycyIsInNldERhdGUiLCJnZXREYXRlIiwiZ2V0RGF5Iiwid2VlazEiLCJnZXRGdWxsWWVhciIsImhvdXJJbmNyZW1lbnQiLCJpZ25vcmVkRm9jdXNFbGVtZW50cyIsImlubGluZSIsIm1pbnV0ZUluY3JlbWVudCIsIm1vZGUiLCJtb250aFNlbGVjdG9yVHlwZSIsIm5leHRBcnJvdyIsIm5vdyIsIm9uQ2xvc2UiLCJvbkRheUNyZWF0ZSIsIm9uRGVzdHJveSIsIm9uS2V5RG93biIsIm9uTW9udGhDaGFuZ2UiLCJvbk9wZW4iLCJvblBhcnNlQ29uZmlnIiwib25SZWFkeSIsIm9uVmFsdWVVcGRhdGUiLCJvblllYXJDaGFuZ2UiLCJvblByZUNhbGVuZGFyUG9zaXRpb24iLCJwbHVnaW5zIiwicG9zaXRpb25FbGVtZW50IiwidW5kZWZpbmVkIiwicHJldkFycm93Iiwic2hvcnRoYW5kQ3VycmVudE1vbnRoIiwic2hvd01vbnRocyIsInN0YXRpYyIsImVuZ2xpc2giLCJudGgiLCJzbGljZSIsImludCIsImJvb2wiLCJkZWJvdW5jZSIsIndhaXQiLCJpbW1lZGlhdGUiLCJ0aW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwiYXJyYXlpZnkiLCJ0b2dnbGVDbGFzcyIsImVsZW0iLCJjbGFzc05hbWUiLCJjbGFzc0xpc3QiLCJhZGQiLCJyZW1vdmUiLCJjcmVhdGVFbGVtZW50IiwidGV4dENvbnRlbnQiLCJjbGVhck5vZGUiLCJub2RlIiwiZmlyc3RDaGlsZCIsInJlbW92ZUNoaWxkIiwiZmluZFBhcmVudCIsInBhcmVudE5vZGUiLCJjcmVhdGVOdW1iZXJJbnB1dCIsImlucHV0Q2xhc3NOYW1lIiwib3B0cyIsIndyYXBwZXIiLCJudW1JbnB1dCIsImFycm93VXAiLCJhcnJvd0Rvd24iLCJzZXRBdHRyaWJ1dGUiLCJhcHBlbmRDaGlsZCIsImdldEV2ZW50VGFyZ2V0IiwiY29tcG9zZWRQYXRoIiwicGF0aCIsImRvTm90aGluZyIsIm1vbnRoVG9TdHIiLCJtb250aE51bWJlciIsInJldkZvcm1hdCIsIkYiLCJkYXRlT2JqIiwibW9udGhOYW1lIiwic2V0TW9udGgiLCJHIiwiSyIsImdldEhvdXJzIiwic2hvcnRNb250aCIsIlMiLCJzZXRTZWNvbmRzIiwiVSIsIl8iLCJ1bml4U2Vjb25kcyIsIndlZWtOdW0iLCJzZXRGdWxsWWVhciIsIloiLCJJU09EYXRlIiwic2V0TWludXRlcyIsImoiLCJ1IiwidW5peE1pbGxTZWNvbmRzIiwieSIsInRva2VuUmVnZXgiLCJmb3JtYXRzIiwidG9JU09TdHJpbmciLCJnZXRNb250aCIsImdldFNlY29uZHMiLCJnZXRNaW51dGVzIiwiY3JlYXRlRGF0ZUZvcm1hdHRlciIsIl9hIiwiX2IiLCJjb25maWciLCJfYyIsImwxMG4iLCJmcm10Iiwib3ZlcnJpZGVMb2NhbGUiLCJtYXAiLCJhcnIiLCJjcmVhdGVEYXRlUGFyc2VyIiwiZ2l2ZW5Gb3JtYXQiLCJ0aW1lbGVzcyIsImN1c3RvbUxvY2FsZSIsInBhcnNlZERhdGUiLCJkYXRlT3JpZyIsInRvRml4ZWQiLCJkYXRlc3RyIiwidHJpbSIsIm1hdGNoZWQiLCJvcHMiLCJtYXRjaEluZGV4IiwicmVnZXhTdHIiLCJ0b2tlbl8xIiwiaXNCYWNrU2xhc2giLCJlc2NhcGVkIiwiZXhlYyIsInZhbCIsImZvckVhY2giLCJFcnJvciIsImNvbXBhcmVEYXRlcyIsImRhdGUxIiwiZGF0ZTIiLCJpc0JldHdlZW4iLCJ0cyIsInRzMSIsInRzMiIsImR1cmF0aW9uIiwiREFZIiwiX2kiLCJUeXBlRXJyb3IiLCJfbG9vcF8xIiwiYXJnc18xIiwiREVCT1VOQ0VEX0NIQU5HRV9NUyIsIkZsYXRwaWNrckluc3RhbmNlIiwiZWxlbWVudCIsImluc3RhbmNlQ29uZmlnIiwiZGVmYXVsdENvbmZpZyIsIl9oYW5kbGVycyIsInBsdWdpbkVsZW1lbnRzIiwibG9hZGVkUGx1Z2lucyIsIl9iaW5kIiwiX3NldEhvdXJzRnJvbURhdGUiLCJzZXRIb3Vyc0Zyb21EYXRlIiwiX3Bvc2l0aW9uQ2FsZW5kYXIiLCJwb3NpdGlvbkNhbGVuZGFyIiwiY2hhbmdlTW9udGgiLCJjaGFuZ2VZZWFyIiwiY2xlYXIiLCJjbG9zZSIsIl9jcmVhdGVFbGVtZW50IiwiZGVzdHJveSIsImlzRW5hYmxlZCIsImp1bXBUb0RhdGUiLCJvcGVuIiwicmVkcmF3IiwidG9nZ2xlIiwic2V0dXBIZWxwZXJGdW5jdGlvbnMiLCJ1dGlscyIsImdldERheXNJbk1vbnRoIiwieXIiLCJjdXJyZW50TW9udGgiLCJjdXJyZW50WWVhciIsImluaXQiLCJpc09wZW4iLCJwYXJzZUNvbmZpZyIsInNldHVwTG9jYWxlIiwic2V0dXBJbnB1dHMiLCJzZXR1cERhdGVzIiwiaXNNb2JpbGUiLCJidWlsZCIsImJpbmRFdmVudHMiLCJsYXRlc3RTZWxlY3RlZERhdGVPYmoiLCJ1cGRhdGVWYWx1ZSIsInNldENhbGVuZGFyV2lkdGgiLCJzaG93VGltZUlucHV0IiwiaXNTYWZhcmkiLCJ0cmlnZ2VyRXZlbnQiLCJiaW5kVG9JbnN0YW5jZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImNhbGVuZGFyQ29udGFpbmVyIiwic3R5bGUiLCJ2aXNpYmlsaXR5IiwiZGlzcGxheSIsImRheXNDb250YWluZXIiLCJkYXlzV2lkdGgiLCJkYXlzIiwib2Zmc2V0V2lkdGgiLCJ3aWR0aCIsIndlZWtXcmFwcGVyIiwicmVtb3ZlUHJvcGVydHkiLCJ1cGRhdGVUaW1lIiwic2V0RGVmYXVsdFRpbWUiLCJ0aW1lV3JhcHBlciIsInByZXZWYWx1ZSIsInNldEhvdXJzRnJvbUlucHV0cyIsIl9kZWJvdW5jZWRDaGFuZ2UiLCJhbXBtMm1pbGl0YXJ5IiwibWlsaXRhcnkyYW1wbSIsImhvdXJFbGVtZW50IiwibWludXRlRWxlbWVudCIsInNlY29uZEVsZW1lbnQiLCJsaW1pdE1pbkhvdXJzIiwibWluVGltZSIsIm1pbkRhdGVIYXNUaW1lIiwibGltaXRNYXhIb3VycyIsIm1heFRpbWUiLCJtYXhEYXRlSGFzVGltZSIsInNldERlZmF1bHRIb3VycyIsIm1pbkhyIiwibWluTWludXRlcyIsIm1heEhyIiwibWF4TWludXRlcyIsIm9uWWVhcklucHV0IiwiZGVsdGEiLCJldiIsImFkZEV2ZW50TGlzdGVuZXIiLCJwdXNoIiwib25DbGljayIsIndoaWNoIiwidHJpZ2dlckNoYW5nZSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJzZXR1cE1vYmlsZSIsImRlYm91bmNlZFJlc2l6ZSIsIm9uUmVzaXplIiwib25Nb3VzZU92ZXIiLCJvbnRvdWNoc3RhcnQiLCJkb2N1bWVudENsaWNrIiwiY2FwdHVyZSIsIm1vbnRoTmF2Iiwib25Nb250aE5hdkNsaWNrIiwic2VsZWN0RGF0ZSIsInRpbWVDb250YWluZXIiLCJzZWxUZXh0IiwidGltZUluY3JlbWVudCIsImp1bXBEYXRlIiwianVtcFRvIiwib2xkWWVhciIsIm9sZE1vbnRoIiwiYnVpbGRNb250aFN3aXRjaCIsImluY3JlbWVudE51bUlucHV0IiwiY29udGFpbnMiLCJpbnB1dEVsZW0iLCJjcmVhdGVFdmVudCIsImRpc3BhdGNoRXZlbnQiLCJmcmFnbWVudCIsImNyZWF0ZURvY3VtZW50RnJhZ21lbnQiLCJ0YWJJbmRleCIsImJ1aWxkTW9udGhOYXYiLCJpbm5lckNvbnRhaW5lciIsImJ1aWxkV2Vla3MiLCJyQ29udGFpbmVyIiwiYnVpbGRXZWVrZGF5cyIsImJ1aWxkRGF5cyIsImJ1aWxkVGltZSIsImN1c3RvbUFwcGVuZCIsImFwcGVuZFRvIiwibm9kZVR5cGUiLCJpbnNlcnRCZWZvcmUiLCJuZXh0U2libGluZyIsImNyZWF0ZURheSIsImRheU51bWJlciIsImRhdGVJc0VuYWJsZWQiLCJkYXlFbGVtZW50IiwiJGkiLCJ0b2RheURhdGVFbGVtIiwiaXNEYXRlU2VsZWN0ZWQiLCJzZWxlY3RlZERhdGVFbGVtIiwiaXNEYXRlSW5SYW5nZSIsImluc2VydEFkamFjZW50SFRNTCIsImZvY3VzT25EYXlFbGVtIiwidGFyZ2V0Tm9kZSIsImZvY3VzIiwiZ2V0Rmlyc3RBdmFpbGFibGVEYXkiLCJzdGFydE1vbnRoIiwiZW5kTW9udGgiLCJjaGlsZHJlbiIsInN0YXJ0SW5kZXgiLCJlbmRJbmRleCIsImdldE5leHRBdmFpbGFibGVEYXkiLCJjdXJyZW50IiwiZ2l2ZW5Nb250aCIsImxvb3BEZWx0YSIsIm51bU1vbnRoRGF5cyIsImFicyIsImZvY3VzT25EYXkiLCJkYXlGb2N1c2VkIiwiaXNJblZpZXciLCJhY3RpdmVFbGVtZW50Iiwic3RhcnRFbGVtIiwiYnVpbGRNb250aERheXMiLCJmaXJzdE9mTW9udGgiLCJwcmV2TW9udGhEYXlzIiwiaXNNdWx0aU1vbnRoIiwicHJldk1vbnRoRGF5Q2xhc3MiLCJuZXh0TW9udGhEYXlDbGFzcyIsImRheUluZGV4IiwiZGF5Q29udGFpbmVyIiwiZnJhZyIsInNob3VsZEJ1aWxkTW9udGgiLCJtb250aHNEcm9wZG93bkNvbnRhaW5lciIsImlubmVySFRNTCIsInNlbGVjdGVkIiwiYnVpbGRNb250aCIsImNvbnRhaW5lciIsIm1vbnRoTmF2RnJhZ21lbnQiLCJtb250aEVsZW1lbnQiLCJzZWxlY3RlZE1vbnRoIiwieWVhcklucHV0IiwidGFiaW5kZXgiLCJ5ZWFyRWxlbWVudCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiZGlzYWJsZWQiLCJidWlsZE1vbnRocyIsInByZXZNb250aE5hdiIsInllYXJFbGVtZW50cyIsIm1vbnRoRWxlbWVudHMiLCJuZXh0TW9udGhOYXYiLCJfX2hpZGVQcmV2TW9udGhBcnJvdyIsIl9faGlkZU5leHRNb250aEFycm93IiwiY3VycmVudFllYXJFbGVtZW50IiwidXBkYXRlTmF2aWdhdGlvbkN1cnJlbnRNb250aCIsInNlcGFyYXRvciIsImhvdXJJbnB1dCIsIm1pbnV0ZUlucHV0Iiwic2Vjb25kSW5wdXQiLCJnZXRBdHRyaWJ1dGUiLCJ3ZWVrZGF5Q29udGFpbmVyIiwidXBkYXRlV2Vla2RheXMiLCJzcGxpY2UiLCJjb25jYXQiLCJpc09mZnNldCIsIl9oaWRlUHJldk1vbnRoQXJyb3ciLCJfaGlkZU5leHRNb250aEFycm93IiwidHJpZ2dlckNoYW5nZUV2ZW50IiwidG9Jbml0aWFsIiwibW9iaWxlSW5wdXQiLCJfaW5pdGlhbERhdGUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwibGFzdENoaWxkIiwiX3R5cGUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJrIiwiaXNDYWxlbmRhckVsZW0iLCJldmVudFRhcmdldF8xIiwiaXNDYWxlbmRhckVsZW1lbnQiLCJpc0lucHV0IiwibG9zdEZvY3VzIiwicmVsYXRlZFRhcmdldCIsImlzSWdub3JlZCIsInNvbWUiLCJuZXdZZWFyIiwibmV3WWVhck51bSIsImlzTmV3WWVhciIsImRhdGVUb0NoZWNrIiwiZnJvbSIsInRvIiwiYWxsb3dLZXlkb3duIiwiYWxsb3dJbmxpbmVLZXlkb3duIiwiYmx1ciIsImlzVGltZU9iaiIsInByZXZlbnREZWZhdWx0IiwiZm9jdXNBbmRDbG9zZSIsImRlbHRhXzEiLCJjdHJsS2V5Iiwic3RvcFByb3BhZ2F0aW9uIiwiZWxlbXMiLCJzaGlmdEtleSIsImhvdmVyRGF0ZSIsImZpcnN0RWxlbWVudENoaWxkIiwiaW5pdGlhbERhdGUiLCJyYW5nZVN0YXJ0RGF0ZSIsInJhbmdlRW5kRGF0ZSIsImNvbnRhaW5zRGlzYWJsZWQiLCJtaW5SYW5nZSIsIm1heFJhbmdlIiwiZGF5RWxlbSIsIm91dE9mUmFuZ2UiLCJfcG9zaXRpb25FbGVtZW50IiwiY2xpY2siLCJ3YXNPcGVuIiwibWluTWF4RGF0ZVNldHRlciIsImludmVyc2VEYXRlT2JqIiwiYm9vbE9wdHMiLCJ1c2VyQ29uZmlnIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJkYXRhc2V0IiwiZGF0ZXMiLCJwYXJzZURhdGVSdWxlcyIsInRpbWVNb2RlIiwiZGVmYXVsdERhdGVGb3JtYXQiLCJkZWZhdWx0QWx0Rm9ybWF0IiwiX21pbkRhdGUiLCJfbWF4RGF0ZSIsIm1pbk1heFRpbWVTZXR0ZXIiLCJfbWluVGltZSIsIl9tYXhUaW1lIiwiaG9vayIsInBsdWdpbkNvbmYiLCJsMTBucyIsImN1c3RvbVBvc2l0aW9uRWxlbWVudCIsImNhbGVuZGFySGVpZ2h0IiwicmVkdWNlIiwiYWNjIiwib2Zmc2V0SGVpZ2h0IiwiY2FsZW5kYXJXaWR0aCIsImNvbmZpZ1BvcyIsImNvbmZpZ1Bvc1ZlcnRpY2FsIiwiY29uZmlnUG9zSG9yaXpvbnRhbCIsImlucHV0Qm91bmRzIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiZGlzdGFuY2VGcm9tQm90dG9tIiwiaW5uZXJIZWlnaHQiLCJib3R0b20iLCJzaG93T25Ub3AiLCJ0b3AiLCJwYWdlWU9mZnNldCIsImxlZnQiLCJwYWdlWE9mZnNldCIsInJpZ2h0IiwicmlnaHRNb3N0IiwiY2VudGVyTW9zdCIsInN0eWxlU2hlZXRzIiwiYm9keVdpZHRoIiwiY2VudGVyTGVmdCIsImNlbnRlckJlZm9yZSIsImNlbnRlckFmdGVyIiwiY2VudGVySW5kZXgiLCJjc3NSdWxlcyIsImNlbnRlclN0eWxlIiwiaW5zZXJ0UnVsZSIsIm1zTWF4VG91Y2hQb2ludHMiLCJpc1NlbGVjdGFibGUiLCJzaG91bGRDaGFuZ2VNb250aCIsInNlbGVjdGVkSW5kZXgiLCJzb3J0IiwiYSIsImIiLCJzaW5nbGUiLCJyYW5nZSIsIkNBTExCQUNLUyIsInNldFNlbGVjdGVkRGF0ZSIsImlucHV0RGF0ZSIsInJ1bGUiLCJwcmVsb2FkZWREYXRlIiwiZGVmYXVsdERhdGUiLCJub2RlTmFtZSIsInBsYWNlaG9sZGVyIiwiX3Nob3dUaW1lSW5wdXQiLCJxdWVyeVNlbGVjdG9yIiwiaW5wdXRUeXBlIiwibW9iaWxlRm9ybWF0U3RyIiwiZGVmYXVsdFZhbHVlIiwiaG9va3MiLCJpbml0RXZlbnQiLCJnZXREYXRlU3RyIiwiZE9iaiIsImlzUHJldk1vbnRoIiwiaXNOZXh0TW9udGgiLCJpc0tleURvd24iLCJjdXJWYWx1ZSIsImlzSG91ckVsZW0iLCJpc01pbnV0ZUVsZW0iLCJfZmxhdHBpY2tyIiwibm9kZUxpc3QiLCJub2RlcyIsIkhUTUxFbGVtZW50IiwiaW5zdGFuY2VzIiwiSFRNTENvbGxlY3Rpb24iLCJOb2RlTGlzdCIsInNlbGVjdG9yIiwiTm9kZSIsImVuIiwibG9jYWxpemUiLCJzZXREZWZhdWx0cyIsImpRdWVyeSIsImZwX2luY3IiLCJqc3MiLCJhZGpTZWxBdHRyUmVnZXgiLCJkb3VibGVDb2xvblBzZXVkb0VsUmVnZXgiLCJzaW5nbGVDb2xvblBzZXVkb0VsUmVnZXgiLCJzaW5nbGVDb2xvbkZvclBzZXVkb0VsZW1lbnRzIiwiZ2V0U2VsZWN0b3JzQW5kUnVsZXMiLCJzaGVldCIsInJ1bGVzIiwicmVzdWx0cyIsInNlbGVjdG9yVGV4dCIsInRvRG91YmxlQ29sb25Qc2V1ZG9FbGVtZW50cyIsImdldFJ1bGVzIiwic3dhcEFkalNlbEF0dHIiLCJzd2FwUHNldWRvRWxTeW50YXgiLCJhZGRSdWxlIiwicHNldWRvRWxlbWVudFJ1bGUiLCJhZGRQc2V1ZG9FbGVtZW50UnVsZSIsImFkZFJ1bGVUb1NoZWV0IiwiZG91YmxlQ29sb25TZWxlY3RvciIsInNpbmdsZUNvbG9uU2VsZWN0b3IiLCJ0b1NpbmdsZUNvbG9uUHNldWRvRWxlbWVudHMiLCJyZXBsYWNlIiwic3VibWF0Y2gxIiwic3VibWF0Y2gyIiwic3VibWF0Y2gzIiwicmVtb3ZlUnVsZSIsImRlbGV0ZVJ1bGUiLCJleHRlbmQiLCJkZXN0Iiwic3JjIiwiYWdncmVnYXRlU3R5bGVzIiwiYWdncmVnYXRlIiwiZGVjbGFyZWRQcm9wZXJ0aWVzIiwiZGVjbGFyZWQiLCJ0b0NhbWVsQ2FzZSIsInN3YXAiLCJsYXN0SW5kZXgiLCJzdWJzdHIiLCJzZXRTdHlsZVByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwiaW1wb3J0YW50SW5kZXgiLCJzZXRQcm9wZXJ0eSIsInN1Ym1hdGNoIiwidHJhbnNmb3JtQ2FtZWxDYXNlZFByb3BlcnR5TmFtZXMiLCJvbGRQcm9wcyIsIm5ld1Byb3BzIiwidW5DYW1lbENhc2UiLCJKc3MiLCJoZWFkIiwic2hlZXRzIiwiZGVmYXVsdFNoZWV0IiwiZ2V0QWxsIiwiX2NyZWF0ZVNoZWV0IiwiX3JlbW92ZVNoZWV0Iiwic3R5bGVOb2RlIiwicmVsIiwib3duZXJOb2RlIiwiZm9yRG9jdW1lbnQiLCJpbmNsdWRlcyIsImlzSW50ZWdlciIsInN0YXJ0c1dpdGgiLCJpdCIsIlVOU0NPUEFCTEVTIiwiQXJyYXlQcm90byIsInRvSU9iamVjdCIsInRvTGVuZ3RoIiwidG9BYnNvbHV0ZUluZGV4IiwiSVNfSU5DTFVERVMiLCIkdGhpcyIsImZyb21JbmRleCIsIk8iLCJjdHgiLCJJT2JqZWN0IiwidG9PYmplY3QiLCJhc2MiLCJUWVBFIiwiJGNyZWF0ZSIsIklTX01BUCIsIklTX0ZJTFRFUiIsIklTX1NPTUUiLCJJU19FVkVSWSIsIklTX0ZJTkRfSU5ERVgiLCJOT19IT0xFUyIsImNyZWF0ZSIsImNhbGxiYWNrZm4iLCJ0aGF0IiwiZiIsInJlcyIsIlNQRUNJRVMiLCJvcmlnaW5hbCIsIkMiLCJzcGVjaWVzQ29uc3RydWN0b3IiLCJjb3JlIiwidmVyc2lvbiIsIl9fZSIsImFGdW5jdGlvbiIsImlzIiwiaGlkZSIsInJlZGVmaW5lIiwiUFJPVE9UWVBFIiwiJGV4cG9ydCIsIklTX0ZPUkNFRCIsIklTX0dMT0JBTCIsIklTX1NUQVRJQyIsIklTX1BST1RPIiwiSVNfQklORCIsIkIiLCJleHBQcm90byIsIm93biIsIm91dCIsImV4cCIsIlIiLCJNQVRDSCIsIktFWSIsInJlIiwiX19nIiwiZFAiLCJjcmVhdGVEZXNjIiwiY29mIiwiYXJnIiwiZmxvb3IiLCJpc0Zpbml0ZSIsImlzUmVnRXhwIiwiYW5PYmplY3QiLCJJRThfRE9NX0RFRklORSIsInRvUHJpbWl0aXZlIiwiQXR0cmlidXRlcyIsImJpdG1hcCIsImhhcyIsIlNSQyIsIiR0b1N0cmluZyIsIlRPX1NUUklORyIsIlRQTCIsImluc3BlY3RTb3VyY2UiLCJzYWZlIiwiU0hBUkVEIiwic3RvcmUiLCJjb3B5cmlnaHQiLCJmYWlscyIsIm1ldGhvZCIsImRlZmluZWQiLCJzZWFyY2hTdHJpbmciLCJOQU1FIiwiY2VpbCIsInZhbHVlT2YiLCJweCIsInJhbmRvbSIsIlVTRV9TWU1CT0wiLCIkZXhwb3J0cyIsIiRmb3JFYWNoIiwiU1RSSUNUIiwiU1RBUlRTX1dJVEgiLCIkc3RhcnRzV2l0aCIsInNlYXJjaCIsIiRpbmNsdWRlcyIsImRlZXBQYXJzZUpzb24iLCJqc29uU3RyaW5nIiwidGhpc0FyZyIsInRvU3RyaW5nVGFnIiwic3JjVmFsdWUiLCJjaHIiLCJJRV9QUk9UTyIsInByb2Nlc3MiLCJiaW5kaW5nIiwic3JjSW5kZXgiLCJldmFsdWF0ZSIsImVzY2FwZVZhbHVlIiwiZXNUZW1wbGF0ZVZhbHVlIiwiZXZhbHVhdGVWYWx1ZSIsImNzcyIsInByb3RvY29sIiwiaG9zdCIsInBhdGhuYW1lIiwiZnVsbE1hdGNoIiwib3JpZ1VybCIsIm8iLCIkMSIsIndlYnBhY2tQb2x5ZmlsbCIsImRlcHJlY2F0ZSIsInBhdGhzIiwiZ3dfc3RhcnRFZGl0aW5nQ2VsbCIsInJvdyIsImNvbEtleSIsImFwaSIsImdldFJvd05vZGUiLCJnZXREaXNwbGF5ZWRSb3dBdEluZGV4Iiwic2V0Rm9jdXNlZENlbGwiLCJyb3dJbmRleCIsInN0YXJ0RWRpdGluZ0NlbGwiLCJrZXlQcmVzcyIsImNoYXJQcmVzcyIsImd3X3N0b3BFZGl0aW5nIiwiY2FuY2VsIiwic3RvcEVkaXRpbmciLCJnd19lZGl0TmV4dENlbGwiLCJ0YWJUb05leHRDZWxsIiwiZ3dfZWRpdFByZXZpb3VzQ2VsbCIsInRhYlRvUHJldmlvdXNDZWxsIiwiZ3dfc2V0Rm9jdXNlZENlbGwiLCJjb2x1bW4iLCJyIiwiY29sdW1uQXBpIiwiZ2V0QWxsR3JpZENvbHVtbnMiLCJjb2xJZCIsImd3X2dldFJhbmdlU2VsZWN0aW9ucyIsInJhbmdlcyIsImdldENlbGxSYW5nZXMiLCJnZXRNb2RlbCIsImNvbHVtbnMiLCJhY2N1bXVsYXRvciIsInN0YXJJbmRleCIsInN0YXJ0Um93IiwiZW5kUm93Iiwicm93cyIsImdldFJvdyIsInBhcnNlZE5vZGUiLCJnd19wYXJzZUFkZENlbGxSYW5nZSIsInByIiwiZW5kIiwicm93RGF0YSIsInJvd1N0YXJ0SW5kZXgiLCJyb3dFbmRJbmRleCIsImd3X2FkZENlbGxSYW5nZSIsImFkZENlbGxSYW5nZSIsImd3X2NsZWFyUmFuZ2VTZWxlY3Rpb24iLCJjbGVhclJhbmdlU2VsZWN0aW9uIiwiZ3dfZ2V0Q2hhcnRUb29sYmFySXRlbXMiLCJncmlkT3B0aW9uc1dyYXBwZXIiLCJncmlkT3B0aW9ucyIsImNoYXJ0VG9vbGJhckl0ZW1zIiwiZ3dfYWRkQ2hhcnRSYW5nZSIsImdyaWQiLCJjZWxsUmFuZ2UiLCJyZWYiLCJjaGFydFJhbmdlIiwidXVpZCIsImNyZWF0ZWRfY2hhcnRzIiwiZ3dfZGVzdHJveUNoYXJ0IiwiZGVzdHJveUNoYXJ0IiwiY2hhcnQiLCJnd19leHRlbmRDb2x1bW5EZWZpbml0aW9ucyIsImRlZmluaXRpb25zIiwiZGVmIiwiY2hlY2tib3hTZWxlY3Rpb24iLCJnd19pc1Nob3dTZWxlY3Rpb25DaGVja2JveCIsImhlYWRlckNoZWNrYm94U2VsZWN0aW9uIiwiZ3dfaXNIZWFkZXJDaGVja2JveFNlbGVjdGlvbiIsImd3X3NldENvbHVtbkRlZmluaXRpb25zIiwiZGVlcFBhcnNlZERlZmluaXRpb25zIiwic2V0Q29sdW1uRGVmcyIsImNvbHVtbkRlZnMiLCJnd19zaXplQ29sdW1uc1RvRml0IiwiY29sdW1uc0FQSSIsInNpemVDb2x1bW5zVG9GaXQiLCJnd19hdXRvU2l6ZUNvbHVtbnMiLCJza2lwSGVhZGVyIiwiYWxsQ29sdW1uSWRzIiwiZ2V0QWxsQ29sdW1ucyIsImF1dG9TaXplQ29sdW1ucyIsImd3X2Vuc3VyZUNvbHVtblZpc2libGUiLCJjb2x1bW5JZCIsImVuc3VyZUNvbHVtblZpc2libGUiLCJnd19zZXRDb2x1bW5XaWR0aCIsInNldENvbHVtbldpZHRoIiwiZ3dfcGluQ29sdW1uIiwicGluIiwic2V0Q29sdW1uUGlubmVkIiwiZ3dfbW92ZUNvbHVtbiIsInRvSW5kZXgiLCJtb3ZlQ29sdW1uIiwicGFyYW0iLCJzaG93U2VsZWN0aW9uQ2hlY2tib3giLCJjb2xEZWYiLCJmaWVsZCIsInNob3dIZWFkZXJTZWxlY3Rpb25DaGVja2JveCIsImd3X2FkZFJvd0dyb3VwQ29sdW1uIiwiZ3dfcmVtb3ZlUm93R3JvdXBDb2x1bW4iLCJyZW1vdmVSb3dHcm91cENvbHVtbnMiLCJnd19nZXRQaXZvdE1vZGUiLCJpc1Bpdm90TW9kZSIsImd3X3NldFBpdm90TW9kZSIsInNldFBpdm90TW9kZSIsImd3X2FkZFBpdm90Q29sdW1ucyIsImd3X3JlbW92ZVBpdm90Q29sdW1ucyIsInJlbW92ZVBpdm90Q29sdW1ucyIsImd3X2FkZFZhbHVlQ29sdW1ucyIsImFkZFZhbHVlQ29sdW1ucyIsImd3X3JlbW92ZVZhbHVlQ29sdW1ucyIsInJlbW92ZVZhbHVlQ29sdW1ucyIsImd3X3NldFNvcnRNb2RlbCIsImFzQXJyYXkiLCJwYXJzZWRNb2RlbCIsInNldFNvcnRNb2RlbCIsImd3X3VwZGF0ZUNvbnRleHQiLCJnd19pbml0IiwibGljZW5zZSIsImFnR3JpZCIsIkxpY2Vuc2VNYW5hZ2VyIiwic2V0TGljZW5zZUtleSIsImdldEVsZW1lbnRCeUlkIiwicGFyc2VkT3B0aW9ucyIsImd3X3BhcnNlT3B0aW9ucyIsImluc3RhbmNlIiwiR3JpZCIsImxvZyIsImRlZXBQYXJzZWRPcHRpb25zIiwiZ2V0RGF0YVBhdGhUZW1wbGF0ZSIsImdldERhdGFQYXRoIiwiZGVib3VuY2VEdXJhdGlvbiIsImZpbmFsT3B0aW9ucyIsImdldERvY3VtZW50Iiwib25DZWxsRWRpdGluZ1N0YXJ0ZWQiLCJvbkNlbGxFZGl0aW5nU3RvcHBlZCIsIm9uQ2VsbFZhbHVlQ2hhbmdlZCIsIm9uUm93RWRpdGluZ1N0YXJ0ZWQiLCJvblJvd0VkaXRpbmdTdG9wcGVkIiwib25Sb3dWYWx1ZUNoYW5nZWQiLCJvbkNlbGxDbGlja2VkIiwib25DZWxsRG91YmxlQ2xpY2tlZCIsIm9uR3JpZFJlYWR5IiwiZ2V0Um93Tm9kZUlkIiwiZ2V0Q29udGV4dE1lbnVJdGVtcyIsImd3X29uUm93RG91YmxlQ2xpY2tlZCIsImd3X29uU2VsZWN0aW9uQ2hhbmdlZCIsImd3X29uUmFuZ2VTZWxlY3Rpb25DaGFuZ2VkIiwiQWdHcmlkQ29tcG9uZW50cyIsIm5hdmlnYXRlVG9OZXh0Q2VsbCIsInRyZWVEYXRhIiwiZ2V0RGF0YVBhdGhUZW1wbGF0ZUNvbXBsaWVkIiwiZ3dfc2V0U3R5bGUiLCJnd19yZW1vdmVTdHlsZSIsImd3X2dldENvbnRleHRNZW51IiwiZ3JpZElkIiwiYnVpbGRDb250ZXh0TWVudUFjdGlvbiIsInYiLCJwYXJzZU1lbnUiLCJtZW51IiwiY29udGV4dE1lbnUiLCJnd19zaG93TG9hZGluZ092ZXJsYXkiLCJzaG93TG9hZGluZ092ZXJsYXkiLCJnd19zaG93Tm9Sb3dzT3ZlcmxheSIsInNob3dOb1Jvd3NPdmVybGF5IiwiZ3dfaGlkZU92ZXJsYXkiLCJoaWRlT3ZlcmxheSIsImd3X3NldFF1aWNrRmlsdGVyIiwic2V0UXVpY2tGaWx0ZXIiLCJnd19leHBhbmRBbGwiLCJleHBhbmRBbGwiLCJnd19jb2xsYXBzZUFsbCIsImNvbGxhcHNlQWxsIiwiZ3dfZW5zdXJlSW5kZXhWaXNpYmxlIiwiZW5zdXJlTm9kZVZpc2libGUiLCJlbnN1cmVJbmRleFZpc2libGUiLCJnd19uYXZpZ2F0ZVRvTmV4dFJvdyIsInByZXZpb3VzQ2VsbCIsInByZXZpb3VzQ2VsbFBvc2l0aW9uIiwic3VnZ2VzdGVkTmV4dENlbGwiLCJuZXh0Q2VsbFBvc2l0aW9uIiwiS0VZX1VQIiwiS0VZX0RPV04iLCJLRVlfTEVGVCIsIktFWV9SSUdIVCIsImZvckVhY2hOb2RlIiwic2V0U2VsZWN0ZWQiLCJnd19nZXRSb3dOb2RlSWQiLCJnd19zZXRSb3dzRGF0YSIsImpzb24iLCJzZXRSb3dEYXRhIiwiZ3dfc2V0Um93RGF0YSIsInVwZGF0ZVJvd0RhdGEiLCJnd19yZW1vdmVSb3dzIiwiaW5kZXhlcyIsIml0ZW1zIiwiZ3dfYWRkUm93cyIsImFkZEluZGV4IiwiZ3dfc2V0Um93c0hlaWdodCIsImhlaWdodCIsInNldFJvd0hlaWdodCIsIm9uUm93SGVpZ2h0Q2hhbmdlZCIsImd3X3NldFJvd0hlaWdodCIsImd3X3NldFNlbGVjdGVkUm93cyIsImZvckVhY2hOb2RlQWZ0ZXJGaWx0ZXJBbmRTb3J0IiwiZXhwYW5kZWQiLCJvbkdyb3VwRXhwYW5kZWRPckNvbGxhcHNlZCIsImd3X3NlbGVjdEFsbCIsImZpbHRlcmVkIiwic2VsZWN0QWxsRmlsdGVyZWQiLCJzZWxlY3RBbGwiLCJnd19kZXNlbGVjdEFsbCIsImRlc2VsZWN0QWxsRmlsdGVyZWQiLCJkZXNlbGVjdEFsbCIsImd3X2dldFNlbGVjdGVkUm93cyIsImdldFNlbGVjdGVkTm9kZXMiLCJnd19nZXRTZWxlY3RlZFJvdyIsImd3X3NldFN0YXRlIiwic2V0Q29sdW1uU3RhdGUiLCJzZXRDb2x1bW5Hcm91cFN0YXRlIiwiZ3JvdXBzIiwic2V0RmlsdGVyTW9kZWwiLCJmaWx0ZXJzIiwiZ3dfZ2V0U3RhdGUiLCJnZXRDb2x1bW5TdGF0ZSIsImdldENvbHVtbkdyb3VwU3RhdGUiLCJnZXRTb3J0TW9kZWwiLCJnZXRGaWx0ZXJNb2RlbCIsImd3X3NldFN0YXR1c2JhckNvbXBvbmVudFZpc2liaWxpdHkiLCJnZXRTdGF0dXNQYW5lbCIsInNldFZpc2libGUiLCJnd19zZXRTaWRlQmFyVmlzaWJsZSIsInNldFNpZGVCYXJWaXNpYmxlIiwiZ3dfb3BlblRvb2xwYW5lbCIsInRvb2xwYW5lbElkIiwib3BlblRvb2xQYW5lbCIsImd3X2Nsb3NlVG9vbHBhbmVsIiwiY2xvc2VUb29sUGFuZWwiLCJnd19zZXRGdW5jdGlvbnNSZWFkT25seSIsInNldEZ1bmN0aW9uc1JlYWRPbmx5IiwiZ3dfZ2V0RG9jdW1lbnQiLCIkZG9jIiwiZ3dfZ2V0V2luZG93IiwiJHduZCIsImd3X2VzY2FwZSIsImd3X3V1aWQiLCJnd19nZXRHcmlkIiwiQkJqR3JpZEV4V2lkZ2V0IiwicmVnaXN0ZXJlZEdyaWRzIiwiZ3dfYWRkR3JpZCIsIkdXX0VWRU5UX1JPV19DTElDSyIsIkdXX0VWRU5UX1JPV19ET1VCTEVfQ0xJQ0siLCJHV19FVkVOVF9DRUxMX0NMSUNLIiwiR1dfRVZFTlRfQ0VMTF9ET1VCTEVfQ0xJQ0siLCJHV19FVkVOVF9DRUxMX0VESVRJTkdfU1RBUlRFRCIsIkdXX0VWRU5UX0NFTExfRURJVElOR19TVE9QUEVEIiwiR1dfRVZFTlRfQ0VMTF9WQUxVRV9DSEFOR0VEIiwiR1dfRVZFTlRfUk9XX0VESVRJTkdfU1RBUlRFRCIsIkdXX0VWRU5UX1JPV19FRElUSU5HX1NUT1BQRUQiLCJHV19FVkVOVF9HUklEX1NUQVRFX0NIQU5HRSIsIkdXX0VWRU5UX1JBTkdFX1NFTEVDVElPTl9DSEFOR0VEIiwiR1dfRVZFTlRfS0VZUFJFU1MiLCJDRUxMX0VESVRJTkdfRVZFTlRTX01BUCIsIlJPV19FRElUSU5HX0VWRU5UU19NQVAiLCJnd19vbkNlbGxFZGl0aW5nRXZlbnQiLCJvbGRWYWx1ZSIsImd3X29uUm93RWRpdGluZ0V2ZW50IiwiZ3dfb25LZXlkb3duIiwia2V5ZG93bkV2ZW50Iiwia2MiLCJhayIsImFsdEtleSIsInNrIiwiY2siLCJnd19vblJlYWR5RXZlbnQiLCJzdGF0ZURlYm91bmNlIiwiY2hhbmdlRXZlbnQiLCJrZXlib2FyZERlYm91bmNlIiwiQ0VMTF9DTElDS0lOR19FVkVOVFNfTUFQIiwiZ3dfb25DZWxsQ2xpY2tFdmVudCIsImd3X29uU3RhdGVDaGFuZ2VkIiwiZ3dfZGVib3VuY2UiLCJsYXRlciIsImNhbGxOb3ciLCJnd19zZW5kRXZlbnQiLCJwYXlsb2FkIiwiZXZlbnRJZCIsInJlZ2lzdGVyZWRJbnRlcmVzdHMiLCJpbnRlcmVzdHMiLCJkaXYiLCJDdXN0b21FdmVudCIsImd3X3BhcnNlTm9kZSIsImdyb3VwIiwiY2hpbGRJbmRleCIsImd3X3BhcnNlTm9kZUZyb21FdmVudCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGV0YWlsIiwiaW5pdEN1c3RvbUV2ZW50IiwiRXZlbnQiLCJmaW5kIiwicHJlZGljYXRlIiwibGVuIiwia1ZhbHVlIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxrREFBMEMsZ0NBQWdDO0FBQzFFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0VBQXdELGtCQUFrQjtBQUMxRTtBQUNBLHlEQUFpRCxjQUFjO0FBQy9EOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBeUMsaUNBQWlDO0FBQzFFLHdIQUFnSCxtQkFBbUIsRUFBRTtBQUNySTtBQUNBOztBQUVBO0FBQ0E7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QSxjQWhDQTtBQWlDQSxjQWpDQTtBQWtDQSxhQWxDQTtBQW1DQSxjQW5DQTtBQW9DQSxjQXBDQTtBQXFDQSxhQXJDQTtBQXNDQSxjQXRDQTtBQXVDQSxjQXZDQTtBQXdDQSxhQXhDQTtBQXlDQSxjQXpDQTtBQTBDQSxjQTFDQTtBQTJDQSxhQTNDQTtBQTRDQSxjQTVDQTtBQTZDQSxjQTdDQTtBQThDQSxhQTlDQTtBQStDQSxjQS9DQTtBQWdEQSxjQWhEQTtBQWlEQSxhQWpEQTtBQWtEQSxjQWxEQTtBQW1EQSxjQW5EQTtBQW9EQSxhQXBEQTtBQXFEQSxjQXJEQTtBQXNEQSxjQXREQTtBQXVEQSxhQXZEQTtBQXdEQSxjQXhEQTtBQXlEQSxjQXpEQTtBQTBEQSxhQTFEQTtBQTJEQSxjQTNEQTtBQTREQSxjQTVEQTtBQTZEQSxhQTdEQTtBQThEQSxjQTlEQTtBQStEQSxjQS9EQTtBQWdFQSxhQWhFQTtBQWlFQSxjQWpFQTtBQWtFQSxjQWxFQTtBQW1FQSxhQW5FQTtBQW9FQSxjQXBFQTtBQXFFQSxjQXJFQTtBQXNFQSxhQXRFQTtBQXVFQSxjQXZFQTtBQXdFQSxjQXhFQTtBQXlFQSxhQXpFQTtBQTBFQSxjQTFFQTtBQTJFQSxjQTNFQTtBQTRFQSxhQTVFQTtBQTZFQSxjQTdFQTtBQThFQSxjQTlFQTtBQStFQSxhQS9FQTtBQWdGQSxjQWhGQTtBQWlGQSxjQWpGQTtBQWtGQSxhQWxGQTtBQW1GQSxjQW5GQTtBQW9GQSxjQXBGQTtBQXFGQSxhQXJGQTtBQXNGQSxjQXRGQTtBQXVGQSxjQXZGQTtBQXdGQSxhQXhGQTtBQXlGQSxjQXpGQTtBQTBGQSxjQTFGQTtBQTJGQSxhQTNGQTtBQTRGQSxjQTVGQTtBQTZGQSxjQTdGQTtBQThGQSxhQTlGQTtBQStGQSxjQS9GQTtBQWdHQSxjQWhHQTtBQWlHQSxhQWpHQTtBQWtHQSxjQWxHQTtBQW1HQSxjQW5HQTtBQW9HQSxhQXBHQTtBQXFHQSxjQXJHQTtBQXNHQSxjQXRHQTtBQXVHQSxhQXZHQTtBQXdHQSxjQXhHQTtBQXlHQSxjQXpHQTtBQTBHQSxhQTFHQTtBQTJHQSxjQTNHQTtBQTRHQSxjQTVHQTtBQTZHQSxhQTdHQTtBQThHQSxjQTlHQTtBQStHQSxjQS9HQTtBQWdIQSxhQWhIQTtBQWlIQSxjQWpIQTtBQWtIQSxjQWxIQTtBQW1IQSxhQW5IQTtBQW9IQSxjQXBIQTtBQXFIQSxjQXJIQTtBQXNIQSxhQXRIQTtBQXVIQSxjQXZIQTtBQXdIQSxjQXhIQTtBQXlIQSxhQXpIQTtBQTBIQSxjQTFIQTtBQTJIQSxjQTNIQTtBQTRIQSxhQTVIQTtBQTZIQSxjQTdIQTtBQThIQSxjQTlIQTtBQStIQSxhQS9IQTtBQWdJQSxjQWhJQTtBQWlJQSxjQWpJQTtBQWtJQSxhQWxJQTtBQW1JQSxjQW5JQTtBQW9JQSxjQXBJQTtBQXFJQSxhQXJJQTtBQXNJQSxjQXRJQTtBQXVJQSxjQXZJQTtBQXdJQSxhQXhJQTtBQXlJQSxjQXpJQTtBQTBJQSxjQTFJQTtBQTJJQSxhQTNJQTtBQTRJQSxjQTVJQTtBQTZJQSxjQTdJQTtBQThJQSxhQTlJQTtBQStJQSxjQS9JQTtBQWdKQSxjQWhKQTtBQWlKQSxhQWpKQTtBQWtKQSxjQWxKQTtBQW1KQSxjQW5KQTtBQW9KQSxhQXBKQTtBQXFKQSxjQXJKQTtBQXNKQSxjQXRKQTtBQXVKQSxhQXZKQTtBQXdKQSxjQXhKQTtBQXlKQSxjQXpKQTtBQTBKQSxhQTFKQTtBQTJKQSxjQTNKQTtBQTRKQSxjQTVKQTtBQTZKQSxhQTdKQTtBQThKQSxjQTlKQTtBQStKQSxjQS9KQTtBQWdLQSxhQWhLQTtBQWlLQSxjQWpLQTtBQWtLQSxjQWxLQTtBQW1LQSxhQW5LQTtBQW9LQSxjQXBLQTtBQXFLQSxjQXJLQTtBQXNLQSxhQXRLQTtBQXVLQSxjQXZLQTtBQXdLQSxjQXhLQTtBQXlLQSxhQXpLQTtBQTBLQSxjQTFLQTtBQTJLQSxjQTNLQTtBQTRLQSxhQTVLQTtBQTZLQSxjQTdLQTtBQThLQSxjQTlLQTtBQStLQSxhQS9LQTtBQWdMQSxjQWhMQTtBQWlMQSxjQWpMQTtBQWtMQSxhQWxMQTtBQW1MQSxjQW5MQTtBQW9MQSxjQXBMQTtBQXFMQSxhQXJMQTtBQXNM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d0IsRUFBRSxvQ0FBb0MsdUJBQXVCLEVBQUUsb0NBQW9DLHdCQUF3QixFQUFFLG9DQUFvQyx1QkFBdUIsRUFBRSxvQ0FBb0Msd0JBQXdCLEVBQUUsb0NBQW9DLHVCQUF1QixFQUFFLG9DQUFvQyx3QkFBd0IsRUFBRSxvQ0FBb0MsdUJBQXVCLEVBQUUsb0NBQW9DLHdCQUF3QixFQUFFLG9DQUFvQyx1QkFBdUIsRUFBRSxvQ0FBb0Msd0JBQXdCLEVBQUUsb0NBQW9DLHVCQUF1QixFQUFFLG9DQUFvQyx3QkFBd0IsRUFBRSxvQ0FBb0MsdUJBQXVCLEVBQUUsb0NBQW9DLHdCQUF3QixFQUFFLG9DQUFvQyx1QkFBdUIsRUFBRSxvQ0FBb0Msd0JBQXdCLEVBQUUsb0NBQW9DLHVCQUF1QixFQUFFLG9DQUFvQyx3QkFBd0IsRUFBRSxvQ0FBb0MsdUJBQXVCLEVBQUUsb0NBQW9DLHdCQUF3QixFQUFFLG9DQUFvQyx1QkFBdUIsRUFBRSxvQ0FBb0Msd0JBQXdCLEVBQUUsb0NBQW9DLHVCQUF1QixFQUFFLG9DQUFvQyx3QkFBd0IsRUFBRSxvQ0FBb0MsdUJBQXVCLEVBQUUsb0NBQW9DLHdCQUF3QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlC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QixFQUFFLDBEQUEwRCwwQkFBMEIsRUFBRSwwREFBMEQsMkJBQTJCLEVBQUUsMERBQTBELDBCQUEwQixFQUFFLDBEQUEwRCwyQkFBMkIsRUFBRSwwREFBMEQsMEJBQTBCLEVBQUUsMERBQTBELDJCQUEyQixFQUFFLDBEQUEwRCwwQkFBMEIsRUFBRSwwREFBMEQsMkJBQTJCLEVBQUUsMERBQTBELDBCQUEwQixFQUFFLDBEQUEwRCwyQkFBMkIsRUFBRSwwREFBMEQsMEJBQTBCLEVBQUUsMERBQTBELDJCQUEyQixFQUFFLDBEQUEwRCwwQkFBMEIsRUFBRSwwREFBMEQsMkJBQTJCLEVBQUUsMERBQTBELDBCQUEwQixFQUFFLDBEQUEwRCwyQkFBMkIsRUFBRSwwREFBMEQsMEJBQTBCLEVBQUUsMERBQTBELDJCQUEyQixFQUFFLDBEQUEwRCwwQkFBMEIsRUFBRSwwREFBMEQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsNEJBQTRCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDRCQUE0QixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCw0QkFBNEIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsNEJBQTRCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDRCQUE0QixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCw0QkFBNEIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsNEJBQTRCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDRCQUE0QixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCw0QkFBNEIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsNEJBQTRCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDRCQUE0QixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCw0QkFBNEIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsNEJBQTRCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDRCQUE0QixFQUFFLDZDQUE2Qyw0QkFBNEIsNkJBQTZCLEVBQUUseUhBQXlILDJCQUEyQiwyQkFBMkIsb0JBQW9CLGdDQUFnQyxpQ0FBaUMsa0NBQWtDLHNCQUFzQixFQUFFLDZJQUE2SSx3QkFBd0IsRUFBRSxpS0FBaUssb0JBQW9CLEVBQUUsMk5BQTJOLHlCQUF5QixFQUFFLG9DQUFvQyxtREFBbUQsRUFBRSw2REFBNkQsd0JBQXdCLEVBQUUsNENBQTRDLDBDQUEwQyxFQUFFLDZKQUE2SixxQ0FBcUMsRUFBRSx5SkFBeUosc0NBQXNDLEVBQUUsNkRBQTZELHlCQUF5QixFQUFFLDRDQUE0Qyx5Q0FBeUMsRUFBRSw2SkFBNkoscUNBQXFDLEVBQUUseUpBQXlKLHNDQUFzQyxFQUFFLGtEQUFrRCx5QkFBeUIsRUFBRSxxREFBcUQscUJBQXFCLEVBQUUsdURBQXVELHFCQUFxQixFQUFFLGtEQUFrRCxvQ0FBb0MseUJBQXlCLHdCQUF3Qix5QkFBeUIsOENBQThDLHNDQUFzQyxFQUFFLDREQUE0RCxnREFBZ0QsZ0RBQWdELHdDQUF3QyxFQUFFLCtZQUErWSx3QkFBd0IsMEJBQTBCLDRCQUE0QixFQUFFLGlkQUFpZCx5Q0FBeUMsZ0RBQWdELCtDQUErQyxFQUFFLGtFQUFrRSwwQkFBMEIsNkJBQTZCLDZCQUE2QixFQUFFLG1FQUFtRSxpQkFBaUIsRUFBRSxzREFBc0Qsd0JBQXdCLDBCQUEwQiw0QkFBNEIsRUFBRSxpRUFBaUUseUNBQXlDLGdEQUFnRCwrQ0FBK0MsRUFBRSxzQ0FBc0MsZ0NBQWdDLHVDQUF1Qyx1QkFBdUIsc0JBQXNCLDJJQUEySSx1Q0FBdUMsRUFBRSxtREFBbUQscUNBQXFDLEVBQUUsa0RBQWtELHNDQUFzQyxFQUFFLDBDQUEwQyxtQkFBbUIsRUFBRSxtQ0FBbUMsMEJBQTBCLDRCQUE0QixzQkFBc0IsRUFBRSx3REFBd0QsOEJBQThCLEVBQUUsaURBQWlELGlDQUFpQyxFQUFFLHVDQUF1QyxnQ0FBZ0MsRUFBRSx3Q0FBd0MsZ0NBQWdDLEVBQUUsc0RBQXNELHNDQUFzQyxFQUFFLDJFQUEyRSwyQkFBMkIsRUFBRSx1REFBdUQscUNBQXFDLEVBQUUsNEVBQTRFLDBCQUEwQixFQUFFLHlDQUF5QyxnQ0FBZ0MsRUFBRSw0Q0FBNEMsd0JBQXdCLEVBQUUsaUVBQWlFLHVCQUF1QixvQkFBb0IsRUFBRSwyRkFBMkYsMEJBQTBCLDRCQUE0Qix5QkFBeUIsMEJBQTBCLHNCQUFzQixFQUFFLDJJQUEySSxrQ0FBa0MsRUFBRSx1S0FBdUssOEJBQThCLEVBQUUsOElBQThJLDBCQUEwQixFQUFFLGtEQUFrRCx5QkFBeUIsRUFBRSxpREFBaUQseUJBQXlCLEVBQUUsb0NBQW9DLHdCQUF3Qix5QkFBeUIsMEJBQTBCLG9DQUFvQyx5QkFBeUIsMEJBQTBCLEVBQUUsd0NBQXdDLG1CQUFtQiwyQkFBMkIsbUJBQW1CLHNCQUFzQixFQUFFLGlHQUFpRyxtQkFBbUIsRUFBRSwyQ0FBMkMsbUJBQW1CLDJCQUEyQixtQkFBbUIsRUFBRSw0Q0FBNEMsbUJBQW1CLEVBQUUsd2lCQUF3aUIsZ0NBQWdDLHVCQUF1QixFQUFFLGtEQUFrRCxpQkFBaUIsRUFBRSxvQ0FBb0MsMEJBQTBCLHlCQUF5QiwrQkFBK0IsK0JBQStCLG1CQUFtQixpQkFBaUIsRUFBRSxvREFBb0Qsd0JBQXdCLDJCQUEyQix3QkFBd0Isb0JBQW9CLEVBQUUsNkRBQTZELGtDQUFrQyxFQUFFLCtEQUErRCxxQkFBcUIsRUFBRSwyREFBMkQseUJBQXlCLEVBQUUsMkRBQTJELDBCQUEwQiwyQkFBMkIsd0JBQXdCLEVBQUUsK0RBQStELDBCQUEwQixFQUFFLHlEQUF5RCxvQkFBb0IsRUFBRSxrRUFBa0UscVNBQXFTLEVBQUUsb0VBQW9FLG9CQUFvQiwyQkFBMkIsRUFBRSx3Q0FBd0MsMEJBQTBCLHlCQUF5QiwrQkFBK0IsK0JBQStCLG1CQUFtQixnQ0FBZ0MsdUNBQXVDLHVCQUF1QixzQkFBc0IsMklBQTJJLDhCQUE4Qix3QkFBd0IsZ0JBQWdCLHFCQUFxQix5Q0FBeUMseUNBQXlDLEVBQUUsNEZBQTRGLHFCQUFxQixrQkFBa0IsbUJBQW1CLEVBQUUsNkRBQTZELDBCQUEwQixzQkFBc0IsRUFBRSwwQ0FBMEMsMEJBQTBCLHVCQUF1QixrQkFBa0IsMkJBQTJCLDJCQUEyQixvQkFBb0IsRUFBRSxvREFBb0QsNkJBQTZCLDZCQUE2QixzQkFBc0IsNkNBQTZDLHFCQUFxQiw0QkFBNEIsMkJBQTJCLDJCQUEyQixrQ0FBa0MsbUNBQW1DLG9DQUFvQyxpQ0FBaUMsa0NBQWtDLHdDQUF3QyxFQUFFLHdDQUF3QyxxQkFBcUIsRUFBRSx3REFBd0QseUJBQXlCLHNCQUFzQixFQUFFLG1GQUFtRix5QkFBeUIsRUFBRSxrRkFBa0YsNEJBQTRCLEVBQUUsMkdBQTJHLG1DQUFtQyxFQUFFLDBHQUEwRyx5QkFBeUIsRUFBRSxzREFBc0Qsb0JBQW9CLEVBQUUsd0RBQXdELHVCQUF1Qix3QkFBd0IsRUFBRSx3REFBd0Qsa0JBQWtCLEVBQUUsNERBQTRELDBCQUEwQixrQkFBa0IsbUJBQW1CLDBCQUEwQixFQUFFLHFIQUFxSCx3QkFBd0IsRUFBRSwwREFBMEQsb0JBQW9CLEVBQUUsMERBQTBELG1CQUFtQiwyQkFBMkIsMkJBQTJCLG9CQUFvQixnQ0FBZ0MsaUNBQWlDLGtDQUFrQyxFQUFFLCtIQUErSCx5QkFBeUIsNkJBQTZCLDZCQUE2QixzQkFBc0IsRUFBRSwrRUFBK0UsdUNBQXVDLEVBQUUsNkRBQTZELDJCQUEyQiwyQkFBMkIsb0JBQW9CLDRCQUE0Qiw2QkFBNkIsd0NBQXdDLG1CQUFtQix1QkFBdUIsRUFBRSxzRUFBc0UseUJBQXlCLEVBQUUsK0VBQStFLHlCQUF5QixFQUFFLHFLQUFxSyxtQkFBbUIsRUFBRSxtcUJBQW1xQix5QkFBeUIsMEJBQTBCLEVBQUUsK0VBQStFLG9DQUFvQyx1QkFBdUIsRUFBRSx1RkFBdUYsd0JBQXdCLEVBQUUsOEdBQThHLHdCQUF3QixFQUFFLHlEQUF5RCxvQ0FBb0MsbUJBQW1CLGdDQUFnQyxpQ0FBaUMsa0NBQWtDLEVBQUUsaUVBQWlFLHdCQUF3QixzQkFBc0IsRUFBRSwyRUFBMkUseUJBQXlCLDBCQUEwQixFQUFFLGtEQUFrRCxzQkFBc0IsRUFBRSxxRUFBcUUsb0JBQW9CLEVBQUUscUdBQXFHLDJDQUEyQywyQkFBMkIsOEJBQThCLDZCQUE2Qiw2QkFBNkIsdUNBQXVDLHdDQUF3Qyx5Q0FBeUMseUNBQXlDLGdDQUFnQyxnQ0FBZ0MsK0JBQStCLCtCQUErQix3QkFBd0IsdUNBQXVDLHVDQUF1QyxFQUFFLG1JQUFtSSwyQkFBMkIsRUFBRSwySUFBMkksNkJBQTZCLEVBQUUsK0ZBQStGLDJCQUEyQixFQUFFLHNGQUFzRixvQ0FBb0MseUJBQXlCLDBCQUEwQix5QkFBeUIsRUFBRSx5RUFBeUUscUJBQXFCLDZCQUE2Qiw2QkFBNkIsc0JBQXNCLDRCQUE0QiwyQkFBMkIsMkJBQTJCLEVBQUUsaUdBQWlHLCtCQUErQiwrQkFBK0Isd0JBQXdCLG9DQUFvQyxxQ0FBcUMsc0NBQXNDLDJCQUEyQixFQUFFLDRFQUE0RSx5Q0FBeUMsNEJBQTRCLHVCQUF1QixFQUFFLG9FQUFvRSx5Q0FBeUMsdUJBQXVCLDRCQUE0QixFQUFFLG9HQUFvRywyQ0FBMkMsMkJBQTJCLDBCQUEwQiwrSUFBK0ksNkJBQTZCLDZCQUE2QiwwQkFBMEIsRUFBRSwyRkFBMkYsMEJBQTBCLDBCQUEwQixFQUFFLDJGQUEyRiwyQkFBMkIsNEJBQTRCLEVBQUUsaUZBQWlGLDJCQUEyQixFQUFFLG9GQUFvRixxQkFBcUIsd0JBQXdCLEVBQUUsNENBQTRDLG9DQUFvQyx1Q0FBdUMsbUJBQW1CLHNCQUFzQixFQUFFLHFEQUFxRCwwQkFBMEIsRUFBRSxrRUFBa0Usa0JBQWtCLG1CQUFtQixFQUFFLGtGQUFrRixzQkFBc0IsaUJBQWlCLGFBQWEsZUFBZSxnQkFBZ0IsY0FBYyxFQUFFLGdHQUFnRyx1Q0FBdUMsb0JBQW9CLEVBQUUsOEZBQThGLHNCQUFzQixFQUFFLDhEQUE4RCxvQkFBb0IsRUFBRSw0Q0FBNEMsZ0NBQWdDLEVBQUUsa01BQWtNLG9DQUFvQyxFQUFFLHdPQUF3TyxrQ0FBa0MsRUFBRSw0T0FBNE8sb0NBQW9DLEVBQUUsOE9BQThPLHFDQUFxQyxFQUFFLDBPQUEwTyxtQ0FBbUMsRUFBRSx1RUFBdUUsK0NBQStDLEVBQUUsNkZBQTZGLGtEQUFrRCxFQUFFLDBIQUEwSCxpREFBaUQsRUFBRSx5RUFBeUUsK0NBQStDLEVBQUUseUVBQXlFLCtDQUErQyxFQUFFLHlFQUF5RSwrQ0FBK0MsRUFBRSx5RUFBeUUsK0NBQStDLEVBQUUsZ0hBQWdILHFDQUFxQyxFQUFFLGdMQUFnTCx1Q0FBdUMsRUFBRSxvSEFBb0gsdUNBQXVDLEVBQUUsb0xBQW9MLHlDQUF5QyxFQUFFLHNIQUFzSCx3Q0FBd0MsRUFBRSxzTEFBc0wsMENBQTBDLEVBQUUsa0hBQWtILHNDQUFzQyxFQUFFLGtMQUFrTCx3Q0FBd0MsRUFBRSxtRkFBbUYseUJBQXlCLGlCQUFpQixrQkFBa0IsbUJBQW1CLGtCQUFrQixnQ0FBZ0MsRUFBRSwyQ0FBMkMsbUJBQW1CLEVBQUUsNENBQTRDLDBCQUEwQixFQUFFLDJEQUEyRCxvQkFBb0IsbUJBQW1CLEVBQUUsMkdBQTJHLDBCQUEwQix5QkFBeUIsK0JBQStCLCtCQUErQixtQkFBbUIsZ0NBQWdDLEVBQUUsNENBQTRDLGlCQUFpQixFQUFFLDBFQUEwRSxxQkFBcUIsc0JBQXNCLEVBQUUsMkNBQTJDLGdDQUFnQyxFQUFFLGtFQUFrRSxxQkFBcUIsc0JBQXNCLEVBQUUsbUVBQW1FLDhCQUE4QixxQkFBcUIsRUFBRSxtRUFBbUUsd0JBQXdCLHFCQUFxQixFQUFFLDJFQUEyRSxvQ0FBb0MsRUFBRSxpRUFBaUUsMkJBQTJCLEVBQUUsMEVBQTBFLGtDQUFrQyxFQUFFLDhEQUE4RCx3QkFBd0IsRUFBRSw2REFBNkQsK0JBQStCLCtCQUErQiwrQkFBK0IsOEJBQThCLGdCQUFnQixtQkFBbUIsaUJBQWlCLGtCQUFrQixFQUFFLG91QkFBb3VCLHdCQUF3QixFQUFFLGtWQUFrVix3QkFBd0IsRUFBRSxpREFBaUQsdUJBQXVCLEVBQUUsdURBQXVELHlCQUF5QixFQUFFLHNEQUFzRCxnQ0FBZ0MsbUJBQW1CLHlCQUF5QixFQUFFLDZJQUE2SSwyQkFBMkIsRUFBRSx3SkFBd0osc0JBQXNCLHNCQUFzQixFQUFFLHNGQUFzRixzQkFBc0IsRUFBRSxnREFBZ0QsMEJBQTBCLDBCQUEwQix1QkFBdUIscUJBQXFCLEVBQUUsNEVBQTRFLHNCQUFzQixFQUFFLDhFQUE4RSx3QkFBd0Isc0JBQXNCLHNCQUFzQixFQUFFLHNGQUFzRix3QkFBd0IsRUFBRSxrRUFBa0UseUJBQXlCLEVBQUUseUVBQXlFLHNCQUFzQixFQUFFLHFEQUFxRCwwQkFBMEIseUJBQXlCLCtCQUErQiwrQkFBK0IsbUJBQW1CLDBCQUEwQixtQkFBbUIsaUJBQWlCLEVBQUUsNkVBQTZFLHdCQUF3QiwwQkFBMEIsMEJBQTBCLEVBQUUsd0dBQXdHLGtCQUFrQixFQUFFLDJFQUEyRSx1QkFBdUIsb0JBQW9CLEVBQUUsaURBQWlELDJEQUEyRCxFQUFFLDJEQUEyRCxvQ0FBb0MsOENBQThDLHNDQUFzQyxFQUFFLHdDQUF3QyxnQ0FBZ0MsRUFBRSx5Q0FBeUMseUJBQXlCLHVCQUF1QixFQUFFLDREQUE0RCxxQ0FBcUMscUNBQXFDLDJDQUEyQywyQ0FBMkMsb0RBQW9ELG9EQUFvRCxrREFBa0Qsa0RBQWtELEVBQUUsNkJBQTZCLFVBQVUsc0NBQXNDLHNDQUFzQyxFQUFFLFFBQVEsd0NBQXdDLHdDQUF3QyxFQUFFLEVBQUUscUJBQXFCLFVBQVUsc0NBQXNDLHNDQUFzQyxFQUFFLFFBQVEsd0NBQXdDLHdDQUF3QyxFQUFFLEVBQUUsNERBQTRELHlCQUF5Qix3QkFBd0IsRUFBRSw0Q0FBNEMsdUNBQXVDLEVBQUUsK0NBQStDLG9DQUFvQyxFQUFFLHVGQUF1RixnQ0FBZ0MsRUFBRSx5R0FBeUcsa0NBQWtDLEVBQUUsMENBQTBDLDBCQUEwQixnQ0FBZ0MsMEJBQTBCLHVDQUF1Qyx1QkFBdUIsc0JBQXNCLDJJQUEySSwwQkFBMEIseUJBQXlCLHVCQUF1QixFQUFFLGdEQUFnRCxxQkFBcUIsRUFBRSxpREFBaUQseUJBQXlCLEVBQUUsMENBQTBDLHVCQUF1Qix3QkFBd0IsdUJBQXVCLDBCQUEwQixFQUFFLDJDQUEyQyxvQkFBb0IsRUFBRSx1REFBdUQsaURBQWlELEVBQUUsc0RBQXNELDBCQUEwQix5QkFBeUIsK0JBQStCLCtCQUErQixtQkFBbUIsRUFBRSx3Q0FBd0MsZ0NBQWdDLGdDQUFnQywyQkFBMkIseUJBQXlCLEVBQUUsMkRBQTJELDBCQUEwQiw0QkFBNEIsb0JBQW9CLDJCQUEyQixFQUFFLG9GQUFvRixrQ0FBa0Msb0JBQW9CLHlCQUF5QiwrQkFBK0Isc0JBQXNCLG9CQUFvQiwyQkFBMkIsb0NBQW9DLDhCQUE4QixvQ0FBb0Msd0NBQXdDLHdDQUF3Qyx1Q0FBdUMsRUFBRSxpRkFBaUYsb0NBQW9DLDRCQUE0Qiw0QkFBNEIsZ0NBQWdDLEVBQUUsOERBQThELHdDQUF3QyxFQUFFLHlFQUF5RSx3QkFBd0IsRUFBRSwwREFBMEQseUJBQXlCLEVBQUUsMkRBQTJELHVCQUF1Qix3QkFBd0IsRUFBRSwrQ0FBK0MsZ0NBQWdDLG1CQUFtQiw4QkFBOEIsNEJBQTRCLEVBQUUsME1BQTBNLHFCQUFxQixFQUFFLCtFQUErRSxrQ0FBa0MscUJBQXFCLHdCQUF3Qiw2SUFBNkkscUJBQXFCLEVBQUUsNEVBQTRFLHVCQUF1QixFQUFFLHNHQUFzRyx1QkFBdUIscUJBQXFCLEVBQUUsK0hBQStILHdCQUF3QixFQUFFLDZFQUE2RSxrQ0FBa0MscUJBQXFCLGdDQUFnQyxFQUFFLGlGQUFpRix5QkFBeUIscUJBQXFCLEVBQUUsZ0VBQWdFLHNCQUFzQixFQUFFLGdHQUFnRyx1QkFBdUIsRUFBRSw2Q0FBNkMsd0JBQXdCLDBCQUEwQixFQUFFLGdFQUFnRSx5QkFBeUIsRUFBRSw4SkFBOEosdUJBQXVCLEVBQUUscUZBQXFGLGtCQUFrQixtQkFBbUIsMEJBQTBCLHFEQUFxRCxxREFBcUQsZ0NBQWdDLEVBQUUsb0ZBQW9GLGVBQWUsaUJBQWlCLGlCQUFpQixrQkFBa0Isd0JBQXdCLHVCQUF1Qix5QkFBeUIsZ0NBQWdDLEVBQUUsK0RBQStELG1CQUFtQixrQkFBa0IsZ0NBQWdDLGdDQUFnQyw0QkFBNEIsRUFBRSwwRUFBMEUsb0JBQW9CLHFCQUFxQixrQ0FBa0MsOEJBQThCLGlDQUFpQyxFQUFFLDJFQUEyRSxnQ0FBZ0MsRUFBRSxzRkFBc0YsNEJBQTRCLG9CQUFvQixFQUFFLDBEQUEwRCxnQ0FBZ0MseUJBQXlCLEVBQUUsa0VBQWtFLG9CQUFvQixxQkFBcUIsRUFBRSxtRUFBbUUsa0NBQWtDLEVBQUUseUVBQXlFLGtDQUFrQyxFQUFFLHNEQUFzRCx5QkFBeUIsRUFBRSwyQ0FBMkMsbUJBQW1CLEVBQUUsZ0VBQWdFLDhCQUE4QiwyQkFBMkIsRUFBRSxnRUFBZ0Usc0JBQXNCLEVBQUUsOERBQThELGlIQUFpSCxtRkFBbUYsRUFBRSw4REFBOEQsbUhBQW1ILGlGQUFpRixFQUFFLGtFQUFrRSw0QkFBNEIscUJBQXFCLG9CQUFvQixnQ0FBZ0MsMEJBQTBCLDREQUE0RCw0REFBNEQsRUFBRSx5RUFBeUUsMkJBQTJCLEVBQUUsMkVBQTJFLDJCQUEyQixFQUFFLDJEQUEyRCw0QkFBNEIscUJBQXFCLDJCQUEyQixFQUFFLGlFQUFpRSwwQkFBMEIsb0JBQW9CLHFCQUFxQiw0QkFBNEIsa0NBQWtDLDREQUE0RCw0REFBNEQsRUFBRSxxRUFBcUUsMEJBQTBCLDBCQUEwQixvQkFBb0IsRUFBRSwyRUFBMkUsa0NBQWtDLHFCQUFxQixFQUFFLHFFQUFxRSxzQkFBc0IsRUFBRSxtRkFBbUYseUJBQXlCLEVBQUUsa0ZBQWtGLDBCQUEwQixFQUFFLGtFQUFrRSwwREFBMEQsMERBQTBELEVBQUUscUNBQXFDLGdDQUFnQyxnQ0FBZ0MsRUFBRSwrSUFBK0kscUJBQXFCLDZCQUE2QixFQUFFLHFEQUFxRCxrQ0FBa0MseUNBQXlDLHlDQUF5QyxxQkFBcUIsd0JBQXdCLHlCQUF5Qiw2SUFBNkksMkJBQTJCLDBCQUEwQixFQUFFLHdGQUF3Rix1QkFBdUIsc0JBQXNCLDZCQUE2QixFQUFFLG1HQUFtRyw4QkFBOEIsNEJBQTRCLEVBQUUsNkxBQTZMLHNDQUFzQyxFQUFFLDJHQUEyRyw4QkFBOEIsRUFBRSxrRkFBa0YscUJBQXFCLGtDQUFrQyxxQkFBcUIsRUFBRSwyRkFBMkYsNkJBQTZCLEVBQUUsdUNBQXVDLGdDQUFnQyxxQkFBcUIseUJBQXlCLG1CQUFtQix3QkFBd0IsMEJBQTBCLDRCQUE0QixxQ0FBcUMsNkJBQTZCLEVBQUUsMkRBQTJELG1CQUFtQixFQUFFLG9EQUFvRCx5QkFBeUIsMEJBQTBCLEVBQUUsbUVBQW1FLGtDQUFrQyxFQUFFLGtJQUFrSSxxQkFBcUIsRUFBRSw2SEFBNkgsZ0NBQWdDLHlCQUF5QixrQkFBa0IsRUFBRSxrS0FBa0ssMEJBQTBCLDJCQUEyQixFQUFFLGlKQUFpSix5QkFBeUIsRUFBRSw2SUFBNkksMEJBQTBCLEVBQUUsMklBQTJJLDhCQUE4QixFQUFFLHVJQUF1SSxxQkFBcUIsc0JBQXNCLEVBQUUscUpBQXFKLHVCQUF1QixFQUFFLDBHQUEwRyxzQkFBc0IsRUFBRSxvQ0FBb0MsMEhBQTBILGtCQUFrQixzQkFBc0IscUJBQXFCLHlCQUF5QiwwQkFBMEIsMkJBQTJCLDJCQUEyQix1RkFBdUYseUNBQXlDLEVBQUUsdURBQXVELDBCQUEwQixFQUFFLGtEQUFrRCwwQkFBMEIsRUFBRSwrQ0FBK0MsMEJBQTBCLEVBQUUsa0RBQWtELDBCQUEwQixFQUFFLGlEQUFpRCwwQkFBMEIsRUFBRSw0REFBNEQsMEJBQTBCLEVBQUUsa0VBQWtFLDBCQUEwQixFQUFFLDhEQUE4RCwwQkFBMEIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsa0RBQWtELDBCQUEwQixFQUFFLG1EQUFtRCwwQkFBMEIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsZ0RBQWdELDBCQUEwQixFQUFFLGlEQUFpRCwwQkFBMEIsRUFBRSwrQ0FBK0MsMEJBQTBCLEVBQUUsZ0RBQWdELDBCQUEwQixFQUFFLGdEQUFnRCwwQkFBMEIsRUFBRSxvREFBb0QsMEJBQTBCLEVBQUUscURBQXFELDBCQUEwQixFQUFFLCtDQUErQywwQkFBMEIsRUFBRSxrREFBa0QsMEJBQTBCLEVBQUUsaURBQWlELDBCQUEwQixFQUFFLGdEQUFnRCwwQkFBMEIsRUFBRSxpREFBaUQsMEJBQTBCLEVBQUUseURBQXlELDBCQUEwQixFQUFFLGdEQUFnRCwwQkFBMEIsRUFBRSxnREFBZ0QsMEJBQTBCLEVBQUUsbURBQW1ELDBCQUEwQixFQUFFLG9EQUFvRCwwQkFBMEIsRUFBRSxnREFBZ0QsMEJBQTBCLEVBQUUsb0RBQW9ELDBCQUEwQixFQUFFLGlEQUFpRCwwQkFBMEIsRUFBRSxnREFBZ0QsMEJBQTBCLEVBQUUsZ0RBQWdELDBCQUEwQixFQUFFLHVEQUF1RCwwQkFBMEIsRUFBRSxpREFBaUQsMEJBQTBCLEVBQUUsK0NBQStDLDBCQUEwQixFQUFFLGlEQUFpRCwwQkFBMEIsRUFBRSxnREFBZ0QsMEJBQTBCLEVBQUUsb0RBQW9ELDBCQUEwQixFQUFFLDREQUE0RCwwQkFBMEIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsaURBQWlELDBCQUEwQixFQUFFLGdEQUFnRCwwQkFBMEIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHVEQUF1RCwwQkFBMEIsRUFBRSxvREFBb0QsMEJBQTBCLEVBQUUsZ0RBQWdELDBCQUEwQixFQUFFLHVEQUF1RCwwQkFBMEIsRUFBRSw4REFBOEQsMEJBQTBCLEVBQUUscURBQXFELDBCQUEwQixFQUFFLHFLQUFxSyxnQ0FBZ0Msd0JBQXdCLHlCQUF5QixFQUFFLHNNQUFzTSx3QkFBd0Isc0JBQXNCLEVBQUUscURBQXFELHFCQUFxQixFQUFFLHVFQUF1RSw0QkFBNEIsRUFBRSwyRUFBMkUsMEJBQTBCLEVBQUUsdUVBQXVFLDBCQUEwQixFQUFFLCtFQUErRSwwQkFBMEIsRUFBRSxvREFBb0QsMEJBQTBCLEVBQUUsa0RBQWtELDBCQUEwQixFQUFFLG9EQUFvRCxxQkFBcUIsRUFBRSxrREFBa0QsMEJBQTBCLEVBQUUsbUNBQW1DLHdCQUF3QixFQUFFLHNEQUFzRCx5QkFBeUIsRUFBRSxtUEFBbVAsMEJBQTBCLHVCQUF1QixFQUFFLHVHQUF1RywwQkFBMEIsRUFBRSwwR0FBMEcsMEJBQTBCLDRCQUE0QixFQUFFLHFkQUFxZCx5QkFBeUIsMEJBQTBCLEVBQUUsd0hBQXdILHVCQUF1QiwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLHdCQUF3QixFQUFFLG1PQUFtTyxvQ0FBb0Msb0NBQW9DLDZCQUE2QixFQUFFLDByQkFBMHJCLDZCQUE2QiwrQkFBK0IsRUFBRSwrVEFBK1QsNkJBQTZCLCtCQUErQixFQUFFLDJEQUEyRCwyQkFBMkIsMEJBQTBCLEVBQUUsZ0VBQWdFLDRCQUE0QixFQUFFLGlLQUFpSyw0QkFBNEIsMEJBQTBCLEVBQUUsZ0VBQWdFLDJCQUEyQixFQUFFLHlIQUF5SCx1QkFBdUIsMEJBQTBCLEVBQUUsOEVBQThFLHVDQUF1Qyx3QkFBd0IsRUFBRSxzRUFBc0UsdUNBQXVDLHdCQUF3QixFQUFFLGlGQUFpRix1QkFBdUIsRUFBRSxrREFBa0QsaUJBQWlCLDhVQUE4VSxFQUFFLG9CQUFvQixFQUFFLDhDQUE4QywyQ0FBMkMsRUFBRSx5REFBeUQsa0JBQWtCLHNCQUFzQixFQUFFLHlHQUF5RyxvREFBb0QscUJBQXFCLG1CQUFtQixzQkFBc0IseUJBQXlCLDJCQUEyQixhQUFhLEVBQUUseUhBQXlILGVBQWUsRUFBRSx5SEFBeUgsY0FBYyxFQUFFLHFFQUFxRSxnQ0FBZ0MsdUJBQXVCLEVBQUUsdUdBQXVHLHNCQUFzQixFQUFFLHVHQUF1RyxxQkFBcUIsRUFBRSxtQ0FBbUMsNEJBQTRCLEVBQUUsNENBQTRDLDRCQUE0QixFQUFFLGdEQUFnRCx1QkFBdUIsRUFBRSw4RUFBOEUsMkJBQTJCLHdCQUF3QixFQUFFLG9GQUFvRixtQkFBbUIsRUFBRSx5RUFBeUUsdUJBQXVCLHdCQUF3QixFQUFFLHFHQUFxRyx5QkFBeUIsRUFBRSxzREFBc0QsZ0NBQWdDLG1CQUFtQixFQUFFLGtGQUFrRix5QkFBeUIsRUFBRSxvQ0FBb0MsZ0NBQWdDLEVBQUUsa0RBQWtELHNDQUFzQyxFQUFFLHVOQUF1Tix5QkFBeUIsRUFBRSxvRUFBb0UsNEJBQTRCLHlCQUF5QixFQUFFLHlHQUF5RyxxQ0FBcUMsc0JBQXNCLEVBQUUsMkdBQTJHLHdDQUF3Qyx3Q0FBd0MsRUFBRSwyQ0FBMkMsbUJBQW1CLEVBQUUscUtBQXFLLG1CQUFtQixFQUFFLDBDQUEwQyx1Q0FBdUMsRUFBRSxvREFBb0QsNEJBQTRCLEVBQUUsb0VBQW9FLGtDQUFrQyx5Q0FBeUMsRUFBRSxzSEFBc0gsZ0NBQWdDLHFCQUFxQixFQUFFLDJEQUEyRCxtQkFBbUIsaUJBQWlCLEVBQUUsMkNBQTJDLGdDQUFnQyxFQUFFLHVEQUF1RCxpREFBaUQsRUFBRSxzREFBc0QsZ0NBQWdDLGdDQUFnQyxxQkFBcUIsb0JBQW9CLEVBQUUseUVBQXlFLCtDQUErQyxFQUFFLHlFQUF5RSwrQ0FBK0MsRUFBRSx5RUFBeUUsK0NBQStDLEVBQUUseUVBQXlFLCtDQUErQyxFQUFFLGlEQUFpRCx1Q0FBdUMsRUFBRSxrREFBa0Qsb0NBQW9DLEVBQUUsa0VBQWtFLGdDQUFnQyxxQkFBcUIsRUFBRSxxREFBcUQsZ0NBQWdDLEVBQUUscUZBQXFGLGdDQUFnQyxFQUFFLG9GQUFvRixnQ0FBZ0MsRUFBRSxLOzs7Ozs7Ozs7OztBQ0FwaXRGLHFDQUFxQyxjQUFjLGtDQUFrQywyQ0FBMkMsY0FBYyx3dFZBQXd0Vix3QkFBd0IsdUJBQXVCLEVBQUUsc0JBQXNCLHdDQUF3Qyw0QkFBNEIsZ0JBQWdCLHlJQUF5SSxxQkFBcUIsb0JBQW9CLG1CQUFtQixFQUFFLHFRQUFxUSxnQ0FBZ0MsRUFBRSw2Q0FBNkMsb0NBQW9DLDZCQUE2QixrQkFBa0IsdUJBQXVCLHVCQUF1QixFQUFFLDZEQUE2RCw4QkFBOEIsdUNBQXVDLHFDQUFxQyw0QkFBNEIsRUFBRSw0QkFBNEIsdUJBQXVCLEVBQUUsd0JBQXdCLHFDQUFxQyxxQ0FBcUMsRUFBRSx5RkFBeUYsc0JBQXNCLHVDQUF1Qyx1Q0FBdUMsRUFBRSw4QkFBOEIsc0NBQXNDLHNDQUFzQyxFQUFFLHFEQUFxRCx5QkFBeUIsRUFBRSxxREFBcUQsMEJBQTBCLEVBQUUscURBQXFELHlCQUF5QixFQUFFLHFEQUFxRCwwQkFBMEIsRUFBRSxxREFBcUQseUJBQXlCLEVBQUUscURBQXFELDBCQUEwQixFQUFFLHFEQUFxRCx5QkFBeUIsRUFBRSxxREFBcUQsMEJBQTBCLEVBQUUscURBQXFELHlCQUF5QixFQUFFLHFEQUFxRCwwQkFBMEIsRUFBRSxxREFBcUQseUJBQXlCLEVBQUUscURBQXFELDBCQUEwQixFQUFFLHFEQUFxRCx5QkFBeUIsRUFBRSxxREFBcUQsMEJBQTBCLEVBQUUscURBQXFELDBCQUEwQixFQUFFLHFEQUFxRCwyQkFBMkIsRUFBRSxxREFBcUQsMEJBQTBCLEVBQUUscURBQXFELDJCQUEyQixFQUFFLHFEQUFxRCwwQkFBMEIsRUFBRSxxREFBcUQsMkJBQTJCLEVBQUUscURBQXFELDBCQUEwQixFQUFFLHFEQUFxRCwyQkFBMkIsRUFBRSxxREFBcUQsMEJBQTBCLEVBQUUscURBQXFELDJCQUEyQixFQUFFLHFEQUFxRCwwQkFBMEIsRUFBRSxxREFBcUQsMkJBQTJCLEVBQUUscURBQXFELDBCQUEwQixFQUFFLHFEQUFxRCwyQkFBMkIsRUFBRSxxREFBcUQsMEJBQTBCLEVBQUUscURBQXFELDJCQUEyQixFQUFFLHFEQUFxRCwwQkFBMEIsRUFBRSxxREFBcUQsMkJBQTJCLEVBQUUscURBQXFELDBCQUEwQixFQUFFLHFEQUFxRCwyQkFBMkIsRUFBRSxxREFBcUQsMEJBQTBCLEVBQUUscURBQXFELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDRCQUE0QixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCw0QkFBNEIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsNEJBQTRCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDRCQUE0QixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCw0QkFBNEIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNE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RUFBRSx1REFBdUQsMkJBQTJCLEVBQUUsdURBQXVELDBCQUEwQixFQUFFLHVEQUF1RCwyQkFBMkIsRUFBRSx1REFBdUQsMEJBQTBCLEVBQUUsdURBQXVELDJCQUEyQixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSwwQ0FBMEMsNEJBQTRCLDZCQUE2QixFQUFFLGdIQUFnSCwyQkFBMkIsMkJBQTJCLG9CQUFvQixnQ0FBZ0MsaUNBQWlDLGtDQUFrQyxzQkFBc0IsRUFBRSxvSUFBb0ksd0JBQXdCLEVBQUUsd0pBQXdKLG9CQUFvQixFQUFFLGtOQUFrTix5QkFBeUIsRUFBRSxpQ0FBaUMsbURBQW1ELEVBQUUsMERBQTBELHdCQUF3QixFQUFFLHlDQUF5QywwQ0FBMEMsRUFBRSx1SkFBdUoscUNBQXFDLEVBQUUsbUpBQW1KLHNDQUFzQyxFQUFFLDBEQUEwRCx5QkFBeUIsRUFBRSx5Q0FBeUMseUNBQXlDLEVBQUUsdUpBQXVKLHFDQUFxQyxFQUFFLG1KQUFtSixzQ0FBc0MsRUFBRSwrQ0FBK0MseUJBQXlCLEVBQUUsa0RBQWtELHFCQUFxQixFQUFFLG9EQUFvRCxxQkFBcUIsRUFBRSwrQ0FBK0Msb0NBQW9DLHlCQUF5Qix3QkFBd0IseUJBQXlCLDhDQUE4QyxzQ0FBc0MsRUFBRSx5REFBeUQsZ0NBQWdDLGdEQUFnRCx3Q0FBd0MsRUFBRSw2WEFBNlgsOEJBQThCLGlDQUFpQywyQkFBMkIseUJBQXlCLG1CQUFtQiwwQkFBMEIsc0JBQXNCLHVDQUF1QyxFQUFFLDZhQUE2YSx5Q0FBeUMsc0JBQXNCLEVBQUUsMmlCQUEyaUIsbUNBQW1DLEVBQUUscWZBQXFmLG1DQUFtQyxFQUFFLDZnQkFBNmdCLG1DQUFtQyxFQUFFLG1oQkFBbWhCLG1DQUFtQyxFQUFFLHVkQUF1ZCxtQ0FBbUMsRUFBRSwrYkFBK2IseUNBQXlDLEVBQUUsK2JBQStiLG1DQUFtQyxFQUFFLCtEQUErRCwwQkFBMEIsNkJBQTZCLDZCQUE2QixFQUFFLGdFQUFnRSxpQkFBaUIsRUFBRSxtREFBbUQsOEJBQThCLGlDQUFpQywyQkFBMkIseUJBQXlCLG1CQUFtQiwwQkFBMEIsc0JBQXNCLHVDQUF1QyxFQUFFLDJEQUEyRCx5Q0FBeUMsc0JBQXNCLEVBQUUsZ0ZBQWdGLG1DQUFtQyxFQUFFLHVFQUF1RSxtQ0FBbUMsRUFBRSwyRUFBMkUsbUNBQW1DLEVBQUUsNEVBQTRFLG1DQUFtQyxFQUFFLGtFQUFrRSxtQ0FBbUMsRUFBRSw4REFBOEQseUNBQXlDLEVBQUUsOERBQThELG1DQUFtQyxFQUFFLG1DQUFtQyw2QkFBNkIsaUNBQWlDLHVCQUF1QixzQkFBc0IsMENBQTBDLHVDQUF1QyxFQUFFLGdEQUFnRCxxQ0FBcUMsRUFBRSwrQ0FBK0Msc0NBQXNDLEVBQUUsdUNBQXVDLG1CQUFtQixFQUFFLGdDQUFnQywwQkFBMEIsNEJBQTRCLHNCQUFzQixFQUFFLHFEQUFxRCw4QkFBOEIsRUFBRSw4Q0FBOEMsaUNBQWlDLEVBQUUsbURBQW1ELHNDQUFzQyxFQUFFLHdFQUF3RSwyQkFBMkIsRUFBRSxvREFBb0QscUNBQXFDLEVBQUUseUVBQXlFLDBCQUEwQixFQUFFLHNDQUFzQyxnQ0FBZ0MsRUFBRSx5Q0FBeUMsd0JBQXdCLEVBQUUsOERBQThELHVCQUF1QixvQkFBb0IsRUFBRSxxRkFBcUYsMEJBQTBCLDRCQUE0Qix5QkFBeUIsMEJBQTBCLHNCQUFzQixFQUFFLHFJQUFxSSxrQ0FBa0MsRUFBRSxpS0FBaUssOEJBQThCLEVBQUUsd0lBQXdJLDBCQUEwQixFQUFFLGtxQkFBa3FCLGdDQUFnQyxFQUFFLCtDQUErQyx5QkFBeUIsRUFBRSw4Q0FBOEMseUJBQXlCLEVBQUUsaUNBQWlDLHdCQUF3Qix5QkFBeUIsMEJBQTBCLG9DQUFvQyx5QkFBeUIsMEJBQTBCLEVBQUUscUNBQXFDLG1CQUFtQiwyQkFBMkIsbUJBQW1CLHNCQUFzQixFQUFFLDJGQUEyRixtQkFBbUIsRUFBRSx3Q0FBd0MsbUJBQW1CLDJCQUEyQixtQkFBbUIsRUFBRSx5Q0FBeUMsbUJBQW1CLEVBQUUsc2hCQUFzaEIsZ0NBQWdDLHVCQUF1QixFQUFFLCtDQUErQyxrQkFBa0IsRUFBRSxpQ0FBaUMsdUJBQXVCLHlCQUF5Qiw4SEFBOEgsOEhBQThILG1CQUFtQixpQkFBaUIsRUFBRSxpREFBaUQsd0JBQXdCLDJCQUEyQix3QkFBd0Isb0JBQW9CLEVBQUUsMERBQTBELGtDQUFrQyxFQUFFLDREQUE0RCxxQkFBcUIsRUFBRSx3REFBd0QseUJBQXlCLEVBQUUsd0RBQXdELDBCQUEwQiwyQkFBMkIsd0JBQXdCLEVBQUUsNERBQTRELDJCQUEyQixFQUFFLHNEQUFzRCxxQkFBcUIsRUFBRSwrREFBK0QsdVNBQXVTLEVBQUUsaUVBQWlFLG9CQUFvQiwyQkFBMkIsRUFBRSxxQ0FBcUMsdUJBQXVCLHlCQUF5Qiw4SEFBOEgsOEhBQThILG1CQUFtQixnQ0FBZ0MsaUNBQWlDLHVCQUF1QixzQkFBc0IsMENBQTBDLDhCQUE4Qix3QkFBd0IsZ0JBQWdCLHNCQUFzQiwwQ0FBMEMsMENBQTBDLEVBQUUsc0ZBQXNGLHFCQUFxQixrQkFBa0IsbUJBQW1CLEVBQUUsMERBQTBELDBCQUEwQixzQkFBc0IsRUFBRSx1Q0FBdUMsdUJBQXVCLHVCQUF1QixrQkFBa0IsMkJBQTJCLDJCQUEyQixvQkFBb0IsRUFBRSxpREFBaUQsNkJBQTZCLDZCQUE2QixzQkFBc0IsNkNBQTZDLHFCQUFxQiw0QkFBNEIsMkJBQTJCLDJCQUEyQixrQ0FBa0MsbUNBQW1DLG9DQUFvQyxpQ0FBaUMsa0NBQWtDLHdDQUF3Qyw0QkFBNEIsK0JBQStCLCtCQUErQixFQUFFLHFDQUFxQyxxQkFBcUIsRUFBRSxxREFBcUQseUJBQXlCLHNCQUFzQixFQUFFLGdGQUFnRix5QkFBeUIsRUFBRSwrRUFBK0UsNEJBQTRCLEVBQUUsd0dBQXdHLG1DQUFtQyxFQUFFLG9HQUFvRyx5QkFBeUIsRUFBRSxtREFBbUQsb0JBQW9CLEVBQUUscURBQXFELHVCQUF1Qix3QkFBd0IsRUFBRSxxREFBcUQsa0JBQWtCLEVBQUUseURBQXlELDBCQUEwQixrQkFBa0IsbUJBQW1CLDBCQUEwQixFQUFFLCtHQUErRyx3QkFBd0IsRUFBRSx1REFBdUQsb0JBQW9CLEVBQUUsdURBQXVELG1CQUFtQiwyQkFBMkIsMkJBQTJCLG9CQUFvQixnQ0FBZ0MsaUNBQWlDLGtDQUFrQyxFQUFFLHlIQUF5SCx5QkFBeUIsNkJBQTZCLDZCQUE2QixzQkFBc0IsRUFBRSw0RUFBNEUsdUNBQXVDLEVBQUUsMERBQTBELDJCQUEyQiwyQkFBMkIsb0JBQW9CLDRCQUE0Qiw2QkFBNkIsd0NBQXdDLG1CQUFtQix3QkFBd0IsRUFBRSxtRUFBbUUseUJBQXlCLGlDQUFpQyxpQ0FBaUMsaUNBQWlDLHNDQUFzQyxrQkFBa0IsdUJBQXVCLDZCQUE2QiwyQkFBMkIsa0JBQWtCLG1CQUFtQixrQ0FBa0MsRUFBRSw0RUFBNEUsMEJBQTBCLEVBQUUsK0pBQStKLG1CQUFtQixFQUFFLGlwQkFBaXBCLHlCQUF5QiwwQkFBMEIsRUFBRSw0RUFBNEUsb0NBQW9DLHVCQUF1QixFQUFFLG9GQUFvRix3QkFBd0IsRUFBRSwyR0FBMkcsd0JBQXdCLEVBQUUsc0RBQXNELG9DQUFvQyxtQkFBbUIsZ0NBQWdDLGlDQUFpQyxrQ0FBa0MsRUFBRSw4REFBOEQsd0JBQXdCLHNCQUFzQixFQUFFLHdFQUF3RSx5QkFBeUIsMEJBQTBCLEVBQUUsK0NBQStDLHNCQUFzQixFQUFFLGtFQUFrRSxvQkFBb0IsRUFBRSxrR0FBa0cscUNBQXFDLDJCQUEyQiw4QkFBOEIsNkJBQTZCLDZCQUE2Qix1Q0FBdUMsd0NBQXdDLHlDQUF5Qyx5Q0FBeUMsZ0NBQWdDLGdDQUFnQywrQkFBK0IsK0JBQStCLHdCQUF3Qix1Q0FBdUMsdUNBQXVDLEVBQUUsZ0lBQWdJLDJCQUEyQixFQUFFLHdJQUF3SSw2QkFBNkIsRUFBRSw0RkFBNEYsMkJBQTJCLEVBQUUsbUZBQW1GLG9DQUFvQyx5QkFBeUIsMEJBQTBCLHlCQUF5QixFQUFFLHNFQUFzRSxxQkFBcUIsNkJBQTZCLDZCQUE2QixzQkFBc0IsNEJBQTRCLDJCQUEyQiwyQkFBMkIsRUFBRSw4RkFBOEYsK0JBQStCLCtCQUErQix3QkFBd0Isb0NBQW9DLHFDQUFxQyxzQ0FBc0MsMkJBQTJCLEVBQUUseUVBQXlFLHlDQUF5Qyw0QkFBNEIsdUJBQXVCLEVBQUUsaUVBQWlFLHlDQUF5Qyx1QkFBdUIsNkJBQTZCLEVBQUUsaUdBQWlHLHFDQUFxQywyQkFBMkIsMEJBQTBCLDhDQUE4Qyw2QkFBNkIsNkJBQTZCLDBCQUEwQixFQUFFLHdGQUF3RiwwQkFBMEIsMEJBQTBCLEVBQUUsd0ZBQXdGLDJCQUEyQiw0QkFBNEIsRUFBRSw4RUFBOEUsMkJBQTJCLEVBQUUsaUZBQWlGLHFCQUFxQix3QkFBd0IsRUFBRSx5Q0FBeUMsb0NBQW9DLGlDQUFpQyxtQkFBbUIsc0JBQXNCLEVBQUUsa0RBQWtELDBCQUEwQixFQUFFLCtEQUErRCxrQkFBa0IsbUJBQW1CLEVBQUUsK0VBQStFLHNCQUFzQixpQkFBaUIsYUFBYSxlQUFlLGdCQUFnQixjQUFjLEVBQUUsNkZBQTZGLGlDQUFpQyxvQkFBb0IsRUFBRSwyRkFBMkYsc0JBQXNCLEVBQUUsMkRBQTJELG9CQUFvQixFQUFFLHlDQUF5Qyw2QkFBNkIsRUFBRSw0TEFBNEwsb0NBQW9DLEVBQUUsa09BQWtPLGtDQUFrQyxFQUFFLHNPQUFzTyxvQ0FBb0MsRUFBRSx3T0FBd08scUNBQXFDLEVBQUUsb09BQW9PLG1DQUFtQyxFQUFFLG9FQUFvRSxpREFBaUQsRUFBRSwwRkFBMEYsZ0RBQWdELEVBQUUsdUhBQXVILGlEQUFpRCxFQUFFLHNFQUFzRSxpREFBaUQsRUFBRSxzRUFBc0UsaURBQWlELEVBQUUsc0VBQXNFLGlEQUFpRCxFQUFFLHNFQUFzRSxpREFBaUQsRUFBRSwwR0FBMEcscUNBQXFDLEVBQUUsMEtBQTBLLHVDQUF1QyxFQUFFLDhHQUE4Ryx1Q0FBdUMsRUFBRSw4S0FBOEsseUNBQXlDLEVBQUUsZ0hBQWdILHdDQUF3QyxFQUFFLGdMQUFnTCwwQ0FBMEMsRUFBRSw0R0FBNEcsc0NBQXNDLEVBQUUsNEtBQTRLLHdDQUF3QyxFQUFFLDZFQUE2RSx5QkFBeUIsaUJBQWlCLGtCQUFrQixtQkFBbUIsa0JBQWtCLGdDQUFnQyxFQUFFLHdDQUF3QyxtQkFBbUIsRUFBRSx5Q0FBeUMsMEJBQTBCLEVBQUUsd0RBQXdELG9CQUFvQixtQkFBbUIsRUFBRSxxR0FBcUcsdUJBQXVCLHlCQUF5Qiw4SEFBOEgsOEhBQThILG1CQUFtQixnQ0FBZ0MsRUFBRSx5Q0FBeUMsaUJBQWlCLEVBQUUsdUVBQXVFLHFCQUFxQixzQkFBc0IsRUFBRSx3Q0FBd0MsZ0NBQWdDLEVBQUUsK0RBQStELHFCQUFxQixzQkFBc0IsRUFBRSxnRUFBZ0UsOEJBQThCLHFCQUFxQixFQUFFLGdFQUFnRSx3QkFBd0IscUJBQXFCLEVBQUUsd0VBQXdFLG9DQUFvQyxFQUFFLDhEQUE4RCwyQkFBMkIsRUFBRSx1RUFBdUUsK0JBQStCLEVBQUUsMkRBQTJELHdCQUF3QixFQUFFLDBEQUEwRCwrQkFBK0IsK0JBQStCLCtCQUErQiw4QkFBOEIsZ0JBQWdCLG1CQUFtQixpQkFBaUIsa0JBQWtCLEVBQUUsNHNCQUE0c0Isd0JBQXdCLEVBQUUsc1VBQXNVLHdCQUF3QixFQUFFLDhDQUE4Qyx1QkFBdUIsRUFBRSxvREFBb0QseUJBQXlCLEVBQUUsbURBQW1ELDZCQUE2QixtQkFBbUIseUJBQXlCLEVBQUUsdUlBQXVJLDJCQUEyQixFQUFFLGtKQUFrSixzQkFBc0Isc0JBQXNCLEVBQUUsbUZBQW1GLHNCQUFzQixFQUFFLDZDQUE2QywwQkFBMEIsMEJBQTBCLHVCQUF1QixxQkFBcUIsRUFBRSx5RUFBeUUsc0JBQXNCLEVBQUUsMkVBQTJFLHdCQUF3QixzQkFBc0Isc0JBQXNCLEVBQUUsbUZBQW1GLHdCQUF3QixFQUFFLCtEQUErRCwwQkFBMEIsRUFBRSxzRUFBc0Usc0JBQXNCLEVBQUUsa0RBQWtELHVCQUF1Qix5QkFBeUIsOEhBQThILDhIQUE4SCxtQkFBbUIsdUJBQXVCLG9CQUFvQixpQkFBaUIsRUFBRSwwRUFBMEUsd0JBQXdCLDBCQUEwQiwyQkFBMkIsRUFBRSxrR0FBa0csa0JBQWtCLEVBQUUsd0VBQXdFLHVCQUF1QixvQkFBb0IsRUFBRSw4Q0FBOEMsMkNBQTJDLEVBQUUsd0RBQXdELG9DQUFvQyw4Q0FBOEMsc0NBQXNDLEVBQUUsc0NBQXNDLHlCQUF5Qix1QkFBdUIsRUFBRSx5REFBeUQscUNBQXFDLHFDQUFxQywyQ0FBMkMsMkNBQTJDLG9EQUFvRCxvREFBb0Qsa0RBQWtELGtEQUFrRCxFQUFFLDZCQUE2QixVQUFVLHNDQUFzQyxzQ0FBc0MsRUFBRSxRQUFRLHdDQUF3Qyx3Q0FBd0MsRUFBRSxFQUFFLHFCQUFxQixVQUFVLHNDQUFzQyxzQ0FBc0MsRUFBRSxRQUFRLHdDQUF3Qyx3Q0FBd0MsRUFBRSxFQUFFLHlEQUF5RCx5QkFBeUIsd0JBQXdCLEVBQUUseUNBQXlDLHVDQUF1QyxFQUFFLDRDQUE0QyxvQ0FBb0MsRUFBRSx1Q0FBdUMsdUJBQXVCLGdDQUFnQywwQkFBMEIsaUNBQWlDLHVCQUF1QixzQkFBc0IsMENBQTBDLDBCQUEwQix5QkFBeUIsdUJBQXVCLEVBQUUsNkNBQTZDLGlDQUFpQyxFQUFFLDhDQUE4Qyx5QkFBeUIsRUFBRSx1Q0FBdUMsdUJBQXVCLHdCQUF3Qix3QkFBd0IsMkJBQTJCLEVBQUUsd0NBQXdDLG9CQUFvQixFQUFFLG9EQUFvRCxpREFBaUQsRUFBRSxtREFBbUQsdUJBQXVCLHlCQUF5Qiw4SEFBOEgsOEhBQThILG1CQUFtQixFQUFFLHFDQUFxQyxnQ0FBZ0MsZ0NBQWdDLDJCQUEyQix5QkFBeUIsRUFBRSx3REFBd0QsMEJBQTBCLHlCQUF5QixvQkFBb0IsMkJBQTJCLEVBQUUsaUZBQWlGLGtDQUFrQyxvQkFBb0IscUNBQXFDLGlDQUFpQyxzQkFBc0Isb0JBQW9CLDRCQUE0QixvQ0FBb0MsOEJBQThCLG9DQUFvQyx3Q0FBd0Msd0NBQXdDLHVDQUF1QyxFQUFFLDhFQUE4RSxvQ0FBb0MsNEJBQTRCLDRCQUE0QixnQ0FBZ0MsRUFBRSwyREFBMkQsd0NBQXdDLEVBQUUsc0VBQXNFLHdCQUF3QixFQUFFLHVEQUF1RCx5QkFBeUIsRUFBRSx3REFBd0QsdUJBQXVCLHdCQUF3QixFQUFFLDRDQUE0QyxnQ0FBZ0MsbUJBQW1CLDhCQUE4Qiw0QkFBNEIsRUFBRSxvTUFBb00scUJBQXFCLEVBQUUsNEVBQTRFLGtDQUFrQyxxQkFBcUIsd0JBQXdCLDRDQUE0QyxxQkFBcUIsRUFBRSx5RUFBeUUsdUJBQXVCLEVBQUUsbUdBQW1HLHVCQUF1QixxQkFBcUIsRUFBRSw0SEFBNEgsd0JBQXdCLEVBQUUsMEVBQTBFLGtDQUFrQyxxQkFBcUIsZ0NBQWdDLEVBQUUsOEVBQThFLDBCQUEwQixxQkFBcUIsRUFBRSw2REFBNkQsc0JBQXNCLEVBQUUsNkZBQTZGLHVCQUF1QixFQUFFLDBDQUEwQyx3QkFBd0IsMEJBQTBCLEVBQUUsNkRBQTZELHlCQUF5QixFQUFFLHdKQUF3Six3QkFBd0IsRUFBRSxrRkFBa0Ysa0JBQWtCLG1CQUFtQiwwQkFBMEIscURBQXFELHFEQUFxRCxnQ0FBZ0MsRUFBRSxpRkFBaUYsZUFBZSxpQkFBaUIsaUJBQWlCLGtCQUFrQix3QkFBd0IsdUJBQXVCLHlCQUF5QixnQ0FBZ0MsRUFBRSw0REFBNEQsbUJBQW1CLGtCQUFrQiw2QkFBNkIsNkJBQTZCLDRCQUE0QixFQUFFLHVFQUF1RSxvQkFBb0IscUJBQXFCLCtCQUErQiw4QkFBOEIsaUNBQWlDLEVBQUUsd0VBQXdFLGdDQUFnQyxFQUFFLG1GQUFtRix5QkFBeUIsb0JBQW9CLEVBQUUsdURBQXVELGdDQUFnQyx5QkFBeUIsRUFBRSwrREFBK0Qsb0JBQW9CLHFCQUFxQixFQUFFLGdFQUFnRSwrQkFBK0IsRUFBRSxzRUFBc0Usa0NBQWtDLEVBQUUsbURBQW1ELHlCQUF5QixFQUFFLHdDQUF3QyxtQkFBbUIsRUFBRSw2REFBNkQsOEJBQThCLDJCQUEyQixFQUFFLDZEQUE2RCxzQkFBc0IsRUFBRSwyREFBMkQsaUhBQWlILG1GQUFtRixFQUFFLDJEQUEyRCxtSEFBbUgsaUZBQWlGLEVBQUUsK0RBQStELDRCQUE0QixxQkFBcUIsb0JBQW9CLGdDQUFnQywwQkFBMEIsNERBQTRELDREQUE0RCxFQUFFLHNFQUFzRSwyQkFBMkIsRUFBRSx3RUFBd0UsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixxQkFBcUIsMkJBQTJCLEVBQUUsOERBQThELDBCQUEwQixvQkFBb0IscUJBQXFCLDRCQUE0QixrQ0FBa0MsNERBQTRELDREQUE0RCxFQUFFLGtFQUFrRSwwQkFBMEIsMEJBQTBCLG9CQUFvQixFQUFFLHdFQUF3RSxrQ0FBa0MscUJBQXFCLEVBQUUsa0VBQWtFLHNCQUFzQixFQUFFLGdGQUFnRix5QkFBeUIsRUFBRSwrRUFBK0UsMEJBQTBCLEVBQUUsK0RBQStELDBEQUEwRCwwREFBMEQsRUFBRSxrQ0FBa0MsNkJBQTZCLGdDQUFnQyxFQUFFLHlJQUF5SSxxQkFBcUIsNkJBQTZCLEVBQUUsa0RBQWtELCtCQUErQix5Q0FBeUMsbUNBQW1DLHFCQUFxQix3QkFBd0IseUJBQXlCLDRDQUE0QywyQkFBMkIsMEJBQTBCLEVBQUUscUZBQXFGLHVCQUF1QixzQkFBc0IsNkJBQTZCLEVBQUUsZ0dBQWdHLDhCQUE4Qiw0QkFBNEIsRUFBRSx1TEFBdUwsc0NBQXNDLEVBQUUsd0dBQXdHLDhCQUE4QixFQUFFLCtFQUErRSxxQkFBcUIsK0JBQStCLHFCQUFxQixFQUFFLHdGQUF3Riw2QkFBNkIsRUFBRSxvQ0FBb0MsZ0NBQWdDLGlDQUFpQyx5QkFBeUIsbUJBQW1CLHdCQUF3QiwwQkFBMEIsNEJBQTRCLHFDQUFxQyw2QkFBNkIsRUFBRSx3REFBd0QsbUJBQW1CLEVBQUUsaURBQWlELHlCQUF5Qix1QkFBdUIsRUFBRSxnRUFBZ0Usa0NBQWtDLEVBQUUsK0hBQStILHFCQUFxQixFQUFFLDBIQUEwSCxnQ0FBZ0MseUJBQXlCLGtCQUFrQixFQUFFLCtKQUErSiwwQkFBMEIsMkJBQTJCLEVBQUUsOElBQThJLHlCQUF5QixFQUFFLDBJQUEwSSwwQkFBMEIsRUFBRSx3SUFBd0ksOEJBQThCLEVBQUUsb0lBQW9JLGlDQUFpQyxzQkFBc0IsRUFBRSxrSkFBa0osdUJBQXVCLEVBQUUsdUdBQXVHLHNCQUFzQixFQUFFLGlDQUFpQyw0SEFBNEgsa0JBQWtCLHNCQUFzQixrQkFBa0IseUJBQXlCLDBCQUEwQiwyQkFBMkIsMkJBQTJCLHVGQUF1Rix5Q0FBeUMsRUFBRSxvREFBb0QsMEJBQTBCLEVBQUUsK0NBQStDLDBCQUEwQixFQUFFLDRDQUE0QywwQkFBMEIsRUFBRSwrQ0FBK0MsMEJBQTBCLEVBQUUsOENBQThDLDBCQUEwQixFQUFFLHlEQUF5RCwwQkFBMEIsRUFBRSwrREFBK0QsMEJBQTBCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLHFEQUFxRCwwQkFBMEIsRUFBRSwrQ0FBK0MsMEJBQTBCLEVBQUUsZ0RBQWdELDBCQUEwQixFQUFFLG1EQUFtRCwwQkFBMEIsRUFBRSw2Q0FBNkMsMEJBQTBCLEVBQUUsOENBQThDLDBCQUEwQixFQUFFLDRDQUE0QywwQkFBMEIsRUFBRSw2Q0FBNkMsMEJBQTBCLEVBQUUsNkNBQTZDLDBCQUEwQixFQUFFLGlEQUFpRCwwQkFBMEIsRUFBRSxrREFBa0QsMEJBQTBCLEVBQUUsNENBQTRDLDBCQUEwQixFQUFFLCtDQUErQywwQkFBMEIsRUFBRSw4Q0FBOEMsMEJBQTBCLEVBQUUsNkNBQTZDLDBCQUEwQixFQUFFLDhDQUE4QywwQkFBMEIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsNkNBQTZDLDBCQUEwQixFQUFFLDZDQUE2QywwQkFBMEIsRUFBRSxnREFBZ0QsMEJBQTBCLEVBQUUsaURBQWlELDBCQUEwQixFQUFFLDZDQUE2QywwQkFBMEIsRUFBRSxpREFBaUQsMEJBQTBCLEVBQUUsOENBQThDLDBCQUEwQixFQUFFLDZDQUE2QywwQkFBMEIsRUFBRSw2Q0FBNkMsMEJBQTBCLEVBQUUsb0RBQW9ELDBCQUEwQixFQUFFLDhDQUE4QywwQkFBMEIsRUFBRSw0Q0FBNEMsMEJBQTBCLEVBQUUsOENBQThDLDBCQUEwQixFQUFFLDZDQUE2QywwQkFBMEIsRUFBRSxpREFBaUQsMEJBQTBCLEVBQUUseURBQXlELDBCQUEwQixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSw4Q0FBOEMsMEJBQTBCLEVBQUUsNkNBQTZDLDBCQUEwQixFQUFFLG1EQUFtRCwwQkFBMEIsRUFBRSxtREFBbUQsMEJBQTBCLEVBQUUsb0RBQW9ELDBCQUEwQixFQUFFLGlEQUFpRCwwQkFBMEIsRUFBRSw2Q0FBNkMsMEJBQTBCLEVBQUUsb0RBQW9ELDBCQUEwQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSxrREFBa0QsMEJBQTBCLEVBQUUsNEpBQTRKLG9DQUFvQyx3QkFBd0IseUJBQXlCLEVBQUUsNkxBQTZMLHdCQUF3QixzQkFBc0IsRUFBRSxrREFBa0QscUJBQXFCLEVBQUUsb0VBQW9FLDRCQUE0QixFQUFFLHdFQUF3RSwwQkFBMEIsRUFBRSxvRUFBb0UsMEJBQTBCLEVBQUUsNEVBQTRFLDBCQUEwQixFQUFFLGlEQUFpRCwwQkFBMEIsRUFBRSwrQ0FBK0MsMEJBQTBCLEVBQUUsaURBQWlELHFCQUFxQixFQUFFLCtDQUErQywwQkFBMEIsRUFBRSxnQ0FBZ0Msd0JBQXdCLEVBQUUsbURBQW1ELHlCQUF5QixFQUFFLDBPQUEwTywwQkFBMEIsdUJBQXVCLEVBQUUsb0dBQW9HLDBCQUEwQixFQUFFLHVHQUF1RywwQkFBMEIsNEJBQTRCLEVBQUUseWNBQXljLHlCQUF5QiwwQkFBMEIsRUFBRSxxSEFBcUgsdUJBQXVCLDJCQUEyQixFQUFFLHdEQUF3RCwwQkFBMEIsd0JBQXdCLEVBQUUsdU5BQXVOLG9DQUFvQyxvQ0FBb0MsNkJBQTZCLEVBQUUsa3FCQUFrcUIsNkJBQTZCLCtCQUErQixFQUFFLG1UQUFtVCw2QkFBNkIsK0JBQStCLEVBQUUsd0RBQXdELDJCQUEyQiwwQkFBMEIsRUFBRSw2REFBNkQsNEJBQTRCLEVBQUUsMkpBQTJKLDRCQUE0QiwwQkFBMEIsRUFBRSw2REFBNkQsMkJBQTJCLEVBQUUsbUhBQW1ILHVCQUF1QiwwQkFBMEIsRUFBRSwyRUFBMkUsdUNBQXVDLHdCQUF3QixFQUFFLG1FQUFtRSx1Q0FBdUMsd0JBQXdCLEVBQUUsOEVBQThFLHVCQUF1QixFQUFFLCtDQUErQyxpQkFBaUIsK1VBQStVLEVBQUUsb0JBQW9CLEVBQUUsbWJBQW1iLG1CQUFtQixrQkFBa0Isc0JBQXNCLHdCQUF3QixFQUFFLHFGQUFxRixnREFBZ0Qsd0NBQXdDLEVBQUUsMkNBQTJDLDJDQUEyQyxFQUFFLHFEQUFxRCw4Q0FBOEMsc0NBQXNDLEVBQUUsd0NBQXdDLG1CQUFtQixFQUFFLHFDQUFxQyx1QkFBdUIsc0JBQXNCLG9CQUFvQixFQUFFLCtEQUErRCxrQkFBa0IsbUNBQW1DLDRDQUE0Qyx3QkFBd0IseUJBQXlCLGdDQUFnQyxFQUFFLCtFQUErRSxzQ0FBc0Msd0JBQXdCLEVBQUUsNEVBQTRFLHVDQUF1QyxrQ0FBa0MsMEJBQTBCLDBCQUEwQixFQUFFLGlFQUFpRSwrQkFBK0IsRUFBRSx1Q0FBdUMsNEJBQTRCLEVBQUUsa0ZBQWtGLHFCQUFxQixxQkFBcUIsc0JBQXNCLHNDQUFzQyx5QkFBeUIseUJBQXlCLEVBQUUsSzs7Ozs7Ozs7Ozs7QUNBdHJtRix1Q0FBdUMsNEJBQTRCLGVBQWUsa0JBQWtCLHVCQUF1Qix1QkFBdUIsZUFBZSw0QkFBNEIsNEJBQTRCLG1CQUFtQixjQUFjLG9CQUFvQixzQkFBc0IsdUJBQXVCLHVCQUF1QixxQkFBcUIsbUNBQW1DLG1DQUFtQyxtQ0FBbUMsbUNBQW1DLHFCQUFxQiwwSEFBMEgsMEhBQTBILEdBQUcseURBQXlELGVBQWUsc0JBQXNCLHdCQUF3QixHQUFHLDRCQUE0QiwwQkFBMEIsbUJBQW1CLEdBQUcsb0NBQW9DLHlFQUF5RSx5RUFBeUUsR0FBRyw4QkFBOEIsbUJBQW1CLHVCQUF1QixhQUFhLEdBQUcsOEJBQThCLHVCQUF1QiwwQkFBMEIsR0FBRyxtQ0FBbUMsaUJBQWlCLG1CQUFtQixHQUFHLHNIQUFzSCx3Q0FBd0Msd0NBQXdDLEdBQUcsc0hBQXNILDBEQUEwRCwwREFBMEQsR0FBRyw0RkFBNEYscUJBQXFCLGtDQUFrQyxpQ0FBaUMsR0FBRywrQ0FBK0MsbUJBQW1CLEdBQUcsNkRBQTZELGlCQUFpQixrQ0FBa0MsR0FBRywwREFBMEQsaUJBQWlCLEdBQUcsMERBQTBELHVCQUF1QixtQkFBbUIseUJBQXlCLDhCQUE4QixnQkFBZ0IsY0FBYyxhQUFhLGVBQWUsR0FBRyw4RUFBOEUsZUFBZSxnQkFBZ0IsR0FBRyw4QkFBOEIsc0JBQXNCLG1CQUFtQixHQUFHLDZCQUE2QixzQkFBc0IsbUJBQW1CLEdBQUcsNEVBQTRFLGlCQUFpQixHQUFHLHVDQUF1QyxpQ0FBaUMsR0FBRyxzQ0FBc0MsOEJBQThCLEdBQUcsa0ZBQWtGLGNBQWMsR0FBRywwQ0FBMEMsOEJBQThCLEdBQUcseUNBQXlDLDJCQUEyQixHQUFHLDZCQUE2QixlQUFlLEdBQUcsc0JBQXNCLHVCQUF1QiwwQkFBMEIsR0FBRyxxQkFBcUIseUJBQXlCLDBCQUEwQix5QkFBeUIsa0JBQWtCLEdBQUcsc0NBQXNDLDRCQUE0QiwyQkFBMkIsMEJBQTBCLGlCQUFpQixtQkFBbUIsdUJBQXVCLHVCQUF1Qiw4QkFBOEIsOEJBQThCLDhCQUE4Qiw4QkFBOEIscUJBQXFCLHdCQUF3QixvQkFBb0Isb0JBQW9CLG9CQUFvQixHQUFHLHFGQUFxRiwwQkFBMEIsb0JBQW9CLHVCQUF1QixXQUFXLGlCQUFpQixrQkFBa0IsZUFBZSwyQkFBMkIsMEJBQTBCLEdBQUcsMkhBQTJILGtCQUFrQixHQUFHLHlGQUF5Rix1QkFBdUIsR0FBRywrSEFBK0gsMERBQTBELCtDQUErQyw2TEFBNkwsMkRBQTJELCtDQUErQywrSkFBK0osbUJBQW1CLEdBQUcseUdBQXlHLGtCQUFrQixHQUFHLDZGQUE2RixnQkFBZ0IsaUJBQWlCLEdBQUcsdUdBQXVHLGtDQUFrQywwQkFBMEIsa0JBQWtCLEdBQUcsb0JBQW9CLHVCQUF1QixpQkFBaUIsR0FBRyxrREFBa0QsMEJBQTBCLEdBQUcsMEJBQTBCLGdCQUFnQixHQUFHLHFDQUFxQyxrQkFBa0IsR0FBRyx5R0FBeUcsY0FBYyw2QkFBNkIsR0FBRyx5QkFBeUIsdUJBQXVCLGFBQWEsZ0JBQWdCLHlCQUF5QixnQkFBZ0IscUJBQXFCLGVBQWUsb0JBQW9CLDBDQUEwQyxtQ0FBbUMsbUNBQW1DLEdBQUcsK0JBQStCLGdDQUFnQyxHQUFHLGdDQUFnQyxnQ0FBZ0MsR0FBRywrQkFBK0IsbUJBQW1CLGtCQUFrQix1QkFBdUIsR0FBRyxpQ0FBaUMsV0FBVyxxQkFBcUIsR0FBRyx1Q0FBdUMsdUNBQXVDLHdDQUF3QyxnREFBZ0QsYUFBYSxHQUFHLG1DQUFtQyxhQUFhLEdBQUcseUNBQXlDLHVDQUF1Qyx3Q0FBd0MsNkNBQTZDLGFBQWEsR0FBRyw2QkFBNkIsbUJBQW1CLGlCQUFpQixHQUFHLGtDQUFrQywwQkFBMEIsR0FBRywwQkFBMEIsaUNBQWlDLEdBQUcsK0JBQStCLGVBQWUsR0FBRyw0QkFBNEIsb0JBQW9CLHlCQUF5QixxQkFBcUIsbUJBQW1CLHVCQUF1QixlQUFlLGdCQUFnQiwwQkFBMEIsbUJBQW1CLGlCQUFpQiwwQkFBMEIsdUJBQXVCLGtEQUFrRCxrREFBa0QsR0FBRywyQ0FBMkMseUJBQXlCLHFCQUFxQixtQkFBbUIsMEJBQTBCLHVCQUF1QixlQUFlLEdBQUcsaURBQWlELGlDQUFpQyxHQUFHLDZDQUE2QyxlQUFlLGtCQUFrQiwwQkFBMEIsR0FBRyxnRUFBZ0UseUNBQXlDLEdBQUcsa0VBQWtFLHNDQUFzQyxHQUFHLDJDQUEyQyw0QkFBNEIsbUNBQW1DLG1DQUFtQyxtQkFBbUIsaUJBQWlCLHlCQUF5QixjQUFjLDBCQUEwQix1QkFBdUIseUJBQXlCLHFCQUFxQix5QkFBeUIsaUJBQWlCLGNBQWMscUJBQXFCLDRCQUE0QixrQ0FBa0MsK0JBQStCLDBCQUEwQixHQUFHLGlEQUFpRCxlQUFlLEdBQUcsK0dBQStHLG9CQUFvQiwyQkFBMkIsNEJBQTRCLHlCQUF5QixHQUFHLDREQUE0RCx5QkFBeUIsNEJBQTRCLGlCQUFpQixxQkFBcUIsMkJBQTJCLG1CQUFtQixvQkFBb0IsdUJBQXVCLHlCQUF5QixxQkFBcUIsaUJBQWlCLHlCQUF5Qix1QkFBdUIsa0JBQWtCLHlCQUF5Qix1QkFBdUIsNEJBQTRCLG1DQUFtQyxpQ0FBaUMsOEJBQThCLGdCQUFnQixHQUFHLG9JQUFvSSxrQkFBa0IsR0FBRyxrRUFBa0UsaUNBQWlDLEdBQUcsMkZBQTJGLGtDQUFrQyxrQkFBa0IsZUFBZSxHQUFHLHVCQUF1Qiw0QkFBNEIsdUJBQXVCLHFCQUFxQixnQkFBZ0IseUJBQXlCLDBCQUEwQix5QkFBeUIsa0JBQWtCLDhCQUE4QixnQ0FBZ0MsK0JBQStCLGdDQUFnQyxpQkFBaUIsR0FBRyxtREFBbUQseUJBQXlCLDBCQUEwQix5QkFBeUIsa0JBQWtCLHdCQUF3QixvQkFBb0Isb0JBQW9CLG9CQUFvQixHQUFHLDBCQUEwQixvQkFBb0IsbUJBQW1CLDRCQUE0Qiw0QkFBNEIsbUJBQW1CLGNBQWMsdUJBQXVCLG1CQUFtQix3QkFBd0Isb0JBQW9CLG9CQUFvQixvQkFBb0Isd0JBQXdCLEdBQUcsb0NBQW9DLHVCQUF1QixHQUFHLG1CQUFtQix1QkFBdUIscUJBQXFCLHlCQUF5QiwwQkFBMEIseUJBQXlCLGtCQUFrQiw2QkFBNkIsb0NBQW9DLDhCQUE4QixvQ0FBb0MscUJBQXFCLEdBQUcseUJBQXlCLGVBQWUsR0FBRyxpQkFBaUIsZUFBZSxlQUFlLHFCQUFxQixxQkFBcUIseUJBQXlCLHlCQUF5QixtQ0FBbUMsbUNBQW1DLDBCQUEwQix5QkFBeUIseUJBQXlCLDBCQUEwQixrQkFBa0IsNEJBQTRCLDRCQUE0Qix3QkFBd0IsMkJBQTJCLDBDQUEwQywwQ0FBMEMsa0RBQWtELGtEQUFrRCxlQUFlLEdBQUcsaUNBQWlDLHlDQUF5Qyx5Q0FBeUMsR0FBRyxrQkFBa0IscUJBQXFCLGtDQUFrQyx5QkFBeUIsbUNBQW1DLG1DQUFtQyxtQkFBbUIsb0JBQW9CLHFCQUFxQix1QkFBdUIsb0NBQW9DLDZDQUE2QyxvQ0FBb0Msb0JBQW9CLGlCQUFpQixzQkFBc0IsY0FBYywwQkFBMEIsdUJBQXVCLDZCQUE2QixvQ0FBb0MsOEJBQThCLG9DQUFvQyx1QkFBdUIsR0FBRywyWkFBMlosb0JBQW9CLGVBQWUsd0JBQXdCLDBCQUEwQixHQUFHLHdCQUF3QiwwQkFBMEIsR0FBRywyREFBMkQsMEJBQTBCLHdCQUF3QixnQkFBZ0IsR0FBRywybUJBQTJtQix3QkFBd0IsNkJBQTZCLDZCQUE2QixnQkFBZ0IsMEJBQTBCLEdBQUcsa0hBQWtILGlDQUFpQyxHQUFHLDRHQUE0RyxpQ0FBaUMsR0FBRyx3TkFBd04sMENBQTBDLDBDQUEwQyxHQUFHLDZJQUE2SSx3QkFBd0IsR0FBRywwQkFBMEIscUJBQXFCLDBEQUEwRCwwREFBMEQsR0FBRyx5UEFBeVAsOEJBQThCLDRCQUE0Qiw4QkFBOEIsb0JBQW9CLEdBQUcsK0VBQStFLHdCQUF3Qiw4QkFBOEIsR0FBRyxnQ0FBZ0MscUJBQXFCLDBEQUEwRCwwREFBMEQsR0FBRyx5QkFBeUIsdUJBQXVCLEdBQUcsNkJBQTZCLG9CQUFvQixHQUFHLDBCQUEwQixnQkFBZ0IsR0FBRywyQ0FBMkMsb0JBQW9CLHdDQUF3Qyx3Q0FBd0MsR0FBRyw2Q0FBNkMsZ0JBQWdCLGdCQUFnQixzQkFBc0IsR0FBRywrRkFBK0YsbUJBQW1CLGdCQUFnQixvQkFBb0IsOEJBQThCLDRCQUE0QixvQkFBb0IsaUJBQWlCLEdBQUcsNkJBQTZCLG1CQUFtQix5QkFBeUIsMEJBQTBCLHlCQUF5QixrQkFBa0IsbUNBQW1DLG1DQUFtQyxxQkFBcUIsR0FBRyx5QkFBeUIsMEJBQTBCLGVBQWUsbUNBQW1DLG1DQUFtQyxHQUFHLG1CQUFtQix1QkFBdUIsZUFBZSxtQkFBbUIsY0FBYyxzQkFBc0IscUJBQXFCLG1DQUFtQyxtQ0FBbUMscUJBQXFCLHlCQUF5QiwwQkFBMEIseUJBQXlCLGtCQUFrQixHQUFHLHlCQUF5QixrQkFBa0IsbUJBQW1CLGdCQUFnQixHQUFHLG9DQUFvQyx3QkFBd0Isb0JBQW9CLG9CQUFvQixvQkFBb0IsZUFBZSxpQkFBaUIsZ0JBQWdCLEdBQUcsdURBQXVELGlDQUFpQyxHQUFHLHlEQUF5RCw4QkFBOEIsR0FBRywrQ0FBK0MsZUFBZSxHQUFHLDZDQUE2QyxlQUFlLEdBQUcseUJBQXlCLDRCQUE0Qiw2QkFBNkIsNkJBQTZCLGNBQWMscUJBQXFCLHVCQUF1QixjQUFjLGVBQWUsb0JBQW9CLHlCQUF5QixtQkFBbUIsb0JBQW9CLHVCQUF1QixtQ0FBbUMsbUNBQW1DLGtDQUFrQywrQkFBK0IsMEJBQTBCLEdBQUcsd0NBQXdDLHNCQUFzQixHQUFHLG1GQUFtRixxQkFBcUIsR0FBRywrQkFBK0IsZUFBZSxjQUFjLEdBQUcsZ0ZBQWdGLG9CQUFvQixnQkFBZ0IseUJBQXlCLG1CQUFtQixzQkFBc0IsY0FBYyw4QkFBOEIsOEJBQThCLDhCQUE4Qiw4QkFBOEIsK0JBQStCLG9DQUFvQywrQkFBK0IsR0FBRyxvQ0FBb0MsZUFBZSxlQUFlLG9CQUFvQix1QkFBdUIscUJBQXFCLEdBQUcsK0lBQStJLHFCQUFxQixHQUFHLDhCQUE4QixvQkFBb0IsR0FBRyxtQ0FBbUMsVUFBVSxpQkFBaUIsa0RBQWtELGtEQUFrRCxLQUFLLFFBQVEsaUJBQWlCLDhDQUE4Qyw4Q0FBOEMsS0FBSyxHQUFHLDJCQUEyQixVQUFVLGlCQUFpQixrREFBa0Qsa0RBQWtELEtBQUssUUFBUSxpQkFBaUIsOENBQThDLDhDQUE4QyxLQUFLLEdBQUcsRzs7Ozs7Ozs7Ozs7QUNBcHJtQix5VEFBeVQsd0JBQXdCLDRCQUE0Qiw2QkFBNkIsd0NBQXdDLDBCQUEwQixzQkFBc0Isc0JBQXNCLEdBQUcsMEVBQTBFLHlCQUF5QiwrQkFBK0IsZ0NBQWdDLHNDQUFzQywwQkFBMEIsc0JBQXNCLHNCQUFzQixHQUFHLHNEQUFzRCxxQ0FBcUMscUNBQXFDLDBDQUEwQywwQ0FBMEMsT0FBTyx1REFBdUQsbUNBQW1DLG9DQUFvQyxxQ0FBcUMscUNBQXFDLEdBQUcsZ0hBQWdILHFDQUFxQyxvQ0FBb0Msa0NBQWtDLGtDQUFrQyxHQUFHLEM7Ozs7Ozs7Ozs7O0FDQWw3QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBOztBQUVBLGNBQWMsbUJBQU8sQ0FBQyx1REFBUTs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQixtQkFBbUI7QUFDcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLHNCQUFzQjtBQUN2Qzs7QUFFQTtBQUNBLG1CQUFtQiwyQkFBMkI7O0FBRTlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnQkFBZ0IsbUJBQW1CO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxpQkFBaUIsMkJBQTJCO0FBQzVDO0FBQ0E7O0FBRUEsUUFBUSx1QkFBdUI7QUFDL0I7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSxpQkFBaUIsdUJBQXVCO0FBQ3hDO0FBQ0E7O0FBRUEsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsZ0JBQWdCLGlCQUFpQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYzs7QUFFZCxrREFBa0Qsc0JBQXNCO0FBQ3hFO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdURBQXVEO0FBQ3ZEOztBQUVBLDZCQUE2QixtQkFBbUI7O0FBRWhEOztB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LE1BQXhCLEVBQWdDeG1CLENBQWhDLEVBQW1DdVQsQ0FBbkMsQ0FBSixFQUEyQztBQUN6QyxpQkFBT2lULE1BQVA7QUFDRCxTQVJhLENBU2Q7OztBQUNBeG1CLFNBQUM7QUFDRixPQWxDeUIsQ0FvQzFCOzs7QUFDQSxhQUFPdFUsU0FBUDtBQUNELEtBdkM0QztBQXdDN0N6d0IsZ0JBQVksRUFBRSxJQXhDK0I7QUF5QzdDTyxZQUFRLEVBQUU7QUF6Q21DLEdBQS9DO0FBMkNELEM7Ozs7Ozs7Ozs7OztBQ3BFRCxjQUFjLG1CQUFPLENBQUMsaU5BQStHOztBQUVySSw0Q0FBNEMsUUFBUzs7QUFFckQ7QUFDQTs7OztBQUlBLGVBQWU7O0FBRWY7QUFDQSxrQ0FBa0M7O0FBRWxDLGFBQWEsbUJBQU8sQ0FBQyxzR0FBbUQ7O0FBRXhFOztBQUVBLEdBQUcsS0FBVSxFQUFFLEUiLCJmaWxlIjoiYmJqLWdyaWQtd2lkZ2V0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDApO1xuIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJiai1tYXNrcyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbi8qKlxuICogTnVtYmVyTWFza1xuICpcbiAqIEEgamF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBmb3IgQkJqIG51bWJlcnMgbWFza2luZ1xuICpcbiAqIEBhdXRob3IgSHl5YW4gQWJvIEZha2hlciA8aGFib2Zha2hlckBiYXNpcy5jb20+XG4gKi9cbmNsYXNzIE51bWJlck1hc2sge1xuICAvKipcbiAgICogTWFzayB0aGUgZ2l2ZW4gbnVtYmVyIHdpdGggdGhlIGdpdmVuIG1hc2sgYWNjb3JkaW5nIHRvIEJCaiBydWxlc1xuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gbnVtYmVyIHRoZSBudW1iZXIgdG8gZm9ybWF0XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtYXNrIHRoZSBtYXNrIHRvIHVzZSBmb3IgZm9ybWF0dGluZ1xuICAgKiBAcGFyYW0ge1N0cmluZ30gW2dyb3VwaW5nU2VwYXJhdG9yPSxdIC0gYSBjaGFyIHdoaWNoIHdpbGwgYmUgdXNlZCBhcyBhIGdyb3VwaW5nIHNlcGFyYXRvclxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2RlY2ltYWxTZXBhcmF0b3I9Ll0gIC0gYSBjaGFyIHdoaWNoIHdpbGwgYmUgdXNlZCBhcyBhIGRlY2ltYWwgc2VwYXJhdG9yXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gW2ZvcmNlVHJhaWxpbmdaZXJvcz1mYWxzZV0gLSBBZmZlY3RzIHRoZSBvdXRwdXQgYnkgc3dpdGNoaW5nIHRoZSB3YXkgYSBtYXNrIHdpdGggXCIjXCIgY2hhcmFjdGVycyBpbiB0aGUgdHJhaWxpbmcgcG9zaXRpb25zIGlzIGZpbGxlZC5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGV4YW1wbGUsIHRoZSBmdW5jdGlvbiBgTnVtYmVyTWFzay5tYXNrKC4xMDpcIiMuIyNcIilgIHJldHVybnMgYCAuMTBgIGluc3RlYWQgb2YgYCAuMSBgXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gW2xvb3NlPXRydWVdIHdoZW4gdHJ1ZSAsIGVycm9ycyB3aWxsIGJlIGlnbm9yZWQgYW5kIHRoZSBtZXRob2Qgd2lsbCB0cnkgYXQgYXBwbHkgdGhlIG1hc2tcbiAgICogICAgICAgICAgICAgICAgYW55d2F5ICwgb3RoZXJ3aXNlIGl0IHdpbGwgc3RvcCBhdCBmaXJzdCBlcnJvciBhbmQgdGhyb3cgaXQuXG4gICAqIFxuICAgKiBAdGhyb3dzIHtNYXNrRXJyb3J9IG9ubHkgaWYgbG9vc2UgaXMgZGlzYWJsZWRcbiAgICogXG4gICAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBtYXNrZWQgbnVtYmVyXG4gICAqL1xuICBzdGF0aWMgbWFzayhcbiAgICBudW1iZXIsXG4gICAgbWFzayxcbiAgICBncm91cGluZ1NlcGFyYXRvciA9ICcsJyxcbiAgICBkZWNpbWFsU2VwYXJhdG9yID0gJy4nLFxuICAgIGZvcmNlVHJhaWxpbmdaZXJvcyA9IGZhbHNlLFxuICAgIGxvb3NlID0gdHJ1ZVxuICApIHtcbiAgICBjb25zdCBtYXNrTGVuID0gbWFzay5sZW5ndGhcbiAgICBpZiAoMCA9PT0gbWFza0xlbikge1xuICAgICAgaWYgKGxvb3NlKSByZXR1cm4gc3RyXG4gICAgICAvLyBmcmllbmRseSBzaWxlbnQgZmFpbFxuICAgICAgZWxzZVxuICAgICAgICB0aHJvdyB7XG4gICAgICAgICAgbmFtZTogJ01hc2tFcnJvcicsXG4gICAgICAgICAgbWVzc2FnZTogYE1hc2tFcnJvcjogTWFzayBpcyBlbXB0eWBcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEdldCBtYWduaXR1ZGUgYW5kIHByZWNpc2lvbiBvZiBNQVNLXG4gICAgbGV0IG1hc2tCZWZvcmVEZWNpbWFsID0gMFxuICAgIGxldCBtYXNrQWZ0ZXJEZWNpbWFsID0gMFxuICAgIGxldCBmb3VuZERlY2ltYWwgPSBmYWxzZVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWFza0xlbjsgKytpKSB7XG4gICAgICBjb25zdCBtID0gbWFzay5jaGFyQXQoaSlcbiAgICAgIGlmIChtID09ICcwJyB8fCBtID09ICcjJykge1xuICAgICAgICBpZiAoZm91bmREZWNpbWFsKSArK21hc2tBZnRlckRlY2ltYWxcbiAgICAgICAgZWxzZSArK21hc2tCZWZvcmVEZWNpbWFsXG4gICAgICB9IGVsc2UgaWYgKG0gPT0gJy4nKSBmb3VuZERlY2ltYWwgPSB0cnVlXG4gICAgfVxuXG4gICAgbGV0IG51bSA9IE51bWJlck1hc2suX3JvdW5kKG51bWJlciwgbWFza0FmdGVyRGVjaW1hbClcbiAgICBsZXQgYnl0ZXMgPSBOdW1iZXJNYXNrLl90b0NoYXJBcnJheShudW0pXG5cbiAgICAvLyBHZXQgbWFnbml0dWRlIGFuZCBwcmVjaXNpb24gb2YgTlVNQkVSXG4gICAgbGV0IGluTGVuID0gYnl0ZXMubGVuZ3RoXG4gICAgbGV0IG51bUJlZm9yZURlY2ltYWwgPSAwXG4gICAgbGV0IG51bUFmdGVyRGVjaW1hbCA9IDBcbiAgICBmb3VuZERlY2ltYWwgPSBmYWxzZVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5MZW47ICsraSkge1xuICAgICAgaWYgKGJ5dGVzW2ldID09ICcuJykgZm91bmREZWNpbWFsID0gdHJ1ZVxuICAgICAgZWxzZSB7XG4gICAgICAgIGlmIChmb3VuZERlY2ltYWwpICsrbnVtQWZ0ZXJEZWNpbWFsXG4gICAgICAgIGVsc2UgKytudW1CZWZvcmVEZWNpbWFsXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYWx3YXlzIGlnbm9yZSBtYXNrIG92ZXJmbG93XG4gICAgaWYgKG51bUJlZm9yZURlY2ltYWwgPiBtYXNrQmVmb3JlRGVjaW1hbCkge1xuICAgICAgaWYgKGxvb3NlKSByZXR1cm4gbnVtYmVyLnRvU3RyaW5nKClcbiAgICAgIC8vIGZyaWVuZGx5IHNpbGVudCBmYWlsXG4gICAgICBlbHNlXG4gICAgICAgIHRocm93IHtcbiAgICAgICAgICBuYW1lOiAnTWFza0Vycm9yJyxcbiAgICAgICAgICBtZXNzYWdlOiBgTWFza0Vycm9yOiBOdW1iZXIgaXMgdG9vIGxhcmdlIGZvciBtYXNrYFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gcm91bmQgaWYgbWFzayBpcyBmb3IgYSBsb3dlciBwcmVjaXNpb24gbnVtYmVyXG4gICAgaWYgKG51bUFmdGVyRGVjaW1hbCA+IG1hc2tBZnRlckRlY2ltYWwpIHtcbiAgICAgIG51bSA9IE51bWJlck1hc2suX3JvdW5kKG51bSwgbWFza0FmdGVyRGVjaW1hbClcbiAgICAgIGJ5dGVzID0gTnVtYmVyTWFzay5fdG9DaGFyQXJyYXkobnVtKVxuICAgICAgaW5MZW4gPSBieXRlcy5sZW5ndGhcblxuICAgICAgLy8gR2V0IG5ldyBtYWduaXR1ZGUgYW5kIHByZWNpc2lvbiBvZiBOVU1CRVJcbiAgICAgIG51bUJlZm9yZURlY2ltYWwgPSAwXG4gICAgICBudW1BZnRlckRlY2ltYWwgPSAwXG4gICAgICBmb3VuZERlY2ltYWwgPSBmYWxzZVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbkxlbjsgKytpKSB7XG4gICAgICAgIGlmIChieXRlc1tpXSA9PSAnLicpIGZvdW5kRGVjaW1hbCA9IHRydWVcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYgKGZvdW5kRGVjaW1hbCkgKytudW1BZnRlckRlY2ltYWxcbiAgICAgICAgICBlbHNlICsrbnVtQmVmb3JlRGVjaW1hbFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGFsd2F5cyBpZ25vcmUgbWFzayBvdmVyZmxvd1xuICAgICAgaWYgKG51bUJlZm9yZURlY2ltYWwgPiBtYXNrQmVmb3JlRGVjaW1hbCkge1xuICAgICAgICBpZiAobG9vc2UpIHJldHVybiBudW1iZXIudG9TdHJpbmcoKVxuICAgICAgICAvLyBmcmllbmRseSBzaWxlbnQgZmFpbFxuICAgICAgICBlbHNlXG4gICAgICAgICAgdGhyb3cge1xuICAgICAgICAgICAgbmFtZTogJ01hc2tFcnJvcicsXG4gICAgICAgICAgICBtZXNzYWdlOiBgTWFza0Vycm9yOiBOdW1iZXIgaXMgdG9vIGxhcmdlIGZvciBtYXNrYFxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgZmlsbEJ5dGUgPSAnICcsXG4gICAgICBmbG9hdEJ5dGUgPSAnICdcbiAgICBsZXQgaW5Qb3MgPSAwLFxuICAgICAgb3V0UG9zID0gMCxcbiAgICAgIGZsb2F0UG9zID0gMFxuICAgIGlmIChtYXNrLmNoYXJBdCgwKSA9PSAnKicpIGZpbGxCeXRlID0gJyonXG5cbiAgICBjb25zdCBmaWxsSW5pdCA9IGZpbGxCeXRlXG4gICAgY29uc3QgaXNOZWdhdGl2ZSA9IE51bWJlck1hc2suX2dldFNpZ24obnVtKSA8IDBcbiAgICBsZXQgZW1pdERlY2ltYWwgPSBpbkxlbiA+IDAgfHwgbWFzay5pbmRleE9mKCcwJykgPj0gMFxuICAgIGxldCBmb3VuZFplcm8gPSBmYWxzZVxuICAgIGxldCBmb3VuZERpZ2l0ID0gZmFsc2VcbiAgICBsZXQgY3VycmVuY3kgPSBmYWxzZVxuICAgIGZvdW5kRGVjaW1hbCA9IGZhbHNlXG5cbiAgICBsZXQgcmV0ID0gbmV3IEFycmF5KG1hc2tMZW4pXG5cbiAgICBmb3IgKGxldCBtYXNrUG9zID0gMDsgbWFza1BvcyA8IG1hc2tMZW47ICsrbWFza1Bvcykge1xuICAgICAgbGV0IG0gPSBtYXNrLmNoYXJBdChtYXNrUG9zKVxuICAgICAgc3dpdGNoIChtKSB7XG4gICAgICAgIGNhc2UgJzAnOlxuICAgICAgICAgIC0tbWFza0JlZm9yZURlY2ltYWxcbiAgICAgICAgICBpZiAobWFza0JlZm9yZURlY2ltYWwgPCBudW1CZWZvcmVEZWNpbWFsICYmIGluUG9zIDwgaW5MZW4pIHtcbiAgICAgICAgICAgIHJldFtvdXRQb3NdID0gYnl0ZXNbaW5Qb3NdXG4gICAgICAgICAgICArK2luUG9zXG4gICAgICAgICAgICBmb3VuZERpZ2l0ID0gdHJ1ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXRbb3V0UG9zXSA9ICcwJ1xuICAgICAgICAgICAgZm91bmRaZXJvID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgICArK291dFBvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnIyc6XG4gICAgICAgICAgLS1tYXNrQmVmb3JlRGVjaW1hbFxuICAgICAgICAgIGlmIChtYXNrQmVmb3JlRGVjaW1hbCA8IG51bUJlZm9yZURlY2ltYWwgJiYgaW5Qb3MgPCBpbkxlbikge1xuICAgICAgICAgICAgcmV0W291dFBvc10gPSBieXRlc1tpblBvc11cbiAgICAgICAgICAgICsraW5Qb3NcbiAgICAgICAgICAgIGZvdW5kRGlnaXQgPSB0cnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldFtvdXRQb3NdID1cbiAgICAgICAgICAgICAgZm91bmREZWNpbWFsICYmXG4gICAgICAgICAgICAgIGZvcmNlVHJhaWxpbmdaZXJvcyAmJlxuICAgICAgICAgICAgICBOdW1iZXJNYXNrLl9nZXRTaWduKG51bSkgIT0gMFxuICAgICAgICAgICAgICAgID8gJzAnXG4gICAgICAgICAgICAgICAgOiBmaWxsQnl0ZVxuICAgICAgICAgICAgaWYgKCFmb3VuZERlY2ltYWwpIGZsb2F0UG9zID0gbWFza1Bvc1xuICAgICAgICAgIH1cbiAgICAgICAgICArK291dFBvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnLCc6XG4gICAgICAgICAgaWYgKGZvdW5kWmVybyB8fCBpblBvcyA+IDApIHJldFtvdXRQb3NdID0gZ3JvdXBpbmdTZXBhcmF0b3JcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldFtvdXRQb3NdID0gZmlsbEJ5dGVcbiAgICAgICAgICAgIGlmICghZm91bmREZWNpbWFsKSBmbG9hdFBvcyA9IG1hc2tQb3NcbiAgICAgICAgICB9XG4gICAgICAgICAgKytvdXRQb3NcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJy0nOlxuICAgICAgICAgIGlmICghZm91bmREaWdpdCAmJiBmbG9hdEJ5dGUgPT0gJyAnKSB7XG4gICAgICAgICAgICBpZiAoaXNOZWdhdGl2ZSkgZmxvYXRCeXRlID0gJy0nXG4gICAgICAgICAgICByZXRbb3V0UG9zXSA9IGZpbGxCeXRlXG4gICAgICAgICAgICBmbG9hdFBvcyA9IGZvdW5kRGVjaW1hbCA/IC0xIDogbWFza1Bvc1xuICAgICAgICAgIH0gZWxzZSByZXRbb3V0UG9zXSA9IGlzTmVnYXRpdmUgPyAnLScgOiBmaWxsQnl0ZVxuICAgICAgICAgICsrb3V0UG9zXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICcrJzpcbiAgICAgICAgICBpZiAoIWZvdW5kRGlnaXQgJiYgZmxvYXRCeXRlID09ICcgJykge1xuICAgICAgICAgICAgZmxvYXRCeXRlID0gaXNOZWdhdGl2ZSA/ICctJyA6ICcrJ1xuICAgICAgICAgICAgcmV0W291dFBvc10gPSBmaWxsQnl0ZVxuICAgICAgICAgICAgZmxvYXRQb3MgPSBmb3VuZERlY2ltYWwgPyAtMSA6IG1hc2tQb3NcbiAgICAgICAgICB9IGVsc2UgcmV0W291dFBvc10gPSBpc05lZ2F0aXZlID8gJy0nIDogJysnXG4gICAgICAgICAgKytvdXRQb3NcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJyQnOlxuICAgICAgICAgIGlmICghZm91bmREaWdpdCAmJiBmbG9hdEJ5dGUgPT0gJyAnKSB7XG4gICAgICAgICAgICBmbG9hdEJ5dGUgPSAnJCdcbiAgICAgICAgICAgIHJldFtvdXRQb3NdID0gZmlsbEJ5dGVcbiAgICAgICAgICAgIGZsb2F0UG9zID0gZm91bmREZWNpbWFsID8gLTEgOiBtYXNrUG9zXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldFtvdXRQb3NdID0gJyQnXG4gICAgICAgICAgfVxuICAgICAgICAgICsrb3V0UG9zXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICAvLyBjYXNlICcmJzpcbiAgICAgICAgLy8gICBjdXJyZW5jeSA9IHRydWVcbiAgICAgICAgLy8gICBpZiAoIWZvdW5kRGlnaXQgJiYgZmxvYXRCeXRlID09ICcgJykge1xuICAgICAgICAvLyAgICAgZmxvYXRCeXRlID0gJyYnXG4gICAgICAgIC8vICAgICByZXRbb3V0UG9zXSA9IGZpbGxCeXRlXG4gICAgICAgIC8vICAgICBmbG9hdFBvcyA9IGZvdW5kRGVjaW1hbCA/IC0xIDogbWFza1Bvc1xuICAgICAgICAvLyAgIH0gZWxzZSB7XG4gICAgICAgIC8vICAgICByZXRbb3V0UG9zXSA9ICcmJ1xuICAgICAgICAvLyAgIH1cbiAgICAgICAgLy8gICArK291dFBvc1xuICAgICAgICAvLyAgIGJyZWFrXG5cbiAgICAgICAgLy8gY2FzZSAnQCc6XG4gICAgICAgIC8vICAgY3VycmVuY3kgPSB0cnVlXG4gICAgICAgIC8vICAgaWYgKCFmb3VuZERpZ2l0ICYmIGZsb2F0Qnl0ZSA9PSAnICcpIHtcbiAgICAgICAgLy8gICAgIGZsb2F0Qnl0ZSA9ICdAJ1xuICAgICAgICAvLyAgICAgcmV0W291dFBvc10gPSBmaWxsQnl0ZVxuICAgICAgICAvLyAgICAgZmxvYXRQb3MgPSBmb3VuZERlY2ltYWwgPyAtMSA6IG1hc2tQb3NcbiAgICAgICAgLy8gICB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgcmV0W291dFBvc10gPSAnQCdcbiAgICAgICAgLy8gICB9XG4gICAgICAgIC8vICAgKytvdXRQb3NcbiAgICAgICAgLy8gICBicmVha1xuXG4gICAgICAgIGNhc2UgJygnOlxuICAgICAgICAgIGlmICghZm91bmREaWdpdCAmJiBmbG9hdEJ5dGUgPT0gJyAnKSB7XG4gICAgICAgICAgICBpZiAoaXNOZWdhdGl2ZSkgZmxvYXRCeXRlID0gJygnXG4gICAgICAgICAgICByZXRbb3V0UG9zXSA9IGZpbGxCeXRlXG4gICAgICAgICAgICBmbG9hdFBvcyA9IGZvdW5kRGVjaW1hbCA/IC0xIDogbWFza1Bvc1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXNOZWdhdGl2ZSkge1xuICAgICAgICAgICAgICByZXRbb3V0UG9zXSA9ICcoJ1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0W291dFBvc10gPSBmb3VuZERlY2ltYWwgPyAnICcgOiBmaWxsQnl0ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICArK291dFBvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnKSc6XG4gICAgICAgICAgaWYgKGlzTmVnYXRpdmUpIHtcbiAgICAgICAgICAgIHJldFtvdXRQb3NdID0gJyknXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldFtvdXRQb3NdID0gZm91bmREZWNpbWFsID8gJyAnIDogZmlsbEJ5dGVcbiAgICAgICAgICB9XG4gICAgICAgICAgKytvdXRQb3NcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJ0MnOlxuICAgICAgICAgIGlmIChtYXNrUG9zIDwgbWFza0xlbiAtIDEgJiYgbWFzay5jaGFyQXQobWFza1BvcyArIDEpID09ICdSJykge1xuICAgICAgICAgICAgaWYgKGlzTmVnYXRpdmUpIHtcbiAgICAgICAgICAgICAgcmV0W291dFBvc10gPSAnQydcbiAgICAgICAgICAgICAgcmV0W291dFBvcyArIDFdID0gJ1InXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXRbb3V0UG9zXSA9ICcgJ1xuICAgICAgICAgICAgICByZXRbb3V0UG9zICsgMV0gPSAnICdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dFBvcyArPSAyXG4gICAgICAgICAgICArK21hc2tQb3NcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0W291dFBvc10gPSAnQydcbiAgICAgICAgICAgICsrb3V0UG9zXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgIGlmIChtYXNrUG9zIDwgbWFza0xlbiAtIDEgJiYgbWFzay5jaGFyQXQobWFza1BvcyArIDEpID09ICdSJykge1xuICAgICAgICAgICAgaWYgKGlzTmVnYXRpdmUpIHtcbiAgICAgICAgICAgICAgcmV0W291dFBvc10gPSAnQydcbiAgICAgICAgICAgICAgcmV0W291dFBvcyArIDFdID0gJ1InXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXRbb3V0UG9zXSA9ICdEJ1xuICAgICAgICAgICAgICByZXRbb3V0UG9zICsgMV0gPSAnUidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dFBvcyArPSAyXG4gICAgICAgICAgICArK21hc2tQb3NcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0W291dFBvc10gPSAnRCdcbiAgICAgICAgICAgICsrb3V0UG9zXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnKic6XG4gICAgICAgICAgcmV0W291dFBvc10gPSAnKidcbiAgICAgICAgICArK291dFBvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnLic6XG4gICAgICAgICAgcmV0W291dFBvc10gPSBlbWl0RGVjaW1hbCA/IGRlY2ltYWxTZXBhcmF0b3IgOiBmaWxsQnl0ZVxuICAgICAgICAgIGZpbGxCeXRlID0gJyAnXG4gICAgICAgICAgZm91bmREZWNpbWFsID0gdHJ1ZVxuICAgICAgICAgICsraW5Qb3NcbiAgICAgICAgICArK291dFBvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnQic6XG4gICAgICAgICAgcmV0W291dFBvc10gPSAnICdcbiAgICAgICAgICArK291dFBvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXRbb3V0UG9zXSA9IG1cbiAgICAgICAgICArK291dFBvc1xuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZsb2F0Qnl0ZSAhPSAnICcpIHtcbiAgICAgIGlmIChmbG9hdFBvcyA8IDApIGZsb2F0UG9zID0gb3V0UG9zXG4gICAgICB3aGlsZSAoZmxvYXRQb3MgPj0gbWFza0xlbikgLS1mbG9hdFBvc1xuICAgICAgaWYgKHJldFtmbG9hdFBvc10gPT0gZmlsbEluaXQpIHJldFtmbG9hdFBvc10gPSBmbG9hdEJ5dGVcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0LmpvaW4oJycpXG4gIH1cblxuICBzdGF0aWMgX3NoaWZ0KG51bWJlciwgcHJlY2lzaW9uLCByZXZlcnNlU2hpZnQpIHtcbiAgICBpZiAocmV2ZXJzZVNoaWZ0KSBwcmVjaXNpb24gPSAtcHJlY2lzaW9uXG4gICAgdmFyIG51bUFycmF5ID0gKCcnICsgbnVtYmVyKS5zcGxpdCgnZScpXG4gICAgcmV0dXJuICsoXG4gICAgICBudW1BcnJheVswXSArXG4gICAgICAnZScgK1xuICAgICAgKG51bUFycmF5WzFdID8gK251bUFycmF5WzFdICsgcHJlY2lzaW9uIDogcHJlY2lzaW9uKVxuICAgIClcbiAgfVxuXG4gIHN0YXRpYyBfcm91bmQobnVtYmVyLCBwcmVjaXNpb24pIHtcbiAgICByZXR1cm4gTnVtYmVyTWFzay5fc2hpZnQoXG4gICAgICBNYXRoLnJvdW5kKE51bWJlck1hc2suX3NoaWZ0KG51bWJlciwgcHJlY2lzaW9uLCBmYWxzZSkpLFxuICAgICAgcHJlY2lzaW9uLFxuICAgICAgdHJ1ZVxuICAgIClcbiAgfVxuXG4gIHN0YXRpYyBfdG9DaGFyQXJyYXkobnVtYmVyKSB7XG4gICAgY29uc3Qgc2lnbnVtID0gTnVtYmVyTWFzay5fZ2V0U2lnbihudW1iZXIpXG4gICAgbGV0IGNoYXJzID0gW11cblxuICAgIGlmIChzaWdudW0gIT09IDApIHtcbiAgICAgIGxldCBzdHJpbmcgPSBzaWdudW0gPCAwID8gYCR7LTEgKiBudW1iZXIudG9TdHJpbmcoKX1gIDogbnVtYmVyLnRvU3RyaW5nKClcblxuICAgICAgaWYgKHN0cmluZy5sZW5ndGggPiAxICYmIHN0cmluZy5jaGFyQXQoMCkgPT0gJzAnKVxuICAgICAgICBzdHJpbmcgPSBzdHJpbmcuc3Vic3RyaW5nKDEpXG5cbiAgICAgIC8vIFRoZSBzdHJpbmcgY29udGFpbnMgb25seSBbMC05XSBhbmQgJy4nXG4gICAgICBjaGFycyA9IHN0cmluZy5zcGxpdCgnJylcbiAgICB9XG5cbiAgICByZXR1cm4gY2hhcnNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzaWduIG9mIGEgbnVtYmVyXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB4IG51bWJlclxuICAgKiBAcmV0dXJucyB7TnVtYmVyfSBBIG51bWJlciByZXByZXNlbnRpbmcgdGhlIHNpZ24gb2YgdGhlIGdpdmVuIGFyZ3VtZW50LlxuICAgKiAgICAgICAgICAgICAgICAgICBJZiB0aGUgYXJndW1lbnQgaXMgYSBwb3NpdGl2ZSBudW1iZXIsIG5lZ2F0aXZlIG51bWJlciwgcG9zaXRpdmUgemVyb1xuICAgKiAgICAgICAgICAgICAgICAgICBvciBuZWdhdGl2ZSB6ZXJvLCB0aGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gMSwgLTEsIDAgb3IgLTAgcmVzcGVjdGl2ZWx5LlxuICAgKiAgICAgICAgICAgICAgICAgICBPdGhlcndpc2UsIE5hTiBpcyByZXR1cm5lZC5cbiAgICovXG4gIHN0YXRpYyBfZ2V0U2lnbih4KSB7XG4gICAgcmV0dXJuICh4ID4gMCkgLSAoeCA8IDApIHx8ICt4XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTnVtYmVyTWFza1xuIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJiai1tYXNrcyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmltcG9ydCBOdW1iZXJNYXNrIGZyb20gJy4vTnVtYmVyTWFzaydcblxuZXhwb3J0IGRlZmF1bHQgTnVtYmVyTWFza1xuIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJiai1tYXNrcyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmNvbnN0IGlzTnVtYmVyUmVnZXggPSAvXlxcZCskL1xuY29uc3QgaXNXaGl0ZXNwYWNlUmVnZXggPSAvXFxzL1xuY29uc3QgcHVuY3R1YXRpb25MaXN0ID0gJyFcIiMkJSZcXCcoKSorLC0uLzo7PD0+P0BbXV5fYHt8fX4nXG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGdpdmVuIHN0cmluZyBpcyBpbiBsb3dlciBjYXNlXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICovXG5jb25zdCBpc0xvd2VyQ2FzZSA9IHN0ciA9PiB7XG4gIHJldHVybiBzdHIgPT0gc3RyLnRvTG93ZXJDYXNlKCkgJiYgc3RyICE9IHN0ci50b1VwcGVyQ2FzZSgpXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGdpdmVuIHN0cmluZyBpcyBpbiB1cHBlciBjYXNlXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICovXG5jb25zdCBpc1VwcGVyQ2FzZSA9IHN0ciA9PiB7XG4gIHJldHVybiBzdHIgPT0gc3RyLnRvVXBwZXJDYXNlKCkgJiYgc3RyICE9IHN0ci50b0xvd2VyQ2FzZSgpXG59XG5cbmNvbnN0IHBhc3NPclRocm93RXJyb3IgPSAobG9vc2UsIHJldCwgaSwgc3RyKSA9PiB7XG4gIGlmICghbG9vc2UpIHtcbiAgICBjb25zdCBjaGFyID0gc3RyLmNoYXJBdChpKVxuICAgIGNvbnN0IHBvcyA9IGkgKyAxXG4gICAgdGhyb3cge1xuICAgICAgbmFtZTogJ1N0cmluZ01hc2tFcnJvcicsXG4gICAgICBtZXNzYWdlOiBgU3RyaW5nTWFza0Vycm9yOiBlcnJvciBhcHBseWluZyBtYXNrIGF0IHBvc2l0aW9uIFwiJHtwb3N9XCIgLCBjaGFyIFwiJHtjaGFyfVwiYCxcbiAgICAgIHBvcyxcbiAgICAgIGNoYXJcbiAgICB9XG4gIH0gZWxzZSByZXRbaV0gPSAnICdcbn1cblxuLyoqXG4gKiBOdW1iZXJNYXNrXG4gKlxuICogQSBqYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIGZvciBCQmogbnVtYmVycyBtYXNraW5nXG4gKlxuICogQGF1dGhvciBIeXlhbiBBYm8gRmFraGVyIDxoYWJvZmFraGVyQGJhc2lzLmNvbT5cbiAqL1xuY2xhc3MgU3RyaW5nTWFzayB7XG4gIC8qKlxuICAgKiBNYXNrIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCB0aGUgZ2l2ZW4gbWFzayBhY2NvcmRpbmcgdG8gQkJqIHJ1bGVzXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgdGhlIHN0cmluZyB0byBtYXNrXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtYXNrIHRoZSBtYXNrIHRvIHVzZSBmb3IgZm9ybWF0dGluZ1xuICAgKiBAcGFyYW0ge0Jvb2xlYW59IFtsb29zZT10cnVlXSB3aGVuIHRydWUgLCBlcnJvcnMgd2lsbCBiZSBpZ25vcmVkIGFuZCB0aGUgbWV0aG9kIHdpbGwgdHJ5IGF0IGFwcGx5IHRoZSBtYXNrXG4gICAqICAgICAgICAgICAgICAgIGFueXdheSAsIG90aGVyd2lzZSBpdCB3aWxsIHN0b3AgYXQgZmlyc3QgZXJyb3IgYW5kIHRocm93IGl0LlxuICAgKiBcbiAgICogQHRocm93cyB7TWFza0lzVG9vU2hvcnRFcnJvcn1cbiAgICogQHRocm93cyB7U3RyaW5nTWFza0Vycm9yfVxuICAgKiBAdGhyb3dzIHtNYXNrRXJyb3J9XG4gICAqIFxuICAgKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgbWFza2VkIHN0cmluZ1xuICAgKi9cbiAgc3RhdGljIG1hc2soc3RyLCBtYXNrLCBsb29zZSA9IHRydWUpIHtcbiAgICBzdHIgPSBTdHJpbmcoc3RyKVxuICAgIG1hc2sgPSBTdHJpbmcobWFzaylcbiAgICBjb25zdCBtYXNrTGVuID0gbWFzay5sZW5ndGhcbiAgICBjb25zdCBzdHJMZW4gPSBzdHIubGVuZ3RoXG5cbiAgICBpZiAoc3RyTGVuID4gbWFza0xlbikge1xuICAgICAgaWYgKGxvb3NlKSByZXR1cm4gc3RyXG4gICAgICAvLyBmcmllbmRseSBzaWxlbnQgZmFpbFxuICAgICAgZWxzZVxuICAgICAgICB0aHJvdyB7XG4gICAgICAgICAgbmFtZTogJ01hc2tJc1Rvb1Nob3J0RXJyb3InLFxuICAgICAgICAgIG1lc3NhZ2U6IGBNYXNrSXNUb29TaG9ydEVycm9yOiBNYXNrIGlzIHNob3J0ZXIgdGhhbiB0aGUgcGFzc2VkIHN0cmluZ2BcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHJldCA9IG5ldyBBcnJheShtYXNrTGVuKVxuICAgIGxldCBwb3MgPSAwIC8vIHRvIGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIHN0clxuICAgIGxldCBtYXNrQnl0ZSA9ICcnXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hc2tMZW47IGkrKykge1xuICAgICAgbWFza0J5dGUgPSBtYXNrLmNoYXJBdChpKVxuICAgICAgc3dpdGNoIChtYXNrQnl0ZSkge1xuICAgICAgICBjYXNlICdYJzogLy8gbWF0Y2ggYW55IGNoYXJhY3RlclxuICAgICAgICAgIHJldFtpXSA9IHBvcyA8IHN0ckxlbiA/IHN0ci5jaGFyQXQocG9zKSA6ICcgJ1xuICAgICAgICAgICsrcG9zXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICdBJzogLy8gbWF0Y2ggbGV0dGVyOyBmb3JjZSB1cHBlciBjYXNlXG4gICAgICAgICAgaWYgKHBvcyA8IHN0ckxlbikge1xuICAgICAgICAgICAgY29uc3QgYnl0ZSA9IHN0ci5jaGFyQXQocG9zKVxuICAgICAgICAgICAgaWYgKGlzVXBwZXJDYXNlKGJ5dGUpKSByZXRbaV0gPSBieXRlXG4gICAgICAgICAgICBlbHNlIGlmIChpc0xvd2VyQ2FzZShieXRlKSkgcmV0W2ldID0gYnl0ZS50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICBlbHNlIHBhc3NPclRocm93RXJyb3IobG9vc2UsIHJldCwgaSwgc3RyKVxuICAgICAgICAgIH0gZWxzZSByZXRbaV0gPSAnICdcbiAgICAgICAgICArK3Bvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnYSc6IC8vIG1hdGNoIGxldHRlclxuICAgICAgICAgIGlmIChwb3MgPCBzdHJMZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGJ5dGUgPSBzdHIuY2hhckF0KHBvcylcbiAgICAgICAgICAgIGlmIChpc1VwcGVyQ2FzZShieXRlKSB8fCBpc0xvd2VyQ2FzZShieXRlKSkgcmV0W2ldID0gYnl0ZVxuICAgICAgICAgICAgZWxzZSBwYXNzT3JUaHJvd0Vycm9yKGxvb3NlLCByZXQsIGksIHN0cilcbiAgICAgICAgICB9IGVsc2UgcmV0W2ldID0gJyAnXG4gICAgICAgICAgKytwb3NcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICcwJzogLy8gbWF0Y2ggZGlnaXRcbiAgICAgICAgICBpZiAocG9zIDwgc3RyTGVuKSB7XG4gICAgICAgICAgICBjb25zdCBieXRlID0gc3RyLmNoYXJBdChwb3MpXG4gICAgICAgICAgICBpZiAoaXNOdW1iZXJSZWdleC50ZXN0KGJ5dGUpKSByZXRbaV0gPSBieXRlXG4gICAgICAgICAgICBlbHNlIHBhc3NPclRocm93RXJyb3IobG9vc2UsIHJldCwgaSwgc3RyKVxuICAgICAgICAgIH0gZWxzZSByZXRbaV0gPSAnICdcbiAgICAgICAgICArK3Bvc1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ1onOiAvLyBtYXRjaCBsZXR0ZXIgb3IgZGlnaXQ7IGZvcmNlIHVwcGVyIGNhc2VcbiAgICAgICAgICBpZiAocG9zIDwgc3RyTGVuKSB7XG4gICAgICAgICAgICBjb25zdCBieXRlID0gc3RyLmNoYXJBdChwb3MpXG4gICAgICAgICAgICBpZiAoaXNVcHBlckNhc2UoYnl0ZSkgfHwgaXNOdW1iZXJSZWdleC50ZXN0KGJ5dGUpKSByZXRbaV0gPSBieXRlXG4gICAgICAgICAgICBlbHNlIGlmIChpc0xvd2VyQ2FzZShieXRlKSkgcmV0W2ldID0gYnl0ZS50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICBlbHNlIHBhc3NPclRocm93RXJyb3IobG9vc2UsIHJldCwgaSwgc3RyKVxuICAgICAgICAgIH0gZWxzZSByZXRbaV0gPSAnICdcbiAgICAgICAgICArK3Bvc1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3onOiAvLyBtYXRjaCBsZXR0ZXIgb3IgZGlnaXRcbiAgICAgICAgICBpZiAocG9zIDwgc3RyTGVuKSB7XG4gICAgICAgICAgICBjb25zdCBieXRlID0gc3RyLmNoYXJBdChwb3MpXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGlzVXBwZXJDYXNlKGJ5dGUpIHx8XG4gICAgICAgICAgICAgIGlzTG93ZXJDYXNlKGJ5dGUpIHx8XG4gICAgICAgICAgICAgIGlzTnVtYmVyUmVnZXgudGVzdChieXRlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICByZXRbaV0gPSBieXRlXG4gICAgICAgICAgICBlbHNlIHBhc3NPclRocm93RXJyb3IobG9vc2UsIHJldCwgaSwgc3RyKVxuICAgICAgICAgIH0gZWxzZSByZXRbaV0gPSAnICdcbiAgICAgICAgICArK3Bvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdVJzogLy8gbWF0Y2ggbGV0dGVyIChmb3JjZSB1cHBlciBjYXNlKSwgZGlnaXQsIHdoaXRlc3BhY2Ugb3IgcHVuY3R1YXRpb24uXG4gICAgICAgICAgaWYgKHBvcyA8IHN0ckxlbikge1xuICAgICAgICAgICAgY29uc3QgYnl0ZSA9IHN0ci5jaGFyQXQocG9zKVxuICAgICAgICAgICAgaWYgKGlzTG93ZXJDYXNlKGJ5dGUpKSByZXRbaV0gPSBieXRlLnRvVXBwZXJDYXNlKClcbiAgICAgICAgICAgIGVsc2UgaWYgKFxuICAgICAgICAgICAgICBpc1VwcGVyQ2FzZShieXRlKSB8fFxuICAgICAgICAgICAgICBpc051bWJlclJlZ2V4LnRlc3QoYnl0ZSkgfHxcbiAgICAgICAgICAgICAgaXNXaGl0ZXNwYWNlUmVnZXgudGVzdChieXRlKSB8fFxuICAgICAgICAgICAgICBwdW5jdHVhdGlvbkxpc3QuaW5kZXhPZihieXRlKSA+IC0xXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIHJldFtpXSA9IGJ5dGVcbiAgICAgICAgICAgIGVsc2UgcGFzc09yVGhyb3dFcnJvcihsb29zZSwgcmV0LCBpLCBzdHIpXG4gICAgICAgICAgfSBlbHNlIHJldFtpXSA9ICcgJ1xuICAgICAgICAgICsrcG9zXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXRbaV0gPSBtYXNrQnl0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBvcyA8IHN0ckxlbikge1xuICAgICAgaWYgKCFsb29zZSkge1xuICAgICAgICB0aHJvdyB7IG5hbWU6ICdNYXNrRXJyb3InLCBtZXNzYWdlOiAnTWFzayBjYW5ub3QgYmUgYXBwbGllZCcgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXQuam9pbignJylcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTdHJpbmdNYXNrXG4iLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmJqLW1hc2tzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IFN0cmluZ01hc2sgZnJvbSAnLi9TdHJpbmdNYXNrJ1xuXG5leHBvcnQgZGVmYXVsdCBTdHJpbmdNYXNrXG4iLCJcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4uLy4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuL2FnLWdyaWQuY3NzXCIpO1xuXG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcblxudmFyIHRyYW5zZm9ybTtcbnZhciBpbnNlcnRJbnRvO1xuXG5cblxudmFyIG9wdGlvbnMgPSB7XCJobXJcIjp0cnVlfVxuXG5vcHRpb25zLnRyYW5zZm9ybSA9IHRyYW5zZm9ybVxub3B0aW9ucy5pbnNlcnRJbnRvID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gd2luZG93LnBhcmVudC5kb2N1bWVudC5oZWFkIH07XG5cbnZhciB1cGRhdGUgPSByZXF1aXJlKFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzLmpzXCIpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5pZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2FscztcblxuaWYobW9kdWxlLmhvdCkge1xuXHRtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4uLy4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuL2FnLWdyaWQuY3NzXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4uLy4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuL2FnLWdyaWQuY3NzXCIpO1xuXG5cdFx0aWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG5cblx0XHR2YXIgbG9jYWxzID0gKGZ1bmN0aW9uKGEsIGIpIHtcblx0XHRcdHZhciBrZXksIGlkeCA9IDA7XG5cblx0XHRcdGZvcihrZXkgaW4gYSkge1xuXHRcdFx0XHRpZighYiB8fCBhW2tleV0gIT09IGJba2V5XSkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRpZHgrKztcblx0XHRcdH1cblxuXHRcdFx0Zm9yKGtleSBpbiBiKSBpZHgtLTtcblxuXHRcdFx0cmV0dXJuIGlkeCA9PT0gMDtcblx0XHR9KGNvbnRlbnQubG9jYWxzLCBuZXdDb250ZW50LmxvY2FscykpO1xuXG5cdFx0aWYoIWxvY2FscykgdGhyb3cgbmV3IEVycm9yKCdBYm9ydGluZyBDU1MgSE1SIGR1ZSB0byBjaGFuZ2VkIGNzcy1tb2R1bGVzIGxvY2Fscy4nKTtcblxuXHRcdHVwZGF0ZShuZXdDb250ZW50KTtcblx0fSk7XG5cblx0bW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59IiwiXG52YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuLi8uLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanMhLi9hZy10aGVtZS1iYWxoYW0tZGFyay5jc3NcIik7XG5cbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuXG52YXIgdHJhbnNmb3JtO1xudmFyIGluc2VydEludG87XG5cblxuXG52YXIgb3B0aW9ucyA9IHtcImhtclwiOnRydWV9XG5cbm9wdGlvbnMudHJhbnNmb3JtID0gdHJhbnNmb3JtXG5vcHRpb25zLmluc2VydEludG8gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB3aW5kb3cucGFyZW50LmRvY3VtZW50LmhlYWQgfTtcblxudmFyIHVwZGF0ZSA9IHJlcXVpcmUoXCIhLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXMuanNcIikoY29udGVudCwgb3B0aW9ucyk7XG5cbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuXG5pZihtb2R1bGUuaG90KSB7XG5cdG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi8uLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanMhLi4vLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4vYWctdGhlbWUtYmFsaGFtLWRhcmsuY3NzXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4uLy4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuL2FnLXRoZW1lLWJhbGhhbS1kYXJrLmNzc1wiKTtcblxuXHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXG5cdFx0dmFyIGxvY2FscyA9IChmdW5jdGlvbihhLCBiKSB7XG5cdFx0XHR2YXIga2V5LCBpZHggPSAwO1xuXG5cdFx0XHRmb3Ioa2V5IGluIGEpIHtcblx0XHRcdFx0aWYoIWIgfHwgYVtrZXldICE9PSBiW2tleV0pIHJldHVybiBmYWxzZTtcblx0XHRcdFx0aWR4Kys7XG5cdFx0XHR9XG5cblx0XHRcdGZvcihrZXkgaW4gYikgaWR4LS07XG5cblx0XHRcdHJldHVybiBpZHggPT09IDA7XG5cdFx0fShjb250ZW50LmxvY2FscywgbmV3Q29udGVudC5sb2NhbHMpKTtcblxuXHRcdGlmKCFsb2NhbHMpIHRocm93IG5ldyBFcnJvcignQWJvcnRpbmcgQ1NTIEhNUiBkdWUgdG8gY2hhbmdlZCBjc3MtbW9kdWxlcyBsb2NhbHMuJyk7XG5cblx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdH0pO1xuXG5cdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufSIsIlxudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanMhLi4vLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4vYWctdGhlbWUtYmFsaGFtLmNzc1wiKTtcblxuaWYodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG5cbnZhciB0cmFuc2Zvcm07XG52YXIgaW5zZXJ0SW50bztcblxuXG5cbnZhciBvcHRpb25zID0ge1wiaG1yXCI6dHJ1ZX1cblxub3B0aW9ucy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm1cbm9wdGlvbnMuaW5zZXJ0SW50byA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQuaGVhZCB9O1xuXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlcy5qc1wiKShjb250ZW50LCBvcHRpb25zKTtcblxuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG5cbmlmKG1vZHVsZS5ob3QpIHtcblx0bW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uLy4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuLi8uLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanMhLi9hZy10aGVtZS1iYWxoYW0uY3NzXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4uLy4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuL2FnLXRoZW1lLWJhbGhhbS5jc3NcIik7XG5cblx0XHRpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcblxuXHRcdHZhciBsb2NhbHMgPSAoZnVuY3Rpb24oYSwgYikge1xuXHRcdFx0dmFyIGtleSwgaWR4ID0gMDtcblxuXHRcdFx0Zm9yKGtleSBpbiBhKSB7XG5cdFx0XHRcdGlmKCFiIHx8IGFba2V5XSAhPT0gYltrZXldKSByZXR1cm4gZmFsc2U7XG5cdFx0XHRcdGlkeCsrO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3Ioa2V5IGluIGIpIGlkeC0tO1xuXG5cdFx0XHRyZXR1cm4gaWR4ID09PSAwO1xuXHRcdH0oY29udGVudC5sb2NhbHMsIG5ld0NvbnRlbnQubG9jYWxzKSk7XG5cblx0XHRpZighbG9jYWxzKSB0aHJvdyBuZXcgRXJyb3IoJ0Fib3J0aW5nIENTUyBITVIgZHVlIHRvIGNoYW5nZWQgY3NzLW1vZHVsZXMgbG9jYWxzLicpO1xuXG5cdFx0dXBkYXRlKG5ld0NvbnRlbnQpO1xuXHR9KTtcblxuXHRtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn0iLCJcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4uLy4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuL2FnLXRoZW1lLW1hdGVyaWFsLmNzc1wiKTtcblxuaWYodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG5cbnZhciB0cmFuc2Zvcm07XG52YXIgaW5zZXJ0SW50bztcblxuXG5cbnZhciBvcHRpb25zID0ge1wiaG1yXCI6dHJ1ZX1cblxub3B0aW9ucy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm1cbm9wdGlvbnMuaW5zZXJ0SW50byA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQuaGVhZCB9O1xuXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlcy5qc1wiKShjb250ZW50LCBvcHRpb25zKTtcblxuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG5cbmlmKG1vZHVsZS5ob3QpIHtcblx0bW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uLy4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuLi8uLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanMhLi9hZy10aGVtZS1tYXRlcmlhbC5jc3NcIiwgZnVuY3Rpb24oKSB7XG5cdFx0dmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanMhLi4vLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4vYWctdGhlbWUtbWF0ZXJpYWwuY3NzXCIpO1xuXG5cdFx0aWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG5cblx0XHR2YXIgbG9jYWxzID0gKGZ1bmN0aW9uKGEsIGIpIHtcblx0XHRcdHZhciBrZXksIGlkeCA9IDA7XG5cblx0XHRcdGZvcihrZXkgaW4gYSkge1xuXHRcdFx0XHRpZighYiB8fCBhW2tleV0gIT09IGJba2V5XSkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRpZHgrKztcblx0XHRcdH1cblxuXHRcdFx0Zm9yKGtleSBpbiBiKSBpZHgtLTtcblxuXHRcdFx0cmV0dXJuIGlkeCA9PT0gMDtcblx0XHR9KGNvbnRlbnQubG9jYWxzLCBuZXdDb250ZW50LmxvY2FscykpO1xuXG5cdFx0aWYoIWxvY2FscykgdGhyb3cgbmV3IEVycm9yKCdBYm9ydGluZyBDU1MgSE1SIGR1ZSB0byBjaGFuZ2VkIGNzcy1tb2R1bGVzIGxvY2Fscy4nKTtcblxuXHRcdHVwZGF0ZShuZXdDb250ZW50KTtcblx0fSk7XG5cblx0bW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59IiwiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiTWFza3NcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wiQkJqXCJdID0gcm9vdFtcIkJCalwiXSB8fCB7fSwgcm9vdFtcIkJCalwiXVtcIk1hc2tzXCJdID0gZmFjdG9yeSgpO1xufSkodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuIFxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyB3ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbiBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbiBcdFx0XHR9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSA0Mik7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgOTkwNTRiZDc5ZjIzZWEwZjA5ODgiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmFzaXMtYWdncmlkLWNvbXBvbmVudHMgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgQ29tcG9uZW50IGZyb20gJy4vQ29tcG9uZW50J1xuXG5leHBvcnQgZGVmYXVsdCBDb21wb25lbnRcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9Db21wb25lbnQvaW5kZXguanMiLCJpbXBvcnQgeyBkZWNvcmF0ZSwgY3JlYXRlRGVmYXVsdFNldHRlcixcbiAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycywgZ2V0T3duS2V5cywgYmluZCB9IGZyb20gJy4vcHJpdmF0ZS91dGlscyc7XG5jb25zdCB7IGRlZmluZVByb3BlcnR5LCBnZXRQcm90b3R5cGVPZiB9ID0gT2JqZWN0O1xuXG5sZXQgbWFwU3RvcmU7XG5cbmZ1bmN0aW9uIGdldEJvdW5kU3VwZXIob2JqLCBmbikge1xuICBpZiAodHlwZW9mIFdlYWtNYXAgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFVzaW5nIEBhdXRvYmluZCBvbiAke2ZuLm5hbWV9KCkgcmVxdWlyZXMgV2Vha01hcCBzdXBwb3J0IGR1ZSB0byBpdHMgdXNlIG9mIHN1cGVyLiR7Zm4ubmFtZX0oKVxuICAgICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qYXlwaGVscHMvY29yZS1kZWNvcmF0b3JzLmpzL2lzc3Vlcy8yMGBcbiAgICApO1xuICB9XG5cbiAgaWYgKCFtYXBTdG9yZSkge1xuICAgICBtYXBTdG9yZSA9IG5ldyBXZWFrTWFwKCk7XG4gIH1cblxuICBpZiAobWFwU3RvcmUuaGFzKG9iaikgPT09IGZhbHNlKSB7XG4gICAgbWFwU3RvcmUuc2V0KG9iaiwgbmV3IFdlYWtNYXAoKSk7XG4gIH1cblxuICBjb25zdCBzdXBlclN0b3JlID0gbWFwU3RvcmUuZ2V0KG9iaik7XG5cbiAgaWYgKHN1cGVyU3RvcmUuaGFzKGZuKSA9PT0gZmFsc2UpIHtcbiAgICBzdXBlclN0b3JlLnNldChmbiwgYmluZChmbiwgb2JqKSk7XG4gIH1cblxuICByZXR1cm4gc3VwZXJTdG9yZS5nZXQoZm4pO1xufVxuXG5mdW5jdGlvbiBhdXRvYmluZENsYXNzKGtsYXNzKSB7XG4gIGNvbnN0IGRlc2NzID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhrbGFzcy5wcm90b3R5cGUpO1xuICBjb25zdCBrZXlzID0gZ2V0T3duS2V5cyhkZXNjcyk7XG5cbiAgZm9yIChsZXQgaSA9IDAsIGwgPSBrZXlzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG4gICAgY29uc3QgZGVzYyA9IGRlc2NzW2tleV07XG5cbiAgICBpZiAodHlwZW9mIGRlc2MudmFsdWUgIT09ICdmdW5jdGlvbicgfHwga2V5ID09PSAnY29uc3RydWN0b3InKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBkZWZpbmVQcm9wZXJ0eShrbGFzcy5wcm90b3R5cGUsIGtleSwgYXV0b2JpbmRNZXRob2Qoa2xhc3MucHJvdG90eXBlLCBrZXksIGRlc2MpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhdXRvYmluZE1ldGhvZCh0YXJnZXQsIGtleSwgeyB2YWx1ZTogZm4sIGNvbmZpZ3VyYWJsZSwgZW51bWVyYWJsZSB9KSB7XG4gIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYEBhdXRvYmluZCBjYW4gb25seSBiZSB1c2VkIG9uIGZ1bmN0aW9ucywgbm90OiAke2ZufWApO1xuICB9XG5cbiAgY29uc3QgeyBjb25zdHJ1Y3RvciB9ID0gdGFyZ2V0O1xuXG4gIHJldHVybiB7XG4gICAgY29uZmlndXJhYmxlLFxuICAgIGVudW1lcmFibGUsXG5cbiAgICBnZXQoKSB7XG4gICAgICAvLyBDbGFzcy5wcm90b3R5cGUua2V5IGxvb2t1cFxuICAgICAgLy8gU29tZW9uZSBhY2Nlc3NlcyB0aGUgcHJvcGVydHkgZGlyZWN0bHkgb24gdGhlIHByb3RvdHlwZSBvbiB3aGljaCBpdCBpc1xuICAgICAgLy8gYWN0dWFsbHkgZGVmaW5lZCBvbiwgaS5lLiBDbGFzcy5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoa2V5KVxuICAgICAgaWYgKHRoaXMgPT09IHRhcmdldCkge1xuICAgICAgICByZXR1cm4gZm47XG4gICAgICB9XG5cbiAgICAgIC8vIENsYXNzLnByb3RvdHlwZS5rZXkgbG9va3VwXG4gICAgICAvLyBTb21lb25lIGFjY2Vzc2VzIHRoZSBwcm9wZXJ0eSBkaXJlY3RseSBvbiBhIHByb3RvdHlwZSBidXQgaXQgd2FzIGZvdW5kXG4gICAgICAvLyB1cCB0aGUgY2hhaW4sIG5vdCBkZWZpbmVkIGRpcmVjdGx5IG9uIGl0XG4gICAgICAvLyBpLmUuIENsYXNzLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eShrZXkpID09IGZhbHNlICYmIGtleSBpbiBDbGFzcy5wcm90b3R5cGVcbiAgICAgIGlmICh0aGlzLmNvbnN0cnVjdG9yICE9PSBjb25zdHJ1Y3RvciAmJiBnZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvciA9PT0gY29uc3RydWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIGZuO1xuICAgICAgfVxuXG4gICAgICAvLyBBdXRvYm91bmQgbWV0aG9kIGNhbGxpbmcgc3VwZXIuc2FtZU1ldGhvZCgpIHdoaWNoIGlzIGFsc28gYXV0b2JvdW5kIGFuZCBzbyBvbi5cbiAgICAgIGlmICh0aGlzLmNvbnN0cnVjdG9yICE9PSBjb25zdHJ1Y3RvciAmJiBrZXkgaW4gdGhpcy5jb25zdHJ1Y3Rvci5wcm90b3R5cGUpIHtcbiAgICAgICAgcmV0dXJuIGdldEJvdW5kU3VwZXIodGhpcywgZm4pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBib3VuZEZuID0gYmluZChmbiwgdGhpcyk7XG5cbiAgICAgIGRlZmluZVByb3BlcnR5KHRoaXMsIGtleSwge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAvLyBOT1QgZW51bWVyYWJsZSB3aGVuIGl0J3MgYSBib3VuZCBtZXRob2RcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHZhbHVlOiBib3VuZEZuXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGJvdW5kRm47XG4gICAgfSxcbiAgICBzZXQ6IGNyZWF0ZURlZmF1bHRTZXR0ZXIoa2V5KVxuICB9O1xufVxuXG5mdW5jdGlvbiBoYW5kbGUoYXJncykge1xuICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gYXV0b2JpbmRDbGFzcyguLi5hcmdzKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYXV0b2JpbmRNZXRob2QoLi4uYXJncyk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXV0b2JpbmQoLi4uYXJncykge1xuICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGhhbmRsZShhcmd1bWVudHMpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGhhbmRsZShhcmdzKTtcbiAgfVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtZGVjb3JhdG9ycy9zcmMvYXV0b2JpbmQuanMiLCJpbXBvcnQgeyBkZWNvcmF0ZSB9IGZyb20gJy4vcHJpdmF0ZS91dGlscyc7XG5cbmNvbnN0IEdFTkVSSUNfRlVOQ1RJT05fRVJST1IgPSAne2NoaWxkfSBkb2VzIG5vdCBwcm9wZXJseSBvdmVycmlkZSB7cGFyZW50fSc7XG5jb25zdCBGVU5DVElPTl9SRUdFWFAgPSAvXmZ1bmN0aW9uIChbXyRhLXpBLVpcXHhBMC1cXHVGRkZGXVtfJGEtekEtWjAtOVxceEEwLVxcdUZGRkZdKik/KFxcKFteXFwpXSpcXCkpW1xcc1xcU10rJC87XG5cbmNsYXNzIFN5bnRheEVycm9yUmVwb3J0ZXIge1xuICBwYXJlbnRLbGFzcztcbiAgY2hpbGRLbGFzcztcbiAgcGFyZW50RGVzY3JpcHRvcjtcbiAgY2hpbGREZXNjcmlwdG9yO1xuICBcbiAgZ2V0IGtleSgpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZERlc2NyaXB0b3Iua2V5OyAgXG4gIH1cbiAgXG4gIGdldCBwYXJlbnROb3RhdGlvbigpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5wYXJlbnRLbGFzcy5jb25zdHJ1Y3Rvci5uYW1lfSMke3RoaXMucGFyZW50UHJvcGVydHlTaWduYXR1cmV9YDtcbiAgfVxuXG4gIGdldCBjaGlsZE5vdGF0aW9uKCkge1xuICAgIHJldHVybiBgJHt0aGlzLmNoaWxkS2xhc3MuY29uc3RydWN0b3IubmFtZX0jJHt0aGlzLmNoaWxkUHJvcGVydHlTaWduYXR1cmV9YDtcbiAgfVxuICBcbiAgZ2V0IHBhcmVudFRvcGljKCkge1xuICAgIHJldHVybiB0aGlzLl9nZXRUb3BpYyh0aGlzLnBhcmVudERlc2NyaXB0b3IpO1xuICB9XG4gIFxuICBnZXQgY2hpbGRUb3BpYygpIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0VG9waWModGhpcy5jaGlsZERlc2NyaXB0b3IpO1xuICB9XG4gIFxuICBfZ2V0VG9waWMoZGVzY3JpcHRvcikge1xuICAgIGlmIChkZXNjcmlwdG9yID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBudWxsOyAgXG4gICAgfVxuICAgIFxuICAgIGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIHtcbiAgICAgIHJldHVybiBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIH1cbiAgICBcbiAgICBpZiAoJ2dldCcgaW4gZGVzY3JpcHRvcikge1xuICAgICAgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0O1xuICAgIH1cbiAgICBcbiAgICBpZiAoJ3NldCcgaW4gZGVzY3JpcHRvcikge1xuICAgICAgcmV0dXJuIGRlc2NyaXB0b3Iuc2V0O1xuICAgIH1cbiAgfVxuICBcbiAgZ2V0IHBhcmVudFByb3BlcnR5U2lnbmF0dXJlKCkge1xuICAgIHJldHVybiB0aGlzLl9leHRyYWN0VG9waWNTaWduYXR1cmUodGhpcy5wYXJlbnRUb3BpYyk7IFxuICB9XG4gIFxuICBnZXQgY2hpbGRQcm9wZXJ0eVNpZ25hdHVyZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZXh0cmFjdFRvcGljU2lnbmF0dXJlKHRoaXMuY2hpbGRUb3BpYyk7IFxuICB9XG4gIFxuICBfZXh0cmFjdFRvcGljU2lnbmF0dXJlKHRvcGljKSB7XG4gICAgc3dpdGNoICh0eXBlb2YgdG9waWMpIHtcbiAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4dHJhY3RGdW5jdGlvblNpZ25hdHVyZSh0b3BpYyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5rZXk7XG4gICAgfVxuICB9XG4gIFxuICBfZXh0cmFjdEZ1bmN0aW9uU2lnbmF0dXJlKGZuKSB7XG4gICAgcmV0dXJuIGZuXG4gICAgICAudG9TdHJpbmcoKVxuICAgICAgLnJlcGxhY2UoXG4gICAgICAgIEZVTkNUSU9OX1JFR0VYUCxcbiAgICAgICAgKG1hdGNoLCBuYW1lID0gdGhpcy5rZXksIHBhcmFtcykgPT4gbmFtZSArIHBhcmFtc1xuICAgICAgKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHBhcmVudEtsYXNzLCBjaGlsZEtsYXNzLCBwYXJlbnREZXNjcmlwdG9yLCBjaGlsZERlc2NyaXB0b3IpIHtcbiAgICB0aGlzLnBhcmVudEtsYXNzID0gcGFyZW50S2xhc3M7XG4gICAgdGhpcy5jaGlsZEtsYXNzID0gY2hpbGRLbGFzcztcbiAgICB0aGlzLnBhcmVudERlc2NyaXB0b3IgPSBwYXJlbnREZXNjcmlwdG9yO1xuICAgIHRoaXMuY2hpbGREZXNjcmlwdG9yID0gY2hpbGREZXNjcmlwdG9yO1xuICB9XG4gIFxuICBhc3NlcnQoY29uZGl0aW9uLCBtc2cgPSAnJykge1xuICAgIGlmIChjb25kaXRpb24gIT09IHRydWUpIHtcbiAgICAgIHRoaXMuZXJyb3IoR0VORVJJQ19GVU5DVElPTl9FUlJPUiArIG1zZyk7XG4gICAgfVxuICB9XG4gIFxuICBlcnJvcihtc2cpIHtcbiAgICBtc2cgPSBtc2dcbiAgICAgIC8vIFJlcGxhY2UgbGF6aWx5LCBiZWNhdXNlIHRoZXkgYWN0dWFsbHkgbWlnaHQgbm90XG4gICAgICAvLyBiZSBhdmFpbGFibGUgaW4gYWxsIGNhc2VzXG4gICAgICAucmVwbGFjZSgne3BhcmVudH0nLCBtID0+IHRoaXMucGFyZW50Tm90YXRpb24pXG4gICAgICAucmVwbGFjZSgne2NoaWxkfScsIG0gPT4gdGhpcy5jaGlsZE5vdGF0aW9uKTtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IobXNnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXREZXNjcmlwdG9yVHlwZShkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCd2YWx1ZScpKSB7XG4gICAgcmV0dXJuICdkYXRhJztcbiAgfVxuXG4gIGlmIChkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCdnZXQnKSB8fCBkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCdzZXQnKSkge1xuICAgIHJldHVybiAnYWNjZXNzb3InO1xuICB9XG5cbiAgLy8gSWYgbm9uZSBvZiB0aGVtIGV4aXN0LCBicm93c2VycyB0cmVhdCBpdCBhc1xuICAvLyBhIGRhdGEgZGVzY3JpcHRvciB3aXRoIGEgdmFsdWUgb2YgYHVuZGVmaW5lZGBcbiAgcmV0dXJuICdkYXRhJztcbn1cblxuZnVuY3Rpb24gY2hlY2tGdW5jdGlvblNpZ25hdHVyZXMocGFyZW50LCBjaGlsZCwgcmVwb3J0ZXIpIHtcbiAgcmVwb3J0ZXIuYXNzZXJ0KHBhcmVudC5sZW5ndGggPT09IGNoaWxkLmxlbmd0aCk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrRGF0YURlc2NyaXB0b3JzKHBhcmVudCwgY2hpbGQsIHJlcG9ydGVyKSB7XG4gIGNvbnN0IHBhcmVudFZhbHVlVHlwZSA9IHR5cGVvZiBwYXJlbnQudmFsdWU7XG4gIGNvbnN0IGNoaWxkVmFsdWVUeXBlID0gdHlwZW9mIGNoaWxkLnZhbHVlO1xuICBcbiAgaWYgKHBhcmVudFZhbHVlVHlwZSA9PT0gJ3VuZGVmaW5lZCcgJiYgY2hpbGRWYWx1ZVR5cGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgLy8gY2xhc3MgcHJvcGVydGllcyBjYW4gYmUgYW55IGV4cHJlc3Npb24sIHdoaWNoIGlzbid0IHJhbiB1bnRpbCB0aGVcbiAgICAvLyB0aGUgaW5zdGFuY2UgaXMgY3JlYXRlZCwgc28gd2UgY2FuJ3QgcmVsaWFibHkgZ2V0IHR5cGUgaW5mb3JtYXRpb25cbiAgICAvLyBmb3IgdGhlbSB5ZXQgKHBlciBzcGVjKS4gUGVyaGFwcyB3aGVuIEJhYmVsIGluY2x1ZGVzIGZsb3ctdHlwZSBpbmZvXG4gICAgLy8gaW4gcnVudGltZT8gVHJpZWQgcmVnZXggc29sdXRpb25zLCBidXQgc3VwZXIgaGFja3kgYW5kIG9ubHkgZmVhc2libGVcbiAgICAvLyBvbiBwcmltaXRpdmVzLCB3aGljaCBpcyBjb25mdXNpbmcgZm9yIHVzYWdlLi4uXG4gICAgcmVwb3J0ZXIuZXJyb3IoYGRlc2NyaXB0b3IgdmFsdWVzIGFyZSBib3RoIHVuZGVmaW5lZC4gKGNsYXNzIHByb3BlcnRpZXMgYXJlIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZCknYCk7XG4gIH1cbiAgXG4gIGlmIChwYXJlbnRWYWx1ZVR5cGUgIT09IGNoaWxkVmFsdWVUeXBlKSB7XG4gICAgY29uc3QgaXNGdW5jdGlvbk92ZXJVbmRlZmluZWQgPSAoY2hpbGRWYWx1ZVR5cGUgPT09ICdmdW5jdGlvbicgJiYgcGFyZW50VmFsdWVUeXBlID09PSB1bmRlZmluZWQpO1xuICAgIC8vIEV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgY2xhc3MgcHJvcGVydGllcywgdGhpc1xuICAgIC8vIHdpbGwgc3RpbGwgaGFuZGxlIG1vcmUgdGhhbiBqdXN0IGZ1bmN0aW9ucywganVzdCBpbiBjYXNlLlxuICAgIC8vIFNoYWRvd2luZyBhbiB1bmRlZmluZWQgdmFsdWUgaXMgYW4gZXJyb3IgaWYgdGhlIGluaGVyaXRlZFxuICAgIC8vIHZhbHVlIHdhcyB1bmRlZmluZWQgKHVzdWFsbHkgYSBjbGFzcyBwcm9wZXJ0eSwgbm90IGEgbWV0aG9kKVxuICAgIGlmIChpc0Z1bmN0aW9uT3ZlclVuZGVmaW5lZCB8fCBwYXJlbnRWYWx1ZVR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVwb3J0ZXIuZXJyb3IoYHZhbHVlIHR5cGVzIGRvIG5vdCBtYXRjaC4ge3BhcmVudH0gaXMgXCIke3BhcmVudFZhbHVlVHlwZX1cIiwge2NoaWxkfSBpcyBcIiR7Y2hpbGRWYWx1ZVR5cGV9XCJgKTtcbiAgICB9XG4gIH1cbiAgXG4gIC8vIFN3aXRjaCwgaW4gcHJlcGFyYXRpb24gZm9yIHN1cHBvcnRpbmcgbW9yZSB0eXBlc1xuICBzd2l0Y2ggKGNoaWxkVmFsdWVUeXBlKSB7XG4gICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgY2hlY2tGdW5jdGlvblNpZ25hdHVyZXMocGFyZW50LnZhbHVlLCBjaGlsZC52YWx1ZSwgcmVwb3J0ZXIpO1xuICAgICAgYnJlYWs7XG4gICAgICBcbiAgICBkZWZhdWx0OlxuICAgICAgcmVwb3J0ZXIuZXJyb3IoYFVuZXhwZWN0ZWQgZXJyb3IuIFBsZWFzZSBmaWxlIGEgYnVnIHdpdGg6IHtwYXJlbnR9IGlzIFwiJHtwYXJlbnRWYWx1ZVR5cGV9XCIsIHtjaGlsZH0gaXMgXCIke2NoaWxkVmFsdWVUeXBlfVwiYCk7XG4gICAgICBicmVhaztcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja0FjY2Vzc29yRGVzY3JpcHRvcnMocGFyZW50LCBjaGlsZCwgcmVwb3J0ZXIpIHtcbiAgY29uc3QgcGFyZW50SGFzR2V0dGVyID0gdHlwZW9mIHBhcmVudC5nZXQgPT09ICdmdW5jdGlvbic7XG4gIGNvbnN0IGNoaWxkSGFzR2V0dGVyID0gdHlwZW9mIGNoaWxkLmdldCA9PT0gJ2Z1bmN0aW9uJztcbiAgY29uc3QgcGFyZW50SGFzU2V0dGVyID0gdHlwZW9mIHBhcmVudC5zZXQgPT09ICdmdW5jdGlvbic7XG4gIGNvbnN0IGNoaWxkSGFzU2V0dGVyID0gdHlwZW9mIGNoaWxkLnNldCA9PT0gJ2Z1bmN0aW9uJztcbiAgXG4gIGlmIChwYXJlbnRIYXNHZXR0ZXIgfHwgY2hpbGRIYXNHZXR0ZXIpIHtcbiAgICBpZiAoIXBhcmVudEhhc0dldHRlciAmJiBwYXJlbnRIYXNTZXR0ZXIpIHtcbiAgICAgIHJlcG9ydGVyLmVycm9yKGB7cGFyZW50fSBpcyBzZXR0ZXIgYnV0IHtjaGlsZH0gaXMgZ2V0dGVyYCk7XG4gICAgfVxuICAgIFxuICAgIGlmICghY2hpbGRIYXNHZXR0ZXIgJiYgY2hpbGRIYXNTZXR0ZXIpIHtcbiAgICAgIHJlcG9ydGVyLmVycm9yKGB7cGFyZW50fSBpcyBnZXR0ZXIgYnV0IHtjaGlsZH0gaXMgc2V0dGVyYCk7XG4gICAgfVxuICAgIFxuICAgIGNoZWNrRnVuY3Rpb25TaWduYXR1cmVzKHBhcmVudC5nZXQsIGNoaWxkLmdldCwgcmVwb3J0ZXIpO1xuICB9XG4gIFxuICBpZiAocGFyZW50SGFzU2V0dGVyIHx8IGNoaWxkSGFzU2V0dGVyKSB7XG4gICAgaWYgKCFwYXJlbnRIYXNTZXR0ZXIgJiYgcGFyZW50SGFzR2V0dGVyKSB7XG4gICAgICByZXBvcnRlci5lcnJvcihge3BhcmVudH0gaXMgZ2V0dGVyIGJ1dCB7Y2hpbGR9IGlzIHNldHRlcmApO1xuICAgIH1cbiAgICBcbiAgICBpZiAoIWNoaWxkSGFzU2V0dGVyICYmIGNoaWxkSGFzR2V0dGVyKSB7XG4gICAgICByZXBvcnRlci5lcnJvcihge3BhcmVudH0gaXMgc2V0dGVyIGJ1dCB7Y2hpbGR9IGlzIGdldHRlcmApO1xuICAgIH1cbiAgICBcbiAgICBjaGVja0Z1bmN0aW9uU2lnbmF0dXJlcyhwYXJlbnQuc2V0LCBjaGlsZC5zZXQsIHJlcG9ydGVyKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja0Rlc2NyaXB0b3JzKHBhcmVudCwgY2hpbGQsIHJlcG9ydGVyKSB7XG4gIGNvbnN0IHBhcmVudFR5cGUgPSBnZXREZXNjcmlwdG9yVHlwZShwYXJlbnQpO1xuICBjb25zdCBjaGlsZFR5cGUgPSBnZXREZXNjcmlwdG9yVHlwZShjaGlsZCk7XG5cbiAgaWYgKHBhcmVudFR5cGUgIT09IGNoaWxkVHlwZSkge1xuICAgIHJlcG9ydGVyLmVycm9yKGBkZXNjcmlwdG9yIHR5cGVzIGRvIG5vdCBtYXRjaC4ge3BhcmVudH0gaXMgXCIke3BhcmVudFR5cGV9XCIsIHtjaGlsZH0gaXMgXCIke2NoaWxkVHlwZX1cImApO1xuICB9XG5cbiAgc3dpdGNoIChjaGlsZFR5cGUpIHtcbiAgICBjYXNlICdkYXRhJzpcbiAgICAgIGNoZWNrRGF0YURlc2NyaXB0b3JzKHBhcmVudCwgY2hpbGQsIHJlcG9ydGVyKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnYWNjZXNzb3InOlxuICAgICAgY2hlY2tBY2Nlc3NvckRlc2NyaXB0b3JzKHBhcmVudCwgY2hpbGQsIHJlcG9ydGVyKTtcbiAgICAgIGJyZWFrO1xuICB9XG59XG5cbmNvbnN0IHN1Z2dlc3Rpb25UcmFuc2Zvcm1zID0gW1xuICBrZXkgPT4ga2V5LnRvTG93ZXJDYXNlKCksXG4gIGtleSA9PiBrZXkudG9VcHBlckNhc2UoKSxcbiAga2V5ID0+IGtleSArICdzJyxcbiAga2V5ID0+IGtleS5zbGljZSgwLCAtMSksXG4gIGtleSA9PiBrZXkuc2xpY2UoMSwga2V5Lmxlbmd0aCksXG5dO1xuXG5mdW5jdGlvbiBmaW5kUG9zc2libGVBbHRlcm5hdGl2ZXMoc3VwZXJLbGFzcywga2V5KSB7XG4gIGZvciAobGV0IGkgPSAwLCBsID0gc3VnZ2VzdGlvblRyYW5zZm9ybXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgY29uc3QgZm4gPSBzdWdnZXN0aW9uVHJhbnNmb3Jtc1tpXTtcbiAgICBjb25zdCBzdWdnZXN0aW9uID0gZm4oa2V5KTtcblxuICAgIGlmIChzdWdnZXN0aW9uIGluIHN1cGVyS2xhc3MpIHtcbiAgICAgIHJldHVybiBzdWdnZXN0aW9uO1xuICAgIH1cbiAgfVxuICBcbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZURlc2NyaXB0b3IodGFyZ2V0LCBrZXksIGRlc2NyaXB0b3IpIHtcbiAgZGVzY3JpcHRvci5rZXkgPSBrZXk7XG4gIGNvbnN0IHN1cGVyS2xhc3MgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGFyZ2V0KTtcbiAgY29uc3Qgc3VwZXJEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzdXBlcktsYXNzLCBrZXkpO1xuICBjb25zdCByZXBvcnRlciA9IG5ldyBTeW50YXhFcnJvclJlcG9ydGVyKHN1cGVyS2xhc3MsIHRhcmdldCwgc3VwZXJEZXNjcmlwdG9yLCBkZXNjcmlwdG9yKTtcbiAgXG4gIGlmIChzdXBlckRlc2NyaXB0b3IgPT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHN1Z2dlc3RlZEtleSA9IGZpbmRQb3NzaWJsZUFsdGVybmF0aXZlcyhzdXBlcktsYXNzLCBrZXkpO1xuICAgIGNvbnN0IHN1Z2dlc3Rpb24gPSBzdWdnZXN0ZWRLZXkgPyBgXFxuXFxuICBEaWQgeW91IG1lYW4gXCIke3N1Z2dlc3RlZEtleX1cIj9gIDogJyc7XG4gICAgcmVwb3J0ZXIuZXJyb3IoYE5vIGRlc2NyaXB0b3IgbWF0Y2hpbmcge2NoaWxkfSB3YXMgZm91bmQgb24gdGhlIHByb3RvdHlwZSBjaGFpbi4ke3N1Z2dlc3Rpb259YCk7XG4gIH1cbiAgXG4gIGNoZWNrRGVzY3JpcHRvcnMoc3VwZXJEZXNjcmlwdG9yLCBkZXNjcmlwdG9yLCByZXBvcnRlcik7XG4gIFxuICByZXR1cm4gZGVzY3JpcHRvcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3ZlcnJpZGUoLi4uYXJncykge1xuICByZXR1cm4gZGVjb3JhdGUoaGFuZGxlRGVzY3JpcHRvciwgYXJncyk7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1kZWNvcmF0b3JzL3NyYy9vdmVycmlkZS5qcyIsImltcG9ydCBTeW1ib2wgZnJvbSAnLi9fU3ltYm9sLmpzJztcbmltcG9ydCBnZXRSYXdUYWcgZnJvbSAnLi9fZ2V0UmF3VGFnLmpzJztcbmltcG9ydCBvYmplY3RUb1N0cmluZyBmcm9tICcuL19vYmplY3RUb1N0cmluZy5qcyc7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBudWxsVGFnID0gJ1tvYmplY3QgTnVsbF0nLFxuICAgIHVuZGVmaW5lZFRhZyA9ICdbb2JqZWN0IFVuZGVmaW5lZF0nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0VGFnYCB3aXRob3V0IGZhbGxiYWNrcyBmb3IgYnVnZ3kgZW52aXJvbm1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXRUYWcodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6IG51bGxUYWc7XG4gIH1cbiAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFsdWUpKVxuICAgID8gZ2V0UmF3VGFnKHZhbHVlKVxuICAgIDogb2JqZWN0VG9TdHJpbmcodmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlR2V0VGFnO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUdldFRhZy5qcyIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc09iamVjdExpa2U7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzT2JqZWN0TGlrZS5qcyIsIi8qXG5cdE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG5cdEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG4vLyBjc3MgYmFzZSBjb2RlLCBpbmplY3RlZCBieSB0aGUgY3NzLWxvYWRlclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbih1c2VTb3VyY2VNYXApIHtcblx0dmFyIGxpc3QgPSBbXTtcblxuXHQvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cdGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcblx0XHRyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcblx0XHRcdHZhciBjb250ZW50ID0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtLCB1c2VTb3VyY2VNYXApO1xuXHRcdFx0aWYoaXRlbVsyXSkge1xuXHRcdFx0XHRyZXR1cm4gXCJAbWVkaWEgXCIgKyBpdGVtWzJdICsgXCJ7XCIgKyBjb250ZW50ICsgXCJ9XCI7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gY29udGVudDtcblx0XHRcdH1cblx0XHR9KS5qb2luKFwiXCIpO1xuXHR9O1xuXG5cdC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG5cdGxpc3QuaSA9IGZ1bmN0aW9uKG1vZHVsZXMsIG1lZGlhUXVlcnkpIHtcblx0XHRpZih0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIilcblx0XHRcdG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIFwiXCJdXTtcblx0XHR2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgaWQgPSB0aGlzW2ldWzBdO1xuXHRcdFx0aWYodHlwZW9mIGlkID09PSBcIm51bWJlclwiKVxuXHRcdFx0XHRhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG5cdFx0fVxuXHRcdGZvcihpID0gMDsgaSA8IG1vZHVsZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBpdGVtID0gbW9kdWxlc1tpXTtcblx0XHRcdC8vIHNraXAgYWxyZWFkeSBpbXBvcnRlZCBtb2R1bGVcblx0XHRcdC8vIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbm90IDEwMCUgcGVyZmVjdCBmb3Igd2VpcmQgbWVkaWEgcXVlcnkgY29tYmluYXRpb25zXG5cdFx0XHQvLyAgd2hlbiBhIG1vZHVsZSBpcyBpbXBvcnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIGRpZmZlcmVudCBtZWRpYSBxdWVyaWVzLlxuXHRcdFx0Ly8gIEkgaG9wZSB0aGlzIHdpbGwgbmV2ZXIgb2NjdXIgKEhleSB0aGlzIHdheSB3ZSBoYXZlIHNtYWxsZXIgYnVuZGxlcylcblx0XHRcdGlmKHR5cGVvZiBpdGVtWzBdICE9PSBcIm51bWJlclwiIHx8ICFhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG5cdFx0XHRcdGlmKG1lZGlhUXVlcnkgJiYgIWl0ZW1bMl0pIHtcblx0XHRcdFx0XHRpdGVtWzJdID0gbWVkaWFRdWVyeTtcblx0XHRcdFx0fSBlbHNlIGlmKG1lZGlhUXVlcnkpIHtcblx0XHRcdFx0XHRpdGVtWzJdID0gXCIoXCIgKyBpdGVtWzJdICsgXCIpIGFuZCAoXCIgKyBtZWRpYVF1ZXJ5ICsgXCIpXCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0bGlzdC5wdXNoKGl0ZW0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0cmV0dXJuIGxpc3Q7XG59O1xuXG5mdW5jdGlvbiBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0sIHVzZVNvdXJjZU1hcCkge1xuXHR2YXIgY29udGVudCA9IGl0ZW1bMV0gfHwgJyc7XG5cdHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcblx0aWYgKCFjc3NNYXBwaW5nKSB7XG5cdFx0cmV0dXJuIGNvbnRlbnQ7XG5cdH1cblxuXHRpZiAodXNlU291cmNlTWFwICYmIHR5cGVvZiBidG9hID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0dmFyIHNvdXJjZU1hcHBpbmcgPSB0b0NvbW1lbnQoY3NzTWFwcGluZyk7XG5cdFx0dmFyIHNvdXJjZVVSTHMgPSBjc3NNYXBwaW5nLnNvdXJjZXMubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcblx0XHRcdHJldHVybiAnLyojIHNvdXJjZVVSTD0nICsgY3NzTWFwcGluZy5zb3VyY2VSb290ICsgc291cmNlICsgJyAqLydcblx0XHR9KTtcblxuXHRcdHJldHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oJ1xcbicpO1xuXHR9XG5cblx0cmV0dXJuIFtjb250ZW50XS5qb2luKCdcXG4nKTtcbn1cblxuLy8gQWRhcHRlZCBmcm9tIGNvbnZlcnQtc291cmNlLW1hcCAoTUlUKVxuZnVuY3Rpb24gdG9Db21tZW50KHNvdXJjZU1hcCkge1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcblx0dmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSk7XG5cdHZhciBkYXRhID0gJ3NvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LCcgKyBiYXNlNjQ7XG5cblx0cmV0dXJuICcvKiMgJyArIGRhdGEgKyAnICovJztcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2xpYi9jc3MtYmFzZS5qcyIsIi8qXG5cdE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG5cdEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG5cbnZhciBzdHlsZXNJbkRvbSA9IHt9O1xuXG52YXJcdG1lbW9pemUgPSBmdW5jdGlvbiAoZm4pIHtcblx0dmFyIG1lbW87XG5cblx0cmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0XHRpZiAodHlwZW9mIG1lbW8gPT09IFwidW5kZWZpbmVkXCIpIG1lbW8gPSBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdHJldHVybiBtZW1vO1xuXHR9O1xufTtcblxudmFyIGlzT2xkSUUgPSBtZW1vaXplKGZ1bmN0aW9uICgpIHtcblx0Ly8gVGVzdCBmb3IgSUUgPD0gOSBhcyBwcm9wb3NlZCBieSBCcm93c2VyaGFja3Ncblx0Ly8gQHNlZSBodHRwOi8vYnJvd3NlcmhhY2tzLmNvbS8jaGFjay1lNzFkODY5MmY2NTMzNDE3M2ZlZTcxNWMyMjJjYjgwNVxuXHQvLyBUZXN0cyBmb3IgZXhpc3RlbmNlIG9mIHN0YW5kYXJkIGdsb2JhbHMgaXMgdG8gYWxsb3cgc3R5bGUtbG9hZGVyXG5cdC8vIHRvIG9wZXJhdGUgY29ycmVjdGx5IGludG8gbm9uLXN0YW5kYXJkIGVudmlyb25tZW50c1xuXHQvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrLWNvbnRyaWIvc3R5bGUtbG9hZGVyL2lzc3Vlcy8xNzdcblx0cmV0dXJuIHdpbmRvdyAmJiBkb2N1bWVudCAmJiBkb2N1bWVudC5hbGwgJiYgIXdpbmRvdy5hdG9iO1xufSk7XG5cbnZhciBnZXRUYXJnZXQgPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldCk7XG59O1xuXG52YXIgZ2V0RWxlbWVudCA9IChmdW5jdGlvbiAoZm4pIHtcblx0dmFyIG1lbW8gPSB7fTtcblxuXHRyZXR1cm4gZnVuY3Rpb24odGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgcGFzc2luZyBmdW5jdGlvbiBpbiBvcHRpb25zLCB0aGVuIHVzZSBpdCBmb3IgcmVzb2x2ZSBcImhlYWRcIiBlbGVtZW50LlxuICAgICAgICAgICAgICAgIC8vIFVzZWZ1bCBmb3IgU2hhZG93IFJvb3Qgc3R5bGUgaS5lXG4gICAgICAgICAgICAgICAgLy8ge1xuICAgICAgICAgICAgICAgIC8vICAgaW5zZXJ0SW50bzogZnVuY3Rpb24gKCkgeyByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNmb29cIikuc2hhZG93Um9vdCB9XG4gICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG5cdFx0XHR2YXIgc3R5bGVUYXJnZXQgPSBnZXRUYXJnZXQuY2FsbCh0aGlzLCB0YXJnZXQpO1xuXHRcdFx0Ly8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcblx0XHRcdGlmICh3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQgJiYgc3R5bGVUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHQvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuXHRcdFx0XHRcdC8vIGR1ZSB0byBjcm9zcy1vcmlnaW4gcmVzdHJpY3Rpb25zXG5cdFx0XHRcdFx0c3R5bGVUYXJnZXQgPSBzdHlsZVRhcmdldC5jb250ZW50RG9jdW1lbnQuaGVhZDtcblx0XHRcdFx0fSBjYXRjaChlKSB7XG5cdFx0XHRcdFx0c3R5bGVUYXJnZXQgPSBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRtZW1vW3RhcmdldF0gPSBzdHlsZVRhcmdldDtcblx0XHR9XG5cdFx0cmV0dXJuIG1lbW9bdGFyZ2V0XVxuXHR9O1xufSkoKTtcblxudmFyIHNpbmdsZXRvbiA9IG51bGw7XG52YXJcdHNpbmdsZXRvbkNvdW50ZXIgPSAwO1xudmFyXHRzdHlsZXNJbnNlcnRlZEF0VG9wID0gW107XG5cbnZhclx0Zml4VXJscyA9IHJlcXVpcmUoXCIuL3VybHNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obGlzdCwgb3B0aW9ucykge1xuXHRpZiAodHlwZW9mIERFQlVHICE9PSBcInVuZGVmaW5lZFwiICYmIERFQlVHKSB7XG5cdFx0aWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IEVycm9yKFwiVGhlIHN0eWxlLWxvYWRlciBjYW5ub3QgYmUgdXNlZCBpbiBhIG5vbi1icm93c2VyIGVudmlyb25tZW50XCIpO1xuXHR9XG5cblx0b3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cblx0b3B0aW9ucy5hdHRycyA9IHR5cGVvZiBvcHRpb25zLmF0dHJzID09PSBcIm9iamVjdFwiID8gb3B0aW9ucy5hdHRycyA6IHt9O1xuXG5cdC8vIEZvcmNlIHNpbmdsZS10YWcgc29sdXRpb24gb24gSUU2LTksIHdoaWNoIGhhcyBhIGhhcmQgbGltaXQgb24gdGhlICMgb2YgPHN0eWxlPlxuXHQvLyB0YWdzIGl0IHdpbGwgYWxsb3cgb24gYSBwYWdlXG5cdGlmICghb3B0aW9ucy5zaW5nbGV0b24gJiYgdHlwZW9mIG9wdGlvbnMuc2luZ2xldG9uICE9PSBcImJvb2xlYW5cIikgb3B0aW9ucy5zaW5nbGV0b24gPSBpc09sZElFKCk7XG5cblx0Ly8gQnkgZGVmYXVsdCwgYWRkIDxzdHlsZT4gdGFncyB0byB0aGUgPGhlYWQ+IGVsZW1lbnRcbiAgICAgICAgaWYgKCFvcHRpb25zLmluc2VydEludG8pIG9wdGlvbnMuaW5zZXJ0SW50byA9IFwiaGVhZFwiO1xuXG5cdC8vIEJ5IGRlZmF1bHQsIGFkZCA8c3R5bGU+IHRhZ3MgdG8gdGhlIGJvdHRvbSBvZiB0aGUgdGFyZ2V0XG5cdGlmICghb3B0aW9ucy5pbnNlcnRBdCkgb3B0aW9ucy5pbnNlcnRBdCA9IFwiYm90dG9tXCI7XG5cblx0dmFyIHN0eWxlcyA9IGxpc3RUb1N0eWxlcyhsaXN0LCBvcHRpb25zKTtcblxuXHRhZGRTdHlsZXNUb0RvbShzdHlsZXMsIG9wdGlvbnMpO1xuXG5cdHJldHVybiBmdW5jdGlvbiB1cGRhdGUgKG5ld0xpc3QpIHtcblx0XHR2YXIgbWF5UmVtb3ZlID0gW107XG5cblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGl0ZW0gPSBzdHlsZXNbaV07XG5cdFx0XHR2YXIgZG9tU3R5bGUgPSBzdHlsZXNJbkRvbVtpdGVtLmlkXTtcblxuXHRcdFx0ZG9tU3R5bGUucmVmcy0tO1xuXHRcdFx0bWF5UmVtb3ZlLnB1c2goZG9tU3R5bGUpO1xuXHRcdH1cblxuXHRcdGlmKG5ld0xpc3QpIHtcblx0XHRcdHZhciBuZXdTdHlsZXMgPSBsaXN0VG9TdHlsZXMobmV3TGlzdCwgb3B0aW9ucyk7XG5cdFx0XHRhZGRTdHlsZXNUb0RvbShuZXdTdHlsZXMsIG9wdGlvbnMpO1xuXHRcdH1cblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgbWF5UmVtb3ZlLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgZG9tU3R5bGUgPSBtYXlSZW1vdmVbaV07XG5cblx0XHRcdGlmKGRvbVN0eWxlLnJlZnMgPT09IDApIHtcblx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBkb21TdHlsZS5wYXJ0cy5sZW5ndGg7IGorKykgZG9tU3R5bGUucGFydHNbal0oKTtcblxuXHRcdFx0XHRkZWxldGUgc3R5bGVzSW5Eb21bZG9tU3R5bGUuaWRdO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcbn07XG5cbmZ1bmN0aW9uIGFkZFN0eWxlc1RvRG9tIChzdHlsZXMsIG9wdGlvbnMpIHtcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXMubGVuZ3RoOyBpKyspIHtcblx0XHR2YXIgaXRlbSA9IHN0eWxlc1tpXTtcblx0XHR2YXIgZG9tU3R5bGUgPSBzdHlsZXNJbkRvbVtpdGVtLmlkXTtcblxuXHRcdGlmKGRvbVN0eWxlKSB7XG5cdFx0XHRkb21TdHlsZS5yZWZzKys7XG5cblx0XHRcdGZvcih2YXIgaiA9IDA7IGogPCBkb21TdHlsZS5wYXJ0cy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRkb21TdHlsZS5wYXJ0c1tqXShpdGVtLnBhcnRzW2pdKTtcblx0XHRcdH1cblxuXHRcdFx0Zm9yKDsgaiA8IGl0ZW0ucGFydHMubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0ZG9tU3R5bGUucGFydHMucHVzaChhZGRTdHlsZShpdGVtLnBhcnRzW2pdLCBvcHRpb25zKSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZhciBwYXJ0cyA9IFtdO1xuXG5cdFx0XHRmb3IodmFyIGogPSAwOyBqIDwgaXRlbS5wYXJ0cy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRwYXJ0cy5wdXNoKGFkZFN0eWxlKGl0ZW0ucGFydHNbal0sIG9wdGlvbnMpKTtcblx0XHRcdH1cblxuXHRcdFx0c3R5bGVzSW5Eb21baXRlbS5pZF0gPSB7aWQ6IGl0ZW0uaWQsIHJlZnM6IDEsIHBhcnRzOiBwYXJ0c307XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIGxpc3RUb1N0eWxlcyAobGlzdCwgb3B0aW9ucykge1xuXHR2YXIgc3R5bGVzID0gW107XG5cdHZhciBuZXdTdHlsZXMgPSB7fTtcblxuXHRmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHR2YXIgaXRlbSA9IGxpc3RbaV07XG5cdFx0dmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG5cdFx0dmFyIGNzcyA9IGl0ZW1bMV07XG5cdFx0dmFyIG1lZGlhID0gaXRlbVsyXTtcblx0XHR2YXIgc291cmNlTWFwID0gaXRlbVszXTtcblx0XHR2YXIgcGFydCA9IHtjc3M6IGNzcywgbWVkaWE6IG1lZGlhLCBzb3VyY2VNYXA6IHNvdXJjZU1hcH07XG5cblx0XHRpZighbmV3U3R5bGVzW2lkXSkgc3R5bGVzLnB1c2gobmV3U3R5bGVzW2lkXSA9IHtpZDogaWQsIHBhcnRzOiBbcGFydF19KTtcblx0XHRlbHNlIG5ld1N0eWxlc1tpZF0ucGFydHMucHVzaChwYXJ0KTtcblx0fVxuXG5cdHJldHVybiBzdHlsZXM7XG59XG5cbmZ1bmN0aW9uIGluc2VydFN0eWxlRWxlbWVudCAob3B0aW9ucywgc3R5bGUpIHtcblx0dmFyIHRhcmdldCA9IGdldEVsZW1lbnQob3B0aW9ucy5pbnNlcnRJbnRvKVxuXG5cdGlmICghdGFyZ2V0KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmluZCBhIHN0eWxlIHRhcmdldC4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhlICdpbnNlcnRJbnRvJyBwYXJhbWV0ZXIgaXMgaW52YWxpZC5cIik7XG5cdH1cblxuXHR2YXIgbGFzdFN0eWxlRWxlbWVudEluc2VydGVkQXRUb3AgPSBzdHlsZXNJbnNlcnRlZEF0VG9wW3N0eWxlc0luc2VydGVkQXRUb3AubGVuZ3RoIC0gMV07XG5cblx0aWYgKG9wdGlvbnMuaW5zZXJ0QXQgPT09IFwidG9wXCIpIHtcblx0XHRpZiAoIWxhc3RTdHlsZUVsZW1lbnRJbnNlcnRlZEF0VG9wKSB7XG5cdFx0XHR0YXJnZXQuaW5zZXJ0QmVmb3JlKHN0eWxlLCB0YXJnZXQuZmlyc3RDaGlsZCk7XG5cdFx0fSBlbHNlIGlmIChsYXN0U3R5bGVFbGVtZW50SW5zZXJ0ZWRBdFRvcC5uZXh0U2libGluZykge1xuXHRcdFx0dGFyZ2V0Lmluc2VydEJlZm9yZShzdHlsZSwgbGFzdFN0eWxlRWxlbWVudEluc2VydGVkQXRUb3AubmV4dFNpYmxpbmcpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuXHRcdH1cblx0XHRzdHlsZXNJbnNlcnRlZEF0VG9wLnB1c2goc3R5bGUpO1xuXHR9IGVsc2UgaWYgKG9wdGlvbnMuaW5zZXJ0QXQgPT09IFwiYm90dG9tXCIpIHtcblx0XHR0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zLmluc2VydEF0ID09PSBcIm9iamVjdFwiICYmIG9wdGlvbnMuaW5zZXJ0QXQuYmVmb3JlKSB7XG5cdFx0dmFyIG5leHRTaWJsaW5nID0gZ2V0RWxlbWVudChvcHRpb25zLmluc2VydEludG8gKyBcIiBcIiArIG9wdGlvbnMuaW5zZXJ0QXQuYmVmb3JlKTtcblx0XHR0YXJnZXQuaW5zZXJ0QmVmb3JlKHN0eWxlLCBuZXh0U2libGluZyk7XG5cdH0gZWxzZSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiW1N0eWxlIExvYWRlcl1cXG5cXG4gSW52YWxpZCB2YWx1ZSBmb3IgcGFyYW1ldGVyICdpbnNlcnRBdCcgKCdvcHRpb25zLmluc2VydEF0JykgZm91bmQuXFxuIE11c3QgYmUgJ3RvcCcsICdib3R0b20nLCBvciBPYmplY3QuXFxuIChodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay1jb250cmliL3N0eWxlLWxvYWRlciNpbnNlcnRhdClcXG5cIik7XG5cdH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlU3R5bGVFbGVtZW50IChzdHlsZSkge1xuXHRpZiAoc3R5bGUucGFyZW50Tm9kZSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXHRzdHlsZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlKTtcblxuXHR2YXIgaWR4ID0gc3R5bGVzSW5zZXJ0ZWRBdFRvcC5pbmRleE9mKHN0eWxlKTtcblx0aWYoaWR4ID49IDApIHtcblx0XHRzdHlsZXNJbnNlcnRlZEF0VG9wLnNwbGljZShpZHgsIDEpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN0eWxlRWxlbWVudCAob3B0aW9ucykge1xuXHR2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG5cblx0b3B0aW9ucy5hdHRycy50eXBlID0gXCJ0ZXh0L2Nzc1wiO1xuXG5cdGFkZEF0dHJzKHN0eWxlLCBvcHRpb25zLmF0dHJzKTtcblx0aW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMsIHN0eWxlKTtcblxuXHRyZXR1cm4gc3R5bGU7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxpbmtFbGVtZW50IChvcHRpb25zKSB7XG5cdHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpbmtcIik7XG5cblx0b3B0aW9ucy5hdHRycy50eXBlID0gXCJ0ZXh0L2Nzc1wiO1xuXHRvcHRpb25zLmF0dHJzLnJlbCA9IFwic3R5bGVzaGVldFwiO1xuXG5cdGFkZEF0dHJzKGxpbmssIG9wdGlvbnMuYXR0cnMpO1xuXHRpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucywgbGluayk7XG5cblx0cmV0dXJuIGxpbms7XG59XG5cbmZ1bmN0aW9uIGFkZEF0dHJzIChlbCwgYXR0cnMpIHtcblx0T2JqZWN0LmtleXMoYXR0cnMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuXHRcdGVsLnNldEF0dHJpYnV0ZShrZXksIGF0dHJzW2tleV0pO1xuXHR9KTtcbn1cblxuZnVuY3Rpb24gYWRkU3R5bGUgKG9iaiwgb3B0aW9ucykge1xuXHR2YXIgc3R5bGUsIHVwZGF0ZSwgcmVtb3ZlLCByZXN1bHQ7XG5cblx0Ly8gSWYgYSB0cmFuc2Zvcm0gZnVuY3Rpb24gd2FzIGRlZmluZWQsIHJ1biBpdCBvbiB0aGUgY3NzXG5cdGlmIChvcHRpb25zLnRyYW5zZm9ybSAmJiBvYmouY3NzKSB7XG5cdCAgICByZXN1bHQgPSBvcHRpb25zLnRyYW5zZm9ybShvYmouY3NzKTtcblxuXHQgICAgaWYgKHJlc3VsdCkge1xuXHQgICAgXHQvLyBJZiB0cmFuc2Zvcm0gcmV0dXJucyBhIHZhbHVlLCB1c2UgdGhhdCBpbnN0ZWFkIG9mIHRoZSBvcmlnaW5hbCBjc3MuXG5cdCAgICBcdC8vIFRoaXMgYWxsb3dzIHJ1bm5pbmcgcnVudGltZSB0cmFuc2Zvcm1hdGlvbnMgb24gdGhlIGNzcy5cblx0ICAgIFx0b2JqLmNzcyA9IHJlc3VsdDtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICBcdC8vIElmIHRoZSB0cmFuc2Zvcm0gZnVuY3Rpb24gcmV0dXJucyBhIGZhbHN5IHZhbHVlLCBkb24ndCBhZGQgdGhpcyBjc3MuXG5cdCAgICBcdC8vIFRoaXMgYWxsb3dzIGNvbmRpdGlvbmFsIGxvYWRpbmcgb2YgY3NzXG5cdCAgICBcdHJldHVybiBmdW5jdGlvbigpIHtcblx0ICAgIFx0XHQvLyBub29wXG5cdCAgICBcdH07XG5cdCAgICB9XG5cdH1cblxuXHRpZiAob3B0aW9ucy5zaW5nbGV0b24pIHtcblx0XHR2YXIgc3R5bGVJbmRleCA9IHNpbmdsZXRvbkNvdW50ZXIrKztcblxuXHRcdHN0eWxlID0gc2luZ2xldG9uIHx8IChzaW5nbGV0b24gPSBjcmVhdGVTdHlsZUVsZW1lbnQob3B0aW9ucykpO1xuXG5cdFx0dXBkYXRlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlLCBzdHlsZUluZGV4LCBmYWxzZSk7XG5cdFx0cmVtb3ZlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlLCBzdHlsZUluZGV4LCB0cnVlKTtcblxuXHR9IGVsc2UgaWYgKFxuXHRcdG9iai5zb3VyY2VNYXAgJiZcblx0XHR0eXBlb2YgVVJMID09PSBcImZ1bmN0aW9uXCIgJiZcblx0XHR0eXBlb2YgVVJMLmNyZWF0ZU9iamVjdFVSTCA9PT0gXCJmdW5jdGlvblwiICYmXG5cdFx0dHlwZW9mIFVSTC5yZXZva2VPYmplY3RVUkwgPT09IFwiZnVuY3Rpb25cIiAmJlxuXHRcdHR5cGVvZiBCbG9iID09PSBcImZ1bmN0aW9uXCIgJiZcblx0XHR0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiXG5cdCkge1xuXHRcdHN0eWxlID0gY3JlYXRlTGlua0VsZW1lbnQob3B0aW9ucyk7XG5cdFx0dXBkYXRlID0gdXBkYXRlTGluay5iaW5kKG51bGwsIHN0eWxlLCBvcHRpb25zKTtcblx0XHRyZW1vdmUgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGUpO1xuXG5cdFx0XHRpZihzdHlsZS5ocmVmKSBVUkwucmV2b2tlT2JqZWN0VVJMKHN0eWxlLmhyZWYpO1xuXHRcdH07XG5cdH0gZWxzZSB7XG5cdFx0c3R5bGUgPSBjcmVhdGVTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG5cdFx0dXBkYXRlID0gYXBwbHlUb1RhZy5iaW5kKG51bGwsIHN0eWxlKTtcblx0XHRyZW1vdmUgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGUpO1xuXHRcdH07XG5cdH1cblxuXHR1cGRhdGUob2JqKTtcblxuXHRyZXR1cm4gZnVuY3Rpb24gdXBkYXRlU3R5bGUgKG5ld09iaikge1xuXHRcdGlmIChuZXdPYmopIHtcblx0XHRcdGlmIChcblx0XHRcdFx0bmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJlxuXHRcdFx0XHRuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJlxuXHRcdFx0XHRuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHR1cGRhdGUob2JqID0gbmV3T2JqKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmVtb3ZlKCk7XG5cdFx0fVxuXHR9O1xufVxuXG52YXIgcmVwbGFjZVRleHQgPSAoZnVuY3Rpb24gKCkge1xuXHR2YXIgdGV4dFN0b3JlID0gW107XG5cblx0cmV0dXJuIGZ1bmN0aW9uIChpbmRleCwgcmVwbGFjZW1lbnQpIHtcblx0XHR0ZXh0U3RvcmVbaW5kZXhdID0gcmVwbGFjZW1lbnQ7XG5cblx0XHRyZXR1cm4gdGV4dFN0b3JlLmZpbHRlcihCb29sZWFuKS5qb2luKCdcXG4nKTtcblx0fTtcbn0pKCk7XG5cbmZ1bmN0aW9uIGFwcGx5VG9TaW5nbGV0b25UYWcgKHN0eWxlLCBpbmRleCwgcmVtb3ZlLCBvYmopIHtcblx0dmFyIGNzcyA9IHJlbW92ZSA/IFwiXCIgOiBvYmouY3NzO1xuXG5cdGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG5cdFx0c3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gcmVwbGFjZVRleHQoaW5kZXgsIGNzcyk7XG5cdH0gZWxzZSB7XG5cdFx0dmFyIGNzc05vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpO1xuXHRcdHZhciBjaGlsZE5vZGVzID0gc3R5bGUuY2hpbGROb2RlcztcblxuXHRcdGlmIChjaGlsZE5vZGVzW2luZGV4XSkgc3R5bGUucmVtb3ZlQ2hpbGQoY2hpbGROb2Rlc1tpbmRleF0pO1xuXG5cdFx0aWYgKGNoaWxkTm9kZXMubGVuZ3RoKSB7XG5cdFx0XHRzdHlsZS5pbnNlcnRCZWZvcmUoY3NzTm9kZSwgY2hpbGROb2Rlc1tpbmRleF0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdHlsZS5hcHBlbmRDaGlsZChjc3NOb2RlKTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gYXBwbHlUb1RhZyAoc3R5bGUsIG9iaikge1xuXHR2YXIgY3NzID0gb2JqLmNzcztcblx0dmFyIG1lZGlhID0gb2JqLm1lZGlhO1xuXG5cdGlmKG1lZGlhKSB7XG5cdFx0c3R5bGUuc2V0QXR0cmlidXRlKFwibWVkaWFcIiwgbWVkaWEpXG5cdH1cblxuXHRpZihzdHlsZS5zdHlsZVNoZWV0KSB7XG5cdFx0c3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuXHR9IGVsc2Uge1xuXHRcdHdoaWxlKHN0eWxlLmZpcnN0Q2hpbGQpIHtcblx0XHRcdHN0eWxlLnJlbW92ZUNoaWxkKHN0eWxlLmZpcnN0Q2hpbGQpO1xuXHRcdH1cblxuXHRcdHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUxpbmsgKGxpbmssIG9wdGlvbnMsIG9iaikge1xuXHR2YXIgY3NzID0gb2JqLmNzcztcblx0dmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXA7XG5cblx0Lypcblx0XHRJZiBjb252ZXJ0VG9BYnNvbHV0ZVVybHMgaXNuJ3QgZGVmaW5lZCwgYnV0IHNvdXJjZW1hcHMgYXJlIGVuYWJsZWRcblx0XHRhbmQgdGhlcmUgaXMgbm8gcHVibGljUGF0aCBkZWZpbmVkIHRoZW4gbGV0cyB0dXJuIGNvbnZlcnRUb0Fic29sdXRlVXJsc1xuXHRcdG9uIGJ5IGRlZmF1bHQuICBPdGhlcndpc2UgZGVmYXVsdCB0byB0aGUgY29udmVydFRvQWJzb2x1dGVVcmxzIG9wdGlvblxuXHRcdGRpcmVjdGx5XG5cdCovXG5cdHZhciBhdXRvRml4VXJscyA9IG9wdGlvbnMuY29udmVydFRvQWJzb2x1dGVVcmxzID09PSB1bmRlZmluZWQgJiYgc291cmNlTWFwO1xuXG5cdGlmIChvcHRpb25zLmNvbnZlcnRUb0Fic29sdXRlVXJscyB8fCBhdXRvRml4VXJscykge1xuXHRcdGNzcyA9IGZpeFVybHMoY3NzKTtcblx0fVxuXG5cdGlmIChzb3VyY2VNYXApIHtcblx0XHQvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yNjYwMzg3NVxuXHRcdGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIgKyBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpICsgXCIgKi9cIjtcblx0fVxuXG5cdHZhciBibG9iID0gbmV3IEJsb2IoW2Nzc10sIHsgdHlwZTogXCJ0ZXh0L2Nzc1wiIH0pO1xuXG5cdHZhciBvbGRTcmMgPSBsaW5rLmhyZWY7XG5cblx0bGluay5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcblxuXHRpZihvbGRTcmMpIFVSTC5yZXZva2VPYmplY3RVUkwob2xkU3JjKTtcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzLmpzXG4vLyBtb2R1bGUgaWQgPSA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyIsImltcG9ydCBsYXp5SW5pdGlhbGl6ZSBmcm9tICcuLi9sYXp5LWluaXRpYWxpemUnO1xuXG5jb25zdCB7IGRlZmluZVByb3BlcnR5LCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsXG4gICAgICAgIGdldE93blByb3BlcnR5TmFtZXMsIGdldE93blByb3BlcnR5U3ltYm9scyB9ID0gT2JqZWN0O1xuXG5leHBvcnQgZnVuY3Rpb24gaXNEZXNjcmlwdG9yKGRlc2MpIHtcbiAgaWYgKCFkZXNjIHx8ICFkZXNjLmhhc093blByb3BlcnR5KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qga2V5cyA9IFsndmFsdWUnLCAnaW5pdGlhbGl6ZXInLCAnZ2V0JywgJ3NldCddO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsID0ga2V5cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAoZGVzYy5oYXNPd25Qcm9wZXJ0eShrZXlzW2ldKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb3JhdGUoaGFuZGxlRGVzY3JpcHRvciwgZW50cnlBcmdzKSB7XG4gIGlmIChpc0Rlc2NyaXB0b3IoZW50cnlBcmdzW2VudHJ5QXJncy5sZW5ndGggLSAxXSkpIHtcbiAgICByZXR1cm4gaGFuZGxlRGVzY3JpcHRvciguLi5lbnRyeUFyZ3MsIFtdKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGhhbmRsZURlc2NyaXB0b3IoLi4uQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSwgZW50cnlBcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbmNsYXNzIE1ldGEge1xuICBAbGF6eUluaXRpYWxpemVcbiAgZGVib3VuY2VUaW1lb3V0SWRzID0ge307XG5cbiAgQGxhenlJbml0aWFsaXplXG4gIHRocm90dGxlVGltZW91dElkcyA9IHt9O1xuXG4gIEBsYXp5SW5pdGlhbGl6ZVxuICB0aHJvdHRsZVByZXZpb3VzVGltZXN0YW1wcyA9IHt9O1xuXG4gIEBsYXp5SW5pdGlhbGl6ZVxuICB0aHJvdHRsZVRyYWlsaW5nQXJncyA9IG51bGw7XG5cbiAgQGxhenlJbml0aWFsaXplXG4gIHByb2ZpbGVMYXN0UmFuID0gbnVsbDtcbn1cblxuY29uc3QgTUVUQV9LRVkgPSAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJylcbiAgPyBTeW1ib2woJ19fY29yZV9kZWNvcmF0b3JzX18nKVxuICA6ICdfX2NvcmVfZGVjb3JhdG9yc19fJztcblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFGb3Iob2JqKSB7XG4gIGlmIChvYmouaGFzT3duUHJvcGVydHkoTUVUQV9LRVkpID09PSBmYWxzZSkge1xuICAgIGRlZmluZVByb3BlcnR5KG9iaiwgTUVUQV9LRVksIHtcbiAgICAgIC8vIERlZmF1bHRzOiBOT1QgZW51bWVyYWJsZSwgY29uZmlndXJhYmxlLCBvciB3cml0YWJsZVxuICAgICAgdmFsdWU6IG5ldyBNZXRhKClcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBvYmpbTUVUQV9LRVldO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0T3duS2V5cyA9IGdldE93blByb3BlcnR5U3ltYm9sc1xuICAgID8gZnVuY3Rpb24gKG9iamVjdCkge1xuICAgICAgICByZXR1cm4gZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpXG4gICAgICAgICAgLmNvbmNhdChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KSk7XG4gICAgICB9XG4gICAgOiBnZXRPd25Qcm9wZXJ0eU5hbWVzO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG9iaikge1xuICBjb25zdCBkZXNjcyA9IHt9O1xuXG4gIGdldE93bktleXMob2JqKS5mb3JFYWNoKFxuICAgIGtleSA9PiAoZGVzY3Nba2V5XSA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkpXG4gICk7XG5cbiAgcmV0dXJuIGRlc2NzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVmYXVsdFNldHRlcihrZXkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHNldChuZXdWYWx1ZSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBrZXksIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgLy8gSVMgZW51bWVyYWJsZSB3aGVuIHJlYXNzaWduZWQgYnkgdGhlIG91dHNpZGUgd29yZFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBuZXdWYWx1ZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ld1ZhbHVlO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmluZChmbiwgY29udGV4dCkge1xuICBpZiAoZm4uYmluZCkge1xuICAgIHJldHVybiBmbi5iaW5kKGNvbnRleHQpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmdW5jdGlvbiBfX2F1dG9iaW5kX18oKSB7XG4gICAgICByZXR1cm4gZm4uYXBwbHkoY29udGV4dCwgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCB3YXJuID0gKCgpID0+IHtcbiAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAnb2JqZWN0JyB8fCAhY29uc29sZSB8fCB0eXBlb2YgY29uc29sZS53YXJuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuICgpID0+IHt9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBiaW5kKGNvbnNvbGUud2FybiwgY29uc29sZSk7XG4gIH1cbn0pKCk7XG5cbmNvbnN0IHNlZW5EZXByZWNhdGlvbnMgPSB7fTtcbmV4cG9ydCBmdW5jdGlvbiBpbnRlcm5hbERlcHJlY2F0aW9uKG1zZykge1xuICBpZiAoc2VlbkRlcHJlY2F0aW9uc1ttc2ddICE9PSB0cnVlKSB7XG4gICAgc2VlbkRlcHJlY2F0aW9uc1ttc2ddID0gdHJ1ZTtcbiAgICB3YXJuKCdERVBSRUNBVElPTjogJyArIG1zZyk7XG4gIH1cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWRlY29yYXRvcnMvc3JjL3ByaXZhdGUvdXRpbHMuanMiLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZVxuICogW2xhbmd1YWdlIHR5cGVdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzKVxuICogb2YgYE9iamVjdGAuIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0KHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChfLm5vb3ApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNPYmplY3Q7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzT2JqZWN0LmpzIiwiaW1wb3J0IHJvb3QgZnJvbSAnLi9fcm9vdC5qcyc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFN5bWJvbCA9IHJvb3QuU3ltYm9sO1xuXG5leHBvcnQgZGVmYXVsdCBTeW1ib2w7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19TeW1ib2wuanMiLCJpbXBvcnQgZnJlZUdsb2JhbCBmcm9tICcuL19mcmVlR2xvYmFsLmpzJztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5leHBvcnQgZGVmYXVsdCByb290O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fcm9vdC5qcyIsIi8qKlxuICogUGVyZm9ybXMgYVxuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVpdmFsZW50LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAqXG4gKiBfLmVxKG9iamVjdCwgb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKCdhJywgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKCdhJywgT2JqZWN0KCdhJykpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKE5hTiwgTmFOKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gZXEodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gb3RoZXIgfHwgKHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBlcTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvZXEuanMiLCJpbXBvcnQgaXNGdW5jdGlvbiBmcm9tICcuL2lzRnVuY3Rpb24uanMnO1xuaW1wb3J0IGlzTGVuZ3RoIGZyb20gJy4vaXNMZW5ndGguanMnO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UuIEEgdmFsdWUgaXMgY29uc2lkZXJlZCBhcnJheS1saWtlIGlmIGl0J3NcbiAqIG5vdCBhIGZ1bmN0aW9uIGFuZCBoYXMgYSBgdmFsdWUubGVuZ3RoYCB0aGF0J3MgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gb3JcbiAqIGVxdWFsIHRvIGAwYCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUmAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICFpc0Z1bmN0aW9uKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNBcnJheUxpa2U7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzQXJyYXlMaWtlLmpzIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdG9JbnRlZ2VyKGRpcnR5TnVtYmVyKSB7XG4gIGlmIChkaXJ0eU51bWJlciA9PT0gbnVsbCB8fCBkaXJ0eU51bWJlciA9PT0gdHJ1ZSB8fCBkaXJ0eU51bWJlciA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gTmFOO1xuICB9XG5cbiAgdmFyIG51bWJlciA9IE51bWJlcihkaXJ0eU51bWJlcik7XG5cbiAgaWYgKGlzTmFOKG51bWJlcikpIHtcbiAgICByZXR1cm4gbnVtYmVyO1xuICB9XG5cbiAgcmV0dXJuIG51bWJlciA8IDAgPyBNYXRoLmNlaWwobnVtYmVyKSA6IE1hdGguZmxvb3IobnVtYmVyKTtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi90b0ludGVnZXIvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZXF1aXJlZEFyZ3MocmVxdWlyZWQsIGFyZ3MpIHtcbiAgaWYgKGFyZ3MubGVuZ3RoIDwgcmVxdWlyZWQpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHJlcXVpcmVkICsgJyBhcmd1bWVudCcgKyByZXF1aXJlZCA+IDEgPyAncycgOiAnJyArICcgcmVxdWlyZWQsIGJ1dCBvbmx5ICcgKyBhcmdzLmxlbmd0aCArICcgcHJlc2VudCcpO1xuICB9XG59XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qcyIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBiYXNpcy1hZ2dyaWQtY29tcG9uZW50cyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmltcG9ydCBCb29sZWFuU3dpdGNoIGZyb20gJy4vQm9vbGVhblN3aXRjaCdcblxuZXhwb3J0IGRlZmF1bHQgQm9vbGVhblN3aXRjaFxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL0Jvb2xlYW5Td2l0Y2gvaW5kZXguanMiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmFzaXMtYWdncmlkLWNvbXBvbmVudHMgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgVGVtcGxhdGVSZW5kZXJlciBmcm9tICcuL1RlbXBsYXRlUmVuZGVyZXInXG5cbmV4cG9ydCBkZWZhdWx0IFRlbXBsYXRlUmVuZGVyZXJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9UZW1wbGF0ZVJlbmRlcmVyL2luZGV4LmpzIiwiaW1wb3J0IGRlZmluZVByb3BlcnR5IGZyb20gJy4vX2RlZmluZVByb3BlcnR5LmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYXNzaWduVmFsdWVgIGFuZCBgYXNzaWduTWVyZ2VWYWx1ZWAgd2l0aG91dFxuICogdmFsdWUgY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgaWYgKGtleSA9PSAnX19wcm90b19fJyAmJiBkZWZpbmVQcm9wZXJ0eSkge1xuICAgIGRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7XG4gICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICdlbnVtZXJhYmxlJzogdHJ1ZSxcbiAgICAgICd2YWx1ZSc6IHZhbHVlLFxuICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUFzc2lnblZhbHVlO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUFzc2lnblZhbHVlLmpzIiwiaW1wb3J0IGdldE5hdGl2ZSBmcm9tICcuL19nZXROYXRpdmUuanMnO1xuXG52YXIgZGVmaW5lUHJvcGVydHkgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgdmFyIGZ1bmMgPSBnZXROYXRpdmUoT2JqZWN0LCAnZGVmaW5lUHJvcGVydHknKTtcbiAgICBmdW5jKHt9LCAnJywge30pO1xuICAgIHJldHVybiBmdW5jO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lUHJvcGVydHk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19kZWZpbmVQcm9wZXJ0eS5qcyIsImltcG9ydCBiYXNlR2V0VGFnIGZyb20gJy4vX2Jhc2VHZXRUYWcuanMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QuanMnO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXN5bmNUYWcgPSAnW29iamVjdCBBc3luY0Z1bmN0aW9uXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBwcm94eVRhZyA9ICdbb2JqZWN0IFByb3h5XSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBGdW5jdGlvbmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAvLyBpbiBTYWZhcmkgOSB3aGljaCByZXR1cm5zICdvYmplY3QnIGZvciB0eXBlZCBhcnJheXMgYW5kIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZyB8fCB0YWcgPT0gYXN5bmNUYWcgfHwgdGFnID09IHByb3h5VGFnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0Z1bmN0aW9uO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0Z1bmN0aW9uLmpzIiwiLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxuZXhwb3J0IGRlZmF1bHQgZnJlZUdsb2JhbDtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2ZyZWVHbG9iYWwuanMiLCJ2YXIgZztcclxuXHJcbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlXHJcbmcgPSAoZnVuY3Rpb24oKSB7XHJcblx0cmV0dXJuIHRoaXM7XHJcbn0pKCk7XHJcblxyXG50cnkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxyXG5cdGcgPSBnIHx8IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKSB8fCAoMSxldmFsKShcInRoaXNcIik7XHJcbn0gY2F0Y2goZSkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXHJcblx0aWYodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIilcclxuXHRcdGcgPSB3aW5kb3c7XHJcbn1cclxuXHJcbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cclxuLy8gV2UgcmV0dXJuIHVuZGVmaW5lZCwgaW5zdGVhZCBvZiBub3RoaW5nIGhlcmUsIHNvIGl0J3NcclxuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBnO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gKHdlYnBhY2spL2J1aWxkaW4vZ2xvYmFsLmpzIiwiaW1wb3J0IGlkZW50aXR5IGZyb20gJy4vaWRlbnRpdHkuanMnO1xuaW1wb3J0IG92ZXJSZXN0IGZyb20gJy4vX292ZXJSZXN0LmpzJztcbmltcG9ydCBzZXRUb1N0cmluZyBmcm9tICcuL19zZXRUb1N0cmluZy5qcyc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVzdGAgd2hpY2ggZG9lc24ndCB2YWxpZGF0ZSBvciBjb2VyY2UgYXJndW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VSZXN0KGZ1bmMsIHN0YXJ0KSB7XG4gIHJldHVybiBzZXRUb1N0cmluZyhvdmVyUmVzdChmdW5jLCBzdGFydCwgaWRlbnRpdHkpLCBmdW5jICsgJycpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlUmVzdDtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VSZXN0LmpzIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBmaXJzdCBhcmd1bWVudCBpdCByZWNlaXZlcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHsqfSB2YWx1ZSBBbnkgdmFsdWUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyBgdmFsdWVgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAqXG4gKiBjb25zb2xlLmxvZyhfLmlkZW50aXR5KG9iamVjdCkgPT09IG9iamVjdCk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlkZW50aXR5KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaWRlbnRpdHk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lkZW50aXR5LmpzIiwiLyoqXG4gKiBBIGZhc3RlciBhbHRlcm5hdGl2ZSB0byBgRnVuY3Rpb24jYXBwbHlgLCB0aGlzIGZ1bmN0aW9uIGludm9rZXMgYGZ1bmNgXG4gKiB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiBgdGhpc0FyZ2AgYW5kIHRoZSBhcmd1bWVudHMgb2YgYGFyZ3NgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGBmdW5jYC5cbiAqL1xuZnVuY3Rpb24gYXBwbHkoZnVuYywgdGhpc0FyZywgYXJncykge1xuICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcpO1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdKTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICB9XG4gIHJldHVybiBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhcHBseTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2FwcGx5LmpzIiwiaW1wb3J0IGVxIGZyb20gJy4vZXEuanMnO1xuaW1wb3J0IGlzQXJyYXlMaWtlIGZyb20gJy4vaXNBcnJheUxpa2UuanMnO1xuaW1wb3J0IGlzSW5kZXggZnJvbSAnLi9faXNJbmRleC5qcyc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnLi9pc09iamVjdC5qcyc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIHZhbHVlIGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBpbmRleCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIGluZGV4IG9yIGtleSBhcmd1bWVudC5cbiAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgb2JqZWN0IGFyZ3VtZW50LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSXRlcmF0ZWVDYWxsKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdHlwZSA9IHR5cGVvZiBpbmRleDtcbiAgaWYgKHR5cGUgPT0gJ251bWJlcidcbiAgICAgICAgPyAoaXNBcnJheUxpa2Uob2JqZWN0KSAmJiBpc0luZGV4KGluZGV4LCBvYmplY3QubGVuZ3RoKSlcbiAgICAgICAgOiAodHlwZSA9PSAnc3RyaW5nJyAmJiBpbmRleCBpbiBvYmplY3QpXG4gICAgICApIHtcbiAgICByZXR1cm4gZXEob2JqZWN0W2luZGV4XSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNJdGVyYXRlZUNhbGw7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19pc0l0ZXJhdGVlQ2FsbC5qcyIsIi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBsZW5ndGguXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2xlbmd0aCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0xlbmd0aCgzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKEluZmluaXR5KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aCgnMycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJlxuICAgIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNMZW5ndGg7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzTGVuZ3RoLmpzIiwiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcy4gKi9cbnZhciByZUlzVWludCA9IC9eKD86MHxbMS05XVxcZCopJC87XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPU1BWF9TQUZFX0lOVEVHRVJdIFRoZSB1cHBlciBib3VuZHMgb2YgYSB2YWxpZCBpbmRleC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSwgbGVuZ3RoKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgcmV0dXJuICEhbGVuZ3RoICYmXG4gICAgKHR5cGUgPT0gJ251bWJlcicgfHxcbiAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgKHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0luZGV4O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNJbmRleC5qcyIsImltcG9ydCBiYXNlVGltZXMgZnJvbSAnLi9fYmFzZVRpbWVzLmpzJztcbmltcG9ydCBpc0FyZ3VtZW50cyBmcm9tICcuL2lzQXJndW1lbnRzLmpzJztcbmltcG9ydCBpc0FycmF5IGZyb20gJy4vaXNBcnJheS5qcyc7XG5pbXBvcnQgaXNCdWZmZXIgZnJvbSAnLi9pc0J1ZmZlci5qcyc7XG5pbXBvcnQgaXNJbmRleCBmcm9tICcuL19pc0luZGV4LmpzJztcbmltcG9ydCBpc1R5cGVkQXJyYXkgZnJvbSAnLi9pc1R5cGVkQXJyYXkuanMnO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgdGhlIGFycmF5LWxpa2UgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSksXG4gICAgICBpc0FyZyA9ICFpc0FyciAmJiBpc0FyZ3VtZW50cyh2YWx1ZSksXG4gICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgIGlzVHlwZSA9ICFpc0FyciAmJiAhaXNBcmcgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkodmFsdWUpLFxuICAgICAgc2tpcEluZGV4ZXMgPSBpc0FyciB8fCBpc0FyZyB8fCBpc0J1ZmYgfHwgaXNUeXBlLFxuICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICEoc2tpcEluZGV4ZXMgJiYgKFxuICAgICAgICAgICAvLyBTYWZhcmkgOSBoYXMgZW51bWVyYWJsZSBgYXJndW1lbnRzLmxlbmd0aGAgaW4gc3RyaWN0IG1vZGUuXG4gICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAvLyBOb2RlLmpzIDAuMTAgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gYnVmZmVycy5cbiAgICAgICAgICAgKGlzQnVmZiAmJiAoa2V5ID09ICdvZmZzZXQnIHx8IGtleSA9PSAncGFyZW50JykpIHx8XG4gICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgKGlzVHlwZSAmJiAoa2V5ID09ICdidWZmZXInIHx8IGtleSA9PSAnYnl0ZUxlbmd0aCcgfHwga2V5ID09ICdieXRlT2Zmc2V0JykpIHx8XG4gICAgICAgICAgIC8vIFNraXAgaW5kZXggcHJvcGVydGllcy5cbiAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFycmF5TGlrZUtleXM7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19hcnJheUxpa2VLZXlzLmpzIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbmV4cG9ydCBkZWZhdWx0IGlzQXJyYXk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzQXJyYXkuanMiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG9yaWdpbmFsTW9kdWxlKSB7XHJcblx0aWYoIW9yaWdpbmFsTW9kdWxlLndlYnBhY2tQb2x5ZmlsbCkge1xyXG5cdFx0dmFyIG1vZHVsZSA9IE9iamVjdC5jcmVhdGUob3JpZ2luYWxNb2R1bGUpO1xyXG5cdFx0Ly8gbW9kdWxlLnBhcmVudCA9IHVuZGVmaW5lZCBieSBkZWZhdWx0XHJcblx0XHRpZighbW9kdWxlLmNoaWxkcmVuKSBtb2R1bGUuY2hpbGRyZW4gPSBbXTtcclxuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsIFwibG9hZGVkXCIsIHtcclxuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcclxuXHRcdFx0Z2V0OiBmdW5jdGlvbigpIHtcclxuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmw7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJpZFwiLCB7XHJcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXHJcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0cmV0dXJuIG1vZHVsZS5pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsIFwiZXhwb3J0c1wiLCB7XHJcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXHJcblx0XHR9KTtcclxuXHRcdG1vZHVsZS53ZWJwYWNrUG9seWZpbGwgPSAxO1xyXG5cdH1cclxuXHRyZXR1cm4gbW9kdWxlO1xyXG59O1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gKHdlYnBhY2spL2J1aWxkaW4vaGFybW9ueS1tb2R1bGUuanMiLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIHByb3RvdHlwZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm90b3R5cGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNQcm90b3R5cGUodmFsdWUpIHtcbiAgdmFyIEN0b3IgPSB2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvcixcbiAgICAgIHByb3RvID0gKHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3Rvci5wcm90b3R5cGUpIHx8IG9iamVjdFByb3RvO1xuXG4gIHJldHVybiB2YWx1ZSA9PT0gcHJvdG87XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzUHJvdG90eXBlO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNQcm90b3R5cGUuanMiLCJpbXBvcnQgYmFzZUdldFRhZyBmcm9tICcuL19iYXNlR2V0VGFnLmpzJztcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSAnLi9pc09iamVjdExpa2UuanMnO1xuaW1wb3J0IGlzUGxhaW5PYmplY3QgZnJvbSAnLi9pc1BsYWluT2JqZWN0LmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGRvbUV4Y1RhZyA9ICdbb2JqZWN0IERPTUV4Y2VwdGlvbl0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBgRXJyb3JgLCBgRXZhbEVycm9yYCwgYFJhbmdlRXJyb3JgLCBgUmVmZXJlbmNlRXJyb3JgLFxuICogYFN5bnRheEVycm9yYCwgYFR5cGVFcnJvcmAsIG9yIGBVUklFcnJvcmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGVycm9yIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRXJyb3IobmV3IEVycm9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRXJyb3IoRXJyb3IpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNFcnJvcih2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICByZXR1cm4gdGFnID09IGVycm9yVGFnIHx8IHRhZyA9PSBkb21FeGNUYWcgfHxcbiAgICAodHlwZW9mIHZhbHVlLm1lc3NhZ2UgPT0gJ3N0cmluZycgJiYgdHlwZW9mIHZhbHVlLm5hbWUgPT0gJ3N0cmluZycgJiYgIWlzUGxhaW5PYmplY3QodmFsdWUpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNFcnJvcjtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNFcnJvci5qcyIsIi8qKlxuICogQ3JlYXRlcyBhIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnQgdHJhbnNmb3JtZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIGFyZ3VtZW50IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyQXJnKGZ1bmMsIHRyYW5zZm9ybSkge1xuICByZXR1cm4gZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIGZ1bmModHJhbnNmb3JtKGFyZykpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBvdmVyQXJnO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fb3ZlckFyZy5qcyIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1hcGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gKiBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBhcnJheU1hcChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFycmF5TWFwO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXJyYXlNYXAuanMiLCIvKiogVXNlZCB0byBtYXRjaCB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLiAqL1xudmFyIHJlSW50ZXJwb2xhdGUgPSAvPCU9KFtcXHNcXFNdKz8pJT4vZztcblxuZXhwb3J0IGRlZmF1bHQgcmVJbnRlcnBvbGF0ZTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3JlSW50ZXJwb2xhdGUuanMiLCJpbXBvcnQgYmFzZVRvU3RyaW5nIGZyb20gJy4vX2Jhc2VUb1N0cmluZy5qcyc7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZy4gQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGZvciBgbnVsbGBcbiAqIGFuZCBgdW5kZWZpbmVkYCB2YWx1ZXMuIFRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b1N0cmluZyhudWxsKTtcbiAqIC8vID0+ICcnXG4gKlxuICogXy50b1N0cmluZygtMCk7XG4gKiAvLyA9PiAnLTAnXG4gKlxuICogXy50b1N0cmluZyhbMSwgMiwgM10pO1xuICogLy8gPT4gJzEsMiwzJ1xuICovXG5mdW5jdGlvbiB0b1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogYmFzZVRvU3RyaW5nKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdG9TdHJpbmc7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL3RvU3RyaW5nLmpzIiwiaW1wb3J0IHsgZGVjb3JhdGUgfSBmcm9tICcuL3ByaXZhdGUvdXRpbHMnO1xuXG5mdW5jdGlvbiBoYW5kbGVEZXNjcmlwdG9yKHRhcmdldCwga2V5LCBkZXNjcmlwdG9yKSB7XG4gIGRlc2NyaXB0b3Iud3JpdGFibGUgPSBmYWxzZTtcbiAgcmV0dXJuIGRlc2NyaXB0b3I7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlYWRvbmx5KC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGRlY29yYXRlKGhhbmRsZURlc2NyaXB0b3IsIGFyZ3MpO1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtZGVjb3JhdG9ycy9zcmMvcmVhZG9ubHkuanMiLCJpbXBvcnQgdHpQYXJzZVRpbWV6b25lIGZyb20gJy4uL19saWIvdHpQYXJzZVRpbWV6b25lJ1xuaW1wb3J0IHN1Yk1pbGxpc2Vjb25kcyBmcm9tICdkYXRlLWZucy9lc20vc3ViTWlsbGlzZWNvbmRzJ1xuaW1wb3J0IHRvRGF0ZSBmcm9tICcuLi90b0RhdGUnXG5cbi8qKlxuICogQG5hbWUgdXRjVG9ab25lZFRpbWVcbiAqIEBjYXRlZ29yeSBUaW1lIFpvbmUgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IGEgZGF0ZS90aW1lIHJlcHJlc2VudGluZyBsb2NhbCB0aW1lIGluIGEgZ2l2ZW4gdGltZSB6b25lIGZyb20gdGhlIFVUQyBkYXRlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm5zIGEgZGF0ZSBpbnN0YW5jZSB3aXRoIHZhbHVlcyByZXByZXNlbnRpbmcgdGhlIGxvY2FsIHRpbWUgaW4gdGhlIHRpbWUgem9uZVxuICogc3BlY2lmaWVkIG9mIHRoZSBVVEMgdGltZSBmcm9tIHRoZSBkYXRlIHByb3ZpZGVkLiBJbiBvdGhlciB3b3Jkcywgd2hlbiB0aGUgbmV3IGRhdGVcbiAqIGlzIGZvcm1hdHRlZCBpdCB3aWxsIHNob3cgdGhlIGVxdWl2YWxlbnQgaG91cnMgaW4gdGhlIHRhcmdldCB0aW1lIHpvbmUgcmVnYXJkbGVzc1xuICogb2YgdGhlIGN1cnJlbnQgc3lzdGVtIHRpbWUgem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8U3RyaW5nfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHdpdGggdGhlIHJlbGV2YW50IFVUQyB0aW1lXG4gKiBAcGFyYW0ge1N0cmluZ30gdGltZVpvbmUgLSB0aGUgdGltZSB6b25lIHRvIGdldCBsb2NhbCB0aW1lIGZvciwgY2FuIGJlIGFuIG9mZnNldCBvciBJQU5BIHRpbWUgem9uZVxuICogQHBhcmFtIHtPcHRpb25zV2l0aFRafSBbb3B0aW9uc10gLSB0aGUgb2JqZWN0IHdpdGggb3B0aW9ucy4gU2VlIFtPcHRpb25zXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL09wdGlvbnN9XG4gKiBAcGFyYW0gezB8MXwyfSBbb3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzPTJdIC0gcGFzc2VkIHRvIGB0b0RhdGVgLiBTZWUgW3RvRGF0ZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy90b0RhdGV9XG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIGVxdWl2YWxlbnQgdGltZSBpbiB0aGUgdGltZSB6b25lXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzYCBtdXN0IGJlIDAsIDEgb3IgMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJbiBKdW5lIDEwYW0gVVRDIGlzIDZhbSBpbiBOZXcgWW9yayAoLTA0OjAwKVxuICogY29uc3QgcmVzdWx0ID0gdXRjVG9ab25lZFRpbWUoJzIwMTQtMDYtMjVUMTA6MDA6MDAuMDAwWicsICdBbWVyaWNhL05ld19Zb3JrJylcbiAqIC8vPT4gSnVuIDI1IDIwMTQgMDY6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXRjVG9ab25lZFRpbWUoZGlydHlEYXRlLCB0aW1lWm9uZSwgb3B0aW9ucykge1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUsIG9wdGlvbnMpXG5cbiAgLy8gVGhpcyBkYXRlIGhhcyB0aGUgVVRDIHRpbWUgdmFsdWVzIG9mIHRoZSBpbnB1dCBkYXRlIGF0IHRoZSBzeXN0ZW0gdGltZSB6b25lXG4gIHZhciB1dGNEYXRlID0gbmV3IERhdGUoXG4gICAgZGF0ZS5nZXRVVENGdWxsWWVhcigpLFxuICAgIGRhdGUuZ2V0VVRDTW9udGgoKSxcbiAgICBkYXRlLmdldFVUQ0RhdGUoKSxcbiAgICBkYXRlLmdldFVUQ0hvdXJzKCksXG4gICAgZGF0ZS5nZXRVVENNaW51dGVzKCksXG4gICAgZGF0ZS5nZXRVVENTZWNvbmRzKCksXG4gICAgZGF0ZS5nZXRVVENNaWxsaXNlY29uZHMoKVxuICApXG4gIC8vIFdlIGp1c3QgbmVlZCB0byBhcHBseSB0aGUgb2Zmc2V0IGluZGljYXRlZCBieSB0aGUgdGltZSB6b25lIHRvIHRoaXMgbG9jYWxpemVkIGRhdGVcbiAgdmFyIG9mZnNldE1pbGxpc2Vjb25kcyA9IHR6UGFyc2VUaW1lem9uZSh0aW1lWm9uZSwgZGF0ZSlcblxuICByZXR1cm4gb2Zmc2V0TWlsbGlzZWNvbmRzXG4gICAgPyBzdWJNaWxsaXNlY29uZHModXRjRGF0ZSwgb2Zmc2V0TWlsbGlzZWNvbmRzKVxuICAgIDogdXRjRGF0ZVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMtdHovZXNtL3V0Y1RvWm9uZWRUaW1lL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIiwiaW1wb3J0IHR6VG9rZW5pemVEYXRlIGZyb20gJy4uL3R6VG9rZW5pemVEYXRlL2luZGV4LmpzJ1xuXG52YXIgTUlMTElTRUNPTkRTX0lOX0hPVVIgPSAzNjAwMDAwXG52YXIgTUlMTElTRUNPTkRTX0lOX01JTlVURSA9IDYwMDAwXG5cbnZhciBwYXR0ZXJucyA9IHtcbiAgdGltZXpvbmU6IC8oW1orLV0uKikkLyxcbiAgdGltZXpvbmVaOiAvXihaKSQvLFxuICB0aW1lem9uZUhIOiAvXihbKy1dKShcXGR7Mn0pJC8sXG4gIHRpbWV6b25lSEhNTTogL14oWystXSkoXFxkezJ9KTo/KFxcZHsyfSkkLyxcbiAgdGltZXpvbmVJQU5BOiAvKFVUQ3woPzpbYS16QS1aXStcXC9bYS16QS1aX10rKD86XFwvW2EtekEtWl9dKyk/KSkkL1xufVxuXG4vLyBQYXJzZSB2YXJpb3VzIHRpbWUgem9uZSBvZmZzZXQgZm9ybWF0cyB0byBhbiBvZmZzZXQgaW4gbWlsbGlzZWNvbmRzXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0elBhcnNlVGltZXpvbmUodGltZXpvbmVTdHJpbmcsIGRhdGUpIHtcbiAgdmFyIHRva2VuXG4gIHZhciBhYnNvbHV0ZU9mZnNldFxuXG4gIC8vIFpcbiAgdG9rZW4gPSBwYXR0ZXJucy50aW1lem9uZVouZXhlYyh0aW1lem9uZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgcmV0dXJuIDBcbiAgfVxuXG4gIHZhciBob3Vyc1xuXG4gIC8vIMKxaGhcbiAgdG9rZW4gPSBwYXR0ZXJucy50aW1lem9uZUhILmV4ZWModGltZXpvbmVTdHJpbmcpXG4gIGlmICh0b2tlbikge1xuICAgIGhvdXJzID0gcGFyc2VJbnQodG9rZW5bMl0sIDEwKVxuXG4gICAgaWYgKCF2YWxpZGF0ZVRpbWV6b25lKGhvdXJzKSkge1xuICAgICAgcmV0dXJuIE5hTlxuICAgIH1cblxuICAgIGFic29sdXRlT2Zmc2V0ID0gaG91cnMgKiBNSUxMSVNFQ09ORFNfSU5fSE9VUlxuICAgIHJldHVybiB0b2tlblsxXSA9PT0gJysnID8gLWFic29sdXRlT2Zmc2V0IDogYWJzb2x1dGVPZmZzZXRcbiAgfVxuXG4gIC8vIMKxaGg6bW0gb3IgwrFoaG1tXG4gIHRva2VuID0gcGF0dGVybnMudGltZXpvbmVISE1NLmV4ZWModGltZXpvbmVTdHJpbmcpXG4gIGlmICh0b2tlbikge1xuICAgIGhvdXJzID0gcGFyc2VJbnQodG9rZW5bMl0sIDEwKVxuICAgIHZhciBtaW51dGVzID0gcGFyc2VJbnQodG9rZW5bM10sIDEwKVxuXG4gICAgaWYgKCF2YWxpZGF0ZVRpbWV6b25lKGhvdXJzLCBtaW51dGVzKSkge1xuICAgICAgcmV0dXJuIE5hTlxuICAgIH1cblxuICAgIGFic29sdXRlT2Zmc2V0ID1cbiAgICAgIGhvdXJzICogTUlMTElTRUNPTkRTX0lOX0hPVVIgKyBtaW51dGVzICogTUlMTElTRUNPTkRTX0lOX01JTlVURVxuICAgIHJldHVybiB0b2tlblsxXSA9PT0gJysnID8gLWFic29sdXRlT2Zmc2V0IDogYWJzb2x1dGVPZmZzZXRcbiAgfVxuXG4gIC8vIElBTkEgdGltZSB6b25lXG4gIHRva2VuID0gcGF0dGVybnMudGltZXpvbmVJQU5BLmV4ZWModGltZXpvbmVTdHJpbmcpXG4gIGlmICh0b2tlbikge1xuICAgIC8vIHZhciBbZlllYXIsIGZNb250aCwgZkRheSwgZkhvdXIsIGZNaW51dGUsIGZTZWNvbmRdID0gdHpUb2tlbml6ZURhdGUoZGF0ZSwgdGltZXpvbmVTdHJpbmcpXG4gICAgdmFyIHRva2VucyA9IHR6VG9rZW5pemVEYXRlKGRhdGUsIHRpbWV6b25lU3RyaW5nKVxuICAgIHZhciBhc1VUQyA9IERhdGUuVVRDKFxuICAgICAgdG9rZW5zWzBdLFxuICAgICAgdG9rZW5zWzFdIC0gMSxcbiAgICAgIHRva2Vuc1syXSxcbiAgICAgIHRva2Vuc1szXSxcbiAgICAgIHRva2Vuc1s0XSxcbiAgICAgIHRva2Vuc1s1XVxuICAgIClcbiAgICB2YXIgdGltZXN0YW1wV2l0aE1zWmVyb2VkID0gZGF0ZS5nZXRUaW1lKCkgLSAoZGF0ZS5nZXRUaW1lKCkgJSAxMDAwKVxuICAgIHJldHVybiAtKGFzVVRDIC0gdGltZXN0YW1wV2l0aE1zWmVyb2VkKVxuICB9XG5cbiAgcmV0dXJuIDBcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVUaW1lem9uZShob3VycywgbWludXRlcykge1xuICBpZiAobWludXRlcyAhPSBudWxsICYmIChtaW51dGVzIDwgMCB8fCBtaW51dGVzID4gNTkpKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMtdHovZXNtL19saWIvdHpQYXJzZVRpbWV6b25lL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWFnZ3JpZC1jb21wb25lbnRzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IHsgRXZlbnRzTWl4aW4sIHdpdGhFdmVudHNNaXhpbiB9IGZyb20gJy4vRXZlbnRzTWl4aW4nXG5cbmV4cG9ydCBkZWZhdWx0IEV2ZW50c01peGluXG5leHBvcnQgeyB3aXRoRXZlbnRzTWl4aW4gfVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL0V2ZW50c01peGluL2luZGV4LmpzIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWFnZ3JpZC1jb21wb25lbnRzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IERhdGVUaW1lSW5wdXQgZnJvbSAnLi9EYXRlVGltZUlucHV0J1xuXG5leHBvcnQgZGVmYXVsdCBEYXRlVGltZUlucHV0XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvRGF0ZVRpbWVJbnB1dC9pbmRleC5qcyIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBiYmotbWFza3MgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgTnVtYmVyTWFzayBmcm9tICcuL051bWJlck1hc2snXG5pbXBvcnQgRGF0ZU1hc2ssIHtcbiAgZ2V0RGF5T2ZZZWFyLFxuICBnZXRXZWVrTnVtYmVyLFxuICBnZXRXZWVrU3RhcnRCeUxvY2FsZSxcbiAgSVNfREFURV9SRUdFWCxcbiAgSVNfVElNRV9SRUdFWCxcbiAgZml4U2hvcnRJU08sXG4gIGdldFRpbWV6b25lT3JPZmZzZXRcbn0gZnJvbSAnLi9EYXRlTWFzaydcblxuaW1wb3J0IFN0cmluZ01hc2sgZnJvbSAnLi9TdHJpbmdNYXNrJ1xuaW1wb3J0IFR5cGVzIGZyb20gJy4vVHlwZXMnXG5cbmNvbnN0IFV0aWxzID0ge1xuICBEYXRlczoge1xuICAgIGdldERheU9mWWVhcixcbiAgICBnZXRXZWVrTnVtYmVyLFxuICAgIGdldFdlZWtTdGFydEJ5TG9jYWxlLFxuICAgIElTX0RBVEVfUkVHRVgsXG4gICAgSVNfVElNRV9SRUdFWCxcbiAgICBmaXhTaG9ydElTTyxcbiAgICBnZXRUaW1lem9uZU9yT2Zmc2V0XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVHlwZXNcbmV4cG9ydCB7IFR5cGVzLCBOdW1iZXJNYXNrLCBEYXRlTWFzaywgU3RyaW5nTWFzaywgVXRpbHMgfVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2luZGV4LmpzIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWFnZ3JpZC1jb21wb25lbnRzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IEJvb2xlYW5FZGl0b3IgZnJvbSAnLi9Cb29sZWFuRWRpdG9yJ1xuXG5leHBvcnQgZGVmYXVsdCBCb29sZWFuRWRpdG9yXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvQm9vbGVhbkVkaXRvci9pbmRleC5qcyIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBiYXNpcy1hZ2dyaWQtY29tcG9uZW50cyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmltcG9ydCBDb21wb25lbnQgZnJvbSAnLi4vQ29tcG9uZW50J1xuaW1wb3J0IEJvb2xlYW5Td2l0Y2ggZnJvbSAnLi4vQm9vbGVhblN3aXRjaCdcblxuLyoqXG4gKiBCb29sZWFucyBFZGl0b3JcbiAqXG4gKiBIYW5kbGUgYm9vbGVhbiB2YWx1ZXMgRWRpdGluZ1xuICpcbiAqICMjIE9wdGlvbnNcbiAqXG4gKiB8IE5hbWUgICAgICAgICAgICAgICAgICBcdHwgRGVmYXVsdCAgICAgXHR8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcdHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHR8Oi0tLS0tLS0tLS0tLS06fC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAqKmJvb2xlYW5Vc2VkVHJ1ZVZhbHVlKiogICB8IHVuZGVmaW5lZCAgICB8IHRoZSB2YWx1ZSB0byByZXR1cm4gd2hlbiB0aGUgZWRpdG9yIGNoYW5nZXMgdGhlIGN1cnJlbnQgY2VsbCB2YWx1ZSB0byB0cnVlLiBpbiBjYXNlIGl0IGlzIHVuZGVmaW5lZCB0aGVuIHdlIHVzZSB0aGUgZmlyc3QgaXRlbSBpbiAqKmJvb2xlYW5UcnVlVmFsdWVbXSoqXG4gKiB8ICoqYm9vbGVhblVzZWRGYWxzZVZhbHVlKiogICB8IHVuZGVmaW5lZCAgICB8IHRoZSB2YWx1ZSB0byByZXR1cm4gd2hlbiB0aGUgZWRpdG9yIGNoYW5nZXMgdGhlIGN1cnJlbnQgY2VsbCB2YWx1ZSB0byBmYWxzZS4gaW4gY2FzZSBpdCBpcyB1bmRlZmluZWQgdGhlbiB3ZSB1c2UgdGhlIGZpcnN0IGl0ZW0gaW4gKipib29sZWFuRmFsc2VWYWx1ZVtdKipcbiAqIHwgKipib29sZWFuVHJ1ZVZhbHVlW10qKiAgICAgICB8IHRydWUoYm9vbCkgIFx0fCBUaGUgb3B0aW9ucyBkZXNjcmliZXMgd2hhdCBpcyBjb25zaWRlcmVkIGB0cnVlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHR8XG4gKiB8ICoqYm9vbGVhbkZhbHNlVmFsdWVbXSoqICAgICAgfCBmYWxzZShib29sKSBcdHwgVGhlIG9wdGlvbnMgZGVzY3JpYmVzIHdoYXQgaXMgY29uc2lkZXJlZCBgZmFsc2VgXG4gKlxuICogQGF1dGhvciBIeXlhbiBBYm8gRmFraGVyIDxoYWJvZmFraGVyQGJhc2lzLmNvbT5cbiAqL1xuY2xhc3MgQm9vbGVhbkVkaXRvciBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiAgQGluaGVyaXREb2NcbiAgICovXG4gIGluaXQocGFyYW1zKSB7XG4gICAgaWYgKHBhcmFtcy5rZXlQcmVzcyAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBCb29sZWFuKHBhcmFtcy5rZXlQcmVzcylcbiAgICB9IGVsc2UgaWYgKHBhcmFtcy5jaGFyUHJlc3MgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gQm9vbGVhbihwYXJhbXMuY2hhclByZXNzKVxuICAgIH1cblxuICAgIHRoaXMuX3RydWVWYWx1ZSA9IFtdLmNvbmNhdChcbiAgICAgIHRoaXMuZ2V0T3B0aW9uKCdib29sZWFuVHJ1ZVZhbHVlJywgcGFyYW1zLCBbdHJ1ZV0pXG4gICAgKVxuXG4gICAgdGhpcy5fZmFsc2VWYWx1ZSA9IFtdLmNvbmNhdChcbiAgICAgIHRoaXMuZ2V0T3B0aW9uKCdib29sZWFuRmFsc2VWYWx1ZScsIHBhcmFtcywgW2ZhbHNlXSlcbiAgICApXG5cbiAgICB0aGlzLl9yZXR1cm5UcnVlVmFsdWUgPSB0aGlzLmdldE9wdGlvbihcbiAgICAgICdib29sZWFuVXNlZFRydWVWYWx1ZScsXG4gICAgICBwYXJhbXMsXG4gICAgICB0aGlzLl90cnVlVmFsdWVbMF1cbiAgICApXG4gICAgdGhpcy5fcmV0dXJuRmFsc2VWYWx1ZSA9IHRoaXMuZ2V0T3B0aW9uKFxuICAgICAgJ2Jvb2xlYW5Vc2VkRmFsc2VWYWx1ZScsXG4gICAgICBwYXJhbXMsXG4gICAgICB0aGlzLl9mYWxzZVZhbHVlWzBdXG4gICAgKVxuXG4gICAgdGhpcy5fdHJ1ZVZhbHVlID0gdGhpcy5fdHJ1ZVZhbHVlLm1hcCh4ID0+IFN0cmluZyh4KSlcbiAgICB0aGlzLl9mYWxzZVZhbHVlID0gdGhpcy5fZmFsc2VWYWx1ZS5tYXAoeCA9PiBTdHJpbmcoeCkpXG5cbiAgICB0aGlzLmZvY3VzQWZ0ZXJBdHRhY2hlZCA9IHBhcmFtcy5jZWxsU3RhcnRlZEVkaXRcbiAgICBpZiAodGhpcy5mb2N1c0FmdGVyQXR0YWNoZWQpIHtcbiAgICAgIGxldCBrZXlQcmVzc0JhY2tzcGFjZU9yRGVsZXRlID1cbiAgICAgICAgcGFyYW1zLmtleVByZXNzID09IDMyIHx8IHBhcmFtcy5rZXlQcmVzcyA9PSA0NiAvLyBzcGFjZSAvLyBkZWxldGVcblxuICAgICAgaWYgKGtleVByZXNzQmFja3NwYWNlT3JEZWxldGUpIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBmYWxzZVxuICAgICAgfSBlbHNlIGlmIChwYXJhbXMuY2hhclByZXNzICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gcGFyYW1zLmNoYXJQcmVzc1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBwYXJhbXMudmFsdWVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdmFsdWUgPSBwYXJhbXMudmFsdWVcbiAgICB9XG5cbiAgICB0aGlzLl92YWx1ZSA9IHRoaXMuX2NvbnZlcnRWYWx1ZShcbiAgICAgIHRoaXMuX3ZhbHVlLFxuICAgICAgdGhpcy5fdHJ1ZVZhbHVlLFxuICAgICAgdGhpcy5fZmFsc2VWYWx1ZVxuICAgIClcblxuICAgIHRoaXMuX3N3aXRjaGVyID0gbmV3IEJvb2xlYW5Td2l0Y2godGhpcy5fdmFsdWUsIHN3aXRjaGVyID0+IHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5fY29udmVydFZhbHVlKFxuICAgICAgICBzd2l0Y2hlci5pc0NoZWNrZWQoKSxcbiAgICAgICAgdGhpcy5fdHJ1ZVZhbHVlLFxuICAgICAgICB0aGlzLl9mYWxzZVZhbHVlXG4gICAgICApXG4gICAgfSlcbiAgICB0aGlzLl9zd2l0Y2hlci5pbml0KHBhcmFtcylcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGluaGVyaXREb2NcbiAgICovXG4gIGdldEd1aSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3dpdGNoZXIuZ2V0R3VpKClcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGluaGVyaXREb2NcbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3dpdGNoZXIuZGVzdHJveSgpXG4gIH1cblxuICAvKipcbiAgICogR2V0cyBjYWxsZWQgb25jZSBhZnRlciBHVUkgaXMgYXR0YWNoZWQgdG8gRE9NLlxuICAgKiBNYWtlIHN1cmUgdGhlIGNvbnRhaW5lciBpcyBhbHdheXMgZm9jdXNlZCBhbmQgbGlzdGVuaW5nIHRvIGtleSBjaGFuZ2VzXG4gICAqL1xuICBhZnRlckd1aUF0dGFjaGVkKCkge1xuICAgIGlmICh0aGlzLmZvY3VzQWZ0ZXJBdHRhY2hlZCkge1xuICAgICAgdGhpcy5mb2N1c0luKClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBmaW5hbCB2YWx1ZSB0byB0aGUgZ3JpZCwgdGhlIHJlc3VsdCBvZiB0aGUgZWRpdGluZ1xuICAgKlxuICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgKi9cbiAgZ2V0VmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlID8gdGhpcy5fcmV0dXJuVHJ1ZVZhbHVlIDogdGhpcy5fcmV0dXJuRmFsc2VWYWx1ZVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgY2FsbGVkIG9uY2UgYWZ0ZXIgaW5pdGlhbGl6ZWQgYW5kIHJldHVybnMgZmFsc2Ugc28gdGhlIGVkaXRvciBhcHBlYXJzIGluIHRoZSBjZWxsXG4gICAqXG4gICAqIEByZXR1cm4ge0Jvb2xlYW59IGFsd2F5cyBmYWxzZVxuICAgKiovXG4gIGlzUG9wdXAoKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvKipcbiAgICogSWYgZG9pbmcgZnVsbCByb3cgZWRpdCwgdGhlbiBnZXRzIGNhbGxlZCB3aGVuIHRhYmJpbmcgaW50byB0aGUgY2VsbC5cbiAgICpcbiAgICogQHJldHVybiB7Qm9vbGVhbn1cbiAgICovXG4gIGZvY3VzSW4oKSB7XG4gICAgdGhpcy5fc3dpdGNoZXIuc2V0RGlzYWJsZWQoZmFsc2UpXG4gICAgdGhpcy5fc3dpdGNoZXIuZm9jdXMoKVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvKipcbiAgICogSWYgZG9pbmcgZnVsbCByb3cgZWRpdCwgdGhlbiBnZXRzIGNhbGxlZCB3aGVuIHRhYmJpbmcgb3V0IG9mIHRoZSBjZWxsLlxuICAgKlxuICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgKi9cbiAgZm9jdXNPdXQoKSB7XG4gICAgdGhpcy5fc3dpdGNoZXIuc2V0RGlzYWJsZWQodHJ1ZSlcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gdmFsdWUgdGhlIGN1cnJlbnQgY2VsbCB2YWx1ZVxuICAgKiBAcGFyYW0ge1N0cmluZ3xOdW1iZXJ9IHRydWVWYWx1ZSB0cnVlIHZhbHVlIGFsaWFzXG4gICAqIEBwYXJhbSB7U3RyaW5nfE51bWJlcn0gZmFsc2VWYWx1ZSBmYWxzZSB2YWx1ZSBhbGlhc1xuICAgKi9cbiAgX2NvbnZlcnRWYWx1ZSh2YWx1ZSwgdHJ1ZVZhbHVlLCBmYWxzZVZhbHVlKSB7XG4gICAgY29uc3QgdmFsdWVBc1N0cmluZyA9IFN0cmluZyh2YWx1ZSlcblxuICAgIHJldHVybiB0cnVlVmFsdWUuaW5kZXhPZih2YWx1ZUFzU3RyaW5nKSA+IC0xXG4gICAgICA/IHRydWVcbiAgICAgIDogZmFsc2VWYWx1ZS5pbmRleE9mKHZhbHVlQXNTdHJpbmcpID4gLTFcbiAgICAgID8gZmFsc2VcbiAgICAgIDogdmFsdWVcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBCb29sZWFuRWRpdG9yXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvQm9vbGVhbkVkaXRvci9Cb29sZWFuRWRpdG9yLmpzIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWFnZ3JpZC1jb21wb25lbnRzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zICovXG5cbi8qKlxuICogVGhlIGJhc2UgY29tcG9uZW50IGNsYXNzXG4gKlxuICogVGhpcyBjbGFzcyBpcyB0aGUgYWJzdHJhY3QgY2xhc3Mgd2hpY2ggYWxsIGNvbXBvbmVudHMgc2hvdWxkIHVzZVxuICpcbiAqIEBhdXRob3IgSHl5YW4gQWJvIEZha2hlciA8aGFib2Zha2hlckBiYXNpcy5jb20+XG4gKi9cbmNsYXNzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IGh0bWwgZWxlbWVudFxuICAgKlxuICAgKiBAdHlwZSB7SFRNTEVsZW1lbnR9XG4gICAqL1xuICBfZ3VpID0gbnVsbFxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBjb21wb25lbnRcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtc1xuICAgKlxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBpbml0KHBhcmFtcykge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX0gZG9lcyBub3QgaW1wbGVtZW50IHRoZSBbaW5pdF0gbWV0aG9kYFxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIERPTSBlbGVtZW50IG9mIHRoZSBjb21wb25lbnQsIHRoaXMgaXMgd2hhdCB0aGUgZ3JpZCBwdXRzIGludG8gdGhlIGNlbGxcbiAgICpcbiAgICogQHJldHVybiB7SFRNTEVsZW1lbnR9XG4gICAqL1xuICBnZXRHdWkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2d1aVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgY2FsbGVkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQuIElmIHlvdXIgY3VzdG9tIGNvbXBvbmVudCBuZWVkcyB0byBkb1xuICAgKiBhbnkgcmVzb3VyY2UgY2xlYW5pbmcgdXAsIGRvIGl0IGhlcmUuXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIC8vIHBhc3NcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIHRoZSByZXF1aXJlZCBvcHRpb24gdmFsdWVcbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiB3aWxsIHRyeSB0byBmaW5kIHRoZSBwYXNzZWQgb3B0aW9uJ3MgdmFsdWUgaW4gdGhlIGZvbGxvd2luZyBvcmRlclxuICAgKlxuICAgKiAgMS4gcGFyYW1zXG4gICAqICAyLiBTZWFyY2ggYHBhcmFtcy5jb2xEZWZgXG4gICAqICAzLiBTZWFyY2ggYHBhcmFtcy5jb250ZXh0LkFHcmlkQ29tcG9uZW50c01ldGFDb25maWdbQ09MVU1OX0lEXWAgb3IgYHBhcmFtcy5jb250ZXh0Lm1ldGFbQ09MVU1OX0lEXWBcbiAgICogIDQuIFNlYXJjaCBgcGFyYW1zLmNvbnRleHQuQUdyaWRDb21wb25lbnRzTWV0YUNvbmZpZ2Agb3IgYHBhcmFtcy5jb250ZXh0Lm1ldGFgXG4gICAqICA1LiBTZWFyY2ggYHBhcmFtcy5jb250ZXh0YFxuICAgKiAgNi4gSWYgbm9uZSBmb3VuZCByZXR1cm4gdGhlIGZhbGxiYWNrXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIHRoZSBuYW1lIG9mIHRoZSBvcHRpb25cbiAgICogQHBhcmFtIHtwYXJhbXN9IHBhcmFtcyBhbiBvYmplY3QgdXNlZCB0byBzZWFyY2ggZm9yIHRoZSBvcHRpb25cbiAgICogQHBhcmFtIHtTdHJpbmd9IGZhbGxiYWNrIGEgdmFsdWUgdG8gcmV0dXJuIGluIGNhc2UgdGhlIG9wdGlvbiBjYW4gbm90IGJlIGZvdW5kXG4gICAqL1xuICBnZXRPcHRpb24obmFtZSwgcGFyYW1zLCBmYWxsYmFjayA9IG51bGwpIHtcbiAgICBsZXQgb3B0aW9uXG5cbiAgICBpZiAocGFyYW1zICYmIHBhcmFtcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgb3B0aW9uID0gcGFyYW1zW25hbWVdXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRyeSB0byBmZXRjaCBmcm9tIHRoZSBjb2x1bW4gZGVmIGZpcnN0XG4gICAgICBpZiAoXG4gICAgICAgIHBhcmFtcy5oYXNPd25Qcm9wZXJ0eSgnY29sRGVmJykgJiZcbiAgICAgICAgcGFyYW1zLmNvbERlZi5oYXNPd25Qcm9wZXJ0eShuYW1lKVxuICAgICAgKSB7XG4gICAgICAgIG9wdGlvbiA9IHBhcmFtcy5jb2xEZWZbbmFtZV1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHRyeSB0byBmZXRjaCBmcm9tIEFHcmlkQ29tcG9uZW50c01ldGFDb25maWd8bWV0YSBpbiB0aGUgY29udGV4dFxuICAgICAgICBsZXQgQUdyaWRDb21wb25lbnRzTWV0YUNvbmZpZyA9IG51bGxcbiAgICAgICAgaWYgKHBhcmFtcy5oYXNPd25Qcm9wZXJ0eSgnY29udGV4dCcpKSB7XG4gICAgICAgICAgQUdyaWRDb21wb25lbnRzTWV0YUNvbmZpZyA9XG4gICAgICAgICAgICBwYXJhbXMuY29udGV4dC5BR3JpZENvbXBvbmVudHNNZXRhQ29uZmlnIHx8IHBhcmFtcy5jb250ZXh0Lm1ldGFcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBBR3JpZENvbXBvbmVudHNNZXRhQ29uZmlnICYmXG4gICAgICAgICAgQUdyaWRDb21wb25lbnRzTWV0YUNvbmZpZy5oYXNPd25Qcm9wZXJ0eShwYXJhbXMuY29sdW1uLmNvbElkKSAmJlxuICAgICAgICAgIEFHcmlkQ29tcG9uZW50c01ldGFDb25maWdbcGFyYW1zLmNvbHVtbi5jb2xJZF0uaGFzT3duUHJvcGVydHkobmFtZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgb3B0aW9uID0gQUdyaWRDb21wb25lbnRzTWV0YUNvbmZpZ1twYXJhbXMuY29sdW1uLmNvbElkXVtuYW1lXVxuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIEFHcmlkQ29tcG9uZW50c01ldGFDb25maWcgJiZcbiAgICAgICAgICBBR3JpZENvbXBvbmVudHNNZXRhQ29uZmlnLmhhc093blByb3BlcnR5KG5hbWUpXG4gICAgICAgICkge1xuICAgICAgICAgIG9wdGlvbiA9IEFHcmlkQ29tcG9uZW50c01ldGFDb25maWdbbmFtZV1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB0cnkgdG8gZmV0Y2ggZnJvbSB0aGUgY29udGV4dCBvYmplY3QgaXRzZWxmXG4gICAgICAgICAgY29uc3QgY29udGV4dCA9IHBhcmFtcy5jb250ZXh0XG4gICAgICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICAgICAgb3B0aW9uID0gY29udGV4dFtuYW1lXVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB0cnkgdG8gY2hlY2sgcGFyYW1zIGl0c2VsZiBvciBmYWxsYmFjayB0byBkZWZhdWx0XG4gICAgICAgICAgICBvcHRpb24gPSBmYWxsYmFja1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0eXBlb2Ygb3B0aW9uICE9PSAndW5kZWZpbmVkJyA/IG9wdGlvbiA6IGZhbGxiYWNrXG4gIH1cblxuICAvKipcbiAgICogR2V0IFdpbmRvdyBJbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge3BhcmFtc30gcGFyYW1zIGFuIG9iamVjdCB1c2VkIHRvIHNlYXJjaCBmb3IgdGhlIHdpbmRvdyBpbnN0YW5jZVxuICAgKlxuICAgKiBAcmV0dXJuIHtXaW5kb3d9XG4gICAqL1xuICBnZXRXaW4ocGFyYW1zKSB7XG4gICAgY29uc3Qgd2luID0gdGhpcy5nZXRPcHRpb24oJ3dpbmRvdycsIHBhcmFtcykgfHwgd2luZG93IHx8IG51bGxcblxuICAgIGlmICghd2luKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0N1cnJlbnQgZW52aXJvbm1lbnQgZG9lcyBub3Qgc3VwcG9ydCB3aW5kb3cnKVxuICAgIH1cblxuICAgIHJldHVybiB3aW5cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZG9jdW1lbnQgSW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtwYXJhbXN9IHBhcmFtcyBhbiBvYmplY3QgdXNlZCB0byBzZWFyY2ggZm9yIHRoZSBkb2N1bWVudCBpbnN0YW5jZVxuICAgKlxuICAgKiBAcmV0dXJuIHtIVE1MRG9jdW1lbnR9XG4gICAqL1xuICBnZXREb2MocGFyYW1zKSB7XG4gICAgY29uc3QgZG9jID0gdGhpcy5nZXRPcHRpb24oJ2RvY3VtZW50JywgcGFyYW1zKSB8fCBkb2N1bWVudCB8fCBudWxsXG5cbiAgICBpZiAoIWRvYykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDdXJyZW50IGVudmlyb25tZW50IGRvZXMgbm90IHN1cHBvcnQgZG9jdW1lbnQnKVxuICAgIH1cblxuICAgIHJldHVybiBkb2NcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDb21wb25lbnRcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9Db21wb25lbnQvQ29tcG9uZW50LmpzIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWFnZ3JpZC1jb21wb25lbnRzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IHsgYXV0b2JpbmQsIG92ZXJyaWRlIH0gZnJvbSAnY29yZS1kZWNvcmF0b3JzJ1xuaW1wb3J0IENvbXBvbmVudCBmcm9tICcuLi9Db21wb25lbnQnXG5pbXBvcnQgJy4vc3R5bGUuc2NzcydcblxuLyoqXG4gKiBCb29sZWFuIFJlbmRlcmVyXG4gKlxuICogU2ltcGxlIHRvZ2dsZSBzd2l0Y2ggdG8gaGFuZGxlIGJvb2xlYW4gdmFsdWVzXG4gKlxuICogQGF1dGhvciBIeXlhbiBBYm8gRmFraGVyIDxoYWJvZmFraGVyQGJhc2lzLmNvbT5cbiAqL1xuY2xhc3MgQm9vbGVhblN3aXRjaCBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3QgbmV3IEJvb2xlYW5Td2l0Y2ggQ29tcG9uZW50XG4gICAqXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gW2luaXRpYWxWYWx1ZSA9IGZhbHNlXSB0aGUgZGVmYXVsdCBzdGF0ZSAsIGNoZWNrZWQgb3IgdW5jaGVja2VkXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtsaXN0ZW5lciA9IG51bGxdIGEgbGlzdGVuZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHN0YXRlIGlzIGNoYW5nZWRcbiAgICovXG4gIGNvbnN0cnVjdG9yKGluaXRpYWxWYWx1ZSA9IGZhbHNlLCBsaXN0ZW5lciA9IG51bGwpIHtcbiAgICBzdXBlcigpXG4gICAgdGhpcy5zZXRDaGVja2VkKGluaXRpYWxWYWx1ZSlcbiAgICB0aGlzLnNldExpc3RlbmVyKGxpc3RlbmVyKVxuICAgIHRoaXMuc2V0RGlzYWJsZWQoZmFsc2UpXG4gIH1cblxuICAvKipcbiAgICogIEBpbmhlcml0RG9jXG4gICAqL1xuICBAb3ZlcnJpZGVcbiAgaW5pdChwYXJhbXMpIHtcbiAgICB0aGlzLl9wYXJhbXMgPSBwYXJhbXNcbiAgICB0aGlzLl9vbkNsaWNrID0gdGhpcy5fb25DbGljay5iaW5kKHRoaXMpXG4gICAgdGhpcy5fb25LZXlkb3duID0gdGhpcy5fb25LZXlkb3duLmJpbmQodGhpcylcblxuICAgIHRoaXMuX2d1aSA9IHRoaXMuZ2V0RG9jKHBhcmFtcykuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICB0aGlzLl9ndWkuY2xhc3NOYW1lID0gJ2Jvb2xTd2l0Y2hfX3dyYXBwZXInXG4gICAgdGhpcy5fZ3VpLnRhYkluZGV4ID0gLTFcblxuICAgIHRoaXMucmVuZGVyKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlIHN3aXRjaCBzbGlkZXIgYW5kIGhpZGRlbiBpbnB1dC5cbiAgICovXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBkb2MgPSB0aGlzLmdldERvYyh0aGlzLl9wYXJhbXMpXG5cbiAgICBjb25zdCBib29sU3dpdGNoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICBib29sU3dpdGNoLmNsYXNzTmFtZSA9ICdib29sU3dpdGNoJ1xuXG4gICAgLy8gaW5wdXRcbiAgICB0aGlzLl9pbnB1dCA9IGRvYy5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXG4gICAgdGhpcy5faW5wdXQuaWQgPSBgZWwtJHtNYXRoLnJhbmRvbSgpfWBcbiAgICB0aGlzLl9pbnB1dC5uYW1lID0gJ2NoZWNrYm94J1xuICAgIHRoaXMuX2lucHV0LmNsYXNzTmFtZSA9ICdib29sU3dpdGNoX19jaGVja2JveCdcbiAgICB0aGlzLl9pbnB1dC50eXBlID0gJ2NoZWNrYm94J1xuICAgIHRoaXMuX2lucHV0LmNoZWNrZWQgPSB0aGlzLmlzQ2hlY2tlZCgpXG4gICAgdGhpcy5faW5wdXQuZGlzYWJsZWQgPSB0aGlzLmlzRGlzYWJsZWQoKVxuICAgIHRoaXMuX2lucHV0LnRhYkluZGV4ID0gJzAnXG5cbiAgICAvLyBsYWJlbFxuICAgIGNvbnN0IGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGFiZWwnKVxuICAgIGxhYmVsLmNsYXNzTmFtZSA9ICdib29sU3dpdGNoX19sYWJlbCdcbiAgICBsYWJlbC5mb3IgPSB0aGlzLl9pbnB1dC5pZFxuICAgIGxhYmVsLmlubmVySFRNTCA9IC8qIGh0bWwgKi8gYFxuICAgICAgPHNwYW4gY2xhc3M9XCJib29sU3dpdGNoX19pbm5lclwiPjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYm9vbFN3aXRjaF9fc3dpdGNoXCI+PC9zcGFuPlxuICAgIGBcblxuICAgIC8vIGF0dGFjaGUgaW5wdXQgYW5kIHNsaWRlciB0byBjb21wb25lbnRcbiAgICBib29sU3dpdGNoLmFwcGVuZENoaWxkKHRoaXMuX2lucHV0KVxuICAgIGJvb2xTd2l0Y2guYXBwZW5kQ2hpbGQobGFiZWwpXG5cbiAgICBib29sU3dpdGNoLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5fb25DbGljaylcbiAgICB0aGlzLl9ndWkuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuX29uS2V5ZG93bilcblxuICAgIHRoaXMuX2d1aS5hcHBlbmRDaGlsZChib29sU3dpdGNoKVxuICB9XG5cbiAgLyoqXG4gICAqICBAaW5oZXJpdERvY1xuICAgKi9cbiAgQG92ZXJyaWRlXG4gIGRlc3Ryb3koKSB7XG4gICAgY29uc3QgYm9vbFN3aXRjaCA9IHRoaXMuX2d1aS5xdWVyeVNlbGVjdG9yKCcuYm9vbFN3aXRjaCcpXG4gICAgYm9vbFN3aXRjaC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuX29uQ2xpY2spXG4gICAgdGhpcy5fZ3VpLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLl9vbktleWRvd24pXG4gIH1cblxuICAvKipcbiAgICogRm9jdXMgdGhlIGNvbXBvbmVudFxuICAgKi9cbiAgZm9jdXMoKSB7XG4gICAgdGhpcy5fZ3VpLmZvY3VzKClcbiAgICB0aGlzLl9pbnB1dC5mb2N1cygpXG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgbGlzdGVuZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHN3aXRjaCBzdGF0ZSBpcyBjaGFuZ2VkXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGxpc3RlbmVyXG4gICAqL1xuICBzZXRMaXN0ZW5lcihsaXN0ZW5lcikge1xuICAgIHRoaXMuX2xpc3RlbmVyID0gbGlzdGVuZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxpc3RlbmVyIGluc3RhbmNlICwgaWZcbiAgICpcbiAgICogQHJldHVybiB7RnVuY3Rpb258bnVsbH1cbiAgICovXG4gIGdldExpc3RlbmVyKCkge1xuICAgIHJldHVybiB0aGlzLl9saXN0ZW5lclxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBjaGVja2VkXG4gICAqXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gdmFsdWUgdHJ1ZSB0byBjaGVjayAsIGZhbHNlIHRvIHVuY2hlY2tcbiAgICovXG4gIHNldENoZWNrZWQodmFsdWUpIHtcbiAgICB0aGlzLl9jaGVja2VkID0gdmFsdWVcbiAgICBpZiAodGhpcy5faW5wdXQpIHtcbiAgICAgIHRoaXMuX2lucHV0LmNoZWNrZWQgPSB2YWx1ZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB0aGUgaWYgc3dpdGNoIGlzIGNoZWNrZWRcbiAgICpcbiAgICogQHJldHVybiB7Qm9vbGVhbn0gIHRydWUgd2hlbiBjaGVja2VkICwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBpc0NoZWNrZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NoZWNrZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGUgdGhlIGNvbXBvbmVudCBzdGF0ZVxuICAgKi9cbiAgdG9nZ2xlKCkge1xuICAgIHRoaXMuc2V0Q2hlY2tlZCghdGhpcy5pc0NoZWNrZWQoKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgZGlzYWJsZWRcbiAgICpcbiAgICogQHBhcmFtIHtCb29sZWFufSB2YWx1ZSB0cnVlIHRvIGRpc2FibGVkICwgZmFsc2UgdG8gZW5hYmxlXG4gICAqL1xuICBzZXREaXNhYmxlZCh2YWx1ZSkge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWVcbiAgICBpZiAodGhpcy5faW5wdXQpIHtcbiAgICAgIHRoaXMuX2lucHV0LmRpc2FibGVkID0gdmFsdWVcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIHN3aXRjaCBpcyBkaXNhYmxlZFxuICAgKlxuICAgKiBAcmV0dXJuIHtCb29sZWFufSB0cnVlIHdoZW4gZGlzYWJsZWQgLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIGlzRGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkXG4gIH1cblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgY2xpY2sgbGlzdGVuZXIgb2YgdGhlIHN3aXRjaC4gSXQgd2lsbCB0b2dnbGUgdGhlIHN0YXRlIGFuZCBmaXJlIGFueSByZWdpc3RlcmVkIGxpc3RlbmVyXG4gICAqXG4gICAqIEBwYXJhbSB7RXZlbnR9IGUgdGhlIGV2ZW50IG9iamVjdFxuICAgKlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBAYXV0b2JpbmRcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIF9vbkNsaWNrKGUpIHtcbiAgICBpZiAodGhpcy5fZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHRoaXMudG9nZ2xlKClcblxuICAgIGlmICh0aGlzLl9saXN0ZW5lcikge1xuICAgICAgdGhpcy5fbGlzdGVuZXIodGhpcylcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQga2V5IGxpc3RlbmVyIG9mIHRoZSBzd2l0Y2guIEl0IHdpbGwgdG9nZ2xlIHRoZSBzdGF0ZSB1c2luZyBrZXlib2FyZCBrZXlzIChsZWZ0ICwgcmlnaHQgLCBzcGFjZSlcbiAgICogYW5kIGZpcmUgYW55IHJlZ2lzdGVyZWQgbGlzdGVuZXJcbiAgICpcbiAgICogQHBhcmFtIHtFdmVudH0gZSAgdGhlIGV2ZW50IG9iamVjdFxuICAgKlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBAYXV0b2JpbmRcbiAgX29uS2V5ZG93bihlKSB7XG4gICAgaWYgKHRoaXMuX2Rpc2FibGVkKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBjb25zdCBrZXkgPSBlLndoaWNoIHx8IGUua2V5Q29kZVxuXG4gICAgLy8gc3BhY2VcbiAgICBpZiAoa2V5ID09IDMyKSB7XG4gICAgICB0aGlzLnRvZ2dsZSgpXG4gICAgICBpZiAodGhpcy5fbGlzdGVuZXIpIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuZXIodGhpcylcbiAgICAgIH1cbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gICAgLy8gcmlnaHRcbiAgICBlbHNlIGlmIChrZXkgPT0gMzkpIHtcbiAgICAgIHRoaXMuc2V0Q2hlY2tlZCh0cnVlKVxuICAgICAgaWYgKHRoaXMuX2xpc3RlbmVyKSB7XG4gICAgICAgIHRoaXMuX2xpc3RlbmVyKHRoaXMpXG4gICAgICB9XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICAgIC8vIGxlZnRcbiAgICBlbHNlIGlmIChrZXkgPT0gMzcpIHtcbiAgICAgIHRoaXMuc2V0Q2hlY2tlZChmYWxzZSlcbiAgICAgIGlmICh0aGlzLl9saXN0ZW5lcikge1xuICAgICAgICB0aGlzLl9saXN0ZW5lcih0aGlzKVxuICAgICAgfVxuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBCb29sZWFuU3dpdGNoXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvQm9vbGVhblN3aXRjaC9Cb29sZWFuU3dpdGNoLmpzIiwiaW1wb3J0IHsgZGVjb3JhdGUsIGNyZWF0ZURlZmF1bHRTZXR0ZXIgfSBmcm9tICcuL3ByaXZhdGUvdXRpbHMnO1xuY29uc3QgeyBkZWZpbmVQcm9wZXJ0eSB9ID0gT2JqZWN0O1xuXG5mdW5jdGlvbiBoYW5kbGVEZXNjcmlwdG9yKHRhcmdldCwga2V5LCBkZXNjcmlwdG9yKSB7XG4gIGNvbnN0IHsgY29uZmlndXJhYmxlLCBlbnVtZXJhYmxlLCBpbml0aWFsaXplciwgdmFsdWUgfSA9IGRlc2NyaXB0b3I7XG4gIHJldHVybiB7XG4gICAgY29uZmlndXJhYmxlLFxuICAgIGVudW1lcmFibGUsXG5cbiAgICBnZXQoKSB7XG4gICAgICAvLyBUaGlzIGhhcHBlbnMgaWYgc29tZW9uZSBhY2Nlc3NlcyB0aGVcbiAgICAgIC8vIHByb3BlcnR5IGRpcmVjdGx5IG9uIHRoZSBwcm90b3R5cGVcbiAgICAgIGlmICh0aGlzID09PSB0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXQgPSBpbml0aWFsaXplciA/IGluaXRpYWxpemVyLmNhbGwodGhpcykgOiB2YWx1ZTtcblxuICAgICAgZGVmaW5lUHJvcGVydHkodGhpcywga2V5LCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZSxcbiAgICAgICAgZW51bWVyYWJsZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIHZhbHVlOiByZXRcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0sXG5cbiAgICBzZXQ6IGNyZWF0ZURlZmF1bHRTZXR0ZXIoa2V5KVxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsYXp5SW5pdGlhbGl6ZSguLi5hcmdzKSB7XG4gIHJldHVybiBkZWNvcmF0ZShoYW5kbGVEZXNjcmlwdG9yLCBhcmdzKTtcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWRlY29yYXRvcnMvc3JjL2xhenktaW5pdGlhbGl6ZS5qcyIsIlxudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZS5zY3NzXCIpO1xuXG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcblxudmFyIHRyYW5zZm9ybTtcbnZhciBpbnNlcnRJbnRvO1xuXG5cblxudmFyIG9wdGlvbnMgPSB7XCJobXJcIjp0cnVlfVxuXG5vcHRpb25zLnRyYW5zZm9ybSA9IHRyYW5zZm9ybVxub3B0aW9ucy5pbnNlcnRJbnRvID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQuaGVhZFxuICAgICAgICAgICAgICB9O1xuXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXMuanNcIikoY29udGVudCwgb3B0aW9ucyk7XG5cbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuXG5pZihtb2R1bGUuaG90KSB7XG5cdG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZS5zY3NzXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3R5bGUuc2Nzc1wiKTtcblxuXHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXG5cdFx0dmFyIGxvY2FscyA9IChmdW5jdGlvbihhLCBiKSB7XG5cdFx0XHR2YXIga2V5LCBpZHggPSAwO1xuXG5cdFx0XHRmb3Ioa2V5IGluIGEpIHtcblx0XHRcdFx0aWYoIWIgfHwgYVtrZXldICE9PSBiW2tleV0pIHJldHVybiBmYWxzZTtcblx0XHRcdFx0aWR4Kys7XG5cdFx0XHR9XG5cblx0XHRcdGZvcihrZXkgaW4gYikgaWR4LS07XG5cblx0XHRcdHJldHVybiBpZHggPT09IDA7XG5cdFx0fShjb250ZW50LmxvY2FscywgbmV3Q29udGVudC5sb2NhbHMpKTtcblxuXHRcdGlmKCFsb2NhbHMpIHRocm93IG5ldyBFcnJvcignQWJvcnRpbmcgQ1NTIEhNUiBkdWUgdG8gY2hhbmdlZCBjc3MtbW9kdWxlcyBsb2NhbHMuJyk7XG5cblx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdH0pO1xuXG5cdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufVxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9Cb29sZWFuU3dpdGNoL3N0eWxlLnNjc3MiLCJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5hZy1jZWxsLWlubGluZS1lZGl0aW5nIC5ib29sU3dpdGNoX193cmFwcGVye21hcmdpbjphdXRvIDExcHh9LmJvb2xTd2l0Y2hfX3dyYXBwZXJ7ZGlzcGxheTpmbGV4O3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmV9LmJvb2xTd2l0Y2h7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6NTVweDstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lfS5ib29sU3dpdGNoX19jaGVja2JveHtkaXNwbGF5Om5vbmV9LmJvb2xTd2l0Y2hfX2xhYmVse2Rpc3BsYXk6YmxvY2s7b3ZlcmZsb3c6aGlkZGVuO2N1cnNvcjpwb2ludGVyO2JvcmRlcjoycHggc29saWQgIzk5OTk5OTtib3JkZXItcmFkaXVzOjIwcHh9LmJvb2xTd2l0Y2hfX2lubmVye2Rpc3BsYXk6YmxvY2s7d2lkdGg6MjAwJTttYXJnaW4tbGVmdDotMTAwJTt0cmFuc2l0aW9uOm1hcmdpbiAwLjNzIGVhc2UtaW4gMHN9LmJvb2xTd2l0Y2hfX2lubmVyOmJlZm9yZSwuYm9vbFN3aXRjaF9faW5uZXI6YWZ0ZXJ7ZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O3dpZHRoOjUwJTtoZWlnaHQ6MTVweDtwYWRkaW5nOjA7bGluZS1oZWlnaHQ6MTVweDtmb250LXNpemU6MTRweDtjb2xvcjp3aGl0ZTtmb250LWZhbWlseTonU2Vnb2UgVUkgU3ltYm9sJywgVHJlYnVjaGV0LCBBcmlhbCwgc2Fucy1zZXJpZjtmb250LXdlaWdodDpib2xkO2JveC1zaXppbmc6Ym9yZGVyLWJveH0uYm9vbFN3aXRjaF9faW5uZXI6YmVmb3Jle2NvbnRlbnQ6J1xcXFwyNzE0JztwYWRkaW5nLWxlZnQ6MTBweDtiYWNrZ3JvdW5kLWNvbG9yOiMzNGE3YzE7Y29sb3I6I2ZmZmZmZn0uYm9vbFN3aXRjaF9faW5uZXI6YWZ0ZXJ7Y29udGVudDonXFxcXDI3MTgnO3BhZGRpbmctcmlnaHQ6MTBweDtiYWNrZ3JvdW5kLWNvbG9yOiNlZWVlZWU7Y29sb3I6Izk5OTk5OTt0ZXh0LWFsaWduOnJpZ2h0fS5ib29sU3dpdGNoX19zd2l0Y2h7ZGlzcGxheTpibG9jazt3aWR0aDoxOHB4O21hcmdpbjoxcHg7YmFja2dyb3VuZDojZmZmZmZmO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO3JpZ2h0OjM1cHg7Ym9yZGVyOjJweCBzb2xpZCAjOTk5OTk5O2JvcmRlci1yYWRpdXM6MjBweDt0cmFuc2l0aW9uOmFsbCAwLjNzIGVhc2UtaW4gMHN9LmJvb2xTd2l0Y2hfX2NoZWNrYm94OmNoZWNrZWQrLmJvb2xTd2l0Y2hfX2xhYmVsIC5ib29sU3dpdGNoX19pbm5lcnttYXJnaW4tbGVmdDowfS5ib29sU3dpdGNoX19jaGVja2JveDpjaGVja2VkKy5ib29sU3dpdGNoX19sYWJlbCAuYm9vbFN3aXRjaF9fc3dpdGNoe3JpZ2h0OjBweH0uYWctdGhlbWUtYmFsaGFtIC5ib29sU3dpdGNoX19sYWJlbHtib3JkZXItY29sb3I6I0JEQzNDN30uYWctdGhlbWUtYmFsaGFtIC5ib29sU3dpdGNoX19pbm5lcjpiZWZvcmUsLmFnLXRoZW1lLWJhbGhhbSAuYm9vbFN3aXRjaF9faW5uZXI6YWZ0ZXJ7Y29sb3I6I2ZmZn0uYWctdGhlbWUtYmFsaGFtIC5ib29sU3dpdGNoX19pbm5lcjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjojMDA5MUVBO2NvbG9yOiNmZmZ9LmFnLXRoZW1lLWJhbGhhbSAuYm9vbFN3aXRjaF9faW5uZXI6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjJmMmYyO2NvbG9yOiNCREMzQzd9LmFnLXRoZW1lLWJhbGhhbSAuYm9vbFN3aXRjaF9fc3dpdGNoe2JhY2tncm91bmQ6I2ZmZjtib3JkZXItY29sb3I6I0JEQzNDN30uYWctdGhlbWUtYmFsaGFtLWRhcmsgLmJvb2xTd2l0Y2hfX2xhYmVse2JvcmRlci1jb2xvcjojNDI0MjQyfS5hZy10aGVtZS1iYWxoYW0tZGFyayAuYm9vbFN3aXRjaF9faW5uZXI6YmVmb3JlLC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYm9vbFN3aXRjaF9faW5uZXI6YWZ0ZXJ7Y29sb3I6IzJkMzQzNn0uYWctdGhlbWUtYmFsaGFtLWRhcmsgLmJvb2xTd2l0Y2hfX2lubmVyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiMwMEIwRkY7Y29sb3I6I2NmZDlkYn0uYWctdGhlbWUtYmFsaGFtLWRhcmsgLmJvb2xTd2l0Y2hfX2lubmVyOmFmdGVye2JhY2tncm91bmQtY29sb3I6IzIxMjcyODtjb2xvcjojNDI0MjQyfS5hZy10aGVtZS1iYWxoYW0tZGFyayAuYm9vbFN3aXRjaF9fc3dpdGNoe2JhY2tncm91bmQ6IzJkMzQzNjtib3JkZXItY29sb3I6IzQyNDI0Mn0uYWctdGhlbWUtbWF0ZXJpYWwgLmJvb2xTd2l0Y2hfX2xhYmVse2JvcmRlci1jb2xvcjojZTJlMmUyfS5hZy10aGVtZS1tYXRlcmlhbCAuYm9vbFN3aXRjaF9faW5uZXI6YmVmb3JlLC5hZy10aGVtZS1tYXRlcmlhbCAuYm9vbFN3aXRjaF9faW5uZXI6YWZ0ZXJ7Y29sb3I6I2ZmZn0uYWctdGhlbWUtbWF0ZXJpYWwgLmJvb2xTd2l0Y2hfX2lubmVyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjQwODE7Y29sb3I6I2ZmZn0uYWctdGhlbWUtbWF0ZXJpYWwgLmJvb2xTd2l0Y2hfX2lubmVyOmFmdGVye2JhY2tncm91bmQtY29sb3I6I2YyZjJmMjtjb2xvcjojZDVkNWQ1fS5hZy10aGVtZS1tYXRlcmlhbCAuYm9vbFN3aXRjaF9fc3dpdGNoe2JhY2tncm91bmQ6I2ZmZjtib3JkZXItY29sb3I6I2UyZTJlMn1cXG5cIiwgXCJcIl0pO1xuXG4vLyBleHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyIS4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL0Jvb2xlYW5Td2l0Y2gvc3R5bGUuc2Nzc1xuLy8gbW9kdWxlIGlkID0gNDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIiwiXG4vKipcbiAqIFdoZW4gc291cmNlIG1hcHMgYXJlIGVuYWJsZWQsIGBzdHlsZS1sb2FkZXJgIHVzZXMgYSBsaW5rIGVsZW1lbnQgd2l0aCBhIGRhdGEtdXJpIHRvXG4gKiBlbWJlZCB0aGUgY3NzIG9uIHRoZSBwYWdlLiBUaGlzIGJyZWFrcyBhbGwgcmVsYXRpdmUgdXJscyBiZWNhdXNlIG5vdyB0aGV5IGFyZSByZWxhdGl2ZSB0byBhXG4gKiBidW5kbGUgaW5zdGVhZCBvZiB0aGUgY3VycmVudCBwYWdlLlxuICpcbiAqIE9uZSBzb2x1dGlvbiBpcyB0byBvbmx5IHVzZSBmdWxsIHVybHMsIGJ1dCB0aGF0IG1heSBiZSBpbXBvc3NpYmxlLlxuICpcbiAqIEluc3RlYWQsIHRoaXMgZnVuY3Rpb24gXCJmaXhlc1wiIHRoZSByZWxhdGl2ZSB1cmxzIHRvIGJlIGFic29sdXRlIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBwYWdlIGxvY2F0aW9uLlxuICpcbiAqIEEgcnVkaW1lbnRhcnkgdGVzdCBzdWl0ZSBpcyBsb2NhdGVkIGF0IGB0ZXN0L2ZpeFVybHMuanNgIGFuZCBjYW4gYmUgcnVuIHZpYSB0aGUgYG5wbSB0ZXN0YCBjb21tYW5kLlxuICpcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjc3MpIHtcbiAgLy8gZ2V0IGN1cnJlbnQgbG9jYXRpb25cbiAgdmFyIGxvY2F0aW9uID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB3aW5kb3cubG9jYXRpb247XG5cbiAgaWYgKCFsb2NhdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihcImZpeFVybHMgcmVxdWlyZXMgd2luZG93LmxvY2F0aW9uXCIpO1xuICB9XG5cblx0Ly8gYmxhbmsgb3IgbnVsbD9cblx0aWYgKCFjc3MgfHwgdHlwZW9mIGNzcyAhPT0gXCJzdHJpbmdcIikge1xuXHQgIHJldHVybiBjc3M7XG4gIH1cblxuICB2YXIgYmFzZVVybCA9IGxvY2F0aW9uLnByb3RvY29sICsgXCIvL1wiICsgbG9jYXRpb24uaG9zdDtcbiAgdmFyIGN1cnJlbnREaXIgPSBiYXNlVXJsICsgbG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvXFwvW15cXC9dKiQvLCBcIi9cIik7XG5cblx0Ly8gY29udmVydCBlYWNoIHVybCguLi4pXG5cdC8qXG5cdFRoaXMgcmVndWxhciBleHByZXNzaW9uIGlzIGp1c3QgYSB3YXkgdG8gcmVjdXJzaXZlbHkgbWF0Y2ggYnJhY2tldHMgd2l0aGluXG5cdGEgc3RyaW5nLlxuXG5cdCAvdXJsXFxzKlxcKCAgPSBNYXRjaCBvbiB0aGUgd29yZCBcInVybFwiIHdpdGggYW55IHdoaXRlc3BhY2UgYWZ0ZXIgaXQgYW5kIHRoZW4gYSBwYXJlbnNcblx0ICAgKCAgPSBTdGFydCBhIGNhcHR1cmluZyBncm91cFxuXHQgICAgICg/OiAgPSBTdGFydCBhIG5vbi1jYXB0dXJpbmcgZ3JvdXBcblx0ICAgICAgICAgW14pKF0gID0gTWF0Y2ggYW55dGhpbmcgdGhhdCBpc24ndCBhIHBhcmVudGhlc2VzXG5cdCAgICAgICAgIHwgID0gT1Jcblx0ICAgICAgICAgXFwoICA9IE1hdGNoIGEgc3RhcnQgcGFyZW50aGVzZXNcblx0ICAgICAgICAgICAgICg/OiAgPSBTdGFydCBhbm90aGVyIG5vbi1jYXB0dXJpbmcgZ3JvdXBzXG5cdCAgICAgICAgICAgICAgICAgW14pKF0rICA9IE1hdGNoIGFueXRoaW5nIHRoYXQgaXNuJ3QgYSBwYXJlbnRoZXNlc1xuXHQgICAgICAgICAgICAgICAgIHwgID0gT1Jcblx0ICAgICAgICAgICAgICAgICBcXCggID0gTWF0Y2ggYSBzdGFydCBwYXJlbnRoZXNlc1xuXHQgICAgICAgICAgICAgICAgICAgICBbXikoXSogID0gTWF0Y2ggYW55dGhpbmcgdGhhdCBpc24ndCBhIHBhcmVudGhlc2VzXG5cdCAgICAgICAgICAgICAgICAgXFwpICA9IE1hdGNoIGEgZW5kIHBhcmVudGhlc2VzXG5cdCAgICAgICAgICAgICApICA9IEVuZCBHcm91cFxuICAgICAgICAgICAgICAqXFwpID0gTWF0Y2ggYW55dGhpbmcgYW5kIHRoZW4gYSBjbG9zZSBwYXJlbnNcbiAgICAgICAgICApICA9IENsb3NlIG5vbi1jYXB0dXJpbmcgZ3JvdXBcbiAgICAgICAgICAqICA9IE1hdGNoIGFueXRoaW5nXG4gICAgICAgKSAgPSBDbG9zZSBjYXB0dXJpbmcgZ3JvdXBcblx0IFxcKSAgPSBNYXRjaCBhIGNsb3NlIHBhcmVuc1xuXG5cdCAvZ2kgID0gR2V0IGFsbCBtYXRjaGVzLCBub3QgdGhlIGZpcnN0LiAgQmUgY2FzZSBpbnNlbnNpdGl2ZS5cblx0ICovXG5cdHZhciBmaXhlZENzcyA9IGNzcy5yZXBsYWNlKC91cmxcXHMqXFwoKCg/OlteKShdfFxcKCg/OlteKShdK3xcXChbXikoXSpcXCkpKlxcKSkqKVxcKS9naSwgZnVuY3Rpb24oZnVsbE1hdGNoLCBvcmlnVXJsKSB7XG5cdFx0Ly8gc3RyaXAgcXVvdGVzIChpZiB0aGV5IGV4aXN0KVxuXHRcdHZhciB1bnF1b3RlZE9yaWdVcmwgPSBvcmlnVXJsXG5cdFx0XHQudHJpbSgpXG5cdFx0XHQucmVwbGFjZSgvXlwiKC4qKVwiJC8sIGZ1bmN0aW9uKG8sICQxKXsgcmV0dXJuICQxOyB9KVxuXHRcdFx0LnJlcGxhY2UoL14nKC4qKSckLywgZnVuY3Rpb24obywgJDEpeyByZXR1cm4gJDE7IH0pO1xuXG5cdFx0Ly8gYWxyZWFkeSBhIGZ1bGwgdXJsPyBubyBjaGFuZ2Vcblx0XHRpZiAoL14oI3xkYXRhOnxodHRwOlxcL1xcL3xodHRwczpcXC9cXC98ZmlsZTpcXC9cXC9cXC98XFxzKiQpL2kudGVzdCh1bnF1b3RlZE9yaWdVcmwpKSB7XG5cdFx0ICByZXR1cm4gZnVsbE1hdGNoO1xuXHRcdH1cblxuXHRcdC8vIGNvbnZlcnQgdGhlIHVybCB0byBhIGZ1bGwgdXJsXG5cdFx0dmFyIG5ld1VybDtcblxuXHRcdGlmICh1bnF1b3RlZE9yaWdVcmwuaW5kZXhPZihcIi8vXCIpID09PSAwKSB7XG5cdFx0ICBcdC8vVE9ETzogc2hvdWxkIHdlIGFkZCBwcm90b2NvbD9cblx0XHRcdG5ld1VybCA9IHVucXVvdGVkT3JpZ1VybDtcblx0XHR9IGVsc2UgaWYgKHVucXVvdGVkT3JpZ1VybC5pbmRleE9mKFwiL1wiKSA9PT0gMCkge1xuXHRcdFx0Ly8gcGF0aCBzaG91bGQgYmUgcmVsYXRpdmUgdG8gdGhlIGJhc2UgdXJsXG5cdFx0XHRuZXdVcmwgPSBiYXNlVXJsICsgdW5xdW90ZWRPcmlnVXJsOyAvLyBhbHJlYWR5IHN0YXJ0cyB3aXRoICcvJ1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZSB0byBjdXJyZW50IGRpcmVjdG9yeVxuXHRcdFx0bmV3VXJsID0gY3VycmVudERpciArIHVucXVvdGVkT3JpZ1VybC5yZXBsYWNlKC9eXFwuXFwvLywgXCJcIik7IC8vIFN0cmlwIGxlYWRpbmcgJy4vJ1xuXHRcdH1cblxuXHRcdC8vIHNlbmQgYmFjayB0aGUgZml4ZWQgdXJsKC4uLilcblx0XHRyZXR1cm4gXCJ1cmwoXCIgKyBKU09OLnN0cmluZ2lmeShuZXdVcmwpICsgXCIpXCI7XG5cdH0pO1xuXG5cdC8vIHNlbmQgYmFjayB0aGUgZml4ZWQgY3NzXG5cdHJldHVybiBmaXhlZENzcztcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2xpYi91cmxzLmpzIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWFnZ3JpZC1jb21wb25lbnRzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IEJvb2xlYW5SZW5kZXJlciBmcm9tICcuL0Jvb2xlYW5SZW5kZXJlcidcblxuZXhwb3J0IGRlZmF1bHQgQm9vbGVhblJlbmRlcmVyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvQm9vbGVhblJlbmRlcmVyL2luZGV4LmpzIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWFnZ3JpZC1jb21wb25lbnRzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IENvbXBvbmVudCBmcm9tICcuLi9Db21wb25lbnQnXG5pbXBvcnQgQm9vbGVhblN3aXRjaCBmcm9tICcuLi9Cb29sZWFuU3dpdGNoJ1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgKi9cblxuLyoqXG4gKiBCb29sZWFucyBSZW5kZXJlclxuICpcbiAqIEhhbmRsZSBib29sZWFuIHZhbHVlcyBSZW5kZXJpbmdcbiAqXG4gKiAjIyBPcHRpb25zXG4gKlxuICogfCBOYW1lICAgICAgICAgICAgICAgICAgXHR8IERlZmF1bHQgICAgIFx0fCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHR8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVx0fDotLS0tLS0tLS0tLS0tOnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgKipib29sZWFuVHJ1ZVJlbmRlclZhbHVlKiogIFx0fCBzd2l0Y2ggICAgICBcdHwgVGhlIG9wdGlvbiBjb250cm9scyBob3cgdG8gcmVuZGVyIGB0cnVlYCB2YWx1ZXMuIDxicj4gKipzd2l0Y2gqKiBpcyBhIHNwZWNpYWwgdmFsdWUgdXNlZCB0byByZW5kZXIgdHJ1ZSB2YWx1ZXMgYXMgYSBzd2l0Y2ggY29tcG9uZW50ICBcdHxcbiAqIHwgKipib29sZWFuRmFsc2VSZW5kZXJWYWx1ZSoqIFx0fCBzd2l0Y2ggICAgICBcdHwgVGhlIG9wdGlvbiBjb250cm9scyBob3cgdG8gcmVuZGVyIGBmYWxzZWAgdmFsdWVzLiA8YnI+ICoqc3dpdGNoKiogaXMgYSBzcGVjaWFsIHZhbHVlIHVzZWQgdG8gcmVuZGVyIHRydWUgdmFsdWVzIGFzIGEgc3dpdGNoIGNvbXBvbmVudCBcdHxcbiAqIHwgKipib29sZWFuVHJ1ZVZhbHVlW10qKiAgICAgICB8IHRydWUoYm9vbCkgIFx0fCBUaGUgb3B0aW9ucyBkZXNjcmliZXMgd2hhdCBpcyBjb25zaWRlcmVkIGB0cnVlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHR8XG4gKiB8ICoqYm9vbGVhbkZhbHNlVmFsdWVbXSoqICAgICAgfCBmYWxzZShib29sKSBcdHwgVGhlIG9wdGlvbnMgZGVzY3JpYmVzIHdoYXQgaXMgY29uc2lkZXJlZCBgZmFsc2VgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx0fFxuICpcbiAqIEBhdXRob3IgSHl5YW4gQWJvIEZha2hlciA8aGFib2Zha2hlckBiYXNpcy5jb20+XG4gKi9cbmNsYXNzIEJvb2xlYW5SZW5kZXJlciBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3QgbmV3IEJvb2xlYW5SZW5kZXJlclxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKVxuXG4gICAgLy8gd2lsbCB0aGlzIGFmZmVjdCBCQmogYnVpID9cbiAgICB0aGlzLl9ndWkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJylcbiAgICB0aGlzLl9ndWkuY2xhc3NOYW1lID0gJ2Jvb2xSZW5kZXJlcidcbiAgICB0aGlzLl9ndWkuc3R5bGUuZm9udEZhbWlseSA9XG4gICAgICAnXCJTZWdvZSBVSSBTeW1ib2xcIixUcmVidWNoZXQsIEFyaWFsLCBzYW5zLXNlcmlmJ1xuICB9XG5cbiAgLyoqXG4gICAqICBAaW5oZXJpdERvY1xuICAgKi9cbiAgaW5pdChwYXJhbXMpIHtcbiAgICB0aGlzLnJlZnJlc2gocGFyYW1zLCB0cnVlKVxuICB9XG5cbiAgLyoqXG4gICAqICBAaW5oZXJpdERvY1xuICAgKi9cbiAgZ2V0R3VpKCkge1xuICAgIHJldHVybiB0aGlzLl9ndWlcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGluaGVyaXREb2NcbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuX3N3aXRjaGVyKSB7XG4gICAgICB0aGlzLl9zd2l0Y2hlci5kZXN0cm95KClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVmcmVzaCB0aGUgY2VsbFxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zIGNlbGwgcmVuZGVyZXIgcGFyYW1zXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gaXNJbml0IHRydWUgd2hlbiB0aGlzIG1ldGhvZCBpcyBiZWluZyBjYWxsZWQgaW4gYGluaXRgIHBoYXNlICwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqXG4gICAqIEByZXR1cm4ge0Jvb2xlYW59IHRydWUgaWYgdGhlIHJlZnJlc2ggc3VjY2VlZGVkLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIHJlZnJlc2gocGFyYW1zLCBpc0luaXQpIHtcbiAgICBsZXQgdmFsdWUgPSBwYXJhbXMudmFsdWVGb3JtYXR0ZWQgPyBwYXJhbXMudmFsdWVGb3JtYXR0ZWQgOiBwYXJhbXMudmFsdWVcblxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aGlzLl9ndWkuaW5uZXJIVE1MID0gJydcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBTdHJpbmcodmFsdWUpXG4gICAgICBjb25zdCBib29sZWFuVHJ1ZVJlbmRlclZhbHVlID0gU3RyaW5nKFxuICAgICAgICB0aGlzLmdldE9wdGlvbignYm9vbGVhblRydWVSZW5kZXJWYWx1ZScsIHBhcmFtcywgJ3N3aXRjaCcpXG4gICAgICApXG4gICAgICBjb25zdCBib29sZWFuRmFsc2VSZW5kZXJWYWx1ZSA9IFN0cmluZyhcbiAgICAgICAgdGhpcy5nZXRPcHRpb24oJ2Jvb2xlYW5GYWxzZVJlbmRlclZhbHVlJywgcGFyYW1zLCAnc3dpdGNoJylcbiAgICAgIClcbiAgICAgIGNvbnN0IGJvb2xlYW5UcnVlVmFsdWUgPSBbXVxuICAgICAgICAuY29uY2F0KHRoaXMuZ2V0T3B0aW9uKCdib29sZWFuVHJ1ZVZhbHVlJywgcGFyYW1zLCBbdHJ1ZV0pKVxuICAgICAgICAubWFwKHggPT4gU3RyaW5nKHgpKVxuICAgICAgY29uc3QgYm9vbGVhbkZhbHNlVmFsdWUgPSBbXVxuICAgICAgICAuY29uY2F0KHRoaXMuZ2V0T3B0aW9uKCdib29sZWFuRmFsc2VWYWx1ZScsIHBhcmFtcywgW2ZhbHNlXSkpXG4gICAgICAgIC5tYXAoeCA9PiBTdHJpbmcoeCkpXG5cbiAgICAgIC8vIGhhbmRsZSB0cnVlIHZhbHVlc1xuICAgICAgaWYgKGJvb2xlYW5UcnVlVmFsdWUuaW5kZXhPZih2YWx1ZSkgPiAtMSkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIWJvb2xlYW5UcnVlUmVuZGVyVmFsdWUubGVuZ3RoIHx8XG4gICAgICAgICAgYm9vbGVhblRydWVSZW5kZXJWYWx1ZSA9PT0gJ3N3aXRjaCdcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3Qgc3dpdGNoZXIgPSB0aGlzLl9nZXRTd2l0Y2hlcihwYXJhbXMpXG4gICAgICAgICAgc3dpdGNoZXIuc2V0Q2hlY2tlZCh0cnVlKVxuICAgICAgICAgIHRoaXMuX2d1aS5pbm5lckhUTUwgPSAnJ1xuICAgICAgICAgIHRoaXMuX2d1aS5hcHBlbmRDaGlsZChzd2l0Y2hlci5nZXRHdWkoKSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9ndWkuaW5uZXJIVE1MID0gYm9vbGVhblRydWVSZW5kZXJWYWx1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBoYW5kbGUgZmFsc2UgdmFsdWVzXG4gICAgICBlbHNlIGlmIChib29sZWFuRmFsc2VWYWx1ZS5pbmRleE9mKHZhbHVlKSA+IC0xKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhYm9vbGVhbkZhbHNlUmVuZGVyVmFsdWUubGVuZ3RoIHx8XG4gICAgICAgICAgYm9vbGVhbkZhbHNlUmVuZGVyVmFsdWUgPT09ICdzd2l0Y2gnXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IHN3aXRjaGVyID0gdGhpcy5fZ2V0U3dpdGNoZXIocGFyYW1zKVxuICAgICAgICAgIHN3aXRjaGVyLnNldENoZWNrZWQoZmFsc2UpXG4gICAgICAgICAgdGhpcy5fZ3VpLmlubmVySFRNTCA9ICcnXG4gICAgICAgICAgdGhpcy5fZ3VpLmFwcGVuZENoaWxkKHN3aXRjaGVyLmdldEd1aSgpKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX2d1aS5pbm5lckhUTUwgPSBib29sZWFuRmFsc2VSZW5kZXJWYWx1ZVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9ndWkuaW5uZXJIVE1MID0gdmFsdWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBzd2l0Y2ggaW5zdGFuY2UgaWYgYXZhaWxhYmxlICwgb3IgY3JlYXRlIGl0IG90aGVyd2lzZVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zXG4gICAqXG4gICAqIEByZXR1cm4ge0Jvb2xlYW5Td2l0Y2h9IHN3aXRjaCBpbnN0YW5jZVxuICAgKi9cbiAgX2dldFN3aXRjaGVyKHBhcmFtcykge1xuICAgIGlmICghdGhpcy5fc3dpdGNoZXIpIHtcbiAgICAgIHRoaXMuX3N3aXRjaGVyID0gbmV3IEJvb2xlYW5Td2l0Y2goKVxuICAgICAgdGhpcy5fc3dpdGNoZXIuc2V0RGlzYWJsZWQodHJ1ZSlcbiAgICAgIHRoaXMuX3N3aXRjaGVyLmluaXQocGFyYW1zKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zd2l0Y2hlclxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJvb2xlYW5SZW5kZXJlclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL0Jvb2xlYW5SZW5kZXJlci9Cb29sZWFuUmVuZGVyZXIuanMiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmFzaXMtYWdncmlkLWNvbXBvbmVudHMgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgQm9vbGVhbkZpbHRlciBmcm9tICcuL0Jvb2xlYW5GaWx0ZXInXG5cbmV4cG9ydCBkZWZhdWx0IEJvb2xlYW5GaWx0ZXJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9Cb29sZWFuRmlsdGVyL2luZGV4LmpzIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWFnZ3JpZC1jb21wb25lbnRzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IHsgYXV0b2JpbmQsIG92ZXJyaWRlIH0gZnJvbSAnY29yZS1kZWNvcmF0b3JzJ1xuaW1wb3J0IENvbXBvbmVudCBmcm9tICcuLi9Db21wb25lbnQnXG5pbXBvcnQgJy4vc3R5bGUuc2NzcydcblxuY29uc3QgdG9UaXRsZUNhc2UgPSBwaHJhc2UgPT4ge1xuICByZXR1cm4gcGhyYXNlXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAuc3BsaXQoJyAnKVxuICAgIC5tYXAod29yZCA9PiB3b3JkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAuam9pbignICcpXG59XG5cbmNvbnN0IHN0cmlwSFRNTCA9IGh0bWwgPT4ge1xuICBjb25zdCB0bXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKVxuICB0bXAuaW5uZXJIVE1MID0gaHRtbFxuICByZXR1cm4gdG1wLnRleHRDb250ZW50IHx8IHRtcC5pbm5lclRleHQgfHwgJydcbn1cblxuLyoqXG4gKiBCb29sZWFucyBGaWx0ZXJcbiAqXG4gKiBIYW5kbGUgYm9vbGVhbiB2YWx1ZXMgRmlsdGVyaW5nXG4gKlxuICogIyMgT3B0aW9uc1xuICpcbiAqIHwgTmFtZSAgICAgICAgICAgICAgICAgIFx0fCBEZWZhdWx0ICAgICBcdHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx0fFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cdHw6LS0tLS0tLS0tLS0tLTp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8ICoqYm9vbGVhblVzZWRUcnVlVmFsdWUqKiAgIHwgdW5kZWZpbmVkICAgIHwgdGhlIHZhbHVlIHRvIHVzZSB3aGVuIHRoZSBmaWx0ZXIgZGlzcGxheXMgdGhlIHRydWUgc3RhdGUgLiBpbiBjYXNlIGl0IGlzIHVuZGVmaW5lZCB0aGVuIHdlIHVzZSB0aGUgZmlyc3QgaXRlbSBpbiAqKmJvb2xlYW5UcnVlVmFsdWVbXSoqXG4gKiB8ICoqYm9vbGVhblVzZWRGYWxzZVZhbHVlKiogICB8IHVuZGVmaW5lZCAgICB8IHRoZSB2YWx1ZSB0byB1c2Ugd2hlbiB0aGUgZmlsdGVyIGRpc3BsYXlzIHRoZSBmYWxzZSBzdGF0ZS4gaW4gY2FzZSBpdCBpcyB1bmRlZmluZWQgdGhlbiB3ZSB1c2UgdGhlIGZpcnN0IGl0ZW0gaW4gKipib29sZWFuRmFsc2VWYWx1ZVtdKipcbiAqIHwgKipib29sZWFuVHJ1ZVZhbHVlW10qKiAgICAgICB8IHRydWUoYm9vbCkgIFx0fCBUaGUgb3B0aW9ucyBkZXNjcmliZXMgd2hhdCBpcyBjb25zaWRlcmVkIGB0cnVlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHR8XG4gKiB8ICoqYm9vbGVhbkZhbHNlVmFsdWVbXSoqICAgICAgfCBmYWxzZShib29sKSBcdHwgVGhlIG9wdGlvbnMgZGVzY3JpYmVzIHdoYXQgaXMgY29uc2lkZXJlZCBgZmFsc2VgXG4gKiB8ICoqY2xlYXJCdXR0b24qKiAgIHwgZmFsc2UgICAgfCAgU2V0IHRvIHRydWUgdG8gaGF2ZSB0aGUgZmlsdGVyIHVzZSBhIENsZWFyIGJ1dHRvbi4gVGhlIENsZWFyIGJ1dHRvbiB3aWxsIGNsZWFyIHRoZSAoZm9ybSkgZGV0YWlscyBvZiB0aGUgZmlsdGVyIHdpdGhvdXQgcmVtb3ZpbmcgYW55IGFjdGl2ZSBmaWx0ZXJzIG9uIHRoZSBjb2x1bW4uXG4gKiB8ICoqYXBwbHlCdXR0b24qKiAgIHwgZmFsc2UgICAgfCAgU2V0IHRvIHRydWUgdG8gaGF2ZSB0aGUgZmlsdGVyIHVzZSBhbiBBcHBseSBidXR0b24uIElmIHRoZSBBcHBseSBidXR0b24gaXMgcHJlc2VudCwgdGhlbiB0aGUgZmlsdGVyIGlzIG9ubHkgYXBwbGllZCBhZnRlciB0aGUgdXNlciBoaXRzIHRoZSBBcHBseSBidXR0b24uXG4gKiB8ICoqcmVzZXRCdXR0b24qKiAgIHwgZmFsc2UgICAgfCAgU2V0IHRvIHRydWUgdG8gaGF2ZSB0aGUgZmlsdGVyIHVzZSBhIFJlc2V0IGJ1dHRvbi4gVGhlIFJlc2V0IGJ1dHRvbiB3aWxsIGNsZWFyIHRoZSBkZXRhaWxzIG9mIHRoZSBmaWx0ZXIgYW5kIGFueSBhY3RpdmUgZmlsdGVycyBvbiB0aGF0IGNvbHVtbi5cbiAqXG4gKiBAYXV0aG9yIEh5eWFuIEFibyBGYWtoZXIgPGhhYm9mYWtoZXJAYmFzaXMuY29tPlxuICovXG5jbGFzcyBCb29sZWFuRmlsdGVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRydWUgLCBmYWxzZSB0cmFuc2xhdGlvblxuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgX2Jvb2xlYW5GaWx0ZXJUcmFuc2xhdGlvbiA9IHt9XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3QgbmV3IEJvb2xlYW5GaWx0ZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKClcblxuICAgIHRoaXMuX2d1aSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgdGhpcy5fZ3VpLmNsYXNzTmFtZSA9ICdib29sZWFuRmlsdGVyIGFnLWZpbHRlci1ib2R5LXdyYXBwZXInXG4gICAgdGhpcy5fZ3VpLnRhYkluZGV4ID0gJzAnXG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIEBvdmVycmlkZVxuICBpbml0KHBhcmFtcykge1xuICAgIGNvbnN0IHRyYW5zbGF0ZSA9IHBhcmFtcy5hcGkuZ3JpZE9wdGlvbnNXcmFwcGVyLmdldExvY2FsZVRleHRGdW5jKClcbiAgICBjb25zdCBpc0NsZWFyRmlsdGVyID0gdGhpcy5nZXRPcHRpb24oJ2NsZWFyQnV0dG9uJywgcGFyYW1zLCBmYWxzZSlcbiAgICBjb25zdCBpc1Jlc2V0QnV0dG9uID0gdGhpcy5nZXRPcHRpb24oJ3Jlc2V0QnV0dG9uJywgcGFyYW1zLCBmYWxzZSlcbiAgICBjb25zdCBpc0FwcGx5QnV0dG9uID0gdGhpcy5nZXRPcHRpb24oJ2FwcGx5QnV0dG9uJywgcGFyYW1zLCBmYWxzZSlcblxuICAgIHRoaXMuX3RydWVWYWx1ZSA9IFtdXG4gICAgICAuY29uY2F0KHRoaXMuZ2V0T3B0aW9uKCdib29sZWFuVHJ1ZVZhbHVlJywgcGFyYW1zLCBbdHJ1ZV0pKVxuICAgICAgLm1hcCh4ID0+IFN0cmluZyh4KSlcblxuICAgIHRoaXMuX2ZhbHNlVmFsdWUgPSBbXVxuICAgICAgLmNvbmNhdCh0aGlzLmdldE9wdGlvbignYm9vbGVhbkZhbHNlVmFsdWUnLCBwYXJhbXMsIFtmYWxzZV0pKVxuICAgICAgLm1hcCh4ID0+IFN0cmluZyh4KSlcblxuICAgIHRoaXMuX3VzZWRUcnVlVmFsdWUgPSBTdHJpbmcoXG4gICAgICB0aGlzLmdldE9wdGlvbignYm9vbGVhblVzZWRUcnVlVmFsdWUnLCBwYXJhbXMsIHRoaXMuX3RydWVWYWx1ZVswXSlcbiAgICApXG5cbiAgICB0aGlzLl91c2VkRmFsc2VWYWx1ZSA9IFN0cmluZyhcbiAgICAgIHRoaXMuZ2V0T3B0aW9uKCdib29sZWFuVXNlZEZhbHNlVmFsdWUnLCBwYXJhbXMsIHRoaXMuX2ZhbHNlVmFsdWVbMF0pXG4gICAgKVxuXG4gICAgdGhpcy5fYm9vbGVhbkZpbHRlclRyYW5zbGF0aW9uID0gdGhpcy5nZXRPcHRpb24oXG4gICAgICAnYm9vbGVhbkZpbHRlclRyYW5zbGF0aW9uJyxcbiAgICAgIHBhcmFtcyxcbiAgICAgIHtcbiAgICAgICAgdHJ1ZTogdHJhbnNsYXRlKFxuICAgICAgICAgICdib29sZWFuVHJ1ZScsXG4gICAgICAgICAgdG9UaXRsZUNhc2UoU3RyaW5nKHRoaXMuX3VzZWRUcnVlVmFsdWUpKVxuICAgICAgICApLFxuICAgICAgICBmYWxzZTogdHJhbnNsYXRlKFxuICAgICAgICAgICdib29sZWFuRmFsc2UnLFxuICAgICAgICAgIHRvVGl0bGVDYXNlKFN0cmluZyh0aGlzLl91c2VkRmFsc2VWYWx1ZSkpXG4gICAgICAgICksXG4gICAgICAgIHJlc2V0OiB0cmFuc2xhdGUoXG4gICAgICAgICAgJ2Jvb2xlYW5SZXNldCcsXG4gICAgICAgICAgdHJhbnNsYXRlKCdyZXNldEZpbHRlcicsICdSZXNldCBGaWx0ZXInKVxuICAgICAgICApLFxuICAgICAgfVxuICAgIClcblxuICAgIHRoaXMuX3BhcmFtcyA9IHBhcmFtc1xuICAgIHRoaXMuX2ZpbHRlclRleHQgPSBudWxsXG5cbiAgICB0aGlzLl9vblJhZGlvQ2hhbmdlID0gdGhpcy5fb25SYWRpb0NoYW5nZS5iaW5kKHRoaXMsIGlzQXBwbHlCdXR0b24pXG5cbiAgICAvLyBjcmVhdGUgYm9keVxuICAgIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAgIGJvZHkuY2xhc3NOYW1lID0gJ2Jvb2xlYW5GaWx0ZXJfX2JvZHkgYWctZmlsdGVyLWJvZHknXG4gICAgYm9keS5zdHlsZS5wYWRkaW5nID0gJzVweCAxNXB4J1xuICAgIGJvZHkuaW5uZXJIVE1MID0gLyogaHRtbCAqLyBgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib29sZWFuRmlsdGVyX19ib2R5X19sYWJlbHNcIj5cbiAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInJhZGlvXCIgbmFtZT1cImJvb2xlYW5cIiB2YWx1ZT1cInRydWVcIj5cbiAgICAgICAgICAgICR7dGhpcy5fYm9vbGVhbkZpbHRlclRyYW5zbGF0aW9uLnRydWV9XG4gICAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBuYW1lPVwiYm9vbGVhblwiIHZhbHVlPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICR7dGhpcy5fYm9vbGVhbkZpbHRlclRyYW5zbGF0aW9uLmZhbHNlfVxuICAgICAgICAgIDwvbGFiZWw+ICAgICBcbiAgICAgICAgICBcbiAgICAgICAgICAke1xuICAgICAgICAgICAgIWlzUmVzZXRCdXR0b25cbiAgICAgICAgICAgICAgPyAvKiBodG1sICovIGBcbiAgICAgICAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInJhZGlvXCIgbmFtZT1cImJvb2xlYW5cIiB2YWx1ZT1cIlwiIGNoZWNrZWQ+XG4gICAgICAgICAgICAgICAgICAke3RoaXMuX2Jvb2xlYW5GaWx0ZXJUcmFuc2xhdGlvbi5yZXNldH1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPiAgIFxuICAgICAgICAgICAgICBgXG4gICAgICAgICAgICAgIDogJydcbiAgICAgICAgICB9ICAgICAgIFxuICAgICAgICA8L2Rpdj5cbiAgICBgXG5cbiAgICBib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMuX29uUmFkaW9DaGFuZ2UpXG5cbiAgICB0aGlzLl9ndWkuYXBwZW5kQ2hpbGQoYm9keSlcblxuICAgIC8vIGNyZWF0ZSBhcHBseSBmaWx0ZXIgcGFuZWxcbiAgICBjb25zdCBhcHBseUZpbHRlclBhbmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICBhcHBseUZpbHRlclBhbmVsLmNsYXNzTmFtZSA9IGBib29sZWFuRmlsdGVyX19ib2R5X19hcHBseVBhbmVsIGFnLWZpbHRlci1hcHBseS1wYW5lbCBhZy1oaWRkZW5gXG4gICAgYXBwbHlGaWx0ZXJQYW5lbC5pbm5lckhUTUwgPSAvKiBodG1sICovIGBcbiAgICAgIDxidXR0b24gY2xhc3M9XCJjbGVhciAkeyFpc0NsZWFyRmlsdGVyICYmXG4gICAgICAgICdhZy1oaWRkZW4nfVwiIHR5cGU9XCJidXR0b25cIj4ke3RyYW5zbGF0ZShcbiAgICAgICdjbGVhckZpbHRlcicsXG4gICAgICAnQ2xlYXIgRmlsdGVyJ1xuICAgICl9PC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwicmVzZXQgJHshaXNSZXNldEJ1dHRvbiAmJlxuICAgICAgICAnYWctaGlkZGVuJ31cIiB0eXBlPVwiYnV0dG9uXCI+JHt0cmFuc2xhdGUoXG4gICAgICAncmVzZXRGaWx0ZXInLFxuICAgICAgJ1Jlc2V0IEZpbHRlcidcbiAgICApfTwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImFwcGx5ICR7IWlzQXBwbHlCdXR0b24gJiZcbiAgICAgICAgJ2FnLWhpZGRlbid9XCIgdHlwZT1cImJ1dHRvblwiPiR7dHJhbnNsYXRlKFxuICAgICAgJ2FwcGx5RmlsdGVyJyxcbiAgICAgICdBcHBseSBGaWx0ZXInXG4gICAgKX08L2J1dHRvbj5cbiAgICBgXG5cbiAgICBpZiAoaXNDbGVhckZpbHRlciB8fCBpc1Jlc2V0QnV0dG9uIHx8IGlzQXBwbHlCdXR0b24pIHtcbiAgICAgIGFwcGx5RmlsdGVyUGFuZWwuY2xhc3NMaXN0LnJlbW92ZSgnYWctaGlkZGVuJylcbiAgICB9XG5cbiAgICBhcHBseUZpbHRlclBhbmVsLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnY2xpY2snLFxuICAgICAgdGhpcy5fQXBwbHlGaWx0ZXJQYW5lbEJ1dHRvbkNsaWNrXG4gICAgKVxuXG4gICAgdGhpcy5fZ3VpLmFwcGVuZENoaWxkKGFwcGx5RmlsdGVyUGFuZWwpXG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIEBvdmVycmlkZVxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuX2d1aVxuICAgICAgLnF1ZXJ5U2VsZWN0b3IoJy5ib29sZWFuRmlsdGVyX19ib2R5X19sYWJlbHMnKVxuICAgICAgLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMuX29uUmFkaW9DaGFuZ2UpXG5cbiAgICB0aGlzLl9ndWlcbiAgICAgIC5xdWVyeVNlbGVjdG9yKCcuYm9vbGVhbkZpbHRlcl9fYm9keV9fYXBwbHlQYW5lbCcpXG4gICAgICAucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9BcHBseUZpbHRlclBhbmVsQnV0dG9uQ2xpY2spXG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciBzZWxlY3RlZCBmaWx0ZXIgbWF0Y2hlcyB0aGUgcGFzc2VkIGNlbGwgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zXG4gICAqXG4gICAqIEByZXR1cm4ge0Jvb2xlYW59IHRydWUgd2hlbiBwYXNzLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIGRvZXNGaWx0ZXJQYXNzKHBhcmFtcykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICBjb25zdCB2YWx1ZSA9IFN0cmluZyhcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICAgIHRoaXMuX3BhcmFtcy5oYXNPd25Qcm9wZXJ0eSgnZmlsdGVyVmFsdWVHZXR0ZXInKVxuICAgICAgICA/IHRoaXMuX3BhcmFtcy5maWx0ZXJWYWx1ZUdldHRlcihwYXJhbXMpXG4gICAgICAgIDogdGhpcy5fcGFyYW1zLnZhbHVlR2V0dGVyKHBhcmFtcylcbiAgICApXG5cbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyVGV4dCA9PT0gJ3RydWUnXG4gICAgICA/IHRoaXMuX3RydWVWYWx1ZS5pbmRleE9mKHZhbHVlKSA+IC0xXG4gICAgICA6IHRoaXMuX2ZhbHNlVmFsdWUuaW5kZXhPZih2YWx1ZSkgPiAtMVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBhcHBseWluZyBhbnkgZmlsdGVyIG9uIHRoZSBjb2x1bW5cbiAgICpcbiAgICogQHJldHVybiB7Qm9vbGVhbn1cbiAgICoqL1xuICBpc0ZpbHRlckFjdGl2ZSgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5fZmlsdGVyVGV4dCAhPT0gbnVsbCAmJlxuICAgICAgdGhpcy5fZmlsdGVyVGV4dCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLl9maWx0ZXJUZXh0ICE9PSAnJ1xuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBmaWx0ZXIgc3RhdGUuIElmIGZpbHRlciBpcyBub3QgYWN0aXZlLCB0aGVuIHNob3VsZCByZXR1cm4gbnVsbC91bmRlZmluZWQuXG4gICAqIFRoZSBncmlkIGNhbGxzIGdldE1vZGVsKCkgb24gYWxsIGFjdGl2ZSBmaWx0ZXJzIHdoZW4gZ3JpZEFwaS5nZXRGaWx0ZXJNb2RlbCgpIGlzIGNhbGxlZC5cbiAgICpcbiAgICogQHJldHVybiBPYmplY3QgfCBudWxsIHRoZSBmaWx0ZXIgc3RhdGVcbiAgICovXG4gIGdldE1vZGVsKCkge1xuICAgIGlmICghdGhpcy5pc0ZpbHRlckFjdGl2ZSgpKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGNvbnN0IG1vZGVsID0geyB2YWx1ZTogdGhpcy5fZmlsdGVyVGV4dCB9XG4gICAgcmV0dXJuIG1vZGVsXG4gIH1cblxuICAvKipcbiAgICogUmVzdG9yZXMgdGhlIGZpbHRlciBzdGF0ZS4gQ2FsbGVkIGJ5IHRoZSBncmlkIGFmdGVyIGdyaWRBcGkuc2V0RmlsdGVyTW9kZWwobW9kZWwpIGlzIGNhbGxlZC5cbiAgICogVGhlIGdyaWQgd2lsbCBwYXNzIHVuZGVmaW5lZC9udWxsIHRvIGNsZWFyIHRoZSBmaWx0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0IHwgbnVsbH0gbW9kZWxcbiAgICovXG4gIHNldE1vZGVsKG1vZGVsKSB7XG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zICovXG4gICAgdGhpcy5fZmlsdGVyVGV4dCA9IG1vZGVsICYmIG1vZGVsLmhhc093blByb3BlcnR5KCd2YWx1ZScpID8gbW9kZWwudmFsdWUgOiAnJ1xuXG4gICAgY29uc3QgZmlsdGVyVGV4dEFzU3RyaW5nID0gU3RyaW5nKHRoaXMuX2ZpbHRlclRleHQpXG4gICAgY29uc3QgYm9keSA9IHRoaXMuX2d1aS5xdWVyeVNlbGVjdG9yKCcuYm9vbGVhbkZpbHRlcl9fYm9keScpXG4gICAgYm9keS5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPVwicmFkaW9cIl0nKS5mb3JFYWNoKGkgPT4ge1xuICAgICAgaWYgKGkudmFsdWUgPT0gZmlsdGVyVGV4dEFzU3RyaW5nKSB7XG4gICAgICAgIGkuY2hlY2tlZCA9IHRydWVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGkuY2hlY2tlZCA9IGZhbHNlXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGZpbHRlciBtb2RlbCBhcyBwbGFpbiBzdHJpbmcgdG8gZGlzcGxheSBpbiB0aGUgZmxvYXRpbmcgZmlsdGVyIGlucHV0XG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0IHwgbnVsbH0gbW9kZWxcbiAgICovXG4gIGdldE1vZGVsQXNTdHJpbmcobW9kZWwpIHtcbiAgICBpZiAoIW1vZGVsKSB7XG4gICAgICByZXR1cm4gJydcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaXBIVE1MKFxuICAgICAgbW9kZWwudmFsdWUgPT09ICd0cnVlJ1xuICAgICAgICA/IHRoaXMuX2Jvb2xlYW5GaWx0ZXJUcmFuc2xhdGlvbi50cnVlXG4gICAgICAgIDogdGhpcy5fYm9vbGVhbkZpbHRlclRyYW5zbGF0aW9uLmZhbHNlXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoZSBmaWx0ZXIgc3RhdGVcbiAgICovXG4gIHJlc2V0KCkge1xuICAgIGNvbnN0IGJvZHkgPSB0aGlzLl9ndWkucXVlcnlTZWxlY3RvcignLmJvb2xlYW5GaWx0ZXJfX2JvZHknKVxuICAgIGJvZHkucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbdHlwZT1cInJhZGlvXCJdJykuZm9yRWFjaChpID0+IHtcbiAgICAgIGkuY2hlY2tlZCA9IGZhbHNlXG4gICAgfSlcblxuICAgIHRoaXMuX2ZpbHRlclRleHQgPSBudWxsXG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIHRvIHNlbGVjdGlvbiBjaGFuZ2VzIGluIHRoZSBmaWx0ZXIgcmFkaW8gYnV0dG9ucyBhbmQgdXBkYXRlIHRoZSBjdXJyZW50IGZpbHRlciB0ZXh0XG4gICAqXG4gICAqIEBwYXJhbSB7RXZlbnR9IGVcbiAgICovXG4gIF9vblJhZGlvQ2hhbmdlKGlzQXBwbHlCdXR0b24sIGUpIHtcbiAgICB0aGlzLl9maWx0ZXJUZXh0ID0gZS50YXJnZXQudmFsdWVcbiAgICBpZiAoZmFsc2UgPT09IGlzQXBwbHlCdXR0b24pIHtcbiAgICAgIHRoaXMuX3BhcmFtcy5maWx0ZXJDaGFuZ2VkQ2FsbGJhY2soKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gdGhlIGJ1dHRvbiBjbGlja3MgaW4gdGhlIGJ1dHRvbnMgcGFuZWwgYW5kIGFwcGx5IHRoZSBjaG9zZW4gYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7RXZlbnR9IGVcbiAgICovXG4gIEBhdXRvYmluZFxuICBfQXBwbHlGaWx0ZXJQYW5lbEJ1dHRvbkNsaWNrKGUpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldFxuXG4gICAgaWYgKHRhcmdldC5ub2RlTmFtZSA9PT0gJ0JVVFRPTicpIHtcbiAgICAgIGlmICh0YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdyZXNldCcpKSB7XG4gICAgICAgIHRoaXMucmVzZXQoKVxuICAgICAgICB0aGlzLl9wYXJhbXMuZmlsdGVyQ2hhbmdlZENhbGxiYWNrKClcbiAgICAgIH0gZWxzZSBpZiAodGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnY2xlYXInKSkge1xuICAgICAgICB0aGlzLnJlc2V0KClcbiAgICAgIH0gZWxzZSBpZiAodGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnYXBwbHknKSkge1xuICAgICAgICB0aGlzLl9wYXJhbXMuZmlsdGVyQ2hhbmdlZENhbGxiYWNrKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQm9vbGVhbkZpbHRlclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL0Jvb2xlYW5GaWx0ZXIvQm9vbGVhbkZpbHRlci5qcyIsIlxudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZS5zY3NzXCIpO1xuXG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcblxudmFyIHRyYW5zZm9ybTtcbnZhciBpbnNlcnRJbnRvO1xuXG5cblxudmFyIG9wdGlvbnMgPSB7XCJobXJcIjp0cnVlfVxuXG5vcHRpb25zLnRyYW5zZm9ybSA9IHRyYW5zZm9ybVxub3B0aW9ucy5pbnNlcnRJbnRvID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQuaGVhZFxuICAgICAgICAgICAgICB9O1xuXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXMuanNcIikoY29udGVudCwgb3B0aW9ucyk7XG5cbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuXG5pZihtb2R1bGUuaG90KSB7XG5cdG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZS5zY3NzXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3R5bGUuc2Nzc1wiKTtcblxuXHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXG5cdFx0dmFyIGxvY2FscyA9IChmdW5jdGlvbihhLCBiKSB7XG5cdFx0XHR2YXIga2V5LCBpZHggPSAwO1xuXG5cdFx0XHRmb3Ioa2V5IGluIGEpIHtcblx0XHRcdFx0aWYoIWIgfHwgYVtrZXldICE9PSBiW2tleV0pIHJldHVybiBmYWxzZTtcblx0XHRcdFx0aWR4Kys7XG5cdFx0XHR9XG5cblx0XHRcdGZvcihrZXkgaW4gYikgaWR4LS07XG5cblx0XHRcdHJldHVybiBpZHggPT09IDA7XG5cdFx0fShjb250ZW50LmxvY2FscywgbmV3Q29udGVudC5sb2NhbHMpKTtcblxuXHRcdGlmKCFsb2NhbHMpIHRocm93IG5ldyBFcnJvcignQWJvcnRpbmcgQ1NTIEhNUiBkdWUgdG8gY2hhbmdlZCBjc3MtbW9kdWxlcyBsb2NhbHMuJyk7XG5cblx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdH0pO1xuXG5cdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufVxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9Cb29sZWFuRmlsdGVyL3N0eWxlLnNjc3MiLCJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5ib29sZWFuRmlsdGVyX19ib2R5X19sYWJlbHMgbGFiZWx7ZGlzcGxheTpibG9jaztwYWRkaW5nOjNweCAwfVxcblwiLCBcIlwiXSk7XG5cbi8vIGV4cG9ydHNcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIhLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvQm9vbGVhbkZpbHRlci9zdHlsZS5zY3NzXG4vLyBtb2R1bGUgaWQgPSA1NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmFzaXMtYWdncmlkLWNvbXBvbmVudHMgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgTnVtYmVyRWRpdG9yIGZyb20gJy4vTnVtYmVyRWRpdG9yJ1xuXG5leHBvcnQgZGVmYXVsdCBOdW1iZXJFZGl0b3JcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9OdW1iZXJFZGl0b3IvaW5kZXguanMiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmFzaXMtYWdncmlkLWNvbXBvbmVudHMgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgQ29tcG9uZW50IGZyb20gJy4uL0NvbXBvbmVudCdcbmltcG9ydCB7IGF1dG9iaW5kLCBvdmVycmlkZSB9IGZyb20gJ2NvcmUtZGVjb3JhdG9ycydcblxuaW1wb3J0ICcuL3N0eWxlLnNjc3MnXG5cbi8qKlxuICogTnVtYmVycyBFZGl0b3JcbiAqXG4gKiBIYW5kbGUgbnVtYmVyIHZhbHVlcyBFZGl0aW5nXG4gKlxuICogfCBOYW1lICAgICAgICAgICAgICAgICAgXHR8IERlZmF1bHQgICAgIFx0fCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHR8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVx0fDotLS0tLS0tLS0tLS0tOnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgKipudW1iZXJNaW5WYWx1ZSoqICAgfCB1bmRlZmluZWQgICAgfCBtaW4gYWxsb3dlZCB2YWx1ZVxuICogfCAqKm51bWJlck1heFZhbHVlKiogICB8IHVuZGVmaW5lZCAgICB8IG1heCBhbGxvd2VkIHZhbHVlXG4gKiB8ICoqbnVtYmVyU3RlcFZhbHVlKiogICAgICAgfCB1bmRlZmluZWQgIFx0fCBudW1iZXIgb2Ygc3RlcCBieSBpbmNyZW1lbnQgb3IgZGVjcmVtZW50XG4gKiB8ICoqbnVtYmVyTWFzayoqICAgICAgIHwgdW5kZWZpbmVkICBcdHwgYSBiYmogbnVtYmVyIG1hc2sgdG8gdmFsaWRhdGUgdGhlIG51bWJlciBhZ2FpbnN0XG4gKiB8KipudW1iZXJHcm91cGluZ1NlcGFyYXRvcioqIHwgLCB8IGEgY2hhciB3aGljaCB3aWxsIGJlIHVzZWQgYXMgYSBncm91cGluZyBzZXBhcmF0b3IuIFRoZSBvcHRpb25zIGlzIHVzZWQgb25seSB3aGVuICoqbnVtYmVyTWFzayoqIGlzIGRlZmluZWQgfFxuICogfCoqbnVtYmVyRGVjaW1hbFNlcGFyYXRvcioqIHwgLiB8IGEgY2hhciB3aGljaCB3aWxsIGJlIHVzZWQgYXMgYSBkZWNpbWFsIHNlcGFyYXRvci4gVGhlIG9wdGlvbnMgaXMgdXNlZCBvbmx5IHdoZW4gKipudW1iZXJNYXNrKiogaXMgZGVmaW5lZCAgfFxuICogfCoqbnVtYmVyRm9yY2VUcmFpbGluZ1plcm9zKiogfCBmYWxzZSB8IEFmZmVjdHMgdGhlIG91dHB1dCBieSBzd2l0Y2hpbmcgdGhlIHdheSBhIG1hc2sgd2l0aCBcIiNcIiBjaGFyYWN0ZXJzIGluIHRoZSB0cmFpbGluZyBwb3NpdGlvbnMgaXMgZmlsbGVkLiBmb3IgZXhhbXBsZSwgdGhlIGZ1bmN0aW9uIE51bWJlck1hc2subWFzayguMTA6XCIjLiMjXCIpIHJldHVybnMgLjEwIGluc3RlYWQgb2YgLjEgLiBUaGUgb3B0aW9ucyBpcyB1c2VkIG9ubHkgd2hlbiAqKm51bWJlck1hc2sqKiBpcyBkZWZpbmVkfFxuICpcbiAqIEBhdXRob3IgSHl5YW4gQWJvIEZha2hlciA8aGFib2Zha2hlckBiYXNpcy5jb20+XG4gKi9cbmNsYXNzIE51bWJlckVkaXRvciBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiAgQGluaGVyaXREb2NcbiAgICovXG4gIEBvdmVycmlkZVxuICBpbml0KHBhcmFtcykge1xuICAgIGNvbnN0IG1pbiA9IHRoaXMuZ2V0T3B0aW9uKCdudW1iZXJNaW5WYWx1ZScsIHBhcmFtcylcbiAgICBjb25zdCBtYXggPSB0aGlzLmdldE9wdGlvbignbnVtYmVyTWF4VmFsdWUnLCBwYXJhbXMpXG4gICAgY29uc3Qgc3RlcCA9IHRoaXMuZ2V0T3B0aW9uKCdudW1iZXJTdGVwVmFsdWUnLCBwYXJhbXMpXG4gICAgY29uc3QgbWFzayA9IHRoaXMuZ2V0T3B0aW9uKCdudW1iZXJNYXNrJywgcGFyYW1zKVxuXG4gICAgbGV0IHN0YXJ0VmFsdWVcblxuICAgIHRoaXMuX2ZvY3VzQWZ0ZXJBdHRhY2hlZCA9IHBhcmFtcy5jZWxsU3RhcnRlZEVkaXRcbiAgICBpZiAodGhpcy5fZm9jdXNBZnRlckF0dGFjaGVkKSB7XG4gICAgICBsZXQga2V5UHJlc3NCYWNrc3BhY2VPckRlbGV0ZSA9XG4gICAgICAgIHBhcmFtcy5rZXlQcmVzcyA9PSAzMiB8fCBwYXJhbXMua2V5UHJlc3MgPT0gNDYgLy8gc3BhY2UgLy8gZGVsZXRlXG5cbiAgICAgIGlmIChrZXlQcmVzc0JhY2tzcGFjZU9yRGVsZXRlKSB7XG4gICAgICAgIHN0YXJ0VmFsdWUgPSAnJ1xuICAgICAgfSBlbHNlIGlmIChwYXJhbXMuY2hhclByZXNzKSB7XG4gICAgICAgIHN0YXJ0VmFsdWUgPSBwYXJhbXMuY2hhclByZXNzXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGFydFZhbHVlID0gcGFyYW1zLnZhbHVlXG4gICAgICAgIGlmIChwYXJhbXMua2V5UHJlc3MgIT0gMTEzKSB7XG4gICAgICAgICAgLy9GMlxuICAgICAgICAgIHRoaXMuX2hpZ2hsaWdodEFsbE9uRm9jdXMgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3RhcnRWYWx1ZSA9IHBhcmFtcy52YWx1ZVxuICAgIH1cblxuICAgIHRoaXMuX2d1aSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJylcbiAgICB0aGlzLl9ndWkuY2xhc3NOYW1lID0gJ251bWJlckVkaXRvciBhZy1pbnB1dC13cmFwcGVyJ1xuICAgIHRoaXMuX2d1aS50YWJJbmRleCA9ICcwJ1xuXG4gICAgLy8gaW5wdXRcbiAgICB0aGlzLl9pbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JylcbiAgICB0aGlzLl9pbnB1dC5jbGFzc05hbWUgPSAnbnVtYmVyRWRpdG9yX19pbnB1dCBhZy1jZWxsLWVkaXQtaW5wdXQnXG4gICAgdGhpcy5faW5wdXQuaWQgPSBgZWwtJHtNYXRoLnJhbmRvbSgpXG4gICAgICAudG9TdHJpbmcoMTYpXG4gICAgICAuc2xpY2UoMiwgMTApfWAgLy8gZ2VuZXJhdGUgcmFuZG9tIGlkXG4gICAgdGhpcy5faW5wdXQudHlwZSA9IG1hc2sgPyAndGV4dCcgOiAnbnVtYmVyJ1xuICAgIHRoaXMuX2lucHV0LnZhbHVlID0gc3RhcnRWYWx1ZVxuICAgIHRoaXMuX2lucHV0LnRhYkluZGV4ID0gMFxuXG4gICAgdGhpcy5fZ3VpLmFwcGVuZENoaWxkKHRoaXMuX2lucHV0KVxuXG4gICAgaWYgKG1pbiAhPT0gbnVsbCkge1xuICAgICAgbWFzayA/ICh0aGlzLl9pbnB1dC5kYXRhc2V0Lm1pbiA9IG1pbikgOiAodGhpcy5faW5wdXQubWluID0gbWluKVxuICAgIH1cblxuICAgIGlmIChtYXggIT09IG51bGwpIHtcbiAgICAgIG1hc2sgPyAodGhpcy5faW5wdXQuZGF0YXNldC5tYXggPSBtYXgpIDogKHRoaXMuX2lucHV0Lm1heCA9IG1heClcbiAgICB9XG5cbiAgICBpZiAoc3RlcCAhPT0gbnVsbCkge1xuICAgICAgbWFzayA/ICh0aGlzLl9pbnB1dC5kYXRhc2V0LnN0ZXAgPSBzdGVwKSA6ICh0aGlzLl9pbnB1dC5zdGVwID0gc3RlcClcbiAgICB9XG5cbiAgICBpZiAobWFzaykge1xuICAgICAgY29uc3QgZ3JvdXBpbmdTZXBhcmF0b3IgPSB0aGlzLmdldE9wdGlvbihcbiAgICAgICAgJ251bWJlckdyb3VwaW5nU2VwYXJhdG9yJyxcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICB0aGlzLmdldE9wdGlvbignbnVtYmVyR3JvdXBTZXAnLCBwYXJhbXMpXG4gICAgICApXG4gICAgICBjb25zdCBkZWNpbWFsU2VwYXJhdG9yID0gdGhpcy5nZXRPcHRpb24oXG4gICAgICAgICdudW1iZXJEZWNpbWFsU2VwYXJhdG9yJyxcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICB0aGlzLmdldE9wdGlvbignbnVtYmVyRGVjaW1hbFNlcCcsIHBhcmFtcylcbiAgICAgIClcbiAgICAgIGNvbnN0IGZvcmNlVHJhaWxpbmdaZXJvcyA9IHRoaXMuZ2V0T3B0aW9uKFxuICAgICAgICAnbnVtYmVyRm9yY2VUcmFpbGluZ1plcm9zJyxcbiAgICAgICAgcGFyYW1zXG4gICAgICApXG5cbiAgICAgIGlmIChncm91cGluZ1NlcGFyYXRvciAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9pbnB1dC5kYXRhc2V0Lmdyb3VwaW5nU2VwYXJhdG9yID0gZ3JvdXBpbmdTZXBhcmF0b3JcbiAgICAgIH1cblxuICAgICAgaWYgKGRlY2ltYWxTZXBhcmF0b3IgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5faW5wdXQuZGF0YXNldC5kZWNpbWFsU2VwYXJhdG9yID0gZGVjaW1hbFNlcGFyYXRvclxuICAgICAgfVxuXG4gICAgICBpZiAoZm9yY2VUcmFpbGluZ1plcm9zICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuX2lucHV0LmRhdGFzZXQuZm9yY2VUcmFpbGluZ1plcm9zID0gZm9yY2VUcmFpbGluZ1plcm9zXG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2lucHV0LmRhdGFzZXQubWFzayA9IG1hc2tcbiAgICAgIHRoaXMuX251bWJlcklucHV0ID0gbmV3IEJhc2lzLklucHV0TWFza2luZy5OdW1iZXJJbnB1dCh7XG4gICAgICAgIGVsZW1lbnRzOiBbdGhpcy5faW5wdXRdLFxuICAgICAgICBkb2M6IHRoaXMuZ2V0RG9jKHBhcmFtcyksXG4gICAgICAgIG9uVXBkYXRlOiAoX21hc2tlZCwgdW5tYXNrZWQpID0+IHtcbiAgICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSB1bm1hc2tlZFxuICAgICAgICAgIHRoaXMuZm9jdXNJbigpXG4gICAgICAgIH0sXG4gICAgICAgIG9uSW52YWxpZDogKGVycm9yLCBpbnB1dCkgPT4ge1xuICAgICAgICAgIHRoaXMuZm9jdXNJbigpXG4gICAgICAgICAgaWYgKHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlucHV0LnNldEN1c3RvbVZhbGlkaXR5KGVycm9yKVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLl9vbktleURvd25VcClcbiAgICAgIHRoaXMuX2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy5fb25LZXlEb3duVXApXG4gICAgICB0aGlzLl9pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB0aGlzLl9vbkNoYW5nZSlcbiAgICB9XG5cbiAgICAvLyB1cGRhdGUgYGN1cnJlbnRWYWx1ZWAgdGhlIHZhbHVlIHdoaWNoIHRoaXMgY29tcG9uZW50IGlzIG1hbmFnaW5nXG4gICAgdGhpcy5fY3VycmVudFZhbHVlID0gc3RhcnRWYWx1ZVxuICAgIHRoaXMuX19pc01hc2tlZF9fID0gbWFzayAmJiBtYXNrLmxlbmd0aFxuICB9XG5cbiAgLyoqXG4gICAqICBAaW5oZXJpdERvY1xuICAgKi9cbiAgQG92ZXJyaWRlXG4gIGRlc3Ryb3koKSB7XG4gICAgaWYgKCF0aGlzLl9faXNNYXNrZWRfXykge1xuICAgICAgdGhpcy5faW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuX29uS2V5RG93blVwKVxuICAgICAgdGhpcy5faW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLl9vbktleURvd25VcClcbiAgICAgIHRoaXMuX2lucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMuX29uQ2hhbmdlKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9udW1iZXJJbnB1dC5kZXN0cm95KClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBjYWxsZWQgb25jZSBhZnRlciBHVUkgaXMgYXR0YWNoZWQgdG8gRE9NLlxuICAgKlxuICAgKiBNYWtlIHN1cmUgY29udGFpbmVyIGlzIGFsd2F5cyBmb2N1c2VkIHRvIGxpc3RlbiB0byBrZXkgY2hhbmdlc1xuICAgKi9cbiAgYWZ0ZXJHdWlBdHRhY2hlZCgpIHtcbiAgICBpZiAoIXRoaXMuX19pc01hc2tlZF9fKSB7XG4gICAgICB0aGlzLl92YWxpZGF0ZUlucHV0KHRoaXMuX2lucHV0KVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9oaWdobGlnaHRBbGxPbkZvY3VzKSB7XG4gICAgICB0aGlzLl9pbnB1dC5zZWxlY3QoKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5fZm9jdXNBZnRlckF0dGFjaGVkKSB7XG4gICAgICAgIHRoaXMuZm9jdXNJbigpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBUaGUgY29tcG9uZW50IHZhbHVlXG4gICAqXG4gICAqIEByZXR1cm4ge051bWJlcn1cbiAgICovXG4gIGdldFZhbHVlKCkge1xuICAgIGNvbnN0IGNhc3RlZCA9IE51bWJlcih0aGlzLl9jdXJyZW50VmFsdWUpXG4gICAgcmV0dXJuIGlzTmFOKGNhc3RlZCkgPyB0aGlzLl9jdXJyZW50VmFsdWUgOiBjYXN0ZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBkb2luZyBmdWxsIHJvdyBlZGl0LCB0aGVuIGdldHMgY2FsbGVkIHdoZW4gdGFiYmluZyBpbnRvIHRoZSBjZWxsLlxuICAgKi9cbiAgZm9jdXNJbigpIHtcbiAgICB0aGlzLl9pbnB1dC5mb2N1cygpXG4gIH1cblxuICAvKipcbiAgICogR2V0cyBjYWxsZWQgb25jZSBhZnRlciBpbml0aWFsaXplZCBhbmQgcmV0dXJucyBmYWxzZSBzbyB0aGUgZWRpdG9yIGFwcGVhcnMgaW4gdGhlIGNlbGxcbiAgICpcbiAgICogQHJldHVybiB7Qm9vbGVhbn0gYWx3YXlzIGZhbHNlXG4gICAqKi9cbiAgaXNQb3B1cCgpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYGN1cnJlbnRWYWx1ZWAgd2hlbiB0aGUgY2hlY2tib3ggdmFsdWUgaXMgY2hhbmdlZFxuICAgKi9cbiAgQGF1dG9iaW5kXG4gIF9vbkNoYW5nZShldmVudCkge1xuICAgIGNvbnN0IGlzVmFsaWQgPSB0aGlzLl92YWxpZGF0ZUlucHV0KGV2ZW50LnRhcmdldClcbiAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgdGhpcy5fY3VycmVudFZhbHVlID0gdGhpcy5faW5wdXQudmFsdWVcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIHRvIGtleSBjaGFuZ2VzIGFuZCB2YWxpZGF0ZSB0aGUgaW5wdXRcbiAgICpcbiAgICogQHBhcmFtIHtFdmVudH0gZXZlbnRcbiAgICovXG4gIEBhdXRvYmluZFxuICBfb25LZXlEb3duVXAoZXZlbnQpIHtcbiAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy5fdmFsaWRhdGVJbnB1dChldmVudC50YXJnZXQpXG5cbiAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGtleSA9IGV2ZW50LndoaWNoIHx8IGV2ZW50LmtleUNvZGVcblxuICAgIGlmIChrZXkgPT0gMzggfHwga2V5ID09IDQwKSB7XG4gICAgICAvLyB0b3AgfCBkb3duXG4gICAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSB0aGlzLl9pbnB1dC52YWx1ZVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9IGVsc2UgaWYgKGtleSA9PSAxMyB8fCBrZXkgPT09IDkpIHtcbiAgICAgIC8vIGVudGVyXG4gICAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSB0aGlzLl9pbnB1dC52YWx1ZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGUgZ2l2ZW4gaW5wdXQgZWxlbWVudFxuICAgKlxuICAgKiBAcGFyYW0ge0hUTUxJbnB1dEVsZW1lbnR9IGlucHV0IGlucHV0IGVsZW1lbnRcbiAgICpcbiAgICogQHJldHVybiB7Qm9vbGVhbn0gdHJ1ZSB3aGVuIHZhbGlkICwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBfdmFsaWRhdGVJbnB1dChpbnB1dCkge1xuICAgIGNvbnN0IGlzVmFsaWQgPSBpbnB1dC5jaGVja1ZhbGlkaXR5KClcblxuICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgaW5wdXQuY2xhc3NMaXN0LmFkZCgnYmJqLW1hc2stZXJyb3InKVxuICAgICAgaW5wdXQuY2xhc3NMaXN0LnJlbW92ZSgnYmJqLW1hc2stc3VjY2VzcycpXG4gICAgfSBlbHNlIHtcbiAgICAgIGlucHV0LmNsYXNzTGlzdC5yZW1vdmUoJ2Jiai1tYXNrLWVycm9yJylcbiAgICAgIGlucHV0LmNsYXNzTGlzdC5hZGQoJ2Jiai1tYXNrLXN1Y2Nlc3MnKVxuICAgIH1cblxuICAgIHJldHVybiBpc1ZhbGlkXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTnVtYmVyRWRpdG9yXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvTnVtYmVyRWRpdG9yL051bWJlckVkaXRvci5qcyIsIlxudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZS5zY3NzXCIpO1xuXG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcblxudmFyIHRyYW5zZm9ybTtcbnZhciBpbnNlcnRJbnRvO1xuXG5cblxudmFyIG9wdGlvbnMgPSB7XCJobXJcIjp0cnVlfVxuXG5vcHRpb25zLnRyYW5zZm9ybSA9IHRyYW5zZm9ybVxub3B0aW9ucy5pbnNlcnRJbnRvID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQuaGVhZFxuICAgICAgICAgICAgICB9O1xuXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXMuanNcIikoY29udGVudCwgb3B0aW9ucyk7XG5cbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuXG5pZihtb2R1bGUuaG90KSB7XG5cdG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZS5zY3NzXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3R5bGUuc2Nzc1wiKTtcblxuXHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXG5cdFx0dmFyIGxvY2FscyA9IChmdW5jdGlvbihhLCBiKSB7XG5cdFx0XHR2YXIga2V5LCBpZHggPSAwO1xuXG5cdFx0XHRmb3Ioa2V5IGluIGEpIHtcblx0XHRcdFx0aWYoIWIgfHwgYVtrZXldICE9PSBiW2tleV0pIHJldHVybiBmYWxzZTtcblx0XHRcdFx0aWR4Kys7XG5cdFx0XHR9XG5cblx0XHRcdGZvcihrZXkgaW4gYikgaWR4LS07XG5cblx0XHRcdHJldHVybiBpZHggPT09IDA7XG5cdFx0fShjb250ZW50LmxvY2FscywgbmV3Q29udGVudC5sb2NhbHMpKTtcblxuXHRcdGlmKCFsb2NhbHMpIHRocm93IG5ldyBFcnJvcignQWJvcnRpbmcgQ1NTIEhNUiBkdWUgdG8gY2hhbmdlZCBjc3MtbW9kdWxlcyBsb2NhbHMuJyk7XG5cblx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdH0pO1xuXG5cdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufVxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9OdW1iZXJFZGl0b3Ivc3R5bGUuc2NzcyIsImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikoZmFsc2UpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLm51bWJlckVkaXRvciAubnVtYmVySW5wdXRNYXNrX193cmFwe3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9Lm51bWJlckVkaXRvciAuYmJqLW1hc2stZXJyb3J7Ym94LXNoYWRvdzowIC0ycHggMCAjZTkxZTYzIGluc2V0fS5udW1iZXJFZGl0b3IgLmJiai1tYXNrLXN1Y2Nlc3N7Ym94LXNoYWRvdzowIC0ycHggMCAjNGNhZjUwIGluc2V0fVxcblwiLCBcIlwiXSk7XG5cbi8vIGV4cG9ydHNcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIhLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvTnVtYmVyRWRpdG9yL3N0eWxlLnNjc3Ncbi8vIG1vZHVsZSBpZCA9IDYwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBiYXNpcy1hZ2dyaWQtY29tcG9uZW50cyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmltcG9ydCBUZXh0RWRpdG9yIGZyb20gJy4vVGV4dEVkaXRvcidcblxuZXhwb3J0IGRlZmF1bHQgVGV4dEVkaXRvclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL1RleHRFZGl0b3IvaW5kZXguanMiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmFzaXMtYWdncmlkLWNvbXBvbmVudHMgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgQ29tcG9uZW50IGZyb20gJy4uL0NvbXBvbmVudCdcbmltcG9ydCB7IGF1dG9iaW5kLCBvdmVycmlkZSB9IGZyb20gJ2NvcmUtZGVjb3JhdG9ycydcblxuaW1wb3J0ICcuL3N0eWxlLnNjc3MnXG5cbi8qKlxuICogVGV4dCBFZGl0b3JcbiAqXG4gKiBIYW5kbGUgdGV4dCB2YWx1ZXMgRWRpdGluZ1xuICpcbiAqIHwgTmFtZSAgICAgICAgICAgICAgICAgIFx0fCBEZWZhdWx0ICAgICBcdHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx0fFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cdHw6LS0tLS0tLS0tLS0tLTp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8ICoqdGV4dFBhdHRlcm4qKiAgIHwgdW5kZWZpbmVkICAgIHwgQSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCB0aGUgaW5wdXQncyB2YWx1ZSBtdXN0IG1hdGNoIGluIG9yZGVyIGZvciB0aGUgdmFsdWUgdG8gcGFzcyBjb25zdHJhaW50IHZhbGlkYXRpb25cbiAqIHwgKip0ZXh0UmVxdWlyZWQqKiAgIHwgdW5kZWZpbmVkICAgIHwgQm9vbGVhbi4gQSB2YWx1ZSBpcyByZXF1aXJlZCB0byBjb25zaWRlciB0aGUgaW5wdXQgdmFsaWRcbiAqIHwgKip0ZXh0TWFzayoqICAgfCB1bmRlZmluZWQgICAgfCBBIGJiaiBzdHJpbmcgbWFzayB0byB2YWxpZGF0ZSB0aGUgdmFsdWVcbiAqIHwgKip0ZXh0VGl0bGUqKiAgIHwgbnVsbCAgICB8IFRoZSBpbnB1dCB0aXRsZSAsIHdoZW4gbnVsbCBhbmQgdGhlICoqdGV4dE1hc2sqKiBvcHRpb25zIGlzIGRlZmluZWQgLCB0aGVuIHdlIHVzZSB0aGUgbWFzayBhcyB0aXRsZSAsIHdoZW4gc2V0IHRvIGBkZWZhdWx0YCB3ZSB0aGUgYnJvd3NlcidzIGRlZmF1bHQgdGl0bGUgLCBvdGhlcndpc2UgdGhlIHZhbHVlIGRlZmluZWQgaW4gdGhpcyBvcHRpb25cbiAqXG4gKiBAYXV0aG9yIEh5eWFuIEFibyBGYWtoZXIgPGhhYm9mYWtoZXJAYmFzaXMuY29tPlxuICovXG5jbGFzcyBUZXh0RWRpdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqICBAaW5oZXJpdERvY1xuICAgKi9cbiAgQG92ZXJyaWRlXG4gIGluaXQocGFyYW1zKSB7XG4gICAgY29uc3QgcGF0dGVybiA9IHRoaXMuZ2V0T3B0aW9uKCd0ZXh0UGF0dGVybicsIHBhcmFtcylcbiAgICBjb25zdCByZXF1aXJlZCA9IHRoaXMuZ2V0T3B0aW9uKCd0ZXh0UmVxdWlyZWQnLCBwYXJhbXMpXG4gICAgY29uc3QgbWFzayA9IHRoaXMuZ2V0T3B0aW9uKCd0ZXh0TWFzaycsIHBhcmFtcylcbiAgICBjb25zdCB0aXRsZSA9IHRoaXMuZ2V0T3B0aW9uKCd0ZXh0VGl0bGUnLCBwYXJhbXMpXG5cbiAgICBsZXQgc3RhcnRWYWx1ZVxuXG4gICAgdGhpcy5fZm9jdXNBZnRlckF0dGFjaGVkID0gcGFyYW1zLmNlbGxTdGFydGVkRWRpdFxuICAgIGlmICh0aGlzLl9mb2N1c0FmdGVyQXR0YWNoZWQpIHtcbiAgICAgIGxldCBrZXlQcmVzc0JhY2tzcGFjZU9yRGVsZXRlID1cbiAgICAgICAgcGFyYW1zLmtleVByZXNzID09IDMyIHx8IHBhcmFtcy5rZXlQcmVzcyA9PSA0NiAvLyBzcGFjZSAvLyBkZWxldGVcblxuICAgICAgaWYgKGtleVByZXNzQmFja3NwYWNlT3JEZWxldGUpIHtcbiAgICAgICAgc3RhcnRWYWx1ZSA9ICcnXG4gICAgICB9IGVsc2UgaWYgKHBhcmFtcy5jaGFyUHJlc3MpIHtcbiAgICAgICAgc3RhcnRWYWx1ZSA9IHBhcmFtcy5jaGFyUHJlc3NcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXJ0VmFsdWUgPSBwYXJhbXMudmFsdWVcbiAgICAgICAgaWYgKHBhcmFtcy5rZXlQcmVzcyAhPSAxMTMpIHtcbiAgICAgICAgICAvL0YyXG4gICAgICAgICAgdGhpcy5faGlnaGxpZ2h0QWxsT25Gb2N1cyA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzdGFydFZhbHVlID0gcGFyYW1zLnZhbHVlXG4gICAgfVxuXG4gICAgdGhpcy5fcGFyYW1zID0gcGFyYW1zXG5cbiAgICB0aGlzLl9ndWkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJlbCcpXG4gICAgdGhpcy5fZ3VpLmNsYXNzTmFtZSA9ICd0ZXh0RWRpdG9yIGFnLWlucHV0LXdyYXBwZXInXG4gICAgdGhpcy5fZ3VpLnRhYkluZGV4ID0gJzAnXG5cbiAgICAvLyBpbnB1dFxuICAgIHRoaXMuX2lucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKVxuICAgIHRoaXMuX2lucHV0LmNsYXNzTmFtZSA9ICd0ZXh0RWRpdG9yX19pbnB1dCBhZy1jZWxsLWVkaXQtaW5wdXQnXG4gICAgdGhpcy5faW5wdXQuaWQgPSBgZWwtJHtNYXRoLnJhbmRvbSgpXG4gICAgICAudG9TdHJpbmcoMTYpXG4gICAgICAuc2xpY2UoMiwgMTApfWAgLy8gZ2VuZXJhdGUgcmFuZG9tIGlkXG4gICAgdGhpcy5faW5wdXQudHlwZSA9ICd0ZXh0J1xuICAgIHRoaXMuX2lucHV0LnZhbHVlID0gc3RhcnRWYWx1ZVxuICAgIHRoaXMuX2lucHV0LnRhYkluZGV4ID0gMFxuXG4gICAgdGhpcy5fZ3VpLmFwcGVuZENoaWxkKHRoaXMuX2lucHV0KVxuXG4gICAgaWYgKHBhdHRlcm4gIT09IG51bGwpIHtcbiAgICAgIHRoaXMuX2lucHV0LnNldEF0dHJpYnV0ZSgncGF0dGVybicsIHBhdHRlcm4pXG4gICAgfVxuXG4gICAgaWYgKHJlcXVpcmVkID09PSB0cnVlKSB7XG4gICAgICB0aGlzLl9pbnB1dC5zZXRBdHRyaWJ1dGUoJ3JlcXVpcmVkJywgJ3JlcXVpcmVkJylcbiAgICB9XG5cbiAgICBpZiAodGl0bGUgIT09IG51bGwpIHtcbiAgICAgIGlmICh0aXRsZSAhPT0gJ2RlZmF1bHQnKSB7XG4gICAgICAgIHRoaXMuX2lucHV0LnRpdGxlID0gdGl0bGVcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG1hc2spIHtcbiAgICAgIHRoaXMuX2lucHV0LnRpdGxlID0gbWFza1xuICAgIH1cblxuICAgIGlmIChtYXNrKSB7XG4gICAgICB0aGlzLl9pbnB1dC5kYXRhc2V0Lm1hc2sgPSBtYXNrXG4gICAgICB0aGlzLl90ZXh0SW5wdXQgPSBuZXcgQmFzaXMuSW5wdXRNYXNraW5nLlRleHRJbnB1dCh7XG4gICAgICAgIGVsZW1lbnRzOiBbdGhpcy5faW5wdXRdLFxuICAgICAgICBkb2M6IHRoaXMuZ2V0RG9jKHBhcmFtcyksXG4gICAgICAgIG9uVXBkYXRlOiAoX21hc2tlZCwgdW5tYXNrZWQpID0+IHtcbiAgICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSB1bm1hc2tlZFxuICAgICAgICAgIHRoaXMuZm9jdXNJbigpXG4gICAgICAgIH0sXG4gICAgICAgIG9uSW52YWxpZDogKGVycm9yLCBpbnB1dCkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpbnB1dC5zZXRDdXN0b21WYWxpZGl0eShlcnJvcilcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5fb25DaGFuZ2UpXG4gICAgICB0aGlzLl9pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIHRoaXMuX29uQ2hhbmdlKVxuICAgICAgdGhpcy5faW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy5fb25DaGFuZ2UpXG4gICAgfVxuXG4gICAgLy8gdXBkYXRlIGBjdXJyZW50VmFsdWVgIHRoZSB2YWx1ZSB3aGljaCB0aGlzIGNvbXBvbmVudCBpcyBtYW5hZ2luZ1xuICAgIHRoaXMuX2N1cnJlbnRWYWx1ZSA9IHN0YXJ0VmFsdWVcbiAgICB0aGlzLl9faXNNYXNrZWRfXyA9IG1hc2sgJiYgbWFzay5sZW5ndGhcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGluaGVyaXREb2NcbiAgICovXG4gIEBvdmVycmlkZVxuICBkZXN0cm95KCkge1xuICAgIGlmICghdGhpcy5fX2lzTWFza2VkX18pIHtcbiAgICAgIHRoaXMuX2lucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLl9vbkNoYW5nZSlcbiAgICAgIHRoaXMuX2lucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2lucHV0JywgdGhpcy5fb25DaGFuZ2UpXG4gICAgICB0aGlzLl9pbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB0aGlzLl9vbkNoYW5nZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdGV4dElucHV0LmRlc3Ryb3koKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGNhbGxlZCBvbmNlIGFmdGVyIEdVSSBpcyBhdHRhY2hlZCB0byBET00uXG4gICAqXG4gICAqIE1ha2Ugc3VyZSBjb250YWluZXIgaXMgYWx3YXlzIGZvY3VzZWQgdG8gbGlzdGVuIHRvIGtleSBjaGFuZ2VzXG4gICAqL1xuICBhZnRlckd1aUF0dGFjaGVkKCkge1xuICAgIGlmICghdGhpcy5fX2lzTWFza2VkX18pIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRlSW5wdXQodGhpcy5faW5wdXQpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2hpZ2hsaWdodEFsbE9uRm9jdXMpIHtcbiAgICAgIHRoaXMuX2lucHV0LnNlbGVjdCgpXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLl9mb2N1c0FmdGVyQXR0YWNoZWQpIHtcbiAgICAgICAgdGhpcy5mb2N1c0luKClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IFRoZSBjb21wb25lbnQgdmFsdWVcbiAgICpcbiAgICogQHJldHVybiB7TnVtYmVyfVxuICAgKi9cbiAgZ2V0VmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRWYWx1ZVxuICB9XG5cbiAgLyoqXG4gICAqIElmIGRvaW5nIGZ1bGwgcm93IGVkaXQsIHRoZW4gZ2V0cyBjYWxsZWQgd2hlbiB0YWJiaW5nIGludG8gdGhlIGNlbGwuXG4gICAqL1xuICBmb2N1c0luKCkge1xuICAgIHRoaXMuX2lucHV0LmZvY3VzKClcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGNhbGxlZCBvbmNlIGFmdGVyIGluaXRpYWxpemVkIGFuZCByZXR1cm5zIGZhbHNlIHNvIHRoZSBlZGl0b3IgYXBwZWFycyBpbiB0aGUgY2VsbFxuICAgKlxuICAgKiBAcmV0dXJuIHtCb29sZWFufSBhbHdheXMgZmFsc2VcbiAgICoqL1xuICBpc1BvcHVwKCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBgY3VycmVudFZhbHVlYCBvbiB0aGUgaW5wdXQgdmFsdWUgaXMgY2hhbmdlZCBhbmQgaXQgaXMgdmFsaWRcbiAgICovXG4gIEBhdXRvYmluZFxuICBfb25DaGFuZ2UoZXZlbnQpIHtcbiAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy5fdmFsaWRhdGVJbnB1dChldmVudC50YXJnZXQpXG4gICAgdGhpcy5fY3VycmVudFZhbHVlID0gdGhpcy5fcGFyYW1zLnZhbHVlXG4gICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRWYWx1ZSA9IHRoaXMuX2lucHV0LnZhbHVlXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoZSBnaXZlbiBpbnB1dCBlbGVtZW50XG4gICAqXG4gICAqIEBwYXJhbSB7SFRNTElucHV0RWxlbWVudH0gaW5wdXQgaW5wdXQgZWxlbWVudFxuICAgKlxuICAgKiBAcmV0dXJuIHtCb29sZWFufSB0cnVlIHdoZW4gdmFsaWQgLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIF92YWxpZGF0ZUlucHV0KGlucHV0KSB7XG4gICAgY29uc3QgaXNWYWxpZCA9IGlucHV0LmNoZWNrVmFsaWRpdHkoKVxuXG4gICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICBpbnB1dC5jbGFzc0xpc3QuYWRkKCdiYmotbWFzay1lcnJvcicpXG4gICAgICBpbnB1dC5jbGFzc0xpc3QucmVtb3ZlKCdiYmotbWFzay1zdWNjZXNzJylcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQuY2xhc3NMaXN0LnJlbW92ZSgnYmJqLW1hc2stZXJyb3InKVxuICAgICAgaW5wdXQuY2xhc3NMaXN0LmFkZCgnYmJqLW1hc2stc3VjY2VzcycpXG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVmFsaWRcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBUZXh0RWRpdG9yXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvVGV4dEVkaXRvci9UZXh0RWRpdG9yLmpzIiwiXG52YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3N0eWxlLnNjc3NcIik7XG5cbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuXG52YXIgdHJhbnNmb3JtO1xudmFyIGluc2VydEludG87XG5cblxuXG52YXIgb3B0aW9ucyA9IHtcImhtclwiOnRydWV9XG5cbm9wdGlvbnMudHJhbnNmb3JtID0gdHJhbnNmb3JtXG5vcHRpb25zLmluc2VydEludG8gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LnBhcmVudC5kb2N1bWVudC5oZWFkXG4gICAgICAgICAgICAgIH07XG5cbnZhciB1cGRhdGUgPSByZXF1aXJlKFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlcy5qc1wiKShjb250ZW50LCBvcHRpb25zKTtcblxuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG5cbmlmKG1vZHVsZS5ob3QpIHtcblx0bW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3N0eWxlLnNjc3NcIiwgZnVuY3Rpb24oKSB7XG5cdFx0dmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZS5zY3NzXCIpO1xuXG5cdFx0aWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG5cblx0XHR2YXIgbG9jYWxzID0gKGZ1bmN0aW9uKGEsIGIpIHtcblx0XHRcdHZhciBrZXksIGlkeCA9IDA7XG5cblx0XHRcdGZvcihrZXkgaW4gYSkge1xuXHRcdFx0XHRpZighYiB8fCBhW2tleV0gIT09IGJba2V5XSkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRpZHgrKztcblx0XHRcdH1cblxuXHRcdFx0Zm9yKGtleSBpbiBiKSBpZHgtLTtcblxuXHRcdFx0cmV0dXJuIGlkeCA9PT0gMDtcblx0XHR9KGNvbnRlbnQubG9jYWxzLCBuZXdDb250ZW50LmxvY2FscykpO1xuXG5cdFx0aWYoIWxvY2FscykgdGhyb3cgbmV3IEVycm9yKCdBYm9ydGluZyBDU1MgSE1SIGR1ZSB0byBjaGFuZ2VkIGNzcy1tb2R1bGVzIGxvY2Fscy4nKTtcblxuXHRcdHVwZGF0ZShuZXdDb250ZW50KTtcblx0fSk7XG5cblx0bW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL1RleHRFZGl0b3Ivc3R5bGUuc2NzcyIsImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikoZmFsc2UpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLnRleHRFZGl0b3IgLnRleHRJbnB1dE1hc2tfX3dyYXB7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJX0udGV4dEVkaXRvciAuYmJqLW1hc2stZXJyb3J7Ym94LXNoYWRvdzowIC0ycHggMCAjZTkxZTYzIGluc2V0fS50ZXh0RWRpdG9yIC5iYmotbWFzay1zdWNjZXNze2JveC1zaGFkb3c6MCAtMnB4IDAgIzRjYWY1MCBpbnNldH1cXG5cIiwgXCJcIl0pO1xuXG4vLyBleHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyIS4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL1RleHRFZGl0b3Ivc3R5bGUuc2Nzc1xuLy8gbW9kdWxlIGlkID0gNjRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWFnZ3JpZC1jb21wb25lbnRzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IENvbXBvbmVudCBmcm9tICcuLi9Db21wb25lbnQnXG5pbXBvcnQgdGVtcGxhdGUgZnJvbSAnbG9kYXNoLWVzL3RlbXBsYXRlJ1xuXG4vKipcbiAqIE51bWJlcnMgRWRpdG9yXG4gKlxuICogSGFuZGxlIG51bWJlciB2YWx1ZXMgRWRpdGluZ1xuICpcbiAqIHwgTmFtZSAgICAgICAgICAgICAgICAgIFx0fCBEZWZhdWx0ICAgICBcdHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx0fFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cdHw6LS0tLS0tLS0tLS0tLTp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8ICoqcmVuZGVyVGVtcGxhdGUqKiAgIHwgdW5kZWZpbmVkICAgIHwgbG9kYXNoIHRlbXBsYXRlXG4gKlxuICogQGF1dGhvciBIeXlhbiBBYm8gRmFraGVyIDxoYWJvZmFraGVyQGJhc2lzLmNvbT5cbiAqL1xuY2xhc3MgVGVtcGxhdGVSZW5kZXJlciBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3QgbmV3IFRlbXBsYXRlUmVuZGVyZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKClcblxuICAgIC8vIHdpbGwgdGhpcyBhZmZlY3QgQkJqIGJ1aSA/XG4gICAgdGhpcy5fZ3VpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICB0aGlzLl9ndWkuY2xhc3NOYW1lID0gJ3RlbXBsYXRlUmVuZGVyZXInXG4gICAgdGhpcy5fZ3VpLnN0eWxlLndpZHRoID0gJzEwMCUnXG4gICAgdGhpcy5fZ3VpLnN0eWxlLmhlaWdodCA9ICcxMDAlJ1xuICAgIHRoaXMuX2d1aS5zdHlsZS5saW5lSGVpZ2h0ID0gJ25vcm1hbCdcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGluaGVyaXREb2NcbiAgICovXG4gIGluaXQocGFyYW1zKSB7XG4gICAgdGhpcy5yZWZyZXNoKHBhcmFtcywgdHJ1ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGluaGVyaXREb2NcbiAgICovXG4gIGdldEd1aSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZ3VpXG4gIH1cblxuICAvKipcbiAgICogUmVmcmVzaCB0aGUgY2VsbCBsXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXMgY2VsbCByZW5kZXJlciBwYXJhbXNcbiAgICogQHBhcmFtIHtCb29sZWFufSBpc0luaXQgdHJ1ZSB3aGVuIHRoaXMgbWV0aG9kIGlzIGJlaW5nIGNhbGxlZCBpbiBgaW5pdGAgcGhhc2UgLCBmYWxzZSBvdGhlcndpc2VcbiAgICpcbiAgICogQHJldHVybiB7Qm9vbGVhbn0gdHJ1ZSBpZiB0aGUgcmVmcmVzaCBzdWNjZWVkZWQsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXG4gICAqL1xuICByZWZyZXNoKHBhcmFtcywgaXNJbml0KSB7XG4gICAgaWYgKGlzSW5pdCkge1xuICAgICAgdGhpcy5fY29tcGlsZWRUZW1wbGF0ZSA9IHRlbXBsYXRlKFxuICAgICAgICB0aGlzLmdldE9wdGlvbigncmVuZGVyVGVtcGxhdGUnLCBwYXJhbXMsICcnKVxuICAgICAgKVxuICAgIH1cblxuICAgIGxldCBjb250ZW50XG5cbiAgICBpZiAodHlwZW9mIHRoaXMuX2NvbXBpbGVkVGVtcGxhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnRlbnQgPSB0aGlzLl9jb21waWxlZFRlbXBsYXRlKHsgcGFyYW1zIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRlbnQgPSBwYXJhbXMudmFsdWVGb3JtYXR0ZWQgPyBwYXJhbXMudmFsdWVGb3JtYXR0ZWQgOiBwYXJhbXMudmFsdWVcbiAgICB9XG5cbiAgICB0aGlzLl9ndWkuaW5uZXJIVE1MID0gY29udGVudFxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBUZW1wbGF0ZVJlbmRlcmVyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvVGVtcGxhdGVSZW5kZXJlci9UZW1wbGF0ZVJlbmRlcmVyLmpzIiwiaW1wb3J0IGFzc2lnbkluV2l0aCBmcm9tICcuL2Fzc2lnbkluV2l0aC5qcyc7XG5pbXBvcnQgYXR0ZW1wdCBmcm9tICcuL2F0dGVtcHQuanMnO1xuaW1wb3J0IGJhc2VWYWx1ZXMgZnJvbSAnLi9fYmFzZVZhbHVlcy5qcyc7XG5pbXBvcnQgY3VzdG9tRGVmYXVsdHNBc3NpZ25JbiBmcm9tICcuL19jdXN0b21EZWZhdWx0c0Fzc2lnbkluLmpzJztcbmltcG9ydCBlc2NhcGVTdHJpbmdDaGFyIGZyb20gJy4vX2VzY2FwZVN0cmluZ0NoYXIuanMnO1xuaW1wb3J0IGlzRXJyb3IgZnJvbSAnLi9pc0Vycm9yLmpzJztcbmltcG9ydCBpc0l0ZXJhdGVlQ2FsbCBmcm9tICcuL19pc0l0ZXJhdGVlQ2FsbC5qcyc7XG5pbXBvcnQga2V5cyBmcm9tICcuL2tleXMuanMnO1xuaW1wb3J0IHJlSW50ZXJwb2xhdGUgZnJvbSAnLi9fcmVJbnRlcnBvbGF0ZS5qcyc7XG5pbXBvcnQgdGVtcGxhdGVTZXR0aW5ncyBmcm9tICcuL3RlbXBsYXRlU2V0dGluZ3MuanMnO1xuaW1wb3J0IHRvU3RyaW5nIGZyb20gJy4vdG9TdHJpbmcuanMnO1xuXG4vKiogVXNlZCB0byBtYXRjaCBlbXB0eSBzdHJpbmcgbGl0ZXJhbHMgaW4gY29tcGlsZWQgdGVtcGxhdGUgc291cmNlLiAqL1xudmFyIHJlRW1wdHlTdHJpbmdMZWFkaW5nID0gL1xcYl9fcCBcXCs9ICcnOy9nLFxuICAgIHJlRW1wdHlTdHJpbmdNaWRkbGUgPSAvXFxiKF9fcCBcXCs9KSAnJyBcXCsvZyxcbiAgICByZUVtcHR5U3RyaW5nVHJhaWxpbmcgPSAvKF9fZVxcKC4qP1xcKXxcXGJfX3RcXCkpIFxcK1xcbicnOy9nO1xuXG4vKipcbiAqIFVzZWQgdG8gbWF0Y2hcbiAqIFtFUyB0ZW1wbGF0ZSBkZWxpbWl0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10ZW1wbGF0ZS1saXRlcmFsLWxleGljYWwtY29tcG9uZW50cykuXG4gKi9cbnZhciByZUVzVGVtcGxhdGUgPSAvXFwkXFx7KFteXFxcXH1dKig/OlxcXFwuW15cXFxcfV0qKSopXFx9L2c7XG5cbi8qKiBVc2VkIHRvIGVuc3VyZSBjYXB0dXJpbmcgb3JkZXIgb2YgdGVtcGxhdGUgZGVsaW1pdGVycy4gKi9cbnZhciByZU5vTWF0Y2ggPSAvKCReKS87XG5cbi8qKiBVc2VkIHRvIG1hdGNoIHVuZXNjYXBlZCBjaGFyYWN0ZXJzIGluIGNvbXBpbGVkIHN0cmluZyBsaXRlcmFscy4gKi9cbnZhciByZVVuZXNjYXBlZFN0cmluZyA9IC9bJ1xcblxcclxcdTIwMjhcXHUyMDI5XFxcXF0vZztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY29tcGlsZWQgdGVtcGxhdGUgZnVuY3Rpb24gdGhhdCBjYW4gaW50ZXJwb2xhdGUgZGF0YSBwcm9wZXJ0aWVzXG4gKiBpbiBcImludGVycG9sYXRlXCIgZGVsaW1pdGVycywgSFRNTC1lc2NhcGUgaW50ZXJwb2xhdGVkIGRhdGEgcHJvcGVydGllcyBpblxuICogXCJlc2NhcGVcIiBkZWxpbWl0ZXJzLCBhbmQgZXhlY3V0ZSBKYXZhU2NyaXB0IGluIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXJzLiBEYXRhXG4gKiBwcm9wZXJ0aWVzIG1heSBiZSBhY2Nlc3NlZCBhcyBmcmVlIHZhcmlhYmxlcyBpbiB0aGUgdGVtcGxhdGUuIElmIGEgc2V0dGluZ1xuICogb2JqZWN0IGlzIGdpdmVuLCBpdCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgYF8udGVtcGxhdGVTZXR0aW5nc2AgdmFsdWVzLlxuICpcbiAqICoqTm90ZToqKiBJbiB0aGUgZGV2ZWxvcG1lbnQgYnVpbGQgYF8udGVtcGxhdGVgIHV0aWxpemVzXG4gKiBbc291cmNlVVJMc10oaHR0cDovL3d3dy5odG1sNXJvY2tzLmNvbS9lbi90dXRvcmlhbHMvZGV2ZWxvcGVydG9vbHMvc291cmNlbWFwcy8jdG9jLXNvdXJjZXVybClcbiAqIGZvciBlYXNpZXIgZGVidWdnaW5nLlxuICpcbiAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHByZWNvbXBpbGluZyB0ZW1wbGF0ZXMgc2VlXG4gKiBbbG9kYXNoJ3MgY3VzdG9tIGJ1aWxkcyBkb2N1bWVudGF0aW9uXShodHRwczovL2xvZGFzaC5jb20vY3VzdG9tLWJ1aWxkcykuXG4gKlxuICogRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQ2hyb21lIGV4dGVuc2lvbiBzYW5kYm94ZXMgc2VlXG4gKiBbQ2hyb21lJ3MgZXh0ZW5zaW9ucyBkb2N1bWVudGF0aW9uXShodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvc2FuZGJveGluZ0V2YWwpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBTdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgdGVtcGxhdGUgc3RyaW5nLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gKiBAcGFyYW0ge1JlZ0V4cH0gW29wdGlvbnMuZXNjYXBlPV8udGVtcGxhdGVTZXR0aW5ncy5lc2NhcGVdXG4gKiAgVGhlIEhUTUwgXCJlc2NhcGVcIiBkZWxpbWl0ZXIuXG4gKiBAcGFyYW0ge1JlZ0V4cH0gW29wdGlvbnMuZXZhbHVhdGU9Xy50ZW1wbGF0ZVNldHRpbmdzLmV2YWx1YXRlXVxuICogIFRoZSBcImV2YWx1YXRlXCIgZGVsaW1pdGVyLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zLmltcG9ydHM9Xy50ZW1wbGF0ZVNldHRpbmdzLmltcG9ydHNdXG4gKiAgQW4gb2JqZWN0IHRvIGltcG9ydCBpbnRvIHRoZSB0ZW1wbGF0ZSBhcyBmcmVlIHZhcmlhYmxlcy5cbiAqIEBwYXJhbSB7UmVnRXhwfSBbb3B0aW9ucy5pbnRlcnBvbGF0ZT1fLnRlbXBsYXRlU2V0dGluZ3MuaW50ZXJwb2xhdGVdXG4gKiAgVGhlIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuc291cmNlVVJMPSd0ZW1wbGF0ZVNvdXJjZXNbbl0nXVxuICogIFRoZSBzb3VyY2VVUkwgb2YgdGhlIGNvbXBpbGVkIHRlbXBsYXRlLlxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnZhcmlhYmxlPSdvYmonXVxuICogIFRoZSBkYXRhIG9iamVjdCB2YXJpYWJsZSBuYW1lLlxuICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgY29tcGlsZWQgdGVtcGxhdGUgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIFVzZSB0aGUgXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlciB0byBjcmVhdGUgYSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hlbGxvIDwlPSB1c2VyICU+IScpO1xuICogY29tcGlsZWQoeyAndXNlcic6ICdmcmVkJyB9KTtcbiAqIC8vID0+ICdoZWxsbyBmcmVkISdcbiAqXG4gKiAvLyBVc2UgdGhlIEhUTUwgXCJlc2NhcGVcIiBkZWxpbWl0ZXIgdG8gZXNjYXBlIGRhdGEgcHJvcGVydHkgdmFsdWVzLlxuICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPGI+PCUtIHZhbHVlICU+PC9iPicpO1xuICogY29tcGlsZWQoeyAndmFsdWUnOiAnPHNjcmlwdD4nIH0pO1xuICogLy8gPT4gJzxiPiZsdDtzY3JpcHQmZ3Q7PC9iPidcbiAqXG4gKiAvLyBVc2UgdGhlIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXIgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGFuZCBnZW5lcmF0ZSBIVE1MLlxuICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPCUgXy5mb3JFYWNoKHVzZXJzLCBmdW5jdGlvbih1c2VyKSB7ICU+PGxpPjwlLSB1c2VyICU+PC9saT48JSB9KTsgJT4nKTtcbiAqIGNvbXBpbGVkKHsgJ3VzZXJzJzogWydmcmVkJywgJ2Jhcm5leSddIH0pO1xuICogLy8gPT4gJzxsaT5mcmVkPC9saT48bGk+YmFybmV5PC9saT4nXG4gKlxuICogLy8gVXNlIHRoZSBpbnRlcm5hbCBgcHJpbnRgIGZ1bmN0aW9uIGluIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXJzLlxuICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPCUgcHJpbnQoXCJoZWxsbyBcIiArIHVzZXIpOyAlPiEnKTtcbiAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnYmFybmV5JyB9KTtcbiAqIC8vID0+ICdoZWxsbyBiYXJuZXkhJ1xuICpcbiAqIC8vIFVzZSB0aGUgRVMgdGVtcGxhdGUgbGl0ZXJhbCBkZWxpbWl0ZXIgYXMgYW4gXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlci5cbiAqIC8vIERpc2FibGUgc3VwcG9ydCBieSByZXBsYWNpbmcgdGhlIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIuXG4gKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyAkeyB1c2VyIH0hJyk7XG4gKiBjb21waWxlZCh7ICd1c2VyJzogJ3BlYmJsZXMnIH0pO1xuICogLy8gPT4gJ2hlbGxvIHBlYmJsZXMhJ1xuICpcbiAqIC8vIFVzZSBiYWNrc2xhc2hlcyB0byB0cmVhdCBkZWxpbWl0ZXJzIGFzIHBsYWluIHRleHQuXG4gKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCc8JT0gXCJcXFxcPCUtIHZhbHVlICVcXFxcPlwiICU+Jyk7XG4gKiBjb21waWxlZCh7ICd2YWx1ZSc6ICdpZ25vcmVkJyB9KTtcbiAqIC8vID0+ICc8JS0gdmFsdWUgJT4nXG4gKlxuICogLy8gVXNlIHRoZSBgaW1wb3J0c2Agb3B0aW9uIHRvIGltcG9ydCBgalF1ZXJ5YCBhcyBganFgLlxuICogdmFyIHRleHQgPSAnPCUganEuZWFjaCh1c2VycywgZnVuY3Rpb24odXNlcikgeyAlPjxsaT48JS0gdXNlciAlPjwvbGk+PCUgfSk7ICU+JztcbiAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUodGV4dCwgeyAnaW1wb3J0cyc6IHsgJ2pxJzogalF1ZXJ5IH0gfSk7XG4gKiBjb21waWxlZCh7ICd1c2Vycyc6IFsnZnJlZCcsICdiYXJuZXknXSB9KTtcbiAqIC8vID0+ICc8bGk+ZnJlZDwvbGk+PGxpPmJhcm5leTwvbGk+J1xuICpcbiAqIC8vIFVzZSB0aGUgYHNvdXJjZVVSTGAgb3B0aW9uIHRvIHNwZWNpZnkgYSBjdXN0b20gc291cmNlVVJMIGZvciB0aGUgdGVtcGxhdGUuXG4gKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyA8JT0gdXNlciAlPiEnLCB7ICdzb3VyY2VVUkwnOiAnL2Jhc2ljL2dyZWV0aW5nLmpzdCcgfSk7XG4gKiBjb21waWxlZChkYXRhKTtcbiAqIC8vID0+IEZpbmQgdGhlIHNvdXJjZSBvZiBcImdyZWV0aW5nLmpzdFwiIHVuZGVyIHRoZSBTb3VyY2VzIHRhYiBvciBSZXNvdXJjZXMgcGFuZWwgb2YgdGhlIHdlYiBpbnNwZWN0b3IuXG4gKlxuICogLy8gVXNlIHRoZSBgdmFyaWFibGVgIG9wdGlvbiB0byBlbnN1cmUgYSB3aXRoLXN0YXRlbWVudCBpc24ndCB1c2VkIGluIHRoZSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hpIDwlPSBkYXRhLnVzZXIgJT4hJywgeyAndmFyaWFibGUnOiAnZGF0YScgfSk7XG4gKiBjb21waWxlZC5zb3VyY2U7XG4gKiAvLyA9PiBmdW5jdGlvbihkYXRhKSB7XG4gKiAvLyAgIHZhciBfX3QsIF9fcCA9ICcnO1xuICogLy8gICBfX3AgKz0gJ2hpICcgKyAoKF9fdCA9ICggZGF0YS51c2VyICkpID09IG51bGwgPyAnJyA6IF9fdCkgKyAnISc7XG4gKiAvLyAgIHJldHVybiBfX3A7XG4gKiAvLyB9XG4gKlxuICogLy8gVXNlIGN1c3RvbSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLlxuICogXy50ZW1wbGF0ZVNldHRpbmdzLmludGVycG9sYXRlID0gL3t7KFtcXHNcXFNdKz8pfX0vZztcbiAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hlbGxvIHt7IHVzZXIgfX0hJyk7XG4gKiBjb21waWxlZCh7ICd1c2VyJzogJ211c3RhY2hlJyB9KTtcbiAqIC8vID0+ICdoZWxsbyBtdXN0YWNoZSEnXG4gKlxuICogLy8gVXNlIHRoZSBgc291cmNlYCBwcm9wZXJ0eSB0byBpbmxpbmUgY29tcGlsZWQgdGVtcGxhdGVzIGZvciBtZWFuaW5nZnVsXG4gKiAvLyBsaW5lIG51bWJlcnMgaW4gZXJyb3IgbWVzc2FnZXMgYW5kIHN0YWNrIHRyYWNlcy5cbiAqIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICdqc3QuanMnKSwgJ1xcXG4gKiAgIHZhciBKU1QgPSB7XFxcbiAqICAgICBcIm1haW5cIjogJyArIF8udGVtcGxhdGUobWFpblRleHQpLnNvdXJjZSArICdcXFxuICogICB9O1xcXG4gKiAnKTtcbiAqL1xuZnVuY3Rpb24gdGVtcGxhdGUoc3RyaW5nLCBvcHRpb25zLCBndWFyZCkge1xuICAvLyBCYXNlZCBvbiBKb2huIFJlc2lnJ3MgYHRtcGxgIGltcGxlbWVudGF0aW9uXG4gIC8vIChodHRwOi8vZWpvaG4ub3JnL2Jsb2cvamF2YXNjcmlwdC1taWNyby10ZW1wbGF0aW5nLylcbiAgLy8gYW5kIExhdXJhIERva3Rvcm92YSdzIGRvVC5qcyAoaHR0cHM6Ly9naXRodWIuY29tL29sYWRvL2RvVCkuXG4gIHZhciBzZXR0aW5ncyA9IHRlbXBsYXRlU2V0dGluZ3MuaW1wb3J0cy5fLnRlbXBsYXRlU2V0dGluZ3MgfHwgdGVtcGxhdGVTZXR0aW5ncztcblxuICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoc3RyaW5nLCBvcHRpb25zLCBndWFyZCkpIHtcbiAgICBvcHRpb25zID0gdW5kZWZpbmVkO1xuICB9XG4gIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gIG9wdGlvbnMgPSBhc3NpZ25JbldpdGgoe30sIG9wdGlvbnMsIHNldHRpbmdzLCBjdXN0b21EZWZhdWx0c0Fzc2lnbkluKTtcblxuICB2YXIgaW1wb3J0cyA9IGFzc2lnbkluV2l0aCh7fSwgb3B0aW9ucy5pbXBvcnRzLCBzZXR0aW5ncy5pbXBvcnRzLCBjdXN0b21EZWZhdWx0c0Fzc2lnbkluKSxcbiAgICAgIGltcG9ydHNLZXlzID0ga2V5cyhpbXBvcnRzKSxcbiAgICAgIGltcG9ydHNWYWx1ZXMgPSBiYXNlVmFsdWVzKGltcG9ydHMsIGltcG9ydHNLZXlzKTtcblxuICB2YXIgaXNFc2NhcGluZyxcbiAgICAgIGlzRXZhbHVhdGluZyxcbiAgICAgIGluZGV4ID0gMCxcbiAgICAgIGludGVycG9sYXRlID0gb3B0aW9ucy5pbnRlcnBvbGF0ZSB8fCByZU5vTWF0Y2gsXG4gICAgICBzb3VyY2UgPSBcIl9fcCArPSAnXCI7XG5cbiAgLy8gQ29tcGlsZSB0aGUgcmVnZXhwIHRvIG1hdGNoIGVhY2ggZGVsaW1pdGVyLlxuICB2YXIgcmVEZWxpbWl0ZXJzID0gUmVnRXhwKFxuICAgIChvcHRpb25zLmVzY2FwZSB8fCByZU5vTWF0Y2gpLnNvdXJjZSArICd8JyArXG4gICAgaW50ZXJwb2xhdGUuc291cmNlICsgJ3wnICtcbiAgICAoaW50ZXJwb2xhdGUgPT09IHJlSW50ZXJwb2xhdGUgPyByZUVzVGVtcGxhdGUgOiByZU5vTWF0Y2gpLnNvdXJjZSArICd8JyArXG4gICAgKG9wdGlvbnMuZXZhbHVhdGUgfHwgcmVOb01hdGNoKS5zb3VyY2UgKyAnfCQnXG4gICwgJ2cnKTtcblxuICAvLyBVc2UgYSBzb3VyY2VVUkwgZm9yIGVhc2llciBkZWJ1Z2dpbmcuXG4gIC8vIFRoZSBzb3VyY2VVUkwgZ2V0cyBpbmplY3RlZCBpbnRvIHRoZSBzb3VyY2UgdGhhdCdzIGV2YWwtZWQsIHNvIGJlIGNhcmVmdWxcbiAgLy8gd2l0aCBsb29rdXAgKGluIGNhc2Ugb2YgZS5nLiBwcm90b3R5cGUgcG9sbHV0aW9uKSwgYW5kIHN0cmlwIG5ld2xpbmVzIGlmIGFueS5cbiAgLy8gQSBuZXdsaW5lIHdvdWxkbid0IGJlIGEgdmFsaWQgc291cmNlVVJMIGFueXdheSwgYW5kIGl0J2QgZW5hYmxlIGNvZGUgaW5qZWN0aW9uLlxuICB2YXIgc291cmNlVVJMID0gaGFzT3duUHJvcGVydHkuY2FsbChvcHRpb25zLCAnc291cmNlVVJMJylcbiAgICA/ICgnLy8jIHNvdXJjZVVSTD0nICtcbiAgICAgICAob3B0aW9ucy5zb3VyY2VVUkwgKyAnJykucmVwbGFjZSgvW1xcclxcbl0vZywgJyAnKSArXG4gICAgICAgJ1xcbicpXG4gICAgOiAnJztcblxuICBzdHJpbmcucmVwbGFjZShyZURlbGltaXRlcnMsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGVWYWx1ZSwgaW50ZXJwb2xhdGVWYWx1ZSwgZXNUZW1wbGF0ZVZhbHVlLCBldmFsdWF0ZVZhbHVlLCBvZmZzZXQpIHtcbiAgICBpbnRlcnBvbGF0ZVZhbHVlIHx8IChpbnRlcnBvbGF0ZVZhbHVlID0gZXNUZW1wbGF0ZVZhbHVlKTtcblxuICAgIC8vIEVzY2FwZSBjaGFyYWN0ZXJzIHRoYXQgY2FuJ3QgYmUgaW5jbHVkZWQgaW4gc3RyaW5nIGxpdGVyYWxzLlxuICAgIHNvdXJjZSArPSBzdHJpbmcuc2xpY2UoaW5kZXgsIG9mZnNldCkucmVwbGFjZShyZVVuZXNjYXBlZFN0cmluZywgZXNjYXBlU3RyaW5nQ2hhcik7XG5cbiAgICAvLyBSZXBsYWNlIGRlbGltaXRlcnMgd2l0aCBzbmlwcGV0cy5cbiAgICBpZiAoZXNjYXBlVmFsdWUpIHtcbiAgICAgIGlzRXNjYXBpbmcgPSB0cnVlO1xuICAgICAgc291cmNlICs9IFwiJyArXFxuX19lKFwiICsgZXNjYXBlVmFsdWUgKyBcIikgK1xcbidcIjtcbiAgICB9XG4gICAgaWYgKGV2YWx1YXRlVmFsdWUpIHtcbiAgICAgIGlzRXZhbHVhdGluZyA9IHRydWU7XG4gICAgICBzb3VyY2UgKz0gXCInO1xcblwiICsgZXZhbHVhdGVWYWx1ZSArIFwiO1xcbl9fcCArPSAnXCI7XG4gICAgfVxuICAgIGlmIChpbnRlcnBvbGF0ZVZhbHVlKSB7XG4gICAgICBzb3VyY2UgKz0gXCInICtcXG4oKF9fdCA9IChcIiArIGludGVycG9sYXRlVmFsdWUgKyBcIikpID09IG51bGwgPyAnJyA6IF9fdCkgK1xcbidcIjtcbiAgICB9XG4gICAgaW5kZXggPSBvZmZzZXQgKyBtYXRjaC5sZW5ndGg7XG5cbiAgICAvLyBUaGUgSlMgZW5naW5lIGVtYmVkZGVkIGluIEFkb2JlIHByb2R1Y3RzIG5lZWRzIGBtYXRjaGAgcmV0dXJuZWQgaW5cbiAgICAvLyBvcmRlciB0byBwcm9kdWNlIHRoZSBjb3JyZWN0IGBvZmZzZXRgIHZhbHVlLlxuICAgIHJldHVybiBtYXRjaDtcbiAgfSk7XG5cbiAgc291cmNlICs9IFwiJztcXG5cIjtcblxuICAvLyBJZiBgdmFyaWFibGVgIGlzIG5vdCBzcGVjaWZpZWQgd3JhcCBhIHdpdGgtc3RhdGVtZW50IGFyb3VuZCB0aGUgZ2VuZXJhdGVkXG4gIC8vIGNvZGUgdG8gYWRkIHRoZSBkYXRhIG9iamVjdCB0byB0aGUgdG9wIG9mIHRoZSBzY29wZSBjaGFpbi5cbiAgLy8gTGlrZSB3aXRoIHNvdXJjZVVSTCwgd2UgdGFrZSBjYXJlIHRvIG5vdCBjaGVjayB0aGUgb3B0aW9uJ3MgcHJvdG90eXBlLFxuICAvLyBhcyB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgYSBjb2RlIGluamVjdGlvbiB2ZWN0b3IuXG4gIHZhciB2YXJpYWJsZSA9IGhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgJ3ZhcmlhYmxlJykgJiYgb3B0aW9ucy52YXJpYWJsZTtcbiAgaWYgKCF2YXJpYWJsZSkge1xuICAgIHNvdXJjZSA9ICd3aXRoIChvYmopIHtcXG4nICsgc291cmNlICsgJ1xcbn1cXG4nO1xuICB9XG4gIC8vIENsZWFudXAgY29kZSBieSBzdHJpcHBpbmcgZW1wdHkgc3RyaW5ncy5cbiAgc291cmNlID0gKGlzRXZhbHVhdGluZyA/IHNvdXJjZS5yZXBsYWNlKHJlRW1wdHlTdHJpbmdMZWFkaW5nLCAnJykgOiBzb3VyY2UpXG4gICAgLnJlcGxhY2UocmVFbXB0eVN0cmluZ01pZGRsZSwgJyQxJylcbiAgICAucmVwbGFjZShyZUVtcHR5U3RyaW5nVHJhaWxpbmcsICckMTsnKTtcblxuICAvLyBGcmFtZSBjb2RlIGFzIHRoZSBmdW5jdGlvbiBib2R5LlxuICBzb3VyY2UgPSAnZnVuY3Rpb24oJyArICh2YXJpYWJsZSB8fCAnb2JqJykgKyAnKSB7XFxuJyArXG4gICAgKHZhcmlhYmxlXG4gICAgICA/ICcnXG4gICAgICA6ICdvYmogfHwgKG9iaiA9IHt9KTtcXG4nXG4gICAgKSArXG4gICAgXCJ2YXIgX190LCBfX3AgPSAnJ1wiICtcbiAgICAoaXNFc2NhcGluZ1xuICAgICAgID8gJywgX19lID0gXy5lc2NhcGUnXG4gICAgICAgOiAnJ1xuICAgICkgK1xuICAgIChpc0V2YWx1YXRpbmdcbiAgICAgID8gJywgX19qID0gQXJyYXkucHJvdG90eXBlLmpvaW47XFxuJyArXG4gICAgICAgIFwiZnVuY3Rpb24gcHJpbnQoKSB7IF9fcCArPSBfX2ouY2FsbChhcmd1bWVudHMsICcnKSB9XFxuXCJcbiAgICAgIDogJztcXG4nXG4gICAgKSArXG4gICAgc291cmNlICtcbiAgICAncmV0dXJuIF9fcFxcbn0nO1xuXG4gIHZhciByZXN1bHQgPSBhdHRlbXB0KGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBGdW5jdGlvbihpbXBvcnRzS2V5cywgc291cmNlVVJMICsgJ3JldHVybiAnICsgc291cmNlKVxuICAgICAgLmFwcGx5KHVuZGVmaW5lZCwgaW1wb3J0c1ZhbHVlcyk7XG4gIH0pO1xuXG4gIC8vIFByb3ZpZGUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uJ3Mgc291cmNlIGJ5IGl0cyBgdG9TdHJpbmdgIG1ldGhvZCBvclxuICAvLyB0aGUgYHNvdXJjZWAgcHJvcGVydHkgYXMgYSBjb252ZW5pZW5jZSBmb3IgaW5saW5pbmcgY29tcGlsZWQgdGVtcGxhdGVzLlxuICByZXN1bHQuc291cmNlID0gc291cmNlO1xuICBpZiAoaXNFcnJvcihyZXN1bHQpKSB7XG4gICAgdGhyb3cgcmVzdWx0O1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRlbXBsYXRlO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy90ZW1wbGF0ZS5qcyIsImltcG9ydCBjb3B5T2JqZWN0IGZyb20gJy4vX2NvcHlPYmplY3QuanMnO1xuaW1wb3J0IGNyZWF0ZUFzc2lnbmVyIGZyb20gJy4vX2NyZWF0ZUFzc2lnbmVyLmpzJztcbmltcG9ydCBrZXlzSW4gZnJvbSAnLi9rZXlzSW4uanMnO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduSW5gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgXG4gKiB3aGljaCBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIGFzc2lnbmVkIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnNcbiAqIGB1bmRlZmluZWRgLCBhc3NpZ25tZW50IGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgXG4gKiBpcyBpbnZva2VkIHdpdGggZml2ZSBhcmd1bWVudHM6IChvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UpLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBhbGlhcyBleHRlbmRXaXRoXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0gey4uLk9iamVjdH0gc291cmNlcyBUaGUgc291cmNlIG9iamVjdHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQHNlZSBfLmFzc2lnbldpdGhcbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAqICAgcmV0dXJuIF8uaXNVbmRlZmluZWQob2JqVmFsdWUpID8gc3JjVmFsdWUgOiBvYmpWYWx1ZTtcbiAqIH1cbiAqXG4gKiB2YXIgZGVmYXVsdHMgPSBfLnBhcnRpYWxSaWdodChfLmFzc2lnbkluV2l0aCwgY3VzdG9taXplcik7XG4gKlxuICogZGVmYXVsdHMoeyAnYSc6IDEgfSwgeyAnYic6IDIgfSwgeyAnYSc6IDMgfSk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAqL1xudmFyIGFzc2lnbkluV2l0aCA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICBjb3B5T2JqZWN0KHNvdXJjZSwga2V5c0luKHNvdXJjZSksIG9iamVjdCwgY3VzdG9taXplcik7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgYXNzaWduSW5XaXRoO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9hc3NpZ25JbldpdGguanMiLCJpbXBvcnQgYXNzaWduVmFsdWUgZnJvbSAnLi9fYXNzaWduVmFsdWUuanMnO1xuaW1wb3J0IGJhc2VBc3NpZ25WYWx1ZSBmcm9tICcuL19iYXNlQXNzaWduVmFsdWUuanMnO1xuXG4vKipcbiAqIENvcGllcyBwcm9wZXJ0aWVzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMgdG8gY29weS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvcGllZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb3B5T2JqZWN0KHNvdXJjZSwgcHJvcHMsIG9iamVjdCwgY3VzdG9taXplcikge1xuICB2YXIgaXNOZXcgPSAhb2JqZWN0O1xuICBvYmplY3QgfHwgKG9iamVjdCA9IHt9KTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSBwcm9wc1tpbmRleF07XG5cbiAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICA/IGN1c3RvbWl6ZXIob2JqZWN0W2tleV0sIHNvdXJjZVtrZXldLCBrZXksIG9iamVjdCwgc291cmNlKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbmV3VmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gICAgaWYgKGlzTmV3KSB7XG4gICAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY29weU9iamVjdDtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2NvcHlPYmplY3QuanMiLCJpbXBvcnQgYmFzZUFzc2lnblZhbHVlIGZyb20gJy4vX2Jhc2VBc3NpZ25WYWx1ZS5qcyc7XG5pbXBvcnQgZXEgZnJvbSAnLi9lcS5qcyc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQXNzaWducyBgdmFsdWVgIHRvIGBrZXlgIG9mIGBvYmplY3RgIGlmIHRoZSBleGlzdGluZyB2YWx1ZSBpcyBub3QgZXF1aXZhbGVudFxuICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV07XG4gIGlmICghKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGVxKG9ialZhbHVlLCB2YWx1ZSkpIHx8XG4gICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFzc2lnblZhbHVlO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXNzaWduVmFsdWUuanMiLCJpbXBvcnQgYmFzZUlzTmF0aXZlIGZyb20gJy4vX2Jhc2VJc05hdGl2ZS5qcyc7XG5pbXBvcnQgZ2V0VmFsdWUgZnJvbSAnLi9fZ2V0VmFsdWUuanMnO1xuXG4vKipcbiAqIEdldHMgdGhlIG5hdGl2ZSBmdW5jdGlvbiBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICByZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBnZXROYXRpdmU7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19nZXROYXRpdmUuanMiLCJpbXBvcnQgaXNGdW5jdGlvbiBmcm9tICcuL2lzRnVuY3Rpb24uanMnO1xuaW1wb3J0IGlzTWFza2VkIGZyb20gJy4vX2lzTWFza2VkLmpzJztcbmltcG9ydCBpc09iamVjdCBmcm9tICcuL2lzT2JqZWN0LmpzJztcbmltcG9ydCB0b1NvdXJjZSBmcm9tICcuL190b1NvdXJjZS5qcyc7XG5cbi8qKlxuICogVXNlZCB0byBtYXRjaCBgUmVnRXhwYFxuICogW3N5bnRheCBjaGFyYWN0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wYXR0ZXJucykuXG4gKi9cbnZhciByZVJlZ0V4cENoYXIgPSAvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2c7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBob3N0IGNvbnN0cnVjdG9ycyAoU2FmYXJpKS4gKi9cbnZhciByZUlzSG9zdEN0b3IgPSAvXlxcW29iamVjdCAuKz9Db25zdHJ1Y3RvclxcXSQvO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGlmIGEgbWV0aG9kIGlzIG5hdGl2ZS4gKi9cbnZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gIGZ1bmNUb1N0cmluZy5jYWxsKGhhc093blByb3BlcnR5KS5yZXBsYWNlKHJlUmVnRXhwQ2hhciwgJ1xcXFwkJicpXG4gIC5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJ1xuKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hdGl2ZWAgd2l0aG91dCBiYWQgc2hpbSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNOYXRpdmUodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgaXNNYXNrZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBwYXR0ZXJuID0gaXNGdW5jdGlvbih2YWx1ZSkgPyByZUlzTmF0aXZlIDogcmVJc0hvc3RDdG9yO1xuICByZXR1cm4gcGF0dGVybi50ZXN0KHRvU291cmNlKHZhbHVlKSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VJc05hdGl2ZTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VJc05hdGl2ZS5qcyIsImltcG9ydCBTeW1ib2wgZnJvbSAnLi9fU3ltYm9sLmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlmIChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBnZXRSYXdUYWc7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19nZXRSYXdUYWcuanMiLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIHVzaW5nIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgb2JqZWN0VG9TdHJpbmc7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19vYmplY3RUb1N0cmluZy5qcyIsImltcG9ydCBjb3JlSnNEYXRhIGZyb20gJy4vX2NvcmVKc0RhdGEuanMnO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWV0aG9kcyBtYXNxdWVyYWRpbmcgYXMgbmF0aXZlLiAqL1xudmFyIG1hc2tTcmNLZXkgPSAoZnVuY3Rpb24oKSB7XG4gIHZhciB1aWQgPSAvW14uXSskLy5leGVjKGNvcmVKc0RhdGEgJiYgY29yZUpzRGF0YS5rZXlzICYmIGNvcmVKc0RhdGEua2V5cy5JRV9QUk9UTyB8fCAnJyk7XG4gIHJldHVybiB1aWQgPyAoJ1N5bWJvbChzcmMpXzEuJyArIHVpZCkgOiAnJztcbn0oKSk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgaXRzIHNvdXJjZSBtYXNrZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNNYXNrZWQoZnVuYykge1xuICByZXR1cm4gISFtYXNrU3JjS2V5ICYmIChtYXNrU3JjS2V5IGluIGZ1bmMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc01hc2tlZDtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2lzTWFza2VkLmpzIiwiaW1wb3J0IHJvb3QgZnJvbSAnLi9fcm9vdC5qcyc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvdmVycmVhY2hpbmcgY29yZS1qcyBzaGltcy4gKi9cbnZhciBjb3JlSnNEYXRhID0gcm9vdFsnX19jb3JlLWpzX3NoYXJlZF9fJ107XG5cbmV4cG9ydCBkZWZhdWx0IGNvcmVKc0RhdGE7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19jb3JlSnNEYXRhLmpzIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgZnVuY2AgdG8gaXRzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc291cmNlIGNvZGUuXG4gKi9cbmZ1bmN0aW9uIHRvU291cmNlKGZ1bmMpIHtcbiAgaWYgKGZ1bmMgIT0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZnVuY1RvU3RyaW5nLmNhbGwoZnVuYyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIChmdW5jICsgJycpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5leHBvcnQgZGVmYXVsdCB0b1NvdXJjZTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3RvU291cmNlLmpzIiwiLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gZ2V0VmFsdWUob2JqZWN0LCBrZXkpIHtcbiAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGdldFZhbHVlO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0VmFsdWUuanMiLCJpbXBvcnQgYmFzZVJlc3QgZnJvbSAnLi9fYmFzZVJlc3QuanMnO1xuaW1wb3J0IGlzSXRlcmF0ZWVDYWxsIGZyb20gJy4vX2lzSXRlcmF0ZWVDYWxsLmpzJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5hc3NpZ25gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBhc3NpZ25lciBUaGUgZnVuY3Rpb24gdG8gYXNzaWduIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFzc2lnbmVyIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVBc3NpZ25lcihhc3NpZ25lcikge1xuICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2VzKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IHNvdXJjZXMubGVuZ3RoLFxuICAgICAgICBjdXN0b21pemVyID0gbGVuZ3RoID4gMSA/IHNvdXJjZXNbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQsXG4gICAgICAgIGd1YXJkID0gbGVuZ3RoID4gMiA/IHNvdXJjZXNbMl0gOiB1bmRlZmluZWQ7XG5cbiAgICBjdXN0b21pemVyID0gKGFzc2lnbmVyLmxlbmd0aCA+IDMgJiYgdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJylcbiAgICAgID8gKGxlbmd0aC0tLCBjdXN0b21pemVyKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoc291cmNlc1swXSwgc291cmNlc1sxXSwgZ3VhcmQpKSB7XG4gICAgICBjdXN0b21pemVyID0gbGVuZ3RoIDwgMyA/IHVuZGVmaW5lZCA6IGN1c3RvbWl6ZXI7XG4gICAgICBsZW5ndGggPSAxO1xuICAgIH1cbiAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIHNvdXJjZSA9IHNvdXJjZXNbaW5kZXhdO1xuICAgICAgaWYgKHNvdXJjZSkge1xuICAgICAgICBhc3NpZ25lcihvYmplY3QsIHNvdXJjZSwgaW5kZXgsIGN1c3RvbWl6ZXIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0O1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQXNzaWduZXI7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19jcmVhdGVBc3NpZ25lci5qcyIsImltcG9ydCBhcHBseSBmcm9tICcuL19hcHBseS5qcyc7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCB0cmFuc2Zvcm1zIHRoZSByZXN0IGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSByZXN0IGFycmF5IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyUmVzdChmdW5jLCBzdGFydCwgdHJhbnNmb3JtKSB7XG4gIHN0YXJ0ID0gbmF0aXZlTWF4KHN0YXJ0ID09PSB1bmRlZmluZWQgPyAoZnVuYy5sZW5ndGggLSAxKSA6IHN0YXJ0LCAwKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgoYXJncy5sZW5ndGggLSBzdGFydCwgMCksXG4gICAgICAgIGFycmF5ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhcnJheVtpbmRleF0gPSBhcmdzW3N0YXJ0ICsgaW5kZXhdO1xuICAgIH1cbiAgICBpbmRleCA9IC0xO1xuICAgIHZhciBvdGhlckFyZ3MgPSBBcnJheShzdGFydCArIDEpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgc3RhcnQpIHtcbiAgICAgIG90aGVyQXJnc1tpbmRleF0gPSBhcmdzW2luZGV4XTtcbiAgICB9XG4gICAgb3RoZXJBcmdzW3N0YXJ0XSA9IHRyYW5zZm9ybShhcnJheSk7XG4gICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIG90aGVyQXJncyk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IG92ZXJSZXN0O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fb3ZlclJlc3QuanMiLCJpbXBvcnQgYmFzZVNldFRvU3RyaW5nIGZyb20gJy4vX2Jhc2VTZXRUb1N0cmluZy5qcyc7XG5pbXBvcnQgc2hvcnRPdXQgZnJvbSAnLi9fc2hvcnRPdXQuanMnO1xuXG4vKipcbiAqIFNldHMgdGhlIGB0b1N0cmluZ2AgbWV0aG9kIG9mIGBmdW5jYCB0byByZXR1cm4gYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgc2V0VG9TdHJpbmcgPSBzaG9ydE91dChiYXNlU2V0VG9TdHJpbmcpO1xuXG5leHBvcnQgZGVmYXVsdCBzZXRUb1N0cmluZztcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3NldFRvU3RyaW5nLmpzIiwiaW1wb3J0IGNvbnN0YW50IGZyb20gJy4vY29uc3RhbnQuanMnO1xuaW1wb3J0IGRlZmluZVByb3BlcnR5IGZyb20gJy4vX2RlZmluZVByb3BlcnR5LmpzJztcbmltcG9ydCBpZGVudGl0eSBmcm9tICcuL2lkZW50aXR5LmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0VG9TdHJpbmdgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgYmFzZVNldFRvU3RyaW5nID0gIWRlZmluZVByb3BlcnR5ID8gaWRlbnRpdHkgOiBmdW5jdGlvbihmdW5jLCBzdHJpbmcpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmMsICd0b1N0cmluZycsIHtcbiAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAnZW51bWVyYWJsZSc6IGZhbHNlLFxuICAgICd2YWx1ZSc6IGNvbnN0YW50KHN0cmluZyksXG4gICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VTZXRUb1N0cmluZztcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VTZXRUb1N0cmluZy5qcyIsIi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBgdmFsdWVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gZnJvbSB0aGUgbmV3IGZ1bmN0aW9uLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29uc3RhbnQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLmNvbnN0YW50KHsgJ2EnOiAxIH0pKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAqIC8vID0+IFt7ICdhJzogMSB9LCB7ICdhJzogMSB9XVxuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb25zdGFudDtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvY29uc3RhbnQuanMiLCIvKiogVXNlZCB0byBkZXRlY3QgaG90IGZ1bmN0aW9ucyBieSBudW1iZXIgb2YgY2FsbHMgd2l0aGluIGEgc3BhbiBvZiBtaWxsaXNlY29uZHMuICovXG52YXIgSE9UX0NPVU5UID0gODAwLFxuICAgIEhPVF9TUEFOID0gMTY7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVOb3cgPSBEYXRlLm5vdztcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCdsbCBzaG9ydCBvdXQgYW5kIGludm9rZSBgaWRlbnRpdHlgIGluc3RlYWRcbiAqIG9mIGBmdW5jYCB3aGVuIGl0J3MgY2FsbGVkIGBIT1RfQ09VTlRgIG9yIG1vcmUgdGltZXMgaW4gYEhPVF9TUEFOYFxuICogbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNob3J0YWJsZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gc2hvcnRPdXQoZnVuYykge1xuICB2YXIgY291bnQgPSAwLFxuICAgICAgbGFzdENhbGxlZCA9IDA7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzdGFtcCA9IG5hdGl2ZU5vdygpLFxuICAgICAgICByZW1haW5pbmcgPSBIT1RfU1BBTiAtIChzdGFtcCAtIGxhc3RDYWxsZWQpO1xuXG4gICAgbGFzdENhbGxlZCA9IHN0YW1wO1xuICAgIGlmIChyZW1haW5pbmcgPiAwKSB7XG4gICAgICBpZiAoKytjb3VudCA+PSBIT1RfQ09VTlQpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1swXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY291bnQgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gZnVuYy5hcHBseSh1bmRlZmluZWQsIGFyZ3VtZW50cyk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHNob3J0T3V0O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fc2hvcnRPdXQuanMiLCJpbXBvcnQgYXJyYXlMaWtlS2V5cyBmcm9tICcuL19hcnJheUxpa2VLZXlzLmpzJztcbmltcG9ydCBiYXNlS2V5c0luIGZyb20gJy4vX2Jhc2VLZXlzSW4uanMnO1xuaW1wb3J0IGlzQXJyYXlMaWtlIGZyb20gJy4vaXNBcnJheUxpa2UuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzSW4obmV3IEZvbyk7XG4gKiAvLyA9PiBbJ2EnLCAnYicsICdjJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24ga2V5c0luKG9iamVjdCkge1xuICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0LCB0cnVlKSA6IGJhc2VLZXlzSW4ob2JqZWN0KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQga2V5c0luO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9rZXlzSW4uanMiLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRpbWVzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHNcbiAqIG9yIG1heCBhcnJheSBsZW5ndGggY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIGludm9rZSBgaXRlcmF0ZWVgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRpbWVzKG4sIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobik7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGluZGV4KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlVGltZXM7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlVGltZXMuanMiLCJpbXBvcnQgYmFzZUlzQXJndW1lbnRzIGZyb20gJy4vX2Jhc2VJc0FyZ3VtZW50cy5qcyc7XG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gJy4vaXNPYmplY3RMaWtlLmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJndW1lbnRzID0gYmFzZUlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID8gYmFzZUlzQXJndW1lbnRzIDogZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpICYmXG4gICAgIXByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodmFsdWUsICdjYWxsZWUnKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGlzQXJndW1lbnRzO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0FyZ3VtZW50cy5qcyIsImltcG9ydCBiYXNlR2V0VGFnIGZyb20gJy4vX2Jhc2VHZXRUYWcuanMnO1xuaW1wb3J0IGlzT2JqZWN0TGlrZSBmcm9tICcuL2lzT2JqZWN0TGlrZS5qcyc7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcmd1bWVudHNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqL1xuZnVuY3Rpb24gYmFzZUlzQXJndW1lbnRzKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFyZ3NUYWc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VJc0FyZ3VtZW50cztcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VJc0FyZ3VtZW50cy5qcyIsImltcG9ydCByb290IGZyb20gJy4vX3Jvb3QuanMnO1xuaW1wb3J0IHN0dWJGYWxzZSBmcm9tICcuL3N0dWJGYWxzZS5qcyc7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlSXNCdWZmZXIgPSBCdWZmZXIgPyBCdWZmZXIuaXNCdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgQnVmZmVyKDIpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBVaW50OEFycmF5KDIpKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0J1ZmZlciA9IG5hdGl2ZUlzQnVmZmVyIHx8IHN0dWJGYWxzZTtcblxuZXhwb3J0IGRlZmF1bHQgaXNCdWZmZXI7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzQnVmZmVyLmpzIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGBmYWxzZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEzLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRpbWVzKDIsIF8uc3R1YkZhbHNlKTtcbiAqIC8vID0+IFtmYWxzZSwgZmFsc2VdXG4gKi9cbmZ1bmN0aW9uIHN0dWJGYWxzZSgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzdHViRmFsc2U7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL3N0dWJGYWxzZS5qcyIsImltcG9ydCBiYXNlSXNUeXBlZEFycmF5IGZyb20gJy4vX2Jhc2VJc1R5cGVkQXJyYXkuanMnO1xuaW1wb3J0IGJhc2VVbmFyeSBmcm9tICcuL19iYXNlVW5hcnkuanMnO1xuaW1wb3J0IG5vZGVVdGlsIGZyb20gJy4vX25vZGVVdGlsLmpzJztcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNUeXBlZEFycmF5ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNUeXBlZEFycmF5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNUeXBlZEFycmF5ID0gbm9kZUlzVHlwZWRBcnJheSA/IGJhc2VVbmFyeShub2RlSXNUeXBlZEFycmF5KSA6IGJhc2VJc1R5cGVkQXJyYXk7XG5cbmV4cG9ydCBkZWZhdWx0IGlzVHlwZWRBcnJheTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNUeXBlZEFycmF5LmpzIiwiaW1wb3J0IGJhc2VHZXRUYWcgZnJvbSAnLi9fYmFzZUdldFRhZy5qcyc7XG5pbXBvcnQgaXNMZW5ndGggZnJvbSAnLi9pc0xlbmd0aC5qcyc7XG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gJy4vaXNPYmplY3RMaWtlLmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xudmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG50eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbnR5cGVkQXJyYXlUYWdzW2FyZ3NUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlUYWddID1cbnR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddID1cbnR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID1cbnR5cGVkQXJyYXlUYWdzW2Vycm9yVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Z1bmNUYWddID1cbnR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPSB0eXBlZEFycmF5VGFnc1tudW1iZXJUYWddID1cbnR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID1cbnR5cGVkQXJyYXlUYWdzW3NldFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzdHJpbmdUYWddID1cbnR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiZcbiAgICBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3NbYmFzZUdldFRhZyh2YWx1ZSldO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlSXNUeXBlZEFycmF5O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUlzVHlwZWRBcnJheS5qcyIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5hcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3Igc3RvcmluZyBtZXRhZGF0YS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbmFyeShmdW5jKSB7XG4gIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZVVuYXJ5O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVVuYXJ5LmpzIiwiaW1wb3J0IGZyZWVHbG9iYWwgZnJvbSAnLi9fZnJlZUdsb2JhbC5qcyc7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBwcm9jZXNzYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZVByb2Nlc3MgPSBtb2R1bGVFeHBvcnRzICYmIGZyZWVHbG9iYWwucHJvY2VzcztcblxuLyoqIFVzZWQgdG8gYWNjZXNzIGZhc3RlciBOb2RlLmpzIGhlbHBlcnMuICovXG52YXIgbm9kZVV0aWwgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgLy8gVXNlIGB1dGlsLnR5cGVzYCBmb3IgTm9kZS5qcyAxMCsuXG4gICAgdmFyIHR5cGVzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlKCd1dGlsJykudHlwZXM7XG5cbiAgICBpZiAodHlwZXMpIHtcbiAgICAgIHJldHVybiB0eXBlcztcbiAgICB9XG5cbiAgICAvLyBMZWdhY3kgYHByb2Nlc3MuYmluZGluZygndXRpbCcpYCBmb3IgTm9kZS5qcyA8IDEwLlxuICAgIHJldHVybiBmcmVlUHJvY2VzcyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKTtcbiAgfSBjYXRjaCAoZSkge31cbn0oKSk7XG5cbmV4cG9ydCBkZWZhdWx0IG5vZGVVdGlsO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbm9kZVV0aWwuanMiLCJpbXBvcnQgaXNPYmplY3QgZnJvbSAnLi9pc09iamVjdC5qcyc7XG5pbXBvcnQgaXNQcm90b3R5cGUgZnJvbSAnLi9faXNQcm90b3R5cGUuanMnO1xuaW1wb3J0IG5hdGl2ZUtleXNJbiBmcm9tICcuL19uYXRpdmVLZXlzSW4uanMnO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNJbmAgd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBiYXNlS2V5c0luKG9iamVjdCkge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5c0luKG9iamVjdCk7XG4gIH1cbiAgdmFyIGlzUHJvdG8gPSBpc1Byb3RvdHlwZShvYmplY3QpLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgIGlmICghKGtleSA9PSAnY29uc3RydWN0b3InICYmIChpc1Byb3RvIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlS2V5c0luO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUtleXNJbi5qcyIsIi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlXG4gKiBbYE9iamVjdC5rZXlzYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gKiBleGNlcHQgdGhhdCBpdCBpbmNsdWRlcyBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBuYXRpdmVLZXlzSW4ob2JqZWN0KSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgaWYgKG9iamVjdCAhPSBudWxsKSB7XG4gICAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBuYXRpdmVLZXlzSW47XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19uYXRpdmVLZXlzSW4uanMiLCJpbXBvcnQgYXBwbHkgZnJvbSAnLi9fYXBwbHkuanMnO1xuaW1wb3J0IGJhc2VSZXN0IGZyb20gJy4vX2Jhc2VSZXN0LmpzJztcbmltcG9ydCBpc0Vycm9yIGZyb20gJy4vaXNFcnJvci5qcyc7XG5cbi8qKlxuICogQXR0ZW1wdHMgdG8gaW52b2tlIGBmdW5jYCwgcmV0dXJuaW5nIGVpdGhlciB0aGUgcmVzdWx0IG9yIHRoZSBjYXVnaHQgZXJyb3JcbiAqIG9iamVjdC4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZSBwcm92aWRlZCB0byBgZnVuY2Agd2hlbiBpdCdzIGludm9rZWQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGF0dGVtcHQuXG4gKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBgZnVuY2AgcmVzdWx0IG9yIGVycm9yIG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogLy8gQXZvaWQgdGhyb3dpbmcgZXJyb3JzIGZvciBpbnZhbGlkIHNlbGVjdG9ycy5cbiAqIHZhciBlbGVtZW50cyA9IF8uYXR0ZW1wdChmdW5jdGlvbihzZWxlY3Rvcikge1xuICogICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7XG4gKiB9LCAnPl8+Jyk7XG4gKlxuICogaWYgKF8uaXNFcnJvcihlbGVtZW50cykpIHtcbiAqICAgZWxlbWVudHMgPSBbXTtcbiAqIH1cbiAqL1xudmFyIGF0dGVtcHQgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCBhcmdzKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHVuZGVmaW5lZCwgYXJncyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gaXNFcnJvcihlKSA/IGUgOiBuZXcgRXJyb3IoZSk7XG4gIH1cbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBhdHRlbXB0O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9hdHRlbXB0LmpzIiwiaW1wb3J0IGJhc2VHZXRUYWcgZnJvbSAnLi9fYmFzZUdldFRhZy5qcyc7XG5pbXBvcnQgZ2V0UHJvdG90eXBlIGZyb20gJy4vX2dldFByb3RvdHlwZS5qcyc7XG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gJy4vaXNPYmplY3RMaWtlLmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xudmFyIG9iamVjdEN0b3JTdHJpbmcgPSBmdW5jVG9TdHJpbmcuY2FsbChPYmplY3QpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGF0IGlzLCBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGVcbiAqIGBPYmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJvdG90eXBlXV1gIG9mIGBudWxsYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuOC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiB9XG4gKlxuICogXy5pc1BsYWluT2JqZWN0KG5ldyBGb28pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KHsgJ3gnOiAwLCAneSc6IDAgfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBiYXNlR2V0VGFnKHZhbHVlKSAhPSBvYmplY3RUYWcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHByb3RvID0gZ2V0UHJvdG90eXBlKHZhbHVlKTtcbiAgaWYgKHByb3RvID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIEN0b3IgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCAnY29uc3RydWN0b3InKSAmJiBwcm90by5jb25zdHJ1Y3RvcjtcbiAgcmV0dXJuIHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiZcbiAgICBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1BsYWluT2JqZWN0O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc1BsYWluT2JqZWN0LmpzIiwiaW1wb3J0IG92ZXJBcmcgZnJvbSAnLi9fb3ZlckFyZy5qcyc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIGdldFByb3RvdHlwZSA9IG92ZXJBcmcoT2JqZWN0LmdldFByb3RvdHlwZU9mLCBPYmplY3QpO1xuXG5leHBvcnQgZGVmYXVsdCBnZXRQcm90b3R5cGU7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19nZXRQcm90b3R5cGUuanMiLCJpbXBvcnQgYXJyYXlNYXAgZnJvbSAnLi9fYXJyYXlNYXAuanMnO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnZhbHVlc2AgYW5kIGBfLnZhbHVlc0luYCB3aGljaCBjcmVhdGVzIGFuXG4gKiBhcnJheSBvZiBgb2JqZWN0YCBwcm9wZXJ0eSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvcGVydHkgbmFtZXNcbiAqIG9mIGBwcm9wc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBnZXQgdmFsdWVzIGZvci5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gYmFzZVZhbHVlcyhvYmplY3QsIHByb3BzKSB7XG4gIHJldHVybiBhcnJheU1hcChwcm9wcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgcmV0dXJuIG9iamVjdFtrZXldO1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZVZhbHVlcztcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VWYWx1ZXMuanMiLCJpbXBvcnQgZXEgZnJvbSAnLi9lcS5qcyc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVXNlZCBieSBgXy5kZWZhdWx0c2AgdG8gY3VzdG9taXplIGl0cyBgXy5hc3NpZ25JbmAgdXNlIHRvIGFzc2lnbiBwcm9wZXJ0aWVzXG4gKiBvZiBzb3VyY2Ugb2JqZWN0cyB0byB0aGUgZGVzdGluYXRpb24gb2JqZWN0IGZvciBhbGwgZGVzdGluYXRpb24gcHJvcGVydGllc1xuICogdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IG9ialZhbHVlIFRoZSBkZXN0aW5hdGlvbiB2YWx1ZS5cbiAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHNvdXJjZSB2YWx1ZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgcGFyZW50IG9iamVjdCBvZiBgb2JqVmFsdWVgLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gY3VzdG9tRGVmYXVsdHNBc3NpZ25JbihvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gIGlmIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAoZXEob2JqVmFsdWUsIG9iamVjdFByb3RvW2tleV0pICYmICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpIHtcbiAgICByZXR1cm4gc3JjVmFsdWU7XG4gIH1cbiAgcmV0dXJuIG9ialZhbHVlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjdXN0b21EZWZhdWx0c0Fzc2lnbkluO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY3VzdG9tRGVmYXVsdHNBc3NpZ25Jbi5qcyIsIi8qKiBVc2VkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIGZvciBpbmNsdXNpb24gaW4gY29tcGlsZWQgc3RyaW5nIGxpdGVyYWxzLiAqL1xudmFyIHN0cmluZ0VzY2FwZXMgPSB7XG4gICdcXFxcJzogJ1xcXFwnLFxuICBcIidcIjogXCInXCIsXG4gICdcXG4nOiAnbicsXG4gICdcXHInOiAncicsXG4gICdcXHUyMDI4JzogJ3UyMDI4JyxcbiAgJ1xcdTIwMjknOiAndTIwMjknXG59O1xuXG4vKipcbiAqIFVzZWQgYnkgYF8udGVtcGxhdGVgIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIGZvciBpbmNsdXNpb24gaW4gY29tcGlsZWQgc3RyaW5nIGxpdGVyYWxzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gY2hyIFRoZSBtYXRjaGVkIGNoYXJhY3RlciB0byBlc2NhcGUuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIGNoYXJhY3Rlci5cbiAqL1xuZnVuY3Rpb24gZXNjYXBlU3RyaW5nQ2hhcihjaHIpIHtcbiAgcmV0dXJuICdcXFxcJyArIHN0cmluZ0VzY2FwZXNbY2hyXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZXNjYXBlU3RyaW5nQ2hhcjtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2VzY2FwZVN0cmluZ0NoYXIuanMiLCJpbXBvcnQgYXJyYXlMaWtlS2V5cyBmcm9tICcuL19hcnJheUxpa2VLZXlzLmpzJztcbmltcG9ydCBiYXNlS2V5cyBmcm9tICcuL19iYXNlS2V5cy5qcyc7XG5pbXBvcnQgaXNBcnJheUxpa2UgZnJvbSAnLi9pc0FycmF5TGlrZS5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuIFNlZSB0aGVcbiAqIFtFUyBzcGVjXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8ua2V5cygnaGknKTtcbiAqIC8vID0+IFsnMCcsICcxJ11cbiAqL1xuZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCkgOiBiYXNlS2V5cyhvYmplY3QpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBrZXlzO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9rZXlzLmpzIiwiaW1wb3J0IGlzUHJvdG90eXBlIGZyb20gJy4vX2lzUHJvdG90eXBlLmpzJztcbmltcG9ydCBuYXRpdmVLZXlzIGZyb20gJy4vX25hdGl2ZUtleXMuanMnO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNgIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXMob2JqZWN0KSB7XG4gIGlmICghaXNQcm90b3R5cGUob2JqZWN0KSkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzKG9iamVjdCk7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYga2V5ICE9ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VLZXlzO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUtleXMuanMiLCJpbXBvcnQgb3ZlckFyZyBmcm9tICcuL19vdmVyQXJnLmpzJztcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUtleXMgPSBvdmVyQXJnKE9iamVjdC5rZXlzLCBPYmplY3QpO1xuXG5leHBvcnQgZGVmYXVsdCBuYXRpdmVLZXlzO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbmF0aXZlS2V5cy5qcyIsImltcG9ydCBlc2NhcGUgZnJvbSAnLi9lc2NhcGUuanMnO1xuaW1wb3J0IHJlRXNjYXBlIGZyb20gJy4vX3JlRXNjYXBlLmpzJztcbmltcG9ydCByZUV2YWx1YXRlIGZyb20gJy4vX3JlRXZhbHVhdGUuanMnO1xuaW1wb3J0IHJlSW50ZXJwb2xhdGUgZnJvbSAnLi9fcmVJbnRlcnBvbGF0ZS5qcyc7XG5cbi8qKlxuICogQnkgZGVmYXVsdCwgdGhlIHRlbXBsYXRlIGRlbGltaXRlcnMgdXNlZCBieSBsb2Rhc2ggYXJlIGxpa2UgdGhvc2UgaW5cbiAqIGVtYmVkZGVkIFJ1YnkgKEVSQikgYXMgd2VsbCBhcyBFUzIwMTUgdGVtcGxhdGUgc3RyaW5ncy4gQ2hhbmdlIHRoZVxuICogZm9sbG93aW5nIHRlbXBsYXRlIHNldHRpbmdzIHRvIHVzZSBhbHRlcm5hdGl2ZSBkZWxpbWl0ZXJzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAdHlwZSB7T2JqZWN0fVxuICovXG52YXIgdGVtcGxhdGVTZXR0aW5ncyA9IHtcblxuICAvKipcbiAgICogVXNlZCB0byBkZXRlY3QgYGRhdGFgIHByb3BlcnR5IHZhbHVlcyB0byBiZSBIVE1MLWVzY2FwZWQuXG4gICAqXG4gICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICogQHR5cGUge1JlZ0V4cH1cbiAgICovXG4gICdlc2NhcGUnOiByZUVzY2FwZSxcblxuICAvKipcbiAgICogVXNlZCB0byBkZXRlY3QgY29kZSB0byBiZSBldmFsdWF0ZWQuXG4gICAqXG4gICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICogQHR5cGUge1JlZ0V4cH1cbiAgICovXG4gICdldmFsdWF0ZSc6IHJlRXZhbHVhdGUsXG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gZGV0ZWN0IGBkYXRhYCBwcm9wZXJ0eSB2YWx1ZXMgdG8gaW5qZWN0LlxuICAgKlxuICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAqIEB0eXBlIHtSZWdFeHB9XG4gICAqL1xuICAnaW50ZXJwb2xhdGUnOiByZUludGVycG9sYXRlLFxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHJlZmVyZW5jZSB0aGUgZGF0YSBvYmplY3QgaW4gdGhlIHRlbXBsYXRlIHRleHQuXG4gICAqXG4gICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gICd2YXJpYWJsZSc6ICcnLFxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGltcG9ydCB2YXJpYWJsZXMgaW50byB0aGUgY29tcGlsZWQgdGVtcGxhdGUuXG4gICAqXG4gICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gICdpbXBvcnRzJzoge1xuXG4gICAgLyoqXG4gICAgICogQSByZWZlcmVuY2UgdG8gdGhlIGBsb2Rhc2hgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5ncy5pbXBvcnRzXG4gICAgICogQHR5cGUge0Z1bmN0aW9ufVxuICAgICAqL1xuICAgICdfJzogeyAnZXNjYXBlJzogZXNjYXBlIH1cbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgdGVtcGxhdGVTZXR0aW5ncztcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvdGVtcGxhdGVTZXR0aW5ncy5qcyIsImltcG9ydCBlc2NhcGVIdG1sQ2hhciBmcm9tICcuL19lc2NhcGVIdG1sQ2hhci5qcyc7XG5pbXBvcnQgdG9TdHJpbmcgZnJvbSAnLi90b1N0cmluZy5qcyc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIEhUTUwgZW50aXRpZXMgYW5kIEhUTUwgY2hhcmFjdGVycy4gKi9cbnZhciByZVVuZXNjYXBlZEh0bWwgPSAvWyY8PlwiJ10vZyxcbiAgICByZUhhc1VuZXNjYXBlZEh0bWwgPSBSZWdFeHAocmVVbmVzY2FwZWRIdG1sLnNvdXJjZSk7XG5cbi8qKlxuICogQ29udmVydHMgdGhlIGNoYXJhY3RlcnMgXCImXCIsIFwiPFwiLCBcIj5cIiwgJ1wiJywgYW5kIFwiJ1wiIGluIGBzdHJpbmdgIHRvIHRoZWlyXG4gKiBjb3JyZXNwb25kaW5nIEhUTUwgZW50aXRpZXMuXG4gKlxuICogKipOb3RlOioqIE5vIG90aGVyIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQuIFRvIGVzY2FwZSBhZGRpdGlvbmFsXG4gKiBjaGFyYWN0ZXJzIHVzZSBhIHRoaXJkLXBhcnR5IGxpYnJhcnkgbGlrZSBbX2hlX10oaHR0cHM6Ly9tdGhzLmJlL2hlKS5cbiAqXG4gKiBUaG91Z2ggdGhlIFwiPlwiIGNoYXJhY3RlciBpcyBlc2NhcGVkIGZvciBzeW1tZXRyeSwgY2hhcmFjdGVycyBsaWtlXG4gKiBcIj5cIiBhbmQgXCIvXCIgZG9uJ3QgbmVlZCBlc2NhcGluZyBpbiBIVE1MIGFuZCBoYXZlIG5vIHNwZWNpYWwgbWVhbmluZ1xuICogdW5sZXNzIHRoZXkncmUgcGFydCBvZiBhIHRhZyBvciB1bnF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUuIFNlZVxuICogW01hdGhpYXMgQnluZW5zJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2FtYmlndW91cy1hbXBlcnNhbmRzKVxuICogKHVuZGVyIFwic2VtaS1yZWxhdGVkIGZ1biBmYWN0XCIpIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogV2hlbiB3b3JraW5nIHdpdGggSFRNTCB5b3Ugc2hvdWxkIGFsd2F5c1xuICogW3F1b3RlIGF0dHJpYnV0ZSB2YWx1ZXNdKGh0dHA6Ly93b25rby5jb20vcG9zdC9odG1sLWVzY2FwaW5nKSB0byByZWR1Y2VcbiAqIFhTUyB2ZWN0b3JzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBTdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGVzY2FwZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgc3RyaW5nLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmVzY2FwZSgnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnKTtcbiAqIC8vID0+ICdmcmVkLCBiYXJuZXksICZhbXA7IHBlYmJsZXMnXG4gKi9cbmZ1bmN0aW9uIGVzY2FwZShzdHJpbmcpIHtcbiAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgcmV0dXJuIChzdHJpbmcgJiYgcmVIYXNVbmVzY2FwZWRIdG1sLnRlc3Qoc3RyaW5nKSlcbiAgICA/IHN0cmluZy5yZXBsYWNlKHJlVW5lc2NhcGVkSHRtbCwgZXNjYXBlSHRtbENoYXIpXG4gICAgOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGVzY2FwZTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvZXNjYXBlLmpzIiwiaW1wb3J0IGJhc2VQcm9wZXJ0eU9mIGZyb20gJy4vX2Jhc2VQcm9wZXJ0eU9mLmpzJztcblxuLyoqIFVzZWQgdG8gbWFwIGNoYXJhY3RlcnMgdG8gSFRNTCBlbnRpdGllcy4gKi9cbnZhciBodG1sRXNjYXBlcyA9IHtcbiAgJyYnOiAnJmFtcDsnLFxuICAnPCc6ICcmbHQ7JyxcbiAgJz4nOiAnJmd0OycsXG4gICdcIic6ICcmcXVvdDsnLFxuICBcIidcIjogJyYjMzk7J1xufTtcblxuLyoqXG4gKiBVc2VkIGJ5IGBfLmVzY2FwZWAgdG8gY29udmVydCBjaGFyYWN0ZXJzIHRvIEhUTUwgZW50aXRpZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBjaHIgVGhlIG1hdGNoZWQgY2hhcmFjdGVyIHRvIGVzY2FwZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgY2hhcmFjdGVyLlxuICovXG52YXIgZXNjYXBlSHRtbENoYXIgPSBiYXNlUHJvcGVydHlPZihodG1sRXNjYXBlcyk7XG5cbmV4cG9ydCBkZWZhdWx0IGVzY2FwZUh0bWxDaGFyO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZXNjYXBlSHRtbENoYXIuanMiLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnByb3BlcnR5T2ZgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VQcm9wZXJ0eU9mKG9iamVjdCkge1xuICByZXR1cm4gZnVuY3Rpb24oa2V5KSB7XG4gICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VQcm9wZXJ0eU9mO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVByb3BlcnR5T2YuanMiLCJpbXBvcnQgU3ltYm9sIGZyb20gJy4vX1N5bWJvbC5qcyc7XG5pbXBvcnQgYXJyYXlNYXAgZnJvbSAnLi9fYXJyYXlNYXAuanMnO1xuaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pc0FycmF5LmpzJztcbmltcG9ydCBpc1N5bWJvbCBmcm9tICcuL2lzU3ltYm9sLmpzJztcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1N0cmluZ2Agd2hpY2ggZG9lc24ndCBjb252ZXJ0IG51bGxpc2hcbiAqIHZhbHVlcyB0byBlbXB0eSBzdHJpbmdzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5ncyB0byBhdm9pZCBhIHBlcmZvcm1hbmNlIGhpdCBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAvLyBSZWN1cnNpdmVseSBjb252ZXJ0IHZhbHVlcyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgYmFzZVRvU3RyaW5nKSArICcnO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gc3ltYm9sVG9TdHJpbmcgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZVRvU3RyaW5nO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVRvU3RyaW5nLmpzIiwiaW1wb3J0IGJhc2VHZXRUYWcgZnJvbSAnLi9fYmFzZUdldFRhZy5qcyc7XG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gJy4vaXNPYmplY3RMaWtlLmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3ltYm9sYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3ltYm9sLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTeW1ib2woU3ltYm9sLml0ZXJhdG9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3ltYm9sKCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N5bWJvbCcgfHxcbiAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzeW1ib2xUYWcpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1N5bWJvbDtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNTeW1ib2wuanMiLCIvKiogVXNlZCB0byBtYXRjaCB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLiAqL1xudmFyIHJlRXNjYXBlID0gLzwlLShbXFxzXFxTXSs/KSU+L2c7XG5cbmV4cG9ydCBkZWZhdWx0IHJlRXNjYXBlO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fcmVFc2NhcGUuanMiLCIvKiogVXNlZCB0byBtYXRjaCB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLiAqL1xudmFyIHJlRXZhbHVhdGUgPSAvPCUoW1xcc1xcU10rPyklPi9nO1xuXG5leHBvcnQgZGVmYXVsdCByZUV2YWx1YXRlO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fcmVFdmFsdWF0ZS5qcyIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBiYXNpcy1hZ2dyaWQtY29tcG9uZW50cyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmltcG9ydCBJbWFnZVJlbmRlcmVyIGZyb20gJy4vSW1hZ2VSZW5kZXJlcidcblxuZXhwb3J0IGRlZmF1bHQgSW1hZ2VSZW5kZXJlclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL0ltYWdlUmVuZGVyZXIvaW5kZXguanMiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmFzaXMtYWdncmlkLWNvbXBvbmVudHMgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgVGVtcGxhdGVSZW5kZXJlciBmcm9tICcuLi9UZW1wbGF0ZVJlbmRlcmVyJ1xuXG4vKipcbiAqIE51bWJlcnMgRWRpdG9yXG4gKlxuICogSGFuZGxlIG51bWJlciB2YWx1ZXMgRWRpdGluZ1xuICpcbiAqIHwgTmFtZSAgICAgICAgICAgICAgICAgIFx0fCBEZWZhdWx0ICAgICBcdHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx0fFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cdHw6LS0tLS0tLS0tLS0tLTp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8ICoqaW1hZ2VSZW5kZXJlcldpZHRoKiogICB8IDI4cHggICAgfCBpbWFnZSB3aWR0aFxuICogfCAqKmltYWdlUmVuZGVyZXJIZWlnaHQqKiAgIHwgMjhweCAgICB8IGltYWdlIGhlaWdodFxuICogfCAqKmltYWdlUmVuZGVyZXJMaXN0KiogICAgICAgfCB7fSAgXHR8IGEgbGlzdCBvZiB3aGljaCBtYXBzIGltYWdlcyB3aXRoIGNlbGwgdmFsdWVzIGFzIEpTT04gb3IgcGxhaW4gSlMgb2JqZWN0XG4gKlxuICogQGF1dGhvciBIeXlhbiBBYm8gRmFraGVyIDxoYWJvZmFraGVyQGJhc2lzLmNvbT5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vbG9kYXNoLmNvbS9kb2NzLzQuMTcuMTUjdGVtcGxhdGVcbiAqL1xuY2xhc3MgSW1hZ2VSZW5kZXJlciBleHRlbmRzIFRlbXBsYXRlUmVuZGVyZXIge1xuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIHJlZnJlc2gocGFyYW1zLCBpc0luaXQpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtcy52YWx1ZVxuICAgIGNvbnN0IGltYWdlV2lkdGggPSB0aGlzLmdldE9wdGlvbignaW1hZ2VSZW5kZXJlcldpZHRoJywgcGFyYW1zLCAnMjhweCcpXG4gICAgY29uc3QgaW1hZ2VIZWlnaHQgPSB0aGlzLmdldE9wdGlvbignaW1hZ2VSZW5kZXJlckhlaWdodCcsIHBhcmFtcywgJzI4cHgnKVxuICAgIGxldCBpbWFnZUxpc3QgPSB0aGlzLmdldE9wdGlvbignaW1hZ2VSZW5kZXJlckxpc3QnLCBwYXJhbXMpXG5cbiAgICB0cnkge1xuICAgICAgaW1hZ2VMaXN0ID0gSlNPTi5wYXJzZShpbWFnZUxpc3QpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaW1hZ2VMaXN0ID0gaW1hZ2VMaXN0IHx8IHt9XG4gICAgfVxuXG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zICovXG4gICAgaWYgKGltYWdlTGlzdCAmJiBpbWFnZUxpc3QuaGFzT3duUHJvcGVydHkodmFsdWUpKSB7XG4gICAgICBwYXJhbXMucmVuZGVyVGVtcGxhdGUgPSAvKmh0bWwqLyBgXG4gICAgICAgIDxpbWcgXG4gICAgICAgICAgc3JjPVwiJHtpbWFnZUxpc3RbcGFyYW1zLnZhbHVlXX1cIiBcbiAgICAgICAgICB3aWR0aD1cIiR7aW1hZ2VXaWR0aH1cIlxuICAgICAgICAgIGhlaWdodD1cIiR7aW1hZ2VIZWlnaHR9XCIgIFxuICAgICAgICAvPlxuICAgICAgYFxuICAgIH0gZWxzZSB7XG4gICAgICBwYXJhbXMucmVuZGVyVGVtcGxhdGUgPSB2YWx1ZVxuICAgIH1cblxuICAgIHJldHVybiBzdXBlci5yZWZyZXNoKHBhcmFtcywgaXNJbml0KVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEltYWdlUmVuZGVyZXJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9JbWFnZVJlbmRlcmVyL0ltYWdlUmVuZGVyZXIuanMiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmFzaXMtYWdncmlkLWNvbXBvbmVudHMgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgRGF0ZVRpbWVGaWx0ZXIgZnJvbSAnLi9EYXRlVGltZUZpbHRlcidcblxuZXhwb3J0IGRlZmF1bHQgRGF0ZVRpbWVGaWx0ZXJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9EYXRlVGltZUZpbHRlci9pbmRleC5qcyIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBiYXNpcy1hZ2dyaWQtY29tcG9uZW50cyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmltcG9ydCB7IGF1dG9iaW5kLCBvdmVycmlkZSwgcmVhZG9ubHkgfSBmcm9tICdjb3JlLWRlY29yYXRvcnMnXG5pbXBvcnQgdXRjVG9ab25lZFRpbWUgZnJvbSAnZGF0ZS1mbnMtdHovdXRjVG9ab25lZFRpbWUnXG5pbXBvcnQgeyB3aXRoRXZlbnRzTWl4aW4gfSBmcm9tICcuLi9FdmVudHNNaXhpbidcbmltcG9ydCBEYXRlVGltZUlucHV0IGZyb20gJy4uL0RhdGVUaW1lSW5wdXQnXG5pbXBvcnQgQ29tcG9uZW50IGZyb20gJy4uL0NvbXBvbmVudCdcblxuY29uc3QgVE9LRU5TID0ge1xuICBUT0tFTl9FUVVBTDogJ2VxdWFscycsXG4gIFRPS0VOX05PVF9FUVVBTDogJ25vdEVxdWFsJyxcbiAgVE9LRU5fTEVTUzogJ2xlc3NUaGFuJyxcbiAgVE9LRU5fR1JFQVRFUjogJ2dyZWF0ZXJUaGFuJyxcbiAgVE9LRU5fUkFOR0U6ICdpblJhbmdlJyxcbiAgVE9LRU5fQU5EOiAnQU5EJyxcbiAgVE9LRU5fT1I6ICdPUicsXG59XG5cbkB3aXRoRXZlbnRzTWl4aW5cbmNsYXNzIENvbmRpdGlvblBhbmVsIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIENvbnN0YW50IHdoaWNoIGRlc2NyaWJlcyB0aGUgZXZlbnQgbmFtZSB0aGF0IHdpbGwgYmUgZmlyZWQgd2hlbiB0aGUgb3B0aW9uXG4gICAqIHN0YXRlIGlzIGNoYW5nZWRcbiAgICpcbiAgICogQHR5cGUge1N0cmluZ31cbiAgICovXG4gIEByZWFkb25seVxuICBzdGF0aWMgT05fQ09ORElUSU9OX0NIQU5HRUQgPSAnQ29uZGl0aW9uUGFuZWwuT05fQ09ORElUSU9OX0NIQU5HRUQnXG4gIC8qKlxuICAgKiBUaGUgb3B0aW9uIHN0YXRlXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBAcmVhZG9ubHlcbiAgc3RhdGUgPSB7XG4gICAgdHlwZTogVE9LRU5TLlRPS0VOX0VRVUFMLFxuICAgIGZpbHRlcjogbnVsbCxcbiAgICBmaWx0ZXJUbzogbnVsbCxcbiAgfVxuXG4gIC8qKlxuICAgKiBAdHlwZSB7RGF0ZVRpbWVJbnB1dH1cbiAgICovXG4gIF9maWx0ZXJUaW1lSW5wdXQgPSBuZXcgRGF0ZVRpbWVJbnB1dCgpXG5cbiAgLyoqXG4gICAqIEB0eXBlIHtEYXRlVGltZUlucHV0fVxuICAgKi9cbiAgX2ZpbHRlclRvRGF0ZVRpbWVJbnB1dCA9IG5ldyBEYXRlVGltZUlucHV0KClcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgZW5hYmxlZCBmaWx0ZXIgdHlwZXNcbiAgICpcbiAgICogQHR5cGUge0FycmF5fVxuICAgKi9cbiAgX2ZpbHRlck9wdGlvbnMgPSBbXVxuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBlbmFibGVkIGZpbHRlciB0eXBlXG4gICAqXG4gICAqIEB0eXBlIHtOdW1iZXJ9XG4gICAqL1xuICBfZGVmYXVsdE9wdGlvbiA9IC0xXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgQG92ZXJyaWRlXG4gIGluaXQocGFyYW1zKSB7XG4gICAgY29uc3QgdHJhbnNsYXRlID0gcGFyYW1zLmFwaS5ncmlkT3B0aW9uc1dyYXBwZXIuZ2V0TG9jYWxlVGV4dEZ1bmMoKVxuXG4gICAgdGhpcy5fZmlsdGVyT3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9uKCdmaWx0ZXJPcHRpb25zJywgcGFyYW1zLCBbXG4gICAgICBUT0tFTlMuVE9LRU5fRVFVQUwsXG4gICAgICBUT0tFTlMuVE9LRU5fTk9UX0VRVUFMLFxuICAgICAgVE9LRU5TLlRPS0VOX0xFU1MsXG4gICAgICBUT0tFTlMuVE9LRU5fR1JFQVRFUixcbiAgICAgIFRPS0VOUy5UT0tFTl9SQU5HRSxcbiAgICBdKVxuXG4gICAgdGhpcy5fZGVmYXVsdE9wdGlvbiA9IHRoaXMuZ2V0T3B0aW9uKFxuICAgICAgJ2RlZmF1bHRPcHRpb24nLFxuICAgICAgcGFyYW1zLFxuICAgICAgdGhpcy5fZmlsdGVyT3B0aW9ucy5pbmRleE9mKFRPS0VOUy5UT0tFTl9FUVVBTCkgPiAtMVxuICAgICAgICA/IFRPS0VOUy5UT0tFTl9FUVVBTFxuICAgICAgICA6IHRoaXMuX2ZpbHRlck9wdGlvbnNbMF1cbiAgICApXG5cbiAgICB0aGlzLnN0YXRlLnR5cGUgPSB0aGlzLl9kZWZhdWx0T3B0aW9uXG5cbiAgICBjb25zdCBvcHRpb25zVHJhbnNsYXRpb25zID0ge1xuICAgICAgW1RPS0VOUy5UT0tFTl9FUVVBTF06IHRyYW5zbGF0ZShUT0tFTlMuVE9LRU5fRVFVQUwsICdFcXVhbHMnKSxcbiAgICAgIFtUT0tFTlMuVE9LRU5fTk9UX0VRVUFMXTogdHJhbnNsYXRlKFRPS0VOUy5UT0tFTl9FUVVBTCwgJ05vdCBlcXVhbCcpLFxuICAgICAgW1RPS0VOUy5UT0tFTl9MRVNTXTogdHJhbnNsYXRlKFRPS0VOUy5UT0tFTl9MRVNTLCAnTGVzcyB0aGFuJyksXG4gICAgICBbVE9LRU5TLlRPS0VOX0dSRUFURVJdOiB0cmFuc2xhdGUoVE9LRU5TLlRPS0VOX0dSRUFURVIsICdHcmVhdGVyIHRoYW4nKSxcbiAgICAgIFtUT0tFTlMuVE9LRU5fUkFOR0VdOiB0cmFuc2xhdGUoVE9LRU5TLlRPS0VOX1JBTkdFLCAnSW4gcmFuZ2UnKSxcbiAgICB9XG5cbiAgICB0aGlzLl9ndWkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAgIHRoaXMuX2d1aS5jbGFzc05hbWUgPSAnYWctZmlsdGVyLWJvZHktd3JhcHBlcidcbiAgICB0aGlzLl9ndWkuaW5uZXJIVE1MID0gLyogaHRtbCAqLyBgXG4gICAgICA8c2VsZWN0IGNsYXNzPVwiYWctZmlsdGVyLXNlbGVjdFwiICAke1xuICAgICAgICB0aGlzLl9maWx0ZXJPcHRpb25zLmxlbmd0aCA9PT0gMSA/ICdkaXNhYmxlZCcgOiAnJ1xuICAgICAgfT5cbiAgICAgICAgJHt0aGlzLl9maWx0ZXJPcHRpb25zLm1hcChcbiAgICAgICAgICBvcHRpb24gPT4gLyogaHRtbCAqLyBgXG4gICAgICAgICAgPG9wdGlvbiBcbiAgICAgICAgICAgIHZhbHVlPVwiJHtvcHRpb259XCIgXG4gICAgICAgICAgICAke29wdGlvbiA9PT0gdGhpcy5fZGVmYXVsdE9wdGlvbiA/ICdzZWxlY3RlZCcgOiAnJ31cbiAgICAgICAgICA+XG4gICAgICAgICAgICAgICR7b3B0aW9uc1RyYW5zbGF0aW9uc1tvcHRpb25dfVxuICAgICAgICAgIDwvb3B0aW9uPmBcbiAgICAgICAgKX1cbiAgICAgIDwvc2VsZWN0PlxuICAgICAgPGRpdiBjbGFzcz1cImFnLWZpbHRlci1ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZy1maWx0ZXItZGF0ZS1mcm9tXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWctZmlsdGVyLWRhdGUtdG8gYWctaGlkZGVuXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYFxuXG4gICAgdGhpcy5fZmlsdGVyVGltZUlucHV0LmluaXQocGFyYW1zKVxuICAgIHRoaXMuX2ZpbHRlclRpbWVJbnB1dC5vbihEYXRlVGltZUlucHV0Lk9OX0RBVEVfQ0hBTkdFRCwgc2VsZWN0ZWREYXRlID0+IHtcbiAgICAgIHRoaXMuc3RhdGUuZmlsdGVyID0gc2VsZWN0ZWREYXRlXG4gICAgICB0aGlzLm5vdGlmeShDb25kaXRpb25QYW5lbC5PTl9DT05ESVRJT05fQ0hBTkdFRCwgdGhpcy5zdGF0ZSlcbiAgICB9KVxuXG4gICAgdGhpcy5fZmlsdGVyVG9EYXRlVGltZUlucHV0LmluaXQocGFyYW1zKVxuICAgIHRoaXMuX2ZpbHRlclRvRGF0ZVRpbWVJbnB1dC5vbihcbiAgICAgIERhdGVUaW1lSW5wdXQuT05fREFURV9DSEFOR0VELFxuICAgICAgc2VsZWN0ZWREYXRlID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZS5maWx0ZXJUbyA9IHNlbGVjdGVkRGF0ZVxuICAgICAgICB0aGlzLm5vdGlmeShDb25kaXRpb25QYW5lbC5PTl9DT05ESVRJT05fQ0hBTkdFRCwgdGhpcy5zdGF0ZSlcbiAgICAgIH1cbiAgICApXG5cbiAgICB0aGlzLl9ndWlcbiAgICAgIC5xdWVyeVNlbGVjdG9yKCcuYWctZmlsdGVyLWRhdGUtZnJvbScpXG4gICAgICAuYXBwZW5kQ2hpbGQodGhpcy5fZmlsdGVyVGltZUlucHV0LmdldEd1aSgpKVxuICAgIHRoaXMuX2d1aVxuICAgICAgLnF1ZXJ5U2VsZWN0b3IoJy5hZy1maWx0ZXItZGF0ZS10bycpXG4gICAgICAuYXBwZW5kQ2hpbGQodGhpcy5fZmlsdGVyVG9EYXRlVGltZUlucHV0LmdldEd1aSgpKVxuXG4gICAgY29uc3Qgc2VsZWN0ID0gdGhpcy5fZ3VpLnF1ZXJ5U2VsZWN0b3IoJy5hZy1maWx0ZXItc2VsZWN0JylcbiAgICBzZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy5fb25UeXBlQ2hhbmdlKVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh0aGlzLl9zdGF0ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgQG92ZXJyaWRlXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5vZmYoQ29uZGl0aW9uUGFuZWwuT05fQ09ORElUSU9OX0NIQU5HRUQpXG4gICAgdGhpcy5fZmlsdGVyVGltZUlucHV0LmRlc3Ryb3koKVxuICAgIHRoaXMuX2ZpbHRlclRvRGF0ZVRpbWVJbnB1dC5kZXN0cm95KClcbiAgICB0aGlzLl9ndWlcbiAgICAgIC5xdWVyeVNlbGVjdG9yKCcuYWctZmlsdGVyLXNlbGVjdCcpXG4gICAgICAucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy5fb25UeXBlQ2hhbmdlKVxuICAgIHRoaXMucmVzZXQoKVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoZSBzdGF0ZVxuICAgKi9cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5zdGF0ZS5maWx0ZXIgPSBudWxsXG4gICAgdGhpcy5zdGF0ZS5maWx0ZXJUbyA9IG51bGxcbiAgICB0aGlzLl9maWx0ZXJUaW1lSW5wdXQucmVzZXQoKVxuICAgIHRoaXMuX2ZpbHRlclRvRGF0ZVRpbWVJbnB1dC5yZXNldCgpXG5cbiAgICB0aGlzLm5vdGlmeShDb25kaXRpb25QYW5lbC5PTl9DT05ESVRJT05fQ0hBTkdFRCwgdGhpcy5zdGF0ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGNvbmRpdGlvbiBzdGF0ZVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gc3RhdGVcbiAgICovXG4gIHNldFN0YXRlKHN0YXRlKSB7XG4gICAgc3RhdGUgPSBzdGF0ZSB8fCB7fVxuICAgIHRoaXMuc3RhdGUuZmlsdGVyID0gc3RhdGUuZmlsdGVyIHx8IG51bGxcbiAgICB0aGlzLnN0YXRlLmZpbHRlclRvID0gc3RhdGUuZmlsdGVyVG8gfHwgbnVsbFxuICAgIHRoaXMuc3RhdGUudHlwZSA9IHN0YXRlLnR5cGUgfHwgdGhpcy5fZGVmYXVsdE9wdGlvblxuXG4gICAgY29uc3QgZ3VpID0gdGhpcy5fZ3VpXG4gICAgY29uc3QgZmlsdGVyT3B0aW9ucyA9IHRoaXMuX2ZpbHRlck9wdGlvbnNcbiAgICBjb25zdCBzZWxlY3RFbCA9IGd1aS5xdWVyeVNlbGVjdG9yKCcuYWctZmlsdGVyLXNlbGVjdCcpXG4gICAgY29uc3QgZmlsdGVySW5wdXQgPSB0aGlzLl9maWx0ZXJUaW1lSW5wdXRcbiAgICBjb25zdCBmaWx0ZXJUb0lucHV0ID0gdGhpcy5fZmlsdGVyVG9EYXRlVGltZUlucHV0XG5cbiAgICBzZWxlY3RFbC5zZWxlY3RlZEluZGV4ID0gZmlsdGVyT3B0aW9ucy5pbmRleE9mKHRoaXMuc3RhdGUudHlwZSlcbiAgICBmaWx0ZXJJbnB1dC5zZXREYXRlKHRoaXMuc3RhdGUuZmlsdGVyKVxuICAgIGZpbHRlclRvSW5wdXQuc2V0RGF0ZSh0aGlzLnN0YXRlLmZpbHRlclRvKVxuXG4gICAgLy8gd2UgZmlyZSBvbiBjaGFuZ2UgZXZlbnQgaW4gY2FzZSB0aGUgZmlsdGVyIG9wdGlvbnMgY29udGFpblxuICAgIC8vIG9uZSBvcHRpb24gd2hpY2ggaXMgaW4gUmFuZ2UgXCJpblJhbmdlXCJcbiAgICBpZiAoJ2NyZWF0ZUV2ZW50JyBpbiBkb2N1bWVudCkge1xuICAgICAgY29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0hUTUxFdmVudHMnKVxuICAgICAgZXZ0LmluaXRFdmVudCgnY2hhbmdlJywgZmFsc2UsIHRydWUpXG4gICAgICBzZWxlY3RFbC5kaXNwYXRjaEV2ZW50KGV2dClcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZWN0RWwuZmlyZUV2ZW50KCdvbmNoYW5nZScpXG4gICAgfVxuXG4gICAgdGhpcy5ub3RpZnkoQ29uZGl0aW9uUGFuZWwuT05fQ09ORElUSU9OX0NIQU5HRUQsIHRoaXMuc3RhdGUpXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBzdGF0ZSB3aXRoIHRoZSBzZWxlY3RlZCB0eXBlXG4gICAqXG4gICAqIEBwYXJhbSB7RXZlbnR9IGVcbiAgICovXG4gIEBhdXRvYmluZFxuICBfb25UeXBlQ2hhbmdlKGUpIHtcbiAgICBjb25zdCBlbCA9IGUudGFyZ2V0XG4gICAgY29uc3QgZmlsdGVyRGF0ZVRvID0gdGhpcy5fZ3VpLnF1ZXJ5U2VsZWN0b3IoJy5hZy1maWx0ZXItZGF0ZS10bycpXG5cbiAgICB0aGlzLnN0YXRlLnR5cGUgPSBlbC5vcHRpb25zW2VsLnNlbGVjdGVkSW5kZXhdLnZhbHVlXG5cbiAgICBpZiAodGhpcy5zdGF0ZS50eXBlID09PSBUT0tFTlMuVE9LRU5fUkFOR0UpIHtcbiAgICAgIGZpbHRlckRhdGVUby5jbGFzc0xpc3QucmVtb3ZlKCdhZy1oaWRkZW4nKVxuICAgIH0gZWxzZSB7XG4gICAgICBmaWx0ZXJEYXRlVG8uY2xhc3NMaXN0LmFkZCgnYWctaGlkZGVuJylcbiAgICB9XG5cbiAgICB0aGlzLm5vdGlmeShDb25kaXRpb25QYW5lbC5PTl9DT05ESVRJT05fQ0hBTkdFRCwgdGhpcy5zdGF0ZSlcbiAgfVxufVxuXG5Ad2l0aEV2ZW50c01peGluXG5jbGFzcyBKb2luQ29uZGl0aW9uUGFuZWwgZXh0ZW5kcyBDb21wb25lbnQge1xuICAvKipcbiAgICogQ29uc3RhbnQgd2hpY2ggZGVzY3JpYmVzIHRoZSBldmVudCBuYW1lIHRoYXQgd2lsbCBiZSBmaXJlZCB3aGVuIHRoZSBqb2luXG4gICAqIHN0YXRlIGlzIGNoYW5nZWRcbiAgICpcbiAgICogQHR5cGUge1N0cmluZ31cbiAgICovXG4gIEByZWFkb25seVxuICBzdGF0aWMgT05fSk9JTl9DT05ESVRJT05fQ0hBTkdFRCA9XG4gICAgJ0pvaW5Db25kaXRpb25QYW5lbC5PTl9KT0lOX0NPTkRJVElPTl9DSEFOR0VEJ1xuICAvKipcbiAgICogVGhlIGpvaW4gc3RhdGVcbiAgICpcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIEByZWFkb25seVxuICBzdGF0ZSA9IHtcbiAgICBjb25kaXRpb24xOiB7fSxcbiAgICBjb25kaXRpb24yOiB7fSxcbiAgICBvcGVyYXRvcjogVE9LRU5TLlRPS0VOX09SLFxuICB9XG5cbiAgLyoqXG4gICAqIEB0eXBlIHtPcHRpb259XG4gICAqL1xuICBfZmlyc3RDb25kaXRpb25QYW5lbCA9IG5ldyBDb25kaXRpb25QYW5lbCgpXG5cbiAgLyoqXG4gICAqIEB0eXBlIHtPcHRpb259XG4gICAqL1xuICBfc2Vjb25kQ29uZGl0aW9uUGFuZWwgPSBuZXcgQ29uZGl0aW9uUGFuZWwoKVxuXG4gIC8qKlxuICAgKiBAdHlwZSB7SFRNTEVsZW1lbnR9XG4gICAqL1xuICBfb3BlcmF0b3JQYW5lbCA9IG51bGxcblxuICAvKipcbiAgICogUGFyYW1zIHJlY2VpdmVkIGFmdGVyIGluaXRcbiAgICpcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIF9wYXJhbXMgPSBudWxsXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgQG92ZXJyaWRlXG4gIGluaXQocGFyYW1zKSB7XG4gICAgY29uc3QgdHJhbnNsYXRlID0gcGFyYW1zLmFwaS5ncmlkT3B0aW9uc1dyYXBwZXIuZ2V0TG9jYWxlVGV4dEZ1bmMoKVxuXG4gICAgdGhpcy5fcGFyYW1zID0gcGFyYW1zXG5cbiAgICB0aGlzLl9maXJzdENvbmRpdGlvblBhbmVsLmluaXQocGFyYW1zKVxuICAgIHRoaXMuX2ZpcnN0Q29uZGl0aW9uUGFuZWwub24oXG4gICAgICBDb25kaXRpb25QYW5lbC5PTl9DT05ESVRJT05fQ0hBTkdFRCxcbiAgICAgIHRoaXMuX29uRmlyc3RDb25kaXRpb25DaGFuZ2VkXG4gICAgKVxuXG4gICAgdGhpcy5fc2Vjb25kQ29uZGl0aW9uUGFuZWwuaW5pdChwYXJhbXMpXG4gICAgdGhpcy5fc2Vjb25kQ29uZGl0aW9uUGFuZWwub24oXG4gICAgICBDb25kaXRpb25QYW5lbC5PTl9DT05ESVRJT05fQ0hBTkdFRCxcbiAgICAgIHRoaXMuX29uU2Vjb25kQ29uZGl0aW9uQ2hhbmdlZFxuICAgIClcbiAgICB0aGlzLl9zZWNvbmRDb25kaXRpb25QYW5lbC5nZXRHdWkoKS5jbGFzc0xpc3QuYWRkKCdhZy1oaWRkZW4nKVxuXG4gICAgdGhpcy5fZ3VpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICB0aGlzLl9ndWkuY2xhc3NOYW1lID0gJ2FnLWZpbHRlci1ib2R5LXdyYXBwZXInXG4gICAgdGhpcy5fZ3VpLmFwcGVuZENoaWxkKHRoaXMuX2ZpcnN0Q29uZGl0aW9uUGFuZWwuZ2V0R3VpKCkpXG5cbiAgICB0aGlzLl9vcGVyYXRvclBhbmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICB0aGlzLl9vcGVyYXRvclBhbmVsLmNsYXNzTmFtZSA9ICdhZy1maWx0ZXItY29uZGl0aW9uIGFnLWhpZGRlbidcbiAgICB0aGlzLl9vcGVyYXRvclBhbmVsLmlubmVySFRNTCA9IC8qIGh0bWwgKi8gYFxuICAgICAgPGxhYmVsPlxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJBTkRcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwib3JBbmRSYWRpb1wiIHZhbHVlPVwiJHtcbiAgICAgICAgICBUT0tFTlMuVE9LRU5fQU5EXG4gICAgICAgIH1cIi8+XG4gICAgICAgICR7dHJhbnNsYXRlKCdhbmRDb25kaXRpb24nLCAnQU5EJyl9XG4gICAgICA8L2xhYmVsPiBcbiAgICAgIDxsYWJlbD5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwiT1JcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwib3JBbmRSYWRpb1wiIHZhbHVlPVwiJHtcbiAgICAgICAgICBUT0tFTlMuVE9LRU5fT1JcbiAgICAgICAgfVwiIGNoZWNrZWQgLz5cbiAgICAgICAgJHt0cmFuc2xhdGUoJ29yQ29uZGl0aW9uJywgJ09SJyl9XG4gICAgICA8L2xhYmVsPlxuICAgIGBcbiAgICB0aGlzLl9ndWkuYXBwZW5kQ2hpbGQodGhpcy5fb3BlcmF0b3JQYW5lbClcbiAgICB0aGlzLl9vcGVyYXRvclBhbmVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMuX29uT3BlcmF0b3JDaGFuZ2VkKVxuXG4gICAgdGhpcy5fZ3VpLmFwcGVuZENoaWxkKHRoaXMuX3NlY29uZENvbmRpdGlvblBhbmVsLmdldEd1aSgpKVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBAb3ZlcnJpZGVcbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLl9maXJzdENvbmRpdGlvblBhbmVsLmRlc3Ryb3koKVxuICAgIHRoaXMuX3NlY29uZENvbmRpdGlvblBhbmVsLmRlc3Ryb3koKVxuICAgIHRoaXMuX29wZXJhdG9yUGFuZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy5fb25PcGVyYXRvckNoYW5nZWQpXG4gICAgdGhpcy5vZmYoSm9pbkNvbmRpdGlvblBhbmVsLk9OX0pPSU5fQ09ORElUSU9OX0NIQU5HRUQpXG4gICAgdGhpcy5yZXNldCgpXG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhlIHN0YXRlXG4gICAqL1xuICByZXNldCgpIHtcbiAgICB0aGlzLl9maXJzdENvbmRpdGlvblBhbmVsLnJlc2V0KClcbiAgICB0aGlzLl9zZWNvbmRDb25kaXRpb25QYW5lbC5yZXNldCgpXG4gICAgdGhpcy5ub3RpZnkoQ29uZGl0aW9uUGFuZWwuT05fQ09ORElUSU9OX0NIQU5HRUQsIHRoaXMuc3RhdGUpXG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBjb25kaXRpb24gam9pbiBzdGF0ZVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gc3RhdGVcbiAgICovXG4gIHNldFN0YXRlKHN0YXRlKSB7XG4gICAgc3RhdGUgPSBzdGF0ZSB8fCB7fVxuICAgIHRoaXMuc3RhdGUub3BlcmF0b3IgPSBzdGF0ZS5vcGVyYXRvciB8fCBUT0tFTlMuVE9LRU5fT1JcbiAgICB0aGlzLnN0YXRlLmNvbmRpdGlvbjEgPSBzdGF0ZS5jb25kaXRpb24xIHx8IG51bGxcbiAgICB0aGlzLnN0YXRlLmNvbmRpdGlvbjIgPSBzdGF0ZS5jb25kaXRpb24yIHx8IG51bGxcblxuICAgIHRoaXMuX2ZpcnN0Q29uZGl0aW9uUGFuZWwuc2V0U3RhdGUodGhpcy5zdGF0ZS5jb25kaXRpb24xKVxuICAgIHRoaXMuX3NlY29uZENvbmRpdGlvblBhbmVsLnNldFN0YXRlKHRoaXMuc3RhdGUuY29uZGl0aW9uMilcbiAgICB0aGlzLl9vcGVyYXRvclBhbmVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0JykuZm9yRWFjaChpbnB1dCA9PiB7XG4gICAgICBpZiAoaW5wdXQuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuc3RhdGUub3BlcmF0b3IpKSB7XG4gICAgICAgIGlucHV0LmNoZWNrZWQgPSB0cnVlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnB1dC5jaGVja2VkID0gZmFsc2VcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgdGhpcy5ub3RpZnkoSm9pbkNvbmRpdGlvblBhbmVsLk9OX0pPSU5fQ09ORElUSU9OX0NIQU5HRUQsIHRoaXMuc3RhdGUpXG4gIH1cblxuICAvKipcbiAgICogQWRkIHRoZSBzZWxlY3RlZCBjb25kaXRpb24gdG8gdGhlIGNvbXBvbmVudCBzdGF0ZXJcbiAgICpcbiAgICogQHBhcmFtIHtFdmVudH0gZVxuICAgKi9cbiAgQGF1dG9iaW5kXG4gIF9vbk9wZXJhdG9yQ2hhbmdlZChlKSB7XG4gICAgdGhpcy5zdGF0ZS5vcGVyYXRvciA9IGUudGFyZ2V0LnZhbHVlXG4gICAgdGhpcy5ub3RpZnkoSm9pbkNvbmRpdGlvblBhbmVsLk9OX0pPSU5fQ09ORElUSU9OX0NIQU5HRUQsIHRoaXMuc3RhdGUpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtPYmplY3R9IHN0YXRlICB0aGUgb3B0aW9uIHN0YXRlXG4gICAqL1xuICBAYXV0b2JpbmRcbiAgX29uRmlyc3RDb25kaXRpb25DaGFuZ2VkKHN0YXRlKSB7XG4gICAgdGhpcy5zdGF0ZS5jb25kaXRpb24xID0gc3RhdGVcblxuICAgIGNvbnN0IHN1cHByZXNzQW5kT3JDb25kaXRpb24gPSB0aGlzLmdldE9wdGlvbihcbiAgICAgICdzdXBwcmVzc0FuZE9yQ29uZGl0aW9uJyxcbiAgICAgIHRoaXMuX3BhcmFtcyxcbiAgICAgIGZhbHNlXG4gICAgKVxuXG4gICAgaWYgKCFzdXBwcmVzc0FuZE9yQ29uZGl0aW9uKSB7XG4gICAgICBjb25zdCB7IGZpbHRlciwgZmlsdGVyVG8sIHR5cGUgfSA9IHRoaXMuc3RhdGUuY29uZGl0aW9uMVxuICAgICAgY29uc3Qgc2Vjb25kQ29uZGl0aW9uR3VpID0gdGhpcy5fc2Vjb25kQ29uZGl0aW9uUGFuZWwuZ2V0R3VpKClcbiAgICAgIGNvbnN0IG9wZXJhdG9yUGFuZWxHdWkgPSB0aGlzLl9vcGVyYXRvclBhbmVsXG4gICAgICBjb25zdCBjb25kaXRpb24gPVxuICAgICAgICB0eXBlID09PSBUT0tFTlMuVE9LRU5fUkFOR0UgPyAhZmlsdGVyIHx8ICFmaWx0ZXJUbyA6ICFmaWx0ZXJcblxuICAgICAgaWYgKGNvbmRpdGlvbikge1xuICAgICAgICBzZWNvbmRDb25kaXRpb25HdWkuY2xhc3NMaXN0LmFkZCgnYWctaGlkZGVuJylcbiAgICAgICAgb3BlcmF0b3JQYW5lbEd1aS5jbGFzc0xpc3QuYWRkKCdhZy1oaWRkZW4nKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2Vjb25kQ29uZGl0aW9uR3VpLmNsYXNzTGlzdC5yZW1vdmUoJ2FnLWhpZGRlbicpXG4gICAgICAgIG9wZXJhdG9yUGFuZWxHdWkuY2xhc3NMaXN0LnJlbW92ZSgnYWctaGlkZGVuJylcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm5vdGlmeShKb2luQ29uZGl0aW9uUGFuZWwuT05fSk9JTl9DT05ESVRJT05fQ0hBTkdFRCwgdGhpcy5zdGF0ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge09iamVjdH0gc3RhdGUgIHRoZSBvcHRpb24gc3RhdGVcbiAgICovXG4gIEBhdXRvYmluZFxuICBfb25TZWNvbmRDb25kaXRpb25DaGFuZ2VkKHN0YXRlKSB7XG4gICAgdGhpcy5zdGF0ZS5jb25kaXRpb24yID0gc3RhdGVcbiAgICB0aGlzLm5vdGlmeShKb2luQ29uZGl0aW9uUGFuZWwuT05fSk9JTl9DT05ESVRJT05fQ0hBTkdFRCwgdGhpcy5zdGF0ZSlcbiAgfVxufVxuXG4vKipcbiAqIERhdGVUaW1lIEZpbHRlclxuICpcbiAqICMjIE9wdGlvbnNcbiAqXG4gKiB8IE5hbWUgICAgICAgICAgICAgICAgICBcdHwgRGVmYXVsdCAgICAgXHR8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcdHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHR8Oi0tLS0tLS0tLS0tLS06fC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAqKmRhdGVUaW1lRW5hYmxlVGltZSoqICAgfCBmYWxzZSAgICB8IGVuYWJsZSAvIGRpc2FibGUgdGltZVxuICogfCAqKmRhdGVUaW1lRW5hYmxlMjRIUioqICAgfCBmYWxzZSAgICB8IGVuYWJsZSAvIGRpc2FibGUgdGltZSAyNCBmb3JtYXRcbiAqIHwgKipkYXRlVGltZUVuYWJsZVNlY29uZHMqKiAgIHwgZmFsc2UgICAgfCBlbmFibGUgLyBkaXNhYmxlIHNlY29uZHMgbWFuYWdlbWVudFxuICogfCAqKmRhdGVUaW1lRW5hYmxlQ2FsZW5kYXIqKiAgIHwgZmFsc2UgICAgfCBlbmFibGUgLyBkaXNhYmxlIENhbGVuZGFyLlxuICogfCAqKmRhdGVUaW1lTWFzayoqICAgfCBmYWxzZSAgICB8IFRoZSBtYXNrIHVzZWQgdG8gZm9ybWF0IHRoZSBzZWxlY3RlZCBkYXRlXG4gKiB8ICoqZGF0ZVRpbWVNYXgqKiAgIHwgdW5kZWZpbmVkICAgIHwgIE1heCBhbGxvd2VkIGRhdGVcbiAqIHwgKipkYXRlVGltZU1pbioqICAgfCB1bmRlZmluZWQgICAgfCAgTWluIGFsbG93ZWQgZGF0ZVxuICogfCAqKmRhdGVUaW1lRm9ybWF0dGVyKiogICB8IHVuZGVmaW5lZCAgICB8ICBBIGZ1bmN0aW9uIG9yIGV4cHJlc3Npb24gdG8gZm9ybWF0IHRoZSBkYXRlIChAc2VlIHN1cHBvcnRlZCBwYXJhbSlcbiAqIHwgKipkYXRlVGltZUxvY2FsZSoqICAgfCBTeXN0ZW0gZGVmYXVsdCAgICB8ICBBIGxvY2FsZSB0byB1c2UgZm9yIGRhdGUgZm9ybWF0dGluZ1xuICogfCAqKmRhdGVUaW1lRGVmYXVsdEhvdXIqKiAgIHwgMTIgICAgfCAgSW5pdGlhbCB2YWx1ZSBvZiB0aGUgaG91ciBlbGVtZW50LlxuICogfCAqKmRhdGVUaW1lRGVmYXVsdE1pbnV0ZSoqICAgfCAwICAgIHwgIEluaXRpYWwgdmFsdWUgb2YgdGhlIG1pbnV0ZSBlbGVtZW50LlxuICogfCAqKmRhdGVUaW1lRGlzYWJsZU1vYmlsZSoqICAgfCBmYWxzZSAgICB8ICBTZXQgZGlzYWJsZU1vYmlsZSB0byB0cnVlIHRvIGFsd2F5cyB1c2UgdGhlIG5vbi1uYXRpdmUgcGlja2VyLlxuICogfCAqKmRhdGVUaW1lRW5hYmxlV2Vla051bWJlcioqICAgfCB0cnVlICAgIHwgIEVuYWJsZXMgZGlzcGxheSBvZiB3ZWVrIG51bWJlcnMgaW4gY2FsZW5kYXIuXG4gKiB8ICoqZmlsdGVyT3B0aW9ucyoqICAgfCBFcXVhbHMsIEdyZWF0ZXIgVGhhbiwgTGVzcyBUaGFuLCBOb3QgRXF1YWxzLCBJbiBSYW5nZS4gICAgfCAgV2hhdCBGaWx0ZXIgT3B0aW9ucyB0byBwcmVzZW50IHRvIHRoZSB1c2VyLlxuICogfCAqKmRlZmF1bHRPcHRpb24qKiAgIHwgRXF1YWxzICAgIHwgIFRoZSBkZWZhdWx0IEZpbHRlciBPcHRpb25zIHRvIGJlIHNlbGVjdGVkLlxuICogfCAqKnN1cHByZXNzQW5kT3JDb25kaXRpb24qKiAgIHwgZmFsc2UgICAgfCAgSWYgdHJ1ZSwgdGhlIGZpbHRlciB3aWxsIG9ubHkgb2ZmZXIgQ29uZGl0aW9uIDEuXG4gKiB8ICoqaW5SYW5nZUluY2x1c2l2ZSoqICAgfCBmYWxzZSAgICB8ICBJZiB0cnVlIHRoZW4gZG9pbmcgJ2luUmFuZ2UnIGZpbHRlciBvcHRpb24gd2lsbCBpbmNsdWRlIHZhbHVlcyBlcXVhbCB0byB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGUgcmFuZ2UuXG4gKiB8ICoqY2xlYXJCdXR0b24qKiAgIHwgZmFsc2UgICAgfCAgU2V0IHRvIHRydWUgdG8gaGF2ZSB0aGUgZmlsdGVyIHVzZSBhIENsZWFyIGJ1dHRvbi4gVGhlIENsZWFyIGJ1dHRvbiB3aWxsIGNsZWFyIHRoZSAoZm9ybSkgZGV0YWlscyBvZiB0aGUgZmlsdGVyIHdpdGhvdXQgcmVtb3ZpbmcgYW55IGFjdGl2ZSBmaWx0ZXJzIG9uIHRoZSBjb2x1bW4uXG4gKiB8ICoqYXBwbHlCdXR0b24qKiAgIHwgZmFsc2UgICAgfCAgU2V0IHRvIHRydWUgdG8gaGF2ZSB0aGUgZmlsdGVyIHVzZSBhbiBBcHBseSBidXR0b24uIElmIHRoZSBBcHBseSBidXR0b24gaXMgcHJlc2VudCwgdGhlbiB0aGUgZmlsdGVyIGlzIG9ubHkgYXBwbGllZCBhZnRlciB0aGUgdXNlciBoaXRzIHRoZSBBcHBseSBidXR0b24uXG4gKiB8ICoqcmVzZXRCdXR0b24qKiAgIHwgZmFsc2UgICAgfCAgU2V0IHRvIHRydWUgdG8gaGF2ZSB0aGUgZmlsdGVyIHVzZSBhIFJlc2V0IGJ1dHRvbi4gVGhlIFJlc2V0IGJ1dHRvbiB3aWxsIGNsZWFyIHRoZSBkZXRhaWxzIG9mIHRoZSBmaWx0ZXIgYW5kIGFueSBhY3RpdmUgZmlsdGVycyBvbiB0aGF0IGNvbHVtbi5cbiAqXG4gKiBAYXV0aG9yIEh5eWFuIEFibyBGYWtoZXIgPGhhYm9mYWtoZXJAYmFzaXMuY29tPlxuICovXG5jbGFzcyBEYXRlVGltZUZpbHRlciBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBAdHlwZSB7Sm9pbn1cbiAgICovXG4gIF9Kb2luQ29uZGl0aW9uUGFuZWwgPSBuZXcgSm9pbkNvbmRpdGlvblBhbmVsKClcblxuICAvKipcbiAgICogSm9pbiBwYW5lbCBzdGF0ZVxuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgX3N0YXRlID0ge31cblxuICAvKipcbiAgICogQ29tcG9uZW50IHBhcmFtc1xuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgX3BhcmFtcyA9IHt9XG5cbiAgLyoqXG4gICAqIEFuIG9iamVjdCBvZiBhbGwgdGhlIHJlcXVpcmVkIG9wdGlvbnMgY2FjaGVkIGZvciBkb2VzRmlsdGVyUGFzcyBtZXRob2RcbiAgICovXG4gIF9kb2VzRmlsdGVyUGFzc09wdGlvbnMgPSBudWxsXG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBAb3ZlcnJpZGVcbiAgaW5pdChwYXJhbXMpIHtcbiAgICBjb25zdCB0cmFuc2xhdGUgPSBwYXJhbXMuYXBpLmdyaWRPcHRpb25zV3JhcHBlci5nZXRMb2NhbGVUZXh0RnVuYygpXG4gICAgY29uc3QgaXNDbGVhckZpbHRlciA9IHRoaXMuZ2V0T3B0aW9uKCdjbGVhckJ1dHRvbicsIHBhcmFtcywgZmFsc2UpXG4gICAgY29uc3QgaXNSZXNldEJ1dHRvbiA9IHRoaXMuZ2V0T3B0aW9uKCdyZXNldEJ1dHRvbicsIHBhcmFtcywgZmFsc2UpXG4gICAgY29uc3QgaXNBcHBseUJ1dHRvbiA9IHRoaXMuZ2V0T3B0aW9uKCdhcHBseUJ1dHRvbicsIHBhcmFtcywgZmFsc2UpXG5cbiAgICB0aGlzLl9ndWkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuXG4gICAgdGhpcy5fSm9pbkNvbmRpdGlvblBhbmVsLmluaXQocGFyYW1zKVxuICAgIHRoaXMuX0pvaW5Db25kaXRpb25QYW5lbC5vbihcbiAgICAgIEpvaW5Db25kaXRpb25QYW5lbC5PTl9KT0lOX0NPTkRJVElPTl9DSEFOR0VELFxuICAgICAgc3RhdGUgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuX19kaXNhYmxlU3RhdGVDaGFuZ2VMaXN0ZW5lcikge1xuICAgICAgICAgIHRoaXMuX29uSm9pbkNvbmRpdGlvblBhbmVsU3RhdGVDaGFuZ2VkKHN0YXRlLCBpc0FwcGx5QnV0dG9uKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKVxuXG4gICAgdGhpcy5fZ3VpLmFwcGVuZENoaWxkKHRoaXMuX0pvaW5Db25kaXRpb25QYW5lbC5nZXRHdWkoKSlcblxuICAgIGNvbnN0IGFwcGx5RmlsdGVyUGFuZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAgIGFwcGx5RmlsdGVyUGFuZWwuY2xhc3NOYW1lID0gYGFnLWZpbHRlci1hcHBseS1wYW5lbCBhZy1oaWRkZW5gXG4gICAgYXBwbHlGaWx0ZXJQYW5lbC5pbm5lckhUTUwgPSAvKiBodG1sICovIGBcbiAgICAgIDxidXR0b24gY2xhc3M9XCJjbGVhciAkeyFpc0NsZWFyRmlsdGVyICYmXG4gICAgICAgICdhZy1oaWRkZW4nfVwiIHR5cGU9XCJidXR0b25cIj4ke3RyYW5zbGF0ZShcbiAgICAgICdjbGVhckZpbHRlcicsXG4gICAgICAnQ2xlYXIgRmlsdGVyJ1xuICAgICl9PC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwicmVzZXQgJHshaXNSZXNldEJ1dHRvbiAmJlxuICAgICAgICAnYWctaGlkZGVuJ31cIiB0eXBlPVwiYnV0dG9uXCI+JHt0cmFuc2xhdGUoXG4gICAgICAncmVzZXRGaWx0ZXInLFxuICAgICAgJ1Jlc2V0IEZpbHRlcidcbiAgICApfTwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImFwcGx5ICR7IWlzQXBwbHlCdXR0b24gJiZcbiAgICAgICAgJ2FnLWhpZGRlbid9XCIgdHlwZT1cImJ1dHRvblwiPiR7dHJhbnNsYXRlKFxuICAgICAgJ2FwcGx5RmlsdGVyJyxcbiAgICAgICdBcHBseSBGaWx0ZXInXG4gICAgKX08L2J1dHRvbj5cbiAgICBgXG5cbiAgICBpZiAoaXNDbGVhckZpbHRlciB8fCBpc1Jlc2V0QnV0dG9uIHx8IGlzQXBwbHlCdXR0b24pIHtcbiAgICAgIGFwcGx5RmlsdGVyUGFuZWwuY2xhc3NMaXN0LnJlbW92ZSgnYWctaGlkZGVuJylcbiAgICB9XG5cbiAgICBhcHBseUZpbHRlclBhbmVsLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnY2xpY2snLFxuICAgICAgdGhpcy5fQXBwbHlGaWx0ZXJQYW5lbEJ1dHRvbkNsaWNrXG4gICAgKVxuXG4gICAgdGhpcy5fZ3VpLmFwcGVuZENoaWxkKGFwcGx5RmlsdGVyUGFuZWwpXG5cbiAgICB0aGlzLl9zdGF0ZSA9IHRoaXMuX0pvaW5Db25kaXRpb25QYW5lbC5zdGF0ZVxuICAgIHRoaXMuX3BhcmFtcyA9IHBhcmFtc1xuXG4gICAgdGhpcy5fZG9lc0ZpbHRlclBhc3NPcHRpb25zID0ge1xuICAgICAgZW5hYmxlVGltZTogdGhpcy5nZXRPcHRpb24oJ2RhdGVUaW1lRW5hYmxlVGltZScsIHRoaXMuX3BhcmFtcywgdHJ1ZSksXG4gICAgICBpblJhbmdlSW5jbHVzaXZlOiB0aGlzLmdldE9wdGlvbignaW5SYW5nZUluY2x1c2l2ZScsIHRoaXMuX3BhcmFtcywgZmFsc2UpLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgICAgdmFsdWVHZXR0ZXI6IHRoaXMuX3BhcmFtcy5oYXNPd25Qcm9wZXJ0eSgnZmlsdGVyVmFsdWVHZXR0ZXInKVxuICAgICAgICA/IHRoaXMuX3BhcmFtcy5maWx0ZXJWYWx1ZUdldHRlclxuICAgICAgICA6IHRoaXMuX3BhcmFtcy52YWx1ZUdldHRlcixcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIEBvdmVycmlkZVxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuX0pvaW5Db25kaXRpb25QYW5lbC5kZXN0cm95KClcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIHNlbGVjdGVkIGZpbHRlciBtYXRjaGVzIHRoZSBwYXNzZWQgY2VsbCBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXNcbiAgICpcbiAgICogQHJldHVybiB7Qm9vbGVhbn0gdHJ1ZSB3aGVuIHBhc3MsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgZG9lc0ZpbHRlclBhc3MocGFyYW1zKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLl9kb2VzRmlsdGVyUGFzc09wdGlvbnMudmFsdWVHZXR0ZXIocGFyYW1zKVxuICAgIGNvbnN0IHsgY29uZGl0aW9uMSwgY29uZGl0aW9uMiwgb3BlcmF0b3IgfSA9IHRoaXMuX3N0YXRlXG4gICAgY29uc3QgZG9lc1Bhc3NGaXJzdENvbmRpdGlvbiA9IHRoaXMuX2RvZXNQYXNzQ29uZGl0aW9uKGNvbmRpdGlvbjEsIHZhbHVlKVxuICAgIGNvbnN0IGRvZXNQYXNzU2Vjb25kQ29uZGl0aW9uID0gdGhpcy5fZG9lc1Bhc3NDb25kaXRpb24oY29uZGl0aW9uMiwgdmFsdWUpXG5cbiAgICByZXR1cm4gb3BlcmF0b3IgPT09IFRPS0VOUy5UT0tFTl9PUlxuICAgICAgPyBkb2VzUGFzc0ZpcnN0Q29uZGl0aW9uIHx8IGRvZXNQYXNzU2Vjb25kQ29uZGl0aW9uXG4gICAgICA6IGRvZXNQYXNzRmlyc3RDb25kaXRpb24gJiYgZG9lc1Bhc3NTZWNvbmRDb25kaXRpb25cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIHRoZSBjb21wb25lbnQgaXMgYXBwbHlpbmcgYW55IGZpbHRlciBvbiB0aGUgY29sdW1uXG4gICAqXG4gICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAqKi9cbiAgaXNGaWx0ZXJBY3RpdmUoKSB7XG4gICAgY29uc3QgeyBjb25kaXRpb24xIH0gPSB0aGlzLl9zdGF0ZVxuXG4gICAgaWYgKGNvbmRpdGlvbjEgJiYgY29uZGl0aW9uMS5maWx0ZXIpIHtcbiAgICAgIGlmIChjb25kaXRpb24xLmZpbHRlclRvICYmIGNvbmRpdGlvbjEudHlwZSA9PT0gVE9LRU5TLlRPS0VOX1JBTkdFKSB7XG4gICAgICAgIHJldHVybiBjb25kaXRpb24xLmZpbHRlciAhPT0gbnVsbCAmJiBjb25kaXRpb24xLmZpbHRlclRvICE9PSBudWxsXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb25kaXRpb24xLmZpbHRlciAhPT0gbnVsbFxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGZpbHRlciBzdGF0ZS4gSWYgZmlsdGVyIGlzIG5vdCBhY3RpdmUsIHRoZW4gc2hvdWxkIHJldHVybiBudWxsL3VuZGVmaW5lZC5cbiAgICogVGhlIGdyaWQgY2FsbHMgZ2V0TW9kZWwoKSBvbiBhbGwgYWN0aXZlIGZpbHRlcnMgd2hlbiBncmlkQXBpLmdldEZpbHRlck1vZGVsKCkgaXMgY2FsbGVkLlxuICAgKlxuICAgKiBAcmV0dXJuIE9iamVjdCB8IG51bGwgdGhlIGZpbHRlciBzdGF0ZVxuICAgKi9cbiAgZ2V0TW9kZWwoKSB7XG4gICAgY29uc3QgY2xvbmUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuX3N0YXRlKSlcbiAgICA7W2Nsb25lLmNvbmRpdGlvbjEsIGNsb25lLmNvbmRpdGlvbjJdLmZvckVhY2goKGNvbmRpdGlvbiwgaSkgPT4ge1xuICAgICAgaWYgKGNvbmRpdGlvbi5maWx0ZXIpIHtcbiAgICAgICAgY29uZGl0aW9uLmZpbHRlciA9IHRoaXMuX3N0YXRlW2Bjb25kaXRpb24ke2kgKyAxfWBdLmZpbHRlci50b0lTT1N0cmluZygpXG4gICAgICB9XG4gICAgICBpZiAoY29uZGl0aW9uLmZpbHRlclRvKSB7XG4gICAgICAgIGNvbmRpdGlvbi5maWx0ZXJUbyA9IHRoaXMuX3N0YXRlW1xuICAgICAgICAgIGBjb25kaXRpb24ke2kgKyAxfWBcbiAgICAgICAgXS5maWx0ZXJUby50b0lTT1N0cmluZygpXG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBjbG9uZVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RvcmVzIHRoZSBmaWx0ZXIgc3RhdGUuIENhbGxlZCBieSB0aGUgZ3JpZCBhZnRlciBncmlkQXBpLnNldEZpbHRlck1vZGVsKG1vZGVsKSBpcyBjYWxsZWQuXG4gICAqIFRoZSBncmlkIHdpbGwgcGFzcyB1bmRlZmluZWQvbnVsbCB0byBjbGVhciB0aGUgZmlsdGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdCB8IG51bGx9IG1vZGVsXG4gICAqL1xuICBzZXRNb2RlbChtb2RlbCkge1xuICAgIHRoaXMuX19kaXNhYmxlU3RhdGVDaGFuZ2VMaXN0ZW5lciA9IHRydWVcbiAgICB0aGlzLl9Kb2luQ29uZGl0aW9uUGFuZWwuc2V0U3RhdGUobW9kZWwpXG4gICAgdGhpcy5fX2Rpc2FibGVTdGF0ZUNoYW5nZUxpc3RlbmVyID0gZmFsc2VcblxuICAgIHRoaXMuX3N0YXRlID0gdGhpcy5fSm9pbkNvbmRpdGlvblBhbmVsLnN0YXRlXG4gICAgO1t0aGlzLl9zdGF0ZS5jb25kaXRpb24xLCB0aGlzLl9zdGF0ZS5jb25kaXRpb24yXS5mb3JFYWNoKGNvbmRpdGlvbiA9PiB7XG4gICAgICBpZiAoY29uZGl0aW9uLmZpbHRlcikge1xuICAgICAgICBjb25kaXRpb24uZmlsdGVyID0gbmV3IERhdGUoY29uZGl0aW9uLmZpbHRlcilcbiAgICAgIH1cbiAgICAgIGlmIChjb25kaXRpb24uZmlsdGVyVG8pIHtcbiAgICAgICAgY29uZGl0aW9uLmZpbHRlclRvID0gbmV3IERhdGUoY29uZGl0aW9uLmZpbHRlclRvKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBmaWx0ZXIgbW9kZWwgYXMgcGxhaW4gc3RyaW5nIHRvIGRpc3BsYXkgaW4gdGhlIGZsb2F0aW5nIGZpbHRlciBpbnB1dFxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdCB8IG51bGx9IG1vZGVsXG4gICAqL1xuICBnZXRNb2RlbEFzU3RyaW5nKG1vZGVsKSB7XG4gICAgaWYgKCFtb2RlbCkge1xuICAgICAgcmV0dXJuICcnXG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZVRpbWVNYXNrID0gdGhpcy5nZXRPcHRpb24oXG4gICAgICAnZGF0ZVRpbWVNYXNrJyxcbiAgICAgIHRoaXMuX3BhcmFtcyxcbiAgICAgIC8vIEB0b2RvIEZpbmQgYSBiZXR0ZXIgd2F5IGZvciB0aGlzXG4gICAgICB0aGlzLl9Kb2luQ29uZGl0aW9uUGFuZWwuX2ZpcnN0Q29uZGl0aW9uUGFuZWwuX2ZpbHRlclRpbWVJbnB1dC5waWNrZXJcbiAgICAgICAgLmNvbmZpZ1snZGF0ZUZvcm1hdCddXG4gICAgKVxuICAgIGNvbnN0IGxvY2FsZSA9IHRoaXMuZ2V0T3B0aW9uKFxuICAgICAgJ2RhdGVUaW1lTG9jYWxlJyxcbiAgICAgIHRoaXMuX3BhcmFtcyxcbiAgICAgIEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUgfHwgJ2VuLVVTJ1xuICAgIClcblxuICAgIGNvbnN0IHsgY29uZGl0aW9uMSwgY29uZGl0aW9uMiwgb3BlcmF0b3IgfSA9IEpTT04ucGFyc2UoXG4gICAgICBKU09OLnN0cmluZ2lmeShtb2RlbClcbiAgICApXG5cbiAgICA7W2NvbmRpdGlvbjEsIGNvbmRpdGlvbjJdLmZvckVhY2goY29uZGl0aW9uID0+IHtcbiAgICAgIGlmIChjb25kaXRpb24uZmlsdGVyKSB7XG4gICAgICAgIGNvbmRpdGlvbi5maWx0ZXIgPSBCQmouTWFza3MuRGF0ZU1hc2subWFzayhcbiAgICAgICAgICBjb25kaXRpb24uZmlsdGVyLFxuICAgICAgICAgIGRhdGVUaW1lTWFzayxcbiAgICAgICAgICBsb2NhbGVcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBpZiAoY29uZGl0aW9uLmZpbHRlclRvKSB7XG4gICAgICAgIGNvbmRpdGlvbi5maWx0ZXJUbyA9IEJCai5NYXNrcy5EYXRlTWFzay5tYXNrKFxuICAgICAgICAgIGNvbmRpdGlvbi5maWx0ZXJUbyxcbiAgICAgICAgICBkYXRlVGltZU1hc2ssXG4gICAgICAgICAgbG9jYWxlXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgY29uc3QgZmlyc3RDb25kaXRpb25Bc1N0cmluZyA9IGAke2NvbmRpdGlvbjEuZmlsdGVyIHx8ICcnfSAke1xuICAgICAgY29uZGl0aW9uMS5maWx0ZXJUbyA/ICfihpIgJyArIGNvbmRpdGlvbjEuZmlsdGVyVG8gOiAnJ1xuICAgIH1gXG4gICAgY29uc3Qgc2Vjb25kQ29uZGl0aW9uQXNTdHJpbmcgPSBgJHtjb25kaXRpb24yLmZpbHRlciB8fCAnJ30gJHtcbiAgICAgIGNvbmRpdGlvbjIuZmlsdGVyVG8gPyAn4oaSICcgKyBjb25kaXRpb24yLmZpbHRlclRvIDogJydcbiAgICB9YFxuICAgIGNvbnN0IG9wZXJhdG9yQXNTdHJpbmcgPSBgJHtjb25kaXRpb24yLmZpbHRlciAmJiBvcGVyYXRvciA/IG9wZXJhdG9yIDogJyd9YFxuXG4gICAgcmV0dXJuIGAke2ZpcnN0Q29uZGl0aW9uQXNTdHJpbmd9ICR7b3BlcmF0b3JBc1N0cmluZ30gJHtzZWNvbmRDb25kaXRpb25Bc1N0cmluZ31gLnRyaW0oKVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoZSBnaXZlbiB2YWx1ZSBwYXNzZXMgdGhlIGZpbHRlciBkZWZpbmVkIGluIHRoZSBwYXNzZWQgQ29uZGl0aW9uUGFuZWwncyBzdGF0ZVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZGl0aW9uIGNvbmRpdGlvbiBwYW5lbCBzdGF0ZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gdmFsdWUgY2VsbCB2YWx1ZVxuICAgKlxuICAgKiBAcmV0dXJuIHtCb29sZWFufSB0cnVlIHdoZW4gcGFzcywgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBfZG9lc1Bhc3NDb25kaXRpb24oY29uZGl0aW9uLCB2YWx1ZSkge1xuICAgIGlmICghY29uZGl0aW9uLmZpbHRlcikge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgY29uc3QgeyBmaWx0ZXIsIGZpbHRlclRvLCB0eXBlIH0gPSBjb25kaXRpb25cbiAgICBjb25zdCB0aW1lem9uZSA9IEJCai5NYXNrcy5VdGlscy5EYXRlcy5nZXRUaW1lem9uZU9yT2Zmc2V0KClcbiAgICBjb25zdCBpblJhbmdlSW5jbHVzaXZlID0gdGhpcy5fZG9lc0ZpbHRlclBhc3NPcHRpb25zLmluUmFuZ2VJbmNsdXNpdmVcbiAgICBjb25zdCBlbmFibGVUaW1lID0gdGhpcy5fZG9lc0ZpbHRlclBhc3NPcHRpb25zLmVuYWJsZVRpbWVcbiAgICBsZXQgcGFzc2VkID0gZmFsc2VcblxuICAgIGlmIChCQmouTWFza3MuVXRpbHMuRGF0ZXMuSVNfVElNRV9SRUdFWC50ZXN0KHZhbHVlKSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZSA9IEJCai5NYXNrcy5VdGlscy5EYXRlcy5maXhTaG9ydElTTyh2YWx1ZSlcbiAgICAgIDtbZmlsdGVyLCBmaWx0ZXJUb10uZm9yRWFjaChkYXRlID0+IHtcbiAgICAgICAgaWYgKGRhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgZGF0ZS5zZXRGdWxsWWVhcigxOTcwKVxuICAgICAgICAgIGRhdGUuc2V0TW9udGgoMClcbiAgICAgICAgICBkYXRlLnNldERhdGUoMSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9IGVsc2UgaWYgKEJCai5NYXNrcy5VdGlscy5EYXRlcy5JU19EQVRFX1JFR0VYLnRlc3QodmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IEJCai5NYXNrcy5VdGlscy5EYXRlcy5maXhTaG9ydElTTyh2YWx1ZSlcbiAgICB9XG5cbiAgICAvLyBjb252ZXJ0IHRoZSBkYXRldGltZSBmcm9tIHV0YyB0byBsb2NhbGVcbiAgICB2YWx1ZSA9IHV0Y1RvWm9uZWRUaW1lKHZhbHVlLCB0aW1lem9uZSlcbiAgICAvLyBmaXJzdERhdGUgPSBmaXJzdERhdGUgPyB6b25lZFRpbWVUb1V0YyhmaXJzdERhdGUgLCB0aW1lem9uZSkgOiBmaXJzdERhdGVcbiAgICAvLyBzZWNvbmREYXRlID0gc2Vjb25kRGF0ZSA/IHpvbmVkVGltZVRvVXRjKHNlY29uZERhdGUgLCB0aW1lem9uZSkgOiBzZWNvbmREYXRlXG5cbiAgICBpZiAoIWVuYWJsZVRpbWUpIHtcbiAgICAgIC8vIHJlbW92ZSB0aGUgdGltZSBwb3J0aW9uIGZyb20gdGhlIGRhdGVcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1leHRyYS1zZW1pXG4gICAgICA7W3ZhbHVlLCBmaWx0ZXIsIGZpbHRlclRvXS5mb3JFYWNoKGRhdGUgPT4ge1xuICAgICAgICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICBkYXRlLnNldEhvdXJzKDApXG4gICAgICAgICAgZGF0ZS5zZXRNaW51dGVzKDApXG4gICAgICAgICAgZGF0ZS5zZXRTZWNvbmRzKDApXG4gICAgICAgICAgZGF0ZS5zZXRNaWxsaXNlY29uZHMoMClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gVE9LRU5TLlRPS0VOX0VRVUFMKSB7XG4gICAgICBwYXNzZWQgPSBmaWx0ZXIgPiB2YWx1ZSA9PT0gZmFsc2UgJiYgZmlsdGVyIDwgdmFsdWUgPT0gZmFsc2VcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFRPS0VOUy5UT0tFTl9OT1RfRVFVQUwpIHtcbiAgICAgIHBhc3NlZCA9ICEoZmlsdGVyID4gdmFsdWUgPT09IGZhbHNlICYmIGZpbHRlciA8IHZhbHVlID09IGZhbHNlKVxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gVE9LRU5TLlRPS0VOX0dSRUFURVIpIHtcbiAgICAgIHBhc3NlZCA9IGZpbHRlciA8IHZhbHVlXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSBUT0tFTlMuVE9LRU5fTEVTUykge1xuICAgICAgcGFzc2VkID0gZmlsdGVyID4gdmFsdWVcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFRPS0VOUy5UT0tFTl9SQU5HRSAmJiBmaWx0ZXJUbykge1xuICAgICAgaWYgKGluUmFuZ2VJbmNsdXNpdmUpIHtcbiAgICAgICAgcGFzc2VkID1cbiAgICAgICAgICAoKGZpbHRlciA8IHZhbHVlIHx8XG4gICAgICAgICAgICAoZmlsdGVyID4gdmFsdWUgPT09IGZhbHNlICYmIGZpbHRlciA8IHZhbHVlID09IGZhbHNlKSkgJiZcbiAgICAgICAgICAgIGZpbHRlclRvID4gdmFsdWUpIHx8XG4gICAgICAgICAgKGZpbHRlclRvID4gdmFsdWUgPT09IGZhbHNlICYmIGZpbHRlclRvIDwgdmFsdWUgPT0gZmFsc2UpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXNzZWQgPSBmaWx0ZXIgPCB2YWx1ZSAmJiBmaWx0ZXJUbyA+IHZhbHVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhc3NlZFxuICB9XG5cbiAgLyoqXG4gICAqIExpc3QgdG8gY2xpY2sgYnV0dG9uIGV2ZW50IG9uIHRoZSBmaWx0ZXIgcGFuZWwgYW5kIGV4ZWN1dGUgdGhlXG4gICAqIHJpZ2h0IGFjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge0V2ZW50fSBlXG4gICAqL1xuICBAYXV0b2JpbmRcbiAgX0FwcGx5RmlsdGVyUGFuZWxCdXR0b25DbGljayhlKSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXRcblxuICAgIGlmICh0YXJnZXQubm9kZU5hbWUgPT09ICdCVVRUT04nKSB7XG4gICAgICBpZiAodGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygncmVzZXQnKSkge1xuICAgICAgICB0aGlzLl9Kb2luQ29uZGl0aW9uUGFuZWwucmVzZXQoKVxuICAgICAgICB0aGlzLl9wYXJhbXMuZmlsdGVyQ2hhbmdlZENhbGxiYWNrKClcbiAgICAgIH0gZWxzZSBpZiAodGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnY2xlYXInKSkge1xuICAgICAgICB0aGlzLl9Kb2luQ29uZGl0aW9uUGFuZWwucmVzZXQoKVxuICAgICAgfSBlbHNlIGlmICh0YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdhcHBseScpKSB7XG4gICAgICAgIHRoaXMuX3BhcmFtcy5maWx0ZXJDaGFuZ2VkQ2FsbGJhY2soKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIGZpbHRlciBzdGF0ZSBhbmQgQXBwbHkgdGhlIGZpbHRlciBkZXBlbmRpbmcgb25cbiAgICogd2hldGhlciB0aGUgYGlzQXBwbHlCdXR0b25BY3RpdmVgIGlzIHRydWUgb3IgZmFsc2VcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHN0YXRlXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gaXNBcHBseUJ1dHRvbkFjdGl2ZVxuICAgKi9cbiAgQGF1dG9iaW5kXG4gIF9vbkpvaW5Db25kaXRpb25QYW5lbFN0YXRlQ2hhbmdlZChzdGF0ZSwgaXNBcHBseUJ1dHRvbkFjdGl2ZSkge1xuICAgIHRoaXMuX3N0YXRlID0gc3RhdGVcbiAgICBpZiAoZmFsc2UgPT09IGlzQXBwbHlCdXR0b25BY3RpdmUpIHtcbiAgICAgIHRoaXMuX3BhcmFtcy5maWx0ZXJDaGFuZ2VkQ2FsbGJhY2soKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBEYXRlVGltZUZpbHRlclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL0RhdGVUaW1lRmlsdGVyL0RhdGVUaW1lRmlsdGVyLmpzIiwiLyoqXG4gKiBSZXR1cm5zIHRoZSBbeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmRzXSB0b2tlbnMgb2YgdGhlIHByb3ZpZGVkXG4gKiBgZGF0ZWAgYXMgaXQgd2lsbCBiZSByZW5kZXJlZCBpbiB0aGUgYHRpbWVab25lYC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHpUb2tlbml6ZURhdGUoZGF0ZSwgdGltZVpvbmUpIHtcbiAgdmFyIGR0ZiA9IGdldERhdGVUaW1lRm9ybWF0KHRpbWVab25lKVxuICByZXR1cm4gZHRmLmZvcm1hdFRvUGFydHMgPyBwYXJ0c09mZnNldChkdGYsIGRhdGUpIDogaGFja3lPZmZzZXQoZHRmLCBkYXRlKVxufVxuXG52YXIgdHlwZVRvUG9zID0ge1xuICB5ZWFyOiAwLFxuICBtb250aDogMSxcbiAgZGF5OiAyLFxuICBob3VyOiAzLFxuICBtaW51dGU6IDQsXG4gIHNlY29uZDogNVxufVxuXG5mdW5jdGlvbiBwYXJ0c09mZnNldChkdGYsIGRhdGUpIHtcbiAgdmFyIGZvcm1hdHRlZCA9IGR0Zi5mb3JtYXRUb1BhcnRzKGRhdGUpXG4gIHZhciBmaWxsZWQgPSBbXVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGZvcm1hdHRlZC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwb3MgPSB0eXBlVG9Qb3NbZm9ybWF0dGVkW2ldLnR5cGVdXG5cbiAgICBpZiAocG9zID49IDApIHtcbiAgICAgIGZpbGxlZFtwb3NdID0gcGFyc2VJbnQoZm9ybWF0dGVkW2ldLnZhbHVlLCAxMClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZpbGxlZFxufVxuXG5mdW5jdGlvbiBoYWNreU9mZnNldChkdGYsIGRhdGUpIHtcbiAgdmFyIGZvcm1hdHRlZCA9IGR0Zi5mb3JtYXQoZGF0ZSkucmVwbGFjZSgvXFx1MjAwRS9nLCAnJylcbiAgdmFyIHBhcnNlZCA9IC8oXFxkKylcXC8oXFxkKylcXC8oXFxkKyksPyAoXFxkKyk6KFxcZCspOihcXGQrKS8uZXhlYyhmb3JtYXR0ZWQpXG4gIC8vIHZhciBbLCBmTW9udGgsIGZEYXksIGZZZWFyLCBmSG91ciwgZk1pbnV0ZSwgZlNlY29uZF0gPSBwYXJzZWRcbiAgLy8gcmV0dXJuIFtmWWVhciwgZk1vbnRoLCBmRGF5LCBmSG91ciwgZk1pbnV0ZSwgZlNlY29uZF1cbiAgcmV0dXJuIFtwYXJzZWRbM10sIHBhcnNlZFsxXSwgcGFyc2VkWzJdLCBwYXJzZWRbNF0sIHBhcnNlZFs1XSwgcGFyc2VkWzZdXVxufVxuXG4vLyBHZXQgYSBjYWNoZWQgSW50bC5EYXRlVGltZUZvcm1hdCBpbnN0YW5jZSBmb3IgdGhlIElBTkEgYHRpbWVab25lYC4gVGhpcyBjYW4gYmUgdXNlZFxuLy8gdG8gZ2V0IGRldGVybWluaXN0aWMgbG9jYWwgZGF0ZS90aW1lIG91dHB1dCBhY2NvcmRpbmcgdG8gdGhlIGBlbi1VU2AgbG9jYWxlIHdoaWNoXG4vLyBjYW4gYmUgdXNlZCB0byBleHRyYWN0IGxvY2FsIHRpbWUgcGFydHMgYXMgbmVjZXNzYXJ5LlxudmFyIGR0ZkNhY2hlID0ge31cbmZ1bmN0aW9uIGdldERhdGVUaW1lRm9ybWF0KHRpbWVab25lKSB7XG4gIGlmICghZHRmQ2FjaGVbdGltZVpvbmVdKSB7XG4gICAgLy8gTmV3IGJyb3dzZXJzIHVzZSBgaG91ckN5Y2xlYCwgSUUgYW5kIENocm9tZSA8NzMgZG9lcyBub3Qgc3VwcG9ydCBpdCBhbmQgdXNlcyBgaG91cjEyYFxuICAgIHZhciB0ZXN0RGF0ZUZvcm1hdHRlZCA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCdlbi1VUycsIHtcbiAgICAgIGhvdXIxMjogZmFsc2UsXG4gICAgICB0aW1lWm9uZTogJ0FtZXJpY2EvTmV3X1lvcmsnLFxuICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgbW9udGg6ICcyLWRpZ2l0JyxcbiAgICAgIGRheTogJzItZGlnaXQnLFxuICAgICAgaG91cjogJzItZGlnaXQnLFxuICAgICAgbWludXRlOiAnMi1kaWdpdCcsXG4gICAgICBzZWNvbmQ6ICcyLWRpZ2l0J1xuICAgIH0pLmZvcm1hdChuZXcgRGF0ZSgnMjAxNC0wNi0yNVQwNDowMDowMC4xMjNaJykpXG4gICAgdmFyIGhvdXJDeWNsZVN1cHBvcnRlZCA9XG4gICAgICB0ZXN0RGF0ZUZvcm1hdHRlZCA9PT0gJzA2LzI1LzIwMTQsIDAwOjAwOjAwJyB8fFxuICAgICAgdGVzdERhdGVGb3JtYXR0ZWQgPT09ICfigI4wNuKAji/igI4yNeKAji/igI4yMDE04oCOIOKAjjAw4oCOOuKAjjAw4oCOOuKAjjAwJ1xuXG4gICAgZHRmQ2FjaGVbdGltZVpvbmVdID0gaG91ckN5Y2xlU3VwcG9ydGVkXG4gICAgICA/IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCdlbi1VUycsIHtcbiAgICAgICAgICBob3VyMTI6IGZhbHNlLFxuICAgICAgICAgIHRpbWVab25lOiB0aW1lWm9uZSxcbiAgICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICAgICAgbW9udGg6ICcyLWRpZ2l0JyxcbiAgICAgICAgICBkYXk6ICcyLWRpZ2l0JyxcbiAgICAgICAgICBob3VyOiAnMi1kaWdpdCcsXG4gICAgICAgICAgbWludXRlOiAnMi1kaWdpdCcsXG4gICAgICAgICAgc2Vjb25kOiAnMi1kaWdpdCdcbiAgICAgICAgfSlcbiAgICAgIDogbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2VuLVVTJywge1xuICAgICAgICAgIGhvdXJDeWNsZTogJ2gyMycsXG4gICAgICAgICAgdGltZVpvbmU6IHRpbWVab25lLFxuICAgICAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgICAgICBtb250aDogJzItZGlnaXQnLFxuICAgICAgICAgIGRheTogJzItZGlnaXQnLFxuICAgICAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcbiAgICAgICAgICBtaW51dGU6ICcyLWRpZ2l0JyxcbiAgICAgICAgICBzZWNvbmQ6ICcyLWRpZ2l0J1xuICAgICAgICB9KVxuICB9XG4gIHJldHVybiBkdGZDYWNoZVt0aW1lWm9uZV1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zLXR6L2VzbS9fbGliL3R6VG9rZW5pemVEYXRlL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tICcuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qcyc7XG5pbXBvcnQgYWRkTWlsbGlzZWNvbmRzIGZyb20gJy4uL2FkZE1pbGxpc2Vjb25kcy9pbmRleC5qcyc7XG4vKipcbiAqIEBuYW1lIHN1Yk1pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5IE1pbGxpc2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogIyMjIHYyLjAuMCBicmVha2luZyBjaGFuZ2VzOlxuICpcbiAqIC0gW0NoYW5nZXMgdGhhdCBhcmUgY29tbW9uIGZvciB0aGUgd2hvbGUgbGlicmFyeV0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdXBncmFkZUd1aWRlLm1kI0NvbW1vbi1DaGFuZ2VzKS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIHRvIGJlIHN1YnRyYWN0ZWRcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgbWlsbGlzZWNvbmRzIHN1YnRyYWN0ZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3VidHJhY3QgNzUwIG1pbGxpc2Vjb25kcyBmcm9tIDEwIEp1bHkgMjAxNCAxMjo0NTozMC4wMDA6XG4gKiB2YXIgcmVzdWx0ID0gc3ViTWlsbGlzZWNvbmRzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAxMiwgNDUsIDMwLCAwKSwgNzUwKVxuICogLy89PiBUaHUgSnVsIDEwIDIwMTQgMTI6NDU6MjkuMjUwXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3ViTWlsbGlzZWNvbmRzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignMiBhcmd1bWVudHMgcmVxdWlyZWQsIGJ1dCBvbmx5ICcgKyBhcmd1bWVudHMubGVuZ3RoICsgJyBwcmVzZW50Jyk7XG4gIH1cblxuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZE1pbGxpc2Vjb25kcyhkaXJ0eURhdGUsIC1hbW91bnQpO1xufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdWJNaWxsaXNlY29uZHMvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tICcuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qcyc7XG5pbXBvcnQgdG9EYXRlIGZyb20gJy4uL3RvRGF0ZS9pbmRleC5qcyc7XG4vKipcbiAqIEBuYW1lIGFkZE1pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5IE1pbGxpc2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqICMjIyB2Mi4wLjAgYnJlYWtpbmcgY2hhbmdlczpcbiAqXG4gKiAtIFtDaGFuZ2VzIHRoYXQgYXJlIGNvbW1vbiBmb3IgdGhlIHdob2xlIGxpYnJhcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VwZ3JhZGVHdWlkZS5tZCNDb21tb24tQ2hhbmdlcykuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIG1pbGxpc2Vjb25kcyB0byBiZSBhZGRlZFxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBtaWxsaXNlY29uZHMgYWRkZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDc1MCBtaWxsaXNlY29uZHMgdG8gMTAgSnVseSAyMDE0IDEyOjQ1OjMwLjAwMDpcbiAqIHZhciByZXN1bHQgPSBhZGRNaWxsaXNlY29uZHMobmV3IERhdGUoMjAxNCwgNiwgMTAsIDEyLCA0NSwgMzAsIDApLCA3NTApXG4gKiAvLz0+IFRodSBKdWwgMTAgMjAxNCAxMjo0NTozMC43NTBcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRNaWxsaXNlY29uZHMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCcyIGFyZ3VtZW50cyByZXF1aXJlZCwgYnV0IG9ubHkgJyArIGFyZ3VtZW50cy5sZW5ndGggKyAnIHByZXNlbnQnKTtcbiAgfVxuXG4gIHZhciB0aW1lc3RhbXAgPSB0b0RhdGUoZGlydHlEYXRlKS5nZXRUaW1lKCk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gbmV3IERhdGUodGltZXN0YW1wICsgYW1vdW50KTtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkTWlsbGlzZWNvbmRzL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSIsIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGFyZ3VtZW50IC0gdGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPT4gVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz0+IFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAxKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignMSBhcmd1bWVudCByZXF1aXJlZCwgYnV0IG9ubHkgJyArIGFyZ3VtZW50cy5sZW5ndGggKyAnIHByZXNlbnQnKTtcbiAgfVxuXG4gIHZhciBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpOyAvLyBDbG9uZSB0aGUgZGF0ZVxuXG4gIGlmIChhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHwgdHlwZW9mIGFyZ3VtZW50ID09PSAnb2JqZWN0JyAmJiBhcmdTdHIgPT09ICdbb2JqZWN0IERhdGVdJykge1xuICAgIC8vIFByZXZlbnQgdGhlIGRhdGUgdG8gbG9zZSB0aGUgbWlsbGlzZWNvbmRzIHdoZW4gcGFzc2VkIHRvIG5ldyBEYXRlKCkgaW4gSUUxMFxuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudC5nZXRUaW1lKCkpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBhcmd1bWVudCA9PT0gJ251bWJlcicgfHwgYXJnU3RyID09PSAnW29iamVjdCBOdW1iZXJdJykge1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKCh0eXBlb2YgYXJndW1lbnQgPT09ICdzdHJpbmcnIHx8IGFyZ1N0ciA9PT0gJ1tvYmplY3QgU3RyaW5nXScpICYmIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihcIlN0YXJ0aW5nIHdpdGggdjIuMC4wLWJldGEuMSBkYXRlLWZucyBkb2Vzbid0IGFjY2VwdCBzdHJpbmdzIGFzIGFyZ3VtZW50cy4gUGxlYXNlIHVzZSBgcGFyc2VJU09gIHRvIHBhcnNlIHN0cmluZ3MuIFNlZTogaHR0cHM6Ly9naXQuaW8vZmp1bGVcIik7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG5cbiAgICAgIGNvbnNvbGUud2FybihuZXcgRXJyb3IoKS5zdGFjayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vdG9EYXRlL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSAnZGF0ZS1mbnMvZXNtL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzJ1xuaW1wb3J0IGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMgZnJvbSAnZGF0ZS1mbnMvZXNtL19saWIvZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcy9pbmRleC5qcydcbmltcG9ydCB0elBhcnNlVGltZXpvbmUgZnJvbSAnLi4vX2xpYi90elBhcnNlVGltZXpvbmUnXG5cbnZhciBNSUxMSVNFQ09ORFNfSU5fSE9VUiA9IDM2MDAwMDBcbnZhciBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFID0gNjAwMDBcbnZhciBERUZBVUxUX0FERElUSU9OQUxfRElHSVRTID0gMlxuXG52YXIgcGF0dGVybnMgPSB7XG4gIGRhdGVUaW1lRGVsaW1ldGVyOiAvW1QgXS8sXG4gIHBsYWluVGltZTogLzovLFxuICB0aW1lWm9uZURlbGltZXRlcjogL1taIF0vaSxcblxuICAvLyB5ZWFyIHRva2Vuc1xuICBZWTogL14oXFxkezJ9KSQvLFxuICBZWVk6IFtcbiAgICAvXihbKy1dXFxkezJ9KSQvLCAvLyAwIGFkZGl0aW9uYWwgZGlnaXRzXG4gICAgL14oWystXVxcZHszfSkkLywgLy8gMSBhZGRpdGlvbmFsIGRpZ2l0XG4gICAgL14oWystXVxcZHs0fSkkLyAvLyAyIGFkZGl0aW9uYWwgZGlnaXRzXG4gIF0sXG4gIFlZWVk6IC9eKFxcZHs0fSkvLFxuICBZWVlZWTogW1xuICAgIC9eKFsrLV1cXGR7NH0pLywgLy8gMCBhZGRpdGlvbmFsIGRpZ2l0c1xuICAgIC9eKFsrLV1cXGR7NX0pLywgLy8gMSBhZGRpdGlvbmFsIGRpZ2l0XG4gICAgL14oWystXVxcZHs2fSkvIC8vIDIgYWRkaXRpb25hbCBkaWdpdHNcbiAgXSxcblxuICAvLyBkYXRlIHRva2Vuc1xuICBNTTogL14tKFxcZHsyfSkkLyxcbiAgREREOiAvXi0/KFxcZHszfSkkLyxcbiAgTU1ERDogL14tPyhcXGR7Mn0pLT8oXFxkezJ9KSQvLFxuICBXd3c6IC9eLT9XKFxcZHsyfSkkLyxcbiAgV3d3RDogL14tP1coXFxkezJ9KS0/KFxcZHsxfSkkLyxcblxuICBISDogL14oXFxkezJ9KFsuLF1cXGQqKT8pJC8sXG4gIEhITU06IC9eKFxcZHsyfSk6PyhcXGR7Mn0oWy4sXVxcZCopPykkLyxcbiAgSEhNTVNTOiAvXihcXGR7Mn0pOj8oXFxkezJ9KTo/KFxcZHsyfShbLixdXFxkKik/KSQvLFxuXG4gIC8vIHRpbWV6b25lIHRva2VucyAodG8gaWRlbnRpZnkgdGhlIHByZXNlbmNlIG9mIGEgdHopXG4gIHRpbWV6b25lOiAvKFtaKy1dLip8IFVUQ3woPzpbYS16QS1aXStcXC9bYS16QS1aX10rKD86XFwvW2EtekEtWl9dKyk/KSkkL1xufVxuXG4vKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiBhbiBhcmd1bWVudCBpcyBhIHN0cmluZywgdGhlIGZ1bmN0aW9uIHRyaWVzIHRvIHBhcnNlIGl0LlxuICogRnVuY3Rpb24gYWNjZXB0cyBjb21wbGV0ZSBJU08gODYwMSBmb3JtYXRzIGFzIHdlbGwgYXMgcGFydGlhbCBpbXBsZW1lbnRhdGlvbnMuXG4gKiBJU08gODYwMTogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMVxuICogSWYgdGhlIGZ1bmN0aW9uIGNhbm5vdCBwYXJzZSB0aGUgc3RyaW5nIG9yIHRoZSB2YWx1ZXMgYXJlIGludmFsaWQsIGl0IHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICogQWxsICpkYXRlLWZucyogZnVuY3Rpb25zIHdpbGwgdGhyb3cgYFJhbmdlRXJyb3JgIGlmIGBvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHNgIGlzIG5vdCAwLCAxLCAyIG9yIHVuZGVmaW5lZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8U3RyaW5nfE51bWJlcn0gYXJndW1lbnQgLSB0aGUgdmFsdWUgdG8gY29udmVydFxuICogQHBhcmFtIHtPcHRpb25zV2l0aFRafSBbb3B0aW9uc10gLSB0aGUgb2JqZWN0IHdpdGggb3B0aW9ucy4gU2VlIFtPcHRpb25zXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL09wdGlvbnN9XG4gKiBAcGFyYW0gezB8MXwyfSBbb3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzPTJdIC0gdGhlIGFkZGl0aW9uYWwgbnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgZXh0ZW5kZWQgeWVhciBmb3JtYXRcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy50aW1lWm9uZT0nJ10gLSB1c2VkIHRvIHNwZWNpZnkgdGhlIElBTkEgdGltZSB6b25lIG9mZnNldCBvZiBhIGRhdGUgU3RyaW5nLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHNgIG11c3QgYmUgMCwgMSBvciAyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgc3RyaW5nICcyMDE0LTAyLTExVDExOjMwOjMwJyB0byBkYXRlOlxuICogdmFyIHJlc3VsdCA9IHRvRGF0ZSgnMjAxNC0wMi0xMVQxMTozMDozMCcpXG4gKiAvLz0+IFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHN0cmluZyAnKzAyMDE0MTAxJyB0byBkYXRlLFxuICogLy8gaWYgdGhlIGFkZGl0aW9uYWwgbnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgZXh0ZW5kZWQgeWVhciBmb3JtYXQgaXMgMTpcbiAqIHZhciByZXN1bHQgPSB0b0RhdGUoJyswMjAxNDEwMScsIHthZGRpdGlvbmFsRGlnaXRzOiAxfSlcbiAqIC8vPT4gRnJpIEFwciAxMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCwgZGlydHlPcHRpb25zKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAnMSBhcmd1bWVudCByZXF1aXJlZCwgYnV0IG9ubHkgJyArIGFyZ3VtZW50cy5sZW5ndGggKyAnIHByZXNlbnQnXG4gICAgKVxuICB9XG5cbiAgaWYgKGFyZ3VtZW50ID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTilcbiAgfVxuXG4gIHZhciBvcHRpb25zID0gZGlydHlPcHRpb25zIHx8IHt9XG5cbiAgdmFyIGFkZGl0aW9uYWxEaWdpdHMgPVxuICAgIG9wdGlvbnMuYWRkaXRpb25hbERpZ2l0cyA9PSBudWxsXG4gICAgICA/IERFRkFVTFRfQURESVRJT05BTF9ESUdJVFNcbiAgICAgIDogdG9JbnRlZ2VyKG9wdGlvbnMuYWRkaXRpb25hbERpZ2l0cylcbiAgaWYgKFxuICAgIGFkZGl0aW9uYWxEaWdpdHMgIT09IDIgJiZcbiAgICBhZGRpdGlvbmFsRGlnaXRzICE9PSAxICYmXG4gICAgYWRkaXRpb25hbERpZ2l0cyAhPT0gMFxuICApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYWRkaXRpb25hbERpZ2l0cyBtdXN0IGJlIDAsIDEgb3IgMicpXG4gIH1cblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gJ29iamVjdCcgJiZcbiAgICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCkgPT09ICdbb2JqZWN0IERhdGVdJylcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50LmdldFRpbWUoKSlcbiAgfSBlbHNlIGlmIChcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09ICdudW1iZXInIHx8XG4gICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KSA9PT0gJ1tvYmplY3QgTnVtYmVyXSdcbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KVxuICB9IGVsc2UgaWYgKFxuICAgICEoXG4gICAgICB0eXBlb2YgYXJndW1lbnQgPT09ICdzdHJpbmcnIHx8XG4gICAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpID09PSAnW29iamVjdCBTdHJpbmddJ1xuICAgIClcbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTilcbiAgfVxuXG4gIHZhciBkYXRlU3RyaW5ncyA9IHNwbGl0RGF0ZVN0cmluZyhhcmd1bWVudClcblxuICB2YXIgcGFyc2VZZWFyUmVzdWx0ID0gcGFyc2VZZWFyKGRhdGVTdHJpbmdzLmRhdGUsIGFkZGl0aW9uYWxEaWdpdHMpXG4gIHZhciB5ZWFyID0gcGFyc2VZZWFyUmVzdWx0LnllYXJcbiAgdmFyIHJlc3REYXRlU3RyaW5nID0gcGFyc2VZZWFyUmVzdWx0LnJlc3REYXRlU3RyaW5nXG5cbiAgdmFyIGRhdGUgPSBwYXJzZURhdGUocmVzdERhdGVTdHJpbmcsIHllYXIpXG5cbiAgaWYgKGlzTmFOKGRhdGUpKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTilcbiAgfVxuXG4gIGlmIChkYXRlKSB7XG4gICAgdmFyIHRpbWVzdGFtcCA9IGRhdGUuZ2V0VGltZSgpXG4gICAgdmFyIHRpbWUgPSAwXG4gICAgdmFyIG9mZnNldFxuXG4gICAgaWYgKGRhdGVTdHJpbmdzLnRpbWUpIHtcbiAgICAgIHRpbWUgPSBwYXJzZVRpbWUoZGF0ZVN0cmluZ3MudGltZSlcblxuICAgICAgaWYgKGlzTmFOKHRpbWUpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRhdGVTdHJpbmdzLnRpbWV6b25lIHx8IG9wdGlvbnMudGltZVpvbmUpIHtcbiAgICAgIG9mZnNldCA9IHR6UGFyc2VUaW1lem9uZShcbiAgICAgICAgZGF0ZVN0cmluZ3MudGltZXpvbmUgfHwgb3B0aW9ucy50aW1lWm9uZSxcbiAgICAgICAgbmV3IERhdGUodGltZXN0YW1wICsgdGltZSlcbiAgICAgIClcbiAgICAgIGlmIChpc05hTihvZmZzZXQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGdldCBvZmZzZXQgYWNjdXJhdGUgdG8gaG91ciBpbiB0aW1lem9uZXMgdGhhdCBjaGFuZ2Ugb2Zmc2V0XG4gICAgICBvZmZzZXQgPSBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKG5ldyBEYXRlKHRpbWVzdGFtcCArIHRpbWUpKVxuICAgICAgb2Zmc2V0ID0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhcbiAgICAgICAgbmV3IERhdGUodGltZXN0YW1wICsgdGltZSArIG9mZnNldClcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERhdGUodGltZXN0YW1wICsgdGltZSArIG9mZnNldClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKVxuICB9XG59XG5cbmZ1bmN0aW9uIHNwbGl0RGF0ZVN0cmluZyhkYXRlU3RyaW5nKSB7XG4gIHZhciBkYXRlU3RyaW5ncyA9IHt9XG4gIHZhciBhcnJheSA9IGRhdGVTdHJpbmcuc3BsaXQocGF0dGVybnMuZGF0ZVRpbWVEZWxpbWV0ZXIpXG4gIHZhciB0aW1lU3RyaW5nXG5cbiAgaWYgKHBhdHRlcm5zLnBsYWluVGltZS50ZXN0KGFycmF5WzBdKSkge1xuICAgIGRhdGVTdHJpbmdzLmRhdGUgPSBudWxsXG4gICAgdGltZVN0cmluZyA9IGFycmF5WzBdXG4gIH0gZWxzZSB7XG4gICAgZGF0ZVN0cmluZ3MuZGF0ZSA9IGFycmF5WzBdXG4gICAgdGltZVN0cmluZyA9IGFycmF5WzFdXG4gICAgZGF0ZVN0cmluZ3MudGltZXpvbmUgPSBhcnJheVsyXVxuICAgIGlmIChwYXR0ZXJucy50aW1lWm9uZURlbGltZXRlci50ZXN0KGRhdGVTdHJpbmdzLmRhdGUpKSB7XG4gICAgICBkYXRlU3RyaW5ncy5kYXRlID0gZGF0ZVN0cmluZy5zcGxpdChwYXR0ZXJucy50aW1lWm9uZURlbGltZXRlcilbMF1cbiAgICAgIHRpbWVTdHJpbmcgPSBkYXRlU3RyaW5nLnN1YnN0cihkYXRlU3RyaW5ncy5kYXRlLmxlbmd0aCwgZGF0ZVN0cmluZy5sZW5ndGgpXG4gICAgfVxuICB9XG5cbiAgaWYgKHRpbWVTdHJpbmcpIHtcbiAgICB2YXIgdG9rZW4gPSBwYXR0ZXJucy50aW1lem9uZS5leGVjKHRpbWVTdHJpbmcpXG4gICAgaWYgKHRva2VuKSB7XG4gICAgICBkYXRlU3RyaW5ncy50aW1lID0gdGltZVN0cmluZy5yZXBsYWNlKHRva2VuWzFdLCAnJylcbiAgICAgIGRhdGVTdHJpbmdzLnRpbWV6b25lID0gdG9rZW5bMV1cbiAgICB9IGVsc2Uge1xuICAgICAgZGF0ZVN0cmluZ3MudGltZSA9IHRpbWVTdHJpbmdcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGF0ZVN0cmluZ3Ncbn1cblxuZnVuY3Rpb24gcGFyc2VZZWFyKGRhdGVTdHJpbmcsIGFkZGl0aW9uYWxEaWdpdHMpIHtcbiAgdmFyIHBhdHRlcm5ZWVkgPSBwYXR0ZXJucy5ZWVlbYWRkaXRpb25hbERpZ2l0c11cbiAgdmFyIHBhdHRlcm5ZWVlZWSA9IHBhdHRlcm5zLllZWVlZW2FkZGl0aW9uYWxEaWdpdHNdXG5cbiAgdmFyIHRva2VuXG5cbiAgLy8gWVlZWSBvciDCsVlZWVlZXG4gIHRva2VuID0gcGF0dGVybnMuWVlZWS5leGVjKGRhdGVTdHJpbmcpIHx8IHBhdHRlcm5ZWVlZWS5leGVjKGRhdGVTdHJpbmcpXG4gIGlmICh0b2tlbikge1xuICAgIHZhciB5ZWFyU3RyaW5nID0gdG9rZW5bMV1cbiAgICByZXR1cm4ge1xuICAgICAgeWVhcjogcGFyc2VJbnQoeWVhclN0cmluZywgMTApLFxuICAgICAgcmVzdERhdGVTdHJpbmc6IGRhdGVTdHJpbmcuc2xpY2UoeWVhclN0cmluZy5sZW5ndGgpXG4gICAgfVxuICB9XG5cbiAgLy8gWVkgb3IgwrFZWVlcbiAgdG9rZW4gPSBwYXR0ZXJucy5ZWS5leGVjKGRhdGVTdHJpbmcpIHx8IHBhdHRlcm5ZWVkuZXhlYyhkYXRlU3RyaW5nKVxuICBpZiAodG9rZW4pIHtcbiAgICB2YXIgY2VudHVyeVN0cmluZyA9IHRva2VuWzFdXG4gICAgcmV0dXJuIHtcbiAgICAgIHllYXI6IHBhcnNlSW50KGNlbnR1cnlTdHJpbmcsIDEwKSAqIDEwMCxcbiAgICAgIHJlc3REYXRlU3RyaW5nOiBkYXRlU3RyaW5nLnNsaWNlKGNlbnR1cnlTdHJpbmcubGVuZ3RoKVxuICAgIH1cbiAgfVxuXG4gIC8vIEludmFsaWQgSVNPLWZvcm1hdHRlZCB5ZWFyXG4gIHJldHVybiB7XG4gICAgeWVhcjogbnVsbFxuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlRGF0ZShkYXRlU3RyaW5nLCB5ZWFyKSB7XG4gIC8vIEludmFsaWQgSVNPLWZvcm1hdHRlZCB5ZWFyXG4gIGlmICh5ZWFyID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHZhciB0b2tlblxuICB2YXIgZGF0ZVxuICB2YXIgbW9udGhcbiAgdmFyIHdlZWtcblxuICAvLyBZWVlZXG4gIGlmIChkYXRlU3RyaW5nLmxlbmd0aCA9PT0gMCkge1xuICAgIGRhdGUgPSBuZXcgRGF0ZSgwKVxuICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeWVhcilcbiAgICByZXR1cm4gZGF0ZVxuICB9XG5cbiAgLy8gWVlZWS1NTVxuICB0b2tlbiA9IHBhdHRlcm5zLk1NLmV4ZWMoZGF0ZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgZGF0ZSA9IG5ldyBEYXRlKDApXG4gICAgbW9udGggPSBwYXJzZUludCh0b2tlblsxXSwgMTApIC0gMVxuXG4gICAgaWYgKCF2YWxpZGF0ZURhdGUoeWVhciwgbW9udGgpKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoTmFOKVxuICAgIH1cblxuICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeWVhciwgbW9udGgpXG4gICAgcmV0dXJuIGRhdGVcbiAgfVxuXG4gIC8vIFlZWVktREREIG9yIFlZWVlERERcbiAgdG9rZW4gPSBwYXR0ZXJucy5EREQuZXhlYyhkYXRlU3RyaW5nKVxuICBpZiAodG9rZW4pIHtcbiAgICBkYXRlID0gbmV3IERhdGUoMClcbiAgICB2YXIgZGF5T2ZZZWFyID0gcGFyc2VJbnQodG9rZW5bMV0sIDEwKVxuXG4gICAgaWYgKCF2YWxpZGF0ZURheU9mWWVhckRhdGUoeWVhciwgZGF5T2ZZZWFyKSkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKE5hTilcbiAgICB9XG5cbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHllYXIsIDAsIGRheU9mWWVhcilcbiAgICByZXR1cm4gZGF0ZVxuICB9XG5cbiAgLy8geXl5eS1NTS1kZCBvciBZWVlZTU1ERFxuICB0b2tlbiA9IHBhdHRlcm5zLk1NREQuZXhlYyhkYXRlU3RyaW5nKVxuICBpZiAodG9rZW4pIHtcbiAgICBkYXRlID0gbmV3IERhdGUoMClcbiAgICBtb250aCA9IHBhcnNlSW50KHRva2VuWzFdLCAxMCkgLSAxXG4gICAgdmFyIGRheSA9IHBhcnNlSW50KHRva2VuWzJdLCAxMClcblxuICAgIGlmICghdmFsaWRhdGVEYXRlKHllYXIsIG1vbnRoLCBkYXkpKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoTmFOKVxuICAgIH1cblxuICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeWVhciwgbW9udGgsIGRheSlcbiAgICByZXR1cm4gZGF0ZVxuICB9XG5cbiAgLy8gWVlZWS1Xd3cgb3IgWVlZWVd3d1xuICB0b2tlbiA9IHBhdHRlcm5zLld3dy5leGVjKGRhdGVTdHJpbmcpXG4gIGlmICh0b2tlbikge1xuICAgIHdlZWsgPSBwYXJzZUludCh0b2tlblsxXSwgMTApIC0gMVxuXG4gICAgaWYgKCF2YWxpZGF0ZVdlZWtEYXRlKHllYXIsIHdlZWspKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoTmFOKVxuICAgIH1cblxuICAgIHJldHVybiBkYXlPZklTT1dlZWtZZWFyKHllYXIsIHdlZWspXG4gIH1cblxuICAvLyBZWVlZLVd3dy1EIG9yIFlZWVlXd3dEXG4gIHRva2VuID0gcGF0dGVybnMuV3d3RC5leGVjKGRhdGVTdHJpbmcpXG4gIGlmICh0b2tlbikge1xuICAgIHdlZWsgPSBwYXJzZUludCh0b2tlblsxXSwgMTApIC0gMVxuICAgIHZhciBkYXlPZldlZWsgPSBwYXJzZUludCh0b2tlblsyXSwgMTApIC0gMVxuXG4gICAgaWYgKCF2YWxpZGF0ZVdlZWtEYXRlKHllYXIsIHdlZWssIGRheU9mV2VlaykpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pXG4gICAgfVxuXG4gICAgcmV0dXJuIGRheU9mSVNPV2Vla1llYXIoeWVhciwgd2VlaywgZGF5T2ZXZWVrKVxuICB9XG5cbiAgLy8gSW52YWxpZCBJU08tZm9ybWF0dGVkIGRhdGVcbiAgcmV0dXJuIG51bGxcbn1cblxuZnVuY3Rpb24gcGFyc2VUaW1lKHRpbWVTdHJpbmcpIHtcbiAgdmFyIHRva2VuXG4gIHZhciBob3Vyc1xuICB2YXIgbWludXRlc1xuXG4gIC8vIGhoXG4gIHRva2VuID0gcGF0dGVybnMuSEguZXhlYyh0aW1lU3RyaW5nKVxuICBpZiAodG9rZW4pIHtcbiAgICBob3VycyA9IHBhcnNlRmxvYXQodG9rZW5bMV0ucmVwbGFjZSgnLCcsICcuJykpXG5cbiAgICBpZiAoIXZhbGlkYXRlVGltZShob3VycykpIHtcbiAgICAgIHJldHVybiBOYU5cbiAgICB9XG5cbiAgICByZXR1cm4gKGhvdXJzICUgMjQpICogTUlMTElTRUNPTkRTX0lOX0hPVVJcbiAgfVxuXG4gIC8vIGhoOm1tIG9yIGhobW1cbiAgdG9rZW4gPSBwYXR0ZXJucy5ISE1NLmV4ZWModGltZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgaG91cnMgPSBwYXJzZUludCh0b2tlblsxXSwgMTApXG4gICAgbWludXRlcyA9IHBhcnNlRmxvYXQodG9rZW5bMl0ucmVwbGFjZSgnLCcsICcuJykpXG5cbiAgICBpZiAoIXZhbGlkYXRlVGltZShob3VycywgbWludXRlcykpIHtcbiAgICAgIHJldHVybiBOYU5cbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgKGhvdXJzICUgMjQpICogTUlMTElTRUNPTkRTX0lOX0hPVVIgKyBtaW51dGVzICogTUlMTElTRUNPTkRTX0lOX01JTlVURVxuICAgIClcbiAgfVxuXG4gIC8vIGhoOm1tOnNzIG9yIGhobW1zc1xuICB0b2tlbiA9IHBhdHRlcm5zLkhITU1TUy5leGVjKHRpbWVTdHJpbmcpXG4gIGlmICh0b2tlbikge1xuICAgIGhvdXJzID0gcGFyc2VJbnQodG9rZW5bMV0sIDEwKVxuICAgIG1pbnV0ZXMgPSBwYXJzZUludCh0b2tlblsyXSwgMTApXG4gICAgdmFyIHNlY29uZHMgPSBwYXJzZUZsb2F0KHRva2VuWzNdLnJlcGxhY2UoJywnLCAnLicpKVxuXG4gICAgaWYgKCF2YWxpZGF0ZVRpbWUoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpKSB7XG4gICAgICByZXR1cm4gTmFOXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIChob3VycyAlIDI0KSAqIE1JTExJU0VDT05EU19JTl9IT1VSICtcbiAgICAgIG1pbnV0ZXMgKiBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFICtcbiAgICAgIHNlY29uZHMgKiAxMDAwXG4gICAgKVxuICB9XG5cbiAgLy8gSW52YWxpZCBJU08tZm9ybWF0dGVkIHRpbWVcbiAgcmV0dXJuIG51bGxcbn1cblxuZnVuY3Rpb24gZGF5T2ZJU09XZWVrWWVhcihpc29XZWVrWWVhciwgd2VlaywgZGF5KSB7XG4gIHdlZWsgPSB3ZWVrIHx8IDBcbiAgZGF5ID0gZGF5IHx8IDBcbiAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgwKVxuICBkYXRlLnNldFVUQ0Z1bGxZZWFyKGlzb1dlZWtZZWFyLCAwLCA0KVxuICB2YXIgZm91cnRoT2ZKYW51YXJ5RGF5ID0gZGF0ZS5nZXRVVENEYXkoKSB8fCA3XG4gIHZhciBkaWZmID0gd2VlayAqIDcgKyBkYXkgKyAxIC0gZm91cnRoT2ZKYW51YXJ5RGF5XG4gIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSArIGRpZmYpXG4gIHJldHVybiBkYXRlXG59XG5cbi8vIFZhbGlkYXRpb24gZnVuY3Rpb25zXG5cbnZhciBEQVlTX0lOX01PTlRIID0gWzMxLCAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdXG52YXIgREFZU19JTl9NT05USF9MRUFQX1lFQVIgPSBbMzEsIDI5LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV1cblxuZnVuY3Rpb24gaXNMZWFwWWVhckluZGV4KHllYXIpIHtcbiAgcmV0dXJuIHllYXIgJSA0MDAgPT09IDAgfHwgKHllYXIgJSA0ID09PSAwICYmIHllYXIgJSAxMDAgIT09IDApXG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlRGF0ZSh5ZWFyLCBtb250aCwgZGF0ZSkge1xuICBpZiAobW9udGggPCAwIHx8IG1vbnRoID4gMTEpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmIChkYXRlICE9IG51bGwpIHtcbiAgICBpZiAoZGF0ZSA8IDEpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHZhciBpc0xlYXBZZWFyID0gaXNMZWFwWWVhckluZGV4KHllYXIpXG4gICAgaWYgKGlzTGVhcFllYXIgJiYgZGF0ZSA+IERBWVNfSU5fTU9OVEhfTEVBUF9ZRUFSW21vbnRoXSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIGlmICghaXNMZWFwWWVhciAmJiBkYXRlID4gREFZU19JTl9NT05USFttb250aF0pIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlRGF5T2ZZZWFyRGF0ZSh5ZWFyLCBkYXlPZlllYXIpIHtcbiAgaWYgKGRheU9mWWVhciA8IDEpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHZhciBpc0xlYXBZZWFyID0gaXNMZWFwWWVhckluZGV4KHllYXIpXG4gIGlmIChpc0xlYXBZZWFyICYmIGRheU9mWWVhciA+IDM2Nikge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGlmICghaXNMZWFwWWVhciAmJiBkYXlPZlllYXIgPiAzNjUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlV2Vla0RhdGUoeWVhciwgd2VlaywgZGF5KSB7XG4gIGlmICh3ZWVrIDwgMCB8fCB3ZWVrID4gNTIpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmIChkYXkgIT0gbnVsbCAmJiAoZGF5IDwgMCB8fCBkYXkgPiA2KSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVUaW1lKGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKSB7XG4gIGlmIChob3VycyAhPSBudWxsICYmIChob3VycyA8IDAgfHwgaG91cnMgPj0gMjUpKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBpZiAobWludXRlcyAhPSBudWxsICYmIChtaW51dGVzIDwgMCB8fCBtaW51dGVzID49IDYwKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgaWYgKHNlY29uZHMgIT0gbnVsbCAmJiAoc2Vjb25kcyA8IDAgfHwgc2Vjb25kcyA+PSA2MCkpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9kYXRlLWZucy10ei9lc20vdG9EYXRlL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSIsInZhciBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFID0gNjAwMDA7XG4vKipcbiAqIEdvb2dsZSBDaHJvbWUgYXMgb2YgNjcuMC4zMzk2Ljg3IGludHJvZHVjZWQgdGltZXpvbmVzIHdpdGggb2Zmc2V0IHRoYXQgaW5jbHVkZXMgc2Vjb25kcy5cbiAqIFRoZXkgdXN1YWxseSBhcHBlYXIgZm9yIGRhdGVzIHRoYXQgZGVub3RlIHRpbWUgYmVmb3JlIHRoZSB0aW1lem9uZXMgd2VyZSBpbnRyb2R1Y2VkXG4gKiAoZS5nLiBmb3IgJ0V1cm9wZS9QcmFndWUnIHRpbWV6b25lIHRoZSBvZmZzZXQgaXMgR01UKzAwOjU3OjQ0IGJlZm9yZSAxIE9jdG9iZXIgMTg5MVxuICogYW5kIEdNVCswMTowMDowMCBhZnRlciB0aGF0IGRhdGUpXG4gKlxuICogRGF0ZSNnZXRUaW1lem9uZU9mZnNldCByZXR1cm5zIHRoZSBvZmZzZXQgaW4gbWludXRlcyBhbmQgd291bGQgcmV0dXJuIDU3IGZvciB0aGUgZXhhbXBsZSBhYm92ZSxcbiAqIHdoaWNoIHdvdWxkIGxlYWQgdG8gaW5jb3JyZWN0IGNhbGN1bGF0aW9ucy5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRpbWV6b25lIG9mZnNldCBpbiBtaWxsaXNlY29uZHMgdGhhdCB0YWtlcyBzZWNvbmRzIGluIGFjY291bnQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhkaXJ0eURhdGUpIHtcbiAgdmFyIGRhdGUgPSBuZXcgRGF0ZShkaXJ0eURhdGUuZ2V0VGltZSgpKTtcbiAgdmFyIGJhc2VUaW1lem9uZU9mZnNldCA9IE1hdGguY2VpbChkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkpO1xuICBkYXRlLnNldFNlY29uZHMoMCwgMCk7XG4gIHZhciBtaWxsaXNlY29uZHNQYXJ0T2ZUaW1lem9uZU9mZnNldCA9IGRhdGUuZ2V0VGltZSgpICUgTUlMTElTRUNPTkRTX0lOX01JTlVURTtcbiAgcmV0dXJuIGJhc2VUaW1lem9uZU9mZnNldCAqIE1JTExJU0VDT05EU19JTl9NSU5VVEUgKyBtaWxsaXNlY29uZHNQYXJ0T2ZUaW1lem9uZU9mZnNldDtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBiYXNpcy1hZ2dyaWQtY29tcG9uZW50cyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvdHlwZS1idWlsdGlucyAqL1xuXG4vKipcbiAqIEV2ZW50cyBNaXhpblxuICpcbiAqIEFsbG93IGNsYXNzZXMgdG8gaGF2ZSB0aGVpciBvd24gZXZlbnRzIG1hbmFnZXJcbiAqXG4gKiBAcGFyYW0ge0NsYXNzfSBzdXBlckNsYXNzXG4gKlxuICogQGF1dGhvciBIeXlhbiBBYm8gRmFraGVyIDxoYWJvZmFraGVyQGJhc2lzLmNvbT5cbiAqL1xuY29uc3QgRXZlbnRzTWl4aW4gPSBzdXBlckNsYXNzID0+XG4gIGNsYXNzIGV4dGVuZHMgc3VwZXJDbGFzcyB7XG4gICAgLyoqXG4gICAgICogT2JqZWN0IG9mIHJlZ2lzdGVycyBoYW5kbGVyc1xuICAgICAqXG4gICAgICogQHR5cGUge09iamVjdH1cbiAgICAgKi9cbiAgICBfX2hhbmRsZXJzID0ge31cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVyIGFuIGV2ZW50IGhhbmRsZXJcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIGV2ZW50IG5hbWVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIGhhbmRsZXIgZnVuY3Rpb25cbiAgICAgKi9cbiAgICBvbihuYW1lLCBoYW5kbGVyKSB7XG4gICAgICB0aGlzLl9faGFuZGxlcnNbbmFtZV0gPSB0aGlzLl9faGFuZGxlcnNbbmFtZV0gfHwgW11cbiAgICAgIHRoaXMuX19oYW5kbGVyc1tuYW1lXS5wdXNoKGhhbmRsZXIpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIGFuIGV2ZW50IGhhbmRsZXJcbiAgICAgKlxuICAgICAqICoqTm90ZSA6KiogaWYgaGFuZGxlciBpcyBub3QgcHJvdmlkZWQgdGhlbiBhbGwgcmVnaXN0ZXJlZCBoYW5kbGVyIGZvciB0aGUgZ2l2ZW4gZXZlbnQgd2lsbCBiZSByZW1vdmVkXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBldmVudCBuYW1lXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciBoYW5kbGVyIGZ1bmN0aW9uXG4gICAgICovXG4gICAgb2ZmKG5hbWUsIGhhbmRsZXIpIHtcbiAgICAgIHRoaXMuX19oYW5kbGVyc1tuYW1lXSA9IHRoaXMuX19oYW5kbGVyc1tuYW1lXSB8fCBbXVxuICAgICAgaWYgKCFoYW5kbGVyKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLl9faGFuZGxlcnNbbmFtZV1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAoY29uc3QgcmVnaXN0ZXJlZEhhbmRsZXIgaW4gdGhpcy5fX2hhbmRsZXJzKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5fX2hhbmRsZXJzLmhhc093blByb3BlcnR5KHJlZ2lzdGVyZWRIYW5kbGVyKSAmJlxuICAgICAgICAgICAgdGhpcy5fX2hhbmRsZXJzW3JlZ2lzdGVyZWRIYW5kbGVyXSA9PT0gaGFuZGxlclxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuX19oYW5kbGVyc1tuYW1lXVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5vdGlmeSBoYW5kbGVyc1xuICAgICAqXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgZXZlbnQgbmFtZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBldmVudCBwYXlsb2FkXG4gICAgICovXG4gICAgbm90aWZ5KG5hbWUsIHBheWxvYWQpIHtcbiAgICAgIGNvbnN0IGhhbmRsZXJzID0gdGhpcy5fX2hhbmRsZXJzW25hbWVdIHx8IFtdXG4gICAgICBoYW5kbGVycy5mb3JFYWNoKGhhbmRsZXIgPT4ge1xuICAgICAgICBoYW5kbGVyKHBheWxvYWQpXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4vKipcbiAqIEFuIGV2ZW50cyBtaXhpbiBkZWNvcmF0b3JcbiAqXG4gKiBAcGFyYW0ge0NsYXNzfSBzdXBlckNsYXNzXG4gKlxuICogQHNlZSB7RXZlbnRzTWl4aW59XG4gKi9cbmZ1bmN0aW9uIHdpdGhFdmVudHNNaXhpbihzdXBlckNsYXNzKSB7XG4gIHJldHVybiBFdmVudHNNaXhpbihzdXBlckNsYXNzKVxufVxuXG5leHBvcnQgZGVmYXVsdCBFdmVudHNNaXhpblxuZXhwb3J0IHsgRXZlbnRzTWl4aW4sIHdpdGhFdmVudHNNaXhpbiB9XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvRXZlbnRzTWl4aW4vRXZlbnRzTWl4aW4uanMiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmFzaXMtYWdncmlkLWNvbXBvbmVudHMgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgeyBhdXRvYmluZCwgb3ZlcnJpZGUsIHJlYWRvbmx5IH0gZnJvbSAnY29yZS1kZWNvcmF0b3JzJ1xuaW1wb3J0IHsgd2l0aEV2ZW50c01peGluIH0gZnJvbSAnLi4vRXZlbnRzTWl4aW4nXG5pbXBvcnQgQ29tcG9uZW50IGZyb20gJy4uL0NvbXBvbmVudCdcbmltcG9ydCAnLi9zdHlsZS5zY3NzJ1xuXG4vKipcbiAqIERhdGVUaW1lSW5wdXRcbiAqXG4gKiBTaW1wbGUgRGF0ZVRpbWVJbnB1dCBjb21wb25lbnQgd2hpY2ggaW50ZWdyYXRlcyB0aGUgZmxhdHBpY2tyXG4gKlxuICogQGF1dGhvciBIeXlhbiBBYm8gRmFraGVyIDxoYWJvZmFraGVyQGJhc2lzLmNvbT5cbiAqL1xuQHdpdGhFdmVudHNNaXhpblxuY2xhc3MgRGF0ZVRpbWVJbnB1dCBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBDb25zdGFudCB3aGljaCBkZXNjcmliZXMgdGhlIGV2ZW50IG5hbWUgdGhhdCB3aWxsIGJlIGZpcmVkIHdoZW4gYSBkYXRlXG4gICAqIGlzIHNlbGVjdGVkIHVzaW5nIHRoZSBkYXRlIHBpY2tlclxuICAgKlxuICAgKiBAdHlwZSB7U3RyaW5nfVxuICAgKi9cbiAgQHJlYWRvbmx5XG4gIHN0YXRpYyBPTl9EQVRFX0NIQU5HRUQgPSAnRGF0ZVRpbWVJbnB1dC5PTl9EQVRFX0NIQU5HRUQnXG5cbiAgLyoqXG4gICAqIFRoZSBkYXRlIHBpY2tlciBpbnN0YW5jZVxuICAgKlxuICAgKiBAdHlwZSB7RmxhdHBpY2tyRm59XG4gICAqL1xuICBwaWNrZXIgPSBudWxsXG5cbiAgLyoqXG4gICAqIFRoZSBsYXN0IHNlbGVjdGVkIGRhdGVcbiAgICpcbiAgICogQHR5cGUge0RhdGV8bnVsbH1cbiAgICovXG4gIHNlbGVjdGVkRGF0ZSA9IG51bGxcblxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCByZWNlaXZlZCBwYXJhbXMgd2hlbiBpbml0IGlzIGNhbGxlZFxuICAgKnNcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIF9wYXJhbXMgPSB7fVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3QgbmV3IERhdGVUaW1lSW5wdXRcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKClcblxuICAgIHRoaXMuX2d1aSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgdGhpcy5fZ3VpLmNsYXNzTmFtZSA9ICdhZy1pbnB1dC13cmFwcGVyJ1xuICAgIHRoaXMuX2d1aS5pbm5lckhUTUwgPSAvKiBodG1sICovIGBcbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXRpbWVfX2lucHV0XCI+XG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImRhdGV0aW1lX19pbnB1dF9faW5wdXRcIiB0eXBlPVwidGV4dFwiIGRhdGEtaW5wdXQ+XG4gICAgICAgIDxhIGNsYXNzPVwiZGF0ZXRpbWVfX2lucHV0X19jbGVhclwiIGRhdGEtY2xlYXI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJkYXRldGltZV9faW5wdXRfX2NsZWFyX19pY29uIGFnLWljb24gYWctaWNvbi1jcm9zc1wiPjwvaT5cbiAgICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICAgIGBcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgQG92ZXJyaWRlXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBpbml0KHBhcmFtcykge1xuICAgIHRoaXMuX3BhcmFtcyA9IHBhcmFtc1xuICAgIGNvbnN0IGVuYWJsZVRpbWUgPSB0aGlzLmdldE9wdGlvbignZGF0ZVRpbWVFbmFibGVUaW1lJywgcGFyYW1zLCB0cnVlKVxuICAgIGNvbnN0IHRpbWVfMjRociA9IHRoaXMuZ2V0T3B0aW9uKCdkYXRlVGltZUVuYWJsZTI0SFInLCBwYXJhbXMsIHRydWUpXG4gICAgY29uc3QgZW5hYmxlU2Vjb25kcyA9IHRoaXMuZ2V0T3B0aW9uKCdkYXRlVGltZUVuYWJsZVNlY29uZHMnLCBwYXJhbXMsIGZhbHNlKVxuICAgIGNvbnN0IG5vQ2FsZW5kYXIgPSAhdGhpcy5nZXRPcHRpb24oJ2RhdGVUaW1lRW5hYmxlQ2FsZW5kYXInLCBwYXJhbXMsIHRydWUpXG5cbiAgICBsZXQgZGF0ZUZvcm1hdCA9IHRoaXMuZ2V0T3B0aW9uKCdkYXRlVGltZU1hc2snLCBwYXJhbXMpXG5cbiAgICAvLyB0cnkgdG8gZ2VuZXJhdGUgYSBkZWZhdWx0IGRhdGUgZm9ybWF0IGJhc2VkIG9uIHRoZSBvcHRpb25zXG4gICAgaWYgKCFkYXRlRm9ybWF0KSB7XG4gICAgICBkYXRlRm9ybWF0ID0gbm9DYWxlbmRhciA/ICcnIDogJyVZLyVNei8lRHonXG4gICAgICBpZiAoZW5hYmxlVGltZSkge1xuICAgICAgICBkYXRlRm9ybWF0ICs9IHRpbWVfMjRociA/ICcgJUh6OiVteicgOiAnICVoejolbXonXG5cbiAgICAgICAgaWYgKGVuYWJsZVNlY29uZHMpIHtcbiAgICAgICAgICBkYXRlRm9ybWF0ICs9ICc6JXN6J1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZGF0ZUZvcm1hdCA9IGRhdGVGb3JtYXQudHJpbSgpXG5cbiAgICAvLyBpbml0IHRoZSBkYXRlIHBpY2tlclxuICAgIHRoaXMucGlja2VyID0gZmxhdHBpY2tyKHRoaXMuX2d1aSwge1xuICAgICAgd3JhcDogdHJ1ZSxcbiAgICAgIC8vIGFsbG93IGVudGVyaW5nIHRoZSBkYXRlIG1hbnVhbGx5IHJlcXVpcmVzIGRhdGUgcGFyc2luZyBmcm9tIHN0cmluZ1xuICAgICAgLy8gdGhpcyBpcyBhIHRvdWdoIHRoaW5nIGFuZCByZXF1aXJlcyBsaWJzIGxpa2UgbW9tZW50XG4gICAgICBhbGxvd0lucHV0OiBmYWxzZSxcbiAgICAgIG9uQ2hhbmdlOiB0aGlzLl9vbkRhdGVDaGFuZ2VkLFxuICAgICAgZm9ybWF0RGF0ZTogdGhpcy5mb3JtYXREYXRlLFxuICAgICAgbWF4RGF0ZTogdGhpcy5nZXRPcHRpb24oJ2RhdGVUaW1lTWF4JywgcGFyYW1zLCBudWxsKSxcbiAgICAgIG1pbkRhdGU6IHRoaXMuZ2V0T3B0aW9uKCdkYXRlVGltZU1pbicsIHBhcmFtcywgbnVsbCksXG4gICAgICBkZWZhdWx0SG91cjogdGhpcy5nZXRPcHRpb24oJ2RhdGVUaW1lRGVmYXVsdEhvdXInLCBwYXJhbXMsIDEyKSxcbiAgICAgIGRlZmF1bHRNaW51dGU6IHRoaXMuZ2V0T3B0aW9uKCdkYXRlVGltZURlZmF1bHRNaW51dGUnLCBwYXJhbXMsIDApLFxuICAgICAgZGlzYWJsZU1vYmlsZTogdGhpcy5nZXRPcHRpb24oJ2RhdGVUaW1lRGlzYWJsZU1vYmlsZScsIHBhcmFtcywgZmFsc2UpLFxuICAgICAgd2Vla051bWJlcnM6IHRoaXMuZ2V0T3B0aW9uKCdkYXRlVGltZUVuYWJsZVdlZWtOdW1iZXInLCBwYXJhbXMsIGZhbHNlKSxcbiAgICAgIGxvY2FsZTogdGhpcy5fZ2V0UGlja2VyTG9jYWxlKCksXG4gICAgICBub0NhbGVuZGFyLFxuICAgICAgZGF0ZUZvcm1hdCxcbiAgICAgIGVuYWJsZVRpbWUsXG4gICAgICBlbmFibGVTZWNvbmRzLFxuICAgICAgdGltZV8yNGhyLFxuICAgIH0pXG5cbiAgICAvLyBmb3JjZSBkaWFsb2cgb3ZlcmZsb3dcbiAgICB0aGlzLnBpY2tlci5jYWxlbmRhckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdhZy1jdXN0b20tY29tcG9uZW50LXBvcHVwJylcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgQG92ZXJyaWRlXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5waWNrZXIuZGVzdHJveSgpXG4gICAgdGhpcy5vZmYoRGF0ZVRpbWVJbnB1dC5PTl9EQVRFX0NIQU5HRUQpXG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBwaWNrZXIgZGF0ZVxuICAgKlxuICAgKiBAcGFyYW0ge0RhdGV8U3RyaW5nfSB2YWx1ZSB0aGUgZGF0ZSB2YWx1ZSB0byBzZXRcbiAgICovXG4gIHNldERhdGUodmFsdWUpIHtcbiAgICB0aGlzLnBpY2tlci5zZXREYXRlKHZhbHVlLCB0cnVlKVxuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gUGlja2VyXG4gICAqL1xuICBvcGVuKCkge1xuICAgIHRoaXMucGlja2VyLm9wZW4oKVxuICAgIHRoaXMuX2d1aS5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLmZvY3VzKClcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZSBwaWNrZXJcbiAgICovXG4gIGNsb3NlKCkge1xuICAgIHRoaXMucGlja2VyLmNsb3NlKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgcGlja2VyXG4gICAqL1xuICByZXNldCgpIHtcbiAgICAvKiogdGhpcyBjaGVjayBiZWNhdXNlIHRoZSB0ZXN0cyBmYWlsIGhlcmUgZm9yIHNvbWUgcmVhc29ucyAgKi9cbiAgICBpZiAodGhpcy5waWNrZXIuY29uZmlnKSB7XG4gICAgICB0aGlzLnBpY2tlci5jbGVhcigpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCB0aGUgZGF0ZSB1c2luZyBgQkJqLk1hc2tzLlR5cGVzLmRhdGVgXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBkYXRlIGRhdGUgYXMgYSBzdHJpbmdcbiAgICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdCBCQmogZGF0ZSBmb3JtYXRcbiAgICpcbiAgICogQHJldHVybiB7U3RyaW5nfSBmb3JtYXR0ZWQgZGF0ZSBhcyBzdHJpbmdcbiAgICovXG4gIEBhdXRvYmluZFxuICBmb3JtYXREYXRlKGRhdGUsIGZvcm1hdCkge1xuICAgIGNvbnN0IGRhdGVUaW1lRm9ybWF0dGVyID0gdGhpcy5nZXRPcHRpb24oJ2RhdGVUaW1lRm9ybWF0dGVyJywgdGhpcy5fcGFyYW1zKVxuICAgIGNvbnN0IGxvY2FsZSA9IHRoaXMuZ2V0T3B0aW9uKFxuICAgICAgJ2RhdGVUaW1lTG9jYWxlJyxcbiAgICAgIHRoaXMuX3BhcmFtcyxcbiAgICAgIEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUgfHwgJ2VuLVVTJ1xuICAgIClcblxuICAgIGlmIChkYXRlVGltZUZvcm1hdHRlcikge1xuICAgICAgY29uc3QgdHlwZSA9IHR5cGVvZiBkYXRlVGltZUZvcm1hdHRlclxuICAgICAgbGV0IGV4cHJlc3Npb24gPSBkYXRlVGltZUZvcm1hdHRlclxuXG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICBpZiAoIShleHByZXNzaW9uLmluZGV4T2YoJ3JldHVybicpID49IDApKSB7XG4gICAgICAgICAgICBleHByZXNzaW9uID0gJ3JldHVybiAnICsgZXhwcmVzc2lvbiArICc7J1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBuZXcgRnVuY3Rpb24oXG4gICAgICAgICAgICAnZGF0ZScsXG4gICAgICAgICAgICAnZm9ybWF0JyxcbiAgICAgICAgICAgICdsb2NhbGUnLFxuICAgICAgICAgICAgJ0RhdGVNYXNrJyxcbiAgICAgICAgICAgIGV4cHJlc3Npb25cbiAgICAgICAgICApKGRhdGUsIGZvcm1hdCwgbG9jYWxlLCBCQmouTWFza3MuRGF0ZU1hc2spXG5cbiAgICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICAgIHJldHVybiBkYXRlVGltZUZvcm1hdHRlcihkYXRlLCBmb3JtYXQsIGxvY2FsZSwgQkJqLk1hc2tzLkRhdGVNYXNrKVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBJbnZhbGlkIGRhdGVUaW1lRm9ybWF0dGVyIGRlZmluZWQgZm9yIGNvbHVtbiBcIiR7dGhpcy5fcGFyYW1zLmNvbERlZi5maWVsZH1cIi4gVGhlIGZvcm1hdHRlciBzaG91bGQgYmUgYW4gZXhwcmVzc2lvbiBvciBwbGFpbiBmdW5jdGlvbmBcbiAgICAgICAgICApXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghZm9ybWF0IHx8IChmb3JtYXQgJiYgZm9ybWF0LmluZGV4T2YoJyUnKSA8IDApKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICByZXR1cm4gQkJqLk1hc2tzLkRhdGVNYXNrLm1hc2soZGF0ZSwgZm9ybWF0LCBsb2NhbGUpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiB0byBkYXRlIHBpY2tlciBjaGFuZ2VzIGFuZCB1cGRhdGUgdGhlIHNlbGVjdGVkIGRhdGVcbiAgICpcbiAgICogQHBhcmFtIHtBcnJheX0gc2VsZWN0ZWREYXRlcyAgYXJyYXkgb2Ygc2VsZWN0ZWQgZGF0ZXNcbiAgICovXG4gIEBhdXRvYmluZFxuICBfb25EYXRlQ2hhbmdlZChzZWxlY3RlZERhdGVzKSB7XG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBzZWxlY3RlZERhdGVzWzBdIHx8IG51bGxcbiAgICB0aGlzLm5vdGlmeShEYXRlVGltZUlucHV0Lk9OX0RBVEVfQ0hBTkdFRCwgdGhpcy5zZWxlY3RlZERhdGUpXG4gIH1cblxuICAvKipcbiAgICogR2V0IHBpY2tlciBnbG9iYWwgbG9jYWxpemF0aW9uIHdoaWNoIHdpbGwgd29yayB3aXRoIGFueSBsb2NhbGVcbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKlxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vZmxhdHBpY2tyL2ZsYXRwaWNrci9ibG9iL21hc3Rlci9zcmMvbDEwbi9kZWZhdWx0LnRzXG4gICAqL1xuICBfZ2V0UGlja2VyTG9jYWxlKCkge1xuICAgIGNvbnN0IGxvY2FsZSA9IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUgfHwgJ2VuLVVTJ1xuXG4gICAgY29uc3Qgd2Vla0RheXNTaG9ydCA9IFtdXG4gICAgY29uc3Qgd2Vla0RheXNMb25nID0gW11cblxuICAgIGZvciAobGV0IGRheSA9IDQ7IGRheSA8IDExOyBkYXkrKykge1xuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKDE5NzAsIDEgLSAxLCBkYXkpXG5cbiAgICAgIHdlZWtEYXlzU2hvcnQucHVzaChcbiAgICAgICAgZGF0ZVxuICAgICAgICAgIC50b0xvY2FsZVN0cmluZyhsb2NhbGUsIHtcbiAgICAgICAgICAgIHdlZWtkYXk6ICdzaG9ydCcsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuc3BsaXQoJywnKVswXSAvLyB0aGUgZGF0ZS10aW1lLWZvcm1hdC10aW1lem9uZSBwb2x5ZmlsbCBhdHRhY2ggdGhlIGRhdGUgYWxzb1xuICAgICAgKVxuXG4gICAgICB3ZWVrRGF5c0xvbmcucHVzaChcbiAgICAgICAgZGF0ZVxuICAgICAgICAgIC50b0xvY2FsZVN0cmluZyhsb2NhbGUsIHtcbiAgICAgICAgICAgIHdlZWtkYXk6ICdsb25nJyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5zcGxpdCgnLCcpWzBdIC8vIHRoZSBkYXRlLXRpbWUtZm9ybWF0LXRpbWV6b25lIHBvbHlmaWxsIGF0dGFjaCB0aGUgZGF0ZSBhbHNvXG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgbW9udGhzU2hvcnQgPSBbXVxuICAgIGNvbnN0IG1vbnRoc0xvbmcgPSBbXVxuXG4gICAgZm9yIChsZXQgbW9udGggPSAwOyBtb250aCA8IDEyOyBtb250aCsrKSB7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoMTk3MCwgbW9udGgsIDQpXG5cbiAgICAgIG1vbnRoc1Nob3J0LnB1c2goXG4gICAgICAgIGRhdGUudG9Mb2NhbGVTdHJpbmcobG9jYWxlLCB7XG4gICAgICAgICAgbW9udGg6ICdzaG9ydCcsXG4gICAgICAgIH0pXG4gICAgICApXG5cbiAgICAgIG1vbnRoc0xvbmcucHVzaChcbiAgICAgICAgZGF0ZS50b0xvY2FsZVN0cmluZyhsb2NhbGUsIHtcbiAgICAgICAgICBtb250aDogJ2xvbmcnLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB3ZWVrZGF5czoge1xuICAgICAgICBzaG9ydGhhbmQ6IHdlZWtEYXlzU2hvcnQsXG4gICAgICAgIGxvbmdoYW5kOiB3ZWVrRGF5c0xvbmcsXG4gICAgICB9LFxuICAgICAgbW9udGhzOiB7XG4gICAgICAgIHNob3J0aGFuZDogbW9udGhzU2hvcnQsXG4gICAgICAgIGxvbmdoYW5kOiBtb250aHNMb25nLFxuICAgICAgfSxcbiAgICAgIGRheXNJbk1vbnRoOiBbMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV0sXG4gICAgICBmaXJzdERheU9mV2VlazogQkJqLk1hc2tzLlV0aWxzLkRhdGVzLmdldFdlZWtTdGFydEJ5TG9jYWxlKGxvY2FsZSksXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICAgIG9yZGluYWw6IG51bWJlciA9PiAnJyxcbiAgICAgIHJhbmdlU2VwYXJhdG9yOiAnICAnLFxuICAgICAgd2Vla0FiYnJldmlhdGlvbjogJycsXG4gICAgICBzY3JvbGxUaXRsZTogJycsXG4gICAgICB0b2dnbGVUaXRsZTogJycsXG4gICAgICBhbVBNOiBbJ0FNJywgJ1BNJ10sXG4gICAgICB5ZWFyQXJpYUxhYmVsOiAnJyxcbiAgICAgIGhvdXJBcmlhTGFiZWw6ICcnLFxuICAgICAgbWludXRlQXJpYUxhYmVsOiAnJyxcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRGF0ZVRpbWVJbnB1dFxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL0RhdGVUaW1lSW5wdXQvRGF0ZVRpbWVJbnB1dC5qcyIsIlxudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZS5zY3NzXCIpO1xuXG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcblxudmFyIHRyYW5zZm9ybTtcbnZhciBpbnNlcnRJbnRvO1xuXG5cblxudmFyIG9wdGlvbnMgPSB7XCJobXJcIjp0cnVlfVxuXG5vcHRpb25zLnRyYW5zZm9ybSA9IHRyYW5zZm9ybVxub3B0aW9ucy5pbnNlcnRJbnRvID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQuaGVhZFxuICAgICAgICAgICAgICB9O1xuXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXMuanNcIikoY29udGVudCwgb3B0aW9ucyk7XG5cbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuXG5pZihtb2R1bGUuaG90KSB7XG5cdG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZS5zY3NzXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3R5bGUuc2Nzc1wiKTtcblxuXHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXG5cdFx0dmFyIGxvY2FscyA9IChmdW5jdGlvbihhLCBiKSB7XG5cdFx0XHR2YXIga2V5LCBpZHggPSAwO1xuXG5cdFx0XHRmb3Ioa2V5IGluIGEpIHtcblx0XHRcdFx0aWYoIWIgfHwgYVtrZXldICE9PSBiW2tleV0pIHJldHVybiBmYWxzZTtcblx0XHRcdFx0aWR4Kys7XG5cdFx0XHR9XG5cblx0XHRcdGZvcihrZXkgaW4gYikgaWR4LS07XG5cblx0XHRcdHJldHVybiBpZHggPT09IDA7XG5cdFx0fShjb250ZW50LmxvY2FscywgbmV3Q29udGVudC5sb2NhbHMpKTtcblxuXHRcdGlmKCFsb2NhbHMpIHRocm93IG5ldyBFcnJvcignQWJvcnRpbmcgQ1NTIEhNUiBkdWUgdG8gY2hhbmdlZCBjc3MtbW9kdWxlcyBsb2NhbHMuJyk7XG5cblx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdH0pO1xuXG5cdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufVxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9EYXRlVGltZUlucHV0L3N0eWxlLnNjc3MiLCJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5kYXRldGltZV9faW5wdXR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjt3aWR0aDoxMDAlO21hcmdpbjphdXRvIDRweDtib3JkZXI6dGhpbiBzb2xpZCAjMDAwfS5kYXRldGltZV9faW5wdXRfX2lucHV0e2ZsZXg6MTtvdXRsaW5lOm5vbmUgIWltcG9ydGFudDtib3JkZXI6bm9uZSAhaW1wb3J0YW50fS5kYXRldGltZV9faW5wdXRfX2NsZWFye21hcmdpbi1sZWZ0OjFweDttYXJnaW4tdG9wOjFweDt0ZXh0LWFsaWduOmNlbnRlcjtvdXRsaW5lOm5vbmV9LmFnLXRoZW1lLWJhbGhhbSAuZGF0ZXRpbWVfX2lucHV0e2JvcmRlci1jb2xvcjojOTVBNUE2fS5hZy10aGVtZS1iYWxoYW0tZGFyayAuZGF0ZXRpbWVfX2lucHV0e2JvcmRlci1jb2xvcjojZWNmMGYxfS5hZy10aGVtZS1tYXRlcmlhbCAuZGF0ZXRpbWVfX2lucHV0e21hcmdpbjphdXRvIDhweH1cXG5cIiwgXCJcIl0pO1xuXG4vLyBleHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyIS4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL0RhdGVUaW1lSW5wdXQvc3R5bGUuc2Nzc1xuLy8gbW9kdWxlIGlkID0gMTI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBiYXNpcy1hZ2dyaWQtY29tcG9uZW50cyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmltcG9ydCBEYXRlVGltZUVkaXRvciBmcm9tICcuL0RhdGVUaW1lRWRpdG9yJ1xuXG5leHBvcnQgZGVmYXVsdCBEYXRlVGltZUVkaXRvclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL0RhdGVUaW1lRWRpdG9yL2luZGV4LmpzIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWFnZ3JpZC1jb21wb25lbnRzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IHsgYXV0b2JpbmQsIG92ZXJyaWRlIH0gZnJvbSAnY29yZS1kZWNvcmF0b3JzJ1xuaW1wb3J0IHV0Y1RvWm9uZWRUaW1lIGZyb20gJ2RhdGUtZm5zLXR6L3V0Y1RvWm9uZWRUaW1lJ1xuaW1wb3J0IERhdGVUaW1lSW5wdXQgZnJvbSAnLi4vRGF0ZVRpbWVJbnB1dCdcbmltcG9ydCBDb21wb25lbnQgZnJvbSAnLi4vQ29tcG9uZW50J1xuXG4vKipcbiAqIERhdGVUaW1lSW5wdXRcbiAqXG4gKiBTaW1wbGUgRGF0ZVRpbWVJbnB1dCBjb21wb25lbnQgd2hpY2ggaW50ZWdyYXRlcyB0aGUgZmxhdHBpY2tyXG4gKlxuICogIyMgT3B0aW9uc1xuICpcbiAqIHwgTmFtZSAgICAgICAgICAgICAgICAgIFx0fCBEZWZhdWx0ICAgICBcdHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx0fFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cdHw6LS0tLS0tLS0tLS0tLTp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8ICoqZGF0ZVRpbWVFbmFibGVUaW1lKiogICB8IGZhbHNlICAgIHwgZW5hYmxlIC8gZGlzYWJsZSB0aW1lXG4gKiB8ICoqZGF0ZVRpbWVFbmFibGUyNEhSKiogICB8IGZhbHNlICAgIHwgZW5hYmxlIC8gZGlzYWJsZSB0aW1lIDI0IGZvcm1hdFxuICogfCAqKmRhdGVUaW1lRW5hYmxlU2Vjb25kcyoqICAgfCBmYWxzZSAgICB8IGVuYWJsZSAvIGRpc2FibGUgc2Vjb25kcyBtYW5hZ2VtZW50XG4gKiB8ICoqZGF0ZVRpbWVFbmFibGVDYWxlbmRhcioqICAgfCBmYWxzZSAgICB8IGVuYWJsZSAvIGRpc2FibGUgQ2FsZW5kYXIuXG4gKiB8ICoqZGF0ZVRpbWVNYXNrKiogICB8IGZhbHNlICAgIHwgVGhlIG1hc2sgdXNlZCB0byBmb3JtYXQgdGhlIHNlbGVjdGVkIGRhdGVcbiAqIHwgKipkYXRlVGltZU1heCoqICAgfCB1bmRlZmluZWQgICAgfCAgTWF4IGFsbG93ZWQgZGF0ZVxuICogfCAqKmRhdGVUaW1lTWluKiogICB8IHVuZGVmaW5lZCAgICB8ICBNaW4gYWxsb3dlZCBkYXRlXG4gKiB8ICoqZGF0ZVRpbWVGb3JtYXR0ZXIqKiAgIHwgZmFsc2UgICAgfCAgQSBmdW5jdGlvbiBvciBleHByZXNzaW9uIHRvIGZvcm1hdCB0aGUgZGF0ZSAoQHNlZSBzdXBwb3J0ZWQgcGFyYW0pXG4gKiB8ICoqZGF0ZVRpbWVMb2NhbGUqKiAgIHwgU3lzdGVtIGRlZmF1bHQgICAgfCAgQSBsb2NhbGUgdG8gdXNlIGZvciBkYXRlIGZvcm1hdHRpbmdcbiAqIHwgKipkYXRlVGltZURlZmF1bHRIb3VyKiogICB8IDEyICAgIHwgIEluaXRpYWwgdmFsdWUgb2YgdGhlIGhvdXIgZWxlbWVudC5cbiAqIHwgKipkYXRlVGltZURlZmF1bHRNaW51dGUqKiAgIHwgMCAgICB8ICBJbml0aWFsIHZhbHVlIG9mIHRoZSBtaW51dGUgZWxlbWVudC5cbiAqIHwgKipkYXRlVGltZURpc2FibGVNb2JpbGUqKiAgIHwgZmFsc2UgICAgfCAgU2V0IGRpc2FibGVNb2JpbGUgdG8gdHJ1ZSB0byBhbHdheXMgdXNlIHRoZSBub24tbmF0aXZlIHBpY2tlci5cbiAqIHwgKipkYXRlVGltZUVuYWJsZVdlZWtOdW1iZXIqKiAgIHwgdHJ1ZSAgICB8ICBFbmFibGVzIGRpc3BsYXkgb2Ygd2VlayBudW1iZXJzIGluIGNhbGVuZGFyLlxuICpcbiAqIEBhdXRob3IgSHl5YW4gQWJvIEZha2hlciA8aGFib2Zha2hlckBiYXNpcy5jb20+XG4gKi9cbmNsYXNzIERhdGVUaW1lRWRpdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIEB0eXBlIHtEYXRlVGltZUlucHV0fVxuICAgKi9cbiAgX2lucHV0ID0gbmV3IERhdGVUaW1lSW5wdXQoKVxuXG4gIC8qKlxuICAgKiBAdHlwZSB7U3RyaW5nfVxuICAgKi9cbiAgX3ZhbHVlID0gbnVsbFxuXG4gIC8qKlxuICAgKiBQYXJhbXMgcmVjZWl2ZWQgaW4gaW5pdFxuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgX3BhcmFtcyA9IG51bGxcblxuICAvKipcbiAgICogVGFrZXMgaW5jb21wbGV0ZSBpc28gc3RyaW5nIGFuZCByZXR1cm4gYSBjb21wbGV0ZSBvbmVcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IGRhdGUgaW5jb21wbGV0ZSBpc28gc3RyaW5nXG4gICAqXG4gICAqIEByZXR1cm4ge1N0cmluZ30gY29tcGxldGUgaXNvIHN0cmluZ1xuICAgKi9cbiAgc3RhdGljIGZpeFNob3J0SVNPKHZhbHVlKSB7XG4gICAgcmV0dXJuIEJCai5NYXNrcy5VdGlscy5EYXRlcy5maXhTaG9ydElTTyh2YWx1ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgQG92ZXJyaWRlXG4gIGluaXQocGFyYW1zKSB7XG4gICAgdGhpcy5fcGFyYW1zID0gcGFyYW1zXG4gICAgdGhpcy5mb2N1c0FmdGVyQXR0YWNoZWQgPSBwYXJhbXMuY2VsbFN0YXJ0ZWRFZGl0XG4gICAgaWYgKHRoaXMuZm9jdXNBZnRlckF0dGFjaGVkKSB7XG4gICAgICBsZXQga2V5UHJlc3NCYWNrc3BhY2VPckRlbGV0ZSA9XG4gICAgICAgIHBhcmFtcy5rZXlQcmVzcyA9PSAzMiB8fCBwYXJhbXMua2V5UHJlc3MgPT0gNDYgLy8gc3BhY2UgLy8gZGVsZXRlXG5cbiAgICAgIGlmIChrZXlQcmVzc0JhY2tzcGFjZU9yRGVsZXRlKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gJydcbiAgICAgIH0gZWxzZSBpZiAocGFyYW1zLmNoYXJQcmVzcyAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHBhcmFtcy5jaGFyUHJlc3NcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gcGFyYW1zLnZhbHVlXG4gICAgICAgIGlmIChwYXJhbXMua2V5UHJlc3MgIT0gMTEzKSB7XG4gICAgICAgICAgLy9GMlxuICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0QWxsT25Gb2N1cyA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHBhcmFtcy52YWx1ZVxuICAgIH1cblxuICAgIHRoaXMuX3ZhbHVlID0gRGF0ZVRpbWVFZGl0b3IuZml4U2hvcnRJU08odGhpcy5fdmFsdWUpXG4gICAgdGhpcy5faW5wdXQuaW5pdChwYXJhbXMpXG4gICAgdGhpcy5faW5wdXQub24oRGF0ZVRpbWVJbnB1dC5PTl9EQVRFX0NIQU5HRUQsIHRoaXMuX29uRGF0ZUNoYW5nZSlcblxuICAgIGlmICh0aGlzLl92YWx1ZSkge1xuICAgICAgdGhpcy5faW5wdXQuc2V0RGF0ZShcbiAgICAgICAgdXRjVG9ab25lZFRpbWUodGhpcy5fdmFsdWUsIEJCai5NYXNrcy5VdGlscy5EYXRlcy5nZXRUaW1lem9uZU9yT2Zmc2V0KCkpXG4gICAgICApXG4gICAgfVxuXG4gICAgdGhpcy5fZ3VpID0gdGhpcy5faW5wdXQuZ2V0R3VpKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgQG92ZXJyaWRlXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5faW5wdXQuZGVzdHJveSgpXG4gIH1cblxuICAvKipcbiAgICogR2V0cyBjYWxsZWQgb25jZSBhZnRlciBHVUkgaXMgYXR0YWNoZWQgdG8gRE9NLlxuICAgKiBNYWtlIHN1cmUgdGhlIGNvbnRhaW5lciBpcyBhbHdheXMgZm9jdXNlZCBhbmQgbGlzdGVuaW5nIHRvIGtleSBjaGFuZ2VzXG4gICAqL1xuICBhZnRlckd1aUF0dGFjaGVkKCkge1xuICAgIGlmICh0aGlzLmZvY3VzQWZ0ZXJBdHRhY2hlZCkge1xuICAgICAgdGhpcy5mb2N1c0luKClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBmaW5hbCB2YWx1ZSB0byB0aGUgZ3JpZCwgdGhlIHJlc3VsdCBvZiB0aGUgZWRpdGluZ1xuICAgKlxuICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgKi9cbiAgZ2V0VmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlXG4gIH1cblxuICAvKipcbiAgICogR2V0cyBjYWxsZWQgb25jZSBhZnRlciBpbml0aWFsaXplZCBhbmQgcmV0dXJucyBmYWxzZSBzbyB0aGUgZWRpdG9yIGFwcGVhcnMgaW4gdGhlIGNlbGxcbiAgICpcbiAgICogQHJldHVybiB7Qm9vbGVhbn0gYWx3YXlzIGZhbHNlXG4gICAqKi9cbiAgaXNQb3B1cCgpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBkb2luZyBmdWxsIHJvdyBlZGl0LCB0aGVuIGdldHMgY2FsbGVkIHdoZW4gdGFiYmluZyBpbnRvIHRoZSBjZWxsLlxuICAgKi9cbiAgZm9jdXNJbigpIHtcbiAgICB0aGlzLl9pbnB1dC5vcGVuKClcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBkb2luZyBmdWxsIHJvdyBlZGl0LCB0aGVuIGdldHMgY2FsbGVkIHdoZW4gdGFiYmluZyBvdXQgb2YgdGhlIGNlbGwuXG4gICAqL1xuICBmb2N1c091dCgpIHtcbiAgICB0aGlzLl9pbnB1dC5jbG9zZSgpXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBlZGl0b3IgdmFsdWUgd2l0aCBzZWxlY3RlZCBkYXRlIGZyb20gdGhlIGlucHV0XG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBkYXRlXG4gICAqL1xuICBAYXV0b2JpbmRcbiAgX29uRGF0ZUNoYW5nZShkYXRlKSB7XG4gICAgdGhpcy5fdmFsdWUgPSBkYXRlIGluc3RhbmNlb2YgRGF0ZSA/IGRhdGUudG9JU09TdHJpbmcoKSA6ICcnXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRGF0ZVRpbWVFZGl0b3JcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9EYXRlVGltZUVkaXRvci9EYXRlVGltZUVkaXRvci5qcyIsIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuIFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbiBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4gXHRcdFx0XHRnZXQ6IGdldHRlclxuIFx0XHRcdH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDEpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2svYm9vdHN0cmFwIDBlNDFkYTFlODgzMDAzZmI4ZjI5IiwibW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFXzBfXztcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBleHRlcm5hbCB7XCJjb21tb25qc1wiOlwiYmJqLW1hc2tzL3NyYy9TdHJpbmdNYXNrXCIsXCJjb21tb25qczJcIjpcImJiai1tYXNrcy9zcmMvU3RyaW5nTWFza1wiLFwiYW1kXCI6XCJiYmotbWFza3Mvc3JjL1N0cmluZ01hc2tcIixcInJvb3RcIjpbXCJCQmpcIixcIk1hc2tzXCIsXCJTdHJpbmdNYXNrXCJdfVxuLy8gbW9kdWxlIGlkID0gMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSIsIi8qXHJcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWlucHV0LW1hc2tpbmcgbGliLlxyXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XHJcbiAqXHJcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXHJcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxyXG4gKi9cclxuXHJcbmltcG9ydCBUZXh0SW5wdXQgZnJvbSAnLi9UZXh0SW5wdXQnXHJcblxyXG5leHBvcnQgZGVmYXVsdCBUZXh0SW5wdXRcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL1RleHRJbnB1dC9pbmRleC5qcyIsIi8qXHJcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWlucHV0LW1hc2tpbmcgbGliLlxyXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XHJcbiAqXHJcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXHJcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxyXG4gKi9cclxuXHJcbmltcG9ydCBTdHJpbmdNYXNrIGZyb20gJ2Jiai1tYXNrcy9zcmMvU3RyaW5nTWFzaydcclxuaW1wb3J0IHtcclxuICBtYXNrSWZOb3RNYXNrZWQsXHJcbiAgdW5tYXNrLFxyXG4gIGZpbmRDYXJldFBvc2l0aW9uLFxyXG4gIGdlbmVyYXRlUGF0dGVybkZyb21NYXNrLFxyXG59IGZyb20gJy4vdG9vbHMuanMnXHJcblxyXG4vKipcclxuICogVGhlIGBUZXh0SW5wdXRgIHdpbGwgd3JhcCB0ZXh0IGlucHV0cyBhbmQgYXBwbHkgdGhlIGdpdmVuIFtiYmogc3RyaW5nIG1hc2tdKGh0dHBzOi8vZ2l0aHViLmNvbS9CYXNpc0h1Yi9iYmotbWFza3Mjc3RyaW5nLW1hc2tzKVxyXG4gKlxyXG4gKiAqKk9wdGlvbnMqKlxyXG4gKlxyXG4gKiBfT3B0aW9ucyBjYW4gYmUgcGFzc2VkIHZpYSBkYXRhIGF0dHJpYnV0ZXMgLiBGb3IgZGF0YSBhdHRyaWJ1dGVzLCBhcHBlbmQgdGhlIG9wdGlvbiBuYW1lIHRvIGRhdGEtLCBhcyBpbiBkYXRhLW1hc2tfXHJcbiAqXHJcbiAqIHwgT3B0aW9uICAgIHwgRGVmYXVsdCB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiB8LS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcclxuICogfCBtYXNrIHwgICAgICAgICB8IFRoZSBiYmogc3RyaW5nIG1hc2sgQHNlZSBbQkJqIFN0cmluZyBNYXNrc10oaHR0cHM6Ly9naXRodWIuY29tL0Jhc2lzSHViL2Jiai1tYXNrcyNzdHJpbmctbWFza3MpIHxcclxuICpcclxuICogIDxicj5cclxuICpcclxuICogKipFeGFtcGxlIDoqKlxyXG4gKiBgYGBodG1sXHJcbiAqICA8aW5wdXQgY2xhc3M9XCJiYmotdGV4dC1tYXNrZWRcIiBuYW1lPVwidGVzdFwiIGlkPVwidGVzdFwiIHZhbHVlPVwiZWQyM1wiIGRhdGEtbWFzaz1cIkFBLTAwXCI+XHJcbiAqXHJcbiAqICA8c2NyaXB0PlxyXG4gKiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKGUpIHtcclxuICogICAgICBuZXcgQmFzaXMuSW5wdXRNYXNraW5nLlRleHRJbnB1dCh7XHJcbiAqICAgICAgICAgb25VcGRhdGU6IChtYXNrZWRWYWx1ZSAsIHJhd1ZhbHVlICwgaW5wdXQpID0+IHtcclxuICogICAgICAgICAgICAvLyBkbyBzb21ldGhpbmdcclxuICogICAgICAgICB9LFxyXG4gKiAgICAgICAgIG9uSW52YWxpZDogKGVyciAsIGlucHV0KSA9PiB7XHJcbiAqICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nXHJcbiAqICAgICAgICAgfVxyXG4gKiAgICAgIH0pXHJcbiAqICAgIH0pXHJcbiAqICA8L3NjcmlwdD5cclxuICogYGBgXHJcbiAqXHJcbiAqIEBhdXRob3IgSHl5YW4gQWJvIEZha2hlciA8aGFib2Zha2hlckBiYXNpcy5jb20+XHJcbiAqL1xyXG5jbGFzcyBUZXh0SW5wdXQge1xyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdCBuZXcgVGV4dElucHV0XHJcbiAgICpcclxuICAgKiBAcGFyYW0gez9PYmplY3R9IG9wdGlvbnMgLSBUaGUgaW5wdXQgb3B0aW9ucy5cclxuICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fFN0cmluZ30gW29wdGlvbnMuZWxlbWVudHM9XCIuYmJqLXRleHQtbWFza2VkXCJdIC0gVGhlIGNsYXNzIG5hbWUgb3IgdGhlIG5vZGUgdG8gdXNlXHJcbiAgICogQHBhcmFtIHtIVE1MRG9jdW1lbnR9IFtvcHRpb25zLmRvY3VtZW50PWRvY3VtZW50XSAtIERvY3VtZW50IGluc3RhbmNlIHRvIHVzZVxyXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5jc3NDbGFzc0Vycm9yPVwiYmJqLW1hc2stZXJyb3JcIl0gLSBBIGNzcyBjbGFzcyB0byBhdHRhY2ggdG8gdGhlIGlucHV0IHdoZW4gaXQgaXMgaW52YWxpZFxyXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5jc3NDbGFzc1N1Y2Nlc3M9XCJiYmotbWFzay1zdWNjZXNzXCJdIC0gQSBjc3MgY2xhc3MgdG8gYXR0YWNoIHRvIHRoZSBpbnB1dCB3aGVuIGl0IGlzIHZhbGlkIGFmdGVyIHRoZSB1c2VyIGludGVyYWN0aW9uXHJcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdGlvbnMub25VcGRhdGU9bnVsbF0gLSBBIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCBvbiB0aGUgbmV3IG1hc2tlZCB2YWx1ZSBpcyBzZXRcclxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0aW9ucy5vbkludmFsaWQ9bnVsbF0gLSBBIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCBvbiB0aGUgaW5wdXQgb3IgdGhlIG1hc2sgaXMgaW52YWxpZFxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSB7fSkge1xyXG4gICAgdGhpcy5vcHRpb25zID0ge1xyXG4gICAgICAuLi57XHJcbiAgICAgICAgZWxlbWVudHM6ICcuYmJqLXRleHQtbWFza2VkJyxcclxuICAgICAgICBkb2M6IGRvY3VtZW50LFxyXG4gICAgICAgIGNzc0NsYXNzRXJyb3I6ICdiYmotbWFzay1lcnJvcicsXHJcbiAgICAgICAgY3NzQ2xhc3NTdWNjZXNzOiAnYmJqLW1hc2stc3VjY2VzcycsXHJcbiAgICAgICAgb25VcGRhdGU6IG51bGwsXHJcbiAgICAgICAgb25JbnZhbGlkOiBudWxsLFxyXG4gICAgICB9LFxyXG4gICAgICAuLi5vcHRpb25zLFxyXG4gICAgfVxyXG4gICAgdGhpcy5fb25LZXlzdHJva2UgPSB0aGlzLl9vbktleXN0cm9rZS5iaW5kKHRoaXMpXHJcbiAgICB0aGlzLl9vbkZvY3VzID0gdGhpcy5fb25Gb2N1cy5iaW5kKHRoaXMpXHJcbiAgICB0aGlzLnJlZnJlc2goKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSB0aGUgY29tcG9uZW50IGFuZCB3cmFwIHRoZSBpbnB1dCBlbGVtZW50cyBmb3IgbWFza2luZyBpbiBjYXNlXHJcbiAgICogdGhleSBhcmUgbm90IHdyYXBwZWQgeWV0XHJcbiAgICovXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIGNvbnN0IGVsZW1lbnRzID1cclxuICAgICAgdHlwZW9mIHRoaXMub3B0aW9ucy5lbGVtZW50cyA9PT0gJ3N0cmluZydcclxuICAgICAgICA/IHRoaXMub3B0aW9ucy5kb2MucXVlcnlTZWxlY3RvckFsbCh0aGlzLm9wdGlvbnMuZWxlbWVudHMpXHJcbiAgICAgICAgOiB0aGlzLm9wdGlvbnMuZWxlbWVudHNcclxuICAgIGxldCBpbnB1dCwgcGFyZW50Q2xhc3NcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlucHV0ID0gZWxlbWVudHNbaV1cclxuICAgICAgaWYgKGlucHV0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkge1xyXG4gICAgICAgIHBhcmVudENsYXNzID0gaW5wdXQucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoJ2NsYXNzJylcclxuXHJcbiAgICAgICAgaWYgKCFpbnB1dC5nZXRBdHRyaWJ1dGUoJ2lkJykpIHtcclxuICAgICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgICAgYEJCak1hc2tpbmc6IElucHV0IGhhcyBubyBJRC4gV2l0aG91dCBhbiBJRCB0aGUgaW5wdXQgY2Fubm90IGJlIG1hc2tlZGAsXHJcbiAgICAgICAgICAgIGlucHV0XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICBjb250aW51ZVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gd2UgZG9uJ3QgaW5pdGlhbGl6ZSB0aGUgaW5wdXQncyB3cmFwIHR3aWNlXHJcbiAgICAgICAgY29uc3QgaXNXcmFwcGVkID1cclxuICAgICAgICAgIHBhcmVudENsYXNzICYmIHBhcmVudENsYXNzLmluZGV4T2YoJ3RleHRJbnB1dE1hc2tfX3dyYXAnKSA+IC0xXHJcbiAgICAgICAgdGhpcy5fd3JhcChpbnB1dCwgaXNXcmFwcGVkKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgIGBCQmpNYXNraW5nOiBJbnZhbGlkIGlucHV0IGVsZW1lbnQuIFRoZSBlbGVtZW50IHdpbGwgYmUgaWdub3JlZGAsXHJcbiAgICAgICAgICBpbnB1dFxyXG4gICAgICAgIClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVW53cmFwIHRoZSBpbnB1dCBlbGVtZW50cyBhbmQgcmVtb3ZlIGF0dGFjaGVkIGxpc3RlbmVyc1xyXG4gICAqL1xyXG4gIGRlc3Ryb3koKSB7XHJcbiAgICBjb25zdCBlbGVtZW50cyA9XHJcbiAgICAgIHR5cGVvZiB0aGlzLm9wdGlvbnMuZWxlbWVudHMgPT09ICdzdHJpbmcnXHJcbiAgICAgICAgPyB0aGlzLm9wdGlvbnMuZG9jLnF1ZXJ5U2VsZWN0b3JBbGwodGhpcy5vcHRpb25zLmVsZW1lbnRzKVxyXG4gICAgICAgIDogdGhpcy5vcHRpb25zLmVsZW1lbnRzXHJcblxyXG4gICAgbGV0IGlucHV0LCBwYXJlbnQsIHBhcmVudENsYXNzXHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpbnB1dCA9IGVsZW1lbnRzW2ldXHJcbiAgICAgIHBhcmVudCA9IGlucHV0LnBhcmVudE5vZGVcclxuICAgICAgcGFyZW50Q2xhc3MgPSBwYXJlbnQuZ2V0QXR0cmlidXRlKCdjbGFzcycpXHJcblxyXG4gICAgICBpZiAocGFyZW50Q2xhc3MgJiYgcGFyZW50Q2xhc3MuaW5kZXhPZigndGV4dElucHV0TWFza19fd3JhcCcpID4gLTEpIHtcclxuICAgICAgICB0aGlzLl91bndyYXAocGFyZW50KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgdGhlIHRleHQgbWFza2luZyBpbnB1dCB3cmFwcGVyXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0hUTUxJbnB1dEVsZW1lbnR9IGlucHV0IHRoZSBpbnB1dCBlbGVtZW50XHJcbiAgICogQHBhcmFtIHtCb29sZWFufSBpc1dyYXBwZWQgd2hlbiB0cnVlIHRoZSBpbnB1dCBpcyBhbHJlYWR5IHdyYXBwZWQgYW5kIHdlIG5lZWQgdG8gYWRkIHdoYXQgaXNcclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNzaW5nIG9ubHlcclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHtIVE1MU3BhbkVsZW1lbnR9IHRoZSB3cmFwIGVsZW1lbnRcclxuICAgKlxyXG4gICAqIEBwcm90ZWN0ZWRcclxuICAgKi9cclxuICBfd3JhcChpbnB1dCwgaXNXcmFwcGVkKSB7XHJcbiAgICBjb25zdCBpbnB1dElkID0gaW5wdXQuZ2V0QXR0cmlidXRlKCdpZCcpLFxyXG4gICAgICBpbnB1dE5hbWUgPSBpbnB1dC5nZXRBdHRyaWJ1dGUoJ25hbWUnKSxcclxuICAgICAgbWFzayA9IGlucHV0LmRhdGFzZXQubWFzayB8fCAnJyxcclxuICAgICAgb3JpZ2luYWxQYXR0ZXJuID0gaW5wdXQucGF0dGVybixcclxuICAgICAgZGVmYXVsdFBhdHRlcm4gPSBnZW5lcmF0ZVBhdHRlcm5Gcm9tTWFzayhtYXNrKSxcclxuICAgICAgcGF0dGVybiA9IG9yaWdpbmFsUGF0dGVybiB8fCBkZWZhdWx0UGF0dGVyblxyXG5cclxuICAgIGxldCB3cmFwID0gbnVsbCxcclxuICAgICAgdW5tYXNrSW5wdXQgPSBudWxsXHJcblxyXG4gICAgaWYgKCFpc1dyYXBwZWQpIHtcclxuICAgICAgd3JhcCA9IHRoaXMub3B0aW9ucy5kb2MuY3JlYXRlRWxlbWVudCgnc3BhbicpXHJcbiAgICAgIHVubWFza0lucHV0ID0gdGhpcy5vcHRpb25zLmRvYy5jcmVhdGVFbGVtZW50KCdpbnB1dCcpIC8vIGhpZGRlbiBpbnB1dCB3aXRoIHRoZSB1bm1hc2tlZCB2YWx1ZXMgZm9yIGZvcm1zXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB3cmFwID0gaW5wdXQucGFyZW50Tm9kZVxyXG4gICAgICB1bm1hc2tJbnB1dCA9IHdyYXAucXVlcnlTZWxlY3RvcignLnRleHRJbnB1dE1hc2tfX3VubWFza2VkSW5wdXQnKVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGNvbmZpZ3VyZSB0aGUgYWN0dWFsIGlucHV0XHJcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgaW5wdXQudmFsdWUgPSBtYXNrSWZOb3RNYXNrZWQoaW5wdXQudmFsdWUsIG1hc2spXHJcbiAgICBpbnB1dC5wYXR0ZXJuID0gcGF0dGVyblxyXG4gICAgaW5wdXQuY2xhc3NMaXN0LmFkZCgndGV4dElucHV0TWFza19fdGV4dElucHV0JylcclxuICAgIGlucHV0LmRhdGFzZXQubWFzayA9IG1hc2tcclxuICAgIGlucHV0LmRhdGFzZXQudmFsdWVVbm1hc2tlZCA9IHVubWFzayhpbnB1dC52YWx1ZSwgbWFzaylcclxuICAgIGlmIChvcmlnaW5hbFBhdHRlcm4gJiYgb3JpZ2luYWxQYXR0ZXJuICE9PSBkZWZhdWx0UGF0dGVybikge1xyXG4gICAgICBpbnB1dC5kYXRhc2V0LmlzQ3VzdG9tUGF0dGVybiA9IHRydWVcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWlzV3JhcHBlZCkge1xyXG4gICAgICBpZiAoIShpbnB1dC5oYXNBdHRyaWJ1dGUoJ3JlYWRvbmx5JykgfHwgaW5wdXQuaGFzQXR0cmlidXRlKCdkaXNhYmxlJykpKSB7XHJcbiAgICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLl9vbktleXN0cm9rZSlcclxuICAgICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXlwcmVzcycsIHRoaXMuX29uS2V5c3Ryb2tlKVxyXG4gICAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ3Bhc3RlJywgdGhpcy5fb25LZXlzdHJva2UpXHJcbiAgICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIHRoaXMuX29uRm9jdXMpXHJcbiAgICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9vbkZvY3VzKVxyXG4gICAgICB9XHJcbiAgICAgIGlucHV0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHdyYXAsIGlucHV0KSAvLyBtb3ZlIHRoZSBpbnB1dCBvdXRzaWRlIHRoZSB3cmFwcGVyXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuX3ZhbGlkYXRlSW5wdXQoaW5wdXQpKSB7XHJcbiAgICAgIHRoaXMuX19maXJlT25VcGRhdGUoaW5wdXQudmFsdWUsIGlucHV0LmRhdGFzZXQudmFsdWVVbm1hc2tlZCwgaW5wdXQpXHJcbiAgICB9XHJcblxyXG4gICAgLy8gY29uZmlndXJlIHRoZSB1bm1hc2tlZCBpbnB1dFxyXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgdW5tYXNrSW5wdXQuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJylcclxuICAgIHVubWFza0lucHV0LnNldEF0dHJpYnV0ZSgndHlwZScsICdoaWRkZW4nKVxyXG4gICAgdW5tYXNrSW5wdXQuY2xhc3NMaXN0LmFkZCgndGV4dElucHV0TWFza19fdW5tYXNrZWRJbnB1dCcpXHJcbiAgICB1bm1hc2tJbnB1dC52YWx1ZSA9IGlucHV0LmRhdGFzZXQudmFsdWVVbm1hc2tlZFxyXG4gICAgaWYgKGlucHV0SWQpIHVubWFza0lucHV0LnNldEF0dHJpYnV0ZSgnaWQnLCBgJHtpbnB1dElkfS11bm1hc2tlZGApXHJcbiAgICBpZiAoaW5wdXROYW1lKSB1bm1hc2tJbnB1dC5zZXRBdHRyaWJ1dGUoJ25hbWUnLCBgJHtpbnB1dE5hbWV9LXVubWFza2VkYClcclxuXHJcbiAgICBpZiAoIWlzV3JhcHBlZCkge1xyXG4gICAgICAvLyBjb25maWd1cmUgdGhlIHdyYXBwZXJcclxuICAgICAgd3JhcC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ3RleHRJbnB1dE1hc2tfX3dyYXAnKVxyXG4gICAgICB3cmFwLmFwcGVuZENoaWxkKHVubWFza0lucHV0KVxyXG4gICAgICB3cmFwLmFwcGVuZENoaWxkKGlucHV0KVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB3cmFwXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVbndyYXAgdGhlIG1hc2tlZCBpbnB1dCBhbmQgcmVtb3ZlIHRoZSB2YWx1ZSBjaGFuZ2VkIGxpc3RlbmVyXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0hUTUxTcGFuRWxlbWVudH0gdGV4dElucHV0IHRoZSB3cmFwcGVyIHNwYW4gaW5zdGFuY2VcclxuICAgKlxyXG4gICAqIEBwcm90ZWN0ZWRcclxuICAgKi9cclxuICBfdW53cmFwKHRleHRJbnB1dCkge1xyXG4gICAgdGV4dElucHV0LnJlbW92ZUNoaWxkKFxyXG4gICAgICB0ZXh0SW5wdXQucXVlcnlTZWxlY3RvcignLnRleHRJbnB1dE1hc2tfX3VubWFza2VkSW5wdXQnKVxyXG4gICAgKVxyXG5cclxuICAgIGNvbnN0IGlucHV0ID0gdGV4dElucHV0LnF1ZXJ5U2VsZWN0b3IoJy50ZXh0SW5wdXRNYXNrX190ZXh0SW5wdXQnKVxyXG4gICAgaW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLl9vbktleXN0cm9rZSlcclxuICAgIGlucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXByZXNzJywgdGhpcy5fb25LZXlzdHJva2UpXHJcbiAgICBpbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCdwYXN0ZScsIHRoaXMuX29uS2V5c3Ryb2tlKVxyXG4gICAgaW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIHRoaXMuX29uRm9jdXMpXHJcbiAgICBpbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuX29uRm9jdXMpXHJcbiAgICBkZWxldGUgaW5wdXQuZGF0YXNldC52YWx1ZVVubWFza2VkXHJcbiAgICBpZiAoIWlucHV0LmRhdGFzZXQuaXNDdXN0b21QYXR0ZXJuKSB7XHJcbiAgICAgIGlucHV0LnJlbW92ZUF0dHJpYnV0ZSgncGF0dGVybicpXHJcbiAgICAgIGRlbGV0ZSBpbnB1dC5kYXRhc2V0LmlzQ3VzdG9tUGF0dGVyblxyXG4gICAgfVxyXG5cclxuICAgIGlucHV0LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5vcHRpb25zLmNzc0NsYXNzRXJyb3IpXHJcblxyXG4gICAgdGV4dElucHV0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGlucHV0LCB0ZXh0SW5wdXQpXHJcbiAgICB0ZXh0SW5wdXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0ZXh0SW5wdXQpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMaXN0ZW4gdG8gZXZlcnkga2V5c3Ryb2tlIG9uIHRoZSBpbnB1dCBhbmQgdXBkYXRlIHRoZSBtYXNrZWQgYW5kIHRoZSB1bm1hc2tlZCB2YWx1ZVxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtFdmVudH0gZVxyXG4gICAqXHJcbiAgICogQHByb3RlY3RlZFxyXG4gICAqL1xyXG4gIF9vbktleXN0cm9rZShlKSB7XHJcbiAgICBpZiAoZS5jdHJsS2V5IHx8IGUuc2hpZnRLZXkgfHwgZS5hbHRLZXkgfHwgZS5tZXRhS2V5KSByZXR1cm5cclxuICAgIGlmKGUua2V5Q29kZSAhPT0gMTMpIGUucHJldmVudERlZmF1bHQoKVxyXG4gICAgXHJcbiAgICBjb25zdCBpbnB1dCA9IGUudGFyZ2V0LFxyXG4gICAgICBtYXNrID0gaW5wdXQuZGF0YXNldC5tYXNrIHx8IHRoaXMub3B0aW9ucy5tYXNrLFxyXG4gICAgICBldmVudFR5cGUgPSBlLnR5cGVcclxuXHJcbiAgICBpbnB1dC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMub3B0aW9ucy5jc3NDbGFzc0Vycm9yKVxyXG4gICAgaW5wdXQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLm9wdGlvbnMuY3NzQ2xhc3NTdWNjZXNzKVxyXG4gICAgaW5wdXQuc2V0Q3VzdG9tVmFsaWRpdHkoJycpO1xyXG5cclxuICAgIGxldCB2YWx1ZSA9IGlucHV0LnZhbHVlLFxyXG4gICAgICBrZXlDb2RlID0gZS5rZXlDb2RlLFxyXG4gICAgICBrZXlDb250ZW50ID0gZS5rZXkgfHwgZS5jb2RlLnJlcGxhY2UoL1teMC05XS9nLCAnJyksXHJcbiAgICAgIGtleSA9IGtleUNvbnRlbnQgPyAoa2V5Q29udGVudC5sZW5ndGggPiAxID8gJycgOiBrZXlDb250ZW50KSA6ICcnLFxyXG4gICAgICBpbnNlcnRQb3NpdGlvbiA9IGZpbmRDYXJldFBvc2l0aW9uKHZhbHVlLCBtYXNrKSxcclxuICAgICAgbmV3VmFsdWUsXHJcbiAgICAgIHVubWFza2VkVmFsdWUsXHJcbiAgICAgIG1hc2tFcnJvciA9IGZhbHNlXHJcblxyXG4gICAgc3dpdGNoIChldmVudFR5cGUpIHtcclxuICAgICAgY2FzZSAncGFzdGUnOlxyXG4gICAgICAgIG5ld1ZhbHVlID0gbWFza0lmTm90TWFza2VkKFxyXG4gICAgICAgICAgKGUuY2xpcGJvYXJkRGF0YSB8fCB3aW5kb3cuY2xpcGJvYXJkRGF0YSkuZ2V0RGF0YSgnVGV4dCcpLFxyXG4gICAgICAgICAgbWFza1xyXG4gICAgICAgIClcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICdrZXl1cCc6XHJcbiAgICAgICAgbmV3VmFsdWUgPSB2YWx1ZVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJ2tleXByZXNzJzpcclxuICAgICAgICBjb25zdCBzZWxlY3Rpb25TdGFydCA9IGlucHV0LnNlbGVjdGlvblN0YXJ0XHJcbiAgICAgICAgaWYgKHNlbGVjdGlvblN0YXJ0ICE9PSBpbnNlcnRQb3NpdGlvbikgaW5zZXJ0UG9zaXRpb24gPSBzZWxlY3Rpb25TdGFydFxyXG5cclxuICAgICAgICBuZXdWYWx1ZSA9XHJcbiAgICAgICAgICB2YWx1ZS5zdWJzdHIoMCwgaW5zZXJ0UG9zaXRpb24pICsga2V5ICsgdmFsdWUuc3Vic3RyKGluc2VydFBvc2l0aW9uKVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuXHJcbiAgICB1bm1hc2tlZFZhbHVlID0gdW5tYXNrKG5ld1ZhbHVlLCBtYXNrKVxyXG5cclxuICAgIGlmIChbMzUsIDM2LCAzNywgMzgsIDM5LCA0MF0uaW5kZXhPZihrZXlDb2RlKSA9PT0gLTEpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBpbnB1dC52YWx1ZSA9IFN0cmluZ01hc2subWFzayh1bm1hc2tlZFZhbHVlLCBtYXNrLCBmYWxzZSlcclxuICAgICAgICBpZih0aGlzLl92YWxpZGF0ZUlucHV0KGlucHV0KSkge1xyXG4gICAgICAgICAgaW5wdXQuZGF0YXNldC52YWx1ZVVubWFza2VkID0gdW5tYXNrZWRWYWx1ZVxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmRvYy5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAgICAgICBgIyR7aW5wdXQuZ2V0QXR0cmlidXRlKCdpZCcpfS11bm1hc2tlZGBcclxuICAgICAgICAgICkudmFsdWUgPSB1bm1hc2tlZFZhbHVlXHJcbiAgICAgICAgICB0aGlzLl9fYXBwbHlDc3NDbGFzc1N0YXRlKGlucHV0LCAnc3VjY2VzcycpXHJcbiAgICAgICAgICB0aGlzLl9fZmlyZU9uVXBkYXRlKGlucHV0LnZhbHVlLCBpbnB1dC5kYXRhc2V0LnZhbHVlVW5tYXNrZWQsIGlucHV0KVxyXG4gICAgICAgIH1cclxuICAgICAgICBtYXNrRXJyb3IgPSBmYWxzZVxyXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIHRoaXMuX19hcHBseUNzc0NsYXNzU3RhdGUoaW5wdXQsICdlcnJvcicpXHJcbiAgICAgICAgdGhpcy5fX2ZpcmVPbkludmFsaWQoZXJyb3IsIGlucHV0KVxyXG4gICAgICAgIG1hc2tFcnJvciA9IHRydWVcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5fdXBkYXRlQ2FyZXRQb3NpdGlvbihpbnB1dCwgbWFzaylcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIW1hc2tFcnJvcikgdGhpcy5fdmFsaWRhdGVJbnB1dChpbnB1dClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3RlbiB0byBmb2N1cyBldmVudHMgb24gdGhlIGlucHV0IGFuZCB1cGRhdGUgdGhlIGNhcmV0IHBvc2l0aW9uXHJcbiAgICogd2hlcmUgdGhlIG5leHQgY2hhciBzaG91bGQgYmUgaW5zZXJ0ZWQgYWNjb3JkaW5nIHRvIHRoZSBtYXNrXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0ZvY3VzRXZlbnR9IGVcclxuICAgKlxyXG4gICAqIEBwcm90ZWN0ZWRcclxuICAgKi9cclxuICBfb25Gb2N1cyhlKSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGUudGFyZ2V0XHJcbiAgICBjb25zdCBtYXNrID0gaW5wdXQuZGF0YXNldC5tYXNrIHx8IHRoaXMub3B0aW9ucy5tYXNrXHJcbiAgICB0aGlzLl91cGRhdGVDYXJldFBvc2l0aW9uKGlucHV0LCBtYXNrKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHRoZSBjYXJldCBwb3NpdGlvbiBvbiB0aGUgaW5wdXQgYmFzZWQgb24gdGhlIGdpdmVuIG1hc2tcclxuICAgKlxyXG4gICAqIEBwYXJhbSB7SFRNTElucHV0RWxlbWVudH0gaW5wdXQgaW5zdGFuY2VcclxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWFzayAgYmJqIHN0cmluZ1xyXG4gICAqXHJcbiAgICogQHByb3RlY3RlZFxyXG4gICAqL1xyXG4gIF91cGRhdGVDYXJldFBvc2l0aW9uKGlucHV0LCBtYXNrKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgcG9zaXRpb24gPSBmaW5kQ2FyZXRQb3NpdGlvbihpbnB1dC52YWx1ZSwgbWFzaylcclxuICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UocG9zaXRpb24sIHBvc2l0aW9uKVxyXG4gICAgfSwgMClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyaWdnZXIgYGNoZWNrVmFsaWRpdHlgIG9uIHRoZSBpbnB1dFxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtIVE1MSW5wdXRFbGVtZW50fSBpbnB1dFxyXG4gICAqXHJcbiAgICogQHJldHVybnMge0Jvb2xlYW59IHRydWUgd2hlbiB2YWxpZCAsIGZhbHNlIG90aGVyd2lzZVxyXG4gICAqXHJcbiAgICogQHByb3RlY3RlZFxyXG4gICAqL1xyXG4gIF92YWxpZGF0ZUlucHV0KGlucHV0KSB7XHJcbiAgICBjb25zdCBpc1ZhbGlkID0gaW5wdXQuY2hlY2tWYWxpZGl0eSgpXHJcblxyXG4gICAgaWYgKGlzVmFsaWQpIHtcclxuICAgICAgdGhpcy5fX2FwcGx5Q3NzQ2xhc3NTdGF0ZShpbnB1dCwgJ3N1Y2Nlc3MnKVxyXG4gICAgICBpbnB1dC5zZXRDdXN0b21WYWxpZGl0eSgnJylcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX19hcHBseUNzc0NsYXNzU3RhdGUoaW5wdXQsICdlcnJvcicpXHJcbiAgICAgIHRoaXMuX19maXJlT25JbnZhbGlkKGlucHV0LnZhbGlkYXRpb25NZXNzYWdlLCBpbnB1dClcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaXNWYWxpZFxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBfX2ZpcmVPblVwZGF0ZSh2YWx1ZU1hc2tlZCwgdmFsdWVVbm1hc2tlZCwgaW5wdXQpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMub25VcGRhdGUpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLm9uVXBkYXRlKHZhbHVlTWFza2VkLCB2YWx1ZVVubWFza2VkLCBpbnB1dClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgX19maXJlT25JbnZhbGlkKGVycm9yLCBpbnB1dCkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vbkludmFsaWQpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLm9uSW52YWxpZChlcnJvciwgaW5wdXQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIF9fYXBwbHlDc3NDbGFzc1N0YXRlKGlucHV0LCBzdGF0ZSkge1xyXG4gICAgaWYgKGlucHV0Lmhhc0F0dHJpYnV0ZSgncmVhZG9ubHknKSB8fCBpbnB1dC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykpIHtcclxuICAgICAgaW5wdXQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLm9wdGlvbnMuY3NzQ2xhc3NFcnJvcilcclxuICAgICAgaW5wdXQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLm9wdGlvbnMuY3NzQ2xhc3NTdWNjZXNzKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHN0YXRlID09PSAnc3VjY2VzcycpIHtcclxuICAgICAgICBpbnB1dC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMub3B0aW9ucy5jc3NDbGFzc0Vycm9yKVxyXG4gICAgICAgIGlucHV0LmNsYXNzTGlzdC5hZGQodGhpcy5vcHRpb25zLmNzc0NsYXNzU3VjY2VzcylcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHN0YXRlID09PSAnZXJyb3InKSB7XHJcbiAgICAgICAgaW5wdXQuY2xhc3NMaXN0LmFkZCh0aGlzLm9wdGlvbnMuY3NzQ2xhc3NFcnJvcilcclxuICAgICAgICBpbnB1dC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMub3B0aW9ucy5jc3NDbGFzc1N1Y2Nlc3MpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFRleHRJbnB1dFxyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvVGV4dElucHV0L1RleHRJbnB1dC5qcyIsIi8qXHJcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWlucHV0LW1hc2tpbmcgbGliLlxyXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XHJcbiAqXHJcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXHJcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxyXG4gKi9cclxuXHJcbmltcG9ydCBTdHJpbmdNYXNrIGZyb20gJ2Jiai1tYXNrcy9zcmMvU3RyaW5nTWFzaydcclxuXHJcbmNvbnN0IFNVUFBPUlRFRF9NQVNLUyA9IFsnWCcsICdhJywgJ0EnLCAnMCcsICd6JywgJ1onLCAnVSddXHJcbi8qKlxyXG4gKiBXaGVuIHRydWUgLCB0aGVuIHRoZSBicm93c2VyIHN1cHBvcnRzIFVuaWNvZGUgUHJvcGVydHkgRXNjYXBlc1xyXG4gKiBvdGhlcndpc2UgaXQgaXMgZmFsc2UgXHJcbiAqIFxyXG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcmVnZXhwLXVuaWNvZGUtcHJvcGVydHktZXNjYXBlc31cclxuICovXHJcbmxldCBJU19VTklDT0RFX1BST1BFUlRZX1NVUFBPUlRFRCA9IGZhbHNlXHJcbnRyeSB7XHJcbiAgZXZhbCgnL1xcXFxwe0x9L3UnKVxyXG4gIElTX1VOSUNPREVfUFJPUEVSVFlfU1VQUE9SVEVEID0gdHJ1ZVxyXG59IGNhdGNoIChlcnIpIHtcclxuICBJU19VTklDT0RFX1BST1BFUlRZX1NVUFBPUlRFRCA9IGZhbHNlXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVjayBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgbWFza2VkIHdpdGggdGhlIGdpdmVuIG1hc2sgb3Igbm90XHJcbiAqXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZSBtYXNrZWQgb3IgdW5tYXNrZWQgdmFsdWVcclxuICogQHBhcmFtIHtTdHJpbmd9IG1hc2sgIGEgYmJqIG1hc2tcclxuICpcclxuICogQHJldHVybiB7Qm9vbGVhbn0gdHJ1ZSB3aGVuIHRoZSB2YWx1ZSBpcyBtYXNrZWQgd2l0aCBnaXZlbiBtYXNrICwgZmFsc2Ugb3RoZXJ3aXNlXHJcbiAqL1xyXG5jb25zdCBpc01hc2tlZFZhbHVlID0gKHZhbHVlLCBtYXNrKSA9PiB7XHJcbiAgaWYgKHR5cGVvZiBpc01hc2tlZFZhbHVlLl9fQ0FDSEVfXyA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgIGlzTWFza2VkVmFsdWUuX19DQUNIRV9fID0ge31cclxuICB9XHJcblxyXG4gIGNvbnN0IGNhY2hlS2V5ID0gYCR7dmFsdWV9LSR7bWFza31gXHJcblxyXG4gIGlmICghaXNNYXNrZWRWYWx1ZS5fX0NBQ0hFX19bY2FjaGVLZXldKSB7XHJcbiAgICBjb25zdCB1bm1hc2tlZFZhbHVlID0gdW5tYXNrKHZhbHVlLCBtYXNrKVxyXG4gICAgaXNNYXNrZWRWYWx1ZS5fX0NBQ0hFX19bY2FjaGVLZXldID1cclxuICAgICAgdmFsdWUgPT09IFN0cmluZ01hc2subWFzayh1bm1hc2tlZFZhbHVlLCBtYXNrKVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGlzTWFza2VkVmFsdWUuX19DQUNIRV9fW2NhY2hlS2V5XVxyXG59XHJcblxyXG4vKipcclxuICogTWFzayB0aGUgZ2l2ZW4gdmFsdWUgd2l0aCB0aGUgZ2l2ZW4gbWFzayBpbiBjYXNlIHRoZSB2YWx1ZSBpcyBub3QgYWxyZWFkeSBtYXNrZWQgd2l0aCB0aGVcclxuICogZ2l2ZW4gbWFza1xyXG4gKlxyXG4gKiBAcGFyYW0ge1N0cmluZ30gdmFsdWUgbWFza2VkIG9yIHVubWFza2VkIHZhbHVlXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBtYXNrICBhIGJiaiBtYXNrXHJcbiAqXHJcbiAqIEByZXR1cm4ge1N0cmluZ30gYSBtYXNrZWQgdmFsdWVcclxuICovXHJcbmNvbnN0IG1hc2tJZk5vdE1hc2tlZCA9ICh2YWx1ZSwgbWFzaykgPT4ge1xyXG4gIGlmICh0eXBlb2YgbWFza0lmTm90TWFza2VkLl9fQ0FDSEVfXyA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgIG1hc2tJZk5vdE1hc2tlZC5fX0NBQ0hFX18gPSB7fVxyXG4gIH1cclxuXHJcbiAgY29uc3QgY2FjaGVLZXkgPSBgJHt2YWx1ZX0tJHttYXNrfWBcclxuXHJcbiAgaWYgKCFtYXNrSWZOb3RNYXNrZWQuX19DQUNIRV9fW2NhY2hlS2V5XSkge1xyXG4gICAgaWYgKGlzTWFza2VkVmFsdWUodmFsdWUsIG1hc2spKSB7XHJcbiAgICAgIG1hc2tJZk5vdE1hc2tlZC5fX0NBQ0hFX19bY2FjaGVLZXldID0gdmFsdWVcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgbWFza0lmTm90TWFza2VkLl9fQ0FDSEVfX1tjYWNoZUtleV0gPSBTdHJpbmdNYXNrLm1hc2soXHJcbiAgICAgICAgICB2YWx1ZSxcclxuICAgICAgICAgIG1hc2ssXHJcbiAgICAgICAgICBmYWxzZVxyXG4gICAgICAgIClcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIG1hc2tJZk5vdE1hc2tlZC5fX0NBQ0hFX19bY2FjaGVLZXldID0gU3RyaW5nTWFzay5tYXNrKCcnLCBtYXNrKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gbWFza0lmTm90TWFza2VkLl9fQ0FDSEVfX1tjYWNoZUtleV1cclxufVxyXG5cclxuLyoqXHJcbiAqIEdlbmVyYXRlIGEgcmVnZXggcGF0dGVyIGJhc2VkIG9uIHRoZSBnaXZlIHRhc2tcclxuICpcclxuICogQHBhcmFtIHtTdHJpbmd9IG1hc2sgIGJiaiBzdHJpbmcgbWFza1xyXG4gKlxyXG4gKiBAcmV0dXJuIHtTdHJpbmd9IHJlZ2V4IGZvciB0aGUgZ2l2ZSBtYXNrXHJcbiAqL1xyXG5jb25zdCBnZW5lcmF0ZVBhdHRlcm5Gcm9tTWFzayA9IG1hc2sgPT4ge1xyXG4gIGlmICh0eXBlb2YgZ2VuZXJhdGVQYXR0ZXJuRnJvbU1hc2suX19DQUNIRV9fID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgZ2VuZXJhdGVQYXR0ZXJuRnJvbU1hc2suX19DQUNIRV9fID0ge31cclxuICB9XHJcblxyXG4gIGNvbnN0IGNhY2hlS2V5ID0gbWFza1xyXG5cclxuICBpZiAoIWdlbmVyYXRlUGF0dGVybkZyb21NYXNrLl9fQ0FDSEVfX1tjYWNoZUtleV0pIHtcclxuICAgIGNvbnN0IG1hc2tBc0FycnkgPSBtYXNrLnNwbGl0KCcnKVxyXG4gICAgbGV0IHJlZ2V4ID0gJydcclxuICAgIG1hc2tBc0FycnkuZm9yRWFjaChjID0+IHtcclxuICAgICAgc3dpdGNoIChjKSB7XHJcbiAgICAgICAgY2FzZSAnWCc6XHJcbiAgICAgICAgICByZWdleCArPSAnKFteIC1+XSknXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgJ2EnOlxyXG4gICAgICAgIGNhc2UgJ0EnOlxyXG4gICAgICAgICAgLy8gaHR0cHM6Ly9tb3RoZXJlZmYuaW4vcmVnZXhwdSNpbnB1dD12YXIrcmVnZXgrJTNEKy8lNUNwJTdCTCU3RC91JTNCJnVuaWNvZGVQcm9wZXJ0eUVzY2FwZT0xXHJcbiAgICAgICAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNTAwMzMvcmVndWxhci1leHByZXNzaW9uLXRvLW1hdGNoLW5vbi1hc2NpaS1jaGFyYWN0ZXJzI2Fuc3dlci00ODkwMjc2NVxyXG4gICAgICAgICAgcmVnZXggKz0gSVNfVU5JQ09ERV9QUk9QRVJUWV9TVVBQT1JURURcclxuICAgICAgICAgICAgPyAnXFxcXHB7TH0nXHJcbiAgICAgICAgICAgIDogJygoPzpbQS1aYS16XFx4QUFcXHhCNVxceEJBXFx4QzAtXFx4RDZcXHhEOC1cXHhGNlxceEY4LVxcdTAyQzFcXHUwMkM2LVxcdTAyRDFcXHUwMkUwLVxcdTAyRTRcXHUwMkVDXFx1MDJFRVxcdTAzNzAtXFx1MDM3NFxcdTAzNzZcXHUwMzc3XFx1MDM3QS1cXHUwMzdEXFx1MDM3RlxcdTAzODZcXHUwMzg4LVxcdTAzOEFcXHUwMzhDXFx1MDM4RS1cXHUwM0ExXFx1MDNBMy1cXHUwM0Y1XFx1MDNGNy1cXHUwNDgxXFx1MDQ4QS1cXHUwNTJGXFx1MDUzMS1cXHUwNTU2XFx1MDU1OVxcdTA1NjAtXFx1MDU4OFxcdTA1RDAtXFx1MDVFQVxcdTA1RUYtXFx1MDVGMlxcdTA2MjAtXFx1MDY0QVxcdTA2NkVcXHUwNjZGXFx1MDY3MS1cXHUwNkQzXFx1MDZENVxcdTA2RTVcXHUwNkU2XFx1MDZFRVxcdTA2RUZcXHUwNkZBLVxcdTA2RkNcXHUwNkZGXFx1MDcxMFxcdTA3MTItXFx1MDcyRlxcdTA3NEQtXFx1MDdBNVxcdTA3QjFcXHUwN0NBLVxcdTA3RUFcXHUwN0Y0XFx1MDdGNVxcdTA3RkFcXHUwODAwLVxcdTA4MTVcXHUwODFBXFx1MDgyNFxcdTA4MjhcXHUwODQwLVxcdTA4NThcXHUwODYwLVxcdTA4NkFcXHUwOEEwLVxcdTA4QjRcXHUwOEI2LVxcdTA4QkRcXHUwOTA0LVxcdTA5MzlcXHUwOTNEXFx1MDk1MFxcdTA5NTgtXFx1MDk2MVxcdTA5NzEtXFx1MDk4MFxcdTA5ODUtXFx1MDk4Q1xcdTA5OEZcXHUwOTkwXFx1MDk5My1cXHUwOUE4XFx1MDlBQS1cXHUwOUIwXFx1MDlCMlxcdTA5QjYtXFx1MDlCOVxcdTA5QkRcXHUwOUNFXFx1MDlEQ1xcdTA5RERcXHUwOURGLVxcdTA5RTFcXHUwOUYwXFx1MDlGMVxcdTA5RkNcXHUwQTA1LVxcdTBBMEFcXHUwQTBGXFx1MEExMFxcdTBBMTMtXFx1MEEyOFxcdTBBMkEtXFx1MEEzMFxcdTBBMzJcXHUwQTMzXFx1MEEzNVxcdTBBMzZcXHUwQTM4XFx1MEEzOVxcdTBBNTktXFx1MEE1Q1xcdTBBNUVcXHUwQTcyLVxcdTBBNzRcXHUwQTg1LVxcdTBBOERcXHUwQThGLVxcdTBBOTFcXHUwQTkzLVxcdTBBQThcXHUwQUFBLVxcdTBBQjBcXHUwQUIyXFx1MEFCM1xcdTBBQjUtXFx1MEFCOVxcdTBBQkRcXHUwQUQwXFx1MEFFMFxcdTBBRTFcXHUwQUY5XFx1MEIwNS1cXHUwQjBDXFx1MEIwRlxcdTBCMTBcXHUwQjEzLVxcdTBCMjhcXHUwQjJBLVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0RcXHUwQjVDXFx1MEI1RFxcdTBCNUYtXFx1MEI2MVxcdTBCNzFcXHUwQjgzXFx1MEI4NS1cXHUwQjhBXFx1MEI4RS1cXHUwQjkwXFx1MEI5Mi1cXHUwQjk1XFx1MEI5OVxcdTBCOUFcXHUwQjlDXFx1MEI5RVxcdTBCOUZcXHUwQkEzXFx1MEJBNFxcdTBCQTgtXFx1MEJBQVxcdTBCQUUtXFx1MEJCOVxcdTBCRDBcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzlcXHUwQzNEXFx1MEM1OC1cXHUwQzVBXFx1MEM2MFxcdTBDNjFcXHUwQzgwXFx1MEM4NS1cXHUwQzhDXFx1MEM4RS1cXHUwQzkwXFx1MEM5Mi1cXHUwQ0E4XFx1MENBQS1cXHUwQ0IzXFx1MENCNS1cXHUwQ0I5XFx1MENCRFxcdTBDREVcXHUwQ0UwXFx1MENFMVxcdTBDRjFcXHUwQ0YyXFx1MEQwNS1cXHUwRDBDXFx1MEQwRS1cXHUwRDEwXFx1MEQxMi1cXHUwRDNBXFx1MEQzRFxcdTBENEVcXHUwRDU0LVxcdTBENTZcXHUwRDVGLVxcdTBENjFcXHUwRDdBLVxcdTBEN0ZcXHUwRDg1LVxcdTBEOTZcXHUwRDlBLVxcdTBEQjFcXHUwREIzLVxcdTBEQkJcXHUwREJEXFx1MERDMC1cXHUwREM2XFx1MEUwMS1cXHUwRTMwXFx1MEUzMlxcdTBFMzNcXHUwRTQwLVxcdTBFNDZcXHUwRTgxXFx1MEU4MlxcdTBFODRcXHUwRTg2LVxcdTBFOEFcXHUwRThDLVxcdTBFQTNcXHUwRUE1XFx1MEVBNy1cXHUwRUIwXFx1MEVCMlxcdTBFQjNcXHUwRUJEXFx1MEVDMC1cXHUwRUM0XFx1MEVDNlxcdTBFREMtXFx1MEVERlxcdTBGMDBcXHUwRjQwLVxcdTBGNDdcXHUwRjQ5LVxcdTBGNkNcXHUwRjg4LVxcdTBGOENcXHUxMDAwLVxcdTEwMkFcXHUxMDNGXFx1MTA1MC1cXHUxMDU1XFx1MTA1QS1cXHUxMDVEXFx1MTA2MVxcdTEwNjVcXHUxMDY2XFx1MTA2RS1cXHUxMDcwXFx1MTA3NS1cXHUxMDgxXFx1MTA4RVxcdTEwQTAtXFx1MTBDNVxcdTEwQzdcXHUxMENEXFx1MTBEMC1cXHUxMEZBXFx1MTBGQy1cXHUxMjQ4XFx1MTI0QS1cXHUxMjREXFx1MTI1MC1cXHUxMjU2XFx1MTI1OFxcdTEyNUEtXFx1MTI1RFxcdTEyNjAtXFx1MTI4OFxcdTEyOEEtXFx1MTI4RFxcdTEyOTAtXFx1MTJCMFxcdTEyQjItXFx1MTJCNVxcdTEyQjgtXFx1MTJCRVxcdTEyQzBcXHUxMkMyLVxcdTEyQzVcXHUxMkM4LVxcdTEyRDZcXHUxMkQ4LVxcdTEzMTBcXHUxMzEyLVxcdTEzMTVcXHUxMzE4LVxcdTEzNUFcXHUxMzgwLVxcdTEzOEZcXHUxM0EwLVxcdTEzRjVcXHUxM0Y4LVxcdTEzRkRcXHUxNDAxLVxcdTE2NkNcXHUxNjZGLVxcdTE2N0ZcXHUxNjgxLVxcdTE2OUFcXHUxNkEwLVxcdTE2RUFcXHUxNkYxLVxcdTE2RjhcXHUxNzAwLVxcdTE3MENcXHUxNzBFLVxcdTE3MTFcXHUxNzIwLVxcdTE3MzFcXHUxNzQwLVxcdTE3NTFcXHUxNzYwLVxcdTE3NkNcXHUxNzZFLVxcdTE3NzBcXHUxNzgwLVxcdTE3QjNcXHUxN0Q3XFx1MTdEQ1xcdTE4MjAtXFx1MTg3OFxcdTE4ODAtXFx1MTg4NFxcdTE4ODctXFx1MThBOFxcdTE4QUFcXHUxOEIwLVxcdTE4RjVcXHUxOTAwLVxcdTE5MUVcXHUxOTUwLVxcdTE5NkRcXHUxOTcwLVxcdTE5NzRcXHUxOTgwLVxcdTE5QUJcXHUxOUIwLVxcdTE5QzlcXHUxQTAwLVxcdTFBMTZcXHUxQTIwLVxcdTFBNTRcXHUxQUE3XFx1MUIwNS1cXHUxQjMzXFx1MUI0NS1cXHUxQjRCXFx1MUI4My1cXHUxQkEwXFx1MUJBRVxcdTFCQUZcXHUxQkJBLVxcdTFCRTVcXHUxQzAwLVxcdTFDMjNcXHUxQzRELVxcdTFDNEZcXHUxQzVBLVxcdTFDN0RcXHUxQzgwLVxcdTFDODhcXHUxQzkwLVxcdTFDQkFcXHUxQ0JELVxcdTFDQkZcXHUxQ0U5LVxcdTFDRUNcXHUxQ0VFLVxcdTFDRjNcXHUxQ0Y1XFx1MUNGNlxcdTFDRkFcXHUxRDAwLVxcdTFEQkZcXHUxRTAwLVxcdTFGMTVcXHUxRjE4LVxcdTFGMURcXHUxRjIwLVxcdTFGNDVcXHUxRjQ4LVxcdTFGNERcXHUxRjUwLVxcdTFGNTdcXHUxRjU5XFx1MUY1QlxcdTFGNURcXHUxRjVGLVxcdTFGN0RcXHUxRjgwLVxcdTFGQjRcXHUxRkI2LVxcdTFGQkNcXHUxRkJFXFx1MUZDMi1cXHUxRkM0XFx1MUZDNi1cXHUxRkNDXFx1MUZEMC1cXHUxRkQzXFx1MUZENi1cXHUxRkRCXFx1MUZFMC1cXHUxRkVDXFx1MUZGMi1cXHUxRkY0XFx1MUZGNi1cXHUxRkZDXFx1MjA3MVxcdTIwN0ZcXHUyMDkwLVxcdTIwOUNcXHUyMTAyXFx1MjEwN1xcdTIxMEEtXFx1MjExM1xcdTIxMTVcXHUyMTE5LVxcdTIxMURcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMkRcXHUyMTJGLVxcdTIxMzlcXHUyMTNDLVxcdTIxM0ZcXHUyMTQ1LVxcdTIxNDlcXHUyMTRFXFx1MjE4M1xcdTIxODRcXHUyQzAwLVxcdTJDMkVcXHUyQzMwLVxcdTJDNUVcXHUyQzYwLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRUVcXHUyQ0YyXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1MkQzMC1cXHUyRDY3XFx1MkQ2RlxcdTJEODAtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTJFMkZcXHUzMDA1XFx1MzAwNlxcdTMwMzEtXFx1MzAzNVxcdTMwM0JcXHUzMDNDXFx1MzA0MS1cXHUzMDk2XFx1MzA5RC1cXHUzMDlGXFx1MzBBMS1cXHUzMEZBXFx1MzBGQy1cXHUzMEZGXFx1MzEwNS1cXHUzMTJGXFx1MzEzMS1cXHUzMThFXFx1MzFBMC1cXHUzMUJBXFx1MzFGMC1cXHUzMUZGXFx1MzQwMC1cXHU0REI1XFx1NEUwMC1cXHU5RkVGXFx1QTAwMC1cXHVBNDhDXFx1QTREMC1cXHVBNEZEXFx1QTUwMC1cXHVBNjBDXFx1QTYxMC1cXHVBNjFGXFx1QTYyQVxcdUE2MkJcXHVBNjQwLVxcdUE2NkVcXHVBNjdGLVxcdUE2OURcXHVBNkEwLVxcdUE2RTVcXHVBNzE3LVxcdUE3MUZcXHVBNzIyLVxcdUE3ODhcXHVBNzhCLVxcdUE3QkZcXHVBN0MyLVxcdUE3QzZcXHVBN0Y3LVxcdUE4MDFcXHVBODAzLVxcdUE4MDVcXHVBODA3LVxcdUE4MEFcXHVBODBDLVxcdUE4MjJcXHVBODQwLVxcdUE4NzNcXHVBODgyLVxcdUE4QjNcXHVBOEYyLVxcdUE4RjdcXHVBOEZCXFx1QThGRFxcdUE4RkVcXHVBOTBBLVxcdUE5MjVcXHVBOTMwLVxcdUE5NDZcXHVBOTYwLVxcdUE5N0NcXHVBOTg0LVxcdUE5QjJcXHVBOUNGXFx1QTlFMC1cXHVBOUU0XFx1QTlFNi1cXHVBOUVGXFx1QTlGQS1cXHVBOUZFXFx1QUEwMC1cXHVBQTI4XFx1QUE0MC1cXHVBQTQyXFx1QUE0NC1cXHVBQTRCXFx1QUE2MC1cXHVBQTc2XFx1QUE3QVxcdUFBN0UtXFx1QUFBRlxcdUFBQjFcXHVBQUI1XFx1QUFCNlxcdUFBQjktXFx1QUFCRFxcdUFBQzBcXHVBQUMyXFx1QUFEQi1cXHVBQUREXFx1QUFFMC1cXHVBQUVBXFx1QUFGMi1cXHVBQUY0XFx1QUIwMS1cXHVBQjA2XFx1QUIwOS1cXHVBQjBFXFx1QUIxMS1cXHVBQjE2XFx1QUIyMC1cXHVBQjI2XFx1QUIyOC1cXHVBQjJFXFx1QUIzMC1cXHVBQjVBXFx1QUI1Qy1cXHVBQjY3XFx1QUI3MC1cXHVBQkUyXFx1QUMwMC1cXHVEN0EzXFx1RDdCMC1cXHVEN0M2XFx1RDdDQi1cXHVEN0ZCXFx1RjkwMC1cXHVGQTZEXFx1RkE3MC1cXHVGQUQ5XFx1RkIwMC1cXHVGQjA2XFx1RkIxMy1cXHVGQjE3XFx1RkIxRFxcdUZCMUYtXFx1RkIyOFxcdUZCMkEtXFx1RkIzNlxcdUZCMzgtXFx1RkIzQ1xcdUZCM0VcXHVGQjQwXFx1RkI0MVxcdUZCNDNcXHVGQjQ0XFx1RkI0Ni1cXHVGQkIxXFx1RkJEMy1cXHVGRDNEXFx1RkQ1MC1cXHVGRDhGXFx1RkQ5Mi1cXHVGREM3XFx1RkRGMC1cXHVGREZCXFx1RkU3MC1cXHVGRTc0XFx1RkU3Ni1cXHVGRUZDXFx1RkYyMS1cXHVGRjNBXFx1RkY0MS1cXHVGRjVBXFx1RkY2Ni1cXHVGRkJFXFx1RkZDMi1cXHVGRkM3XFx1RkZDQS1cXHVGRkNGXFx1RkZEMi1cXHVGRkQ3XFx1RkZEQS1cXHVGRkRDXXxcXHVEODAwW1xcdURDMDAtXFx1REMwQlxcdURDMEQtXFx1REMyNlxcdURDMjgtXFx1REMzQVxcdURDM0NcXHVEQzNEXFx1REMzRi1cXHVEQzREXFx1REM1MC1cXHVEQzVEXFx1REM4MC1cXHVEQ0ZBXFx1REU4MC1cXHVERTlDXFx1REVBMC1cXHVERUQwXFx1REYwMC1cXHVERjFGXFx1REYyRC1cXHVERjQwXFx1REY0Mi1cXHVERjQ5XFx1REY1MC1cXHVERjc1XFx1REY4MC1cXHVERjlEXFx1REZBMC1cXHVERkMzXFx1REZDOC1cXHVERkNGXXxcXHVEODAxW1xcdURDMDAtXFx1REM5RFxcdURDQjAtXFx1RENEM1xcdURDRDgtXFx1RENGQlxcdUREMDAtXFx1REQyN1xcdUREMzAtXFx1REQ2M1xcdURFMDAtXFx1REYzNlxcdURGNDAtXFx1REY1NVxcdURGNjAtXFx1REY2N118XFx1RDgwMltcXHVEQzAwLVxcdURDMDVcXHVEQzA4XFx1REMwQS1cXHVEQzM1XFx1REMzN1xcdURDMzhcXHVEQzNDXFx1REMzRi1cXHVEQzU1XFx1REM2MC1cXHVEQzc2XFx1REM4MC1cXHVEQzlFXFx1RENFMC1cXHVEQ0YyXFx1RENGNFxcdURDRjVcXHVERDAwLVxcdUREMTVcXHVERDIwLVxcdUREMzlcXHVERDgwLVxcdUREQjdcXHVEREJFXFx1RERCRlxcdURFMDBcXHVERTEwLVxcdURFMTNcXHVERTE1LVxcdURFMTdcXHVERTE5LVxcdURFMzVcXHVERTYwLVxcdURFN0NcXHVERTgwLVxcdURFOUNcXHVERUMwLVxcdURFQzdcXHVERUM5LVxcdURFRTRcXHVERjAwLVxcdURGMzVcXHVERjQwLVxcdURGNTVcXHVERjYwLVxcdURGNzJcXHVERjgwLVxcdURGOTFdfFxcdUQ4MDNbXFx1REMwMC1cXHVEQzQ4XFx1REM4MC1cXHVEQ0IyXFx1RENDMC1cXHVEQ0YyXFx1REQwMC1cXHVERDIzXFx1REYwMC1cXHVERjFDXFx1REYyN1xcdURGMzAtXFx1REY0NVxcdURGRTAtXFx1REZGNl18XFx1RDgwNFtcXHVEQzAzLVxcdURDMzdcXHVEQzgzLVxcdURDQUZcXHVEQ0QwLVxcdURDRThcXHVERDAzLVxcdUREMjZcXHVERDQ0XFx1REQ1MC1cXHVERDcyXFx1REQ3NlxcdUREODMtXFx1RERCMlxcdUREQzEtXFx1RERDNFxcdUREREFcXHVERERDXFx1REUwMC1cXHVERTExXFx1REUxMy1cXHVERTJCXFx1REU4MC1cXHVERTg2XFx1REU4OFxcdURFOEEtXFx1REU4RFxcdURFOEYtXFx1REU5RFxcdURFOUYtXFx1REVBOFxcdURFQjAtXFx1REVERVxcdURGMDUtXFx1REYwQ1xcdURGMEZcXHVERjEwXFx1REYxMy1cXHVERjI4XFx1REYyQS1cXHVERjMwXFx1REYzMlxcdURGMzNcXHVERjM1LVxcdURGMzlcXHVERjNEXFx1REY1MFxcdURGNUQtXFx1REY2MV18XFx1RDgwNVtcXHVEQzAwLVxcdURDMzRcXHVEQzQ3LVxcdURDNEFcXHVEQzVGXFx1REM4MC1cXHVEQ0FGXFx1RENDNFxcdURDQzVcXHVEQ0M3XFx1REQ4MC1cXHVEREFFXFx1REREOC1cXHVERERCXFx1REUwMC1cXHVERTJGXFx1REU0NFxcdURFODAtXFx1REVBQVxcdURFQjhcXHVERjAwLVxcdURGMUFdfFxcdUQ4MDZbXFx1REMwMC1cXHVEQzJCXFx1RENBMC1cXHVEQ0RGXFx1RENGRlxcdUREQTAtXFx1RERBN1xcdUREQUEtXFx1REREMFxcdURERTFcXHVEREUzXFx1REUwMFxcdURFMEItXFx1REUzMlxcdURFM0FcXHVERTUwXFx1REU1Qy1cXHVERTg5XFx1REU5RFxcdURFQzAtXFx1REVGOF18XFx1RDgwN1tcXHVEQzAwLVxcdURDMDhcXHVEQzBBLVxcdURDMkVcXHVEQzQwXFx1REM3Mi1cXHVEQzhGXFx1REQwMC1cXHVERDA2XFx1REQwOFxcdUREMDlcXHVERDBCLVxcdUREMzBcXHVERDQ2XFx1REQ2MC1cXHVERDY1XFx1REQ2N1xcdURENjhcXHVERDZBLVxcdUREODlcXHVERDk4XFx1REVFMC1cXHVERUYyXXxcXHVEODA4W1xcdURDMDAtXFx1REY5OV18XFx1RDgwOVtcXHVEQzgwLVxcdURENDNdfFtcXHVEODBDXFx1RDgxQy1cXHVEODIwXFx1RDg0MC1cXHVEODY4XFx1RDg2QS1cXHVEODZDXFx1RDg2Ri1cXHVEODcyXFx1RDg3NC1cXHVEODc5XVtcXHVEQzAwLVxcdURGRkZdfFxcdUQ4MERbXFx1REMwMC1cXHVEQzJFXXxcXHVEODExW1xcdURDMDAtXFx1REU0Nl18XFx1RDgxQVtcXHVEQzAwLVxcdURFMzhcXHVERTQwLVxcdURFNUVcXHVERUQwLVxcdURFRURcXHVERjAwLVxcdURGMkZcXHVERjQwLVxcdURGNDNcXHVERjYzLVxcdURGNzdcXHVERjdELVxcdURGOEZdfFxcdUQ4MUJbXFx1REU0MC1cXHVERTdGXFx1REYwMC1cXHVERjRBXFx1REY1MFxcdURGOTMtXFx1REY5RlxcdURGRTBcXHVERkUxXFx1REZFM118XFx1RDgyMVtcXHVEQzAwLVxcdURGRjddfFxcdUQ4MjJbXFx1REMwMC1cXHVERUYyXXxcXHVEODJDW1xcdURDMDAtXFx1REQxRVxcdURENTAtXFx1REQ1MlxcdURENjQtXFx1REQ2N1xcdURENzAtXFx1REVGQl18XFx1RDgyRltcXHVEQzAwLVxcdURDNkFcXHVEQzcwLVxcdURDN0NcXHVEQzgwLVxcdURDODhcXHVEQzkwLVxcdURDOTldfFxcdUQ4MzVbXFx1REMwMC1cXHVEQzU0XFx1REM1Ni1cXHVEQzlDXFx1REM5RVxcdURDOUZcXHVEQ0EyXFx1RENBNVxcdURDQTZcXHVEQ0E5LVxcdURDQUNcXHVEQ0FFLVxcdURDQjlcXHVEQ0JCXFx1RENCRC1cXHVEQ0MzXFx1RENDNS1cXHVERDA1XFx1REQwNy1cXHVERDBBXFx1REQwRC1cXHVERDE0XFx1REQxNi1cXHVERDFDXFx1REQxRS1cXHVERDM5XFx1REQzQi1cXHVERDNFXFx1REQ0MC1cXHVERDQ0XFx1REQ0NlxcdURENEEtXFx1REQ1MFxcdURENTItXFx1REVBNVxcdURFQTgtXFx1REVDMFxcdURFQzItXFx1REVEQVxcdURFREMtXFx1REVGQVxcdURFRkMtXFx1REYxNFxcdURGMTYtXFx1REYzNFxcdURGMzYtXFx1REY0RVxcdURGNTAtXFx1REY2RVxcdURGNzAtXFx1REY4OFxcdURGOEEtXFx1REZBOFxcdURGQUEtXFx1REZDMlxcdURGQzQtXFx1REZDQl18XFx1RDgzOFtcXHVERDAwLVxcdUREMkNcXHVERDM3LVxcdUREM0RcXHVERDRFXFx1REVDMC1cXHVERUVCXXxcXHVEODNBW1xcdURDMDAtXFx1RENDNFxcdUREMDAtXFx1REQ0M1xcdURENEJdfFxcdUQ4M0JbXFx1REUwMC1cXHVERTAzXFx1REUwNS1cXHVERTFGXFx1REUyMVxcdURFMjJcXHVERTI0XFx1REUyN1xcdURFMjktXFx1REUzMlxcdURFMzQtXFx1REUzN1xcdURFMzlcXHVERTNCXFx1REU0MlxcdURFNDdcXHVERTQ5XFx1REU0QlxcdURFNEQtXFx1REU0RlxcdURFNTFcXHVERTUyXFx1REU1NFxcdURFNTdcXHVERTU5XFx1REU1QlxcdURFNURcXHVERTVGXFx1REU2MVxcdURFNjJcXHVERTY0XFx1REU2Ny1cXHVERTZBXFx1REU2Qy1cXHVERTcyXFx1REU3NC1cXHVERTc3XFx1REU3OS1cXHVERTdDXFx1REU3RVxcdURFODAtXFx1REU4OVxcdURFOEItXFx1REU5QlxcdURFQTEtXFx1REVBM1xcdURFQTUtXFx1REVBOVxcdURFQUItXFx1REVCQl18XFx1RDg2OVtcXHVEQzAwLVxcdURFRDZcXHVERjAwLVxcdURGRkZdfFxcdUQ4NkRbXFx1REMwMC1cXHVERjM0XFx1REY0MC1cXHVERkZGXXxcXHVEODZFW1xcdURDMDAtXFx1REMxRFxcdURDMjAtXFx1REZGRl18XFx1RDg3M1tcXHVEQzAwLVxcdURFQTFcXHVERUIwLVxcdURGRkZdfFxcdUQ4N0FbXFx1REMwMC1cXHVERkUwXXxcXHVEODdFW1xcdURDMDAtXFx1REUxRF0pKSdcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAnMCc6XHJcbiAgICAgICAgICByZWdleCArPSAnKFswLTldKSdcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAneic6XHJcbiAgICAgICAgY2FzZSAnWic6XHJcbiAgICAgICAgICByZWdleCArPSBJU19VTklDT0RFX1BST1BFUlRZX1NVUFBPUlRFRFxyXG4gICAgICAgICAgICA/ICcoWzAtOV18XFxcXHB7TH0pJ1xyXG4gICAgICAgICAgICA6ICcoWzAtOV18KD86W0EtWmEtelxceEFBXFx4QjVcXHhCQVxceEMwLVxceEQ2XFx4RDgtXFx4RjZcXHhGOC1cXHUwMkMxXFx1MDJDNi1cXHUwMkQxXFx1MDJFMC1cXHUwMkU0XFx1MDJFQ1xcdTAyRUVcXHUwMzcwLVxcdTAzNzRcXHUwMzc2XFx1MDM3N1xcdTAzN0EtXFx1MDM3RFxcdTAzN0ZcXHUwMzg2XFx1MDM4OC1cXHUwMzhBXFx1MDM4Q1xcdTAzOEUtXFx1MDNBMVxcdTAzQTMtXFx1MDNGNVxcdTAzRjctXFx1MDQ4MVxcdTA0OEEtXFx1MDUyRlxcdTA1MzEtXFx1MDU1NlxcdTA1NTlcXHUwNTYwLVxcdTA1ODhcXHUwNUQwLVxcdTA1RUFcXHUwNUVGLVxcdTA1RjJcXHUwNjIwLVxcdTA2NEFcXHUwNjZFXFx1MDY2RlxcdTA2NzEtXFx1MDZEM1xcdTA2RDVcXHUwNkU1XFx1MDZFNlxcdTA2RUVcXHUwNkVGXFx1MDZGQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTBcXHUwNzEyLVxcdTA3MkZcXHUwNzRELVxcdTA3QTVcXHUwN0IxXFx1MDdDQS1cXHUwN0VBXFx1MDdGNFxcdTA3RjVcXHUwN0ZBXFx1MDgwMC1cXHUwODE1XFx1MDgxQVxcdTA4MjRcXHUwODI4XFx1MDg0MC1cXHUwODU4XFx1MDg2MC1cXHUwODZBXFx1MDhBMC1cXHUwOEI0XFx1MDhCNi1cXHUwOEJEXFx1MDkwNC1cXHUwOTM5XFx1MDkzRFxcdTA5NTBcXHUwOTU4LVxcdTA5NjFcXHUwOTcxLVxcdTA5ODBcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJcXHUwOUI2LVxcdTA5QjlcXHUwOUJEXFx1MDlDRVxcdTA5RENcXHUwOUREXFx1MDlERi1cXHUwOUUxXFx1MDlGMFxcdTA5RjFcXHUwOUZDXFx1MEEwNS1cXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyXFx1MEEzM1xcdTBBMzVcXHUwQTM2XFx1MEEzOFxcdTBBMzlcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE3Mi1cXHUwQTc0XFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJEXFx1MEFEMFxcdTBBRTBcXHUwQUUxXFx1MEFGOVxcdTBCMDUtXFx1MEIwQ1xcdTBCMEZcXHUwQjEwXFx1MEIxMy1cXHUwQjI4XFx1MEIyQS1cXHUwQjMwXFx1MEIzMlxcdTBCMzNcXHUwQjM1LVxcdTBCMzlcXHUwQjNEXFx1MEI1Q1xcdTBCNURcXHUwQjVGLVxcdTBCNjFcXHUwQjcxXFx1MEI4M1xcdTBCODUtXFx1MEI4QVxcdTBCOEUtXFx1MEI5MFxcdTBCOTItXFx1MEI5NVxcdTBCOTlcXHUwQjlBXFx1MEI5Q1xcdTBCOUVcXHUwQjlGXFx1MEJBM1xcdTBCQTRcXHUwQkE4LVxcdTBCQUFcXHUwQkFFLVxcdTBCQjlcXHUwQkQwXFx1MEMwNS1cXHUwQzBDXFx1MEMwRS1cXHUwQzEwXFx1MEMxMi1cXHUwQzI4XFx1MEMyQS1cXHUwQzM5XFx1MEMzRFxcdTBDNTgtXFx1MEM1QVxcdTBDNjBcXHUwQzYxXFx1MEM4MFxcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkRcXHUwQ0RFXFx1MENFMFxcdTBDRTFcXHUwQ0YxXFx1MENGMlxcdTBEMDUtXFx1MEQwQ1xcdTBEMEUtXFx1MEQxMFxcdTBEMTItXFx1MEQzQVxcdTBEM0RcXHUwRDRFXFx1MEQ1NC1cXHUwRDU2XFx1MEQ1Ri1cXHUwRDYxXFx1MEQ3QS1cXHUwRDdGXFx1MEQ4NS1cXHUwRDk2XFx1MEQ5QS1cXHUwREIxXFx1MERCMy1cXHUwREJCXFx1MERCRFxcdTBEQzAtXFx1MERDNlxcdTBFMDEtXFx1MEUzMFxcdTBFMzJcXHUwRTMzXFx1MEU0MC1cXHUwRTQ2XFx1MEU4MVxcdTBFODJcXHUwRTg0XFx1MEU4Ni1cXHUwRThBXFx1MEU4Qy1cXHUwRUEzXFx1MEVBNVxcdTBFQTctXFx1MEVCMFxcdTBFQjJcXHUwRUIzXFx1MEVCRFxcdTBFQzAtXFx1MEVDNFxcdTBFQzZcXHUwRURDLVxcdTBFREZcXHUwRjAwXFx1MEY0MC1cXHUwRjQ3XFx1MEY0OS1cXHUwRjZDXFx1MEY4OC1cXHUwRjhDXFx1MTAwMC1cXHUxMDJBXFx1MTAzRlxcdTEwNTAtXFx1MTA1NVxcdTEwNUEtXFx1MTA1RFxcdTEwNjFcXHUxMDY1XFx1MTA2NlxcdTEwNkUtXFx1MTA3MFxcdTEwNzUtXFx1MTA4MVxcdTEwOEVcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEwRDAtXFx1MTBGQVxcdTEwRkMtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM4MC1cXHUxMzhGXFx1MTNBMC1cXHUxM0Y1XFx1MTNGOC1cXHUxM0ZEXFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTZGMS1cXHUxNkY4XFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzExXFx1MTcyMC1cXHUxNzMxXFx1MTc0MC1cXHUxNzUxXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc4MC1cXHUxN0IzXFx1MTdEN1xcdTE3RENcXHUxODIwLVxcdTE4NzhcXHUxODgwLVxcdTE4ODRcXHUxODg3LVxcdTE4QThcXHUxOEFBXFx1MThCMC1cXHUxOEY1XFx1MTkwMC1cXHUxOTFFXFx1MTk1MC1cXHUxOTZEXFx1MTk3MC1cXHUxOTc0XFx1MTk4MC1cXHUxOUFCXFx1MTlCMC1cXHUxOUM5XFx1MUEwMC1cXHUxQTE2XFx1MUEyMC1cXHUxQTU0XFx1MUFBN1xcdTFCMDUtXFx1MUIzM1xcdTFCNDUtXFx1MUI0QlxcdTFCODMtXFx1MUJBMFxcdTFCQUVcXHUxQkFGXFx1MUJCQS1cXHUxQkU1XFx1MUMwMC1cXHUxQzIzXFx1MUM0RC1cXHUxQzRGXFx1MUM1QS1cXHUxQzdEXFx1MUM4MC1cXHUxQzg4XFx1MUM5MC1cXHUxQ0JBXFx1MUNCRC1cXHUxQ0JGXFx1MUNFOS1cXHUxQ0VDXFx1MUNFRS1cXHUxQ0YzXFx1MUNGNVxcdTFDRjZcXHUxQ0ZBXFx1MUQwMC1cXHUxREJGXFx1MUUwMC1cXHUxRjE1XFx1MUYxOC1cXHUxRjFEXFx1MUYyMC1cXHUxRjQ1XFx1MUY0OC1cXHUxRjREXFx1MUY1MC1cXHUxRjU3XFx1MUY1OVxcdTFGNUJcXHUxRjVEXFx1MUY1Ri1cXHUxRjdEXFx1MUY4MC1cXHUxRkI0XFx1MUZCNi1cXHUxRkJDXFx1MUZCRVxcdTFGQzItXFx1MUZDNFxcdTFGQzYtXFx1MUZDQ1xcdTFGRDAtXFx1MUZEM1xcdTFGRDYtXFx1MUZEQlxcdTFGRTAtXFx1MUZFQ1xcdTFGRjItXFx1MUZGNFxcdTFGRjYtXFx1MUZGQ1xcdTIwNzFcXHUyMDdGXFx1MjA5MC1cXHUyMDlDXFx1MjEwMlxcdTIxMDdcXHUyMTBBLVxcdTIxMTNcXHUyMTE1XFx1MjExOS1cXHUyMTFEXFx1MjEyNFxcdTIxMjZcXHUyMTI4XFx1MjEyQS1cXHUyMTJEXFx1MjEyRi1cXHUyMTM5XFx1MjEzQy1cXHUyMTNGXFx1MjE0NS1cXHUyMTQ5XFx1MjE0RVxcdTIxODNcXHUyMTg0XFx1MkMwMC1cXHUyQzJFXFx1MkMzMC1cXHUyQzVFXFx1MkM2MC1cXHUyQ0U0XFx1MkNFQi1cXHUyQ0VFXFx1MkNGMlxcdTJDRjNcXHUyRDAwLVxcdTJEMjVcXHUyRDI3XFx1MkQyRFxcdTJEMzAtXFx1MkQ2N1xcdTJENkZcXHUyRDgwLVxcdTJEOTZcXHUyREEwLVxcdTJEQTZcXHUyREE4LVxcdTJEQUVcXHUyREIwLVxcdTJEQjZcXHUyREI4LVxcdTJEQkVcXHUyREMwLVxcdTJEQzZcXHUyREM4LVxcdTJEQ0VcXHUyREQwLVxcdTJERDZcXHUyREQ4LVxcdTJEREVcXHUyRTJGXFx1MzAwNVxcdTMwMDZcXHUzMDMxLVxcdTMwMzVcXHUzMDNCXFx1MzAzQ1xcdTMwNDEtXFx1MzA5NlxcdTMwOUQtXFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkMtXFx1MzBGRlxcdTMxMDUtXFx1MzEyRlxcdTMxMzEtXFx1MzE4RVxcdTMxQTAtXFx1MzFCQVxcdTMxRjAtXFx1MzFGRlxcdTM0MDAtXFx1NERCNVxcdTRFMDAtXFx1OUZFRlxcdUEwMDAtXFx1QTQ4Q1xcdUE0RDAtXFx1QTRGRFxcdUE1MDAtXFx1QTYwQ1xcdUE2MTAtXFx1QTYxRlxcdUE2MkFcXHVBNjJCXFx1QTY0MC1cXHVBNjZFXFx1QTY3Ri1cXHVBNjlEXFx1QTZBMC1cXHVBNkU1XFx1QTcxNy1cXHVBNzFGXFx1QTcyMi1cXHVBNzg4XFx1QTc4Qi1cXHVBN0JGXFx1QTdDMi1cXHVBN0M2XFx1QTdGNy1cXHVBODAxXFx1QTgwMy1cXHVBODA1XFx1QTgwNy1cXHVBODBBXFx1QTgwQy1cXHVBODIyXFx1QTg0MC1cXHVBODczXFx1QTg4Mi1cXHVBOEIzXFx1QThGMi1cXHVBOEY3XFx1QThGQlxcdUE4RkRcXHVBOEZFXFx1QTkwQS1cXHVBOTI1XFx1QTkzMC1cXHVBOTQ2XFx1QTk2MC1cXHVBOTdDXFx1QTk4NC1cXHVBOUIyXFx1QTlDRlxcdUE5RTAtXFx1QTlFNFxcdUE5RTYtXFx1QTlFRlxcdUE5RkEtXFx1QTlGRVxcdUFBMDAtXFx1QUEyOFxcdUFBNDAtXFx1QUE0MlxcdUFBNDQtXFx1QUE0QlxcdUFBNjAtXFx1QUE3NlxcdUFBN0FcXHVBQTdFLVxcdUFBQUZcXHVBQUIxXFx1QUFCNVxcdUFBQjZcXHVBQUI5LVxcdUFBQkRcXHVBQUMwXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFQVxcdUFBRjItXFx1QUFGNFxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCMzAtXFx1QUI1QVxcdUFCNUMtXFx1QUI2N1xcdUFCNzAtXFx1QUJFMlxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZCMURcXHVGQjFGLVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRFxcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGMjEtXFx1RkYzQVxcdUZGNDEtXFx1RkY1QVxcdUZGNjYtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQ118XFx1RDgwMFtcXHVEQzAwLVxcdURDMEJcXHVEQzBELVxcdURDMjZcXHVEQzI4LVxcdURDM0FcXHVEQzNDXFx1REMzRFxcdURDM0YtXFx1REM0RFxcdURDNTAtXFx1REM1RFxcdURDODAtXFx1RENGQVxcdURFODAtXFx1REU5Q1xcdURFQTAtXFx1REVEMFxcdURGMDAtXFx1REYxRlxcdURGMkQtXFx1REY0MFxcdURGNDItXFx1REY0OVxcdURGNTAtXFx1REY3NVxcdURGODAtXFx1REY5RFxcdURGQTAtXFx1REZDM1xcdURGQzgtXFx1REZDRl18XFx1RDgwMVtcXHVEQzAwLVxcdURDOURcXHVEQ0IwLVxcdURDRDNcXHVEQ0Q4LVxcdURDRkJcXHVERDAwLVxcdUREMjdcXHVERDMwLVxcdURENjNcXHVERTAwLVxcdURGMzZcXHVERjQwLVxcdURGNTVcXHVERjYwLVxcdURGNjddfFxcdUQ4MDJbXFx1REMwMC1cXHVEQzA1XFx1REMwOFxcdURDMEEtXFx1REMzNVxcdURDMzdcXHVEQzM4XFx1REMzQ1xcdURDM0YtXFx1REM1NVxcdURDNjAtXFx1REM3NlxcdURDODAtXFx1REM5RVxcdURDRTAtXFx1RENGMlxcdURDRjRcXHVEQ0Y1XFx1REQwMC1cXHVERDE1XFx1REQyMC1cXHVERDM5XFx1REQ4MC1cXHVEREI3XFx1RERCRVxcdUREQkZcXHVERTAwXFx1REUxMC1cXHVERTEzXFx1REUxNS1cXHVERTE3XFx1REUxOS1cXHVERTM1XFx1REU2MC1cXHVERTdDXFx1REU4MC1cXHVERTlDXFx1REVDMC1cXHVERUM3XFx1REVDOS1cXHVERUU0XFx1REYwMC1cXHVERjM1XFx1REY0MC1cXHVERjU1XFx1REY2MC1cXHVERjcyXFx1REY4MC1cXHVERjkxXXxcXHVEODAzW1xcdURDMDAtXFx1REM0OFxcdURDODAtXFx1RENCMlxcdURDQzAtXFx1RENGMlxcdUREMDAtXFx1REQyM1xcdURGMDAtXFx1REYxQ1xcdURGMjdcXHVERjMwLVxcdURGNDVcXHVERkUwLVxcdURGRjZdfFxcdUQ4MDRbXFx1REMwMy1cXHVEQzM3XFx1REM4My1cXHVEQ0FGXFx1RENEMC1cXHVEQ0U4XFx1REQwMy1cXHVERDI2XFx1REQ0NFxcdURENTAtXFx1REQ3MlxcdURENzZcXHVERDgzLVxcdUREQjJcXHVEREMxLVxcdUREQzRcXHVERERBXFx1REREQ1xcdURFMDAtXFx1REUxMVxcdURFMTMtXFx1REUyQlxcdURFODAtXFx1REU4NlxcdURFODhcXHVERThBLVxcdURFOERcXHVERThGLVxcdURFOURcXHVERTlGLVxcdURFQThcXHVERUIwLVxcdURFREVcXHVERjA1LVxcdURGMENcXHVERjBGXFx1REYxMFxcdURGMTMtXFx1REYyOFxcdURGMkEtXFx1REYzMFxcdURGMzJcXHVERjMzXFx1REYzNS1cXHVERjM5XFx1REYzRFxcdURGNTBcXHVERjVELVxcdURGNjFdfFxcdUQ4MDVbXFx1REMwMC1cXHVEQzM0XFx1REM0Ny1cXHVEQzRBXFx1REM1RlxcdURDODAtXFx1RENBRlxcdURDQzRcXHVEQ0M1XFx1RENDN1xcdUREODAtXFx1RERBRVxcdURERDgtXFx1REREQlxcdURFMDAtXFx1REUyRlxcdURFNDRcXHVERTgwLVxcdURFQUFcXHVERUI4XFx1REYwMC1cXHVERjFBXXxcXHVEODA2W1xcdURDMDAtXFx1REMyQlxcdURDQTAtXFx1RENERlxcdURDRkZcXHVEREEwLVxcdUREQTdcXHVEREFBLVxcdURERDBcXHVEREUxXFx1RERFM1xcdURFMDBcXHVERTBCLVxcdURFMzJcXHVERTNBXFx1REU1MFxcdURFNUMtXFx1REU4OVxcdURFOURcXHVERUMwLVxcdURFRjhdfFxcdUQ4MDdbXFx1REMwMC1cXHVEQzA4XFx1REMwQS1cXHVEQzJFXFx1REM0MFxcdURDNzItXFx1REM4RlxcdUREMDAtXFx1REQwNlxcdUREMDhcXHVERDA5XFx1REQwQi1cXHVERDMwXFx1REQ0NlxcdURENjAtXFx1REQ2NVxcdURENjdcXHVERDY4XFx1REQ2QS1cXHVERDg5XFx1REQ5OFxcdURFRTAtXFx1REVGMl18XFx1RDgwOFtcXHVEQzAwLVxcdURGOTldfFxcdUQ4MDlbXFx1REM4MC1cXHVERDQzXXxbXFx1RDgwQ1xcdUQ4MUMtXFx1RDgyMFxcdUQ4NDAtXFx1RDg2OFxcdUQ4NkEtXFx1RDg2Q1xcdUQ4NkYtXFx1RDg3MlxcdUQ4NzQtXFx1RDg3OV1bXFx1REMwMC1cXHVERkZGXXxcXHVEODBEW1xcdURDMDAtXFx1REMyRV18XFx1RDgxMVtcXHVEQzAwLVxcdURFNDZdfFxcdUQ4MUFbXFx1REMwMC1cXHVERTM4XFx1REU0MC1cXHVERTVFXFx1REVEMC1cXHVERUVEXFx1REYwMC1cXHVERjJGXFx1REY0MC1cXHVERjQzXFx1REY2My1cXHVERjc3XFx1REY3RC1cXHVERjhGXXxcXHVEODFCW1xcdURFNDAtXFx1REU3RlxcdURGMDAtXFx1REY0QVxcdURGNTBcXHVERjkzLVxcdURGOUZcXHVERkUwXFx1REZFMVxcdURGRTNdfFxcdUQ4MjFbXFx1REMwMC1cXHVERkY3XXxcXHVEODIyW1xcdURDMDAtXFx1REVGMl18XFx1RDgyQ1tcXHVEQzAwLVxcdUREMUVcXHVERDUwLVxcdURENTJcXHVERDY0LVxcdURENjdcXHVERDcwLVxcdURFRkJdfFxcdUQ4MkZbXFx1REMwMC1cXHVEQzZBXFx1REM3MC1cXHVEQzdDXFx1REM4MC1cXHVEQzg4XFx1REM5MC1cXHVEQzk5XXxcXHVEODM1W1xcdURDMDAtXFx1REM1NFxcdURDNTYtXFx1REM5Q1xcdURDOUVcXHVEQzlGXFx1RENBMlxcdURDQTVcXHVEQ0E2XFx1RENBOS1cXHVEQ0FDXFx1RENBRS1cXHVEQ0I5XFx1RENCQlxcdURDQkQtXFx1RENDM1xcdURDQzUtXFx1REQwNVxcdUREMDctXFx1REQwQVxcdUREMEQtXFx1REQxNFxcdUREMTYtXFx1REQxQ1xcdUREMUUtXFx1REQzOVxcdUREM0ItXFx1REQzRVxcdURENDAtXFx1REQ0NFxcdURENDZcXHVERDRBLVxcdURENTBcXHVERDUyLVxcdURFQTVcXHVERUE4LVxcdURFQzBcXHVERUMyLVxcdURFREFcXHVERURDLVxcdURFRkFcXHVERUZDLVxcdURGMTRcXHVERjE2LVxcdURGMzRcXHVERjM2LVxcdURGNEVcXHVERjUwLVxcdURGNkVcXHVERjcwLVxcdURGODhcXHVERjhBLVxcdURGQThcXHVERkFBLVxcdURGQzJcXHVERkM0LVxcdURGQ0JdfFxcdUQ4MzhbXFx1REQwMC1cXHVERDJDXFx1REQzNy1cXHVERDNEXFx1REQ0RVxcdURFQzAtXFx1REVFQl18XFx1RDgzQVtcXHVEQzAwLVxcdURDQzRcXHVERDAwLVxcdURENDNcXHVERDRCXXxcXHVEODNCW1xcdURFMDAtXFx1REUwM1xcdURFMDUtXFx1REUxRlxcdURFMjFcXHVERTIyXFx1REUyNFxcdURFMjdcXHVERTI5LVxcdURFMzJcXHVERTM0LVxcdURFMzdcXHVERTM5XFx1REUzQlxcdURFNDJcXHVERTQ3XFx1REU0OVxcdURFNEJcXHVERTRELVxcdURFNEZcXHVERTUxXFx1REU1MlxcdURFNTRcXHVERTU3XFx1REU1OVxcdURFNUJcXHVERTVEXFx1REU1RlxcdURFNjFcXHVERTYyXFx1REU2NFxcdURFNjctXFx1REU2QVxcdURFNkMtXFx1REU3MlxcdURFNzQtXFx1REU3N1xcdURFNzktXFx1REU3Q1xcdURFN0VcXHVERTgwLVxcdURFODlcXHVERThCLVxcdURFOUJcXHVERUExLVxcdURFQTNcXHVERUE1LVxcdURFQTlcXHVERUFCLVxcdURFQkJdfFxcdUQ4NjlbXFx1REMwMC1cXHVERUQ2XFx1REYwMC1cXHVERkZGXXxcXHVEODZEW1xcdURDMDAtXFx1REYzNFxcdURGNDAtXFx1REZGRl18XFx1RDg2RVtcXHVEQzAwLVxcdURDMURcXHVEQzIwLVxcdURGRkZdfFxcdUQ4NzNbXFx1REMwMC1cXHVERUExXFx1REVCMC1cXHVERkZGXXxcXHVEODdBW1xcdURDMDAtXFx1REZFMF18XFx1RDg3RVtcXHVEQzAwLVxcdURFMURdKSknXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgJ1UnOlxyXG4gICAgICAgICAgcmVnZXggKz0gSVNfVU5JQ09ERV9QUk9QRVJUWV9TVVBQT1JURURcclxuICAgICAgICAgICAgPyAnKChbMC05XSl8KFxcXFxzKXwoWy4sLyMhJCVeJio7Ont9PS1fYH4oKV0pfChcXFxccHtMfSkpJ1xyXG4gICAgICAgICAgICA6ICcoKFswLTldKXwoXFxcXHMpfChbLiwvIyEkJV4mKjs6e309LV9gfigpXSl8KD86W0EtWmEtelxceEFBXFx4QjVcXHhCQVxceEMwLVxceEQ2XFx4RDgtXFx4RjZcXHhGOC1cXHUwMkMxXFx1MDJDNi1cXHUwMkQxXFx1MDJFMC1cXHUwMkU0XFx1MDJFQ1xcdTAyRUVcXHUwMzcwLVxcdTAzNzRcXHUwMzc2XFx1MDM3N1xcdTAzN0EtXFx1MDM3RFxcdTAzN0ZcXHUwMzg2XFx1MDM4OC1cXHUwMzhBXFx1MDM4Q1xcdTAzOEUtXFx1MDNBMVxcdTAzQTMtXFx1MDNGNVxcdTAzRjctXFx1MDQ4MVxcdTA0OEEtXFx1MDUyRlxcdTA1MzEtXFx1MDU1NlxcdTA1NTlcXHUwNTYwLVxcdTA1ODhcXHUwNUQwLVxcdTA1RUFcXHUwNUVGLVxcdTA1RjJcXHUwNjIwLVxcdTA2NEFcXHUwNjZFXFx1MDY2RlxcdTA2NzEtXFx1MDZEM1xcdTA2RDVcXHUwNkU1XFx1MDZFNlxcdTA2RUVcXHUwNkVGXFx1MDZGQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTBcXHUwNzEyLVxcdTA3MkZcXHUwNzRELVxcdTA3QTVcXHUwN0IxXFx1MDdDQS1cXHUwN0VBXFx1MDdGNFxcdTA3RjVcXHUwN0ZBXFx1MDgwMC1cXHUwODE1XFx1MDgxQVxcdTA4MjRcXHUwODI4XFx1MDg0MC1cXHUwODU4XFx1MDg2MC1cXHUwODZBXFx1MDhBMC1cXHUwOEI0XFx1MDhCNi1cXHUwOEJEXFx1MDkwNC1cXHUwOTM5XFx1MDkzRFxcdTA5NTBcXHUwOTU4LVxcdTA5NjFcXHUwOTcxLVxcdTA5ODBcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJcXHUwOUI2LVxcdTA5QjlcXHUwOUJEXFx1MDlDRVxcdTA5RENcXHUwOUREXFx1MDlERi1cXHUwOUUxXFx1MDlGMFxcdTA5RjFcXHUwOUZDXFx1MEEwNS1cXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyXFx1MEEzM1xcdTBBMzVcXHUwQTM2XFx1MEEzOFxcdTBBMzlcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE3Mi1cXHUwQTc0XFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJEXFx1MEFEMFxcdTBBRTBcXHUwQUUxXFx1MEFGOVxcdTBCMDUtXFx1MEIwQ1xcdTBCMEZcXHUwQjEwXFx1MEIxMy1cXHUwQjI4XFx1MEIyQS1cXHUwQjMwXFx1MEIzMlxcdTBCMzNcXHUwQjM1LVxcdTBCMzlcXHUwQjNEXFx1MEI1Q1xcdTBCNURcXHUwQjVGLVxcdTBCNjFcXHUwQjcxXFx1MEI4M1xcdTBCODUtXFx1MEI4QVxcdTBCOEUtXFx1MEI5MFxcdTBCOTItXFx1MEI5NVxcdTBCOTlcXHUwQjlBXFx1MEI5Q1xcdTBCOUVcXHUwQjlGXFx1MEJBM1xcdTBCQTRcXHUwQkE4LVxcdTBCQUFcXHUwQkFFLVxcdTBCQjlcXHUwQkQwXFx1MEMwNS1cXHUwQzBDXFx1MEMwRS1cXHUwQzEwXFx1MEMxMi1cXHUwQzI4XFx1MEMyQS1cXHUwQzM5XFx1MEMzRFxcdTBDNTgtXFx1MEM1QVxcdTBDNjBcXHUwQzYxXFx1MEM4MFxcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkRcXHUwQ0RFXFx1MENFMFxcdTBDRTFcXHUwQ0YxXFx1MENGMlxcdTBEMDUtXFx1MEQwQ1xcdTBEMEUtXFx1MEQxMFxcdTBEMTItXFx1MEQzQVxcdTBEM0RcXHUwRDRFXFx1MEQ1NC1cXHUwRDU2XFx1MEQ1Ri1cXHUwRDYxXFx1MEQ3QS1cXHUwRDdGXFx1MEQ4NS1cXHUwRDk2XFx1MEQ5QS1cXHUwREIxXFx1MERCMy1cXHUwREJCXFx1MERCRFxcdTBEQzAtXFx1MERDNlxcdTBFMDEtXFx1MEUzMFxcdTBFMzJcXHUwRTMzXFx1MEU0MC1cXHUwRTQ2XFx1MEU4MVxcdTBFODJcXHUwRTg0XFx1MEU4Ni1cXHUwRThBXFx1MEU4Qy1cXHUwRUEzXFx1MEVBNVxcdTBFQTctXFx1MEVCMFxcdTBFQjJcXHUwRUIzXFx1MEVCRFxcdTBFQzAtXFx1MEVDNFxcdTBFQzZcXHUwRURDLVxcdTBFREZcXHUwRjAwXFx1MEY0MC1cXHUwRjQ3XFx1MEY0OS1cXHUwRjZDXFx1MEY4OC1cXHUwRjhDXFx1MTAwMC1cXHUxMDJBXFx1MTAzRlxcdTEwNTAtXFx1MTA1NVxcdTEwNUEtXFx1MTA1RFxcdTEwNjFcXHUxMDY1XFx1MTA2NlxcdTEwNkUtXFx1MTA3MFxcdTEwNzUtXFx1MTA4MVxcdTEwOEVcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEwRDAtXFx1MTBGQVxcdTEwRkMtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM4MC1cXHUxMzhGXFx1MTNBMC1cXHUxM0Y1XFx1MTNGOC1cXHUxM0ZEXFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTZGMS1cXHUxNkY4XFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzExXFx1MTcyMC1cXHUxNzMxXFx1MTc0MC1cXHUxNzUxXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc4MC1cXHUxN0IzXFx1MTdEN1xcdTE3RENcXHUxODIwLVxcdTE4NzhcXHUxODgwLVxcdTE4ODRcXHUxODg3LVxcdTE4QThcXHUxOEFBXFx1MThCMC1cXHUxOEY1XFx1MTkwMC1cXHUxOTFFXFx1MTk1MC1cXHUxOTZEXFx1MTk3MC1cXHUxOTc0XFx1MTk4MC1cXHUxOUFCXFx1MTlCMC1cXHUxOUM5XFx1MUEwMC1cXHUxQTE2XFx1MUEyMC1cXHUxQTU0XFx1MUFBN1xcdTFCMDUtXFx1MUIzM1xcdTFCNDUtXFx1MUI0QlxcdTFCODMtXFx1MUJBMFxcdTFCQUVcXHUxQkFGXFx1MUJCQS1cXHUxQkU1XFx1MUMwMC1cXHUxQzIzXFx1MUM0RC1cXHUxQzRGXFx1MUM1QS1cXHUxQzdEXFx1MUM4MC1cXHUxQzg4XFx1MUM5MC1cXHUxQ0JBXFx1MUNCRC1cXHUxQ0JGXFx1MUNFOS1cXHUxQ0VDXFx1MUNFRS1cXHUxQ0YzXFx1MUNGNVxcdTFDRjZcXHUxQ0ZBXFx1MUQwMC1cXHUxREJGXFx1MUUwMC1cXHUxRjE1XFx1MUYxOC1cXHUxRjFEXFx1MUYyMC1cXHUxRjQ1XFx1MUY0OC1cXHUxRjREXFx1MUY1MC1cXHUxRjU3XFx1MUY1OVxcdTFGNUJcXHUxRjVEXFx1MUY1Ri1cXHUxRjdEXFx1MUY4MC1cXHUxRkI0XFx1MUZCNi1cXHUxRkJDXFx1MUZCRVxcdTFGQzItXFx1MUZDNFxcdTFGQzYtXFx1MUZDQ1xcdTFGRDAtXFx1MUZEM1xcdTFGRDYtXFx1MUZEQlxcdTFGRTAtXFx1MUZFQ1xcdTFGRjItXFx1MUZGNFxcdTFGRjYtXFx1MUZGQ1xcdTIwNzFcXHUyMDdGXFx1MjA5MC1cXHUyMDlDXFx1MjEwMlxcdTIxMDdcXHUyMTBBLVxcdTIxMTNcXHUyMTE1XFx1MjExOS1cXHUyMTFEXFx1MjEyNFxcdTIxMjZcXHUyMTI4XFx1MjEyQS1cXHUyMTJEXFx1MjEyRi1cXHUyMTM5XFx1MjEzQy1cXHUyMTNGXFx1MjE0NS1cXHUyMTQ5XFx1MjE0RVxcdTIxODNcXHUyMTg0XFx1MkMwMC1cXHUyQzJFXFx1MkMzMC1cXHUyQzVFXFx1MkM2MC1cXHUyQ0U0XFx1MkNFQi1cXHUyQ0VFXFx1MkNGMlxcdTJDRjNcXHUyRDAwLVxcdTJEMjVcXHUyRDI3XFx1MkQyRFxcdTJEMzAtXFx1MkQ2N1xcdTJENkZcXHUyRDgwLVxcdTJEOTZcXHUyREEwLVxcdTJEQTZcXHUyREE4LVxcdTJEQUVcXHUyREIwLVxcdTJEQjZcXHUyREI4LVxcdTJEQkVcXHUyREMwLVxcdTJEQzZcXHUyREM4LVxcdTJEQ0VcXHUyREQwLVxcdTJERDZcXHUyREQ4LVxcdTJEREVcXHUyRTJGXFx1MzAwNVxcdTMwMDZcXHUzMDMxLVxcdTMwMzVcXHUzMDNCXFx1MzAzQ1xcdTMwNDEtXFx1MzA5NlxcdTMwOUQtXFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkMtXFx1MzBGRlxcdTMxMDUtXFx1MzEyRlxcdTMxMzEtXFx1MzE4RVxcdTMxQTAtXFx1MzFCQVxcdTMxRjAtXFx1MzFGRlxcdTM0MDAtXFx1NERCNVxcdTRFMDAtXFx1OUZFRlxcdUEwMDAtXFx1QTQ4Q1xcdUE0RDAtXFx1QTRGRFxcdUE1MDAtXFx1QTYwQ1xcdUE2MTAtXFx1QTYxRlxcdUE2MkFcXHVBNjJCXFx1QTY0MC1cXHVBNjZFXFx1QTY3Ri1cXHVBNjlEXFx1QTZBMC1cXHVBNkU1XFx1QTcxNy1cXHVBNzFGXFx1QTcyMi1cXHVBNzg4XFx1QTc4Qi1cXHVBN0JGXFx1QTdDMi1cXHVBN0M2XFx1QTdGNy1cXHVBODAxXFx1QTgwMy1cXHVBODA1XFx1QTgwNy1cXHVBODBBXFx1QTgwQy1cXHVBODIyXFx1QTg0MC1cXHVBODczXFx1QTg4Mi1cXHVBOEIzXFx1QThGMi1cXHVBOEY3XFx1QThGQlxcdUE4RkRcXHVBOEZFXFx1QTkwQS1cXHVBOTI1XFx1QTkzMC1cXHVBOTQ2XFx1QTk2MC1cXHVBOTdDXFx1QTk4NC1cXHVBOUIyXFx1QTlDRlxcdUE5RTAtXFx1QTlFNFxcdUE5RTYtXFx1QTlFRlxcdUE5RkEtXFx1QTlGRVxcdUFBMDAtXFx1QUEyOFxcdUFBNDAtXFx1QUE0MlxcdUFBNDQtXFx1QUE0QlxcdUFBNjAtXFx1QUE3NlxcdUFBN0FcXHVBQTdFLVxcdUFBQUZcXHVBQUIxXFx1QUFCNVxcdUFBQjZcXHVBQUI5LVxcdUFBQkRcXHVBQUMwXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFQVxcdUFBRjItXFx1QUFGNFxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCMzAtXFx1QUI1QVxcdUFCNUMtXFx1QUI2N1xcdUFCNzAtXFx1QUJFMlxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZCMURcXHVGQjFGLVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRFxcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGMjEtXFx1RkYzQVxcdUZGNDEtXFx1RkY1QVxcdUZGNjYtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQ118XFx1RDgwMFtcXHVEQzAwLVxcdURDMEJcXHVEQzBELVxcdURDMjZcXHVEQzI4LVxcdURDM0FcXHVEQzNDXFx1REMzRFxcdURDM0YtXFx1REM0RFxcdURDNTAtXFx1REM1RFxcdURDODAtXFx1RENGQVxcdURFODAtXFx1REU5Q1xcdURFQTAtXFx1REVEMFxcdURGMDAtXFx1REYxRlxcdURGMkQtXFx1REY0MFxcdURGNDItXFx1REY0OVxcdURGNTAtXFx1REY3NVxcdURGODAtXFx1REY5RFxcdURGQTAtXFx1REZDM1xcdURGQzgtXFx1REZDRl18XFx1RDgwMVtcXHVEQzAwLVxcdURDOURcXHVEQ0IwLVxcdURDRDNcXHVEQ0Q4LVxcdURDRkJcXHVERDAwLVxcdUREMjdcXHVERDMwLVxcdURENjNcXHVERTAwLVxcdURGMzZcXHVERjQwLVxcdURGNTVcXHVERjYwLVxcdURGNjddfFxcdUQ4MDJbXFx1REMwMC1cXHVEQzA1XFx1REMwOFxcdURDMEEtXFx1REMzNVxcdURDMzdcXHVEQzM4XFx1REMzQ1xcdURDM0YtXFx1REM1NVxcdURDNjAtXFx1REM3NlxcdURDODAtXFx1REM5RVxcdURDRTAtXFx1RENGMlxcdURDRjRcXHVEQ0Y1XFx1REQwMC1cXHVERDE1XFx1REQyMC1cXHVERDM5XFx1REQ4MC1cXHVEREI3XFx1RERCRVxcdUREQkZcXHVERTAwXFx1REUxMC1cXHVERTEzXFx1REUxNS1cXHVERTE3XFx1REUxOS1cXHVERTM1XFx1REU2MC1cXHVERTdDXFx1REU4MC1cXHVERTlDXFx1REVDMC1cXHVERUM3XFx1REVDOS1cXHVERUU0XFx1REYwMC1cXHVERjM1XFx1REY0MC1cXHVERjU1XFx1REY2MC1cXHVERjcyXFx1REY4MC1cXHVERjkxXXxcXHVEODAzW1xcdURDMDAtXFx1REM0OFxcdURDODAtXFx1RENCMlxcdURDQzAtXFx1RENGMlxcdUREMDAtXFx1REQyM1xcdURGMDAtXFx1REYxQ1xcdURGMjdcXHVERjMwLVxcdURGNDVcXHVERkUwLVxcdURGRjZdfFxcdUQ4MDRbXFx1REMwMy1cXHVEQzM3XFx1REM4My1cXHVEQ0FGXFx1RENEMC1cXHVEQ0U4XFx1REQwMy1cXHVERDI2XFx1REQ0NFxcdURENTAtXFx1REQ3MlxcdURENzZcXHVERDgzLVxcdUREQjJcXHVEREMxLVxcdUREQzRcXHVERERBXFx1REREQ1xcdURFMDAtXFx1REUxMVxcdURFMTMtXFx1REUyQlxcdURFODAtXFx1REU4NlxcdURFODhcXHVERThBLVxcdURFOERcXHVERThGLVxcdURFOURcXHVERTlGLVxcdURFQThcXHVERUIwLVxcdURFREVcXHVERjA1LVxcdURGMENcXHVERjBGXFx1REYxMFxcdURGMTMtXFx1REYyOFxcdURGMkEtXFx1REYzMFxcdURGMzJcXHVERjMzXFx1REYzNS1cXHVERjM5XFx1REYzRFxcdURGNTBcXHVERjVELVxcdURGNjFdfFxcdUQ4MDVbXFx1REMwMC1cXHVEQzM0XFx1REM0Ny1cXHVEQzRBXFx1REM1RlxcdURDODAtXFx1RENBRlxcdURDQzRcXHVEQ0M1XFx1RENDN1xcdUREODAtXFx1RERBRVxcdURERDgtXFx1REREQlxcdURFMDAtXFx1REUyRlxcdURFNDRcXHVERTgwLVxcdURFQUFcXHVERUI4XFx1REYwMC1cXHVERjFBXXxcXHVEODA2W1xcdURDMDAtXFx1REMyQlxcdURDQTAtXFx1RENERlxcdURDRkZcXHVEREEwLVxcdUREQTdcXHVEREFBLVxcdURERDBcXHVEREUxXFx1RERFM1xcdURFMDBcXHVERTBCLVxcdURFMzJcXHVERTNBXFx1REU1MFxcdURFNUMtXFx1REU4OVxcdURFOURcXHVERUMwLVxcdURFRjhdfFxcdUQ4MDdbXFx1REMwMC1cXHVEQzA4XFx1REMwQS1cXHVEQzJFXFx1REM0MFxcdURDNzItXFx1REM4RlxcdUREMDAtXFx1REQwNlxcdUREMDhcXHVERDA5XFx1REQwQi1cXHVERDMwXFx1REQ0NlxcdURENjAtXFx1REQ2NVxcdURENjdcXHVERDY4XFx1REQ2QS1cXHVERDg5XFx1REQ5OFxcdURFRTAtXFx1REVGMl18XFx1RDgwOFtcXHVEQzAwLVxcdURGOTldfFxcdUQ4MDlbXFx1REM4MC1cXHVERDQzXXxbXFx1RDgwQ1xcdUQ4MUMtXFx1RDgyMFxcdUQ4NDAtXFx1RDg2OFxcdUQ4NkEtXFx1RDg2Q1xcdUQ4NkYtXFx1RDg3MlxcdUQ4NzQtXFx1RDg3OV1bXFx1REMwMC1cXHVERkZGXXxcXHVEODBEW1xcdURDMDAtXFx1REMyRV18XFx1RDgxMVtcXHVEQzAwLVxcdURFNDZdfFxcdUQ4MUFbXFx1REMwMC1cXHVERTM4XFx1REU0MC1cXHVERTVFXFx1REVEMC1cXHVERUVEXFx1REYwMC1cXHVERjJGXFx1REY0MC1cXHVERjQzXFx1REY2My1cXHVERjc3XFx1REY3RC1cXHVERjhGXXxcXHVEODFCW1xcdURFNDAtXFx1REU3RlxcdURGMDAtXFx1REY0QVxcdURGNTBcXHVERjkzLVxcdURGOUZcXHVERkUwXFx1REZFMVxcdURGRTNdfFxcdUQ4MjFbXFx1REMwMC1cXHVERkY3XXxcXHVEODIyW1xcdURDMDAtXFx1REVGMl18XFx1RDgyQ1tcXHVEQzAwLVxcdUREMUVcXHVERDUwLVxcdURENTJcXHVERDY0LVxcdURENjdcXHVERDcwLVxcdURFRkJdfFxcdUQ4MkZbXFx1REMwMC1cXHVEQzZBXFx1REM3MC1cXHVEQzdDXFx1REM4MC1cXHVEQzg4XFx1REM5MC1cXHVEQzk5XXxcXHVEODM1W1xcdURDMDAtXFx1REM1NFxcdURDNTYtXFx1REM5Q1xcdURDOUVcXHVEQzlGXFx1RENBMlxcdURDQTVcXHVEQ0E2XFx1RENBOS1cXHVEQ0FDXFx1RENBRS1cXHVEQ0I5XFx1RENCQlxcdURDQkQtXFx1RENDM1xcdURDQzUtXFx1REQwNVxcdUREMDctXFx1REQwQVxcdUREMEQtXFx1REQxNFxcdUREMTYtXFx1REQxQ1xcdUREMUUtXFx1REQzOVxcdUREM0ItXFx1REQzRVxcdURENDAtXFx1REQ0NFxcdURENDZcXHVERDRBLVxcdURENTBcXHVERDUyLVxcdURFQTVcXHVERUE4LVxcdURFQzBcXHVERUMyLVxcdURFREFcXHVERURDLVxcdURFRkFcXHVERUZDLVxcdURGMTRcXHVERjE2LVxcdURGMzRcXHVERjM2LVxcdURGNEVcXHVERjUwLVxcdURGNkVcXHVERjcwLVxcdURGODhcXHVERjhBLVxcdURGQThcXHVERkFBLVxcdURGQzJcXHVERkM0LVxcdURGQ0JdfFxcdUQ4MzhbXFx1REQwMC1cXHVERDJDXFx1REQzNy1cXHVERDNEXFx1REQ0RVxcdURFQzAtXFx1REVFQl18XFx1RDgzQVtcXHVEQzAwLVxcdURDQzRcXHVERDAwLVxcdURENDNcXHVERDRCXXxcXHVEODNCW1xcdURFMDAtXFx1REUwM1xcdURFMDUtXFx1REUxRlxcdURFMjFcXHVERTIyXFx1REUyNFxcdURFMjdcXHVERTI5LVxcdURFMzJcXHVERTM0LVxcdURFMzdcXHVERTM5XFx1REUzQlxcdURFNDJcXHVERTQ3XFx1REU0OVxcdURFNEJcXHVERTRELVxcdURFNEZcXHVERTUxXFx1REU1MlxcdURFNTRcXHVERTU3XFx1REU1OVxcdURFNUJcXHVERTVEXFx1REU1RlxcdURFNjFcXHVERTYyXFx1REU2NFxcdURFNjctXFx1REU2QVxcdURFNkMtXFx1REU3MlxcdURFNzQtXFx1REU3N1xcdURFNzktXFx1REU3Q1xcdURFN0VcXHVERTgwLVxcdURFODlcXHVERThCLVxcdURFOUJcXHVERUExLVxcdURFQTNcXHVERUE1LVxcdURFQTlcXHVERUFCLVxcdURFQkJdfFxcdUQ4NjlbXFx1REMwMC1cXHVERUQ2XFx1REYwMC1cXHVERkZGXXxcXHVEODZEW1xcdURDMDAtXFx1REYzNFxcdURGNDAtXFx1REZGRl18XFx1RDg2RVtcXHVEQzAwLVxcdURDMURcXHVEQzIwLVxcdURGRkZdfFxcdUQ4NzNbXFx1REMwMC1cXHVERUExXFx1REVCMC1cXHVERkZGXXxcXHVEODdBW1xcdURDMDAtXFx1REZFMF18XFx1RDg3RVtcXHVEQzAwLVxcdURFMURdKSknXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICByZWdleCArPSBjLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJylcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgZ2VuZXJhdGVQYXR0ZXJuRnJvbU1hc2suX19DQUNIRV9fW2NhY2hlS2V5XSA9IHJlZ2V4XHJcbiAgfVxyXG5cclxuICByZXR1cm4gZ2VuZXJhdGVQYXR0ZXJuRnJvbU1hc2suX19DQUNIRV9fW2NhY2hlS2V5XVxyXG59XHJcblxyXG4vKipcclxuICogVW5tYXNrIHRoZSBnaXZlbiB2YWx1ZVxyXG4gKlxyXG4gKiBAcGFyYW0ge1N0cmluZ30gbWFza2VkVmFsdWUgbWFza2VkIHN0cmluZ1xyXG4gKiBAcGFyYW0ge1N0cmluZ30gbWFzayAgdGhlIHVzZWQgbWFzayB0byBwcm9kdWNlIHRoZSBtYXNrZWQgc3RyaW5nXHJcbiAqL1xyXG5jb25zdCB1bm1hc2sgPSAobWFza2VkVmFsdWUsIG1hc2spID0+IHtcclxuICBpZiAodHlwZW9mIHVubWFzay5fX0NBQ0hFX18gPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICB1bm1hc2suX19DQUNIRV9fID0ge31cclxuICB9XHJcblxyXG4gIGNvbnN0IGNhY2hlS2V5ID0gYCR7bWFza2VkVmFsdWV9LSR7bWFza31gXHJcblxyXG4gIGlmICghdW5tYXNrLl9fQ0FDSEVfX1tjYWNoZUtleV0pIHtcclxuICAgIGNvbnN0IG1hc2tBc0FycmF5ID0gbWFzay5zcGxpdCgnJylcclxuICAgIGNvbnN0IG1hc2tlZFZhbHVlQXNBcnJheSA9IG1hc2tlZFZhbHVlLnNwbGl0KCcnKVxyXG5cclxuICAgIGxldCB1bm1hc2tlZCA9ICcnXHJcblxyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG1hc2tlZFZhbHVlQXNBcnJheS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgY29uc3QgZWwgPSBtYXNrZWRWYWx1ZUFzQXJyYXlbaW5kZXhdXHJcbiAgICAgIGNvbnN0IG1hc2sgPSBtYXNrQXNBcnJheVtpbmRleF1cclxuICAgICAgY29uc3QgZWxIYXNNYXNrID0gU1VQUE9SVEVEX01BU0tTLmluZGV4T2YobWFzaykgPiAtMVxyXG4gICAgICBpZiAoZWxIYXNNYXNrKSB7XHJcbiAgICAgICAgY29uc3QgcGF0dGVybiA9IG5ldyBSZWdFeHAoXHJcbiAgICAgICAgICBnZW5lcmF0ZVBhdHRlcm5Gcm9tTWFzayhtYXNrKSxcclxuICAgICAgICAgIElTX1VOSUNPREVfUFJPUEVSVFlfU1VQUE9SVEVEID8gJ3UnIDogJydcclxuICAgICAgICApXHJcbiAgICAgICAgaWYgKHBhdHRlcm4udGVzdChlbCkpIHVubWFza2VkICs9IGVsXHJcbiAgICAgICAgZWxzZSBicmVha1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdW5tYXNrLl9fQ0FDSEVfX1tjYWNoZUtleV0gPSB1bm1hc2tlZC50b0xvY2FsZUxvd2VyQ2FzZSgpXHJcbiAgfVxyXG5cclxuICByZXR1cm4gdW5tYXNrLl9fQ0FDSEVfX1tjYWNoZUtleV1cclxufVxyXG5cclxuLyoqXHJcbiAqIEdpdmVuIHRoZSBtYXNrZWQgc3RyaW5nICwgZmluZCB0aGUgbmV4dCBjYXJldCBwb3NpdGlvbiBkZXBlbmRpbmcgb25cclxuICogd2hhdCBpcyBtaXNzaW5nIHRvIGNvbXBsZXRlIHRoZSBtYXNrXHJcbiAqXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBtYXNrZWRWYWx1ZSBtYXNrZWQgc3RyaW5nXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBtYXNrICB0aGUgdXNlZCBtYXNrIHRvIHByb2R1Y2UgdGhlIG1hc2tlZCBzdHJpbmdcclxuICovXHJcbmNvbnN0IGZpbmRDYXJldFBvc2l0aW9uID0gKG1hc2tlZFZhbHVlLCBtYXNrKSA9PiB7XHJcbiAgaWYgKHR5cGVvZiBmaW5kQ2FyZXRQb3NpdGlvbi5fX0NBQ0hFX18gPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICBmaW5kQ2FyZXRQb3NpdGlvbi5fX0NBQ0hFX18gPSB7fVxyXG4gIH1cclxuXHJcbiAgY29uc3QgY2FjaGVLZXkgPSBgJHttYXNrZWRWYWx1ZX0tJHttYXNrfWBcclxuICBpZiAoIWZpbmRDYXJldFBvc2l0aW9uLl9fQ0FDSEVfX1tjYWNoZUtleV0pIHtcclxuICAgIGNvbnN0IG1hc2tBc0FycmF5ID0gbWFzay5zcGxpdCgnJylcclxuICAgIGxldCBtYXNrZWRWYWx1ZUFzQXJyYXkgPSBtYXNrZWRWYWx1ZS5zcGxpdCgnJylcclxuICAgIGlmIChtYXNrZWRWYWx1ZUFzQXJyYXkubGVuZ3RoIDwgbWFza0FzQXJyYXkubGVuZ3RoKSB7XHJcbiAgICAgIG1hc2tlZFZhbHVlQXNBcnJheSA9IG1hc2tlZFZhbHVlQXNBcnJheS5jb25jYXQoXHJcbiAgICAgICAgbmV3IEFycmF5KG1hc2tBc0FycmF5Lmxlbmd0aCAtIG1hc2tlZFZhbHVlQXNBcnJheS5sZW5ndGgpLmpvaW4oJyAnKS5zcGxpdCgnJylcclxuICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBwb3NpdGlvbiA9IC0xXHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbWFza0FzQXJyYXkubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgIGNvbnN0IGVsID0gbWFza0FzQXJyYXlbaW5kZXhdXHJcbiAgICAgIGlmIChlbCAhPT0gbWFza2VkVmFsdWVBc0FycmF5W2luZGV4XSkge1xyXG4gICAgICAgIC8vIGlmIChtYXNrZWRWYWx1ZUFzQXJyYXlbaW5kZXhdID09PSAnICcpIHJldHVybiBpbmRleFxyXG4gICAgICAgIGlmIChTVVBQT1JURURfTUFTS1MuaW5kZXhPZihlbCkgPiAtMSkge1xyXG4gICAgICAgICAgY29uc3QgcGF0dGVybiA9IG5ldyBSZWdFeHAoXHJcbiAgICAgICAgICAgIGdlbmVyYXRlUGF0dGVybkZyb21NYXNrKGVsKSxcclxuICAgICAgICAgICAgSVNfVU5JQ09ERV9QUk9QRVJUWV9TVVBQT1JURUQgPyAndScgOiAnJ1xyXG4gICAgICAgICAgKVxyXG5cclxuICAgICAgICAgIGlmICghcGF0dGVybi50ZXN0KG1hc2tlZFZhbHVlQXNBcnJheVtpbmRleF0pKSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uID0gaW5kZXhcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmaW5kQ2FyZXRQb3NpdGlvbi5fX0NBQ0hFX19bY2FjaGVLZXldID1cclxuICAgICAgcG9zaXRpb24gPCAwID8gbWFza2VkVmFsdWVBc0FycmF5Lmxlbmd0aCA6IHBvc2l0aW9uXHJcbiAgfVxyXG5cclxuICByZXR1cm4gZmluZENhcmV0UG9zaXRpb24uX19DQUNIRV9fW2NhY2hlS2V5XVxyXG59XHJcblxyXG5leHBvcnQge1xyXG4gIGlzTWFza2VkVmFsdWUsXHJcbiAgbWFza0lmTm90TWFza2VkLFxyXG4gIHVubWFzayxcclxuICBmaW5kQ2FyZXRQb3NpdGlvbixcclxuICBnZW5lcmF0ZVBhdHRlcm5Gcm9tTWFzayxcclxuICBJU19VTklDT0RFX1BST1BFUlRZX1NVUFBPUlRFRCxcclxufVxyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvVGV4dElucHV0L3Rvb2xzLmpzIiwiLypcclxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmFzaXMtaW5wdXQtbWFza2luZyBsaWIuXHJcbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cclxuICpcclxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcclxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXHJcbiAqL1xyXG5cclxuaW1wb3J0IE51bWJlcklucHV0IGZyb20gJy4vTnVtYmVySW5wdXQnXHJcblxyXG5leHBvcnQgZGVmYXVsdCBOdW1iZXJJbnB1dFxyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvTnVtYmVySW5wdXQvaW5kZXguanMiLCIvKlxyXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBiYXNpcy1pbnB1dC1tYXNraW5nIGxpYi5cclxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxyXG4gKlxyXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxyXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cclxuICovXHJcblxyXG5pbXBvcnQgTnVtYmVyTWFzayBmcm9tICdiYmotbWFza3Mvc3JjL051bWJlck1hc2snXHJcblxyXG5jb25zdCBjb3VudERlY2ltYWxzID0gdmFsdWUgPT4ge1xyXG4gIGlmICh2YWx1ZSAlIDEgIT0gMCkge1xyXG4gICAgY29uc3Qgc3BsaXQgPSB2YWx1ZS50b1N0cmluZygpLnNwbGl0KCcuJylcclxuICAgIGlmIChzcGxpdC5sZW5ndGggPT09IDIpIHJldHVybiBzcGxpdFsxXS5sZW5ndGhcclxuICB9XHJcbiAgcmV0dXJuIDBcclxufVxyXG5cclxuLyoqXHJcbiAqIFRoZSBgTnVtYmVySW5wdXRgIHdpbGwgd3JhcCB0ZXh0IGlucHV0cyBhbmQgYXBwbHkgdGhlIGdpdmVuIFtiYmogTnVtYmVyIG1hc2tdKGh0dHBzOi8vZ2l0aHViLmNvbS9CYXNpc0h1Yi9iYmotbWFza3MjbnVtYmVyLW1hc2tzKVxyXG4gKlxyXG4gKiAqKk9wdGlvbnMqKlxyXG4gKlxyXG4gKiBfT3B0aW9ucyBjYW4gYmUgcGFzc2VkIHZpYSBkYXRhIGF0dHJpYnV0ZXMgLiBGb3IgZGF0YSBhdHRyaWJ1dGVzLCBhcHBlbmQgdGhlIG9wdGlvbiBuYW1lIHRvIGRhdGEtLCBhcyBpbiBkYXRhLW1hc2tfXHJcbiAqXHJcbiAqIHwgT3B0aW9uICAgIHwgRGVmYXVsdCB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiB8LS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcclxuICogfCBtYXNrIHwgICAgICAgICB8IFRoZSBiYmogbnVtYmVyIG1hc2sgQHNlZSBbQkJqIE51bWJlciBNYXNrc10oaHR0cHM6Ly9naXRodWIuY29tL0Jhc2lzSHViL2Jiai1tYXNrcyNudW1iZXItbWFza3MpIHxcclxuICogfCBtaW4gfCAgICAgICAgIHwgVGhlIG1heGltdW0gdmFsdWUgdG8gYWNjZXB0IGZvciB0aGlzIGlucHV0fFxyXG4gKiB8IG1heCB8ICAgICAgICAgfCBUaGUgbWluaW11bSB2YWx1ZSB0byBhY2NlcHQgZm9yIHRoaXMgaW5wdXR8XHJcbiAqIHwgc3RlcCB8ICAgICAgICAgfCBBIHN0ZXBwaW5nIGludGVydmFsIHRvIHVzZSB3aGVuIHVzaW5nIHVwIGFuZCBkb3duIGFycm93cyB0byBhZGp1c3QgdGhlIHZhbHVlLCBhcyB3ZWxsIGFzIGZvciB2YWxpZGF0aW9ufFxyXG4gKiB8Z3JvdXBpbmctc2VwYXJhdG9yIHwgLCB8IGEgY2hhciB3aGljaCB3aWxsIGJlIHVzZWQgYXMgYSBncm91cGluZyBzZXBhcmF0b3IgfFxyXG4gKiB8ZGVjaW1hbC1zZXBhcmF0b3IgfCAuIHwgYSBjaGFyIHdoaWNoIHdpbGwgYmUgdXNlZCBhcyBhIGRlY2ltYWwgc2VwYXJhdG9yIHxcclxuICogfGZvcmNlLXRyYWlsaW5nLXplcm9zIHwgZmFsc2UgfCBBZmZlY3RzIHRoZSBvdXRwdXQgYnkgc3dpdGNoaW5nIHRoZSB3YXkgYSBtYXNrIHdpdGggXCIjXCIgY2hhcmFjdGVycyBpbiB0aGUgdHJhaWxpbmcgcG9zaXRpb25zIGlzIGZpbGxlZC4gZm9yIGV4YW1wbGUsIHRoZSBmdW5jdGlvbiBOdW1iZXJNYXNrLm1hc2soLjEwOlwiIy4jI1wiKSByZXR1cm5zIC4xMCBpbnN0ZWFkIG9mIC4xfFxyXG4gKlxyXG4gKiAgPGJyPlxyXG4gKlxyXG4gKiAqKkV4YW1wbGUgOioqXHJcbiAqIGBgYGh0bWxcclxuICogIDxpbnB1dCBjbGFzcz1cImJiai1udW1iZXItbWFza2VkXCIgbmFtZT1cInRlc3RcIiBpZD1cInRlc3RcIiB2YWx1ZT1cIjEyMzRcIiBkYXRhLW1hc2s9XCIjIywjIzBcIj5cclxuICpcclxuICogIDxzY3JpcHQ+XHJcbiAqICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoZSkge1xyXG4gKiAgICAgIG5ldyBCYXNpcy5JbnB1dE1hc2tpbmcuTnVtYmVySW5wdXQoe1xyXG4gKlxyXG4gKiAgICAgICAgIC8vIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZU1hc2tlZCAgbWFza2VkIHZhbHVlXHJcbiAqICAgICAgICAgLy8gQHBhcmFtIHtOdW1iZXJ9IHZhbHVlVW5tYXNrZWQgIG9yaWdpbmFsIHZhbHVlXHJcbiAqICAgICAgICAgLy8gQHBhcmFtIHtIVE1MSW5wdXRFbGVtZW50fSBpbnB1dCB0aGUgYWN0dWFsIGlucHV0IGluc3RhbmNlXHJcbiAqICAgICAgICAgb25VcGRhdGU6ICh2YWx1ZU1hc2tlZCwgdmFsdWVVbm1hc2tlZCwgaW5wdXQsIGlzQXBwbGllZCwgaXNJbml0aWFsKSA9PiB7XHJcbiAqICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nXHJcbiAqICAgICAgICAgfSxcclxuICpcclxuICogICAgICAgICAvLyBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IGVycm9yIGxhc3Qgb2NjdXJyZWQgZXJyb3IuIGNvdWxkIGJlIG1hc2sgZXJyb3Igb3IgdmFsaWRhdGlvbiBlcnJvclxyXG4gKiAgICAgICAgIC8vIEBwYXJhbSB7SFRNTElucHV0RWxlbWVudH0gaW5wdXQgdGhlIGFjdHVhbCBpbnB1dCBpbnN0YW5jZVxyXG4gKiAgICAgICAgIG9uSW52YWxpZDogKGVyciAsIGlucHV0KSA9PiB7XHJcbiAqICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nXHJcbiAqICAgICAgICAgfVxyXG4gKiAgICAgIH0pXHJcbiAqICAgIH0pXHJcbiAqICA8L3NjcmlwdD5cclxuICogYGBgXHJcbiAqXHJcbiAqIEBhdXRob3IgSHl5YW4gQWJvIEZha2hlciA8aGFib2Zha2hlckBiYXNpcy5jb20+XHJcbiAqL1xyXG5jbGFzcyBOdW1iZXJJbnB1dCB7XHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0IG5ldyBOdW1iZXJJbnB1dFxyXG4gICAqXHJcbiAgICogQHBhcmFtIHs/T2JqZWN0fSBvcHRpb25zIC0gVGhlIGlucHV0IG9wdGlvbnMuXHJcbiAgICogQHBhcmFtIHtIVE1MRWxlbWVudHxTdHJpbmd9IFtvcHRpb25zLmVsZW1lbnRzPVwiLmJiai1udW1iZXItbWFza2VkXCJdIC0gVGhlIGNsYXNzIG5hbWUgb3IgdGhlIG5vZGUgdG8gdXNlXHJcbiAgICogQHBhcmFtIHtIVE1MRG9jdW1lbnR9IFtvcHRpb25zLmRvY3VtZW50PWRvY3VtZW50XSAtIERvY3VtZW50IGluc3RhbmNlIHRvIHVzZVxyXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5jc3NDbGFzc0Vycm9yPVwiYmJqLW1hc2stZXJyb3JcIl0gLSBBIGNzcyBjbGFzcyB0byBhdHRhY2ggdG8gdGhlIGlucHV0IHdoZW4gaXQgaXMgaW52YWxpZFxyXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5jc3NDbGFzc1N1Y2Nlc3M9XCJiYmotbWFzay1zdWNjZXNzXCJdIC0gQSBjc3MgY2xhc3MgdG8gYXR0YWNoIHRvIHRoZSBpbnB1dCB3aGVuIGl0IGlzIHZhbGlkIGFmdGVyIHRoZSB1c2VyIGludGVyYWN0aW9uXHJcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdGlvbnMub25VcGRhdGU9bnVsbF0gLSBBIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCBvbiB0aGUgbmV3IG1hc2tlZCB2YWx1ZSBpcyBzZXRcclxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0aW9ucy5vbkludmFsaWQ9bnVsbF0gLSBBIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCBvbiB0aGUgaW5wdXQgb3IgdGhlIG1hc2sgaXMgaW52YWxpZFxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSB7fSkge1xyXG4gICAgdGhpcy5vcHRpb25zID0ge1xyXG4gICAgICAuLi57XHJcbiAgICAgICAgZWxlbWVudHM6ICcuYmJqLW51bWJlci1tYXNrZWQnLFxyXG4gICAgICAgIGRvYzogZG9jdW1lbnQsXHJcbiAgICAgICAgY3NzQ2xhc3NFcnJvcjogJ2Jiai1tYXNrLWVycm9yJyxcclxuICAgICAgICBjc3NDbGFzc1N1Y2Nlc3M6ICdiYmotbWFzay1zdWNjZXNzJyxcclxuICAgICAgICBvblVwZGF0ZTogbnVsbCxcclxuICAgICAgICBvbkludmFsaWQ6IG51bGwsXHJcbiAgICAgIH0sXHJcbiAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fYWN0dWFsSW5wdXRIYW5kbGVyID0gdGhpcy5fYWN0dWFsSW5wdXRIYW5kbGVyLmJpbmQodGhpcylcclxuICAgIHRoaXMuX3VubWFza2VkSW5wdXRIYW5kbGVyID0gdGhpcy5fdW5tYXNrZWRJbnB1dEhhbmRsZXIuYmluZCh0aGlzKVxyXG4gICAgdGhpcy5yZWZyZXNoKClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgdGhlIGNvbXBvbmVudCBhbmQgd3JhcCB0aGUgaW5wdXQgZWxlbWVudHMgZm9yIG1hc2tpbmcgaW4gY2FzZVxyXG4gICAqIHRoZXkgYXJlIG5vdCB3cmFwcGVkIHlldFxyXG4gICAqL1xyXG4gIHJlZnJlc2goKSB7XHJcbiAgICBjb25zdCBlbGVtZW50cyA9XHJcbiAgICAgIHR5cGVvZiB0aGlzLm9wdGlvbnMuZWxlbWVudHMgPT09ICdzdHJpbmcnXHJcbiAgICAgICAgPyB0aGlzLm9wdGlvbnMuZG9jLnF1ZXJ5U2VsZWN0b3JBbGwodGhpcy5vcHRpb25zLmVsZW1lbnRzKVxyXG4gICAgICAgIDogdGhpcy5vcHRpb25zLmVsZW1lbnRzXHJcbiAgICBsZXQgaW5wdXQsIHBhcmVudENsYXNzXHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpbnB1dCA9IGVsZW1lbnRzW2ldXHJcbiAgICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpIHtcclxuICAgICAgICBwYXJlbnRDbGFzcyA9IGlucHV0LnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKCdjbGFzcycpXHJcblxyXG4gICAgICAgIGlmICghaW5wdXQuZ2V0QXR0cmlidXRlKCdpZCcpKSB7XHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgICAgIGBCQmpNYXNraW5nOiBJbnB1dCBoYXMgbm8gSUQuIFdpdGhvdXQgYW4gSUQgdGhlIGlucHV0IGNhbm5vdCBiZSBtYXNrZWRgLFxyXG4gICAgICAgICAgICBpbnB1dFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgY29udGludWVcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHdlIGRvbid0IGluaXRpYWxpemUgdGhlIGlucHV0J3Mgd3JhcCB0d2ljZVxyXG4gICAgICAgIGNvbnN0IGlzV3JhcHBlZCA9XHJcbiAgICAgICAgICBwYXJlbnRDbGFzcyAmJiBwYXJlbnRDbGFzcy5pbmRleE9mKCdudW1iZXJJbnB1dE1hc2tfX3dyYXAnKSA+IC0xXHJcbiAgICAgICAgdGhpcy5fd3JhcChpbnB1dCwgaXNXcmFwcGVkKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgIGBCQmpNYXNraW5nOiBJbnZhbGlkIGlucHV0IGVsZW1lbnQuIFRoZSBlbGVtZW50IHdpbGwgYmUgaWdub3JlZGAsXHJcbiAgICAgICAgICBpbnB1dFxyXG4gICAgICAgIClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVW53cmFwIHRoZSBpbnB1dCBlbGVtZW50cyBhbmQgcmVtb3ZlIGF0dGFjaGVkIGxpc3RlbmVyc1xyXG4gICAqL1xyXG4gIGRlc3Ryb3koKSB7XHJcbiAgICBjb25zdCBlbGVtZW50cyA9XHJcbiAgICAgIHR5cGVvZiB0aGlzLm9wdGlvbnMuZWxlbWVudHMgPT09ICdzdHJpbmcnXHJcbiAgICAgICAgPyB0aGlzLm9wdGlvbnMuZG9jLnF1ZXJ5U2VsZWN0b3JBbGwodGhpcy5vcHRpb25zLmVsZW1lbnRzKVxyXG4gICAgICAgIDogdGhpcy5vcHRpb25zLmVsZW1lbnRzXHJcblxyXG4gICAgbGV0IGlucHV0LCBwYXJlbnQsIHBhcmVudENsYXNzXHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpbnB1dCA9IGVsZW1lbnRzW2ldXHJcbiAgICAgIHBhcmVudCA9IGlucHV0LnBhcmVudE5vZGVcclxuICAgICAgcGFyZW50Q2xhc3MgPSBwYXJlbnQuZ2V0QXR0cmlidXRlKCdjbGFzcycpXHJcblxyXG4gICAgICBpZiAocGFyZW50Q2xhc3MgJiYgcGFyZW50Q2xhc3MuaW5kZXhPZignbnVtYmVySW5wdXRNYXNrX193cmFwJykgPiAtMSkge1xyXG4gICAgICAgIHRoaXMuX3Vud3JhcChwYXJlbnQpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSB0aGUgbnVtYmVyIG1hc2tpbmcgaW5wdXQgd3JhcHBlclxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtIVE1MSW5wdXRFbGVtZW50fSBhY3R1YWxJbnB1dCB0aGUgaW5wdXQgZWxlbWVudFxyXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gaXNXcmFwcGVkIHdoZW4gdHJ1ZSB0aGUgaW5wdXQgaXMgYWxyZWFkeSB3cmFwcGVkIGFuZCB3ZSBuZWVkIHRvIGFkZCB3aGF0IGlzXHJcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzc2luZyBvbmx5XHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB7SFRNTFNwYW5FbGVtZW50fSB3cmFwcGVyIGluc3RhbmNlXHJcbiAgICpcclxuICAgKiBAcHJvdGVjdGVkXHJcbiAgICovXHJcbiAgX3dyYXAoYWN0dWFsSW5wdXQsIGlzV3JhcHBlZCkge1xyXG4gICAgY29uc3QgYWN0dWFsSW5wdXRJZCA9IGFjdHVhbElucHV0LmdldEF0dHJpYnV0ZSgnaWQnKSxcclxuICAgICAgYWN0dWFsSW5wdXROYW1lID0gYWN0dWFsSW5wdXQuZ2V0QXR0cmlidXRlKCduYW1lJyksXHJcbiAgICAgIGFjdHVhbElucHV0U3RlcCA9IGFjdHVhbElucHV0LmRhdGFzZXQuc3RlcCB8fCBudWxsLFxyXG4gICAgICBhY3R1YWxJbnB1dE1heCA9IGFjdHVhbElucHV0LmRhdGFzZXQubWF4IHx8IG51bGwsXHJcbiAgICAgIGFjdHVhbElucHV0TWluID0gYWN0dWFsSW5wdXQuZGF0YXNldC5taW4gfHwgbnVsbCxcclxuICAgICAgYWN0dWFsSW5wdXRHcm91cGluZ1NlcGFyYXRvciA9XHJcbiAgICAgICAgYWN0dWFsSW5wdXQuZGF0YXNldC5ncm91cGluZ1NlcGFyYXRvciB8fCAnLCcsXHJcbiAgICAgIGFjdHVhbElucHV0RGVjaW1hbFNlcGFyYXRvciA9IGFjdHVhbElucHV0LmRhdGFzZXQuZGVjaW1hbFNlcGFyYXRvciB8fCAnLicsXHJcbiAgICAgIGFjdHVhbElucHV0Rm9yY2VUcmFpbGluZ1plcm9zID1cclxuICAgICAgICBhY3R1YWxJbnB1dC5kYXRhc2V0LmZvcmNlVHJhaWxpbmdaZXJvcyB8fCBudWxsLFxyXG4gICAgICBhY3R1YWxJbnB1dE1hc2sgPSBhY3R1YWxJbnB1dC5kYXRhc2V0Lm1hc2sgfHwgJycsXHJcbiAgICAgIGFjdHVhbElucHV0Q2xhc3NlcyA9IGFjdHVhbElucHV0LmdldEF0dHJpYnV0ZSgnY2xhc3MnKSxcclxuICAgICAgYWN0dWFsSW5wdXRSZXF1aXJlZCA9IGFjdHVhbElucHV0LmdldEF0dHJpYnV0ZSgncmVxdWlyZWQnKSB8fCBudWxsXHJcblxyXG4gICAgbGV0IHdyYXAgPSBudWxsLFxyXG4gICAgICB1bm1hc2tlZElucHV0ID0gbnVsbFxyXG5cclxuICAgIGlmICghaXNXcmFwcGVkKSB7XHJcbiAgICAgIHdyYXAgPSB0aGlzLm9wdGlvbnMuZG9jLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxyXG4gICAgICB1bm1hc2tlZElucHV0ID0gdGhpcy5vcHRpb25zLmRvYy5jcmVhdGVFbGVtZW50KCdpbnB1dCcpIC8vIGhpZGRlbiBpbnB1dCB3aXRoIHRoZSB1bm1hc2tlZCB2YWx1ZXMgZm9yIGZvcm1zXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB3cmFwID0gYWN0dWFsSW5wdXQucGFyZW50Tm9kZVxyXG4gICAgICB1bm1hc2tlZElucHV0ID0gd3JhcC5xdWVyeVNlbGVjdG9yKCcubnVtYmVySW5wdXRNYXNrX191bm1hc2tlZElucHV0JylcclxuICAgIH1cclxuXHJcbiAgICAvLyBjb25maWd1cmUgdGhlIGFjdHVhbCBpbnB1dFxyXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIGlmICghaXNXcmFwcGVkKSB7XHJcbiAgICAgIGFjdHVhbElucHV0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHdyYXAsIGFjdHVhbElucHV0KSAvLyBtb3ZlIHRoZSBpbnB1dCBvdXRzaWRlIHRoZSB3cmFwcGVyXHJcbiAgICAgIGlmIChcclxuICAgICAgICAhKFxyXG4gICAgICAgICAgYWN0dWFsSW5wdXQuaGFzQXR0cmlidXRlKCdyZWFkb25seScpIHx8XHJcbiAgICAgICAgICBhY3R1YWxJbnB1dC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJylcclxuICAgICAgICApXHJcbiAgICAgICkge1xyXG4gICAgICAgIGFjdHVhbElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5fYWN0dWFsSW5wdXRIYW5kbGVyKVxyXG4gICAgICAgIGFjdHVhbElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzaW4nLCB0aGlzLl9hY3R1YWxJbnB1dEhhbmRsZXIpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhY3R1YWxJbnB1dC5kYXRhc2V0LnZhbHVlVW5tYXNrZWQgPSBhY3R1YWxJbnB1dC52YWx1ZSB8fCAwXHJcbiAgICBhY3R1YWxJbnB1dC5kYXRhc2V0Lmdyb3VwaW5nU2VwYXJhdG9yID0gYWN0dWFsSW5wdXRHcm91cGluZ1NlcGFyYXRvclxyXG4gICAgYWN0dWFsSW5wdXQuZGF0YXNldC5kZWNpbWFsU2VwYXJhdG9yID0gYWN0dWFsSW5wdXREZWNpbWFsU2VwYXJhdG9yXHJcbiAgICBhY3R1YWxJbnB1dC5kYXRhc2V0LmZvcmNlVHJhaWxpbmdaZXJvcyA9IGFjdHVhbElucHV0Rm9yY2VUcmFpbGluZ1plcm9zXHJcbiAgICBhY3R1YWxJbnB1dC52YWx1ZSA9IE51bWJlck1hc2subWFzayhcclxuICAgICAgYWN0dWFsSW5wdXQuZGF0YXNldC52YWx1ZVVubWFza2VkLFxyXG4gICAgICBhY3R1YWxJbnB1dE1hc2ssXHJcbiAgICAgIGFjdHVhbElucHV0R3JvdXBpbmdTZXBhcmF0b3IsXHJcbiAgICAgIGFjdHVhbElucHV0RGVjaW1hbFNlcGFyYXRvcixcclxuICAgICAgYWN0dWFsSW5wdXRGb3JjZVRyYWlsaW5nWmVyb3NcclxuICAgICkudHJpbSgpXHJcbiAgICBhY3R1YWxJbnB1dC5jbGFzc0xpc3QuYWRkKFxyXG4gICAgICAnbnVtYmVySW5wdXRNYXNrX190ZXh0SW5wdXQnLFxyXG4gICAgICB0aGlzLm9wdGlvbnMuY3NzQ2xhc3NTdWNjZXNzXHJcbiAgICApXHJcblxyXG4gICAgLy8gY29uZmlndXJlIHRoZSB1bm1hc2tlZCBpbnB1dFxyXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgdW5tYXNrZWRJbnB1dC52YWx1ZSA9IGFjdHVhbElucHV0LmRhdGFzZXQudmFsdWVVbm1hc2tlZFxyXG4gICAgdW5tYXNrZWRJbnB1dC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKVxyXG4gICAgdW5tYXNrZWRJbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnaGlkZGVuJylcclxuICAgIHVubWFza2VkSW5wdXQuc2V0QXR0cmlidXRlKCdjbGFzcycsIGFjdHVhbElucHV0Q2xhc3NlcylcclxuICAgIGlmIChhY3R1YWxJbnB1dElkKVxyXG4gICAgICB1bm1hc2tlZElucHV0LnNldEF0dHJpYnV0ZSgnaWQnLCBgJHthY3R1YWxJbnB1dElkfS11bm1hc2tlZGApXHJcbiAgICBpZiAoYWN0dWFsSW5wdXROYW1lKVxyXG4gICAgICB1bm1hc2tlZElucHV0LnNldEF0dHJpYnV0ZSgnbmFtZScsIGAke2FjdHVhbElucHV0TmFtZX0tdW5tYXNrZWRgKVxyXG4gICAgaWYgKGFjdHVhbElucHV0UmVxdWlyZWQpIHVubWFza2VkSW5wdXQuc2V0QXR0cmlidXRlKCdyZXF1aXJlZCcsICdyZXF1aXJlZCcpXHJcblxyXG4gICAgaWYgKGFjdHVhbElucHV0U3RlcCkgdW5tYXNrZWRJbnB1dC5zZXRBdHRyaWJ1dGUoJ3N0ZXAnLCBhY3R1YWxJbnB1dFN0ZXApXHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uc3QgZGVjaW1hbHMgPSBjb3VudERlY2ltYWxzKHVubWFza2VkSW5wdXQudmFsdWUpXHJcbiAgICAgIGxldCBzdGVwID0gJzEnXHJcbiAgICAgIGlmIChkZWNpbWFscyA+IDApIHtcclxuICAgICAgICBzdGVwID0gYC4ke0FycmF5KGRlY2ltYWxzKS5qb2luKCcwJyl9MWBcclxuICAgICAgfVxyXG5cclxuICAgICAgdW5tYXNrZWRJbnB1dC5zZXRBdHRyaWJ1dGUoJ3N0ZXAnLCBzdGVwKVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChhY3R1YWxJbnB1dE1pbikgdW5tYXNrZWRJbnB1dC5zZXRBdHRyaWJ1dGUoJ21pbicsIGFjdHVhbElucHV0TWluKVxyXG4gICAgaWYgKGFjdHVhbElucHV0TWF4KSB1bm1hc2tlZElucHV0LnNldEF0dHJpYnV0ZSgnbWF4JywgYWN0dWFsSW5wdXRNYXgpXHJcbiAgICB1bm1hc2tlZElucHV0LmRhdGFzZXQuaW5wdXRJZCA9IGFjdHVhbElucHV0SWRcclxuICAgIHVubWFza2VkSW5wdXQuZGF0YXNldC5tYXNrID0gYWN0dWFsSW5wdXRNYXNrXHJcbiAgICB1bm1hc2tlZElucHV0LmRhdGFzZXQuZ3JvdXBpbmdTZXBhcmF0b3IgPSBhY3R1YWxJbnB1dEdyb3VwaW5nU2VwYXJhdG9yXHJcbiAgICB1bm1hc2tlZElucHV0LmRhdGFzZXQuZGVjaW1hbFNlcGFyYXRvciA9IGFjdHVhbElucHV0RGVjaW1hbFNlcGFyYXRvclxyXG4gICAgaWYgKGFjdHVhbElucHV0Rm9yY2VUcmFpbGluZ1plcm9zKVxyXG4gICAgICB1bm1hc2tlZElucHV0LmRhdGFzZXQuZm9yY2VUcmFpbGluZ1plcm9zID0gYWN0dWFsSW5wdXRGb3JjZVRyYWlsaW5nWmVyb3NcclxuXHJcbiAgICBpZiAoIWlzV3JhcHBlZCkge1xyXG4gICAgICB1bm1hc2tlZElucHV0LmNsYXNzTGlzdC5hZGQoJ251bWJlcklucHV0TWFza19fdW5tYXNrZWRJbnB1dCcpXHJcbiAgICAgIHVubWFza2VkSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuX3VubWFza2VkSW5wdXRIYW5kbGVyKVxyXG4gICAgICB1bm1hc2tlZElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy5fdW5tYXNrZWRJbnB1dEhhbmRsZXIpXHJcbiAgICAgIHVubWFza2VkSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNvdXQnLCB0aGlzLl91bm1hc2tlZElucHV0SGFuZGxlcilcclxuXHJcbiAgICAgIC8vIGNvbmZpZ3VyZSB0aGUgd3JhcHBlclxyXG4gICAgICB3cmFwLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAnbnVtYmVySW5wdXRNYXNrX193cmFwJylcclxuICAgICAgd3JhcC5hcHBlbmRDaGlsZCh1bm1hc2tlZElucHV0KVxyXG4gICAgICB3cmFwLmFwcGVuZENoaWxkKGFjdHVhbElucHV0KVxyXG4gICAgfVxyXG5cclxuICAgIGlmICghaXNOYU4oTnVtYmVyKGFjdHVhbElucHV0LmRhdGFzZXQudmFsdWVVbm1hc2tlZCkpKSB7XHJcbiAgICAgIGlmICh0aGlzLl92YWxpZGF0ZUlucHV0KHVubWFza2VkSW5wdXQsIGFjdHVhbElucHV0KSkge1xyXG4gICAgICAgIHRoaXMuX19maXJlT25VcGRhdGUoXHJcbiAgICAgICAgICBhY3R1YWxJbnB1dC52YWx1ZSxcclxuICAgICAgICAgIGFjdHVhbElucHV0LmRhdGFzZXQudmFsdWVVbm1hc2tlZCxcclxuICAgICAgICAgIGFjdHVhbElucHV0XHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhY3R1YWxJbnB1dC5jbGFzc0xpc3QuYWRkKHRoaXMub3B0aW9ucy5jc3NDbGFzc0Vycm9yKVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB3cmFwXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVbndyYXAgdGhlIG1hc2tlZCBpbnB1dCBhbmQgcmVtb3ZlIHRoZSB2YWx1ZSBjaGFuZ2VkIGxpc3RlbmVyXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0hUTUxTcGFuRWxlbWVudH0gdGV4dElucHV0IHRoZSB3cmFwcGVyIHNwYW4gaW5zdGFuY2VcclxuICAgKlxyXG4gICAqIEBwcm90ZWN0ZWRcclxuICAgKi9cclxuICBfdW53cmFwKHRleHRJbnB1dCkge1xyXG4gICAgdGV4dElucHV0LnJlbW92ZUNoaWxkKFxyXG4gICAgICB0ZXh0SW5wdXQucXVlcnlTZWxlY3RvcignLm51bWJlcklucHV0TWFza19fdW5tYXNrZWRJbnB1dCcpXHJcbiAgICApXHJcblxyXG4gICAgY29uc3QgaW5wdXQgPSB0ZXh0SW5wdXQucXVlcnlTZWxlY3RvcignLm51bWJlcklucHV0TWFza19fdGV4dElucHV0JylcclxuICAgIGlucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5fYWN0dWFsSW5wdXRIYW5kbGVyKVxyXG4gICAgaW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIHRoaXMuX2FjdHVhbElucHV0SGFuZGxlcilcclxuICAgIGlucHV0LmNsYXNzTGlzdC5yZW1vdmUoJ251bWJlcklucHV0TWFza19fdGV4dElucHV0JylcclxuICAgIGlucHV0LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5vcHRpb25zLmNzc0NsYXNzRXJyb3IpXHJcbiAgICBpbnB1dC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMub3B0aW9ucy5jc3NDbGFzc1N1Y2Nlc3MpXHJcbiAgICBkZWxldGUgaW5wdXQuZGF0YXNldC52YWx1ZVVubWFza2VkXHJcblxyXG4gICAgdGV4dElucHV0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGlucHV0LCB0ZXh0SW5wdXQpXHJcbiAgICB0ZXh0SW5wdXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0ZXh0SW5wdXQpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMaXN0ZW4gdG8gY2xpY2sgYW5kIGZvY3VzaW4gZXZlbnQgb24gdGhlIGFjdHVhbCBpbnB1dCBhbmQgdG9nZ2xlIHRoZSBudW1iZXIgaW5wdXRcclxuICAgKlxyXG4gICAqIEBwYXJhbSB7RXZlbnR9IGVcclxuICAgKlxyXG4gICAqIEBwcm90ZWN0ZWRcclxuICAgKi9cclxuICBfYWN0dWFsSW5wdXRIYW5kbGVyKGUpIHtcclxuICAgIGNvbnN0IGFjdHVhbElucHV0ID0gZS50YXJnZXQsXHJcbiAgICAgIGFjdHVhbElucHV0SWQgPSBhY3R1YWxJbnB1dC5pZCxcclxuICAgICAgdW5tYXNrZWRJbnB1dCA9IHRoaXMub3B0aW9ucy5kb2MucXVlcnlTZWxlY3RvcihcclxuICAgICAgICBgIyR7YWN0dWFsSW5wdXRJZH0tdW5tYXNrZWRgXHJcbiAgICAgIClcclxuXHJcbiAgICBhY3R1YWxJbnB1dC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKVxyXG4gICAgYWN0dWFsSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2hpZGRlbicpXHJcblxyXG4gICAgdW5tYXNrZWRJbnB1dC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJylcclxuICAgIHVubWFza2VkSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ251bWJlcicpXHJcbiAgICB0aGlzLl92YWxpZGF0ZUlucHV0KHVubWFza2VkSW5wdXQsIGFjdHVhbElucHV0KVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHVubWFza2VkSW5wdXQuZm9jdXMoKVxyXG4gICAgICBjb25zdCBsZW5ndGggPSBTdHJpbmcodW5tYXNrZWRJbnB1dC52YWx1ZSkubGVuZ3RoXHJcbiAgICAgIHVubWFza2VkSW5wdXQudHlwZSA9ICd0ZXh0J1xyXG4gICAgICB1bm1hc2tlZElucHV0LnNldFNlbGVjdGlvblJhbmdlKGxlbmd0aCwgbGVuZ3RoKVxyXG4gICAgICB1bm1hc2tlZElucHV0LnR5cGUgPSAnbnVtYmVyJ1xyXG4gICAgfSwgMClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3RlbiB0byB0aGUgdW5tYXNrZWQgaW5wdXQga2V5ZG93biBhbmQgZm9jdXNvdXQgZXZlbnRzIGFuZCBjaGVja1xyXG4gICAqIGlmIHRoZSBpbnB1dCB2YWx1ZSBjYW4gYmUgbWFza2VkIG9yIG5vdFxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtFdmVudH0gZVxyXG4gICAqXHJcbiAgICogQHByb3RlY3RlZFxyXG4gICAqL1xyXG4gIF91bm1hc2tlZElucHV0SGFuZGxlcihlKSB7XHJcbiAgICBjb25zdCB1bm1hc2tlZElucHV0ID0gZS50YXJnZXQsXHJcbiAgICAgIGtleUNvZGUgPSBlLmtleUNvZGUsXHJcbiAgICAgIG1hc2sgPSB1bm1hc2tlZElucHV0LmRhdGFzZXQubWFzayxcclxuICAgICAgZ3JvdXBpbmdTZXBhcmF0b3IgPSB1bm1hc2tlZElucHV0LmRhdGFzZXQuZ3JvdXBpbmdTZXBhcmF0b3IsXHJcbiAgICAgIGRlY2ltYWxTZXBhcmF0b3IgPSB1bm1hc2tlZElucHV0LmRhdGFzZXQuZGVjaW1hbFNlcGFyYXRvcixcclxuICAgICAgZm9yY2VUcmFpbGluZ1plcm9zID0gdW5tYXNrZWRJbnB1dC5kYXRhc2V0LmZvcmNlVHJhaWxpbmdaZXJvcyxcclxuICAgICAgYWN0dWFsSW5wdXRJZCA9IHVubWFza2VkSW5wdXQuZGF0YXNldC5pbnB1dElkLFxyXG4gICAgICBhY3R1YWxJbnB1dCA9IHRoaXMub3B0aW9ucy5kb2MucXVlcnlTZWxlY3RvcihgIyR7YWN0dWFsSW5wdXRJZH1gKVxyXG5cclxuICAgIGxldCByZXN0b3JlID0gZmFsc2UsXHJcbiAgICAgIGFwcGx5ID0gZmFsc2UsXHJcbiAgICAgIG1hc2tlZFZhbHVlID0gZmFsc2UsXHJcbiAgICAgIGlzVmFsaWQgPSB0aGlzLl92YWxpZGF0ZUlucHV0KHVubWFza2VkSW5wdXQsIGFjdHVhbElucHV0KVxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIG1hc2tlZFZhbHVlID0gTnVtYmVyTWFzay5tYXNrKFxyXG4gICAgICAgIHVubWFza2VkSW5wdXQudmFsdWUgfHwgMCxcclxuICAgICAgICBtYXNrLFxyXG4gICAgICAgIGdyb3VwaW5nU2VwYXJhdG9yLFxyXG4gICAgICAgIGRlY2ltYWxTZXBhcmF0b3IsXHJcbiAgICAgICAgZm9yY2VUcmFpbGluZ1plcm9zLFxyXG4gICAgICAgIGZhbHNlXHJcbiAgICAgICkudHJpbSgpXHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIG1hc2tlZFZhbHVlID0gZmFsc2VcclxuICAgICAgdGhpcy5fX2FwcGx5Q3NzQ2xhc3NTdGF0ZSh1bm1hc2tlZElucHV0LCBhY3R1YWxJbnB1dCwgJ2Vycm9yJylcclxuICAgICAgdGhpcy5fX2ZpcmVPbkludmFsaWQoZSwgYWN0dWFsSW5wdXQpXHJcbiAgICB9XHJcblxyXG4gICAgcmVzdG9yZSA9IFsxMywgMjddLmluZGV4T2Yoa2V5Q29kZSkgPiAtMSB8fCBlLnR5cGUgPT09ICdmb2N1c291dCdcclxuICAgIGFwcGx5ID0gbWFza2VkVmFsdWUgJiYgaXNWYWxpZFxyXG5cclxuICAgIGlmIChyZXN0b3JlKSB7XHJcbiAgICAgIHVubWFza2VkSW5wdXQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLm9wdGlvbnMuY3NzQ2xhc3NFcnJvcilcclxuICAgICAgdW5tYXNrZWRJbnB1dC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMub3B0aW9ucy5jc3NDbGFzc1N1Y2Nlc3MpXHJcblxyXG4gICAgICB1bm1hc2tlZElucHV0LnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpXHJcbiAgICAgIHVubWFza2VkSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2hpZGRlbicpXHJcblxyXG4gICAgICBhY3R1YWxJbnB1dC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJylcclxuICAgICAgYWN0dWFsSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ3RleHQnKVxyXG5cclxuICAgICAgYWN0dWFsSW5wdXQuY2xhc3NMaXN0LmFkZCh0aGlzLm9wdGlvbnMuY3NzQ2xhc3NTdWNjZXNzKVxyXG5cclxuICAgICAgaWYgKGFwcGx5KSB7XHJcbiAgICAgICAgYWN0dWFsSW5wdXQudmFsdWUgPSBtYXNrZWRWYWx1ZVxyXG4gICAgICAgIGFjdHVhbElucHV0LmRhdGFzZXQudmFsdWVVbm1hc2tlZCA9IHVubWFza2VkSW5wdXQudmFsdWVcclxuICAgICAgICB0aGlzLl9fZmlyZU9uVXBkYXRlKG1hc2tlZFZhbHVlLCB1bm1hc2tlZElucHV0LnZhbHVlLCBhY3R1YWxJbnB1dClcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB1bm1hc2tlZElucHV0LnZhbHVlID0gYWN0dWFsSW5wdXQuZGF0YXNldC52YWx1ZVVubWFza2VkXHJcbiAgICAgICAgdGhpcy5fX2FwcGx5Q3NzQ2xhc3NTdGF0ZSh1bm1hc2tlZElucHV0LCBhY3R1YWxJbnB1dCwgJ3N1Y2Nlc3MnKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmlnZ2VyIGBjaGVja1ZhbGlkaXR5YCBvbiB0aGUgaW5wdXRcclxuICAgKlxyXG4gICAqIEBwYXJhbSB7SFRNTElucHV0RWxlbWVudH0gdW5tYXNrZWRJbnB1dFxyXG4gICAqIEBwYXJhbSB7SFRNTElucHV0RWxlbWVudH0gYWN0dWFsSW5wdXRcclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHtCb29sZWFufSB0cnVlIHdoZW4gdmFsaWQgLCBmYWxzZSBvdGhlcndpc2VcclxuICAgKlxyXG4gICAqIEBwcm90ZWN0ZWRcclxuICAgKi9cclxuICBfdmFsaWRhdGVJbnB1dCh1bm1hc2tlZElucHV0LCBhY3R1YWxJbnB1dCkge1xyXG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlXHJcbiAgICBjb25zdCB2YWx1ZSA9IE51bWJlcih1bm1hc2tlZElucHV0LnZhbHVlKVxyXG4gICAgaWYgKHVubWFza2VkSW5wdXQuZ2V0QXR0cmlidXRlKCd0eXBlJykgPT09ICdoaWRkZW4nICYmICFpc05hTih2YWx1ZSkpIHtcclxuICAgICAgY29uc3QgbWF4ID0gdW5tYXNrZWRJbnB1dC5nZXRBdHRyaWJ1dGUoJ21heCcpXHJcbiAgICAgIGNvbnN0IG1pbiA9IHVubWFza2VkSW5wdXQuZ2V0QXR0cmlidXRlKCdtaW4nKVxyXG4gICAgICBjb25zdCBzdGVwID0gdW5tYXNrZWRJbnB1dC5nZXRBdHRyaWJ1dGUoJ3N0ZXAnKVxyXG5cclxuICAgICAgaWYgKG1pbikgaXNWYWxpZCA9IGlzVmFsaWQgJiYgdmFsdWUgPj0gTnVtYmVyKG1pbilcclxuICAgICAgaWYgKG1heCkgaXNWYWxpZCA9IGlzVmFsaWQgJiYgdmFsdWUgPD0gTnVtYmVyKG1heClcclxuXHJcbiAgICAgIGlmIChzdGVwKVxyXG4gICAgICAgIGlzVmFsaWQgPVxyXG4gICAgICAgICAgaXNWYWxpZCAmJiBjb3VudERlY2ltYWxzKHN0ZXApID09PSBjb3VudERlY2ltYWxzKHVubWFza2VkSW5wdXQudmFsdWUpXHJcbiAgICB9IGVsc2UgaXNWYWxpZCA9IHVubWFza2VkSW5wdXQuY2hlY2tWYWxpZGl0eSgpXHJcblxyXG4gICAgaWYgKGlzVmFsaWQpIHtcclxuICAgICAgdGhpcy5fX2FwcGx5Q3NzQ2xhc3NTdGF0ZSh1bm1hc2tlZElucHV0LCBhY3R1YWxJbnB1dCwgJ3N1Y2Nlc3MnKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fX2FwcGx5Q3NzQ2xhc3NTdGF0ZSh1bm1hc2tlZElucHV0LCBhY3R1YWxJbnB1dCwgJ2Vycm9yJylcclxuICAgICAgdGhpcy5fX2ZpcmVPbkludmFsaWQoXHJcbiAgICAgICAgdW5tYXNrZWRJbnB1dC52YWxpZGF0aW9uTWVzc2FnZSB8fCAnVmFsaWRpdHkgY2hlY2sgZmFpbHMnLFxyXG4gICAgICAgIGFjdHVhbElucHV0XHJcbiAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaXNWYWxpZFxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHBhcmFtIHtTdHJpbmd9IHZhbHVlTWFza2VkICBtYXNrZWQgdmFsdWVcclxuICAgKiBAcGFyYW0ge051bWJlcn0gdmFsdWVVbm1hc2tlZCAgb3JpZ2luYWwgdmFsdWVcclxuICAgKiBAcGFyYW0ge0hUTUxJbnB1dEVsZW1lbnR9IGlucHV0IHRoZSBhY3R1YWwgaW5wdXQgaW5zdGFuY2VcclxuICAgKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgX19maXJlT25VcGRhdGUodmFsdWVNYXNrZWQsIHZhbHVlVW5tYXNrZWQsIGlucHV0KSB7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9uVXBkYXRlKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5vblVwZGF0ZSh2YWx1ZU1hc2tlZCwgdmFsdWVVbm1hc2tlZCwgaW5wdXQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IGVycm9yIGxhc3Qgb2NjdXJyZWQgZXJyb3IuIGNvdWxkIGJlIG1hc2sgZXJyb3Igb3IgdmFsaWRhdGlvbiBlcnJvclxyXG4gICAqIEBwYXJhbSB7SFRNTElucHV0RWxlbWVudH0gaW5wdXQgdGhlIGFjdHVhbCBpbnB1dCBpbnN0YW5jZVxyXG4gICAqXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBfX2ZpcmVPbkludmFsaWQoZXJyb3IsIGlucHV0KSB7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9uSW52YWxpZCkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMub25JbnZhbGlkKGVycm9yLCBpbnB1dClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgX19hcHBseUNzc0NsYXNzU3RhdGUodW5tYXNrZWRJbnB1dCwgYWN0dWFsSW5wdXQsIHN0YXRlKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGFjdHVhbElucHV0Lmhhc0F0dHJpYnV0ZSgncmVhZG9ubHknKSB8fFxyXG4gICAgICBhY3R1YWxJbnB1dC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJylcclxuICAgICkge1xyXG4gICAgICBhY3R1YWxJbnB1dC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMub3B0aW9ucy5jc3NDbGFzc0Vycm9yKVxyXG4gICAgICBhY3R1YWxJbnB1dC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMub3B0aW9ucy5jc3NDbGFzc1N1Y2Nlc3MpXHJcblxyXG4gICAgICB1bm1hc2tlZElucHV0LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5vcHRpb25zLmNzc0NsYXNzRXJyb3IpXHJcbiAgICAgIHVubWFza2VkSW5wdXQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLm9wdGlvbnMuY3NzQ2xhc3NTdWNjZXNzKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHN0YXRlID09PSAnc3VjY2VzcycpIHtcclxuICAgICAgICBhY3R1YWxJbnB1dC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMub3B0aW9ucy5jc3NDbGFzc0Vycm9yKVxyXG4gICAgICAgIGFjdHVhbElucHV0LmNsYXNzTGlzdC5hZGQodGhpcy5vcHRpb25zLmNzc0NsYXNzU3VjY2VzcylcclxuXHJcbiAgICAgICAgdW5tYXNrZWRJbnB1dC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMub3B0aW9ucy5jc3NDbGFzc0Vycm9yKVxyXG4gICAgICAgIHVubWFza2VkSW5wdXQuY2xhc3NMaXN0LmFkZCh0aGlzLm9wdGlvbnMuY3NzQ2xhc3NTdWNjZXNzKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoc3RhdGUgPT09ICdlcnJvcicpIHtcclxuICAgICAgICBhY3R1YWxJbnB1dC5jbGFzc0xpc3QuYWRkKHRoaXMub3B0aW9ucy5jc3NDbGFzc0Vycm9yKVxyXG4gICAgICAgIGFjdHVhbElucHV0LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5vcHRpb25zLmNzc0NsYXNzU3VjY2VzcylcclxuXHJcbiAgICAgICAgdW5tYXNrZWRJbnB1dC5jbGFzc0xpc3QuYWRkKHRoaXMub3B0aW9ucy5jc3NDbGFzc0Vycm9yKVxyXG4gICAgICAgIHVubWFza2VkSW5wdXQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLm9wdGlvbnMuY3NzQ2xhc3NTdWNjZXNzKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBOdW1iZXJJbnB1dFxyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvTnVtYmVySW5wdXQvTnVtYmVySW5wdXQuanMiLCJtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfN19fO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIHtcImNvbW1vbmpzXCI6XCJiYmotbWFza3Mvc3JjL051bWJlck1hc2tcIixcImNvbW1vbmpzMlwiOlwiYmJqLW1hc2tzL3NyYy9OdW1iZXJNYXNrXCIsXCJhbWRcIjpcImJiai1tYXNrcy9zcmMvTnVtYmVyTWFza1wiLFwicm9vdFwiOltcIkJCalwiLFwiTWFza3NcIixcIk51bWJlck1hc2tcIl19XG4vLyBtb2R1bGUgaWQgPSA3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIiwiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbiBcdFx0XHRcdGdldDogZ2V0dGVyXG4gXHRcdFx0fSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gNSk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgZWZlZjg3YTAxYzNlZDIyY2EzNTgiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmJqLW1hc2tzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IE51bWJlck1hc2sgZnJvbSAnLi9OdW1iZXJNYXNrJ1xuXG5leHBvcnQgZGVmYXVsdCBOdW1iZXJNYXNrXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvTnVtYmVyTWFzay9pbmRleC5qcyIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBiYmotbWFza3MgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgRGF0ZU1hc2ssIHtcbiAgZ2V0RGF5T2ZZZWFyLFxuICBnZXRXZWVrTnVtYmVyLFxuICBnZXRXZWVrU3RhcnRCeUxvY2FsZSxcbiAgSVNfVElNRV9SRUdFWCxcbiAgSVNfREFURV9SRUdFWCxcbiAgZml4U2hvcnRJU08sXG4gIGdldFRpbWV6b25lT3JPZmZzZXRcbn0gZnJvbSAnLi9EYXRlTWFzaydcblxuZXhwb3J0IHtcbiAgZ2V0RGF5T2ZZZWFyLFxuICBnZXRXZWVrTnVtYmVyLFxuICBnZXRXZWVrU3RhcnRCeUxvY2FsZSxcbiAgSVNfREFURV9SRUdFWCxcbiAgSVNfVElNRV9SRUdFWCxcbiAgZml4U2hvcnRJU08sXG4gIGdldFRpbWV6b25lT3JPZmZzZXRcbn1cbmV4cG9ydCBkZWZhdWx0IERhdGVNYXNrXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvRGF0ZU1hc2svaW5kZXguanMiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmJqLW1hc2tzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IFN0cmluZ01hc2sgZnJvbSAnLi9TdHJpbmdNYXNrJ1xuXG5leHBvcnQgZGVmYXVsdCBTdHJpbmdNYXNrXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvU3RyaW5nTWFzay9pbmRleC5qcyIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBiYmotbWFza3MgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG4vKipcbiAqIE51bWJlck1hc2tcbiAqXG4gKiBBIGphdmFzY3JpcHQgaW1wbGVtZW50YXRpb24gZm9yIEJCaiBudW1iZXJzIG1hc2tpbmdcbiAqXG4gKiBAYXV0aG9yIEh5eWFuIEFibyBGYWtoZXIgPGhhYm9mYWtoZXJAYmFzaXMuY29tPlxuICovXG5jbGFzcyBOdW1iZXJNYXNrIHtcbiAgLyoqXG4gICAqIE1hc2sgdGhlIGdpdmVuIG51bWJlciB3aXRoIHRoZSBnaXZlbiBtYXNrIGFjY29yZGluZyB0byBCQmogcnVsZXNcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IG51bWJlciB0aGUgbnVtYmVyIHRvIGZvcm1hdFxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWFzayB0aGUgbWFzayB0byB1c2UgZm9yIGZvcm1hdHRpbmdcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtncm91cGluZ1NlcGFyYXRvcj0sXSAtIGEgY2hhciB3aGljaCB3aWxsIGJlIHVzZWQgYXMgYSBncm91cGluZyBzZXBhcmF0b3JcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtkZWNpbWFsU2VwYXJhdG9yPS5dICAtIGEgY2hhciB3aGljaCB3aWxsIGJlIHVzZWQgYXMgYSBkZWNpbWFsIHNlcGFyYXRvclxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IFtmb3JjZVRyYWlsaW5nWmVyb3M9ZmFsc2VdIC0gQWZmZWN0cyB0aGUgb3V0cHV0IGJ5IHN3aXRjaGluZyB0aGUgd2F5IGEgbWFzayB3aXRoIFwiI1wiIGNoYXJhY3RlcnMgaW4gdGhlIHRyYWlsaW5nIHBvc2l0aW9ucyBpcyBmaWxsZWQuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBleGFtcGxlLCB0aGUgZnVuY3Rpb24gYE51bWJlck1hc2subWFzayguMTA6XCIjLiMjXCIpYCByZXR1cm5zIGAgLjEwYCBpbnN0ZWFkIG9mIGAgLjEgYFxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IFtsb29zZT10cnVlXSB3aGVuIHRydWUgLCBlcnJvcnMgd2lsbCBiZSBpZ25vcmVkIGFuZCB0aGUgbWV0aG9kIHdpbGwgdHJ5IGF0IGFwcGx5IHRoZSBtYXNrXG4gICAqICAgICAgICAgICAgICAgIGFueXdheSAsIG90aGVyd2lzZSBpdCB3aWxsIHN0b3AgYXQgZmlyc3QgZXJyb3IgYW5kIHRocm93IGl0LlxuICAgKiBcbiAgICogQHRocm93cyB7TWFza0Vycm9yfSBvbmx5IGlmIGxvb3NlIGlzIGRpc2FibGVkXG4gICAqIFxuICAgKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgbWFza2VkIG51bWJlclxuICAgKi9cbiAgc3RhdGljIG1hc2soXG4gICAgbnVtYmVyLFxuICAgIG1hc2ssXG4gICAgZ3JvdXBpbmdTZXBhcmF0b3IgPSAnLCcsXG4gICAgZGVjaW1hbFNlcGFyYXRvciA9ICcuJyxcbiAgICBmb3JjZVRyYWlsaW5nWmVyb3MgPSBmYWxzZSxcbiAgICBsb29zZSA9IHRydWVcbiAgKSB7XG4gICAgY29uc3QgbWFza0xlbiA9IG1hc2subGVuZ3RoXG4gICAgaWYgKDAgPT09IG1hc2tMZW4pIHtcbiAgICAgIGlmIChsb29zZSkgcmV0dXJuIHN0clxuICAgICAgLy8gZnJpZW5kbHkgc2lsZW50IGZhaWxcbiAgICAgIGVsc2VcbiAgICAgICAgdGhyb3cge1xuICAgICAgICAgIG5hbWU6ICdNYXNrRXJyb3InLFxuICAgICAgICAgIG1lc3NhZ2U6IGBNYXNrRXJyb3I6IE1hc2sgaXMgZW1wdHlgXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHZXQgbWFnbml0dWRlIGFuZCBwcmVjaXNpb24gb2YgTUFTS1xuICAgIGxldCBtYXNrQmVmb3JlRGVjaW1hbCA9IDBcbiAgICBsZXQgbWFza0FmdGVyRGVjaW1hbCA9IDBcbiAgICBsZXQgZm91bmREZWNpbWFsID0gZmFsc2VcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hc2tMZW47ICsraSkge1xuICAgICAgY29uc3QgbSA9IG1hc2suY2hhckF0KGkpXG4gICAgICBpZiAobSA9PSAnMCcgfHwgbSA9PSAnIycpIHtcbiAgICAgICAgaWYgKGZvdW5kRGVjaW1hbCkgKyttYXNrQWZ0ZXJEZWNpbWFsXG4gICAgICAgIGVsc2UgKyttYXNrQmVmb3JlRGVjaW1hbFxuICAgICAgfSBlbHNlIGlmIChtID09ICcuJykgZm91bmREZWNpbWFsID0gdHJ1ZVxuICAgIH1cblxuICAgIGxldCBudW0gPSBOdW1iZXJNYXNrLl9yb3VuZChudW1iZXIsIG1hc2tBZnRlckRlY2ltYWwpXG4gICAgbGV0IGJ5dGVzID0gTnVtYmVyTWFzay5fdG9DaGFyQXJyYXkobnVtKVxuXG4gICAgLy8gR2V0IG1hZ25pdHVkZSBhbmQgcHJlY2lzaW9uIG9mIE5VTUJFUlxuICAgIGxldCBpbkxlbiA9IGJ5dGVzLmxlbmd0aFxuICAgIGxldCBudW1CZWZvcmVEZWNpbWFsID0gMFxuICAgIGxldCBudW1BZnRlckRlY2ltYWwgPSAwXG4gICAgZm91bmREZWNpbWFsID0gZmFsc2VcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluTGVuOyArK2kpIHtcbiAgICAgIGlmIChieXRlc1tpXSA9PSAnLicpIGZvdW5kRGVjaW1hbCA9IHRydWVcbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAoZm91bmREZWNpbWFsKSArK251bUFmdGVyRGVjaW1hbFxuICAgICAgICBlbHNlICsrbnVtQmVmb3JlRGVjaW1hbFxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGFsd2F5cyBpZ25vcmUgbWFzayBvdmVyZmxvd1xuICAgIGlmIChudW1CZWZvcmVEZWNpbWFsID4gbWFza0JlZm9yZURlY2ltYWwpIHtcbiAgICAgIGlmIChsb29zZSkgcmV0dXJuIG51bWJlci50b1N0cmluZygpXG4gICAgICAvLyBmcmllbmRseSBzaWxlbnQgZmFpbFxuICAgICAgZWxzZVxuICAgICAgICB0aHJvdyB7XG4gICAgICAgICAgbmFtZTogJ01hc2tFcnJvcicsXG4gICAgICAgICAgbWVzc2FnZTogYE1hc2tFcnJvcjogTnVtYmVyIGlzIHRvbyBsYXJnZSBmb3IgbWFza2BcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHJvdW5kIGlmIG1hc2sgaXMgZm9yIGEgbG93ZXIgcHJlY2lzaW9uIG51bWJlclxuICAgIGlmIChudW1BZnRlckRlY2ltYWwgPiBtYXNrQWZ0ZXJEZWNpbWFsKSB7XG4gICAgICBudW0gPSBOdW1iZXJNYXNrLl9yb3VuZChudW0sIG1hc2tBZnRlckRlY2ltYWwpXG4gICAgICBieXRlcyA9IE51bWJlck1hc2suX3RvQ2hhckFycmF5KG51bSlcbiAgICAgIGluTGVuID0gYnl0ZXMubGVuZ3RoXG5cbiAgICAgIC8vIEdldCBuZXcgbWFnbml0dWRlIGFuZCBwcmVjaXNpb24gb2YgTlVNQkVSXG4gICAgICBudW1CZWZvcmVEZWNpbWFsID0gMFxuICAgICAgbnVtQWZ0ZXJEZWNpbWFsID0gMFxuICAgICAgZm91bmREZWNpbWFsID0gZmFsc2VcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5MZW47ICsraSkge1xuICAgICAgICBpZiAoYnl0ZXNbaV0gPT0gJy4nKSBmb3VuZERlY2ltYWwgPSB0cnVlXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmIChmb3VuZERlY2ltYWwpICsrbnVtQWZ0ZXJEZWNpbWFsXG4gICAgICAgICAgZWxzZSArK251bUJlZm9yZURlY2ltYWxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBhbHdheXMgaWdub3JlIG1hc2sgb3ZlcmZsb3dcbiAgICAgIGlmIChudW1CZWZvcmVEZWNpbWFsID4gbWFza0JlZm9yZURlY2ltYWwpIHtcbiAgICAgICAgaWYgKGxvb3NlKSByZXR1cm4gbnVtYmVyLnRvU3RyaW5nKClcbiAgICAgICAgLy8gZnJpZW5kbHkgc2lsZW50IGZhaWxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRocm93IHtcbiAgICAgICAgICAgIG5hbWU6ICdNYXNrRXJyb3InLFxuICAgICAgICAgICAgbWVzc2FnZTogYE1hc2tFcnJvcjogTnVtYmVyIGlzIHRvbyBsYXJnZSBmb3IgbWFza2BcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGZpbGxCeXRlID0gJyAnLFxuICAgICAgZmxvYXRCeXRlID0gJyAnXG4gICAgbGV0IGluUG9zID0gMCxcbiAgICAgIG91dFBvcyA9IDAsXG4gICAgICBmbG9hdFBvcyA9IDBcbiAgICBpZiAobWFzay5jaGFyQXQoMCkgPT0gJyonKSBmaWxsQnl0ZSA9ICcqJ1xuXG4gICAgY29uc3QgZmlsbEluaXQgPSBmaWxsQnl0ZVxuICAgIGNvbnN0IGlzTmVnYXRpdmUgPSBOdW1iZXJNYXNrLl9nZXRTaWduKG51bSkgPCAwXG4gICAgbGV0IGVtaXREZWNpbWFsID0gaW5MZW4gPiAwIHx8IG1hc2suaW5kZXhPZignMCcpID49IDBcbiAgICBsZXQgZm91bmRaZXJvID0gZmFsc2VcbiAgICBsZXQgZm91bmREaWdpdCA9IGZhbHNlXG4gICAgbGV0IGN1cnJlbmN5ID0gZmFsc2VcbiAgICBmb3VuZERlY2ltYWwgPSBmYWxzZVxuXG4gICAgbGV0IHJldCA9IG5ldyBBcnJheShtYXNrTGVuKVxuXG4gICAgZm9yIChsZXQgbWFza1BvcyA9IDA7IG1hc2tQb3MgPCBtYXNrTGVuOyArK21hc2tQb3MpIHtcbiAgICAgIGxldCBtID0gbWFzay5jaGFyQXQobWFza1BvcylcbiAgICAgIHN3aXRjaCAobSkge1xuICAgICAgICBjYXNlICcwJzpcbiAgICAgICAgICAtLW1hc2tCZWZvcmVEZWNpbWFsXG4gICAgICAgICAgaWYgKG1hc2tCZWZvcmVEZWNpbWFsIDwgbnVtQmVmb3JlRGVjaW1hbCAmJiBpblBvcyA8IGluTGVuKSB7XG4gICAgICAgICAgICByZXRbb3V0UG9zXSA9IGJ5dGVzW2luUG9zXVxuICAgICAgICAgICAgKytpblBvc1xuICAgICAgICAgICAgZm91bmREaWdpdCA9IHRydWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0W291dFBvc10gPSAnMCdcbiAgICAgICAgICAgIGZvdW5kWmVybyA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgICAgKytvdXRQb3NcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJyMnOlxuICAgICAgICAgIC0tbWFza0JlZm9yZURlY2ltYWxcbiAgICAgICAgICBpZiAobWFza0JlZm9yZURlY2ltYWwgPCBudW1CZWZvcmVEZWNpbWFsICYmIGluUG9zIDwgaW5MZW4pIHtcbiAgICAgICAgICAgIHJldFtvdXRQb3NdID0gYnl0ZXNbaW5Qb3NdXG4gICAgICAgICAgICArK2luUG9zXG4gICAgICAgICAgICBmb3VuZERpZ2l0ID0gdHJ1ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXRbb3V0UG9zXSA9XG4gICAgICAgICAgICAgIGZvdW5kRGVjaW1hbCAmJlxuICAgICAgICAgICAgICBmb3JjZVRyYWlsaW5nWmVyb3MgJiZcbiAgICAgICAgICAgICAgTnVtYmVyTWFzay5fZ2V0U2lnbihudW0pICE9IDBcbiAgICAgICAgICAgICAgICA/ICcwJ1xuICAgICAgICAgICAgICAgIDogZmlsbEJ5dGVcbiAgICAgICAgICAgIGlmICghZm91bmREZWNpbWFsKSBmbG9hdFBvcyA9IG1hc2tQb3NcbiAgICAgICAgICB9XG4gICAgICAgICAgKytvdXRQb3NcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJywnOlxuICAgICAgICAgIGlmIChmb3VuZFplcm8gfHwgaW5Qb3MgPiAwKSByZXRbb3V0UG9zXSA9IGdyb3VwaW5nU2VwYXJhdG9yXG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXRbb3V0UG9zXSA9IGZpbGxCeXRlXG4gICAgICAgICAgICBpZiAoIWZvdW5kRGVjaW1hbCkgZmxvYXRQb3MgPSBtYXNrUG9zXG4gICAgICAgICAgfVxuICAgICAgICAgICsrb3V0UG9zXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICctJzpcbiAgICAgICAgICBpZiAoIWZvdW5kRGlnaXQgJiYgZmxvYXRCeXRlID09ICcgJykge1xuICAgICAgICAgICAgaWYgKGlzTmVnYXRpdmUpIGZsb2F0Qnl0ZSA9ICctJ1xuICAgICAgICAgICAgcmV0W291dFBvc10gPSBmaWxsQnl0ZVxuICAgICAgICAgICAgZmxvYXRQb3MgPSBmb3VuZERlY2ltYWwgPyAtMSA6IG1hc2tQb3NcbiAgICAgICAgICB9IGVsc2UgcmV0W291dFBvc10gPSBpc05lZ2F0aXZlID8gJy0nIDogZmlsbEJ5dGVcbiAgICAgICAgICArK291dFBvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnKyc6XG4gICAgICAgICAgaWYgKCFmb3VuZERpZ2l0ICYmIGZsb2F0Qnl0ZSA9PSAnICcpIHtcbiAgICAgICAgICAgIGZsb2F0Qnl0ZSA9IGlzTmVnYXRpdmUgPyAnLScgOiAnKydcbiAgICAgICAgICAgIHJldFtvdXRQb3NdID0gZmlsbEJ5dGVcbiAgICAgICAgICAgIGZsb2F0UG9zID0gZm91bmREZWNpbWFsID8gLTEgOiBtYXNrUG9zXG4gICAgICAgICAgfSBlbHNlIHJldFtvdXRQb3NdID0gaXNOZWdhdGl2ZSA/ICctJyA6ICcrJ1xuICAgICAgICAgICsrb3V0UG9zXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICckJzpcbiAgICAgICAgICBpZiAoIWZvdW5kRGlnaXQgJiYgZmxvYXRCeXRlID09ICcgJykge1xuICAgICAgICAgICAgZmxvYXRCeXRlID0gJyQnXG4gICAgICAgICAgICByZXRbb3V0UG9zXSA9IGZpbGxCeXRlXG4gICAgICAgICAgICBmbG9hdFBvcyA9IGZvdW5kRGVjaW1hbCA/IC0xIDogbWFza1Bvc1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXRbb3V0UG9zXSA9ICckJ1xuICAgICAgICAgIH1cbiAgICAgICAgICArK291dFBvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgLy8gY2FzZSAnJic6XG4gICAgICAgIC8vICAgY3VycmVuY3kgPSB0cnVlXG4gICAgICAgIC8vICAgaWYgKCFmb3VuZERpZ2l0ICYmIGZsb2F0Qnl0ZSA9PSAnICcpIHtcbiAgICAgICAgLy8gICAgIGZsb2F0Qnl0ZSA9ICcmJ1xuICAgICAgICAvLyAgICAgcmV0W291dFBvc10gPSBmaWxsQnl0ZVxuICAgICAgICAvLyAgICAgZmxvYXRQb3MgPSBmb3VuZERlY2ltYWwgPyAtMSA6IG1hc2tQb3NcbiAgICAgICAgLy8gICB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgcmV0W291dFBvc10gPSAnJidcbiAgICAgICAgLy8gICB9XG4gICAgICAgIC8vICAgKytvdXRQb3NcbiAgICAgICAgLy8gICBicmVha1xuXG4gICAgICAgIC8vIGNhc2UgJ0AnOlxuICAgICAgICAvLyAgIGN1cnJlbmN5ID0gdHJ1ZVxuICAgICAgICAvLyAgIGlmICghZm91bmREaWdpdCAmJiBmbG9hdEJ5dGUgPT0gJyAnKSB7XG4gICAgICAgIC8vICAgICBmbG9hdEJ5dGUgPSAnQCdcbiAgICAgICAgLy8gICAgIHJldFtvdXRQb3NdID0gZmlsbEJ5dGVcbiAgICAgICAgLy8gICAgIGZsb2F0UG9zID0gZm91bmREZWNpbWFsID8gLTEgOiBtYXNrUG9zXG4gICAgICAgIC8vICAgfSBlbHNlIHtcbiAgICAgICAgLy8gICAgIHJldFtvdXRQb3NdID0gJ0AnXG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyAgICsrb3V0UG9zXG4gICAgICAgIC8vICAgYnJlYWtcblxuICAgICAgICBjYXNlICcoJzpcbiAgICAgICAgICBpZiAoIWZvdW5kRGlnaXQgJiYgZmxvYXRCeXRlID09ICcgJykge1xuICAgICAgICAgICAgaWYgKGlzTmVnYXRpdmUpIGZsb2F0Qnl0ZSA9ICcoJ1xuICAgICAgICAgICAgcmV0W291dFBvc10gPSBmaWxsQnl0ZVxuICAgICAgICAgICAgZmxvYXRQb3MgPSBmb3VuZERlY2ltYWwgPyAtMSA6IG1hc2tQb3NcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzTmVnYXRpdmUpIHtcbiAgICAgICAgICAgICAgcmV0W291dFBvc10gPSAnKCdcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldFtvdXRQb3NdID0gZm91bmREZWNpbWFsID8gJyAnIDogZmlsbEJ5dGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgKytvdXRQb3NcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJyknOlxuICAgICAgICAgIGlmIChpc05lZ2F0aXZlKSB7XG4gICAgICAgICAgICByZXRbb3V0UG9zXSA9ICcpJ1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXRbb3V0UG9zXSA9IGZvdW5kRGVjaW1hbCA/ICcgJyA6IGZpbGxCeXRlXG4gICAgICAgICAgfVxuICAgICAgICAgICsrb3V0UG9zXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICdDJzpcbiAgICAgICAgICBpZiAobWFza1BvcyA8IG1hc2tMZW4gLSAxICYmIG1hc2suY2hhckF0KG1hc2tQb3MgKyAxKSA9PSAnUicpIHtcbiAgICAgICAgICAgIGlmIChpc05lZ2F0aXZlKSB7XG4gICAgICAgICAgICAgIHJldFtvdXRQb3NdID0gJ0MnXG4gICAgICAgICAgICAgIHJldFtvdXRQb3MgKyAxXSA9ICdSJ1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0W291dFBvc10gPSAnICdcbiAgICAgICAgICAgICAgcmV0W291dFBvcyArIDFdID0gJyAnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXRQb3MgKz0gMlxuICAgICAgICAgICAgKyttYXNrUG9zXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldFtvdXRQb3NdID0gJ0MnXG4gICAgICAgICAgICArK291dFBvc1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICBpZiAobWFza1BvcyA8IG1hc2tMZW4gLSAxICYmIG1hc2suY2hhckF0KG1hc2tQb3MgKyAxKSA9PSAnUicpIHtcbiAgICAgICAgICAgIGlmIChpc05lZ2F0aXZlKSB7XG4gICAgICAgICAgICAgIHJldFtvdXRQb3NdID0gJ0MnXG4gICAgICAgICAgICAgIHJldFtvdXRQb3MgKyAxXSA9ICdSJ1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0W291dFBvc10gPSAnRCdcbiAgICAgICAgICAgICAgcmV0W291dFBvcyArIDFdID0gJ1InXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXRQb3MgKz0gMlxuICAgICAgICAgICAgKyttYXNrUG9zXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldFtvdXRQb3NdID0gJ0QnXG4gICAgICAgICAgICArK291dFBvc1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJyonOlxuICAgICAgICAgIHJldFtvdXRQb3NdID0gJyonXG4gICAgICAgICAgKytvdXRQb3NcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJy4nOlxuICAgICAgICAgIHJldFtvdXRQb3NdID0gZW1pdERlY2ltYWwgPyBkZWNpbWFsU2VwYXJhdG9yIDogZmlsbEJ5dGVcbiAgICAgICAgICBmaWxsQnl0ZSA9ICcgJ1xuICAgICAgICAgIGZvdW5kRGVjaW1hbCA9IHRydWVcbiAgICAgICAgICArK2luUG9zXG4gICAgICAgICAgKytvdXRQb3NcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJ0InOlxuICAgICAgICAgIHJldFtvdXRQb3NdID0gJyAnXG4gICAgICAgICAgKytvdXRQb3NcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0W291dFBvc10gPSBtXG4gICAgICAgICAgKytvdXRQb3NcbiAgICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmbG9hdEJ5dGUgIT0gJyAnKSB7XG4gICAgICBpZiAoZmxvYXRQb3MgPCAwKSBmbG9hdFBvcyA9IG91dFBvc1xuICAgICAgd2hpbGUgKGZsb2F0UG9zID49IG1hc2tMZW4pIC0tZmxvYXRQb3NcbiAgICAgIGlmIChyZXRbZmxvYXRQb3NdID09IGZpbGxJbml0KSByZXRbZmxvYXRQb3NdID0gZmxvYXRCeXRlXG4gICAgfVxuXG4gICAgcmV0dXJuIHJldC5qb2luKCcnKVxuICB9XG5cbiAgc3RhdGljIF9zaGlmdChudW1iZXIsIHByZWNpc2lvbiwgcmV2ZXJzZVNoaWZ0KSB7XG4gICAgaWYgKHJldmVyc2VTaGlmdCkgcHJlY2lzaW9uID0gLXByZWNpc2lvblxuICAgIHZhciBudW1BcnJheSA9ICgnJyArIG51bWJlcikuc3BsaXQoJ2UnKVxuICAgIHJldHVybiArKFxuICAgICAgbnVtQXJyYXlbMF0gK1xuICAgICAgJ2UnICtcbiAgICAgIChudW1BcnJheVsxXSA/ICtudW1BcnJheVsxXSArIHByZWNpc2lvbiA6IHByZWNpc2lvbilcbiAgICApXG4gIH1cblxuICBzdGF0aWMgX3JvdW5kKG51bWJlciwgcHJlY2lzaW9uKSB7XG4gICAgcmV0dXJuIE51bWJlck1hc2suX3NoaWZ0KFxuICAgICAgTWF0aC5yb3VuZChOdW1iZXJNYXNrLl9zaGlmdChudW1iZXIsIHByZWNpc2lvbiwgZmFsc2UpKSxcbiAgICAgIHByZWNpc2lvbixcbiAgICAgIHRydWVcbiAgICApXG4gIH1cblxuICBzdGF0aWMgX3RvQ2hhckFycmF5KG51bWJlcikge1xuICAgIGNvbnN0IHNpZ251bSA9IE51bWJlck1hc2suX2dldFNpZ24obnVtYmVyKVxuICAgIGxldCBjaGFycyA9IFtdXG5cbiAgICBpZiAoc2lnbnVtICE9PSAwKSB7XG4gICAgICBsZXQgc3RyaW5nID0gc2lnbnVtIDwgMCA/IGAkey0xICogbnVtYmVyLnRvU3RyaW5nKCl9YCA6IG51bWJlci50b1N0cmluZygpXG5cbiAgICAgIGlmIChzdHJpbmcubGVuZ3RoID4gMSAmJiBzdHJpbmcuY2hhckF0KDApID09ICcwJylcbiAgICAgICAgc3RyaW5nID0gc3RyaW5nLnN1YnN0cmluZygxKVxuXG4gICAgICAvLyBUaGUgc3RyaW5nIGNvbnRhaW5zIG9ubHkgWzAtOV0gYW5kICcuJ1xuICAgICAgY2hhcnMgPSBzdHJpbmcuc3BsaXQoJycpXG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYXJzXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2lnbiBvZiBhIG51bWJlclxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0geCBudW1iZXJcbiAgICogQHJldHVybnMge051bWJlcn0gQSBudW1iZXIgcmVwcmVzZW50aW5nIHRoZSBzaWduIG9mIHRoZSBnaXZlbiBhcmd1bWVudC5cbiAgICogICAgICAgICAgICAgICAgICAgSWYgdGhlIGFyZ3VtZW50IGlzIGEgcG9zaXRpdmUgbnVtYmVyLCBuZWdhdGl2ZSBudW1iZXIsIHBvc2l0aXZlIHplcm9cbiAgICogICAgICAgICAgICAgICAgICAgb3IgbmVnYXRpdmUgemVybywgdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIDEsIC0xLCAwIG9yIC0wIHJlc3BlY3RpdmVseS5cbiAgICogICAgICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCBOYU4gaXMgcmV0dXJuZWQuXG4gICAqL1xuICBzdGF0aWMgX2dldFNpZ24oeCkge1xuICAgIHJldHVybiAoeCA+IDApIC0gKHggPCAwKSB8fCAreFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE51bWJlck1hc2tcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9OdW1iZXJNYXNrL051bWJlck1hc2suanMiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmJqLW1hc2tzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IHV0Y1RvWm9uZWRUaW1lIGZyb20gJ2RhdGUtZm5zLXR6L3V0Y1RvWm9uZWRUaW1lJ1xuaW1wb3J0IHsgZ2V0V2Vla1N0YXJ0QnlMb2NhbGUgYXMgb3JpZ2luYWxHZXRXZWVrU3RhcnRCeUxvY2FsZSB9IGZyb20gJ3dlZWtzdGFydCdcblxuZXhwb3J0IGNvbnN0IElTX1RJTUVfUkVHRVggPSAvXigyWzAtM118WzAxXVswLTldKTo/KFswLTVdWzAtOV0pOj8oWzAtNV1bMC05XSkoWnxbKy1dKD86MlswLTNdfFswMV1bMC05XSkoPzo6Pyg/OlswLTVdWzAtOV0pKT8pJC9cbmV4cG9ydCBjb25zdCBJU19EQVRFX1JFR0VYID0gL14oKFsxMl1cXGR7M30pLSgwWzEtOV18MVswLTJdKS0oMFsxLTldfFsxMl1cXGR8M1swMV0pKFp8WystXSg/OjJbMC0zXXxbMDFdWzAtOV0pKD86Oj8oPzpbMC01XVswLTldKSk/KSkkL1xuXG4vKipcbiAqIEZpbmQgb3V0IHdoZW4gdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayBiYXNlZCBvbiB0aGUgcGFzc2VkIGxvY2FsZVxuICpcbiAqIEBwYXJhbSB7bG9jYWxlfSBsb2NhbGVcbiAqXG4gKiBAcmV0dXJuIHtOdW1iZXJ9IGEgbnVtYmVyIDAgPSBzdW5kYXkgLCAxID0gbW9uZGF5ICwgLi4uLlxuICovXG5leHBvcnQgY29uc3QgZ2V0V2Vla1N0YXJ0QnlMb2NhbGUgPSBsb2NhbGUgPT4ge1xuICByZXR1cm4gb3JpZ2luYWxHZXRXZWVrU3RhcnRCeUxvY2FsZShsb2NhbGUpXG59XG5cbi8qKlxuICogIEdldCBkYXkgbnVtYmVyIGluIHRoZSB5ZWFyIG9mIHRoZSBwYXNzZWQgZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZX0gZGF0ZVxuICpcbiAqIEByZXR1cm4ge051bWJlcn0gZGF5IG51bWJlclxuICovXG5leHBvcnQgY29uc3QgZ2V0RGF5T2ZZZWFyID0gZGF0ZSA9PiB7XG4gIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCAwLCAwKVxuXG4gIGNvbnN0IGRpZmYgPVxuICAgIGRhdGUgLVxuICAgIHN0YXJ0ICtcbiAgICAoc3RhcnQuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSkgKiA2MCAqIDEwMDBcbiAgY29uc3Qgb25lRGF5ID0gMTAwMCAqIDYwICogNjAgKiAyNFxuICBjb25zdCBkYXkgPSBNYXRoLmZsb29yKGRpZmYgLyBvbmVEYXkpXG5cbiAgcmV0dXJuIGRheVxufVxuXG4vKipcbiAqIFRha2VzIGluY29tcGxldGUgaXNvIHN0cmluZyBhbmQgcmV0dXJuIGEgY29tcGxldGUgb25lXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGRhdGUgaW5jb21wbGV0ZSBpc28gc3RyaW5nXG4gKlxuICogQHJldHVybiB7U3RyaW5nfSBjb21wbGV0ZSBpc28gc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCBmaXhTaG9ydElTTyA9IGRhdGUgPT4ge1xuICBsZXQgdmFsdWUgPSBkYXRlXG4gIGxldCBvZmZzZXQgPSAodmFsdWUubWF0Y2goL3okfFsrXFwtXVxcZFxcZDpcXGRcXGQkL2kpIHx8IFtdKVswXVxuICBpZiAoIW9mZnNldCkge1xuICAgIG9mZnNldCA9ICdaJ1xuICAgIHZhbHVlICs9IG9mZnNldFxuICB9XG5cbiAgaWYgKElTX1RJTUVfUkVHRVgudGVzdCh2YWx1ZSkpIHtcbiAgICB2YWx1ZSA9IGAxOTcwLTAxLTAxVCR7dmFsdWV9YFxuICB9IGVsc2UgaWYgKElTX0RBVEVfUkVHRVgudGVzdCh2YWx1ZSkpIHtcbiAgICB2YWx1ZSA9IGAke3ZhbHVlLnNwbGl0KG9mZnNldClbMF19VDAwOjAwOjAwJHtvZmZzZXR9YFxuICB9XG5cbiAgcmV0dXJuIHZhbHVlXG59XG5cbi8qKlxuICogR2V0IHRoZSBicm93c2VyIHRpbWV6b25lIG5hbWUgLCBpZiBub3Qgc3VwcG9ydGVkIHRoZW4gdGhlIGJyb3dzZXJcbiAqIHRpbWV6b25lIG9mZnNldCBmb3JtYXR0ZWRcbiAqXG4gKiBAcmV0dXJuIHtTdHJpbmd9IHRpbWV6b25lIG9mIG9mZnNldFxuICovXG5leHBvcnQgY29uc3QgZ2V0VGltZXpvbmVPck9mZnNldCA9ICgpID0+IHtcbiAgY29uc3QgdGltZXpvbmUgPSBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmVcbiAgaWYgKCF0aW1lem9uZSkge1xuICAgIGNvbnN0IHBhZCA9IChudW1iZXIsIGxlbmd0aCkgPT4ge1xuICAgICAgdmFyIHN0ciA9ICcnICsgbnVtYmVyXG4gICAgICB3aGlsZSAoc3RyLmxlbmd0aCA8IGxlbmd0aCkge1xuICAgICAgICBzdHIgPSAnMCcgKyBzdHJcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHJcbiAgICB9XG5cbiAgICBsZXQgb2Zmc2V0ID0gbmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpXG4gICAgb2Zmc2V0ID1cbiAgICAgIChvZmZzZXQgPCAwID8gJysnIDogJy0nKSArIC8vIE5vdGUgdGhlIHJldmVyc2VkIHNpZ24hXG4gICAgICBwYWQocGFyc2VJbnQoTWF0aC5hYnMob2Zmc2V0IC8gNjApKSwgMikgK1xuICAgICAgcGFkKE1hdGguYWJzKG9mZnNldCAlIDYwKSwgMilcblxuICAgIHJldHVybiBvZmZzZXRcbiAgfVxuXG4gIHJldHVybiB0aW1lem9uZVxufVxuXG4vKipcbiAqIEdldCB0aGUgV2VlayBOdW1iZXIgaW4gdGhlIHBhc3NlZCBkYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfSBkYXRlIC0gRGF0ZSBvYmplY3RcbiAqIEBwYXJhbSB7TnVtYmVyfSB3ZWVrU3RhcnQgQSBudW1iZXIgd2hpY2ggZGVmaW5lcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwICA9IHN1bmRheSAsIDEgPSBtb25kYXkgLCAuLi4pXG4gKlxuICogQHJldHVybnMge051bWJlcn0gdGhlIHdlZWsgbnVtYmVyXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRXZWVrTnVtYmVyID0gZnVuY3Rpb24oZGF0ZSwgd2Vla1N0YXJ0KSB7XG4gIGNvbnN0IGQgPSBuZXcgRGF0ZShcbiAgICBEYXRlLlVUQyhkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpXG4gIClcbiAgY29uc3QgZGF5TnVtID0gZC5nZXRVVENEYXkoKSAtICh3ZWVrU3RhcnQgLSAxKSB8fCA3XG4gIGQuc2V0VVRDRGF0ZShkLmdldFVUQ0RhdGUoKSArIDQgLSBkYXlOdW0pXG4gIGNvbnN0IHllYXJTdGFydCA9IG5ldyBEYXRlKERhdGUuVVRDKGQuZ2V0VVRDRnVsbFllYXIoKSwgMCwgMSkpXG4gIHJldHVybiBNYXRoLmNlaWwoKChkIC0geWVhclN0YXJ0KSAvIDg2NDAwMDAwICsgMSkgLyA3KVxufVxuXG4vKipcbiAqIERhdGVNYXNrXG4gKlxuICogQSBqYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIGZvciBCQmogZGF0ZXMgbWFza2luZ1xuICpcbiAqIEBhdXRob3IgSHl5YW4gQWJvIEZha2hlciA8aGFib2Zha2hlckBiYXNpcy5jb20+XG4gKi9cbmNsYXNzIERhdGVNYXNrIHtcbiAgLyoqXG4gICAqIE1hc2sgZGF0ZVxuICAgKlxuICAgKiBNYXNrIHRoZSBwYXNzZWQgZGF0ZSB3aXRoIHRoZSBwYXNzZWQgbWFza1xuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gZGF0ZSBkYXRlIGFzIGEgc3RyaW5nXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtYXNrIG1hc2sgYXMgYSBzdHJpbmdcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtsb2NhbGU9QnJvd3NlcidzIGxvY2FsZV0gdGhlIGxhbmd1YWdlIHRvIHVzZSBleChlbi1VUykuIGRlZmF1bHQgaXMgdG8gdGhlIHN5c3RlbSBsYW5ndWFnZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW3RpbWV6b25lPVN5c3RlbSB0aW1lem9uZV0gdGhlIHRpbWUgem9uZSBkZXNjcmlwdG9yIChlLmcuIEFtZXJpY2EvTG9zX0FuZ2VsZXMpLiBkZWZhdWx0IHRvIHRoZSBzeXN0ZW1cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWV6b25lXG4gICAqXG4gICAqIEByZXR1cm4ge1N0cmluZ30gYSBkYXRlIG1hc2tlZCB3aXRoIHRoZSBnaXZlbiBtYXNrXG4gICAqL1xuICBzdGF0aWMgbWFzayhkYXRlLCBtYXNrLCBsb2NhbGUsIHRpbWV6b25lKSB7XG4gICAgaWYgKCFkYXRlKSByZXR1cm4gJydcbiAgICBpZiAoIW1hc2spIHJldHVybiBkYXRlXG5cbiAgICB0aW1lem9uZSA9IHRpbWV6b25lIHx8IGdldFRpbWV6b25lT3JPZmZzZXQoKVxuICAgIGxvY2FsZSA9IGxvY2FsZSB8fCBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlIHx8ICdlbi1VUydcblxuICAgIC8vIG1ha2Ugc3VyZSB3ZSBoYXZlIGEgY29tcGxldGUgaXNvIHN0cmluZ1xuICAgIGRhdGUgPSBkYXRlIGluc3RhbmNlb2YgRGF0ZSA/IGRhdGUgOiBmaXhTaG9ydElTTyhkYXRlKVxuXG4gICAgY29uc3QgZGF0ZU9iamVjdCA9IHV0Y1RvWm9uZWRUaW1lKGRhdGUsIHRpbWV6b25lKVxuICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gRGF0ZU1hc2suX2J1aWxkVHJhbnNsYXRpb24oe1xuICAgICAgeWVhcjogZGF0ZU9iamVjdC5nZXRGdWxsWWVhcigpLFxuICAgICAgbW9udGg6IGRhdGVPYmplY3QuZ2V0TW9udGgoKSArIDEsXG4gICAgICBtb250aFNob3J0OiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChbbG9jYWxlXSwgeyBtb250aDogJ3Nob3J0JyB9KS5mb3JtYXQoXG4gICAgICAgIGRhdGVPYmplY3RcbiAgICAgICksXG4gICAgICBtb250aExvbmc6IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFtsb2NhbGVdLCB7IG1vbnRoOiAnbG9uZycgfSkuZm9ybWF0KFxuICAgICAgICBkYXRlT2JqZWN0XG4gICAgICApLFxuICAgICAgZGF5OiBkYXRlT2JqZWN0LmdldERhdGUoKSxcbiAgICAgIGRheVNob3J0OiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChbbG9jYWxlXSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pLmZvcm1hdChcbiAgICAgICAgZGF0ZU9iamVjdFxuICAgICAgKSxcbiAgICAgIGRheUxvbmc6IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFtsb2NhbGVdLCB7IHdlZWtkYXk6ICdsb25nJyB9KS5mb3JtYXQoXG4gICAgICAgIGRhdGVPYmplY3RcbiAgICAgICksXG4gICAgICBtaW51dGVzOiBkYXRlT2JqZWN0LmdldE1pbnV0ZXMoKSxcbiAgICAgIHNlY29uZHM6IGRhdGVPYmplY3QuZ2V0U2Vjb25kcygpLFxuICAgICAgZ2V0IGhvdXJzMjQoKSB7XG4gICAgICAgIHJldHVybiBkYXRlT2JqZWN0LmdldEhvdXJzKClcbiAgICAgIH0sXG4gICAgICBnZXQgaG91cnMxMigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG91cnMyNCAlIDEyIHx8IDEyXG4gICAgICB9LFxuICAgICAgZGF5T2ZZZWFyOiBnZXREYXlPZlllYXIoZGF0ZU9iamVjdCksXG4gICAgICBkYXlPZldlZWs6IGRhdGVPYmplY3QuZ2V0RGF5KCkgKyAxLCAvLyBTdW5kYXkgPSAxIGluIEJCaiBidXQgU3VuZGF5ID0gMCBpbiBKU1xuICAgICAgd2Vla051bWJlcjogZ2V0V2Vla051bWJlcihkYXRlT2JqZWN0LCBnZXRXZWVrU3RhcnRCeUxvY2FsZShsb2NhbGUpKSxcbiAgICAgIGxvY2FsZSxcbiAgICAgIHRpbWV6b25lXG4gICAgfSlcblxuICAgIGxldCByZXN1bHQgPSBtYXNrXG4gICAgZm9yICh2YXIgayBpbiB0cmFuc2xhdGlvbikge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UobmV3IFJlZ0V4cCgnKCUnICsgayArICcpJywgJ2cnKSwgdHJhbnNsYXRpb25ba10pXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIG1hcCBvYmplY3Qgd2hpY2ggY29udGFpbnMgYWxsIHBvc3NpYmxlIGZvcm1zIG9mIG1hc2tzXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRlRGV0YWlscyBkYXRlXG4gICAqXG4gICAqIEByZXR1cm4ge09iamVjdH0gZm9ybXMgbWFza3NcbiAgICovXG4gIHN0YXRpYyBfYnVpbGRUcmFuc2xhdGlvbihkYXRlRGV0YWlscykge1xuICAgIHJldHVybiB7XG4gICAgICAvLyB5ZWFyXG4gICAgICBZejogZGF0ZURldGFpbHMueWVhci50b1N0cmluZygpLnN1YnN0cigtMiksXG4gICAgICBZczogZGF0ZURldGFpbHMueWVhcixcbiAgICAgIFlsOiBkYXRlRGV0YWlscy55ZWFyLFxuICAgICAgWXA6IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0ZURldGFpbHMueWVhciksXG4gICAgICBZZDogZGF0ZURldGFpbHMueWVhcixcbiAgICAgIFk6IGRhdGVEZXRhaWxzLnllYXIsXG5cbiAgICAgIC8vIG1vbnRoXG4gICAgICBNejpcbiAgICAgICAgU3RyaW5nKGRhdGVEZXRhaWxzLm1vbnRoKS5sZW5ndGggPT0gMVxuICAgICAgICAgID8gJzAnICsgZGF0ZURldGFpbHMubW9udGhcbiAgICAgICAgICA6IGRhdGVEZXRhaWxzLm1vbnRoLFxuICAgICAgTXM6IGRhdGVEZXRhaWxzLm1vbnRoU2hvcnQsXG4gICAgICBNbDogZGF0ZURldGFpbHMubW9udGhMb25nLFxuICAgICAgTXA6IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0ZURldGFpbHMubW9udGgpLFxuICAgICAgTWQ6IGRhdGVEZXRhaWxzLm1vbnRoLFxuICAgICAgTTogZGF0ZURldGFpbHMubW9udGgsXG5cbiAgICAgIC8vIGRheVxuICAgICAgRHo6XG4gICAgICAgIFN0cmluZyhkYXRlRGV0YWlscy5kYXkpLmxlbmd0aCA9PSAxXG4gICAgICAgICAgPyAnMCcgKyBkYXRlRGV0YWlscy5kYXlcbiAgICAgICAgICA6IGRhdGVEZXRhaWxzLmRheSxcbiAgICAgIERzOiBkYXRlRGV0YWlscy5kYXlTaG9ydCxcbiAgICAgIERsOiBkYXRlRGV0YWlscy5kYXlMb25nLFxuICAgICAgRHA6IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0ZURldGFpbHMuZGF5KSxcbiAgICAgIERkOiBkYXRlRGV0YWlscy5kYXksXG4gICAgICBEOiBkYXRlRGV0YWlscy5kYXksXG5cbiAgICAgIC8vIGhvdXIgMjRcbiAgICAgIEh6OlxuICAgICAgICBTdHJpbmcoZGF0ZURldGFpbHMuaG91cnMyNCkubGVuZ3RoID09IDFcbiAgICAgICAgICA/ICcwJyArIGRhdGVEZXRhaWxzLmhvdXJzMjRcbiAgICAgICAgICA6IGRhdGVEZXRhaWxzLmhvdXJzMjQsXG4gICAgICBIczogZGF0ZURldGFpbHMuaG91cnMyNCxcbiAgICAgIEhsOiBkYXRlRGV0YWlscy5ob3VyczI0LFxuICAgICAgSHA6IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0ZURldGFpbHMuaG91cnMyNCksXG4gICAgICBIZDogZGF0ZURldGFpbHMuaG91cnMyNCxcbiAgICAgIEg6IGRhdGVEZXRhaWxzLmhvdXJzMjQsXG5cbiAgICAgIC8vIGhvdXIgMTJcbiAgICAgIGh6OlxuICAgICAgICBTdHJpbmcoZGF0ZURldGFpbHMuaG91cnMxMikubGVuZ3RoID09IDFcbiAgICAgICAgICA/ICcwJyArIGRhdGVEZXRhaWxzLmhvdXJzMTJcbiAgICAgICAgICA6IGRhdGVEZXRhaWxzLmhvdXJzMTIsXG4gICAgICBoczogZGF0ZURldGFpbHMuaG91cnMxMixcbiAgICAgIGhsOiBkYXRlRGV0YWlscy5ob3VyczEyLFxuICAgICAgaHA6IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0ZURldGFpbHMuaG91cnMxMiksXG4gICAgICBoZDogZGF0ZURldGFpbHMuaG91cnMxMixcbiAgICAgIGg6IGRhdGVEZXRhaWxzLmhvdXJzMTIsXG5cbiAgICAgIC8vIG1pbnV0ZXNcbiAgICAgIG16OlxuICAgICAgICBTdHJpbmcoZGF0ZURldGFpbHMubWludXRlcykubGVuZ3RoID09IDFcbiAgICAgICAgICA/ICcwJyArIGRhdGVEZXRhaWxzLm1pbnV0ZXNcbiAgICAgICAgICA6IGRhdGVEZXRhaWxzLm1pbnV0ZXMsXG4gICAgICBtczogZGF0ZURldGFpbHMubWludXRlcyxcbiAgICAgIG1sOiBkYXRlRGV0YWlscy5taW51dGVzLFxuICAgICAgbXA6IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0ZURldGFpbHMubWludXRlcyksXG4gICAgICBtZDogZGF0ZURldGFpbHMubWludXRlcyxcbiAgICAgIG06IGRhdGVEZXRhaWxzLm1pbnV0ZXMsXG5cbiAgICAgIC8vIHNlY29uZHNcbiAgICAgIHN6OlxuICAgICAgICBTdHJpbmcoZGF0ZURldGFpbHMuc2Vjb25kcykubGVuZ3RoID09IDFcbiAgICAgICAgICA/ICcwJyArIGRhdGVEZXRhaWxzLnNlY29uZHNcbiAgICAgICAgICA6IGRhdGVEZXRhaWxzLnNlY29uZHMsXG4gICAgICBzczogZGF0ZURldGFpbHMuc2Vjb25kcyxcbiAgICAgIHNsOiBkYXRlRGV0YWlscy5zZWNvbmRzLFxuICAgICAgc3A6IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0ZURldGFpbHMuc2Vjb25kcyksXG4gICAgICBzZDogZGF0ZURldGFpbHMuc2Vjb25kcyxcbiAgICAgIHM6IGRhdGVEZXRhaWxzLnNlY29uZHMsXG5cbiAgICAgIC8vIEFNICwgUE1cbiAgICAgIFBQOiBkYXRlRGV0YWlscy5ob3VyczI0ID4gMTIgPyAnUE0nIDogJ1BNJyxcbiAgICAgIFA6IGRhdGVEZXRhaWxzLmhvdXJzMjQgPiAxMiA/ICdQTScgOiAnQU0nLFxuICAgICAgcHA6IGRhdGVEZXRhaWxzLmhvdXJzMjQgPiAxMiA/ICdwbScgOiAnYW0nLFxuICAgICAgcDogZGF0ZURldGFpbHMuaG91cnMyNCA+IDEyID8gJ3BtJyA6ICdhbScsXG5cbiAgICAgIC8vIERheSBvZiBZZWFyXG4gICAgICBKejpcbiAgICAgICAgU3RyaW5nKGRhdGVEZXRhaWxzLmRheU9mWWVhcikubGVuZ3RoID09IDFcbiAgICAgICAgICA/ICcwJyArIGRhdGVEZXRhaWxzLmRheU9mWWVhclxuICAgICAgICAgIDogZGF0ZURldGFpbHMuZGF5T2ZZZWFyLFxuICAgICAgSnM6IGRhdGVEZXRhaWxzLmRheU9mWWVhcixcbiAgICAgIEpsOiBkYXRlRGV0YWlscy5kYXlPZlllYXIsXG4gICAgICBKZDogZGF0ZURldGFpbHMuZGF5T2ZZZWFyLFxuICAgICAgSjogZGF0ZURldGFpbHMuZGF5T2ZZZWFyLFxuXG4gICAgICAvLyBEYXkgT2YgV2Vla1xuICAgICAgV3o6XG4gICAgICAgIFN0cmluZyhkYXRlRGV0YWlscy5kYXlPZldlZWspLmxlbmd0aCA9PSAxXG4gICAgICAgICAgPyAnMCcgKyBkYXRlRGV0YWlscy5kYXlPZldlZWtcbiAgICAgICAgICA6IGRhdGVEZXRhaWxzLmRheU9mV2VlayxcbiAgICAgIFdzOiBkYXRlRGV0YWlscy5kYXlPZldlZWssXG4gICAgICBXbDogZGF0ZURldGFpbHMuZGF5T2ZXZWVrLFxuICAgICAgV3A6IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0ZURldGFpbHMuZGF5T2ZXZWVrKSxcbiAgICAgIFdkOiBkYXRlRGV0YWlscy5kYXlPZldlZWssXG4gICAgICBXOiBkYXRlRGV0YWlscy5kYXlPZldlZWssXG5cbiAgICAgIC8vIHdlZWsgbnVtYmVyXG4gICAgICB3ejpcbiAgICAgICAgU3RyaW5nKGRhdGVEZXRhaWxzLndlZWtOdW1iZXIpLmxlbmd0aCA9PSAxXG4gICAgICAgICAgPyAnMCcgKyBkYXRlRGV0YWlscy53ZWVrTnVtYmVyXG4gICAgICAgICAgOiBkYXRlRGV0YWlscy53ZWVrTnVtYmVyLFxuICAgICAgd3M6IGRhdGVEZXRhaWxzLndlZWtOdW1iZXIsXG4gICAgICB3bDogZGF0ZURldGFpbHMud2Vla051bWJlcixcbiAgICAgIHdwOiBTdHJpbmcuZnJvbUNoYXJDb2RlKGRhdGVEZXRhaWxzLndlZWtOdW1iZXIpLFxuICAgICAgd2Q6IGRhdGVEZXRhaWxzLndlZWtOdW1iZXIsXG4gICAgICB3OiBkYXRlRGV0YWlscy53ZWVrTnVtYmVyXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IERhdGVNYXNrXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvRGF0ZU1hc2svRGF0ZU1hc2suanMiLCJpbXBvcnQgeyBnZXRXZWVrU3RhcnRCeVJlZ2lvbiwgZ2V0V2Vla1N0YXJ0QnlMb2NhbGUgfSBmcm9tICcuL2FwaS5qcyc7XG5pbXBvcnQgbGFuZ1JlZ2lvbk1hcCBmcm9tICcuL2xhbmdSZWdpb25NYXAuanMnO1xuaW1wb3J0IHJlZ2lvbkRheU1hcCBmcm9tICcuL3JlZ2lvbkRheU1hcC5qcyc7XG5cbmZ1bmN0aW9uIGdldFdlZWtTdGFydEJ5UmVnaW9uJDEocmVnaW9uQ29kZSkge1xuICAgIHJldHVybiBnZXRXZWVrU3RhcnRCeVJlZ2lvbihyZWdpb25Db2RlLCByZWdpb25EYXlNYXApO1xufVxuXG5mdW5jdGlvbiBnZXRXZWVrU3RhcnRCeUxvY2FsZSQxKGxvY2FsZSkge1xuICAgIHJldHVybiBnZXRXZWVrU3RhcnRCeUxvY2FsZShsb2NhbGUsIGxhbmdSZWdpb25NYXAsIHJlZ2lvbkRheU1hcCk7XG59XG5cbmV4cG9ydCB7IGdldFdlZWtTdGFydEJ5UmVnaW9uJDEgYXMgZ2V0V2Vla1N0YXJ0QnlSZWdpb24sIGdldFdlZWtTdGFydEJ5TG9jYWxlJDEgYXMgZ2V0V2Vla1N0YXJ0QnlMb2NhbGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1haW4uanMubWFwXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy93ZWVrc3RhcnQvZGlzdC9lcy1tb2R1bGUvbWFpbi5qc1xuLy8gbW9kdWxlIGlkID0gMTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEiLCJmdW5jdGlvbiBnZXRXZWVrU3RhcnRCeVJlZ2lvbihyZWdpb25Db2RlLCByZWdpb25EYXlNYXApIHtcbiAgICB2YXIgY29kZSA9IHJlZ2lvbkRheU1hcFt0eXBlb2YgcmVnaW9uQ29kZSA9PT0gJ3N0cmluZycgPyByZWdpb25Db2RlLnRvVXBwZXJDYXNlKCkgOiByZWdpb25Db2RlXTtcbiAgICByZXR1cm4gdHlwZW9mIGNvZGUgPT09ICdudW1iZXInID8gY29kZSA6IDE7XG59XG5cbmZ1bmN0aW9uIGdldFdlZWtTdGFydEJ5TG9jYWxlKGxvY2FsZSwgbGFuZ1JlZ2lvbk1hcCwgcmVnaW9uRGF5TWFwKSB7XG4gICAgaWYgKGxvY2FsZSkge1xuICAgICAgICB2YXIgZGF0YSA9IGxvY2FsZS50b0xvd2VyQ2FzZSgpLnNwbGl0KC9bLV9dLyk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IGRhdGFbMF07XG4gICAgICAgIHZhciBjb3VudHJ5O1xuICAgICAgICBpZiAoZGF0YVsxXSAmJiBkYXRhWzFdLmxlbmd0aCA9PT0gNCkge1xuICAgICAgICAgICAgbGFuZ3VhZ2UgKz0gXCJfXCIgKyAoZGF0YVsxXSk7XG4gICAgICAgICAgICBjb3VudHJ5ID0gZGF0YVsyXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvdW50cnkgPSBkYXRhWzFdO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY291bnRyeSkge1xuICAgICAgICAgICAgY291bnRyeSA9IGxhbmdSZWdpb25NYXBbbGFuZ3VhZ2VdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb3VudHJ5KSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0V2Vla1N0YXJ0QnlSZWdpb24oY291bnRyeS5tYXRjaCgvXlxcZCskLykgPyBOdW1iZXIoY291bnRyeSkgOiBjb3VudHJ5LCByZWdpb25EYXlNYXApO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAxO1xufVxuXG5leHBvcnQgeyBnZXRXZWVrU3RhcnRCeVJlZ2lvbiwgZ2V0V2Vla1N0YXJ0QnlMb2NhbGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFwaS5qcy5tYXBcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3dlZWtzdGFydC9kaXN0L2VzLW1vZHVsZS9hcGkuanNcbi8vIG1vZHVsZSBpZCA9IDE2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIiwidmFyIGxhbmdSZWdpb25NYXAgPSB7XG4gICAgZW46ICdVUycsXG4gICAgemg6ICdDTicsXG4gICAgemhfaGFuczogJ0NOJyxcbiAgICBoYW5zOiAnQ04nLFxuICAgIHd1dTogJ0NOJyxcbiAgICBoc246ICdDTicsXG4gICAgaGFrOiAnQ04nLFxuICAgIG5hbjogJ0NOJyxcbiAgICBnYW46ICdDTicsXG4gICAgaGk6ICdJTicsXG4gICAgdGU6ICdJTicsXG4gICAgbXI6ICdJTicsXG4gICAgdGE6ICdJTicsXG4gICAgZ3U6ICdJTicsXG4gICAga246ICdJTicsXG4gICAgb3I6ICdJTicsXG4gICAgbWw6ICdJTicsXG4gICAgcGFfZ3VydTogJ0lOJyxcbiAgICBiaG86ICdJTicsXG4gICAgYXdhOiAnSU4nLFxuICAgIGFzOiAnSU4nLFxuICAgIG13cjogJ0lOJyxcbiAgICBtYWk6ICdJTicsXG4gICAgbWFnOiAnSU4nLFxuICAgIGJnYzogJ0lOJyxcbiAgICBobmU6ICdJTicsXG4gICAgZGNjOiAnSU4nLFxuICAgIGR6OiAnQlQnLFxuICAgIHRuOiAnQlcnLFxuICAgIGFtOiAnRVQnLFxuICAgIG9tOiAnRVQnLFxuICAgIHF1YzogJ0dUJyxcbiAgICBpZDogJ0lEJyxcbiAgICBqdjogJ0lEJyxcbiAgICBzdTogJ0lEJyxcbiAgICBtYWQ6ICdJRCcsXG4gICAgbXNfYXJhYjogJ0lEJyxcbiAgICBnYTogJ0lFJyxcbiAgICBoZTogJ0lMJyxcbiAgICBqYW06ICdKTScsXG4gICAgamE6ICdKUCcsXG4gICAga206ICdLSCcsXG4gICAga286ICdLUicsXG4gICAgbG86ICdMQScsXG4gICAgbWg6ICdNSCcsXG4gICAgbXk6ICdNTScsXG4gICAgbXQ6ICdNVCcsXG4gICAgbmU6ICdOUCcsXG4gICAgZmlsOiAnUEgnLFxuICAgIGNlYjogJ1BIJyxcbiAgICBpbG86ICdQSCcsXG4gICAgdXI6ICdQSycsXG4gICAgcGE6ICdQSycsXG4gICAgcGFfYXJhYjogJ1BLJyxcbiAgICBhcmFiOiAnUEsnLFxuICAgIGxhaDogJ1BLJyxcbiAgICBwczogJ1BLJyxcbiAgICBzZDogJ1BLJyxcbiAgICBzZF9hcmFiOiAnUEsnLFxuICAgIHNrcjogJ1BLJyxcbiAgICBnbjogJ1BZJyxcbiAgICB0aDogJ1RIJyxcbiAgICB0dHM6ICdUSCcsXG4gICAgYWViOiAnVE4nLFxuICAgIHpoX2hhbnQ6ICdUVycsXG4gICAgaGFudDogJ1RXJyxcbiAgICBzbTogJ1dTJyxcbiAgICB6dTogJ1pBJyxcbiAgICBzbjogJ1pXJyxcbiAgICBhcnE6ICdEWicsXG4gICAgYXI6ICdFRycsXG4gICAgYXJ6OiAnRUcnLFxuICAgIGZhOiAnSVInLFxuICAgIGF6X2FyYWI6ICdJUicsXG4gICAgYXJ5OiAnTUEnLFxuICAgIGJuOiAnQkQnLFxuICAgIHJrdDogJ0JEJyxcbiAgICBkdjogJ01WJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbGFuZ1JlZ2lvbk1hcDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxhbmdSZWdpb25NYXAuanMubWFwXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy93ZWVrc3RhcnQvZGlzdC9lcy1tb2R1bGUvbGFuZ1JlZ2lvbk1hcC5qc1xuLy8gbW9kdWxlIGlkID0gMTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEiLCJ2YXIgcmVnaW9uRGF5TWFwID0ge1xuICAgIEFHOiAwLFxuICAgIEFURzogMCxcbiAgICAyODogMCxcbiAgICBBUjogMCxcbiAgICBBUkc6IDAsXG4gICAgMzI6IDAsXG4gICAgQVM6IDAsXG4gICAgQVNNOiAwLFxuICAgIDE2OiAwLFxuICAgIEFVOiAwLFxuICAgIEFVUzogMCxcbiAgICAzNjogMCxcbiAgICBCUjogMCxcbiAgICBCUkE6IDAsXG4gICAgNzY6IDAsXG4gICAgQlM6IDAsXG4gICAgQkhTOiAwLFxuICAgIDQ0OiAwLFxuICAgIEJUOiAwLFxuICAgIEJUTjogMCxcbiAgICA2NDogMCxcbiAgICBCVzogMCxcbiAgICBCV0E6IDAsXG4gICAgNzI6IDAsXG4gICAgQlo6IDAsXG4gICAgQkxaOiAwLFxuICAgIDg0OiAwLFxuICAgIENBOiAwLFxuICAgIENBTjogMCxcbiAgICAxMjQ6IDAsXG4gICAgQ046IDAsXG4gICAgQ0hOOiAwLFxuICAgIDE1NjogMCxcbiAgICBDTzogMCxcbiAgICBDT0w6IDAsXG4gICAgMTcwOiAwLFxuICAgIERNOiAwLFxuICAgIERNQTogMCxcbiAgICAyMTI6IDAsXG4gICAgRE86IDAsXG4gICAgRE9NOiAwLFxuICAgIDIxNDogMCxcbiAgICBFVDogMCxcbiAgICBFVEg6IDAsXG4gICAgMjMxOiAwLFxuICAgIEdUOiAwLFxuICAgIEdUTTogMCxcbiAgICAzMjA6IDAsXG4gICAgR1U6IDAsXG4gICAgR1VNOiAwLFxuICAgIDMxNjogMCxcbiAgICBISzogMCxcbiAgICBIS0c6IDAsXG4gICAgMzQ0OiAwLFxuICAgIEhOOiAwLFxuICAgIEhORDogMCxcbiAgICAzNDA6IDAsXG4gICAgSUQ6IDAsXG4gICAgSUROOiAwLFxuICAgIDM2MDogMCxcbiAgICBJRTogMCxcbiAgICBJUkw6IDAsXG4gICAgMzcyOiAwLFxuICAgIElMOiAwLFxuICAgIElTUjogMCxcbiAgICAzNzY6IDAsXG4gICAgSU46IDAsXG4gICAgSU5EOiAwLFxuICAgIDM1NjogMCxcbiAgICBKTTogMCxcbiAgICBKQU06IDAsXG4gICAgMzg4OiAwLFxuICAgIEpQOiAwLFxuICAgIEpQTjogMCxcbiAgICAzOTI6IDAsXG4gICAgS0U6IDAsXG4gICAgS0VOOiAwLFxuICAgIDQwNDogMCxcbiAgICBLSDogMCxcbiAgICBLSE06IDAsXG4gICAgMTE2OiAwLFxuICAgIEtSOiAwLFxuICAgIEtPUjogMCxcbiAgICA0MTA6IDAsXG4gICAgTEE6IDAsXG4gICAgTEEwOiAwLFxuICAgIDQxODogMCxcbiAgICBNSDogMCxcbiAgICBNSEw6IDAsXG4gICAgNTg0OiAwLFxuICAgIE1NOiAwLFxuICAgIE1NUjogMCxcbiAgICAxMDQ6IDAsXG4gICAgTU86IDAsXG4gICAgTUFDOiAwLFxuICAgIDQ0NjogMCxcbiAgICBNVDogMCxcbiAgICBNTFQ6IDAsXG4gICAgNDcwOiAwLFxuICAgIE1YOiAwLFxuICAgIE1FWDogMCxcbiAgICA0ODQ6IDAsXG4gICAgTVo6IDAsXG4gICAgTU9aOiAwLFxuICAgIDUwODogMCxcbiAgICBOSTogMCxcbiAgICBOSUM6IDAsXG4gICAgNTU4OiAwLFxuICAgIE5QOiAwLFxuICAgIE5QTDogMCxcbiAgICA1MjQ6IDAsXG4gICAgTlo6IDAsXG4gICAgTlpMOiAwLFxuICAgIDU1NDogMCxcbiAgICBQQTogMCxcbiAgICBQQU46IDAsXG4gICAgNTkxOiAwLFxuICAgIFBFOiAwLFxuICAgIFBFUjogMCxcbiAgICA2MDQ6IDAsXG4gICAgUEg6IDAsXG4gICAgUEhMOiAwLFxuICAgIDYwODogMCxcbiAgICBQSzogMCxcbiAgICBQQUs6IDAsXG4gICAgNTg2OiAwLFxuICAgIFBSOiAwLFxuICAgIFBSSTogMCxcbiAgICA2MzA6IDAsXG4gICAgUFk6IDAsXG4gICAgUFJZOiAwLFxuICAgIDYwMDogMCxcbiAgICBTQTogMCxcbiAgICBTQVU6IDAsXG4gICAgNjgyOiAwLFxuICAgIFNHOiAwLFxuICAgIFNHUDogMCxcbiAgICA3MDI6IDAsXG4gICAgU1Y6IDAsXG4gICAgU0xWOiAwLFxuICAgIDIyMjogMCxcbiAgICBUSDogMCxcbiAgICBUSEE6IDAsXG4gICAgNzY0OiAwLFxuICAgIFROOiAwLFxuICAgIFRVTjogMCxcbiAgICA3ODg6IDAsXG4gICAgVFQ6IDAsXG4gICAgVFRPOiAwLFxuICAgIDc4MDogMCxcbiAgICBUVzogMCxcbiAgICBUV046IDAsXG4gICAgMTU4OiAwLFxuICAgIFVNOiAwLFxuICAgIFVNSTogMCxcbiAgICA1ODE6IDAsXG4gICAgVVM6IDAsXG4gICAgVVNBOiAwLFxuICAgIDg0MDogMCxcbiAgICBWRTogMCxcbiAgICBWRU46IDAsXG4gICAgODYyOiAwLFxuICAgIFZJOiAwLFxuICAgIFZJUjogMCxcbiAgICA4NTA6IDAsXG4gICAgV1M6IDAsXG4gICAgV1NNOiAwLFxuICAgIDg4MjogMCxcbiAgICBZRTogMCxcbiAgICBZRU06IDAsXG4gICAgODg3OiAwLFxuICAgIFpBOiAwLFxuICAgIFpBRjogMCxcbiAgICA3MTA6IDAsXG4gICAgWlc6IDAsXG4gICAgWldFOiAwLFxuICAgIDcxNjogMCxcbiAgICBBRTogNixcbiAgICBBUkU6IDYsXG4gICAgNzg0OiA2LFxuICAgIEFGOiA2LFxuICAgIEFGRzogNixcbiAgICA0OiA2LFxuICAgIEJIOiA2LFxuICAgIEJIUjogNixcbiAgICA0ODogNixcbiAgICBESjogNixcbiAgICBESkk6IDYsXG4gICAgMjYyOiA2LFxuICAgIERaOiA2LFxuICAgIERaQTogNixcbiAgICAxMjogNixcbiAgICBFRzogNixcbiAgICBFR1k6IDYsXG4gICAgODE4OiA2LFxuICAgIElROiA2LFxuICAgIElSUTogNixcbiAgICAzNjg6IDYsXG4gICAgSVI6IDYsXG4gICAgSVJOOiA2LFxuICAgIDM2NDogNixcbiAgICBKTzogNixcbiAgICBKT1I6IDYsXG4gICAgNDAwOiA2LFxuICAgIEtXOiA2LFxuICAgIEtXVDogNixcbiAgICA0MTQ6IDYsXG4gICAgTFk6IDYsXG4gICAgTEJZOiA2LFxuICAgIDQzNDogNixcbiAgICBNQTogNixcbiAgICBNQVI6IDYsXG4gICAgNTA0OiA2LFxuICAgIE9NOiA2LFxuICAgIE9NTjogNixcbiAgICA1MTI6IDYsXG4gICAgUUE6IDYsXG4gICAgUUFUOiA2LFxuICAgIDYzNDogNixcbiAgICBTRDogNixcbiAgICBTRE46IDYsXG4gICAgNzI5OiA2LFxuICAgIFNZOiA2LFxuICAgIFNZUjogNixcbiAgICA3NjA6IDYsXG4gICAgQkQ6IDUsXG4gICAgQkdEOiA1LFxuICAgIDUwOiA1LFxuICAgIE1WOiA1LFxuICAgIE1EVjogNSxcbiAgICA0NjI6IDVcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHJlZ2lvbkRheU1hcDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlZ2lvbkRheU1hcC5qcy5tYXBcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3dlZWtzdGFydC9kaXN0L2VzLW1vZHVsZS9yZWdpb25EYXlNYXAuanNcbi8vIG1vZHVsZSBpZCA9IDE4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJiai1tYXNrcyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmNvbnN0IGlzTnVtYmVyUmVnZXggPSAvXlxcZCskL1xuY29uc3QgaXNXaGl0ZXNwYWNlUmVnZXggPSAvXFxzL1xuY29uc3QgcHVuY3R1YXRpb25MaXN0ID0gJyFcIiMkJSZcXCcoKSorLC0uLzo7PD0+P0BbXV5fYHt8fX4nXG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGdpdmVuIHN0cmluZyBpcyBpbiBsb3dlciBjYXNlXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICovXG5jb25zdCBpc0xvd2VyQ2FzZSA9IHN0ciA9PiB7XG4gIHJldHVybiBzdHIgPT0gc3RyLnRvTG93ZXJDYXNlKCkgJiYgc3RyICE9IHN0ci50b1VwcGVyQ2FzZSgpXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGdpdmVuIHN0cmluZyBpcyBpbiB1cHBlciBjYXNlXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICovXG5jb25zdCBpc1VwcGVyQ2FzZSA9IHN0ciA9PiB7XG4gIHJldHVybiBzdHIgPT0gc3RyLnRvVXBwZXJDYXNlKCkgJiYgc3RyICE9IHN0ci50b0xvd2VyQ2FzZSgpXG59XG5cbmNvbnN0IHBhc3NPclRocm93RXJyb3IgPSAobG9vc2UsIHJldCwgaSwgc3RyKSA9PiB7XG4gIGlmICghbG9vc2UpIHtcbiAgICBjb25zdCBjaGFyID0gc3RyLmNoYXJBdChpKVxuICAgIGNvbnN0IHBvcyA9IGkgKyAxXG4gICAgdGhyb3cge1xuICAgICAgbmFtZTogJ1N0cmluZ01hc2tFcnJvcicsXG4gICAgICBtZXNzYWdlOiBgU3RyaW5nTWFza0Vycm9yOiBlcnJvciBhcHBseWluZyBtYXNrIGF0IHBvc2l0aW9uIFwiJHtwb3N9XCIgLCBjaGFyIFwiJHtjaGFyfVwiYCxcbiAgICAgIHBvcyxcbiAgICAgIGNoYXJcbiAgICB9XG4gIH0gZWxzZSByZXRbaV0gPSAnICdcbn1cblxuLyoqXG4gKiBOdW1iZXJNYXNrXG4gKlxuICogQSBqYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIGZvciBCQmogbnVtYmVycyBtYXNraW5nXG4gKlxuICogQGF1dGhvciBIeXlhbiBBYm8gRmFraGVyIDxoYWJvZmFraGVyQGJhc2lzLmNvbT5cbiAqL1xuY2xhc3MgU3RyaW5nTWFzayB7XG4gIC8qKlxuICAgKiBNYXNrIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCB0aGUgZ2l2ZW4gbWFzayBhY2NvcmRpbmcgdG8gQkJqIHJ1bGVzXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgdGhlIHN0cmluZyB0byBtYXNrXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtYXNrIHRoZSBtYXNrIHRvIHVzZSBmb3IgZm9ybWF0dGluZ1xuICAgKiBAcGFyYW0ge0Jvb2xlYW59IFtsb29zZT10cnVlXSB3aGVuIHRydWUgLCBlcnJvcnMgd2lsbCBiZSBpZ25vcmVkIGFuZCB0aGUgbWV0aG9kIHdpbGwgdHJ5IGF0IGFwcGx5IHRoZSBtYXNrXG4gICAqICAgICAgICAgICAgICAgIGFueXdheSAsIG90aGVyd2lzZSBpdCB3aWxsIHN0b3AgYXQgZmlyc3QgZXJyb3IgYW5kIHRocm93IGl0LlxuICAgKiBcbiAgICogQHRocm93cyB7TWFza0lzVG9vU2hvcnRFcnJvcn1cbiAgICogQHRocm93cyB7U3RyaW5nTWFza0Vycm9yfVxuICAgKiBAdGhyb3dzIHtNYXNrRXJyb3J9XG4gICAqIFxuICAgKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgbWFza2VkIHN0cmluZ1xuICAgKi9cbiAgc3RhdGljIG1hc2soc3RyLCBtYXNrLCBsb29zZSA9IHRydWUpIHtcbiAgICBzdHIgPSBTdHJpbmcoc3RyKVxuICAgIG1hc2sgPSBTdHJpbmcobWFzaylcbiAgICBjb25zdCBtYXNrTGVuID0gbWFzay5sZW5ndGhcbiAgICBjb25zdCBzdHJMZW4gPSBzdHIubGVuZ3RoXG5cbiAgICBpZiAoc3RyTGVuID4gbWFza0xlbikge1xuICAgICAgaWYgKGxvb3NlKSByZXR1cm4gc3RyXG4gICAgICAvLyBmcmllbmRseSBzaWxlbnQgZmFpbFxuICAgICAgZWxzZVxuICAgICAgICB0aHJvdyB7XG4gICAgICAgICAgbmFtZTogJ01hc2tJc1Rvb1Nob3J0RXJyb3InLFxuICAgICAgICAgIG1lc3NhZ2U6IGBNYXNrSXNUb29TaG9ydEVycm9yOiBNYXNrIGlzIHNob3J0ZXIgdGhhbiB0aGUgcGFzc2VkIHN0cmluZ2BcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHJldCA9IG5ldyBBcnJheShtYXNrTGVuKVxuICAgIGxldCBwb3MgPSAwIC8vIHRvIGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIHN0clxuICAgIGxldCBtYXNrQnl0ZSA9ICcnXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hc2tMZW47IGkrKykge1xuICAgICAgbWFza0J5dGUgPSBtYXNrLmNoYXJBdChpKVxuICAgICAgc3dpdGNoIChtYXNrQnl0ZSkge1xuICAgICAgICBjYXNlICdYJzogLy8gbWF0Y2ggYW55IGNoYXJhY3RlclxuICAgICAgICAgIHJldFtpXSA9IHBvcyA8IHN0ckxlbiA/IHN0ci5jaGFyQXQocG9zKSA6ICcgJ1xuICAgICAgICAgICsrcG9zXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICdBJzogLy8gbWF0Y2ggbGV0dGVyOyBmb3JjZSB1cHBlciBjYXNlXG4gICAgICAgICAgaWYgKHBvcyA8IHN0ckxlbikge1xuICAgICAgICAgICAgY29uc3QgYnl0ZSA9IHN0ci5jaGFyQXQocG9zKVxuICAgICAgICAgICAgaWYgKGlzVXBwZXJDYXNlKGJ5dGUpKSByZXRbaV0gPSBieXRlXG4gICAgICAgICAgICBlbHNlIGlmIChpc0xvd2VyQ2FzZShieXRlKSkgcmV0W2ldID0gYnl0ZS50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICBlbHNlIHBhc3NPclRocm93RXJyb3IobG9vc2UsIHJldCwgaSwgc3RyKVxuICAgICAgICAgIH0gZWxzZSByZXRbaV0gPSAnICdcbiAgICAgICAgICArK3Bvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnYSc6IC8vIG1hdGNoIGxldHRlclxuICAgICAgICAgIGlmIChwb3MgPCBzdHJMZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGJ5dGUgPSBzdHIuY2hhckF0KHBvcylcbiAgICAgICAgICAgIGlmIChpc1VwcGVyQ2FzZShieXRlKSB8fCBpc0xvd2VyQ2FzZShieXRlKSkgcmV0W2ldID0gYnl0ZVxuICAgICAgICAgICAgZWxzZSBwYXNzT3JUaHJvd0Vycm9yKGxvb3NlLCByZXQsIGksIHN0cilcbiAgICAgICAgICB9IGVsc2UgcmV0W2ldID0gJyAnXG4gICAgICAgICAgKytwb3NcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICcwJzogLy8gbWF0Y2ggZGlnaXRcbiAgICAgICAgICBpZiAocG9zIDwgc3RyTGVuKSB7XG4gICAgICAgICAgICBjb25zdCBieXRlID0gc3RyLmNoYXJBdChwb3MpXG4gICAgICAgICAgICBpZiAoaXNOdW1iZXJSZWdleC50ZXN0KGJ5dGUpKSByZXRbaV0gPSBieXRlXG4gICAgICAgICAgICBlbHNlIHBhc3NPclRocm93RXJyb3IobG9vc2UsIHJldCwgaSwgc3RyKVxuICAgICAgICAgIH0gZWxzZSByZXRbaV0gPSAnICdcbiAgICAgICAgICArK3Bvc1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ1onOiAvLyBtYXRjaCBsZXR0ZXIgb3IgZGlnaXQ7IGZvcmNlIHVwcGVyIGNhc2VcbiAgICAgICAgICBpZiAocG9zIDwgc3RyTGVuKSB7XG4gICAgICAgICAgICBjb25zdCBieXRlID0gc3RyLmNoYXJBdChwb3MpXG4gICAgICAgICAgICBpZiAoaXNVcHBlckNhc2UoYnl0ZSkgfHwgaXNOdW1iZXJSZWdleC50ZXN0KGJ5dGUpKSByZXRbaV0gPSBieXRlXG4gICAgICAgICAgICBlbHNlIGlmIChpc0xvd2VyQ2FzZShieXRlKSkgcmV0W2ldID0gYnl0ZS50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICBlbHNlIHBhc3NPclRocm93RXJyb3IobG9vc2UsIHJldCwgaSwgc3RyKVxuICAgICAgICAgIH0gZWxzZSByZXRbaV0gPSAnICdcbiAgICAgICAgICArK3Bvc1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3onOiAvLyBtYXRjaCBsZXR0ZXIgb3IgZGlnaXRcbiAgICAgICAgICBpZiAocG9zIDwgc3RyTGVuKSB7XG4gICAgICAgICAgICBjb25zdCBieXRlID0gc3RyLmNoYXJBdChwb3MpXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGlzVXBwZXJDYXNlKGJ5dGUpIHx8XG4gICAgICAgICAgICAgIGlzTG93ZXJDYXNlKGJ5dGUpIHx8XG4gICAgICAgICAgICAgIGlzTnVtYmVyUmVnZXgudGVzdChieXRlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICByZXRbaV0gPSBieXRlXG4gICAgICAgICAgICBlbHNlIHBhc3NPclRocm93RXJyb3IobG9vc2UsIHJldCwgaSwgc3RyKVxuICAgICAgICAgIH0gZWxzZSByZXRbaV0gPSAnICdcbiAgICAgICAgICArK3Bvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdVJzogLy8gbWF0Y2ggbGV0dGVyIChmb3JjZSB1cHBlciBjYXNlKSwgZGlnaXQsIHdoaXRlc3BhY2Ugb3IgcHVuY3R1YXRpb24uXG4gICAgICAgICAgaWYgKHBvcyA8IHN0ckxlbikge1xuICAgICAgICAgICAgY29uc3QgYnl0ZSA9IHN0ci5jaGFyQXQocG9zKVxuICAgICAgICAgICAgaWYgKGlzTG93ZXJDYXNlKGJ5dGUpKSByZXRbaV0gPSBieXRlLnRvVXBwZXJDYXNlKClcbiAgICAgICAgICAgIGVsc2UgaWYgKFxuICAgICAgICAgICAgICBpc1VwcGVyQ2FzZShieXRlKSB8fFxuICAgICAgICAgICAgICBpc051bWJlclJlZ2V4LnRlc3QoYnl0ZSkgfHxcbiAgICAgICAgICAgICAgaXNXaGl0ZXNwYWNlUmVnZXgudGVzdChieXRlKSB8fFxuICAgICAgICAgICAgICBwdW5jdHVhdGlvbkxpc3QuaW5kZXhPZihieXRlKSA+IC0xXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIHJldFtpXSA9IGJ5dGVcbiAgICAgICAgICAgIGVsc2UgcGFzc09yVGhyb3dFcnJvcihsb29zZSwgcmV0LCBpLCBzdHIpXG4gICAgICAgICAgfSBlbHNlIHJldFtpXSA9ICcgJ1xuICAgICAgICAgICsrcG9zXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXRbaV0gPSBtYXNrQnl0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBvcyA8IHN0ckxlbikge1xuICAgICAgaWYgKCFsb29zZSkge1xuICAgICAgICB0aHJvdyB7IG5hbWU6ICdNYXNrRXJyb3InLCBtZXNzYWdlOiAnTWFzayBjYW5ub3QgYmUgYXBwbGllZCcgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXQuam9pbignJylcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTdHJpbmdNYXNrXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvU3RyaW5nTWFzay9TdHJpbmdNYXNrLmpzIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJiai1tYXNrcyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmltcG9ydCBUeXBlcyBmcm9tICcuL1R5cGVzJ1xuXG5leHBvcnQgZGVmYXVsdCBUeXBlc1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL1R5cGVzL2luZGV4LmpzIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJiai1tYXNrcyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmltcG9ydCBOdW1iZXJNYXNrIGZyb20gJy4uL051bWJlck1hc2snXG5pbXBvcnQgRGF0ZU1hc2sgZnJvbSAnLi4vRGF0ZU1hc2snXG5pbXBvcnQgU3RyaW5nTWFzayBmcm9tICcuLi9TdHJpbmdNYXNrJ1xuXG4vKipcbiAqIFR5cGVzXG4gKlxuICogQkJqIG1hc2tzIGZhY3RvcnlcbiAqXG4gKiBAYXV0aG9yIEh5eWFuIEFibyBGYWtoZXIgPGhhYm9mYWtoZXJAYmFzaXMuY29tPlxuICovXG5jbGFzcyBUeXBlcyB7XG4gIC8qKlxuICAgKiBNYXNrIHRoZSBnaXZlbiBudW1iZXIgd2l0aCB0aGUgZ2l2ZW4gbWFzayBhY2NvcmRpbmcgdG8gQkJqIHJ1bGVzXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBudW1iZXIgdGhlIG51bWJlciB0byBmb3JtYXRcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1hc2sgdGhlIG1hc2sgdG8gdXNlIGZvciBmb3JtYXR0aW5nXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZ3JvdXBpbmdTZXBhcmF0b3I9LF0gLSBhIGNoYXIgd2hpY2ggd2lsbCBiZSB1c2VkIGFzIGEgZ3JvdXBpbmcgc2VwYXJhdG9yXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZGVjaW1hbFNlcGFyYXRvcj0uXSAgLSBhIGNoYXIgd2hpY2ggd2lsbCBiZSB1c2VkIGFzIGEgZGVjaW1hbCBzZXBhcmF0b3JcbiAgICogQHBhcmFtIHtCb29sZWFufSBbZm9yY2VUcmFpbGluZ1plcm9zPWZhbHNlXSAtIEFmZmVjdHMgdGhlIG91dHB1dCBieSBzd2l0Y2hpbmcgdGhlIHdheSBhIG1hc2sgd2l0aCBcIiNcIiBjaGFyYWN0ZXJzIGluIHRoZSB0cmFpbGluZyBwb3NpdGlvbnMgaXMgZmlsbGVkLlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZXhhbXBsZSwgdGhlIGZ1bmN0aW9uIGBOdW1iZXJNYXNrLm1hc2soLjEwOlwiIy4jI1wiKWAgcmV0dXJucyBgIC4xMGAgaW5zdGVhZCBvZiBgIC4xIGBcbiAgICogQHBhcmFtIHtCb29sZWFufSBbbG9vc2U9dHJ1ZV0gd2hlbiB0cnVlICwgZXJyb3JzIHdpbGwgYmUgaWdub3JlZCBhbmQgdGhlIG1ldGhvZCB3aWxsIHRyeSBhdCBhcHBseSB0aGUgbWFza1xuICAgKiAgICAgICAgICAgICAgICBhbnl3YXkgLCBvdGhlcndpc2UgaXQgd2lsbCBzdG9wIGF0IGZpcnN0IGVycm9yIGFuZCB0aHJvdyBpdC5cbiAgICpcbiAgICogQHJldHVybnMge1N0cmluZ30gdGhlIG1hc2tlZCBudW1iZXJcbiAgICovXG4gIHN0YXRpYyBudW1iZXIoXG4gICAgbnVtYmVyLFxuICAgIG1hc2ssXG4gICAgZ3JvdXBpbmdTZXBhcmF0b3IgPSAnLCcsXG4gICAgZGVjaW1hbFNlcGFyYXRvciA9ICcuJyxcbiAgICBmb3JjZVRyYWlsaW5nWmVyb3MgPSBmYWxzZSxcbiAgICBsb29zZSA9IHRydWVcbiAgKSB7XG4gICAgcmV0dXJuIE51bWJlck1hc2subWFzayhcbiAgICAgIG51bWJlcixcbiAgICAgIG1hc2ssXG4gICAgICBncm91cGluZ1NlcGFyYXRvcixcbiAgICAgIGRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICBmb3JjZVRyYWlsaW5nWmVyb3MsXG4gICAgICBsb29zZVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXNrIGEgZGF0ZSBhY2NvcmRpbmcgdG8gYmJqIG1hc2tpbmcgcnVsZXNcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IGRhdGUgZGF0ZSBhcyBhIHN0cmluZ1xuICAgKiBAcGFyYW0ge1N0cmluZ30gbWFzayBtYXNrIGFzIGEgc3RyaW5nXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbbG9jYWxlPUJyb3dzZXIncyBsb2NhbGVdIHRoZSBsYW5ndWFnZSB0byB1c2UgZXgoZW4tVVMpLiBkZWZhdWx0IGlzIHRvIHRoZSBzeXN0ZW0gbGFuZ3VhZ2VcbiAgICogQHBhcmFtIHtTdHJpbmd9IFt0aW1lem9uZT1TeXN0ZW0gdGltZXpvbmVdIHRoZSB0aW1lIHpvbmUgZGVzY3JpcHRvciAoZS5nLiBBbWVyaWNhL0xvc19BbmdlbGVzKS4gZGVmYXVsdCB0byB0aGUgc3lzdGVtXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lem9uZVxuICAgKlxuICAgKiBAcmV0dXJuIHtTdHJpbmd9IG51bWJlciBtYXNrZWQgd2l0aCB0aGUgZ2l2ZW4gbWFza1xuICAgKi9cbiAgc3RhdGljIGRhdGUoZGF0ZSwgbWFzaywgbG9jYWxlLCB0aW1lem9uZSkge1xuICAgIHJldHVybiBEYXRlTWFzay5tYXNrKGRhdGUsIG1hc2ssIGxvY2FsZSwgdGltZXpvbmUpXG4gIH1cblxuICAvKipcbiAgICogTWFzayB0aGUgZ2l2ZW4gc3RyaW5nIHdpdGggdGhlIGdpdmVuIG1hc2sgYWNjb3JkaW5nIHRvIEJCaiBydWxlc1xuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gc3RyIHRoZSBzdHJpbmcgdG8gbWFza1xuICAgKiBAcGFyYW0ge1N0cmluZ30gbWFzayB0aGUgbWFzayB0byB1c2UgZm9yIGZvcm1hdHRpbmdcbiAgICogQHBhcmFtIHtCb29sZWFufSBbbG9vc2U9dHJ1ZV0gd2hlbiB0cnVlICwgZXJyb3JzIHdpbGwgYmUgaWdub3JlZCBhbmQgdGhlIG1ldGhvZCB3aWxsIHRyeSBhdCBhcHBseSB0aGUgbWFza1xuICAgKiAgICAgICAgICAgICAgICBhbnl3YXkgLCBvdGhlcndpc2UgaXQgd2lsbCBzdG9wIGF0IGZpcnN0IGVycm9yIGFuZCB0aHJvdyBpdC5cbiAgICpcbiAgICogQHRocm93cyB7TWFza0lzVG9vU2hvcnRFcnJvcn1cbiAgICogQHRocm93cyB7U3RyaW5nTWFza0Vycm9yfVxuICAgKiBAdGhyb3dzIHtNYXNrRXJyb3J9XG4gICAqXG4gICAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBtYXNrZWQgc3RyaW5nXG4gICAqL1xuICBzdGF0aWMgc3RyaW5nKHN0ciwgbWFzaywgbG9vc2UgPSB0cnVlKSB7XG4gICAgcmV0dXJuIFN0cmluZ01hc2subWFzayhzdHIsIG1hc2ssIGxvb3NlKVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFR5cGVzXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvVHlwZXMvVHlwZXMuanMiLCIvKiBmbGF0cGlja3IgdjQuNi4zLCBAbGljZW5zZSBNSVQgKi9cbihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCkgOlxuICAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShmYWN0b3J5KSA6XG4gICAgKGdsb2JhbCA9IGdsb2JhbCB8fCBzZWxmLCBnbG9iYWwuZmxhdHBpY2tyID0gZmFjdG9yeSgpKTtcbn0odGhpcywgZnVuY3Rpb24gKCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlXHJcbiAgICB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZVxyXG4gICAgTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuXHJcbiAgICBUSElTIENPREUgSVMgUFJPVklERUQgT04gQU4gKkFTIElTKiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXHJcbiAgICBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVEXHJcbiAgICBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLFxyXG4gICAgTUVSQ0hBTlRBQkxJVFkgT1IgTk9OLUlORlJJTkdFTUVOVC5cclxuXHJcbiAgICBTZWUgdGhlIEFwYWNoZSBWZXJzaW9uIDIuMCBMaWNlbnNlIGZvciBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcclxuICAgIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcblxyXG4gICAgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdDtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG4gICAgfTtcblxuICAgIHZhciBIT09LUyA9IFtcbiAgICAgICAgXCJvbkNoYW5nZVwiLFxuICAgICAgICBcIm9uQ2xvc2VcIixcbiAgICAgICAgXCJvbkRheUNyZWF0ZVwiLFxuICAgICAgICBcIm9uRGVzdHJveVwiLFxuICAgICAgICBcIm9uS2V5RG93blwiLFxuICAgICAgICBcIm9uTW9udGhDaGFuZ2VcIixcbiAgICAgICAgXCJvbk9wZW5cIixcbiAgICAgICAgXCJvblBhcnNlQ29uZmlnXCIsXG4gICAgICAgIFwib25SZWFkeVwiLFxuICAgICAgICBcIm9uVmFsdWVVcGRhdGVcIixcbiAgICAgICAgXCJvblllYXJDaGFuZ2VcIixcbiAgICAgICAgXCJvblByZUNhbGVuZGFyUG9zaXRpb25cIixcbiAgICBdO1xuICAgIHZhciBkZWZhdWx0cyA9IHtcbiAgICAgICAgX2Rpc2FibGU6IFtdLFxuICAgICAgICBfZW5hYmxlOiBbXSxcbiAgICAgICAgYWxsb3dJbnB1dDogZmFsc2UsXG4gICAgICAgIGFsdEZvcm1hdDogXCJGIGosIFlcIixcbiAgICAgICAgYWx0SW5wdXQ6IGZhbHNlLFxuICAgICAgICBhbHRJbnB1dENsYXNzOiBcImZvcm0tY29udHJvbCBpbnB1dFwiLFxuICAgICAgICBhbmltYXRlOiB0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKFwiTVNJRVwiKSA9PT0gLTEsXG4gICAgICAgIGFyaWFEYXRlRm9ybWF0OiBcIkYgaiwgWVwiLFxuICAgICAgICBjbGlja09wZW5zOiB0cnVlLFxuICAgICAgICBjbG9zZU9uU2VsZWN0OiB0cnVlLFxuICAgICAgICBjb25qdW5jdGlvbjogXCIsIFwiLFxuICAgICAgICBkYXRlRm9ybWF0OiBcIlktbS1kXCIsXG4gICAgICAgIGRlZmF1bHRIb3VyOiAxMixcbiAgICAgICAgZGVmYXVsdE1pbnV0ZTogMCxcbiAgICAgICAgZGVmYXVsdFNlY29uZHM6IDAsXG4gICAgICAgIGRpc2FibGU6IFtdLFxuICAgICAgICBkaXNhYmxlTW9iaWxlOiBmYWxzZSxcbiAgICAgICAgZW5hYmxlOiBbXSxcbiAgICAgICAgZW5hYmxlU2Vjb25kczogZmFsc2UsXG4gICAgICAgIGVuYWJsZVRpbWU6IGZhbHNlLFxuICAgICAgICBlcnJvckhhbmRsZXI6IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBjb25zb2xlLndhcm4oZXJyKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0V2VlazogZnVuY3Rpb24gKGdpdmVuRGF0ZSkge1xuICAgICAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShnaXZlbkRhdGUuZ2V0VGltZSgpKTtcbiAgICAgICAgICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICAgICAgICAvLyBUaHVyc2RheSBpbiBjdXJyZW50IHdlZWsgZGVjaWRlcyB0aGUgeWVhci5cbiAgICAgICAgICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIDMgLSAoKGRhdGUuZ2V0RGF5KCkgKyA2KSAlIDcpKTtcbiAgICAgICAgICAgIC8vIEphbnVhcnkgNCBpcyBhbHdheXMgaW4gd2VlayAxLlxuICAgICAgICAgICAgdmFyIHdlZWsxID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCAwLCA0KTtcbiAgICAgICAgICAgIC8vIEFkanVzdCB0byBUaHVyc2RheSBpbiB3ZWVrIDEgYW5kIGNvdW50IG51bWJlciBvZiB3ZWVrcyBmcm9tIGRhdGUgdG8gd2VlazEuXG4gICAgICAgICAgICByZXR1cm4gKDEgK1xuICAgICAgICAgICAgICAgIE1hdGgucm91bmQoKChkYXRlLmdldFRpbWUoKSAtIHdlZWsxLmdldFRpbWUoKSkgLyA4NjQwMDAwMCAtXG4gICAgICAgICAgICAgICAgICAgIDMgK1xuICAgICAgICAgICAgICAgICAgICAoKHdlZWsxLmdldERheSgpICsgNikgJSA3KSkgL1xuICAgICAgICAgICAgICAgICAgICA3KSk7XG4gICAgICAgIH0sXG4gICAgICAgIGhvdXJJbmNyZW1lbnQ6IDEsXG4gICAgICAgIGlnbm9yZWRGb2N1c0VsZW1lbnRzOiBbXSxcbiAgICAgICAgaW5saW5lOiBmYWxzZSxcbiAgICAgICAgbG9jYWxlOiBcImRlZmF1bHRcIixcbiAgICAgICAgbWludXRlSW5jcmVtZW50OiA1LFxuICAgICAgICBtb2RlOiBcInNpbmdsZVwiLFxuICAgICAgICBtb250aFNlbGVjdG9yVHlwZTogXCJkcm9wZG93blwiLFxuICAgICAgICBuZXh0QXJyb3c6IFwiPHN2ZyB2ZXJzaW9uPScxLjEnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgeG1sbnM6eGxpbms9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnIHZpZXdCb3g9JzAgMCAxNyAxNyc+PGc+PC9nPjxwYXRoIGQ9J00xMy4yMDcgOC40NzJsLTcuODU0IDcuODU0LTAuNzA3LTAuNzA3IDcuMTQ2LTcuMTQ2LTcuMTQ2LTcuMTQ4IDAuNzA3LTAuNzA3IDcuODU0IDcuODU0eicgLz48L3N2Zz5cIixcbiAgICAgICAgbm9DYWxlbmRhcjogZmFsc2UsXG4gICAgICAgIG5vdzogbmV3IERhdGUoKSxcbiAgICAgICAgb25DaGFuZ2U6IFtdLFxuICAgICAgICBvbkNsb3NlOiBbXSxcbiAgICAgICAgb25EYXlDcmVhdGU6IFtdLFxuICAgICAgICBvbkRlc3Ryb3k6IFtdLFxuICAgICAgICBvbktleURvd246IFtdLFxuICAgICAgICBvbk1vbnRoQ2hhbmdlOiBbXSxcbiAgICAgICAgb25PcGVuOiBbXSxcbiAgICAgICAgb25QYXJzZUNvbmZpZzogW10sXG4gICAgICAgIG9uUmVhZHk6IFtdLFxuICAgICAgICBvblZhbHVlVXBkYXRlOiBbXSxcbiAgICAgICAgb25ZZWFyQ2hhbmdlOiBbXSxcbiAgICAgICAgb25QcmVDYWxlbmRhclBvc2l0aW9uOiBbXSxcbiAgICAgICAgcGx1Z2luczogW10sXG4gICAgICAgIHBvc2l0aW9uOiBcImF1dG9cIixcbiAgICAgICAgcG9zaXRpb25FbGVtZW50OiB1bmRlZmluZWQsXG4gICAgICAgIHByZXZBcnJvdzogXCI8c3ZnIHZlcnNpb249JzEuMScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB4bWxuczp4bGluaz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluaycgdmlld0JveD0nMCAwIDE3IDE3Jz48Zz48L2c+PHBhdGggZD0nTTUuMjA3IDguNDcxbDcuMTQ2IDcuMTQ3LTAuNzA3IDAuNzA3LTcuODUzLTcuODU0IDcuODU0LTcuODUzIDAuNzA3IDAuNzA3LTcuMTQ3IDcuMTQ2eicgLz48L3N2Zz5cIixcbiAgICAgICAgc2hvcnRoYW5kQ3VycmVudE1vbnRoOiBmYWxzZSxcbiAgICAgICAgc2hvd01vbnRoczogMSxcbiAgICAgICAgc3RhdGljOiBmYWxzZSxcbiAgICAgICAgdGltZV8yNGhyOiBmYWxzZSxcbiAgICAgICAgd2Vla051bWJlcnM6IGZhbHNlLFxuICAgICAgICB3cmFwOiBmYWxzZVxuICAgIH07XG5cbiAgICB2YXIgZW5nbGlzaCA9IHtcbiAgICAgICAgd2Vla2RheXM6IHtcbiAgICAgICAgICAgIHNob3J0aGFuZDogW1wiU3VuXCIsIFwiTW9uXCIsIFwiVHVlXCIsIFwiV2VkXCIsIFwiVGh1XCIsIFwiRnJpXCIsIFwiU2F0XCJdLFxuICAgICAgICAgICAgbG9uZ2hhbmQ6IFtcbiAgICAgICAgICAgICAgICBcIlN1bmRheVwiLFxuICAgICAgICAgICAgICAgIFwiTW9uZGF5XCIsXG4gICAgICAgICAgICAgICAgXCJUdWVzZGF5XCIsXG4gICAgICAgICAgICAgICAgXCJXZWRuZXNkYXlcIixcbiAgICAgICAgICAgICAgICBcIlRodXJzZGF5XCIsXG4gICAgICAgICAgICAgICAgXCJGcmlkYXlcIixcbiAgICAgICAgICAgICAgICBcIlNhdHVyZGF5XCIsXG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoczoge1xuICAgICAgICAgICAgc2hvcnRoYW5kOiBbXG4gICAgICAgICAgICAgICAgXCJKYW5cIixcbiAgICAgICAgICAgICAgICBcIkZlYlwiLFxuICAgICAgICAgICAgICAgIFwiTWFyXCIsXG4gICAgICAgICAgICAgICAgXCJBcHJcIixcbiAgICAgICAgICAgICAgICBcIk1heVwiLFxuICAgICAgICAgICAgICAgIFwiSnVuXCIsXG4gICAgICAgICAgICAgICAgXCJKdWxcIixcbiAgICAgICAgICAgICAgICBcIkF1Z1wiLFxuICAgICAgICAgICAgICAgIFwiU2VwXCIsXG4gICAgICAgICAgICAgICAgXCJPY3RcIixcbiAgICAgICAgICAgICAgICBcIk5vdlwiLFxuICAgICAgICAgICAgICAgIFwiRGVjXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbG9uZ2hhbmQ6IFtcbiAgICAgICAgICAgICAgICBcIkphbnVhcnlcIixcbiAgICAgICAgICAgICAgICBcIkZlYnJ1YXJ5XCIsXG4gICAgICAgICAgICAgICAgXCJNYXJjaFwiLFxuICAgICAgICAgICAgICAgIFwiQXByaWxcIixcbiAgICAgICAgICAgICAgICBcIk1heVwiLFxuICAgICAgICAgICAgICAgIFwiSnVuZVwiLFxuICAgICAgICAgICAgICAgIFwiSnVseVwiLFxuICAgICAgICAgICAgICAgIFwiQXVndXN0XCIsXG4gICAgICAgICAgICAgICAgXCJTZXB0ZW1iZXJcIixcbiAgICAgICAgICAgICAgICBcIk9jdG9iZXJcIixcbiAgICAgICAgICAgICAgICBcIk5vdmVtYmVyXCIsXG4gICAgICAgICAgICAgICAgXCJEZWNlbWJlclwiLFxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBkYXlzSW5Nb250aDogWzMxLCAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdLFxuICAgICAgICBmaXJzdERheU9mV2VlazogMCxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG50aCkge1xuICAgICAgICAgICAgdmFyIHMgPSBudGggJSAxMDA7XG4gICAgICAgICAgICBpZiAocyA+IDMgJiYgcyA8IDIxKVxuICAgICAgICAgICAgICAgIHJldHVybiBcInRoXCI7XG4gICAgICAgICAgICBzd2l0Y2ggKHMgJSAxMCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwic3RcIjtcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcIm5kXCI7XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJyZFwiO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcInRoXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJhbmdlU2VwYXJhdG9yOiBcIiB0byBcIixcbiAgICAgICAgd2Vla0FiYnJldmlhdGlvbjogXCJXa1wiLFxuICAgICAgICBzY3JvbGxUaXRsZTogXCJTY3JvbGwgdG8gaW5jcmVtZW50XCIsXG4gICAgICAgIHRvZ2dsZVRpdGxlOiBcIkNsaWNrIHRvIHRvZ2dsZVwiLFxuICAgICAgICBhbVBNOiBbXCJBTVwiLCBcIlBNXCJdLFxuICAgICAgICB5ZWFyQXJpYUxhYmVsOiBcIlllYXJcIixcbiAgICAgICAgaG91ckFyaWFMYWJlbDogXCJIb3VyXCIsXG4gICAgICAgIG1pbnV0ZUFyaWFMYWJlbDogXCJNaW51dGVcIixcbiAgICAgICAgdGltZV8yNGhyOiBmYWxzZVxuICAgIH07XG5cbiAgICB2YXIgcGFkID0gZnVuY3Rpb24gKG51bWJlcikgeyByZXR1cm4gKFwiMFwiICsgbnVtYmVyKS5zbGljZSgtMik7IH07XG4gICAgdmFyIGludCA9IGZ1bmN0aW9uIChib29sKSB7IHJldHVybiAoYm9vbCA9PT0gdHJ1ZSA/IDEgOiAwKTsgfTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIGltbWVkaWF0ZSkge1xuICAgICAgICBpZiAoaW1tZWRpYXRlID09PSB2b2lkIDApIHsgaW1tZWRpYXRlID0gZmFsc2U7IH1cbiAgICAgICAgdmFyIHRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgICAgICB0aW1lb3V0ICE9PSBudWxsICYmIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICAgIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKCFpbW1lZGlhdGUpXG4gICAgICAgICAgICAgICAgICAgIGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICAgICAgICB9LCB3YWl0KTtcbiAgICAgICAgICAgIGlmIChpbW1lZGlhdGUgJiYgIXRpbWVvdXQpXG4gICAgICAgICAgICAgICAgZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgdmFyIGFycmF5aWZ5ID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgQXJyYXkgPyBvYmogOiBbb2JqXTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gdG9nZ2xlQ2xhc3MoZWxlbSwgY2xhc3NOYW1lLCBib29sKSB7XG4gICAgICAgIGlmIChib29sID09PSB0cnVlKVxuICAgICAgICAgICAgcmV0dXJuIGVsZW0uY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO1xuICAgICAgICBlbGVtLmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlRWxlbWVudCh0YWcsIGNsYXNzTmFtZSwgY29udGVudCkge1xuICAgICAgICB2YXIgZSA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZyk7XG4gICAgICAgIGNsYXNzTmFtZSA9IGNsYXNzTmFtZSB8fCBcIlwiO1xuICAgICAgICBjb250ZW50ID0gY29udGVudCB8fCBcIlwiO1xuICAgICAgICBlLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTtcbiAgICAgICAgaWYgKGNvbnRlbnQgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIGUudGV4dENvbnRlbnQgPSBjb250ZW50O1xuICAgICAgICByZXR1cm4gZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2xlYXJOb2RlKG5vZGUpIHtcbiAgICAgICAgd2hpbGUgKG5vZGUuZmlyc3RDaGlsZClcbiAgICAgICAgICAgIG5vZGUucmVtb3ZlQ2hpbGQobm9kZS5maXJzdENoaWxkKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZmluZFBhcmVudChub2RlLCBjb25kaXRpb24pIHtcbiAgICAgICAgaWYgKGNvbmRpdGlvbihub2RlKSlcbiAgICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICBlbHNlIGlmIChub2RlLnBhcmVudE5vZGUpXG4gICAgICAgICAgICByZXR1cm4gZmluZFBhcmVudChub2RlLnBhcmVudE5vZGUsIGNvbmRpdGlvbik7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7IC8vIG5vdGhpbmcgZm91bmRcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlTnVtYmVySW5wdXQoaW5wdXRDbGFzc05hbWUsIG9wdHMpIHtcbiAgICAgICAgdmFyIHdyYXBwZXIgPSBjcmVhdGVFbGVtZW50KFwiZGl2XCIsIFwibnVtSW5wdXRXcmFwcGVyXCIpLCBudW1JbnB1dCA9IGNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCBcIm51bUlucHV0IFwiICsgaW5wdXRDbGFzc05hbWUpLCBhcnJvd1VwID0gY3JlYXRlRWxlbWVudChcInNwYW5cIiwgXCJhcnJvd1VwXCIpLCBhcnJvd0Rvd24gPSBjcmVhdGVFbGVtZW50KFwic3BhblwiLCBcImFycm93RG93blwiKTtcbiAgICAgICAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihcIk1TSUUgOS4wXCIpID09PSAtMSkge1xuICAgICAgICAgICAgbnVtSW5wdXQudHlwZSA9IFwibnVtYmVyXCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBudW1JbnB1dC50eXBlID0gXCJ0ZXh0XCI7XG4gICAgICAgICAgICBudW1JbnB1dC5wYXR0ZXJuID0gXCJcXFxcZCpcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0cyAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIG9wdHMpXG4gICAgICAgICAgICAgICAgbnVtSW5wdXQuc2V0QXR0cmlidXRlKGtleSwgb3B0c1trZXldKTtcbiAgICAgICAgd3JhcHBlci5hcHBlbmRDaGlsZChudW1JbnB1dCk7XG4gICAgICAgIHdyYXBwZXIuYXBwZW5kQ2hpbGQoYXJyb3dVcCk7XG4gICAgICAgIHdyYXBwZXIuYXBwZW5kQ2hpbGQoYXJyb3dEb3duKTtcbiAgICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldEV2ZW50VGFyZ2V0KGV2ZW50KSB7XG4gICAgICAgIGlmICh0eXBlb2YgZXZlbnQuY29tcG9zZWRQYXRoID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHZhciBwYXRoID0gZXZlbnQuY29tcG9zZWRQYXRoKCk7XG4gICAgICAgICAgICByZXR1cm4gcGF0aFswXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZXZlbnQudGFyZ2V0O1xuICAgIH1cblxuICAgIHZhciBkb05vdGhpbmcgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB1bmRlZmluZWQ7IH07XG4gICAgdmFyIG1vbnRoVG9TdHIgPSBmdW5jdGlvbiAobW9udGhOdW1iZXIsIHNob3J0aGFuZCwgbG9jYWxlKSB7IHJldHVybiBsb2NhbGUubW9udGhzW3Nob3J0aGFuZCA/IFwic2hvcnRoYW5kXCIgOiBcImxvbmdoYW5kXCJdW21vbnRoTnVtYmVyXTsgfTtcbiAgICB2YXIgcmV2Rm9ybWF0ID0ge1xuICAgICAgICBEOiBkb05vdGhpbmcsXG4gICAgICAgIEY6IGZ1bmN0aW9uIChkYXRlT2JqLCBtb250aE5hbWUsIGxvY2FsZSkge1xuICAgICAgICAgICAgZGF0ZU9iai5zZXRNb250aChsb2NhbGUubW9udGhzLmxvbmdoYW5kLmluZGV4T2YobW9udGhOYW1lKSk7XG4gICAgICAgIH0sXG4gICAgICAgIEc6IGZ1bmN0aW9uIChkYXRlT2JqLCBob3VyKSB7XG4gICAgICAgICAgICBkYXRlT2JqLnNldEhvdXJzKHBhcnNlRmxvYXQoaG91cikpO1xuICAgICAgICB9LFxuICAgICAgICBIOiBmdW5jdGlvbiAoZGF0ZU9iaiwgaG91cikge1xuICAgICAgICAgICAgZGF0ZU9iai5zZXRIb3VycyhwYXJzZUZsb2F0KGhvdXIpKTtcbiAgICAgICAgfSxcbiAgICAgICAgSjogZnVuY3Rpb24gKGRhdGVPYmosIGRheSkge1xuICAgICAgICAgICAgZGF0ZU9iai5zZXREYXRlKHBhcnNlRmxvYXQoZGF5KSk7XG4gICAgICAgIH0sXG4gICAgICAgIEs6IGZ1bmN0aW9uIChkYXRlT2JqLCBhbVBNLCBsb2NhbGUpIHtcbiAgICAgICAgICAgIGRhdGVPYmouc2V0SG91cnMoKGRhdGVPYmouZ2V0SG91cnMoKSAlIDEyKSArXG4gICAgICAgICAgICAgICAgMTIgKiBpbnQobmV3IFJlZ0V4cChsb2NhbGUuYW1QTVsxXSwgXCJpXCIpLnRlc3QoYW1QTSkpKTtcbiAgICAgICAgfSxcbiAgICAgICAgTTogZnVuY3Rpb24gKGRhdGVPYmosIHNob3J0TW9udGgsIGxvY2FsZSkge1xuICAgICAgICAgICAgZGF0ZU9iai5zZXRNb250aChsb2NhbGUubW9udGhzLnNob3J0aGFuZC5pbmRleE9mKHNob3J0TW9udGgpKTtcbiAgICAgICAgfSxcbiAgICAgICAgUzogZnVuY3Rpb24gKGRhdGVPYmosIHNlY29uZHMpIHtcbiAgICAgICAgICAgIGRhdGVPYmouc2V0U2Vjb25kcyhwYXJzZUZsb2F0KHNlY29uZHMpKTtcbiAgICAgICAgfSxcbiAgICAgICAgVTogZnVuY3Rpb24gKF8sIHVuaXhTZWNvbmRzKSB7IHJldHVybiBuZXcgRGF0ZShwYXJzZUZsb2F0KHVuaXhTZWNvbmRzKSAqIDEwMDApOyB9LFxuICAgICAgICBXOiBmdW5jdGlvbiAoZGF0ZU9iaiwgd2Vla051bSwgbG9jYWxlKSB7XG4gICAgICAgICAgICB2YXIgd2Vla051bWJlciA9IHBhcnNlSW50KHdlZWtOdW0pO1xuICAgICAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShkYXRlT2JqLmdldEZ1bGxZZWFyKCksIDAsIDIgKyAod2Vla051bWJlciAtIDEpICogNywgMCwgMCwgMCwgMCk7XG4gICAgICAgICAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgLSBkYXRlLmdldERheSgpICsgbG9jYWxlLmZpcnN0RGF5T2ZXZWVrKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgICB9LFxuICAgICAgICBZOiBmdW5jdGlvbiAoZGF0ZU9iaiwgeWVhcikge1xuICAgICAgICAgICAgZGF0ZU9iai5zZXRGdWxsWWVhcihwYXJzZUZsb2F0KHllYXIpKTtcbiAgICAgICAgfSxcbiAgICAgICAgWjogZnVuY3Rpb24gKF8sIElTT0RhdGUpIHsgcmV0dXJuIG5ldyBEYXRlKElTT0RhdGUpOyB9LFxuICAgICAgICBkOiBmdW5jdGlvbiAoZGF0ZU9iaiwgZGF5KSB7XG4gICAgICAgICAgICBkYXRlT2JqLnNldERhdGUocGFyc2VGbG9hdChkYXkpKTtcbiAgICAgICAgfSxcbiAgICAgICAgaDogZnVuY3Rpb24gKGRhdGVPYmosIGhvdXIpIHtcbiAgICAgICAgICAgIGRhdGVPYmouc2V0SG91cnMocGFyc2VGbG9hdChob3VyKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGk6IGZ1bmN0aW9uIChkYXRlT2JqLCBtaW51dGVzKSB7XG4gICAgICAgICAgICBkYXRlT2JqLnNldE1pbnV0ZXMocGFyc2VGbG9hdChtaW51dGVzKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGo6IGZ1bmN0aW9uIChkYXRlT2JqLCBkYXkpIHtcbiAgICAgICAgICAgIGRhdGVPYmouc2V0RGF0ZShwYXJzZUZsb2F0KGRheSkpO1xuICAgICAgICB9LFxuICAgICAgICBsOiBkb05vdGhpbmcsXG4gICAgICAgIG06IGZ1bmN0aW9uIChkYXRlT2JqLCBtb250aCkge1xuICAgICAgICAgICAgZGF0ZU9iai5zZXRNb250aChwYXJzZUZsb2F0KG1vbnRoKSAtIDEpO1xuICAgICAgICB9LFxuICAgICAgICBuOiBmdW5jdGlvbiAoZGF0ZU9iaiwgbW9udGgpIHtcbiAgICAgICAgICAgIGRhdGVPYmouc2V0TW9udGgocGFyc2VGbG9hdChtb250aCkgLSAxKTtcbiAgICAgICAgfSxcbiAgICAgICAgczogZnVuY3Rpb24gKGRhdGVPYmosIHNlY29uZHMpIHtcbiAgICAgICAgICAgIGRhdGVPYmouc2V0U2Vjb25kcyhwYXJzZUZsb2F0KHNlY29uZHMpKTtcbiAgICAgICAgfSxcbiAgICAgICAgdTogZnVuY3Rpb24gKF8sIHVuaXhNaWxsU2Vjb25kcykge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHBhcnNlRmxvYXQodW5peE1pbGxTZWNvbmRzKSk7XG4gICAgICAgIH0sXG4gICAgICAgIHc6IGRvTm90aGluZyxcbiAgICAgICAgeTogZnVuY3Rpb24gKGRhdGVPYmosIHllYXIpIHtcbiAgICAgICAgICAgIGRhdGVPYmouc2V0RnVsbFllYXIoMjAwMCArIHBhcnNlRmxvYXQoeWVhcikpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICB2YXIgdG9rZW5SZWdleCA9IHtcbiAgICAgICAgRDogXCIoXFxcXHcrKVwiLFxuICAgICAgICBGOiBcIihcXFxcdyspXCIsXG4gICAgICAgIEc6IFwiKFxcXFxkXFxcXGR8XFxcXGQpXCIsXG4gICAgICAgIEg6IFwiKFxcXFxkXFxcXGR8XFxcXGQpXCIsXG4gICAgICAgIEo6IFwiKFxcXFxkXFxcXGR8XFxcXGQpXFxcXHcrXCIsXG4gICAgICAgIEs6IFwiXCIsXG4gICAgICAgIE06IFwiKFxcXFx3KylcIixcbiAgICAgICAgUzogXCIoXFxcXGRcXFxcZHxcXFxcZClcIixcbiAgICAgICAgVTogXCIoLispXCIsXG4gICAgICAgIFc6IFwiKFxcXFxkXFxcXGR8XFxcXGQpXCIsXG4gICAgICAgIFk6IFwiKFxcXFxkezR9KVwiLFxuICAgICAgICBaOiBcIiguKylcIixcbiAgICAgICAgZDogXCIoXFxcXGRcXFxcZHxcXFxcZClcIixcbiAgICAgICAgaDogXCIoXFxcXGRcXFxcZHxcXFxcZClcIixcbiAgICAgICAgaTogXCIoXFxcXGRcXFxcZHxcXFxcZClcIixcbiAgICAgICAgajogXCIoXFxcXGRcXFxcZHxcXFxcZClcIixcbiAgICAgICAgbDogXCIoXFxcXHcrKVwiLFxuICAgICAgICBtOiBcIihcXFxcZFxcXFxkfFxcXFxkKVwiLFxuICAgICAgICBuOiBcIihcXFxcZFxcXFxkfFxcXFxkKVwiLFxuICAgICAgICBzOiBcIihcXFxcZFxcXFxkfFxcXFxkKVwiLFxuICAgICAgICB1OiBcIiguKylcIixcbiAgICAgICAgdzogXCIoXFxcXGRcXFxcZHxcXFxcZClcIixcbiAgICAgICAgeTogXCIoXFxcXGR7Mn0pXCJcbiAgICB9O1xuICAgIHZhciBmb3JtYXRzID0ge1xuICAgICAgICAvLyBnZXQgdGhlIGRhdGUgaW4gVVRDXG4gICAgICAgIFo6IGZ1bmN0aW9uIChkYXRlKSB7IHJldHVybiBkYXRlLnRvSVNPU3RyaW5nKCk7IH0sXG4gICAgICAgIC8vIHdlZWtkYXkgbmFtZSwgc2hvcnQsIGUuZy4gVGh1XG4gICAgICAgIEQ6IGZ1bmN0aW9uIChkYXRlLCBsb2NhbGUsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhbGUud2Vla2RheXMuc2hvcnRoYW5kW2Zvcm1hdHMudyhkYXRlLCBsb2NhbGUsIG9wdGlvbnMpXTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gZnVsbCBtb250aCBuYW1lIGUuZy4gSmFudWFyeVxuICAgICAgICBGOiBmdW5jdGlvbiAoZGF0ZSwgbG9jYWxlLCBvcHRpb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gbW9udGhUb1N0cihmb3JtYXRzLm4oZGF0ZSwgbG9jYWxlLCBvcHRpb25zKSAtIDEsIGZhbHNlLCBsb2NhbGUpO1xuICAgICAgICB9LFxuICAgICAgICAvLyBwYWRkZWQgaG91ciAxLTEyXG4gICAgICAgIEc6IGZ1bmN0aW9uIChkYXRlLCBsb2NhbGUsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiBwYWQoZm9ybWF0cy5oKGRhdGUsIGxvY2FsZSwgb3B0aW9ucykpO1xuICAgICAgICB9LFxuICAgICAgICAvLyBob3VycyB3aXRoIGxlYWRpbmcgemVybyBlLmcuIDAzXG4gICAgICAgIEg6IGZ1bmN0aW9uIChkYXRlKSB7IHJldHVybiBwYWQoZGF0ZS5nZXRIb3VycygpKTsgfSxcbiAgICAgICAgLy8gZGF5ICgxLTMwKSB3aXRoIG9yZGluYWwgc3VmZml4IGUuZy4gMXN0LCAybmRcbiAgICAgICAgSjogZnVuY3Rpb24gKGRhdGUsIGxvY2FsZSkge1xuICAgICAgICAgICAgcmV0dXJuIGxvY2FsZS5vcmRpbmFsICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA/IGRhdGUuZ2V0RGF0ZSgpICsgbG9jYWxlLm9yZGluYWwoZGF0ZS5nZXREYXRlKCkpXG4gICAgICAgICAgICAgICAgOiBkYXRlLmdldERhdGUoKTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gQU0vUE1cbiAgICAgICAgSzogZnVuY3Rpb24gKGRhdGUsIGxvY2FsZSkgeyByZXR1cm4gbG9jYWxlLmFtUE1baW50KGRhdGUuZ2V0SG91cnMoKSA+IDExKV07IH0sXG4gICAgICAgIC8vIHNob3J0aGFuZCBtb250aCBlLmcuIEphbiwgU2VwLCBPY3QsIGV0Y1xuICAgICAgICBNOiBmdW5jdGlvbiAoZGF0ZSwgbG9jYWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gbW9udGhUb1N0cihkYXRlLmdldE1vbnRoKCksIHRydWUsIGxvY2FsZSk7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIHNlY29uZHMgMDAtNTlcbiAgICAgICAgUzogZnVuY3Rpb24gKGRhdGUpIHsgcmV0dXJuIHBhZChkYXRlLmdldFNlY29uZHMoKSk7IH0sXG4gICAgICAgIC8vIHVuaXggdGltZXN0YW1wXG4gICAgICAgIFU6IGZ1bmN0aW9uIChkYXRlKSB7IHJldHVybiBkYXRlLmdldFRpbWUoKSAvIDEwMDA7IH0sXG4gICAgICAgIFc6IGZ1bmN0aW9uIChkYXRlLCBfLCBvcHRpb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5nZXRXZWVrKGRhdGUpO1xuICAgICAgICB9LFxuICAgICAgICAvLyBmdWxsIHllYXIgZS5nLiAyMDE2XG4gICAgICAgIFk6IGZ1bmN0aW9uIChkYXRlKSB7IHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCk7IH0sXG4gICAgICAgIC8vIGRheSBpbiBtb250aCwgcGFkZGVkICgwMS0zMClcbiAgICAgICAgZDogZnVuY3Rpb24gKGRhdGUpIHsgcmV0dXJuIHBhZChkYXRlLmdldERhdGUoKSk7IH0sXG4gICAgICAgIC8vIGhvdXIgZnJvbSAxLTEyIChhbS9wbSlcbiAgICAgICAgaDogZnVuY3Rpb24gKGRhdGUpIHsgcmV0dXJuIChkYXRlLmdldEhvdXJzKCkgJSAxMiA/IGRhdGUuZ2V0SG91cnMoKSAlIDEyIDogMTIpOyB9LFxuICAgICAgICAvLyBtaW51dGVzLCBwYWRkZWQgd2l0aCBsZWFkaW5nIHplcm8gZS5nLiAwOVxuICAgICAgICBpOiBmdW5jdGlvbiAoZGF0ZSkgeyByZXR1cm4gcGFkKGRhdGUuZ2V0TWludXRlcygpKTsgfSxcbiAgICAgICAgLy8gZGF5IGluIG1vbnRoICgxLTMwKVxuICAgICAgICBqOiBmdW5jdGlvbiAoZGF0ZSkgeyByZXR1cm4gZGF0ZS5nZXREYXRlKCk7IH0sXG4gICAgICAgIC8vIHdlZWtkYXkgbmFtZSwgZnVsbCwgZS5nLiBUaHVyc2RheVxuICAgICAgICBsOiBmdW5jdGlvbiAoZGF0ZSwgbG9jYWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLndlZWtkYXlzLmxvbmdoYW5kW2RhdGUuZ2V0RGF5KCldO1xuICAgICAgICB9LFxuICAgICAgICAvLyBwYWRkZWQgbW9udGggbnVtYmVyICgwMS0xMilcbiAgICAgICAgbTogZnVuY3Rpb24gKGRhdGUpIHsgcmV0dXJuIHBhZChkYXRlLmdldE1vbnRoKCkgKyAxKTsgfSxcbiAgICAgICAgLy8gdGhlIG1vbnRoIG51bWJlciAoMS0xMilcbiAgICAgICAgbjogZnVuY3Rpb24gKGRhdGUpIHsgcmV0dXJuIGRhdGUuZ2V0TW9udGgoKSArIDE7IH0sXG4gICAgICAgIC8vIHNlY29uZHMgMC01OVxuICAgICAgICBzOiBmdW5jdGlvbiAoZGF0ZSkgeyByZXR1cm4gZGF0ZS5nZXRTZWNvbmRzKCk7IH0sXG4gICAgICAgIC8vIFVuaXggTWlsbGlzZWNvbmRzXG4gICAgICAgIHU6IGZ1bmN0aW9uIChkYXRlKSB7IHJldHVybiBkYXRlLmdldFRpbWUoKTsgfSxcbiAgICAgICAgLy8gbnVtYmVyIG9mIHRoZSBkYXkgb2YgdGhlIHdlZWtcbiAgICAgICAgdzogZnVuY3Rpb24gKGRhdGUpIHsgcmV0dXJuIGRhdGUuZ2V0RGF5KCk7IH0sXG4gICAgICAgIC8vIGxhc3QgdHdvIGRpZ2l0cyBvZiB5ZWFyIGUuZy4gMTYgZm9yIDIwMTZcbiAgICAgICAgeTogZnVuY3Rpb24gKGRhdGUpIHsgcmV0dXJuIFN0cmluZyhkYXRlLmdldEZ1bGxZZWFyKCkpLnN1YnN0cmluZygyKTsgfVxuICAgIH07XG5cbiAgICB2YXIgY3JlYXRlRGF0ZUZvcm1hdHRlciA9IGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgX2IgPSBfYS5jb25maWcsIGNvbmZpZyA9IF9iID09PSB2b2lkIDAgPyBkZWZhdWx0cyA6IF9iLCBfYyA9IF9hLmwxMG4sIGwxMG4gPSBfYyA9PT0gdm9pZCAwID8gZW5nbGlzaCA6IF9jO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGRhdGVPYmosIGZybXQsIG92ZXJyaWRlTG9jYWxlKSB7XG4gICAgICAgICAgICB2YXIgbG9jYWxlID0gb3ZlcnJpZGVMb2NhbGUgfHwgbDEwbjtcbiAgICAgICAgICAgIGlmIChjb25maWcuZm9ybWF0RGF0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy5mb3JtYXREYXRlKGRhdGVPYmosIGZybXQsIGxvY2FsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZnJtdFxuICAgICAgICAgICAgICAgIC5zcGxpdChcIlwiKVxuICAgICAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKGMsIGksIGFycikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXRzW2NdICYmIGFycltpIC0gMV0gIT09IFwiXFxcXFwiXG4gICAgICAgICAgICAgICAgICAgID8gZm9ybWF0c1tjXShkYXRlT2JqLCBsb2NhbGUsIGNvbmZpZylcbiAgICAgICAgICAgICAgICAgICAgOiBjICE9PSBcIlxcXFxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPyBjXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCI7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5qb2luKFwiXCIpO1xuICAgICAgICB9O1xuICAgIH07XG4gICAgdmFyIGNyZWF0ZURhdGVQYXJzZXIgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIF9iID0gX2EuY29uZmlnLCBjb25maWcgPSBfYiA9PT0gdm9pZCAwID8gZGVmYXVsdHMgOiBfYiwgX2MgPSBfYS5sMTBuLCBsMTBuID0gX2MgPT09IHZvaWQgMCA/IGVuZ2xpc2ggOiBfYztcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChkYXRlLCBnaXZlbkZvcm1hdCwgdGltZWxlc3MsIGN1c3RvbUxvY2FsZSkge1xuICAgICAgICAgICAgaWYgKGRhdGUgIT09IDAgJiYgIWRhdGUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHZhciBsb2NhbGUgPSBjdXN0b21Mb2NhbGUgfHwgbDEwbjtcbiAgICAgICAgICAgIHZhciBwYXJzZWREYXRlO1xuICAgICAgICAgICAgdmFyIGRhdGVPcmlnID0gZGF0ZTtcbiAgICAgICAgICAgIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSlcbiAgICAgICAgICAgICAgICBwYXJzZWREYXRlID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpO1xuICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIGRhdGUgIT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgICAgICBkYXRlLnRvRml4ZWQgIT09IHVuZGVmaW5lZCAvLyB0aW1lc3RhbXBcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAvLyBjcmVhdGUgYSBjb3B5XG4gICAgICAgICAgICAgICAgcGFyc2VkRGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIGRhdGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAvLyBkYXRlIHN0cmluZ1xuICAgICAgICAgICAgICAgIHZhciBmb3JtYXQgPSBnaXZlbkZvcm1hdCB8fCAoY29uZmlnIHx8IGRlZmF1bHRzKS5kYXRlRm9ybWF0O1xuICAgICAgICAgICAgICAgIHZhciBkYXRlc3RyID0gU3RyaW5nKGRhdGUpLnRyaW0oKTtcbiAgICAgICAgICAgICAgICBpZiAoZGF0ZXN0ciA9PT0gXCJ0b2RheVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aW1lbGVzcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKC9aJC8udGVzdChkYXRlc3RyKSB8fFxuICAgICAgICAgICAgICAgICAgICAvR01UJC8udGVzdChkYXRlc3RyKSAvLyBkYXRlc3RyaW5ncyB3LyB0aW1lem9uZVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkRGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbmZpZyAmJiBjb25maWcucGFyc2VEYXRlKVxuICAgICAgICAgICAgICAgICAgICBwYXJzZWREYXRlID0gY29uZmlnLnBhcnNlRGF0ZShkYXRlLCBmb3JtYXQpO1xuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwYXJzZWREYXRlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICFjb25maWcgfHwgIWNvbmZpZy5ub0NhbGVuZGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBuZXcgRGF0ZShuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksIDAsIDEsIDAsIDAsIDAsIDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBuZXcgRGF0ZShuZXcgRGF0ZSgpLnNldEhvdXJzKDAsIDAsIDAsIDApKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoZWQgPSB2b2lkIDAsIG9wcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbWF0Y2hJbmRleCA9IDAsIHJlZ2V4U3RyID0gXCJcIjsgaSA8IGZvcm1hdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRva2VuXzEgPSBmb3JtYXRbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXNCYWNrU2xhc2ggPSB0b2tlbl8xID09PSBcIlxcXFxcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlc2NhcGVkID0gZm9ybWF0W2kgLSAxXSA9PT0gXCJcXFxcXCIgfHwgaXNCYWNrU2xhc2g7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW5SZWdleFt0b2tlbl8xXSAmJiAhZXNjYXBlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2V4U3RyICs9IHRva2VuUmVnZXhbdG9rZW5fMV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoID0gbmV3IFJlZ0V4cChyZWdleFN0cikuZXhlYyhkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2ggJiYgKG1hdGNoZWQgPSB0cnVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHNbdG9rZW5fMSAhPT0gXCJZXCIgPyBcInB1c2hcIiA6IFwidW5zaGlmdFwiXSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbjogcmV2Rm9ybWF0W3Rva2VuXzFdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsOiBtYXRjaFsrK21hdGNoSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFpc0JhY2tTbGFzaClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdleFN0ciArPSBcIi5cIjsgLy8gZG9uJ3QgcmVhbGx5IGNhcmVcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wcy5mb3JFYWNoKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmbiA9IF9hLmZuLCB2YWwgPSBfYS52YWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChwYXJzZWREYXRlID0gZm4ocGFyc2VkRGF0ZSwgdmFsLCBsb2NhbGUpIHx8IHBhcnNlZERhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkRGF0ZSA9IG1hdGNoZWQgPyBwYXJzZWREYXRlIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgICBpZiAoIShwYXJzZWREYXRlIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNOYU4ocGFyc2VkRGF0ZS5nZXRUaW1lKCkpKSkge1xuICAgICAgICAgICAgICAgIGNvbmZpZy5lcnJvckhhbmRsZXIobmV3IEVycm9yKFwiSW52YWxpZCBkYXRlIHByb3ZpZGVkOiBcIiArIGRhdGVPcmlnKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aW1lbGVzcyA9PT0gdHJ1ZSlcbiAgICAgICAgICAgICAgICBwYXJzZWREYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlZERhdGU7XG4gICAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDb21wdXRlIHRoZSBkaWZmZXJlbmNlIGluIGRhdGVzLCBtZWFzdXJlZCBpbiBtc1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbXBhcmVEYXRlcyhkYXRlMSwgZGF0ZTIsIHRpbWVsZXNzKSB7XG4gICAgICAgIGlmICh0aW1lbGVzcyA9PT0gdm9pZCAwKSB7IHRpbWVsZXNzID0gdHJ1ZTsgfVxuICAgICAgICBpZiAodGltZWxlc3MgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gKG5ldyBEYXRlKGRhdGUxLmdldFRpbWUoKSkuc2V0SG91cnMoMCwgMCwgMCwgMCkgLVxuICAgICAgICAgICAgICAgIG5ldyBEYXRlKGRhdGUyLmdldFRpbWUoKSkuc2V0SG91cnMoMCwgMCwgMCwgMCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRlMS5nZXRUaW1lKCkgLSBkYXRlMi5nZXRUaW1lKCk7XG4gICAgfVxuICAgIHZhciBpc0JldHdlZW4gPSBmdW5jdGlvbiAodHMsIHRzMSwgdHMyKSB7XG4gICAgICAgIHJldHVybiB0cyA+IE1hdGgubWluKHRzMSwgdHMyKSAmJiB0cyA8IE1hdGgubWF4KHRzMSwgdHMyKTtcbiAgICB9O1xuICAgIHZhciBkdXJhdGlvbiA9IHtcbiAgICAgICAgREFZOiA4NjQwMDAwMFxuICAgIH07XG5cbiAgICBpZiAodHlwZW9mIE9iamVjdC5hc3NpZ24gIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBPYmplY3QuYXNzaWduID0gZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgYXJnc1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiQ2Fubm90IGNvbnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNvdXJjZSkge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gKHRhcmdldFtrZXldID0gc291cmNlW2tleV0pOyB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZm9yICh2YXIgX2EgPSAwLCBhcmdzXzEgPSBhcmdzOyBfYSA8IGFyZ3NfMS5sZW5ndGg7IF9hKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgc291cmNlID0gYXJnc18xW19hXTtcbiAgICAgICAgICAgICAgICBfbG9vcF8xKHNvdXJjZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciBERUJPVU5DRURfQ0hBTkdFX01TID0gMzAwO1xuICAgIGZ1bmN0aW9uIEZsYXRwaWNrckluc3RhbmNlKGVsZW1lbnQsIGluc3RhbmNlQ29uZmlnKSB7XG4gICAgICAgIHZhciBzZWxmID0ge1xuICAgICAgICAgICAgY29uZmlnOiBfX2Fzc2lnbih7fSwgZGVmYXVsdHMsIGZsYXRwaWNrci5kZWZhdWx0Q29uZmlnKSxcbiAgICAgICAgICAgIGwxMG46IGVuZ2xpc2hcbiAgICAgICAgfTtcbiAgICAgICAgc2VsZi5wYXJzZURhdGUgPSBjcmVhdGVEYXRlUGFyc2VyKHsgY29uZmlnOiBzZWxmLmNvbmZpZywgbDEwbjogc2VsZi5sMTBuIH0pO1xuICAgICAgICBzZWxmLl9oYW5kbGVycyA9IFtdO1xuICAgICAgICBzZWxmLnBsdWdpbkVsZW1lbnRzID0gW107XG4gICAgICAgIHNlbGYubG9hZGVkUGx1Z2lucyA9IFtdO1xuICAgICAgICBzZWxmLl9iaW5kID0gYmluZDtcbiAgICAgICAgc2VsZi5fc2V0SG91cnNGcm9tRGF0ZSA9IHNldEhvdXJzRnJvbURhdGU7XG4gICAgICAgIHNlbGYuX3Bvc2l0aW9uQ2FsZW5kYXIgPSBwb3NpdGlvbkNhbGVuZGFyO1xuICAgICAgICBzZWxmLmNoYW5nZU1vbnRoID0gY2hhbmdlTW9udGg7XG4gICAgICAgIHNlbGYuY2hhbmdlWWVhciA9IGNoYW5nZVllYXI7XG4gICAgICAgIHNlbGYuY2xlYXIgPSBjbGVhcjtcbiAgICAgICAgc2VsZi5jbG9zZSA9IGNsb3NlO1xuICAgICAgICBzZWxmLl9jcmVhdGVFbGVtZW50ID0gY3JlYXRlRWxlbWVudDtcbiAgICAgICAgc2VsZi5kZXN0cm95ID0gZGVzdHJveTtcbiAgICAgICAgc2VsZi5pc0VuYWJsZWQgPSBpc0VuYWJsZWQ7XG4gICAgICAgIHNlbGYuanVtcFRvRGF0ZSA9IGp1bXBUb0RhdGU7XG4gICAgICAgIHNlbGYub3BlbiA9IG9wZW47XG4gICAgICAgIHNlbGYucmVkcmF3ID0gcmVkcmF3O1xuICAgICAgICBzZWxmLnNldCA9IHNldDtcbiAgICAgICAgc2VsZi5zZXREYXRlID0gc2V0RGF0ZTtcbiAgICAgICAgc2VsZi50b2dnbGUgPSB0b2dnbGU7XG4gICAgICAgIGZ1bmN0aW9uIHNldHVwSGVscGVyRnVuY3Rpb25zKCkge1xuICAgICAgICAgICAgc2VsZi51dGlscyA9IHtcbiAgICAgICAgICAgICAgICBnZXREYXlzSW5Nb250aDogZnVuY3Rpb24gKG1vbnRoLCB5cikge1xuICAgICAgICAgICAgICAgICAgICBpZiAobW9udGggPT09IHZvaWQgMCkgeyBtb250aCA9IHNlbGYuY3VycmVudE1vbnRoOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh5ciA9PT0gdm9pZCAwKSB7IHlyID0gc2VsZi5jdXJyZW50WWVhcjsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAobW9udGggPT09IDEgJiYgKCh5ciAlIDQgPT09IDAgJiYgeXIgJSAxMDAgIT09IDApIHx8IHlyICUgNDAwID09PSAwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAyOTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYubDEwbi5kYXlzSW5Nb250aFttb250aF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBpbml0KCkge1xuICAgICAgICAgICAgc2VsZi5lbGVtZW50ID0gc2VsZi5pbnB1dCA9IGVsZW1lbnQ7XG4gICAgICAgICAgICBzZWxmLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgcGFyc2VDb25maWcoKTtcbiAgICAgICAgICAgIHNldHVwTG9jYWxlKCk7XG4gICAgICAgICAgICBzZXR1cElucHV0cygpO1xuICAgICAgICAgICAgc2V0dXBEYXRlcygpO1xuICAgICAgICAgICAgc2V0dXBIZWxwZXJGdW5jdGlvbnMoKTtcbiAgICAgICAgICAgIGlmICghc2VsZi5pc01vYmlsZSlcbiAgICAgICAgICAgICAgICBidWlsZCgpO1xuICAgICAgICAgICAgYmluZEV2ZW50cygpO1xuICAgICAgICAgICAgaWYgKHNlbGYuc2VsZWN0ZWREYXRlcy5sZW5ndGggfHwgc2VsZi5jb25maWcubm9DYWxlbmRhcikge1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5lbmFibGVUaW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldEhvdXJzRnJvbURhdGUoc2VsZi5jb25maWcubm9DYWxlbmRhclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWxmLmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiB8fCBzZWxmLmNvbmZpZy5taW5EYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHVwZGF0ZVZhbHVlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldENhbGVuZGFyV2lkdGgoKTtcbiAgICAgICAgICAgIHNlbGYuc2hvd1RpbWVJbnB1dCA9XG4gICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RlZERhdGVzLmxlbmd0aCA+IDAgfHwgc2VsZi5jb25maWcubm9DYWxlbmRhcjtcbiAgICAgICAgICAgIHZhciBpc1NhZmFyaSA9IC9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gICAgICAgICAgICAvKiBUT0RPOiBpbnZlc3RpZ2F0ZSB0aGlzIGZ1cnRoZXJcbiAgICAgICAgXG4gICAgICAgICAgICAgIEN1cnJlbnRseSwgdGhlcmUgaXMgd2VpcmQgcG9zaXRpb25pbmcgYmVoYXZpb3IgaW4gc2FmYXJpIGNhdXNpbmcgcGFnZXNcbiAgICAgICAgICAgICAgdG8gc2Nyb2xsIHVwLiBodHRwczovL2dpdGh1Yi5jb20vY2htbG4vZmxhdHBpY2tyL2lzc3Vlcy81NjNcbiAgICAgICAgXG4gICAgICAgICAgICAgIEhvd2V2ZXIsIG1vc3QgYnJvd3NlcnMgYXJlIG5vdCBTYWZhcmkgYW5kIHBvc2l0aW9uaW5nIGlzIGV4cGVuc2l2ZSB3aGVuIHVzZWRcbiAgICAgICAgICAgICAgaW4gc2NhbGUuIGh0dHBzOi8vZ2l0aHViLmNvbS9jaG1sbi9mbGF0cGlja3IvaXNzdWVzLzEwOTZcbiAgICAgICAgICAgICovXG4gICAgICAgICAgICBpZiAoIXNlbGYuaXNNb2JpbGUgJiYgaXNTYWZhcmkpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbkNhbGVuZGFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cmlnZ2VyRXZlbnQoXCJvblJlYWR5XCIpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGJpbmRUb0luc3RhbmNlKGZuKSB7XG4gICAgICAgICAgICByZXR1cm4gZm4uYmluZChzZWxmKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzZXRDYWxlbmRhcldpZHRoKCkge1xuICAgICAgICAgICAgdmFyIGNvbmZpZyA9IHNlbGYuY29uZmlnO1xuICAgICAgICAgICAgaWYgKGNvbmZpZy53ZWVrTnVtYmVycyA9PT0gZmFsc2UgJiYgY29uZmlnLnNob3dNb250aHMgPT09IDEpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgZWxzZSBpZiAoY29uZmlnLm5vQ2FsZW5kYXIgIT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuY2FsZW5kYXJDb250YWluZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FsZW5kYXJDb250YWluZXIuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5kYXlzQ29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXlzV2lkdGggPSAoc2VsZi5kYXlzLm9mZnNldFdpZHRoICsgMSkgKiBjb25maWcuc2hvd01vbnRocztcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF5c0NvbnRhaW5lci5zdHlsZS53aWR0aCA9IGRheXNXaWR0aCArIFwicHhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FsZW5kYXJDb250YWluZXIuc3R5bGUud2lkdGggPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheXNXaWR0aCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLndlZWtXcmFwcGVyICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc2VsZi53ZWVrV3JhcHBlci5vZmZzZXRXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicHhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FsZW5kYXJDb250YWluZXIuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJ2aXNpYmlsaXR5XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcImRpc3BsYXlcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIGhhbmRsZXIgZm9yIGFsbCBldmVudHMgdGFyZ2V0aW5nIHRoZSB0aW1lIGlucHV0c1xuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlVGltZShlKSB7XG4gICAgICAgICAgICBpZiAoc2VsZi5zZWxlY3RlZERhdGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHNldERlZmF1bHRUaW1lKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZSAhPT0gdW5kZWZpbmVkICYmIGUudHlwZSAhPT0gXCJibHVyXCIpIHtcbiAgICAgICAgICAgICAgICB0aW1lV3JhcHBlcihlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBwcmV2VmFsdWUgPSBzZWxmLl9pbnB1dC52YWx1ZTtcbiAgICAgICAgICAgIHNldEhvdXJzRnJvbUlucHV0cygpO1xuICAgICAgICAgICAgdXBkYXRlVmFsdWUoKTtcbiAgICAgICAgICAgIGlmIChzZWxmLl9pbnB1dC52YWx1ZSAhPT0gcHJldlZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5fZGVib3VuY2VkQ2hhbmdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gYW1wbTJtaWxpdGFyeShob3VyLCBhbVBNKSB7XG4gICAgICAgICAgICByZXR1cm4gKGhvdXIgJSAxMikgKyAxMiAqIGludChhbVBNID09PSBzZWxmLmwxMG4uYW1QTVsxXSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gbWlsaXRhcnkyYW1wbShob3VyKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGhvdXIgJSAyNCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTI7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgJSAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogU3luY3MgdGhlIHNlbGVjdGVkIGRhdGUgb2JqZWN0IHRpbWUgd2l0aCB1c2VyJ3MgdGltZSBpbnB1dFxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gc2V0SG91cnNGcm9tSW5wdXRzKCkge1xuICAgICAgICAgICAgaWYgKHNlbGYuaG91ckVsZW1lbnQgPT09IHVuZGVmaW5lZCB8fCBzZWxmLm1pbnV0ZUVsZW1lbnQgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB2YXIgaG91cnMgPSAocGFyc2VJbnQoc2VsZi5ob3VyRWxlbWVudC52YWx1ZS5zbGljZSgtMiksIDEwKSB8fCAwKSAlIDI0LCBtaW51dGVzID0gKHBhcnNlSW50KHNlbGYubWludXRlRWxlbWVudC52YWx1ZSwgMTApIHx8IDApICUgNjAsIHNlY29uZHMgPSBzZWxmLnNlY29uZEVsZW1lbnQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgID8gKHBhcnNlSW50KHNlbGYuc2Vjb25kRWxlbWVudC52YWx1ZSwgMTApIHx8IDApICUgNjBcbiAgICAgICAgICAgICAgICA6IDA7XG4gICAgICAgICAgICBpZiAoc2VsZi5hbVBNICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBob3VycyA9IGFtcG0ybWlsaXRhcnkoaG91cnMsIHNlbGYuYW1QTS50ZXh0Q29udGVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgbGltaXRNaW5Ib3VycyA9IHNlbGYuY29uZmlnLm1pblRpbWUgIT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgIChzZWxmLmNvbmZpZy5taW5EYXRlICYmXG4gICAgICAgICAgICAgICAgICAgIHNlbGYubWluRGF0ZUhhc1RpbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5sYXRlc3RTZWxlY3RlZERhdGVPYmogJiZcbiAgICAgICAgICAgICAgICAgICAgY29tcGFyZURhdGVzKHNlbGYubGF0ZXN0U2VsZWN0ZWREYXRlT2JqLCBzZWxmLmNvbmZpZy5taW5EYXRlLCB0cnVlKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgIDApO1xuICAgICAgICAgICAgdmFyIGxpbWl0TWF4SG91cnMgPSBzZWxmLmNvbmZpZy5tYXhUaW1lICE9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAoc2VsZi5jb25maWcubWF4RGF0ZSAmJlxuICAgICAgICAgICAgICAgICAgICBzZWxmLm1heERhdGVIYXNUaW1lICYmXG4gICAgICAgICAgICAgICAgICAgIHNlbGYubGF0ZXN0U2VsZWN0ZWREYXRlT2JqICYmXG4gICAgICAgICAgICAgICAgICAgIGNvbXBhcmVEYXRlcyhzZWxmLmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiwgc2VsZi5jb25maWcubWF4RGF0ZSwgdHJ1ZSkgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAwKTtcbiAgICAgICAgICAgIGlmIChsaW1pdE1heEhvdXJzKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1heFRpbWUgPSBzZWxmLmNvbmZpZy5tYXhUaW1lICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgPyBzZWxmLmNvbmZpZy5tYXhUaW1lXG4gICAgICAgICAgICAgICAgICAgIDogc2VsZi5jb25maWcubWF4RGF0ZTtcbiAgICAgICAgICAgICAgICBob3VycyA9IE1hdGgubWluKGhvdXJzLCBtYXhUaW1lLmdldEhvdXJzKCkpO1xuICAgICAgICAgICAgICAgIGlmIChob3VycyA9PT0gbWF4VGltZS5nZXRIb3VycygpKVxuICAgICAgICAgICAgICAgICAgICBtaW51dGVzID0gTWF0aC5taW4obWludXRlcywgbWF4VGltZS5nZXRNaW51dGVzKCkpO1xuICAgICAgICAgICAgICAgIGlmIChtaW51dGVzID09PSBtYXhUaW1lLmdldE1pbnV0ZXMoKSlcbiAgICAgICAgICAgICAgICAgICAgc2Vjb25kcyA9IE1hdGgubWluKHNlY29uZHMsIG1heFRpbWUuZ2V0U2Vjb25kcygpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsaW1pdE1pbkhvdXJzKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1pblRpbWUgPSBzZWxmLmNvbmZpZy5taW5UaW1lICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgPyBzZWxmLmNvbmZpZy5taW5UaW1lXG4gICAgICAgICAgICAgICAgICAgIDogc2VsZi5jb25maWcubWluRGF0ZTtcbiAgICAgICAgICAgICAgICBob3VycyA9IE1hdGgubWF4KGhvdXJzLCBtaW5UaW1lLmdldEhvdXJzKCkpO1xuICAgICAgICAgICAgICAgIGlmIChob3VycyA9PT0gbWluVGltZS5nZXRIb3VycygpKVxuICAgICAgICAgICAgICAgICAgICBtaW51dGVzID0gTWF0aC5tYXgobWludXRlcywgbWluVGltZS5nZXRNaW51dGVzKCkpO1xuICAgICAgICAgICAgICAgIGlmIChtaW51dGVzID09PSBtaW5UaW1lLmdldE1pbnV0ZXMoKSlcbiAgICAgICAgICAgICAgICAgICAgc2Vjb25kcyA9IE1hdGgubWF4KHNlY29uZHMsIG1pblRpbWUuZ2V0U2Vjb25kcygpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldEhvdXJzKGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogU3luY3MgdGltZSBpbnB1dCB2YWx1ZXMgd2l0aCBhIGRhdGVcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHNldEhvdXJzRnJvbURhdGUoZGF0ZU9iaikge1xuICAgICAgICAgICAgdmFyIGRhdGUgPSBkYXRlT2JqIHx8IHNlbGYubGF0ZXN0U2VsZWN0ZWREYXRlT2JqO1xuICAgICAgICAgICAgaWYgKGRhdGUpXG4gICAgICAgICAgICAgICAgc2V0SG91cnMoZGF0ZS5nZXRIb3VycygpLCBkYXRlLmdldE1pbnV0ZXMoKSwgZGF0ZS5nZXRTZWNvbmRzKCkpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHNldERlZmF1bHRIb3VycygpIHtcbiAgICAgICAgICAgIHZhciBob3VycyA9IHNlbGYuY29uZmlnLmRlZmF1bHRIb3VyO1xuICAgICAgICAgICAgdmFyIG1pbnV0ZXMgPSBzZWxmLmNvbmZpZy5kZWZhdWx0TWludXRlO1xuICAgICAgICAgICAgdmFyIHNlY29uZHMgPSBzZWxmLmNvbmZpZy5kZWZhdWx0U2Vjb25kcztcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5taW5EYXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB2YXIgbWluSHIgPSBzZWxmLmNvbmZpZy5taW5EYXRlLmdldEhvdXJzKCk7XG4gICAgICAgICAgICAgICAgdmFyIG1pbk1pbnV0ZXMgPSBzZWxmLmNvbmZpZy5taW5EYXRlLmdldE1pbnV0ZXMoKTtcbiAgICAgICAgICAgICAgICBob3VycyA9IE1hdGgubWF4KGhvdXJzLCBtaW5Icik7XG4gICAgICAgICAgICAgICAgaWYgKGhvdXJzID09PSBtaW5IcilcbiAgICAgICAgICAgICAgICAgICAgbWludXRlcyA9IE1hdGgubWF4KG1pbk1pbnV0ZXMsIG1pbnV0ZXMpO1xuICAgICAgICAgICAgICAgIGlmIChob3VycyA9PT0gbWluSHIgJiYgbWludXRlcyA9PT0gbWluTWludXRlcylcbiAgICAgICAgICAgICAgICAgICAgc2Vjb25kcyA9IHNlbGYuY29uZmlnLm1pbkRhdGUuZ2V0U2Vjb25kcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLm1heERhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHZhciBtYXhIciA9IHNlbGYuY29uZmlnLm1heERhdGUuZ2V0SG91cnMoKTtcbiAgICAgICAgICAgICAgICB2YXIgbWF4TWludXRlcyA9IHNlbGYuY29uZmlnLm1heERhdGUuZ2V0TWludXRlcygpO1xuICAgICAgICAgICAgICAgIGhvdXJzID0gTWF0aC5taW4oaG91cnMsIG1heEhyKTtcbiAgICAgICAgICAgICAgICBpZiAoaG91cnMgPT09IG1heEhyKVxuICAgICAgICAgICAgICAgICAgICBtaW51dGVzID0gTWF0aC5taW4obWF4TWludXRlcywgbWludXRlcyk7XG4gICAgICAgICAgICAgICAgaWYgKGhvdXJzID09PSBtYXhIciAmJiBtaW51dGVzID09PSBtYXhNaW51dGVzKVxuICAgICAgICAgICAgICAgICAgICBzZWNvbmRzID0gc2VsZi5jb25maWcubWF4RGF0ZS5nZXRTZWNvbmRzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRIb3Vycyhob3VycywgbWludXRlcywgc2Vjb25kcyk7XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNldHMgdGhlIGhvdXJzLCBtaW51dGVzLCBhbmQgb3B0aW9uYWxseSBzZWNvbmRzXG4gICAgICAgICAqIG9mIHRoZSBsYXRlc3Qgc2VsZWN0ZWQgZGF0ZSBvYmplY3QgYW5kIHRoZVxuICAgICAgICAgKiBjb3JyZXNwb25kaW5nIHRpbWUgaW5wdXRzXG4gICAgICAgICAqIEBwYXJhbSB7TnVtYmVyfSBob3VycyB0aGUgaG91ci4gd2hldGhlciBpdHMgbWlsaXRhcnlcbiAgICAgICAgICogICAgICAgICAgICAgICAgIG9yIGFtLXBtIGdldHMgaW5mZXJyZWQgZnJvbSBjb25maWdcbiAgICAgICAgICogQHBhcmFtIHtOdW1iZXJ9IG1pbnV0ZXMgdGhlIG1pbnV0ZXNcbiAgICAgICAgICogQHBhcmFtIHtOdW1iZXJ9IHNlY29uZHMgdGhlIHNlY29uZHMgKG9wdGlvbmFsKVxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gc2V0SG91cnMoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpIHtcbiAgICAgICAgICAgIGlmIChzZWxmLmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5sYXRlc3RTZWxlY3RlZERhdGVPYmouc2V0SG91cnMoaG91cnMgJSAyNCwgbWludXRlcywgc2Vjb25kcyB8fCAwLCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc2VsZi5ob3VyRWxlbWVudCB8fCAhc2VsZi5taW51dGVFbGVtZW50IHx8IHNlbGYuaXNNb2JpbGUpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgc2VsZi5ob3VyRWxlbWVudC52YWx1ZSA9IHBhZCghc2VsZi5jb25maWcudGltZV8yNGhyXG4gICAgICAgICAgICAgICAgPyAoKDEyICsgaG91cnMpICUgMTIpICsgMTIgKiBpbnQoaG91cnMgJSAxMiA9PT0gMClcbiAgICAgICAgICAgICAgICA6IGhvdXJzKTtcbiAgICAgICAgICAgIHNlbGYubWludXRlRWxlbWVudC52YWx1ZSA9IHBhZChtaW51dGVzKTtcbiAgICAgICAgICAgIGlmIChzZWxmLmFtUE0gIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBzZWxmLmFtUE0udGV4dENvbnRlbnQgPSBzZWxmLmwxMG4uYW1QTVtpbnQoaG91cnMgPj0gMTIpXTtcbiAgICAgICAgICAgIGlmIChzZWxmLnNlY29uZEVsZW1lbnQgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBzZWxmLnNlY29uZEVsZW1lbnQudmFsdWUgPSBwYWQoc2Vjb25kcyk7XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEhhbmRsZXMgdGhlIHllYXIgaW5wdXQgYW5kIGluY3JlbWVudGluZyBldmVudHNcbiAgICAgICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQgdGhlIGtleXVwIG9yIGluY3JlbWVudCBldmVudFxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gb25ZZWFySW5wdXQoZXZlbnQpIHtcbiAgICAgICAgICAgIHZhciB5ZWFyID0gcGFyc2VJbnQoZXZlbnQudGFyZ2V0LnZhbHVlKSArIChldmVudC5kZWx0YSB8fCAwKTtcbiAgICAgICAgICAgIGlmICh5ZWFyIC8gMTAwMCA+IDEgfHxcbiAgICAgICAgICAgICAgICAoZXZlbnQua2V5ID09PSBcIkVudGVyXCIgJiYgIS9bXlxcZF0vLnRlc3QoeWVhci50b1N0cmluZygpKSkpIHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VZZWFyKHllYXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBFc3NlbnRpYWxseSBhZGRFdmVudExpc3RlbmVyICsgdHJhY2tpbmdcbiAgICAgICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IHRoZSBlbGVtZW50IHRvIGFkZEV2ZW50TGlzdGVuZXIgdG9cbiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50IHRoZSBldmVudCBuYW1lXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgdGhlIGV2ZW50IGhhbmRsZXJcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGJpbmQoZWxlbWVudCwgZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEFycmF5KVxuICAgICAgICAgICAgICAgIHJldHVybiBldmVudC5mb3JFYWNoKGZ1bmN0aW9uIChldikgeyByZXR1cm4gYmluZChlbGVtZW50LCBldiwgaGFuZGxlciwgb3B0aW9ucyk7IH0pO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBBcnJheSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudC5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gYmluZChlbCwgZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpOyB9KTtcbiAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgb3B0aW9ucyk7XG4gICAgICAgICAgICBzZWxmLl9oYW5kbGVycy5wdXNoKHtcbiAgICAgICAgICAgICAgICBlbGVtZW50OiBlbGVtZW50LFxuICAgICAgICAgICAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBoYW5kbGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBIG1vdXNlZG93biBoYW5kbGVyIHdoaWNoIG1pbWljcyBjbGljay5cbiAgICAgICAgICogTWluaW1pemVzIGxhdGVuY3ksIHNpbmNlIHdlIGRvbid0IG5lZWQgdG8gd2FpdCBmb3IgbW91c2V1cCBpbiBtb3N0IGNhc2VzLlxuICAgICAgICAgKiBBbHNvLCBhdm9pZHMgaGFuZGxpbmcgcmlnaHQgY2xpY2tzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIHRoZSBldmVudCBoYW5kbGVyXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBvbkNsaWNrKGhhbmRsZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICAgICAgZXZ0LndoaWNoID09PSAxICYmIGhhbmRsZXIoZXZ0KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gdHJpZ2dlckNoYW5nZSgpIHtcbiAgICAgICAgICAgIHRyaWdnZXJFdmVudChcIm9uQ2hhbmdlXCIpO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBZGRzIGFsbCB0aGUgbmVjZXNzYXJ5IGV2ZW50IGxpc3RlbmVyc1xuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gYmluZEV2ZW50cygpIHtcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy53cmFwKSB7XG4gICAgICAgICAgICAgICAgW1wib3BlblwiLCBcImNsb3NlXCIsIFwidG9nZ2xlXCIsIFwiY2xlYXJcIl0uZm9yRWFjaChmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoc2VsZi5lbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1cIiArIGV2dCArIFwiXVwiKSwgZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYmluZChlbCwgXCJjbGlja1wiLCBzZWxmW2V2dF0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxmLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgc2V0dXBNb2JpbGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgZGVib3VuY2VkUmVzaXplID0gZGVib3VuY2Uob25SZXNpemUsIDUwKTtcbiAgICAgICAgICAgIHNlbGYuX2RlYm91bmNlZENoYW5nZSA9IGRlYm91bmNlKHRyaWdnZXJDaGFuZ2UsIERFQk9VTkNFRF9DSEFOR0VfTVMpO1xuICAgICAgICAgICAgaWYgKHNlbGYuZGF5c0NvbnRhaW5lciAmJiAhL2lQaG9uZXxpUGFkfGlQb2QvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKVxuICAgICAgICAgICAgICAgIGJpbmQoc2VsZi5kYXlzQ29udGFpbmVyLCBcIm1vdXNlb3ZlclwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5jb25maWcubW9kZSA9PT0gXCJyYW5nZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZU92ZXIoZS50YXJnZXQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYmluZCh3aW5kb3cuZG9jdW1lbnQuYm9keSwgXCJrZXlkb3duXCIsIG9uS2V5RG93bik7XG4gICAgICAgICAgICBpZiAoIXNlbGYuY29uZmlnLmlubGluZSAmJiAhc2VsZi5jb25maWcuc3RhdGljKVxuICAgICAgICAgICAgICAgIGJpbmQod2luZG93LCBcInJlc2l6ZVwiLCBkZWJvdW5jZWRSZXNpemUpO1xuICAgICAgICAgICAgaWYgKHdpbmRvdy5vbnRvdWNoc3RhcnQgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBiaW5kKHdpbmRvdy5kb2N1bWVudCwgXCJ0b3VjaHN0YXJ0XCIsIGRvY3VtZW50Q2xpY2spO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGJpbmQod2luZG93LmRvY3VtZW50LCBcIm1vdXNlZG93blwiLCBvbkNsaWNrKGRvY3VtZW50Q2xpY2spKTtcbiAgICAgICAgICAgIGJpbmQod2luZG93LmRvY3VtZW50LCBcImZvY3VzXCIsIGRvY3VtZW50Q2xpY2ssIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5jbGlja09wZW5zID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgYmluZChzZWxmLl9pbnB1dCwgXCJmb2N1c1wiLCBzZWxmLm9wZW4pO1xuICAgICAgICAgICAgICAgIGJpbmQoc2VsZi5faW5wdXQsIFwibW91c2Vkb3duXCIsIG9uQ2xpY2soc2VsZi5vcGVuKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VsZi5kYXlzQ29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBiaW5kKHNlbGYubW9udGhOYXYsIFwibW91c2Vkb3duXCIsIG9uQ2xpY2sob25Nb250aE5hdkNsaWNrKSk7XG4gICAgICAgICAgICAgICAgYmluZChzZWxmLm1vbnRoTmF2LCBbXCJrZXl1cFwiLCBcImluY3JlbWVudFwiXSwgb25ZZWFySW5wdXQpO1xuICAgICAgICAgICAgICAgIGJpbmQoc2VsZi5kYXlzQ29udGFpbmVyLCBcIm1vdXNlZG93blwiLCBvbkNsaWNrKHNlbGVjdERhdGUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxmLnRpbWVDb250YWluZXIgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgIHNlbGYubWludXRlRWxlbWVudCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgc2VsZi5ob3VyRWxlbWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNlbFRleHQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS50YXJnZXQuc2VsZWN0KCk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBiaW5kKHNlbGYudGltZUNvbnRhaW5lciwgW1wiaW5jcmVtZW50XCJdLCB1cGRhdGVUaW1lKTtcbiAgICAgICAgICAgICAgICBiaW5kKHNlbGYudGltZUNvbnRhaW5lciwgXCJibHVyXCIsIHVwZGF0ZVRpbWUsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICBiaW5kKHNlbGYudGltZUNvbnRhaW5lciwgXCJtb3VzZWRvd25cIiwgb25DbGljayh0aW1lSW5jcmVtZW50KSk7XG4gICAgICAgICAgICAgICAgYmluZChbc2VsZi5ob3VyRWxlbWVudCwgc2VsZi5taW51dGVFbGVtZW50XSwgW1wiZm9jdXNcIiwgXCJjbGlja1wiXSwgc2VsVGV4dCk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuc2Vjb25kRWxlbWVudCAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICBiaW5kKHNlbGYuc2Vjb25kRWxlbWVudCwgXCJmb2N1c1wiLCBmdW5jdGlvbiAoKSB7IHJldHVybiBzZWxmLnNlY29uZEVsZW1lbnQgJiYgc2VsZi5zZWNvbmRFbGVtZW50LnNlbGVjdCgpOyB9KTtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5hbVBNICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgYmluZChzZWxmLmFtUE0sIFwibW91c2Vkb3duXCIsIG9uQ2xpY2soZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVRpbWUoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyQ2hhbmdlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNldCB0aGUgY2FsZW5kYXIgdmlldyB0byBhIHBhcnRpY3VsYXIgZGF0ZS5cbiAgICAgICAgICogQHBhcmFtIHtEYXRlfSBqdW1wRGF0ZSB0aGUgZGF0ZSB0byBzZXQgdGhlIHZpZXcgdG9cbiAgICAgICAgICogQHBhcmFtIHtib29sZWFufSB0cmlnZ2VyQ2hhbmdlIGlmIGNoYW5nZSBldmVudHMgc2hvdWxkIGJlIHRyaWdnZXJlZFxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24ganVtcFRvRGF0ZShqdW1wRGF0ZSwgdHJpZ2dlckNoYW5nZSkge1xuICAgICAgICAgICAgdmFyIGp1bXBUbyA9IGp1bXBEYXRlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA/IHNlbGYucGFyc2VEYXRlKGp1bXBEYXRlKVxuICAgICAgICAgICAgICAgIDogc2VsZi5sYXRlc3RTZWxlY3RlZERhdGVPYmogfHxcbiAgICAgICAgICAgICAgICAgICAgKHNlbGYuY29uZmlnLm1pbkRhdGUgJiYgc2VsZi5jb25maWcubWluRGF0ZSA+IHNlbGYubm93XG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlbGYuY29uZmlnLm1pbkRhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogc2VsZi5jb25maWcubWF4RGF0ZSAmJiBzZWxmLmNvbmZpZy5tYXhEYXRlIDwgc2VsZi5ub3dcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNlbGYuY29uZmlnLm1heERhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNlbGYubm93KTtcbiAgICAgICAgICAgIHZhciBvbGRZZWFyID0gc2VsZi5jdXJyZW50WWVhcjtcbiAgICAgICAgICAgIHZhciBvbGRNb250aCA9IHNlbGYuY3VycmVudE1vbnRoO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoanVtcFRvICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50WWVhciA9IGp1bXBUby5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnRNb250aCA9IGp1bXBUby5nZXRNb250aCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgICAgICBlLm1lc3NhZ2UgPSBcIkludmFsaWQgZGF0ZSBzdXBwbGllZDogXCIgKyBqdW1wVG87XG4gICAgICAgICAgICAgICAgc2VsZi5jb25maWcuZXJyb3JIYW5kbGVyKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRyaWdnZXJDaGFuZ2UgJiYgc2VsZi5jdXJyZW50WWVhciAhPT0gb2xkWWVhcikge1xuICAgICAgICAgICAgICAgIHRyaWdnZXJFdmVudChcIm9uWWVhckNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICBidWlsZE1vbnRoU3dpdGNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHJpZ2dlckNoYW5nZSAmJlxuICAgICAgICAgICAgICAgIChzZWxmLmN1cnJlbnRZZWFyICE9PSBvbGRZZWFyIHx8IHNlbGYuY3VycmVudE1vbnRoICE9PSBvbGRNb250aCkpIHtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoXCJvbk1vbnRoQ2hhbmdlXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZi5yZWRyYXcoKTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIHVwL2Rvd24gYXJyb3cgaGFuZGxlciBmb3IgdGltZSBpbnB1dHNcbiAgICAgICAgICogQHBhcmFtIHtFdmVudH0gZSB0aGUgY2xpY2sgZXZlbnRcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHRpbWVJbmNyZW1lbnQoZSkge1xuICAgICAgICAgICAgaWYgKH5lLnRhcmdldC5jbGFzc05hbWUuaW5kZXhPZihcImFycm93XCIpKVxuICAgICAgICAgICAgICAgIGluY3JlbWVudE51bUlucHV0KGUsIGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFycm93VXBcIikgPyAxIDogLTEpO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbmNyZW1lbnRzL2RlY3JlbWVudHMgdGhlIHZhbHVlIG9mIGlucHV0IGFzc29jaS1cbiAgICAgICAgICogYXRlZCB3aXRoIHRoZSB1cC9kb3duIGFycm93IGJ5IGRpc3BhdGNoaW5nIGFuXG4gICAgICAgICAqIFwiaW5jcmVtZW50XCIgZXZlbnQgb24gdGhlIGlucHV0LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0ge0V2ZW50fSBlIHRoZSBjbGljayBldmVudFxuICAgICAgICAgKiBAcGFyYW0ge051bWJlcn0gZGVsdGEgdGhlIGRpZmYgKHVzdWFsbHkgMSBvciAtMSlcbiAgICAgICAgICogQHBhcmFtIHtFbGVtZW50fSBpbnB1dEVsZW0gdGhlIGlucHV0IGVsZW1lbnRcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGluY3JlbWVudE51bUlucHV0KGUsIGRlbHRhLCBpbnB1dEVsZW0pIHtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlICYmIGUudGFyZ2V0O1xuICAgICAgICAgICAgdmFyIGlucHV0ID0gaW5wdXRFbGVtIHx8XG4gICAgICAgICAgICAgICAgKHRhcmdldCAmJiB0YXJnZXQucGFyZW50Tm9kZSAmJiB0YXJnZXQucGFyZW50Tm9kZS5maXJzdENoaWxkKTtcbiAgICAgICAgICAgIHZhciBldmVudCA9IGNyZWF0ZUV2ZW50KFwiaW5jcmVtZW50XCIpO1xuICAgICAgICAgICAgZXZlbnQuZGVsdGEgPSBkZWx0YTtcbiAgICAgICAgICAgIGlucHV0ICYmIGlucHV0LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGJ1aWxkKCkge1xuICAgICAgICAgICAgdmFyIGZyYWdtZW50ID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgICAgICAgIHNlbGYuY2FsZW5kYXJDb250YWluZXIgPSBjcmVhdGVFbGVtZW50KFwiZGl2XCIsIFwiZmxhdHBpY2tyLWNhbGVuZGFyXCIpO1xuICAgICAgICAgICAgc2VsZi5jYWxlbmRhckNvbnRhaW5lci50YWJJbmRleCA9IC0xO1xuICAgICAgICAgICAgaWYgKCFzZWxmLmNvbmZpZy5ub0NhbGVuZGFyKSB7XG4gICAgICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoYnVpbGRNb250aE5hdigpKTtcbiAgICAgICAgICAgICAgICBzZWxmLmlubmVyQ29udGFpbmVyID0gY3JlYXRlRWxlbWVudChcImRpdlwiLCBcImZsYXRwaWNrci1pbm5lckNvbnRhaW5lclwiKTtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5jb25maWcud2Vla051bWJlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hID0gYnVpbGRXZWVrcygpLCB3ZWVrV3JhcHBlciA9IF9hLndlZWtXcmFwcGVyLCB3ZWVrTnVtYmVycyA9IF9hLndlZWtOdW1iZXJzO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmlubmVyQ29udGFpbmVyLmFwcGVuZENoaWxkKHdlZWtXcmFwcGVyKTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi53ZWVrTnVtYmVycyA9IHdlZWtOdW1iZXJzO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLndlZWtXcmFwcGVyID0gd2Vla1dyYXBwZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNlbGYuckNvbnRhaW5lciA9IGNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgXCJmbGF0cGlja3ItckNvbnRhaW5lclwiKTtcbiAgICAgICAgICAgICAgICBzZWxmLnJDb250YWluZXIuYXBwZW5kQ2hpbGQoYnVpbGRXZWVrZGF5cygpKTtcbiAgICAgICAgICAgICAgICBpZiAoIXNlbGYuZGF5c0NvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmRheXNDb250YWluZXIgPSBjcmVhdGVFbGVtZW50KFwiZGl2XCIsIFwiZmxhdHBpY2tyLWRheXNcIik7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuZGF5c0NvbnRhaW5lci50YWJJbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBidWlsZERheXMoKTtcbiAgICAgICAgICAgICAgICBzZWxmLnJDb250YWluZXIuYXBwZW5kQ2hpbGQoc2VsZi5kYXlzQ29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICBzZWxmLmlubmVyQ29udGFpbmVyLmFwcGVuZENoaWxkKHNlbGYuckNvbnRhaW5lcik7XG4gICAgICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoc2VsZi5pbm5lckNvbnRhaW5lcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VsZi5jb25maWcuZW5hYmxlVGltZSkge1xuICAgICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGJ1aWxkVGltZSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHNlbGYuY2FsZW5kYXJDb250YWluZXIsIFwicmFuZ2VNb2RlXCIsIHNlbGYuY29uZmlnLm1vZGUgPT09IFwicmFuZ2VcIik7XG4gICAgICAgICAgICB0b2dnbGVDbGFzcyhzZWxmLmNhbGVuZGFyQ29udGFpbmVyLCBcImFuaW1hdGVcIiwgc2VsZi5jb25maWcuYW5pbWF0ZSA9PT0gdHJ1ZSk7XG4gICAgICAgICAgICB0b2dnbGVDbGFzcyhzZWxmLmNhbGVuZGFyQ29udGFpbmVyLCBcIm11bHRpTW9udGhcIiwgc2VsZi5jb25maWcuc2hvd01vbnRocyA+IDEpO1xuICAgICAgICAgICAgc2VsZi5jYWxlbmRhckNvbnRhaW5lci5hcHBlbmRDaGlsZChmcmFnbWVudCk7XG4gICAgICAgICAgICB2YXIgY3VzdG9tQXBwZW5kID0gc2VsZi5jb25maWcuYXBwZW5kVG8gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLmFwcGVuZFRvLm5vZGVUeXBlICE9PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAoc2VsZi5jb25maWcuaW5saW5lIHx8IHNlbGYuY29uZmlnLnN0YXRpYykge1xuICAgICAgICAgICAgICAgIHNlbGYuY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZChzZWxmLmNvbmZpZy5pbmxpbmUgPyBcImlubGluZVwiIDogXCJzdGF0aWNcIik7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLmlubGluZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWN1c3RvbUFwcGVuZCAmJiBzZWxmLmVsZW1lbnQucGFyZW50Tm9kZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzZWxmLmNhbGVuZGFyQ29udGFpbmVyLCBzZWxmLl9pbnB1dC5uZXh0U2libGluZyk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNlbGYuY29uZmlnLmFwcGVuZFRvICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZy5hcHBlbmRUby5hcHBlbmRDaGlsZChzZWxmLmNhbGVuZGFyQ29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLnN0YXRpYykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgd3JhcHBlciA9IGNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgXCJmbGF0cGlja3Itd3JhcHBlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuZWxlbWVudC5wYXJlbnROb2RlKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHdyYXBwZXIsIHNlbGYuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHdyYXBwZXIuYXBwZW5kQ2hpbGQoc2VsZi5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuYWx0SW5wdXQpXG4gICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVyLmFwcGVuZENoaWxkKHNlbGYuYWx0SW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICB3cmFwcGVyLmFwcGVuZENoaWxkKHNlbGYuY2FsZW5kYXJDb250YWluZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc2VsZi5jb25maWcuc3RhdGljICYmICFzZWxmLmNvbmZpZy5pbmxpbmUpXG4gICAgICAgICAgICAgICAgKHNlbGYuY29uZmlnLmFwcGVuZFRvICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgPyBzZWxmLmNvbmZpZy5hcHBlbmRUb1xuICAgICAgICAgICAgICAgICAgICA6IHdpbmRvdy5kb2N1bWVudC5ib2R5KS5hcHBlbmRDaGlsZChzZWxmLmNhbGVuZGFyQ29udGFpbmVyKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBjcmVhdGVEYXkoY2xhc3NOYW1lLCBkYXRlLCBkYXlOdW1iZXIsIGkpIHtcbiAgICAgICAgICAgIHZhciBkYXRlSXNFbmFibGVkID0gaXNFbmFibGVkKGRhdGUsIHRydWUpLCBkYXlFbGVtZW50ID0gY3JlYXRlRWxlbWVudChcInNwYW5cIiwgXCJmbGF0cGlja3ItZGF5IFwiICsgY2xhc3NOYW1lLCBkYXRlLmdldERhdGUoKS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIGRheUVsZW1lbnQuZGF0ZU9iaiA9IGRhdGU7XG4gICAgICAgICAgICBkYXlFbGVtZW50LiRpID0gaTtcbiAgICAgICAgICAgIGRheUVsZW1lbnQuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLCBzZWxmLmZvcm1hdERhdGUoZGF0ZSwgc2VsZi5jb25maWcuYXJpYURhdGVGb3JtYXQpKTtcbiAgICAgICAgICAgIGlmIChjbGFzc05hbWUuaW5kZXhPZihcImhpZGRlblwiKSA9PT0gLTEgJiZcbiAgICAgICAgICAgICAgICBjb21wYXJlRGF0ZXMoZGF0ZSwgc2VsZi5ub3cpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgc2VsZi50b2RheURhdGVFbGVtID0gZGF5RWxlbWVudDtcbiAgICAgICAgICAgICAgICBkYXlFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJ0b2RheVwiKTtcbiAgICAgICAgICAgICAgICBkYXlFbGVtZW50LnNldEF0dHJpYnV0ZShcImFyaWEtY3VycmVudFwiLCBcImRhdGVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGF0ZUlzRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIGRheUVsZW1lbnQudGFiSW5kZXggPSAtMTtcbiAgICAgICAgICAgICAgICBpZiAoaXNEYXRlU2VsZWN0ZWQoZGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF5RWxlbWVudC5jbGFzc0xpc3QuYWRkKFwic2VsZWN0ZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWREYXRlRWxlbSA9IGRheUVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5tb2RlID09PSBcInJhbmdlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGRheUVsZW1lbnQsIFwic3RhcnRSYW5nZVwiLCBzZWxmLnNlbGVjdGVkRGF0ZXNbMF0gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXJlRGF0ZXMoZGF0ZSwgc2VsZi5zZWxlY3RlZERhdGVzWzBdLCB0cnVlKSA9PT0gMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyhkYXlFbGVtZW50LCBcImVuZFJhbmdlXCIsIHNlbGYuc2VsZWN0ZWREYXRlc1sxXSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhcmVEYXRlcyhkYXRlLCBzZWxmLnNlbGVjdGVkRGF0ZXNbMV0sIHRydWUpID09PSAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjbGFzc05hbWUgPT09IFwibmV4dE1vbnRoRGF5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5RWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiaW5SYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRheUVsZW1lbnQuY2xhc3NMaXN0LmFkZChcImZsYXRwaWNrci1kaXNhYmxlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5tb2RlID09PSBcInJhbmdlXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNEYXRlSW5SYW5nZShkYXRlKSAmJiAhaXNEYXRlU2VsZWN0ZWQoZGF0ZSkpXG4gICAgICAgICAgICAgICAgICAgIGRheUVsZW1lbnQuY2xhc3NMaXN0LmFkZChcImluUmFuZ2VcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VsZi53ZWVrTnVtYmVycyAmJlxuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLnNob3dNb250aHMgPT09IDEgJiZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWUgIT09IFwicHJldk1vbnRoRGF5XCIgJiZcbiAgICAgICAgICAgICAgICBkYXlOdW1iZXIgJSA3ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgc2VsZi53ZWVrTnVtYmVycy5pbnNlcnRBZGphY2VudEhUTUwoXCJiZWZvcmVlbmRcIiwgXCI8c3BhbiBjbGFzcz0nZmxhdHBpY2tyLWRheSc+XCIgKyBzZWxmLmNvbmZpZy5nZXRXZWVrKGRhdGUpICsgXCI8L3NwYW4+XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJpZ2dlckV2ZW50KFwib25EYXlDcmVhdGVcIiwgZGF5RWxlbWVudCk7XG4gICAgICAgICAgICByZXR1cm4gZGF5RWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBmb2N1c09uRGF5RWxlbSh0YXJnZXROb2RlKSB7XG4gICAgICAgICAgICB0YXJnZXROb2RlLmZvY3VzKCk7XG4gICAgICAgICAgICBpZiAoc2VsZi5jb25maWcubW9kZSA9PT0gXCJyYW5nZVwiKVxuICAgICAgICAgICAgICAgIG9uTW91c2VPdmVyKHRhcmdldE5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGdldEZpcnN0QXZhaWxhYmxlRGF5KGRlbHRhKSB7XG4gICAgICAgICAgICB2YXIgc3RhcnRNb250aCA9IGRlbHRhID4gMCA/IDAgOiBzZWxmLmNvbmZpZy5zaG93TW9udGhzIC0gMTtcbiAgICAgICAgICAgIHZhciBlbmRNb250aCA9IGRlbHRhID4gMCA/IHNlbGYuY29uZmlnLnNob3dNb250aHMgOiAtMTtcbiAgICAgICAgICAgIGZvciAodmFyIG0gPSBzdGFydE1vbnRoOyBtICE9IGVuZE1vbnRoOyBtICs9IGRlbHRhKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1vbnRoID0gc2VsZi5kYXlzQ29udGFpbmVyLmNoaWxkcmVuW21dO1xuICAgICAgICAgICAgICAgIHZhciBzdGFydEluZGV4ID0gZGVsdGEgPiAwID8gMCA6IG1vbnRoLmNoaWxkcmVuLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgdmFyIGVuZEluZGV4ID0gZGVsdGEgPiAwID8gbW9udGguY2hpbGRyZW4ubGVuZ3RoIDogLTE7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IHN0YXJ0SW5kZXg7IGkgIT0gZW5kSW5kZXg7IGkgKz0gZGVsdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBtb250aC5jaGlsZHJlbltpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGMuY2xhc3NOYW1lLmluZGV4T2YoXCJoaWRkZW5cIikgPT09IC0xICYmIGlzRW5hYmxlZChjLmRhdGVPYmopKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBnZXROZXh0QXZhaWxhYmxlRGF5KGN1cnJlbnQsIGRlbHRhKSB7XG4gICAgICAgICAgICB2YXIgZ2l2ZW5Nb250aCA9IGN1cnJlbnQuY2xhc3NOYW1lLmluZGV4T2YoXCJNb250aFwiKSA9PT0gLTFcbiAgICAgICAgICAgICAgICA/IGN1cnJlbnQuZGF0ZU9iai5nZXRNb250aCgpXG4gICAgICAgICAgICAgICAgOiBzZWxmLmN1cnJlbnRNb250aDtcbiAgICAgICAgICAgIHZhciBlbmRNb250aCA9IGRlbHRhID4gMCA/IHNlbGYuY29uZmlnLnNob3dNb250aHMgOiAtMTtcbiAgICAgICAgICAgIHZhciBsb29wRGVsdGEgPSBkZWx0YSA+IDAgPyAxIDogLTE7XG4gICAgICAgICAgICBmb3IgKHZhciBtID0gZ2l2ZW5Nb250aCAtIHNlbGYuY3VycmVudE1vbnRoOyBtICE9IGVuZE1vbnRoOyBtICs9IGxvb3BEZWx0YSkge1xuICAgICAgICAgICAgICAgIHZhciBtb250aCA9IHNlbGYuZGF5c0NvbnRhaW5lci5jaGlsZHJlblttXTtcbiAgICAgICAgICAgICAgICB2YXIgc3RhcnRJbmRleCA9IGdpdmVuTW9udGggLSBzZWxmLmN1cnJlbnRNb250aCA9PT0gbVxuICAgICAgICAgICAgICAgICAgICA/IGN1cnJlbnQuJGkgKyBkZWx0YVxuICAgICAgICAgICAgICAgICAgICA6IGRlbHRhIDwgMFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBtb250aC5jaGlsZHJlbi5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA6IDA7XG4gICAgICAgICAgICAgICAgdmFyIG51bU1vbnRoRGF5cyA9IG1vbnRoLmNoaWxkcmVuLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gc3RhcnRJbmRleDsgaSA+PSAwICYmIGkgPCBudW1Nb250aERheXMgJiYgaSAhPSAoZGVsdGEgPiAwID8gbnVtTW9udGhEYXlzIDogLTEpOyBpICs9IGxvb3BEZWx0YSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IG1vbnRoLmNoaWxkcmVuW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYy5jbGFzc05hbWUuaW5kZXhPZihcImhpZGRlblwiKSA9PT0gLTEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRW5hYmxlZChjLmRhdGVPYmopICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmFicyhjdXJyZW50LiRpIC0gaSkgPj0gTWF0aC5hYnMoZGVsdGEpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvY3VzT25EYXlFbGVtKGMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGYuY2hhbmdlTW9udGgobG9vcERlbHRhKTtcbiAgICAgICAgICAgIGZvY3VzT25EYXkoZ2V0Rmlyc3RBdmFpbGFibGVEYXkobG9vcERlbHRhKSwgMCk7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGZvY3VzT25EYXkoY3VycmVudCwgb2Zmc2V0KSB7XG4gICAgICAgICAgICB2YXIgZGF5Rm9jdXNlZCA9IGlzSW5WaWV3KGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgfHwgZG9jdW1lbnQuYm9keSk7XG4gICAgICAgICAgICB2YXIgc3RhcnRFbGVtID0gY3VycmVudCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyBjdXJyZW50XG4gICAgICAgICAgICAgICAgOiBkYXlGb2N1c2VkXG4gICAgICAgICAgICAgICAgICAgID8gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICAgICAgICAgICAgICAgICAgICA6IHNlbGYuc2VsZWN0ZWREYXRlRWxlbSAhPT0gdW5kZWZpbmVkICYmIGlzSW5WaWV3KHNlbGYuc2VsZWN0ZWREYXRlRWxlbSlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2VsZi5zZWxlY3RlZERhdGVFbGVtXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlbGYudG9kYXlEYXRlRWxlbSAhPT0gdW5kZWZpbmVkICYmIGlzSW5WaWV3KHNlbGYudG9kYXlEYXRlRWxlbSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNlbGYudG9kYXlEYXRlRWxlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZ2V0Rmlyc3RBdmFpbGFibGVEYXkob2Zmc2V0ID4gMCA/IDEgOiAtMSk7XG4gICAgICAgICAgICBpZiAoc3RhcnRFbGVtID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2lucHV0LmZvY3VzKCk7XG4gICAgICAgICAgICBpZiAoIWRheUZvY3VzZWQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvY3VzT25EYXlFbGVtKHN0YXJ0RWxlbSk7XG4gICAgICAgICAgICBnZXROZXh0QXZhaWxhYmxlRGF5KHN0YXJ0RWxlbSwgb2Zmc2V0KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBidWlsZE1vbnRoRGF5cyh5ZWFyLCBtb250aCkge1xuICAgICAgICAgICAgdmFyIGZpcnN0T2ZNb250aCA9IChuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSkuZ2V0RGF5KCkgLSBzZWxmLmwxMG4uZmlyc3REYXlPZldlZWsgKyA3KSAlIDc7XG4gICAgICAgICAgICB2YXIgcHJldk1vbnRoRGF5cyA9IHNlbGYudXRpbHMuZ2V0RGF5c0luTW9udGgoKG1vbnRoIC0gMSArIDEyKSAlIDEyKTtcbiAgICAgICAgICAgIHZhciBkYXlzSW5Nb250aCA9IHNlbGYudXRpbHMuZ2V0RGF5c0luTW9udGgobW9udGgpLCBkYXlzID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSwgaXNNdWx0aU1vbnRoID0gc2VsZi5jb25maWcuc2hvd01vbnRocyA+IDEsIHByZXZNb250aERheUNsYXNzID0gaXNNdWx0aU1vbnRoID8gXCJwcmV2TW9udGhEYXkgaGlkZGVuXCIgOiBcInByZXZNb250aERheVwiLCBuZXh0TW9udGhEYXlDbGFzcyA9IGlzTXVsdGlNb250aCA/IFwibmV4dE1vbnRoRGF5IGhpZGRlblwiIDogXCJuZXh0TW9udGhEYXlcIjtcbiAgICAgICAgICAgIHZhciBkYXlOdW1iZXIgPSBwcmV2TW9udGhEYXlzICsgMSAtIGZpcnN0T2ZNb250aCwgZGF5SW5kZXggPSAwO1xuICAgICAgICAgICAgLy8gcHJlcGVuZCBkYXlzIGZyb20gdGhlIGVuZGluZyBvZiBwcmV2aW91cyBtb250aFxuICAgICAgICAgICAgZm9yICg7IGRheU51bWJlciA8PSBwcmV2TW9udGhEYXlzOyBkYXlOdW1iZXIrKywgZGF5SW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGRheXMuYXBwZW5kQ2hpbGQoY3JlYXRlRGF5KHByZXZNb250aERheUNsYXNzLCBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheU51bWJlciksIGRheU51bWJlciwgZGF5SW5kZXgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFN0YXJ0IGF0IDEgc2luY2UgdGhlcmUgaXMgbm8gMHRoIGRheVxuICAgICAgICAgICAgZm9yIChkYXlOdW1iZXIgPSAxOyBkYXlOdW1iZXIgPD0gZGF5c0luTW9udGg7IGRheU51bWJlcisrLCBkYXlJbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgZGF5cy5hcHBlbmRDaGlsZChjcmVhdGVEYXkoXCJcIiwgbmV3IERhdGUoeWVhciwgbW9udGgsIGRheU51bWJlciksIGRheU51bWJlciwgZGF5SW5kZXgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGFwcGVuZCBkYXlzIGZyb20gdGhlIG5leHQgbW9udGhcbiAgICAgICAgICAgIGZvciAodmFyIGRheU51bSA9IGRheXNJbk1vbnRoICsgMTsgZGF5TnVtIDw9IDQyIC0gZmlyc3RPZk1vbnRoICYmXG4gICAgICAgICAgICAgICAgKHNlbGYuY29uZmlnLnNob3dNb250aHMgPT09IDEgfHwgZGF5SW5kZXggJSA3ICE9PSAwKTsgZGF5TnVtKyssIGRheUluZGV4KyspIHtcbiAgICAgICAgICAgICAgICBkYXlzLmFwcGVuZENoaWxkKGNyZWF0ZURheShuZXh0TW9udGhEYXlDbGFzcywgbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCBkYXlOdW0gJSBkYXlzSW5Nb250aCksIGRheU51bSwgZGF5SW5kZXgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vdXBkYXRlTmF2aWdhdGlvbkN1cnJlbnRNb250aCgpO1xuICAgICAgICAgICAgdmFyIGRheUNvbnRhaW5lciA9IGNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgXCJkYXlDb250YWluZXJcIik7XG4gICAgICAgICAgICBkYXlDb250YWluZXIuYXBwZW5kQ2hpbGQoZGF5cyk7XG4gICAgICAgICAgICByZXR1cm4gZGF5Q29udGFpbmVyO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGJ1aWxkRGF5cygpIHtcbiAgICAgICAgICAgIGlmIChzZWxmLmRheXNDb250YWluZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNsZWFyTm9kZShzZWxmLmRheXNDb250YWluZXIpO1xuICAgICAgICAgICAgLy8gVE9ETzogd2VlayBudW1iZXJzIGZvciBlYWNoIG1vbnRoXG4gICAgICAgICAgICBpZiAoc2VsZi53ZWVrTnVtYmVycylcbiAgICAgICAgICAgICAgICBjbGVhck5vZGUoc2VsZi53ZWVrTnVtYmVycyk7XG4gICAgICAgICAgICB2YXIgZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZi5jb25maWcuc2hvd01vbnRoczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGQgPSBuZXcgRGF0ZShzZWxmLmN1cnJlbnRZZWFyLCBzZWxmLmN1cnJlbnRNb250aCwgMSk7XG4gICAgICAgICAgICAgICAgZC5zZXRNb250aChzZWxmLmN1cnJlbnRNb250aCArIGkpO1xuICAgICAgICAgICAgICAgIGZyYWcuYXBwZW5kQ2hpbGQoYnVpbGRNb250aERheXMoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGYuZGF5c0NvbnRhaW5lci5hcHBlbmRDaGlsZChmcmFnKTtcbiAgICAgICAgICAgIHNlbGYuZGF5cyA9IHNlbGYuZGF5c0NvbnRhaW5lci5maXJzdENoaWxkO1xuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLm1vZGUgPT09IFwicmFuZ2VcIiAmJiBzZWxmLnNlbGVjdGVkRGF0ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgb25Nb3VzZU92ZXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBidWlsZE1vbnRoU3dpdGNoKCkge1xuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLnNob3dNb250aHMgPiAxIHx8XG4gICAgICAgICAgICAgICAgc2VsZi5jb25maWcubW9udGhTZWxlY3RvclR5cGUgIT09IFwiZHJvcGRvd25cIilcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB2YXIgc2hvdWxkQnVpbGRNb250aCA9IGZ1bmN0aW9uIChtb250aCkge1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5taW5EYXRlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50WWVhciA9PT0gc2VsZi5jb25maWcubWluRGF0ZS5nZXRGdWxsWWVhcigpICYmXG4gICAgICAgICAgICAgICAgICAgIG1vbnRoIDwgc2VsZi5jb25maWcubWluRGF0ZS5nZXRNb250aCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuICEoc2VsZi5jb25maWcubWF4RGF0ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudFllYXIgPT09IHNlbGYuY29uZmlnLm1heERhdGUuZ2V0RnVsbFllYXIoKSAmJlxuICAgICAgICAgICAgICAgICAgICBtb250aCA+IHNlbGYuY29uZmlnLm1heERhdGUuZ2V0TW9udGgoKSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgc2VsZi5tb250aHNEcm9wZG93bkNvbnRhaW5lci50YWJJbmRleCA9IC0xO1xuICAgICAgICAgICAgc2VsZi5tb250aHNEcm9wZG93bkNvbnRhaW5lci5pbm5lckhUTUwgPSBcIlwiO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFzaG91bGRCdWlsZE1vbnRoKGkpKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB2YXIgbW9udGggPSBjcmVhdGVFbGVtZW50KFwib3B0aW9uXCIsIFwiZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGhcIik7XG4gICAgICAgICAgICAgICAgbW9udGgudmFsdWUgPSBuZXcgRGF0ZShzZWxmLmN1cnJlbnRZZWFyLCBpKS5nZXRNb250aCgpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgbW9udGgudGV4dENvbnRlbnQgPSBtb250aFRvU3RyKGksIHNlbGYuY29uZmlnLnNob3J0aGFuZEN1cnJlbnRNb250aCwgc2VsZi5sMTBuKTtcbiAgICAgICAgICAgICAgICBtb250aC50YWJJbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLmN1cnJlbnRNb250aCA9PT0gaSkge1xuICAgICAgICAgICAgICAgICAgICBtb250aC5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNlbGYubW9udGhzRHJvcGRvd25Db250YWluZXIuYXBwZW5kQ2hpbGQobW9udGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGJ1aWxkTW9udGgoKSB7XG4gICAgICAgICAgICB2YXIgY29udGFpbmVyID0gY3JlYXRlRWxlbWVudChcImRpdlwiLCBcImZsYXRwaWNrci1tb250aFwiKTtcbiAgICAgICAgICAgIHZhciBtb250aE5hdkZyYWdtZW50ID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgICAgICAgIHZhciBtb250aEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoc2VsZi5jb25maWcuc2hvd01vbnRocyA+IDEgfHxcbiAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZy5tb250aFNlbGVjdG9yVHlwZSA9PT0gXCJzdGF0aWNcIikge1xuICAgICAgICAgICAgICAgIG1vbnRoRWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIFwiY3VyLW1vbnRoXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZi5tb250aHNEcm9wZG93bkNvbnRhaW5lciA9IGNyZWF0ZUVsZW1lbnQoXCJzZWxlY3RcIiwgXCJmbGF0cGlja3ItbW9udGhEcm9wZG93bi1tb250aHNcIik7XG4gICAgICAgICAgICAgICAgYmluZChzZWxmLm1vbnRoc0Ryb3Bkb3duQ29udGFpbmVyLCBcImNoYW5nZVwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3RlZE1vbnRoID0gcGFyc2VJbnQodGFyZ2V0LnZhbHVlLCAxMCk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuY2hhbmdlTW9udGgoc2VsZWN0ZWRNb250aCAtIHNlbGYuY3VycmVudE1vbnRoKTtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlckV2ZW50KFwib25Nb250aENoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBidWlsZE1vbnRoU3dpdGNoKCk7XG4gICAgICAgICAgICAgICAgbW9udGhFbGVtZW50ID0gc2VsZi5tb250aHNEcm9wZG93bkNvbnRhaW5lcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciB5ZWFySW5wdXQgPSBjcmVhdGVOdW1iZXJJbnB1dChcImN1ci15ZWFyXCIsIHsgdGFiaW5kZXg6IFwiLTFcIiB9KTtcbiAgICAgICAgICAgIHZhciB5ZWFyRWxlbWVudCA9IHllYXJJbnB1dC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImlucHV0XCIpWzBdO1xuICAgICAgICAgICAgeWVhckVsZW1lbnQuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLCBzZWxmLmwxMG4ueWVhckFyaWFMYWJlbCk7XG4gICAgICAgICAgICBpZiAoc2VsZi5jb25maWcubWluRGF0ZSkge1xuICAgICAgICAgICAgICAgIHllYXJFbGVtZW50LnNldEF0dHJpYnV0ZShcIm1pblwiLCBzZWxmLmNvbmZpZy5taW5EYXRlLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VsZi5jb25maWcubWF4RGF0ZSkge1xuICAgICAgICAgICAgICAgIHllYXJFbGVtZW50LnNldEF0dHJpYnV0ZShcIm1heFwiLCBzZWxmLmNvbmZpZy5tYXhEYXRlLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgeWVhckVsZW1lbnQuZGlzYWJsZWQgPVxuICAgICAgICAgICAgICAgICAgICAhIXNlbGYuY29uZmlnLm1pbkRhdGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKSA9PT0gc2VsZi5jb25maWcubWF4RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGN1cnJlbnRNb250aCA9IGNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgXCJmbGF0cGlja3ItY3VycmVudC1tb250aFwiKTtcbiAgICAgICAgICAgIGN1cnJlbnRNb250aC5hcHBlbmRDaGlsZChtb250aEVsZW1lbnQpO1xuICAgICAgICAgICAgY3VycmVudE1vbnRoLmFwcGVuZENoaWxkKHllYXJJbnB1dCk7XG4gICAgICAgICAgICBtb250aE5hdkZyYWdtZW50LmFwcGVuZENoaWxkKGN1cnJlbnRNb250aCk7XG4gICAgICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQobW9udGhOYXZGcmFnbWVudCk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyLFxuICAgICAgICAgICAgICAgIHllYXJFbGVtZW50OiB5ZWFyRWxlbWVudCxcbiAgICAgICAgICAgICAgICBtb250aEVsZW1lbnQ6IG1vbnRoRWxlbWVudFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBidWlsZE1vbnRocygpIHtcbiAgICAgICAgICAgIGNsZWFyTm9kZShzZWxmLm1vbnRoTmF2KTtcbiAgICAgICAgICAgIHNlbGYubW9udGhOYXYuYXBwZW5kQ2hpbGQoc2VsZi5wcmV2TW9udGhOYXYpO1xuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLnNob3dNb250aHMpIHtcbiAgICAgICAgICAgICAgICBzZWxmLnllYXJFbGVtZW50cyA9IFtdO1xuICAgICAgICAgICAgICAgIHNlbGYubW9udGhFbGVtZW50cyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICh2YXIgbSA9IHNlbGYuY29uZmlnLnNob3dNb250aHM7IG0tLTspIHtcbiAgICAgICAgICAgICAgICB2YXIgbW9udGggPSBidWlsZE1vbnRoKCk7XG4gICAgICAgICAgICAgICAgc2VsZi55ZWFyRWxlbWVudHMucHVzaChtb250aC55ZWFyRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgc2VsZi5tb250aEVsZW1lbnRzLnB1c2gobW9udGgubW9udGhFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBzZWxmLm1vbnRoTmF2LmFwcGVuZENoaWxkKG1vbnRoLmNvbnRhaW5lcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxmLm1vbnRoTmF2LmFwcGVuZENoaWxkKHNlbGYubmV4dE1vbnRoTmF2KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBidWlsZE1vbnRoTmF2KCkge1xuICAgICAgICAgICAgc2VsZi5tb250aE5hdiA9IGNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgXCJmbGF0cGlja3ItbW9udGhzXCIpO1xuICAgICAgICAgICAgc2VsZi55ZWFyRWxlbWVudHMgPSBbXTtcbiAgICAgICAgICAgIHNlbGYubW9udGhFbGVtZW50cyA9IFtdO1xuICAgICAgICAgICAgc2VsZi5wcmV2TW9udGhOYXYgPSBjcmVhdGVFbGVtZW50KFwic3BhblwiLCBcImZsYXRwaWNrci1wcmV2LW1vbnRoXCIpO1xuICAgICAgICAgICAgc2VsZi5wcmV2TW9udGhOYXYuaW5uZXJIVE1MID0gc2VsZi5jb25maWcucHJldkFycm93O1xuICAgICAgICAgICAgc2VsZi5uZXh0TW9udGhOYXYgPSBjcmVhdGVFbGVtZW50KFwic3BhblwiLCBcImZsYXRwaWNrci1uZXh0LW1vbnRoXCIpO1xuICAgICAgICAgICAgc2VsZi5uZXh0TW9udGhOYXYuaW5uZXJIVE1MID0gc2VsZi5jb25maWcubmV4dEFycm93O1xuICAgICAgICAgICAgYnVpbGRNb250aHMoKTtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzZWxmLCBcIl9oaWRlUHJldk1vbnRoQXJyb3dcIiwge1xuICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gc2VsZi5fX2hpZGVQcmV2TW9udGhBcnJvdzsgfSxcbiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uIChib29sKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLl9faGlkZVByZXZNb250aEFycm93ICE9PSBib29sKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyhzZWxmLnByZXZNb250aE5hdiwgXCJmbGF0cGlja3ItZGlzYWJsZWRcIiwgYm9vbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9faGlkZVByZXZNb250aEFycm93ID0gYm9vbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHNlbGYsIFwiX2hpZGVOZXh0TW9udGhBcnJvd1wiLCB7XG4gICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBzZWxmLl9faGlkZU5leHRNb250aEFycm93OyB9LFxuICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24gKGJvb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuX19oaWRlTmV4dE1vbnRoQXJyb3cgIT09IGJvb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHNlbGYubmV4dE1vbnRoTmF2LCBcImZsYXRwaWNrci1kaXNhYmxlZFwiLCBib29sKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19oaWRlTmV4dE1vbnRoQXJyb3cgPSBib29sO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzZWxmLmN1cnJlbnRZZWFyRWxlbWVudCA9IHNlbGYueWVhckVsZW1lbnRzWzBdO1xuICAgICAgICAgICAgdXBkYXRlTmF2aWdhdGlvbkN1cnJlbnRNb250aCgpO1xuICAgICAgICAgICAgcmV0dXJuIHNlbGYubW9udGhOYXY7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gYnVpbGRUaW1lKCkge1xuICAgICAgICAgICAgc2VsZi5jYWxlbmRhckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwiaGFzVGltZVwiKTtcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5ub0NhbGVuZGFyKVxuICAgICAgICAgICAgICAgIHNlbGYuY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZChcIm5vQ2FsZW5kYXJcIik7XG4gICAgICAgICAgICBzZWxmLnRpbWVDb250YWluZXIgPSBjcmVhdGVFbGVtZW50KFwiZGl2XCIsIFwiZmxhdHBpY2tyLXRpbWVcIik7XG4gICAgICAgICAgICBzZWxmLnRpbWVDb250YWluZXIudGFiSW5kZXggPSAtMTtcbiAgICAgICAgICAgIHZhciBzZXBhcmF0b3IgPSBjcmVhdGVFbGVtZW50KFwic3BhblwiLCBcImZsYXRwaWNrci10aW1lLXNlcGFyYXRvclwiLCBcIjpcIik7XG4gICAgICAgICAgICB2YXIgaG91cklucHV0ID0gY3JlYXRlTnVtYmVySW5wdXQoXCJmbGF0cGlja3ItaG91clwiLCB7XG4gICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IHNlbGYubDEwbi5ob3VyQXJpYUxhYmVsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNlbGYuaG91ckVsZW1lbnQgPSBob3VySW5wdXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJpbnB1dFwiKVswXTtcbiAgICAgICAgICAgIHZhciBtaW51dGVJbnB1dCA9IGNyZWF0ZU51bWJlcklucHV0KFwiZmxhdHBpY2tyLW1pbnV0ZVwiLCB7XG4gICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IHNlbGYubDEwbi5taW51dGVBcmlhTGFiZWxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2VsZi5taW51dGVFbGVtZW50ID0gbWludXRlSW5wdXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJpbnB1dFwiKVswXTtcbiAgICAgICAgICAgIHNlbGYuaG91ckVsZW1lbnQudGFiSW5kZXggPSBzZWxmLm1pbnV0ZUVsZW1lbnQudGFiSW5kZXggPSAtMTtcbiAgICAgICAgICAgIHNlbGYuaG91ckVsZW1lbnQudmFsdWUgPSBwYWQoc2VsZi5sYXRlc3RTZWxlY3RlZERhdGVPYmpcbiAgICAgICAgICAgICAgICA/IHNlbGYubGF0ZXN0U2VsZWN0ZWREYXRlT2JqLmdldEhvdXJzKClcbiAgICAgICAgICAgICAgICA6IHNlbGYuY29uZmlnLnRpbWVfMjRoclxuICAgICAgICAgICAgICAgICAgICA/IHNlbGYuY29uZmlnLmRlZmF1bHRIb3VyXG4gICAgICAgICAgICAgICAgICAgIDogbWlsaXRhcnkyYW1wbShzZWxmLmNvbmZpZy5kZWZhdWx0SG91cikpO1xuICAgICAgICAgICAgc2VsZi5taW51dGVFbGVtZW50LnZhbHVlID0gcGFkKHNlbGYubGF0ZXN0U2VsZWN0ZWREYXRlT2JqXG4gICAgICAgICAgICAgICAgPyBzZWxmLmxhdGVzdFNlbGVjdGVkRGF0ZU9iai5nZXRNaW51dGVzKClcbiAgICAgICAgICAgICAgICA6IHNlbGYuY29uZmlnLmRlZmF1bHRNaW51dGUpO1xuICAgICAgICAgICAgc2VsZi5ob3VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJzdGVwXCIsIHNlbGYuY29uZmlnLmhvdXJJbmNyZW1lbnQudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICBzZWxmLm1pbnV0ZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwic3RlcFwiLCBzZWxmLmNvbmZpZy5taW51dGVJbmNyZW1lbnQudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICBzZWxmLmhvdXJFbGVtZW50LnNldEF0dHJpYnV0ZShcIm1pblwiLCBzZWxmLmNvbmZpZy50aW1lXzI0aHIgPyBcIjBcIiA6IFwiMVwiKTtcbiAgICAgICAgICAgIHNlbGYuaG91ckVsZW1lbnQuc2V0QXR0cmlidXRlKFwibWF4XCIsIHNlbGYuY29uZmlnLnRpbWVfMjRociA/IFwiMjNcIiA6IFwiMTJcIik7XG4gICAgICAgICAgICBzZWxmLm1pbnV0ZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwibWluXCIsIFwiMFwiKTtcbiAgICAgICAgICAgIHNlbGYubWludXRlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJtYXhcIiwgXCI1OVwiKTtcbiAgICAgICAgICAgIHNlbGYudGltZUNvbnRhaW5lci5hcHBlbmRDaGlsZChob3VySW5wdXQpO1xuICAgICAgICAgICAgc2VsZi50aW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKHNlcGFyYXRvcik7XG4gICAgICAgICAgICBzZWxmLnRpbWVDb250YWluZXIuYXBwZW5kQ2hpbGQobWludXRlSW5wdXQpO1xuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLnRpbWVfMjRocilcbiAgICAgICAgICAgICAgICBzZWxmLnRpbWVDb250YWluZXIuY2xhc3NMaXN0LmFkZChcInRpbWUyNGhyXCIpO1xuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLmVuYWJsZVNlY29uZHMpIHtcbiAgICAgICAgICAgICAgICBzZWxmLnRpbWVDb250YWluZXIuY2xhc3NMaXN0LmFkZChcImhhc1NlY29uZHNcIik7XG4gICAgICAgICAgICAgICAgdmFyIHNlY29uZElucHV0ID0gY3JlYXRlTnVtYmVySW5wdXQoXCJmbGF0cGlja3Itc2Vjb25kXCIpO1xuICAgICAgICAgICAgICAgIHNlbGYuc2Vjb25kRWxlbWVudCA9IHNlY29uZElucHV0LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaW5wdXRcIilbMF07XG4gICAgICAgICAgICAgICAgc2VsZi5zZWNvbmRFbGVtZW50LnZhbHVlID0gcGFkKHNlbGYubGF0ZXN0U2VsZWN0ZWREYXRlT2JqXG4gICAgICAgICAgICAgICAgICAgID8gc2VsZi5sYXRlc3RTZWxlY3RlZERhdGVPYmouZ2V0U2Vjb25kcygpXG4gICAgICAgICAgICAgICAgICAgIDogc2VsZi5jb25maWcuZGVmYXVsdFNlY29uZHMpO1xuICAgICAgICAgICAgICAgIHNlbGYuc2Vjb25kRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJzdGVwXCIsIHNlbGYubWludXRlRWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJzdGVwXCIpKTtcbiAgICAgICAgICAgICAgICBzZWxmLnNlY29uZEVsZW1lbnQuc2V0QXR0cmlidXRlKFwibWluXCIsIFwiMFwiKTtcbiAgICAgICAgICAgICAgICBzZWxmLnNlY29uZEVsZW1lbnQuc2V0QXR0cmlidXRlKFwibWF4XCIsIFwiNTlcIik7XG4gICAgICAgICAgICAgICAgc2VsZi50aW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKGNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIFwiZmxhdHBpY2tyLXRpbWUtc2VwYXJhdG9yXCIsIFwiOlwiKSk7XG4gICAgICAgICAgICAgICAgc2VsZi50aW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKHNlY29uZElucHV0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc2VsZi5jb25maWcudGltZV8yNGhyKSB7XG4gICAgICAgICAgICAgICAgLy8gYWRkIHNlbGYuYW1QTSBpZiBhcHByb3ByaWF0ZVxuICAgICAgICAgICAgICAgIHNlbGYuYW1QTSA9IGNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIFwiZmxhdHBpY2tyLWFtLXBtXCIsIHNlbGYubDEwbi5hbVBNW2ludCgoc2VsZi5sYXRlc3RTZWxlY3RlZERhdGVPYmpcbiAgICAgICAgICAgICAgICAgICAgPyBzZWxmLmhvdXJFbGVtZW50LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIDogc2VsZi5jb25maWcuZGVmYXVsdEhvdXIpID4gMTEpXSk7XG4gICAgICAgICAgICAgICAgc2VsZi5hbVBNLnRpdGxlID0gc2VsZi5sMTBuLnRvZ2dsZVRpdGxlO1xuICAgICAgICAgICAgICAgIHNlbGYuYW1QTS50YWJJbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgIHNlbGYudGltZUNvbnRhaW5lci5hcHBlbmRDaGlsZChzZWxmLmFtUE0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNlbGYudGltZUNvbnRhaW5lcjtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBidWlsZFdlZWtkYXlzKCkge1xuICAgICAgICAgICAgaWYgKCFzZWxmLndlZWtkYXlDb250YWluZXIpXG4gICAgICAgICAgICAgICAgc2VsZi53ZWVrZGF5Q29udGFpbmVyID0gY3JlYXRlRWxlbWVudChcImRpdlwiLCBcImZsYXRwaWNrci13ZWVrZGF5c1wiKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBjbGVhck5vZGUoc2VsZi53ZWVrZGF5Q29udGFpbmVyKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSBzZWxmLmNvbmZpZy5zaG93TW9udGhzOyBpLS07KSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IGNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgXCJmbGF0cGlja3Itd2Vla2RheWNvbnRhaW5lclwiKTtcbiAgICAgICAgICAgICAgICBzZWxmLndlZWtkYXlDb250YWluZXIuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVwZGF0ZVdlZWtkYXlzKCk7XG4gICAgICAgICAgICByZXR1cm4gc2VsZi53ZWVrZGF5Q29udGFpbmVyO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVdlZWtkYXlzKCkge1xuICAgICAgICAgICAgaWYgKCFzZWxmLndlZWtkYXlDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgZmlyc3REYXlPZldlZWsgPSBzZWxmLmwxMG4uZmlyc3REYXlPZldlZWs7XG4gICAgICAgICAgICB2YXIgd2Vla2RheXMgPSBzZWxmLmwxMG4ud2Vla2RheXMuc2hvcnRoYW5kLnNsaWNlKCk7XG4gICAgICAgICAgICBpZiAoZmlyc3REYXlPZldlZWsgPiAwICYmIGZpcnN0RGF5T2ZXZWVrIDwgd2Vla2RheXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgd2Vla2RheXMgPSB3ZWVrZGF5cy5zcGxpY2UoZmlyc3REYXlPZldlZWssIHdlZWtkYXlzLmxlbmd0aCkuY29uY2F0KHdlZWtkYXlzLnNwbGljZSgwLCBmaXJzdERheU9mV2VlaykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IHNlbGYuY29uZmlnLnNob3dNb250aHM7IGktLTspIHtcbiAgICAgICAgICAgICAgICBzZWxmLndlZWtkYXlDb250YWluZXIuY2hpbGRyZW5baV0uaW5uZXJIVE1MID0gXCJcXG4gICAgICA8c3BhbiBjbGFzcz0nZmxhdHBpY2tyLXdlZWtkYXknPlxcbiAgICAgICAgXCIgKyB3ZWVrZGF5cy5qb2luKFwiPC9zcGFuPjxzcGFuIGNsYXNzPSdmbGF0cGlja3Itd2Vla2RheSc+XCIpICsgXCJcXG4gICAgICA8L3NwYW4+XFxuICAgICAgXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZnVuY3Rpb24gYnVpbGRXZWVrcygpIHtcbiAgICAgICAgICAgIHNlbGYuY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZChcImhhc1dlZWtzXCIpO1xuICAgICAgICAgICAgdmFyIHdlZWtXcmFwcGVyID0gY3JlYXRlRWxlbWVudChcImRpdlwiLCBcImZsYXRwaWNrci13ZWVrd3JhcHBlclwiKTtcbiAgICAgICAgICAgIHdlZWtXcmFwcGVyLmFwcGVuZENoaWxkKGNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIFwiZmxhdHBpY2tyLXdlZWtkYXlcIiwgc2VsZi5sMTBuLndlZWtBYmJyZXZpYXRpb24pKTtcbiAgICAgICAgICAgIHZhciB3ZWVrTnVtYmVycyA9IGNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgXCJmbGF0cGlja3Itd2Vla3NcIik7XG4gICAgICAgICAgICB3ZWVrV3JhcHBlci5hcHBlbmRDaGlsZCh3ZWVrTnVtYmVycyk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHdlZWtXcmFwcGVyOiB3ZWVrV3JhcHBlcixcbiAgICAgICAgICAgICAgICB3ZWVrTnVtYmVyczogd2Vla051bWJlcnNcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gY2hhbmdlTW9udGgodmFsdWUsIGlzT2Zmc2V0KSB7XG4gICAgICAgICAgICBpZiAoaXNPZmZzZXQgPT09IHZvaWQgMCkgeyBpc09mZnNldCA9IHRydWU7IH1cbiAgICAgICAgICAgIHZhciBkZWx0YSA9IGlzT2Zmc2V0ID8gdmFsdWUgOiB2YWx1ZSAtIHNlbGYuY3VycmVudE1vbnRoO1xuICAgICAgICAgICAgaWYgKChkZWx0YSA8IDAgJiYgc2VsZi5faGlkZVByZXZNb250aEFycm93ID09PSB0cnVlKSB8fFxuICAgICAgICAgICAgICAgIChkZWx0YSA+IDAgJiYgc2VsZi5faGlkZU5leHRNb250aEFycm93ID09PSB0cnVlKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBzZWxmLmN1cnJlbnRNb250aCArPSBkZWx0YTtcbiAgICAgICAgICAgIGlmIChzZWxmLmN1cnJlbnRNb250aCA8IDAgfHwgc2VsZi5jdXJyZW50TW9udGggPiAxMSkge1xuICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudFllYXIgKz0gc2VsZi5jdXJyZW50TW9udGggPiAxMSA/IDEgOiAtMTtcbiAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnRNb250aCA9IChzZWxmLmN1cnJlbnRNb250aCArIDEyKSAlIDEyO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJFdmVudChcIm9uWWVhckNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICBidWlsZE1vbnRoU3dpdGNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidWlsZERheXMoKTtcbiAgICAgICAgICAgIHRyaWdnZXJFdmVudChcIm9uTW9udGhDaGFuZ2VcIik7XG4gICAgICAgICAgICB1cGRhdGVOYXZpZ2F0aW9uQ3VycmVudE1vbnRoKCk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gY2xlYXIodHJpZ2dlckNoYW5nZUV2ZW50LCB0b0luaXRpYWwpIHtcbiAgICAgICAgICAgIGlmICh0cmlnZ2VyQ2hhbmdlRXZlbnQgPT09IHZvaWQgMCkgeyB0cmlnZ2VyQ2hhbmdlRXZlbnQgPSB0cnVlOyB9XG4gICAgICAgICAgICBpZiAodG9Jbml0aWFsID09PSB2b2lkIDApIHsgdG9Jbml0aWFsID0gdHJ1ZTsgfVxuICAgICAgICAgICAgc2VsZi5pbnB1dC52YWx1ZSA9IFwiXCI7XG4gICAgICAgICAgICBpZiAoc2VsZi5hbHRJbnB1dCAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIHNlbGYuYWx0SW5wdXQudmFsdWUgPSBcIlwiO1xuICAgICAgICAgICAgaWYgKHNlbGYubW9iaWxlSW5wdXQgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBzZWxmLm1vYmlsZUlucHV0LnZhbHVlID0gXCJcIjtcbiAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWREYXRlcyA9IFtdO1xuICAgICAgICAgICAgc2VsZi5sYXRlc3RTZWxlY3RlZERhdGVPYmogPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAodG9Jbml0aWFsID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50WWVhciA9IHNlbGYuX2luaXRpYWxEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50TW9udGggPSBzZWxmLl9pbml0aWFsRGF0ZS5nZXRNb250aCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZi5zaG93VGltZUlucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoc2VsZi5jb25maWcuZW5hYmxlVGltZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHNldERlZmF1bHRIb3VycygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZi5yZWRyYXcoKTtcbiAgICAgICAgICAgIGlmICh0cmlnZ2VyQ2hhbmdlRXZlbnQpXG4gICAgICAgICAgICAgICAgLy8gdHJpZ2dlckNoYW5nZUV2ZW50IGlzIHRydWUgKGRlZmF1bHQpIG9yIGFuIEV2ZW50XG4gICAgICAgICAgICAgICAgdHJpZ2dlckV2ZW50KFwib25DaGFuZ2VcIik7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gY2xvc2UoKSB7XG4gICAgICAgICAgICBzZWxmLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKCFzZWxmLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuY2FsZW5kYXJDb250YWluZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmNhbGVuZGFyQ29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoXCJvcGVuXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5faW5wdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dC5jbGFzc0xpc3QucmVtb3ZlKFwiYWN0aXZlXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyaWdnZXJFdmVudChcIm9uQ2xvc2VcIik7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZyAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIHRyaWdnZXJFdmVudChcIm9uRGVzdHJveVwiKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSBzZWxmLl9oYW5kbGVycy5sZW5ndGg7IGktLTspIHtcbiAgICAgICAgICAgICAgICB2YXIgaCA9IHNlbGYuX2hhbmRsZXJzW2ldO1xuICAgICAgICAgICAgICAgIGguZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGguZXZlbnQsIGguaGFuZGxlciwgaC5vcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGYuX2hhbmRsZXJzID0gW107XG4gICAgICAgICAgICBpZiAoc2VsZi5tb2JpbGVJbnB1dCkge1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLm1vYmlsZUlucHV0LnBhcmVudE5vZGUpXG4gICAgICAgICAgICAgICAgICAgIHNlbGYubW9iaWxlSW5wdXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzZWxmLm1vYmlsZUlucHV0KTtcbiAgICAgICAgICAgICAgICBzZWxmLm1vYmlsZUlucHV0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc2VsZi5jYWxlbmRhckNvbnRhaW5lciAmJiBzZWxmLmNhbGVuZGFyQ29udGFpbmVyLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5jb25maWcuc3RhdGljICYmIHNlbGYuY2FsZW5kYXJDb250YWluZXIucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgd3JhcHBlciA9IHNlbGYuY2FsZW5kYXJDb250YWluZXIucGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICAgICAgd3JhcHBlci5sYXN0Q2hpbGQgJiYgd3JhcHBlci5yZW1vdmVDaGlsZCh3cmFwcGVyLmxhc3RDaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3cmFwcGVyLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh3cmFwcGVyLmZpcnN0Q2hpbGQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlci5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh3cmFwcGVyLmZpcnN0Q2hpbGQsIHdyYXBwZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHdyYXBwZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5jYWxlbmRhckNvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNlbGYuY2FsZW5kYXJDb250YWluZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGYuYWx0SW5wdXQpIHtcbiAgICAgICAgICAgICAgICBzZWxmLmlucHV0LnR5cGUgPSBcInRleHRcIjtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5hbHRJbnB1dC5wYXJlbnROb2RlKVxuICAgICAgICAgICAgICAgICAgICBzZWxmLmFsdElucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc2VsZi5hbHRJbnB1dCk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHNlbGYuYWx0SW5wdXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VsZi5pbnB1dCkge1xuICAgICAgICAgICAgICAgIHNlbGYuaW5wdXQudHlwZSA9IHNlbGYuaW5wdXQuX3R5cGU7XG4gICAgICAgICAgICAgICAgc2VsZi5pbnB1dC5jbGFzc0xpc3QucmVtb3ZlKFwiZmxhdHBpY2tyLWlucHV0XCIpO1xuICAgICAgICAgICAgICAgIHNlbGYuaW5wdXQucmVtb3ZlQXR0cmlidXRlKFwicmVhZG9ubHlcIik7XG4gICAgICAgICAgICAgICAgc2VsZi5pbnB1dC52YWx1ZSA9IFwiXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgXCJfc2hvd1RpbWVJbnB1dFwiLFxuICAgICAgICAgICAgICAgIFwibGF0ZXN0U2VsZWN0ZWREYXRlT2JqXCIsXG4gICAgICAgICAgICAgICAgXCJfaGlkZU5leHRNb250aEFycm93XCIsXG4gICAgICAgICAgICAgICAgXCJfaGlkZVByZXZNb250aEFycm93XCIsXG4gICAgICAgICAgICAgICAgXCJfX2hpZGVOZXh0TW9udGhBcnJvd1wiLFxuICAgICAgICAgICAgICAgIFwiX19oaWRlUHJldk1vbnRoQXJyb3dcIixcbiAgICAgICAgICAgICAgICBcImlzTW9iaWxlXCIsXG4gICAgICAgICAgICAgICAgXCJpc09wZW5cIixcbiAgICAgICAgICAgICAgICBcInNlbGVjdGVkRGF0ZUVsZW1cIixcbiAgICAgICAgICAgICAgICBcIm1pbkRhdGVIYXNUaW1lXCIsXG4gICAgICAgICAgICAgICAgXCJtYXhEYXRlSGFzVGltZVwiLFxuICAgICAgICAgICAgICAgIFwiZGF5c1wiLFxuICAgICAgICAgICAgICAgIFwiZGF5c0NvbnRhaW5lclwiLFxuICAgICAgICAgICAgICAgIFwiX2lucHV0XCIsXG4gICAgICAgICAgICAgICAgXCJfcG9zaXRpb25FbGVtZW50XCIsXG4gICAgICAgICAgICAgICAgXCJpbm5lckNvbnRhaW5lclwiLFxuICAgICAgICAgICAgICAgIFwickNvbnRhaW5lclwiLFxuICAgICAgICAgICAgICAgIFwibW9udGhOYXZcIixcbiAgICAgICAgICAgICAgICBcInRvZGF5RGF0ZUVsZW1cIixcbiAgICAgICAgICAgICAgICBcImNhbGVuZGFyQ29udGFpbmVyXCIsXG4gICAgICAgICAgICAgICAgXCJ3ZWVrZGF5Q29udGFpbmVyXCIsXG4gICAgICAgICAgICAgICAgXCJwcmV2TW9udGhOYXZcIixcbiAgICAgICAgICAgICAgICBcIm5leHRNb250aE5hdlwiLFxuICAgICAgICAgICAgICAgIFwibW9udGhzRHJvcGRvd25Db250YWluZXJcIixcbiAgICAgICAgICAgICAgICBcImN1cnJlbnRNb250aEVsZW1lbnRcIixcbiAgICAgICAgICAgICAgICBcImN1cnJlbnRZZWFyRWxlbWVudFwiLFxuICAgICAgICAgICAgICAgIFwibmF2aWdhdGlvbkN1cnJlbnRNb250aFwiLFxuICAgICAgICAgICAgICAgIFwic2VsZWN0ZWREYXRlRWxlbVwiLFxuICAgICAgICAgICAgICAgIFwiY29uZmlnXCIsXG4gICAgICAgICAgICBdLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgc2VsZltrXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKF8pIHsgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gaXNDYWxlbmRhckVsZW0oZWxlbSkge1xuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLmFwcGVuZFRvICYmIHNlbGYuY29uZmlnLmFwcGVuZFRvLmNvbnRhaW5zKGVsZW0pKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FsZW5kYXJDb250YWluZXIuY29udGFpbnMoZWxlbSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZG9jdW1lbnRDbGljayhlKSB7XG4gICAgICAgICAgICBpZiAoc2VsZi5pc09wZW4gJiYgIXNlbGYuY29uZmlnLmlubGluZSkge1xuICAgICAgICAgICAgICAgIHZhciBldmVudFRhcmdldF8xID0gZ2V0RXZlbnRUYXJnZXQoZSk7XG4gICAgICAgICAgICAgICAgdmFyIGlzQ2FsZW5kYXJFbGVtZW50ID0gaXNDYWxlbmRhckVsZW0oZXZlbnRUYXJnZXRfMSk7XG4gICAgICAgICAgICAgICAgdmFyIGlzSW5wdXQgPSBldmVudFRhcmdldF8xID09PSBzZWxmLmlucHV0IHx8XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50VGFyZ2V0XzEgPT09IHNlbGYuYWx0SW5wdXQgfHxcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5lbGVtZW50LmNvbnRhaW5zKGV2ZW50VGFyZ2V0XzEpIHx8XG4gICAgICAgICAgICAgICAgICAgIC8vIHdlYiBjb21wb25lbnRzXG4gICAgICAgICAgICAgICAgICAgIC8vIGUucGF0aCBpcyBub3QgcHJlc2VudCBpbiBhbGwgYnJvd3NlcnMuIGNpcmN1bXZlbnRpbmcgdHlwZWNoZWNrc1xuICAgICAgICAgICAgICAgICAgICAoZS5wYXRoICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhdGguaW5kZXhPZiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKH5lLnBhdGguaW5kZXhPZihzZWxmLmlucHV0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5lLnBhdGguaW5kZXhPZihzZWxmLmFsdElucHV0KSkpO1xuICAgICAgICAgICAgICAgIHZhciBsb3N0Rm9jdXMgPSBlLnR5cGUgPT09IFwiYmx1clwiXG4gICAgICAgICAgICAgICAgICAgID8gaXNJbnB1dCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5yZWxhdGVkVGFyZ2V0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhaXNDYWxlbmRhckVsZW0oZS5yZWxhdGVkVGFyZ2V0KVxuICAgICAgICAgICAgICAgICAgICA6ICFpc0lucHV0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhaXNDYWxlbmRhckVsZW1lbnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFpc0NhbGVuZGFyRWxlbShlLnJlbGF0ZWRUYXJnZXQpO1xuICAgICAgICAgICAgICAgIHZhciBpc0lnbm9yZWQgPSAhc2VsZi5jb25maWcuaWdub3JlZEZvY3VzRWxlbWVudHMuc29tZShmdW5jdGlvbiAoZWxlbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5jb250YWlucyhldmVudFRhcmdldF8xKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAobG9zdEZvY3VzICYmIGlzSWdub3JlZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi50aW1lQ29udGFpbmVyICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWludXRlRWxlbWVudCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhvdXJFbGVtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVRpbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5tb2RlID09PSBcInJhbmdlXCIgJiYgc2VsZi5zZWxlY3RlZERhdGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGVhcihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlZHJhdygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGNoYW5nZVllYXIobmV3WWVhcikge1xuICAgICAgICAgICAgaWYgKCFuZXdZZWFyIHx8XG4gICAgICAgICAgICAgICAgKHNlbGYuY29uZmlnLm1pbkRhdGUgJiYgbmV3WWVhciA8IHNlbGYuY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKSkgfHxcbiAgICAgICAgICAgICAgICAoc2VsZi5jb25maWcubWF4RGF0ZSAmJiBuZXdZZWFyID4gc2VsZi5jb25maWcubWF4RGF0ZS5nZXRGdWxsWWVhcigpKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB2YXIgbmV3WWVhck51bSA9IG5ld1llYXIsIGlzTmV3WWVhciA9IHNlbGYuY3VycmVudFllYXIgIT09IG5ld1llYXJOdW07XG4gICAgICAgICAgICBzZWxmLmN1cnJlbnRZZWFyID0gbmV3WWVhck51bSB8fCBzZWxmLmN1cnJlbnRZZWFyO1xuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLm1heERhdGUgJiZcbiAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnRZZWFyID09PSBzZWxmLmNvbmZpZy5tYXhEYXRlLmdldEZ1bGxZZWFyKCkpIHtcbiAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnRNb250aCA9IE1hdGgubWluKHNlbGYuY29uZmlnLm1heERhdGUuZ2V0TW9udGgoKSwgc2VsZi5jdXJyZW50TW9udGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc2VsZi5jb25maWcubWluRGF0ZSAmJlxuICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudFllYXIgPT09IHNlbGYuY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKSkge1xuICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudE1vbnRoID0gTWF0aC5tYXgoc2VsZi5jb25maWcubWluRGF0ZS5nZXRNb250aCgpLCBzZWxmLmN1cnJlbnRNb250aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNOZXdZZWFyKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5yZWRyYXcoKTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoXCJvblllYXJDaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgYnVpbGRNb250aFN3aXRjaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGlzRW5hYmxlZChkYXRlLCB0aW1lbGVzcykge1xuICAgICAgICAgICAgaWYgKHRpbWVsZXNzID09PSB2b2lkIDApIHsgdGltZWxlc3MgPSB0cnVlOyB9XG4gICAgICAgICAgICB2YXIgZGF0ZVRvQ2hlY2sgPSBzZWxmLnBhcnNlRGF0ZShkYXRlLCB1bmRlZmluZWQsIHRpbWVsZXNzKTsgLy8gdGltZWxlc3NcbiAgICAgICAgICAgIGlmICgoc2VsZi5jb25maWcubWluRGF0ZSAmJlxuICAgICAgICAgICAgICAgIGRhdGVUb0NoZWNrICYmXG4gICAgICAgICAgICAgICAgY29tcGFyZURhdGVzKGRhdGVUb0NoZWNrLCBzZWxmLmNvbmZpZy5taW5EYXRlLCB0aW1lbGVzcyAhPT0gdW5kZWZpbmVkID8gdGltZWxlc3MgOiAhc2VsZi5taW5EYXRlSGFzVGltZSkgPCAwKSB8fFxuICAgICAgICAgICAgICAgIChzZWxmLmNvbmZpZy5tYXhEYXRlICYmXG4gICAgICAgICAgICAgICAgICAgIGRhdGVUb0NoZWNrICYmXG4gICAgICAgICAgICAgICAgICAgIGNvbXBhcmVEYXRlcyhkYXRlVG9DaGVjaywgc2VsZi5jb25maWcubWF4RGF0ZSwgdGltZWxlc3MgIT09IHVuZGVmaW5lZCA/IHRpbWVsZXNzIDogIXNlbGYubWF4RGF0ZUhhc1RpbWUpID4gMCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLmVuYWJsZS5sZW5ndGggPT09IDAgJiYgc2VsZi5jb25maWcuZGlzYWJsZS5sZW5ndGggPT09IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBpZiAoZGF0ZVRvQ2hlY2sgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB2YXIgYm9vbCA9IHNlbGYuY29uZmlnLmVuYWJsZS5sZW5ndGggPiAwLCBhcnJheSA9IGJvb2wgPyBzZWxmLmNvbmZpZy5lbmFibGUgOiBzZWxmLmNvbmZpZy5kaXNhYmxlO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGQgPSB2b2lkIDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGQgPSBhcnJheVtpXTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGQgPT09IFwiZnVuY3Rpb25cIiAmJlxuICAgICAgICAgICAgICAgICAgICBkKGRhdGVUb0NoZWNrKSAvLyBkaXNhYmxlZCBieSBmdW5jdGlvblxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJvb2w7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZCBpbnN0YW5jZW9mIERhdGUgJiZcbiAgICAgICAgICAgICAgICAgICAgZGF0ZVRvQ2hlY2sgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICBkLmdldFRpbWUoKSA9PT0gZGF0ZVRvQ2hlY2suZ2V0VGltZSgpKVxuICAgICAgICAgICAgICAgICAgICAvLyBkaXNhYmxlZCBieSBkYXRlXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBib29sO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBkID09PSBcInN0cmluZ1wiICYmIGRhdGVUb0NoZWNrICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZGlzYWJsZWQgYnkgZGF0ZSBzdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnNlZCA9IHNlbGYucGFyc2VEYXRlKGQsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZWQgJiYgcGFyc2VkLmdldFRpbWUoKSA9PT0gZGF0ZVRvQ2hlY2suZ2V0VGltZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGJvb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIDogIWJvb2w7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIC8vIGRpc2FibGVkIGJ5IHJhbmdlXG4gICAgICAgICAgICAgICAgdHlwZW9mIGQgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgICAgICAgICAgZGF0ZVRvQ2hlY2sgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICBkLmZyb20gJiZcbiAgICAgICAgICAgICAgICAgICAgZC50byAmJlxuICAgICAgICAgICAgICAgICAgICBkYXRlVG9DaGVjay5nZXRUaW1lKCkgPj0gZC5mcm9tLmdldFRpbWUoKSAmJlxuICAgICAgICAgICAgICAgICAgICBkYXRlVG9DaGVjay5nZXRUaW1lKCkgPD0gZC50by5nZXRUaW1lKCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBib29sO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICFib29sO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGlzSW5WaWV3KGVsZW0pIHtcbiAgICAgICAgICAgIGlmIChzZWxmLmRheXNDb250YWluZXIgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICByZXR1cm4gKGVsZW0uY2xhc3NOYW1lLmluZGV4T2YoXCJoaWRkZW5cIikgPT09IC0xICYmXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuZGF5c0NvbnRhaW5lci5jb250YWlucyhlbGVtKSk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gb25LZXlEb3duKGUpIHtcbiAgICAgICAgICAgIC8vIGUua2V5ICAgICAgICAgICAgICAgICAgICAgIGUua2V5Q29kZVxuICAgICAgICAgICAgLy8gXCJCYWNrc3BhY2VcIiAgICAgICAgICAgICAgICAgICAgICAgIDhcbiAgICAgICAgICAgIC8vIFwiVGFiXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5XG4gICAgICAgICAgICAvLyBcIkVudGVyXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAxM1xuICAgICAgICAgICAgLy8gXCJFc2NhcGVcIiAgICAgKElFIFwiRXNjXCIpICAgICAgICAgICAyN1xuICAgICAgICAgICAgLy8gXCJBcnJvd0xlZnRcIiAgKElFIFwiTGVmdFwiKSAgICAgICAgICAzN1xuICAgICAgICAgICAgLy8gXCJBcnJvd1VwXCIgICAgKElFIFwiVXBcIikgICAgICAgICAgICAzOFxuICAgICAgICAgICAgLy8gXCJBcnJvd1JpZ2h0XCIgKElFIFwiUmlnaHRcIikgICAgICAgICAzOVxuICAgICAgICAgICAgLy8gXCJBcnJvd0Rvd25cIiAgKElFIFwiRG93blwiKSAgICAgICAgICA0MFxuICAgICAgICAgICAgLy8gXCJEZWxldGVcIiAgICAgKElFIFwiRGVsXCIpICAgICAgICAgICA0NlxuICAgICAgICAgICAgdmFyIGlzSW5wdXQgPSBlLnRhcmdldCA9PT0gc2VsZi5faW5wdXQ7XG4gICAgICAgICAgICB2YXIgYWxsb3dJbnB1dCA9IHNlbGYuY29uZmlnLmFsbG93SW5wdXQ7XG4gICAgICAgICAgICB2YXIgYWxsb3dLZXlkb3duID0gc2VsZi5pc09wZW4gJiYgKCFhbGxvd0lucHV0IHx8ICFpc0lucHV0KTtcbiAgICAgICAgICAgIHZhciBhbGxvd0lubGluZUtleWRvd24gPSBzZWxmLmNvbmZpZy5pbmxpbmUgJiYgaXNJbnB1dCAmJiAhYWxsb3dJbnB1dDtcbiAgICAgICAgICAgIGlmIChlLmtleUNvZGUgPT09IDEzICYmIGlzSW5wdXQpIHtcbiAgICAgICAgICAgICAgICBpZiAoYWxsb3dJbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLnNldERhdGUoc2VsZi5faW5wdXQudmFsdWUsIHRydWUsIGUudGFyZ2V0ID09PSBzZWxmLmFsdElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlbGYuY29uZmlnLmFsdEZvcm1hdFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWxmLmNvbmZpZy5kYXRlRm9ybWF0KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUudGFyZ2V0LmJsdXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYub3BlbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlzQ2FsZW5kYXJFbGVtKGUudGFyZ2V0KSB8fFxuICAgICAgICAgICAgICAgIGFsbG93S2V5ZG93biB8fFxuICAgICAgICAgICAgICAgIGFsbG93SW5saW5lS2V5ZG93bikge1xuICAgICAgICAgICAgICAgIHZhciBpc1RpbWVPYmogPSAhIXNlbGYudGltZUNvbnRhaW5lciAmJlxuICAgICAgICAgICAgICAgICAgICBzZWxmLnRpbWVDb250YWluZXIuY29udGFpbnMoZS50YXJnZXQpO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZS5rZXlDb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNUaW1lT2JqKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVRpbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c0FuZENsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0RGF0ZShlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI3OiAvLyBlc2NhcGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzQW5kQ2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDY6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbnB1dCAmJiAhc2VsZi5jb25maWcuYWxsb3dJbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzNzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUaW1lT2JqICYmICFpc0lucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLmRheXNDb250YWluZXIgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWxsb3dJbnB1dCA9PT0gZmFsc2UgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIGlzSW5WaWV3KGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRlbHRhXzEgPSBlLmtleUNvZGUgPT09IDM5ID8gMSA6IC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUuY3RybEtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzT25EYXkodW5kZWZpbmVkLCBkZWx0YV8xKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlTW9udGgoZGVsdGFfMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c09uRGF5KGdldEZpcnN0QXZhaWxhYmxlRGF5KDEpLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNlbGYuaG91ckVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ob3VyRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzg6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDA6XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSBlLmtleUNvZGUgPT09IDQwID8gMSA6IC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChzZWxmLmRheXNDb250YWluZXIgJiYgZS50YXJnZXQuJGkgIT09IHVuZGVmaW5lZCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnRhcmdldCA9PT0gc2VsZi5pbnB1dCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0ID09PSBzZWxmLmFsdElucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuY3RybEtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VZZWFyKHNlbGYuY3VycmVudFllYXIgLSBkZWx0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzT25EYXkoZ2V0Rmlyc3RBdmFpbGFibGVEYXkoMSksIDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghaXNUaW1lT2JqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c09uRGF5KHVuZGVmaW5lZCwgZGVsdGEgKiA3KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGUudGFyZ2V0ID09PSBzZWxmLmN1cnJlbnRZZWFyRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZVllYXIoc2VsZi5jdXJyZW50WWVhciAtIGRlbHRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNlbGYuY29uZmlnLmVuYWJsZVRpbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGltZU9iaiAmJiBzZWxmLmhvdXJFbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhvdXJFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlVGltZShlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9kZWJvdW5jZWRDaGFuZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNUaW1lT2JqKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW1zID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhvdXJFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1pbnV0ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2Vjb25kRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hbVBNLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNvbmNhdChzZWxmLnBsdWdpbkVsZW1lbnRzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4OyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGVsZW1zLmluZGV4T2YoZS50YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZWxlbXNbaSArIChlLnNoaWZ0S2V5ID8gLTEgOiAxKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhcmdldCB8fCBzZWxmLl9pbnB1dCkuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghc2VsZi5jb25maWcubm9DYWxlbmRhciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF5c0NvbnRhaW5lciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF5c0NvbnRhaW5lci5jb250YWlucyhlLnRhcmdldCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxmLmFtUE0gIT09IHVuZGVmaW5lZCAmJiBlLnRhcmdldCA9PT0gc2VsZi5hbVBNKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChlLmtleSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIHNlbGYubDEwbi5hbVBNWzBdLmNoYXJBdCgwKTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBzZWxmLmwxMG4uYW1QTVswXS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYW1QTS50ZXh0Q29udGVudCA9IHNlbGYubDEwbi5hbVBNWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SG91cnNGcm9tSW5wdXRzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2Ugc2VsZi5sMTBuLmFtUE1bMV0uY2hhckF0KDApOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIHNlbGYubDEwbi5hbVBNWzFdLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpOlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hbVBNLnRleHRDb250ZW50ID0gc2VsZi5sMTBuLmFtUE1bMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRIb3Vyc0Zyb21JbnB1dHMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNJbnB1dCB8fCBpc0NhbGVuZGFyRWxlbShlLnRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoXCJvbktleURvd25cIiwgZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gb25Nb3VzZU92ZXIoZWxlbSkge1xuICAgICAgICAgICAgaWYgKHNlbGYuc2VsZWN0ZWREYXRlcy5sZW5ndGggIT09IDEgfHxcbiAgICAgICAgICAgICAgICAoZWxlbSAmJlxuICAgICAgICAgICAgICAgICAgICAoIWVsZW0uY2xhc3NMaXN0LmNvbnRhaW5zKFwiZmxhdHBpY2tyLWRheVwiKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5jbGFzc0xpc3QuY29udGFpbnMoXCJmbGF0cGlja3ItZGlzYWJsZWRcIikpKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB2YXIgaG92ZXJEYXRlID0gZWxlbVxuICAgICAgICAgICAgICAgID8gZWxlbS5kYXRlT2JqLmdldFRpbWUoKVxuICAgICAgICAgICAgICAgIDogc2VsZi5kYXlzLmZpcnN0RWxlbWVudENoaWxkLmRhdGVPYmouZ2V0VGltZSgpLCBpbml0aWFsRGF0ZSA9IHNlbGYucGFyc2VEYXRlKHNlbGYuc2VsZWN0ZWREYXRlc1swXSwgdW5kZWZpbmVkLCB0cnVlKS5nZXRUaW1lKCksIHJhbmdlU3RhcnREYXRlID0gTWF0aC5taW4oaG92ZXJEYXRlLCBzZWxmLnNlbGVjdGVkRGF0ZXNbMF0uZ2V0VGltZSgpKSwgcmFuZ2VFbmREYXRlID0gTWF0aC5tYXgoaG92ZXJEYXRlLCBzZWxmLnNlbGVjdGVkRGF0ZXNbMF0uZ2V0VGltZSgpKTtcbiAgICAgICAgICAgIHZhciBjb250YWluc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgbWluUmFuZ2UgPSAwLCBtYXhSYW5nZSA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciB0ID0gcmFuZ2VTdGFydERhdGU7IHQgPCByYW5nZUVuZERhdGU7IHQgKz0gZHVyYXRpb24uREFZKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc0VuYWJsZWQobmV3IERhdGUodCksIHRydWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zRGlzYWJsZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnNEaXNhYmxlZCB8fCAodCA+IHJhbmdlU3RhcnREYXRlICYmIHQgPCByYW5nZUVuZERhdGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodCA8IGluaXRpYWxEYXRlICYmICghbWluUmFuZ2UgfHwgdCA+IG1pblJhbmdlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pblJhbmdlID0gdDtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodCA+IGluaXRpYWxEYXRlICYmICghbWF4UmFuZ2UgfHwgdCA8IG1heFJhbmdlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heFJhbmdlID0gdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBtID0gMDsgbSA8IHNlbGYuY29uZmlnLnNob3dNb250aHM7IG0rKykge1xuICAgICAgICAgICAgICAgIHZhciBtb250aCA9IHNlbGYuZGF5c0NvbnRhaW5lci5jaGlsZHJlblttXTtcbiAgICAgICAgICAgICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIChpLCBsKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkYXlFbGVtID0gbW9udGguY2hpbGRyZW5baV0sIGRhdGUgPSBkYXlFbGVtLmRhdGVPYmo7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aW1lc3RhbXAgPSBkYXRlLmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG91dE9mUmFuZ2UgPSAobWluUmFuZ2UgPiAwICYmIHRpbWVzdGFtcCA8IG1pblJhbmdlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1heFJhbmdlID4gMCAmJiB0aW1lc3RhbXAgPiBtYXhSYW5nZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvdXRPZlJhbmdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXlFbGVtLmNsYXNzTGlzdC5hZGQoXCJub3RBbGxvd2VkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgW1wiaW5SYW5nZVwiLCBcInN0YXJ0UmFuZ2VcIiwgXCJlbmRSYW5nZVwiXS5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5RWxlbS5jbGFzc0xpc3QucmVtb3ZlKGMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRhaW5zRGlzYWJsZWQgJiYgIW91dE9mUmFuZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgICAgICAgICAgICAgICBbXCJzdGFydFJhbmdlXCIsIFwiaW5SYW5nZVwiLCBcImVuZFJhbmdlXCIsIFwibm90QWxsb3dlZFwiXS5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXlFbGVtLmNsYXNzTGlzdC5yZW1vdmUoYyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmNsYXNzTGlzdC5hZGQoaG92ZXJEYXRlIDw9IHNlbGYuc2VsZWN0ZWREYXRlc1swXS5nZXRUaW1lKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwic3RhcnRSYW5nZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcImVuZFJhbmdlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluaXRpYWxEYXRlIDwgaG92ZXJEYXRlICYmIHRpbWVzdGFtcCA9PT0gaW5pdGlhbERhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5RWxlbS5jbGFzc0xpc3QuYWRkKFwic3RhcnRSYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGluaXRpYWxEYXRlID4gaG92ZXJEYXRlICYmIHRpbWVzdGFtcCA9PT0gaW5pdGlhbERhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5RWxlbS5jbGFzc0xpc3QuYWRkKFwiZW5kUmFuZ2VcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGltZXN0YW1wID49IG1pblJhbmdlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1heFJhbmdlID09PSAwIHx8IHRpbWVzdGFtcCA8PSBtYXhSYW5nZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0JldHdlZW4odGltZXN0YW1wLCBpbml0aWFsRGF0ZSwgaG92ZXJEYXRlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlFbGVtLmNsYXNzTGlzdC5hZGQoXCJpblJhbmdlXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IG1vbnRoLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBfbG9vcF8xKGksIGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBvblJlc2l6ZSgpIHtcbiAgICAgICAgICAgIGlmIChzZWxmLmlzT3BlbiAmJiAhc2VsZi5jb25maWcuc3RhdGljICYmICFzZWxmLmNvbmZpZy5pbmxpbmUpXG4gICAgICAgICAgICAgICAgcG9zaXRpb25DYWxlbmRhcigpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHNldERlZmF1bHRUaW1lKCkge1xuICAgICAgICAgICAgc2VsZi5zZXREYXRlKHNlbGYuY29uZmlnLm1pbkRhdGUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgID8gbmV3IERhdGUoc2VsZi5jb25maWcubWluRGF0ZS5nZXRUaW1lKCkpXG4gICAgICAgICAgICAgICAgOiBuZXcgRGF0ZSgpLCB0cnVlKTtcbiAgICAgICAgICAgIHNldERlZmF1bHRIb3VycygpO1xuICAgICAgICAgICAgdXBkYXRlVmFsdWUoKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBvcGVuKGUsIHBvc2l0aW9uRWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKHBvc2l0aW9uRWxlbWVudCA9PT0gdm9pZCAwKSB7IHBvc2l0aW9uRWxlbWVudCA9IHNlbGYuX3Bvc2l0aW9uRWxlbWVudDsgfVxuICAgICAgICAgICAgaWYgKHNlbGYuaXNNb2JpbGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0ICYmIGUudGFyZ2V0LmJsdXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYubW9iaWxlSW5wdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLm1vYmlsZUlucHV0LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYubW9iaWxlSW5wdXQuY2xpY2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdHJpZ2dlckV2ZW50KFwib25PcGVuXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxmLl9pbnB1dC5kaXNhYmxlZCB8fCBzZWxmLmNvbmZpZy5pbmxpbmUpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgdmFyIHdhc09wZW4gPSBzZWxmLmlzT3BlbjtcbiAgICAgICAgICAgIHNlbGYuaXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmICghd2FzT3Blbikge1xuICAgICAgICAgICAgICAgIHNlbGYuY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZChcIm9wZW5cIik7XG4gICAgICAgICAgICAgICAgc2VsZi5faW5wdXQuY2xhc3NMaXN0LmFkZChcImFjdGl2ZVwiKTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoXCJvbk9wZW5cIik7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25DYWxlbmRhcihwb3NpdGlvbkVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLmVuYWJsZVRpbWUgPT09IHRydWUgJiYgc2VsZi5jb25maWcubm9DYWxlbmRhciA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLnNlbGVjdGVkRGF0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldERlZmF1bHRUaW1lKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5hbGxvd0lucHV0ID09PSBmYWxzZSAmJlxuICAgICAgICAgICAgICAgICAgICAoZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAhc2VsZi50aW1lQ29udGFpbmVyLmNvbnRhaW5zKGUucmVsYXRlZFRhcmdldCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2VsZi5ob3VyRWxlbWVudC5zZWxlY3QoKTsgfSwgNTApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBtaW5NYXhEYXRlU2V0dGVyKHR5cGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZGF0ZSkge1xuICAgICAgICAgICAgICAgIHZhciBkYXRlT2JqID0gKHNlbGYuY29uZmlnW1wiX1wiICsgdHlwZSArIFwiRGF0ZVwiXSA9IHNlbGYucGFyc2VEYXRlKGRhdGUsIHNlbGYuY29uZmlnLmRhdGVGb3JtYXQpKTtcbiAgICAgICAgICAgICAgICB2YXIgaW52ZXJzZURhdGVPYmogPSBzZWxmLmNvbmZpZ1tcIl9cIiArICh0eXBlID09PSBcIm1pblwiID8gXCJtYXhcIiA6IFwibWluXCIpICsgXCJEYXRlXCJdO1xuICAgICAgICAgICAgICAgIGlmIChkYXRlT2JqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZlt0eXBlID09PSBcIm1pblwiID8gXCJtaW5EYXRlSGFzVGltZVwiIDogXCJtYXhEYXRlSGFzVGltZVwiXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlT2JqLmdldEhvdXJzKCkgPiAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZU9iai5nZXRNaW51dGVzKCkgPiAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZU9iai5nZXRTZWNvbmRzKCkgPiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5zZWxlY3RlZERhdGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWREYXRlcyA9IHNlbGYuc2VsZWN0ZWREYXRlcy5maWx0ZXIoZnVuY3Rpb24gKGQpIHsgcmV0dXJuIGlzRW5hYmxlZChkKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc2VsZi5zZWxlY3RlZERhdGVzLmxlbmd0aCAmJiB0eXBlID09PSBcIm1pblwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SG91cnNGcm9tRGF0ZShkYXRlT2JqKTtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlVmFsdWUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuZGF5c0NvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICByZWRyYXcoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGVPYmogIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudFllYXJFbGVtZW50W3R5cGVdID0gZGF0ZU9iai5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudFllYXJFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSh0eXBlKTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50WWVhckVsZW1lbnQuZGlzYWJsZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgISFpbnZlcnNlRGF0ZU9iaiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVPYmogIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmVyc2VEYXRlT2JqLmdldEZ1bGxZZWFyKCkgPT09IGRhdGVPYmouZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHBhcnNlQ29uZmlnKCkge1xuICAgICAgICAgICAgdmFyIGJvb2xPcHRzID0gW1xuICAgICAgICAgICAgICAgIFwid3JhcFwiLFxuICAgICAgICAgICAgICAgIFwid2Vla051bWJlcnNcIixcbiAgICAgICAgICAgICAgICBcImFsbG93SW5wdXRcIixcbiAgICAgICAgICAgICAgICBcImNsaWNrT3BlbnNcIixcbiAgICAgICAgICAgICAgICBcInRpbWVfMjRoclwiLFxuICAgICAgICAgICAgICAgIFwiZW5hYmxlVGltZVwiLFxuICAgICAgICAgICAgICAgIFwibm9DYWxlbmRhclwiLFxuICAgICAgICAgICAgICAgIFwiYWx0SW5wdXRcIixcbiAgICAgICAgICAgICAgICBcInNob3J0aGFuZEN1cnJlbnRNb250aFwiLFxuICAgICAgICAgICAgICAgIFwiaW5saW5lXCIsXG4gICAgICAgICAgICAgICAgXCJzdGF0aWNcIixcbiAgICAgICAgICAgICAgICBcImVuYWJsZVNlY29uZHNcIixcbiAgICAgICAgICAgICAgICBcImRpc2FibGVNb2JpbGVcIixcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICB2YXIgdXNlckNvbmZpZyA9IF9fYXNzaWduKHt9LCBpbnN0YW5jZUNvbmZpZywgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlbGVtZW50LmRhdGFzZXQgfHwge30pKSk7XG4gICAgICAgICAgICB2YXIgZm9ybWF0cyA9IHt9O1xuICAgICAgICAgICAgc2VsZi5jb25maWcucGFyc2VEYXRlID0gdXNlckNvbmZpZy5wYXJzZURhdGU7XG4gICAgICAgICAgICBzZWxmLmNvbmZpZy5mb3JtYXREYXRlID0gdXNlckNvbmZpZy5mb3JtYXREYXRlO1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHNlbGYuY29uZmlnLCBcImVuYWJsZVwiLCB7XG4gICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBzZWxmLmNvbmZpZy5fZW5hYmxlOyB9LFxuICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24gKGRhdGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLl9lbmFibGUgPSBwYXJzZURhdGVSdWxlcyhkYXRlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc2VsZi5jb25maWcsIFwiZGlzYWJsZVwiLCB7XG4gICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBzZWxmLmNvbmZpZy5fZGlzYWJsZTsgfSxcbiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uIChkYXRlcykge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZy5fZGlzYWJsZSA9IHBhcnNlRGF0ZVJ1bGVzKGRhdGVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciB0aW1lTW9kZSA9IHVzZXJDb25maWcubW9kZSA9PT0gXCJ0aW1lXCI7XG4gICAgICAgICAgICBpZiAoIXVzZXJDb25maWcuZGF0ZUZvcm1hdCAmJiAodXNlckNvbmZpZy5lbmFibGVUaW1lIHx8IHRpbWVNb2RlKSkge1xuICAgICAgICAgICAgICAgIHZhciBkZWZhdWx0RGF0ZUZvcm1hdCA9IGZsYXRwaWNrci5kZWZhdWx0Q29uZmlnLmRhdGVGb3JtYXQgfHwgZGVmYXVsdHMuZGF0ZUZvcm1hdDtcbiAgICAgICAgICAgICAgICBmb3JtYXRzLmRhdGVGb3JtYXQgPVxuICAgICAgICAgICAgICAgICAgICB1c2VyQ29uZmlnLm5vQ2FsZW5kYXIgfHwgdGltZU1vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJIOmlcIiArICh1c2VyQ29uZmlnLmVuYWJsZVNlY29uZHMgPyBcIjpTXCIgOiBcIlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0RGF0ZUZvcm1hdCArIFwiIEg6aVwiICsgKHVzZXJDb25maWcuZW5hYmxlU2Vjb25kcyA/IFwiOlNcIiA6IFwiXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHVzZXJDb25maWcuYWx0SW5wdXQgJiZcbiAgICAgICAgICAgICAgICAodXNlckNvbmZpZy5lbmFibGVUaW1lIHx8IHRpbWVNb2RlKSAmJlxuICAgICAgICAgICAgICAgICF1c2VyQ29uZmlnLmFsdEZvcm1hdCkge1xuICAgICAgICAgICAgICAgIHZhciBkZWZhdWx0QWx0Rm9ybWF0ID0gZmxhdHBpY2tyLmRlZmF1bHRDb25maWcuYWx0Rm9ybWF0IHx8IGRlZmF1bHRzLmFsdEZvcm1hdDtcbiAgICAgICAgICAgICAgICBmb3JtYXRzLmFsdEZvcm1hdCA9XG4gICAgICAgICAgICAgICAgICAgIHVzZXJDb25maWcubm9DYWxlbmRhciB8fCB0aW1lTW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcImg6aVwiICsgKHVzZXJDb25maWcuZW5hYmxlU2Vjb25kcyA/IFwiOlMgS1wiIDogXCIgS1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0QWx0Rm9ybWF0ICsgKFwiIGg6aVwiICsgKHVzZXJDb25maWcuZW5hYmxlU2Vjb25kcyA/IFwiOlNcIiA6IFwiXCIpICsgXCIgS1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdXNlckNvbmZpZy5hbHRJbnB1dENsYXNzKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5jb25maWcuYWx0SW5wdXRDbGFzcyA9XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuaW5wdXQuY2xhc3NOYW1lICsgXCIgXCIgKyBzZWxmLmNvbmZpZy5hbHRJbnB1dENsYXNzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHNlbGYuY29uZmlnLCBcIm1pbkRhdGVcIiwge1xuICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gc2VsZi5jb25maWcuX21pbkRhdGU7IH0sXG4gICAgICAgICAgICAgICAgc2V0OiBtaW5NYXhEYXRlU2V0dGVyKFwibWluXCIpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzZWxmLmNvbmZpZywgXCJtYXhEYXRlXCIsIHtcbiAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNlbGYuY29uZmlnLl9tYXhEYXRlOyB9LFxuICAgICAgICAgICAgICAgIHNldDogbWluTWF4RGF0ZVNldHRlcihcIm1heFwiKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXIgbWluTWF4VGltZVNldHRlciA9IGZ1bmN0aW9uICh0eXBlKSB7IHJldHVybiBmdW5jdGlvbiAodmFsKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5jb25maWdbdHlwZSA9PT0gXCJtaW5cIiA/IFwiX21pblRpbWVcIiA6IFwiX21heFRpbWVcIl0gPSBzZWxmLnBhcnNlRGF0ZSh2YWwsIFwiSDppOlNcIik7XG4gICAgICAgICAgICB9OyB9O1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHNlbGYuY29uZmlnLCBcIm1pblRpbWVcIiwge1xuICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gc2VsZi5jb25maWcuX21pblRpbWU7IH0sXG4gICAgICAgICAgICAgICAgc2V0OiBtaW5NYXhUaW1lU2V0dGVyKFwibWluXCIpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzZWxmLmNvbmZpZywgXCJtYXhUaW1lXCIsIHtcbiAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNlbGYuY29uZmlnLl9tYXhUaW1lOyB9LFxuICAgICAgICAgICAgICAgIHNldDogbWluTWF4VGltZVNldHRlcihcIm1heFwiKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAodXNlckNvbmZpZy5tb2RlID09PSBcInRpbWVcIikge1xuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLm5vQ2FsZW5kYXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLmVuYWJsZVRpbWUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihzZWxmLmNvbmZpZywgZm9ybWF0cywgdXNlckNvbmZpZyk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJvb2xPcHRzLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnW2Jvb2xPcHRzW2ldXSA9XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnW2Jvb2xPcHRzW2ldXSA9PT0gdHJ1ZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWdbYm9vbE9wdHNbaV1dID09PSBcInRydWVcIjtcbiAgICAgICAgICAgIEhPT0tTLmZpbHRlcihmdW5jdGlvbiAoaG9vaykgeyByZXR1cm4gc2VsZi5jb25maWdbaG9va10gIT09IHVuZGVmaW5lZDsgfSkuZm9yRWFjaChmdW5jdGlvbiAoaG9vaykge1xuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnW2hvb2tdID0gYXJyYXlpZnkoc2VsZi5jb25maWdbaG9va10gfHwgW10pLm1hcChiaW5kVG9JbnN0YW5jZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNlbGYuaXNNb2JpbGUgPVxuICAgICAgICAgICAgICAgICFzZWxmLmNvbmZpZy5kaXNhYmxlTW9iaWxlICYmXG4gICAgICAgICAgICAgICAgICAgICFzZWxmLmNvbmZpZy5pbmxpbmUgJiZcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWcubW9kZSA9PT0gXCJzaW5nbGVcIiAmJlxuICAgICAgICAgICAgICAgICAgICAhc2VsZi5jb25maWcuZGlzYWJsZS5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgIXNlbGYuY29uZmlnLmVuYWJsZS5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgIXNlbGYuY29uZmlnLndlZWtOdW1iZXJzICYmXG4gICAgICAgICAgICAgICAgICAgIC9BbmRyb2lkfHdlYk9TfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxJRU1vYmlsZXxPcGVyYSBNaW5pL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZi5jb25maWcucGx1Z2lucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBwbHVnaW5Db25mID0gc2VsZi5jb25maWcucGx1Z2luc1tpXShzZWxmKSB8fCB7fTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gcGx1Z2luQ29uZikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoSE9PS1MuaW5kZXhPZihrZXkpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnW2tleV0gPSBhcnJheWlmeShwbHVnaW5Db25mW2tleV0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChiaW5kVG9JbnN0YW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY29uY2F0KHNlbGYuY29uZmlnW2tleV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB1c2VyQ29uZmlnW2tleV0gPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZ1trZXldID0gcGx1Z2luQ29uZltrZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyaWdnZXJFdmVudChcIm9uUGFyc2VDb25maWdcIik7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gc2V0dXBMb2NhbGUoKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHNlbGYuY29uZmlnLmxvY2FsZSAhPT0gXCJvYmplY3RcIiAmJlxuICAgICAgICAgICAgICAgIHR5cGVvZiBmbGF0cGlja3IubDEwbnNbc2VsZi5jb25maWcubG9jYWxlXSA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZy5lcnJvckhhbmRsZXIobmV3IEVycm9yKFwiZmxhdHBpY2tyOiBpbnZhbGlkIGxvY2FsZSBcIiArIHNlbGYuY29uZmlnLmxvY2FsZSkpO1xuICAgICAgICAgICAgc2VsZi5sMTBuID0gX19hc3NpZ24oe30sIGZsYXRwaWNrci5sMTBuc1tcImRlZmF1bHRcIl0sICh0eXBlb2Ygc2VsZi5jb25maWcubG9jYWxlID09PSBcIm9iamVjdFwiXG4gICAgICAgICAgICAgICAgPyBzZWxmLmNvbmZpZy5sb2NhbGVcbiAgICAgICAgICAgICAgICA6IHNlbGYuY29uZmlnLmxvY2FsZSAhPT0gXCJkZWZhdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgPyBmbGF0cGlja3IubDEwbnNbc2VsZi5jb25maWcubG9jYWxlXVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCkpO1xuICAgICAgICAgICAgdG9rZW5SZWdleC5LID0gXCIoXCIgKyBzZWxmLmwxMG4uYW1QTVswXSArIFwifFwiICsgc2VsZi5sMTBuLmFtUE1bMV0gKyBcInxcIiArIHNlbGYubDEwbi5hbVBNWzBdLnRvTG93ZXJDYXNlKCkgKyBcInxcIiArIHNlbGYubDEwbi5hbVBNWzFdLnRvTG93ZXJDYXNlKCkgKyBcIilcIjtcbiAgICAgICAgICAgIHZhciB1c2VyQ29uZmlnID0gX19hc3NpZ24oe30sIGluc3RhbmNlQ29uZmlnLCBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGVsZW1lbnQuZGF0YXNldCB8fCB7fSkpKTtcbiAgICAgICAgICAgIGlmICh1c2VyQ29uZmlnLnRpbWVfMjRociA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgZmxhdHBpY2tyLmRlZmF1bHRDb25maWcudGltZV8yNGhyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZy50aW1lXzI0aHIgPSBzZWxmLmwxMG4udGltZV8yNGhyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZi5mb3JtYXREYXRlID0gY3JlYXRlRGF0ZUZvcm1hdHRlcihzZWxmKTtcbiAgICAgICAgICAgIHNlbGYucGFyc2VEYXRlID0gY3JlYXRlRGF0ZVBhcnNlcih7IGNvbmZpZzogc2VsZi5jb25maWcsIGwxMG46IHNlbGYubDEwbiB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBwb3NpdGlvbkNhbGVuZGFyKGN1c3RvbVBvc2l0aW9uRWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKHNlbGYuY2FsZW5kYXJDb250YWluZXIgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB0cmlnZ2VyRXZlbnQoXCJvblByZUNhbGVuZGFyUG9zaXRpb25cIik7XG4gICAgICAgICAgICB2YXIgcG9zaXRpb25FbGVtZW50ID0gY3VzdG9tUG9zaXRpb25FbGVtZW50IHx8IHNlbGYuX3Bvc2l0aW9uRWxlbWVudDtcbiAgICAgICAgICAgIHZhciBjYWxlbmRhckhlaWdodCA9IEFycmF5LnByb3RvdHlwZS5yZWR1Y2UuY2FsbChzZWxmLmNhbGVuZGFyQ29udGFpbmVyLmNoaWxkcmVuLCAoZnVuY3Rpb24gKGFjYywgY2hpbGQpIHsgcmV0dXJuIGFjYyArIGNoaWxkLm9mZnNldEhlaWdodDsgfSksIDApLCBjYWxlbmRhcldpZHRoID0gc2VsZi5jYWxlbmRhckNvbnRhaW5lci5vZmZzZXRXaWR0aCwgY29uZmlnUG9zID0gc2VsZi5jb25maWcucG9zaXRpb24uc3BsaXQoXCIgXCIpLCBjb25maWdQb3NWZXJ0aWNhbCA9IGNvbmZpZ1Bvc1swXSwgY29uZmlnUG9zSG9yaXpvbnRhbCA9IGNvbmZpZ1Bvcy5sZW5ndGggPiAxID8gY29uZmlnUG9zWzFdIDogbnVsbCwgaW5wdXRCb3VuZHMgPSBwb3NpdGlvbkVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIGRpc3RhbmNlRnJvbUJvdHRvbSA9IHdpbmRvdy5pbm5lckhlaWdodCAtIGlucHV0Qm91bmRzLmJvdHRvbSwgc2hvd09uVG9wID0gY29uZmlnUG9zVmVydGljYWwgPT09IFwiYWJvdmVcIiB8fFxuICAgICAgICAgICAgICAgIChjb25maWdQb3NWZXJ0aWNhbCAhPT0gXCJiZWxvd1wiICYmXG4gICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlRnJvbUJvdHRvbSA8IGNhbGVuZGFySGVpZ2h0ICYmXG4gICAgICAgICAgICAgICAgICAgIGlucHV0Qm91bmRzLnRvcCA+IGNhbGVuZGFySGVpZ2h0KTtcbiAgICAgICAgICAgIHZhciB0b3AgPSB3aW5kb3cucGFnZVlPZmZzZXQgK1xuICAgICAgICAgICAgICAgIGlucHV0Qm91bmRzLnRvcCArXG4gICAgICAgICAgICAgICAgKCFzaG93T25Ub3AgPyBwb3NpdGlvbkVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgMiA6IC1jYWxlbmRhckhlaWdodCAtIDIpO1xuICAgICAgICAgICAgdG9nZ2xlQ2xhc3Moc2VsZi5jYWxlbmRhckNvbnRhaW5lciwgXCJhcnJvd1RvcFwiLCAhc2hvd09uVG9wKTtcbiAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHNlbGYuY2FsZW5kYXJDb250YWluZXIsIFwiYXJyb3dCb3R0b21cIiwgc2hvd09uVG9wKTtcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5pbmxpbmUpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgdmFyIGxlZnQgPSB3aW5kb3cucGFnZVhPZmZzZXQgK1xuICAgICAgICAgICAgICAgIGlucHV0Qm91bmRzLmxlZnQgLVxuICAgICAgICAgICAgICAgIChjb25maWdQb3NIb3Jpem9udGFsICE9IG51bGwgJiYgY29uZmlnUG9zSG9yaXpvbnRhbCA9PT0gXCJjZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICA/IChjYWxlbmRhcldpZHRoIC0gaW5wdXRCb3VuZHMud2lkdGgpIC8gMlxuICAgICAgICAgICAgICAgICAgICA6IDApO1xuICAgICAgICAgICAgdmFyIHJpZ2h0ID0gd2luZG93LmRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGggLSAod2luZG93LnBhZ2VYT2Zmc2V0ICsgaW5wdXRCb3VuZHMucmlnaHQpO1xuICAgICAgICAgICAgdmFyIHJpZ2h0TW9zdCA9IGxlZnQgKyBjYWxlbmRhcldpZHRoID4gd2luZG93LmRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgICB2YXIgY2VudGVyTW9zdCA9IHJpZ2h0ICsgY2FsZW5kYXJXaWR0aCA+IHdpbmRvdy5kb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgdG9nZ2xlQ2xhc3Moc2VsZi5jYWxlbmRhckNvbnRhaW5lciwgXCJyaWdodE1vc3RcIiwgcmlnaHRNb3N0KTtcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5zdGF0aWMpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgc2VsZi5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS50b3AgPSB0b3AgKyBcInB4XCI7XG4gICAgICAgICAgICBpZiAoIXJpZ2h0TW9zdCkge1xuICAgICAgICAgICAgICAgIHNlbGYuY2FsZW5kYXJDb250YWluZXIuc3R5bGUubGVmdCA9IGxlZnQgKyBcInB4XCI7XG4gICAgICAgICAgICAgICAgc2VsZi5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5yaWdodCA9IFwiYXV0b1wiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIWNlbnRlck1vc3QpIHtcbiAgICAgICAgICAgICAgICBzZWxmLmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLmxlZnQgPSBcImF1dG9cIjtcbiAgICAgICAgICAgICAgICBzZWxmLmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLnJpZ2h0ID0gcmlnaHQgKyBcInB4XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgZG9jID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMF07XG4gICAgICAgICAgICAgICAgLy8gc29tZSB0ZXN0aW5nIGVudmlyb25tZW50cyBkb24ndCBoYXZlIGNzcyBzdXBwb3J0XG4gICAgICAgICAgICAgICAgaWYgKGRvYyA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgdmFyIGJvZHlXaWR0aCA9IHdpbmRvdy5kb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgICAgIHZhciBjZW50ZXJMZWZ0ID0gTWF0aC5tYXgoMCwgYm9keVdpZHRoIC8gMiAtIGNhbGVuZGFyV2lkdGggLyAyKTtcbiAgICAgICAgICAgICAgICB2YXIgY2VudGVyQmVmb3JlID0gXCIuZmxhdHBpY2tyLWNhbGVuZGFyLmNlbnRlck1vc3Q6YmVmb3JlXCI7XG4gICAgICAgICAgICAgICAgdmFyIGNlbnRlckFmdGVyID0gXCIuZmxhdHBpY2tyLWNhbGVuZGFyLmNlbnRlck1vc3Q6YWZ0ZXJcIjtcbiAgICAgICAgICAgICAgICB2YXIgY2VudGVySW5kZXggPSBkb2MuY3NzUnVsZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHZhciBjZW50ZXJTdHlsZSA9IFwie2xlZnQ6XCIgKyBpbnB1dEJvdW5kcy5sZWZ0ICsgXCJweDtyaWdodDphdXRvO31cIjtcbiAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyhzZWxmLmNhbGVuZGFyQ29udGFpbmVyLCBcInJpZ2h0TW9zdFwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3Moc2VsZi5jYWxlbmRhckNvbnRhaW5lciwgXCJjZW50ZXJNb3N0XCIsIHRydWUpO1xuICAgICAgICAgICAgICAgIGRvYy5pbnNlcnRSdWxlKGNlbnRlckJlZm9yZSArIFwiLFwiICsgY2VudGVyQWZ0ZXIgKyBjZW50ZXJTdHlsZSwgY2VudGVySW5kZXgpO1xuICAgICAgICAgICAgICAgIHNlbGYuY2FsZW5kYXJDb250YWluZXIuc3R5bGUubGVmdCA9IGNlbnRlckxlZnQgKyBcInB4XCI7XG4gICAgICAgICAgICAgICAgc2VsZi5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5yaWdodCA9IFwiYXV0b1wiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHJlZHJhdygpIHtcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5ub0NhbGVuZGFyIHx8IHNlbGYuaXNNb2JpbGUpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgdXBkYXRlTmF2aWdhdGlvbkN1cnJlbnRNb250aCgpO1xuICAgICAgICAgICAgYnVpbGREYXlzKCk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZm9jdXNBbmRDbG9zZSgpIHtcbiAgICAgICAgICAgIHNlbGYuX2lucHV0LmZvY3VzKCk7XG4gICAgICAgICAgICBpZiAod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihcIk1TSUVcIikgIT09IC0xIHx8XG4gICAgICAgICAgICAgICAgbmF2aWdhdG9yLm1zTWF4VG91Y2hQb2ludHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIC8vIGhhY2sgLSBidWdzIGluIHRoZSB3YXkgSUUgaGFuZGxlcyBmb2N1cyBrZWVwcyB0aGUgY2FsZW5kYXIgb3BlblxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoc2VsZi5jbG9zZSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gc2VsZWN0RGF0ZShlKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdmFyIGlzU2VsZWN0YWJsZSA9IGZ1bmN0aW9uIChkYXkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF5LmNsYXNzTGlzdCAmJlxuICAgICAgICAgICAgICAgICAgICBkYXkuY2xhc3NMaXN0LmNvbnRhaW5zKFwiZmxhdHBpY2tyLWRheVwiKSAmJlxuICAgICAgICAgICAgICAgICAgICAhZGF5LmNsYXNzTGlzdC5jb250YWlucyhcImZsYXRwaWNrci1kaXNhYmxlZFwiKSAmJlxuICAgICAgICAgICAgICAgICAgICAhZGF5LmNsYXNzTGlzdC5jb250YWlucyhcIm5vdEFsbG93ZWRcIik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIHQgPSBmaW5kUGFyZW50KGUudGFyZ2V0LCBpc1NlbGVjdGFibGUpO1xuICAgICAgICAgICAgaWYgKHQgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gdDtcbiAgICAgICAgICAgIHZhciBzZWxlY3RlZERhdGUgPSAoc2VsZi5sYXRlc3RTZWxlY3RlZERhdGVPYmogPSBuZXcgRGF0ZSh0YXJnZXQuZGF0ZU9iai5nZXRUaW1lKCkpKTtcbiAgICAgICAgICAgIHZhciBzaG91bGRDaGFuZ2VNb250aCA9IChzZWxlY3RlZERhdGUuZ2V0TW9udGgoKSA8IHNlbGYuY3VycmVudE1vbnRoIHx8XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlLmdldE1vbnRoKCkgPlxuICAgICAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnRNb250aCArIHNlbGYuY29uZmlnLnNob3dNb250aHMgLSAxKSAmJlxuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLm1vZGUgIT09IFwicmFuZ2VcIjtcbiAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWREYXRlRWxlbSA9IHRhcmdldDtcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5tb2RlID09PSBcInNpbmdsZVwiKVxuICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWREYXRlcyA9IFtzZWxlY3RlZERhdGVdO1xuICAgICAgICAgICAgZWxzZSBpZiAoc2VsZi5jb25maWcubW9kZSA9PT0gXCJtdWx0aXBsZVwiKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkSW5kZXggPSBpc0RhdGVTZWxlY3RlZChzZWxlY3RlZERhdGUpO1xuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEluZGV4KVxuICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbGVjdGVkRGF0ZXMuc3BsaWNlKHBhcnNlSW50KHNlbGVjdGVkSW5kZXgpLCAxKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWREYXRlcy5wdXNoKHNlbGVjdGVkRGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzZWxmLmNvbmZpZy5tb2RlID09PSBcInJhbmdlXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5zZWxlY3RlZERhdGVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmNsZWFyKGZhbHNlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNlbGYubGF0ZXN0U2VsZWN0ZWREYXRlT2JqID0gc2VsZWN0ZWREYXRlO1xuICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWREYXRlcy5wdXNoKHNlbGVjdGVkRGF0ZSk7XG4gICAgICAgICAgICAgICAgLy8gdW5sZXNzIHNlbGVjdGluZyBzYW1lIGRhdGUgdHdpY2UsIHNvcnQgYXNjZW5kaW5nbHlcbiAgICAgICAgICAgICAgICBpZiAoY29tcGFyZURhdGVzKHNlbGVjdGVkRGF0ZSwgc2VsZi5zZWxlY3RlZERhdGVzWzBdLCB0cnVlKSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RlZERhdGVzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEuZ2V0VGltZSgpIC0gYi5nZXRUaW1lKCk7IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0SG91cnNGcm9tSW5wdXRzKCk7XG4gICAgICAgICAgICBpZiAoc2hvdWxkQ2hhbmdlTW9udGgpIHtcbiAgICAgICAgICAgICAgICB2YXIgaXNOZXdZZWFyID0gc2VsZi5jdXJyZW50WWVhciAhPT0gc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50WWVhciA9IHNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudE1vbnRoID0gc2VsZWN0ZWREYXRlLmdldE1vbnRoKCk7XG4gICAgICAgICAgICAgICAgaWYgKGlzTmV3WWVhcikge1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoXCJvblllYXJDaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgICAgIGJ1aWxkTW9udGhTd2l0Y2goKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdHJpZ2dlckV2ZW50KFwib25Nb250aENoYW5nZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVwZGF0ZU5hdmlnYXRpb25DdXJyZW50TW9udGgoKTtcbiAgICAgICAgICAgIGJ1aWxkRGF5cygpO1xuICAgICAgICAgICAgdXBkYXRlVmFsdWUoKTtcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5lbmFibGVUaW1lKVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHNlbGYuc2hvd1RpbWVJbnB1dCA9IHRydWUpOyB9LCA1MCk7XG4gICAgICAgICAgICAvLyBtYWludGFpbiBmb2N1c1xuICAgICAgICAgICAgaWYgKCFzaG91bGRDaGFuZ2VNb250aCAmJlxuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLm1vZGUgIT09IFwicmFuZ2VcIiAmJlxuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLnNob3dNb250aHMgPT09IDEpXG4gICAgICAgICAgICAgICAgZm9jdXNPbkRheUVsZW0odGFyZ2V0KTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHNlbGYuc2VsZWN0ZWREYXRlRWxlbSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgc2VsZi5ob3VyRWxlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RlZERhdGVFbGVtICYmIHNlbGYuc2VsZWN0ZWREYXRlRWxlbS5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGYuaG91ckVsZW1lbnQgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBzZWxmLmhvdXJFbGVtZW50ICE9PSB1bmRlZmluZWQgJiYgc2VsZi5ob3VyRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgICAgICAgICAgICB2YXIgc2luZ2xlID0gc2VsZi5jb25maWcubW9kZSA9PT0gXCJzaW5nbGVcIiAmJiAhc2VsZi5jb25maWcuZW5hYmxlVGltZTtcbiAgICAgICAgICAgICAgICB2YXIgcmFuZ2UgPSBzZWxmLmNvbmZpZy5tb2RlID09PSBcInJhbmdlXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RlZERhdGVzLmxlbmd0aCA9PT0gMiAmJlxuICAgICAgICAgICAgICAgICAgICAhc2VsZi5jb25maWcuZW5hYmxlVGltZTtcbiAgICAgICAgICAgICAgICBpZiAoc2luZ2xlIHx8IHJhbmdlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvY3VzQW5kQ2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cmlnZ2VyQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIENBTExCQUNLUyA9IHtcbiAgICAgICAgICAgIGxvY2FsZTogW3NldHVwTG9jYWxlLCB1cGRhdGVXZWVrZGF5c10sXG4gICAgICAgICAgICBzaG93TW9udGhzOiBbYnVpbGRNb250aHMsIHNldENhbGVuZGFyV2lkdGgsIGJ1aWxkV2Vla2RheXNdLFxuICAgICAgICAgICAgbWluRGF0ZTogW2p1bXBUb0RhdGVdLFxuICAgICAgICAgICAgbWF4RGF0ZTogW2p1bXBUb0RhdGVdXG4gICAgICAgIH07XG4gICAgICAgIGZ1bmN0aW9uIHNldChvcHRpb24sIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9uICE9PSBudWxsICYmIHR5cGVvZiBvcHRpb24gPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHNlbGYuY29uZmlnLCBvcHRpb24pO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBvcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKENBTExCQUNLU1trZXldICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICBDQUxMQkFDS1Nba2V5XS5mb3JFYWNoKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4KCk7IH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnW29wdGlvbl0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAoQ0FMTEJBQ0tTW29wdGlvbl0gIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgQ0FMTEJBQ0tTW29wdGlvbl0uZm9yRWFjaChmdW5jdGlvbiAoeCkgeyByZXR1cm4geCgpOyB9KTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChIT09LUy5pbmRleE9mKG9wdGlvbikgPiAtMSlcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWdbb3B0aW9uXSA9IGFycmF5aWZ5KHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGYucmVkcmF3KCk7XG4gICAgICAgICAgICB1cGRhdGVWYWx1ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gc2V0U2VsZWN0ZWREYXRlKGlucHV0RGF0ZSwgZm9ybWF0KSB7XG4gICAgICAgICAgICB2YXIgZGF0ZXMgPSBbXTtcbiAgICAgICAgICAgIGlmIChpbnB1dERhdGUgaW5zdGFuY2VvZiBBcnJheSlcbiAgICAgICAgICAgICAgICBkYXRlcyA9IGlucHV0RGF0ZS5tYXAoZnVuY3Rpb24gKGQpIHsgcmV0dXJuIHNlbGYucGFyc2VEYXRlKGQsIGZvcm1hdCk7IH0pO1xuICAgICAgICAgICAgZWxzZSBpZiAoaW5wdXREYXRlIGluc3RhbmNlb2YgRGF0ZSB8fCB0eXBlb2YgaW5wdXREYXRlID09PSBcIm51bWJlclwiKVxuICAgICAgICAgICAgICAgIGRhdGVzID0gW3NlbGYucGFyc2VEYXRlKGlucHV0RGF0ZSwgZm9ybWF0KV07XG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgaW5wdXREYXRlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChzZWxmLmNvbmZpZy5tb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzaW5nbGVcIjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInRpbWVcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVzID0gW3NlbGYucGFyc2VEYXRlKGlucHV0RGF0ZSwgZm9ybWF0KV07XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIm11bHRpcGxlXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlcyA9IGlucHV0RGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdChzZWxmLmNvbmZpZy5jb25qdW5jdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChkYXRlKSB7IHJldHVybiBzZWxmLnBhcnNlRGF0ZShkYXRlLCBmb3JtYXQpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwicmFuZ2VcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVzID0gaW5wdXREYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KHNlbGYubDEwbi5yYW5nZVNlcGFyYXRvcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChkYXRlKSB7IHJldHVybiBzZWxmLnBhcnNlRGF0ZShkYXRlLCBmb3JtYXQpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLmVycm9ySGFuZGxlcihuZXcgRXJyb3IoXCJJbnZhbGlkIGRhdGUgc3VwcGxpZWQ6IFwiICsgSlNPTi5zdHJpbmdpZnkoaW5wdXREYXRlKSkpO1xuICAgICAgICAgICAgc2VsZi5zZWxlY3RlZERhdGVzID0gZGF0ZXMuZmlsdGVyKGZ1bmN0aW9uIChkKSB7IHJldHVybiBkIGluc3RhbmNlb2YgRGF0ZSAmJiBpc0VuYWJsZWQoZCwgZmFsc2UpOyB9KTtcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5tb2RlID09PSBcInJhbmdlXCIpXG4gICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RlZERhdGVzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEuZ2V0VGltZSgpIC0gYi5nZXRUaW1lKCk7IH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHNldERhdGUoZGF0ZSwgdHJpZ2dlckNoYW5nZSwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAodHJpZ2dlckNoYW5nZSA9PT0gdm9pZCAwKSB7IHRyaWdnZXJDaGFuZ2UgPSBmYWxzZTsgfVxuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IHNlbGYuY29uZmlnLmRhdGVGb3JtYXQ7IH1cbiAgICAgICAgICAgIGlmICgoZGF0ZSAhPT0gMCAmJiAhZGF0ZSkgfHwgKGRhdGUgaW5zdGFuY2VvZiBBcnJheSAmJiBkYXRlLmxlbmd0aCA9PT0gMCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2xlYXIodHJpZ2dlckNoYW5nZSk7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZERhdGUoZGF0ZSwgZm9ybWF0KTtcbiAgICAgICAgICAgIHNlbGYuc2hvd1RpbWVJbnB1dCA9IHNlbGYuc2VsZWN0ZWREYXRlcy5sZW5ndGggPiAwO1xuICAgICAgICAgICAgc2VsZi5sYXRlc3RTZWxlY3RlZERhdGVPYmogPVxuICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWREYXRlc1tzZWxmLnNlbGVjdGVkRGF0ZXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBzZWxmLnJlZHJhdygpO1xuICAgICAgICAgICAganVtcFRvRGF0ZSgpO1xuICAgICAgICAgICAgc2V0SG91cnNGcm9tRGF0ZSgpO1xuICAgICAgICAgICAgaWYgKHNlbGYuc2VsZWN0ZWREYXRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBzZWxmLmNsZWFyKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVwZGF0ZVZhbHVlKHRyaWdnZXJDaGFuZ2UpO1xuICAgICAgICAgICAgaWYgKHRyaWdnZXJDaGFuZ2UpXG4gICAgICAgICAgICAgICAgdHJpZ2dlckV2ZW50KFwib25DaGFuZ2VcIik7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gcGFyc2VEYXRlUnVsZXMoYXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJyXG4gICAgICAgICAgICAgICAgLnNsaWNlKClcbiAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChydWxlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBydWxlID09PSBcInN0cmluZ1wiIHx8XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBydWxlID09PSBcIm51bWJlclwiIHx8XG4gICAgICAgICAgICAgICAgICAgIHJ1bGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnBhcnNlRGF0ZShydWxlLCB1bmRlZmluZWQsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChydWxlICYmXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBydWxlID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICAgICAgICAgIHJ1bGUuZnJvbSAmJlxuICAgICAgICAgICAgICAgICAgICBydWxlLnRvKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZnJvbTogc2VsZi5wYXJzZURhdGUocnVsZS5mcm9tLCB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdG86IHNlbGYucGFyc2VEYXRlKHJ1bGUudG8sIHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcnVsZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoeCkgeyByZXR1cm4geDsgfSk7IC8vIHJlbW92ZSBmYWxzeSB2YWx1ZXNcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzZXR1cERhdGVzKCkge1xuICAgICAgICAgICAgc2VsZi5zZWxlY3RlZERhdGVzID0gW107XG4gICAgICAgICAgICBzZWxmLm5vdyA9IHNlbGYucGFyc2VEYXRlKHNlbGYuY29uZmlnLm5vdykgfHwgbmV3IERhdGUoKTtcbiAgICAgICAgICAgIC8vIFdvcmthcm91bmQgSUUxMSBzZXR0aW5nIHBsYWNlaG9sZGVyIGFzIHRoZSBpbnB1dCdzIHZhbHVlXG4gICAgICAgICAgICB2YXIgcHJlbG9hZGVkRGF0ZSA9IHNlbGYuY29uZmlnLmRlZmF1bHREYXRlIHx8XG4gICAgICAgICAgICAgICAgKChzZWxmLmlucHV0Lm5vZGVOYW1lID09PSBcIklOUFVUXCIgfHxcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5pbnB1dC5ub2RlTmFtZSA9PT0gXCJURVhUQVJFQVwiKSAmJlxuICAgICAgICAgICAgICAgICAgICBzZWxmLmlucHV0LnBsYWNlaG9sZGVyICYmXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuaW5wdXQudmFsdWUgPT09IHNlbGYuaW5wdXQucGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICAgIDogc2VsZi5pbnB1dC52YWx1ZSk7XG4gICAgICAgICAgICBpZiAocHJlbG9hZGVkRGF0ZSlcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZERhdGUocHJlbG9hZGVkRGF0ZSwgc2VsZi5jb25maWcuZGF0ZUZvcm1hdCk7XG4gICAgICAgICAgICBzZWxmLl9pbml0aWFsRGF0ZSA9XG4gICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RlZERhdGVzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgPyBzZWxmLnNlbGVjdGVkRGF0ZXNbMF1cbiAgICAgICAgICAgICAgICAgICAgOiBzZWxmLmNvbmZpZy5taW5EYXRlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZy5taW5EYXRlLmdldFRpbWUoKSA+IHNlbGYubm93LmdldFRpbWUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWxmLmNvbmZpZy5taW5EYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlbGYuY29uZmlnLm1heERhdGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZy5tYXhEYXRlLmdldFRpbWUoKSA8IHNlbGYubm93LmdldFRpbWUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc2VsZi5jb25maWcubWF4RGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc2VsZi5ub3c7XG4gICAgICAgICAgICBzZWxmLmN1cnJlbnRZZWFyID0gc2VsZi5faW5pdGlhbERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICAgIHNlbGYuY3VycmVudE1vbnRoID0gc2VsZi5faW5pdGlhbERhdGUuZ2V0TW9udGgoKTtcbiAgICAgICAgICAgIGlmIChzZWxmLnNlbGVjdGVkRGF0ZXMubGVuZ3RoID4gMClcbiAgICAgICAgICAgICAgICBzZWxmLmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiA9IHNlbGYuc2VsZWN0ZWREYXRlc1swXTtcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5taW5UaW1lICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgc2VsZi5jb25maWcubWluVGltZSA9IHNlbGYucGFyc2VEYXRlKHNlbGYuY29uZmlnLm1pblRpbWUsIFwiSDppXCIpO1xuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLm1heFRpbWUgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZy5tYXhUaW1lID0gc2VsZi5wYXJzZURhdGUoc2VsZi5jb25maWcubWF4VGltZSwgXCJIOmlcIik7XG4gICAgICAgICAgICBzZWxmLm1pbkRhdGVIYXNUaW1lID1cbiAgICAgICAgICAgICAgICAhIXNlbGYuY29uZmlnLm1pbkRhdGUgJiZcbiAgICAgICAgICAgICAgICAgICAgKHNlbGYuY29uZmlnLm1pbkRhdGUuZ2V0SG91cnMoKSA+IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLm1pbkRhdGUuZ2V0TWludXRlcygpID4gMCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWcubWluRGF0ZS5nZXRTZWNvbmRzKCkgPiAwKTtcbiAgICAgICAgICAgIHNlbGYubWF4RGF0ZUhhc1RpbWUgPVxuICAgICAgICAgICAgICAgICEhc2VsZi5jb25maWcubWF4RGF0ZSAmJlxuICAgICAgICAgICAgICAgICAgICAoc2VsZi5jb25maWcubWF4RGF0ZS5nZXRIb3VycygpID4gMCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWcubWF4RGF0ZS5nZXRNaW51dGVzKCkgPiAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZy5tYXhEYXRlLmdldFNlY29uZHMoKSA+IDApO1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHNlbGYsIFwic2hvd1RpbWVJbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBzZWxmLl9zaG93VGltZUlucHV0OyB9LFxuICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24gKGJvb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2hvd1RpbWVJbnB1dCA9IGJvb2w7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLmNhbGVuZGFyQ29udGFpbmVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3Moc2VsZi5jYWxlbmRhckNvbnRhaW5lciwgXCJzaG93VGltZUlucHV0XCIsIGJvb2wpO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmlzT3BlbiAmJiBwb3NpdGlvbkNhbGVuZGFyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gc2V0dXBJbnB1dHMoKSB7XG4gICAgICAgICAgICBzZWxmLmlucHV0ID0gc2VsZi5jb25maWcud3JhcFxuICAgICAgICAgICAgICAgID8gZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiW2RhdGEtaW5wdXRdXCIpXG4gICAgICAgICAgICAgICAgOiBlbGVtZW50O1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgIGlmICghc2VsZi5pbnB1dCkge1xuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLmVycm9ySGFuZGxlcihuZXcgRXJyb3IoXCJJbnZhbGlkIGlucHV0IGVsZW1lbnQgc3BlY2lmaWVkXCIpKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBoYWNrOiBzdG9yZSBwcmV2aW91cyB0eXBlIHRvIHJlc3RvcmUgaXQgYWZ0ZXIgZGVzdHJveSgpXG4gICAgICAgICAgICBzZWxmLmlucHV0Ll90eXBlID0gc2VsZi5pbnB1dC50eXBlO1xuICAgICAgICAgICAgc2VsZi5pbnB1dC50eXBlID0gXCJ0ZXh0XCI7XG4gICAgICAgICAgICBzZWxmLmlucHV0LmNsYXNzTGlzdC5hZGQoXCJmbGF0cGlja3ItaW5wdXRcIik7XG4gICAgICAgICAgICBzZWxmLl9pbnB1dCA9IHNlbGYuaW5wdXQ7XG4gICAgICAgICAgICBpZiAoc2VsZi5jb25maWcuYWx0SW5wdXQpIHtcbiAgICAgICAgICAgICAgICAvLyByZXBsaWNhdGUgc2VsZi5lbGVtZW50XG4gICAgICAgICAgICAgICAgc2VsZi5hbHRJbnB1dCA9IGNyZWF0ZUVsZW1lbnQoc2VsZi5pbnB1dC5ub2RlTmFtZSwgc2VsZi5jb25maWcuYWx0SW5wdXRDbGFzcyk7XG4gICAgICAgICAgICAgICAgc2VsZi5faW5wdXQgPSBzZWxmLmFsdElucHV0O1xuICAgICAgICAgICAgICAgIHNlbGYuYWx0SW5wdXQucGxhY2Vob2xkZXIgPSBzZWxmLmlucHV0LnBsYWNlaG9sZGVyO1xuICAgICAgICAgICAgICAgIHNlbGYuYWx0SW5wdXQuZGlzYWJsZWQgPSBzZWxmLmlucHV0LmRpc2FibGVkO1xuICAgICAgICAgICAgICAgIHNlbGYuYWx0SW5wdXQucmVxdWlyZWQgPSBzZWxmLmlucHV0LnJlcXVpcmVkO1xuICAgICAgICAgICAgICAgIHNlbGYuYWx0SW5wdXQudGFiSW5kZXggPSBzZWxmLmlucHV0LnRhYkluZGV4O1xuICAgICAgICAgICAgICAgIHNlbGYuYWx0SW5wdXQudHlwZSA9IFwidGV4dFwiO1xuICAgICAgICAgICAgICAgIHNlbGYuaW5wdXQuc2V0QXR0cmlidXRlKFwidHlwZVwiLCBcImhpZGRlblwiKTtcbiAgICAgICAgICAgICAgICBpZiAoIXNlbGYuY29uZmlnLnN0YXRpYyAmJiBzZWxmLmlucHV0LnBhcmVudE5vZGUpXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuaW5wdXQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoc2VsZi5hbHRJbnB1dCwgc2VsZi5pbnB1dC5uZXh0U2libGluZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXNlbGYuY29uZmlnLmFsbG93SW5wdXQpXG4gICAgICAgICAgICAgICAgc2VsZi5faW5wdXQuc2V0QXR0cmlidXRlKFwicmVhZG9ubHlcIiwgXCJyZWFkb25seVwiKTtcbiAgICAgICAgICAgIHNlbGYuX3Bvc2l0aW9uRWxlbWVudCA9IHNlbGYuY29uZmlnLnBvc2l0aW9uRWxlbWVudCB8fCBzZWxmLl9pbnB1dDtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzZXR1cE1vYmlsZSgpIHtcbiAgICAgICAgICAgIHZhciBpbnB1dFR5cGUgPSBzZWxmLmNvbmZpZy5lbmFibGVUaW1lXG4gICAgICAgICAgICAgICAgPyBzZWxmLmNvbmZpZy5ub0NhbGVuZGFyXG4gICAgICAgICAgICAgICAgICAgID8gXCJ0aW1lXCJcbiAgICAgICAgICAgICAgICAgICAgOiBcImRhdGV0aW1lLWxvY2FsXCJcbiAgICAgICAgICAgICAgICA6IFwiZGF0ZVwiO1xuICAgICAgICAgICAgc2VsZi5tb2JpbGVJbnB1dCA9IGNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCBzZWxmLmlucHV0LmNsYXNzTmFtZSArIFwiIGZsYXRwaWNrci1tb2JpbGVcIik7XG4gICAgICAgICAgICBzZWxmLm1vYmlsZUlucHV0LnN0ZXAgPSBzZWxmLmlucHV0LmdldEF0dHJpYnV0ZShcInN0ZXBcIikgfHwgXCJhbnlcIjtcbiAgICAgICAgICAgIHNlbGYubW9iaWxlSW5wdXQudGFiSW5kZXggPSAxO1xuICAgICAgICAgICAgc2VsZi5tb2JpbGVJbnB1dC50eXBlID0gaW5wdXRUeXBlO1xuICAgICAgICAgICAgc2VsZi5tb2JpbGVJbnB1dC5kaXNhYmxlZCA9IHNlbGYuaW5wdXQuZGlzYWJsZWQ7XG4gICAgICAgICAgICBzZWxmLm1vYmlsZUlucHV0LnJlcXVpcmVkID0gc2VsZi5pbnB1dC5yZXF1aXJlZDtcbiAgICAgICAgICAgIHNlbGYubW9iaWxlSW5wdXQucGxhY2Vob2xkZXIgPSBzZWxmLmlucHV0LnBsYWNlaG9sZGVyO1xuICAgICAgICAgICAgc2VsZi5tb2JpbGVGb3JtYXRTdHIgPVxuICAgICAgICAgICAgICAgIGlucHV0VHlwZSA9PT0gXCJkYXRldGltZS1sb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgID8gXCJZLW0tZFxcXFxUSDppOlNcIlxuICAgICAgICAgICAgICAgICAgICA6IGlucHV0VHlwZSA9PT0gXCJkYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJZLW0tZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiSDppOlNcIjtcbiAgICAgICAgICAgIGlmIChzZWxmLnNlbGVjdGVkRGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHNlbGYubW9iaWxlSW5wdXQuZGVmYXVsdFZhbHVlID0gc2VsZi5tb2JpbGVJbnB1dC52YWx1ZSA9IHNlbGYuZm9ybWF0RGF0ZShzZWxmLnNlbGVjdGVkRGF0ZXNbMF0sIHNlbGYubW9iaWxlRm9ybWF0U3RyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5taW5EYXRlKVxuICAgICAgICAgICAgICAgIHNlbGYubW9iaWxlSW5wdXQubWluID0gc2VsZi5mb3JtYXREYXRlKHNlbGYuY29uZmlnLm1pbkRhdGUsIFwiWS1tLWRcIik7XG4gICAgICAgICAgICBpZiAoc2VsZi5jb25maWcubWF4RGF0ZSlcbiAgICAgICAgICAgICAgICBzZWxmLm1vYmlsZUlucHV0Lm1heCA9IHNlbGYuZm9ybWF0RGF0ZShzZWxmLmNvbmZpZy5tYXhEYXRlLCBcIlktbS1kXCIpO1xuICAgICAgICAgICAgc2VsZi5pbnB1dC50eXBlID0gXCJoaWRkZW5cIjtcbiAgICAgICAgICAgIGlmIChzZWxmLmFsdElucHV0ICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgc2VsZi5hbHRJbnB1dC50eXBlID0gXCJoaWRkZW5cIjtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuaW5wdXQucGFyZW50Tm9kZSlcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5pbnB1dC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzZWxmLm1vYmlsZUlucHV0LCBzZWxmLmlucHV0Lm5leHRTaWJsaW5nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChfYSkgeyB9XG4gICAgICAgICAgICBiaW5kKHNlbGYubW9iaWxlSW5wdXQsIFwiY2hhbmdlXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5zZXREYXRlKGUudGFyZ2V0LnZhbHVlLCBmYWxzZSwgc2VsZi5tb2JpbGVGb3JtYXRTdHIpO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJFdmVudChcIm9uQ2hhbmdlXCIpO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJFdmVudChcIm9uQ2xvc2VcIik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiB0b2dnbGUoZSkge1xuICAgICAgICAgICAgaWYgKHNlbGYuaXNPcGVuID09PSB0cnVlKVxuICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNsb3NlKCk7XG4gICAgICAgICAgICBzZWxmLm9wZW4oZSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gdHJpZ2dlckV2ZW50KGV2ZW50LCBkYXRhKSB7XG4gICAgICAgICAgICAvLyBJZiB0aGUgaW5zdGFuY2UgaGFzIGJlZW4gZGVzdHJveWVkIGFscmVhZHksIGFsbCBob29rcyBoYXZlIGJlZW4gcmVtb3ZlZFxuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgdmFyIGhvb2tzID0gc2VsZi5jb25maWdbZXZlbnRdO1xuICAgICAgICAgICAgaWYgKGhvb2tzICE9PSB1bmRlZmluZWQgJiYgaG9va3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBob29rc1tpXSAmJiBpIDwgaG9va3MubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICAgICAgICAgIGhvb2tzW2ldKHNlbGYuc2VsZWN0ZWREYXRlcywgc2VsZi5pbnB1dC52YWx1ZSwgc2VsZiwgZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXZlbnQgPT09IFwib25DaGFuZ2VcIikge1xuICAgICAgICAgICAgICAgIHNlbGYuaW5wdXQuZGlzcGF0Y2hFdmVudChjcmVhdGVFdmVudChcImNoYW5nZVwiKSk7XG4gICAgICAgICAgICAgICAgLy8gbWFueSBmcm9udC1lbmQgZnJhbWV3b3JrcyBiaW5kIHRvIHRoZSBpbnB1dCBldmVudFxuICAgICAgICAgICAgICAgIHNlbGYuaW5wdXQuZGlzcGF0Y2hFdmVudChjcmVhdGVFdmVudChcImlucHV0XCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBjcmVhdGVFdmVudChuYW1lKSB7XG4gICAgICAgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KFwiRXZlbnRcIik7XG4gICAgICAgICAgICBlLmluaXRFdmVudChuYW1lLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGlzRGF0ZVNlbGVjdGVkKGRhdGUpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZi5zZWxlY3RlZERhdGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbXBhcmVEYXRlcyhzZWxmLnNlbGVjdGVkRGF0ZXNbaV0sIGRhdGUpID09PSAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJcIiArIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gaXNEYXRlSW5SYW5nZShkYXRlKSB7XG4gICAgICAgICAgICBpZiAoc2VsZi5jb25maWcubW9kZSAhPT0gXCJyYW5nZVwiIHx8IHNlbGYuc2VsZWN0ZWREYXRlcy5sZW5ndGggPCAyKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiAoY29tcGFyZURhdGVzKGRhdGUsIHNlbGYuc2VsZWN0ZWREYXRlc1swXSkgPj0gMCAmJlxuICAgICAgICAgICAgICAgIGNvbXBhcmVEYXRlcyhkYXRlLCBzZWxmLnNlbGVjdGVkRGF0ZXNbMV0pIDw9IDApO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZU5hdmlnYXRpb25DdXJyZW50TW9udGgoKSB7XG4gICAgICAgICAgICBpZiAoc2VsZi5jb25maWcubm9DYWxlbmRhciB8fCBzZWxmLmlzTW9iaWxlIHx8ICFzZWxmLm1vbnRoTmF2KVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIHNlbGYueWVhckVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKHllYXJFbGVtZW50LCBpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGQgPSBuZXcgRGF0ZShzZWxmLmN1cnJlbnRZZWFyLCBzZWxmLmN1cnJlbnRNb250aCwgMSk7XG4gICAgICAgICAgICAgICAgZC5zZXRNb250aChzZWxmLmN1cnJlbnRNb250aCArIGkpO1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5zaG93TW9udGhzID4gMSB8fFxuICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZy5tb250aFNlbGVjdG9yVHlwZSA9PT0gXCJzdGF0aWNcIikge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLm1vbnRoRWxlbWVudHNbaV0udGV4dENvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgbW9udGhUb1N0cihkLmdldE1vbnRoKCksIHNlbGYuY29uZmlnLnNob3J0aGFuZEN1cnJlbnRNb250aCwgc2VsZi5sMTBuKSArIFwiIFwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5tb250aHNEcm9wZG93bkNvbnRhaW5lci52YWx1ZSA9IGQuZ2V0TW9udGgoKS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB5ZWFyRWxlbWVudC52YWx1ZSA9IGQuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzZWxmLl9oaWRlUHJldk1vbnRoQXJyb3cgPVxuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLm1pbkRhdGUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAoc2VsZi5jdXJyZW50WWVhciA9PT0gc2VsZi5jb25maWcubWluRGF0ZS5nZXRGdWxsWWVhcigpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlbGYuY3VycmVudE1vbnRoIDw9IHNlbGYuY29uZmlnLm1pbkRhdGUuZ2V0TW9udGgoKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWxmLmN1cnJlbnRZZWFyIDwgc2VsZi5jb25maWcubWluRGF0ZS5nZXRGdWxsWWVhcigpKTtcbiAgICAgICAgICAgIHNlbGYuX2hpZGVOZXh0TW9udGhBcnJvdyA9XG4gICAgICAgICAgICAgICAgc2VsZi5jb25maWcubWF4RGF0ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgIChzZWxmLmN1cnJlbnRZZWFyID09PSBzZWxmLmNvbmZpZy5tYXhEYXRlLmdldEZ1bGxZZWFyKClcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2VsZi5jdXJyZW50TW9udGggKyAxID4gc2VsZi5jb25maWcubWF4RGF0ZS5nZXRNb250aCgpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlbGYuY3VycmVudFllYXIgPiBzZWxmLmNvbmZpZy5tYXhEYXRlLmdldEZ1bGxZZWFyKCkpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGdldERhdGVTdHIoZm9ybWF0KSB7XG4gICAgICAgICAgICByZXR1cm4gc2VsZi5zZWxlY3RlZERhdGVzXG4gICAgICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAoZE9iaikgeyByZXR1cm4gc2VsZi5mb3JtYXREYXRlKGRPYmosIGZvcm1hdCk7IH0pXG4gICAgICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoZCwgaSwgYXJyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29uZmlnLm1vZGUgIT09IFwicmFuZ2VcIiB8fFxuICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZy5lbmFibGVUaW1lIHx8XG4gICAgICAgICAgICAgICAgICAgIGFyci5pbmRleE9mKGQpID09PSBpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuam9pbihzZWxmLmNvbmZpZy5tb2RlICE9PSBcInJhbmdlXCJcbiAgICAgICAgICAgICAgICA/IHNlbGYuY29uZmlnLmNvbmp1bmN0aW9uXG4gICAgICAgICAgICAgICAgOiBzZWxmLmwxMG4ucmFuZ2VTZXBhcmF0b3IpO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVcGRhdGVzIHRoZSB2YWx1ZXMgb2YgaW5wdXRzIGFzc29jaWF0ZWQgd2l0aCB0aGUgY2FsZW5kYXJcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVZhbHVlKHRyaWdnZXJDaGFuZ2UpIHtcbiAgICAgICAgICAgIGlmICh0cmlnZ2VyQ2hhbmdlID09PSB2b2lkIDApIHsgdHJpZ2dlckNoYW5nZSA9IHRydWU7IH1cbiAgICAgICAgICAgIGlmIChzZWxmLm1vYmlsZUlucHV0ICE9PSB1bmRlZmluZWQgJiYgc2VsZi5tb2JpbGVGb3JtYXRTdHIpIHtcbiAgICAgICAgICAgICAgICBzZWxmLm1vYmlsZUlucHV0LnZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgc2VsZi5sYXRlc3RTZWxlY3RlZERhdGVPYmogIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWxmLmZvcm1hdERhdGUoc2VsZi5sYXRlc3RTZWxlY3RlZERhdGVPYmosIHNlbGYubW9iaWxlRm9ybWF0U3RyKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZi5pbnB1dC52YWx1ZSA9IGdldERhdGVTdHIoc2VsZi5jb25maWcuZGF0ZUZvcm1hdCk7XG4gICAgICAgICAgICBpZiAoc2VsZi5hbHRJbnB1dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5hbHRJbnB1dC52YWx1ZSA9IGdldERhdGVTdHIoc2VsZi5jb25maWcuYWx0Rm9ybWF0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0cmlnZ2VyQ2hhbmdlICE9PSBmYWxzZSlcbiAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoXCJvblZhbHVlVXBkYXRlXCIpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIG9uTW9udGhOYXZDbGljayhlKSB7XG4gICAgICAgICAgICB2YXIgaXNQcmV2TW9udGggPSBzZWxmLnByZXZNb250aE5hdi5jb250YWlucyhlLnRhcmdldCk7XG4gICAgICAgICAgICB2YXIgaXNOZXh0TW9udGggPSBzZWxmLm5leHRNb250aE5hdi5jb250YWlucyhlLnRhcmdldCk7XG4gICAgICAgICAgICBpZiAoaXNQcmV2TW9udGggfHwgaXNOZXh0TW9udGgpIHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VNb250aChpc1ByZXZNb250aCA/IC0xIDogMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzZWxmLnllYXJFbGVtZW50cy5pbmRleE9mKGUudGFyZ2V0KSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgZS50YXJnZXQuc2VsZWN0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcnJvd1VwXCIpKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5jaGFuZ2VZZWFyKHNlbGYuY3VycmVudFllYXIgKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFycm93RG93blwiKSkge1xuICAgICAgICAgICAgICAgIHNlbGYuY2hhbmdlWWVhcihzZWxmLmN1cnJlbnRZZWFyIC0gMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gdGltZVdyYXBwZXIoZSkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdmFyIGlzS2V5RG93biA9IGUudHlwZSA9PT0gXCJrZXlkb3duXCIsIGlucHV0ID0gZS50YXJnZXQ7XG4gICAgICAgICAgICBpZiAoc2VsZi5hbVBNICE9PSB1bmRlZmluZWQgJiYgZS50YXJnZXQgPT09IHNlbGYuYW1QTSkge1xuICAgICAgICAgICAgICAgIHNlbGYuYW1QTS50ZXh0Q29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgIHNlbGYubDEwbi5hbVBNW2ludChzZWxmLmFtUE0udGV4dENvbnRlbnQgPT09IHNlbGYubDEwbi5hbVBNWzBdKV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgbWluID0gcGFyc2VGbG9hdChpbnB1dC5nZXRBdHRyaWJ1dGUoXCJtaW5cIikpLCBtYXggPSBwYXJzZUZsb2F0KGlucHV0LmdldEF0dHJpYnV0ZShcIm1heFwiKSksIHN0ZXAgPSBwYXJzZUZsb2F0KGlucHV0LmdldEF0dHJpYnV0ZShcInN0ZXBcIikpLCBjdXJWYWx1ZSA9IHBhcnNlSW50KGlucHV0LnZhbHVlLCAxMCksIGRlbHRhID0gZS5kZWx0YSB8fFxuICAgICAgICAgICAgICAgIChpc0tleURvd24gPyAoZS53aGljaCA9PT0gMzggPyAxIDogLTEpIDogMCk7XG4gICAgICAgICAgICB2YXIgbmV3VmFsdWUgPSBjdXJWYWx1ZSArIHN0ZXAgKiBkZWx0YTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaW5wdXQudmFsdWUgIT09IFwidW5kZWZpbmVkXCIgJiYgaW5wdXQudmFsdWUubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgdmFyIGlzSG91ckVsZW0gPSBpbnB1dCA9PT0gc2VsZi5ob3VyRWxlbWVudCwgaXNNaW51dGVFbGVtID0gaW5wdXQgPT09IHNlbGYubWludXRlRWxlbWVudDtcbiAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWUgPCBtaW4pIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KCFpc0hvdXJFbGVtKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludChpc0hvdXJFbGVtKSAmJiBpbnQoIXNlbGYuYW1QTSkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNNaW51dGVFbGVtKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50TnVtSW5wdXQodW5kZWZpbmVkLCAtMSwgc2VsZi5ob3VyRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5ld1ZhbHVlID4gbWF4KSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0ID09PSBzZWxmLmhvdXJFbGVtZW50ID8gbmV3VmFsdWUgLSBtYXggLSBpbnQoIXNlbGYuYW1QTSkgOiBtaW47XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc01pbnV0ZUVsZW0pXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnROdW1JbnB1dCh1bmRlZmluZWQsIDEsIHNlbGYuaG91ckVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5hbVBNICYmXG4gICAgICAgICAgICAgICAgICAgIGlzSG91ckVsZW0gJiZcbiAgICAgICAgICAgICAgICAgICAgKHN0ZXAgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbmV3VmFsdWUgKyBjdXJWYWx1ZSA9PT0gMjNcbiAgICAgICAgICAgICAgICAgICAgICAgIDogTWF0aC5hYnMobmV3VmFsdWUgLSBjdXJWYWx1ZSkgPiBzdGVwKSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmFtUE0udGV4dENvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sMTBuLmFtUE1baW50KHNlbGYuYW1QTS50ZXh0Q29udGVudCA9PT0gc2VsZi5sMTBuLmFtUE1bMF0pXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaW5wdXQudmFsdWUgPSBwYWQobmV3VmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGluaXQoKTtcbiAgICAgICAgcmV0dXJuIHNlbGY7XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgZnVuY3Rpb24gX2ZsYXRwaWNrcihub2RlTGlzdCwgY29uZmlnKSB7XG4gICAgICAgIC8vIHN0YXRpYyBsaXN0XG4gICAgICAgIHZhciBub2RlcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZVxuICAgICAgICAgICAgLmNhbGwobm9kZUxpc3QpXG4gICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7IH0pO1xuICAgICAgICB2YXIgaW5zdGFuY2VzID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChub2RlLmdldEF0dHJpYnV0ZShcImRhdGEtZnAtb21pdFwiKSAhPT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUuX2ZsYXRwaWNrciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuX2ZsYXRwaWNrci5kZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuX2ZsYXRwaWNrciA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbm9kZS5fZmxhdHBpY2tyID0gRmxhdHBpY2tySW5zdGFuY2Uobm9kZSwgY29uZmlnIHx8IHt9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZXMucHVzaChub2RlLl9mbGF0cGlja3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbnN0YW5jZXMubGVuZ3RoID09PSAxID8gaW5zdGFuY2VzWzBdIDogaW5zdGFuY2VzO1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0eXBlb2YgSFRNTEVsZW1lbnQgIT09IFwidW5kZWZpbmVkXCIgJiZcbiAgICAgICAgdHlwZW9mIEhUTUxDb2xsZWN0aW9uICE9PSBcInVuZGVmaW5lZFwiICYmXG4gICAgICAgIHR5cGVvZiBOb2RlTGlzdCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAvLyBicm93c2VyIGVudlxuICAgICAgICBIVE1MQ29sbGVjdGlvbi5wcm90b3R5cGUuZmxhdHBpY2tyID0gTm9kZUxpc3QucHJvdG90eXBlLmZsYXRwaWNrciA9IGZ1bmN0aW9uIChjb25maWcpIHtcbiAgICAgICAgICAgIHJldHVybiBfZmxhdHBpY2tyKHRoaXMsIGNvbmZpZyk7XG4gICAgICAgIH07XG4gICAgICAgIEhUTUxFbGVtZW50LnByb3RvdHlwZS5mbGF0cGlja3IgPSBmdW5jdGlvbiAoY29uZmlnKSB7XG4gICAgICAgICAgICByZXR1cm4gX2ZsYXRwaWNrcihbdGhpc10sIGNvbmZpZyk7XG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgdmFyIGZsYXRwaWNrciA9IGZ1bmN0aW9uIChzZWxlY3RvciwgY29uZmlnKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBfZmxhdHBpY2tyKHdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSwgY29uZmlnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzZWxlY3RvciBpbnN0YW5jZW9mIE5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBfZmxhdHBpY2tyKFtzZWxlY3Rvcl0sIGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gX2ZsYXRwaWNrcihzZWxlY3RvciwgY29uZmlnKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBmbGF0cGlja3IuZGVmYXVsdENvbmZpZyA9IHt9O1xuICAgIGZsYXRwaWNrci5sMTBucyA9IHtcbiAgICAgICAgZW46IF9fYXNzaWduKHt9LCBlbmdsaXNoKSxcbiAgICAgICAgXCJkZWZhdWx0XCI6IF9fYXNzaWduKHt9LCBlbmdsaXNoKVxuICAgIH07XG4gICAgZmxhdHBpY2tyLmxvY2FsaXplID0gZnVuY3Rpb24gKGwxMG4pIHtcbiAgICAgICAgZmxhdHBpY2tyLmwxMG5zW1wiZGVmYXVsdFwiXSA9IF9fYXNzaWduKHt9LCBmbGF0cGlja3IubDEwbnNbXCJkZWZhdWx0XCJdLCBsMTBuKTtcbiAgICB9O1xuICAgIGZsYXRwaWNrci5zZXREZWZhdWx0cyA9IGZ1bmN0aW9uIChjb25maWcpIHtcbiAgICAgICAgZmxhdHBpY2tyLmRlZmF1bHRDb25maWcgPSBfX2Fzc2lnbih7fSwgZmxhdHBpY2tyLmRlZmF1bHRDb25maWcsIGNvbmZpZyk7XG4gICAgfTtcbiAgICBmbGF0cGlja3IucGFyc2VEYXRlID0gY3JlYXRlRGF0ZVBhcnNlcih7fSk7XG4gICAgZmxhdHBpY2tyLmZvcm1hdERhdGUgPSBjcmVhdGVEYXRlRm9ybWF0dGVyKHt9KTtcbiAgICBmbGF0cGlja3IuY29tcGFyZURhdGVzID0gY29tcGFyZURhdGVzO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKHR5cGVvZiBqUXVlcnkgIT09IFwidW5kZWZpbmVkXCIgJiYgdHlwZW9mIGpRdWVyeS5mbiAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBqUXVlcnkuZm4uZmxhdHBpY2tyID0gZnVuY3Rpb24gKGNvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuIF9mbGF0cGlja3IodGhpcywgY29uZmlnKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9jYW1lbGNhc2VcbiAgICBEYXRlLnByb3RvdHlwZS5mcF9pbmNyID0gZnVuY3Rpb24gKGRheXMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuZ2V0RnVsbFllYXIoKSwgdGhpcy5nZXRNb250aCgpLCB0aGlzLmdldERhdGUoKSArICh0eXBlb2YgZGF5cyA9PT0gXCJzdHJpbmdcIiA/IHBhcnNlSW50KGRheXMsIDEwKSA6IGRheXMpKTtcbiAgICB9O1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIHdpbmRvdy5mbGF0cGlja3IgPSBmbGF0cGlja3I7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZsYXRwaWNrcjtcblxufSkpO1xuIiwiLypcbiAqIEpTUyB2MC42IC0gSmF2YVNjcmlwdCBTdHlsZXNoZWV0c1xuICogaHR0cHM6Ly9naXRodWIuY29tL0JveDkvanNzXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDExLCBEYXZpZCBUYW5nXG4gKiBNSVQgTGljZW5zZWQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKVxuICovXG52YXIganNzID0gKGZ1bmN0aW9uKCkge1xuICAgIHZhciBhZGpTZWxBdHRyUmVnZXggPSAvKCg/OlxcLnwjKVteXFwuXFxzI10rKSgoPzpcXC58IylbXlxcLlxccyNdKykvZztcbiAgICB2YXIgZG91YmxlQ29sb25Qc2V1ZG9FbFJlZ2V4ID0gLyg6OikoYmVmb3JlfGFmdGVyfGZpcnN0LWxpbmV8Zmlyc3QtbGV0dGVyfHNlbGVjdGlvbikvO1xuICAgIHZhciBzaW5nbGVDb2xvblBzZXVkb0VsUmVnZXggPSAvKFteOl0pKDopKGJlZm9yZXxhZnRlcnxmaXJzdC1saW5lfGZpcnN0LWxldHRlcnxzZWxlY3Rpb24pLztcbiAgICB2YXIgc2luZ2xlQ29sb25Gb3JQc2V1ZG9FbGVtZW50czsgLy8gZmxhZyBmb3Igb2xkZXIgYnJvd3NlcnNcblxuICAgIGZ1bmN0aW9uIGdldFNlbGVjdG9yc0FuZFJ1bGVzKHNoZWV0KSB7XG4gICAgICAgIHZhciBydWxlcyA9IHNoZWV0LmNzc1J1bGVzIHx8IHNoZWV0LnJ1bGVzIHx8IFtdO1xuICAgICAgICB2YXIgcmVzdWx0cyA9IHt9O1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAvLyBPbGRlciBicm93c2VycyBhbmQgRkYgcmVwb3J0IHBzZXVkbyBlbGVtZW50IHNlbGVjdG9ycyBpbiBhbiBvdXRkYXRlZCBmb3JtYXRcbiAgICAgICAgICAgIHZhciBzZWxlY3RvclRleHQgPSB0b0RvdWJsZUNvbG9uUHNldWRvRWxlbWVudHMocnVsZXNbaV0uc2VsZWN0b3JUZXh0KTtcbiAgICAgICAgICAgIGlmICghcmVzdWx0c1tzZWxlY3RvclRleHRdKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0c1tzZWxlY3RvclRleHRdID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHRzW3NlbGVjdG9yVGV4dF0ucHVzaCh7XG4gICAgICAgICAgICAgICAgc2hlZXQ6IHNoZWV0LFxuICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgIHN0eWxlOiBydWxlc1tpXS5zdHlsZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UnVsZXMoc2hlZXQsIHNlbGVjdG9yKSB7XG4gICAgICAgIHZhciBydWxlcyA9IHNoZWV0LmNzc1J1bGVzIHx8IHNoZWV0LnJ1bGVzIHx8IFtdO1xuICAgICAgICB2YXIgcmVzdWx0cyA9IFtdO1xuICAgICAgICAvLyBCcm93c2VycyByZXBvcnQgc2VsZWN0b3JzIGluIGxvd2VyY2FzZVxuICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBzZWxlY3RvclRleHQgPSBydWxlc1tpXS5zZWxlY3RvclRleHQ7XG4gICAgICAgICAgICAvLyBOb3RlIC0gY2VydGFpbiBydWxlcyAoZS5nLiBAcnVsZXMpIGRvbid0IGhhdmUgc2VsZWN0b3JUZXh0XG4gICAgICAgICAgICBpZiAoc2VsZWN0b3JUZXh0ICYmIChzZWxlY3RvclRleHQgPT0gc2VsZWN0b3IgfHwgc2VsZWN0b3JUZXh0ID09IHN3YXBBZGpTZWxBdHRyKHNlbGVjdG9yKSB8fCBzZWxlY3RvclRleHQgPT0gc3dhcFBzZXVkb0VsU3ludGF4KHNlbGVjdG9yKSkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBzaGVldDogc2hlZXQsXG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICBzdHlsZTogcnVsZXNbaV0uc3R5bGVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRSdWxlKHNoZWV0LCBzZWxlY3Rvcikge1xuICAgICAgICB2YXIgcnVsZXMgPSBzaGVldC5jc3NSdWxlcyB8fCBzaGVldC5ydWxlcyB8fCBbXTtcbiAgICAgICAgdmFyIGluZGV4ID0gcnVsZXMubGVuZ3RoO1xuICAgICAgICB2YXIgcHNldWRvRWxlbWVudFJ1bGUgPSBhZGRQc2V1ZG9FbGVtZW50UnVsZShzaGVldCwgc2VsZWN0b3IsIHJ1bGVzLCBpbmRleCk7XG5cbiAgICAgICAgaWYgKCFwc2V1ZG9FbGVtZW50UnVsZSkge1xuICAgICAgICAgICAgYWRkUnVsZVRvU2hlZXQoc2hlZXQsIHNlbGVjdG9yLCBpbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaGVldDogc2hlZXQsXG4gICAgICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgICAgICBzdHlsZTogcnVsZXNbaW5kZXhdLnN0eWxlXG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGFkZFJ1bGVUb1NoZWV0KHNoZWV0LCBzZWxlY3RvciwgaW5kZXgpIHtcbiAgICAgICAgaWYgKHNoZWV0Lmluc2VydFJ1bGUpIHtcbiAgICAgICAgICAgIHNoZWV0Lmluc2VydFJ1bGUoc2VsZWN0b3IgKyAnIHsgfScsIGluZGV4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNoZWV0LmFkZFJ1bGUoc2VsZWN0b3IsIG51bGwsIGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhhbmRsZXMgc2luZ2xlIGNvbG9uIHN5bnRheCBmb3Igb2xkZXIgYnJvd3NlcnMgYW5kIGJ1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD05NDk2NTFcbiAgICBmdW5jdGlvbiBhZGRQc2V1ZG9FbGVtZW50UnVsZShzaGVldCwgc2VsZWN0b3IsIHJ1bGVzLCBpbmRleCkge1xuICAgICAgICB2YXIgZG91YmxlQ29sb25TZWxlY3RvcjtcbiAgICAgICAgdmFyIHNpbmdsZUNvbG9uU2VsZWN0b3I7XG5cbiAgICAgICAgaWYgKGRvdWJsZUNvbG9uUHNldWRvRWxSZWdleC5leGVjKHNlbGVjdG9yKSkge1xuICAgICAgICAgICAgZG91YmxlQ29sb25TZWxlY3RvciA9IHNlbGVjdG9yO1xuICAgICAgICAgICAgc2luZ2xlQ29sb25TZWxlY3RvciA9IHRvU2luZ2xlQ29sb25Qc2V1ZG9FbGVtZW50cyhzZWxlY3Rvcik7XG4gICAgICAgIH0gZWxzZSBpZiAoc2luZ2xlQ29sb25Qc2V1ZG9FbFJlZ2V4LmV4ZWMoc2VsZWN0b3IpKSB7XG4gICAgICAgICAgICBkb3VibGVDb2xvblNlbGVjdG9yID0gdG9Eb3VibGVDb2xvblBzZXVkb0VsZW1lbnRzKHNlbGVjdG9yKTtcbiAgICAgICAgICAgIHNpbmdsZUNvbG9uU2VsZWN0b3IgPSBzZWxlY3RvcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gTm90IGRlYWxpbmcgd2l0aCBhIHBzZXVkbyBlbGVtZW50XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXNpbmdsZUNvbG9uRm9yUHNldWRvRWxlbWVudHMpIHtcbiAgICAgICAgICAgIC8vIEFzc3VtZSBtb2Rlcm4gYnJvd3NlciBhbmQgdGhlbiBjaGVjayBpZiBzdWNjZXNzZnVsXG4gICAgICAgICAgICBhZGRSdWxlVG9TaGVldChzaGVldCwgZG91YmxlQ29sb25TZWxlY3RvciwgaW5kZXgpO1xuICAgICAgICAgICAgaWYgKHJ1bGVzLmxlbmd0aCA8PSBpbmRleCkge1xuICAgICAgICAgICAgICAgIHNpbmdsZUNvbG9uRm9yUHNldWRvRWxlbWVudHMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzaW5nbGVDb2xvbkZvclBzZXVkb0VsZW1lbnRzKSB7XG4gICAgICAgICAgICBhZGRSdWxlVG9TaGVldChzaGVldCwgc2luZ2xlQ29sb25TZWxlY3RvciwgaW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9Eb3VibGVDb2xvblBzZXVkb0VsZW1lbnRzKHNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3Rvci5yZXBsYWNlKHNpbmdsZUNvbG9uUHNldWRvRWxSZWdleCwgZnVuY3Rpb24gKG1hdGNoLCBzdWJtYXRjaDEsIHN1Ym1hdGNoMiwgc3VibWF0Y2gzKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VibWF0Y2gxICsgJzo6JyArIHN1Ym1hdGNoMztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9TaW5nbGVDb2xvblBzZXVkb0VsZW1lbnRzKHNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3Rvci5yZXBsYWNlKGRvdWJsZUNvbG9uUHNldWRvRWxSZWdleCwgZnVuY3Rpb24obWF0Y2gsIHN1Ym1hdGNoMSwgc3VibWF0Y2gyKSB7XG4gICAgICAgICAgICByZXR1cm4gJzonICsgc3VibWF0Y2gyO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZVJ1bGUocnVsZSkge1xuICAgICAgICB2YXIgc2hlZXQgPSBydWxlLnNoZWV0O1xuICAgICAgICBpZiAoc2hlZXQuZGVsZXRlUnVsZSkge1xuICAgICAgICAgICAgc2hlZXQuZGVsZXRlUnVsZShydWxlLmluZGV4KTtcbiAgICAgICAgfSBlbHNlIGlmIChzaGVldC5yZW1vdmVSdWxlKSB7XG4gICAgICAgICAgICBzaGVldC5yZW1vdmVSdWxlKHJ1bGUuaW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0ZW5kKGRlc3QsIHNyYykge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gc3JjKSB7XG4gICAgICAgICAgICBpZiAoIXNyYy5oYXNPd25Qcm9wZXJ0eShrZXkpKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgZGVzdFtrZXldID0gc3JjW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlc3Q7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWdncmVnYXRlU3R5bGVzKHJ1bGVzKSB7XG4gICAgICAgIHZhciBhZ2dyZWdhdGUgPSB7fTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZXh0ZW5kKGFnZ3JlZ2F0ZSwgZGVjbGFyZWRQcm9wZXJ0aWVzKHJ1bGVzW2ldLnN0eWxlKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFnZ3JlZ2F0ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWNsYXJlZFByb3BlcnRpZXMoc3R5bGUpIHtcbiAgICAgICAgdmFyIGRlY2xhcmVkID0ge307XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGRlY2xhcmVkW3N0eWxlW2ldXSA9IHN0eWxlW3RvQ2FtZWxDYXNlKHN0eWxlW2ldKV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlY2xhcmVkO1xuICAgIH1cblxuICAgIC8vIElFOSBzdG9yZXMgcnVsZXMgd2l0aCBhdHRyaWJ1dGVzIChjbGFzc2VzIG9yIElEJ3MpIGFkamFjZW50IGluIHRoZSBvcHBvc2l0ZSBvcmRlciBhcyBkZWZpbmVkXG4gICAgLy8gY2F1c2luZyB0aGVtIHRvIG5vdCBiZSBmb3VuZCwgc28gdGhpcyBtZXRob2Qgc3dhcHMgWyN8Ll1zZWwxWyN8Ll1zZWwyIHRvIGJlY29tZSBbI3wuXXNlbDJbI3wuXXNlbDFcbiAgICBmdW5jdGlvbiBzd2FwQWRqU2VsQXR0cihzZWxlY3Rvcikge1xuICAgICAgICB2YXIgc3dhcCA9ICcnO1xuICAgICAgICB2YXIgbGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgIFxuICAgICAgICB3aGlsZSAoKG1hdGNoID0gYWRqU2VsQXR0clJlZ2V4LmV4ZWMoc2VsZWN0b3IpKSAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZiAobWF0Y2hbMF0gPT09ICcnKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgc3dhcCArPSBzZWxlY3Rvci5zdWJzdHJpbmcobGFzdEluZGV4LCBtYXRjaC5pbmRleCk7XG4gICAgICAgICAgICBzd2FwICs9IHNlbGVjdG9yLnN1YnN0cihtYXRjaC5pbmRleCArIG1hdGNoWzFdLmxlbmd0aCwgbWF0Y2hbMl0ubGVuZ3RoKTtcbiAgICAgICAgICAgIHN3YXAgKz0gc2VsZWN0b3Iuc3Vic3RyKG1hdGNoLmluZGV4LCBtYXRjaFsxXS5sZW5ndGgpO1xuICAgICAgICAgICAgbGFzdEluZGV4ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgc3dhcCArPSBzZWxlY3Rvci5zdWJzdHIobGFzdEluZGV4KTtcbiAgICAgICAgXG4gICAgICAgIHJldHVybiBzd2FwO1xuICAgIH07XG5cbiAgICAvLyBGRiBhbmQgb2xkZXIgYnJvd3NlcnMgc3RvcmUgcnVsZXMgd2l0aCBwc2V1ZG8gZWxlbWVudHMgdXNpbmcgc2luZ2xlLWNvbG9uIHN5bnRheFxuICAgIGZ1bmN0aW9uIHN3YXBQc2V1ZG9FbFN5bnRheChzZWxlY3Rvcikge1xuICAgICAgICBpZiAoZG91YmxlQ29sb25Qc2V1ZG9FbFJlZ2V4LmV4ZWMoc2VsZWN0b3IpKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9TaW5nbGVDb2xvblBzZXVkb0VsZW1lbnRzKHNlbGVjdG9yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VsZWN0b3I7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0U3R5bGVQcm9wZXJ0aWVzKHJ1bGUsIHByb3BlcnRpZXMpIHtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIHByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHByb3BlcnRpZXNba2V5XTtcbiAgICAgICAgICAgIHZhciBpbXBvcnRhbnRJbmRleCA9IHZhbHVlLmluZGV4T2YoJyAhaW1wb3J0YW50Jyk7XG5cbiAgICAgICAgICAgIC8vIE1vZGVybiBicm93c2VycyBzZWVtIHRvIGhhbmRsZSBvdmVycmlkZXMgZmluZSwgYnV0IElFOSBkb2Vzbid0XG4gICAgICAgICAgICBydWxlLnN0eWxlLnJlbW92ZVByb3BlcnR5KGtleSk7IFxuICAgICAgICAgICAgaWYgKGltcG9ydGFudEluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgIHJ1bGUuc3R5bGUuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZS5zdWJzdHIoMCwgaW1wb3J0YW50SW5kZXgpLCAnaW1wb3J0YW50Jyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJ1bGUuc3R5bGUuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0NhbWVsQ2FzZShzdHIpIHtcbiAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8tKFthLXpdKS9nLCBmdW5jdGlvbiAobWF0Y2gsIHN1Ym1hdGNoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VibWF0Y2gudG9VcHBlckNhc2UoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhbnNmb3JtQ2FtZWxDYXNlZFByb3BlcnR5TmFtZXMob2xkUHJvcHMpIHtcbiAgICAgICAgdmFyIG5ld1Byb3BzID0ge307XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBvbGRQcm9wcykge1xuICAgICAgICAgICAgbmV3UHJvcHNbdW5DYW1lbENhc2Uoa2V5KV0gPSBvbGRQcm9wc1trZXldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdQcm9wcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1bkNhbWVsQ2FzZShzdHIpIHtcbiAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oW0EtWl0pL2csIGZ1bmN0aW9uKG1hdGNoLCBzdWJtYXRjaCkge1xuICAgICAgICAgICAgcmV0dXJuICctJyArIHN1Ym1hdGNoLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBKc3MgPSBmdW5jdGlvbihkb2MpIHtcbiAgICAgICAgdGhpcy5kb2MgPSBkb2M7XG4gICAgICAgIHRoaXMuaGVhZCA9IHRoaXMuZG9jLmhlYWQgfHwgdGhpcy5kb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiAgICAgICAgdGhpcy5zaGVldHMgPSB0aGlzLmRvYy5zdHlsZVNoZWV0cyB8fCBbXTtcbiAgICB9O1xuXG4gICAgSnNzLnByb3RvdHlwZSA9IHtcbiAgICAgICAgLy8gUmV0dXJucyBKU1MgcnVsZXMgKHNlbGVjdG9yIGlzIG9wdGlvbmFsKVxuICAgICAgICBnZXQ6IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZGVmYXVsdFNoZWV0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGVjdG9yKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFnZ3JlZ2F0ZVN0eWxlcyhnZXRSdWxlcyh0aGlzLmRlZmF1bHRTaGVldCwgc2VsZWN0b3IpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBydWxlcyA9IGdldFNlbGVjdG9yc0FuZFJ1bGVzKHRoaXMuZGVmYXVsdFNoZWV0KTtcbiAgICAgICAgICAgIGZvciAoc2VsZWN0b3IgaW4gcnVsZXMpIHtcbiAgICAgICAgICAgICAgICBydWxlc1tzZWxlY3Rvcl0gPSBhZ2dyZWdhdGVTdHlsZXMocnVsZXNbc2VsZWN0b3JdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBydWxlcztcbiAgICAgICAgfSxcbiAgICAgICAgLy8gUmV0dXJucyBhbGwgcnVsZXMgKHNlbGVjdG9yIGlzIHJlcXVpcmVkKVxuICAgICAgICBnZXRBbGw6IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gICAgICAgICAgICB2YXIgcHJvcGVydGllcyA9IHt9O1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNoZWV0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGV4dGVuZChwcm9wZXJ0aWVzLCBhZ2dyZWdhdGVTdHlsZXMoZ2V0UnVsZXModGhpcy5zaGVldHNbaV0sIHNlbGVjdG9yKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHByb3BlcnRpZXM7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIEFkZHMgSlNTIHJ1bGVzIGZvciB0aGUgc2VsZWN0b3IgYmFzZWQgb24gdGhlIGdpdmVuIHByb3BlcnRpZXNcbiAgICAgICAgc2V0OiBmdW5jdGlvbihzZWxlY3RvciwgcHJvcGVydGllcykge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRlZmF1bHRTaGVldCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdFNoZWV0ID0gdGhpcy5fY3JlYXRlU2hlZXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByb3BlcnRpZXMgPSB0cmFuc2Zvcm1DYW1lbENhc2VkUHJvcGVydHlOYW1lcyhwcm9wZXJ0aWVzKTtcbiAgICAgICAgICAgIHZhciBydWxlcyA9IGdldFJ1bGVzKHRoaXMuZGVmYXVsdFNoZWV0LCBzZWxlY3Rvcik7XG4gICAgICAgICAgICBpZiAoIXJ1bGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJ1bGVzID0gW2FkZFJ1bGUodGhpcy5kZWZhdWx0U2hlZXQsIHNlbGVjdG9yKV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgc2V0U3R5bGVQcm9wZXJ0aWVzKHJ1bGVzW2ldLCBwcm9wZXJ0aWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgLy8gUmVtb3ZlcyBKU1MgcnVsZXMgKHNlbGVjdG9yIGlzIG9wdGlvbmFsKVxuICAgICAgICByZW1vdmU6IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZGVmYXVsdFNoZWV0KVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGlmICghc2VsZWN0b3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVTaGVldCh0aGlzLmRlZmF1bHRTaGVldCk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuZGVmYXVsdFNoZWV0O1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBydWxlcyA9IGdldFJ1bGVzKHRoaXMuZGVmYXVsdFNoZWV0LCBzZWxlY3Rvcik7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlUnVsZShydWxlc1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcnVsZXMubGVuZ3RoO1xuICAgICAgICB9LFxuICAgICAgICBfY3JlYXRlU2hlZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHN0eWxlTm9kZSA9IHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICAgICAgICBzdHlsZU5vZGUudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgICAgICAgICBzdHlsZU5vZGUucmVsID0gJ3N0eWxlc2hlZXQnO1xuICAgICAgICAgICAgdGhpcy5oZWFkLmFwcGVuZENoaWxkKHN0eWxlTm9kZSk7XG4gICAgICAgICAgICByZXR1cm4gc3R5bGVOb2RlLnNoZWV0O1xuICAgICAgICB9LFxuICAgICAgICBfcmVtb3ZlU2hlZXQ6IGZ1bmN0aW9uKHNoZWV0KSB7XG4gICAgICAgICAgICB2YXIgbm9kZSA9IHNoZWV0Lm93bmVyTm9kZTtcbiAgICAgICAgICAgIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgZXhwb3J0cyA9IG5ldyBKc3MoZG9jdW1lbnQpO1xuICAgIGV4cG9ydHMuZm9yRG9jdW1lbnQgPSBmdW5jdGlvbihkb2MpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBKc3MoZG9jKTtcbiAgICB9O1xuICAgIHJldHVybiBleHBvcnRzO1xufSkoKTtcblxudHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMgJiYgKG1vZHVsZS5leHBvcnRzID0ganNzKTsgLy8gQ29tbW9uSlMgc3VwcG9ydCIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LmFycmF5LmZvci1lYWNoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5BcnJheS5mb3JFYWNoO1xuIiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcuYXJyYXkuaW5jbHVkZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLkFycmF5LmluY2x1ZGVzO1xuIiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYubnVtYmVyLmlzLWludGVnZXInKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk51bWJlci5pc0ludGVnZXI7XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5zdHJpbmcuc3RhcnRzLXdpdGgnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLlN0cmluZy5zdGFydHNXaXRoO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uIScpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwiLy8gMjIuMS4zLjMxIEFycmF5LnByb3RvdHlwZVtAQHVuc2NvcGFibGVzXVxudmFyIFVOU0NPUEFCTEVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3Vuc2NvcGFibGVzJyk7XG52YXIgQXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcbmlmIChBcnJheVByb3RvW1VOU0NPUEFCTEVTXSA9PSB1bmRlZmluZWQpIHJlcXVpcmUoJy4vX2hpZGUnKShBcnJheVByb3RvLCBVTlNDT1BBQkxFUywge30pO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIEFycmF5UHJvdG9bVU5TQ09QQUJMRVNdW2tleV0gPSB0cnVlO1xufTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGFuIG9iamVjdCEnKTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsIi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuIiwiLy8gMCAtPiBBcnJheSNmb3JFYWNoXG4vLyAxIC0+IEFycmF5I21hcFxuLy8gMiAtPiBBcnJheSNmaWx0ZXJcbi8vIDMgLT4gQXJyYXkjc29tZVxuLy8gNCAtPiBBcnJheSNldmVyeVxuLy8gNSAtPiBBcnJheSNmaW5kXG4vLyA2IC0+IEFycmF5I2ZpbmRJbmRleFxudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGFzYyA9IHJlcXVpcmUoJy4vX2FycmF5LXNwZWNpZXMtY3JlYXRlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUWVBFLCAkY3JlYXRlKSB7XG4gIHZhciBJU19NQVAgPSBUWVBFID09IDE7XG4gIHZhciBJU19GSUxURVIgPSBUWVBFID09IDI7XG4gIHZhciBJU19TT01FID0gVFlQRSA9PSAzO1xuICB2YXIgSVNfRVZFUlkgPSBUWVBFID09IDQ7XG4gIHZhciBJU19GSU5EX0lOREVYID0gVFlQRSA9PSA2O1xuICB2YXIgTk9fSE9MRVMgPSBUWVBFID09IDUgfHwgSVNfRklORF9JTkRFWDtcbiAgdmFyIGNyZWF0ZSA9ICRjcmVhdGUgfHwgYXNjO1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBjYWxsYmFja2ZuLCB0aGF0KSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCgkdGhpcyk7XG4gICAgdmFyIHNlbGYgPSBJT2JqZWN0KE8pO1xuICAgIHZhciBmID0gY3R4KGNhbGxiYWNrZm4sIHRoYXQsIDMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChzZWxmLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgcmVzdWx0ID0gSVNfTUFQID8gY3JlYXRlKCR0aGlzLCBsZW5ndGgpIDogSVNfRklMVEVSID8gY3JlYXRlKCR0aGlzLCAwKSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgdmFsLCByZXM7XG4gICAgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChOT19IT0xFUyB8fCBpbmRleCBpbiBzZWxmKSB7XG4gICAgICB2YWwgPSBzZWxmW2luZGV4XTtcbiAgICAgIHJlcyA9IGYodmFsLCBpbmRleCwgTyk7XG4gICAgICBpZiAoVFlQRSkge1xuICAgICAgICBpZiAoSVNfTUFQKSByZXN1bHRbaW5kZXhdID0gcmVzOyAgIC8vIG1hcFxuICAgICAgICBlbHNlIGlmIChyZXMpIHN3aXRjaCAoVFlQRSkge1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuIHRydWU7ICAgICAgICAgICAgIC8vIHNvbWVcbiAgICAgICAgICBjYXNlIDU6IHJldHVybiB2YWw7ICAgICAgICAgICAgICAvLyBmaW5kXG4gICAgICAgICAgY2FzZSA2OiByZXR1cm4gaW5kZXg7ICAgICAgICAgICAgLy8gZmluZEluZGV4XG4gICAgICAgICAgY2FzZSAyOiByZXN1bHQucHVzaCh2YWwpOyAgICAgICAgLy8gZmlsdGVyXG4gICAgICAgIH0gZWxzZSBpZiAoSVNfRVZFUlkpIHJldHVybiBmYWxzZTsgLy8gZXZlcnlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIElTX0ZJTkRfSU5ERVggPyAtMSA6IElTX1NPTUUgfHwgSVNfRVZFUlkgPyBJU19FVkVSWSA6IHJlc3VsdDtcbiAgfTtcbn07XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9faXMtYXJyYXknKTtcbnZhciBTUEVDSUVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3JpZ2luYWwpIHtcbiAgdmFyIEM7XG4gIGlmIChpc0FycmF5KG9yaWdpbmFsKSkge1xuICAgIEMgPSBvcmlnaW5hbC5jb25zdHJ1Y3RvcjtcbiAgICAvLyBjcm9zcy1yZWFsbSBmYWxsYmFja1xuICAgIGlmICh0eXBlb2YgQyA9PSAnZnVuY3Rpb24nICYmIChDID09PSBBcnJheSB8fCBpc0FycmF5KEMucHJvdG90eXBlKSkpIEMgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGlzT2JqZWN0KEMpKSB7XG4gICAgICBDID0gQ1tTUEVDSUVTXTtcbiAgICAgIGlmIChDID09PSBudWxsKSBDID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSByZXR1cm4gQyA9PT0gdW5kZWZpbmVkID8gQXJyYXkgOiBDO1xufTtcbiIsIi8vIDkuNC4yLjMgQXJyYXlTcGVjaWVzQ3JlYXRlKG9yaWdpbmFsQXJyYXksIGxlbmd0aClcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9yaWdpbmFsLCBsZW5ndGgpIHtcbiAgcmV0dXJuIG5ldyAoc3BlY2llc0NvbnN0cnVjdG9yKG9yaWdpbmFsKSkobGVuZ3RoKTtcbn07XG4iLCJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoaXQpLnNsaWNlKDgsIC0xKTtcbn07XG4iLCJ2YXIgY29yZSA9IG1vZHVsZS5leHBvcnRzID0geyB2ZXJzaW9uOiAnMi42LjknIH07XG5pZiAodHlwZW9mIF9fZSA9PSAnbnVtYmVyJykgX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIiwiLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQsIGxlbmd0aCkge1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwiLy8gNy4yLjEgUmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudClcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsIi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIGlzID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGlzID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIHRhcmdldCA9IElTX0dMT0JBTCA/IGdsb2JhbCA6IElTX1NUQVRJQyA/IGdsb2JhbFtuYW1lXSB8fCAoZ2xvYmFsW25hbWVdID0ge30pIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXTtcbiAgdmFyIGV4cG9ydHMgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KTtcbiAgdmFyIGV4cFByb3RvID0gZXhwb3J0c1tQUk9UT1RZUEVdIHx8IChleHBvcnRzW1BST1RPVFlQRV0gPSB7fSk7XG4gIHZhciBrZXksIG93biwgb3V0LCBleHA7XG4gIGlmIChJU19HTE9CQUwpIHNvdXJjZSA9IG5hbWU7XG4gIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuICAgIG93biA9ICFJU19GT1JDRUQgJiYgdGFyZ2V0ICYmIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcbiAgICBvdXQgPSAob3duID8gdGFyZ2V0IDogc291cmNlKVtrZXldO1xuICAgIC8vIGJpbmQgdGltZXJzIHRvIGdsb2JhbCBmb3IgY2FsbCBmcm9tIGV4cG9ydCBjb250ZXh0XG4gICAgZXhwID0gSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXh0ZW5kIGdsb2JhbFxuICAgIGlmICh0YXJnZXQpIHJlZGVmaW5lKHRhcmdldCwga2V5LCBvdXQsIHR5cGUgJiAkZXhwb3J0LlUpO1xuICAgIC8vIGV4cG9ydFxuICAgIGlmIChleHBvcnRzW2tleV0gIT0gb3V0KSBoaWRlKGV4cG9ydHMsIGtleSwgZXhwKTtcbiAgICBpZiAoSVNfUFJPVE8gJiYgZXhwUHJvdG9ba2V5XSAhPSBvdXQpIGV4cFByb3RvW2tleV0gPSBvdXQ7XG4gIH1cbn07XG5nbG9iYWwuY29yZSA9IGNvcmU7XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG4iLCJ2YXIgTUFUQ0ggPSByZXF1aXJlKCcuL193a3MnKSgnbWF0Y2gnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSkge1xuICB2YXIgcmUgPSAvLi87XG4gIHRyeSB7XG4gICAgJy8uLydbS0VZXShyZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0cnkge1xuICAgICAgcmVbTUFUQ0hdID0gZmFsc2U7XG4gICAgICByZXR1cm4gIScvLi8nW0tFWV0ocmUpO1xuICAgIH0gY2F0Y2ggKGYpIHsgLyogZW1wdHkgKi8gfVxuICB9IHJldHVybiB0cnVlO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ25hdGl2ZS1mdW5jdGlvbi10by1zdHJpbmcnLCBGdW5jdGlvbi50b1N0cmluZyk7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxudmFyIGdsb2JhbCA9IG1vZHVsZS5leHBvcnRzID0gdHlwZW9mIHdpbmRvdyAhPSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuTWF0aCA9PSBNYXRoXG4gID8gd2luZG93IDogdHlwZW9mIHNlbGYgIT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5NYXRoID09IE1hdGggPyBzZWxmXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICA6IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5pZiAodHlwZW9mIF9fZyA9PSAnbnVtYmVyJykgX19nID0gZ2xvYmFsOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4iLCJ2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoaXQsIGtleSk7XG59O1xuIiwidmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIGRQLmYob2JqZWN0LCBrZXksIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdkaXYnKSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcbiIsIi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApID8gT2JqZWN0IDogZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjb2YoaXQpID09ICdTdHJpbmcnID8gaXQuc3BsaXQoJycpIDogT2JqZWN0KGl0KTtcbn07XG4iLCIvLyA3LjIuMiBJc0FycmF5KGFyZ3VtZW50KVxudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xubW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIGlzQXJyYXkoYXJnKSB7XG4gIHJldHVybiBjb2YoYXJnKSA9PSAnQXJyYXknO1xufTtcbiIsIi8vIDIwLjEuMi4zIE51bWJlci5pc0ludGVnZXIobnVtYmVyKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0ludGVnZXIoaXQpIHtcbiAgcmV0dXJuICFpc09iamVjdChpdCkgJiYgaXNGaW5pdGUoaXQpICYmIGZsb29yKGl0KSA9PT0gaXQ7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG4iLCIvLyA3LjIuOCBJc1JlZ0V4cChhcmd1bWVudClcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xudmFyIE1BVENIID0gcmVxdWlyZSgnLi9fd2tzJykoJ21hdGNoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgaXNSZWdFeHA7XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgKChpc1JlZ0V4cCA9IGl0W01BVENIXSkgIT09IHVuZGVmaW5lZCA/ICEhaXNSZWdFeHAgOiBjb2YoaXQpID09ICdSZWdFeHAnKTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZhbHNlO1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBTUkMgPSByZXF1aXJlKCcuL191aWQnKSgnc3JjJyk7XG52YXIgJHRvU3RyaW5nID0gcmVxdWlyZSgnLi9fZnVuY3Rpb24tdG8tc3RyaW5nJyk7XG52YXIgVE9fU1RSSU5HID0gJ3RvU3RyaW5nJztcbnZhciBUUEwgPSAoJycgKyAkdG9TdHJpbmcpLnNwbGl0KFRPX1NUUklORyk7XG5cbnJlcXVpcmUoJy4vX2NvcmUnKS5pbnNwZWN0U291cmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiAkdG9TdHJpbmcuY2FsbChpdCk7XG59O1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywga2V5LCB2YWwsIHNhZmUpIHtcbiAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2YgdmFsID09ICdmdW5jdGlvbic7XG4gIGlmIChpc0Z1bmN0aW9uKSBoYXModmFsLCAnbmFtZScpIHx8IGhpZGUodmFsLCAnbmFtZScsIGtleSk7XG4gIGlmIChPW2tleV0gPT09IHZhbCkgcmV0dXJuO1xuICBpZiAoaXNGdW5jdGlvbikgaGFzKHZhbCwgU1JDKSB8fCBoaWRlKHZhbCwgU1JDLCBPW2tleV0gPyAnJyArIE9ba2V5XSA6IFRQTC5qb2luKFN0cmluZyhrZXkpKSk7XG4gIGlmIChPID09PSBnbG9iYWwpIHtcbiAgICBPW2tleV0gPSB2YWw7XG4gIH0gZWxzZSBpZiAoIXNhZmUpIHtcbiAgICBkZWxldGUgT1trZXldO1xuICAgIGhpZGUoTywga2V5LCB2YWwpO1xuICB9IGVsc2UgaWYgKE9ba2V5XSkge1xuICAgIE9ba2V5XSA9IHZhbDtcbiAgfSBlbHNlIHtcbiAgICBoaWRlKE8sIGtleSwgdmFsKTtcbiAgfVxuLy8gYWRkIGZha2UgRnVuY3Rpb24jdG9TdHJpbmcgZm9yIGNvcnJlY3Qgd29yayB3cmFwcGVkIG1ldGhvZHMgLyBjb25zdHJ1Y3RvcnMgd2l0aCBtZXRob2RzIGxpa2UgTG9EYXNoIGlzTmF0aXZlXG59KShGdW5jdGlvbi5wcm90b3R5cGUsIFRPX1NUUklORywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiB0eXBlb2YgdGhpcyA9PSAnZnVuY3Rpb24nICYmIHRoaXNbU1JDXSB8fCAkdG9TdHJpbmcuY2FsbCh0aGlzKTtcbn0pO1xuIiwidmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiBjb3JlLnZlcnNpb24sXG4gIG1vZGU6IHJlcXVpcmUoJy4vX2xpYnJhcnknKSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE5IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJ1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChtZXRob2QsIGFyZykge1xuICByZXR1cm4gISFtZXRob2QgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNhbGxcbiAgICBhcmcgPyBtZXRob2QuY2FsbChudWxsLCBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sIDEpIDogbWV0aG9kLmNhbGwobnVsbCk7XG4gIH0pO1xufTtcbiIsIi8vIGhlbHBlciBmb3IgU3RyaW5nI3tzdGFydHNXaXRoLCBlbmRzV2l0aCwgaW5jbHVkZXN9XG52YXIgaXNSZWdFeHAgPSByZXF1aXJlKCcuL19pcy1yZWdleHAnKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0aGF0LCBzZWFyY2hTdHJpbmcsIE5BTUUpIHtcbiAgaWYgKGlzUmVnRXhwKHNlYXJjaFN0cmluZykpIHRocm93IFR5cGVFcnJvcignU3RyaW5nIycgKyBOQU1FICsgXCIgZG9lc24ndCBhY2NlcHQgcmVnZXghXCIpO1xuICByZXR1cm4gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xufTtcbiIsInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIGluZGV4ID0gdG9JbnRlZ2VyKGluZGV4KTtcbiAgcmV0dXJuIGluZGV4IDwgMCA/IG1heChpbmRleCArIGxlbmd0aCwgMCkgOiBtaW4oaW5kZXgsIGxlbmd0aCk7XG59O1xuIiwiLy8gNy4xLjQgVG9JbnRlZ2VyXG52YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXNOYU4oaXQgPSAraXQpID8gMCA6IChpdCA+IDAgPyBmbG9vciA6IGNlaWwpKGl0KTtcbn07XG4iLCIvLyB0byBpbmRleGVkIG9iamVjdCwgdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSU9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuIiwiLy8gNy4xLjE1IFRvTGVuZ3RoXG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG4iLCIvLyA3LjEuMTMgVG9PYmplY3QoYXJndW1lbnQpXG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBPYmplY3QoZGVmaW5lZChpdCkpO1xufTtcbiIsIi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gaXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpdC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcbiIsInZhciBpZCA9IDA7XG52YXIgcHggPSBNYXRoLnJhbmRvbSgpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59O1xuIiwidmFyIHN0b3JlID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ3drcycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLlN5bWJvbDtcbnZhciBVU0VfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PSAnZnVuY3Rpb24nO1xuXG52YXIgJGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPVxuICAgIFVTRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdIHx8IChVU0VfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuXG4kZXhwb3J0cy5zdG9yZSA9IHN0b3JlO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkZm9yRWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSgwKTtcbnZhciBTVFJJQ1QgPSByZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoW10uZm9yRWFjaCwgdHJ1ZSk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIVNUUklDVCwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMTAgLyAxNS40LjQuMTggQXJyYXkucHJvdG90eXBlLmZvckVhY2goY2FsbGJhY2tmbiBbLCB0aGlzQXJnXSlcbiAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkZm9yRWFjaCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHNbMV0pO1xuICB9XG59KTtcbiIsIi8vIDIwLjEuMi4zIE51bWJlci5pc0ludGVnZXIobnVtYmVyKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdOdW1iZXInLCB7IGlzSW50ZWdlcjogcmVxdWlyZSgnLi9faXMtaW50ZWdlcicpIH0pO1xuIiwiLy8gMjEuMS4zLjE4IFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcgWywgcG9zaXRpb24gXSlcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjb250ZXh0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWNvbnRleHQnKTtcbnZhciBTVEFSVFNfV0lUSCA9ICdzdGFydHNXaXRoJztcbnZhciAkc3RhcnRzV2l0aCA9ICcnW1NUQVJUU19XSVRIXTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscy1pcy1yZWdleHAnKShTVEFSVFNfV0lUSCksICdTdHJpbmcnLCB7XG4gIHN0YXJ0c1dpdGg6IGZ1bmN0aW9uIHN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nIC8qICwgcG9zaXRpb24gPSAwICovKSB7XG4gICAgdmFyIHRoYXQgPSBjb250ZXh0KHRoaXMsIHNlYXJjaFN0cmluZywgU1RBUlRTX1dJVEgpO1xuICAgIHZhciBpbmRleCA9IHRvTGVuZ3RoKE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCB0aGF0Lmxlbmd0aCkpO1xuICAgIHZhciBzZWFyY2ggPSBTdHJpbmcoc2VhcmNoU3RyaW5nKTtcbiAgICByZXR1cm4gJHN0YXJ0c1dpdGhcbiAgICAgID8gJHN0YXJ0c1dpdGguY2FsbCh0aGF0LCBzZWFyY2gsIGluZGV4KVxuICAgICAgOiB0aGF0LnNsaWNlKGluZGV4LCBpbmRleCArIHNlYXJjaC5sZW5ndGgpID09PSBzZWFyY2g7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRpbmNsdWRlcyA9IHJlcXVpcmUoJy4vX2FycmF5LWluY2x1ZGVzJykodHJ1ZSk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnQXJyYXknLCB7XG4gIGluY2x1ZGVzOiBmdW5jdGlvbiBpbmNsdWRlcyhlbCAvKiAsIGZyb21JbmRleCA9IDAgKi8pIHtcbiAgICByZXR1cm4gJGluY2x1ZGVzKHRoaXMsIGVsLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG5yZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKSgnaW5jbHVkZXMnKTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8qKlxuICogW1JlY3Vyc2l2ZWx5IHBhcnNlcyBhIHN0cmluZ2lmaWVkIEpTT05dXG4gKiBAcGFyYW0gIHtbdHlwZV19IGpzb25TdHJpbmcgW3N0cmluZ2lmaWVkIGpzb24gdG8gcGFyc2VdXG4gKiBAcmV0dXJuIHtbdHlwZV19ICAgICAgICAgICAgW25vcm1hbGl6ZWQgSmF2YXNjcmlwdCBvYmplY3RdXG4gKi9cbmZ1bmN0aW9uIGRlZXBQYXJzZUpzb24oanNvblN0cmluZykge1xuICAvLyBpZiBub3Qgc3RyaW5naWZpZWQganNvbiByYXRoZXIgYSBzaW1wbGUgc3RyaW5nIHZhbHVlIHRoZW4gSlNPTi5wYXJzZSB3aWxsIHRocm93IGVycm9yXG4gIC8vIG90aGVyd2lzZSBjb250aW51ZSByZWN1cnNpb25cbiAgaWYgKHR5cGVvZiBqc29uU3RyaW5nID09PSAnc3RyaW5nJykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZGVlcFBhcnNlSnNvbihKU09OLnBhcnNlKGpzb25TdHJpbmcpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiBqc29uU3RyaW5nO1xuICAgIH1cbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGpzb25TdHJpbmcpKSB7XG4gICAgLy8gaWYgYW4gYXJyYXkgaXMgcmVjZWl2ZWQsIG1hcCBvdmVyIHRoZSBhcnJheSBhbmQgZGVlcFBhcnNlIGVhY2ggdmFsdWVcbiAgICByZXR1cm4ganNvblN0cmluZy5tYXAodmFsID0+IGRlZXBQYXJzZUpzb24odmFsKSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGpzb25TdHJpbmcgPT09ICdvYmplY3QnICYmIGpzb25TdHJpbmcgIT09IG51bGwpIHtcbiAgICAvLyBpZiBhbiBvYmplY3QgaXMgcmVjZWl2ZWQgdGhlbiBkZWVwUGFyc2UgZWFjaCBlbGVtZW50IGluIHRoZSBvYmplY3RcbiAgICAvLyB0eXBlb2YgbnVsbCByZXR1cm5zICdvYmplY3QnIHRvbywgc28gd2UgaGF2ZSB0byBlbGltaW5hdGUgdGhhdFxuICAgIHJldHVybiBPYmplY3Qua2V5cyhqc29uU3RyaW5nKS5yZWR1Y2UoKG9iaiwga2V5KSA9PiB7XG4gICAgICBvYmpba2V5XSA9IGRlZXBQYXJzZUpzb24oanNvblN0cmluZ1trZXldKTtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSwge30pO1xuICB9IGVsc2Uge1xuICAgIC8vIG90aGVyd2lzZSByZXR1cm4gd2hhdGV2ZXIgd2FzIHJlY2VpdmVkXG4gICAgcmV0dXJuIGpzb25TdHJpbmc7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IGRlZXBQYXJzZUpzb24gfTtcbiIsImlmKCFnbG9iYWxbXCJCQmpcIl0pIGdsb2JhbFtcIkJCalwiXSA9IHt9O1xubW9kdWxlLmV4cG9ydHMgPSBnbG9iYWxbXCJCQmpcIl1bXCJNYXNrc1wiXSA9IHJlcXVpcmUoXCItIUQ6XFxcXEdpdGh1YlxcXFxCQmpHcmlkRXhXaWRnZXRcXFxcY2xpZW50XFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz9yZWYtLTQhLlxcXFxiYmotbWFza3MuanNcIik7IiwiaWYoIWdsb2JhbFtcIkJhc2lzXCJdKSBnbG9iYWxbXCJCYXNpc1wiXSA9IHt9O1xubW9kdWxlLmV4cG9ydHMgPSBnbG9iYWxbXCJCYXNpc1wiXVtcIkFnR3JpZENvbXBvbmVudHNcIl0gPSByZXF1aXJlKFwiLSFEOlxcXFxHaXRodWJcXFxcQkJqR3JpZEV4V2lkZ2V0XFxcXGNsaWVudFxcXFxub2RlX21vZHVsZXNcXFxcYmFiZWwtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/cmVmLS00IS5cXFxcYmFzaXMtYWdncmlkLWNvbXBvbmVudHMuanNcIik7IiwiaWYoIWdsb2JhbFtcIkJhc2lzXCJdKSBnbG9iYWxbXCJCYXNpc1wiXSA9IHt9O1xubW9kdWxlLmV4cG9ydHMgPSBnbG9iYWxbXCJCYXNpc1wiXVtcIklucHV0TWFza2luZ1wiXSA9IHJlcXVpcmUoXCItIUQ6XFxcXEdpdGh1YlxcXFxCQmpHcmlkRXhXaWRnZXRcXFxcY2xpZW50XFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz9yZWYtLTQhLlxcXFxiYXNpcy1pbnB1dC1tYXNraW5nLmpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gZ2xvYmFsW1wiZmxhdHBpY2tyXCJdID0gcmVxdWlyZShcIi0hRDpcXFxcR2l0aHViXFxcXEJCakdyaWRFeFdpZGdldFxcXFxjbGllbnRcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3JlZi0tNCEuXFxcXGZsYXRwaWNrci5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbFtcImpzc1wiXSA9IHJlcXVpcmUoXCItIUQ6XFxcXEdpdGh1YlxcXFxCQmpHcmlkRXhXaWRnZXRcXFxcY2xpZW50XFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz9yZWYtLTQhLlxcXFxqc3MuanNcIik7IiwiXG52YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanMhLi9mbGF0cGlja3IuY3NzXCIpO1xuXG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcblxudmFyIHRyYW5zZm9ybTtcbnZhciBpbnNlcnRJbnRvO1xuXG5cblxudmFyIG9wdGlvbnMgPSB7XCJobXJcIjp0cnVlfVxuXG5vcHRpb25zLnRyYW5zZm9ybSA9IHRyYW5zZm9ybVxub3B0aW9ucy5pbnNlcnRJbnRvID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gd2luZG93LnBhcmVudC5kb2N1bWVudC5oZWFkIH07XG5cbnZhciB1cGRhdGUgPSByZXF1aXJlKFwiIS4uLy4uL3N0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzLmpzXCIpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5pZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2FscztcblxuaWYobW9kdWxlLmhvdCkge1xuXHRtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuL2ZsYXRwaWNrci5jc3NcIiwgZnVuY3Rpb24oKSB7XG5cdFx0dmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanMhLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4vZmxhdHBpY2tyLmNzc1wiKTtcblxuXHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXG5cdFx0dmFyIGxvY2FscyA9IChmdW5jdGlvbihhLCBiKSB7XG5cdFx0XHR2YXIga2V5LCBpZHggPSAwO1xuXG5cdFx0XHRmb3Ioa2V5IGluIGEpIHtcblx0XHRcdFx0aWYoIWIgfHwgYVtrZXldICE9PSBiW2tleV0pIHJldHVybiBmYWxzZTtcblx0XHRcdFx0aWR4Kys7XG5cdFx0XHR9XG5cblx0XHRcdGZvcihrZXkgaW4gYikgaWR4LS07XG5cblx0XHRcdHJldHVybiBpZHggPT09IDA7XG5cdFx0fShjb250ZW50LmxvY2FscywgbmV3Q29udGVudC5sb2NhbHMpKTtcblxuXHRcdGlmKCFsb2NhbHMpIHRocm93IG5ldyBFcnJvcignQWJvcnRpbmcgQ1NTIEhNUiBkdWUgdG8gY2hhbmdlZCBjc3MtbW9kdWxlcyBsb2NhbHMuJyk7XG5cblx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdH0pO1xuXG5cdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufSIsImltcG9ydCByb290IGZyb20gJy4vX3Jvb3QuanMnO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBTeW1ib2wgPSByb290LlN5bWJvbDtcblxuZXhwb3J0IGRlZmF1bHQgU3ltYm9sO1xuIiwiLyoqXG4gKiBBIGZhc3RlciBhbHRlcm5hdGl2ZSB0byBgRnVuY3Rpb24jYXBwbHlgLCB0aGlzIGZ1bmN0aW9uIGludm9rZXMgYGZ1bmNgXG4gKiB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiBgdGhpc0FyZ2AgYW5kIHRoZSBhcmd1bWVudHMgb2YgYGFyZ3NgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGBmdW5jYC5cbiAqL1xuZnVuY3Rpb24gYXBwbHkoZnVuYywgdGhpc0FyZywgYXJncykge1xuICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcpO1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdKTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICB9XG4gIHJldHVybiBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhcHBseTtcbiIsImltcG9ydCBiYXNlVGltZXMgZnJvbSAnLi9fYmFzZVRpbWVzLmpzJztcbmltcG9ydCBpc0FyZ3VtZW50cyBmcm9tICcuL2lzQXJndW1lbnRzLmpzJztcbmltcG9ydCBpc0FycmF5IGZyb20gJy4vaXNBcnJheS5qcyc7XG5pbXBvcnQgaXNCdWZmZXIgZnJvbSAnLi9pc0J1ZmZlci5qcyc7XG5pbXBvcnQgaXNJbmRleCBmcm9tICcuL19pc0luZGV4LmpzJztcbmltcG9ydCBpc1R5cGVkQXJyYXkgZnJvbSAnLi9pc1R5cGVkQXJyYXkuanMnO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgdGhlIGFycmF5LWxpa2UgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSksXG4gICAgICBpc0FyZyA9ICFpc0FyciAmJiBpc0FyZ3VtZW50cyh2YWx1ZSksXG4gICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgIGlzVHlwZSA9ICFpc0FyciAmJiAhaXNBcmcgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkodmFsdWUpLFxuICAgICAgc2tpcEluZGV4ZXMgPSBpc0FyciB8fCBpc0FyZyB8fCBpc0J1ZmYgfHwgaXNUeXBlLFxuICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICEoc2tpcEluZGV4ZXMgJiYgKFxuICAgICAgICAgICAvLyBTYWZhcmkgOSBoYXMgZW51bWVyYWJsZSBgYXJndW1lbnRzLmxlbmd0aGAgaW4gc3RyaWN0IG1vZGUuXG4gICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAvLyBOb2RlLmpzIDAuMTAgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gYnVmZmVycy5cbiAgICAgICAgICAgKGlzQnVmZiAmJiAoa2V5ID09ICdvZmZzZXQnIHx8IGtleSA9PSAncGFyZW50JykpIHx8XG4gICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgKGlzVHlwZSAmJiAoa2V5ID09ICdidWZmZXInIHx8IGtleSA9PSAnYnl0ZUxlbmd0aCcgfHwga2V5ID09ICdieXRlT2Zmc2V0JykpIHx8XG4gICAgICAgICAgIC8vIFNraXAgaW5kZXggcHJvcGVydGllcy5cbiAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFycmF5TGlrZUtleXM7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tYXBgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlNYXAoYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBhcnJheU1hcDtcbiIsImltcG9ydCBiYXNlQXNzaWduVmFsdWUgZnJvbSAnLi9fYmFzZUFzc2lnblZhbHVlLmpzJztcbmltcG9ydCBlcSBmcm9tICcuL2VxLmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBBc3NpZ25zIGB2YWx1ZWAgdG8gYGtleWAgb2YgYG9iamVjdGAgaWYgdGhlIGV4aXN0aW5nIHZhbHVlIGlzIG5vdCBlcXVpdmFsZW50XG4gKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gKi9cbmZ1bmN0aW9uIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XTtcbiAgaWYgKCEoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYgZXEob2JqVmFsdWUsIHZhbHVlKSkgfHxcbiAgICAgICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpKSB7XG4gICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgYXNzaWduVmFsdWU7XG4iLCJpbXBvcnQgZGVmaW5lUHJvcGVydHkgZnJvbSAnLi9fZGVmaW5lUHJvcGVydHkuanMnO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBhc3NpZ25WYWx1ZWAgYW5kIGBhc3NpZ25NZXJnZVZhbHVlYCB3aXRob3V0XG4gKiB2YWx1ZSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5ID09ICdfX3Byb3RvX18nICYmIGRlZmluZVByb3BlcnR5KSB7XG4gICAgZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIHtcbiAgICAgICdjb25maWd1cmFibGUnOiB0cnVlLFxuICAgICAgJ2VudW1lcmFibGUnOiB0cnVlLFxuICAgICAgJ3ZhbHVlJzogdmFsdWUsXG4gICAgICAnd3JpdGFibGUnOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlQXNzaWduVmFsdWU7XG4iLCJpbXBvcnQgU3ltYm9sIGZyb20gJy4vX1N5bWJvbC5qcyc7XG5pbXBvcnQgZ2V0UmF3VGFnIGZyb20gJy4vX2dldFJhd1RhZy5qcyc7XG5pbXBvcnQgb2JqZWN0VG9TdHJpbmcgZnJvbSAnLi9fb2JqZWN0VG9TdHJpbmcuanMnO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbnVsbFRhZyA9ICdbb2JqZWN0IE51bGxdJyxcbiAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBVbmRlZmluZWRdJztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0aG91dCBmYWxsYmFja3MgZm9yIGJ1Z2d5IGVudmlyb25tZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0VGFnKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWRUYWcgOiBudWxsVGFnO1xuICB9XG4gIHJldHVybiAoc3ltVG9TdHJpbmdUYWcgJiYgc3ltVG9TdHJpbmdUYWcgaW4gT2JqZWN0KHZhbHVlKSlcbiAgICA/IGdldFJhd1RhZyh2YWx1ZSlcbiAgICA6IG9iamVjdFRvU3RyaW5nKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUdldFRhZztcbiIsImltcG9ydCBiYXNlR2V0VGFnIGZyb20gJy4vX2Jhc2VHZXRUYWcuanMnO1xuaW1wb3J0IGlzT2JqZWN0TGlrZSBmcm9tICcuL2lzT2JqZWN0TGlrZS5qcyc7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcmd1bWVudHNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqL1xuZnVuY3Rpb24gYmFzZUlzQXJndW1lbnRzKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFyZ3NUYWc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VJc0FyZ3VtZW50cztcbiIsImltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJy4vaXNGdW5jdGlvbi5qcyc7XG5pbXBvcnQgaXNNYXNrZWQgZnJvbSAnLi9faXNNYXNrZWQuanMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QuanMnO1xuaW1wb3J0IHRvU291cmNlIGZyb20gJy4vX3RvU291cmNlLmpzJztcblxuLyoqXG4gKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAqL1xudmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xudmFyIHJlSXNIb3N0Q3RvciA9IC9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC87XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xudmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4pO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmF0aXZlYCB3aXRob3V0IGJhZCBzaGltIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hdGl2ZSh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCBpc01hc2tlZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUlzTmF0aXZlO1xuIiwiaW1wb3J0IGJhc2VHZXRUYWcgZnJvbSAnLi9fYmFzZUdldFRhZy5qcyc7XG5pbXBvcnQgaXNMZW5ndGggZnJvbSAnLi9pc0xlbmd0aC5qcyc7XG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gJy4vaXNPYmplY3RMaWtlLmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xudmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG50eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbnR5cGVkQXJyYXlUYWdzW2FyZ3NUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlUYWddID1cbnR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddID1cbnR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID1cbnR5cGVkQXJyYXlUYWdzW2Vycm9yVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Z1bmNUYWddID1cbnR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPSB0eXBlZEFycmF5VGFnc1tudW1iZXJUYWddID1cbnR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID1cbnR5cGVkQXJyYXlUYWdzW3NldFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzdHJpbmdUYWddID1cbnR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiZcbiAgICBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3NbYmFzZUdldFRhZyh2YWx1ZSldO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlSXNUeXBlZEFycmF5O1xuIiwiaW1wb3J0IGlzUHJvdG90eXBlIGZyb20gJy4vX2lzUHJvdG90eXBlLmpzJztcbmltcG9ydCBuYXRpdmVLZXlzIGZyb20gJy4vX25hdGl2ZUtleXMuanMnO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNgIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXMob2JqZWN0KSB7XG4gIGlmICghaXNQcm90b3R5cGUob2JqZWN0KSkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzKG9iamVjdCk7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYga2V5ICE9ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VLZXlzO1xuIiwiaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QuanMnO1xuaW1wb3J0IGlzUHJvdG90eXBlIGZyb20gJy4vX2lzUHJvdG90eXBlLmpzJztcbmltcG9ydCBuYXRpdmVLZXlzSW4gZnJvbSAnLi9fbmF0aXZlS2V5c0luLmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzSW5gIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXNJbihvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUtleXNJbihvYmplY3QpO1xuICB9XG4gIHZhciBpc1Byb3RvID0gaXNQcm90b3R5cGUob2JqZWN0KSxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICBpZiAoIShrZXkgPT0gJ2NvbnN0cnVjdG9yJyAmJiAoaXNQcm90byB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUtleXNJbjtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlPZmAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVByb3BlcnR5T2Yob2JqZWN0KSB7XG4gIHJldHVybiBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZVByb3BlcnR5T2Y7XG4iLCJpbXBvcnQgaWRlbnRpdHkgZnJvbSAnLi9pZGVudGl0eS5qcyc7XG5pbXBvcnQgb3ZlclJlc3QgZnJvbSAnLi9fb3ZlclJlc3QuanMnO1xuaW1wb3J0IHNldFRvU3RyaW5nIGZyb20gJy4vX3NldFRvU3RyaW5nLmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZXN0YCB3aGljaCBkb2Vzbid0IHZhbGlkYXRlIG9yIGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVJlc3QoZnVuYywgc3RhcnQpIHtcbiAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCBpZGVudGl0eSksIGZ1bmMgKyAnJyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VSZXN0O1xuIiwiaW1wb3J0IGNvbnN0YW50IGZyb20gJy4vY29uc3RhbnQuanMnO1xuaW1wb3J0IGRlZmluZVByb3BlcnR5IGZyb20gJy4vX2RlZmluZVByb3BlcnR5LmpzJztcbmltcG9ydCBpZGVudGl0eSBmcm9tICcuL2lkZW50aXR5LmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0VG9TdHJpbmdgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgYmFzZVNldFRvU3RyaW5nID0gIWRlZmluZVByb3BlcnR5ID8gaWRlbnRpdHkgOiBmdW5jdGlvbihmdW5jLCBzdHJpbmcpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmMsICd0b1N0cmluZycsIHtcbiAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAnZW51bWVyYWJsZSc6IGZhbHNlLFxuICAgICd2YWx1ZSc6IGNvbnN0YW50KHN0cmluZyksXG4gICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VTZXRUb1N0cmluZztcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udGltZXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kc1xuICogb3IgbWF4IGFycmF5IGxlbmd0aCBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICovXG5mdW5jdGlvbiBiYXNlVGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShuKTtcblxuICB3aGlsZSAoKytpbmRleCA8IG4pIHtcbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoaW5kZXgpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VUaW1lcztcbiIsImltcG9ydCBTeW1ib2wgZnJvbSAnLi9fU3ltYm9sLmpzJztcbmltcG9ydCBhcnJheU1hcCBmcm9tICcuL19hcnJheU1hcC5qcyc7XG5pbXBvcnQgaXNBcnJheSBmcm9tICcuL2lzQXJyYXkuanMnO1xuaW1wb3J0IGlzU3ltYm9sIGZyb20gJy4vaXNTeW1ib2wuanMnO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwO1xuXG4vKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbnZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgc3ltYm9sVG9TdHJpbmcgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnRvU3RyaW5nIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRvU3RyaW5nYCB3aGljaCBkb2Vzbid0IGNvbnZlcnQgbnVsbGlzaFxuICogdmFsdWVzIHRvIGVtcHR5IHN0cmluZ3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUb1N0cmluZyh2YWx1ZSkge1xuICAvLyBFeGl0IGVhcmx5IGZvciBzdHJpbmdzIHRvIGF2b2lkIGEgcGVyZm9ybWFuY2UgaGl0IGluIHNvbWUgZW52aXJvbm1lbnRzLlxuICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbnZlcnQgdmFsdWVzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgcmV0dXJuIGFycmF5TWFwKHZhbHVlLCBiYXNlVG9TdHJpbmcpICsgJyc7XG4gIH1cbiAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiBzeW1ib2xUb1N0cmluZyA/IHN5bWJvbFRvU3RyaW5nLmNhbGwodmFsdWUpIDogJyc7XG4gIH1cbiAgdmFyIHJlc3VsdCA9ICh2YWx1ZSArICcnKTtcbiAgcmV0dXJuIChyZXN1bHQgPT0gJzAnICYmICgxIC8gdmFsdWUpID09IC1JTkZJTklUWSkgPyAnLTAnIDogcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlVG9TdHJpbmc7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VVbmFyeTtcbiIsImltcG9ydCBhcnJheU1hcCBmcm9tICcuL19hcnJheU1hcC5qcyc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udmFsdWVzYCBhbmQgYF8udmFsdWVzSW5gIHdoaWNoIGNyZWF0ZXMgYW5cbiAqIGFycmF5IG9mIGBvYmplY3RgIHByb3BlcnR5IHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9wZXJ0eSBuYW1lc1xuICogb2YgYHByb3BzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBiYXNlVmFsdWVzKG9iamVjdCwgcHJvcHMpIHtcbiAgcmV0dXJuIGFycmF5TWFwKHByb3BzLCBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlVmFsdWVzO1xuIiwiaW1wb3J0IGFzc2lnblZhbHVlIGZyb20gJy4vX2Fzc2lnblZhbHVlLmpzJztcbmltcG9ydCBiYXNlQXNzaWduVmFsdWUgZnJvbSAnLi9fYmFzZUFzc2lnblZhbHVlLmpzJztcblxuLyoqXG4gKiBDb3BpZXMgcHJvcGVydGllcyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzIHRvIGNvcHkuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb3BpZWQgdmFsdWVzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weU9iamVjdChzb3VyY2UsIHByb3BzLCBvYmplY3QsIGN1c3RvbWl6ZXIpIHtcbiAgdmFyIGlzTmV3ID0gIW9iamVjdDtcbiAgb2JqZWN0IHx8IChvYmplY3QgPSB7fSk7XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gcHJvcHNbaW5kZXhdO1xuXG4gICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgPyBjdXN0b21pemVyKG9iamVjdFtrZXldLCBzb3VyY2Vba2V5XSwga2V5LCBvYmplY3QsIHNvdXJjZSlcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG5ld1ZhbHVlID0gc291cmNlW2tleV07XG4gICAgfVxuICAgIGlmIChpc05ldykge1xuICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvYmplY3Q7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvcHlPYmplY3Q7XG4iLCJpbXBvcnQgcm9vdCBmcm9tICcuL19yb290LmpzJztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG92ZXJyZWFjaGluZyBjb3JlLWpzIHNoaW1zLiAqL1xudmFyIGNvcmVKc0RhdGEgPSByb290WydfX2NvcmUtanNfc2hhcmVkX18nXTtcblxuZXhwb3J0IGRlZmF1bHQgY29yZUpzRGF0YTtcbiIsImltcG9ydCBiYXNlUmVzdCBmcm9tICcuL19iYXNlUmVzdC5qcyc7XG5pbXBvcnQgaXNJdGVyYXRlZUNhbGwgZnJvbSAnLi9faXNJdGVyYXRlZUNhbGwuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmFzc2lnbmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbmVyIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYXNzaWduZXIgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUFzc2lnbmVyKGFzc2lnbmVyKSB7XG4gIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gc291cmNlcy5sZW5ndGgsXG4gICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPiAxID8gc291cmNlc1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICAgIGN1c3RvbWl6ZXIgPSAoYXNzaWduZXIubGVuZ3RoID4gMyAmJiB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nKVxuICAgICAgPyAobGVuZ3RoLS0sIGN1c3RvbWl6ZXIpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzb3VyY2VzWzBdLCBzb3VyY2VzWzFdLCBndWFyZCkpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPCAzID8gdW5kZWZpbmVkIDogY3VzdG9taXplcjtcbiAgICAgIGxlbmd0aCA9IDE7XG4gICAgfVxuICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgc291cmNlID0gc291cmNlc1tpbmRleF07XG4gICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgIGFzc2lnbmVyKG9iamVjdCwgc291cmNlLCBpbmRleCwgY3VzdG9taXplcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Q7XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVBc3NpZ25lcjtcbiIsImltcG9ydCBlcSBmcm9tICcuL2VxLmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIGJ5IGBfLmRlZmF1bHRzYCB0byBjdXN0b21pemUgaXRzIGBfLmFzc2lnbkluYCB1c2UgdG8gYXNzaWduIHByb3BlcnRpZXNcbiAqIG9mIHNvdXJjZSBvYmplY3RzIHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgZm9yIGFsbCBkZXN0aW5hdGlvbiBwcm9wZXJ0aWVzXG4gKiB0aGF0IHJlc29sdmUgdG8gYHVuZGVmaW5lZGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gb2JqVmFsdWUgVGhlIGRlc3RpbmF0aW9uIHZhbHVlLlxuICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgc291cmNlIHZhbHVlLlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBwYXJlbnQgb2JqZWN0IG9mIGBvYmpWYWx1ZWAuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBjdXN0b21EZWZhdWx0c0Fzc2lnbkluKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QpIHtcbiAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgIChlcShvYmpWYWx1ZSwgb2JqZWN0UHJvdG9ba2V5XSkgJiYgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkge1xuICAgIHJldHVybiBzcmNWYWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqVmFsdWU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGN1c3RvbURlZmF1bHRzQXNzaWduSW47XG4iLCJpbXBvcnQgZ2V0TmF0aXZlIGZyb20gJy4vX2dldE5hdGl2ZS5qcyc7XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICB2YXIgZnVuYyA9IGdldE5hdGl2ZShPYmplY3QsICdkZWZpbmVQcm9wZXJ0eScpO1xuICAgIGZ1bmMoe30sICcnLCB7fSk7XG4gICAgcmV0dXJuIGZ1bmM7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVQcm9wZXJ0eTtcbiIsImltcG9ydCBiYXNlUHJvcGVydHlPZiBmcm9tICcuL19iYXNlUHJvcGVydHlPZi5qcyc7XG5cbi8qKiBVc2VkIHRvIG1hcCBjaGFyYWN0ZXJzIHRvIEhUTUwgZW50aXRpZXMuICovXG52YXIgaHRtbEVzY2FwZXMgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmIzM5Oydcbn07XG5cbi8qKlxuICogVXNlZCBieSBgXy5lc2NhcGVgIHRvIGNvbnZlcnQgY2hhcmFjdGVycyB0byBIVE1MIGVudGl0aWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gY2hyIFRoZSBtYXRjaGVkIGNoYXJhY3RlciB0byBlc2NhcGUuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIGNoYXJhY3Rlci5cbiAqL1xudmFyIGVzY2FwZUh0bWxDaGFyID0gYmFzZVByb3BlcnR5T2YoaHRtbEVzY2FwZXMpO1xuXG5leHBvcnQgZGVmYXVsdCBlc2NhcGVIdG1sQ2hhcjtcbiIsIi8qKiBVc2VkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIGZvciBpbmNsdXNpb24gaW4gY29tcGlsZWQgc3RyaW5nIGxpdGVyYWxzLiAqL1xudmFyIHN0cmluZ0VzY2FwZXMgPSB7XG4gICdcXFxcJzogJ1xcXFwnLFxuICBcIidcIjogXCInXCIsXG4gICdcXG4nOiAnbicsXG4gICdcXHInOiAncicsXG4gICdcXHUyMDI4JzogJ3UyMDI4JyxcbiAgJ1xcdTIwMjknOiAndTIwMjknXG59O1xuXG4vKipcbiAqIFVzZWQgYnkgYF8udGVtcGxhdGVgIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIGZvciBpbmNsdXNpb24gaW4gY29tcGlsZWQgc3RyaW5nIGxpdGVyYWxzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gY2hyIFRoZSBtYXRjaGVkIGNoYXJhY3RlciB0byBlc2NhcGUuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIGNoYXJhY3Rlci5cbiAqL1xuZnVuY3Rpb24gZXNjYXBlU3RyaW5nQ2hhcihjaHIpIHtcbiAgcmV0dXJuICdcXFxcJyArIHN0cmluZ0VzY2FwZXNbY2hyXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZXNjYXBlU3RyaW5nQ2hhcjtcbiIsIi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbmV4cG9ydCBkZWZhdWx0IGZyZWVHbG9iYWw7XG4iLCJpbXBvcnQgYmFzZUlzTmF0aXZlIGZyb20gJy4vX2Jhc2VJc05hdGl2ZS5qcyc7XG5pbXBvcnQgZ2V0VmFsdWUgZnJvbSAnLi9fZ2V0VmFsdWUuanMnO1xuXG4vKipcbiAqIEdldHMgdGhlIG5hdGl2ZSBmdW5jdGlvbiBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICByZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBnZXROYXRpdmU7XG4iLCJpbXBvcnQgb3ZlckFyZyBmcm9tICcuL19vdmVyQXJnLmpzJztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgZ2V0UHJvdG90eXBlID0gb3ZlckFyZyhPYmplY3QuZ2V0UHJvdG90eXBlT2YsIE9iamVjdCk7XG5cbmV4cG9ydCBkZWZhdWx0IGdldFByb3RvdHlwZTtcbiIsImltcG9ydCBTeW1ib2wgZnJvbSAnLi9fU3ltYm9sLmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlmIChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBnZXRSYXdUYWc7XG4iLCIvKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBnZXRWYWx1ZShvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZ2V0VmFsdWU7XG4iLCIvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzLiAqL1xudmFyIHJlSXNVaW50ID0gL14oPzowfFsxLTldXFxkKikkLztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgaW5kZXguXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9TUFYX1NBRkVfSU5URUdFUl0gVGhlIHVwcGVyIGJvdW5kcyBvZiBhIHZhbGlkIGluZGV4LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBpbmRleCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0luZGV4KHZhbHVlLCBsZW5ndGgpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIGxlbmd0aCA9IGxlbmd0aCA9PSBudWxsID8gTUFYX1NBRkVfSU5URUdFUiA6IGxlbmd0aDtcblxuICByZXR1cm4gISFsZW5ndGggJiZcbiAgICAodHlwZSA9PSAnbnVtYmVyJyB8fFxuICAgICAgKHR5cGUgIT0gJ3N5bWJvbCcgJiYgcmVJc1VpbnQudGVzdCh2YWx1ZSkpKSAmJlxuICAgICAgICAodmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8IGxlbmd0aCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzSW5kZXg7XG4iLCJpbXBvcnQgZXEgZnJvbSAnLi9lcS5qcyc7XG5pbXBvcnQgaXNBcnJheUxpa2UgZnJvbSAnLi9pc0FycmF5TGlrZS5qcyc7XG5pbXBvcnQgaXNJbmRleCBmcm9tICcuL19pc0luZGV4LmpzJztcbmltcG9ydCBpc09iamVjdCBmcm9tICcuL2lzT2JqZWN0LmpzJztcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgdmFsdWUgYXJndW1lbnQuXG4gKiBAcGFyYW0geyp9IGluZGV4IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgaW5kZXggb3Iga2V5IGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBvYmplY3QgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBvYmplY3QgYXJndW1lbnQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJdGVyYXRlZUNhbGwodmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciB0eXBlID0gdHlwZW9mIGluZGV4O1xuICBpZiAodHlwZSA9PSAnbnVtYmVyJ1xuICAgICAgICA/IChpc0FycmF5TGlrZShvYmplY3QpICYmIGlzSW5kZXgoaW5kZXgsIG9iamVjdC5sZW5ndGgpKVxuICAgICAgICA6ICh0eXBlID09ICdzdHJpbmcnICYmIGluZGV4IGluIG9iamVjdClcbiAgICAgICkge1xuICAgIHJldHVybiBlcShvYmplY3RbaW5kZXhdLCB2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0l0ZXJhdGVlQ2FsbDtcbiIsImltcG9ydCBjb3JlSnNEYXRhIGZyb20gJy4vX2NvcmVKc0RhdGEuanMnO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWV0aG9kcyBtYXNxdWVyYWRpbmcgYXMgbmF0aXZlLiAqL1xudmFyIG1hc2tTcmNLZXkgPSAoZnVuY3Rpb24oKSB7XG4gIHZhciB1aWQgPSAvW14uXSskLy5leGVjKGNvcmVKc0RhdGEgJiYgY29yZUpzRGF0YS5rZXlzICYmIGNvcmVKc0RhdGEua2V5cy5JRV9QUk9UTyB8fCAnJyk7XG4gIHJldHVybiB1aWQgPyAoJ1N5bWJvbChzcmMpXzEuJyArIHVpZCkgOiAnJztcbn0oKSk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgaXRzIHNvdXJjZSBtYXNrZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNNYXNrZWQoZnVuYykge1xuICByZXR1cm4gISFtYXNrU3JjS2V5ICYmIChtYXNrU3JjS2V5IGluIGZ1bmMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc01hc2tlZDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGEgcHJvdG90eXBlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3RvdHlwZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc1Byb3RvdHlwZSh2YWx1ZSkge1xuICB2YXIgQ3RvciA9IHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yLFxuICAgICAgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG5cbiAgcmV0dXJuIHZhbHVlID09PSBwcm90bztcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNQcm90b3R5cGU7XG4iLCJpbXBvcnQgb3ZlckFyZyBmcm9tICcuL19vdmVyQXJnLmpzJztcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUtleXMgPSBvdmVyQXJnKE9iamVjdC5rZXlzLCBPYmplY3QpO1xuXG5leHBvcnQgZGVmYXVsdCBuYXRpdmVLZXlzO1xuIiwiLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VcbiAqIFtgT2JqZWN0LmtleXNgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGV4Y2VwdCB0aGF0IGl0IGluY2x1ZGVzIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIG5hdGl2ZUtleXNJbihvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAob2JqZWN0ICE9IG51bGwpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5hdGl2ZUtleXNJbjtcbiIsImltcG9ydCBmcmVlR2xvYmFsIGZyb20gJy4vX2ZyZWVHbG9iYWwuanMnO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgcHJvY2Vzc2AgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVQcm9jZXNzID0gbW9kdWxlRXhwb3J0cyAmJiBmcmVlR2xvYmFsLnByb2Nlc3M7XG5cbi8qKiBVc2VkIHRvIGFjY2VzcyBmYXN0ZXIgTm9kZS5qcyBoZWxwZXJzLiAqL1xudmFyIG5vZGVVdGlsID0gKGZ1bmN0aW9uKCkge1xuICB0cnkge1xuICAgIC8vIFVzZSBgdXRpbC50eXBlc2AgZm9yIE5vZGUuanMgMTArLlxuICAgIHZhciB0eXBlcyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlICYmIGZyZWVNb2R1bGUucmVxdWlyZSgndXRpbCcpLnR5cGVzO1xuXG4gICAgaWYgKHR5cGVzKSB7XG4gICAgICByZXR1cm4gdHlwZXM7XG4gICAgfVxuXG4gICAgLy8gTGVnYWN5IGBwcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKWAgZm9yIE5vZGUuanMgPCAxMC5cbiAgICByZXR1cm4gZnJlZVByb2Nlc3MgJiYgZnJlZVByb2Nlc3MuYmluZGluZyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nKCd1dGlsJyk7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG5leHBvcnQgZGVmYXVsdCBub2RlVXRpbDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBvYmplY3RUb1N0cmluZztcbiIsIi8qKlxuICogQ3JlYXRlcyBhIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnQgdHJhbnNmb3JtZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIGFyZ3VtZW50IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyQXJnKGZ1bmMsIHRyYW5zZm9ybSkge1xuICByZXR1cm4gZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIGZ1bmModHJhbnNmb3JtKGFyZykpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBvdmVyQXJnO1xuIiwiaW1wb3J0IGFwcGx5IGZyb20gJy4vX2FwcGx5LmpzJztcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU1heCA9IE1hdGgubWF4O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVJlc3RgIHdoaWNoIHRyYW5zZm9ybXMgdGhlIHJlc3QgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIHJlc3QgYXJyYXkgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCB0cmFuc2Zvcm0pIHtcbiAgc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQgPT09IHVuZGVmaW5lZCA/IChmdW5jLmxlbmd0aCAtIDEpIDogc3RhcnQsIDApO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChhcmdzLmxlbmd0aCAtIHN0YXJ0LCAwKSxcbiAgICAgICAgYXJyYXkgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFycmF5W2luZGV4XSA9IGFyZ3Nbc3RhcnQgKyBpbmRleF07XG4gICAgfVxuICAgIGluZGV4ID0gLTE7XG4gICAgdmFyIG90aGVyQXJncyA9IEFycmF5KHN0YXJ0ICsgMSk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBzdGFydCkge1xuICAgICAgb3RoZXJBcmdzW2luZGV4XSA9IGFyZ3NbaW5kZXhdO1xuICAgIH1cbiAgICBvdGhlckFyZ3Nbc3RhcnRdID0gdHJhbnNmb3JtKGFycmF5KTtcbiAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgb3RoZXJBcmdzKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgb3ZlclJlc3Q7XG4iLCIvKiogVXNlZCB0byBtYXRjaCB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLiAqL1xudmFyIHJlRXNjYXBlID0gLzwlLShbXFxzXFxTXSs/KSU+L2c7XG5cbmV4cG9ydCBkZWZhdWx0IHJlRXNjYXBlO1xuIiwiLyoqIFVzZWQgdG8gbWF0Y2ggdGVtcGxhdGUgZGVsaW1pdGVycy4gKi9cbnZhciByZUV2YWx1YXRlID0gLzwlKFtcXHNcXFNdKz8pJT4vZztcblxuZXhwb3J0IGRlZmF1bHQgcmVFdmFsdWF0ZTtcbiIsIi8qKiBVc2VkIHRvIG1hdGNoIHRlbXBsYXRlIGRlbGltaXRlcnMuICovXG52YXIgcmVJbnRlcnBvbGF0ZSA9IC88JT0oW1xcc1xcU10rPyklPi9nO1xuXG5leHBvcnQgZGVmYXVsdCByZUludGVycG9sYXRlO1xuIiwiaW1wb3J0IGZyZWVHbG9iYWwgZnJvbSAnLi9fZnJlZUdsb2JhbC5qcyc7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG52YXIgZnJlZVNlbGYgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZjtcblxuLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG52YXIgcm9vdCA9IGZyZWVHbG9iYWwgfHwgZnJlZVNlbGYgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxuZXhwb3J0IGRlZmF1bHQgcm9vdDtcbiIsImltcG9ydCBiYXNlU2V0VG9TdHJpbmcgZnJvbSAnLi9fYmFzZVNldFRvU3RyaW5nLmpzJztcbmltcG9ydCBzaG9ydE91dCBmcm9tICcuL19zaG9ydE91dC5qcyc7XG5cbi8qKlxuICogU2V0cyB0aGUgYHRvU3RyaW5nYCBtZXRob2Qgb2YgYGZ1bmNgIHRvIHJldHVybiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gKi9cbnZhciBzZXRUb1N0cmluZyA9IHNob3J0T3V0KGJhc2VTZXRUb1N0cmluZyk7XG5cbmV4cG9ydCBkZWZhdWx0IHNldFRvU3RyaW5nO1xuIiwiLyoqIFVzZWQgdG8gZGV0ZWN0IGhvdCBmdW5jdGlvbnMgYnkgbnVtYmVyIG9mIGNhbGxzIHdpdGhpbiBhIHNwYW4gb2YgbWlsbGlzZWNvbmRzLiAqL1xudmFyIEhPVF9DT1VOVCA9IDgwMCxcbiAgICBIT1RfU1BBTiA9IDE2O1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTm93ID0gRGF0ZS5ub3c7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQnbGwgc2hvcnQgb3V0IGFuZCBpbnZva2UgYGlkZW50aXR5YCBpbnN0ZWFkXG4gKiBvZiBgZnVuY2Agd2hlbiBpdCdzIGNhbGxlZCBgSE9UX0NPVU5UYCBvciBtb3JlIHRpbWVzIGluIGBIT1RfU1BBTmBcbiAqIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzaG9ydGFibGUgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIHNob3J0T3V0KGZ1bmMpIHtcbiAgdmFyIGNvdW50ID0gMCxcbiAgICAgIGxhc3RDYWxsZWQgPSAwO1xuXG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc3RhbXAgPSBuYXRpdmVOb3coKSxcbiAgICAgICAgcmVtYWluaW5nID0gSE9UX1NQQU4gLSAoc3RhbXAgLSBsYXN0Q2FsbGVkKTtcblxuICAgIGxhc3RDYWxsZWQgPSBzdGFtcDtcbiAgICBpZiAocmVtYWluaW5nID4gMCkge1xuICAgICAgaWYgKCsrY291bnQgPj0gSE9UX0NPVU5UKSB7XG4gICAgICAgIHJldHVybiBhcmd1bWVudHNbMF07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvdW50ID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmMuYXBwbHkodW5kZWZpbmVkLCBhcmd1bWVudHMpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBzaG9ydE91dDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYGZ1bmNgIHRvIGl0cyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICovXG5mdW5jdGlvbiB0b1NvdXJjZShmdW5jKSB7XG4gIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoZnVuYyArICcnKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG4gIHJldHVybiAnJztcbn1cblxuZXhwb3J0IGRlZmF1bHQgdG9Tb3VyY2U7XG4iLCJpbXBvcnQgY29weU9iamVjdCBmcm9tICcuL19jb3B5T2JqZWN0LmpzJztcbmltcG9ydCBjcmVhdGVBc3NpZ25lciBmcm9tICcuL19jcmVhdGVBc3NpZ25lci5qcyc7XG5pbXBvcnQga2V5c0luIGZyb20gJy4va2V5c0luLmpzJztcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmFzc2lnbkluYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYFxuICogd2hpY2ggaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBhc3NpZ25lZCB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zXG4gKiBgdW5kZWZpbmVkYCwgYXNzaWdubWVudCBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYFxuICogaXMgaW52b2tlZCB3aXRoIGZpdmUgYXJndW1lbnRzOiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlKS5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAYWxpYXMgZXh0ZW5kV2l0aFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHsuLi5PYmplY3R9IHNvdXJjZXMgVGhlIHNvdXJjZSBvYmplY3RzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBzZWUgXy5hc3NpZ25XaXRoXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gKiAgIHJldHVybiBfLmlzVW5kZWZpbmVkKG9ialZhbHVlKSA/IHNyY1ZhbHVlIDogb2JqVmFsdWU7XG4gKiB9XG4gKlxuICogdmFyIGRlZmF1bHRzID0gXy5wYXJ0aWFsUmlnaHQoXy5hc3NpZ25JbldpdGgsIGN1c3RvbWl6ZXIpO1xuICpcbiAqIGRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKi9cbnZhciBhc3NpZ25JbldpdGggPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpIHtcbiAgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QsIGN1c3RvbWl6ZXIpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGFzc2lnbkluV2l0aDtcbiIsImltcG9ydCBhcHBseSBmcm9tICcuL19hcHBseS5qcyc7XG5pbXBvcnQgYmFzZVJlc3QgZnJvbSAnLi9fYmFzZVJlc3QuanMnO1xuaW1wb3J0IGlzRXJyb3IgZnJvbSAnLi9pc0Vycm9yLmpzJztcblxuLyoqXG4gKiBBdHRlbXB0cyB0byBpbnZva2UgYGZ1bmNgLCByZXR1cm5pbmcgZWl0aGVyIHRoZSByZXN1bHQgb3IgdGhlIGNhdWdodCBlcnJvclxuICogb2JqZWN0LiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgYXJlIHByb3ZpZGVkIHRvIGBmdW5jYCB3aGVuIGl0J3MgaW52b2tlZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXR0ZW1wdC5cbiAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGBmdW5jYCByZXN1bHQgb3IgZXJyb3Igb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBBdm9pZCB0aHJvd2luZyBlcnJvcnMgZm9yIGludmFsaWQgc2VsZWN0b3JzLlxuICogdmFyIGVsZW1lbnRzID0gXy5hdHRlbXB0KGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gKiAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcbiAqIH0sICc+Xz4nKTtcbiAqXG4gKiBpZiAoXy5pc0Vycm9yKGVsZW1lbnRzKSkge1xuICogICBlbGVtZW50cyA9IFtdO1xuICogfVxuICovXG52YXIgYXR0ZW1wdCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIGFyZ3MpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXBwbHkoZnVuYywgdW5kZWZpbmVkLCBhcmdzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBpc0Vycm9yKGUpID8gZSA6IG5ldyBFcnJvcihlKTtcbiAgfVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGF0dGVtcHQ7XG4iLCIvKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYHZhbHVlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmV0dXJuIGZyb20gdGhlIG5ldyBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbnN0YW50IGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IF8udGltZXMoMiwgXy5jb25zdGFudCh7ICdhJzogMSB9KSk7XG4gKlxuICogY29uc29sZS5sb2cob2JqZWN0cyk7XG4gKiAvLyA9PiBbeyAnYSc6IDEgfSwgeyAnYSc6IDEgfV1cbiAqXG4gKiBjb25zb2xlLmxvZyhvYmplY3RzWzBdID09PSBvYmplY3RzWzFdKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gY29uc3RhbnQodmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY29uc3RhbnQ7XG4iLCIvKipcbiAqIFBlcmZvcm1zIGFcbiAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmUgZXF1aXZhbGVudC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2EnOiAxIH07XG4gKlxuICogXy5lcShvYmplY3QsIG9iamVjdCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5lcShvYmplY3QsIG90aGVyKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5lcSgnYScsICdhJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5lcSgnYScsIE9iamVjdCgnYScpKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5lcShOYU4sIE5hTik7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGVxKHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPT09IG90aGVyIHx8ICh2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZXE7XG4iLCJpbXBvcnQgZXNjYXBlSHRtbENoYXIgZnJvbSAnLi9fZXNjYXBlSHRtbENoYXIuanMnO1xuaW1wb3J0IHRvU3RyaW5nIGZyb20gJy4vdG9TdHJpbmcuanMnO1xuXG4vKiogVXNlZCB0byBtYXRjaCBIVE1MIGVudGl0aWVzIGFuZCBIVE1MIGNoYXJhY3RlcnMuICovXG52YXIgcmVVbmVzY2FwZWRIdG1sID0gL1smPD5cIiddL2csXG4gICAgcmVIYXNVbmVzY2FwZWRIdG1sID0gUmVnRXhwKHJlVW5lc2NhcGVkSHRtbC5zb3VyY2UpO1xuXG4vKipcbiAqIENvbnZlcnRzIHRoZSBjaGFyYWN0ZXJzIFwiJlwiLCBcIjxcIiwgXCI+XCIsICdcIicsIGFuZCBcIidcIiBpbiBgc3RyaW5nYCB0byB0aGVpclxuICogY29ycmVzcG9uZGluZyBIVE1MIGVudGl0aWVzLlxuICpcbiAqICoqTm90ZToqKiBObyBvdGhlciBjaGFyYWN0ZXJzIGFyZSBlc2NhcGVkLiBUbyBlc2NhcGUgYWRkaXRpb25hbFxuICogY2hhcmFjdGVycyB1c2UgYSB0aGlyZC1wYXJ0eSBsaWJyYXJ5IGxpa2UgW19oZV9dKGh0dHBzOi8vbXRocy5iZS9oZSkuXG4gKlxuICogVGhvdWdoIHRoZSBcIj5cIiBjaGFyYWN0ZXIgaXMgZXNjYXBlZCBmb3Igc3ltbWV0cnksIGNoYXJhY3RlcnMgbGlrZVxuICogXCI+XCIgYW5kIFwiL1wiIGRvbid0IG5lZWQgZXNjYXBpbmcgaW4gSFRNTCBhbmQgaGF2ZSBubyBzcGVjaWFsIG1lYW5pbmdcbiAqIHVubGVzcyB0aGV5J3JlIHBhcnQgb2YgYSB0YWcgb3IgdW5xdW90ZWQgYXR0cmlidXRlIHZhbHVlLiBTZWVcbiAqIFtNYXRoaWFzIEJ5bmVucydzIGFydGljbGVdKGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9hbWJpZ3VvdXMtYW1wZXJzYW5kcylcbiAqICh1bmRlciBcInNlbWktcmVsYXRlZCBmdW4gZmFjdFwiKSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFdoZW4gd29ya2luZyB3aXRoIEhUTUwgeW91IHNob3VsZCBhbHdheXNcbiAqIFtxdW90ZSBhdHRyaWJ1dGUgdmFsdWVzXShodHRwOi8vd29ua28uY29tL3Bvc3QvaHRtbC1lc2NhcGluZykgdG8gcmVkdWNlXG4gKiBYU1MgdmVjdG9ycy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgU3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIHN0cmluZy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5lc2NhcGUoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJyk7XG4gKiAvLyA9PiAnZnJlZCwgYmFybmV5LCAmYW1wOyBwZWJibGVzJ1xuICovXG5mdW5jdGlvbiBlc2NhcGUoc3RyaW5nKSB7XG4gIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gIHJldHVybiAoc3RyaW5nICYmIHJlSGFzVW5lc2NhcGVkSHRtbC50ZXN0KHN0cmluZykpXG4gICAgPyBzdHJpbmcucmVwbGFjZShyZVVuZXNjYXBlZEh0bWwsIGVzY2FwZUh0bWxDaGFyKVxuICAgIDogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBlc2NhcGU7XG4iLCIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50IGl0IHJlY2VpdmVzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0geyp9IHZhbHVlIEFueSB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIGB2YWx1ZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICpcbiAqIGNvbnNvbGUubG9nKF8uaWRlbnRpdHkob2JqZWN0KSA9PT0gb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaWRlbnRpdHkodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpZGVudGl0eTtcbiIsImltcG9ydCBiYXNlSXNBcmd1bWVudHMgZnJvbSAnLi9fYmFzZUlzQXJndW1lbnRzLmpzJztcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSAnLi9pc09iamVjdExpa2UuanMnO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhbiBgYXJndW1lbnRzYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcmd1bWVudHMgPSBiYXNlSXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPyBiYXNlSXNBcmd1bWVudHMgOiBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgJiZcbiAgICAhcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgaXNBcmd1bWVudHM7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxuZXhwb3J0IGRlZmF1bHQgaXNBcnJheTtcbiIsImltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJy4vaXNGdW5jdGlvbi5qcyc7XG5pbXBvcnQgaXNMZW5ndGggZnJvbSAnLi9pc0xlbmd0aC5qcyc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZS4gQSB2YWx1ZSBpcyBjb25zaWRlcmVkIGFycmF5LWxpa2UgaWYgaXQnc1xuICogbm90IGEgZnVuY3Rpb24gYW5kIGhhcyBhIGB2YWx1ZS5sZW5ndGhgIHRoYXQncyBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvclxuICogZXF1YWwgdG8gYDBgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgIWlzRnVuY3Rpb24odmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0FycmF5TGlrZTtcbiIsImltcG9ydCByb290IGZyb20gJy4vX3Jvb3QuanMnO1xuaW1wb3J0IHN0dWJGYWxzZSBmcm9tICcuL3N0dWJGYWxzZS5qcyc7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlSXNCdWZmZXIgPSBCdWZmZXIgPyBCdWZmZXIuaXNCdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgQnVmZmVyKDIpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBVaW50OEFycmF5KDIpKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0J1ZmZlciA9IG5hdGl2ZUlzQnVmZmVyIHx8IHN0dWJGYWxzZTtcblxuZXhwb3J0IGRlZmF1bHQgaXNCdWZmZXI7XG4iLCJpbXBvcnQgYmFzZUdldFRhZyBmcm9tICcuL19iYXNlR2V0VGFnLmpzJztcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSAnLi9pc09iamVjdExpa2UuanMnO1xuaW1wb3J0IGlzUGxhaW5PYmplY3QgZnJvbSAnLi9pc1BsYWluT2JqZWN0LmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGRvbUV4Y1RhZyA9ICdbb2JqZWN0IERPTUV4Y2VwdGlvbl0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBgRXJyb3JgLCBgRXZhbEVycm9yYCwgYFJhbmdlRXJyb3JgLCBgUmVmZXJlbmNlRXJyb3JgLFxuICogYFN5bnRheEVycm9yYCwgYFR5cGVFcnJvcmAsIG9yIGBVUklFcnJvcmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGVycm9yIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRXJyb3IobmV3IEVycm9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRXJyb3IoRXJyb3IpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNFcnJvcih2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICByZXR1cm4gdGFnID09IGVycm9yVGFnIHx8IHRhZyA9PSBkb21FeGNUYWcgfHxcbiAgICAodHlwZW9mIHZhbHVlLm1lc3NhZ2UgPT0gJ3N0cmluZycgJiYgdHlwZW9mIHZhbHVlLm5hbWUgPT0gJ3N0cmluZycgJiYgIWlzUGxhaW5PYmplY3QodmFsdWUpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNFcnJvcjtcbiIsImltcG9ydCBiYXNlR2V0VGFnIGZyb20gJy4vX2Jhc2VHZXRUYWcuanMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QuanMnO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXN5bmNUYWcgPSAnW29iamVjdCBBc3luY0Z1bmN0aW9uXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBwcm94eVRhZyA9ICdbb2JqZWN0IFByb3h5XSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBGdW5jdGlvbmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAvLyBpbiBTYWZhcmkgOSB3aGljaCByZXR1cm5zICdvYmplY3QnIGZvciB0eXBlZCBhcnJheXMgYW5kIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZyB8fCB0YWcgPT0gYXN5bmNUYWcgfHwgdGFnID09IHByb3h5VGFnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0Z1bmN0aW9uO1xuIiwiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGxlbmd0aCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTGVuZ3RoKDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNMZW5ndGgoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoSW5maW5pdHkpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKCczJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmXG4gICAgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0xlbmd0aDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc09iamVjdDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc09iamVjdExpa2U7XG4iLCJpbXBvcnQgYmFzZUdldFRhZyBmcm9tICcuL19iYXNlR2V0VGFnLmpzJztcbmltcG9ydCBnZXRQcm90b3R5cGUgZnJvbSAnLi9fZ2V0UHJvdG90eXBlLmpzJztcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSAnLi9pc09iamVjdExpa2UuanMnO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBpbmZlciB0aGUgYE9iamVjdGAgY29uc3RydWN0b3IuICovXG52YXIgb2JqZWN0Q3RvclN0cmluZyA9IGZ1bmNUb1N0cmluZy5jYWxsKE9iamVjdCk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIHRoYXQgaXMsIGFuIG9iamVjdCBjcmVhdGVkIGJ5IHRoZVxuICogYE9iamVjdGAgY29uc3RydWN0b3Igb3Igb25lIHdpdGggYSBgW1tQcm90b3R5cGVdXWAgb2YgYG51bGxgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC44LjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqIH1cbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoeyAneCc6IDAsICd5JzogMCB9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdExpa2UodmFsdWUpIHx8IGJhc2VHZXRUYWcodmFsdWUpICE9IG9iamVjdFRhZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcHJvdG8gPSBnZXRQcm90b3R5cGUodmFsdWUpO1xuICBpZiAocHJvdG8gPT09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgQ3RvciA9IGhhc093blByb3BlcnR5LmNhbGwocHJvdG8sICdjb25zdHJ1Y3RvcicpICYmIHByb3RvLmNvbnN0cnVjdG9yO1xuICByZXR1cm4gdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yIGluc3RhbmNlb2YgQ3RvciAmJlxuICAgIGZ1bmNUb1N0cmluZy5jYWxsKEN0b3IpID09IG9iamVjdEN0b3JTdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzUGxhaW5PYmplY3Q7XG4iLCJpbXBvcnQgYmFzZUdldFRhZyBmcm9tICcuL19iYXNlR2V0VGFnLmpzJztcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSAnLi9pc09iamVjdExpa2UuanMnO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzeW1ib2wsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1N5bWJvbChTeW1ib2wuaXRlcmF0b3IpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTeW1ib2woJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN5bWJvbFRhZyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzU3ltYm9sO1xuIiwiaW1wb3J0IGJhc2VJc1R5cGVkQXJyYXkgZnJvbSAnLi9fYmFzZUlzVHlwZWRBcnJheS5qcyc7XG5pbXBvcnQgYmFzZVVuYXJ5IGZyb20gJy4vX2Jhc2VVbmFyeS5qcyc7XG5pbXBvcnQgbm9kZVV0aWwgZnJvbSAnLi9fbm9kZVV0aWwuanMnO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1R5cGVkQXJyYXkgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1R5cGVkQXJyYXk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkobmV3IFVpbnQ4QXJyYXkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KFtdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1R5cGVkQXJyYXkgPSBub2RlSXNUeXBlZEFycmF5ID8gYmFzZVVuYXJ5KG5vZGVJc1R5cGVkQXJyYXkpIDogYmFzZUlzVHlwZWRBcnJheTtcblxuZXhwb3J0IGRlZmF1bHQgaXNUeXBlZEFycmF5O1xuIiwiaW1wb3J0IGFycmF5TGlrZUtleXMgZnJvbSAnLi9fYXJyYXlMaWtlS2V5cy5qcyc7XG5pbXBvcnQgYmFzZUtleXMgZnJvbSAnLi9fYmFzZUtleXMuanMnO1xuaW1wb3J0IGlzQXJyYXlMaWtlIGZyb20gJy4vaXNBcnJheUxpa2UuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLiBTZWUgdGhlXG4gKiBbRVMgc3BlY10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gKiBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5cyhuZXcgRm9vKTtcbiAqIC8vID0+IFsnYScsICdiJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqXG4gKiBfLmtleXMoJ2hpJyk7XG4gKiAvLyA9PiBbJzAnLCAnMSddXG4gKi9cbmZ1bmN0aW9uIGtleXMob2JqZWN0KSB7XG4gIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QpIDogYmFzZUtleXMob2JqZWN0KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQga2V5cztcbiIsImltcG9ydCBhcnJheUxpa2VLZXlzIGZyb20gJy4vX2FycmF5TGlrZUtleXMuanMnO1xuaW1wb3J0IGJhc2VLZXlzSW4gZnJvbSAnLi9fYmFzZUtleXNJbi5qcyc7XG5pbXBvcnQgaXNBcnJheUxpa2UgZnJvbSAnLi9pc0FycmF5TGlrZS5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmtleXNJbihuZXcgRm9vKTtcbiAqIC8vID0+IFsnYScsICdiJywgJ2MnXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICovXG5mdW5jdGlvbiBrZXlzSW4ob2JqZWN0KSB7XG4gIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QsIHRydWUpIDogYmFzZUtleXNJbihvYmplY3QpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBrZXlzSW47XG4iLCIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udGltZXMoMiwgXy5zdHViRmFsc2UpO1xuICogLy8gPT4gW2ZhbHNlLCBmYWxzZV1cbiAqL1xuZnVuY3Rpb24gc3R1YkZhbHNlKCkge1xuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHN0dWJGYWxzZTtcbiIsImltcG9ydCBhc3NpZ25JbldpdGggZnJvbSAnLi9hc3NpZ25JbldpdGguanMnO1xuaW1wb3J0IGF0dGVtcHQgZnJvbSAnLi9hdHRlbXB0LmpzJztcbmltcG9ydCBiYXNlVmFsdWVzIGZyb20gJy4vX2Jhc2VWYWx1ZXMuanMnO1xuaW1wb3J0IGN1c3RvbURlZmF1bHRzQXNzaWduSW4gZnJvbSAnLi9fY3VzdG9tRGVmYXVsdHNBc3NpZ25Jbi5qcyc7XG5pbXBvcnQgZXNjYXBlU3RyaW5nQ2hhciBmcm9tICcuL19lc2NhcGVTdHJpbmdDaGFyLmpzJztcbmltcG9ydCBpc0Vycm9yIGZyb20gJy4vaXNFcnJvci5qcyc7XG5pbXBvcnQgaXNJdGVyYXRlZUNhbGwgZnJvbSAnLi9faXNJdGVyYXRlZUNhbGwuanMnO1xuaW1wb3J0IGtleXMgZnJvbSAnLi9rZXlzLmpzJztcbmltcG9ydCByZUludGVycG9sYXRlIGZyb20gJy4vX3JlSW50ZXJwb2xhdGUuanMnO1xuaW1wb3J0IHRlbXBsYXRlU2V0dGluZ3MgZnJvbSAnLi90ZW1wbGF0ZVNldHRpbmdzLmpzJztcbmltcG9ydCB0b1N0cmluZyBmcm9tICcuL3RvU3RyaW5nLmpzJztcblxuLyoqIFVzZWQgdG8gbWF0Y2ggZW1wdHkgc3RyaW5nIGxpdGVyYWxzIGluIGNvbXBpbGVkIHRlbXBsYXRlIHNvdXJjZS4gKi9cbnZhciByZUVtcHR5U3RyaW5nTGVhZGluZyA9IC9cXGJfX3AgXFwrPSAnJzsvZyxcbiAgICByZUVtcHR5U3RyaW5nTWlkZGxlID0gL1xcYihfX3AgXFwrPSkgJycgXFwrL2csXG4gICAgcmVFbXB0eVN0cmluZ1RyYWlsaW5nID0gLyhfX2VcXCguKj9cXCl8XFxiX190XFwpKSBcXCtcXG4nJzsvZztcblxuLyoqXG4gKiBVc2VkIHRvIG1hdGNoXG4gKiBbRVMgdGVtcGxhdGUgZGVsaW1pdGVyc10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdGVtcGxhdGUtbGl0ZXJhbC1sZXhpY2FsLWNvbXBvbmVudHMpLlxuICovXG52YXIgcmVFc1RlbXBsYXRlID0gL1xcJFxceyhbXlxcXFx9XSooPzpcXFxcLlteXFxcXH1dKikqKVxcfS9nO1xuXG4vKiogVXNlZCB0byBlbnN1cmUgY2FwdHVyaW5nIG9yZGVyIG9mIHRlbXBsYXRlIGRlbGltaXRlcnMuICovXG52YXIgcmVOb01hdGNoID0gLygkXikvO1xuXG4vKiogVXNlZCB0byBtYXRjaCB1bmVzY2FwZWQgY2hhcmFjdGVycyBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuICovXG52YXIgcmVVbmVzY2FwZWRTdHJpbmcgPSAvWydcXG5cXHJcXHUyMDI4XFx1MjAyOVxcXFxdL2c7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvbXBpbGVkIHRlbXBsYXRlIGZ1bmN0aW9uIHRoYXQgY2FuIGludGVycG9sYXRlIGRhdGEgcHJvcGVydGllc1xuICogaW4gXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlcnMsIEhUTUwtZXNjYXBlIGludGVycG9sYXRlZCBkYXRhIHByb3BlcnRpZXMgaW5cbiAqIFwiZXNjYXBlXCIgZGVsaW1pdGVycywgYW5kIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBcImV2YWx1YXRlXCIgZGVsaW1pdGVycy4gRGF0YVxuICogcHJvcGVydGllcyBtYXkgYmUgYWNjZXNzZWQgYXMgZnJlZSB2YXJpYWJsZXMgaW4gdGhlIHRlbXBsYXRlLiBJZiBhIHNldHRpbmdcbiAqIG9iamVjdCBpcyBnaXZlbiwgaXQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGBfLnRlbXBsYXRlU2V0dGluZ3NgIHZhbHVlcy5cbiAqXG4gKiAqKk5vdGU6KiogSW4gdGhlIGRldmVsb3BtZW50IGJ1aWxkIGBfLnRlbXBsYXRlYCB1dGlsaXplc1xuICogW3NvdXJjZVVSTHNdKGh0dHA6Ly93d3cuaHRtbDVyb2Nrcy5jb20vZW4vdHV0b3JpYWxzL2RldmVsb3BlcnRvb2xzL3NvdXJjZW1hcHMvI3RvYy1zb3VyY2V1cmwpXG4gKiBmb3IgZWFzaWVyIGRlYnVnZ2luZy5cbiAqXG4gKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBwcmVjb21waWxpbmcgdGVtcGxhdGVzIHNlZVxuICogW2xvZGFzaCdzIGN1c3RvbSBidWlsZHMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9sb2Rhc2guY29tL2N1c3RvbS1idWlsZHMpLlxuICpcbiAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIENocm9tZSBleHRlbnNpb24gc2FuZGJveGVzIHNlZVxuICogW0Nocm9tZSdzIGV4dGVuc2lvbnMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3NhbmRib3hpbmdFdmFsKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgU3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHRlbXBsYXRlIHN0cmluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICogQHBhcmFtIHtSZWdFeHB9IFtvcHRpb25zLmVzY2FwZT1fLnRlbXBsYXRlU2V0dGluZ3MuZXNjYXBlXVxuICogIFRoZSBIVE1MIFwiZXNjYXBlXCIgZGVsaW1pdGVyLlxuICogQHBhcmFtIHtSZWdFeHB9IFtvcHRpb25zLmV2YWx1YXRlPV8udGVtcGxhdGVTZXR0aW5ncy5ldmFsdWF0ZV1cbiAqICBUaGUgXCJldmFsdWF0ZVwiIGRlbGltaXRlci5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucy5pbXBvcnRzPV8udGVtcGxhdGVTZXR0aW5ncy5pbXBvcnRzXVxuICogIEFuIG9iamVjdCB0byBpbXBvcnQgaW50byB0aGUgdGVtcGxhdGUgYXMgZnJlZSB2YXJpYWJsZXMuXG4gKiBAcGFyYW0ge1JlZ0V4cH0gW29wdGlvbnMuaW50ZXJwb2xhdGU9Xy50ZW1wbGF0ZVNldHRpbmdzLmludGVycG9sYXRlXVxuICogIFRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyLlxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnNvdXJjZVVSTD0ndGVtcGxhdGVTb3VyY2VzW25dJ11cbiAqICBUaGUgc291cmNlVVJMIG9mIHRoZSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy52YXJpYWJsZT0nb2JqJ11cbiAqICBUaGUgZGF0YSBvYmplY3QgdmFyaWFibGUgbmFtZS5cbiAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGNvbXBpbGVkIHRlbXBsYXRlIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBVc2UgdGhlIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIgdG8gY3JlYXRlIGEgY29tcGlsZWQgdGVtcGxhdGUuXG4gKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyA8JT0gdXNlciAlPiEnKTtcbiAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnZnJlZCcgfSk7XG4gKiAvLyA9PiAnaGVsbG8gZnJlZCEnXG4gKlxuICogLy8gVXNlIHRoZSBIVE1MIFwiZXNjYXBlXCIgZGVsaW1pdGVyIHRvIGVzY2FwZSBkYXRhIHByb3BlcnR5IHZhbHVlcy5cbiAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzxiPjwlLSB2YWx1ZSAlPjwvYj4nKTtcbiAqIGNvbXBpbGVkKHsgJ3ZhbHVlJzogJzxzY3JpcHQ+JyB9KTtcbiAqIC8vID0+ICc8Yj4mbHQ7c2NyaXB0Jmd0OzwvYj4nXG4gKlxuICogLy8gVXNlIHRoZSBcImV2YWx1YXRlXCIgZGVsaW1pdGVyIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBhbmQgZ2VuZXJhdGUgSFRNTC5cbiAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlIF8uZm9yRWFjaCh1c2VycywgZnVuY3Rpb24odXNlcikgeyAlPjxsaT48JS0gdXNlciAlPjwvbGk+PCUgfSk7ICU+Jyk7XG4gKiBjb21waWxlZCh7ICd1c2Vycyc6IFsnZnJlZCcsICdiYXJuZXknXSB9KTtcbiAqIC8vID0+ICc8bGk+ZnJlZDwvbGk+PGxpPmJhcm5leTwvbGk+J1xuICpcbiAqIC8vIFVzZSB0aGUgaW50ZXJuYWwgYHByaW50YCBmdW5jdGlvbiBpbiBcImV2YWx1YXRlXCIgZGVsaW1pdGVycy5cbiAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlIHByaW50KFwiaGVsbG8gXCIgKyB1c2VyKTsgJT4hJyk7XG4gKiBjb21waWxlZCh7ICd1c2VyJzogJ2Jhcm5leScgfSk7XG4gKiAvLyA9PiAnaGVsbG8gYmFybmV5ISdcbiAqXG4gKiAvLyBVc2UgdGhlIEVTIHRlbXBsYXRlIGxpdGVyYWwgZGVsaW1pdGVyIGFzIGFuIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIuXG4gKiAvLyBEaXNhYmxlIHN1cHBvcnQgYnkgcmVwbGFjaW5nIHRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyLlxuICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8gJHsgdXNlciB9IScpO1xuICogY29tcGlsZWQoeyAndXNlcic6ICdwZWJibGVzJyB9KTtcbiAqIC8vID0+ICdoZWxsbyBwZWJibGVzISdcbiAqXG4gKiAvLyBVc2UgYmFja3NsYXNoZXMgdG8gdHJlYXQgZGVsaW1pdGVycyBhcyBwbGFpbiB0ZXh0LlxuICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPCU9IFwiXFxcXDwlLSB2YWx1ZSAlXFxcXD5cIiAlPicpO1xuICogY29tcGlsZWQoeyAndmFsdWUnOiAnaWdub3JlZCcgfSk7XG4gKiAvLyA9PiAnPCUtIHZhbHVlICU+J1xuICpcbiAqIC8vIFVzZSB0aGUgYGltcG9ydHNgIG9wdGlvbiB0byBpbXBvcnQgYGpRdWVyeWAgYXMgYGpxYC5cbiAqIHZhciB0ZXh0ID0gJzwlIGpxLmVhY2godXNlcnMsIGZ1bmN0aW9uKHVzZXIpIHsgJT48bGk+PCUtIHVzZXIgJT48L2xpPjwlIH0pOyAlPic7XG4gKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKHRleHQsIHsgJ2ltcG9ydHMnOiB7ICdqcSc6IGpRdWVyeSB9IH0pO1xuICogY29tcGlsZWQoeyAndXNlcnMnOiBbJ2ZyZWQnLCAnYmFybmV5J10gfSk7XG4gKiAvLyA9PiAnPGxpPmZyZWQ8L2xpPjxsaT5iYXJuZXk8L2xpPidcbiAqXG4gKiAvLyBVc2UgdGhlIGBzb3VyY2VVUkxgIG9wdGlvbiB0byBzcGVjaWZ5IGEgY3VzdG9tIHNvdXJjZVVSTCBmb3IgdGhlIHRlbXBsYXRlLlxuICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8gPCU9IHVzZXIgJT4hJywgeyAnc291cmNlVVJMJzogJy9iYXNpYy9ncmVldGluZy5qc3QnIH0pO1xuICogY29tcGlsZWQoZGF0YSk7XG4gKiAvLyA9PiBGaW5kIHRoZSBzb3VyY2Ugb2YgXCJncmVldGluZy5qc3RcIiB1bmRlciB0aGUgU291cmNlcyB0YWIgb3IgUmVzb3VyY2VzIHBhbmVsIG9mIHRoZSB3ZWIgaW5zcGVjdG9yLlxuICpcbiAqIC8vIFVzZSB0aGUgYHZhcmlhYmxlYCBvcHRpb24gdG8gZW5zdXJlIGEgd2l0aC1zdGF0ZW1lbnQgaXNuJ3QgdXNlZCBpbiB0aGUgY29tcGlsZWQgdGVtcGxhdGUuXG4gKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoaSA8JT0gZGF0YS51c2VyICU+IScsIHsgJ3ZhcmlhYmxlJzogJ2RhdGEnIH0pO1xuICogY29tcGlsZWQuc291cmNlO1xuICogLy8gPT4gZnVuY3Rpb24oZGF0YSkge1xuICogLy8gICB2YXIgX190LCBfX3AgPSAnJztcbiAqIC8vICAgX19wICs9ICdoaSAnICsgKChfX3QgPSAoIGRhdGEudXNlciApKSA9PSBudWxsID8gJycgOiBfX3QpICsgJyEnO1xuICogLy8gICByZXR1cm4gX19wO1xuICogLy8gfVxuICpcbiAqIC8vIFVzZSBjdXN0b20gdGVtcGxhdGUgZGVsaW1pdGVycy5cbiAqIF8udGVtcGxhdGVTZXR0aW5ncy5pbnRlcnBvbGF0ZSA9IC97eyhbXFxzXFxTXSs/KX19L2c7XG4gKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyB7eyB1c2VyIH19IScpO1xuICogY29tcGlsZWQoeyAndXNlcic6ICdtdXN0YWNoZScgfSk7XG4gKiAvLyA9PiAnaGVsbG8gbXVzdGFjaGUhJ1xuICpcbiAqIC8vIFVzZSB0aGUgYHNvdXJjZWAgcHJvcGVydHkgdG8gaW5saW5lIGNvbXBpbGVkIHRlbXBsYXRlcyBmb3IgbWVhbmluZ2Z1bFxuICogLy8gbGluZSBudW1iZXJzIGluIGVycm9yIG1lc3NhZ2VzIGFuZCBzdGFjayB0cmFjZXMuXG4gKiBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnanN0LmpzJyksICdcXFxuICogICB2YXIgSlNUID0ge1xcXG4gKiAgICAgXCJtYWluXCI6ICcgKyBfLnRlbXBsYXRlKG1haW5UZXh0KS5zb3VyY2UgKyAnXFxcbiAqICAgfTtcXFxuICogJyk7XG4gKi9cbmZ1bmN0aW9uIHRlbXBsYXRlKHN0cmluZywgb3B0aW9ucywgZ3VhcmQpIHtcbiAgLy8gQmFzZWQgb24gSm9obiBSZXNpZydzIGB0bXBsYCBpbXBsZW1lbnRhdGlvblxuICAvLyAoaHR0cDovL2Vqb2huLm9yZy9ibG9nL2phdmFzY3JpcHQtbWljcm8tdGVtcGxhdGluZy8pXG4gIC8vIGFuZCBMYXVyYSBEb2t0b3JvdmEncyBkb1QuanMgKGh0dHBzOi8vZ2l0aHViLmNvbS9vbGFkby9kb1QpLlxuICB2YXIgc2V0dGluZ3MgPSB0ZW1wbGF0ZVNldHRpbmdzLmltcG9ydHMuXy50ZW1wbGF0ZVNldHRpbmdzIHx8IHRlbXBsYXRlU2V0dGluZ3M7XG5cbiAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHN0cmluZywgb3B0aW9ucywgZ3VhcmQpKSB7XG4gICAgb3B0aW9ucyA9IHVuZGVmaW5lZDtcbiAgfVxuICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICBvcHRpb25zID0gYXNzaWduSW5XaXRoKHt9LCBvcHRpb25zLCBzZXR0aW5ncywgY3VzdG9tRGVmYXVsdHNBc3NpZ25Jbik7XG5cbiAgdmFyIGltcG9ydHMgPSBhc3NpZ25JbldpdGgoe30sIG9wdGlvbnMuaW1wb3J0cywgc2V0dGluZ3MuaW1wb3J0cywgY3VzdG9tRGVmYXVsdHNBc3NpZ25JbiksXG4gICAgICBpbXBvcnRzS2V5cyA9IGtleXMoaW1wb3J0cyksXG4gICAgICBpbXBvcnRzVmFsdWVzID0gYmFzZVZhbHVlcyhpbXBvcnRzLCBpbXBvcnRzS2V5cyk7XG5cbiAgdmFyIGlzRXNjYXBpbmcsXG4gICAgICBpc0V2YWx1YXRpbmcsXG4gICAgICBpbmRleCA9IDAsXG4gICAgICBpbnRlcnBvbGF0ZSA9IG9wdGlvbnMuaW50ZXJwb2xhdGUgfHwgcmVOb01hdGNoLFxuICAgICAgc291cmNlID0gXCJfX3AgKz0gJ1wiO1xuXG4gIC8vIENvbXBpbGUgdGhlIHJlZ2V4cCB0byBtYXRjaCBlYWNoIGRlbGltaXRlci5cbiAgdmFyIHJlRGVsaW1pdGVycyA9IFJlZ0V4cChcbiAgICAob3B0aW9ucy5lc2NhcGUgfHwgcmVOb01hdGNoKS5zb3VyY2UgKyAnfCcgK1xuICAgIGludGVycG9sYXRlLnNvdXJjZSArICd8JyArXG4gICAgKGludGVycG9sYXRlID09PSByZUludGVycG9sYXRlID8gcmVFc1RlbXBsYXRlIDogcmVOb01hdGNoKS5zb3VyY2UgKyAnfCcgK1xuICAgIChvcHRpb25zLmV2YWx1YXRlIHx8IHJlTm9NYXRjaCkuc291cmNlICsgJ3wkJ1xuICAsICdnJyk7XG5cbiAgLy8gVXNlIGEgc291cmNlVVJMIGZvciBlYXNpZXIgZGVidWdnaW5nLlxuICAvLyBUaGUgc291cmNlVVJMIGdldHMgaW5qZWN0ZWQgaW50byB0aGUgc291cmNlIHRoYXQncyBldmFsLWVkLCBzbyBiZSBjYXJlZnVsXG4gIC8vIHdpdGggbG9va3VwIChpbiBjYXNlIG9mIGUuZy4gcHJvdG90eXBlIHBvbGx1dGlvbiksIGFuZCBzdHJpcCBuZXdsaW5lcyBpZiBhbnkuXG4gIC8vIEEgbmV3bGluZSB3b3VsZG4ndCBiZSBhIHZhbGlkIHNvdXJjZVVSTCBhbnl3YXksIGFuZCBpdCdkIGVuYWJsZSBjb2RlIGluamVjdGlvbi5cbiAgdmFyIHNvdXJjZVVSTCA9IGhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgJ3NvdXJjZVVSTCcpXG4gICAgPyAoJy8vIyBzb3VyY2VVUkw9JyArXG4gICAgICAgKG9wdGlvbnMuc291cmNlVVJMICsgJycpLnJlcGxhY2UoL1tcXHJcXG5dL2csICcgJykgK1xuICAgICAgICdcXG4nKVxuICAgIDogJyc7XG5cbiAgc3RyaW5nLnJlcGxhY2UocmVEZWxpbWl0ZXJzLCBmdW5jdGlvbihtYXRjaCwgZXNjYXBlVmFsdWUsIGludGVycG9sYXRlVmFsdWUsIGVzVGVtcGxhdGVWYWx1ZSwgZXZhbHVhdGVWYWx1ZSwgb2Zmc2V0KSB7XG4gICAgaW50ZXJwb2xhdGVWYWx1ZSB8fCAoaW50ZXJwb2xhdGVWYWx1ZSA9IGVzVGVtcGxhdGVWYWx1ZSk7XG5cbiAgICAvLyBFc2NhcGUgY2hhcmFjdGVycyB0aGF0IGNhbid0IGJlIGluY2x1ZGVkIGluIHN0cmluZyBsaXRlcmFscy5cbiAgICBzb3VyY2UgKz0gc3RyaW5nLnNsaWNlKGluZGV4LCBvZmZzZXQpLnJlcGxhY2UocmVVbmVzY2FwZWRTdHJpbmcsIGVzY2FwZVN0cmluZ0NoYXIpO1xuXG4gICAgLy8gUmVwbGFjZSBkZWxpbWl0ZXJzIHdpdGggc25pcHBldHMuXG4gICAgaWYgKGVzY2FwZVZhbHVlKSB7XG4gICAgICBpc0VzY2FwaW5nID0gdHJ1ZTtcbiAgICAgIHNvdXJjZSArPSBcIicgK1xcbl9fZShcIiArIGVzY2FwZVZhbHVlICsgXCIpICtcXG4nXCI7XG4gICAgfVxuICAgIGlmIChldmFsdWF0ZVZhbHVlKSB7XG4gICAgICBpc0V2YWx1YXRpbmcgPSB0cnVlO1xuICAgICAgc291cmNlICs9IFwiJztcXG5cIiArIGV2YWx1YXRlVmFsdWUgKyBcIjtcXG5fX3AgKz0gJ1wiO1xuICAgIH1cbiAgICBpZiAoaW50ZXJwb2xhdGVWYWx1ZSkge1xuICAgICAgc291cmNlICs9IFwiJyArXFxuKChfX3QgPSAoXCIgKyBpbnRlcnBvbGF0ZVZhbHVlICsgXCIpKSA9PSBudWxsID8gJycgOiBfX3QpICtcXG4nXCI7XG4gICAgfVxuICAgIGluZGV4ID0gb2Zmc2V0ICsgbWF0Y2gubGVuZ3RoO1xuXG4gICAgLy8gVGhlIEpTIGVuZ2luZSBlbWJlZGRlZCBpbiBBZG9iZSBwcm9kdWN0cyBuZWVkcyBgbWF0Y2hgIHJldHVybmVkIGluXG4gICAgLy8gb3JkZXIgdG8gcHJvZHVjZSB0aGUgY29ycmVjdCBgb2Zmc2V0YCB2YWx1ZS5cbiAgICByZXR1cm4gbWF0Y2g7XG4gIH0pO1xuXG4gIHNvdXJjZSArPSBcIic7XFxuXCI7XG5cbiAgLy8gSWYgYHZhcmlhYmxlYCBpcyBub3Qgc3BlY2lmaWVkIHdyYXAgYSB3aXRoLXN0YXRlbWVudCBhcm91bmQgdGhlIGdlbmVyYXRlZFxuICAvLyBjb2RlIHRvIGFkZCB0aGUgZGF0YSBvYmplY3QgdG8gdGhlIHRvcCBvZiB0aGUgc2NvcGUgY2hhaW4uXG4gIC8vIExpa2Ugd2l0aCBzb3VyY2VVUkwsIHdlIHRha2UgY2FyZSB0byBub3QgY2hlY2sgdGhlIG9wdGlvbidzIHByb3RvdHlwZSxcbiAgLy8gYXMgdGhpcyBjb25maWd1cmF0aW9uIGlzIGEgY29kZSBpbmplY3Rpb24gdmVjdG9yLlxuICB2YXIgdmFyaWFibGUgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9wdGlvbnMsICd2YXJpYWJsZScpICYmIG9wdGlvbnMudmFyaWFibGU7XG4gIGlmICghdmFyaWFibGUpIHtcbiAgICBzb3VyY2UgPSAnd2l0aCAob2JqKSB7XFxuJyArIHNvdXJjZSArICdcXG59XFxuJztcbiAgfVxuICAvLyBDbGVhbnVwIGNvZGUgYnkgc3RyaXBwaW5nIGVtcHR5IHN0cmluZ3MuXG4gIHNvdXJjZSA9IChpc0V2YWx1YXRpbmcgPyBzb3VyY2UucmVwbGFjZShyZUVtcHR5U3RyaW5nTGVhZGluZywgJycpIDogc291cmNlKVxuICAgIC5yZXBsYWNlKHJlRW1wdHlTdHJpbmdNaWRkbGUsICckMScpXG4gICAgLnJlcGxhY2UocmVFbXB0eVN0cmluZ1RyYWlsaW5nLCAnJDE7Jyk7XG5cbiAgLy8gRnJhbWUgY29kZSBhcyB0aGUgZnVuY3Rpb24gYm9keS5cbiAgc291cmNlID0gJ2Z1bmN0aW9uKCcgKyAodmFyaWFibGUgfHwgJ29iaicpICsgJykge1xcbicgK1xuICAgICh2YXJpYWJsZVxuICAgICAgPyAnJ1xuICAgICAgOiAnb2JqIHx8IChvYmogPSB7fSk7XFxuJ1xuICAgICkgK1xuICAgIFwidmFyIF9fdCwgX19wID0gJydcIiArXG4gICAgKGlzRXNjYXBpbmdcbiAgICAgICA/ICcsIF9fZSA9IF8uZXNjYXBlJ1xuICAgICAgIDogJydcbiAgICApICtcbiAgICAoaXNFdmFsdWF0aW5nXG4gICAgICA/ICcsIF9faiA9IEFycmF5LnByb3RvdHlwZS5qb2luO1xcbicgK1xuICAgICAgICBcImZ1bmN0aW9uIHByaW50KCkgeyBfX3AgKz0gX19qLmNhbGwoYXJndW1lbnRzLCAnJykgfVxcblwiXG4gICAgICA6ICc7XFxuJ1xuICAgICkgK1xuICAgIHNvdXJjZSArXG4gICAgJ3JldHVybiBfX3BcXG59JztcblxuICB2YXIgcmVzdWx0ID0gYXR0ZW1wdChmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gRnVuY3Rpb24oaW1wb3J0c0tleXMsIHNvdXJjZVVSTCArICdyZXR1cm4gJyArIHNvdXJjZSlcbiAgICAgIC5hcHBseSh1bmRlZmluZWQsIGltcG9ydHNWYWx1ZXMpO1xuICB9KTtcblxuICAvLyBQcm92aWRlIHRoZSBjb21waWxlZCBmdW5jdGlvbidzIHNvdXJjZSBieSBpdHMgYHRvU3RyaW5nYCBtZXRob2Qgb3JcbiAgLy8gdGhlIGBzb3VyY2VgIHByb3BlcnR5IGFzIGEgY29udmVuaWVuY2UgZm9yIGlubGluaW5nIGNvbXBpbGVkIHRlbXBsYXRlcy5cbiAgcmVzdWx0LnNvdXJjZSA9IHNvdXJjZTtcbiAgaWYgKGlzRXJyb3IocmVzdWx0KSkge1xuICAgIHRocm93IHJlc3VsdDtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCB0ZW1wbGF0ZTtcbiIsImltcG9ydCBlc2NhcGUgZnJvbSAnLi9lc2NhcGUuanMnO1xuaW1wb3J0IHJlRXNjYXBlIGZyb20gJy4vX3JlRXNjYXBlLmpzJztcbmltcG9ydCByZUV2YWx1YXRlIGZyb20gJy4vX3JlRXZhbHVhdGUuanMnO1xuaW1wb3J0IHJlSW50ZXJwb2xhdGUgZnJvbSAnLi9fcmVJbnRlcnBvbGF0ZS5qcyc7XG5cbi8qKlxuICogQnkgZGVmYXVsdCwgdGhlIHRlbXBsYXRlIGRlbGltaXRlcnMgdXNlZCBieSBsb2Rhc2ggYXJlIGxpa2UgdGhvc2UgaW5cbiAqIGVtYmVkZGVkIFJ1YnkgKEVSQikgYXMgd2VsbCBhcyBFUzIwMTUgdGVtcGxhdGUgc3RyaW5ncy4gQ2hhbmdlIHRoZVxuICogZm9sbG93aW5nIHRlbXBsYXRlIHNldHRpbmdzIHRvIHVzZSBhbHRlcm5hdGl2ZSBkZWxpbWl0ZXJzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAdHlwZSB7T2JqZWN0fVxuICovXG52YXIgdGVtcGxhdGVTZXR0aW5ncyA9IHtcblxuICAvKipcbiAgICogVXNlZCB0byBkZXRlY3QgYGRhdGFgIHByb3BlcnR5IHZhbHVlcyB0byBiZSBIVE1MLWVzY2FwZWQuXG4gICAqXG4gICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICogQHR5cGUge1JlZ0V4cH1cbiAgICovXG4gICdlc2NhcGUnOiByZUVzY2FwZSxcblxuICAvKipcbiAgICogVXNlZCB0byBkZXRlY3QgY29kZSB0byBiZSBldmFsdWF0ZWQuXG4gICAqXG4gICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICogQHR5cGUge1JlZ0V4cH1cbiAgICovXG4gICdldmFsdWF0ZSc6IHJlRXZhbHVhdGUsXG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gZGV0ZWN0IGBkYXRhYCBwcm9wZXJ0eSB2YWx1ZXMgdG8gaW5qZWN0LlxuICAgKlxuICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAqIEB0eXBlIHtSZWdFeHB9XG4gICAqL1xuICAnaW50ZXJwb2xhdGUnOiByZUludGVycG9sYXRlLFxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHJlZmVyZW5jZSB0aGUgZGF0YSBvYmplY3QgaW4gdGhlIHRlbXBsYXRlIHRleHQuXG4gICAqXG4gICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gICd2YXJpYWJsZSc6ICcnLFxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGltcG9ydCB2YXJpYWJsZXMgaW50byB0aGUgY29tcGlsZWQgdGVtcGxhdGUuXG4gICAqXG4gICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gICdpbXBvcnRzJzoge1xuXG4gICAgLyoqXG4gICAgICogQSByZWZlcmVuY2UgdG8gdGhlIGBsb2Rhc2hgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5ncy5pbXBvcnRzXG4gICAgICogQHR5cGUge0Z1bmN0aW9ufVxuICAgICAqL1xuICAgICdfJzogeyAnZXNjYXBlJzogZXNjYXBlIH1cbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgdGVtcGxhdGVTZXR0aW5ncztcbiIsImltcG9ydCBiYXNlVG9TdHJpbmcgZnJvbSAnLi9fYmFzZVRvU3RyaW5nLmpzJztcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nLiBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgZm9yIGBudWxsYFxuICogYW5kIGB1bmRlZmluZWRgIHZhbHVlcy4gVGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvU3RyaW5nKG51bGwpO1xuICogLy8gPT4gJydcbiAqXG4gKiBfLnRvU3RyaW5nKC0wKTtcbiAqIC8vID0+ICctMCdcbiAqXG4gKiBfLnRvU3RyaW5nKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiAnMSwyLDMnXG4gKi9cbmZ1bmN0aW9uIHRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJycgOiBiYXNlVG9TdHJpbmcodmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB0b1N0cmluZztcbiIsIm1vZHVsZS5leHBvcnRzID0gXCIvKipcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAqIEdlbmVyaWMgU3R5bGVzXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4qL1xcbmFnLWdyaWQsIGFnLWdyaWQtYW5ndWxhciwgYWctZ3JpZC1uZzIsIGFnLWdyaWQtcG9seW1lciwgYWctZ3JpZC1hdXJlbGlhIHtcXG4gIGRpc3BsYXk6IGJsb2NrOyB9XFxuXFxuLmFnLWhpZGRlbiB7XFxuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cXG5cXG4uYWctaW52aXNpYmxlIHtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50OyB9XFxuXFxuLmFnLWZhZGVkIHtcXG4gIG9wYWNpdHk6IDAuMzsgfVxcblxcbi5hZy13aWR0aC1oYWxmIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIHdpZHRoOiA1MCUgIWltcG9ydGFudDsgfVxcblxcbi5hZy11bnNlbGVjdGFibGUge1xcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50O1xcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50O1xcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lICFpbXBvcnRhbnQ7XFxuICB1c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50OyB9XFxuXFxuLmFnLXNlbGVjdGFibGUge1xcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogdGV4dCAhaW1wb3J0YW50O1xcbiAgLW1vei11c2VyLXNlbGVjdDogdGV4dCAhaW1wb3J0YW50O1xcbiAgLW1zLXVzZXItc2VsZWN0OiB0ZXh0ICFpbXBvcnRhbnQ7XFxuICB1c2VyLXNlbGVjdDogdGV4dCAhaW1wb3J0YW50OyB9XFxuXFxuLmFnLXNlbGVjdC1hZ2ctZnVuYy1wb3B1cCB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7IH1cXG5cXG4uYWctaW5wdXQtd3JhcHBlciB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAtbXMtZmxleDogMSAxIGF1dG87XFxuICBmbGV4OiAxIDEgYXV0bztcXG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBvdmVyZmxvdzogaGlkZGVuOyB9XFxuXFxuLmFnLXNoYWtlLWxlZnQtdG8tcmlnaHQge1xcbiAgLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOiBhbHRlcm5hdGU7XFxuICBhbmltYXRpb24tZGlyZWN0aW9uOiBhbHRlcm5hdGU7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMC4ycztcXG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMC4ycztcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XFxuICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGFnLXNoYWtlLWxlZnQtdG8tcmlnaHQ7XFxuICBhbmltYXRpb24tbmFtZTogYWctc2hha2UtbGVmdC10by1yaWdodDsgfVxcblxcbkAtd2Via2l0LWtleWZyYW1lcyBhZy1zaGFrZS1sZWZ0LXRvLXJpZ2h0IHtcXG4gIGZyb20ge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDZweDtcXG4gICAgcGFkZGluZy1yaWdodDogMnB4OyB9XFxuICB0byB7XFxuICAgIHBhZGRpbmctbGVmdDogMnB4O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA2cHg7IH0gfVxcblxcbkBrZXlmcmFtZXMgYWctc2hha2UtbGVmdC10by1yaWdodCB7XFxuICBmcm9tIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA2cHg7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDJweDsgfVxcbiAgdG8ge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDJweDtcXG4gICAgcGFkZGluZy1yaWdodDogNnB4OyB9IH1cXG5cXG4uYWctcm9vdC13cmFwcGVyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG4gIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxcbiAgLmFnLXJvb3Qtd3JhcHBlci5hZy1sYXlvdXQtbm9ybWFsIHtcXG4gICAgaGVpZ2h0OiAxMDAlOyB9XFxuICAuYWctcm9vdC13cmFwcGVyIC5hZy13YXRlcm1hcmsge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGJvdHRvbTogMTBweDtcXG4gICAgcmlnaHQ6IDI1cHg7XFxuICAgIG9wYWNpdHk6IDAuNTtcXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDFzIGVhc2Utb3V0IDNzO1xcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDFzIGVhc2Utb3V0IDNzOyB9XFxuICAgIC5hZy1yb290LXdyYXBwZXIgLmFnLXdhdGVybWFyazpiZWZvcmUge1xcbiAgICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NEtQSE4yWnlCM2FXUjBhRDBpTkRrMGNIZ2lJR2hsYVdkb2REMGlNak01Y0hnaUlIWnBaWGRDYjNnOUlqQWdNQ0EwT1RRZ01qTTVJaUIyWlhKemFXOXVQU0l4TGpFaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02ZUd4cGJtczlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1RrdmVHeHBibXNpUGdvZ0lDQWdQQ0V0TFNCSFpXNWxjbUYwYjNJNklGTnJaWFJqYUNBME55NHhJQ2cwTlRReU1pa2dMU0JvZEhSd09pOHZkM2QzTG1KdmFHVnRhV0Z1WTI5a2FXNW5MbU52YlM5emEyVjBZMmdnTFMwK0NpQWdJQ0E4ZEdsMGJHVStURzluYnp3dmRHbDBiR1UrQ2lBZ0lDQThaR1Z6WXo1RGNtVmhkR1ZrSUhkcGRHZ2dVMnRsZEdOb0xqd3ZaR1Z6WXo0S0lDQWdJRHhrWldaelBnb2dJQ0FnSUNBZ0lEeHdZWFJvSUdROUlrMHdMall4TWpnME9Ua3pNU3d4TURnZ1REQXVOakV5T0RRNU9UTXhMRFkzTGpRMU9UWXpOelFnVERBdU5qRXlPRFE1T1RNeExEWTNMalExT1RZek56UWdRekF1TmpFeU9EUTVPVE14TERZeUxqRXdNRFkxTXpZZ015NDBOekU0TXpNM09DdzFOeTR4TkRnM05EZ3pJRGd1TVRFeU9EUTVPVE1zTlRRdU5EWTVNalUyTkNCTU9UZ3VNekEyTkRJMUxESXVNemsxT1RjeE5UY2dURGs0TGpNd05qUXlOU3d5TGpNNU5UazNNVFUzSUVNeE1ESXVPVFEzTkRReExDMHdMakk0TXpVeU1ETTFPQ0F4TURndU5qWTFOREE1TEMwd0xqSTRNelV5TURNMU9DQXhNVE11TXpBMk5ESTFMREl1TXprMU9UY3hOVGNnVERFeE15NHpNRFkwTWpVc01pNHpPVFU1TnpFMU55Qk1NakF6TGpVc05UUXVORFk1TWpVMk5DQk1NakF6TGpVc05UUXVORFk1TWpVMk5DQkRNakE0TGpFME1UQXhOaXcxTnk0eE5EZzNORGd6SURJeE1TdzJNaTR4TURBMk5UTTJJREl4TVN3Mk55NDBOVGsyTXpjMElFd3lNVEVzTVRNNElFd3hPREVzTVRNNElFd3hPREF1T1RrM01EUXhMRGt6TGprNU9UazVPVGdnVERFNE1DNDVPVFl3TXpJc09UTXVPVGs1T1RrNU9TQkRNVGd3TGprNU5UUTNOU3c0TlM0M01UWXhNakkySURFM05DNHlOems1TURrc056a3VNREF4TURBNE55QXhOalV1T1RrMk1ETXlMRGM1TGpBd01UQXdPRGNnVERFeU1pdzNPQzQ1T1RrNU9UazVJRU14TVRNdU56RTFOekk1TERjNExqazVPVGs1T1RrZ01UQTNMRGcxTGpjeE5UY3lPRFlnTVRBM0xEa3pMams1T1RrNU9Ua2dUREV3Tnl3eE16WXVNREUxTmpJeklFd3hNRGNzTVRNMkxqQXhOVFl5TXlCRE1UQTNMREUwTkM0eU9UazRPVFVnTVRFekxqY3hOVGN5T1N3eE5URXVNREUxTmpJeklERXlNaXd4TlRFdU1ERTFOakl6SUV3eE5qZ3NNVFV4TGpBeE5UWXlNeUJNTVRZNExERTJNeUJETVRZNExERTJOQzQyTlRZNE5UUWdNVFkyTGpZMU5qZzFOQ3d4TmpZZ01UWTFMREUyTmlCTU1USXdMREUyTmlCTU1USXdMREUzT1NCTU1UWTFMams1TmpBek1pd3hOemtnVERFMk5TNDVPVFl3TXpJc01UYzRMams1TnpnM055QkRNVGMwTGpJM09UUTNOQ3d4TnpndU9UazNPRGMzSURFNE1DNDVPVFE0Tml3eE56SXVNamd6TkRReUlERTRNQzQ1T1RZd016SXNNVFkwSUV3eE9ERXNNVFV3TGprMk1EVTFOQ0JNTWpFeExERTFNQzQ1TmpBMU5UUWdUREl4TVN3eE56RXVOakEyTWpBM0lFd3lNVEVzTVRjeExqWXdOakl3TnlCRE1qRXhMREUzTmk0NU5qVXhPVEVnTWpBNExqRTBNVEF4Tml3eE9ERXVPVEUzTURrMklESXdNeTQxTERFNE5DNDFPVFkxT0RnZ1RERXhNeTR6TURZME1qVXNNak0yTGpZMk9UZzNNeUJNTVRFekxqTXdOalF5TlN3eU16WXVOalk1T0RjeklFTXhNRGd1TmpZMU5EQTVMREl6T1M0ek5Ea3pOalVnTVRBeUxqazBOelEwTVN3eU16a3VNelE1TXpZMUlEazRMak13TmpReU5Td3lNell1TmpZNU9EY3pJRXc0TGpFeE1qZzBPVGt6TERFNE5DNDFPVFkxT0RnZ1REZ3VNVEV5T0RRNU9UTXNNVGcwTGpVNU5qVTRPQ0JETXk0ME56RTRNek0zT0N3eE9ERXVPVEUzTURrMklEQXVOakV5T0RRNU9UTXhMREUzTmk0NU5qVXhPVEVnTUM0Mk1USTRORGs1TXpFc01UY3hMall3TmpJd055Qk1NQzQyTVRJNE5EazVNekVzTVRJeElFd3lOeXd4TWpFZ1RESTNMREV6TmlCRE1qY3NNVFEwTGpJNE5ESTNNU0F6TXk0M01UVTNNamczTERFMU1TQTBNaXd4TlRFZ1REUXlMREUxTVNCTU1UQXdMREUxTVNCTU1UQXdMRGswSUVNeE1EQXNPRFV1TnpFMU56STRPQ0E1TXk0eU9EUXlOekV5TERjNUlEZzFMRGM1SUV3eU55dzNPU0JNTWpjc09USWdURGcwTERreUlFTTROUzQyTlRZNE5UUXlMRGt5SURnM0xEa3pMak0wTXpFME5UZ2dPRGNzT1RVZ1REZzNMRGsxSUV3NE55d3hNRGdnVERBdU5qRXlPRFE1T1RNeExERXdPQ0JhSWlCcFpEMGljR0YwYUMweElqNDhMM0JoZEdnK0NpQWdJQ0E4TDJSbFpuTStDaUFnSUNBOFp5QnBaRDBpVTNsdFltOXNjeUlnYzNSeWIydGxQU0p1YjI1bElpQnpkSEp2YTJVdGQybGtkR2c5SWpFaUlHWnBiR3c5SW01dmJtVWlJR1pwYkd3dGNuVnNaVDBpWlhabGJtOWtaQ0krQ2lBZ0lDQWdJQ0FnUEdjZ2FXUTlJa3h2WjI4aVBnb2dJQ0FnSUNBZ0lDQWdJQ0E4Y0dGMGFDQmtQU0pOTkRjM0xEVTFJRXcwT1RRc05UVWdURFE1TkN3eE5URWdURFF6TlN3eE5URWdRelF5Tmk0M01UVTNNamtzTVRVeElEUXlNQ3d4TkRRdU1qZzBNamN4SURReU1Dd3hNellnVERReU1DdzVOaUJETkRJd0xEZzNMamN4TlRjeU9EZ2dOREkyTGpjeE5UY3lPU3c0TVNBME16VXNPREVnVERRek5TdzRNU0JNTkRjM0xEZ3hJRXcwTnpjc05UVWdXaUJOTkRRd0xEazRJRU0wTXpndU16UXpNVFEyTERrNElEUXpOeXc1T1M0ek5ETXhORFU0SURRek55d3hNREVnVERRek55d3hNekVnUXpRek55d3hNekl1TmpVMk9EVTBJRFF6T0M0ek5ETXhORFlzTVRNMElEUTBNQ3d4TXpRZ1REUTNOeXd4TXpRZ1REUTNOeXc1T0NCTU5EUXdMRGs0SUZvaUlHbGtQU0prSWlCbWFXeHNQU0lqUmtaR1JrWkdJajQ4TDNCaGRHZytDaUFnSUNBZ0lDQWdJQ0FnSUR4bklHbGtQU0pwSWlCMGNtRnVjMlp2Y20wOUluUnlZVzV6YkdGMFpTZ3pPVFl1TURBd01EQXdMQ0ExTlM0d01EQXdNREFwSWo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4d2IyeDVaMjl1SUdsa1BTSlFZWFJvTFRZaUlHWnBiR3c5SWlOR1JrWkdSa1lpSUhCdmFXNTBjejBpTUNBeU5pQXhOeUF5TmlBeE55QTVOaUF3SURrMklqNDhMM0J2YkhsbmIyNCtDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjRzlzZVdkdmJpQnBaRDBpVUdGMGFDMDNJaUJtYVd4c1BTSWpSVEV4UmpJeUlpQndiMmx1ZEhNOUlqQWdNUzR4TXpZNE5qZ3pPR1V0TVRNZ01UY2dNUzR4TXpZNE5qZ3pPR1V0TVRNZ01UY2dNVGNnTUNBeE55SStQQzl3YjJ4NVoyOXVQZ29nSUNBZ0lDQWdJQ0FnSUNBOEwyYytDaUFnSUNBZ0lDQWdJQ0FnSUR4d1lYUm9JR1E5SWswek16RXNNVFV4SUV3ek5EZ3NNVFV4SUV3ek5EZ3NNVEF4SUV3ek5EZ3NNVEF4SUVNek5EZ3NPVGt1TXpRek1UUTFPQ0F6TkRrdU16UXpNVFEyTERrNElETTFNU3c1T0NCTU16ZzVMRGs0SUV3ek9Ea3NPREVnVERNME5pdzRNU0JNTXpRMkxEZ3hJRU16TXpjdU56RTFOekk1TERneElETXpNU3c0Tnk0M01UVTNNamc0SURNek1TdzVOaUJNTXpNeExERTFNU0JhSWlCcFpEMGljaUlnWm1sc2JEMGlJMFpHUmtaR1JpSStQQzl3WVhSb1Bnb2dJQ0FnSUNBZ0lDQWdJQ0E4Y0dGMGFDQmtQU0pOTXpJMExEZzJJRXd6TWpRc056WWdURE15TkN3M05pQkRNekkwTERZM0xqY3hOVGN5T0RnZ016RTNMakk0TkRJM01TdzJNU0F6TURrc05qRWdUREkwT1N3Mk1TQk1NalE1TERZeElFTXlOREF1TnpFMU56STVMRFl4SURJek5DdzJOeTQzTVRVM01qZzRJREl6TkN3M05pQk1Nak0wTERFek5pQk1Nak0wTERFek5pQkRNak0wTERFME5DNHlPRFF5TnpFZ01qUXdMamN4TlRjeU9Td3hOVEVnTWpRNUxERTFNU0JNTXpBNUxERTFNU0JNTXpBNUxERTFNU0JETXpFM0xqSTROREkzTVN3eE5URWdNekkwTERFME5DNHlPRFF5TnpFZ016STBMREV6TmlCTU16STBMREV3TUNCTU1qZzNMREV3TUNCTU1qZzNMREV4TnlCTU16QTNMREV4TnlCTU16QTNMREV6TVNCTU16QTNMREV6TVNCRE16QTNMREV6TWk0Mk5UWTROVFFnTXpBMUxqWTFOamcxTkN3eE16UWdNekEwTERFek5DQk1NalUwTERFek5DQk1NalUwTERFek5DQkRNalV5TGpNME16RTBOaXd4TXpRZ01qVXhMREV6TWk0Mk5UWTROVFFnTWpVeExERXpNU0JNTWpVeExEZ3hJRXd5TlRFc09ERWdRekkxTVN3M09TNHpORE14TkRVNElESTFNaTR6TkRNeE5EWXNOemdnTWpVMExEYzRJRXd6TURRc056Z2dURE13TkN3M09DQkRNekExTGpZMU5qZzFOQ3czT0NBek1EY3NOemt1TXpRek1UUTFPQ0F6TURjc09ERWdURE13Tnl3NE5pQk1NekkwTERnMklGb2lJR2xrUFNKSElpQm1hV3hzUFNJalJrWkdSa1pHSWo0OEwzQmhkR2crQ2lBZ0lDQWdJQ0FnSUNBZ0lEeG5JR2xrUFNKaFp5SStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThaeUJwWkQwaVEyOXRZbWx1WldRdFUyaGhjR1VpUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHRZWE5ySUdsa1BTSnRZWE5yTFRJaUlHWnBiR3c5SW5kb2FYUmxJajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSFZ6WlNCNGJHbHVhenBvY21WbVBTSWpjR0YwYUMweElqNDhMM1Z6WlQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThMMjFoYzJzK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSFZ6WlNCbWFXeHNQU0lqUlRFeFJqSXlJaUI0YkdsdWF6cG9jbVZtUFNJamNHRjBhQzB4SWo0OEwzVnpaVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHd2Wno0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpXTjBJR2xrUFNKbklpQm1hV3hzUFNJalJURXhSakl5SWlCNFBTSXhNakFpSUhrOUlqa3lJaUIzYVdSMGFEMGlORGdpSUdobGFXZG9kRDBpTkRZaUlISjRQU0l6SWo0OEwzSmxZM1ErQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y0dGMGFDQmtQU0pOTkRBc01USXhJRXc0Tnl3eE1qRWdURGczTERFek9DQk1ORE1zTVRNNElFdzBNeXd4TXpnZ1F6UXhMak0wTXpFME5UZ3NNVE00SURRd0xERXpOaTQyTlRZNE5UUWdOREFzTVRNMUlFdzBNQ3d4TWpFZ1dpSWdhV1E5SWtOdmJXSnBibVZrTFZOb1lYQmxJaUJtYVd4c1BTSWpSVEV4UmpJeUlqNDhMM0JoZEdnK0NpQWdJQ0FnSUNBZ0lDQWdJRHd2Wno0S0lDQWdJQ0FnSUNBOEwyYytDaUFnSUNBOEwyYytDand2YzNablBnPT0pO1xcbiAgICAgIC13ZWJraXQtZmlsdGVyOiBpbnZlcnQoNTAlKTtcXG4gICAgICBmaWx0ZXI6IGludmVydCg1MCUpO1xcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICAgICAgYmFja2dyb3VuZC1zaXplOiAxMTBweCA2MHB4O1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIGhlaWdodDogNjBweDtcXG4gICAgICB3aWR0aDogMTEwcHg7IH1cXG4gICAgLmFnLXJvb3Qtd3JhcHBlciAuYWctd2F0ZXJtYXJrIC5hZy13YXRlcm1hcmstdGV4dCB7XFxuICAgICAgb3BhY2l0eTogMC41O1xcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgICAgIGZvbnQtZmFtaWx5OiBJbXBhY3Q7XFxuICAgICAgZm9udC1zaXplOiAxOXB4OyB9XFxuXFxuLmFnLXJvb3Qtd3JhcHBlci1ib2R5IHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsO1xcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdztcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7IH1cXG4gIC5hZy1yb290LXdyYXBwZXItYm9keS5hZy1sYXlvdXQtbm9ybWFsIHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICBmbGV4OiAxIDEgYXV0bztcXG4gICAgaGVpZ2h0OiAwO1xcbiAgICBtaW4taGVpZ2h0OiAwOyB9XFxuXFxuLmFnLXJvb3Qge1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH1cXG4gIC5hZy1yb290LmFnLWxheW91dC1ub3JtYWwsIC5hZy1yb290LmFnLWxheW91dC1hdXRvLWhlaWdodCB7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgIC1tcy1mbGV4OiAxIDEgYXV0bztcXG4gICAgZmxleDogMSAxIGF1dG87XFxuICAgIHdpZHRoOiAwOyB9XFxuICAuYWctcm9vdC5hZy1sYXlvdXQtbm9ybWFsIHtcXG4gICAgaGVpZ2h0OiAxMDAlOyB9XFxuXFxuLyoqXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gKiBWaWV3cG9ydHNcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiovXFxuLmFnLWhlYWRlci12aWV3cG9ydCxcXG4uYWctZmxvYXRpbmctdG9wLXZpZXdwb3J0LFxcbi5hZy1ib2R5LXZpZXdwb3J0LFxcbi5hZy1waW5uZWQtbGVmdC1jb2xzLXZpZXdwb3J0LFxcbi5hZy1jZW50ZXItY29scy12aWV3cG9ydCxcXG4uYWctcGlubmVkLXJpZ2h0LWNvbHMtdmlld3BvcnQsXFxuLmFnLWZsb2F0aW5nLWJvdHRvbS12aWV3cG9ydCxcXG4uYWctYm9keS1ob3Jpem9udGFsLXNjcm9sbC12aWV3cG9ydCxcXG4uYWctdmlydHVhbC1saXN0LXZpZXdwb3J0IHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIG1pbi13aWR0aDogMHB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAtbXMtZmxleDogMSAxIGF1dG87XFxuICBmbGV4OiAxIDEgYXV0bzsgfVxcblxcbi5hZy1ib2R5LXZpZXdwb3J0IHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4OyB9XFxuICAuYWctYm9keS12aWV3cG9ydC5hZy1sYXlvdXQtbm9ybWFsIHtcXG4gICAgb3ZlcmZsb3cteTogYXV0bztcXG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOyB9XFxuICAuYWctYm9keS12aWV3cG9ydDpub3QoLmFnLWxheW91dC1wcmludCkuYWctZm9yY2UtdmVydGljYWwtc2Nyb2xsIHtcXG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsOyB9XFxuXFxuLmFnLXBpbm5lZC1sZWZ0LWNvbHMtdmlld3BvcnQsIC5hZy1waW5uZWQtcmlnaHQtY29scy12aWV3cG9ydCB7XFxuICAtd2Via2l0LWJveC1mbGV4OiAxMDAwO1xcbiAgLW1zLWZsZXgtcG9zaXRpdmU6IDEwMDA7XFxuICBmbGV4LWdyb3c6IDEwMDA7IH1cXG5cXG4uYWctY2VudGVyLWNvbHMtdmlld3BvcnQge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBvdmVyZmxvdy14OiBhdXRvOyB9XFxuXFxuLmFnLWJvZHktaG9yaXpvbnRhbC1zY3JvbGwtdmlld3BvcnQge1xcbiAgb3ZlcmZsb3cteDogc2Nyb2xsOyB9XFxuXFxuLmFnLXZpcnR1YWwtbGlzdC12aWV3cG9ydCB7XFxuICBvdmVyZmxvdzogYXV0bztcXG4gIHdpZHRoOiAxMDAlOyB9XFxuXFxuLyoqXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gKiBDb250YWluZXJzXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4qL1xcbi5hZy1oZWFkZXItY29udGFpbmVyLFxcbi5hZy1mbG9hdGluZy10b3AtY29udGFpbmVyLFxcbi5hZy1ib2R5LWNvbnRhaW5lcixcXG4uYWctcGlubmVkLXJpZ2h0LWNvbHMtY29udGFpbmVyLFxcbi5hZy1jZW50ZXItY29scy1jb250YWluZXIsXFxuLmFnLXBpbm5lZC1sZWZ0LWNvbHMtY29udGFpbmVyLFxcbi5hZy1mbG9hdGluZy1ib3R0b20tY29udGFpbmVyLFxcbi5hZy1ib2R5LWhvcml6b250YWwtc2Nyb2xsLWNvbnRhaW5lcixcXG4uYWctZnVsbC13aWR0aC1jb250YWluZXIsXFxuLmFnLWZsb2F0aW5nLWJvdHRvbS1mdWxsLXdpZHRoLWNvbnRhaW5lcixcXG4uYWctdmlydHVhbC1saXN0LWNvbnRhaW5lciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cXG5cXG4uYWctaGVhZGVyLWNvbnRhaW5lciwgLmFnLWZsb2F0aW5nLXRvcC1jb250YWluZXIsIC5hZy1mbG9hdGluZy1ib3R0b20tY29udGFpbmVyIHtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cXG5cXG4uYWctYm9keS12aWV3cG9ydCAuYWctY2VudGVyLWNvbHMtY2xpcHBlciB7XFxuICBtaW4taGVpZ2h0OiAxMDAlOyB9XFxuXFxuLmFnLWJvZHktdmlld3BvcnQuYWctbGF5b3V0LWF1dG8taGVpZ2h0IC5hZy1jZW50ZXItY29scy1jbGlwcGVyLCAuYWctYm9keS12aWV3cG9ydC5hZy1sYXlvdXQtYXV0by1oZWlnaHQgLmFnLWNlbnRlci1jb2xzLWNvbnRhaW5lciB7XFxuICBtaW4taGVpZ2h0OiA1MHB4OyB9XFxuXFxuLmFnLWJvZHktdmlld3BvcnQgLmFnLWNlbnRlci1jb2xzLWNvbnRhaW5lciB7XFxuICBkaXNwbGF5OiBibG9jazsgfVxcblxcbi5hZy1ib2R5LXZpZXdwb3J0LmFnLWxheW91dC1wcmludCB7XFxuICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgLW1zLWZsZXg6IG5vbmU7XFxuICBmbGV4OiBub25lOyB9XFxuICAuYWctYm9keS12aWV3cG9ydC5hZy1sYXlvdXQtcHJpbnQgLmFnLWNlbnRlci1jb2xzLWNsaXBwZXIge1xcbiAgICBtaW4td2lkdGg6IDEwMCU7IH1cXG5cXG4uYWctcGlubmVkLXJpZ2h0LWNvbHMtY29udGFpbmVyIHtcXG4gIGRpc3BsYXk6IGJsb2NrOyB9XFxuXFxuLmFnLWJvZHktaG9yaXpvbnRhbC1zY3JvbGwtY29udGFpbmVyIHtcXG4gIGhlaWdodDogMTAwJTsgfVxcblxcbi5hZy1mdWxsLXdpZHRoLWNvbnRhaW5lcixcXG4uYWctZmxvYXRpbmctdG9wLWZ1bGwtd2lkdGgtY29udGFpbmVyLFxcbi5hZy1mbG9hdGluZy1ib3R0b20tZnVsbC13aWR0aC1jb250YWluZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwcHg7XFxuICBsZWZ0OiAwcHg7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTsgfVxcblxcbi5hZy1mdWxsLXdpZHRoLWNvbnRhaW5lciB7XFxuICB3aWR0aDogMTAwJTsgfVxcblxcbi5hZy1mbG9hdGluZy1ib3R0b20tZnVsbC13aWR0aC1jb250YWluZXIsIC5hZy1mbG9hdGluZy10b3AtZnVsbC13aWR0aC1jb250YWluZXIge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAxMDAlOyB9XFxuXFxuLmFnLXZpcnR1YWwtbGlzdC1jb250YWluZXIge1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxcblxcbi8qKlxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICogU2Nyb2xsZXJzXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4qL1xcbi5hZy1jZW50ZXItY29scy1jbGlwcGVyIHtcXG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAtbXMtZmxleDogMTtcXG4gIGZsZXg6IDE7XFxuICBtaW4td2lkdGg6IDA7XFxuICBvdmVyZmxvdzogaGlkZGVuOyB9XFxuXFxuLmFnLWJvZHktaG9yaXpvbnRhbC1zY3JvbGwge1xcbiAgbWluLWhlaWdodDogMDtcXG4gIG1pbi13aWR0aDogMDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cXG5cXG4uYWctbGF5b3V0LXByaW50IC5hZy1ib2R5LWhvcml6b250YWwtc2Nyb2xsIHtcXG4gIGRpc3BsYXk6IG5vbmU7IH1cXG5cXG4uYWctaG9yaXpvbnRhbC1sZWZ0LXNwYWNlciwgLmFnLWhvcml6b250YWwtcmlnaHQtc3BhY2VyIHtcXG4gIGhlaWdodDogMTAwJTtcXG4gIG1pbi13aWR0aDogMDtcXG4gIC13ZWJraXQtYm94LWZsZXg6IDEwMDA7XFxuICAtbXMtZmxleC1wb3NpdGl2ZTogMTAwMDtcXG4gIGZsZXgtZ3JvdzogMTAwMDtcXG4gIG92ZXJmbG93LXg6IHNjcm9sbDsgfVxcbiAgLmFnLWhvcml6b250YWwtbGVmdC1zcGFjZXIuYWctc2Nyb2xsZXItY29ybmVyLCAuYWctaG9yaXpvbnRhbC1yaWdodC1zcGFjZXIuYWctc2Nyb2xsZXItY29ybmVyIHtcXG4gICAgb3ZlcmZsb3cteDogaGlkZGVuOyB9XFxuXFxuLyoqXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gKiBIZWFkZXJzXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4qL1xcbi5hZy1oZWFkZXIsIC5hZy1waW5uZWQtbGVmdC1oZWFkZXIsIC5hZy1waW5uZWQtcmlnaHQtaGVhZGVyIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIG92ZXJmbG93OiBoaWRkZW47IH1cXG4gIC5hZy1oZWFkZXIgLmFnLWhlYWRlci1jZWxsLXNvcnRhYmxlLCAuYWctcGlubmVkLWxlZnQtaGVhZGVyIC5hZy1oZWFkZXItY2VsbC1zb3J0YWJsZSwgLmFnLXBpbm5lZC1yaWdodC1oZWFkZXIgLmFnLWhlYWRlci1jZWxsLXNvcnRhYmxlIHtcXG4gICAgY3Vyc29yOiBwb2ludGVyOyB9XFxuXFxuLmFnLWhlYWRlciB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxcblxcbi5hZy1oZWFkZXItaWNvbiB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDsgfVxcblxcbi5hZy1waW5uZWQtbGVmdC1oZWFkZXIge1xcbiAgaGVpZ2h0OiAxMDAlOyB9XFxuXFxuLmFnLXBpbm5lZC1yaWdodC1oZWFkZXIge1xcbiAgaGVpZ2h0OiAxMDAlOyB9XFxuXFxuLmFnLWhlYWRlci1yb3cge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxcblxcbi5hZy1oZWFkZXItb3ZlcmxheSB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTsgfVxcblxcbi5hZy1oZWFkZXItY2VsbCB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7XFxuICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBsaW5lLWhlaWdodDogMS41OyB9XFxuXFxuLmFnLWhlYWRlci1ncm91cC1jZWxsLWxhYmVsLCAuYWctaGVhZGVyLWNlbGwtbGFiZWwge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgZmxleDogMSAxIGF1dG87XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuICBoZWlnaHQ6IDEwMCU7IH1cXG5cXG4uYWctaGVhZGVyLWNlbGwtbGFiZWwgLmFnLWhlYWRlci1jZWxsLXRleHQge1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxcblxcbi5hZy1udW1lcmljLWhlYWRlciAuYWctaGVhZGVyLWNlbGwtbGFiZWwge1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsO1xcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiByZXZlcnNlO1xcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsgfVxcblxcbi5hZy1oZWFkZXItZ3JvdXAtdGV4dCB7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XFxuXFxuLmFnLWhlYWRlci1jZWxsLXJlc2l6ZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB6LWluZGV4OiAxO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDRweDsgfVxcblxcbi5hZy1oZWFkZXItZXhwYW5kLWljb24ge1xcbiAgcGFkZGluZy1sZWZ0OiA0cHg7IH1cXG5cXG4uYWctaGVhZGVyLXNlbGVjdC1hbGwge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBsaW5lLWhlaWdodDogMTsgfVxcblxcbi8qKlxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICogQ29sdW1uc1xcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuKi9cXG4uYWctY29sdW1uLW1vdmluZyAuYWctY2VsbCB7XFxuICAtd2Via2l0LXRyYW5zaXRpb246IGxlZnQgMC4ycztcXG4gIHRyYW5zaXRpb246IGxlZnQgMC4yczsgfVxcblxcbi5hZy1jb2x1bW4tbW92aW5nIC5hZy1oZWFkZXItY2VsbCB7XFxuICAtd2Via2l0LXRyYW5zaXRpb246IGxlZnQgMC4ycztcXG4gIHRyYW5zaXRpb246IGxlZnQgMC4yczsgfVxcblxcbi5hZy1jb2x1bW4tbW92aW5nIC5hZy1oZWFkZXItZ3JvdXAtY2VsbCB7XFxuICAtd2Via2l0LXRyYW5zaXRpb246IGxlZnQgMC4ycywgd2lkdGggMC4ycztcXG4gIHRyYW5zaXRpb246IGxlZnQgMC4ycywgd2lkdGggMC4yczsgfVxcblxcbi8qKlxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICogQ29sdW1uIFBhbmVsXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4qL1xcbi5hZy1jb2x1bW4tcGFuZWwge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gIC1tcy1mbGV4OiAxIDEgYXV0bztcXG4gIGZsZXg6IDEgMSBhdXRvOyB9XFxuXFxuLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgLXdlYmtpdC1ib3gtZmxleDogNDtcXG4gIC1tcy1mbGV4LXBvc2l0aXZlOiA0O1xcbiAgZmxleC1ncm93OiA0O1xcbiAgLW1zLWZsZXgtbmVnYXRpdmU6IDE7XFxuICBmbGV4LXNocmluazogMTtcXG4gIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAwO1xcbiAgZmxleC1iYXNpczogMDsgfVxcbiAgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLXByaW1hcnktY29scy1oZWFkZXItcGFuZWwge1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgIC1tcy1mbGV4OiBub25lO1xcbiAgICBmbGV4OiBub25lOyB9XFxuICAgIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1wcmltYXJ5LWNvbHMtaGVhZGVyLXBhbmVsIC5hZy1jb2x1bW4tbmFtZS1maWx0ZXIge1xcbiAgICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICAgIGZsZXg6IDEgMSBhdXRvOyB9XFxuICAgIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1wcmltYXJ5LWNvbHMtaGVhZGVyLXBhbmVsIC5hZy1wcmltYXJ5LWNvbHMtZmlsdGVyLXdyYXBwZXIge1xcbiAgICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICAgIGZsZXg6IDEgMSBhdXRvOyB9XFxuICAgICAgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLXByaW1hcnktY29scy1oZWFkZXItcGFuZWwgLmFnLXByaW1hcnktY29scy1maWx0ZXItd3JhcHBlciBpbnB1dCB7XFxuICAgICAgICB3aWR0aDogMTAwJTsgfVxcbiAgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLXByaW1hcnktY29scy1saXN0LXBhbmVsIHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICBmbGV4OiAxIDEgYXV0bztcXG4gICAgb3ZlcmZsb3c6IGF1dG87IH1cXG5cXG4uYWctY29sdW1uLWRyb3Age1xcbiAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtYm94O1xcbiAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94O1xcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBvdmVyZmxvdzogYXV0bztcXG4gIHdpZHRoOiAxMDAlOyB9XFxuICAuYWctY29sdW1uLWRyb3AgLmFnLWNvbHVtbi1kcm9wLWxpc3Qge1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cXG4gICAgLmFnLWNvbHVtbi1kcm9wIC5hZy1jb2x1bW4tZHJvcC1saXN0IC5hZy1jb2x1bW4tZHJvcC1jZWxsIHtcXG4gICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyOyB9XFxuICAgICAgLmFnLWNvbHVtbi1kcm9wIC5hZy1jb2x1bW4tZHJvcC1saXN0IC5hZy1jb2x1bW4tZHJvcC1jZWxsIC5hZy1jb2x1bW4tZHJvcC1jZWxsLXRleHQge1xcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgICAgICAtbXMtZmxleDogMSAxIGF1dG87XFxuICAgICAgICBmbGV4OiAxIDEgYXV0bztcXG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxcblxcbi5hZy1jb2x1bW4tZHJvcC5hZy1jb2x1bW4tZHJvcC12ZXJ0aWNhbCB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XFxuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgLW1zLWZsZXg6IDEgMSAwcHg7XFxuICBmbGV4OiAxIDEgMDtcXG4gIC13ZWJraXQtYm94LWFsaWduOiBzdHJldGNoO1xcbiAgLW1zLWZsZXgtYWxpZ246IHN0cmV0Y2g7XFxuICBhbGlnbi1pdGVtczogc3RyZXRjaDsgfVxcbiAgLmFnLWNvbHVtbi1kcm9wLmFnLWNvbHVtbi1kcm9wLXZlcnRpY2FsID4gZGl2IHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyOyB9XFxuICAuYWctY29sdW1uLWRyb3AuYWctY29sdW1uLWRyb3AtdmVydGljYWwgLmFnLWNvbHVtbi1kcm9wLWxpc3Qge1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogc3RyZXRjaDtcXG4gICAgLW1zLWZsZXgtYWxpZ246IHN0cmV0Y2g7XFxuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTtcXG4gICAgZmxleC1ncm93OiAxO1xcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIG92ZXJmbG93LXg6IGF1dG87IH1cXG4gIC5hZy1jb2x1bW4tZHJvcC5hZy1jb2x1bW4tZHJvcC12ZXJ0aWNhbCAuYWctY29sdW1uLWRyb3AtZW1wdHktbWVzc2FnZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrOyB9XFxuXFxuLmFnLWNvbHVtbi1kcm9wLmFnLWNvbHVtbi1kcm9wLWhvcml6b250YWwge1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIG92ZXJmbG93OiBoaWRkZW47IH1cXG5cXG4vKipcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAqIFJvd3NcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiovXFxuLmFnLXJvdy1hbmltYXRpb24gLmFnLXJvdyB7XFxuICAtd2Via2l0LXRyYW5zaXRpb246IHRvcCAwLjRzLCBoZWlnaHQgMC40cywgYmFja2dyb3VuZC1jb2xvciAwLjFzLCBvcGFjaXR5IDAuMnMsIC13ZWJraXQtdHJhbnNmb3JtIDAuNHM7XFxuICB0cmFuc2l0aW9uOiB0b3AgMC40cywgaGVpZ2h0IDAuNHMsIGJhY2tncm91bmQtY29sb3IgMC4xcywgb3BhY2l0eSAwLjJzLCAtd2Via2l0LXRyYW5zZm9ybSAwLjRzO1xcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNHMsIHRvcCAwLjRzLCBoZWlnaHQgMC40cywgYmFja2dyb3VuZC1jb2xvciAwLjFzLCBvcGFjaXR5IDAuMnM7XFxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC40cywgdG9wIDAuNHMsIGhlaWdodCAwLjRzLCBiYWNrZ3JvdW5kLWNvbG9yIDAuMXMsIG9wYWNpdHkgMC4ycywgLXdlYmtpdC10cmFuc2Zvcm0gMC40czsgfVxcblxcbi5hZy1yb3ctbm8tYW5pbWF0aW9uIC5hZy1yb3cge1xcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMXM7XFxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMXM7IH1cXG5cXG4uYWctcm93IHtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICB3aWR0aDogMTAwJTsgfVxcblxcbi5hZy1yb3ctcG9zaXRpb24tYWJzb2x1dGUge1xcbiAgcG9zaXRpb246IGFic29sdXRlOyB9XFxuXFxuLmFnLXJvdy1wb3NpdGlvbi1yZWxhdGl2ZSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cXG5cXG4uYWctZnVsbC13aWR0aC1yb3cge1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHBvaW50ZXItZXZlbnRzOiBhbGw7IH1cXG5cXG4uYWctcm93LWlubGluZS1lZGl0aW5nIHtcXG4gIHotaW5kZXg6IDE7IH1cXG5cXG4uYWctcm93LWRyYWdnaW5nIHtcXG4gIHotaW5kZXg6IDI7IH1cXG5cXG4uYWctc3R1Yi1jZWxsIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICBhbGlnbi1pdGVtczogY2VudGVyOyB9XFxuXFxuLyoqXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gKiBDZWxsc1xcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuKi9cXG4uYWctY2VsbCB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XFxuXFxuLmFnLWNlbGwtd3JhcHBlciB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlOyB9XFxuICAuYWctY2VsbC13cmFwcGVyLmFnLXJvdy1ncm91cCB7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBzdGFydDtcXG4gICAgLW1zLWZsZXgtYWxpZ246IHN0YXJ0O1xcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgfVxcbiAgLmFnLWNlbGwtd3JhcHBlciAuYWctY2VsbC12YWx1ZSwgLmFnLWNlbGwtd3JhcHBlciAuYWctZ3JvdXAtdmFsdWUge1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgfVxcblxcbi5hZy1mdWxsLXdpZHRoLXJvdy5hZy1yb3ctZ3JvdXAgLmFnLWNlbGwtd3JhcHBlciB7XFxuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cXG5cXG4uYWctY2VsbC13aXRoLWhlaWdodCB7XFxuICBoZWlnaHQ6IDEwMCU7IH1cXG5cXG4uYWctZ3JvdXAtY2VsbC1lbnRpcmUtcm93IHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIGhlaWdodDogMTAwJTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICB3aWR0aDogMTAwJTsgfVxcblxcbi5hZy1mb290ZXItY2VsbC1lbnRpcmUtcm93IHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIGhlaWdodDogMTAwJTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICB3aWR0aDogMTAwJTsgfVxcblxcbi5hZy1jZWxsLWlubGluZS1lZGl0aW5nIHtcXG4gIHotaW5kZXg6IDE7IH1cXG4gIC5hZy1jZWxsLWlubGluZS1lZGl0aW5nIC5hZy1jZWxsLWVkaXQtaW5wdXQsIC5hZy1jZWxsLWlubGluZS1lZGl0aW5nIC5hZy1pbnB1dC13cmFwcGVyIHtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgbGluZS1oZWlnaHQ6IG5vcm1hbDsgfVxcblxcbi8qKlxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICogRmlsdGVyc1xcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuKi9cXG4uYWctc2V0LWZpbHRlci1pdGVtIHtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cXG5cXG4uYWctZmlsdGVyIC5hZy1maWx0ZXItY2hlY2tib3gge1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7IH1cXG5cXG4uYWctZmlsdGVyIC5hZy1maWx0ZXItYm9keS13cmFwcGVyIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG4gIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyB9XFxuXFxuLmFnLWZpbHRlciAuYWctZmlsdGVyLWZpbHRlciB7XFxuICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgZmxleDogMSAxIGF1dG87IH1cXG5cXG4vKipcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAqIEZsb2F0aW5nIEZpbHRlclxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuKi9cXG4uYWctZmxvYXRpbmctZmlsdGVyLWZ1bGwtYm9keSAuYWctcmVhY3QtY29udGFpbmVyLCAuYWctZmxvYXRpbmctZmlsdGVyLWJvZHkgLmFnLXJlYWN0LWNvbnRhaW5lciB7XFxuICBoZWlnaHQ6IDEwMCU7IH1cXG5cXG4uYWctZmxvYXRpbmctZmlsdGVyLWJvZHkge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgZmxleDogMSAxIGF1dG87XFxuICBoZWlnaHQ6IDEwMCU7IH1cXG4gIC5hZy1mbG9hdGluZy1maWx0ZXItYm9keSBpbnB1dCB7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICBmbGV4OiAxIDEgYXV0bztcXG4gICAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gMXB4KTsgfVxcblxcbi5hZy1mbG9hdGluZy1maWx0ZXItZnVsbC1ib2R5IHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDEwMCU7IH1cXG4gIC5hZy1mbG9hdGluZy1maWx0ZXItZnVsbC1ib2R5ID4gZGl2IHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICBmbGV4OiAxIDEgYXV0bzsgfVxcbiAgLmFnLWZsb2F0aW5nLWZpbHRlci1mdWxsLWJvZHkgaW5wdXQge1xcbiAgICBtYXJnaW46IDA7XFxuICAgIHdpZHRoOiAxMDAlOyB9XFxuICAuYWctZmxvYXRpbmctZmlsdGVyLWZ1bGwtYm9keSBpbnB1dFt0eXBlPVxcXCJyYW5nZVxcXCJdIHtcXG4gICAgaGVpZ2h0OiAxMDAlOyB9XFxuXFxuLmFnLWZsb2F0aW5nLWZpbHRlciB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7IH1cXG5cXG4uYWctZmxvYXRpbmctZmlsdGVyLWlucHV0IHtcXG4gIHdpZHRoOiAxMDAlOyB9XFxuXFxuLmFnLWZsb2F0aW5nLWZpbHRlci1pbnB1dDotbW96LXJlYWQtb25seSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOyB9XFxuXFxuLmFnLWZsb2F0aW5nLWZpbHRlci1pbnB1dDpyZWFkLW9ubHkge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsgfVxcblxcbi5hZy1mbG9hdGluZy1maWx0ZXItbWVudSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcXG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcXG4gIHVzZXItc2VsZWN0OiBub25lOyB9XFxuXFxuLmFnLWZsb2F0aW5nLWZpbHRlci1idXR0b24ge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgLW1zLWZsZXg6IG5vbmU7XFxuICBmbGV4OiBub25lOyB9XFxuXFxuLyoqXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gKiBEcmFnICYgRHJvcFxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuKi9cXG4uYWctZG5kLWdob3N0IHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgYmFja2dyb3VuZDogI2U1ZTVlNTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrO1xcbiAgY3Vyc29yOiBtb3ZlO1xcbiAgZm9udC1mYW1pbHk6IFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XFxuICBmb250LXNpemU6IDE0cHg7XFxuICBsaW5lLWhlaWdodDogMS40O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHBhZGRpbmc6IDNweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcXG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIHotaW5kZXg6IDEwOyB9XFxuXFxuLmFnLWRuZC1naG9zdC1pY29uIHtcXG4gIHBhZGRpbmc6IDJweDsgfVxcblxcbi8qKlxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICogT3ZlcmxheVxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuKi9cXG4uYWctb3ZlcmxheSB7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBsZWZ0OiAwO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICB3aWR0aDogMTAwJTsgfVxcblxcbi5hZy1vdmVybGF5LXBhbmVsIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICB3aWR0aDogMTAwJTsgfVxcblxcbi5hZy1vdmVybGF5LXdyYXBwZXIge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgLW1zLWZsZXg6IG5vbmU7XFxuICBmbGV4OiBub25lO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XFxuICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjsgfVxcbiAgLmFnLW92ZXJsYXktd3JhcHBlci5hZy1vdmVybGF5LWxvYWRpbmctd3JhcHBlciB7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7IH1cXG5cXG4uYWctb3ZlcmxheS1uby1yb3dzLXdyYXBwZXIuYWctbGF5b3V0LWF1dG8taGVpZ2h0IHtcXG4gIHBhZGRpbmctdG9wOiAzMHB4OyB9XFxuXFxuLyoqXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gKiBQb3B1cFxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuKi9cXG4uYWctcG9wdXAgPiBkaXYge1xcbiAgei1pbmRleDogNTsgfVxcblxcbi5hZy1wb3B1cC1iYWNrZHJvcCB7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBsZWZ0OiAwO1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgdG9wOiAwO1xcbiAgd2lkdGg6IDEwMCU7IH1cXG5cXG4uYWctcG9wdXAtZWRpdG9yIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICB6LWluZGV4OiAxOyB9XFxuXFxuLyoqXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gKiBWaXJ0dWFsIExpc3RzXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4qL1xcbi5hZy12aXJ0dWFsLWxpc3QtaXRlbSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB3aWR0aDogMTAwJTsgfVxcbiAgLmFnLXZpcnR1YWwtbGlzdC1pdGVtIHNwYW46ZW1wdHk6bm90KC5hZy1pY29uKSB7XFxuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgdHJhbnNwYXJlbnQ7IH1cXG5cXG4vKipcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAqIEZsb2F0aW5nIFRvcCBhbmQgQm90dG9tXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4qL1xcbi5hZy1mbG9hdGluZy10b3Age1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICB3aWR0aDogMTAwJTtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4OyB9XFxuXFxuLmFnLXBpbm5lZC1sZWZ0LWZsb2F0aW5nLXRvcCB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgbWluLXdpZHRoOiAwcHg7XFxuICAtd2Via2l0LWJveC1mbGV4OiAxMDAwO1xcbiAgLW1zLWZsZXgtcG9zaXRpdmU6IDEwMDA7XFxuICBmbGV4LWdyb3c6IDEwMDA7IH1cXG5cXG4uYWctcGlubmVkLXJpZ2h0LWZsb2F0aW5nLXRvcCB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgbWluLXdpZHRoOiAwcHg7XFxuICAtd2Via2l0LWJveC1mbGV4OiAxMDAwO1xcbiAgLW1zLWZsZXgtcG9zaXRpdmU6IDEwMDA7XFxuICBmbGV4LWdyb3c6IDEwMDA7IH1cXG5cXG4uYWctZmxvYXRpbmctYm90dG9tIHtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDsgfVxcblxcbi5hZy1waW5uZWQtbGVmdC1mbG9hdGluZy1ib3R0b20ge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG1pbi13aWR0aDogMHB4O1xcbiAgLXdlYmtpdC1ib3gtZmxleDogMTAwMDtcXG4gIC1tcy1mbGV4LXBvc2l0aXZlOiAxMDAwO1xcbiAgZmxleC1ncm93OiAxMDAwOyB9XFxuXFxuLmFnLXBpbm5lZC1yaWdodC1mbG9hdGluZy1ib3R0b20ge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG1pbi13aWR0aDogMHB4O1xcbiAgLXdlYmtpdC1ib3gtZmxleDogMTAwMDtcXG4gIC1tcy1mbGV4LXBvc2l0aXZlOiAxMDAwO1xcbiAgZmxleC1ncm93OiAxMDAwOyB9XFxuXFxuLyoqXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gKiBEaWFsb2dcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiovXFxuLmFnLWRpYWxvZywgLmFnLXBhbmVsIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG4gIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxcbiAgLmFnLWRpYWxvZyAuYWctdGl0bGUtYmFyLCAuYWctcGFuZWwgLmFnLXRpdGxlLWJhciB7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgLW1zLWZsZXg6IG5vbmU7XFxuICAgIGZsZXg6IG5vbmU7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGN1cnNvcjogZGVmYXVsdDsgfVxcbiAgICAuYWctZGlhbG9nIC5hZy10aXRsZS1iYXIgLmFnLXRpdGxlLWJhci10aXRsZSwgLmFnLXBhbmVsIC5hZy10aXRsZS1iYXIgLmFnLXRpdGxlLWJhci10aXRsZSB7XFxuICAgICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgICAtbXMtZmxleDogMSAxIGF1dG87XFxuICAgICAgZmxleDogMSAxIGF1dG87IH1cXG4gICAgLmFnLWRpYWxvZyAuYWctdGl0bGUtYmFyIC5hZy10aXRsZS1iYXItYnV0dG9ucywgLmFnLXBhbmVsIC5hZy10aXRsZS1iYXIgLmFnLXRpdGxlLWJhci1idXR0b25zIHtcXG4gICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgICBkaXNwbGF5OiBmbGV4OyB9XFxuICAgICAgLmFnLWRpYWxvZyAuYWctdGl0bGUtYmFyIC5hZy10aXRsZS1iYXItYnV0dG9ucyAuYWctYnV0dG9uLCAuYWctcGFuZWwgLmFnLXRpdGxlLWJhciAuYWctdGl0bGUtYmFyLWJ1dHRvbnMgLmFnLWJ1dHRvbiB7XFxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7IH1cXG4gIC5hZy1kaWFsb2cgLmFnLXBhbmVsLWNvbnRlbnQtd3JhcHBlciwgLmFnLXBhbmVsIC5hZy1wYW5lbC1jb250ZW50LXdyYXBwZXIge1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgIC1tcy1mbGV4OiAxIDEgYXV0bztcXG4gICAgZmxleDogMSAxIGF1dG87XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxcbiAgICAuYWctZGlhbG9nIC5hZy1wYW5lbC1jb250ZW50LXdyYXBwZXIgPiBkaXYsIC5hZy1wYW5lbCAuYWctcGFuZWwtY29udGVudC13cmFwcGVyID4gZGl2IHtcXG4gICAgICB3aWR0aDogMTAwJTtcXG4gICAgICBoZWlnaHQ6IDEwMCU7IH1cXG5cXG4uYWctZGlhbG9nIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTsgfVxcbiAgLmFnLWRpYWxvZyAuYWctcmVzaXplciB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICAgIHotaW5kZXg6IDE7IH1cXG4gICAgLmFnLWRpYWxvZyAuYWctcmVzaXplci5hZy1yZXNpemVyLXRvcExlZnQge1xcbiAgICAgIHRvcDogMDtcXG4gICAgICBsZWZ0OiAwO1xcbiAgICAgIGhlaWdodDogNXB4O1xcbiAgICAgIHdpZHRoOiA1cHg7XFxuICAgICAgY3Vyc29yOiBud3NlLXJlc2l6ZTsgfVxcbiAgICAuYWctZGlhbG9nIC5hZy1yZXNpemVyLmFnLXJlc2l6ZXItdG9wIHtcXG4gICAgICB0b3A6IDA7XFxuICAgICAgbGVmdDogNXB4O1xcbiAgICAgIHJpZ2h0OiA1cHg7XFxuICAgICAgaGVpZ2h0OiA1cHg7XFxuICAgICAgY3Vyc29yOiBucy1yZXNpemU7IH1cXG4gICAgLmFnLWRpYWxvZyAuYWctcmVzaXplci5hZy1yZXNpemVyLXRvcFJpZ2h0IHtcXG4gICAgICB0b3A6IDA7XFxuICAgICAgcmlnaHQ6IDA7XFxuICAgICAgaGVpZ2h0OiA1cHg7XFxuICAgICAgd2lkdGg6IDVweDtcXG4gICAgICBjdXJzb3I6IG5lc3ctcmVzaXplOyB9XFxuICAgIC5hZy1kaWFsb2cgLmFnLXJlc2l6ZXIuYWctcmVzaXplci1yaWdodCB7XFxuICAgICAgdG9wOiA1cHg7XFxuICAgICAgcmlnaHQ6IDA7XFxuICAgICAgYm90dG9tOiA1cHg7XFxuICAgICAgd2lkdGg6IDVweDtcXG4gICAgICBjdXJzb3I6IGV3LXJlc2l6ZTsgfVxcbiAgICAuYWctZGlhbG9nIC5hZy1yZXNpemVyLmFnLXJlc2l6ZXItYm90dG9tUmlnaHQge1xcbiAgICAgIGJvdHRvbTogMDtcXG4gICAgICByaWdodDogMDtcXG4gICAgICBoZWlnaHQ6IDVweDtcXG4gICAgICB3aWR0aDogNXB4O1xcbiAgICAgIGN1cnNvcjogbndzZS1yZXNpemU7IH1cXG4gICAgLmFnLWRpYWxvZyAuYWctcmVzaXplci5hZy1yZXNpemVyLWJvdHRvbSB7XFxuICAgICAgYm90dG9tOiAwO1xcbiAgICAgIGxlZnQ6IDVweDtcXG4gICAgICByaWdodDogNXB4O1xcbiAgICAgIGhlaWdodDogNXB4O1xcbiAgICAgIGN1cnNvcjogbnMtcmVzaXplOyB9XFxuICAgIC5hZy1kaWFsb2cgLmFnLXJlc2l6ZXIuYWctcmVzaXplci1ib3R0b21MZWZ0IHtcXG4gICAgICBib3R0b206IDA7XFxuICAgICAgbGVmdDogMDtcXG4gICAgICBoZWlnaHQ6IDVweDtcXG4gICAgICB3aWR0aDogNXB4O1xcbiAgICAgIGN1cnNvcjogbmVzdy1yZXNpemU7IH1cXG4gICAgLmFnLWRpYWxvZyAuYWctcmVzaXplci5hZy1yZXNpemVyLWxlZnQge1xcbiAgICAgIGxlZnQ6IDA7XFxuICAgICAgdG9wOiA1cHg7XFxuICAgICAgYm90dG9tOiA1cHg7XFxuICAgICAgd2lkdGg6IDVweDtcXG4gICAgICBjdXJzb3I6IGV3LXJlc2l6ZTsgfVxcbiAgLmFnLWRpYWxvZyAuYWctbWVzc2FnZS1ib3gge1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XFxuICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfVxcbiAgICAuYWctZGlhbG9nIC5hZy1tZXNzYWdlLWJveCAuYWctbWVzc2FnZS1ib3gtY29udGVudCB7XFxuICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgIC1tcy1mbGV4OiAxIDEgYXV0bztcXG4gICAgICBmbGV4OiAxIDEgYXV0bztcXG4gICAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XFxuICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyOyB9XFxuICAgIC5hZy1kaWFsb2cgLmFnLW1lc3NhZ2UtYm94IC5hZy1tZXNzYWdlLWJveC1idXR0b24tYmFyIHtcXG4gICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcXG4gICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH1cXG5cXG4vKipcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAqIFRvb2x0aXBcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiovXFxuLmFnLXRvb2x0aXAge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICB6LWluZGV4OiA5OTk5OTsgfVxcblxcbi5hZy1jaGFydC10b29sdGlwIHtcXG4gIGRpc3BsYXk6IHRhYmxlO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcXG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIHotaW5kZXg6IDk5OTk5O1xcbiAgZm9udDogMTJweCBWZXJkYW5hLCBzYW5zLXNlcmlmO1xcbiAgY29sb3I6IGJsYWNrO1xcbiAgYmFja2dyb3VuZDogI2Y0ZjRmNDtcXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcXG4gIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDFweCByZ2JhKDMsIDMsIDMsIDAuNyksIDAuNXZoIDAuNXZoIDF2aCByZ2JhKDMsIDMsIDMsIDAuMjUpO1xcbiAgYm94LXNoYWRvdzogMCAwIDFweCByZ2JhKDMsIDMsIDMsIDAuNyksIDAuNXZoIDAuNXZoIDF2aCByZ2JhKDMsIDMsIDMsIDAuMjUpO1xcbiAgb3BhY2l0eTogMDtcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjkpO1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjkpO1xcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiAwLjNzIGN1YmljLWJlemllcigwLjE5LCAxLCAwLjIyLCAxKTtcXG4gIHRyYW5zaXRpb246IDAuM3MgY3ViaWMtYmV6aWVyKDAuMTksIDEsIDAuMjIsIDEpO1xcbiAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5LCAtd2Via2l0LXRyYW5zZm9ybTtcXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IG9wYWNpdHksIC13ZWJraXQtdHJhbnNmb3JtO1xcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogb3BhY2l0eSwgdHJhbnNmb3JtO1xcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogb3BhY2l0eSwgdHJhbnNmb3JtLCAtd2Via2l0LXRyYW5zZm9ybTsgfVxcbiAgLmFnLWNoYXJ0LXRvb2x0aXAudmlzaWJsZSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfVxcbiAgLmFnLWNoYXJ0LXRvb2x0aXAgLnRpdGxlIHtcXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICAgIHBhZGRpbmc6IDdweDtcXG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNXB4O1xcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4O1xcbiAgICBjb2xvcjogd2hpdGU7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICM4ODg4ODg7IH1cXG4gIC5hZy1jaGFydC10b29sdGlwIC5jb250ZW50IHtcXG4gICAgcGFkZGluZzogN3B4OyB9XFxuXFxuLyoqXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gKiBBbmltYXRpb25zXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4qL1xcbi5hZy12YWx1ZS1zbGlkZS1vdXQge1xcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XFxuICBvcGFjaXR5OiAxO1xcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDNzLCBtYXJnaW4tcmlnaHQgM3M7XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDNzLCBtYXJnaW4tcmlnaHQgM3M7XFxuICAtd2Via2l0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XFxuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOyB9XFxuXFxuLmFnLXZhbHVlLXNsaWRlLW91dC1lbmQge1xcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xcbiAgb3BhY2l0eTogMDsgfVxcblxcbi5hZy1vcGFjaXR5LXplcm8ge1xcbiAgb3BhY2l0eTogMCAhaW1wb3J0YW50OyB9XFxuXFxuLyoqXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gKiBNZW51XFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4qL1xcbi5hZy1tZW51IHtcXG4gIG1heC1oZWlnaHQ6IDEwMCU7XFxuICBvdmVyZmxvdy15OiBhdXRvO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcXG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICB1c2VyLXNlbGVjdDogbm9uZTsgfVxcblxcbi5hZy1tZW51LWNvbHVtbi1zZWxlY3Qtd3JhcHBlciB7XFxuICBoZWlnaHQ6IDI2NXB4O1xcbiAgb3ZlcmZsb3c6IGF1dG87XFxuICB3aWR0aDogMjAwcHg7IH1cXG5cXG4uYWctbWVudS1saXN0IHtcXG4gIGRpc3BsYXk6IHRhYmxlOyB9XFxuXFxuLmFnLW1lbnUtb3B0aW9uLCAuYWctbWVudS1zZXBhcmF0b3Ige1xcbiAgZGlzcGxheTogdGFibGUtcm93OyB9XFxuICAuYWctbWVudS1vcHRpb24gPiBzcGFuLCAuYWctbWVudS1zZXBhcmF0b3IgPiBzcGFuIHtcXG4gICAgZGlzcGxheTogdGFibGUtY2VsbDtcXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxcblxcbi5hZy1tZW51LW9wdGlvbi10ZXh0IHtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cXG5cXG4uYWctbWVudS1jb2x1bW4tc2VsZWN0LXdyYXBwZXIgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwge1xcbiAgaGVpZ2h0OiAxMDAlOyB9XFxuXFxuLyoqXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gKiBSaWNoIFNlbGVjdFxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuKi9cXG4uYWctcmljaC1zZWxlY3Qge1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgb3V0bGluZTogbm9uZTsgfVxcbiAgLmFnLXJpY2gtc2VsZWN0IC5hZy1yaWNoLXNlbGVjdC12YWx1ZSB7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxcbiAgICAuYWctcmljaC1zZWxlY3QgLmFnLXJpY2gtc2VsZWN0LXZhbHVlID4gc3BhbiB7XFxuICAgICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgICAtbXMtZmxleDogMSAxIGF1dG87XFxuICAgICAgZmxleDogMSAxIGF1dG87IH1cXG4gICAgICAuYWctcmljaC1zZWxlY3QgLmFnLXJpY2gtc2VsZWN0LXZhbHVlID4gc3Bhbi5hZy1pY29uIHtcXG4gICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDI7XFxuICAgICAgICAtbXMtZmxleC1vcmRlcjogMTtcXG4gICAgICAgIG9yZGVyOiAxO1xcbiAgICAgICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgIC1tcy1mbGV4OiBub25lO1xcbiAgICAgICAgZmxleDogbm9uZTsgfVxcbiAgLmFnLXJpY2gtc2VsZWN0IC5hZy1yaWNoLXNlbGVjdC1saXN0IC5hZy12aXJ0dWFsLWxpc3QtaXRlbSB7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDsgfVxcbiAgICAuYWctcmljaC1zZWxlY3QgLmFnLXJpY2gtc2VsZWN0LWxpc3QgLmFnLXZpcnR1YWwtbGlzdC1pdGVtIC5hZy1yaWNoLXNlbGVjdC1yb3cge1xcbiAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgICAtbXMtZmxleDogMSAxIGF1dG87XFxuICAgICAgZmxleDogMSAxIGF1dG87XFxuICAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxcblxcbi8qKlxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICogUGFnaW5hdGlvblxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuKi9cXG4uYWctcGFnaW5nLXBhbmVsIHtcXG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtcGFjazogZW5kO1xcbiAgLW1zLWZsZXgtcGFjazogZW5kO1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgfVxcblxcbi5hZy1wYWdpbmctcGFnZS1zdW1tYXJ5LXBhbmVsIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICBhbGlnbi1pdGVtczogY2VudGVyOyB9XFxuICAuYWctcGFnaW5nLXBhZ2Utc3VtbWFyeS1wYW5lbCAuYWctZGlzYWJsZWQge1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsgfVxcbiAgLmFnLXBhZ2luZy1wYWdlLXN1bW1hcnktcGFuZWwgLmFnLXBhZ2luZy1idXR0b24ge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cXG4gICAgLmFnLXBhZ2luZy1wYWdlLXN1bW1hcnktcGFuZWwgLmFnLXBhZ2luZy1idXR0b24gYnV0dG9uIHtcXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7IH1cXG5cXG4vKipcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAqIFRvb2wgUGFuZWxcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiovXFxuLmFnLXRvb2wtcGFuZWwtd3JhcHBlciB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcXG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcXG4gIHVzZXItc2VsZWN0OiBub25lO1xcbiAgd2lkdGg6IDIwMHB4OyB9XFxuICAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1maWx0ZXItdG9vbHBhbmVsLWhlYWRlciB7XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICAgIGN1cnNvcjogcG9pbnRlcjsgfVxcblxcbi5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4sXFxuLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCB7XFxuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDtcXG4gIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7XFxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgLW1zLWZsZXgtd3JhcDogbm93cmFwO1xcbiAgZmxleC13cmFwOiBub3dyYXA7XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cXG4gIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4gLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbixcXG4gIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4gLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCxcXG4gIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4tZ3JvdXAgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbixcXG4gIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4tZ3JvdXAgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgIC1tcy1mbGV4OiAxIDEgYXV0bztcXG4gICAgZmxleDogMSAxIGF1dG87XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyB9XFxuXFxuLmFnLWNvbHVtbi1zZWxlY3QtY2hlY2tib3gge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7IH1cXG5cXG4uYWctdG9vbC1wYW5lbC1ob3Jpem9udGFsLXJlc2l6ZSB7XFxuICBjdXJzb3I6IGNvbC1yZXNpemU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICB3aWR0aDogNXB4O1xcbiAgei1pbmRleDogMTsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2wtcGFuZWwtaG9yaXpvbnRhbC1yZXNpemUge1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoM3B4KTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgzcHgpOyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbC1wYW5lbC1ob3Jpem9udGFsLXJlc2l6ZSB7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtM3B4KTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtM3B4KTsgfVxcblxcbi5sb2FkaW5nLWZpbHRlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgcGFkZGluZzogNXB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAzNHB4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICB6LWluZGV4OiAxOyB9XFxuXFxuLmFnLWRldGFpbHMtcm93IHtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAxMDAlOyB9XFxuXFxuLmFnLWRldGFpbHMtZ3JpZCB7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMTAwJTsgfVxcblxcbi5hZy1oZWFkZXItZ3JvdXAtY2VsbCB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGhlaWdodDogMTAwJTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgfVxcblxcbi5hZy1jZWxsLWxhYmVsLWNvbnRhaW5lciB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LXBhY2s6IGp1c3RpZnk7XFxuICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5O1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsO1xcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiByZXZlcnNlO1xcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcXG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIHdpZHRoOiAxMDAlOyB9XFxuXFxuLmFnLW51bWVyaWMtaGVhZGVyIC5hZy1jZWxsLWxhYmVsLWNvbnRhaW5lciB7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7XFxuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgZmxleC1kaXJlY3Rpb246IHJvdzsgfVxcblxcbi8qKlxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICogU2lkZSBCYXJcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiovXFxuLmFnLXNpZGUtYmFyIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsO1xcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiByZXZlcnNlO1xcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsgfVxcbiAgLmFnLXNpZGUtYmFyIC5hZy1zaWRlLWJ1dHRvbnMgZGl2IGJ1dHRvbiB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgICBvdXRsaW5lOiBub25lO1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7IH1cXG4gICAgLmFnLXNpZGUtYmFyIC5hZy1zaWRlLWJ1dHRvbnMgZGl2IGJ1dHRvbiBzcGFuOm5vdCguYWctaWNvbikge1xcbiAgICAgIC13ZWJraXQtd3JpdGluZy1tb2RlOiB0YjtcXG4gICAgICAtbXMtd3JpdGluZy1tb2RlOiB0YjtcXG4gICAgICB3cml0aW5nLW1vZGU6IHRiO1xcbiAgICAgIC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1scjtcXG4gICAgICAtbXMtd3JpdGluZy1tb2RlOiB0Yi1scjtcXG4gICAgICB3cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyOyB9XFxuICAuYWctc2lkZS1iYXIgLnBhbmVsLWNvbnRhaW5lciB7XFxuICAgIHdpZHRoOiAxODBweDsgfVxcbiAgLmFnLXNpZGUtYmFyLmZ1bGwtd2lkdGggLnBhbmVsLWNvbnRhaW5lciB7XFxuICAgIHdpZHRoOiAyMDBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXNpZGUtYmFyIC5hZy1zaWRlLWJ1dHRvbnMgYnV0dG9uIHNwYW46bm90KC5hZy1pY29uKSB7XFxuICAtd2Via2l0LXdyaXRpbmctbW9kZTogdGItcmw7XFxuICAtbXMtd3JpdGluZy1tb2RlOiB0Yi1ybDtcXG4gIHdyaXRpbmctbW9kZTogdGItcmw7XFxuICAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmw7XFxuICAtbXMtd3JpdGluZy1tb2RlOiB0Yi1ybDtcXG4gIHdyaXRpbmctbW9kZTogdmVydGljYWwtcmw7IH1cXG5cXG4vKipcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAqIFN0YXR1cyBCYXJcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiovXFxuLmFnLXN0YXR1cy1iYXIge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5O1xcbiAgLW1zLWZsZXgtcGFjazoganVzdGlmeTtcXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gIG92ZXJmbG93OiBoaWRkZW47IH1cXG4gIC5hZy1zdGF0dXMtYmFyIC5hZy1zdGF0dXMtcGFuZWwge1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDtcXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7IH1cXG5cXG4uYWctc3RhdHVzLWJhci1sZWZ0IHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveDtcXG4gIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4OyB9XFxuXFxuLmFnLXN0YXR1cy1iYXItY2VudGVyIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveDtcXG4gIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4OyB9XFxuXFxuLmFnLXN0YXR1cy1iYXItcmlnaHQge1xcbiAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtYm94O1xcbiAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94O1xcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7IH1cXG5cXG4vKipcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAqIFdpZGdldHNcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiovXFxuLmFnLWdyb3VwLWNvbXBvbmVudCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgLW1zLWZsZXg6IDEgMSAxMDAlO1xcbiAgZmxleDogMSAxIDEwMCU7IH1cXG4gIC5hZy1ncm91cC1jb21wb25lbnQgLmFnLWdyb3VwLWNvbXBvbmVudC10aXRsZS1iYXIge1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cXG4gIC5hZy1ncm91cC1jb21wb25lbnQgLmFnLWdyb3VwLWNvbXBvbmVudC10b29sYmFyIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyOyB9XFxuICAuYWctZ3JvdXAtY29tcG9uZW50IC5hZy1ncm91cC1jb21wb25lbnQtY29udGFpbmVyIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH1cXG4gICAgLmFnLWdyb3VwLWNvbXBvbmVudCAuYWctZ3JvdXAtY29tcG9uZW50LWNvbnRhaW5lciAuYWctZ3JvdXAtc3ViZ3JvdXAge1xcbiAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaDtcXG4gICAgICBhbGlnbi1zZWxmOiBzdHJldGNoOyB9XFxuICAuYWctZ3JvdXAtY29tcG9uZW50IC5hZy1ncm91cC1pdGVtIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAtbXMtZmxleDogMSAxIGF1dG87XFxuICAgIGZsZXg6IDEgMSBhdXRvO1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyOyB9XFxuICAuYWctZ3JvdXAtY29tcG9uZW50LmFnLWRpc2FibGVkIC5hZy1ncm91cC1jb21wb25lbnQtY29udGFpbmVyIHtcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7IH1cXG4gIC5hZy1ncm91cC1jb21wb25lbnQuYWctY29sbGFwc2VkIC5hZy1ncm91cC1jb21wb25lbnQtdG9vbGJhciwgLmFnLWdyb3VwLWNvbXBvbmVudC5hZy1jb2xsYXBzZWQgLmFnLWdyb3VwLWNvbXBvbmVudC1jb250YWluZXIge1xcbiAgICBkaXNwbGF5OiBub25lOyB9XFxuXFxuLmFnLXRvZ2dsZS1idXR0b24gLmFnLWlucHV0LXdyYXBwZXIgLmFnLWljb24ge1xcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiByaWdodCAwLjNzO1xcbiAgdHJhbnNpdGlvbjogcmlnaHQgMC4zcztcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogLTFweDsgfVxcblxcbi5hZy1pbnB1dC1maWVsZCB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDtcXG4gIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7XFxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICBhbGlnbi1pdGVtczogY2VudGVyOyB9XFxuICAuYWctaW5wdXQtZmllbGQgaW5wdXQsIC5hZy1pbnB1dC1maWVsZCBzZWxlY3QsIC5hZy1pbnB1dC1maWVsZCB0ZXh0YXJlYSB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgIC1tcy1mbGV4OiAxIDEgYXV0bztcXG4gICAgZmxleDogMSAxIGF1dG87XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBtaW4td2lkdGg6IDA7IH1cXG5cXG4uYWctcmFuZ2UtZmllbGQge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cXG5cXG4uYWctcGlja2VyLWZpZWxkID4gLmFnLXdyYXBwZXIsIC5hZy1zbGlkZXIgPiAuYWctd3JhcHBlciwgLmFnLWFuZ2xlLXNlbGVjdCA+IC5hZy13cmFwcGVyIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4OyB9XFxuICAuYWctcGlja2VyLWZpZWxkID4gLmFnLXdyYXBwZXIgPiBkaXYsIC5hZy1zbGlkZXIgPiAuYWctd3JhcHBlciA+IGRpdiwgLmFnLWFuZ2xlLXNlbGVjdCA+IC5hZy13cmFwcGVyID4gZGl2IHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICBmbGV4OiAxIDEgYXV0bzsgfVxcblxcbi5hZy1hbmdsZS1zZWxlY3Qge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cXG4gIC5hZy1hbmdsZS1zZWxlY3QgLmFnLWFuZ2xlLXNlbGVjdC1maWVsZCAuYWctcGFyZW50LWNpcmNsZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cXG4gIC5hZy1hbmdsZS1zZWxlY3QgLmFnLWFuZ2xlLXNlbGVjdC1maWVsZCAuYWctY2hpbGQtY2lyY2xlIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlOyB9XFxuXFxuLmFnLXBpY2tlci1maWVsZCB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxcbiAgLmFnLXBpY2tlci1maWVsZCA+IC5hZy13cmFwcGVyID4gYnV0dG9uIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBib3JkZXI6IDA7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIG1hcmdpbjogMDsgfVxcblxcbi5hZy1jb2xvci1waWNrZXIgPiAuYWctd3JhcHBlciB7XFxuICAtd2Via2l0LWJveC1hbGlnbjogc3RyZXRjaDtcXG4gIC1tcy1mbGV4LWFsaWduOiBzdHJldGNoO1xcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XFxuICBvdmVyZmxvdzogaGlkZGVuOyB9XFxuXFxuLmFnLWNvbG9yLXBpY2tlciBidXR0b24ge1xcbiAgY3Vyc29yOiBwb2ludGVyOyB9XFxuXFxuLmFnLWxhYmVsZWQuYWctbGFiZWwtYWxpZ24tcmlnaHQgbGFiZWwge1xcbiAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMjtcXG4gIC1tcy1mbGV4LW9yZGVyOiAxO1xcbiAgb3JkZXI6IDE7IH1cXG5cXG4uYWctbGFiZWxlZC5hZy1sYWJlbC1hbGlnbi1yaWdodCA+IGRpdiB7XFxuICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgLW1zLWZsZXg6IG5vbmU7XFxuICBmbGV4OiBub25lOyB9XFxuXFxuLmFnLWxhYmVsZWQuYWctbGFiZWwtYWxpZ24tdG9wIHtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XFxuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIC13ZWJraXQtYm94LWFsaWduOiBzdGFydDtcXG4gIC1tcy1mbGV4LWFsaWduOiBzdGFydDtcXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyB9XFxuICAuYWctbGFiZWxlZC5hZy1sYWJlbC1hbGlnbi10b3AgPiBkaXYge1xcbiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBzdHJldGNoO1xcbiAgICBhbGlnbi1zZWxmOiBzdHJldGNoOyB9XFxuXFxuLmFnLWNvbG9yLXBhbmVsIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG4gIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XFxuICAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLWNvbG9yIHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICBmbGV4OiAxIDEgYXV0bztcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICBjdXJzb3I6IGRlZmF1bHQ7IH1cXG4gIC5hZy1jb2xvci1wYW5lbCAuYWctZmlsbCB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgdG9wOiAwO1xcbiAgICBsZWZ0OiAwO1xcbiAgICByaWdodDogMDtcXG4gICAgYm90dG9tOiAwOyB9XFxuICAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLXZhbCB7XFxuICAgIGN1cnNvcjogcG9pbnRlcjsgfVxcbiAgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1kcmFnZ2VyIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gICAgY3Vyc29yOiBwb2ludGVyOyB9XFxuICAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLWh1ZSB7XFxuICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIHJpZ2h0IHRvcCwgbGVmdCB0b3AsIGNvbG9yLXN0b3AoMyUsICNmZjAwMDApLCBjb2xvci1zdG9wKDE3JSwgI2ZmZmYwMCksIGNvbG9yLXN0b3AoMzMlLCAjMDBmZjAwKSwgY29sb3Itc3RvcCg1MCUsICMwMGZmZmYpLCBjb2xvci1zdG9wKDY3JSwgIzAwMDBmZiksIGNvbG9yLXN0b3AoODMlLCAjZmYwMGZmKSwgdG8oI2ZmMDAwMCkpO1xcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgI2ZmMDAwMCAzJSwgI2ZmZmYwMCAxNyUsICMwMGZmMDAgMzMlLCAjMDBmZmZmIDUwJSwgIzAwMDBmZiA2NyUsICNmZjAwZmYgODMlLCAjZmYwMDAwIDEwMCUpOyB9XFxuICAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLWFscGhhIHtcXG4gICAgY3Vyc29yOiBkZWZhdWx0OyB9XFxuICAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLWh1ZS1iYWNrZ3JvdW5kIHtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIGhlaWdodDogMTAwJTsgfVxcbiAgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1hbHBoYS1iYWNrZ3JvdW5kIHtcXG4gICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCByaWdodCB0b3AsIGZyb20ocmdiYSgwLCAwLCAwLCAwKSksIHRvKGJsYWNrKSk7XFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwKSwgYmxhY2spO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgaGVpZ2h0OiAxMDAlOyB9XFxuICAuYWctY29sb3ItcGFuZWwgLmFnLWh1ZS1hbHBoYSB7XFxuICAgIGN1cnNvcjogcG9pbnRlcjsgfVxcbiAgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1zbGlkZXIge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lOyB9XFxuICAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLXRleHQtdmFsdWUge1xcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxcbiAgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS10ZXh0LXZhbHVlOmZvY3VzIHtcXG4gICAgb3V0bGluZTogbm9uZTtcXG4gICAgb3V0bGluZS1vZmZzZXQ6IDA7IH1cXG4gIC5hZy1jb2xvci1wYW5lbCAuYWctcmVjZW50LWNvbG9ycyB7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDsgfVxcbiAgICAuYWctY29sb3ItcGFuZWwgLmFnLXJlY2VudC1jb2xvcnMgPiBkaXYge1xcbiAgICAgIGN1cnNvcjogcG9pbnRlcjsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMSB7XFxuICBwYWRkaW5nLWxlZnQ6IDEwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTEge1xcbiAgcGFkZGluZy1yaWdodDogMTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMSB7XFxuICBwYWRkaW5nLWxlZnQ6IDEwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEge1xcbiAgcGFkZGluZy1yaWdodDogMTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMiB7XFxuICBwYWRkaW5nLWxlZnQ6IDIwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTIge1xcbiAgcGFkZGluZy1yaWdodDogMjBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMiB7XFxuICBwYWRkaW5nLWxlZnQ6IDIwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTIge1xcbiAgcGFkZGluZy1yaWdodDogMjBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMyB7XFxuICBwYWRkaW5nLWxlZnQ6IDMwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTMge1xcbiAgcGFkZGluZy1yaWdodDogMzBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMyB7XFxuICBwYWRkaW5nLWxlZnQ6IDMwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTMge1xcbiAgcGFkZGluZy1yaWdodDogMzBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNCB7XFxuICBwYWRkaW5nLWxlZnQ6IDQwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTQge1xcbiAgcGFkZGluZy1yaWdodDogNDBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNCB7XFxuICBwYWRkaW5nLWxlZnQ6IDQwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQge1xcbiAgcGFkZGluZy1yaWdodDogNDBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNSB7XFxuICBwYWRkaW5nLWxlZnQ6IDUwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTUge1xcbiAgcGFkZGluZy1yaWdodDogNTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNSB7XFxuICBwYWRkaW5nLWxlZnQ6IDUwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTUge1xcbiAgcGFkZGluZy1yaWdodDogNTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNiB7XFxuICBwYWRkaW5nLWxlZnQ6IDYwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTYge1xcbiAgcGFkZGluZy1yaWdodDogNjBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNiB7XFxuICBwYWRkaW5nLWxlZnQ6IDYwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTYge1xcbiAgcGFkZGluZy1yaWdodDogNjBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNyB7XFxuICBwYWRkaW5nLWxlZnQ6IDcwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTcge1xcbiAgcGFkZGluZy1yaWdodDogNzBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNyB7XFxuICBwYWRkaW5nLWxlZnQ6IDcwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTcge1xcbiAgcGFkZGluZy1yaWdodDogNzBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtOCB7XFxuICBwYWRkaW5nLWxlZnQ6IDgwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTgge1xcbiAgcGFkZGluZy1yaWdodDogODBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtOCB7XFxuICBwYWRkaW5nLWxlZnQ6IDgwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTgge1xcbiAgcGFkZGluZy1yaWdodDogODBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtOSB7XFxuICBwYWRkaW5nLWxlZnQ6IDkwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTkge1xcbiAgcGFkZGluZy1yaWdodDogOTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtOSB7XFxuICBwYWRkaW5nLWxlZnQ6IDkwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTkge1xcbiAgcGFkZGluZy1yaWdodDogOTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTAge1xcbiAgcGFkZGluZy1sZWZ0OiAxMDBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTAge1xcbiAgcGFkZGluZy1yaWdodDogMTAwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEwIHtcXG4gIHBhZGRpbmctbGVmdDogMTAwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEwIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDEwMHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xMSB7XFxuICBwYWRkaW5nLWxlZnQ6IDExMHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xMSB7XFxuICBwYWRkaW5nLXJpZ2h0OiAxMTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTEge1xcbiAgcGFkZGluZy1sZWZ0OiAxMTBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTEge1xcbiAgcGFkZGluZy1yaWdodDogMTEwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTEyIHtcXG4gIHBhZGRpbmctbGVmdDogMTIwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTEyIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDEyMHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xMiB7XFxuICBwYWRkaW5nLWxlZnQ6IDEyMHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xMiB7XFxuICBwYWRkaW5nLXJpZ2h0OiAxMjBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTMge1xcbiAgcGFkZGluZy1sZWZ0OiAxMzBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTMge1xcbiAgcGFkZGluZy1yaWdodDogMTMwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEzIHtcXG4gIHBhZGRpbmctbGVmdDogMTMwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEzIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDEzMHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xNCB7XFxuICBwYWRkaW5nLWxlZnQ6IDE0MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xNCB7XFxuICBwYWRkaW5nLXJpZ2h0OiAxNDBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTQge1xcbiAgcGFkZGluZy1sZWZ0OiAxNDBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTQge1xcbiAgcGFkZGluZy1yaWdodDogMTQwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTE1IHtcXG4gIHBhZGRpbmctbGVmdDogMTUwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTE1IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDE1MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xNSB7XFxuICBwYWRkaW5nLWxlZnQ6IDE1MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xNSB7XFxuICBwYWRkaW5nLXJpZ2h0OiAxNTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTYge1xcbiAgcGFkZGluZy1sZWZ0OiAxNjBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTYge1xcbiAgcGFkZGluZy1yaWdodDogMTYwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE2IHtcXG4gIHBhZGRpbmctbGVmdDogMTYwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE2IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDE2MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xNyB7XFxuICBwYWRkaW5nLWxlZnQ6IDE3MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xNyB7XFxuICBwYWRkaW5nLXJpZ2h0OiAxNzBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTcge1xcbiAgcGFkZGluZy1sZWZ0OiAxNzBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTcge1xcbiAgcGFkZGluZy1yaWdodDogMTcwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTE4IHtcXG4gIHBhZGRpbmctbGVmdDogMTgwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTE4IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDE4MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xOCB7XFxuICBwYWRkaW5nLWxlZnQ6IDE4MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xOCB7XFxuICBwYWRkaW5nLXJpZ2h0OiAxODBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTkge1xcbiAgcGFkZGluZy1sZWZ0OiAxOTBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTkge1xcbiAgcGFkZGluZy1yaWdodDogMTkwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE5IHtcXG4gIHBhZGRpbmctbGVmdDogMTkwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE5IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDE5MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yMCB7XFxuICBwYWRkaW5nLWxlZnQ6IDIwMHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yMCB7XFxuICBwYWRkaW5nLXJpZ2h0OiAyMDBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjAge1xcbiAgcGFkZGluZy1sZWZ0OiAyMDBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjAge1xcbiAgcGFkZGluZy1yaWdodDogMjAwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTIxIHtcXG4gIHBhZGRpbmctbGVmdDogMjEwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTIxIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDIxMHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yMSB7XFxuICBwYWRkaW5nLWxlZnQ6IDIxMHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yMSB7XFxuICBwYWRkaW5nLXJpZ2h0OiAyMTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjIge1xcbiAgcGFkZGluZy1sZWZ0OiAyMjBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjIge1xcbiAgcGFkZGluZy1yaWdodDogMjIwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTIyIHtcXG4gIHBhZGRpbmctbGVmdDogMjIwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTIyIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDIyMHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yMyB7XFxuICBwYWRkaW5nLWxlZnQ6IDIzMHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yMyB7XFxuICBwYWRkaW5nLXJpZ2h0OiAyMzBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjMge1xcbiAgcGFkZGluZy1sZWZ0OiAyMzBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjMge1xcbiAgcGFkZGluZy1yaWdodDogMjMwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTI0IHtcXG4gIHBhZGRpbmctbGVmdDogMjQwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTI0IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDI0MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yNCB7XFxuICBwYWRkaW5nLWxlZnQ6IDI0MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yNCB7XFxuICBwYWRkaW5nLXJpZ2h0OiAyNDBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjUge1xcbiAgcGFkZGluZy1sZWZ0OiAyNTBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjUge1xcbiAgcGFkZGluZy1yaWdodDogMjUwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI1IHtcXG4gIHBhZGRpbmctbGVmdDogMjUwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI1IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDI1MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yNiB7XFxuICBwYWRkaW5nLWxlZnQ6IDI2MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yNiB7XFxuICBwYWRkaW5nLXJpZ2h0OiAyNjBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjYge1xcbiAgcGFkZGluZy1sZWZ0OiAyNjBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjYge1xcbiAgcGFkZGluZy1yaWdodDogMjYwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTI3IHtcXG4gIHBhZGRpbmctbGVmdDogMjcwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTI3IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDI3MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yNyB7XFxuICBwYWRkaW5nLWxlZnQ6IDI3MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yNyB7XFxuICBwYWRkaW5nLXJpZ2h0OiAyNzBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjgge1xcbiAgcGFkZGluZy1sZWZ0OiAyODBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjgge1xcbiAgcGFkZGluZy1yaWdodDogMjgwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI4IHtcXG4gIHBhZGRpbmctbGVmdDogMjgwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI4IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDI4MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yOSB7XFxuICBwYWRkaW5nLWxlZnQ6IDI5MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yOSB7XFxuICBwYWRkaW5nLXJpZ2h0OiAyOTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjkge1xcbiAgcGFkZGluZy1sZWZ0OiAyOTBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjkge1xcbiAgcGFkZGluZy1yaWdodDogMjkwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTMwIHtcXG4gIHBhZGRpbmctbGVmdDogMzAwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTMwIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDMwMHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zMCB7XFxuICBwYWRkaW5nLWxlZnQ6IDMwMHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zMCB7XFxuICBwYWRkaW5nLXJpZ2h0OiAzMDBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzEge1xcbiAgcGFkZGluZy1sZWZ0OiAzMTBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzEge1xcbiAgcGFkZGluZy1yaWdodDogMzEwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTMxIHtcXG4gIHBhZGRpbmctbGVmdDogMzEwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTMxIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDMxMHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0zMiB7XFxuICBwYWRkaW5nLWxlZnQ6IDMyMHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zMiB7XFxuICBwYWRkaW5nLXJpZ2h0OiAzMjBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzIge1xcbiAgcGFkZGluZy1sZWZ0OiAzMjBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzIge1xcbiAgcGFkZGluZy1yaWdodDogMzIwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTMzIHtcXG4gIHBhZGRpbmctbGVmdDogMzMwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTMzIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDMzMHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zMyB7XFxuICBwYWRkaW5nLWxlZnQ6IDMzMHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zMyB7XFxuICBwYWRkaW5nLXJpZ2h0OiAzMzBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzQge1xcbiAgcGFkZGluZy1sZWZ0OiAzNDBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzQge1xcbiAgcGFkZGluZy1yaWdodDogMzQwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTM0IHtcXG4gIHBhZGRpbmctbGVmdDogMzQwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTM0IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDM0MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0zNSB7XFxuICBwYWRkaW5nLWxlZnQ6IDM1MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zNSB7XFxuICBwYWRkaW5nLXJpZ2h0OiAzNTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzUge1xcbiAgcGFkZGluZy1sZWZ0OiAzNTBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzUge1xcbiAgcGFkZGluZy1yaWdodDogMzUwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTM2IHtcXG4gIHBhZGRpbmctbGVmdDogMzYwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTM2IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDM2MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zNiB7XFxuICBwYWRkaW5nLWxlZnQ6IDM2MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zNiB7XFxuICBwYWRkaW5nLXJpZ2h0OiAzNjBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzcge1xcbiAgcGFkZGluZy1sZWZ0OiAzNzBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzcge1xcbiAgcGFkZGluZy1yaWdodDogMzcwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTM3IHtcXG4gIHBhZGRpbmctbGVmdDogMzcwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTM3IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDM3MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0zOCB7XFxuICBwYWRkaW5nLWxlZnQ6IDM4MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zOCB7XFxuICBwYWRkaW5nLXJpZ2h0OiAzODBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzgge1xcbiAgcGFkZGluZy1sZWZ0OiAzODBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzgge1xcbiAgcGFkZGluZy1yaWdodDogMzgwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTM5IHtcXG4gIHBhZGRpbmctbGVmdDogMzkwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTM5IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDM5MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zOSB7XFxuICBwYWRkaW5nLWxlZnQ6IDM5MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zOSB7XFxuICBwYWRkaW5nLXJpZ2h0OiAzOTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDAge1xcbiAgcGFkZGluZy1sZWZ0OiA0MDBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDAge1xcbiAgcGFkZGluZy1yaWdodDogNDAwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQwIHtcXG4gIHBhZGRpbmctbGVmdDogNDAwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQwIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDQwMHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00MSB7XFxuICBwYWRkaW5nLWxlZnQ6IDQxMHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00MSB7XFxuICBwYWRkaW5nLXJpZ2h0OiA0MTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDEge1xcbiAgcGFkZGluZy1sZWZ0OiA0MTBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDEge1xcbiAgcGFkZGluZy1yaWdodDogNDEwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTQyIHtcXG4gIHBhZGRpbmctbGVmdDogNDIwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTQyIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDQyMHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00MiB7XFxuICBwYWRkaW5nLWxlZnQ6IDQyMHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00MiB7XFxuICBwYWRkaW5nLXJpZ2h0OiA0MjBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDMge1xcbiAgcGFkZGluZy1sZWZ0OiA0MzBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDMge1xcbiAgcGFkZGluZy1yaWdodDogNDMwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQzIHtcXG4gIHBhZGRpbmctbGVmdDogNDMwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQzIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDQzMHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00NCB7XFxuICBwYWRkaW5nLWxlZnQ6IDQ0MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00NCB7XFxuICBwYWRkaW5nLXJpZ2h0OiA0NDBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDQge1xcbiAgcGFkZGluZy1sZWZ0OiA0NDBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDQge1xcbiAgcGFkZGluZy1yaWdodDogNDQwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTQ1IHtcXG4gIHBhZGRpbmctbGVmdDogNDUwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTQ1IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDQ1MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00NSB7XFxuICBwYWRkaW5nLWxlZnQ6IDQ1MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00NSB7XFxuICBwYWRkaW5nLXJpZ2h0OiA0NTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDYge1xcbiAgcGFkZGluZy1sZWZ0OiA0NjBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDYge1xcbiAgcGFkZGluZy1yaWdodDogNDYwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ2IHtcXG4gIHBhZGRpbmctbGVmdDogNDYwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ2IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDQ2MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00NyB7XFxuICBwYWRkaW5nLWxlZnQ6IDQ3MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00NyB7XFxuICBwYWRkaW5nLXJpZ2h0OiA0NzBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDcge1xcbiAgcGFkZGluZy1sZWZ0OiA0NzBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDcge1xcbiAgcGFkZGluZy1yaWdodDogNDcwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTQ4IHtcXG4gIHBhZGRpbmctbGVmdDogNDgwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTQ4IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDQ4MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00OCB7XFxuICBwYWRkaW5nLWxlZnQ6IDQ4MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00OCB7XFxuICBwYWRkaW5nLXJpZ2h0OiA0ODBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDkge1xcbiAgcGFkZGluZy1sZWZ0OiA0OTBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDkge1xcbiAgcGFkZGluZy1yaWdodDogNDkwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ5IHtcXG4gIHBhZGRpbmctbGVmdDogNDkwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ5IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDQ5MHB4OyB9XFxuXFxuLmFnLWx0ciB7XFxuICBkaXJlY3Rpb246IGx0cjsgfVxcbiAgLmFnLWx0ciAuYWctYm9keSwgLmFnLWx0ciAuYWctZmxvYXRpbmctdG9wLCAuYWctbHRyIC5hZy1mbG9hdGluZy1ib3R0b20sIC5hZy1sdHIgLmFnLWhlYWRlciwgLmFnLWx0ciAuYWctYm9keS12aWV3cG9ydCwgLmFnLWx0ciAuYWctYm9keS1ob3Jpem9udGFsLXNjcm9sbCB7XFxuICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDtcXG4gICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93OyB9XFxuICAuYWctbHRyIC5hZy1oZWFkZXItY2VsbC1yZXNpemUge1xcbiAgICByaWdodDogLTRweDsgfVxcbiAgLmFnLWx0ciAuYWctcGlubmVkLXJpZ2h0LWhlYWRlciAuYWctaGVhZGVyLWNlbGwtcmVzaXplIHtcXG4gICAgbGVmdDogLTRweDsgfVxcblxcbi5hZy1ydGwge1xcbiAgZGlyZWN0aW9uOiBydGw7IH1cXG4gIC5hZy1ydGwgLmFnLWJvZHksIC5hZy1ydGwgLmFnLWZsb2F0aW5nLXRvcCwgLmFnLXJ0bCAuYWctZmxvYXRpbmctYm90dG9tLCAuYWctcnRsIC5hZy1oZWFkZXIsIC5hZy1ydGwgLmFnLWJvZHktdmlld3BvcnQsIC5hZy1ydGwgLmFnLWJvZHktaG9yaXpvbnRhbC1zY3JvbGwge1xcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7XFxuICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogcmV2ZXJzZTtcXG4gICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcXG4gICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOyB9XFxuICAuYWctcnRsIC5hZy1oZWFkZXItY2VsbC1yZXNpemUge1xcbiAgICBsZWZ0OiAtNHB4OyB9XFxuICAuYWctcnRsIC5hZy1waW5uZWQtbGVmdC1oZWFkZXIgLmFnLWhlYWRlci1jZWxsLXJlc2l6ZSB7XFxuICAgIHJpZ2h0OiAtNHB4OyB9XFxuXFxuQG1lZGlhIHByaW50IHtcXG4gIC5hZy1ib2R5LXZpZXdwb3J0IHtcXG4gICAgZGlzcGxheTogYmxvY2s7IH1cXG4gIC5hZy1yb3cge1xcbiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7IH0gfVxcblxcbi5hZy1ib2R5IC5hZy1waW5uZWQtbGVmdC1jb2xzLXZpZXdwb3J0LCAuYWctYm9keSAuYWctYm9keS12aWV3cG9ydCwgLmFnLWJvZHkgLmFnLXBpbm5lZC1yaWdodC1jb2xzLXZpZXdwb3J0IHtcXG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsgfVxcblxcbi5hZy1jaGFydCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTsgfVxcbiAgLmFnLWNoYXJ0IC5hZy1jaGFydC1jb21wb25lbnRzLXdyYXBwZXIge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgICAgIC1tcy1mbGV4OiAxIDEgYXV0bztcXG4gICAgICAgICAgICBmbGV4OiAxIDEgYXV0bztcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxcbiAgICAuYWctY2hhcnQgLmFnLWNoYXJ0LWNvbXBvbmVudHMtd3JhcHBlciAuYWctY2hhcnQtY2FudmFzLXdyYXBwZXIge1xcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgICAgICAtbXMtZmxleDogMSAxIGF1dG87XFxuICAgICAgICAgICAgICBmbGV4OiAxIDEgYXV0bztcXG4gICAgICBvdmVyZmxvdzogaGlkZGVuOyB9XFxuICAgICAgLmFnLWNoYXJ0IC5hZy1jaGFydC1jb21wb25lbnRzLXdyYXBwZXIgLmFnLWNoYXJ0LWNhbnZhcy13cmFwcGVyIGNhbnZhcyB7XFxuICAgICAgICBkaXNwbGF5OiBibG9jazsgfVxcbiAgICAuYWctY2hhcnQgLmFnLWNoYXJ0LWNvbXBvbmVudHMtd3JhcHBlciAuYWctY2hhcnQtbWVudSB7XFxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgIHRvcDogMTBweDtcXG4gICAgICByaWdodDogMjBweDtcXG4gICAgICB3aWR0aDogMjRweDtcXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG4gICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyB9XFxuICAuYWctY2hhcnQ6bm90KC5hZy1oYXMtbWVudSk6aG92ZXIgLmFnLWNoYXJ0LW1lbnUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgICBwb2ludGVyLWV2ZW50czogYWxsOyB9XFxuICAuYWctY2hhcnQgLmFnLWNoYXJ0LWRvY2tlZC1jb250YWluZXIge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIHdpZHRoOiAwO1xcbiAgICBtaW4td2lkdGg6IDA7XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogbWluLXdpZHRoIDAuNHM7XFxuICAgIHRyYW5zaXRpb246IG1pbi13aWR0aCAwLjRzOyB9XFxuICAgIC5hZy1jaGFydCAuYWctY2hhcnQtZG9ja2VkLWNvbnRhaW5lciAuYWctcGFuZWwge1xcbiAgICAgIGJvcmRlci13aWR0aDogMCAwIDAgMXB4OyB9XFxuXFxuLmFnLWNoYXJ0LXRhYmJlZC1tZW51ID4gZGl2IHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBvdmVyZmxvdzogaGlkZGVuOyB9XFxuXFxuLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy10YWItaGVhZGVyIHtcXG4gIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgLW1zLWZsZXg6IG5vbmU7XFxuICAgICAgICAgIGZsZXg6IG5vbmU7XFxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xcbiAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xcbiAgY3Vyc29yOiBkZWZhdWx0OyB9XFxuXFxuLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy10YWItYm9keSB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICAgICAgICBmbGV4OiAxIDEgYXV0bztcXG4gIC13ZWJraXQtYm94LWFsaWduOiBzdHJldGNoO1xcbiAgICAgIC1tcy1mbGV4LWFsaWduOiBzdHJldGNoO1xcbiAgICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcXG4gIG92ZXJmbG93OiBoaWRkZW47IH1cXG4gIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctdGFiLWJvZHkgPiBkaXYge1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgb3ZlcmZsb3cteTogYXV0bzsgfVxcblxcbi5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3Mge1xcbiAgb3ZlcmZsb3cteDogaGlkZGVuOyB9XFxuICAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy13cmFwcGVyIHtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxcbiAgICAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy13cmFwcGVyIC5hZy1jaGFydC1zZXR0aW5ncy1uYXYtYmFyIHtcXG4gICAgICB3aWR0aDogMTAwJTtcXG4gICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgIGhlaWdodDogMzBweDtcXG4gICAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxcbiAgICAgIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLXdyYXBwZXIgLmFnLWNoYXJ0LXNldHRpbmdzLW5hdi1iYXIgLmFnLW5hdi1jYXJkLXNlbGVjdG9yIHtcXG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgICAgLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZTtcXG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcXG4gICAgICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgICAgICAgICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICAgICAgICAgICAgICBmbGV4OiAxIDEgYXV0bztcXG4gICAgICAgIGhlaWdodDogMTAwJTsgfVxcbiAgICAgICAgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3Mtd3JhcHBlciAuYWctY2hhcnQtc2V0dGluZ3MtbmF2LWJhciAuYWctbmF2LWNhcmQtc2VsZWN0b3IgLmFnLW5hdi1jYXJkLWl0ZW0ge1xcbiAgICAgICAgICBvcGFjaXR5OiAwLjI7IH1cXG4gICAgICAgICAgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3Mtd3JhcHBlciAuYWctY2hhcnQtc2V0dGluZ3MtbmF2LWJhciAuYWctbmF2LWNhcmQtc2VsZWN0b3IgLmFnLW5hdi1jYXJkLWl0ZW0uYWctc2VsZWN0ZWQge1xcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7IH1cXG4gICAgICAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy13cmFwcGVyIC5hZy1jaGFydC1zZXR0aW5ncy1uYXYtYmFyIC5hZy1jaGFydC1zZXR0aW5ncy1wcmV2LWJ0biwgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3Mtd3JhcHBlciAuYWctY2hhcnQtc2V0dGluZ3MtbmF2LWJhciAuYWctY2hhcnQtc2V0dGluZ3MtbmV4dC1idG4ge1xcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICAgICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgICAgICAtbXMtZmxleDogbm9uZTtcXG4gICAgICAgICAgICAgICAgZmxleDogbm9uZTsgfVxcbiAgICAgICAgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3Mtd3JhcHBlciAuYWctY2hhcnQtc2V0dGluZ3MtbmF2LWJhciAuYWctY2hhcnQtc2V0dGluZ3MtcHJldi1idG4gYnV0dG9uLCAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy13cmFwcGVyIC5hZy1jaGFydC1zZXR0aW5ncy1uYXYtYmFyIC5hZy1jaGFydC1zZXR0aW5ncy1uZXh0LWJ0biBidXR0b24ge1xcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICAgIHRvcDogMDtcXG4gICAgICAgICAgbGVmdDogMDtcXG4gICAgICAgICAgd2lkdGg6IDEwMCU7XFxuICAgICAgICAgIGhlaWdodDogMTAwJTtcXG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICAgICAgICBvcGFjaXR5OiAwOyB9XFxuICAgIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLXdyYXBwZXIgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktY2hhcnRzLWNvbnRhaW5lciB7XFxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgICAgICAgIC1tcy1mbGV4OiAxIDEgYXV0bztcXG4gICAgICAgICAgICAgIGZsZXg6IDEgMSBhdXRvO1xcbiAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcXG4gICAgICBvdmVyZmxvdy15OiBhdXRvOyB9XFxuICAgICAgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3Mtd3JhcHBlciAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS1jaGFydHMtY29udGFpbmVyIC5hZy1jaGFydC1zZXR0aW5ncy1taW5pLXdyYXBwZXIge1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgdG9wOiAwO1xcbiAgICAgICAgbGVmdDogMDtcXG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG4gICAgICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgICAgICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgd2lkdGg6IDEwMCU7XFxuICAgICAgICBtaW4taGVpZ2h0OiAxMDAlO1xcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxcbiAgICAgICAgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3Mtd3JhcHBlciAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS1jaGFydHMtY29udGFpbmVyIC5hZy1jaGFydC1zZXR0aW5ncy1taW5pLXdyYXBwZXIgLmFnLWdyb3VwLWNvbXBvbmVudCB7XFxuICAgICAgICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgICAgICAgICAtbXMtZmxleDogbm9uZTtcXG4gICAgICAgICAgICAgICAgICBmbGV4OiBub25lOyB9XFxuICAgICAgICAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy13cmFwcGVyIC5hZy1jaGFydC1zZXR0aW5ncy1taW5pLWNoYXJ0cy1jb250YWluZXIgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktd3JhcHBlciAuYWctZ3JvdXAtY29tcG9uZW50LWNvbnRhaW5lciB7XFxuICAgICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDtcXG4gICAgICAgICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAgICAgICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdztcXG4gICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgICAgICAgICAtbXMtZmxleC13cmFwOiB3cmFwO1xcbiAgICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwOyB9XFxuICAgICAgICAgIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLXdyYXBwZXIgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktY2hhcnRzLWNvbnRhaW5lciAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS13cmFwcGVyIC5hZy1ncm91cC1jb21wb25lbnQtY29udGFpbmVyIC5hZy1jaGFydC1taW5pLXRodW1ibmFpbCB7XFxuICAgICAgICAgICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgICAgICAgICAgLW1zLWZsZXg6IG5vbmU7XFxuICAgICAgICAgICAgICAgICAgICBmbGV4OiBub25lOyB9XFxuICAgICAgICAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy13cmFwcGVyIC5hZy1jaGFydC1zZXR0aW5ncy1taW5pLWNoYXJ0cy1jb250YWluZXIgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktd3JhcHBlci5hZy1hbmltYXRpbmcsIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLXdyYXBwZXIgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktY2hhcnRzLWNvbnRhaW5lciAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS13cmFwcGVyLmFnLWFuaW1hdGluZyB7XFxuICAgICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogbGVmdCAwLjNzO1xcbiAgICAgICAgICB0cmFuc2l0aW9uOiBsZWZ0IDAuM3M7XFxuICAgICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0O1xcbiAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDsgfVxcbiAgICAgICAgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3Mtd3JhcHBlciAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS1jaGFydHMtY29udGFpbmVyIC5hZy1jaGFydC1zZXR0aW5ncy1taW5pLXdyYXBwZXIgLmFnLWNoYXJ0LW1pbmktdGh1bWJuYWlsIHtcXG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyOyB9XFxuICAgICAgICAgIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLXdyYXBwZXIgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktY2hhcnRzLWNvbnRhaW5lciAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS13cmFwcGVyIC5hZy1jaGFydC1taW5pLXRodW1ibmFpbCBjYW52YXMge1xcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOyB9XFxuXFxuLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1kYXRhLXdyYXBwZXIsIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtZm9ybWF0LXdyYXBwZXIge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xcbiAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lOyB9XFxuICAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LWRhdGEtd3JhcHBlciA+IGRpdiwgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1mb3JtYXQtd3JhcHBlciA+IGRpdiB7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMnB4OyB9XFxuICAgIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtZGF0YS13cmFwcGVyID4gZGl2Om5vdCg6Zmlyc3QtY2hpbGQpLCAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LWZvcm1hdC13cmFwcGVyID4gZGl2Om5vdCg6Zmlyc3QtY2hpbGQpIHtcXG4gICAgICBtYXJnaW4tdG9wOiAwOyB9XFxuXFxuLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1mb3JtYXQtd3JhcHBlciB7XFxuICBvdmVyZmxvdy14OiBoaWRkZW47IH1cXG4gIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtZm9ybWF0LXdyYXBwZXIgLmFnLWdyb3VwLWNvbXBvbmVudCAuYWctZ3JvdXAtc3ViZ3JvdXAge1xcbiAgICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5O1xcbiAgICAgICAgLW1zLWZsZXgtcGFjazoganVzdGlmeTtcXG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IH1cXG5cXG4uYWctY2hhcnQgLmFnLWNoYXJ0LW1lbnUge1xcbiAgb3BhY2l0eTogMDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lOyB9XFxuICAuYWctY2hhcnQgLmFnLWNoYXJ0LW1lbnUgPiBzcGFuIHtcXG4gICAgb3BhY2l0eTogMC41O1xcbiAgICBsaW5lLWhlaWdodDogMjRweDtcXG4gICAgZm9udC1zaXplOiAyNHB4O1xcbiAgICB3aWR0aDogMjRweDtcXG4gICAgaGVpZ2h0OiAyNHB4O1xcbiAgICBtYXJnaW46IDJweCAwO1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7IH1cXG4gICAgLmFnLWNoYXJ0IC5hZy1jaGFydC1tZW51ID4gc3Bhbjpob3ZlciB7XFxuICAgICAgYm9yZGVyLXJhZGl1czogNXB4OyB9XFxuXFxuLmFnLWNoYXJ0IC5hZy1jaGFydC1kb2NrZWQtY29udGFpbmVyIHtcXG4gIG1pbi13aWR0aDogMDtcXG4gIHdpZHRoOiAwOyB9XFxuXFxuLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy10YWItYm9keSB7XFxuICBwYWRkaW5nOiAwOyB9XFxuXFxuLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3MtbmF2LWJhciB7XFxuICBwYWRkaW5nOiAwIDEwcHg7XFxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xcbiAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lOyB9XFxuICAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy1uYXYtYmFyIC5hZy1uYXYtY2FyZC1zZWxlY3RvciB7XFxuICAgIHBhZGRpbmc6IDAgMTBweDsgfVxcbiAgICAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy1uYXYtYmFyIC5hZy1uYXYtY2FyZC1zZWxlY3RvciAuYWctbmF2LWNhcmQtaXRlbSB7XFxuICAgICAgY3Vyc29yOiBwb2ludGVyOyB9XFxuXFxuXCIiLCJtb2R1bGUuZXhwb3J0cyA9IFwiQGNoYXJzZXQgXFxcIlVURi04XFxcIjtcXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiYWdHcmlkQmFsaGFtXFxcIjtcXG4gIHNyYzogdXJsKFxcXCJkYXRhOmFwcGxpY2F0aW9uL3gtZm9udC10dGY7Y2hhcnNldD11dGYtODtiYXNlNjQsQUFFQUFBQUxBSUFBQXdBd1QxTXZNZzhTQmxNQUFBQzhBQUFBWUdOdFlYQVhWdEs2QUFBQkhBQUFBRlJuWVhOd0FBQUFFQUFBQVhBQUFBQUlaMng1WnFNdXkzZ0FBQUY0QUFBYkRHaGxZV1FWb21PWEFBQWNoQUFBQURab2FHVmhCOElEK1FBQUhMd0FBQUFrYUcxMGVOWUFJbllBQUJ6Z0FBQUE0R3h2WTJIRW1MNGFBQUFkd0FBQUFISnRZWGh3QUVVQWxRQUFIalFBQUFBZ2JtRnRaWlFYeEtRQUFCNVVBQUFCa25CdmMzUUFBd0FBQUFBZjZBQUFBQ0FBQXdQMkFaQUFCUUFBQXBrQ3pBQUFBSThDbVFMTUFBQUI2d0F6QVFrQUFBQUFBQUFBQUFBQUFBQUFBQUFCRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFEcE13UEEvOEFBUUFQQUFFQUFBQUFCQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFEQUFBQUF3QUFBQndBQVFBREFBQUFIQUFEQUFFQUFBQWNBQVFBT0FBQUFBb0FDQUFDQUFJQUFRQWc2VFAvL2YvL0FBQUFBQUFnNlFELy9mLy9BQUgvNHhjRUFBTUFBUUFBQUFBQUFBQUFBQUFBQVFBQi8vOEFEd0FCQUFBQUFBQUFBQUFBQWdBQU56a0JBQUFBQUFFQUFBQUFBQUFBQUFBQ0FBQTNPUUVBQUFBQUFRQUFBQUFBQUFBQUFBSUFBRGM1QVFBQUFBQURBRC8vL3dQQkE0RUFKd0JRQUc0QUFBRWVBUmNXRlJZVUJ4UUhEZ0VIQmlNR0lpY2lKeTRCSnlZMUpqUTNORGMrQVRjMk16WXlGeklGSWdZSEJnY09BUmNVRng0QkZ4WVhGakkzTmpjK0FUYzJOelkwSnlZbkxnRW5KaU1pQmdjR0l3RWpOU0VWSGdFWEZnWUhEZ0VWSVRVekZTRTBOamMrQVNjdUFTYzFJUU1rUGx3Q0FRRUJBUUpjUGtsSlNaSkpTVWs5WFFJQkFRRUJBbHcrU1VsSmtrbEovZ1VsT2dFQkFRRUJBUU1DTlNSSlNVcVNTa2xKSkRVQ0F3RUJBUUVEQWpVa1NVaEprVWxJU1FIZ1FQOEFBWFVaRUFvWUoxWUJBRUQrZ0FZYkxXUWdMbUlDQVlBRGdBSmNQa2xKU1pKSlNVaytYQUlCQVFFQkFsdytTVWxKa2tsSlNUNWNBZ0VCQVVFNEpraEpTWkpKU1Vra05RSURBUUVCQVFNQ05TUkpTVXFTU2tsSkpEVUNBd0VCQWY4QVFBTWdRaXNjUkJjaVBScEFnQ1pNR0NkSEh5bEhORVVBQVFCVEFCTURyUU50QUNjQUFCTVhCeWMzSGdFWEJ5RVJCeWMzSGdFWEJ5Y1JJU2MzSGdFWEJ5YzNJUkUzSGdFWEJ5YzNGeEhOU2k2V2xnd1dERW9CRTBrdWx5WkxKaTVKQVJOS0xpVk1KWll1U3Y3dFNRd1dESmVYTGtrQm9Fa3VsNWNNRmd4SkFSTktMcFlsVENVdVN2N3RTUzRtU3lhWExrbis3VW9NRmd5V2xpNUtBUk1BQUFFQktRQ1pBdGNDNXdBS0FBQUJCeWMzSGdFWEJ5Y1JJd0hnaVM3WE5tczJMb2xBQW15SkxkYzJhell0aWY0dEFBTUFnQUJBQTRBRFFBQWJBRGNBUmdBQUFTSUhEZ0VIQmhVVUZ4NEJGeFl6TWpjK0FUYzJOVFFuTGdFbkpnY3lGeDRCRnhZVkZBY09BUWNHSXlJbkxnRW5KalUwTno0Qk56WVROeDRCRndjWEJ5Y0hKemNuTnhjQ0FFOUdSbWtlSGg0ZWFVWkdUMDlHUm1rZUhoNGVhVVpHVDBJN09sY1pHUmtaVnpvN1FrSTdPbGNaR1JrWlZ6bzdRcWtNRmd5cXFpNnBxUzZxcWk2cEEwQWVIbWxHUms5UFJrWnBIaDRlSG1sR1JrOVBSa1pwSGg1QUdSbFhPanRDUWpzNlZ4a1pHUmxYT2p0Q1FqczZWeGtaL3UycURCWU1xYWt1cXFvdXFha3VxZ0FEQU5VQWxRTXJBdXNBQkFBSkFBMEFBQk16RVNNUk56TVJJeEVUTXhFajFZQ0E3M2g0NzNoNEFqZitYZ0dpdFAycUFsYitxdjhBQUFNQUFQL0FCQUFEd0FBUEFDQUFLQUFBQlNFaUpqVVJORFl6SVRJV0ZSRVVCZ01oSWdZVkVSUVdNeUV5TmpVUk5DWWpCd0VuTnhjQkhnRURTUDF3VEd4c1RBS1FUR3hzU3YxdExVRkJMUUtUTFVGQUxneitWTkF6blFGNURScEFiRXdDa0V4c2JFejljRXhzQTdsQkxmMXRMa0JBTGdLVExVSDMvbFBSTkowQmVBMGFBQU1BQVAvQUJBQUR3QUFQQUNBQUpBQUFCU0VpSmpVUk5EWXpJVElXRlJFVUJnTWhJZ1lWRVJRV015RXlOalVSTkNZakF5RTFJUU5JL1hCTWJHeE1BcEJNYkd4Sy9XMHRRVUV0QXBNdFFVQXVKZjIyQWtwQWJFd0NrRXhzYkV6OWNFeHNBN2xCTGYxdExrQkFMZ0tUTFVIK0lrb0FBZ0FBLzhBRUFBUEFBQThBSUFBQUFUSVdGUkVVQmlNaElpWTFFVFEyTXdVaElnWVZFUlFXTXlFeU5qVVJOQ1lqQTBoTWJHeE0vWEJNYkd4TUFwTDliUzFCUVMwQ2t5MUJRQzREd0d4TS9YQk1iR3hNQXBCTWJFZEJMZjF0TGtCQUxnS1RMVUVBQUFBREFITUFTQU9OQXpnQUJnQUtBQllBQUFrQkJ4Y0pBaUUzRnlFRk1BWVZGQll6TWpZMU5DWUMvZjVWUEdiKzl3RkZBVVg5Nzh6TS9tZ0NURlV5SXlNeVZRR05BYXM4WnY3My9yc0JSYzNOUUdzcUl6SXlJeXByQUFBQUFBSUF3QUNnQWNBQzRBQURBQWNBQUNVaEVTRUhFVE1SQWNEL0FBRUF3SUNnQWtCQS9rQUJ3QUFFQU1BQW9BTkFBdUFBQXdBSEFBc0FEd0FBSlNNUk14TWpFVE1USXhFekFTTVJNd0hBUUVEQVFFREFRRUQ5d0VCQW9BSkEvY0FDUVAzQUFrRDl3QUpBQUFBQUFBRUJYZ0NwQXFJQzF3QUhBQUFCQnhjSENRRWVBUUtpNmVrdC91a0JGd3NYQXFucDZTNEJGd0VYREJZQUF3Q2dBRUFEWUFOQUFCQUFJQUF6QUFBbEl5SW1OUkUwTmpzQk1oWVZFUlFHSXhNaElnWVZFUlFXTXlFeU5qVVJOQ1lCSXp3Qk5SRTBOak1oT2dFekZTRWlCaFVSQXI3N1EyQmdRL3REWDE5REJmNzlKemMzSndFREp6YzMvZmRCWDBNQm1nRUNBZjVkSmpaQVgwUUJPa05nWUVQK3hrUmZBa0E0SnY2N0p6YzNKd0ZGSmpqK0FBRUVBZ0lYUTE5QU5pYjkzQUFBQUFBQkFTa0E2UUxYQXBjQURnQUFBVGNlQVJjSEZ3Y25CeWMzSnpjWEFnQ3BEQllNcXFvdXFha3VxcW91cVFIdHFnd1dES21wTHFxcUxxbXBMcW9BQUFBQUJRQkFBQUFEd0FPQUFDVUFNZ0EvQUVzQVVRQUFBVDRCTlRRbUl5SUdGUlFXTXpJMk54Y0hMZ0VqSWdZVkZCWXpNalkxTkNZbk53RXpOUUVISWlZMU5EWXpNaFlWRkFZakVTSW1OVFEyTXpJV0ZSUUdJd0VpSmpVME5qTXlGaFVVQmdrQkZ3RTFJd0dXQ0FocFNrcHBhVW9VSlJGcGFSRWxGRXBwYVVwS2FRZ0lhZ0U2aHYzV295VTBOQ1VsTlRVbEpUUTBKU1UxTlNVQkRRa05EUWtKRFEwQk1mN3pXUUU2aGdLREVTVVVTbWxwU2twcENBaHFhZ2dJYVVwS2FXbEtGQ1VSYWY3SExRSXBFRFVsSlRRMEpTVTEvZWMwSlNVMU5TVWxOQUZRRFFrSkRRMEpDUTBCcWY3eldRRTVMUUFBQndDR0FGWURlZ01xQUFzQUR3QWJBQ2dBTEFBNEFEd0FBRGNpQmhVVUZqTXlOalUwSmdVMUlSVURJZ1lWRkJZek1qWTFOQ1lITWhZVkZBWWpJaVkxTkRZekJTRTFJUUV5RmhVVUJpTWlKalUwTmdVaE5TSEdHaVltR2hzbEpRS1ovZWFhR2lZbUdoc2xKUnNTR1JrU0VSa1pFUUlKL3BFQmIvMzNHeVVsR3hvbUpnTE8vZVlDR3RZbUdoc2xKUnNhSm10VlZRR1ZKaG9hSmlZYUdpWVZHUklTR1JrU0VobFdWZ0UvSlJzYUppWWFHeVZxVlFBQUFBRUJLUUNaQXRjQzV3QUtBQUFCTng0QkZ3Y25OeGNSTXdJZ2lRd1dETmZYTG9sQUFSU0pDeGNMMTljdGlRSFRBQUVCWGdDcEFxSUMxd0FNQUFBSkFTYzNKemNXRng0QkZ4WVhBcUwrNlMzcDZTMGpJeU5GSXlNakFjRCs2UzdwNlM0akl5TkdJaU1qQUFBQUFBVUFRd0J6QTcwRERRQXNBRW9BYUFCekFIMEFBQUUrQVRjNkFUTVdGeDRCRnhZWE1BWUhEZ0VIRndjbkJnY0dKaWNtSnk0Qkp5NEJKekEyTno0Qk55YzNGd2NPQVE4QkZoY2VBUmNXTno0Qk55Y09BU01pSnk0Qkp5WTFORFkzSndFK0FUOEJKaWN1QVNjbUJ3NEJCeGMrQVRNeUZ4NEJGeFlWRkFZSEZ3RU9BUlVVRmpNeU5qY25CVDRCTlRRbUl5SUdCd0VxTDJnMkJ3UUhTRU5DY2kwdEd6a3VFQ1FUUGkxTE9VQkFnRDQ5TlNsRUdRb1BDaVViRnpjZ1BpMUtDakZPR0FFZE56ZUpURXhJQ3hZS0hSeEVKaThvS1QwU0VSY1ZNQUhCTVUwWUFSZ25LR1U3T3o0cFVDVWtIRVFtTGlrcFBSRVNHQlVxL3AwTURsNUNHQzBUM2dFTERRNWVRaGtzRXdMRUZ4c0NBaGdYVWprNFJIWXdFUjROUGkxTEhBME1DQlVWSmg1S0xCRWlHRk1rSHpZV1BpMUpVU0ZaTndKRk5UVS9Cd2NYQkFnRkhSVVlFaEk4S1NrdUprUWNNZjZaSVZvM0FqZ3VMa0VTRWdFQkV4RWpGUmNSRWowcEtDOGxSUndxQVFnVExCbENYZzROM2JBVExSaERYUTRNQUFRQVF3Q1pBNzBDOWdBa0FFTUFZQUJ2QUFBQkZoY2VBUmNXRnpBR0J3WUhEZ0VuSmljdUFTY3VBU2N3TmpjMk56NEJOelkzT2dFekJ3WUhEZ0VIQmc4QkZoY2VBUmNXTnpZM1BnRTNOajhCSmljdUFTY21JeGN5Rng0QkZ4WVZGQWNPQVFjR0l5SW5MZ0VuSmpVME56NEJOell6RnpVMEppTWlCaDBCRkJZek1qWTFBZ2xJUTBKeUxTMGJPUzQ2VGs2b1UxUkZLVVFaQ2c4S0pSc2dLU3BnTlRVM0J3UUhFVHM0TjJBbkpoZ0JIVGMzaVV4TVNDb2xKa0FhR2hJQkdDY29aVHM3UGdndEtDYzdFUklTRVRzbktDMHRLQ2M3RVJJU0VUc25LQzJnWGtKQ1hsNUNRbDRDOWdJWUYxSTVPRVIyTUQwakpCQVZGREllU2l3UkloaFRKQ3NqSXpJT0RnSkFBaElUUUMwc05nSkZOVFUvQndjWERSWVdPeU1qS0FNNExpMUNFaEVmRVJFN0p5Z3RMU2duT3hJUkVSSTdKeWd0TFNnbk94RVIyQUZDWGw1Q0FrSmVYa0lBQWdEQUFLQURRQU1BQUJzQU13QUFBUVlIRGdFSEJnY09BUjBCQnpRMkp6UW1KeVluTGdFbkppYzFJUVVVRmhjV0Z4NEJGeFlYRlRjMU5qYytBVGMyTno0Qk5RTkFBUllWUVNVbUlBUUV3QUlDQlFNaEpTWkFGaFVCQW9EOXdBUUVJU1VtUUJZVkFVQUJGaFZCSlNZZ0JBUUN1aUFmSHo4Z0lDSUZDd1oxa0VLRFFnWUtCQ0loSWtBZUh4MUdRQWNPQmlJaElrQWVIeDJHTUZZZ0h4OC9JQ0FpQmc0SEFBQUFBZ0QxQUtrREN3TFhBQWNBQ3dBQUFRY1hCd2tCSGdFbEVTTVJBd3ZwNlMzKzZRRVhDeGYrTlVBQ3FlbnBMZ0VYQVJjTUZnditBQUlBQUFBQURBREFBTUFEUUFMQUFBTUFCd0FMQUE4QUV3QVhBQnNBSHdBakFDY0FLd0F2QUFBbEl6VXpGeU0xTXhjak5UTVhJelV6SlNNMU14Y2pOVE1YSXpVekZ5TTFNeVVqTlRNWEl6VXpGeU0xTXhjak5UTUJBRUJBd0VCQXdFQkF3RUJBL2NCQVFNQkFRTUJBUU1CQVFQM0FRRURBUUVEQVFFREFRRURBZ0lDQWdJQ0FnRUNBZ0lDQWdJQ0FRSUNBZ0lDQWdJQUFBQWdBUC8vL0E4RURnUUFuQUZBQVZBQllBRndBWUFCa0FHZ0FBQUVlQVJjV0ZSWVVCeFFIRGdFSEJpTUdJaWNpSnk0Qkp5WTFKalEzTkRjK0FUYzJNell5RnpJRklnWUhCZ2NPQVJjVUZ4NEJGeFlYRmpJM05qYytBVGMyTnpZMEp5WW5MZ0VuSmlNaUJnY0dJeE1qTlRNRklUVWhKU00xTXdVaE5TRWxJelV6QlNFMUlRTWtQbHdDQVFFQkFRSmNQa2xKU1pKSlNVazlYUUlCQVFFQkFsdytTVWxKa2tsSi9nVWxPZ0VCQVFFQkFRTUNOU1JKU1VxU1NrbEpKRFVDQXdFQkFRRURBalVrU1VoSmtVbElTZUNBZ0FHQS9zQUJRUDZBZ0lBQmdQN0FBVUQrQUlDQUFnRCtRQUhBQTRBQ1hENUpTVW1TU1VsSlBsd0NBUUVCQVFKY1BrbEpTWkpKU1VrK1hBSUJBUUZCT0NaSVNVbVNTVWxKSkRVQ0F3RUJBUUVEQWpVa1NVbEtra3BKU1NRMUFnTUJBUUg5NEVCQVFFQkFRRUJBUUVCQUFBQUFBQVFBUXdESUE3MEN1QUFrQUUwQVlBQndBQUFCRmhjZUFSY1dGekFHQndZSERnRUhCaWNtSnk0Qkp5WW5NRFkzTmpjK0FUYzJNem9CQnlJR0J3WUhEZ0VIQmdjd0ZoY1dGeDRCTnpZM05qYytBVGMyTnpBbUp5WW5MZ0VuSmlNcUFTTVhIZ0VWRkFZSERnRW5MZ0VuTkRZM1BnRXpCdzRCQndZV0Z4WTJOelltSnk0Qkl3SUpRRUpCZFM4d0hVSTdLUzh2WXpJeU1EczVPbVlwS1JsRlB5RWxKVTRvS0NjSEJBb05HUXd1TUM5Vkl5TVZIeDhxTkRSdk9EZ3hLaWdvU0IwZEVoOGZIaVVrVHlvcEtBWUVCaEpHaXhnWk1IdzBQR2NDR1J3a1Vqb1RJMGdXR3hvdlBZd2VHeUF3RnlBb0FyZ0JEQXc1THk5SWZTa2RFaEVSQVFFREJCQVBPeTB0UG9FcUZ3NFBFUVFFUUFFQkF3c0xLeUVoTGo4Y0tCVVZFUUlDQndZTkRTd2VIaWMvSFJ3VEVoUUZCQjBDUlZRZ1BSUW1CZ1VGVFVFaVFoWWFERUFCQ1JrZ1hBMFJCeVVpWEFzR0FnQUNBUFVBcVFNTEF0Y0FEQUFRQUFBSkFTYzNKemNXRng0QkZ4WVhFeU1STXdJNS91a3Q2ZWt0SXlNaVJpTWpJOUpBUUFIQS91a3U2ZWt1SXlNalJpSWpJLzhBQWdBQUFBQUNBSGtBa3dPSEF1MEFDd0FXQUFBQkJ5RVZJUmNIQ1FFZUFSY0ZGemNuSVRVaE55Y09BUUkwUUFHVC9tMUFqZjdTQVM0alJ5UCtvTk15Z0FIdS9oS0FNalZwQW1CQXdFQ05BUzBCTFNOSEk2RFRNNEJBZ0RNMWFRQUFBQWdBWUFBZ0E2QURZQUFEQUFrQUR3QVRBQmNBSFFBakFDY0FBQ1VqRVRNbkJ5YzNIZ0VGQnljM0hnRTNJVFVoQlNFMUlUY0hKemNlQVNVSEp6Y2VBUVVqRVRNQ0lFQkFjODB0elFzWEFhc3R6UzB6WjRiL0FBRUEvY0QvQUFFQVRTM05MVE5uQWRQTkxjMExGLzdlUUVBZ0FRQWd6UzNOQ3hlckxjMHRNMmZOUUVCQVlDM05MVE5uYmMwdHpRc1hpd0VBQUFBQ0FQRUFzUU1QQXM4QUJ3QU9BQUFUSHdFbk55Y0hKeVV2QVJjSEZ6ZnhBOTlIZEZOMVJ3SWVBOTlIZEZOMUFaUGZBMGQxVTNSSFd0OERSM1ZUZEFBQUF3REFBT0FEUUFLZ0FBTUFCd0FMQUFBbElUVWhOU0UxSVRVaE5TRURRUDJBQW9EOWdBS0EvWUFDZ09CQWdFQ0FRQUFBQUFJQXl3Q0tBelVDOWdBSEFBOEFBQ1V2QVJjSEZ6Y1hFeDhCSnpjbkJ5Y0IyZ1RlUjNSVGRVZE1CTjVIZEZOMVI3amVCRWgxVTNWSEFoRGVCRWgxVTNWSEFBQUFBZ0NBQVdBRGdBSWdBQU1BQndBQUFTRTFJUVVWSVRVRGdQMEFBd0Q5UUFLQUFXREFRRUJBQUFFQlhnQ3BBcUlDMXdBTUFBQUpBU2MzSnpjV0Z4NEJGeFlYQXFMKzZTM3A2UzBqSXlORkl5TWpBY0QrNlM3cDZTNGpJeU5HSWlNakFBQUFBQUlBUUFDZ0E4QUM0QUFLQUJZQUFBRTNIZ0VYQnljM0Z4RXpBU01SQnljM0hnRVhCeWNSQVVHUURCY000T0F2a0VJQndFS1FMK0E0Y0RndmtBRVloZ3NXQzlMU0xJWUJ5UDNBQWNpR0xOSTBhVFVzaHY0NEFBQUdBSFlBUUFPTEEwc0FIQUF5QUVFQVV3QmlBRzRBQUFFV0Z4NEJGeFlIQmdjT0FTY21KeVluTGdFM05qYzJOejRCTnpZWEJ3WUhEZ0VIQmhjV0Z4NEJOelkzTmljdUFTY21CeGNXQnc0QkJ3WW5MZ0V2QVFFZUFRRVdOejRCTnpZM05pWW5CZ2NPQVFjR0J4TXlGaDhCQVNZbkpqWTNOamM2QVFjR0J3NEJCd1lYQVM0QkJ3SUdZbFZWYXc0TkxTZE9UYmRkWGtjdkhoNFhDQWdjR1NjbVh6YzNPUXBUUjBoYUNnc25LRk5UdVZWVkxTVUtDVmhKU1Z6ekl3Z0lUVUJCVGh3MEdDZ0Jnd1lML3Rnb0tTcEpIQnNNQ0FFSklTQWhRU0VnSVVNaFFCMHAvbjBsQlFZeU9EaFlCQW9HTUNvcU53b0tEZ0VHRVNJU0Ewc0NOVFdrWldSZ1ZEYzNKUlVVUXlzNU9uNUFRRG95S2lrNkVCQUJRQUV0TFl4VlZGRlRMUzBFS2l0Y1RGVlZqeTh1QWMxQVNrbDdKU1lJQWhFTkZnR0RDaFQrclF3RkJTY2dIeWtlUFIwZ0lTRkJJU0FoQWRZUkVCYitmRUZMVElJdUxRWkFBaGtaVFRBdkxnRUZCUVVCQUFBQUFBTUFnQUF3QTRBRFVBQVdBQ0lBTmdBQUFUUW1JeUlHRlNNaUJoVVJGQll6SVRJMk5SRTBKaU1GTWhZVkZBWWpJaVkxTkRZQklTSW1OUkUwTmpzQkZTRTFNeklXRlJFVUJnS0FPRWhJT0lBMVMwczFBZ0ExUzBzMS93QVNHUmtTRWhrWkFSTCtBQm9tSmhwQUFZQkFHaVltQXZBWVNFZ1lTelgrUURWTFN6VUJ3RFZMRVJnUkVSZ1lFUkVZL1pFbUdnSEFHaWFBZ0NZYS9rQWFKZ0FBQUFBQ0FIQUFNQU9RQTFBQUtBQkFBQUFCSnpBMk56NEJGemNtTno0Qk56WXhGaGNlQVJjV0Z3NEJCdzRCSndjZUFSY1dCZzhCSndjbk53RU9BUjhCQnlZR0J3RStBVGMySmljM01CWTNKekFHTVFGWmxRWVBJWEV3WlFrUUVDd1VGQ1VrSlVrbEpTUUZDd1VhUlNwcUFRRUNBeWd2R0pycExla0JDQkVhQ2hDZ01HSVRBU0VDQkFJZUJ3ZWFPaVRhQVFGSGxTY1ZMUThKWXh3ZEhTNFBEeVVsSkVvbEpDVUhEZ2NqTHdkbkNRRWJNMkFZREpycUx1a0J0ZzRtRHhlZkRBSWUvdDhDQXdJYVZpeWFFU3JaQVFBQUNnQS8vLzhEd1FPQkFDY0FPd0JIQUdFQVp3QnVBSHNBaGdDTUFKSUFBQUVlQVJjV0ZSWVVCeFFIRGdFSEJpTUdJaWNpSnk0Qkp5WTFKalEzTkRjK0FUYzJNell5RnpJVElSRVdNeFkyTnpZM1BnRTNOamMrQVNjMEp3RVVGaFVlQVJjeUZqTTFJd0VISnpjZUFSY0hKeFVPQVFjakZ3Y25OeDRCRndjV05qYzFCUlFXRlRNMUp3WVVCek0xSXpjcUFTTWlCZ2NVQmhVek5UTWxGVE0wSmpVdUFTY2lKaVVHSWdjVk16Y21JaU1WTXdNa1Bsd0NBUUVCQVFKY1BrbEpTWkpKU1VrOVhRSUJBUUVCQWx3K1NVbEpra2xKcVAyNlBUMDllajA5UFNRMUFnSUNBUUVCQXZ6OEFRSTFKQWdRQ0h3Q1FRa3VWeFlyRmk0SkFWdy9kd291VmxZTUZnd0xVWUlCL2J3QmZuMEJBWDk5dnhndUZ5VTZBUUY4UWdISGZRRUNOU1FJRVA3eklVRWdnc01nUVNHQ0E0QUNYRDVKU1VtU1NVbEpQbHdDQVFFQkFRSmNQa2xKU1pKSlNVaytYQUlCQVFIL0FQMjhBZ0VCQVFJQ0FqVWtQVDA4ZWowOVBQNDhDUkVJSkRVQ0FYNEJGZ291VmhVc0ZTNEtjejlmQWdrdVYxY01GZ3dLQVIxRmMxUWhRQ0NCd2lGQUlZTC9PQ1lZTUJsQmYzOEpFUWtrTlFJQkFnRUJmNEFCZ1FBQUFnQ2dBR0FEWUFNZ0FBc0FGd0FBQVNFVklSRWpFU0UxSVJFekJ4RWhGU0VSTXhFaE5TRVJBbUFCQVA4QXdQOEFBUURBZ1A4QUFRQkFBUUQvQUFJZ3dQOEFBUURBQVFCQS93QkEvd0FCQUVBQkFBQUFBUUZlQUtrQ29nTFhBQWNBQUFFSEZ3Y0pBUjRCQXFMcDZTMys2UUVYQ3hjQ3FlbnBMZ0VYQVJjTUZnQUNBQUQvd0FRQUE4QUFHd0EzQUFBQklnY09BUWNHRlJRWEhnRVhGak15Tno0Qk56WTFOQ2N1QVNjbUJ6SVhIZ0VYRmhVVUJ3NEJCd1lqSWljdUFTY21OVFEzUGdFM05nSUFhbDFkaXlrb0tDbUxYVjFxYWwxZGl5a29LQ21MWFYxcVhWRlNlaU1qSXlONlVsRmRYVkZTZWlNakl5TjZVbEVEd0NncGkxMWRhbXBkWFlzcEtDZ3BpMTFkYW1wZFhZc3BLRUFqSTNwU1VWMWRVVko2SXlNakkzcFNVVjFkVVZKNkl5TUFBd0FBLzhBRUFBUEFBQnNBTndCVEFBQUJJZ2NPQVFjR0ZSUVhIZ0VYRmpNeU56NEJOelkxTkNjdUFTY21CeklYSGdFWEZoVVVCdzRCQndZaklpY3VBU2NtTlRRM1BnRTNOZ0VVQnc0QkJ3WWpJaWN1QVNjbU5UUTNQZ0UzTmpNeUZ4NEJGeFlDQUdwZFhZc3BLQ2dwaTExZGFtcGRYWXNwS0NncGkxMWRhbDFSVW5vakl5TWplbEpSWFYxUlVub2pJeU1qZWxKUkFaMFpHVmM2TzBKQ096cFhHUmtaR1ZjNk8wSkNPenBYR1JrRHdDZ3BpMTFkYW1wZFhZc3BLQ2dwaTExZGFtcGRYWXNwS0VBakkzcFNVVjFkVVZKNkl5TWpJM3BTVVYxZFVWSjZJeVArUUVJN09sY1pHUmtaVnpvN1FrSTdPbGNaR1JrWlZ6bzdBQUFBQUFJQWVRQ1RBNGNDN1FBT0FCa0FBQWtCSnpjaE5TRW5OeFlYSGdFWEZpVVhJUlVoQnhjM0p3NEJBNGYrMG8xQS9tMEJrMENOSmlZbFRDVW0vc2FBL2hJQjdvQXkwOU1NR2dIQS90T05RTUJBalNVbUprc21KWHFBUUlBejA5TU5HUUFBQUFBQ0FJQUFRQU9BQTBBQURnQVpBQUFCRVNFUkl4RVVGak1oTWpZMUVTTUZOeGNISnpjWEVUTVJNUU1yL2FwVk1pTUNWaU15VmY4QWJqelYxVHh1VmdIQS90VUJLLzdWSXpJeUl3RXJIVzQ4MWRVOGJnR2QvbU1BQVFEcEFSNERGd0ppQUFjQUFBa0NOeGMzSGdFREYvN3AvdWt1NmVrTUZnSTEvdWtCRnkzcDZRc1hBQUFCQVY0QXFRS2lBdGNBQndBQUFRY1hCd2tCSGdFQ291bnBMZjdwQVJjTEZ3S3A2ZWt1QVJjQkZ3d1dBQUVCWGdDcEFxSUMxd0FNQUFBSkFTYzNKemNXRng0QkZ4WVhBcUwrNlMzcDZTMGpJeU5GSXlNakFjRCs2UzdwNlM0akl5TkdJaU1qQUFBQUFBRUE2UUVlQXhjQ1lnQUxBQUFCQnljSEp3RVdGeDRCRnhZREZ5N3A2UzRCRnlNaklrWWpJd0ZMTGVucExRRVhJeU1qUlNNakFBQUFBUURwQU80REZ3S1NBQWNBQUFrQkp6Y1hBUjRCQXhmK2liY3VpUUZKREJZQ1pmNkp0eTJKQVVrTEZ3QUJBVjRBcVFLaUF0Y0FEQUFBQ1FFbk55YzNGaGNlQVJjV0Z3S2kvdWt0NmVrdEl5TWpSU01qSXdIQS91a3U2ZWt1SXlNalJpSWpJd0FBQUFBQkFNQUJvQU5BQWVBQUF3QUFFeUVWSWNBQ2dQMkFBZUJBQUFBQUFRRHBBUjRERndKaUFBY0FBQWtDTnhjM0hnRURGLzdwL3VrdTZla01GZ0kxL3VrQkZ5M3A2UXNYQUFBQkFBQUFBUUFBRWt2aGVWOFBQUFVBQ3dRQUFBQUFBTmxCajQwQUFBQUEyVUdQalFBQS84QUVBQVBBQUFBQUNBQUNBQUFBQUFBQUFBRUFBQVBBLzhBQUFBUUFBQUFBQUFRQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBNEJBQUFBQUFBQUFBQUFBQUFBZ0FBQUFRQUFEOEVBQUJUQkFBQktRUUFBSUFFQUFEVkJBQUFBQVFBQUFBRUFBQUFCQUFBY3dRQUFNQUVBQURBQkFBQlhnUUFBS0FFQUFFcEJBQUFRQVFBQUlZRUFBRXBCQUFCWGdRQUFFTUVBQUJEQkFBQXdBUUFBUFVFQUFEQUJBQUFQd1FBQUVNRUFBRDFCQUFBZVFRQUFHQUVBQUR4QkFBQXdBUUFBTXNFQUFDQUJBQUJYZ1FBQUVBRUFBQjJCQUFBZ0FRQUFIQUVBQUEvQkFBQW9BUUFBVjRFQUFBQUJBQUFBQVFBQUhrRUFBQ0FCQUFBNlFRQUFWNEVBQUZlQkFBQTZRUUFBT2tFQUFGZUJBQUF3QVFBQU9rQUFBQUFBQW9BRkFBZUFNSUJCZ0VlQVl3QnFBSHFBaVFDV0FLR0Fwb0N2QUxTQXg0RFBnTzJCQklFS2dSSUJRZ0ZyZ1lDQmlBR2FnY01CN1lIMmdnSUNGSUljZ2lNQ0s0SXdnamdDUXdKeEFvVUNud0xWQXQrQzVRTDZneHFESndNeUF6ZURQUU5FZzB1RFVRTllnMXdEWVlBQUFBQkFBQUFPQUNUQUF3QUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGdDdUFBRUFBQUFBQUFFQUNBQUFBQUVBQUFBQUFBSUFCd0JwQUFFQUFBQUFBQU1BQ0FBNUFBRUFBQUFBQUFRQUNBQitBQUVBQUFBQUFBVUFDd0FZQUFFQUFBQUFBQVlBQ0FCUkFBRUFBQUFBQUFvQUdnQ1dBQU1BQVFRSkFBRUFFQUFJQUFNQUFRUUpBQUlBRGdCd0FBTUFBUVFKQUFNQUVBQkJBQU1BQVFRSkFBUUFFQUNHQUFNQUFRUUpBQVVBRmdBakFBTUFBUVFKQUFZQUVBQlpBQU1BQVFRSkFBb0FOQUN3UVdkQ1lXeG9ZVzBBUVFCbkFFSUFZUUJzQUdnQVlRQnRWbVZ5YzJsdmJpQXhMakFBVmdCbEFISUFjd0JwQUc4QWJnQWdBREVBTGdBd1FXZENZV3hvWVcwQVFRQm5BRUlBWVFCc0FHZ0FZUUJ0UVdkQ1lXeG9ZVzBBUVFCbkFFSUFZUUJzQUdnQVlRQnRVbVZuZFd4aGNnQlNBR1VBWndCMUFHd0FZUUJ5UVdkQ1lXeG9ZVzBBUVFCbkFFSUFZUUJzQUdnQVlRQnRSbTl1ZENCblpXNWxjbUYwWldRZ1lua2dTV052VFc5dmJpNEFSZ0J2QUc0QWRBQWdBR2NBWlFCdUFHVUFjZ0JoQUhRQVpRQmtBQ0FBWWdCNUFDQUFTUUJqQUc4QVRRQnZBRzhBYmdBdUFBQUFBd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9PVxcXCIpIGZvcm1hdChcXFwidHJ1ZXR5cGVcXFwiKTtcXG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxuICBmb250LXN0eWxlOiBub3JtYWw7IH1cXG5cXG4uYWctdGhlbWUtYmFsaGFtLWRhcmsge1xcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQzNDM2O1xcbiAgY29sb3I6ICNGNUY1RjU7XFxuICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcXFwiU2Vnb2UgVUlcXFwiLCBSb2JvdG8sIE94eWdlbi1TYW5zLCBVYnVudHUsIENhbnRhcmVsbCwgXFxcIkhlbHZldGljYSBOZXVlXFxcIiwgc2Fucy1zZXJpZjtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICBmb250LXNpemU6IDEycHg7XFxuICBsaW5lLWhlaWdodDogMTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1tZW51LCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRoZW1lLWJhbGhhbS1kYXJrLmFnLWRuZC1naG9zdCwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jZWxsLmFnLWNlbGwtaW5saW5lLWVkaXRpbmcsIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY2VsbC5hZy1wb3B1cC1lZGl0b3IsIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctc2VsZWN0LWFnZy1mdW5jLXBvcHVwLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLW92ZXJsYXktbG9hZGluZy1jZW50ZXIge1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjNDI0MjQyOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRhYi1oZWFkZXIgLmFnLXRhYiB7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xcbiAgICBtYXJnaW46IDRweDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcXG4gICAgcGFkZGluZzogNHB4IDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10YWItaGVhZGVyIC5hZy10YWIuYWctdGFiLXNlbGVjdGVkIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzJkMzQzNjtcXG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICMwMEIwRkY7XFxuICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjMmQzNDM2O1xcbiAgICBib3JkZXItY29sb3I6ICM0MjQyNDI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayBsYWJlbCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAqIHtcXG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrICo6Zm9jdXMsIC5hZy10aGVtZS1iYWxoYW0tZGFyayAqICo6YmVmb3JlLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgKiAqOmFmdGVyIHtcXG4gICAgICBvdXRsaW5lOiBub25lO1xcbiAgICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gICAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdGFiIHtcXG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBjb250ZW50LWJveDtcXG4gICAgICAgICAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMSB7XFxuICAgIHBhZGRpbmctbGVmdDogMjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDI4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yIHtcXG4gICAgcGFkZGluZy1yaWdodDogNDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMiB7XFxuICAgIHBhZGRpbmctbGVmdDogNTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDU2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDYwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTMge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA4NHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zIHtcXG4gICAgcGFkZGluZy1yaWdodDogODRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNCB7XFxuICAgIHBhZGRpbmctbGVmdDogODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDExMnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTEycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC01IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC01IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC02IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE2OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC02IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTY4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC03IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE5NnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC03IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTk2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC04IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTYwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDIyNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC04IHtcXG4gICAgcGFkZGluZy1yaWdodDogMjI0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC05IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDI1MnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC05IHtcXG4gICAgcGFkZGluZy1yaWdodDogMjUycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTEwIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyMDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTAge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyMDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDI4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xMCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDI4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xMSB7XFxuICAgIHBhZGRpbmctbGVmdDogMjIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTExIHtcXG4gICAgcGFkZGluZy1yaWdodDogMjIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTExIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAzMDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTEge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAzMDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDI0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDI0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xMiB7XFxuICAgIHBhZGRpbmctbGVmdDogMzM2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEyIHtcXG4gICAgcGFkZGluZy1yaWdodDogMzM2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTEzIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyNjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTMge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyNjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDM2NHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xMyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDM2NHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xNCB7XFxuICAgIHBhZGRpbmctbGVmdDogMjgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTE0IHtcXG4gICAgcGFkZGluZy1yaWdodDogMjgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE0IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAzOTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTQge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAzOTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDMwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xNSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDMwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xNSB7XFxuICAgIHBhZGRpbmctbGVmdDogNDIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE1IHtcXG4gICAgcGFkZGluZy1yaWdodDogNDIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTE2IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAzMjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTYge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAzMjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDQ0OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDQ0OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xNyB7XFxuICAgIHBhZGRpbmctbGVmdDogMzQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTE3IHtcXG4gICAgcGFkZGluZy1yaWdodDogMzQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE3IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0NzZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTcge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA0NzZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDM2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDM2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xOCB7XFxuICAgIHBhZGRpbmctbGVmdDogNTA0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE4IHtcXG4gICAgcGFkZGluZy1yaWdodDogNTA0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTE5IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAzODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTkge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAzODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDUzMnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xOSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDUzMnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yMCB7XFxuICAgIHBhZGRpbmctbGVmdDogNDAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTIwIHtcXG4gICAgcGFkZGluZy1yaWdodDogNDAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTIwIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA1NjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjAge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1NjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjEge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDQyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDQyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yMSB7XFxuICAgIHBhZGRpbmctbGVmdDogNTg4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTIxIHtcXG4gICAgcGFkZGluZy1yaWdodDogNTg4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTIyIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0NDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjIge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA0NDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDYxNnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDYxNnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yMyB7XFxuICAgIHBhZGRpbmctbGVmdDogNDYwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTIzIHtcXG4gICAgcGFkZGluZy1yaWdodDogNDYwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTIzIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA2NDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjMge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA2NDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDQ4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDQ4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yNCB7XFxuICAgIHBhZGRpbmctbGVmdDogNjcycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI0IHtcXG4gICAgcGFkZGluZy1yaWdodDogNjcycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTI1IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA1MDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjUge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1MDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDcwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yNSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDcwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yNiB7XFxuICAgIHBhZGRpbmctbGVmdDogNTIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTI2IHtcXG4gICAgcGFkZGluZy1yaWdodDogNTIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI2IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA3MjhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjYge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA3MjhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDU0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yNyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDU0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yNyB7XFxuICAgIHBhZGRpbmctbGVmdDogNzU2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI3IHtcXG4gICAgcGFkZGluZy1yaWdodDogNzU2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTI4IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA1NjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjgge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1NjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDc4NHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDc4NHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yOSB7XFxuICAgIHBhZGRpbmctbGVmdDogNTgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTI5IHtcXG4gICAgcGFkZGluZy1yaWdodDogNTgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI5IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA4MTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjkge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA4MTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDYwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zMCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDYwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zMCB7XFxuICAgIHBhZGRpbmctbGVmdDogODQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTMwIHtcXG4gICAgcGFkZGluZy1yaWdodDogODQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTMxIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA2MjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzEge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA2MjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzEge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDg2OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDg2OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0zMiB7XFxuICAgIHBhZGRpbmctbGVmdDogNjQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTMyIHtcXG4gICAgcGFkZGluZy1yaWdodDogNjQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTMyIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA4OTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzIge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA4OTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDY2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zMyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDY2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zMyB7XFxuICAgIHBhZGRpbmctbGVmdDogOTI0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTMzIHtcXG4gICAgcGFkZGluZy1yaWdodDogOTI0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTM0IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA2ODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzQge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA2ODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDk1MnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDk1MnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0zNSB7XFxuICAgIHBhZGRpbmctbGVmdDogNzAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTM1IHtcXG4gICAgcGFkZGluZy1yaWdodDogNzAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTM1IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA5ODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzUge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA5ODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDcyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDcyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zNiB7XFxuICAgIHBhZGRpbmctbGVmdDogMTAwOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEwMDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDc0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zNyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDc0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zNyB7XFxuICAgIHBhZGRpbmctbGVmdDogMTAzNnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zNyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEwMzZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDc2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDc2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zOCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTA2NHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEwNjRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDc4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zOSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDc4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zOSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTA5MnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zOSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEwOTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDgwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00MCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDgwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00MCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTEyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00MCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDExMjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDEge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDgyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00MSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDgyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00MSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTE0OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00MSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDExNDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDg0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00MiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDg0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00MiB7XFxuICAgIHBhZGRpbmctbGVmdDogMTE3NnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00MiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDExNzZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDg2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00MyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDg2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00MyB7XFxuICAgIHBhZGRpbmctbGVmdDogMTIwNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00MyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEyMDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDg4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00NCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDg4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00NCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTIzMnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00NCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEyMzJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDkwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00NSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDkwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00NSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTI2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00NSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEyNjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDkyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00NiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDkyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00NiB7XFxuICAgIHBhZGRpbmctbGVmdDogMTI4OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00NiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEyODhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDk0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00NyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDk0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00NyB7XFxuICAgIHBhZGRpbmctbGVmdDogMTMxNnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00NyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEzMTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDk2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00OCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDk2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00OCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTM0NHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00OCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEzNDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDk4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00OSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDk4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00OSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTM3MnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00OSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEzNzJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jZWxsIC5hZy1pY29uIHtcXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNoZWNrYm94LCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJhZGlvLWJ1dHRvbiwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10b2dnbGUtYnV0dG9uIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBjdXJzb3I6IGRlZmF1bHQ7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jaGVja2JveCBsYWJlbCwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1yYWRpby1idXR0b24gbGFiZWwsIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdG9nZ2xlLWJ1dHRvbiBsYWJlbCB7XFxuICAgICAgY3Vyc29yOiBkZWZhdWx0OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jaGVja2JveCBsYWJlbDplbXB0eSwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1yYWRpby1idXR0b24gbGFiZWw6ZW1wdHksIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdG9nZ2xlLWJ1dHRvbiBsYWJlbDplbXB0eSB7XFxuICAgICAgICBtYXJnaW46IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jaGVja2JveDpub3QoLmFnLWxhYmVsLWFsaWduLWxlZnQpIGxhYmVsLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJhZGlvLWJ1dHRvbjpub3QoLmFnLWxhYmVsLWFsaWduLWxlZnQpIGxhYmVsLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRvZ2dsZS1idXR0b246bm90KC5hZy1sYWJlbC1hbGlnbi1sZWZ0KSBsYWJlbCB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jZWxsIHtcXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogc3VicGl4ZWwtYW50aWFsaWFzZWQ7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtbGVhZi1pbmRlbnQge1xcbiAgICBtYXJnaW4tbGVmdDogMjhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLWNlbGwge1xcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy5hZy1jZWxsLWZpcnN0LXJpZ2h0LXBpbm5lZCwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLWNlbGw6bm90KC5hZy1jZWxsLWZvY3VzKS5hZy1jZWxsLWZpcnN0LXJpZ2h0LXBpbm5lZCB7XFxuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgIzQyNDI0MjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy5hZy1jZWxsLWxhc3QtbGVmdC1waW5uZWQsIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1jZWxsOm5vdCguYWctY2VsbC1mb2N1cykuYWctY2VsbC1sYXN0LWxlZnQtcGlubmVkIHtcXG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgIzQyNDI0MjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1sZWFmLWluZGVudCB7XFxuICAgIG1hcmdpbi1yaWdodDogMjhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWNlbGwge1xcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHRyYW5zcGFyZW50OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LmFnLWNlbGwtZmlyc3QtcmlnaHQtcGlubmVkLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctY2VsbDpub3QoLmFnLWNlbGwtZm9jdXMpLmFnLWNlbGwtZmlyc3QtcmlnaHQtcGlubmVkIHtcXG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjNDI0MjQyOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LmFnLWNlbGwtbGFzdC1sZWZ0LXBpbm5lZCwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWNlbGw6bm90KC5hZy1jZWxsLWZvY3VzKS5hZy1jZWxsLWxhc3QtbGVmdC1waW5uZWQge1xcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjNDI0MjQyOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXZhbHVlLWNoYW5nZS1kZWx0YSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy12YWx1ZS1jaGFuZ2UtZGVsdGEtdXAge1xcbiAgICBjb2xvcjogIzQzYTA0NzsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy12YWx1ZS1jaGFuZ2UtZGVsdGEtZG93biB7XFxuICAgIGNvbG9yOiAjZTUzOTM1OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXZhbHVlLWNoYW5nZS12YWx1ZSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICBib3JkZXItcmFkaXVzOiAxcHg7XFxuICAgIHBhZGRpbmctbGVmdDogMXB4O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxcHg7XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxcztcXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxczsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy12YWx1ZS1jaGFuZ2UtdmFsdWUtaGlnaGxpZ2h0IHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMiwgMTYwLCAxMzMsIDAuNSk7XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjFzO1xcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMXM7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaW5wdXQtd3JhcHBlciBpbnB1dDpub3QoW3R5cGVdKSxcXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJ0ZXh0XFxcIl0sXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwibnVtYmVyXFxcIl0sXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwidGVsXFxcIl0sXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZVxcXCJdLFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcImRhdGV0aW1lLWxvY2FsXFxcIl0ge1xcbiAgICBib3JkZXItd2lkdGg6IDFweDtcXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gICAgYm9yZGVyLWNvbG9yOiAjZWNmMGYxOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaW5wdXQtd3JhcHBlciBpbnB1dDpub3QoW3R5cGVdKTpkaXNhYmxlZCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcInRleHRcXFwiXTpkaXNhYmxlZCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcIm51bWJlclxcXCJdOmRpc2FibGVkLFxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwidGVsXFxcIl06ZGlzYWJsZWQsXFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJkYXRlXFxcIl06ZGlzYWJsZWQsXFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJkYXRldGltZS1sb2NhbFxcXCJdOmRpc2FibGVkIHtcXG4gICAgICBjb2xvcjogcmdiYSgyNDUsIDI0NSwgMjQ1LCAwLjM4KTtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQ4LCA0NiwgNDYsIDAuMyk7XFxuICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDIzNiwgMjQwLCAyNDEsIDAuMyk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJkYXRlXFxcIl0ge1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICAgICAgICAgIGZsZXg6IDEgMSBhdXRvOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwicmFuZ2VcXFwiXSB7XFxuICAgIHBhZGRpbmc6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaW5wdXQtd3JhcHBlciB0ZXh0YXJlYSB7XFxuICAgIGJvcmRlci13aWR0aDogMXB4O1xcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xcbiAgICBib3JkZXItY29sb3I6ICNlY2YwZjE7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pbnB1dC13cmFwcGVyIHRleHRhcmVhOmRpc2FibGVkIHtcXG4gICAgICBjb2xvcjogcmdiYSgyNDUsIDI0NSwgMjQ1LCAwLjM4KTtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQ4LCA0NiwgNDYsIDAuMyk7XFxuICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDIzNiwgMjQwLCAyNDEsIDAuMyk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaGVhZGVyIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzFjMWYyMDtcXG4gICAgY29sb3I6IHJnYmEoMjQ1LCAyNDUsIDI0NSwgMC42NCk7XFxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICAgIGZvbnQtc2l6ZTogMTJweDtcXG4gICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXFxcIlNlZ29lIFVJXFxcIiwgUm9ib3RvLCBPeHlnZW4tU2FucywgVWJ1bnR1LCBDYW50YXJlbGwsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIHNhbnMtc2VyaWY7XFxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNDI0MjQyOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXBpbm5lZC1yaWdodC1oZWFkZXIge1xcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICM0MjQyNDI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcGlubmVkLWxlZnQtaGVhZGVyIHtcXG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgIzQyNDI0MjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1oZWFkZXItcm93IHtcXG4gICAgYm9yZGVyOiBub25lOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJvdyB7XFxuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XFxuICAgIGJvcmRlci1jb2xvcjogIzQyNDI0MjtcXG4gICAgYm9yZGVyLXdpZHRoOiAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcm93Om5vdCguYWctcm93LWZpcnN0KSB7XFxuICAgICAgYm9yZGVyLXdpZHRoOiAxcHggMCAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcm93LmFnLXJvdy1sYXN0IHtcXG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcm93LW9kZCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMyNjJjMmU7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcm93LWV2ZW4ge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQzNDM2OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWhvcml6b250YWwtbGVmdC1zcGFjZXIge1xcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjNDI0MjQyOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaG9yaXpvbnRhbC1sZWZ0LXNwYWNlci5hZy1zY3JvbGxlci1jb3JuZXIge1xcbiAgICAgIGJvcmRlci1yaWdodDogbm9uZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ob3Jpem9udGFsLXJpZ2h0LXNwYWNlciB7XFxuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgIzQyNDI0MjsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWhvcml6b250YWwtcmlnaHQtc3BhY2VyLmFnLXNjcm9sbGVyLWNvcm5lciB7XFxuICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcm93LWhvdmVyIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzNkNDc0OTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1udW1lcmljLWNlbGwge1xcbiAgICB0ZXh0LWFsaWduOiByaWdodDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1oZWFkZXItY2VsbC1sYWJlbCAuYWctaGVhZGVyLWljb24ge1xcbiAgICBtYXJnaW4tbGVmdDogNHB4O1xcbiAgICBvcGFjaXR5OiAwLjg3OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWhlYWRlci1jZWxsLFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1oZWFkZXItZ3JvdXAtY2VsbCB7XFxuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XFxuICAgIGJvcmRlci1jb2xvcjogIzQyNDI0MjtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMnB4O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMnB4O1xcbiAgICBib3JkZXItd2lkdGg6IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1oZWFkZXItY2VsbC5hZy1oZWFkZXItY2VsbC1tb3ZpbmcsXFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaGVhZGVyLWdyb3VwLWNlbGwuYWctaGVhZGVyLWNlbGwtbW92aW5nIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQzNDM2OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaGVhZGVyLWNlbGw6bm90KC5hZy1oZWFkZXItZ3JvdXAtY2VsbC1uby1ncm91cCksXFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaGVhZGVyLWdyb3VwLWNlbGw6bm90KC5hZy1oZWFkZXItZ3JvdXAtY2VsbC1uby1ncm91cCkge1xcbiAgICAgIGJvcmRlci10b3Atd2lkdGg6IDFweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1oZWFkZXItcm93OmZpcnN0LWNoaWxkIC5hZy1oZWFkZXItY2VsbCwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1oZWFkZXItcm93OmZpcnN0LWNoaWxkIC5hZy1oZWFkZXItZ3JvdXAtY2VsbCB7XFxuICAgIGJvcmRlci10b3Atd2lkdGg6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaGVhZGVyLWNlbGwtcmVzaXplIHtcXG4gICAgY3Vyc29yOiBjb2wtcmVzaXplOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWhlYWRlci1zZWxlY3QtYWxsIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAxMnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNlbGwge1xcbiAgICBsaW5lLWhlaWdodDogMjZweDtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMnB4O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMnB4O1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMXB4O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMXB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJvdy1kcmFnIHtcXG4gICAgY3Vyc29yOiBtb3ZlO1xcbiAgICBjdXJzb3I6IC13ZWJraXQtZ3JhYjtcXG4gICAgY3Vyc29yOiBncmFiO1xcbiAgICBtaW4td2lkdGg6IDI4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcm93LWRyYWdnaW5nLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJvdy1kcmFnZ2luZyAuYWctcm93LWRyYWcge1xcbiAgICBjdXJzb3I6IG1vdmU7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLWRyYWcge1xcbiAgICBjdXJzb3I6IG1vdmU7XFxuICAgIGN1cnNvcjogLXdlYmtpdC1ncmFiO1xcbiAgICBjdXJzb3I6IGdyYWI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcm93LWRyYWdnaW5nIHtcXG4gICAgb3BhY2l0eTogMC41OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctaGFzLWZvY3VzIC5hZy1jZWxsLWZvY3VzOm5vdCguYWctY2VsbC1yYW5nZS1zZWxlY3RlZCksXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctaGFzLWZvY3VzIC5hZy1jZWxsLWZvY3VzLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwsXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctY2VsbC1mb2N1cy5hZy1jZWxsLXJhbmdlLXNpbmdsZS1jZWxsLmFnLWNlbGwtcmFuZ2UtaGFuZGxlLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctaGFzLWZvY3VzIC5hZy1jZWxsLWZvY3VzOm5vdCguYWctY2VsbC1yYW5nZS1zZWxlY3RlZCksXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctaGFzLWZvY3VzIC5hZy1jZWxsLWZvY3VzLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwsXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctY2VsbC1mb2N1cy5hZy1jZWxsLXJhbmdlLXNpbmdsZS1jZWxsLmFnLWNlbGwtcmFuZ2UtaGFuZGxlIHtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgIzAwQjBGRjtcXG4gICAgb3V0bGluZTogaW5pdGlhbDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1oZWFkZXItY2VsbC1yZXNpemUge1xcbiAgICB3aWR0aDogOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLW1lbnUge1xcbiAgICBiYWNrZ3JvdW5kOiAjMmQzNDM2O1xcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xcbiAgICBwYWRkaW5nOiA0cHg7XFxuICAgIHBhZGRpbmc6IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1tZW51IC5hZy1tZW51LWxpc3Qge1xcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XFxuICAgICAgbWFyZ2luLXRvcDogNHB4O1xcbiAgICAgIHdpZHRoOiAxMDAlOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbWVudSAuYWctbWVudS1vcHRpb24tYWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Q0NzQ5OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbWVudSAuYWctbWVudS1vcHRpb24tZGlzYWJsZWQge1xcbiAgICAgIG9wYWNpdHk6IDAuNTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLW1lbnUgLmFnLW1lbnUtb3B0aW9uLXRleHQge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1tZW51IC5hZy1tZW51LW9wdGlvbi1pY29uIHtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDRweDtcXG4gICAgICBwYWRkaW5nLXJpZ2h0OiA0cHg7XFxuICAgICAgbWluLXdpZHRoOiAyNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbWVudSAuYWctbWVudS1vcHRpb24tc2hvcnRjdXQge1xcbiAgICAgIHBhZGRpbmctbGVmdDogOHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbWVudSAuYWctbWVudS1zZXBhcmF0b3Ige1xcbiAgICAgIGhlaWdodDogOHB4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1tZW51IC5hZy1tZW51LXNlcGFyYXRvciA+IHNwYW4ge1xcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIwd2lkdGglM0QnMSclMjBoZWlnaHQlM0QnOHB4JyUyMHZpZXdCb3glM0QnMCUyMDAlMjAxJTIwOHB4JyUyMHhtbG5zJTNEJ2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyclM0UlM0NsaW5lJTIweDElM0QnMCclMjB5MSUzRCc0cHgnJTIweDIlM0QnMSclMjB5MiUzRCc0cHgnJTIwc3Ryb2tlLXdpZHRoJTNEJzEnJTIwc3Ryb2tlJTNEJyUyMzQyNDI0MiclMkYlM0UlM0MlMkZzdmclM0VcXFwiKTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLW1lbnUgLmFnLW1lbnUtb3B0aW9uLXBvcHVwLXBvaW50ZXIge1xcbiAgICAgIHdpZHRoOiAyNHB4O1xcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrLmFnLWRuZC1naG9zdCB7XFxuICAgIGJhY2tncm91bmQ6ICMyZDM0MzY7XFxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lO1xcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XFxuICAgIHBhZGRpbmc6IDRweDtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgIzQyNDI0MjtcXG4gICAgY29sb3I6IHJnYmEoMjQ1LCAyNDUsIDI0NSwgMC42NCk7XFxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICAgIGZvbnQtc2l6ZTogMTJweDtcXG4gICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXFxcIlNlZ29lIFVJXFxcIiwgUm9ib3RvLCBPeHlnZW4tU2FucywgVWJ1bnR1LCBDYW50YXJlbGwsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIHNhbnMtc2VyaWY7XFxuICAgIGhlaWdodDogMzJweCAhaW1wb3J0YW50O1xcbiAgICBsaW5lLWhlaWdodDogMzJweDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBwYWRkaW5nOiAwIDhweDtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoOHB4KTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoOHB4KTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsuYWctZG5kLWdob3N0IHNwYW4sXFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyay5hZy1kbmQtZ2hvc3QgZGl2IHtcXG4gICAgICBoZWlnaHQ6IDEwMCU7XFxuICAgICAgbWFyZ2luOiAwO1xcbiAgICAgIHBhZGRpbmc6IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrLmFnLWRuZC1naG9zdCAuYWctZG5kLWdob3N0LWljb24ge1xcbiAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xcbiAgICAgIG9wYWNpdHk6IDAuODc7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdGFiLWhlYWRlciB7XFxuICAgIGJhY2tncm91bmQ6ICMxYzFmMjA7XFxuICAgIG1pbi13aWR0aDogMjIwcHg7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10YWItaGVhZGVyIC5hZy10YWIge1xcbiAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgICAgIGhlaWdodDogMTZweDtcXG4gICAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgICAtbXMtZmxleDogbm9uZTtcXG4gICAgICAgICAgICAgIGZsZXg6IG5vbmU7XFxuICAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10YWItYm9keSB7XFxuICAgIHBhZGRpbmc6IDJweCAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdGFiLWJvZHkgLmFnLW1lbnUtbGlzdCB7XFxuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcXG4gICAgICBtYXJnaW4tdG9wOiAwOyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10YWItYm9keSAuYWctbWVudS1saXN0ID4gZGl2OmZpcnN0LWNoaWxkID4gc3BhbiB7XFxuICAgICAgICBwYWRkaW5nLXRvcDogMDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdGFiLWJvZHkgLmFnLW1lbnUtbGlzdCA+IGRpdjpsYXN0LWNoaWxkID4gc3BhbiB7XFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdGFiLWJvZHkgLmFnLW1lbnUtbGlzdCA+IGRpdjpsYXN0LWNoaWxkID4gLmFnLW1lbnUtb3B0aW9uLXBvcHVwLXBvaW50ZXIge1xcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbi15OiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWZpbHRlciAuYWctZmlsdGVyLXNlbGVjdCwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1maWx0ZXIgLmFnLWZpbHRlci1ib2R5IHtcXG4gICAgbWFyZ2luLWJvdHRvbTogNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWZpbHRlciAuYWctZmlsdGVyLWJvZHkge1xcbiAgICBtYXJnaW4tdG9wOiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWZpbHRlciAuYWctZmlsdGVyLWZpbHRlciB7XFxuICAgIG1hcmdpbi1sZWZ0OiA0cHg7XFxuICAgIG1hcmdpbi1yaWdodDogNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWZpbHRlciAuYWctZmlsdGVyLXNlbGVjdCB7XFxuICAgIG1hcmdpbjogNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWZpbHRlciBpbnB1dFt0eXBlPVxcXCJyYWRpb1xcXCJdIHtcXG4gICAgbWFyZ2luOiAwIDNweCAwIDZweDtcXG4gICAgd2lkdGg6IDEycHg7XFxuICAgIGhlaWdodDogMTdweDtcXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1maWx0ZXIgaW5wdXRbdHlwZT1cXFwidGV4dFxcXCJdLFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1maWx0ZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZVxcXCJdIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZmlsdGVyIC5hZy1zZXQtZmlsdGVyLWxpc3Qge1xcbiAgICBoZWlnaHQ6IDE2OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWZpbHRlciAuYWctc2V0LWZpbHRlci1pdGVtIHtcXG4gICAgaGVpZ2h0OiAyOHB4O1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1maWx0ZXIgLmFnLXNldC1maWx0ZXItaXRlbSA+IGRpdiwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1maWx0ZXIgLmFnLXNldC1maWx0ZXItaXRlbSA+IHNwYW4ge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7XFxuICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgICAgZGlzcGxheTogZmxleDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1maWx0ZXIgLmFnLWZpbHRlci1oZWFkZXItY29udGFpbmVyOm50aC1jaGlsZCgyKSB7XFxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNDI0MjQyOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWZpbHRlciAuYWctZmlsdGVyLWFwcGx5LXBhbmVsIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7XFxuICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7XFxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG4gICAgcGFkZGluZzogNHB4O1xcbiAgICBwYWRkaW5nLXRvcDogOHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZmlsdGVyIC5hZy1maWx0ZXItYXBwbHktcGFuZWwgYnV0dG9uIHtcXG4gICAgICBsaW5lLWhlaWdodDogMS41OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZmlsdGVyIC5hZy1maWx0ZXItYXBwbHktcGFuZWwgYnV0dG9uICsgYnV0dG9uIHtcXG4gICAgICBtYXJnaW4tbGVmdDogOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCxcXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uIHtcXG4gICAgaGVpZ2h0OiAxNnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLWdyb3VwIC5hZy1jb2x1bW4tc2VsZWN0LWNoZWNrYm94LFxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLWxhYmVsLFxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCAuYWctY29sdW1uLWdyb3VwLWljb25zLFxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbiAuYWctY29sdW1uLXNlbGVjdC1jaGVja2JveCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4gLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1sYWJlbCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4gLmFnLWNvbHVtbi1ncm91cC1pY29ucyB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1wcmltYXJ5LWNvbHMtbGlzdC1wYW5lbCB7XFxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjNDI0MjQyO1xcbiAgICBwYWRkaW5nLXRvcDogNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctcHJpbWFyeS1jb2xzLWxpc3QtcGFuZWwgPiBkaXYge1xcbiAgICAgIGN1cnNvcjogcG9pbnRlcjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4uYWctdG9vbHBhbmVsLWFkZC1ncm91cC1pbmRlbnQge1xcbiAgICBtYXJnaW4tbGVmdDogMjRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wcmltYXJ5LWNvbHMtaGVhZGVyLXBhbmVsIHtcXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICM0MjQyNDI7XFxuICAgIGhlaWdodDogMzJweDtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXByaW1hcnktY29scy1oZWFkZXItcGFuZWwgPiBkaXYge1xcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgICBtYXJnaW46IDAgNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcHJpbWFyeS1jb2xzLWhlYWRlci1wYW5lbCAuYWctZmlsdGVyLWJvZHkge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7XFxuICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdG9vbC1wYW5lbC13cmFwcGVyIHtcXG4gICAgYm9yZGVyLXJpZ2h0OiAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1maWx0ZXItcGFuZWwge1xcbiAgICAgIHdpZHRoOiAxMDAlOyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWZpbHRlci1wYW5lbCAuYWctZmlsdGVyLXRvb2xwYW5lbC1pbnN0YW5jZSB7XFxuICAgICAgICBjb2xvcjogcmdiYSgyNDUsIDI0NSwgMjQ1LCAwLjY0KTtcXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICAgICAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgICAgICAgIC1tcy1mbGV4OiBhdXRvO1xcbiAgICAgICAgICAgICAgICBmbGV4OiBhdXRvO1xcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG4gICAgICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgICAgICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgLW1zLWZsZXgtd3JhcDogbm93cmFwO1xcbiAgICAgICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICAtbXMtZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xcbiAgICAgICAgICAgIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDsgfVxcbiAgICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWZpbHRlci1wYW5lbCAuYWctZmlsdGVyLXRvb2xwYW5lbC1pbnN0YW5jZSAuYWctZmlsdGVyLXRvb2xwYW5lbC1oZWFkZXIge1xcbiAgICAgICAgICBwYWRkaW5nOiAwIDVweDsgfVxcbiAgICAgICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctZmlsdGVyLXBhbmVsIC5hZy1maWx0ZXItdG9vbHBhbmVsLWluc3RhbmNlIC5hZy1maWx0ZXItdG9vbHBhbmVsLWhlYWRlciA+IGRpdiB7XFxuICAgICAgICAgICAgbWFyZ2luOiBhdXRvIDA7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctZmlsdGVyLXBhbmVsIC5hZy1maWx0ZXItYm9keS13cmFwcGVyIHtcXG4gICAgICAgIHBhZGRpbmctdG9wOiA1cHg7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctZmlsdGVyLXBhbmVsIC5hZy1maWx0ZXItYWlyIHtcXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM0MjQyNDI7XFxuICAgICAgICBib3JkZXItbGVmdDogMDtcXG4gICAgICAgIGJvcmRlci1yaWdodDogMDtcXG4gICAgICAgIHBhZGRpbmc6IDRweCAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1waXZvdC1tb2RlLXBhbmVsIHtcXG4gICAgICBoZWlnaHQ6IDMycHg7XFxuICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgICAtbXMtZmxleDogbm9uZTtcXG4gICAgICAgICAgICAgIGZsZXg6IG5vbmU7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctcGl2b3QtbW9kZS1wYW5lbCAuYWctcGl2b3QtbW9kZS1zZWxlY3Qge1xcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgICBtYXJnaW4tbGVmdDogNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIHtcXG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzQyNDI0MjtcXG4gICAgICBwYWRkaW5nLWJvdHRvbTogM3B4O1xcbiAgICAgIHBhZGRpbmctdG9wOiAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1jb2x1bW4tZHJvcCB7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM0MjQyNDI7XFxuICAgICAgcGFkZGluZzogNHB4IDA7XFxuICAgICAgcGFkZGluZy1ib3R0b206IDhweDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1jb2x1bW4tZHJvcCAuYWctY29sdW1uLWRyb3AtZW1wdHktbWVzc2FnZSB7XFxuICAgICAgICBjb2xvcjogcmdiYSgyNDUsIDI0NSwgMjQ1LCAwLjM4KTtcXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICAgICAgICBmb250LXNpemU6IDEycHg7XFxuICAgICAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcXFwiU2Vnb2UgVUlcXFwiLCBSb2JvdG8sIE94eWdlbi1TYW5zLCBVYnVudHUsIENhbnRhcmVsbCwgXFxcIkhlbHZldGljYSBOZXVlXFxcIiwgc2Fucy1zZXJpZjtcXG4gICAgICAgIHBhZGRpbmctbGVmdDogMjRweDtcXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDRweDtcXG4gICAgICAgIG1hcmdpbi10b3A6IDRweDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1jb2x1bW4tZHJvcCAuYWctY29sdW1uLWRyb3AtbGlzdCB7XFxuICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XFxuICAgICAgICBtYXJnaW4tdG9wOiA0cHg7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctY29sdW1uLWRyb3AgPiBkaXYgPiA6Zmlyc3QtY2hpbGQge1xcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcXG4gICAgICAgIG1hcmdpbi1yaWdodDogNHB4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWNvbHVtbi1kcm9wOmxhc3QtY2hpbGQge1xcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1udW1lcmljLWhlYWRlciAuYWctaGVhZGVyLWNlbGwtbGFiZWwgLmFnLWhlYWRlci1pY29uIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDA7XFxuICAgIG1hcmdpbi1yaWdodDogNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXBhZ2luZy1wYW5lbCB7XFxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjNDI0MjQyO1xcbiAgICBjb2xvcjogcmdiYSgyNDUsIDI0NSwgMjQ1LCAwLjY0KTtcXG4gICAgaGVpZ2h0OiAzMnB4O1xcbiAgICBwYWRkaW5nOiAwIDEycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wYWdpbmctcGFuZWwgPiBzcGFuIHtcXG4gICAgICBtYXJnaW4tbGVmdDogMTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wYWdpbmctcGFnZS1zdW1tYXJ5LXBhbmVsIC5hZy1pY29uIHtcXG4gICAgd2lkdGg6IDE2cHg7XFxuICAgIGhlaWdodDogMTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wYWdpbmctcGFnZS1zdW1tYXJ5LXBhbmVsIC5hZy1wYWdpbmctYnV0dG9uIGJ1dHRvbiB7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgb3BhY2l0eTogMDtcXG4gICAgdG9wOiAwO1xcbiAgICByaWdodDogMDtcXG4gICAgYm90dG9tOiAwO1xcbiAgICBsZWZ0OiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXBhZ2luZy1wYWdlLXN1bW1hcnktcGFuZWwgLmFnLXBhZ2luZy1idXR0b24uYWctZGlzYWJsZWQgLmFnLWljb24ge1xcbiAgICBjb2xvcjogcmdiYSgyNDUsIDI0NSwgMjQ1LCAwLjM4KTtcXG4gICAgb3BhY2l0eTogMC4zODsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wYWdpbmctcGFnZS1zdW1tYXJ5LXBhbmVsIC5hZy1wYWdpbmctYnV0dG9uLmFnLWRpc2FibGVkIGJ1dHRvbiB7XFxuICAgIGN1cnNvcjogZGVmYXVsdDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wYWdpbmctcGFnZS1zdW1tYXJ5LXBhbmVsIHNwYW4ge1xcbiAgICBtYXJnaW46IDAgNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJvdy1zZWxlY3RlZCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDU4ODA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQ6bm90KC5hZy1jZWxsLXJhbmdlLXNpbmdsZS1jZWxsKSwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwpIHtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwpLmFnLWNlbGwtcmFuZ2UtdG9wLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkuYWctY2VsbC1yYW5nZS10b3Age1xcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICMwMEIwRkY7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwpLmFnLWNlbGwtcmFuZ2UtcmlnaHQsIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQ6bm90KC5hZy1jZWxsLXJhbmdlLXNpbmdsZS1jZWxsKS5hZy1jZWxsLXJhbmdlLXJpZ2h0IHtcXG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICMwMEIwRkY7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwpLmFnLWNlbGwtcmFuZ2UtYm90dG9tLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkuYWctY2VsbC1yYW5nZS1ib3R0b20ge1xcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICMwMEIwRkY7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwpLmFnLWNlbGwtcmFuZ2UtbGVmdCwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwpLmFnLWNlbGwtcmFuZ2UtbGVmdCB7XFxuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICMwMEIwRkY7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtZm9jdXMpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxNzYsIDI1NSwgMC4yKTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQ6bm90KC5hZy1jZWxsLWZvY3VzKS5hZy1jZWxsLXJhbmdlLWNoYXJ0IHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQ1LCAxNjYsIDI1NSwgMC41KTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQ6bm90KC5hZy1jZWxsLWZvY3VzKS5hZy1jZWxsLXJhbmdlLWNoYXJ0LmFnLWNlbGwtcmFuZ2UtY2hhcnQtY2F0ZWdvcnkge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjYsIDE3NywgNzQsIDAuNSk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY2VsbC1yYW5nZS1zZWxlY3RlZC0xOm5vdCguYWctY2VsbC1mb2N1cykge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDE3NiwgMjU1LCAwLjMpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQtMjpub3QoLmFnLWNlbGwtZm9jdXMpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxNzYsIDI1NSwgMC40KTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLTM6bm90KC5hZy1jZWxsLWZvY3VzKSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTc2LCAyNTUsIDAuNSk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY2VsbC1yYW5nZS1zZWxlY3RlZC00Om5vdCguYWctY2VsbC1mb2N1cykge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDE3NiwgMjU1LCAwLjYpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctc2VsZWN0aW9uLWZpbGwtdG9wLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWZpbGwtdG9wIHtcXG4gICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCAjMDBCMEZGOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1zZWxlY3Rpb24tZmlsbC10b3AuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWZpbGwtdG9wLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZCB7XFxuICAgICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCAjMGYwZjBmOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctc2VsZWN0aW9uLWZpbGwtcmlnaHQsIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1zZWxlY3Rpb24tZmlsbC1yaWdodCB7XFxuICAgIGJvcmRlci1yaWdodDogMXB4IGRhc2hlZCAjMDBCMEZGOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1zZWxlY3Rpb24tZmlsbC1yaWdodC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQsIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1zZWxlY3Rpb24tZmlsbC1yaWdodC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQge1xcbiAgICAgIGJvcmRlci1yaWdodDogMXB4IGRhc2hlZCAjMGYwZjBmOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctc2VsZWN0aW9uLWZpbGwtYm90dG9tLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWZpbGwtYm90dG9tIHtcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCAjMDBCMEZGOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1zZWxlY3Rpb24tZmlsbC1ib3R0b20uYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWZpbGwtYm90dG9tLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZCB7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCAjMGYwZjBmOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctc2VsZWN0aW9uLWZpbGwtbGVmdCwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1maWxsLWxlZnQge1xcbiAgICBib3JkZXItbGVmdDogMXB4IGRhc2hlZCAjMDBCMEZGOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1zZWxlY3Rpb24tZmlsbC1sZWZ0LmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZCwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1maWxsLWxlZnQuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkIHtcXG4gICAgICBib3JkZXItbGVmdDogMXB4IGRhc2hlZCAjMGYwZjBmOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWZpbGwtaGFuZGxlLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJhbmdlLWhhbmRsZSB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgd2lkdGg6IDZweDtcXG4gICAgaGVpZ2h0OiA2cHg7XFxuICAgIGJvdHRvbTogLTFweDtcXG4gICAgcmlnaHQ6IC0xcHg7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMEIwRkY7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZmlsbC1oYW5kbGUge1xcbiAgICBjdXJzb3I6IGNlbGw7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcmFuZ2UtaGFuZGxlIHtcXG4gICAgY3Vyc29yOiBud3NlLXJlc2l6ZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jZWxsLmFnLWNlbGwtaW5saW5lLWVkaXRpbmcge1xcbiAgICBwYWRkaW5nOiAxMnB4O1xcbiAgICBoZWlnaHQ6IDQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY2VsbC5hZy1jZWxsLWlubGluZS1lZGl0aW5nLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNlbGwuYWctcG9wdXAtZWRpdG9yIHtcXG4gICAgYmFja2dyb3VuZDogIzJkMzQzNjtcXG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7XFxuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcXG4gICAgcGFkZGluZzogNHB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWMxZjIwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXBvcHVwLWVkaXRvciB7XFxuICAgIHBhZGRpbmc6IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wb3B1cC1lZGl0b3IgLmFnLWxhcmdlLXRleHRhcmVhIHRleHRhcmVhIHtcXG4gICAgICBoZWlnaHQ6IGF1dG87XFxuICAgICAgcGFkZGluZzogMTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1yaWNoLXNlbGVjdCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMxYzFmMjA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1yaWNoLXNlbGVjdCAuYWctcmljaC1zZWxlY3QtbGlzdCB7XFxuICAgICAgd2lkdGg6IDIwMHB4O1xcbiAgICAgIGhlaWdodDogMTgycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1yaWNoLXNlbGVjdCAuYWctcmljaC1zZWxlY3QtdmFsdWUge1xcbiAgICAgIHBhZGRpbmc6IDAgNHB4IDAgMTJweDtcXG4gICAgICBoZWlnaHQ6IDI4cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1yaWNoLXNlbGVjdCAuYWctdmlydHVhbC1saXN0LWl0ZW0ge1xcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgICBoZWlnaHQ6IDI4cHg7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJpY2gtc2VsZWN0IC5hZy12aXJ0dWFsLWxpc3QtaXRlbTpob3ZlciB7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Q0NzQ5OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcmljaC1zZWxlY3QgLmFnLXJpY2gtc2VsZWN0LXJvdyB7XFxuICAgICAgcGFkZGluZy1sZWZ0OiAxMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcmljaC1zZWxlY3QgLmFnLXJpY2gtc2VsZWN0LXJvdy1zZWxlY3RlZCB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNTg4MDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLWZsb2F0aW5nLWZpbHRlci1idXR0b24ge1xcbiAgICBtYXJnaW4tbGVmdDogMTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1mbG9hdGluZy1maWx0ZXItYnV0dG9uIGJ1dHRvbiB7XFxuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcXG4gICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xcbiAgICAgICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7XFxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgICBib3JkZXI6IDA7XFxuICAgIGhlaWdodDogMTZweDtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgd2lkdGg6IDE2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctc2VsZWN0aW9uLWNoZWNrYm94Om5vdCguYWctaGlkZGVuKSB+IC5hZy1jZWxsLXZhbHVlOm5vdCg6ZW1wdHkpLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXNlbGVjdGlvbi1jaGVja2JveDpub3QoLmFnLWhpZGRlbikgKyAuYWctZ3JvdXAtdmFsdWU6bm90KDplbXB0eSksXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWdyb3VwLWV4cGFuZGVkOm5vdCguYWctaGlkZGVuKSB+IC5hZy1jZWxsLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ncm91cC1leHBhbmRlZDpub3QoLmFnLWhpZGRlbikgKyAuYWctZ3JvdXAtdmFsdWU6bm90KDplbXB0eSksXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWdyb3VwLWNvbnRyYWN0ZWQ6bm90KC5hZy1oaWRkZW4pIH4gLmFnLWNlbGwtdmFsdWU6bm90KDplbXB0eSksXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWdyb3VwLWNvbnRyYWN0ZWQ6bm90KC5hZy1oaWRkZW4pICsgLmFnLWdyb3VwLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ncm91cC1jaGVja2JveDpub3QoLmFnLWludmlzaWJsZSkgfiAuYWctY2VsbC12YWx1ZTpub3QoOmVtcHR5KSxcXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZ3JvdXAtY2hlY2tib3g6bm90KC5hZy1pbnZpc2libGUpICsgLmFnLWdyb3VwLXZhbHVlOm5vdCg6ZW1wdHkpIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDEycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctc2VsZWN0aW9uLWNoZWNrYm94Om5vdCguYWctaGlkZGVuKSB+IC5hZy1ncm91cC1jaGVja2JveCxcXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZ3JvdXAtZXhwYW5kZWQ6bm90KC5hZy1oaWRkZW4pIH4gLmFnLWdyb3VwLWNoZWNrYm94LFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ncm91cC1jb250cmFjdGVkOm5vdCguYWctaGlkZGVuKSB+IC5hZy1ncm91cC1jaGVja2JveCxcXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZ3JvdXAtY2hlY2tib3g6bm90KC5hZy1pbnZpc2libGUpIH4gLmFnLWdyb3VwLWNoZWNrYm94IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDEycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZ3JvdXAtY2hpbGQtY291bnQge1xcbiAgICBtYXJnaW4tbGVmdDogMnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXNlbGVjdGlvbi1jaGVja2JveCBzcGFuIHtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbHVtbi1kcm9wLWhvcml6b250YWwge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWMxZjIwO1xcbiAgICBoZWlnaHQ6IDI4cHg7XFxuICAgIHBhZGRpbmctbGVmdDogMTJweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbHVtbi1kcm9wLWhvcml6b250YWwgLmFnLWljb24tZ3JvdXAsXFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCAuYWctaWNvbi1waXZvdCB7XFxuICAgICAgbWFyZ2luLXJpZ2h0OiAxMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCAuYWctaWNvbi1zbWFsbC1sZWZ0LFxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbHVtbi1kcm9wLWhvcml6b250YWwgLmFnLWljb24tc21hbGwtcmlnaHQge1xcbiAgICAgIG1hcmdpbjogMCA0cHg7XFxuICAgICAgb3BhY2l0eTogMC42NDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbHVtbi1kcm9wLWhvcml6b250YWwgLmFnLWNvbHVtbi1kcm9wLWVtcHR5LW1lc3NhZ2Uge1xcbiAgICAgIG9wYWNpdHk6IDAuMzg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLWRyb3AtY2VsbCB7XFxuICAgIGJhY2tncm91bmQ6ICMzMjM5M2M7XFxuICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XFxuICAgIG1pbi1oZWlnaHQ6IDE2cHg7XFxuICAgIHBhZGRpbmc6IDAgMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLWRyb3AtY2VsbCAuYWctY29sdW1uLWRyb3AtY2VsbC10ZXh0IHtcXG4gICAgICBtYXJnaW46IDAgNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLWRyb3AtY2VsbCAuYWctY29sdW1uLWRyb3AtY2VsbC1idXR0b24ge1xcbiAgICAgIG1pbi13aWR0aDogMTZweDtcXG4gICAgICBtYXJnaW46IDAgMnB4O1xcbiAgICAgIG9wYWNpdHk6IDAuNjQ7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbHVtbi1kcm9wLWNlbGwgLmFnLWNvbHVtbi1kcm9wLWNlbGwtYnV0dG9uOmhvdmVyIHtcXG4gICAgICAgIG9wYWNpdHk6IDAuODc7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2x1bW4tZHJvcC1jZWxsIC5hZy1jb2x1bW4tZHJhZyB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2x1bW4tZHJvcC12ZXJ0aWNhbCAuYWctY29sdW1uLWRyb3AtY2VsbCB7XFxuICAgIG1hcmdpbi10b3A6IDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1zZWxlY3QtYWdnLWZ1bmMtcG9wdXAge1xcbiAgICBiYWNrZ3JvdW5kOiAjMmQzNDM2O1xcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xcbiAgICBwYWRkaW5nOiA0cHg7XFxuICAgIGJhY2tncm91bmQ6ICMyZDM0MzY7XFxuICAgIGhlaWdodDogNzBweDtcXG4gICAgcGFkZGluZzogMDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXNlbGVjdC1hZ2ctZnVuYy1wb3B1cCAuYWctdmlydHVhbC1saXN0LWl0ZW0ge1xcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgICBsaW5lLWhlaWdodDogMjBweDtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1zZXQtZmlsdGVyLWxpc3QsXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLW1lbnUtY29sdW1uLXNlbGVjdC13cmFwcGVyIHtcXG4gICAgd2lkdGg6IGF1dG87IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLWRyb3AtdmVydGljYWwgPiAuYWctY29sdW1uLWRyb3AtY2VsbCB7XFxuICAgIG1hcmdpbi1sZWZ0OiA0cHg7XFxuICAgIG1hcmdpbi10b3A6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY2VsbC1kYXRhLWNoYW5nZWQge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIyLCAxNjAsIDEzMywgMC41KSAhaW1wb3J0YW50OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNlbGwtZGF0YS1jaGFuZ2VkLWFuaW1hdGlvbiB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMXM7XFxuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMXM7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcm93LXN0dWIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXN0dWItY2VsbCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTJweDtcXG4gICAgcGFkZGluZy10b3A6IDRweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXN0dWItY2VsbCAuYWctbG9hZGluZy1pY29uIHtcXG4gICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBzcGluO1xcbiAgICAgICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IHNwaW47XFxuICAgICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDEwMDBtcztcXG4gICAgICAgICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMTAwMG1zO1xcbiAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XFxuICAgICAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcXG4gICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcXG4gICAgICAgICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsgfVxcblxcbkAtd2Via2l0LWtleWZyYW1lcyBzcGluIHtcXG4gIGZyb20ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9XFxuICB0byB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9IH1cXG5cXG5Aa2V5ZnJhbWVzIHNwaW4ge1xcbiAgZnJvbSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cXG4gIHRvIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0gfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXN0dWItY2VsbCAuYWctbG9hZGluZy10ZXh0IHtcXG4gICAgICBtYXJnaW4tbGVmdDogNHB4O1xcbiAgICAgIG1hcmdpbi10b3A6IDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1mbG9hdGluZy10b3Age1xcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzQyNDI0MjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1mbG9hdGluZy1ib3R0b20ge1xcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgIzQyNDI0MjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1mbG9hdGluZy10b3AsIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZmxvYXRpbmctYm90dG9tIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWZsb2F0aW5nLXRvcCAuYWctcm93LCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWZsb2F0aW5nLWJvdHRvbSAuYWctcm93IHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXN0YXR1cy1iYXIge1xcbiAgICBiYWNrZ3JvdW5kOiAjMmQzNDM2O1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjNDI0MjQyO1xcbiAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xcbiAgICBjb2xvcjogcmdiYSgyNDUsIDI0NSwgMjQ1LCAwLjM4KTtcXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcXG4gICAgZm9udC1zaXplOiAxMnB4O1xcbiAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcXFwiU2Vnb2UgVUlcXFwiLCBSb2JvdG8sIE94eWdlbi1TYW5zLCBVYnVudHUsIENhbnRhcmVsbCwgXFxcIkhlbHZldGljYSBOZXVlXFxcIiwgc2Fucy1zZXJpZjtcXG4gICAgcGFkZGluZy1yaWdodDogMTZweDtcXG4gICAgcGFkZGluZy1sZWZ0OiAxNnB4O1xcbiAgICBsaW5lLWhlaWdodDogMS41OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLW5hbWUtdmFsdWUtdmFsdWUge1xcbiAgICBjb2xvcjogI0Y1RjVGNTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1zdGF0dXMtYmFyLWNlbnRlciB7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1uYW1lLXZhbHVlIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDRweDtcXG4gICAgbWFyZ2luLXJpZ2h0OiA0cHg7XFxuICAgIHBhZGRpbmctdG9wOiA4cHg7XFxuICAgIHBhZGRpbmctYm90dG9tOiA4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZGV0YWlscy1yb3cge1xcbiAgICBwYWRkaW5nOiAyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLW92ZXJsYXktbG9hZGluZy13cmFwcGVyIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLW92ZXJsYXktbG9hZGluZy1jZW50ZXIge1xcbiAgICBiYWNrZ3JvdW5kOiAjMmQzNDM2O1xcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xcbiAgICBwYWRkaW5nOiA0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctc2lkZS1iYXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWMxZjIwO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjNDI0MjQyO1xcbiAgICBib3JkZXItbGVmdC13aWR0aDogMDtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctc2lkZS1iYXIgLmFnLXNpZGUtYnV0dG9ucyB7XFxuICAgICAgcGFkZGluZy10b3A6IDE2cHg7XFxuICAgICAgYmFja2dyb3VuZDogIzJkMzQzNjtcXG4gICAgICB3aWR0aDogMjBweDtcXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXNpZGUtYmFyIC5hZy1zaWRlLWJ1dHRvbnMgLmFnLXNpZGUtYnV0dG9uIGJ1dHRvbiB7XFxuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gICAgICAgIGJvcmRlcjogMDtcXG4gICAgICAgIGNvbG9yOiAjRjVGNUY1O1xcbiAgICAgICAgcGFkZGluZzogOHB4IDAgOHB4IDA7XFxuICAgICAgICB3aWR0aDogMTAwJTtcXG4gICAgICAgIG1hcmdpbjogMDtcXG4gICAgICAgIG1pbi1oZWlnaHQ6IDcycHg7XFxuICAgICAgICBib3JkZXItd2lkdGg6IDFweCAwIDFweCAwO1xcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IGNlbnRlcjtcXG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb24teDogY2VudGVyO1xcbiAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctc2lkZS1iYXIgLmFnLXNpZGUtYnV0dG9ucyAuYWctc2VsZWN0ZWQgYnV0dG9uIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMxYzFmMjA7XFxuICAgICAgICBtYXJnaW4tbGVmdDogLTFweDtcXG4gICAgICAgIHBhZGRpbmctbGVmdDogMXB4O1xcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjNDI0MjQyOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctc2lkZS1iYXIgLmFnLXBhbmVsLWNvbnRhaW5lciB7XFxuICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgIzQyNDI0MjsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXNpZGUtYmFyLmZ1bGwtd2lkdGggLmFnLXBhbmVsLWNvbnRhaW5lciB7XFxuICAgICAgYm9yZGVyLXJpZ2h0OiAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctc2lkZS1iYXIgLmFnLWNvbHVtbi1kcm9wIHtcXG4gICAgICBtaW4taGVpZ2h0OiA1MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXByaW1hcnktY29scy1maWx0ZXItd3JhcHBlciB7XFxuICAgIG1hcmdpbi1sZWZ0OiA0cHg7XFxuICAgIG1hcmdpbi1yaWdodDogNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWdyb3VwLWNvbXBvbmVudCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMyZDM0MzY7XFxuICAgIHBhZGRpbmc6IDBweDtcXG4gICAgYm9yZGVyOiAwIHNvbGlkICM0ZjRmNGY7XFxuICAgIGJvcmRlci10b3Atd2lkdGg6IDFweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWdyb3VwLWNvbXBvbmVudC5hZy1kaXNhYmxlZCA+IC5hZy1ncm91cC1jb21wb25lbnQtbGFiZWwgLmFnLWdyb3VwLWNvbXBvbmVudC10aXRsZSwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ncm91cC1jb21wb25lbnQuYWctZGlzYWJsZWQgPiAuYWctZ3JvdXAtY29tcG9uZW50LWNvbnRhaW5lciB7XFxuICAgICAgb3BhY2l0eTogMC41OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZ3JvdXAtY29tcG9uZW50IC5hZy1ncm91cC1jb21wb25lbnQtdGl0bGUtYmFyIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWMxZjIwO1xcbiAgICAgIGhlaWdodDogMTZweDtcXG4gICAgICBmb250LXNpemU6IDEycHg7XFxuICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXFxcIlNlZ29lIFVJXFxcIiwgUm9ib3RvLCBPeHlnZW4tU2FucywgVWJ1bnR1LCBDYW50YXJlbGwsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIHNhbnMtc2VyaWY7XFxuICAgICAgaGVpZ2h0OiAyNnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZ3JvdXAtY29tcG9uZW50Om5vdCguYWctY29sbGFwc2libGUpID4gZGl2IHtcXG4gICAgICBtYXJnaW4tbGVmdDogMDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWdyb3VwLWNvbXBvbmVudDpub3QoLmFnLWNvbGxhcHNpYmxlKSA+IC5hZy1ncm91cC1jb21wb25lbnQtdGl0bGUtYmFyIHtcXG4gICAgICBtYXJnaW4tbGVmdDogMDtcXG4gICAgICBwYWRkaW5nOiA0cHg7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWdyb3VwLWNvbXBvbmVudDpub3QoLmFnLWNvbGxhcHNpYmxlKSA+IC5hZy1ncm91cC1jb21wb25lbnQtdGl0bGUtYmFyIC5hZy1jb2x1bW4tZ3JvdXAtaWNvbnMge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWdyb3VwLWNvbXBvbmVudCAuYWctZ3JvdXAtY29tcG9uZW50LXRvb2xiYXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyODJmMzA7XFxuICAgICAgcGFkZGluZzogNHB4O1xcbiAgICAgIGJvcmRlcjogMCBzb2xpZCAjNDI0MjQyOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZ3JvdXAtY29tcG9uZW50ID4gLmFnLWdyb3VwLWNvbXBvbmVudC1jb250YWluZXIge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7XFxuICAgICAgcGFkZGluZzogNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZ3JvdXAtY29tcG9uZW50IC5hZy1ncm91cC1pdGVtIHtcXG4gICAgICBtYXJnaW46IDJweCAwOyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ncm91cC1jb21wb25lbnQgLmFnLWdyb3VwLWl0ZW0gLmFnLWdyb3VwLWNvbXBvbmVudC10aXRsZS1iYXIge1xcbiAgICAgICAgaGVpZ2h0OiAxOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWxhYmVsZWQgbGFiZWwge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDRweDtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sYWJlbGVkLmFnLWxhYmVsLWFsaWduLXRvcCBsYWJlbCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1zbGlkZXIgPiAuYWctd3JhcHBlciA+IGRpdjpub3QoOmZpcnN0LW9mLXR5cGUpLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWFuZ2xlLXNlbGVjdCA+IC5hZy13cmFwcGVyID4gZGl2Om5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xcbiAgICBtYXJnaW4tbGVmdDogOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWFuZ2xlLXNlbGVjdCAuYWctYW5nbGUtc2VsZWN0LWZpZWxkIC5hZy1wYXJlbnQtY2lyY2xlIHtcXG4gICAgd2lkdGg6IDI0cHg7XFxuICAgIGhlaWdodDogMjRweDtcXG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMnB4IHJnYmEoMCwgMCwgMCwgMC45KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMnB4IHJnYmEoMCwgMCwgMCwgMC45KTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1hbmdsZS1zZWxlY3QgLmFnLWFuZ2xlLXNlbGVjdC1maWVsZCAuYWctY2hpbGQtY2lyY2xlIHtcXG4gICAgdG9wOiA0cHg7XFxuICAgIGxlZnQ6IDEycHg7XFxuICAgIHdpZHRoOiA2cHg7XFxuICAgIGhlaWdodDogNnB4O1xcbiAgICBtYXJnaW4tbGVmdDogLTNweDtcXG4gICAgbWFyZ2luLXRvcDogLTRweDtcXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGM0YzRjOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRvZ2dsZS1idXR0b24gLmFnLWlucHV0LXdyYXBwZXIge1xcbiAgICBoZWlnaHQ6IDE2cHg7XFxuICAgIHdpZHRoOiA0MHB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQzNDM2O1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZWNmMGYxO1xcbiAgICBib3JkZXItcmFkaXVzOiA1MDByZW07IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10b2dnbGUtYnV0dG9uIC5hZy1pbnB1dC13cmFwcGVyIC5hZy1pY29uIHtcXG4gICAgICB3aWR0aDogMTZweDtcXG4gICAgICBoZWlnaHQ6IDE2cHg7XFxuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2VjZjBmMTtcXG4gICAgICBib3JkZXItcmFkaXVzOiA1MDByZW07XFxuICAgICAgcmlnaHQ6IGNhbGMoMTAwJSAtIDE2cHgpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRvZ2dsZS1idXR0b24uYWctc2VsZWN0ZWQgLmFnLWlucHV0LXdyYXBwZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBCMEZGOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdG9nZ2xlLWJ1dHRvbi5hZy1zZWxlY3RlZCAuYWctaW5wdXQtd3JhcHBlciAuYWctaWNvbiB7XFxuICAgICAgYmFja2dyb3VuZDogIzJkMzQzNjtcXG4gICAgICByaWdodDogLTFweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2xvci1waWNrZXIgPiAuYWctd3JhcHBlciB7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICM0MjQyNDI7XFxuICAgIGJvcmRlci1yYWRpdXM6IDVweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbG9yLXBpY2tlciA+IC5hZy13cmFwcGVyID4gZGl2IHtcXG4gICAgICB3aWR0aDogMTZweDtcXG4gICAgICBoZWlnaHQ6IDE2cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2xvci1waWNrZXIgPiAuYWctd3JhcHBlciBidXR0b24ge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyZDM0MzY7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2xvci1waWNrZXIgPiAuYWctd3JhcHBlciBidXR0b246aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzZDQ3NDk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZGlhbG9nLmFnLWNvbG9yLWRpYWxvZyB7XFxuICAgIGJvcmRlci1yYWRpdXM6IDVweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2xvci1wYW5lbCB7XFxuICAgIHBhZGRpbmc6IDRweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1jb2xvciB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkO1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS10b29scyB7XFxuICAgICAgcGFkZGluZzogMTBweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1zYXQge1xcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgcmlnaHQgdG9wLCBmcm9tKHdoaXRlKSwgdG8ocmdiYSgyMDQsIDE1NCwgMTI5LCAwKSkpO1xcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgd2hpdGUsIHJnYmEoMjA0LCAxNTQsIDEyOSwgMCkpOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLXZhbCB7XFxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgYm90dG9tLCBsZWZ0IHRvcCwgZnJvbShibGFjayksIHRvKHJnYmEoMjA0LCAxNTQsIDEyOSwgMCkpKTtcXG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCBibGFjaywgcmdiYSgyMDQsIDE1NCwgMTI5LCAwKSk7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2xvci1wYW5lbCAuYWctc3BlY3RydW0tZHJhZ2dlciB7XFxuICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcXG4gICAgICBoZWlnaHQ6IDEycHg7XFxuICAgICAgd2lkdGg6IDEycHg7XFxuICAgICAgYm9yZGVyOiAxcHggc29saWQgd2hpdGU7XFxuICAgICAgYmFja2dyb3VuZDogYmxhY2s7XFxuICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMjQpO1xcbiAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjI0KTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1odWUtYmFja2dyb3VuZCB7XFxuICAgICAgYm9yZGVyLXJhZGl1czogMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLWFscGhhLWJhY2tncm91bmQge1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbG9yLXBhbmVsIC5hZy1odWUtYWxwaGEge1xcbiAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XFxuICAgICAgaGVpZ2h0OiAxMXB4O1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1zbGlkZXIge1xcbiAgICAgIG1hcmdpbi10b3A6IC0xMnB4O1xcbiAgICAgIHdpZHRoOiAxM3B4O1xcbiAgICAgIGhlaWdodDogMTNweDtcXG4gICAgICBib3JkZXItcmFkaXVzOiAxM3B4O1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGY4Zjg7XFxuICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMzcpO1xcbiAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjM3KTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS10ZXh0LXZhbHVlIHtcXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcXG4gICAgICBsaW5lLWhlaWdodDogMjBweDtcXG4gICAgICBjb2xvcjogIzMzMzsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS10ZXh0LXZhbHVlOmZvY3VzIHtcXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjMGQ3N2U0O1xcbiAgICAgIHBhZGRpbmc6IDJweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbG9yLXBhbmVsIC5hZy1yZWNlbnQtY29sb3JzID4gZGl2IHtcXG4gICAgICBtYXJnaW46IDAgM3B4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2xvci1wYW5lbCAuYWctcmVjZW50LWNvbG9ycyA+IGRpdjpmaXJzdC1jaGlsZCB7XFxuICAgICAgICBtYXJnaW4tbGVmdDogMDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sb3ItcGFuZWwgLmFnLXJlY2VudC1jb2xvcnMgPiBkaXY6bGFzdC1jaGlsZCB7XFxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyay5hZy1wb3B1cCA+IGRpdjpub3QoLmFnLXRvb2x0aXAtY3VzdG9tKSB7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogNXB4IDVweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiA1cHggNXB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjMpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXBhbmVsIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzJkMzQzNjtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgIzQyNDI0MjsgfVxcbiAgICAuYWctZHJhZ2dpbmctcmFuZ2UtaGFuZGxlIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcGFuZWwuYWctZGlhbG9nLCAuYWctZHJhZ2dpbmctZmlsbC1oYW5kbGUgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wYW5lbC5hZy1kaWFsb2cge1xcbiAgICAgIG9wYWNpdHk6IDAuNztcXG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXBhbmVsIC5hZy10aXRsZS1iYXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMxYzFmMjA7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM1YzVjNWM7XFxuICAgICAgY29sb3I6IHJnYmEoMjQ1LCAyNDUsIDI0NSwgMC42NCk7XFxuICAgICAgaGVpZ2h0OiAzMnB4O1xcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcXG4gICAgICBmb250LXdlaWdodDogNjAwO1xcbiAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFxcXCJTZWdvZSBVSVxcXCIsIFJvYm90bywgT3h5Z2VuLVNhbnMsIFVidW50dSwgQ2FudGFyZWxsLCBcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLCBzYW5zLXNlcmlmO1xcbiAgICAgIHBhZGRpbmctbGVmdDogMTJweDtcXG4gICAgICBwYWRkaW5nOiA1cHggMTBweDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcGFuZWwgLmFnLXRpdGxlLWJhciAuYWctdGl0bGUtYmFyLWJ1dHRvbnMgLmFnLWJ1dHRvbiB7XFxuICAgICAgICBoZWlnaHQ6IDIwcHg7XFxuICAgICAgICB3aWR0aDogMjBweDtcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDsgfVxcbiAgICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wYW5lbCAuYWctdGl0bGUtYmFyIC5hZy10aXRsZS1iYXItYnV0dG9ucyAuYWctYnV0dG9uIC5hZy1pY29uIHtcXG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XFxuICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDsgfVxcbiAgICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wYW5lbCAuYWctdGl0bGUtYmFyIC5hZy10aXRsZS1iYXItYnV0dG9ucyAuYWctYnV0dG9uOmhvdmVyLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXBhbmVsIC5hZy10aXRsZS1iYXIgLmFnLXRpdGxlLWJhci1idXR0b25zIC5hZy1idXR0b24uYWctaGFzLXBvcHVwIHtcXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzA0MDUwNTsgfVxcbiAgICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wYW5lbCAuYWctdGl0bGUtYmFyIC5hZy10aXRsZS1iYXItYnV0dG9ucyAuYWctYnV0dG9uOm5vdCg6bGFzdC1jaGlsZCkge1xcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXBhbmVsIC5hZy1tZXNzYWdlLWJveCAuYWctbWVzc2FnZS1ib3gtYnV0dG9uLWJhciB7XFxuICAgICAgaGVpZ2h0OiAzMHB4O1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMxYzFmMjA7XFxuICAgICAgcGFkZGluZzogMnB4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wYW5lbCAuYWctbWVzc2FnZS1ib3ggLmFnLW1lc3NhZ2UtYm94LWJ1dHRvbi1iYXIgYnV0dG9uIHtcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10b29sdGlwIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzFjMWYyMDtcXG4gICAgY29sb3I6ICNGNUY1RjU7XFxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gICAgcGFkZGluZzogNXB4O1xcbiAgICBib3JkZXItd2lkdGg6IDFweDtcXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gICAgYm9yZGVyLWNvbG9yOiAjMzQzOTNiO1xcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMXM7XFxuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMXM7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10b29sdGlwLmFnLXRvb2x0aXAtaGlkaW5nIHtcXG4gICAgICBvcGFjaXR5OiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNoYXJ0IC5hZy1jaGFydC1tZW51IHtcXG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xcbiAgICBiYWNrZ3JvdW5kOiAjMmQzNDM2OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY2hhcnQgLmFnLWNoYXJ0LW1lbnUgPiBzcGFuOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTYxOTFhOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS13cmFwcGVyIC5hZy1ncm91cC1jb21wb25lbnQtY29udGFpbmVyIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy1taW5pLXdyYXBwZXIgLmFnLWNoYXJ0LW1pbmktdGh1bWJuYWlsIHtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgIzQyNDI0MjtcXG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xcbiAgICBtYXJnaW46IDVweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS13cmFwcGVyIC5hZy1jaGFydC1taW5pLXRodW1ibmFpbDpudGgtY2hpbGQoMm4gKyAyKTpub3QoOmxhc3QtY2hpbGQpIHtcXG4gICAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktd3JhcHBlciAuYWctY2hhcnQtbWluaS10aHVtYm5haWw6bnRoLWNoaWxkKDNuICsgMSkge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktd3JhcHBlciAuYWctY2hhcnQtbWluaS10aHVtYm5haWw6bnRoLWNoaWxkKDNuKSB7XFxuICAgICAgbWFyZ2luLXJpZ2h0OiAycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktd3JhcHBlciAuYWctY2hhcnQtbWluaS10aHVtYm5haWwuYWctc2VsZWN0ZWQge1xcbiAgICAgIGJvcmRlci1jb2xvcjogIzAwQjBGRjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLW5hdi1iYXIgLmFnLW5hdi1jYXJkLXNlbGVjdG9yIC5hZy1uYXYtY2FyZC1pdGVtIHtcXG4gICAgY29sb3I6ICNGNUY1RjU7XFxuICAgIGZvbnQtc2l6ZTogMTBweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3MtbmF2LWJhciAuYWctbmF2LWNhcmQtc2VsZWN0b3IgLmFnLW5hdi1jYXJkLWl0ZW0uYWctc2VsZWN0ZWQge1xcbiAgICAgIGNvbG9yOiAjMDBCMEZGOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1mb3JtYXQgLmFnLWNoYXJ0LWZvcm1hdC13cmFwcGVyIC5hZy1ncm91cC1pdGVtIHtcXG4gICAgbWFyZ2luOiA0LjhweCAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24ge1xcbiAgICAvKiB1c2UgIWltcG9ydGFudCB0byBwcmV2ZW50IGlzc3VlcyB3aXRoIGJyb3dzZXIgZXh0ZW5zaW9ucyB0aGF0IGNoYW5nZSBmb250cyAqL1xcbiAgICBmb250LWZhbWlseTogXFxcImFnR3JpZEJhbGhhbVxcXCI7XFxuICAgIHNwZWFrOiBub25lO1xcbiAgICBmb250LXNpemU6IDE2cHg7XFxuICAgIGNvbG9yOiAjZWNmMGYxO1xcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XFxuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcXG4gICAgLyogQmV0dGVyIEZvbnQgUmVuZGVyaW5nID09PT09PT09PT09ICovXFxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tYWdncmVnYXRpb246YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTAwXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLWFycm93czpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MDFcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tYXNjOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwMlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jYW5jZWw6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTAzXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLWNoYXJ0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwNFxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jaGVja2JveC1jaGVja2VkOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwNVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jaGVja2JveC1pbmRldGVybWluYXRlOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwNlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jaGVja2JveC11bmNoZWNrZWQ6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTA3XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLWNvbG9yLXBpY2tlcjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MDhcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tY29sdW1uOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwOVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jb2x1bW5zOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwQVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jb250cmFjdGVkOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwQlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jb3B5OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwQ1xcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jcm9zczpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MERcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tY3V0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwRVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1kYXRhOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwRlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1kZXNjOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxMFxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1leHBhbmRlZDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MTFcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tZXllLXNsYXNoOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxMlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1leWU6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTEzXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLWZpbHRlcjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MTRcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tZmlyc3Q6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTE1XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLWdyaXA6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTE2XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLWdyb3VwOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxN1xcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1pbmRldGVybWluYXRlOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxOFxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1sYXN0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxOVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1sZWZ0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxQVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1sb2FkaW5nOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxQlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1tYXhpbWl6ZTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MUNcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tbWVudTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MURcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tbWluaW1pemU6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTFFXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLW1pbnVzOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxRlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1uZXh0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyMFxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1ub25lOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyMVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1ub3QtYWxsb3dlZDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MjJcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tcGFzdGU6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTIzXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLXBpbjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MjRcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tcGl2b3Q6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTI1XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLXBsdXM6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTI2XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLXByZXZpb3VzOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyN1xcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1yYWRpby1idXR0b24tb2ZmOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyOFxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1yYWRpby1idXR0b24tb246YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTI5XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLXJpZ2h0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyQVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1zYXZlOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyQlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1zbWFsbC1kb3duOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyQ1xcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1zbWFsbC1sZWZ0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyRFxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1zbWFsbC1yaWdodDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MkVcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tc21hbGwtdXA6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTJGXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLXRpY2s6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTMwXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLXRyZWUtY2xvc2VkOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkzMVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi10cmVlLWluZGV0ZXJtaW5hdGU6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTMyXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLXRyZWUtb3BlbjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MzNcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tY2hlY2tib3gtY2hlY2tlZCxcXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jaGVja2JveC1pbmRldGVybWluYXRlLFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLWNoZWNrYm94LXVuY2hlY2tlZCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMyZDM0MzY7XFxuICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLWNoZWNrYm94LWNoZWNrZWQtcmVhZG9ubHksXFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jaGVja2JveC1pbmRldGVybWluYXRlLXJlYWRvbmx5LFxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tY2hlY2tib3gtdW5jaGVja2VkLXJlYWRvbmx5IHtcXG4gICAgICBjdXJzb3I6IGRlZmF1bHQ7XFxuICAgICAgb3BhY2l0eTogMC4zODsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLWNoZWNrYm94LWNoZWNrZWQge1xcbiAgICBjb2xvcjogIzAwQjBGRjsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tY2hlY2tib3gtY2hlY2tlZC1yZWFkb25seTpiZWZvcmUge1xcbiAgICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwNVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jaGVja2JveC1pbmRldGVybWluYXRlLXJlYWRvbmx5OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwNlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jaGVja2JveC11bmNoZWNrZWQtcmVhZG9ubHk6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTA3XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ncm91cC1leHBhbmRlZCAuYWctaWNvbi1jb250cmFjdGVkOmVtcHR5OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkzM1xcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1yb3ctZHJhZzpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MTZcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJpZ2h0LWFycm93OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxQVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1yYWRpby1idXR0b24tb24ge1xcbiAgICBjb2xvcjogIzAwQjBGRjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1yaWdodC1hcnJvdzpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MkFcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCB7XFxuICAgIHRleHQtYWxpZ246IHJpZ2h0OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1udW1lcmljLWNlbGwge1xcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWNoZWNrYm94Om5vdCguYWctbGFiZWwtYWxpZ24tbGVmdCkgbGFiZWwsIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1yYWRpby1idXR0b246bm90KC5hZy1sYWJlbC1hbGlnbi1sZWZ0KSBsYWJlbCwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvZ2dsZS1idXR0b246bm90KC5hZy1sYWJlbC1hbGlnbi1sZWZ0KSBsYWJlbCB7XFxuICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctcGl2b3QtbW9kZS1wYW5lbCAuYWctcGl2b3QtbW9kZS1zZWxlY3Qge1xcbiAgICAgIG1hcmdpbi1yaWdodDogNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWNvbHVtbi1kcm9wIC5hZy1jb2x1bW4tZHJvcC1lbXB0eS1tZXNzYWdlIHtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDRweDtcXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxNnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4tZ3JvdXAgLmFnLWNvbHVtbi1zZWxlY3QtY2hlY2tib3gsXFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4tZ3JvdXAgLmFnLWNvbHVtbi1ncm91cC1pY29ucyxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbiAuYWctY29sdW1uLXNlbGVjdC1jaGVja2JveCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbiAuYWctY29sdW1uLWdyb3VwLWljb25zIHtcXG4gICAgICBtYXJnaW4tbGVmdDogNHB4O1xcbiAgICAgIG1hcmdpbi1yaWdodDogNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4uYWctdG9vbHBhbmVsLWFkZC1ncm91cC1pbmRlbnQge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xcbiAgICAgIG1hcmdpbi1yaWdodDogMjRweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctaGVhZGVyLXNlbGVjdC1hbGwge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xcbiAgICAgIG1hcmdpbi1yaWdodDogMDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWNoZWNrYm94LFxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctZ3JvdXAtY2hlY2tib3gsXFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1ncm91cC1leHBhbmRlZCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWdyb3VwLWNvbnRyYWN0ZWQge1xcbiAgICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveDtcXG4gICAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7XFxuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWNoZWNrYm94ICsgLmFnLWNlbGwtdmFsdWU6bm90KDplbXB0eSksIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1zZWxlY3Rpb24tY2hlY2tib3ggKyAuYWctZ3JvdXAtdmFsdWU6bm90KDplbXB0eSksXFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWdyb3VwLWNoZWNrYm94ICsgLmFnLWNlbGwtdmFsdWU6bm90KDplbXB0eSksXFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWdyb3VwLWNoZWNrYm94ICsgLmFnLWdyb3VwLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1ncm91cC1leHBhbmRlZCArIC5hZy1jZWxsLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1ncm91cC1leHBhbmRlZCArIC5hZy1ncm91cC12YWx1ZTpub3QoOmVtcHR5KSxcXG4gICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctZ3JvdXAtY29udHJhY3RlZCArIC5hZy1jZWxsLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1ncm91cC1jb250cmFjdGVkICsgLmFnLWdyb3VwLXZhbHVlOm5vdCg6ZW1wdHkpIHtcXG4gICAgICAgIG1hcmdpbi1yaWdodDogMTJweDtcXG4gICAgICAgIG1hcmdpbi1sZWZ0OiBpbml0aWFsOyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1jaGVja2JveCArIC5hZy1ncm91cC1jaGVja2JveCxcXG4gICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctZ3JvdXAtY2hlY2tib3ggKyAuYWctZ3JvdXAtY2hlY2tib3gsXFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWdyb3VwLWV4cGFuZGVkICsgLmFnLWdyb3VwLWNoZWNrYm94LFxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1ncm91cC1jb250cmFjdGVkICsgLmFnLWdyb3VwLWNoZWNrYm94IHtcXG4gICAgICAgIG1hcmdpbi1yaWdodDogMTJweDtcXG4gICAgICAgIG1hcmdpbi1sZWZ0OiBpbml0aWFsOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1ncm91cC1jaGlsZC1jb3VudCB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IHVuc2V0O1xcbiAgICAgIG1hcmdpbi1yaWdodDogMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIHtcXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxMnB4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWNvbHVtbi1kcm9wLWhvcml6b250YWwgLmFnLWljb24tZ3JvdXAsXFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWNvbHVtbi1kcm9wLWhvcml6b250YWwgLmFnLWljb24tcGl2b3Qge1xcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEycHg7XFxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWZsb2F0aW5nLWZpbHRlci1idXR0b24ge1xcbiAgICAgIG1hcmdpbi1yaWdodDogMTJweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctc2V0LWZpbHRlci1pdGVtID4gZGl2LCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctc2V0LWZpbHRlci1pdGVtID4gc3BhbiB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDA7XFxuICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWhlYWRlciAuYWctaGVhZGVyLWNlbGwtcmVzaXplOjphZnRlciB7XFxuICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjNDI0MjQyO1xcbiAgICAgIGJvcmRlci1yaWdodDogMDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctc2lkZS1iYXIgLmFnLXBhbmVsLWNvbnRhaW5lciB7XFxuICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjNDI0MjQyO1xcbiAgICAgIGJvcmRlci1yaWdodDogMDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctc2lkZS1iYXIuZnVsbC13aWR0aCAuYWctcGFuZWwtY29udGFpbmVyIHtcXG4gICAgICBib3JkZXItbGVmdDogMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5zYXNzLXZhcmlhYmxlczo6YWZ0ZXIge1xcbiAgICBjb250ZW50OiAneyBcXFwiYXV0b1NpemVQYWRkaW5nXFxcIjogXFxcIjEycHhcXFwiLCBcXFwiaGVhZGVySGVpZ2h0XFxcIjogXFxcIjMycHhcXFwiLCBcXFwiZ3JvdXBQYWRkaW5nU2l6ZVxcXCI6IFxcXCIyOHB4XFxcIiwgXFxcImZvb3RlclBhZGRpbmdBZGRpdGlvblxcXCI6IFxcXCIxNnB4XFxcIiwgXFxcInZpcnR1YWxJdGVtSGVpZ2h0XFxcIjogXFxcIjI4cHhcXFwiLCBcXFwiYWdnRnVuY1BvcHVwSGVpZ2h0XFxcIjogXFxcIjk4cHhcXFwiLCBcXFwiY2hlY2tib3hJbmRlbnRXaWR0aFxcXCI6IFxcXCIyMHB4XFxcIiwgXFxcImxlYWZOb2RlUGFkZGluZ1xcXCI6IFxcXCIxMnB4XFxcIiwgXFxcInJvd0hlaWdodFxcXCI6IFxcXCIyOHB4XFxcIiwgXFxcImdyaWRTaXplXFxcIjogXFxcIjRweFxcXCIsIFxcXCJpY29uU2l6ZVxcXCI6IFxcXCIxNnB4XFxcIiB9JztcXG4gICAgZGlzcGxheTogbm9uZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jZWxsLWhpZ2hsaWdodCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMEIwRkYgIWltcG9ydGFudDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1oZWFkZXItY2VsbC1yZXNpemU6OmFmdGVyIHtcXG4gICAgaGVpZ2h0OiA4MCU7XFxuICAgIG1hcmdpbi10b3A6IDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1oZWFkZXItY2VsbDo6YWZ0ZXIsXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWhlYWRlci1ncm91cC1jZWxsOjphZnRlciB7XFxuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYmEoNjYsIDY2LCA2NiwgMC41KTtcXG4gICAgY29udGVudDogXFxcIiBcXFwiO1xcbiAgICBoZWlnaHQ6IDE2cHg7XFxuICAgIG1hcmdpbi10b3A6IDhweDtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0ZXh0LWluZGVudDogLTIwMDBweDtcXG4gICAgdG9wOiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctaGVhZGVyLWNlbGw6OmFmdGVyLFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLWhlYWRlci1ncm91cC1jZWxsOjphZnRlciB7XFxuICAgIHJpZ2h0OiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctaGVhZGVyLWNlbGw6OmFmdGVyLFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWhlYWRlci1ncm91cC1jZWxsOjphZnRlciB7XFxuICAgIGxlZnQ6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbC5hZy1jb2x1bW4tZHJvcCB7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICM0MjQyNDI7XFxuICAgIGJvcmRlci1ib3R0b206IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsLmFnLWNvbHVtbi1kcm9wLmFnLXdpZHRoLWhhbGY6Zmlyc3QtY2hpbGQge1xcbiAgICBib3JkZXItcmlnaHQ6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsLmFnLWNvbHVtbi1kcm9wLmFnLXdpZHRoLWhhbGY6Zmlyc3QtY2hpbGQge1xcbiAgICBib3JkZXItbGVmdDogMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1yb3cge1xcbiAgICBib3JkZXItY29sb3I6ICM1YzVjNWM7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcm93LXNlbGVjdGVkIHtcXG4gICAgYm9yZGVyLWNvbG9yOiAjMDA1ODgwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbHVtbi1kcm9wLWNlbGwge1xcbiAgICBtaW4taGVpZ2h0OiAyNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLWRyb3AtY2VsbCAuYWctY29sdW1uLWRyb3AtY2VsbC1idXR0b24ge1xcbiAgICAgIG1hcmdpbi1ib3R0b206IDJweDtcXG4gICAgICBtYXJnaW4tdG9wOiAycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2x1bW4tZHJvcC1jZWxsIC5hZy1jb2x1bW4tZHJvcC1jZWxsLWJ1dHRvbjpob3ZlciB7XFxuICAgICAgb3BhY2l0eTogMTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2x1bW4tZHJvcC12ZXJ0aWNhbCAuYWctY29sdW1uLWRyb3AtY2VsbCB7XFxuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XFxuICAgIG1hcmdpbi1yaWdodDogOHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLWRyb3AtdmVydGljYWwgLmFnLWNvbHVtbi1kcm9wLWNlbGwgLmFnLWNvbHVtbi1kcm9wLWNlbGwtdGV4dCB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzFjMWYyMDtcXG4gICAgaGVpZ2h0OiAzMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCAuYWctY29sdW1uLWRyb3AtY2VsbC10ZXh0IHtcXG4gICAgICBtYXJnaW4tbGVmdDogOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJvb3Qge1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjNDI0MjQyOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciB7XFxuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICM0MjQyNDI7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbiB7XFxuICAgICAgbWluLWhlaWdodDogMjBweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctY29sdW1uLWRyb3Age1xcbiAgICAgIHBhZGRpbmctYm90dG9tOiA4cHg7XFxuICAgICAgcGFkZGluZy10b3A6IDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXNpZGUtYmFyLFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciB7XFxuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgIzQyNDI0MjtcXG4gICAgYm9yZGVyLXJpZ2h0OiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctaWNvbi1leHBhbmRlZCxcXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1pY29uLWNvbnRyYWN0ZWQge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1tZW51LW9wdGlvbiB7XFxuICAgIGhlaWdodDogMjhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4tZ3JvdXAsXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbiB7XFxuICAgIGhlaWdodDogMjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10YWItaGVhZGVyIHtcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM0MjQyNDI7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10YWItaGVhZGVyIC5hZy10YWIge1xcbiAgICAgIG1hcmdpbi1ib3R0b206IC0ycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10YWItaGVhZGVyIC5hZy10YWIuYWctdGFiLXNlbGVjdGVkIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQzNDM2O1xcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRhYi1ib2R5LFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wb3B1cC1lZGl0b3IsXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLW1lbnUge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQzNDM2O1xcbiAgICBjb2xvcjogI0Y1RjVGNTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jZWxsLmFnLWNlbGwtaW5saW5lLWVkaXRpbmcge1xcbiAgICBoZWlnaHQ6IDI4cHg7XFxuICAgIHBhZGRpbmc6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZGV0YWlscy1yb3cge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQzNDM2OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLW92ZXJsYXktbG9hZGluZy13cmFwcGVyIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLW92ZXJsYXktbG9hZGluZy1jZW50ZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQzNDM2O1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjNDI0MjQyO1xcbiAgICBjb2xvcjogI0Y1RjVGNTtcXG4gICAgcGFkZGluZzogMTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLTE6bm90KC5hZy1jZWxsLWZvY3VzKSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTc2LCAyNTUsIDAuMyk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY2VsbC1yYW5nZS1zZWxlY3RlZC0yOm5vdCguYWctY2VsbC1mb2N1cykge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDE3NiwgMjU1LCAwLjQpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQtMzpub3QoLmFnLWNlbGwtZm9jdXMpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxNzYsIDI1NSwgMC41KTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLTQ6bm90KC5hZy1jZWxsLWZvY3VzKSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTc2LCAyNTUsIDAuNik7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcmljaC1zZWxlY3QtdmFsdWUge1xcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzQyNDI0MjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1maWx0ZXItYXBwbHktcGFuZWwge1xcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgIzQyNDI0MjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIGlucHV0LFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIHNlbGVjdCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMyNjJjMmU7XFxuICAgIGNvbG9yOiAjRjVGNUY1OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWZpbHRlci10b29scGFuZWwtYm9keSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMyZDM0MzY7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctYW5nbGUtc2VsZWN0IC5hZy1hbmdsZS1zZWxlY3QtZmllbGQgLmFnLXBhcmVudC1jaXJjbGUge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWFuZ2xlLXNlbGVjdCAuYWctYW5nbGUtc2VsZWN0LWZpZWxkIC5hZy1jaGlsZC1jaXJjbGUge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGM0YzRjOyB9XFxuXFxuXCIiLCJtb2R1bGUuZXhwb3J0cyA9IFwiQGNoYXJzZXQgXFxcIlVURi04XFxcIjtcXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiYWdHcmlkQmFsaGFtXFxcIjtcXG4gIHNyYzogdXJsKFxcXCJkYXRhOmFwcGxpY2F0aW9uL3gtZm9udC10dGY7Y2hhcnNldD11dGYtODtiYXNlNjQsQUFFQUFBQUxBSUFBQXdBd1QxTXZNZzhTQmxNQUFBQzhBQUFBWUdOdFlYQVhWdEs2QUFBQkhBQUFBRlJuWVhOd0FBQUFFQUFBQVhBQUFBQUlaMng1WnFNdXkzZ0FBQUY0QUFBYkRHaGxZV1FWb21PWEFBQWNoQUFBQURab2FHVmhCOElEK1FBQUhMd0FBQUFrYUcxMGVOWUFJbllBQUJ6Z0FBQUE0R3h2WTJIRW1MNGFBQUFkd0FBQUFISnRZWGh3QUVVQWxRQUFIalFBQUFBZ2JtRnRaWlFYeEtRQUFCNVVBQUFCa25CdmMzUUFBd0FBQUFBZjZBQUFBQ0FBQXdQMkFaQUFCUUFBQXBrQ3pBQUFBSThDbVFMTUFBQUI2d0F6QVFrQUFBQUFBQUFBQUFBQUFBQUFBQUFCRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFEcE13UEEvOEFBUUFQQUFFQUFBQUFCQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFEQUFBQUF3QUFBQndBQVFBREFBQUFIQUFEQUFFQUFBQWNBQVFBT0FBQUFBb0FDQUFDQUFJQUFRQWc2VFAvL2YvL0FBQUFBQUFnNlFELy9mLy9BQUgvNHhjRUFBTUFBUUFBQUFBQUFBQUFBQUFBQVFBQi8vOEFEd0FCQUFBQUFBQUFBQUFBQWdBQU56a0JBQUFBQUFFQUFBQUFBQUFBQUFBQ0FBQTNPUUVBQUFBQUFRQUFBQUFBQUFBQUFBSUFBRGM1QVFBQUFBQURBRC8vL3dQQkE0RUFKd0JRQUc0QUFBRWVBUmNXRlJZVUJ4UUhEZ0VIQmlNR0lpY2lKeTRCSnlZMUpqUTNORGMrQVRjMk16WXlGeklGSWdZSEJnY09BUmNVRng0QkZ4WVhGakkzTmpjK0FUYzJOelkwSnlZbkxnRW5KaU1pQmdjR0l3RWpOU0VWSGdFWEZnWUhEZ0VWSVRVekZTRTBOamMrQVNjdUFTYzFJUU1rUGx3Q0FRRUJBUUpjUGtsSlNaSkpTVWs5WFFJQkFRRUJBbHcrU1VsSmtrbEovZ1VsT2dFQkFRRUJBUU1DTlNSSlNVcVNTa2xKSkRVQ0F3RUJBUUVEQWpVa1NVaEprVWxJU1FIZ1FQOEFBWFVaRUFvWUoxWUJBRUQrZ0FZYkxXUWdMbUlDQVlBRGdBSmNQa2xKU1pKSlNVaytYQUlCQVFFQkFsdytTVWxKa2tsSlNUNWNBZ0VCQVVFNEpraEpTWkpKU1Vra05RSURBUUVCQVFNQ05TUkpTVXFTU2tsSkpEVUNBd0VCQWY4QVFBTWdRaXNjUkJjaVBScEFnQ1pNR0NkSEh5bEhORVVBQVFCVEFCTURyUU50QUNjQUFCTVhCeWMzSGdFWEJ5RVJCeWMzSGdFWEJ5Y1JJU2MzSGdFWEJ5YzNJUkUzSGdFWEJ5YzNGeEhOU2k2V2xnd1dERW9CRTBrdWx5WkxKaTVKQVJOS0xpVk1KWll1U3Y3dFNRd1dESmVYTGtrQm9Fa3VsNWNNRmd4SkFSTktMcFlsVENVdVN2N3RTUzRtU3lhWExrbis3VW9NRmd5V2xpNUtBUk1BQUFFQktRQ1pBdGNDNXdBS0FBQUJCeWMzSGdFWEJ5Y1JJd0hnaVM3WE5tczJMb2xBQW15SkxkYzJhell0aWY0dEFBTUFnQUJBQTRBRFFBQWJBRGNBUmdBQUFTSUhEZ0VIQmhVVUZ4NEJGeFl6TWpjK0FUYzJOVFFuTGdFbkpnY3lGeDRCRnhZVkZBY09BUWNHSXlJbkxnRW5KalUwTno0Qk56WVROeDRCRndjWEJ5Y0hKemNuTnhjQ0FFOUdSbWtlSGg0ZWFVWkdUMDlHUm1rZUhoNGVhVVpHVDBJN09sY1pHUmtaVnpvN1FrSTdPbGNaR1JrWlZ6bzdRcWtNRmd5cXFpNnBxUzZxcWk2cEEwQWVIbWxHUms5UFJrWnBIaDRlSG1sR1JrOVBSa1pwSGg1QUdSbFhPanRDUWpzNlZ4a1pHUmxYT2p0Q1FqczZWeGtaL3UycURCWU1xYWt1cXFvdXFha3VxZ0FEQU5VQWxRTXJBdXNBQkFBSkFBMEFBQk16RVNNUk56TVJJeEVUTXhFajFZQ0E3M2g0NzNoNEFqZitYZ0dpdFAycUFsYitxdjhBQUFNQUFQL0FCQUFEd0FBUEFDQUFLQUFBQlNFaUpqVVJORFl6SVRJV0ZSRVVCZ01oSWdZVkVSUVdNeUV5TmpVUk5DWWpCd0VuTnhjQkhnRURTUDF3VEd4c1RBS1FUR3hzU3YxdExVRkJMUUtUTFVGQUxneitWTkF6blFGNURScEFiRXdDa0V4c2JFejljRXhzQTdsQkxmMXRMa0JBTGdLVExVSDMvbFBSTkowQmVBMGFBQU1BQVAvQUJBQUR3QUFQQUNBQUpBQUFCU0VpSmpVUk5EWXpJVElXRlJFVUJnTWhJZ1lWRVJRV015RXlOalVSTkNZakF5RTFJUU5JL1hCTWJHeE1BcEJNYkd4Sy9XMHRRVUV0QXBNdFFVQXVKZjIyQWtwQWJFd0NrRXhzYkV6OWNFeHNBN2xCTGYxdExrQkFMZ0tUTFVIK0lrb0FBZ0FBLzhBRUFBUEFBQThBSUFBQUFUSVdGUkVVQmlNaElpWTFFVFEyTXdVaElnWVZFUlFXTXlFeU5qVVJOQ1lqQTBoTWJHeE0vWEJNYkd4TUFwTDliUzFCUVMwQ2t5MUJRQzREd0d4TS9YQk1iR3hNQXBCTWJFZEJMZjF0TGtCQUxnS1RMVUVBQUFBREFITUFTQU9OQXpnQUJnQUtBQllBQUFrQkJ4Y0pBaUUzRnlFRk1BWVZGQll6TWpZMU5DWUMvZjVWUEdiKzl3RkZBVVg5Nzh6TS9tZ0NURlV5SXlNeVZRR05BYXM4WnY3My9yc0JSYzNOUUdzcUl6SXlJeXByQUFBQUFBSUF3QUNnQWNBQzRBQURBQWNBQUNVaEVTRUhFVE1SQWNEL0FBRUF3SUNnQWtCQS9rQUJ3QUFFQU1BQW9BTkFBdUFBQXdBSEFBc0FEd0FBSlNNUk14TWpFVE1USXhFekFTTVJNd0hBUUVEQVFFREFRRUQ5d0VCQW9BSkEvY0FDUVAzQUFrRDl3QUpBQUFBQUFBRUJYZ0NwQXFJQzF3QUhBQUFCQnhjSENRRWVBUUtpNmVrdC91a0JGd3NYQXFucDZTNEJGd0VYREJZQUF3Q2dBRUFEWUFOQUFCQUFJQUF6QUFBbEl5SW1OUkUwTmpzQk1oWVZFUlFHSXhNaElnWVZFUlFXTXlFeU5qVVJOQ1lCSXp3Qk5SRTBOak1oT2dFekZTRWlCaFVSQXI3N1EyQmdRL3REWDE5REJmNzlKemMzSndFREp6YzMvZmRCWDBNQm1nRUNBZjVkSmpaQVgwUUJPa05nWUVQK3hrUmZBa0E0SnY2N0p6YzNKd0ZGSmpqK0FBRUVBZ0lYUTE5QU5pYjkzQUFBQUFBQkFTa0E2UUxYQXBjQURnQUFBVGNlQVJjSEZ3Y25CeWMzSnpjWEFnQ3BEQllNcXFvdXFha3VxcW91cVFIdHFnd1dES21wTHFxcUxxbXBMcW9BQUFBQUJRQkFBQUFEd0FPQUFDVUFNZ0EvQUVzQVVRQUFBVDRCTlRRbUl5SUdGUlFXTXpJMk54Y0hMZ0VqSWdZVkZCWXpNalkxTkNZbk53RXpOUUVISWlZMU5EWXpNaFlWRkFZakVTSW1OVFEyTXpJV0ZSUUdJd0VpSmpVME5qTXlGaFVVQmdrQkZ3RTFJd0dXQ0FocFNrcHBhVW9VSlJGcGFSRWxGRXBwYVVwS2FRZ0lhZ0U2aHYzV295VTBOQ1VsTlRVbEpUUTBKU1UxTlNVQkRRa05EUWtKRFEwQk1mN3pXUUU2aGdLREVTVVVTbWxwU2twcENBaHFhZ2dJYVVwS2FXbEtGQ1VSYWY3SExRSXBFRFVsSlRRMEpTVTEvZWMwSlNVMU5TVWxOQUZRRFFrSkRRMEpDUTBCcWY3eldRRTVMUUFBQndDR0FGWURlZ01xQUFzQUR3QWJBQ2dBTEFBNEFEd0FBRGNpQmhVVUZqTXlOalUwSmdVMUlSVURJZ1lWRkJZek1qWTFOQ1lITWhZVkZBWWpJaVkxTkRZekJTRTFJUUV5RmhVVUJpTWlKalUwTmdVaE5TSEdHaVltR2hzbEpRS1ovZWFhR2lZbUdoc2xKUnNTR1JrU0VSa1pFUUlKL3BFQmIvMzNHeVVsR3hvbUpnTE8vZVlDR3RZbUdoc2xKUnNhSm10VlZRR1ZKaG9hSmlZYUdpWVZHUklTR1JrU0VobFdWZ0UvSlJzYUppWWFHeVZxVlFBQUFBRUJLUUNaQXRjQzV3QUtBQUFCTng0QkZ3Y25OeGNSTXdJZ2lRd1dETmZYTG9sQUFSU0pDeGNMMTljdGlRSFRBQUVCWGdDcEFxSUMxd0FNQUFBSkFTYzNKemNXRng0QkZ4WVhBcUwrNlMzcDZTMGpJeU5GSXlNakFjRCs2UzdwNlM0akl5TkdJaU1qQUFBQUFBVUFRd0J6QTcwRERRQXNBRW9BYUFCekFIMEFBQUUrQVRjNkFUTVdGeDRCRnhZWE1BWUhEZ0VIRndjbkJnY0dKaWNtSnk0Qkp5NEJKekEyTno0Qk55YzNGd2NPQVE4QkZoY2VBUmNXTno0Qk55Y09BU01pSnk0Qkp5WTFORFkzSndFK0FUOEJKaWN1QVNjbUJ3NEJCeGMrQVRNeUZ4NEJGeFlWRkFZSEZ3RU9BUlVVRmpNeU5qY25CVDRCTlRRbUl5SUdCd0VxTDJnMkJ3UUhTRU5DY2kwdEd6a3VFQ1FUUGkxTE9VQkFnRDQ5TlNsRUdRb1BDaVViRnpjZ1BpMUtDakZPR0FFZE56ZUpURXhJQ3hZS0hSeEVKaThvS1QwU0VSY1ZNQUhCTVUwWUFSZ25LR1U3T3o0cFVDVWtIRVFtTGlrcFBSRVNHQlVxL3AwTURsNUNHQzBUM2dFTERRNWVRaGtzRXdMRUZ4c0NBaGdYVWprNFJIWXdFUjROUGkxTEhBME1DQlVWSmg1S0xCRWlHRk1rSHpZV1BpMUpVU0ZaTndKRk5UVS9Cd2NYQkFnRkhSVVlFaEk4S1NrdUprUWNNZjZaSVZvM0FqZ3VMa0VTRWdFQkV4RWpGUmNSRWowcEtDOGxSUndxQVFnVExCbENYZzROM2JBVExSaERYUTRNQUFRQVF3Q1pBNzBDOWdBa0FFTUFZQUJ2QUFBQkZoY2VBUmNXRnpBR0J3WUhEZ0VuSmljdUFTY3VBU2N3TmpjMk56NEJOelkzT2dFekJ3WUhEZ0VIQmc4QkZoY2VBUmNXTnpZM1BnRTNOajhCSmljdUFTY21JeGN5Rng0QkZ4WVZGQWNPQVFjR0l5SW5MZ0VuSmpVME56NEJOell6RnpVMEppTWlCaDBCRkJZek1qWTFBZ2xJUTBKeUxTMGJPUzQ2VGs2b1UxUkZLVVFaQ2c4S0pSc2dLU3BnTlRVM0J3UUhFVHM0TjJBbkpoZ0JIVGMzaVV4TVNDb2xKa0FhR2hJQkdDY29aVHM3UGdndEtDYzdFUklTRVRzbktDMHRLQ2M3RVJJU0VUc25LQzJnWGtKQ1hsNUNRbDRDOWdJWUYxSTVPRVIyTUQwakpCQVZGREllU2l3UkloaFRKQ3NqSXpJT0RnSkFBaElUUUMwc05nSkZOVFUvQndjWERSWVdPeU1qS0FNNExpMUNFaEVmRVJFN0p5Z3RMU2duT3hJUkVSSTdKeWd0TFNnbk94RVIyQUZDWGw1Q0FrSmVYa0lBQWdEQUFLQURRQU1BQUJzQU13QUFBUVlIRGdFSEJnY09BUjBCQnpRMkp6UW1KeVluTGdFbkppYzFJUVVVRmhjV0Z4NEJGeFlYRlRjMU5qYytBVGMyTno0Qk5RTkFBUllWUVNVbUlBUUV3QUlDQlFNaEpTWkFGaFVCQW9EOXdBUUVJU1VtUUJZVkFVQUJGaFZCSlNZZ0JBUUN1aUFmSHo4Z0lDSUZDd1oxa0VLRFFnWUtCQ0loSWtBZUh4MUdRQWNPQmlJaElrQWVIeDJHTUZZZ0h4OC9JQ0FpQmc0SEFBQUFBZ0QxQUtrREN3TFhBQWNBQ3dBQUFRY1hCd2tCSGdFbEVTTVJBd3ZwNlMzKzZRRVhDeGYrTlVBQ3FlbnBMZ0VYQVJjTUZnditBQUlBQUFBQURBREFBTUFEUUFMQUFBTUFCd0FMQUE4QUV3QVhBQnNBSHdBakFDY0FLd0F2QUFBbEl6VXpGeU0xTXhjak5UTVhJelV6SlNNMU14Y2pOVE1YSXpVekZ5TTFNeVVqTlRNWEl6VXpGeU0xTXhjak5UTUJBRUJBd0VCQXdFQkF3RUJBL2NCQVFNQkFRTUJBUU1CQVFQM0FRRURBUUVEQVFFREFRRURBZ0lDQWdJQ0FnRUNBZ0lDQWdJQ0FRSUNBZ0lDQWdJQUFBQWdBUC8vL0E4RURnUUFuQUZBQVZBQllBRndBWUFCa0FHZ0FBQUVlQVJjV0ZSWVVCeFFIRGdFSEJpTUdJaWNpSnk0Qkp5WTFKalEzTkRjK0FUYzJNell5RnpJRklnWUhCZ2NPQVJjVUZ4NEJGeFlYRmpJM05qYytBVGMyTnpZMEp5WW5MZ0VuSmlNaUJnY0dJeE1qTlRNRklUVWhKU00xTXdVaE5TRWxJelV6QlNFMUlRTWtQbHdDQVFFQkFRSmNQa2xKU1pKSlNVazlYUUlCQVFFQkFsdytTVWxKa2tsSi9nVWxPZ0VCQVFFQkFRTUNOU1JKU1VxU1NrbEpKRFVDQXdFQkFRRURBalVrU1VoSmtVbElTZUNBZ0FHQS9zQUJRUDZBZ0lBQmdQN0FBVUQrQUlDQUFnRCtRQUhBQTRBQ1hENUpTVW1TU1VsSlBsd0NBUUVCQVFKY1BrbEpTWkpKU1VrK1hBSUJBUUZCT0NaSVNVbVNTVWxKSkRVQ0F3RUJBUUVEQWpVa1NVbEtra3BKU1NRMUFnTUJBUUg5NEVCQVFFQkFRRUJBUUVCQUFBQUFBQVFBUXdESUE3MEN1QUFrQUUwQVlBQndBQUFCRmhjZUFSY1dGekFHQndZSERnRUhCaWNtSnk0Qkp5WW5NRFkzTmpjK0FUYzJNem9CQnlJR0J3WUhEZ0VIQmdjd0ZoY1dGeDRCTnpZM05qYytBVGMyTnpBbUp5WW5MZ0VuSmlNcUFTTVhIZ0VWRkFZSERnRW5MZ0VuTkRZM1BnRXpCdzRCQndZV0Z4WTJOelltSnk0Qkl3SUpRRUpCZFM4d0hVSTdLUzh2WXpJeU1EczVPbVlwS1JsRlB5RWxKVTRvS0NjSEJBb05HUXd1TUM5Vkl5TVZIeDhxTkRSdk9EZ3hLaWdvU0IwZEVoOGZIaVVrVHlvcEtBWUVCaEpHaXhnWk1IdzBQR2NDR1J3a1Vqb1RJMGdXR3hvdlBZd2VHeUF3RnlBb0FyZ0JEQXc1THk5SWZTa2RFaEVSQVFFREJCQVBPeTB0UG9FcUZ3NFBFUVFFUUFFQkF3c0xLeUVoTGo4Y0tCVVZFUUlDQndZTkRTd2VIaWMvSFJ3VEVoUUZCQjBDUlZRZ1BSUW1CZ1VGVFVFaVFoWWFERUFCQ1JrZ1hBMFJCeVVpWEFzR0FnQUNBUFVBcVFNTEF0Y0FEQUFRQUFBSkFTYzNKemNXRng0QkZ4WVhFeU1STXdJNS91a3Q2ZWt0SXlNaVJpTWpJOUpBUUFIQS91a3U2ZWt1SXlNalJpSWpJLzhBQWdBQUFBQUNBSGtBa3dPSEF1MEFDd0FXQUFBQkJ5RVZJUmNIQ1FFZUFSY0ZGemNuSVRVaE55Y09BUUkwUUFHVC9tMUFqZjdTQVM0alJ5UCtvTk15Z0FIdS9oS0FNalZwQW1CQXdFQ05BUzBCTFNOSEk2RFRNNEJBZ0RNMWFRQUFBQWdBWUFBZ0E2QURZQUFEQUFrQUR3QVRBQmNBSFFBakFDY0FBQ1VqRVRNbkJ5YzNIZ0VGQnljM0hnRTNJVFVoQlNFMUlUY0hKemNlQVNVSEp6Y2VBUVVqRVRNQ0lFQkFjODB0elFzWEFhc3R6UzB6WjRiL0FBRUEvY0QvQUFFQVRTM05MVE5uQWRQTkxjMExGLzdlUUVBZ0FRQWd6UzNOQ3hlckxjMHRNMmZOUUVCQVlDM05MVE5uYmMwdHpRc1hpd0VBQUFBQ0FQRUFzUU1QQXM4QUJ3QU9BQUFUSHdFbk55Y0hKeVV2QVJjSEZ6ZnhBOTlIZEZOMVJ3SWVBOTlIZEZOMUFaUGZBMGQxVTNSSFd0OERSM1ZUZEFBQUF3REFBT0FEUUFLZ0FBTUFCd0FMQUFBbElUVWhOU0UxSVRVaE5TRURRUDJBQW9EOWdBS0EvWUFDZ09CQWdFQ0FRQUFBQUFJQXl3Q0tBelVDOWdBSEFBOEFBQ1V2QVJjSEZ6Y1hFeDhCSnpjbkJ5Y0IyZ1RlUjNSVGRVZE1CTjVIZEZOMVI3amVCRWgxVTNWSEFoRGVCRWgxVTNWSEFBQUFBZ0NBQVdBRGdBSWdBQU1BQndBQUFTRTFJUVVWSVRVRGdQMEFBd0Q5UUFLQUFXREFRRUJBQUFFQlhnQ3BBcUlDMXdBTUFBQUpBU2MzSnpjV0Z4NEJGeFlYQXFMKzZTM3A2UzBqSXlORkl5TWpBY0QrNlM3cDZTNGpJeU5HSWlNakFBQUFBQUlBUUFDZ0E4QUM0QUFLQUJZQUFBRTNIZ0VYQnljM0Z4RXpBU01SQnljM0hnRVhCeWNSQVVHUURCY000T0F2a0VJQndFS1FMK0E0Y0RndmtBRVloZ3NXQzlMU0xJWUJ5UDNBQWNpR0xOSTBhVFVzaHY0NEFBQUdBSFlBUUFPTEEwc0FIQUF5QUVFQVV3QmlBRzRBQUFFV0Z4NEJGeFlIQmdjT0FTY21KeVluTGdFM05qYzJOejRCTnpZWEJ3WUhEZ0VIQmhjV0Z4NEJOelkzTmljdUFTY21CeGNXQnc0QkJ3WW5MZ0V2QVFFZUFRRVdOejRCTnpZM05pWW5CZ2NPQVFjR0J4TXlGaDhCQVNZbkpqWTNOamM2QVFjR0J3NEJCd1lYQVM0QkJ3SUdZbFZWYXc0TkxTZE9UYmRkWGtjdkhoNFhDQWdjR1NjbVh6YzNPUXBUUjBoYUNnc25LRk5UdVZWVkxTVUtDVmhKU1Z6ekl3Z0lUVUJCVGh3MEdDZ0Jnd1lML3Rnb0tTcEpIQnNNQ0FFSklTQWhRU0VnSVVNaFFCMHAvbjBsQlFZeU9EaFlCQW9HTUNvcU53b0tEZ0VHRVNJU0Ewc0NOVFdrWldSZ1ZEYzNKUlVVUXlzNU9uNUFRRG95S2lrNkVCQUJRQUV0TFl4VlZGRlRMUzBFS2l0Y1RGVlZqeTh1QWMxQVNrbDdKU1lJQWhFTkZnR0RDaFQrclF3RkJTY2dIeWtlUFIwZ0lTRkJJU0FoQWRZUkVCYitmRUZMVElJdUxRWkFBaGtaVFRBdkxnRUZCUVVCQUFBQUFBTUFnQUF3QTRBRFVBQVdBQ0lBTmdBQUFUUW1JeUlHRlNNaUJoVVJGQll6SVRJMk5SRTBKaU1GTWhZVkZBWWpJaVkxTkRZQklTSW1OUkUwTmpzQkZTRTFNeklXRlJFVUJnS0FPRWhJT0lBMVMwczFBZ0ExUzBzMS93QVNHUmtTRWhrWkFSTCtBQm9tSmhwQUFZQkFHaVltQXZBWVNFZ1lTelgrUURWTFN6VUJ3RFZMRVJnUkVSZ1lFUkVZL1pFbUdnSEFHaWFBZ0NZYS9rQWFKZ0FBQUFBQ0FIQUFNQU9RQTFBQUtBQkFBQUFCSnpBMk56NEJGemNtTno0Qk56WXhGaGNlQVJjV0Z3NEJCdzRCSndjZUFSY1dCZzhCSndjbk53RU9BUjhCQnlZR0J3RStBVGMySmljM01CWTNKekFHTVFGWmxRWVBJWEV3WlFrUUVDd1VGQ1VrSlVrbEpTUUZDd1VhUlNwcUFRRUNBeWd2R0pycExla0JDQkVhQ2hDZ01HSVRBU0VDQkFJZUJ3ZWFPaVRhQVFGSGxTY1ZMUThKWXh3ZEhTNFBEeVVsSkVvbEpDVUhEZ2NqTHdkbkNRRWJNMkFZREpycUx1a0J0ZzRtRHhlZkRBSWUvdDhDQXdJYVZpeWFFU3JaQVFBQUNnQS8vLzhEd1FPQkFDY0FPd0JIQUdFQVp3QnVBSHNBaGdDTUFKSUFBQUVlQVJjV0ZSWVVCeFFIRGdFSEJpTUdJaWNpSnk0Qkp5WTFKalEzTkRjK0FUYzJNell5RnpJVElSRVdNeFkyTnpZM1BnRTNOamMrQVNjMEp3RVVGaFVlQVJjeUZqTTFJd0VISnpjZUFSY0hKeFVPQVFjakZ3Y25OeDRCRndjV05qYzFCUlFXRlRNMUp3WVVCek0xSXpjcUFTTWlCZ2NVQmhVek5UTWxGVE0wSmpVdUFTY2lKaVVHSWdjVk16Y21JaU1WTXdNa1Bsd0NBUUVCQVFKY1BrbEpTWkpKU1VrOVhRSUJBUUVCQWx3K1NVbEpra2xKcVAyNlBUMDllajA5UFNRMUFnSUNBUUVCQXZ6OEFRSTFKQWdRQ0h3Q1FRa3VWeFlyRmk0SkFWdy9kd291VmxZTUZnd0xVWUlCL2J3QmZuMEJBWDk5dnhndUZ5VTZBUUY4UWdISGZRRUNOU1FJRVA3eklVRWdnc01nUVNHQ0E0QUNYRDVKU1VtU1NVbEpQbHdDQVFFQkFRSmNQa2xKU1pKSlNVaytYQUlCQVFIL0FQMjhBZ0VCQVFJQ0FqVWtQVDA4ZWowOVBQNDhDUkVJSkRVQ0FYNEJGZ291VmhVc0ZTNEtjejlmQWdrdVYxY01GZ3dLQVIxRmMxUWhRQ0NCd2lGQUlZTC9PQ1lZTUJsQmYzOEpFUWtrTlFJQkFnRUJmNEFCZ1FBQUFnQ2dBR0FEWUFNZ0FBc0FGd0FBQVNFVklSRWpFU0UxSVJFekJ4RWhGU0VSTXhFaE5TRVJBbUFCQVA4QXdQOEFBUURBZ1A4QUFRQkFBUUQvQUFJZ3dQOEFBUURBQVFCQS93QkEvd0FCQUVBQkFBQUFBUUZlQUtrQ29nTFhBQWNBQUFFSEZ3Y0pBUjRCQXFMcDZTMys2UUVYQ3hjQ3FlbnBMZ0VYQVJjTUZnQUNBQUQvd0FRQUE4QUFHd0EzQUFBQklnY09BUWNHRlJRWEhnRVhGak15Tno0Qk56WTFOQ2N1QVNjbUJ6SVhIZ0VYRmhVVUJ3NEJCd1lqSWljdUFTY21OVFEzUGdFM05nSUFhbDFkaXlrb0tDbUxYVjFxYWwxZGl5a29LQ21MWFYxcVhWRlNlaU1qSXlONlVsRmRYVkZTZWlNakl5TjZVbEVEd0NncGkxMWRhbXBkWFlzcEtDZ3BpMTFkYW1wZFhZc3BLRUFqSTNwU1VWMWRVVko2SXlNakkzcFNVVjFkVVZKNkl5TUFBd0FBLzhBRUFBUEFBQnNBTndCVEFBQUJJZ2NPQVFjR0ZSUVhIZ0VYRmpNeU56NEJOelkxTkNjdUFTY21CeklYSGdFWEZoVVVCdzRCQndZaklpY3VBU2NtTlRRM1BnRTNOZ0VVQnc0QkJ3WWpJaWN1QVNjbU5UUTNQZ0UzTmpNeUZ4NEJGeFlDQUdwZFhZc3BLQ2dwaTExZGFtcGRYWXNwS0NncGkxMWRhbDFSVW5vakl5TWplbEpSWFYxUlVub2pJeU1qZWxKUkFaMFpHVmM2TzBKQ096cFhHUmtaR1ZjNk8wSkNPenBYR1JrRHdDZ3BpMTFkYW1wZFhZc3BLQ2dwaTExZGFtcGRYWXNwS0VBakkzcFNVVjFkVVZKNkl5TWpJM3BTVVYxZFVWSjZJeVArUUVJN09sY1pHUmtaVnpvN1FrSTdPbGNaR1JrWlZ6bzdBQUFBQUFJQWVRQ1RBNGNDN1FBT0FCa0FBQWtCSnpjaE5TRW5OeFlYSGdFWEZpVVhJUlVoQnhjM0p3NEJBNGYrMG8xQS9tMEJrMENOSmlZbFRDVW0vc2FBL2hJQjdvQXkwOU1NR2dIQS90T05RTUJBalNVbUprc21KWHFBUUlBejA5TU5HUUFBQUFBQ0FJQUFRQU9BQTBBQURnQVpBQUFCRVNFUkl4RVVGak1oTWpZMUVTTUZOeGNISnpjWEVUTVJNUU1yL2FwVk1pTUNWaU15VmY4QWJqelYxVHh1VmdIQS90VUJLLzdWSXpJeUl3RXJIVzQ4MWRVOGJnR2QvbU1BQVFEcEFSNERGd0ppQUFjQUFBa0NOeGMzSGdFREYvN3AvdWt1NmVrTUZnSTEvdWtCRnkzcDZRc1hBQUFCQVY0QXFRS2lBdGNBQndBQUFRY1hCd2tCSGdFQ291bnBMZjdwQVJjTEZ3S3A2ZWt1QVJjQkZ3d1dBQUVCWGdDcEFxSUMxd0FNQUFBSkFTYzNKemNXRng0QkZ4WVhBcUwrNlMzcDZTMGpJeU5GSXlNakFjRCs2UzdwNlM0akl5TkdJaU1qQUFBQUFBRUE2UUVlQXhjQ1lnQUxBQUFCQnljSEp3RVdGeDRCRnhZREZ5N3A2UzRCRnlNaklrWWpJd0ZMTGVucExRRVhJeU1qUlNNakFBQUFBUURwQU80REZ3S1NBQWNBQUFrQkp6Y1hBUjRCQXhmK2liY3VpUUZKREJZQ1pmNkp0eTJKQVVrTEZ3QUJBVjRBcVFLaUF0Y0FEQUFBQ1FFbk55YzNGaGNlQVJjV0Z3S2kvdWt0NmVrdEl5TWpSU01qSXdIQS91a3U2ZWt1SXlNalJpSWpJd0FBQUFBQkFNQUJvQU5BQWVBQUF3QUFFeUVWSWNBQ2dQMkFBZUJBQUFBQUFRRHBBUjRERndKaUFBY0FBQWtDTnhjM0hnRURGLzdwL3VrdTZla01GZ0kxL3VrQkZ5M3A2UXNYQUFBQkFBQUFBUUFBRWt2aGVWOFBQUFVBQ3dRQUFBQUFBTmxCajQwQUFBQUEyVUdQalFBQS84QUVBQVBBQUFBQUNBQUNBQUFBQUFBQUFBRUFBQVBBLzhBQUFBUUFBQUFBQUFRQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBNEJBQUFBQUFBQUFBQUFBQUFBZ0FBQUFRQUFEOEVBQUJUQkFBQktRUUFBSUFFQUFEVkJBQUFBQVFBQUFBRUFBQUFCQUFBY3dRQUFNQUVBQURBQkFBQlhnUUFBS0FFQUFFcEJBQUFRQVFBQUlZRUFBRXBCQUFCWGdRQUFFTUVBQUJEQkFBQXdBUUFBUFVFQUFEQUJBQUFQd1FBQUVNRUFBRDFCQUFBZVFRQUFHQUVBQUR4QkFBQXdBUUFBTXNFQUFDQUJBQUJYZ1FBQUVBRUFBQjJCQUFBZ0FRQUFIQUVBQUEvQkFBQW9BUUFBVjRFQUFBQUJBQUFBQVFBQUhrRUFBQ0FCQUFBNlFRQUFWNEVBQUZlQkFBQTZRUUFBT2tFQUFGZUJBQUF3QVFBQU9rQUFBQUFBQW9BRkFBZUFNSUJCZ0VlQVl3QnFBSHFBaVFDV0FLR0Fwb0N2QUxTQXg0RFBnTzJCQklFS2dSSUJRZ0ZyZ1lDQmlBR2FnY01CN1lIMmdnSUNGSUljZ2lNQ0s0SXdnamdDUXdKeEFvVUNud0xWQXQrQzVRTDZneHFESndNeUF6ZURQUU5FZzB1RFVRTllnMXdEWVlBQUFBQkFBQUFPQUNUQUF3QUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGdDdUFBRUFBQUFBQUFFQUNBQUFBQUVBQUFBQUFBSUFCd0JwQUFFQUFBQUFBQU1BQ0FBNUFBRUFBQUFBQUFRQUNBQitBQUVBQUFBQUFBVUFDd0FZQUFFQUFBQUFBQVlBQ0FCUkFBRUFBQUFBQUFvQUdnQ1dBQU1BQVFRSkFBRUFFQUFJQUFNQUFRUUpBQUlBRGdCd0FBTUFBUVFKQUFNQUVBQkJBQU1BQVFRSkFBUUFFQUNHQUFNQUFRUUpBQVVBRmdBakFBTUFBUVFKQUFZQUVBQlpBQU1BQVFRSkFBb0FOQUN3UVdkQ1lXeG9ZVzBBUVFCbkFFSUFZUUJzQUdnQVlRQnRWbVZ5YzJsdmJpQXhMakFBVmdCbEFISUFjd0JwQUc4QWJnQWdBREVBTGdBd1FXZENZV3hvWVcwQVFRQm5BRUlBWVFCc0FHZ0FZUUJ0UVdkQ1lXeG9ZVzBBUVFCbkFFSUFZUUJzQUdnQVlRQnRVbVZuZFd4aGNnQlNBR1VBWndCMUFHd0FZUUJ5UVdkQ1lXeG9ZVzBBUVFCbkFFSUFZUUJzQUdnQVlRQnRSbTl1ZENCblpXNWxjbUYwWldRZ1lua2dTV052VFc5dmJpNEFSZ0J2QUc0QWRBQWdBR2NBWlFCdUFHVUFjZ0JoQUhRQVpRQmtBQ0FBWWdCNUFDQUFTUUJqQUc4QVRRQnZBRzhBYmdBdUFBQUFBd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9PVxcXCIpIGZvcm1hdChcXFwidHJ1ZXR5cGVcXFwiKTtcXG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxuICBmb250LXN0eWxlOiBub3JtYWw7IH1cXG5cXG4uYWctdGhlbWUtYmFsaGFtIHtcXG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XFxuICBjb2xvcjogIzAwMDtcXG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFxcXCJTZWdvZSBVSVxcXCIsIFJvYm90bywgT3h5Z2VuLVNhbnMsIFVidW50dSwgQ2FudGFyZWxsLCBcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLCBzYW5zLXNlcmlmO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIGZvbnQtc2l6ZTogMTJweDtcXG4gIGxpbmUtaGVpZ2h0OiAxOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1tZW51LCAuYWctdGhlbWUtYmFsaGFtIC5hZy10aGVtZS1iYWxoYW0uYWctZG5kLWdob3N0LCAuYWctdGhlbWUtYmFsaGFtIC5hZy1jZWxsLmFnLWNlbGwtaW5saW5lLWVkaXRpbmcsIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNlbGwuYWctcG9wdXAtZWRpdG9yLCAuYWctdGhlbWUtYmFsaGFtIC5hZy1zZWxlY3QtYWdnLWZ1bmMtcG9wdXAsIC5hZy10aGVtZS1iYWxoYW0gLmFnLW92ZXJsYXktbG9hZGluZy1jZW50ZXIge1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjQkRDM0M3OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy10YWItaGVhZGVyIC5hZy10YWIge1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcXG4gICAgbWFyZ2luOiA0cHg7XFxuICAgIG1hcmdpbi1ib3R0b206IDA7XFxuICAgIHBhZGRpbmc6IDRweCA4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRhYi1oZWFkZXIgLmFnLXRhYi5hZy10YWItc2VsZWN0ZWQge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcXG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICMwMDkxRUE7XFxuICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB3aGl0ZTtcXG4gICAgYm9yZGVyLWNvbG9yOiAjQkRDM0M3OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIGxhYmVsIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAqIHtcXG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAqOmZvY3VzLCAuYWctdGhlbWUtYmFsaGFtICogKjpiZWZvcmUsIC5hZy10aGVtZS1iYWxoYW0gKiAqOmFmdGVyIHtcXG4gICAgICBvdXRsaW5lOiBub25lO1xcbiAgICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gICAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRhYiB7XFxuICAgIC13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7XFxuICAgICAgICAgICAgYm94LXNpemluZzogY29udGVudC1ib3g7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDI4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA1NnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDU2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0zIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDYwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA4NHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDg0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC01IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC02IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTYge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE2OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDE2OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNyB7XFxuICAgIHBhZGRpbmctbGVmdDogMTQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC03IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC03IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxOTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTcge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxOTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDE2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtOCB7XFxuICAgIHBhZGRpbmctbGVmdDogMjI0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC04IHtcXG4gICAgcGFkZGluZy1yaWdodDogMjI0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC05IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTkge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDI1MnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtOSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDI1MnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDIwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTAge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyMDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEwIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEwIHtcXG4gICAgcGFkZGluZy1yaWdodDogMjgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xMSB7XFxuICAgIHBhZGRpbmctbGVmdDogMjIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDIyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTEge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDMwOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTEge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAzMDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTEyIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyNDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTEyIHtcXG4gICAgcGFkZGluZy1yaWdodDogMjQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xMiB7XFxuICAgIHBhZGRpbmctbGVmdDogMzM2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDMzNnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDI2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTMge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyNjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEzIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAzNjRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEzIHtcXG4gICAgcGFkZGluZy1yaWdodDogMzY0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xNCB7XFxuICAgIHBhZGRpbmctbGVmdDogMjgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDI4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDM5MnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTQge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAzOTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTE1IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAzMDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTE1IHtcXG4gICAgcGFkZGluZy1yaWdodDogMzAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xNSB7XFxuICAgIHBhZGRpbmctbGVmdDogNDIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xNSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDQyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDMyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTYge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAzMjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE2IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0NDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE2IHtcXG4gICAgcGFkZGluZy1yaWdodDogNDQ4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xNyB7XFxuICAgIHBhZGRpbmctbGVmdDogMzQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xNyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDM0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDQ3NnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTcge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA0NzZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTE4IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAzNjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTE4IHtcXG4gICAgcGFkZGluZy1yaWdodDogMzYwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xOCB7XFxuICAgIHBhZGRpbmctbGVmdDogNTA0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDUwNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDM4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTkge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAzODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE5IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA1MzJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE5IHtcXG4gICAgcGFkZGluZy1yaWdodDogNTMycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yMCB7XFxuICAgIHBhZGRpbmctbGVmdDogNDAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yMCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDQwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDU2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjAge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1NjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTIxIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0MjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTIxIHtcXG4gICAgcGFkZGluZy1yaWdodDogNDIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yMSB7XFxuICAgIHBhZGRpbmctbGVmdDogNTg4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDU4OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDQ0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjIge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA0NDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTIyIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA2MTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTIyIHtcXG4gICAgcGFkZGluZy1yaWdodDogNjE2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yMyB7XFxuICAgIHBhZGRpbmctbGVmdDogNDYwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yMyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDQ2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDY0NHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjMge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA2NDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTI0IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0ODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTI0IHtcXG4gICAgcGFkZGluZy1yaWdodDogNDgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yNCB7XFxuICAgIHBhZGRpbmctbGVmdDogNjcycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDY3MnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDUwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjUge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1MDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI1IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA3MDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI1IHtcXG4gICAgcGFkZGluZy1yaWdodDogNzAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yNiB7XFxuICAgIHBhZGRpbmctbGVmdDogNTIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDUyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDcyOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjYge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA3MjhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTI3IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA1NDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTI3IHtcXG4gICAgcGFkZGluZy1yaWdodDogNTQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yNyB7XFxuICAgIHBhZGRpbmctbGVmdDogNzU2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yNyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDc1NnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDU2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjgge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1NjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI4IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA3ODRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI4IHtcXG4gICAgcGFkZGluZy1yaWdodDogNzg0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yOSB7XFxuICAgIHBhZGRpbmctbGVmdDogNTgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yOSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDU4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDgxMnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjkge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA4MTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTMwIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA2MDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTMwIHtcXG4gICAgcGFkZGluZy1yaWdodDogNjAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zMCB7XFxuICAgIHBhZGRpbmctbGVmdDogODQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zMCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDg0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzEge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDYyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzEge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA2MjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTMxIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA4NjhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTMxIHtcXG4gICAgcGFkZGluZy1yaWdodDogODY4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0zMiB7XFxuICAgIHBhZGRpbmctbGVmdDogNjQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDY0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDg5NnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzIge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA4OTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTMzIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA2NjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTMzIHtcXG4gICAgcGFkZGluZy1yaWdodDogNjYwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zMyB7XFxuICAgIHBhZGRpbmctbGVmdDogOTI0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zMyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDkyNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDY4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzQge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA2ODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTM0IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA5NTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTM0IHtcXG4gICAgcGFkZGluZy1yaWdodDogOTUycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0zNSB7XFxuICAgIHBhZGRpbmctbGVmdDogNzAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zNSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDcwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDk4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzUge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA5ODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTM2IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA3MjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTM2IHtcXG4gICAgcGFkZGluZy1yaWdodDogNzIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zNiB7XFxuICAgIHBhZGRpbmctbGVmdDogMTAwOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzYge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMDA4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0zNyB7XFxuICAgIHBhZGRpbmctbGVmdDogNzQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zNyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDc0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEwMzZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTM3IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTAzNnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDc2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzgge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA3NjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTM4IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMDY0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEwNjRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTM5IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA3ODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTM5IHtcXG4gICAgcGFkZGluZy1yaWdodDogNzgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zOSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTA5MnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzkge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMDkycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00MCB7XFxuICAgIHBhZGRpbmctbGVmdDogODAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00MCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDgwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDExMjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQwIHtcXG4gICAgcGFkZGluZy1yaWdodDogMTEyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDEge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDgyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDEge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA4MjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQxIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMTQ4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00MSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDExNDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTQyIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA4NDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTQyIHtcXG4gICAgcGFkZGluZy1yaWdodDogODQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00MiB7XFxuICAgIHBhZGRpbmctbGVmdDogMTE3NnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDIge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMTc2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00MyB7XFxuICAgIHBhZGRpbmctbGVmdDogODYwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00MyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDg2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEyMDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQzIHtcXG4gICAgcGFkZGluZy1yaWdodDogMTIwNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDg4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDQge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA4ODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ0IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMjMycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00NCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEyMzJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTQ1IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA5MDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTQ1IHtcXG4gICAgcGFkZGluZy1yaWdodDogOTAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00NSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTI2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDUge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMjYwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00NiB7XFxuICAgIHBhZGRpbmctbGVmdDogOTIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00NiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDkyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEyODhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ2IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTI4OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDk0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDcge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA5NDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ3IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMzE2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00NyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEzMTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTQ4IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA5NjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTQ4IHtcXG4gICAgcGFkZGluZy1yaWdodDogOTYwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00OCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTM0NHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDgge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMzQ0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00OSB7XFxuICAgIHBhZGRpbmctbGVmdDogOTgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00OSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDk4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEzNzJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ5IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTM3MnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jZWxsIC5hZy1pY29uIHtcXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jaGVja2JveCwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcmFkaW8tYnV0dG9uLCAuYWctdGhlbWUtYmFsaGFtIC5hZy10b2dnbGUtYnV0dG9uIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBjdXJzb3I6IGRlZmF1bHQ7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2hlY2tib3ggbGFiZWwsIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJhZGlvLWJ1dHRvbiBsYWJlbCwgLmFnLXRoZW1lLWJhbGhhbSAuYWctdG9nZ2xlLWJ1dHRvbiBsYWJlbCB7XFxuICAgICAgY3Vyc29yOiBkZWZhdWx0OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2hlY2tib3ggbGFiZWw6ZW1wdHksIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJhZGlvLWJ1dHRvbiBsYWJlbDplbXB0eSwgLmFnLXRoZW1lLWJhbGhhbSAuYWctdG9nZ2xlLWJ1dHRvbiBsYWJlbDplbXB0eSB7XFxuICAgICAgICBtYXJnaW46IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2hlY2tib3g6bm90KC5hZy1sYWJlbC1hbGlnbi1sZWZ0KSBsYWJlbCwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcmFkaW8tYnV0dG9uOm5vdCguYWctbGFiZWwtYWxpZ24tbGVmdCkgbGFiZWwsIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRvZ2dsZS1idXR0b246bm90KC5hZy1sYWJlbC1hbGlnbi1sZWZ0KSBsYWJlbCB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2VsbCB7XFxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IHN1YnBpeGVsLWFudGlhbGlhc2VkOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1sZWFmLWluZGVudCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAyOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLWNlbGwge1xcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3cuYWctY2VsbC1maXJzdC1yaWdodC1waW5uZWQsIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctY2VsbDpub3QoLmFnLWNlbGwtZm9jdXMpLmFnLWNlbGwtZmlyc3QtcmlnaHQtcGlubmVkIHtcXG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjQkRDM0M3OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy5hZy1jZWxsLWxhc3QtbGVmdC1waW5uZWQsIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctY2VsbDpub3QoLmFnLWNlbGwtZm9jdXMpLmFnLWNlbGwtbGFzdC1sZWZ0LXBpbm5lZCB7XFxuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNCREMzQzc7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWxlYWYtaW5kZW50IHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAyOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWNlbGwge1xcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHRyYW5zcGFyZW50OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy5hZy1jZWxsLWZpcnN0LXJpZ2h0LXBpbm5lZCwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1jZWxsOm5vdCguYWctY2VsbC1mb2N1cykuYWctY2VsbC1maXJzdC1yaWdodC1waW5uZWQge1xcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNCREMzQzc7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LmFnLWNlbGwtbGFzdC1sZWZ0LXBpbm5lZCwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1jZWxsOm5vdCguYWctY2VsbC1mb2N1cykuYWctY2VsbC1sYXN0LWxlZnQtcGlubmVkIHtcXG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0JEQzNDNzsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdmFsdWUtY2hhbmdlLWRlbHRhIHtcXG4gICAgcGFkZGluZy1yaWdodDogMnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy12YWx1ZS1jaGFuZ2UtZGVsdGEtdXAge1xcbiAgICBjb2xvcjogIzQzYTA0NzsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdmFsdWUtY2hhbmdlLWRlbHRhLWRvd24ge1xcbiAgICBjb2xvcjogI2U1MzkzNTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdmFsdWUtY2hhbmdlLXZhbHVlIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAgIGJvcmRlci1yYWRpdXM6IDFweDtcXG4gICAgcGFkZGluZy1sZWZ0OiAxcHg7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDFweDtcXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDFzO1xcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDFzOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy12YWx1ZS1jaGFuZ2UtdmFsdWUtaGlnaGxpZ2h0IHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMiwgMTYwLCAxMzMsIDAuNSk7XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjFzO1xcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMXM7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWlucHV0LXdyYXBwZXIgaW5wdXQ6bm90KFt0eXBlXSksXFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcInRleHRcXFwiXSxcXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwibnVtYmVyXFxcIl0sXFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcInRlbFxcXCJdLFxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJkYXRlXFxcIl0sXFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcImRhdGV0aW1lLWxvY2FsXFxcIl0ge1xcbiAgICBib3JkZXItd2lkdGg6IDFweDtcXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gICAgYm9yZGVyLWNvbG9yOiAjOTVBNUE2OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWlucHV0LXdyYXBwZXIgaW5wdXQ6bm90KFt0eXBlXSk6ZGlzYWJsZWQsXFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwidGV4dFxcXCJdOmRpc2FibGVkLFxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcIm51bWJlclxcXCJdOmRpc2FibGVkLFxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcInRlbFxcXCJdOmRpc2FibGVkLFxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcImRhdGVcXFwiXTpkaXNhYmxlZCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJkYXRldGltZS1sb2NhbFxcXCJdOmRpc2FibGVkIHtcXG4gICAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM4KTtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWJlYmViO1xcbiAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgxNDksIDE2NSwgMTY2LCAwLjMpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcImRhdGVcXFwiXSB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgICAgICAtbXMtZmxleDogMSAxIGF1dG87XFxuICAgICAgICAgICAgZmxleDogMSAxIGF1dG87IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwicmFuZ2VcXFwiXSB7XFxuICAgIHBhZGRpbmc6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWlucHV0LXdyYXBwZXIgdGV4dGFyZWEge1xcbiAgICBib3JkZXItd2lkdGg6IDFweDtcXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gICAgYm9yZGVyLWNvbG9yOiAjOTVBNUE2OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWlucHV0LXdyYXBwZXIgdGV4dGFyZWE6ZGlzYWJsZWQge1xcbiAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlYmViZWI7XFxuICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE0OSwgMTY1LCAxNjYsIDAuMyk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWhlYWRlciB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY3Zjc7XFxuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xcbiAgICBmb250LXdlaWdodDogNjAwO1xcbiAgICBmb250LXNpemU6IDEycHg7XFxuICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFxcXCJTZWdvZSBVSVxcXCIsIFJvYm90bywgT3h5Z2VuLVNhbnMsIFVidW50dSwgQ2FudGFyZWxsLCBcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLCBzYW5zLXNlcmlmO1xcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0JEQzNDNzsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcGlubmVkLXJpZ2h0LWhlYWRlciB7XFxuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0JEQzNDNzsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcGlubmVkLWxlZnQtaGVhZGVyIHtcXG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0JEQzNDNzsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaGVhZGVyLXJvdyB7XFxuICAgIGJvcmRlcjogbm9uZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcm93IHtcXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gICAgYm9yZGVyLWNvbG9yOiAjQkRDM0M3O1xcbiAgICBib3JkZXItd2lkdGg6IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcm93Om5vdCguYWctcm93LWZpcnN0KSB7XFxuICAgICAgYm9yZGVyLXdpZHRoOiAxcHggMCAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJvdy5hZy1yb3ctbGFzdCB7XFxuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1yb3ctb2RkIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZmRmZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcm93LWV2ZW4ge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaG9yaXpvbnRhbC1sZWZ0LXNwYWNlciB7XFxuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNCREMzQzc7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaG9yaXpvbnRhbC1sZWZ0LXNwYWNlci5hZy1zY3JvbGxlci1jb3JuZXIge1xcbiAgICAgIGJvcmRlci1yaWdodDogbm9uZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaG9yaXpvbnRhbC1yaWdodC1zcGFjZXIge1xcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNCREMzQzc7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaG9yaXpvbnRhbC1yaWdodC1zcGFjZXIuYWctc2Nyb2xsZXItY29ybmVyIHtcXG4gICAgICBib3JkZXItbGVmdDogbm9uZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcm93LWhvdmVyIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0VDRjBGMTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbnVtZXJpYy1jZWxsIHtcXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWhlYWRlci1jZWxsLWxhYmVsIC5hZy1oZWFkZXItaWNvbiB7XFxuICAgIG1hcmdpbi1sZWZ0OiA0cHg7XFxuICAgIG9wYWNpdHk6IDAuODc7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWhlYWRlci1jZWxsLFxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaGVhZGVyLWdyb3VwLWNlbGwge1xcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xcbiAgICBib3JkZXItY29sb3I6ICNCREMzQzc7XFxuICAgIHBhZGRpbmctbGVmdDogMTJweDtcXG4gICAgcGFkZGluZy1yaWdodDogMTJweDtcXG4gICAgYm9yZGVyLXdpZHRoOiAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWhlYWRlci1jZWxsLmFnLWhlYWRlci1jZWxsLW1vdmluZyxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaGVhZGVyLWdyb3VwLWNlbGwuYWctaGVhZGVyLWNlbGwtbW92aW5nIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1oZWFkZXItY2VsbDpub3QoLmFnLWhlYWRlci1ncm91cC1jZWxsLW5vLWdyb3VwKSxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaGVhZGVyLWdyb3VwLWNlbGw6bm90KC5hZy1oZWFkZXItZ3JvdXAtY2VsbC1uby1ncm91cCkge1xcbiAgICAgIGJvcmRlci10b3Atd2lkdGg6IDFweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaGVhZGVyLXJvdzpmaXJzdC1jaGlsZCAuYWctaGVhZGVyLWNlbGwsIC5hZy10aGVtZS1iYWxoYW0gLmFnLWhlYWRlci1yb3c6Zmlyc3QtY2hpbGQgLmFnLWhlYWRlci1ncm91cC1jZWxsIHtcXG4gICAgYm9yZGVyLXRvcC13aWR0aDogMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaGVhZGVyLWNlbGwtcmVzaXplIHtcXG4gICAgY3Vyc29yOiBjb2wtcmVzaXplOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1oZWFkZXItc2VsZWN0LWFsbCB7XFxuICAgIG1hcmdpbi1yaWdodDogMTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2VsbCB7XFxuICAgIGxpbmUtaGVpZ2h0OiAyNnB4O1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEycHg7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEycHg7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgICBwYWRkaW5nLWxlZnQ6IDExcHg7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDExcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJvdy1kcmFnIHtcXG4gICAgY3Vyc29yOiBtb3ZlO1xcbiAgICBjdXJzb3I6IC13ZWJraXQtZ3JhYjtcXG4gICAgY3Vyc29yOiBncmFiO1xcbiAgICBtaW4td2lkdGg6IDI4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJvdy1kcmFnZ2luZywgLmFnLXRoZW1lLWJhbGhhbSAuYWctcm93LWRyYWdnaW5nIC5hZy1yb3ctZHJhZyB7XFxuICAgIGN1cnNvcjogbW92ZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyYWcge1xcbiAgICBjdXJzb3I6IG1vdmU7XFxuICAgIGN1cnNvcjogLXdlYmtpdC1ncmFiO1xcbiAgICBjdXJzb3I6IGdyYWI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJvdy1kcmFnZ2luZyB7XFxuICAgIG9wYWNpdHk6IDAuNTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1oYXMtZm9jdXMgLmFnLWNlbGwtZm9jdXM6bm90KC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkKSxcXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctaGFzLWZvY3VzIC5hZy1jZWxsLWZvY3VzLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwsXFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLWNlbGwtZm9jdXMuYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbC5hZy1jZWxsLXJhbmdlLWhhbmRsZSwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1oYXMtZm9jdXMgLmFnLWNlbGwtZm9jdXM6bm90KC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkKSxcXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctaGFzLWZvY3VzIC5hZy1jZWxsLWZvY3VzLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwsXFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWNlbGwtZm9jdXMuYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbC5hZy1jZWxsLXJhbmdlLWhhbmRsZSB7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDkxRUE7XFxuICAgIG91dGxpbmU6IGluaXRpYWw7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWhlYWRlci1jZWxsLXJlc2l6ZSB7XFxuICAgIHdpZHRoOiA4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLW1lbnUge1xcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7XFxuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcXG4gICAgcGFkZGluZzogNHB4O1xcbiAgICBwYWRkaW5nOiAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLW1lbnUgLmFnLW1lbnUtbGlzdCB7XFxuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcXG4gICAgICBtYXJnaW4tdG9wOiA0cHg7XFxuICAgICAgd2lkdGg6IDEwMCU7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbWVudSAuYWctbWVudS1vcHRpb24tYWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUNGMEYxOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLW1lbnUgLmFnLW1lbnUtb3B0aW9uLWRpc2FibGVkIHtcXG4gICAgICBvcGFjaXR5OiAwLjU7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbWVudSAuYWctbWVudS1vcHRpb24tdGV4dCB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDRweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1tZW51IC5hZy1tZW51LW9wdGlvbi1pY29uIHtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDRweDtcXG4gICAgICBwYWRkaW5nLXJpZ2h0OiA0cHg7XFxuICAgICAgbWluLXdpZHRoOiAyNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLW1lbnUgLmFnLW1lbnUtb3B0aW9uLXNob3J0Y3V0IHtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDhweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1tZW51IC5hZy1tZW51LXNlcGFyYXRvciB7XFxuICAgICAgaGVpZ2h0OiA4cHg7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1tZW51IC5hZy1tZW51LXNlcGFyYXRvciA+IHNwYW4ge1xcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIwd2lkdGglM0QnMSclMjBoZWlnaHQlM0QnOHB4JyUyMHZpZXdCb3glM0QnMCUyMDAlMjAxJTIwOHB4JyUyMHhtbG5zJTNEJ2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyclM0UlM0NsaW5lJTIweDElM0QnMCclMjB5MSUzRCc0cHgnJTIweDIlM0QnMSclMjB5MiUzRCc0cHgnJTIwc3Ryb2tlLXdpZHRoJTNEJzEnJTIwc3Ryb2tlJTNEJyUyM0JEQzNDNyclMkYlM0UlM0MlMkZzdmclM0VcXFwiKTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1tZW51IC5hZy1tZW51LW9wdGlvbi1wb3B1cC1wb2ludGVyIHtcXG4gICAgICB3aWR0aDogMjRweDtcXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0uYWctZG5kLWdob3N0IHtcXG4gICAgYmFja2dyb3VuZDogd2hpdGU7XFxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lO1xcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XFxuICAgIHBhZGRpbmc6IDRweDtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0JEQzNDNztcXG4gICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XFxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICAgIGZvbnQtc2l6ZTogMTJweDtcXG4gICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXFxcIlNlZ29lIFVJXFxcIiwgUm9ib3RvLCBPeHlnZW4tU2FucywgVWJ1bnR1LCBDYW50YXJlbGwsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIHNhbnMtc2VyaWY7XFxuICAgIGhlaWdodDogMzJweCAhaW1wb3J0YW50O1xcbiAgICBsaW5lLWhlaWdodDogMzJweDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBwYWRkaW5nOiAwIDhweDtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoOHB4KTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoOHB4KTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLmFnLWRuZC1naG9zdCBzcGFuLFxcbiAgICAuYWctdGhlbWUtYmFsaGFtLmFnLWRuZC1naG9zdCBkaXYge1xcbiAgICAgIGhlaWdodDogMTAwJTtcXG4gICAgICBtYXJnaW46IDA7XFxuICAgICAgcGFkZGluZzogMDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLmFnLWRuZC1naG9zdCAuYWctZG5kLWdob3N0LWljb24ge1xcbiAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xcbiAgICAgIG9wYWNpdHk6IDAuODc7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRhYi1oZWFkZXIge1xcbiAgICBiYWNrZ3JvdW5kOiAjZjVmN2Y3O1xcbiAgICBtaW4td2lkdGg6IDIyMHB4O1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRhYi1oZWFkZXIgLmFnLXRhYiB7XFxuICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICAgICAgaGVpZ2h0OiAxNnB4O1xcbiAgICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgICAgIC1tcy1mbGV4OiBub25lO1xcbiAgICAgICAgICAgICAgZmxleDogbm9uZTtcXG4gICAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XFxuICAgICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcXG4gICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy10YWItYm9keSB7XFxuICAgIHBhZGRpbmc6IDJweCAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRhYi1ib2R5IC5hZy1tZW51LWxpc3Qge1xcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XFxuICAgICAgbWFyZ2luLXRvcDogMDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRhYi1ib2R5IC5hZy1tZW51LWxpc3QgPiBkaXY6Zmlyc3QtY2hpbGQgPiBzcGFuIHtcXG4gICAgICAgIHBhZGRpbmctdG9wOiAwOyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdGFiLWJvZHkgLmFnLW1lbnUtbGlzdCA+IGRpdjpsYXN0LWNoaWxkID4gc3BhbiB7XFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRhYi1ib2R5IC5hZy1tZW51LWxpc3QgPiBkaXY6bGFzdC1jaGlsZCA+IC5hZy1tZW51LW9wdGlvbi1wb3B1cC1wb2ludGVyIHtcXG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb24teTogMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZmlsdGVyIC5hZy1maWx0ZXItc2VsZWN0LCAuYWctdGhlbWUtYmFsaGFtIC5hZy1maWx0ZXIgLmFnLWZpbHRlci1ib2R5IHtcXG4gICAgbWFyZ2luLWJvdHRvbTogNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1maWx0ZXIgLmFnLWZpbHRlci1ib2R5IHtcXG4gICAgbWFyZ2luLXRvcDogMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZmlsdGVyIC5hZy1maWx0ZXItZmlsdGVyIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDRweDtcXG4gICAgbWFyZ2luLXJpZ2h0OiA0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWZpbHRlciAuYWctZmlsdGVyLXNlbGVjdCB7XFxuICAgIG1hcmdpbjogNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1maWx0ZXIgaW5wdXRbdHlwZT1cXFwicmFkaW9cXFwiXSB7XFxuICAgIG1hcmdpbjogMCAzcHggMCA2cHg7XFxuICAgIHdpZHRoOiAxMnB4O1xcbiAgICBoZWlnaHQ6IDE3cHg7XFxuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWZpbHRlciBpbnB1dFt0eXBlPVxcXCJ0ZXh0XFxcIl0sXFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1maWx0ZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZVxcXCJdIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWZpbHRlciAuYWctc2V0LWZpbHRlci1saXN0IHtcXG4gICAgaGVpZ2h0OiAxNjhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZmlsdGVyIC5hZy1zZXQtZmlsdGVyLWl0ZW0ge1xcbiAgICBoZWlnaHQ6IDI4cHg7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1maWx0ZXIgLmFnLXNldC1maWx0ZXItaXRlbSA+IGRpdiwgLmFnLXRoZW1lLWJhbGhhbSAuYWctZmlsdGVyIC5hZy1zZXQtZmlsdGVyLWl0ZW0gPiBzcGFuIHtcXG4gICAgICBtYXJnaW4tbGVmdDogNXB4O1xcbiAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWZpbHRlciAuYWctZmlsdGVyLWhlYWRlci1jb250YWluZXI6bnRoLWNoaWxkKDIpIHtcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNCREMzQzc7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWZpbHRlciAuYWctZmlsdGVyLWFwcGx5LXBhbmVsIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7XFxuICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7XFxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG4gICAgcGFkZGluZzogNHB4O1xcbiAgICBwYWRkaW5nLXRvcDogOHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWZpbHRlciAuYWctZmlsdGVyLWFwcGx5LXBhbmVsIGJ1dHRvbiB7XFxuICAgICAgbGluZS1oZWlnaHQ6IDEuNTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1maWx0ZXIgLmFnLWZpbHRlci1hcHBseS1wYW5lbCBidXR0b24gKyBidXR0b24ge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCxcXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbiB7XFxuICAgIGhlaWdodDogMTZweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4tZ3JvdXAgLmFnLWNvbHVtbi1zZWxlY3QtY2hlY2tib3gsXFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLWxhYmVsLFxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4tZ3JvdXAgLmFnLWNvbHVtbi1ncm91cC1pY29ucyxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uIC5hZy1jb2x1bW4tc2VsZWN0LWNoZWNrYm94LFxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4gLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1sYWJlbCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uIC5hZy1jb2x1bW4tZ3JvdXAtaWNvbnMge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7XFxuICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLXByaW1hcnktY29scy1saXN0LXBhbmVsIHtcXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNCREMzQzc7XFxuICAgIHBhZGRpbmctdG9wOiA0cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctcHJpbWFyeS1jb2xzLWxpc3QtcGFuZWwgPiBkaXYge1xcbiAgICAgIGN1cnNvcjogcG9pbnRlcjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLmFnLXRvb2xwYW5lbC1hZGQtZ3JvdXAtaW5kZW50IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDI0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXByaW1hcnktY29scy1oZWFkZXItcGFuZWwge1xcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI0JEQzNDNztcXG4gICAgaGVpZ2h0OiAzMnB4O1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXByaW1hcnktY29scy1oZWFkZXItcGFuZWwgPiBkaXYge1xcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgICBtYXJnaW46IDAgNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXByaW1hcnktY29scy1oZWFkZXItcGFuZWwgLmFnLWZpbHRlci1ib2R5IHtcXG4gICAgICBtYXJnaW4tbGVmdDogNHB4O1xcbiAgICAgIG1hcmdpbi1yaWdodDogNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy10b29sLXBhbmVsLXdyYXBwZXIge1xcbiAgICBib3JkZXItcmlnaHQ6IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1maWx0ZXItcGFuZWwge1xcbiAgICAgIHdpZHRoOiAxMDAlOyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1maWx0ZXItcGFuZWwgLmFnLWZpbHRlci10b29scGFuZWwtaW5zdGFuY2Uge1xcbiAgICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XFxuICAgICAgICBmb250LXdlaWdodDogNjAwO1xcbiAgICAgICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgICAgICAgICAtbXMtZmxleDogYXV0bztcXG4gICAgICAgICAgICAgICAgZmxleDogYXV0bztcXG4gICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XFxuICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgICAgIC1tcy1mbGV4LXdyYXA6IG5vd3JhcDtcXG4gICAgICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcXG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgLW1zLWZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcXG4gICAgICAgICAgICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7IH1cXG4gICAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctZmlsdGVyLXBhbmVsIC5hZy1maWx0ZXItdG9vbHBhbmVsLWluc3RhbmNlIC5hZy1maWx0ZXItdG9vbHBhbmVsLWhlYWRlciB7XFxuICAgICAgICAgIHBhZGRpbmc6IDAgNXB4OyB9XFxuICAgICAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctZmlsdGVyLXBhbmVsIC5hZy1maWx0ZXItdG9vbHBhbmVsLWluc3RhbmNlIC5hZy1maWx0ZXItdG9vbHBhbmVsLWhlYWRlciA+IGRpdiB7XFxuICAgICAgICAgICAgbWFyZ2luOiBhdXRvIDA7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWZpbHRlci1wYW5lbCAuYWctZmlsdGVyLWJvZHktd3JhcHBlciB7XFxuICAgICAgICBwYWRkaW5nLXRvcDogNXB4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1maWx0ZXItcGFuZWwgLmFnLWZpbHRlci1haXIge1xcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0JEQzNDNztcXG4gICAgICAgIGJvcmRlci1sZWZ0OiAwO1xcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAwO1xcbiAgICAgICAgcGFkZGluZzogNHB4IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1waXZvdC1tb2RlLXBhbmVsIHtcXG4gICAgICBoZWlnaHQ6IDMycHg7XFxuICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgICAtbXMtZmxleDogbm9uZTtcXG4gICAgICAgICAgICAgIGZsZXg6IG5vbmU7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLXBpdm90LW1vZGUtcGFuZWwgLmFnLXBpdm90LW1vZGUtc2VsZWN0IHtcXG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwge1xcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQkRDM0M3O1xcbiAgICAgIHBhZGRpbmctYm90dG9tOiAzcHg7XFxuICAgICAgcGFkZGluZy10b3A6IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1jb2x1bW4tZHJvcCB7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNCREMzQzc7XFxuICAgICAgcGFkZGluZzogNHB4IDA7XFxuICAgICAgcGFkZGluZy1ib3R0b206IDhweDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctY29sdW1uLWRyb3AgLmFnLWNvbHVtbi1kcm9wLWVtcHR5LW1lc3NhZ2Uge1xcbiAgICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7XFxuICAgICAgICBmb250LXdlaWdodDogNjAwO1xcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xcbiAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXFxcIlNlZ29lIFVJXFxcIiwgUm9ib3RvLCBPeHlnZW4tU2FucywgVWJ1bnR1LCBDYW50YXJlbGwsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIHNhbnMtc2VyaWY7XFxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7XFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiA0cHg7XFxuICAgICAgICBtYXJnaW4tdG9wOiA0cHg7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWNvbHVtbi1kcm9wIC5hZy1jb2x1bW4tZHJvcC1saXN0IHtcXG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgICAgIG1hcmdpbi10b3A6IDRweDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctY29sdW1uLWRyb3AgPiBkaXYgPiA6Zmlyc3QtY2hpbGQge1xcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcXG4gICAgICAgIG1hcmdpbi1yaWdodDogNHB4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1jb2x1bW4tZHJvcDpsYXN0LWNoaWxkIHtcXG4gICAgICAgIGJvcmRlci1ib3R0b206IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLW51bWVyaWMtaGVhZGVyIC5hZy1oZWFkZXItY2VsbC1sYWJlbCAuYWctaGVhZGVyLWljb24ge1xcbiAgICBtYXJnaW4tbGVmdDogMDtcXG4gICAgbWFyZ2luLXJpZ2h0OiA0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXBhZ2luZy1wYW5lbCB7XFxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjQkRDM0M3O1xcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcXG4gICAgaGVpZ2h0OiAzMnB4O1xcbiAgICBwYWRkaW5nOiAwIDEycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcGFnaW5nLXBhbmVsID4gc3BhbiB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDE2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXBhZ2luZy1wYWdlLXN1bW1hcnktcGFuZWwgLmFnLWljb24ge1xcbiAgICB3aWR0aDogMTZweDtcXG4gICAgaGVpZ2h0OiAxNnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1wYWdpbmctcGFnZS1zdW1tYXJ5LXBhbmVsIC5hZy1wYWdpbmctYnV0dG9uIGJ1dHRvbiB7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgb3BhY2l0eTogMDtcXG4gICAgdG9wOiAwO1xcbiAgICByaWdodDogMDtcXG4gICAgYm90dG9tOiAwO1xcbiAgICBsZWZ0OiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1wYWdpbmctcGFnZS1zdW1tYXJ5LXBhbmVsIC5hZy1wYWdpbmctYnV0dG9uLmFnLWRpc2FibGVkIC5hZy1pY29uIHtcXG4gICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7XFxuICAgIG9wYWNpdHk6IDAuMzg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXBhZ2luZy1wYWdlLXN1bW1hcnktcGFuZWwgLmFnLXBhZ2luZy1idXR0b24uYWctZGlzYWJsZWQgYnV0dG9uIHtcXG4gICAgY3Vyc29yOiBkZWZhdWx0OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1wYWdpbmctcGFnZS1zdW1tYXJ5LXBhbmVsIHNwYW4ge1xcbiAgICBtYXJnaW46IDAgNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1yb3ctc2VsZWN0ZWQge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjdlNGZmOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwpLCAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwpIHtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQ6bm90KC5hZy1jZWxsLXJhbmdlLXNpbmdsZS1jZWxsKS5hZy1jZWxsLXJhbmdlLXRvcCwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQ6bm90KC5hZy1jZWxsLXJhbmdlLXNpbmdsZS1jZWxsKS5hZy1jZWxsLXJhbmdlLXRvcCB7XFxuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogIzAwOTFFQTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwpLmFnLWNlbGwtcmFuZ2UtcmlnaHQsIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkuYWctY2VsbC1yYW5nZS1yaWdodCB7XFxuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjMDA5MUVBOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkuYWctY2VsbC1yYW5nZS1ib3R0b20sIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkuYWctY2VsbC1yYW5nZS1ib3R0b20ge1xcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICMwMDkxRUE7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQ6bm90KC5hZy1jZWxsLXJhbmdlLXNpbmdsZS1jZWxsKS5hZy1jZWxsLXJhbmdlLWxlZnQsIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkuYWctY2VsbC1yYW5nZS1sZWZ0IHtcXG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogIzAwOTFFQTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtZm9jdXMpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxNDUsIDIzNCwgMC4yKTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1mb2N1cykuYWctY2VsbC1yYW5nZS1jaGFydCB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCA4OCwgMjU1LCAwLjEpOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQ6bm90KC5hZy1jZWxsLWZvY3VzKS5hZy1jZWxsLXJhbmdlLWNoYXJ0LmFnLWNlbGwtcmFuZ2UtY2hhcnQtY2F0ZWdvcnkge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMjU1LCAxMzIsIDAuMSk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQtMTpub3QoLmFnLWNlbGwtZm9jdXMpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxNDUsIDIzNCwgMC4zKTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2VsbC1yYW5nZS1zZWxlY3RlZC0yOm5vdCguYWctY2VsbC1mb2N1cykge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDE0NSwgMjM0LCAwLjQpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLTM6bm90KC5hZy1jZWxsLWZvY3VzKSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTQ1LCAyMzQsIDAuNSk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQtNDpub3QoLmFnLWNlbGwtZm9jdXMpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxNDUsIDIzNCwgMC42KTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1zZWxlY3Rpb24tZmlsbC10b3AsIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWZpbGwtdG9wIHtcXG4gICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCAjMDA5MUVBOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctc2VsZWN0aW9uLWZpbGwtdG9wLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZCwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1zZWxlY3Rpb24tZmlsbC10b3AuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkIHtcXG4gICAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkICM4NjkxOTg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctc2VsZWN0aW9uLWZpbGwtcmlnaHQsIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWZpbGwtcmlnaHQge1xcbiAgICBib3JkZXItcmlnaHQ6IDFweCBkYXNoZWQgIzAwOTFFQTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXNlbGVjdGlvbi1maWxsLXJpZ2h0LmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZCwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1zZWxlY3Rpb24tZmlsbC1yaWdodC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQge1xcbiAgICAgIGJvcmRlci1yaWdodDogMXB4IGRhc2hlZCAjODY5MTk4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXNlbGVjdGlvbi1maWxsLWJvdHRvbSwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1zZWxlY3Rpb24tZmlsbC1ib3R0b20ge1xcbiAgICBib3JkZXItYm90dG9tOiAxcHggZGFzaGVkICMwMDkxRUE7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1zZWxlY3Rpb24tZmlsbC1ib3R0b20uYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLCAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1maWxsLWJvdHRvbS5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQge1xcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgIzg2OTE5ODsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1zZWxlY3Rpb24tZmlsbC1sZWZ0LCAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1maWxsLWxlZnQge1xcbiAgICBib3JkZXItbGVmdDogMXB4IGRhc2hlZCAjMDA5MUVBOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctc2VsZWN0aW9uLWZpbGwtbGVmdC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQsIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWZpbGwtbGVmdC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQge1xcbiAgICAgIGJvcmRlci1sZWZ0OiAxcHggZGFzaGVkICM4NjkxOTg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWZpbGwtaGFuZGxlLCAuYWctdGhlbWUtYmFsaGFtIC5hZy1yYW5nZS1oYW5kbGUge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHdpZHRoOiA2cHg7XFxuICAgIGhlaWdodDogNnB4O1xcbiAgICBib3R0b206IC0xcHg7XFxuICAgIHJpZ2h0OiAtMXB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5MUVBOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1maWxsLWhhbmRsZSB7XFxuICAgIGN1cnNvcjogY2VsbDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcmFuZ2UtaGFuZGxlIHtcXG4gICAgY3Vyc29yOiBud3NlLXJlc2l6ZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2VsbC5hZy1jZWxsLWlubGluZS1lZGl0aW5nIHtcXG4gICAgcGFkZGluZzogMTJweDtcXG4gICAgaGVpZ2h0OiA0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jZWxsLmFnLWNlbGwtaW5saW5lLWVkaXRpbmcsIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNlbGwuYWctcG9wdXAtZWRpdG9yIHtcXG4gICAgYmFja2dyb3VuZDogd2hpdGU7XFxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lO1xcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XFxuICAgIHBhZGRpbmc6IDRweDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjdmNzsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcG9wdXAtZWRpdG9yIHtcXG4gICAgcGFkZGluZzogMDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1wb3B1cC1lZGl0b3IgLmFnLWxhcmdlLXRleHRhcmVhIHRleHRhcmVhIHtcXG4gICAgICBoZWlnaHQ6IGF1dG87XFxuICAgICAgcGFkZGluZzogMTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcmljaC1zZWxlY3Qge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmN2Y3OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJpY2gtc2VsZWN0IC5hZy1yaWNoLXNlbGVjdC1saXN0IHtcXG4gICAgICB3aWR0aDogMjAwcHg7XFxuICAgICAgaGVpZ2h0OiAxODJweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1yaWNoLXNlbGVjdCAuYWctcmljaC1zZWxlY3QtdmFsdWUge1xcbiAgICAgIHBhZGRpbmc6IDAgNHB4IDAgMTJweDtcXG4gICAgICBoZWlnaHQ6IDI4cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcmljaC1zZWxlY3QgLmFnLXZpcnR1YWwtbGlzdC1pdGVtIHtcXG4gICAgICBjdXJzb3I6IGRlZmF1bHQ7XFxuICAgICAgaGVpZ2h0OiAyOHB4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcmljaC1zZWxlY3QgLmFnLXZpcnR1YWwtbGlzdC1pdGVtOmhvdmVyIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNFQ0YwRjE7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcmljaC1zZWxlY3QgLmFnLXJpY2gtc2VsZWN0LXJvdyB7XFxuICAgICAgcGFkZGluZy1sZWZ0OiAxMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJpY2gtc2VsZWN0IC5hZy1yaWNoLXNlbGVjdC1yb3ctc2VsZWN0ZWQge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNiN2U0ZmY7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctZmxvYXRpbmctZmlsdGVyLWJ1dHRvbiB7XFxuICAgIG1hcmdpbi1sZWZ0OiAxMnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1mbG9hdGluZy1maWx0ZXItYnV0dG9uIGJ1dHRvbiB7XFxuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcXG4gICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xcbiAgICAgICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7XFxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgICBib3JkZXI6IDA7XFxuICAgIGhlaWdodDogMTZweDtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgd2lkdGg6IDE2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXNlbGVjdGlvbi1jaGVja2JveDpub3QoLmFnLWhpZGRlbikgfiAuYWctY2VsbC12YWx1ZTpub3QoOmVtcHR5KSwgLmFnLXRoZW1lLWJhbGhhbSAuYWctc2VsZWN0aW9uLWNoZWNrYm94Om5vdCguYWctaGlkZGVuKSArIC5hZy1ncm91cC12YWx1ZTpub3QoOmVtcHR5KSxcXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWdyb3VwLWV4cGFuZGVkOm5vdCguYWctaGlkZGVuKSB+IC5hZy1jZWxsLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZ3JvdXAtZXhwYW5kZWQ6bm90KC5hZy1oaWRkZW4pICsgLmFnLWdyb3VwLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZ3JvdXAtY29udHJhY3RlZDpub3QoLmFnLWhpZGRlbikgfiAuYWctY2VsbC12YWx1ZTpub3QoOmVtcHR5KSxcXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWdyb3VwLWNvbnRyYWN0ZWQ6bm90KC5hZy1oaWRkZW4pICsgLmFnLWdyb3VwLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZ3JvdXAtY2hlY2tib3g6bm90KC5hZy1pbnZpc2libGUpIH4gLmFnLWNlbGwtdmFsdWU6bm90KDplbXB0eSksXFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ncm91cC1jaGVja2JveDpub3QoLmFnLWludmlzaWJsZSkgKyAuYWctZ3JvdXAtdmFsdWU6bm90KDplbXB0eSkge1xcbiAgICBtYXJnaW4tbGVmdDogMTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctc2VsZWN0aW9uLWNoZWNrYm94Om5vdCguYWctaGlkZGVuKSB+IC5hZy1ncm91cC1jaGVja2JveCxcXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWdyb3VwLWV4cGFuZGVkOm5vdCguYWctaGlkZGVuKSB+IC5hZy1ncm91cC1jaGVja2JveCxcXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWdyb3VwLWNvbnRyYWN0ZWQ6bm90KC5hZy1oaWRkZW4pIH4gLmFnLWdyb3VwLWNoZWNrYm94LFxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZ3JvdXAtY2hlY2tib3g6bm90KC5hZy1pbnZpc2libGUpIH4gLmFnLWdyb3VwLWNoZWNrYm94IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDEycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWdyb3VwLWNoaWxkLWNvdW50IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctc2VsZWN0aW9uLWNoZWNrYm94IHNwYW4ge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbHVtbi1kcm9wLWhvcml6b250YWwge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmN2Y3O1xcbiAgICBoZWlnaHQ6IDI4cHg7XFxuICAgIHBhZGRpbmctbGVmdDogMTJweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIC5hZy1pY29uLWdyb3VwLFxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIC5hZy1pY29uLXBpdm90IHtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDEycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCAuYWctaWNvbi1zbWFsbC1sZWZ0LFxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIC5hZy1pY29uLXNtYWxsLXJpZ2h0IHtcXG4gICAgICBtYXJnaW46IDAgNHB4O1xcbiAgICAgIG9wYWNpdHk6IDAuNTQ7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCAuYWctY29sdW1uLWRyb3AtZW1wdHktbWVzc2FnZSB7XFxuICAgICAgb3BhY2l0eTogMC4zODsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyb3AtY2VsbCB7XFxuICAgIGJhY2tncm91bmQ6ICNkZGU0ZTY7XFxuICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XFxuICAgIG1pbi1oZWlnaHQ6IDE2cHg7XFxuICAgIHBhZGRpbmc6IDAgMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbHVtbi1kcm9wLWNlbGwgLmFnLWNvbHVtbi1kcm9wLWNlbGwtdGV4dCB7XFxuICAgICAgbWFyZ2luOiAwIDRweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2x1bW4tZHJvcC1jZWxsIC5hZy1jb2x1bW4tZHJvcC1jZWxsLWJ1dHRvbiB7XFxuICAgICAgbWluLXdpZHRoOiAxNnB4O1xcbiAgICAgIG1hcmdpbjogMCAycHg7XFxuICAgICAgb3BhY2l0eTogMC41NDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbHVtbi1kcm9wLWNlbGwgLmFnLWNvbHVtbi1kcm9wLWNlbGwtYnV0dG9uOmhvdmVyIHtcXG4gICAgICAgIG9wYWNpdHk6IDAuODc7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyb3AtY2VsbCAuYWctY29sdW1uLWRyYWcge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbHVtbi1kcm9wLXZlcnRpY2FsIC5hZy1jb2x1bW4tZHJvcC1jZWxsIHtcXG4gICAgbWFyZ2luLXRvcDogNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1zZWxlY3QtYWdnLWZ1bmMtcG9wdXAge1xcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7XFxuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcXG4gICAgcGFkZGluZzogNHB4O1xcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gICAgaGVpZ2h0OiA3MHB4O1xcbiAgICBwYWRkaW5nOiAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXNlbGVjdC1hZ2ctZnVuYy1wb3B1cCAuYWctdmlydHVhbC1saXN0LWl0ZW0ge1xcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgICBsaW5lLWhlaWdodDogMjBweDtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctc2V0LWZpbHRlci1saXN0LFxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbWVudS1jb2x1bW4tc2VsZWN0LXdyYXBwZXIge1xcbiAgICB3aWR0aDogYXV0bzsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyb3AtdmVydGljYWwgPiAuYWctY29sdW1uLWRyb3AtY2VsbCB7XFxuICAgIG1hcmdpbi1sZWZ0OiA0cHg7XFxuICAgIG1hcmdpbi10b3A6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNlbGwtZGF0YS1jaGFuZ2VkIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMiwgMTYwLCAxMzMsIDAuNSkgIWltcG9ydGFudDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2VsbC1kYXRhLWNoYW5nZWQtYW5pbWF0aW9uIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxcztcXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxczsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcm93LXN0dWIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1zdHViLWNlbGwge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEycHg7XFxuICAgIHBhZGRpbmctdG9wOiA0cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctc3R1Yi1jZWxsIC5hZy1sb2FkaW5nLWljb24ge1xcbiAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHNwaW47XFxuICAgICAgICAgICAgICBhbmltYXRpb24tbmFtZTogc3BpbjtcXG4gICAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMTAwMG1zO1xcbiAgICAgICAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxMDAwbXM7XFxuICAgICAgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcXG4gICAgICAgICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xcbiAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xcbiAgICAgICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOyB9XFxuXFxuQC13ZWJraXQta2V5ZnJhbWVzIHNwaW4ge1xcbiAgZnJvbSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cXG4gIHRvIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0gfVxcblxcbkBrZXlmcmFtZXMgc3BpbiB7XFxuICBmcm9tIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxcbiAgdG8ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfSB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXN0dWItY2VsbCAuYWctbG9hZGluZy10ZXh0IHtcXG4gICAgICBtYXJnaW4tbGVmdDogNHB4O1xcbiAgICAgIG1hcmdpbi10b3A6IDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZmxvYXRpbmctdG9wIHtcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNCREMzQzc7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWZsb2F0aW5nLWJvdHRvbSB7XFxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjQkRDM0M3OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1mbG9hdGluZy10b3AsIC5hZy10aGVtZS1iYWxoYW0gLmFnLWZsb2F0aW5nLWJvdHRvbSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZmxvYXRpbmctdG9wIC5hZy1yb3csIC5hZy10aGVtZS1iYWxoYW0gLmFnLWZsb2F0aW5nLWJvdHRvbSAuYWctcm93IHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1zdGF0dXMtYmFyIHtcXG4gICAgYmFja2dyb3VuZDogd2hpdGU7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNCREMzQzc7XFxuICAgIGJvcmRlci10b3Atd2lkdGg6IDA7XFxuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xcbiAgICBmb250LXdlaWdodDogNjAwO1xcbiAgICBmb250LXNpemU6IDEycHg7XFxuICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFxcXCJTZWdvZSBVSVxcXCIsIFJvYm90bywgT3h5Z2VuLVNhbnMsIFVidW50dSwgQ2FudGFyZWxsLCBcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLCBzYW5zLXNlcmlmO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxNnB4O1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE2cHg7XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjU7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLW5hbWUtdmFsdWUtdmFsdWUge1xcbiAgICBjb2xvcjogIzAwMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctc3RhdHVzLWJhci1jZW50ZXIge1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLW5hbWUtdmFsdWUge1xcbiAgICBtYXJnaW4tbGVmdDogNHB4O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDRweDtcXG4gICAgcGFkZGluZy10b3A6IDhweDtcXG4gICAgcGFkZGluZy1ib3R0b206IDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZGV0YWlscy1yb3cge1xcbiAgICBwYWRkaW5nOiAyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1vdmVybGF5LWxvYWRpbmctd3JhcHBlciB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctb3ZlcmxheS1sb2FkaW5nLWNlbnRlciB7XFxuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xcbiAgICBwYWRkaW5nOiA0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXNpZGUtYmFyIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjdmNztcXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0JEQzNDNztcXG4gICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1zaWRlLWJhciAuYWctc2lkZS1idXR0b25zIHtcXG4gICAgICBwYWRkaW5nLXRvcDogMTZweDtcXG4gICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gICAgICB3aWR0aDogMjBweDtcXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1zaWRlLWJhciAuYWctc2lkZS1idXR0b25zIC5hZy1zaWRlLWJ1dHRvbiBidXR0b24ge1xcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxuICAgICAgICBib3JkZXI6IDA7XFxuICAgICAgICBjb2xvcjogIzAwMDtcXG4gICAgICAgIHBhZGRpbmc6IDhweCAwIDhweCAwO1xcbiAgICAgICAgd2lkdGg6IDEwMCU7XFxuICAgICAgICBtYXJnaW46IDA7XFxuICAgICAgICBtaW4taGVpZ2h0OiA3MnB4O1xcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAxcHggMCAxcHggMDtcXG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XFxuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbi15OiBjZW50ZXI7XFxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IGNlbnRlcjtcXG4gICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1zaWRlLWJhciAuYWctc2lkZS1idXR0b25zIC5hZy1zZWxlY3RlZCBidXR0b24ge1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjdmNztcXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtMXB4O1xcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxcHg7XFxuICAgICAgICBib3JkZXItY29sb3I6ICNCREMzQzc7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctc2lkZS1iYXIgLmFnLXBhbmVsLWNvbnRhaW5lciB7XFxuICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0JEQzNDNzsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1zaWRlLWJhci5mdWxsLXdpZHRoIC5hZy1wYW5lbC1jb250YWluZXIge1xcbiAgICAgIGJvcmRlci1yaWdodDogMDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1zaWRlLWJhciAuYWctY29sdW1uLWRyb3Age1xcbiAgICAgIG1pbi1oZWlnaHQ6IDUwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXByaW1hcnktY29scy1maWx0ZXItd3JhcHBlciB7XFxuICAgIG1hcmdpbi1sZWZ0OiA0cHg7XFxuICAgIG1hcmdpbi1yaWdodDogNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ncm91cC1jb21wb25lbnQge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xcbiAgICBwYWRkaW5nOiAwcHg7XFxuICAgIGJvcmRlcjogMCBzb2xpZCAjY2JkMGQzO1xcbiAgICBib3JkZXItdG9wLXdpZHRoOiAxcHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZ3JvdXAtY29tcG9uZW50LmFnLWRpc2FibGVkID4gLmFnLWdyb3VwLWNvbXBvbmVudC1sYWJlbCAuYWctZ3JvdXAtY29tcG9uZW50LXRpdGxlLCAuYWctdGhlbWUtYmFsaGFtIC5hZy1ncm91cC1jb21wb25lbnQuYWctZGlzYWJsZWQgPiAuYWctZ3JvdXAtY29tcG9uZW50LWNvbnRhaW5lciB7XFxuICAgICAgb3BhY2l0eTogMC41OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWdyb3VwLWNvbXBvbmVudCAuYWctZ3JvdXAtY29tcG9uZW50LXRpdGxlLWJhciB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWVlZjtcXG4gICAgICBoZWlnaHQ6IDE2cHg7XFxuICAgICAgZm9udC1zaXplOiAxMnB4O1xcbiAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFxcXCJTZWdvZSBVSVxcXCIsIFJvYm90bywgT3h5Z2VuLVNhbnMsIFVidW50dSwgQ2FudGFyZWxsLCBcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLCBzYW5zLXNlcmlmO1xcbiAgICAgIGhlaWdodDogMjZweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ncm91cC1jb21wb25lbnQ6bm90KC5hZy1jb2xsYXBzaWJsZSkgPiBkaXYge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWdyb3VwLWNvbXBvbmVudDpub3QoLmFnLWNvbGxhcHNpYmxlKSA+IC5hZy1ncm91cC1jb21wb25lbnQtdGl0bGUtYmFyIHtcXG4gICAgICBtYXJnaW4tbGVmdDogMDtcXG4gICAgICBwYWRkaW5nOiA0cHg7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ncm91cC1jb21wb25lbnQ6bm90KC5hZy1jb2xsYXBzaWJsZSkgPiAuYWctZ3JvdXAtY29tcG9uZW50LXRpdGxlLWJhciAuYWctY29sdW1uLWdyb3VwLWljb25zIHtcXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZ3JvdXAtY29tcG9uZW50IC5hZy1ncm91cC1jb21wb25lbnQtdG9vbGJhciB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjVmNTtcXG4gICAgICBwYWRkaW5nOiA0cHg7XFxuICAgICAgYm9yZGVyOiAwIHNvbGlkICNCREMzQzc7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZ3JvdXAtY29tcG9uZW50ID4gLmFnLWdyb3VwLWNvbXBvbmVudC1jb250YWluZXIge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7XFxuICAgICAgcGFkZGluZzogNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWdyb3VwLWNvbXBvbmVudCAuYWctZ3JvdXAtaXRlbSB7XFxuICAgICAgbWFyZ2luOiAycHggMDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWdyb3VwLWNvbXBvbmVudCAuYWctZ3JvdXAtaXRlbSAuYWctZ3JvdXAtY29tcG9uZW50LXRpdGxlLWJhciB7XFxuICAgICAgICBoZWlnaHQ6IDE4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWxhYmVsZWQgbGFiZWwge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDRweDtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbGFiZWxlZC5hZy1sYWJlbC1hbGlnbi10b3AgbGFiZWwge1xcbiAgICBtYXJnaW4tYm90dG9tOiAycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXNsaWRlciA+IC5hZy13cmFwcGVyID4gZGl2Om5vdCg6Zmlyc3Qtb2YtdHlwZSksIC5hZy10aGVtZS1iYWxoYW0gLmFnLWFuZ2xlLXNlbGVjdCA+IC5hZy13cmFwcGVyID4gZGl2Om5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xcbiAgICBtYXJnaW4tbGVmdDogOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1hbmdsZS1zZWxlY3QgLmFnLWFuZ2xlLXNlbGVjdC1maWVsZCAuYWctcGFyZW50LWNpcmNsZSB7XFxuICAgIHdpZHRoOiAyNHB4O1xcbiAgICBoZWlnaHQ6IDI0cHg7XFxuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDJweCByZ2JhKDAsIDAsIDAsIDAuOSk7XFxuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDJweCByZ2JhKDAsIDAsIDAsIDAuOSk7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWFuZ2xlLXNlbGVjdCAuYWctYW5nbGUtc2VsZWN0LWZpZWxkIC5hZy1jaGlsZC1jaXJjbGUge1xcbiAgICB0b3A6IDRweDtcXG4gICAgbGVmdDogMTJweDtcXG4gICAgd2lkdGg6IDZweDtcXG4gICAgaGVpZ2h0OiA2cHg7XFxuICAgIG1hcmdpbi1sZWZ0OiAtM3B4O1xcbiAgICBtYXJnaW4tdG9wOiAtNHB4O1xcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICM0YzRjNGM7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRvZ2dsZS1idXR0b24gLmFnLWlucHV0LXdyYXBwZXIge1xcbiAgICBoZWlnaHQ6IDE2cHg7XFxuICAgIHdpZHRoOiA0MHB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgIzdGOEM4RDtcXG4gICAgYm9yZGVyLXJhZGl1czogNTAwcmVtOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRvZ2dsZS1idXR0b24gLmFnLWlucHV0LXdyYXBwZXIgLmFnLWljb24ge1xcbiAgICAgIHdpZHRoOiAxNnB4O1xcbiAgICAgIGhlaWdodDogMTZweDtcXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjN0Y4QzhEO1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwMHJlbTtcXG4gICAgICByaWdodDogY2FsYygxMDAlIC0gMTZweCk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRvZ2dsZS1idXR0b24uYWctc2VsZWN0ZWQgLmFnLWlucHV0LXdyYXBwZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5MUVBOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRvZ2dsZS1idXR0b24uYWctc2VsZWN0ZWQgLmFnLWlucHV0LXdyYXBwZXIgLmFnLWljb24ge1xcbiAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xcbiAgICAgIHJpZ2h0OiAtMXB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2xvci1waWNrZXIgPiAuYWctd3JhcHBlciB7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNCREMzQzc7XFxuICAgIGJvcmRlci1yYWRpdXM6IDVweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2xvci1waWNrZXIgPiAuYWctd3JhcHBlciA+IGRpdiB7XFxuICAgICAgd2lkdGg6IDE2cHg7XFxuICAgICAgaGVpZ2h0OiAxNnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbG9yLXBpY2tlciA+IC5hZy13cmFwcGVyIGJ1dHRvbiB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sb3ItcGlja2VyID4gLmFnLXdyYXBwZXIgYnV0dG9uOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUNGMEYxOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1kaWFsb2cuYWctY29sb3ItZGlhbG9nIHtcXG4gICAgYm9yZGVyLXJhZGl1czogNXB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2xvci1wYW5lbCB7XFxuICAgIHBhZGRpbmc6IDRweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2xvci1wYW5lbCAuYWctc3BlY3RydW0tY29sb3Ige1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDtcXG4gICAgICBib3JkZXItcmFkaXVzOiAycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLXRvb2xzIHtcXG4gICAgICBwYWRkaW5nOiAxMHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1zYXQge1xcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgcmlnaHQgdG9wLCBmcm9tKHdoaXRlKSwgdG8ocmdiYSgyMDQsIDE1NCwgMTI5LCAwKSkpO1xcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgd2hpdGUsIHJnYmEoMjA0LCAxNTQsIDEyOSwgMCkpOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS12YWwge1xcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IGJvdHRvbSwgbGVmdCB0b3AsIGZyb20oYmxhY2spLCB0byhyZ2JhKDIwNCwgMTU0LCAxMjksIDApKSk7XFxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgYmxhY2ssIHJnYmEoMjA0LCAxNTQsIDEyOSwgMCkpOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1kcmFnZ2VyIHtcXG4gICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xcbiAgICAgIGhlaWdodDogMTJweDtcXG4gICAgICB3aWR0aDogMTJweDtcXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB3aGl0ZTtcXG4gICAgICBiYWNrZ3JvdW5kOiBibGFjaztcXG4gICAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yNCk7XFxuICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMjQpOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1odWUtYmFja2dyb3VuZCB7XFxuICAgICAgYm9yZGVyLXJhZGl1czogMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1hbHBoYS1iYWNrZ3JvdW5kIHtcXG4gICAgICBib3JkZXItcmFkaXVzOiAycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sb3ItcGFuZWwgLmFnLWh1ZS1hbHBoYSB7XFxuICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcXG4gICAgICBoZWlnaHQ6IDExcHg7XFxuICAgICAgYm9yZGVyLXJhZGl1czogMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1zbGlkZXIge1xcbiAgICAgIG1hcmdpbi10b3A6IC0xMnB4O1xcbiAgICAgIHdpZHRoOiAxM3B4O1xcbiAgICAgIGhlaWdodDogMTNweDtcXG4gICAgICBib3JkZXItcmFkaXVzOiAxM3B4O1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGY4Zjg7XFxuICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMzcpO1xcbiAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjM3KTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2xvci1wYW5lbCAuYWctc3BlY3RydW0tdGV4dC12YWx1ZSB7XFxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XFxuICAgICAgY29sb3I6ICMzMzM7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLXRleHQtdmFsdWU6Zm9jdXMge1xcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMwZDc3ZTQ7XFxuICAgICAgcGFkZGluZzogMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbG9yLXBhbmVsIC5hZy1yZWNlbnQtY29sb3JzID4gZGl2IHtcXG4gICAgICBtYXJnaW46IDAgM3B4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sb3ItcGFuZWwgLmFnLXJlY2VudC1jb2xvcnMgPiBkaXY6Zmlyc3QtY2hpbGQge1xcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2xvci1wYW5lbCAuYWctcmVjZW50LWNvbG9ycyA+IGRpdjpsYXN0LWNoaWxkIHtcXG4gICAgICAgIG1hcmdpbi1yaWdodDogMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS5hZy1wb3B1cCA+IGRpdjpub3QoLmFnLXRvb2x0aXAtY3VzdG9tKSB7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogNXB4IDVweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiA1cHggNXB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjMpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1wYW5lbCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjQkRDM0M3OyB9XFxuICAgIC5hZy1kcmFnZ2luZy1yYW5nZS1oYW5kbGUgLmFnLXRoZW1lLWJhbGhhbSAuYWctcGFuZWwuYWctZGlhbG9nLCAuYWctZHJhZ2dpbmctZmlsbC1oYW5kbGUgLmFnLXRoZW1lLWJhbGhhbSAuYWctcGFuZWwuYWctZGlhbG9nIHtcXG4gICAgICBvcGFjaXR5OiAwLjc7XFxuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcGFuZWwgLmFnLXRpdGxlLWJhciB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjdmNztcXG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Q5ZGNkZTtcXG4gICAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcXG4gICAgICBoZWlnaHQ6IDMycHg7XFxuICAgICAgZm9udC1zaXplOiAxMnB4O1xcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXFxcIlNlZ29lIFVJXFxcIiwgUm9ib3RvLCBPeHlnZW4tU2FucywgVWJ1bnR1LCBDYW50YXJlbGwsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIHNhbnMtc2VyaWY7XFxuICAgICAgcGFkZGluZy1sZWZ0OiAxMnB4O1xcbiAgICAgIHBhZGRpbmc6IDVweCAxMHB4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcGFuZWwgLmFnLXRpdGxlLWJhciAuYWctdGl0bGUtYmFyLWJ1dHRvbnMgLmFnLWJ1dHRvbiB7XFxuICAgICAgICBoZWlnaHQ6IDIwcHg7XFxuICAgICAgICB3aWR0aDogMjBweDtcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDsgfVxcbiAgICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcGFuZWwgLmFnLXRpdGxlLWJhciAuYWctdGl0bGUtYmFyLWJ1dHRvbnMgLmFnLWJ1dHRvbiAuYWctaWNvbiB7XFxuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xcbiAgICAgICAgICBmb250LXNpemU6IDIwcHg7IH1cXG4gICAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXBhbmVsIC5hZy10aXRsZS1iYXIgLmFnLXRpdGxlLWJhci1idXR0b25zIC5hZy1idXR0b246aG92ZXIsIC5hZy10aGVtZS1iYWxoYW0gLmFnLXBhbmVsIC5hZy10aXRsZS1iYXIgLmFnLXRpdGxlLWJhci1idXR0b25zIC5hZy1idXR0b24uYWctaGFzLXBvcHVwIHtcXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Q3ZTBlMjsgfVxcbiAgICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcGFuZWwgLmFnLXRpdGxlLWJhciAuYWctdGl0bGUtYmFyLWJ1dHRvbnMgLmFnLWJ1dHRvbjpub3QoOmxhc3QtY2hpbGQpIHtcXG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcGFuZWwgLmFnLW1lc3NhZ2UtYm94IC5hZy1tZXNzYWdlLWJveC1idXR0b24tYmFyIHtcXG4gICAgICBoZWlnaHQ6IDMwcHg7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjdmNztcXG4gICAgICBwYWRkaW5nOiAycHg7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1wYW5lbCAuYWctbWVzc2FnZS1ib3ggLmFnLW1lc3NhZ2UtYm94LWJ1dHRvbi1iYXIgYnV0dG9uIHtcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdG9vbHRpcCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNjYmQwZDM7XFxuICAgIGNvbG9yOiAjMDAwO1xcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgIHBhZGRpbmc6IDVweDtcXG4gICAgYm9yZGVyLXdpZHRoOiAxcHg7XFxuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XFxuICAgIGJvcmRlci1jb2xvcjogI2NiZDBkMztcXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDFzO1xcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDFzOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRvb2x0aXAuYWctdG9vbHRpcC1oaWRpbmcge1xcbiAgICAgIG9wYWNpdHk6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNoYXJ0IC5hZy1jaGFydC1tZW51IHtcXG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jaGFydCAuYWctY2hhcnQtbWVudSA+IHNwYW46aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS13cmFwcGVyIC5hZy1ncm91cC1jb21wb25lbnQtY29udGFpbmVyIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS13cmFwcGVyIC5hZy1jaGFydC1taW5pLXRodW1ibmFpbCB7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNCREMzQzc7XFxuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcXG4gICAgbWFyZ2luOiA1cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy1taW5pLXdyYXBwZXIgLmFnLWNoYXJ0LW1pbmktdGh1bWJuYWlsOm50aC1jaGlsZCgybiArIDIpOm5vdCg6bGFzdC1jaGlsZCkge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICAgIG1hcmdpbi1yaWdodDogYXV0bzsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktd3JhcHBlciAuYWctY2hhcnQtbWluaS10aHVtYm5haWw6bnRoLWNoaWxkKDNuICsgMSkge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy1taW5pLXdyYXBwZXIgLmFnLWNoYXJ0LW1pbmktdGh1bWJuYWlsOm50aC1jaGlsZCgzbikge1xcbiAgICAgIG1hcmdpbi1yaWdodDogMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS13cmFwcGVyIC5hZy1jaGFydC1taW5pLXRodW1ibmFpbC5hZy1zZWxlY3RlZCB7XFxuICAgICAgYm9yZGVyLWNvbG9yOiAjMDA5MUVBOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLW5hdi1iYXIgLmFnLW5hdi1jYXJkLXNlbGVjdG9yIC5hZy1uYXYtY2FyZC1pdGVtIHtcXG4gICAgY29sb3I6ICMwMDA7XFxuICAgIGZvbnQtc2l6ZTogMTBweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLW5hdi1iYXIgLmFnLW5hdi1jYXJkLXNlbGVjdG9yIC5hZy1uYXYtY2FyZC1pdGVtLmFnLXNlbGVjdGVkIHtcXG4gICAgICBjb2xvcjogIzAwOTFFQTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LWZvcm1hdCAuYWctY2hhcnQtZm9ybWF0LXdyYXBwZXIgLmFnLWdyb3VwLWl0ZW0ge1xcbiAgICBtYXJnaW46IDQuOHB4IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24ge1xcbiAgICAvKiB1c2UgIWltcG9ydGFudCB0byBwcmV2ZW50IGlzc3VlcyB3aXRoIGJyb3dzZXIgZXh0ZW5zaW9ucyB0aGF0IGNoYW5nZSBmb250cyAqL1xcbiAgICBmb250LWZhbWlseTogXFxcImFnR3JpZEJhbGhhbVxcXCI7XFxuICAgIHNwZWFrOiBub25lO1xcbiAgICBmb250LXNpemU6IDE2cHg7XFxuICAgIGNvbG9yOiAjN0Y4QzhEO1xcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XFxuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcXG4gICAgLyogQmV0dGVyIEZvbnQgUmVuZGVyaW5nID09PT09PT09PT09ICovXFxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWFnZ3JlZ2F0aW9uOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwMFxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tYXJyb3dzOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwMVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tYXNjOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwMlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tY2FuY2VsOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwM1xcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tY2hhcnQ6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTA0XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1jaGVja2JveC1jaGVja2VkOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwNVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MDZcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWNoZWNrYm94LXVuY2hlY2tlZDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MDdcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWNvbG9yLXBpY2tlcjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MDhcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWNvbHVtbjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MDlcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWNvbHVtbnM6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTBBXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1jb250cmFjdGVkOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwQlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tY29weTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MENcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWNyb3NzOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwRFxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tY3V0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwRVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tZGF0YTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MEZcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWRlc2M6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTEwXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1leHBhbmRlZDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MTFcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWV5ZS1zbGFzaDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MTJcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWV5ZTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MTNcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWZpbHRlcjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MTRcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWZpcnN0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxNVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tZ3JpcDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MTZcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWdyb3VwOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxN1xcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24taW5kZXRlcm1pbmF0ZTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MThcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWxhc3Q6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTE5XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1sZWZ0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxQVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tbG9hZGluZzpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MUJcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLW1heGltaXplOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxQ1xcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tbWVudTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MURcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLW1pbmltaXplOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxRVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tbWludXM6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTFGXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1uZXh0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyMFxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tbm9uZTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MjFcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLW5vdC1hbGxvd2VkOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyMlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tcGFzdGU6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTIzXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1waW46YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTI0XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1waXZvdDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MjVcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLXBsdXM6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTI2XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1wcmV2aW91czpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MjdcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLXJhZGlvLWJ1dHRvbi1vZmY6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTI4XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1yYWRpby1idXR0b24tb246YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTI5XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1yaWdodDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MkFcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLXNhdmU6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTJCXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1zbWFsbC1kb3duOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyQ1xcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tc21hbGwtbGVmdDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MkRcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLXNtYWxsLXJpZ2h0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyRVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tc21hbGwtdXA6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTJGXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi10aWNrOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkzMFxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tdHJlZS1jbG9zZWQ6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTMxXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi10cmVlLWluZGV0ZXJtaW5hdGU6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTMyXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi10cmVlLW9wZW46YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTMzXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1jaGVja2JveC1jaGVja2VkLFxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1jaGVja2JveC1pbmRldGVybWluYXRlLFxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1jaGVja2JveC11bmNoZWNrZWQge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcXG4gICAgbGluZS1oZWlnaHQ6IDE2cHg7XFxuICAgIGJvcmRlci1yYWRpdXM6IDNweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWNoZWNrYm94LWNoZWNrZWQtcmVhZG9ubHksXFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1yZWFkb25seSxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1jaGVja2JveC11bmNoZWNrZWQtcmVhZG9ubHkge1xcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgICBvcGFjaXR5OiAwLjM4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWNoZWNrYm94LWNoZWNrZWQge1xcbiAgICBjb2xvcjogIzAwOTFFQTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWNoZWNrYm94LWNoZWNrZWQtcmVhZG9ubHk6YmVmb3JlIHtcXG4gICAgICBjb250ZW50OiBcXFwiXFxcXEU5MDVcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtcmVhZG9ubHk6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTA2XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1jaGVja2JveC11bmNoZWNrZWQtcmVhZG9ubHk6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTA3XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZ3JvdXAtZXhwYW5kZWQgLmFnLWljb24tY29udHJhY3RlZDplbXB0eTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MzNcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLXJvdy1kcmFnOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxNlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJpZ2h0LWFycm93OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxQVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tcmFkaW8tYnV0dG9uLW9uIHtcXG4gICAgY29sb3I6ICMwMDkxRUE7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJpZ2h0LWFycm93OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyQVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCB7XFxuICAgIHRleHQtYWxpZ246IHJpZ2h0OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctbnVtZXJpYy1jZWxsIHtcXG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctY2hlY2tib3g6bm90KC5hZy1sYWJlbC1hbGlnbi1sZWZ0KSBsYWJlbCwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yYWRpby1idXR0b246bm90KC5hZy1sYWJlbC1hbGlnbi1sZWZ0KSBsYWJlbCwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b2dnbGUtYnV0dG9uOm5vdCguYWctbGFiZWwtYWxpZ24tbGVmdCkgbGFiZWwge1xcbiAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1waXZvdC1tb2RlLXBhbmVsIC5hZy1waXZvdC1tb2RlLXNlbGVjdCB7XFxuICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWNvbHVtbi1kcm9wIC5hZy1jb2x1bW4tZHJvcC1lbXB0eS1tZXNzYWdlIHtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDRweDtcXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxNnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLWdyb3VwIC5hZy1jb2x1bW4tc2VsZWN0LWNoZWNrYm94LFxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCAuYWctY29sdW1uLWdyb3VwLWljb25zLFxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbiAuYWctY29sdW1uLXNlbGVjdC1jaGVja2JveCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4gLmFnLWNvbHVtbi1ncm91cC1pY29ucyB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDRweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi5hZy10b29scGFuZWwtYWRkLWdyb3VwLWluZGVudCB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDA7XFxuICAgICAgbWFyZ2luLXJpZ2h0OiAyNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctaGVhZGVyLXNlbGVjdC1hbGwge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xcbiAgICAgIG1hcmdpbi1yaWdodDogMDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1jaGVja2JveCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1ncm91cC1jaGVja2JveCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1ncm91cC1leHBhbmRlZCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1ncm91cC1jb250cmFjdGVkIHtcXG4gICAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7XFxuICAgICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94O1xcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1zZWxlY3Rpb24tY2hlY2tib3ggKyAuYWctY2VsbC12YWx1ZTpub3QoOmVtcHR5KSwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1zZWxlY3Rpb24tY2hlY2tib3ggKyAuYWctZ3JvdXAtdmFsdWU6bm90KDplbXB0eSksXFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1ncm91cC1jaGVja2JveCArIC5hZy1jZWxsLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctZ3JvdXAtY2hlY2tib3ggKyAuYWctZ3JvdXAtdmFsdWU6bm90KDplbXB0eSksXFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1ncm91cC1leHBhbmRlZCArIC5hZy1jZWxsLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctZ3JvdXAtZXhwYW5kZWQgKyAuYWctZ3JvdXAtdmFsdWU6bm90KDplbXB0eSksXFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1ncm91cC1jb250cmFjdGVkICsgLmFnLWNlbGwtdmFsdWU6bm90KDplbXB0eSksXFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1ncm91cC1jb250cmFjdGVkICsgLmFnLWdyb3VwLXZhbHVlOm5vdCg6ZW1wdHkpIHtcXG4gICAgICAgIG1hcmdpbi1yaWdodDogMTJweDtcXG4gICAgICAgIG1hcmdpbi1sZWZ0OiBpbml0aWFsOyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1zZWxlY3Rpb24tY2hlY2tib3ggKyAuYWctZ3JvdXAtY2hlY2tib3gsXFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1ncm91cC1jaGVja2JveCArIC5hZy1ncm91cC1jaGVja2JveCxcXG4gICAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWdyb3VwLWV4cGFuZGVkICsgLmFnLWdyb3VwLWNoZWNrYm94LFxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctZ3JvdXAtY29udHJhY3RlZCArIC5hZy1ncm91cC1jaGVja2JveCB7XFxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEycHg7XFxuICAgICAgICBtYXJnaW4tbGVmdDogaW5pdGlhbDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWdyb3VwLWNoaWxkLWNvdW50IHtcXG4gICAgICBtYXJnaW4tbGVmdDogdW5zZXQ7XFxuICAgICAgbWFyZ2luLXJpZ2h0OiAycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIHtcXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxMnB4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIC5hZy1pY29uLWdyb3VwLFxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCAuYWctaWNvbi1waXZvdCB7XFxuICAgICAgICBtYXJnaW4tbGVmdDogMTJweDtcXG4gICAgICAgIG1hcmdpbi1yaWdodDogMDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWZsb2F0aW5nLWZpbHRlci1idXR0b24ge1xcbiAgICAgIG1hcmdpbi1yaWdodDogMTJweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXNldC1maWx0ZXItaXRlbSA+IGRpdiwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1zZXQtZmlsdGVyLWl0ZW0gPiBzcGFuIHtcXG4gICAgICBtYXJnaW4tbGVmdDogMDtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDVweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWhlYWRlciAuYWctaGVhZGVyLWNlbGwtcmVzaXplOjphZnRlciB7XFxuICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjQkRDM0M3O1xcbiAgICAgIGJvcmRlci1yaWdodDogMDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXNpZGUtYmFyIC5hZy1wYW5lbC1jb250YWluZXIge1xcbiAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0JEQzNDNztcXG4gICAgICBib3JkZXItcmlnaHQ6IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1zaWRlLWJhci5mdWxsLXdpZHRoIC5hZy1wYW5lbC1jb250YWluZXIge1xcbiAgICAgIGJvcmRlci1sZWZ0OiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5zYXNzLXZhcmlhYmxlczo6YWZ0ZXIge1xcbiAgICBjb250ZW50OiAneyBcXFwiYXV0b1NpemVQYWRkaW5nXFxcIjogXFxcIjEycHhcXFwiLCBcXFwiaGVhZGVySGVpZ2h0XFxcIjogXFxcIjMycHhcXFwiLCBcXFwiZ3JvdXBQYWRkaW5nU2l6ZVxcXCI6IFxcXCIyOHB4XFxcIiwgXFxcImZvb3RlclBhZGRpbmdBZGRpdGlvblxcXCI6IFxcXCIxNnB4XFxcIiwgXFxcInZpcnR1YWxJdGVtSGVpZ2h0XFxcIjogXFxcIjI4cHhcXFwiLCBcXFwiYWdnRnVuY1BvcHVwSGVpZ2h0XFxcIjogXFxcIjk4cHhcXFwiLCBcXFwiY2hlY2tib3hJbmRlbnRXaWR0aFxcXCI6IFxcXCIyMHB4XFxcIiwgXFxcImxlYWZOb2RlUGFkZGluZ1xcXCI6IFxcXCIxMnB4XFxcIiwgXFxcInJvd0hlaWdodFxcXCI6IFxcXCIyOHB4XFxcIiwgXFxcImdyaWRTaXplXFxcIjogXFxcIjRweFxcXCIsIFxcXCJpY29uU2l6ZVxcXCI6IFxcXCIxNnB4XFxcIiB9JztcXG4gICAgZGlzcGxheTogbm9uZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2VsbC1oaWdobGlnaHQge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5MUVBICFpbXBvcnRhbnQ7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWhlYWRlci1jZWxsLXJlc2l6ZTo6YWZ0ZXIge1xcbiAgICBoZWlnaHQ6IDgwJTtcXG4gICAgbWFyZ2luLXRvcDogOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1oZWFkZXItY2VsbDo6YWZ0ZXIsXFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1oZWFkZXItZ3JvdXAtY2VsbDo6YWZ0ZXIge1xcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCByZ2JhKDE4OSwgMTk1LCAxOTksIDAuNSk7XFxuICAgIGNvbnRlbnQ6IFxcXCIgXFxcIjtcXG4gICAgaGVpZ2h0OiAxNnB4O1xcbiAgICBtYXJnaW4tdG9wOiA4cHg7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgdGV4dC1pbmRlbnQ6IC0yMDAwcHg7XFxuICAgIHRvcDogMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1oZWFkZXItY2VsbDo6YWZ0ZXIsXFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLWhlYWRlci1ncm91cC1jZWxsOjphZnRlciB7XFxuICAgIHJpZ2h0OiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWhlYWRlci1jZWxsOjphZnRlcixcXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctaGVhZGVyLWdyb3VwLWNlbGw6OmFmdGVyIHtcXG4gICAgbGVmdDogMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbC5hZy1jb2x1bW4tZHJvcCB7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNCREMzQzc7XFxuICAgIGJvcmRlci1ib3R0b206IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbC5hZy1jb2x1bW4tZHJvcC5hZy13aWR0aC1oYWxmOmZpcnN0LWNoaWxkIHtcXG4gICAgYm9yZGVyLXJpZ2h0OiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWNvbHVtbi1kcm9wLWhvcml6b250YWwuYWctY29sdW1uLWRyb3AuYWctd2lkdGgtaGFsZjpmaXJzdC1jaGlsZCB7XFxuICAgIGJvcmRlci1sZWZ0OiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1yb3cge1xcbiAgICBib3JkZXItY29sb3I6ICNkOWRjZGU7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJvdy1zZWxlY3RlZCB7XFxuICAgIGJvcmRlci1jb2xvcjogI2I3ZTRmZjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyb3AtY2VsbCB7XFxuICAgIG1pbi1oZWlnaHQ6IDI0cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyb3AtY2VsbCAuYWctY29sdW1uLWRyb3AtY2VsbC1idXR0b24ge1xcbiAgICAgIG1hcmdpbi1ib3R0b206IDJweDtcXG4gICAgICBtYXJnaW4tdG9wOiAycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyb3AtY2VsbCAuYWctY29sdW1uLWRyb3AtY2VsbC1idXR0b246aG92ZXIge1xcbiAgICAgIG9wYWNpdHk6IDE7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbHVtbi1kcm9wLXZlcnRpY2FsIC5hZy1jb2x1bW4tZHJvcC1jZWxsIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcXG4gICAgbWFyZ2luLXJpZ2h0OiA4cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyb3AtdmVydGljYWwgLmFnLWNvbHVtbi1kcm9wLWNlbGwgLmFnLWNvbHVtbi1kcm9wLWNlbGwtdGV4dCB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY3Zjc7XFxuICAgIGhlaWdodDogMzJweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIC5hZy1jb2x1bW4tZHJvcC1jZWxsLXRleHQge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJvb3Qge1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjQkRDM0M3OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy10b29sLXBhbmVsLXdyYXBwZXIge1xcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjQkRDM0M3OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLWdyb3VwLFxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbiB7XFxuICAgICAgbWluLWhlaWdodDogMjBweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWNvbHVtbi1kcm9wIHtcXG4gICAgICBwYWRkaW5nLWJvdHRvbTogOHB4O1xcbiAgICAgIHBhZGRpbmctdG9wOiA4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctc2lkZS1iYXIsXFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciB7XFxuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0JEQzNDNztcXG4gICAgYm9yZGVyLXJpZ2h0OiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWljb24tZXhwYW5kZWQsXFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWljb24tY29udHJhY3RlZCB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1tZW51LW9wdGlvbiB7XFxuICAgIGhlaWdodDogMjhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLWdyb3VwLFxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uIHtcXG4gICAgaGVpZ2h0OiAyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy10YWItaGVhZGVyIHtcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNCREMzQzc7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdGFiLWhlYWRlciAuYWctdGFiIHtcXG4gICAgICBtYXJnaW4tYm90dG9tOiAtMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRhYi1oZWFkZXIgLmFnLXRhYi5hZy10YWItc2VsZWN0ZWQge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy10YWItYm9keSxcXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXBvcHVwLWVkaXRvcixcXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLW1lbnUge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcXG4gICAgY29sb3I6ICMwMDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNlbGwuYWctY2VsbC1pbmxpbmUtZWRpdGluZyB7XFxuICAgIGhlaWdodDogMjhweDtcXG4gICAgcGFkZGluZzogMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZGV0YWlscy1yb3cge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctb3ZlcmxheS1sb2FkaW5nLXdyYXBwZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLW92ZXJsYXktbG9hZGluZy1jZW50ZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0JEQzNDNztcXG4gICAgY29sb3I6ICMwMDA7XFxuICAgIHBhZGRpbmc6IDE2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQtMTpub3QoLmFnLWNlbGwtZm9jdXMpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxNDUsIDIzNCwgMC4zKTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2VsbC1yYW5nZS1zZWxlY3RlZC0yOm5vdCguYWctY2VsbC1mb2N1cykge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDE0NSwgMjM0LCAwLjQpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLTM6bm90KC5hZy1jZWxsLWZvY3VzKSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTQ1LCAyMzQsIDAuNSk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQtNDpub3QoLmFnLWNlbGwtZm9jdXMpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxNDUsIDIzNCwgMC42KTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcmljaC1zZWxlY3QtdmFsdWUge1xcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0JEQzNDNzsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZmlsdGVyLWFwcGx5LXBhbmVsIHtcXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNCREMzQzc7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWZpbHRlci10b29scGFuZWwtYm9keSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyB9XFxuXFxuXCIiLCJtb2R1bGUuZXhwb3J0cyA9IFwiQGNoYXJzZXQgXFxcIlVURi04XFxcIjtcXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiYWdHcmlkTWF0ZXJpYWxcXFwiO1xcbiAgc3JjOiB1cmwoXFxcImRhdGE6YXBwbGljYXRpb24veC1mb250LXR0ZjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxBQUVBQUFBTEFJQUFBd0F3VDFNdk1nOFNCbE1BQUFDOEFBQUFZR050WVhBWFZ0SzZBQUFCSEFBQUFGUm5ZWE53QUFBQUVBQUFBWEFBQUFBSVoyeDVadlpOQkJnQUFBRjRBQUFSV0dobFlXUVZhV04zQUFBUzBBQUFBRFpvYUdWaEI0a0QrUUFBRXdnQUFBQWthRzEwZU5ZQUpwOEFBQk1zQUFBQTRHeHZZMkY5U0hqTUFBQVVEQUFBQUhKdFlYaHdBRUlBV1FBQUZJQUFBQUFnYm1GdFpWbThxM0VBQUJTZ0FBQUJxbkJ2YzNRQUF3QUFBQUFXVEFBQUFDQUFBd1AyQVpBQUJRQUFBcGtDekFBQUFJOENtUUxNQUFBQjZ3QXpBUWtBQUFBQUFBQUFBQUFBQUFBQUFBQUJFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQURwTXdQQS84QUFRQVBBQUVBQUFBQUJBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQURBQUFBQXdBQUFCd0FBUUFEQUFBQUhBQURBQUVBQUFBY0FBUUFPQUFBQUFvQUNBQUNBQUlBQVFBZzZUUC8vZi8vQUFBQUFBQWc2UUQvL2YvL0FBSC80eGNFQUFNQUFRQUFBQUFBQUFBQUFBQUFBUUFCLy84QUR3QUJBQUFBQUFBQUFBQUFBZ0FBTnprQkFBQUFBQUVBQUFBQUFBQUFBQUFDQUFBM09RRUFBQUFBQVFBQUFBQUFBQUFBQUFJQUFEYzVBUUFBQUFBQkFRQUFhd01BQXhVQUN3QUFBU0VWQ1FFVklUVWhOeWNoQXdEK0FBRVYvdXNDQVA3VjF0WUJLd01WVmY4QS93QlZnTlhWQUFBQUFBUUFPZi81QThjRGh3QUlBQThBRndBZkFBQUJNelV6SndjekZURUhJelVIRnpVekpTY1ZJeFV6RlRjRkl4VWpGemNqTlFHcnFuTEh4M0k1Y3NmSGNnSlZ4M0p5eC82T3FuTEh4M0lDVG5MSHgzSTVjc2ZIY2xYSGNxcHl4NDV5eDhkeUFBQUJBS3NBYXdOVkF4VUFDUUFBRXhjM0VUTVJGemNKQWFzODdsYnVQUDZyL3FzQndEenUvZmtDQis4OUFWWCtxd0FDQUZVQUZRT3JBMnNBSEFBb0FBQUJJZ2NPQVFjR0ZSUVhIZ0VYRmpNeU56NEJOelkxTkNjdUFTY21JeE1ISndjbk55YzNGemNYQndJQVdFNU9kQ0VpSWlGMFRrNVlXRTVPZENFaUlpRjBUazVZMVR5Wm1UeVptVHlabVR5WkEyc2lJWFJPVGxoWVRrNTBJU0lpSVhST1RsaFlUazUwSVNMOXZEeVptVHlabVR5Wm1UeVpBQUFBQXdEVkFKVURLd0xyQUFRQUNRQU5BQUFUTXhFakVUY3pFU01SRXpNUkk5V0FnTzk0ZU85NGVBSTMvbDRCb3JUOXFnSlcvcXIvQUFBQ0FJQUFRQU9BQTBBQUR3QVdBQUFCSVNJR0ZSRVVGak1oTWpZMUVUUW1BU2MzRndFWEFRTXIvYW9qTWpJakFsWWpNakwrWGRZOG1nRkVQUDZBQTBBeUkvMnFJekl5SXdKV0l6TDlxOVU4bVFGRVBQNkFBQUFBQWdDQUFFQURnQU5BQUE4QUV3QUFBU0VpQmhVUkZCWXpJVEkyTlJFMEpnTWhOU0VESy8ycUl6SXlJd0pXSXpJeWVmNVdBYW9EUURJai9hb2pNaklqQWxZak12NVZWZ0FBQWdDQUFFQURnQU5BQUFNQUV3QUFBUkVoRVNVaElnWVZFUlFXTXlFeU5qVVJOQ1lESy8ycUFsYjlxaU15TWlNQ1ZpTXlNZ0xyL2FvQ1ZsVXlJLzJxSXpJeUl3SldJeklBQXdCekFFZ0RqUU00QUFZQUNnQVdBQUFKQVFjWENRSWhOeGNoQlRBR0ZSUVdNekkyTlRRbUF2MytWVHhtL3ZjQlJRRkYvZS9NelA1b0FreFZNaU1qTWxVQmpRR3JQR2IrOS82N0FVWE56VUJyS2lNeU1pTXFhd0FBQUFBQ0FLc0Fhd0ZWQXhVQUF3QUhBQUFsSXhFek5SVWpOUUZWcXFxcWF3SC9xMWRYQUFBSkFLc0Fhd05WQXhVQUF3QUlBQXdBRUFBVkFCa0FIZ0FpQUNZQUFCTXpOU01CTXpVakZTRXpOU00xTXpVakJUTTFJeFVCRlRNMUJUTTFJeFVCTXpVakVUTTFJNnVxcWdFQXFxci9BS3FxcXFvQkFLcXFBUUNxL2xhcXFnRUFxcXFxcWdKcnF2MVdxcXFxVnFxcXFxb0JxcXFxcXFxcS93Q3EvbGFxQUFBQUFBRUJZZ0RBQXA0Q3dBQUdBQUFCSndrQk55YzNBcDQ4L3dBQkFEekR3d0tFUFA4QS93QTh4TVFBQUFBQUF3QnIvK3NEbFFPVkFBZ0FHUUFkQUFBQklTSUdGUkV6RVNFWElTSUdGUkVVRmpNaE1qWTFFVFFtSXhFaEVTRUN3UDRBSXpKVkFnQ0EvaXNrTWpJa0FkVWpNaklqL2lzQjFRT1ZNaVA5cXdKVlZUSWsvYXNqTWpJakFsVWtNdjFWQWxVQUFBRUExUUNWQXlzQzZ3QU1BQUFCSndjbkJ4Y0hGemNYTnljM0F5czg3Kzg4Nys4ODcrODg3KzhDcnp6djd6enY3enp2N3p6djd3QUFCUUJWQUJVRHF3TnJBQ1VBTWdBL0FFc0FVUUFBQVQ0Qk5UUW1JeUlHRlJRV016STJOeGNITGdFaklnWVZGQll6TWpZMU5DWW5Od0V6TlFFSElpWTFORFl6TWhZVkZBWWpFU0ltTlRRMk16SVdGUlFHSXdFaUpqVTBOak15RmhVVUJna0JGd0UxSXdHYkNBaGtSMGRrWkVjVEl4QmxaUkFqRTBka1pFZEhaQWdJWlFFcmdQM3dteU15TWlNak1qSWpJekl5SXlNeU1pTUJBQWtNREFrSkRBd0JJdjhBVlFFcmdBSjZFQ01UUjJSa1IwZGtDQWhsWlFnSVpFZEhaR1JIRXlNUVpmN1ZLd0lQRHpFa0pERXhKQ1F4L2dBeEpDUXhNU1FrTVFGQURBa0pEQXdKQ1F3QmxmOEFWUUVxS3dBQUJ3Q1hBTDhEYVFMQkFBd0FFQUFkQUNFQUxRQTZBRDRBQUJNaUJoVVVGak15TmpVMEppTUZOU0VWQXlJR0ZSUVdNekkyTlRRbUl3VWhOU0VGTWhZVkZBWWpJaVkxTkRZM01oWVZGQVlqSWlZMU5EWXpCU0UxSWNJU0dSa1NFaGtaRWdLbi9kZCtFaGtaRWhJWkdSSUIwdjZzQVZUK0xnMFRFdzBORXhNTkVoa1pFaElaR1JJQ3AvM1hBaWtCRlJrU0VSb2FFUklaVlZaV0FTc1pFaElaR1JJU0dWVlZDeE1ORFJNVERRMFQ0Um9SRWhrWkVoRWFWbFVBQUFBQkFLc0Fhd05WQXhVQUNRQUFBU2NIRVNNUkp3Y0pBUU5WUE81Vzdqd0JWUUZWQWNBODdnSUgvZm52UGY2ckFWVUFBQUFBQVFGaUFNQUNuZ0xBQUFZQUFBRUhGd2NYQ1FFQm5qekR3endCQVA4QUFzQTh4TVE4QVFBQkFBQUFBQUFCQUpNQXh3TnRBcmtBUndBQUFTNEJJeUlHQnljK0FUTXlGeDRCRnhZWERnRUhKejRCTnlNT0FRY25JeGNPQVNNaUppY2pIZ0V6TWpZM0Z3NEJJeUluTGdFbkppYytBVGNYRGdFSE15YytBVE15RmhjekFxTUtYRDBpUFJaUEsyTTJQams1WHlRbEZSaFlPVThTR0FWRUJBMElLMUJHQkFrRklqVUpSQXBjUGhNakVFZ2hSeVkrT1RsZkpDVVZFejRvWGdVR0FvWXBEU1FWSWpRSlJBSGRPazhhRjA4WkhCTVNRaTR0Tno1bElVOFNMUm9NRlFrcVJnRUJLUjg2VUFnSVNBME9FeEpDTGkwM01GUWdYZ29VQ3lvTkVDZ2ZBQUFEQUpNQXh3TnRBcmtBSEFBcEFEVUFBQUVpQnc0QkJ3WUhGaGNlQVJjV016STNQZ0UzTmpjbUp5NEJKeVlqRVNJbU5UUTJNeklXRlJRR0l4RWlCaFVVRmpNeU5qVTBKZ0lBUGprNVh5UWxGUlVsSkY4NU9UNCtPVGxmSkNVVkZTVWtYems1UGtWaFlVVkZZV0ZGS1RzN0tTazdPd0s1RXhKQ0xpMDNOeTB1UWhJVEV4SkNMaTAzTnkwdVFoSVQvbUZoUlVWaFlVVkZZUUVLT3lrcE96c3BLVHNBQUFNQWdBREFBNEFDd0FBRUFBZ0FEQUFBSlRNMUl4VUJGU0UxQVNFMUlRR3JxcXIrMVFNQS9ZQUNBUDRBd0ZWVkFnQlZWZjdWVmdBQUFnRDNBTUFEQ1FMQUFBVUFDZ0FBSlNjM0p3a0JBVE1SSXhFRENjVEVQUDhBQVFEK0tsWlcvTVRFUFA4QS93QUNBUDRBQWdBQUFBQUNBS3NCUUFOVkFrQUFBd0FJQUFBQklSVWhCU0UxSVJVRFZmMVdBcXI5VmdLcS9WWUNRRldyVlZVQUFBWUFqZ0NrQTNJQzNBQUhBQXdBRXdBWEFCc0FJUUFBQVNFVUJpc0JOVEVsRlNFMUlTY3lGaFVoTlNFQkl6VXpOU00xTXljak5EWXpGUUpWQVIxREw2c0JIZjdqQVIxeUwwUCtBQUdPL3VSeWNuSnk1SEpETHdFVkwwSng1SEp5NDBJdmNmM0ljWEp5Y2k5Q2NRQUFBQUFDQUpNQXh3TnRBcmtBSEFBcEFBQUJJZ2NPQVFjR0J4WVhIZ0VYRmpNeU56NEJOelkzSmljdUFTY21JeEVpSmpVME5qTXlGaFVVQmlNQ0FENDVPVjhrSlJVVkpTUmZPVGsrUGprNVh5UWxGUlVsSkY4NU9UNUZZV0ZGUldGaFJRSzVFeEpDTGkwM055MHVRaElURXhKQ0xpMDNOeTB1UWhJVC9tRmhSVVZoWVVWRllRQUNBUGNBd0FNSkFzQUFCZ0FLQUFBVEZ3Y1hDUUVISlRNUkkvZkV4RHdCQVA4QVBBRzhWbFlDaE1URVBBRUFBUUE4UFA0QUFBQUFBQUVBcXdCckExVURGUUFKQUFBQklUY25DUUUzSnlFMUExWDkrZTg5L3FzQlZUenVBZ2NCNis0OC9xditxenp1VmdBQUFBQUNBT1FBcEFNY0F0d0FIQUFtQUFBQk54Y0hNeFVqSGdFWEJ5Y1ZJelVISnpjak5UTW5OeDRCRnpVekZRY3pOelVuSXdjVkhnRUNPV2hRYUpPVEdqUWFVR2h5YUZCb2s1Tm9VQm8wR25Kb1hrTkRYa01SSVFKSmFGQm9jaG8wR2xCb2s1Tm9VR2h5YUZBYU5CcVRrL3REWGtORFhoRWhBQUFCQUlBQzZ3T0FBMEFBQXdBQUV5RVZJWUFEQVAwQUEwQlZBQUFBQXdDQUFNQURnQUxBQUFNQUJ3QUxBQUEzSVRVaE5TRTFJVFVWSVRXQUF3RDlBQU1BL1FBREFNQlZnRmJWVlZVQUFRRUFBRUFEQUFDVkFBTUFBQ1VoRlNFQkFBSUEvZ0NWVlFBQUFBRUExUUdWQXlzQjZ3QUVBQUFUSVJVaE5kVUNWdjJxQWV0V1ZnQUJBV0lBd0FLZUFzQUFCZ0FBQVFjWEJ4Y0pBUUdlUE1QRFBBRUEvd0FDd0R6RXhEd0JBQUVBQUFBQUFBTUFnQURBQTRBQ3dBQURBQWNBQ3dBQU55RTFJUkVWSVRVQklUVWhnQUlBL2dBREFQMEFBd0Q5QU1CVkFhdFZWZjdWVmdBREFGVUFGUU9yQTJzQUhBQXJBRG9BQUFFaUJ3NEJCd1lWRkJjZUFSY1dNekkzUGdFM05qVTBKeTRCSnlZakFUUTNQZ0UzTmpNeUZoY0JMZ0UxQVNJbUp3RWVBUlVVQnc0QkJ3WWpBZ0JZVGs1MElTSWlJWFJPVGxoWVRrNTBJU0lpSVhST1RsaitxeG9iWFQ0K1J6dHJLLzRpSWlZQlZUdHJLd0hlSWlZYUcxMCtQa2NEYXlJaGRFNU9XRmhPVG5RaElpSWhkRTVPV0ZoT1RuUWhJdjVWUno0K1hSc2FKaUwrSWl0ck8vNnJKaUlCM2l0ck8wYytQbDBiR2dBQUFBQURBSUQvNndPQUE1VUFHQUFrQUN3QUFBRWpMZ0VqSWdZSEl5SUdGUkVVRmpNaE1qWTFFVFFtSXpFaE1oWVZGQVlqSWlZMU5EWUJJUkV6RlNFMU13TXJzdzFCS2lwQkRiTWpNaklqQWxZak1qSWovdFVTR1JrU0Voa1pBVDM5cWxZQnFsWURRQ1V3TUNVeUkvMVZJekl5SXdLckl6SVpFaEVaR1JFU0dmMEFBcXVBZ0FBQ0FLMEFid05UQXhFQUJRQVNBQUFsQnljM0hnRVRBUWNuQnhjSEp6Y1hOeWMzQVdPT0tJNEtGTVlCTkI4ZTl6NVk5bGc5ZXg0ZS9ZNG9qZ29VQWdyK3pCNGVlejFZOWxnKzl4NGZBQUFBQUFrQU9mLzVBOGNEaHdBUEFCTUFGd0FnQUNRQUxnQXlBRFlBT2dBQUJTRWlKalVSTkRZeklUSVdGUkVVQmdFakZUTUJJUkVoSlFjWEJ5YzNIZ0VYSnlNVk15VUhKd2NuTng0QkZ6RUJJeFV6SlNNVk16Y2pGVE1EVmYxV0wwTkRMd0txTDBORC9kR3FxZ0lBL2prQngvN2NRa0lwYVdrS0ZRcmNxcW9CK0NoQlFpaHFHalVhL2dpcXFnRWQ1T1RqcXFvSFF5OENxaTlEUXkvOVZpOURBUnlxQVk3K2NyTkNRU2hwYWdvVUN0dXJNU2hCUVNocEdqVWFBWmFxcXFxcXFnQUFBQUFCQU5VQWxRTXJBdXNBQ3dBQUFTRVJJeEVoTlNFUk14RWhBeXYvQUZiL0FBRUFWZ0VBQVpYL0FBRUFWZ0VBL3dBQUFBQUFBUUZpQU1BQ25nTEFBQVlBQUFFbkNRRTNKemNDbmp6L0FBRUFQTVBEQW9ROC93RC9BRHpFeEFBQUFBQUNBRlVBRlFPckEyc0FIQUE1QUFBQklnY09BUWNHRlJRWEhnRVhGak15Tno0Qk56WTFOQ2N1QVNjbUl4RWlKeTRCSnlZMU5EYytBVGMyTXpJWEhnRVhGaFVVQnc0QkJ3WWpBZ0JZVGs1MElTSWlJWFJPVGxoWVRrNTBJU0lpSVhST1RsaEhQajVkR3hvYUcxMCtQa2RIUGo1ZEd4b2FHMTArUGtjRGF5SWhkRTVPV0ZoT1RuUWhJaUloZEU1T1dGaE9UblFoSXYwQUdodGRQajVIUno0K1hSc2FHaHRkUGo1SFJ6NCtYUnNhQUFNQVZRQVZBNnNEYXdBY0FEa0FWZ0FBQVNJSERnRUhCaFVVRng0QkZ4WXpNamMrQVRjMk5UUW5MZ0VuSmlNMUlnY09BUWNHRlJRWEhnRVhGak15Tno0Qk56WTFOQ2N1QVNjbUl4RWlKeTRCSnlZMU5EYytBVGMyTXpJWEhnRVhGaFVVQnc0QkJ3WWpBZ0FzSnljNkVSQVFFVG9uSnl3c0p5YzZFUkFRRVRvbkp5eFlUazUwSVNJaUlYUk9UbGhZVGs1MElTSWlJWFJPVGxoSFBqNWRHeG9hRzEwK1BrZEhQajVkR3hvYUcxMCtQa2NDbFJBUk9pY25MQ3duSnpvUkVCQVJPaWNuTEN3bkp6b1JFTllpSVhST1RsaFlUazUwSVNJaUlYUk9UbGhZVGs1MElTTDlBQm9iWFQ0K1IwYytQbDBiR2hvYlhUNCtSMGMrUGwwYkdnQUJBS3NBYXdOVkF4VUFDUUFBQVFjWElSVWhCeGNKQVFJQVBPNzkrUUlIN2p3QlZmNnJBeFU4N2xidVBBRlZBVlVBQUFBQUFnQ0FBRUFEZ0FOQUFBNEFHUUFBQVJFaEVTTVJGQll6SVRJMk5SRWpCVGNYQnljM0Z4RXpFVEVESy8ycVZUSWpBbFlqTWxYL0FHNDgxZFU4YmxZQndQN1ZBU3YrMVNNeU1pTUJLeDF1UE5YVlBHNEJuZjVqQUFFQkt3RlZBdFVDS3dBREFBQUJGemNoQVN2VjFmNVdBaXZXMWdBQkFaVUE2d0pyQXBVQUF3QUFBUWNYRVFKcjF0WUNsZFhWQWFvQUFRR1ZBT3NDYXdLVkFBTUFBQ1UzSnhFQmxkYlc2OVhWL2xZQUFBRUJLd0ZWQXRVQ0t3QURBQUFCTnhjaEFTdlYxZjVXQVZYVzFnQUJBSWtBb2dOM0F0NEFCZ0FBQVNjSEZ3RW5BUUYzc2p6dUFnQTgvandCRzdJOTdnSUFQUDQ5QUFBQUFBRUJZZ0RBQXA0Q3dBQUdBQUFCQnhjSEZ3a0JBWjQ4dzhNOEFRRC9BQUxBUE1URVBBRUFBUUFBQUFBQUFRRFZBWlVES3dIckFBUUFBQk1oRlNFMTFRSlcvYW9CNjFaV0FBRUJBQUVpQXdBQ1hnQUZBQUFCQnljSENRRUN4TVRFUEFFQUFRQUNYc1BEUFA4QUFRQUFBQUFCQUFBQUFRQUFjRkJ6RVY4UFBQVUFDd1FBQUFBQUFObEJqMzBBQUFBQTJVR1BmUUFBLytzRHh3T1ZBQUFBQ0FBQ0FBQUFBQUFBQUFFQUFBUEEvOEFBQUFRQUFBQUFBQVBIQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUE0QkFBQUFBQUFBQUFBQUFBQUFnQUFBQVFBQVFBRUFBQTVCQUFBcXdRQUFGVUVBQURWQkFBQWdBUUFBSUFFQUFDQUJBQUFjd1FBQUtzRUFBQ3JCQUFCWWdRQUFHc0VBQURWQkFBQVZRUUFBSmNFQUFDckJBQUJZZ1FBQUpNRUFBQ1RCQUFBZ0FRQUFQY0VBQUNyQkFBQWpnUUFBSk1FQUFEM0JBQUFxd1FBQU9RRUFBQ0FCQUFBZ0FRQUFRQUVBQURWQkFBQllnUUFBSUFFQUFCVkJBQUFnQVFBQUswRUFBQTVCQUFBMVFRQUFXSUVBQUJWQkFBQVZRUUFBS3NFQUFDQUJBQUJLd1FBQVpVRUFBR1ZCQUFCS3dRQUFJa0VBQUZpQkFBQTFRUUFBUUFBQUFBQUFBb0FGQUFlQURvQWJBQ0VBTWdBNUFFUUFUUUJXQUdHQVpnQjJBSHVBaUFDUEFLMEF4SURMQU5DQTY0RUFBUWNCRGdFVGdTR0JNZ0U1QVQrQlRvRlNBVmdCVzRGZkFXU0Jhd0dEQVpPQm5ZRzJBYnlCd2dIWUFmZ0Ivb0lKZ2cwQ0VJSVVBaGVDSFFJaWdpWUNLd0FBQUFCQUFBQU9BQlhBQWtBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEZ0N1QUFFQUFBQUFBQUVBQ2dBQUFBRUFBQUFBQUFJQUJ3QjdBQUVBQUFBQUFBTUFDZ0EvQUFFQUFBQUFBQVFBQ2dDUUFBRUFBQUFBQUFVQUN3QWVBQUVBQUFBQUFBWUFDZ0JkQUFFQUFBQUFBQW9BR2dDdUFBTUFBUVFKQUFFQUZBQUtBQU1BQVFRSkFBSUFEZ0NDQUFNQUFRUUpBQU1BRkFCSkFBTUFBUVFKQUFRQUZBQ2FBQU1BQVFRSkFBVUFGZ0FwQUFNQUFRUUpBQVlBRkFCbkFBTUFBUVFKQUFvQU5BRElRV2ROWVhSbGNtbGhiQUJCQUdjQVRRQmhBSFFBWlFCeUFHa0FZUUJzVm1WeWMybHZiaUF4TGpBQVZnQmxBSElBY3dCcEFHOEFiZ0FnQURFQUxnQXdRV2ROWVhSbGNtbGhiQUJCQUdjQVRRQmhBSFFBWlFCeUFHa0FZUUJzUVdkTllYUmxjbWxoYkFCQkFHY0FUUUJoQUhRQVpRQnlBR2tBWVFCc1VtVm5kV3hoY2dCU0FHVUFad0IxQUd3QVlRQnlRV2ROWVhSbGNtbGhiQUJCQUdjQVRRQmhBSFFBWlFCeUFHa0FZUUJzUm05dWRDQm5aVzVsY21GMFpXUWdZbmtnU1dOdlRXOXZiaTRBUmdCdkFHNEFkQUFnQUdjQVpRQnVBR1VBY2dCaEFIUUFaUUJrQUNBQVlnQjVBQ0FBU1FCakFHOEFUUUJ2QUc4QWJnQXVBQUFBQXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBPT1cXFwiKSBmb3JtYXQoXFxcInRydWV0eXBlXFxcIik7XFxuICBmb250LXdlaWdodDogbm9ybWFsO1xcbiAgZm9udC1zdHlsZTogbm9ybWFsOyB9XFxuXFxuLmFnLXRoZW1lLW1hdGVyaWFsIHtcXG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xcbiAgZm9udC1mYW1pbHk6IFxcXCJSb2JvdG9cXFwiLCBzYW5zLXNlcmlmO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIGZvbnQtc2l6ZTogMTNweDtcXG4gIGxpbmUtaGVpZ2h0OiAxOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXRhYi1oZWFkZXIgLmFnLXRhYi5hZy10YWItc2VsZWN0ZWQge1xcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgIzNmNTFiNTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIGxhYmVsIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsICoge1xcbiAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgKjpmb2N1cywgLmFnLXRoZW1lLW1hdGVyaWFsICogKjpiZWZvcmUsIC5hZy10aGVtZS1tYXRlcmlhbCAqICo6YWZ0ZXIge1xcbiAgICAgIG91dGxpbmU6IG5vbmU7XFxuICAgICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy10YWIge1xcbiAgICAtd2Via2l0LWJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xcbiAgICAgICAgICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyNnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xIHtcXG4gICAgcGFkZGluZy1yaWdodDogMjZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMSB7XFxuICAgIHBhZGRpbmctbGVmdDogNDJweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDQycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDUycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTIge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1MnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA4NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yIHtcXG4gICAgcGFkZGluZy1yaWdodDogODRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMyB7XFxuICAgIHBhZGRpbmctbGVmdDogNzhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDc4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEyNnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zIHtcXG4gICAgcGFkZGluZy1yaWdodDogMTI2cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEwNHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTA0cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE2OHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTY4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEzMHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC01IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTMwcHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDIxMHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC01IHtcXG4gICAgcGFkZGluZy1yaWdodDogMjEwcHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE1NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC02IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTU2cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDI1MnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC02IHtcXG4gICAgcGFkZGluZy1yaWdodDogMjUycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE4MnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC03IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTgycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDI5NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC03IHtcXG4gICAgcGFkZGluZy1yaWdodDogMjk0cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDIwOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC04IHtcXG4gICAgcGFkZGluZy1yaWdodDogMjA4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDMzNnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC04IHtcXG4gICAgcGFkZGluZy1yaWdodDogMzM2cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDIzNHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC05IHtcXG4gICAgcGFkZGluZy1yaWdodDogMjM0cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDM3OHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC05IHtcXG4gICAgcGFkZGluZy1yaWdodDogMzc4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTEwIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyNjBweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTAge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyNjBweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDQyMHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xMCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDQyMHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xMSB7XFxuICAgIHBhZGRpbmctbGVmdDogMjg2cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTExIHtcXG4gICAgcGFkZGluZy1yaWdodDogMjg2cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTExIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0NjJweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTEge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA0NjJweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDMxMnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDMxMnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xMiB7XFxuICAgIHBhZGRpbmctbGVmdDogNTA0cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEyIHtcXG4gICAgcGFkZGluZy1yaWdodDogNTA0cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTEzIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAzMzhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTMge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAzMzhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDU0NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xMyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDU0NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xNCB7XFxuICAgIHBhZGRpbmctbGVmdDogMzY0cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTE0IHtcXG4gICAgcGFkZGluZy1yaWdodDogMzY0cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE0IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA1ODhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTQge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1ODhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDM5MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xNSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDM5MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xNSB7XFxuICAgIHBhZGRpbmctbGVmdDogNjMwcHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE1IHtcXG4gICAgcGFkZGluZy1yaWdodDogNjMwcHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTE2IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0MTZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTYge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA0MTZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDY3MnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDY3MnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xNyB7XFxuICAgIHBhZGRpbmctbGVmdDogNDQycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTE3IHtcXG4gICAgcGFkZGluZy1yaWdodDogNDQycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE3IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA3MTRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTcge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA3MTRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDQ2OHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDQ2OHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xOCB7XFxuICAgIHBhZGRpbmctbGVmdDogNzU2cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE4IHtcXG4gICAgcGFkZGluZy1yaWdodDogNzU2cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTE5IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0OTRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTkge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA0OTRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDc5OHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xOSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDc5OHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yMCB7XFxuICAgIHBhZGRpbmctbGVmdDogNTIwcHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTIwIHtcXG4gICAgcGFkZGluZy1yaWdodDogNTIwcHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTIwIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA4NDBweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjAge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA4NDBweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjEge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDU0NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDU0NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yMSB7XFxuICAgIHBhZGRpbmctbGVmdDogODgycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTIxIHtcXG4gICAgcGFkZGluZy1yaWdodDogODgycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTIyIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA1NzJweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjIge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1NzJweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDkyNHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDkyNHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yMyB7XFxuICAgIHBhZGRpbmctbGVmdDogNTk4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTIzIHtcXG4gICAgcGFkZGluZy1yaWdodDogNTk4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTIzIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA5NjZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjMge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA5NjZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDYyNHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDYyNHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yNCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTAwOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEwMDhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDY1MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yNSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDY1MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yNSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTA1MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yNSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEwNTBweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDY3NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDY3NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yNiB7XFxuICAgIHBhZGRpbmctbGVmdDogMTA5MnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEwOTJweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDcwMnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yNyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDcwMnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yNyB7XFxuICAgIHBhZGRpbmctbGVmdDogMTEzNHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yNyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDExMzRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDcyOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDcyOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yOCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTE3NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDExNzZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDc1NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yOSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDc1NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yOSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTIxOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yOSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEyMThweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDc4MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zMCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDc4MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zMCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTI2MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zMCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEyNjBweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzEge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDgwNnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDgwNnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zMSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTMwMnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEzMDJweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDgzMnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDgzMnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zMiB7XFxuICAgIHBhZGRpbmctbGVmdDogMTM0NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEzNDRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDg1OHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zMyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDg1OHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zMyB7XFxuICAgIHBhZGRpbmctbGVmdDogMTM4NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zMyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEzODZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDg4NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDg4NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zNCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTQyOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDE0MjhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDkxMHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zNSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDkxMHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zNSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTQ3MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zNSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDE0NzBweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDkzNnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDkzNnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zNiB7XFxuICAgIHBhZGRpbmctbGVmdDogMTUxMnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDE1MTJweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDk2MnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zNyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDk2MnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zNyB7XFxuICAgIHBhZGRpbmctbGVmdDogMTU1NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zNyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDE1NTRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDk4OHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDk4OHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zOCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTU5NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDE1OTZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEwMTRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzkge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMDE0cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTM5IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxNjM4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTM5IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTYzOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00MCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTA0MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00MCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEwNDBweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE2ODBweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDAge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxNjgwcHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTQxIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMDY2cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTQxIHtcXG4gICAgcGFkZGluZy1yaWdodDogMTA2NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00MSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTcyMnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00MSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDE3MjJweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEwOTJweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDIge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMDkycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQyIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxNzY0cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQyIHtcXG4gICAgcGFkZGluZy1yaWdodDogMTc2NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00MyB7XFxuICAgIHBhZGRpbmctbGVmdDogMTExOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00MyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDExMThweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE4MDZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDMge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxODA2cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTQ0IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMTQ0cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTQ0IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTE0NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00NCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTg0OHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00NCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDE4NDhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDExNzBweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDUge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMTcwcHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ1IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxODkwcHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ1IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTg5MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00NiB7XFxuICAgIHBhZGRpbmctbGVmdDogMTE5NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00NiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDExOTZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE5MzJweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDYge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxOTMycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTQ3IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMjIycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTQ3IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTIyMnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00NyB7XFxuICAgIHBhZGRpbmctbGVmdDogMTk3NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00NyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDE5NzRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEyNDhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDgge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMjQ4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ4IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyMDE2cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ4IHtcXG4gICAgcGFkZGluZy1yaWdodDogMjAxNnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00OSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTI3NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00OSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEyNzRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDIwNThweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDkge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyMDU4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2VsbCAuYWctaWNvbiB7XFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jaGVja2JveCwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1yYWRpby1idXR0b24sIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdG9nZ2xlLWJ1dHRvbiB7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgY3Vyc29yOiBkZWZhdWx0OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2hlY2tib3ggbGFiZWwsIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcmFkaW8tYnV0dG9uIGxhYmVsLCAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXRvZ2dsZS1idXR0b24gbGFiZWwge1xcbiAgICAgIGN1cnNvcjogZGVmYXVsdDsgfVxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2hlY2tib3ggbGFiZWw6ZW1wdHksIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcmFkaW8tYnV0dG9uIGxhYmVsOmVtcHR5LCAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXRvZ2dsZS1idXR0b24gbGFiZWw6ZW1wdHkge1xcbiAgICAgICAgbWFyZ2luOiAwOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2hlY2tib3g6bm90KC5hZy1sYWJlbC1hbGlnbi1sZWZ0KSBsYWJlbCwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1yYWRpby1idXR0b246bm90KC5hZy1sYWJlbC1hbGlnbi1sZWZ0KSBsYWJlbCwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy10b2dnbGUtYnV0dG9uOm5vdCguYWctbGFiZWwtYWxpZ24tbGVmdCkgbGFiZWwge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2VsbCB7XFxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IHN1YnBpeGVsLWFudGlhbGlhc2VkOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWxlYWYtaW5kZW50IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDQycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1jZWxsIHtcXG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdHJhbnNwYXJlbnQ7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3cuYWctY2VsbC1maXJzdC1yaWdodC1waW5uZWQsIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1jZWxsOm5vdCguYWctY2VsbC1mb2N1cykuYWctY2VsbC1maXJzdC1yaWdodC1waW5uZWQge1xcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNlMmUyZTI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3cuYWctY2VsbC1sYXN0LWxlZnQtcGlubmVkLCAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctY2VsbDpub3QoLmFnLWNlbGwtZm9jdXMpLmFnLWNlbGwtbGFzdC1sZWZ0LXBpbm5lZCB7XFxuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNlMmUyZTI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtbGVhZi1pbmRlbnQge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDQycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1jZWxsIHtcXG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy5hZy1jZWxsLWZpcnN0LXJpZ2h0LXBpbm5lZCwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLWNlbGw6bm90KC5hZy1jZWxsLWZvY3VzKS5hZy1jZWxsLWZpcnN0LXJpZ2h0LXBpbm5lZCB7XFxuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2UyZTJlMjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy5hZy1jZWxsLWxhc3QtbGVmdC1waW5uZWQsIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1jZWxsOm5vdCguYWctY2VsbC1mb2N1cykuYWctY2VsbC1sYXN0LWxlZnQtcGlubmVkIHtcXG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2UyZTJlMjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy12YWx1ZS1jaGFuZ2UtZGVsdGEge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdmFsdWUtY2hhbmdlLWRlbHRhLXVwIHtcXG4gICAgY29sb3I6ICM0M2EwNDc7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdmFsdWUtY2hhbmdlLWRlbHRhLWRvd24ge1xcbiAgICBjb2xvcjogI2U1MzkzNTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy12YWx1ZS1jaGFuZ2UtdmFsdWUge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgYm9yZGVyLXJhZGl1czogMXB4O1xcbiAgICBwYWRkaW5nLWxlZnQ6IDFweDtcXG4gICAgcGFkZGluZy1yaWdodDogMXB4O1xcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMXM7XFxuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMXM7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdmFsdWUtY2hhbmdlLXZhbHVlLWhpZ2hsaWdodCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMGFjYzE7XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjFzO1xcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMXM7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dDpub3QoW3R5cGVdKSxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJ0ZXh0XFxcIl0sXFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwibnVtYmVyXFxcIl0sXFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwidGVsXFxcIl0sXFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZVxcXCJdLFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcImRhdGV0aW1lLWxvY2FsXFxcIl0ge1xcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44Nyk7XFxuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XFxuICAgIGhlaWdodDogNDBweDtcXG4gICAgcGFkZGluZy1ib3R0b206IDhweDtcXG4gICAgYm9yZGVyLXdpZHRoOiAwO1xcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2UyZTJlMjsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXQ6bm90KFt0eXBlXSk6Zm9jdXMsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJ0ZXh0XFxcIl06Zm9jdXMsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJudW1iZXJcXFwiXTpmb2N1cyxcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcInRlbFxcXCJdOmZvY3VzLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZVxcXCJdOmZvY3VzLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZXRpbWUtbG9jYWxcXFwiXTpmb2N1cyB7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICMzZjUxYjU7XFxuICAgICAgb3V0bGluZTogbm9uZTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXQ6bm90KFt0eXBlXSk6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJ0ZXh0XFxcIl06Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJudW1iZXJcXFwiXTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcixcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcInRlbFxcXCJdOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZVxcXCJdOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZXRpbWUtbG9jYWxcXFwiXTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0Om5vdChbdHlwZV0pOjotbW96LXBsYWNlaG9sZGVyLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwidGV4dFxcXCJdOjotbW96LXBsYWNlaG9sZGVyLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwibnVtYmVyXFxcIl06Oi1tb3otcGxhY2Vob2xkZXIsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJ0ZWxcXFwiXTo6LW1vei1wbGFjZWhvbGRlcixcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcImRhdGVcXFwiXTo6LW1vei1wbGFjZWhvbGRlcixcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcImRhdGV0aW1lLWxvY2FsXFxcIl06Oi1tb3otcGxhY2Vob2xkZXIge1xcbiAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dDpub3QoW3R5cGVdKTotbXMtaW5wdXQtcGxhY2Vob2xkZXIsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJ0ZXh0XFxcIl06LW1zLWlucHV0LXBsYWNlaG9sZGVyLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwibnVtYmVyXFxcIl06LW1zLWlucHV0LXBsYWNlaG9sZGVyLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwidGVsXFxcIl06LW1zLWlucHV0LXBsYWNlaG9sZGVyLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZVxcXCJdOi1tcy1pbnB1dC1wbGFjZWhvbGRlcixcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcImRhdGV0aW1lLWxvY2FsXFxcIl06LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM4KTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXQ6bm90KFt0eXBlXSk6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcixcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcInRleHRcXFwiXTo6LW1zLWlucHV0LXBsYWNlaG9sZGVyLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwibnVtYmVyXFxcIl06Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcixcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcInRlbFxcXCJdOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJkYXRlXFxcIl06Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcixcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcImRhdGV0aW1lLWxvY2FsXFxcIl06Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0Om5vdChbdHlwZV0pOjpwbGFjZWhvbGRlcixcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcInRleHRcXFwiXTo6cGxhY2Vob2xkZXIsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJudW1iZXJcXFwiXTo6cGxhY2Vob2xkZXIsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJ0ZWxcXFwiXTo6cGxhY2Vob2xkZXIsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJkYXRlXFxcIl06OnBsYWNlaG9sZGVyLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZXRpbWUtbG9jYWxcXFwiXTo6cGxhY2Vob2xkZXIge1xcbiAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dDpub3QoW3R5cGVdKTpkaXNhYmxlZCxcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcInRleHRcXFwiXTpkaXNhYmxlZCxcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcIm51bWJlclxcXCJdOmRpc2FibGVkLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwidGVsXFxcIl06ZGlzYWJsZWQsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJkYXRlXFxcIl06ZGlzYWJsZWQsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJkYXRldGltZS1sb2NhbFxcXCJdOmRpc2FibGVkIHtcXG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UyZTJlMjsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXQ6bm90KFt0eXBlXSk6ZGlzYWJsZWQsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJ0ZXh0XFxcIl06ZGlzYWJsZWQsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJudW1iZXJcXFwiXTpkaXNhYmxlZCxcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcInRlbFxcXCJdOmRpc2FibGVkLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZVxcXCJdOmRpc2FibGVkLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZXRpbWUtbG9jYWxcXFwiXTpkaXNhYmxlZCB7XFxuICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJkYXRlXFxcIl0ge1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICAgICAgICAgIGZsZXg6IDEgMSBhdXRvOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwicmFuZ2VcXFwiXSB7XFxuICAgIHBhZGRpbmc6IDA7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciB0ZXh0YXJlYSB7XFxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcXG4gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XFxuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcXG4gICAgaGVpZ2h0OiA0MHB4O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogOHB4O1xcbiAgICBib3JkZXItd2lkdGg6IDA7XFxuICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjZTJlMmUyOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciB0ZXh0YXJlYTpmb2N1cyB7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICMzZjUxYjU7XFxuICAgICAgb3V0bGluZTogbm9uZTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgdGV4dGFyZWE6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciB0ZXh0YXJlYTo6LW1vei1wbGFjZWhvbGRlciB7XFxuICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIHRleHRhcmVhOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIHRleHRhcmVhOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciB0ZXh0YXJlYTo6cGxhY2Vob2xkZXIge1xcbiAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciB0ZXh0YXJlYTpkaXNhYmxlZCB7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMmUyZTI7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIHRleHRhcmVhOmRpc2FibGVkIHtcXG4gICAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM4KTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1oZWFkZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gICAgZm9udC1zaXplOiAxMnB4O1xcbiAgICBmb250LWZhbWlseTogXFxcIlJvYm90b1xcXCIsIHNhbnMtc2VyaWY7XFxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTJlMmUyOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXBpbm5lZC1yaWdodC1oZWFkZXIge1xcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNlMmUyZTI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcGlubmVkLWxlZnQtaGVhZGVyIHtcXG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2UyZTJlMjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1oZWFkZXItcm93IHtcXG4gICAgYm9yZGVyOiBub25lOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJvdyB7XFxuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XFxuICAgIGJvcmRlci1jb2xvcjogI2UyZTJlMjtcXG4gICAgYm9yZGVyLXdpZHRoOiAwOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcm93Om5vdCguYWctcm93LWZpcnN0KSB7XFxuICAgICAgYm9yZGVyLXdpZHRoOiAxcHggMCAwOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcm93LmFnLXJvdy1sYXN0IHtcXG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaG9yaXpvbnRhbC1sZWZ0LXNwYWNlciB7XFxuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNlMmUyZTI7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ob3Jpem9udGFsLWxlZnQtc3BhY2VyLmFnLXNjcm9sbGVyLWNvcm5lciB7XFxuICAgICAgYm9yZGVyLXJpZ2h0OiBub25lOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWhvcml6b250YWwtcmlnaHQtc3BhY2VyIHtcXG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZTJlMmUyOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaG9yaXpvbnRhbC1yaWdodC1zcGFjZXIuYWctc2Nyb2xsZXItY29ybmVyIHtcXG4gICAgICBib3JkZXItbGVmdDogbm9uZTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1yb3ctaG92ZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLW51bWVyaWMtY2VsbCB7XFxuICAgIHRleHQtYWxpZ246IHJpZ2h0OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWhlYWRlci1jZWxsLWxhYmVsIC5hZy1oZWFkZXItaWNvbiB7XFxuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XFxuICAgIG9wYWNpdHk6IDAuODc7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaGVhZGVyLWNlbGwsXFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWhlYWRlci1ncm91cC1jZWxsIHtcXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gICAgYm9yZGVyLWNvbG9yOiAjZTJlMmUyO1xcbiAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDI0cHg7XFxuICAgIGJvcmRlci13aWR0aDogMDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWhlYWRlci1jZWxsLmFnLWhlYWRlci1jZWxsLW1vdmluZyxcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1oZWFkZXItZ3JvdXAtY2VsbC5hZy1oZWFkZXItY2VsbC1tb3Zpbmcge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjI7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1oZWFkZXItY2VsbDpub3QoLmFnLWhlYWRlci1ncm91cC1jZWxsLW5vLWdyb3VwKSxcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1oZWFkZXItZ3JvdXAtY2VsbDpub3QoLmFnLWhlYWRlci1ncm91cC1jZWxsLW5vLWdyb3VwKSB7XFxuICAgICAgYm9yZGVyLXRvcC13aWR0aDogMXB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWhlYWRlci1yb3c6Zmlyc3QtY2hpbGQgLmFnLWhlYWRlci1jZWxsLCAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWhlYWRlci1yb3c6Zmlyc3QtY2hpbGQgLmFnLWhlYWRlci1ncm91cC1jZWxsIHtcXG4gICAgYm9yZGVyLXRvcC13aWR0aDogMDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1oZWFkZXItZ3JvdXAtY2VsbDpub3QoLmFnLWNvbHVtbi1yZXNpemluZykgKyAuYWctaGVhZGVyLWdyb3VwLWNlbGw6aG92ZXIsIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaGVhZGVyLWdyb3VwLWNlbGw6bm90KC5hZy1jb2x1bW4tcmVzaXppbmcpICsgLmFnLWhlYWRlci1ncm91cC1jZWxsLmFnLWNvbHVtbi1yZXNpemluZyxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaGVhZGVyLWNlbGw6bm90KC5hZy1jb2x1bW4tcmVzaXppbmcpICsgLmFnLWhlYWRlci1jZWxsOmhvdmVyLFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1oZWFkZXItY2VsbDpub3QoLmFnLWNvbHVtbi1yZXNpemluZykgKyAuYWctaGVhZGVyLWNlbGwuYWctY29sdW1uLXJlc2l6aW5nLFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1oZWFkZXItZ3JvdXAtY2VsbDpmaXJzdC1vZi10eXBlOmhvdmVyLFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1oZWFkZXItZ3JvdXAtY2VsbDpmaXJzdC1vZi10eXBlLmFnLWNvbHVtbi1yZXNpemluZyxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaGVhZGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZTpob3ZlcixcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaGVhZGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZS5hZy1jb2x1bW4tcmVzaXppbmcge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmYyOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWhlYWRlci1jZWxsLXJlc2l6ZSB7XFxuICAgIGN1cnNvcjogY29sLXJlc2l6ZTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1oZWFkZXItc2VsZWN0LWFsbCB7XFxuICAgIG1hcmdpbi1yaWdodDogMjRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jZWxsIHtcXG4gICAgbGluZS1oZWlnaHQ6IDQ2cHg7XFxuICAgIHBhZGRpbmctbGVmdDogMjRweDtcXG4gICAgcGFkZGluZy1yaWdodDogMjRweDtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICAgIHBhZGRpbmctbGVmdDogMjNweDtcXG4gICAgcGFkZGluZy1yaWdodDogMjNweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1yb3ctZHJhZyB7XFxuICAgIGN1cnNvcjogbW92ZTtcXG4gICAgY3Vyc29yOiAtd2Via2l0LWdyYWI7XFxuICAgIGN1cnNvcjogZ3JhYjtcXG4gICAgbWluLXdpZHRoOiA0MnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJvdy1kcmFnZ2luZywgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1yb3ctZHJhZ2dpbmcgLmFnLXJvdy1kcmFnIHtcXG4gICAgY3Vyc29yOiBtb3ZlOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbHVtbi1kcmFnIHtcXG4gICAgY3Vyc29yOiBtb3ZlO1xcbiAgICBjdXJzb3I6IC13ZWJraXQtZ3JhYjtcXG4gICAgY3Vyc29yOiBncmFiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJvdy1kcmFnZ2luZyB7XFxuICAgIG9wYWNpdHk6IDAuNTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLWhhcy1mb2N1cyAuYWctY2VsbC1mb2N1czpub3QoLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQpLFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLWhhcy1mb2N1cyAuYWctY2VsbC1mb2N1cy5hZy1jZWxsLXJhbmdlLXNpbmdsZS1jZWxsLFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLWNlbGwtZm9jdXMuYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbC5hZy1jZWxsLXJhbmdlLWhhbmRsZSwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLWhhcy1mb2N1cyAuYWctY2VsbC1mb2N1czpub3QoLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQpLFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLWhhcy1mb2N1cyAuYWctY2VsbC1mb2N1cy5hZy1jZWxsLXJhbmdlLXNpbmdsZS1jZWxsLFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLWNlbGwtZm9jdXMuYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbC5hZy1jZWxsLXJhbmdlLWhhbmRsZSB7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICMzZjUxYjU7XFxuICAgIG91dGxpbmU6IGluaXRpYWw7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaGVhZGVyLWNlbGwtcmVzaXplIHtcXG4gICAgd2lkdGg6IDE2cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbWVudSB7XFxuICAgIGJhY2tncm91bmQ6ICNmZmY7XFxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7XFxuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbiAgICBwYWRkaW5nOiA4cHg7XFxuICAgIHBhZGRpbmc6IDA7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1tZW51IC5hZy1tZW51LWxpc3Qge1xcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XFxuICAgICAgbWFyZ2luLXRvcDogOHB4O1xcbiAgICAgIHdpZHRoOiAxMDAlOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbWVudSAuYWctbWVudS1vcHRpb24tYWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbWVudSAuYWctbWVudS1vcHRpb24tZGlzYWJsZWQge1xcbiAgICAgIG9wYWNpdHk6IDAuNTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLW1lbnUgLmFnLW1lbnUtb3B0aW9uLXRleHQge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1tZW51IC5hZy1tZW51LW9wdGlvbi1pY29uIHtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDhweDtcXG4gICAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7XFxuICAgICAgbWluLXdpZHRoOiAzNHB4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbWVudSAuYWctbWVudS1vcHRpb24tc2hvcnRjdXQge1xcbiAgICAgIHBhZGRpbmctbGVmdDogMTZweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLW1lbnUgLmFnLW1lbnUtc2VwYXJhdG9yIHtcXG4gICAgICBoZWlnaHQ6IDE2cHg7IH1cXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLW1lbnUgLmFnLW1lbnUtc2VwYXJhdG9yID4gc3BhbiB7XFxuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB3aWR0aCUzRCcxJyUyMGhlaWdodCUzRCcxNnB4JyUyMHZpZXdCb3glM0QnMCUyMDAlMjAxJTIwMTZweCclMjB4bWxucyUzRCdodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmcnJTNFJTNDbGluZSUyMHgxJTNEJzAnJTIweTElM0QnOHB4JyUyMHgyJTNEJzEnJTIweTIlM0QnOHB4JyUyMHN0cm9rZS13aWR0aCUzRCcxJyUyMHN0cm9rZSUzRCclMjNFMkUyRTInJTJGJTNFJTNDJTJGc3ZnJTNFXFxcIik7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1tZW51IC5hZy1tZW51LW9wdGlvbi1wb3B1cC1wb2ludGVyIHtcXG4gICAgICB3aWR0aDogMzRweDtcXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbC5hZy1kbmQtZ2hvc3Qge1xcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG4gICAgcGFkZGluZzogOHB4O1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTJlMmUyO1xcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gICAgZm9udC1zaXplOiAxMnB4O1xcbiAgICBmb250LWZhbWlseTogXFxcIlJvYm90b1xcXCIsIHNhbnMtc2VyaWY7XFxuICAgIGhlaWdodDogNTZweCAhaW1wb3J0YW50O1xcbiAgICBsaW5lLWhlaWdodDogNTZweDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBwYWRkaW5nOiAwIDE2cHg7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDE2cHgpO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxNnB4KTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwuYWctZG5kLWdob3N0IHNwYW4sXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbC5hZy1kbmQtZ2hvc3QgZGl2IHtcXG4gICAgICBoZWlnaHQ6IDEwMCU7XFxuICAgICAgbWFyZ2luOiAwO1xcbiAgICAgIHBhZGRpbmc6IDA7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsLmFnLWRuZC1naG9zdCAuYWctZG5kLWdob3N0LWljb24ge1xcbiAgICAgIG1hcmdpbi1yaWdodDogOHB4O1xcbiAgICAgIG9wYWNpdHk6IDAuODc7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdGFiLWhlYWRlciB7XFxuICAgIGJhY2tncm91bmQ6ICNlZWU7XFxuICAgIG1pbi13aWR0aDogMjIwcHg7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy10YWItaGVhZGVyIC5hZy10YWIge1xcbiAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgICAgIGhlaWdodDogMzJweDtcXG4gICAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgICAtbXMtZmxleDogbm9uZTtcXG4gICAgICAgICAgICAgIGZsZXg6IG5vbmU7XFxuICAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgICAgICAtbXMtZmxleDogMSAxIGF1dG87XFxuICAgICAgICAgICAgICBmbGV4OiAxIDEgYXV0bzsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy10YWItYm9keSB7XFxuICAgIHBhZGRpbmc6IDRweCAwOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdGFiLWJvZHkgLmFnLW1lbnUtbGlzdCB7XFxuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcXG4gICAgICBtYXJnaW4tdG9wOiAwOyB9XFxuICAgICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy10YWItYm9keSAuYWctbWVudS1saXN0ID4gZGl2OmZpcnN0LWNoaWxkID4gc3BhbiB7XFxuICAgICAgICBwYWRkaW5nLXRvcDogMDsgfVxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdGFiLWJvZHkgLmFnLW1lbnUtbGlzdCA+IGRpdjpsYXN0LWNoaWxkID4gc3BhbiB7XFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDsgfVxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdGFiLWJvZHkgLmFnLW1lbnUtbGlzdCA+IGRpdjpsYXN0LWNoaWxkID4gLmFnLW1lbnUtb3B0aW9uLXBvcHVwLXBvaW50ZXIge1xcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbi15OiAwOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWZpbHRlciAuYWctZmlsdGVyLXNlbGVjdCwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1maWx0ZXIgLmFnLWZpbHRlci1ib2R5IHtcXG4gICAgbWFyZ2luLWJvdHRvbTogOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWZpbHRlciAuYWctZmlsdGVyLWJvZHkge1xcbiAgICBtYXJnaW4tdG9wOiAwOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWZpbHRlciAuYWctZmlsdGVyLWZpbHRlciB7XFxuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XFxuICAgIG1hcmdpbi1yaWdodDogOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWZpbHRlciAuYWctZmlsdGVyLXNlbGVjdCB7XFxuICAgIG1hcmdpbjogOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWZpbHRlciBpbnB1dFt0eXBlPVxcXCJyYWRpb1xcXCJdIHtcXG4gICAgbWFyZ2luOiAwIDNweCAwIDZweDtcXG4gICAgd2lkdGg6IDEycHg7XFxuICAgIGhlaWdodDogMTdweDtcXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1maWx0ZXIgaW5wdXRbdHlwZT1cXFwidGV4dFxcXCJdLFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1maWx0ZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZVxcXCJdIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctZmlsdGVyIC5hZy1zZXQtZmlsdGVyLWxpc3Qge1xcbiAgICBoZWlnaHQ6IDI0MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWZpbHRlciAuYWctc2V0LWZpbHRlci1pdGVtIHtcXG4gICAgaGVpZ2h0OiA0MHB4O1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1maWx0ZXIgLmFnLXNldC1maWx0ZXItaXRlbSA+IGRpdiwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1maWx0ZXIgLmFnLXNldC1maWx0ZXItaXRlbSA+IHNwYW4ge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7XFxuICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgICAgZGlzcGxheTogZmxleDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1maWx0ZXIgLmFnLWZpbHRlci1oZWFkZXItY29udGFpbmVyOm50aC1jaGlsZCgyKSB7XFxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTJlMmUyOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWZpbHRlciAuYWctZmlsdGVyLWFwcGx5LXBhbmVsIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7XFxuICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7XFxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG4gICAgcGFkZGluZzogOHB4O1xcbiAgICBwYWRkaW5nLXRvcDogMTZweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWZpbHRlciAuYWctZmlsdGVyLWFwcGx5LXBhbmVsIGJ1dHRvbiB7XFxuICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcXG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XFxuICAgICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xcbiAgICAgICAgICAgICAgYXBwZWFyYW5jZTogbm9uZTtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgICBib3JkZXI6IDA7XFxuICAgICAgY29sb3I6ICMzZjUxYjU7XFxuICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XFxuICAgICAgZm9udC1zaXplOiBpbmhlcml0O1xcbiAgICAgIG1hcmdpbjogMDtcXG4gICAgICBwYWRkaW5nOiAwO1xcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1maWx0ZXIgLmFnLWZpbHRlci1hcHBseS1wYW5lbCBidXR0b24gKyBidXR0b24ge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAxNnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uIHtcXG4gICAgaGVpZ2h0OiAzMnB4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLWdyb3VwIC5hZy1jb2x1bW4tc2VsZWN0LWNoZWNrYm94LFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLWxhYmVsLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCAuYWctY29sdW1uLWdyb3VwLWljb25zLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbiAuYWctY29sdW1uLXNlbGVjdC1jaGVja2JveCxcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4gLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1sYWJlbCxcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4gLmFnLWNvbHVtbi1ncm91cC1pY29ucyB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDhweDtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1wcmltYXJ5LWNvbHMtbGlzdC1wYW5lbCB7XFxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTJlMmUyO1xcbiAgICBwYWRkaW5nLXRvcDogOHB4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctcHJpbWFyeS1jb2xzLWxpc3QtcGFuZWwgPiBkaXYge1xcbiAgICAgIGN1cnNvcjogcG9pbnRlcjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4uYWctdG9vbHBhbmVsLWFkZC1ncm91cC1pbmRlbnQge1xcbiAgICBtYXJnaW4tbGVmdDogMzRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1wcmltYXJ5LWNvbHMtaGVhZGVyLXBhbmVsIHtcXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlMmUyZTI7XFxuICAgIGhlaWdodDogNTZweDtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXByaW1hcnktY29scy1oZWFkZXItcGFuZWwgPiBkaXYge1xcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgICBtYXJnaW46IDAgOHB4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcHJpbWFyeS1jb2xzLWhlYWRlci1wYW5lbCAuYWctZmlsdGVyLWJvZHkge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7XFxuICAgICAgbWFyZ2luLXJpZ2h0OiA4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdG9vbC1wYW5lbC13cmFwcGVyIHtcXG4gICAgYm9yZGVyLXJpZ2h0OiAwOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1maWx0ZXItcGFuZWwge1xcbiAgICAgIHdpZHRoOiAxMDAlOyB9XFxuICAgICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWZpbHRlci1wYW5lbCAuYWctZmlsdGVyLXRvb2xwYW5lbC1pbnN0YW5jZSB7XFxuICAgICAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICAgICAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgICAgICAgIC1tcy1mbGV4OiBhdXRvO1xcbiAgICAgICAgICAgICAgICBmbGV4OiBhdXRvO1xcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG4gICAgICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgICAgICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgLW1zLWZsZXgtd3JhcDogbm93cmFwO1xcbiAgICAgICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICAtbXMtZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xcbiAgICAgICAgICAgIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDsgfVxcbiAgICAgICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWZpbHRlci1wYW5lbCAuYWctZmlsdGVyLXRvb2xwYW5lbC1pbnN0YW5jZSAuYWctZmlsdGVyLXRvb2xwYW5lbC1oZWFkZXIge1xcbiAgICAgICAgICBwYWRkaW5nOiAwIDVweDsgfVxcbiAgICAgICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctZmlsdGVyLXBhbmVsIC5hZy1maWx0ZXItdG9vbHBhbmVsLWluc3RhbmNlIC5hZy1maWx0ZXItdG9vbHBhbmVsLWhlYWRlciA+IGRpdiB7XFxuICAgICAgICAgICAgbWFyZ2luOiBhdXRvIDA7IH1cXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctZmlsdGVyLXBhbmVsIC5hZy1maWx0ZXItYm9keS13cmFwcGVyIHtcXG4gICAgICAgIHBhZGRpbmctdG9wOiA1cHg7IH1cXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctZmlsdGVyLXBhbmVsIC5hZy1maWx0ZXItYWlyIHtcXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMmUyZTI7XFxuICAgICAgICBib3JkZXItbGVmdDogMDtcXG4gICAgICAgIGJvcmRlci1yaWdodDogMDtcXG4gICAgICAgIHBhZGRpbmc6IDhweCAwOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1waXZvdC1tb2RlLXBhbmVsIHtcXG4gICAgICBoZWlnaHQ6IDU2cHg7XFxuICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgICAtbXMtZmxleDogbm9uZTtcXG4gICAgICAgICAgICAgIGZsZXg6IG5vbmU7IH1cXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctcGl2b3QtbW9kZS1wYW5lbCAuYWctcGl2b3QtbW9kZS1zZWxlY3Qge1xcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgICBtYXJnaW4tbGVmdDogOHB4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIHtcXG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UyZTJlMjtcXG4gICAgICBwYWRkaW5nLWJvdHRvbTogN3B4O1xcbiAgICAgIHBhZGRpbmctdG9wOiAwOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1jb2x1bW4tZHJvcCB7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMmUyZTI7XFxuICAgICAgcGFkZGluZzogOHB4IDA7XFxuICAgICAgcGFkZGluZy1ib3R0b206IDE2cHg7IH1cXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctY29sdW1uLWRyb3AgLmFnLWNvbHVtbi1kcm9wLWVtcHR5LW1lc3NhZ2Uge1xcbiAgICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7XFxuICAgICAgICBmb250LXdlaWdodDogNzAwO1xcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xcbiAgICAgICAgZm9udC1mYW1pbHk6IFxcXCJSb2JvdG9cXFwiLCBzYW5zLXNlcmlmO1xcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAzNHB4O1xcbiAgICAgICAgcGFkZGluZy1yaWdodDogOHB4O1xcbiAgICAgICAgbWFyZ2luLXRvcDogOHB4OyB9XFxuICAgICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWNvbHVtbi1kcm9wIC5hZy1jb2x1bW4tZHJvcC1saXN0IHtcXG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgICAgIG1hcmdpbi10b3A6IDhweDsgfVxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1jb2x1bW4tZHJvcCA+IGRpdiA+IDpmaXJzdC1jaGlsZCB7XFxuICAgICAgICBtYXJnaW4tbGVmdDogOHB4O1xcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA4cHg7IH1cXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctY29sdW1uLWRyb3A6bGFzdC1jaGlsZCB7XFxuICAgICAgICBib3JkZXItYm90dG9tOiAwOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLW51bWVyaWMtaGVhZGVyIC5hZy1oZWFkZXItY2VsbC1sYWJlbCAuYWctaGVhZGVyLWljb24ge1xcbiAgICBtYXJnaW4tbGVmdDogMDtcXG4gICAgbWFyZ2luLXJpZ2h0OiA4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcGFnaW5nLXBhbmVsIHtcXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlMmUyZTI7XFxuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xcbiAgICBoZWlnaHQ6IDU2cHg7XFxuICAgIHBhZGRpbmc6IDAgMjRweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXBhZ2luZy1wYW5lbCA+IHNwYW4ge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAzMnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXBhZ2luZy1wYWdlLXN1bW1hcnktcGFuZWwgLmFnLWljb24ge1xcbiAgICB3aWR0aDogMThweDtcXG4gICAgaGVpZ2h0OiAxOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXBhZ2luZy1wYWdlLXN1bW1hcnktcGFuZWwgLmFnLXBhZ2luZy1idXR0b24gYnV0dG9uIHtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgICB0b3A6IDA7XFxuICAgIHJpZ2h0OiAwO1xcbiAgICBib3R0b206IDA7XFxuICAgIGxlZnQ6IDA7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcGFnaW5nLXBhZ2Utc3VtbWFyeS1wYW5lbCAuYWctcGFnaW5nLWJ1dHRvbi5hZy1kaXNhYmxlZCAuYWctaWNvbiB7XFxuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xcbiAgICBvcGFjaXR5OiAwLjM4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXBhZ2luZy1wYWdlLXN1bW1hcnktcGFuZWwgLmFnLXBhZ2luZy1idXR0b24uYWctZGlzYWJsZWQgYnV0dG9uIHtcXG4gICAgY3Vyc29yOiBkZWZhdWx0OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXBhZ2luZy1wYWdlLXN1bW1hcnktcGFuZWwgc3BhbiB7XFxuICAgIG1hcmdpbjogMCA4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcm93LXNlbGVjdGVkIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwpLCAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkge1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkuYWctY2VsbC1yYW5nZS10b3AsIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQ6bm90KC5hZy1jZWxsLXJhbmdlLXNpbmdsZS1jZWxsKS5hZy1jZWxsLXJhbmdlLXRvcCB7XFxuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogIzNmNTFiNTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkuYWctY2VsbC1yYW5nZS1yaWdodCwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwpLmFnLWNlbGwtcmFuZ2UtcmlnaHQge1xcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogIzNmNTFiNTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkuYWctY2VsbC1yYW5nZS1ib3R0b20sIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQ6bm90KC5hZy1jZWxsLXJhbmdlLXNpbmdsZS1jZWxsKS5hZy1jZWxsLXJhbmdlLWJvdHRvbSB7XFxuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzNmNTFiNTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkuYWctY2VsbC1yYW5nZS1sZWZ0LCAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkuYWctY2VsbC1yYW5nZS1sZWZ0IHtcXG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogIzNmNTFiNTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1mb2N1cykge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEyMiwgMTM0LCAyMDMsIDAuMSk7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1mb2N1cykuYWctY2VsbC1yYW5nZS1jaGFydCB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCA4OCwgMjU1LCAwLjEpOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtZm9jdXMpLmFnLWNlbGwtcmFuZ2UtY2hhcnQuYWctY2VsbC1yYW5nZS1jaGFydC1jYXRlZ29yeSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAyNTUsIDEzMiwgMC4xKTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLTE6bm90KC5hZy1jZWxsLWZvY3VzKSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTIyLCAxMzQsIDIwMywgMC4yKTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLTI6bm90KC5hZy1jZWxsLWZvY3VzKSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTIyLCAxMzQsIDIwMywgMC4zKTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLTM6bm90KC5hZy1jZWxsLWZvY3VzKSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTIyLCAxMzQsIDIwMywgMC40KTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLTQ6bm90KC5hZy1jZWxsLWZvY3VzKSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTIyLCAxMzQsIDIwMywgMC41KTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXNlbGVjdGlvbi1maWxsLXRvcCwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1maWxsLXRvcCB7XFxuICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgIzNmNTFiNTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctc2VsZWN0aW9uLWZpbGwtdG9wLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZCwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1maWxsLXRvcC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQge1xcbiAgICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgI2FmYWZhZjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXNlbGVjdGlvbi1maWxsLXJpZ2h0LCAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWZpbGwtcmlnaHQge1xcbiAgICBib3JkZXItcmlnaHQ6IDFweCBkYXNoZWQgIzNmNTFiNTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctc2VsZWN0aW9uLWZpbGwtcmlnaHQuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLCAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWZpbGwtcmlnaHQuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkIHtcXG4gICAgICBib3JkZXItcmlnaHQ6IDFweCBkYXNoZWQgI2FmYWZhZjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXNlbGVjdGlvbi1maWxsLWJvdHRvbSwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1maWxsLWJvdHRvbSB7XFxuICAgIGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgIzNmNTFiNTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctc2VsZWN0aW9uLWZpbGwtYm90dG9tLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZCwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1maWxsLWJvdHRvbS5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQge1xcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgI2FmYWZhZjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXNlbGVjdGlvbi1maWxsLWxlZnQsIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1zZWxlY3Rpb24tZmlsbC1sZWZ0IHtcXG4gICAgYm9yZGVyLWxlZnQ6IDFweCBkYXNoZWQgIzNmNTFiNTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctc2VsZWN0aW9uLWZpbGwtbGVmdC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQsIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1zZWxlY3Rpb24tZmlsbC1sZWZ0LmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZCB7XFxuICAgICAgYm9yZGVyLWxlZnQ6IDFweCBkYXNoZWQgI2FmYWZhZjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1maWxsLWhhbmRsZSwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1yYW5nZS1oYW5kbGUge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHdpZHRoOiA2cHg7XFxuICAgIGhlaWdodDogNnB4O1xcbiAgICBib3R0b206IC0xcHg7XFxuICAgIHJpZ2h0OiAtMXB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Y1MWI1OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWZpbGwtaGFuZGxlIHtcXG4gICAgY3Vyc29yOiBjZWxsOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJhbmdlLWhhbmRsZSB7XFxuICAgIGN1cnNvcjogbndzZS1yZXNpemU7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2VsbC5hZy1jZWxsLWlubGluZS1lZGl0aW5nIHtcXG4gICAgcGFkZGluZzogMjRweDtcXG4gICAgaGVpZ2h0OiA3MnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNlbGwuYWctY2VsbC1pbmxpbmUtZWRpdGluZywgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jZWxsLmFnLXBvcHVwLWVkaXRvciB7XFxuICAgIGJhY2tncm91bmQ6ICNmZmY7XFxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7XFxuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbiAgICBwYWRkaW5nOiA4cHg7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcG9wdXAtZWRpdG9yIHtcXG4gICAgcGFkZGluZzogMDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXBvcHVwLWVkaXRvciAuYWctbGFyZ2UtdGV4dGFyZWEgdGV4dGFyZWEge1xcbiAgICAgIGhlaWdodDogYXV0bztcXG4gICAgICBwYWRkaW5nOiAyNHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJpY2gtc2VsZWN0IHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJpY2gtc2VsZWN0IC5hZy1yaWNoLXNlbGVjdC1saXN0IHtcXG4gICAgICB3aWR0aDogMjAwcHg7XFxuICAgICAgaGVpZ2h0OiAzMTJweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJpY2gtc2VsZWN0IC5hZy1yaWNoLXNlbGVjdC12YWx1ZSB7XFxuICAgICAgcGFkZGluZzogMCA4cHggMCAyNHB4O1xcbiAgICAgIGhlaWdodDogNDhweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJpY2gtc2VsZWN0IC5hZy12aXJ0dWFsLWxpc3QtaXRlbSB7XFxuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgICAgIGhlaWdodDogNDhweDsgfVxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcmljaC1zZWxlY3QgLmFnLXZpcnR1YWwtbGlzdC1pdGVtOmhvdmVyIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1yaWNoLXNlbGVjdCAuYWctcmljaC1zZWxlY3Qtcm93IHtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1yaWNoLXNlbGVjdCAuYWctcmljaC1zZWxlY3Qtcm93LXNlbGVjdGVkIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctZmxvYXRpbmctZmlsdGVyLWJ1dHRvbiB7XFxuICAgIG1hcmdpbi1sZWZ0OiAyNHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWZsb2F0aW5nLWZpbHRlci1idXR0b24gYnV0dG9uIHtcXG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xcbiAgICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XFxuICAgICAgICAgICAgYXBwZWFyYW5jZTogbm9uZTtcXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxuICAgIGJvcmRlcjogMDtcXG4gICAgaGVpZ2h0OiAxOHB4O1xcbiAgICBwYWRkaW5nOiAwO1xcbiAgICB3aWR0aDogMThweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1zZWxlY3Rpb24tY2hlY2tib3g6bm90KC5hZy1oaWRkZW4pIH4gLmFnLWNlbGwtdmFsdWU6bm90KDplbXB0eSksIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctc2VsZWN0aW9uLWNoZWNrYm94Om5vdCguYWctaGlkZGVuKSArIC5hZy1ncm91cC12YWx1ZTpub3QoOmVtcHR5KSxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctZ3JvdXAtZXhwYW5kZWQ6bm90KC5hZy1oaWRkZW4pIH4gLmFnLWNlbGwtdmFsdWU6bm90KDplbXB0eSksXFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWdyb3VwLWV4cGFuZGVkOm5vdCguYWctaGlkZGVuKSArIC5hZy1ncm91cC12YWx1ZTpub3QoOmVtcHR5KSxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctZ3JvdXAtY29udHJhY3RlZDpub3QoLmFnLWhpZGRlbikgfiAuYWctY2VsbC12YWx1ZTpub3QoOmVtcHR5KSxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctZ3JvdXAtY29udHJhY3RlZDpub3QoLmFnLWhpZGRlbikgKyAuYWctZ3JvdXAtdmFsdWU6bm90KDplbXB0eSksXFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWdyb3VwLWNoZWNrYm94Om5vdCguYWctaW52aXNpYmxlKSB+IC5hZy1jZWxsLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ncm91cC1jaGVja2JveDpub3QoLmFnLWludmlzaWJsZSkgKyAuYWctZ3JvdXAtdmFsdWU6bm90KDplbXB0eSkge1xcbiAgICBtYXJnaW4tbGVmdDogMjRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1zZWxlY3Rpb24tY2hlY2tib3g6bm90KC5hZy1oaWRkZW4pIH4gLmFnLWdyb3VwLWNoZWNrYm94LFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ncm91cC1leHBhbmRlZDpub3QoLmFnLWhpZGRlbikgfiAuYWctZ3JvdXAtY2hlY2tib3gsXFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWdyb3VwLWNvbnRyYWN0ZWQ6bm90KC5hZy1oaWRkZW4pIH4gLmFnLWdyb3VwLWNoZWNrYm94LFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ncm91cC1jaGVja2JveDpub3QoLmFnLWludmlzaWJsZSkgfiAuYWctZ3JvdXAtY2hlY2tib3gge1xcbiAgICBtYXJnaW4tbGVmdDogMjRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ncm91cC1jaGlsZC1jb3VudCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctc2VsZWN0aW9uLWNoZWNrYm94IHNwYW4ge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7XFxuICAgIGhlaWdodDogNDhweDtcXG4gICAgcGFkZGluZy1sZWZ0OiAyNHB4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCAuYWctaWNvbi1ncm91cCxcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIC5hZy1pY29uLXBpdm90IHtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDI0cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIC5hZy1pY29uLXNtYWxsLWxlZnQsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCAuYWctaWNvbi1zbWFsbC1yaWdodCB7XFxuICAgICAgbWFyZ2luOiAwIDhweDtcXG4gICAgICBvcGFjaXR5OiAwLjU0OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCAuYWctY29sdW1uLWRyb3AtZW1wdHktbWVzc2FnZSB7XFxuICAgICAgb3BhY2l0eTogMC4zODsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2x1bW4tZHJvcC1jZWxsIHtcXG4gICAgYmFja2dyb3VuZDogI2UyZTJlMjtcXG4gICAgYm9yZGVyLXJhZGl1czogMzJweDtcXG4gICAgbWluLWhlaWdodDogMzJweDtcXG4gICAgcGFkZGluZzogMCA0cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2x1bW4tZHJvcC1jZWxsIC5hZy1jb2x1bW4tZHJvcC1jZWxsLXRleHQge1xcbiAgICAgIG1hcmdpbjogMCA4cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2x1bW4tZHJvcC1jZWxsIC5hZy1jb2x1bW4tZHJvcC1jZWxsLWJ1dHRvbiB7XFxuICAgICAgbWluLXdpZHRoOiAzMnB4O1xcbiAgICAgIG1hcmdpbjogMCA0cHg7XFxuICAgICAgb3BhY2l0eTogMC41NDsgfVxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sdW1uLWRyb3AtY2VsbCAuYWctY29sdW1uLWRyb3AtY2VsbC1idXR0b246aG92ZXIge1xcbiAgICAgICAgb3BhY2l0eTogMC44NzsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbHVtbi1kcm9wLWNlbGwgLmFnLWNvbHVtbi1kcmFnIHtcXG4gICAgICBtYXJnaW4tbGVmdDogMTZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2x1bW4tZHJvcC12ZXJ0aWNhbCAuYWctY29sdW1uLWRyb3AtY2VsbCB7XFxuICAgIG1hcmdpbi10b3A6IDhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1zZWxlY3QtYWdnLWZ1bmMtcG9wdXAge1xcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG4gICAgcGFkZGluZzogOHB4O1xcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xcbiAgICBoZWlnaHQ6IDE0MHB4O1xcbiAgICBwYWRkaW5nOiAwOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctc2VsZWN0LWFnZy1mdW5jLXBvcHVwIC5hZy12aXJ0dWFsLWxpc3QtaXRlbSB7XFxuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xcbiAgICAgIHBhZGRpbmctbGVmdDogMTZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1zZXQtZmlsdGVyLWxpc3QsXFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLW1lbnUtY29sdW1uLXNlbGVjdC13cmFwcGVyIHtcXG4gICAgd2lkdGg6IGF1dG87IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sdW1uLWRyb3AtdmVydGljYWwgPiAuYWctY29sdW1uLWRyb3AtY2VsbCB7XFxuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XFxuICAgIG1hcmdpbi10b3A6IDA7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2VsbC1kYXRhLWNoYW5nZWQge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBhY2MxICFpbXBvcnRhbnQ7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2VsbC1kYXRhLWNoYW5nZWQtYW5pbWF0aW9uIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxcztcXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxczsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1zdHViLWNlbGwge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7XFxuICAgIHBhZGRpbmctdG9wOiA4cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1zdHViLWNlbGwgLmFnLWxvYWRpbmctaWNvbiB7XFxuICAgICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogc3BpbjtcXG4gICAgICAgICAgICAgIGFuaW1hdGlvbi1uYW1lOiBzcGluO1xcbiAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAxMDAwbXM7XFxuICAgICAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDEwMDBtcztcXG4gICAgICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xcbiAgICAgICAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XFxuICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XFxuICAgICAgICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7IH1cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgc3BpbiB7XFxuICBmcm9tIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxcbiAgdG8ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfSB9XFxuXFxuQGtleWZyYW1lcyBzcGluIHtcXG4gIGZyb20ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9XFxuICB0byB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1zdHViLWNlbGwgLmFnLWxvYWRpbmctdGV4dCB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDhweDtcXG4gICAgICBtYXJnaW4tdG9wOiA4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctZmxvYXRpbmctdG9wIHtcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMmUyZTI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctZmxvYXRpbmctYm90dG9tIHtcXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlMmUyZTI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctc3RhdHVzLWJhciB7XFxuICAgIGJhY2tncm91bmQ6ICNmZmY7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMmUyZTI7XFxuICAgIGJvcmRlci10b3Atd2lkdGg6IDA7XFxuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xcbiAgICBmb250LXdlaWdodDogNzAwO1xcbiAgICBmb250LXNpemU6IDEycHg7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiUm9ib3RvXFxcIiwgc2Fucy1zZXJpZjtcXG4gICAgcGFkZGluZy1yaWdodDogMzJweDtcXG4gICAgcGFkZGluZy1sZWZ0OiAzMnB4O1xcbiAgICBsaW5lLWhlaWdodDogMS41OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLW5hbWUtdmFsdWUtdmFsdWUge1xcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1zdGF0dXMtYmFyLWNlbnRlciB7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1uYW1lLXZhbHVlIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcXG4gICAgbWFyZ2luLXJpZ2h0OiA4cHg7XFxuICAgIHBhZGRpbmctdG9wOiAxNnB4O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMTZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1kZXRhaWxzLXJvdyB7XFxuICAgIHBhZGRpbmc6IDQwcHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctb3ZlcmxheS1sb2FkaW5nLXdyYXBwZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctb3ZlcmxheS1sb2FkaW5nLWNlbnRlciB7XFxuICAgIGJhY2tncm91bmQ6ICNmZmY7XFxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7XFxuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbiAgICBwYWRkaW5nOiA4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctc2lkZS1iYXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTJlMmUyO1xcbiAgICBib3JkZXItbGVmdC13aWR0aDogMDtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctc2lkZS1iYXIgLmFnLXNpZGUtYnV0dG9ucyB7XFxuICAgICAgcGFkZGluZy10b3A6IDMycHg7XFxuICAgICAgYmFja2dyb3VuZDogI2ZmZjtcXG4gICAgICB3aWR0aDogMjJweDtcXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXNpZGUtYmFyIC5hZy1zaWRlLWJ1dHRvbnMgLmFnLXNpZGUtYnV0dG9uIGJ1dHRvbiB7XFxuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gICAgICAgIGJvcmRlcjogMDtcXG4gICAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xcbiAgICAgICAgcGFkZGluZzogMTZweCAwIDE2cHggMDtcXG4gICAgICAgIHdpZHRoOiAxMDAlO1xcbiAgICAgICAgbWFyZ2luOiAwO1xcbiAgICAgICAgbWluLWhlaWdodDogMTQ0cHg7XFxuICAgICAgICBib3JkZXItd2lkdGg6IDFweCAwIDFweCAwO1xcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IGNlbnRlcjtcXG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb24teDogY2VudGVyO1xcbiAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsgfVxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctc2lkZS1iYXIgLmFnLXNpZGUtYnV0dG9ucyAuYWctc2VsZWN0ZWQgYnV0dG9uIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XFxuICAgICAgICBtYXJnaW4tbGVmdDogLTFweDtcXG4gICAgICAgIHBhZGRpbmctbGVmdDogMXB4O1xcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjZTJlMmUyOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctc2lkZS1iYXIgLmFnLXBhbmVsLWNvbnRhaW5lciB7XFxuICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2UyZTJlMjsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXNpZGUtYmFyLmZ1bGwtd2lkdGggLmFnLXBhbmVsLWNvbnRhaW5lciB7XFxuICAgICAgYm9yZGVyLXJpZ2h0OiAwOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctc2lkZS1iYXIgLmFnLWNvbHVtbi1kcm9wIHtcXG4gICAgICBtaW4taGVpZ2h0OiA1MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXByaW1hcnktY29scy1maWx0ZXItd3JhcHBlciB7XFxuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XFxuICAgIG1hcmdpbi1yaWdodDogOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWdyb3VwLWNvbXBvbmVudCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZGZkZmQ7XFxuICAgIHBhZGRpbmc6IDBweDtcXG4gICAgYm9yZGVyOiAwIHNvbGlkICNlZmVmZWY7XFxuICAgIGJvcmRlci10b3Atd2lkdGg6IDFweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWdyb3VwLWNvbXBvbmVudC5hZy1kaXNhYmxlZCA+IC5hZy1ncm91cC1jb21wb25lbnQtbGFiZWwgLmFnLWdyb3VwLWNvbXBvbmVudC10aXRsZSwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ncm91cC1jb21wb25lbnQuYWctZGlzYWJsZWQgPiAuYWctZ3JvdXAtY29tcG9uZW50LWNvbnRhaW5lciB7XFxuICAgICAgb3BhY2l0eTogMC41OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctZ3JvdXAtY29tcG9uZW50IC5hZy1ncm91cC1jb21wb25lbnQtdGl0bGUtYmFyIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwO1xcbiAgICAgIGhlaWdodDogMThweDtcXG4gICAgICBmb250LXNpemU6IDEzcHg7XFxuICAgICAgZm9udC1mYW1pbHk6IFxcXCJSb2JvdG9cXFwiLCBzYW5zLXNlcmlmO1xcbiAgICAgIGhlaWdodDogMjZweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWdyb3VwLWNvbXBvbmVudDpub3QoLmFnLWNvbGxhcHNpYmxlKSA+IGRpdiB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDA7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ncm91cC1jb21wb25lbnQ6bm90KC5hZy1jb2xsYXBzaWJsZSkgPiAuYWctZ3JvdXAtY29tcG9uZW50LXRpdGxlLWJhciB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDA7XFxuICAgICAgcGFkZGluZzogOHB4OyB9XFxuICAgICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ncm91cC1jb21wb25lbnQ6bm90KC5hZy1jb2xsYXBzaWJsZSkgPiAuYWctZ3JvdXAtY29tcG9uZW50LXRpdGxlLWJhciAuYWctY29sdW1uLWdyb3VwLWljb25zIHtcXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ncm91cC1jb21wb25lbnQgLmFnLWdyb3VwLWNvbXBvbmVudC10b29sYmFyIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3O1xcbiAgICAgIHBhZGRpbmc6IDhweDtcXG4gICAgICBib3JkZXI6IDAgc29saWQgI2UyZTJlMjsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWdyb3VwLWNvbXBvbmVudCA+IC5hZy1ncm91cC1jb21wb25lbnQtY29udGFpbmVyIHtcXG4gICAgICBtYXJnaW4tbGVmdDogMTZweDtcXG4gICAgICBwYWRkaW5nOiA4cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ncm91cC1jb21wb25lbnQgLmFnLWdyb3VwLWl0ZW0ge1xcbiAgICAgIG1hcmdpbjogNHB4IDA7IH1cXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWdyb3VwLWNvbXBvbmVudCAuYWctZ3JvdXAtaXRlbSAuYWctZ3JvdXAtY29tcG9uZW50LXRpdGxlLWJhciB7XFxuICAgICAgICBoZWlnaHQ6IDE4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbGFiZWxlZCBsYWJlbCB7XFxuICAgIG1hcmdpbi1yaWdodDogOHB4O1xcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWxhYmVsZWQuYWctbGFiZWwtYWxpZ24tdG9wIGxhYmVsIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogNHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXNsaWRlciA+IC5hZy13cmFwcGVyID4gZGl2Om5vdCg6Zmlyc3Qtb2YtdHlwZSksIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctYW5nbGUtc2VsZWN0ID4gLmFnLXdyYXBwZXIgPiBkaXY6bm90KDpmaXJzdC1vZi10eXBlKSB7XFxuICAgIG1hcmdpbi1sZWZ0OiAxNnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWFuZ2xlLXNlbGVjdCAuYWctYW5nbGUtc2VsZWN0LWZpZWxkIC5hZy1wYXJlbnQtY2lyY2xlIHtcXG4gICAgd2lkdGg6IDI0cHg7XFxuICAgIGhlaWdodDogMjRweDtcXG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMnB4IHJnYmEoMCwgMCwgMCwgMC45KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMnB4IHJnYmEoMCwgMCwgMCwgMC45KTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1hbmdsZS1zZWxlY3QgLmFnLWFuZ2xlLXNlbGVjdC1maWVsZCAuYWctY2hpbGQtY2lyY2xlIHtcXG4gICAgdG9wOiA0cHg7XFxuICAgIGxlZnQ6IDEycHg7XFxuICAgIHdpZHRoOiA2cHg7XFxuICAgIGhlaWdodDogNnB4O1xcbiAgICBtYXJnaW4tbGVmdDogLTNweDtcXG4gICAgbWFyZ2luLXRvcDogLTRweDtcXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGM0YzRjOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXRvZ2dsZS1idXR0b24gLmFnLWlucHV0LXdyYXBwZXIge1xcbiAgICBoZWlnaHQ6IDE4cHg7XFxuICAgIHdpZHRoOiA0MHB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjMzMzO1xcbiAgICBib3JkZXItcmFkaXVzOiA1MDByZW07IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy10b2dnbGUtYnV0dG9uIC5hZy1pbnB1dC13cmFwcGVyIC5hZy1pY29uIHtcXG4gICAgICB3aWR0aDogMThweDtcXG4gICAgICBoZWlnaHQ6IDE4cHg7XFxuICAgICAgYm9yZGVyOiAxcHggc29saWQgIzMzMztcXG4gICAgICBib3JkZXItcmFkaXVzOiA1MDByZW07XFxuICAgICAgcmlnaHQ6IGNhbGMoMTAwJSAtIDE4cHgpOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXRvZ2dsZS1idXR0b24uYWctc2VsZWN0ZWQgLmFnLWlucHV0LXdyYXBwZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY0MDgxOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdG9nZ2xlLWJ1dHRvbi5hZy1zZWxlY3RlZCAuYWctaW5wdXQtd3JhcHBlciAuYWctaWNvbiB7XFxuICAgICAgYmFja2dyb3VuZDogI2ZmZjtcXG4gICAgICByaWdodDogLTFweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2xvci1waWNrZXIgPiAuYWctd3JhcHBlciB7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMmUyZTI7XFxuICAgIGJvcmRlci1yYWRpdXM6IDVweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbG9yLXBpY2tlciA+IC5hZy13cmFwcGVyID4gZGl2IHtcXG4gICAgICB3aWR0aDogMThweDtcXG4gICAgICBoZWlnaHQ6IDE4cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2xvci1waWNrZXIgPiAuYWctd3JhcHBlciBidXR0b24ge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2xvci1waWNrZXIgPiAuYWctd3JhcHBlciBidXR0b246aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctZGlhbG9nLmFnLWNvbG9yLWRpYWxvZyB7XFxuICAgIGJvcmRlci1yYWRpdXM6IDVweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2xvci1wYW5lbCB7XFxuICAgIHBhZGRpbmc6IDhweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1jb2xvciB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkO1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS10b29scyB7XFxuICAgICAgcGFkZGluZzogMTBweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1zYXQge1xcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgcmlnaHQgdG9wLCBmcm9tKHdoaXRlKSwgdG8ocmdiYSgyMDQsIDE1NCwgMTI5LCAwKSkpO1xcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgd2hpdGUsIHJnYmEoMjA0LCAxNTQsIDEyOSwgMCkpOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLXZhbCB7XFxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgYm90dG9tLCBsZWZ0IHRvcCwgZnJvbShibGFjayksIHRvKHJnYmEoMjA0LCAxNTQsIDEyOSwgMCkpKTtcXG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCBibGFjaywgcmdiYSgyMDQsIDE1NCwgMTI5LCAwKSk7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2xvci1wYW5lbCAuYWctc3BlY3RydW0tZHJhZ2dlciB7XFxuICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcXG4gICAgICBoZWlnaHQ6IDEycHg7XFxuICAgICAgd2lkdGg6IDEycHg7XFxuICAgICAgYm9yZGVyOiAxcHggc29saWQgd2hpdGU7XFxuICAgICAgYmFja2dyb3VuZDogYmxhY2s7XFxuICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMjQpO1xcbiAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjI0KTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1odWUtYmFja2dyb3VuZCB7XFxuICAgICAgYm9yZGVyLXJhZGl1czogMnB4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLWFscGhhLWJhY2tncm91bmQge1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbG9yLXBhbmVsIC5hZy1odWUtYWxwaGEge1xcbiAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XFxuICAgICAgaGVpZ2h0OiAxMXB4O1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1zbGlkZXIge1xcbiAgICAgIG1hcmdpbi10b3A6IC0xMnB4O1xcbiAgICAgIHdpZHRoOiAxM3B4O1xcbiAgICAgIGhlaWdodDogMTNweDtcXG4gICAgICBib3JkZXItcmFkaXVzOiAxM3B4O1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGY4Zjg7XFxuICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMzcpO1xcbiAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjM3KTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS10ZXh0LXZhbHVlIHtcXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcXG4gICAgICBsaW5lLWhlaWdodDogMjBweDtcXG4gICAgICBjb2xvcjogIzMzMzsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS10ZXh0LXZhbHVlOmZvY3VzIHtcXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjMGQ3N2U0O1xcbiAgICAgIHBhZGRpbmc6IDJweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbG9yLXBhbmVsIC5hZy1yZWNlbnQtY29sb3JzID4gZGl2IHtcXG4gICAgICBtYXJnaW46IDAgM3B4OyB9XFxuICAgICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2xvci1wYW5lbCAuYWctcmVjZW50LWNvbG9ycyA+IGRpdjpmaXJzdC1jaGlsZCB7XFxuICAgICAgICBtYXJnaW4tbGVmdDogMDsgfVxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sb3ItcGFuZWwgLmFnLXJlY2VudC1jb2xvcnMgPiBkaXY6bGFzdC1jaGlsZCB7XFxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbC5hZy1wb3B1cCA+IGRpdjpub3QoLmFnLXRvb2x0aXAtY3VzdG9tKSB7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogNXB4IDVweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiA1cHggNXB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjMpOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXBhbmVsIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2UyZTJlMjsgfVxcbiAgICAuYWctZHJhZ2dpbmctcmFuZ2UtaGFuZGxlIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcGFuZWwuYWctZGlhbG9nLCAuYWctZHJhZ2dpbmctZmlsbC1oYW5kbGUgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1wYW5lbC5hZy1kaWFsb2cge1xcbiAgICAgIG9wYWNpdHk6IDAuNztcXG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXBhbmVsIC5hZy10aXRsZS1iYXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmY2ZjZmM7XFxuICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XFxuICAgICAgaGVpZ2h0OiA1NnB4O1xcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcXG4gICAgICBmb250LXdlaWdodDogNzAwO1xcbiAgICAgIGZvbnQtZmFtaWx5OiBcXFwiUm9ib3RvXFxcIiwgc2Fucy1zZXJpZjtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7XFxuICAgICAgcGFkZGluZzogNXB4IDEwcHg7IH1cXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXBhbmVsIC5hZy10aXRsZS1iYXIgLmFnLXRpdGxlLWJhci1idXR0b25zIC5hZy1idXR0b24ge1xcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xcbiAgICAgICAgd2lkdGg6IDIwcHg7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7IH1cXG4gICAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcGFuZWwgLmFnLXRpdGxlLWJhciAuYWctdGl0bGUtYmFyLWJ1dHRvbnMgLmFnLWJ1dHRvbiAuYWctaWNvbiB7XFxuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xcbiAgICAgICAgICBmb250LXNpemU6IDIwcHg7IH1cXG4gICAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcGFuZWwgLmFnLXRpdGxlLWJhciAuYWctdGl0bGUtYmFyLWJ1dHRvbnMgLmFnLWJ1dHRvbjpob3ZlciwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1wYW5lbCAuYWctdGl0bGUtYmFyIC5hZy10aXRsZS1iYXItYnV0dG9ucyAuYWctYnV0dG9uLmFnLWhhcy1wb3B1cCB7XFxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7IH1cXG4gICAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcGFuZWwgLmFnLXRpdGxlLWJhciAuYWctdGl0bGUtYmFyLWJ1dHRvbnMgLmFnLWJ1dHRvbjpub3QoOmxhc3QtY2hpbGQpIHtcXG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1wYW5lbCAuYWctbWVzc2FnZS1ib3ggLmFnLW1lc3NhZ2UtYm94LWJ1dHRvbi1iYXIge1xcbiAgICAgIGhlaWdodDogMzBweDtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbiAgICAgIHBhZGRpbmc6IDJweDsgfVxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcGFuZWwgLmFnLW1lc3NhZ2UtYm94IC5hZy1tZXNzYWdlLWJveC1idXR0b24tYmFyIGJ1dHRvbiB7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdG9vbHRpcCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICM1MzUzNTM7XFxuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgIHBhZGRpbmc6IDVweDtcXG4gICAgYm9yZGVyLXdpZHRoOiAxcHg7XFxuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XFxuICAgIGJvcmRlci1jb2xvcjogI2ViZWJlYjtcXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDFzO1xcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDFzOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdG9vbHRpcC5hZy10b29sdGlwLWhpZGluZyB7XFxuICAgICAgb3BhY2l0eTogMDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jaGFydCAuYWctY2hhcnQtbWVudSB7XFxuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcXG4gICAgYmFja2dyb3VuZDogI2ZmZjsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNoYXJ0IC5hZy1jaGFydC1tZW51ID4gc3Bhbjpob3ZlciB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktd3JhcHBlciAuYWctZ3JvdXAtY29tcG9uZW50LWNvbnRhaW5lciB7XFxuICAgIG1hcmdpbi1sZWZ0OiAwOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS13cmFwcGVyIC5hZy1jaGFydC1taW5pLXRodW1ibmFpbCB7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMmUyZTI7XFxuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcXG4gICAgbWFyZ2luOiA1cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktd3JhcHBlciAuYWctY2hhcnQtbWluaS10aHVtYm5haWw6bnRoLWNoaWxkKDJuICsgMik6bm90KDpsYXN0LWNoaWxkKSB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy1taW5pLXdyYXBwZXIgLmFnLWNoYXJ0LW1pbmktdGh1bWJuYWlsOm50aC1jaGlsZCgzbiArIDEpIHtcXG4gICAgICBtYXJnaW4tbGVmdDogMnB4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy1taW5pLXdyYXBwZXIgLmFnLWNoYXJ0LW1pbmktdGh1bWJuYWlsOm50aC1jaGlsZCgzbikge1xcbiAgICAgIG1hcmdpbi1yaWdodDogMnB4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy1taW5pLXdyYXBwZXIgLmFnLWNoYXJ0LW1pbmktdGh1bWJuYWlsLmFnLXNlbGVjdGVkIHtcXG4gICAgICBib3JkZXItY29sb3I6ICMzZjUxYjU7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy1uYXYtYmFyIC5hZy1uYXYtY2FyZC1zZWxlY3RvciAuYWctbmF2LWNhcmQtaXRlbSB7XFxuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xcbiAgICBmb250LXNpemU6IDExcHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLW5hdi1iYXIgLmFnLW5hdi1jYXJkLXNlbGVjdG9yIC5hZy1uYXYtY2FyZC1pdGVtLmFnLXNlbGVjdGVkIHtcXG4gICAgICBjb2xvcjogIzNmNTFiNTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtZm9ybWF0IC5hZy1jaGFydC1mb3JtYXQtd3JhcHBlciAuYWctZ3JvdXAtaXRlbSB7XFxuICAgIG1hcmdpbjogOS42cHggMDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uIHtcXG4gICAgLyogdXNlICFpbXBvcnRhbnQgdG8gcHJldmVudCBpc3N1ZXMgd2l0aCBicm93c2VyIGV4dGVuc2lvbnMgdGhhdCBjaGFuZ2UgZm9udHMgKi9cXG4gICAgZm9udC1mYW1pbHk6IFxcXCJhZ0dyaWRNYXRlcmlhbFxcXCI7XFxuICAgIHNwZWFrOiBub25lO1xcbiAgICBmb250LXNpemU6IDE4cHg7XFxuICAgIGNvbG9yOiAjMzMzO1xcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XFxuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcXG4gICAgLyogQmV0dGVyIEZvbnQgUmVuZGVyaW5nID09PT09PT09PT09ICovXFxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tYWdncmVnYXRpb246YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTAwXFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLWFycm93czpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MDFcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tYXNjOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwMlxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jYW5jZWw6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTAzXFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLWNoYXJ0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwNFxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jaGVja2JveC1jaGVja2VkOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwNVxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jaGVja2JveC1pbmRldGVybWluYXRlOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwNlxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jaGVja2JveC11bmNoZWNrZWQ6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTA3XFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLWNvbG9yLXBpY2tlcjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MDhcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tY29sdW1uOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwOVxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jb2x1bW5zOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwQVxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jb250cmFjdGVkOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwQlxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jb3B5OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwQ1xcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jcm9zczpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MERcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tY3V0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwRVxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1kYXRhOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwRlxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1kZXNjOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxMFxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1leHBhbmRlZDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MTFcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tZXllLXNsYXNoOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxMlxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1leWU6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTEzXFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLWZpbHRlcjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MTRcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tZmlyc3Q6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTE1XFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLWdyaXA6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTE2XFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLWdyb3VwOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxN1xcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1pbmRldGVybWluYXRlOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxOFxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1sYXN0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxOVxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1sZWZ0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxQVxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1sb2FkaW5nOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxQlxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1tYXhpbWl6ZTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MUNcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tbWVudTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MURcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tbWluaW1pemU6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTFFXFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLW1pbnVzOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxRlxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1uZXh0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyMFxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1ub25lOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyMVxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1ub3QtYWxsb3dlZDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MjJcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tcGFzdGU6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTIzXFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLXBpbjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MjRcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tcGl2b3Q6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTI1XFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLXBsdXM6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTI2XFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLXByZXZpb3VzOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyN1xcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1yYWRpby1idXR0b24tb2ZmOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyOFxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1yYWRpby1idXR0b24tb246YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTI5XFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLXJpZ2h0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyQVxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1zYXZlOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyQlxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1zbWFsbC1kb3duOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyQ1xcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1zbWFsbC1sZWZ0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyRFxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1zbWFsbC1yaWdodDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MkVcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tc21hbGwtdXA6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTJGXFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLXRpY2s6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTMwXFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLXRyZWUtY2xvc2VkOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkzMVxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi10cmVlLWluZGV0ZXJtaW5hdGU6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTMyXFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLXRyZWUtb3BlbjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MzNcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tY2hlY2tib3gtY2hlY2tlZCxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jaGVja2JveC1pbmRldGVybWluYXRlLFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLWNoZWNrYm94LXVuY2hlY2tlZCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICBsaW5lLWhlaWdodDogMThweDtcXG4gICAgYm9yZGVyLXJhZGl1czogM3B4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jaGVja2JveC1jaGVja2VkLXJlYWRvbmx5LFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1yZWFkb25seSxcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLWNoZWNrYm94LXVuY2hlY2tlZC1yZWFkb25seSB7XFxuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgICAgIG9wYWNpdHk6IDAuMzg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jaGVja2JveC1jaGVja2VkIHtcXG4gICAgY29sb3I6ICNmZjQwODE7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLWNoZWNrYm94LWNoZWNrZWQtcmVhZG9ubHk6YmVmb3JlIHtcXG4gICAgICBjb250ZW50OiBcXFwiXFxcXEU5MDVcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1yZWFkb25seTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MDZcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tY2hlY2tib3gtdW5jaGVja2VkLXJlYWRvbmx5OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwN1xcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctZ3JvdXAtZXhwYW5kZWQgLmFnLWljb24tY29udHJhY3RlZDplbXB0eTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MzNcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tcm93LWRyYWc6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTE2XFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1yaWdodC1hcnJvdzpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MUFcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tcmFkaW8tYnV0dG9uLW9uIHtcXG4gICAgY29sb3I6ICNmZjQwODE7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcmlnaHQtYXJyb3c6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTJBXFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwge1xcbiAgICB0ZXh0LWFsaWduOiByaWdodDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctbnVtZXJpYy1jZWxsIHtcXG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1jaGVja2JveDpub3QoLmFnLWxhYmVsLWFsaWduLWxlZnQpIGxhYmVsLCAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcmFkaW8tYnV0dG9uOm5vdCguYWctbGFiZWwtYWxpZ24tbGVmdCkgbGFiZWwsIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy10b2dnbGUtYnV0dG9uOm5vdCguYWctbGFiZWwtYWxpZ24tbGVmdCkgbGFiZWwge1xcbiAgICAgIG1hcmdpbi1yaWdodDogOHB4O1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAwOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLXBpdm90LW1vZGUtcGFuZWwgLmFnLXBpdm90LW1vZGUtc2VsZWN0IHtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDhweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1jb2x1bW4tZHJvcCAuYWctY29sdW1uLWRyb3AtZW1wdHktbWVzc2FnZSB7XFxuICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7XFxuICAgICAgcGFkZGluZy1yaWdodDogMzJweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLWdyb3VwIC5hZy1jb2x1bW4tc2VsZWN0LWNoZWNrYm94LFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLWdyb3VwIC5hZy1jb2x1bW4tZ3JvdXAtaWNvbnMsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4gLmFnLWNvbHVtbi1zZWxlY3QtY2hlY2tib3gsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4gLmFnLWNvbHVtbi1ncm91cC1pY29ucyB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDhweDtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDhweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLmFnLXRvb2xwYW5lbC1hZGQtZ3JvdXAtaW5kZW50IHtcXG4gICAgICBtYXJnaW4tbGVmdDogMDtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDM0cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLWhlYWRlci1zZWxlY3QtYWxsIHtcXG4gICAgICBtYXJnaW4tbGVmdDogMjRweDtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1jaGVja2JveCxcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLWdyb3VwLWNoZWNrYm94LFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctZ3JvdXAtZXhwYW5kZWQsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1ncm91cC1jb250cmFjdGVkIHtcXG4gICAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7XFxuICAgICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94O1xcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyB9XFxuICAgICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1jaGVja2JveCArIC5hZy1jZWxsLXZhbHVlOm5vdCg6ZW1wdHkpLCAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWNoZWNrYm94ICsgLmFnLWdyb3VwLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1ncm91cC1jaGVja2JveCArIC5hZy1jZWxsLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1ncm91cC1jaGVja2JveCArIC5hZy1ncm91cC12YWx1ZTpub3QoOmVtcHR5KSxcXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctZ3JvdXAtZXhwYW5kZWQgKyAuYWctY2VsbC12YWx1ZTpub3QoOmVtcHR5KSxcXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctZ3JvdXAtZXhwYW5kZWQgKyAuYWctZ3JvdXAtdmFsdWU6bm90KDplbXB0eSksXFxuICAgICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLWdyb3VwLWNvbnRyYWN0ZWQgKyAuYWctY2VsbC12YWx1ZTpub3QoOmVtcHR5KSxcXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctZ3JvdXAtY29udHJhY3RlZCArIC5hZy1ncm91cC12YWx1ZTpub3QoOmVtcHR5KSB7XFxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDI0cHg7XFxuICAgICAgICBtYXJnaW4tbGVmdDogaW5pdGlhbDsgfVxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1zZWxlY3Rpb24tY2hlY2tib3ggKyAuYWctZ3JvdXAtY2hlY2tib3gsXFxuICAgICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLWdyb3VwLWNoZWNrYm94ICsgLmFnLWdyb3VwLWNoZWNrYm94LFxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1ncm91cC1leHBhbmRlZCArIC5hZy1ncm91cC1jaGVja2JveCxcXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctZ3JvdXAtY29udHJhY3RlZCArIC5hZy1ncm91cC1jaGVja2JveCB7XFxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDI0cHg7XFxuICAgICAgICBtYXJnaW4tbGVmdDogaW5pdGlhbDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctZ3JvdXAtY2hpbGQtY291bnQge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiB1bnNldDtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDJweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCB7XFxuICAgICAgcGFkZGluZy1yaWdodDogMjRweDsgfVxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIC5hZy1pY29uLWdyb3VwLFxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIC5hZy1pY29uLXBpdm90IHtcXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAyNHB4O1xcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1mbG9hdGluZy1maWx0ZXItYnV0dG9uIHtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDI0cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXNldC1maWx0ZXItaXRlbSA+IGRpdiwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXNldC1maWx0ZXItaXRlbSA+IHNwYW4ge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xcbiAgICAgIG1hcmdpbi1yaWdodDogNXB4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1oZWFkZXIgLmFnLWhlYWRlci1jZWxsLXJlc2l6ZTo6YWZ0ZXIge1xcbiAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2UyZTJlMjtcXG4gICAgICBib3JkZXItcmlnaHQ6IDA7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXNpZGUtYmFyIC5hZy1wYW5lbC1jb250YWluZXIge1xcbiAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2UyZTJlMjtcXG4gICAgICBib3JkZXItcmlnaHQ6IDA7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXNpZGUtYmFyLmZ1bGwtd2lkdGggLmFnLXBhbmVsLWNvbnRhaW5lciB7XFxuICAgICAgYm9yZGVyLWxlZnQ6IDA7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuc2Fzcy12YXJpYWJsZXM6OmFmdGVyIHtcXG4gICAgY29udGVudDogJ3sgXFxcImF1dG9TaXplUGFkZGluZ1xcXCI6IFxcXCIyNHB4XFxcIiwgXFxcImhlYWRlckhlaWdodFxcXCI6IFxcXCI1NnB4XFxcIiwgXFxcImdyb3VwUGFkZGluZ1NpemVcXFwiOiBcXFwiNDJweFxcXCIsIFxcXCJmb290ZXJQYWRkaW5nQWRkaXRpb25cXFwiOiBcXFwiMzJweFxcXCIsIFxcXCJ2aXJ0dWFsSXRlbUhlaWdodFxcXCI6IFxcXCI0MHB4XFxcIiwgXFxcImFnZ0Z1bmNQb3B1cEhlaWdodFxcXCI6IFxcXCIxNDBweFxcXCIsIFxcXCJjaGVja2JveEluZGVudFdpZHRoXFxcIjogXFxcIjI2cHhcXFwiLCBcXFwibGVhZk5vZGVQYWRkaW5nXFxcIjogXFxcIjI0cHhcXFwiLCBcXFwicm93SGVpZ2h0XFxcIjogXFxcIjQ4cHhcXFwiLCBcXFwiZ3JpZFNpemVcXFwiOiBcXFwiOHB4XFxcIiwgXFxcImljb25TaXplXFxcIjogXFxcIjE4cHhcXFwiIH0nO1xcbiAgICBkaXNwbGF5OiBub25lOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tY2hlY2tib3gtY2hlY2tlZCxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jaGVja2JveC1jaGVja2VkLXJlYWRvbmx5LFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLWNoZWNrYm94LXVuY2hlY2tlZCxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jaGVja2JveC11bmNoZWNrZWQtcmVhZG9ubHksXFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jaGVja2JveC1pbmRldGVybWluYXRlLXJlYWRvbmx5LFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLXJhZGlvLWJ1dHRvbi1vbixcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1yYWRpby1idXR0b24tb2ZmIHtcXG4gICAgaGVpZ2h0OiAyNHB4O1xcbiAgICB3aWR0aDogMjRweDtcXG4gICAgZm9udC1zaXplOiAyNHB4O1xcbiAgICBsaW5lLWhlaWdodDogMjRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1oZWFkZXItY2VsbCxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaGVhZGVyLWdyb3VwLWNlbGwge1xcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC41cztcXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjVzOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNlbGwtaGlnaGxpZ2h0IHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZTRlYyAhaW1wb3J0YW50OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNlbGwtaGlnaGxpZ2h0LWFuaW1hdGlvbiB7XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxcztcXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxczsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1tZW51LW9wdGlvbiB7XFxuICAgIGhlaWdodDogMzhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1zaWRlLWJhciB7XFxuICAgIGJvcmRlci1ib3R0b206IDA7XFxuICAgIGJvcmRlci1yaWdodDogMDtcXG4gICAgYm9yZGVyLXRvcDogMDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXNpZGUtYmFyIC5hZy1zaWRlLWJ1dHRvbnMgYnV0dG9uIHtcXG4gICAgICBib3JkZXI6IDA7XFxuICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XFxuICAgICAgZm9udC1mYW1pbHk6IFxcXCJSb2JvdG9cXFwiLCBzYW5zLXNlcmlmO1xcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcXG4gICAgICBmb250LXdlaWdodDogNzAwO1xcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctc2lkZS1iYXIgLmFnLXNpZGUtYnV0dG9ucyAuYWctc2lkZS1idXR0b24gYnV0dG9uIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgICBib3JkZXItd2lkdGg6IDA7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1zaWRlLWJhciAuYWctc2lkZS1idXR0b25zIC5hZy1zZWxlY3RlZCBidXR0b24ge1xcbiAgICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgIzNmNTFiNTtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAtMnB4O1xcbiAgICAgIHBhZGRpbmctbGVmdDogMXB4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctc2lkZS1iYXIgLmFnLWZpbHRlci10b29scGFuZWwtYm9keSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1zdGF0dXMtYmFyIHtcXG4gICAgYm9yZGVyLXRvcC13aWR0aDogMXB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctc2lkZS1iYXIgLmFnLXNpZGUtYnV0dG9ucyAuYWctc2VsZWN0ZWQgYnV0dG9uIHtcXG4gICAgYm9yZGVyLWxlZnQ6IDA7XFxuICAgIG1hcmdpbi1sZWZ0OiAwO1xcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XFxuICAgIGJvcmRlci1yaWdodDogMnB4IHNvbGlkICMzZjUxYjU7XFxuICAgIG1hcmdpbi1yaWdodDogLTJweDtcXG4gICAgcGFkZGluZy1yaWdodDogMXB4OyB9XFxuXFxuXCIiLCJtb2R1bGUuZXhwb3J0cyA9IFwiLmZsYXRwaWNrci1jYWxlbmRhciB7XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gIG9wYWNpdHk6IDA7XFxuICBkaXNwbGF5OiBub25lO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgcGFkZGluZzogMDtcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBub25lO1xcbiAgICAgICAgICBhbmltYXRpb246IG5vbmU7XFxuICBkaXJlY3Rpb246IGx0cjtcXG4gIGJvcmRlcjogMDtcXG4gIGZvbnQtc2l6ZTogMTRweDtcXG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgd2lkdGg6IDMwNy44NzVweDtcXG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIC1tcy10b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcXG4gICAgICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcXG4gIGJhY2tncm91bmQ6ICNmZmY7XFxuICAtd2Via2l0LWJveC1zaGFkb3c6IDFweCAwIDAgI2U2ZTZlNiwgLTFweCAwIDAgI2U2ZTZlNiwgMCAxcHggMCAjZTZlNmU2LCAwIC0xcHggMCAjZTZlNmU2LCAwIDNweCAxM3B4IHJnYmEoMCwwLDAsMC4wOCk7XFxuICAgICAgICAgIGJveC1zaGFkb3c6IDFweCAwIDAgI2U2ZTZlNiwgLTFweCAwIDAgI2U2ZTZlNiwgMCAxcHggMCAjZTZlNmU2LCAwIC0xcHggMCAjZTZlNmU2LCAwIDNweCAxM3B4IHJnYmEoMCwwLDAsMC4wOCk7XFxufVxcbi5mbGF0cGlja3ItY2FsZW5kYXIub3BlbixcXG4uZmxhdHBpY2tyLWNhbGVuZGFyLmlubGluZSB7XFxuICBvcGFjaXR5OiAxO1xcbiAgbWF4LWhlaWdodDogNjQwcHg7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbn1cXG4uZmxhdHBpY2tyLWNhbGVuZGFyLm9wZW4ge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgei1pbmRleDogOTk5OTk7XFxufVxcbi5mbGF0cGlja3ItY2FsZW5kYXIuYW5pbWF0ZS5vcGVuIHtcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBmcEZhZGVJbkRvd24gMzAwbXMgY3ViaWMtYmV6aWVyKDAuMjMsIDEsIDAuMzIsIDEpO1xcbiAgICAgICAgICBhbmltYXRpb246IGZwRmFkZUluRG93biAzMDBtcyBjdWJpYy1iZXppZXIoMC4yMywgMSwgMC4zMiwgMSk7XFxufVxcbi5mbGF0cGlja3ItY2FsZW5kYXIuaW5saW5lIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgdG9wOiAycHg7XFxufVxcbi5mbGF0cGlja3ItY2FsZW5kYXIuc3RhdGljIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogY2FsYygxMDAlICsgMnB4KTtcXG59XFxuLmZsYXRwaWNrci1jYWxlbmRhci5zdGF0aWMub3BlbiB7XFxuICB6LWluZGV4OiA5OTk7XFxuICBkaXNwbGF5OiBibG9jaztcXG59XFxuLmZsYXRwaWNrci1jYWxlbmRhci5tdWx0aU1vbnRoIC5mbGF0cGlja3ItZGF5cyAuZGF5Q29udGFpbmVyOm50aC1jaGlsZChuKzEpIC5mbGF0cGlja3ItZGF5LmluUmFuZ2U6bnRoLWNoaWxkKDduKzcpIHtcXG4gIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xcbiAgICAgICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XFxufVxcbi5mbGF0cGlja3ItY2FsZW5kYXIubXVsdGlNb250aCAuZmxhdHBpY2tyLWRheXMgLmRheUNvbnRhaW5lcjpudGgtY2hpbGQobisyKSAuZmxhdHBpY2tyLWRheS5pblJhbmdlOm50aC1jaGlsZCg3bisxKSB7XFxuICAtd2Via2l0LWJveC1zaGFkb3c6IC0ycHggMCAwICNlNmU2ZTYsIDVweCAwIDAgI2U2ZTZlNjtcXG4gICAgICAgICAgYm94LXNoYWRvdzogLTJweCAwIDAgI2U2ZTZlNiwgNXB4IDAgMCAjZTZlNmU2O1xcbn1cXG4uZmxhdHBpY2tyLWNhbGVuZGFyIC5oYXNXZWVrcyAuZGF5Q29udGFpbmVyLFxcbi5mbGF0cGlja3ItY2FsZW5kYXIgLmhhc1RpbWUgLmRheUNvbnRhaW5lciB7XFxuICBib3JkZXItYm90dG9tOiAwO1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xcbn1cXG4uZmxhdHBpY2tyLWNhbGVuZGFyIC5oYXNXZWVrcyAuZGF5Q29udGFpbmVyIHtcXG4gIGJvcmRlci1sZWZ0OiAwO1xcbn1cXG4uZmxhdHBpY2tyLWNhbGVuZGFyLnNob3dUaW1lSW5wdXQuaGFzVGltZSAuZmxhdHBpY2tyLXRpbWUge1xcbiAgaGVpZ2h0OiA0MHB4O1xcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlNmU2ZTY7XFxufVxcbi5mbGF0cGlja3ItY2FsZW5kYXIubm9DYWxlbmRhci5oYXNUaW1lIC5mbGF0cGlja3ItdGltZSB7XFxuICBoZWlnaHQ6IGF1dG87XFxufVxcbi5mbGF0cGlja3ItY2FsZW5kYXI6YmVmb3JlLFxcbi5mbGF0cGlja3ItY2FsZW5kYXI6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIGJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQ7XFxuICBjb250ZW50OiAnJztcXG4gIGhlaWdodDogMDtcXG4gIHdpZHRoOiAwO1xcbiAgbGVmdDogMjJweDtcXG59XFxuLmZsYXRwaWNrci1jYWxlbmRhci5yaWdodE1vc3Q6YmVmb3JlLFxcbi5mbGF0cGlja3ItY2FsZW5kYXIucmlnaHRNb3N0OmFmdGVyIHtcXG4gIGxlZnQ6IGF1dG87XFxuICByaWdodDogMjJweDtcXG59XFxuLmZsYXRwaWNrci1jYWxlbmRhcjpiZWZvcmUge1xcbiAgYm9yZGVyLXdpZHRoOiA1cHg7XFxuICBtYXJnaW46IDAgLTVweDtcXG59XFxuLmZsYXRwaWNrci1jYWxlbmRhcjphZnRlciB7XFxuICBib3JkZXItd2lkdGg6IDRweDtcXG4gIG1hcmdpbjogMCAtNHB4O1xcbn1cXG4uZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93VG9wOmJlZm9yZSxcXG4uZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93VG9wOmFmdGVyIHtcXG4gIGJvdHRvbTogMTAwJTtcXG59XFxuLmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd1RvcDpiZWZvcmUge1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2U2ZTZlNjtcXG59XFxuLmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd1RvcDphZnRlciB7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmZmO1xcbn1cXG4uZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93Qm90dG9tOmJlZm9yZSxcXG4uZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93Qm90dG9tOmFmdGVyIHtcXG4gIHRvcDogMTAwJTtcXG59XFxuLmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd0JvdHRvbTpiZWZvcmUge1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogI2U2ZTZlNjtcXG59XFxuLmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd0JvdHRvbTphZnRlciB7XFxuICBib3JkZXItdG9wLWNvbG9yOiAjZmZmO1xcbn1cXG4uZmxhdHBpY2tyLWNhbGVuZGFyOmZvY3VzIHtcXG4gIG91dGxpbmU6IDA7XFxufVxcbi5mbGF0cGlja3Itd3JhcHBlciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxufVxcbi5mbGF0cGlja3ItbW9udGhzIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLXdlYmtpdC1mbGV4O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbn1cXG4uZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLW1vbnRoIHtcXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgY29sb3I6IHJnYmEoMCwwLDAsMC45KTtcXG4gIGZpbGw6IHJnYmEoMCwwLDAsMC45KTtcXG4gIGhlaWdodDogMzRweDtcXG4gIGxpbmUtaGVpZ2h0OiAxO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xcbiAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgLXdlYmtpdC1mbGV4OiAxO1xcbiAgICAgIC1tcy1mbGV4OiAxO1xcbiAgICAgICAgICBmbGV4OiAxO1xcbn1cXG4uZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLXByZXYtbW9udGgsXFxuLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1uZXh0LW1vbnRoIHtcXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGhlaWdodDogMzRweDtcXG4gIHBhZGRpbmc6IDEwcHg7XFxuICB6LWluZGV4OiAzO1xcbiAgY29sb3I6IHJnYmEoMCwwLDAsMC45KTtcXG4gIGZpbGw6IHJnYmEoMCwwLDAsMC45KTtcXG59XFxuLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoLmZsYXRwaWNrci1kaXNhYmxlZCxcXG4uZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLW5leHQtbW9udGguZmxhdHBpY2tyLWRpc2FibGVkIHtcXG4gIGRpc3BsYXk6IG5vbmU7XFxufVxcbi5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItcHJldi1tb250aCBpLFxcbi5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbmV4dC1tb250aCBpIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoLmZsYXRwaWNrci1wcmV2LW1vbnRoLFxcbi5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbmV4dC1tb250aC5mbGF0cGlja3ItcHJldi1tb250aCB7XFxuLypcXG4gICAgICAvKnJ0bDpiZWdpbjppZ25vcmUqL1xcbi8qXFxuICAgICAgKi9cXG4gIGxlZnQ6IDA7XFxuLypcXG4gICAgICAvKnJ0bDplbmQ6aWdub3JlKi9cXG4vKlxcbiAgICAgICovXFxufVxcbi8qXFxuICAgICAgLypydGw6YmVnaW46aWdub3JlKi9cXG4vKlxcbiAgICAgIC8qcnRsOmVuZDppZ25vcmUqL1xcbi5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItcHJldi1tb250aC5mbGF0cGlja3ItbmV4dC1tb250aCxcXG4uZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLW5leHQtbW9udGguZmxhdHBpY2tyLW5leHQtbW9udGgge1xcbi8qXFxuICAgICAgLypydGw6YmVnaW46aWdub3JlKi9cXG4vKlxcbiAgICAgICovXFxuICByaWdodDogMDtcXG4vKlxcbiAgICAgIC8qcnRsOmVuZDppZ25vcmUqL1xcbi8qXFxuICAgICAgKi9cXG59XFxuLypcXG4gICAgICAvKnJ0bDpiZWdpbjppZ25vcmUqL1xcbi8qXFxuICAgICAgLypydGw6ZW5kOmlnbm9yZSovXFxuLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoOmhvdmVyLFxcbi5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbmV4dC1tb250aDpob3ZlciB7XFxuICBjb2xvcjogIzk1OWVhOTtcXG59XFxuLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoOmhvdmVyIHN2ZyxcXG4uZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLW5leHQtbW9udGg6aG92ZXIgc3ZnIHtcXG4gIGZpbGw6ICNmNjQ3NDc7XFxufVxcbi5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItcHJldi1tb250aCBzdmcsXFxuLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1uZXh0LW1vbnRoIHN2ZyB7XFxuICB3aWR0aDogMTRweDtcXG4gIGhlaWdodDogMTRweDtcXG59XFxuLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoIHN2ZyBwYXRoLFxcbi5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbmV4dC1tb250aCBzdmcgcGF0aCB7XFxuICAtd2Via2l0LXRyYW5zaXRpb246IGZpbGwgMC4xcztcXG4gIHRyYW5zaXRpb246IGZpbGwgMC4xcztcXG4gIGZpbGw6IGluaGVyaXQ7XFxufVxcbi5udW1JbnB1dFdyYXBwZXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgaGVpZ2h0OiBhdXRvO1xcbn1cXG4ubnVtSW5wdXRXcmFwcGVyIGlucHV0LFxcbi5udW1JbnB1dFdyYXBwZXIgc3BhbiB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxufVxcbi5udW1JbnB1dFdyYXBwZXIgaW5wdXQge1xcbiAgd2lkdGg6IDEwMCU7XFxufVxcbi5udW1JbnB1dFdyYXBwZXIgaW5wdXQ6Oi1tcy1jbGVhciB7XFxuICBkaXNwbGF5OiBub25lO1xcbn1cXG4ubnVtSW5wdXRXcmFwcGVyIGlucHV0Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLFxcbi5udW1JbnB1dFdyYXBwZXIgaW5wdXQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24ge1xcbiAgbWFyZ2luOiAwO1xcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xcbn1cXG4ubnVtSW5wdXRXcmFwcGVyIHNwYW4ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcmlnaHQ6IDA7XFxuICB3aWR0aDogMTRweDtcXG4gIHBhZGRpbmc6IDAgNHB4IDAgMnB4O1xcbiAgaGVpZ2h0OiA1MCU7XFxuICBsaW5lLWhlaWdodDogNTAlO1xcbiAgb3BhY2l0eTogMDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNTcsNTcsNTcsMC4xNSk7XFxuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcbi5udW1JbnB1dFdyYXBwZXIgc3Bhbjpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuMSk7XFxufVxcbi5udW1JbnB1dFdyYXBwZXIgc3BhbjphY3RpdmUge1xcbiAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjIpO1xcbn1cXG4ubnVtSW5wdXRXcmFwcGVyIHNwYW46YWZ0ZXIge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG59XFxuLm51bUlucHV0V3JhcHBlciBzcGFuLmFycm93VXAge1xcbiAgdG9wOiAwO1xcbiAgYm9yZGVyLWJvdHRvbTogMDtcXG59XFxuLm51bUlucHV0V3JhcHBlciBzcGFuLmFycm93VXA6YWZ0ZXIge1xcbiAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci1yaWdodDogNHB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLWJvdHRvbTogNHB4IHNvbGlkIHJnYmEoNTcsNTcsNTcsMC42KTtcXG4gIHRvcDogMjYlO1xcbn1cXG4ubnVtSW5wdXRXcmFwcGVyIHNwYW4uYXJyb3dEb3duIHtcXG4gIHRvcDogNTAlO1xcbn1cXG4ubnVtSW5wdXRXcmFwcGVyIHNwYW4uYXJyb3dEb3duOmFmdGVyIHtcXG4gIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItcmlnaHQ6IDRweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci10b3A6IDRweCBzb2xpZCByZ2JhKDU3LDU3LDU3LDAuNik7XFxuICB0b3A6IDQwJTtcXG59XFxuLm51bUlucHV0V3JhcHBlciBzcGFuIHN2ZyB7XFxuICB3aWR0aDogaW5oZXJpdDtcXG4gIGhlaWdodDogYXV0bztcXG59XFxuLm51bUlucHV0V3JhcHBlciBzcGFuIHN2ZyBwYXRoIHtcXG4gIGZpbGw6IHJnYmEoMCwwLDAsMC41KTtcXG59XFxuLm51bUlucHV0V3JhcHBlcjpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuMDUpO1xcbn1cXG4ubnVtSW5wdXRXcmFwcGVyOmhvdmVyIHNwYW4ge1xcbiAgb3BhY2l0eTogMTtcXG59XFxuLmZsYXRwaWNrci1jdXJyZW50LW1vbnRoIHtcXG4gIGZvbnQtc2l6ZTogMTM1JTtcXG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcbiAgZm9udC13ZWlnaHQ6IDMwMDtcXG4gIGNvbG9yOiBpbmhlcml0O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgd2lkdGg6IDc1JTtcXG4gIGxlZnQ6IDEyLjUlO1xcbiAgcGFkZGluZzogNy40OHB4IDAgMCAwO1xcbiAgbGluZS1oZWlnaHQ6IDE7XFxuICBoZWlnaHQ6IDM0cHg7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMHB4LCAwcHgsIDBweCk7XFxuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMHB4LCAwcHgsIDBweCk7XFxufVxcbi5mbGF0cGlja3ItY3VycmVudC1tb250aCBzcGFuLmN1ci1tb250aCB7XFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICBjb2xvcjogaW5oZXJpdDtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIG1hcmdpbi1sZWZ0OiAwLjVjaDtcXG4gIHBhZGRpbmc6IDA7XFxufVxcbi5mbGF0cGlja3ItY3VycmVudC1tb250aCBzcGFuLmN1ci1tb250aDpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuMDUpO1xcbn1cXG4uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLm51bUlucHV0V3JhcHBlciB7XFxuICB3aWR0aDogNmNoO1xcbiAgd2lkdGg6IDdjaFxcXFwwO1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbn1cXG4uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLm51bUlucHV0V3JhcHBlciBzcGFuLmFycm93VXA6YWZ0ZXIge1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgwLDAsMCwwLjkpO1xcbn1cXG4uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLm51bUlucHV0V3JhcHBlciBzcGFuLmFycm93RG93bjphZnRlciB7XFxuICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsMCwwLDAuOSk7XFxufVxcbi5mbGF0cGlja3ItY3VycmVudC1tb250aCBpbnB1dC5jdXIteWVhciB7XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGNvbG9yOiBpbmhlcml0O1xcbiAgY3Vyc29yOiB0ZXh0O1xcbiAgcGFkZGluZzogMCAwIDAgMC41Y2g7XFxuICBtYXJnaW46IDA7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBmb250LXNpemU6IGluaGVyaXQ7XFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG4gIGZvbnQtd2VpZ2h0OiAzMDA7XFxuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcXG4gIGhlaWdodDogYXV0bztcXG4gIGJvcmRlcjogMDtcXG4gIGJvcmRlci1yYWRpdXM6IDA7XFxuICB2ZXJ0aWNhbC1hbGlnbjogaW5pdGlhbDtcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xcbiAgLW1vei1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XFxuICBhcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XFxufVxcbi5mbGF0cGlja3ItY3VycmVudC1tb250aCBpbnB1dC5jdXIteWVhcjpmb2N1cyB7XFxuICBvdXRsaW5lOiAwO1xcbn1cXG4uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggaW5wdXQuY3VyLXllYXJbZGlzYWJsZWRdLFxcbi5mbGF0cGlja3ItY3VycmVudC1tb250aCBpbnB1dC5jdXIteWVhcltkaXNhYmxlZF06aG92ZXIge1xcbiAgZm9udC1zaXplOiAxMDAlO1xcbiAgY29sb3I6IHJnYmEoMCwwLDAsMC41KTtcXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxufVxcbi5mbGF0cGlja3ItY3VycmVudC1tb250aCAuZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGhzIHtcXG4gIGFwcGVhcmFuY2U6IG1lbnVsaXN0O1xcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXI6IG5vbmU7XFxuICBib3JkZXItcmFkaXVzOiAwO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGNvbG9yOiBpbmhlcml0O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgZm9udC1zaXplOiBpbmhlcml0O1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XFxuICBmb250LXdlaWdodDogMzAwO1xcbiAgaGVpZ2h0OiBhdXRvO1xcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxuICBtYXJnaW46IC0xcHggMCAwIDA7XFxuICBvdXRsaW5lOiBub25lO1xcbiAgcGFkZGluZzogMCAwIDAgMC41Y2g7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB2ZXJ0aWNhbC1hbGlnbjogaW5pdGlhbDtcXG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbWVudWxpc3Q7XFxuICAtbW96LWFwcGVhcmFuY2U6IG1lbnVsaXN0O1xcbiAgd2lkdGg6IGF1dG87XFxufVxcbi5mbGF0cGlja3ItY3VycmVudC1tb250aCAuZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGhzOmZvY3VzLFxcbi5mbGF0cGlja3ItY3VycmVudC1tb250aCAuZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGhzOmFjdGl2ZSB7XFxuICBvdXRsaW5lOiBub25lO1xcbn1cXG4uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLmZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRoczpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuMDUpO1xcbn1cXG4uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLmZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRocyAuZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGgge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBvdXRsaW5lOiBub25lO1xcbiAgcGFkZGluZzogMDtcXG59XFxuLmZsYXRwaWNrci13ZWVrZGF5cyB7XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB3aWR0aDogMTAwJTtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLXdlYmtpdC1mbGV4O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgaGVpZ2h0OiAyOHB4O1xcbn1cXG4uZmxhdHBpY2tyLXdlZWtkYXlzIC5mbGF0cGlja3Itd2Vla2RheWNvbnRhaW5lciB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC13ZWJraXQtZmxleDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAtd2Via2l0LWZsZXg6IDE7XFxuICAgICAgLW1zLWZsZXg6IDE7XFxuICAgICAgICAgIGZsZXg6IDE7XFxufVxcbnNwYW4uZmxhdHBpY2tyLXdlZWtkYXkge1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgZm9udC1zaXplOiA5MCU7XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gIGNvbG9yOiByZ2JhKDAsMCwwLDAuNTQpO1xcbiAgbGluZS1oZWlnaHQ6IDE7XFxuICBtYXJnaW46IDA7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAtd2Via2l0LWZsZXg6IDE7XFxuICAgICAgLW1zLWZsZXg6IDE7XFxuICAgICAgICAgIGZsZXg6IDE7XFxuICBmb250LXdlaWdodDogYm9sZGVyO1xcbn1cXG4uZGF5Q29udGFpbmVyLFxcbi5mbGF0cGlja3Itd2Vla3Mge1xcbiAgcGFkZGluZzogMXB4IDAgMCAwO1xcbn1cXG4uZmxhdHBpY2tyLWRheXMge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLXdlYmtpdC1mbGV4O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtYWxpZ246IHN0YXJ0O1xcbiAgLXdlYmtpdC1hbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gICAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQ7XFxuICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcbiAgd2lkdGg6IDMwNy44NzVweDtcXG59XFxuLmZsYXRwaWNrci1kYXlzOmZvY3VzIHtcXG4gIG91dGxpbmU6IDA7XFxufVxcbi5kYXlDb250YWluZXIge1xcbiAgcGFkZGluZzogMDtcXG4gIG91dGxpbmU6IDA7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgd2lkdGg6IDMwNy44NzVweDtcXG4gIG1pbi13aWR0aDogMzA3Ljg3NXB4O1xcbiAgbWF4LXdpZHRoOiAzMDcuODc1cHg7XFxuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLXdlYmtpdC1mbGV4O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtZmxleC13cmFwOiB3cmFwO1xcbiAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XFxuICAtbXMtZmxleC13cmFwOiB3cmFwO1xcbiAgLW1zLWZsZXgtcGFjazoganVzdGlmeTtcXG4gIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XFxuICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDBweCwgMHB4LCAwcHgpO1xcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDBweCwgMHB4LCAwcHgpO1xcbiAgb3BhY2l0eTogMTtcXG59XFxuLmRheUNvbnRhaW5lciArIC5kYXlDb250YWluZXIge1xcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAtMXB4IDAgMCAjZTZlNmU2O1xcbiAgICAgICAgICBib3gtc2hhZG93OiAtMXB4IDAgMCAjZTZlNmU2O1xcbn1cXG4uZmxhdHBpY2tyLWRheSB7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItcmFkaXVzOiAxNTBweDtcXG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGNvbG9yOiAjMzkzOTM5O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIHdpZHRoOiAxNC4yODU3MTQzJTtcXG4gIC13ZWJraXQtZmxleC1iYXNpczogMTQuMjg1NzE0MyU7XFxuICAgICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDE0LjI4NTcxNDMlO1xcbiAgICAgICAgICBmbGV4LWJhc2lzOiAxNC4yODU3MTQzJTtcXG4gIG1heC13aWR0aDogMzlweDtcXG4gIGhlaWdodDogMzlweDtcXG4gIGxpbmUtaGVpZ2h0OiAzOXB4O1xcbiAgbWFyZ2luOiAwO1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbn1cXG4uZmxhdHBpY2tyLWRheS5pblJhbmdlLFxcbi5mbGF0cGlja3ItZGF5LnByZXZNb250aERheS5pblJhbmdlLFxcbi5mbGF0cGlja3ItZGF5Lm5leHRNb250aERheS5pblJhbmdlLFxcbi5mbGF0cGlja3ItZGF5LnRvZGF5LmluUmFuZ2UsXFxuLmZsYXRwaWNrci1kYXkucHJldk1vbnRoRGF5LnRvZGF5LmluUmFuZ2UsXFxuLmZsYXRwaWNrci1kYXkubmV4dE1vbnRoRGF5LnRvZGF5LmluUmFuZ2UsXFxuLmZsYXRwaWNrci1kYXk6aG92ZXIsXFxuLmZsYXRwaWNrci1kYXkucHJldk1vbnRoRGF5OmhvdmVyLFxcbi5mbGF0cGlja3ItZGF5Lm5leHRNb250aERheTpob3ZlcixcXG4uZmxhdHBpY2tyLWRheTpmb2N1cyxcXG4uZmxhdHBpY2tyLWRheS5wcmV2TW9udGhEYXk6Zm9jdXMsXFxuLmZsYXRwaWNrci1kYXkubmV4dE1vbnRoRGF5OmZvY3VzIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIG91dGxpbmU6IDA7XFxuICBiYWNrZ3JvdW5kOiAjZTZlNmU2O1xcbiAgYm9yZGVyLWNvbG9yOiAjZTZlNmU2O1xcbn1cXG4uZmxhdHBpY2tyLWRheS50b2RheSB7XFxuICBib3JkZXItY29sb3I6ICM5NTllYTk7XFxufVxcbi5mbGF0cGlja3ItZGF5LnRvZGF5OmhvdmVyLFxcbi5mbGF0cGlja3ItZGF5LnRvZGF5OmZvY3VzIHtcXG4gIGJvcmRlci1jb2xvcjogIzk1OWVhOTtcXG4gIGJhY2tncm91bmQ6ICM5NTllYTk7XFxuICBjb2xvcjogI2ZmZjtcXG59XFxuLmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQsXFxuLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZSxcXG4uZmxhdHBpY2tyLWRheS5lbmRSYW5nZSxcXG4uZmxhdHBpY2tyLWRheS5zZWxlY3RlZC5pblJhbmdlLFxcbi5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2UuaW5SYW5nZSxcXG4uZmxhdHBpY2tyLWRheS5lbmRSYW5nZS5pblJhbmdlLFxcbi5mbGF0cGlja3ItZGF5LnNlbGVjdGVkOmZvY3VzLFxcbi5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2U6Zm9jdXMsXFxuLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2U6Zm9jdXMsXFxuLmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQ6aG92ZXIsXFxuLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZTpob3ZlcixcXG4uZmxhdHBpY2tyLWRheS5lbmRSYW5nZTpob3ZlcixcXG4uZmxhdHBpY2tyLWRheS5zZWxlY3RlZC5wcmV2TW9udGhEYXksXFxuLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZS5wcmV2TW9udGhEYXksXFxuLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2UucHJldk1vbnRoRGF5LFxcbi5mbGF0cGlja3ItZGF5LnNlbGVjdGVkLm5leHRNb250aERheSxcXG4uZmxhdHBpY2tyLWRheS5zdGFydFJhbmdlLm5leHRNb250aERheSxcXG4uZmxhdHBpY2tyLWRheS5lbmRSYW5nZS5uZXh0TW9udGhEYXkge1xcbiAgYmFja2dyb3VuZDogIzU2OWZmNztcXG4gIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTtcXG4gICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcXG4gIGNvbG9yOiAjZmZmO1xcbiAgYm9yZGVyLWNvbG9yOiAjNTY5ZmY3O1xcbn1cXG4uZmxhdHBpY2tyLWRheS5zZWxlY3RlZC5zdGFydFJhbmdlLFxcbi5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2Uuc3RhcnRSYW5nZSxcXG4uZmxhdHBpY2tyLWRheS5lbmRSYW5nZS5zdGFydFJhbmdlIHtcXG4gIGJvcmRlci1yYWRpdXM6IDUwcHggMCAwIDUwcHg7XFxufVxcbi5mbGF0cGlja3ItZGF5LnNlbGVjdGVkLmVuZFJhbmdlLFxcbi5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2UuZW5kUmFuZ2UsXFxuLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2UuZW5kUmFuZ2Uge1xcbiAgYm9yZGVyLXJhZGl1czogMCA1MHB4IDUwcHggMDtcXG59XFxuLmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQuc3RhcnRSYW5nZSArIC5lbmRSYW5nZTpub3QoOm50aC1jaGlsZCg3bisxKSksXFxuLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZS5zdGFydFJhbmdlICsgLmVuZFJhbmdlOm5vdCg6bnRoLWNoaWxkKDduKzEpKSxcXG4uZmxhdHBpY2tyLWRheS5lbmRSYW5nZS5zdGFydFJhbmdlICsgLmVuZFJhbmdlOm5vdCg6bnRoLWNoaWxkKDduKzEpKSB7XFxuICAtd2Via2l0LWJveC1zaGFkb3c6IC0xMHB4IDAgMCAjNTY5ZmY3O1xcbiAgICAgICAgICBib3gtc2hhZG93OiAtMTBweCAwIDAgIzU2OWZmNztcXG59XFxuLmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQuc3RhcnRSYW5nZS5lbmRSYW5nZSxcXG4uZmxhdHBpY2tyLWRheS5zdGFydFJhbmdlLnN0YXJ0UmFuZ2UuZW5kUmFuZ2UsXFxuLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2Uuc3RhcnRSYW5nZS5lbmRSYW5nZSB7XFxuICBib3JkZXItcmFkaXVzOiA1MHB4O1xcbn1cXG4uZmxhdHBpY2tyLWRheS5pblJhbmdlIHtcXG4gIGJvcmRlci1yYWRpdXM6IDA7XFxuICAtd2Via2l0LWJveC1zaGFkb3c6IC01cHggMCAwICNlNmU2ZTYsIDVweCAwIDAgI2U2ZTZlNjtcXG4gICAgICAgICAgYm94LXNoYWRvdzogLTVweCAwIDAgI2U2ZTZlNiwgNXB4IDAgMCAjZTZlNmU2O1xcbn1cXG4uZmxhdHBpY2tyLWRheS5mbGF0cGlja3ItZGlzYWJsZWQsXFxuLmZsYXRwaWNrci1kYXkuZmxhdHBpY2tyLWRpc2FibGVkOmhvdmVyLFxcbi5mbGF0cGlja3ItZGF5LnByZXZNb250aERheSxcXG4uZmxhdHBpY2tyLWRheS5uZXh0TW9udGhEYXksXFxuLmZsYXRwaWNrci1kYXkubm90QWxsb3dlZCxcXG4uZmxhdHBpY2tyLWRheS5ub3RBbGxvd2VkLnByZXZNb250aERheSxcXG4uZmxhdHBpY2tyLWRheS5ub3RBbGxvd2VkLm5leHRNb250aERheSB7XFxuICBjb2xvcjogcmdiYSg1Nyw1Nyw1NywwLjMpO1xcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbn1cXG4uZmxhdHBpY2tyLWRheS5mbGF0cGlja3ItZGlzYWJsZWQsXFxuLmZsYXRwaWNrci1kYXkuZmxhdHBpY2tyLWRpc2FibGVkOmhvdmVyIHtcXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxuICBjb2xvcjogcmdiYSg1Nyw1Nyw1NywwLjEpO1xcbn1cXG4uZmxhdHBpY2tyLWRheS53ZWVrLnNlbGVjdGVkIHtcXG4gIGJvcmRlci1yYWRpdXM6IDA7XFxuICAtd2Via2l0LWJveC1zaGFkb3c6IC01cHggMCAwICM1NjlmZjcsIDVweCAwIDAgIzU2OWZmNztcXG4gICAgICAgICAgYm94LXNoYWRvdzogLTVweCAwIDAgIzU2OWZmNywgNXB4IDAgMCAjNTY5ZmY3O1xcbn1cXG4uZmxhdHBpY2tyLWRheS5oaWRkZW4ge1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbn1cXG4ucmFuZ2VNb2RlIC5mbGF0cGlja3ItZGF5IHtcXG4gIG1hcmdpbi10b3A6IDFweDtcXG59XFxuLmZsYXRwaWNrci13ZWVrd3JhcHBlciB7XFxuICBmbG9hdDogbGVmdDtcXG59XFxuLmZsYXRwaWNrci13ZWVrd3JhcHBlciAuZmxhdHBpY2tyLXdlZWtzIHtcXG4gIHBhZGRpbmc6IDAgMTJweDtcXG4gIC13ZWJraXQtYm94LXNoYWRvdzogMXB4IDAgMCAjZTZlNmU2O1xcbiAgICAgICAgICBib3gtc2hhZG93OiAxcHggMCAwICNlNmU2ZTY7XFxufVxcbi5mbGF0cGlja3Itd2Vla3dyYXBwZXIgLmZsYXRwaWNrci13ZWVrZGF5IHtcXG4gIGZsb2F0OiBub25lO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBsaW5lLWhlaWdodDogMjhweDtcXG59XFxuLmZsYXRwaWNrci13ZWVrd3JhcHBlciBzcGFuLmZsYXRwaWNrci1kYXksXFxuLmZsYXRwaWNrci13ZWVrd3JhcHBlciBzcGFuLmZsYXRwaWNrci1kYXk6aG92ZXIge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1heC13aWR0aDogbm9uZTtcXG4gIGNvbG9yOiByZ2JhKDU3LDU3LDU3LDAuMyk7XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIGJvcmRlcjogbm9uZTtcXG59XFxuLmZsYXRwaWNrci1pbm5lckNvbnRhaW5lciB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLXdlYmtpdC1mbGV4O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG59XFxuLmZsYXRwaWNrci1yQ29udGFpbmVyIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIHBhZGRpbmc6IDA7XFxuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcbi5mbGF0cGlja3ItdGltZSB7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBvdXRsaW5lOiAwO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBoZWlnaHQ6IDA7XFxuICBsaW5lLWhlaWdodDogNDBweDtcXG4gIG1heC1oZWlnaHQ6IDQwcHg7XFxuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxufVxcbi5mbGF0cGlja3ItdGltZTphZnRlciB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIGRpc3BsYXk6IHRhYmxlO1xcbiAgY2xlYXI6IGJvdGg7XFxufVxcbi5mbGF0cGlja3ItdGltZSAubnVtSW5wdXRXcmFwcGVyIHtcXG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAtd2Via2l0LWZsZXg6IDE7XFxuICAgICAgLW1zLWZsZXg6IDE7XFxuICAgICAgICAgIGZsZXg6IDE7XFxuICB3aWR0aDogNDAlO1xcbiAgaGVpZ2h0OiA0MHB4O1xcbiAgZmxvYXQ6IGxlZnQ7XFxufVxcbi5mbGF0cGlja3ItdGltZSAubnVtSW5wdXRXcmFwcGVyIHNwYW4uYXJyb3dVcDphZnRlciB7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiAjMzkzOTM5O1xcbn1cXG4uZmxhdHBpY2tyLXRpbWUgLm51bUlucHV0V3JhcHBlciBzcGFuLmFycm93RG93bjphZnRlciB7XFxuICBib3JkZXItdG9wLWNvbG9yOiAjMzkzOTM5O1xcbn1cXG4uZmxhdHBpY2tyLXRpbWUuaGFzU2Vjb25kcyAubnVtSW5wdXRXcmFwcGVyIHtcXG4gIHdpZHRoOiAyNiU7XFxufVxcbi5mbGF0cGlja3ItdGltZS50aW1lMjRociAubnVtSW5wdXRXcmFwcGVyIHtcXG4gIHdpZHRoOiA0OSU7XFxufVxcbi5mbGF0cGlja3ItdGltZSBpbnB1dCB7XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTtcXG4gICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcXG4gIGJvcmRlcjogMDtcXG4gIGJvcmRlci1yYWRpdXM6IDA7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBtYXJnaW46IDA7XFxuICBwYWRkaW5nOiAwO1xcbiAgaGVpZ2h0OiBpbmhlcml0O1xcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxuICBjb2xvcjogIzM5MzkzOTtcXG4gIGZvbnQtc2l6ZTogMTRweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xcbiAgLW1vei1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XFxuICBhcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XFxufVxcbi5mbGF0cGlja3ItdGltZSBpbnB1dC5mbGF0cGlja3ItaG91ciB7XFxuICBmb250LXdlaWdodDogYm9sZDtcXG59XFxuLmZsYXRwaWNrci10aW1lIGlucHV0LmZsYXRwaWNrci1taW51dGUsXFxuLmZsYXRwaWNrci10aW1lIGlucHV0LmZsYXRwaWNrci1zZWNvbmQge1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG59XFxuLmZsYXRwaWNrci10aW1lIGlucHV0OmZvY3VzIHtcXG4gIG91dGxpbmU6IDA7XFxuICBib3JkZXI6IDA7XFxufVxcbi5mbGF0cGlja3ItdGltZSAuZmxhdHBpY2tyLXRpbWUtc2VwYXJhdG9yLFxcbi5mbGF0cGlja3ItdGltZSAuZmxhdHBpY2tyLWFtLXBtIHtcXG4gIGhlaWdodDogaW5oZXJpdDtcXG4gIGZsb2F0OiBsZWZ0O1xcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxuICBjb2xvcjogIzM5MzkzOTtcXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgd2lkdGg6IDIlO1xcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xcbiAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIC13ZWJraXQtYWxpZ24tc2VsZjogY2VudGVyO1xcbiAgICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xcbn1cXG4uZmxhdHBpY2tyLXRpbWUgLmZsYXRwaWNrci1hbS1wbSB7XFxuICBvdXRsaW5lOiAwO1xcbiAgd2lkdGg6IDE4JTtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxufVxcbi5mbGF0cGlja3ItdGltZSBpbnB1dDpob3ZlcixcXG4uZmxhdHBpY2tyLXRpbWUgLmZsYXRwaWNrci1hbS1wbTpob3ZlcixcXG4uZmxhdHBpY2tyLXRpbWUgaW5wdXQ6Zm9jdXMsXFxuLmZsYXRwaWNrci10aW1lIC5mbGF0cGlja3ItYW0tcG06Zm9jdXMge1xcbiAgYmFja2dyb3VuZDogI2VlZTtcXG59XFxuLmZsYXRwaWNrci1pbnB1dFtyZWFkb25seV0ge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG5ALXdlYmtpdC1rZXlmcmFtZXMgZnBGYWRlSW5Eb3duIHtcXG4gIGZyb20ge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwcHgsIDApO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwcHgsIDApO1xcbiAgfVxcbiAgdG8ge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyBmcEZhZGVJbkRvd24ge1xcbiAgZnJvbSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMjBweCwgMCk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMjBweCwgMCk7XFxuICB9XFxuICB0byB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xcbiAgfVxcbn1cXG5cIiIsIm1vZHVsZS5leHBvcnRzID0gXCIvKlxcbiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEJCakdyaWRFeFdpZGdldCBwbHVnaW4uXFxuKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XFxuKlxcbiogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcXG4qIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxcbiovXFxuXFxuLmd3LWFsaWdubWVudC1jZWxsLXJpZ2h0LFxcbi5ndy1hbGlnbm1lbnQtY2VsbC1yaWdodCAuYWctY2VsbC12YWx1ZSB7XFxuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xcbiAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7XFxuICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7XFxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgICAgIC1tcy1mbGV4OiAxO1xcbiAgICAgICAgICAgIGZsZXg6IDE7XFxufVxcblxcbi5ndy1hbGlnbm1lbnQtY2VsbC1jZW50ZXIsXFxuLmd3LWFsaWdubWVudC1jZWxsLWNlbnRlciAuYWctY2VsbC12YWx1ZSB7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgICAgLW1zLWZsZXg6IDE7XFxuICAgICAgICAgICAgZmxleDogMTtcXG59XFxuXFxuLmd3LWFsaWdubWVudC1oZWFkZXItcmlnaHQgLmFnLWhlYWRlci1jZWxsLWxhYmVsIHtcXG4gICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsO1xcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHJldmVyc2U7XFxuICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsgICAgXFxufVxcblxcbi5ndy1hbGlnbm1lbnQtaGVhZGVyLWNlbnRlciAuYWctaGVhZGVyLWNlbGwtbGFiZWwge1xcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxufVxcblxcbi5ndy1hbGlnbm1lbnQtaGVhZGVyLXJpZ2h0IC5hZy1jZWxsLWxhYmVsLWNvbnRhaW5lcixcXG4uZ3ctYWxpZ25tZW50LWhlYWRlci1jZW50ZXIgLmFnLWNlbGwtbGFiZWwtY29udGFpbmVyIHtcXG4gICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsO1xcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XFxufVwiIiwiLypcblx0TUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcblx0QXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cblxudmFyIHN0eWxlc0luRG9tID0ge307XG5cbnZhclx0bWVtb2l6ZSA9IGZ1bmN0aW9uIChmbikge1xuXHR2YXIgbWVtbztcblxuXHRyZXR1cm4gZnVuY3Rpb24gKCkge1xuXHRcdGlmICh0eXBlb2YgbWVtbyA9PT0gXCJ1bmRlZmluZWRcIikgbWVtbyA9IGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0cmV0dXJuIG1lbW87XG5cdH07XG59O1xuXG52YXIgaXNPbGRJRSA9IG1lbW9pemUoZnVuY3Rpb24gKCkge1xuXHQvLyBUZXN0IGZvciBJRSA8PSA5IGFzIHByb3Bvc2VkIGJ5IEJyb3dzZXJoYWNrc1xuXHQvLyBAc2VlIGh0dHA6Ly9icm93c2VyaGFja3MuY29tLyNoYWNrLWU3MWQ4NjkyZjY1MzM0MTczZmVlNzE1YzIyMmNiODA1XG5cdC8vIFRlc3RzIGZvciBleGlzdGVuY2Ugb2Ygc3RhbmRhcmQgZ2xvYmFscyBpcyB0byBhbGxvdyBzdHlsZS1sb2FkZXJcblx0Ly8gdG8gb3BlcmF0ZSBjb3JyZWN0bHkgaW50byBub24tc3RhbmRhcmQgZW52aXJvbm1lbnRzXG5cdC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2stY29udHJpYi9zdHlsZS1sb2FkZXIvaXNzdWVzLzE3N1xuXHRyZXR1cm4gd2luZG93ICYmIGRvY3VtZW50ICYmIGRvY3VtZW50LmFsbCAmJiAhd2luZG93LmF0b2I7XG59KTtcblxudmFyIGdldFRhcmdldCA9IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0KTtcbn07XG5cbnZhciBnZXRFbGVtZW50ID0gKGZ1bmN0aW9uIChmbikge1xuXHR2YXIgbWVtbyA9IHt9O1xuXG5cdHJldHVybiBmdW5jdGlvbih0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBwYXNzaW5nIGZ1bmN0aW9uIGluIG9wdGlvbnMsIHRoZW4gdXNlIGl0IGZvciByZXNvbHZlIFwiaGVhZFwiIGVsZW1lbnQuXG4gICAgICAgICAgICAgICAgLy8gVXNlZnVsIGZvciBTaGFkb3cgUm9vdCBzdHlsZSBpLmVcbiAgICAgICAgICAgICAgICAvLyB7XG4gICAgICAgICAgICAgICAgLy8gICBpbnNlcnRJbnRvOiBmdW5jdGlvbiAoKSB7IHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2Zvb1wiKS5zaGFkb3dSb290IH1cbiAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0YXJnZXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBtZW1vW3RhcmdldF0gPT09IFwidW5kZWZpbmVkXCIpIHtcblx0XHRcdHZhciBzdHlsZVRhcmdldCA9IGdldFRhcmdldC5jYWxsKHRoaXMsIHRhcmdldCk7XG5cdFx0XHQvLyBTcGVjaWFsIGNhc2UgdG8gcmV0dXJuIGhlYWQgb2YgaWZyYW1lIGluc3RlYWQgb2YgaWZyYW1lIGl0c2VsZlxuXHRcdFx0aWYgKHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCAmJiBzdHlsZVRhcmdldCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCkge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdC8vIFRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgYWNjZXNzIHRvIGlmcmFtZSBpcyBibG9ja2VkXG5cdFx0XHRcdFx0Ly8gZHVlIHRvIGNyb3NzLW9yaWdpbiByZXN0cmljdGlvbnNcblx0XHRcdFx0XHRzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuXHRcdFx0XHR9IGNhdGNoKGUpIHtcblx0XHRcdFx0XHRzdHlsZVRhcmdldCA9IG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuXHRcdH1cblx0XHRyZXR1cm4gbWVtb1t0YXJnZXRdXG5cdH07XG59KSgpO1xuXG52YXIgc2luZ2xldG9uID0gbnVsbDtcbnZhclx0c2luZ2xldG9uQ291bnRlciA9IDA7XG52YXJcdHN0eWxlc0luc2VydGVkQXRUb3AgPSBbXTtcblxudmFyXHRmaXhVcmxzID0gcmVxdWlyZShcIi4vdXJsc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihsaXN0LCBvcHRpb25zKSB7XG5cdGlmICh0eXBlb2YgREVCVUcgIT09IFwidW5kZWZpbmVkXCIgJiYgREVCVUcpIHtcblx0XHRpZiAodHlwZW9mIGRvY3VtZW50ICE9PSBcIm9iamVjdFwiKSB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgc3R5bGUtbG9hZGVyIGNhbm5vdCBiZSB1c2VkIGluIGEgbm9uLWJyb3dzZXIgZW52aXJvbm1lbnRcIik7XG5cdH1cblxuXHRvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuXHRvcHRpb25zLmF0dHJzID0gdHlwZW9mIG9wdGlvbnMuYXR0cnMgPT09IFwib2JqZWN0XCIgPyBvcHRpb25zLmF0dHJzIDoge307XG5cblx0Ly8gRm9yY2Ugc2luZ2xlLXRhZyBzb2x1dGlvbiBvbiBJRTYtOSwgd2hpY2ggaGFzIGEgaGFyZCBsaW1pdCBvbiB0aGUgIyBvZiA8c3R5bGU+XG5cdC8vIHRhZ3MgaXQgd2lsbCBhbGxvdyBvbiBhIHBhZ2Vcblx0aWYgKCFvcHRpb25zLnNpbmdsZXRvbiAmJiB0eXBlb2Ygb3B0aW9ucy5zaW5nbGV0b24gIT09IFwiYm9vbGVhblwiKSBvcHRpb25zLnNpbmdsZXRvbiA9IGlzT2xkSUUoKTtcblxuXHQvLyBCeSBkZWZhdWx0LCBhZGQgPHN0eWxlPiB0YWdzIHRvIHRoZSA8aGVhZD4gZWxlbWVudFxuICAgICAgICBpZiAoIW9wdGlvbnMuaW5zZXJ0SW50bykgb3B0aW9ucy5pbnNlcnRJbnRvID0gXCJoZWFkXCI7XG5cblx0Ly8gQnkgZGVmYXVsdCwgYWRkIDxzdHlsZT4gdGFncyB0byB0aGUgYm90dG9tIG9mIHRoZSB0YXJnZXRcblx0aWYgKCFvcHRpb25zLmluc2VydEF0KSBvcHRpb25zLmluc2VydEF0ID0gXCJib3R0b21cIjtcblxuXHR2YXIgc3R5bGVzID0gbGlzdFRvU3R5bGVzKGxpc3QsIG9wdGlvbnMpO1xuXG5cdGFkZFN0eWxlc1RvRG9tKHN0eWxlcywgb3B0aW9ucyk7XG5cblx0cmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZSAobmV3TGlzdCkge1xuXHRcdHZhciBtYXlSZW1vdmUgPSBbXTtcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgaXRlbSA9IHN0eWxlc1tpXTtcblx0XHRcdHZhciBkb21TdHlsZSA9IHN0eWxlc0luRG9tW2l0ZW0uaWRdO1xuXG5cdFx0XHRkb21TdHlsZS5yZWZzLS07XG5cdFx0XHRtYXlSZW1vdmUucHVzaChkb21TdHlsZSk7XG5cdFx0fVxuXG5cdFx0aWYobmV3TGlzdCkge1xuXHRcdFx0dmFyIG5ld1N0eWxlcyA9IGxpc3RUb1N0eWxlcyhuZXdMaXN0LCBvcHRpb25zKTtcblx0XHRcdGFkZFN0eWxlc1RvRG9tKG5ld1N0eWxlcywgb3B0aW9ucyk7XG5cdFx0fVxuXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBtYXlSZW1vdmUubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBkb21TdHlsZSA9IG1heVJlbW92ZVtpXTtcblxuXHRcdFx0aWYoZG9tU3R5bGUucmVmcyA9PT0gMCkge1xuXHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGRvbVN0eWxlLnBhcnRzLmxlbmd0aDsgaisrKSBkb21TdHlsZS5wYXJ0c1tqXSgpO1xuXG5cdFx0XHRcdGRlbGV0ZSBzdHlsZXNJbkRvbVtkb21TdHlsZS5pZF07XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xufTtcblxuZnVuY3Rpb24gYWRkU3R5bGVzVG9Eb20gKHN0eWxlcywgb3B0aW9ucykge1xuXHRmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5sZW5ndGg7IGkrKykge1xuXHRcdHZhciBpdGVtID0gc3R5bGVzW2ldO1xuXHRcdHZhciBkb21TdHlsZSA9IHN0eWxlc0luRG9tW2l0ZW0uaWRdO1xuXG5cdFx0aWYoZG9tU3R5bGUpIHtcblx0XHRcdGRvbVN0eWxlLnJlZnMrKztcblxuXHRcdFx0Zm9yKHZhciBqID0gMDsgaiA8IGRvbVN0eWxlLnBhcnRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdGRvbVN0eWxlLnBhcnRzW2pdKGl0ZW0ucGFydHNbal0pO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3IoOyBqIDwgaXRlbS5wYXJ0cy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRkb21TdHlsZS5wYXJ0cy5wdXNoKGFkZFN0eWxlKGl0ZW0ucGFydHNbal0sIG9wdGlvbnMpKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0dmFyIHBhcnRzID0gW107XG5cblx0XHRcdGZvcih2YXIgaiA9IDA7IGogPCBpdGVtLnBhcnRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdHBhcnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tqXSwgb3B0aW9ucykpO1xuXHRcdFx0fVxuXG5cdFx0XHRzdHlsZXNJbkRvbVtpdGVtLmlkXSA9IHtpZDogaXRlbS5pZCwgcmVmczogMSwgcGFydHM6IHBhcnRzfTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gbGlzdFRvU3R5bGVzIChsaXN0LCBvcHRpb25zKSB7XG5cdHZhciBzdHlsZXMgPSBbXTtcblx0dmFyIG5ld1N0eWxlcyA9IHt9O1xuXG5cdGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdHZhciBpdGVtID0gbGlzdFtpXTtcblx0XHR2YXIgaWQgPSBvcHRpb25zLmJhc2UgPyBpdGVtWzBdICsgb3B0aW9ucy5iYXNlIDogaXRlbVswXTtcblx0XHR2YXIgY3NzID0gaXRlbVsxXTtcblx0XHR2YXIgbWVkaWEgPSBpdGVtWzJdO1xuXHRcdHZhciBzb3VyY2VNYXAgPSBpdGVtWzNdO1xuXHRcdHZhciBwYXJ0ID0ge2NzczogY3NzLCBtZWRpYTogbWVkaWEsIHNvdXJjZU1hcDogc291cmNlTWFwfTtcblxuXHRcdGlmKCFuZXdTdHlsZXNbaWRdKSBzdHlsZXMucHVzaChuZXdTdHlsZXNbaWRdID0ge2lkOiBpZCwgcGFydHM6IFtwYXJ0XX0pO1xuXHRcdGVsc2UgbmV3U3R5bGVzW2lkXS5wYXJ0cy5wdXNoKHBhcnQpO1xuXHR9XG5cblx0cmV0dXJuIHN0eWxlcztcbn1cblxuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50IChvcHRpb25zLCBzdHlsZSkge1xuXHR2YXIgdGFyZ2V0ID0gZ2V0RWxlbWVudChvcHRpb25zLmluc2VydEludG8pXG5cblx0aWYgKCF0YXJnZXQpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydEludG8nIHBhcmFtZXRlciBpcyBpbnZhbGlkLlwiKTtcblx0fVxuXG5cdHZhciBsYXN0U3R5bGVFbGVtZW50SW5zZXJ0ZWRBdFRvcCA9IHN0eWxlc0luc2VydGVkQXRUb3Bbc3R5bGVzSW5zZXJ0ZWRBdFRvcC5sZW5ndGggLSAxXTtcblxuXHRpZiAob3B0aW9ucy5pbnNlcnRBdCA9PT0gXCJ0b3BcIikge1xuXHRcdGlmICghbGFzdFN0eWxlRWxlbWVudEluc2VydGVkQXRUb3ApIHtcblx0XHRcdHRhcmdldC5pbnNlcnRCZWZvcmUoc3R5bGUsIHRhcmdldC5maXJzdENoaWxkKTtcblx0XHR9IGVsc2UgaWYgKGxhc3RTdHlsZUVsZW1lbnRJbnNlcnRlZEF0VG9wLm5leHRTaWJsaW5nKSB7XG5cdFx0XHR0YXJnZXQuaW5zZXJ0QmVmb3JlKHN0eWxlLCBsYXN0U3R5bGVFbGVtZW50SW5zZXJ0ZWRBdFRvcC5uZXh0U2libGluZyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG5cdFx0fVxuXHRcdHN0eWxlc0luc2VydGVkQXRUb3AucHVzaChzdHlsZSk7XG5cdH0gZWxzZSBpZiAob3B0aW9ucy5pbnNlcnRBdCA9PT0gXCJib3R0b21cIikge1xuXHRcdHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG5cdH0gZWxzZSBpZiAodHlwZW9mIG9wdGlvbnMuaW5zZXJ0QXQgPT09IFwib2JqZWN0XCIgJiYgb3B0aW9ucy5pbnNlcnRBdC5iZWZvcmUpIHtcblx0XHR2YXIgbmV4dFNpYmxpbmcgPSBnZXRFbGVtZW50KG9wdGlvbnMuaW5zZXJ0SW50byArIFwiIFwiICsgb3B0aW9ucy5pbnNlcnRBdC5iZWZvcmUpO1xuXHRcdHRhcmdldC5pbnNlcnRCZWZvcmUoc3R5bGUsIG5leHRTaWJsaW5nKTtcblx0fSBlbHNlIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJbU3R5bGUgTG9hZGVyXVxcblxcbiBJbnZhbGlkIHZhbHVlIGZvciBwYXJhbWV0ZXIgJ2luc2VydEF0JyAoJ29wdGlvbnMuaW5zZXJ0QXQnKSBmb3VuZC5cXG4gTXVzdCBiZSAndG9wJywgJ2JvdHRvbScsIG9yIE9iamVjdC5cXG4gKGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrLWNvbnRyaWIvc3R5bGUtbG9hZGVyI2luc2VydGF0KVxcblwiKTtcblx0fVxufVxuXG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQgKHN0eWxlKSB7XG5cdGlmIChzdHlsZS5wYXJlbnROb2RlID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG5cdHN0eWxlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGUpO1xuXG5cdHZhciBpZHggPSBzdHlsZXNJbnNlcnRlZEF0VG9wLmluZGV4T2Yoc3R5bGUpO1xuXHRpZihpZHggPj0gMCkge1xuXHRcdHN0eWxlc0luc2VydGVkQXRUb3Auc3BsaWNlKGlkeCwgMSk7XG5cdH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlU3R5bGVFbGVtZW50IChvcHRpb25zKSB7XG5cdHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcblxuXHRvcHRpb25zLmF0dHJzLnR5cGUgPSBcInRleHQvY3NzXCI7XG5cblx0YWRkQXR0cnMoc3R5bGUsIG9wdGlvbnMuYXR0cnMpO1xuXHRpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucywgc3R5bGUpO1xuXG5cdHJldHVybiBzdHlsZTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlTGlua0VsZW1lbnQgKG9wdGlvbnMpIHtcblx0dmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtcblxuXHRvcHRpb25zLmF0dHJzLnR5cGUgPSBcInRleHQvY3NzXCI7XG5cdG9wdGlvbnMuYXR0cnMucmVsID0gXCJzdHlsZXNoZWV0XCI7XG5cblx0YWRkQXR0cnMobGluaywgb3B0aW9ucy5hdHRycyk7XG5cdGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zLCBsaW5rKTtcblxuXHRyZXR1cm4gbGluaztcbn1cblxuZnVuY3Rpb24gYWRkQXR0cnMgKGVsLCBhdHRycykge1xuXHRPYmplY3Qua2V5cyhhdHRycykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG5cdFx0ZWwuc2V0QXR0cmlidXRlKGtleSwgYXR0cnNba2V5XSk7XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBhZGRTdHlsZSAob2JqLCBvcHRpb25zKSB7XG5cdHZhciBzdHlsZSwgdXBkYXRlLCByZW1vdmUsIHJlc3VsdDtcblxuXHQvLyBJZiBhIHRyYW5zZm9ybSBmdW5jdGlvbiB3YXMgZGVmaW5lZCwgcnVuIGl0IG9uIHRoZSBjc3Ncblx0aWYgKG9wdGlvbnMudHJhbnNmb3JtICYmIG9iai5jc3MpIHtcblx0ICAgIHJlc3VsdCA9IG9wdGlvbnMudHJhbnNmb3JtKG9iai5jc3MpO1xuXG5cdCAgICBpZiAocmVzdWx0KSB7XG5cdCAgICBcdC8vIElmIHRyYW5zZm9ybSByZXR1cm5zIGEgdmFsdWUsIHVzZSB0aGF0IGluc3RlYWQgb2YgdGhlIG9yaWdpbmFsIGNzcy5cblx0ICAgIFx0Ly8gVGhpcyBhbGxvd3MgcnVubmluZyBydW50aW1lIHRyYW5zZm9ybWF0aW9ucyBvbiB0aGUgY3NzLlxuXHQgICAgXHRvYmouY3NzID0gcmVzdWx0O1xuXHQgICAgfSBlbHNlIHtcblx0ICAgIFx0Ly8gSWYgdGhlIHRyYW5zZm9ybSBmdW5jdGlvbiByZXR1cm5zIGEgZmFsc3kgdmFsdWUsIGRvbid0IGFkZCB0aGlzIGNzcy5cblx0ICAgIFx0Ly8gVGhpcyBhbGxvd3MgY29uZGl0aW9uYWwgbG9hZGluZyBvZiBjc3Ncblx0ICAgIFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xuXHQgICAgXHRcdC8vIG5vb3Bcblx0ICAgIFx0fTtcblx0ICAgIH1cblx0fVxuXG5cdGlmIChvcHRpb25zLnNpbmdsZXRvbikge1xuXHRcdHZhciBzdHlsZUluZGV4ID0gc2luZ2xldG9uQ291bnRlcisrO1xuXG5cdFx0c3R5bGUgPSBzaW5nbGV0b24gfHwgKHNpbmdsZXRvbiA9IGNyZWF0ZVN0eWxlRWxlbWVudChvcHRpb25zKSk7XG5cblx0XHR1cGRhdGUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGUsIHN0eWxlSW5kZXgsIGZhbHNlKTtcblx0XHRyZW1vdmUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGUsIHN0eWxlSW5kZXgsIHRydWUpO1xuXG5cdH0gZWxzZSBpZiAoXG5cdFx0b2JqLnNvdXJjZU1hcCAmJlxuXHRcdHR5cGVvZiBVUkwgPT09IFwiZnVuY3Rpb25cIiAmJlxuXHRcdHR5cGVvZiBVUkwuY3JlYXRlT2JqZWN0VVJMID09PSBcImZ1bmN0aW9uXCIgJiZcblx0XHR0eXBlb2YgVVJMLnJldm9rZU9iamVjdFVSTCA9PT0gXCJmdW5jdGlvblwiICYmXG5cdFx0dHlwZW9mIEJsb2IgPT09IFwiZnVuY3Rpb25cIiAmJlxuXHRcdHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCJcblx0KSB7XG5cdFx0c3R5bGUgPSBjcmVhdGVMaW5rRWxlbWVudChvcHRpb25zKTtcblx0XHR1cGRhdGUgPSB1cGRhdGVMaW5rLmJpbmQobnVsbCwgc3R5bGUsIG9wdGlvbnMpO1xuXHRcdHJlbW92ZSA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZSk7XG5cblx0XHRcdGlmKHN0eWxlLmhyZWYpIFVSTC5yZXZva2VPYmplY3RVUkwoc3R5bGUuaHJlZik7XG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHRzdHlsZSA9IGNyZWF0ZVN0eWxlRWxlbWVudChvcHRpb25zKTtcblx0XHR1cGRhdGUgPSBhcHBseVRvVGFnLmJpbmQobnVsbCwgc3R5bGUpO1xuXHRcdHJlbW92ZSA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZSk7XG5cdFx0fTtcblx0fVxuXG5cdHVwZGF0ZShvYmopO1xuXG5cdHJldHVybiBmdW5jdGlvbiB1cGRhdGVTdHlsZSAobmV3T2JqKSB7XG5cdFx0aWYgKG5ld09iaikge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRuZXdPYmouY3NzID09PSBvYmouY3NzICYmXG5cdFx0XHRcdG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmXG5cdFx0XHRcdG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXBcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdHVwZGF0ZShvYmogPSBuZXdPYmopO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZW1vdmUoKTtcblx0XHR9XG5cdH07XG59XG5cbnZhciByZXBsYWNlVGV4dCA9IChmdW5jdGlvbiAoKSB7XG5cdHZhciB0ZXh0U3RvcmUgPSBbXTtcblxuXHRyZXR1cm4gZnVuY3Rpb24gKGluZGV4LCByZXBsYWNlbWVudCkge1xuXHRcdHRleHRTdG9yZVtpbmRleF0gPSByZXBsYWNlbWVudDtcblxuXHRcdHJldHVybiB0ZXh0U3RvcmUuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcbicpO1xuXHR9O1xufSkoKTtcblxuZnVuY3Rpb24gYXBwbHlUb1NpbmdsZXRvblRhZyAoc3R5bGUsIGluZGV4LCByZW1vdmUsIG9iaikge1xuXHR2YXIgY3NzID0gcmVtb3ZlID8gXCJcIiA6IG9iai5jc3M7XG5cblx0aWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcblx0XHRzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSByZXBsYWNlVGV4dChpbmRleCwgY3NzKTtcblx0fSBlbHNlIHtcblx0XHR2YXIgY3NzTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcyk7XG5cdFx0dmFyIGNoaWxkTm9kZXMgPSBzdHlsZS5jaGlsZE5vZGVzO1xuXG5cdFx0aWYgKGNoaWxkTm9kZXNbaW5kZXhdKSBzdHlsZS5yZW1vdmVDaGlsZChjaGlsZE5vZGVzW2luZGV4XSk7XG5cblx0XHRpZiAoY2hpbGROb2Rlcy5sZW5ndGgpIHtcblx0XHRcdHN0eWxlLmluc2VydEJlZm9yZShjc3NOb2RlLCBjaGlsZE5vZGVzW2luZGV4XSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN0eWxlLmFwcGVuZENoaWxkKGNzc05vZGUpO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBhcHBseVRvVGFnIChzdHlsZSwgb2JqKSB7XG5cdHZhciBjc3MgPSBvYmouY3NzO1xuXHR2YXIgbWVkaWEgPSBvYmoubWVkaWE7XG5cblx0aWYobWVkaWEpIHtcblx0XHRzdHlsZS5zZXRBdHRyaWJ1dGUoXCJtZWRpYVwiLCBtZWRpYSlcblx0fVxuXG5cdGlmKHN0eWxlLnN0eWxlU2hlZXQpIHtcblx0XHRzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG5cdH0gZWxzZSB7XG5cdFx0d2hpbGUoc3R5bGUuZmlyc3RDaGlsZCkge1xuXHRcdFx0c3R5bGUucmVtb3ZlQ2hpbGQoc3R5bGUuZmlyc3RDaGlsZCk7XG5cdFx0fVxuXG5cdFx0c3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG5cdH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlTGluayAobGluaywgb3B0aW9ucywgb2JqKSB7XG5cdHZhciBjc3MgPSBvYmouY3NzO1xuXHR2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcblxuXHQvKlxuXHRcdElmIGNvbnZlcnRUb0Fic29sdXRlVXJscyBpc24ndCBkZWZpbmVkLCBidXQgc291cmNlbWFwcyBhcmUgZW5hYmxlZFxuXHRcdGFuZCB0aGVyZSBpcyBubyBwdWJsaWNQYXRoIGRlZmluZWQgdGhlbiBsZXRzIHR1cm4gY29udmVydFRvQWJzb2x1dGVVcmxzXG5cdFx0b24gYnkgZGVmYXVsdC4gIE90aGVyd2lzZSBkZWZhdWx0IHRvIHRoZSBjb252ZXJ0VG9BYnNvbHV0ZVVybHMgb3B0aW9uXG5cdFx0ZGlyZWN0bHlcblx0Ki9cblx0dmFyIGF1dG9GaXhVcmxzID0gb3B0aW9ucy5jb252ZXJ0VG9BYnNvbHV0ZVVybHMgPT09IHVuZGVmaW5lZCAmJiBzb3VyY2VNYXA7XG5cblx0aWYgKG9wdGlvbnMuY29udmVydFRvQWJzb2x1dGVVcmxzIHx8IGF1dG9GaXhVcmxzKSB7XG5cdFx0Y3NzID0gZml4VXJscyhjc3MpO1xuXHR9XG5cblx0aWYgKHNvdXJjZU1hcCkge1xuXHRcdC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI2NjAzODc1XG5cdFx0Y3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIiArIGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSkgKyBcIiAqL1wiO1xuXHR9XG5cblx0dmFyIGJsb2IgPSBuZXcgQmxvYihbY3NzXSwgeyB0eXBlOiBcInRleHQvY3NzXCIgfSk7XG5cblx0dmFyIG9sZFNyYyA9IGxpbmsuaHJlZjtcblxuXHRsaW5rLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuXG5cdGlmKG9sZFNyYykgVVJMLnJldm9rZU9iamVjdFVSTChvbGRTcmMpO1xufVxuIiwiXG4vKipcbiAqIFdoZW4gc291cmNlIG1hcHMgYXJlIGVuYWJsZWQsIGBzdHlsZS1sb2FkZXJgIHVzZXMgYSBsaW5rIGVsZW1lbnQgd2l0aCBhIGRhdGEtdXJpIHRvXG4gKiBlbWJlZCB0aGUgY3NzIG9uIHRoZSBwYWdlLiBUaGlzIGJyZWFrcyBhbGwgcmVsYXRpdmUgdXJscyBiZWNhdXNlIG5vdyB0aGV5IGFyZSByZWxhdGl2ZSB0byBhXG4gKiBidW5kbGUgaW5zdGVhZCBvZiB0aGUgY3VycmVudCBwYWdlLlxuICpcbiAqIE9uZSBzb2x1dGlvbiBpcyB0byBvbmx5IHVzZSBmdWxsIHVybHMsIGJ1dCB0aGF0IG1heSBiZSBpbXBvc3NpYmxlLlxuICpcbiAqIEluc3RlYWQsIHRoaXMgZnVuY3Rpb24gXCJmaXhlc1wiIHRoZSByZWxhdGl2ZSB1cmxzIHRvIGJlIGFic29sdXRlIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBwYWdlIGxvY2F0aW9uLlxuICpcbiAqIEEgcnVkaW1lbnRhcnkgdGVzdCBzdWl0ZSBpcyBsb2NhdGVkIGF0IGB0ZXN0L2ZpeFVybHMuanNgIGFuZCBjYW4gYmUgcnVuIHZpYSB0aGUgYG5wbSB0ZXN0YCBjb21tYW5kLlxuICpcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjc3MpIHtcbiAgLy8gZ2V0IGN1cnJlbnQgbG9jYXRpb25cbiAgdmFyIGxvY2F0aW9uID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB3aW5kb3cubG9jYXRpb247XG5cbiAgaWYgKCFsb2NhdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihcImZpeFVybHMgcmVxdWlyZXMgd2luZG93LmxvY2F0aW9uXCIpO1xuICB9XG5cblx0Ly8gYmxhbmsgb3IgbnVsbD9cblx0aWYgKCFjc3MgfHwgdHlwZW9mIGNzcyAhPT0gXCJzdHJpbmdcIikge1xuXHQgIHJldHVybiBjc3M7XG4gIH1cblxuICB2YXIgYmFzZVVybCA9IGxvY2F0aW9uLnByb3RvY29sICsgXCIvL1wiICsgbG9jYXRpb24uaG9zdDtcbiAgdmFyIGN1cnJlbnREaXIgPSBiYXNlVXJsICsgbG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvXFwvW15cXC9dKiQvLCBcIi9cIik7XG5cblx0Ly8gY29udmVydCBlYWNoIHVybCguLi4pXG5cdC8qXG5cdFRoaXMgcmVndWxhciBleHByZXNzaW9uIGlzIGp1c3QgYSB3YXkgdG8gcmVjdXJzaXZlbHkgbWF0Y2ggYnJhY2tldHMgd2l0aGluXG5cdGEgc3RyaW5nLlxuXG5cdCAvdXJsXFxzKlxcKCAgPSBNYXRjaCBvbiB0aGUgd29yZCBcInVybFwiIHdpdGggYW55IHdoaXRlc3BhY2UgYWZ0ZXIgaXQgYW5kIHRoZW4gYSBwYXJlbnNcblx0ICAgKCAgPSBTdGFydCBhIGNhcHR1cmluZyBncm91cFxuXHQgICAgICg/OiAgPSBTdGFydCBhIG5vbi1jYXB0dXJpbmcgZ3JvdXBcblx0ICAgICAgICAgW14pKF0gID0gTWF0Y2ggYW55dGhpbmcgdGhhdCBpc24ndCBhIHBhcmVudGhlc2VzXG5cdCAgICAgICAgIHwgID0gT1Jcblx0ICAgICAgICAgXFwoICA9IE1hdGNoIGEgc3RhcnQgcGFyZW50aGVzZXNcblx0ICAgICAgICAgICAgICg/OiAgPSBTdGFydCBhbm90aGVyIG5vbi1jYXB0dXJpbmcgZ3JvdXBzXG5cdCAgICAgICAgICAgICAgICAgW14pKF0rICA9IE1hdGNoIGFueXRoaW5nIHRoYXQgaXNuJ3QgYSBwYXJlbnRoZXNlc1xuXHQgICAgICAgICAgICAgICAgIHwgID0gT1Jcblx0ICAgICAgICAgICAgICAgICBcXCggID0gTWF0Y2ggYSBzdGFydCBwYXJlbnRoZXNlc1xuXHQgICAgICAgICAgICAgICAgICAgICBbXikoXSogID0gTWF0Y2ggYW55dGhpbmcgdGhhdCBpc24ndCBhIHBhcmVudGhlc2VzXG5cdCAgICAgICAgICAgICAgICAgXFwpICA9IE1hdGNoIGEgZW5kIHBhcmVudGhlc2VzXG5cdCAgICAgICAgICAgICApICA9IEVuZCBHcm91cFxuICAgICAgICAgICAgICAqXFwpID0gTWF0Y2ggYW55dGhpbmcgYW5kIHRoZW4gYSBjbG9zZSBwYXJlbnNcbiAgICAgICAgICApICA9IENsb3NlIG5vbi1jYXB0dXJpbmcgZ3JvdXBcbiAgICAgICAgICAqICA9IE1hdGNoIGFueXRoaW5nXG4gICAgICAgKSAgPSBDbG9zZSBjYXB0dXJpbmcgZ3JvdXBcblx0IFxcKSAgPSBNYXRjaCBhIGNsb3NlIHBhcmVuc1xuXG5cdCAvZ2kgID0gR2V0IGFsbCBtYXRjaGVzLCBub3QgdGhlIGZpcnN0LiAgQmUgY2FzZSBpbnNlbnNpdGl2ZS5cblx0ICovXG5cdHZhciBmaXhlZENzcyA9IGNzcy5yZXBsYWNlKC91cmxcXHMqXFwoKCg/OlteKShdfFxcKCg/OlteKShdK3xcXChbXikoXSpcXCkpKlxcKSkqKVxcKS9naSwgZnVuY3Rpb24oZnVsbE1hdGNoLCBvcmlnVXJsKSB7XG5cdFx0Ly8gc3RyaXAgcXVvdGVzIChpZiB0aGV5IGV4aXN0KVxuXHRcdHZhciB1bnF1b3RlZE9yaWdVcmwgPSBvcmlnVXJsXG5cdFx0XHQudHJpbSgpXG5cdFx0XHQucmVwbGFjZSgvXlwiKC4qKVwiJC8sIGZ1bmN0aW9uKG8sICQxKXsgcmV0dXJuICQxOyB9KVxuXHRcdFx0LnJlcGxhY2UoL14nKC4qKSckLywgZnVuY3Rpb24obywgJDEpeyByZXR1cm4gJDE7IH0pO1xuXG5cdFx0Ly8gYWxyZWFkeSBhIGZ1bGwgdXJsPyBubyBjaGFuZ2Vcblx0XHRpZiAoL14oI3xkYXRhOnxodHRwOlxcL1xcL3xodHRwczpcXC9cXC98ZmlsZTpcXC9cXC9cXC98XFxzKiQpL2kudGVzdCh1bnF1b3RlZE9yaWdVcmwpKSB7XG5cdFx0ICByZXR1cm4gZnVsbE1hdGNoO1xuXHRcdH1cblxuXHRcdC8vIGNvbnZlcnQgdGhlIHVybCB0byBhIGZ1bGwgdXJsXG5cdFx0dmFyIG5ld1VybDtcblxuXHRcdGlmICh1bnF1b3RlZE9yaWdVcmwuaW5kZXhPZihcIi8vXCIpID09PSAwKSB7XG5cdFx0ICBcdC8vVE9ETzogc2hvdWxkIHdlIGFkZCBwcm90b2NvbD9cblx0XHRcdG5ld1VybCA9IHVucXVvdGVkT3JpZ1VybDtcblx0XHR9IGVsc2UgaWYgKHVucXVvdGVkT3JpZ1VybC5pbmRleE9mKFwiL1wiKSA9PT0gMCkge1xuXHRcdFx0Ly8gcGF0aCBzaG91bGQgYmUgcmVsYXRpdmUgdG8gdGhlIGJhc2UgdXJsXG5cdFx0XHRuZXdVcmwgPSBiYXNlVXJsICsgdW5xdW90ZWRPcmlnVXJsOyAvLyBhbHJlYWR5IHN0YXJ0cyB3aXRoICcvJ1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZSB0byBjdXJyZW50IGRpcmVjdG9yeVxuXHRcdFx0bmV3VXJsID0gY3VycmVudERpciArIHVucXVvdGVkT3JpZ1VybC5yZXBsYWNlKC9eXFwuXFwvLywgXCJcIik7IC8vIFN0cmlwIGxlYWRpbmcgJy4vJ1xuXHRcdH1cblxuXHRcdC8vIHNlbmQgYmFjayB0aGUgZml4ZWQgdXJsKC4uLilcblx0XHRyZXR1cm4gXCJ1cmwoXCIgKyBKU09OLnN0cmluZ2lmeShuZXdVcmwpICsgXCIpXCI7XG5cdH0pO1xuXG5cdC8vIHNlbmQgYmFjayB0aGUgZml4ZWQgY3NzXG5cdHJldHVybiBmaXhlZENzcztcbn07XG4iLCJ2YXIgZztcblxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcbmcgPSAoZnVuY3Rpb24oKSB7XG5cdHJldHVybiB0aGlzO1xufSkoKTtcblxudHJ5IHtcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXG5cdGcgPSBnIHx8IG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XG59IGNhdGNoIChlKSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXG5cdGlmICh0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKSBnID0gd2luZG93O1xufVxuXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5nIHRvIGRvIGFib3V0IGl0Li4uXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGc7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHRpZiAoIW1vZHVsZS53ZWJwYWNrUG9seWZpbGwpIHtcblx0XHRtb2R1bGUuZGVwcmVjYXRlID0gZnVuY3Rpb24oKSB7fTtcblx0XHRtb2R1bGUucGF0aHMgPSBbXTtcblx0XHQvLyBtb2R1bGUucGFyZW50ID0gdW5kZWZpbmVkIGJ5IGRlZmF1bHRcblx0XHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJsb2FkZWRcIiwge1xuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBtb2R1bGUubDtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImlkXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0bW9kdWxlLndlYnBhY2tQb2x5ZmlsbCA9IDE7XG5cdH1cblx0cmV0dXJuIG1vZHVsZTtcbn07XG4iLCIvKlxuKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQkJqR3JpZEV4V2lkZ2V0IHBsdWdpbi5cbiogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuKlxuKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiovXG5cbmltcG9ydCB7IGd3X2dldEdyaWQgfSBmcm9tIFwiLi91dGlsaXRpZXNcIjtcbmltcG9ydCB7IGd3X3BhcnNlTm9kZSB9IGZyb20gXCJldmVudHMvdXRpbGl0aWVzXCI7XG5cbmNvbnN0IHsgZGVlcFBhcnNlSnNvbiB9ID0gcmVxdWlyZShcImRlZXAtcGFyc2UtanNvblwiKTtcblxuLyoqXG4gKiBTdGFydCBjZWxsIGVkaXRpbmdcbiAqIFxuICogQHBhcmFtIHtTdHJpbmd9IGlkIFRoZSBncmlkJ3MgaWQgXG4gKiBAcGFyYW0ge1N0cmluZ3xudW1iZXJ9IHJvdyBUaGUgcm93IGluZGV4IG9yIGtleVxuICogQHBhcmFtIHtTdHJpbmd9IGNvbEtleSBUaGUgY29sdW1uJ3Mga2V5XG4gKiBAcGFyYW0ge1N0cmluZ3xOdW1iZXJ9IGtleSAgS2V5IHByZXNzXG4gKiBAcGFyYW0ge1N0cmluZ30gY2hhciBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3N0YXJ0RWRpdGluZ0NlbGwoaWQsIHJvdywgY29sS2V5LCBrZXksIGNoYXIpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGd3X2dldEdyaWQoaWQpLm9wdGlvbnM7XG4gIGNvbnN0IGFwaSA9IG9wdGlvbnMuYXBpO1xuICBjb25zdCBub2RlID0gYXBpLmdldFJvd05vZGUocm93KSB8fCBhcGkuZ2V0RGlzcGxheWVkUm93QXRJbmRleChyb3cpO1xuXG4gIG9wdGlvbnMuYXBpLnNldEZvY3VzZWRDZWxsKG5vZGUucm93SW5kZXgsIGNvbEtleSk7XG4gIG9wdGlvbnMuYXBpLnN0YXJ0RWRpdGluZ0NlbGwoe1xuICAgIHJvd0luZGV4OiBub2RlLnJvd0luZGV4LFxuICAgIGNvbEtleTogY29sS2V5LFxuICAgIGtleVByZXNzOiBOdW1iZXIoa2V5KSxcbiAgICBjaGFyUHJlc3M6IGNoYXJcbiAgfSk7XG59XG5cbi8qKlxuICogU3RvcCBjZWxsIGVkaXRpbmcgXG4gKiBcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCBUaGUgZ3JpZCdzIGlkIFxuICogQHBhcmFtIHtCb29sZWFufSBjYW5jZWwgd2hlbiB0cnVlIGNhbmNlbCBlZGl0cyAsIHNhdmUgZWRpdHMgb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19zdG9wRWRpdGluZyhpZCwgY2FuY2VsKSB7XG4gIGd3X2dldEdyaWQoaWQpXG4gICAgLm9wdGlvbnNcbiAgICAuYXBpXG4gICAgLnN0b3BFZGl0aW5nKGNhbmNlbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnd19lZGl0TmV4dENlbGwoaWQpIHtcbiAgZ3dfZ2V0R3JpZChpZClcbiAgICAub3B0aW9uc1xuICAgIC5hcGlcbiAgICAudGFiVG9OZXh0Q2VsbCgpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGd3X2VkaXRQcmV2aW91c0NlbGwoaWQpIHtcbiAgZ3dfZ2V0R3JpZChpZClcbiAgICAub3B0aW9uc1xuICAgIC5hcGlcbiAgICAudGFiVG9QcmV2aW91c0NlbGwoKTtcbn1cblxuLyoqXG4gKiBTZXQgRm9jdXMgb24gdGhlIGdpdmVuIHJvdyBhbmQgY29sdW1uXG4gKiBcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCBUaGUgZ3JpZCdzIGlkIFxuICogQHBhcmFtIHtTdHJpbmd8TnVtYmVyfSByb3cgVGhlIHJvdydzIGluZGV4L2lkXG4gKiBAcGFyYW0ge1N0cmluZ30gY29sdW1uIFRoZSBjb2x1bW4gaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3NldEZvY3VzZWRDZWxsKGlkLCByb3csIGNvbHVtbikge1xuICBjb25zdCBvcHRpb25zID0gZ3dfZ2V0R3JpZChpZCkub3B0aW9ucztcbiAgY29uc3QgciA9ICFyb3cgPyAwIDogKE51bWJlci5pc0ludGVnZXIoK3JvdykgPyArcm93IDogb3B0aW9ucy5hcGkuZ2V0Um93Tm9kZShyb3cpLnJvd0luZGV4KTtcbiAgY29uc3QgYyA9IGNvbHVtbiA/IGNvbHVtbiA6IG9wdGlvbnMuY29sdW1uQXBpLmdldEFsbEdyaWRDb2x1bW5zKClbMF0uY29sSWQ7XG4gIGd3X2dldEdyaWQoaWQpXG4gICAgLm9wdGlvbnNcbiAgICAuYXBpXG4gICAgLnNldEZvY3VzZWRDZWxsKHIsIGMpO1xufVxuXG4vKipcbiAqIEdldCBSYW5nZSBTZWxlY3Rpb25zXG4gKiBcbiAqIFRoZSBtZXRob2Qgd2lsbCBjcmVhdGUgYSByYW5nZSBqc29uIG1vZGVsIGZvciBlYWNoIHJhbmdlIHdoaWNoIGNhbiBiZSBwYXJzZWQgaW4gQkJqIHNpZGUuXG4gKiBcbiAqIEBwYXJhbSB7TnVtYmVyfSBpZCBncmlkJ3MgaWRcbiAqIFxuICogQHJldHVybnMge1N0cmluZ30gc2VsZWN0ZWQgcmFuZ2VzIGFzIEpTT05cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X2dldFJhbmdlU2VsZWN0aW9ucyhpZCkge1xuICBjb25zdCBvcHRpb25zID0gZ3dfZ2V0R3JpZChpZCkub3B0aW9ucztcbiAgY29uc3QgY29udGV4dCA9IG9wdGlvbnMuY29udGV4dDtcbiAgY29uc3QgYXBpID0gb3B0aW9ucy5hcGk7XG4gIGNvbnN0IHJhbmdlcyA9IGFwaS5nZXRDZWxsUmFuZ2VzKCk7XG4gIGNvbnN0IG1vZGVsID0gYXBpLmdldE1vZGVsKCk7XG4gIGxldCByZXN1bHQgPSBbXTtcblxuICByYW5nZXMuZm9yRWFjaChyYW5nZSA9PiB7XG5cbiAgICAvLyBjb25zdCBzdGFydCA9IGd3X3BhcnNlTm9kZShtb2RlbC5nZXRSb3cocmFuZ2Uuc3RhcnRSb3cucm93SW5kZXgpLCBvcHRpb25zLmNvbnRleHQpO1xuICAgIC8vIGNvbnN0IGVuZCA9IGd3X3BhcnNlTm9kZShtb2RlbC5nZXRSb3cocmFuZ2UuZW5kUm93LnJvd0luZGV4KSwgb3B0aW9ucy5jb250ZXh0KTtcblxuICAgIC8vaWYgKHN0YXJ0ICE9PSBmYWxzZSAmJiBlbmQgIT09IGZhbHNlKSB7XG4gICAgY29uc3QgY29sdW1ucyA9IHJhbmdlLmNvbHVtbnMucmVkdWNlKChhY2N1bXVsYXRvciwgY3VycmVudCkgPT4ge1xuXG4gICAgICBpZiAoXCJhZy1HcmlkLUF1dG9Db2x1bW5cIiAhPT0gY3VycmVudC5jb2xJZCkge1xuICAgICAgICBhY2N1bXVsYXRvci5wdXNoKGN1cnJlbnQuY29sSWQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgfSwgW10pLmZpbHRlcihCb29sZWFuKTtcblxuICAgIGNvbnN0IHN0YXJJbmRleCA9IE1hdGgubWluKHJhbmdlLnN0YXJ0Um93LnJvd0luZGV4LCByYW5nZS5lbmRSb3cucm93SW5kZXgpO1xuICAgIGNvbnN0IGVuZEluZGV4ID0gTWF0aC5tYXgocmFuZ2Uuc3RhcnRSb3cucm93SW5kZXgsIHJhbmdlLmVuZFJvdy5yb3dJbmRleCk7XG4gICAgY29uc3Qgcm93cyA9IFtdO1xuXG4gICAgZm9yIChsZXQgcm93SW5kZXggPSBzdGFySW5kZXg7IHJvd0luZGV4IDw9IGVuZEluZGV4OyByb3dJbmRleCsrKSB7XG4gICAgICBjb25zdCBub2RlID0gbW9kZWwuZ2V0Um93KHJvd0luZGV4KTtcbiAgICAgIGlmIChub2RlKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZE5vZGUgPSBnd19wYXJzZU5vZGUobm9kZSwgY29udGV4dCk7XG4gICAgICAgIGlmIChwYXJzZWROb2RlKSByb3dzLnB1c2gocGFyc2VkTm9kZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJvd3MubGVuZ3RoICYmIGNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICByZXN1bHQucHVzaCh7IHI6IHJvd3MsIGM6IGNvbHVtbnMgfSk7XG4gICAgfVxuICAgIC8vfVxuICB9KTtcblxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocmVzdWx0KTtcbn1cblxuLyoqXG4gKiBQYXJzZSB0aGUgY2VsbHMgcmFuZ2UgaW4gYSBmb3JtYXQgdGhlIGdyaWQgY2FuIHVuZGVyc3RhbmQgd2hlbiBpdCBpcyBwYXNzZWQgXG4gKiB0byBgYXBpLmFkZENlbGxSYW5nZWBcbiAqIFxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgVGhlIGdyaWQncyBvcHRpb25zXG4gKiBAcGFyYW0ge09iamVjdH0gcmFuZ2UgIGJvdW5kZWQgb3IgdW5ib3VuZGVkIHJhbmdlIG1vZGVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19wYXJzZUFkZENlbGxSYW5nZShvcHRpb25zICwgcmFuZ2UpIHtcbiAgY29uc3QgcHIgPSBkZWVwUGFyc2VKc29uKEpTT04uc3RyaW5naWZ5KHJhbmdlKSk7XG4gIGNvbnN0IHN0YXJ0ID0gIShwci5zdGFydCB8fCBudWxsKSA/XG4gICAgMCA6IChOdW1iZXIuaXNJbnRlZ2VyKCtwci5zdGFydCkgPyArcHIuc3RhcnQgOiBvcHRpb25zLmFwaS5nZXRSb3dOb2RlKHByLnN0YXJ0KS5yb3dJbmRleCk7XG4gIGNvbnN0IGVuZCA9ICEocHIuZW5kIHx8IG51bGwpID9cbiAgICAob3B0aW9ucy5yb3dEYXRhLmxlbmd0aCAtIDEpIDogKE51bWJlci5pc0ludGVnZXIoK3ByLmVuZCkgPyArcHIuZW5kIDogb3B0aW9ucy5hcGkuZ2V0Um93Tm9kZShwci5lbmQpLnJvd0luZGV4KTtcblxuICByZXR1cm4ge1xuICAgIHJvd1N0YXJ0SW5kZXg6IE1hdGguYWJzKHN0YXJ0KSxcbiAgICByb3dFbmRJbmRleDogTWF0aC5hYnMoZW5kKSxcbiAgICBjb2x1bW5zOiBwci5jb2x1bW5zXG4gIH07XG59XG4vKipcbiAqIEFkZCBuZXcgY2VsbCByYW5nZVxuICogXG4gKiBAcGFyYW0ge051bWJlcn0gaWQgZ3JpZCdzIGlkXG4gKiBAcGFyYW0ge09iamVjdH0gcmFuZ2UgIGJvdW5kZWQgb3IgdW5ib3VuZGVkIHJhbmdlIG1vZGVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19hZGRDZWxsUmFuZ2UoaWQsIHJhbmdlKSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnd19nZXRHcmlkKGlkKS5vcHRpb25zO1xuICBvcHRpb25zLmFwaS5hZGRDZWxsUmFuZ2UoZ3dfcGFyc2VBZGRDZWxsUmFuZ2Uob3B0aW9ucywgcmFuZ2UpKTtcbn1cblxuLyoqXG4gKiBDbGVhcnMgdGhlIHNlbGVjdGVkIHJhbmdlLlxuICogXG4gKiBAcGFyYW0ge051bWJlcn0gaWQgZ3JpZCdzIGlkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19jbGVhclJhbmdlU2VsZWN0aW9uKGlkKSB7XG4gIGd3X2dldEdyaWQoaWQpXG4gICAgLm9wdGlvbnNcbiAgICAuYXBpXG4gICAgLmNsZWFyUmFuZ2VTZWxlY3Rpb24oKTtcbn0iLCIvKlxuKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQkJqR3JpZEV4V2lkZ2V0IHBsdWdpbi5cbiogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuKlxuKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiovXG5cbmltcG9ydCB7IGd3X2dldEdyaWQsIGd3X3V1aWQgfSBmcm9tIFwiYXBpL3V0aWxpdGllc1wiO1xuaW1wb3J0IHsgZ3dfcGFyc2VBZGRDZWxsUmFuZ2UgfSBmcm9tIFwiYXBpL2NlbGxzXCI7XG5cbmNvbnN0IHsgZGVlcFBhcnNlSnNvbiB9ID0gcmVxdWlyZShcImRlZXAtcGFyc2UtanNvblwiKTtcblxuLyoqXG4gKiBUaGUgYXJyYXkgY29udGFpbnMgcmVmZXJlbmNlcyB0byBjcmVhdGVkIGNoYXJ0cyBmcm9tIEJCai5cbiAqIEV2ZXJ5IHJlZmVyZW5jZSBpcyBhIENoYXJ0UmVmIG9iamVjdCB3aGljaCBwcm92aWRlcyB0aGUgYXBwbGljYXRpb24gd2l0aCB0aGUgXG4gKiBkZXN0cm95Q2hhcnQoKSBtZXRob2QgdGhhdCBpcyByZXF1aXJlZCB3aGVuIHRoZSBhcHBsaWNhdGlvbiB3YW50cyB0byBkaXNwb3NlIHRoZSBjaGFydC5cbiAqL1xuXG4vKipcbiAqIFJldHVybiB0aGUgY2hhcnQgdG9vbGJhciBpdGVtcyBkZWZpbmVkIGluIHRoZSBncmlkJ3MgY29udGV4dCBcbiAqIFxuICogQHBhcmFtIHtPYmplY3R9IHBhcmFtcyBcbiAqIEByZXR1cm5zIHtBcnJheX0gYXJyYXkgb2Ygc3VwcG9ydGVkIGNoYXJ0IGl0ZW1zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19nZXRDaGFydFRvb2xiYXJJdGVtcyhwYXJhbXMpIHtcbiAgcmV0dXJuIHBhcmFtc1xuICAgIC5hcGlcbiAgICAuZ3JpZE9wdGlvbnNXcmFwcGVyXG4gICAgLmdyaWRPcHRpb25zXG4gICAgLmNvbnRleHRcbiAgICAuY2hhcnRUb29sYmFySXRlbXMgfHwgW107XG59XG5cbi8qKlxuICogQWRkIG5ldyBjaGFydCByYW5nZVxuICogXG4gKiBAcGFyYW0ge1N0cmluZ30gaWQgZ3JpZCdzIGlkXG4gKiBAcGFyYW0ge09iamVjdH0gcmFuZ2UgIGJvdW5kZWQgb3IgdW5ib3VuZGVkIHJhbmdlIG1vZGVsXG4gKiBcbiAqIEByZXR1cm4ge1N0cmluZ30gYSB1bmlxdWUgaWQgZm9yIHRoZSBnZW5lcmF0ZSBjaGFydFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfYWRkQ2hhcnRSYW5nZShpZCwgcmFuZ2UpIHtcbiAgY29uc3QgZ3JpZCA9IGd3X2dldEdyaWQoaWQpO1xuICBjb25zdCBvcHRpb25zID0gZ3JpZC5vcHRpb25zO1xuICBjb25zdCBwciA9IGRlZXBQYXJzZUpzb24oSlNPTi5zdHJpbmdpZnkocmFuZ2UpKTtcblxuICBwci5jZWxsUmFuZ2UgPSBnd19wYXJzZUFkZENlbGxSYW5nZShvcHRpb25zLCBwci5jZWxsUmFuZ2UpO1xuXG4gIGNvbnN0IHJlZiA9IG9wdGlvbnMuYXBpLmNoYXJ0UmFuZ2UocHIpO1xuICBjb25zdCB1dWlkID0gZ3dfdXVpZCgpO1xuICBcbiAgZ3JpZC5jcmVhdGVkX2NoYXJ0cyA9IGdyaWQuY3JlYXRlZF9jaGFydHMgfHwge307XG4gIGdyaWQuY3JlYXRlZF9jaGFydHNbdXVpZF0gPSByZWY7XG4gIFxuICByZXR1cm4gdXVpZDtcbn1cblxuLyoqXG4gKiBEZXN0cm95IGNyZWF0ZWQgY2hhcnRzXG4gKiBcbiAqIERlc3Ryb3kgYWxyZWFkeSBjcmVhdGVkIGNoYXJ0IGJ5IGlkIG9yIGFsbCBjcmVhdGVkIGNoYXJ0cyBcbiAqIHdoZW4gdGhlIGB1dWlkYCBpcyBvbWl0dGVkLlxuICogXG4gKiBAcGFyYW0ge1N0cmluZ30gaWQgZ3JpZCdzIGlkXG4gKiBAcGFyYW0ge1N0cmluZ30gdXVpZCBUaGUgY2hhcnQncyBpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfZGVzdHJveUNoYXJ0KGlkLCB1dWlkKSB7XG4gIGNvbnN0IGdyaWQgPSBnd19nZXRHcmlkKGlkKTtcbiAgXG4gIGlmICh1dWlkKSB7XG4gICAgaWYgKGdyaWQuaGFzT3duUHJvcGVydHkoJ2NyZWF0ZWRfY2hhcnRzJykgJiYgZ3JpZC5jcmVhdGVkX2NoYXJ0cy5oYXNPd25Qcm9wZXJ0eSh1dWlkKSkge1xuICAgICAgZ3JpZC5jcmVhdGVkX2NoYXJ0c1t1dWlkXS5kZXN0cm95Q2hhcnQoKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gIFxuICAgIGlmIChncmlkLmhhc093blByb3BlcnR5KCdjcmVhdGVkX2NoYXJ0cycpKSB7XG4gICAgICBmb3IgKGNvbnN0IGkgaW4gZ3JpZC5jcmVhdGVkX2NoYXJ0cykge1xuICAgICAgICBpZiAoZ3JpZC5jcmVhdGVkX2NoYXJ0cy5oYXNPd25Qcm9wZXJ0eShpKSkge1xuICAgICAgICAgIGNvbnN0IGNoYXJ0ID0gZ3JpZC5jcmVhdGVkX2NoYXJ0c1tpXTtcbiAgICAgICAgICBjaGFydC5kZXN0cm95Q2hhcnQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQkJqR3JpZEV4V2lkZ2V0IHBsdWdpbi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QEJhc2lzLkFnR3JpZENvbXBvbmVudHMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgeyBnd19nZXRHcmlkIH0gZnJvbSBcIi4vdXRpbGl0aWVzXCI7XG5jb25zdCB7IGRlZXBQYXJzZUpzb24gfSA9IHJlcXVpcmUoXCJkZWVwLXBhcnNlLWpzb25cIik7XG5cbi8qKlxuICogRXh0ZW5kIHRoZSBjb2x1bW4gZGVmaW5pdGlvbnNcbiAqXG4gKiBFeHRlbmQgdGhlIGNvbHVtbiBkZWZpbml0aW9ucyB3aXRoIG9wdGlvbnMgd2hpY2ggY2FuIG5vdCBiZSBoYW5kbGVkIGluIEJCalxuICogKGV4OiBhdHRhY2hpbmcgY2FsbGJhY2tzKVxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGRlZmluaXRpb25zIGFycmF5IG9mIGNvbHVtbiBkZWZpbml0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfZXh0ZW5kQ29sdW1uRGVmaW5pdGlvbnMoZGVmaW5pdGlvbnMpIHtcbiAgZm9yIChsZXQgaSBpbiBkZWZpbml0aW9ucykge1xuICAgIGNvbnN0IGRlZiA9IGRlZmluaXRpb25zW2ldO1xuXG4gICAgZGVmLmNoZWNrYm94U2VsZWN0aW9uID0gZGVmLmNoZWNrYm94U2VsZWN0aW9uIHx8IGd3X2lzU2hvd1NlbGVjdGlvbkNoZWNrYm94O1xuICAgIGRlZi5oZWFkZXJDaGVja2JveFNlbGVjdGlvbiA9XG4gICAgICBkZWYuaGVhZGVyQ2hlY2tib3hTZWxlY3Rpb24gfHwgZ3dfaXNIZWFkZXJDaGVja2JveFNlbGVjdGlvbjtcbiAgfVxufVxuXG4vKipcbiAqIFVwZGF0ZSB0aGUgY29sdW1uIGRlZmluaXRpb25zXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkIFRoZSBncmlkIGlkXG4gKiBAcGFyYW0ge0FycmF5fSBkZWZpbml0aW9ucyBhcnJheSBvZiBjb2x1bW4gZGVmaW5pdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3NldENvbHVtbkRlZmluaXRpb25zKGlkLCBkZWZpbml0aW9ucykge1xuICBjb25zdCBncmlkID0gZ3dfZ2V0R3JpZChpZCk7XG4gIGNvbnN0IGRlZXBQYXJzZWREZWZpbml0aW9ucyA9IGRlZXBQYXJzZUpzb24oSlNPTi5zdHJpbmdpZnkoZGVmaW5pdGlvbnMpKTtcblxuICBnd19leHRlbmRDb2x1bW5EZWZpbml0aW9ucyhkZWVwUGFyc2VkRGVmaW5pdGlvbnMpO1xuXG4gIGdyaWQub3B0aW9ucy5hcGkuc2V0Q29sdW1uRGVmcyhkZWVwUGFyc2VkRGVmaW5pdGlvbnMpO1xuICBncmlkLm9wdGlvbnMuY29sdW1uRGVmcyA9IGRlZXBQYXJzZWREZWZpbml0aW9ucztcbn1cblxuLyoqXG4gKiBNYWtlIHRoZSBjdXJyZW50bHkgdmlzaWJsZSBjb2x1bW5zIGZpdCB0aGUgc2NyZWVuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkIFRoZSBncmlkJ3MgaWRcbiAqIEBwYXJhbSB7TnVtYmVyfSB0aGUgd2lkdGggdG8gdXNlIHRvIGZpdCBhbGwgY29sdW1ucyBpblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfc2l6ZUNvbHVtbnNUb0ZpdChpZCwgd2lkdGgpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGd3X2dldEdyaWQoaWQpLm9wdGlvbnM7XG4gIGNvbnN0IGFwaSA9IG9wdGlvbnMuYXBpO1xuICBjb25zdCBjb2x1bW5zQVBJID0gb3B0aW9ucy5jb2x1bW5BcGk7XG4gIGlmICh3aWR0aCkgY29sdW1uc0FQSS5zaXplQ29sdW1uc1RvRml0KE51bWJlcih3aWR0aCkpO1xuICBlbHNlIGFwaS5zaXplQ29sdW1uc1RvRml0KCk7XG59XG5cbi8qKlxuICogV29yayBvdXQgdGhlIGJlc3Qgd2lkdGggdG8gZml0IHRoZSBjb250ZW50cyBvZiB0aGUgY2VsbHMgaW4gdGhlIGNvbHVtbi5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaWQgVGhlIGdyaWQncyBpZFxuICogQHBhcmFtIHtCb29sZWFufSBbc2tpcEhlYWRlcj1mYWxzZV0gd2hlbiB0cnVlIGluZGljYXRlIHRoYXQgdGhlIGhlYWRlciBjb250ZW50IChoZWFkZXJOYW1lKSBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgd2hlblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0aW5nIHRoZSB3aWR0aCBvZiB0aGUgY29sdW1uXG4gKiBAcGFyYW0ge0FycmF5fG51bGx9IFtjb2x1bW5zPW51bGxdIGFuIGFycmF5IG9mIGNvbHVtbnMgaWRzIHRvIGF1dG8gc2l6ZSBvciBudWxsIHRvIGF1dG8gc2l6ZSBhbGwgY29sdW1uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfYXV0b1NpemVDb2x1bW5zKGlkLCBza2lwSGVhZGVyID0gZmFsc2UsIGNvbHVtbnMgPSBudWxsKSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnd19nZXRHcmlkKGlkKS5vcHRpb25zO1xuICBjb25zdCBjb2x1bW5zQVBJID0gb3B0aW9ucy5jb2x1bW5BcGk7XG5cbiAgaWYgKCEoY29sdW1ucyAmJiBjb2x1bW5zLmxlbmd0aCkpIHtcbiAgICBjb25zdCBhbGxDb2x1bW5JZHMgPSBbXTtcblxuICAgIGNvbHVtbnNBUEkuZ2V0QWxsQ29sdW1ucygpLmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgIGFsbENvbHVtbklkcy5wdXNoKGNvbHVtbi5jb2xJZCk7XG4gICAgfSk7XG5cbiAgICBjb2x1bW5zQVBJLmF1dG9TaXplQ29sdW1ucyhhbGxDb2x1bW5JZHMsIEJvb2xlYW4oc2tpcEhlYWRlcikpO1xuICB9IGVsc2Uge1xuICAgIGNvbHVtbnNBUEkuYXV0b1NpemVDb2x1bW5zKGNvbHVtbnMsIEJvb2xlYW4oc2tpcEhlYWRlcikpO1xuICB9XG59XG4vKipcbiAqIEVuc3VyZXMgdGhlIGNvbHVtbiBpcyB2aXNpYmxlLCBzY3JvbGxpbmcgdGhlIHRhYmxlIGlmIG5lZWRlZC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaWQgIHRoZSBncmlkJ3MgaWRcbiAqIEBwYXJhbSB7U3RyaW5nfSBjb2x1bW5JZCAgdGhlIGNvbHVtbiBpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfZW5zdXJlQ29sdW1uVmlzaWJsZShpZCwgY29sdW1uSWQpIHtcbiAgZ3dfZ2V0R3JpZChpZCkub3B0aW9ucy5hcGkuZW5zdXJlQ29sdW1uVmlzaWJsZShjb2x1bW5JZCk7XG59XG5cbi8qKlxuICogU2V0IENvbHVtbiBXaWR0aFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCBUaGUgZ3JpZCBpZFxuICogQHBhcmFtIHtTdHJpbmd9IGNvbHVtbklkIFRoZSBjb2x1bW4gaWRcbiAqIEBwYXJhbSB7TnVtYmVyfFN0cmluZ30gd2lkdGggVGhlIG5ldyBjb2x1bW4gd2lkdGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3NldENvbHVtbldpZHRoKGlkLCBjb2x1bW5JZCwgd2lkdGgpIHtcbiAgZ3dfZ2V0R3JpZChpZCkub3B0aW9ucy5jb2x1bW5BcGkuc2V0Q29sdW1uV2lkdGgoY29sdW1uSWQsIE51bWJlcih3aWR0aCkpO1xufVxuXG4vKipcbiAqIFBpbiBDb2x1bW5cbiAqXG4gKiBQaW4gYSBjb2x1bW4gdG8gYSBzcGVjaWZpYyBkaXJlY3Rpb25cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaWQgVGhlIGdyaWQgaWRcbiAqIEBwYXJhbSB7U3RyaW5nfSBjb2x1bW5JZCBUaGUgY29sdW1uIGlkXG4gKiBAcGFyYW0ge1N0cmluZ30gcGluIFRoZSBwaW4gZGlyZWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19waW5Db2x1bW4oaWQsIGNvbHVtbklkLCBwaW4pIHtcbiAgZ3dfZ2V0R3JpZChpZCkub3B0aW9ucy5jb2x1bW5BcGkuc2V0Q29sdW1uUGlubmVkKGNvbHVtbklkLCBwaW4pO1xufVxuXG4vKipcbiAqIE1vdmUgQ29sdW1uXG4gKlxuICogTW92ZSBjb2x1bW4gdG8gYSBzcGVjaWZpYyBpbmRleFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCBUaGUgZ3JpZCBpZFxuICogQHBhcmFtIHtTdHJpbmd9IGNvbHVtbklkIFRoZSBjb2x1bW4gaWRcbiAqIEBwYXJhbSB7TnVtYmVyfFN0cmluZ30gdG9JbmRleCBUaGUgbmV3IGNvbHVtbiBpbmRleFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfbW92ZUNvbHVtbihpZCwgY29sdW1uSWQsIHRvSW5kZXgpIHtcbiAgZ3dfZ2V0R3JpZChpZCkub3B0aW9ucy5jb2x1bW5BcGkubW92ZUNvbHVtbihjb2x1bW5JZCwgdG9JbmRleCk7XG59XG5cbi8qKlxuICogU2hvdyAvIEhpZGUgc2VsZWN0aW9uIGNoZWNrYm94IGJhc2VkIG9uIHRoZSBmaXJzdCBjb2x1bW5cbiAqXG4gKiBUaGUgZnVuY3Rpb24gbWFrZSBzdXJlIHRoYXQgdGhlIHNlbGVjdGlvbiBjaGVja2JveCBpcyBhbHdheXMgc2hvd24gb24gdGhlXG4gKiBmaXJzdCBjb2x1bW5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcGFyYW1cbiAqXG4gKiBAcmV0dXJuIHtCb29sZWFufSB0cnVlIHdoZW4gZmlyc3QgY29sdW1uICwgZmFsc2UgaWYgbm90IHRoZSBmaXJzdCBjb2x1bW4gb3IgaWYgdGhlXG4gKiAgICAgICAgICAgICAgICAgICBncmlkJ3MgYENvbnRleHQuc2hvd1NlbGVjdGlvbkNoZWNrYm94YCBpcyBmYWxzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfaXNTaG93U2VsZWN0aW9uQ2hlY2tib3gocGFyYW0pIHtcbiAgaWYgKCFwYXJhbS5jb250ZXh0LnNob3dTZWxlY3Rpb25DaGVja2JveCkgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IGNvbHVtbnMgPSBwYXJhbS5jb2x1bW5BcGkuZ2V0QWxsR3JpZENvbHVtbnMoKTtcblxuICByZXR1cm4gY29sdW1uc1swXS5jb2xEZWYuZmllbGQgPT09IHBhcmFtLmNvbERlZi5maWVsZDtcbn1cblxuLyoqXG4gKiBTaG93IC8gSGlkZSBoZWFkZXIgc2VsZWN0aW9uIGNoZWNrYm94IGJhc2VkIG9uIHRoZSBmaXJzdCBjb2x1bW5cbiAqXG4gKiBUaGUgZnVuY3Rpb24gbWFrZSBzdXJlIHRoYXQgdGhlIGhlYWRlciBzZWxlY3Rpb24gY2hlY2tib3ggaXMgYWx3YXlzIHNob3duIG9uIHRoZVxuICogZmlyc3QgY29sdW1uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHBhcmFtXG4gKlxuICogQHJldHVybiB7Qm9vbGVhbn0gdHJ1ZSB3aGVuIGZpcnN0IGNvbHVtbiAsIGZhbHNlIGlmIG5vdCB0aGUgZmlyc3QgY29sdW1uIG9yIGlmIHRoZVxuICogICAgICAgICAgICAgICAgICAgZ3JpZCdzIGBDb250ZXh0LnNob3dIZWFkZXJTZWxlY3Rpb25DaGVja2JveGAgaXMgZmFsc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X2lzSGVhZGVyQ2hlY2tib3hTZWxlY3Rpb24ocGFyYW0pIHtcbiAgY29uc3QgY29udGV4dCA9IHBhcmFtLmFwaS5ncmlkT3B0aW9uc1dyYXBwZXIuZ3JpZE9wdGlvbnMuY29udGV4dDtcblxuICBpZiAoIWNvbnRleHQuc2hvd0hlYWRlclNlbGVjdGlvbkNoZWNrYm94KSByZXR1cm4gZmFsc2U7XG5cbiAgY29uc3QgY29sdW1ucyA9IHBhcmFtLmNvbHVtbkFwaS5nZXRBbGxHcmlkQ29sdW1ucygpO1xuXG4gIHJldHVybiBjb2x1bW5zWzBdLmNvbERlZi5maWVsZCA9PT0gcGFyYW0uY29sRGVmLmZpZWxkO1xufVxuXG4vKipcbiAqIEVuYWJsZSByb3cgZ3JvdXBpbmcgZm9yIGNvbHVtbnNcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaWQgdGhlIGdyaWQgaWRcbiAqIEBwYXJhbSB7U3RyaW5nfSBjb2x1bW5zICBhIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmcgb2YgY29sdW1uc1xuICogQHBhcmFtIHtCb29sZWFufSBzZXQgIFdoZW4gdHJ1ZSAsIGBzZXRSb3dHcm91cENvbHVtbnNgIHdpbGwgYmUgdXNlZCAsIGBhZGRSb3dHcm91cENvbHVtbnNgIG90aGVyd2lzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfYWRkUm93R3JvdXBDb2x1bW4oaWQsIGNvbHVtbnMsIHNldCkge1xuICBnd19nZXRHcmlkKGlkKS5vcHRpb25zLmNvbHVtbkFwaVtcbiAgICBzZXQgPyBcInNldFJvd0dyb3VwQ29sdW1uc1wiIDogXCJhZGRSb3dHcm91cENvbHVtbnNcIlxuICBdKGNvbHVtbnMuc3BsaXQoXCIsXCIpLm1hcChpID0+IGkudHJpbSgpKSk7XG59XG5cbi8qKlxuICogRGlzYWJsZSByb3cgZ3JvdXBpbmcgZm9yIGNvbHVtbnNcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaWQgdGhlIGdyaWQgaWRcbiAqIEBwYXJhbSB7U3RyaW5nfSBjb2x1bW5zICBhIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmcgb2YgY29sdW1uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfcmVtb3ZlUm93R3JvdXBDb2x1bW4oaWQsIGNvbHVtbnMpIHtcbiAgZ3dfZ2V0R3JpZChpZCkub3B0aW9ucy5jb2x1bW5BcGkucmVtb3ZlUm93R3JvdXBDb2x1bW5zKFxuICAgIGNvbHVtbnMuc3BsaXQoXCIsXCIpLm1hcChpID0+IGkudHJpbSgpKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3dfZ2V0UGl2b3RNb2RlKGlkKSB7XG4gIHJldHVybiBnd19nZXRHcmlkKGlkKS5vcHRpb25zLmNvbHVtbkFwaS5pc1Bpdm90TW9kZSgpO1xufVxuXG4vKipcbiAqIEVuYWJsZSAvIGRpc2JhbGUgcGl2b3QgbW9kZVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCB0aGUgZ3JpZCBpZFxuICogQHBhcmFtIHtCb29sZWFufSBtb2RlIHdoZW4gdHJ1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfc2V0UGl2b3RNb2RlKGlkLCBtb2RlKSB7XG4gIGd3X2dldEdyaWQoaWQpLm9wdGlvbnMuY29sdW1uQXBpLnNldFBpdm90TW9kZSghIU51bWJlcihtb2RlKSk7XG59XG5cbi8qKlxuICogRW5hYmxlIHBpdm90IGZvciBjb2x1bW5zXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkIHRoZSBncmlkIGlkXG4gKiBAcGFyYW0ge1N0cmluZ30gY29sdW1ucyAgYSBjb21tYSBzZXBhcmF0ZWQgc3RyaW5nIG9mIGNvbHVtbnNcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gc2V0ICBXaGVuIHRydWUgLCBgYWRkUGl2b3RDb2x1bW5zYCB3aWxsIGJlIHVzZWQgLCBgc2V0UGl2b3RDb2x1bW5zYCBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X2FkZFBpdm90Q29sdW1ucyhpZCwgY29sdW1ucywgc2V0KSB7XG4gIGd3X2dldEdyaWQoaWQpLm9wdGlvbnMuY29sdW1uQXBpW3NldCA/IFwic2V0UGl2b3RDb2x1bW5zXCIgOiBcImFkZFBpdm90Q29sdW1uc1wiXShcbiAgICBjb2x1bW5zLnNwbGl0KFwiLFwiKS5tYXAoaSA9PiBpLnRyaW0oKSlcbiAgKTtcbn1cblxuLyoqXG4gKiBEaXNhYmxlIHBpdm90IGZvciBjb2x1bW5zXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkIHRoZSBncmlkIGlkXG4gKiBAcGFyYW0ge1N0cmluZ30gY29sdW1ucyAgYSBjb21tYSBzZXBhcmF0ZWQgc3RyaW5nIG9mIGNvbHVtbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3JlbW92ZVBpdm90Q29sdW1ucyhpZCwgY29sdW1ucykge1xuICBnd19nZXRHcmlkKGlkKS5vcHRpb25zLmNvbHVtbkFwaS5yZW1vdmVQaXZvdENvbHVtbnMoXG4gICAgY29sdW1ucy5zcGxpdChcIixcIikubWFwKGkgPT4gaS50cmltKCkpXG4gICk7XG59XG5cbi8qKlxuICogRW5hYmxlIHZhbHVlIGZvciBjb2x1bW5zXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkIHRoZSBncmlkIGlkXG4gKiBAcGFyYW0ge1N0cmluZ30gY29sdW1ucyAgYSBjb21tYSBzZXBhcmF0ZWQgc3RyaW5nIG9mIGNvbHVtbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X2FkZFZhbHVlQ29sdW1ucyhpZCwgY29sdW1ucywgc2V0KSB7XG4gIGd3X2dldEdyaWQoaWQpLm9wdGlvbnMuY29sdW1uQXBpLmFkZFZhbHVlQ29sdW1ucyhcbiAgICBjb2x1bW5zLnNwbGl0KFwiLFwiKS5tYXAoaSA9PiBpLnRyaW0oKSlcbiAgKTtcbn1cblxuLyoqXG4gKiBEaXNhYmxlIHZhbHVlIGZvciBjb2x1bW5zXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkIHRoZSBncmlkIGlkXG4gKiBAcGFyYW0ge1N0cmluZ30gY29sdW1ucyAgYSBjb21tYSBzZXBhcmF0ZWQgc3RyaW5nIG9mIGNvbHVtbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3JlbW92ZVZhbHVlQ29sdW1ucyhpZCwgY29sdW1ucykge1xuICBnd19nZXRHcmlkKGlkKS5vcHRpb25zLmNvbHVtbkFwaS5yZW1vdmVWYWx1ZUNvbHVtbnMoXG4gICAgY29sdW1ucy5zcGxpdChcIixcIikubWFwKGkgPT4gaS50cmltKCkpXG4gICk7XG59XG5cbi8qKlxuICogU2V0IHRoZSBjb2x1bW4gc29ydGluZyBtb2RlbFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCB0aGUgZ3JpZCBpZFxuICogQHBhcmFtIHtTdHJpbmd9IG1vZGVsIG1vZGVsIGFzIGpzb24gYXJyYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3NldFNvcnRNb2RlbChpZCwgbW9kZWwpIHtcbiAgY29uc3QgYXNBcnJheSA9IEpTT04ucGFyc2UobW9kZWwpXG4gIGNvbnN0IHBhcnNlZE1vZGVsID0gW11cbiAgYXNBcnJheS5mb3JFYWNoKGkgPT4ge1xuICAgIGZvciAoY29uc3Qga2V5IGluIGkpIHtcbiAgICAgIHBhcnNlZE1vZGVsLnB1c2goe1xuICAgICAgICBjb2xJZDoga2V5ICxcbiAgICAgICAgc29ydDogaVtrZXldXG4gICAgICB9KVxuICAgIH1cbiAgfSlcblxuICBnd19nZXRHcmlkKGlkKS5vcHRpb25zLmFwaS5zZXRTb3J0TW9kZWwocGFyc2VkTW9kZWwpO1xufVxuIiwiLypcbiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEJCakdyaWRFeFdpZGdldCBwbHVnaW4uXG4qIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbipcbiogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4qL1xuXG5pbXBvcnQgeyBnd19nZXRHcmlkIH0gZnJvbSBcIi4vdXRpbGl0aWVzXCI7XG5cbi8qKlxuICogVXBkYXRlIGNvbnRleHQgXG4gKiBcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCBUaGUgZ3JpZCdzIGlkIFxuICogQHBhcmFtIHtTdHJpbmd9IGtleSBUaGUgY29udGV4dCdzIGtleSB0byB1cGRhdGVcbiAqIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZSAgVGhlIG5ldyBjb250ZXh0J3MgdmFsdWUgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd191cGRhdGVDb250ZXh0KGlkLCBrZXksIHZhbHVlKSB7XG5cdGd3X2dldEdyaWQoaWQpXG5cdFx0Lm9wdGlvbnNcblx0XHQuY29udGV4dFtrZXldID0gSlNPTi5wYXJzZSh2YWx1ZSk7XG59IiwiLypcbiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEJCakdyaWRFeFdpZGdldCBwbHVnaW4uXG4qIChjKSBCYXNpcyBFdXJvcGUgPGV1QEJhc2lzLkFnR3JpZENvbXBvbmVudHMuY29tPlxuKlxuKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5pdC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbHVtbnMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9yb3dzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY2VsbHMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9zdGF0ZS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3Rvb2xwYW5lbC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3N0YXR1c2Jhci5qcyc7XG5leHBvcnQgKiBmcm9tICcuL292ZXJsYXlzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29udGV4dC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NoYXJ0cy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2pzcy5qcyc7IiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBCQmpHcmlkRXhXaWRnZXQgcGx1Z2luLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAQmFzaXMuQWdHcmlkQ29tcG9uZW50cy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmltcG9ydCB7IGd3X2V4dGVuZENvbHVtbkRlZmluaXRpb25zIH0gZnJvbSBcIi4vY29sdW1uc1wiO1xuaW1wb3J0IHsgZ3dfbmF2aWdhdGVUb05leHRSb3csIGd3X2dldFJvd05vZGVJZCB9IGZyb20gXCIuL3Jvd3NcIjtcbmltcG9ydCB7IGd3X2dldENvbnRleHRNZW51IH0gZnJvbSBcIi4vbWVudXNcIjtcbmltcG9ydCB7IGd3X2dldENoYXJ0VG9vbGJhckl0ZW1zIH0gZnJvbSBcIi4vY2hhcnRzXCI7XG5pbXBvcnQgeyBnd19nZXREb2N1bWVudCwgZ3dfZ2V0V2luZG93LCBnd19hZGRHcmlkIH0gZnJvbSBcIi4vdXRpbGl0aWVzXCI7XG5pbXBvcnQge1xuICBnd19vblJvd0RvdWJsZUNsaWNrZWQsXG4gIGd3X29uU2VsZWN0aW9uQ2hhbmdlZCxcbiAgZ3dfb25SYW5nZVNlbGVjdGlvbkNoYW5nZWQsXG4gIGd3X29uQ2VsbENsaWNrRXZlbnQsXG4gIGd3X29uQ2VsbEVkaXRpbmdFdmVudCxcbiAgZ3dfb25Sb3dFZGl0aW5nRXZlbnQsXG4gIGd3X29uUmVhZHlFdmVudCxcbiAgZ3dfZGVib3VuY2Vcbn0gZnJvbSBcImV2ZW50c1wiO1xuaW1wb3J0IHRlbXBsYXRlIGZyb20gJ2xvZGFzaC1lcy90ZW1wbGF0ZSdcblxuY29uc3QgeyBkZWVwUGFyc2VKc29uIH0gPSByZXF1aXJlKFwiZGVlcC1wYXJzZS1qc29uXCIpO1xuXG5leHBvcnQgZnVuY3Rpb24gZ3dfaW5pdChvcHRpb25zLCBsaWNlbnNlICwgZGF0YSkge1xuICBcbiAgaWYgKGFnR3JpZC5MaWNlbnNlTWFuYWdlciAmJiBsaWNlbnNlKVxuICAgIGFnR3JpZC5MaWNlbnNlTWFuYWdlci5zZXRMaWNlbnNlS2V5KGxpY2Vuc2UpO1xuXG4gIGNvbnN0IGlkICAgICAgICAgICAgICA9IG9wdGlvbnMuY29udGV4dC5pZDtcbiAgY29uc3QgY29udGFpbmVyICAgICAgID0gZ3dfZ2V0RG9jdW1lbnQoKS5nZXRFbGVtZW50QnlJZChpZCk7XG4gIC8vIHdlIG1ha2UgdGhlIGdyaWQgb3B0aW9ucyBhdmFpbGFibGUgYXMgc29vbiBhcyBwb3NzaWJsZSBcbiAgY29uc3QgZ3JpZCAgICAgICAgICAgID0gZ3dfYWRkR3JpZChpZCwge1xuICAgIGNvbnRhaW5lcixcbiAgICBvcHRpb25zXG4gIH0pO1xuXG4gIC8vIFRPRE86IHVzZSBhZyBncmlkIGRlc3Ryb3lcbiAgY29udGFpbmVyLmlubmVySFRNTCAgID0gJyc7XG5cbiAgY29uc3QgcGFyc2VkT3B0aW9ucyAgID0gZ3dfcGFyc2VPcHRpb25zKG9wdGlvbnMpO1xuICBwYXJzZWRPcHRpb25zLnJvd0RhdGEgPSBkYXRhO1xuXG4gIGNvbnN0IGluc3RhbmNlICAgICAgICA9IG5ldyBhZ0dyaWQuR3JpZChjb250YWluZXIsIHBhcnNlZE9wdGlvbnMpO1xuICBncmlkLmluc3RhbmNlID0gaW5zdGFuY2U7XG4gIGdyaWQub3B0aW9ucyAgPSBwYXJzZWRPcHRpb25zO1xuXG4gIGNvbnNvbGUubG9nKFxuICAgIGAlYyBHcmlkIFske2lkfV0gc2V0dGluZ3MgOiBgXG4gICAgLCAnYmFja2dyb3VuZDogIzIyMjsgY29sb3I6ICNiYWRhNTUnXG4gICAgLCBwYXJzZWRPcHRpb25zXG4gICk7XG59XG5cbi8qKlxuICogUGFyc2UgT3B0aW9uc1xuICogXG4gKiBQYXJzZSB0aGUgZ3JpZCBvcHRpb25zIGFuZCByZXR1cm4gXG4gKiBhbiBvYmplY3Qgd2hpY2ggY2FuIGJlIHBhc3NlZCB0byB0aGUgZ3JpZFxuICogXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyBHcmlkIG9wdGlvbnMgYXMgSnNvbiBPYmplY3RcbiAqIFxuICogQHJldHVybiB7T2JqZWN0fSBvcHRpb25zIG9iamVjdFxuICovXG5mdW5jdGlvbiBnd19wYXJzZU9wdGlvbnMob3B0aW9ucykge1xuICBjb25zdCBkZWVwUGFyc2VkT3B0aW9ucyAgICAgPSBkZWVwUGFyc2VKc29uKEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpKTtcbiAgY29uc3QgaWQgICAgICAgICAgICAgICAgICAgID0gZGVlcFBhcnNlZE9wdGlvbnMuY29udGV4dC5pZDtcbiAgY29uc3QgZ2V0RGF0YVBhdGhUZW1wbGF0ZSAgID0gZGVlcFBhcnNlZE9wdGlvbnMuY29udGV4dC5nZXREYXRhUGF0aCB8fCBcIlwiO1xuICAvLyBUT0RPOiBkbyB3ZSBuZWVkIHRvIGNvbnRyb2wgdGhpcyBzZXR0aW5nIGZyb20gQkJqID9cbiAgY29uc3QgZGVib3VuY2VEdXJhdGlvbiAgICAgID0gMjUwO1xuICBjb25zdCBmaW5hbE9wdGlvbnMgPSB7XG4gICAgLi4uZGVlcFBhcnNlZE9wdGlvbnMgLFxuICAgIC4uLntcbiAgICAgIGdldERvY3VtZW50OiAgICAgICAgICAgICgpICAgICA9PiAgIGd3X2dldERvY3VtZW50KCksXG4gICAgICBvbkNlbGxFZGl0aW5nU3RhcnRlZDogICBlICAgICAgPT4geyBnd19vbkNlbGxFZGl0aW5nRXZlbnQoaWQsIGUpIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgb25DZWxsRWRpdGluZ1N0b3BwZWQ6ICAgZSAgICAgID0+IHsgZ3dfb25DZWxsRWRpdGluZ0V2ZW50KGlkLCBlKSB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxcbiAgICAgIG9uQ2VsbFZhbHVlQ2hhbmdlZDogICAgIGUgICAgICA9PiB7IGd3X29uQ2VsbEVkaXRpbmdFdmVudChpZCwgZSkgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsXG4gICAgICBvblJvd0VkaXRpbmdTdGFydGVkOiAgICBlICAgICAgPT4geyBnd19vblJvd0VkaXRpbmdFdmVudChpZCwgZSkgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLFxuICAgICAgb25Sb3dFZGl0aW5nU3RvcHBlZDogICAgZSAgICAgID0+IHsgZ3dfb25Sb3dFZGl0aW5nRXZlbnQoaWQsIGUpICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxcbiAgICAgIG9uUm93VmFsdWVDaGFuZ2VkOiAgICAgIGUgICAgICA9PiB7IGd3X29uUm93RWRpdGluZ0V2ZW50KGlkLCBlKSAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsXG4gICAgICBvbkNlbGxDbGlja2VkOiAgICAgICAgICBlICAgICAgPT4geyBnd19vbkNlbGxDbGlja0V2ZW50KGlkLCBlKSAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLFxuICAgICAgb25DZWxsRG91YmxlQ2xpY2tlZDogICAgZSAgICAgID0+IHsgZ3dfb25DZWxsQ2xpY2tFdmVudChpZCwgZSkgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxcbiAgICAgIG9uR3JpZFJlYWR5OiAgICAgICAgICAgIGUgICAgICA9PiB7IGd3X29uUmVhZHlFdmVudChpZCwgZSkgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsXG4gICAgICBnZXRSb3dOb2RlSWQ6ICAgICAgICAgICBkYXRhICAgPT4gICBnd19nZXRSb3dOb2RlSWQoaWQsIGRhdGEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLFxuICAgICAgZ2V0Q29udGV4dE1lbnVJdGVtczogICAgcGFyYW1zID0+ICAgZ3dfZ2V0Q29udGV4dE1lbnUoaWQsIHBhcmFtcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxcbiAgICAgIFwiZ2V0Q2hhcnRUb29sYmFySXRlbXNcIjogICAgICAgICAgICAgZ3dfZ2V0Q2hhcnRUb29sYmFySXRlbXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxcbiAgICAgIFwicG9wdXBQYXJlbnRcIjogICAgICAgICAgICAgICAgICAgICAgZ3dfZ2V0RG9jdW1lbnQoKS5ib2R5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxcbiAgICAgIFwib25Sb3dEb3VibGVDbGlja2VkXCI6ICAgICAgICAgICAgICAgZ3dfZGVib3VuY2UoZ3dfb25Sb3dEb3VibGVDbGlja2VkLCBkZWJvdW5jZUR1cmF0aW9uKSAgICAgICAgICxcbiAgICAgIFwib25TZWxlY3Rpb25DaGFuZ2VkXCI6ICAgICAgICAgICAgICAgZ3dfZGVib3VuY2UoZ3dfb25TZWxlY3Rpb25DaGFuZ2VkLCBkZWJvdW5jZUR1cmF0aW9uKSAgICAgICAgICxcbiAgICAgIFwib25SYW5nZVNlbGVjdGlvbkNoYW5nZWRcIjogICAgICAgICAgZ3dfZGVib3VuY2UoZ3dfb25SYW5nZVNlbGVjdGlvbkNoYW5nZWQgLCBkZWJvdW5jZUR1cmF0aW9uKSAgICxcbiAgICAgIFwiY29tcG9uZW50c1wiOiB7XG4gICAgICAgIFwiQm9vbGVhbkZpbHRlclwiICAgICAgICAgICAgICAgOiBCYXNpcy5BZ0dyaWRDb21wb25lbnRzLkJvb2xlYW5GaWx0ZXIgICAgICAgICxcbiAgICAgICAgXCJCb29sZWFuUmVuZGVyZXJcIiAgICAgICAgICAgICA6IEJhc2lzLkFnR3JpZENvbXBvbmVudHMuQm9vbGVhblJlbmRlcmVyICAgICAgLFxuICAgICAgICBcIkJvb2xlYW5FZGl0b3JcIiAgICAgICAgICAgICAgIDogQmFzaXMuQWdHcmlkQ29tcG9uZW50cy5Cb29sZWFuRWRpdG9yICAgICAgICAsXG4gICAgICAgIFwiTnVtYmVyRWRpdG9yXCIgICAgICAgICAgICAgICAgOiBCYXNpcy5BZ0dyaWRDb21wb25lbnRzLk51bWJlckVkaXRvciAgICAgICAgICxcbiAgICAgICAgXCJUZXh0RWRpdG9yXCIgICAgICAgICAgICAgICAgICA6IEJhc2lzLkFnR3JpZENvbXBvbmVudHMuVGV4dEVkaXRvciAgICAgICAgICAgLFxuICAgICAgICBcIkRhdGVUaW1lRWRpdG9yXCIgICAgICAgICAgICAgIDogQmFzaXMuQWdHcmlkQ29tcG9uZW50cy5EYXRlVGltZUVkaXRvciAgICAgICAsXG4gICAgICAgIFwiRGF0ZVRpbWVGaWx0ZXJcIiAgICAgICAgICAgICAgOiBCYXNpcy5BZ0dyaWRDb21wb25lbnRzLkRhdGVUaW1lRmlsdGVyICAgICAgICxcbiAgICAgICAgXCJJbWFnZVJlbmRlcmVyXCIgICAgICAgICAgICAgICA6IEJhc2lzLkFnR3JpZENvbXBvbmVudHMuSW1hZ2VSZW5kZXJlciAgICAgICAgLFxuICAgICAgICBcIlRlbXBsYXRlUmVuZGVyZXJcIiAgICAgICAgICAgIDogQmFzaXMuQWdHcmlkQ29tcG9uZW50cy5UZW1wbGF0ZVJlbmRlcmVyICAgICAsXG4gICAgICB9LFxuICAgICAgXCJjb250ZXh0XCI6IHtcbiAgICAgICAgLi4uZGVlcFBhcnNlZE9wdGlvbnMuY29udGV4dCxcbiAgICAgICAgLi4ue1xuICAgICAgICAgIFwiZG9jdW1lbnRcIjogZ3dfZ2V0RG9jdW1lbnQoKSxcbiAgICAgICAgICBcIndpbmRvd1wiICA6IGd3X2dldFdpbmRvdygpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgaWYgKFxuICAgIGZpbmFsT3B0aW9ucy5jb250ZXh0Lmhhc093blByb3BlcnR5KFwibmF2aWdhdGVUb05leHRDZWxsXCIpICYmXG4gICAgZmluYWxPcHRpb25zLmNvbnRleHQubmF2aWdhdGVUb05leHRDZWxsXG4gICkge1xuICAgIGZpbmFsT3B0aW9ucy5uYXZpZ2F0ZVRvTmV4dENlbGwgPSBwYXJhbXMgPT4geyByZXR1cm4gZ3dfbmF2aWdhdGVUb05leHRSb3coaWQsIHBhcmFtcykgfTtcbiAgfVxuXG4gIGlmIChnZXREYXRhUGF0aFRlbXBsYXRlICYmIGZpbmFsT3B0aW9ucy50cmVlRGF0YSkge1xuICAgIGNvbnN0IGdldERhdGFQYXRoVGVtcGxhdGVDb21wbGllZCA9IHRlbXBsYXRlKGdldERhdGFQYXRoVGVtcGxhdGUpO1xuICAgIGZpbmFsT3B0aW9ucy5nZXREYXRhUGF0aCA9IGRhdGEgPT4gZ2V0RGF0YVBhdGhUZW1wbGF0ZUNvbXBsaWVkKHsgZGF0YTogZGF0YSB9KTtcbiAgfVxuXG4gIC8vIGV4dGVuZCB0aGUgY29sdW1uIGRlZmluaXRpb25zXG4gIGd3X2V4dGVuZENvbHVtbkRlZmluaXRpb25zKGZpbmFsT3B0aW9ucy5jb2x1bW5EZWZzKTtcblxuICByZXR1cm4gZmluYWxPcHRpb25zO1xufSIsIi8qXG4qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBCQmpHcmlkRXhXaWRnZXQgcGx1Z2luLlxuKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4qXG4qIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4qIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuKi9cblxuaW1wb3J0ICdleHBvc2UtbG9hZGVyP2pzcyFqc3MvanNzLmpzJztcbmltcG9ydCB7Z3dfZ2V0RG9jdW1lbnR9IGZyb20gXCIuL3V0aWxpdGllc1wiO1xuXG4vKipcbiAqIEFkZCBuZXcgc3R5bGUgXG4gKiBcbiAqIEFkZCBuZXcgc3R5bGUgdG8gdGhlIGRvY3VtZW50IFxuICogXG4gKiBAcGFyYW0ge1N0cmluZ30gc2VsZWN0b3IgY3NzIHNlbGVjdG9yXG4gKiBAcGFyYW0ge1N0cmluZ30gcnVsZXMgSnNvbiBzdHJpbmcgZm9yIGFuIGFycmF5IG9mIHJ1bGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19zZXRTdHlsZShzZWxlY3RvciwgcnVsZXMpIHtcbiAganNzLmZvckRvY3VtZW50KGd3X2dldERvY3VtZW50KCkpLnNldChzZWxlY3RvciwgSlNPTi5wYXJzZShydWxlcykpO1xufVxuXG4vKipcbiAqIFJlbW92ZSBzdHlsZVxuICogXG4gKiBSZW1vdmUgYWRkZWQgc3R5bGUgZnJvbSB0aGVzIGRvY3VtZW50IFxuICogXG4gKiBAcGFyYW0ge1N0cmluZ30gc2VsZWN0b3IgY3NzIHNlbGVjdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19yZW1vdmVTdHlsZShzZWxlY3Rvcikge1xuICBqc3MuZm9yRG9jdW1lbnQoZ3dfZ2V0RG9jdW1lbnQoKSkucmVtb3ZlKHNlbGVjdG9yKTtcbn1cbiIsIi8qXG4qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBCQmpHcmlkRXhXaWRnZXQgcGx1Z2luLlxuKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4qXG4qIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4qIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuKi9cblxuaW1wb3J0IHsgZ3dfZ2V0R3JpZCB9IGZyb20gXCIuL3V0aWxpdGllc1wiXG5pbXBvcnQge1xuICBnd19wYXJzZU5vZGVGcm9tRXZlbnQsXG4gIGd3X3NlbmRFdmVudFxufSBmcm9tIFwiZXZlbnRzL3V0aWxpdGllc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ3dfZ2V0Q29udGV4dE1lbnUoZ3JpZElkLCBwYXJhbXMpIHtcblxuICBjb25zdCBidWlsZENvbnRleHRNZW51QWN0aW9uID0gKHBhcmFtcywgaWQpID0+IHtcblxuICAgIHJldHVybiAoKSA9PiB7XG5cbiAgICAgIGNvbnN0IG5vZGUgPSBnd19wYXJzZU5vZGVGcm9tRXZlbnQocGFyYW1zKTtcbiAgICAgIGNvbnN0IGNvbElkID0gcGFyYW1zLmNvbHVtbi5jb2xJZDtcbiAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW1zLnZhbHVlO1xuXG4gICAgICBnd19zZW5kRXZlbnQoZ3dfZ2V0R3JpZChncmlkSWQpLm9wdGlvbnMuY29udGV4dCwge1xuICAgICAgICAndHlwZSc6ICdndy5jb250ZXh0bWVudScsXG4gICAgICAgICdkZXRhaWwnOiBKU09OLnN0cmluZ2lmeSh7IHI6IG5vZGUsIGM6IGNvbElkLCB2OnZhbHVlLCBpOmlkIH0pXG4gICAgICB9LCBpZCk7XG4gICAgfTtcbiAgfTtcblxuICBjb25zdCBwYXJzZU1lbnUgPSAobWVudSkgPT4ge1xuICAgIG1lbnUuZm9yRWFjaChpdGVtID0+IHtcblxuICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykgcmV0dXJuO1xuXG4gICAgICBpdGVtWydhY3Rpb24nXSA9IGJ1aWxkQ29udGV4dE1lbnVBY3Rpb24ocGFyYW1zLCBpdGVtLmlkKTtcblxuICAgICAgaWYgKGl0ZW1bJ2Nzc0NsYXNzZXMnXSAmJiAhQXJyYXkuaXNBcnJheShpdGVtWydjc3NDbGFzc2VzJ10pKVxuICAgICAgICBpdGVtWydjc3NDbGFzc2VzJ10gPSBpdGVtWydjc3NDbGFzc2VzJ10uc3BsaXQoXCIgXCIpO1xuXG4gICAgICBpZiAoaXRlbVsnc3ViTWVudSddKSBpdGVtWydzdWJNZW51J10gPSBwYXJzZU1lbnUoaXRlbVsnc3ViTWVudSddKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBtZW51O1xuICB9O1xuXG4gIHJldHVybiBwYXJzZU1lbnUoZ3dfZ2V0R3JpZChncmlkSWQpLm9wdGlvbnMuY29udGV4dC5jb250ZXh0TWVudSk7XG59XG4iLCIvKlxuKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQkJqR3JpZEV4V2lkZ2V0IHBsdWdpbi5cbiogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuKlxuKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiovXG5cbmltcG9ydCB7IGd3X2dldEdyaWQgfSBmcm9tIFwiLi91dGlsaXRpZXNcIjtcblxuLyoqXG4gKiBTaG93IGxvYWRpbmcgb3ZlcmxheVxuICogXG4gKiBAcGFyYW0ge1N0cmluZ30gaWQgdGhlIGdyaWQgaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3Nob3dMb2FkaW5nT3ZlcmxheShpZCkge1xuICBnd19nZXRHcmlkKGlkKVxuICAgIC5vcHRpb25zXG4gICAgLmFwaVxuICAgIC5zaG93TG9hZGluZ092ZXJsYXkoKTtcbn1cblxuLyoqXG4gKiBTaG93ICdubyByb3dzJyBvdmVybGF5XG4gKiBcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCB0aGUgZ3JpZCBpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfc2hvd05vUm93c092ZXJsYXkoaWQpIHtcbiAgZ3dfZ2V0R3JpZChpZClcbiAgICAub3B0aW9uc1xuICAgIC5hcGlcbiAgICAuc2hvd05vUm93c092ZXJsYXkoKTtcbn1cblxuLyoqXG4gKiBDbGVhciBhbGwgb3ZlcmxheXNcbiAqIFxuICogQHBhcmFtIHtTdHJpbmd9IGlkIHRoZSBncmlkIGlkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19oaWRlT3ZlcmxheShpZCkge1xuICBnd19nZXRHcmlkKGlkKVxuICAgIC5vcHRpb25zXG4gICAgLmFwaVxuICAgIC5oaWRlT3ZlcmxheSgpO1xufSIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQkJqR3JpZEV4V2lkZ2V0IHBsdWdpbi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QEJhc2lzLkFnR3JpZENvbXBvbmVudHMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgeyBnd19nZXRHcmlkIH0gZnJvbSBcIi4vdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBnd19wYXJzZU5vZGUgfSBmcm9tIFwiZXZlbnRzL3V0aWxpdGllc1wiO1xuXG5jb25zdCB7IGRlZXBQYXJzZUpzb24gfSA9IHJlcXVpcmUoXCJkZWVwLXBhcnNlLWpzb25cIik7XG5cbmV4cG9ydCBmdW5jdGlvbiBnd19zZXRRdWlja0ZpbHRlcihpZCwgZmlsdGVyKSB7XG4gIGd3X2dldEdyaWQoaWQpLm9wdGlvbnMuYXBpLnNldFF1aWNrRmlsdGVyKGZpbHRlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnd19leHBhbmRBbGwoaWQpIHtcbiAgZ3dfZ2V0R3JpZChpZCkub3B0aW9ucy5hcGkuZXhwYW5kQWxsKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnd19jb2xsYXBzZUFsbChpZCkge1xuICBnd19nZXRHcmlkKGlkKS5vcHRpb25zLmFwaS5jb2xsYXBzZUFsbCgpO1xufVxuLyoqXG4gKiBFbnN1cmVzIHRoZSByb3cgaW5kZXggaXMgdmlzaWJsZSBieSB2ZXJ0aWNhbGx5IHNjcm9sbGluZyB0aGUgZ3JpZFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCAgdGhlIGdyaWQncyBpZFxuICogQHBhcmFtIHtTdHJpbmd8TnVtYmVyfSBpbmRleCB0aGUgcm93IGluZGV4IG9yIGtleVxuICogQHBhcmFtIHtTdHJpbmd9IHBvc2l0aW9uIHsndG9wJywgJ21pZGRsZScsICdib3R0b20nLCB1bmRlZmluZWQvbnVsbH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X2Vuc3VyZUluZGV4VmlzaWJsZShpZCwgaW5kZXgsIHBvc2l0aW9uKSB7XG4gIGNvbnN0IGFwaSA9IGd3X2dldEdyaWQoaWQpLm9wdGlvbnMuYXBpO1xuICBjb25zdCBub2RlID0gYXBpLmdldFJvd05vZGUoaW5kZXgpO1xuXG4gIGlmIChub2RlKSBhcGkuZW5zdXJlTm9kZVZpc2libGUobm9kZSwgcG9zaXRpb24pO1xuICBlbHNlIGFwaS5lbnN1cmVJbmRleFZpc2libGUoTnVtYmVyKGluZGV4KSwgcG9zaXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3dfbmF2aWdhdGVUb05leHRSb3coaWQsIHBhcmFtcykge1xuICBjb25zdCBvcHRpb25zID0gZ3dfZ2V0R3JpZChpZCkub3B0aW9ucztcbiAgbGV0IHByZXZpb3VzQ2VsbCA9IHBhcmFtcy5wcmV2aW91c0NlbGxQb3NpdGlvbjtcbiAgbGV0IHN1Z2dlc3RlZE5leHRDZWxsID0gcGFyYW1zLm5leHRDZWxsUG9zaXRpb247XG5cbiAgY29uc3QgS0VZX1VQID0gMzg7XG4gIGNvbnN0IEtFWV9ET1dOID0gNDA7XG4gIGNvbnN0IEtFWV9MRUZUID0gMzc7XG4gIGNvbnN0IEtFWV9SSUdIVCA9IDM5O1xuXG4gIHN3aXRjaCAocGFyYW1zLmtleSkge1xuICAgIGNhc2UgS0VZX0RPV046XG4gICAgICAvLyBzZXQgc2VsZWN0ZWQgY2VsbCBvbiBjdXJyZW50IGNlbGwgKyAxXG4gICAgICBvcHRpb25zLmFwaS5mb3JFYWNoTm9kZShub2RlID0+IHtcbiAgICAgICAgaWYgKHByZXZpb3VzQ2VsbC5yb3dJbmRleCArIDEgPT09IG5vZGUucm93SW5kZXgpIHtcbiAgICAgICAgICBub2RlLnNldFNlbGVjdGVkKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBzdWdnZXN0ZWROZXh0Q2VsbDtcbiAgICBjYXNlIEtFWV9VUDpcbiAgICAgIC8vIHNldCBzZWxlY3RlZCBjZWxsIG9uIGN1cnJlbnQgY2VsbCAtIDFcbiAgICAgIG9wdGlvbnMuYXBpLmZvckVhY2hOb2RlKG5vZGUgPT4ge1xuICAgICAgICBpZiAocHJldmlvdXNDZWxsLnJvd0luZGV4IC0gMSA9PT0gbm9kZS5yb3dJbmRleCkge1xuICAgICAgICAgIG5vZGUuc2V0U2VsZWN0ZWQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHN1Z2dlc3RlZE5leHRDZWxsO1xuICAgIGNhc2UgS0VZX0xFRlQ6XG4gICAgY2FzZSBLRVlfUklHSFQ6XG4gICAgICByZXR1cm4gc3VnZ2VzdGVkTmV4dENlbGw7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIllvdSBoYXZlIHN1cGVyIHN0cmFuZ2Uga2V5Ym9hcmRcIik7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgcm93IGJhc2VkIG9uIGBnZXRSb3dOb2RlSWRgIGNvbmZpZyBkZWZpbmVkIGluIHRoZSBncmlkIGNvbnRleHRcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaWQgdGhlIGdyaWQncyBpZFxuICogQHBhcmFtIHtPYmplY3R9IGRhdGEgIHRoZSBkYXRhIHJvd1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfZ2V0Um93Tm9kZUlkKGlkLCBkYXRhKSB7XG4gIHJldHVybiBkYXRhW2d3X2dldEdyaWQoaWQpLm9wdGlvbnMuY29udGV4dC5nZXRSb3dOb2RlSWRdO1xufVxuXG4vKipcbiAqIFVwZGF0ZSB0aGUgZ3JpZCdzIGRhdGEgc2V0XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkIHRoZSBncmlkJ3MgaWRcbiAqIEBwYXJhbSB7T2JqZWN0fSBqc29uIGpzb24gb2JqZWN0IHdoaWNoIGNvbnRhaW5zIHRoZSBuZXcgZGF0YXNldCB0byB1cGRhdGUgdGhlIGdyaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3NldFJvd3NEYXRhKGlkLCBqc29uKSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnd19nZXRHcmlkKGlkKS5vcHRpb25zO1xuXG4gIG9wdGlvbnMuYXBpLnNldFJvd0RhdGEoanNvbik7XG4gIG9wdGlvbnMucm93RGF0YSA9IGpzb247XG59XG5cbi8qKlxuICogVXBkYXRlIGEgcm93IG9uIHRoZSBncmlkXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkIHRoZSBncmlkJ3MgaWRcbiAqIEBwYXJhbSB7T2JqZWN0fSByb3cgIGEgcm93IGRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3NldFJvd0RhdGEoaWQsIHJvdykge1xuICBjb25zdCBvcHRpb25zID0gZ3dfZ2V0R3JpZChpZCkub3B0aW9ucztcblxuICBvcHRpb25zLmFwaS51cGRhdGVSb3dEYXRhKHsgdXBkYXRlOiBbcm93XSB9KTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgb25lIG9yIG1vcmUgcm93cyBmcm9tIHRoZSBncmlkXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkIHRoZSBncmlkJ3MgaWRcbiAqIEBwYXJhbSB7QXJyYXl9IGluZGV4ZXMgIGFuIGFycmF5IG9mIHJvd3MgaW5kZXhlcyBvciBhbiBhcnJheSBvZiByb3dzIGtleXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3JlbW92ZVJvd3MoaWQsIGluZGV4ZXMpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGd3X2dldEdyaWQoaWQpLm9wdGlvbnM7XG4gIGxldCBpdGVtcyA9IFtdO1xuXG4gIGluZGV4ZXMuZm9yRWFjaChpbmRleCA9PiB7XG4gICAgaXRlbXMucHVzaChvcHRpb25zLmFwaS5nZXRSb3dOb2RlKGluZGV4KS5kYXRhKTtcbiAgfSk7XG5cbiAgb3B0aW9ucy5hcGkudXBkYXRlUm93RGF0YSh7IHJlbW92ZTogaXRlbXMgfSk7XG59XG5cbi8qKlxuICogQWRkIGEgcm93IHRvIGdyaWQgYXQgdGhlIGdpdmVuIGluZGV4XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkIHRoZSBncmlkJ3MgaWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBpbmRleCAgVGhlIGluc2VydGlvbiBwb3NpdGlvblxuICogQHBhcmFtIHtBcnJheX0gcm93cyAgQW4gYXJyYXkgb2Ygcm93cyB0byBhZGRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X2FkZFJvd3MoaWQsIGluZGV4LCByb3dzKSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnd19nZXRHcmlkKGlkKS5vcHRpb25zO1xuXG4gIG9wdGlvbnMuYXBpLnVwZGF0ZVJvd0RhdGEoeyBhZGQ6IHJvd3MsIGFkZEluZGV4OiBpbmRleCB9KTtcbn1cblxuLyoqXG4gKiBTZXQgdGhlIGhlaWdodCBvZiBhbGwgcm93c1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCB0aGUgZ3JpZCBpZFxuICogQHBhcmFtIHtOdW1iZXJ9IGhlaWdodCB0aGUgcm93IGhlaWdodFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfc2V0Um93c0hlaWdodChpZCwgaGVpZ2h0KSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnd19nZXRHcmlkKGlkKS5vcHRpb25zO1xuICBjb25zdCBhcGkgPSAgb3B0aW9ucy5hcGk7XG5cbiAgYXBpLmZvckVhY2hOb2RlKHJvdyA9PiB7XG4gICAgcm93LnNldFJvd0hlaWdodChoZWlnaHQpO1xuICB9KTtcbiAgXG4gIGFwaS5vblJvd0hlaWdodENoYW5nZWQoKTtcbn1cblxuLyoqXG4gKiBTZXQgdGhlIGdpdmVuIHJvdyBoZWlnaHRcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaWQgdGhlIGdyaWQgaWRcbiAqIEBwYXJhbSB7TnVtYmVyfFN0cmluZ30gaW5kZXggdGhlIHJvdyBpbmRleCBvciBrZXlcbiAqIEBwYXJhbSB7TnVtYmVyfSBoZWlnaHQgdGhlIG5ldyBoZWlnaHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3NldFJvd0hlaWdodChpZCwgaW5kZXgsIGhlaWdodCkge1xuICBjb25zdCBvcHRpb25zID0gZ3dfZ2V0R3JpZChpZCkub3B0aW9ucztcbiAgY29uc3QgYXBpID0gb3B0aW9ucy5hcGk7XG4gIGNvbnN0IHJvdyA9IGFwaS5nZXRSb3dOb2RlKGluZGV4KSB8fCBhcGkuZ2V0RGlzcGxheWVkUm93QXRJbmRleChpbmRleCk7XG5cbiAgaWYgKHJvdykge1xuICAgIHJvdy5zZXRSb3dIZWlnaHQoaGVpZ2h0KTtcbiAgICBvcHRpb25zLmFwaS5vblJvd0hlaWdodENoYW5nZWQoKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLndhcm4oYEZhaWxlZCB0byBzZXQgaGVpZ2h0IGZvciByb3cgJHtpbmRleH0uIFJvdyBjYW5ub3QgYmUgZm91bmRgKTtcbiAgfVxufVxuXG4vKipcbiAqIFNlbGVjdCByb3cgb3IgbW9yZSBiYXNlZCBvbiB0aGUgcm93IGlkIG9yIGluZGV4XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkIHRoZSBncmlkJ3MgaWRcbiAqIEBwYXJhbSB7QXJyYXl9IHJvd3MgYW4gYXJyYXkgb2Ygcm93IGtleXMgYW5kIGluZGV4ZXMgdG8gc2VsZWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19zZXRTZWxlY3RlZFJvd3MoaWQsIHJvd3MpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGd3X2dldEdyaWQoaWQpLm9wdGlvbnM7XG4gIGNvbnN0IGFwaSA9IG9wdGlvbnMuYXBpO1xuXG4gIGFwaS5mb3JFYWNoTm9kZUFmdGVyRmlsdGVyQW5kU29ydChub2RlID0+IHtcbiAgICBpZiAoXG4gICAgICByb3dzLmluZGV4T2YoU3RyaW5nKG5vZGUucm93SW5kZXgpKSA+IC0xIHx8XG4gICAgICByb3dzLmluZGV4T2YoU3RyaW5nKG5vZGUuaWQpKSA+IC0xXG4gICAgKSB7XG4gICAgICBub2RlLnNldFNlbGVjdGVkKHRydWUpO1xuICAgICAgbm9kZS5leHBhbmRlZCA9IHRydWU7XG4gICAgfVxuICB9KTtcblxuICBhcGkub25Hcm91cEV4cGFuZGVkT3JDb2xsYXBzZWQoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGd3X3NlbGVjdEFsbChpZCwgZmlsdGVyZWQpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGd3X2dldEdyaWQoaWQpLm9wdGlvbnM7XG5cbiAgaWYgKDEgPT09IGZpbHRlcmVkKSB7XG4gICAgb3B0aW9ucy5hcGkuc2VsZWN0QWxsRmlsdGVyZWQoKTtcbiAgfSBlbHNlIHtcbiAgICBvcHRpb25zLmFwaS5zZWxlY3RBbGwoKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3dfZGVzZWxlY3RBbGwoaWQsIGZpbHRlcmVkKSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnd19nZXRHcmlkKGlkKS5vcHRpb25zO1xuXG4gIGlmICgxID09PSBmaWx0ZXJlZCkge1xuICAgIG9wdGlvbnMuYXBpLmRlc2VsZWN0QWxsRmlsdGVyZWQoKTtcbiAgfSBlbHNlIHtcbiAgICBvcHRpb25zLmFwaS5kZXNlbGVjdEFsbCgpO1xuICB9XG59XG5cbi8qKlxuICogR2V0IHRoZSBjdXJyZW50IHNlbGVjdGVkIHJvd3NcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gaWQgZ3JpZCdzIGlkXG4gKlxuICogQHJldHVybnMge1N0cmluZ30gIHNlbGVjdGVkIHJvd3MgYXMgSlNPTlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfZ2V0U2VsZWN0ZWRSb3dzKGlkKSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnd19nZXRHcmlkKGlkKS5vcHRpb25zO1xuICBjb25zdCBub2RlcyA9IG9wdGlvbnMuYXBpLmdldFNlbGVjdGVkTm9kZXMoKTtcbiAgbGV0IHBhcnNlZCA9IFtdO1xuXG4gIG5vZGVzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgcGFyc2VkLnB1c2goZ3dfcGFyc2VOb2RlKG5vZGUsIG9wdGlvbnMuY29udGV4dCkpO1xuICB9KTtcblxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocGFyc2VkKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGxhc3Qgc2VsZWN0ZWQgcm93XG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IGlkIGdyaWQncyBpZFxuICpcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHNlbGVjdGVkIHJvdyBhcyBKU09OXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19nZXRTZWxlY3RlZFJvdyhpZCkge1xuICBjb25zdCByb3dzID0gSlNPTi5wYXJzZShnd19nZXRTZWxlY3RlZFJvd3MoaWQpKTtcblxuICBpZiAocm93cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocm93c1tyb3dzLmxlbmd0aCAtIDFdKTtcbiAgfVxuXG4gIHJldHVybiBcIlwiO1xufVxuIiwiLypcbiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEJCakdyaWRFeFdpZGdldCBwbHVnaW4uXG4qIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbipcbiogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4qL1xuXG5pbXBvcnQgeyBnd19nZXRHcmlkIH0gZnJvbSBcIi4vdXRpbGl0aWVzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnd19zZXRTdGF0ZShpZCwgc3RhdGUpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGd3X2dldEdyaWQoaWQpLm9wdGlvbnM7XG5cbiAgdHJ5IHtcbiAgICBvcHRpb25zLmNvbHVtbkFwaS5zZXRDb2x1bW5TdGF0ZShzdGF0ZS5jb2x1bW5zKTtcbiAgICBvcHRpb25zLmNvbHVtbkFwaS5zZXRDb2x1bW5Hcm91cFN0YXRlKHN0YXRlLmdyb3Vwcyk7XG4gICAgb3B0aW9ucy5hcGkuc2V0U29ydE1vZGVsKHN0YXRlLnNvcnQpO1xuICAgIG9wdGlvbnMuYXBpLnNldEZpbHRlck1vZGVsKHN0YXRlLmZpbHRlcnMpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gcGFyc2UgZ3JpZCBzdGF0ZSBmcm9tIEpTT04nLCBlKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3dfZ2V0U3RhdGUoaWQpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGd3X2dldEdyaWQoaWQpLm9wdGlvbnM7XG4gIGNvbnN0IGNvbHVtbnMgPSBvcHRpb25zLmNvbHVtbkFwaS5nZXRDb2x1bW5TdGF0ZSgpO1xuICBjb25zdCBncm91cHMgPSBvcHRpb25zLmNvbHVtbkFwaS5nZXRDb2x1bW5Hcm91cFN0YXRlKCk7XG4gIGNvbnN0IHNvcnQgPSBvcHRpb25zLmFwaS5nZXRTb3J0TW9kZWwoKTtcbiAgY29uc3QgZmlsdGVycyA9IG9wdGlvbnMuYXBpLmdldEZpbHRlck1vZGVsKCk7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgY29sdW1ucyxcbiAgICAgIGdyb3VwcyxcbiAgICAgIHNvcnQsXG4gICAgICBmaWx0ZXJzXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBjb252ZXJ0IHRoZSBncmlkIHN0YXRlIHRvIGpzb24nLCBlKTtcbiAgfVxufSIsIi8qXG4qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBCQmpHcmlkRXhXaWRnZXQgcGx1Z2luLlxuKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4qXG4qIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4qIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuKi9cblxuaW1wb3J0IHsgZ3dfZ2V0R3JpZCB9IGZyb20gXCIuL3V0aWxpdGllc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ3dfc2V0U3RhdHVzYmFyQ29tcG9uZW50VmlzaWJpbGl0eShpZCwga2V5LCB2aXNpYmlsaXR5KSB7XG5cdGd3X2dldEdyaWQoaWQpXG5cdFx0Lm9wdGlvbnNcblx0XHQuYXBpXG5cdFx0LmdldFN0YXR1c1BhbmVsKGtleSlcblx0XHQuc2V0VmlzaWJsZShCb29sZWFuKHZpc2liaWxpdHkpKTtcbn0iLCIvKlxuKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQkJqR3JpZEV4V2lkZ2V0IHBsdWdpbi5cbiogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuKlxuKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiovXG5cbmltcG9ydCB7IGd3X2dldEdyaWQgfSBmcm9tIFwiLi91dGlsaXRpZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGd3X3NldFNpZGVCYXJWaXNpYmxlKGlkLCB2YWx1ZSkge1xuICBnd19nZXRHcmlkKGlkKVxuICAgIC5vcHRpb25zXG4gICAgLmFwaVxuICAgIC5zZXRTaWRlQmFyVmlzaWJsZShCb29sZWFuKHZhbHVlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnd19vcGVuVG9vbHBhbmVsKGdyaWRJZCwgdG9vbHBhbmVsSWQpIHtcbiAgZ3dfZ2V0R3JpZChncmlkSWQpXG4gICAgLm9wdGlvbnNcbiAgICAuYXBpXG4gICAgLm9wZW5Ub29sUGFuZWwodG9vbHBhbmVsSWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3dfY2xvc2VUb29scGFuZWwoZ3JpZElkLCB0b29scGFuZWxJZCkge1xuICBnd19nZXRHcmlkKGdyaWRJZClcbiAgICAub3B0aW9uc1xuICAgIC5hcGlcbiAgICAuY2xvc2VUb29sUGFuZWwodG9vbHBhbmVsSWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3dfc2V0RnVuY3Rpb25zUmVhZE9ubHkoaWQsIHJlYWRvbmx5KSB7XG4gIGd3X2dldEdyaWQoaWQpXG4gICAgLm9wdGlvbnNcbiAgICAuYXBpXG4gICAgLnNldEZ1bmN0aW9uc1JlYWRPbmx5KEJvb2xlYW4ocmVhZG9ubHkpKTtcbn0iLCIvKlxuKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQkJqR3JpZEV4V2lkZ2V0IHBsdWdpbi5cbiogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAQmFzaXMuQWdHcmlkQ29tcG9uZW50cy5jb20+XG4qXG4qIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4qIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuKi9cblxuLyoqXG4gKiBHZXQgZG9jdW1lbnQgXG4gKiBcbiAqIEdldCB0aGUgZG9jdW1lbnQgaW5zdGFuY2UgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IEJCaiBlbnZcbiAqIFxuICogQHJldHVybiB7T2JqZWN0fSBEb2N1bWVudCBpbnN0YW5jZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfZ2V0RG9jdW1lbnQoKSB7XG4gIHJldHVybiB0eXBlb2YgJGRvYyAhPT0gJ3VuZGVmaW5lZCcgPyAkZG9jIDogZG9jdW1lbnQ7XG59XG5cbi8qKlxuICogR2V0IHdpbmRvdyBcbiAqIFxuICogR2V0IHRoZSB3aW5kb3cgaW5zdGFuY2UgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IEJCaiBlbnZcbiAqIFxuICogQHJldHVybiB7T2JqZWN0fSBXaW5kb3cgaW5zdGFuY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X2dldFdpbmRvdygpIHtcbiAgcmV0dXJuIHR5cGVvZiAkd25kICE9PSAndW5kZWZpbmVkJyA/ICR3bmQgOiB3aW5kb3c7XG59XG5cbi8qKlxuICogRXNjYXBlIFZhbHVlIFxuICogXG4gKiBDaGFuZ2UgbnVsbCBhbmQgdW5kZWZpbmVkIHRvIGVtcHR5IHN0cmluZyBcbiAqIFxuICogQHBhcmFtIHsqfSB2YWx1ZSBcbiAqIFxuICogQHJldHVybiB7U3RyaW5nfSBlc2NhcGVkIHZhbHVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19lc2NhcGUodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6ICcnO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgdW5pcXVlIHV1aWQgXG4gKiBAc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEwNTAzNC9jcmVhdGUtZ3VpZC11dWlkLWluLWphdmFzY3JpcHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3V1aWQoKSB7XG4gIHJldHVybiAneHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4Jy5yZXBsYWNlKC9beHldL2csIGZ1bmN0aW9uKGMpIHtcbiAgICB2YXIgciA9IE1hdGgucmFuZG9tKCkgKiAxNiB8IDAsIHYgPSBjID09ICd4JyA/IHIgOiAociAmIDB4MyB8IDB4OCk7XG4gICAgcmV0dXJuIHYudG9TdHJpbmcoMTYpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgR3JpZCBcbiAqIFxuICogUmV0cmlldmUgdGhlIGdyaWQgaW5zdGFuY2UgZnJvbSBgd2luZG93LkJCakdyaWRFeFdpZGdldGAgYXJyYXkgXG4gKiBcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCBUaGUgZ3JpZCdzIGlkXG4gKiBcbiAqIEByZXR1cm4ge09iamVjdHxudWxsfSBUaGUgZ3JpZCdzIGluc3RhbmNlIG9mciBudWxsXG4gKiBAdGhyb3dzIFR5cGVFcnJvciB3aGVuIHRoZSBncmlkIGluc3RhbmNlIGlzIG5vdCBmb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfZ2V0R3JpZChpZCkge1xuICB3aW5kb3cuQkJqR3JpZEV4V2lkZ2V0ID0gd2luZG93LkJCakdyaWRFeFdpZGdldCB8fCB7fTtcbiAgY29uc3QgZ3JpZCA9ICB3aW5kb3cuQkJqR3JpZEV4V2lkZ2V0W2lkXSB8fCBudWxsO1xuXG4gIGlmICghZ3JpZCkge1xuICAgIGNvbnN0IHJlZ2lzdGVyZWRHcmlkcyA9IEpTT04uc3RyaW5naWZ5KE9iamVjdC5rZXlzKHdpbmRvdy5CQmpHcmlkRXhXaWRnZXQpKTtcbiAgICAvL2dldEZ1bmNBcmdzKGZ1bmMpLmZvckVhY2goKGtleSwgaSkgPT4gYXJnc09ialtrZXldID0gYXJnc1tpXSk7XG4gICAgXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbmBcXG5cXG5bR3JpZCBOb3QgRm91bmRdIFRoZSBtZXRob2QgYXNrZWQgZm9yIG5vbi1leGlzdGVudCBncmlkIGluc3RhbmNlLlxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuUmVxdWlyZWQgR3JpZCBJZCA6ICR7aWR9ICAgXG5SZWdpc3RlcmVkIEdyaWRzIDogJHtyZWdpc3RlcmVkR3JpZHN9XG5gKTtcbiAgfVxuICBcbiAgcmV0dXJuIGdyaWQ7XG59XG5cbi8qKlxuICogQWRkIEdyaWQgXG4gKiBcbiAqIFN0b3JlIGEgbmV3IGdyaWQgaW5zdGFuY2UgYnkgaW4gdGhlIGB3aW5kb3cuQkJqR3JpZEV4V2lkZ2V0YCBhcnJheSBcbiAqIFxuICogQHBhcmFtIHtTdHJpbmd9IGlkIFRoZSBncmlkJ3MgaWRcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zICBUaGUgZ3JpZCdzIG9wdGlvbnNcbiAqIFxuICogQHJldHVybiB7T2JqZWN0fSBTdG9yZWQgZ3JpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfYWRkR3JpZChpZCwgb3B0aW9ucykge1xuICB3aW5kb3cuQkJqR3JpZEV4V2lkZ2V0ID0gd2luZG93LkJCakdyaWRFeFdpZGdldCB8fCB7fTtcbiAgd2luZG93LkJCakdyaWRFeFdpZGdldFtpZF0gPSBvcHRpb25zO1xuICBcbiAgcmV0dXJuIGd3X2dldEdyaWQoaWQpO1xufSIsIi8qXG4qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBCQmpHcmlkRXhXaWRnZXQgcGx1Z2luLlxuKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4qXG4qIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4qIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuKi9cblxuLy8gc2VsZWN0aW9uIGNvbnN0YW50c1xuZXhwb3J0IGNvbnN0IEdXX0VWRU5UX1JPV19DTElDSyA9IDY5O1xuZXhwb3J0IGNvbnN0IEdXX0VWRU5UX1JPV19ET1VCTEVfQ0xJQ0sgPSA1MjtcbmV4cG9ydCBjb25zdCBHV19FVkVOVF9DRUxMX0NMSUNLID0gNTAwMTtcbmV4cG9ydCBjb25zdCBHV19FVkVOVF9DRUxMX0RPVUJMRV9DTElDSyA9IDUwMDI7XG5cbi8vIGVkaXRpbmcgY29uc3RhbnRzXG5leHBvcnQgY29uc3QgR1dfRVZFTlRfQ0VMTF9FRElUSU5HX1NUQVJURUQgPSA1MDAzO1xuZXhwb3J0IGNvbnN0IEdXX0VWRU5UX0NFTExfRURJVElOR19TVE9QUEVEID0gNTAwNDtcbmV4cG9ydCBjb25zdCBHV19FVkVOVF9DRUxMX1ZBTFVFX0NIQU5HRUQgPSA1MDA1O1xuZXhwb3J0IGNvbnN0IEdXX0VWRU5UX1JPV19FRElUSU5HX1NUQVJURUQgID0gNTAwNjtcbmV4cG9ydCBjb25zdCBHV19FVkVOVF9ST1dfRURJVElOR19TVE9QUEVEID0gNTAwNztcblxuLy8gc3RhdGUgY29uc3RhbnRzXG5leHBvcnQgY29uc3QgR1dfRVZFTlRfR1JJRF9TVEFURV9DSEFOR0UgPSA1MDA4O1xuXG4vLyByYW5nZSBzZWxlY3Rpb25cbmV4cG9ydCBjb25zdCBHV19FVkVOVF9SQU5HRV9TRUxFQ1RJT05fQ0hBTkdFRCA9IDUwMDk7XG5cbi8vIGtleWJvYXJkIGV2ZW50c1xuZXhwb3J0IGNvbnN0IEdXX0VWRU5UX0tFWVBSRVNTID0gNTAxMDsiLCIvKlxuKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQkJqR3JpZEV4V2lkZ2V0IHBsdWdpbi5cbiogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuKlxuKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiovXG5cbmltcG9ydCB7IGd3X3NlbmRFdmVudCwgZ3dfcGFyc2VOb2RlRnJvbUV2ZW50IH0gZnJvbSBcIi4vdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBnd19lc2NhcGUsIGd3X2dldEdyaWQgfSBmcm9tIFwiYXBpL3V0aWxpdGllc1wiO1xuaW1wb3J0IHtcbiAgR1dfRVZFTlRfQ0VMTF9FRElUSU5HX1NUQVJURUQsXG4gIEdXX0VWRU5UX0NFTExfRURJVElOR19TVE9QUEVELFxuICBHV19FVkVOVF9DRUxMX1ZBTFVFX0NIQU5HRUQsXG4gIEdXX0VWRU5UX1JPV19FRElUSU5HX1NUQVJURUQsXG4gIEdXX0VWRU5UX1JPV19FRElUSU5HX1NUT1BQRURcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IENFTExfRURJVElOR19FVkVOVFNfTUFQID0ge1xuICAnY2VsbEVkaXRpbmdTdGFydGVkJyAgOiBHV19FVkVOVF9DRUxMX0VESVRJTkdfU1RBUlRFRCxcbiAgJ2NlbGxFZGl0aW5nU3RvcHBlZCcgIDogR1dfRVZFTlRfQ0VMTF9FRElUSU5HX1NUT1BQRUQsXG4gICdjZWxsVmFsdWVDaGFuZ2VkJyAgOiBHV19FVkVOVF9DRUxMX1ZBTFVFX0NIQU5HRUQsXG59O1xuXG5jb25zdCBST1dfRURJVElOR19FVkVOVFNfTUFQID0ge1xuICAncm93RWRpdGluZ1N0YXJ0ZWQnICA6IEdXX0VWRU5UX1JPV19FRElUSU5HX1NUQVJURUQsXG4gICdyb3dFZGl0aW5nU3RvcHBlZCcgIDogR1dfRVZFTlRfUk9XX0VESVRJTkdfU1RPUFBFRCxcbn07XG5cbi8qKlxuICogQW4gaGFuZGxlciBmb3IgdGhlIGdyaWQgYGNlbGxFZGl0aW5nU3RhcnRlZGAgLCBgY2VsbEVkaXRpbmdTdG9wcGVkYCBhbmQgXG4gKiBgY2VsbFZhbHVlQ2hhbmdlZGAgZXZlbnRzXG4gKiBcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCBUaGUgZ3JpZCdzIGlkXG4gKiBAcGFyYW0ge09iamVjdH0gZSAgVGhlIGV2ZW50IHBheWxvYWRcbiAqIFxuICogQGxpc3RlbnMgYWdHcmlkLmNlbGxFZGl0aW5nU3RhcnRlZFxuICogQGxpc3RlbnMgYWdHcmlkLmNlbGxFZGl0aW5nU3RvcHBlZFxuICogQGxpc3RlbnMgYWdHcmlkLmNlbGxWYWx1ZUNoYW5nZWRcbiAqIFxuICogQGZpcmVzIGd3LmNlbGxFZGl0aW5nU3RhcnRlZFxuICogQGZpcmVzIGd3LmNlbGxFZGl0aW5nU3RvcHBlZFxuICogQGZpcmVzIGd3LmNlbGxWYWx1ZUNoYW5nZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X29uQ2VsbEVkaXRpbmdFdmVudChpZCwgZSkge1xuXG4gIGNvbnN0IHZhbHVlID0gZS5oYXNPd25Qcm9wZXJ0eShcIm5ld1ZhbHVlXCIpID8gZ3dfZXNjYXBlKGUubmV3VmFsdWUpIDogZ3dfZXNjYXBlKGUudmFsdWUpO1xuICBjb25zdCBvbGRWYWx1ZSA9IGUuaGFzT3duUHJvcGVydHkoXCJvbGRWYWx1ZVwiKSA/ICBnd19lc2NhcGUoZS5vbGRWYWx1ZSkgOiAoZS5oYXNPd25Qcm9wZXJ0eShcIm5ld1ZhbHVlXCIpID8gZ3dfZXNjYXBlKGUubmV3VmFsdWUpIDogZ3dfZXNjYXBlKGUudmFsdWUpKVxuXG4gIC8vaWYgKHZhbHVlID09PSBvbGRWYWx1ZSkgcmV0dXJuO1xuXG4gIGNvbnN0IHBhcnNlZCA9IGd3X3BhcnNlTm9kZUZyb21FdmVudChlKTtcbiAgY29uc3QgdHlwZSA9IGUudHlwZTtcbiAgY29uc3QgY29sSWQgPSBlLmNvbHVtbi5jb2xJZDtcblxuICBpZiAocGFyc2VkKSB7XG4gICAgZ3dfc2VuZEV2ZW50KFxuICAgICAgZ3dfZ2V0R3JpZChpZCkub3B0aW9ucy5jb250ZXh0LFxuICAgICAge1xuICAgICAgICAndHlwZSc6IGBndy4ke3R5cGV9YCxcbiAgICAgICAgJ2RldGFpbCc6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICByOiBwYXJzZWQsIC8vIHJvd1xuICAgICAgICAgIHY6IHZhbHVlLCAvLyBuZXcgdmFsdWVcbiAgICAgICAgICBvOiBvbGRWYWx1ZSwgLy8gb2xkIHZhbHVlXG4gICAgICAgICAgYzogY29sSWQgLy8gY29sdW1uXG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgQ0VMTF9FRElUSU5HX0VWRU5UU19NQVBbdHlwZV1cbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogQW4gaGFuZGxlciBmb3IgdGhlIGdyaWQgYHJvd0VkaXRpbmdTdGFydGVkYCAsIGByb3dFZGl0aW5nU3RvcHBlZGAgZXZlbnRzXG4gKiBcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCBUaGUgZ3JpZCdzIGlkXG4gKiBAcGFyYW0ge09iamVjdH0gZSAgVGhlIGV2ZW50IHBheWxvYWRcbiAqIFxuICogQGxpc3RlbnMgYWdHcmlkLnJvd0VkaXRpbmdTdGFydGVkXG4gKiBAbGlzdGVucyBhZ0dyaWQucm93RWRpdGluZ1N0b3BwZWRcbiAqIFxuICogQGZpcmVzIGd3LnJvd0VkaXRpbmdTdGFydGVkXG4gKiBAZmlyZXMgZ3cucm93RWRpdGluZ1N0b3BwZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X29uUm93RWRpdGluZ0V2ZW50KGlkLCBlKSB7XG4gIGNvbnN0IHBhcnNlZCA9IGd3X3BhcnNlTm9kZUZyb21FdmVudChlKTtcblxuICBpZiAocGFyc2VkKSB7XG4gICAgY29uc3QgdHlwZSA9IGUudHlwZTtcbiAgICBnd19zZW5kRXZlbnQoXG4gICAgICBnd19nZXRHcmlkKGlkKS5vcHRpb25zLmNvbnRleHQsXG4gICAgICB7XG4gICAgICAgICd0eXBlJzogYGd3LiR7ZS50eXBlfWAsXG4gICAgICAgICdkZXRhaWwnOiBKU09OLnN0cmluZ2lmeShwYXJzZWQpXG4gICAgICB9LFxuICAgICAgUk9XX0VESVRJTkdfRVZFTlRTX01BUFt0eXBlXVxuICAgICk7XG4gIH1cbn1cblxuIiwiLypcbiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEJCakdyaWRFeFdpZGdldCBwbHVnaW4uXG4qIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbipcbiogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4qL1xuXG5pbXBvcnQge1xuXHRnd19vblJvd0RvdWJsZUNsaWNrZWQsXG5cdGd3X29uU2VsZWN0aW9uQ2hhbmdlZCxcblx0Z3dfb25DZWxsQ2xpY2tFdmVudCxcblx0Z3dfb25SYW5nZVNlbGVjdGlvbkNoYW5nZWRcbn0gZnJvbSBcIi4vc2VsZWN0aW9uc1wiO1xuXG5pbXBvcnQge1xuXHRnd19vbkNlbGxFZGl0aW5nRXZlbnQsXG5cdGd3X29uUm93RWRpdGluZ0V2ZW50XG59IGZyb20gXCIuL2VkaXRpbmdcIjtcblxuaW1wb3J0IHtcblx0Z3dfb25SZWFkeUV2ZW50XG59IGZyb20gXCIuL3JlYWR5XCI7XG5cbmltcG9ydCB7XG5cdGd3X2RlYm91bmNlXG59IGZyb20gXCIuL3V0aWxpdGllc1wiO1xuXG5leHBvcnQge1xuXHRnd19vblJvd0RvdWJsZUNsaWNrZWQsXG5cdGd3X29uU2VsZWN0aW9uQ2hhbmdlZCxcblx0Z3dfb25SYW5nZVNlbGVjdGlvbkNoYW5nZWQsXG5cdGd3X29uQ2VsbENsaWNrRXZlbnQsXG5cdGd3X29uQ2VsbEVkaXRpbmdFdmVudCxcblx0Z3dfb25Sb3dFZGl0aW5nRXZlbnQsXG5cdGd3X29uUmVhZHlFdmVudCxcblx0Z3dfZGVib3VuY2Vcbn07IiwiLypcbiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEJCakdyaWRFeFdpZGdldCBwbHVnaW4uXG4qIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbipcbiogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4qL1xuXG5pbXBvcnQgeyBnd19zZW5kRXZlbnQgfSBmcm9tIFwiLi91dGlsaXRpZXNcIjtcbmltcG9ydCB7IEdXX0VWRU5UX0tFWVBSRVNTIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBnd19nZXRHcmlkIH0gZnJvbSBcImFwaS91dGlsaXRpZXNcIjtcblxuLyoqXG4gKiBDb21wb3NlIGEgbW9kZWwgb2YgdGhlIGtleWRvd24gZXZlbnQgYW5kIHNlbmQgaXQgdG8gQkJqXG4gKiBcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCAgdGhlIGdyaWQncyBpZFxuICogQHBhcmFtIHtFdmVudH0ga2V5ZG93bkV2ZW50IGtleWRvd24gZXZlbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X29uS2V5ZG93bihpZCwga2V5ZG93bkV2ZW50KSB7XG4gIGd3X3NlbmRFdmVudChcbiAgICBnd19nZXRHcmlkKGlkKS5vcHRpb25zLmNvbnRleHQsXG4gICAge1xuICAgICAgJ3R5cGUnOiBgZ3cua2V5cHJlc3NgLFxuICAgICAgJ2RldGFpbCc6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgYzogIGtleWRvd25FdmVudC5rZXksXG4gICAgICAgIGtjOiBrZXlkb3duRXZlbnQud2hpY2ggfHwgTnVtYmVyKGtleWRvd25FdmVudC5rZXlDb2RlKSxcbiAgICAgICAgYWs6IGtleWRvd25FdmVudC5hbHRLZXksXG4gICAgICAgIHNrOiBrZXlkb3duRXZlbnQuc2hpZnRLZXksXG4gICAgICAgIGNrOiBrZXlkb3duRXZlbnQuY3RybEtleSxcbiAgICAgIH0pXG4gICAgfSxcbiAgICBHV19FVkVOVF9LRVlQUkVTU1xuICApO1xufVxuIiwiLypcbiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEJCakdyaWRFeFdpZGdldCBwbHVnaW4uXG4qIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbipcbiogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4qL1xuXG5pbXBvcnQgeyBnd19kZWJvdW5jZSB9IGZyb20gXCIuL3V0aWxpdGllc1wiO1xuaW1wb3J0IHsgZ3dfb25TdGF0ZUNoYW5nZWQgfSBmcm9tIFwiLi9zdGF0ZVwiO1xuaW1wb3J0IHsgZ3dfb25LZXlkb3duIH0gZnJvbSBcIi4va2V5Ym9hcmRcIjtcbmltcG9ydCB7IGd3X2dldEdyaWQgfSBmcm9tIFwiYXBpL3V0aWxpdGllc1wiO1xuXG4vKipcbiAqIE9uIFJlYWR5IEV2ZW50IFxuICogXG4gKiBUaGUgbWV0aG9kIHdpbGwgaWdub3JlIGZpcnN0IHJlYWR5IGV2ZW50IGFuZCB0aGVuIHJlZ2lzdGVyIGEgZGVib3VuY2VkIHN0YXRlXG4gKiBjYWxsYmFjayB0byBzZW5kIHN0YXRlIGV2ZW50cyB0byBCQmpcbiAqIFxuICogQHBhcmFtIHtTdHJpbmd9IGlkIFRoZSBncmlkJ3MgaWRcbiAqIEBwYXJhbSB7T2JqZWN0fSBlICBUaGUgZXZlbnQgcGF5bG9hZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfb25SZWFkeUV2ZW50KGlkLCBlKSB7XG4gIGNvbnN0IGdyaWQgPSBnd19nZXRHcmlkKGlkKTtcblxuICAvLyByZWdpc3RlciBzdGF0ZSBkZWJvdW5jZSBtb25pdG9yIFxuICBjb25zdCBzdGF0ZURlYm91bmNlID0gZ3dfZGVib3VuY2UoY2hhbmdlRXZlbnQgPT4ge1xuICAgIGd3X29uU3RhdGVDaGFuZ2VkKGlkLCBjaGFuZ2VFdmVudCk7XG4gIH0sIDUwMCk7XG5cbiAgW1xuICAgICdzb3J0Q2hhbmdlZCcsXG4gICAgJ2ZpbHRlckNoYW5nZWQnLFxuICAgICdjb2x1bW5WaXNpYmxlJyxcbiAgICAnY29sdW1uUGlubmVkJyxcbiAgICAnY29sdW1uUmVzaXplZCcsXG4gICAgJ2NvbHVtbk1vdmVkJyxcbiAgICAnbmV3Q29sdW1uc0xvYWRlZCcsXG4gICAgJ2dyaWRDb2x1bW5zQ2hhbmdlZCcsXG4gICAgJ2Rpc3BsYXllZENvbHVtbnNDaGFuZ2VkJyxcbiAgICAndmlydHVhbENvbHVtbnNDaGFuZ2VkJyxcbiAgICAnY29sdW1uRXZlcnl0aGluZ0NoYW5nZWQnLFxuICAgIC8vJ2dyaWRTaXplQ2hhbmdlZCcsXG4gICAgJ2V4cGFuZE9yQ29sbGFwc2VBbGwnLFxuICAgIC8vJ3Rvb2xQYW5lbFZpc2libGVDaGFuZ2VkJ1xuICBdLmZvckVhY2goZXZlbnQgPT4ge1xuICAgIGdyaWQub3B0aW9ucy5hcGkuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgc3RhdGVEZWJvdW5jZSk7XG4gIH0pO1xuXG4gIC8vIHJlZ2lzdGVyIGtleWJvYXJkIGRlYm91bmNlIG1vbml0b3IgXG4gIGNvbnN0IGtleWJvYXJkRGVib3VuY2UgPSBnd19kZWJvdW5jZShrZXlkb3duRXZlbnQgPT4ge1xuICAgIGd3X29uS2V5ZG93bihpZCwga2V5ZG93bkV2ZW50KTtcbiAgfSAsIDUwMCk7XG5cbiAgZ3JpZC5jb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGtleWJvYXJkRGVib3VuY2UpO1xufSIsIi8qXG4qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBCQmpHcmlkRXhXaWRnZXQgcGx1Z2luLlxuKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4qXG4qIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4qIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuKi9cblxuaW1wb3J0IHsgZ3dfc2VuZEV2ZW50LCBnd19wYXJzZU5vZGVGcm9tRXZlbnQgfSBmcm9tIFwiLi91dGlsaXRpZXNcIjtcbmltcG9ydCB7IGd3X2VzY2FwZSwgZ3dfZ2V0R3JpZCB9IGZyb20gXCJhcGkvdXRpbGl0aWVzXCI7XG5pbXBvcnQge1xuICBHV19FVkVOVF9ST1dfQ0xJQ0ssXG4gIEdXX0VWRU5UX1JPV19ET1VCTEVfQ0xJQ0ssXG4gIEdXX0VWRU5UX0NFTExfQ0xJQ0ssXG4gIEdXX0VWRU5UX0NFTExfRE9VQkxFX0NMSUNLLFxuICBHV19FVkVOVF9SQU5HRV9TRUxFQ1RJT05fQ0hBTkdFRFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuY29uc3QgQ0VMTF9DTElDS0lOR19FVkVOVFNfTUFQID0ge1xuICAnY2VsbENsaWNrZWQnOiBHV19FVkVOVF9DRUxMX0NMSUNLLFxuICAnY2VsbERvdWJsZUNsaWNrZWQnOiBHV19FVkVOVF9DRUxMX0RPVUJMRV9DTElDSyxcbn07XG5cbi8qKlxuICogQW4gaGFuZGxlciBmb3IgdGhlIGdyaWQgYHJvd0RvdWJsZUNsaWNrZWRgIGV2ZW50XG4gKiBcbiAqIFRoZSBmdW5jdGlvbiB3aWxsIHNlbmQgYSBiYmogZXZlbnQgd2l0aCBgR1dfTk9ERWAgYXMgcGF5bG9hZFxuICogXG4gKiBAcGFyYW0ge09iamVjdH0gZSBUaGUgZXZlbnQncyBwYXlsb2FkXG4gKiBcbiAqIEBsaXN0ZW5zIGFnR3JpZC5yb3dEb3VibGVDbGlja2VkXG4gKiBAZmlyZXMgZ3cucm93RG91YmxlQ2xpY2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X29uUm93RG91YmxlQ2xpY2tlZChlKSB7XG4gIGNvbnN0IGNvbnRleHQgPSBlLmFwaS5ncmlkT3B0aW9uc1dyYXBwZXIuZ3JpZE9wdGlvbnMuY29udGV4dDtcbiAgZ3dfc2VuZEV2ZW50KGNvbnRleHQsIHtcbiAgICAndHlwZSc6ICdndy5yb3dEb3VibGVDbGljaycsXG4gICAgJ2RldGFpbCc6ICcnXG4gIH0sIEdXX0VWRU5UX1JPV19ET1VCTEVfQ0xJQ0spO1xufVxuXG4vKipcbiAqIEEgaGFuZGxlciBmb3IgdGhlIGdyaWQgYHNlbGVjdGlvbkNoYW5nZWRgIGV2ZW50XG4gKiBcbiAqIEBwYXJhbSB7T2JqZWN0fSBlICBUaGUgZXZlbnQgcGF5bG9hZFxuICogXG4gKiBAbGlzdGVucyBhZ0dyaWQuc2VsZWN0aW9uQ2hhbmdlZFxuICogQGZpcmVzIGd3LnJvd1NlbGVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfb25TZWxlY3Rpb25DaGFuZ2VkKGUpIHtcbiAgY29uc3QgY29udGV4dCA9IGUuYXBpLmdyaWRPcHRpb25zV3JhcHBlci5ncmlkT3B0aW9ucy5jb250ZXh0O1xuICBnd19zZW5kRXZlbnQoY29udGV4dCwge1xuICAgICd0eXBlJzogJ2d3LnJvd1NlbGVjdCcsXG4gICAgJ2RldGFpbCc6ICcnXG4gIH0sIEdXX0VWRU5UX1JPV19DTElDSyk7XG59XG5cbi8qKlxuICogQSBoYW5kbGVyIGZvciB0aGUgZ3JpZCBgcmFuZ2VTZWxlY3Rpb25DaGFuZ2VkYCBldmVudFxuICogXG4gKiBAcGFyYW0ge09iamVjdH0gZSBcbiAqIFxuICogQGxpc3RlbnMgYWdHcmlkLnJhbmdlU2VsZWN0aW9uQ2hhbmdlZFxuICogQGZpcmVzIGd3LnJhbmdlU2VsZWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19vblJhbmdlU2VsZWN0aW9uQ2hhbmdlZChlKSB7XG4gIGNvbnN0IGNvbnRleHQgPSBlLmFwaS5ncmlkT3B0aW9uc1dyYXBwZXIuZ3JpZE9wdGlvbnMuY29udGV4dDtcbiAgZ3dfc2VuZEV2ZW50KGNvbnRleHQsIHtcbiAgICAndHlwZSc6ICdndy5yYW5nZVNlbGVjdGlvbicsXG4gICAgJ2RldGFpbCc6ICcnXG4gIH0sIEdXX0VWRU5UX1JBTkdFX1NFTEVDVElPTl9DSEFOR0VEKTtcbn1cblxuLyoqXG4gKiBBIGhhbmRsZXIgZm9yIHRoZSBncmlkIGBjZWxsQ2xpY2tFdmVudGAgJiBgY2VsbERvdWJsZUNsaWNrZWRgIGV2ZW50XG4gKiBcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCBUaGUgZ3JpZCdzIGlkXG4gKiBAcGFyYW0ge09iamVjdH0gZSAgVGhlIGV2ZW50IHBheWxvYWRcbiAqIFxuICogQGxpc3RlbnMgYWdHcmlkLmNlbGxDbGlja0V2ZW50XG4gKiBAbGlzdGVucyBhZ0dyaWQuY2VsbERvdWJsZUNsaWNrZWRcbiAqIFxuICogQGZpcmVzIGd3LmNlbGxDbGlja2VkXG4gKiBAZmlyZXMgZ3cuY2VsbERvdWJsZUNsaWNrZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X29uQ2VsbENsaWNrRXZlbnQoaWQsIGUpIHtcbiAgY29uc3QgcGFyc2VkID0gZ3dfcGFyc2VOb2RlRnJvbUV2ZW50KGUpO1xuXG4gIGlmIChwYXJzZWQpIHtcbiAgICBjb25zdCB0eXBlID0gZS50eXBlO1xuICAgIGd3X3NlbmRFdmVudChnd19nZXRHcmlkKGlkKS5vcHRpb25zLmNvbnRleHQsIHtcbiAgICAgICd0eXBlJzogYGd3LiR7ZS50eXBlfWAsXG4gICAgICAnZGV0YWlsJzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICByOiBwYXJzZWQsIC8vIHJvd1xuICAgICAgICB2OiBnd19lc2NhcGUoZS52YWx1ZSksICAvLyBuZXcgdmFsdWVcbiAgICAgICAgbzogZ3dfZXNjYXBlKGUudmFsdWUpLCAvLyBvZGwgdmFsdWVcbiAgICAgICAgYzogZS5jb2x1bW4uY29sSWQgLy8gY29sdW1uc1xuICAgICAgfSlcbiAgICB9LCBDRUxMX0NMSUNLSU5HX0VWRU5UU19NQVBbdHlwZV0pO1xuICB9XG59XG4iLCIvKlxuKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQkJqR3JpZEV4V2lkZ2V0IHBsdWdpbi5cbiogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuKlxuKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiovXG5cbmltcG9ydCB7IGd3X3NlbmRFdmVudCB9IGZyb20gXCIuL3V0aWxpdGllc1wiO1xuaW1wb3J0IHsgZ3dfZ2V0R3JpZCB9IGZyb20gXCJhcGkvdXRpbGl0aWVzXCI7XG5pbXBvcnQge1xuICBHV19FVkVOVF9HUklEX1NUQVRFX0NIQU5HRVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuLyoqXG4gKiBBbiBoYW5kbGVyIGZvciB0aGUgZ3JpZCBgc3RhdGVDaGFuZ2VkYCBldmVudHNcbiAqIFxuICogQHBhcmFtIHtTdHJpbmd9IGlkIFRoZSBncmlkJ3MgaWRcbiAqIEBwYXJhbSB7T2JqZWN0fSBlICBUaGUgZXZlbnQgcGF5bG9hZFxuICogXG4gKiBAbGlzdGVucyBhZ0dyaWQuc3RhdGVDaGFuZ2VkXG4gKiBAbGlzdGVucyBhZ0dyaWQucm93RWRpdGluZ1N0b3BwZWRcbiAqIFxuICogQGZpcmVzIGd3LnN0YXRlQ2hhbmdlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfb25TdGF0ZUNoYW5nZWQoaWQsIGUpIHtcbiAgZ3dfc2VuZEV2ZW50KFxuICAgIGd3X2dldEdyaWQoaWQpLm9wdGlvbnMuY29udGV4dCxcbiAgICB7XG4gICAgICAndHlwZSc6ICdndy5zdGF0ZUNoYW5nZWQnLFxuICAgICAgJ2RldGFpbCc6IFtdXG4gICAgfSxcbiAgICBHV19FVkVOVF9HUklEX1NUQVRFX0NIQU5HRVxuICApO1xufSIsIi8qXG4qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBCQmpHcmlkRXhXaWRnZXQgcGx1Z2luLlxuKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4qXG4qIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4qIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuKi9cblxuaW1wb3J0IHsgZ3dfZ2V0RG9jdW1lbnQgfSBmcm9tIFwiYXBpL3V0aWxpdGllc1wiO1xuXG4vKiogaHR0cHM6Ly9kYXZpZHdhbHNoLm5hbWUvamF2YXNjcmlwdC1kZWJvdW5jZS1mdW5jdGlvbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X2RlYm91bmNlKGZ1bmMsIHdhaXQsIGltbWVkaWF0ZSkge1xuICB2YXIgdGltZW91dDtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY29udGV4dCA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgdmFyIGxhdGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgICBpZiAoIWltbWVkaWF0ZSkgZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICB9O1xuICAgIHZhciBjYWxsTm93ID0gaW1tZWRpYXRlICYmICF0aW1lb3V0O1xuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICB0aW1lb3V0ID0gc2V0VGltZW91dChsYXRlciwgd2FpdCk7XG4gICAgaWYgKGNhbGxOb3cpIGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gIH07XG59XG5cbi8qKlxuICogU2VuZCBhbiBldmVudCB0byBCQmogc2lkZSBcbiAqIFxuICogVGhlIGZ1bmN0aW9uIHdpbGwgdHJpZ2dlciBhIGN1c3RvbSBjbGljayBldmVudCBvbiB0aGUgYGV2ZW50LWJyaWRnZS0ke2lkfWAgZGl2XG4gKiB0aGVuIHRoZSBkaXYgd2lsbCB1c2UgYmFzaXNEaXNwYXRjaEN1c3RvbUV2ZW50IHRvIGRpc3BhdGNoIHRoZSBldmVudCB0byBCQmpcbiAqIFxuICogQHBhcmFtIHtBcnJheX0gY29udGV4dCB0aGUgZ3JpZCdzIGNvbnRleHRcbiAqIEBwYXJhbSB7Kn0gcGF5bG9hZCB0aGUgZXZlbnQgcGF5bG9hZFxuICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50SWQgdGhlIGV2ZW50J3MgaWQgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19zZW5kRXZlbnQoY29udGV4dCwgcGF5bG9hZCA9IHt9LCBldmVudElkID0gW10pIHtcbiAgY29uc3QgcmVnaXN0ZXJlZEludGVyZXN0cyA9IGNvbnRleHQuaW50ZXJlc3RzIHx8IFtdO1xuXG4gIGlmIChyZWdpc3RlcmVkSW50ZXJlc3RzLmluY2x1ZGVzKGV2ZW50SWQpKSB7XG4gICAgY29uc3QgZGl2ID0gZ3dfZ2V0RG9jdW1lbnQoKS5nZXRFbGVtZW50QnlJZChgZXZlbnQtYnJpZGdlLSR7Y29udGV4dC5pZH1gKTtcbiAgICBjb25zdCBldmVudCA9IG5ldyBDdXN0b21FdmVudCgnY2xpY2snKTtcblxuICAgIGV2ZW50LnBheWxvYWQgPSBwYXlsb2FkO1xuICAgIGRpdi5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgfVxufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEJCakdyaWRFeFdpZGdldFJvd1xuICogXG4gKiBAcHJvcGVydHkge251bWJlcn0gaWQgXG4gKiBAcHJvcGVydHkge251bWJlcn0gaW5kZXggXG4gKiBAcHJvcGVydHkge251bWJlcn0gcGFyZW50S2V5IFxuICogQHByb3BlcnR5IHtudW1iZXJ9IGNoaWxkSW5kZXggXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHNlbGVjdGVkIFxuICovXG5cbi8qKlxuICogUGFyc2UgYSBub2RlIGFzIEJCakdyaWRFeFdpZGdldFJvd1xuICogXG4gKiBAcGFyYW0ge09iamVjdH0gbm9kZSBhZyBncmlkIG5vZGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0ICBhZyBncmlkIGNvbnRleHRcbiAqIFxuICogQHJldHVybnMge0JCakdyaWRFeFdpZGdldFJvd3xCb29sZWFufSBvYmplY3QgZm9ybWF0dGVkIGFzIEJCakdyaWRFeFdpZGdldFJvdy5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgaWYgdGhlIG5vZGUgaXMgZm9yIGdyb3VwIG5vZGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3BhcnNlTm9kZShub2RlLCBjb250ZXh0KSB7XG5cbiAgaWYgKHRydWUgPT09IG5vZGUuZ3JvdXApIHJldHVybiBmYWxzZTsgLy8gd2UgZG8gbm90IG1hbmFnZSBncm91cHNcblxuICAvLyBjb25zdCByb3dOb2RlSWQgPSBjb250ZXh0Lmhhc093blByb3BlcnR5KCdnZXRSb3dOb2RlSWQnKSAmJiBub2RlLmRhdGFbY29udGV4dC5nZXRSb3dOb2RlSWRdID9cbiAgLy8gICBub2RlLmRhdGFbY29udGV4dC5nZXRSb3dOb2RlSWRdIDogJyc7XG5cbiAgcmV0dXJuIHtcbiAgICBpOiBub2RlLmlkLCAvLyBpZFxuICAgIHg6IG5vZGUucm93SW5kZXgsIC8vIGluZGV4XG4gICAgcDogbm9kZS5oYXNPd25Qcm9wZXJ0eSgncGFyZW50JykgJiYgbm9kZS5wYXJlbnQuaGFzT3duUHJvcGVydHkoJ2tleScpID9cbiAgICAgIG5vZGUucGFyZW50LmtleSA6ICcnLCAvLyBwYXJlbnQga2V5XG4gICAgYzogbm9kZS5jaGlsZEluZGV4LCAvL2NoaWxkSW5kZXhcbiAgICBzOiBCb29sZWFuKG5vZGUuc2VsZWN0ZWQpLCAvLyBzZWxlY3RlZCBcbiAgfTtcbn1cblxuLyoqXG4gKiBQYXJzZSBub2RlIGZyb20gZXZlbnQgXG4gKiBcbiAqIFBhcnNlIG5vZGUgaW4gdGhlIHBhU3NlZCBldmVudCBhcyBCQmpHcmlkRXhXaWRnZXRSb3dcbiAqIFxuICogQHBhcmFtIHtPYmplY3R9IGVcbiAqIFxuICogQHJldHVybnMge0JCakdyaWRFeFdpZGdldFJvd31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3BhcnNlTm9kZUZyb21FdmVudChlKSB7XG4gIHJldHVybiBnd19wYXJzZU5vZGUoZS5ub2RlLCBlLmNvbnRleHQpO1xufVxuIiwiLypcbiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEJCakdyaWRFeFdpZGdldCBwbHVnaW4uXG4qIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbipcbiogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4qL1xuXG5pbXBvcnQgJ2V4cG9zZS1sb2FkZXI/QkJqLk1hc2tzIWJiai1tYXNrcy9kaXN0L2Jiai1tYXNrcy5qcydcbmltcG9ydCAnZXhwb3NlLWxvYWRlcj9CYXNpcy5JbnB1dE1hc2tpbmchYmFzaXMtaW5wdXQtbWFza2luZy9kaXN0L2Jhc2lzLWlucHV0LW1hc2tpbmcuanMnXG5pbXBvcnQgJ2V4cG9zZS1sb2FkZXI/ZmxhdHBpY2tyIWZsYXRwaWNrci9kaXN0L2ZsYXRwaWNrci5qcydcbmltcG9ydCAnZXhwb3NlLWxvYWRlcj9CYXNpcy5BZ0dyaWRDb21wb25lbnRzIWJhc2lzLWFnZ3JpZC1jb21wb25lbnRzL2Rpc3QvYmFzaXMtYWdncmlkLWNvbXBvbmVudHMuanMnO1xuXG5yZXF1aXJlKCdmbGF0cGlja3IvZGlzdC9mbGF0cGlja3IuY3NzJyk7XG5yZXF1aXJlKCdhZy1ncmlkLWNvbW11bml0eS9kaXN0L3N0eWxlcy9hZy1ncmlkLmNzcycpO1xucmVxdWlyZSgnYWctZ3JpZC1jb21tdW5pdHkvZGlzdC9zdHlsZXMvYWctdGhlbWUtbWF0ZXJpYWwuY3NzJyk7XG5yZXF1aXJlKCdhZy1ncmlkLWNvbW11bml0eS9kaXN0L3N0eWxlcy9hZy10aGVtZS1iYWxoYW0uY3NzJyk7XG5yZXF1aXJlKCdhZy1ncmlkLWNvbW11bml0eS9kaXN0L3N0eWxlcy9hZy10aGVtZS1iYWxoYW0tZGFyay5jc3MnKTtcblxucmVxdWlyZSgnLi9zdHlsZS9jbGFzc2VzLmNzcycpO1xuXG5leHBvcnQgKiBmcm9tICcuL3BvbHlmaWxscy5qcyc7XG5leHBvcnQgKiBmcm9tIFwiLi9hcGlcIjtcbiIsIi8qXG4qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBCQmpHcmlkRXhXaWRnZXQgcGx1Z2luLlxuKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4qXG4qIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4qIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuKi9cblxuLyoqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9DdXN0b21FdmVudC9DdXN0b21FdmVudCAgKi9cbihmdW5jdGlvbiAoKSB7XG4gIGlmICh0eXBlb2Ygd2luZG93LkN1c3RvbUV2ZW50ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBmYWxzZTsgLy9JZiBub3QgSUVcblxuICBmdW5jdGlvbiBDdXN0b21FdmVudChldmVudCwgcGFyYW1zKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zIHx8IHsgYnViYmxlczogZmFsc2UsIGNhbmNlbGFibGU6IGZhbHNlLCBkZXRhaWw6IHVuZGVmaW5lZCB9O1xuICAgIHZhciBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnQ3VzdG9tRXZlbnQnKTtcbiAgICBldnQuaW5pdEN1c3RvbUV2ZW50KGV2ZW50LCBwYXJhbXMuYnViYmxlcywgcGFyYW1zLmNhbmNlbGFibGUsIHBhcmFtcy5kZXRhaWwpO1xuICAgIHJldHVybiBldnQ7XG4gIH1cblxuICBDdXN0b21FdmVudC5wcm90b3R5cGUgPSB3aW5kb3cuRXZlbnQucHJvdG90eXBlO1xuXG4gIHdpbmRvdy5DdXN0b21FdmVudCA9IEN1c3RvbUV2ZW50O1xufSkoKTtcblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbmRcbmlmICghQXJyYXkucHJvdG90eXBlLmZpbmQpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgJ2ZpbmQnLCB7XG4gICAgdmFsdWU6IGZ1bmN0aW9uIChwcmVkaWNhdGUpIHtcbiAgICAgIC8vIDEuIExldCBPIGJlID8gVG9PYmplY3QodGhpcyB2YWx1ZSkuXG4gICAgICBpZiAodGhpcyA9PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1widGhpc1wiIGlzIG51bGwgb3Igbm90IGRlZmluZWQnKTtcbiAgICAgIH1cblxuICAgICAgdmFyIG8gPSBPYmplY3QodGhpcyk7XG5cbiAgICAgIC8vIDIuIExldCBsZW4gYmUgPyBUb0xlbmd0aCg/IEdldChPLCBcImxlbmd0aFwiKSkuXG4gICAgICB2YXIgbGVuID0gby5sZW5ndGggPj4+IDA7XG5cbiAgICAgIC8vIDMuIElmIElzQ2FsbGFibGUocHJlZGljYXRlKSBpcyBmYWxzZSwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLlxuICAgICAgaWYgKHR5cGVvZiBwcmVkaWNhdGUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncHJlZGljYXRlIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICAgICAgfVxuXG4gICAgICAvLyA0LiBJZiB0aGlzQXJnIHdhcyBzdXBwbGllZCwgbGV0IFQgYmUgdGhpc0FyZzsgZWxzZSBsZXQgVCBiZSB1bmRlZmluZWQuXG4gICAgICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50c1sxXTtcblxuICAgICAgLy8gNS4gTGV0IGsgYmUgMC5cbiAgICAgIHZhciBrID0gMDtcblxuICAgICAgLy8gNi4gUmVwZWF0LCB3aGlsZSBrIDwgbGVuXG4gICAgICB3aGlsZSAoayA8IGxlbikge1xuICAgICAgICAvLyBhLiBMZXQgUGsgYmUgISBUb1N0cmluZyhrKS5cbiAgICAgICAgLy8gYi4gTGV0IGtWYWx1ZSBiZSA/IEdldChPLCBQaykuXG4gICAgICAgIC8vIGMuIExldCB0ZXN0UmVzdWx0IGJlIFRvQm9vbGVhbig/IENhbGwocHJlZGljYXRlLCBULCDCqyBrVmFsdWUsIGssIE8gwrspKS5cbiAgICAgICAgLy8gZC4gSWYgdGVzdFJlc3VsdCBpcyB0cnVlLCByZXR1cm4ga1ZhbHVlLlxuICAgICAgICB2YXIga1ZhbHVlID0gb1trXTtcbiAgICAgICAgaWYgKHByZWRpY2F0ZS5jYWxsKHRoaXNBcmcsIGtWYWx1ZSwgaywgbykpIHtcbiAgICAgICAgICByZXR1cm4ga1ZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIGUuIEluY3JlYXNlIGsgYnkgMS5cbiAgICAgICAgaysrO1xuICAgICAgfVxuXG4gICAgICAvLyA3LiBSZXR1cm4gdW5kZWZpbmVkLlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9LFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KTtcbn0iLCJcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4vY2xhc3Nlcy5jc3NcIik7XG5cbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuXG52YXIgdHJhbnNmb3JtO1xudmFyIGluc2VydEludG87XG5cblxuXG52YXIgb3B0aW9ucyA9IHtcImhtclwiOnRydWV9XG5cbm9wdGlvbnMudHJhbnNmb3JtID0gdHJhbnNmb3JtXG5vcHRpb25zLmluc2VydEludG8gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB3aW5kb3cucGFyZW50LmRvY3VtZW50LmhlYWQgfTtcblxudmFyIHVwZGF0ZSA9IHJlcXVpcmUoXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzLmpzXCIpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5pZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2FscztcblxuaWYobW9kdWxlLmhvdCkge1xuXHRtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4vY2xhc3Nlcy5jc3NcIiwgZnVuY3Rpb24oKSB7XG5cdFx0dmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanMhLi9jbGFzc2VzLmNzc1wiKTtcblxuXHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXG5cdFx0dmFyIGxvY2FscyA9IChmdW5jdGlvbihhLCBiKSB7XG5cdFx0XHR2YXIga2V5LCBpZHggPSAwO1xuXG5cdFx0XHRmb3Ioa2V5IGluIGEpIHtcblx0XHRcdFx0aWYoIWIgfHwgYVtrZXldICE9PSBiW2tleV0pIHJldHVybiBmYWxzZTtcblx0XHRcdFx0aWR4Kys7XG5cdFx0XHR9XG5cblx0XHRcdGZvcihrZXkgaW4gYikgaWR4LS07XG5cblx0XHRcdHJldHVybiBpZHggPT09IDA7XG5cdFx0fShjb250ZW50LmxvY2FscywgbmV3Q29udGVudC5sb2NhbHMpKTtcblxuXHRcdGlmKCFsb2NhbHMpIHRocm93IG5ldyBFcnJvcignQWJvcnRpbmcgQ1NTIEhNUiBkdWUgdG8gY2hhbmdlZCBjc3MtbW9kdWxlcyBsb2NhbHMuJyk7XG5cblx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdH0pO1xuXG5cdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vLi4vLi4vYmFzaXMtaW5wdXQtbWFza2luZy9ub2RlX21vZHVsZXMvYmJqLW1hc2tzL3NyYy9OdW1iZXJNYXNrL051bWJlck1hc2suanMiLCJ3ZWJwYWNrOi8vLy4vLi4vLi4vYmFzaXMtaW5wdXQtbWFza2luZy9ub2RlX21vZHVsZXMvYmJqLW1hc2tzL3NyYy9OdW1iZXJNYXNrL2luZGV4LmpzIiwid2VicGFjazovLy8uLy4uLy4uL2Jhc2lzLWlucHV0LW1hc2tpbmcvbm9kZV9tb2R1bGVzL2Jiai1tYXNrcy9zcmMvU3RyaW5nTWFzay9TdHJpbmdNYXNrLmpzIiwid2VicGFjazovLy8uLy4uLy4uL2Jhc2lzLWlucHV0LW1hc2tpbmcvbm9kZV9tb2R1bGVzL2Jiai1tYXNrcy9zcmMvU3RyaW5nTWFzay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYWctZ3JpZC1jb21tdW5pdHkvZGlzdC9zdHlsZXMvYWctZ3JpZC5jc3M/YjQzNiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYWctZ3JpZC1jb21tdW5pdHkvZGlzdC9zdHlsZXMvYWctdGhlbWUtYmFsaGFtLWRhcmsuY3NzP2NkYzEiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FnLWdyaWQtY29tbXVuaXR5L2Rpc3Qvc3R5bGVzL2FnLXRoZW1lLWJhbGhhbS5jc3M/YjkzMCIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYWctZ3JpZC1jb21tdW5pdHkvZGlzdC9zdHlsZXMvYWctdGhlbWUtbWF0ZXJpYWwuY3NzPzExYWUiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrOi93ZWJwYWNrL2Jvb3RzdHJhcCA5OTA1NGJkNzlmMjNlYTBmMDk4OCIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvQ29tcG9uZW50L2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9jb3JlLWRlY29yYXRvcnMvc3JjL2F1dG9iaW5kLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9jb3JlLWRlY29yYXRvcnMvc3JjL292ZXJyaWRlLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VHZXRUYWcuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc09iamVjdExpa2UuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlcy5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvY29yZS1kZWNvcmF0b3JzL3NyYy9wcml2YXRlL3V0aWxzLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNPYmplY3QuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fU3ltYm9sLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3Jvb3QuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9lcS5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzQXJyYXlMaWtlLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi90b0ludGVnZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvQm9vbGVhblN3aXRjaC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvVGVtcGxhdGVSZW5kZXJlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlQXNzaWduVmFsdWUuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZGVmaW5lUHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0Z1bmN0aW9uLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2ZyZWVHbG9iYWwuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vZ2xvYmFsLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VSZXN0LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaWRlbnRpdHkuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXBwbHkuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNJdGVyYXRlZUNhbGwuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0xlbmd0aC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19pc0luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2FycmF5TGlrZUtleXMuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0FycmF5LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vLyh3ZWJwYWNrKS9idWlsZGluL2hhcm1vbnktbW9kdWxlLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2lzUHJvdG90eXBlLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNFcnJvci5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19vdmVyQXJnLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2FycmF5TWFwLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3JlSW50ZXJwb2xhdGUuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy90b1N0cmluZy5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvY29yZS1kZWNvcmF0b3JzL3NyYy9yZWFkb25seS5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvZGF0ZS1mbnMtdHovZXNtL3V0Y1RvWm9uZWRUaW1lL2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9kYXRlLWZucy10ei9lc20vX2xpYi90elBhcnNlVGltZXpvbmUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vc3JjL0V2ZW50c01peGluL2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9EYXRlVGltZUlucHV0L2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvQm9vbGVhbkVkaXRvci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvQm9vbGVhbkVkaXRvci9Cb29sZWFuRWRpdG9yLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9Db21wb25lbnQvQ29tcG9uZW50LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9Cb29sZWFuU3dpdGNoL0Jvb2xlYW5Td2l0Y2guanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2NvcmUtZGVjb3JhdG9ycy9zcmMvbGF6eS1pbml0aWFsaXplLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9Cb29sZWFuU3dpdGNoL3N0eWxlLnNjc3MiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vc3JjL0Jvb2xlYW5Td2l0Y2gvc3R5bGUuc2Nzcz84ZjAyIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvbGliL3VybHMuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vc3JjL0Jvb2xlYW5SZW5kZXJlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvQm9vbGVhblJlbmRlcmVyL0Jvb2xlYW5SZW5kZXJlci5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvQm9vbGVhbkZpbHRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvQm9vbGVhbkZpbHRlci9Cb29sZWFuRmlsdGVyLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9Cb29sZWFuRmlsdGVyL3N0eWxlLnNjc3MiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vc3JjL0Jvb2xlYW5GaWx0ZXIvc3R5bGUuc2Nzcz84MmRiIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9OdW1iZXJFZGl0b3IvaW5kZXguanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vc3JjL051bWJlckVkaXRvci9OdW1iZXJFZGl0b3IuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vc3JjL051bWJlckVkaXRvci9zdHlsZS5zY3NzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9OdW1iZXJFZGl0b3Ivc3R5bGUuc2Nzcz80YjdjIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9UZXh0RWRpdG9yL2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9UZXh0RWRpdG9yL1RleHRFZGl0b3IuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vc3JjL1RleHRFZGl0b3Ivc3R5bGUuc2NzcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvVGV4dEVkaXRvci9zdHlsZS5zY3NzPzEzYzEiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vc3JjL1RlbXBsYXRlUmVuZGVyZXIvVGVtcGxhdGVSZW5kZXJlci5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL3RlbXBsYXRlLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvYXNzaWduSW5XaXRoLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2NvcHlPYmplY3QuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXNzaWduVmFsdWUuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0TmF0aXZlLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VJc05hdGl2ZS5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19nZXRSYXdUYWcuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fb2JqZWN0VG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNNYXNrZWQuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY29yZUpzRGF0YS5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL190b1NvdXJjZS5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19nZXRWYWx1ZS5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19jcmVhdGVBc3NpZ25lci5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19vdmVyUmVzdC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19zZXRUb1N0cmluZy5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlU2V0VG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9jb25zdGFudC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19zaG9ydE91dC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2tleXNJbi5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlVGltZXMuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0FyZ3VtZW50cy5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlSXNBcmd1bWVudHMuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0J1ZmZlci5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL3N0dWJGYWxzZS5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzVHlwZWRBcnJheS5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlSXNUeXBlZEFycmF5LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VVbmFyeS5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19ub2RlVXRpbC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlS2V5c0luLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX25hdGl2ZUtleXNJbi5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2F0dGVtcHQuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc1BsYWluT2JqZWN0LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2dldFByb3RvdHlwZS5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlVmFsdWVzLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2N1c3RvbURlZmF1bHRzQXNzaWduSW4uanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZXNjYXBlU3RyaW5nQ2hhci5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2tleXMuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUtleXMuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbmF0aXZlS2V5cy5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL3RlbXBsYXRlU2V0dGluZ3MuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9lc2NhcGUuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZXNjYXBlSHRtbENoYXIuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVByb3BlcnR5T2YuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVRvU3RyaW5nLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNTeW1ib2wuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fcmVFc2NhcGUuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fcmVFdmFsdWF0ZS5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvSW1hZ2VSZW5kZXJlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvSW1hZ2VSZW5kZXJlci9JbWFnZVJlbmRlcmVyLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9EYXRlVGltZUZpbHRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvRGF0ZVRpbWVGaWx0ZXIvRGF0ZVRpbWVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL2RhdGUtZm5zLXR6L2VzbS9fbGliL3R6VG9rZW5pemVEYXRlL2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3ViTWlsbGlzZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkTWlsbGlzZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vdG9EYXRlL2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9kYXRlLWZucy10ei9lc20vdG9EYXRlL2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9FdmVudHNNaXhpbi9FdmVudHNNaXhpbi5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvRGF0ZVRpbWVJbnB1dC9EYXRlVGltZUlucHV0LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9EYXRlVGltZUlucHV0L3N0eWxlLnNjc3MiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vc3JjL0RhdGVUaW1lSW5wdXQvc3R5bGUuc2Nzcz9jNzMyIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9EYXRlVGltZUVkaXRvci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvRGF0ZVRpbWVFZGl0b3IvRGF0ZVRpbWVFZGl0b3IuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6L3dlYnBhY2svYm9vdHN0cmFwIDBlNDFkYTFlODgzMDAzZmI4ZjI5Iiwid2VicGFjazovLy93ZWJwYWNrOi9leHRlcm5hbCB7XCJjb21tb25qc1wiOlwiYmJqLW1hc2tzL3NyYy9TdHJpbmdNYXNrXCIsXCJjb21tb25qczJcIjpcImJiai1tYXNrcy9zcmMvU3RyaW5nTWFza1wiLFwiYW1kXCI6XCJiYmotbWFza3Mvc3JjL1N0cmluZ01hc2tcIixcInJvb3RcIjpbXCJCQmpcIixcIk1hc2tzXCIsXCJTdHJpbmdNYXNrXCJdfSIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvVGV4dElucHV0L2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9UZXh0SW5wdXQvVGV4dElucHV0LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9UZXh0SW5wdXQvdG9vbHMuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vc3JjL051bWJlcklucHV0L2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9OdW1iZXJJbnB1dC9OdW1iZXJJbnB1dC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovZXh0ZXJuYWwge1wiY29tbW9uanNcIjpcImJiai1tYXNrcy9zcmMvTnVtYmVyTWFza1wiLFwiY29tbW9uanMyXCI6XCJiYmotbWFza3Mvc3JjL051bWJlck1hc2tcIixcImFtZFwiOlwiYmJqLW1hc2tzL3NyYy9OdW1iZXJNYXNrXCIsXCJyb290XCI6W1wiQkJqXCIsXCJNYXNrc1wiLFwiTnVtYmVyTWFza1wiXX0iLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6L3dlYnBhY2svYm9vdHN0cmFwIGVmZWY4N2EwMWMzZWQyMmNhMzU4Iiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9OdW1iZXJNYXNrL2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9EYXRlTWFzay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvU3RyaW5nTWFzay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9zcmMvTnVtYmVyTWFzay9OdW1iZXJNYXNrLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9EYXRlTWFzay9EYXRlTWFzay5qcyIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ub2RlX21vZHVsZXMvd2Vla3N0YXJ0L2Rpc3QvZXMtbW9kdWxlL21haW4uanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL3dlZWtzdGFydC9kaXN0L2VzLW1vZHVsZS9hcGkuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vbm9kZV9tb2R1bGVzL3dlZWtzdGFydC9kaXN0L2VzLW1vZHVsZS9sYW5nUmVnaW9uTWFwLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL25vZGVfbW9kdWxlcy93ZWVrc3RhcnQvZGlzdC9lcy1tb2R1bGUvcmVnaW9uRGF5TWFwLmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9TdHJpbmdNYXNrL1N0cmluZ01hc2suanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vc3JjL1R5cGVzL2luZGV4LmpzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL3NyYy9UeXBlcy9UeXBlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZmxhdHBpY2tyL2Rpc3QvZmxhdHBpY2tyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9qc3MvanNzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ZuL2FycmF5L2Zvci1lYWNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ZuL2FycmF5L2luY2x1ZGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ZuL251bWJlci9pcy1pbnRlZ2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ZuL3N0cmluZy9zdGFydHMtd2l0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hLWZ1bmN0aW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hbi1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktbWV0aG9kcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LXNwZWNpZXMtY3JlYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jb3JlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2N0eC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19kZWZpbmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2Rlc2NyaXB0b3JzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2RvbS1jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZXhwb3J0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2ZhaWxzLWlzLXJlZ2V4cC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mYWlscy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mdW5jdGlvbi10by1zdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZ2xvYmFsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2hhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19oaWRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2lvYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtYXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtaW50ZWdlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pcy1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtcmVnZXhwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2xpYnJhcnkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWRwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcmVkZWZpbmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2hhcmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmljdC1tZXRob2QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLWNvbnRleHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8tYWJzb2x1dGUtaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8taW50ZWdlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1pb2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWxlbmd0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8tcHJpbWl0aXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3VpZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL193a3MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZm9yLWVhY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmlzLWludGVnZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN0YXJ0cy13aXRoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LmFycmF5LmluY2x1ZGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kZWVwLXBhcnNlLWpzb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vL0Q6L0dpdGh1Yi9iYmotbWFza3MvZGlzdC9iYmotbWFza3MuanMtZXhwb3NlZCIsIndlYnBhY2s6Ly8vRDovR2l0aHViL2Jhc2lzLWFnZ3JpZC1jb21wb25lbnRzL2Rpc3QvYmFzaXMtYWdncmlkLWNvbXBvbmVudHMuanMtZXhwb3NlZCIsIndlYnBhY2s6Ly8vRDovR2l0aHViL2Jhc2lzLWlucHV0LW1hc2tpbmcvZGlzdC9iYXNpcy1pbnB1dC1tYXNraW5nLmpzLWV4cG9zZWQiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2ZsYXRwaWNrci9kaXN0L2ZsYXRwaWNrci5qcy1leHBvc2VkIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9qc3MvanNzLmpzLWV4cG9zZWQiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2ZsYXRwaWNrci9kaXN0L2ZsYXRwaWNrci5jc3M/N2I2OCIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19TeW1ib2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXBwbHkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXJyYXlMaWtlS2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19hcnJheU1hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19hc3NpZ25WYWx1ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlQXNzaWduVmFsdWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUdldFRhZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlSXNBcmd1bWVudHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUlzTmF0aXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VJc1R5cGVkQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUtleXNJbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlUHJvcGVydHlPZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlUmVzdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlU2V0VG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVRpbWVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VUb1N0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlVW5hcnkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVZhbHVlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19jb3B5T2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2NvcmVKc0RhdGEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY3JlYXRlQXNzaWduZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY3VzdG9tRGVmYXVsdHNBc3NpZ25Jbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19lc2NhcGVIdG1sQ2hhci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19lc2NhcGVTdHJpbmdDaGFyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2ZyZWVHbG9iYWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0TmF0aXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2dldFByb3RvdHlwZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19nZXRSYXdUYWcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0VmFsdWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNJbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19pc0l0ZXJhdGVlQ2FsbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19pc01hc2tlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19pc1Byb3RvdHlwZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19uYXRpdmVLZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX25hdGl2ZUtleXNJbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19ub2RlVXRpbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19vYmplY3RUb1N0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19vdmVyQXJnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX292ZXJSZXN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3JlRXNjYXBlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3JlRXZhbHVhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fcmVJbnRlcnBvbGF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19yb290LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3NldFRvU3RyaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3Nob3J0T3V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3RvU291cmNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvYXNzaWduSW5XaXRoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvYXR0ZW1wdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2NvbnN0YW50LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvZXEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9lc2NhcGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pZGVudGl0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzQXJndW1lbnRzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzQXJyYXlMaWtlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNCdWZmZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0Vycm9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNGdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzTGVuZ3RoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNPYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc09iamVjdExpa2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc1BsYWluT2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNTeW1ib2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc1R5cGVkQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9rZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMva2V5c0luLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvc3R1YkZhbHNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvdGVtcGxhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy90ZW1wbGF0ZVNldHRpbmdzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvdG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FnLWdyaWQtY29tbXVuaXR5L2Rpc3Qvc3R5bGVzL2FnLWdyaWQuY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hZy1ncmlkLWNvbW11bml0eS9kaXN0L3N0eWxlcy9hZy10aGVtZS1iYWxoYW0tZGFyay5jc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FnLWdyaWQtY29tbXVuaXR5L2Rpc3Qvc3R5bGVzL2FnLXRoZW1lLWJhbGhhbS5jc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FnLWdyaWQtY29tbXVuaXR5L2Rpc3Qvc3R5bGVzL2FnLXRoZW1lLW1hdGVyaWFsLmNzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZmxhdHBpY2tyL2Rpc3QvZmxhdHBpY2tyLmNzcyIsIndlYnBhY2s6Ly8vLi9zcmMvc3R5bGUvY2xhc3Nlcy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvbGliL3VybHMuanMiLCJ3ZWJwYWNrOi8vLyh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vbW9kdWxlLmpzIiwid2VicGFjazovLy8uL3NyYy9hcGkvY2VsbHMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2FwaS9jaGFydHMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2FwaS9jb2x1bW5zLmpzIiwid2VicGFjazovLy8uL3NyYy9hcGkvY29udGV4dC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYXBpL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9hcGkvaW5pdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYXBpL2pzcy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYXBpL21lbnVzLmpzIiwid2VicGFjazovLy8uL3NyYy9hcGkvb3ZlcmxheXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2FwaS9yb3dzLmpzIiwid2VicGFjazovLy8uL3NyYy9hcGkvc3RhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2FwaS9zdGF0dXNiYXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2FwaS90b29scGFuZWwuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2FwaS91dGlsaXRpZXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2V2ZW50cy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2V2ZW50cy9lZGl0aW5nLmpzIiwid2VicGFjazovLy8uL3NyYy9ldmVudHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2V2ZW50cy9rZXlib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvZXZlbnRzL3JlYWR5LmpzIiwid2VicGFjazovLy8uL3NyYy9ldmVudHMvc2VsZWN0aW9ucy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvZXZlbnRzL3N0YXRlLmpzIiwid2VicGFjazovLy8uL3NyYy9ldmVudHMvdXRpbGl0aWVzLmpzIiwid2VicGFjazovLy8uL3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvcG9seWZpbGxzLmpzIiwid2VicGFjazovLy8uL3NyYy9zdHlsZS9jbGFzc2VzLmNzcz9iNzM4Il0sIm5hbWVzIjpbIk51bWJlck1hc2siLCJudW1iZXIiLCJtYXNrIiwiZ3JvdXBpbmdTZXBhcmF0b3IiLCJkZWNpbWFsU2VwYXJhdG9yIiwiZm9yY2VUcmFpbGluZ1plcm9zIiwibG9vc2UiLCJtYXNrTGVuIiwibGVuZ3RoIiwic3RyIiwibmFtZSIsIm1lc3NhZ2UiLCJtYXNrQmVmb3JlRGVjaW1hbCIsIm1hc2tBZnRlckRlY2ltYWwiLCJmb3VuZERlY2ltYWwiLCJpIiwibSIsImNoYXJBdCIsIm51bSIsIl9yb3VuZCIsImJ5dGVzIiwiX3RvQ2hhckFycmF5IiwiaW5MZW4iLCJudW1CZWZvcmVEZWNpbWFsIiwibnVtQWZ0ZXJEZWNpbWFsIiwidG9TdHJpbmciLCJmaWxsQnl0ZSIsImZsb2F0Qnl0ZSIsImluUG9zIiwib3V0UG9zIiwiZmxvYXRQb3MiLCJmaWxsSW5pdCIsImlzTmVnYXRpdmUiLCJfZ2V0U2lnbiIsImVtaXREZWNpbWFsIiwiaW5kZXhPZiIsImZvdW5kWmVybyIsImZvdW5kRGlnaXQiLCJjdXJyZW5jeSIsInJldCIsIkFycmF5IiwibWFza1BvcyIsImpvaW4iLCJwcmVjaXNpb24iLCJyZXZlcnNlU2hpZnQiLCJudW1BcnJheSIsInNwbGl0IiwiX3NoaWZ0IiwiTWF0aCIsInJvdW5kIiwic2lnbnVtIiwiY2hhcnMiLCJzdHJpbmciLCJzdWJzdHJpbmciLCJ4IiwiaXNOdW1iZXJSZWdleCIsImlzV2hpdGVzcGFjZVJlZ2V4IiwicHVuY3R1YXRpb25MaXN0IiwiaXNMb3dlckNhc2UiLCJ0b0xvd2VyQ2FzZSIsInRvVXBwZXJDYXNlIiwiaXNVcHBlckNhc2UiLCJwYXNzT3JUaHJvd0Vycm9yIiwiY2hhciIsInBvcyIsIlN0cmluZ01hc2siLCJTdHJpbmciLCJzdHJMZW4iLCJtYXNrQnl0ZSIsImJ5dGUiLCJ0ZXN0IiwiQ29tcG9uZW50IiwiZGVmaW5lUHJvcGVydHkiLCJPYmplY3QiLCJnZXRQcm90b3R5cGVPZiIsImZuIiwibWFwU3RvcmUiLCJzdXBlclN0b3JlIiwiYmluZCIsImRlc2NzIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImtsYXNzIiwia2V5cyIsImdldE93bktleXMiLCJsIiwia2V5IiwiZGVzYyIsImF1dG9iaW5kTWV0aG9kIiwidmFsdWUiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwiY29uc3RydWN0b3IiLCJ0YXJnZXQiLCJnZXQiLCJnZXRCb3VuZFN1cGVyIiwiYm91bmRGbiIsIndyaXRhYmxlIiwic2V0IiwiY3JlYXRlRGVmYXVsdFNldHRlciIsImFyZ3MiLCJhdXRvYmluZENsYXNzIiwiaGFuZGxlIiwiR0VORVJJQ19GVU5DVElPTl9FUlJPUiIsIkZVTkNUSU9OX1JFR0VYUCIsIlN5bnRheEVycm9yUmVwb3J0ZXIiLCJkZXNjcmlwdG9yIiwidG9waWMiLCJwYXJhbXMiLCJwYXJlbnRLbGFzcyIsImNoaWxkS2xhc3MiLCJwYXJlbnREZXNjcmlwdG9yIiwiY2hpbGREZXNjcmlwdG9yIiwiY29uZGl0aW9uIiwibXNnIiwicmVwb3J0ZXIiLCJwYXJlbnQiLCJjaGlsZCIsInBhcmVudFZhbHVlVHlwZSIsImNoaWxkVmFsdWVUeXBlIiwiaXNGdW5jdGlvbk92ZXJVbmRlZmluZWQiLCJjaGVja0Z1bmN0aW9uU2lnbmF0dXJlcyIsInBhcmVudEhhc0dldHRlciIsImNoaWxkSGFzR2V0dGVyIiwicGFyZW50SGFzU2V0dGVyIiwiY2hpbGRIYXNTZXR0ZXIiLCJwYXJlbnRUeXBlIiwiZ2V0RGVzY3JpcHRvclR5cGUiLCJjaGlsZFR5cGUiLCJjaGVja0RhdGFEZXNjcmlwdG9ycyIsImNoZWNrQWNjZXNzb3JEZXNjcmlwdG9ycyIsInN1Z2dlc3Rpb25UcmFuc2Zvcm1zIiwic3VnZ2VzdGlvbiIsInN1cGVyS2xhc3MiLCJzdXBlckRlc2NyaXB0b3IiLCJzdWdnZXN0ZWRLZXkiLCJmaW5kUG9zc2libGVBbHRlcm5hdGl2ZXMiLCJjaGVja0Rlc2NyaXB0b3JzIiwiZGVjb3JhdGUiLCJudWxsVGFnIiwidW5kZWZpbmVkVGFnIiwic3ltVG9TdHJpbmdUYWciLCJTeW1ib2wiLCJnZXRSYXdUYWciLCJvYmplY3RUb1N0cmluZyIsImJhc2VHZXRUYWciLCJpc09iamVjdExpa2UiLCJtb2R1bGUiLCJsaXN0IiwiY29udGVudCIsImNzc1dpdGhNYXBwaW5nVG9TdHJpbmciLCJpdGVtIiwibW9kdWxlcyIsImFscmVhZHlJbXBvcnRlZE1vZHVsZXMiLCJpZCIsIm1lZGlhUXVlcnkiLCJjc3NNYXBwaW5nIiwidXNlU291cmNlTWFwIiwic291cmNlTWFwcGluZyIsInRvQ29tbWVudCIsInNvdXJjZVVSTHMiLCJiYXNlNjQiLCJidG9hIiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJKU09OIiwiZGF0YSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldE93blByb3BlcnR5TmFtZXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpc0Rlc2NyaXB0b3IiLCJlbnRyeUFyZ3MiLCJoYW5kbGVEZXNjcmlwdG9yIiwiTWV0YSIsImxhenlJbml0aWFsaXplIiwiTUVUQV9LRVkiLCJvYmoiLCJuZXdWYWx1ZSIsIndhcm4iLCJjb25zb2xlIiwic2VlbkRlcHJlY2F0aW9ucyIsInR5cGUiLCJpc09iamVjdCIsInJvb3QiLCJmcmVlU2VsZiIsInNlbGYiLCJmcmVlR2xvYmFsIiwiRnVuY3Rpb24iLCJvdGhlciIsImVxIiwiaXNMZW5ndGgiLCJpc0Z1bmN0aW9uIiwiaXNBcnJheUxpa2UiLCJkaXJ0eU51bWJlciIsIk51bWJlciIsImlzTmFOIiwicmVxdWlyZWQiLCJCb29sZWFuU3dpdGNoIiwiVGVtcGxhdGVSZW5kZXJlciIsIm9iamVjdCIsImJhc2VBc3NpZ25WYWx1ZSIsImZ1bmMiLCJnZXROYXRpdmUiLCJhc3luY1RhZyIsImZ1bmNUYWciLCJnZW5UYWciLCJwcm94eVRhZyIsInRhZyIsImdsb2JhbCIsImciLCJzZXRUb1N0cmluZyIsIm92ZXJSZXN0IiwiaWRlbnRpdHkiLCJiYXNlUmVzdCIsImFwcGx5IiwiaXNJbmRleCIsImluZGV4IiwiaXNJdGVyYXRlZUNhbGwiLCJNQVhfU0FGRV9JTlRFR0VSIiwicmVJc1VpbnQiLCJvYmplY3RQcm90byIsImhhc093blByb3BlcnR5IiwiaXNBcnIiLCJpc0FycmF5IiwiaXNBcmciLCJpc0FyZ3VtZW50cyIsImlzQnVmZiIsImlzQnVmZmVyIiwiaXNUeXBlIiwiaXNUeXBlZEFycmF5Iiwic2tpcEluZGV4ZXMiLCJyZXN1bHQiLCJiYXNlVGltZXMiLCJpbmhlcml0ZWQiLCJhcnJheUxpa2VLZXlzIiwib3JpZ2luYWxNb2R1bGUiLCJDdG9yIiwicHJvdG8iLCJpc1Byb3RvdHlwZSIsImRvbUV4Y1RhZyIsImVycm9yVGFnIiwiaXNQbGFpbk9iamVjdCIsImlzRXJyb3IiLCJ0cmFuc2Zvcm0iLCJvdmVyQXJnIiwiYXJyYXkiLCJpdGVyYXRlZSIsImFycmF5TWFwIiwicmVJbnRlcnBvbGF0ZSIsImJhc2VUb1N0cmluZyIsImRhdGUiLCJ0b0RhdGUiLCJ1dGNEYXRlIiwib2Zmc2V0TWlsbGlzZWNvbmRzIiwidHpQYXJzZVRpbWV6b25lIiwic3ViTWlsbGlzZWNvbmRzIiwiTUlMTElTRUNPTkRTX0lOX0hPVVIiLCJNSUxMSVNFQ09ORFNfSU5fTUlOVVRFIiwicGF0dGVybnMiLCJ0aW1lem9uZSIsInRpbWV6b25lWiIsInRpbWV6b25lSEgiLCJ0aW1lem9uZUhITU0iLCJ0aW1lem9uZUlBTkEiLCJ0b2tlbiIsImhvdXJzIiwicGFyc2VJbnQiLCJ2YWxpZGF0ZVRpbWV6b25lIiwiYWJzb2x1dGVPZmZzZXQiLCJtaW51dGVzIiwidG9rZW5zIiwidHpUb2tlbml6ZURhdGUiLCJhc1VUQyIsIkRhdGUiLCJ0aW1lc3RhbXBXaXRoTXNaZXJvZWQiLCJFdmVudHNNaXhpbiIsIkRhdGVUaW1lSW5wdXQiLCJCb29sZWFuRWRpdG9yIiwiQm9vbGVhbiIsImtleVByZXNzQmFja3NwYWNlT3JEZWxldGUiLCJzd2l0Y2hlciIsInRydWVWYWx1ZSIsImZhbHNlVmFsdWUiLCJ2YWx1ZUFzU3RyaW5nIiwiX2d1aSIsImZhbGxiYWNrIiwib3B0aW9uIiwiQUdyaWRDb21wb25lbnRzTWV0YUNvbmZpZyIsImNvbnRleHQiLCJ3aW4iLCJkb2MiLCJpbml0aWFsVmFsdWUiLCJsaXN0ZW5lciIsImJvb2xTd2l0Y2giLCJkb2N1bWVudCIsImxhYmVsIiwiZSIsIm92ZXJyaWRlIiwiYXV0b2JpbmQiLCJpbml0aWFsaXplciIsInJlcXVpcmUiLCJvcHRpb25zIiwid2luZG93IiwidXBkYXRlIiwibG9jYXRpb24iLCJiYXNlVXJsIiwiY3VycmVudERpciIsImZpeGVkQ3NzIiwidW5xdW90ZWRPcmlnVXJsIiwibmV3VXJsIiwiQm9vbGVhblJlbmRlcmVyIiwiaXNJbml0IiwiYm9vbGVhblRydWVSZW5kZXJWYWx1ZSIsImJvb2xlYW5GYWxzZVJlbmRlclZhbHVlIiwiYm9vbGVhblRydWVWYWx1ZSIsImJvb2xlYW5GYWxzZVZhbHVlIiwiQm9vbGVhbkZpbHRlciIsInRvVGl0bGVDYXNlIiwid29yZCIsInN0cmlwSFRNTCIsInRtcCIsIl9ib29sZWFuRmlsdGVyVHJhbnNsYXRpb24iLCJ0cmFuc2xhdGUiLCJpc0NsZWFyRmlsdGVyIiwiaXNSZXNldEJ1dHRvbiIsImlzQXBwbHlCdXR0b24iLCJyZXNldCIsImJvZHkiLCJhcHBseUZpbHRlclBhbmVsIiwibW9kZWwiLCJfZmlsdGVyVGV4dCIsImZpbHRlclRleHRBc1N0cmluZyIsIk51bWJlckVkaXRvciIsIm1pbiIsIm1heCIsInN0ZXAiLCJzdGFydFZhbHVlIiwiQmFzaXMiLCJlbGVtZW50cyIsIm9uVXBkYXRlIiwib25JbnZhbGlkIiwiaW5wdXQiLCJjYXN0ZWQiLCJldmVudCIsImlzVmFsaWQiLCJUZXh0RWRpdG9yIiwicGF0dGVybiIsInRpdGxlIiwidGVtcGxhdGUiLCJyZUVtcHR5U3RyaW5nTGVhZGluZyIsInJlRW1wdHlTdHJpbmdNaWRkbGUiLCJyZUVtcHR5U3RyaW5nVHJhaWxpbmciLCJyZUVzVGVtcGxhdGUiLCJyZU5vTWF0Y2giLCJyZVVuZXNjYXBlZFN0cmluZyIsInNldHRpbmdzIiwidGVtcGxhdGVTZXR0aW5ncyIsImd1YXJkIiwiYXNzaWduSW5XaXRoIiwiY3VzdG9tRGVmYXVsdHNBc3NpZ25JbiIsImltcG9ydHMiLCJpbXBvcnRzS2V5cyIsImltcG9ydHNWYWx1ZXMiLCJiYXNlVmFsdWVzIiwiaW50ZXJwb2xhdGUiLCJzb3VyY2UiLCJyZURlbGltaXRlcnMiLCJSZWdFeHAiLCJzb3VyY2VVUkwiLCJpbnRlcnBvbGF0ZVZhbHVlIiwiZXNjYXBlU3RyaW5nQ2hhciIsImlzRXNjYXBpbmciLCJpc0V2YWx1YXRpbmciLCJvZmZzZXQiLCJtYXRjaCIsInZhcmlhYmxlIiwiYXR0ZW1wdCIsImNyZWF0ZUFzc2lnbmVyIiwiY29weU9iamVjdCIsImtleXNJbiIsImlzTmV3IiwicHJvcHMiLCJjdXN0b21pemVyIiwiYXNzaWduVmFsdWUiLCJvYmpWYWx1ZSIsImdldFZhbHVlIiwiYmFzZUlzTmF0aXZlIiwicmVSZWdFeHBDaGFyIiwicmVJc0hvc3RDdG9yIiwiZnVuY1Byb3RvIiwiZnVuY1RvU3RyaW5nIiwicmVJc05hdGl2ZSIsImlzTWFza2VkIiwidG9Tb3VyY2UiLCJuYXRpdmVPYmplY3RUb1N0cmluZyIsImlzT3duIiwidW5tYXNrZWQiLCJtYXNrU3JjS2V5IiwidWlkIiwiY29yZUpzRGF0YSIsInNvdXJjZXMiLCJhc3NpZ25lciIsIm5hdGl2ZU1heCIsInN0YXJ0Iiwib3RoZXJBcmdzIiwic2hvcnRPdXQiLCJiYXNlU2V0VG9TdHJpbmciLCJjb25zdGFudCIsIkhPVF9DT1VOVCIsIkhPVF9TUEFOIiwibmF0aXZlTm93IiwiY291bnQiLCJsYXN0Q2FsbGVkIiwic3RhbXAiLCJyZW1haW5pbmciLCJhcmd1bWVudHMiLCJiYXNlS2V5c0luIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJiYXNlSXNBcmd1bWVudHMiLCJhcmdzVGFnIiwiZnJlZUV4cG9ydHMiLCJleHBvcnRzIiwiZnJlZU1vZHVsZSIsIm1vZHVsZUV4cG9ydHMiLCJCdWZmZXIiLCJuYXRpdmVJc0J1ZmZlciIsInN0dWJGYWxzZSIsIm5vZGVJc1R5cGVkQXJyYXkiLCJub2RlVXRpbCIsImJhc2VVbmFyeSIsImJhc2VJc1R5cGVkQXJyYXkiLCJhcnJheVRhZyIsImJvb2xUYWciLCJkYXRlVGFnIiwibWFwVGFnIiwibnVtYmVyVGFnIiwib2JqZWN0VGFnIiwicmVnZXhwVGFnIiwic2V0VGFnIiwic3RyaW5nVGFnIiwid2Vha01hcFRhZyIsImFycmF5QnVmZmVyVGFnIiwiZGF0YVZpZXdUYWciLCJmbG9hdDMyVGFnIiwiZmxvYXQ2NFRhZyIsImludDhUYWciLCJpbnQxNlRhZyIsImludDMyVGFnIiwidWludDhUYWciLCJ1aW50OENsYW1wZWRUYWciLCJ1aW50MTZUYWciLCJ1aW50MzJUYWciLCJ0eXBlZEFycmF5VGFncyIsImZyZWVQcm9jZXNzIiwidHlwZXMiLCJuYXRpdmVLZXlzSW4iLCJpc1Byb3RvIiwib2JqZWN0Q3RvclN0cmluZyIsImdldFByb3RvdHlwZSIsInN0cmluZ0VzY2FwZXMiLCJiYXNlS2V5cyIsIm5hdGl2ZUtleXMiLCJyZUVzY2FwZSIsInJlRXZhbHVhdGUiLCJlc2NhcGUiLCJyZVVuZXNjYXBlZEh0bWwiLCJyZUhhc1VuZXNjYXBlZEh0bWwiLCJlc2NhcGVIdG1sQ2hhciIsImh0bWxFc2NhcGVzIiwiYmFzZVByb3BlcnR5T2YiLCJJTkZJTklUWSIsInN5bWJvbFByb3RvIiwic3ltYm9sVG9TdHJpbmciLCJpc1N5bWJvbCIsInN5bWJvbFRhZyIsIkltYWdlUmVuZGVyZXIiLCJpbWFnZVdpZHRoIiwiaW1hZ2VIZWlnaHQiLCJpbWFnZUxpc3QiLCJEYXRlVGltZUZpbHRlciIsIlRPS0VOUyIsIlRPS0VOX0VRVUFMIiwiVE9LRU5fTk9UX0VRVUFMIiwiVE9LRU5fTEVTUyIsIlRPS0VOX0dSRUFURVIiLCJUT0tFTl9SQU5HRSIsIlRPS0VOX0FORCIsIlRPS0VOX09SIiwiQ29uZGl0aW9uUGFuZWwiLCJ3aXRoRXZlbnRzTWl4aW4iLCJfZmlsdGVyVGltZUlucHV0IiwiX2ZpbHRlclRvRGF0ZVRpbWVJbnB1dCIsIl9maWx0ZXJPcHRpb25zIiwiX2RlZmF1bHRPcHRpb24iLCJvcHRpb25zVHJhbnNsYXRpb25zIiwic2VsZWN0Iiwic3RhdGUiLCJndWkiLCJmaWx0ZXJPcHRpb25zIiwic2VsZWN0RWwiLCJmaWx0ZXJJbnB1dCIsImZpbHRlclRvSW5wdXQiLCJldnQiLCJlbCIsImZpbHRlckRhdGVUbyIsIk9OX0NPTkRJVElPTl9DSEFOR0VEIiwicmVhZG9ubHkiLCJmaWx0ZXIiLCJmaWx0ZXJUbyIsIkpvaW5Db25kaXRpb25QYW5lbCIsIl9maXJzdENvbmRpdGlvblBhbmVsIiwiX3NlY29uZENvbmRpdGlvblBhbmVsIiwiX29wZXJhdG9yUGFuZWwiLCJfcGFyYW1zIiwic3VwcHJlc3NBbmRPckNvbmRpdGlvbiIsInNlY29uZENvbmRpdGlvbkd1aSIsIm9wZXJhdG9yUGFuZWxHdWkiLCJPTl9KT0lOX0NPTkRJVElPTl9DSEFOR0VEIiwiY29uZGl0aW9uMSIsImNvbmRpdGlvbjIiLCJvcGVyYXRvciIsIl9Kb2luQ29uZGl0aW9uUGFuZWwiLCJfc3RhdGUiLCJfZG9lc0ZpbHRlclBhc3NPcHRpb25zIiwiZW5hYmxlVGltZSIsImluUmFuZ2VJbmNsdXNpdmUiLCJ2YWx1ZUdldHRlciIsImRvZXNQYXNzRmlyc3RDb25kaXRpb24iLCJkb2VzUGFzc1NlY29uZENvbmRpdGlvbiIsImNsb25lIiwiZGF0ZVRpbWVNYXNrIiwibG9jYWxlIiwiSW50bCIsIkJCaiIsImZpcnN0Q29uZGl0aW9uQXNTdHJpbmciLCJzZWNvbmRDb25kaXRpb25Bc1N0cmluZyIsIm9wZXJhdG9yQXNTdHJpbmciLCJwYXNzZWQiLCJ1dGNUb1pvbmVkVGltZSIsImlzQXBwbHlCdXR0b25BY3RpdmUiLCJkdGYiLCJnZXREYXRlVGltZUZvcm1hdCIsInBhcnRzT2Zmc2V0IiwiaGFja3lPZmZzZXQiLCJ0eXBlVG9Qb3MiLCJ5ZWFyIiwibW9udGgiLCJkYXkiLCJob3VyIiwibWludXRlIiwic2Vjb25kIiwiZm9ybWF0dGVkIiwiZmlsbGVkIiwicGFyc2VkIiwiZHRmQ2FjaGUiLCJ0ZXN0RGF0ZUZvcm1hdHRlZCIsImhvdXIxMiIsInRpbWVab25lIiwiaG91ckN5Y2xlU3VwcG9ydGVkIiwiaG91ckN5Y2xlIiwicmVxdWlyZWRBcmdzIiwiYW1vdW50IiwidG9JbnRlZ2VyIiwiYWRkTWlsbGlzZWNvbmRzIiwidGltZXN0YW1wIiwiYXJnU3RyIiwiYXJndW1lbnQiLCJERUZBVUxUX0FERElUSU9OQUxfRElHSVRTIiwiZGF0ZVRpbWVEZWxpbWV0ZXIiLCJwbGFpblRpbWUiLCJ0aW1lWm9uZURlbGltZXRlciIsIllZIiwiWVlZIiwiWVlZWSIsIllZWVlZIiwiTU0iLCJEREQiLCJNTUREIiwiV3d3IiwiV3d3RCIsIkhIIiwiSEhNTSIsIkhITU1TUyIsImRpcnR5T3B0aW9ucyIsImFkZGl0aW9uYWxEaWdpdHMiLCJkYXRlU3RyaW5ncyIsInNwbGl0RGF0ZVN0cmluZyIsInBhcnNlWWVhclJlc3VsdCIsInBhcnNlWWVhciIsInJlc3REYXRlU3RyaW5nIiwicGFyc2VEYXRlIiwidGltZSIsInBhcnNlVGltZSIsImdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMiLCJkYXRlU3RyaW5nIiwidGltZVN0cmluZyIsInBhdHRlcm5ZWVkiLCJwYXR0ZXJuWVlZWVkiLCJ5ZWFyU3RyaW5nIiwiY2VudHVyeVN0cmluZyIsInZhbGlkYXRlRGF0ZSIsImRheU9mWWVhciIsInZhbGlkYXRlRGF5T2ZZZWFyRGF0ZSIsIndlZWsiLCJ2YWxpZGF0ZVdlZWtEYXRlIiwiZGF5T2ZJU09XZWVrWWVhciIsImRheU9mV2VlayIsInBhcnNlRmxvYXQiLCJ2YWxpZGF0ZVRpbWUiLCJzZWNvbmRzIiwiZm91cnRoT2ZKYW51YXJ5RGF5IiwiZGlmZiIsIkRBWVNfSU5fTU9OVEgiLCJEQVlTX0lOX01PTlRIX0xFQVBfWUVBUiIsImlzTGVhcFllYXIiLCJpc0xlYXBZZWFySW5kZXgiLCJkaXJ0eURhdGUiLCJiYXNlVGltZXpvbmVPZmZzZXQiLCJtaWxsaXNlY29uZHNQYXJ0T2ZUaW1lem9uZU9mZnNldCIsImhhbmRsZXJzIiwiaGFuZGxlciIsInBpY2tlciIsInNlbGVjdGVkRGF0ZSIsInRpbWVfMjRociIsImVuYWJsZVNlY29uZHMiLCJub0NhbGVuZGFyIiwiZGF0ZUZvcm1hdCIsImZsYXRwaWNrciIsIndyYXAiLCJhbGxvd0lucHV0Iiwib25DaGFuZ2UiLCJmb3JtYXREYXRlIiwibWF4RGF0ZSIsIm1pbkRhdGUiLCJkZWZhdWx0SG91ciIsImRlZmF1bHRNaW51dGUiLCJkaXNhYmxlTW9iaWxlIiwid2Vla051bWJlcnMiLCJmb3JtYXQiLCJkYXRlVGltZUZvcm1hdHRlciIsImV4cHJlc3Npb24iLCJzZWxlY3RlZERhdGVzIiwid2Vla0RheXNTaG9ydCIsIndlZWtEYXlzTG9uZyIsIndlZWtkYXkiLCJtb250aHNTaG9ydCIsIm1vbnRoc0xvbmciLCJ3ZWVrZGF5cyIsInNob3J0aGFuZCIsImxvbmdoYW5kIiwibW9udGhzIiwiZGF5c0luTW9udGgiLCJmaXJzdERheU9mV2VlayIsIm9yZGluYWwiLCJyYW5nZVNlcGFyYXRvciIsIndlZWtBYmJyZXZpYXRpb24iLCJzY3JvbGxUaXRsZSIsInRvZ2dsZVRpdGxlIiwiYW1QTSIsInllYXJBcmlhTGFiZWwiLCJob3VyQXJpYUxhYmVsIiwibWludXRlQXJpYUxhYmVsIiwiT05fREFURV9DSEFOR0VEIiwiRGF0ZVRpbWVFZGl0b3IiLCJfaW5wdXQiLCJfdmFsdWUiLCJUZXh0SW5wdXQiLCJjc3NDbGFzc0Vycm9yIiwiY3NzQ2xhc3NTdWNjZXNzIiwicGFyZW50Q2xhc3MiLCJpc1dyYXBwZWQiLCJpbnB1dElkIiwiaW5wdXROYW1lIiwib3JpZ2luYWxQYXR0ZXJuIiwiZGVmYXVsdFBhdHRlcm4iLCJnZW5lcmF0ZVBhdHRlcm5Gcm9tTWFzayIsInVubWFza0lucHV0IiwibWFza0lmTm90TWFza2VkIiwidW5tYXNrIiwidGV4dElucHV0IiwiZXZlbnRUeXBlIiwia2V5Q29kZSIsImtleUNvbnRlbnQiLCJpbnNlcnRQb3NpdGlvbiIsImZpbmRDYXJldFBvc2l0aW9uIiwibWFza0Vycm9yIiwic2VsZWN0aW9uU3RhcnQiLCJ1bm1hc2tlZFZhbHVlIiwic2V0VGltZW91dCIsInBvc2l0aW9uIiwidmFsdWVNYXNrZWQiLCJ2YWx1ZVVubWFza2VkIiwiZXJyb3IiLCJTVVBQT1JURURfTUFTS1MiLCJJU19VTklDT0RFX1BST1BFUlRZX1NVUFBPUlRFRCIsImV2YWwiLCJpc01hc2tlZFZhbHVlIiwiY2FjaGVLZXkiLCJtYXNrQXNBcnJ5IiwicmVnZXgiLCJjIiwibWFza0FzQXJyYXkiLCJtYXNrZWRWYWx1ZUFzQXJyYXkiLCJtYXNrZWRWYWx1ZSIsImVsSGFzTWFzayIsIk51bWJlcklucHV0IiwiY291bnREZWNpbWFscyIsImFjdHVhbElucHV0IiwiYWN0dWFsSW5wdXRJZCIsImFjdHVhbElucHV0TmFtZSIsImFjdHVhbElucHV0U3RlcCIsImFjdHVhbElucHV0TWF4IiwiYWN0dWFsSW5wdXRNaW4iLCJhY3R1YWxJbnB1dEdyb3VwaW5nU2VwYXJhdG9yIiwiYWN0dWFsSW5wdXREZWNpbWFsU2VwYXJhdG9yIiwiYWN0dWFsSW5wdXRGb3JjZVRyYWlsaW5nWmVyb3MiLCJhY3R1YWxJbnB1dE1hc2siLCJhY3R1YWxJbnB1dENsYXNzZXMiLCJhY3R1YWxJbnB1dFJlcXVpcmVkIiwidW5tYXNrZWRJbnB1dCIsImRlY2ltYWxzIiwicmVzdG9yZSIsIkRhdGVNYXNrIiwiVXRpbHMiLCJEYXRlcyIsImdldERheU9mWWVhciIsImdldFdlZWtOdW1iZXIiLCJnZXRXZWVrU3RhcnRCeUxvY2FsZSIsIklTX0RBVEVfUkVHRVgiLCJJU19USU1FX1JFR0VYIiwiZml4U2hvcnRJU08iLCJnZXRUaW1lem9uZU9yT2Zmc2V0IiwiVHlwZXMiLCJvcmlnaW5hbEdldFdlZWtTdGFydEJ5TG9jYWxlIiwib25lRGF5IiwicGFkIiwiZCIsImRheU51bSIsIndlZWtTdGFydCIsInllYXJTdGFydCIsImRhdGVPYmplY3QiLCJ0cmFuc2xhdGlvbiIsIm1vbnRoU2hvcnQiLCJtb250aExvbmciLCJkYXlTaG9ydCIsImRheUxvbmciLCJ3ZWVrTnVtYmVyIiwiZGF0ZURldGFpbHMiLCJZeiIsIllzIiwiWWwiLCJZcCIsIllkIiwiWSIsIk16IiwiTXMiLCJNbCIsIk1wIiwiTWQiLCJNIiwiRHoiLCJEcyIsIkRsIiwiRHAiLCJEZCIsIkQiLCJIeiIsIkhzIiwiSGwiLCJIcCIsIkhkIiwiSCIsImh6IiwiaHMiLCJobCIsImhwIiwiaGQiLCJoIiwibXoiLCJtcyIsIm1sIiwibXAiLCJtZCIsInN6Iiwic3MiLCJzbCIsInNwIiwic2QiLCJzIiwiUFAiLCJQIiwicHAiLCJwIiwiSnoiLCJKcyIsIkpsIiwiSmQiLCJKIiwiV3oiLCJXcyIsIldsIiwiV3AiLCJXZCIsIlciLCJ3eiIsIndzIiwid2wiLCJ3cCIsIndkIiwidyIsImZhY3RvcnkiLCJkZWZpbmUiLCJfX2Fzc2lnbiIsImFzc2lnbiIsInQiLCJuIiwicHJvdG90eXBlIiwiY2FsbCIsIkhPT0tTIiwiZGVmYXVsdHMiLCJfZGlzYWJsZSIsIl9lbmFibGUiLCJhbHRGb3JtYXQiLCJhbHRJbnB1dCIsImFsdElucHV0Q2xhc3MiLCJhbmltYXRlIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwiYXJpYURhdGVGb3JtYXQiLCJjbGlja09wZW5zIiwiY2xvc2VPblNlbGVjdCIsImNvbmp1bmN0aW9uIiwiZGVmYXVsdFNlY29uZHMiLCJkaXNhYmxlIiwiZW5hYmxlIiwiZXJyb3JIYW5kbGVyIiwiZXJyIiwiZ2V0V2VlayIsImdpdmVuRGF0ZSIsImdldFRpbWUiLCJzZXRIb3VycyIsInNldERhdGUiLCJnZXREYXRlIiwiZ2V0RGF5Iiwid2VlazEiLCJnZXRGdWxsWWVhciIsImhvdXJJbmNyZW1lbnQiLCJpZ25vcmVkRm9jdXNFbGVtZW50cyIsImlubGluZSIsIm1pbnV0ZUluY3JlbWVudCIsIm1vZGUiLCJtb250aFNlbGVjdG9yVHlwZSIsIm5leHRBcnJvdyIsIm5vdyIsIm9uQ2xvc2UiLCJvbkRheUNyZWF0ZSIsIm9uRGVzdHJveSIsIm9uS2V5RG93biIsIm9uTW9udGhDaGFuZ2UiLCJvbk9wZW4iLCJvblBhcnNlQ29uZmlnIiwib25SZWFkeSIsIm9uVmFsdWVVcGRhdGUiLCJvblllYXJDaGFuZ2UiLCJvblByZUNhbGVuZGFyUG9zaXRpb24iLCJwbHVnaW5zIiwicG9zaXRpb25FbGVtZW50IiwidW5kZWZpbmVkIiwicHJldkFycm93Iiwic2hvcnRoYW5kQ3VycmVudE1vbnRoIiwic2hvd01vbnRocyIsInN0YXRpYyIsImVuZ2xpc2giLCJudGgiLCJzbGljZSIsImludCIsImJvb2wiLCJkZWJvdW5jZSIsIndhaXQiLCJpbW1lZGlhdGUiLCJ0aW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwiYXJyYXlpZnkiLCJ0b2dnbGVDbGFzcyIsImVsZW0iLCJjbGFzc05hbWUiLCJjbGFzc0xpc3QiLCJhZGQiLCJyZW1vdmUiLCJjcmVhdGVFbGVtZW50IiwidGV4dENvbnRlbnQiLCJjbGVhck5vZGUiLCJub2RlIiwiZmlyc3RDaGlsZCIsInJlbW92ZUNoaWxkIiwiZmluZFBhcmVudCIsInBhcmVudE5vZGUiLCJjcmVhdGVOdW1iZXJJbnB1dCIsImlucHV0Q2xhc3NOYW1lIiwib3B0cyIsIndyYXBwZXIiLCJudW1JbnB1dCIsImFycm93VXAiLCJhcnJvd0Rvd24iLCJzZXRBdHRyaWJ1dGUiLCJhcHBlbmRDaGlsZCIsImdldEV2ZW50VGFyZ2V0IiwiY29tcG9zZWRQYXRoIiwicGF0aCIsImRvTm90aGluZyIsIm1vbnRoVG9TdHIiLCJtb250aE51bWJlciIsInJldkZvcm1hdCIsIkYiLCJkYXRlT2JqIiwibW9udGhOYW1lIiwic2V0TW9udGgiLCJHIiwiSyIsImdldEhvdXJzIiwic2hvcnRNb250aCIsIlMiLCJzZXRTZWNvbmRzIiwiVSIsIl8iLCJ1bml4U2Vjb25kcyIsIndlZWtOdW0iLCJzZXRGdWxsWWVhciIsIloiLCJJU09EYXRlIiwic2V0TWludXRlcyIsImoiLCJ1IiwidW5peE1pbGxTZWNvbmRzIiwieSIsInRva2VuUmVnZXgiLCJmb3JtYXRzIiwidG9JU09TdHJpbmciLCJnZXRNb250aCIsImdldFNlY29uZHMiLCJnZXRNaW51dGVzIiwiY3JlYXRlRGF0ZUZvcm1hdHRlciIsIl9hIiwiX2IiLCJjb25maWciLCJfYyIsImwxMG4iLCJmcm10Iiwib3ZlcnJpZGVMb2NhbGUiLCJtYXAiLCJhcnIiLCJjcmVhdGVEYXRlUGFyc2VyIiwiZ2l2ZW5Gb3JtYXQiLCJ0aW1lbGVzcyIsImN1c3RvbUxvY2FsZSIsInBhcnNlZERhdGUiLCJkYXRlT3JpZyIsInRvRml4ZWQiLCJkYXRlc3RyIiwidHJpbSIsIm1hdGNoZWQiLCJvcHMiLCJtYXRjaEluZGV4IiwicmVnZXhTdHIiLCJ0b2tlbl8xIiwiaXNCYWNrU2xhc2giLCJlc2NhcGVkIiwiZXhlYyIsInZhbCIsImZvckVhY2giLCJFcnJvciIsImNvbXBhcmVEYXRlcyIsImRhdGUxIiwiZGF0ZTIiLCJpc0JldHdlZW4iLCJ0cyIsInRzMSIsInRzMiIsImR1cmF0aW9uIiwiREFZIiwiX2kiLCJUeXBlRXJyb3IiLCJfbG9vcF8xIiwiYXJnc18xIiwiREVCT1VOQ0VEX0NIQU5HRV9NUyIsIkZsYXRwaWNrckluc3RhbmNlIiwiZWxlbWVudCIsImluc3RhbmNlQ29uZmlnIiwiZGVmYXVsdENvbmZpZyIsIl9oYW5kbGVycyIsInBsdWdpbkVsZW1lbnRzIiwibG9hZGVkUGx1Z2lucyIsIl9iaW5kIiwiX3NldEhvdXJzRnJvbURhdGUiLCJzZXRIb3Vyc0Zyb21EYXRlIiwiX3Bvc2l0aW9uQ2FsZW5kYXIiLCJwb3NpdGlvbkNhbGVuZGFyIiwiY2hhbmdlTW9udGgiLCJjaGFuZ2VZZWFyIiwiY2xlYXIiLCJjbG9zZSIsIl9jcmVhdGVFbGVtZW50IiwiZGVzdHJveSIsImlzRW5hYmxlZCIsImp1bXBUb0RhdGUiLCJvcGVuIiwicmVkcmF3IiwidG9nZ2xlIiwic2V0dXBIZWxwZXJGdW5jdGlvbnMiLCJ1dGlscyIsImdldERheXNJbk1vbnRoIiwieXIiLCJjdXJyZW50TW9udGgiLCJjdXJyZW50WWVhciIsImluaXQiLCJpc09wZW4iLCJwYXJzZUNvbmZpZyIsInNldHVwTG9jYWxlIiwic2V0dXBJbnB1dHMiLCJzZXR1cERhdGVzIiwiaXNNb2JpbGUiLCJidWlsZCIsImJpbmRFdmVudHMiLCJsYXRlc3RTZWxlY3RlZERhdGVPYmoiLCJ1cGRhdGVWYWx1ZSIsInNldENhbGVuZGFyV2lkdGgiLCJzaG93VGltZUlucHV0IiwiaXNTYWZhcmkiLCJ0cmlnZ2VyRXZlbnQiLCJiaW5kVG9JbnN0YW5jZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImNhbGVuZGFyQ29udGFpbmVyIiwic3R5bGUiLCJ2aXNpYmlsaXR5IiwiZGlzcGxheSIsImRheXNDb250YWluZXIiLCJkYXlzV2lkdGgiLCJkYXlzIiwib2Zmc2V0V2lkdGgiLCJ3aWR0aCIsIndlZWtXcmFwcGVyIiwicmVtb3ZlUHJvcGVydHkiLCJ1cGRhdGVUaW1lIiwic2V0RGVmYXVsdFRpbWUiLCJ0aW1lV3JhcHBlciIsInByZXZWYWx1ZSIsInNldEhvdXJzRnJvbUlucHV0cyIsIl9kZWJvdW5jZWRDaGFuZ2UiLCJhbXBtMm1pbGl0YXJ5IiwibWlsaXRhcnkyYW1wbSIsImhvdXJFbGVtZW50IiwibWludXRlRWxlbWVudCIsInNlY29uZEVsZW1lbnQiLCJsaW1pdE1pbkhvdXJzIiwibWluVGltZSIsIm1pbkRhdGVIYXNUaW1lIiwibGltaXRNYXhIb3VycyIsIm1heFRpbWUiLCJtYXhEYXRlSGFzVGltZSIsInNldERlZmF1bHRIb3VycyIsIm1pbkhyIiwibWluTWludXRlcyIsIm1heEhyIiwibWF4TWludXRlcyIsIm9uWWVhcklucHV0IiwiZGVsdGEiLCJldiIsImFkZEV2ZW50TGlzdGVuZXIiLCJwdXNoIiwib25DbGljayIsIndoaWNoIiwidHJpZ2dlckNoYW5nZSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJzZXR1cE1vYmlsZSIsImRlYm91bmNlZFJlc2l6ZSIsIm9uUmVzaXplIiwib25Nb3VzZU92ZXIiLCJvbnRvdWNoc3RhcnQiLCJkb2N1bWVudENsaWNrIiwiY2FwdHVyZSIsIm1vbnRoTmF2Iiwib25Nb250aE5hdkNsaWNrIiwic2VsZWN0RGF0ZSIsInRpbWVDb250YWluZXIiLCJzZWxUZXh0IiwidGltZUluY3JlbWVudCIsImp1bXBEYXRlIiwianVtcFRvIiwib2xkWWVhciIsIm9sZE1vbnRoIiwiYnVpbGRNb250aFN3aXRjaCIsImluY3JlbWVudE51bUlucHV0IiwiY29udGFpbnMiLCJpbnB1dEVsZW0iLCJjcmVhdGVFdmVudCIsImRpc3BhdGNoRXZlbnQiLCJmcmFnbWVudCIsImNyZWF0ZURvY3VtZW50RnJhZ21lbnQiLCJ0YWJJbmRleCIsImJ1aWxkTW9udGhOYXYiLCJpbm5lckNvbnRhaW5lciIsImJ1aWxkV2Vla3MiLCJyQ29udGFpbmVyIiwiYnVpbGRXZWVrZGF5cyIsImJ1aWxkRGF5cyIsImJ1aWxkVGltZSIsImN1c3RvbUFwcGVuZCIsImFwcGVuZFRvIiwibm9kZVR5cGUiLCJpbnNlcnRCZWZvcmUiLCJuZXh0U2libGluZyIsImNyZWF0ZURheSIsImRheU51bWJlciIsImRhdGVJc0VuYWJsZWQiLCJkYXlFbGVtZW50IiwiJGkiLCJ0b2RheURhdGVFbGVtIiwiaXNEYXRlU2VsZWN0ZWQiLCJzZWxlY3RlZERhdGVFbGVtIiwiaXNEYXRlSW5SYW5nZSIsImluc2VydEFkamFjZW50SFRNTCIsImZvY3VzT25EYXlFbGVtIiwidGFyZ2V0Tm9kZSIsImZvY3VzIiwiZ2V0Rmlyc3RBdmFpbGFibGVEYXkiLCJzdGFydE1vbnRoIiwiZW5kTW9udGgiLCJjaGlsZHJlbiIsInN0YXJ0SW5kZXgiLCJlbmRJbmRleCIsImdldE5leHRBdmFpbGFibGVEYXkiLCJjdXJyZW50IiwiZ2l2ZW5Nb250aCIsImxvb3BEZWx0YSIsIm51bU1vbnRoRGF5cyIsImFicyIsImZvY3VzT25EYXkiLCJkYXlGb2N1c2VkIiwiaXNJblZpZXciLCJhY3RpdmVFbGVtZW50Iiwic3RhcnRFbGVtIiwiYnVpbGRNb250aERheXMiLCJmaXJzdE9mTW9udGgiLCJwcmV2TW9udGhEYXlzIiwiaXNNdWx0aU1vbnRoIiwicHJldk1vbnRoRGF5Q2xhc3MiLCJuZXh0TW9udGhEYXlDbGFzcyIsImRheUluZGV4IiwiZGF5Q29udGFpbmVyIiwiZnJhZyIsInNob3VsZEJ1aWxkTW9udGgiLCJtb250aHNEcm9wZG93bkNvbnRhaW5lciIsImlubmVySFRNTCIsInNlbGVjdGVkIiwiYnVpbGRNb250aCIsImNvbnRhaW5lciIsIm1vbnRoTmF2RnJhZ21lbnQiLCJtb250aEVsZW1lbnQiLCJzZWxlY3RlZE1vbnRoIiwieWVhcklucHV0IiwidGFiaW5kZXgiLCJ5ZWFyRWxlbWVudCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiZGlzYWJsZWQiLCJidWlsZE1vbnRocyIsInByZXZNb250aE5hdiIsInllYXJFbGVtZW50cyIsIm1vbnRoRWxlbWVudHMiLCJuZXh0TW9udGhOYXYiLCJfX2hpZGVQcmV2TW9udGhBcnJvdyIsIl9faGlkZU5leHRNb250aEFycm93IiwiY3VycmVudFllYXJFbGVtZW50IiwidXBkYXRlTmF2aWdhdGlvbkN1cnJlbnRNb250aCIsInNlcGFyYXRvciIsImhvdXJJbnB1dCIsIm1pbnV0ZUlucHV0Iiwic2Vjb25kSW5wdXQiLCJnZXRBdHRyaWJ1dGUiLCJ3ZWVrZGF5Q29udGFpbmVyIiwidXBkYXRlV2Vla2RheXMiLCJzcGxpY2UiLCJjb25jYXQiLCJpc09mZnNldCIsIl9oaWRlUHJldk1vbnRoQXJyb3ciLCJfaGlkZU5leHRNb250aEFycm93IiwidHJpZ2dlckNoYW5nZUV2ZW50IiwidG9Jbml0aWFsIiwibW9iaWxlSW5wdXQiLCJfaW5pdGlhbERhdGUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwibGFzdENoaWxkIiwiX3R5cGUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJrIiwiaXNDYWxlbmRhckVsZW0iLCJldmVudFRhcmdldF8xIiwiaXNDYWxlbmRhckVsZW1lbnQiLCJpc0lucHV0IiwibG9zdEZvY3VzIiwicmVsYXRlZFRhcmdldCIsImlzSWdub3JlZCIsInNvbWUiLCJuZXdZZWFyIiwibmV3WWVhck51bSIsImlzTmV3WWVhciIsImRhdGVUb0NoZWNrIiwiZnJvbSIsInRvIiwiYWxsb3dLZXlkb3duIiwiYWxsb3dJbmxpbmVLZXlkb3duIiwiYmx1ciIsImlzVGltZU9iaiIsInByZXZlbnREZWZhdWx0IiwiZm9jdXNBbmRDbG9zZSIsImRlbHRhXzEiLCJjdHJsS2V5Iiwic3RvcFByb3BhZ2F0aW9uIiwiZWxlbXMiLCJzaGlmdEtleSIsImhvdmVyRGF0ZSIsImZpcnN0RWxlbWVudENoaWxkIiwiaW5pdGlhbERhdGUiLCJyYW5nZVN0YXJ0RGF0ZSIsInJhbmdlRW5kRGF0ZSIsImNvbnRhaW5zRGlzYWJsZWQiLCJtaW5SYW5nZSIsIm1heFJhbmdlIiwiZGF5RWxlbSIsIm91dE9mUmFuZ2UiLCJfcG9zaXRpb25FbGVtZW50IiwiY2xpY2siLCJ3YXNPcGVuIiwibWluTWF4RGF0ZVNldHRlciIsImludmVyc2VEYXRlT2JqIiwiYm9vbE9wdHMiLCJ1c2VyQ29uZmlnIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJkYXRhc2V0IiwiZGF0ZXMiLCJwYXJzZURhdGVSdWxlcyIsInRpbWVNb2RlIiwiZGVmYXVsdERhdGVGb3JtYXQiLCJkZWZhdWx0QWx0Rm9ybWF0IiwiX21pbkRhdGUiLCJfbWF4RGF0ZSIsIm1pbk1heFRpbWVTZXR0ZXIiLCJfbWluVGltZSIsIl9tYXhUaW1lIiwiaG9vayIsInBsdWdpbkNvbmYiLCJsMTBucyIsImN1c3RvbVBvc2l0aW9uRWxlbWVudCIsImNhbGVuZGFySGVpZ2h0IiwicmVkdWNlIiwiYWNjIiwib2Zmc2V0SGVpZ2h0IiwiY2FsZW5kYXJXaWR0aCIsImNvbmZpZ1BvcyIsImNvbmZpZ1Bvc1ZlcnRpY2FsIiwiY29uZmlnUG9zSG9yaXpvbnRhbCIsImlucHV0Qm91bmRzIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiZGlzdGFuY2VGcm9tQm90dG9tIiwiaW5uZXJIZWlnaHQiLCJib3R0b20iLCJzaG93T25Ub3AiLCJ0b3AiLCJwYWdlWU9mZnNldCIsImxlZnQiLCJwYWdlWE9mZnNldCIsInJpZ2h0IiwicmlnaHRNb3N0IiwiY2VudGVyTW9zdCIsInN0eWxlU2hlZXRzIiwiYm9keVdpZHRoIiwiY2VudGVyTGVmdCIsImNlbnRlckJlZm9yZSIsImNlbnRlckFmdGVyIiwiY2VudGVySW5kZXgiLCJjc3NSdWxlcyIsImNlbnRlclN0eWxlIiwiaW5zZXJ0UnVsZSIsIm1zTWF4VG91Y2hQb2ludHMiLCJpc1NlbGVjdGFibGUiLCJzaG91bGRDaGFuZ2VNb250aCIsInNlbGVjdGVkSW5kZXgiLCJzb3J0IiwiYSIsImIiLCJzaW5nbGUiLCJyYW5nZSIsIkNBTExCQUNLUyIsInNldFNlbGVjdGVkRGF0ZSIsImlucHV0RGF0ZSIsInJ1bGUiLCJwcmVsb2FkZWREYXRlIiwiZGVmYXVsdERhdGUiLCJub2RlTmFtZSIsInBsYWNlaG9sZGVyIiwiX3Nob3dUaW1lSW5wdXQiLCJxdWVyeVNlbGVjdG9yIiwiaW5wdXRUeXBlIiwibW9iaWxlRm9ybWF0U3RyIiwiZGVmYXVsdFZhbHVlIiwiaG9va3MiLCJpbml0RXZlbnQiLCJnZXREYXRlU3RyIiwiZE9iaiIsImlzUHJldk1vbnRoIiwiaXNOZXh0TW9udGgiLCJpc0tleURvd24iLCJjdXJWYWx1ZSIsImlzSG91ckVsZW0iLCJpc01pbnV0ZUVsZW0iLCJfZmxhdHBpY2tyIiwibm9kZUxpc3QiLCJub2RlcyIsIkhUTUxFbGVtZW50IiwiaW5zdGFuY2VzIiwiSFRNTENvbGxlY3Rpb24iLCJOb2RlTGlzdCIsInNlbGVjdG9yIiwiTm9kZSIsImVuIiwibG9jYWxpemUiLCJzZXREZWZhdWx0cyIsImpRdWVyeSIsImZwX2luY3IiLCJqc3MiLCJhZGpTZWxBdHRyUmVnZXgiLCJkb3VibGVDb2xvblBzZXVkb0VsUmVnZXgiLCJzaW5nbGVDb2xvblBzZXVkb0VsUmVnZXgiLCJzaW5nbGVDb2xvbkZvclBzZXVkb0VsZW1lbnRzIiwiZ2V0U2VsZWN0b3JzQW5kUnVsZXMiLCJzaGVldCIsInJ1bGVzIiwicmVzdWx0cyIsInNlbGVjdG9yVGV4dCIsInRvRG91YmxlQ29sb25Qc2V1ZG9FbGVtZW50cyIsImdldFJ1bGVzIiwic3dhcEFkalNlbEF0dHIiLCJzd2FwUHNldWRvRWxTeW50YXgiLCJhZGRSdWxlIiwicHNldWRvRWxlbWVudFJ1bGUiLCJhZGRQc2V1ZG9FbGVtZW50UnVsZSIsImFkZFJ1bGVUb1NoZWV0IiwiZG91YmxlQ29sb25TZWxlY3RvciIsInNpbmdsZUNvbG9uU2VsZWN0b3IiLCJ0b1NpbmdsZUNvbG9uUHNldWRvRWxlbWVudHMiLCJyZXBsYWNlIiwic3VibWF0Y2gxIiwic3VibWF0Y2gyIiwic3VibWF0Y2gzIiwicmVtb3ZlUnVsZSIsImRlbGV0ZVJ1bGUiLCJleHRlbmQiLCJkZXN0Iiwic3JjIiwiYWdncmVnYXRlU3R5bGVzIiwiYWdncmVnYXRlIiwiZGVjbGFyZWRQcm9wZXJ0aWVzIiwiZGVjbGFyZWQiLCJ0b0NhbWVsQ2FzZSIsInN3YXAiLCJsYXN0SW5kZXgiLCJzdWJzdHIiLCJzZXRTdHlsZVByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwiaW1wb3J0YW50SW5kZXgiLCJzZXRQcm9wZXJ0eSIsInN1Ym1hdGNoIiwidHJhbnNmb3JtQ2FtZWxDYXNlZFByb3BlcnR5TmFtZXMiLCJvbGRQcm9wcyIsIm5ld1Byb3BzIiwidW5DYW1lbENhc2UiLCJKc3MiLCJoZWFkIiwic2hlZXRzIiwiZGVmYXVsdFNoZWV0IiwiZ2V0QWxsIiwiX2NyZWF0ZVNoZWV0IiwiX3JlbW92ZVNoZWV0Iiwic3R5bGVOb2RlIiwicmVsIiwib3duZXJOb2RlIiwiZm9yRG9jdW1lbnQiLCJpbmNsdWRlcyIsImlzSW50ZWdlciIsInN0YXJ0c1dpdGgiLCJpdCIsIlVOU0NPUEFCTEVTIiwiQXJyYXlQcm90byIsInRvSU9iamVjdCIsInRvTGVuZ3RoIiwidG9BYnNvbHV0ZUluZGV4IiwiSVNfSU5DTFVERVMiLCIkdGhpcyIsImZyb21JbmRleCIsIk8iLCJjdHgiLCJJT2JqZWN0IiwidG9PYmplY3QiLCJhc2MiLCJUWVBFIiwiJGNyZWF0ZSIsIklTX01BUCIsIklTX0ZJTFRFUiIsIklTX1NPTUUiLCJJU19FVkVSWSIsIklTX0ZJTkRfSU5ERVgiLCJOT19IT0xFUyIsImNyZWF0ZSIsImNhbGxiYWNrZm4iLCJ0aGF0IiwiZiIsInJlcyIsIlNQRUNJRVMiLCJvcmlnaW5hbCIsIkMiLCJzcGVjaWVzQ29uc3RydWN0b3IiLCJjb3JlIiwidmVyc2lvbiIsIl9fZSIsImFGdW5jdGlvbiIsImlzIiwiaGlkZSIsInJlZGVmaW5lIiwiUFJPVE9UWVBFIiwiJGV4cG9ydCIsIklTX0ZPUkNFRCIsIklTX0dMT0JBTCIsIklTX1NUQVRJQyIsIklTX1BST1RPIiwiSVNfQklORCIsIkIiLCJleHBQcm90byIsIm93biIsIm91dCIsImV4cCIsIlIiLCJNQVRDSCIsIktFWSIsInJlIiwiX19nIiwiZFAiLCJjcmVhdGVEZXNjIiwiY29mIiwiYXJnIiwiZmxvb3IiLCJpc0Zpbml0ZSIsImlzUmVnRXhwIiwiYW5PYmplY3QiLCJJRThfRE9NX0RFRklORSIsInRvUHJpbWl0aXZlIiwiQXR0cmlidXRlcyIsImJpdG1hcCIsImhhcyIsIlNSQyIsIiR0b1N0cmluZyIsIlRPX1NUUklORyIsIlRQTCIsImluc3BlY3RTb3VyY2UiLCJzYWZlIiwiU0hBUkVEIiwic3RvcmUiLCJjb3B5cmlnaHQiLCJmYWlscyIsIm1ldGhvZCIsImRlZmluZWQiLCJzZWFyY2hTdHJpbmciLCJOQU1FIiwiY2VpbCIsInZhbHVlT2YiLCJweCIsInJhbmRvbSIsIlVTRV9TWU1CT0wiLCIkZXhwb3J0cyIsIiRmb3JFYWNoIiwiU1RSSUNUIiwiU1RBUlRTX1dJVEgiLCIkc3RhcnRzV2l0aCIsInNlYXJjaCIsIiRpbmNsdWRlcyIsImRlZXBQYXJzZUpzb24iLCJqc29uU3RyaW5nIiwidGhpc0FyZyIsInRvU3RyaW5nVGFnIiwic3JjVmFsdWUiLCJjaHIiLCJJRV9QUk9UTyIsInByb2Nlc3MiLCJiaW5kaW5nIiwic3JjSW5kZXgiLCJldmFsdWF0ZSIsImVzY2FwZVZhbHVlIiwiZXNUZW1wbGF0ZVZhbHVlIiwiZXZhbHVhdGVWYWx1ZSIsImNzcyIsInByb3RvY29sIiwiaG9zdCIsInBhdGhuYW1lIiwiZnVsbE1hdGNoIiwib3JpZ1VybCIsIm8iLCIkMSIsIndlYnBhY2tQb2x5ZmlsbCIsImRlcHJlY2F0ZSIsInBhdGhzIiwiZ3dfc3RhcnRFZGl0aW5nQ2VsbCIsInJvdyIsImNvbEtleSIsImFwaSIsImdldFJvd05vZGUiLCJnZXREaXNwbGF5ZWRSb3dBdEluZGV4Iiwic2V0Rm9jdXNlZENlbGwiLCJyb3dJbmRleCIsInN0YXJ0RWRpdGluZ0NlbGwiLCJrZXlQcmVzcyIsImNoYXJQcmVzcyIsImd3X3N0b3BFZGl0aW5nIiwiY2FuY2VsIiwic3RvcEVkaXRpbmciLCJnd19lZGl0TmV4dENlbGwiLCJ0YWJUb05leHRDZWxsIiwiZ3dfZWRpdFByZXZpb3VzQ2VsbCIsInRhYlRvUHJldmlvdXNDZWxsIiwiZ3dfc2V0Rm9jdXNlZENlbGwiLCJjb2x1bW4iLCJyIiwiY29sdW1uQXBpIiwiZ2V0QWxsR3JpZENvbHVtbnMiLCJjb2xJZCIsImd3X2dldFJhbmdlU2VsZWN0aW9ucyIsInJhbmdlcyIsImdldENlbGxSYW5nZXMiLCJnZXRNb2RlbCIsImNvbHVtbnMiLCJhY2N1bXVsYXRvciIsInN0YXJJbmRleCIsInN0YXJ0Um93IiwiZW5kUm93Iiwicm93cyIsImdldFJvdyIsInBhcnNlZE5vZGUiLCJnd19wYXJzZUFkZENlbGxSYW5nZSIsInByIiwiZW5kIiwicm93RGF0YSIsInJvd1N0YXJ0SW5kZXgiLCJyb3dFbmRJbmRleCIsImd3X2FkZENlbGxSYW5nZSIsImFkZENlbGxSYW5nZSIsImd3X2NsZWFyUmFuZ2VTZWxlY3Rpb24iLCJjbGVhclJhbmdlU2VsZWN0aW9uIiwiZ3dfZ2V0Q2hhcnRUb29sYmFySXRlbXMiLCJncmlkT3B0aW9uc1dyYXBwZXIiLCJncmlkT3B0aW9ucyIsImNoYXJ0VG9vbGJhckl0ZW1zIiwiZ3dfYWRkQ2hhcnRSYW5nZSIsImdyaWQiLCJjZWxsUmFuZ2UiLCJyZWYiLCJjaGFydFJhbmdlIiwidXVpZCIsImNyZWF0ZWRfY2hhcnRzIiwiZ3dfZGVzdHJveUNoYXJ0IiwiZGVzdHJveUNoYXJ0IiwiY2hhcnQiLCJnd19leHRlbmRDb2x1bW5EZWZpbml0aW9ucyIsImRlZmluaXRpb25zIiwiZGVmIiwiY2hlY2tib3hTZWxlY3Rpb24iLCJnd19pc1Nob3dTZWxlY3Rpb25DaGVja2JveCIsImhlYWRlckNoZWNrYm94U2VsZWN0aW9uIiwiZ3dfaXNIZWFkZXJDaGVja2JveFNlbGVjdGlvbiIsImd3X3NldENvbHVtbkRlZmluaXRpb25zIiwiZGVlcFBhcnNlZERlZmluaXRpb25zIiwic2V0Q29sdW1uRGVmcyIsImNvbHVtbkRlZnMiLCJnd19zaXplQ29sdW1uc1RvRml0IiwiY29sdW1uc0FQSSIsInNpemVDb2x1bW5zVG9GaXQiLCJnd19hdXRvU2l6ZUNvbHVtbnMiLCJza2lwSGVhZGVyIiwiYWxsQ29sdW1uSWRzIiwiZ2V0QWxsQ29sdW1ucyIsImF1dG9TaXplQ29sdW1ucyIsImd3X2Vuc3VyZUNvbHVtblZpc2libGUiLCJjb2x1bW5JZCIsImVuc3VyZUNvbHVtblZpc2libGUiLCJnd19zZXRDb2x1bW5XaWR0aCIsInNldENvbHVtbldpZHRoIiwiZ3dfcGluQ29sdW1uIiwicGluIiwic2V0Q29sdW1uUGlubmVkIiwiZ3dfbW92ZUNvbHVtbiIsInRvSW5kZXgiLCJtb3ZlQ29sdW1uIiwicGFyYW0iLCJzaG93U2VsZWN0aW9uQ2hlY2tib3giLCJjb2xEZWYiLCJmaWVsZCIsInNob3dIZWFkZXJTZWxlY3Rpb25DaGVja2JveCIsImd3X2FkZFJvd0dyb3VwQ29sdW1uIiwiZ3dfcmVtb3ZlUm93R3JvdXBDb2x1bW4iLCJyZW1vdmVSb3dHcm91cENvbHVtbnMiLCJnd19nZXRQaXZvdE1vZGUiLCJpc1Bpdm90TW9kZSIsImd3X3NldFBpdm90TW9kZSIsInNldFBpdm90TW9kZSIsImd3X2FkZFBpdm90Q29sdW1ucyIsImd3X3JlbW92ZVBpdm90Q29sdW1ucyIsInJlbW92ZVBpdm90Q29sdW1ucyIsImd3X2FkZFZhbHVlQ29sdW1ucyIsImFkZFZhbHVlQ29sdW1ucyIsImd3X3JlbW92ZVZhbHVlQ29sdW1ucyIsInJlbW92ZVZhbHVlQ29sdW1ucyIsImd3X3NldFNvcnRNb2RlbCIsImFzQXJyYXkiLCJwYXJzZWRNb2RlbCIsInNldFNvcnRNb2RlbCIsImd3X3VwZGF0ZUNvbnRleHQiLCJnd19pbml0IiwibGljZW5zZSIsImFnR3JpZCIsIkxpY2Vuc2VNYW5hZ2VyIiwic2V0TGljZW5zZUtleSIsImdldEVsZW1lbnRCeUlkIiwicGFyc2VkT3B0aW9ucyIsImd3X3BhcnNlT3B0aW9ucyIsImluc3RhbmNlIiwiR3JpZCIsImxvZyIsImRlZXBQYXJzZWRPcHRpb25zIiwiZ2V0RGF0YVBhdGhUZW1wbGF0ZSIsImdldERhdGFQYXRoIiwiZGVib3VuY2VEdXJhdGlvbiIsImZpbmFsT3B0aW9ucyIsImdldERvY3VtZW50Iiwib25DZWxsRWRpdGluZ1N0YXJ0ZWQiLCJvbkNlbGxFZGl0aW5nU3RvcHBlZCIsIm9uQ2VsbFZhbHVlQ2hhbmdlZCIsIm9uUm93RWRpdGluZ1N0YXJ0ZWQiLCJvblJvd0VkaXRpbmdTdG9wcGVkIiwib25Sb3dWYWx1ZUNoYW5nZWQiLCJvbkNlbGxDbGlja2VkIiwib25DZWxsRG91YmxlQ2xpY2tlZCIsIm9uR3JpZFJlYWR5IiwiZ2V0Um93Tm9kZUlkIiwiZ2V0Q29udGV4dE1lbnVJdGVtcyIsImd3X29uUm93RG91YmxlQ2xpY2tlZCIsImd3X29uU2VsZWN0aW9uQ2hhbmdlZCIsImd3X29uUmFuZ2VTZWxlY3Rpb25DaGFuZ2VkIiwiQWdHcmlkQ29tcG9uZW50cyIsIm5hdmlnYXRlVG9OZXh0Q2VsbCIsInRyZWVEYXRhIiwiZ2V0RGF0YVBhdGhUZW1wbGF0ZUNvbXBsaWVkIiwiZ3dfc2V0U3R5bGUiLCJnd19yZW1vdmVTdHlsZSIsImd3X2dldENvbnRleHRNZW51IiwiZ3JpZElkIiwiYnVpbGRDb250ZXh0TWVudUFjdGlvbiIsInYiLCJwYXJzZU1lbnUiLCJtZW51IiwiY29udGV4dE1lbnUiLCJnd19zaG93TG9hZGluZ092ZXJsYXkiLCJzaG93TG9hZGluZ092ZXJsYXkiLCJnd19zaG93Tm9Sb3dzT3ZlcmxheSIsInNob3dOb1Jvd3NPdmVybGF5IiwiZ3dfaGlkZU92ZXJsYXkiLCJoaWRlT3ZlcmxheSIsImd3X3NldFF1aWNrRmlsdGVyIiwic2V0UXVpY2tGaWx0ZXIiLCJnd19leHBhbmRBbGwiLCJleHBhbmRBbGwiLCJnd19jb2xsYXBzZUFsbCIsImNvbGxhcHNlQWxsIiwiZ3dfZW5zdXJlSW5kZXhWaXNpYmxlIiwiZW5zdXJlTm9kZVZpc2libGUiLCJlbnN1cmVJbmRleFZpc2libGUiLCJnd19uYXZpZ2F0ZVRvTmV4dFJvdyIsInByZXZpb3VzQ2VsbCIsInByZXZpb3VzQ2VsbFBvc2l0aW9uIiwic3VnZ2VzdGVkTmV4dENlbGwiLCJuZXh0Q2VsbFBvc2l0aW9uIiwiS0VZX1VQIiwiS0VZX0RPV04iLCJLRVlfTEVGVCIsIktFWV9SSUdIVCIsImZvckVhY2hOb2RlIiwic2V0U2VsZWN0ZWQiLCJnd19nZXRSb3dOb2RlSWQiLCJnd19zZXRSb3dzRGF0YSIsImpzb24iLCJzZXRSb3dEYXRhIiwiZ3dfcmVzZXRSb3dIZWlnaHRzIiwicmVzZXRSb3dIZWlnaHRzIiwiZ3dfc2V0Um93RGF0YSIsInVwZGF0ZVJvd0RhdGEiLCJnd19yZW1vdmVSb3dzIiwiaW5kZXhlcyIsIml0ZW1zIiwiZ3dfYWRkUm93cyIsImFkZEluZGV4IiwiZ3dfc2V0Um93c0hlaWdodCIsImhlaWdodCIsInNldFJvd0hlaWdodCIsIm9uUm93SGVpZ2h0Q2hhbmdlZCIsImd3X3NldFJvd0hlaWdodCIsImd3X3NldFNlbGVjdGVkUm93cyIsImZvckVhY2hOb2RlQWZ0ZXJGaWx0ZXJBbmRTb3J0IiwiZXhwYW5kZWQiLCJvbkdyb3VwRXhwYW5kZWRPckNvbGxhcHNlZCIsImd3X3NlbGVjdEFsbCIsImZpbHRlcmVkIiwic2VsZWN0QWxsRmlsdGVyZWQiLCJzZWxlY3RBbGwiLCJnd19kZXNlbGVjdEFsbCIsImRlc2VsZWN0QWxsRmlsdGVyZWQiLCJkZXNlbGVjdEFsbCIsImd3X2dldFNlbGVjdGVkUm93cyIsImdldFNlbGVjdGVkTm9kZXMiLCJnd19nZXRTZWxlY3RlZFJvdyIsImd3X3NldFN0YXRlIiwic2V0Q29sdW1uU3RhdGUiLCJzZXRDb2x1bW5Hcm91cFN0YXRlIiwiZ3JvdXBzIiwic2V0RmlsdGVyTW9kZWwiLCJmaWx0ZXJzIiwiZ3dfZ2V0U3RhdGUiLCJnZXRDb2x1bW5TdGF0ZSIsImdldENvbHVtbkdyb3VwU3RhdGUiLCJnZXRTb3J0TW9kZWwiLCJnZXRGaWx0ZXJNb2RlbCIsImd3X3NldFN0YXR1c2JhckNvbXBvbmVudFZpc2liaWxpdHkiLCJnZXRTdGF0dXNQYW5lbCIsInNldFZpc2libGUiLCJnd19zZXRTaWRlQmFyVmlzaWJsZSIsInNldFNpZGVCYXJWaXNpYmxlIiwiZ3dfb3BlblRvb2xwYW5lbCIsInRvb2xwYW5lbElkIiwib3BlblRvb2xQYW5lbCIsImd3X2Nsb3NlVG9vbHBhbmVsIiwiY2xvc2VUb29sUGFuZWwiLCJnd19zZXRGdW5jdGlvbnNSZWFkT25seSIsInNldEZ1bmN0aW9uc1JlYWRPbmx5IiwiZ3dfZ2V0RG9jdW1lbnQiLCIkZG9jIiwiZ3dfZ2V0V2luZG93IiwiJHduZCIsImd3X2VzY2FwZSIsImd3X3V1aWQiLCJnd19nZXRHcmlkIiwiQkJqR3JpZEV4V2lkZ2V0IiwicmVnaXN0ZXJlZEdyaWRzIiwiZ3dfYWRkR3JpZCIsIkdXX0VWRU5UX1JPV19DTElDSyIsIkdXX0VWRU5UX1JPV19ET1VCTEVfQ0xJQ0siLCJHV19FVkVOVF9DRUxMX0NMSUNLIiwiR1dfRVZFTlRfQ0VMTF9ET1VCTEVfQ0xJQ0siLCJHV19FVkVOVF9DRUxMX0VESVRJTkdfU1RBUlRFRCIsIkdXX0VWRU5UX0NFTExfRURJVElOR19TVE9QUEVEIiwiR1dfRVZFTlRfQ0VMTF9WQUxVRV9DSEFOR0VEIiwiR1dfRVZFTlRfUk9XX0VESVRJTkdfU1RBUlRFRCIsIkdXX0VWRU5UX1JPV19FRElUSU5HX1NUT1BQRUQiLCJHV19FVkVOVF9HUklEX1NUQVRFX0NIQU5HRSIsIkdXX0VWRU5UX1JBTkdFX1NFTEVDVElPTl9DSEFOR0VEIiwiR1dfRVZFTlRfS0VZUFJFU1MiLCJDRUxMX0VESVRJTkdfRVZFTlRTX01BUCIsIlJPV19FRElUSU5HX0VWRU5UU19NQVAiLCJnd19vbkNlbGxFZGl0aW5nRXZlbnQiLCJvbGRWYWx1ZSIsImd3X29uUm93RWRpdGluZ0V2ZW50IiwiZ3dfb25LZXlkb3duIiwia2V5ZG93bkV2ZW50Iiwia2MiLCJhayIsImFsdEtleSIsInNrIiwiY2siLCJnd19vblJlYWR5RXZlbnQiLCJzdGF0ZURlYm91bmNlIiwiY2hhbmdlRXZlbnQiLCJrZXlib2FyZERlYm91bmNlIiwiQ0VMTF9DTElDS0lOR19FVkVOVFNfTUFQIiwiZ3dfb25DZWxsQ2xpY2tFdmVudCIsImd3X29uU3RhdGVDaGFuZ2VkIiwiZ3dfZGVib3VuY2UiLCJsYXRlciIsImNhbGxOb3ciLCJnd19zZW5kRXZlbnQiLCJwYXlsb2FkIiwiZXZlbnRJZCIsInJlZ2lzdGVyZWRJbnRlcmVzdHMiLCJpbnRlcmVzdHMiLCJkaXYiLCJDdXN0b21FdmVudCIsImd3X3BhcnNlTm9kZSIsImdyb3VwIiwiY2hpbGRJbmRleCIsImd3X3BhcnNlTm9kZUZyb21FdmVudCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGV0YWlsIiwiaW5pdEN1c3RvbUV2ZW50IiwiRXZlbnQiLCJmaW5kIiwicHJlZGljYXRlIiwibGVuIiwia1ZhbHVlIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxrREFBMEMsZ0NBQWdDO0FBQzFFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0VBQXdELGtCQUFrQjtBQUMxRTtBQUNBLHlEQUFpRCxjQUFjO0FBQy9EOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBeUMsaUNBQWlDO0FBQzFFLHdI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QTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBNUNBLENBOENBOzs7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBM0RBLENBNkRBOzs7QUFDQTs7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBdkVBLENBeUVBOzs7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FwRkEsQ0FzRkE7OztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0JBSEEsQ0FLQTs7QUFDQTs7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBZkEsQ0FpQkE7OztBQUNBOztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQ0Esb0VBREE7QUFHQSxTQTlCQSxDQWdDQTs7O0FBQ0E7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGlCQUNBLG9DQUNBLGdDQURBLEdBRUEsY0FIQTtBQUtBLFNBaERBLENBa0RBOzs7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE8sQ0FFQTs7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7Ozs7O0FDcGRBOztBQUFBO0FBQUE7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QTZCQSxjQTdCQTtBQThCQSxjQTlCQTtBQStCQSxhQS9CQTtBQWdDQSxjQWhDQTtBQWlDQSxjQWpDQTtBQWtDQSxhQWxDQTtBQW1DQSxjQW5DQTtBQW9DQSxjQXBDQTtBQXFDQSxhQXJDQTtBQXNDQSxjQXRDQTtBQXVDQSxjQXZDQTtBQXdDQSxhQXhDQTtBQXlDQSxjQXpDQTtBQTBDQSxjQTFDQTtBQTJDQSxhQTNDQTtBQTRDQSxjQTVDQTtBQTZDQSxjQTdDQTtBQThDQSxhQTlDQTtBQStDQSxjQS9DQTtBQWdEQSxjQWhEQTtBQWlEQSxhQWpEQTtBQWtEQSxjQWxEQTtBQW1EQSxjQW5EQTtBQW9EQSxhQXBEQTtBQXFEQSxjQXJEQTtBQXNEQSxjQXREQTtBQXVEQSxhQXZEQTtBQXdEQSxjQXhEQTtBQXlEQSxjQXpEQTtBQTBEQSxhQTFEQTtBQTJEQSxjQTNEQTtBQTREQSxjQTVEQTtBQTZEQSxhQTdEQTtBQThEQSxjQTlEQTtBQStEQSxjQS9EQTtBQWdFQSxhQWhFQTtBQWlFQSxjQWpFQTtBQWtFQSxjQWxFQTtBQW1FQSxhQW5FQTtBQW9FQSxjQXBFQTtBQXFFQSxjQXJFQTtBQXNFQSxhQXRFQTtBQXVFQSxjQXZFQTtBQXdFQSxjQXhFQTtBQXlFQSxhQXpFQTtBQTBFQSxjQTFFQTtBQTJFQSxjQTNFQTtBQTRFQSxhQTVFQTtBQTZFQSxjQTdFQTtBQThFQSxjQTlFQTtBQStFQSxhQS9FQTtBQWdGQSxjQWhGQTtBQWlGQSxjQWpGQTtBQWtGQSxhQWxGQTtBQW1GQSxjQW5GQTtBQW9GQSxjQXBGQTtBQXFGQSxhQXJGQTtBQXNGQSxjQXRGQTtBQXVGQSxjQXZGQTtBQXdGQSxhQXhGQTtBQXlGQSxjQXpGQTtBQTBGQSxjQTFGQTtBQTJGQSxhQTNGQTtBQTRGQSxjQTVGQTtBQTZGQSxjQTdGQTtBQThGQSxhQTlGQTtBQStGQSxjQS9GQTtBQWdHQSxjQWhHQTtBQWlHQSxhQWpHQTtBQWtHQSxjQWxHQTtBQW1HQSxjQW5HQTtBQW9HQSxhQXBHQTtBQXFHQSxjQXJHQTtBQXNHQSxjQXRHQTtBQXVHQSxhQXZHQTtBQXdHQSxjQXhHQTtBQXlHQSxjQXpHQTtBQTBHQSxhQTFHQTtBQTJHQSxjQTNHQTtBQTRHQSxjQTVHQTtBQTZHQSxhQTdHQTtBQThHQSxjQTlHQTtBQStHQSxjQS9HQTtBQWdIQSxhQWhIQTtBQWlIQSxjQWpIQTtBQWtIQSxjQWxIQTtBQW1IQSxhQW5IQTtBQW9IQSxjQXBIQTtBQXFIQSxjQXJIQTtBQXNIQSxhQXRIQTtBQXVIQSxjQXZIQTtBQXdIQSxjQXhIQTtBQXlIQSxhQXpIQTtBQTBIQSxjQTFIQTtBQTJIQSxjQTNIQTtBQTRIQSxhQTVIQTtBQTZIQSxjQTdIQTtBQThIQSxjQTlIQTtBQStIQSxhQS9IQTtBQWdJQSxjQWhJQTtBQWlJQSxjQWpJQTtBQWtJQSxhQWxJQTtBQW1JQSxjQW5JQTtBQW9JQSxjQXBJQTtBQXFJQSxhQXJJQTtBQXNJQSxjQXRJQTtBQXVJQSxjQXZJQTtBQXdJQSxhQXhJQTtBQXlJQSxjQXpJQTtBQTBJQSxjQTFJQTtBQTJJQSxhQTNJQTtBQTRJQSxjQTVJQTtBQTZJQSxjQTdJQTtBQThJQSxhQTlJQTtBQStJQSxjQS9JQTtBQWdKQSxjQWhKQTtBQWlKQSxhQWpKQTtBQWtKQSxjQWxKQTtBQW1KQSxjQW5KQTtBQW9KQSxhQXBKQTtBQXFKQSxjQXJKQTtBQXNKQSxjQXRKQTtBQXVKQSxhQXZKQTtBQXdKQSxjQXhKQTtBQXlKQSxjQXpKQTtBQTBKQSxhQTFKQTtBQTJKQSxjQTNKQTtBQTRKQSxjQTVKQTtBQTZKQSxhQTdKQTtBQThKQSxjQTlKQTtBQStKQSxjQS9KQTtBQWdLQSxhQWhLQTtBQWlLQSxjQWpLQTtBQWtLQSxjQWxLQTtBQW1LQSxhQW5LQTtBQW9LQSxjQXBLQTtBQXFLQSxjQXJLQTtBQXNLQSxhQXRLQTtBQXVLQSxjQXZLQTtBQXdLQSxjQXhLQTtBQXlLQSxhQXpLQTtBQTBLQSxjQTFLQTtBQTJLQSxjQTNLQTtBQTRLQSxhQTVLQTtBQTZLQSxjQTdLQTtBQThLQSxjQTlLQTtBQStLQSxhQS9LQTtBQWdMQSxjQWhMQTtBQWlMQSxjQWpMQTtBQWtMQSxhQWxMQTtBQW1MQSxjQW5MQTtBQW9MQSxjQXBMQTtBQXFMQSxhQXJMQTtBQXNMQSxjQXRMQTtBQXVMQSxZQXZMQTtBQXdMQSxhQXhMQTtBQXlMQSxjQXpMQTtBQTBMQSxhQTFMQTtBQTJMQSxhQTNMQTtBQTRMQSxjQTVMQTtBQTZMQSxjQTdMQTtBQThMQSxhQTlMQTtBQStMQSxjQS9MQTtBQWdNQSxhQWhNQTtBQWlNQSxhQWpNQTtBQWtNQSxjQWxNQTtBQW1NQSxjQW5NQTtBQW9NQSxhQXBNQTtBQXFNQSxjQXJNQTtBQXNNQSxjQXRNQTtBQXVNQSxhQXZNQTtBQXdNQSxjQXhNQTtBQXlNQSxjQXpNQTtBQTBNQSxhQTFNQTtBQTJNQSxjQTNNQTtBQTRNQSxjQTVNQTtBQTZNQSxhQTdNQTtBQThNQSxjQTlNQTtBQStNQSxjQS9NQTtBQWdOQSxhQWhOQTtBQWlOQSxjQWpOQTtBQWtOQSxjQWxOQTtBQW1OQSxhQW5OQTtBQW9OQSxjQXBOQTtBQXFOQSxjQXJOQTtBQXNOQSxhQXROQTtBQXVOQSxjQXZOQTtBQXdOQSxjQXhOQTtBQXlOQSxhQXpOQTtBQTBOQSxjQTFOQTtBQTJOQSxjQTNOQTtBQTROQSxhQTVOQTtBQTZOQSxjQTdOQTtBQThOQSxjQTlOQTtBQStOQSxhQS9OQTtBQWdPQSxjQWhPQTtBQWlPQSxjQWpPQTtBQWtPQSxhQWxPQTtBQW1PQSxjQW5PQTtBQW9PQSxhQXBPQTtBQXFPQSxhQXJPQTtBQXNPQSxjQXRPQTtBQXVPQTtBQXZPQTtBQTBPZTs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMU9mOzs7Ozs7Ozs7QUFRQSxVQUFNMXBCLGFBQWEsR0FBbkI7QUFDQSxVQUFNQyxpQkFBaUIsR0FBdkI7QUFDQSxVQUFNQyxlQUFlLEdBQXJCO0FBRUE7Ozs7OztBQUtBLFVBQU1DLFdBQVcsR0FBRyxTQUFkQSxXQUFjLE1BQU87QUFDekIsZUFBT2pELEdBQUcsSUFBSUEsR0FBRyxDQUFWQSxXQUFPQSxFQUFQQSxJQUE0QkEsR0FBRyxJQUFJQSxHQUFHLENBQTdDLFdBQTBDQSxFQUExQztBQURGO0FBSUE7Ozs7Ozs7QUFLQSxVQUFNb0QsV0FBVyxHQUFHLFNBQWRBLFdBQWMsTUFBTztBQUN6QixlQUFPcEQsR0FBRyxJQUFJQSxHQUFHLENBQVZBLFdBQU9BLEVBQVBBLElBQTRCQSxHQUFHLElBQUlBLEdBQUcsQ0FBN0MsV0FBMENBLEVBQTFDO0FBREY7O0FBSUEsVUFBTXFELGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBbUIscUJBQXdCO0FBQy9DLFlBQUksQ0FBSixPQUFZO0FBQ1YsY0FBTUMsS0FBSSxHQUFHdEQsR0FBRyxDQUFIQSxPQUFiLENBQWFBLENBQWI7O0FBQ0EsY0FBTXVELEdBQUcsR0FBR2pELENBQUMsR0FBYjtBQUNBLGdCQUFNO0FBQ0pMLGdCQUFJLEVBREE7QUFFSkMsbUJBQU8sa0dBRkgsSUFFRyxDQUZIO0FBR0pxRCxlQUFHLEVBSEM7QUFJSjtBQUpJLFdBQU47QUFIRixlQVNPekIsR0FBRyxDQUFIQSxDQUFHLENBQUhBO0FBVlQ7QUFhQTs7Ozs7Ozs7O1VBT00wQixVOzs7Ozs7Ozs7O0FBQ0o7Ozs7Ozs7Ozs7Ozs7OytCQWNZeEQsRyxFQUFLUCxLLEVBQW9CO0FBQUEsZ0JBQWRJLEtBQWMsdUVBQU4sSUFBTTtBQUNuQ0csZUFBRyxHQUFHeUQsTUFBTSxDQUFaekQsR0FBWSxDQUFaQTtBQUNBUCxpQkFBSSxHQUFHZ0UsTUFBTSxDQUFiaEUsS0FBYSxDQUFiQTtBQUNBLGdCQUFNSyxPQUFPLEdBQUdMLEtBQUksQ0FBcEI7QUFDQSxnQkFBTWlFLE1BQU0sR0FBRzFELEdBQUcsQ0FBbEI7O0FBRUEsZ0JBQUkwRCxNQUFNLEdBQVYsU0FBc0I7QUFDcEIseUJBQVcsT0FBWCxHQUFXLENBQVgsQ0FDQTtBQURBLG1CQUdFLE1BQU07QUFDSnpELHNCQUFJLEVBREE7QUFFSkMseUJBQU87QUFGSCxpQkFBTjtBQUlIOztBQUVELGdCQUFNNEIsR0FBRyxHQUFHLFVBQVosT0FBWSxDQUFaO0FBQ0EsZ0JBQUl5QixHQUFHLEdBakI0QixDQWlCbkMsQ0FqQm1DLENBaUJ2Qjs7QUFDWixnQkFBSUksUUFBUSxHQUFaOztBQUVBLGlCQUFLLElBQUlyRCxDQUFDLEdBQVYsR0FBZ0JBLENBQUMsR0FBakIsU0FBNkJBLENBQTdCLElBQWtDO0FBQ2hDcUQsc0JBQVEsR0FBR2xFLEtBQUksQ0FBSkEsT0FBWGtFLENBQVdsRSxDQUFYa0U7O0FBQ0E7QUFDRTtBQUFVO0FBQ1I3QixxQkFBRyxDQUFIQSxDQUFHLENBQUhBLEdBQVN5QixHQUFHLEdBQUhBLFNBQWV2RCxHQUFHLENBQUhBLE9BQWZ1RCxHQUFldkQsQ0FBZnVELEdBQVR6QjtBQUNBO0FBQ0E7O0FBRUY7QUFBVTtBQUNSLHNCQUFJeUIsR0FBRyxHQUFQLFFBQWtCO0FBQ2hCLHdCQUFNSyxLQUFJLEdBQUc1RCxHQUFHLENBQUhBLE9BQWIsR0FBYUEsQ0FBYjs7QUFDQSx3QkFBSW9ELFdBQVcsQ0FBZixLQUFlLENBQWYsRUFBdUJ0QixHQUFHLENBQUhBLENBQUcsQ0FBSEEsR0FBdkIsS0FBdUJBLENBQXZCLEtBQ0ssSUFBSW1CLFdBQVcsQ0FBZixLQUFlLENBQWYsRUFBdUJuQixHQUFHLENBQUhBLENBQUcsQ0FBSEEsR0FBUzhCLEtBQUksQ0FBcEMsV0FBZ0NBLEVBQVQ5QixDQUF2QixLQUNBdUIsZ0JBQWdCLGdCQUFoQkEsR0FBZ0IsQ0FBaEJBO0FBSlAseUJBS092QixHQUFHLENBQUhBLENBQUcsQ0FBSEE7O0FBQ1A7QUFDQTs7QUFFRjtBQUFVO0FBQ1Isc0JBQUl5QixHQUFHLEdBQVAsUUFBa0I7QUFDaEIsd0JBQU1LLE1BQUksR0FBRzVELEdBQUcsQ0FBSEEsT0FBYixHQUFhQSxDQUFiOztBQUNBLHdCQUFJb0QsV0FBVyxDQUFYQSxNQUFXLENBQVhBLElBQXFCSCxXQUFXLENBQXBDLE1BQW9DLENBQXBDLEVBQTRDbkIsR0FBRyxDQUFIQSxDQUFHLENBQUhBLEdBQTVDLE1BQTRDQSxDQUE1QyxLQUNLdUIsZ0JBQWdCLGdCQUFoQkEsR0FBZ0IsQ0FBaEJBO0FBSFAseUJBSU92QixHQUFHLENBQUhBLENBQUcsQ0FBSEE7O0FBQ1A7QUFDQTs7QUFDRjtBQUFVO0FBQ1Isc0JBQUl5QixHQUFHLEdBQVAsUUFBa0I7QUFDaEIsd0JBQU1LLE1BQUksR0FBRzVELEdBQUcsQ0FBSEEsT0FBYixHQUFhQSxDQUFiOztBQUNBLHdCQUFJOEMsYUFBYSxDQUFiQSxLQUFKLE1BQUlBLENBQUosRUFBOEJoQixHQUFHLENBQUhBLENBQUcsQ0FBSEEsR0FBOUIsTUFBOEJBLENBQTlCLEtBQ0t1QixnQkFBZ0IsZ0JBQWhCQSxHQUFnQixDQUFoQkE7QUFIUCx5QkFJT3ZCLEdBQUcsQ0FBSEEsQ0FBRyxDQUFIQTs7QUFDUDtBQUNBOztBQUNGO0FBQVU7QUFDUixzQkFBSXlCLEdBQUcsR0FBUCxRQUFrQjtBQUNoQix3QkFBTUssTUFBSSxHQUFHNUQsR0FBRyxDQUFIQSxPQUFiLEdBQWFBLENBQWI7O0FBQ0Esd0JBQUlvRCxXQUFXLENBQVhBLE1BQVcsQ0FBWEEsSUFBcUJOLGFBQWEsQ0FBYkEsS0FBekIsTUFBeUJBLENBQXpCLEVBQW1EaEIsR0FBRyxDQUFIQSxDQUFHLENBQUhBLEdBQW5ELE1BQW1EQSxDQUFuRCxLQUNLLElBQUltQixXQUFXLENBQWYsTUFBZSxDQUFmLEVBQXVCbkIsR0FBRyxDQUFIQSxDQUFHLENBQUhBLEdBQVM4QixNQUFJLENBQXBDLFdBQWdDQSxFQUFUOUIsQ0FBdkIsS0FDQXVCLGdCQUFnQixnQkFBaEJBLEdBQWdCLENBQWhCQTtBQUpQLHlCQUtPdkIsR0FBRyxDQUFIQSxDQUFHLENBQUhBOztBQUNQO0FBQ0E7O0FBQ0Y7QUFBVTtBQUNSLHNCQUFJeUIsR0FBRyxHQUFQLFFBQWtCO0FBQ2hCLHdCQUFNSyxNQUFJLEdBQUc1RCxHQUFHLENBQUhBLE9BQWIsR0FBYUEsQ0FBYjs7QUFDQSx3QkFDRW9ELFdBQVcsQ0FBWEEsTUFBVyxDQUFYQSxJQUNBSCxXQUFXLENBRFhHLE1BQ1csQ0FEWEEsSUFFQU4sYUFBYSxDQUFiQSxLQUhGLE1BR0VBLENBSEYsRUFLRWhCLEdBQUcsQ0FBSEEsQ0FBRyxDQUFIQSxHQUxGLE1BS0VBLENBTEYsS0FNS3VCLGdCQUFnQixnQkFBaEJBLEdBQWdCLENBQWhCQTtBQVJQLHlCQVNPdkIsR0FBRyxDQUFIQSxDQUFHLENBQUhBOztBQUNQO0FBQ0E7QUFFQTs7QUFDRjtBQUFVO0FBQ1Isc0JBQUl5QixHQUFHLEdBQVAsUUFBa0I7QUFDaEIsd0JBQU1LLE1BQUksR0FBRzVELEdBQUcsQ0FBSEEsT0FBYixHQUFhQSxDQUFiOztBQUNBLHdCQUFJaUQsV0FBVyxDQUFmLE1BQWUsQ0FBZixFQUF1Qm5CLEdBQUcsQ0FBSEEsQ0FBRyxDQUFIQSxHQUFTOEIsTUFBSSxDQUFwQyxXQUFnQ0EsRUFBVDlCLENBQXZCLEtBQ0ssSUFDSHNCLFdBQVcsQ0FBWEEsTUFBVyxDQUFYQSxJQUNBTixhQUFhLENBQWJBLEtBREFNLE1BQ0FOLENBREFNLElBRUFMLGlCQUFpQixDQUFqQkEsS0FGQUssTUFFQUwsQ0FGQUssSUFHQUosZUFBZSxDQUFmQSxrQkFBZ0MsQ0FKN0IsR0FNSGxCLEdBQUcsQ0FBSEEsQ0FBRyxDQUFIQSxHQU5HLE1BTUhBLENBTkcsS0FPQXVCLGdCQUFnQixnQkFBaEJBLEdBQWdCLENBQWhCQTtBQVZQLHlCQVdPdkIsR0FBRyxDQUFIQSxDQUFHLENBQUhBOztBQUNQO0FBQ0E7O0FBQ0Y7QUFDRUEscUJBQUcsQ0FBSEEsQ0FBRyxDQUFIQTtBQUNBO0FBekVKO0FBMkVEOztBQUVELGdCQUFJeUIsR0FBRyxHQUFQLFFBQWtCO0FBQ2hCLGtCQUFJLENBQUosT0FBWTtBQUNWLHNCQUFNO0FBQUV0RCxzQkFBSSxFQUFOO0FBQXFCQyx5QkFBTyxFQUFFO0FBQTlCLGlCQUFOO0FBQ0Q7QUFDRjs7QUFFRCxtQkFBTzRCLEdBQUcsQ0FBSEEsS0FBUCxFQUFPQSxDQUFQO0FBQ0Q7Ozs7O0FBR1kwQjs7O0FBQUFBLGlDQUFmLFVBQWVBOzs7Ozs7OztBQzlLZjs7QUFBQTtBQUFBOzs7Ozs7OztBQVVlMHBCOzs7QUFBQUE7QUFBZjtBQUFlQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNWZjs7Ozs7Ozs7QUFZQTs7Ozs7Ozs7O1VBT01BLEs7Ozs7Ozs7Ozs7QUFDSjs7Ozs7Ozs7Ozs7Ozs7aUNBZUUxdEIsTyxFQUNBQyxJLEVBS0E7QUFBQSxnQkFKQUMsaUJBSUEsdUVBSm9CLEdBSXBCO0FBQUEsZ0JBSEFDLGdCQUdBLHVFQUhtQixHQUduQjtBQUFBLGdCQUZBQyxrQkFFQSx1RUFGcUIsS0FFckI7QUFBQSxnQkFEQUMsS0FDQSx1RUFEUSxJQUNSO0FBQ0EsbUJBQU9OO0FBQUFBO0FBQUFBLDJGQUFQLEtBQU9BLENBQVA7QUFRRDtBQUVEOzs7Ozs7Ozs7Ozs7OzsrQkFXWXlQLEssRUFBTXZQLEksRUFBTWdoQixNLEVBQVFoUixRLEVBQVU7QUFDeEMsbUJBQU8rYztBQUFBQTtBQUFBQSx3Q0FBUCxRQUFPQSxDQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7aUNBY2N4c0IsRyxFQUFLUCxJLEVBQW9CO0FBQUEsZ0JBQWRJLEtBQWMsdUVBQU4sSUFBTTtBQUNyQyxtQkFBTzJEO0FBQUFBO0FBQUFBLDhCQUFQLEtBQU9BLENBQVA7QUFDRDs7Ozs7QUFHWTBwQjs7O0FBQUFBLGlDQUFmLEtBQWVBOzs7QXZKNUVmO0NBVkEsRTs7Ozs7Ozs7Ozs7Ozs7Ozs7QXdKQUE7QUFDQyxXQUFVNWdCLE1BQVYsRUFBa0IwbEIsT0FBbEIsRUFBMkI7QUFDeEIsZ0NBQU9yWSxPQUFQLE9BQW1CLFFBQW5CLElBQStCLE9BQU9sUixNQUFQLEtBQWtCLFdBQWpELEdBQStEQSxNQUFNLENBQUNrUixPQUFQLEdBQWlCcVksT0FBTyxFQUF2RixHQUNBLFFBQTZDQyxvQ0FBT0QsT0FBRDtBQUFBO0FBQUE7QUFBQTtBQUFBLG9HQUFuRCxJQUNDMWxCLFNBREQsQ0FEQTtBQUdILENBSkEsVUFJTyxZQUFZO0FBQUU7QUFFbEI7Ozs7Ozs7Ozs7Ozs7QUFlQSxNQUFJNGxCLE9BQVEsR0FBRyxvQkFBVztBQUN0QkEsV0FBUSxHQUFHbHVCLE1BQU0sQ0FBQ211QixNQUFQLElBQWlCLFNBQVNELFFBQVQsQ0FBa0JFLENBQWxCLEVBQXFCO0FBQzdDLFdBQUssSUFBSTFCLENBQUosRUFBT3B3QixDQUFDLEdBQUcsQ0FBWCxFQUFjK3hCLENBQUMsR0FBR2haLFNBQVMsQ0FBQ3RaLE1BQWpDLEVBQXlDTyxDQUFDLEdBQUcreEIsQ0FBN0MsRUFBZ0QveEIsQ0FBQyxFQUFqRCxFQUFxRDtBQUNqRG93QixTQUFDLEdBQUdyWCxTQUFTLENBQUMvWSxDQUFELENBQWI7O0FBQ0EsYUFBSyxJQUFJd3dCLENBQVQsSUFBY0osQ0FBZDtBQUFpQixjQUFJMXNCLE1BQU0sQ0FBQ3N1QixTQUFQLENBQWlCbmxCLGNBQWpCLENBQWdDb2xCLElBQWhDLENBQXFDN0IsQ0FBckMsRUFBd0NJLENBQXhDLENBQUosRUFBZ0RzQixDQUFDLENBQUN0QixDQUFELENBQUQsR0FBT0osQ0FBQyxDQUFDSSxDQUFELENBQVI7QUFBakU7QUFDSDs7QUFDRCxhQUFPc0IsQ0FBUDtBQUNILEtBTkQ7O0FBT0EsV0FBT0YsT0FBUSxDQUFDdGxCLEtBQVQsQ0FBZSxJQUFmLEVBQXFCeU0sU0FBckIsQ0FBUDtBQUNILEdBVEQ7O0FBV0EsTUFBSW1aLEtBQUssR0FBRyxDQUNSLFVBRFEsRUFFUixTQUZRLEVBR1IsYUFIUSxFQUlSLFdBSlEsRUFLUixXQUxRLEVBTVIsZUFOUSxFQU9SLFFBUFEsRUFRUixlQVJRLEVBU1IsU0FUUSxFQVVSLGVBVlEsRUFXUixjQVhRLEVBWVIsdUJBWlEsQ0FBWjtBQWNBLE1BQUlDLFFBQVEsR0FBRztBQUNYQyxZQUFRLEVBQUUsRUFEQztBQUVYQyxXQUFPLEVBQUUsRUFGRTtBQUdYaE0sY0FBVSxFQUFFLEtBSEQ7QUFJWGlNLGFBQVMsRUFBRSxRQUpBO0FBS1hDLFlBQVEsRUFBRSxLQUxDO0FBTVhDLGlCQUFhLEVBQUUsb0JBTko7QUFPWEMsV0FBTyxFQUFFLFFBQU8zZ0IsTUFBUCx5Q0FBT0EsTUFBUCxPQUFrQixRQUFsQixJQUNMQSxNQUFNLENBQUM0Z0IsU0FBUCxDQUFpQkMsU0FBakIsQ0FBMkJ2eEIsT0FBM0IsQ0FBbUMsTUFBbkMsTUFBK0MsQ0FBQyxDQVJ6QztBQVNYd3hCLGtCQUFjLEVBQUUsUUFUTDtBQVVYQyxjQUFVLEVBQUUsSUFWRDtBQVdYQyxpQkFBYSxFQUFFLElBWEo7QUFZWEMsZUFBVyxFQUFFLElBWkY7QUFhWDdNLGNBQVUsRUFBRSxPQWJEO0FBY1hRLGVBQVcsRUFBRSxFQWRGO0FBZVhDLGlCQUFhLEVBQUUsQ0FmSjtBQWdCWHFNLGtCQUFjLEVBQUUsQ0FoQkw7QUFpQlhDLFdBQU8sRUFBRSxFQWpCRTtBQWtCWHJNLGlCQUFhLEVBQUUsS0FsQko7QUFtQlhzTSxVQUFNLEVBQUUsRUFuQkc7QUFvQlhsTixpQkFBYSxFQUFFLEtBcEJKO0FBcUJYcEcsY0FBVSxFQUFFLEtBckJEO0FBc0JYdVQsZ0JBQVksRUFBRSxzQkFBVUMsR0FBVixFQUFlO0FBQ3pCLGFBQU8sT0FBT2pwQixPQUFQLEtBQW1CLFdBQW5CLElBQWtDQSxPQUFPLENBQUNELElBQVIsQ0FBYWtwQixHQUFiLENBQXpDO0FBQ0gsS0F4QlU7QUF5QlhDLFdBQU8sRUFBRSxpQkFBVUMsU0FBVixFQUFxQjtBQUMxQixVQUFJNWtCLElBQUksR0FBRyxJQUFJdUIsSUFBSixDQUFTcWpCLFNBQVMsQ0FBQ0MsT0FBVixFQUFULENBQVg7QUFDQTdrQixVQUFJLENBQUM4a0IsUUFBTCxDQUFjLENBQWQsRUFBaUIsQ0FBakIsRUFBb0IsQ0FBcEIsRUFBdUIsQ0FBdkIsRUFGMEIsQ0FHMUI7O0FBQ0E5a0IsVUFBSSxDQUFDK2tCLE9BQUwsQ0FBYS9rQixJQUFJLENBQUNnbEIsT0FBTCxLQUFpQixDQUFqQixHQUFzQixDQUFDaGxCLElBQUksQ0FBQ2lsQixNQUFMLEtBQWdCLENBQWpCLElBQXNCLENBQXpELEVBSjBCLENBSzFCOztBQUNBLFVBQUlDLEtBQUssR0FBRyxJQUFJM2pCLElBQUosQ0FBU3ZCLElBQUksQ0FBQ21sQixXQUFMLEVBQVQsRUFBNkIsQ0FBN0IsRUFBZ0MsQ0FBaEMsQ0FBWixDQU4wQixDQU8xQjs7QUFDQSxhQUFRLElBQ0o1eEIsSUFBSSxDQUFDQyxLQUFMLENBQVcsQ0FBQyxDQUFDd00sSUFBSSxDQUFDNmtCLE9BQUwsS0FBaUJLLEtBQUssQ0FBQ0wsT0FBTixFQUFsQixJQUFxQyxRQUFyQyxHQUNSLENBRFEsR0FFUCxDQUFDSyxLQUFLLENBQUNELE1BQU4sS0FBaUIsQ0FBbEIsSUFBdUIsQ0FGakIsSUFHUCxDQUhKLENBREo7QUFLSCxLQXRDVTtBQXVDWEcsaUJBQWEsRUFBRSxDQXZDSjtBQXdDWEMsd0JBQW9CLEVBQUUsRUF4Q1g7QUF5Q1hDLFVBQU0sRUFBRSxLQXpDRztBQTBDWDdULFVBQU0sRUFBRSxTQTFDRztBQTJDWDhULG1CQUFlLEVBQUUsQ0EzQ047QUE0Q1hDLFFBQUksRUFBRSxRQTVDSztBQTZDWEMscUJBQWlCLEVBQUUsVUE3Q1I7QUE4Q1hDLGFBQVMsRUFBRSx3T0E5Q0E7QUErQ1huTyxjQUFVLEVBQUUsS0EvQ0Q7QUFnRFhvTyxPQUFHLEVBQUUsSUFBSXBrQixJQUFKLEVBaERNO0FBaURYcVcsWUFBUSxFQUFFLEVBakRDO0FBa0RYZ08sV0FBTyxFQUFFLEVBbERFO0FBbURYQyxlQUFXLEVBQUUsRUFuREY7QUFvRFhDLGFBQVMsRUFBRSxFQXBEQTtBQXFEWEMsYUFBUyxFQUFFLEVBckRBO0FBc0RYQyxpQkFBYSxFQUFFLEVBdERKO0FBdURYQyxVQUFNLEVBQUUsRUF2REc7QUF3RFhDLGlCQUFhLEVBQUUsRUF4REo7QUF5RFhDLFdBQU8sRUFBRSxFQXpERTtBQTBEWEMsaUJBQWEsRUFBRSxFQTFESjtBQTJEWEMsZ0JBQVksRUFBRSxFQTNESDtBQTREWEMseUJBQXFCLEVBQUUsRUE1RFo7QUE2RFhDLFdBQU8sRUFBRSxFQTdERTtBQThEWGhMLFlBQVEsRUFBRSxNQTlEQztBQStEWGlMLG1CQUFlLEVBQUVDLFNBL0ROO0FBZ0VYQyxhQUFTLEVBQUUsc09BaEVBO0FBaUVYQyx5QkFBcUIsRUFBRSxLQWpFWjtBQWtFWEMsY0FBVSxFQUFFLENBbEVEO0FBbUVYQyxVQUFNLEVBQUUsS0FuRUc7QUFvRVh4UCxhQUFTLEVBQUUsS0FwRUE7QUFxRVhjLGVBQVcsRUFBRSxLQXJFRjtBQXNFWFQsUUFBSSxFQUFFO0FBdEVLLEdBQWY7QUF5RUEsTUFBSW9QLE9BQU8sR0FBRztBQUNWak8sWUFBUSxFQUFFO0FBQ05DLGVBQVMsRUFBRSxDQUFDLEtBQUQsRUFBUSxLQUFSLEVBQWUsS0FBZixFQUFzQixLQUF0QixFQUE2QixLQUE3QixFQUFvQyxLQUFwQyxFQUEyQyxLQUEzQyxDQURMO0FBRU5DLGNBQVEsRUFBRSxDQUNOLFFBRE0sRUFFTixRQUZNLEVBR04sU0FITSxFQUlOLFdBSk0sRUFLTixVQUxNLEVBTU4sUUFOTSxFQU9OLFVBUE07QUFGSixLQURBO0FBYVZDLFVBQU0sRUFBRTtBQUNKRixlQUFTLEVBQUUsQ0FDUCxLQURPLEVBRVAsS0FGTyxFQUdQLEtBSE8sRUFJUCxLQUpPLEVBS1AsS0FMTyxFQU1QLEtBTk8sRUFPUCxLQVBPLEVBUVAsS0FSTyxFQVNQLEtBVE8sRUFVUCxLQVZPLEVBV1AsS0FYTyxFQVlQLEtBWk8sQ0FEUDtBQWVKQyxjQUFRLEVBQUUsQ0FDTixTQURNLEVBRU4sVUFGTSxFQUdOLE9BSE0sRUFJTixPQUpNLEVBS04sS0FMTSxFQU1OLE1BTk0sRUFPTixNQVBNLEVBUU4sUUFSTSxFQVNOLFdBVE0sRUFVTixTQVZNLEVBV04sVUFYTSxFQVlOLFVBWk07QUFmTixLQWJFO0FBMkNWRSxlQUFXLEVBQUUsQ0FBQyxFQUFELEVBQUssRUFBTCxFQUFTLEVBQVQsRUFBYSxFQUFiLEVBQWlCLEVBQWpCLEVBQXFCLEVBQXJCLEVBQXlCLEVBQXpCLEVBQTZCLEVBQTdCLEVBQWlDLEVBQWpDLEVBQXFDLEVBQXJDLEVBQXlDLEVBQXpDLEVBQTZDLEVBQTdDLENBM0NIO0FBNENWQyxrQkFBYyxFQUFFLENBNUNOO0FBNkNWQyxXQUFPLEVBQUUsaUJBQVU0TixHQUFWLEVBQWU7QUFDcEIsVUFBSXJGLENBQUMsR0FBR3FGLEdBQUcsR0FBRyxHQUFkO0FBQ0EsVUFBSXJGLENBQUMsR0FBRyxDQUFKLElBQVNBLENBQUMsR0FBRyxFQUFqQixFQUNJLE9BQU8sSUFBUDs7QUFDSixjQUFRQSxDQUFDLEdBQUcsRUFBWjtBQUNJLGFBQUssQ0FBTDtBQUNJLGlCQUFPLElBQVA7O0FBQ0osYUFBSyxDQUFMO0FBQ0ksaUJBQU8sSUFBUDs7QUFDSixhQUFLLENBQUw7QUFDSSxpQkFBTyxJQUFQOztBQUNKO0FBQ0ksaUJBQU8sSUFBUDtBQVJSO0FBVUgsS0EzRFM7QUE0RFZ0SSxrQkFBYyxFQUFFLE1BNUROO0FBNkRWQyxvQkFBZ0IsRUFBRSxJQTdEUjtBQThEVkMsZUFBVyxFQUFFLHFCQTlESDtBQStEVkMsZUFBVyxFQUFFLGlCQS9ESDtBQWdFVkMsUUFBSSxFQUFFLENBQUMsSUFBRCxFQUFPLElBQVAsQ0FoRUk7QUFpRVZDLGlCQUFhLEVBQUUsTUFqRUw7QUFrRVZDLGlCQUFhLEVBQUUsTUFsRUw7QUFtRVZDLG1CQUFlLEVBQUUsUUFuRVA7QUFvRVZ0QyxhQUFTLEVBQUU7QUFwRUQsR0FBZDs7QUF1RUEsTUFBSWdILEdBQUcsR0FBRyxTQUFOQSxHQUFNLENBQVU3dEIsTUFBVixFQUFrQjtBQUFFLFdBQU8sQ0FBQyxNQUFNQSxNQUFQLEVBQWV3MkIsS0FBZixDQUFxQixDQUFDLENBQXRCLENBQVA7QUFBa0MsR0FBaEU7O0FBQ0EsTUFBSUMsR0FBRyxHQUFHLFNBQU5BLEdBQU0sQ0FBVUMsSUFBVixFQUFnQjtBQUFFLFdBQVFBLElBQUksS0FBSyxJQUFULEdBQWdCLENBQWhCLEdBQW9CLENBQTVCO0FBQWlDLEdBQTdEO0FBQ0E7OztBQUNBLFdBQVNDLFFBQVQsQ0FBa0JwcUIsSUFBbEIsRUFBd0JxcUIsSUFBeEIsRUFBOEJDLFNBQTlCLEVBQXlDO0FBQ3JDLFFBQUlBLFNBQVMsS0FBSyxLQUFLLENBQXZCLEVBQTBCO0FBQUVBLGVBQVMsR0FBRyxLQUFaO0FBQW9COztBQUNoRCxRQUFJQyxPQUFKO0FBQ0EsV0FBTyxZQUFZO0FBQ2YsVUFBSWhsQixPQUFPLEdBQUcsSUFBZDtBQUFBLFVBQW9CNUwsSUFBSSxHQUFHMlQsU0FBM0I7QUFDQWlkLGFBQU8sS0FBSyxJQUFaLElBQW9CQyxZQUFZLENBQUNELE9BQUQsQ0FBaEM7QUFDQUEsYUFBTyxHQUFHbGtCLE1BQU0sQ0FBQ2tZLFVBQVAsQ0FBa0IsWUFBWTtBQUNwQ2dNLGVBQU8sR0FBRyxJQUFWO0FBQ0EsWUFBSSxDQUFDRCxTQUFMLEVBQ0l0cUIsSUFBSSxDQUFDYSxLQUFMLENBQVcwRSxPQUFYLEVBQW9CNUwsSUFBcEI7QUFDUCxPQUpTLEVBSVAwd0IsSUFKTyxDQUFWO0FBS0EsVUFBSUMsU0FBUyxJQUFJLENBQUNDLE9BQWxCLEVBQ0l2cUIsSUFBSSxDQUFDYSxLQUFMLENBQVcwRSxPQUFYLEVBQW9CNUwsSUFBcEI7QUFDUCxLQVZEO0FBV0g7O0FBQ0QsTUFBSTh3QixRQUFRLEdBQUcsU0FBWEEsUUFBVyxDQUFVbHNCLEdBQVYsRUFBZTtBQUMxQixXQUFPQSxHQUFHLFlBQVl2SSxLQUFmLEdBQXVCdUksR0FBdkIsR0FBNkIsQ0FBQ0EsR0FBRCxDQUFwQztBQUNILEdBRkQ7O0FBSUEsV0FBU21zQixXQUFULENBQXFCQyxJQUFyQixFQUEyQkMsU0FBM0IsRUFBc0NULElBQXRDLEVBQTRDO0FBQ3hDLFFBQUlBLElBQUksS0FBSyxJQUFiLEVBQ0ksT0FBT1EsSUFBSSxDQUFDRSxTQUFMLENBQWVDLEdBQWYsQ0FBbUJGLFNBQW5CLENBQVA7QUFDSkQsUUFBSSxDQUFDRSxTQUFMLENBQWVFLE1BQWYsQ0FBc0JILFNBQXRCO0FBQ0g7O0FBQ0QsV0FBU0ksYUFBVCxDQUF1QjFxQixHQUF2QixFQUE0QnNxQixTQUE1QixFQUF1Q2h1QixPQUF2QyxFQUFnRDtBQUM1QyxRQUFJbUosQ0FBQyxHQUFHTSxNQUFNLENBQUNSLFFBQVAsQ0FBZ0JtbEIsYUFBaEIsQ0FBOEIxcUIsR0FBOUIsQ0FBUjtBQUNBc3FCLGFBQVMsR0FBR0EsU0FBUyxJQUFJLEVBQXpCO0FBQ0FodUIsV0FBTyxHQUFHQSxPQUFPLElBQUksRUFBckI7QUFDQW1KLEtBQUMsQ0FBQzZrQixTQUFGLEdBQWNBLFNBQWQ7QUFDQSxRQUFJaHVCLE9BQU8sS0FBSzhzQixTQUFoQixFQUNJM2pCLENBQUMsQ0FBQ2tsQixXQUFGLEdBQWdCcnVCLE9BQWhCO0FBQ0osV0FBT21KLENBQVA7QUFDSDs7QUFDRCxXQUFTbWxCLFNBQVQsQ0FBbUJDLElBQW5CLEVBQXlCO0FBQ3JCLFdBQU9BLElBQUksQ0FBQ0MsVUFBWjtBQUNJRCxVQUFJLENBQUNFLFdBQUwsQ0FBaUJGLElBQUksQ0FBQ0MsVUFBdEI7QUFESjtBQUVIOztBQUNELFdBQVNFLFVBQVQsQ0FBb0JILElBQXBCLEVBQTBCM3dCLFNBQTFCLEVBQXFDO0FBQ2pDLFFBQUlBLFNBQVMsQ0FBQzJ3QixJQUFELENBQWIsRUFDSSxPQUFPQSxJQUFQLENBREosS0FFSyxJQUFJQSxJQUFJLENBQUNJLFVBQVQsRUFDRCxPQUFPRCxVQUFVLENBQUNILElBQUksQ0FBQ0ksVUFBTixFQUFrQi93QixTQUFsQixDQUFqQjtBQUNKLFdBQU9rdkIsU0FBUCxDQUxpQyxDQUtmO0FBQ3JCOztBQUNELFdBQVM4QixpQkFBVCxDQUEyQkMsY0FBM0IsRUFBMkNDLElBQTNDLEVBQWlEO0FBQzdDLFFBQUlDLE9BQU8sR0FBR1gsYUFBYSxDQUFDLEtBQUQsRUFBUSxpQkFBUixDQUEzQjtBQUFBLFFBQXVEWSxRQUFRLEdBQUdaLGFBQWEsQ0FBQyxPQUFELEVBQVUsY0FBY1MsY0FBeEIsQ0FBL0U7QUFBQSxRQUF3SEksT0FBTyxHQUFHYixhQUFhLENBQUMsTUFBRCxFQUFTLFNBQVQsQ0FBL0k7QUFBQSxRQUFvS2MsU0FBUyxHQUFHZCxhQUFhLENBQUMsTUFBRCxFQUFTLFdBQVQsQ0FBN0w7O0FBQ0EsUUFBSS9ELFNBQVMsQ0FBQ0MsU0FBVixDQUFvQnZ4QixPQUFwQixDQUE0QixVQUE1QixNQUE0QyxDQUFDLENBQWpELEVBQW9EO0FBQ2hEaTJCLGNBQVEsQ0FBQ2h0QixJQUFULEdBQWdCLFFBQWhCO0FBQ0gsS0FGRCxNQUdLO0FBQ0RndEIsY0FBUSxDQUFDaHRCLElBQVQsR0FBZ0IsTUFBaEI7QUFDQWd0QixjQUFRLENBQUMzaUIsT0FBVCxHQUFtQixNQUFuQjtBQUNIOztBQUNELFFBQUl5aUIsSUFBSSxLQUFLaEMsU0FBYixFQUNJLEtBQUssSUFBSTd3QixHQUFULElBQWdCNnlCLElBQWhCO0FBQ0lFLGNBQVEsQ0FBQ0csWUFBVCxDQUFzQmx6QixHQUF0QixFQUEyQjZ5QixJQUFJLENBQUM3eUIsR0FBRCxDQUEvQjtBQURKO0FBRUo4eUIsV0FBTyxDQUFDSyxXQUFSLENBQW9CSixRQUFwQjtBQUNBRCxXQUFPLENBQUNLLFdBQVIsQ0FBb0JILE9BQXBCO0FBQ0FGLFdBQU8sQ0FBQ0ssV0FBUixDQUFvQkYsU0FBcEI7QUFDQSxXQUFPSCxPQUFQO0FBQ0g7O0FBQ0QsV0FBU00sY0FBVCxDQUF3Qm5qQixLQUF4QixFQUErQjtBQUMzQixRQUFJLE9BQU9BLEtBQUssQ0FBQ29qQixZQUFiLEtBQThCLFVBQWxDLEVBQThDO0FBQzFDLFVBQUlDLElBQUksR0FBR3JqQixLQUFLLENBQUNvakIsWUFBTixFQUFYO0FBQ0EsYUFBT0MsSUFBSSxDQUFDLENBQUQsQ0FBWDtBQUNIOztBQUNELFdBQU9yakIsS0FBSyxDQUFDMVAsTUFBYjtBQUNIOztBQUVELE1BQUlnekIsU0FBUyxHQUFHLFNBQVpBLFNBQVksR0FBWTtBQUFFLFdBQU8xQyxTQUFQO0FBQW1CLEdBQWpEOztBQUNBLE1BQUkyQyxVQUFVLEdBQUcsU0FBYkEsVUFBYSxDQUFVQyxXQUFWLEVBQXVCdlEsU0FBdkIsRUFBa0NySCxNQUFsQyxFQUEwQztBQUFFLFdBQU9BLE1BQU0sQ0FBQ3VILE1BQVAsQ0FBY0YsU0FBUyxHQUFHLFdBQUgsR0FBaUIsVUFBeEMsRUFBb0R1USxXQUFwRCxDQUFQO0FBQTBFLEdBQXZJOztBQUNBLE1BQUlDLFNBQVMsR0FBRztBQUNabkosS0FBQyxFQUFFZ0osU0FEUztBQUVaSSxLQUFDLEVBQUUsV0FBVUMsT0FBVixFQUFtQkMsU0FBbkIsRUFBOEJoWSxNQUE5QixFQUFzQztBQUNyQytYLGFBQU8sQ0FBQ0UsUUFBUixDQUFpQmpZLE1BQU0sQ0FBQ3VILE1BQVAsQ0FBY0QsUUFBZCxDQUF1QnJtQixPQUF2QixDQUErQisyQixTQUEvQixDQUFqQjtBQUNILEtBSlc7QUFLWkUsS0FBQyxFQUFFLFdBQVVILE9BQVYsRUFBbUI5VyxJQUFuQixFQUF5QjtBQUN4QjhXLGFBQU8sQ0FBQzFFLFFBQVIsQ0FBaUJ6TyxVQUFVLENBQUMzRCxJQUFELENBQTNCO0FBQ0gsS0FQVztBQVFaK04sS0FBQyxFQUFFLFdBQVUrSSxPQUFWLEVBQW1COVcsSUFBbkIsRUFBeUI7QUFDeEI4VyxhQUFPLENBQUMxRSxRQUFSLENBQWlCek8sVUFBVSxDQUFDM0QsSUFBRCxDQUEzQjtBQUNILEtBVlc7QUFXWnlQLEtBQUMsRUFBRSxXQUFVcUgsT0FBVixFQUFtQi9XLEdBQW5CLEVBQXdCO0FBQ3ZCK1csYUFBTyxDQUFDekUsT0FBUixDQUFnQjFPLFVBQVUsQ0FBQzVELEdBQUQsQ0FBMUI7QUFDSCxLQWJXO0FBY1ptWCxLQUFDLEVBQUUsV0FBVUosT0FBVixFQUFtQmhRLElBQW5CLEVBQXlCL0gsTUFBekIsRUFBaUM7QUFDaEMrWCxhQUFPLENBQUMxRSxRQUFSLENBQWtCMEUsT0FBTyxDQUFDSyxRQUFSLEtBQXFCLEVBQXRCLEdBQ2IsS0FBSzVDLEdBQUcsQ0FBQyxJQUFJNWYsTUFBSixDQUFXb0ssTUFBTSxDQUFDK0gsSUFBUCxDQUFZLENBQVosQ0FBWCxFQUEyQixHQUEzQixFQUFnQzNrQixJQUFoQyxDQUFxQzJrQixJQUFyQyxDQUFELENBRFo7QUFFSCxLQWpCVztBQWtCWnFHLEtBQUMsRUFBRSxXQUFVMkosT0FBVixFQUFtQk0sVUFBbkIsRUFBK0JyWSxNQUEvQixFQUF1QztBQUN0QytYLGFBQU8sQ0FBQ0UsUUFBUixDQUFpQmpZLE1BQU0sQ0FBQ3VILE1BQVAsQ0FBY0YsU0FBZCxDQUF3QnBtQixPQUF4QixDQUFnQ28zQixVQUFoQyxDQUFqQjtBQUNILEtBcEJXO0FBcUJaQyxLQUFDLEVBQUUsV0FBVVAsT0FBVixFQUFtQmpULE9BQW5CLEVBQTRCO0FBQzNCaVQsYUFBTyxDQUFDUSxVQUFSLENBQW1CM1QsVUFBVSxDQUFDRSxPQUFELENBQTdCO0FBQ0gsS0F2Qlc7QUF3QlowVCxLQUFDLEVBQUUsV0FBVUMsQ0FBVixFQUFhQyxXQUFiLEVBQTBCO0FBQUUsYUFBTyxJQUFJNW9CLElBQUosQ0FBUzhVLFVBQVUsQ0FBQzhULFdBQUQsQ0FBVixHQUEwQixJQUFuQyxDQUFQO0FBQWtELEtBeEJyRTtBQXlCWjFILEtBQUMsRUFBRSxXQUFVK0csT0FBVixFQUFtQlksT0FBbkIsRUFBNEIzWSxNQUE1QixFQUFvQztBQUNuQyxVQUFJdU4sVUFBVSxHQUFHaGUsUUFBUSxDQUFDb3BCLE9BQUQsQ0FBekI7QUFDQSxVQUFJcHFCLElBQUksR0FBRyxJQUFJdUIsSUFBSixDQUFTaW9CLE9BQU8sQ0FBQ3JFLFdBQVIsRUFBVCxFQUFnQyxDQUFoQyxFQUFtQyxJQUFJLENBQUNuRyxVQUFVLEdBQUcsQ0FBZCxJQUFtQixDQUExRCxFQUE2RCxDQUE3RCxFQUFnRSxDQUFoRSxFQUFtRSxDQUFuRSxFQUFzRSxDQUF0RSxDQUFYO0FBQ0FoZixVQUFJLENBQUMra0IsT0FBTCxDQUFhL2tCLElBQUksQ0FBQ2dsQixPQUFMLEtBQWlCaGxCLElBQUksQ0FBQ2lsQixNQUFMLEVBQWpCLEdBQWlDeFQsTUFBTSxDQUFDeUgsY0FBckQ7QUFDQSxhQUFPbFosSUFBUDtBQUNILEtBOUJXO0FBK0JadWYsS0FBQyxFQUFFLFdBQVVpSyxPQUFWLEVBQW1CalgsSUFBbkIsRUFBeUI7QUFDeEJpWCxhQUFPLENBQUNhLFdBQVIsQ0FBb0JoVSxVQUFVLENBQUM5RCxJQUFELENBQTlCO0FBQ0gsS0FqQ1c7QUFrQ1orWCxLQUFDLEVBQUUsV0FBVUosQ0FBVixFQUFhSyxPQUFiLEVBQXNCO0FBQUUsYUFBTyxJQUFJaHBCLElBQUosQ0FBU2dwQixPQUFULENBQVA7QUFBMkIsS0FsQzFDO0FBbUNaak0sS0FBQyxFQUFFLFdBQVVrTCxPQUFWLEVBQW1CL1csR0FBbkIsRUFBd0I7QUFDdkIrVyxhQUFPLENBQUN6RSxPQUFSLENBQWdCMU8sVUFBVSxDQUFDNUQsR0FBRCxDQUExQjtBQUNILEtBckNXO0FBc0Nac08sS0FBQyxFQUFFLFdBQVV5SSxPQUFWLEVBQW1COVcsSUFBbkIsRUFBeUI7QUFDeEI4VyxhQUFPLENBQUMxRSxRQUFSLENBQWlCek8sVUFBVSxDQUFDM0QsSUFBRCxDQUEzQjtBQUNILEtBeENXO0FBeUNacGhCLEtBQUMsRUFBRSxXQUFVazRCLE9BQVYsRUFBbUJyb0IsT0FBbkIsRUFBNEI7QUFDM0Jxb0IsYUFBTyxDQUFDZ0IsVUFBUixDQUFtQm5VLFVBQVUsQ0FBQ2xWLE9BQUQsQ0FBN0I7QUFDSCxLQTNDVztBQTRDWnNwQixLQUFDLEVBQUUsV0FBVWpCLE9BQVYsRUFBbUIvVyxHQUFuQixFQUF3QjtBQUN2QitXLGFBQU8sQ0FBQ3pFLE9BQVIsQ0FBZ0IxTyxVQUFVLENBQUM1RCxHQUFELENBQTFCO0FBQ0gsS0E5Q1c7QUErQ1o5YyxLQUFDLEVBQUV3ekIsU0EvQ1M7QUFnRFo1M0IsS0FBQyxFQUFFLFdBQVVpNEIsT0FBVixFQUFtQmhYLEtBQW5CLEVBQTBCO0FBQ3pCZ1gsYUFBTyxDQUFDRSxRQUFSLENBQWlCclQsVUFBVSxDQUFDN0QsS0FBRCxDQUFWLEdBQW9CLENBQXJDO0FBQ0gsS0FsRFc7QUFtRFo2USxLQUFDLEVBQUUsV0FBVW1HLE9BQVYsRUFBbUJoWCxLQUFuQixFQUEwQjtBQUN6QmdYLGFBQU8sQ0FBQ0UsUUFBUixDQUFpQnJULFVBQVUsQ0FBQzdELEtBQUQsQ0FBVixHQUFvQixDQUFyQztBQUNILEtBckRXO0FBc0Raa1AsS0FBQyxFQUFFLFdBQVU4SCxPQUFWLEVBQW1CalQsT0FBbkIsRUFBNEI7QUFDM0JpVCxhQUFPLENBQUNRLFVBQVIsQ0FBbUIzVCxVQUFVLENBQUNFLE9BQUQsQ0FBN0I7QUFDSCxLQXhEVztBQXlEWm1VLEtBQUMsRUFBRSxXQUFVUixDQUFWLEVBQWFTLGVBQWIsRUFBOEI7QUFDN0IsYUFBTyxJQUFJcHBCLElBQUosQ0FBUzhVLFVBQVUsQ0FBQ3NVLGVBQUQsQ0FBbkIsQ0FBUDtBQUNILEtBM0RXO0FBNERaNUgsS0FBQyxFQUFFb0csU0E1RFM7QUE2RFp5QixLQUFDLEVBQUUsV0FBVXBCLE9BQVYsRUFBbUJqWCxJQUFuQixFQUF5QjtBQUN4QmlYLGFBQU8sQ0FBQ2EsV0FBUixDQUFvQixPQUFPaFUsVUFBVSxDQUFDOUQsSUFBRCxDQUFyQztBQUNIO0FBL0RXLEdBQWhCO0FBaUVBLE1BQUlzWSxVQUFVLEdBQUc7QUFDYjFLLEtBQUMsRUFBRSxRQURVO0FBRWJvSixLQUFDLEVBQUUsUUFGVTtBQUdiSSxLQUFDLEVBQUUsY0FIVTtBQUlibEosS0FBQyxFQUFFLGNBSlU7QUFLYjBCLEtBQUMsRUFBRSxrQkFMVTtBQU1ieUgsS0FBQyxFQUFFLEVBTlU7QUFPYi9KLEtBQUMsRUFBRSxRQVBVO0FBUWJrSyxLQUFDLEVBQUUsY0FSVTtBQVNiRSxLQUFDLEVBQUUsTUFUVTtBQVVieEgsS0FBQyxFQUFFLGNBVlU7QUFXYmxELEtBQUMsRUFBRSxVQVhVO0FBWWIrSyxLQUFDLEVBQUUsTUFaVTtBQWFiaE0sS0FBQyxFQUFFLGNBYlU7QUFjYnlDLEtBQUMsRUFBRSxjQWRVO0FBZWJ6dkIsS0FBQyxFQUFFLGNBZlU7QUFnQmJtNUIsS0FBQyxFQUFFLGNBaEJVO0FBaUJiOTBCLEtBQUMsRUFBRSxRQWpCVTtBQWtCYnBFLEtBQUMsRUFBRSxjQWxCVTtBQW1CYjh4QixLQUFDLEVBQUUsY0FuQlU7QUFvQmIzQixLQUFDLEVBQUUsY0FwQlU7QUFxQmJnSixLQUFDLEVBQUUsTUFyQlU7QUFzQmIzSCxLQUFDLEVBQUUsY0F0QlU7QUF1QmI2SCxLQUFDLEVBQUU7QUF2QlUsR0FBakI7QUF5QkEsTUFBSUUsT0FBTyxHQUFHO0FBQ1Y7QUFDQVIsS0FBQyxFQUFFLFdBQVV0cUIsSUFBVixFQUFnQjtBQUFFLGFBQU9BLElBQUksQ0FBQytxQixXQUFMLEVBQVA7QUFBNEIsS0FGdkM7QUFHVjtBQUNBNUssS0FBQyxFQUFFLFdBQVVuZ0IsSUFBVixFQUFnQnlSLE1BQWhCLEVBQXdCdE8sT0FBeEIsRUFBaUM7QUFDaEMsYUFBT3NPLE1BQU0sQ0FBQ29ILFFBQVAsQ0FBZ0JDLFNBQWhCLENBQTBCZ1MsT0FBTyxDQUFDL0gsQ0FBUixDQUFVL2lCLElBQVYsRUFBZ0J5UixNQUFoQixFQUF3QnRPLE9BQXhCLENBQTFCLENBQVA7QUFDSCxLQU5TO0FBT1Y7QUFDQW9tQixLQUFDLEVBQUUsV0FBVXZwQixJQUFWLEVBQWdCeVIsTUFBaEIsRUFBd0J0TyxPQUF4QixFQUFpQztBQUNoQyxhQUFPaW1CLFVBQVUsQ0FBQzBCLE9BQU8sQ0FBQ3pILENBQVIsQ0FBVXJqQixJQUFWLEVBQWdCeVIsTUFBaEIsRUFBd0J0TyxPQUF4QixJQUFtQyxDQUFwQyxFQUF1QyxLQUF2QyxFQUE4Q3NPLE1BQTlDLENBQWpCO0FBQ0gsS0FWUztBQVdWO0FBQ0FrWSxLQUFDLEVBQUUsV0FBVTNwQixJQUFWLEVBQWdCeVIsTUFBaEIsRUFBd0J0TyxPQUF4QixFQUFpQztBQUNoQyxhQUFPa2IsR0FBRyxDQUFDeU0sT0FBTyxDQUFDL0osQ0FBUixDQUFVL2dCLElBQVYsRUFBZ0J5UixNQUFoQixFQUF3QnRPLE9BQXhCLENBQUQsQ0FBVjtBQUNILEtBZFM7QUFlVjtBQUNBc2QsS0FBQyxFQUFFLFdBQVV6Z0IsSUFBVixFQUFnQjtBQUFFLGFBQU9xZSxHQUFHLENBQUNyZSxJQUFJLENBQUM2cEIsUUFBTCxFQUFELENBQVY7QUFBOEIsS0FoQnpDO0FBaUJWO0FBQ0ExSCxLQUFDLEVBQUUsV0FBVW5pQixJQUFWLEVBQWdCeVIsTUFBaEIsRUFBd0I7QUFDdkIsYUFBT0EsTUFBTSxDQUFDMEgsT0FBUCxLQUFtQnNOLFNBQW5CLEdBQ0R6bUIsSUFBSSxDQUFDZ2xCLE9BQUwsS0FBaUJ2VCxNQUFNLENBQUMwSCxPQUFQLENBQWVuWixJQUFJLENBQUNnbEIsT0FBTCxFQUFmLENBRGhCLEdBRURobEIsSUFBSSxDQUFDZ2xCLE9BQUwsRUFGTjtBQUdILEtBdEJTO0FBdUJWO0FBQ0E0RSxLQUFDLEVBQUUsV0FBVTVwQixJQUFWLEVBQWdCeVIsTUFBaEIsRUFBd0I7QUFBRSxhQUFPQSxNQUFNLENBQUMrSCxJQUFQLENBQVl5TixHQUFHLENBQUNqbkIsSUFBSSxDQUFDNnBCLFFBQUwsS0FBa0IsRUFBbkIsQ0FBZixDQUFQO0FBQWdELEtBeEJuRTtBQXlCVjtBQUNBaEssS0FBQyxFQUFFLFdBQVU3ZixJQUFWLEVBQWdCeVIsTUFBaEIsRUFBd0I7QUFDdkIsYUFBTzJYLFVBQVUsQ0FBQ3BwQixJQUFJLENBQUNnckIsUUFBTCxFQUFELEVBQWtCLElBQWxCLEVBQXdCdlosTUFBeEIsQ0FBakI7QUFDSCxLQTVCUztBQTZCVjtBQUNBc1ksS0FBQyxFQUFFLFdBQVUvcEIsSUFBVixFQUFnQjtBQUFFLGFBQU9xZSxHQUFHLENBQUNyZSxJQUFJLENBQUNpckIsVUFBTCxFQUFELENBQVY7QUFBZ0MsS0E5QjNDO0FBK0JWO0FBQ0FoQixLQUFDLEVBQUUsV0FBVWpxQixJQUFWLEVBQWdCO0FBQUUsYUFBT0EsSUFBSSxDQUFDNmtCLE9BQUwsS0FBaUIsSUFBeEI7QUFBK0IsS0FoQzFDO0FBaUNWcEMsS0FBQyxFQUFFLFdBQVV6aUIsSUFBVixFQUFnQmtxQixDQUFoQixFQUFtQi9tQixPQUFuQixFQUE0QjtBQUMzQixhQUFPQSxPQUFPLENBQUN3aEIsT0FBUixDQUFnQjNrQixJQUFoQixDQUFQO0FBQ0gsS0FuQ1M7QUFvQ1Y7QUFDQXVmLEtBQUMsRUFBRSxXQUFVdmYsSUFBVixFQUFnQjtBQUFFLGFBQU9BLElBQUksQ0FBQ21sQixXQUFMLEVBQVA7QUFBNEIsS0FyQ3ZDO0FBc0NWO0FBQ0E3RyxLQUFDLEVBQUUsV0FBVXRlLElBQVYsRUFBZ0I7QUFBRSxhQUFPcWUsR0FBRyxDQUFDcmUsSUFBSSxDQUFDZ2xCLE9BQUwsRUFBRCxDQUFWO0FBQTZCLEtBdkN4QztBQXdDVjtBQUNBakUsS0FBQyxFQUFFLFdBQVUvZ0IsSUFBVixFQUFnQjtBQUFFLGFBQVFBLElBQUksQ0FBQzZwQixRQUFMLEtBQWtCLEVBQWxCLEdBQXVCN3BCLElBQUksQ0FBQzZwQixRQUFMLEtBQWtCLEVBQXpDLEdBQThDLEVBQXREO0FBQTRELEtBekN2RTtBQTBDVjtBQUNBdjRCLEtBQUMsRUFBRSxXQUFVME8sSUFBVixFQUFnQjtBQUFFLGFBQU9xZSxHQUFHLENBQUNyZSxJQUFJLENBQUNrckIsVUFBTCxFQUFELENBQVY7QUFBZ0MsS0EzQzNDO0FBNENWO0FBQ0FULEtBQUMsRUFBRSxXQUFVenFCLElBQVYsRUFBZ0I7QUFBRSxhQUFPQSxJQUFJLENBQUNnbEIsT0FBTCxFQUFQO0FBQXdCLEtBN0NuQztBQThDVjtBQUNBcnZCLEtBQUMsRUFBRSxXQUFVcUssSUFBVixFQUFnQnlSLE1BQWhCLEVBQXdCO0FBQ3ZCLGFBQU9BLE1BQU0sQ0FBQ29ILFFBQVAsQ0FBZ0JFLFFBQWhCLENBQXlCL1ksSUFBSSxDQUFDaWxCLE1BQUwsRUFBekIsQ0FBUDtBQUNILEtBakRTO0FBa0RWO0FBQ0ExekIsS0FBQyxFQUFFLFdBQVV5TyxJQUFWLEVBQWdCO0FBQUUsYUFBT3FlLEdBQUcsQ0FBQ3JlLElBQUksQ0FBQ2dyQixRQUFMLEtBQWtCLENBQW5CLENBQVY7QUFBa0MsS0FuRDdDO0FBb0RWO0FBQ0EzSCxLQUFDLEVBQUUsV0FBVXJqQixJQUFWLEVBQWdCO0FBQUUsYUFBT0EsSUFBSSxDQUFDZ3JCLFFBQUwsS0FBa0IsQ0FBekI7QUFBNkIsS0FyRHhDO0FBc0RWO0FBQ0F0SixLQUFDLEVBQUUsV0FBVTFoQixJQUFWLEVBQWdCO0FBQUUsYUFBT0EsSUFBSSxDQUFDaXJCLFVBQUwsRUFBUDtBQUEyQixLQXZEdEM7QUF3RFY7QUFDQVAsS0FBQyxFQUFFLFdBQVUxcUIsSUFBVixFQUFnQjtBQUFFLGFBQU9BLElBQUksQ0FBQzZrQixPQUFMLEVBQVA7QUFBd0IsS0F6RG5DO0FBMERWO0FBQ0E5QixLQUFDLEVBQUUsV0FBVS9pQixJQUFWLEVBQWdCO0FBQUUsYUFBT0EsSUFBSSxDQUFDaWxCLE1BQUwsRUFBUDtBQUF1QixLQTNEbEM7QUE0RFY7QUFDQTJGLEtBQUMsRUFBRSxXQUFVNXFCLElBQVYsRUFBZ0I7QUFBRSxhQUFPdkwsTUFBTSxDQUFDdUwsSUFBSSxDQUFDbWxCLFdBQUwsRUFBRCxDQUFOLENBQTJCdnhCLFNBQTNCLENBQXFDLENBQXJDLENBQVA7QUFBaUQ7QUE3RDVELEdBQWQ7O0FBZ0VBLE1BQUl1M0IsbUJBQW1CLEdBQUcsU0FBdEJBLG1CQUFzQixDQUFVQyxFQUFWLEVBQWM7QUFDcEMsUUFBSUMsRUFBRSxHQUFHRCxFQUFFLENBQUNFLE1BQVo7QUFBQSxRQUFvQkEsTUFBTSxHQUFHRCxFQUFFLEtBQUssS0FBSyxDQUFaLEdBQWdCNUgsUUFBaEIsR0FBMkI0SCxFQUF4RDtBQUFBLFFBQTRERSxFQUFFLEdBQUdILEVBQUUsQ0FBQ0ksSUFBcEU7QUFBQSxRQUEwRUEsSUFBSSxHQUFHRCxFQUFFLEtBQUssS0FBSyxDQUFaLEdBQWdCekUsT0FBaEIsR0FBMEJ5RSxFQUEzRztBQUNBLFdBQU8sVUFBVS9CLE9BQVYsRUFBbUJpQyxJQUFuQixFQUF5QkMsY0FBekIsRUFBeUM7QUFDNUMsVUFBSWphLE1BQU0sR0FBR2lhLGNBQWMsSUFBSUYsSUFBL0I7O0FBQ0EsVUFBSUYsTUFBTSxDQUFDelQsVUFBUCxLQUFzQjRPLFNBQTFCLEVBQXFDO0FBQ2pDLGVBQU82RSxNQUFNLENBQUN6VCxVQUFQLENBQWtCMlIsT0FBbEIsRUFBMkJpQyxJQUEzQixFQUFpQ2hhLE1BQWpDLENBQVA7QUFDSDs7QUFDRCxhQUFPZ2EsSUFBSSxDQUNOcDRCLEtBREUsQ0FDSSxFQURKLEVBRUZzNEIsR0FGRSxDQUVFLFVBQVV6UCxDQUFWLEVBQWE1cUIsQ0FBYixFQUFnQnM2QixHQUFoQixFQUFxQjtBQUMxQixlQUFPZCxPQUFPLENBQUM1TyxDQUFELENBQVAsSUFBYzBQLEdBQUcsQ0FBQ3Q2QixDQUFDLEdBQUcsQ0FBTCxDQUFILEtBQWUsSUFBN0IsR0FDRHc1QixPQUFPLENBQUM1TyxDQUFELENBQVAsQ0FBV3NOLE9BQVgsRUFBb0IvWCxNQUFwQixFQUE0QjZaLE1BQTVCLENBREMsR0FFRHBQLENBQUMsS0FBSyxJQUFOLEdBQ0lBLENBREosR0FFSSxFQUpWO0FBS0gsT0FSTSxFQVNGanBCLElBVEUsQ0FTRyxFQVRILENBQVA7QUFVSCxLQWZEO0FBZ0JILEdBbEJEOztBQW1CQSxNQUFJNDRCLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBbUIsQ0FBVVQsRUFBVixFQUFjO0FBQ2pDLFFBQUlDLEVBQUUsR0FBR0QsRUFBRSxDQUFDRSxNQUFaO0FBQUEsUUFBb0JBLE1BQU0sR0FBR0QsRUFBRSxLQUFLLEtBQUssQ0FBWixHQUFnQjVILFFBQWhCLEdBQTJCNEgsRUFBeEQ7QUFBQSxRQUE0REUsRUFBRSxHQUFHSCxFQUFFLENBQUNJLElBQXBFO0FBQUEsUUFBMEVBLElBQUksR0FBR0QsRUFBRSxLQUFLLEtBQUssQ0FBWixHQUFnQnpFLE9BQWhCLEdBQTBCeUUsRUFBM0c7QUFDQSxXQUFPLFVBQVV2ckIsSUFBVixFQUFnQjhyQixXQUFoQixFQUE2QkMsUUFBN0IsRUFBdUNDLFlBQXZDLEVBQXFEO0FBQ3hELFVBQUloc0IsSUFBSSxLQUFLLENBQVQsSUFBYyxDQUFDQSxJQUFuQixFQUNJLE9BQU95bUIsU0FBUDtBQUNKLFVBQUloVixNQUFNLEdBQUd1YSxZQUFZLElBQUlSLElBQTdCO0FBQ0EsVUFBSVMsVUFBSjtBQUNBLFVBQUlDLFFBQVEsR0FBR2xzQixJQUFmO0FBQ0EsVUFBSUEsSUFBSSxZQUFZdUIsSUFBcEIsRUFDSTBxQixVQUFVLEdBQUcsSUFBSTFxQixJQUFKLENBQVN2QixJQUFJLENBQUM2a0IsT0FBTCxFQUFULENBQWIsQ0FESixLQUVLLElBQUksT0FBTzdrQixJQUFQLEtBQWdCLFFBQWhCLElBQ0xBLElBQUksQ0FBQ21zQixPQUFMLEtBQWlCMUYsU0FEaEIsQ0FDMEI7QUFEMUIsUUFHRDtBQUNBd0Ysa0JBQVUsR0FBRyxJQUFJMXFCLElBQUosQ0FBU3ZCLElBQVQsQ0FBYixDQUpDLEtBS0EsSUFBSSxPQUFPQSxJQUFQLEtBQWdCLFFBQXBCLEVBQThCO0FBQy9CO0FBQ0EsWUFBSW9ZLE1BQU0sR0FBRzBULFdBQVcsSUFBSSxDQUFDUixNQUFNLElBQUk3SCxRQUFYLEVBQXFCak0sVUFBakQ7QUFDQSxZQUFJNFUsT0FBTyxHQUFHMzNCLE1BQU0sQ0FBQ3VMLElBQUQsQ0FBTixDQUFhcXNCLElBQWIsRUFBZDs7QUFDQSxZQUFJRCxPQUFPLEtBQUssT0FBaEIsRUFBeUI7QUFDckJILG9CQUFVLEdBQUcsSUFBSTFxQixJQUFKLEVBQWI7QUFDQXdxQixrQkFBUSxHQUFHLElBQVg7QUFDSCxTQUhELE1BSUssSUFBSSxLQUFLbDNCLElBQUwsQ0FBVXUzQixPQUFWLEtBQ0wsT0FBT3YzQixJQUFQLENBQVl1M0IsT0FBWixDQURDLENBQ29CO0FBRHBCLFVBR0RILFVBQVUsR0FBRyxJQUFJMXFCLElBQUosQ0FBU3ZCLElBQVQsQ0FBYixDQUhDLEtBSUEsSUFBSXNyQixNQUFNLElBQUlBLE1BQU0sQ0FBQ2xXLFNBQXJCLEVBQ0Q2VyxVQUFVLEdBQUdYLE1BQU0sQ0FBQ2xXLFNBQVAsQ0FBaUJwVixJQUFqQixFQUF1Qm9ZLE1BQXZCLENBQWIsQ0FEQyxLQUVBO0FBQ0Q2VCxvQkFBVSxHQUNOLENBQUNYLE1BQUQsSUFBVyxDQUFDQSxNQUFNLENBQUMvVCxVQUFuQixHQUNNLElBQUloVyxJQUFKLENBQVMsSUFBSUEsSUFBSixHQUFXNGpCLFdBQVgsRUFBVCxFQUFtQyxDQUFuQyxFQUFzQyxDQUF0QyxFQUF5QyxDQUF6QyxFQUE0QyxDQUE1QyxFQUErQyxDQUEvQyxFQUFrRCxDQUFsRCxDQUROLEdBRU0sSUFBSTVqQixJQUFKLENBQVMsSUFBSUEsSUFBSixHQUFXdWpCLFFBQVgsQ0FBb0IsQ0FBcEIsRUFBdUIsQ0FBdkIsRUFBMEIsQ0FBMUIsRUFBNkIsQ0FBN0IsQ0FBVCxDQUhWO0FBSUEsY0FBSXdILE9BQU8sR0FBRyxLQUFLLENBQW5CO0FBQUEsY0FBc0JDLEdBQUcsR0FBRyxFQUE1Qjs7QUFDQSxlQUFLLElBQUlqN0IsQ0FBQyxHQUFHLENBQVIsRUFBV2s3QixVQUFVLEdBQUcsQ0FBeEIsRUFBMkJDLFFBQVEsR0FBRyxFQUEzQyxFQUErQ243QixDQUFDLEdBQUc4bUIsTUFBTSxDQUFDcm5CLE1BQTFELEVBQWtFTyxDQUFDLEVBQW5FLEVBQXVFO0FBQ25FLGdCQUFJbzdCLE9BQU8sR0FBR3RVLE1BQU0sQ0FBQzltQixDQUFELENBQXBCO0FBQ0EsZ0JBQUlxN0IsV0FBVyxHQUFHRCxPQUFPLEtBQUssSUFBOUI7QUFDQSxnQkFBSUUsT0FBTyxHQUFHeFUsTUFBTSxDQUFDOW1CLENBQUMsR0FBRyxDQUFMLENBQU4sS0FBa0IsSUFBbEIsSUFBMEJxN0IsV0FBeEM7O0FBQ0EsZ0JBQUk5QixVQUFVLENBQUM2QixPQUFELENBQVYsSUFBdUIsQ0FBQ0UsT0FBNUIsRUFBcUM7QUFDakNILHNCQUFRLElBQUk1QixVQUFVLENBQUM2QixPQUFELENBQXRCO0FBQ0Esa0JBQUk5a0IsS0FBSyxHQUFHLElBQUlQLE1BQUosQ0FBV29sQixRQUFYLEVBQXFCSSxJQUFyQixDQUEwQjdzQixJQUExQixDQUFaOztBQUNBLGtCQUFJNEgsS0FBSyxLQUFLMGtCLE9BQU8sR0FBRyxJQUFmLENBQVQsRUFBK0I7QUFDM0JDLG1CQUFHLENBQUNHLE9BQU8sS0FBSyxHQUFaLEdBQWtCLE1BQWxCLEdBQTJCLFNBQTVCLENBQUgsQ0FBMEM7QUFDdEN4M0Isb0JBQUUsRUFBRW8wQixTQUFTLENBQUNvRCxPQUFELENBRHlCO0FBRXRDSSxxQkFBRyxFQUFFbGxCLEtBQUssQ0FBQyxFQUFFNGtCLFVBQUg7QUFGNEIsaUJBQTFDO0FBSUg7QUFDSixhQVRELE1BVUssSUFBSSxDQUFDRyxXQUFMLEVBQ0RGLFFBQVEsSUFBSSxHQUFaLENBZitELENBZTlDOzs7QUFDckJGLGVBQUcsQ0FBQ1EsT0FBSixDQUFZLFVBQVUzQixFQUFWLEVBQWM7QUFDdEIsa0JBQUlsMkIsRUFBRSxHQUFHazJCLEVBQUUsQ0FBQ2wyQixFQUFaO0FBQUEsa0JBQWdCNDNCLEdBQUcsR0FBRzFCLEVBQUUsQ0FBQzBCLEdBQXpCO0FBQ0EscUJBQVFiLFVBQVUsR0FBRy8yQixFQUFFLENBQUMrMkIsVUFBRCxFQUFhYSxHQUFiLEVBQWtCcmIsTUFBbEIsQ0FBRixJQUErQndhLFVBQXBEO0FBQ0gsYUFIRDtBQUlIOztBQUNEQSxvQkFBVSxHQUFHSyxPQUFPLEdBQUdMLFVBQUgsR0FBZ0J4RixTQUFwQztBQUNIO0FBQ0o7QUFDRDs7QUFDQSxVQUFJLEVBQUV3RixVQUFVLFlBQVkxcUIsSUFBdEIsSUFBOEIsQ0FBQzlFLEtBQUssQ0FBQ3d2QixVQUFVLENBQUNwSCxPQUFYLEVBQUQsQ0FBdEMsQ0FBSixFQUFtRTtBQUMvRHlHLGNBQU0sQ0FBQzdHLFlBQVAsQ0FBb0IsSUFBSXVJLEtBQUosQ0FBVSw0QkFBNEJkLFFBQXRDLENBQXBCO0FBQ0EsZUFBT3pGLFNBQVA7QUFDSDs7QUFDRCxVQUFJc0YsUUFBUSxLQUFLLElBQWpCLEVBQ0lFLFVBQVUsQ0FBQ25ILFFBQVgsQ0FBb0IsQ0FBcEIsRUFBdUIsQ0FBdkIsRUFBMEIsQ0FBMUIsRUFBNkIsQ0FBN0I7QUFDSixhQUFPbUgsVUFBUDtBQUNILEtBakVEO0FBa0VILEdBcEVEO0FBcUVBOzs7OztBQUdBLFdBQVNnQixZQUFULENBQXNCQyxLQUF0QixFQUE2QkMsS0FBN0IsRUFBb0NwQixRQUFwQyxFQUE4QztBQUMxQyxRQUFJQSxRQUFRLEtBQUssS0FBSyxDQUF0QixFQUF5QjtBQUFFQSxjQUFRLEdBQUcsSUFBWDtBQUFrQjs7QUFDN0MsUUFBSUEsUUFBUSxLQUFLLEtBQWpCLEVBQXdCO0FBQ3BCLGFBQVEsSUFBSXhxQixJQUFKLENBQVMyckIsS0FBSyxDQUFDckksT0FBTixFQUFULEVBQTBCQyxRQUExQixDQUFtQyxDQUFuQyxFQUFzQyxDQUF0QyxFQUF5QyxDQUF6QyxFQUE0QyxDQUE1QyxJQUNKLElBQUl2akIsSUFBSixDQUFTNHJCLEtBQUssQ0FBQ3RJLE9BQU4sRUFBVCxFQUEwQkMsUUFBMUIsQ0FBbUMsQ0FBbkMsRUFBc0MsQ0FBdEMsRUFBeUMsQ0FBekMsRUFBNEMsQ0FBNUMsQ0FESjtBQUVIOztBQUNELFdBQU9vSSxLQUFLLENBQUNySSxPQUFOLEtBQWtCc0ksS0FBSyxDQUFDdEksT0FBTixFQUF6QjtBQUNIOztBQUNELE1BQUl1SSxTQUFTLEdBQUcsU0FBWkEsU0FBWSxDQUFVQyxFQUFWLEVBQWNDLEdBQWQsRUFBbUJDLEdBQW5CLEVBQXdCO0FBQ3BDLFdBQU9GLEVBQUUsR0FBRzk1QixJQUFJLENBQUM0UixHQUFMLENBQVNtb0IsR0FBVCxFQUFjQyxHQUFkLENBQUwsSUFBMkJGLEVBQUUsR0FBRzk1QixJQUFJLENBQUM2UixHQUFMLENBQVNrb0IsR0FBVCxFQUFjQyxHQUFkLENBQXZDO0FBQ0gsR0FGRDs7QUFHQSxNQUFJQyxRQUFRLEdBQUc7QUFDWEMsT0FBRyxFQUFFO0FBRE0sR0FBZjs7QUFJQSxNQUFJLE9BQU96NEIsTUFBTSxDQUFDbXVCLE1BQWQsS0FBeUIsVUFBN0IsRUFBeUM7QUFDckNudUIsVUFBTSxDQUFDbXVCLE1BQVAsR0FBZ0IsVUFBVWh0QixNQUFWLEVBQWtCO0FBQzlCLFVBQUlPLElBQUksR0FBRyxFQUFYOztBQUNBLFdBQUssSUFBSWczQixFQUFFLEdBQUcsQ0FBZCxFQUFpQkEsRUFBRSxHQUFHcmpCLFNBQVMsQ0FBQ3RaLE1BQWhDLEVBQXdDMjhCLEVBQUUsRUFBMUMsRUFBOEM7QUFDMUNoM0IsWUFBSSxDQUFDZzNCLEVBQUUsR0FBRyxDQUFOLENBQUosR0FBZXJqQixTQUFTLENBQUNxakIsRUFBRCxDQUF4QjtBQUNIOztBQUNELFVBQUksQ0FBQ3YzQixNQUFMLEVBQWE7QUFDVCxjQUFNdzNCLFNBQVMsQ0FBQyw0Q0FBRCxDQUFmO0FBQ0g7O0FBQ0QsVUFBSUMsT0FBTyxHQUFHLFNBQVZBLE9BQVUsQ0FBVXptQixNQUFWLEVBQWtCO0FBQzVCLFlBQUlBLE1BQUosRUFBWTtBQUNSblMsZ0JBQU0sQ0FBQ1MsSUFBUCxDQUFZMFIsTUFBWixFQUFvQjRsQixPQUFwQixDQUE0QixVQUFVbjNCLEdBQVYsRUFBZTtBQUFFLG1CQUFRTyxNQUFNLENBQUNQLEdBQUQsQ0FBTixHQUFjdVIsTUFBTSxDQUFDdlIsR0FBRCxDQUE1QjtBQUFxQyxXQUFsRjtBQUNIO0FBQ0osT0FKRDs7QUFLQSxXQUFLLElBQUl3MUIsRUFBRSxHQUFHLENBQVQsRUFBWXlDLE1BQU0sR0FBR24zQixJQUExQixFQUFnQzAwQixFQUFFLEdBQUd5QyxNQUFNLENBQUM5OEIsTUFBNUMsRUFBb0RxNkIsRUFBRSxFQUF0RCxFQUEwRDtBQUN0RCxZQUFJamtCLE1BQU0sR0FBRzBtQixNQUFNLENBQUN6QyxFQUFELENBQW5COztBQUNBd0MsZUFBTyxDQUFDem1CLE1BQUQsQ0FBUDtBQUNIOztBQUNELGFBQU9oUixNQUFQO0FBQ0gsS0FsQkQ7QUFtQkg7O0FBRUQsTUFBSTIzQixtQkFBbUIsR0FBRyxHQUExQjs7QUFDQSxXQUFTQyxpQkFBVCxDQUEyQkMsT0FBM0IsRUFBb0NDLGNBQXBDLEVBQW9EO0FBQ2hELFFBQUlseUIsSUFBSSxHQUFHO0FBQ1B1dkIsWUFBTSxFQUFFcEksT0FBUSxDQUFDLEVBQUQsRUFBS08sUUFBTCxFQUFlaE0sU0FBUyxDQUFDeVcsYUFBekIsQ0FEVDtBQUVQMUMsVUFBSSxFQUFFMUU7QUFGQyxLQUFYO0FBSUEvcUIsUUFBSSxDQUFDcVosU0FBTCxHQUFpQnlXLGdCQUFnQixDQUFDO0FBQUVQLFlBQU0sRUFBRXZ2QixJQUFJLENBQUN1dkIsTUFBZjtBQUF1QkUsVUFBSSxFQUFFenZCLElBQUksQ0FBQ3l2QjtBQUFsQyxLQUFELENBQWpDO0FBQ0F6dkIsUUFBSSxDQUFDb3lCLFNBQUwsR0FBaUIsRUFBakI7QUFDQXB5QixRQUFJLENBQUNxeUIsY0FBTCxHQUFzQixFQUF0QjtBQUNBcnlCLFFBQUksQ0FBQ3N5QixhQUFMLEdBQXFCLEVBQXJCO0FBQ0F0eUIsUUFBSSxDQUFDdXlCLEtBQUwsR0FBYWo1QixJQUFiO0FBQ0EwRyxRQUFJLENBQUN3eUIsaUJBQUwsR0FBeUJDLGdCQUF6QjtBQUNBenlCLFFBQUksQ0FBQzB5QixpQkFBTCxHQUF5QkMsZ0JBQXpCO0FBQ0EzeUIsUUFBSSxDQUFDNHlCLFdBQUwsR0FBbUJBLFdBQW5CO0FBQ0E1eUIsUUFBSSxDQUFDNnlCLFVBQUwsR0FBa0JBLFVBQWxCO0FBQ0E3eUIsUUFBSSxDQUFDOHlCLEtBQUwsR0FBYUEsS0FBYjtBQUNBOXlCLFFBQUksQ0FBQyt5QixLQUFMLEdBQWFBLEtBQWI7QUFDQS95QixRQUFJLENBQUNnekIsY0FBTCxHQUFzQmhILGFBQXRCO0FBQ0Foc0IsUUFBSSxDQUFDaXpCLE9BQUwsR0FBZUEsT0FBZjtBQUNBanpCLFFBQUksQ0FBQ2t6QixTQUFMLEdBQWlCQSxTQUFqQjtBQUNBbHpCLFFBQUksQ0FBQ216QixVQUFMLEdBQWtCQSxVQUFsQjtBQUNBbnpCLFFBQUksQ0FBQ296QixJQUFMLEdBQVlBLElBQVo7QUFDQXB6QixRQUFJLENBQUNxekIsTUFBTCxHQUFjQSxNQUFkO0FBQ0FyekIsUUFBSSxDQUFDdkYsR0FBTCxHQUFXQSxHQUFYO0FBQ0F1RixRQUFJLENBQUNncEIsT0FBTCxHQUFlQSxPQUFmO0FBQ0FocEIsUUFBSSxDQUFDc3pCLE1BQUwsR0FBY0EsTUFBZDs7QUFDQSxhQUFTQyxvQkFBVCxHQUFnQztBQUM1QnZ6QixVQUFJLENBQUN3ekIsS0FBTCxHQUFhO0FBQ1RDLHNCQUFjLEVBQUUsd0JBQVVoZCxLQUFWLEVBQWlCaWQsRUFBakIsRUFBcUI7QUFDakMsY0FBSWpkLEtBQUssS0FBSyxLQUFLLENBQW5CLEVBQXNCO0FBQUVBLGlCQUFLLEdBQUd6VyxJQUFJLENBQUMyekIsWUFBYjtBQUE0Qjs7QUFDcEQsY0FBSUQsRUFBRSxLQUFLLEtBQUssQ0FBaEIsRUFBbUI7QUFBRUEsY0FBRSxHQUFHMXpCLElBQUksQ0FBQzR6QixXQUFWO0FBQXdCOztBQUM3QyxjQUFJbmQsS0FBSyxLQUFLLENBQVYsS0FBaUJpZCxFQUFFLEdBQUcsQ0FBTCxLQUFXLENBQVgsSUFBZ0JBLEVBQUUsR0FBRyxHQUFMLEtBQWEsQ0FBOUIsSUFBb0NBLEVBQUUsR0FBRyxHQUFMLEtBQWEsQ0FBakUsQ0FBSixFQUNJLE9BQU8sRUFBUDtBQUNKLGlCQUFPMXpCLElBQUksQ0FBQ3l2QixJQUFMLENBQVV2UyxXQUFWLENBQXNCekcsS0FBdEIsQ0FBUDtBQUNIO0FBUFEsT0FBYjtBQVNIOztBQUNELGFBQVNvZCxJQUFULEdBQWdCO0FBQ1o3ekIsVUFBSSxDQUFDaXlCLE9BQUwsR0FBZWp5QixJQUFJLENBQUM0SixLQUFMLEdBQWFxb0IsT0FBNUI7QUFDQWp5QixVQUFJLENBQUM4ekIsTUFBTCxHQUFjLEtBQWQ7QUFDQUMsaUJBQVc7QUFDWEMsaUJBQVc7QUFDWEMsaUJBQVc7QUFDWEMsZ0JBQVU7QUFDVlgsMEJBQW9CO0FBQ3BCLFVBQUksQ0FBQ3Z6QixJQUFJLENBQUNtMEIsUUFBVixFQUNJQyxLQUFLO0FBQ1RDLGdCQUFVOztBQUNWLFVBQUlyMEIsSUFBSSxDQUFDd2MsYUFBTCxDQUFtQnhuQixNQUFuQixJQUE2QmdMLElBQUksQ0FBQ3V2QixNQUFMLENBQVkvVCxVQUE3QyxFQUF5RDtBQUNyRCxZQUFJeGIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXBhLFVBQWhCLEVBQTRCO0FBQ3hCc2QsMEJBQWdCLENBQUN6eUIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWS9ULFVBQVosR0FDWHhiLElBQUksQ0FBQ3MwQixxQkFBTCxJQUE4QnQwQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZdlQsT0FEL0IsR0FFWDBPLFNBRlUsQ0FBaEI7QUFHSDs7QUFDRDZKLG1CQUFXLENBQUMsS0FBRCxDQUFYO0FBQ0g7O0FBQ0RDLHNCQUFnQjtBQUNoQngwQixVQUFJLENBQUN5MEIsYUFBTCxHQUNJejBCLElBQUksQ0FBQ3djLGFBQUwsQ0FBbUJ4bkIsTUFBbkIsR0FBNEIsQ0FBNUIsSUFBaUNnTCxJQUFJLENBQUN1dkIsTUFBTCxDQUFZL1QsVUFEakQ7QUFFQSxVQUFJa1osUUFBUSxHQUFHLGlDQUFpQzU3QixJQUFqQyxDQUFzQ212QixTQUFTLENBQUNDLFNBQWhELENBQWY7QUFDQTs7Ozs7OztBQVFBLFVBQUksQ0FBQ2xvQixJQUFJLENBQUNtMEIsUUFBTixJQUFrQk8sUUFBdEIsRUFBZ0M7QUFDNUIvQix3QkFBZ0I7QUFDbkI7O0FBQ0RnQyxrQkFBWSxDQUFDLFNBQUQsQ0FBWjtBQUNIOztBQUNELGFBQVNDLGNBQVQsQ0FBd0J6N0IsRUFBeEIsRUFBNEI7QUFDeEIsYUFBT0EsRUFBRSxDQUFDRyxJQUFILENBQVEwRyxJQUFSLENBQVA7QUFDSDs7QUFDRCxhQUFTdzBCLGdCQUFULEdBQTRCO0FBQ3hCLFVBQUlqRixNQUFNLEdBQUd2dkIsSUFBSSxDQUFDdXZCLE1BQWxCO0FBQ0EsVUFBSUEsTUFBTSxDQUFDblQsV0FBUCxLQUF1QixLQUF2QixJQUFnQ21ULE1BQU0sQ0FBQzFFLFVBQVAsS0FBc0IsQ0FBMUQsRUFDSSxPQURKLEtBRUssSUFBSTBFLE1BQU0sQ0FBQy9ULFVBQVAsS0FBc0IsSUFBMUIsRUFBZ0M7QUFDakNuVSxjQUFNLENBQUN3dEIscUJBQVAsQ0FBNkIsWUFBWTtBQUNyQyxjQUFJNzBCLElBQUksQ0FBQzgwQixpQkFBTCxLQUEyQnBLLFNBQS9CLEVBQTBDO0FBQ3RDMXFCLGdCQUFJLENBQUM4MEIsaUJBQUwsQ0FBdUJDLEtBQXZCLENBQTZCQyxVQUE3QixHQUEwQyxRQUExQztBQUNBaDFCLGdCQUFJLENBQUM4MEIsaUJBQUwsQ0FBdUJDLEtBQXZCLENBQTZCRSxPQUE3QixHQUF1QyxPQUF2QztBQUNIOztBQUNELGNBQUlqMUIsSUFBSSxDQUFDazFCLGFBQUwsS0FBdUJ4SyxTQUEzQixFQUFzQztBQUNsQyxnQkFBSXlLLFNBQVMsR0FBRyxDQUFDbjFCLElBQUksQ0FBQ28xQixJQUFMLENBQVVDLFdBQVYsR0FBd0IsQ0FBekIsSUFBOEI5RixNQUFNLENBQUMxRSxVQUFyRDtBQUNBN3FCLGdCQUFJLENBQUNrMUIsYUFBTCxDQUFtQkgsS0FBbkIsQ0FBeUJPLEtBQXpCLEdBQWlDSCxTQUFTLEdBQUcsSUFBN0M7QUFDQW4xQixnQkFBSSxDQUFDODBCLGlCQUFMLENBQXVCQyxLQUF2QixDQUE2Qk8sS0FBN0IsR0FDSUgsU0FBUyxJQUNKbjFCLElBQUksQ0FBQ3UxQixXQUFMLEtBQXFCN0ssU0FBckIsR0FDSzFxQixJQUFJLENBQUN1MUIsV0FBTCxDQUFpQkYsV0FEdEIsR0FFSyxDQUhELENBQVQsR0FJSSxJQUxSO0FBTUFyMUIsZ0JBQUksQ0FBQzgwQixpQkFBTCxDQUF1QkMsS0FBdkIsQ0FBNkJTLGNBQTdCLENBQTRDLFlBQTVDO0FBQ0F4MUIsZ0JBQUksQ0FBQzgwQixpQkFBTCxDQUF1QkMsS0FBdkIsQ0FBNkJTLGNBQTdCLENBQTRDLFNBQTVDO0FBQ0g7QUFDSixTQWpCRDtBQWtCSDtBQUNKO0FBQ0Q7Ozs7O0FBR0EsYUFBU0MsVUFBVCxDQUFvQjF1QixDQUFwQixFQUF1QjtBQUNuQixVQUFJL0csSUFBSSxDQUFDd2MsYUFBTCxDQUFtQnhuQixNQUFuQixLQUE4QixDQUFsQyxFQUFxQztBQUNqQzBnQyxzQkFBYztBQUNqQjs7QUFDRCxVQUFJM3VCLENBQUMsS0FBSzJqQixTQUFOLElBQW1CM2pCLENBQUMsQ0FBQ25ILElBQUYsS0FBVyxNQUFsQyxFQUEwQztBQUN0QysxQixtQkFBVyxDQUFDNXVCLENBQUQsQ0FBWDtBQUNIOztBQUNELFVBQUk2dUIsU0FBUyxHQUFHNTFCLElBQUksQ0FBQytkLE1BQUwsQ0FBWS9qQixLQUE1QjtBQUNBNjdCLHdCQUFrQjtBQUNsQnRCLGlCQUFXOztBQUNYLFVBQUl2MEIsSUFBSSxDQUFDK2QsTUFBTCxDQUFZL2pCLEtBQVosS0FBc0I0N0IsU0FBMUIsRUFBcUM7QUFDakM1MUIsWUFBSSxDQUFDODFCLGdCQUFMO0FBQ0g7QUFDSjs7QUFDRCxhQUFTQyxhQUFULENBQXVCcGYsSUFBdkIsRUFBNkI4RyxJQUE3QixFQUFtQztBQUMvQixhQUFROUcsSUFBSSxHQUFHLEVBQVIsR0FBYyxLQUFLdVUsR0FBRyxDQUFDek4sSUFBSSxLQUFLemQsSUFBSSxDQUFDeXZCLElBQUwsQ0FBVWhTLElBQVYsQ0FBZSxDQUFmLENBQVYsQ0FBN0I7QUFDSDs7QUFDRCxhQUFTdVksYUFBVCxDQUF1QnJmLElBQXZCLEVBQTZCO0FBQ3pCLGNBQVFBLElBQUksR0FBRyxFQUFmO0FBQ0ksYUFBSyxDQUFMO0FBQ0EsYUFBSyxFQUFMO0FBQ0ksaUJBQU8sRUFBUDs7QUFDSjtBQUNJLGlCQUFPQSxJQUFJLEdBQUcsRUFBZDtBQUxSO0FBT0g7QUFDRDs7Ozs7QUFHQSxhQUFTa2Ysa0JBQVQsR0FBOEI7QUFDMUIsVUFBSTcxQixJQUFJLENBQUNpMkIsV0FBTCxLQUFxQnZMLFNBQXJCLElBQWtDMXFCLElBQUksQ0FBQ2syQixhQUFMLEtBQXVCeEwsU0FBN0QsRUFDSTtBQUNKLFVBQUkxbEIsS0FBSyxHQUFHLENBQUNDLFFBQVEsQ0FBQ2pGLElBQUksQ0FBQ2kyQixXQUFMLENBQWlCajhCLEtBQWpCLENBQXVCaXhCLEtBQXZCLENBQTZCLENBQUMsQ0FBOUIsQ0FBRCxFQUFtQyxFQUFuQyxDQUFSLElBQWtELENBQW5ELElBQXdELEVBQXBFO0FBQUEsVUFBd0U3bEIsT0FBTyxHQUFHLENBQUNILFFBQVEsQ0FBQ2pGLElBQUksQ0FBQ2syQixhQUFMLENBQW1CbDhCLEtBQXBCLEVBQTJCLEVBQTNCLENBQVIsSUFBMEMsQ0FBM0MsSUFBZ0QsRUFBbEk7QUFBQSxVQUFzSXdnQixPQUFPLEdBQUd4YSxJQUFJLENBQUNtMkIsYUFBTCxLQUF1QnpMLFNBQXZCLEdBQzFJLENBQUN6bEIsUUFBUSxDQUFDakYsSUFBSSxDQUFDbTJCLGFBQUwsQ0FBbUJuOEIsS0FBcEIsRUFBMkIsRUFBM0IsQ0FBUixJQUEwQyxDQUEzQyxJQUFnRCxFQUQwRixHQUUxSSxDQUZOOztBQUdBLFVBQUlnRyxJQUFJLENBQUN5ZCxJQUFMLEtBQWNpTixTQUFsQixFQUE2QjtBQUN6QjFsQixhQUFLLEdBQUcrd0IsYUFBYSxDQUFDL3dCLEtBQUQsRUFBUWhGLElBQUksQ0FBQ3lkLElBQUwsQ0FBVXdPLFdBQWxCLENBQXJCO0FBQ0g7O0FBQ0QsVUFBSW1LLGFBQWEsR0FBR3AyQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZOEcsT0FBWixLQUF3QjNMLFNBQXhCLElBQ2YxcUIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXZULE9BQVosSUFDR2hjLElBQUksQ0FBQ3MyQixjQURSLElBRUd0MkIsSUFBSSxDQUFDczBCLHFCQUZSLElBR0dwRCxZQUFZLENBQUNseEIsSUFBSSxDQUFDczBCLHFCQUFOLEVBQTZCdDBCLElBQUksQ0FBQ3V2QixNQUFMLENBQVl2VCxPQUF6QyxFQUFrRCxJQUFsRCxDQUFaLEtBQ0ksQ0FMWjtBQU1BLFVBQUl1YSxhQUFhLEdBQUd2MkIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWWlILE9BQVosS0FBd0I5TCxTQUF4QixJQUNmMXFCLElBQUksQ0FBQ3V2QixNQUFMLENBQVl4VCxPQUFaLElBQ0cvYixJQUFJLENBQUN5MkIsY0FEUixJQUVHejJCLElBQUksQ0FBQ3MwQixxQkFGUixJQUdHcEQsWUFBWSxDQUFDbHhCLElBQUksQ0FBQ3MwQixxQkFBTixFQUE2QnQwQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZeFQsT0FBekMsRUFBa0QsSUFBbEQsQ0FBWixLQUNJLENBTFo7O0FBTUEsVUFBSXdhLGFBQUosRUFBbUI7QUFDZixZQUFJQyxPQUFPLEdBQUd4MkIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWWlILE9BQVosS0FBd0I5TCxTQUF4QixHQUNSMXFCLElBQUksQ0FBQ3V2QixNQUFMLENBQVlpSCxPQURKLEdBRVJ4MkIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXhULE9BRmxCO0FBR0EvVyxhQUFLLEdBQUd4TixJQUFJLENBQUM0UixHQUFMLENBQVNwRSxLQUFULEVBQWdCd3hCLE9BQU8sQ0FBQzFJLFFBQVIsRUFBaEIsQ0FBUjtBQUNBLFlBQUk5b0IsS0FBSyxLQUFLd3hCLE9BQU8sQ0FBQzFJLFFBQVIsRUFBZCxFQUNJMW9CLE9BQU8sR0FBRzVOLElBQUksQ0FBQzRSLEdBQUwsQ0FBU2hFLE9BQVQsRUFBa0JveEIsT0FBTyxDQUFDckgsVUFBUixFQUFsQixDQUFWO0FBQ0osWUFBSS9wQixPQUFPLEtBQUtveEIsT0FBTyxDQUFDckgsVUFBUixFQUFoQixFQUNJM1UsT0FBTyxHQUFHaGpCLElBQUksQ0FBQzRSLEdBQUwsQ0FBU29SLE9BQVQsRUFBa0JnYyxPQUFPLENBQUN0SCxVQUFSLEVBQWxCLENBQVY7QUFDUDs7QUFDRCxVQUFJa0gsYUFBSixFQUFtQjtBQUNmLFlBQUlDLE9BQU8sR0FBR3IyQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZOEcsT0FBWixLQUF3QjNMLFNBQXhCLEdBQ1IxcUIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWThHLE9BREosR0FFUnIyQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZdlQsT0FGbEI7QUFHQWhYLGFBQUssR0FBR3hOLElBQUksQ0FBQzZSLEdBQUwsQ0FBU3JFLEtBQVQsRUFBZ0JxeEIsT0FBTyxDQUFDdkksUUFBUixFQUFoQixDQUFSO0FBQ0EsWUFBSTlvQixLQUFLLEtBQUtxeEIsT0FBTyxDQUFDdkksUUFBUixFQUFkLEVBQ0kxb0IsT0FBTyxHQUFHNU4sSUFBSSxDQUFDNlIsR0FBTCxDQUFTakUsT0FBVCxFQUFrQml4QixPQUFPLENBQUNsSCxVQUFSLEVBQWxCLENBQVY7QUFDSixZQUFJL3BCLE9BQU8sS0FBS2l4QixPQUFPLENBQUNsSCxVQUFSLEVBQWhCLEVBQ0kzVSxPQUFPLEdBQUdoakIsSUFBSSxDQUFDNlIsR0FBTCxDQUFTbVIsT0FBVCxFQUFrQjZiLE9BQU8sQ0FBQ25ILFVBQVIsRUFBbEIsQ0FBVjtBQUNQOztBQUNEbkcsY0FBUSxDQUFDL2pCLEtBQUQsRUFBUUksT0FBUixFQUFpQm9WLE9BQWpCLENBQVI7QUFDSDtBQUNEOzs7OztBQUdBLGFBQVNpWSxnQkFBVCxDQUEwQmhGLE9BQTFCLEVBQW1DO0FBQy9CLFVBQUl4cEIsSUFBSSxHQUFHd3BCLE9BQU8sSUFBSXp0QixJQUFJLENBQUNzMEIscUJBQTNCO0FBQ0EsVUFBSXJ3QixJQUFKLEVBQ0k4a0IsUUFBUSxDQUFDOWtCLElBQUksQ0FBQzZwQixRQUFMLEVBQUQsRUFBa0I3cEIsSUFBSSxDQUFDa3JCLFVBQUwsRUFBbEIsRUFBcUNsckIsSUFBSSxDQUFDaXJCLFVBQUwsRUFBckMsQ0FBUjtBQUNQOztBQUNELGFBQVN3SCxlQUFULEdBQTJCO0FBQ3ZCLFVBQUkxeEIsS0FBSyxHQUFHaEYsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXRULFdBQXhCO0FBQ0EsVUFBSTdXLE9BQU8sR0FBR3BGLElBQUksQ0FBQ3V2QixNQUFMLENBQVlyVCxhQUExQjtBQUNBLFVBQUkxQixPQUFPLEdBQUd4YSxJQUFJLENBQUN1dkIsTUFBTCxDQUFZaEgsY0FBMUI7O0FBQ0EsVUFBSXZvQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZdlQsT0FBWixLQUF3QjBPLFNBQTVCLEVBQXVDO0FBQ25DLFlBQUlpTSxLQUFLLEdBQUczMkIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXZULE9BQVosQ0FBb0I4UixRQUFwQixFQUFaO0FBQ0EsWUFBSThJLFVBQVUsR0FBRzUyQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZdlQsT0FBWixDQUFvQm1ULFVBQXBCLEVBQWpCO0FBQ0FucUIsYUFBSyxHQUFHeE4sSUFBSSxDQUFDNlIsR0FBTCxDQUFTckUsS0FBVCxFQUFnQjJ4QixLQUFoQixDQUFSO0FBQ0EsWUFBSTN4QixLQUFLLEtBQUsyeEIsS0FBZCxFQUNJdnhCLE9BQU8sR0FBRzVOLElBQUksQ0FBQzZSLEdBQUwsQ0FBU3V0QixVQUFULEVBQXFCeHhCLE9BQXJCLENBQVY7QUFDSixZQUFJSixLQUFLLEtBQUsyeEIsS0FBVixJQUFtQnZ4QixPQUFPLEtBQUt3eEIsVUFBbkMsRUFDSXBjLE9BQU8sR0FBR3hhLElBQUksQ0FBQ3V2QixNQUFMLENBQVl2VCxPQUFaLENBQW9Ca1QsVUFBcEIsRUFBVjtBQUNQOztBQUNELFVBQUlsdkIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXhULE9BQVosS0FBd0IyTyxTQUE1QixFQUF1QztBQUNuQyxZQUFJbU0sS0FBSyxHQUFHNzJCLElBQUksQ0FBQ3V2QixNQUFMLENBQVl4VCxPQUFaLENBQW9CK1IsUUFBcEIsRUFBWjtBQUNBLFlBQUlnSixVQUFVLEdBQUc5MkIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXhULE9BQVosQ0FBb0JvVCxVQUFwQixFQUFqQjtBQUNBbnFCLGFBQUssR0FBR3hOLElBQUksQ0FBQzRSLEdBQUwsQ0FBU3BFLEtBQVQsRUFBZ0I2eEIsS0FBaEIsQ0FBUjtBQUNBLFlBQUk3eEIsS0FBSyxLQUFLNnhCLEtBQWQsRUFDSXp4QixPQUFPLEdBQUc1TixJQUFJLENBQUM0UixHQUFMLENBQVMwdEIsVUFBVCxFQUFxQjF4QixPQUFyQixDQUFWO0FBQ0osWUFBSUosS0FBSyxLQUFLNnhCLEtBQVYsSUFBbUJ6eEIsT0FBTyxLQUFLMHhCLFVBQW5DLEVBQ0l0YyxPQUFPLEdBQUd4YSxJQUFJLENBQUN1dkIsTUFBTCxDQUFZeFQsT0FBWixDQUFvQm1ULFVBQXBCLEVBQVY7QUFDUDs7QUFDRG5HLGNBQVEsQ0FBQy9qQixLQUFELEVBQVFJLE9BQVIsRUFBaUJvVixPQUFqQixDQUFSO0FBQ0g7QUFDRDs7Ozs7Ozs7Ozs7QUFTQSxhQUFTdU8sUUFBVCxDQUFrQi9qQixLQUFsQixFQUF5QkksT0FBekIsRUFBa0NvVixPQUFsQyxFQUEyQztBQUN2QyxVQUFJeGEsSUFBSSxDQUFDczBCLHFCQUFMLEtBQStCNUosU0FBbkMsRUFBOEM7QUFDMUMxcUIsWUFBSSxDQUFDczBCLHFCQUFMLENBQTJCdkwsUUFBM0IsQ0FBb0MvakIsS0FBSyxHQUFHLEVBQTVDLEVBQWdESSxPQUFoRCxFQUF5RG9WLE9BQU8sSUFBSSxDQUFwRSxFQUF1RSxDQUF2RTtBQUNIOztBQUNELFVBQUksQ0FBQ3hhLElBQUksQ0FBQ2kyQixXQUFOLElBQXFCLENBQUNqMkIsSUFBSSxDQUFDazJCLGFBQTNCLElBQTRDbDJCLElBQUksQ0FBQ20wQixRQUFyRCxFQUNJO0FBQ0puMEIsVUFBSSxDQUFDaTJCLFdBQUwsQ0FBaUJqOEIsS0FBakIsR0FBeUJzb0IsR0FBRyxDQUFDLENBQUN0aUIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWWpVLFNBQWIsR0FDdEIsQ0FBQyxLQUFLdFcsS0FBTixJQUFlLEVBQWhCLEdBQXNCLEtBQUtrbUIsR0FBRyxDQUFDbG1CLEtBQUssR0FBRyxFQUFSLEtBQWUsQ0FBaEIsQ0FEUCxHQUV2QkEsS0FGc0IsQ0FBNUI7QUFHQWhGLFVBQUksQ0FBQ2syQixhQUFMLENBQW1CbDhCLEtBQW5CLEdBQTJCc29CLEdBQUcsQ0FBQ2xkLE9BQUQsQ0FBOUI7QUFDQSxVQUFJcEYsSUFBSSxDQUFDeWQsSUFBTCxLQUFjaU4sU0FBbEIsRUFDSTFxQixJQUFJLENBQUN5ZCxJQUFMLENBQVV3TyxXQUFWLEdBQXdCanNCLElBQUksQ0FBQ3l2QixJQUFMLENBQVVoUyxJQUFWLENBQWV5TixHQUFHLENBQUNsbUIsS0FBSyxJQUFJLEVBQVYsQ0FBbEIsQ0FBeEI7QUFDSixVQUFJaEYsSUFBSSxDQUFDbTJCLGFBQUwsS0FBdUJ6TCxTQUEzQixFQUNJMXFCLElBQUksQ0FBQ20yQixhQUFMLENBQW1CbjhCLEtBQW5CLEdBQTJCc29CLEdBQUcsQ0FBQzlILE9BQUQsQ0FBOUI7QUFDUDtBQUNEOzs7Ozs7QUFJQSxhQUFTdWMsV0FBVCxDQUFxQmp0QixLQUFyQixFQUE0QjtBQUN4QixVQUFJME0sSUFBSSxHQUFHdlIsUUFBUSxDQUFDNkUsS0FBSyxDQUFDMVAsTUFBTixDQUFhSixLQUFkLENBQVIsSUFBZ0M4UCxLQUFLLENBQUNrdEIsS0FBTixJQUFlLENBQS9DLENBQVg7O0FBQ0EsVUFBSXhnQixJQUFJLEdBQUcsSUFBUCxHQUFjLENBQWQsSUFDQzFNLEtBQUssQ0FBQ2pRLEdBQU4sS0FBYyxPQUFkLElBQXlCLENBQUMsUUFBUWYsSUFBUixDQUFhMGQsSUFBSSxDQUFDdmdCLFFBQUwsRUFBYixDQUQvQixFQUMrRDtBQUMzRDQ4QixrQkFBVSxDQUFDcmMsSUFBRCxDQUFWO0FBQ0g7QUFDSjtBQUNEOzs7Ozs7OztBQU1BLGFBQVNsZCxJQUFULENBQWMyNEIsT0FBZCxFQUF1Qm5vQixLQUF2QixFQUE4QnFSLE9BQTlCLEVBQXVDL1QsT0FBdkMsRUFBZ0Q7QUFDNUMsVUFBSTBDLEtBQUssWUFBWTlTLEtBQXJCLEVBQ0ksT0FBTzhTLEtBQUssQ0FBQ2tuQixPQUFOLENBQWMsVUFBVWlHLEVBQVYsRUFBYztBQUFFLGVBQU8zOUIsSUFBSSxDQUFDMjRCLE9BQUQsRUFBVWdGLEVBQVYsRUFBYzliLE9BQWQsRUFBdUIvVCxPQUF2QixDQUFYO0FBQTZDLE9BQTNFLENBQVA7QUFDSixVQUFJNnFCLE9BQU8sWUFBWWo3QixLQUF2QixFQUNJLE9BQU9pN0IsT0FBTyxDQUFDakIsT0FBUixDQUFnQixVQUFVbGQsRUFBVixFQUFjO0FBQUUsZUFBT3hhLElBQUksQ0FBQ3dhLEVBQUQsRUFBS2hLLEtBQUwsRUFBWXFSLE9BQVosRUFBcUIvVCxPQUFyQixDQUFYO0FBQTJDLE9BQTNFLENBQVA7QUFDSjZxQixhQUFPLENBQUNpRixnQkFBUixDQUF5QnB0QixLQUF6QixFQUFnQ3FSLE9BQWhDLEVBQXlDL1QsT0FBekM7O0FBQ0FwSCxVQUFJLENBQUNveUIsU0FBTCxDQUFlK0UsSUFBZixDQUFvQjtBQUNoQmxGLGVBQU8sRUFBRUEsT0FETztBQUVoQm5vQixhQUFLLEVBQUVBLEtBRlM7QUFHaEJxUixlQUFPLEVBQUVBLE9BSE87QUFJaEIvVCxlQUFPLEVBQUVBO0FBSk8sT0FBcEI7QUFNSDtBQUNEOzs7Ozs7Ozs7QUFPQSxhQUFTZ3dCLE9BQVQsQ0FBaUJqYyxPQUFqQixFQUEwQjtBQUN0QixhQUFPLFVBQVV0SCxHQUFWLEVBQWU7QUFDbEJBLFdBQUcsQ0FBQ3dqQixLQUFKLEtBQWMsQ0FBZCxJQUFtQmxjLE9BQU8sQ0FBQ3RILEdBQUQsQ0FBMUI7QUFDSCxPQUZEO0FBR0g7O0FBQ0QsYUFBU3lqQixhQUFULEdBQXlCO0FBQ3JCM0Msa0JBQVksQ0FBQyxVQUFELENBQVo7QUFDSDtBQUNEOzs7OztBQUdBLGFBQVNOLFVBQVQsR0FBc0I7QUFDbEIsVUFBSXIwQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZNVQsSUFBaEIsRUFBc0I7QUFDbEIsU0FBQyxNQUFELEVBQVMsT0FBVCxFQUFrQixRQUFsQixFQUE0QixPQUE1QixFQUFxQ3FWLE9BQXJDLENBQTZDLFVBQVVuZCxHQUFWLEVBQWU7QUFDeEQ3YyxlQUFLLENBQUN1d0IsU0FBTixDQUFnQnlKLE9BQWhCLENBQXdCeEosSUFBeEIsQ0FBNkJ4bkIsSUFBSSxDQUFDaXlCLE9BQUwsQ0FBYXNGLGdCQUFiLENBQThCLFdBQVcxakIsR0FBWCxHQUFpQixHQUEvQyxDQUE3QixFQUFrRixVQUFVQyxFQUFWLEVBQWM7QUFDNUYsbUJBQU94YSxJQUFJLENBQUN3YSxFQUFELEVBQUssT0FBTCxFQUFjOVQsSUFBSSxDQUFDNlQsR0FBRCxDQUFsQixDQUFYO0FBQ0gsV0FGRDtBQUdILFNBSkQ7QUFLSDs7QUFDRCxVQUFJN1QsSUFBSSxDQUFDbTBCLFFBQVQsRUFBbUI7QUFDZnFELG1CQUFXO0FBQ1g7QUFDSDs7QUFDRCxVQUFJQyxlQUFlLEdBQUdyTSxRQUFRLENBQUNzTSxRQUFELEVBQVcsRUFBWCxDQUE5QjtBQUNBMTNCLFVBQUksQ0FBQzgxQixnQkFBTCxHQUF3QjFLLFFBQVEsQ0FBQ2tNLGFBQUQsRUFBZ0J2RixtQkFBaEIsQ0FBaEM7QUFDQSxVQUFJL3hCLElBQUksQ0FBQ2sxQixhQUFMLElBQXNCLENBQUMsb0JBQW9CcDhCLElBQXBCLENBQXlCbXZCLFNBQVMsQ0FBQ0MsU0FBbkMsQ0FBM0IsRUFDSTV1QixJQUFJLENBQUMwRyxJQUFJLENBQUNrMUIsYUFBTixFQUFxQixXQUFyQixFQUFrQyxVQUFVbnVCLENBQVYsRUFBYTtBQUMvQyxZQUFJL0csSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWTlGLElBQVosS0FBcUIsT0FBekIsRUFDSWtPLFdBQVcsQ0FBQzV3QixDQUFDLENBQUMzTSxNQUFILENBQVg7QUFDUCxPQUhHLENBQUo7QUFJSmQsVUFBSSxDQUFDK04sTUFBTSxDQUFDUixRQUFQLENBQWdCaUMsSUFBakIsRUFBdUIsU0FBdkIsRUFBa0NraEIsU0FBbEMsQ0FBSjtBQUNBLFVBQUksQ0FBQ2hxQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZaEcsTUFBYixJQUF1QixDQUFDdnBCLElBQUksQ0FBQ3V2QixNQUFMLENBQVl6RSxNQUF4QyxFQUNJeHhCLElBQUksQ0FBQytOLE1BQUQsRUFBUyxRQUFULEVBQW1Cb3dCLGVBQW5CLENBQUo7QUFDSixVQUFJcHdCLE1BQU0sQ0FBQ3V3QixZQUFQLEtBQXdCbE4sU0FBNUIsRUFDSXB4QixJQUFJLENBQUMrTixNQUFNLENBQUNSLFFBQVIsRUFBa0IsWUFBbEIsRUFBZ0NneEIsYUFBaEMsQ0FBSixDQURKLEtBR0l2K0IsSUFBSSxDQUFDK04sTUFBTSxDQUFDUixRQUFSLEVBQWtCLFdBQWxCLEVBQStCdXdCLE9BQU8sQ0FBQ1MsYUFBRCxDQUF0QyxDQUFKO0FBQ0p2K0IsVUFBSSxDQUFDK04sTUFBTSxDQUFDUixRQUFSLEVBQWtCLE9BQWxCLEVBQTJCZ3hCLGFBQTNCLEVBQTBDO0FBQUVDLGVBQU8sRUFBRTtBQUFYLE9BQTFDLENBQUo7O0FBQ0EsVUFBSTkzQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZbkgsVUFBWixLQUEyQixJQUEvQixFQUFxQztBQUNqQzl1QixZQUFJLENBQUMwRyxJQUFJLENBQUMrZCxNQUFOLEVBQWMsT0FBZCxFQUF1Qi9kLElBQUksQ0FBQ296QixJQUE1QixDQUFKO0FBQ0E5NUIsWUFBSSxDQUFDMEcsSUFBSSxDQUFDK2QsTUFBTixFQUFjLFdBQWQsRUFBMkJxWixPQUFPLENBQUNwM0IsSUFBSSxDQUFDb3pCLElBQU4sQ0FBbEMsQ0FBSjtBQUNIOztBQUNELFVBQUlwekIsSUFBSSxDQUFDazFCLGFBQUwsS0FBdUJ4SyxTQUEzQixFQUFzQztBQUNsQ3B4QixZQUFJLENBQUMwRyxJQUFJLENBQUMrM0IsUUFBTixFQUFnQixXQUFoQixFQUE2QlgsT0FBTyxDQUFDWSxlQUFELENBQXBDLENBQUo7QUFDQTErQixZQUFJLENBQUMwRyxJQUFJLENBQUMrM0IsUUFBTixFQUFnQixDQUFDLE9BQUQsRUFBVSxXQUFWLENBQWhCLEVBQXdDaEIsV0FBeEMsQ0FBSjtBQUNBejlCLFlBQUksQ0FBQzBHLElBQUksQ0FBQ2sxQixhQUFOLEVBQXFCLFdBQXJCLEVBQWtDa0MsT0FBTyxDQUFDYSxVQUFELENBQXpDLENBQUo7QUFDSDs7QUFDRCxVQUFJajRCLElBQUksQ0FBQ2s0QixhQUFMLEtBQXVCeE4sU0FBdkIsSUFDQTFxQixJQUFJLENBQUNrMkIsYUFBTCxLQUF1QnhMLFNBRHZCLElBRUExcUIsSUFBSSxDQUFDaTJCLFdBQUwsS0FBcUJ2TCxTQUZ6QixFQUVvQztBQUNoQyxZQUFJeU4sT0FBTyxHQUFHLFNBQVZBLE9BQVUsQ0FBVXB4QixDQUFWLEVBQWE7QUFDdkIsaUJBQU9BLENBQUMsQ0FBQzNNLE1BQUYsQ0FBU2taLE1BQVQsRUFBUDtBQUNILFNBRkQ7O0FBR0FoYSxZQUFJLENBQUMwRyxJQUFJLENBQUNrNEIsYUFBTixFQUFxQixDQUFDLFdBQUQsQ0FBckIsRUFBb0N6QyxVQUFwQyxDQUFKO0FBQ0FuOEIsWUFBSSxDQUFDMEcsSUFBSSxDQUFDazRCLGFBQU4sRUFBcUIsTUFBckIsRUFBNkJ6QyxVQUE3QixFQUF5QztBQUFFcUMsaUJBQU8sRUFBRTtBQUFYLFNBQXpDLENBQUo7QUFDQXgrQixZQUFJLENBQUMwRyxJQUFJLENBQUNrNEIsYUFBTixFQUFxQixXQUFyQixFQUFrQ2QsT0FBTyxDQUFDZ0IsYUFBRCxDQUF6QyxDQUFKO0FBQ0E5K0IsWUFBSSxDQUFDLENBQUMwRyxJQUFJLENBQUNpMkIsV0FBTixFQUFtQmoyQixJQUFJLENBQUNrMkIsYUFBeEIsQ0FBRCxFQUF5QyxDQUFDLE9BQUQsRUFBVSxPQUFWLENBQXpDLEVBQTZEaUMsT0FBN0QsQ0FBSjtBQUNBLFlBQUluNEIsSUFBSSxDQUFDbTJCLGFBQUwsS0FBdUJ6TCxTQUEzQixFQUNJcHhCLElBQUksQ0FBQzBHLElBQUksQ0FBQ20yQixhQUFOLEVBQXFCLE9BQXJCLEVBQThCLFlBQVk7QUFBRSxpQkFBT24yQixJQUFJLENBQUNtMkIsYUFBTCxJQUFzQm4yQixJQUFJLENBQUNtMkIsYUFBTCxDQUFtQjdpQixNQUFuQixFQUE3QjtBQUEyRCxTQUF2RyxDQUFKOztBQUNKLFlBQUl0VCxJQUFJLENBQUN5ZCxJQUFMLEtBQWNpTixTQUFsQixFQUE2QjtBQUN6QnB4QixjQUFJLENBQUMwRyxJQUFJLENBQUN5ZCxJQUFOLEVBQVksV0FBWixFQUF5QjJaLE9BQU8sQ0FBQyxVQUFVcndCLENBQVYsRUFBYTtBQUM5QzB1QixzQkFBVSxDQUFDMXVCLENBQUQsQ0FBVjtBQUNBdXdCLHlCQUFhO0FBQ2hCLFdBSG1DLENBQWhDLENBQUo7QUFJSDtBQUNKO0FBQ0o7QUFDRDs7Ozs7OztBQUtBLGFBQVNuRSxVQUFULENBQW9Ca0YsUUFBcEIsRUFBOEJmLGFBQTlCLEVBQTZDO0FBQ3pDLFVBQUlnQixNQUFNLEdBQUdELFFBQVEsS0FBSzNOLFNBQWIsR0FDUDFxQixJQUFJLENBQUNxWixTQUFMLENBQWVnZixRQUFmLENBRE8sR0FFUHI0QixJQUFJLENBQUNzMEIscUJBQUwsS0FDR3QwQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZdlQsT0FBWixJQUF1QmhjLElBQUksQ0FBQ3V2QixNQUFMLENBQVl2VCxPQUFaLEdBQXNCaGMsSUFBSSxDQUFDNHBCLEdBQWxELEdBQ0s1cEIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXZULE9BRGpCLEdBRUtoYyxJQUFJLENBQUN1dkIsTUFBTCxDQUFZeFQsT0FBWixJQUF1Qi9iLElBQUksQ0FBQ3V2QixNQUFMLENBQVl4VCxPQUFaLEdBQXNCL2IsSUFBSSxDQUFDNHBCLEdBQWxELEdBQ0k1cEIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXhULE9BRGhCLEdBRUkvYixJQUFJLENBQUM0cEIsR0FMakIsQ0FGTjtBQVFBLFVBQUkyTyxPQUFPLEdBQUd2NEIsSUFBSSxDQUFDNHpCLFdBQW5CO0FBQ0EsVUFBSTRFLFFBQVEsR0FBR3g0QixJQUFJLENBQUMyekIsWUFBcEI7O0FBQ0EsVUFBSTtBQUNBLFlBQUkyRSxNQUFNLEtBQUs1TixTQUFmLEVBQTBCO0FBQ3RCMXFCLGNBQUksQ0FBQzR6QixXQUFMLEdBQW1CMEUsTUFBTSxDQUFDbFAsV0FBUCxFQUFuQjtBQUNBcHBCLGNBQUksQ0FBQzJ6QixZQUFMLEdBQW9CMkUsTUFBTSxDQUFDckosUUFBUCxFQUFwQjtBQUNIO0FBQ0osT0FMRCxDQU1BLE9BQU9sb0IsQ0FBUCxFQUFVO0FBQ047QUFDQUEsU0FBQyxDQUFDNVIsT0FBRixHQUFZLDRCQUE0Qm1qQyxNQUF4QztBQUNBdDRCLFlBQUksQ0FBQ3V2QixNQUFMLENBQVk3RyxZQUFaLENBQXlCM2hCLENBQXpCO0FBQ0g7O0FBQ0QsVUFBSXV3QixhQUFhLElBQUl0M0IsSUFBSSxDQUFDNHpCLFdBQUwsS0FBcUIyRSxPQUExQyxFQUFtRDtBQUMvQzVELG9CQUFZLENBQUMsY0FBRCxDQUFaO0FBQ0E4RCx3QkFBZ0I7QUFDbkI7O0FBQ0QsVUFBSW5CLGFBQWEsS0FDWnQzQixJQUFJLENBQUM0ekIsV0FBTCxLQUFxQjJFLE9BQXJCLElBQWdDdjRCLElBQUksQ0FBQzJ6QixZQUFMLEtBQXNCNkUsUUFEMUMsQ0FBakIsRUFDc0U7QUFDbEU3RCxvQkFBWSxDQUFDLGVBQUQsQ0FBWjtBQUNIOztBQUNEMzBCLFVBQUksQ0FBQ3F6QixNQUFMO0FBQ0g7QUFDRDs7Ozs7O0FBSUEsYUFBUytFLGFBQVQsQ0FBdUJyeEIsQ0FBdkIsRUFBMEI7QUFDdEIsVUFBSSxDQUFDQSxDQUFDLENBQUMzTSxNQUFGLENBQVN3eEIsU0FBVCxDQUFtQmoxQixPQUFuQixDQUEyQixPQUEzQixDQUFMLEVBQ0kraEMsaUJBQWlCLENBQUMzeEIsQ0FBRCxFQUFJQSxDQUFDLENBQUMzTSxNQUFGLENBQVN5eEIsU0FBVCxDQUFtQjhNLFFBQW5CLENBQTRCLFNBQTVCLElBQXlDLENBQXpDLEdBQTZDLENBQUMsQ0FBbEQsQ0FBakI7QUFDUDtBQUNEOzs7Ozs7Ozs7OztBQVNBLGFBQVNELGlCQUFULENBQTJCM3hCLENBQTNCLEVBQThCaXdCLEtBQTlCLEVBQXFDNEIsU0FBckMsRUFBZ0Q7QUFDNUMsVUFBSXgrQixNQUFNLEdBQUcyTSxDQUFDLElBQUlBLENBQUMsQ0FBQzNNLE1BQXBCO0FBQ0EsVUFBSXdQLEtBQUssR0FBR2d2QixTQUFTLElBQ2hCeCtCLE1BQU0sSUFBSUEsTUFBTSxDQUFDbXlCLFVBQWpCLElBQStCbnlCLE1BQU0sQ0FBQ215QixVQUFQLENBQWtCSCxVQUR0RDtBQUVBLFVBQUl0aUIsS0FBSyxHQUFHK3VCLFdBQVcsQ0FBQyxXQUFELENBQXZCO0FBQ0EvdUIsV0FBSyxDQUFDa3RCLEtBQU4sR0FBY0EsS0FBZDtBQUNBcHRCLFdBQUssSUFBSUEsS0FBSyxDQUFDa3ZCLGFBQU4sQ0FBb0JodkIsS0FBcEIsQ0FBVDtBQUNIOztBQUNELGFBQVNzcUIsS0FBVCxHQUFpQjtBQUNiLFVBQUkyRSxRQUFRLEdBQUcxeEIsTUFBTSxDQUFDUixRQUFQLENBQWdCbXlCLHNCQUFoQixFQUFmO0FBQ0FoNUIsVUFBSSxDQUFDODBCLGlCQUFMLEdBQXlCOUksYUFBYSxDQUFDLEtBQUQsRUFBUSxvQkFBUixDQUF0QztBQUNBaHNCLFVBQUksQ0FBQzgwQixpQkFBTCxDQUF1Qm1FLFFBQXZCLEdBQWtDLENBQUMsQ0FBbkM7O0FBQ0EsVUFBSSxDQUFDajVCLElBQUksQ0FBQ3V2QixNQUFMLENBQVkvVCxVQUFqQixFQUE2QjtBQUN6QnVkLGdCQUFRLENBQUMvTCxXQUFULENBQXFCa00sYUFBYSxFQUFsQztBQUNBbDVCLFlBQUksQ0FBQ201QixjQUFMLEdBQXNCbk4sYUFBYSxDQUFDLEtBQUQsRUFBUSwwQkFBUixDQUFuQzs7QUFDQSxZQUFJaHNCLElBQUksQ0FBQ3V2QixNQUFMLENBQVluVCxXQUFoQixFQUE2QjtBQUN6QixjQUFJaVQsRUFBRSxHQUFHK0osVUFBVSxFQUFuQjtBQUFBLGNBQXVCN0QsV0FBVyxHQUFHbEcsRUFBRSxDQUFDa0csV0FBeEM7QUFBQSxjQUFxRG5aLFdBQVcsR0FBR2lULEVBQUUsQ0FBQ2pULFdBQXRFOztBQUNBcGMsY0FBSSxDQUFDbTVCLGNBQUwsQ0FBb0JuTSxXQUFwQixDQUFnQ3VJLFdBQWhDO0FBQ0F2MUIsY0FBSSxDQUFDb2MsV0FBTCxHQUFtQkEsV0FBbkI7QUFDQXBjLGNBQUksQ0FBQ3UxQixXQUFMLEdBQW1CQSxXQUFuQjtBQUNIOztBQUNEdjFCLFlBQUksQ0FBQ3E1QixVQUFMLEdBQWtCck4sYUFBYSxDQUFDLEtBQUQsRUFBUSxzQkFBUixDQUEvQjtBQUNBaHNCLFlBQUksQ0FBQ3E1QixVQUFMLENBQWdCck0sV0FBaEIsQ0FBNEJzTSxhQUFhLEVBQXpDOztBQUNBLFlBQUksQ0FBQ3Q1QixJQUFJLENBQUNrMUIsYUFBVixFQUF5QjtBQUNyQmwxQixjQUFJLENBQUNrMUIsYUFBTCxHQUFxQmxKLGFBQWEsQ0FBQyxLQUFELEVBQVEsZ0JBQVIsQ0FBbEM7QUFDQWhzQixjQUFJLENBQUNrMUIsYUFBTCxDQUFtQitELFFBQW5CLEdBQThCLENBQUMsQ0FBL0I7QUFDSDs7QUFDRE0saUJBQVM7QUFDVHY1QixZQUFJLENBQUNxNUIsVUFBTCxDQUFnQnJNLFdBQWhCLENBQTRCaHRCLElBQUksQ0FBQ2sxQixhQUFqQztBQUNBbDFCLFlBQUksQ0FBQ201QixjQUFMLENBQW9Cbk0sV0FBcEIsQ0FBZ0NodEIsSUFBSSxDQUFDcTVCLFVBQXJDO0FBQ0FOLGdCQUFRLENBQUMvTCxXQUFULENBQXFCaHRCLElBQUksQ0FBQ201QixjQUExQjtBQUNIOztBQUNELFVBQUluNUIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXBhLFVBQWhCLEVBQTRCO0FBQ3hCNGpCLGdCQUFRLENBQUMvTCxXQUFULENBQXFCd00sU0FBUyxFQUE5QjtBQUNIOztBQUNEOU4saUJBQVcsQ0FBQzFyQixJQUFJLENBQUM4MEIsaUJBQU4sRUFBeUIsV0FBekIsRUFBc0M5MEIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWTlGLElBQVosS0FBcUIsT0FBM0QsQ0FBWDtBQUNBaUMsaUJBQVcsQ0FBQzFyQixJQUFJLENBQUM4MEIsaUJBQU4sRUFBeUIsU0FBekIsRUFBb0M5MEIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXZILE9BQVosS0FBd0IsSUFBNUQsQ0FBWDtBQUNBMEQsaUJBQVcsQ0FBQzFyQixJQUFJLENBQUM4MEIsaUJBQU4sRUFBeUIsWUFBekIsRUFBdUM5MEIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWTFFLFVBQVosR0FBeUIsQ0FBaEUsQ0FBWDtBQUNBN3FCLFVBQUksQ0FBQzgwQixpQkFBTCxDQUF1QjlILFdBQXZCLENBQW1DK0wsUUFBbkM7QUFDQSxVQUFJVSxZQUFZLEdBQUd6NUIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWW1LLFFBQVosS0FBeUJoUCxTQUF6QixJQUNmMXFCLElBQUksQ0FBQ3V2QixNQUFMLENBQVltSyxRQUFaLENBQXFCQyxRQUFyQixLQUFrQ2pQLFNBRHRDOztBQUVBLFVBQUkxcUIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWWhHLE1BQVosSUFBc0J2cEIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXpFLE1BQXRDLEVBQThDO0FBQzFDOXFCLFlBQUksQ0FBQzgwQixpQkFBTCxDQUF1QmpKLFNBQXZCLENBQWlDQyxHQUFqQyxDQUFxQzlyQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZaEcsTUFBWixHQUFxQixRQUFyQixHQUFnQyxRQUFyRTs7QUFDQSxZQUFJdnBCLElBQUksQ0FBQ3V2QixNQUFMLENBQVloRyxNQUFoQixFQUF3QjtBQUNwQixjQUFJLENBQUNrUSxZQUFELElBQWlCejVCLElBQUksQ0FBQ2l5QixPQUFMLENBQWExRixVQUFsQyxFQUNJdnNCLElBQUksQ0FBQ2l5QixPQUFMLENBQWExRixVQUFiLENBQXdCcU4sWUFBeEIsQ0FBcUM1NUIsSUFBSSxDQUFDODBCLGlCQUExQyxFQUE2RDkwQixJQUFJLENBQUMrZCxNQUFMLENBQVk4YixXQUF6RSxFQURKLEtBRUssSUFBSTc1QixJQUFJLENBQUN1dkIsTUFBTCxDQUFZbUssUUFBWixLQUF5QmhQLFNBQTdCLEVBQ0QxcUIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWW1LLFFBQVosQ0FBcUIxTSxXQUFyQixDQUFpQ2h0QixJQUFJLENBQUM4MEIsaUJBQXRDO0FBQ1A7O0FBQ0QsWUFBSTkwQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZekUsTUFBaEIsRUFBd0I7QUFDcEIsY0FBSTZCLE9BQU8sR0FBR1gsYUFBYSxDQUFDLEtBQUQsRUFBUSxtQkFBUixDQUEzQjtBQUNBLGNBQUloc0IsSUFBSSxDQUFDaXlCLE9BQUwsQ0FBYTFGLFVBQWpCLEVBQ0l2c0IsSUFBSSxDQUFDaXlCLE9BQUwsQ0FBYTFGLFVBQWIsQ0FBd0JxTixZQUF4QixDQUFxQ2pOLE9BQXJDLEVBQThDM3NCLElBQUksQ0FBQ2l5QixPQUFuRDtBQUNKdEYsaUJBQU8sQ0FBQ0ssV0FBUixDQUFvQmh0QixJQUFJLENBQUNpeUIsT0FBekI7QUFDQSxjQUFJanlCLElBQUksQ0FBQzhuQixRQUFULEVBQ0k2RSxPQUFPLENBQUNLLFdBQVIsQ0FBb0JodEIsSUFBSSxDQUFDOG5CLFFBQXpCO0FBQ0o2RSxpQkFBTyxDQUFDSyxXQUFSLENBQW9CaHRCLElBQUksQ0FBQzgwQixpQkFBekI7QUFDSDtBQUNKOztBQUNELFVBQUksQ0FBQzkwQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZekUsTUFBYixJQUF1QixDQUFDOXFCLElBQUksQ0FBQ3V2QixNQUFMLENBQVloRyxNQUF4QyxFQUNJLENBQUN2cEIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWW1LLFFBQVosS0FBeUJoUCxTQUF6QixHQUNLMXFCLElBQUksQ0FBQ3V2QixNQUFMLENBQVltSyxRQURqQixHQUVLcnlCLE1BQU0sQ0FBQ1IsUUFBUCxDQUFnQmlDLElBRnRCLEVBRTRCa2tCLFdBRjVCLENBRXdDaHRCLElBQUksQ0FBQzgwQixpQkFGN0M7QUFHUDs7QUFDRCxhQUFTZ0YsU0FBVCxDQUFtQmxPLFNBQW5CLEVBQThCM25CLElBQTlCLEVBQW9DODFCLFNBQXBDLEVBQStDeGtDLENBQS9DLEVBQWtEO0FBQzlDLFVBQUl5a0MsYUFBYSxHQUFHOUcsU0FBUyxDQUFDanZCLElBQUQsRUFBTyxJQUFQLENBQTdCO0FBQUEsVUFBMkNnMkIsVUFBVSxHQUFHak8sYUFBYSxDQUFDLE1BQUQsRUFBUyxtQkFBbUJKLFNBQTVCLEVBQXVDM25CLElBQUksQ0FBQ2dsQixPQUFMLEdBQWVoekIsUUFBZixFQUF2QyxDQUFyRTtBQUNBZ2tDLGdCQUFVLENBQUN4TSxPQUFYLEdBQXFCeHBCLElBQXJCO0FBQ0FnMkIsZ0JBQVUsQ0FBQ0MsRUFBWCxHQUFnQjNrQyxDQUFoQjtBQUNBMGtDLGdCQUFVLENBQUNsTixZQUFYLENBQXdCLFlBQXhCLEVBQXNDL3NCLElBQUksQ0FBQzhiLFVBQUwsQ0FBZ0I3WCxJQUFoQixFQUFzQmpFLElBQUksQ0FBQ3V2QixNQUFMLENBQVlwSCxjQUFsQyxDQUF0Qzs7QUFDQSxVQUFJeUQsU0FBUyxDQUFDajFCLE9BQVYsQ0FBa0IsUUFBbEIsTUFBZ0MsQ0FBQyxDQUFqQyxJQUNBdTZCLFlBQVksQ0FBQ2p0QixJQUFELEVBQU9qRSxJQUFJLENBQUM0cEIsR0FBWixDQUFaLEtBQWlDLENBRHJDLEVBQ3dDO0FBQ3BDNXBCLFlBQUksQ0FBQ202QixhQUFMLEdBQXFCRixVQUFyQjtBQUNBQSxrQkFBVSxDQUFDcE8sU0FBWCxDQUFxQkMsR0FBckIsQ0FBeUIsT0FBekI7QUFDQW1PLGtCQUFVLENBQUNsTixZQUFYLENBQXdCLGNBQXhCLEVBQXdDLE1BQXhDO0FBQ0g7O0FBQ0QsVUFBSWlOLGFBQUosRUFBbUI7QUFDZkMsa0JBQVUsQ0FBQ2hCLFFBQVgsR0FBc0IsQ0FBQyxDQUF2Qjs7QUFDQSxZQUFJbUIsY0FBYyxDQUFDbjJCLElBQUQsQ0FBbEIsRUFBMEI7QUFDdEJnMkIsb0JBQVUsQ0FBQ3BPLFNBQVgsQ0FBcUJDLEdBQXJCLENBQXlCLFVBQXpCO0FBQ0E5ckIsY0FBSSxDQUFDcTZCLGdCQUFMLEdBQXdCSixVQUF4Qjs7QUFDQSxjQUFJajZCLElBQUksQ0FBQ3V2QixNQUFMLENBQVk5RixJQUFaLEtBQXFCLE9BQXpCLEVBQWtDO0FBQzlCaUMsdUJBQVcsQ0FBQ3VPLFVBQUQsRUFBYSxZQUFiLEVBQTJCajZCLElBQUksQ0FBQ3djLGFBQUwsQ0FBbUIsQ0FBbkIsS0FDbEMwVSxZQUFZLENBQUNqdEIsSUFBRCxFQUFPakUsSUFBSSxDQUFDd2MsYUFBTCxDQUFtQixDQUFuQixDQUFQLEVBQThCLElBQTlCLENBQVosS0FBb0QsQ0FEN0MsQ0FBWDtBQUVBa1AsdUJBQVcsQ0FBQ3VPLFVBQUQsRUFBYSxVQUFiLEVBQXlCajZCLElBQUksQ0FBQ3djLGFBQUwsQ0FBbUIsQ0FBbkIsS0FDaEMwVSxZQUFZLENBQUNqdEIsSUFBRCxFQUFPakUsSUFBSSxDQUFDd2MsYUFBTCxDQUFtQixDQUFuQixDQUFQLEVBQThCLElBQTlCLENBQVosS0FBb0QsQ0FEN0MsQ0FBWDtBQUVBLGdCQUFJb1AsU0FBUyxLQUFLLGNBQWxCLEVBQ0lxTyxVQUFVLENBQUNwTyxTQUFYLENBQXFCQyxHQUFyQixDQUF5QixTQUF6QjtBQUNQO0FBQ0o7QUFDSixPQWRELE1BZUs7QUFDRG1PLGtCQUFVLENBQUNwTyxTQUFYLENBQXFCQyxHQUFyQixDQUF5QixvQkFBekI7QUFDSDs7QUFDRCxVQUFJOXJCLElBQUksQ0FBQ3V2QixNQUFMLENBQVk5RixJQUFaLEtBQXFCLE9BQXpCLEVBQWtDO0FBQzlCLFlBQUk2USxhQUFhLENBQUNyMkIsSUFBRCxDQUFiLElBQXVCLENBQUNtMkIsY0FBYyxDQUFDbjJCLElBQUQsQ0FBMUMsRUFDSWcyQixVQUFVLENBQUNwTyxTQUFYLENBQXFCQyxHQUFyQixDQUF5QixTQUF6QjtBQUNQOztBQUNELFVBQUk5ckIsSUFBSSxDQUFDb2MsV0FBTCxJQUNBcGMsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWTFFLFVBQVosS0FBMkIsQ0FEM0IsSUFFQWUsU0FBUyxLQUFLLGNBRmQsSUFHQW1PLFNBQVMsR0FBRyxDQUFaLEtBQWtCLENBSHRCLEVBR3lCO0FBQ3JCLzVCLFlBQUksQ0FBQ29jLFdBQUwsQ0FBaUJtZSxrQkFBakIsQ0FBb0MsV0FBcEMsRUFBaUQsaUNBQWlDdjZCLElBQUksQ0FBQ3V2QixNQUFMLENBQVkzRyxPQUFaLENBQW9CM2tCLElBQXBCLENBQWpDLEdBQTZELFNBQTlHO0FBQ0g7O0FBQ0Qwd0Isa0JBQVksQ0FBQyxhQUFELEVBQWdCc0YsVUFBaEIsQ0FBWjtBQUNBLGFBQU9BLFVBQVA7QUFDSDs7QUFDRCxhQUFTTyxjQUFULENBQXdCQyxVQUF4QixFQUFvQztBQUNoQ0EsZ0JBQVUsQ0FBQ0MsS0FBWDtBQUNBLFVBQUkxNkIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWTlGLElBQVosS0FBcUIsT0FBekIsRUFDSWtPLFdBQVcsQ0FBQzhDLFVBQUQsQ0FBWDtBQUNQOztBQUNELGFBQVNFLG9CQUFULENBQThCM0QsS0FBOUIsRUFBcUM7QUFDakMsVUFBSTRELFVBQVUsR0FBRzVELEtBQUssR0FBRyxDQUFSLEdBQVksQ0FBWixHQUFnQmgzQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZMUUsVUFBWixHQUF5QixDQUExRDtBQUNBLFVBQUlnUSxRQUFRLEdBQUc3RCxLQUFLLEdBQUcsQ0FBUixHQUFZaDNCLElBQUksQ0FBQ3V2QixNQUFMLENBQVkxRSxVQUF4QixHQUFxQyxDQUFDLENBQXJEOztBQUNBLFdBQUssSUFBSXIxQixDQUFDLEdBQUdvbEMsVUFBYixFQUF5QnBsQyxDQUFDLElBQUlxbEMsUUFBOUIsRUFBd0NybEMsQ0FBQyxJQUFJd2hDLEtBQTdDLEVBQW9EO0FBQ2hELFlBQUl2Z0IsS0FBSyxHQUFHelcsSUFBSSxDQUFDazFCLGFBQUwsQ0FBbUI0RixRQUFuQixDQUE0QnRsQyxDQUE1QixDQUFaO0FBQ0EsWUFBSXVsQyxVQUFVLEdBQUcvRCxLQUFLLEdBQUcsQ0FBUixHQUFZLENBQVosR0FBZ0J2Z0IsS0FBSyxDQUFDcWtCLFFBQU4sQ0FBZTlsQyxNQUFmLEdBQXdCLENBQXpEO0FBQ0EsWUFBSWdtQyxRQUFRLEdBQUdoRSxLQUFLLEdBQUcsQ0FBUixHQUFZdmdCLEtBQUssQ0FBQ3FrQixRQUFOLENBQWU5bEMsTUFBM0IsR0FBb0MsQ0FBQyxDQUFwRDs7QUFDQSxhQUFLLElBQUlPLENBQUMsR0FBR3dsQyxVQUFiLEVBQXlCeGxDLENBQUMsSUFBSXlsQyxRQUE5QixFQUF3Q3psQyxDQUFDLElBQUl5aEMsS0FBN0MsRUFBb0Q7QUFDaEQsY0FBSTdXLENBQUMsR0FBRzFKLEtBQUssQ0FBQ3FrQixRQUFOLENBQWV2bEMsQ0FBZixDQUFSO0FBQ0EsY0FBSTRxQixDQUFDLENBQUN5TCxTQUFGLENBQVlqMUIsT0FBWixDQUFvQixRQUFwQixNQUFrQyxDQUFDLENBQW5DLElBQXdDdThCLFNBQVMsQ0FBQy9TLENBQUMsQ0FBQ3NOLE9BQUgsQ0FBckQsRUFDSSxPQUFPdE4sQ0FBUDtBQUNQO0FBQ0o7O0FBQ0QsYUFBT3VLLFNBQVA7QUFDSDs7QUFDRCxhQUFTdVEsbUJBQVQsQ0FBNkJDLE9BQTdCLEVBQXNDbEUsS0FBdEMsRUFBNkM7QUFDekMsVUFBSW1FLFVBQVUsR0FBR0QsT0FBTyxDQUFDdFAsU0FBUixDQUFrQmoxQixPQUFsQixDQUEwQixPQUExQixNQUF1QyxDQUFDLENBQXhDLEdBQ1h1a0MsT0FBTyxDQUFDek4sT0FBUixDQUFnQndCLFFBQWhCLEVBRFcsR0FFWGp2QixJQUFJLENBQUMyekIsWUFGWDtBQUdBLFVBQUlrSCxRQUFRLEdBQUc3RCxLQUFLLEdBQUcsQ0FBUixHQUFZaDNCLElBQUksQ0FBQ3V2QixNQUFMLENBQVkxRSxVQUF4QixHQUFxQyxDQUFDLENBQXJEO0FBQ0EsVUFBSXVRLFNBQVMsR0FBR3BFLEtBQUssR0FBRyxDQUFSLEdBQVksQ0FBWixHQUFnQixDQUFDLENBQWpDOztBQUNBLFdBQUssSUFBSXhoQyxDQUFDLEdBQUcybEMsVUFBVSxHQUFHbjdCLElBQUksQ0FBQzJ6QixZQUEvQixFQUE2Q24rQixDQUFDLElBQUlxbEMsUUFBbEQsRUFBNERybEMsQ0FBQyxJQUFJNGxDLFNBQWpFLEVBQTRFO0FBQ3hFLFlBQUkza0IsS0FBSyxHQUFHelcsSUFBSSxDQUFDazFCLGFBQUwsQ0FBbUI0RixRQUFuQixDQUE0QnRsQyxDQUE1QixDQUFaO0FBQ0EsWUFBSXVsQyxVQUFVLEdBQUdJLFVBQVUsR0FBR243QixJQUFJLENBQUMyekIsWUFBbEIsS0FBbUNuK0IsQ0FBbkMsR0FDWDBsQyxPQUFPLENBQUNoQixFQUFSLEdBQWFsRCxLQURGLEdBRVhBLEtBQUssR0FBRyxDQUFSLEdBQ0l2Z0IsS0FBSyxDQUFDcWtCLFFBQU4sQ0FBZTlsQyxNQUFmLEdBQXdCLENBRDVCLEdBRUksQ0FKVjtBQUtBLFlBQUlxbUMsWUFBWSxHQUFHNWtCLEtBQUssQ0FBQ3FrQixRQUFOLENBQWU5bEMsTUFBbEM7O0FBQ0EsYUFBSyxJQUFJTyxDQUFDLEdBQUd3bEMsVUFBYixFQUF5QnhsQyxDQUFDLElBQUksQ0FBTCxJQUFVQSxDQUFDLEdBQUc4bEMsWUFBZCxJQUE4QjlsQyxDQUFDLEtBQUt5aEMsS0FBSyxHQUFHLENBQVIsR0FBWXFFLFlBQVosR0FBMkIsQ0FBQyxDQUFqQyxDQUF4RCxFQUE2RjlsQyxDQUFDLElBQUk2bEMsU0FBbEcsRUFBNkc7QUFDekcsY0FBSWpiLENBQUMsR0FBRzFKLEtBQUssQ0FBQ3FrQixRQUFOLENBQWV2bEMsQ0FBZixDQUFSO0FBQ0EsY0FBSTRxQixDQUFDLENBQUN5TCxTQUFGLENBQVlqMUIsT0FBWixDQUFvQixRQUFwQixNQUFrQyxDQUFDLENBQW5DLElBQ0F1OEIsU0FBUyxDQUFDL1MsQ0FBQyxDQUFDc04sT0FBSCxDQURULElBRUFqMkIsSUFBSSxDQUFDOGpDLEdBQUwsQ0FBU0osT0FBTyxDQUFDaEIsRUFBUixHQUFhM2tDLENBQXRCLEtBQTRCaUMsSUFBSSxDQUFDOGpDLEdBQUwsQ0FBU3RFLEtBQVQsQ0FGaEMsRUFHSSxPQUFPd0QsY0FBYyxDQUFDcmEsQ0FBRCxDQUFyQjtBQUNQO0FBQ0o7O0FBQ0RuZ0IsVUFBSSxDQUFDNHlCLFdBQUwsQ0FBaUJ3SSxTQUFqQjtBQUNBRyxnQkFBVSxDQUFDWixvQkFBb0IsQ0FBQ1MsU0FBRCxDQUFyQixFQUFrQyxDQUFsQyxDQUFWO0FBQ0EsYUFBTzFRLFNBQVA7QUFDSDs7QUFDRCxhQUFTNlEsVUFBVCxDQUFvQkwsT0FBcEIsRUFBNkJ0dkIsTUFBN0IsRUFBcUM7QUFDakMsVUFBSTR2QixVQUFVLEdBQUdDLFFBQVEsQ0FBQzUwQixRQUFRLENBQUM2MEIsYUFBVCxJQUEwQjcwQixRQUFRLENBQUNpQyxJQUFwQyxDQUF6QjtBQUNBLFVBQUk2eUIsU0FBUyxHQUFHVCxPQUFPLEtBQUt4USxTQUFaLEdBQ1Z3USxPQURVLEdBRVZNLFVBQVUsR0FDTjMwQixRQUFRLENBQUM2MEIsYUFESCxHQUVOMTdCLElBQUksQ0FBQ3E2QixnQkFBTCxLQUEwQjNQLFNBQTFCLElBQXVDK1EsUUFBUSxDQUFDejdCLElBQUksQ0FBQ3E2QixnQkFBTixDQUEvQyxHQUNJcjZCLElBQUksQ0FBQ3E2QixnQkFEVCxHQUVJcjZCLElBQUksQ0FBQ202QixhQUFMLEtBQXVCelAsU0FBdkIsSUFBb0MrUSxRQUFRLENBQUN6N0IsSUFBSSxDQUFDbTZCLGFBQU4sQ0FBNUMsR0FDSW42QixJQUFJLENBQUNtNkIsYUFEVCxHQUVJUSxvQkFBb0IsQ0FBQy91QixNQUFNLEdBQUcsQ0FBVCxHQUFhLENBQWIsR0FBaUIsQ0FBQyxDQUFuQixDQVJ0QztBQVNBLFVBQUkrdkIsU0FBUyxLQUFLalIsU0FBbEIsRUFDSSxPQUFPMXFCLElBQUksQ0FBQytkLE1BQUwsQ0FBWTJjLEtBQVosRUFBUDtBQUNKLFVBQUksQ0FBQ2MsVUFBTCxFQUNJLE9BQU9oQixjQUFjLENBQUNtQixTQUFELENBQXJCO0FBQ0pWLHlCQUFtQixDQUFDVSxTQUFELEVBQVkvdkIsTUFBWixDQUFuQjtBQUNIOztBQUNELGFBQVNnd0IsY0FBVCxDQUF3QnBsQixJQUF4QixFQUE4QkMsS0FBOUIsRUFBcUM7QUFDakMsVUFBSW9sQixZQUFZLEdBQUcsQ0FBQyxJQUFJcjJCLElBQUosQ0FBU2dSLElBQVQsRUFBZUMsS0FBZixFQUFzQixDQUF0QixFQUF5QnlTLE1BQXpCLEtBQW9DbHBCLElBQUksQ0FBQ3l2QixJQUFMLENBQVV0UyxjQUE5QyxHQUErRCxDQUFoRSxJQUFxRSxDQUF4RjtBQUNBLFVBQUkyZSxhQUFhLEdBQUc5N0IsSUFBSSxDQUFDd3pCLEtBQUwsQ0FBV0MsY0FBWCxDQUEwQixDQUFDaGQsS0FBSyxHQUFHLENBQVIsR0FBWSxFQUFiLElBQW1CLEVBQTdDLENBQXBCO0FBQ0EsVUFBSXlHLFdBQVcsR0FBR2xkLElBQUksQ0FBQ3d6QixLQUFMLENBQVdDLGNBQVgsQ0FBMEJoZCxLQUExQixDQUFsQjtBQUFBLFVBQW9EMmUsSUFBSSxHQUFHL3RCLE1BQU0sQ0FBQ1IsUUFBUCxDQUFnQm15QixzQkFBaEIsRUFBM0Q7QUFBQSxVQUFxRytDLFlBQVksR0FBRy83QixJQUFJLENBQUN1dkIsTUFBTCxDQUFZMUUsVUFBWixHQUF5QixDQUE3STtBQUFBLFVBQWdKbVIsaUJBQWlCLEdBQUdELFlBQVksR0FBRyxxQkFBSCxHQUEyQixjQUEzTTtBQUFBLFVBQTJORSxpQkFBaUIsR0FBR0YsWUFBWSxHQUFHLHFCQUFILEdBQTJCLGNBQXRSO0FBQ0EsVUFBSWhDLFNBQVMsR0FBRytCLGFBQWEsR0FBRyxDQUFoQixHQUFvQkQsWUFBcEM7QUFBQSxVQUFrREssUUFBUSxHQUFHLENBQTdELENBSmlDLENBS2pDOztBQUNBLGFBQU9uQyxTQUFTLElBQUkrQixhQUFwQixFQUFtQy9CLFNBQVMsSUFBSW1DLFFBQVEsRUFBeEQsRUFBNEQ7QUFDeEQ5RyxZQUFJLENBQUNwSSxXQUFMLENBQWlCOE0sU0FBUyxDQUFDa0MsaUJBQUQsRUFBb0IsSUFBSXgyQixJQUFKLENBQVNnUixJQUFULEVBQWVDLEtBQUssR0FBRyxDQUF2QixFQUEwQnNqQixTQUExQixDQUFwQixFQUEwREEsU0FBMUQsRUFBcUVtQyxRQUFyRSxDQUExQjtBQUNILE9BUmdDLENBU2pDOzs7QUFDQSxXQUFLbkMsU0FBUyxHQUFHLENBQWpCLEVBQW9CQSxTQUFTLElBQUk3YyxXQUFqQyxFQUE4QzZjLFNBQVMsSUFBSW1DLFFBQVEsRUFBbkUsRUFBdUU7QUFDbkU5RyxZQUFJLENBQUNwSSxXQUFMLENBQWlCOE0sU0FBUyxDQUFDLEVBQUQsRUFBSyxJQUFJdDBCLElBQUosQ0FBU2dSLElBQVQsRUFBZUMsS0FBZixFQUFzQnNqQixTQUF0QixDQUFMLEVBQXVDQSxTQUF2QyxFQUFrRG1DLFFBQWxELENBQTFCO0FBQ0gsT0FaZ0MsQ0FhakM7OztBQUNBLFdBQUssSUFBSTFaLE1BQU0sR0FBR3RGLFdBQVcsR0FBRyxDQUFoQyxFQUFtQ3NGLE1BQU0sSUFBSSxLQUFLcVosWUFBZixLQUM5Qjc3QixJQUFJLENBQUN1dkIsTUFBTCxDQUFZMUUsVUFBWixLQUEyQixDQUEzQixJQUFnQ3FSLFFBQVEsR0FBRyxDQUFYLEtBQWlCLENBRG5CLENBQW5DLEVBQzBEMVosTUFBTSxJQUFJMFosUUFBUSxFQUQ1RSxFQUNnRjtBQUM1RTlHLFlBQUksQ0FBQ3BJLFdBQUwsQ0FBaUI4TSxTQUFTLENBQUNtQyxpQkFBRCxFQUFvQixJQUFJejJCLElBQUosQ0FBU2dSLElBQVQsRUFBZUMsS0FBSyxHQUFHLENBQXZCLEVBQTBCK0wsTUFBTSxHQUFHdEYsV0FBbkMsQ0FBcEIsRUFBcUVzRixNQUFyRSxFQUE2RTBaLFFBQTdFLENBQTFCO0FBQ0gsT0FqQmdDLENBa0JqQzs7O0FBQ0EsVUFBSUMsWUFBWSxHQUFHblEsYUFBYSxDQUFDLEtBQUQsRUFBUSxjQUFSLENBQWhDO0FBQ0FtUSxrQkFBWSxDQUFDblAsV0FBYixDQUF5Qm9JLElBQXpCO0FBQ0EsYUFBTytHLFlBQVA7QUFDSDs7QUFDRCxhQUFTNUMsU0FBVCxHQUFxQjtBQUNqQixVQUFJdjVCLElBQUksQ0FBQ2sxQixhQUFMLEtBQXVCeEssU0FBM0IsRUFBc0M7QUFDbEM7QUFDSDs7QUFDRHdCLGVBQVMsQ0FBQ2xzQixJQUFJLENBQUNrMUIsYUFBTixDQUFULENBSmlCLENBS2pCOztBQUNBLFVBQUlsMUIsSUFBSSxDQUFDb2MsV0FBVCxFQUNJOFAsU0FBUyxDQUFDbHNCLElBQUksQ0FBQ29jLFdBQU4sQ0FBVDtBQUNKLFVBQUlnZ0IsSUFBSSxHQUFHdjFCLFFBQVEsQ0FBQ215QixzQkFBVCxFQUFYOztBQUNBLFdBQUssSUFBSXpqQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHeUssSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWTFFLFVBQWhDLEVBQTRDdDFCLENBQUMsRUFBN0MsRUFBaUQ7QUFDN0MsWUFBSWd0QixDQUFDLEdBQUcsSUFBSS9jLElBQUosQ0FBU3hGLElBQUksQ0FBQzR6QixXQUFkLEVBQTJCNXpCLElBQUksQ0FBQzJ6QixZQUFoQyxFQUE4QyxDQUE5QyxDQUFSO0FBQ0FwUixTQUFDLENBQUNvTCxRQUFGLENBQVczdEIsSUFBSSxDQUFDMnpCLFlBQUwsR0FBb0JwK0IsQ0FBL0I7QUFDQTZtQyxZQUFJLENBQUNwUCxXQUFMLENBQWlCNE8sY0FBYyxDQUFDclosQ0FBQyxDQUFDNkcsV0FBRixFQUFELEVBQWtCN0csQ0FBQyxDQUFDME0sUUFBRixFQUFsQixDQUEvQjtBQUNIOztBQUNEanZCLFVBQUksQ0FBQ2sxQixhQUFMLENBQW1CbEksV0FBbkIsQ0FBK0JvUCxJQUEvQjtBQUNBcDhCLFVBQUksQ0FBQ28xQixJQUFMLEdBQVlwMUIsSUFBSSxDQUFDazFCLGFBQUwsQ0FBbUI5SSxVQUEvQjs7QUFDQSxVQUFJcHNCLElBQUksQ0FBQ3V2QixNQUFMLENBQVk5RixJQUFaLEtBQXFCLE9BQXJCLElBQWdDenBCLElBQUksQ0FBQ3djLGFBQUwsQ0FBbUJ4bkIsTUFBbkIsS0FBOEIsQ0FBbEUsRUFBcUU7QUFDakUyaUMsbUJBQVc7QUFDZDtBQUNKOztBQUNELGFBQVNjLGdCQUFULEdBQTRCO0FBQ3hCLFVBQUl6NEIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWTFFLFVBQVosR0FBeUIsQ0FBekIsSUFDQTdxQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZN0YsaUJBQVosS0FBa0MsVUFEdEMsRUFFSTs7QUFDSixVQUFJMlMsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFtQixDQUFVNWxCLEtBQVYsRUFBaUI7QUFDcEMsWUFBSXpXLElBQUksQ0FBQ3V2QixNQUFMLENBQVl2VCxPQUFaLEtBQXdCME8sU0FBeEIsSUFDQTFxQixJQUFJLENBQUM0ekIsV0FBTCxLQUFxQjV6QixJQUFJLENBQUN1dkIsTUFBTCxDQUFZdlQsT0FBWixDQUFvQm9OLFdBQXBCLEVBRHJCLElBRUEzUyxLQUFLLEdBQUd6VyxJQUFJLENBQUN1dkIsTUFBTCxDQUFZdlQsT0FBWixDQUFvQmlULFFBQXBCLEVBRlosRUFFNEM7QUFDeEMsaUJBQU8sS0FBUDtBQUNIOztBQUNELGVBQU8sRUFBRWp2QixJQUFJLENBQUN1dkIsTUFBTCxDQUFZeFQsT0FBWixLQUF3QjJPLFNBQXhCLElBQ0wxcUIsSUFBSSxDQUFDNHpCLFdBQUwsS0FBcUI1ekIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXhULE9BQVosQ0FBb0JxTixXQUFwQixFQURoQixJQUVMM1MsS0FBSyxHQUFHelcsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXhULE9BQVosQ0FBb0JrVCxRQUFwQixFQUZMLENBQVA7QUFHSCxPQVREOztBQVVBanZCLFVBQUksQ0FBQ3M4Qix1QkFBTCxDQUE2QnJELFFBQTdCLEdBQXdDLENBQUMsQ0FBekM7QUFDQWo1QixVQUFJLENBQUNzOEIsdUJBQUwsQ0FBNkJDLFNBQTdCLEdBQXlDLEVBQXpDOztBQUNBLFdBQUssSUFBSWhuQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHLEVBQXBCLEVBQXdCQSxDQUFDLEVBQXpCLEVBQTZCO0FBQ3pCLFlBQUksQ0FBQzhtQyxnQkFBZ0IsQ0FBQzltQyxDQUFELENBQXJCLEVBQ0k7QUFDSixZQUFJa2hCLEtBQUssR0FBR3VWLGFBQWEsQ0FBQyxRQUFELEVBQVcsK0JBQVgsQ0FBekI7QUFDQXZWLGFBQUssQ0FBQ3pjLEtBQU4sR0FBYyxJQUFJd0wsSUFBSixDQUFTeEYsSUFBSSxDQUFDNHpCLFdBQWQsRUFBMkJyK0IsQ0FBM0IsRUFBOEIwNUIsUUFBOUIsR0FBeUNoNUIsUUFBekMsRUFBZDtBQUNBd2dCLGFBQUssQ0FBQ3dWLFdBQU4sR0FBb0JvQixVQUFVLENBQUM5M0IsQ0FBRCxFQUFJeUssSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWTNFLHFCQUFoQixFQUF1QzVxQixJQUFJLENBQUN5dkIsSUFBNUMsQ0FBOUI7QUFDQWhaLGFBQUssQ0FBQ3dpQixRQUFOLEdBQWlCLENBQUMsQ0FBbEI7O0FBQ0EsWUFBSWo1QixJQUFJLENBQUMyekIsWUFBTCxLQUFzQnArQixDQUExQixFQUE2QjtBQUN6QmtoQixlQUFLLENBQUMrbEIsUUFBTixHQUFpQixJQUFqQjtBQUNIOztBQUNEeDhCLFlBQUksQ0FBQ3M4Qix1QkFBTCxDQUE2QnRQLFdBQTdCLENBQXlDdlcsS0FBekM7QUFDSDtBQUNKOztBQUNELGFBQVNnbUIsVUFBVCxHQUFzQjtBQUNsQixVQUFJQyxTQUFTLEdBQUcxUSxhQUFhLENBQUMsS0FBRCxFQUFRLGlCQUFSLENBQTdCO0FBQ0EsVUFBSTJRLGdCQUFnQixHQUFHdDFCLE1BQU0sQ0FBQ1IsUUFBUCxDQUFnQm15QixzQkFBaEIsRUFBdkI7QUFDQSxVQUFJNEQsWUFBSjs7QUFDQSxVQUFJNThCLElBQUksQ0FBQ3V2QixNQUFMLENBQVkxRSxVQUFaLEdBQXlCLENBQXpCLElBQ0E3cUIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWTdGLGlCQUFaLEtBQWtDLFFBRHRDLEVBQ2dEO0FBQzVDa1Qsb0JBQVksR0FBRzVRLGFBQWEsQ0FBQyxNQUFELEVBQVMsV0FBVCxDQUE1QjtBQUNILE9BSEQsTUFJSztBQUNEaHNCLFlBQUksQ0FBQ3M4Qix1QkFBTCxHQUErQnRRLGFBQWEsQ0FBQyxRQUFELEVBQVcsZ0NBQVgsQ0FBNUM7QUFDQTF5QixZQUFJLENBQUMwRyxJQUFJLENBQUNzOEIsdUJBQU4sRUFBK0IsUUFBL0IsRUFBeUMsVUFBVXYxQixDQUFWLEVBQWE7QUFDdEQsY0FBSTNNLE1BQU0sR0FBRzJNLENBQUMsQ0FBQzNNLE1BQWY7QUFDQSxjQUFJeWlDLGFBQWEsR0FBRzUzQixRQUFRLENBQUM3SyxNQUFNLENBQUNKLEtBQVIsRUFBZSxFQUFmLENBQTVCO0FBQ0FnRyxjQUFJLENBQUM0eUIsV0FBTCxDQUFpQmlLLGFBQWEsR0FBRzc4QixJQUFJLENBQUMyekIsWUFBdEM7QUFDQWdCLHNCQUFZLENBQUMsZUFBRCxDQUFaO0FBQ0gsU0FMRyxDQUFKO0FBTUE4RCx3QkFBZ0I7QUFDaEJtRSxvQkFBWSxHQUFHNThCLElBQUksQ0FBQ3M4Qix1QkFBcEI7QUFDSDs7QUFDRCxVQUFJUSxTQUFTLEdBQUd0USxpQkFBaUIsQ0FBQyxVQUFELEVBQWE7QUFBRXVRLGdCQUFRLEVBQUU7QUFBWixPQUFiLENBQWpDO0FBQ0EsVUFBSUMsV0FBVyxHQUFHRixTQUFTLENBQUNHLG9CQUFWLENBQStCLE9BQS9CLEVBQXdDLENBQXhDLENBQWxCO0FBQ0FELGlCQUFXLENBQUNqUSxZQUFaLENBQXlCLFlBQXpCLEVBQXVDL3NCLElBQUksQ0FBQ3l2QixJQUFMLENBQVUvUixhQUFqRDs7QUFDQSxVQUFJMWQsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXZULE9BQWhCLEVBQXlCO0FBQ3JCZ2hCLG1CQUFXLENBQUNqUSxZQUFaLENBQXlCLEtBQXpCLEVBQWdDL3NCLElBQUksQ0FBQ3V2QixNQUFMLENBQVl2VCxPQUFaLENBQW9Cb04sV0FBcEIsR0FBa0NuekIsUUFBbEMsRUFBaEM7QUFDSDs7QUFDRCxVQUFJK0osSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXhULE9BQWhCLEVBQXlCO0FBQ3JCaWhCLG1CQUFXLENBQUNqUSxZQUFaLENBQXlCLEtBQXpCLEVBQWdDL3NCLElBQUksQ0FBQ3V2QixNQUFMLENBQVl4VCxPQUFaLENBQW9CcU4sV0FBcEIsR0FBa0NuekIsUUFBbEMsRUFBaEM7QUFDQSttQyxtQkFBVyxDQUFDRSxRQUFaLEdBQ0ksQ0FBQyxDQUFDbDlCLElBQUksQ0FBQ3V2QixNQUFMLENBQVl2VCxPQUFkLElBQ0loYyxJQUFJLENBQUN1dkIsTUFBTCxDQUFZdlQsT0FBWixDQUFvQm9OLFdBQXBCLE9BQXNDcHBCLElBQUksQ0FBQ3V2QixNQUFMLENBQVl4VCxPQUFaLENBQW9CcU4sV0FBcEIsRUFGOUM7QUFHSDs7QUFDRCxVQUFJdUssWUFBWSxHQUFHM0gsYUFBYSxDQUFDLEtBQUQsRUFBUSx5QkFBUixDQUFoQztBQUNBMkgsa0JBQVksQ0FBQzNHLFdBQWIsQ0FBeUI0UCxZQUF6QjtBQUNBakosa0JBQVksQ0FBQzNHLFdBQWIsQ0FBeUI4UCxTQUF6QjtBQUNBSCxzQkFBZ0IsQ0FBQzNQLFdBQWpCLENBQTZCMkcsWUFBN0I7QUFDQStJLGVBQVMsQ0FBQzFQLFdBQVYsQ0FBc0IyUCxnQkFBdEI7QUFDQSxhQUFPO0FBQ0hELGlCQUFTLEVBQUVBLFNBRFI7QUFFSE0sbUJBQVcsRUFBRUEsV0FGVjtBQUdISixvQkFBWSxFQUFFQTtBQUhYLE9BQVA7QUFLSDs7QUFDRCxhQUFTTyxXQUFULEdBQXVCO0FBQ25CalIsZUFBUyxDQUFDbHNCLElBQUksQ0FBQyszQixRQUFOLENBQVQ7QUFDQS8zQixVQUFJLENBQUMrM0IsUUFBTCxDQUFjL0ssV0FBZCxDQUEwQmh0QixJQUFJLENBQUNvOUIsWUFBL0I7O0FBQ0EsVUFBSXA5QixJQUFJLENBQUN1dkIsTUFBTCxDQUFZMUUsVUFBaEIsRUFBNEI7QUFDeEI3cUIsWUFBSSxDQUFDcTlCLFlBQUwsR0FBb0IsRUFBcEI7QUFDQXI5QixZQUFJLENBQUNzOUIsYUFBTCxHQUFxQixFQUFyQjtBQUNIOztBQUNELFdBQUssSUFBSTluQyxDQUFDLEdBQUd3SyxJQUFJLENBQUN1dkIsTUFBTCxDQUFZMUUsVUFBekIsRUFBcUNyMUIsQ0FBQyxFQUF0QyxHQUEyQztBQUN2QyxZQUFJaWhCLEtBQUssR0FBR2dtQixVQUFVLEVBQXRCO0FBQ0F6OEIsWUFBSSxDQUFDcTlCLFlBQUwsQ0FBa0JsRyxJQUFsQixDQUF1QjFnQixLQUFLLENBQUN1bUIsV0FBN0I7QUFDQWg5QixZQUFJLENBQUNzOUIsYUFBTCxDQUFtQm5HLElBQW5CLENBQXdCMWdCLEtBQUssQ0FBQ21tQixZQUE5QjtBQUNBNThCLFlBQUksQ0FBQyszQixRQUFMLENBQWMvSyxXQUFkLENBQTBCdlcsS0FBSyxDQUFDaW1CLFNBQWhDO0FBQ0g7O0FBQ0QxOEIsVUFBSSxDQUFDKzNCLFFBQUwsQ0FBYy9LLFdBQWQsQ0FBMEJodEIsSUFBSSxDQUFDdTlCLFlBQS9CO0FBQ0g7O0FBQ0QsYUFBU3JFLGFBQVQsR0FBeUI7QUFDckJsNUIsVUFBSSxDQUFDKzNCLFFBQUwsR0FBZ0IvTCxhQUFhLENBQUMsS0FBRCxFQUFRLGtCQUFSLENBQTdCO0FBQ0Foc0IsVUFBSSxDQUFDcTlCLFlBQUwsR0FBb0IsRUFBcEI7QUFDQXI5QixVQUFJLENBQUNzOUIsYUFBTCxHQUFxQixFQUFyQjtBQUNBdDlCLFVBQUksQ0FBQ285QixZQUFMLEdBQW9CcFIsYUFBYSxDQUFDLE1BQUQsRUFBUyxzQkFBVCxDQUFqQztBQUNBaHNCLFVBQUksQ0FBQ285QixZQUFMLENBQWtCYixTQUFsQixHQUE4QnY4QixJQUFJLENBQUN1dkIsTUFBTCxDQUFZNUUsU0FBMUM7QUFDQTNxQixVQUFJLENBQUN1OUIsWUFBTCxHQUFvQnZSLGFBQWEsQ0FBQyxNQUFELEVBQVMsc0JBQVQsQ0FBakM7QUFDQWhzQixVQUFJLENBQUN1OUIsWUFBTCxDQUFrQmhCLFNBQWxCLEdBQThCdjhCLElBQUksQ0FBQ3V2QixNQUFMLENBQVk1RixTQUExQztBQUNBd1QsaUJBQVc7QUFDWGxrQyxZQUFNLENBQUNELGNBQVAsQ0FBc0JnSCxJQUF0QixFQUE0QixxQkFBNUIsRUFBbUQ7QUFDL0MzRixXQUFHLEVBQUUsZUFBWTtBQUFFLGlCQUFPMkYsSUFBSSxDQUFDdzlCLG9CQUFaO0FBQW1DLFNBRFA7QUFFL0MvaUMsV0FBRyxFQUFFLGFBQVUwd0IsSUFBVixFQUFnQjtBQUNqQixjQUFJbnJCLElBQUksQ0FBQ3c5QixvQkFBTCxLQUE4QnJTLElBQWxDLEVBQXdDO0FBQ3BDTyx1QkFBVyxDQUFDMXJCLElBQUksQ0FBQ285QixZQUFOLEVBQW9CLG9CQUFwQixFQUEwQ2pTLElBQTFDLENBQVg7QUFDQW5yQixnQkFBSSxDQUFDdzlCLG9CQUFMLEdBQTRCclMsSUFBNUI7QUFDSDtBQUNKO0FBUDhDLE9BQW5EO0FBU0FseUIsWUFBTSxDQUFDRCxjQUFQLENBQXNCZ0gsSUFBdEIsRUFBNEIscUJBQTVCLEVBQW1EO0FBQy9DM0YsV0FBRyxFQUFFLGVBQVk7QUFBRSxpQkFBTzJGLElBQUksQ0FBQ3k5QixvQkFBWjtBQUFtQyxTQURQO0FBRS9DaGpDLFdBQUcsRUFBRSxhQUFVMHdCLElBQVYsRUFBZ0I7QUFDakIsY0FBSW5yQixJQUFJLENBQUN5OUIsb0JBQUwsS0FBOEJ0UyxJQUFsQyxFQUF3QztBQUNwQ08sdUJBQVcsQ0FBQzFyQixJQUFJLENBQUN1OUIsWUFBTixFQUFvQixvQkFBcEIsRUFBMENwUyxJQUExQyxDQUFYO0FBQ0FuckIsZ0JBQUksQ0FBQ3k5QixvQkFBTCxHQUE0QnRTLElBQTVCO0FBQ0g7QUFDSjtBQVA4QyxPQUFuRDtBQVNBbnJCLFVBQUksQ0FBQzA5QixrQkFBTCxHQUEwQjE5QixJQUFJLENBQUNxOUIsWUFBTCxDQUFrQixDQUFsQixDQUExQjtBQUNBTSxrQ0FBNEI7QUFDNUIsYUFBTzM5QixJQUFJLENBQUMrM0IsUUFBWjtBQUNIOztBQUNELGFBQVN5QixTQUFULEdBQXFCO0FBQ2pCeDVCLFVBQUksQ0FBQzgwQixpQkFBTCxDQUF1QmpKLFNBQXZCLENBQWlDQyxHQUFqQyxDQUFxQyxTQUFyQztBQUNBLFVBQUk5ckIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWS9ULFVBQWhCLEVBQ0l4YixJQUFJLENBQUM4MEIsaUJBQUwsQ0FBdUJqSixTQUF2QixDQUFpQ0MsR0FBakMsQ0FBcUMsWUFBckM7QUFDSjlyQixVQUFJLENBQUNrNEIsYUFBTCxHQUFxQmxNLGFBQWEsQ0FBQyxLQUFELEVBQVEsZ0JBQVIsQ0FBbEM7QUFDQWhzQixVQUFJLENBQUNrNEIsYUFBTCxDQUFtQmUsUUFBbkIsR0FBOEIsQ0FBQyxDQUEvQjtBQUNBLFVBQUkyRSxTQUFTLEdBQUc1UixhQUFhLENBQUMsTUFBRCxFQUFTLDBCQUFULEVBQXFDLEdBQXJDLENBQTdCO0FBQ0EsVUFBSTZSLFNBQVMsR0FBR3JSLGlCQUFpQixDQUFDLGdCQUFELEVBQW1CO0FBQ2hELHNCQUFjeHNCLElBQUksQ0FBQ3l2QixJQUFMLENBQVU5UjtBQUR3QixPQUFuQixDQUFqQztBQUdBM2QsVUFBSSxDQUFDaTJCLFdBQUwsR0FBbUI0SCxTQUFTLENBQUNaLG9CQUFWLENBQStCLE9BQS9CLEVBQXdDLENBQXhDLENBQW5CO0FBQ0EsVUFBSWEsV0FBVyxHQUFHdFIsaUJBQWlCLENBQUMsa0JBQUQsRUFBcUI7QUFDcEQsc0JBQWN4c0IsSUFBSSxDQUFDeXZCLElBQUwsQ0FBVTdSO0FBRDRCLE9BQXJCLENBQW5DO0FBR0E1ZCxVQUFJLENBQUNrMkIsYUFBTCxHQUFxQjRILFdBQVcsQ0FBQ2Isb0JBQVosQ0FBaUMsT0FBakMsRUFBMEMsQ0FBMUMsQ0FBckI7QUFDQWo5QixVQUFJLENBQUNpMkIsV0FBTCxDQUFpQmdELFFBQWpCLEdBQTRCajVCLElBQUksQ0FBQ2syQixhQUFMLENBQW1CK0MsUUFBbkIsR0FBOEIsQ0FBQyxDQUEzRDtBQUNBajVCLFVBQUksQ0FBQ2kyQixXQUFMLENBQWlCajhCLEtBQWpCLEdBQXlCc29CLEdBQUcsQ0FBQ3RpQixJQUFJLENBQUNzMEIscUJBQUwsR0FDdkJ0MEIsSUFBSSxDQUFDczBCLHFCQUFMLENBQTJCeEcsUUFBM0IsRUFEdUIsR0FFdkI5dEIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWWpVLFNBQVosR0FDSXRiLElBQUksQ0FBQ3V2QixNQUFMLENBQVl0VCxXQURoQixHQUVJK1osYUFBYSxDQUFDaDJCLElBQUksQ0FBQ3V2QixNQUFMLENBQVl0VCxXQUFiLENBSkssQ0FBNUI7QUFLQWpjLFVBQUksQ0FBQ2syQixhQUFMLENBQW1CbDhCLEtBQW5CLEdBQTJCc29CLEdBQUcsQ0FBQ3RpQixJQUFJLENBQUNzMEIscUJBQUwsR0FDekJ0MEIsSUFBSSxDQUFDczBCLHFCQUFMLENBQTJCbkYsVUFBM0IsRUFEeUIsR0FFekJudkIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXJULGFBRlksQ0FBOUI7QUFHQWxjLFVBQUksQ0FBQ2kyQixXQUFMLENBQWlCbEosWUFBakIsQ0FBOEIsTUFBOUIsRUFBc0Mvc0IsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWWxHLGFBQVosQ0FBMEJwekIsUUFBMUIsRUFBdEM7QUFDQStKLFVBQUksQ0FBQ2syQixhQUFMLENBQW1CbkosWUFBbkIsQ0FBZ0MsTUFBaEMsRUFBd0Mvc0IsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWS9GLGVBQVosQ0FBNEJ2ekIsUUFBNUIsRUFBeEM7QUFDQStKLFVBQUksQ0FBQ2kyQixXQUFMLENBQWlCbEosWUFBakIsQ0FBOEIsS0FBOUIsRUFBcUMvc0IsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWWpVLFNBQVosR0FBd0IsR0FBeEIsR0FBOEIsR0FBbkU7QUFDQXRiLFVBQUksQ0FBQ2kyQixXQUFMLENBQWlCbEosWUFBakIsQ0FBOEIsS0FBOUIsRUFBcUMvc0IsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWWpVLFNBQVosR0FBd0IsSUFBeEIsR0FBK0IsSUFBcEU7QUFDQXRiLFVBQUksQ0FBQ2syQixhQUFMLENBQW1CbkosWUFBbkIsQ0FBZ0MsS0FBaEMsRUFBdUMsR0FBdkM7QUFDQS9zQixVQUFJLENBQUNrMkIsYUFBTCxDQUFtQm5KLFlBQW5CLENBQWdDLEtBQWhDLEVBQXVDLElBQXZDO0FBQ0Evc0IsVUFBSSxDQUFDazRCLGFBQUwsQ0FBbUJsTCxXQUFuQixDQUErQjZRLFNBQS9CO0FBQ0E3OUIsVUFBSSxDQUFDazRCLGFBQUwsQ0FBbUJsTCxXQUFuQixDQUErQjRRLFNBQS9CO0FBQ0E1OUIsVUFBSSxDQUFDazRCLGFBQUwsQ0FBbUJsTCxXQUFuQixDQUErQjhRLFdBQS9CO0FBQ0EsVUFBSTk5QixJQUFJLENBQUN1dkIsTUFBTCxDQUFZalUsU0FBaEIsRUFDSXRiLElBQUksQ0FBQ2s0QixhQUFMLENBQW1Cck0sU0FBbkIsQ0FBNkJDLEdBQTdCLENBQWlDLFVBQWpDOztBQUNKLFVBQUk5ckIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWWhVLGFBQWhCLEVBQStCO0FBQzNCdmIsWUFBSSxDQUFDazRCLGFBQUwsQ0FBbUJyTSxTQUFuQixDQUE2QkMsR0FBN0IsQ0FBaUMsWUFBakM7QUFDQSxZQUFJaVMsV0FBVyxHQUFHdlIsaUJBQWlCLENBQUMsa0JBQUQsQ0FBbkM7QUFDQXhzQixZQUFJLENBQUNtMkIsYUFBTCxHQUFxQjRILFdBQVcsQ0FBQ2Qsb0JBQVosQ0FBaUMsT0FBakMsRUFBMEMsQ0FBMUMsQ0FBckI7QUFDQWo5QixZQUFJLENBQUNtMkIsYUFBTCxDQUFtQm44QixLQUFuQixHQUEyQnNvQixHQUFHLENBQUN0aUIsSUFBSSxDQUFDczBCLHFCQUFMLEdBQ3pCdDBCLElBQUksQ0FBQ3MwQixxQkFBTCxDQUEyQnBGLFVBQTNCLEVBRHlCLEdBRXpCbHZCLElBQUksQ0FBQ3V2QixNQUFMLENBQVloSCxjQUZZLENBQTlCO0FBR0F2b0IsWUFBSSxDQUFDbTJCLGFBQUwsQ0FBbUJwSixZQUFuQixDQUFnQyxNQUFoQyxFQUF3Qy9zQixJQUFJLENBQUNrMkIsYUFBTCxDQUFtQjhILFlBQW5CLENBQWdDLE1BQWhDLENBQXhDO0FBQ0FoK0IsWUFBSSxDQUFDbTJCLGFBQUwsQ0FBbUJwSixZQUFuQixDQUFnQyxLQUFoQyxFQUF1QyxHQUF2QztBQUNBL3NCLFlBQUksQ0FBQ20yQixhQUFMLENBQW1CcEosWUFBbkIsQ0FBZ0MsS0FBaEMsRUFBdUMsSUFBdkM7QUFDQS9zQixZQUFJLENBQUNrNEIsYUFBTCxDQUFtQmxMLFdBQW5CLENBQStCaEIsYUFBYSxDQUFDLE1BQUQsRUFBUywwQkFBVCxFQUFxQyxHQUFyQyxDQUE1QztBQUNBaHNCLFlBQUksQ0FBQ2s0QixhQUFMLENBQW1CbEwsV0FBbkIsQ0FBK0IrUSxXQUEvQjtBQUNIOztBQUNELFVBQUksQ0FBQy85QixJQUFJLENBQUN1dkIsTUFBTCxDQUFZalUsU0FBakIsRUFBNEI7QUFDeEI7QUFDQXRiLFlBQUksQ0FBQ3lkLElBQUwsR0FBWXVPLGFBQWEsQ0FBQyxNQUFELEVBQVMsaUJBQVQsRUFBNEJoc0IsSUFBSSxDQUFDeXZCLElBQUwsQ0FBVWhTLElBQVYsQ0FBZXlOLEdBQUcsQ0FBQyxDQUFDbHJCLElBQUksQ0FBQ3MwQixxQkFBTCxHQUNuRXQwQixJQUFJLENBQUNpMkIsV0FBTCxDQUFpQmo4QixLQURrRCxHQUVuRWdHLElBQUksQ0FBQ3V2QixNQUFMLENBQVl0VCxXQUZzRCxJQUV2QyxFQUZzQyxDQUFsQixDQUE1QixDQUF6QjtBQUdBamMsWUFBSSxDQUFDeWQsSUFBTCxDQUFVdlQsS0FBVixHQUFrQmxLLElBQUksQ0FBQ3l2QixJQUFMLENBQVVqUyxXQUE1QjtBQUNBeGQsWUFBSSxDQUFDeWQsSUFBTCxDQUFVd2IsUUFBVixHQUFxQixDQUFDLENBQXRCO0FBQ0FqNUIsWUFBSSxDQUFDazRCLGFBQUwsQ0FBbUJsTCxXQUFuQixDQUErQmh0QixJQUFJLENBQUN5ZCxJQUFwQztBQUNIOztBQUNELGFBQU96ZCxJQUFJLENBQUNrNEIsYUFBWjtBQUNIOztBQUNELGFBQVNvQixhQUFULEdBQXlCO0FBQ3JCLFVBQUksQ0FBQ3Q1QixJQUFJLENBQUNpK0IsZ0JBQVYsRUFDSWorQixJQUFJLENBQUNpK0IsZ0JBQUwsR0FBd0JqUyxhQUFhLENBQUMsS0FBRCxFQUFRLG9CQUFSLENBQXJDLENBREosS0FHSUUsU0FBUyxDQUFDbHNCLElBQUksQ0FBQ2krQixnQkFBTixDQUFUOztBQUNKLFdBQUssSUFBSTFvQyxDQUFDLEdBQUd5SyxJQUFJLENBQUN1dkIsTUFBTCxDQUFZMUUsVUFBekIsRUFBcUN0MUIsQ0FBQyxFQUF0QyxHQUEyQztBQUN2QyxZQUFJbW5DLFNBQVMsR0FBRzFRLGFBQWEsQ0FBQyxLQUFELEVBQVEsNEJBQVIsQ0FBN0I7QUFDQWhzQixZQUFJLENBQUNpK0IsZ0JBQUwsQ0FBc0JqUixXQUF0QixDQUFrQzBQLFNBQWxDO0FBQ0g7O0FBQ0R3QixvQkFBYztBQUNkLGFBQU9sK0IsSUFBSSxDQUFDaStCLGdCQUFaO0FBQ0g7O0FBQ0QsYUFBU0MsY0FBVCxHQUEwQjtBQUN0QixVQUFJLENBQUNsK0IsSUFBSSxDQUFDaStCLGdCQUFWLEVBQTRCO0FBQ3hCO0FBQ0g7O0FBQ0QsVUFBSTlnQixjQUFjLEdBQUduZCxJQUFJLENBQUN5dkIsSUFBTCxDQUFVdFMsY0FBL0I7QUFDQSxVQUFJTCxRQUFRLEdBQUc5YyxJQUFJLENBQUN5dkIsSUFBTCxDQUFVM1MsUUFBVixDQUFtQkMsU0FBbkIsQ0FBNkJrTyxLQUE3QixFQUFmOztBQUNBLFVBQUk5TixjQUFjLEdBQUcsQ0FBakIsSUFBc0JBLGNBQWMsR0FBR0wsUUFBUSxDQUFDOW5CLE1BQXBELEVBQTREO0FBQ3hEOG5CLGdCQUFRLEdBQUdBLFFBQVEsQ0FBQ3FoQixNQUFULENBQWdCaGhCLGNBQWhCLEVBQWdDTCxRQUFRLENBQUM5bkIsTUFBekMsRUFBaURvcEMsTUFBakQsQ0FBd0R0aEIsUUFBUSxDQUFDcWhCLE1BQVQsQ0FBZ0IsQ0FBaEIsRUFBbUJoaEIsY0FBbkIsQ0FBeEQsQ0FBWDtBQUNIOztBQUNELFdBQUssSUFBSTVuQixDQUFDLEdBQUd5SyxJQUFJLENBQUN1dkIsTUFBTCxDQUFZMUUsVUFBekIsRUFBcUN0MUIsQ0FBQyxFQUF0QyxHQUEyQztBQUN2Q3lLLFlBQUksQ0FBQ2krQixnQkFBTCxDQUFzQm5ELFFBQXRCLENBQStCdmxDLENBQS9CLEVBQWtDZ25DLFNBQWxDLEdBQThDLHVEQUF1RHpmLFFBQVEsQ0FBQzVsQixJQUFULENBQWMseUNBQWQsQ0FBdkQsR0FBa0gseUJBQWhLO0FBQ0g7QUFDSjtBQUNEOzs7QUFDQSxhQUFTa2lDLFVBQVQsR0FBc0I7QUFDbEJwNUIsVUFBSSxDQUFDODBCLGlCQUFMLENBQXVCakosU0FBdkIsQ0FBaUNDLEdBQWpDLENBQXFDLFVBQXJDO0FBQ0EsVUFBSXlKLFdBQVcsR0FBR3ZKLGFBQWEsQ0FBQyxLQUFELEVBQVEsdUJBQVIsQ0FBL0I7QUFDQXVKLGlCQUFXLENBQUN2SSxXQUFaLENBQXdCaEIsYUFBYSxDQUFDLE1BQUQsRUFBUyxtQkFBVCxFQUE4QmhzQixJQUFJLENBQUN5dkIsSUFBTCxDQUFVblMsZ0JBQXhDLENBQXJDO0FBQ0EsVUFBSWxCLFdBQVcsR0FBRzRQLGFBQWEsQ0FBQyxLQUFELEVBQVEsaUJBQVIsQ0FBL0I7QUFDQXVKLGlCQUFXLENBQUN2SSxXQUFaLENBQXdCNVEsV0FBeEI7QUFDQSxhQUFPO0FBQ0htWixtQkFBVyxFQUFFQSxXQURWO0FBRUhuWixtQkFBVyxFQUFFQTtBQUZWLE9BQVA7QUFJSDs7QUFDRCxhQUFTd1csV0FBVCxDQUFxQjU0QixLQUFyQixFQUE0QnFrQyxRQUE1QixFQUFzQztBQUNsQyxVQUFJQSxRQUFRLEtBQUssS0FBSyxDQUF0QixFQUF5QjtBQUFFQSxnQkFBUSxHQUFHLElBQVg7QUFBa0I7O0FBQzdDLFVBQUlySCxLQUFLLEdBQUdxSCxRQUFRLEdBQUdya0MsS0FBSCxHQUFXQSxLQUFLLEdBQUdnRyxJQUFJLENBQUMyekIsWUFBNUM7QUFDQSxVQUFLcUQsS0FBSyxHQUFHLENBQVIsSUFBYWgzQixJQUFJLENBQUNzK0IsbUJBQUwsS0FBNkIsSUFBM0MsSUFDQ3RILEtBQUssR0FBRyxDQUFSLElBQWFoM0IsSUFBSSxDQUFDdStCLG1CQUFMLEtBQTZCLElBRC9DLEVBRUk7QUFDSnYrQixVQUFJLENBQUMyekIsWUFBTCxJQUFxQnFELEtBQXJCOztBQUNBLFVBQUloM0IsSUFBSSxDQUFDMnpCLFlBQUwsR0FBb0IsQ0FBcEIsSUFBeUIzekIsSUFBSSxDQUFDMnpCLFlBQUwsR0FBb0IsRUFBakQsRUFBcUQ7QUFDakQzekIsWUFBSSxDQUFDNHpCLFdBQUwsSUFBb0I1ekIsSUFBSSxDQUFDMnpCLFlBQUwsR0FBb0IsRUFBcEIsR0FBeUIsQ0FBekIsR0FBNkIsQ0FBQyxDQUFsRDtBQUNBM3pCLFlBQUksQ0FBQzJ6QixZQUFMLEdBQW9CLENBQUMzekIsSUFBSSxDQUFDMnpCLFlBQUwsR0FBb0IsRUFBckIsSUFBMkIsRUFBL0M7QUFDQWdCLG9CQUFZLENBQUMsY0FBRCxDQUFaO0FBQ0E4RCx3QkFBZ0I7QUFDbkI7O0FBQ0RjLGVBQVM7QUFDVDVFLGtCQUFZLENBQUMsZUFBRCxDQUFaO0FBQ0FnSixrQ0FBNEI7QUFDL0I7O0FBQ0QsYUFBUzdLLEtBQVQsQ0FBZTBMLGtCQUFmLEVBQW1DQyxTQUFuQyxFQUE4QztBQUMxQyxVQUFJRCxrQkFBa0IsS0FBSyxLQUFLLENBQWhDLEVBQW1DO0FBQUVBLDBCQUFrQixHQUFHLElBQXJCO0FBQTRCOztBQUNqRSxVQUFJQyxTQUFTLEtBQUssS0FBSyxDQUF2QixFQUEwQjtBQUFFQSxpQkFBUyxHQUFHLElBQVo7QUFBbUI7O0FBQy9DeitCLFVBQUksQ0FBQzRKLEtBQUwsQ0FBVzVQLEtBQVgsR0FBbUIsRUFBbkI7QUFDQSxVQUFJZ0csSUFBSSxDQUFDOG5CLFFBQUwsS0FBa0I0QyxTQUF0QixFQUNJMXFCLElBQUksQ0FBQzhuQixRQUFMLENBQWM5dEIsS0FBZCxHQUFzQixFQUF0QjtBQUNKLFVBQUlnRyxJQUFJLENBQUMwK0IsV0FBTCxLQUFxQmhVLFNBQXpCLEVBQ0kxcUIsSUFBSSxDQUFDMCtCLFdBQUwsQ0FBaUIxa0MsS0FBakIsR0FBeUIsRUFBekI7QUFDSmdHLFVBQUksQ0FBQ3djLGFBQUwsR0FBcUIsRUFBckI7QUFDQXhjLFVBQUksQ0FBQ3MwQixxQkFBTCxHQUE2QjVKLFNBQTdCOztBQUNBLFVBQUkrVCxTQUFTLEtBQUssSUFBbEIsRUFBd0I7QUFDcEJ6K0IsWUFBSSxDQUFDNHpCLFdBQUwsR0FBbUI1ekIsSUFBSSxDQUFDMitCLFlBQUwsQ0FBa0J2VixXQUFsQixFQUFuQjtBQUNBcHBCLFlBQUksQ0FBQzJ6QixZQUFMLEdBQW9CM3pCLElBQUksQ0FBQzIrQixZQUFMLENBQWtCMVAsUUFBbEIsRUFBcEI7QUFDSDs7QUFDRGp2QixVQUFJLENBQUN5MEIsYUFBTCxHQUFxQixLQUFyQjs7QUFDQSxVQUFJejBCLElBQUksQ0FBQ3V2QixNQUFMLENBQVlwYSxVQUFaLEtBQTJCLElBQS9CLEVBQXFDO0FBQ2pDdWhCLHVCQUFlO0FBQ2xCOztBQUNEMTJCLFVBQUksQ0FBQ3F6QixNQUFMO0FBQ0EsVUFBSW1MLGtCQUFKLEVBQ0k7QUFDQTdKLG9CQUFZLENBQUMsVUFBRCxDQUFaO0FBQ1A7O0FBQ0QsYUFBUzVCLEtBQVQsR0FBaUI7QUFDYi95QixVQUFJLENBQUM4ekIsTUFBTCxHQUFjLEtBQWQ7O0FBQ0EsVUFBSSxDQUFDOXpCLElBQUksQ0FBQ20wQixRQUFWLEVBQW9CO0FBQ2hCLFlBQUluMEIsSUFBSSxDQUFDODBCLGlCQUFMLEtBQTJCcEssU0FBL0IsRUFBMEM7QUFDdEMxcUIsY0FBSSxDQUFDODBCLGlCQUFMLENBQXVCakosU0FBdkIsQ0FBaUNFLE1BQWpDLENBQXdDLE1BQXhDO0FBQ0g7O0FBQ0QsWUFBSS9yQixJQUFJLENBQUMrZCxNQUFMLEtBQWdCMk0sU0FBcEIsRUFBK0I7QUFDM0IxcUIsY0FBSSxDQUFDK2QsTUFBTCxDQUFZOE4sU0FBWixDQUFzQkUsTUFBdEIsQ0FBNkIsUUFBN0I7QUFDSDtBQUNKOztBQUNENEksa0JBQVksQ0FBQyxTQUFELENBQVo7QUFDSDs7QUFDRCxhQUFTMUIsT0FBVCxHQUFtQjtBQUNmLFVBQUlqekIsSUFBSSxDQUFDdXZCLE1BQUwsS0FBZ0I3RSxTQUFwQixFQUNJaUssWUFBWSxDQUFDLFdBQUQsQ0FBWjs7QUFDSixXQUFLLElBQUlwL0IsQ0FBQyxHQUFHeUssSUFBSSxDQUFDb3lCLFNBQUwsQ0FBZXA5QixNQUE1QixFQUFvQ08sQ0FBQyxFQUFyQyxHQUEwQztBQUN0QyxZQUFJeXZCLENBQUMsR0FBR2hsQixJQUFJLENBQUNveUIsU0FBTCxDQUFlNzhCLENBQWYsQ0FBUjtBQUNBeXZCLFNBQUMsQ0FBQ2lOLE9BQUYsQ0FBVTJNLG1CQUFWLENBQThCNVosQ0FBQyxDQUFDbGIsS0FBaEMsRUFBdUNrYixDQUFDLENBQUM3SixPQUF6QyxFQUFrRDZKLENBQUMsQ0FBQzVkLE9BQXBEO0FBQ0g7O0FBQ0RwSCxVQUFJLENBQUNveUIsU0FBTCxHQUFpQixFQUFqQjs7QUFDQSxVQUFJcHlCLElBQUksQ0FBQzArQixXQUFULEVBQXNCO0FBQ2xCLFlBQUkxK0IsSUFBSSxDQUFDMCtCLFdBQUwsQ0FBaUJuUyxVQUFyQixFQUNJdnNCLElBQUksQ0FBQzArQixXQUFMLENBQWlCblMsVUFBakIsQ0FBNEJGLFdBQTVCLENBQXdDcnNCLElBQUksQ0FBQzArQixXQUE3QztBQUNKMStCLFlBQUksQ0FBQzArQixXQUFMLEdBQW1CaFUsU0FBbkI7QUFDSCxPQUpELE1BS0ssSUFBSTFxQixJQUFJLENBQUM4MEIsaUJBQUwsSUFBMEI5MEIsSUFBSSxDQUFDODBCLGlCQUFMLENBQXVCdkksVUFBckQsRUFBaUU7QUFDbEUsWUFBSXZzQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZekUsTUFBWixJQUFzQjlxQixJQUFJLENBQUM4MEIsaUJBQUwsQ0FBdUJ2SSxVQUFqRCxFQUE2RDtBQUN6RCxjQUFJSSxPQUFPLEdBQUczc0IsSUFBSSxDQUFDODBCLGlCQUFMLENBQXVCdkksVUFBckM7QUFDQUksaUJBQU8sQ0FBQ2tTLFNBQVIsSUFBcUJsUyxPQUFPLENBQUNOLFdBQVIsQ0FBb0JNLE9BQU8sQ0FBQ2tTLFNBQTVCLENBQXJCOztBQUNBLGNBQUlsUyxPQUFPLENBQUNKLFVBQVosRUFBd0I7QUFDcEIsbUJBQU9JLE9BQU8sQ0FBQ1AsVUFBZjtBQUNJTyxxQkFBTyxDQUFDSixVQUFSLENBQW1CcU4sWUFBbkIsQ0FBZ0NqTixPQUFPLENBQUNQLFVBQXhDLEVBQW9ETyxPQUFwRDtBQURKOztBQUVBQSxtQkFBTyxDQUFDSixVQUFSLENBQW1CRixXQUFuQixDQUErQk0sT0FBL0I7QUFDSDtBQUNKLFNBUkQsTUFVSTNzQixJQUFJLENBQUM4MEIsaUJBQUwsQ0FBdUJ2SSxVQUF2QixDQUFrQ0YsV0FBbEMsQ0FBOENyc0IsSUFBSSxDQUFDODBCLGlCQUFuRDtBQUNQOztBQUNELFVBQUk5MEIsSUFBSSxDQUFDOG5CLFFBQVQsRUFBbUI7QUFDZjluQixZQUFJLENBQUM0SixLQUFMLENBQVdoSyxJQUFYLEdBQWtCLE1BQWxCO0FBQ0EsWUFBSUksSUFBSSxDQUFDOG5CLFFBQUwsQ0FBY3lFLFVBQWxCLEVBQ0l2c0IsSUFBSSxDQUFDOG5CLFFBQUwsQ0FBY3lFLFVBQWQsQ0FBeUJGLFdBQXpCLENBQXFDcnNCLElBQUksQ0FBQzhuQixRQUExQztBQUNKLGVBQU85bkIsSUFBSSxDQUFDOG5CLFFBQVo7QUFDSDs7QUFDRCxVQUFJOW5CLElBQUksQ0FBQzRKLEtBQVQsRUFBZ0I7QUFDWjVKLFlBQUksQ0FBQzRKLEtBQUwsQ0FBV2hLLElBQVgsR0FBa0JJLElBQUksQ0FBQzRKLEtBQUwsQ0FBV2sxQixLQUE3QjtBQUNBOStCLFlBQUksQ0FBQzRKLEtBQUwsQ0FBV2lpQixTQUFYLENBQXFCRSxNQUFyQixDQUE0QixpQkFBNUI7QUFDQS9yQixZQUFJLENBQUM0SixLQUFMLENBQVdtMUIsZUFBWCxDQUEyQixVQUEzQjtBQUNBLytCLFlBQUksQ0FBQzRKLEtBQUwsQ0FBVzVQLEtBQVgsR0FBbUIsRUFBbkI7QUFDSDs7QUFDRCxPQUNJLGdCQURKLEVBRUksdUJBRkosRUFHSSxxQkFISixFQUlJLHFCQUpKLEVBS0ksc0JBTEosRUFNSSxzQkFOSixFQU9JLFVBUEosRUFRSSxRQVJKLEVBU0ksa0JBVEosRUFVSSxnQkFWSixFQVdJLGdCQVhKLEVBWUksTUFaSixFQWFJLGVBYkosRUFjSSxRQWRKLEVBZUksa0JBZkosRUFnQkksZ0JBaEJKLEVBaUJJLFlBakJKLEVBa0JJLFVBbEJKLEVBbUJJLGVBbkJKLEVBb0JJLG1CQXBCSixFQXFCSSxrQkFyQkosRUFzQkksY0F0QkosRUF1QkksY0F2QkosRUF3QkkseUJBeEJKLEVBeUJJLHFCQXpCSixFQTBCSSxvQkExQkosRUEyQkksd0JBM0JKLEVBNEJJLGtCQTVCSixFQTZCSSxRQTdCSixFQThCRWczQixPQTlCRixDQThCVSxVQUFVZ08sQ0FBVixFQUFhO0FBQ25CLFlBQUk7QUFDQSxpQkFBT2gvQixJQUFJLENBQUNnL0IsQ0FBRCxDQUFYO0FBQ0gsU0FGRCxDQUdBLE9BQU83USxDQUFQLEVBQVUsQ0FBRztBQUNoQixPQW5DRDtBQW9DSDs7QUFDRCxhQUFTOFEsY0FBVCxDQUF3QnRULElBQXhCLEVBQThCO0FBQzFCLFVBQUkzckIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWW1LLFFBQVosSUFBd0IxNUIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWW1LLFFBQVosQ0FBcUJmLFFBQXJCLENBQThCaE4sSUFBOUIsQ0FBNUIsRUFDSSxPQUFPLElBQVA7QUFDSixhQUFPM3JCLElBQUksQ0FBQzgwQixpQkFBTCxDQUF1QjZELFFBQXZCLENBQWdDaE4sSUFBaEMsQ0FBUDtBQUNIOztBQUNELGFBQVNrTSxhQUFULENBQXVCOXdCLENBQXZCLEVBQTBCO0FBQ3RCLFVBQUkvRyxJQUFJLENBQUM4ekIsTUFBTCxJQUFlLENBQUM5ekIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWWhHLE1BQWhDLEVBQXdDO0FBQ3BDLFlBQUkyVixhQUFhLEdBQUdqUyxjQUFjLENBQUNsbUIsQ0FBRCxDQUFsQztBQUNBLFlBQUlvNEIsaUJBQWlCLEdBQUdGLGNBQWMsQ0FBQ0MsYUFBRCxDQUF0QztBQUNBLFlBQUlFLE9BQU8sR0FBR0YsYUFBYSxLQUFLbC9CLElBQUksQ0FBQzRKLEtBQXZCLElBQ1ZzMUIsYUFBYSxLQUFLbC9CLElBQUksQ0FBQzhuQixRQURiLElBRVY5bkIsSUFBSSxDQUFDaXlCLE9BQUwsQ0FBYTBHLFFBQWIsQ0FBc0J1RyxhQUF0QixDQUZVLElBR1Y7QUFDQTtBQUNDbjRCLFNBQUMsQ0FBQ29tQixJQUFGLElBQ0dwbUIsQ0FBQyxDQUFDb21CLElBQUYsQ0FBT3gyQixPQURWLEtBRUksQ0FBQ29RLENBQUMsQ0FBQ29tQixJQUFGLENBQU94MkIsT0FBUCxDQUFlcUosSUFBSSxDQUFDNEosS0FBcEIsQ0FBRCxJQUNHLENBQUM3QyxDQUFDLENBQUNvbUIsSUFBRixDQUFPeDJCLE9BQVAsQ0FBZXFKLElBQUksQ0FBQzhuQixRQUFwQixDQUhSLENBTEw7QUFTQSxZQUFJdVgsU0FBUyxHQUFHdDRCLENBQUMsQ0FBQ25ILElBQUYsS0FBVyxNQUFYLEdBQ1Z3L0IsT0FBTyxJQUNMcjRCLENBQUMsQ0FBQ3U0QixhQURKLElBRUUsQ0FBQ0wsY0FBYyxDQUFDbDRCLENBQUMsQ0FBQ3U0QixhQUFILENBSFAsR0FJVixDQUFDRixPQUFELElBQ0UsQ0FBQ0QsaUJBREgsSUFFRSxDQUFDRixjQUFjLENBQUNsNEIsQ0FBQyxDQUFDdTRCLGFBQUgsQ0FOdkI7QUFPQSxZQUFJQyxTQUFTLEdBQUcsQ0FBQ3YvQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZakcsb0JBQVosQ0FBaUNrVyxJQUFqQyxDQUFzQyxVQUFVN1QsSUFBVixFQUFnQjtBQUNuRSxpQkFBT0EsSUFBSSxDQUFDZ04sUUFBTCxDQUFjdUcsYUFBZCxDQUFQO0FBQ0gsU0FGZ0IsQ0FBakI7O0FBR0EsWUFBSUcsU0FBUyxJQUFJRSxTQUFqQixFQUE0QjtBQUN4QixjQUFJdi9CLElBQUksQ0FBQ2s0QixhQUFMLEtBQXVCeE4sU0FBdkIsSUFDQTFxQixJQUFJLENBQUNrMkIsYUFBTCxLQUF1QnhMLFNBRHZCLElBRUExcUIsSUFBSSxDQUFDaTJCLFdBQUwsS0FBcUJ2TCxTQUZ6QixFQUVvQztBQUNoQytLLHNCQUFVO0FBQ2I7O0FBQ0R6MUIsY0FBSSxDQUFDK3lCLEtBQUw7O0FBQ0EsY0FBSS95QixJQUFJLENBQUN1dkIsTUFBTCxDQUFZOUYsSUFBWixLQUFxQixPQUFyQixJQUFnQ3pwQixJQUFJLENBQUN3YyxhQUFMLENBQW1CeG5CLE1BQW5CLEtBQThCLENBQWxFLEVBQXFFO0FBQ2pFZ0wsZ0JBQUksQ0FBQzh5QixLQUFMLENBQVcsS0FBWDtBQUNBOXlCLGdCQUFJLENBQUNxekIsTUFBTDtBQUNIO0FBQ0o7QUFDSjtBQUNKOztBQUNELGFBQVNSLFVBQVQsQ0FBb0I0TSxPQUFwQixFQUE2QjtBQUN6QixVQUFJLENBQUNBLE9BQUQsSUFDQ3ovQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZdlQsT0FBWixJQUF1QnlqQixPQUFPLEdBQUd6L0IsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXZULE9BQVosQ0FBb0JvTixXQUFwQixFQURsQyxJQUVDcHBCLElBQUksQ0FBQ3V2QixNQUFMLENBQVl4VCxPQUFaLElBQXVCMGpCLE9BQU8sR0FBR3ovQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZeFQsT0FBWixDQUFvQnFOLFdBQXBCLEVBRnRDLEVBR0k7QUFDSixVQUFJc1csVUFBVSxHQUFHRCxPQUFqQjtBQUFBLFVBQTBCRSxTQUFTLEdBQUczL0IsSUFBSSxDQUFDNHpCLFdBQUwsS0FBcUI4TCxVQUEzRDtBQUNBMS9CLFVBQUksQ0FBQzR6QixXQUFMLEdBQW1COEwsVUFBVSxJQUFJMS9CLElBQUksQ0FBQzR6QixXQUF0Qzs7QUFDQSxVQUFJNXpCLElBQUksQ0FBQ3V2QixNQUFMLENBQVl4VCxPQUFaLElBQ0EvYixJQUFJLENBQUM0ekIsV0FBTCxLQUFxQjV6QixJQUFJLENBQUN1dkIsTUFBTCxDQUFZeFQsT0FBWixDQUFvQnFOLFdBQXBCLEVBRHpCLEVBQzREO0FBQ3hEcHBCLFlBQUksQ0FBQzJ6QixZQUFMLEdBQW9CbjhCLElBQUksQ0FBQzRSLEdBQUwsQ0FBU3BKLElBQUksQ0FBQ3V2QixNQUFMLENBQVl4VCxPQUFaLENBQW9Ca1QsUUFBcEIsRUFBVCxFQUF5Q2p2QixJQUFJLENBQUMyekIsWUFBOUMsQ0FBcEI7QUFDSCxPQUhELE1BSUssSUFBSTN6QixJQUFJLENBQUN1dkIsTUFBTCxDQUFZdlQsT0FBWixJQUNMaGMsSUFBSSxDQUFDNHpCLFdBQUwsS0FBcUI1ekIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXZULE9BQVosQ0FBb0JvTixXQUFwQixFQURwQixFQUN1RDtBQUN4RHBwQixZQUFJLENBQUMyekIsWUFBTCxHQUFvQm44QixJQUFJLENBQUM2UixHQUFMLENBQVNySixJQUFJLENBQUN1dkIsTUFBTCxDQUFZdlQsT0FBWixDQUFvQmlULFFBQXBCLEVBQVQsRUFBeUNqdkIsSUFBSSxDQUFDMnpCLFlBQTlDLENBQXBCO0FBQ0g7O0FBQ0QsVUFBSWdNLFNBQUosRUFBZTtBQUNYMy9CLFlBQUksQ0FBQ3F6QixNQUFMO0FBQ0FzQixvQkFBWSxDQUFDLGNBQUQsQ0FBWjtBQUNBOEQsd0JBQWdCO0FBQ25CO0FBQ0o7O0FBQ0QsYUFBU3ZGLFNBQVQsQ0FBbUJqdkIsSUFBbkIsRUFBeUIrckIsUUFBekIsRUFBbUM7QUFDL0IsVUFBSUEsUUFBUSxLQUFLLEtBQUssQ0FBdEIsRUFBeUI7QUFBRUEsZ0JBQVEsR0FBRyxJQUFYO0FBQWtCOztBQUM3QyxVQUFJNFAsV0FBVyxHQUFHNS9CLElBQUksQ0FBQ3FaLFNBQUwsQ0FBZXBWLElBQWYsRUFBcUJ5bUIsU0FBckIsRUFBZ0NzRixRQUFoQyxDQUFsQixDQUYrQixDQUU4Qjs7QUFDN0QsVUFBS2h3QixJQUFJLENBQUN1dkIsTUFBTCxDQUFZdlQsT0FBWixJQUNENGpCLFdBREMsSUFFRDFPLFlBQVksQ0FBQzBPLFdBQUQsRUFBYzUvQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZdlQsT0FBMUIsRUFBbUNnVSxRQUFRLEtBQUt0RixTQUFiLEdBQXlCc0YsUUFBekIsR0FBb0MsQ0FBQ2h3QixJQUFJLENBQUNzMkIsY0FBN0UsQ0FBWixHQUEyRyxDQUYzRyxJQUdDdDJCLElBQUksQ0FBQ3V2QixNQUFMLENBQVl4VCxPQUFaLElBQ0c2akIsV0FESCxJQUVHMU8sWUFBWSxDQUFDME8sV0FBRCxFQUFjNS9CLElBQUksQ0FBQ3V2QixNQUFMLENBQVl4VCxPQUExQixFQUFtQ2lVLFFBQVEsS0FBS3RGLFNBQWIsR0FBeUJzRixRQUF6QixHQUFvQyxDQUFDaHdCLElBQUksQ0FBQ3kyQixjQUE3RSxDQUFaLEdBQTJHLENBTG5ILEVBTUksT0FBTyxLQUFQO0FBQ0osVUFBSXoyQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZOUcsTUFBWixDQUFtQnp6QixNQUFuQixLQUE4QixDQUE5QixJQUFtQ2dMLElBQUksQ0FBQ3V2QixNQUFMLENBQVkvRyxPQUFaLENBQW9CeHpCLE1BQXBCLEtBQStCLENBQXRFLEVBQ0ksT0FBTyxJQUFQO0FBQ0osVUFBSTRxQyxXQUFXLEtBQUtsVixTQUFwQixFQUNJLE9BQU8sS0FBUDtBQUNKLFVBQUlTLElBQUksR0FBR25yQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZOUcsTUFBWixDQUFtQnp6QixNQUFuQixHQUE0QixDQUF2QztBQUFBLFVBQTBDNE8sS0FBSyxHQUFHdW5CLElBQUksR0FBR25yQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZOUcsTUFBZixHQUF3QnpvQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZL0csT0FBMUY7O0FBQ0EsV0FBSyxJQUFJanpCLENBQUMsR0FBRyxDQUFSLEVBQVdndEIsQ0FBQyxHQUFHLEtBQUssQ0FBekIsRUFBNEJodEIsQ0FBQyxHQUFHcU8sS0FBSyxDQUFDNU8sTUFBdEMsRUFBOENPLENBQUMsRUFBL0MsRUFBbUQ7QUFDL0NndEIsU0FBQyxHQUFHM2UsS0FBSyxDQUFDck8sQ0FBRCxDQUFUO0FBQ0EsWUFBSSxPQUFPZ3RCLENBQVAsS0FBYSxVQUFiLElBQ0FBLENBQUMsQ0FBQ3FkLFdBQUQsQ0FETCxDQUNtQjtBQURuQixVQUdJLE9BQU96VSxJQUFQLENBSEosS0FJSyxJQUFJNUksQ0FBQyxZQUFZL2MsSUFBYixJQUNMbzZCLFdBQVcsS0FBS2xWLFNBRFgsSUFFTG5JLENBQUMsQ0FBQ3VHLE9BQUYsT0FBZ0I4VyxXQUFXLENBQUM5VyxPQUFaLEVBRmYsRUFHRDtBQUNBLGlCQUFPcUMsSUFBUCxDQUpDLEtBS0EsSUFBSSxPQUFPNUksQ0FBUCxLQUFhLFFBQWIsSUFBeUJxZCxXQUFXLEtBQUtsVixTQUE3QyxFQUF3RDtBQUN6RDtBQUNBLGNBQUkxVCxNQUFNLEdBQUdoWCxJQUFJLENBQUNxWixTQUFMLENBQWVrSixDQUFmLEVBQWtCbUksU0FBbEIsRUFBNkIsSUFBN0IsQ0FBYjtBQUNBLGlCQUFPMVQsTUFBTSxJQUFJQSxNQUFNLENBQUM4UixPQUFQLE9BQXFCOFcsV0FBVyxDQUFDOVcsT0FBWixFQUEvQixHQUNEcUMsSUFEQyxHQUVELENBQUNBLElBRlA7QUFHSCxTQU5JLE1BT0EsS0FDTDtBQUNBLGdCQUFPNUksQ0FBUCxNQUFhLFFBQWIsSUFDSXFkLFdBQVcsS0FBS2xWLFNBRHBCLElBRUluSSxDQUFDLENBQUNzZCxJQUZOLElBR0l0ZCxDQUFDLENBQUN1ZCxFQUhOLElBSUlGLFdBQVcsQ0FBQzlXLE9BQVosTUFBeUJ2RyxDQUFDLENBQUNzZCxJQUFGLENBQU8vVyxPQUFQLEVBSjdCLElBS0k4VyxXQUFXLENBQUM5VyxPQUFaLE1BQXlCdkcsQ0FBQyxDQUFDdWQsRUFBRixDQUFLaFgsT0FBTCxFQVB4QixFQVFELE9BQU9xQyxJQUFQO0FBQ1A7O0FBQ0QsYUFBTyxDQUFDQSxJQUFSO0FBQ0g7O0FBQ0QsYUFBU3NRLFFBQVQsQ0FBa0I5UCxJQUFsQixFQUF3QjtBQUNwQixVQUFJM3JCLElBQUksQ0FBQ2sxQixhQUFMLEtBQXVCeEssU0FBM0IsRUFDSSxPQUFRaUIsSUFBSSxDQUFDQyxTQUFMLENBQWVqMUIsT0FBZixDQUF1QixRQUF2QixNQUFxQyxDQUFDLENBQXRDLElBQ0pxSixJQUFJLENBQUNrMUIsYUFBTCxDQUFtQnlELFFBQW5CLENBQTRCaE4sSUFBNUIsQ0FESjtBQUVKLGFBQU8sS0FBUDtBQUNIOztBQUNELGFBQVMzQixTQUFULENBQW1CampCLENBQW5CLEVBQXNCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBSXE0QixPQUFPLEdBQUdyNEIsQ0FBQyxDQUFDM00sTUFBRixLQUFhNEYsSUFBSSxDQUFDK2QsTUFBaEM7QUFDQSxVQUFJbkMsVUFBVSxHQUFHNWIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWTNULFVBQTdCO0FBQ0EsVUFBSW1rQixZQUFZLEdBQUcvL0IsSUFBSSxDQUFDOHpCLE1BQUwsS0FBZ0IsQ0FBQ2xZLFVBQUQsSUFBZSxDQUFDd2pCLE9BQWhDLENBQW5CO0FBQ0EsVUFBSVksa0JBQWtCLEdBQUdoZ0MsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWWhHLE1BQVosSUFBc0I2VixPQUF0QixJQUFpQyxDQUFDeGpCLFVBQTNEOztBQUNBLFVBQUk3VSxDQUFDLENBQUNpWSxPQUFGLEtBQWMsRUFBZCxJQUFvQm9nQixPQUF4QixFQUFpQztBQUM3QixZQUFJeGpCLFVBQUosRUFBZ0I7QUFDWjViLGNBQUksQ0FBQ2dwQixPQUFMLENBQWFocEIsSUFBSSxDQUFDK2QsTUFBTCxDQUFZL2pCLEtBQXpCLEVBQWdDLElBQWhDLEVBQXNDK00sQ0FBQyxDQUFDM00sTUFBRixLQUFhNEYsSUFBSSxDQUFDOG5CLFFBQWxCLEdBQ2hDOW5CLElBQUksQ0FBQ3V2QixNQUFMLENBQVkxSCxTQURvQixHQUVoQzduQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZOVQsVUFGbEI7QUFHQSxpQkFBTzFVLENBQUMsQ0FBQzNNLE1BQUYsQ0FBUzZsQyxJQUFULEVBQVA7QUFDSCxTQUxELE1BTUs7QUFDRGpnQyxjQUFJLENBQUNvekIsSUFBTDtBQUNIO0FBQ0osT0FWRCxNQVdLLElBQUk2TCxjQUFjLENBQUNsNEIsQ0FBQyxDQUFDM00sTUFBSCxDQUFkLElBQ0wybEMsWUFESyxJQUVMQyxrQkFGQyxFQUVtQjtBQUNwQixZQUFJRSxTQUFTLEdBQUcsQ0FBQyxDQUFDbGdDLElBQUksQ0FBQ2s0QixhQUFQLElBQ1psNEIsSUFBSSxDQUFDazRCLGFBQUwsQ0FBbUJTLFFBQW5CLENBQTRCNXhCLENBQUMsQ0FBQzNNLE1BQTlCLENBREo7O0FBRUEsZ0JBQVEyTSxDQUFDLENBQUNpWSxPQUFWO0FBQ0ksZUFBSyxFQUFMO0FBQ0ksZ0JBQUlraEIsU0FBSixFQUFlO0FBQ1huNUIsZUFBQyxDQUFDbzVCLGNBQUY7QUFDQTFLLHdCQUFVO0FBQ1YySywyQkFBYTtBQUNoQixhQUpELE1BTUluSSxVQUFVLENBQUNseEIsQ0FBRCxDQUFWOztBQUNKOztBQUNKLGVBQUssRUFBTDtBQUFTO0FBQ0xBLGFBQUMsQ0FBQ281QixjQUFGO0FBQ0FDLHlCQUFhO0FBQ2I7O0FBQ0osZUFBSyxDQUFMO0FBQ0EsZUFBSyxFQUFMO0FBQ0ksZ0JBQUloQixPQUFPLElBQUksQ0FBQ3AvQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZM1QsVUFBNUIsRUFBd0M7QUFDcEM3VSxlQUFDLENBQUNvNUIsY0FBRjtBQUNBbmdDLGtCQUFJLENBQUM4eUIsS0FBTDtBQUNIOztBQUNEOztBQUNKLGVBQUssRUFBTDtBQUNBLGVBQUssRUFBTDtBQUNJLGdCQUFJLENBQUNvTixTQUFELElBQWMsQ0FBQ2QsT0FBbkIsRUFBNEI7QUFDeEJyNEIsZUFBQyxDQUFDbzVCLGNBQUY7O0FBQ0Esa0JBQUluZ0MsSUFBSSxDQUFDazFCLGFBQUwsS0FBdUJ4SyxTQUF2QixLQUNDOU8sVUFBVSxLQUFLLEtBQWYsSUFDSS9VLFFBQVEsQ0FBQzYwQixhQUFULElBQTBCRCxRQUFRLENBQUM1MEIsUUFBUSxDQUFDNjBCLGFBQVYsQ0FGdkMsQ0FBSixFQUV1RTtBQUNuRSxvQkFBSTJFLE9BQU8sR0FBR3Q1QixDQUFDLENBQUNpWSxPQUFGLEtBQWMsRUFBZCxHQUFtQixDQUFuQixHQUF1QixDQUFDLENBQXRDO0FBQ0Esb0JBQUksQ0FBQ2pZLENBQUMsQ0FBQ3U1QixPQUFQLEVBQ0kvRSxVQUFVLENBQUM3USxTQUFELEVBQVkyVixPQUFaLENBQVYsQ0FESixLQUVLO0FBQ0R0NUIsbUJBQUMsQ0FBQ3c1QixlQUFGO0FBQ0EzTiw2QkFBVyxDQUFDeU4sT0FBRCxDQUFYO0FBQ0E5RSw0QkFBVSxDQUFDWixvQkFBb0IsQ0FBQyxDQUFELENBQXJCLEVBQTBCLENBQTFCLENBQVY7QUFDSDtBQUNKO0FBQ0osYUFkRCxNQWVLLElBQUkzNkIsSUFBSSxDQUFDaTJCLFdBQVQsRUFDRGoyQixJQUFJLENBQUNpMkIsV0FBTCxDQUFpQnlFLEtBQWpCOztBQUNKOztBQUNKLGVBQUssRUFBTDtBQUNBLGVBQUssRUFBTDtBQUNJM3pCLGFBQUMsQ0FBQ281QixjQUFGO0FBQ0EsZ0JBQUluSixLQUFLLEdBQUdqd0IsQ0FBQyxDQUFDaVksT0FBRixLQUFjLEVBQWQsR0FBbUIsQ0FBbkIsR0FBdUIsQ0FBQyxDQUFwQzs7QUFDQSxnQkFBS2hmLElBQUksQ0FBQ2sxQixhQUFMLElBQXNCbnVCLENBQUMsQ0FBQzNNLE1BQUYsQ0FBUzgvQixFQUFULEtBQWdCeFAsU0FBdkMsSUFDQTNqQixDQUFDLENBQUMzTSxNQUFGLEtBQWE0RixJQUFJLENBQUM0SixLQURsQixJQUVBN0MsQ0FBQyxDQUFDM00sTUFBRixLQUFhNEYsSUFBSSxDQUFDOG5CLFFBRnRCLEVBRWdDO0FBQzVCLGtCQUFJL2dCLENBQUMsQ0FBQ3U1QixPQUFOLEVBQWU7QUFDWHY1QixpQkFBQyxDQUFDdzVCLGVBQUY7QUFDQTFOLDBCQUFVLENBQUM3eUIsSUFBSSxDQUFDNHpCLFdBQUwsR0FBbUJvRCxLQUFwQixDQUFWO0FBQ0F1RSwwQkFBVSxDQUFDWixvQkFBb0IsQ0FBQyxDQUFELENBQXJCLEVBQTBCLENBQTFCLENBQVY7QUFDSCxlQUpELE1BS0ssSUFBSSxDQUFDdUYsU0FBTCxFQUNEM0UsVUFBVSxDQUFDN1EsU0FBRCxFQUFZc00sS0FBSyxHQUFHLENBQXBCLENBQVY7QUFDUCxhQVZELE1BV0ssSUFBSWp3QixDQUFDLENBQUMzTSxNQUFGLEtBQWE0RixJQUFJLENBQUMwOUIsa0JBQXRCLEVBQTBDO0FBQzNDN0ssd0JBQVUsQ0FBQzd5QixJQUFJLENBQUM0ekIsV0FBTCxHQUFtQm9ELEtBQXBCLENBQVY7QUFDSCxhQUZJLE1BR0EsSUFBSWgzQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZcGEsVUFBaEIsRUFBNEI7QUFDN0Isa0JBQUksQ0FBQytxQixTQUFELElBQWNsZ0MsSUFBSSxDQUFDaTJCLFdBQXZCLEVBQ0lqMkIsSUFBSSxDQUFDaTJCLFdBQUwsQ0FBaUJ5RSxLQUFqQjtBQUNKakYsd0JBQVUsQ0FBQzF1QixDQUFELENBQVY7O0FBQ0EvRyxrQkFBSSxDQUFDODFCLGdCQUFMO0FBQ0g7O0FBQ0Q7O0FBQ0osZUFBSyxDQUFMO0FBQ0ksZ0JBQUlvSyxTQUFKLEVBQWU7QUFDWCxrQkFBSU0sS0FBSyxHQUFHLENBQ1J4Z0MsSUFBSSxDQUFDaTJCLFdBREcsRUFFUmoyQixJQUFJLENBQUNrMkIsYUFGRyxFQUdSbDJCLElBQUksQ0FBQ20yQixhQUhHLEVBSVJuMkIsSUFBSSxDQUFDeWQsSUFKRyxFQU1QMmdCLE1BTk8sQ0FNQXArQixJQUFJLENBQUNxeUIsY0FOTCxFQU9QbmUsTUFQTyxDQU9BLFVBQVVwYyxDQUFWLEVBQWE7QUFBRSx1QkFBT0EsQ0FBUDtBQUFXLGVBUDFCLENBQVo7QUFRQSxrQkFBSXZDLENBQUMsR0FBR2lyQyxLQUFLLENBQUM3cEMsT0FBTixDQUFjb1EsQ0FBQyxDQUFDM00sTUFBaEIsQ0FBUjs7QUFDQSxrQkFBSTdFLENBQUMsS0FBSyxDQUFDLENBQVgsRUFBYztBQUNWLG9CQUFJNkUsTUFBTSxHQUFHb21DLEtBQUssQ0FBQ2pyQyxDQUFDLElBQUl3UixDQUFDLENBQUMwNUIsUUFBRixHQUFhLENBQUMsQ0FBZCxHQUFrQixDQUF0QixDQUFGLENBQWxCO0FBQ0ExNUIsaUJBQUMsQ0FBQ281QixjQUFGOztBQUNBLGlCQUFDL2xDLE1BQU0sSUFBSTRGLElBQUksQ0FBQytkLE1BQWhCLEVBQXdCMmMsS0FBeEI7QUFDSDtBQUNKLGFBZkQsTUFnQkssSUFBSSxDQUFDMTZCLElBQUksQ0FBQ3V2QixNQUFMLENBQVkvVCxVQUFiLElBQ0x4YixJQUFJLENBQUNrMUIsYUFEQSxJQUVMbDFCLElBQUksQ0FBQ2sxQixhQUFMLENBQW1CeUQsUUFBbkIsQ0FBNEI1eEIsQ0FBQyxDQUFDM00sTUFBOUIsQ0FGSyxJQUdMMk0sQ0FBQyxDQUFDMDVCLFFBSEQsRUFHVztBQUNaMTVCLGVBQUMsQ0FBQ281QixjQUFGOztBQUNBbmdDLGtCQUFJLENBQUMrZCxNQUFMLENBQVkyYyxLQUFaO0FBQ0g7O0FBQ0Q7O0FBQ0o7QUFDSTtBQTVGUjtBQThGSDs7QUFDRCxVQUFJMTZCLElBQUksQ0FBQ3lkLElBQUwsS0FBY2lOLFNBQWQsSUFBMkIzakIsQ0FBQyxDQUFDM00sTUFBRixLQUFhNEYsSUFBSSxDQUFDeWQsSUFBakQsRUFBdUQ7QUFDbkQsZ0JBQVExVyxDQUFDLENBQUNsTixHQUFWO0FBQ0ksZUFBS21HLElBQUksQ0FBQ3l2QixJQUFMLENBQVVoUyxJQUFWLENBQWUsQ0FBZixFQUFrQmhvQixNQUFsQixDQUF5QixDQUF6QixDQUFMO0FBQ0EsZUFBS3VLLElBQUksQ0FBQ3l2QixJQUFMLENBQVVoUyxJQUFWLENBQWUsQ0FBZixFQUFrQmhvQixNQUFsQixDQUF5QixDQUF6QixFQUE0QjBDLFdBQTVCLEVBQUw7QUFDSTZILGdCQUFJLENBQUN5ZCxJQUFMLENBQVV3TyxXQUFWLEdBQXdCanNCLElBQUksQ0FBQ3l2QixJQUFMLENBQVVoUyxJQUFWLENBQWUsQ0FBZixDQUF4QjtBQUNBb1ksOEJBQWtCO0FBQ2xCdEIsdUJBQVc7QUFDWDs7QUFDSixlQUFLdjBCLElBQUksQ0FBQ3l2QixJQUFMLENBQVVoUyxJQUFWLENBQWUsQ0FBZixFQUFrQmhvQixNQUFsQixDQUF5QixDQUF6QixDQUFMO0FBQ0EsZUFBS3VLLElBQUksQ0FBQ3l2QixJQUFMLENBQVVoUyxJQUFWLENBQWUsQ0FBZixFQUFrQmhvQixNQUFsQixDQUF5QixDQUF6QixFQUE0QjBDLFdBQTVCLEVBQUw7QUFDSTZILGdCQUFJLENBQUN5ZCxJQUFMLENBQVV3TyxXQUFWLEdBQXdCanNCLElBQUksQ0FBQ3l2QixJQUFMLENBQVVoUyxJQUFWLENBQWUsQ0FBZixDQUF4QjtBQUNBb1ksOEJBQWtCO0FBQ2xCdEIsdUJBQVc7QUFDWDtBQVpSO0FBY0g7O0FBQ0QsVUFBSTZLLE9BQU8sSUFBSUgsY0FBYyxDQUFDbDRCLENBQUMsQ0FBQzNNLE1BQUgsQ0FBN0IsRUFBeUM7QUFDckN1NkIsb0JBQVksQ0FBQyxXQUFELEVBQWM1dEIsQ0FBZCxDQUFaO0FBQ0g7QUFDSjs7QUFDRCxhQUFTNHdCLFdBQVQsQ0FBcUJoTSxJQUFyQixFQUEyQjtBQUN2QixVQUFJM3JCLElBQUksQ0FBQ3djLGFBQUwsQ0FBbUJ4bkIsTUFBbkIsS0FBOEIsQ0FBOUIsSUFDQzIyQixJQUFJLEtBQ0EsQ0FBQ0EsSUFBSSxDQUFDRSxTQUFMLENBQWU4TSxRQUFmLENBQXdCLGVBQXhCLENBQUQsSUFDR2hOLElBQUksQ0FBQ0UsU0FBTCxDQUFlOE0sUUFBZixDQUF3QixvQkFBeEIsQ0FGSCxDQURULEVBSUk7QUFDSixVQUFJK0gsU0FBUyxHQUFHL1UsSUFBSSxHQUNkQSxJQUFJLENBQUM4QixPQUFMLENBQWEzRSxPQUFiLEVBRGMsR0FFZDlvQixJQUFJLENBQUNvMUIsSUFBTCxDQUFVdUwsaUJBQVYsQ0FBNEJsVCxPQUE1QixDQUFvQzNFLE9BQXBDLEVBRk47QUFBQSxVQUVxRDhYLFdBQVcsR0FBRzVnQyxJQUFJLENBQUNxWixTQUFMLENBQWVyWixJQUFJLENBQUN3YyxhQUFMLENBQW1CLENBQW5CLENBQWYsRUFBc0NrTyxTQUF0QyxFQUFpRCxJQUFqRCxFQUF1RDVCLE9BQXZELEVBRm5FO0FBQUEsVUFFcUkrWCxjQUFjLEdBQUdycEMsSUFBSSxDQUFDNFIsR0FBTCxDQUFTczNCLFNBQVQsRUFBb0IxZ0MsSUFBSSxDQUFDd2MsYUFBTCxDQUFtQixDQUFuQixFQUFzQnNNLE9BQXRCLEVBQXBCLENBRnRKO0FBQUEsVUFFNE1nWSxZQUFZLEdBQUd0cEMsSUFBSSxDQUFDNlIsR0FBTCxDQUFTcTNCLFNBQVQsRUFBb0IxZ0MsSUFBSSxDQUFDd2MsYUFBTCxDQUFtQixDQUFuQixFQUFzQnNNLE9BQXRCLEVBQXBCLENBRjNOO0FBR0EsVUFBSWlZLGdCQUFnQixHQUFHLEtBQXZCO0FBQ0EsVUFBSUMsUUFBUSxHQUFHLENBQWY7QUFBQSxVQUFrQkMsUUFBUSxHQUFHLENBQTdCOztBQUNBLFdBQUssSUFBSTVaLENBQUMsR0FBR3daLGNBQWIsRUFBNkJ4WixDQUFDLEdBQUd5WixZQUFqQyxFQUErQ3paLENBQUMsSUFBSW9LLFFBQVEsQ0FBQ0MsR0FBN0QsRUFBa0U7QUFDOUQsWUFBSSxDQUFDd0IsU0FBUyxDQUFDLElBQUkxdEIsSUFBSixDQUFTNmhCLENBQVQsQ0FBRCxFQUFjLElBQWQsQ0FBZCxFQUFtQztBQUMvQjBaLDBCQUFnQixHQUNaQSxnQkFBZ0IsSUFBSzFaLENBQUMsR0FBR3daLGNBQUosSUFBc0J4WixDQUFDLEdBQUd5WixZQURuRDtBQUVBLGNBQUl6WixDQUFDLEdBQUd1WixXQUFKLEtBQW9CLENBQUNJLFFBQUQsSUFBYTNaLENBQUMsR0FBRzJaLFFBQXJDLENBQUosRUFDSUEsUUFBUSxHQUFHM1osQ0FBWCxDQURKLEtBRUssSUFBSUEsQ0FBQyxHQUFHdVosV0FBSixLQUFvQixDQUFDSyxRQUFELElBQWE1WixDQUFDLEdBQUc0WixRQUFyQyxDQUFKLEVBQ0RBLFFBQVEsR0FBRzVaLENBQVg7QUFDUDtBQUNKOztBQUNELFdBQUssSUFBSTd4QixDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHd0ssSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWTFFLFVBQWhDLEVBQTRDcjFCLENBQUMsRUFBN0MsRUFBaUQ7QUFDN0MsWUFBSWloQixLQUFLLEdBQUd6VyxJQUFJLENBQUNrMUIsYUFBTCxDQUFtQjRGLFFBQW5CLENBQTRCdGxDLENBQTVCLENBQVo7O0FBQ0EsWUFBSXE4QixPQUFPLEdBQUcsU0FBVkEsT0FBVSxDQUFVdDhCLENBQVYsRUFBYXFFLENBQWIsRUFBZ0I7QUFDMUIsY0FBSXNuQyxPQUFPLEdBQUd6cUIsS0FBSyxDQUFDcWtCLFFBQU4sQ0FBZXZsQyxDQUFmLENBQWQ7QUFBQSxjQUFpQzBPLElBQUksR0FBR2k5QixPQUFPLENBQUN6VCxPQUFoRDtBQUNBLGNBQUk5VixTQUFTLEdBQUcxVCxJQUFJLENBQUM2a0IsT0FBTCxFQUFoQjtBQUNBLGNBQUlxWSxVQUFVLEdBQUlILFFBQVEsR0FBRyxDQUFYLElBQWdCcnBCLFNBQVMsR0FBR3FwQixRQUE3QixJQUNaQyxRQUFRLEdBQUcsQ0FBWCxJQUFnQnRwQixTQUFTLEdBQUdzcEIsUUFEakM7O0FBRUEsY0FBSUUsVUFBSixFQUFnQjtBQUNaRCxtQkFBTyxDQUFDclYsU0FBUixDQUFrQkMsR0FBbEIsQ0FBc0IsWUFBdEI7QUFDQSxhQUFDLFNBQUQsRUFBWSxZQUFaLEVBQTBCLFVBQTFCLEVBQXNDa0YsT0FBdEMsQ0FBOEMsVUFBVTdRLENBQVYsRUFBYTtBQUN2RCtnQixxQkFBTyxDQUFDclYsU0FBUixDQUFrQkUsTUFBbEIsQ0FBeUI1TCxDQUF6QjtBQUNILGFBRkQ7QUFHQSxtQkFBTyxVQUFQO0FBQ0gsV0FORCxNQU9LLElBQUk0Z0IsZ0JBQWdCLElBQUksQ0FBQ0ksVUFBekIsRUFDRCxPQUFPLFVBQVA7O0FBQ0osV0FBQyxZQUFELEVBQWUsU0FBZixFQUEwQixVQUExQixFQUFzQyxZQUF0QyxFQUFvRG5RLE9BQXBELENBQTRELFVBQVU3USxDQUFWLEVBQWE7QUFDckUrZ0IsbUJBQU8sQ0FBQ3JWLFNBQVIsQ0FBa0JFLE1BQWxCLENBQXlCNUwsQ0FBekI7QUFDSCxXQUZEOztBQUdBLGNBQUl3TCxJQUFJLEtBQUtqQixTQUFiLEVBQXdCO0FBQ3BCaUIsZ0JBQUksQ0FBQ0UsU0FBTCxDQUFlQyxHQUFmLENBQW1CNFUsU0FBUyxJQUFJMWdDLElBQUksQ0FBQ3djLGFBQUwsQ0FBbUIsQ0FBbkIsRUFBc0JzTSxPQUF0QixFQUFiLEdBQ2IsWUFEYSxHQUViLFVBRk47QUFHQSxnQkFBSThYLFdBQVcsR0FBR0YsU0FBZCxJQUEyQi9vQixTQUFTLEtBQUtpcEIsV0FBN0MsRUFDSU0sT0FBTyxDQUFDclYsU0FBUixDQUFrQkMsR0FBbEIsQ0FBc0IsWUFBdEIsRUFESixLQUVLLElBQUk4VSxXQUFXLEdBQUdGLFNBQWQsSUFBMkIvb0IsU0FBUyxLQUFLaXBCLFdBQTdDLEVBQ0RNLE9BQU8sQ0FBQ3JWLFNBQVIsQ0FBa0JDLEdBQWxCLENBQXNCLFVBQXRCO0FBQ0osZ0JBQUluVSxTQUFTLElBQUlxcEIsUUFBYixLQUNDQyxRQUFRLEtBQUssQ0FBYixJQUFrQnRwQixTQUFTLElBQUlzcEIsUUFEaEMsS0FFQTVQLFNBQVMsQ0FBQzFaLFNBQUQsRUFBWWlwQixXQUFaLEVBQXlCRixTQUF6QixDQUZiLEVBR0lRLE9BQU8sQ0FBQ3JWLFNBQVIsQ0FBa0JDLEdBQWxCLENBQXNCLFNBQXRCO0FBQ1A7QUFDSixTQTlCRDs7QUErQkEsYUFBSyxJQUFJdjJCLENBQUMsR0FBRyxDQUFSLEVBQVdxRSxDQUFDLEdBQUc2YyxLQUFLLENBQUNxa0IsUUFBTixDQUFlOWxDLE1BQW5DLEVBQTJDTyxDQUFDLEdBQUdxRSxDQUEvQyxFQUFrRHJFLENBQUMsRUFBbkQsRUFBdUQ7QUFDbkRzOEIsaUJBQU8sQ0FBQ3Q4QixDQUFELEVBQUlxRSxDQUFKLENBQVA7QUFDSDtBQUNKO0FBQ0o7O0FBQ0QsYUFBUzg5QixRQUFULEdBQW9CO0FBQ2hCLFVBQUkxM0IsSUFBSSxDQUFDOHpCLE1BQUwsSUFBZSxDQUFDOXpCLElBQUksQ0FBQ3V2QixNQUFMLENBQVl6RSxNQUE1QixJQUFzQyxDQUFDOXFCLElBQUksQ0FBQ3V2QixNQUFMLENBQVloRyxNQUF2RCxFQUNJb0osZ0JBQWdCO0FBQ3ZCOztBQUNELGFBQVMrQyxjQUFULEdBQTBCO0FBQ3RCMTFCLFVBQUksQ0FBQ2dwQixPQUFMLENBQWFocEIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXZULE9BQVosS0FBd0IwTyxTQUF4QixHQUNQLElBQUlsbEIsSUFBSixDQUFTeEYsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXZULE9BQVosQ0FBb0I4TSxPQUFwQixFQUFULENBRE8sR0FFUCxJQUFJdGpCLElBQUosRUFGTixFQUVrQixJQUZsQjtBQUdBa3hCLHFCQUFlO0FBQ2ZuQyxpQkFBVztBQUNkOztBQUNELGFBQVNuQixJQUFULENBQWNyc0IsQ0FBZCxFQUFpQjBqQixlQUFqQixFQUFrQztBQUM5QixVQUFJQSxlQUFlLEtBQUssS0FBSyxDQUE3QixFQUFnQztBQUFFQSx1QkFBZSxHQUFHenFCLElBQUksQ0FBQ29oQyxnQkFBdkI7QUFBMEM7O0FBQzVFLFVBQUlwaEMsSUFBSSxDQUFDbTBCLFFBQUwsS0FBa0IsSUFBdEIsRUFBNEI7QUFDeEIsWUFBSXB0QixDQUFKLEVBQU87QUFDSEEsV0FBQyxDQUFDbzVCLGNBQUY7QUFDQXA1QixXQUFDLENBQUMzTSxNQUFGLElBQVkyTSxDQUFDLENBQUMzTSxNQUFGLENBQVM2bEMsSUFBVCxFQUFaO0FBQ0g7O0FBQ0QsWUFBSWpnQyxJQUFJLENBQUMwK0IsV0FBTCxLQUFxQmhVLFNBQXpCLEVBQW9DO0FBQ2hDMXFCLGNBQUksQ0FBQzArQixXQUFMLENBQWlCaEUsS0FBakI7QUFDQTE2QixjQUFJLENBQUMwK0IsV0FBTCxDQUFpQjJDLEtBQWpCO0FBQ0g7O0FBQ0QxTSxvQkFBWSxDQUFDLFFBQUQsQ0FBWjtBQUNBO0FBQ0g7O0FBQ0QsVUFBSTMwQixJQUFJLENBQUMrZCxNQUFMLENBQVltZixRQUFaLElBQXdCbDlCLElBQUksQ0FBQ3V2QixNQUFMLENBQVloRyxNQUF4QyxFQUNJO0FBQ0osVUFBSStYLE9BQU8sR0FBR3RoQyxJQUFJLENBQUM4ekIsTUFBbkI7QUFDQTl6QixVQUFJLENBQUM4ekIsTUFBTCxHQUFjLElBQWQ7O0FBQ0EsVUFBSSxDQUFDd04sT0FBTCxFQUFjO0FBQ1Z0aEMsWUFBSSxDQUFDODBCLGlCQUFMLENBQXVCakosU0FBdkIsQ0FBaUNDLEdBQWpDLENBQXFDLE1BQXJDOztBQUNBOXJCLFlBQUksQ0FBQytkLE1BQUwsQ0FBWThOLFNBQVosQ0FBc0JDLEdBQXRCLENBQTBCLFFBQTFCOztBQUNBNkksb0JBQVksQ0FBQyxRQUFELENBQVo7QUFDQWhDLHdCQUFnQixDQUFDbEksZUFBRCxDQUFoQjtBQUNIOztBQUNELFVBQUl6cUIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXBhLFVBQVosS0FBMkIsSUFBM0IsSUFBbUNuVixJQUFJLENBQUN1dkIsTUFBTCxDQUFZL1QsVUFBWixLQUEyQixJQUFsRSxFQUF3RTtBQUNwRSxZQUFJeGIsSUFBSSxDQUFDd2MsYUFBTCxDQUFtQnhuQixNQUFuQixLQUE4QixDQUFsQyxFQUFxQztBQUNqQzBnQyx3QkFBYztBQUNqQjs7QUFDRCxZQUFJMTFCLElBQUksQ0FBQ3V2QixNQUFMLENBQVkzVCxVQUFaLEtBQTJCLEtBQTNCLEtBQ0M3VSxDQUFDLEtBQUsyakIsU0FBTixJQUNHLENBQUMxcUIsSUFBSSxDQUFDazRCLGFBQUwsQ0FBbUJTLFFBQW5CLENBQTRCNXhCLENBQUMsQ0FBQ3U0QixhQUE5QixDQUZMLENBQUosRUFFd0Q7QUFDcEQvZixvQkFBVSxDQUFDLFlBQVk7QUFBRSxtQkFBT3ZmLElBQUksQ0FBQ2kyQixXQUFMLENBQWlCM2lCLE1BQWpCLEVBQVA7QUFBbUMsV0FBbEQsRUFBb0QsRUFBcEQsQ0FBVjtBQUNIO0FBQ0o7QUFDSjs7QUFDRCxhQUFTaXVCLGdCQUFULENBQTBCM2hDLElBQTFCLEVBQWdDO0FBQzVCLGFBQU8sVUFBVXFFLElBQVYsRUFBZ0I7QUFDbkIsWUFBSXdwQixPQUFPLEdBQUl6dEIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWSxNQUFNM3ZCLElBQU4sR0FBYSxNQUF6QixJQUFtQ0ksSUFBSSxDQUFDcVosU0FBTCxDQUFlcFYsSUFBZixFQUFxQmpFLElBQUksQ0FBQ3V2QixNQUFMLENBQVk5VCxVQUFqQyxDQUFsRDtBQUNBLFlBQUkrbEIsY0FBYyxHQUFHeGhDLElBQUksQ0FBQ3V2QixNQUFMLENBQVksT0FBTzN2QixJQUFJLEtBQUssS0FBVCxHQUFpQixLQUFqQixHQUF5QixLQUFoQyxJQUF5QyxNQUFyRCxDQUFyQjs7QUFDQSxZQUFJNnRCLE9BQU8sS0FBSy9DLFNBQWhCLEVBQTJCO0FBQ3ZCMXFCLGNBQUksQ0FBQ0osSUFBSSxLQUFLLEtBQVQsR0FBaUIsZ0JBQWpCLEdBQW9DLGdCQUFyQyxDQUFKLEdBQ0k2dEIsT0FBTyxDQUFDSyxRQUFSLEtBQXFCLENBQXJCLElBQ0lMLE9BQU8sQ0FBQzBCLFVBQVIsS0FBdUIsQ0FEM0IsSUFFSTFCLE9BQU8sQ0FBQ3lCLFVBQVIsS0FBdUIsQ0FIL0I7QUFJSDs7QUFDRCxZQUFJbHZCLElBQUksQ0FBQ3djLGFBQVQsRUFBd0I7QUFDcEJ4YyxjQUFJLENBQUN3YyxhQUFMLEdBQXFCeGMsSUFBSSxDQUFDd2MsYUFBTCxDQUFtQnRJLE1BQW5CLENBQTBCLFVBQVVxTyxDQUFWLEVBQWE7QUFBRSxtQkFBTzJRLFNBQVMsQ0FBQzNRLENBQUQsQ0FBaEI7QUFBc0IsV0FBL0QsQ0FBckI7QUFDQSxjQUFJLENBQUN2aUIsSUFBSSxDQUFDd2MsYUFBTCxDQUFtQnhuQixNQUFwQixJQUE4QjRLLElBQUksS0FBSyxLQUEzQyxFQUNJNnlCLGdCQUFnQixDQUFDaEYsT0FBRCxDQUFoQjtBQUNKOEcscUJBQVc7QUFDZDs7QUFDRCxZQUFJdjBCLElBQUksQ0FBQ2sxQixhQUFULEVBQXdCO0FBQ3BCN0IsZ0JBQU07QUFDTixjQUFJNUYsT0FBTyxLQUFLL0MsU0FBaEIsRUFDSTFxQixJQUFJLENBQUMwOUIsa0JBQUwsQ0FBd0I5OUIsSUFBeEIsSUFBZ0M2dEIsT0FBTyxDQUFDckUsV0FBUixHQUFzQm56QixRQUF0QixFQUFoQyxDQURKLEtBR0krSixJQUFJLENBQUMwOUIsa0JBQUwsQ0FBd0JxQixlQUF4QixDQUF3Q24vQixJQUF4QztBQUNKSSxjQUFJLENBQUMwOUIsa0JBQUwsQ0FBd0JSLFFBQXhCLEdBQ0ksQ0FBQyxDQUFDc0UsY0FBRixJQUNJL1QsT0FBTyxLQUFLL0MsU0FEaEIsSUFFSThXLGNBQWMsQ0FBQ3BZLFdBQWYsT0FBaUNxRSxPQUFPLENBQUNyRSxXQUFSLEVBSHpDO0FBSUg7QUFDSixPQTFCRDtBQTJCSDs7QUFDRCxhQUFTMkssV0FBVCxHQUF1QjtBQUNuQixVQUFJME4sUUFBUSxHQUFHLENBQ1gsTUFEVyxFQUVYLGFBRlcsRUFHWCxZQUhXLEVBSVgsWUFKVyxFQUtYLFdBTFcsRUFNWCxZQU5XLEVBT1gsWUFQVyxFQVFYLFVBUlcsRUFTWCx1QkFUVyxFQVVYLFFBVlcsRUFXWCxRQVhXLEVBWVgsZUFaVyxFQWFYLGVBYlcsQ0FBZjs7QUFlQSxVQUFJQyxVQUFVLEdBQUd2YSxPQUFRLENBQUMsRUFBRCxFQUFLK0ssY0FBTCxFQUFxQnR6QixJQUFJLENBQUMraUMsS0FBTCxDQUFXL2lDLElBQUksQ0FBQ2dqQyxTQUFMLENBQWUzUCxPQUFPLENBQUM0UCxPQUFSLElBQW1CLEVBQWxDLENBQVgsQ0FBckIsQ0FBekI7O0FBQ0EsVUFBSTlTLE9BQU8sR0FBRyxFQUFkO0FBQ0EvdUIsVUFBSSxDQUFDdXZCLE1BQUwsQ0FBWWxXLFNBQVosR0FBd0Jxb0IsVUFBVSxDQUFDcm9CLFNBQW5DO0FBQ0FyWixVQUFJLENBQUN1dkIsTUFBTCxDQUFZelQsVUFBWixHQUF5QjRsQixVQUFVLENBQUM1bEIsVUFBcEM7QUFDQTdpQixZQUFNLENBQUNELGNBQVAsQ0FBc0JnSCxJQUFJLENBQUN1dkIsTUFBM0IsRUFBbUMsUUFBbkMsRUFBNkM7QUFDekNsMUIsV0FBRyxFQUFFLGVBQVk7QUFBRSxpQkFBTzJGLElBQUksQ0FBQ3V2QixNQUFMLENBQVkzSCxPQUFuQjtBQUE2QixTQURQO0FBRXpDbnRCLFdBQUcsRUFBRSxhQUFVcW5DLEtBQVYsRUFBaUI7QUFDbEI5aEMsY0FBSSxDQUFDdXZCLE1BQUwsQ0FBWTNILE9BQVosR0FBc0JtYSxjQUFjLENBQUNELEtBQUQsQ0FBcEM7QUFDSDtBQUp3QyxPQUE3QztBQU1BN29DLFlBQU0sQ0FBQ0QsY0FBUCxDQUFzQmdILElBQUksQ0FBQ3V2QixNQUEzQixFQUFtQyxTQUFuQyxFQUE4QztBQUMxQ2wxQixXQUFHLEVBQUUsZUFBWTtBQUFFLGlCQUFPMkYsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWTVILFFBQW5CO0FBQThCLFNBRFA7QUFFMUNsdEIsV0FBRyxFQUFFLGFBQVVxbkMsS0FBVixFQUFpQjtBQUNsQjloQyxjQUFJLENBQUN1dkIsTUFBTCxDQUFZNUgsUUFBWixHQUF1Qm9hLGNBQWMsQ0FBQ0QsS0FBRCxDQUFyQztBQUNIO0FBSnlDLE9BQTlDO0FBTUEsVUFBSUUsUUFBUSxHQUFHTixVQUFVLENBQUNqWSxJQUFYLEtBQW9CLE1BQW5DOztBQUNBLFVBQUksQ0FBQ2lZLFVBQVUsQ0FBQ2ptQixVQUFaLEtBQTJCaW1CLFVBQVUsQ0FBQ3ZzQixVQUFYLElBQXlCNnNCLFFBQXBELENBQUosRUFBbUU7QUFDL0QsWUFBSUMsaUJBQWlCLEdBQUd2bUIsU0FBUyxDQUFDeVcsYUFBVixDQUF3QjFXLFVBQXhCLElBQXNDaU0sUUFBUSxDQUFDak0sVUFBdkU7QUFDQXNULGVBQU8sQ0FBQ3RULFVBQVIsR0FDSWltQixVQUFVLENBQUNsbUIsVUFBWCxJQUF5QndtQixRQUF6QixHQUNNLFNBQVNOLFVBQVUsQ0FBQ25tQixhQUFYLEdBQTJCLElBQTNCLEdBQWtDLEVBQTNDLENBRE4sR0FFTTBtQixpQkFBaUIsR0FBRyxNQUFwQixJQUE4QlAsVUFBVSxDQUFDbm1CLGFBQVgsR0FBMkIsSUFBM0IsR0FBa0MsRUFBaEUsQ0FIVjtBQUlIOztBQUNELFVBQUltbUIsVUFBVSxDQUFDNVosUUFBWCxLQUNDNFosVUFBVSxDQUFDdnNCLFVBQVgsSUFBeUI2c0IsUUFEMUIsS0FFQSxDQUFDTixVQUFVLENBQUM3WixTQUZoQixFQUUyQjtBQUN2QixZQUFJcWEsZ0JBQWdCLEdBQUd4bUIsU0FBUyxDQUFDeVcsYUFBVixDQUF3QnRLLFNBQXhCLElBQXFDSCxRQUFRLENBQUNHLFNBQXJFO0FBQ0FrSCxlQUFPLENBQUNsSCxTQUFSLEdBQ0k2WixVQUFVLENBQUNsbUIsVUFBWCxJQUF5QndtQixRQUF6QixHQUNNLFNBQVNOLFVBQVUsQ0FBQ25tQixhQUFYLEdBQTJCLE1BQTNCLEdBQW9DLElBQTdDLENBRE4sR0FFTTJtQixnQkFBZ0IsSUFBSSxVQUFVUixVQUFVLENBQUNubUIsYUFBWCxHQUEyQixJQUEzQixHQUFrQyxFQUE1QyxJQUFrRCxJQUF0RCxDQUgxQjtBQUlIOztBQUNELFVBQUksQ0FBQ21tQixVQUFVLENBQUMzWixhQUFoQixFQUErQjtBQUMzQi9uQixZQUFJLENBQUN1dkIsTUFBTCxDQUFZeEgsYUFBWixHQUNJL25CLElBQUksQ0FBQzRKLEtBQUwsQ0FBV2dpQixTQUFYLEdBQXVCLEdBQXZCLEdBQTZCNXJCLElBQUksQ0FBQ3V2QixNQUFMLENBQVl4SCxhQUQ3QztBQUVIOztBQUNEOXVCLFlBQU0sQ0FBQ0QsY0FBUCxDQUFzQmdILElBQUksQ0FBQ3V2QixNQUEzQixFQUFtQyxTQUFuQyxFQUE4QztBQUMxQ2wxQixXQUFHLEVBQUUsZUFBWTtBQUFFLGlCQUFPMkYsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWTRTLFFBQW5CO0FBQThCLFNBRFA7QUFFMUMxbkMsV0FBRyxFQUFFOG1DLGdCQUFnQixDQUFDLEtBQUQ7QUFGcUIsT0FBOUM7QUFJQXRvQyxZQUFNLENBQUNELGNBQVAsQ0FBc0JnSCxJQUFJLENBQUN1dkIsTUFBM0IsRUFBbUMsU0FBbkMsRUFBOEM7QUFDMUNsMUIsV0FBRyxFQUFFLGVBQVk7QUFBRSxpQkFBTzJGLElBQUksQ0FBQ3V2QixNQUFMLENBQVk2UyxRQUFuQjtBQUE4QixTQURQO0FBRTFDM25DLFdBQUcsRUFBRThtQyxnQkFBZ0IsQ0FBQyxLQUFEO0FBRnFCLE9BQTlDOztBQUlBLFVBQUljLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBbUIsQ0FBVXppQyxJQUFWLEVBQWdCO0FBQUUsZUFBTyxVQUFVbXhCLEdBQVYsRUFBZTtBQUMzRC93QixjQUFJLENBQUN1dkIsTUFBTCxDQUFZM3ZCLElBQUksS0FBSyxLQUFULEdBQWlCLFVBQWpCLEdBQThCLFVBQTFDLElBQXdESSxJQUFJLENBQUNxWixTQUFMLENBQWUwWCxHQUFmLEVBQW9CLE9BQXBCLENBQXhEO0FBQ0gsU0FGd0M7QUFFckMsT0FGSjs7QUFHQTkzQixZQUFNLENBQUNELGNBQVAsQ0FBc0JnSCxJQUFJLENBQUN1dkIsTUFBM0IsRUFBbUMsU0FBbkMsRUFBOEM7QUFDMUNsMUIsV0FBRyxFQUFFLGVBQVk7QUFBRSxpQkFBTzJGLElBQUksQ0FBQ3V2QixNQUFMLENBQVkrUyxRQUFuQjtBQUE4QixTQURQO0FBRTFDN25DLFdBQUcsRUFBRTRuQyxnQkFBZ0IsQ0FBQyxLQUFEO0FBRnFCLE9BQTlDO0FBSUFwcEMsWUFBTSxDQUFDRCxjQUFQLENBQXNCZ0gsSUFBSSxDQUFDdXZCLE1BQTNCLEVBQW1DLFNBQW5DLEVBQThDO0FBQzFDbDFCLFdBQUcsRUFBRSxlQUFZO0FBQUUsaUJBQU8yRixJQUFJLENBQUN1dkIsTUFBTCxDQUFZZ1QsUUFBbkI7QUFBOEIsU0FEUDtBQUUxQzluQyxXQUFHLEVBQUU0bkMsZ0JBQWdCLENBQUMsS0FBRDtBQUZxQixPQUE5Qzs7QUFJQSxVQUFJWCxVQUFVLENBQUNqWSxJQUFYLEtBQW9CLE1BQXhCLEVBQWdDO0FBQzVCenBCLFlBQUksQ0FBQ3V2QixNQUFMLENBQVkvVCxVQUFaLEdBQXlCLElBQXpCO0FBQ0F4YixZQUFJLENBQUN1dkIsTUFBTCxDQUFZcGEsVUFBWixHQUF5QixJQUF6QjtBQUNIOztBQUNEbGMsWUFBTSxDQUFDbXVCLE1BQVAsQ0FBY3BuQixJQUFJLENBQUN1dkIsTUFBbkIsRUFBMkJSLE9BQTNCLEVBQW9DMlMsVUFBcEM7O0FBQ0EsV0FBSyxJQUFJbnNDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdrc0MsUUFBUSxDQUFDenNDLE1BQTdCLEVBQXFDTyxDQUFDLEVBQXRDO0FBQ0l5SyxZQUFJLENBQUN1dkIsTUFBTCxDQUFZa1MsUUFBUSxDQUFDbHNDLENBQUQsQ0FBcEIsSUFDSXlLLElBQUksQ0FBQ3V2QixNQUFMLENBQVlrUyxRQUFRLENBQUNsc0MsQ0FBRCxDQUFwQixNQUE2QixJQUE3QixJQUNJeUssSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWWtTLFFBQVEsQ0FBQ2xzQyxDQUFELENBQXBCLE1BQTZCLE1BRnJDO0FBREo7O0FBSUFreUIsV0FBSyxDQUFDdlQsTUFBTixDQUFhLFVBQVVzdUIsSUFBVixFQUFnQjtBQUFFLGVBQU94aUMsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWWlULElBQVosTUFBc0I5WCxTQUE3QjtBQUF5QyxPQUF4RSxFQUEwRXNHLE9BQTFFLENBQWtGLFVBQVV3UixJQUFWLEVBQWdCO0FBQzlGeGlDLFlBQUksQ0FBQ3V2QixNQUFMLENBQVlpVCxJQUFaLElBQW9CL1csUUFBUSxDQUFDenJCLElBQUksQ0FBQ3V2QixNQUFMLENBQVlpVCxJQUFaLEtBQXFCLEVBQXRCLENBQVIsQ0FBa0M1UyxHQUFsQyxDQUFzQ2dGLGNBQXRDLENBQXBCO0FBQ0gsT0FGRDtBQUdBNTBCLFVBQUksQ0FBQ20wQixRQUFMLEdBQ0ksQ0FBQ24wQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZcFQsYUFBYixJQUNJLENBQUNuYyxJQUFJLENBQUN1dkIsTUFBTCxDQUFZaEcsTUFEakIsSUFFSXZwQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZOUYsSUFBWixLQUFxQixRQUZ6QixJQUdJLENBQUN6cEIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWS9HLE9BQVosQ0FBb0J4ekIsTUFIekIsSUFJSSxDQUFDZ0wsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWTlHLE1BQVosQ0FBbUJ6ekIsTUFKeEIsSUFLSSxDQUFDZ0wsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWW5ULFdBTGpCLElBTUksaUVBQWlFdGpCLElBQWpFLENBQXNFbXZCLFNBQVMsQ0FBQ0MsU0FBaEYsQ0FQUjs7QUFRQSxXQUFLLElBQUkzeUIsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR3lLLElBQUksQ0FBQ3V2QixNQUFMLENBQVkvRSxPQUFaLENBQW9CeDFCLE1BQXhDLEVBQWdETyxDQUFDLEVBQWpELEVBQXFEO0FBQ2pELFlBQUlrdEMsVUFBVSxHQUFHemlDLElBQUksQ0FBQ3V2QixNQUFMLENBQVkvRSxPQUFaLENBQW9CajFCLENBQXBCLEVBQXVCeUssSUFBdkIsS0FBZ0MsRUFBakQ7O0FBQ0EsYUFBSyxJQUFJbkcsR0FBVCxJQUFnQjRvQyxVQUFoQixFQUE0QjtBQUN4QixjQUFJaGIsS0FBSyxDQUFDOXdCLE9BQU4sQ0FBY2tELEdBQWQsSUFBcUIsQ0FBQyxDQUExQixFQUE2QjtBQUN6Qm1HLGdCQUFJLENBQUN1dkIsTUFBTCxDQUFZMTFCLEdBQVosSUFBbUI0eEIsUUFBUSxDQUFDZ1gsVUFBVSxDQUFDNW9DLEdBQUQsQ0FBWCxDQUFSLENBQ2QrMUIsR0FEYyxDQUNWZ0YsY0FEVSxFQUVkd0osTUFGYyxDQUVQcCtCLElBQUksQ0FBQ3V2QixNQUFMLENBQVkxMUIsR0FBWixDQUZPLENBQW5CO0FBR0gsV0FKRCxNQUtLLElBQUksT0FBTzZuQyxVQUFVLENBQUM3bkMsR0FBRCxDQUFqQixLQUEyQixXQUEvQixFQUNEbUcsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWTExQixHQUFaLElBQW1CNG9DLFVBQVUsQ0FBQzVvQyxHQUFELENBQTdCO0FBQ1A7QUFDSjs7QUFDRDg2QixrQkFBWSxDQUFDLGVBQUQsQ0FBWjtBQUNIOztBQUNELGFBQVNYLFdBQVQsR0FBdUI7QUFDbkIsVUFBSSxRQUFPaDBCLElBQUksQ0FBQ3V2QixNQUFMLENBQVk3WixNQUFuQixNQUE4QixRQUE5QixJQUNBLE9BQU9nRyxTQUFTLENBQUNnbkIsS0FBVixDQUFnQjFpQyxJQUFJLENBQUN1dkIsTUFBTCxDQUFZN1osTUFBNUIsQ0FBUCxLQUErQyxXQURuRCxFQUVJMVYsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWTdHLFlBQVosQ0FBeUIsSUFBSXVJLEtBQUosQ0FBVSwrQkFBK0JqeEIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWTdaLE1BQXJELENBQXpCO0FBQ0oxVixVQUFJLENBQUN5dkIsSUFBTCxHQUFZdEksT0FBUSxDQUFDLEVBQUQsRUFBS3pMLFNBQVMsQ0FBQ2duQixLQUFWLENBQWdCLFNBQWhCLENBQUwsRUFBa0MsUUFBTzFpQyxJQUFJLENBQUN1dkIsTUFBTCxDQUFZN1osTUFBbkIsTUFBOEIsUUFBOUIsR0FDaEQxVixJQUFJLENBQUN1dkIsTUFBTCxDQUFZN1osTUFEb0MsR0FFaEQxVixJQUFJLENBQUN1dkIsTUFBTCxDQUFZN1osTUFBWixLQUF1QixTQUF2QixHQUNJZ0csU0FBUyxDQUFDZ25CLEtBQVYsQ0FBZ0IxaUMsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWTdaLE1BQTVCLENBREosR0FFSWdWLFNBSlUsQ0FBcEI7QUFLQW9FLGdCQUFVLENBQUNqQixDQUFYLEdBQWUsTUFBTTd0QixJQUFJLENBQUN5dkIsSUFBTCxDQUFVaFMsSUFBVixDQUFlLENBQWYsQ0FBTixHQUEwQixHQUExQixHQUFnQ3pkLElBQUksQ0FBQ3l2QixJQUFMLENBQVVoUyxJQUFWLENBQWUsQ0FBZixDQUFoQyxHQUFvRCxHQUFwRCxHQUEwRHpkLElBQUksQ0FBQ3l2QixJQUFMLENBQVVoUyxJQUFWLENBQWUsQ0FBZixFQUFrQnRsQixXQUFsQixFQUExRCxHQUE0RixHQUE1RixHQUFrRzZILElBQUksQ0FBQ3l2QixJQUFMLENBQVVoUyxJQUFWLENBQWUsQ0FBZixFQUFrQnRsQixXQUFsQixFQUFsRyxHQUFvSSxHQUFuSjs7QUFDQSxVQUFJdXBDLFVBQVUsR0FBR3ZhLE9BQVEsQ0FBQyxFQUFELEVBQUsrSyxjQUFMLEVBQXFCdHpCLElBQUksQ0FBQytpQyxLQUFMLENBQVcvaUMsSUFBSSxDQUFDZ2pDLFNBQUwsQ0FBZTNQLE9BQU8sQ0FBQzRQLE9BQVIsSUFBbUIsRUFBbEMsQ0FBWCxDQUFyQixDQUF6Qjs7QUFDQSxVQUFJSCxVQUFVLENBQUNwbUIsU0FBWCxLQUF5Qm9QLFNBQXpCLElBQ0FoUCxTQUFTLENBQUN5VyxhQUFWLENBQXdCN1csU0FBeEIsS0FBc0NvUCxTQUQxQyxFQUNxRDtBQUNqRDFxQixZQUFJLENBQUN1dkIsTUFBTCxDQUFZalUsU0FBWixHQUF3QnRiLElBQUksQ0FBQ3l2QixJQUFMLENBQVVuVSxTQUFsQztBQUNIOztBQUNEdGIsVUFBSSxDQUFDOGIsVUFBTCxHQUFrQnNULG1CQUFtQixDQUFDcHZCLElBQUQsQ0FBckM7QUFDQUEsVUFBSSxDQUFDcVosU0FBTCxHQUFpQnlXLGdCQUFnQixDQUFDO0FBQUVQLGNBQU0sRUFBRXZ2QixJQUFJLENBQUN1dkIsTUFBZjtBQUF1QkUsWUFBSSxFQUFFenZCLElBQUksQ0FBQ3l2QjtBQUFsQyxPQUFELENBQWpDO0FBQ0g7O0FBQ0QsYUFBU2tELGdCQUFULENBQTBCZ1EscUJBQTFCLEVBQWlEO0FBQzdDLFVBQUkzaUMsSUFBSSxDQUFDODBCLGlCQUFMLEtBQTJCcEssU0FBL0IsRUFDSTtBQUNKaUssa0JBQVksQ0FBQyx1QkFBRCxDQUFaO0FBQ0EsVUFBSWxLLGVBQWUsR0FBR2tZLHFCQUFxQixJQUFJM2lDLElBQUksQ0FBQ29oQyxnQkFBcEQ7QUFDQSxVQUFJd0IsY0FBYyxHQUFHNXJDLEtBQUssQ0FBQ3V3QixTQUFOLENBQWdCc2IsTUFBaEIsQ0FBdUJyYixJQUF2QixDQUE0QnhuQixJQUFJLENBQUM4MEIsaUJBQUwsQ0FBdUJnRyxRQUFuRCxFQUE4RCxVQUFVZ0ksR0FBVixFQUFlbG5DLEtBQWYsRUFBc0I7QUFBRSxlQUFPa25DLEdBQUcsR0FBR2xuQyxLQUFLLENBQUNtbkMsWUFBbkI7QUFBa0MsT0FBeEgsRUFBMkgsQ0FBM0gsQ0FBckI7QUFBQSxVQUFvSkMsYUFBYSxHQUFHaGpDLElBQUksQ0FBQzgwQixpQkFBTCxDQUF1Qk8sV0FBM0w7QUFBQSxVQUF3TTROLFNBQVMsR0FBR2pqQyxJQUFJLENBQUN1dkIsTUFBTCxDQUFZL1AsUUFBWixDQUFxQmxvQixLQUFyQixDQUEyQixHQUEzQixDQUFwTjtBQUFBLFVBQXFQNHJDLGlCQUFpQixHQUFHRCxTQUFTLENBQUMsQ0FBRCxDQUFsUjtBQUFBLFVBQXVSRSxtQkFBbUIsR0FBR0YsU0FBUyxDQUFDanVDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJpdUMsU0FBUyxDQUFDLENBQUQsQ0FBaEMsR0FBc0MsSUFBblY7QUFBQSxVQUF5VkcsV0FBVyxHQUFHM1ksZUFBZSxDQUFDNFkscUJBQWhCLEVBQXZXO0FBQUEsVUFBZ1pDLGtCQUFrQixHQUFHajhCLE1BQU0sQ0FBQ2s4QixXQUFQLEdBQXFCSCxXQUFXLENBQUNJLE1BQXRjO0FBQUEsVUFBOGNDLFNBQVMsR0FBR1AsaUJBQWlCLEtBQUssT0FBdEIsSUFDcmRBLGlCQUFpQixLQUFLLE9BQXRCLElBQ0dJLGtCQUFrQixHQUFHVixjQUR4QixJQUVHUSxXQUFXLENBQUNNLEdBQVosR0FBa0JkLGNBSDFCO0FBSUEsVUFBSWMsR0FBRyxHQUFHcjhCLE1BQU0sQ0FBQ3M4QixXQUFQLEdBQ05QLFdBQVcsQ0FBQ00sR0FETixJQUVMLENBQUNELFNBQUQsR0FBYWhaLGVBQWUsQ0FBQ3NZLFlBQWhCLEdBQStCLENBQTVDLEdBQWdELENBQUNILGNBQUQsR0FBa0IsQ0FGN0QsQ0FBVjtBQUdBbFgsaUJBQVcsQ0FBQzFyQixJQUFJLENBQUM4MEIsaUJBQU4sRUFBeUIsVUFBekIsRUFBcUMsQ0FBQzJPLFNBQXRDLENBQVg7QUFDQS9YLGlCQUFXLENBQUMxckIsSUFBSSxDQUFDODBCLGlCQUFOLEVBQXlCLGFBQXpCLEVBQXdDMk8sU0FBeEMsQ0FBWDtBQUNBLFVBQUl6akMsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWWhHLE1BQWhCLEVBQ0k7QUFDSixVQUFJcWEsSUFBSSxHQUFHdjhCLE1BQU0sQ0FBQ3c4QixXQUFQLEdBQ1BULFdBQVcsQ0FBQ1EsSUFETCxJQUVOVCxtQkFBbUIsSUFBSSxJQUF2QixJQUErQkEsbUJBQW1CLEtBQUssUUFBdkQsR0FDSyxDQUFDSCxhQUFhLEdBQUdJLFdBQVcsQ0FBQzlOLEtBQTdCLElBQXNDLENBRDNDLEdBRUssQ0FKQyxDQUFYO0FBS0EsVUFBSXdPLEtBQUssR0FBR3o4QixNQUFNLENBQUNSLFFBQVAsQ0FBZ0JpQyxJQUFoQixDQUFxQnVzQixXQUFyQixJQUFvQ2h1QixNQUFNLENBQUN3OEIsV0FBUCxHQUFxQlQsV0FBVyxDQUFDVSxLQUFyRSxDQUFaO0FBQ0EsVUFBSUMsU0FBUyxHQUFHSCxJQUFJLEdBQUdaLGFBQVAsR0FBdUIzN0IsTUFBTSxDQUFDUixRQUFQLENBQWdCaUMsSUFBaEIsQ0FBcUJ1c0IsV0FBNUQ7QUFDQSxVQUFJMk8sVUFBVSxHQUFHRixLQUFLLEdBQUdkLGFBQVIsR0FBd0IzN0IsTUFBTSxDQUFDUixRQUFQLENBQWdCaUMsSUFBaEIsQ0FBcUJ1c0IsV0FBOUQ7QUFDQTNKLGlCQUFXLENBQUMxckIsSUFBSSxDQUFDODBCLGlCQUFOLEVBQXlCLFdBQXpCLEVBQXNDaVAsU0FBdEMsQ0FBWDtBQUNBLFVBQUkvakMsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXpFLE1BQWhCLEVBQ0k7QUFDSjlxQixVQUFJLENBQUM4MEIsaUJBQUwsQ0FBdUJDLEtBQXZCLENBQTZCMk8sR0FBN0IsR0FBbUNBLEdBQUcsR0FBRyxJQUF6Qzs7QUFDQSxVQUFJLENBQUNLLFNBQUwsRUFBZ0I7QUFDWi9qQyxZQUFJLENBQUM4MEIsaUJBQUwsQ0FBdUJDLEtBQXZCLENBQTZCNk8sSUFBN0IsR0FBb0NBLElBQUksR0FBRyxJQUEzQztBQUNBNWpDLFlBQUksQ0FBQzgwQixpQkFBTCxDQUF1QkMsS0FBdkIsQ0FBNkIrTyxLQUE3QixHQUFxQyxNQUFyQztBQUNILE9BSEQsTUFJSyxJQUFJLENBQUNFLFVBQUwsRUFBaUI7QUFDbEJoa0MsWUFBSSxDQUFDODBCLGlCQUFMLENBQXVCQyxLQUF2QixDQUE2QjZPLElBQTdCLEdBQW9DLE1BQXBDO0FBQ0E1akMsWUFBSSxDQUFDODBCLGlCQUFMLENBQXVCQyxLQUF2QixDQUE2QitPLEtBQTdCLEdBQXFDQSxLQUFLLEdBQUcsSUFBN0M7QUFDSCxPQUhJLE1BSUE7QUFDRCxZQUFJcjlCLEdBQUcsR0FBR0ksUUFBUSxDQUFDbzlCLFdBQVQsQ0FBcUIsQ0FBckIsQ0FBVixDQURDLENBRUQ7O0FBQ0EsWUFBSXg5QixHQUFHLEtBQUtpa0IsU0FBWixFQUNJO0FBQ0osWUFBSXdaLFNBQVMsR0FBRzc4QixNQUFNLENBQUNSLFFBQVAsQ0FBZ0JpQyxJQUFoQixDQUFxQnVzQixXQUFyQztBQUNBLFlBQUk4TyxVQUFVLEdBQUczc0MsSUFBSSxDQUFDNlIsR0FBTCxDQUFTLENBQVQsRUFBWTY2QixTQUFTLEdBQUcsQ0FBWixHQUFnQmxCLGFBQWEsR0FBRyxDQUE1QyxDQUFqQjtBQUNBLFlBQUlvQixZQUFZLEdBQUcsdUNBQW5CO0FBQ0EsWUFBSUMsV0FBVyxHQUFHLHNDQUFsQjtBQUNBLFlBQUlDLFdBQVcsR0FBRzc5QixHQUFHLENBQUM4OUIsUUFBSixDQUFhdnZDLE1BQS9CO0FBQ0EsWUFBSXd2QyxXQUFXLEdBQUcsV0FBV3BCLFdBQVcsQ0FBQ1EsSUFBdkIsR0FBOEIsaUJBQWhEO0FBQ0FsWSxtQkFBVyxDQUFDMXJCLElBQUksQ0FBQzgwQixpQkFBTixFQUF5QixXQUF6QixFQUFzQyxLQUF0QyxDQUFYO0FBQ0FwSixtQkFBVyxDQUFDMXJCLElBQUksQ0FBQzgwQixpQkFBTixFQUF5QixZQUF6QixFQUF1QyxJQUF2QyxDQUFYO0FBQ0FydUIsV0FBRyxDQUFDZytCLFVBQUosQ0FBZUwsWUFBWSxHQUFHLEdBQWYsR0FBcUJDLFdBQXJCLEdBQW1DRyxXQUFsRCxFQUErREYsV0FBL0Q7QUFDQXRrQyxZQUFJLENBQUM4MEIsaUJBQUwsQ0FBdUJDLEtBQXZCLENBQTZCNk8sSUFBN0IsR0FBb0NPLFVBQVUsR0FBRyxJQUFqRDtBQUNBbmtDLFlBQUksQ0FBQzgwQixpQkFBTCxDQUF1QkMsS0FBdkIsQ0FBNkIrTyxLQUE3QixHQUFxQyxNQUFyQztBQUNIO0FBQ0o7O0FBQ0QsYUFBU3pRLE1BQVQsR0FBa0I7QUFDZCxVQUFJcnpCLElBQUksQ0FBQ3V2QixNQUFMLENBQVkvVCxVQUFaLElBQTBCeGIsSUFBSSxDQUFDbTBCLFFBQW5DLEVBQ0k7QUFDSndKLGtDQUE0QjtBQUM1QnBFLGVBQVM7QUFDWjs7QUFDRCxhQUFTNkcsYUFBVCxHQUF5QjtBQUNyQnBnQyxVQUFJLENBQUMrZCxNQUFMLENBQVkyYyxLQUFaOztBQUNBLFVBQUlyekIsTUFBTSxDQUFDNGdCLFNBQVAsQ0FBaUJDLFNBQWpCLENBQTJCdnhCLE9BQTNCLENBQW1DLE1BQW5DLE1BQStDLENBQUMsQ0FBaEQsSUFDQXN4QixTQUFTLENBQUN5YyxnQkFBVixLQUErQmhhLFNBRG5DLEVBQzhDO0FBQzFDO0FBQ0FuTCxrQkFBVSxDQUFDdmYsSUFBSSxDQUFDK3lCLEtBQU4sRUFBYSxDQUFiLENBQVY7QUFDSCxPQUpELE1BS0s7QUFDRC95QixZQUFJLENBQUMreUIsS0FBTDtBQUNIO0FBQ0o7O0FBQ0QsYUFBU2tGLFVBQVQsQ0FBb0JseEIsQ0FBcEIsRUFBdUI7QUFDbkJBLE9BQUMsQ0FBQ281QixjQUFGO0FBQ0FwNUIsT0FBQyxDQUFDdzVCLGVBQUY7O0FBQ0EsVUFBSW9FLFlBQVksR0FBRyxTQUFmQSxZQUFlLENBQVVqdUIsR0FBVixFQUFlO0FBQzlCLGVBQU9BLEdBQUcsQ0FBQ21WLFNBQUosSUFDSG5WLEdBQUcsQ0FBQ21WLFNBQUosQ0FBYzhNLFFBQWQsQ0FBdUIsZUFBdkIsQ0FERyxJQUVILENBQUNqaUIsR0FBRyxDQUFDbVYsU0FBSixDQUFjOE0sUUFBZCxDQUF1QixvQkFBdkIsQ0FGRSxJQUdILENBQUNqaUIsR0FBRyxDQUFDbVYsU0FBSixDQUFjOE0sUUFBZCxDQUF1QixZQUF2QixDQUhMO0FBSUgsT0FMRDs7QUFNQSxVQUFJdFIsQ0FBQyxHQUFHaUYsVUFBVSxDQUFDdmxCLENBQUMsQ0FBQzNNLE1BQUgsRUFBV3VxQyxZQUFYLENBQWxCO0FBQ0EsVUFBSXRkLENBQUMsS0FBS3FELFNBQVYsRUFDSTtBQUNKLFVBQUl0d0IsTUFBTSxHQUFHaXRCLENBQWI7QUFDQSxVQUFJaE0sWUFBWSxHQUFJcmIsSUFBSSxDQUFDczBCLHFCQUFMLEdBQTZCLElBQUk5dUIsSUFBSixDQUFTcEwsTUFBTSxDQUFDcXpCLE9BQVAsQ0FBZTNFLE9BQWYsRUFBVCxDQUFqRDtBQUNBLFVBQUk4YixpQkFBaUIsR0FBRyxDQUFDdnBCLFlBQVksQ0FBQzRULFFBQWIsS0FBMEJqdkIsSUFBSSxDQUFDMnpCLFlBQS9CLElBQ3JCdFksWUFBWSxDQUFDNFQsUUFBYixLQUNJanZCLElBQUksQ0FBQzJ6QixZQUFMLEdBQW9CM3pCLElBQUksQ0FBQ3V2QixNQUFMLENBQVkxRSxVQUFoQyxHQUE2QyxDQUY3QixLQUdwQjdxQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZOUYsSUFBWixLQUFxQixPQUh6QjtBQUlBenBCLFVBQUksQ0FBQ3E2QixnQkFBTCxHQUF3QmpnQyxNQUF4QjtBQUNBLFVBQUk0RixJQUFJLENBQUN1dkIsTUFBTCxDQUFZOUYsSUFBWixLQUFxQixRQUF6QixFQUNJenBCLElBQUksQ0FBQ3djLGFBQUwsR0FBcUIsQ0FBQ25CLFlBQUQsQ0FBckIsQ0FESixLQUVLLElBQUlyYixJQUFJLENBQUN1dkIsTUFBTCxDQUFZOUYsSUFBWixLQUFxQixVQUF6QixFQUFxQztBQUN0QyxZQUFJb2IsYUFBYSxHQUFHekssY0FBYyxDQUFDL2UsWUFBRCxDQUFsQztBQUNBLFlBQUl3cEIsYUFBSixFQUNJN2tDLElBQUksQ0FBQ3djLGFBQUwsQ0FBbUIyaEIsTUFBbkIsQ0FBMEJsNUIsUUFBUSxDQUFDNC9CLGFBQUQsQ0FBbEMsRUFBbUQsQ0FBbkQsRUFESixLQUdJN2tDLElBQUksQ0FBQ3djLGFBQUwsQ0FBbUIyYSxJQUFuQixDQUF3QjliLFlBQXhCO0FBQ1AsT0FOSSxNQU9BLElBQUlyYixJQUFJLENBQUN1dkIsTUFBTCxDQUFZOUYsSUFBWixLQUFxQixPQUF6QixFQUFrQztBQUNuQyxZQUFJenBCLElBQUksQ0FBQ3djLGFBQUwsQ0FBbUJ4bkIsTUFBbkIsS0FBOEIsQ0FBbEMsRUFBcUM7QUFDakNnTCxjQUFJLENBQUM4eUIsS0FBTCxDQUFXLEtBQVgsRUFBa0IsS0FBbEI7QUFDSDs7QUFDRDl5QixZQUFJLENBQUNzMEIscUJBQUwsR0FBNkJqWixZQUE3QjtBQUNBcmIsWUFBSSxDQUFDd2MsYUFBTCxDQUFtQjJhLElBQW5CLENBQXdCOWIsWUFBeEIsRUFMbUMsQ0FNbkM7O0FBQ0EsWUFBSTZWLFlBQVksQ0FBQzdWLFlBQUQsRUFBZXJiLElBQUksQ0FBQ3djLGFBQUwsQ0FBbUIsQ0FBbkIsQ0FBZixFQUFzQyxJQUF0QyxDQUFaLEtBQTRELENBQWhFLEVBQ0l4YyxJQUFJLENBQUN3YyxhQUFMLENBQW1Cc29CLElBQW5CLENBQXdCLFVBQVVDLENBQVYsRUFBYUMsQ0FBYixFQUFnQjtBQUFFLGlCQUFPRCxDQUFDLENBQUNqYyxPQUFGLEtBQWNrYyxDQUFDLENBQUNsYyxPQUFGLEVBQXJCO0FBQW1DLFNBQTdFO0FBQ1A7QUFDRCtNLHdCQUFrQjs7QUFDbEIsVUFBSStPLGlCQUFKLEVBQXVCO0FBQ25CLFlBQUlqRixTQUFTLEdBQUczL0IsSUFBSSxDQUFDNHpCLFdBQUwsS0FBcUJ2WSxZQUFZLENBQUMrTixXQUFiLEVBQXJDO0FBQ0FwcEIsWUFBSSxDQUFDNHpCLFdBQUwsR0FBbUJ2WSxZQUFZLENBQUMrTixXQUFiLEVBQW5CO0FBQ0FwcEIsWUFBSSxDQUFDMnpCLFlBQUwsR0FBb0J0WSxZQUFZLENBQUM0VCxRQUFiLEVBQXBCOztBQUNBLFlBQUkwUSxTQUFKLEVBQWU7QUFDWGhMLHNCQUFZLENBQUMsY0FBRCxDQUFaO0FBQ0E4RCwwQkFBZ0I7QUFDbkI7O0FBQ0Q5RCxvQkFBWSxDQUFDLGVBQUQsQ0FBWjtBQUNIOztBQUNEZ0osa0NBQTRCO0FBQzVCcEUsZUFBUztBQUNUaEYsaUJBQVc7QUFDWCxVQUFJdjBCLElBQUksQ0FBQ3V2QixNQUFMLENBQVlwYSxVQUFoQixFQUNJb0ssVUFBVSxDQUFDLFlBQVk7QUFBRSxlQUFRdmYsSUFBSSxDQUFDeTBCLGFBQUwsR0FBcUIsSUFBN0I7QUFBcUMsT0FBcEQsRUFBc0QsRUFBdEQsQ0FBVixDQXJEZSxDQXNEbkI7O0FBQ0EsVUFBSSxDQUFDbVEsaUJBQUQsSUFDQTVrQyxJQUFJLENBQUN1dkIsTUFBTCxDQUFZOUYsSUFBWixLQUFxQixPQURyQixJQUVBenBCLElBQUksQ0FBQ3V2QixNQUFMLENBQVkxRSxVQUFaLEtBQTJCLENBRi9CLEVBR0kyUCxjQUFjLENBQUNwZ0MsTUFBRCxDQUFkLENBSEosS0FJSyxJQUFJNEYsSUFBSSxDQUFDcTZCLGdCQUFMLEtBQTBCM1AsU0FBMUIsSUFDTDFxQixJQUFJLENBQUNpMkIsV0FBTCxLQUFxQnZMLFNBRHBCLEVBQytCO0FBQ2hDMXFCLFlBQUksQ0FBQ3E2QixnQkFBTCxJQUF5QnI2QixJQUFJLENBQUNxNkIsZ0JBQUwsQ0FBc0JLLEtBQXRCLEVBQXpCO0FBQ0g7QUFDRCxVQUFJMTZCLElBQUksQ0FBQ2kyQixXQUFMLEtBQXFCdkwsU0FBekIsRUFDSTFxQixJQUFJLENBQUNpMkIsV0FBTCxLQUFxQnZMLFNBQXJCLElBQWtDMXFCLElBQUksQ0FBQ2kyQixXQUFMLENBQWlCeUUsS0FBakIsRUFBbEM7O0FBQ0osVUFBSTE2QixJQUFJLENBQUN1dkIsTUFBTCxDQUFZbEgsYUFBaEIsRUFBK0I7QUFDM0IsWUFBSTRjLE1BQU0sR0FBR2psQyxJQUFJLENBQUN1dkIsTUFBTCxDQUFZOUYsSUFBWixLQUFxQixRQUFyQixJQUFpQyxDQUFDenBCLElBQUksQ0FBQ3V2QixNQUFMLENBQVlwYSxVQUEzRDtBQUNBLFlBQUkrdkIsS0FBSyxHQUFHbGxDLElBQUksQ0FBQ3V2QixNQUFMLENBQVk5RixJQUFaLEtBQXFCLE9BQXJCLElBQ1J6cEIsSUFBSSxDQUFDd2MsYUFBTCxDQUFtQnhuQixNQUFuQixLQUE4QixDQUR0QixJQUVSLENBQUNnTCxJQUFJLENBQUN1dkIsTUFBTCxDQUFZcGEsVUFGakI7O0FBR0EsWUFBSTh2QixNQUFNLElBQUlDLEtBQWQsRUFBcUI7QUFDakI5RSx1QkFBYTtBQUNoQjtBQUNKOztBQUNEOUksbUJBQWE7QUFDaEI7O0FBQ0QsUUFBSTZOLFNBQVMsR0FBRztBQUNaenZCLFlBQU0sRUFBRSxDQUFDc2UsV0FBRCxFQUFja0ssY0FBZCxDQURJO0FBRVpyVCxnQkFBVSxFQUFFLENBQUNzUyxXQUFELEVBQWMzSSxnQkFBZCxFQUFnQzhFLGFBQWhDLENBRkE7QUFHWnRkLGFBQU8sRUFBRSxDQUFDbVgsVUFBRCxDQUhHO0FBSVpwWCxhQUFPLEVBQUUsQ0FBQ29YLFVBQUQ7QUFKRyxLQUFoQjs7QUFNQSxhQUFTMTRCLEdBQVQsQ0FBYTRMLE1BQWIsRUFBcUJyTSxLQUFyQixFQUE0QjtBQUN4QixVQUFJcU0sTUFBTSxLQUFLLElBQVgsSUFBbUIsUUFBT0EsTUFBUCxNQUFrQixRQUF6QyxFQUFtRDtBQUMvQ3BOLGNBQU0sQ0FBQ211QixNQUFQLENBQWNwbkIsSUFBSSxDQUFDdXZCLE1BQW5CLEVBQTJCbHBCLE1BQTNCOztBQUNBLGFBQUssSUFBSXhNLEdBQVQsSUFBZ0J3TSxNQUFoQixFQUF3QjtBQUNwQixjQUFJOCtCLFNBQVMsQ0FBQ3RyQyxHQUFELENBQVQsS0FBbUI2d0IsU0FBdkIsRUFDSXlhLFNBQVMsQ0FBQ3RyQyxHQUFELENBQVQsQ0FBZW0zQixPQUFmLENBQXVCLFVBQVVsNUIsQ0FBVixFQUFhO0FBQUUsbUJBQU9BLENBQUMsRUFBUjtBQUFhLFdBQW5EO0FBQ1A7QUFDSixPQU5ELE1BT0s7QUFDRGtJLFlBQUksQ0FBQ3V2QixNQUFMLENBQVlscEIsTUFBWixJQUFzQnJNLEtBQXRCO0FBQ0EsWUFBSW1yQyxTQUFTLENBQUM5K0IsTUFBRCxDQUFULEtBQXNCcWtCLFNBQTFCLEVBQ0l5YSxTQUFTLENBQUM5K0IsTUFBRCxDQUFULENBQWtCMnFCLE9BQWxCLENBQTBCLFVBQVVsNUIsQ0FBVixFQUFhO0FBQUUsaUJBQU9BLENBQUMsRUFBUjtBQUFhLFNBQXRELEVBREosS0FFSyxJQUFJMnZCLEtBQUssQ0FBQzl3QixPQUFOLENBQWMwUCxNQUFkLElBQXdCLENBQUMsQ0FBN0IsRUFDRHJHLElBQUksQ0FBQ3V2QixNQUFMLENBQVlscEIsTUFBWixJQUFzQm9sQixRQUFRLENBQUN6eEIsS0FBRCxDQUE5QjtBQUNQOztBQUNEZ0csVUFBSSxDQUFDcXpCLE1BQUw7QUFDQWtCLGlCQUFXLENBQUMsS0FBRCxDQUFYO0FBQ0g7O0FBQ0QsYUFBUzZRLGVBQVQsQ0FBeUJDLFNBQXpCLEVBQW9DaHBCLE1BQXBDLEVBQTRDO0FBQ3hDLFVBQUl5bEIsS0FBSyxHQUFHLEVBQVo7QUFDQSxVQUFJdUQsU0FBUyxZQUFZcnVDLEtBQXpCLEVBQ0k4cUMsS0FBSyxHQUFHdUQsU0FBUyxDQUFDelYsR0FBVixDQUFjLFVBQVVyTixDQUFWLEVBQWE7QUFBRSxlQUFPdmlCLElBQUksQ0FBQ3FaLFNBQUwsQ0FBZWtKLENBQWYsRUFBa0JsRyxNQUFsQixDQUFQO0FBQW1DLE9BQWhFLENBQVIsQ0FESixLQUVLLElBQUlncEIsU0FBUyxZQUFZNy9CLElBQXJCLElBQTZCLE9BQU82L0IsU0FBUCxLQUFxQixRQUF0RCxFQUNEdkQsS0FBSyxHQUFHLENBQUM5aEMsSUFBSSxDQUFDcVosU0FBTCxDQUFlZ3NCLFNBQWYsRUFBMEJocEIsTUFBMUIsQ0FBRCxDQUFSLENBREMsS0FFQSxJQUFJLE9BQU9ncEIsU0FBUCxLQUFxQixRQUF6QixFQUFtQztBQUNwQyxnQkFBUXJsQyxJQUFJLENBQUN1dkIsTUFBTCxDQUFZOUYsSUFBcEI7QUFDSSxlQUFLLFFBQUw7QUFDQSxlQUFLLE1BQUw7QUFDSXFZLGlCQUFLLEdBQUcsQ0FBQzloQyxJQUFJLENBQUNxWixTQUFMLENBQWVnc0IsU0FBZixFQUEwQmhwQixNQUExQixDQUFELENBQVI7QUFDQTs7QUFDSixlQUFLLFVBQUw7QUFDSXlsQixpQkFBSyxHQUFHdUQsU0FBUyxDQUNaL3RDLEtBREcsQ0FDRzBJLElBQUksQ0FBQ3V2QixNQUFMLENBQVlqSCxXQURmLEVBRUhzSCxHQUZHLENBRUMsVUFBVTNyQixJQUFWLEVBQWdCO0FBQUUscUJBQU9qRSxJQUFJLENBQUNxWixTQUFMLENBQWVwVixJQUFmLEVBQXFCb1ksTUFBckIsQ0FBUDtBQUFzQyxhQUZ6RCxDQUFSO0FBR0E7O0FBQ0osZUFBSyxPQUFMO0FBQ0l5bEIsaUJBQUssR0FBR3VELFNBQVMsQ0FDWi90QyxLQURHLENBQ0cwSSxJQUFJLENBQUN5dkIsSUFBTCxDQUFVcFMsY0FEYixFQUVIdVMsR0FGRyxDQUVDLFVBQVUzckIsSUFBVixFQUFnQjtBQUFFLHFCQUFPakUsSUFBSSxDQUFDcVosU0FBTCxDQUFlcFYsSUFBZixFQUFxQm9ZLE1BQXJCLENBQVA7QUFBc0MsYUFGekQsQ0FBUjtBQUdBOztBQUNKO0FBQ0k7QUFoQlI7QUFrQkgsT0FuQkksTUFxQkRyYyxJQUFJLENBQUN1dkIsTUFBTCxDQUFZN0csWUFBWixDQUF5QixJQUFJdUksS0FBSixDQUFVLDRCQUE0QnJ5QixJQUFJLENBQUNnakMsU0FBTCxDQUFleUQsU0FBZixDQUF0QyxDQUF6QjtBQUNKcmxDLFVBQUksQ0FBQ3djLGFBQUwsR0FBcUJzbEIsS0FBSyxDQUFDNXRCLE1BQU4sQ0FBYSxVQUFVcU8sQ0FBVixFQUFhO0FBQUUsZUFBT0EsQ0FBQyxZQUFZL2MsSUFBYixJQUFxQjB0QixTQUFTLENBQUMzUSxDQUFELEVBQUksS0FBSixDQUFyQztBQUFrRCxPQUE5RSxDQUFyQjtBQUNBLFVBQUl2aUIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWTlGLElBQVosS0FBcUIsT0FBekIsRUFDSXpwQixJQUFJLENBQUN3YyxhQUFMLENBQW1Cc29CLElBQW5CLENBQXdCLFVBQVVDLENBQVYsRUFBYUMsQ0FBYixFQUFnQjtBQUFFLGVBQU9ELENBQUMsQ0FBQ2pjLE9BQUYsS0FBY2tjLENBQUMsQ0FBQ2xjLE9BQUYsRUFBckI7QUFBbUMsT0FBN0U7QUFDUDs7QUFDRCxhQUFTRSxPQUFULENBQWlCL2tCLElBQWpCLEVBQXVCcXpCLGFBQXZCLEVBQXNDamIsTUFBdEMsRUFBOEM7QUFDMUMsVUFBSWliLGFBQWEsS0FBSyxLQUFLLENBQTNCLEVBQThCO0FBQUVBLHFCQUFhLEdBQUcsS0FBaEI7QUFBd0I7O0FBQ3hELFVBQUlqYixNQUFNLEtBQUssS0FBSyxDQUFwQixFQUF1QjtBQUFFQSxjQUFNLEdBQUdyYyxJQUFJLENBQUN1dkIsTUFBTCxDQUFZOVQsVUFBckI7QUFBa0M7O0FBQzNELFVBQUt4WCxJQUFJLEtBQUssQ0FBVCxJQUFjLENBQUNBLElBQWhCLElBQTBCQSxJQUFJLFlBQVlqTixLQUFoQixJQUF5QmlOLElBQUksQ0FBQ2pQLE1BQUwsS0FBZ0IsQ0FBdkUsRUFDSSxPQUFPZ0wsSUFBSSxDQUFDOHlCLEtBQUwsQ0FBV3dFLGFBQVgsQ0FBUDtBQUNKOE4scUJBQWUsQ0FBQ25oQyxJQUFELEVBQU9vWSxNQUFQLENBQWY7QUFDQXJjLFVBQUksQ0FBQ3kwQixhQUFMLEdBQXFCejBCLElBQUksQ0FBQ3djLGFBQUwsQ0FBbUJ4bkIsTUFBbkIsR0FBNEIsQ0FBakQ7QUFDQWdMLFVBQUksQ0FBQ3MwQixxQkFBTCxHQUNJdDBCLElBQUksQ0FBQ3djLGFBQUwsQ0FBbUJ4YyxJQUFJLENBQUN3YyxhQUFMLENBQW1CeG5CLE1BQW5CLEdBQTRCLENBQS9DLENBREo7QUFFQWdMLFVBQUksQ0FBQ3F6QixNQUFMO0FBQ0FGLGdCQUFVO0FBQ1ZWLHNCQUFnQjs7QUFDaEIsVUFBSXp5QixJQUFJLENBQUN3YyxhQUFMLENBQW1CeG5CLE1BQW5CLEtBQThCLENBQWxDLEVBQXFDO0FBQ2pDZ0wsWUFBSSxDQUFDOHlCLEtBQUwsQ0FBVyxLQUFYO0FBQ0g7O0FBQ0R5QixpQkFBVyxDQUFDK0MsYUFBRCxDQUFYO0FBQ0EsVUFBSUEsYUFBSixFQUNJM0MsWUFBWSxDQUFDLFVBQUQsQ0FBWjtBQUNQOztBQUNELGFBQVNvTixjQUFULENBQXdCbFMsR0FBeEIsRUFBNkI7QUFDekIsYUFBT0EsR0FBRyxDQUNMNUUsS0FERSxHQUVGMkUsR0FGRSxDQUVFLFVBQVUwVixJQUFWLEVBQWdCO0FBQ3JCLFlBQUksT0FBT0EsSUFBUCxLQUFnQixRQUFoQixJQUNBLE9BQU9BLElBQVAsS0FBZ0IsUUFEaEIsSUFFQUEsSUFBSSxZQUFZOS9CLElBRnBCLEVBRTBCO0FBQ3RCLGlCQUFPeEYsSUFBSSxDQUFDcVosU0FBTCxDQUFlaXNCLElBQWYsRUFBcUI1YSxTQUFyQixFQUFnQyxJQUFoQyxDQUFQO0FBQ0gsU0FKRCxNQUtLLElBQUk0YSxJQUFJLElBQ1QsUUFBT0EsSUFBUCxNQUFnQixRQURYLElBRUxBLElBQUksQ0FBQ3pGLElBRkEsSUFHTHlGLElBQUksQ0FBQ3hGLEVBSEosRUFJRCxPQUFPO0FBQ0hELGNBQUksRUFBRTcvQixJQUFJLENBQUNxWixTQUFMLENBQWVpc0IsSUFBSSxDQUFDekYsSUFBcEIsRUFBMEJuVixTQUExQixDQURIO0FBRUhvVixZQUFFLEVBQUU5L0IsSUFBSSxDQUFDcVosU0FBTCxDQUFlaXNCLElBQUksQ0FBQ3hGLEVBQXBCLEVBQXdCcFYsU0FBeEI7QUFGRCxTQUFQOztBQUlKLGVBQU80YSxJQUFQO0FBQ0gsT0FqQk0sRUFrQkZweEIsTUFsQkUsQ0FrQkssVUFBVXBjLENBQVYsRUFBYTtBQUFFLGVBQU9BLENBQVA7QUFBVyxPQWxCL0IsQ0FBUCxDQUR5QixDQW1CZ0I7QUFDNUM7O0FBQ0QsYUFBU284QixVQUFULEdBQXNCO0FBQ2xCbDBCLFVBQUksQ0FBQ3djLGFBQUwsR0FBcUIsRUFBckI7QUFDQXhjLFVBQUksQ0FBQzRwQixHQUFMLEdBQVc1cEIsSUFBSSxDQUFDcVosU0FBTCxDQUFlclosSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWTNGLEdBQTNCLEtBQW1DLElBQUlwa0IsSUFBSixFQUE5QyxDQUZrQixDQUdsQjs7QUFDQSxVQUFJKy9CLGFBQWEsR0FBR3ZsQyxJQUFJLENBQUN1dkIsTUFBTCxDQUFZaVcsV0FBWixLQUNmLENBQUN4bEMsSUFBSSxDQUFDNEosS0FBTCxDQUFXNjdCLFFBQVgsS0FBd0IsT0FBeEIsSUFDRXpsQyxJQUFJLENBQUM0SixLQUFMLENBQVc2N0IsUUFBWCxLQUF3QixVQUQzQixLQUVHemxDLElBQUksQ0FBQzRKLEtBQUwsQ0FBVzg3QixXQUZkLElBR0cxbEMsSUFBSSxDQUFDNEosS0FBTCxDQUFXNVAsS0FBWCxLQUFxQmdHLElBQUksQ0FBQzRKLEtBQUwsQ0FBVzg3QixXQUhuQyxHQUlLLElBSkwsR0FLSzFsQyxJQUFJLENBQUM0SixLQUFMLENBQVc1UCxLQU5ELENBQXBCO0FBT0EsVUFBSXVyQyxhQUFKLEVBQ0lILGVBQWUsQ0FBQ0csYUFBRCxFQUFnQnZsQyxJQUFJLENBQUN1dkIsTUFBTCxDQUFZOVQsVUFBNUIsQ0FBZjtBQUNKemIsVUFBSSxDQUFDMitCLFlBQUwsR0FDSTMrQixJQUFJLENBQUN3YyxhQUFMLENBQW1CeG5CLE1BQW5CLEdBQTRCLENBQTVCLEdBQ01nTCxJQUFJLENBQUN3YyxhQUFMLENBQW1CLENBQW5CLENBRE4sR0FFTXhjLElBQUksQ0FBQ3V2QixNQUFMLENBQVl2VCxPQUFaLElBQ0VoYyxJQUFJLENBQUN1dkIsTUFBTCxDQUFZdlQsT0FBWixDQUFvQjhNLE9BQXBCLEtBQWdDOW9CLElBQUksQ0FBQzRwQixHQUFMLENBQVNkLE9BQVQsRUFEbEMsR0FFSTlvQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZdlQsT0FGaEIsR0FHSWhjLElBQUksQ0FBQ3V2QixNQUFMLENBQVl4VCxPQUFaLElBQ0UvYixJQUFJLENBQUN1dkIsTUFBTCxDQUFZeFQsT0FBWixDQUFvQitNLE9BQXBCLEtBQWdDOW9CLElBQUksQ0FBQzRwQixHQUFMLENBQVNkLE9BQVQsRUFEbEMsR0FFSTlvQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZeFQsT0FGaEIsR0FHSS9iLElBQUksQ0FBQzRwQixHQVR2QjtBQVVBNXBCLFVBQUksQ0FBQzR6QixXQUFMLEdBQW1CNXpCLElBQUksQ0FBQzIrQixZQUFMLENBQWtCdlYsV0FBbEIsRUFBbkI7QUFDQXBwQixVQUFJLENBQUMyekIsWUFBTCxHQUFvQjN6QixJQUFJLENBQUMyK0IsWUFBTCxDQUFrQjFQLFFBQWxCLEVBQXBCO0FBQ0EsVUFBSWp2QixJQUFJLENBQUN3YyxhQUFMLENBQW1CeG5CLE1BQW5CLEdBQTRCLENBQWhDLEVBQ0lnTCxJQUFJLENBQUNzMEIscUJBQUwsR0FBNkJ0MEIsSUFBSSxDQUFDd2MsYUFBTCxDQUFtQixDQUFuQixDQUE3QjtBQUNKLFVBQUl4YyxJQUFJLENBQUN1dkIsTUFBTCxDQUFZOEcsT0FBWixLQUF3QjNMLFNBQTVCLEVBQ0kxcUIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWThHLE9BQVosR0FBc0JyMkIsSUFBSSxDQUFDcVosU0FBTCxDQUFlclosSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWThHLE9BQTNCLEVBQW9DLEtBQXBDLENBQXRCO0FBQ0osVUFBSXIyQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZaUgsT0FBWixLQUF3QjlMLFNBQTVCLEVBQ0kxcUIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWWlILE9BQVosR0FBc0J4MkIsSUFBSSxDQUFDcVosU0FBTCxDQUFlclosSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWWlILE9BQTNCLEVBQW9DLEtBQXBDLENBQXRCO0FBQ0p4MkIsVUFBSSxDQUFDczJCLGNBQUwsR0FDSSxDQUFDLENBQUN0MkIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXZULE9BQWQsS0FDS2hjLElBQUksQ0FBQ3V2QixNQUFMLENBQVl2VCxPQUFaLENBQW9COFIsUUFBcEIsS0FBaUMsQ0FBakMsSUFDRzl0QixJQUFJLENBQUN1dkIsTUFBTCxDQUFZdlQsT0FBWixDQUFvQm1ULFVBQXBCLEtBQW1DLENBRHRDLElBRUdudkIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXZULE9BQVosQ0FBb0JrVCxVQUFwQixLQUFtQyxDQUgzQyxDQURKO0FBS0FsdkIsVUFBSSxDQUFDeTJCLGNBQUwsR0FDSSxDQUFDLENBQUN6MkIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXhULE9BQWQsS0FDSy9iLElBQUksQ0FBQ3V2QixNQUFMLENBQVl4VCxPQUFaLENBQW9CK1IsUUFBcEIsS0FBaUMsQ0FBakMsSUFDRzl0QixJQUFJLENBQUN1dkIsTUFBTCxDQUFZeFQsT0FBWixDQUFvQm9ULFVBQXBCLEtBQW1DLENBRHRDLElBRUdudkIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXhULE9BQVosQ0FBb0JtVCxVQUFwQixLQUFtQyxDQUgzQyxDQURKO0FBS0FqMkIsWUFBTSxDQUFDRCxjQUFQLENBQXNCZ0gsSUFBdEIsRUFBNEIsZUFBNUIsRUFBNkM7QUFDekMzRixXQUFHLEVBQUUsZUFBWTtBQUFFLGlCQUFPMkYsSUFBSSxDQUFDMmxDLGNBQVo7QUFBNkIsU0FEUDtBQUV6Q2xyQyxXQUFHLEVBQUUsYUFBVTB3QixJQUFWLEVBQWdCO0FBQ2pCbnJCLGNBQUksQ0FBQzJsQyxjQUFMLEdBQXNCeGEsSUFBdEI7QUFDQSxjQUFJbnJCLElBQUksQ0FBQzgwQixpQkFBVCxFQUNJcEosV0FBVyxDQUFDMXJCLElBQUksQ0FBQzgwQixpQkFBTixFQUF5QixlQUF6QixFQUEwQzNKLElBQTFDLENBQVg7QUFDSm5yQixjQUFJLENBQUM4ekIsTUFBTCxJQUFlbkIsZ0JBQWdCLEVBQS9CO0FBQ0g7QUFQd0MsT0FBN0M7QUFTSDs7QUFDRCxhQUFTc0IsV0FBVCxHQUF1QjtBQUNuQmowQixVQUFJLENBQUM0SixLQUFMLEdBQWE1SixJQUFJLENBQUN1dkIsTUFBTCxDQUFZNVQsSUFBWixHQUNQc1csT0FBTyxDQUFDMlQsYUFBUixDQUFzQixjQUF0QixDQURPLEdBRVAzVCxPQUZOO0FBR0E7O0FBQ0EsVUFBSSxDQUFDanlCLElBQUksQ0FBQzRKLEtBQVYsRUFBaUI7QUFDYjVKLFlBQUksQ0FBQ3V2QixNQUFMLENBQVk3RyxZQUFaLENBQXlCLElBQUl1SSxLQUFKLENBQVUsaUNBQVYsQ0FBekI7QUFDQTtBQUNILE9BUmtCLENBU25COzs7QUFDQWp4QixVQUFJLENBQUM0SixLQUFMLENBQVdrMUIsS0FBWCxHQUFtQjkrQixJQUFJLENBQUM0SixLQUFMLENBQVdoSyxJQUE5QjtBQUNBSSxVQUFJLENBQUM0SixLQUFMLENBQVdoSyxJQUFYLEdBQWtCLE1BQWxCO0FBQ0FJLFVBQUksQ0FBQzRKLEtBQUwsQ0FBV2lpQixTQUFYLENBQXFCQyxHQUFyQixDQUF5QixpQkFBekI7QUFDQTlyQixVQUFJLENBQUMrZCxNQUFMLEdBQWMvZCxJQUFJLENBQUM0SixLQUFuQjs7QUFDQSxVQUFJNUosSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXpILFFBQWhCLEVBQTBCO0FBQ3RCO0FBQ0E5bkIsWUFBSSxDQUFDOG5CLFFBQUwsR0FBZ0JrRSxhQUFhLENBQUNoc0IsSUFBSSxDQUFDNEosS0FBTCxDQUFXNjdCLFFBQVosRUFBc0J6bEMsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXhILGFBQWxDLENBQTdCO0FBQ0EvbkIsWUFBSSxDQUFDK2QsTUFBTCxHQUFjL2QsSUFBSSxDQUFDOG5CLFFBQW5CO0FBQ0E5bkIsWUFBSSxDQUFDOG5CLFFBQUwsQ0FBYzRkLFdBQWQsR0FBNEIxbEMsSUFBSSxDQUFDNEosS0FBTCxDQUFXODdCLFdBQXZDO0FBQ0ExbEMsWUFBSSxDQUFDOG5CLFFBQUwsQ0FBY29WLFFBQWQsR0FBeUJsOUIsSUFBSSxDQUFDNEosS0FBTCxDQUFXc3pCLFFBQXBDO0FBQ0FsOUIsWUFBSSxDQUFDOG5CLFFBQUwsQ0FBY25uQixRQUFkLEdBQXlCWCxJQUFJLENBQUM0SixLQUFMLENBQVdqSixRQUFwQztBQUNBWCxZQUFJLENBQUM4bkIsUUFBTCxDQUFjbVIsUUFBZCxHQUF5Qmo1QixJQUFJLENBQUM0SixLQUFMLENBQVdxdkIsUUFBcEM7QUFDQWo1QixZQUFJLENBQUM4bkIsUUFBTCxDQUFjbG9CLElBQWQsR0FBcUIsTUFBckI7QUFDQUksWUFBSSxDQUFDNEosS0FBTCxDQUFXbWpCLFlBQVgsQ0FBd0IsTUFBeEIsRUFBZ0MsUUFBaEM7QUFDQSxZQUFJLENBQUMvc0IsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXpFLE1BQWIsSUFBdUI5cUIsSUFBSSxDQUFDNEosS0FBTCxDQUFXMmlCLFVBQXRDLEVBQ0l2c0IsSUFBSSxDQUFDNEosS0FBTCxDQUFXMmlCLFVBQVgsQ0FBc0JxTixZQUF0QixDQUFtQzU1QixJQUFJLENBQUM4bkIsUUFBeEMsRUFBa0Q5bkIsSUFBSSxDQUFDNEosS0FBTCxDQUFXaXdCLFdBQTdEO0FBQ1A7O0FBQ0QsVUFBSSxDQUFDNzVCLElBQUksQ0FBQ3V2QixNQUFMLENBQVkzVCxVQUFqQixFQUNJNWIsSUFBSSxDQUFDK2QsTUFBTCxDQUFZZ1AsWUFBWixDQUF5QixVQUF6QixFQUFxQyxVQUFyQztBQUNKL3NCLFVBQUksQ0FBQ29oQyxnQkFBTCxHQUF3QnBoQyxJQUFJLENBQUN1dkIsTUFBTCxDQUFZOUUsZUFBWixJQUErQnpxQixJQUFJLENBQUMrZCxNQUE1RDtBQUNIOztBQUNELGFBQVN5WixXQUFULEdBQXVCO0FBQ25CLFVBQUlxTyxTQUFTLEdBQUc3bEMsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXBhLFVBQVosR0FDVm5WLElBQUksQ0FBQ3V2QixNQUFMLENBQVkvVCxVQUFaLEdBQ0ksTUFESixHQUVJLGdCQUhNLEdBSVYsTUFKTjtBQUtBeGIsVUFBSSxDQUFDMCtCLFdBQUwsR0FBbUIxUyxhQUFhLENBQUMsT0FBRCxFQUFVaHNCLElBQUksQ0FBQzRKLEtBQUwsQ0FBV2dpQixTQUFYLEdBQXVCLG1CQUFqQyxDQUFoQztBQUNBNXJCLFVBQUksQ0FBQzArQixXQUFMLENBQWlCcDFCLElBQWpCLEdBQXdCdEosSUFBSSxDQUFDNEosS0FBTCxDQUFXbzBCLFlBQVgsQ0FBd0IsTUFBeEIsS0FBbUMsS0FBM0Q7QUFDQWgrQixVQUFJLENBQUMwK0IsV0FBTCxDQUFpQnpGLFFBQWpCLEdBQTRCLENBQTVCO0FBQ0FqNUIsVUFBSSxDQUFDMCtCLFdBQUwsQ0FBaUI5K0IsSUFBakIsR0FBd0JpbUMsU0FBeEI7QUFDQTdsQyxVQUFJLENBQUMwK0IsV0FBTCxDQUFpQnhCLFFBQWpCLEdBQTRCbDlCLElBQUksQ0FBQzRKLEtBQUwsQ0FBV3N6QixRQUF2QztBQUNBbDlCLFVBQUksQ0FBQzArQixXQUFMLENBQWlCLzlCLFFBQWpCLEdBQTRCWCxJQUFJLENBQUM0SixLQUFMLENBQVdqSixRQUF2QztBQUNBWCxVQUFJLENBQUMwK0IsV0FBTCxDQUFpQmdILFdBQWpCLEdBQStCMWxDLElBQUksQ0FBQzRKLEtBQUwsQ0FBVzg3QixXQUExQztBQUNBMWxDLFVBQUksQ0FBQzhsQyxlQUFMLEdBQ0lELFNBQVMsS0FBSyxnQkFBZCxHQUNNLGVBRE4sR0FFTUEsU0FBUyxLQUFLLE1BQWQsR0FDSSxPQURKLEdBRUksT0FMZDs7QUFNQSxVQUFJN2xDLElBQUksQ0FBQ3djLGFBQUwsQ0FBbUJ4bkIsTUFBbkIsR0FBNEIsQ0FBaEMsRUFBbUM7QUFDL0JnTCxZQUFJLENBQUMwK0IsV0FBTCxDQUFpQnFILFlBQWpCLEdBQWdDL2xDLElBQUksQ0FBQzArQixXQUFMLENBQWlCMWtDLEtBQWpCLEdBQXlCZ0csSUFBSSxDQUFDOGIsVUFBTCxDQUFnQjliLElBQUksQ0FBQ3djLGFBQUwsQ0FBbUIsQ0FBbkIsQ0FBaEIsRUFBdUN4YyxJQUFJLENBQUM4bEMsZUFBNUMsQ0FBekQ7QUFDSDs7QUFDRCxVQUFJOWxDLElBQUksQ0FBQ3V2QixNQUFMLENBQVl2VCxPQUFoQixFQUNJaGMsSUFBSSxDQUFDMCtCLFdBQUwsQ0FBaUJ0MUIsR0FBakIsR0FBdUJwSixJQUFJLENBQUM4YixVQUFMLENBQWdCOWIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXZULE9BQTVCLEVBQXFDLE9BQXJDLENBQXZCO0FBQ0osVUFBSWhjLElBQUksQ0FBQ3V2QixNQUFMLENBQVl4VCxPQUFoQixFQUNJL2IsSUFBSSxDQUFDMCtCLFdBQUwsQ0FBaUJyMUIsR0FBakIsR0FBdUJySixJQUFJLENBQUM4YixVQUFMLENBQWdCOWIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXhULE9BQTVCLEVBQXFDLE9BQXJDLENBQXZCO0FBQ0ovYixVQUFJLENBQUM0SixLQUFMLENBQVdoSyxJQUFYLEdBQWtCLFFBQWxCO0FBQ0EsVUFBSUksSUFBSSxDQUFDOG5CLFFBQUwsS0FBa0I0QyxTQUF0QixFQUNJMXFCLElBQUksQ0FBQzhuQixRQUFMLENBQWNsb0IsSUFBZCxHQUFxQixRQUFyQjs7QUFDSixVQUFJO0FBQ0EsWUFBSUksSUFBSSxDQUFDNEosS0FBTCxDQUFXMmlCLFVBQWYsRUFDSXZzQixJQUFJLENBQUM0SixLQUFMLENBQVcyaUIsVUFBWCxDQUFzQnFOLFlBQXRCLENBQW1DNTVCLElBQUksQ0FBQzArQixXQUF4QyxFQUFxRDErQixJQUFJLENBQUM0SixLQUFMLENBQVdpd0IsV0FBaEU7QUFDUCxPQUhELENBSUEsT0FBT3hLLEVBQVAsRUFBVyxDQUFHOztBQUNkLzFCLFVBQUksQ0FBQzBHLElBQUksQ0FBQzArQixXQUFOLEVBQW1CLFFBQW5CLEVBQTZCLFVBQVUzM0IsQ0FBVixFQUFhO0FBQzFDL0csWUFBSSxDQUFDZ3BCLE9BQUwsQ0FBYWppQixDQUFDLENBQUMzTSxNQUFGLENBQVNKLEtBQXRCLEVBQTZCLEtBQTdCLEVBQW9DZ0csSUFBSSxDQUFDOGxDLGVBQXpDO0FBQ0FuUixvQkFBWSxDQUFDLFVBQUQsQ0FBWjtBQUNBQSxvQkFBWSxDQUFDLFNBQUQsQ0FBWjtBQUNILE9BSkcsQ0FBSjtBQUtIOztBQUNELGFBQVNyQixNQUFULENBQWdCdnNCLENBQWhCLEVBQW1CO0FBQ2YsVUFBSS9HLElBQUksQ0FBQzh6QixNQUFMLEtBQWdCLElBQXBCLEVBQ0ksT0FBTzl6QixJQUFJLENBQUMreUIsS0FBTCxFQUFQO0FBQ0oveUIsVUFBSSxDQUFDb3pCLElBQUwsQ0FBVXJzQixDQUFWO0FBQ0g7O0FBQ0QsYUFBUzR0QixZQUFULENBQXNCN3FCLEtBQXRCLEVBQTZCakwsSUFBN0IsRUFBbUM7QUFDL0I7QUFDQSxVQUFJbUIsSUFBSSxDQUFDdXZCLE1BQUwsS0FBZ0I3RSxTQUFwQixFQUNJO0FBQ0osVUFBSXNiLEtBQUssR0FBR2htQyxJQUFJLENBQUN1dkIsTUFBTCxDQUFZemxCLEtBQVosQ0FBWjs7QUFDQSxVQUFJazhCLEtBQUssS0FBS3RiLFNBQVYsSUFBdUJzYixLQUFLLENBQUNoeEMsTUFBTixHQUFlLENBQTFDLEVBQTZDO0FBQ3pDLGFBQUssSUFBSU8sQ0FBQyxHQUFHLENBQWIsRUFBZ0J5d0MsS0FBSyxDQUFDendDLENBQUQsQ0FBTCxJQUFZQSxDQUFDLEdBQUd5d0MsS0FBSyxDQUFDaHhDLE1BQXRDLEVBQThDTyxDQUFDLEVBQS9DO0FBQ0l5d0MsZUFBSyxDQUFDendDLENBQUQsQ0FBTCxDQUFTeUssSUFBSSxDQUFDd2MsYUFBZCxFQUE2QnhjLElBQUksQ0FBQzRKLEtBQUwsQ0FBVzVQLEtBQXhDLEVBQStDZ0csSUFBL0MsRUFBcURuQixJQUFyRDtBQURKO0FBRUg7O0FBQ0QsVUFBSWlMLEtBQUssS0FBSyxVQUFkLEVBQTBCO0FBQ3RCOUosWUFBSSxDQUFDNEosS0FBTCxDQUFXa3ZCLGFBQVgsQ0FBeUJELFdBQVcsQ0FBQyxRQUFELENBQXBDLEVBRHNCLENBRXRCOztBQUNBNzRCLFlBQUksQ0FBQzRKLEtBQUwsQ0FBV2t2QixhQUFYLENBQXlCRCxXQUFXLENBQUMsT0FBRCxDQUFwQztBQUNIO0FBQ0o7O0FBQ0QsYUFBU0EsV0FBVCxDQUFxQjNqQyxJQUFyQixFQUEyQjtBQUN2QixVQUFJNlIsQ0FBQyxHQUFHRixRQUFRLENBQUNneUIsV0FBVCxDQUFxQixPQUFyQixDQUFSO0FBQ0E5eEIsT0FBQyxDQUFDay9CLFNBQUYsQ0FBWS93QyxJQUFaLEVBQWtCLElBQWxCLEVBQXdCLElBQXhCO0FBQ0EsYUFBTzZSLENBQVA7QUFDSDs7QUFDRCxhQUFTcXpCLGNBQVQsQ0FBd0JuMkIsSUFBeEIsRUFBOEI7QUFDMUIsV0FBSyxJQUFJMU8sQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR3lLLElBQUksQ0FBQ3djLGFBQUwsQ0FBbUJ4bkIsTUFBdkMsRUFBK0NPLENBQUMsRUFBaEQsRUFBb0Q7QUFDaEQsWUFBSTI3QixZQUFZLENBQUNseEIsSUFBSSxDQUFDd2MsYUFBTCxDQUFtQmpuQixDQUFuQixDQUFELEVBQXdCME8sSUFBeEIsQ0FBWixLQUE4QyxDQUFsRCxFQUNJLE9BQU8sS0FBSzFPLENBQVo7QUFDUDs7QUFDRCxhQUFPLEtBQVA7QUFDSDs7QUFDRCxhQUFTK2tDLGFBQVQsQ0FBdUJyMkIsSUFBdkIsRUFBNkI7QUFDekIsVUFBSWpFLElBQUksQ0FBQ3V2QixNQUFMLENBQVk5RixJQUFaLEtBQXFCLE9BQXJCLElBQWdDenBCLElBQUksQ0FBQ3djLGFBQUwsQ0FBbUJ4bkIsTUFBbkIsR0FBNEIsQ0FBaEUsRUFDSSxPQUFPLEtBQVA7QUFDSixhQUFRazhCLFlBQVksQ0FBQ2p0QixJQUFELEVBQU9qRSxJQUFJLENBQUN3YyxhQUFMLENBQW1CLENBQW5CLENBQVAsQ0FBWixJQUE2QyxDQUE3QyxJQUNKMFUsWUFBWSxDQUFDanRCLElBQUQsRUFBT2pFLElBQUksQ0FBQ3djLGFBQUwsQ0FBbUIsQ0FBbkIsQ0FBUCxDQUFaLElBQTZDLENBRGpEO0FBRUg7O0FBQ0QsYUFBU21oQiw0QkFBVCxHQUF3QztBQUNwQyxVQUFJMzlCLElBQUksQ0FBQ3V2QixNQUFMLENBQVkvVCxVQUFaLElBQTBCeGIsSUFBSSxDQUFDbTBCLFFBQS9CLElBQTJDLENBQUNuMEIsSUFBSSxDQUFDKzNCLFFBQXJELEVBQ0k7QUFDSi8zQixVQUFJLENBQUNxOUIsWUFBTCxDQUFrQnJNLE9BQWxCLENBQTBCLFVBQVVnTSxXQUFWLEVBQXVCem5DLENBQXZCLEVBQTBCO0FBQ2hELFlBQUlndEIsQ0FBQyxHQUFHLElBQUkvYyxJQUFKLENBQVN4RixJQUFJLENBQUM0ekIsV0FBZCxFQUEyQjV6QixJQUFJLENBQUMyekIsWUFBaEMsRUFBOEMsQ0FBOUMsQ0FBUjtBQUNBcFIsU0FBQyxDQUFDb0wsUUFBRixDQUFXM3RCLElBQUksQ0FBQzJ6QixZQUFMLEdBQW9CcCtCLENBQS9COztBQUNBLFlBQUl5SyxJQUFJLENBQUN1dkIsTUFBTCxDQUFZMUUsVUFBWixHQUF5QixDQUF6QixJQUNBN3FCLElBQUksQ0FBQ3V2QixNQUFMLENBQVk3RixpQkFBWixLQUFrQyxRQUR0QyxFQUNnRDtBQUM1QzFwQixjQUFJLENBQUNzOUIsYUFBTCxDQUFtQi9uQyxDQUFuQixFQUFzQjAyQixXQUF0QixHQUNJb0IsVUFBVSxDQUFDOUssQ0FBQyxDQUFDME0sUUFBRixFQUFELEVBQWVqdkIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWTNFLHFCQUEzQixFQUFrRDVxQixJQUFJLENBQUN5dkIsSUFBdkQsQ0FBVixHQUF5RSxHQUQ3RTtBQUVILFNBSkQsTUFLSztBQUNEenZCLGNBQUksQ0FBQ3M4Qix1QkFBTCxDQUE2QnRpQyxLQUE3QixHQUFxQ3VvQixDQUFDLENBQUMwTSxRQUFGLEdBQWFoNUIsUUFBYixFQUFyQztBQUNIOztBQUNEK21DLG1CQUFXLENBQUNoakMsS0FBWixHQUFvQnVvQixDQUFDLENBQUM2RyxXQUFGLEdBQWdCbnpCLFFBQWhCLEVBQXBCO0FBQ0gsT0FaRDtBQWFBK0osVUFBSSxDQUFDcytCLG1CQUFMLEdBQ0l0K0IsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXZULE9BQVosS0FBd0IwTyxTQUF4QixLQUNLMXFCLElBQUksQ0FBQzR6QixXQUFMLEtBQXFCNXpCLElBQUksQ0FBQ3V2QixNQUFMLENBQVl2VCxPQUFaLENBQW9Cb04sV0FBcEIsRUFBckIsR0FDS3BwQixJQUFJLENBQUMyekIsWUFBTCxJQUFxQjN6QixJQUFJLENBQUN1dkIsTUFBTCxDQUFZdlQsT0FBWixDQUFvQmlULFFBQXBCLEVBRDFCLEdBRUtqdkIsSUFBSSxDQUFDNHpCLFdBQUwsR0FBbUI1ekIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXZULE9BQVosQ0FBb0JvTixXQUFwQixFQUg3QixDQURKO0FBS0FwcEIsVUFBSSxDQUFDdStCLG1CQUFMLEdBQ0l2K0IsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXhULE9BQVosS0FBd0IyTyxTQUF4QixLQUNLMXFCLElBQUksQ0FBQzR6QixXQUFMLEtBQXFCNXpCLElBQUksQ0FBQ3V2QixNQUFMLENBQVl4VCxPQUFaLENBQW9CcU4sV0FBcEIsRUFBckIsR0FDS3BwQixJQUFJLENBQUMyekIsWUFBTCxHQUFvQixDQUFwQixHQUF3QjN6QixJQUFJLENBQUN1dkIsTUFBTCxDQUFZeFQsT0FBWixDQUFvQmtULFFBQXBCLEVBRDdCLEdBRUtqdkIsSUFBSSxDQUFDNHpCLFdBQUwsR0FBbUI1ekIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWXhULE9BQVosQ0FBb0JxTixXQUFwQixFQUg3QixDQURKO0FBS0g7O0FBQ0QsYUFBUzhjLFVBQVQsQ0FBb0I3cEIsTUFBcEIsRUFBNEI7QUFDeEIsYUFBT3JjLElBQUksQ0FBQ3djLGFBQUwsQ0FDRm9ULEdBREUsQ0FDRSxVQUFVdVcsSUFBVixFQUFnQjtBQUFFLGVBQU9ubUMsSUFBSSxDQUFDOGIsVUFBTCxDQUFnQnFxQixJQUFoQixFQUFzQjlwQixNQUF0QixDQUFQO0FBQXVDLE9BRDNELEVBRUZuSSxNQUZFLENBRUssVUFBVXFPLENBQVYsRUFBYWh0QixDQUFiLEVBQWdCczZCLEdBQWhCLEVBQXFCO0FBQzdCLGVBQU83dkIsSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWTlGLElBQVosS0FBcUIsT0FBckIsSUFDSHpwQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZcGEsVUFEVCxJQUVIMGEsR0FBRyxDQUFDbDVCLE9BQUosQ0FBWTRyQixDQUFaLE1BQW1CaHRCLENBRnZCO0FBR0gsT0FOTSxFQU9GMkIsSUFQRSxDQU9HOEksSUFBSSxDQUFDdXZCLE1BQUwsQ0FBWTlGLElBQVosS0FBcUIsT0FBckIsR0FDSnpwQixJQUFJLENBQUN1dkIsTUFBTCxDQUFZakgsV0FEUixHQUVKdG9CLElBQUksQ0FBQ3l2QixJQUFMLENBQVVwUyxjQVRULENBQVA7QUFVSDtBQUNEOzs7OztBQUdBLGFBQVNrWCxXQUFULENBQXFCK0MsYUFBckIsRUFBb0M7QUFDaEMsVUFBSUEsYUFBYSxLQUFLLEtBQUssQ0FBM0IsRUFBOEI7QUFBRUEscUJBQWEsR0FBRyxJQUFoQjtBQUF1Qjs7QUFDdkQsVUFBSXQzQixJQUFJLENBQUMwK0IsV0FBTCxLQUFxQmhVLFNBQXJCLElBQWtDMXFCLElBQUksQ0FBQzhsQyxlQUEzQyxFQUE0RDtBQUN4RDlsQyxZQUFJLENBQUMwK0IsV0FBTCxDQUFpQjFrQyxLQUFqQixHQUNJZ0csSUFBSSxDQUFDczBCLHFCQUFMLEtBQStCNUosU0FBL0IsR0FDTTFxQixJQUFJLENBQUM4YixVQUFMLENBQWdCOWIsSUFBSSxDQUFDczBCLHFCQUFyQixFQUE0Q3QwQixJQUFJLENBQUM4bEMsZUFBakQsQ0FETixHQUVNLEVBSFY7QUFJSDs7QUFDRDlsQyxVQUFJLENBQUM0SixLQUFMLENBQVc1UCxLQUFYLEdBQW1Ca3NDLFVBQVUsQ0FBQ2xtQyxJQUFJLENBQUN1dkIsTUFBTCxDQUFZOVQsVUFBYixDQUE3Qjs7QUFDQSxVQUFJemIsSUFBSSxDQUFDOG5CLFFBQUwsS0FBa0I0QyxTQUF0QixFQUFpQztBQUM3QjFxQixZQUFJLENBQUM4bkIsUUFBTCxDQUFjOXRCLEtBQWQsR0FBc0Jrc0MsVUFBVSxDQUFDbG1DLElBQUksQ0FBQ3V2QixNQUFMLENBQVkxSCxTQUFiLENBQWhDO0FBQ0g7O0FBQ0QsVUFBSXlQLGFBQWEsS0FBSyxLQUF0QixFQUNJM0MsWUFBWSxDQUFDLGVBQUQsQ0FBWjtBQUNQOztBQUNELGFBQVNxRCxlQUFULENBQXlCanhCLENBQXpCLEVBQTRCO0FBQ3hCLFVBQUlxL0IsV0FBVyxHQUFHcG1DLElBQUksQ0FBQ285QixZQUFMLENBQWtCekUsUUFBbEIsQ0FBMkI1eEIsQ0FBQyxDQUFDM00sTUFBN0IsQ0FBbEI7QUFDQSxVQUFJaXNDLFdBQVcsR0FBR3JtQyxJQUFJLENBQUN1OUIsWUFBTCxDQUFrQjVFLFFBQWxCLENBQTJCNXhCLENBQUMsQ0FBQzNNLE1BQTdCLENBQWxCOztBQUNBLFVBQUlnc0MsV0FBVyxJQUFJQyxXQUFuQixFQUFnQztBQUM1QnpULG1CQUFXLENBQUN3VCxXQUFXLEdBQUcsQ0FBQyxDQUFKLEdBQVEsQ0FBcEIsQ0FBWDtBQUNILE9BRkQsTUFHSyxJQUFJcG1DLElBQUksQ0FBQ3E5QixZQUFMLENBQWtCMW1DLE9BQWxCLENBQTBCb1EsQ0FBQyxDQUFDM00sTUFBNUIsS0FBdUMsQ0FBM0MsRUFBOEM7QUFDL0MyTSxTQUFDLENBQUMzTSxNQUFGLENBQVNrWixNQUFUO0FBQ0gsT0FGSSxNQUdBLElBQUl2TSxDQUFDLENBQUMzTSxNQUFGLENBQVN5eEIsU0FBVCxDQUFtQjhNLFFBQW5CLENBQTRCLFNBQTVCLENBQUosRUFBNEM7QUFDN0MzNEIsWUFBSSxDQUFDNnlCLFVBQUwsQ0FBZ0I3eUIsSUFBSSxDQUFDNHpCLFdBQUwsR0FBbUIsQ0FBbkM7QUFDSCxPQUZJLE1BR0EsSUFBSTdzQixDQUFDLENBQUMzTSxNQUFGLENBQVN5eEIsU0FBVCxDQUFtQjhNLFFBQW5CLENBQTRCLFdBQTVCLENBQUosRUFBOEM7QUFDL0MzNEIsWUFBSSxDQUFDNnlCLFVBQUwsQ0FBZ0I3eUIsSUFBSSxDQUFDNHpCLFdBQUwsR0FBbUIsQ0FBbkM7QUFDSDtBQUNKOztBQUNELGFBQVMrQixXQUFULENBQXFCNXVCLENBQXJCLEVBQXdCO0FBQ3BCQSxPQUFDLENBQUNvNUIsY0FBRjtBQUNBLFVBQUltRyxTQUFTLEdBQUd2L0IsQ0FBQyxDQUFDbkgsSUFBRixLQUFXLFNBQTNCO0FBQUEsVUFBc0NnSyxLQUFLLEdBQUc3QyxDQUFDLENBQUMzTSxNQUFoRDs7QUFDQSxVQUFJNEYsSUFBSSxDQUFDeWQsSUFBTCxLQUFjaU4sU0FBZCxJQUEyQjNqQixDQUFDLENBQUMzTSxNQUFGLEtBQWE0RixJQUFJLENBQUN5ZCxJQUFqRCxFQUF1RDtBQUNuRHpkLFlBQUksQ0FBQ3lkLElBQUwsQ0FBVXdPLFdBQVYsR0FDSWpzQixJQUFJLENBQUN5dkIsSUFBTCxDQUFVaFMsSUFBVixDQUFleU4sR0FBRyxDQUFDbHJCLElBQUksQ0FBQ3lkLElBQUwsQ0FBVXdPLFdBQVYsS0FBMEJqc0IsSUFBSSxDQUFDeXZCLElBQUwsQ0FBVWhTLElBQVYsQ0FBZSxDQUFmLENBQTNCLENBQWxCLENBREo7QUFFSDs7QUFDRCxVQUFJclUsR0FBRyxHQUFHa1IsVUFBVSxDQUFDMVEsS0FBSyxDQUFDbzBCLFlBQU4sQ0FBbUIsS0FBbkIsQ0FBRCxDQUFwQjtBQUFBLFVBQWlEMzBCLEdBQUcsR0FBR2lSLFVBQVUsQ0FBQzFRLEtBQUssQ0FBQ28wQixZQUFOLENBQW1CLEtBQW5CLENBQUQsQ0FBakU7QUFBQSxVQUE4RjEwQixJQUFJLEdBQUdnUixVQUFVLENBQUMxUSxLQUFLLENBQUNvMEIsWUFBTixDQUFtQixNQUFuQixDQUFELENBQS9HO0FBQUEsVUFBNkl1SSxRQUFRLEdBQUd0aEMsUUFBUSxDQUFDMkUsS0FBSyxDQUFDNVAsS0FBUCxFQUFjLEVBQWQsQ0FBaEs7QUFBQSxVQUFtTGc5QixLQUFLLEdBQUdqd0IsQ0FBQyxDQUFDaXdCLEtBQUYsS0FDdExzUCxTQUFTLEdBQUl2L0IsQ0FBQyxDQUFDc3dCLEtBQUYsS0FBWSxFQUFaLEdBQWlCLENBQWpCLEdBQXFCLENBQUMsQ0FBMUIsR0FBK0IsQ0FEOEksQ0FBM0w7QUFFQSxVQUFJNzNCLFFBQVEsR0FBRyttQyxRQUFRLEdBQUdqOUIsSUFBSSxHQUFHMHRCLEtBQWpDOztBQUNBLFVBQUksT0FBT3B0QixLQUFLLENBQUM1UCxLQUFiLEtBQXVCLFdBQXZCLElBQXNDNFAsS0FBSyxDQUFDNVAsS0FBTixDQUFZaEYsTUFBWixLQUF1QixDQUFqRSxFQUFvRTtBQUNoRSxZQUFJd3hDLFVBQVUsR0FBRzU4QixLQUFLLEtBQUs1SixJQUFJLENBQUNpMkIsV0FBaEM7QUFBQSxZQUE2Q3dRLFlBQVksR0FBRzc4QixLQUFLLEtBQUs1SixJQUFJLENBQUNrMkIsYUFBM0U7O0FBQ0EsWUFBSTEyQixRQUFRLEdBQUc0SixHQUFmLEVBQW9CO0FBQ2hCNUosa0JBQVEsR0FDSjZKLEdBQUcsR0FDQzdKLFFBREosR0FFSTByQixHQUFHLENBQUMsQ0FBQ3NiLFVBQUYsQ0FGUCxJQUdLdGIsR0FBRyxDQUFDc2IsVUFBRCxDQUFILElBQW1CdGIsR0FBRyxDQUFDLENBQUNsckIsSUFBSSxDQUFDeWQsSUFBUCxDQUgzQixDQURKO0FBS0EsY0FBSWdwQixZQUFKLEVBQ0kvTixpQkFBaUIsQ0FBQ2hPLFNBQUQsRUFBWSxDQUFDLENBQWIsRUFBZ0IxcUIsSUFBSSxDQUFDaTJCLFdBQXJCLENBQWpCO0FBQ1AsU0FSRCxNQVNLLElBQUl6MkIsUUFBUSxHQUFHNkosR0FBZixFQUFvQjtBQUNyQjdKLGtCQUFRLEdBQ0pvSyxLQUFLLEtBQUs1SixJQUFJLENBQUNpMkIsV0FBZixHQUE2QnoyQixRQUFRLEdBQUc2SixHQUFYLEdBQWlCNmhCLEdBQUcsQ0FBQyxDQUFDbHJCLElBQUksQ0FBQ3lkLElBQVAsQ0FBakQsR0FBZ0VyVSxHQURwRTtBQUVBLGNBQUlxOUIsWUFBSixFQUNJL04saUJBQWlCLENBQUNoTyxTQUFELEVBQVksQ0FBWixFQUFlMXFCLElBQUksQ0FBQ2kyQixXQUFwQixDQUFqQjtBQUNQOztBQUNELFlBQUlqMkIsSUFBSSxDQUFDeWQsSUFBTCxJQUNBK29CLFVBREEsS0FFQ2w5QixJQUFJLEtBQUssQ0FBVCxHQUNLOUosUUFBUSxHQUFHK21DLFFBQVgsS0FBd0IsRUFEN0IsR0FFSy91QyxJQUFJLENBQUM4akMsR0FBTCxDQUFTOTdCLFFBQVEsR0FBRyttQyxRQUFwQixJQUFnQ2o5QixJQUp0QyxDQUFKLEVBSWlEO0FBQzdDdEosY0FBSSxDQUFDeWQsSUFBTCxDQUFVd08sV0FBVixHQUNJanNCLElBQUksQ0FBQ3l2QixJQUFMLENBQVVoUyxJQUFWLENBQWV5TixHQUFHLENBQUNsckIsSUFBSSxDQUFDeWQsSUFBTCxDQUFVd08sV0FBVixLQUEwQmpzQixJQUFJLENBQUN5dkIsSUFBTCxDQUFVaFMsSUFBVixDQUFlLENBQWYsQ0FBM0IsQ0FBbEIsQ0FESjtBQUVIOztBQUNEN1QsYUFBSyxDQUFDNVAsS0FBTixHQUFjc29CLEdBQUcsQ0FBQzlpQixRQUFELENBQWpCO0FBQ0g7QUFDSjs7QUFDRHEwQixRQUFJO0FBQ0osV0FBTzd6QixJQUFQO0FBQ0g7QUFDRDs7O0FBQ0EsV0FBUzBtQyxVQUFULENBQW9CQyxRQUFwQixFQUE4QnBYLE1BQTlCLEVBQXNDO0FBQ2xDO0FBQ0EsUUFBSXFYLEtBQUssR0FBRzV2QyxLQUFLLENBQUN1d0IsU0FBTixDQUFnQjBELEtBQWhCLENBQ1B6RCxJQURPLENBQ0ZtZixRQURFLEVBRVB6eUIsTUFGTyxDQUVBLFVBQVVwYyxDQUFWLEVBQWE7QUFBRSxhQUFPQSxDQUFDLFlBQVkrdUMsV0FBcEI7QUFBa0MsS0FGakQsQ0FBWjtBQUdBLFFBQUlDLFNBQVMsR0FBRyxFQUFoQjs7QUFDQSxTQUFLLElBQUl2eEMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR3F4QyxLQUFLLENBQUM1eEMsTUFBMUIsRUFBa0NPLENBQUMsRUFBbkMsRUFBdUM7QUFDbkMsVUFBSTQyQixJQUFJLEdBQUd5YSxLQUFLLENBQUNyeEMsQ0FBRCxDQUFoQjs7QUFDQSxVQUFJO0FBQ0EsWUFBSTQyQixJQUFJLENBQUM2UixZQUFMLENBQWtCLGNBQWxCLE1BQXNDLElBQTFDLEVBQ0k7O0FBQ0osWUFBSTdSLElBQUksQ0FBQ3VhLFVBQUwsS0FBb0JoYyxTQUF4QixFQUFtQztBQUMvQnlCLGNBQUksQ0FBQ3VhLFVBQUwsQ0FBZ0J6VCxPQUFoQjs7QUFDQTlHLGNBQUksQ0FBQ3VhLFVBQUwsR0FBa0JoYyxTQUFsQjtBQUNIOztBQUNEeUIsWUFBSSxDQUFDdWEsVUFBTCxHQUFrQjFVLGlCQUFpQixDQUFDN0YsSUFBRCxFQUFPb0QsTUFBTSxJQUFJLEVBQWpCLENBQW5DO0FBQ0F1WCxpQkFBUyxDQUFDM1AsSUFBVixDQUFlaEwsSUFBSSxDQUFDdWEsVUFBcEI7QUFDSCxPQVRELENBVUEsT0FBTzMvQixDQUFQLEVBQVU7QUFDTnJILGVBQU8sQ0FBQ2lnQixLQUFSLENBQWM1WSxDQUFkO0FBQ0g7QUFDSjs7QUFDRCxXQUFPKy9CLFNBQVMsQ0FBQzl4QyxNQUFWLEtBQXFCLENBQXJCLEdBQXlCOHhDLFNBQVMsQ0FBQyxDQUFELENBQWxDLEdBQXdDQSxTQUEvQztBQUNIO0FBQ0Q7OztBQUNBLE1BQUksT0FBT0QsV0FBUCxLQUF1QixXQUF2QixJQUNBLE9BQU9FLGNBQVAsS0FBMEIsV0FEMUIsSUFFQSxPQUFPQyxRQUFQLEtBQW9CLFdBRnhCLEVBRXFDO0FBQ2pDO0FBQ0FELGtCQUFjLENBQUN4ZixTQUFmLENBQXlCN0wsU0FBekIsR0FBcUNzckIsUUFBUSxDQUFDemYsU0FBVCxDQUFtQjdMLFNBQW5CLEdBQStCLFVBQVU2VCxNQUFWLEVBQWtCO0FBQ2xGLGFBQU9tWCxVQUFVLENBQUMsSUFBRCxFQUFPblgsTUFBUCxDQUFqQjtBQUNILEtBRkQ7O0FBR0FzWCxlQUFXLENBQUN0ZixTQUFaLENBQXNCN0wsU0FBdEIsR0FBa0MsVUFBVTZULE1BQVYsRUFBa0I7QUFDaEQsYUFBT21YLFVBQVUsQ0FBQyxDQUFDLElBQUQsQ0FBRCxFQUFTblgsTUFBVCxDQUFqQjtBQUNILEtBRkQ7QUFHSDtBQUNEOzs7QUFDQSxNQUFJN1QsU0FBUyxHQUFHLFNBQVpBLFNBQVksQ0FBVXVyQixRQUFWLEVBQW9CMVgsTUFBcEIsRUFBNEI7QUFDeEMsUUFBSSxPQUFPMFgsUUFBUCxLQUFvQixRQUF4QixFQUFrQztBQUM5QixhQUFPUCxVQUFVLENBQUNyL0IsTUFBTSxDQUFDUixRQUFQLENBQWdCMHdCLGdCQUFoQixDQUFpQzBQLFFBQWpDLENBQUQsRUFBNkMxWCxNQUE3QyxDQUFqQjtBQUNILEtBRkQsTUFHSyxJQUFJMFgsUUFBUSxZQUFZQyxJQUF4QixFQUE4QjtBQUMvQixhQUFPUixVQUFVLENBQUMsQ0FBQ08sUUFBRCxDQUFELEVBQWExWCxNQUFiLENBQWpCO0FBQ0gsS0FGSSxNQUdBO0FBQ0QsYUFBT21YLFVBQVUsQ0FBQ08sUUFBRCxFQUFXMVgsTUFBWCxDQUFqQjtBQUNIO0FBQ0osR0FWRDtBQVdBOzs7QUFDQTdULFdBQVMsQ0FBQ3lXLGFBQVYsR0FBMEIsRUFBMUI7QUFDQXpXLFdBQVMsQ0FBQ2duQixLQUFWLEdBQWtCO0FBQ2R5RSxNQUFFLEVBQUVoZ0IsT0FBUSxDQUFDLEVBQUQsRUFBSzRELE9BQUwsQ0FERTtBQUVkLGVBQVc1RCxPQUFRLENBQUMsRUFBRCxFQUFLNEQsT0FBTDtBQUZMLEdBQWxCOztBQUlBclAsV0FBUyxDQUFDMHJCLFFBQVYsR0FBcUIsVUFBVTNYLElBQVYsRUFBZ0I7QUFDakMvVCxhQUFTLENBQUNnbkIsS0FBVixDQUFnQixTQUFoQixJQUE2QnZiLE9BQVEsQ0FBQyxFQUFELEVBQUt6TCxTQUFTLENBQUNnbkIsS0FBVixDQUFnQixTQUFoQixDQUFMLEVBQWlDalQsSUFBakMsQ0FBckM7QUFDSCxHQUZEOztBQUdBL1QsV0FBUyxDQUFDMnJCLFdBQVYsR0FBd0IsVUFBVTlYLE1BQVYsRUFBa0I7QUFDdEM3VCxhQUFTLENBQUN5VyxhQUFWLEdBQTBCaEwsT0FBUSxDQUFDLEVBQUQsRUFBS3pMLFNBQVMsQ0FBQ3lXLGFBQWYsRUFBOEI1QyxNQUE5QixDQUFsQztBQUNILEdBRkQ7O0FBR0E3VCxXQUFTLENBQUNyQyxTQUFWLEdBQXNCeVcsZ0JBQWdCLENBQUMsRUFBRCxDQUF0QztBQUNBcFUsV0FBUyxDQUFDSSxVQUFWLEdBQXVCc1QsbUJBQW1CLENBQUMsRUFBRCxDQUExQztBQUNBMVQsV0FBUyxDQUFDd1YsWUFBVixHQUF5QkEsWUFBekI7QUFDQTs7QUFDQSxNQUFJLE9BQU9vVyxNQUFQLEtBQWtCLFdBQWxCLElBQWlDLE9BQU9BLE1BQU0sQ0FBQ251QyxFQUFkLEtBQXFCLFdBQTFELEVBQXVFO0FBQ25FbXVDLFVBQU0sQ0FBQ251QyxFQUFQLENBQVV1aUIsU0FBVixHQUFzQixVQUFVNlQsTUFBVixFQUFrQjtBQUNwQyxhQUFPbVgsVUFBVSxDQUFDLElBQUQsRUFBT25YLE1BQVAsQ0FBakI7QUFDSCxLQUZEO0FBR0gsR0E1aEZlLENBNmhGaEI7OztBQUNBL3BCLE1BQUksQ0FBQytoQixTQUFMLENBQWVnZ0IsT0FBZixHQUF5QixVQUFVblMsSUFBVixFQUFnQjtBQUNyQyxXQUFPLElBQUk1dkIsSUFBSixDQUFTLEtBQUs0akIsV0FBTCxFQUFULEVBQTZCLEtBQUs2RixRQUFMLEVBQTdCLEVBQThDLEtBQUtoRyxPQUFMLE1BQWtCLE9BQU9tTSxJQUFQLEtBQWdCLFFBQWhCLEdBQTJCbndCLFFBQVEsQ0FBQ213QixJQUFELEVBQU8sRUFBUCxDQUFuQyxHQUFnREEsSUFBbEUsQ0FBOUMsQ0FBUDtBQUNILEdBRkQ7O0FBR0EsTUFBSSxPQUFPL3RCLE1BQVAsS0FBa0IsV0FBdEIsRUFBbUM7QUFDL0JBLFVBQU0sQ0FBQ3FVLFNBQVAsR0FBbUJBLFNBQW5CO0FBQ0g7O0FBRUQsU0FBT0EsU0FBUDtBQUVILENBM2lGQSxDQUFELEM7Ozs7Ozs7Ozs7Ozs7O0FDREE7Ozs7Ozs7QUFPQSxJQUFJOHJCLEdBQUcsR0FBSSxZQUFXO0FBQ2xCLE1BQUlDLGVBQWUsR0FBRyx5Q0FBdEI7QUFDQSxNQUFJQyx3QkFBd0IsR0FBRyxzREFBL0I7QUFDQSxNQUFJQyx3QkFBd0IsR0FBRywyREFBL0I7QUFDQSxNQUFJQyw0QkFBSixDQUprQixDQUlnQjs7QUFFbEMsV0FBU0Msb0JBQVQsQ0FBOEJDLEtBQTlCLEVBQXFDO0FBQ2pDLFFBQUlDLEtBQUssR0FBR0QsS0FBSyxDQUFDdkQsUUFBTixJQUFrQnVELEtBQUssQ0FBQ0MsS0FBeEIsSUFBaUMsRUFBN0M7QUFDQSxRQUFJQyxPQUFPLEdBQUcsRUFBZDs7QUFDQSxTQUFLLElBQUl6eUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR3d5QyxLQUFLLENBQUMveUMsTUFBMUIsRUFBa0NPLENBQUMsRUFBbkMsRUFBdUM7QUFDbkM7QUFDQSxVQUFJMHlDLFlBQVksR0FBR0MsMkJBQTJCLENBQUNILEtBQUssQ0FBQ3h5QyxDQUFELENBQUwsQ0FBUzB5QyxZQUFWLENBQTlDOztBQUNBLFVBQUksQ0FBQ0QsT0FBTyxDQUFDQyxZQUFELENBQVosRUFBNEI7QUFDeEJELGVBQU8sQ0FBQ0MsWUFBRCxDQUFQLEdBQXdCLEVBQXhCO0FBQ0g7O0FBQ0RELGFBQU8sQ0FBQ0MsWUFBRCxDQUFQLENBQXNCOVEsSUFBdEIsQ0FBMkI7QUFDdkIyUSxhQUFLLEVBQUVBLEtBRGdCO0FBRXZCL2xDLGFBQUssRUFBRXhNLENBRmdCO0FBR3ZCdy9CLGFBQUssRUFBRWdULEtBQUssQ0FBQ3h5QyxDQUFELENBQUwsQ0FBU3cvQjtBQUhPLE9BQTNCO0FBS0g7O0FBQ0QsV0FBT2lULE9BQVA7QUFDSDs7QUFFRCxXQUFTRyxRQUFULENBQWtCTCxLQUFsQixFQUF5QmIsUUFBekIsRUFBbUM7QUFDL0IsUUFBSWMsS0FBSyxHQUFHRCxLQUFLLENBQUN2RCxRQUFOLElBQWtCdUQsS0FBSyxDQUFDQyxLQUF4QixJQUFpQyxFQUE3QztBQUNBLFFBQUlDLE9BQU8sR0FBRyxFQUFkLENBRitCLENBRy9COztBQUNBZixZQUFRLEdBQUdBLFFBQVEsQ0FBQzl1QyxXQUFULEVBQVg7O0FBQ0EsU0FBSyxJQUFJNUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR3d5QyxLQUFLLENBQUMveUMsTUFBMUIsRUFBa0NPLENBQUMsRUFBbkMsRUFBdUM7QUFDbkMsVUFBSTB5QyxZQUFZLEdBQUdGLEtBQUssQ0FBQ3h5QyxDQUFELENBQUwsQ0FBUzB5QyxZQUE1QixDQURtQyxDQUVuQzs7QUFDQSxVQUFJQSxZQUFZLEtBQUtBLFlBQVksSUFBSWhCLFFBQWhCLElBQTRCZ0IsWUFBWSxJQUFJRyxjQUFjLENBQUNuQixRQUFELENBQTFELElBQXdFZ0IsWUFBWSxJQUFJSSxrQkFBa0IsQ0FBQ3BCLFFBQUQsQ0FBL0csQ0FBaEIsRUFBNEk7QUFDeEllLGVBQU8sQ0FBQzdRLElBQVIsQ0FBYTtBQUNUMlEsZUFBSyxFQUFFQSxLQURFO0FBRVQvbEMsZUFBSyxFQUFFeE0sQ0FGRTtBQUdUdy9CLGVBQUssRUFBRWdULEtBQUssQ0FBQ3h5QyxDQUFELENBQUwsQ0FBU3cvQjtBQUhQLFNBQWI7QUFLSDtBQUNKOztBQUNELFdBQU9pVCxPQUFQO0FBQ0g7O0FBRUQsV0FBU00sT0FBVCxDQUFpQlIsS0FBakIsRUFBd0JiLFFBQXhCLEVBQWtDO0FBQzlCLFFBQUljLEtBQUssR0FBR0QsS0FBSyxDQUFDdkQsUUFBTixJQUFrQnVELEtBQUssQ0FBQ0MsS0FBeEIsSUFBaUMsRUFBN0M7QUFDQSxRQUFJaG1DLEtBQUssR0FBR2dtQyxLQUFLLENBQUMveUMsTUFBbEI7QUFDQSxRQUFJdXpDLGlCQUFpQixHQUFHQyxvQkFBb0IsQ0FBQ1YsS0FBRCxFQUFRYixRQUFSLEVBQWtCYyxLQUFsQixFQUF5QmhtQyxLQUF6QixDQUE1Qzs7QUFFQSxRQUFJLENBQUN3bUMsaUJBQUwsRUFBd0I7QUFDcEJFLG9CQUFjLENBQUNYLEtBQUQsRUFBUWIsUUFBUixFQUFrQmxsQyxLQUFsQixDQUFkO0FBQ0g7O0FBRUQsV0FBTztBQUNIK2xDLFdBQUssRUFBRUEsS0FESjtBQUVIL2xDLFdBQUssRUFBRUEsS0FGSjtBQUdIZ3pCLFdBQUssRUFBRWdULEtBQUssQ0FBQ2htQyxLQUFELENBQUwsQ0FBYWd6QjtBQUhqQixLQUFQO0FBS0g7O0FBQUE7O0FBRUQsV0FBUzBULGNBQVQsQ0FBd0JYLEtBQXhCLEVBQStCYixRQUEvQixFQUF5Q2xsQyxLQUF6QyxFQUFnRDtBQUM1QyxRQUFJK2xDLEtBQUssQ0FBQ3JELFVBQVYsRUFBc0I7QUFDbEJxRCxXQUFLLENBQUNyRCxVQUFOLENBQWlCd0MsUUFBUSxHQUFHLE1BQTVCLEVBQW9DbGxDLEtBQXBDO0FBQ0gsS0FGRCxNQUVPO0FBQ0grbEMsV0FBSyxDQUFDUSxPQUFOLENBQWNyQixRQUFkLEVBQXdCLElBQXhCLEVBQThCbGxDLEtBQTlCO0FBQ0g7QUFDSixHQWpFaUIsQ0FtRWxCOzs7QUFDQSxXQUFTeW1DLG9CQUFULENBQThCVixLQUE5QixFQUFxQ2IsUUFBckMsRUFBK0NjLEtBQS9DLEVBQXNEaG1DLEtBQXRELEVBQTZEO0FBQ3pELFFBQUkybUMsbUJBQUo7QUFDQSxRQUFJQyxtQkFBSjs7QUFFQSxRQUFJakIsd0JBQXdCLENBQUM1VyxJQUF6QixDQUE4Qm1XLFFBQTlCLENBQUosRUFBNkM7QUFDekN5Qix5QkFBbUIsR0FBR3pCLFFBQXRCO0FBQ0EwQix5QkFBbUIsR0FBR0MsMkJBQTJCLENBQUMzQixRQUFELENBQWpEO0FBQ0gsS0FIRCxNQUdPLElBQUlVLHdCQUF3QixDQUFDN1csSUFBekIsQ0FBOEJtVyxRQUE5QixDQUFKLEVBQTZDO0FBQ2hEeUIseUJBQW1CLEdBQUdSLDJCQUEyQixDQUFDakIsUUFBRCxDQUFqRDtBQUNBMEIseUJBQW1CLEdBQUcxQixRQUF0QjtBQUNILEtBSE0sTUFHQTtBQUNILGFBQU8sS0FBUCxDQURHLENBQ1c7QUFDakI7O0FBRUQsUUFBSSxDQUFDVyw0QkFBTCxFQUFtQztBQUMvQjtBQUNBYSxvQkFBYyxDQUFDWCxLQUFELEVBQVFZLG1CQUFSLEVBQTZCM21DLEtBQTdCLENBQWQ7O0FBQ0EsVUFBSWdtQyxLQUFLLENBQUMveUMsTUFBTixJQUFnQitNLEtBQXBCLEVBQTJCO0FBQ3ZCNmxDLG9DQUE0QixHQUFHLElBQS9CO0FBQ0g7QUFDSjs7QUFDRCxRQUFJQSw0QkFBSixFQUFrQztBQUM5QmEsb0JBQWMsQ0FBQ1gsS0FBRCxFQUFRYSxtQkFBUixFQUE2QjVtQyxLQUE3QixDQUFkO0FBQ0g7O0FBRUQsV0FBTyxJQUFQO0FBQ0g7O0FBRUQsV0FBU21tQywyQkFBVCxDQUFxQ2pCLFFBQXJDLEVBQStDO0FBQzNDLFdBQU9BLFFBQVEsQ0FBQzRCLE9BQVQsQ0FBaUJsQix3QkFBakIsRUFBMkMsVUFBVTk3QixLQUFWLEVBQWlCaTlCLFNBQWpCLEVBQTRCQyxTQUE1QixFQUF1Q0MsU0FBdkMsRUFBa0Q7QUFDaEcsYUFBT0YsU0FBUyxHQUFHLElBQVosR0FBbUJFLFNBQTFCO0FBQ0gsS0FGTSxDQUFQO0FBR0g7O0FBRUQsV0FBU0osMkJBQVQsQ0FBcUMzQixRQUFyQyxFQUErQztBQUMzQyxXQUFPQSxRQUFRLENBQUM0QixPQUFULENBQWlCbkIsd0JBQWpCLEVBQTJDLFVBQVM3N0IsS0FBVCxFQUFnQmk5QixTQUFoQixFQUEyQkMsU0FBM0IsRUFBc0M7QUFDcEYsYUFBTyxNQUFNQSxTQUFiO0FBQ0gsS0FGTSxDQUFQO0FBR0g7O0FBRUQsV0FBU0UsVUFBVCxDQUFvQjNELElBQXBCLEVBQTBCO0FBQ3RCLFFBQUl3QyxLQUFLLEdBQUd4QyxJQUFJLENBQUN3QyxLQUFqQjs7QUFDQSxRQUFJQSxLQUFLLENBQUNvQixVQUFWLEVBQXNCO0FBQ2xCcEIsV0FBSyxDQUFDb0IsVUFBTixDQUFpQjVELElBQUksQ0FBQ3ZqQyxLQUF0QjtBQUNILEtBRkQsTUFFTyxJQUFJK2xDLEtBQUssQ0FBQ21CLFVBQVYsRUFBc0I7QUFDekJuQixXQUFLLENBQUNtQixVQUFOLENBQWlCM0QsSUFBSSxDQUFDdmpDLEtBQXRCO0FBQ0g7QUFDSjs7QUFFRCxXQUFTb25DLE1BQVQsQ0FBZ0JDLElBQWhCLEVBQXNCQyxHQUF0QixFQUEyQjtBQUN2QixTQUFLLElBQUl4dkMsR0FBVCxJQUFnQnd2QyxHQUFoQixFQUFxQjtBQUNqQixVQUFJLENBQUNBLEdBQUcsQ0FBQ2puQyxjQUFKLENBQW1CdkksR0FBbkIsQ0FBTCxFQUNJO0FBQ0p1dkMsVUFBSSxDQUFDdnZDLEdBQUQsQ0FBSixHQUFZd3ZDLEdBQUcsQ0FBQ3h2QyxHQUFELENBQWY7QUFDSDs7QUFDRCxXQUFPdXZDLElBQVA7QUFDSDs7QUFFRCxXQUFTRSxlQUFULENBQXlCdkIsS0FBekIsRUFBZ0M7QUFDNUIsUUFBSXdCLFNBQVMsR0FBRyxFQUFoQjs7QUFDQSxTQUFLLElBQUloMEMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR3d5QyxLQUFLLENBQUMveUMsTUFBMUIsRUFBa0NPLENBQUMsRUFBbkMsRUFBdUM7QUFDbkM0ekMsWUFBTSxDQUFDSSxTQUFELEVBQVlDLGtCQUFrQixDQUFDekIsS0FBSyxDQUFDeHlDLENBQUQsQ0FBTCxDQUFTdy9CLEtBQVYsQ0FBOUIsQ0FBTjtBQUNIOztBQUNELFdBQU93VSxTQUFQO0FBQ0g7O0FBRUQsV0FBU0Msa0JBQVQsQ0FBNEJ6VSxLQUE1QixFQUFtQztBQUMvQixRQUFJMFUsUUFBUSxHQUFHLEVBQWY7O0FBQ0EsU0FBSyxJQUFJbDBDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUd3L0IsS0FBSyxDQUFDLy9CLE1BQTFCLEVBQWtDTyxDQUFDLEVBQW5DLEVBQXVDO0FBQ25DazBDLGNBQVEsQ0FBQzFVLEtBQUssQ0FBQ3gvQixDQUFELENBQU4sQ0FBUixHQUFxQncvQixLQUFLLENBQUMyVSxXQUFXLENBQUMzVSxLQUFLLENBQUN4L0IsQ0FBRCxDQUFOLENBQVosQ0FBMUI7QUFDSDs7QUFDRCxXQUFPazBDLFFBQVA7QUFDSCxHQTVJaUIsQ0E4SWxCO0FBQ0E7OztBQUNBLFdBQVNyQixjQUFULENBQXdCbkIsUUFBeEIsRUFBa0M7QUFDOUIsUUFBSTBDLElBQUksR0FBRyxFQUFYO0FBQ0EsUUFBSUMsU0FBUyxHQUFHLENBQWhCOztBQUVBLFdBQU8sQ0FBQy85QixLQUFLLEdBQUc0N0IsZUFBZSxDQUFDM1csSUFBaEIsQ0FBcUJtVyxRQUFyQixDQUFULEtBQTRDLElBQW5ELEVBQXlEO0FBQ3JELFVBQUlwN0IsS0FBSyxDQUFDLENBQUQsQ0FBTCxLQUFhLEVBQWpCLEVBQ0k7QUFDSjg5QixVQUFJLElBQUkxQyxRQUFRLENBQUNwdkMsU0FBVCxDQUFtQit4QyxTQUFuQixFQUE4Qi85QixLQUFLLENBQUM5SixLQUFwQyxDQUFSO0FBQ0E0bkMsVUFBSSxJQUFJMUMsUUFBUSxDQUFDNEMsTUFBVCxDQUFnQmgrQixLQUFLLENBQUM5SixLQUFOLEdBQWM4SixLQUFLLENBQUMsQ0FBRCxDQUFMLENBQVM3VyxNQUF2QyxFQUErQzZXLEtBQUssQ0FBQyxDQUFELENBQUwsQ0FBUzdXLE1BQXhELENBQVI7QUFDQTIwQyxVQUFJLElBQUkxQyxRQUFRLENBQUM0QyxNQUFULENBQWdCaCtCLEtBQUssQ0FBQzlKLEtBQXRCLEVBQTZCOEosS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTN1csTUFBdEMsQ0FBUjtBQUNBNDBDLGVBQVMsR0FBRy85QixLQUFLLENBQUM5SixLQUFOLEdBQWM4SixLQUFLLENBQUMsQ0FBRCxDQUFMLENBQVM3VyxNQUFuQztBQUNIOztBQUNEMjBDLFFBQUksSUFBSTFDLFFBQVEsQ0FBQzRDLE1BQVQsQ0FBZ0JELFNBQWhCLENBQVI7QUFFQSxXQUFPRCxJQUFQO0FBQ0g7O0FBQUEsR0EvSmlCLENBaUtsQjs7QUFDQSxXQUFTdEIsa0JBQVQsQ0FBNEJwQixRQUE1QixFQUFzQztBQUNsQyxRQUFJUyx3QkFBd0IsQ0FBQzVXLElBQXpCLENBQThCbVcsUUFBOUIsQ0FBSixFQUE2QztBQUN6QyxhQUFPMkIsMkJBQTJCLENBQUMzQixRQUFELENBQWxDO0FBQ0g7O0FBQ0QsV0FBT0EsUUFBUDtBQUNIOztBQUVELFdBQVM2QyxrQkFBVCxDQUE0QnhFLElBQTVCLEVBQWtDeUUsVUFBbEMsRUFBOEM7QUFDMUMsU0FBSyxJQUFJbHdDLEdBQVQsSUFBZ0Jrd0MsVUFBaEIsRUFBNEI7QUFDeEIsVUFBSS92QyxLQUFLLEdBQUcrdkMsVUFBVSxDQUFDbHdDLEdBQUQsQ0FBdEI7QUFDQSxVQUFJbXdDLGNBQWMsR0FBR2h3QyxLQUFLLENBQUNyRCxPQUFOLENBQWMsYUFBZCxDQUFyQixDQUZ3QixDQUl4Qjs7QUFDQTJ1QyxVQUFJLENBQUN2USxLQUFMLENBQVdTLGNBQVgsQ0FBMEIzN0IsR0FBMUI7O0FBQ0EsVUFBSW13QyxjQUFjLEdBQUcsQ0FBckIsRUFBd0I7QUFDcEIxRSxZQUFJLENBQUN2USxLQUFMLENBQVdrVixXQUFYLENBQXVCcHdDLEdBQXZCLEVBQTRCRyxLQUFLLENBQUM2dkMsTUFBTixDQUFhLENBQWIsRUFBZ0JHLGNBQWhCLENBQTVCLEVBQTZELFdBQTdEO0FBQ0gsT0FGRCxNQUVPO0FBQ0gxRSxZQUFJLENBQUN2USxLQUFMLENBQVdrVixXQUFYLENBQXVCcHdDLEdBQXZCLEVBQTRCRyxLQUE1QjtBQUNIO0FBQ0o7QUFDSjs7QUFFRCxXQUFTMHZDLFdBQVQsQ0FBcUJ6MEMsR0FBckIsRUFBMEI7QUFDdEIsV0FBT0EsR0FBRyxDQUFDNHpDLE9BQUosQ0FBWSxXQUFaLEVBQXlCLFVBQVVoOUIsS0FBVixFQUFpQnErQixRQUFqQixFQUEyQjtBQUN2RCxhQUFPQSxRQUFRLENBQUM5eEMsV0FBVCxFQUFQO0FBQ0gsS0FGTSxDQUFQO0FBR0g7O0FBRUQsV0FBUyt4QyxnQ0FBVCxDQUEwQ0MsUUFBMUMsRUFBb0Q7QUFDaEQsUUFBSUMsUUFBUSxHQUFHLEVBQWY7O0FBQ0EsU0FBSyxJQUFJeHdDLEdBQVQsSUFBZ0J1d0MsUUFBaEIsRUFBMEI7QUFDdEJDLGNBQVEsQ0FBQ0MsV0FBVyxDQUFDendDLEdBQUQsQ0FBWixDQUFSLEdBQTZCdXdDLFFBQVEsQ0FBQ3Z3QyxHQUFELENBQXJDO0FBQ0g7O0FBQ0QsV0FBT3d3QyxRQUFQO0FBQ0g7O0FBRUQsV0FBU0MsV0FBVCxDQUFxQnIxQyxHQUFyQixFQUEwQjtBQUN0QixXQUFPQSxHQUFHLENBQUM0ekMsT0FBSixDQUFZLFVBQVosRUFBd0IsVUFBU2g5QixLQUFULEVBQWdCcStCLFFBQWhCLEVBQTBCO0FBQ3JELGFBQU8sTUFBTUEsUUFBUSxDQUFDL3hDLFdBQVQsRUFBYjtBQUNILEtBRk0sQ0FBUDtBQUdIOztBQUVELE1BQUlveUMsR0FBRyxHQUFHLFNBQU5BLEdBQU0sQ0FBUzlqQyxHQUFULEVBQWM7QUFDcEIsU0FBS0EsR0FBTCxHQUFXQSxHQUFYO0FBQ0EsU0FBSytqQyxJQUFMLEdBQVksS0FBSy9qQyxHQUFMLENBQVMrakMsSUFBVCxJQUFpQixLQUFLL2pDLEdBQUwsQ0FBU3cyQixvQkFBVCxDQUE4QixNQUE5QixFQUFzQyxDQUF0QyxDQUE3QjtBQUNBLFNBQUt3TixNQUFMLEdBQWMsS0FBS2hrQyxHQUFMLENBQVN3OUIsV0FBVCxJQUF3QixFQUF0QztBQUNILEdBSkQ7O0FBTUFzRyxLQUFHLENBQUNoakIsU0FBSixHQUFnQjtBQUNaO0FBQ0FsdEIsT0FBRyxFQUFFLGFBQVM0c0MsUUFBVCxFQUFtQjtBQUNwQixVQUFJLENBQUMsS0FBS3lELFlBQVYsRUFBd0I7QUFDcEIsZUFBTyxFQUFQO0FBQ0g7O0FBQ0QsVUFBSXpELFFBQUosRUFBYztBQUNWLGVBQU9xQyxlQUFlLENBQUNuQixRQUFRLENBQUMsS0FBS3VDLFlBQU4sRUFBb0J6RCxRQUFwQixDQUFULENBQXRCO0FBQ0g7O0FBQ0QsVUFBSWMsS0FBSyxHQUFHRixvQkFBb0IsQ0FBQyxLQUFLNkMsWUFBTixDQUFoQzs7QUFDQSxXQUFLekQsUUFBTCxJQUFpQmMsS0FBakIsRUFBd0I7QUFDcEJBLGFBQUssQ0FBQ2QsUUFBRCxDQUFMLEdBQWtCcUMsZUFBZSxDQUFDdkIsS0FBSyxDQUFDZCxRQUFELENBQU4sQ0FBakM7QUFDSDs7QUFDRCxhQUFPYyxLQUFQO0FBQ0gsS0FkVztBQWVaO0FBQ0E0QyxVQUFNLEVBQUUsZ0JBQVMxRCxRQUFULEVBQW1CO0FBQ3ZCLFVBQUk4QyxVQUFVLEdBQUcsRUFBakI7O0FBQ0EsV0FBSyxJQUFJeDBDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUcsS0FBS2sxQyxNQUFMLENBQVl6MUMsTUFBaEMsRUFBd0NPLENBQUMsRUFBekMsRUFBNkM7QUFDekM0ekMsY0FBTSxDQUFDWSxVQUFELEVBQWFULGVBQWUsQ0FBQ25CLFFBQVEsQ0FBQyxLQUFLc0MsTUFBTCxDQUFZbDFDLENBQVosQ0FBRCxFQUFpQjB4QyxRQUFqQixDQUFULENBQTVCLENBQU47QUFDSDs7QUFDRCxhQUFPOEMsVUFBUDtBQUNILEtBdEJXO0FBdUJaO0FBQ0F0dkMsT0FBRyxFQUFFLGFBQVN3c0MsUUFBVCxFQUFtQjhDLFVBQW5CLEVBQStCO0FBQ2hDLFVBQUksQ0FBQyxLQUFLVyxZQUFWLEVBQXdCO0FBQ3BCLGFBQUtBLFlBQUwsR0FBb0IsS0FBS0UsWUFBTCxFQUFwQjtBQUNIOztBQUNEYixnQkFBVSxHQUFHSSxnQ0FBZ0MsQ0FBQ0osVUFBRCxDQUE3QztBQUNBLFVBQUloQyxLQUFLLEdBQUdJLFFBQVEsQ0FBQyxLQUFLdUMsWUFBTixFQUFvQnpELFFBQXBCLENBQXBCOztBQUNBLFVBQUksQ0FBQ2MsS0FBSyxDQUFDL3lDLE1BQVgsRUFBbUI7QUFDZit5QyxhQUFLLEdBQUcsQ0FBQ08sT0FBTyxDQUFDLEtBQUtvQyxZQUFOLEVBQW9CekQsUUFBcEIsQ0FBUixDQUFSO0FBQ0g7O0FBQ0QsV0FBSyxJQUFJMXhDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUd3eUMsS0FBSyxDQUFDL3lDLE1BQTFCLEVBQWtDTyxDQUFDLEVBQW5DLEVBQXVDO0FBQ25DdTBDLDBCQUFrQixDQUFDL0IsS0FBSyxDQUFDeHlDLENBQUQsQ0FBTixFQUFXdzBDLFVBQVgsQ0FBbEI7QUFDSDtBQUNKLEtBcENXO0FBcUNaO0FBQ0FoZSxVQUFNLEVBQUUsZ0JBQVNrYixRQUFULEVBQW1CO0FBQ3ZCLFVBQUksQ0FBQyxLQUFLeUQsWUFBVixFQUNJOztBQUNKLFVBQUksQ0FBQ3pELFFBQUwsRUFBZTtBQUNYLGFBQUs0RCxZQUFMLENBQWtCLEtBQUtILFlBQXZCOztBQUNBLGVBQU8sS0FBS0EsWUFBWjtBQUNBO0FBQ0g7O0FBQ0QsVUFBSTNDLEtBQUssR0FBR0ksUUFBUSxDQUFDLEtBQUt1QyxZQUFOLEVBQW9CekQsUUFBcEIsQ0FBcEI7O0FBQ0EsV0FBSyxJQUFJMXhDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUd3eUMsS0FBSyxDQUFDL3lDLE1BQTFCLEVBQWtDTyxDQUFDLEVBQW5DLEVBQXVDO0FBQ25DMHpDLGtCQUFVLENBQUNsQixLQUFLLENBQUN4eUMsQ0FBRCxDQUFOLENBQVY7QUFDSDs7QUFDRCxhQUFPd3lDLEtBQUssQ0FBQy95QyxNQUFiO0FBQ0gsS0FuRFc7QUFvRFo0MUMsZ0JBQVksRUFBRSx3QkFBVztBQUNyQixVQUFJRSxTQUFTLEdBQUcsS0FBS3JrQyxHQUFMLENBQVN1bEIsYUFBVCxDQUF1QixPQUF2QixDQUFoQjtBQUNBOGUsZUFBUyxDQUFDbHJDLElBQVYsR0FBaUIsVUFBakI7QUFDQWtyQyxlQUFTLENBQUNDLEdBQVYsR0FBZ0IsWUFBaEI7QUFDQSxXQUFLUCxJQUFMLENBQVV4ZCxXQUFWLENBQXNCOGQsU0FBdEI7QUFDQSxhQUFPQSxTQUFTLENBQUNoRCxLQUFqQjtBQUNILEtBMURXO0FBMkRaK0MsZ0JBQVksRUFBRSxzQkFBUy9DLEtBQVQsRUFBZ0I7QUFDMUIsVUFBSTNiLElBQUksR0FBRzJiLEtBQUssQ0FBQ2tELFNBQWpCO0FBQ0E3ZSxVQUFJLENBQUNJLFVBQUwsQ0FBZ0JGLFdBQWhCLENBQTRCRixJQUE1QjtBQUNIO0FBOURXLEdBQWhCO0FBaUVBLE1BQUl2ZCxPQUFPLEdBQUcsSUFBSTI3QixHQUFKLENBQVExakMsUUFBUixDQUFkOztBQUNBK0gsU0FBTyxDQUFDcThCLFdBQVIsR0FBc0IsVUFBU3hrQyxHQUFULEVBQWM7QUFDaEMsV0FBTyxJQUFJOGpDLEdBQUosQ0FBUTlqQyxHQUFSLENBQVA7QUFDSCxHQUZEOztBQUdBLFNBQU9tSSxPQUFQO0FBQ0gsQ0F4UlMsRUFBVjs7QUEwUkEsU0FBaUNsUixNQUFNLENBQUNrUixPQUF4QyxLQUFvRGxSLE1BQU0sQ0FBQ2tSLE9BQVAsR0FBaUI0NEIsR0FBckUsRSxDQUEyRSxtQjs7Ozs7Ozs7Ozs7Ozs7QUNqUzNFcmdDLG1CQUFPLENBQUMsOEZBQUQsQ0FBUDs7QUFDQXpKLE1BQU0sQ0FBQ2tSLE9BQVAsR0FBaUJ6SCxtQkFBTyxDQUFDLG9FQUFELENBQVAsQ0FBK0JuUSxLQUEvQixDQUFxQ2c2QixPQUF0RCxDOzs7Ozs7Ozs7Ozs7OztBQ0RBN3BCLG1CQUFPLENBQUMsOEZBQUQsQ0FBUDs7QUFDQXpKLE1BQU0sQ0FBQ2tSLE9BQVAsR0FBaUJ6SCxtQkFBTyxDQUFDLG9FQUFELENBQVAsQ0FBK0JuUSxLQUEvQixDQUFxQ2swQyxRQUF0RCxDOzs7Ozs7Ozs7Ozs7OztBQ0RBL2pDLG1CQUFPLENBQUMsb0dBQUQsQ0FBUDs7QUFDQXpKLE1BQU0sQ0FBQ2tSLE9BQVAsR0FBaUJ6SCxtQkFBTyxDQUFDLG9FQUFELENBQVAsQ0FBK0IxRyxNQUEvQixDQUFzQzBxQyxTQUF2RCxDOzs7Ozs7Ozs7Ozs7OztBQ0RBaGtDLG1CQUFPLENBQUMsc0dBQUQsQ0FBUDs7QUFDQXpKLE1BQU0sQ0FBQ2tSLE9BQVAsR0FBaUJ6SCxtQkFBTyxDQUFDLG9FQUFELENBQVAsQ0FBK0J6TyxNQUEvQixDQUFzQzB5QyxVQUF2RCxDOzs7Ozs7Ozs7Ozs7OztBQ0RBMXRDLE1BQU0sQ0FBQ2tSLE9BQVAsR0FBaUIsVUFBVXk4QixFQUFWLEVBQWM7QUFDN0IsTUFBSSxPQUFPQSxFQUFQLElBQWEsVUFBakIsRUFBNkIsTUFBTXpaLFNBQVMsQ0FBQ3laLEVBQUUsR0FBRyxxQkFBTixDQUFmO0FBQzdCLFNBQU9BLEVBQVA7QUFDRCxDQUhELEM7Ozs7Ozs7Ozs7Ozs7O0FDQUE7QUFDQSxJQUFJQyxXQUFXLEdBQUdua0MsbUJBQU8sQ0FBQyxzREFBRCxDQUFQLENBQWtCLGFBQWxCLENBQWxCOztBQUNBLElBQUlva0MsVUFBVSxHQUFHdjBDLEtBQUssQ0FBQ3V3QixTQUF2QjtBQUNBLElBQUlna0IsVUFBVSxDQUFDRCxXQUFELENBQVYsSUFBMkI1Z0IsU0FBL0IsRUFBMEN2akIsbUJBQU8sQ0FBQyx3REFBRCxDQUFQLENBQW1Cb2tDLFVBQW5CLEVBQStCRCxXQUEvQixFQUE0QyxFQUE1Qzs7QUFDMUM1dEMsTUFBTSxDQUFDa1IsT0FBUCxHQUFpQixVQUFVL1UsR0FBVixFQUFlO0FBQzlCMHhDLFlBQVUsQ0FBQ0QsV0FBRCxDQUFWLENBQXdCenhDLEdBQXhCLElBQStCLElBQS9CO0FBQ0QsQ0FGRCxDOzs7Ozs7Ozs7Ozs7OztBQ0pBLElBQUlnRyxRQUFRLEdBQUdzSCxtQkFBTyxDQUFDLGtFQUFELENBQXRCOztBQUNBekosTUFBTSxDQUFDa1IsT0FBUCxHQUFpQixVQUFVeThCLEVBQVYsRUFBYztBQUM3QixNQUFJLENBQUN4ckMsUUFBUSxDQUFDd3JDLEVBQUQsQ0FBYixFQUFtQixNQUFNelosU0FBUyxDQUFDeVosRUFBRSxHQUFHLG9CQUFOLENBQWY7QUFDbkIsU0FBT0EsRUFBUDtBQUNELENBSEQsQzs7Ozs7Ozs7Ozs7Ozs7QUNEQTtBQUNBO0FBQ0EsSUFBSUcsU0FBUyxHQUFHcmtDLG1CQUFPLENBQUMsb0VBQUQsQ0FBdkI7O0FBQ0EsSUFBSXNrQyxRQUFRLEdBQUd0a0MsbUJBQU8sQ0FBQyxrRUFBRCxDQUF0Qjs7QUFDQSxJQUFJdWtDLGVBQWUsR0FBR3ZrQyxtQkFBTyxDQUFDLGtGQUFELENBQTdCOztBQUNBekosTUFBTSxDQUFDa1IsT0FBUCxHQUFpQixVQUFVKzhCLFdBQVYsRUFBdUI7QUFDdEMsU0FBTyxVQUFVQyxLQUFWLEVBQWlCOTNCLEVBQWpCLEVBQXFCKzNCLFNBQXJCLEVBQWdDO0FBQ3JDLFFBQUlDLENBQUMsR0FBR04sU0FBUyxDQUFDSSxLQUFELENBQWpCO0FBQ0EsUUFBSTUyQyxNQUFNLEdBQUd5MkMsUUFBUSxDQUFDSyxDQUFDLENBQUM5MkMsTUFBSCxDQUFyQjtBQUNBLFFBQUkrTSxLQUFLLEdBQUcycEMsZUFBZSxDQUFDRyxTQUFELEVBQVk3MkMsTUFBWixDQUEzQjtBQUNBLFFBQUlnRixLQUFKLENBSnFDLENBS3JDO0FBQ0E7O0FBQ0EsUUFBSTJ4QyxXQUFXLElBQUk3M0IsRUFBRSxJQUFJQSxFQUF6QixFQUE2QixPQUFPOWUsTUFBTSxHQUFHK00sS0FBaEIsRUFBdUI7QUFDbEQvSCxXQUFLLEdBQUc4eEMsQ0FBQyxDQUFDL3BDLEtBQUssRUFBTixDQUFULENBRGtELENBRWxEOztBQUNBLFVBQUkvSCxLQUFLLElBQUlBLEtBQWIsRUFBb0IsT0FBTyxJQUFQLENBSDhCLENBSXBEO0FBQ0MsS0FMRCxNQUtPLE9BQU1oRixNQUFNLEdBQUcrTSxLQUFmLEVBQXNCQSxLQUFLLEVBQTNCO0FBQStCLFVBQUk0cEMsV0FBVyxJQUFJNXBDLEtBQUssSUFBSStwQyxDQUE1QixFQUErQjtBQUNuRSxZQUFJQSxDQUFDLENBQUMvcEMsS0FBRCxDQUFELEtBQWErUixFQUFqQixFQUFxQixPQUFPNjNCLFdBQVcsSUFBSTVwQyxLQUFmLElBQXdCLENBQS9CO0FBQ3RCO0FBRk07QUFFTCxXQUFPLENBQUM0cEMsV0FBRCxJQUFnQixDQUFDLENBQXhCO0FBQ0gsR0FmRDtBQWdCRCxDQWpCRCxDOzs7Ozs7Ozs7Ozs7OztBQ0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSUksR0FBRyxHQUFHNWtDLG1CQUFPLENBQUMsc0RBQUQsQ0FBakI7O0FBQ0EsSUFBSTZrQyxPQUFPLEdBQUc3a0MsbUJBQU8sQ0FBQyw4REFBRCxDQUFyQjs7QUFDQSxJQUFJOGtDLFFBQVEsR0FBRzlrQyxtQkFBTyxDQUFDLGtFQUFELENBQXRCOztBQUNBLElBQUlza0MsUUFBUSxHQUFHdGtDLG1CQUFPLENBQUMsa0VBQUQsQ0FBdEI7O0FBQ0EsSUFBSStrQyxHQUFHLEdBQUcva0MsbUJBQU8sQ0FBQyx3RkFBRCxDQUFqQjs7QUFDQXpKLE1BQU0sQ0FBQ2tSLE9BQVAsR0FBaUIsVUFBVXU5QixJQUFWLEVBQWdCQyxPQUFoQixFQUF5QjtBQUN4QyxNQUFJQyxNQUFNLEdBQUdGLElBQUksSUFBSSxDQUFyQjtBQUNBLE1BQUlHLFNBQVMsR0FBR0gsSUFBSSxJQUFJLENBQXhCO0FBQ0EsTUFBSUksT0FBTyxHQUFHSixJQUFJLElBQUksQ0FBdEI7QUFDQSxNQUFJSyxRQUFRLEdBQUdMLElBQUksSUFBSSxDQUF2QjtBQUNBLE1BQUlNLGFBQWEsR0FBR04sSUFBSSxJQUFJLENBQTVCO0FBQ0EsTUFBSU8sUUFBUSxHQUFHUCxJQUFJLElBQUksQ0FBUixJQUFhTSxhQUE1QjtBQUNBLE1BQUlFLE1BQU0sR0FBR1AsT0FBTyxJQUFJRixHQUF4QjtBQUNBLFNBQU8sVUFBVU4sS0FBVixFQUFpQmdCLFVBQWpCLEVBQTZCQyxJQUE3QixFQUFtQztBQUN4QyxRQUFJZixDQUFDLEdBQUdHLFFBQVEsQ0FBQ0wsS0FBRCxDQUFoQjtBQUNBLFFBQUk1ckMsSUFBSSxHQUFHZ3NDLE9BQU8sQ0FBQ0YsQ0FBRCxDQUFsQjtBQUNBLFFBQUlnQixDQUFDLEdBQUdmLEdBQUcsQ0FBQ2EsVUFBRCxFQUFhQyxJQUFiLEVBQW1CLENBQW5CLENBQVg7QUFDQSxRQUFJNzNDLE1BQU0sR0FBR3kyQyxRQUFRLENBQUN6ckMsSUFBSSxDQUFDaEwsTUFBTixDQUFyQjtBQUNBLFFBQUkrTSxLQUFLLEdBQUcsQ0FBWjtBQUNBLFFBQUllLE1BQU0sR0FBR3VwQyxNQUFNLEdBQUdNLE1BQU0sQ0FBQ2YsS0FBRCxFQUFRNTJDLE1BQVIsQ0FBVCxHQUEyQnMzQyxTQUFTLEdBQUdLLE1BQU0sQ0FBQ2YsS0FBRCxFQUFRLENBQVIsQ0FBVCxHQUFzQmxoQixTQUE3RTtBQUNBLFFBQUlxRyxHQUFKLEVBQVNnYyxHQUFUOztBQUNBLFdBQU0vM0MsTUFBTSxHQUFHK00sS0FBZixFQUFzQkEsS0FBSyxFQUEzQjtBQUErQixVQUFJMnFDLFFBQVEsSUFBSTNxQyxLQUFLLElBQUkvQixJQUF6QixFQUErQjtBQUM1RCt3QixXQUFHLEdBQUcvd0IsSUFBSSxDQUFDK0IsS0FBRCxDQUFWO0FBQ0FnckMsV0FBRyxHQUFHRCxDQUFDLENBQUMvYixHQUFELEVBQU1odkIsS0FBTixFQUFhK3BDLENBQWIsQ0FBUDs7QUFDQSxZQUFJSyxJQUFKLEVBQVU7QUFDUixjQUFJRSxNQUFKLEVBQVl2cEMsTUFBTSxDQUFDZixLQUFELENBQU4sR0FBZ0JnckMsR0FBaEIsQ0FBWixDQUFtQztBQUFuQyxlQUNLLElBQUlBLEdBQUosRUFBUyxRQUFRWixJQUFSO0FBQ1osbUJBQUssQ0FBTDtBQUFRLHVCQUFPLElBQVA7QUFBeUI7O0FBQ2pDLG1CQUFLLENBQUw7QUFBUSx1QkFBT3BiLEdBQVA7QUFBeUI7O0FBQ2pDLG1CQUFLLENBQUw7QUFBUSx1QkFBT2h2QixLQUFQO0FBQXlCOztBQUNqQyxtQkFBSyxDQUFMO0FBQVFlLHNCQUFNLENBQUNxMEIsSUFBUCxDQUFZcEcsR0FBWjtBQUF5QjtBQUpyQixhQUFULE1BS0UsSUFBSXliLFFBQUosRUFBYyxPQUFPLEtBQVAsQ0FQYixDQU8yQjtBQUNwQztBQUNGO0FBWkQ7O0FBYUEsV0FBT0MsYUFBYSxHQUFHLENBQUMsQ0FBSixHQUFRRixPQUFPLElBQUlDLFFBQVgsR0FBc0JBLFFBQXRCLEdBQWlDMXBDLE1BQTdEO0FBQ0QsR0F0QkQ7QUF1QkQsQ0EvQkQsQzs7Ozs7Ozs7Ozs7Ozs7QUNaQSxJQUFJakQsUUFBUSxHQUFHc0gsbUJBQU8sQ0FBQyxrRUFBRCxDQUF0Qjs7QUFDQSxJQUFJN0UsT0FBTyxHQUFHNkUsbUJBQU8sQ0FBQyxnRUFBRCxDQUFyQjs7QUFDQSxJQUFJNmxDLE9BQU8sR0FBRzdsQyxtQkFBTyxDQUFDLHNEQUFELENBQVAsQ0FBa0IsU0FBbEIsQ0FBZDs7QUFFQXpKLE1BQU0sQ0FBQ2tSLE9BQVAsR0FBaUIsVUFBVXErQixRQUFWLEVBQW9CO0FBQ25DLE1BQUlDLENBQUo7O0FBQ0EsTUFBSTVxQyxPQUFPLENBQUMycUMsUUFBRCxDQUFYLEVBQXVCO0FBQ3JCQyxLQUFDLEdBQUdELFFBQVEsQ0FBQzl5QyxXQUFiLENBRHFCLENBRXJCOztBQUNBLFFBQUksT0FBTyt5QyxDQUFQLElBQVksVUFBWixLQUEyQkEsQ0FBQyxLQUFLbDJDLEtBQU4sSUFBZXNMLE9BQU8sQ0FBQzRxQyxDQUFDLENBQUMzbEIsU0FBSCxDQUFqRCxDQUFKLEVBQXFFMmxCLENBQUMsR0FBR3hpQixTQUFKOztBQUNyRSxRQUFJN3FCLFFBQVEsQ0FBQ3F0QyxDQUFELENBQVosRUFBaUI7QUFDZkEsT0FBQyxHQUFHQSxDQUFDLENBQUNGLE9BQUQsQ0FBTDtBQUNBLFVBQUlFLENBQUMsS0FBSyxJQUFWLEVBQWdCQSxDQUFDLEdBQUd4aUIsU0FBSjtBQUNqQjtBQUNGOztBQUFDLFNBQU93aUIsQ0FBQyxLQUFLeGlCLFNBQU4sR0FBa0IxekIsS0FBbEIsR0FBMEJrMkMsQ0FBakM7QUFDSCxDQVhELEM7Ozs7Ozs7Ozs7Ozs7O0FDSkE7QUFDQSxJQUFJQyxrQkFBa0IsR0FBR2htQyxtQkFBTyxDQUFDLGtHQUFELENBQWhDOztBQUVBekosTUFBTSxDQUFDa1IsT0FBUCxHQUFpQixVQUFVcStCLFFBQVYsRUFBb0JqNEMsTUFBcEIsRUFBNEI7QUFDM0MsU0FBTyxLQUFLbTRDLGtCQUFrQixDQUFDRixRQUFELENBQXZCLEVBQW1DajRDLE1BQW5DLENBQVA7QUFDRCxDQUZELEM7Ozs7Ozs7Ozs7Ozs7O0FDSEEsSUFBSWlCLFFBQVEsR0FBRyxHQUFHQSxRQUFsQjs7QUFFQXlILE1BQU0sQ0FBQ2tSLE9BQVAsR0FBaUIsVUFBVXk4QixFQUFWLEVBQWM7QUFDN0IsU0FBT3AxQyxRQUFRLENBQUN1eEIsSUFBVCxDQUFjNmpCLEVBQWQsRUFBa0JwZ0IsS0FBbEIsQ0FBd0IsQ0FBeEIsRUFBMkIsQ0FBQyxDQUE1QixDQUFQO0FBQ0QsQ0FGRCxDOzs7Ozs7Ozs7Ozs7OztBQ0ZBLElBQUltaUIsSUFBSSxHQUFHMXZDLE1BQU0sQ0FBQ2tSLE9BQVAsR0FBaUI7QUFBRXkrQixTQUFPLEVBQUU7QUFBWCxDQUE1QjtBQUNBLElBQUksT0FBT0MsR0FBUCxJQUFjLFFBQWxCLEVBQTRCQSxHQUFHLEdBQUdGLElBQU4sQyxDQUFZLCtCOzs7Ozs7Ozs7Ozs7OztBQ0R4QztBQUNBLElBQUlHLFNBQVMsR0FBR3BtQyxtQkFBTyxDQUFDLG9FQUFELENBQXZCOztBQUNBekosTUFBTSxDQUFDa1IsT0FBUCxHQUFpQixVQUFVelYsRUFBVixFQUFjMHpDLElBQWQsRUFBb0I3M0MsTUFBcEIsRUFBNEI7QUFDM0N1NEMsV0FBUyxDQUFDcDBDLEVBQUQsQ0FBVDtBQUNBLE1BQUkwekMsSUFBSSxLQUFLbmlCLFNBQWIsRUFBd0IsT0FBT3Z4QixFQUFQOztBQUN4QixVQUFRbkUsTUFBUjtBQUNFLFNBQUssQ0FBTDtBQUFRLGFBQU8sVUFBVSt2QyxDQUFWLEVBQWE7QUFDMUIsZUFBTzVyQyxFQUFFLENBQUNxdUIsSUFBSCxDQUFRcWxCLElBQVIsRUFBYzlILENBQWQsQ0FBUDtBQUNELE9BRk87O0FBR1IsU0FBSyxDQUFMO0FBQVEsYUFBTyxVQUFVQSxDQUFWLEVBQWFDLENBQWIsRUFBZ0I7QUFDN0IsZUFBTzdyQyxFQUFFLENBQUNxdUIsSUFBSCxDQUFRcWxCLElBQVIsRUFBYzlILENBQWQsRUFBaUJDLENBQWpCLENBQVA7QUFDRCxPQUZPOztBQUdSLFNBQUssQ0FBTDtBQUFRLGFBQU8sVUFBVUQsQ0FBVixFQUFhQyxDQUFiLEVBQWdCN2tCLENBQWhCLEVBQW1CO0FBQ2hDLGVBQU9obkIsRUFBRSxDQUFDcXVCLElBQUgsQ0FBUXFsQixJQUFSLEVBQWM5SCxDQUFkLEVBQWlCQyxDQUFqQixFQUFvQjdrQixDQUFwQixDQUFQO0FBQ0QsT0FGTztBQVBWOztBQVdBLFNBQU87QUFBVTtBQUFlO0FBQzlCLFdBQU9obkIsRUFBRSxDQUFDMEksS0FBSCxDQUFTZ3JDLElBQVQsRUFBZXYrQixTQUFmLENBQVA7QUFDRCxHQUZEO0FBR0QsQ0FqQkQsQzs7Ozs7Ozs7Ozs7Ozs7QUNGQTtBQUNBNVEsTUFBTSxDQUFDa1IsT0FBUCxHQUFpQixVQUFVeThCLEVBQVYsRUFBYztBQUM3QixNQUFJQSxFQUFFLElBQUkzZ0IsU0FBVixFQUFxQixNQUFNa0gsU0FBUyxDQUFDLDJCQUEyQnlaLEVBQTVCLENBQWY7QUFDckIsU0FBT0EsRUFBUDtBQUNELENBSEQsQzs7Ozs7Ozs7Ozs7Ozs7QUNEQTtBQUNBM3RDLE1BQU0sQ0FBQ2tSLE9BQVAsR0FBaUIsQ0FBQ3pILG1CQUFPLENBQUMsMERBQUQsQ0FBUCxDQUFvQixZQUFZO0FBQ2hELFNBQU9sTyxNQUFNLENBQUNELGNBQVAsQ0FBc0IsRUFBdEIsRUFBMEIsR0FBMUIsRUFBK0I7QUFBRXFCLE9BQUcsRUFBRSxlQUFZO0FBQUUsYUFBTyxDQUFQO0FBQVc7QUFBaEMsR0FBL0IsRUFBbUUwcUMsQ0FBbkUsSUFBd0UsQ0FBL0U7QUFDRCxDQUZpQixDQUFsQixDOzs7Ozs7Ozs7Ozs7OztBQ0RBLElBQUlsbEMsUUFBUSxHQUFHc0gsbUJBQU8sQ0FBQyxrRUFBRCxDQUF0Qjs7QUFDQSxJQUFJTixRQUFRLEdBQUdNLG1CQUFPLENBQUMsNERBQUQsQ0FBUCxDQUFxQk4sUUFBcEMsQyxDQUNBOzs7QUFDQSxJQUFJMm1DLEVBQUUsR0FBRzN0QyxRQUFRLENBQUNnSCxRQUFELENBQVIsSUFBc0JoSCxRQUFRLENBQUNnSCxRQUFRLENBQUNtbEIsYUFBVixDQUF2Qzs7QUFDQXR1QixNQUFNLENBQUNrUixPQUFQLEdBQWlCLFVBQVV5OEIsRUFBVixFQUFjO0FBQzdCLFNBQU9tQyxFQUFFLEdBQUczbUMsUUFBUSxDQUFDbWxCLGFBQVQsQ0FBdUJxZixFQUF2QixDQUFILEdBQWdDLEVBQXpDO0FBQ0QsQ0FGRCxDOzs7Ozs7Ozs7Ozs7OztBQ0pBLElBQUk5cEMsTUFBTSxHQUFHNEYsbUJBQU8sQ0FBQyw0REFBRCxDQUFwQjs7QUFDQSxJQUFJaW1DLElBQUksR0FBR2ptQyxtQkFBTyxDQUFDLHdEQUFELENBQWxCOztBQUNBLElBQUlzbUMsSUFBSSxHQUFHdG1DLG1CQUFPLENBQUMsd0RBQUQsQ0FBbEI7O0FBQ0EsSUFBSXVtQyxRQUFRLEdBQUd2bUMsbUJBQU8sQ0FBQyxnRUFBRCxDQUF0Qjs7QUFDQSxJQUFJNGtDLEdBQUcsR0FBRzVrQyxtQkFBTyxDQUFDLHNEQUFELENBQWpCOztBQUNBLElBQUl3bUMsU0FBUyxHQUFHLFdBQWhCOztBQUVBLElBQUlDLE9BQU8sR0FBRyxTQUFWQSxPQUFVLENBQVVodUMsSUFBVixFQUFnQjFLLElBQWhCLEVBQXNCa1csTUFBdEIsRUFBOEI7QUFDMUMsTUFBSXlpQyxTQUFTLEdBQUdqdUMsSUFBSSxHQUFHZ3VDLE9BQU8sQ0FBQ3BnQixDQUEvQjtBQUNBLE1BQUlzZ0IsU0FBUyxHQUFHbHVDLElBQUksR0FBR2d1QyxPQUFPLENBQUNoZ0IsQ0FBL0I7QUFDQSxNQUFJbWdCLFNBQVMsR0FBR251QyxJQUFJLEdBQUdndUMsT0FBTyxDQUFDNWYsQ0FBL0I7QUFDQSxNQUFJZ2dCLFFBQVEsR0FBR3B1QyxJQUFJLEdBQUdndUMsT0FBTyxDQUFDL25CLENBQTlCO0FBQ0EsTUFBSW9vQixPQUFPLEdBQUdydUMsSUFBSSxHQUFHZ3VDLE9BQU8sQ0FBQ00sQ0FBN0I7QUFDQSxNQUFJOXpDLE1BQU0sR0FBRzB6QyxTQUFTLEdBQUd2c0MsTUFBSCxHQUFZd3NDLFNBQVMsR0FBR3hzQyxNQUFNLENBQUNyTSxJQUFELENBQU4sS0FBaUJxTSxNQUFNLENBQUNyTSxJQUFELENBQU4sR0FBZSxFQUFoQyxDQUFILEdBQXlDLENBQUNxTSxNQUFNLENBQUNyTSxJQUFELENBQU4sSUFBZ0IsRUFBakIsRUFBcUJ5NEMsU0FBckIsQ0FBcEY7QUFDQSxNQUFJLytCLE9BQU8sR0FBR2svQixTQUFTLEdBQUdWLElBQUgsR0FBVUEsSUFBSSxDQUFDbDRDLElBQUQsQ0FBSixLQUFlazRDLElBQUksQ0FBQ2w0QyxJQUFELENBQUosR0FBYSxFQUE1QixDQUFqQztBQUNBLE1BQUlpNUMsUUFBUSxHQUFHdi9CLE9BQU8sQ0FBQysrQixTQUFELENBQVAsS0FBdUIvK0IsT0FBTyxDQUFDKytCLFNBQUQsQ0FBUCxHQUFxQixFQUE1QyxDQUFmO0FBQ0EsTUFBSTl6QyxHQUFKLEVBQVN1MEMsR0FBVCxFQUFjQyxHQUFkLEVBQW1CQyxHQUFuQjtBQUNBLE1BQUlSLFNBQUosRUFBZTFpQyxNQUFNLEdBQUdsVyxJQUFUOztBQUNmLE9BQUsyRSxHQUFMLElBQVl1UixNQUFaLEVBQW9CO0FBQ2xCO0FBQ0FnakMsT0FBRyxHQUFHLENBQUNQLFNBQUQsSUFBY3p6QyxNQUFkLElBQXdCQSxNQUFNLENBQUNQLEdBQUQsQ0FBTixLQUFnQjZ3QixTQUE5QyxDQUZrQixDQUdsQjs7QUFDQTJqQixPQUFHLEdBQUcsQ0FBQ0QsR0FBRyxHQUFHaDBDLE1BQUgsR0FBWWdSLE1BQWhCLEVBQXdCdlIsR0FBeEIsQ0FBTixDQUprQixDQUtsQjs7QUFDQXkwQyxPQUFHLEdBQUdMLE9BQU8sSUFBSUcsR0FBWCxHQUFpQnJDLEdBQUcsQ0FBQ3NDLEdBQUQsRUFBTTlzQyxNQUFOLENBQXBCLEdBQW9DeXNDLFFBQVEsSUFBSSxPQUFPSyxHQUFQLElBQWMsVUFBMUIsR0FBdUN0QyxHQUFHLENBQUM3ckMsUUFBUSxDQUFDc25CLElBQVYsRUFBZ0I2bUIsR0FBaEIsQ0FBMUMsR0FBaUVBLEdBQTNHLENBTmtCLENBT2xCOztBQUNBLFFBQUlqMEMsTUFBSixFQUFZc3pDLFFBQVEsQ0FBQ3R6QyxNQUFELEVBQVNQLEdBQVQsRUFBY3cwQyxHQUFkLEVBQW1CenVDLElBQUksR0FBR2d1QyxPQUFPLENBQUMxZixDQUFsQyxDQUFSLENBUk0sQ0FTbEI7O0FBQ0EsUUFBSXRmLE9BQU8sQ0FBQy9VLEdBQUQsQ0FBUCxJQUFnQncwQyxHQUFwQixFQUF5QlosSUFBSSxDQUFDNytCLE9BQUQsRUFBVS9VLEdBQVYsRUFBZXkwQyxHQUFmLENBQUo7QUFDekIsUUFBSU4sUUFBUSxJQUFJRyxRQUFRLENBQUN0MEMsR0FBRCxDQUFSLElBQWlCdzBDLEdBQWpDLEVBQXNDRixRQUFRLENBQUN0MEMsR0FBRCxDQUFSLEdBQWdCdzBDLEdBQWhCO0FBQ3ZDO0FBQ0YsQ0F4QkQ7O0FBeUJBOXNDLE1BQU0sQ0FBQzZyQyxJQUFQLEdBQWNBLElBQWQsQyxDQUNBOztBQUNBUSxPQUFPLENBQUNwZ0IsQ0FBUixHQUFZLENBQVosQyxDQUFpQjs7QUFDakJvZ0IsT0FBTyxDQUFDaGdCLENBQVIsR0FBWSxDQUFaLEMsQ0FBaUI7O0FBQ2pCZ2dCLE9BQU8sQ0FBQzVmLENBQVIsR0FBWSxDQUFaLEMsQ0FBaUI7O0FBQ2pCNGYsT0FBTyxDQUFDL25CLENBQVIsR0FBWSxDQUFaLEMsQ0FBaUI7O0FBQ2pCK25CLE9BQU8sQ0FBQ00sQ0FBUixHQUFZLEVBQVosQyxDQUFpQjs7QUFDakJOLE9BQU8sQ0FBQ2xuQixDQUFSLEdBQVksRUFBWixDLENBQWlCOztBQUNqQmtuQixPQUFPLENBQUMxZixDQUFSLEdBQVksRUFBWixDLENBQWlCOztBQUNqQjBmLE9BQU8sQ0FBQ1csQ0FBUixHQUFZLEdBQVosQyxDQUFpQjs7QUFDakI3d0MsTUFBTSxDQUFDa1IsT0FBUCxHQUFpQmcvQixPQUFqQixDOzs7Ozs7Ozs7Ozs7OztBQzFDQSxJQUFJWSxLQUFLLEdBQUdybkMsbUJBQU8sQ0FBQyxzREFBRCxDQUFQLENBQWtCLE9BQWxCLENBQVo7O0FBQ0F6SixNQUFNLENBQUNrUixPQUFQLEdBQWlCLFVBQVU2L0IsR0FBVixFQUFlO0FBQzlCLE1BQUlDLEVBQUUsR0FBRyxHQUFUOztBQUNBLE1BQUk7QUFDRixVQUFNRCxHQUFOLEVBQVdDLEVBQVg7QUFDRCxHQUZELENBRUUsT0FBTzNuQyxDQUFQLEVBQVU7QUFDVixRQUFJO0FBQ0YybkMsUUFBRSxDQUFDRixLQUFELENBQUYsR0FBWSxLQUFaO0FBQ0EsYUFBTyxDQUFDLE1BQU1DLEdBQU4sRUFBV0MsRUFBWCxDQUFSO0FBQ0QsS0FIRCxDQUdFLE9BQU81QixDQUFQLEVBQVU7QUFBRTtBQUFhO0FBQzVCOztBQUFDLFNBQU8sSUFBUDtBQUNILENBVkQsQzs7Ozs7Ozs7Ozs7Ozs7QUNEQXB2QyxNQUFNLENBQUNrUixPQUFQLEdBQWlCLFVBQVVraUIsSUFBVixFQUFnQjtBQUMvQixNQUFJO0FBQ0YsV0FBTyxDQUFDLENBQUNBLElBQUksRUFBYjtBQUNELEdBRkQsQ0FFRSxPQUFPL3BCLENBQVAsRUFBVTtBQUNWLFdBQU8sSUFBUDtBQUNEO0FBQ0YsQ0FORCxDOzs7Ozs7Ozs7Ozs7OztBQ0FBckosTUFBTSxDQUFDa1IsT0FBUCxHQUFpQnpILG1CQUFPLENBQUMsNERBQUQsQ0FBUCxDQUFxQiwyQkFBckIsRUFBa0RqSCxRQUFRLENBQUNqSyxRQUEzRCxDQUFqQixDOzs7Ozs7Ozs7Ozs7OztBQ0FBO0FBQ0EsSUFBSXNMLE1BQU0sR0FBRzdELE1BQU0sQ0FBQ2tSLE9BQVAsR0FBaUIsT0FBT3ZILE1BQVAsSUFBaUIsV0FBakIsSUFBZ0NBLE1BQU0sQ0FBQzdQLElBQVAsSUFBZUEsSUFBL0MsR0FDMUI2UCxNQUQwQixHQUNqQixPQUFPckgsSUFBUCxJQUFlLFdBQWYsSUFBOEJBLElBQUksQ0FBQ3hJLElBQUwsSUFBYUEsSUFBM0MsR0FBa0R3SSxJQUFsRCxDQUNYO0FBRFcsRUFFVEUsUUFBUSxDQUFDLGFBQUQsQ0FBUixFQUhKO0FBSUEsSUFBSSxPQUFPeXVDLEdBQVAsSUFBYyxRQUFsQixFQUE0QkEsR0FBRyxHQUFHcHRDLE1BQU4sQyxDQUFjLCtCOzs7Ozs7Ozs7Ozs7OztBQ0wxQyxJQUFJYSxjQUFjLEdBQUcsR0FBR0EsY0FBeEI7O0FBQ0ExRSxNQUFNLENBQUNrUixPQUFQLEdBQWlCLFVBQVV5OEIsRUFBVixFQUFjeHhDLEdBQWQsRUFBbUI7QUFDbEMsU0FBT3VJLGNBQWMsQ0FBQ29sQixJQUFmLENBQW9CNmpCLEVBQXBCLEVBQXdCeHhDLEdBQXhCLENBQVA7QUFDRCxDQUZELEM7Ozs7Ozs7Ozs7Ozs7O0FDREEsSUFBSSswQyxFQUFFLEdBQUd6bkMsbUJBQU8sQ0FBQyxrRUFBRCxDQUFoQjs7QUFDQSxJQUFJMG5DLFVBQVUsR0FBRzFuQyxtQkFBTyxDQUFDLDBFQUFELENBQXhCOztBQUNBekosTUFBTSxDQUFDa1IsT0FBUCxHQUFpQnpILG1CQUFPLENBQUMsc0VBQUQsQ0FBUCxHQUE0QixVQUFVckcsTUFBVixFQUFrQmpILEdBQWxCLEVBQXVCRyxLQUF2QixFQUE4QjtBQUN6RSxTQUFPNDBDLEVBQUUsQ0FBQzlCLENBQUgsQ0FBS2hzQyxNQUFMLEVBQWFqSCxHQUFiLEVBQWtCZzFDLFVBQVUsQ0FBQyxDQUFELEVBQUk3MEMsS0FBSixDQUE1QixDQUFQO0FBQ0QsQ0FGZ0IsR0FFYixVQUFVOEcsTUFBVixFQUFrQmpILEdBQWxCLEVBQXVCRyxLQUF2QixFQUE4QjtBQUNoQzhHLFFBQU0sQ0FBQ2pILEdBQUQsQ0FBTixHQUFjRyxLQUFkO0FBQ0EsU0FBTzhHLE1BQVA7QUFDRCxDQUxELEM7Ozs7Ozs7Ozs7Ozs7O0FDRkFwRCxNQUFNLENBQUNrUixPQUFQLEdBQWlCLENBQUN6SCxtQkFBTyxDQUFDLHNFQUFELENBQVIsSUFBOEIsQ0FBQ0EsbUJBQU8sQ0FBQywwREFBRCxDQUFQLENBQW9CLFlBQVk7QUFDOUUsU0FBT2xPLE1BQU0sQ0FBQ0QsY0FBUCxDQUFzQm1PLG1CQUFPLENBQUMsb0VBQUQsQ0FBUCxDQUF5QixLQUF6QixDQUF0QixFQUF1RCxHQUF2RCxFQUE0RDtBQUFFOU0sT0FBRyxFQUFFLGVBQVk7QUFBRSxhQUFPLENBQVA7QUFBVztBQUFoQyxHQUE1RCxFQUFnRzBxQyxDQUFoRyxJQUFxRyxDQUE1RztBQUNELENBRitDLENBQWhELEM7Ozs7Ozs7Ozs7Ozs7O0FDQUE7QUFDQSxJQUFJK0osR0FBRyxHQUFHM25DLG1CQUFPLENBQUMsc0RBQUQsQ0FBakIsQyxDQUNBOzs7QUFDQXpKLE1BQU0sQ0FBQ2tSLE9BQVAsR0FBaUIzVixNQUFNLENBQUMsR0FBRCxDQUFOLENBQVl1VixvQkFBWixDQUFpQyxDQUFqQyxJQUFzQ3ZWLE1BQXRDLEdBQStDLFVBQVVveUMsRUFBVixFQUFjO0FBQzVFLFNBQU95RCxHQUFHLENBQUN6RCxFQUFELENBQUgsSUFBVyxRQUFYLEdBQXNCQSxFQUFFLENBQUMvekMsS0FBSCxDQUFTLEVBQVQsQ0FBdEIsR0FBcUMyQixNQUFNLENBQUNveUMsRUFBRCxDQUFsRDtBQUNELENBRkQsQzs7Ozs7Ozs7Ozs7Ozs7QUNIQTtBQUNBLElBQUl5RCxHQUFHLEdBQUczbkMsbUJBQU8sQ0FBQyxzREFBRCxDQUFqQjs7QUFDQXpKLE1BQU0sQ0FBQ2tSLE9BQVAsR0FBaUI1WCxLQUFLLENBQUNzTCxPQUFOLElBQWlCLFNBQVNBLE9BQVQsQ0FBaUJ5c0MsR0FBakIsRUFBc0I7QUFDdEQsU0FBT0QsR0FBRyxDQUFDQyxHQUFELENBQUgsSUFBWSxPQUFuQjtBQUNELENBRkQsQzs7Ozs7Ozs7Ozs7Ozs7QUNGQTtBQUNBLElBQUlsdkMsUUFBUSxHQUFHc0gsbUJBQU8sQ0FBQyxrRUFBRCxDQUF0Qjs7QUFDQSxJQUFJNm5DLEtBQUssR0FBR3gzQyxJQUFJLENBQUN3M0MsS0FBakI7O0FBQ0F0eEMsTUFBTSxDQUFDa1IsT0FBUCxHQUFpQixTQUFTdThCLFNBQVQsQ0FBbUJFLEVBQW5CLEVBQXVCO0FBQ3RDLFNBQU8sQ0FBQ3hyQyxRQUFRLENBQUN3ckMsRUFBRCxDQUFULElBQWlCNEQsUUFBUSxDQUFDNUQsRUFBRCxDQUF6QixJQUFpQzJELEtBQUssQ0FBQzNELEVBQUQsQ0FBTCxLQUFjQSxFQUF0RDtBQUNELENBRkQsQzs7Ozs7Ozs7Ozs7Ozs7OztBQ0hBM3RDLE1BQU0sQ0FBQ2tSLE9BQVAsR0FBaUIsVUFBVXk4QixFQUFWLEVBQWM7QUFDN0IsU0FBTyxRQUFPQSxFQUFQLE1BQWMsUUFBZCxHQUF5QkEsRUFBRSxLQUFLLElBQWhDLEdBQXVDLE9BQU9BLEVBQVAsS0FBYyxVQUE1RDtBQUNELENBRkQsQzs7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUNBLElBQUl4ckMsUUFBUSxHQUFHc0gsbUJBQU8sQ0FBQyxrRUFBRCxDQUF0Qjs7QUFDQSxJQUFJMm5DLEdBQUcsR0FBRzNuQyxtQkFBTyxDQUFDLHNEQUFELENBQWpCOztBQUNBLElBQUlxbkMsS0FBSyxHQUFHcm5DLG1CQUFPLENBQUMsc0RBQUQsQ0FBUCxDQUFrQixPQUFsQixDQUFaOztBQUNBekosTUFBTSxDQUFDa1IsT0FBUCxHQUFpQixVQUFVeThCLEVBQVYsRUFBYztBQUM3QixNQUFJNkQsUUFBSjtBQUNBLFNBQU9ydkMsUUFBUSxDQUFDd3JDLEVBQUQsQ0FBUixLQUFpQixDQUFDNkQsUUFBUSxHQUFHN0QsRUFBRSxDQUFDbUQsS0FBRCxDQUFkLE1BQTJCOWpCLFNBQTNCLEdBQXVDLENBQUMsQ0FBQ3drQixRQUF6QyxHQUFvREosR0FBRyxDQUFDekQsRUFBRCxDQUFILElBQVcsUUFBaEYsQ0FBUDtBQUNELENBSEQsQzs7Ozs7Ozs7Ozs7Ozs7QUNKQTN0QyxNQUFNLENBQUNrUixPQUFQLEdBQWlCLEtBQWpCLEM7Ozs7Ozs7Ozs7Ozs7O0FDQUEsSUFBSXVnQyxRQUFRLEdBQUdob0MsbUJBQU8sQ0FBQyxrRUFBRCxDQUF0Qjs7QUFDQSxJQUFJaW9DLGNBQWMsR0FBR2pvQyxtQkFBTyxDQUFDLDRFQUFELENBQTVCOztBQUNBLElBQUlrb0MsV0FBVyxHQUFHbG9DLG1CQUFPLENBQUMsd0VBQUQsQ0FBekI7O0FBQ0EsSUFBSXluQyxFQUFFLEdBQUczMUMsTUFBTSxDQUFDRCxjQUFoQjtBQUVBNFYsT0FBTyxDQUFDaytCLENBQVIsR0FBWTNsQyxtQkFBTyxDQUFDLHNFQUFELENBQVAsR0FBNEJsTyxNQUFNLENBQUNELGNBQW5DLEdBQW9ELFNBQVNBLGNBQVQsQ0FBd0I4eUMsQ0FBeEIsRUFBMkJqbUIsQ0FBM0IsRUFBOEJ5cEIsVUFBOUIsRUFBMEM7QUFDeEdILFVBQVEsQ0FBQ3JELENBQUQsQ0FBUjtBQUNBam1CLEdBQUMsR0FBR3dwQixXQUFXLENBQUN4cEIsQ0FBRCxFQUFJLElBQUosQ0FBZjtBQUNBc3BCLFVBQVEsQ0FBQ0csVUFBRCxDQUFSO0FBQ0EsTUFBSUYsY0FBSixFQUFvQixJQUFJO0FBQ3RCLFdBQU9SLEVBQUUsQ0FBQzlDLENBQUQsRUFBSWptQixDQUFKLEVBQU95cEIsVUFBUCxDQUFUO0FBQ0QsR0FGbUIsQ0FFbEIsT0FBT3ZvQyxDQUFQLEVBQVU7QUFBRTtBQUFhO0FBQzNCLE1BQUksU0FBU3VvQyxVQUFULElBQXVCLFNBQVNBLFVBQXBDLEVBQWdELE1BQU0xZCxTQUFTLENBQUMsMEJBQUQsQ0FBZjtBQUNoRCxNQUFJLFdBQVcwZCxVQUFmLEVBQTJCeEQsQ0FBQyxDQUFDam1CLENBQUQsQ0FBRCxHQUFPeXBCLFVBQVUsQ0FBQ3QxQyxLQUFsQjtBQUMzQixTQUFPOHhDLENBQVA7QUFDRCxDQVZELEM7Ozs7Ozs7Ozs7Ozs7O0FDTEFwdUMsTUFBTSxDQUFDa1IsT0FBUCxHQUFpQixVQUFVMmdDLE1BQVYsRUFBa0J2MUMsS0FBbEIsRUFBeUI7QUFDeEMsU0FBTztBQUNMRSxjQUFVLEVBQUUsRUFBRXExQyxNQUFNLEdBQUcsQ0FBWCxDQURQO0FBRUx0MUMsZ0JBQVksRUFBRSxFQUFFczFDLE1BQU0sR0FBRyxDQUFYLENBRlQ7QUFHTC8wQyxZQUFRLEVBQUUsRUFBRSswQyxNQUFNLEdBQUcsQ0FBWCxDQUhMO0FBSUx2MUMsU0FBSyxFQUFFQTtBQUpGLEdBQVA7QUFNRCxDQVBELEM7Ozs7Ozs7Ozs7Ozs7O0FDQUEsSUFBSXVILE1BQU0sR0FBRzRGLG1CQUFPLENBQUMsNERBQUQsQ0FBcEI7O0FBQ0EsSUFBSXNtQyxJQUFJLEdBQUd0bUMsbUJBQU8sQ0FBQyx3REFBRCxDQUFsQjs7QUFDQSxJQUFJcW9DLEdBQUcsR0FBR3JvQyxtQkFBTyxDQUFDLHNEQUFELENBQWpCOztBQUNBLElBQUlzb0MsR0FBRyxHQUFHdG9DLG1CQUFPLENBQUMsc0RBQUQsQ0FBUCxDQUFrQixLQUFsQixDQUFWOztBQUNBLElBQUl1b0MsU0FBUyxHQUFHdm9DLG1CQUFPLENBQUMsb0ZBQUQsQ0FBdkI7O0FBQ0EsSUFBSXdvQyxTQUFTLEdBQUcsVUFBaEI7QUFDQSxJQUFJQyxHQUFHLEdBQUcsQ0FBQyxLQUFLRixTQUFOLEVBQWlCcDRDLEtBQWpCLENBQXVCcTRDLFNBQXZCLENBQVY7O0FBRUF4b0MsbUJBQU8sQ0FBQyx3REFBRCxDQUFQLENBQW1CMG9DLGFBQW5CLEdBQW1DLFVBQVV4RSxFQUFWLEVBQWM7QUFDL0MsU0FBT3FFLFNBQVMsQ0FBQ2xvQixJQUFWLENBQWU2akIsRUFBZixDQUFQO0FBQ0QsQ0FGRDs7QUFJQSxDQUFDM3RDLE1BQU0sQ0FBQ2tSLE9BQVAsR0FBaUIsVUFBVWs5QixDQUFWLEVBQWFqeUMsR0FBYixFQUFrQmszQixHQUFsQixFQUF1QitlLElBQXZCLEVBQTZCO0FBQzdDLE1BQUl4dkMsVUFBVSxHQUFHLE9BQU95d0IsR0FBUCxJQUFjLFVBQS9CO0FBQ0EsTUFBSXp3QixVQUFKLEVBQWdCa3ZDLEdBQUcsQ0FBQ3plLEdBQUQsRUFBTSxNQUFOLENBQUgsSUFBb0IwYyxJQUFJLENBQUMxYyxHQUFELEVBQU0sTUFBTixFQUFjbDNCLEdBQWQsQ0FBeEI7QUFDaEIsTUFBSWl5QyxDQUFDLENBQUNqeUMsR0FBRCxDQUFELEtBQVdrM0IsR0FBZixFQUFvQjtBQUNwQixNQUFJendCLFVBQUosRUFBZ0JrdkMsR0FBRyxDQUFDemUsR0FBRCxFQUFNMGUsR0FBTixDQUFILElBQWlCaEMsSUFBSSxDQUFDMWMsR0FBRCxFQUFNMGUsR0FBTixFQUFXM0QsQ0FBQyxDQUFDanlDLEdBQUQsQ0FBRCxHQUFTLEtBQUtpeUMsQ0FBQyxDQUFDanlDLEdBQUQsQ0FBZixHQUF1QisxQyxHQUFHLENBQUMxNEMsSUFBSixDQUFTd0IsTUFBTSxDQUFDbUIsR0FBRCxDQUFmLENBQWxDLENBQXJCOztBQUNoQixNQUFJaXlDLENBQUMsS0FBS3ZxQyxNQUFWLEVBQWtCO0FBQ2hCdXFDLEtBQUMsQ0FBQ2p5QyxHQUFELENBQUQsR0FBU2szQixHQUFUO0FBQ0QsR0FGRCxNQUVPLElBQUksQ0FBQytlLElBQUwsRUFBVztBQUNoQixXQUFPaEUsQ0FBQyxDQUFDanlDLEdBQUQsQ0FBUjtBQUNBNHpDLFFBQUksQ0FBQzNCLENBQUQsRUFBSWp5QyxHQUFKLEVBQVNrM0IsR0FBVCxDQUFKO0FBQ0QsR0FITSxNQUdBLElBQUkrYSxDQUFDLENBQUNqeUMsR0FBRCxDQUFMLEVBQVk7QUFDakJpeUMsS0FBQyxDQUFDanlDLEdBQUQsQ0FBRCxHQUFTazNCLEdBQVQ7QUFDRCxHQUZNLE1BRUE7QUFDTDBjLFFBQUksQ0FBQzNCLENBQUQsRUFBSWp5QyxHQUFKLEVBQVNrM0IsR0FBVCxDQUFKO0FBQ0QsR0FkNEMsQ0FlL0M7O0FBQ0MsQ0FoQkQsRUFnQkc3d0IsUUFBUSxDQUFDcW5CLFNBaEJaLEVBZ0J1Qm9vQixTQWhCdkIsRUFnQmtDLFNBQVMxNUMsUUFBVCxHQUFvQjtBQUNwRCxTQUFPLE9BQU8sSUFBUCxJQUFlLFVBQWYsSUFBNkIsS0FBS3c1QyxHQUFMLENBQTdCLElBQTBDQyxTQUFTLENBQUNsb0IsSUFBVixDQUFlLElBQWYsQ0FBakQ7QUFDRCxDQWxCRCxFOzs7Ozs7Ozs7Ozs7OztBQ1pBLElBQUk0bEIsSUFBSSxHQUFHam1DLG1CQUFPLENBQUMsd0RBQUQsQ0FBbEI7O0FBQ0EsSUFBSTVGLE1BQU0sR0FBRzRGLG1CQUFPLENBQUMsNERBQUQsQ0FBcEI7O0FBQ0EsSUFBSTRvQyxNQUFNLEdBQUcsb0JBQWI7QUFDQSxJQUFJQyxLQUFLLEdBQUd6dUMsTUFBTSxDQUFDd3VDLE1BQUQsQ0FBTixLQUFtQnh1QyxNQUFNLENBQUN3dUMsTUFBRCxDQUFOLEdBQWlCLEVBQXBDLENBQVo7QUFFQSxDQUFDcnlDLE1BQU0sQ0FBQ2tSLE9BQVAsR0FBaUIsVUFBVS9VLEdBQVYsRUFBZUcsS0FBZixFQUFzQjtBQUN0QyxTQUFPZzJDLEtBQUssQ0FBQ24yQyxHQUFELENBQUwsS0FBZW0yQyxLQUFLLENBQUNuMkMsR0FBRCxDQUFMLEdBQWFHLEtBQUssS0FBSzB3QixTQUFWLEdBQXNCMXdCLEtBQXRCLEdBQThCLEVBQTFELENBQVA7QUFDRCxDQUZELEVBRUcsVUFGSCxFQUVlLEVBRmYsRUFFbUJtOUIsSUFGbkIsQ0FFd0I7QUFDdEJrVyxTQUFPLEVBQUVELElBQUksQ0FBQ0MsT0FEUTtBQUV0QjVqQixNQUFJLEVBQUV0aUIsbUJBQU8sQ0FBQyw4REFBRCxDQUFQLEdBQXdCLE1BQXhCLEdBQWlDLFFBRmpCO0FBR3RCOG9DLFdBQVMsRUFBRTtBQUhXLENBRnhCLEU7Ozs7Ozs7Ozs7OztBQ0xhOztBQUNiLElBQUlDLEtBQUssR0FBRy9vQyxtQkFBTyxDQUFDLDBEQUFELENBQW5COztBQUVBekosTUFBTSxDQUFDa1IsT0FBUCxHQUFpQixVQUFVdWhDLE1BQVYsRUFBa0JwQixHQUFsQixFQUF1QjtBQUN0QyxTQUFPLENBQUMsQ0FBQ29CLE1BQUYsSUFBWUQsS0FBSyxDQUFDLFlBQVk7QUFDbkM7QUFDQW5CLE9BQUcsR0FBR29CLE1BQU0sQ0FBQzNvQixJQUFQLENBQVksSUFBWixFQUFrQixZQUFZO0FBQUU7QUFBYSxLQUE3QyxFQUErQyxDQUEvQyxDQUFILEdBQXVEMm9CLE1BQU0sQ0FBQzNvQixJQUFQLENBQVksSUFBWixDQUExRDtBQUNELEdBSHVCLENBQXhCO0FBSUQsQ0FMRCxDOzs7Ozs7Ozs7Ozs7OztBQ0hBO0FBQ0EsSUFBSTBuQixRQUFRLEdBQUcvbkMsbUJBQU8sQ0FBQyxrRUFBRCxDQUF0Qjs7QUFDQSxJQUFJaXBDLE9BQU8sR0FBR2pwQyxtQkFBTyxDQUFDLDhEQUFELENBQXJCOztBQUVBekosTUFBTSxDQUFDa1IsT0FBUCxHQUFpQixVQUFVaStCLElBQVYsRUFBZ0J3RCxZQUFoQixFQUE4QkMsSUFBOUIsRUFBb0M7QUFDbkQsTUFBSXBCLFFBQVEsQ0FBQ21CLFlBQUQsQ0FBWixFQUE0QixNQUFNemUsU0FBUyxDQUFDLFlBQVkwZSxJQUFaLEdBQW1CLHdCQUFwQixDQUFmO0FBQzVCLFNBQU81M0MsTUFBTSxDQUFDMDNDLE9BQU8sQ0FBQ3ZELElBQUQsQ0FBUixDQUFiO0FBQ0QsQ0FIRCxDOzs7Ozs7Ozs7Ozs7OztBQ0pBLElBQUlwMUIsU0FBUyxHQUFHdFEsbUJBQU8sQ0FBQyxvRUFBRCxDQUF2Qjs7QUFDQSxJQUFJa0MsR0FBRyxHQUFHN1IsSUFBSSxDQUFDNlIsR0FBZjtBQUNBLElBQUlELEdBQUcsR0FBRzVSLElBQUksQ0FBQzRSLEdBQWY7O0FBQ0ExTCxNQUFNLENBQUNrUixPQUFQLEdBQWlCLFVBQVU3TSxLQUFWLEVBQWlCL00sTUFBakIsRUFBeUI7QUFDeEMrTSxPQUFLLEdBQUcwVixTQUFTLENBQUMxVixLQUFELENBQWpCO0FBQ0EsU0FBT0EsS0FBSyxHQUFHLENBQVIsR0FBWXNILEdBQUcsQ0FBQ3RILEtBQUssR0FBRy9NLE1BQVQsRUFBaUIsQ0FBakIsQ0FBZixHQUFxQ29VLEdBQUcsQ0FBQ3JILEtBQUQsRUFBUS9NLE1BQVIsQ0FBL0M7QUFDRCxDQUhELEM7Ozs7Ozs7Ozs7Ozs7O0FDSEE7QUFDQSxJQUFJdTdDLElBQUksR0FBRy80QyxJQUFJLENBQUMrNEMsSUFBaEI7QUFDQSxJQUFJdkIsS0FBSyxHQUFHeDNDLElBQUksQ0FBQ3czQyxLQUFqQjs7QUFDQXR4QyxNQUFNLENBQUNrUixPQUFQLEdBQWlCLFVBQVV5OEIsRUFBVixFQUFjO0FBQzdCLFNBQU8zcUMsS0FBSyxDQUFDMnFDLEVBQUUsR0FBRyxDQUFDQSxFQUFQLENBQUwsR0FBa0IsQ0FBbEIsR0FBc0IsQ0FBQ0EsRUFBRSxHQUFHLENBQUwsR0FBUzJELEtBQVQsR0FBaUJ1QixJQUFsQixFQUF3QmxGLEVBQXhCLENBQTdCO0FBQ0QsQ0FGRCxDOzs7Ozs7Ozs7Ozs7OztBQ0hBO0FBQ0EsSUFBSVcsT0FBTyxHQUFHN2tDLG1CQUFPLENBQUMsOERBQUQsQ0FBckI7O0FBQ0EsSUFBSWlwQyxPQUFPLEdBQUdqcEMsbUJBQU8sQ0FBQyw4REFBRCxDQUFyQjs7QUFDQXpKLE1BQU0sQ0FBQ2tSLE9BQVAsR0FBaUIsVUFBVXk4QixFQUFWLEVBQWM7QUFDN0IsU0FBT1csT0FBTyxDQUFDb0UsT0FBTyxDQUFDL0UsRUFBRCxDQUFSLENBQWQ7QUFDRCxDQUZELEM7Ozs7Ozs7Ozs7Ozs7O0FDSEE7QUFDQSxJQUFJNXpCLFNBQVMsR0FBR3RRLG1CQUFPLENBQUMsb0VBQUQsQ0FBdkI7O0FBQ0EsSUFBSWlDLEdBQUcsR0FBRzVSLElBQUksQ0FBQzRSLEdBQWY7O0FBQ0ExTCxNQUFNLENBQUNrUixPQUFQLEdBQWlCLFVBQVV5OEIsRUFBVixFQUFjO0FBQzdCLFNBQU9BLEVBQUUsR0FBRyxDQUFMLEdBQVNqaUMsR0FBRyxDQUFDcU8sU0FBUyxDQUFDNHpCLEVBQUQsQ0FBVixFQUFnQixnQkFBaEIsQ0FBWixHQUFnRCxDQUF2RCxDQUQ2QixDQUM2QjtBQUMzRCxDQUZELEM7Ozs7Ozs7Ozs7Ozs7O0FDSEE7QUFDQSxJQUFJK0UsT0FBTyxHQUFHanBDLG1CQUFPLENBQUMsOERBQUQsQ0FBckI7O0FBQ0F6SixNQUFNLENBQUNrUixPQUFQLEdBQWlCLFVBQVV5OEIsRUFBVixFQUFjO0FBQzdCLFNBQU9weUMsTUFBTSxDQUFDbTNDLE9BQU8sQ0FBQy9FLEVBQUQsQ0FBUixDQUFiO0FBQ0QsQ0FGRCxDOzs7Ozs7Ozs7Ozs7OztBQ0ZBO0FBQ0EsSUFBSXhyQyxRQUFRLEdBQUdzSCxtQkFBTyxDQUFDLGtFQUFELENBQXRCLEMsQ0FDQTtBQUNBOzs7QUFDQXpKLE1BQU0sQ0FBQ2tSLE9BQVAsR0FBaUIsVUFBVXk4QixFQUFWLEVBQWNyZCxDQUFkLEVBQWlCO0FBQ2hDLE1BQUksQ0FBQ251QixRQUFRLENBQUN3ckMsRUFBRCxDQUFiLEVBQW1CLE9BQU9BLEVBQVA7QUFDbkIsTUFBSWx5QyxFQUFKLEVBQVE0M0IsR0FBUjtBQUNBLE1BQUkvQyxDQUFDLElBQUksUUFBUTcwQixFQUFFLEdBQUdreUMsRUFBRSxDQUFDcDFDLFFBQWhCLEtBQTZCLFVBQWxDLElBQWdELENBQUM0SixRQUFRLENBQUNreEIsR0FBRyxHQUFHNTNCLEVBQUUsQ0FBQ3F1QixJQUFILENBQVE2akIsRUFBUixDQUFQLENBQTdELEVBQWtGLE9BQU90YSxHQUFQO0FBQ2xGLE1BQUksUUFBUTUzQixFQUFFLEdBQUdreUMsRUFBRSxDQUFDbUYsT0FBaEIsS0FBNEIsVUFBNUIsSUFBMEMsQ0FBQzN3QyxRQUFRLENBQUNreEIsR0FBRyxHQUFHNTNCLEVBQUUsQ0FBQ3F1QixJQUFILENBQVE2akIsRUFBUixDQUFQLENBQXZELEVBQTRFLE9BQU90YSxHQUFQO0FBQzVFLE1BQUksQ0FBQy9DLENBQUQsSUFBTSxRQUFRNzBCLEVBQUUsR0FBR2t5QyxFQUFFLENBQUNwMUMsUUFBaEIsS0FBNkIsVUFBbkMsSUFBaUQsQ0FBQzRKLFFBQVEsQ0FBQ2t4QixHQUFHLEdBQUc1M0IsRUFBRSxDQUFDcXVCLElBQUgsQ0FBUTZqQixFQUFSLENBQVAsQ0FBOUQsRUFBbUYsT0FBT3RhLEdBQVA7QUFDbkYsUUFBTWEsU0FBUyxDQUFDLHlDQUFELENBQWY7QUFDRCxDQVBELEM7Ozs7Ozs7Ozs7Ozs7O0FDSkEsSUFBSTN6QixFQUFFLEdBQUcsQ0FBVDtBQUNBLElBQUl3eUMsRUFBRSxHQUFHajVDLElBQUksQ0FBQ2s1QyxNQUFMLEVBQVQ7O0FBQ0FoekMsTUFBTSxDQUFDa1IsT0FBUCxHQUFpQixVQUFVL1UsR0FBVixFQUFlO0FBQzlCLFNBQU8sVUFBVXVrQyxNQUFWLENBQWlCdmtDLEdBQUcsS0FBSzZ3QixTQUFSLEdBQW9CLEVBQXBCLEdBQXlCN3dCLEdBQTFDLEVBQStDLElBQS9DLEVBQXFELENBQUMsRUFBRW9FLEVBQUYsR0FBT3d5QyxFQUFSLEVBQVl4NkMsUUFBWixDQUFxQixFQUFyQixDQUFyRCxDQUFQO0FBQ0QsQ0FGRCxDOzs7Ozs7Ozs7Ozs7OztBQ0ZBLElBQUkrNUMsS0FBSyxHQUFHN29DLG1CQUFPLENBQUMsNERBQUQsQ0FBUCxDQUFxQixLQUFyQixDQUFaOztBQUNBLElBQUlrRyxHQUFHLEdBQUdsRyxtQkFBTyxDQUFDLHNEQUFELENBQWpCOztBQUNBLElBQUk5SixPQUFNLEdBQUc4SixtQkFBTyxDQUFDLDREQUFELENBQVAsQ0FBcUI5SixNQUFsQzs7QUFDQSxJQUFJc3pDLFVBQVUsR0FBRyxPQUFPdHpDLE9BQVAsSUFBaUIsVUFBbEM7O0FBRUEsSUFBSXV6QyxRQUFRLEdBQUdsekMsTUFBTSxDQUFDa1IsT0FBUCxHQUFpQixVQUFVMVosSUFBVixFQUFnQjtBQUM5QyxTQUFPODZDLEtBQUssQ0FBQzk2QyxJQUFELENBQUwsS0FBZ0I4NkMsS0FBSyxDQUFDOTZDLElBQUQsQ0FBTCxHQUNyQnk3QyxVQUFVLElBQUl0ekMsT0FBTSxDQUFDbkksSUFBRCxDQUFwQixJQUE4QixDQUFDeTdDLFVBQVUsR0FBR3R6QyxPQUFILEdBQVlnUSxHQUF2QixFQUE0QixZQUFZblksSUFBeEMsQ0FEekIsQ0FBUDtBQUVELENBSEQ7O0FBS0EwN0MsUUFBUSxDQUFDWixLQUFULEdBQWlCQSxLQUFqQixDOzs7Ozs7Ozs7Ozs7QUNWYTs7QUFDYixJQUFJcEMsT0FBTyxHQUFHem1DLG1CQUFPLENBQUMsNERBQUQsQ0FBckI7O0FBQ0EsSUFBSTBwQyxRQUFRLEdBQUcxcEMsbUJBQU8sQ0FBQywwRUFBRCxDQUFQLENBQTRCLENBQTVCLENBQWY7O0FBQ0EsSUFBSTJwQyxNQUFNLEdBQUczcEMsbUJBQU8sQ0FBQywwRUFBRCxDQUFQLENBQTRCLEdBQUc2cEIsT0FBL0IsRUFBd0MsSUFBeEMsQ0FBYjs7QUFFQTRjLE9BQU8sQ0FBQ0EsT0FBTyxDQUFDL25CLENBQVIsR0FBWStuQixPQUFPLENBQUNwZ0IsQ0FBUixHQUFZLENBQUNzakIsTUFBMUIsRUFBa0MsT0FBbEMsRUFBMkM7QUFDaEQ7QUFDQTlmLFNBQU8sRUFBRSxTQUFTQSxPQUFULENBQWlCNGI7QUFBVztBQUE1QixJQUE2QztBQUNwRCxXQUFPaUUsUUFBUSxDQUFDLElBQUQsRUFBT2pFLFVBQVAsRUFBbUJ0K0IsU0FBUyxDQUFDLENBQUQsQ0FBNUIsQ0FBZjtBQUNEO0FBSitDLENBQTNDLENBQVAsQzs7Ozs7Ozs7Ozs7Ozs7QUNMQTtBQUNBLElBQUlzL0IsT0FBTyxHQUFHem1DLG1CQUFPLENBQUMsNERBQUQsQ0FBckI7O0FBRUF5bUMsT0FBTyxDQUFDQSxPQUFPLENBQUM1ZixDQUFULEVBQVksUUFBWixFQUFzQjtBQUFFbWQsV0FBUyxFQUFFaGtDLG1CQUFPLENBQUMsb0VBQUQ7QUFBcEIsQ0FBdEIsQ0FBUCxDOzs7Ozs7Ozs7Ozs7QUNIQTtBQUNhOztBQUNiLElBQUl5bUMsT0FBTyxHQUFHem1DLG1CQUFPLENBQUMsNERBQUQsQ0FBckI7O0FBQ0EsSUFBSXNrQyxRQUFRLEdBQUd0a0MsbUJBQU8sQ0FBQyxrRUFBRCxDQUF0Qjs7QUFDQSxJQUFJWixPQUFPLEdBQUdZLG1CQUFPLENBQUMsNEVBQUQsQ0FBckI7O0FBQ0EsSUFBSTRwQyxXQUFXLEdBQUcsWUFBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsR0FBR0QsV0FBSCxDQUFsQjtBQUVBbkQsT0FBTyxDQUFDQSxPQUFPLENBQUMvbkIsQ0FBUixHQUFZK25CLE9BQU8sQ0FBQ3BnQixDQUFSLEdBQVlybUIsbUJBQU8sQ0FBQyw4RUFBRCxDQUFQLENBQThCNHBDLFdBQTlCLENBQXpCLEVBQXFFLFFBQXJFLEVBQStFO0FBQ3BGM0YsWUFBVSxFQUFFLFNBQVNBLFVBQVQsQ0FBb0JpRjtBQUFhO0FBQWpDLElBQXVEO0FBQ2pFLFFBQUl4RCxJQUFJLEdBQUd0bUMsT0FBTyxDQUFDLElBQUQsRUFBTzhwQyxZQUFQLEVBQXFCVSxXQUFyQixDQUFsQjtBQUNBLFFBQUlodkMsS0FBSyxHQUFHMHBDLFFBQVEsQ0FBQ2owQyxJQUFJLENBQUM0UixHQUFMLENBQVNrRixTQUFTLENBQUN0WixNQUFWLEdBQW1CLENBQW5CLEdBQXVCc1osU0FBUyxDQUFDLENBQUQsQ0FBaEMsR0FBc0NvYyxTQUEvQyxFQUEwRG1pQixJQUFJLENBQUM3M0MsTUFBL0QsQ0FBRCxDQUFwQjtBQUNBLFFBQUlpOEMsTUFBTSxHQUFHdjRDLE1BQU0sQ0FBQzIzQyxZQUFELENBQW5CO0FBQ0EsV0FBT1csV0FBVyxHQUNkQSxXQUFXLENBQUN4cEIsSUFBWixDQUFpQnFsQixJQUFqQixFQUF1Qm9FLE1BQXZCLEVBQStCbHZDLEtBQS9CLENBRGMsR0FFZDhxQyxJQUFJLENBQUM1aEIsS0FBTCxDQUFXbHBCLEtBQVgsRUFBa0JBLEtBQUssR0FBR2t2QyxNQUFNLENBQUNqOEMsTUFBakMsTUFBNkNpOEMsTUFGakQ7QUFHRDtBQVJtRixDQUEvRSxDQUFQLEM7Ozs7Ozs7Ozs7OztDQ1BBOztBQUNBLElBQUlyRCxPQUFPLEdBQUd6bUMsbUJBQU8sQ0FBQyw0REFBRCxDQUFyQjs7QUFDQSxJQUFJK3BDLFNBQVMsR0FBRy9wQyxtQkFBTyxDQUFDLDRFQUFELENBQVAsQ0FBNkIsSUFBN0IsQ0FBaEI7O0FBRUF5bUMsT0FBTyxDQUFDQSxPQUFPLENBQUMvbkIsQ0FBVCxFQUFZLE9BQVosRUFBcUI7QUFDMUJxbEIsVUFBUSxFQUFFLFNBQVNBLFFBQVQsQ0FBa0JwM0I7QUFBRztBQUFyQixJQUE0QztBQUNwRCxXQUFPbzlCLFNBQVMsQ0FBQyxJQUFELEVBQU9wOUIsRUFBUCxFQUFXeEYsU0FBUyxDQUFDdFosTUFBVixHQUFtQixDQUFuQixHQUF1QnNaLFNBQVMsQ0FBQyxDQUFELENBQWhDLEdBQXNDb2MsU0FBakQsQ0FBaEI7QUFDRDtBQUh5QixDQUFyQixDQUFQOztBQU1BdmpCLG1CQUFPLENBQUMsb0ZBQUQsQ0FBUCxDQUFpQyxVQUFqQyxFOzs7Ozs7Ozs7Ozs7QUNYYTtBQUNiOzs7Ozs7OztBQUtBLFNBQVNncUMsYUFBVCxDQUF1QkMsVUFBdkIsRUFBbUM7QUFDakM7QUFDQTtBQUNBLE1BQUksT0FBT0EsVUFBUCxLQUFzQixRQUExQixFQUFvQztBQUNsQyxRQUFJO0FBQ0YsYUFBT0QsYUFBYSxDQUFDdnlDLElBQUksQ0FBQytpQyxLQUFMLENBQVd5UCxVQUFYLENBQUQsQ0FBcEI7QUFDRCxLQUZELENBRUUsT0FBT3pvQixHQUFQLEVBQVk7QUFDWixhQUFPeW9CLFVBQVA7QUFDRDtBQUNGLEdBTkQsTUFNTyxJQUFJcDZDLEtBQUssQ0FBQ3NMLE9BQU4sQ0FBYzh1QyxVQUFkLENBQUosRUFBK0I7QUFDcEM7QUFDQSxXQUFPQSxVQUFVLENBQUN4aEIsR0FBWCxDQUFlLFVBQUFtQixHQUFHO0FBQUEsYUFBSW9nQixhQUFhLENBQUNwZ0IsR0FBRCxDQUFqQjtBQUFBLEtBQWxCLENBQVA7QUFDRCxHQUhNLE1BR0EsSUFBSSxRQUFPcWdCLFVBQVAsTUFBc0IsUUFBdEIsSUFBa0NBLFVBQVUsS0FBSyxJQUFyRCxFQUEyRDtBQUNoRTtBQUNBO0FBQ0EsV0FBT240QyxNQUFNLENBQUNTLElBQVAsQ0FBWTAzQyxVQUFaLEVBQXdCdk8sTUFBeEIsQ0FBK0IsVUFBQ3RqQyxHQUFELEVBQU0xRixHQUFOLEVBQWM7QUFDbEQwRixTQUFHLENBQUMxRixHQUFELENBQUgsR0FBV3MzQyxhQUFhLENBQUNDLFVBQVUsQ0FBQ3YzQyxHQUFELENBQVgsQ0FBeEI7QUFDQSxhQUFPMEYsR0FBUDtBQUNELEtBSE0sRUFHSixFQUhJLENBQVA7QUFJRCxHQVBNLE1BT0E7QUFDTDtBQUNBLFdBQU82eEMsVUFBUDtBQUNEO0FBQ0Y7O0FBRUQxekMsTUFBTSxDQUFDa1IsT0FBUCxHQUFpQjtBQUFFdWlDLGVBQWEsRUFBYkE7QUFBRixDQUFqQixDOzs7Ozs7Ozs7OztBQy9CQTtBQUNBLDBDQUEwQyxtQkFBTyxDQUFDLDZJQUEwRyxFOzs7Ozs7Ozs7Ozs7QUNENUo7QUFDQSx1REFBdUQsbUJBQU8sQ0FBQyx1TEFBd0gsRTs7Ozs7Ozs7Ozs7O0FDRHZMO0FBQ0EsbURBQW1ELG1CQUFPLENBQUMsMktBQW9ILEU7Ozs7Ozs7Ozs7OztBQ0QvSyxxRkFBdUMsbUJBQU8sQ0FBQyxzSkFBMEcsRTs7Ozs7Ozs7Ozs7O0FDQXpKLCtFQUFpQyxtQkFBTyxDQUFDLCtIQUFvRyxFOzs7Ozs7Ozs7Ozs7O0FDQzdJLGNBQWMsbUJBQU8sQ0FBQyw2TUFBdUY7O0FBRTdHLDRDQUE0QyxRQUFTOztBQUVyRDtBQUNBOzs7O0FBSUEsZUFBZTs7QUFFZjtBQUNBLGtDQUFrQzs7QUFFbEMsYUFBYSxtQkFBTyxDQUFDLHlGQUFzQzs7QUFFM0Q7O0FBRUEsR0FBRyxLQUFVLEVBQUUsRTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25CZjs7OztBQUVBO0FBQ0EsSUFBSTl6QyxPQUFNLEdBQUd5QyxjQUFLekMsTUFBbEI7ZUFFZUEsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNMZjs7Ozs7Ozs7OztBQVVBLFNBQVN3RSxLQUFULENBQWViLElBQWYsRUFBcUJxd0MsT0FBckIsRUFBOEIxMkMsSUFBOUIsRUFBb0M7QUFDbEMsVUFBUUEsSUFBSSxDQUFDM0YsTUFBYjtBQUNFLFNBQUssQ0FBTDtBQUFRLGFBQU9nTSxJQUFJLENBQUN3bUIsSUFBTCxDQUFVNnBCLE9BQVYsQ0FBUDs7QUFDUixTQUFLLENBQUw7QUFBUSxhQUFPcndDLElBQUksQ0FBQ3dtQixJQUFMLENBQVU2cEIsT0FBVixFQUFtQjEyQyxJQUFJLENBQUMsQ0FBRCxDQUF2QixDQUFQOztBQUNSLFNBQUssQ0FBTDtBQUFRLGFBQU9xRyxJQUFJLENBQUN3bUIsSUFBTCxDQUFVNnBCLE9BQVYsRUFBbUIxMkMsSUFBSSxDQUFDLENBQUQsQ0FBdkIsRUFBNEJBLElBQUksQ0FBQyxDQUFELENBQWhDLENBQVA7O0FBQ1IsU0FBSyxDQUFMO0FBQVEsYUFBT3FHLElBQUksQ0FBQ3dtQixJQUFMLENBQVU2cEIsT0FBVixFQUFtQjEyQyxJQUFJLENBQUMsQ0FBRCxDQUF2QixFQUE0QkEsSUFBSSxDQUFDLENBQUQsQ0FBaEMsRUFBcUNBLElBQUksQ0FBQyxDQUFELENBQXpDLENBQVA7QUFKVjs7QUFNQSxTQUFPcUcsSUFBSSxDQUFDYSxLQUFMLENBQVd3dkMsT0FBWCxFQUFvQjEyQyxJQUFwQixDQUFQO0FBQ0Q7O2VBRWNrSCxLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BCZjs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUVBO0FBQ0EsSUFBSU0sV0FBVyxHQUFHbEosTUFBTSxDQUFDc3VCLFNBQXpCO0FBRUE7O0FBQ0EsSUFBSW5sQixjQUFjLEdBQUdELFdBQVcsQ0FBQ0MsY0FBakM7QUFFQTs7Ozs7Ozs7O0FBUUEsU0FBU2EsYUFBVCxDQUF1QmpKLEtBQXZCLEVBQThCZ0osU0FBOUIsRUFBeUM7QUFDdkMsTUFBSVgsS0FBSyxHQUFHLHNCQUFRckksS0FBUixDQUFaO0FBQUEsTUFDSXVJLEtBQUssR0FBRyxDQUFDRixLQUFELElBQVUsMEJBQVlySSxLQUFaLENBRHRCO0FBQUEsTUFFSXlJLE1BQU0sR0FBRyxDQUFDSixLQUFELElBQVUsQ0FBQ0UsS0FBWCxJQUFvQix1QkFBU3ZJLEtBQVQsQ0FGakM7QUFBQSxNQUdJMkksTUFBTSxHQUFHLENBQUNOLEtBQUQsSUFBVSxDQUFDRSxLQUFYLElBQW9CLENBQUNFLE1BQXJCLElBQStCLDJCQUFhekksS0FBYixDQUg1QztBQUFBLE1BSUk2SSxXQUFXLEdBQUdSLEtBQUssSUFBSUUsS0FBVCxJQUFrQkUsTUFBbEIsSUFBNEJFLE1BSjlDO0FBQUEsTUFLSUcsTUFBTSxHQUFHRCxXQUFXLEdBQUcsd0JBQVU3SSxLQUFLLENBQUNoRixNQUFoQixFQUF3QjBELE1BQXhCLENBQUgsR0FBcUMsRUFMN0Q7QUFBQSxNQU1JMUQsTUFBTSxHQUFHOE4sTUFBTSxDQUFDOU4sTUFOcEI7O0FBUUEsT0FBSyxJQUFJNkUsR0FBVCxJQUFnQkcsS0FBaEIsRUFBdUI7QUFDckIsUUFBSSxDQUFDZ0osU0FBUyxJQUFJWixjQUFjLENBQUNvbEIsSUFBZixDQUFvQnh0QixLQUFwQixFQUEyQkgsR0FBM0IsQ0FBZCxLQUNBLEVBQUVnSixXQUFXLE1BQ1Y7QUFDQWhKLE9BQUcsSUFBSSxRQUFQLElBQ0E7QUFDQzRJLFVBQU0sS0FBSzVJLEdBQUcsSUFBSSxRQUFQLElBQW1CQSxHQUFHLElBQUksUUFBL0IsQ0FGUCxJQUdBO0FBQ0M4SSxVQUFNLEtBQUs5SSxHQUFHLElBQUksUUFBUCxJQUFtQkEsR0FBRyxJQUFJLFlBQTFCLElBQTBDQSxHQUFHLElBQUksWUFBdEQsQ0FKUCxJQUtBO0FBQ0EsMEJBQVFBLEdBQVIsRUFBYTdFLE1BQWIsQ0FSVSxDQUFiLENBREosRUFVUTtBQUNOOE4sWUFBTSxDQUFDcTBCLElBQVAsQ0FBWXQ5QixHQUFaO0FBQ0Q7QUFDRjs7QUFDRCxTQUFPaUosTUFBUDtBQUNEOztlQUVjRyxhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2hEZjs7Ozs7Ozs7O0FBU0EsU0FBU2EsUUFBVCxDQUFrQkYsS0FBbEIsRUFBeUJDLFFBQXpCLEVBQW1DO0FBQ2pDLE1BQUk5QixLQUFLLEdBQUcsQ0FBQyxDQUFiO0FBQUEsTUFDSS9NLE1BQU0sR0FBRzRPLEtBQUssSUFBSSxJQUFULEdBQWdCLENBQWhCLEdBQW9CQSxLQUFLLENBQUM1TyxNQUR2QztBQUFBLE1BRUk4TixNQUFNLEdBQUc5TCxLQUFLLENBQUNoQyxNQUFELENBRmxCOztBQUlBLFNBQU8sRUFBRStNLEtBQUYsR0FBVS9NLE1BQWpCLEVBQXlCO0FBQ3ZCOE4sVUFBTSxDQUFDZixLQUFELENBQU4sR0FBZ0I4QixRQUFRLENBQUNELEtBQUssQ0FBQzdCLEtBQUQsQ0FBTixFQUFlQSxLQUFmLEVBQXNCNkIsS0FBdEIsQ0FBeEI7QUFDRDs7QUFDRCxTQUFPZCxNQUFQO0FBQ0Q7O2VBRWNnQixROzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BCZjs7QUFDQTs7OztBQUVBO0FBQ0EsSUFBSTNCLFdBQVcsR0FBR2xKLE1BQU0sQ0FBQ3N1QixTQUF6QjtBQUVBOztBQUNBLElBQUlubEIsY0FBYyxHQUFHRCxXQUFXLENBQUNDLGNBQWpDO0FBRUE7Ozs7Ozs7Ozs7O0FBVUEsU0FBU2tLLFdBQVQsQ0FBcUJ4TCxNQUFyQixFQUE2QmpILEdBQTdCLEVBQWtDRyxLQUFsQyxFQUF5QztBQUN2QyxNQUFJdVMsUUFBUSxHQUFHekwsTUFBTSxDQUFDakgsR0FBRCxDQUFyQjs7QUFDQSxNQUFJLEVBQUV1SSxjQUFjLENBQUNvbEIsSUFBZixDQUFvQjFtQixNQUFwQixFQUE0QmpILEdBQTVCLEtBQW9DLGlCQUFHMFMsUUFBSCxFQUFhdlMsS0FBYixDQUF0QyxLQUNDQSxLQUFLLEtBQUswd0IsU0FBVixJQUF1QixFQUFFN3dCLEdBQUcsSUFBSWlILE1BQVQsQ0FENUIsRUFDK0M7QUFDN0Msa0NBQWdCQSxNQUFoQixFQUF3QmpILEdBQXhCLEVBQTZCRyxLQUE3QjtBQUNEO0FBQ0Y7O2VBRWNzUyxXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzNCZjs7OztBQUVBOzs7Ozs7Ozs7QUFTQSxTQUFTdkwsZUFBVCxDQUF5QkQsTUFBekIsRUFBaUNqSCxHQUFqQyxFQUFzQ0csS0FBdEMsRUFBNkM7QUFDM0MsTUFBSUgsR0FBRyxJQUFJLFdBQVAsSUFBc0JiLHVCQUExQixFQUEwQztBQUN4QyxpQ0FBZThILE1BQWYsRUFBdUJqSCxHQUF2QixFQUE0QjtBQUMxQixzQkFBZ0IsSUFEVTtBQUUxQixvQkFBYyxJQUZZO0FBRzFCLGVBQVNHLEtBSGlCO0FBSTFCLGtCQUFZO0FBSmMsS0FBNUI7QUFNRCxHQVBELE1BT087QUFDTDhHLFVBQU0sQ0FBQ2pILEdBQUQsQ0FBTixHQUFjRyxLQUFkO0FBQ0Q7QUFDRjs7ZUFFYytHLGU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDeEJmOztBQUNBOztBQUNBOzs7O0FBRUE7QUFDQSxJQUFJN0QsT0FBTyxHQUFHLGVBQWQ7QUFBQSxJQUNJQyxZQUFZLEdBQUcsb0JBRG5CO0FBR0E7O0FBQ0EsSUFBSUMsY0FBYyxHQUFHQyxtQkFBU0EsaUJBQU9pMEMsV0FBaEIsR0FBOEI1bUIsU0FBbkQ7QUFFQTs7Ozs7Ozs7QUFPQSxTQUFTbHRCLFVBQVQsQ0FBb0J4RCxLQUFwQixFQUEyQjtBQUN6QixNQUFJQSxLQUFLLElBQUksSUFBYixFQUFtQjtBQUNqQixXQUFPQSxLQUFLLEtBQUswd0IsU0FBVixHQUFzQnZ0QixZQUF0QixHQUFxQ0QsT0FBNUM7QUFDRDs7QUFDRCxTQUFRRSxjQUFjLElBQUlBLGNBQWMsSUFBSW5FLE1BQU0sQ0FBQ2UsS0FBRCxDQUEzQyxHQUNILHdCQUFVQSxLQUFWLENBREcsR0FFSCw2QkFBZUEsS0FBZixDQUZKO0FBR0Q7O2VBRWN3RCxVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzNCZjs7QUFDQTs7OztBQUVBO0FBQ0EsSUFBSWtSLE9BQU8sR0FBRyxvQkFBZDtBQUVBOzs7Ozs7OztBQU9BLFNBQVNELGVBQVQsQ0FBeUJ6VSxLQUF6QixFQUFnQztBQUM5QixTQUFPLDJCQUFhQSxLQUFiLEtBQXVCLHlCQUFXQSxLQUFYLEtBQXFCMFUsT0FBbkQ7QUFDRDs7ZUFFY0QsZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqQmY7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFFQTs7OztBQUlBLElBQUkvQixZQUFZLEdBQUcscUJBQW5CO0FBRUE7O0FBQ0EsSUFBSUMsWUFBWSxHQUFHLDZCQUFuQjtBQUVBOztBQUNBLElBQUlDLFNBQVMsR0FBRzFNLFFBQVEsQ0FBQ3FuQixTQUF6QjtBQUFBLElBQ0lwbEIsV0FBVyxHQUFHbEosTUFBTSxDQUFDc3VCLFNBRHpCO0FBR0E7O0FBQ0EsSUFBSTFhLFlBQVksR0FBR0QsU0FBUyxDQUFDM1csUUFBN0I7QUFFQTs7QUFDQSxJQUFJbU0sY0FBYyxHQUFHRCxXQUFXLENBQUNDLGNBQWpDO0FBRUE7O0FBQ0EsSUFBSTBLLFVBQVUsR0FBR3hCLE1BQU0sQ0FBQyxNQUN0QnVCLFlBQVksQ0FBQzJhLElBQWIsQ0FBa0JwbEIsY0FBbEIsRUFBa0N5bUMsT0FBbEMsQ0FBMENuOEIsWUFBMUMsRUFBd0QsTUFBeEQsRUFDQ204QixPQURELENBQ1Msd0RBRFQsRUFDbUUsT0FEbkUsQ0FEc0IsR0FFd0QsR0FGekQsQ0FBdkI7QUFLQTs7Ozs7Ozs7O0FBUUEsU0FBU3A4QixZQUFULENBQXNCelMsS0FBdEIsRUFBNkI7QUFDM0IsTUFBSSxDQUFDLHVCQUFTQSxLQUFULENBQUQsSUFBb0IsdUJBQVNBLEtBQVQsQ0FBeEIsRUFBeUM7QUFDdkMsV0FBTyxLQUFQO0FBQ0Q7O0FBQ0QsTUFBSWlRLE9BQU8sR0FBRyx5QkFBV2pRLEtBQVgsSUFBb0I4UyxVQUFwQixHQUFpQ0gsWUFBL0M7QUFDQSxTQUFPMUMsT0FBTyxDQUFDblIsSUFBUixDQUFhLHVCQUFTa0IsS0FBVCxDQUFiLENBQVA7QUFDRDs7ZUFFY3lTLFk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOUNmOztBQUNBOztBQUNBOzs7O0FBRUE7QUFDQSxJQUFJaUMsT0FBTyxHQUFHLG9CQUFkO0FBQUEsSUFDSVksUUFBUSxHQUFHLGdCQURmO0FBQUEsSUFFSUMsT0FBTyxHQUFHLGtCQUZkO0FBQUEsSUFHSUMsT0FBTyxHQUFHLGVBSGQ7QUFBQSxJQUlJak0sUUFBUSxHQUFHLGdCQUpmO0FBQUEsSUFLSXBDLE9BQU8sR0FBRyxtQkFMZDtBQUFBLElBTUlzTyxNQUFNLEdBQUcsY0FOYjtBQUFBLElBT0lDLFNBQVMsR0FBRyxpQkFQaEI7QUFBQSxJQVFJQyxTQUFTLEdBQUcsaUJBUmhCO0FBQUEsSUFTSUMsU0FBUyxHQUFHLGlCQVRoQjtBQUFBLElBVUlDLE1BQU0sR0FBRyxjQVZiO0FBQUEsSUFXSUMsU0FBUyxHQUFHLGlCQVhoQjtBQUFBLElBWUlDLFVBQVUsR0FBRyxrQkFaakI7QUFjQSxJQUFJQyxjQUFjLEdBQUcsc0JBQXJCO0FBQUEsSUFDSUMsV0FBVyxHQUFHLG1CQURsQjtBQUFBLElBRUlDLFVBQVUsR0FBRyx1QkFGakI7QUFBQSxJQUdJQyxVQUFVLEdBQUcsdUJBSGpCO0FBQUEsSUFJSUMsT0FBTyxHQUFHLG9CQUpkO0FBQUEsSUFLSUMsUUFBUSxHQUFHLHFCQUxmO0FBQUEsSUFNSUMsUUFBUSxHQUFHLHFCQU5mO0FBQUEsSUFPSUMsUUFBUSxHQUFHLHFCQVBmO0FBQUEsSUFRSUMsZUFBZSxHQUFHLDRCQVJ0QjtBQUFBLElBU0lDLFNBQVMsR0FBRyxzQkFUaEI7QUFBQSxJQVVJQyxTQUFTLEdBQUcsc0JBVmhCO0FBWUE7O0FBQ0EsSUFBSUMsY0FBYyxHQUFHLEVBQXJCO0FBQ0FBLGNBQWMsQ0FBQ1QsVUFBRCxDQUFkLEdBQTZCUyxjQUFjLENBQUNSLFVBQUQsQ0FBZCxHQUM3QlEsY0FBYyxDQUFDUCxPQUFELENBQWQsR0FBMEJPLGNBQWMsQ0FBQ04sUUFBRCxDQUFkLEdBQzFCTSxjQUFjLENBQUNMLFFBQUQsQ0FBZCxHQUEyQkssY0FBYyxDQUFDSixRQUFELENBQWQsR0FDM0JJLGNBQWMsQ0FBQ0gsZUFBRCxDQUFkLEdBQWtDRyxjQUFjLENBQUNGLFNBQUQsQ0FBZCxHQUNsQ0UsY0FBYyxDQUFDRCxTQUFELENBQWQsR0FBNEIsSUFKNUI7QUFLQUMsY0FBYyxDQUFDakMsT0FBRCxDQUFkLEdBQTBCaUMsY0FBYyxDQUFDckIsUUFBRCxDQUFkLEdBQzFCcUIsY0FBYyxDQUFDWCxjQUFELENBQWQsR0FBaUNXLGNBQWMsQ0FBQ3BCLE9BQUQsQ0FBZCxHQUNqQ29CLGNBQWMsQ0FBQ1YsV0FBRCxDQUFkLEdBQThCVSxjQUFjLENBQUNuQixPQUFELENBQWQsR0FDOUJtQixjQUFjLENBQUNwTixRQUFELENBQWQsR0FBMkJvTixjQUFjLENBQUN4UCxPQUFELENBQWQsR0FDM0J3UCxjQUFjLENBQUNsQixNQUFELENBQWQsR0FBeUJrQixjQUFjLENBQUNqQixTQUFELENBQWQsR0FDekJpQixjQUFjLENBQUNoQixTQUFELENBQWQsR0FBNEJnQixjQUFjLENBQUNmLFNBQUQsQ0FBZCxHQUM1QmUsY0FBYyxDQUFDZCxNQUFELENBQWQsR0FBeUJjLGNBQWMsQ0FBQ2IsU0FBRCxDQUFkLEdBQ3pCYSxjQUFjLENBQUNaLFVBQUQsQ0FBZCxHQUE2QixLQVA3QjtBQVNBOzs7Ozs7OztBQU9BLFNBQVNWLGdCQUFULENBQTBCclYsS0FBMUIsRUFBaUM7QUFDL0IsU0FBTywyQkFBYUEsS0FBYixLQUNMLHVCQUFTQSxLQUFLLENBQUNoRixNQUFmLENBREssSUFDcUIsQ0FBQyxDQUFDMmIsY0FBYyxDQUFDLHlCQUFXM1csS0FBWCxDQUFELENBRDVDO0FBRUQ7O2VBRWNxVixnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMzRGY7O0FBQ0E7Ozs7QUFFQTtBQUNBLElBQUlsTixXQUFXLEdBQUdsSixNQUFNLENBQUNzdUIsU0FBekI7QUFFQTs7QUFDQSxJQUFJbmxCLGNBQWMsR0FBR0QsV0FBVyxDQUFDQyxjQUFqQztBQUVBOzs7Ozs7OztBQU9BLFNBQVMrTyxRQUFULENBQWtCclEsTUFBbEIsRUFBMEI7QUFDeEIsTUFBSSxDQUFDLDBCQUFZQSxNQUFaLENBQUwsRUFBMEI7QUFDeEIsV0FBTyx5QkFBV0EsTUFBWCxDQUFQO0FBQ0Q7O0FBQ0QsTUFBSWdDLE1BQU0sR0FBRyxFQUFiOztBQUNBLE9BQUssSUFBSWpKLEdBQVQsSUFBZ0JaLE1BQU0sQ0FBQzZILE1BQUQsQ0FBdEIsRUFBZ0M7QUFDOUIsUUFBSXNCLGNBQWMsQ0FBQ29sQixJQUFmLENBQW9CMW1CLE1BQXBCLEVBQTRCakgsR0FBNUIsS0FBb0NBLEdBQUcsSUFBSSxhQUEvQyxFQUE4RDtBQUM1RGlKLFlBQU0sQ0FBQ3EwQixJQUFQLENBQVl0OUIsR0FBWjtBQUNEO0FBQ0Y7O0FBQ0QsU0FBT2lKLE1BQVA7QUFDRDs7ZUFFY3FPLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDN0JmOztBQUNBOztBQUNBOzs7O0FBRUE7QUFDQSxJQUFJaFAsV0FBVyxHQUFHbEosTUFBTSxDQUFDc3VCLFNBQXpCO0FBRUE7O0FBQ0EsSUFBSW5sQixjQUFjLEdBQUdELFdBQVcsQ0FBQ0MsY0FBakM7QUFFQTs7Ozs7Ozs7QUFPQSxTQUFTbU0sVUFBVCxDQUFvQnpOLE1BQXBCLEVBQTRCO0FBQzFCLE1BQUksQ0FBQyx1QkFBU0EsTUFBVCxDQUFMLEVBQXVCO0FBQ3JCLFdBQU8sMkJBQWFBLE1BQWIsQ0FBUDtBQUNEOztBQUNELE1BQUlpUSxPQUFPLEdBQUcsMEJBQVlqUSxNQUFaLENBQWQ7QUFBQSxNQUNJZ0MsTUFBTSxHQUFHLEVBRGI7O0FBR0EsT0FBSyxJQUFJakosR0FBVCxJQUFnQmlILE1BQWhCLEVBQXdCO0FBQ3RCLFFBQUksRUFBRWpILEdBQUcsSUFBSSxhQUFQLEtBQXlCa1gsT0FBTyxJQUFJLENBQUMzTyxjQUFjLENBQUNvbEIsSUFBZixDQUFvQjFtQixNQUFwQixFQUE0QmpILEdBQTVCLENBQXJDLENBQUYsQ0FBSixFQUErRTtBQUM3RWlKLFlBQU0sQ0FBQ3EwQixJQUFQLENBQVl0OUIsR0FBWjtBQUNEO0FBQ0Y7O0FBQ0QsU0FBT2lKLE1BQVA7QUFDRDs7ZUFFY3lMLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaENmOzs7Ozs7O0FBT0EsU0FBU3FELGNBQVQsQ0FBd0I5USxNQUF4QixFQUFnQztBQUM5QixTQUFPLFVBQVNqSCxHQUFULEVBQWM7QUFDbkIsV0FBT2lILE1BQU0sSUFBSSxJQUFWLEdBQWlCNHBCLFNBQWpCLEdBQTZCNXBCLE1BQU0sQ0FBQ2pILEdBQUQsQ0FBMUM7QUFDRCxHQUZEO0FBR0Q7O2VBRWMrWCxjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2JmOztBQUNBOztBQUNBOzs7O0FBRUE7Ozs7Ozs7O0FBUUEsU0FBU2hRLFFBQVQsQ0FBa0JaLElBQWxCLEVBQXdCME0sS0FBeEIsRUFBK0I7QUFDN0IsU0FBTywwQkFBWSx1QkFBUzFNLElBQVQsRUFBZTBNLEtBQWYsRUFBc0IvTCxpQkFBdEIsQ0FBWixFQUE2Q1gsSUFBSSxHQUFHLEVBQXBELENBQVA7QUFDRDs7ZUFFY1ksUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNoQmY7O0FBQ0E7O0FBQ0E7Ozs7QUFFQTs7Ozs7Ozs7QUFRQSxJQUFJaU0sZUFBZSxHQUFHLENBQUM3VSx1QkFBRCxHQUFrQjJJLGlCQUFsQixHQUE2QixVQUFTWCxJQUFULEVBQWVwSixNQUFmLEVBQXVCO0FBQ3hFLFNBQU8sNkJBQWVvSixJQUFmLEVBQXFCLFVBQXJCLEVBQWlDO0FBQ3RDLG9CQUFnQixJQURzQjtBQUV0QyxrQkFBYyxLQUZ3QjtBQUd0QyxhQUFTLHVCQUFTcEosTUFBVCxDQUg2QjtBQUl0QyxnQkFBWTtBQUowQixHQUFqQyxDQUFQO0FBTUQsQ0FQRDtlQVNlaVcsZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyQmY7Ozs7Ozs7OztBQVNBLFNBQVM5SyxTQUFULENBQW1CdWtCLENBQW5CLEVBQXNCempCLFFBQXRCLEVBQWdDO0FBQzlCLE1BQUk5QixLQUFLLEdBQUcsQ0FBQyxDQUFiO0FBQUEsTUFDSWUsTUFBTSxHQUFHOUwsS0FBSyxDQUFDc3dCLENBQUQsQ0FEbEI7O0FBR0EsU0FBTyxFQUFFdmxCLEtBQUYsR0FBVXVsQixDQUFqQixFQUFvQjtBQUNsQnhrQixVQUFNLENBQUNmLEtBQUQsQ0FBTixHQUFnQjhCLFFBQVEsQ0FBQzlCLEtBQUQsQ0FBeEI7QUFDRDs7QUFDRCxTQUFPZSxNQUFQO0FBQ0Q7O2VBRWNDLFM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkJmOztBQUNBOztBQUNBOztBQUNBOzs7O0FBRUE7QUFDQSxJQUFJOE8sUUFBUSxHQUFHLElBQUksQ0FBbkI7QUFFQTs7QUFDQSxJQUFJQyxXQUFXLEdBQUd6VSxtQkFBU0EsaUJBQU9rcUIsU0FBaEIsR0FBNEJtRCxTQUE5QztBQUFBLElBQ0kzWSxjQUFjLEdBQUdELFdBQVcsR0FBR0EsV0FBVyxDQUFDN2IsUUFBZixHQUEwQnkwQixTQUQxRDtBQUdBOzs7Ozs7Ozs7QUFRQSxTQUFTMW1CLFlBQVQsQ0FBc0JoSyxLQUF0QixFQUE2QjtBQUMzQjtBQUNBLE1BQUksT0FBT0EsS0FBUCxJQUFnQixRQUFwQixFQUE4QjtBQUM1QixXQUFPQSxLQUFQO0FBQ0Q7O0FBQ0QsTUFBSSxzQkFBUUEsS0FBUixDQUFKLEVBQW9CO0FBQ2xCO0FBQ0EsV0FBTyx1QkFBU0EsS0FBVCxFQUFnQmdLLFlBQWhCLElBQWdDLEVBQXZDO0FBQ0Q7O0FBQ0QsTUFBSSx1QkFBU2hLLEtBQVQsQ0FBSixFQUFxQjtBQUNuQixXQUFPK1gsY0FBYyxHQUFHQSxjQUFjLENBQUN5VixJQUFmLENBQW9CeHRCLEtBQXBCLENBQUgsR0FBZ0MsRUFBckQ7QUFDRDs7QUFDRCxNQUFJOEksTUFBTSxHQUFJOUksS0FBSyxHQUFHLEVBQXRCO0FBQ0EsU0FBUThJLE1BQU0sSUFBSSxHQUFWLElBQWtCLElBQUk5SSxLQUFMLElBQWUsQ0FBQzZYLFFBQWxDLEdBQThDLElBQTlDLEdBQXFEL08sTUFBNUQ7QUFDRDs7ZUFFY2tCLFk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcENmOzs7Ozs7O0FBT0EsU0FBU29MLFNBQVQsQ0FBbUJwTyxJQUFuQixFQUF5QjtBQUN2QixTQUFPLFVBQVNoSCxLQUFULEVBQWdCO0FBQ3JCLFdBQU9nSCxJQUFJLENBQUNoSCxLQUFELENBQVg7QUFDRCxHQUZEO0FBR0Q7O2VBRWNvVixTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2JmOzs7O0FBRUE7Ozs7Ozs7Ozs7QUFVQSxTQUFTbEUsVUFBVCxDQUFvQnBLLE1BQXBCLEVBQTRCc0wsS0FBNUIsRUFBbUM7QUFDakMsU0FBTyx1QkFBU0EsS0FBVCxFQUFnQixVQUFTdlMsR0FBVCxFQUFjO0FBQ25DLFdBQU9pSCxNQUFNLENBQUNqSCxHQUFELENBQWI7QUFDRCxHQUZNLENBQVA7QUFHRDs7ZUFFY3FSLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbEJmOztBQUNBOzs7O0FBRUE7Ozs7Ozs7Ozs7QUFVQSxTQUFTZSxVQUFULENBQW9CYixNQUFwQixFQUE0QmdCLEtBQTVCLEVBQW1DdEwsTUFBbkMsRUFBMkN1TCxVQUEzQyxFQUF1RDtBQUNyRCxNQUFJRixLQUFLLEdBQUcsQ0FBQ3JMLE1BQWI7QUFDQUEsUUFBTSxLQUFLQSxNQUFNLEdBQUcsRUFBZCxDQUFOO0FBRUEsTUFBSWlCLEtBQUssR0FBRyxDQUFDLENBQWI7QUFBQSxNQUNJL00sTUFBTSxHQUFHb1gsS0FBSyxDQUFDcFgsTUFEbkI7O0FBR0EsU0FBTyxFQUFFK00sS0FBRixHQUFVL00sTUFBakIsRUFBeUI7QUFDdkIsUUFBSTZFLEdBQUcsR0FBR3VTLEtBQUssQ0FBQ3JLLEtBQUQsQ0FBZjtBQUVBLFFBQUl2QyxRQUFRLEdBQUc2TSxVQUFVLEdBQ3JCQSxVQUFVLENBQUN2TCxNQUFNLENBQUNqSCxHQUFELENBQVAsRUFBY3VSLE1BQU0sQ0FBQ3ZSLEdBQUQsQ0FBcEIsRUFBMkJBLEdBQTNCLEVBQWdDaUgsTUFBaEMsRUFBd0NzSyxNQUF4QyxDQURXLEdBRXJCc2YsU0FGSjs7QUFJQSxRQUFJbHJCLFFBQVEsS0FBS2tyQixTQUFqQixFQUE0QjtBQUMxQmxyQixjQUFRLEdBQUc0TCxNQUFNLENBQUN2UixHQUFELENBQWpCO0FBQ0Q7O0FBQ0QsUUFBSXNTLEtBQUosRUFBVztBQUNULG9DQUFnQnJMLE1BQWhCLEVBQXdCakgsR0FBeEIsRUFBNkIyRixRQUE3QjtBQUNELEtBRkQsTUFFTztBQUNMLGdDQUFZc0IsTUFBWixFQUFvQmpILEdBQXBCLEVBQXlCMkYsUUFBekI7QUFDRDtBQUNGOztBQUNELFNBQU9zQixNQUFQO0FBQ0Q7O2VBRWNtTCxVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZDZjs7OztBQUVBO0FBQ0EsSUFBSXFCLFVBQVUsR0FBR3hOLGNBQUssb0JBQUwsQ0FBakI7ZUFFZXdOLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTGY7O0FBQ0E7Ozs7QUFFQTs7Ozs7OztBQU9BLFNBQVN0QixjQUFULENBQXdCd0IsUUFBeEIsRUFBa0M7QUFDaEMsU0FBTyx1QkFBUyxVQUFTMU0sTUFBVCxFQUFpQnlNLE9BQWpCLEVBQTBCO0FBQ3hDLFFBQUl4TCxLQUFLLEdBQUcsQ0FBQyxDQUFiO0FBQUEsUUFDSS9NLE1BQU0sR0FBR3VZLE9BQU8sQ0FBQ3ZZLE1BRHJCO0FBQUEsUUFFSXFYLFVBQVUsR0FBR3JYLE1BQU0sR0FBRyxDQUFULEdBQWF1WSxPQUFPLENBQUN2WSxNQUFNLEdBQUcsQ0FBVixDQUFwQixHQUFtQzAxQixTQUZwRDtBQUFBLFFBR0k5ZixLQUFLLEdBQUc1VixNQUFNLEdBQUcsQ0FBVCxHQUFhdVksT0FBTyxDQUFDLENBQUQsQ0FBcEIsR0FBMEJtZCxTQUh0QztBQUtBcmUsY0FBVSxHQUFJbUIsUUFBUSxDQUFDeFksTUFBVCxHQUFrQixDQUFsQixJQUF1QixPQUFPcVgsVUFBUCxJQUFxQixVQUE3QyxJQUNSclgsTUFBTSxJQUFJcVgsVUFERixJQUVUcWUsU0FGSjs7QUFJQSxRQUFJOWYsS0FBSyxJQUFJLDZCQUFlMkMsT0FBTyxDQUFDLENBQUQsQ0FBdEIsRUFBMkJBLE9BQU8sQ0FBQyxDQUFELENBQWxDLEVBQXVDM0MsS0FBdkMsQ0FBYixFQUE0RDtBQUMxRHlCLGdCQUFVLEdBQUdyWCxNQUFNLEdBQUcsQ0FBVCxHQUFhMDFCLFNBQWIsR0FBeUJyZSxVQUF0QztBQUNBclgsWUFBTSxHQUFHLENBQVQ7QUFDRDs7QUFDRDhMLFVBQU0sR0FBRzdILE1BQU0sQ0FBQzZILE1BQUQsQ0FBZjs7QUFDQSxXQUFPLEVBQUVpQixLQUFGLEdBQVUvTSxNQUFqQixFQUF5QjtBQUN2QixVQUFJb1csTUFBTSxHQUFHbUMsT0FBTyxDQUFDeEwsS0FBRCxDQUFwQjs7QUFDQSxVQUFJcUosTUFBSixFQUFZO0FBQ1ZvQyxnQkFBUSxDQUFDMU0sTUFBRCxFQUFTc0ssTUFBVCxFQUFpQnJKLEtBQWpCLEVBQXdCc0ssVUFBeEIsQ0FBUjtBQUNEO0FBQ0Y7O0FBQ0QsV0FBT3ZMLE1BQVA7QUFDRCxHQXRCTSxDQUFQO0FBdUJEOztlQUVja0wsYzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwQ2Y7Ozs7QUFFQTtBQUNBLElBQUk3SixXQUFXLEdBQUdsSixNQUFNLENBQUNzdUIsU0FBekI7QUFFQTs7QUFDQSxJQUFJbmxCLGNBQWMsR0FBR0QsV0FBVyxDQUFDQyxjQUFqQztBQUVBOzs7Ozs7Ozs7Ozs7O0FBWUEsU0FBUzBJLHNCQUFULENBQWdDeUIsUUFBaEMsRUFBMENnbEMsUUFBMUMsRUFBb0QxM0MsR0FBcEQsRUFBeURpSCxNQUF6RCxFQUFpRTtBQUMvRCxNQUFJeUwsUUFBUSxLQUFLbWUsU0FBYixJQUNDLGlCQUFHbmUsUUFBSCxFQUFhcEssV0FBVyxDQUFDdEksR0FBRCxDQUF4QixLQUFrQyxDQUFDdUksY0FBYyxDQUFDb2xCLElBQWYsQ0FBb0IxbUIsTUFBcEIsRUFBNEJqSCxHQUE1QixDQUR4QyxFQUMyRTtBQUN6RSxXQUFPMDNDLFFBQVA7QUFDRDs7QUFDRCxTQUFPaGxDLFFBQVA7QUFDRDs7ZUFFY3pCLHNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzVCZjs7OztBQUVBLElBQUk5UixjQUFjLEdBQUksWUFBVztBQUMvQixNQUFJO0FBQ0YsUUFBSWdJLElBQUksR0FBRyx3QkFBVS9ILE1BQVYsRUFBa0IsZ0JBQWxCLENBQVg7QUFDQStILFFBQUksQ0FBQyxFQUFELEVBQUssRUFBTCxFQUFTLEVBQVQsQ0FBSjtBQUNBLFdBQU9BLElBQVA7QUFDRCxHQUpELENBSUUsT0FBTytGLENBQVAsRUFBVSxDQUFFO0FBQ2YsQ0FOcUIsRUFBdEI7O2VBUWUvTixjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1ZmOzs7O0FBRUE7QUFDQSxJQUFJMlksV0FBVyxHQUFHO0FBQ2hCLE9BQUssT0FEVztBQUVoQixPQUFLLE1BRlc7QUFHaEIsT0FBSyxNQUhXO0FBSWhCLE9BQUssUUFKVztBQUtoQixPQUFLO0FBTFcsQ0FBbEI7QUFRQTs7Ozs7Ozs7QUFPQSxJQUFJRCxjQUFjLEdBQUcsNkJBQWVDLFdBQWYsQ0FBckI7ZUFFZUQsYzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwQmY7QUFDQSxJQUFJUixhQUFhLEdBQUc7QUFDbEIsUUFBTSxJQURZO0FBRWxCLE9BQUssR0FGYTtBQUdsQixRQUFNLEdBSFk7QUFJbEIsUUFBTSxHQUpZO0FBS2xCLFlBQVUsT0FMUTtBQU1sQixZQUFVO0FBTlEsQ0FBcEI7QUFTQTs7Ozs7Ozs7QUFPQSxTQUFTekYsZ0JBQVQsQ0FBMEIrbEMsR0FBMUIsRUFBK0I7QUFDN0IsU0FBTyxPQUFPdGdDLGFBQWEsQ0FBQ3NnQyxHQUFELENBQTNCO0FBQ0Q7O2VBRWMvbEMsZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyQmY7QUFDQSxJQUFJeEwsVUFBVSxHQUFHLFFBQU9zQixNQUFQLHlDQUFPQSxNQUFQLE1BQWlCLFFBQWpCLElBQTZCQSxNQUE3QixJQUF1Q0EsTUFBTSxDQUFDdEksTUFBUCxLQUFrQkEsTUFBekQsSUFBbUVzSSxNQUFwRjtlQUVldEIsVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSGY7O0FBQ0E7Ozs7QUFFQTs7Ozs7Ozs7QUFRQSxTQUFTZ0IsU0FBVCxDQUFtQkgsTUFBbkIsRUFBMkJqSCxHQUEzQixFQUFnQztBQUM5QixNQUFJRyxLQUFLLEdBQUcsdUJBQVM4RyxNQUFULEVBQWlCakgsR0FBakIsQ0FBWjtBQUNBLFNBQU8sMkJBQWFHLEtBQWIsSUFBc0JBLEtBQXRCLEdBQThCMHdCLFNBQXJDO0FBQ0Q7O2VBRWN6cEIsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNoQmY7Ozs7QUFFQTtBQUNBLElBQUlnUSxZQUFZLEdBQUcsc0JBQVFoWSxNQUFNLENBQUNDLGNBQWYsRUFBK0JELE1BQS9CLENBQW5CO2VBRWVnWSxZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0xmOzs7O0FBRUE7QUFDQSxJQUFJOU8sV0FBVyxHQUFHbEosTUFBTSxDQUFDc3VCLFNBQXpCO0FBRUE7O0FBQ0EsSUFBSW5sQixjQUFjLEdBQUdELFdBQVcsQ0FBQ0MsY0FBakM7QUFFQTs7Ozs7O0FBS0EsSUFBSTZLLG9CQUFvQixHQUFHOUssV0FBVyxDQUFDbE0sUUFBdkM7QUFFQTs7QUFDQSxJQUFJbUgsY0FBYyxHQUFHQyxtQkFBU0EsaUJBQU9pMEMsV0FBaEIsR0FBOEI1bUIsU0FBbkQ7QUFFQTs7Ozs7Ozs7QUFPQSxTQUFTcHRCLFNBQVQsQ0FBbUJ0RCxLQUFuQixFQUEwQjtBQUN4QixNQUFJa1QsS0FBSyxHQUFHOUssY0FBYyxDQUFDb2xCLElBQWYsQ0FBb0J4dEIsS0FBcEIsRUFBMkJvRCxjQUEzQixDQUFaO0FBQUEsTUFDSWtFLEdBQUcsR0FBR3RILEtBQUssQ0FBQ29ELGNBQUQsQ0FEZjs7QUFHQSxNQUFJO0FBQ0ZwRCxTQUFLLENBQUNvRCxjQUFELENBQUwsR0FBd0JzdEIsU0FBeEI7QUFDQSxRQUFJdmQsUUFBUSxHQUFHLElBQWY7QUFDRCxHQUhELENBR0UsT0FBT3BHLENBQVAsRUFBVSxDQUFFOztBQUVkLE1BQUlqRSxNQUFNLEdBQUdtSyxvQkFBb0IsQ0FBQ3VhLElBQXJCLENBQTBCeHRCLEtBQTFCLENBQWI7O0FBQ0EsTUFBSW1ULFFBQUosRUFBYztBQUNaLFFBQUlELEtBQUosRUFBVztBQUNUbFQsV0FBSyxDQUFDb0QsY0FBRCxDQUFMLEdBQXdCa0UsR0FBeEI7QUFDRCxLQUZELE1BRU87QUFDTCxhQUFPdEgsS0FBSyxDQUFDb0QsY0FBRCxDQUFaO0FBQ0Q7QUFDRjs7QUFDRCxTQUFPMEYsTUFBUDtBQUNEOztlQUVjeEYsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3Q2Y7Ozs7Ozs7O0FBUUEsU0FBU2tQLFFBQVQsQ0FBa0IxTCxNQUFsQixFQUEwQmpILEdBQTFCLEVBQStCO0FBQzdCLFNBQU9pSCxNQUFNLElBQUksSUFBVixHQUFpQjRwQixTQUFqQixHQUE2QjVwQixNQUFNLENBQUNqSCxHQUFELENBQTFDO0FBQ0Q7O2VBRWMyUyxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDWmY7QUFDQSxJQUFJdkssZ0JBQWdCLEdBQUcsZ0JBQXZCO0FBRUE7O0FBQ0EsSUFBSUMsUUFBUSxHQUFHLGtCQUFmO0FBRUE7Ozs7Ozs7OztBQVFBLFNBQVNKLE9BQVQsQ0FBaUI5SCxLQUFqQixFQUF3QmhGLE1BQXhCLEVBQWdDO0FBQzlCLE1BQUk0SyxJQUFJLFdBQVU1RixLQUFWLENBQVI7O0FBQ0FoRixRQUFNLEdBQUdBLE1BQU0sSUFBSSxJQUFWLEdBQWlCaU4sZ0JBQWpCLEdBQW9Dak4sTUFBN0M7QUFFQSxTQUFPLENBQUMsQ0FBQ0EsTUFBRixLQUNKNEssSUFBSSxJQUFJLFFBQVIsSUFDRUEsSUFBSSxJQUFJLFFBQVIsSUFBb0JzQyxRQUFRLENBQUNwSixJQUFULENBQWNrQixLQUFkLENBRmxCLEtBR0FBLEtBQUssR0FBRyxDQUFDLENBQVQsSUFBY0EsS0FBSyxHQUFHLENBQVIsSUFBYSxDQUEzQixJQUFnQ0EsS0FBSyxHQUFHaEYsTUFIL0M7QUFJRDs7ZUFFYzhNLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDeEJmOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQTs7Ozs7Ozs7OztBQVVBLFNBQVNFLGNBQVQsQ0FBd0JoSSxLQUF4QixFQUErQitILEtBQS9CLEVBQXNDakIsTUFBdEMsRUFBOEM7QUFDNUMsTUFBSSxDQUFDLHVCQUFTQSxNQUFULENBQUwsRUFBdUI7QUFDckIsV0FBTyxLQUFQO0FBQ0Q7O0FBQ0QsTUFBSWxCLElBQUksV0FBVW1DLEtBQVYsQ0FBUjs7QUFDQSxNQUFJbkMsSUFBSSxJQUFJLFFBQVIsR0FDSywwQkFBWWtCLE1BQVosS0FBdUIsc0JBQVFpQixLQUFSLEVBQWVqQixNQUFNLENBQUM5TCxNQUF0QixDQUQ1QixHQUVLNEssSUFBSSxJQUFJLFFBQVIsSUFBb0JtQyxLQUFLLElBQUlqQixNQUZ0QyxFQUdNO0FBQ0osV0FBTyxpQkFBR0EsTUFBTSxDQUFDaUIsS0FBRCxDQUFULEVBQWtCL0gsS0FBbEIsQ0FBUDtBQUNEOztBQUNELFNBQU8sS0FBUDtBQUNEOztlQUVjZ0ksYzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3QmY7Ozs7QUFFQTtBQUNBLElBQUlvTCxVQUFVLEdBQUksWUFBVztBQUMzQixNQUFJQyxHQUFHLEdBQUcsU0FBU3lqQixJQUFULENBQWN4akIsdUJBQWNBLG9CQUFXNVQsSUFBekIsSUFBaUM0VCxvQkFBVzVULElBQVgsQ0FBZ0IrM0MsUUFBakQsSUFBNkQsRUFBM0UsQ0FBVjtBQUNBLFNBQU9wa0MsR0FBRyxHQUFJLG1CQUFtQkEsR0FBdkIsR0FBOEIsRUFBeEM7QUFDRCxDQUhpQixFQUFsQjtBQUtBOzs7Ozs7Ozs7QUFPQSxTQUFTTixRQUFULENBQWtCL0wsSUFBbEIsRUFBd0I7QUFDdEIsU0FBTyxDQUFDLENBQUNvTSxVQUFGLElBQWlCQSxVQUFVLElBQUlwTSxJQUF0QztBQUNEOztlQUVjK0wsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuQmY7QUFDQSxJQUFJNUssV0FBVyxHQUFHbEosTUFBTSxDQUFDc3VCLFNBQXpCO0FBRUE7Ozs7Ozs7O0FBT0EsU0FBU2xrQixXQUFULENBQXFCckosS0FBckIsRUFBNEI7QUFDMUIsTUFBSW1KLElBQUksR0FBR25KLEtBQUssSUFBSUEsS0FBSyxDQUFDRyxXQUExQjtBQUFBLE1BQ0lpSixLQUFLLEdBQUksT0FBT0QsSUFBUCxJQUFlLFVBQWYsSUFBNkJBLElBQUksQ0FBQ29rQixTQUFuQyxJQUFpRHBsQixXQUQ3RDtBQUdBLFNBQU9uSSxLQUFLLEtBQUtvSixLQUFqQjtBQUNEOztlQUVjQyxXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2pCZjs7OztBQUVBO0FBQ0EsSUFBSStOLFVBQVUsR0FBRyxzQkFBUW5ZLE1BQU0sQ0FBQ1MsSUFBZixFQUFxQlQsTUFBckIsQ0FBakI7ZUFFZW1ZLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTGY7Ozs7Ozs7OztBQVNBLFNBQVNOLFlBQVQsQ0FBc0JoUSxNQUF0QixFQUE4QjtBQUM1QixNQUFJZ0MsTUFBTSxHQUFHLEVBQWI7O0FBQ0EsTUFBSWhDLE1BQU0sSUFBSSxJQUFkLEVBQW9CO0FBQ2xCLFNBQUssSUFBSWpILEdBQVQsSUFBZ0JaLE1BQU0sQ0FBQzZILE1BQUQsQ0FBdEIsRUFBZ0M7QUFDOUJnQyxZQUFNLENBQUNxMEIsSUFBUCxDQUFZdDlCLEdBQVo7QUFDRDtBQUNGOztBQUNELFNBQU9pSixNQUFQO0FBQ0Q7O2VBRWNnTyxZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25CZjs7Ozs7O0FBRUE7QUFDQSxJQUFJbkMsV0FBVyxHQUFHLDhCQUFPQyxPQUFQLE1BQWtCLFFBQWxCLElBQThCQSxPQUE5QixJQUF5QyxDQUFDQSxPQUFPLENBQUMrcUIsUUFBbEQsSUFBOEQvcUIsT0FBaEY7QUFFQTs7QUFDQSxJQUFJQyxVQUFVLEdBQUdGLFdBQVcsSUFBSSw4QkFBT2pSLE1BQVAsTUFBaUIsUUFBaEMsSUFBNENBLE1BQTVDLElBQXNELENBQUNBLE1BQU0sQ0FBQ2k4QixRQUE5RCxJQUEwRWo4QixNQUEzRjtBQUVBOztBQUNBLElBQUlvUixhQUFhLEdBQUdELFVBQVUsSUFBSUEsVUFBVSxDQUFDRCxPQUFYLEtBQXVCRCxXQUF6RDtBQUVBOztBQUNBLElBQUlpQyxXQUFXLEdBQUc5QixhQUFhLElBQUk3TyxvQkFBV3l4QyxPQUE5QztBQUVBOztBQUNBLElBQUl2aUMsUUFBUSxHQUFJLFlBQVc7QUFDekIsTUFBSTtBQUNGO0FBQ0EsUUFBSTBCLEtBQUssR0FBR2hDLFVBQVUsSUFBSUEsVUFBVSxDQUFDMUgsT0FBekIsSUFBb0MwSCxVQUFVLENBQUMxSCxPQUFYLENBQW1CLE1BQW5CLEVBQTJCMEosS0FBM0U7O0FBRUEsUUFBSUEsS0FBSixFQUFXO0FBQ1QsYUFBT0EsS0FBUDtBQUNELEtBTkMsQ0FRRjs7O0FBQ0EsV0FBT0QsV0FBVyxJQUFJQSxXQUFXLENBQUMrZ0MsT0FBM0IsSUFBc0MvZ0MsV0FBVyxDQUFDK2dDLE9BQVosQ0FBb0IsTUFBcEIsQ0FBN0M7QUFDRCxHQVZELENBVUUsT0FBTzVxQyxDQUFQLEVBQVUsQ0FBRTtBQUNmLENBWmUsRUFBaEI7O2VBY2VvSSxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3QmY7QUFDQSxJQUFJaE4sV0FBVyxHQUFHbEosTUFBTSxDQUFDc3VCLFNBQXpCO0FBRUE7Ozs7OztBQUtBLElBQUl0YSxvQkFBb0IsR0FBRzlLLFdBQVcsQ0FBQ2xNLFFBQXZDO0FBRUE7Ozs7Ozs7O0FBT0EsU0FBU3NILGNBQVQsQ0FBd0J2RCxLQUF4QixFQUErQjtBQUM3QixTQUFPaVQsb0JBQW9CLENBQUN1YSxJQUFyQixDQUEwQnh0QixLQUExQixDQUFQO0FBQ0Q7O2VBRWN1RCxjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3JCZjs7Ozs7Ozs7QUFRQSxTQUFTb0csT0FBVCxDQUFpQjNDLElBQWpCLEVBQXVCMEMsU0FBdkIsRUFBa0M7QUFDaEMsU0FBTyxVQUFTcXJDLEdBQVQsRUFBYztBQUNuQixXQUFPL3RDLElBQUksQ0FBQzBDLFNBQVMsQ0FBQ3FyQyxHQUFELENBQVYsQ0FBWDtBQUNELEdBRkQ7QUFHRDs7ZUFFY3ByQyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2RmOzs7O0FBRUE7QUFDQSxJQUFJOEosU0FBUyxHQUFHalcsSUFBSSxDQUFDNlIsR0FBckI7QUFFQTs7Ozs7Ozs7OztBQVNBLFNBQVMzSCxRQUFULENBQWtCVixJQUFsQixFQUF3QjBNLEtBQXhCLEVBQStCaEssU0FBL0IsRUFBMEM7QUFDeENnSyxPQUFLLEdBQUdELFNBQVMsQ0FBQ0MsS0FBSyxLQUFLZ2QsU0FBVixHQUF1QjFwQixJQUFJLENBQUNoTSxNQUFMLEdBQWMsQ0FBckMsR0FBMEMwWSxLQUEzQyxFQUFrRCxDQUFsRCxDQUFqQjtBQUNBLFNBQU8sWUFBVztBQUNoQixRQUFJL1MsSUFBSSxHQUFHMlQsU0FBWDtBQUFBLFFBQ0l2TSxLQUFLLEdBQUcsQ0FBQyxDQURiO0FBQUEsUUFFSS9NLE1BQU0sR0FBR3lZLFNBQVMsQ0FBQzlTLElBQUksQ0FBQzNGLE1BQUwsR0FBYzBZLEtBQWYsRUFBc0IsQ0FBdEIsQ0FGdEI7QUFBQSxRQUdJOUosS0FBSyxHQUFHNU0sS0FBSyxDQUFDaEMsTUFBRCxDQUhqQjs7QUFLQSxXQUFPLEVBQUUrTSxLQUFGLEdBQVUvTSxNQUFqQixFQUF5QjtBQUN2QjRPLFdBQUssQ0FBQzdCLEtBQUQsQ0FBTCxHQUFlcEgsSUFBSSxDQUFDK1MsS0FBSyxHQUFHM0wsS0FBVCxDQUFuQjtBQUNEOztBQUNEQSxTQUFLLEdBQUcsQ0FBQyxDQUFUO0FBQ0EsUUFBSTRMLFNBQVMsR0FBRzNXLEtBQUssQ0FBQzBXLEtBQUssR0FBRyxDQUFULENBQXJCOztBQUNBLFdBQU8sRUFBRTNMLEtBQUYsR0FBVTJMLEtBQWpCLEVBQXdCO0FBQ3RCQyxlQUFTLENBQUM1TCxLQUFELENBQVQsR0FBbUJwSCxJQUFJLENBQUNvSCxLQUFELENBQXZCO0FBQ0Q7O0FBQ0Q0TCxhQUFTLENBQUNELEtBQUQsQ0FBVCxHQUFtQmhLLFNBQVMsQ0FBQ0UsS0FBRCxDQUE1QjtBQUNBLFdBQU8sb0JBQU01QyxJQUFOLEVBQVksSUFBWixFQUFrQjJNLFNBQWxCLENBQVA7QUFDRCxHQWhCRDtBQWlCRDs7ZUFFY2pNLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkNmO0FBQ0EsSUFBSTJQLFFBQVEsR0FBRyxrQkFBZjtlQUVlQSxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0hmO0FBQ0EsSUFBSUMsVUFBVSxHQUFHLGlCQUFqQjtlQUVlQSxVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0hmO0FBQ0EsSUFBSXZOLGFBQWEsR0FBRyxrQkFBcEI7ZUFFZUEsYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNIZjs7Ozs7O0FBRUE7QUFDQSxJQUFJaEUsUUFBUSxHQUFHLFFBQU9DLElBQVAseUNBQU9BLElBQVAsTUFBZSxRQUFmLElBQTJCQSxJQUEzQixJQUFtQ0EsSUFBSSxDQUFDL0csTUFBTCxLQUFnQkEsTUFBbkQsSUFBNkQrRyxJQUE1RTtBQUVBOztBQUNBLElBQUlGLElBQUksR0FBR0csdUJBQWNGLFFBQWQsSUFBMEJHLFFBQVEsQ0FBQyxhQUFELENBQVIsRUFBckM7ZUFFZUosSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNSZjs7QUFDQTs7OztBQUVBOzs7Ozs7OztBQVFBLElBQUkyQixXQUFXLEdBQUcsdUJBQVNvTSx3QkFBVCxDQUFsQjtlQUVlcE0sVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNiZjtBQUNBLElBQUlzTSxTQUFTLEdBQUcsR0FBaEI7QUFBQSxJQUNJQyxRQUFRLEdBQUcsRUFEZjtBQUdBOztBQUNBLElBQUlDLFNBQVMsR0FBR3pJLElBQUksQ0FBQ29rQixHQUFyQjtBQUVBOzs7Ozs7Ozs7O0FBU0EsU0FBU2hjLFFBQVQsQ0FBa0I1TSxJQUFsQixFQUF3QjtBQUN0QixNQUFJa04sS0FBSyxHQUFHLENBQVo7QUFBQSxNQUNJQyxVQUFVLEdBQUcsQ0FEakI7QUFHQSxTQUFPLFlBQVc7QUFDaEIsUUFBSUMsS0FBSyxHQUFHSCxTQUFTLEVBQXJCO0FBQUEsUUFDSUksU0FBUyxHQUFHTCxRQUFRLElBQUlJLEtBQUssR0FBR0QsVUFBWixDQUR4QjtBQUdBQSxjQUFVLEdBQUdDLEtBQWI7O0FBQ0EsUUFBSUMsU0FBUyxHQUFHLENBQWhCLEVBQW1CO0FBQ2pCLFVBQUksRUFBRUgsS0FBRixJQUFXSCxTQUFmLEVBQTBCO0FBQ3hCLGVBQU9PLFNBQVMsQ0FBQyxDQUFELENBQWhCO0FBQ0Q7QUFDRixLQUpELE1BSU87QUFDTEosV0FBSyxHQUFHLENBQVI7QUFDRDs7QUFDRCxXQUFPbE4sSUFBSSxDQUFDYSxLQUFMLENBQVc2b0IsU0FBWCxFQUFzQnBjLFNBQXRCLENBQVA7QUFDRCxHQWJEO0FBY0Q7O2VBRWNWLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcENmO0FBQ0EsSUFBSWhCLFNBQVMsR0FBRzFNLFFBQVEsQ0FBQ3FuQixTQUF6QjtBQUVBOztBQUNBLElBQUkxYSxZQUFZLEdBQUdELFNBQVMsQ0FBQzNXLFFBQTdCO0FBRUE7Ozs7Ozs7O0FBT0EsU0FBUytXLFFBQVQsQ0FBa0JoTSxJQUFsQixFQUF3QjtBQUN0QixNQUFJQSxJQUFJLElBQUksSUFBWixFQUFrQjtBQUNoQixRQUFJO0FBQ0YsYUFBTzZMLFlBQVksQ0FBQzJhLElBQWIsQ0FBa0J4bUIsSUFBbEIsQ0FBUDtBQUNELEtBRkQsQ0FFRSxPQUFPK0YsQ0FBUCxFQUFVLENBQUU7O0FBQ2QsUUFBSTtBQUNGLGFBQVEvRixJQUFJLEdBQUcsRUFBZjtBQUNELEtBRkQsQ0FFRSxPQUFPK0YsQ0FBUCxFQUFVLENBQUU7QUFDZjs7QUFDRCxTQUFPLEVBQVA7QUFDRDs7ZUFFY2lHLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDekJmOztBQUNBOztBQUNBOzs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkJBLElBQUluQyxZQUFZLEdBQUcsNkJBQWUsVUFBUy9KLE1BQVQsRUFBaUJzSyxNQUFqQixFQUF5QndtQyxRQUF6QixFQUFtQ3ZsQyxVQUFuQyxFQUErQztBQUMvRSwyQkFBV2pCLE1BQVgsRUFBbUIscUJBQU9BLE1BQVAsQ0FBbkIsRUFBbUN0SyxNQUFuQyxFQUEyQ3VMLFVBQTNDO0FBQ0QsQ0FGa0IsQ0FBbkI7ZUFJZXhCLFk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDckNmOztBQUNBOztBQUNBOzs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQkEsSUFBSWtCLE9BQU8sR0FBRyx1QkFBUyxVQUFTL0ssSUFBVCxFQUFlckcsSUFBZixFQUFxQjtBQUMxQyxNQUFJO0FBQ0YsV0FBTyxvQkFBTXFHLElBQU4sRUFBWTBwQixTQUFaLEVBQXVCL3ZCLElBQXZCLENBQVA7QUFDRCxHQUZELENBRUUsT0FBT29NLENBQVAsRUFBVTtBQUNWLFdBQU8sc0JBQVFBLENBQVIsSUFBYUEsQ0FBYixHQUFpQixJQUFJa3FCLEtBQUosQ0FBVWxxQixDQUFWLENBQXhCO0FBQ0Q7QUFDRixDQU5hLENBQWQ7ZUFRZWdGLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbENmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUJBLFNBQVMrQixRQUFULENBQWtCOVQsS0FBbEIsRUFBeUI7QUFDdkIsU0FBTyxZQUFXO0FBQ2hCLFdBQU9BLEtBQVA7QUFDRCxHQUZEO0FBR0Q7O2VBRWM4VCxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3pCZjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQ0EsU0FBUzFOLEVBQVQsQ0FBWXBHLEtBQVosRUFBbUJtRyxLQUFuQixFQUEwQjtBQUN4QixTQUFPbkcsS0FBSyxLQUFLbUcsS0FBVixJQUFvQm5HLEtBQUssS0FBS0EsS0FBVixJQUFtQm1HLEtBQUssS0FBS0EsS0FBeEQ7QUFDRDs7ZUFFY0MsRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwQ2Y7O0FBQ0E7Ozs7QUFFQTtBQUNBLElBQUlvUixlQUFlLEdBQUcsVUFBdEI7QUFBQSxJQUNJQyxrQkFBa0IsR0FBR25HLE1BQU0sQ0FBQ2tHLGVBQWUsQ0FBQ3BHLE1BQWpCLENBRC9CO0FBR0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEJBLFNBQVNtRyxNQUFULENBQWdCM1osTUFBaEIsRUFBd0I7QUFDdEJBLFFBQU0sR0FBRyx1QkFBU0EsTUFBVCxDQUFUO0FBQ0EsU0FBUUEsTUFBTSxJQUFJNlosa0JBQWtCLENBQUMzWSxJQUFuQixDQUF3QmxCLE1BQXhCLENBQVgsR0FDSEEsTUFBTSxDQUFDaXhDLE9BQVAsQ0FBZXIzQixlQUFmLEVBQWdDRSx1QkFBaEMsQ0FERyxHQUVIOVosTUFGSjtBQUdEOztlQUVjMlosTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxQ2Y7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsU0FBUzVQLFFBQVQsQ0FBa0IzSCxLQUFsQixFQUF5QjtBQUN2QixTQUFPQSxLQUFQO0FBQ0Q7O2VBRWMySCxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BCZjs7QUFDQTs7OztBQUVBO0FBQ0EsSUFBSVEsV0FBVyxHQUFHbEosTUFBTSxDQUFDc3VCLFNBQXpCO0FBRUE7O0FBQ0EsSUFBSW5sQixjQUFjLEdBQUdELFdBQVcsQ0FBQ0MsY0FBakM7QUFFQTs7QUFDQSxJQUFJb00sb0JBQW9CLEdBQUdyTSxXQUFXLENBQUNxTSxvQkFBdkM7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQSxJQUFJaE0sV0FBVyxHQUFHLDhCQUFnQixZQUFXO0FBQUUsU0FBTzhMLFNBQVA7QUFBbUIsQ0FBaEMsRUFBaEIsSUFBc0RHLHdCQUF0RCxHQUF3RSxVQUFTelUsS0FBVCxFQUFnQjtBQUN4RyxTQUFPLDJCQUFhQSxLQUFiLEtBQXVCb0ksY0FBYyxDQUFDb2xCLElBQWYsQ0FBb0J4dEIsS0FBcEIsRUFBMkIsUUFBM0IsQ0FBdkIsSUFDTCxDQUFDd1Usb0JBQW9CLENBQUNnWixJQUFyQixDQUEwQnh0QixLQUExQixFQUFpQyxRQUFqQyxDQURIO0FBRUQsQ0FIRDtlQUtld0ksVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuQ2Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUJBLElBQUlGLE9BQU8sR0FBR3RMLEtBQUssQ0FBQ3NMLE9BQXBCO2VBRWVBLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDekJmOztBQUNBOzs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5QkEsU0FBUy9CLFdBQVQsQ0FBcUJ2RyxLQUFyQixFQUE0QjtBQUMxQixTQUFPQSxLQUFLLElBQUksSUFBVCxJQUFpQix1QkFBU0EsS0FBSyxDQUFDaEYsTUFBZixDQUFqQixJQUEyQyxDQUFDLHlCQUFXZ0YsS0FBWCxDQUFuRDtBQUNEOztlQUVjdUcsVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNoQ2Y7O0FBQ0E7Ozs7OztBQUVBO0FBQ0EsSUFBSW9PLFdBQVcsR0FBRyw4QkFBT0MsT0FBUCxNQUFrQixRQUFsQixJQUE4QkEsT0FBOUIsSUFBeUMsQ0FBQ0EsT0FBTyxDQUFDK3FCLFFBQWxELElBQThEL3FCLE9BQWhGO0FBRUE7O0FBQ0EsSUFBSUMsVUFBVSxHQUFHRixXQUFXLElBQUksOEJBQU9qUixNQUFQLE1BQWlCLFFBQWhDLElBQTRDQSxNQUE1QyxJQUFzRCxDQUFDQSxNQUFNLENBQUNpOEIsUUFBOUQsSUFBMEVqOEIsTUFBM0Y7QUFFQTs7QUFDQSxJQUFJb1IsYUFBYSxHQUFHRCxVQUFVLElBQUlBLFVBQVUsQ0FBQ0QsT0FBWCxLQUF1QkQsV0FBekQ7QUFFQTs7QUFDQSxJQUFJSSxNQUFNLEdBQUdELGFBQWEsR0FBR2hQLGNBQUtpUCxNQUFSLEdBQWlCMmIsU0FBM0M7QUFFQTs7QUFDQSxJQUFJMWIsY0FBYyxHQUFHRCxNQUFNLEdBQUdBLE1BQU0sQ0FBQ3JNLFFBQVYsR0FBcUJnb0IsU0FBaEQ7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUJBLElBQUlob0IsUUFBUSxHQUFHc00sY0FBYyxJQUFJQyxrQkFBakM7ZUFFZXZNLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3JDZjs7QUFDQTs7QUFDQTs7OztBQUVBO0FBQ0EsSUFBSVksU0FBUyxHQUFHLHVCQUFoQjtBQUFBLElBQ0lDLFFBQVEsR0FBRyxnQkFEZjtBQUdBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBLFNBQVNFLE9BQVQsQ0FBaUJ6SixLQUFqQixFQUF3QjtBQUN0QixNQUFJLENBQUMsMkJBQWFBLEtBQWIsQ0FBTCxFQUEwQjtBQUN4QixXQUFPLEtBQVA7QUFDRDs7QUFDRCxNQUFJc0gsR0FBRyxHQUFHLHlCQUFXdEgsS0FBWCxDQUFWO0FBQ0EsU0FBT3NILEdBQUcsSUFBSWlDLFFBQVAsSUFBbUJqQyxHQUFHLElBQUlnQyxTQUExQixJQUNKLE9BQU90SixLQUFLLENBQUM3RSxPQUFiLElBQXdCLFFBQXhCLElBQW9DLE9BQU82RSxLQUFLLENBQUM5RSxJQUFiLElBQXFCLFFBQXpELElBQXFFLENBQUMsNEJBQWM4RSxLQUFkLENBRHpFO0FBRUQ7O2VBRWN5SixPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25DZjs7QUFDQTs7OztBQUVBO0FBQ0EsSUFBSXZDLFFBQVEsR0FBRyx3QkFBZjtBQUFBLElBQ0lDLE9BQU8sR0FBRyxtQkFEZDtBQUFBLElBRUlDLE1BQU0sR0FBRyw0QkFGYjtBQUFBLElBR0lDLFFBQVEsR0FBRyxnQkFIZjtBQUtBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkEsU0FBU2YsVUFBVCxDQUFvQnRHLEtBQXBCLEVBQTJCO0FBQ3pCLE1BQUksQ0FBQyx1QkFBU0EsS0FBVCxDQUFMLEVBQXNCO0FBQ3BCLFdBQU8sS0FBUDtBQUNELEdBSHdCLENBSXpCO0FBQ0E7OztBQUNBLE1BQUlzSCxHQUFHLEdBQUcseUJBQVd0SCxLQUFYLENBQVY7QUFDQSxTQUFPc0gsR0FBRyxJQUFJSCxPQUFQLElBQWtCRyxHQUFHLElBQUlGLE1BQXpCLElBQW1DRSxHQUFHLElBQUlKLFFBQTFDLElBQXNESSxHQUFHLElBQUlELFFBQXBFO0FBQ0Q7O2VBRWNmLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcENmO0FBQ0EsSUFBSTJCLGdCQUFnQixHQUFHLGdCQUF2QjtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEwQkEsU0FBUzVCLFFBQVQsQ0FBa0JyRyxLQUFsQixFQUF5QjtBQUN2QixTQUFPLE9BQU9BLEtBQVAsSUFBZ0IsUUFBaEIsSUFDTEEsS0FBSyxHQUFHLENBQUMsQ0FESixJQUNTQSxLQUFLLEdBQUcsQ0FBUixJQUFhLENBRHRCLElBQzJCQSxLQUFLLElBQUlpSSxnQkFEM0M7QUFFRDs7ZUFFYzVCLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsQ2Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5QkEsU0FBU1IsUUFBVCxDQUFrQjdGLEtBQWxCLEVBQXlCO0FBQ3ZCLE1BQUk0RixJQUFJLFdBQVU1RixLQUFWLENBQVI7O0FBQ0EsU0FBT0EsS0FBSyxJQUFJLElBQVQsS0FBa0I0RixJQUFJLElBQUksUUFBUixJQUFvQkEsSUFBSSxJQUFJLFVBQTlDLENBQVA7QUFDRDs7ZUFFY0MsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzlCZjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0JBLFNBQVNwQyxZQUFULENBQXNCekQsS0FBdEIsRUFBNkI7QUFDM0IsU0FBT0EsS0FBSyxJQUFJLElBQVQsSUFBaUIsUUFBT0EsS0FBUCxLQUFnQixRQUF4QztBQUNEOztlQUVjeUQsWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM1QmY7O0FBQ0E7O0FBQ0E7Ozs7QUFFQTtBQUNBLElBQUlrUyxTQUFTLEdBQUcsaUJBQWhCO0FBRUE7O0FBQ0EsSUFBSS9DLFNBQVMsR0FBRzFNLFFBQVEsQ0FBQ3FuQixTQUF6QjtBQUFBLElBQ0lwbEIsV0FBVyxHQUFHbEosTUFBTSxDQUFDc3VCLFNBRHpCO0FBR0E7O0FBQ0EsSUFBSTFhLFlBQVksR0FBR0QsU0FBUyxDQUFDM1csUUFBN0I7QUFFQTs7QUFDQSxJQUFJbU0sY0FBYyxHQUFHRCxXQUFXLENBQUNDLGNBQWpDO0FBRUE7O0FBQ0EsSUFBSTRPLGdCQUFnQixHQUFHbkUsWUFBWSxDQUFDMmEsSUFBYixDQUFrQnZ1QixNQUFsQixDQUF2QjtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTRCQSxTQUFTdUssYUFBVCxDQUF1QnhKLEtBQXZCLEVBQThCO0FBQzVCLE1BQUksQ0FBQywyQkFBYUEsS0FBYixDQUFELElBQXdCLHlCQUFXQSxLQUFYLEtBQXFCMlYsU0FBakQsRUFBNEQ7QUFDMUQsV0FBTyxLQUFQO0FBQ0Q7O0FBQ0QsTUFBSXZNLEtBQUssR0FBRywyQkFBYXBKLEtBQWIsQ0FBWjs7QUFDQSxNQUFJb0osS0FBSyxLQUFLLElBQWQsRUFBb0I7QUFDbEIsV0FBTyxJQUFQO0FBQ0Q7O0FBQ0QsTUFBSUQsSUFBSSxHQUFHZixjQUFjLENBQUNvbEIsSUFBZixDQUFvQnBrQixLQUFwQixFQUEyQixhQUEzQixLQUE2Q0EsS0FBSyxDQUFDakosV0FBOUQ7QUFDQSxTQUFPLE9BQU9nSixJQUFQLElBQWUsVUFBZixJQUE2QkEsSUFBSSxZQUFZQSxJQUE3QyxJQUNMMEosWUFBWSxDQUFDMmEsSUFBYixDQUFrQnJrQixJQUFsQixLQUEyQjZOLGdCQUQ3QjtBQUVEOztlQUVjeE4sYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3RGY7O0FBQ0E7Ozs7OztBQUVBO0FBQ0EsSUFBSXlPLFNBQVMsR0FBRyxpQkFBaEI7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUJBLFNBQVNELFFBQVQsQ0FBa0JoWSxLQUFsQixFQUF5QjtBQUN2QixTQUFPLFFBQU9BLEtBQVAsS0FBZ0IsUUFBaEIsSUFDSiwyQkFBYUEsS0FBYixLQUF1Qix5QkFBV0EsS0FBWCxLQUFxQmlZLFNBRC9DO0FBRUQ7O2VBRWNELFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDNUJmOztBQUNBOztBQUNBOzs7O0FBRUE7QUFDQSxJQUFJOUMsZ0JBQWdCLEdBQUdDLHFCQUFZQSxrQkFBU3ZNLFlBQTVDO0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQSxJQUFJQSxZQUFZLEdBQUdzTSxnQkFBZ0IsR0FBRyx3QkFBVUEsZ0JBQVYsQ0FBSCxHQUFpQ0cseUJBQXBFO2VBRWV6TSxZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzFCZjs7QUFDQTs7QUFDQTs7OztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEJBLFNBQVNsSixJQUFULENBQWNvSCxNQUFkLEVBQXNCO0FBQ3BCLFNBQU8sMEJBQVlBLE1BQVosSUFBc0IsNEJBQWNBLE1BQWQsQ0FBdEIsR0FBOEMsdUJBQVNBLE1BQVQsQ0FBckQ7QUFDRDs7ZUFFY3BILEk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcENmOztBQUNBOztBQUNBOzs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUJBLFNBQVN3UyxNQUFULENBQWdCcEwsTUFBaEIsRUFBd0I7QUFDdEIsU0FBTywwQkFBWUEsTUFBWixJQUFzQiw0QkFBY0EsTUFBZCxFQUFzQixJQUF0QixDQUF0QixHQUFvRCx5QkFBV0EsTUFBWCxDQUEzRDtBQUNEOztlQUVjb0wsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMvQmY7Ozs7Ozs7Ozs7Ozs7QUFhQSxTQUFTK0MsU0FBVCxHQUFxQjtBQUNuQixTQUFPLEtBQVA7QUFDRDs7ZUFFY0EsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqQmY7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFFQTtBQUNBLElBQUk3RSxvQkFBb0IsR0FBRyxnQkFBM0I7QUFBQSxJQUNJQyxtQkFBbUIsR0FBRyxvQkFEMUI7QUFBQSxJQUVJQyxxQkFBcUIsR0FBRywrQkFGNUI7QUFJQTs7Ozs7QUFJQSxJQUFJQyxZQUFZLEdBQUcsaUNBQW5CO0FBRUE7O0FBQ0EsSUFBSUMsU0FBUyxHQUFHLE1BQWhCO0FBRUE7O0FBQ0EsSUFBSUMsaUJBQWlCLEdBQUcsd0JBQXhCO0FBRUE7O0FBQ0EsSUFBSXRJLFdBQVcsR0FBR2xKLE1BQU0sQ0FBQ3N1QixTQUF6QjtBQUVBOztBQUNBLElBQUlubEIsY0FBYyxHQUFHRCxXQUFXLENBQUNDLGNBQWpDO0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdHQSxTQUFTK0gsUUFBVCxDQUFrQnZTLE1BQWxCLEVBQTBCd1AsT0FBMUIsRUFBbUN3RCxLQUFuQyxFQUEwQztBQUN4QztBQUNBO0FBQ0E7QUFDQSxNQUFJRixRQUFRLEdBQUdDLDBCQUFpQkksT0FBakIsQ0FBeUJvakIsQ0FBekIsQ0FBMkJ4akIsZ0JBQTNCLElBQStDQSx5QkFBOUQ7O0FBRUEsTUFBSUMsS0FBSyxJQUFJLDZCQUFlaFQsTUFBZixFQUF1QndQLE9BQXZCLEVBQWdDd0QsS0FBaEMsQ0FBYixFQUFxRDtBQUNuRHhELFdBQU8sR0FBR3NqQixTQUFWO0FBQ0Q7O0FBQ0Q5eUIsUUFBTSxHQUFHLHVCQUFTQSxNQUFULENBQVQ7QUFDQXdQLFNBQU8sR0FBRywyQkFBYSxFQUFiLEVBQWlCQSxPQUFqQixFQUEwQnNELFFBQTFCLEVBQW9DSSwrQkFBcEMsQ0FBVjtBQUVBLE1BQUlDLE9BQU8sR0FBRywyQkFBYSxFQUFiLEVBQWlCM0QsT0FBTyxDQUFDMkQsT0FBekIsRUFBa0NMLFFBQVEsQ0FBQ0ssT0FBM0MsRUFBb0RELCtCQUFwRCxDQUFkO0FBQUEsTUFDSUUsV0FBVyxHQUFHLG1CQUFLRCxPQUFMLENBRGxCO0FBQUEsTUFFSUUsYUFBYSxHQUFHLHlCQUFXRixPQUFYLEVBQW9CQyxXQUFwQixDQUZwQjtBQUlBLE1BQUlVLFVBQUo7QUFBQSxNQUNJQyxZQURKO0FBQUEsTUFFSTVKLEtBQUssR0FBRyxDQUZaO0FBQUEsTUFHSW9KLFdBQVcsR0FBRy9ELE9BQU8sQ0FBQytELFdBQVIsSUFBdUJYLFNBSHpDO0FBQUEsTUFJSVksTUFBTSxHQUFHLFVBSmIsQ0FoQndDLENBc0J4Qzs7QUFDQSxNQUFJQyxZQUFZLEdBQUdDLE1BQU0sQ0FDdkIsQ0FBQ2xFLE9BQU8sQ0FBQ21LLE1BQVIsSUFBa0IvRyxTQUFuQixFQUE4QlksTUFBOUIsR0FBdUMsR0FBdkMsR0FDQUQsV0FBVyxDQUFDQyxNQURaLEdBQ3FCLEdBRHJCLEdBRUEsQ0FBQ0QsV0FBVyxLQUFLcEgsc0JBQWhCLEdBQWdDd0csWUFBaEMsR0FBK0NDLFNBQWhELEVBQTJEWSxNQUYzRCxHQUVvRSxHQUZwRSxHQUdBLENBQUNoRSxPQUFPLENBQUN5cUMsUUFBUixJQUFvQnJuQyxTQUFyQixFQUFnQ1ksTUFIaEMsR0FHeUMsSUFKbEIsRUFLdkIsR0FMdUIsQ0FBekIsQ0F2QndDLENBOEJ4QztBQUNBO0FBQ0E7QUFDQTs7QUFDQSxNQUFJRyxTQUFTLEdBQUduSixjQUFjLENBQUNvbEIsSUFBZixDQUFvQnBnQixPQUFwQixFQUE2QixXQUE3QixJQUNYLG1CQUNBLENBQUNBLE9BQU8sQ0FBQ21FLFNBQVIsR0FBb0IsRUFBckIsRUFBeUJzOUIsT0FBekIsQ0FBaUMsU0FBakMsRUFBNEMsR0FBNUMsQ0FEQSxHQUVBLElBSFcsR0FJWixFQUpKO0FBTUFqeEMsUUFBTSxDQUFDaXhDLE9BQVAsQ0FBZXg5QixZQUFmLEVBQTZCLFVBQVNRLEtBQVQsRUFBZ0JpbUMsV0FBaEIsRUFBNkJ0bUMsZ0JBQTdCLEVBQStDdW1DLGVBQS9DLEVBQWdFQyxhQUFoRSxFQUErRXBtQyxNQUEvRSxFQUF1RjtBQUNsSEosb0JBQWdCLEtBQUtBLGdCQUFnQixHQUFHdW1DLGVBQXhCLENBQWhCLENBRGtILENBR2xIOztBQUNBM21DLFVBQU0sSUFBSXhULE1BQU0sQ0FBQ3F6QixLQUFQLENBQWFscEIsS0FBYixFQUFvQjZKLE1BQXBCLEVBQTRCaTlCLE9BQTVCLENBQW9DcCtCLGlCQUFwQyxFQUF1RGdCLHlCQUF2RCxDQUFWLENBSmtILENBTWxIOztBQUNBLFFBQUlxbUMsV0FBSixFQUFpQjtBQUNmcG1DLGdCQUFVLEdBQUcsSUFBYjtBQUNBTixZQUFNLElBQUksY0FBYzBtQyxXQUFkLEdBQTRCLFFBQXRDO0FBQ0Q7O0FBQ0QsUUFBSUUsYUFBSixFQUFtQjtBQUNqQnJtQyxrQkFBWSxHQUFHLElBQWY7QUFDQVAsWUFBTSxJQUFJLFNBQVM0bUMsYUFBVCxHQUF5QixhQUFuQztBQUNEOztBQUNELFFBQUl4bUMsZ0JBQUosRUFBc0I7QUFDcEJKLFlBQU0sSUFBSSxtQkFBbUJJLGdCQUFuQixHQUFzQyw2QkFBaEQ7QUFDRDs7QUFDRHpKLFNBQUssR0FBRzZKLE1BQU0sR0FBR0MsS0FBSyxDQUFDN1csTUFBdkIsQ0FsQmtILENBb0JsSDtBQUNBOztBQUNBLFdBQU82VyxLQUFQO0FBQ0QsR0F2QkQ7QUF5QkFULFFBQU0sSUFBSSxNQUFWLENBakV3QyxDQW1FeEM7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsTUFBSVUsUUFBUSxHQUFHMUosY0FBYyxDQUFDb2xCLElBQWYsQ0FBb0JwZ0IsT0FBcEIsRUFBNkIsVUFBN0IsS0FBNENBLE9BQU8sQ0FBQzBFLFFBQW5FOztBQUNBLE1BQUksQ0FBQ0EsUUFBTCxFQUFlO0FBQ2JWLFVBQU0sR0FBRyxtQkFBbUJBLE1BQW5CLEdBQTRCLE9BQXJDO0FBQ0QsR0ExRXVDLENBMkV4Qzs7O0FBQ0FBLFFBQU0sR0FBRyxDQUFDTyxZQUFZLEdBQUdQLE1BQU0sQ0FBQ3k5QixPQUFQLENBQWV6K0Isb0JBQWYsRUFBcUMsRUFBckMsQ0FBSCxHQUE4Q2dCLE1BQTNELEVBQ055OUIsT0FETSxDQUNFeCtCLG1CQURGLEVBQ3VCLElBRHZCLEVBRU53K0IsT0FGTSxDQUVFditCLHFCQUZGLEVBRXlCLEtBRnpCLENBQVQsQ0E1RXdDLENBZ0Z4Qzs7QUFDQWMsUUFBTSxHQUFHLGVBQWVVLFFBQVEsSUFBSSxLQUEzQixJQUFvQyxPQUFwQyxJQUNOQSxRQUFRLEdBQ0wsRUFESyxHQUVMLHNCQUhHLElBS1AsbUJBTE8sSUFNTkosVUFBVSxHQUNOLGtCQURNLEdBRU4sRUFSRSxLQVVOQyxZQUFZLEdBQ1Qsb0NBQ0EsdURBRlMsR0FHVCxLQWJHLElBZVBQLE1BZk8sR0FnQlAsZUFoQkY7QUFrQkEsTUFBSXRJLE1BQU0sR0FBRyxzQkFBUSxZQUFXO0FBQzlCLFdBQU81QyxRQUFRLENBQUM4SyxXQUFELEVBQWNPLFNBQVMsR0FBRyxTQUFaLEdBQXdCSCxNQUF0QyxDQUFSLENBQ0p2SixLQURJLENBQ0U2b0IsU0FERixFQUNhemYsYUFEYixDQUFQO0FBRUQsR0FIWSxDQUFiLENBbkd3QyxDQXdHeEM7QUFDQTs7QUFDQW5JLFFBQU0sQ0FBQ3NJLE1BQVAsR0FBZ0JBLE1BQWhCOztBQUNBLE1BQUksc0JBQVF0SSxNQUFSLENBQUosRUFBcUI7QUFDbkIsVUFBTUEsTUFBTjtBQUNEOztBQUNELFNBQU9BLE1BQVA7QUFDRDs7ZUFFY3FILFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDNVBmOztBQUNBOztBQUNBOztBQUNBOzs7O0FBRUE7Ozs7Ozs7OztBQVNBLElBQUlRLGdCQUFnQixHQUFHO0FBRXJCOzs7Ozs7QUFNQSxZQUFVMEcsaUJBUlc7O0FBVXJCOzs7Ozs7QUFNQSxjQUFZQyxtQkFoQlM7O0FBa0JyQjs7Ozs7O0FBTUEsaUJBQWV2TixzQkF4Qk07O0FBMEJyQjs7Ozs7O0FBTUEsY0FBWSxFQWhDUzs7QUFrQ3JCOzs7Ozs7QUFNQSxhQUFXO0FBRVQ7Ozs7OztBQU1BLFNBQUs7QUFBRSxnQkFBVXdOO0FBQVo7QUFSSTtBQXhDVSxDQUF2QjtlQW9EZTVHLGdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2xFZjs7OztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQkEsU0FBUzFVLFFBQVQsQ0FBa0IrRCxLQUFsQixFQUF5QjtBQUN2QixTQUFPQSxLQUFLLElBQUksSUFBVCxHQUFnQixFQUFoQixHQUFxQiwyQkFBYUEsS0FBYixDQUE1QjtBQUNEOztlQUVjL0QsUTs7Ozs7Ozs7Ozs7O0FDM0JmLHFMQUFxTCxtQkFBbUIsRUFBRSxnQkFBZ0IsNkJBQTZCLEVBQUUsbUJBQW1CLGtDQUFrQyxFQUFFLGVBQWUsaUJBQWlCLEVBQUUsb0JBQW9CLDBCQUEwQiwwQkFBMEIsRUFBRSxzQkFBc0IseUNBQXlDLHNDQUFzQyxxQ0FBcUMsaUNBQWlDLEVBQUUsb0JBQW9CLHlDQUF5QyxzQ0FBc0MscUNBQXFDLGlDQUFpQyxFQUFFLCtCQUErQix1QkFBdUIsRUFBRSx1QkFBdUIseUJBQXlCLHlCQUF5QixrQkFBa0Isd0JBQXdCLHVCQUF1QixtQkFBbUIsOEJBQThCLDJCQUEyQix3QkFBd0Isd0JBQXdCLHVCQUF1QixxQkFBcUIsRUFBRSw2QkFBNkIsMkNBQTJDLG1DQUFtQyxxQ0FBcUMsNkJBQTZCLGdEQUFnRCx3Q0FBd0MsbURBQW1ELDJDQUEyQyxFQUFFLCtDQUErQyxVQUFVLHdCQUF3Qix5QkFBeUIsRUFBRSxRQUFRLHdCQUF3Qix5QkFBeUIsRUFBRSxFQUFFLHVDQUF1QyxVQUFVLHdCQUF3Qix5QkFBeUIsRUFBRSxRQUFRLHdCQUF3Qix5QkFBeUIsRUFBRSxFQUFFLHNCQUFzQix1QkFBdUIseUJBQXlCLHlCQUF5QixrQkFBa0IsaUNBQWlDLGtDQUFrQywrQkFBK0IsMkJBQTJCLHFCQUFxQixFQUFFLHVDQUF1QyxtQkFBbUIsRUFBRSxvQ0FBb0MseUJBQXlCLG1CQUFtQixrQkFBa0IsbUJBQW1CLGlEQUFpRCx5Q0FBeUMsRUFBRSw2Q0FBNkMsb0JBQW9CLGlEQUFpRCw2aEtBQTZoSyxvQ0FBb0MsNEJBQTRCLHFDQUFxQyxvQ0FBb0MsdUJBQXVCLHFCQUFxQixxQkFBcUIsRUFBRSx5REFBeUQscUJBQXFCLDBCQUEwQiw0QkFBNEIsd0JBQXdCLEVBQUUsMkJBQTJCLHlCQUF5Qix5QkFBeUIsa0JBQWtCLG1DQUFtQyxrQ0FBa0MsNEJBQTRCLHdCQUF3QixFQUFFLDRDQUE0QywwQkFBMEIseUJBQXlCLHFCQUFxQixnQkFBZ0Isb0JBQW9CLEVBQUUsY0FBYyxvQkFBb0IsdUJBQXVCLHlCQUF5Qix5QkFBeUIsa0JBQWtCLGlDQUFpQyxrQ0FBa0MsK0JBQStCLDJCQUEyQixFQUFFLCtEQUErRCx1QkFBdUIsMEJBQTBCLHlCQUF5QixxQkFBcUIsZUFBZSxFQUFFLCtCQUErQixtQkFBbUIsRUFBRSwyVkFBMlYsdUJBQXVCLGlCQUFpQixtQkFBbUIscUJBQXFCLHdCQUF3Qix1QkFBdUIsbUJBQW1CLEVBQUUsdUJBQXVCLHlCQUF5Qix5QkFBeUIsa0JBQWtCLEVBQUUsd0NBQXdDLHVCQUF1Qix3Q0FBd0MsRUFBRSxzRUFBc0UseUJBQXlCLEVBQUUsbUVBQW1FLDJCQUEyQiw0QkFBNEIsb0JBQW9CLEVBQUUsOEJBQThCLGdCQUFnQixxQkFBcUIsRUFBRSx5Q0FBeUMsdUJBQXVCLEVBQUUsK0JBQStCLG1CQUFtQixnQkFBZ0IsRUFBRSwyYUFBMmEsdUJBQXVCLEVBQUUscUZBQXFGLGlCQUFpQix3QkFBd0IsRUFBRSwrQ0FBK0MscUJBQXFCLEVBQUUsd0lBQXdJLHFCQUFxQixFQUFFLGlEQUFpRCxtQkFBbUIsRUFBRSx1Q0FBdUMsd0JBQXdCLG1CQUFtQixlQUFlLEVBQUUsK0RBQStELHNCQUFzQixFQUFFLHFDQUFxQyxtQkFBbUIsRUFBRSwwQ0FBMEMsaUJBQWlCLEVBQUUsaUhBQWlILHVCQUF1QixhQUFhLGNBQWMseUJBQXlCLEVBQUUsOEJBQThCLGdCQUFnQixFQUFFLHFGQUFxRiwwQkFBMEIscUJBQXFCLGlCQUFpQixnQkFBZ0IsRUFBRSxnQ0FBZ0MscUJBQXFCLEVBQUUsa0hBQWtILHdCQUF3QixnQkFBZ0IsWUFBWSxpQkFBaUIscUJBQXFCLEVBQUUsZ0NBQWdDLGtCQUFrQixpQkFBaUIsZ0JBQWdCLHlCQUF5Qix5QkFBeUIsa0JBQWtCLHVCQUF1QixFQUFFLGlEQUFpRCxrQkFBa0IsRUFBRSw2REFBNkQsaUJBQWlCLGlCQUFpQiwyQkFBMkIsNEJBQTRCLG9CQUFvQix1QkFBdUIsRUFBRSxtR0FBbUcseUJBQXlCLEVBQUUsb0pBQW9KLDBCQUEwQixxQkFBcUIsRUFBRSw0SUFBNEksc0JBQXNCLEVBQUUsZ0JBQWdCLHlCQUF5Qix5QkFBeUIsa0JBQWtCLGdCQUFnQix3QkFBd0IsRUFBRSxxQkFBcUIseUJBQXlCLHlCQUF5QixrQkFBa0IsRUFBRSw0QkFBNEIsaUJBQWlCLEVBQUUsNkJBQTZCLGlCQUFpQixFQUFFLG9CQUFvQix1QkFBdUIscUJBQXFCLEVBQUUsd0JBQXdCLG1CQUFtQix1QkFBdUIsRUFBRSxxQkFBcUIsZ0NBQWdDLGdDQUFnQyx5QkFBeUIsOEJBQThCLDJCQUEyQix3QkFBd0IsdUJBQXVCLGlCQUFpQixxQkFBcUIscUJBQXFCLEVBQUUsd0RBQXdELHlCQUF5Qix5QkFBeUIsa0JBQWtCLHdCQUF3Qix1QkFBdUIsbUJBQW1CLHFCQUFxQiw4QkFBOEIsMkJBQTJCLHdCQUF3Qiw0QkFBNEIsaUJBQWlCLEVBQUUsZ0RBQWdELHFCQUFxQiw0QkFBNEIsd0JBQXdCLEVBQUUsOENBQThDLG1DQUFtQyxtQ0FBbUMsb0NBQW9DLGdDQUFnQyxFQUFFLDJCQUEyQixxQkFBcUIsNEJBQTRCLHdCQUF3QixFQUFFLDRCQUE0Qix1QkFBdUIsZUFBZSxpQkFBaUIsZUFBZSxFQUFFLDRCQUE0QixzQkFBc0IsRUFBRSwyQkFBMkIseUJBQXlCLHlCQUF5QixrQkFBa0IsbUJBQW1CLEVBQUUsbUhBQW1ILGtDQUFrQywwQkFBMEIsRUFBRSx1Q0FBdUMsa0NBQWtDLDBCQUEwQixFQUFFLDZDQUE2Qyw4Q0FBOEMsc0NBQXNDLEVBQUUsOEdBQThHLHlCQUF5Qix5QkFBeUIsa0JBQWtCLGlDQUFpQyxrQ0FBa0MsK0JBQStCLDJCQUEyQixxQkFBcUIsd0JBQXdCLHVCQUF1QixtQkFBbUIsRUFBRSw2QkFBNkIseUJBQXlCLHlCQUF5QixrQkFBa0IsaUNBQWlDLGtDQUFrQywrQkFBK0IsMkJBQTJCLHFCQUFxQix3QkFBd0IseUJBQXlCLGlCQUFpQix5QkFBeUIsbUJBQW1CLCtCQUErQixrQkFBa0IsRUFBRSwyREFBMkQsMkJBQTJCLDJCQUEyQixvQkFBb0IsMEJBQTBCLHFCQUFxQixpQkFBaUIsRUFBRSxvRkFBb0YsNEJBQTRCLDJCQUEyQix1QkFBdUIsRUFBRSw2RkFBNkYsNEJBQTRCLDJCQUEyQix1QkFBdUIsRUFBRSxxR0FBcUcsc0JBQXNCLEVBQUUseURBQXlELDBCQUEwQix5QkFBeUIscUJBQXFCLHFCQUFxQixFQUFFLHFCQUFxQixnQ0FBZ0MsZ0NBQWdDLHlCQUF5Qiw4QkFBOEIsMkJBQTJCLHdCQUF3QixtQkFBbUIsZ0JBQWdCLEVBQUUsMENBQTBDLDJCQUEyQiwyQkFBMkIsb0JBQW9CLGdDQUFnQyw2QkFBNkIsMEJBQTBCLEVBQUUsaUVBQWlFLDZCQUE2Qiw2QkFBNkIsc0JBQXNCLGtDQUFrQywrQkFBK0IsNEJBQTRCLEVBQUUsNkZBQTZGLDJCQUEyQiw4QkFBOEIsNkJBQTZCLHlCQUF5QixrQ0FBa0MsOEJBQThCLEVBQUUsNkNBQTZDLHlCQUF5Qix5QkFBeUIsa0JBQWtCLGlDQUFpQyxrQ0FBa0MsK0JBQStCLDJCQUEyQixxQkFBcUIsd0JBQXdCLHNCQUFzQixnQkFBZ0IsK0JBQStCLDRCQUE0Qix5QkFBeUIsRUFBRSxtREFBbUQsMkJBQTJCLDJCQUEyQixvQkFBb0IsZ0NBQWdDLDZCQUE2QiwwQkFBMEIsRUFBRSxrRUFBa0UsaUNBQWlDLDhCQUE4QiwyQkFBMkIsMEJBQTBCLDJCQUEyQixtQkFBbUIsbUNBQW1DLG9DQUFvQyxpQ0FBaUMsNkJBQTZCLHVCQUF1QixFQUFFLDJFQUEyRSxxQkFBcUIsRUFBRSwrQ0FBK0Msd0JBQXdCLHFCQUFxQixFQUFFLCtHQUErRywyR0FBMkcsbUdBQW1HLDJGQUEyRixtSEFBbUgsRUFBRSxrQ0FBa0MsOENBQThDLHNDQUFzQyxFQUFFLGFBQWEsd0JBQXdCLGdCQUFnQixFQUFFLCtCQUErQix1QkFBdUIsRUFBRSwrQkFBK0IsdUJBQXVCLEVBQUUsd0JBQXdCLHFCQUFxQix3QkFBd0IsRUFBRSw0QkFBNEIsZUFBZSxFQUFFLHNCQUFzQixlQUFlLEVBQUUsbUJBQW1CLHlCQUF5Qix5QkFBeUIsa0JBQWtCLDhCQUE4QiwyQkFBMkIsd0JBQXdCLEVBQUUsK0ZBQStGLDBCQUEwQixxQkFBcUIsdUJBQXVCLDRCQUE0Qix3QkFBd0IsRUFBRSxzQkFBc0IseUJBQXlCLHlCQUF5QixrQkFBa0IsOEJBQThCLDJCQUEyQix3QkFBd0IsZ0JBQWdCLGlCQUFpQixFQUFFLG1DQUFtQywrQkFBK0IsNEJBQTRCLDhCQUE4QixFQUFFLHVFQUF1RSx1QkFBdUIsOEJBQThCLEVBQUUsc0RBQXNELDhCQUE4QiwyQkFBMkIsd0JBQXdCLEVBQUUsMEJBQTBCLGlCQUFpQixFQUFFLCtCQUErQiwwQkFBMEIsaUJBQWlCLHFCQUFxQiw0QkFBNEIsd0JBQXdCLGdCQUFnQixFQUFFLGdDQUFnQywwQkFBMEIsaUJBQWlCLHFCQUFxQiw0QkFBNEIsd0JBQXdCLGdCQUFnQixFQUFFLDZCQUE2QixlQUFlLEVBQUUsNEZBQTRGLG1CQUFtQixrQkFBa0IsMEJBQTBCLEVBQUUsNEdBQTRHLHFCQUFxQiw0QkFBNEIsd0JBQXdCLEVBQUUsb0NBQW9DLHlCQUF5QixFQUFFLHdDQUF3Qyx5QkFBeUIseUJBQXlCLGtCQUFrQixpQ0FBaUMsa0NBQWtDLCtCQUErQiwyQkFBMkIsRUFBRSxrQ0FBa0Msd0JBQXdCLHVCQUF1QixtQkFBbUIsRUFBRSxnTUFBZ00saUJBQWlCLEVBQUUsOEJBQThCLHlCQUF5Qix5QkFBeUIsa0JBQWtCLHdCQUF3Qix1QkFBdUIsbUJBQW1CLGlCQUFpQixFQUFFLG9DQUFvQyxnQkFBZ0IsMEJBQTBCLHlCQUF5QixxQkFBcUIsbUNBQW1DLEVBQUUsbUNBQW1DLHlCQUF5Qix5QkFBeUIsa0JBQWtCLDhCQUE4QiwyQkFBMkIsd0JBQXdCLGlCQUFpQixnQkFBZ0IsRUFBRSx5Q0FBeUMsMEJBQTBCLHlCQUF5QixxQkFBcUIsRUFBRSx5Q0FBeUMsZ0JBQWdCLGtCQUFrQixFQUFFLHlEQUF5RCxtQkFBbUIsRUFBRSx5QkFBeUIsMEJBQTBCLHVCQUF1QixFQUFFLCtCQUErQixnQkFBZ0IsRUFBRSw4Q0FBOEMsMkJBQTJCLEVBQUUseUNBQXlDLDJCQUEyQixFQUFFLDhCQUE4Qix1QkFBdUIsOEJBQThCLDJCQUEyQiwwQkFBMEIsc0JBQXNCLEVBQUUsZ0NBQWdDLHlCQUF5Qix5QkFBeUIsa0JBQWtCLHdCQUF3QixtQkFBbUIsZUFBZSxFQUFFLDBHQUEwRyx5QkFBeUIseUJBQXlCLGtCQUFrQiw4QkFBOEIsMkJBQTJCLHdCQUF3Qix3QkFBd0IsNEJBQTRCLGlCQUFpQixrRUFBa0Usb0JBQW9CLHFCQUFxQixxQkFBcUIsaUJBQWlCLHVCQUF1Qiw0QkFBNEIsOEJBQThCLDJCQUEyQiwwQkFBMEIsc0JBQXNCLGdCQUFnQixFQUFFLHdCQUF3QixpQkFBaUIsRUFBRSxvR0FBb0csaUJBQWlCLFlBQVkseUJBQXlCLHVCQUF1QixXQUFXLGdCQUFnQixFQUFFLHVCQUF1Qix5QkFBeUIseUJBQXlCLGtCQUFrQixpQkFBaUIseUJBQXlCLGdCQUFnQixFQUFFLHlCQUF5Qix5QkFBeUIseUJBQXlCLGtCQUFrQix3QkFBd0IsbUJBQW1CLGVBQWUsZ0JBQWdCLGlCQUFpQiw4QkFBOEIsMkJBQTJCLHdCQUF3Qiw2QkFBNkIsMEJBQTBCLDRCQUE0Qix1QkFBdUIsRUFBRSxvREFBb0QsMEJBQTBCLEVBQUUsdURBQXVELHNCQUFzQixFQUFFLHNHQUFzRyxlQUFlLEVBQUUsd0JBQXdCLGlCQUFpQixZQUFZLG9CQUFvQixXQUFXLGdCQUFnQixFQUFFLHNCQUFzQix1QkFBdUIsOEJBQThCLDJCQUEyQiwwQkFBMEIsc0JBQXNCLGVBQWUsRUFBRSxvSEFBb0gsdUJBQXVCLGdCQUFnQixFQUFFLG9EQUFvRCx5Q0FBeUMsRUFBRSx5SEFBeUgscUJBQXFCLHdCQUF3QixnQkFBZ0IsdUJBQXVCLHlCQUF5Qix5QkFBeUIsa0JBQWtCLEVBQUUsa0NBQWtDLDBCQUEwQixxQkFBcUIsdUJBQXVCLG1CQUFtQiwyQkFBMkIsNEJBQTRCLG9CQUFvQixFQUFFLG1DQUFtQywwQkFBMEIscUJBQXFCLHVCQUF1QixtQkFBbUIsMkJBQTJCLDRCQUE0QixvQkFBb0IsRUFBRSx5QkFBeUIscUJBQXFCLHdCQUF3QixnQkFBZ0IsdUJBQXVCLHlCQUF5Qix5QkFBeUIsa0JBQWtCLEVBQUUscUNBQXFDLDBCQUEwQixxQkFBcUIsdUJBQXVCLG1CQUFtQiwyQkFBMkIsNEJBQTRCLG9CQUFvQixFQUFFLHNDQUFzQywwQkFBMEIscUJBQXFCLHVCQUF1QixtQkFBbUIsMkJBQTJCLDRCQUE0QixvQkFBb0IsRUFBRSw2R0FBNkcseUJBQXlCLHlCQUF5QixrQkFBa0IsaUNBQWlDLGtDQUFrQywrQkFBK0IsMkJBQTJCLHVCQUF1QixxQkFBcUIsRUFBRSx1REFBdUQsMkJBQTJCLDJCQUEyQixvQkFBb0IsMEJBQTBCLHFCQUFxQixpQkFBaUIsZ0NBQWdDLDZCQUE2QiwwQkFBMEIsc0JBQXNCLEVBQUUsaUdBQWlHLDRCQUE0QiwyQkFBMkIsdUJBQXVCLEVBQUUscUdBQXFHLDZCQUE2Qiw2QkFBNkIsc0JBQXNCLEVBQUUsNkhBQTZILDBCQUEwQixFQUFFLCtFQUErRSwyQkFBMkIsMkJBQTJCLG9CQUFvQiwwQkFBMEIseUJBQXlCLHFCQUFxQix5QkFBeUIsdUJBQXVCLEVBQUUsNkZBQTZGLG9CQUFvQixxQkFBcUIsRUFBRSxnQkFBZ0IsdUJBQXVCLEVBQUUsNEJBQTRCLHlCQUF5QiwyQkFBMkIsaUJBQWlCLEVBQUUsaURBQWlELGVBQWUsZ0JBQWdCLG9CQUFvQixtQkFBbUIsNEJBQTRCLEVBQUUsNkNBQTZDLGVBQWUsa0JBQWtCLG1CQUFtQixvQkFBb0IsMEJBQTBCLEVBQUUsa0RBQWtELGVBQWUsaUJBQWlCLG9CQUFvQixtQkFBbUIsNEJBQTRCLEVBQUUsK0NBQStDLGlCQUFpQixpQkFBaUIsb0JBQW9CLG1CQUFtQiwwQkFBMEIsRUFBRSxxREFBcUQsa0JBQWtCLGlCQUFpQixvQkFBb0IsbUJBQW1CLDRCQUE0QixFQUFFLGdEQUFnRCxrQkFBa0Isa0JBQWtCLG1CQUFtQixvQkFBb0IsMEJBQTBCLEVBQUUsb0RBQW9ELGtCQUFrQixnQkFBZ0Isb0JBQW9CLG1CQUFtQiw0QkFBNEIsRUFBRSw4Q0FBOEMsZ0JBQWdCLGlCQUFpQixvQkFBb0IsbUJBQW1CLDBCQUEwQixFQUFFLGdDQUFnQyxrQkFBa0IsbUJBQW1CLDJCQUEyQiwyQkFBMkIsb0JBQW9CLG1DQUFtQyxvQ0FBb0MsaUNBQWlDLDZCQUE2QixFQUFFLDBEQUEwRCw2QkFBNkIsNkJBQTZCLHNCQUFzQiw0QkFBNEIsMkJBQTJCLHVCQUF1QixpQ0FBaUMsOEJBQThCLGdDQUFnQyxrQ0FBa0MsK0JBQStCLDRCQUE0QixFQUFFLDZEQUE2RCw2QkFBNkIsNkJBQTZCLHNCQUFzQixpQ0FBaUMsOEJBQThCLGdDQUFnQyxFQUFFLG9HQUFvRyx1QkFBdUIseUJBQXlCLG1CQUFtQixFQUFFLHVCQUF1QixtQkFBbUIsdUJBQXVCLDhCQUE4QiwyQkFBMkIsMEJBQTBCLHNCQUFzQix5QkFBeUIsd0JBQXdCLG1CQUFtQixtQ0FBbUMsaUJBQWlCLHdCQUF3Qix1QkFBdUIsd0ZBQXdGLGdGQUFnRixlQUFlLGtDQUFrQywwQkFBMEIsNERBQTRELG9EQUFvRCw0REFBNEQsb0RBQW9ELDRDQUE0QywrREFBK0QsRUFBRSwrQkFBK0IsaUJBQWlCLGtDQUFrQywwQkFBMEIsRUFBRSw4QkFBOEIsd0JBQXdCLG1CQUFtQixrQ0FBa0MsbUNBQW1DLG1CQUFtQixnQ0FBZ0MsRUFBRSxnQ0FBZ0MsbUJBQW1CLEVBQUUsK0dBQStHLHNCQUFzQixlQUFlLG9EQUFvRCw0Q0FBNEMsK0NBQStDLHVDQUF1QyxFQUFFLDZCQUE2Qix1QkFBdUIsZUFBZSxFQUFFLHNCQUFzQiwwQkFBMEIsRUFBRSw4RkFBOEYscUJBQXFCLHFCQUFxQix1QkFBdUIsOEJBQThCLDJCQUEyQiwwQkFBMEIsc0JBQXNCLEVBQUUsb0NBQW9DLGtCQUFrQixtQkFBbUIsaUJBQWlCLEVBQUUsbUJBQW1CLG1CQUFtQixFQUFFLHlDQUF5Qyx1QkFBdUIsRUFBRSx1REFBdUQsMEJBQTBCLDZCQUE2QixFQUFFLDBCQUEwQix3QkFBd0IsRUFBRSw0REFBNEQsaUJBQWlCLEVBQUUsNEdBQTRHLG9CQUFvQixrQkFBa0IsRUFBRSwyQ0FBMkMsMkJBQTJCLDJCQUEyQixvQkFBb0IsZ0NBQWdDLDZCQUE2QiwwQkFBMEIsRUFBRSxvREFBb0QsNEJBQTRCLDJCQUEyQix1QkFBdUIsRUFBRSw4REFBOEQsdUNBQXVDLDRCQUE0QixtQkFBbUIsOEJBQThCLHlCQUF5QixxQkFBcUIsRUFBRSxnRUFBZ0UsMkJBQTJCLDJCQUEyQixvQkFBb0IsRUFBRSxzRkFBc0YsNkJBQTZCLDZCQUE2QixzQkFBc0IsNEJBQTRCLDJCQUEyQix1QkFBdUIsa0NBQWtDLCtCQUErQiw0QkFBNEIsNEJBQTRCLEVBQUUsNEdBQTRHLDhCQUE4QiwyQkFBMkIsd0JBQXdCLHlCQUF5Qix5QkFBeUIsa0JBQWtCLDBCQUEwQix1QkFBdUIsOEJBQThCLEVBQUUsbUNBQW1DLHlCQUF5Qix5QkFBeUIsa0JBQWtCLDhCQUE4QiwyQkFBMkIsd0JBQXdCLEVBQUUsZ0RBQWdELDJCQUEyQixFQUFFLHFEQUFxRCx5QkFBeUIsRUFBRSw4REFBOEQsMkJBQTJCLEVBQUUsa0hBQWtILHlCQUF5Qix5QkFBeUIsa0JBQWtCLHFCQUFxQixvQkFBb0IsOEJBQThCLDJCQUEyQiwwQkFBMEIsc0JBQXNCLGlCQUFpQixFQUFFLHdEQUF3RCx1QkFBdUIsc0JBQXNCLEVBQUUsdUVBQXVFLDhCQUE4QiwyQkFBMkIsd0JBQXdCLHlCQUF5Qix5QkFBeUIsa0JBQWtCLG1DQUFtQyxrQ0FBa0MsNEJBQTRCLHdCQUF3QiwwQkFBMEIsc0JBQXNCLDRCQUE0Qix3QkFBd0IsRUFBRSxpUkFBaVIsMEJBQTBCLHlCQUF5QixxQkFBcUIsdUJBQXVCLDhCQUE4QixFQUFFLGdDQUFnQyx5QkFBeUIseUJBQXlCLGtCQUFrQixFQUFFLHNDQUFzQyx1QkFBdUIsaUJBQWlCLHVCQUF1QixXQUFXLGVBQWUsZUFBZSxFQUFFLDhDQUE4Qyx1Q0FBdUMsK0JBQStCLEVBQUUsOENBQThDLHdDQUF3QyxnQ0FBZ0MsRUFBRSxxQkFBcUIsOEJBQThCLGlCQUFpQixpQkFBaUIsdUJBQXVCLGNBQWMsZ0JBQWdCLGVBQWUsRUFBRSxxQkFBcUIsaUJBQWlCLGdCQUFnQixFQUFFLHNCQUFzQixpQkFBaUIsZ0JBQWdCLEVBQUUsMkJBQTJCLHlCQUF5Qix5QkFBeUIsa0JBQWtCLDhCQUE4QiwyQkFBMkIsd0JBQXdCLGlCQUFpQixxQkFBcUIsdUJBQXVCLDRCQUE0QixFQUFFLDhCQUE4Qix5QkFBeUIseUJBQXlCLGtCQUFrQiw4QkFBOEIsMkJBQTJCLG1DQUFtQyxtQ0FBbUMsbUNBQW1DLG9DQUFvQyxnQ0FBZ0MsOEJBQThCLDJCQUEyQix3QkFBd0IsZ0JBQWdCLEVBQUUsaURBQWlELG1DQUFtQyxrQ0FBa0MsNEJBQTRCLHdCQUF3QixFQUFFLHNHQUFzRyx5QkFBeUIseUJBQXlCLGtCQUFrQixtQ0FBbUMsbUNBQW1DLG9DQUFvQyxnQ0FBZ0MsRUFBRSw4Q0FBOEMscUJBQXFCLDBCQUEwQixvQkFBb0Isc0JBQXNCLEVBQUUsbUVBQW1FLGlDQUFpQyw2QkFBNkIseUJBQXlCLDBDQUEwQyxnQ0FBZ0Msa0NBQWtDLEVBQUUsbUNBQW1DLG1CQUFtQixFQUFFLDhDQUE4QyxtQkFBbUIsRUFBRSxxRUFBcUUsZ0NBQWdDLDRCQUE0Qix3QkFBd0Isc0NBQXNDLDRCQUE0Qiw4QkFBOEIsRUFBRSwwR0FBMEcseUJBQXlCLHlCQUF5QixrQkFBa0IsOEJBQThCLDJCQUEyQixtQ0FBbUMscUJBQXFCLEVBQUUscUNBQXFDLGtDQUFrQyxrQ0FBa0MsMkJBQTJCLEVBQUUseUJBQXlCLGdDQUFnQyxnQ0FBZ0MseUJBQXlCLEVBQUUsMkJBQTJCLGdDQUFnQyxnQ0FBZ0MseUJBQXlCLEVBQUUsMEJBQTBCLGdDQUFnQyxnQ0FBZ0MseUJBQXlCLEVBQUUsNEdBQTRHLHVCQUF1Qix3QkFBd0IsdUJBQXVCLG1CQUFtQixFQUFFLHVEQUF1RCwyQkFBMkIsMkJBQTJCLG9CQUFvQixnQ0FBZ0MsNkJBQTZCLDBCQUEwQixFQUFFLHFEQUFxRCwyQkFBMkIsMkJBQTJCLG9CQUFvQixnQ0FBZ0MsNkJBQTZCLDBCQUEwQixFQUFFLHVEQUF1RCwyQkFBMkIsMkJBQTJCLG9CQUFvQixtQ0FBbUMsb0NBQW9DLGlDQUFpQyw2QkFBNkIsRUFBRSw0RUFBNEUsNkJBQTZCLDZCQUE2QixzQkFBc0IscUNBQXFDLDRCQUE0QixFQUFFLHdDQUF3QywyQkFBMkIsMkJBQTJCLG9CQUFvQiwwQkFBMEIseUJBQXlCLHFCQUFxQixnQ0FBZ0MsNkJBQTZCLDBCQUEwQixFQUFFLG1FQUFtRSwyQkFBMkIsRUFBRSxrSUFBa0ksb0JBQW9CLEVBQUUsa0RBQWtELG1DQUFtQywyQkFBMkIsdUJBQXVCLGNBQWMsRUFBRSxxQkFBcUIseUJBQXlCLHlCQUF5QixrQkFBa0IsbUNBQW1DLGtDQUFrQyw0QkFBNEIsd0JBQXdCLDhCQUE4QiwyQkFBMkIsd0JBQXdCLEVBQUUsNkVBQTZFLDBCQUEwQix5QkFBeUIscUJBQXFCLGtCQUFrQixtQkFBbUIsRUFBRSxxQkFBcUIseUJBQXlCLHlCQUF5QixrQkFBa0IsOEJBQThCLDJCQUEyQix3QkFBd0IsRUFBRSw4RkFBOEYseUJBQXlCLHlCQUF5QixrQkFBa0IsRUFBRSxnSEFBZ0gsMEJBQTBCLHlCQUF5QixxQkFBcUIsRUFBRSxzQkFBc0IseUJBQXlCLHlCQUF5QixrQkFBa0IsOEJBQThCLDJCQUEyQix3QkFBd0IsRUFBRSwrREFBK0QscUJBQXFCLHlCQUF5QixFQUFFLDhEQUE4RCx5QkFBeUIsRUFBRSxzQkFBc0IseUJBQXlCLHlCQUF5QixrQkFBa0IsOEJBQThCLDJCQUEyQix3QkFBd0IsRUFBRSw2Q0FBNkMsMkJBQTJCLDJCQUEyQixvQkFBb0IsZ0JBQWdCLGlCQUFpQixnQkFBZ0IsRUFBRSxvQ0FBb0MsK0JBQStCLDRCQUE0Qix5QkFBeUIscUJBQXFCLEVBQUUsNkJBQTZCLG9CQUFvQixFQUFFLDRDQUE0QyxpQ0FBaUMsc0JBQXNCLGFBQWEsRUFBRSw0Q0FBNEMsd0JBQXdCLG1CQUFtQixlQUFlLEVBQUUsb0NBQW9DLGlDQUFpQyxrQ0FBa0MsK0JBQStCLDJCQUEyQiw2QkFBNkIsMEJBQTBCLDRCQUE0QixFQUFFLDBDQUEwQyxtQ0FBbUMsMEJBQTBCLEVBQUUscUJBQXFCLHlCQUF5Qix5QkFBeUIsa0JBQWtCLGlDQUFpQyxrQ0FBa0MsK0JBQStCLDJCQUEyQix1QkFBdUIsRUFBRSx3Q0FBd0MsMEJBQTBCLHlCQUF5QixxQkFBcUIseUJBQXlCLHVCQUF1QixzQkFBc0IsRUFBRSw4QkFBOEIseUJBQXlCLGFBQWEsY0FBYyxlQUFlLGdCQUFnQixFQUFFLHNDQUFzQyxzQkFBc0IsRUFBRSwwQ0FBMEMseUJBQXlCLDJCQUEyQixzQkFBc0IsRUFBRSxzQ0FBc0Msc0JBQXNCLHdPQUF3TyxzSUFBc0ksRUFBRSx3Q0FBd0Msc0JBQXNCLEVBQUUsaURBQWlELGtCQUFrQixtQkFBbUIsRUFBRSxtREFBbUQseUdBQXlHLDJFQUEyRSxrQkFBa0IsbUJBQW1CLEVBQUUsbUNBQW1DLHNCQUFzQixFQUFFLHlDQUF5Qyx5QkFBeUIsMkJBQTJCLEVBQUUsNkNBQTZDLDRCQUE0Qix5QkFBeUIsdUJBQXVCLDBCQUEwQixFQUFFLG1EQUFtRCxvQkFBb0Isd0JBQXdCLEVBQUUsdUNBQXVDLDJCQUEyQiwyQkFBMkIsb0JBQW9CLEVBQUUsK0NBQStDLHdCQUF3QixFQUFFLG9DQUFvQyx1QkFBdUIsRUFBRSxvQ0FBb0Msd0JBQXdCLEVBQUUsb0NBQW9DLHVCQUF1QixFQUFFLG9DQUFvQyx3QkFBd0IsRUFBRSxvQ0FBb0MsdUJBQXVCLEVBQUUsb0NBQW9DLHdCQUF3QixFQUFFLG9DQUFvQyx1QkFBdUIsRUFBRSxvQ0FBb0Msd0JBQXdCLEVBQUUsb0NBQW9DLHVCQUF1QixFQUFFLG9DQUFvQyx3QkFBd0IsRUFBRSxvQ0FBb0MsdUJBQXVCLEVBQUUsb0NBQW9DLHdCQUF3QixFQUFFLG9DQUFvQyx1QkFBdUIsRUFBRSxvQ0FBb0Msd0JBQXdCLEVBQUUsb0NBQW9DLHVCQUF1QixFQUFFLG9DQUFvQyx3QkFBd0IsRUFBRSxvQ0FBb0MsdUJBQXVCLEVBQUUsb0NBQW9DLHdCQUF3QixFQUFFLG9DQUFvQyx1QkFBdUIsRUFBRSxvQ0FBb0Msd0JBQXdCLEVBQUUsb0NBQW9DLHVCQUF1QixFQUFFLG9DQUFvQyx3QkFBd0IsRUFBRSxvQ0FBb0MsdUJBQXVCLEVBQUUsb0NBQW9DLHdCQUF3QixFQUFFLG9DQUFvQyx1QkFBdUIsRUFBRSxvQ0FBb0Msd0JBQXdCLEVBQUUsb0NBQW9DLHVCQUF1QixFQUFFLG9DQUFvQyx3QkFBd0IsRUFBRSxvQ0FBb0MsdUJBQXVCLEVBQUUsb0NBQW9DLHdCQUF3QixFQUFFLG9DQUFvQyx1QkFBdUIsRUFBRSxvQ0FBb0Msd0JBQXdCLEVBQUUsb0NBQW9DLHVCQUF1QixFQUFFLG9DQUFvQyx3QkFBd0IsRUFBRSxvQ0FBb0MsdUJBQXVCLEVBQUUsb0NBQW9DLHdCQUF3QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUscUNBQXFDLHlCQUF5QixFQUFFLHFDQUFxQyx3QkFBd0IsRUFBRSxxQ0FBcUMseUJBQXlCLEVBQUUscUNBQXFDLHdCQUF3QixFQUFFLHFDQUFxQyx5QkFBeUIsRUFBRSxhQUFhLG1CQUFtQixFQUFFLGdL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MEIsRUFBRSwwREFBMEQsMEJBQTBCLEVBQUUsMERBQTBELDJCQUEyQixFQUFFLDBEQUEwRCwwQkFBMEIsRUFBRSwwREFBMEQsMkJBQTJCLEVBQUUsMERBQTBELDBCQUEwQixFQUFFLDBEQUEwRCwyQkFBMkIsRUFBRSwwREFBMEQsMEJBQTBCLEVBQUUsMERBQTBELDJCQUEyQixFQUFFLDBEQUEwRCwwQkFBMEIsRUFBRSwwREFBMEQsMkJBQTJCLEVBQUUsMERBQTBELDBCQUEwQixFQUFFLDBEQUEwRCwyQkFBMkIsRUFBRSwwREFBMEQsMEJBQTBCLEVBQUUsMERBQTBELDJCQUEyQixFQUFFLDBEQUEwRCwwQkFBMEIsRUFBRSwwREFBMEQsMkJBQTJCLEVBQUUsMERBQTBELDBCQUEwQixFQUFFLDBEQUEwRCwyQkFBMkIsRUFBRSwwREFBMEQsMEJBQTBCLEVBQUUsMERBQTBELDJCQUEyQixFQUFFLDBEQUEwRCwwQkFBMEIsRUFBRSwwREFBMEQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsNEJBQTRCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDRCQUE0QixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSwyREFBMkQsMkJBQTJCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCw0QkFBNEIsRUFBRSwyREFBMkQsMEJBQTBCLEVBQUUsMkRBQTJELDJCQUEyQixFQUFFLDJEQUEyRCwyQkFBMkIsRUFBRSwyREFBMkQsNEJBQTRC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QXFELDJCQUEyQixFQUFFLHFEQUFxRCwwQkFBMEIsRUFBRSxxREFBcUQsMkJBQTJCLEVBQUUscURBQXFELDBCQUEwQixFQUFFLHFEQUFxRCwyQkFBMkIsRUFBRSxxREFBcUQsMEJBQTBCLEVBQUUscURBQXFELDJCQUEyQixFQUFFLHFEQUFxRCwwQkFBMEIsRUFBRSxxREFBcUQsMkJBQTJCLEVBQUUscURBQXFELDBCQUEwQixFQUFFLHFEQUFxRCwyQkFBMkIsRUFBRSxxREFBcUQsMEJBQTBCLEVBQUUscURBQXFELDJCQUEyQixFQUFFLHFEQUFxRCwwQkFBMEIsRUFBRSxxREFBcUQsMkJBQTJCLEVBQUUscURBQXFELDBCQUEwQixFQUFFLHFEQUFxRCwyQkFBMkIsRUFBRSxxREFBcUQsMEJBQTBCLEVBQUUscURBQXFELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDRCQUE0QixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCw0QkFBNEIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsNEJBQTRCLEVBQUUsc0RBQXNELDBCQUEwQixFQUFFLHNEQUFzRCwyQkFBMkIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDRCQUE0QixFQUFFLHNEQUFzRCwwQkFBMEIsRUFBRSxzREFBc0QsMkJBQTJCLEVBQUUsc0RBQXNELDJCQUEyQixFQUFFLHNEQUFz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LEVBQUUsdURBQXVELDJCQUEyQixFQUFFLHVEQUF1RCwwQkFBMEIsRUFBRSx1REFBdUQsMkJBQTJCLEVBQUUsdURBQXVELDBCQUEwQixFQUFFLHVEQUF1RCwyQkFBMkIsRUFBRSx1REFBdUQsMEJBQTBCLEVBQUUsdURBQXVELDJCQUEyQixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDBCQUEwQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMEJBQTBCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSx3REFBd0QsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixFQUFFLHdEQUF3RCwyQkFBMkIsRUFBRSx3REFBd0QsNEJBQTRCLEVBQUUsd0RBQXdELDJCQUEyQixFQUFFLHdEQUF3RCw0QkFBNEIsRUFBRSwwQ0FBMEMsNEJBQTRCLDZCQUE2QixFQUFFLGdIQUFnSCwyQkFBMkIsMkJBQTJCLG9CQUFvQixnQ0FBZ0MsaUNBQWlDLGtDQUFrQyxzQkFBc0IsRUFBRSxvSUFBb0ksd0JBQXdCLEVBQUUsd0pBQXdKLG9CQUFvQixFQUFFLGtOQUFrTix5QkFBeUIsRUFBRSxpQ0FBaUMsbURBQW1ELEVBQUUsMERBQTBELHdCQUF3QixFQUFFLHlDQUF5QywwQ0FBMEMsRUFBRSx1SkFBdUoscUNBQXFDLEVBQUUsbUpBQW1KLHNDQUFzQyxFQUFFLDBEQUEwRCx5QkFBeUIsRUFBRSx5Q0FBeUMseUNBQXlDLEVBQUUsdUpBQXVKLHFDQUFxQyxFQUFFLG1KQUFtSixzQ0FBc0MsRUFBRSwrQ0FBK0MseUJBQXlCLEVBQUUsa0RBQWtELHFCQUFxQixFQUFFLG9EQUFvRCxxQkFBcUIsRUFBRSwrQ0FBK0Msb0NBQW9DLHlCQUF5Qix3QkFBd0IseUJBQXlCLDhDQUE4QyxzQ0FBc0MsRUFBRSx5REFBeUQsZ0NBQWdDLGdEQUFnRCx3Q0FBd0MsRUFBRSw2WEFBNlgsOEJBQThCLGlDQUFpQywyQkFBMkIseUJBQXlCLG1CQUFtQiwwQkFBMEIsc0JBQXNCLHVDQUF1QyxFQUFFLDZhQUE2YSx5Q0FBeUMsc0JBQXNCLEVBQUUsMmlCQUEyaUIsbUNBQW1DLEVBQUUscWZBQXFmLG1DQUFtQyxFQUFFLDZnQkFBNmdCLG1DQUFtQyxFQUFFLG1oQkFBbWhCLG1DQUFtQyxFQUFFLHVkQUF1ZCxtQ0FBbUMsRUFBRSwrYkFBK2IseUNBQXlDLEVBQUUsK2JBQStiLG1DQUFtQyxFQUFFLCtEQUErRCwwQkFBMEIsNkJBQTZCLDZCQUE2QixFQUFFLGdFQUFnRSxpQkFBaUIsRUFBRSxtREFBbUQsOEJBQThCLGlDQUFpQywyQkFBMkIseUJBQXlCLG1CQUFtQiwwQkFBMEIsc0JBQXNCLHVDQUF1QyxFQUFFLDJEQUEyRCx5Q0FBeUMsc0JBQXNCLEVBQUUsZ0ZBQWdGLG1DQUFtQyxFQUFFLHVFQUF1RSxtQ0FBbUMsRUFBRSwyRUFBMkUsbUNBQW1DLEVBQUUsNEVBQTRFLG1DQUFtQyxFQUFFLGtFQUFrRSxtQ0FBbUMsRUFBRSw4REFBOEQseUNBQXlDLEVBQUUsOERBQThELG1DQUFtQyxFQUFFLG1DQUFtQyw2QkFBNkIsaUNBQWlDLHVCQUF1QixzQkFBc0IsMENBQTBDLHVDQUF1QyxFQUFFLGdEQUFnRCxxQ0FBcUMsRUFBRSwrQ0FBK0Msc0NBQXNDLEVBQUUsdUNBQXVDLG1CQUFtQixFQUFFLGdDQUFnQywwQkFBMEIsNEJBQTRCLHNCQUFzQixFQUFFLHFEQUFxRCw4QkFBOEIsRUFBRSw4Q0FBOEMsaUNBQWlDLEVBQUUsbURBQW1ELHNDQUFzQyxFQUFFLHdFQUF3RSwyQkFBMkIsRUFBRSxvREFBb0QscUNBQXFDLEVBQUUseUVBQXlFLDBCQUEwQixFQUFFLHNDQUFzQyxnQ0FBZ0MsRUFBRSx5Q0FBeUMsd0JBQXdCLEVBQUUsOERBQThELHVCQUF1QixvQkFBb0IsRUFBRSxxRkFBcUYsMEJBQTBCLDRCQUE0Qix5QkFBeUIsMEJBQTBCLHNCQUFzQixFQUFFLHFJQUFxSSxrQ0FBa0MsRUFBRSxpS0FBaUssOEJBQThCLEVBQUUsd0lBQXdJLDBCQUEwQixFQUFFLGtxQkFBa3FCLGdDQUFnQyxFQUFFLCtDQUErQyx5QkFBeUIsRUFBRSw4Q0FBOEMseUJBQXlCLEVBQUUsaUNBQWlDLHdCQUF3Qix5QkFBeUIsMEJBQTBCLG9DQUFvQyx5QkFBeUIsMEJBQTBCLEVBQUUscUNBQXFDLG1CQUFtQiwyQkFBMkIsbUJBQW1CLHNCQUFzQixFQUFFLDJGQUEyRixtQkFBbUIsRUFBRSx3Q0FBd0MsbUJBQW1CLDJCQUEyQixtQkFBbUIsRUFBRSx5Q0FBeUMsbUJBQW1CLEVBQUUsc2hCQUFzaEIsZ0NBQWdDLHVCQUF1QixFQUFFLCtDQUErQyxrQkFBa0IsRUFBRSxpQ0FBaUMsdUJBQXVCLHlCQUF5Qiw4SEFBOEgsOEhBQThILG1CQUFtQixpQkFBaUIsRUFBRSxpREFBaUQsd0JBQXdCLDJCQUEyQix3QkFBd0Isb0JBQW9CLEVBQUUsMERBQTBELGtDQUFrQyxFQUFFLDREQUE0RCxxQkFBcUIsRUFBRSx3REFBd0QseUJBQXlCLEVBQUUsd0RBQXdELDBCQUEwQiwyQkFBMkIsd0JBQXdCLEVBQUUsNERBQTRELDJCQUEyQixFQUFFLHNEQUFzRCxxQkFBcUIsRUFBRSwrREFBK0QsdVNBQXVTLEVBQUUsaUVBQWlFLG9CQUFvQiwyQkFBMkIsRUFBRSxxQ0FBcUMsdUJBQXVCLHlCQUF5Qiw4SEFBOEgsOEhBQThILG1CQUFtQixnQ0FBZ0MsaUNBQWlDLHVCQUF1QixzQkFBc0IsMENBQTBDLDhCQUE4Qix3QkFBd0IsZ0JBQWdCLHNCQUFzQiwwQ0FBMEMsMENBQTBDLEVBQUUsc0ZBQXNGLHFCQUFxQixrQkFBa0IsbUJBQW1CLEVBQUUsMERBQTBELDBCQUEwQixzQkFBc0IsRUFBRSx1Q0FBdUMsdUJBQXVCLHVCQUF1QixrQkFBa0IsMkJBQTJCLDJCQUEyQixvQkFBb0IsRUFBRSxpREFBaUQsNkJBQTZCLDZCQUE2QixzQkFBc0IsNkNBQTZDLHFCQUFxQiw0QkFBNEIsMkJBQTJCLDJCQUEyQixrQ0FBa0MsbUNBQW1DLG9DQUFvQyxpQ0FBaUMsa0NBQWtDLHdDQUF3Qyw0QkFBNEIsK0JBQStCLCtCQUErQixFQUFFLHFDQUFxQyxxQkFBcUIsRUFBRSxxREFBcUQseUJBQXlCLHNCQUFzQixFQUFFLGdGQUFnRix5QkFBeUIsRUFBRSwrRUFBK0UsNEJBQTRCLEVBQUUsd0dBQXdHLG1DQUFtQyxFQUFFLG9HQUFvRyx5QkFBeUIsRUFBRSxtREFBbUQsb0JBQW9CLEVBQUUscURBQXFELHVCQUF1Qix3QkFBd0IsRUFBRSxxREFBcUQsa0JBQWtCLEVBQUUseURBQXlELDBCQUEwQixrQkFBa0IsbUJBQW1CLDBCQUEwQixFQUFFLCtHQUErRyx3QkFBd0IsRUFBRSx1REFBdUQsb0JBQW9CLEVBQUUsdURBQXVELG1CQUFtQiwyQkFBMkIsMkJBQTJCLG9CQUFvQixnQ0FBZ0MsaUNBQWlDLGtDQUFrQyxFQUFFLHlIQUF5SCx5QkFBeUIsNkJBQTZCLDZCQUE2QixzQkFBc0IsRUFBRSw0RUFBNEUsdUNBQXVDLEVBQUUsMERBQTBELDJCQUEyQiwyQkFBMkIsb0JBQW9CLDRCQUE0Qiw2QkFBNkIsd0NBQXdDLG1CQUFtQix3QkFBd0IsRUFBRSxtRUFBbUUseUJBQXlCLGlDQUFpQyxpQ0FBaUMsaUNBQWlDLHNDQUFzQyxrQkFBa0IsdUJBQXVCLDZCQUE2QiwyQkFBMkIsa0JBQWtCLG1CQUFtQixrQ0FBa0MsRUFBRSw0RUFBNEUsMEJBQTBCLEVBQUUsK0pBQStKLG1CQUFtQixFQUFFLGlwQkFBaXBCLHlCQUF5QiwwQkFBMEIsRUFBRSw0RUFBNEUsb0NBQW9DLHVCQUF1QixFQUFFLG9GQUFvRix3QkFBd0IsRUFBRSwyR0FBMkcsd0JBQXdCLEVBQUUsc0RBQXNELG9DQUFvQyxtQkFBbUIsZ0NBQWdDLGlDQUFpQyxrQ0FBa0MsRUFBRSw4REFBOEQsd0JBQXdCLHNCQUFzQixFQUFFLHdFQUF3RSx5QkFBeUIsMEJBQTBCLEVBQUUsK0NBQStDLHNCQUFzQixFQUFFLGtFQUFrRSxvQkFBb0IsRUFBRSxrR0FBa0cscUNBQXFDLDJCQUEyQiw4QkFBOEIsNkJBQTZCLDZCQUE2Qix1Q0FBdUMsd0NBQXdDLHlDQUF5Qyx5Q0FBeUMsZ0NBQWdDLGdDQUFnQywrQkFBK0IsK0JBQStCLHdCQUF3Qix1Q0FBdUMsdUNBQXVDLEVBQUUsZ0lBQWdJLDJCQUEyQixFQUFFLHdJQUF3SSw2QkFBNkIsRUFBRSw0RkFBNEYsMkJBQTJCLEVBQUUsbUZBQW1GLG9DQUFvQyx5QkFBeUIsMEJBQTBCLHlCQUF5QixFQUFFLHNFQUFzRSxxQkFBcUIsNkJBQTZCLDZCQUE2QixzQkFBc0IsNEJBQTRCLDJCQUEyQiwyQkFBMkIsRUFBRSw4RkFBOEYsK0JBQStCLCtCQUErQix3QkFBd0Isb0NBQW9DLHFDQUFxQyxzQ0FBc0MsMkJBQTJCLEVBQUUseUVBQXlFLHlDQUF5Qyw0QkFBNEIsdUJBQXVCLEVBQUUsaUVBQWlFLHlDQUF5Qyx1QkFBdUIsNkJBQTZCLEVBQUUsaUdBQWlHLHFDQUFxQywyQkFBMkIsMEJBQTBCLDhDQUE4Qyw2QkFBNkIsNkJBQTZCLDBCQUEwQixFQUFFLHdGQUF3RiwwQkFBMEIsMEJBQTBCLEVBQUUsd0ZBQXdGLDJCQUEyQiw0QkFBNEIsRUFBRSw4RUFBOEUsMkJBQTJCLEVBQUUsaUZBQWlGLHFCQUFxQix3QkFBd0IsRUFBRSx5Q0FBeUMsb0NBQW9DLGlDQUFpQyxtQkFBbUIsc0JBQXNCLEVBQUUsa0RBQWtELDBCQUEwQixFQUFFLCtEQUErRCxrQkFBa0IsbUJBQW1CLEVBQUUsK0VBQStFLHNCQUFzQixpQkFBaUIsYUFBYSxlQUFlLGdCQUFnQixjQUFjLEVBQUUsNkZBQTZGLGlDQUFpQyxvQkFBb0IsRUFBRSwyRkFBMkYsc0JBQXNCLEVBQUUsMkRBQTJELG9CQUFvQixFQUFFLHlDQUF5Qyw2QkFBNkIsRUFBRSw0TEFBNEwsb0NBQW9DLEVBQUUsa09BQWtPLGtDQUFrQyxFQUFFLHNPQUFzTyxvQ0FBb0MsRUFBRSx3T0FBd08scUNBQXFDLEVBQUUsb09BQW9PLG1DQUFtQyxFQUFFLG9FQUFvRSxpREFBaUQsRUFBRSwwRkFBMEYsZ0RBQWdELEVBQUUsdUhBQXVILGlEQUFpRCxFQUFFLHNFQUFzRSxpREFBaUQsRUFBRSxzRUFBc0UsaURBQWlELEVBQUUsc0VBQXNFLGlEQUFpRCxFQUFFLHNFQUFzRSxpREFBaUQsRUFBRSwwR0FBMEcscUNBQXFDLEVBQUUsMEtBQTBLLHVDQUF1QyxFQUFFLDhHQUE4Ryx1Q0FBdUMsRUFBRSw4S0FBOEsseUNBQXlDLEVBQUUsZ0hBQWdILHdDQUF3QyxFQUFFLGdMQUFnTCwwQ0FBMEMsRUFBRSw0R0FBNEcsc0NBQXNDLEVBQUUsNEtBQTRLLHdDQUF3QyxFQUFFLDZFQUE2RSx5QkFBeUIsaUJBQWlCLGtCQUFrQixtQkFBbUIsa0JBQWtCLGdDQUFnQyxFQUFFLHdDQUF3QyxtQkFBbUIsRUFBRSx5Q0FBeUMsMEJBQTBCLEVBQUUsd0RBQXdELG9CQUFvQixtQkFBbUIsRUFBRSxxR0FBcUcsdUJBQXVCLHlCQUF5Qiw4SEFBOEgsOEhBQThILG1CQUFtQixnQ0FBZ0MsRUFBRSx5Q0FBeUMsaUJBQWlCLEVBQUUsdUVBQXVFLHFCQUFxQixzQkFBc0IsRUFBRSx3Q0FBd0MsZ0NBQWdDLEVBQUUsK0RBQStELHFCQUFxQixzQkFBc0IsRUFBRSxnRUFBZ0UsOEJBQThCLHFCQUFxQixFQUFFLGdFQUFnRSx3QkFBd0IscUJBQXFCLEVBQUUsd0VBQXdFLG9DQUFvQyxFQUFFLDhEQUE4RCwyQkFBMkIsRUFBRSx1RUFBdUUsK0JBQStCLEVBQUUsMkRBQTJELHdCQUF3QixFQUFFLDBEQUEwRCwrQkFBK0IsK0JBQStCLCtCQUErQiw4QkFBOEIsZ0JBQWdCLG1CQUFtQixpQkFBaUIsa0JBQWtCLEVBQUUsNHNCQUE0c0Isd0JBQXdCLEVBQUUsc1VBQXNVLHdCQUF3QixFQUFFLDhDQUE4Qyx1QkFBdUIsRUFBRSxvREFBb0QseUJBQXlCLEVBQUUsbURBQW1ELDZCQUE2QixtQkFBbUIseUJBQXlCLEVBQUUsdUlBQXVJLDJCQUEyQixFQUFFLGtKQUFrSixzQkFBc0Isc0JBQXNCLEVBQUUsbUZBQW1GLHNCQUFzQixFQUFFLDZDQUE2QywwQkFBMEIsMEJBQTBCLHVCQUF1QixxQkFBcUIsRUFBRSx5RUFBeUUsc0JBQXNCLEVBQUUsMkVBQTJFLHdCQUF3QixzQkFBc0Isc0JBQXNCLEVBQUUsbUZBQW1GLHdCQUF3QixFQUFFLCtEQUErRCwwQkFBMEIsRUFBRSxzRUFBc0Usc0JBQXNCLEVBQUUsa0RBQWtELHVCQUF1Qix5QkFBeUIsOEhBQThILDhIQUE4SCxtQkFBbUIsdUJBQXVCLG9CQUFvQixpQkFBaUIsRUFBRSwwRUFBMEUsd0JBQXdCLDBCQUEwQiwyQkFBMkIsRUFBRSxrR0FBa0csa0JBQWtCLEVBQUUsd0VBQXdFLHVCQUF1QixvQkFBb0IsRUFBRSw4Q0FBOEMsMkNBQTJDLEVBQUUsd0RBQXdELG9DQUFvQyw4Q0FBOEMsc0NBQXNDLEVBQUUsc0NBQXNDLHlCQUF5Qix1QkFBdUIsRUFBRSx5REFBeUQscUNBQXFDLHFDQUFxQywyQ0FBMkMsMkNBQTJDLG9EQUFvRCxvREFBb0Qsa0RBQWtELGtEQUFrRCxFQUFFLDZCQUE2QixVQUFVLHNDQUFzQyxzQ0FBc0MsRUFBRSxRQUFRLHdDQUF3Qyx3Q0FBd0MsRUFBRSxFQUFFLHFCQUFxQixVQUFVLHNDQUFzQyxzQ0FBc0MsRUFBRSxRQUFRLHdDQUF3Qyx3Q0FBd0MsRUFBRSxFQUFFLHlEQUF5RCx5QkFBeUIsd0JBQXdCLEVBQUUseUNBQXlDLHVDQUF1QyxFQUFFLDRDQUE0QyxvQ0FBb0MsRUFBRSx1Q0FBdUMsdUJBQXVCLGdDQUFnQywwQkFBMEIsaUNBQWlDLHVCQUF1QixzQkFBc0IsMENBQTBDLDBCQUEwQix5QkFBeUIsdUJBQXVCLEVBQUUsNkNBQTZDLGlDQUFpQyxFQUFFLDhDQUE4Qyx5QkFBeUIsRUFBRSx1Q0FBdUMsdUJBQXVCLHdCQUF3Qix3QkFBd0IsMkJBQTJCLEVBQUUsd0NBQXdDLG9CQUFvQixFQUFFLG9EQUFvRCxpREFBaUQsRUFBRSxtREFBbUQsdUJBQXVCLHlCQUF5Qiw4SEFBOEgsOEhBQThILG1CQUFtQixFQUFFLHFDQUFxQyxnQ0FBZ0MsZ0NBQWdDLDJCQUEyQix5QkFBeUIsRUFBRSx3REFBd0QsMEJBQTBCLHlCQUF5QixvQkFBb0IsMkJBQTJCLEVBQUUsaUZBQWlGLGtDQUFrQyxvQkFBb0IscUNBQXFDLGlDQUFpQyxzQkFBc0Isb0JBQW9CLDRCQUE0QixvQ0FBb0MsOEJBQThCLG9DQUFvQyx3Q0FBd0Msd0NBQXdDLHVDQUF1QyxFQUFFLDhFQUE4RSxvQ0FBb0MsNEJBQTRCLDRCQUE0QixnQ0FBZ0MsRUFBRSwyREFBMkQsd0NBQXdDLEVBQUUsc0VBQXNFLHdCQUF3QixFQUFFLHVEQUF1RCx5QkFBeUIsRUFBRSx3REFBd0QsdUJBQXVCLHdCQUF3QixFQUFFLDRDQUE0QyxnQ0FBZ0MsbUJBQW1CLDhCQUE4Qiw0QkFBNEIsRUFBRSxvTUFBb00scUJBQXFCLEVBQUUsNEVBQTRFLGtDQUFrQyxxQkFBcUIsd0JBQXdCLDRDQUE0QyxxQkFBcUIsRUFBRSx5RUFBeUUsdUJBQXVCLEVBQUUsbUdBQW1HLHVCQUF1QixxQkFBcUIsRUFBRSw0SEFBNEgsd0JBQXdCLEVBQUUsMEVBQTBFLGtDQUFrQyxxQkFBcUIsZ0NBQWdDLEVBQUUsOEVBQThFLDBCQUEwQixxQkFBcUIsRUFBRSw2REFBNkQsc0JBQXNCLEVBQUUsNkZBQTZGLHVCQUF1QixFQUFFLDBDQUEwQyx3QkFBd0IsMEJBQTBCLEVBQUUsNkRBQTZELHlCQUF5QixFQUFFLHdKQUF3Six3QkFBd0IsRUFBRSxrRkFBa0Ysa0JBQWtCLG1CQUFtQiwwQkFBMEIscURBQXFELHFEQUFxRCxnQ0FBZ0MsRUFBRSxpRkFBaUYsZUFBZSxpQkFBaUIsaUJBQWlCLGtCQUFrQix3QkFBd0IsdUJBQXVCLHlCQUF5QixnQ0FBZ0MsRUFBRSw0REFBNEQsbUJBQW1CLGtCQUFrQiw2QkFBNkIsNkJBQTZCLDRCQUE0QixFQUFFLHVFQUF1RSxvQkFBb0IscUJBQXFCLCtCQUErQiw4QkFBOEIsaUNBQWlDLEVBQUUsd0VBQXdFLGdDQUFnQyxFQUFFLG1GQUFtRix5QkFBeUIsb0JBQW9CLEVBQUUsdURBQXVELGdDQUFnQyx5QkFBeUIsRUFBRSwrREFBK0Qsb0JBQW9CLHFCQUFxQixFQUFFLGdFQUFnRSwrQkFBK0IsRUFBRSxzRUFBc0Usa0NBQWtDLEVBQUUsbURBQW1ELHlCQUF5QixFQUFFLHdDQUF3QyxtQkFBbUIsRUFBRSw2REFBNkQsOEJBQThCLDJCQUEyQixFQUFFLDZEQUE2RCxzQkFBc0IsRUFBRSwyREFBMkQsaUhBQWlILG1GQUFtRixFQUFFLDJEQUEyRCxtSEFBbUgsaUZBQWlGLEVBQUUsK0RBQStELDRCQUE0QixxQkFBcUIsb0JBQW9CLGdDQUFnQywwQkFBMEIsNERBQTRELDREQUE0RCxFQUFFLHNFQUFzRSwyQkFBMkIsRUFBRSx3RUFBd0UsMkJBQTJCLEVBQUUsd0RBQXdELDRCQUE0QixxQkFBcUIsMkJBQTJCLEVBQUUsOERBQThELDBCQUEwQixvQkFBb0IscUJBQXFCLDRCQUE0QixrQ0FBa0MsNERBQTRELDREQUE0RCxFQUFFLGtFQUFrRSwwQkFBMEIsMEJBQTBCLG9CQUFvQixFQUFFLHdFQUF3RSxrQ0FBa0MscUJBQXFCLEVBQUUsa0VBQWtFLHNCQUFzQixFQUFFLGdGQUFnRix5QkFBeUIsRUFBRSwrRUFBK0UsMEJBQTBCLEVBQUUsK0RBQStELDBEQUEwRCwwREFBMEQsRUFBRSxrQ0FBa0MsNkJBQTZCLGdDQUFnQyxFQUFFLHlJQUF5SSxxQkFBcUIsNkJBQTZCLEVBQUUsa0RBQWtELCtCQUErQix5Q0FBeUMsbUNBQW1DLHFCQUFxQix3QkFBd0IseUJBQXlCLDRDQUE0QywyQkFBMkIsMEJBQTBCLEVBQUUscUZBQXFGLHVCQUF1QixzQkFBc0IsNkJBQTZCLEVBQUUsZ0dBQWdHLDhCQUE4Qiw0QkFBNEIsRUFBRSx1TEFBdUwsc0NBQXNDLEVBQUUsd0dBQXdHLDhCQUE4QixFQUFFLCtFQUErRSxxQkFBcUIsK0JBQStCLHFCQUFxQixFQUFFLHdGQUF3Riw2QkFBNkIsRUFBRSxvQ0FBb0MsZ0NBQWdDLGlDQUFpQyx5QkFBeUIsbUJBQW1CLHdCQUF3QiwwQkFBMEIsNEJBQTRCLHFDQUFxQyw2QkFBNkIsRUFBRSx3REFBd0QsbUJBQW1CLEVBQUUsaURBQWlELHlCQUF5Qix1QkFBdUIsRUFBRSxnRUFBZ0Usa0NBQWtDLEVBQUUsK0hBQStILHFCQUFxQixFQUFFLDBIQUEwSCxnQ0FBZ0MseUJBQXlCLGtCQUFrQixFQUFFLCtKQUErSiwwQkFBMEIsMkJBQTJCLEVBQUUsOElBQThJLHlCQUF5QixFQUFFLDBJQUEwSSwwQkFBMEIsRUFBRSx3SUFBd0ksOEJBQThCLEVBQUUsb0lBQW9JLGlDQUFpQyxzQkFBc0IsRUFBRSxrSkFBa0osdUJBQXVCLEVBQUUsdUdBQXVHLHNCQUFzQixFQUFFLGlDQUFpQyw0SEFBNEgsa0JBQWtCLHNCQUFzQixrQkFBa0IseUJBQXlCLDBCQUEwQiwyQkFBMkIsMkJBQTJCLHVGQUF1Rix5Q0FBeUMsRUFBRSxvREFBb0QsMEJBQTBCLEVBQUUsK0NBQStDLDBCQUEwQixFQUFFLDRDQUE0QywwQkFBMEIsRUFBRSwrQ0FBK0MsMEJBQTBCLEVBQUUsOENBQThDLDBCQUEwQixFQUFFLHlEQUF5RCwwQkFBMEIsRUFBRSwrREFBK0QsMEJBQTBCLEVBQUUsMkRBQTJELDBCQUEwQixFQUFFLHFEQUFxRCwwQkFBMEIsRUFBRSwrQ0FBK0MsMEJBQTBCLEVBQUUsZ0RBQWdELDBCQUEwQixFQUFFLG1EQUFtRCwwQkFBMEIsRUFBRSw2Q0FBNkMsMEJBQTBCLEVBQUUsOENBQThDLDBCQUEwQixFQUFFLDRDQUE0QywwQkFBMEIsRUFBRSw2Q0FBNkMsMEJBQTBCLEVBQUUsNkNBQTZDLDBCQUEwQixFQUFFLGlEQUFpRCwwQkFBMEIsRUFBRSxrREFBa0QsMEJBQTBCLEVBQUUsNENBQTRDLDBCQUEwQixFQUFFLCtDQUErQywwQkFBMEIsRUFBRSw4Q0FBOEMsMEJBQTBCLEVBQUUsNkNBQTZDLDBCQUEwQixFQUFFLDhDQUE4QywwQkFBMEIsRUFBRSxzREFBc0QsMEJBQTBCLEVBQUUsNkNBQTZDLDBCQUEwQixFQUFFLDZDQUE2QywwQkFBMEIsRUFBRSxnREFBZ0QsMEJBQTBCLEVBQUUsaURBQWlELDBCQUEwQixFQUFFLDZDQUE2QywwQkFBMEIsRUFBRSxpREFBaUQsMEJBQTBCLEVBQUUsOENBQThDLDBCQUEwQixFQUFFLDZDQUE2QywwQkFBMEIsRUFBRSw2Q0FBNkMsMEJBQTBCLEVBQUUsb0RBQW9ELDBCQUEwQixFQUFFLDhDQUE4QywwQkFBMEIsRUFBRSw0Q0FBNEMsMEJBQTBCLEVBQUUsOENBQThDLDBCQUEwQixFQUFFLDZDQUE2QywwQkFBMEIsRUFBRSxpREFBaUQsMEJBQTBCLEVBQUUseURBQXlELDBCQUEwQixFQUFFLHdEQUF3RCwwQkFBMEIsRUFBRSw4Q0FBOEMsMEJBQTBCLEVBQUUsNkNBQTZDLDBCQUEwQixFQUFFLG1EQUFtRCwwQkFBMEIsRUFBRSxtREFBbUQsMEJBQTBCLEVBQUUsb0RBQW9ELDBCQUEwQixFQUFFLGlEQUFpRCwwQkFBMEIsRUFBRSw2Q0FBNkMsMEJBQTBCLEVBQUUsb0RBQW9ELDBCQUEwQixFQUFFLDJEQUEyRCwwQkFBMEIsRUFBRSxrREFBa0QsMEJBQTBCLEVBQUUsNEpBQTRKLG9DQUFvQyx3QkFBd0IseUJBQXlCLEVBQUUsNkxBQTZMLHdCQUF3QixzQkFBc0IsRUFBRSxrREFBa0QscUJBQXFCLEVBQUUsb0VBQW9FLDRCQUE0QixFQUFFLHdFQUF3RSwwQkFBMEIsRUFBRSxvRUFBb0UsMEJBQTBCLEVBQUUsNEVBQTRFLDBCQUEwQixFQUFFLGlEQUFpRCwwQkFBMEIsRUFBRSwrQ0FBK0MsMEJBQTBCLEVBQUUsaURBQWlELHFCQUFxQixFQUFFLCtDQUErQywwQkFBMEIsRUFBRSxnQ0FBZ0Msd0JBQXdCLEVBQUUsbURBQW1ELHlCQUF5QixFQUFFLDBPQUEwTywwQkFBMEIsdUJBQXVCLEVBQUUsb0dBQW9HLDBCQUEwQixFQUFFLHVHQUF1RywwQkFBMEIsNEJBQTRCLEVBQUUseWNBQXljLHlCQUF5QiwwQkFBMEIsRUFBRSxxSEFBcUgsdUJBQXVCLDJCQUEyQixFQUFFLHdEQUF3RCwwQkFBMEIsd0JBQXdCLEVBQUUsdU5BQXVOLG9DQUFvQyxvQ0FBb0MsNkJBQTZCLEVBQUUsa3FCQUFrcUIsNkJBQTZCLCtCQUErQixFQUFFLG1UQUFtVCw2QkFBNkIsK0JBQStCLEVBQUUsd0RBQXdELDJCQUEyQiwwQkFBMEIsRUFBRSw2REFBNkQsNEJBQTRCLEVBQUUsMkpBQTJKLDRCQUE0QiwwQkFBMEIsRUFBRSw2REFBNkQsMkJBQTJCLEVBQUUsbUhBQW1ILHVCQUF1QiwwQkFBMEIsRUFBRSwyRUFBMkUsdUNBQXVDLHdCQUF3QixFQUFFLG1FQUFtRSx1Q0FBdUMsd0JBQXdCLEVBQUUsOEVBQThFLHVCQUF1QixFQUFFLCtDQUErQyxpQkFBaUIsK1VBQStVLEVBQUUsb0JBQW9CLEVBQUUsbWJBQW1iLG1CQUFtQixrQkFBa0Isc0JBQXNCLHdCQUF3QixFQUFFLHFGQUFxRixnREFBZ0Qsd0NBQXdDLEVBQUUsMkNBQTJDLDJDQUEyQyxFQUFFLHFEQUFxRCw4Q0FBOEMsc0NBQXNDLEVBQUUsd0NBQXdDLG1CQUFtQixFQUFFLHFDQUFxQyx1QkFBdUIsc0JBQXNCLG9CQUFvQixFQUFFLCtEQUErRCxrQkFBa0IsbUNBQW1DLDRDQUE0Qyx3QkFBd0IseUJBQXlCLGdDQUFnQyxFQUFFLCtFQUErRSxzQ0FBc0Msd0JBQXdCLEVBQUUsNEVBQTRFLHVDQUF1QyxrQ0FBa0MsMEJBQTBCLDBCQUEwQixFQUFFLGlFQUFpRSwrQkFBK0IsRUFBRSx1Q0FBdUMsNEJBQTRCLEVBQUUsa0ZBQWtGLHFCQUFxQixxQkFBcUIsc0JBQXNCLHNDQUFzQyx5QkFBeUIseUJBQXlCLEVBQUUsSzs7Ozs7Ozs7Ozs7QUNBdHJtRix1Q0FBdUMsNEJBQTRCLGVBQWUsa0JBQWtCLHVCQUF1Qix1QkFBdUIsZUFBZSw0QkFBNEIsNEJBQTRCLG1CQUFtQixjQUFjLG9CQUFvQixzQkFBc0IsdUJBQXVCLHVCQUF1QixxQkFBcUIsbUNBQW1DLG1DQUFtQyxtQ0FBbUMsbUNBQW1DLHFCQUFxQiwwSEFBMEgsMEhBQTBILEdBQUcseURBQXlELGVBQWUsc0JBQXNCLHdCQUF3QixHQUFHLDRCQUE0QiwwQkFBMEIsbUJBQW1CLEdBQUcsb0NBQW9DLHlFQUF5RSx5RUFBeUUsR0FBRyw4QkFBOEIsbUJBQW1CLHVCQUF1QixhQUFhLEdBQUcsOEJBQThCLHVCQUF1QiwwQkFBMEIsR0FBRyxtQ0FBbUMsaUJBQWlCLG1CQUFtQixHQUFHLHNIQUFzSCx3Q0FBd0Msd0NBQXdDLEdBQUcsc0hBQXNILDBEQUEwRCwwREFBMEQsR0FBRyw0RkFBNEYscUJBQXFCLGtDQUFrQyxpQ0FBaUMsR0FBRywrQ0FBK0MsbUJBQW1CLEdBQUcsNkRBQTZELGlCQUFpQixrQ0FBa0MsR0FBRywwREFBMEQsaUJBQWlCLEdBQUcsMERBQTBELHVCQUF1QixtQkFBbUIseUJBQXlCLDhCQUE4QixnQkFBZ0IsY0FBYyxhQUFhLGVBQWUsR0FBRyw4RUFBOEUsZUFBZSxnQkFBZ0IsR0FBRyw4QkFBOEIsc0JBQXNCLG1CQUFtQixHQUFHLDZCQUE2QixzQkFBc0IsbUJBQW1CLEdBQUcsNEVBQTRFLGlCQUFpQixHQUFHLHVDQUF1QyxpQ0FBaUMsR0FBRyxzQ0FBc0MsOEJBQThCLEdBQUcsa0ZBQWtGLGNBQWMsR0FBRywwQ0FBMEMsOEJBQThCLEdBQUcseUNBQXlDLDJCQUEyQixHQUFHLDZCQUE2QixlQUFlLEdBQUcsc0JBQXNCLHVCQUF1QiwwQkFBMEIsR0FBRyxxQkFBcUIseUJBQXlCLDBCQUEwQix5QkFBeUIsa0JBQWtCLEdBQUcsc0NBQXNDLDRCQUE0QiwyQkFBMkIsMEJBQTBCLGlCQUFpQixtQkFBbUIsdUJBQXVCLHVCQUF1Qiw4QkFBOEIsOEJBQThCLDhCQUE4Qiw4QkFBOEIscUJBQXFCLHdCQUF3QixvQkFBb0Isb0JBQW9CLG9CQUFvQixHQUFHLHFGQUFxRiwwQkFBMEIsb0JBQW9CLHVCQUF1QixXQUFXLGlCQUFpQixrQkFBa0IsZUFBZSwyQkFBMkIsMEJBQTBCLEdBQUcsMkhBQTJILGtCQUFrQixHQUFHLHlGQUF5Rix1QkFBdUIsR0FBRywrSEFBK0gsMERBQTBELCtDQUErQyw2TEFBNkwsMkRBQTJELCtDQUErQywrSkFBK0osbUJBQW1CLEdBQUcseUdBQXlHLGtCQUFrQixHQUFHLDZGQUE2RixnQkFBZ0IsaUJBQWlCLEdBQUcsdUdBQXVHLGtDQUFrQywwQkFBMEIsa0JBQWtCLEdBQUcsb0JBQW9CLHVCQUF1QixpQkFBaUIsR0FBRyxrREFBa0QsMEJBQTBCLEdBQUcsMEJBQTBCLGdCQUFnQixHQUFHLHFDQUFxQyxrQkFBa0IsR0FBRyx5R0FBeUcsY0FBYyw2QkFBNkIsR0FBRyx5QkFBeUIsdUJBQXVCLGFBQWEsZ0JBQWdCLHlCQUF5QixnQkFBZ0IscUJBQXFCLGVBQWUsb0JBQW9CLDBDQUEwQyxtQ0FBbUMsbUNBQW1DLEdBQUcsK0JBQStCLGdDQUFnQyxHQUFHLGdDQUFnQyxnQ0FBZ0MsR0FBRywrQkFBK0IsbUJBQW1CLGtCQUFrQix1QkFBdUIsR0FBRyxpQ0FBaUMsV0FBVyxxQkFBcUIsR0FBRyx1Q0FBdUMsdUNBQXVDLHdDQUF3QyxnREFBZ0QsYUFBYSxHQUFHLG1DQUFtQyxhQUFhLEdBQUcseUNBQXlDLHVDQUF1Qyx3Q0FBd0MsNkNBQTZDLGFBQWEsR0FBRyw2QkFBNkIsbUJBQW1CLGlCQUFpQixHQUFHLGtDQUFrQywwQkFBMEIsR0FBRywwQkFBMEIsaUNBQWlDLEdBQUcsK0JBQStCLGVBQWUsR0FBRyw0QkFBNEIsb0JBQW9CLHlCQUF5QixxQkFBcUIsbUJBQW1CLHVCQUF1QixlQUFlLGdCQUFnQiwwQkFBMEIsbUJBQW1CLGlCQUFpQiwwQkFBMEIsdUJBQXVCLGtEQUFrRCxrREFBa0QsR0FBRywyQ0FBMkMseUJBQXlCLHFCQUFxQixtQkFBbUIsMEJBQTBCLHVCQUF1QixlQUFlLEdBQUcsaURBQWlELGlDQUFpQyxHQUFHLDZDQUE2QyxlQUFlLGtCQUFrQiwwQkFBMEIsR0FBRyxnRUFBZ0UseUNBQXlDLEdBQUcsa0VBQWtFLHNDQUFzQyxHQUFHLDJDQUEyQyw0QkFBNEIsbUNBQW1DLG1DQUFtQyxtQkFBbUIsaUJBQWlCLHlCQUF5QixjQUFjLDBCQUEwQix1QkFBdUIseUJBQXlCLHFCQUFxQix5QkFBeUIsaUJBQWlCLGNBQWMscUJBQXFCLDRCQUE0QixrQ0FBa0MsK0JBQStCLDBCQUEwQixHQUFHLGlEQUFpRCxlQUFlLEdBQUcsK0dBQStHLG9CQUFvQiwyQkFBMkIsNEJBQTRCLHlCQUF5QixHQUFHLDREQUE0RCx5QkFBeUIsNEJBQTRCLGlCQUFpQixxQkFBcUIsMkJBQTJCLG1CQUFtQixvQkFBb0IsdUJBQXVCLHlCQUF5QixxQkFBcUIsaUJBQWlCLHlCQUF5Qix1QkFBdUIsa0JBQWtCLHlCQUF5Qix1QkFBdUIsNEJBQTRCLG1DQUFtQyxpQ0FBaUMsOEJBQThCLGdCQUFnQixHQUFHLG9JQUFvSSxrQkFBa0IsR0FBRyxrRUFBa0UsaUNBQWlDLEdBQUcsMkZBQTJGLGtDQUFrQyxrQkFBa0IsZUFBZSxHQUFHLHVCQUF1Qiw0QkFBNEIsdUJBQXVCLHFCQUFxQixnQkFBZ0IseUJBQXlCLDBCQUEwQix5QkFBeUIsa0JBQWtCLDhCQUE4QixnQ0FBZ0MsK0JBQStCLGdDQUFnQyxpQkFBaUIsR0FBRyxtREFBbUQseUJBQXlCLDBCQUEwQix5QkFBeUIsa0JBQWtCLHdCQUF3QixvQkFBb0Isb0JBQW9CLG9CQUFvQixHQUFHLDBCQUEwQixvQkFBb0IsbUJBQW1CLDRCQUE0Qiw0QkFBNEIsbUJBQW1CLGNBQWMsdUJBQXVCLG1CQUFtQix3QkFBd0Isb0JBQW9CLG9CQUFvQixvQkFBb0Isd0JBQXdCLEdBQUcsb0NBQW9DLHVCQUF1QixHQUFHLG1CQUFtQix1QkFBdUIscUJBQXFCLHlCQUF5QiwwQkFBMEIseUJBQXlCLGtCQUFrQiw2QkFBNkIsb0NBQW9DLDhCQUE4QixvQ0FBb0MscUJBQXFCLEdBQUcseUJBQXlCLGVBQWUsR0FBRyxpQkFBaUIsZUFBZSxlQUFlLHFCQUFxQixxQkFBcUIseUJBQXlCLHlCQUF5QixtQ0FBbUMsbUNBQW1DLDBCQUEwQix5QkFBeUIseUJBQXlCLDBCQUEwQixrQkFBa0IsNEJBQTRCLDRCQUE0Qix3QkFBd0IsMkJBQTJCLDBDQUEwQywwQ0FBMEMsa0RBQWtELGtEQUFrRCxlQUFlLEdBQUcsaUNBQWlDLHlDQUF5Qyx5Q0FBeUMsR0FBRyxrQkFBa0IscUJBQXFCLGtDQUFrQyx5QkFBeUIsbUNBQW1DLG1DQUFtQyxtQkFBbUIsb0JBQW9CLHFCQUFxQix1QkFBdUIsb0NBQW9DLDZDQUE2QyxvQ0FBb0Msb0JBQW9CLGlCQUFpQixzQkFBc0IsY0FBYywwQkFBMEIsdUJBQXVCLDZCQUE2QixvQ0FBb0MsOEJBQThCLG9DQUFvQyx1QkFBdUIsR0FBRywyWkFBMlosb0JBQW9CLGVBQWUsd0JBQXdCLDBCQUEwQixHQUFHLHdCQUF3QiwwQkFBMEIsR0FBRywyREFBMkQsMEJBQTBCLHdCQUF3QixnQkFBZ0IsR0FBRywybUJBQTJtQix3QkFBd0IsNkJBQTZCLDZCQUE2QixnQkFBZ0IsMEJBQTBCLEdBQUcsa0hBQWtILGlDQUFpQyxHQUFHLDRHQUE0RyxpQ0FBaUMsR0FBRyx3TkFBd04sMENBQTBDLDBDQUEwQyxHQUFHLDZJQUE2SSx3QkFBd0IsR0FBRywwQkFBMEIscUJBQXFCLDBEQUEwRCwwREFBMEQsR0FBRyx5UEFBeVAsOEJBQThCLDRCQUE0Qiw4QkFBOEIsb0JBQW9CLEdBQUcsK0VBQStFLHdCQUF3Qiw4QkFBOEIsR0FBRyxnQ0FBZ0MscUJBQXFCLDBEQUEwRCwwREFBMEQsR0FBRyx5QkFBeUIsdUJBQXVCLEdBQUcsNkJBQTZCLG9CQUFvQixHQUFHLDBCQUEwQixnQkFBZ0IsR0FBRywyQ0FBMkMsb0JBQW9CLHdDQUF3Qyx3Q0FBd0MsR0FBRyw2Q0FBNkMsZ0JBQWdCLGdCQUFnQixzQkFBc0IsR0FBRywrRkFBK0YsbUJBQW1CLGdCQUFnQixvQkFBb0IsOEJBQThCLDRCQUE0QixvQkFBb0IsaUJBQWlCLEdBQUcsNkJBQTZCLG1CQUFtQix5QkFBeUIsMEJBQTBCLHlCQUF5QixrQkFBa0IsbUNBQW1DLG1DQUFtQyxxQkFBcUIsR0FBRyx5QkFBeUIsMEJBQTBCLGVBQWUsbUNBQW1DLG1DQUFtQyxHQUFHLG1CQUFtQix1QkFBdUIsZUFBZSxtQkFBbUIsY0FBYyxzQkFBc0IscUJBQXFCLG1DQUFtQyxtQ0FBbUMscUJBQXFCLHlCQUF5QiwwQkFBMEIseUJBQXlCLGtCQUFrQixHQUFHLHlCQUF5QixrQkFBa0IsbUJBQW1CLGdCQUFnQixHQUFHLG9DQUFvQyx3QkFBd0Isb0JBQW9CLG9CQUFvQixvQkFBb0IsZUFBZSxpQkFBaUIsZ0JBQWdCLEdBQUcsdURBQXVELGlDQUFpQyxHQUFHLHlEQUF5RCw4QkFBOEIsR0FBRywrQ0FBK0MsZUFBZSxHQUFHLDZDQUE2QyxlQUFlLEdBQUcseUJBQXlCLDRCQUE0Qiw2QkFBNkIsNkJBQTZCLGNBQWMscUJBQXFCLHVCQUF1QixjQUFjLGVBQWUsb0JBQW9CLHlCQUF5QixtQkFBbUIsb0JBQW9CLHVCQUF1QixtQ0FBbUMsbUNBQW1DLGtDQUFrQywrQkFBK0IsMEJBQTBCLEdBQUcsd0NBQXdDLHNCQUFzQixHQUFHLG1GQUFtRixxQkFBcUIsR0FBRywrQkFBK0IsZUFBZSxjQUFjLEdBQUcsZ0ZBQWdGLG9CQUFvQixnQkFBZ0IseUJBQXlCLG1CQUFtQixzQkFBc0IsY0FBYyw4QkFBOEIsOEJBQThCLDhCQUE4Qiw4QkFBOEIsK0JBQStCLG9DQUFvQywrQkFBK0IsR0FBRyxvQ0FBb0MsZUFBZSxlQUFlLG9CQUFvQix1QkFBdUIscUJBQXFCLEdBQUcsK0lBQStJLHFCQUFxQixHQUFHLDhCQUE4QixvQkFBb0IsR0FBRyxtQ0FBbUMsVUFBVSxpQkFBaUIsa0RBQWtELGtEQUFrRCxLQUFLLFFBQVEsaUJBQWlCLDhDQUE4Qyw4Q0FBOEMsS0FBSyxHQUFHLDJCQUEyQixVQUFVLGlCQUFpQixrREFBa0Qsa0RBQWtELEtBQUssUUFBUSxpQkFBaUIsOENBQThDLDhDQUE4QyxLQUFLLEdBQUcsRzs7Ozs7Ozs7Ozs7QUNBcHJtQix5VEFBeVQsd0JBQXdCLDRCQUE0Qiw2QkFBNkIsd0NBQXdDLDBCQUEwQixzQkFBc0Isc0JBQXNCLEdBQUcsMEVBQTBFLHlCQUF5QiwrQkFBK0IsZ0NBQWdDLHNDQUFzQywwQkFBMEIsc0JBQXNCLHNCQUFzQixHQUFHLHNEQUFzRCxxQ0FBcUMscUNBQXFDLDBDQUEwQywwQ0FBMEMsT0FBTyx1REFBdUQsbUNBQW1DLG9DQUFvQyxxQ0FBcUMscUNBQXFDLEdBQUcsZ0hBQWdILHFDQUFxQyxvQ0FBb0Msa0NBQWtDLGtDQUFrQyxHQUFHLEM7Ozs7Ozs7Ozs7O0FDQWw3QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBOztBQUVBLGNBQWMsbUJBQU8sQ0FBQyx1REFBUTs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQixtQkFBbUI7QUFDcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLHNCQUFzQjtBQUN2Qzs7QUFFQTtBQUNBLG1CQUFtQiwyQkFBMkI7O0FBRTlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnQkFBZ0IsbUJBQW1CO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxpQkFBaUIsMkJBQTJCO0FBQzVDO0FBQ0E7O0FBRUEsUUFBUSx1QkFBdUI7QUFDL0I7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSxpQkFBaUIsdUJBQXVCO0FBQ3hDO0FBQ0E7O0FBRUEsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsZ0JBQWdCLGlCQUFpQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYzs7QUFFZCxrREFBa0Qsc0JBQXNCO0FBQ3hFO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdURB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O0FBQ0EsYUFBT0EsQ0FBQyxHQUFHeW1CLEdBQVgsRUFBZ0I7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQUlDLE1BQU0sR0FBR25ULENBQUMsQ0FBQ3ZULENBQUQsQ0FBZDs7QUFDQSxZQUFJd21CLFNBQVMsQ0FBQ2grQixJQUFWLENBQWU2cEIsT0FBZixFQUF3QnFVLE1BQXhCLEVBQWdDMW1CLENBQWhDLEVBQW1DdVQsQ0FBbkMsQ0FBSixFQUEyQztBQUN6QyxpQkFBT21ULE1BQVA7QUFDRCxTQVJhLENBU2Q7OztBQUNBMW1CLFNBQUM7QUFDRixPQWxDeUIsQ0FvQzFCOzs7QUFDQSxhQUFPdFUsU0FBUDtBQUNELEtBdkM0QztBQXdDN0N6d0IsZ0JBQVksRUFBRSxJQXhDK0I7QUF5QzdDTyxZQUFRLEVBQUU7QUF6Q21DLEdBQS9DO0FBMkNELEM7Ozs7Ozs7Ozs7OztBQ3BFRCxjQUFjLG1CQUFPLENBQUMsaU5BQStHOztBQUVySSw0Q0FBNEMsUUFBUzs7QUFFckQ7QUFDQTs7OztBQUlBLGVBQWU7O0FBRWY7QUFDQSxrQ0FBa0M7O0FBRWxDLGFBQWEsbUJBQU8sQ0FBQyxzR0FBbUQ7O0FBRXhFOztBQUVBLEdBQUcsS0FBVSxFQUFFLEUiLCJmaWxlIjoiYmJqLWdyaWQtd2lkZ2V0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDApO1xuIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJiai1tYXNrcyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbi8qKlxuICogTnVtYmVyTWFza1xuICpcbiAqIEEgamF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBmb3IgQkJqIG51bWJlcnMgbWFza2luZ1xuICpcbiAqIEBhdXRob3IgSHl5YW4gQWJvIEZha2hlciA8aGFib2Zha2hlckBiYXNpcy5jb20+XG4gKi9cbmNsYXNzIE51bWJlck1hc2sge1xuICAvKipcbiAgICogTWFzayB0aGUgZ2l2ZW4gbnVtYmVyIHdpdGggdGhlIGdpdmVuIG1hc2sgYWNjb3JkaW5nIHRvIEJCaiBydWxlc1xuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gbnVtYmVyIHRoZSBudW1iZXIgdG8gZm9ybWF0XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtYXNrIHRoZSBtYXNrIHRvIHVzZSBmb3IgZm9ybWF0dGluZ1xuICAgKiBAcGFyYW0ge1N0cmluZ30gW2dyb3VwaW5nU2VwYXJhdG9yPSxdIC0gYSBjaGFyIHdoaWNoIHdpbGwgYmUgdXNlZCBhcyBhIGdyb3VwaW5nIHNlcGFyYXRvclxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2RlY2ltYWxTZXBhcmF0b3I9Ll0gIC0gYSBjaGFyIHdoaWNoIHdpbGwgYmUgdXNlZCBhcyBhIGRlY2ltYWwgc2VwYXJhdG9yXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gW2ZvcmNlVHJhaWxpbmdaZXJvcz1mYWxzZV0gLSBBZmZlY3RzIHRoZSBvdXRwdXQgYnkgc3dpdGNoaW5nIHRoZSB3YXkgYSBtYXNrIHdpdGggXCIjXCIgY2hhcmFjdGVycyBpbiB0aGUgdHJhaWxpbmcgcG9zaXRpb25zIGlzIGZpbGxlZC5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGV4YW1wbGUsIHRoZSBmdW5jdGlvbiBgTnVtYmVyTWFzay5tYXNrKC4xMDpcIiMuIyNcIilgIHJldHVybnMgYCAuMTBgIGluc3RlYWQgb2YgYCAuMSBgXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gW2xvb3NlPXRydWVdIHdoZW4gdHJ1ZSAsIGVycm9ycyB3aWxsIGJlIGlnbm9yZWQgYW5kIHRoZSBtZXRob2Qgd2lsbCB0cnkgYXQgYXBwbHkgdGhlIG1hc2tcbiAgICogICAgICAgICAgICAgICAgYW55d2F5ICwgb3RoZXJ3aXNlIGl0IHdpbGwgc3RvcCBhdCBmaXJzdCBlcnJvciBhbmQgdGhyb3cgaXQuXG4gICAqIFxuICAgKiBAdGhyb3dzIHtNYXNrRXJyb3J9IG9ubHkgaWYgbG9vc2UgaXMgZGlzYWJsZWRcbiAgICogXG4gICAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBtYXNrZWQgbnVtYmVyXG4gICAqL1xuICBzdGF0aWMgbWFzayhcbiAgICBudW1iZXIsXG4gICAgbWFzayxcbiAgICBncm91cGluZ1NlcGFyYXRvciA9ICcsJyxcbiAgICBkZWNpbWFsU2VwYXJhdG9yID0gJy4nLFxuICAgIGZvcmNlVHJhaWxpbmdaZXJvcyA9IGZhbHNlLFxuICAgIGxvb3NlID0gdHJ1ZVxuICApIHtcbiAgICBjb25zdCBtYXNrTGVuID0gbWFzay5sZW5ndGhcbiAgICBpZiAoMCA9PT0gbWFza0xlbikge1xuICAgICAgaWYgKGxvb3NlKSByZXR1cm4gc3RyXG4gICAgICAvLyBmcmllbmRseSBzaWxlbnQgZmFpbFxuICAgICAgZWxzZVxuICAgICAgICB0aHJvdyB7XG4gICAgICAgICAgbmFtZTogJ01hc2tFcnJvcicsXG4gICAgICAgICAgbWVzc2FnZTogYE1hc2tFcnJvcjogTWFzayBpcyBlbXB0eWBcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEdldCBtYWduaXR1ZGUgYW5kIHByZWNpc2lvbiBvZiBNQVNLXG4gICAgbGV0IG1hc2tCZWZvcmVEZWNpbWFsID0gMFxuICAgIGxldCBtYXNrQWZ0ZXJEZWNpbWFsID0gMFxuICAgIGxldCBmb3VuZERlY2ltYWwgPSBmYWxzZVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWFza0xlbjsgKytpKSB7XG4gICAgICBjb25zdCBtID0gbWFzay5jaGFyQXQoaSlcbiAgICAgIGlmIChtID09ICcwJyB8fCBtID09ICcjJykge1xuICAgICAgICBpZiAoZm91bmREZWNpbWFsKSArK21hc2tBZnRlckRlY2ltYWxcbiAgICAgICAgZWxzZSArK21hc2tCZWZvcmVEZWNpbWFsXG4gICAgICB9IGVsc2UgaWYgKG0gPT0gJy4nKSBmb3VuZERlY2ltYWwgPSB0cnVlXG4gICAgfVxuXG4gICAgbGV0IG51bSA9IE51bWJlck1hc2suX3JvdW5kKG51bWJlciwgbWFza0FmdGVyRGVjaW1hbClcbiAgICBsZXQgYnl0ZXMgPSBOdW1iZXJNYXNrLl90b0NoYXJBcnJheShudW0pXG5cbiAgICAvLyBHZXQgbWFnbml0dWRlIGFuZCBwcmVjaXNpb24gb2YgTlVNQkVSXG4gICAgbGV0IGluTGVuID0gYnl0ZXMubGVuZ3RoXG4gICAgbGV0IG51bUJlZm9yZURlY2ltYWwgPSAwXG4gICAgbGV0IG51bUFmdGVyRGVjaW1hbCA9IDBcbiAgICBmb3VuZERlY2ltYWwgPSBmYWxzZVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5MZW47ICsraSkge1xuICAgICAgaWYgKGJ5dGVzW2ldID09ICcuJykgZm91bmREZWNpbWFsID0gdHJ1ZVxuICAgICAgZWxzZSB7XG4gICAgICAgIGlmIChmb3VuZERlY2ltYWwpICsrbnVtQWZ0ZXJEZWNpbWFsXG4gICAgICAgIGVsc2UgKytudW1CZWZvcmVEZWNpbWFsXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYWx3YXlzIGlnbm9yZSBtYXNrIG92ZXJmbG93XG4gICAgaWYgKG51bUJlZm9yZURlY2ltYWwgPiBtYXNrQmVmb3JlRGVjaW1hbCkge1xuICAgICAgaWYgKGxvb3NlKSByZXR1cm4gbnVtYmVyLnRvU3RyaW5nKClcbiAgICAgIC8vIGZyaWVuZGx5IHNpbGVudCBmYWlsXG4gICAgICBlbHNlXG4gICAgICAgIHRocm93IHtcbiAgICAgICAgICBuYW1lOiAnTWFza0Vycm9yJyxcbiAgICAgICAgICBtZXNzYWdlOiBgTWFza0Vycm9yOiBOdW1iZXIgaXMgdG9vIGxhcmdlIGZvciBtYXNrYFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gcm91bmQgaWYgbWFzayBpcyBmb3IgYSBsb3dlciBwcmVjaXNpb24gbnVtYmVyXG4gICAgaWYgKG51bUFmdGVyRGVjaW1hbCA+IG1hc2tBZnRlckRlY2ltYWwpIHtcbiAgICAgIG51bSA9IE51bWJlck1hc2suX3JvdW5kKG51bSwgbWFza0FmdGVyRGVjaW1hbClcbiAgICAgIGJ5dGVzID0gTnVtYmVyTWFzay5fdG9DaGFyQXJyYXkobnVtKVxuICAgICAgaW5MZW4gPSBieXRlcy5sZW5ndGhcblxuICAgICAgLy8gR2V0IG5ldyBtYWduaXR1ZGUgYW5kIHByZWNpc2lvbiBvZiBOVU1CRVJcbiAgICAgIG51bUJlZm9yZURlY2ltYWwgPSAwXG4gICAgICBudW1BZnRlckRlY2ltYWwgPSAwXG4gICAgICBmb3VuZERlY2ltYWwgPSBmYWxzZVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbkxlbjsgKytpKSB7XG4gICAgICAgIGlmIChieXRlc1tpXSA9PSAnLicpIGZvdW5kRGVjaW1hbCA9IHRydWVcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYgKGZvdW5kRGVjaW1hbCkgKytudW1BZnRlckRlY2ltYWxcbiAgICAgICAgICBlbHNlICsrbnVtQmVmb3JlRGVjaW1hbFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGFsd2F5cyBpZ25vcmUgbWFzayBvdmVyZmxvd1xuICAgICAgaWYgKG51bUJlZm9yZURlY2ltYWwgPiBtYXNrQmVmb3JlRGVjaW1hbCkge1xuICAgICAgICBpZiAobG9vc2UpIHJldHVybiBudW1iZXIudG9TdHJpbmcoKVxuICAgICAgICAvLyBmcmllbmRseSBzaWxlbnQgZmFpbFxuICAgICAgICBlbHNlXG4gICAgICAgICAgdGhyb3cge1xuICAgICAgICAgICAgbmFtZTogJ01hc2tFcnJvcicsXG4gICAgICAgICAgICBtZXNzYWdlOiBgTWFza0Vycm9yOiBOdW1iZXIgaXMgdG9vIGxhcmdlIGZvciBtYXNrYFxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgZmlsbEJ5dGUgPSAnICcsXG4gICAgICBmbG9hdEJ5dGUgPSAnICdcbiAgICBsZXQgaW5Qb3MgPSAwLFxuICAgICAgb3V0UG9zID0gMCxcbiAgICAgIGZsb2F0UG9zID0gMFxuICAgIGlmIChtYXNrLmNoYXJBdCgwKSA9PSAnKicpIGZpbGxCeXRlID0gJyonXG5cbiAgICBjb25zdCBmaWxsSW5pdCA9IGZpbGxCeXRlXG4gICAgY29uc3QgaXNOZWdhdGl2ZSA9IE51bWJlck1hc2suX2dldFNpZ24obnVtKSA8IDBcbiAgICBsZXQgZW1pdERlY2ltYWwgPSBpbkxlbiA+IDAgfHwgbWFzay5pbmRleE9mKCcwJykgPj0gMFxuICAgIGxldCBmb3VuZFplcm8gPSBmYWxzZVxuICAgIGxldCBmb3VuZERpZ2l0ID0gZmFsc2VcbiAgICBsZXQgY3VycmVuY3kgPSBmYWxzZVxuICAgIGZvdW5kRGVjaW1hbCA9IGZhbHNlXG5cbiAgICBsZXQgcmV0ID0gbmV3IEFycmF5KG1hc2tMZW4pXG5cbiAgICBmb3IgKGxldCBtYXNrUG9zID0gMDsgbWFza1BvcyA8IG1hc2tMZW47ICsrbWFza1Bvcykge1xuICAgICAgbGV0IG0gPSBtYXNrLmNoYXJBdChtYXNrUG9zKVxuICAgICAgc3dpdGNoIChtKSB7XG4gICAgICAgIGNhc2UgJzAnOlxuICAgICAgICAgIC0tbWFza0JlZm9yZURlY2ltYWxcbiAgICAgICAgICBpZiAobWFza0JlZm9yZURlY2ltYWwgPCBudW1CZWZvcmVEZWNpbWFsICYmIGluUG9zIDwgaW5MZW4pIHtcbiAgICAgICAgICAgIHJldFtvdXRQb3NdID0gYnl0ZXNbaW5Qb3NdXG4gICAgICAgICAgICArK2luUG9zXG4gICAgICAgICAgICBmb3VuZERpZ2l0ID0gdHJ1ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXRbb3V0UG9zXSA9ICcwJ1xuICAgICAgICAgICAgZm91bmRaZXJvID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgICArK291dFBvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnIyc6XG4gICAgICAgICAgLS1tYXNrQmVmb3JlRGVjaW1hbFxuICAgICAgICAgIGlmIChtYXNrQmVmb3JlRGVjaW1hbCA8IG51bUJlZm9yZURlY2ltYWwgJiYgaW5Qb3MgPCBpbkxlbikge1xuICAgICAgICAgICAgcmV0W291dFBvc10gPSBieXRlc1tpblBvc11cbiAgICAgICAgICAgICsraW5Qb3NcbiAgICAgICAgICAgIGZvdW5kRGlnaXQgPSB0cnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldFtvdXRQb3NdID1cbiAgICAgICAgICAgICAgZm91bmREZWNpbWFsICYmXG4gICAgICAgICAgICAgIGZvcmNlVHJhaWxpbmdaZXJvcyAmJlxuICAgICAgICAgICAgICBOdW1iZXJNYXNrLl9nZXRTaWduKG51bSkgIT0gMFxuICAgICAgICAgICAgICAgID8gJzAnXG4gICAgICAgICAgICAgICAgOiBmaWxsQnl0ZVxuICAgICAgICAgICAgaWYgKCFmb3VuZERlY2ltYWwpIGZsb2F0UG9zID0gbWFza1Bvc1xuICAgICAgICAgIH1cbiAgICAgICAgICArK291dFBvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnLCc6XG4gICAgICAgICAgaWYgKGZvdW5kWmVybyB8fCBpblBvcyA+IDApIHJldFtvdXRQb3NdID0gZ3JvdXBpbmdTZXBhcmF0b3JcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldFtvdXRQb3NdID0gZmlsbEJ5dGVcbiAgICAgICAgICAgIGlmICghZm91bmREZWNpbWFsKSBmbG9hdFBvcyA9IG1hc2tQb3NcbiAgICAgICAgICB9XG4gICAgICAgICAgKytvdXRQb3NcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJy0nOlxuICAgICAgICAgIGlmICghZm91bmREaWdpdCAmJiBmbG9hdEJ5dGUgPT0gJyAnKSB7XG4gICAgICAgICAgICBpZiAoaXNOZWdhdGl2ZSkgZmxvYXRCeXRlID0gJy0nXG4gICAgICAgICAgICByZXRbb3V0UG9zXSA9IGZpbGxCeXRlXG4gICAgICAgICAgICBmbG9hdFBvcyA9IGZvdW5kRGVjaW1hbCA/IC0xIDogbWFza1Bvc1xuICAgICAgICAgIH0gZWxzZSByZXRbb3V0UG9zXSA9IGlzTmVnYXRpdmUgPyAnLScgOiBmaWxsQnl0ZVxuICAgICAgICAgICsrb3V0UG9zXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICcrJzpcbiAgICAgICAgICBpZiAoIWZvdW5kRGlnaXQgJiYgZmxvYXRCeXRlID09ICcgJykge1xuICAgICAgICAgICAgZmxvYXRCeXRlID0gaXNOZWdhdGl2ZSA/ICctJyA6ICcrJ1xuICAgICAgICAgICAgcmV0W291dFBvc10gPSBmaWxsQnl0ZVxuICAgICAgICAgICAgZmxvYXRQb3MgPSBmb3VuZERlY2ltYWwgPyAtMSA6IG1hc2tQb3NcbiAgICAgICAgICB9IGVsc2UgcmV0W291dFBvc10gPSBpc05lZ2F0aXZlID8gJy0nIDogJysnXG4gICAgICAgICAgKytvdXRQb3NcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJyQnOlxuICAgICAgICAgIGlmICghZm91bmREaWdpdCAmJiBmbG9hdEJ5dGUgPT0gJyAnKSB7XG4gICAgICAgICAgICBmbG9hdEJ5dGUgPSAnJCdcbiAgICAgICAgICAgIHJldFtvdXRQb3NdID0gZmlsbEJ5dGVcbiAgICAgICAgICAgIGZsb2F0UG9zID0gZm91bmREZWNpbWFsID8gLTEgOiBtYXNrUG9zXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldFtvdXRQb3NdID0gJyQnXG4gICAgICAgICAgfVxuICAgICAgICAgICsrb3V0UG9zXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICAvLyBjYXNlICcmJzpcbiAgICAgICAgLy8gICBjdXJyZW5jeSA9IHRydWVcbiAgICAgICAgLy8gICBpZiAoIWZvdW5kRGlnaXQgJiYgZmxvYXRCeXRlID09ICcgJykge1xuICAgICAgICAvLyAgICAgZmxvYXRCeXRlID0gJyYnXG4gICAgICAgIC8vICAgICByZXRbb3V0UG9zXSA9IGZpbGxCeXRlXG4gICAgICAgIC8vICAgICBmbG9hdFBvcyA9IGZvdW5kRGVjaW1hbCA/IC0xIDogbWFza1Bvc1xuICAgICAgICAvLyAgIH0gZWxzZSB7XG4gICAgICAgIC8vICAgICByZXRbb3V0UG9zXSA9ICcmJ1xuICAgICAgICAvLyAgIH1cbiAgICAgICAgLy8gICArK291dFBvc1xuICAgICAgICAvLyAgIGJyZWFrXG5cbiAgICAgICAgLy8gY2FzZSAnQCc6XG4gICAgICAgIC8vICAgY3VycmVuY3kgPSB0cnVlXG4gICAgICAgIC8vICAgaWYgKCFmb3VuZERpZ2l0ICYmIGZsb2F0Qnl0ZSA9PSAnICcpIHtcbiAgICAgICAgLy8gICAgIGZsb2F0Qnl0ZSA9ICdAJ1xuICAgICAgICAvLyAgICAgcmV0W291dFBvc10gPSBmaWxsQnl0ZVxuICAgICAgICAvLyAgICAgZmxvYXRQb3MgPSBmb3VuZERlY2ltYWwgPyAtMSA6IG1hc2tQb3NcbiAgICAgICAgLy8gICB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgcmV0W291dFBvc10gPSAnQCdcbiAgICAgICAgLy8gICB9XG4gICAgICAgIC8vICAgKytvdXRQb3NcbiAgICAgICAgLy8gICBicmVha1xuXG4gICAgICAgIGNhc2UgJygnOlxuICAgICAgICAgIGlmICghZm91bmREaWdpdCAmJiBmbG9hdEJ5dGUgPT0gJyAnKSB7XG4gICAgICAgICAgICBpZiAoaXNOZWdhdGl2ZSkgZmxvYXRCeXRlID0gJygnXG4gICAgICAgICAgICByZXRbb3V0UG9zXSA9IGZpbGxCeXRlXG4gICAgICAgICAgICBmbG9hdFBvcyA9IGZvdW5kRGVjaW1hbCA/IC0xIDogbWFza1Bvc1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXNOZWdhdGl2ZSkge1xuICAgICAgICAgICAgICByZXRbb3V0UG9zXSA9ICcoJ1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0W291dFBvc10gPSBmb3VuZERlY2ltYWwgPyAnICcgOiBmaWxsQnl0ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICArK291dFBvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnKSc6XG4gICAgICAgICAgaWYgKGlzTmVnYXRpdmUpIHtcbiAgICAgICAgICAgIHJldFtvdXRQb3NdID0gJyknXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldFtvdXRQb3NdID0gZm91bmREZWNpbWFsID8gJyAnIDogZmlsbEJ5dGVcbiAgICAgICAgICB9XG4gICAgICAgICAgKytvdXRQb3NcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJ0MnOlxuICAgICAgICAgIGlmIChtYXNrUG9zIDwgbWFza0xlbiAtIDEgJiYgbWFzay5jaGFyQXQobWFza1BvcyArIDEpID09ICdSJykge1xuICAgICAgICAgICAgaWYgKGlzTmVnYXRpdmUpIHtcbiAgICAgICAgICAgICAgcmV0W291dFBvc10gPSAnQydcbiAgICAgICAgICAgICAgcmV0W291dFBvcyArIDFdID0gJ1InXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXRbb3V0UG9zXSA9ICcgJ1xuICAgICAgICAgICAgICByZXRbb3V0UG9zICsgMV0gPSAnICdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dFBvcyArPSAyXG4gICAgICAgICAgICArK21hc2tQb3NcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0W291dFBvc10gPSAnQydcbiAgICAgICAgICAgICsrb3V0UG9zXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgIGlmIChtYXNrUG9zIDwgbWFza0xlbiAtIDEgJiYgbWFzay5jaGFyQXQobWFza1BvcyArIDEpID09ICdSJykge1xuICAgICAgICAgICAgaWYgKGlzTmVnYXRpdmUpIHtcbiAgICAgICAgICAgICAgcmV0W291dFBvc10gPSAnQydcbiAgICAgICAgICAgICAgcmV0W291dFBvcyArIDFdID0gJ1InXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXRbb3V0UG9zXSA9ICdEJ1xuICAgICAgICAgICAgICByZXRbb3V0UG9zICsgMV0gPSAnUidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dFBvcyArPSAyXG4gICAgICAgICAgICArK21hc2tQb3NcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0W291dFBvc10gPSAnRCdcbiAgICAgICAgICAgICsrb3V0UG9zXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnKic6XG4gICAgICAgICAgcmV0W291dFBvc10gPSAnKidcbiAgICAgICAgICArK291dFBvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnLic6XG4gICAgICAgICAgcmV0W291dFBvc10gPSBlbWl0RGVjaW1hbCA/IGRlY2ltYWxTZXBhcmF0b3IgOiBmaWxsQnl0ZVxuICAgICAgICAgIGZpbGxCeXRlID0gJyAnXG4gICAgICAgICAgZm91bmREZWNpbWFsID0gdHJ1ZVxuICAgICAgICAgICsraW5Qb3NcbiAgICAgICAgICArK291dFBvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnQic6XG4gICAgICAgICAgcmV0W291dFBvc10gPSAnICdcbiAgICAgICAgICArK291dFBvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXRbb3V0UG9zXSA9IG1cbiAgICAgICAgICArK291dFBvc1xuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZsb2F0Qnl0ZSAhPSAnICcpIHtcbiAgICAgIGlmIChmbG9hdFBvcyA8IDApIGZsb2F0UG9zID0gb3V0UG9zXG4gICAgICB3aGlsZSAoZmxvYXRQb3MgPj0gbWFza0xlbikgLS1mbG9hdFBvc1xuICAgICAgaWYgKHJldFtmbG9hdFBvc10gPT0gZmlsbEluaXQpIHJldFtmbG9hdFBvc10gPSBmbG9hdEJ5dGVcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0LmpvaW4oJycpXG4gIH1cblxuICBzdGF0aWMgX3NoaWZ0KG51bWJlciwgcHJlY2lzaW9uLCByZXZlcnNlU2hpZnQpIHtcbiAgICBpZiAocmV2ZXJzZVNoaWZ0KSBwcmVjaXNpb24gPSAtcHJlY2lzaW9uXG4gICAgdmFyIG51bUFycmF5ID0gKCcnICsgbnVtYmVyKS5zcGxpdCgnZScpXG4gICAgcmV0dXJuICsoXG4gICAgICBudW1BcnJheVswXSArXG4gICAgICAnZScgK1xuICAgICAgKG51bUFycmF5WzFdID8gK251bUFycmF5WzFdICsgcHJlY2lzaW9uIDogcHJlY2lzaW9uKVxuICAgIClcbiAgfVxuXG4gIHN0YXRpYyBfcm91bmQobnVtYmVyLCBwcmVjaXNpb24pIHtcbiAgICByZXR1cm4gTnVtYmVyTWFzay5fc2hpZnQoXG4gICAgICBNYXRoLnJvdW5kKE51bWJlck1hc2suX3NoaWZ0KG51bWJlciwgcHJlY2lzaW9uLCBmYWxzZSkpLFxuICAgICAgcHJlY2lzaW9uLFxuICAgICAgdHJ1ZVxuICAgIClcbiAgfVxuXG4gIHN0YXRpYyBfdG9DaGFyQXJyYXkobnVtYmVyKSB7XG4gICAgY29uc3Qgc2lnbnVtID0gTnVtYmVyTWFzay5fZ2V0U2lnbihudW1iZXIpXG4gICAgbGV0IGNoYXJzID0gW11cblxuICAgIGlmIChzaWdudW0gIT09IDApIHtcbiAgICAgIGxldCBzdHJpbmcgPSBzaWdudW0gPCAwID8gYCR7LTEgKiBudW1iZXIudG9TdHJpbmcoKX1gIDogbnVtYmVyLnRvU3RyaW5nKClcblxuICAgICAgaWYgKHN0cmluZy5sZW5ndGggPiAxICYmIHN0cmluZy5jaGFyQXQoMCkgPT0gJzAnKVxuICAgICAgICBzdHJpbmcgPSBzdHJpbmcuc3Vic3RyaW5nKDEpXG5cbiAgICAgIC8vIFRoZSBzdHJpbmcgY29udGFpbnMgb25seSBbMC05XSBhbmQgJy4nXG4gICAgICBjaGFycyA9IHN0cmluZy5zcGxpdCgnJylcbiAgICB9XG5cbiAgICByZXR1cm4gY2hhcnNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzaWduIG9mIGEgbnVtYmVyXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB4IG51bWJlclxuICAgKiBAcmV0dXJucyB7TnVtYmVyfSBBIG51bWJlciByZXByZXNlbnRpbmcgdGhlIHNpZ24gb2YgdGhlIGdpdmVuIGFyZ3VtZW50LlxuICAgKiAgICAgICAgICAgICAgICAgICBJZiB0aGUgYXJndW1lbnQgaXMgYSBwb3NpdGl2ZSBudW1iZXIsIG5lZ2F0aXZlIG51bWJlciwgcG9zaXRpdmUgemVyb1xuICAgKiAgICAgICAgICAgICAgICAgICBvciBuZWdhdGl2ZSB6ZXJvLCB0aGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gMSwgLTEsIDAgb3IgLTAgcmVzcGVjdGl2ZWx5LlxuICAgKiAgICAgICAgICAgICAgICAgICBPdGhlcndpc2UsIE5hTiBpcyByZXR1cm5lZC5cbiAgICovXG4gIHN0YXRpYyBfZ2V0U2lnbih4KSB7XG4gICAgcmV0dXJuICh4ID4gMCkgLSAoeCA8IDApIHx8ICt4XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTnVtYmVyTWFza1xuIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJiai1tYXNrcyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmltcG9ydCBOdW1iZXJNYXNrIGZyb20gJy4vTnVtYmVyTWFzaydcblxuZXhwb3J0IGRlZmF1bHQgTnVtYmVyTWFza1xuIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJiai1tYXNrcyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmNvbnN0IGlzTnVtYmVyUmVnZXggPSAvXlxcZCskL1xuY29uc3QgaXNXaGl0ZXNwYWNlUmVnZXggPSAvXFxzL1xuY29uc3QgcHVuY3R1YXRpb25MaXN0ID0gJyFcIiMkJSZcXCcoKSorLC0uLzo7PD0+P0BbXV5fYHt8fX4nXG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGdpdmVuIHN0cmluZyBpcyBpbiBsb3dlciBjYXNlXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICovXG5jb25zdCBpc0xvd2VyQ2FzZSA9IHN0ciA9PiB7XG4gIHJldHVybiBzdHIgPT0gc3RyLnRvTG93ZXJDYXNlKCkgJiYgc3RyICE9IHN0ci50b1VwcGVyQ2FzZSgpXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGdpdmVuIHN0cmluZyBpcyBpbiB1cHBlciBjYXNlXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICovXG5jb25zdCBpc1VwcGVyQ2FzZSA9IHN0ciA9PiB7XG4gIHJldHVybiBzdHIgPT0gc3RyLnRvVXBwZXJDYXNlKCkgJiYgc3RyICE9IHN0ci50b0xvd2VyQ2FzZSgpXG59XG5cbmNvbnN0IHBhc3NPclRocm93RXJyb3IgPSAobG9vc2UsIHJldCwgaSwgc3RyKSA9PiB7XG4gIGlmICghbG9vc2UpIHtcbiAgICBjb25zdCBjaGFyID0gc3RyLmNoYXJBdChpKVxuICAgIGNvbnN0IHBvcyA9IGkgKyAxXG4gICAgdGhyb3cge1xuICAgICAgbmFtZTogJ1N0cmluZ01hc2tFcnJvcicsXG4gICAgICBtZXNzYWdlOiBgU3RyaW5nTWFza0Vycm9yOiBlcnJvciBhcHBseWluZyBtYXNrIGF0IHBvc2l0aW9uIFwiJHtwb3N9XCIgLCBjaGFyIFwiJHtjaGFyfVwiYCxcbiAgICAgIHBvcyxcbiAgICAgIGNoYXJcbiAgICB9XG4gIH0gZWxzZSByZXRbaV0gPSAnICdcbn1cblxuLyoqXG4gKiBOdW1iZXJNYXNrXG4gKlxuICogQSBqYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIGZvciBCQmogbnVtYmVycyBtYXNraW5nXG4gKlxuICogQGF1dGhvciBIeXlhbiBBYm8gRmFraGVyIDxoYWJvZmFraGVyQGJhc2lzLmNvbT5cbiAqL1xuY2xhc3MgU3RyaW5nTWFzayB7XG4gIC8qKlxuICAgKiBNYXNrIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCB0aGUgZ2l2ZW4gbWFzayBhY2NvcmRpbmcgdG8gQkJqIHJ1bGVzXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgdGhlIHN0cmluZyB0byBtYXNrXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtYXNrIHRoZSBtYXNrIHRvIHVzZSBmb3IgZm9ybWF0dGluZ1xuICAgKiBAcGFyYW0ge0Jvb2xlYW59IFtsb29zZT10cnVlXSB3aGVuIHRydWUgLCBlcnJvcnMgd2lsbCBiZSBpZ25vcmVkIGFuZCB0aGUgbWV0aG9kIHdpbGwgdHJ5IGF0IGFwcGx5IHRoZSBtYXNrXG4gICAqICAgICAgICAgICAgICAgIGFueXdheSAsIG90aGVyd2lzZSBpdCB3aWxsIHN0b3AgYXQgZmlyc3QgZXJyb3IgYW5kIHRocm93IGl0LlxuICAgKiBcbiAgICogQHRocm93cyB7TWFza0lzVG9vU2hvcnRFcnJvcn1cbiAgICogQHRocm93cyB7U3RyaW5nTWFza0Vycm9yfVxuICAgKiBAdGhyb3dzIHtNYXNrRXJyb3J9XG4gICAqIFxuICAgKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgbWFza2VkIHN0cmluZ1xuICAgKi9cbiAgc3RhdGljIG1hc2soc3RyLCBtYXNrLCBsb29zZSA9IHRydWUpIHtcbiAgICBzdHIgPSBTdHJpbmcoc3RyKVxuICAgIG1hc2sgPSBTdHJpbmcobWFzaylcbiAgICBjb25zdCBtYXNrTGVuID0gbWFzay5sZW5ndGhcbiAgICBjb25zdCBzdHJMZW4gPSBzdHIubGVuZ3RoXG5cbiAgICBpZiAoc3RyTGVuID4gbWFza0xlbikge1xuICAgICAgaWYgKGxvb3NlKSByZXR1cm4gc3RyXG4gICAgICAvLyBmcmllbmRseSBzaWxlbnQgZmFpbFxuICAgICAgZWxzZVxuICAgICAgICB0aHJvdyB7XG4gICAgICAgICAgbmFtZTogJ01hc2tJc1Rvb1Nob3J0RXJyb3InLFxuICAgICAgICAgIG1lc3NhZ2U6IGBNYXNrSXNUb29TaG9ydEVycm9yOiBNYXNrIGlzIHNob3J0ZXIgdGhhbiB0aGUgcGFzc2VkIHN0cmluZ2BcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHJldCA9IG5ldyBBcnJheShtYXNrTGVuKVxuICAgIGxldCBwb3MgPSAwIC8vIHRvIGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIHN0clxuICAgIGxldCBtYXNrQnl0ZSA9ICcnXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hc2tMZW47IGkrKykge1xuICAgICAgbWFza0J5dGUgPSBtYXNrLmNoYXJBdChpKVxuICAgICAgc3dpdGNoIChtYXNrQnl0ZSkge1xuICAgICAgICBjYXNlICdYJzogLy8gbWF0Y2ggYW55IGNoYXJhY3RlclxuICAgICAgICAgIHJldFtpXSA9IHBvcyA8IHN0ckxlbiA/IHN0ci5jaGFyQXQocG9zKSA6ICcgJ1xuICAgICAgICAgICsrcG9zXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICdBJzogLy8gbWF0Y2ggbGV0dGVyOyBmb3JjZSB1cHBlciBjYXNlXG4gICAgICAgICAgaWYgKHBvcyA8IHN0ckxlbikge1xuICAgICAgICAgICAgY29uc3QgYnl0ZSA9IHN0ci5jaGFyQXQocG9zKVxuICAgICAgICAgICAgaWYgKGlzVXBwZXJDYXNlKGJ5dGUpKSByZXRbaV0gPSBieXRlXG4gICAgICAgICAgICBlbHNlIGlmIChpc0xvd2VyQ2FzZShieXRlKSkgcmV0W2ldID0gYnl0ZS50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICBlbHNlIHBhc3NPclRocm93RXJyb3IobG9vc2UsIHJldCwgaSwgc3RyKVxuICAgICAgICAgIH0gZWxzZSByZXRbaV0gPSAnICdcbiAgICAgICAgICArK3Bvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnYSc6IC8vIG1hdGNoIGxldHRlclxuICAgICAgICAgIGlmIChwb3MgPCBzdHJMZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGJ5dGUgPSBzdHIuY2hhckF0KHBvcylcbiAgICAgICAgICAgIGlmIChpc1VwcGVyQ2FzZShieXRlKSB8fCBpc0xvd2VyQ2FzZShieXRlKSkgcmV0W2ldID0gYnl0ZVxuICAgICAgICAgICAgZWxzZSBwYXNzT3JUaHJvd0Vycm9yKGxvb3NlLCByZXQsIGksIHN0cilcbiAgICAgICAgICB9IGVsc2UgcmV0W2ldID0gJyAnXG4gICAgICAgICAgKytwb3NcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICcwJzogLy8gbWF0Y2ggZGlnaXRcbiAgICAgICAgICBpZiAocG9zIDwgc3RyTGVuKSB7XG4gICAgICAgICAgICBjb25zdCBieXRlID0gc3RyLmNoYXJBdChwb3MpXG4gICAgICAgICAgICBpZiAoaXNOdW1iZXJSZWdleC50ZXN0KGJ5dGUpKSByZXRbaV0gPSBieXRlXG4gICAgICAgICAgICBlbHNlIHBhc3NPclRocm93RXJyb3IobG9vc2UsIHJldCwgaSwgc3RyKVxuICAgICAgICAgIH0gZWxzZSByZXRbaV0gPSAnICdcbiAgICAgICAgICArK3Bvc1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ1onOiAvLyBtYXRjaCBsZXR0ZXIgb3IgZGlnaXQ7IGZvcmNlIHVwcGVyIGNhc2VcbiAgICAgICAgICBpZiAocG9zIDwgc3RyTGVuKSB7XG4gICAgICAgICAgICBjb25zdCBieXRlID0gc3RyLmNoYXJBdChwb3MpXG4gICAgICAgICAgICBpZiAoaXNVcHBlckNhc2UoYnl0ZSkgfHwgaXNOdW1iZXJSZWdleC50ZXN0KGJ5dGUpKSByZXRbaV0gPSBieXRlXG4gICAgICAgICAgICBlbHNlIGlmIChpc0xvd2VyQ2FzZShieXRlKSkgcmV0W2ldID0gYnl0ZS50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICBlbHNlIHBhc3NPclRocm93RXJyb3IobG9vc2UsIHJldCwgaSwgc3RyKVxuICAgICAgICAgIH0gZWxzZSByZXRbaV0gPSAnICdcbiAgICAgICAgICArK3Bvc1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3onOiAvLyBtYXRjaCBsZXR0ZXIgb3IgZGlnaXRcbiAgICAgICAgICBpZiAocG9zIDwgc3RyTGVuKSB7XG4gICAgICAgICAgICBjb25zdCBieXRlID0gc3RyLmNoYXJBdChwb3MpXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGlzVXBwZXJDYXNlKGJ5dGUpIHx8XG4gICAgICAgICAgICAgIGlzTG93ZXJDYXNlKGJ5dGUpIHx8XG4gICAgICAgICAgICAgIGlzTnVtYmVyUmVnZXgudGVzdChieXRlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICByZXRbaV0gPSBieXRlXG4gICAgICAgICAgICBlbHNlIHBhc3NPclRocm93RXJyb3IobG9vc2UsIHJldCwgaSwgc3RyKVxuICAgICAgICAgIH0gZWxzZSByZXRbaV0gPSAnICdcbiAgICAgICAgICArK3Bvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdVJzogLy8gbWF0Y2ggbGV0dGVyIChmb3JjZSB1cHBlciBjYXNlKSwgZGlnaXQsIHdoaXRlc3BhY2Ugb3IgcHVuY3R1YXRpb24uXG4gICAgICAgICAgaWYgKHBvcyA8IHN0ckxlbikge1xuICAgICAgICAgICAgY29uc3QgYnl0ZSA9IHN0ci5jaGFyQXQocG9zKVxuICAgICAgICAgICAgaWYgKGlzTG93ZXJDYXNlKGJ5dGUpKSByZXRbaV0gPSBieXRlLnRvVXBwZXJDYXNlKClcbiAgICAgICAgICAgIGVsc2UgaWYgKFxuICAgICAgICAgICAgICBpc1VwcGVyQ2FzZShieXRlKSB8fFxuICAgICAgICAgICAgICBpc051bWJlclJlZ2V4LnRlc3QoYnl0ZSkgfHxcbiAgICAgICAgICAgICAgaXNXaGl0ZXNwYWNlUmVnZXgudGVzdChieXRlKSB8fFxuICAgICAgICAgICAgICBwdW5jdHVhdGlvbkxpc3QuaW5kZXhPZihieXRlKSA+IC0xXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIHJldFtpXSA9IGJ5dGVcbiAgICAgICAgICAgIGVsc2UgcGFzc09yVGhyb3dFcnJvcihsb29zZSwgcmV0LCBpLCBzdHIpXG4gICAgICAgICAgfSBlbHNlIHJldFtpXSA9ICcgJ1xuICAgICAgICAgICsrcG9zXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXRbaV0gPSBtYXNrQnl0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBvcyA8IHN0ckxlbikge1xuICAgICAgaWYgKCFsb29zZSkge1xuICAgICAgICB0aHJvdyB7IG5hbWU6ICdNYXNrRXJyb3InLCBtZXNzYWdlOiAnTWFzayBjYW5ub3QgYmUgYXBwbGllZCcgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXQuam9pbignJylcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTdHJpbmdNYXNrXG4iLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmJqLW1hc2tzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IFN0cmluZ01hc2sgZnJvbSAnLi9TdHJpbmdNYXNrJ1xuXG5leHBvcnQgZGVmYXVsdCBTdHJpbmdNYXNrXG4iLCJcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4uLy4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuL2FnLWdyaWQuY3NzXCIpO1xuXG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcblxudmFyIHRyYW5zZm9ybTtcbnZhciBpbnNlcnRJbnRvO1xuXG5cblxudmFyIG9wdGlvbnMgPSB7XCJobXJcIjp0cnVlfVxuXG5vcHRpb25zLnRyYW5zZm9ybSA9IHRyYW5zZm9ybVxub3B0aW9ucy5pbnNlcnRJbnRvID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gd2luZG93LnBhcmVudC5kb2N1bWVudC5oZWFkIH07XG5cbnZhciB1cGRhdGUgPSByZXF1aXJlKFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzLmpzXCIpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5pZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2FscztcblxuaWYobW9kdWxlLmhvdCkge1xuXHRtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4uLy4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuL2FnLWdyaWQuY3NzXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4uLy4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuL2FnLWdyaWQuY3NzXCIpO1xuXG5cdFx0aWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG5cblx0XHR2YXIgbG9jYWxzID0gKGZ1bmN0aW9uKGEsIGIpIHtcblx0XHRcdHZhciBrZXksIGlkeCA9IDA7XG5cblx0XHRcdGZvcihrZXkgaW4gYSkge1xuXHRcdFx0XHRpZighYiB8fCBhW2tleV0gIT09IGJba2V5XSkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRpZHgrKztcblx0XHRcdH1cblxuXHRcdFx0Zm9yKGtleSBpbiBiKSBpZHgtLTtcblxuXHRcdFx0cmV0dXJuIGlkeCA9PT0gMDtcblx0XHR9KGNvbnRlbnQubG9jYWxzLCBuZXdDb250ZW50LmxvY2FscykpO1xuXG5cdFx0aWYoIWxvY2FscykgdGhyb3cgbmV3IEVycm9yKCdBYm9ydGluZyBDU1MgSE1SIGR1ZSB0byBjaGFuZ2VkIGNzcy1tb2R1bGVzIGxvY2Fscy4nKTtcblxuXHRcdHVwZGF0ZShuZXdDb250ZW50KTtcblx0fSk7XG5cblx0bW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59IiwiXG52YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuLi8uLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanMhLi9hZy10aGVtZS1iYWxoYW0tZGFyay5jc3NcIik7XG5cbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuXG52YXIgdHJhbnNmb3JtO1xudmFyIGluc2VydEludG87XG5cblxuXG52YXIgb3B0aW9ucyA9IHtcImhtclwiOnRydWV9XG5cbm9wdGlvbnMudHJhbnNmb3JtID0gdHJhbnNmb3JtXG5vcHRpb25zLmluc2VydEludG8gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB3aW5kb3cucGFyZW50LmRvY3VtZW50LmhlYWQgfTtcblxudmFyIHVwZGF0ZSA9IHJlcXVpcmUoXCIhLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXMuanNcIikoY29udGVudCwgb3B0aW9ucyk7XG5cbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuXG5pZihtb2R1bGUuaG90KSB7XG5cdG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi8uLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanMhLi4vLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4vYWctdGhlbWUtYmFsaGFtLWRhcmsuY3NzXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4uLy4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuL2FnLXRoZW1lLWJhbGhhbS1kYXJrLmNzc1wiKTtcblxuXHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXG5cdFx0dmFyIGxvY2FscyA9IChmdW5jdGlvbihhLCBiKSB7XG5cdFx0XHR2YXIga2V5LCBpZHggPSAwO1xuXG5cdFx0XHRmb3Ioa2V5IGluIGEpIHtcblx0XHRcdFx0aWYoIWIgfHwgYVtrZXldICE9PSBiW2tleV0pIHJldHVybiBmYWxzZTtcblx0XHRcdFx0aWR4Kys7XG5cdFx0XHR9XG5cblx0XHRcdGZvcihrZXkgaW4gYikgaWR4LS07XG5cblx0XHRcdHJldHVybiBpZHggPT09IDA7XG5cdFx0fShjb250ZW50LmxvY2FscywgbmV3Q29udGVudC5sb2NhbHMpKTtcblxuXHRcdGlmKCFsb2NhbHMpIHRocm93IG5ldyBFcnJvcignQWJvcnRpbmcgQ1NTIEhNUiBkdWUgdG8gY2hhbmdlZCBjc3MtbW9kdWxlcyBsb2NhbHMuJyk7XG5cblx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdH0pO1xuXG5cdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufSIsIlxudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanMhLi4vLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4vYWctdGhlbWUtYmFsaGFtLmNzc1wiKTtcblxuaWYodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG5cbnZhciB0cmFuc2Zvcm07XG52YXIgaW5zZXJ0SW50bztcblxuXG5cbnZhciBvcHRpb25zID0ge1wiaG1yXCI6dHJ1ZX1cblxub3B0aW9ucy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm1cbm9wdGlvbnMuaW5zZXJ0SW50byA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQuaGVhZCB9O1xuXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlcy5qc1wiKShjb250ZW50LCBvcHRpb25zKTtcblxuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG5cbmlmKG1vZHVsZS5ob3QpIHtcblx0bW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uLy4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuLi8uLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanMhLi9hZy10aGVtZS1iYWxoYW0uY3NzXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4uLy4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuL2FnLXRoZW1lLWJhbGhhbS5jc3NcIik7XG5cblx0XHRpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcblxuXHRcdHZhciBsb2NhbHMgPSAoZnVuY3Rpb24oYSwgYikge1xuXHRcdFx0dmFyIGtleSwgaWR4ID0gMDtcblxuXHRcdFx0Zm9yKGtleSBpbiBhKSB7XG5cdFx0XHRcdGlmKCFiIHx8IGFba2V5XSAhPT0gYltrZXldKSByZXR1cm4gZmFsc2U7XG5cdFx0XHRcdGlkeCsrO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3Ioa2V5IGluIGIpIGlkeC0tO1xuXG5cdFx0XHRyZXR1cm4gaWR4ID09PSAwO1xuXHRcdH0oY29udGVudC5sb2NhbHMsIG5ld0NvbnRlbnQubG9jYWxzKSk7XG5cblx0XHRpZighbG9jYWxzKSB0aHJvdyBuZXcgRXJyb3IoJ0Fib3J0aW5nIENTUyBITVIgZHVlIHRvIGNoYW5nZWQgY3NzLW1vZHVsZXMgbG9jYWxzLicpO1xuXG5cdFx0dXBkYXRlKG5ld0NvbnRlbnQpO1xuXHR9KTtcblxuXHRtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn0iLCJcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4uLy4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuL2FnLXRoZW1lLW1hdGVyaWFsLmNzc1wiKTtcblxuaWYodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG5cbnZhciB0cmFuc2Zvcm07XG52YXIgaW5zZXJ0SW50bztcblxuXG5cbnZhciBvcHRpb25zID0ge1wiaG1yXCI6dHJ1ZX1cblxub3B0aW9ucy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm1cbm9wdGlvbnMuaW5zZXJ0SW50byA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQuaGVhZCB9O1xuXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlcy5qc1wiKShjb250ZW50LCBvcHRpb25zKTtcblxuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG5cbmlmKG1vZHVsZS5ob3QpIHtcblx0bW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uLy4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuLi8uLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanMhLi9hZy10aGVtZS1tYXRlcmlhbC5jc3NcIiwgZnVuY3Rpb24oKSB7XG5cdFx0dmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanMhLi4vLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4vYWctdGhlbWUtbWF0ZXJpYWwuY3NzXCIpO1xuXG5cdFx0aWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG5cblx0XHR2YXIgbG9jYWxzID0gKGZ1bmN0aW9uKGEsIGIpIHtcblx0XHRcdHZhciBrZXksIGlkeCA9IDA7XG5cblx0XHRcdGZvcihrZXkgaW4gYSkge1xuXHRcdFx0XHRpZighYiB8fCBhW2tleV0gIT09IGJba2V5XSkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRpZHgrKztcblx0XHRcdH1cblxuXHRcdFx0Zm9yKGtleSBpbiBiKSBpZHgtLTtcblxuXHRcdFx0cmV0dXJuIGlkeCA9PT0gMDtcblx0XHR9KGNvbnRlbnQubG9jYWxzLCBuZXdDb250ZW50LmxvY2FscykpO1xuXG5cdFx0aWYoIWxvY2FscykgdGhyb3cgbmV3IEVycm9yKCdBYm9ydGluZyBDU1MgSE1SIGR1ZSB0byBjaGFuZ2VkIGNzcy1tb2R1bGVzIGxvY2Fscy4nKTtcblxuXHRcdHVwZGF0ZShuZXdDb250ZW50KTtcblx0fSk7XG5cblx0bW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59IiwiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiTWFza3NcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wiQkJqXCJdID0gcm9vdFtcIkJCalwiXSB8fCB7fSwgcm9vdFtcIkJCalwiXVtcIk1hc2tzXCJdID0gZmFjdG9yeSgpO1xufSkodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuIFxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyB3ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbiBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbiBcdFx0XHR9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSA0Mik7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgOTkwNTRiZDc5ZjIzZWEwZjA5ODgiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmFzaXMtYWdncmlkLWNvbXBvbmVudHMgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgQ29tcG9uZW50IGZyb20gJy4vQ29tcG9uZW50J1xuXG5leHBvcnQgZGVmYXVsdCBDb21wb25lbnRcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9Db21wb25lbnQvaW5kZXguanMiLCJpbXBvcnQgeyBkZWNvcmF0ZSwgY3JlYXRlRGVmYXVsdFNldHRlcixcbiAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycywgZ2V0T3duS2V5cywgYmluZCB9IGZyb20gJy4vcHJpdmF0ZS91dGlscyc7XG5jb25zdCB7IGRlZmluZVByb3BlcnR5LCBnZXRQcm90b3R5cGVPZiB9ID0gT2JqZWN0O1xuXG5sZXQgbWFwU3RvcmU7XG5cbmZ1bmN0aW9uIGdldEJvdW5kU3VwZXIob2JqLCBmbikge1xuICBpZiAodHlwZW9mIFdlYWtNYXAgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFVzaW5nIEBhdXRvYmluZCBvbiAke2ZuLm5hbWV9KCkgcmVxdWlyZXMgV2Vha01hcCBzdXBwb3J0IGR1ZSB0byBpdHMgdXNlIG9mIHN1cGVyLiR7Zm4ubmFtZX0oKVxuICAgICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qYXlwaGVscHMvY29yZS1kZWNvcmF0b3JzLmpzL2lzc3Vlcy8yMGBcbiAgICApO1xuICB9XG5cbiAgaWYgKCFtYXBTdG9yZSkge1xuICAgICBtYXBTdG9yZSA9IG5ldyBXZWFrTWFwKCk7XG4gIH1cblxuICBpZiAobWFwU3RvcmUuaGFzKG9iaikgPT09IGZhbHNlKSB7XG4gICAgbWFwU3RvcmUuc2V0KG9iaiwgbmV3IFdlYWtNYXAoKSk7XG4gIH1cblxuICBjb25zdCBzdXBlclN0b3JlID0gbWFwU3RvcmUuZ2V0KG9iaik7XG5cbiAgaWYgKHN1cGVyU3RvcmUuaGFzKGZuKSA9PT0gZmFsc2UpIHtcbiAgICBzdXBlclN0b3JlLnNldChmbiwgYmluZChmbiwgb2JqKSk7XG4gIH1cblxuICByZXR1cm4gc3VwZXJTdG9yZS5nZXQoZm4pO1xufVxuXG5mdW5jdGlvbiBhdXRvYmluZENsYXNzKGtsYXNzKSB7XG4gIGNvbnN0IGRlc2NzID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhrbGFzcy5wcm90b3R5cGUpO1xuICBjb25zdCBrZXlzID0gZ2V0T3duS2V5cyhkZXNjcyk7XG5cbiAgZm9yIChsZXQgaSA9IDAsIGwgPSBrZXlzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG4gICAgY29uc3QgZGVzYyA9IGRlc2NzW2tleV07XG5cbiAgICBpZiAodHlwZW9mIGRlc2MudmFsdWUgIT09ICdmdW5jdGlvbicgfHwga2V5ID09PSAnY29uc3RydWN0b3InKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBkZWZpbmVQcm9wZXJ0eShrbGFzcy5wcm90b3R5cGUsIGtleSwgYXV0b2JpbmRNZXRob2Qoa2xhc3MucHJvdG90eXBlLCBrZXksIGRlc2MpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhdXRvYmluZE1ldGhvZCh0YXJnZXQsIGtleSwgeyB2YWx1ZTogZm4sIGNvbmZpZ3VyYWJsZSwgZW51bWVyYWJsZSB9KSB7XG4gIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYEBhdXRvYmluZCBjYW4gb25seSBiZSB1c2VkIG9uIGZ1bmN0aW9ucywgbm90OiAke2ZufWApO1xuICB9XG5cbiAgY29uc3QgeyBjb25zdHJ1Y3RvciB9ID0gdGFyZ2V0O1xuXG4gIHJldHVybiB7XG4gICAgY29uZmlndXJhYmxlLFxuICAgIGVudW1lcmFibGUsXG5cbiAgICBnZXQoKSB7XG4gICAgICAvLyBDbGFzcy5wcm90b3R5cGUua2V5IGxvb2t1cFxuICAgICAgLy8gU29tZW9uZSBhY2Nlc3NlcyB0aGUgcHJvcGVydHkgZGlyZWN0bHkgb24gdGhlIHByb3RvdHlwZSBvbiB3aGljaCBpdCBpc1xuICAgICAgLy8gYWN0dWFsbHkgZGVmaW5lZCBvbiwgaS5lLiBDbGFzcy5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoa2V5KVxuICAgICAgaWYgKHRoaXMgPT09IHRhcmdldCkge1xuICAgICAgICByZXR1cm4gZm47XG4gICAgICB9XG5cbiAgICAgIC8vIENsYXNzLnByb3RvdHlwZS5rZXkgbG9va3VwXG4gICAgICAvLyBTb21lb25lIGFjY2Vzc2VzIHRoZSBwcm9wZXJ0eSBkaXJlY3RseSBvbiBhIHByb3RvdHlwZSBidXQgaXQgd2FzIGZvdW5kXG4gICAgICAvLyB1cCB0aGUgY2hhaW4sIG5vdCBkZWZpbmVkIGRpcmVjdGx5IG9uIGl0XG4gICAgICAvLyBpLmUuIENsYXNzLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eShrZXkpID09IGZhbHNlICYmIGtleSBpbiBDbGFzcy5wcm90b3R5cGVcbiAgICAgIGlmICh0aGlzLmNvbnN0cnVjdG9yICE9PSBjb25zdHJ1Y3RvciAmJiBnZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvciA9PT0gY29uc3RydWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIGZuO1xuICAgICAgfVxuXG4gICAgICAvLyBBdXRvYm91bmQgbWV0aG9kIGNhbGxpbmcgc3VwZXIuc2FtZU1ldGhvZCgpIHdoaWNoIGlzIGFsc28gYXV0b2JvdW5kIGFuZCBzbyBvbi5cbiAgICAgIGlmICh0aGlzLmNvbnN0cnVjdG9yICE9PSBjb25zdHJ1Y3RvciAmJiBrZXkgaW4gdGhpcy5jb25zdHJ1Y3Rvci5wcm90b3R5cGUpIHtcbiAgICAgICAgcmV0dXJuIGdldEJvdW5kU3VwZXIodGhpcywgZm4pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBib3VuZEZuID0gYmluZChmbiwgdGhpcyk7XG5cbiAgICAgIGRlZmluZVByb3BlcnR5KHRoaXMsIGtleSwge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAvLyBOT1QgZW51bWVyYWJsZSB3aGVuIGl0J3MgYSBib3VuZCBtZXRob2RcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHZhbHVlOiBib3VuZEZuXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGJvdW5kRm47XG4gICAgfSxcbiAgICBzZXQ6IGNyZWF0ZURlZmF1bHRTZXR0ZXIoa2V5KVxuICB9O1xufVxuXG5mdW5jdGlvbiBoYW5kbGUoYXJncykge1xuICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gYXV0b2JpbmRDbGFzcyguLi5hcmdzKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYXV0b2JpbmRNZXRob2QoLi4uYXJncyk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXV0b2JpbmQoLi4uYXJncykge1xuICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGhhbmRsZShhcmd1bWVudHMpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGhhbmRsZShhcmdzKTtcbiAgfVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtZGVjb3JhdG9ycy9zcmMvYXV0b2JpbmQuanMiLCJpbXBvcnQgeyBkZWNvcmF0ZSB9IGZyb20gJy4vcHJpdmF0ZS91dGlscyc7XG5cbmNvbnN0IEdFTkVSSUNfRlVOQ1RJT05fRVJST1IgPSAne2NoaWxkfSBkb2VzIG5vdCBwcm9wZXJseSBvdmVycmlkZSB7cGFyZW50fSc7XG5jb25zdCBGVU5DVElPTl9SRUdFWFAgPSAvXmZ1bmN0aW9uIChbXyRhLXpBLVpcXHhBMC1cXHVGRkZGXVtfJGEtekEtWjAtOVxceEEwLVxcdUZGRkZdKik/KFxcKFteXFwpXSpcXCkpW1xcc1xcU10rJC87XG5cbmNsYXNzIFN5bnRheEVycm9yUmVwb3J0ZXIge1xuICBwYXJlbnRLbGFzcztcbiAgY2hpbGRLbGFzcztcbiAgcGFyZW50RGVzY3JpcHRvcjtcbiAgY2hpbGREZXNjcmlwdG9yO1xuICBcbiAgZ2V0IGtleSgpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZERlc2NyaXB0b3Iua2V5OyAgXG4gIH1cbiAgXG4gIGdldCBwYXJlbnROb3RhdGlvbigpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5wYXJlbnRLbGFzcy5jb25zdHJ1Y3Rvci5uYW1lfSMke3RoaXMucGFyZW50UHJvcGVydHlTaWduYXR1cmV9YDtcbiAgfVxuXG4gIGdldCBjaGlsZE5vdGF0aW9uKCkge1xuICAgIHJldHVybiBgJHt0aGlzLmNoaWxkS2xhc3MuY29uc3RydWN0b3IubmFtZX0jJHt0aGlzLmNoaWxkUHJvcGVydHlTaWduYXR1cmV9YDtcbiAgfVxuICBcbiAgZ2V0IHBhcmVudFRvcGljKCkge1xuICAgIHJldHVybiB0aGlzLl9nZXRUb3BpYyh0aGlzLnBhcmVudERlc2NyaXB0b3IpO1xuICB9XG4gIFxuICBnZXQgY2hpbGRUb3BpYygpIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0VG9waWModGhpcy5jaGlsZERlc2NyaXB0b3IpO1xuICB9XG4gIFxuICBfZ2V0VG9waWMoZGVzY3JpcHRvcikge1xuICAgIGlmIChkZXNjcmlwdG9yID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBudWxsOyAgXG4gICAgfVxuICAgIFxuICAgIGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIHtcbiAgICAgIHJldHVybiBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIH1cbiAgICBcbiAgICBpZiAoJ2dldCcgaW4gZGVzY3JpcHRvcikge1xuICAgICAgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0O1xuICAgIH1cbiAgICBcbiAgICBpZiAoJ3NldCcgaW4gZGVzY3JpcHRvcikge1xuICAgICAgcmV0dXJuIGRlc2NyaXB0b3Iuc2V0O1xuICAgIH1cbiAgfVxuICBcbiAgZ2V0IHBhcmVudFByb3BlcnR5U2lnbmF0dXJlKCkge1xuICAgIHJldHVybiB0aGlzLl9leHRyYWN0VG9waWNTaWduYXR1cmUodGhpcy5wYXJlbnRUb3BpYyk7IFxuICB9XG4gIFxuICBnZXQgY2hpbGRQcm9wZXJ0eVNpZ25hdHVyZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZXh0cmFjdFRvcGljU2lnbmF0dXJlKHRoaXMuY2hpbGRUb3BpYyk7IFxuICB9XG4gIFxuICBfZXh0cmFjdFRvcGljU2lnbmF0dXJlKHRvcGljKSB7XG4gICAgc3dpdGNoICh0eXBlb2YgdG9waWMpIHtcbiAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4dHJhY3RGdW5jdGlvblNpZ25hdHVyZSh0b3BpYyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5rZXk7XG4gICAgfVxuICB9XG4gIFxuICBfZXh0cmFjdEZ1bmN0aW9uU2lnbmF0dXJlKGZuKSB7XG4gICAgcmV0dXJuIGZuXG4gICAgICAudG9TdHJpbmcoKVxuICAgICAgLnJlcGxhY2UoXG4gICAgICAgIEZVTkNUSU9OX1JFR0VYUCxcbiAgICAgICAgKG1hdGNoLCBuYW1lID0gdGhpcy5rZXksIHBhcmFtcykgPT4gbmFtZSArIHBhcmFtc1xuICAgICAgKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHBhcmVudEtsYXNzLCBjaGlsZEtsYXNzLCBwYXJlbnREZXNjcmlwdG9yLCBjaGlsZERlc2NyaXB0b3IpIHtcbiAgICB0aGlzLnBhcmVudEtsYXNzID0gcGFyZW50S2xhc3M7XG4gICAgdGhpcy5jaGlsZEtsYXNzID0gY2hpbGRLbGFzcztcbiAgICB0aGlzLnBhcmVudERlc2NyaXB0b3IgPSBwYXJlbnREZXNjcmlwdG9yO1xuICAgIHRoaXMuY2hpbGREZXNjcmlwdG9yID0gY2hpbGREZXNjcmlwdG9yO1xuICB9XG4gIFxuICBhc3NlcnQoY29uZGl0aW9uLCBtc2cgPSAnJykge1xuICAgIGlmIChjb25kaXRpb24gIT09IHRydWUpIHtcbiAgICAgIHRoaXMuZXJyb3IoR0VORVJJQ19GVU5DVElPTl9FUlJPUiArIG1zZyk7XG4gICAgfVxuICB9XG4gIFxuICBlcnJvcihtc2cpIHtcbiAgICBtc2cgPSBtc2dcbiAgICAgIC8vIFJlcGxhY2UgbGF6aWx5LCBiZWNhdXNlIHRoZXkgYWN0dWFsbHkgbWlnaHQgbm90XG4gICAgICAvLyBiZSBhdmFpbGFibGUgaW4gYWxsIGNhc2VzXG4gICAgICAucmVwbGFjZSgne3BhcmVudH0nLCBtID0+IHRoaXMucGFyZW50Tm90YXRpb24pXG4gICAgICAucmVwbGFjZSgne2NoaWxkfScsIG0gPT4gdGhpcy5jaGlsZE5vdGF0aW9uKTtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IobXNnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXREZXNjcmlwdG9yVHlwZShkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCd2YWx1ZScpKSB7XG4gICAgcmV0dXJuICdkYXRhJztcbiAgfVxuXG4gIGlmIChkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCdnZXQnKSB8fCBkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCdzZXQnKSkge1xuICAgIHJldHVybiAnYWNjZXNzb3InO1xuICB9XG5cbiAgLy8gSWYgbm9uZSBvZiB0aGVtIGV4aXN0LCBicm93c2VycyB0cmVhdCBpdCBhc1xuICAvLyBhIGRhdGEgZGVzY3JpcHRvciB3aXRoIGEgdmFsdWUgb2YgYHVuZGVmaW5lZGBcbiAgcmV0dXJuICdkYXRhJztcbn1cblxuZnVuY3Rpb24gY2hlY2tGdW5jdGlvblNpZ25hdHVyZXMocGFyZW50LCBjaGlsZCwgcmVwb3J0ZXIpIHtcbiAgcmVwb3J0ZXIuYXNzZXJ0KHBhcmVudC5sZW5ndGggPT09IGNoaWxkLmxlbmd0aCk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrRGF0YURlc2NyaXB0b3JzKHBhcmVudCwgY2hpbGQsIHJlcG9ydGVyKSB7XG4gIGNvbnN0IHBhcmVudFZhbHVlVHlwZSA9IHR5cGVvZiBwYXJlbnQudmFsdWU7XG4gIGNvbnN0IGNoaWxkVmFsdWVUeXBlID0gdHlwZW9mIGNoaWxkLnZhbHVlO1xuICBcbiAgaWYgKHBhcmVudFZhbHVlVHlwZSA9PT0gJ3VuZGVmaW5lZCcgJiYgY2hpbGRWYWx1ZVR5cGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgLy8gY2xhc3MgcHJvcGVydGllcyBjYW4gYmUgYW55IGV4cHJlc3Npb24sIHdoaWNoIGlzbid0IHJhbiB1bnRpbCB0aGVcbiAgICAvLyB0aGUgaW5zdGFuY2UgaXMgY3JlYXRlZCwgc28gd2UgY2FuJ3QgcmVsaWFibHkgZ2V0IHR5cGUgaW5mb3JtYXRpb25cbiAgICAvLyBmb3IgdGhlbSB5ZXQgKHBlciBzcGVjKS4gUGVyaGFwcyB3aGVuIEJhYmVsIGluY2x1ZGVzIGZsb3ctdHlwZSBpbmZvXG4gICAgLy8gaW4gcnVudGltZT8gVHJpZWQgcmVnZXggc29sdXRpb25zLCBidXQgc3VwZXIgaGFja3kgYW5kIG9ubHkgZmVhc2libGVcbiAgICAvLyBvbiBwcmltaXRpdmVzLCB3aGljaCBpcyBjb25mdXNpbmcgZm9yIHVzYWdlLi4uXG4gICAgcmVwb3J0ZXIuZXJyb3IoYGRlc2NyaXB0b3IgdmFsdWVzIGFyZSBib3RoIHVuZGVmaW5lZC4gKGNsYXNzIHByb3BlcnRpZXMgYXJlIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZCknYCk7XG4gIH1cbiAgXG4gIGlmIChwYXJlbnRWYWx1ZVR5cGUgIT09IGNoaWxkVmFsdWVUeXBlKSB7XG4gICAgY29uc3QgaXNGdW5jdGlvbk92ZXJVbmRlZmluZWQgPSAoY2hpbGRWYWx1ZVR5cGUgPT09ICdmdW5jdGlvbicgJiYgcGFyZW50VmFsdWVUeXBlID09PSB1bmRlZmluZWQpO1xuICAgIC8vIEV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgY2xhc3MgcHJvcGVydGllcywgdGhpc1xuICAgIC8vIHdpbGwgc3RpbGwgaGFuZGxlIG1vcmUgdGhhbiBqdXN0IGZ1bmN0aW9ucywganVzdCBpbiBjYXNlLlxuICAgIC8vIFNoYWRvd2luZyBhbiB1bmRlZmluZWQgdmFsdWUgaXMgYW4gZXJyb3IgaWYgdGhlIGluaGVyaXRlZFxuICAgIC8vIHZhbHVlIHdhcyB1bmRlZmluZWQgKHVzdWFsbHkgYSBjbGFzcyBwcm9wZXJ0eSwgbm90IGEgbWV0aG9kKVxuICAgIGlmIChpc0Z1bmN0aW9uT3ZlclVuZGVmaW5lZCB8fCBwYXJlbnRWYWx1ZVR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVwb3J0ZXIuZXJyb3IoYHZhbHVlIHR5cGVzIGRvIG5vdCBtYXRjaC4ge3BhcmVudH0gaXMgXCIke3BhcmVudFZhbHVlVHlwZX1cIiwge2NoaWxkfSBpcyBcIiR7Y2hpbGRWYWx1ZVR5cGV9XCJgKTtcbiAgICB9XG4gIH1cbiAgXG4gIC8vIFN3aXRjaCwgaW4gcHJlcGFyYXRpb24gZm9yIHN1cHBvcnRpbmcgbW9yZSB0eXBlc1xuICBzd2l0Y2ggKGNoaWxkVmFsdWVUeXBlKSB7XG4gICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgY2hlY2tGdW5jdGlvblNpZ25hdHVyZXMocGFyZW50LnZhbHVlLCBjaGlsZC52YWx1ZSwgcmVwb3J0ZXIpO1xuICAgICAgYnJlYWs7XG4gICAgICBcbiAgICBkZWZhdWx0OlxuICAgICAgcmVwb3J0ZXIuZXJyb3IoYFVuZXhwZWN0ZWQgZXJyb3IuIFBsZWFzZSBmaWxlIGEgYnVnIHdpdGg6IHtwYXJlbnR9IGlzIFwiJHtwYXJlbnRWYWx1ZVR5cGV9XCIsIHtjaGlsZH0gaXMgXCIke2NoaWxkVmFsdWVUeXBlfVwiYCk7XG4gICAgICBicmVhaztcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja0FjY2Vzc29yRGVzY3JpcHRvcnMocGFyZW50LCBjaGlsZCwgcmVwb3J0ZXIpIHtcbiAgY29uc3QgcGFyZW50SGFzR2V0dGVyID0gdHlwZW9mIHBhcmVudC5nZXQgPT09ICdmdW5jdGlvbic7XG4gIGNvbnN0IGNoaWxkSGFzR2V0dGVyID0gdHlwZW9mIGNoaWxkLmdldCA9PT0gJ2Z1bmN0aW9uJztcbiAgY29uc3QgcGFyZW50SGFzU2V0dGVyID0gdHlwZW9mIHBhcmVudC5zZXQgPT09ICdmdW5jdGlvbic7XG4gIGNvbnN0IGNoaWxkSGFzU2V0dGVyID0gdHlwZW9mIGNoaWxkLnNldCA9PT0gJ2Z1bmN0aW9uJztcbiAgXG4gIGlmIChwYXJlbnRIYXNHZXR0ZXIgfHwgY2hpbGRIYXNHZXR0ZXIpIHtcbiAgICBpZiAoIXBhcmVudEhhc0dldHRlciAmJiBwYXJlbnRIYXNTZXR0ZXIpIHtcbiAgICAgIHJlcG9ydGVyLmVycm9yKGB7cGFyZW50fSBpcyBzZXR0ZXIgYnV0IHtjaGlsZH0gaXMgZ2V0dGVyYCk7XG4gICAgfVxuICAgIFxuICAgIGlmICghY2hpbGRIYXNHZXR0ZXIgJiYgY2hpbGRIYXNTZXR0ZXIpIHtcbiAgICAgIHJlcG9ydGVyLmVycm9yKGB7cGFyZW50fSBpcyBnZXR0ZXIgYnV0IHtjaGlsZH0gaXMgc2V0dGVyYCk7XG4gICAgfVxuICAgIFxuICAgIGNoZWNrRnVuY3Rpb25TaWduYXR1cmVzKHBhcmVudC5nZXQsIGNoaWxkLmdldCwgcmVwb3J0ZXIpO1xuICB9XG4gIFxuICBpZiAocGFyZW50SGFzU2V0dGVyIHx8IGNoaWxkSGFzU2V0dGVyKSB7XG4gICAgaWYgKCFwYXJlbnRIYXNTZXR0ZXIgJiYgcGFyZW50SGFzR2V0dGVyKSB7XG4gICAgICByZXBvcnRlci5lcnJvcihge3BhcmVudH0gaXMgZ2V0dGVyIGJ1dCB7Y2hpbGR9IGlzIHNldHRlcmApO1xuICAgIH1cbiAgICBcbiAgICBpZiAoIWNoaWxkSGFzU2V0dGVyICYmIGNoaWxkSGFzR2V0dGVyKSB7XG4gICAgICByZXBvcnRlci5lcnJvcihge3BhcmVudH0gaXMgc2V0dGVyIGJ1dCB7Y2hpbGR9IGlzIGdldHRlcmApO1xuICAgIH1cbiAgICBcbiAgICBjaGVja0Z1bmN0aW9uU2lnbmF0dXJlcyhwYXJlbnQuc2V0LCBjaGlsZC5zZXQsIHJlcG9ydGVyKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja0Rlc2NyaXB0b3JzKHBhcmVudCwgY2hpbGQsIHJlcG9ydGVyKSB7XG4gIGNvbnN0IHBhcmVudFR5cGUgPSBnZXREZXNjcmlwdG9yVHlwZShwYXJlbnQpO1xuICBjb25zdCBjaGlsZFR5cGUgPSBnZXREZXNjcmlwdG9yVHlwZShjaGlsZCk7XG5cbiAgaWYgKHBhcmVudFR5cGUgIT09IGNoaWxkVHlwZSkge1xuICAgIHJlcG9ydGVyLmVycm9yKGBkZXNjcmlwdG9yIHR5cGVzIGRvIG5vdCBtYXRjaC4ge3BhcmVudH0gaXMgXCIke3BhcmVudFR5cGV9XCIsIHtjaGlsZH0gaXMgXCIke2NoaWxkVHlwZX1cImApO1xuICB9XG5cbiAgc3dpdGNoIChjaGlsZFR5cGUpIHtcbiAgICBjYXNlICdkYXRhJzpcbiAgICAgIGNoZWNrRGF0YURlc2NyaXB0b3JzKHBhcmVudCwgY2hpbGQsIHJlcG9ydGVyKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnYWNjZXNzb3InOlxuICAgICAgY2hlY2tBY2Nlc3NvckRlc2NyaXB0b3JzKHBhcmVudCwgY2hpbGQsIHJlcG9ydGVyKTtcbiAgICAgIGJyZWFrO1xuICB9XG59XG5cbmNvbnN0IHN1Z2dlc3Rpb25UcmFuc2Zvcm1zID0gW1xuICBrZXkgPT4ga2V5LnRvTG93ZXJDYXNlKCksXG4gIGtleSA9PiBrZXkudG9VcHBlckNhc2UoKSxcbiAga2V5ID0+IGtleSArICdzJyxcbiAga2V5ID0+IGtleS5zbGljZSgwLCAtMSksXG4gIGtleSA9PiBrZXkuc2xpY2UoMSwga2V5Lmxlbmd0aCksXG5dO1xuXG5mdW5jdGlvbiBmaW5kUG9zc2libGVBbHRlcm5hdGl2ZXMoc3VwZXJLbGFzcywga2V5KSB7XG4gIGZvciAobGV0IGkgPSAwLCBsID0gc3VnZ2VzdGlvblRyYW5zZm9ybXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgY29uc3QgZm4gPSBzdWdnZXN0aW9uVHJhbnNmb3Jtc1tpXTtcbiAgICBjb25zdCBzdWdnZXN0aW9uID0gZm4oa2V5KTtcblxuICAgIGlmIChzdWdnZXN0aW9uIGluIHN1cGVyS2xhc3MpIHtcbiAgICAgIHJldHVybiBzdWdnZXN0aW9uO1xuICAgIH1cbiAgfVxuICBcbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZURlc2NyaXB0b3IodGFyZ2V0LCBrZXksIGRlc2NyaXB0b3IpIHtcbiAgZGVzY3JpcHRvci5rZXkgPSBrZXk7XG4gIGNvbnN0IHN1cGVyS2xhc3MgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGFyZ2V0KTtcbiAgY29uc3Qgc3VwZXJEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzdXBlcktsYXNzLCBrZXkpO1xuICBjb25zdCByZXBvcnRlciA9IG5ldyBTeW50YXhFcnJvclJlcG9ydGVyKHN1cGVyS2xhc3MsIHRhcmdldCwgc3VwZXJEZXNjcmlwdG9yLCBkZXNjcmlwdG9yKTtcbiAgXG4gIGlmIChzdXBlckRlc2NyaXB0b3IgPT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHN1Z2dlc3RlZEtleSA9IGZpbmRQb3NzaWJsZUFsdGVybmF0aXZlcyhzdXBlcktsYXNzLCBrZXkpO1xuICAgIGNvbnN0IHN1Z2dlc3Rpb24gPSBzdWdnZXN0ZWRLZXkgPyBgXFxuXFxuICBEaWQgeW91IG1lYW4gXCIke3N1Z2dlc3RlZEtleX1cIj9gIDogJyc7XG4gICAgcmVwb3J0ZXIuZXJyb3IoYE5vIGRlc2NyaXB0b3IgbWF0Y2hpbmcge2NoaWxkfSB3YXMgZm91bmQgb24gdGhlIHByb3RvdHlwZSBjaGFpbi4ke3N1Z2dlc3Rpb259YCk7XG4gIH1cbiAgXG4gIGNoZWNrRGVzY3JpcHRvcnMoc3VwZXJEZXNjcmlwdG9yLCBkZXNjcmlwdG9yLCByZXBvcnRlcik7XG4gIFxuICByZXR1cm4gZGVzY3JpcHRvcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3ZlcnJpZGUoLi4uYXJncykge1xuICByZXR1cm4gZGVjb3JhdGUoaGFuZGxlRGVzY3JpcHRvciwgYXJncyk7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1kZWNvcmF0b3JzL3NyYy9vdmVycmlkZS5qcyIsImltcG9ydCBTeW1ib2wgZnJvbSAnLi9fU3ltYm9sLmpzJztcbmltcG9ydCBnZXRSYXdUYWcgZnJvbSAnLi9fZ2V0UmF3VGFnLmpzJztcbmltcG9ydCBvYmplY3RUb1N0cmluZyBmcm9tICcuL19vYmplY3RUb1N0cmluZy5qcyc7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBudWxsVGFnID0gJ1tvYmplY3QgTnVsbF0nLFxuICAgIHVuZGVmaW5lZFRhZyA9ICdbb2JqZWN0IFVuZGVmaW5lZF0nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0VGFnYCB3aXRob3V0IGZhbGxiYWNrcyBmb3IgYnVnZ3kgZW52aXJvbm1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXRUYWcodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6IG51bGxUYWc7XG4gIH1cbiAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFsdWUpKVxuICAgID8gZ2V0UmF3VGFnKHZhbHVlKVxuICAgIDogb2JqZWN0VG9TdHJpbmcodmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlR2V0VGFnO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUdldFRhZy5qcyIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc09iamVjdExpa2U7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzT2JqZWN0TGlrZS5qcyIsIi8qXG5cdE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG5cdEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG4vLyBjc3MgYmFzZSBjb2RlLCBpbmplY3RlZCBieSB0aGUgY3NzLWxvYWRlclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbih1c2VTb3VyY2VNYXApIHtcblx0dmFyIGxpc3QgPSBbXTtcblxuXHQvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cdGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcblx0XHRyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcblx0XHRcdHZhciBjb250ZW50ID0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtLCB1c2VTb3VyY2VNYXApO1xuXHRcdFx0aWYoaXRlbVsyXSkge1xuXHRcdFx0XHRyZXR1cm4gXCJAbWVkaWEgXCIgKyBpdGVtWzJdICsgXCJ7XCIgKyBjb250ZW50ICsgXCJ9XCI7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gY29udGVudDtcblx0XHRcdH1cblx0XHR9KS5qb2luKFwiXCIpO1xuXHR9O1xuXG5cdC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG5cdGxpc3QuaSA9IGZ1bmN0aW9uKG1vZHVsZXMsIG1lZGlhUXVlcnkpIHtcblx0XHRpZih0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIilcblx0XHRcdG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIFwiXCJdXTtcblx0XHR2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgaWQgPSB0aGlzW2ldWzBdO1xuXHRcdFx0aWYodHlwZW9mIGlkID09PSBcIm51bWJlclwiKVxuXHRcdFx0XHRhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG5cdFx0fVxuXHRcdGZvcihpID0gMDsgaSA8IG1vZHVsZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBpdGVtID0gbW9kdWxlc1tpXTtcblx0XHRcdC8vIHNraXAgYWxyZWFkeSBpbXBvcnRlZCBtb2R1bGVcblx0XHRcdC8vIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbm90IDEwMCUgcGVyZmVjdCBmb3Igd2VpcmQgbWVkaWEgcXVlcnkgY29tYmluYXRpb25zXG5cdFx0XHQvLyAgd2hlbiBhIG1vZHVsZSBpcyBpbXBvcnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIGRpZmZlcmVudCBtZWRpYSBxdWVyaWVzLlxuXHRcdFx0Ly8gIEkgaG9wZSB0aGlzIHdpbGwgbmV2ZXIgb2NjdXIgKEhleSB0aGlzIHdheSB3ZSBoYXZlIHNtYWxsZXIgYnVuZGxlcylcblx0XHRcdGlmKHR5cGVvZiBpdGVtWzBdICE9PSBcIm51bWJlclwiIHx8ICFhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG5cdFx0XHRcdGlmKG1lZGlhUXVlcnkgJiYgIWl0ZW1bMl0pIHtcblx0XHRcdFx0XHRpdGVtWzJdID0gbWVkaWFRdWVyeTtcblx0XHRcdFx0fSBlbHNlIGlmKG1lZGlhUXVlcnkpIHtcblx0XHRcdFx0XHRpdGVtWzJdID0gXCIoXCIgKyBpdGVtWzJdICsgXCIpIGFuZCAoXCIgKyBtZWRpYVF1ZXJ5ICsgXCIpXCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0bGlzdC5wdXNoKGl0ZW0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0cmV0dXJuIGxpc3Q7XG59O1xuXG5mdW5jdGlvbiBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0sIHVzZVNvdXJjZU1hcCkge1xuXHR2YXIgY29udGVudCA9IGl0ZW1bMV0gfHwgJyc7XG5cdHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcblx0aWYgKCFjc3NNYXBwaW5nKSB7XG5cdFx0cmV0dXJuIGNvbnRlbnQ7XG5cdH1cblxuXHRpZiAodXNlU291cmNlTWFwICYmIHR5cGVvZiBidG9hID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0dmFyIHNvdXJjZU1hcHBpbmcgPSB0b0NvbW1lbnQoY3NzTWFwcGluZyk7XG5cdFx0dmFyIHNvdXJjZVVSTHMgPSBjc3NNYXBwaW5nLnNvdXJjZXMubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcblx0XHRcdHJldHVybiAnLyojIHNvdXJjZVVSTD0nICsgY3NzTWFwcGluZy5zb3VyY2VSb290ICsgc291cmNlICsgJyAqLydcblx0XHR9KTtcblxuXHRcdHJldHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oJ1xcbicpO1xuXHR9XG5cblx0cmV0dXJuIFtjb250ZW50XS5qb2luKCdcXG4nKTtcbn1cblxuLy8gQWRhcHRlZCBmcm9tIGNvbnZlcnQtc291cmNlLW1hcCAoTUlUKVxuZnVuY3Rpb24gdG9Db21tZW50KHNvdXJjZU1hcCkge1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcblx0dmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSk7XG5cdHZhciBkYXRhID0gJ3NvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LCcgKyBiYXNlNjQ7XG5cblx0cmV0dXJuICcvKiMgJyArIGRhdGEgKyAnICovJztcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2xpYi9jc3MtYmFzZS5qcyIsIi8qXG5cdE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG5cdEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG5cbnZhciBzdHlsZXNJbkRvbSA9IHt9O1xuXG52YXJcdG1lbW9pemUgPSBmdW5jdGlvbiAoZm4pIHtcblx0dmFyIG1lbW87XG5cblx0cmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0XHRpZiAodHlwZW9mIG1lbW8gPT09IFwidW5kZWZpbmVkXCIpIG1lbW8gPSBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdHJldHVybiBtZW1vO1xuXHR9O1xufTtcblxudmFyIGlzT2xkSUUgPSBtZW1vaXplKGZ1bmN0aW9uICgpIHtcblx0Ly8gVGVzdCBmb3IgSUUgPD0gOSBhcyBwcm9wb3NlZCBieSBCcm93c2VyaGFja3Ncblx0Ly8gQHNlZSBodHRwOi8vYnJvd3NlcmhhY2tzLmNvbS8jaGFjay1lNzFkODY5MmY2NTMzNDE3M2ZlZTcxNWMyMjJjYjgwNVxuXHQvLyBUZXN0cyBmb3IgZXhpc3RlbmNlIG9mIHN0YW5kYXJkIGdsb2JhbHMgaXMgdG8gYWxsb3cgc3R5bGUtbG9hZGVyXG5cdC8vIHRvIG9wZXJhdGUgY29ycmVjdGx5IGludG8gbm9uLXN0YW5kYXJkIGVudmlyb25tZW50c1xuXHQvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrLWNvbnRyaWIvc3R5bGUtbG9hZGVyL2lzc3Vlcy8xNzdcblx0cmV0dXJuIHdpbmRvdyAmJiBkb2N1bWVudCAmJiBkb2N1bWVudC5hbGwgJiYgIXdpbmRvdy5hdG9iO1xufSk7XG5cbnZhciBnZXRUYXJnZXQgPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldCk7XG59O1xuXG52YXIgZ2V0RWxlbWVudCA9IChmdW5jdGlvbiAoZm4pIHtcblx0dmFyIG1lbW8gPSB7fTtcblxuXHRyZXR1cm4gZnVuY3Rpb24odGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgcGFzc2luZyBmdW5jdGlvbiBpbiBvcHRpb25zLCB0aGVuIHVzZSBpdCBmb3IgcmVzb2x2ZSBcImhlYWRcIiBlbGVtZW50LlxuICAgICAgICAgICAgICAgIC8vIFVzZWZ1bCBmb3IgU2hhZG93IFJvb3Qgc3R5bGUgaS5lXG4gICAgICAgICAgICAgICAgLy8ge1xuICAgICAgICAgICAgICAgIC8vICAgaW5zZXJ0SW50bzogZnVuY3Rpb24gKCkgeyByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNmb29cIikuc2hhZG93Um9vdCB9XG4gICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG5cdFx0XHR2YXIgc3R5bGVUYXJnZXQgPSBnZXRUYXJnZXQuY2FsbCh0aGlzLCB0YXJnZXQpO1xuXHRcdFx0Ly8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcblx0XHRcdGlmICh3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQgJiYgc3R5bGVUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHQvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuXHRcdFx0XHRcdC8vIGR1ZSB0byBjcm9zcy1vcmlnaW4gcmVzdHJpY3Rpb25zXG5cdFx0XHRcdFx0c3R5bGVUYXJnZXQgPSBzdHlsZVRhcmdldC5jb250ZW50RG9jdW1lbnQuaGVhZDtcblx0XHRcdFx0fSBjYXRjaChlKSB7XG5cdFx0XHRcdFx0c3R5bGVUYXJnZXQgPSBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRtZW1vW3RhcmdldF0gPSBzdHlsZVRhcmdldDtcblx0XHR9XG5cdFx0cmV0dXJuIG1lbW9bdGFyZ2V0XVxuXHR9O1xufSkoKTtcblxudmFyIHNpbmdsZXRvbiA9IG51bGw7XG52YXJcdHNpbmdsZXRvbkNvdW50ZXIgPSAwO1xudmFyXHRzdHlsZXNJbnNlcnRlZEF0VG9wID0gW107XG5cbnZhclx0Zml4VXJscyA9IHJlcXVpcmUoXCIuL3VybHNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obGlzdCwgb3B0aW9ucykge1xuXHRpZiAodHlwZW9mIERFQlVHICE9PSBcInVuZGVmaW5lZFwiICYmIERFQlVHKSB7XG5cdFx0aWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IEVycm9yKFwiVGhlIHN0eWxlLWxvYWRlciBjYW5ub3QgYmUgdXNlZCBpbiBhIG5vbi1icm93c2VyIGVudmlyb25tZW50XCIpO1xuXHR9XG5cblx0b3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cblx0b3B0aW9ucy5hdHRycyA9IHR5cGVvZiBvcHRpb25zLmF0dHJzID09PSBcIm9iamVjdFwiID8gb3B0aW9ucy5hdHRycyA6IHt9O1xuXG5cdC8vIEZvcmNlIHNpbmdsZS10YWcgc29sdXRpb24gb24gSUU2LTksIHdoaWNoIGhhcyBhIGhhcmQgbGltaXQgb24gdGhlICMgb2YgPHN0eWxlPlxuXHQvLyB0YWdzIGl0IHdpbGwgYWxsb3cgb24gYSBwYWdlXG5cdGlmICghb3B0aW9ucy5zaW5nbGV0b24gJiYgdHlwZW9mIG9wdGlvbnMuc2luZ2xldG9uICE9PSBcImJvb2xlYW5cIikgb3B0aW9ucy5zaW5nbGV0b24gPSBpc09sZElFKCk7XG5cblx0Ly8gQnkgZGVmYXVsdCwgYWRkIDxzdHlsZT4gdGFncyB0byB0aGUgPGhlYWQ+IGVsZW1lbnRcbiAgICAgICAgaWYgKCFvcHRpb25zLmluc2VydEludG8pIG9wdGlvbnMuaW5zZXJ0SW50byA9IFwiaGVhZFwiO1xuXG5cdC8vIEJ5IGRlZmF1bHQsIGFkZCA8c3R5bGU+IHRhZ3MgdG8gdGhlIGJvdHRvbSBvZiB0aGUgdGFyZ2V0XG5cdGlmICghb3B0aW9ucy5pbnNlcnRBdCkgb3B0aW9ucy5pbnNlcnRBdCA9IFwiYm90dG9tXCI7XG5cblx0dmFyIHN0eWxlcyA9IGxpc3RUb1N0eWxlcyhsaXN0LCBvcHRpb25zKTtcblxuXHRhZGRTdHlsZXNUb0RvbShzdHlsZXMsIG9wdGlvbnMpO1xuXG5cdHJldHVybiBmdW5jdGlvbiB1cGRhdGUgKG5ld0xpc3QpIHtcblx0XHR2YXIgbWF5UmVtb3ZlID0gW107XG5cblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGl0ZW0gPSBzdHlsZXNbaV07XG5cdFx0XHR2YXIgZG9tU3R5bGUgPSBzdHlsZXNJbkRvbVtpdGVtLmlkXTtcblxuXHRcdFx0ZG9tU3R5bGUucmVmcy0tO1xuXHRcdFx0bWF5UmVtb3ZlLnB1c2goZG9tU3R5bGUpO1xuXHRcdH1cblxuXHRcdGlmKG5ld0xpc3QpIHtcblx0XHRcdHZhciBuZXdTdHlsZXMgPSBsaXN0VG9TdHlsZXMobmV3TGlzdCwgb3B0aW9ucyk7XG5cdFx0XHRhZGRTdHlsZXNUb0RvbShuZXdTdHlsZXMsIG9wdGlvbnMpO1xuXHRcdH1cblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgbWF5UmVtb3ZlLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgZG9tU3R5bGUgPSBtYXlSZW1vdmVbaV07XG5cblx0XHRcdGlmKGRvbVN0eWxlLnJlZnMgPT09IDApIHtcblx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBkb21TdHlsZS5wYXJ0cy5sZW5ndGg7IGorKykgZG9tU3R5bGUucGFydHNbal0oKTtcblxuXHRcdFx0XHRkZWxldGUgc3R5bGVzSW5Eb21bZG9tU3R5bGUuaWRdO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcbn07XG5cbmZ1bmN0aW9uIGFkZFN0eWxlc1RvRG9tIChzdHlsZXMsIG9wdGlvbnMpIHtcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXMubGVuZ3RoOyBpKyspIHtcblx0XHR2YXIgaXRlbSA9IHN0eWxlc1tpXTtcblx0XHR2YXIgZG9tU3R5bGUgPSBzdHlsZXNJbkRvbVtpdGVtLmlkXTtcblxuXHRcdGlmKGRvbVN0eWxlKSB7XG5cdFx0XHRkb21TdHlsZS5yZWZzKys7XG5cblx0XHRcdGZvcih2YXIgaiA9IDA7IGogPCBkb21TdHlsZS5wYXJ0cy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRkb21TdHlsZS5wYXJ0c1tqXShpdGVtLnBhcnRzW2pdKTtcblx0XHRcdH1cblxuXHRcdFx0Zm9yKDsgaiA8IGl0ZW0ucGFydHMubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0ZG9tU3R5bGUucGFydHMucHVzaChhZGRTdHlsZShpdGVtLnBhcnRzW2pdLCBvcHRpb25zKSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZhciBwYXJ0cyA9IFtdO1xuXG5cdFx0XHRmb3IodmFyIGogPSAwOyBqIDwgaXRlbS5wYXJ0cy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRwYXJ0cy5wdXNoKGFkZFN0eWxlKGl0ZW0ucGFydHNbal0sIG9wdGlvbnMpKTtcblx0XHRcdH1cblxuXHRcdFx0c3R5bGVzSW5Eb21baXRlbS5pZF0gPSB7aWQ6IGl0ZW0uaWQsIHJlZnM6IDEsIHBhcnRzOiBwYXJ0c307XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIGxpc3RUb1N0eWxlcyAobGlzdCwgb3B0aW9ucykge1xuXHR2YXIgc3R5bGVzID0gW107XG5cdHZhciBuZXdTdHlsZXMgPSB7fTtcblxuXHRmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHR2YXIgaXRlbSA9IGxpc3RbaV07XG5cdFx0dmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG5cdFx0dmFyIGNzcyA9IGl0ZW1bMV07XG5cdFx0dmFyIG1lZGlhID0gaXRlbVsyXTtcblx0XHR2YXIgc291cmNlTWFwID0gaXRlbVszXTtcblx0XHR2YXIgcGFydCA9IHtjc3M6IGNzcywgbWVkaWE6IG1lZGlhLCBzb3VyY2VNYXA6IHNvdXJjZU1hcH07XG5cblx0XHRpZighbmV3U3R5bGVzW2lkXSkgc3R5bGVzLnB1c2gobmV3U3R5bGVzW2lkXSA9IHtpZDogaWQsIHBhcnRzOiBbcGFydF19KTtcblx0XHRlbHNlIG5ld1N0eWxlc1tpZF0ucGFydHMucHVzaChwYXJ0KTtcblx0fVxuXG5cdHJldHVybiBzdHlsZXM7XG59XG5cbmZ1bmN0aW9uIGluc2VydFN0eWxlRWxlbWVudCAob3B0aW9ucywgc3R5bGUpIHtcblx0dmFyIHRhcmdldCA9IGdldEVsZW1lbnQob3B0aW9ucy5pbnNlcnRJbnRvKVxuXG5cdGlmICghdGFyZ2V0KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmluZCBhIHN0eWxlIHRhcmdldC4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhlICdpbnNlcnRJbnRvJyBwYXJhbWV0ZXIgaXMgaW52YWxpZC5cIik7XG5cdH1cblxuXHR2YXIgbGFzdFN0eWxlRWxlbWVudEluc2VydGVkQXRUb3AgPSBzdHlsZXNJbnNlcnRlZEF0VG9wW3N0eWxlc0luc2VydGVkQXRUb3AubGVuZ3RoIC0gMV07XG5cblx0aWYgKG9wdGlvbnMuaW5zZXJ0QXQgPT09IFwidG9wXCIpIHtcblx0XHRpZiAoIWxhc3RTdHlsZUVsZW1lbnRJbnNlcnRlZEF0VG9wKSB7XG5cdFx0XHR0YXJnZXQuaW5zZXJ0QmVmb3JlKHN0eWxlLCB0YXJnZXQuZmlyc3RDaGlsZCk7XG5cdFx0fSBlbHNlIGlmIChsYXN0U3R5bGVFbGVtZW50SW5zZXJ0ZWRBdFRvcC5uZXh0U2libGluZykge1xuXHRcdFx0dGFyZ2V0Lmluc2VydEJlZm9yZShzdHlsZSwgbGFzdFN0eWxlRWxlbWVudEluc2VydGVkQXRUb3AubmV4dFNpYmxpbmcpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuXHRcdH1cblx0XHRzdHlsZXNJbnNlcnRlZEF0VG9wLnB1c2goc3R5bGUpO1xuXHR9IGVsc2UgaWYgKG9wdGlvbnMuaW5zZXJ0QXQgPT09IFwiYm90dG9tXCIpIHtcblx0XHR0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zLmluc2VydEF0ID09PSBcIm9iamVjdFwiICYmIG9wdGlvbnMuaW5zZXJ0QXQuYmVmb3JlKSB7XG5cdFx0dmFyIG5leHRTaWJsaW5nID0gZ2V0RWxlbWVudChvcHRpb25zLmluc2VydEludG8gKyBcIiBcIiArIG9wdGlvbnMuaW5zZXJ0QXQuYmVmb3JlKTtcblx0XHR0YXJnZXQuaW5zZXJ0QmVmb3JlKHN0eWxlLCBuZXh0U2libGluZyk7XG5cdH0gZWxzZSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiW1N0eWxlIExvYWRlcl1cXG5cXG4gSW52YWxpZCB2YWx1ZSBmb3IgcGFyYW1ldGVyICdpbnNlcnRBdCcgKCdvcHRpb25zLmluc2VydEF0JykgZm91bmQuXFxuIE11c3QgYmUgJ3RvcCcsICdib3R0b20nLCBvciBPYmplY3QuXFxuIChodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay1jb250cmliL3N0eWxlLWxvYWRlciNpbnNlcnRhdClcXG5cIik7XG5cdH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlU3R5bGVFbGVtZW50IChzdHlsZSkge1xuXHRpZiAoc3R5bGUucGFyZW50Tm9kZSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXHRzdHlsZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlKTtcblxuXHR2YXIgaWR4ID0gc3R5bGVzSW5zZXJ0ZWRBdFRvcC5pbmRleE9mKHN0eWxlKTtcblx0aWYoaWR4ID49IDApIHtcblx0XHRzdHlsZXNJbnNlcnRlZEF0VG9wLnNwbGljZShpZHgsIDEpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN0eWxlRWxlbWVudCAob3B0aW9ucykge1xuXHR2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG5cblx0b3B0aW9ucy5hdHRycy50eXBlID0gXCJ0ZXh0L2Nzc1wiO1xuXG5cdGFkZEF0dHJzKHN0eWxlLCBvcHRpb25zLmF0dHJzKTtcblx0aW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMsIHN0eWxlKTtcblxuXHRyZXR1cm4gc3R5bGU7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxpbmtFbGVtZW50IChvcHRpb25zKSB7XG5cdHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpbmtcIik7XG5cblx0b3B0aW9ucy5hdHRycy50eXBlID0gXCJ0ZXh0L2Nzc1wiO1xuXHRvcHRpb25zLmF0dHJzLnJlbCA9IFwic3R5bGVzaGVldFwiO1xuXG5cdGFkZEF0dHJzKGxpbmssIG9wdGlvbnMuYXR0cnMpO1xuXHRpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucywgbGluayk7XG5cblx0cmV0dXJuIGxpbms7XG59XG5cbmZ1bmN0aW9uIGFkZEF0dHJzIChlbCwgYXR0cnMpIHtcblx0T2JqZWN0LmtleXMoYXR0cnMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuXHRcdGVsLnNldEF0dHJpYnV0ZShrZXksIGF0dHJzW2tleV0pO1xuXHR9KTtcbn1cblxuZnVuY3Rpb24gYWRkU3R5bGUgKG9iaiwgb3B0aW9ucykge1xuXHR2YXIgc3R5bGUsIHVwZGF0ZSwgcmVtb3ZlLCByZXN1bHQ7XG5cblx0Ly8gSWYgYSB0cmFuc2Zvcm0gZnVuY3Rpb24gd2FzIGRlZmluZWQsIHJ1biBpdCBvbiB0aGUgY3NzXG5cdGlmIChvcHRpb25zLnRyYW5zZm9ybSAmJiBvYmouY3NzKSB7XG5cdCAgICByZXN1bHQgPSBvcHRpb25zLnRyYW5zZm9ybShvYmouY3NzKTtcblxuXHQgICAgaWYgKHJlc3VsdCkge1xuXHQgICAgXHQvLyBJZiB0cmFuc2Zvcm0gcmV0dXJucyBhIHZhbHVlLCB1c2UgdGhhdCBpbnN0ZWFkIG9mIHRoZSBvcmlnaW5hbCBjc3MuXG5cdCAgICBcdC8vIFRoaXMgYWxsb3dzIHJ1bm5pbmcgcnVudGltZSB0cmFuc2Zvcm1hdGlvbnMgb24gdGhlIGNzcy5cblx0ICAgIFx0b2JqLmNzcyA9IHJlc3VsdDtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICBcdC8vIElmIHRoZSB0cmFuc2Zvcm0gZnVuY3Rpb24gcmV0dXJucyBhIGZhbHN5IHZhbHVlLCBkb24ndCBhZGQgdGhpcyBjc3MuXG5cdCAgICBcdC8vIFRoaXMgYWxsb3dzIGNvbmRpdGlvbmFsIGxvYWRpbmcgb2YgY3NzXG5cdCAgICBcdHJldHVybiBmdW5jdGlvbigpIHtcblx0ICAgIFx0XHQvLyBub29wXG5cdCAgICBcdH07XG5cdCAgICB9XG5cdH1cblxuXHRpZiAob3B0aW9ucy5zaW5nbGV0b24pIHtcblx0XHR2YXIgc3R5bGVJbmRleCA9IHNpbmdsZXRvbkNvdW50ZXIrKztcblxuXHRcdHN0eWxlID0gc2luZ2xldG9uIHx8IChzaW5nbGV0b24gPSBjcmVhdGVTdHlsZUVsZW1lbnQob3B0aW9ucykpO1xuXG5cdFx0dXBkYXRlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlLCBzdHlsZUluZGV4LCBmYWxzZSk7XG5cdFx0cmVtb3ZlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlLCBzdHlsZUluZGV4LCB0cnVlKTtcblxuXHR9IGVsc2UgaWYgKFxuXHRcdG9iai5zb3VyY2VNYXAgJiZcblx0XHR0eXBlb2YgVVJMID09PSBcImZ1bmN0aW9uXCIgJiZcblx0XHR0eXBlb2YgVVJMLmNyZWF0ZU9iamVjdFVSTCA9PT0gXCJmdW5jdGlvblwiICYmXG5cdFx0dHlwZW9mIFVSTC5yZXZva2VPYmplY3RVUkwgPT09IFwiZnVuY3Rpb25cIiAmJlxuXHRcdHR5cGVvZiBCbG9iID09PSBcImZ1bmN0aW9uXCIgJiZcblx0XHR0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiXG5cdCkge1xuXHRcdHN0eWxlID0gY3JlYXRlTGlua0VsZW1lbnQob3B0aW9ucyk7XG5cdFx0dXBkYXRlID0gdXBkYXRlTGluay5iaW5kKG51bGwsIHN0eWxlLCBvcHRpb25zKTtcblx0XHRyZW1vdmUgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGUpO1xuXG5cdFx0XHRpZihzdHlsZS5ocmVmKSBVUkwucmV2b2tlT2JqZWN0VVJMKHN0eWxlLmhyZWYpO1xuXHRcdH07XG5cdH0gZWxzZSB7XG5cdFx0c3R5bGUgPSBjcmVhdGVTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG5cdFx0dXBkYXRlID0gYXBwbHlUb1RhZy5iaW5kKG51bGwsIHN0eWxlKTtcblx0XHRyZW1vdmUgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGUpO1xuXHRcdH07XG5cdH1cblxuXHR1cGRhdGUob2JqKTtcblxuXHRyZXR1cm4gZnVuY3Rpb24gdXBkYXRlU3R5bGUgKG5ld09iaikge1xuXHRcdGlmIChuZXdPYmopIHtcblx0XHRcdGlmIChcblx0XHRcdFx0bmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJlxuXHRcdFx0XHRuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJlxuXHRcdFx0XHRuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHR1cGRhdGUob2JqID0gbmV3T2JqKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmVtb3ZlKCk7XG5cdFx0fVxuXHR9O1xufVxuXG52YXIgcmVwbGFjZVRleHQgPSAoZnVuY3Rpb24gKCkge1xuXHR2YXIgdGV4dFN0b3JlID0gW107XG5cblx0cmV0dXJuIGZ1bmN0aW9uIChpbmRleCwgcmVwbGFjZW1lbnQpIHtcblx0XHR0ZXh0U3RvcmVbaW5kZXhdID0gcmVwbGFjZW1lbnQ7XG5cblx0XHRyZXR1cm4gdGV4dFN0b3JlLmZpbHRlcihCb29sZWFuKS5qb2luKCdcXG4nKTtcblx0fTtcbn0pKCk7XG5cbmZ1bmN0aW9uIGFwcGx5VG9TaW5nbGV0b25UYWcgKHN0eWxlLCBpbmRleCwgcmVtb3ZlLCBvYmopIHtcblx0dmFyIGNzcyA9IHJlbW92ZSA/IFwiXCIgOiBvYmouY3NzO1xuXG5cdGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG5cdFx0c3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gcmVwbGFjZVRleHQoaW5kZXgsIGNzcyk7XG5cdH0gZWxzZSB7XG5cdFx0dmFyIGNzc05vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpO1xuXHRcdHZhciBjaGlsZE5vZGVzID0gc3R5bGUuY2hpbGROb2RlcztcblxuXHRcdGlmIChjaGlsZE5vZGVzW2luZGV4XSkgc3R5bGUucmVtb3ZlQ2hpbGQoY2hpbGROb2Rlc1tpbmRleF0pO1xuXG5cdFx0aWYgKGNoaWxkTm9kZXMubGVuZ3RoKSB7XG5cdFx0XHRzdHlsZS5pbnNlcnRCZWZvcmUoY3NzTm9kZSwgY2hpbGROb2Rlc1tpbmRleF0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdHlsZS5hcHBlbmRDaGlsZChjc3NOb2RlKTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gYXBwbHlUb1RhZyAoc3R5bGUsIG9iaikge1xuXHR2YXIgY3NzID0gb2JqLmNzcztcblx0dmFyIG1lZGlhID0gb2JqLm1lZGlhO1xuXG5cdGlmKG1lZGlhKSB7XG5cdFx0c3R5bGUuc2V0QXR0cmlidXRlKFwibWVkaWFcIiwgbWVkaWEpXG5cdH1cblxuXHRpZihzdHlsZS5zdHlsZVNoZWV0KSB7XG5cdFx0c3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuXHR9IGVsc2Uge1xuXHRcdHdoaWxlKHN0eWxlLmZpcnN0Q2hpbGQpIHtcblx0XHRcdHN0eWxlLnJlbW92ZUNoaWxkKHN0eWxlLmZpcnN0Q2hpbGQpO1xuXHRcdH1cblxuXHRcdHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUxpbmsgKGxpbmssIG9wdGlvbnMsIG9iaikge1xuXHR2YXIgY3NzID0gb2JqLmNzcztcblx0dmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXA7XG5cblx0Lypcblx0XHRJZiBjb252ZXJ0VG9BYnNvbHV0ZVVybHMgaXNuJ3QgZGVmaW5lZCwgYnV0IHNvdXJjZW1hcHMgYXJlIGVuYWJsZWRcblx0XHRhbmQgdGhlcmUgaXMgbm8gcHVibGljUGF0aCBkZWZpbmVkIHRoZW4gbGV0cyB0dXJuIGNvbnZlcnRUb0Fic29sdXRlVXJsc1xuXHRcdG9uIGJ5IGRlZmF1bHQuICBPdGhlcndpc2UgZGVmYXVsdCB0byB0aGUgY29udmVydFRvQWJzb2x1dGVVcmxzIG9wdGlvblxuXHRcdGRpcmVjdGx5XG5cdCovXG5cdHZhciBhdXRvRml4VXJscyA9IG9wdGlvbnMuY29udmVydFRvQWJzb2x1dGVVcmxzID09PSB1bmRlZmluZWQgJiYgc291cmNlTWFwO1xuXG5cdGlmIChvcHRpb25zLmNvbnZlcnRUb0Fic29sdXRlVXJscyB8fCBhdXRvRml4VXJscykge1xuXHRcdGNzcyA9IGZpeFVybHMoY3NzKTtcblx0fVxuXG5cdGlmIChzb3VyY2VNYXApIHtcblx0XHQvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yNjYwMzg3NVxuXHRcdGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIgKyBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpICsgXCIgKi9cIjtcblx0fVxuXG5cdHZhciBibG9iID0gbmV3IEJsb2IoW2Nzc10sIHsgdHlwZTogXCJ0ZXh0L2Nzc1wiIH0pO1xuXG5cdHZhciBvbGRTcmMgPSBsaW5rLmhyZWY7XG5cblx0bGluay5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcblxuXHRpZihvbGRTcmMpIFVSTC5yZXZva2VPYmplY3RVUkwob2xkU3JjKTtcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzLmpzXG4vLyBtb2R1bGUgaWQgPSA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyIsImltcG9ydCBsYXp5SW5pdGlhbGl6ZSBmcm9tICcuLi9sYXp5LWluaXRpYWxpemUnO1xuXG5jb25zdCB7IGRlZmluZVByb3BlcnR5LCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsXG4gICAgICAgIGdldE93blByb3BlcnR5TmFtZXMsIGdldE93blByb3BlcnR5U3ltYm9scyB9ID0gT2JqZWN0O1xuXG5leHBvcnQgZnVuY3Rpb24gaXNEZXNjcmlwdG9yKGRlc2MpIHtcbiAgaWYgKCFkZXNjIHx8ICFkZXNjLmhhc093blByb3BlcnR5KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qga2V5cyA9IFsndmFsdWUnLCAnaW5pdGlhbGl6ZXInLCAnZ2V0JywgJ3NldCddO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsID0ga2V5cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAoZGVzYy5oYXNPd25Qcm9wZXJ0eShrZXlzW2ldKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb3JhdGUoaGFuZGxlRGVzY3JpcHRvciwgZW50cnlBcmdzKSB7XG4gIGlmIChpc0Rlc2NyaXB0b3IoZW50cnlBcmdzW2VudHJ5QXJncy5sZW5ndGggLSAxXSkpIHtcbiAgICByZXR1cm4gaGFuZGxlRGVzY3JpcHRvciguLi5lbnRyeUFyZ3MsIFtdKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGhhbmRsZURlc2NyaXB0b3IoLi4uQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSwgZW50cnlBcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbmNsYXNzIE1ldGEge1xuICBAbGF6eUluaXRpYWxpemVcbiAgZGVib3VuY2VUaW1lb3V0SWRzID0ge307XG5cbiAgQGxhenlJbml0aWFsaXplXG4gIHRocm90dGxlVGltZW91dElkcyA9IHt9O1xuXG4gIEBsYXp5SW5pdGlhbGl6ZVxuICB0aHJvdHRsZVByZXZpb3VzVGltZXN0YW1wcyA9IHt9O1xuXG4gIEBsYXp5SW5pdGlhbGl6ZVxuICB0aHJvdHRsZVRyYWlsaW5nQXJncyA9IG51bGw7XG5cbiAgQGxhenlJbml0aWFsaXplXG4gIHByb2ZpbGVMYXN0UmFuID0gbnVsbDtcbn1cblxuY29uc3QgTUVUQV9LRVkgPSAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJylcbiAgPyBTeW1ib2woJ19fY29yZV9kZWNvcmF0b3JzX18nKVxuICA6ICdfX2NvcmVfZGVjb3JhdG9yc19fJztcblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFGb3Iob2JqKSB7XG4gIGlmIChvYmouaGFzT3duUHJvcGVydHkoTUVUQV9LRVkpID09PSBmYWxzZSkge1xuICAgIGRlZmluZVByb3BlcnR5KG9iaiwgTUVUQV9LRVksIHtcbiAgICAgIC8vIERlZmF1bHRzOiBOT1QgZW51bWVyYWJsZSwgY29uZmlndXJhYmxlLCBvciB3cml0YWJsZVxuICAgICAgdmFsdWU6IG5ldyBNZXRhKClcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBvYmpbTUVUQV9LRVldO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0T3duS2V5cyA9IGdldE93blByb3BlcnR5U3ltYm9sc1xuICAgID8gZnVuY3Rpb24gKG9iamVjdCkge1xuICAgICAgICByZXR1cm4gZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpXG4gICAgICAgICAgLmNvbmNhdChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KSk7XG4gICAgICB9XG4gICAgOiBnZXRPd25Qcm9wZXJ0eU5hbWVzO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG9iaikge1xuICBjb25zdCBkZXNjcyA9IHt9O1xuXG4gIGdldE93bktleXMob2JqKS5mb3JFYWNoKFxuICAgIGtleSA9PiAoZGVzY3Nba2V5XSA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkpXG4gICk7XG5cbiAgcmV0dXJuIGRlc2NzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVmYXVsdFNldHRlcihrZXkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHNldChuZXdWYWx1ZSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBrZXksIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgLy8gSVMgZW51bWVyYWJsZSB3aGVuIHJlYXNzaWduZWQgYnkgdGhlIG91dHNpZGUgd29yZFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBuZXdWYWx1ZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ld1ZhbHVlO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmluZChmbiwgY29udGV4dCkge1xuICBpZiAoZm4uYmluZCkge1xuICAgIHJldHVybiBmbi5iaW5kKGNvbnRleHQpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmdW5jdGlvbiBfX2F1dG9iaW5kX18oKSB7XG4gICAgICByZXR1cm4gZm4uYXBwbHkoY29udGV4dCwgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCB3YXJuID0gKCgpID0+IHtcbiAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAnb2JqZWN0JyB8fCAhY29uc29sZSB8fCB0eXBlb2YgY29uc29sZS53YXJuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuICgpID0+IHt9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBiaW5kKGNvbnNvbGUud2FybiwgY29uc29sZSk7XG4gIH1cbn0pKCk7XG5cbmNvbnN0IHNlZW5EZXByZWNhdGlvbnMgPSB7fTtcbmV4cG9ydCBmdW5jdGlvbiBpbnRlcm5hbERlcHJlY2F0aW9uKG1zZykge1xuICBpZiAoc2VlbkRlcHJlY2F0aW9uc1ttc2ddICE9PSB0cnVlKSB7XG4gICAgc2VlbkRlcHJlY2F0aW9uc1ttc2ddID0gdHJ1ZTtcbiAgICB3YXJuKCdERVBSRUNBVElPTjogJyArIG1zZyk7XG4gIH1cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWRlY29yYXRvcnMvc3JjL3ByaXZhdGUvdXRpbHMuanMiLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZVxuICogW2xhbmd1YWdlIHR5cGVdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzKVxuICogb2YgYE9iamVjdGAuIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0KHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChfLm5vb3ApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNPYmplY3Q7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzT2JqZWN0LmpzIiwiaW1wb3J0IHJvb3QgZnJvbSAnLi9fcm9vdC5qcyc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFN5bWJvbCA9IHJvb3QuU3ltYm9sO1xuXG5leHBvcnQgZGVmYXVsdCBTeW1ib2w7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19TeW1ib2wuanMiLCJpbXBvcnQgZnJlZUdsb2JhbCBmcm9tICcuL19mcmVlR2xvYmFsLmpzJztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5leHBvcnQgZGVmYXVsdCByb290O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fcm9vdC5qcyIsIi8qKlxuICogUGVyZm9ybXMgYVxuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVpdmFsZW50LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAqXG4gKiBfLmVxKG9iamVjdCwgb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKCdhJywgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKCdhJywgT2JqZWN0KCdhJykpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKE5hTiwgTmFOKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gZXEodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gb3RoZXIgfHwgKHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBlcTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvZXEuanMiLCJpbXBvcnQgaXNGdW5jdGlvbiBmcm9tICcuL2lzRnVuY3Rpb24uanMnO1xuaW1wb3J0IGlzTGVuZ3RoIGZyb20gJy4vaXNMZW5ndGguanMnO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UuIEEgdmFsdWUgaXMgY29uc2lkZXJlZCBhcnJheS1saWtlIGlmIGl0J3NcbiAqIG5vdCBhIGZ1bmN0aW9uIGFuZCBoYXMgYSBgdmFsdWUubGVuZ3RoYCB0aGF0J3MgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gb3JcbiAqIGVxdWFsIHRvIGAwYCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUmAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICFpc0Z1bmN0aW9uKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNBcnJheUxpa2U7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzQXJyYXlMaWtlLmpzIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdG9JbnRlZ2VyKGRpcnR5TnVtYmVyKSB7XG4gIGlmIChkaXJ0eU51bWJlciA9PT0gbnVsbCB8fCBkaXJ0eU51bWJlciA9PT0gdHJ1ZSB8fCBkaXJ0eU51bWJlciA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gTmFOO1xuICB9XG5cbiAgdmFyIG51bWJlciA9IE51bWJlcihkaXJ0eU51bWJlcik7XG5cbiAgaWYgKGlzTmFOKG51bWJlcikpIHtcbiAgICByZXR1cm4gbnVtYmVyO1xuICB9XG5cbiAgcmV0dXJuIG51bWJlciA8IDAgPyBNYXRoLmNlaWwobnVtYmVyKSA6IE1hdGguZmxvb3IobnVtYmVyKTtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi90b0ludGVnZXIvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZXF1aXJlZEFyZ3MocmVxdWlyZWQsIGFyZ3MpIHtcbiAgaWYgKGFyZ3MubGVuZ3RoIDwgcmVxdWlyZWQpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHJlcXVpcmVkICsgJyBhcmd1bWVudCcgKyByZXF1aXJlZCA+IDEgPyAncycgOiAnJyArICcgcmVxdWlyZWQsIGJ1dCBvbmx5ICcgKyBhcmdzLmxlbmd0aCArICcgcHJlc2VudCcpO1xuICB9XG59XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qcyIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBiYXNpcy1hZ2dyaWQtY29tcG9uZW50cyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmltcG9ydCBCb29sZWFuU3dpdGNoIGZyb20gJy4vQm9vbGVhblN3aXRjaCdcblxuZXhwb3J0IGRlZmF1bHQgQm9vbGVhblN3aXRjaFxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL0Jvb2xlYW5Td2l0Y2gvaW5kZXguanMiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmFzaXMtYWdncmlkLWNvbXBvbmVudHMgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgVGVtcGxhdGVSZW5kZXJlciBmcm9tICcuL1RlbXBsYXRlUmVuZGVyZXInXG5cbmV4cG9ydCBkZWZhdWx0IFRlbXBsYXRlUmVuZGVyZXJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9UZW1wbGF0ZVJlbmRlcmVyL2luZGV4LmpzIiwiaW1wb3J0IGRlZmluZVByb3BlcnR5IGZyb20gJy4vX2RlZmluZVByb3BlcnR5LmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYXNzaWduVmFsdWVgIGFuZCBgYXNzaWduTWVyZ2VWYWx1ZWAgd2l0aG91dFxuICogdmFsdWUgY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgaWYgKGtleSA9PSAnX19wcm90b19fJyAmJiBkZWZpbmVQcm9wZXJ0eSkge1xuICAgIGRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7XG4gICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICdlbnVtZXJhYmxlJzogdHJ1ZSxcbiAgICAgICd2YWx1ZSc6IHZhbHVlLFxuICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUFzc2lnblZhbHVlO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUFzc2lnblZhbHVlLmpzIiwiaW1wb3J0IGdldE5hdGl2ZSBmcm9tICcuL19nZXROYXRpdmUuanMnO1xuXG52YXIgZGVmaW5lUHJvcGVydHkgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgdmFyIGZ1bmMgPSBnZXROYXRpdmUoT2JqZWN0LCAnZGVmaW5lUHJvcGVydHknKTtcbiAgICBmdW5jKHt9LCAnJywge30pO1xuICAgIHJldHVybiBmdW5jO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lUHJvcGVydHk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19kZWZpbmVQcm9wZXJ0eS5qcyIsImltcG9ydCBiYXNlR2V0VGFnIGZyb20gJy4vX2Jhc2VHZXRUYWcuanMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QuanMnO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXN5bmNUYWcgPSAnW29iamVjdCBBc3luY0Z1bmN0aW9uXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBwcm94eVRhZyA9ICdbb2JqZWN0IFByb3h5XSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBGdW5jdGlvbmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAvLyBpbiBTYWZhcmkgOSB3aGljaCByZXR1cm5zICdvYmplY3QnIGZvciB0eXBlZCBhcnJheXMgYW5kIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZyB8fCB0YWcgPT0gYXN5bmNUYWcgfHwgdGFnID09IHByb3h5VGFnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0Z1bmN0aW9uO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0Z1bmN0aW9uLmpzIiwiLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxuZXhwb3J0IGRlZmF1bHQgZnJlZUdsb2JhbDtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2ZyZWVHbG9iYWwuanMiLCJ2YXIgZztcclxuXHJcbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlXHJcbmcgPSAoZnVuY3Rpb24oKSB7XHJcblx0cmV0dXJuIHRoaXM7XHJcbn0pKCk7XHJcblxyXG50cnkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxyXG5cdGcgPSBnIHx8IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKSB8fCAoMSxldmFsKShcInRoaXNcIik7XHJcbn0gY2F0Y2goZSkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXHJcblx0aWYodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIilcclxuXHRcdGcgPSB3aW5kb3c7XHJcbn1cclxuXHJcbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cclxuLy8gV2UgcmV0dXJuIHVuZGVmaW5lZCwgaW5zdGVhZCBvZiBub3RoaW5nIGhlcmUsIHNvIGl0J3NcclxuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBnO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gKHdlYnBhY2spL2J1aWxkaW4vZ2xvYmFsLmpzIiwiaW1wb3J0IGlkZW50aXR5IGZyb20gJy4vaWRlbnRpdHkuanMnO1xuaW1wb3J0IG92ZXJSZXN0IGZyb20gJy4vX292ZXJSZXN0LmpzJztcbmltcG9ydCBzZXRUb1N0cmluZyBmcm9tICcuL19zZXRUb1N0cmluZy5qcyc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVzdGAgd2hpY2ggZG9lc24ndCB2YWxpZGF0ZSBvciBjb2VyY2UgYXJndW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VSZXN0KGZ1bmMsIHN0YXJ0KSB7XG4gIHJldHVybiBzZXRUb1N0cmluZyhvdmVyUmVzdChmdW5jLCBzdGFydCwgaWRlbnRpdHkpLCBmdW5jICsgJycpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlUmVzdDtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VSZXN0LmpzIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBmaXJzdCBhcmd1bWVudCBpdCByZWNlaXZlcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHsqfSB2YWx1ZSBBbnkgdmFsdWUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyBgdmFsdWVgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAqXG4gKiBjb25zb2xlLmxvZyhfLmlkZW50aXR5KG9iamVjdCkgPT09IG9iamVjdCk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlkZW50aXR5KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaWRlbnRpdHk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lkZW50aXR5LmpzIiwiLyoqXG4gKiBBIGZhc3RlciBhbHRlcm5hdGl2ZSB0byBgRnVuY3Rpb24jYXBwbHlgLCB0aGlzIGZ1bmN0aW9uIGludm9rZXMgYGZ1bmNgXG4gKiB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiBgdGhpc0FyZ2AgYW5kIHRoZSBhcmd1bWVudHMgb2YgYGFyZ3NgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGBmdW5jYC5cbiAqL1xuZnVuY3Rpb24gYXBwbHkoZnVuYywgdGhpc0FyZywgYXJncykge1xuICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcpO1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdKTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICB9XG4gIHJldHVybiBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhcHBseTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2FwcGx5LmpzIiwiaW1wb3J0IGVxIGZyb20gJy4vZXEuanMnO1xuaW1wb3J0IGlzQXJyYXlMaWtlIGZyb20gJy4vaXNBcnJheUxpa2UuanMnO1xuaW1wb3J0IGlzSW5kZXggZnJvbSAnLi9faXNJbmRleC5qcyc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnLi9pc09iamVjdC5qcyc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIHZhbHVlIGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBpbmRleCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIGluZGV4IG9yIGtleSBhcmd1bWVudC5cbiAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgb2JqZWN0IGFyZ3VtZW50LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSXRlcmF0ZWVDYWxsKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdHlwZSA9IHR5cGVvZiBpbmRleDtcbiAgaWYgKHR5cGUgPT0gJ251bWJlcidcbiAgICAgICAgPyAoaXNBcnJheUxpa2Uob2JqZWN0KSAmJiBpc0luZGV4KGluZGV4LCBvYmplY3QubGVuZ3RoKSlcbiAgICAgICAgOiAodHlwZSA9PSAnc3RyaW5nJyAmJiBpbmRleCBpbiBvYmplY3QpXG4gICAgICApIHtcbiAgICByZXR1cm4gZXEob2JqZWN0W2luZGV4XSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNJdGVyYXRlZUNhbGw7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19pc0l0ZXJhdGVlQ2FsbC5qcyIsIi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBsZW5ndGguXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2xlbmd0aCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0xlbmd0aCgzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKEluZmluaXR5KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aCgnMycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJlxuICAgIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNMZW5ndGg7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzTGVuZ3RoLmpzIiwiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcy4gKi9cbnZhciByZUlzVWludCA9IC9eKD86MHxbMS05XVxcZCopJC87XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPU1BWF9TQUZFX0lOVEVHRVJdIFRoZSB1cHBlciBib3VuZHMgb2YgYSB2YWxpZCBpbmRleC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSwgbGVuZ3RoKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgcmV0dXJuICEhbGVuZ3RoICYmXG4gICAgKHR5cGUgPT0gJ251bWJlcicgfHxcbiAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgKHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0luZGV4O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNJbmRleC5qcyIsImltcG9ydCBiYXNlVGltZXMgZnJvbSAnLi9fYmFzZVRpbWVzLmpzJztcbmltcG9ydCBpc0FyZ3VtZW50cyBmcm9tICcuL2lzQXJndW1lbnRzLmpzJztcbmltcG9ydCBpc0FycmF5IGZyb20gJy4vaXNBcnJheS5qcyc7XG5pbXBvcnQgaXNCdWZmZXIgZnJvbSAnLi9pc0J1ZmZlci5qcyc7XG5pbXBvcnQgaXNJbmRleCBmcm9tICcuL19pc0luZGV4LmpzJztcbmltcG9ydCBpc1R5cGVkQXJyYXkgZnJvbSAnLi9pc1R5cGVkQXJyYXkuanMnO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgdGhlIGFycmF5LWxpa2UgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSksXG4gICAgICBpc0FyZyA9ICFpc0FyciAmJiBpc0FyZ3VtZW50cyh2YWx1ZSksXG4gICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgIGlzVHlwZSA9ICFpc0FyciAmJiAhaXNBcmcgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkodmFsdWUpLFxuICAgICAgc2tpcEluZGV4ZXMgPSBpc0FyciB8fCBpc0FyZyB8fCBpc0J1ZmYgfHwgaXNUeXBlLFxuICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICEoc2tpcEluZGV4ZXMgJiYgKFxuICAgICAgICAgICAvLyBTYWZhcmkgOSBoYXMgZW51bWVyYWJsZSBgYXJndW1lbnRzLmxlbmd0aGAgaW4gc3RyaWN0IG1vZGUuXG4gICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAvLyBOb2RlLmpzIDAuMTAgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gYnVmZmVycy5cbiAgICAgICAgICAgKGlzQnVmZiAmJiAoa2V5ID09ICdvZmZzZXQnIHx8IGtleSA9PSAncGFyZW50JykpIHx8XG4gICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgKGlzVHlwZSAmJiAoa2V5ID09ICdidWZmZXInIHx8IGtleSA9PSAnYnl0ZUxlbmd0aCcgfHwga2V5ID09ICdieXRlT2Zmc2V0JykpIHx8XG4gICAgICAgICAgIC8vIFNraXAgaW5kZXggcHJvcGVydGllcy5cbiAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFycmF5TGlrZUtleXM7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19hcnJheUxpa2VLZXlzLmpzIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbmV4cG9ydCBkZWZhdWx0IGlzQXJyYXk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzQXJyYXkuanMiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG9yaWdpbmFsTW9kdWxlKSB7XHJcblx0aWYoIW9yaWdpbmFsTW9kdWxlLndlYnBhY2tQb2x5ZmlsbCkge1xyXG5cdFx0dmFyIG1vZHVsZSA9IE9iamVjdC5jcmVhdGUob3JpZ2luYWxNb2R1bGUpO1xyXG5cdFx0Ly8gbW9kdWxlLnBhcmVudCA9IHVuZGVmaW5lZCBieSBkZWZhdWx0XHJcblx0XHRpZighbW9kdWxlLmNoaWxkcmVuKSBtb2R1bGUuY2hpbGRyZW4gPSBbXTtcclxuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsIFwibG9hZGVkXCIsIHtcclxuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcclxuXHRcdFx0Z2V0OiBmdW5jdGlvbigpIHtcclxuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmw7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJpZFwiLCB7XHJcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXHJcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0cmV0dXJuIG1vZHVsZS5pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsIFwiZXhwb3J0c1wiLCB7XHJcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXHJcblx0XHR9KTtcclxuXHRcdG1vZHVsZS53ZWJwYWNrUG9seWZpbGwgPSAxO1xyXG5cdH1cclxuXHRyZXR1cm4gbW9kdWxlO1xyXG59O1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gKHdlYnBhY2spL2J1aWxkaW4vaGFybW9ueS1tb2R1bGUuanMiLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIHByb3RvdHlwZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm90b3R5cGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNQcm90b3R5cGUodmFsdWUpIHtcbiAgdmFyIEN0b3IgPSB2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvcixcbiAgICAgIHByb3RvID0gKHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3Rvci5wcm90b3R5cGUpIHx8IG9iamVjdFByb3RvO1xuXG4gIHJldHVybiB2YWx1ZSA9PT0gcHJvdG87XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzUHJvdG90eXBlO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNQcm90b3R5cGUuanMiLCJpbXBvcnQgYmFzZUdldFRhZyBmcm9tICcuL19iYXNlR2V0VGFnLmpzJztcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSAnLi9pc09iamVjdExpa2UuanMnO1xuaW1wb3J0IGlzUGxhaW5PYmplY3QgZnJvbSAnLi9pc1BsYWluT2JqZWN0LmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGRvbUV4Y1RhZyA9ICdbb2JqZWN0IERPTUV4Y2VwdGlvbl0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBgRXJyb3JgLCBgRXZhbEVycm9yYCwgYFJhbmdlRXJyb3JgLCBgUmVmZXJlbmNlRXJyb3JgLFxuICogYFN5bnRheEVycm9yYCwgYFR5cGVFcnJvcmAsIG9yIGBVUklFcnJvcmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGVycm9yIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRXJyb3IobmV3IEVycm9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRXJyb3IoRXJyb3IpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNFcnJvcih2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICByZXR1cm4gdGFnID09IGVycm9yVGFnIHx8IHRhZyA9PSBkb21FeGNUYWcgfHxcbiAgICAodHlwZW9mIHZhbHVlLm1lc3NhZ2UgPT0gJ3N0cmluZycgJiYgdHlwZW9mIHZhbHVlLm5hbWUgPT0gJ3N0cmluZycgJiYgIWlzUGxhaW5PYmplY3QodmFsdWUpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNFcnJvcjtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNFcnJvci5qcyIsIi8qKlxuICogQ3JlYXRlcyBhIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnQgdHJhbnNmb3JtZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIGFyZ3VtZW50IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyQXJnKGZ1bmMsIHRyYW5zZm9ybSkge1xuICByZXR1cm4gZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIGZ1bmModHJhbnNmb3JtKGFyZykpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBvdmVyQXJnO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fb3ZlckFyZy5qcyIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1hcGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gKiBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBhcnJheU1hcChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFycmF5TWFwO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXJyYXlNYXAuanMiLCIvKiogVXNlZCB0byBtYXRjaCB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLiAqL1xudmFyIHJlSW50ZXJwb2xhdGUgPSAvPCU9KFtcXHNcXFNdKz8pJT4vZztcblxuZXhwb3J0IGRlZmF1bHQgcmVJbnRlcnBvbGF0ZTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3JlSW50ZXJwb2xhdGUuanMiLCJpbXBvcnQgYmFzZVRvU3RyaW5nIGZyb20gJy4vX2Jhc2VUb1N0cmluZy5qcyc7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZy4gQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGZvciBgbnVsbGBcbiAqIGFuZCBgdW5kZWZpbmVkYCB2YWx1ZXMuIFRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b1N0cmluZyhudWxsKTtcbiAqIC8vID0+ICcnXG4gKlxuICogXy50b1N0cmluZygtMCk7XG4gKiAvLyA9PiAnLTAnXG4gKlxuICogXy50b1N0cmluZyhbMSwgMiwgM10pO1xuICogLy8gPT4gJzEsMiwzJ1xuICovXG5mdW5jdGlvbiB0b1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogYmFzZVRvU3RyaW5nKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdG9TdHJpbmc7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL3RvU3RyaW5nLmpzIiwiaW1wb3J0IHsgZGVjb3JhdGUgfSBmcm9tICcuL3ByaXZhdGUvdXRpbHMnO1xuXG5mdW5jdGlvbiBoYW5kbGVEZXNjcmlwdG9yKHRhcmdldCwga2V5LCBkZXNjcmlwdG9yKSB7XG4gIGRlc2NyaXB0b3Iud3JpdGFibGUgPSBmYWxzZTtcbiAgcmV0dXJuIGRlc2NyaXB0b3I7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlYWRvbmx5KC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGRlY29yYXRlKGhhbmRsZURlc2NyaXB0b3IsIGFyZ3MpO1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtZGVjb3JhdG9ycy9zcmMvcmVhZG9ubHkuanMiLCJpbXBvcnQgdHpQYXJzZVRpbWV6b25lIGZyb20gJy4uL19saWIvdHpQYXJzZVRpbWV6b25lJ1xuaW1wb3J0IHN1Yk1pbGxpc2Vjb25kcyBmcm9tICdkYXRlLWZucy9lc20vc3ViTWlsbGlzZWNvbmRzJ1xuaW1wb3J0IHRvRGF0ZSBmcm9tICcuLi90b0RhdGUnXG5cbi8qKlxuICogQG5hbWUgdXRjVG9ab25lZFRpbWVcbiAqIEBjYXRlZ29yeSBUaW1lIFpvbmUgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IGEgZGF0ZS90aW1lIHJlcHJlc2VudGluZyBsb2NhbCB0aW1lIGluIGEgZ2l2ZW4gdGltZSB6b25lIGZyb20gdGhlIFVUQyBkYXRlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm5zIGEgZGF0ZSBpbnN0YW5jZSB3aXRoIHZhbHVlcyByZXByZXNlbnRpbmcgdGhlIGxvY2FsIHRpbWUgaW4gdGhlIHRpbWUgem9uZVxuICogc3BlY2lmaWVkIG9mIHRoZSBVVEMgdGltZSBmcm9tIHRoZSBkYXRlIHByb3ZpZGVkLiBJbiBvdGhlciB3b3Jkcywgd2hlbiB0aGUgbmV3IGRhdGVcbiAqIGlzIGZvcm1hdHRlZCBpdCB3aWxsIHNob3cgdGhlIGVxdWl2YWxlbnQgaG91cnMgaW4gdGhlIHRhcmdldCB0aW1lIHpvbmUgcmVnYXJkbGVzc1xuICogb2YgdGhlIGN1cnJlbnQgc3lzdGVtIHRpbWUgem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8U3RyaW5nfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHdpdGggdGhlIHJlbGV2YW50IFVUQyB0aW1lXG4gKiBAcGFyYW0ge1N0cmluZ30gdGltZVpvbmUgLSB0aGUgdGltZSB6b25lIHRvIGdldCBsb2NhbCB0aW1lIGZvciwgY2FuIGJlIGFuIG9mZnNldCBvciBJQU5BIHRpbWUgem9uZVxuICogQHBhcmFtIHtPcHRpb25zV2l0aFRafSBbb3B0aW9uc10gLSB0aGUgb2JqZWN0IHdpdGggb3B0aW9ucy4gU2VlIFtPcHRpb25zXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL09wdGlvbnN9XG4gKiBAcGFyYW0gezB8MXwyfSBbb3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzPTJdIC0gcGFzc2VkIHRvIGB0b0RhdGVgLiBTZWUgW3RvRGF0ZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy90b0RhdGV9XG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIGVxdWl2YWxlbnQgdGltZSBpbiB0aGUgdGltZSB6b25lXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzYCBtdXN0IGJlIDAsIDEgb3IgMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJbiBKdW5lIDEwYW0gVVRDIGlzIDZhbSBpbiBOZXcgWW9yayAoLTA0OjAwKVxuICogY29uc3QgcmVzdWx0ID0gdXRjVG9ab25lZFRpbWUoJzIwMTQtMDYtMjVUMTA6MDA6MDAuMDAwWicsICdBbWVyaWNhL05ld19Zb3JrJylcbiAqIC8vPT4gSnVuIDI1IDIwMTQgMDY6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXRjVG9ab25lZFRpbWUoZGlydHlEYXRlLCB0aW1lWm9uZSwgb3B0aW9ucykge1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUsIG9wdGlvbnMpXG5cbiAgLy8gVGhpcyBkYXRlIGhhcyB0aGUgVVRDIHRpbWUgdmFsdWVzIG9mIHRoZSBpbnB1dCBkYXRlIGF0IHRoZSBzeXN0ZW0gdGltZSB6b25lXG4gIHZhciB1dGNEYXRlID0gbmV3IERhdGUoXG4gICAgZGF0ZS5nZXRVVENGdWxsWWVhcigpLFxuICAgIGRhdGUuZ2V0VVRDTW9udGgoKSxcbiAgICBkYXRlLmdldFVUQ0RhdGUoKSxcbiAgICBkYXRlLmdldFVUQ0hvdXJzKCksXG4gICAgZGF0ZS5nZXRVVENNaW51dGVzKCksXG4gICAgZGF0ZS5nZXRVVENTZWNvbmRzKCksXG4gICAgZGF0ZS5nZXRVVENNaWxsaXNlY29uZHMoKVxuICApXG4gIC8vIFdlIGp1c3QgbmVlZCB0byBhcHBseSB0aGUgb2Zmc2V0IGluZGljYXRlZCBieSB0aGUgdGltZSB6b25lIHRvIHRoaXMgbG9jYWxpemVkIGRhdGVcbiAgdmFyIG9mZnNldE1pbGxpc2Vjb25kcyA9IHR6UGFyc2VUaW1lem9uZSh0aW1lWm9uZSwgZGF0ZSlcblxuICByZXR1cm4gb2Zmc2V0TWlsbGlzZWNvbmRzXG4gICAgPyBzdWJNaWxsaXNlY29uZHModXRjRGF0ZSwgb2Zmc2V0TWlsbGlzZWNvbmRzKVxuICAgIDogdXRjRGF0ZVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMtdHovZXNtL3V0Y1RvWm9uZWRUaW1lL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIiwiaW1wb3J0IHR6VG9rZW5pemVEYXRlIGZyb20gJy4uL3R6VG9rZW5pemVEYXRlL2luZGV4LmpzJ1xuXG52YXIgTUlMTElTRUNPTkRTX0lOX0hPVVIgPSAzNjAwMDAwXG52YXIgTUlMTElTRUNPTkRTX0lOX01JTlVURSA9IDYwMDAwXG5cbnZhciBwYXR0ZXJucyA9IHtcbiAgdGltZXpvbmU6IC8oW1orLV0uKikkLyxcbiAgdGltZXpvbmVaOiAvXihaKSQvLFxuICB0aW1lem9uZUhIOiAvXihbKy1dKShcXGR7Mn0pJC8sXG4gIHRpbWV6b25lSEhNTTogL14oWystXSkoXFxkezJ9KTo/KFxcZHsyfSkkLyxcbiAgdGltZXpvbmVJQU5BOiAvKFVUQ3woPzpbYS16QS1aXStcXC9bYS16QS1aX10rKD86XFwvW2EtekEtWl9dKyk/KSkkL1xufVxuXG4vLyBQYXJzZSB2YXJpb3VzIHRpbWUgem9uZSBvZmZzZXQgZm9ybWF0cyB0byBhbiBvZmZzZXQgaW4gbWlsbGlzZWNvbmRzXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0elBhcnNlVGltZXpvbmUodGltZXpvbmVTdHJpbmcsIGRhdGUpIHtcbiAgdmFyIHRva2VuXG4gIHZhciBhYnNvbHV0ZU9mZnNldFxuXG4gIC8vIFpcbiAgdG9rZW4gPSBwYXR0ZXJucy50aW1lem9uZVouZXhlYyh0aW1lem9uZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgcmV0dXJuIDBcbiAgfVxuXG4gIHZhciBob3Vyc1xuXG4gIC8vIMKxaGhcbiAgdG9rZW4gPSBwYXR0ZXJucy50aW1lem9uZUhILmV4ZWModGltZXpvbmVTdHJpbmcpXG4gIGlmICh0b2tlbikge1xuICAgIGhvdXJzID0gcGFyc2VJbnQodG9rZW5bMl0sIDEwKVxuXG4gICAgaWYgKCF2YWxpZGF0ZVRpbWV6b25lKGhvdXJzKSkge1xuICAgICAgcmV0dXJuIE5hTlxuICAgIH1cblxuICAgIGFic29sdXRlT2Zmc2V0ID0gaG91cnMgKiBNSUxMSVNFQ09ORFNfSU5fSE9VUlxuICAgIHJldHVybiB0b2tlblsxXSA9PT0gJysnID8gLWFic29sdXRlT2Zmc2V0IDogYWJzb2x1dGVPZmZzZXRcbiAgfVxuXG4gIC8vIMKxaGg6bW0gb3IgwrFoaG1tXG4gIHRva2VuID0gcGF0dGVybnMudGltZXpvbmVISE1NLmV4ZWModGltZXpvbmVTdHJpbmcpXG4gIGlmICh0b2tlbikge1xuICAgIGhvdXJzID0gcGFyc2VJbnQodG9rZW5bMl0sIDEwKVxuICAgIHZhciBtaW51dGVzID0gcGFyc2VJbnQodG9rZW5bM10sIDEwKVxuXG4gICAgaWYgKCF2YWxpZGF0ZVRpbWV6b25lKGhvdXJzLCBtaW51dGVzKSkge1xuICAgICAgcmV0dXJuIE5hTlxuICAgIH1cblxuICAgIGFic29sdXRlT2Zmc2V0ID1cbiAgICAgIGhvdXJzICogTUlMTElTRUNPTkRTX0lOX0hPVVIgKyBtaW51dGVzICogTUlMTElTRUNPTkRTX0lOX01JTlVURVxuICAgIHJldHVybiB0b2tlblsxXSA9PT0gJysnID8gLWFic29sdXRlT2Zmc2V0IDogYWJzb2x1dGVPZmZzZXRcbiAgfVxuXG4gIC8vIElBTkEgdGltZSB6b25lXG4gIHRva2VuID0gcGF0dGVybnMudGltZXpvbmVJQU5BLmV4ZWModGltZXpvbmVTdHJpbmcpXG4gIGlmICh0b2tlbikge1xuICAgIC8vIHZhciBbZlllYXIsIGZNb250aCwgZkRheSwgZkhvdXIsIGZNaW51dGUsIGZTZWNvbmRdID0gdHpUb2tlbml6ZURhdGUoZGF0ZSwgdGltZXpvbmVTdHJpbmcpXG4gICAgdmFyIHRva2VucyA9IHR6VG9rZW5pemVEYXRlKGRhdGUsIHRpbWV6b25lU3RyaW5nKVxuICAgIHZhciBhc1VUQyA9IERhdGUuVVRDKFxuICAgICAgdG9rZW5zWzBdLFxuICAgICAgdG9rZW5zWzFdIC0gMSxcbiAgICAgIHRva2Vuc1syXSxcbiAgICAgIHRva2Vuc1szXSxcbiAgICAgIHRva2Vuc1s0XSxcbiAgICAgIHRva2Vuc1s1XVxuICAgIClcbiAgICB2YXIgdGltZXN0YW1wV2l0aE1zWmVyb2VkID0gZGF0ZS5nZXRUaW1lKCkgLSAoZGF0ZS5nZXRUaW1lKCkgJSAxMDAwKVxuICAgIHJldHVybiAtKGFzVVRDIC0gdGltZXN0YW1wV2l0aE1zWmVyb2VkKVxuICB9XG5cbiAgcmV0dXJuIDBcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVUaW1lem9uZShob3VycywgbWludXRlcykge1xuICBpZiAobWludXRlcyAhPSBudWxsICYmIChtaW51dGVzIDwgMCB8fCBtaW51dGVzID4gNTkpKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMtdHovZXNtL19saWIvdHpQYXJzZVRpbWV6b25lL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWFnZ3JpZC1jb21wb25lbnRzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IHsgRXZlbnRzTWl4aW4sIHdpdGhFdmVudHNNaXhpbiB9IGZyb20gJy4vRXZlbnRzTWl4aW4nXG5cbmV4cG9ydCBkZWZhdWx0IEV2ZW50c01peGluXG5leHBvcnQgeyB3aXRoRXZlbnRzTWl4aW4gfVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL0V2ZW50c01peGluL2luZGV4LmpzIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWFnZ3JpZC1jb21wb25lbnRzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IERhdGVUaW1lSW5wdXQgZnJvbSAnLi9EYXRlVGltZUlucHV0J1xuXG5leHBvcnQgZGVmYXVsdCBEYXRlVGltZUlucHV0XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvRGF0ZVRpbWVJbnB1dC9pbmRleC5qcyIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBiYmotbWFza3MgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgTnVtYmVyTWFzayBmcm9tICcuL051bWJlck1hc2snXG5pbXBvcnQgRGF0ZU1hc2ssIHtcbiAgZ2V0RGF5T2ZZZWFyLFxuICBnZXRXZWVrTnVtYmVyLFxuICBnZXRXZWVrU3RhcnRCeUxvY2FsZSxcbiAgSVNfREFURV9SRUdFWCxcbiAgSVNfVElNRV9SRUdFWCxcbiAgZml4U2hvcnRJU08sXG4gIGdldFRpbWV6b25lT3JPZmZzZXRcbn0gZnJvbSAnLi9EYXRlTWFzaydcblxuaW1wb3J0IFN0cmluZ01hc2sgZnJvbSAnLi9TdHJpbmdNYXNrJ1xuaW1wb3J0IFR5cGVzIGZyb20gJy4vVHlwZXMnXG5cbmNvbnN0IFV0aWxzID0ge1xuICBEYXRlczoge1xuICAgIGdldERheU9mWWVhcixcbiAgICBnZXRXZWVrTnVtYmVyLFxuICAgIGdldFdlZWtTdGFydEJ5TG9jYWxlLFxuICAgIElTX0RBVEVfUkVHRVgsXG4gICAgSVNfVElNRV9SRUdFWCxcbiAgICBmaXhTaG9ydElTTyxcbiAgICBnZXRUaW1lem9uZU9yT2Zmc2V0XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVHlwZXNcbmV4cG9ydCB7IFR5cGVzLCBOdW1iZXJNYXNrLCBEYXRlTWFzaywgU3RyaW5nTWFzaywgVXRpbHMgfVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2luZGV4LmpzIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWFnZ3JpZC1jb21wb25lbnRzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IEJvb2xlYW5FZGl0b3IgZnJvbSAnLi9Cb29sZWFuRWRpdG9yJ1xuXG5leHBvcnQgZGVmYXVsdCBCb29sZWFuRWRpdG9yXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvQm9vbGVhbkVkaXRvci9pbmRleC5qcyIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBiYXNpcy1hZ2dyaWQtY29tcG9uZW50cyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmltcG9ydCBDb21wb25lbnQgZnJvbSAnLi4vQ29tcG9uZW50J1xuaW1wb3J0IEJvb2xlYW5Td2l0Y2ggZnJvbSAnLi4vQm9vbGVhblN3aXRjaCdcblxuLyoqXG4gKiBCb29sZWFucyBFZGl0b3JcbiAqXG4gKiBIYW5kbGUgYm9vbGVhbiB2YWx1ZXMgRWRpdGluZ1xuICpcbiAqICMjIE9wdGlvbnNcbiAqXG4gKiB8IE5hbWUgICAgICAgICAgICAgICAgICBcdHwgRGVmYXVsdCAgICAgXHR8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcdHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHR8Oi0tLS0tLS0tLS0tLS06fC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAqKmJvb2xlYW5Vc2VkVHJ1ZVZhbHVlKiogICB8IHVuZGVmaW5lZCAgICB8IHRoZSB2YWx1ZSB0byByZXR1cm4gd2hlbiB0aGUgZWRpdG9yIGNoYW5nZXMgdGhlIGN1cnJlbnQgY2VsbCB2YWx1ZSB0byB0cnVlLiBpbiBjYXNlIGl0IGlzIHVuZGVmaW5lZCB0aGVuIHdlIHVzZSB0aGUgZmlyc3QgaXRlbSBpbiAqKmJvb2xlYW5UcnVlVmFsdWVbXSoqXG4gKiB8ICoqYm9vbGVhblVzZWRGYWxzZVZhbHVlKiogICB8IHVuZGVmaW5lZCAgICB8IHRoZSB2YWx1ZSB0byByZXR1cm4gd2hlbiB0aGUgZWRpdG9yIGNoYW5nZXMgdGhlIGN1cnJlbnQgY2VsbCB2YWx1ZSB0byBmYWxzZS4gaW4gY2FzZSBpdCBpcyB1bmRlZmluZWQgdGhlbiB3ZSB1c2UgdGhlIGZpcnN0IGl0ZW0gaW4gKipib29sZWFuRmFsc2VWYWx1ZVtdKipcbiAqIHwgKipib29sZWFuVHJ1ZVZhbHVlW10qKiAgICAgICB8IHRydWUoYm9vbCkgIFx0fCBUaGUgb3B0aW9ucyBkZXNjcmliZXMgd2hhdCBpcyBjb25zaWRlcmVkIGB0cnVlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHR8XG4gKiB8ICoqYm9vbGVhbkZhbHNlVmFsdWVbXSoqICAgICAgfCBmYWxzZShib29sKSBcdHwgVGhlIG9wdGlvbnMgZGVzY3JpYmVzIHdoYXQgaXMgY29uc2lkZXJlZCBgZmFsc2VgXG4gKlxuICogQGF1dGhvciBIeXlhbiBBYm8gRmFraGVyIDxoYWJvZmFraGVyQGJhc2lzLmNvbT5cbiAqL1xuY2xhc3MgQm9vbGVhbkVkaXRvciBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiAgQGluaGVyaXREb2NcbiAgICovXG4gIGluaXQocGFyYW1zKSB7XG4gICAgaWYgKHBhcmFtcy5rZXlQcmVzcyAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBCb29sZWFuKHBhcmFtcy5rZXlQcmVzcylcbiAgICB9IGVsc2UgaWYgKHBhcmFtcy5jaGFyUHJlc3MgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gQm9vbGVhbihwYXJhbXMuY2hhclByZXNzKVxuICAgIH1cblxuICAgIHRoaXMuX3RydWVWYWx1ZSA9IFtdLmNvbmNhdChcbiAgICAgIHRoaXMuZ2V0T3B0aW9uKCdib29sZWFuVHJ1ZVZhbHVlJywgcGFyYW1zLCBbdHJ1ZV0pXG4gICAgKVxuXG4gICAgdGhpcy5fZmFsc2VWYWx1ZSA9IFtdLmNvbmNhdChcbiAgICAgIHRoaXMuZ2V0T3B0aW9uKCdib29sZWFuRmFsc2VWYWx1ZScsIHBhcmFtcywgW2ZhbHNlXSlcbiAgICApXG5cbiAgICB0aGlzLl9yZXR1cm5UcnVlVmFsdWUgPSB0aGlzLmdldE9wdGlvbihcbiAgICAgICdib29sZWFuVXNlZFRydWVWYWx1ZScsXG4gICAgICBwYXJhbXMsXG4gICAgICB0aGlzLl90cnVlVmFsdWVbMF1cbiAgICApXG4gICAgdGhpcy5fcmV0dXJuRmFsc2VWYWx1ZSA9IHRoaXMuZ2V0T3B0aW9uKFxuICAgICAgJ2Jvb2xlYW5Vc2VkRmFsc2VWYWx1ZScsXG4gICAgICBwYXJhbXMsXG4gICAgICB0aGlzLl9mYWxzZVZhbHVlWzBdXG4gICAgKVxuXG4gICAgdGhpcy5fdHJ1ZVZhbHVlID0gdGhpcy5fdHJ1ZVZhbHVlLm1hcCh4ID0+IFN0cmluZyh4KSlcbiAgICB0aGlzLl9mYWxzZVZhbHVlID0gdGhpcy5fZmFsc2VWYWx1ZS5tYXAoeCA9PiBTdHJpbmcoeCkpXG5cbiAgICB0aGlzLmZvY3VzQWZ0ZXJBdHRhY2hlZCA9IHBhcmFtcy5jZWxsU3RhcnRlZEVkaXRcbiAgICBpZiAodGhpcy5mb2N1c0FmdGVyQXR0YWNoZWQpIHtcbiAgICAgIGxldCBrZXlQcmVzc0JhY2tzcGFjZU9yRGVsZXRlID1cbiAgICAgICAgcGFyYW1zLmtleVByZXNzID09IDMyIHx8IHBhcmFtcy5rZXlQcmVzcyA9PSA0NiAvLyBzcGFjZSAvLyBkZWxldGVcblxuICAgICAgaWYgKGtleVByZXNzQmFja3NwYWNlT3JEZWxldGUpIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBmYWxzZVxuICAgICAgfSBlbHNlIGlmIChwYXJhbXMuY2hhclByZXNzICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gcGFyYW1zLmNoYXJQcmVzc1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBwYXJhbXMudmFsdWVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdmFsdWUgPSBwYXJhbXMudmFsdWVcbiAgICB9XG5cbiAgICB0aGlzLl92YWx1ZSA9IHRoaXMuX2NvbnZlcnRWYWx1ZShcbiAgICAgIHRoaXMuX3ZhbHVlLFxuICAgICAgdGhpcy5fdHJ1ZVZhbHVlLFxuICAgICAgdGhpcy5fZmFsc2VWYWx1ZVxuICAgIClcblxuICAgIHRoaXMuX3N3aXRjaGVyID0gbmV3IEJvb2xlYW5Td2l0Y2godGhpcy5fdmFsdWUsIHN3aXRjaGVyID0+IHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5fY29udmVydFZhbHVlKFxuICAgICAgICBzd2l0Y2hlci5pc0NoZWNrZWQoKSxcbiAgICAgICAgdGhpcy5fdHJ1ZVZhbHVlLFxuICAgICAgICB0aGlzLl9mYWxzZVZhbHVlXG4gICAgICApXG4gICAgfSlcbiAgICB0aGlzLl9zd2l0Y2hlci5pbml0KHBhcmFtcylcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGluaGVyaXREb2NcbiAgICovXG4gIGdldEd1aSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3dpdGNoZXIuZ2V0R3VpKClcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGluaGVyaXREb2NcbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3dpdGNoZXIuZGVzdHJveSgpXG4gIH1cblxuICAvKipcbiAgICogR2V0cyBjYWxsZWQgb25jZSBhZnRlciBHVUkgaXMgYXR0YWNoZWQgdG8gRE9NLlxuICAgKiBNYWtlIHN1cmUgdGhlIGNvbnRhaW5lciBpcyBhbHdheXMgZm9jdXNlZCBhbmQgbGlzdGVuaW5nIHRvIGtleSBjaGFuZ2VzXG4gICAqL1xuICBhZnRlckd1aUF0dGFjaGVkKCkge1xuICAgIGlmICh0aGlzLmZvY3VzQWZ0ZXJBdHRhY2hlZCkge1xuICAgICAgdGhpcy5mb2N1c0luKClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBmaW5hbCB2YWx1ZSB0byB0aGUgZ3JpZCwgdGhlIHJlc3VsdCBvZiB0aGUgZWRpdGluZ1xuICAgKlxuICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgKi9cbiAgZ2V0VmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlID8gdGhpcy5fcmV0dXJuVHJ1ZVZhbHVlIDogdGhpcy5fcmV0dXJuRmFsc2VWYWx1ZVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgY2FsbGVkIG9uY2UgYWZ0ZXIgaW5pdGlhbGl6ZWQgYW5kIHJldHVybnMgZmFsc2Ugc28gdGhlIGVkaXRvciBhcHBlYXJzIGluIHRoZSBjZWxsXG4gICAqXG4gICAqIEByZXR1cm4ge0Jvb2xlYW59IGFsd2F5cyBmYWxzZVxuICAgKiovXG4gIGlzUG9wdXAoKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvKipcbiAgICogSWYgZG9pbmcgZnVsbCByb3cgZWRpdCwgdGhlbiBnZXRzIGNhbGxlZCB3aGVuIHRhYmJpbmcgaW50byB0aGUgY2VsbC5cbiAgICpcbiAgICogQHJldHVybiB7Qm9vbGVhbn1cbiAgICovXG4gIGZvY3VzSW4oKSB7XG4gICAgdGhpcy5fc3dpdGNoZXIuc2V0RGlzYWJsZWQoZmFsc2UpXG4gICAgdGhpcy5fc3dpdGNoZXIuZm9jdXMoKVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvKipcbiAgICogSWYgZG9pbmcgZnVsbCByb3cgZWRpdCwgdGhlbiBnZXRzIGNhbGxlZCB3aGVuIHRhYmJpbmcgb3V0IG9mIHRoZSBjZWxsLlxuICAgKlxuICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgKi9cbiAgZm9jdXNPdXQoKSB7XG4gICAgdGhpcy5fc3dpdGNoZXIuc2V0RGlzYWJsZWQodHJ1ZSlcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gdmFsdWUgdGhlIGN1cnJlbnQgY2VsbCB2YWx1ZVxuICAgKiBAcGFyYW0ge1N0cmluZ3xOdW1iZXJ9IHRydWVWYWx1ZSB0cnVlIHZhbHVlIGFsaWFzXG4gICAqIEBwYXJhbSB7U3RyaW5nfE51bWJlcn0gZmFsc2VWYWx1ZSBmYWxzZSB2YWx1ZSBhbGlhc1xuICAgKi9cbiAgX2NvbnZlcnRWYWx1ZSh2YWx1ZSwgdHJ1ZVZhbHVlLCBmYWxzZVZhbHVlKSB7XG4gICAgY29uc3QgdmFsdWVBc1N0cmluZyA9IFN0cmluZyh2YWx1ZSlcblxuICAgIHJldHVybiB0cnVlVmFsdWUuaW5kZXhPZih2YWx1ZUFzU3RyaW5nKSA+IC0xXG4gICAgICA/IHRydWVcbiAgICAgIDogZmFsc2VWYWx1ZS5pbmRleE9mKHZhbHVlQXNTdHJpbmcpID4gLTFcbiAgICAgID8gZmFsc2VcbiAgICAgIDogdmFsdWVcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBCb29sZWFuRWRpdG9yXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvQm9vbGVhbkVkaXRvci9Cb29sZWFuRWRpdG9yLmpzIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWFnZ3JpZC1jb21wb25lbnRzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zICovXG5cbi8qKlxuICogVGhlIGJhc2UgY29tcG9uZW50IGNsYXNzXG4gKlxuICogVGhpcyBjbGFzcyBpcyB0aGUgYWJzdHJhY3QgY2xhc3Mgd2hpY2ggYWxsIGNvbXBvbmVudHMgc2hvdWxkIHVzZVxuICpcbiAqIEBhdXRob3IgSHl5YW4gQWJvIEZha2hlciA8aGFib2Zha2hlckBiYXNpcy5jb20+XG4gKi9cbmNsYXNzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IGh0bWwgZWxlbWVudFxuICAgKlxuICAgKiBAdHlwZSB7SFRNTEVsZW1lbnR9XG4gICAqL1xuICBfZ3VpID0gbnVsbFxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBjb21wb25lbnRcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtc1xuICAgKlxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBpbml0KHBhcmFtcykge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX0gZG9lcyBub3QgaW1wbGVtZW50IHRoZSBbaW5pdF0gbWV0aG9kYFxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIERPTSBlbGVtZW50IG9mIHRoZSBjb21wb25lbnQsIHRoaXMgaXMgd2hhdCB0aGUgZ3JpZCBwdXRzIGludG8gdGhlIGNlbGxcbiAgICpcbiAgICogQHJldHVybiB7SFRNTEVsZW1lbnR9XG4gICAqL1xuICBnZXRHdWkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2d1aVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgY2FsbGVkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQuIElmIHlvdXIgY3VzdG9tIGNvbXBvbmVudCBuZWVkcyB0byBkb1xuICAgKiBhbnkgcmVzb3VyY2UgY2xlYW5pbmcgdXAsIGRvIGl0IGhlcmUuXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIC8vIHBhc3NcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIHRoZSByZXF1aXJlZCBvcHRpb24gdmFsdWVcbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiB3aWxsIHRyeSB0byBmaW5kIHRoZSBwYXNzZWQgb3B0aW9uJ3MgdmFsdWUgaW4gdGhlIGZvbGxvd2luZyBvcmRlclxuICAgKlxuICAgKiAgMS4gcGFyYW1zXG4gICAqICAyLiBTZWFyY2ggYHBhcmFtcy5jb2xEZWZgXG4gICAqICAzLiBTZWFyY2ggYHBhcmFtcy5jb250ZXh0LkFHcmlkQ29tcG9uZW50c01ldGFDb25maWdbQ09MVU1OX0lEXWAgb3IgYHBhcmFtcy5jb250ZXh0Lm1ldGFbQ09MVU1OX0lEXWBcbiAgICogIDQuIFNlYXJjaCBgcGFyYW1zLmNvbnRleHQuQUdyaWRDb21wb25lbnRzTWV0YUNvbmZpZ2Agb3IgYHBhcmFtcy5jb250ZXh0Lm1ldGFgXG4gICAqICA1LiBTZWFyY2ggYHBhcmFtcy5jb250ZXh0YFxuICAgKiAgNi4gSWYgbm9uZSBmb3VuZCByZXR1cm4gdGhlIGZhbGxiYWNrXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIHRoZSBuYW1lIG9mIHRoZSBvcHRpb25cbiAgICogQHBhcmFtIHtwYXJhbXN9IHBhcmFtcyBhbiBvYmplY3QgdXNlZCB0byBzZWFyY2ggZm9yIHRoZSBvcHRpb25cbiAgICogQHBhcmFtIHtTdHJpbmd9IGZhbGxiYWNrIGEgdmFsdWUgdG8gcmV0dXJuIGluIGNhc2UgdGhlIG9wdGlvbiBjYW4gbm90IGJlIGZvdW5kXG4gICAqL1xuICBnZXRPcHRpb24obmFtZSwgcGFyYW1zLCBmYWxsYmFjayA9IG51bGwpIHtcbiAgICBsZXQgb3B0aW9uXG5cbiAgICBpZiAocGFyYW1zICYmIHBhcmFtcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgb3B0aW9uID0gcGFyYW1zW25hbWVdXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRyeSB0byBmZXRjaCBmcm9tIHRoZSBjb2x1bW4gZGVmIGZpcnN0XG4gICAgICBpZiAoXG4gICAgICAgIHBhcmFtcy5oYXNPd25Qcm9wZXJ0eSgnY29sRGVmJykgJiZcbiAgICAgICAgcGFyYW1zLmNvbERlZi5oYXNPd25Qcm9wZXJ0eShuYW1lKVxuICAgICAgKSB7XG4gICAgICAgIG9wdGlvbiA9IHBhcmFtcy5jb2xEZWZbbmFtZV1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHRyeSB0byBmZXRjaCBmcm9tIEFHcmlkQ29tcG9uZW50c01ldGFDb25maWd8bWV0YSBpbiB0aGUgY29udGV4dFxuICAgICAgICBsZXQgQUdyaWRDb21wb25lbnRzTWV0YUNvbmZpZyA9IG51bGxcbiAgICAgICAgaWYgKHBhcmFtcy5oYXNPd25Qcm9wZXJ0eSgnY29udGV4dCcpKSB7XG4gICAgICAgICAgQUdyaWRDb21wb25lbnRzTWV0YUNvbmZpZyA9XG4gICAgICAgICAgICBwYXJhbXMuY29udGV4dC5BR3JpZENvbXBvbmVudHNNZXRhQ29uZmlnIHx8IHBhcmFtcy5jb250ZXh0Lm1ldGFcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBBR3JpZENvbXBvbmVudHNNZXRhQ29uZmlnICYmXG4gICAgICAgICAgQUdyaWRDb21wb25lbnRzTWV0YUNvbmZpZy5oYXNPd25Qcm9wZXJ0eShwYXJhbXMuY29sdW1uLmNvbElkKSAmJlxuICAgICAgICAgIEFHcmlkQ29tcG9uZW50c01ldGFDb25maWdbcGFyYW1zLmNvbHVtbi5jb2xJZF0uaGFzT3duUHJvcGVydHkobmFtZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgb3B0aW9uID0gQUdyaWRDb21wb25lbnRzTWV0YUNvbmZpZ1twYXJhbXMuY29sdW1uLmNvbElkXVtuYW1lXVxuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIEFHcmlkQ29tcG9uZW50c01ldGFDb25maWcgJiZcbiAgICAgICAgICBBR3JpZENvbXBvbmVudHNNZXRhQ29uZmlnLmhhc093blByb3BlcnR5KG5hbWUpXG4gICAgICAgICkge1xuICAgICAgICAgIG9wdGlvbiA9IEFHcmlkQ29tcG9uZW50c01ldGFDb25maWdbbmFtZV1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB0cnkgdG8gZmV0Y2ggZnJvbSB0aGUgY29udGV4dCBvYmplY3QgaXRzZWxmXG4gICAgICAgICAgY29uc3QgY29udGV4dCA9IHBhcmFtcy5jb250ZXh0XG4gICAgICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICAgICAgb3B0aW9uID0gY29udGV4dFtuYW1lXVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB0cnkgdG8gY2hlY2sgcGFyYW1zIGl0c2VsZiBvciBmYWxsYmFjayB0byBkZWZhdWx0XG4gICAgICAgICAgICBvcHRpb24gPSBmYWxsYmFja1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0eXBlb2Ygb3B0aW9uICE9PSAndW5kZWZpbmVkJyA/IG9wdGlvbiA6IGZhbGxiYWNrXG4gIH1cblxuICAvKipcbiAgICogR2V0IFdpbmRvdyBJbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge3BhcmFtc30gcGFyYW1zIGFuIG9iamVjdCB1c2VkIHRvIHNlYXJjaCBmb3IgdGhlIHdpbmRvdyBpbnN0YW5jZVxuICAgKlxuICAgKiBAcmV0dXJuIHtXaW5kb3d9XG4gICAqL1xuICBnZXRXaW4ocGFyYW1zKSB7XG4gICAgY29uc3Qgd2luID0gdGhpcy5nZXRPcHRpb24oJ3dpbmRvdycsIHBhcmFtcykgfHwgd2luZG93IHx8IG51bGxcblxuICAgIGlmICghd2luKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0N1cnJlbnQgZW52aXJvbm1lbnQgZG9lcyBub3Qgc3VwcG9ydCB3aW5kb3cnKVxuICAgIH1cblxuICAgIHJldHVybiB3aW5cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZG9jdW1lbnQgSW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtwYXJhbXN9IHBhcmFtcyBhbiBvYmplY3QgdXNlZCB0byBzZWFyY2ggZm9yIHRoZSBkb2N1bWVudCBpbnN0YW5jZVxuICAgKlxuICAgKiBAcmV0dXJuIHtIVE1MRG9jdW1lbnR9XG4gICAqL1xuICBnZXREb2MocGFyYW1zKSB7XG4gICAgY29uc3QgZG9jID0gdGhpcy5nZXRPcHRpb24oJ2RvY3VtZW50JywgcGFyYW1zKSB8fCBkb2N1bWVudCB8fCBudWxsXG5cbiAgICBpZiAoIWRvYykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDdXJyZW50IGVudmlyb25tZW50IGRvZXMgbm90IHN1cHBvcnQgZG9jdW1lbnQnKVxuICAgIH1cblxuICAgIHJldHVybiBkb2NcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDb21wb25lbnRcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9Db21wb25lbnQvQ29tcG9uZW50LmpzIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWFnZ3JpZC1jb21wb25lbnRzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IHsgYXV0b2JpbmQsIG92ZXJyaWRlIH0gZnJvbSAnY29yZS1kZWNvcmF0b3JzJ1xuaW1wb3J0IENvbXBvbmVudCBmcm9tICcuLi9Db21wb25lbnQnXG5pbXBvcnQgJy4vc3R5bGUuc2NzcydcblxuLyoqXG4gKiBCb29sZWFuIFJlbmRlcmVyXG4gKlxuICogU2ltcGxlIHRvZ2dsZSBzd2l0Y2ggdG8gaGFuZGxlIGJvb2xlYW4gdmFsdWVzXG4gKlxuICogQGF1dGhvciBIeXlhbiBBYm8gRmFraGVyIDxoYWJvZmFraGVyQGJhc2lzLmNvbT5cbiAqL1xuY2xhc3MgQm9vbGVhblN3aXRjaCBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3QgbmV3IEJvb2xlYW5Td2l0Y2ggQ29tcG9uZW50XG4gICAqXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gW2luaXRpYWxWYWx1ZSA9IGZhbHNlXSB0aGUgZGVmYXVsdCBzdGF0ZSAsIGNoZWNrZWQgb3IgdW5jaGVja2VkXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtsaXN0ZW5lciA9IG51bGxdIGEgbGlzdGVuZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHN0YXRlIGlzIGNoYW5nZWRcbiAgICovXG4gIGNvbnN0cnVjdG9yKGluaXRpYWxWYWx1ZSA9IGZhbHNlLCBsaXN0ZW5lciA9IG51bGwpIHtcbiAgICBzdXBlcigpXG4gICAgdGhpcy5zZXRDaGVja2VkKGluaXRpYWxWYWx1ZSlcbiAgICB0aGlzLnNldExpc3RlbmVyKGxpc3RlbmVyKVxuICAgIHRoaXMuc2V0RGlzYWJsZWQoZmFsc2UpXG4gIH1cblxuICAvKipcbiAgICogIEBpbmhlcml0RG9jXG4gICAqL1xuICBAb3ZlcnJpZGVcbiAgaW5pdChwYXJhbXMpIHtcbiAgICB0aGlzLl9wYXJhbXMgPSBwYXJhbXNcbiAgICB0aGlzLl9vbkNsaWNrID0gdGhpcy5fb25DbGljay5iaW5kKHRoaXMpXG4gICAgdGhpcy5fb25LZXlkb3duID0gdGhpcy5fb25LZXlkb3duLmJpbmQodGhpcylcblxuICAgIHRoaXMuX2d1aSA9IHRoaXMuZ2V0RG9jKHBhcmFtcykuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICB0aGlzLl9ndWkuY2xhc3NOYW1lID0gJ2Jvb2xTd2l0Y2hfX3dyYXBwZXInXG4gICAgdGhpcy5fZ3VpLnRhYkluZGV4ID0gLTFcblxuICAgIHRoaXMucmVuZGVyKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlIHN3aXRjaCBzbGlkZXIgYW5kIGhpZGRlbiBpbnB1dC5cbiAgICovXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBkb2MgPSB0aGlzLmdldERvYyh0aGlzLl9wYXJhbXMpXG5cbiAgICBjb25zdCBib29sU3dpdGNoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICBib29sU3dpdGNoLmNsYXNzTmFtZSA9ICdib29sU3dpdGNoJ1xuXG4gICAgLy8gaW5wdXRcbiAgICB0aGlzLl9pbnB1dCA9IGRvYy5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXG4gICAgdGhpcy5faW5wdXQuaWQgPSBgZWwtJHtNYXRoLnJhbmRvbSgpfWBcbiAgICB0aGlzLl9pbnB1dC5uYW1lID0gJ2NoZWNrYm94J1xuICAgIHRoaXMuX2lucHV0LmNsYXNzTmFtZSA9ICdib29sU3dpdGNoX19jaGVja2JveCdcbiAgICB0aGlzLl9pbnB1dC50eXBlID0gJ2NoZWNrYm94J1xuICAgIHRoaXMuX2lucHV0LmNoZWNrZWQgPSB0aGlzLmlzQ2hlY2tlZCgpXG4gICAgdGhpcy5faW5wdXQuZGlzYWJsZWQgPSB0aGlzLmlzRGlzYWJsZWQoKVxuICAgIHRoaXMuX2lucHV0LnRhYkluZGV4ID0gJzAnXG5cbiAgICAvLyBsYWJlbFxuICAgIGNvbnN0IGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGFiZWwnKVxuICAgIGxhYmVsLmNsYXNzTmFtZSA9ICdib29sU3dpdGNoX19sYWJlbCdcbiAgICBsYWJlbC5mb3IgPSB0aGlzLl9pbnB1dC5pZFxuICAgIGxhYmVsLmlubmVySFRNTCA9IC8qIGh0bWwgKi8gYFxuICAgICAgPHNwYW4gY2xhc3M9XCJib29sU3dpdGNoX19pbm5lclwiPjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYm9vbFN3aXRjaF9fc3dpdGNoXCI+PC9zcGFuPlxuICAgIGBcblxuICAgIC8vIGF0dGFjaGUgaW5wdXQgYW5kIHNsaWRlciB0byBjb21wb25lbnRcbiAgICBib29sU3dpdGNoLmFwcGVuZENoaWxkKHRoaXMuX2lucHV0KVxuICAgIGJvb2xTd2l0Y2guYXBwZW5kQ2hpbGQobGFiZWwpXG5cbiAgICBib29sU3dpdGNoLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5fb25DbGljaylcbiAgICB0aGlzLl9ndWkuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuX29uS2V5ZG93bilcblxuICAgIHRoaXMuX2d1aS5hcHBlbmRDaGlsZChib29sU3dpdGNoKVxuICB9XG5cbiAgLyoqXG4gICAqICBAaW5oZXJpdERvY1xuICAgKi9cbiAgQG92ZXJyaWRlXG4gIGRlc3Ryb3koKSB7XG4gICAgY29uc3QgYm9vbFN3aXRjaCA9IHRoaXMuX2d1aS5xdWVyeVNlbGVjdG9yKCcuYm9vbFN3aXRjaCcpXG4gICAgYm9vbFN3aXRjaC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuX29uQ2xpY2spXG4gICAgdGhpcy5fZ3VpLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLl9vbktleWRvd24pXG4gIH1cblxuICAvKipcbiAgICogRm9jdXMgdGhlIGNvbXBvbmVudFxuICAgKi9cbiAgZm9jdXMoKSB7XG4gICAgdGhpcy5fZ3VpLmZvY3VzKClcbiAgICB0aGlzLl9pbnB1dC5mb2N1cygpXG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgbGlzdGVuZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHN3aXRjaCBzdGF0ZSBpcyBjaGFuZ2VkXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGxpc3RlbmVyXG4gICAqL1xuICBzZXRMaXN0ZW5lcihsaXN0ZW5lcikge1xuICAgIHRoaXMuX2xpc3RlbmVyID0gbGlzdGVuZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxpc3RlbmVyIGluc3RhbmNlICwgaWZcbiAgICpcbiAgICogQHJldHVybiB7RnVuY3Rpb258bnVsbH1cbiAgICovXG4gIGdldExpc3RlbmVyKCkge1xuICAgIHJldHVybiB0aGlzLl9saXN0ZW5lclxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBjaGVja2VkXG4gICAqXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gdmFsdWUgdHJ1ZSB0byBjaGVjayAsIGZhbHNlIHRvIHVuY2hlY2tcbiAgICovXG4gIHNldENoZWNrZWQodmFsdWUpIHtcbiAgICB0aGlzLl9jaGVja2VkID0gdmFsdWVcbiAgICBpZiAodGhpcy5faW5wdXQpIHtcbiAgICAgIHRoaXMuX2lucHV0LmNoZWNrZWQgPSB2YWx1ZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB0aGUgaWYgc3dpdGNoIGlzIGNoZWNrZWRcbiAgICpcbiAgICogQHJldHVybiB7Qm9vbGVhbn0gIHRydWUgd2hlbiBjaGVja2VkICwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBpc0NoZWNrZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NoZWNrZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGUgdGhlIGNvbXBvbmVudCBzdGF0ZVxuICAgKi9cbiAgdG9nZ2xlKCkge1xuICAgIHRoaXMuc2V0Q2hlY2tlZCghdGhpcy5pc0NoZWNrZWQoKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgZGlzYWJsZWRcbiAgICpcbiAgICogQHBhcmFtIHtCb29sZWFufSB2YWx1ZSB0cnVlIHRvIGRpc2FibGVkICwgZmFsc2UgdG8gZW5hYmxlXG4gICAqL1xuICBzZXREaXNhYmxlZCh2YWx1ZSkge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWVcbiAgICBpZiAodGhpcy5faW5wdXQpIHtcbiAgICAgIHRoaXMuX2lucHV0LmRpc2FibGVkID0gdmFsdWVcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIHN3aXRjaCBpcyBkaXNhYmxlZFxuICAgKlxuICAgKiBAcmV0dXJuIHtCb29sZWFufSB0cnVlIHdoZW4gZGlzYWJsZWQgLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIGlzRGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkXG4gIH1cblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgY2xpY2sgbGlzdGVuZXIgb2YgdGhlIHN3aXRjaC4gSXQgd2lsbCB0b2dnbGUgdGhlIHN0YXRlIGFuZCBmaXJlIGFueSByZWdpc3RlcmVkIGxpc3RlbmVyXG4gICAqXG4gICAqIEBwYXJhbSB7RXZlbnR9IGUgdGhlIGV2ZW50IG9iamVjdFxuICAgKlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBAYXV0b2JpbmRcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIF9vbkNsaWNrKGUpIHtcbiAgICBpZiAodGhpcy5fZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHRoaXMudG9nZ2xlKClcblxuICAgIGlmICh0aGlzLl9saXN0ZW5lcikge1xuICAgICAgdGhpcy5fbGlzdGVuZXIodGhpcylcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQga2V5IGxpc3RlbmVyIG9mIHRoZSBzd2l0Y2guIEl0IHdpbGwgdG9nZ2xlIHRoZSBzdGF0ZSB1c2luZyBrZXlib2FyZCBrZXlzIChsZWZ0ICwgcmlnaHQgLCBzcGFjZSlcbiAgICogYW5kIGZpcmUgYW55IHJlZ2lzdGVyZWQgbGlzdGVuZXJcbiAgICpcbiAgICogQHBhcmFtIHtFdmVudH0gZSAgdGhlIGV2ZW50IG9iamVjdFxuICAgKlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBAYXV0b2JpbmRcbiAgX29uS2V5ZG93bihlKSB7XG4gICAgaWYgKHRoaXMuX2Rpc2FibGVkKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBjb25zdCBrZXkgPSBlLndoaWNoIHx8IGUua2V5Q29kZVxuXG4gICAgLy8gc3BhY2VcbiAgICBpZiAoa2V5ID09IDMyKSB7XG4gICAgICB0aGlzLnRvZ2dsZSgpXG4gICAgICBpZiAodGhpcy5fbGlzdGVuZXIpIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuZXIodGhpcylcbiAgICAgIH1cbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gICAgLy8gcmlnaHRcbiAgICBlbHNlIGlmIChrZXkgPT0gMzkpIHtcbiAgICAgIHRoaXMuc2V0Q2hlY2tlZCh0cnVlKVxuICAgICAgaWYgKHRoaXMuX2xpc3RlbmVyKSB7XG4gICAgICAgIHRoaXMuX2xpc3RlbmVyKHRoaXMpXG4gICAgICB9XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICAgIC8vIGxlZnRcbiAgICBlbHNlIGlmIChrZXkgPT0gMzcpIHtcbiAgICAgIHRoaXMuc2V0Q2hlY2tlZChmYWxzZSlcbiAgICAgIGlmICh0aGlzLl9saXN0ZW5lcikge1xuICAgICAgICB0aGlzLl9saXN0ZW5lcih0aGlzKVxuICAgICAgfVxuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBCb29sZWFuU3dpdGNoXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvQm9vbGVhblN3aXRjaC9Cb29sZWFuU3dpdGNoLmpzIiwiaW1wb3J0IHsgZGVjb3JhdGUsIGNyZWF0ZURlZmF1bHRTZXR0ZXIgfSBmcm9tICcuL3ByaXZhdGUvdXRpbHMnO1xuY29uc3QgeyBkZWZpbmVQcm9wZXJ0eSB9ID0gT2JqZWN0O1xuXG5mdW5jdGlvbiBoYW5kbGVEZXNjcmlwdG9yKHRhcmdldCwga2V5LCBkZXNjcmlwdG9yKSB7XG4gIGNvbnN0IHsgY29uZmlndXJhYmxlLCBlbnVtZXJhYmxlLCBpbml0aWFsaXplciwgdmFsdWUgfSA9IGRlc2NyaXB0b3I7XG4gIHJldHVybiB7XG4gICAgY29uZmlndXJhYmxlLFxuICAgIGVudW1lcmFibGUsXG5cbiAgICBnZXQoKSB7XG4gICAgICAvLyBUaGlzIGhhcHBlbnMgaWYgc29tZW9uZSBhY2Nlc3NlcyB0aGVcbiAgICAgIC8vIHByb3BlcnR5IGRpcmVjdGx5IG9uIHRoZSBwcm90b3R5cGVcbiAgICAgIGlmICh0aGlzID09PSB0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXQgPSBpbml0aWFsaXplciA/IGluaXRpYWxpemVyLmNhbGwodGhpcykgOiB2YWx1ZTtcblxuICAgICAgZGVmaW5lUHJvcGVydHkodGhpcywga2V5LCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZSxcbiAgICAgICAgZW51bWVyYWJsZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIHZhbHVlOiByZXRcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0sXG5cbiAgICBzZXQ6IGNyZWF0ZURlZmF1bHRTZXR0ZXIoa2V5KVxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsYXp5SW5pdGlhbGl6ZSguLi5hcmdzKSB7XG4gIHJldHVybiBkZWNvcmF0ZShoYW5kbGVEZXNjcmlwdG9yLCBhcmdzKTtcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWRlY29yYXRvcnMvc3JjL2xhenktaW5pdGlhbGl6ZS5qcyIsIlxudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZS5zY3NzXCIpO1xuXG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcblxudmFyIHRyYW5zZm9ybTtcbnZhciBpbnNlcnRJbnRvO1xuXG5cblxudmFyIG9wdGlvbnMgPSB7XCJobXJcIjp0cnVlfVxuXG5vcHRpb25zLnRyYW5zZm9ybSA9IHRyYW5zZm9ybVxub3B0aW9ucy5pbnNlcnRJbnRvID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQuaGVhZFxuICAgICAgICAgICAgICB9O1xuXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXMuanNcIikoY29udGVudCwgb3B0aW9ucyk7XG5cbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuXG5pZihtb2R1bGUuaG90KSB7XG5cdG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZS5zY3NzXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3R5bGUuc2Nzc1wiKTtcblxuXHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXG5cdFx0dmFyIGxvY2FscyA9IChmdW5jdGlvbihhLCBiKSB7XG5cdFx0XHR2YXIga2V5LCBpZHggPSAwO1xuXG5cdFx0XHRmb3Ioa2V5IGluIGEpIHtcblx0XHRcdFx0aWYoIWIgfHwgYVtrZXldICE9PSBiW2tleV0pIHJldHVybiBmYWxzZTtcblx0XHRcdFx0aWR4Kys7XG5cdFx0XHR9XG5cblx0XHRcdGZvcihrZXkgaW4gYikgaWR4LS07XG5cblx0XHRcdHJldHVybiBpZHggPT09IDA7XG5cdFx0fShjb250ZW50LmxvY2FscywgbmV3Q29udGVudC5sb2NhbHMpKTtcblxuXHRcdGlmKCFsb2NhbHMpIHRocm93IG5ldyBFcnJvcignQWJvcnRpbmcgQ1NTIEhNUiBkdWUgdG8gY2hhbmdlZCBjc3MtbW9kdWxlcyBsb2NhbHMuJyk7XG5cblx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdH0pO1xuXG5cdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufVxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9Cb29sZWFuU3dpdGNoL3N0eWxlLnNjc3MiLCJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5hZy1jZWxsLWlubGluZS1lZGl0aW5nIC5ib29sU3dpdGNoX193cmFwcGVye21hcmdpbjphdXRvIDExcHh9LmJvb2xTd2l0Y2hfX3dyYXBwZXJ7ZGlzcGxheTpmbGV4O3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmV9LmJvb2xTd2l0Y2h7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6NTVweDstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lfS5ib29sU3dpdGNoX19jaGVja2JveHtkaXNwbGF5Om5vbmV9LmJvb2xTd2l0Y2hfX2xhYmVse2Rpc3BsYXk6YmxvY2s7b3ZlcmZsb3c6aGlkZGVuO2N1cnNvcjpwb2ludGVyO2JvcmRlcjoycHggc29saWQgIzk5OTk5OTtib3JkZXItcmFkaXVzOjIwcHh9LmJvb2xTd2l0Y2hfX2lubmVye2Rpc3BsYXk6YmxvY2s7d2lkdGg6MjAwJTttYXJnaW4tbGVmdDotMTAwJTt0cmFuc2l0aW9uOm1hcmdpbiAwLjNzIGVhc2UtaW4gMHN9LmJvb2xTd2l0Y2hfX2lubmVyOmJlZm9yZSwuYm9vbFN3aXRjaF9faW5uZXI6YWZ0ZXJ7ZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O3dpZHRoOjUwJTtoZWlnaHQ6MTVweDtwYWRkaW5nOjA7bGluZS1oZWlnaHQ6MTVweDtmb250LXNpemU6MTRweDtjb2xvcjp3aGl0ZTtmb250LWZhbWlseTonU2Vnb2UgVUkgU3ltYm9sJywgVHJlYnVjaGV0LCBBcmlhbCwgc2Fucy1zZXJpZjtmb250LXdlaWdodDpib2xkO2JveC1zaXppbmc6Ym9yZGVyLWJveH0uYm9vbFN3aXRjaF9faW5uZXI6YmVmb3Jle2NvbnRlbnQ6J1xcXFwyNzE0JztwYWRkaW5nLWxlZnQ6MTBweDtiYWNrZ3JvdW5kLWNvbG9yOiMzNGE3YzE7Y29sb3I6I2ZmZmZmZn0uYm9vbFN3aXRjaF9faW5uZXI6YWZ0ZXJ7Y29udGVudDonXFxcXDI3MTgnO3BhZGRpbmctcmlnaHQ6MTBweDtiYWNrZ3JvdW5kLWNvbG9yOiNlZWVlZWU7Y29sb3I6Izk5OTk5OTt0ZXh0LWFsaWduOnJpZ2h0fS5ib29sU3dpdGNoX19zd2l0Y2h7ZGlzcGxheTpibG9jazt3aWR0aDoxOHB4O21hcmdpbjoxcHg7YmFja2dyb3VuZDojZmZmZmZmO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO3JpZ2h0OjM1cHg7Ym9yZGVyOjJweCBzb2xpZCAjOTk5OTk5O2JvcmRlci1yYWRpdXM6MjBweDt0cmFuc2l0aW9uOmFsbCAwLjNzIGVhc2UtaW4gMHN9LmJvb2xTd2l0Y2hfX2NoZWNrYm94OmNoZWNrZWQrLmJvb2xTd2l0Y2hfX2xhYmVsIC5ib29sU3dpdGNoX19pbm5lcnttYXJnaW4tbGVmdDowfS5ib29sU3dpdGNoX19jaGVja2JveDpjaGVja2VkKy5ib29sU3dpdGNoX19sYWJlbCAuYm9vbFN3aXRjaF9fc3dpdGNoe3JpZ2h0OjBweH0uYWctdGhlbWUtYmFsaGFtIC5ib29sU3dpdGNoX19sYWJlbHtib3JkZXItY29sb3I6I0JEQzNDN30uYWctdGhlbWUtYmFsaGFtIC5ib29sU3dpdGNoX19pbm5lcjpiZWZvcmUsLmFnLXRoZW1lLWJhbGhhbSAuYm9vbFN3aXRjaF9faW5uZXI6YWZ0ZXJ7Y29sb3I6I2ZmZn0uYWctdGhlbWUtYmFsaGFtIC5ib29sU3dpdGNoX19pbm5lcjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjojMDA5MUVBO2NvbG9yOiNmZmZ9LmFnLXRoZW1lLWJhbGhhbSAuYm9vbFN3aXRjaF9faW5uZXI6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjJmMmYyO2NvbG9yOiNCREMzQzd9LmFnLXRoZW1lLWJhbGhhbSAuYm9vbFN3aXRjaF9fc3dpdGNoe2JhY2tncm91bmQ6I2ZmZjtib3JkZXItY29sb3I6I0JEQzNDN30uYWctdGhlbWUtYmFsaGFtLWRhcmsgLmJvb2xTd2l0Y2hfX2xhYmVse2JvcmRlci1jb2xvcjojNDI0MjQyfS5hZy10aGVtZS1iYWxoYW0tZGFyayAuYm9vbFN3aXRjaF9faW5uZXI6YmVmb3JlLC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYm9vbFN3aXRjaF9faW5uZXI6YWZ0ZXJ7Y29sb3I6IzJkMzQzNn0uYWctdGhlbWUtYmFsaGFtLWRhcmsgLmJvb2xTd2l0Y2hfX2lubmVyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiMwMEIwRkY7Y29sb3I6I2NmZDlkYn0uYWctdGhlbWUtYmFsaGFtLWRhcmsgLmJvb2xTd2l0Y2hfX2lubmVyOmFmdGVye2JhY2tncm91bmQtY29sb3I6IzIxMjcyODtjb2xvcjojNDI0MjQyfS5hZy10aGVtZS1iYWxoYW0tZGFyayAuYm9vbFN3aXRjaF9fc3dpdGNoe2JhY2tncm91bmQ6IzJkMzQzNjtib3JkZXItY29sb3I6IzQyNDI0Mn0uYWctdGhlbWUtbWF0ZXJpYWwgLmJvb2xTd2l0Y2hfX2xhYmVse2JvcmRlci1jb2xvcjojZTJlMmUyfS5hZy10aGVtZS1tYXRlcmlhbCAuYm9vbFN3aXRjaF9faW5uZXI6YmVmb3JlLC5hZy10aGVtZS1tYXRlcmlhbCAuYm9vbFN3aXRjaF9faW5uZXI6YWZ0ZXJ7Y29sb3I6I2ZmZn0uYWctdGhlbWUtbWF0ZXJpYWwgLmJvb2xTd2l0Y2hfX2lubmVyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjQwODE7Y29sb3I6I2ZmZn0uYWctdGhlbWUtbWF0ZXJpYWwgLmJvb2xTd2l0Y2hfX2lubmVyOmFmdGVye2JhY2tncm91bmQtY29sb3I6I2YyZjJmMjtjb2xvcjojZDVkNWQ1fS5hZy10aGVtZS1tYXRlcmlhbCAuYm9vbFN3aXRjaF9fc3dpdGNoe2JhY2tncm91bmQ6I2ZmZjtib3JkZXItY29sb3I6I2UyZTJlMn1cXG5cIiwgXCJcIl0pO1xuXG4vLyBleHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyIS4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL0Jvb2xlYW5Td2l0Y2gvc3R5bGUuc2Nzc1xuLy8gbW9kdWxlIGlkID0gNDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIiwiXG4vKipcbiAqIFdoZW4gc291cmNlIG1hcHMgYXJlIGVuYWJsZWQsIGBzdHlsZS1sb2FkZXJgIHVzZXMgYSBsaW5rIGVsZW1lbnQgd2l0aCBhIGRhdGEtdXJpIHRvXG4gKiBlbWJlZCB0aGUgY3NzIG9uIHRoZSBwYWdlLiBUaGlzIGJyZWFrcyBhbGwgcmVsYXRpdmUgdXJscyBiZWNhdXNlIG5vdyB0aGV5IGFyZSByZWxhdGl2ZSB0byBhXG4gKiBidW5kbGUgaW5zdGVhZCBvZiB0aGUgY3VycmVudCBwYWdlLlxuICpcbiAqIE9uZSBzb2x1dGlvbiBpcyB0byBvbmx5IHVzZSBmdWxsIHVybHMsIGJ1dCB0aGF0IG1heSBiZSBpbXBvc3NpYmxlLlxuICpcbiAqIEluc3RlYWQsIHRoaXMgZnVuY3Rpb24gXCJmaXhlc1wiIHRoZSByZWxhdGl2ZSB1cmxzIHRvIGJlIGFic29sdXRlIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBwYWdlIGxvY2F0aW9uLlxuICpcbiAqIEEgcnVkaW1lbnRhcnkgdGVzdCBzdWl0ZSBpcyBsb2NhdGVkIGF0IGB0ZXN0L2ZpeFVybHMuanNgIGFuZCBjYW4gYmUgcnVuIHZpYSB0aGUgYG5wbSB0ZXN0YCBjb21tYW5kLlxuICpcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjc3MpIHtcbiAgLy8gZ2V0IGN1cnJlbnQgbG9jYXRpb25cbiAgdmFyIGxvY2F0aW9uID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB3aW5kb3cubG9jYXRpb247XG5cbiAgaWYgKCFsb2NhdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihcImZpeFVybHMgcmVxdWlyZXMgd2luZG93LmxvY2F0aW9uXCIpO1xuICB9XG5cblx0Ly8gYmxhbmsgb3IgbnVsbD9cblx0aWYgKCFjc3MgfHwgdHlwZW9mIGNzcyAhPT0gXCJzdHJpbmdcIikge1xuXHQgIHJldHVybiBjc3M7XG4gIH1cblxuICB2YXIgYmFzZVVybCA9IGxvY2F0aW9uLnByb3RvY29sICsgXCIvL1wiICsgbG9jYXRpb24uaG9zdDtcbiAgdmFyIGN1cnJlbnREaXIgPSBiYXNlVXJsICsgbG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvXFwvW15cXC9dKiQvLCBcIi9cIik7XG5cblx0Ly8gY29udmVydCBlYWNoIHVybCguLi4pXG5cdC8qXG5cdFRoaXMgcmVndWxhciBleHByZXNzaW9uIGlzIGp1c3QgYSB3YXkgdG8gcmVjdXJzaXZlbHkgbWF0Y2ggYnJhY2tldHMgd2l0aGluXG5cdGEgc3RyaW5nLlxuXG5cdCAvdXJsXFxzKlxcKCAgPSBNYXRjaCBvbiB0aGUgd29yZCBcInVybFwiIHdpdGggYW55IHdoaXRlc3BhY2UgYWZ0ZXIgaXQgYW5kIHRoZW4gYSBwYXJlbnNcblx0ICAgKCAgPSBTdGFydCBhIGNhcHR1cmluZyBncm91cFxuXHQgICAgICg/OiAgPSBTdGFydCBhIG5vbi1jYXB0dXJpbmcgZ3JvdXBcblx0ICAgICAgICAgW14pKF0gID0gTWF0Y2ggYW55dGhpbmcgdGhhdCBpc24ndCBhIHBhcmVudGhlc2VzXG5cdCAgICAgICAgIHwgID0gT1Jcblx0ICAgICAgICAgXFwoICA9IE1hdGNoIGEgc3RhcnQgcGFyZW50aGVzZXNcblx0ICAgICAgICAgICAgICg/OiAgPSBTdGFydCBhbm90aGVyIG5vbi1jYXB0dXJpbmcgZ3JvdXBzXG5cdCAgICAgICAgICAgICAgICAgW14pKF0rICA9IE1hdGNoIGFueXRoaW5nIHRoYXQgaXNuJ3QgYSBwYXJlbnRoZXNlc1xuXHQgICAgICAgICAgICAgICAgIHwgID0gT1Jcblx0ICAgICAgICAgICAgICAgICBcXCggID0gTWF0Y2ggYSBzdGFydCBwYXJlbnRoZXNlc1xuXHQgICAgICAgICAgICAgICAgICAgICBbXikoXSogID0gTWF0Y2ggYW55dGhpbmcgdGhhdCBpc24ndCBhIHBhcmVudGhlc2VzXG5cdCAgICAgICAgICAgICAgICAgXFwpICA9IE1hdGNoIGEgZW5kIHBhcmVudGhlc2VzXG5cdCAgICAgICAgICAgICApICA9IEVuZCBHcm91cFxuICAgICAgICAgICAgICAqXFwpID0gTWF0Y2ggYW55dGhpbmcgYW5kIHRoZW4gYSBjbG9zZSBwYXJlbnNcbiAgICAgICAgICApICA9IENsb3NlIG5vbi1jYXB0dXJpbmcgZ3JvdXBcbiAgICAgICAgICAqICA9IE1hdGNoIGFueXRoaW5nXG4gICAgICAgKSAgPSBDbG9zZSBjYXB0dXJpbmcgZ3JvdXBcblx0IFxcKSAgPSBNYXRjaCBhIGNsb3NlIHBhcmVuc1xuXG5cdCAvZ2kgID0gR2V0IGFsbCBtYXRjaGVzLCBub3QgdGhlIGZpcnN0LiAgQmUgY2FzZSBpbnNlbnNpdGl2ZS5cblx0ICovXG5cdHZhciBmaXhlZENzcyA9IGNzcy5yZXBsYWNlKC91cmxcXHMqXFwoKCg/OlteKShdfFxcKCg/OlteKShdK3xcXChbXikoXSpcXCkpKlxcKSkqKVxcKS9naSwgZnVuY3Rpb24oZnVsbE1hdGNoLCBvcmlnVXJsKSB7XG5cdFx0Ly8gc3RyaXAgcXVvdGVzIChpZiB0aGV5IGV4aXN0KVxuXHRcdHZhciB1bnF1b3RlZE9yaWdVcmwgPSBvcmlnVXJsXG5cdFx0XHQudHJpbSgpXG5cdFx0XHQucmVwbGFjZSgvXlwiKC4qKVwiJC8sIGZ1bmN0aW9uKG8sICQxKXsgcmV0dXJuICQxOyB9KVxuXHRcdFx0LnJlcGxhY2UoL14nKC4qKSckLywgZnVuY3Rpb24obywgJDEpeyByZXR1cm4gJDE7IH0pO1xuXG5cdFx0Ly8gYWxyZWFkeSBhIGZ1bGwgdXJsPyBubyBjaGFuZ2Vcblx0XHRpZiAoL14oI3xkYXRhOnxodHRwOlxcL1xcL3xodHRwczpcXC9cXC98ZmlsZTpcXC9cXC9cXC98XFxzKiQpL2kudGVzdCh1bnF1b3RlZE9yaWdVcmwpKSB7XG5cdFx0ICByZXR1cm4gZnVsbE1hdGNoO1xuXHRcdH1cblxuXHRcdC8vIGNvbnZlcnQgdGhlIHVybCB0byBhIGZ1bGwgdXJsXG5cdFx0dmFyIG5ld1VybDtcblxuXHRcdGlmICh1bnF1b3RlZE9yaWdVcmwuaW5kZXhPZihcIi8vXCIpID09PSAwKSB7XG5cdFx0ICBcdC8vVE9ETzogc2hvdWxkIHdlIGFkZCBwcm90b2NvbD9cblx0XHRcdG5ld1VybCA9IHVucXVvdGVkT3JpZ1VybDtcblx0XHR9IGVsc2UgaWYgKHVucXVvdGVkT3JpZ1VybC5pbmRleE9mKFwiL1wiKSA9PT0gMCkge1xuXHRcdFx0Ly8gcGF0aCBzaG91bGQgYmUgcmVsYXRpdmUgdG8gdGhlIGJhc2UgdXJsXG5cdFx0XHRuZXdVcmwgPSBiYXNlVXJsICsgdW5xdW90ZWRPcmlnVXJsOyAvLyBhbHJlYWR5IHN0YXJ0cyB3aXRoICcvJ1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZSB0byBjdXJyZW50IGRpcmVjdG9yeVxuXHRcdFx0bmV3VXJsID0gY3VycmVudERpciArIHVucXVvdGVkT3JpZ1VybC5yZXBsYWNlKC9eXFwuXFwvLywgXCJcIik7IC8vIFN0cmlwIGxlYWRpbmcgJy4vJ1xuXHRcdH1cblxuXHRcdC8vIHNlbmQgYmFjayB0aGUgZml4ZWQgdXJsKC4uLilcblx0XHRyZXR1cm4gXCJ1cmwoXCIgKyBKU09OLnN0cmluZ2lmeShuZXdVcmwpICsgXCIpXCI7XG5cdH0pO1xuXG5cdC8vIHNlbmQgYmFjayB0aGUgZml4ZWQgY3NzXG5cdHJldHVybiBmaXhlZENzcztcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2xpYi91cmxzLmpzIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWFnZ3JpZC1jb21wb25lbnRzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IEJvb2xlYW5SZW5kZXJlciBmcm9tICcuL0Jvb2xlYW5SZW5kZXJlcidcblxuZXhwb3J0IGRlZmF1bHQgQm9vbGVhblJlbmRlcmVyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvQm9vbGVhblJlbmRlcmVyL2luZGV4LmpzIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWFnZ3JpZC1jb21wb25lbnRzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IENvbXBvbmVudCBmcm9tICcuLi9Db21wb25lbnQnXG5pbXBvcnQgQm9vbGVhblN3aXRjaCBmcm9tICcuLi9Cb29sZWFuU3dpdGNoJ1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgKi9cblxuLyoqXG4gKiBCb29sZWFucyBSZW5kZXJlclxuICpcbiAqIEhhbmRsZSBib29sZWFuIHZhbHVlcyBSZW5kZXJpbmdcbiAqXG4gKiAjIyBPcHRpb25zXG4gKlxuICogfCBOYW1lICAgICAgICAgICAgICAgICAgXHR8IERlZmF1bHQgICAgIFx0fCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHR8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVx0fDotLS0tLS0tLS0tLS0tOnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgKipib29sZWFuVHJ1ZVJlbmRlclZhbHVlKiogIFx0fCBzd2l0Y2ggICAgICBcdHwgVGhlIG9wdGlvbiBjb250cm9scyBob3cgdG8gcmVuZGVyIGB0cnVlYCB2YWx1ZXMuIDxicj4gKipzd2l0Y2gqKiBpcyBhIHNwZWNpYWwgdmFsdWUgdXNlZCB0byByZW5kZXIgdHJ1ZSB2YWx1ZXMgYXMgYSBzd2l0Y2ggY29tcG9uZW50ICBcdHxcbiAqIHwgKipib29sZWFuRmFsc2VSZW5kZXJWYWx1ZSoqIFx0fCBzd2l0Y2ggICAgICBcdHwgVGhlIG9wdGlvbiBjb250cm9scyBob3cgdG8gcmVuZGVyIGBmYWxzZWAgdmFsdWVzLiA8YnI+ICoqc3dpdGNoKiogaXMgYSBzcGVjaWFsIHZhbHVlIHVzZWQgdG8gcmVuZGVyIHRydWUgdmFsdWVzIGFzIGEgc3dpdGNoIGNvbXBvbmVudCBcdHxcbiAqIHwgKipib29sZWFuVHJ1ZVZhbHVlW10qKiAgICAgICB8IHRydWUoYm9vbCkgIFx0fCBUaGUgb3B0aW9ucyBkZXNjcmliZXMgd2hhdCBpcyBjb25zaWRlcmVkIGB0cnVlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHR8XG4gKiB8ICoqYm9vbGVhbkZhbHNlVmFsdWVbXSoqICAgICAgfCBmYWxzZShib29sKSBcdHwgVGhlIG9wdGlvbnMgZGVzY3JpYmVzIHdoYXQgaXMgY29uc2lkZXJlZCBgZmFsc2VgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx0fFxuICpcbiAqIEBhdXRob3IgSHl5YW4gQWJvIEZha2hlciA8aGFib2Zha2hlckBiYXNpcy5jb20+XG4gKi9cbmNsYXNzIEJvb2xlYW5SZW5kZXJlciBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3QgbmV3IEJvb2xlYW5SZW5kZXJlclxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKVxuXG4gICAgLy8gd2lsbCB0aGlzIGFmZmVjdCBCQmogYnVpID9cbiAgICB0aGlzLl9ndWkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJylcbiAgICB0aGlzLl9ndWkuY2xhc3NOYW1lID0gJ2Jvb2xSZW5kZXJlcidcbiAgICB0aGlzLl9ndWkuc3R5bGUuZm9udEZhbWlseSA9XG4gICAgICAnXCJTZWdvZSBVSSBTeW1ib2xcIixUcmVidWNoZXQsIEFyaWFsLCBzYW5zLXNlcmlmJ1xuICB9XG5cbiAgLyoqXG4gICAqICBAaW5oZXJpdERvY1xuICAgKi9cbiAgaW5pdChwYXJhbXMpIHtcbiAgICB0aGlzLnJlZnJlc2gocGFyYW1zLCB0cnVlKVxuICB9XG5cbiAgLyoqXG4gICAqICBAaW5oZXJpdERvY1xuICAgKi9cbiAgZ2V0R3VpKCkge1xuICAgIHJldHVybiB0aGlzLl9ndWlcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGluaGVyaXREb2NcbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuX3N3aXRjaGVyKSB7XG4gICAgICB0aGlzLl9zd2l0Y2hlci5kZXN0cm95KClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVmcmVzaCB0aGUgY2VsbFxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zIGNlbGwgcmVuZGVyZXIgcGFyYW1zXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gaXNJbml0IHRydWUgd2hlbiB0aGlzIG1ldGhvZCBpcyBiZWluZyBjYWxsZWQgaW4gYGluaXRgIHBoYXNlICwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqXG4gICAqIEByZXR1cm4ge0Jvb2xlYW59IHRydWUgaWYgdGhlIHJlZnJlc2ggc3VjY2VlZGVkLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIHJlZnJlc2gocGFyYW1zLCBpc0luaXQpIHtcbiAgICBsZXQgdmFsdWUgPSBwYXJhbXMudmFsdWVGb3JtYXR0ZWQgPyBwYXJhbXMudmFsdWVGb3JtYXR0ZWQgOiBwYXJhbXMudmFsdWVcblxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aGlzLl9ndWkuaW5uZXJIVE1MID0gJydcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBTdHJpbmcodmFsdWUpXG4gICAgICBjb25zdCBib29sZWFuVHJ1ZVJlbmRlclZhbHVlID0gU3RyaW5nKFxuICAgICAgICB0aGlzLmdldE9wdGlvbignYm9vbGVhblRydWVSZW5kZXJWYWx1ZScsIHBhcmFtcywgJ3N3aXRjaCcpXG4gICAgICApXG4gICAgICBjb25zdCBib29sZWFuRmFsc2VSZW5kZXJWYWx1ZSA9IFN0cmluZyhcbiAgICAgICAgdGhpcy5nZXRPcHRpb24oJ2Jvb2xlYW5GYWxzZVJlbmRlclZhbHVlJywgcGFyYW1zLCAnc3dpdGNoJylcbiAgICAgIClcbiAgICAgIGNvbnN0IGJvb2xlYW5UcnVlVmFsdWUgPSBbXVxuICAgICAgICAuY29uY2F0KHRoaXMuZ2V0T3B0aW9uKCdib29sZWFuVHJ1ZVZhbHVlJywgcGFyYW1zLCBbdHJ1ZV0pKVxuICAgICAgICAubWFwKHggPT4gU3RyaW5nKHgpKVxuICAgICAgY29uc3QgYm9vbGVhbkZhbHNlVmFsdWUgPSBbXVxuICAgICAgICAuY29uY2F0KHRoaXMuZ2V0T3B0aW9uKCdib29sZWFuRmFsc2VWYWx1ZScsIHBhcmFtcywgW2ZhbHNlXSkpXG4gICAgICAgIC5tYXAoeCA9PiBTdHJpbmcoeCkpXG5cbiAgICAgIC8vIGhhbmRsZSB0cnVlIHZhbHVlc1xuICAgICAgaWYgKGJvb2xlYW5UcnVlVmFsdWUuaW5kZXhPZih2YWx1ZSkgPiAtMSkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIWJvb2xlYW5UcnVlUmVuZGVyVmFsdWUubGVuZ3RoIHx8XG4gICAgICAgICAgYm9vbGVhblRydWVSZW5kZXJWYWx1ZSA9PT0gJ3N3aXRjaCdcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3Qgc3dpdGNoZXIgPSB0aGlzLl9nZXRTd2l0Y2hlcihwYXJhbXMpXG4gICAgICAgICAgc3dpdGNoZXIuc2V0Q2hlY2tlZCh0cnVlKVxuICAgICAgICAgIHRoaXMuX2d1aS5pbm5lckhUTUwgPSAnJ1xuICAgICAgICAgIHRoaXMuX2d1aS5hcHBlbmRDaGlsZChzd2l0Y2hlci5nZXRHdWkoKSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9ndWkuaW5uZXJIVE1MID0gYm9vbGVhblRydWVSZW5kZXJWYWx1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBoYW5kbGUgZmFsc2UgdmFsdWVzXG4gICAgICBlbHNlIGlmIChib29sZWFuRmFsc2VWYWx1ZS5pbmRleE9mKHZhbHVlKSA+IC0xKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhYm9vbGVhbkZhbHNlUmVuZGVyVmFsdWUubGVuZ3RoIHx8XG4gICAgICAgICAgYm9vbGVhbkZhbHNlUmVuZGVyVmFsdWUgPT09ICdzd2l0Y2gnXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IHN3aXRjaGVyID0gdGhpcy5fZ2V0U3dpdGNoZXIocGFyYW1zKVxuICAgICAgICAgIHN3aXRjaGVyLnNldENoZWNrZWQoZmFsc2UpXG4gICAgICAgICAgdGhpcy5fZ3VpLmlubmVySFRNTCA9ICcnXG4gICAgICAgICAgdGhpcy5fZ3VpLmFwcGVuZENoaWxkKHN3aXRjaGVyLmdldEd1aSgpKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX2d1aS5pbm5lckhUTUwgPSBib29sZWFuRmFsc2VSZW5kZXJWYWx1ZVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9ndWkuaW5uZXJIVE1MID0gdmFsdWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBzd2l0Y2ggaW5zdGFuY2UgaWYgYXZhaWxhYmxlICwgb3IgY3JlYXRlIGl0IG90aGVyd2lzZVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zXG4gICAqXG4gICAqIEByZXR1cm4ge0Jvb2xlYW5Td2l0Y2h9IHN3aXRjaCBpbnN0YW5jZVxuICAgKi9cbiAgX2dldFN3aXRjaGVyKHBhcmFtcykge1xuICAgIGlmICghdGhpcy5fc3dpdGNoZXIpIHtcbiAgICAgIHRoaXMuX3N3aXRjaGVyID0gbmV3IEJvb2xlYW5Td2l0Y2goKVxuICAgICAgdGhpcy5fc3dpdGNoZXIuc2V0RGlzYWJsZWQodHJ1ZSlcbiAgICAgIHRoaXMuX3N3aXRjaGVyLmluaXQocGFyYW1zKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zd2l0Y2hlclxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJvb2xlYW5SZW5kZXJlclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL0Jvb2xlYW5SZW5kZXJlci9Cb29sZWFuUmVuZGVyZXIuanMiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmFzaXMtYWdncmlkLWNvbXBvbmVudHMgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgQm9vbGVhbkZpbHRlciBmcm9tICcuL0Jvb2xlYW5GaWx0ZXInXG5cbmV4cG9ydCBkZWZhdWx0IEJvb2xlYW5GaWx0ZXJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9Cb29sZWFuRmlsdGVyL2luZGV4LmpzIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWFnZ3JpZC1jb21wb25lbnRzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IHsgYXV0b2JpbmQsIG92ZXJyaWRlIH0gZnJvbSAnY29yZS1kZWNvcmF0b3JzJ1xuaW1wb3J0IENvbXBvbmVudCBmcm9tICcuLi9Db21wb25lbnQnXG5pbXBvcnQgJy4vc3R5bGUuc2NzcydcblxuY29uc3QgdG9UaXRsZUNhc2UgPSBwaHJhc2UgPT4ge1xuICByZXR1cm4gcGhyYXNlXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAuc3BsaXQoJyAnKVxuICAgIC5tYXAod29yZCA9PiB3b3JkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAuam9pbignICcpXG59XG5cbmNvbnN0IHN0cmlwSFRNTCA9IGh0bWwgPT4ge1xuICBjb25zdCB0bXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKVxuICB0bXAuaW5uZXJIVE1MID0gaHRtbFxuICByZXR1cm4gdG1wLnRleHRDb250ZW50IHx8IHRtcC5pbm5lclRleHQgfHwgJydcbn1cblxuLyoqXG4gKiBCb29sZWFucyBGaWx0ZXJcbiAqXG4gKiBIYW5kbGUgYm9vbGVhbiB2YWx1ZXMgRmlsdGVyaW5nXG4gKlxuICogIyMgT3B0aW9uc1xuICpcbiAqIHwgTmFtZSAgICAgICAgICAgICAgICAgIFx0fCBEZWZhdWx0ICAgICBcdHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx0fFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cdHw6LS0tLS0tLS0tLS0tLTp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8ICoqYm9vbGVhblVzZWRUcnVlVmFsdWUqKiAgIHwgdW5kZWZpbmVkICAgIHwgdGhlIHZhbHVlIHRvIHVzZSB3aGVuIHRoZSBmaWx0ZXIgZGlzcGxheXMgdGhlIHRydWUgc3RhdGUgLiBpbiBjYXNlIGl0IGlzIHVuZGVmaW5lZCB0aGVuIHdlIHVzZSB0aGUgZmlyc3QgaXRlbSBpbiAqKmJvb2xlYW5UcnVlVmFsdWVbXSoqXG4gKiB8ICoqYm9vbGVhblVzZWRGYWxzZVZhbHVlKiogICB8IHVuZGVmaW5lZCAgICB8IHRoZSB2YWx1ZSB0byB1c2Ugd2hlbiB0aGUgZmlsdGVyIGRpc3BsYXlzIHRoZSBmYWxzZSBzdGF0ZS4gaW4gY2FzZSBpdCBpcyB1bmRlZmluZWQgdGhlbiB3ZSB1c2UgdGhlIGZpcnN0IGl0ZW0gaW4gKipib29sZWFuRmFsc2VWYWx1ZVtdKipcbiAqIHwgKipib29sZWFuVHJ1ZVZhbHVlW10qKiAgICAgICB8IHRydWUoYm9vbCkgIFx0fCBUaGUgb3B0aW9ucyBkZXNjcmliZXMgd2hhdCBpcyBjb25zaWRlcmVkIGB0cnVlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHR8XG4gKiB8ICoqYm9vbGVhbkZhbHNlVmFsdWVbXSoqICAgICAgfCBmYWxzZShib29sKSBcdHwgVGhlIG9wdGlvbnMgZGVzY3JpYmVzIHdoYXQgaXMgY29uc2lkZXJlZCBgZmFsc2VgXG4gKiB8ICoqY2xlYXJCdXR0b24qKiAgIHwgZmFsc2UgICAgfCAgU2V0IHRvIHRydWUgdG8gaGF2ZSB0aGUgZmlsdGVyIHVzZSBhIENsZWFyIGJ1dHRvbi4gVGhlIENsZWFyIGJ1dHRvbiB3aWxsIGNsZWFyIHRoZSAoZm9ybSkgZGV0YWlscyBvZiB0aGUgZmlsdGVyIHdpdGhvdXQgcmVtb3ZpbmcgYW55IGFjdGl2ZSBmaWx0ZXJzIG9uIHRoZSBjb2x1bW4uXG4gKiB8ICoqYXBwbHlCdXR0b24qKiAgIHwgZmFsc2UgICAgfCAgU2V0IHRvIHRydWUgdG8gaGF2ZSB0aGUgZmlsdGVyIHVzZSBhbiBBcHBseSBidXR0b24uIElmIHRoZSBBcHBseSBidXR0b24gaXMgcHJlc2VudCwgdGhlbiB0aGUgZmlsdGVyIGlzIG9ubHkgYXBwbGllZCBhZnRlciB0aGUgdXNlciBoaXRzIHRoZSBBcHBseSBidXR0b24uXG4gKiB8ICoqcmVzZXRCdXR0b24qKiAgIHwgZmFsc2UgICAgfCAgU2V0IHRvIHRydWUgdG8gaGF2ZSB0aGUgZmlsdGVyIHVzZSBhIFJlc2V0IGJ1dHRvbi4gVGhlIFJlc2V0IGJ1dHRvbiB3aWxsIGNsZWFyIHRoZSBkZXRhaWxzIG9mIHRoZSBmaWx0ZXIgYW5kIGFueSBhY3RpdmUgZmlsdGVycyBvbiB0aGF0IGNvbHVtbi5cbiAqXG4gKiBAYXV0aG9yIEh5eWFuIEFibyBGYWtoZXIgPGhhYm9mYWtoZXJAYmFzaXMuY29tPlxuICovXG5jbGFzcyBCb29sZWFuRmlsdGVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRydWUgLCBmYWxzZSB0cmFuc2xhdGlvblxuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgX2Jvb2xlYW5GaWx0ZXJUcmFuc2xhdGlvbiA9IHt9XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3QgbmV3IEJvb2xlYW5GaWx0ZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKClcblxuICAgIHRoaXMuX2d1aSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgdGhpcy5fZ3VpLmNsYXNzTmFtZSA9ICdib29sZWFuRmlsdGVyIGFnLWZpbHRlci1ib2R5LXdyYXBwZXInXG4gICAgdGhpcy5fZ3VpLnRhYkluZGV4ID0gJzAnXG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIEBvdmVycmlkZVxuICBpbml0KHBhcmFtcykge1xuICAgIGNvbnN0IHRyYW5zbGF0ZSA9IHBhcmFtcy5hcGkuZ3JpZE9wdGlvbnNXcmFwcGVyLmdldExvY2FsZVRleHRGdW5jKClcbiAgICBjb25zdCBpc0NsZWFyRmlsdGVyID0gdGhpcy5nZXRPcHRpb24oJ2NsZWFyQnV0dG9uJywgcGFyYW1zLCBmYWxzZSlcbiAgICBjb25zdCBpc1Jlc2V0QnV0dG9uID0gdGhpcy5nZXRPcHRpb24oJ3Jlc2V0QnV0dG9uJywgcGFyYW1zLCBmYWxzZSlcbiAgICBjb25zdCBpc0FwcGx5QnV0dG9uID0gdGhpcy5nZXRPcHRpb24oJ2FwcGx5QnV0dG9uJywgcGFyYW1zLCBmYWxzZSlcblxuICAgIHRoaXMuX3RydWVWYWx1ZSA9IFtdXG4gICAgICAuY29uY2F0KHRoaXMuZ2V0T3B0aW9uKCdib29sZWFuVHJ1ZVZhbHVlJywgcGFyYW1zLCBbdHJ1ZV0pKVxuICAgICAgLm1hcCh4ID0+IFN0cmluZyh4KSlcblxuICAgIHRoaXMuX2ZhbHNlVmFsdWUgPSBbXVxuICAgICAgLmNvbmNhdCh0aGlzLmdldE9wdGlvbignYm9vbGVhbkZhbHNlVmFsdWUnLCBwYXJhbXMsIFtmYWxzZV0pKVxuICAgICAgLm1hcCh4ID0+IFN0cmluZyh4KSlcblxuICAgIHRoaXMuX3VzZWRUcnVlVmFsdWUgPSBTdHJpbmcoXG4gICAgICB0aGlzLmdldE9wdGlvbignYm9vbGVhblVzZWRUcnVlVmFsdWUnLCBwYXJhbXMsIHRoaXMuX3RydWVWYWx1ZVswXSlcbiAgICApXG5cbiAgICB0aGlzLl91c2VkRmFsc2VWYWx1ZSA9IFN0cmluZyhcbiAgICAgIHRoaXMuZ2V0T3B0aW9uKCdib29sZWFuVXNlZEZhbHNlVmFsdWUnLCBwYXJhbXMsIHRoaXMuX2ZhbHNlVmFsdWVbMF0pXG4gICAgKVxuXG4gICAgdGhpcy5fYm9vbGVhbkZpbHRlclRyYW5zbGF0aW9uID0gdGhpcy5nZXRPcHRpb24oXG4gICAgICAnYm9vbGVhbkZpbHRlclRyYW5zbGF0aW9uJyxcbiAgICAgIHBhcmFtcyxcbiAgICAgIHtcbiAgICAgICAgdHJ1ZTogdHJhbnNsYXRlKFxuICAgICAgICAgICdib29sZWFuVHJ1ZScsXG4gICAgICAgICAgdG9UaXRsZUNhc2UoU3RyaW5nKHRoaXMuX3VzZWRUcnVlVmFsdWUpKVxuICAgICAgICApLFxuICAgICAgICBmYWxzZTogdHJhbnNsYXRlKFxuICAgICAgICAgICdib29sZWFuRmFsc2UnLFxuICAgICAgICAgIHRvVGl0bGVDYXNlKFN0cmluZyh0aGlzLl91c2VkRmFsc2VWYWx1ZSkpXG4gICAgICAgICksXG4gICAgICAgIHJlc2V0OiB0cmFuc2xhdGUoXG4gICAgICAgICAgJ2Jvb2xlYW5SZXNldCcsXG4gICAgICAgICAgdHJhbnNsYXRlKCdyZXNldEZpbHRlcicsICdSZXNldCBGaWx0ZXInKVxuICAgICAgICApLFxuICAgICAgfVxuICAgIClcblxuICAgIHRoaXMuX3BhcmFtcyA9IHBhcmFtc1xuICAgIHRoaXMuX2ZpbHRlclRleHQgPSBudWxsXG5cbiAgICB0aGlzLl9vblJhZGlvQ2hhbmdlID0gdGhpcy5fb25SYWRpb0NoYW5nZS5iaW5kKHRoaXMsIGlzQXBwbHlCdXR0b24pXG5cbiAgICAvLyBjcmVhdGUgYm9keVxuICAgIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAgIGJvZHkuY2xhc3NOYW1lID0gJ2Jvb2xlYW5GaWx0ZXJfX2JvZHkgYWctZmlsdGVyLWJvZHknXG4gICAgYm9keS5zdHlsZS5wYWRkaW5nID0gJzVweCAxNXB4J1xuICAgIGJvZHkuaW5uZXJIVE1MID0gLyogaHRtbCAqLyBgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib29sZWFuRmlsdGVyX19ib2R5X19sYWJlbHNcIj5cbiAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInJhZGlvXCIgbmFtZT1cImJvb2xlYW5cIiB2YWx1ZT1cInRydWVcIj5cbiAgICAgICAgICAgICR7dGhpcy5fYm9vbGVhbkZpbHRlclRyYW5zbGF0aW9uLnRydWV9XG4gICAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBuYW1lPVwiYm9vbGVhblwiIHZhbHVlPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICR7dGhpcy5fYm9vbGVhbkZpbHRlclRyYW5zbGF0aW9uLmZhbHNlfVxuICAgICAgICAgIDwvbGFiZWw+ICAgICBcbiAgICAgICAgICBcbiAgICAgICAgICAke1xuICAgICAgICAgICAgIWlzUmVzZXRCdXR0b25cbiAgICAgICAgICAgICAgPyAvKiBodG1sICovIGBcbiAgICAgICAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInJhZGlvXCIgbmFtZT1cImJvb2xlYW5cIiB2YWx1ZT1cIlwiIGNoZWNrZWQ+XG4gICAgICAgICAgICAgICAgICAke3RoaXMuX2Jvb2xlYW5GaWx0ZXJUcmFuc2xhdGlvbi5yZXNldH1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPiAgIFxuICAgICAgICAgICAgICBgXG4gICAgICAgICAgICAgIDogJydcbiAgICAgICAgICB9ICAgICAgIFxuICAgICAgICA8L2Rpdj5cbiAgICBgXG5cbiAgICBib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMuX29uUmFkaW9DaGFuZ2UpXG5cbiAgICB0aGlzLl9ndWkuYXBwZW5kQ2hpbGQoYm9keSlcblxuICAgIC8vIGNyZWF0ZSBhcHBseSBmaWx0ZXIgcGFuZWxcbiAgICBjb25zdCBhcHBseUZpbHRlclBhbmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICBhcHBseUZpbHRlclBhbmVsLmNsYXNzTmFtZSA9IGBib29sZWFuRmlsdGVyX19ib2R5X19hcHBseVBhbmVsIGFnLWZpbHRlci1hcHBseS1wYW5lbCBhZy1oaWRkZW5gXG4gICAgYXBwbHlGaWx0ZXJQYW5lbC5pbm5lckhUTUwgPSAvKiBodG1sICovIGBcbiAgICAgIDxidXR0b24gY2xhc3M9XCJjbGVhciAkeyFpc0NsZWFyRmlsdGVyICYmXG4gICAgICAgICdhZy1oaWRkZW4nfVwiIHR5cGU9XCJidXR0b25cIj4ke3RyYW5zbGF0ZShcbiAgICAgICdjbGVhckZpbHRlcicsXG4gICAgICAnQ2xlYXIgRmlsdGVyJ1xuICAgICl9PC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwicmVzZXQgJHshaXNSZXNldEJ1dHRvbiAmJlxuICAgICAgICAnYWctaGlkZGVuJ31cIiB0eXBlPVwiYnV0dG9uXCI+JHt0cmFuc2xhdGUoXG4gICAgICAncmVzZXRGaWx0ZXInLFxuICAgICAgJ1Jlc2V0IEZpbHRlcidcbiAgICApfTwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImFwcGx5ICR7IWlzQXBwbHlCdXR0b24gJiZcbiAgICAgICAgJ2FnLWhpZGRlbid9XCIgdHlwZT1cImJ1dHRvblwiPiR7dHJhbnNsYXRlKFxuICAgICAgJ2FwcGx5RmlsdGVyJyxcbiAgICAgICdBcHBseSBGaWx0ZXInXG4gICAgKX08L2J1dHRvbj5cbiAgICBgXG5cbiAgICBpZiAoaXNDbGVhckZpbHRlciB8fCBpc1Jlc2V0QnV0dG9uIHx8IGlzQXBwbHlCdXR0b24pIHtcbiAgICAgIGFwcGx5RmlsdGVyUGFuZWwuY2xhc3NMaXN0LnJlbW92ZSgnYWctaGlkZGVuJylcbiAgICB9XG5cbiAgICBhcHBseUZpbHRlclBhbmVsLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnY2xpY2snLFxuICAgICAgdGhpcy5fQXBwbHlGaWx0ZXJQYW5lbEJ1dHRvbkNsaWNrXG4gICAgKVxuXG4gICAgdGhpcy5fZ3VpLmFwcGVuZENoaWxkKGFwcGx5RmlsdGVyUGFuZWwpXG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIEBvdmVycmlkZVxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuX2d1aVxuICAgICAgLnF1ZXJ5U2VsZWN0b3IoJy5ib29sZWFuRmlsdGVyX19ib2R5X19sYWJlbHMnKVxuICAgICAgLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMuX29uUmFkaW9DaGFuZ2UpXG5cbiAgICB0aGlzLl9ndWlcbiAgICAgIC5xdWVyeVNlbGVjdG9yKCcuYm9vbGVhbkZpbHRlcl9fYm9keV9fYXBwbHlQYW5lbCcpXG4gICAgICAucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9BcHBseUZpbHRlclBhbmVsQnV0dG9uQ2xpY2spXG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciBzZWxlY3RlZCBmaWx0ZXIgbWF0Y2hlcyB0aGUgcGFzc2VkIGNlbGwgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zXG4gICAqXG4gICAqIEByZXR1cm4ge0Jvb2xlYW59IHRydWUgd2hlbiBwYXNzLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIGRvZXNGaWx0ZXJQYXNzKHBhcmFtcykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICBjb25zdCB2YWx1ZSA9IFN0cmluZyhcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICAgIHRoaXMuX3BhcmFtcy5oYXNPd25Qcm9wZXJ0eSgnZmlsdGVyVmFsdWVHZXR0ZXInKVxuICAgICAgICA/IHRoaXMuX3BhcmFtcy5maWx0ZXJWYWx1ZUdldHRlcihwYXJhbXMpXG4gICAgICAgIDogdGhpcy5fcGFyYW1zLnZhbHVlR2V0dGVyKHBhcmFtcylcbiAgICApXG5cbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyVGV4dCA9PT0gJ3RydWUnXG4gICAgICA/IHRoaXMuX3RydWVWYWx1ZS5pbmRleE9mKHZhbHVlKSA+IC0xXG4gICAgICA6IHRoaXMuX2ZhbHNlVmFsdWUuaW5kZXhPZih2YWx1ZSkgPiAtMVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBhcHBseWluZyBhbnkgZmlsdGVyIG9uIHRoZSBjb2x1bW5cbiAgICpcbiAgICogQHJldHVybiB7Qm9vbGVhbn1cbiAgICoqL1xuICBpc0ZpbHRlckFjdGl2ZSgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5fZmlsdGVyVGV4dCAhPT0gbnVsbCAmJlxuICAgICAgdGhpcy5fZmlsdGVyVGV4dCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLl9maWx0ZXJUZXh0ICE9PSAnJ1xuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBmaWx0ZXIgc3RhdGUuIElmIGZpbHRlciBpcyBub3QgYWN0aXZlLCB0aGVuIHNob3VsZCByZXR1cm4gbnVsbC91bmRlZmluZWQuXG4gICAqIFRoZSBncmlkIGNhbGxzIGdldE1vZGVsKCkgb24gYWxsIGFjdGl2ZSBmaWx0ZXJzIHdoZW4gZ3JpZEFwaS5nZXRGaWx0ZXJNb2RlbCgpIGlzIGNhbGxlZC5cbiAgICpcbiAgICogQHJldHVybiBPYmplY3QgfCBudWxsIHRoZSBmaWx0ZXIgc3RhdGVcbiAgICovXG4gIGdldE1vZGVsKCkge1xuICAgIGlmICghdGhpcy5pc0ZpbHRlckFjdGl2ZSgpKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGNvbnN0IG1vZGVsID0geyB2YWx1ZTogdGhpcy5fZmlsdGVyVGV4dCB9XG4gICAgcmV0dXJuIG1vZGVsXG4gIH1cblxuICAvKipcbiAgICogUmVzdG9yZXMgdGhlIGZpbHRlciBzdGF0ZS4gQ2FsbGVkIGJ5IHRoZSBncmlkIGFmdGVyIGdyaWRBcGkuc2V0RmlsdGVyTW9kZWwobW9kZWwpIGlzIGNhbGxlZC5cbiAgICogVGhlIGdyaWQgd2lsbCBwYXNzIHVuZGVmaW5lZC9udWxsIHRvIGNsZWFyIHRoZSBmaWx0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0IHwgbnVsbH0gbW9kZWxcbiAgICovXG4gIHNldE1vZGVsKG1vZGVsKSB7XG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zICovXG4gICAgdGhpcy5fZmlsdGVyVGV4dCA9IG1vZGVsICYmIG1vZGVsLmhhc093blByb3BlcnR5KCd2YWx1ZScpID8gbW9kZWwudmFsdWUgOiAnJ1xuXG4gICAgY29uc3QgZmlsdGVyVGV4dEFzU3RyaW5nID0gU3RyaW5nKHRoaXMuX2ZpbHRlclRleHQpXG4gICAgY29uc3QgYm9keSA9IHRoaXMuX2d1aS5xdWVyeVNlbGVjdG9yKCcuYm9vbGVhbkZpbHRlcl9fYm9keScpXG4gICAgYm9keS5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPVwicmFkaW9cIl0nKS5mb3JFYWNoKGkgPT4ge1xuICAgICAgaWYgKGkudmFsdWUgPT0gZmlsdGVyVGV4dEFzU3RyaW5nKSB7XG4gICAgICAgIGkuY2hlY2tlZCA9IHRydWVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGkuY2hlY2tlZCA9IGZhbHNlXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGZpbHRlciBtb2RlbCBhcyBwbGFpbiBzdHJpbmcgdG8gZGlzcGxheSBpbiB0aGUgZmxvYXRpbmcgZmlsdGVyIGlucHV0XG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0IHwgbnVsbH0gbW9kZWxcbiAgICovXG4gIGdldE1vZGVsQXNTdHJpbmcobW9kZWwpIHtcbiAgICBpZiAoIW1vZGVsKSB7XG4gICAgICByZXR1cm4gJydcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaXBIVE1MKFxuICAgICAgbW9kZWwudmFsdWUgPT09ICd0cnVlJ1xuICAgICAgICA/IHRoaXMuX2Jvb2xlYW5GaWx0ZXJUcmFuc2xhdGlvbi50cnVlXG4gICAgICAgIDogdGhpcy5fYm9vbGVhbkZpbHRlclRyYW5zbGF0aW9uLmZhbHNlXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoZSBmaWx0ZXIgc3RhdGVcbiAgICovXG4gIHJlc2V0KCkge1xuICAgIGNvbnN0IGJvZHkgPSB0aGlzLl9ndWkucXVlcnlTZWxlY3RvcignLmJvb2xlYW5GaWx0ZXJfX2JvZHknKVxuICAgIGJvZHkucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbdHlwZT1cInJhZGlvXCJdJykuZm9yRWFjaChpID0+IHtcbiAgICAgIGkuY2hlY2tlZCA9IGZhbHNlXG4gICAgfSlcblxuICAgIHRoaXMuX2ZpbHRlclRleHQgPSBudWxsXG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIHRvIHNlbGVjdGlvbiBjaGFuZ2VzIGluIHRoZSBmaWx0ZXIgcmFkaW8gYnV0dG9ucyBhbmQgdXBkYXRlIHRoZSBjdXJyZW50IGZpbHRlciB0ZXh0XG4gICAqXG4gICAqIEBwYXJhbSB7RXZlbnR9IGVcbiAgICovXG4gIF9vblJhZGlvQ2hhbmdlKGlzQXBwbHlCdXR0b24sIGUpIHtcbiAgICB0aGlzLl9maWx0ZXJUZXh0ID0gZS50YXJnZXQudmFsdWVcbiAgICBpZiAoZmFsc2UgPT09IGlzQXBwbHlCdXR0b24pIHtcbiAgICAgIHRoaXMuX3BhcmFtcy5maWx0ZXJDaGFuZ2VkQ2FsbGJhY2soKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gdGhlIGJ1dHRvbiBjbGlja3MgaW4gdGhlIGJ1dHRvbnMgcGFuZWwgYW5kIGFwcGx5IHRoZSBjaG9zZW4gYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7RXZlbnR9IGVcbiAgICovXG4gIEBhdXRvYmluZFxuICBfQXBwbHlGaWx0ZXJQYW5lbEJ1dHRvbkNsaWNrKGUpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldFxuXG4gICAgaWYgKHRhcmdldC5ub2RlTmFtZSA9PT0gJ0JVVFRPTicpIHtcbiAgICAgIGlmICh0YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdyZXNldCcpKSB7XG4gICAgICAgIHRoaXMucmVzZXQoKVxuICAgICAgICB0aGlzLl9wYXJhbXMuZmlsdGVyQ2hhbmdlZENhbGxiYWNrKClcbiAgICAgIH0gZWxzZSBpZiAodGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnY2xlYXInKSkge1xuICAgICAgICB0aGlzLnJlc2V0KClcbiAgICAgIH0gZWxzZSBpZiAodGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnYXBwbHknKSkge1xuICAgICAgICB0aGlzLl9wYXJhbXMuZmlsdGVyQ2hhbmdlZENhbGxiYWNrKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQm9vbGVhbkZpbHRlclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL0Jvb2xlYW5GaWx0ZXIvQm9vbGVhbkZpbHRlci5qcyIsIlxudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZS5zY3NzXCIpO1xuXG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcblxudmFyIHRyYW5zZm9ybTtcbnZhciBpbnNlcnRJbnRvO1xuXG5cblxudmFyIG9wdGlvbnMgPSB7XCJobXJcIjp0cnVlfVxuXG5vcHRpb25zLnRyYW5zZm9ybSA9IHRyYW5zZm9ybVxub3B0aW9ucy5pbnNlcnRJbnRvID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQuaGVhZFxuICAgICAgICAgICAgICB9O1xuXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXMuanNcIikoY29udGVudCwgb3B0aW9ucyk7XG5cbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuXG5pZihtb2R1bGUuaG90KSB7XG5cdG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZS5zY3NzXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3R5bGUuc2Nzc1wiKTtcblxuXHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXG5cdFx0dmFyIGxvY2FscyA9IChmdW5jdGlvbihhLCBiKSB7XG5cdFx0XHR2YXIga2V5LCBpZHggPSAwO1xuXG5cdFx0XHRmb3Ioa2V5IGluIGEpIHtcblx0XHRcdFx0aWYoIWIgfHwgYVtrZXldICE9PSBiW2tleV0pIHJldHVybiBmYWxzZTtcblx0XHRcdFx0aWR4Kys7XG5cdFx0XHR9XG5cblx0XHRcdGZvcihrZXkgaW4gYikgaWR4LS07XG5cblx0XHRcdHJldHVybiBpZHggPT09IDA7XG5cdFx0fShjb250ZW50LmxvY2FscywgbmV3Q29udGVudC5sb2NhbHMpKTtcblxuXHRcdGlmKCFsb2NhbHMpIHRocm93IG5ldyBFcnJvcignQWJvcnRpbmcgQ1NTIEhNUiBkdWUgdG8gY2hhbmdlZCBjc3MtbW9kdWxlcyBsb2NhbHMuJyk7XG5cblx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdH0pO1xuXG5cdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufVxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9Cb29sZWFuRmlsdGVyL3N0eWxlLnNjc3MiLCJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5ib29sZWFuRmlsdGVyX19ib2R5X19sYWJlbHMgbGFiZWx7ZGlzcGxheTpibG9jaztwYWRkaW5nOjNweCAwfVxcblwiLCBcIlwiXSk7XG5cbi8vIGV4cG9ydHNcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIhLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvQm9vbGVhbkZpbHRlci9zdHlsZS5zY3NzXG4vLyBtb2R1bGUgaWQgPSA1NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmFzaXMtYWdncmlkLWNvbXBvbmVudHMgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgTnVtYmVyRWRpdG9yIGZyb20gJy4vTnVtYmVyRWRpdG9yJ1xuXG5leHBvcnQgZGVmYXVsdCBOdW1iZXJFZGl0b3JcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9OdW1iZXJFZGl0b3IvaW5kZXguanMiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmFzaXMtYWdncmlkLWNvbXBvbmVudHMgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgQ29tcG9uZW50IGZyb20gJy4uL0NvbXBvbmVudCdcbmltcG9ydCB7IGF1dG9iaW5kLCBvdmVycmlkZSB9IGZyb20gJ2NvcmUtZGVjb3JhdG9ycydcblxuaW1wb3J0ICcuL3N0eWxlLnNjc3MnXG5cbi8qKlxuICogTnVtYmVycyBFZGl0b3JcbiAqXG4gKiBIYW5kbGUgbnVtYmVyIHZhbHVlcyBFZGl0aW5nXG4gKlxuICogfCBOYW1lICAgICAgICAgICAgICAgICAgXHR8IERlZmF1bHQgICAgIFx0fCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHR8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVx0fDotLS0tLS0tLS0tLS0tOnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgKipudW1iZXJNaW5WYWx1ZSoqICAgfCB1bmRlZmluZWQgICAgfCBtaW4gYWxsb3dlZCB2YWx1ZVxuICogfCAqKm51bWJlck1heFZhbHVlKiogICB8IHVuZGVmaW5lZCAgICB8IG1heCBhbGxvd2VkIHZhbHVlXG4gKiB8ICoqbnVtYmVyU3RlcFZhbHVlKiogICAgICAgfCB1bmRlZmluZWQgIFx0fCBudW1iZXIgb2Ygc3RlcCBieSBpbmNyZW1lbnQgb3IgZGVjcmVtZW50XG4gKiB8ICoqbnVtYmVyTWFzayoqICAgICAgIHwgdW5kZWZpbmVkICBcdHwgYSBiYmogbnVtYmVyIG1hc2sgdG8gdmFsaWRhdGUgdGhlIG51bWJlciBhZ2FpbnN0XG4gKiB8KipudW1iZXJHcm91cGluZ1NlcGFyYXRvcioqIHwgLCB8IGEgY2hhciB3aGljaCB3aWxsIGJlIHVzZWQgYXMgYSBncm91cGluZyBzZXBhcmF0b3IuIFRoZSBvcHRpb25zIGlzIHVzZWQgb25seSB3aGVuICoqbnVtYmVyTWFzayoqIGlzIGRlZmluZWQgfFxuICogfCoqbnVtYmVyRGVjaW1hbFNlcGFyYXRvcioqIHwgLiB8IGEgY2hhciB3aGljaCB3aWxsIGJlIHVzZWQgYXMgYSBkZWNpbWFsIHNlcGFyYXRvci4gVGhlIG9wdGlvbnMgaXMgdXNlZCBvbmx5IHdoZW4gKipudW1iZXJNYXNrKiogaXMgZGVmaW5lZCAgfFxuICogfCoqbnVtYmVyRm9yY2VUcmFpbGluZ1plcm9zKiogfCBmYWxzZSB8IEFmZmVjdHMgdGhlIG91dHB1dCBieSBzd2l0Y2hpbmcgdGhlIHdheSBhIG1hc2sgd2l0aCBcIiNcIiBjaGFyYWN0ZXJzIGluIHRoZSB0cmFpbGluZyBwb3NpdGlvbnMgaXMgZmlsbGVkLiBmb3IgZXhhbXBsZSwgdGhlIGZ1bmN0aW9uIE51bWJlck1hc2subWFzayguMTA6XCIjLiMjXCIpIHJldHVybnMgLjEwIGluc3RlYWQgb2YgLjEgLiBUaGUgb3B0aW9ucyBpcyB1c2VkIG9ubHkgd2hlbiAqKm51bWJlck1hc2sqKiBpcyBkZWZpbmVkfFxuICpcbiAqIEBhdXRob3IgSHl5YW4gQWJvIEZha2hlciA8aGFib2Zha2hlckBiYXNpcy5jb20+XG4gKi9cbmNsYXNzIE51bWJlckVkaXRvciBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiAgQGluaGVyaXREb2NcbiAgICovXG4gIEBvdmVycmlkZVxuICBpbml0KHBhcmFtcykge1xuICAgIGNvbnN0IG1pbiA9IHRoaXMuZ2V0T3B0aW9uKCdudW1iZXJNaW5WYWx1ZScsIHBhcmFtcylcbiAgICBjb25zdCBtYXggPSB0aGlzLmdldE9wdGlvbignbnVtYmVyTWF4VmFsdWUnLCBwYXJhbXMpXG4gICAgY29uc3Qgc3RlcCA9IHRoaXMuZ2V0T3B0aW9uKCdudW1iZXJTdGVwVmFsdWUnLCBwYXJhbXMpXG4gICAgY29uc3QgbWFzayA9IHRoaXMuZ2V0T3B0aW9uKCdudW1iZXJNYXNrJywgcGFyYW1zKVxuXG4gICAgbGV0IHN0YXJ0VmFsdWVcblxuICAgIHRoaXMuX2ZvY3VzQWZ0ZXJBdHRhY2hlZCA9IHBhcmFtcy5jZWxsU3RhcnRlZEVkaXRcbiAgICBpZiAodGhpcy5fZm9jdXNBZnRlckF0dGFjaGVkKSB7XG4gICAgICBsZXQga2V5UHJlc3NCYWNrc3BhY2VPckRlbGV0ZSA9XG4gICAgICAgIHBhcmFtcy5rZXlQcmVzcyA9PSAzMiB8fCBwYXJhbXMua2V5UHJlc3MgPT0gNDYgLy8gc3BhY2UgLy8gZGVsZXRlXG5cbiAgICAgIGlmIChrZXlQcmVzc0JhY2tzcGFjZU9yRGVsZXRlKSB7XG4gICAgICAgIHN0YXJ0VmFsdWUgPSAnJ1xuICAgICAgfSBlbHNlIGlmIChwYXJhbXMuY2hhclByZXNzKSB7XG4gICAgICAgIHN0YXJ0VmFsdWUgPSBwYXJhbXMuY2hhclByZXNzXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGFydFZhbHVlID0gcGFyYW1zLnZhbHVlXG4gICAgICAgIGlmIChwYXJhbXMua2V5UHJlc3MgIT0gMTEzKSB7XG4gICAgICAgICAgLy9GMlxuICAgICAgICAgIHRoaXMuX2hpZ2hsaWdodEFsbE9uRm9jdXMgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3RhcnRWYWx1ZSA9IHBhcmFtcy52YWx1ZVxuICAgIH1cblxuICAgIHRoaXMuX2d1aSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJylcbiAgICB0aGlzLl9ndWkuY2xhc3NOYW1lID0gJ251bWJlckVkaXRvciBhZy1pbnB1dC13cmFwcGVyJ1xuICAgIHRoaXMuX2d1aS50YWJJbmRleCA9ICcwJ1xuXG4gICAgLy8gaW5wdXRcbiAgICB0aGlzLl9pbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JylcbiAgICB0aGlzLl9pbnB1dC5jbGFzc05hbWUgPSAnbnVtYmVyRWRpdG9yX19pbnB1dCBhZy1jZWxsLWVkaXQtaW5wdXQnXG4gICAgdGhpcy5faW5wdXQuaWQgPSBgZWwtJHtNYXRoLnJhbmRvbSgpXG4gICAgICAudG9TdHJpbmcoMTYpXG4gICAgICAuc2xpY2UoMiwgMTApfWAgLy8gZ2VuZXJhdGUgcmFuZG9tIGlkXG4gICAgdGhpcy5faW5wdXQudHlwZSA9IG1hc2sgPyAndGV4dCcgOiAnbnVtYmVyJ1xuICAgIHRoaXMuX2lucHV0LnZhbHVlID0gc3RhcnRWYWx1ZVxuICAgIHRoaXMuX2lucHV0LnRhYkluZGV4ID0gMFxuXG4gICAgdGhpcy5fZ3VpLmFwcGVuZENoaWxkKHRoaXMuX2lucHV0KVxuXG4gICAgaWYgKG1pbiAhPT0gbnVsbCkge1xuICAgICAgbWFzayA/ICh0aGlzLl9pbnB1dC5kYXRhc2V0Lm1pbiA9IG1pbikgOiAodGhpcy5faW5wdXQubWluID0gbWluKVxuICAgIH1cblxuICAgIGlmIChtYXggIT09IG51bGwpIHtcbiAgICAgIG1hc2sgPyAodGhpcy5faW5wdXQuZGF0YXNldC5tYXggPSBtYXgpIDogKHRoaXMuX2lucHV0Lm1heCA9IG1heClcbiAgICB9XG5cbiAgICBpZiAoc3RlcCAhPT0gbnVsbCkge1xuICAgICAgbWFzayA/ICh0aGlzLl9pbnB1dC5kYXRhc2V0LnN0ZXAgPSBzdGVwKSA6ICh0aGlzLl9pbnB1dC5zdGVwID0gc3RlcClcbiAgICB9XG5cbiAgICBpZiAobWFzaykge1xuICAgICAgY29uc3QgZ3JvdXBpbmdTZXBhcmF0b3IgPSB0aGlzLmdldE9wdGlvbihcbiAgICAgICAgJ251bWJlckdyb3VwaW5nU2VwYXJhdG9yJyxcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICB0aGlzLmdldE9wdGlvbignbnVtYmVyR3JvdXBTZXAnLCBwYXJhbXMpXG4gICAgICApXG4gICAgICBjb25zdCBkZWNpbWFsU2VwYXJhdG9yID0gdGhpcy5nZXRPcHRpb24oXG4gICAgICAgICdudW1iZXJEZWNpbWFsU2VwYXJhdG9yJyxcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICB0aGlzLmdldE9wdGlvbignbnVtYmVyRGVjaW1hbFNlcCcsIHBhcmFtcylcbiAgICAgIClcbiAgICAgIGNvbnN0IGZvcmNlVHJhaWxpbmdaZXJvcyA9IHRoaXMuZ2V0T3B0aW9uKFxuICAgICAgICAnbnVtYmVyRm9yY2VUcmFpbGluZ1plcm9zJyxcbiAgICAgICAgcGFyYW1zXG4gICAgICApXG5cbiAgICAgIGlmIChncm91cGluZ1NlcGFyYXRvciAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9pbnB1dC5kYXRhc2V0Lmdyb3VwaW5nU2VwYXJhdG9yID0gZ3JvdXBpbmdTZXBhcmF0b3JcbiAgICAgIH1cblxuICAgICAgaWYgKGRlY2ltYWxTZXBhcmF0b3IgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5faW5wdXQuZGF0YXNldC5kZWNpbWFsU2VwYXJhdG9yID0gZGVjaW1hbFNlcGFyYXRvclxuICAgICAgfVxuXG4gICAgICBpZiAoZm9yY2VUcmFpbGluZ1plcm9zICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuX2lucHV0LmRhdGFzZXQuZm9yY2VUcmFpbGluZ1plcm9zID0gZm9yY2VUcmFpbGluZ1plcm9zXG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2lucHV0LmRhdGFzZXQubWFzayA9IG1hc2tcbiAgICAgIHRoaXMuX251bWJlcklucHV0ID0gbmV3IEJhc2lzLklucHV0TWFza2luZy5OdW1iZXJJbnB1dCh7XG4gICAgICAgIGVsZW1lbnRzOiBbdGhpcy5faW5wdXRdLFxuICAgICAgICBkb2M6IHRoaXMuZ2V0RG9jKHBhcmFtcyksXG4gICAgICAgIG9uVXBkYXRlOiAoX21hc2tlZCwgdW5tYXNrZWQpID0+IHtcbiAgICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSB1bm1hc2tlZFxuICAgICAgICAgIHRoaXMuZm9jdXNJbigpXG4gICAgICAgIH0sXG4gICAgICAgIG9uSW52YWxpZDogKGVycm9yLCBpbnB1dCkgPT4ge1xuICAgICAgICAgIHRoaXMuZm9jdXNJbigpXG4gICAgICAgICAgaWYgKHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlucHV0LnNldEN1c3RvbVZhbGlkaXR5KGVycm9yKVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLl9vbktleURvd25VcClcbiAgICAgIHRoaXMuX2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy5fb25LZXlEb3duVXApXG4gICAgICB0aGlzLl9pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB0aGlzLl9vbkNoYW5nZSlcbiAgICB9XG5cbiAgICAvLyB1cGRhdGUgYGN1cnJlbnRWYWx1ZWAgdGhlIHZhbHVlIHdoaWNoIHRoaXMgY29tcG9uZW50IGlzIG1hbmFnaW5nXG4gICAgdGhpcy5fY3VycmVudFZhbHVlID0gc3RhcnRWYWx1ZVxuICAgIHRoaXMuX19pc01hc2tlZF9fID0gbWFzayAmJiBtYXNrLmxlbmd0aFxuICB9XG5cbiAgLyoqXG4gICAqICBAaW5oZXJpdERvY1xuICAgKi9cbiAgQG92ZXJyaWRlXG4gIGRlc3Ryb3koKSB7XG4gICAgaWYgKCF0aGlzLl9faXNNYXNrZWRfXykge1xuICAgICAgdGhpcy5faW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuX29uS2V5RG93blVwKVxuICAgICAgdGhpcy5faW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLl9vbktleURvd25VcClcbiAgICAgIHRoaXMuX2lucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMuX29uQ2hhbmdlKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9udW1iZXJJbnB1dC5kZXN0cm95KClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBjYWxsZWQgb25jZSBhZnRlciBHVUkgaXMgYXR0YWNoZWQgdG8gRE9NLlxuICAgKlxuICAgKiBNYWtlIHN1cmUgY29udGFpbmVyIGlzIGFsd2F5cyBmb2N1c2VkIHRvIGxpc3RlbiB0byBrZXkgY2hhbmdlc1xuICAgKi9cbiAgYWZ0ZXJHdWlBdHRhY2hlZCgpIHtcbiAgICBpZiAoIXRoaXMuX19pc01hc2tlZF9fKSB7XG4gICAgICB0aGlzLl92YWxpZGF0ZUlucHV0KHRoaXMuX2lucHV0KVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9oaWdobGlnaHRBbGxPbkZvY3VzKSB7XG4gICAgICB0aGlzLl9pbnB1dC5zZWxlY3QoKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5fZm9jdXNBZnRlckF0dGFjaGVkKSB7XG4gICAgICAgIHRoaXMuZm9jdXNJbigpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBUaGUgY29tcG9uZW50IHZhbHVlXG4gICAqXG4gICAqIEByZXR1cm4ge051bWJlcn1cbiAgICovXG4gIGdldFZhbHVlKCkge1xuICAgIGNvbnN0IGNhc3RlZCA9IE51bWJlcih0aGlzLl9jdXJyZW50VmFsdWUpXG4gICAgcmV0dXJuIGlzTmFOKGNhc3RlZCkgPyB0aGlzLl9jdXJyZW50VmFsdWUgOiBjYXN0ZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBkb2luZyBmdWxsIHJvdyBlZGl0LCB0aGVuIGdldHMgY2FsbGVkIHdoZW4gdGFiYmluZyBpbnRvIHRoZSBjZWxsLlxuICAgKi9cbiAgZm9jdXNJbigpIHtcbiAgICB0aGlzLl9pbnB1dC5mb2N1cygpXG4gIH1cblxuICAvKipcbiAgICogR2V0cyBjYWxsZWQgb25jZSBhZnRlciBpbml0aWFsaXplZCBhbmQgcmV0dXJucyBmYWxzZSBzbyB0aGUgZWRpdG9yIGFwcGVhcnMgaW4gdGhlIGNlbGxcbiAgICpcbiAgICogQHJldHVybiB7Qm9vbGVhbn0gYWx3YXlzIGZhbHNlXG4gICAqKi9cbiAgaXNQb3B1cCgpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYGN1cnJlbnRWYWx1ZWAgd2hlbiB0aGUgY2hlY2tib3ggdmFsdWUgaXMgY2hhbmdlZFxuICAgKi9cbiAgQGF1dG9iaW5kXG4gIF9vbkNoYW5nZShldmVudCkge1xuICAgIGNvbnN0IGlzVmFsaWQgPSB0aGlzLl92YWxpZGF0ZUlucHV0KGV2ZW50LnRhcmdldClcbiAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgdGhpcy5fY3VycmVudFZhbHVlID0gdGhpcy5faW5wdXQudmFsdWVcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIHRvIGtleSBjaGFuZ2VzIGFuZCB2YWxpZGF0ZSB0aGUgaW5wdXRcbiAgICpcbiAgICogQHBhcmFtIHtFdmVudH0gZXZlbnRcbiAgICovXG4gIEBhdXRvYmluZFxuICBfb25LZXlEb3duVXAoZXZlbnQpIHtcbiAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy5fdmFsaWRhdGVJbnB1dChldmVudC50YXJnZXQpXG5cbiAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGtleSA9IGV2ZW50LndoaWNoIHx8IGV2ZW50LmtleUNvZGVcblxuICAgIGlmIChrZXkgPT0gMzggfHwga2V5ID09IDQwKSB7XG4gICAgICAvLyB0b3AgfCBkb3duXG4gICAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSB0aGlzLl9pbnB1dC52YWx1ZVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9IGVsc2UgaWYgKGtleSA9PSAxMyB8fCBrZXkgPT09IDkpIHtcbiAgICAgIC8vIGVudGVyXG4gICAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSB0aGlzLl9pbnB1dC52YWx1ZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGUgZ2l2ZW4gaW5wdXQgZWxlbWVudFxuICAgKlxuICAgKiBAcGFyYW0ge0hUTUxJbnB1dEVsZW1lbnR9IGlucHV0IGlucHV0IGVsZW1lbnRcbiAgICpcbiAgICogQHJldHVybiB7Qm9vbGVhbn0gdHJ1ZSB3aGVuIHZhbGlkICwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBfdmFsaWRhdGVJbnB1dChpbnB1dCkge1xuICAgIGNvbnN0IGlzVmFsaWQgPSBpbnB1dC5jaGVja1ZhbGlkaXR5KClcblxuICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgaW5wdXQuY2xhc3NMaXN0LmFkZCgnYmJqLW1hc2stZXJyb3InKVxuICAgICAgaW5wdXQuY2xhc3NMaXN0LnJlbW92ZSgnYmJqLW1hc2stc3VjY2VzcycpXG4gICAgfSBlbHNlIHtcbiAgICAgIGlucHV0LmNsYXNzTGlzdC5yZW1vdmUoJ2Jiai1tYXNrLWVycm9yJylcbiAgICAgIGlucHV0LmNsYXNzTGlzdC5hZGQoJ2Jiai1tYXNrLXN1Y2Nlc3MnKVxuICAgIH1cblxuICAgIHJldHVybiBpc1ZhbGlkXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTnVtYmVyRWRpdG9yXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvTnVtYmVyRWRpdG9yL051bWJlckVkaXRvci5qcyIsIlxudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZS5zY3NzXCIpO1xuXG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcblxudmFyIHRyYW5zZm9ybTtcbnZhciBpbnNlcnRJbnRvO1xuXG5cblxudmFyIG9wdGlvbnMgPSB7XCJobXJcIjp0cnVlfVxuXG5vcHRpb25zLnRyYW5zZm9ybSA9IHRyYW5zZm9ybVxub3B0aW9ucy5pbnNlcnRJbnRvID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQuaGVhZFxuICAgICAgICAgICAgICB9O1xuXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXMuanNcIikoY29udGVudCwgb3B0aW9ucyk7XG5cbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuXG5pZihtb2R1bGUuaG90KSB7XG5cdG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZS5zY3NzXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3R5bGUuc2Nzc1wiKTtcblxuXHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXG5cdFx0dmFyIGxvY2FscyA9IChmdW5jdGlvbihhLCBiKSB7XG5cdFx0XHR2YXIga2V5LCBpZHggPSAwO1xuXG5cdFx0XHRmb3Ioa2V5IGluIGEpIHtcblx0XHRcdFx0aWYoIWIgfHwgYVtrZXldICE9PSBiW2tleV0pIHJldHVybiBmYWxzZTtcblx0XHRcdFx0aWR4Kys7XG5cdFx0XHR9XG5cblx0XHRcdGZvcihrZXkgaW4gYikgaWR4LS07XG5cblx0XHRcdHJldHVybiBpZHggPT09IDA7XG5cdFx0fShjb250ZW50LmxvY2FscywgbmV3Q29udGVudC5sb2NhbHMpKTtcblxuXHRcdGlmKCFsb2NhbHMpIHRocm93IG5ldyBFcnJvcignQWJvcnRpbmcgQ1NTIEhNUiBkdWUgdG8gY2hhbmdlZCBjc3MtbW9kdWxlcyBsb2NhbHMuJyk7XG5cblx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdH0pO1xuXG5cdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufVxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9OdW1iZXJFZGl0b3Ivc3R5bGUuc2NzcyIsImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikoZmFsc2UpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLm51bWJlckVkaXRvciAubnVtYmVySW5wdXRNYXNrX193cmFwe3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9Lm51bWJlckVkaXRvciAuYmJqLW1hc2stZXJyb3J7Ym94LXNoYWRvdzowIC0ycHggMCAjZTkxZTYzIGluc2V0fS5udW1iZXJFZGl0b3IgLmJiai1tYXNrLXN1Y2Nlc3N7Ym94LXNoYWRvdzowIC0ycHggMCAjNGNhZjUwIGluc2V0fVxcblwiLCBcIlwiXSk7XG5cbi8vIGV4cG9ydHNcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIhLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvTnVtYmVyRWRpdG9yL3N0eWxlLnNjc3Ncbi8vIG1vZHVsZSBpZCA9IDYwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBiYXNpcy1hZ2dyaWQtY29tcG9uZW50cyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmltcG9ydCBUZXh0RWRpdG9yIGZyb20gJy4vVGV4dEVkaXRvcidcblxuZXhwb3J0IGRlZmF1bHQgVGV4dEVkaXRvclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL1RleHRFZGl0b3IvaW5kZXguanMiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmFzaXMtYWdncmlkLWNvbXBvbmVudHMgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgQ29tcG9uZW50IGZyb20gJy4uL0NvbXBvbmVudCdcbmltcG9ydCB7IGF1dG9iaW5kLCBvdmVycmlkZSB9IGZyb20gJ2NvcmUtZGVjb3JhdG9ycydcblxuaW1wb3J0ICcuL3N0eWxlLnNjc3MnXG5cbi8qKlxuICogVGV4dCBFZGl0b3JcbiAqXG4gKiBIYW5kbGUgdGV4dCB2YWx1ZXMgRWRpdGluZ1xuICpcbiAqIHwgTmFtZSAgICAgICAgICAgICAgICAgIFx0fCBEZWZhdWx0ICAgICBcdHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx0fFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cdHw6LS0tLS0tLS0tLS0tLTp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8ICoqdGV4dFBhdHRlcm4qKiAgIHwgdW5kZWZpbmVkICAgIHwgQSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCB0aGUgaW5wdXQncyB2YWx1ZSBtdXN0IG1hdGNoIGluIG9yZGVyIGZvciB0aGUgdmFsdWUgdG8gcGFzcyBjb25zdHJhaW50IHZhbGlkYXRpb25cbiAqIHwgKip0ZXh0UmVxdWlyZWQqKiAgIHwgdW5kZWZpbmVkICAgIHwgQm9vbGVhbi4gQSB2YWx1ZSBpcyByZXF1aXJlZCB0byBjb25zaWRlciB0aGUgaW5wdXQgdmFsaWRcbiAqIHwgKip0ZXh0TWFzayoqICAgfCB1bmRlZmluZWQgICAgfCBBIGJiaiBzdHJpbmcgbWFzayB0byB2YWxpZGF0ZSB0aGUgdmFsdWVcbiAqIHwgKip0ZXh0VGl0bGUqKiAgIHwgbnVsbCAgICB8IFRoZSBpbnB1dCB0aXRsZSAsIHdoZW4gbnVsbCBhbmQgdGhlICoqdGV4dE1hc2sqKiBvcHRpb25zIGlzIGRlZmluZWQgLCB0aGVuIHdlIHVzZSB0aGUgbWFzayBhcyB0aXRsZSAsIHdoZW4gc2V0IHRvIGBkZWZhdWx0YCB3ZSB0aGUgYnJvd3NlcidzIGRlZmF1bHQgdGl0bGUgLCBvdGhlcndpc2UgdGhlIHZhbHVlIGRlZmluZWQgaW4gdGhpcyBvcHRpb25cbiAqXG4gKiBAYXV0aG9yIEh5eWFuIEFibyBGYWtoZXIgPGhhYm9mYWtoZXJAYmFzaXMuY29tPlxuICovXG5jbGFzcyBUZXh0RWRpdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqICBAaW5oZXJpdERvY1xuICAgKi9cbiAgQG92ZXJyaWRlXG4gIGluaXQocGFyYW1zKSB7XG4gICAgY29uc3QgcGF0dGVybiA9IHRoaXMuZ2V0T3B0aW9uKCd0ZXh0UGF0dGVybicsIHBhcmFtcylcbiAgICBjb25zdCByZXF1aXJlZCA9IHRoaXMuZ2V0T3B0aW9uKCd0ZXh0UmVxdWlyZWQnLCBwYXJhbXMpXG4gICAgY29uc3QgbWFzayA9IHRoaXMuZ2V0T3B0aW9uKCd0ZXh0TWFzaycsIHBhcmFtcylcbiAgICBjb25zdCB0aXRsZSA9IHRoaXMuZ2V0T3B0aW9uKCd0ZXh0VGl0bGUnLCBwYXJhbXMpXG5cbiAgICBsZXQgc3RhcnRWYWx1ZVxuXG4gICAgdGhpcy5fZm9jdXNBZnRlckF0dGFjaGVkID0gcGFyYW1zLmNlbGxTdGFydGVkRWRpdFxuICAgIGlmICh0aGlzLl9mb2N1c0FmdGVyQXR0YWNoZWQpIHtcbiAgICAgIGxldCBrZXlQcmVzc0JhY2tzcGFjZU9yRGVsZXRlID1cbiAgICAgICAgcGFyYW1zLmtleVByZXNzID09IDMyIHx8IHBhcmFtcy5rZXlQcmVzcyA9PSA0NiAvLyBzcGFjZSAvLyBkZWxldGVcblxuICAgICAgaWYgKGtleVByZXNzQmFja3NwYWNlT3JEZWxldGUpIHtcbiAgICAgICAgc3RhcnRWYWx1ZSA9ICcnXG4gICAgICB9IGVsc2UgaWYgKHBhcmFtcy5jaGFyUHJlc3MpIHtcbiAgICAgICAgc3RhcnRWYWx1ZSA9IHBhcmFtcy5jaGFyUHJlc3NcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXJ0VmFsdWUgPSBwYXJhbXMudmFsdWVcbiAgICAgICAgaWYgKHBhcmFtcy5rZXlQcmVzcyAhPSAxMTMpIHtcbiAgICAgICAgICAvL0YyXG4gICAgICAgICAgdGhpcy5faGlnaGxpZ2h0QWxsT25Gb2N1cyA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzdGFydFZhbHVlID0gcGFyYW1zLnZhbHVlXG4gICAgfVxuXG4gICAgdGhpcy5fcGFyYW1zID0gcGFyYW1zXG5cbiAgICB0aGlzLl9ndWkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJlbCcpXG4gICAgdGhpcy5fZ3VpLmNsYXNzTmFtZSA9ICd0ZXh0RWRpdG9yIGFnLWlucHV0LXdyYXBwZXInXG4gICAgdGhpcy5fZ3VpLnRhYkluZGV4ID0gJzAnXG5cbiAgICAvLyBpbnB1dFxuICAgIHRoaXMuX2lucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKVxuICAgIHRoaXMuX2lucHV0LmNsYXNzTmFtZSA9ICd0ZXh0RWRpdG9yX19pbnB1dCBhZy1jZWxsLWVkaXQtaW5wdXQnXG4gICAgdGhpcy5faW5wdXQuaWQgPSBgZWwtJHtNYXRoLnJhbmRvbSgpXG4gICAgICAudG9TdHJpbmcoMTYpXG4gICAgICAuc2xpY2UoMiwgMTApfWAgLy8gZ2VuZXJhdGUgcmFuZG9tIGlkXG4gICAgdGhpcy5faW5wdXQudHlwZSA9ICd0ZXh0J1xuICAgIHRoaXMuX2lucHV0LnZhbHVlID0gc3RhcnRWYWx1ZVxuICAgIHRoaXMuX2lucHV0LnRhYkluZGV4ID0gMFxuXG4gICAgdGhpcy5fZ3VpLmFwcGVuZENoaWxkKHRoaXMuX2lucHV0KVxuXG4gICAgaWYgKHBhdHRlcm4gIT09IG51bGwpIHtcbiAgICAgIHRoaXMuX2lucHV0LnNldEF0dHJpYnV0ZSgncGF0dGVybicsIHBhdHRlcm4pXG4gICAgfVxuXG4gICAgaWYgKHJlcXVpcmVkID09PSB0cnVlKSB7XG4gICAgICB0aGlzLl9pbnB1dC5zZXRBdHRyaWJ1dGUoJ3JlcXVpcmVkJywgJ3JlcXVpcmVkJylcbiAgICB9XG5cbiAgICBpZiAodGl0bGUgIT09IG51bGwpIHtcbiAgICAgIGlmICh0aXRsZSAhPT0gJ2RlZmF1bHQnKSB7XG4gICAgICAgIHRoaXMuX2lucHV0LnRpdGxlID0gdGl0bGVcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG1hc2spIHtcbiAgICAgIHRoaXMuX2lucHV0LnRpdGxlID0gbWFza1xuICAgIH1cblxuICAgIGlmIChtYXNrKSB7XG4gICAgICB0aGlzLl9pbnB1dC5kYXRhc2V0Lm1hc2sgPSBtYXNrXG4gICAgICB0aGlzLl90ZXh0SW5wdXQgPSBuZXcgQmFzaXMuSW5wdXRNYXNraW5nLlRleHRJbnB1dCh7XG4gICAgICAgIGVsZW1lbnRzOiBbdGhpcy5faW5wdXRdLFxuICAgICAgICBkb2M6IHRoaXMuZ2V0RG9jKHBhcmFtcyksXG4gICAgICAgIG9uVXBkYXRlOiAoX21hc2tlZCwgdW5tYXNrZWQpID0+IHtcbiAgICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSB1bm1hc2tlZFxuICAgICAgICAgIHRoaXMuZm9jdXNJbigpXG4gICAgICAgIH0sXG4gICAgICAgIG9uSW52YWxpZDogKGVycm9yLCBpbnB1dCkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpbnB1dC5zZXRDdXN0b21WYWxpZGl0eShlcnJvcilcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5fb25DaGFuZ2UpXG4gICAgICB0aGlzLl9pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIHRoaXMuX29uQ2hhbmdlKVxuICAgICAgdGhpcy5faW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy5fb25DaGFuZ2UpXG4gICAgfVxuXG4gICAgLy8gdXBkYXRlIGBjdXJyZW50VmFsdWVgIHRoZSB2YWx1ZSB3aGljaCB0aGlzIGNvbXBvbmVudCBpcyBtYW5hZ2luZ1xuICAgIHRoaXMuX2N1cnJlbnRWYWx1ZSA9IHN0YXJ0VmFsdWVcbiAgICB0aGlzLl9faXNNYXNrZWRfXyA9IG1hc2sgJiYgbWFzay5sZW5ndGhcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGluaGVyaXREb2NcbiAgICovXG4gIEBvdmVycmlkZVxuICBkZXN0cm95KCkge1xuICAgIGlmICghdGhpcy5fX2lzTWFza2VkX18pIHtcbiAgICAgIHRoaXMuX2lucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLl9vbkNoYW5nZSlcbiAgICAgIHRoaXMuX2lucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2lucHV0JywgdGhpcy5fb25DaGFuZ2UpXG4gICAgICB0aGlzLl9pbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB0aGlzLl9vbkNoYW5nZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdGV4dElucHV0LmRlc3Ryb3koKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGNhbGxlZCBvbmNlIGFmdGVyIEdVSSBpcyBhdHRhY2hlZCB0byBET00uXG4gICAqXG4gICAqIE1ha2Ugc3VyZSBjb250YWluZXIgaXMgYWx3YXlzIGZvY3VzZWQgdG8gbGlzdGVuIHRvIGtleSBjaGFuZ2VzXG4gICAqL1xuICBhZnRlckd1aUF0dGFjaGVkKCkge1xuICAgIGlmICghdGhpcy5fX2lzTWFza2VkX18pIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRlSW5wdXQodGhpcy5faW5wdXQpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2hpZ2hsaWdodEFsbE9uRm9jdXMpIHtcbiAgICAgIHRoaXMuX2lucHV0LnNlbGVjdCgpXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLl9mb2N1c0FmdGVyQXR0YWNoZWQpIHtcbiAgICAgICAgdGhpcy5mb2N1c0luKClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IFRoZSBjb21wb25lbnQgdmFsdWVcbiAgICpcbiAgICogQHJldHVybiB7TnVtYmVyfVxuICAgKi9cbiAgZ2V0VmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRWYWx1ZVxuICB9XG5cbiAgLyoqXG4gICAqIElmIGRvaW5nIGZ1bGwgcm93IGVkaXQsIHRoZW4gZ2V0cyBjYWxsZWQgd2hlbiB0YWJiaW5nIGludG8gdGhlIGNlbGwuXG4gICAqL1xuICBmb2N1c0luKCkge1xuICAgIHRoaXMuX2lucHV0LmZvY3VzKClcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGNhbGxlZCBvbmNlIGFmdGVyIGluaXRpYWxpemVkIGFuZCByZXR1cm5zIGZhbHNlIHNvIHRoZSBlZGl0b3IgYXBwZWFycyBpbiB0aGUgY2VsbFxuICAgKlxuICAgKiBAcmV0dXJuIHtCb29sZWFufSBhbHdheXMgZmFsc2VcbiAgICoqL1xuICBpc1BvcHVwKCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBgY3VycmVudFZhbHVlYCBvbiB0aGUgaW5wdXQgdmFsdWUgaXMgY2hhbmdlZCBhbmQgaXQgaXMgdmFsaWRcbiAgICovXG4gIEBhdXRvYmluZFxuICBfb25DaGFuZ2UoZXZlbnQpIHtcbiAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy5fdmFsaWRhdGVJbnB1dChldmVudC50YXJnZXQpXG4gICAgdGhpcy5fY3VycmVudFZhbHVlID0gdGhpcy5fcGFyYW1zLnZhbHVlXG4gICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRWYWx1ZSA9IHRoaXMuX2lucHV0LnZhbHVlXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoZSBnaXZlbiBpbnB1dCBlbGVtZW50XG4gICAqXG4gICAqIEBwYXJhbSB7SFRNTElucHV0RWxlbWVudH0gaW5wdXQgaW5wdXQgZWxlbWVudFxuICAgKlxuICAgKiBAcmV0dXJuIHtCb29sZWFufSB0cnVlIHdoZW4gdmFsaWQgLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIF92YWxpZGF0ZUlucHV0KGlucHV0KSB7XG4gICAgY29uc3QgaXNWYWxpZCA9IGlucHV0LmNoZWNrVmFsaWRpdHkoKVxuXG4gICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICBpbnB1dC5jbGFzc0xpc3QuYWRkKCdiYmotbWFzay1lcnJvcicpXG4gICAgICBpbnB1dC5jbGFzc0xpc3QucmVtb3ZlKCdiYmotbWFzay1zdWNjZXNzJylcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQuY2xhc3NMaXN0LnJlbW92ZSgnYmJqLW1hc2stZXJyb3InKVxuICAgICAgaW5wdXQuY2xhc3NMaXN0LmFkZCgnYmJqLW1hc2stc3VjY2VzcycpXG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVmFsaWRcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBUZXh0RWRpdG9yXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvVGV4dEVkaXRvci9UZXh0RWRpdG9yLmpzIiwiXG52YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3N0eWxlLnNjc3NcIik7XG5cbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuXG52YXIgdHJhbnNmb3JtO1xudmFyIGluc2VydEludG87XG5cblxuXG52YXIgb3B0aW9ucyA9IHtcImhtclwiOnRydWV9XG5cbm9wdGlvbnMudHJhbnNmb3JtID0gdHJhbnNmb3JtXG5vcHRpb25zLmluc2VydEludG8gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LnBhcmVudC5kb2N1bWVudC5oZWFkXG4gICAgICAgICAgICAgIH07XG5cbnZhciB1cGRhdGUgPSByZXF1aXJlKFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlcy5qc1wiKShjb250ZW50LCBvcHRpb25zKTtcblxuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG5cbmlmKG1vZHVsZS5ob3QpIHtcblx0bW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3N0eWxlLnNjc3NcIiwgZnVuY3Rpb24oKSB7XG5cdFx0dmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZS5zY3NzXCIpO1xuXG5cdFx0aWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG5cblx0XHR2YXIgbG9jYWxzID0gKGZ1bmN0aW9uKGEsIGIpIHtcblx0XHRcdHZhciBrZXksIGlkeCA9IDA7XG5cblx0XHRcdGZvcihrZXkgaW4gYSkge1xuXHRcdFx0XHRpZighYiB8fCBhW2tleV0gIT09IGJba2V5XSkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRpZHgrKztcblx0XHRcdH1cblxuXHRcdFx0Zm9yKGtleSBpbiBiKSBpZHgtLTtcblxuXHRcdFx0cmV0dXJuIGlkeCA9PT0gMDtcblx0XHR9KGNvbnRlbnQubG9jYWxzLCBuZXdDb250ZW50LmxvY2FscykpO1xuXG5cdFx0aWYoIWxvY2FscykgdGhyb3cgbmV3IEVycm9yKCdBYm9ydGluZyBDU1MgSE1SIGR1ZSB0byBjaGFuZ2VkIGNzcy1tb2R1bGVzIGxvY2Fscy4nKTtcblxuXHRcdHVwZGF0ZShuZXdDb250ZW50KTtcblx0fSk7XG5cblx0bW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL1RleHRFZGl0b3Ivc3R5bGUuc2NzcyIsImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikoZmFsc2UpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLnRleHRFZGl0b3IgLnRleHRJbnB1dE1hc2tfX3dyYXB7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJX0udGV4dEVkaXRvciAuYmJqLW1hc2stZXJyb3J7Ym94LXNoYWRvdzowIC0ycHggMCAjZTkxZTYzIGluc2V0fS50ZXh0RWRpdG9yIC5iYmotbWFzay1zdWNjZXNze2JveC1zaGFkb3c6MCAtMnB4IDAgIzRjYWY1MCBpbnNldH1cXG5cIiwgXCJcIl0pO1xuXG4vLyBleHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyIS4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL1RleHRFZGl0b3Ivc3R5bGUuc2Nzc1xuLy8gbW9kdWxlIGlkID0gNjRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWFnZ3JpZC1jb21wb25lbnRzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IENvbXBvbmVudCBmcm9tICcuLi9Db21wb25lbnQnXG5pbXBvcnQgdGVtcGxhdGUgZnJvbSAnbG9kYXNoLWVzL3RlbXBsYXRlJ1xuXG4vKipcbiAqIE51bWJlcnMgRWRpdG9yXG4gKlxuICogSGFuZGxlIG51bWJlciB2YWx1ZXMgRWRpdGluZ1xuICpcbiAqIHwgTmFtZSAgICAgICAgICAgICAgICAgIFx0fCBEZWZhdWx0ICAgICBcdHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx0fFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cdHw6LS0tLS0tLS0tLS0tLTp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8ICoqcmVuZGVyVGVtcGxhdGUqKiAgIHwgdW5kZWZpbmVkICAgIHwgbG9kYXNoIHRlbXBsYXRlXG4gKlxuICogQGF1dGhvciBIeXlhbiBBYm8gRmFraGVyIDxoYWJvZmFraGVyQGJhc2lzLmNvbT5cbiAqL1xuY2xhc3MgVGVtcGxhdGVSZW5kZXJlciBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3QgbmV3IFRlbXBsYXRlUmVuZGVyZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKClcblxuICAgIC8vIHdpbGwgdGhpcyBhZmZlY3QgQkJqIGJ1aSA/XG4gICAgdGhpcy5fZ3VpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICB0aGlzLl9ndWkuY2xhc3NOYW1lID0gJ3RlbXBsYXRlUmVuZGVyZXInXG4gICAgdGhpcy5fZ3VpLnN0eWxlLndpZHRoID0gJzEwMCUnXG4gICAgdGhpcy5fZ3VpLnN0eWxlLmhlaWdodCA9ICcxMDAlJ1xuICAgIHRoaXMuX2d1aS5zdHlsZS5saW5lSGVpZ2h0ID0gJ25vcm1hbCdcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGluaGVyaXREb2NcbiAgICovXG4gIGluaXQocGFyYW1zKSB7XG4gICAgdGhpcy5yZWZyZXNoKHBhcmFtcywgdHJ1ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGluaGVyaXREb2NcbiAgICovXG4gIGdldEd1aSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZ3VpXG4gIH1cblxuICAvKipcbiAgICogUmVmcmVzaCB0aGUgY2VsbCBsXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXMgY2VsbCByZW5kZXJlciBwYXJhbXNcbiAgICogQHBhcmFtIHtCb29sZWFufSBpc0luaXQgdHJ1ZSB3aGVuIHRoaXMgbWV0aG9kIGlzIGJlaW5nIGNhbGxlZCBpbiBgaW5pdGAgcGhhc2UgLCBmYWxzZSBvdGhlcndpc2VcbiAgICpcbiAgICogQHJldHVybiB7Qm9vbGVhbn0gdHJ1ZSBpZiB0aGUgcmVmcmVzaCBzdWNjZWVkZWQsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXG4gICAqL1xuICByZWZyZXNoKHBhcmFtcywgaXNJbml0KSB7XG4gICAgaWYgKGlzSW5pdCkge1xuICAgICAgdGhpcy5fY29tcGlsZWRUZW1wbGF0ZSA9IHRlbXBsYXRlKFxuICAgICAgICB0aGlzLmdldE9wdGlvbigncmVuZGVyVGVtcGxhdGUnLCBwYXJhbXMsICcnKVxuICAgICAgKVxuICAgIH1cblxuICAgIGxldCBjb250ZW50XG5cbiAgICBpZiAodHlwZW9mIHRoaXMuX2NvbXBpbGVkVGVtcGxhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnRlbnQgPSB0aGlzLl9jb21waWxlZFRlbXBsYXRlKHsgcGFyYW1zIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRlbnQgPSBwYXJhbXMudmFsdWVGb3JtYXR0ZWQgPyBwYXJhbXMudmFsdWVGb3JtYXR0ZWQgOiBwYXJhbXMudmFsdWVcbiAgICB9XG5cbiAgICB0aGlzLl9ndWkuaW5uZXJIVE1MID0gY29udGVudFxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBUZW1wbGF0ZVJlbmRlcmVyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvVGVtcGxhdGVSZW5kZXJlci9UZW1wbGF0ZVJlbmRlcmVyLmpzIiwiaW1wb3J0IGFzc2lnbkluV2l0aCBmcm9tICcuL2Fzc2lnbkluV2l0aC5qcyc7XG5pbXBvcnQgYXR0ZW1wdCBmcm9tICcuL2F0dGVtcHQuanMnO1xuaW1wb3J0IGJhc2VWYWx1ZXMgZnJvbSAnLi9fYmFzZVZhbHVlcy5qcyc7XG5pbXBvcnQgY3VzdG9tRGVmYXVsdHNBc3NpZ25JbiBmcm9tICcuL19jdXN0b21EZWZhdWx0c0Fzc2lnbkluLmpzJztcbmltcG9ydCBlc2NhcGVTdHJpbmdDaGFyIGZyb20gJy4vX2VzY2FwZVN0cmluZ0NoYXIuanMnO1xuaW1wb3J0IGlzRXJyb3IgZnJvbSAnLi9pc0Vycm9yLmpzJztcbmltcG9ydCBpc0l0ZXJhdGVlQ2FsbCBmcm9tICcuL19pc0l0ZXJhdGVlQ2FsbC5qcyc7XG5pbXBvcnQga2V5cyBmcm9tICcuL2tleXMuanMnO1xuaW1wb3J0IHJlSW50ZXJwb2xhdGUgZnJvbSAnLi9fcmVJbnRlcnBvbGF0ZS5qcyc7XG5pbXBvcnQgdGVtcGxhdGVTZXR0aW5ncyBmcm9tICcuL3RlbXBsYXRlU2V0dGluZ3MuanMnO1xuaW1wb3J0IHRvU3RyaW5nIGZyb20gJy4vdG9TdHJpbmcuanMnO1xuXG4vKiogVXNlZCB0byBtYXRjaCBlbXB0eSBzdHJpbmcgbGl0ZXJhbHMgaW4gY29tcGlsZWQgdGVtcGxhdGUgc291cmNlLiAqL1xudmFyIHJlRW1wdHlTdHJpbmdMZWFkaW5nID0gL1xcYl9fcCBcXCs9ICcnOy9nLFxuICAgIHJlRW1wdHlTdHJpbmdNaWRkbGUgPSAvXFxiKF9fcCBcXCs9KSAnJyBcXCsvZyxcbiAgICByZUVtcHR5U3RyaW5nVHJhaWxpbmcgPSAvKF9fZVxcKC4qP1xcKXxcXGJfX3RcXCkpIFxcK1xcbicnOy9nO1xuXG4vKipcbiAqIFVzZWQgdG8gbWF0Y2hcbiAqIFtFUyB0ZW1wbGF0ZSBkZWxpbWl0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10ZW1wbGF0ZS1saXRlcmFsLWxleGljYWwtY29tcG9uZW50cykuXG4gKi9cbnZhciByZUVzVGVtcGxhdGUgPSAvXFwkXFx7KFteXFxcXH1dKig/OlxcXFwuW15cXFxcfV0qKSopXFx9L2c7XG5cbi8qKiBVc2VkIHRvIGVuc3VyZSBjYXB0dXJpbmcgb3JkZXIgb2YgdGVtcGxhdGUgZGVsaW1pdGVycy4gKi9cbnZhciByZU5vTWF0Y2ggPSAvKCReKS87XG5cbi8qKiBVc2VkIHRvIG1hdGNoIHVuZXNjYXBlZCBjaGFyYWN0ZXJzIGluIGNvbXBpbGVkIHN0cmluZyBsaXRlcmFscy4gKi9cbnZhciByZVVuZXNjYXBlZFN0cmluZyA9IC9bJ1xcblxcclxcdTIwMjhcXHUyMDI5XFxcXF0vZztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY29tcGlsZWQgdGVtcGxhdGUgZnVuY3Rpb24gdGhhdCBjYW4gaW50ZXJwb2xhdGUgZGF0YSBwcm9wZXJ0aWVzXG4gKiBpbiBcImludGVycG9sYXRlXCIgZGVsaW1pdGVycywgSFRNTC1lc2NhcGUgaW50ZXJwb2xhdGVkIGRhdGEgcHJvcGVydGllcyBpblxuICogXCJlc2NhcGVcIiBkZWxpbWl0ZXJzLCBhbmQgZXhlY3V0ZSBKYXZhU2NyaXB0IGluIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXJzLiBEYXRhXG4gKiBwcm9wZXJ0aWVzIG1heSBiZSBhY2Nlc3NlZCBhcyBmcmVlIHZhcmlhYmxlcyBpbiB0aGUgdGVtcGxhdGUuIElmIGEgc2V0dGluZ1xuICogb2JqZWN0IGlzIGdpdmVuLCBpdCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgYF8udGVtcGxhdGVTZXR0aW5nc2AgdmFsdWVzLlxuICpcbiAqICoqTm90ZToqKiBJbiB0aGUgZGV2ZWxvcG1lbnQgYnVpbGQgYF8udGVtcGxhdGVgIHV0aWxpemVzXG4gKiBbc291cmNlVVJMc10oaHR0cDovL3d3dy5odG1sNXJvY2tzLmNvbS9lbi90dXRvcmlhbHMvZGV2ZWxvcGVydG9vbHMvc291cmNlbWFwcy8jdG9jLXNvdXJjZXVybClcbiAqIGZvciBlYXNpZXIgZGVidWdnaW5nLlxuICpcbiAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHByZWNvbXBpbGluZyB0ZW1wbGF0ZXMgc2VlXG4gKiBbbG9kYXNoJ3MgY3VzdG9tIGJ1aWxkcyBkb2N1bWVudGF0aW9uXShodHRwczovL2xvZGFzaC5jb20vY3VzdG9tLWJ1aWxkcykuXG4gKlxuICogRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQ2hyb21lIGV4dGVuc2lvbiBzYW5kYm94ZXMgc2VlXG4gKiBbQ2hyb21lJ3MgZXh0ZW5zaW9ucyBkb2N1bWVudGF0aW9uXShodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvc2FuZGJveGluZ0V2YWwpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBTdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgdGVtcGxhdGUgc3RyaW5nLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gKiBAcGFyYW0ge1JlZ0V4cH0gW29wdGlvbnMuZXNjYXBlPV8udGVtcGxhdGVTZXR0aW5ncy5lc2NhcGVdXG4gKiAgVGhlIEhUTUwgXCJlc2NhcGVcIiBkZWxpbWl0ZXIuXG4gKiBAcGFyYW0ge1JlZ0V4cH0gW29wdGlvbnMuZXZhbHVhdGU9Xy50ZW1wbGF0ZVNldHRpbmdzLmV2YWx1YXRlXVxuICogIFRoZSBcImV2YWx1YXRlXCIgZGVsaW1pdGVyLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zLmltcG9ydHM9Xy50ZW1wbGF0ZVNldHRpbmdzLmltcG9ydHNdXG4gKiAgQW4gb2JqZWN0IHRvIGltcG9ydCBpbnRvIHRoZSB0ZW1wbGF0ZSBhcyBmcmVlIHZhcmlhYmxlcy5cbiAqIEBwYXJhbSB7UmVnRXhwfSBbb3B0aW9ucy5pbnRlcnBvbGF0ZT1fLnRlbXBsYXRlU2V0dGluZ3MuaW50ZXJwb2xhdGVdXG4gKiAgVGhlIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuc291cmNlVVJMPSd0ZW1wbGF0ZVNvdXJjZXNbbl0nXVxuICogIFRoZSBzb3VyY2VVUkwgb2YgdGhlIGNvbXBpbGVkIHRlbXBsYXRlLlxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnZhcmlhYmxlPSdvYmonXVxuICogIFRoZSBkYXRhIG9iamVjdCB2YXJpYWJsZSBuYW1lLlxuICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgY29tcGlsZWQgdGVtcGxhdGUgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIFVzZSB0aGUgXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlciB0byBjcmVhdGUgYSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hlbGxvIDwlPSB1c2VyICU+IScpO1xuICogY29tcGlsZWQoeyAndXNlcic6ICdmcmVkJyB9KTtcbiAqIC8vID0+ICdoZWxsbyBmcmVkISdcbiAqXG4gKiAvLyBVc2UgdGhlIEhUTUwgXCJlc2NhcGVcIiBkZWxpbWl0ZXIgdG8gZXNjYXBlIGRhdGEgcHJvcGVydHkgdmFsdWVzLlxuICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPGI+PCUtIHZhbHVlICU+PC9iPicpO1xuICogY29tcGlsZWQoeyAndmFsdWUnOiAnPHNjcmlwdD4nIH0pO1xuICogLy8gPT4gJzxiPiZsdDtzY3JpcHQmZ3Q7PC9iPidcbiAqXG4gKiAvLyBVc2UgdGhlIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXIgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGFuZCBnZW5lcmF0ZSBIVE1MLlxuICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPCUgXy5mb3JFYWNoKHVzZXJzLCBmdW5jdGlvbih1c2VyKSB7ICU+PGxpPjwlLSB1c2VyICU+PC9saT48JSB9KTsgJT4nKTtcbiAqIGNvbXBpbGVkKHsgJ3VzZXJzJzogWydmcmVkJywgJ2Jhcm5leSddIH0pO1xuICogLy8gPT4gJzxsaT5mcmVkPC9saT48bGk+YmFybmV5PC9saT4nXG4gKlxuICogLy8gVXNlIHRoZSBpbnRlcm5hbCBgcHJpbnRgIGZ1bmN0aW9uIGluIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXJzLlxuICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPCUgcHJpbnQoXCJoZWxsbyBcIiArIHVzZXIpOyAlPiEnKTtcbiAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnYmFybmV5JyB9KTtcbiAqIC8vID0+ICdoZWxsbyBiYXJuZXkhJ1xuICpcbiAqIC8vIFVzZSB0aGUgRVMgdGVtcGxhdGUgbGl0ZXJhbCBkZWxpbWl0ZXIgYXMgYW4gXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlci5cbiAqIC8vIERpc2FibGUgc3VwcG9ydCBieSByZXBsYWNpbmcgdGhlIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIuXG4gKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyAkeyB1c2VyIH0hJyk7XG4gKiBjb21waWxlZCh7ICd1c2VyJzogJ3BlYmJsZXMnIH0pO1xuICogLy8gPT4gJ2hlbGxvIHBlYmJsZXMhJ1xuICpcbiAqIC8vIFVzZSBiYWNrc2xhc2hlcyB0byB0cmVhdCBkZWxpbWl0ZXJzIGFzIHBsYWluIHRleHQuXG4gKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCc8JT0gXCJcXFxcPCUtIHZhbHVlICVcXFxcPlwiICU+Jyk7XG4gKiBjb21waWxlZCh7ICd2YWx1ZSc6ICdpZ25vcmVkJyB9KTtcbiAqIC8vID0+ICc8JS0gdmFsdWUgJT4nXG4gKlxuICogLy8gVXNlIHRoZSBgaW1wb3J0c2Agb3B0aW9uIHRvIGltcG9ydCBgalF1ZXJ5YCBhcyBganFgLlxuICogdmFyIHRleHQgPSAnPCUganEuZWFjaCh1c2VycywgZnVuY3Rpb24odXNlcikgeyAlPjxsaT48JS0gdXNlciAlPjwvbGk+PCUgfSk7ICU+JztcbiAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUodGV4dCwgeyAnaW1wb3J0cyc6IHsgJ2pxJzogalF1ZXJ5IH0gfSk7XG4gKiBjb21waWxlZCh7ICd1c2Vycyc6IFsnZnJlZCcsICdiYXJuZXknXSB9KTtcbiAqIC8vID0+ICc8bGk+ZnJlZDwvbGk+PGxpPmJhcm5leTwvbGk+J1xuICpcbiAqIC8vIFVzZSB0aGUgYHNvdXJjZVVSTGAgb3B0aW9uIHRvIHNwZWNpZnkgYSBjdXN0b20gc291cmNlVVJMIGZvciB0aGUgdGVtcGxhdGUuXG4gKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyA8JT0gdXNlciAlPiEnLCB7ICdzb3VyY2VVUkwnOiAnL2Jhc2ljL2dyZWV0aW5nLmpzdCcgfSk7XG4gKiBjb21waWxlZChkYXRhKTtcbiAqIC8vID0+IEZpbmQgdGhlIHNvdXJjZSBvZiBcImdyZWV0aW5nLmpzdFwiIHVuZGVyIHRoZSBTb3VyY2VzIHRhYiBvciBSZXNvdXJjZXMgcGFuZWwgb2YgdGhlIHdlYiBpbnNwZWN0b3IuXG4gKlxuICogLy8gVXNlIHRoZSBgdmFyaWFibGVgIG9wdGlvbiB0byBlbnN1cmUgYSB3aXRoLXN0YXRlbWVudCBpc24ndCB1c2VkIGluIHRoZSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hpIDwlPSBkYXRhLnVzZXIgJT4hJywgeyAndmFyaWFibGUnOiAnZGF0YScgfSk7XG4gKiBjb21waWxlZC5zb3VyY2U7XG4gKiAvLyA9PiBmdW5jdGlvbihkYXRhKSB7XG4gKiAvLyAgIHZhciBfX3QsIF9fcCA9ICcnO1xuICogLy8gICBfX3AgKz0gJ2hpICcgKyAoKF9fdCA9ICggZGF0YS51c2VyICkpID09IG51bGwgPyAnJyA6IF9fdCkgKyAnISc7XG4gKiAvLyAgIHJldHVybiBfX3A7XG4gKiAvLyB9XG4gKlxuICogLy8gVXNlIGN1c3RvbSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLlxuICogXy50ZW1wbGF0ZVNldHRpbmdzLmludGVycG9sYXRlID0gL3t7KFtcXHNcXFNdKz8pfX0vZztcbiAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hlbGxvIHt7IHVzZXIgfX0hJyk7XG4gKiBjb21waWxlZCh7ICd1c2VyJzogJ211c3RhY2hlJyB9KTtcbiAqIC8vID0+ICdoZWxsbyBtdXN0YWNoZSEnXG4gKlxuICogLy8gVXNlIHRoZSBgc291cmNlYCBwcm9wZXJ0eSB0byBpbmxpbmUgY29tcGlsZWQgdGVtcGxhdGVzIGZvciBtZWFuaW5nZnVsXG4gKiAvLyBsaW5lIG51bWJlcnMgaW4gZXJyb3IgbWVzc2FnZXMgYW5kIHN0YWNrIHRyYWNlcy5cbiAqIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICdqc3QuanMnKSwgJ1xcXG4gKiAgIHZhciBKU1QgPSB7XFxcbiAqICAgICBcIm1haW5cIjogJyArIF8udGVtcGxhdGUobWFpblRleHQpLnNvdXJjZSArICdcXFxuICogICB9O1xcXG4gKiAnKTtcbiAqL1xuZnVuY3Rpb24gdGVtcGxhdGUoc3RyaW5nLCBvcHRpb25zLCBndWFyZCkge1xuICAvLyBCYXNlZCBvbiBKb2huIFJlc2lnJ3MgYHRtcGxgIGltcGxlbWVudGF0aW9uXG4gIC8vIChodHRwOi8vZWpvaG4ub3JnL2Jsb2cvamF2YXNjcmlwdC1taWNyby10ZW1wbGF0aW5nLylcbiAgLy8gYW5kIExhdXJhIERva3Rvcm92YSdzIGRvVC5qcyAoaHR0cHM6Ly9naXRodWIuY29tL29sYWRvL2RvVCkuXG4gIHZhciBzZXR0aW5ncyA9IHRlbXBsYXRlU2V0dGluZ3MuaW1wb3J0cy5fLnRlbXBsYXRlU2V0dGluZ3MgfHwgdGVtcGxhdGVTZXR0aW5ncztcblxuICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoc3RyaW5nLCBvcHRpb25zLCBndWFyZCkpIHtcbiAgICBvcHRpb25zID0gdW5kZWZpbmVkO1xuICB9XG4gIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gIG9wdGlvbnMgPSBhc3NpZ25JbldpdGgoe30sIG9wdGlvbnMsIHNldHRpbmdzLCBjdXN0b21EZWZhdWx0c0Fzc2lnbkluKTtcblxuICB2YXIgaW1wb3J0cyA9IGFzc2lnbkluV2l0aCh7fSwgb3B0aW9ucy5pbXBvcnRzLCBzZXR0aW5ncy5pbXBvcnRzLCBjdXN0b21EZWZhdWx0c0Fzc2lnbkluKSxcbiAgICAgIGltcG9ydHNLZXlzID0ga2V5cyhpbXBvcnRzKSxcbiAgICAgIGltcG9ydHNWYWx1ZXMgPSBiYXNlVmFsdWVzKGltcG9ydHMsIGltcG9ydHNLZXlzKTtcblxuICB2YXIgaXNFc2NhcGluZyxcbiAgICAgIGlzRXZhbHVhdGluZyxcbiAgICAgIGluZGV4ID0gMCxcbiAgICAgIGludGVycG9sYXRlID0gb3B0aW9ucy5pbnRlcnBvbGF0ZSB8fCByZU5vTWF0Y2gsXG4gICAgICBzb3VyY2UgPSBcIl9fcCArPSAnXCI7XG5cbiAgLy8gQ29tcGlsZSB0aGUgcmVnZXhwIHRvIG1hdGNoIGVhY2ggZGVsaW1pdGVyLlxuICB2YXIgcmVEZWxpbWl0ZXJzID0gUmVnRXhwKFxuICAgIChvcHRpb25zLmVzY2FwZSB8fCByZU5vTWF0Y2gpLnNvdXJjZSArICd8JyArXG4gICAgaW50ZXJwb2xhdGUuc291cmNlICsgJ3wnICtcbiAgICAoaW50ZXJwb2xhdGUgPT09IHJlSW50ZXJwb2xhdGUgPyByZUVzVGVtcGxhdGUgOiByZU5vTWF0Y2gpLnNvdXJjZSArICd8JyArXG4gICAgKG9wdGlvbnMuZXZhbHVhdGUgfHwgcmVOb01hdGNoKS5zb3VyY2UgKyAnfCQnXG4gICwgJ2cnKTtcblxuICAvLyBVc2UgYSBzb3VyY2VVUkwgZm9yIGVhc2llciBkZWJ1Z2dpbmcuXG4gIC8vIFRoZSBzb3VyY2VVUkwgZ2V0cyBpbmplY3RlZCBpbnRvIHRoZSBzb3VyY2UgdGhhdCdzIGV2YWwtZWQsIHNvIGJlIGNhcmVmdWxcbiAgLy8gd2l0aCBsb29rdXAgKGluIGNhc2Ugb2YgZS5nLiBwcm90b3R5cGUgcG9sbHV0aW9uKSwgYW5kIHN0cmlwIG5ld2xpbmVzIGlmIGFueS5cbiAgLy8gQSBuZXdsaW5lIHdvdWxkbid0IGJlIGEgdmFsaWQgc291cmNlVVJMIGFueXdheSwgYW5kIGl0J2QgZW5hYmxlIGNvZGUgaW5qZWN0aW9uLlxuICB2YXIgc291cmNlVVJMID0gaGFzT3duUHJvcGVydHkuY2FsbChvcHRpb25zLCAnc291cmNlVVJMJylcbiAgICA/ICgnLy8jIHNvdXJjZVVSTD0nICtcbiAgICAgICAob3B0aW9ucy5zb3VyY2VVUkwgKyAnJykucmVwbGFjZSgvW1xcclxcbl0vZywgJyAnKSArXG4gICAgICAgJ1xcbicpXG4gICAgOiAnJztcblxuICBzdHJpbmcucmVwbGFjZShyZURlbGltaXRlcnMsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGVWYWx1ZSwgaW50ZXJwb2xhdGVWYWx1ZSwgZXNUZW1wbGF0ZVZhbHVlLCBldmFsdWF0ZVZhbHVlLCBvZmZzZXQpIHtcbiAgICBpbnRlcnBvbGF0ZVZhbHVlIHx8IChpbnRlcnBvbGF0ZVZhbHVlID0gZXNUZW1wbGF0ZVZhbHVlKTtcblxuICAgIC8vIEVzY2FwZSBjaGFyYWN0ZXJzIHRoYXQgY2FuJ3QgYmUgaW5jbHVkZWQgaW4gc3RyaW5nIGxpdGVyYWxzLlxuICAgIHNvdXJjZSArPSBzdHJpbmcuc2xpY2UoaW5kZXgsIG9mZnNldCkucmVwbGFjZShyZVVuZXNjYXBlZFN0cmluZywgZXNjYXBlU3RyaW5nQ2hhcik7XG5cbiAgICAvLyBSZXBsYWNlIGRlbGltaXRlcnMgd2l0aCBzbmlwcGV0cy5cbiAgICBpZiAoZXNjYXBlVmFsdWUpIHtcbiAgICAgIGlzRXNjYXBpbmcgPSB0cnVlO1xuICAgICAgc291cmNlICs9IFwiJyArXFxuX19lKFwiICsgZXNjYXBlVmFsdWUgKyBcIikgK1xcbidcIjtcbiAgICB9XG4gICAgaWYgKGV2YWx1YXRlVmFsdWUpIHtcbiAgICAgIGlzRXZhbHVhdGluZyA9IHRydWU7XG4gICAgICBzb3VyY2UgKz0gXCInO1xcblwiICsgZXZhbHVhdGVWYWx1ZSArIFwiO1xcbl9fcCArPSAnXCI7XG4gICAgfVxuICAgIGlmIChpbnRlcnBvbGF0ZVZhbHVlKSB7XG4gICAgICBzb3VyY2UgKz0gXCInICtcXG4oKF9fdCA9IChcIiArIGludGVycG9sYXRlVmFsdWUgKyBcIikpID09IG51bGwgPyAnJyA6IF9fdCkgK1xcbidcIjtcbiAgICB9XG4gICAgaW5kZXggPSBvZmZzZXQgKyBtYXRjaC5sZW5ndGg7XG5cbiAgICAvLyBUaGUgSlMgZW5naW5lIGVtYmVkZGVkIGluIEFkb2JlIHByb2R1Y3RzIG5lZWRzIGBtYXRjaGAgcmV0dXJuZWQgaW5cbiAgICAvLyBvcmRlciB0byBwcm9kdWNlIHRoZSBjb3JyZWN0IGBvZmZzZXRgIHZhbHVlLlxuICAgIHJldHVybiBtYXRjaDtcbiAgfSk7XG5cbiAgc291cmNlICs9IFwiJztcXG5cIjtcblxuICAvLyBJZiBgdmFyaWFibGVgIGlzIG5vdCBzcGVjaWZpZWQgd3JhcCBhIHdpdGgtc3RhdGVtZW50IGFyb3VuZCB0aGUgZ2VuZXJhdGVkXG4gIC8vIGNvZGUgdG8gYWRkIHRoZSBkYXRhIG9iamVjdCB0byB0aGUgdG9wIG9mIHRoZSBzY29wZSBjaGFpbi5cbiAgLy8gTGlrZSB3aXRoIHNvdXJjZVVSTCwgd2UgdGFrZSBjYXJlIHRvIG5vdCBjaGVjayB0aGUgb3B0aW9uJ3MgcHJvdG90eXBlLFxuICAvLyBhcyB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgYSBjb2RlIGluamVjdGlvbiB2ZWN0b3IuXG4gIHZhciB2YXJpYWJsZSA9IGhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgJ3ZhcmlhYmxlJykgJiYgb3B0aW9ucy52YXJpYWJsZTtcbiAgaWYgKCF2YXJpYWJsZSkge1xuICAgIHNvdXJjZSA9ICd3aXRoIChvYmopIHtcXG4nICsgc291cmNlICsgJ1xcbn1cXG4nO1xuICB9XG4gIC8vIENsZWFudXAgY29kZSBieSBzdHJpcHBpbmcgZW1wdHkgc3RyaW5ncy5cbiAgc291cmNlID0gKGlzRXZhbHVhdGluZyA/IHNvdXJjZS5yZXBsYWNlKHJlRW1wdHlTdHJpbmdMZWFkaW5nLCAnJykgOiBzb3VyY2UpXG4gICAgLnJlcGxhY2UocmVFbXB0eVN0cmluZ01pZGRsZSwgJyQxJylcbiAgICAucmVwbGFjZShyZUVtcHR5U3RyaW5nVHJhaWxpbmcsICckMTsnKTtcblxuICAvLyBGcmFtZSBjb2RlIGFzIHRoZSBmdW5jdGlvbiBib2R5LlxuICBzb3VyY2UgPSAnZnVuY3Rpb24oJyArICh2YXJpYWJsZSB8fCAnb2JqJykgKyAnKSB7XFxuJyArXG4gICAgKHZhcmlhYmxlXG4gICAgICA/ICcnXG4gICAgICA6ICdvYmogfHwgKG9iaiA9IHt9KTtcXG4nXG4gICAgKSArXG4gICAgXCJ2YXIgX190LCBfX3AgPSAnJ1wiICtcbiAgICAoaXNFc2NhcGluZ1xuICAgICAgID8gJywgX19lID0gXy5lc2NhcGUnXG4gICAgICAgOiAnJ1xuICAgICkgK1xuICAgIChpc0V2YWx1YXRpbmdcbiAgICAgID8gJywgX19qID0gQXJyYXkucHJvdG90eXBlLmpvaW47XFxuJyArXG4gICAgICAgIFwiZnVuY3Rpb24gcHJpbnQoKSB7IF9fcCArPSBfX2ouY2FsbChhcmd1bWVudHMsICcnKSB9XFxuXCJcbiAgICAgIDogJztcXG4nXG4gICAgKSArXG4gICAgc291cmNlICtcbiAgICAncmV0dXJuIF9fcFxcbn0nO1xuXG4gIHZhciByZXN1bHQgPSBhdHRlbXB0KGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBGdW5jdGlvbihpbXBvcnRzS2V5cywgc291cmNlVVJMICsgJ3JldHVybiAnICsgc291cmNlKVxuICAgICAgLmFwcGx5KHVuZGVmaW5lZCwgaW1wb3J0c1ZhbHVlcyk7XG4gIH0pO1xuXG4gIC8vIFByb3ZpZGUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uJ3Mgc291cmNlIGJ5IGl0cyBgdG9TdHJpbmdgIG1ldGhvZCBvclxuICAvLyB0aGUgYHNvdXJjZWAgcHJvcGVydHkgYXMgYSBjb252ZW5pZW5jZSBmb3IgaW5saW5pbmcgY29tcGlsZWQgdGVtcGxhdGVzLlxuICByZXN1bHQuc291cmNlID0gc291cmNlO1xuICBpZiAoaXNFcnJvcihyZXN1bHQpKSB7XG4gICAgdGhyb3cgcmVzdWx0O1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRlbXBsYXRlO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy90ZW1wbGF0ZS5qcyIsImltcG9ydCBjb3B5T2JqZWN0IGZyb20gJy4vX2NvcHlPYmplY3QuanMnO1xuaW1wb3J0IGNyZWF0ZUFzc2lnbmVyIGZyb20gJy4vX2NyZWF0ZUFzc2lnbmVyLmpzJztcbmltcG9ydCBrZXlzSW4gZnJvbSAnLi9rZXlzSW4uanMnO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduSW5gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgXG4gKiB3aGljaCBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIGFzc2lnbmVkIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnNcbiAqIGB1bmRlZmluZWRgLCBhc3NpZ25tZW50IGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgXG4gKiBpcyBpbnZva2VkIHdpdGggZml2ZSBhcmd1bWVudHM6IChvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UpLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBhbGlhcyBleHRlbmRXaXRoXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0gey4uLk9iamVjdH0gc291cmNlcyBUaGUgc291cmNlIG9iamVjdHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQHNlZSBfLmFzc2lnbldpdGhcbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAqICAgcmV0dXJuIF8uaXNVbmRlZmluZWQob2JqVmFsdWUpID8gc3JjVmFsdWUgOiBvYmpWYWx1ZTtcbiAqIH1cbiAqXG4gKiB2YXIgZGVmYXVsdHMgPSBfLnBhcnRpYWxSaWdodChfLmFzc2lnbkluV2l0aCwgY3VzdG9taXplcik7XG4gKlxuICogZGVmYXVsdHMoeyAnYSc6IDEgfSwgeyAnYic6IDIgfSwgeyAnYSc6IDMgfSk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAqL1xudmFyIGFzc2lnbkluV2l0aCA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICBjb3B5T2JqZWN0KHNvdXJjZSwga2V5c0luKHNvdXJjZSksIG9iamVjdCwgY3VzdG9taXplcik7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgYXNzaWduSW5XaXRoO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9hc3NpZ25JbldpdGguanMiLCJpbXBvcnQgYXNzaWduVmFsdWUgZnJvbSAnLi9fYXNzaWduVmFsdWUuanMnO1xuaW1wb3J0IGJhc2VBc3NpZ25WYWx1ZSBmcm9tICcuL19iYXNlQXNzaWduVmFsdWUuanMnO1xuXG4vKipcbiAqIENvcGllcyBwcm9wZXJ0aWVzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMgdG8gY29weS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvcGllZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb3B5T2JqZWN0KHNvdXJjZSwgcHJvcHMsIG9iamVjdCwgY3VzdG9taXplcikge1xuICB2YXIgaXNOZXcgPSAhb2JqZWN0O1xuICBvYmplY3QgfHwgKG9iamVjdCA9IHt9KTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSBwcm9wc1tpbmRleF07XG5cbiAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICA/IGN1c3RvbWl6ZXIob2JqZWN0W2tleV0sIHNvdXJjZVtrZXldLCBrZXksIG9iamVjdCwgc291cmNlKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbmV3VmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gICAgaWYgKGlzTmV3KSB7XG4gICAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY29weU9iamVjdDtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2NvcHlPYmplY3QuanMiLCJpbXBvcnQgYmFzZUFzc2lnblZhbHVlIGZyb20gJy4vX2Jhc2VBc3NpZ25WYWx1ZS5qcyc7XG5pbXBvcnQgZXEgZnJvbSAnLi9lcS5qcyc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQXNzaWducyBgdmFsdWVgIHRvIGBrZXlgIG9mIGBvYmplY3RgIGlmIHRoZSBleGlzdGluZyB2YWx1ZSBpcyBub3QgZXF1aXZhbGVudFxuICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV07XG4gIGlmICghKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGVxKG9ialZhbHVlLCB2YWx1ZSkpIHx8XG4gICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFzc2lnblZhbHVlO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXNzaWduVmFsdWUuanMiLCJpbXBvcnQgYmFzZUlzTmF0aXZlIGZyb20gJy4vX2Jhc2VJc05hdGl2ZS5qcyc7XG5pbXBvcnQgZ2V0VmFsdWUgZnJvbSAnLi9fZ2V0VmFsdWUuanMnO1xuXG4vKipcbiAqIEdldHMgdGhlIG5hdGl2ZSBmdW5jdGlvbiBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICByZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBnZXROYXRpdmU7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19nZXROYXRpdmUuanMiLCJpbXBvcnQgaXNGdW5jdGlvbiBmcm9tICcuL2lzRnVuY3Rpb24uanMnO1xuaW1wb3J0IGlzTWFza2VkIGZyb20gJy4vX2lzTWFza2VkLmpzJztcbmltcG9ydCBpc09iamVjdCBmcm9tICcuL2lzT2JqZWN0LmpzJztcbmltcG9ydCB0b1NvdXJjZSBmcm9tICcuL190b1NvdXJjZS5qcyc7XG5cbi8qKlxuICogVXNlZCB0byBtYXRjaCBgUmVnRXhwYFxuICogW3N5bnRheCBjaGFyYWN0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wYXR0ZXJucykuXG4gKi9cbnZhciByZVJlZ0V4cENoYXIgPSAvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2c7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBob3N0IGNvbnN0cnVjdG9ycyAoU2FmYXJpKS4gKi9cbnZhciByZUlzSG9zdEN0b3IgPSAvXlxcW29iamVjdCAuKz9Db25zdHJ1Y3RvclxcXSQvO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGlmIGEgbWV0aG9kIGlzIG5hdGl2ZS4gKi9cbnZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gIGZ1bmNUb1N0cmluZy5jYWxsKGhhc093blByb3BlcnR5KS5yZXBsYWNlKHJlUmVnRXhwQ2hhciwgJ1xcXFwkJicpXG4gIC5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJ1xuKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hdGl2ZWAgd2l0aG91dCBiYWQgc2hpbSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNOYXRpdmUodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgaXNNYXNrZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBwYXR0ZXJuID0gaXNGdW5jdGlvbih2YWx1ZSkgPyByZUlzTmF0aXZlIDogcmVJc0hvc3RDdG9yO1xuICByZXR1cm4gcGF0dGVybi50ZXN0KHRvU291cmNlKHZhbHVlKSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VJc05hdGl2ZTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VJc05hdGl2ZS5qcyIsImltcG9ydCBTeW1ib2wgZnJvbSAnLi9fU3ltYm9sLmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlmIChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBnZXRSYXdUYWc7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19nZXRSYXdUYWcuanMiLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIHVzaW5nIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgb2JqZWN0VG9TdHJpbmc7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19vYmplY3RUb1N0cmluZy5qcyIsImltcG9ydCBjb3JlSnNEYXRhIGZyb20gJy4vX2NvcmVKc0RhdGEuanMnO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWV0aG9kcyBtYXNxdWVyYWRpbmcgYXMgbmF0aXZlLiAqL1xudmFyIG1hc2tTcmNLZXkgPSAoZnVuY3Rpb24oKSB7XG4gIHZhciB1aWQgPSAvW14uXSskLy5leGVjKGNvcmVKc0RhdGEgJiYgY29yZUpzRGF0YS5rZXlzICYmIGNvcmVKc0RhdGEua2V5cy5JRV9QUk9UTyB8fCAnJyk7XG4gIHJldHVybiB1aWQgPyAoJ1N5bWJvbChzcmMpXzEuJyArIHVpZCkgOiAnJztcbn0oKSk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgaXRzIHNvdXJjZSBtYXNrZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNNYXNrZWQoZnVuYykge1xuICByZXR1cm4gISFtYXNrU3JjS2V5ICYmIChtYXNrU3JjS2V5IGluIGZ1bmMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc01hc2tlZDtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2lzTWFza2VkLmpzIiwiaW1wb3J0IHJvb3QgZnJvbSAnLi9fcm9vdC5qcyc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvdmVycmVhY2hpbmcgY29yZS1qcyBzaGltcy4gKi9cbnZhciBjb3JlSnNEYXRhID0gcm9vdFsnX19jb3JlLWpzX3NoYXJlZF9fJ107XG5cbmV4cG9ydCBkZWZhdWx0IGNvcmVKc0RhdGE7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19jb3JlSnNEYXRhLmpzIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgZnVuY2AgdG8gaXRzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc291cmNlIGNvZGUuXG4gKi9cbmZ1bmN0aW9uIHRvU291cmNlKGZ1bmMpIHtcbiAgaWYgKGZ1bmMgIT0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZnVuY1RvU3RyaW5nLmNhbGwoZnVuYyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIChmdW5jICsgJycpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5leHBvcnQgZGVmYXVsdCB0b1NvdXJjZTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3RvU291cmNlLmpzIiwiLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gZ2V0VmFsdWUob2JqZWN0LCBrZXkpIHtcbiAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGdldFZhbHVlO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0VmFsdWUuanMiLCJpbXBvcnQgYmFzZVJlc3QgZnJvbSAnLi9fYmFzZVJlc3QuanMnO1xuaW1wb3J0IGlzSXRlcmF0ZWVDYWxsIGZyb20gJy4vX2lzSXRlcmF0ZWVDYWxsLmpzJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5hc3NpZ25gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBhc3NpZ25lciBUaGUgZnVuY3Rpb24gdG8gYXNzaWduIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFzc2lnbmVyIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVBc3NpZ25lcihhc3NpZ25lcikge1xuICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2VzKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IHNvdXJjZXMubGVuZ3RoLFxuICAgICAgICBjdXN0b21pemVyID0gbGVuZ3RoID4gMSA/IHNvdXJjZXNbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQsXG4gICAgICAgIGd1YXJkID0gbGVuZ3RoID4gMiA/IHNvdXJjZXNbMl0gOiB1bmRlZmluZWQ7XG5cbiAgICBjdXN0b21pemVyID0gKGFzc2lnbmVyLmxlbmd0aCA+IDMgJiYgdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJylcbiAgICAgID8gKGxlbmd0aC0tLCBjdXN0b21pemVyKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoc291cmNlc1swXSwgc291cmNlc1sxXSwgZ3VhcmQpKSB7XG4gICAgICBjdXN0b21pemVyID0gbGVuZ3RoIDwgMyA/IHVuZGVmaW5lZCA6IGN1c3RvbWl6ZXI7XG4gICAgICBsZW5ndGggPSAxO1xuICAgIH1cbiAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIHNvdXJjZSA9IHNvdXJjZXNbaW5kZXhdO1xuICAgICAgaWYgKHNvdXJjZSkge1xuICAgICAgICBhc3NpZ25lcihvYmplY3QsIHNvdXJjZSwgaW5kZXgsIGN1c3RvbWl6ZXIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0O1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQXNzaWduZXI7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19jcmVhdGVBc3NpZ25lci5qcyIsImltcG9ydCBhcHBseSBmcm9tICcuL19hcHBseS5qcyc7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCB0cmFuc2Zvcm1zIHRoZSByZXN0IGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSByZXN0IGFycmF5IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyUmVzdChmdW5jLCBzdGFydCwgdHJhbnNmb3JtKSB7XG4gIHN0YXJ0ID0gbmF0aXZlTWF4KHN0YXJ0ID09PSB1bmRlZmluZWQgPyAoZnVuYy5sZW5ndGggLSAxKSA6IHN0YXJ0LCAwKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgoYXJncy5sZW5ndGggLSBzdGFydCwgMCksXG4gICAgICAgIGFycmF5ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhcnJheVtpbmRleF0gPSBhcmdzW3N0YXJ0ICsgaW5kZXhdO1xuICAgIH1cbiAgICBpbmRleCA9IC0xO1xuICAgIHZhciBvdGhlckFyZ3MgPSBBcnJheShzdGFydCArIDEpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgc3RhcnQpIHtcbiAgICAgIG90aGVyQXJnc1tpbmRleF0gPSBhcmdzW2luZGV4XTtcbiAgICB9XG4gICAgb3RoZXJBcmdzW3N0YXJ0XSA9IHRyYW5zZm9ybShhcnJheSk7XG4gICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIG90aGVyQXJncyk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IG92ZXJSZXN0O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fb3ZlclJlc3QuanMiLCJpbXBvcnQgYmFzZVNldFRvU3RyaW5nIGZyb20gJy4vX2Jhc2VTZXRUb1N0cmluZy5qcyc7XG5pbXBvcnQgc2hvcnRPdXQgZnJvbSAnLi9fc2hvcnRPdXQuanMnO1xuXG4vKipcbiAqIFNldHMgdGhlIGB0b1N0cmluZ2AgbWV0aG9kIG9mIGBmdW5jYCB0byByZXR1cm4gYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgc2V0VG9TdHJpbmcgPSBzaG9ydE91dChiYXNlU2V0VG9TdHJpbmcpO1xuXG5leHBvcnQgZGVmYXVsdCBzZXRUb1N0cmluZztcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3NldFRvU3RyaW5nLmpzIiwiaW1wb3J0IGNvbnN0YW50IGZyb20gJy4vY29uc3RhbnQuanMnO1xuaW1wb3J0IGRlZmluZVByb3BlcnR5IGZyb20gJy4vX2RlZmluZVByb3BlcnR5LmpzJztcbmltcG9ydCBpZGVudGl0eSBmcm9tICcuL2lkZW50aXR5LmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0VG9TdHJpbmdgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgYmFzZVNldFRvU3RyaW5nID0gIWRlZmluZVByb3BlcnR5ID8gaWRlbnRpdHkgOiBmdW5jdGlvbihmdW5jLCBzdHJpbmcpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmMsICd0b1N0cmluZycsIHtcbiAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAnZW51bWVyYWJsZSc6IGZhbHNlLFxuICAgICd2YWx1ZSc6IGNvbnN0YW50KHN0cmluZyksXG4gICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VTZXRUb1N0cmluZztcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VTZXRUb1N0cmluZy5qcyIsIi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBgdmFsdWVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gZnJvbSB0aGUgbmV3IGZ1bmN0aW9uLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29uc3RhbnQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLmNvbnN0YW50KHsgJ2EnOiAxIH0pKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAqIC8vID0+IFt7ICdhJzogMSB9LCB7ICdhJzogMSB9XVxuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb25zdGFudDtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvY29uc3RhbnQuanMiLCIvKiogVXNlZCB0byBkZXRlY3QgaG90IGZ1bmN0aW9ucyBieSBudW1iZXIgb2YgY2FsbHMgd2l0aGluIGEgc3BhbiBvZiBtaWxsaXNlY29uZHMuICovXG52YXIgSE9UX0NPVU5UID0gODAwLFxuICAgIEhPVF9TUEFOID0gMTY7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVOb3cgPSBEYXRlLm5vdztcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCdsbCBzaG9ydCBvdXQgYW5kIGludm9rZSBgaWRlbnRpdHlgIGluc3RlYWRcbiAqIG9mIGBmdW5jYCB3aGVuIGl0J3MgY2FsbGVkIGBIT1RfQ09VTlRgIG9yIG1vcmUgdGltZXMgaW4gYEhPVF9TUEFOYFxuICogbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNob3J0YWJsZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gc2hvcnRPdXQoZnVuYykge1xuICB2YXIgY291bnQgPSAwLFxuICAgICAgbGFzdENhbGxlZCA9IDA7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzdGFtcCA9IG5hdGl2ZU5vdygpLFxuICAgICAgICByZW1haW5pbmcgPSBIT1RfU1BBTiAtIChzdGFtcCAtIGxhc3RDYWxsZWQpO1xuXG4gICAgbGFzdENhbGxlZCA9IHN0YW1wO1xuICAgIGlmIChyZW1haW5pbmcgPiAwKSB7XG4gICAgICBpZiAoKytjb3VudCA+PSBIT1RfQ09VTlQpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1swXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY291bnQgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gZnVuYy5hcHBseSh1bmRlZmluZWQsIGFyZ3VtZW50cyk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHNob3J0T3V0O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fc2hvcnRPdXQuanMiLCJpbXBvcnQgYXJyYXlMaWtlS2V5cyBmcm9tICcuL19hcnJheUxpa2VLZXlzLmpzJztcbmltcG9ydCBiYXNlS2V5c0luIGZyb20gJy4vX2Jhc2VLZXlzSW4uanMnO1xuaW1wb3J0IGlzQXJyYXlMaWtlIGZyb20gJy4vaXNBcnJheUxpa2UuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzSW4obmV3IEZvbyk7XG4gKiAvLyA9PiBbJ2EnLCAnYicsICdjJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24ga2V5c0luKG9iamVjdCkge1xuICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0LCB0cnVlKSA6IGJhc2VLZXlzSW4ob2JqZWN0KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQga2V5c0luO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9rZXlzSW4uanMiLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRpbWVzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHNcbiAqIG9yIG1heCBhcnJheSBsZW5ndGggY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIGludm9rZSBgaXRlcmF0ZWVgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRpbWVzKG4sIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobik7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGluZGV4KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlVGltZXM7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlVGltZXMuanMiLCJpbXBvcnQgYmFzZUlzQXJndW1lbnRzIGZyb20gJy4vX2Jhc2VJc0FyZ3VtZW50cy5qcyc7XG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gJy4vaXNPYmplY3RMaWtlLmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJndW1lbnRzID0gYmFzZUlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID8gYmFzZUlzQXJndW1lbnRzIDogZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpICYmXG4gICAgIXByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodmFsdWUsICdjYWxsZWUnKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGlzQXJndW1lbnRzO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0FyZ3VtZW50cy5qcyIsImltcG9ydCBiYXNlR2V0VGFnIGZyb20gJy4vX2Jhc2VHZXRUYWcuanMnO1xuaW1wb3J0IGlzT2JqZWN0TGlrZSBmcm9tICcuL2lzT2JqZWN0TGlrZS5qcyc7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcmd1bWVudHNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqL1xuZnVuY3Rpb24gYmFzZUlzQXJndW1lbnRzKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFyZ3NUYWc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VJc0FyZ3VtZW50cztcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VJc0FyZ3VtZW50cy5qcyIsImltcG9ydCByb290IGZyb20gJy4vX3Jvb3QuanMnO1xuaW1wb3J0IHN0dWJGYWxzZSBmcm9tICcuL3N0dWJGYWxzZS5qcyc7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlSXNCdWZmZXIgPSBCdWZmZXIgPyBCdWZmZXIuaXNCdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgQnVmZmVyKDIpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBVaW50OEFycmF5KDIpKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0J1ZmZlciA9IG5hdGl2ZUlzQnVmZmVyIHx8IHN0dWJGYWxzZTtcblxuZXhwb3J0IGRlZmF1bHQgaXNCdWZmZXI7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzQnVmZmVyLmpzIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGBmYWxzZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEzLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRpbWVzKDIsIF8uc3R1YkZhbHNlKTtcbiAqIC8vID0+IFtmYWxzZSwgZmFsc2VdXG4gKi9cbmZ1bmN0aW9uIHN0dWJGYWxzZSgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzdHViRmFsc2U7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL3N0dWJGYWxzZS5qcyIsImltcG9ydCBiYXNlSXNUeXBlZEFycmF5IGZyb20gJy4vX2Jhc2VJc1R5cGVkQXJyYXkuanMnO1xuaW1wb3J0IGJhc2VVbmFyeSBmcm9tICcuL19iYXNlVW5hcnkuanMnO1xuaW1wb3J0IG5vZGVVdGlsIGZyb20gJy4vX25vZGVVdGlsLmpzJztcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNUeXBlZEFycmF5ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNUeXBlZEFycmF5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNUeXBlZEFycmF5ID0gbm9kZUlzVHlwZWRBcnJheSA/IGJhc2VVbmFyeShub2RlSXNUeXBlZEFycmF5KSA6IGJhc2VJc1R5cGVkQXJyYXk7XG5cbmV4cG9ydCBkZWZhdWx0IGlzVHlwZWRBcnJheTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNUeXBlZEFycmF5LmpzIiwiaW1wb3J0IGJhc2VHZXRUYWcgZnJvbSAnLi9fYmFzZUdldFRhZy5qcyc7XG5pbXBvcnQgaXNMZW5ndGggZnJvbSAnLi9pc0xlbmd0aC5qcyc7XG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gJy4vaXNPYmplY3RMaWtlLmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xudmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG50eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbnR5cGVkQXJyYXlUYWdzW2FyZ3NUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlUYWddID1cbnR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddID1cbnR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID1cbnR5cGVkQXJyYXlUYWdzW2Vycm9yVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Z1bmNUYWddID1cbnR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPSB0eXBlZEFycmF5VGFnc1tudW1iZXJUYWddID1cbnR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID1cbnR5cGVkQXJyYXlUYWdzW3NldFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzdHJpbmdUYWddID1cbnR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiZcbiAgICBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3NbYmFzZUdldFRhZyh2YWx1ZSldO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlSXNUeXBlZEFycmF5O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUlzVHlwZWRBcnJheS5qcyIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5hcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3Igc3RvcmluZyBtZXRhZGF0YS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbmFyeShmdW5jKSB7XG4gIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZVVuYXJ5O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVVuYXJ5LmpzIiwiaW1wb3J0IGZyZWVHbG9iYWwgZnJvbSAnLi9fZnJlZUdsb2JhbC5qcyc7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBwcm9jZXNzYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZVByb2Nlc3MgPSBtb2R1bGVFeHBvcnRzICYmIGZyZWVHbG9iYWwucHJvY2VzcztcblxuLyoqIFVzZWQgdG8gYWNjZXNzIGZhc3RlciBOb2RlLmpzIGhlbHBlcnMuICovXG52YXIgbm9kZVV0aWwgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgLy8gVXNlIGB1dGlsLnR5cGVzYCBmb3IgTm9kZS5qcyAxMCsuXG4gICAgdmFyIHR5cGVzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlKCd1dGlsJykudHlwZXM7XG5cbiAgICBpZiAodHlwZXMpIHtcbiAgICAgIHJldHVybiB0eXBlcztcbiAgICB9XG5cbiAgICAvLyBMZWdhY3kgYHByb2Nlc3MuYmluZGluZygndXRpbCcpYCBmb3IgTm9kZS5qcyA8IDEwLlxuICAgIHJldHVybiBmcmVlUHJvY2VzcyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKTtcbiAgfSBjYXRjaCAoZSkge31cbn0oKSk7XG5cbmV4cG9ydCBkZWZhdWx0IG5vZGVVdGlsO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbm9kZVV0aWwuanMiLCJpbXBvcnQgaXNPYmplY3QgZnJvbSAnLi9pc09iamVjdC5qcyc7XG5pbXBvcnQgaXNQcm90b3R5cGUgZnJvbSAnLi9faXNQcm90b3R5cGUuanMnO1xuaW1wb3J0IG5hdGl2ZUtleXNJbiBmcm9tICcuL19uYXRpdmVLZXlzSW4uanMnO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNJbmAgd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBiYXNlS2V5c0luKG9iamVjdCkge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5c0luKG9iamVjdCk7XG4gIH1cbiAgdmFyIGlzUHJvdG8gPSBpc1Byb3RvdHlwZShvYmplY3QpLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgIGlmICghKGtleSA9PSAnY29uc3RydWN0b3InICYmIChpc1Byb3RvIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlS2V5c0luO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUtleXNJbi5qcyIsIi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlXG4gKiBbYE9iamVjdC5rZXlzYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gKiBleGNlcHQgdGhhdCBpdCBpbmNsdWRlcyBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBuYXRpdmVLZXlzSW4ob2JqZWN0KSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgaWYgKG9iamVjdCAhPSBudWxsKSB7XG4gICAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBuYXRpdmVLZXlzSW47XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19uYXRpdmVLZXlzSW4uanMiLCJpbXBvcnQgYXBwbHkgZnJvbSAnLi9fYXBwbHkuanMnO1xuaW1wb3J0IGJhc2VSZXN0IGZyb20gJy4vX2Jhc2VSZXN0LmpzJztcbmltcG9ydCBpc0Vycm9yIGZyb20gJy4vaXNFcnJvci5qcyc7XG5cbi8qKlxuICogQXR0ZW1wdHMgdG8gaW52b2tlIGBmdW5jYCwgcmV0dXJuaW5nIGVpdGhlciB0aGUgcmVzdWx0IG9yIHRoZSBjYXVnaHQgZXJyb3JcbiAqIG9iamVjdC4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZSBwcm92aWRlZCB0byBgZnVuY2Agd2hlbiBpdCdzIGludm9rZWQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGF0dGVtcHQuXG4gKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBgZnVuY2AgcmVzdWx0IG9yIGVycm9yIG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogLy8gQXZvaWQgdGhyb3dpbmcgZXJyb3JzIGZvciBpbnZhbGlkIHNlbGVjdG9ycy5cbiAqIHZhciBlbGVtZW50cyA9IF8uYXR0ZW1wdChmdW5jdGlvbihzZWxlY3Rvcikge1xuICogICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7XG4gKiB9LCAnPl8+Jyk7XG4gKlxuICogaWYgKF8uaXNFcnJvcihlbGVtZW50cykpIHtcbiAqICAgZWxlbWVudHMgPSBbXTtcbiAqIH1cbiAqL1xudmFyIGF0dGVtcHQgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCBhcmdzKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHVuZGVmaW5lZCwgYXJncyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gaXNFcnJvcihlKSA/IGUgOiBuZXcgRXJyb3IoZSk7XG4gIH1cbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBhdHRlbXB0O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9hdHRlbXB0LmpzIiwiaW1wb3J0IGJhc2VHZXRUYWcgZnJvbSAnLi9fYmFzZUdldFRhZy5qcyc7XG5pbXBvcnQgZ2V0UHJvdG90eXBlIGZyb20gJy4vX2dldFByb3RvdHlwZS5qcyc7XG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gJy4vaXNPYmplY3RMaWtlLmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xudmFyIG9iamVjdEN0b3JTdHJpbmcgPSBmdW5jVG9TdHJpbmcuY2FsbChPYmplY3QpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGF0IGlzLCBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGVcbiAqIGBPYmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJvdG90eXBlXV1gIG9mIGBudWxsYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuOC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiB9XG4gKlxuICogXy5pc1BsYWluT2JqZWN0KG5ldyBGb28pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KHsgJ3gnOiAwLCAneSc6IDAgfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBiYXNlR2V0VGFnKHZhbHVlKSAhPSBvYmplY3RUYWcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHByb3RvID0gZ2V0UHJvdG90eXBlKHZhbHVlKTtcbiAgaWYgKHByb3RvID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIEN0b3IgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCAnY29uc3RydWN0b3InKSAmJiBwcm90by5jb25zdHJ1Y3RvcjtcbiAgcmV0dXJuIHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiZcbiAgICBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1BsYWluT2JqZWN0O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc1BsYWluT2JqZWN0LmpzIiwiaW1wb3J0IG92ZXJBcmcgZnJvbSAnLi9fb3ZlckFyZy5qcyc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIGdldFByb3RvdHlwZSA9IG92ZXJBcmcoT2JqZWN0LmdldFByb3RvdHlwZU9mLCBPYmplY3QpO1xuXG5leHBvcnQgZGVmYXVsdCBnZXRQcm90b3R5cGU7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19nZXRQcm90b3R5cGUuanMiLCJpbXBvcnQgYXJyYXlNYXAgZnJvbSAnLi9fYXJyYXlNYXAuanMnO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnZhbHVlc2AgYW5kIGBfLnZhbHVlc0luYCB3aGljaCBjcmVhdGVzIGFuXG4gKiBhcnJheSBvZiBgb2JqZWN0YCBwcm9wZXJ0eSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvcGVydHkgbmFtZXNcbiAqIG9mIGBwcm9wc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBnZXQgdmFsdWVzIGZvci5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gYmFzZVZhbHVlcyhvYmplY3QsIHByb3BzKSB7XG4gIHJldHVybiBhcnJheU1hcChwcm9wcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgcmV0dXJuIG9iamVjdFtrZXldO1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZVZhbHVlcztcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VWYWx1ZXMuanMiLCJpbXBvcnQgZXEgZnJvbSAnLi9lcS5qcyc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVXNlZCBieSBgXy5kZWZhdWx0c2AgdG8gY3VzdG9taXplIGl0cyBgXy5hc3NpZ25JbmAgdXNlIHRvIGFzc2lnbiBwcm9wZXJ0aWVzXG4gKiBvZiBzb3VyY2Ugb2JqZWN0cyB0byB0aGUgZGVzdGluYXRpb24gb2JqZWN0IGZvciBhbGwgZGVzdGluYXRpb24gcHJvcGVydGllc1xuICogdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IG9ialZhbHVlIFRoZSBkZXN0aW5hdGlvbiB2YWx1ZS5cbiAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHNvdXJjZSB2YWx1ZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgcGFyZW50IG9iamVjdCBvZiBgb2JqVmFsdWVgLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gY3VzdG9tRGVmYXVsdHNBc3NpZ25JbihvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gIGlmIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAoZXEob2JqVmFsdWUsIG9iamVjdFByb3RvW2tleV0pICYmICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpIHtcbiAgICByZXR1cm4gc3JjVmFsdWU7XG4gIH1cbiAgcmV0dXJuIG9ialZhbHVlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjdXN0b21EZWZhdWx0c0Fzc2lnbkluO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY3VzdG9tRGVmYXVsdHNBc3NpZ25Jbi5qcyIsIi8qKiBVc2VkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIGZvciBpbmNsdXNpb24gaW4gY29tcGlsZWQgc3RyaW5nIGxpdGVyYWxzLiAqL1xudmFyIHN0cmluZ0VzY2FwZXMgPSB7XG4gICdcXFxcJzogJ1xcXFwnLFxuICBcIidcIjogXCInXCIsXG4gICdcXG4nOiAnbicsXG4gICdcXHInOiAncicsXG4gICdcXHUyMDI4JzogJ3UyMDI4JyxcbiAgJ1xcdTIwMjknOiAndTIwMjknXG59O1xuXG4vKipcbiAqIFVzZWQgYnkgYF8udGVtcGxhdGVgIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIGZvciBpbmNsdXNpb24gaW4gY29tcGlsZWQgc3RyaW5nIGxpdGVyYWxzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gY2hyIFRoZSBtYXRjaGVkIGNoYXJhY3RlciB0byBlc2NhcGUuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIGNoYXJhY3Rlci5cbiAqL1xuZnVuY3Rpb24gZXNjYXBlU3RyaW5nQ2hhcihjaHIpIHtcbiAgcmV0dXJuICdcXFxcJyArIHN0cmluZ0VzY2FwZXNbY2hyXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZXNjYXBlU3RyaW5nQ2hhcjtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2VzY2FwZVN0cmluZ0NoYXIuanMiLCJpbXBvcnQgYXJyYXlMaWtlS2V5cyBmcm9tICcuL19hcnJheUxpa2VLZXlzLmpzJztcbmltcG9ydCBiYXNlS2V5cyBmcm9tICcuL19iYXNlS2V5cy5qcyc7XG5pbXBvcnQgaXNBcnJheUxpa2UgZnJvbSAnLi9pc0FycmF5TGlrZS5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuIFNlZSB0aGVcbiAqIFtFUyBzcGVjXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8ua2V5cygnaGknKTtcbiAqIC8vID0+IFsnMCcsICcxJ11cbiAqL1xuZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCkgOiBiYXNlS2V5cyhvYmplY3QpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBrZXlzO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9rZXlzLmpzIiwiaW1wb3J0IGlzUHJvdG90eXBlIGZyb20gJy4vX2lzUHJvdG90eXBlLmpzJztcbmltcG9ydCBuYXRpdmVLZXlzIGZyb20gJy4vX25hdGl2ZUtleXMuanMnO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNgIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXMob2JqZWN0KSB7XG4gIGlmICghaXNQcm90b3R5cGUob2JqZWN0KSkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzKG9iamVjdCk7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYga2V5ICE9ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VLZXlzO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUtleXMuanMiLCJpbXBvcnQgb3ZlckFyZyBmcm9tICcuL19vdmVyQXJnLmpzJztcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUtleXMgPSBvdmVyQXJnKE9iamVjdC5rZXlzLCBPYmplY3QpO1xuXG5leHBvcnQgZGVmYXVsdCBuYXRpdmVLZXlzO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbmF0aXZlS2V5cy5qcyIsImltcG9ydCBlc2NhcGUgZnJvbSAnLi9lc2NhcGUuanMnO1xuaW1wb3J0IHJlRXNjYXBlIGZyb20gJy4vX3JlRXNjYXBlLmpzJztcbmltcG9ydCByZUV2YWx1YXRlIGZyb20gJy4vX3JlRXZhbHVhdGUuanMnO1xuaW1wb3J0IHJlSW50ZXJwb2xhdGUgZnJvbSAnLi9fcmVJbnRlcnBvbGF0ZS5qcyc7XG5cbi8qKlxuICogQnkgZGVmYXVsdCwgdGhlIHRlbXBsYXRlIGRlbGltaXRlcnMgdXNlZCBieSBsb2Rhc2ggYXJlIGxpa2UgdGhvc2UgaW5cbiAqIGVtYmVkZGVkIFJ1YnkgKEVSQikgYXMgd2VsbCBhcyBFUzIwMTUgdGVtcGxhdGUgc3RyaW5ncy4gQ2hhbmdlIHRoZVxuICogZm9sbG93aW5nIHRlbXBsYXRlIHNldHRpbmdzIHRvIHVzZSBhbHRlcm5hdGl2ZSBkZWxpbWl0ZXJzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAdHlwZSB7T2JqZWN0fVxuICovXG52YXIgdGVtcGxhdGVTZXR0aW5ncyA9IHtcblxuICAvKipcbiAgICogVXNlZCB0byBkZXRlY3QgYGRhdGFgIHByb3BlcnR5IHZhbHVlcyB0byBiZSBIVE1MLWVzY2FwZWQuXG4gICAqXG4gICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICogQHR5cGUge1JlZ0V4cH1cbiAgICovXG4gICdlc2NhcGUnOiByZUVzY2FwZSxcblxuICAvKipcbiAgICogVXNlZCB0byBkZXRlY3QgY29kZSB0byBiZSBldmFsdWF0ZWQuXG4gICAqXG4gICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICogQHR5cGUge1JlZ0V4cH1cbiAgICovXG4gICdldmFsdWF0ZSc6IHJlRXZhbHVhdGUsXG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gZGV0ZWN0IGBkYXRhYCBwcm9wZXJ0eSB2YWx1ZXMgdG8gaW5qZWN0LlxuICAgKlxuICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAqIEB0eXBlIHtSZWdFeHB9XG4gICAqL1xuICAnaW50ZXJwb2xhdGUnOiByZUludGVycG9sYXRlLFxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHJlZmVyZW5jZSB0aGUgZGF0YSBvYmplY3QgaW4gdGhlIHRlbXBsYXRlIHRleHQuXG4gICAqXG4gICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gICd2YXJpYWJsZSc6ICcnLFxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGltcG9ydCB2YXJpYWJsZXMgaW50byB0aGUgY29tcGlsZWQgdGVtcGxhdGUuXG4gICAqXG4gICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gICdpbXBvcnRzJzoge1xuXG4gICAgLyoqXG4gICAgICogQSByZWZlcmVuY2UgdG8gdGhlIGBsb2Rhc2hgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5ncy5pbXBvcnRzXG4gICAgICogQHR5cGUge0Z1bmN0aW9ufVxuICAgICAqL1xuICAgICdfJzogeyAnZXNjYXBlJzogZXNjYXBlIH1cbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgdGVtcGxhdGVTZXR0aW5ncztcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvdGVtcGxhdGVTZXR0aW5ncy5qcyIsImltcG9ydCBlc2NhcGVIdG1sQ2hhciBmcm9tICcuL19lc2NhcGVIdG1sQ2hhci5qcyc7XG5pbXBvcnQgdG9TdHJpbmcgZnJvbSAnLi90b1N0cmluZy5qcyc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIEhUTUwgZW50aXRpZXMgYW5kIEhUTUwgY2hhcmFjdGVycy4gKi9cbnZhciByZVVuZXNjYXBlZEh0bWwgPSAvWyY8PlwiJ10vZyxcbiAgICByZUhhc1VuZXNjYXBlZEh0bWwgPSBSZWdFeHAocmVVbmVzY2FwZWRIdG1sLnNvdXJjZSk7XG5cbi8qKlxuICogQ29udmVydHMgdGhlIGNoYXJhY3RlcnMgXCImXCIsIFwiPFwiLCBcIj5cIiwgJ1wiJywgYW5kIFwiJ1wiIGluIGBzdHJpbmdgIHRvIHRoZWlyXG4gKiBjb3JyZXNwb25kaW5nIEhUTUwgZW50aXRpZXMuXG4gKlxuICogKipOb3RlOioqIE5vIG90aGVyIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQuIFRvIGVzY2FwZSBhZGRpdGlvbmFsXG4gKiBjaGFyYWN0ZXJzIHVzZSBhIHRoaXJkLXBhcnR5IGxpYnJhcnkgbGlrZSBbX2hlX10oaHR0cHM6Ly9tdGhzLmJlL2hlKS5cbiAqXG4gKiBUaG91Z2ggdGhlIFwiPlwiIGNoYXJhY3RlciBpcyBlc2NhcGVkIGZvciBzeW1tZXRyeSwgY2hhcmFjdGVycyBsaWtlXG4gKiBcIj5cIiBhbmQgXCIvXCIgZG9uJ3QgbmVlZCBlc2NhcGluZyBpbiBIVE1MIGFuZCBoYXZlIG5vIHNwZWNpYWwgbWVhbmluZ1xuICogdW5sZXNzIHRoZXkncmUgcGFydCBvZiBhIHRhZyBvciB1bnF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUuIFNlZVxuICogW01hdGhpYXMgQnluZW5zJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2FtYmlndW91cy1hbXBlcnNhbmRzKVxuICogKHVuZGVyIFwic2VtaS1yZWxhdGVkIGZ1biBmYWN0XCIpIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogV2hlbiB3b3JraW5nIHdpdGggSFRNTCB5b3Ugc2hvdWxkIGFsd2F5c1xuICogW3F1b3RlIGF0dHJpYnV0ZSB2YWx1ZXNdKGh0dHA6Ly93b25rby5jb20vcG9zdC9odG1sLWVzY2FwaW5nKSB0byByZWR1Y2VcbiAqIFhTUyB2ZWN0b3JzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBTdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGVzY2FwZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgc3RyaW5nLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmVzY2FwZSgnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnKTtcbiAqIC8vID0+ICdmcmVkLCBiYXJuZXksICZhbXA7IHBlYmJsZXMnXG4gKi9cbmZ1bmN0aW9uIGVzY2FwZShzdHJpbmcpIHtcbiAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgcmV0dXJuIChzdHJpbmcgJiYgcmVIYXNVbmVzY2FwZWRIdG1sLnRlc3Qoc3RyaW5nKSlcbiAgICA/IHN0cmluZy5yZXBsYWNlKHJlVW5lc2NhcGVkSHRtbCwgZXNjYXBlSHRtbENoYXIpXG4gICAgOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGVzY2FwZTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvZXNjYXBlLmpzIiwiaW1wb3J0IGJhc2VQcm9wZXJ0eU9mIGZyb20gJy4vX2Jhc2VQcm9wZXJ0eU9mLmpzJztcblxuLyoqIFVzZWQgdG8gbWFwIGNoYXJhY3RlcnMgdG8gSFRNTCBlbnRpdGllcy4gKi9cbnZhciBodG1sRXNjYXBlcyA9IHtcbiAgJyYnOiAnJmFtcDsnLFxuICAnPCc6ICcmbHQ7JyxcbiAgJz4nOiAnJmd0OycsXG4gICdcIic6ICcmcXVvdDsnLFxuICBcIidcIjogJyYjMzk7J1xufTtcblxuLyoqXG4gKiBVc2VkIGJ5IGBfLmVzY2FwZWAgdG8gY29udmVydCBjaGFyYWN0ZXJzIHRvIEhUTUwgZW50aXRpZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBjaHIgVGhlIG1hdGNoZWQgY2hhcmFjdGVyIHRvIGVzY2FwZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgY2hhcmFjdGVyLlxuICovXG52YXIgZXNjYXBlSHRtbENoYXIgPSBiYXNlUHJvcGVydHlPZihodG1sRXNjYXBlcyk7XG5cbmV4cG9ydCBkZWZhdWx0IGVzY2FwZUh0bWxDaGFyO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZXNjYXBlSHRtbENoYXIuanMiLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnByb3BlcnR5T2ZgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VQcm9wZXJ0eU9mKG9iamVjdCkge1xuICByZXR1cm4gZnVuY3Rpb24oa2V5KSB7XG4gICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VQcm9wZXJ0eU9mO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVByb3BlcnR5T2YuanMiLCJpbXBvcnQgU3ltYm9sIGZyb20gJy4vX1N5bWJvbC5qcyc7XG5pbXBvcnQgYXJyYXlNYXAgZnJvbSAnLi9fYXJyYXlNYXAuanMnO1xuaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pc0FycmF5LmpzJztcbmltcG9ydCBpc1N5bWJvbCBmcm9tICcuL2lzU3ltYm9sLmpzJztcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1N0cmluZ2Agd2hpY2ggZG9lc24ndCBjb252ZXJ0IG51bGxpc2hcbiAqIHZhbHVlcyB0byBlbXB0eSBzdHJpbmdzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5ncyB0byBhdm9pZCBhIHBlcmZvcm1hbmNlIGhpdCBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAvLyBSZWN1cnNpdmVseSBjb252ZXJ0IHZhbHVlcyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgYmFzZVRvU3RyaW5nKSArICcnO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gc3ltYm9sVG9TdHJpbmcgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZVRvU3RyaW5nO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVRvU3RyaW5nLmpzIiwiaW1wb3J0IGJhc2VHZXRUYWcgZnJvbSAnLi9fYmFzZUdldFRhZy5qcyc7XG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gJy4vaXNPYmplY3RMaWtlLmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3ltYm9sYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3ltYm9sLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTeW1ib2woU3ltYm9sLml0ZXJhdG9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3ltYm9sKCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N5bWJvbCcgfHxcbiAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzeW1ib2xUYWcpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1N5bWJvbDtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNTeW1ib2wuanMiLCIvKiogVXNlZCB0byBtYXRjaCB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLiAqL1xudmFyIHJlRXNjYXBlID0gLzwlLShbXFxzXFxTXSs/KSU+L2c7XG5cbmV4cG9ydCBkZWZhdWx0IHJlRXNjYXBlO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fcmVFc2NhcGUuanMiLCIvKiogVXNlZCB0byBtYXRjaCB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLiAqL1xudmFyIHJlRXZhbHVhdGUgPSAvPCUoW1xcc1xcU10rPyklPi9nO1xuXG5leHBvcnQgZGVmYXVsdCByZUV2YWx1YXRlO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fcmVFdmFsdWF0ZS5qcyIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBiYXNpcy1hZ2dyaWQtY29tcG9uZW50cyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmltcG9ydCBJbWFnZVJlbmRlcmVyIGZyb20gJy4vSW1hZ2VSZW5kZXJlcidcblxuZXhwb3J0IGRlZmF1bHQgSW1hZ2VSZW5kZXJlclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL0ltYWdlUmVuZGVyZXIvaW5kZXguanMiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmFzaXMtYWdncmlkLWNvbXBvbmVudHMgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgVGVtcGxhdGVSZW5kZXJlciBmcm9tICcuLi9UZW1wbGF0ZVJlbmRlcmVyJ1xuXG4vKipcbiAqIE51bWJlcnMgRWRpdG9yXG4gKlxuICogSGFuZGxlIG51bWJlciB2YWx1ZXMgRWRpdGluZ1xuICpcbiAqIHwgTmFtZSAgICAgICAgICAgICAgICAgIFx0fCBEZWZhdWx0ICAgICBcdHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx0fFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cdHw6LS0tLS0tLS0tLS0tLTp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8ICoqaW1hZ2VSZW5kZXJlcldpZHRoKiogICB8IDI4cHggICAgfCBpbWFnZSB3aWR0aFxuICogfCAqKmltYWdlUmVuZGVyZXJIZWlnaHQqKiAgIHwgMjhweCAgICB8IGltYWdlIGhlaWdodFxuICogfCAqKmltYWdlUmVuZGVyZXJMaXN0KiogICAgICAgfCB7fSAgXHR8IGEgbGlzdCBvZiB3aGljaCBtYXBzIGltYWdlcyB3aXRoIGNlbGwgdmFsdWVzIGFzIEpTT04gb3IgcGxhaW4gSlMgb2JqZWN0XG4gKlxuICogQGF1dGhvciBIeXlhbiBBYm8gRmFraGVyIDxoYWJvZmFraGVyQGJhc2lzLmNvbT5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vbG9kYXNoLmNvbS9kb2NzLzQuMTcuMTUjdGVtcGxhdGVcbiAqL1xuY2xhc3MgSW1hZ2VSZW5kZXJlciBleHRlbmRzIFRlbXBsYXRlUmVuZGVyZXIge1xuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIHJlZnJlc2gocGFyYW1zLCBpc0luaXQpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtcy52YWx1ZVxuICAgIGNvbnN0IGltYWdlV2lkdGggPSB0aGlzLmdldE9wdGlvbignaW1hZ2VSZW5kZXJlcldpZHRoJywgcGFyYW1zLCAnMjhweCcpXG4gICAgY29uc3QgaW1hZ2VIZWlnaHQgPSB0aGlzLmdldE9wdGlvbignaW1hZ2VSZW5kZXJlckhlaWdodCcsIHBhcmFtcywgJzI4cHgnKVxuICAgIGxldCBpbWFnZUxpc3QgPSB0aGlzLmdldE9wdGlvbignaW1hZ2VSZW5kZXJlckxpc3QnLCBwYXJhbXMpXG5cbiAgICB0cnkge1xuICAgICAgaW1hZ2VMaXN0ID0gSlNPTi5wYXJzZShpbWFnZUxpc3QpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaW1hZ2VMaXN0ID0gaW1hZ2VMaXN0IHx8IHt9XG4gICAgfVxuXG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zICovXG4gICAgaWYgKGltYWdlTGlzdCAmJiBpbWFnZUxpc3QuaGFzT3duUHJvcGVydHkodmFsdWUpKSB7XG4gICAgICBwYXJhbXMucmVuZGVyVGVtcGxhdGUgPSAvKmh0bWwqLyBgXG4gICAgICAgIDxpbWcgXG4gICAgICAgICAgc3JjPVwiJHtpbWFnZUxpc3RbcGFyYW1zLnZhbHVlXX1cIiBcbiAgICAgICAgICB3aWR0aD1cIiR7aW1hZ2VXaWR0aH1cIlxuICAgICAgICAgIGhlaWdodD1cIiR7aW1hZ2VIZWlnaHR9XCIgIFxuICAgICAgICAvPlxuICAgICAgYFxuICAgIH0gZWxzZSB7XG4gICAgICBwYXJhbXMucmVuZGVyVGVtcGxhdGUgPSB2YWx1ZVxuICAgIH1cblxuICAgIHJldHVybiBzdXBlci5yZWZyZXNoKHBhcmFtcywgaXNJbml0KVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEltYWdlUmVuZGVyZXJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9JbWFnZVJlbmRlcmVyL0ltYWdlUmVuZGVyZXIuanMiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmFzaXMtYWdncmlkLWNvbXBvbmVudHMgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgRGF0ZVRpbWVGaWx0ZXIgZnJvbSAnLi9EYXRlVGltZUZpbHRlcidcblxuZXhwb3J0IGRlZmF1bHQgRGF0ZVRpbWVGaWx0ZXJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9EYXRlVGltZUZpbHRlci9pbmRleC5qcyIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBiYXNpcy1hZ2dyaWQtY29tcG9uZW50cyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmltcG9ydCB7IGF1dG9iaW5kLCBvdmVycmlkZSwgcmVhZG9ubHkgfSBmcm9tICdjb3JlLWRlY29yYXRvcnMnXG5pbXBvcnQgdXRjVG9ab25lZFRpbWUgZnJvbSAnZGF0ZS1mbnMtdHovdXRjVG9ab25lZFRpbWUnXG5pbXBvcnQgeyB3aXRoRXZlbnRzTWl4aW4gfSBmcm9tICcuLi9FdmVudHNNaXhpbidcbmltcG9ydCBEYXRlVGltZUlucHV0IGZyb20gJy4uL0RhdGVUaW1lSW5wdXQnXG5pbXBvcnQgQ29tcG9uZW50IGZyb20gJy4uL0NvbXBvbmVudCdcblxuY29uc3QgVE9LRU5TID0ge1xuICBUT0tFTl9FUVVBTDogJ2VxdWFscycsXG4gIFRPS0VOX05PVF9FUVVBTDogJ25vdEVxdWFsJyxcbiAgVE9LRU5fTEVTUzogJ2xlc3NUaGFuJyxcbiAgVE9LRU5fR1JFQVRFUjogJ2dyZWF0ZXJUaGFuJyxcbiAgVE9LRU5fUkFOR0U6ICdpblJhbmdlJyxcbiAgVE9LRU5fQU5EOiAnQU5EJyxcbiAgVE9LRU5fT1I6ICdPUicsXG59XG5cbkB3aXRoRXZlbnRzTWl4aW5cbmNsYXNzIENvbmRpdGlvblBhbmVsIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIENvbnN0YW50IHdoaWNoIGRlc2NyaWJlcyB0aGUgZXZlbnQgbmFtZSB0aGF0IHdpbGwgYmUgZmlyZWQgd2hlbiB0aGUgb3B0aW9uXG4gICAqIHN0YXRlIGlzIGNoYW5nZWRcbiAgICpcbiAgICogQHR5cGUge1N0cmluZ31cbiAgICovXG4gIEByZWFkb25seVxuICBzdGF0aWMgT05fQ09ORElUSU9OX0NIQU5HRUQgPSAnQ29uZGl0aW9uUGFuZWwuT05fQ09ORElUSU9OX0NIQU5HRUQnXG4gIC8qKlxuICAgKiBUaGUgb3B0aW9uIHN0YXRlXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBAcmVhZG9ubHlcbiAgc3RhdGUgPSB7XG4gICAgdHlwZTogVE9LRU5TLlRPS0VOX0VRVUFMLFxuICAgIGZpbHRlcjogbnVsbCxcbiAgICBmaWx0ZXJUbzogbnVsbCxcbiAgfVxuXG4gIC8qKlxuICAgKiBAdHlwZSB7RGF0ZVRpbWVJbnB1dH1cbiAgICovXG4gIF9maWx0ZXJUaW1lSW5wdXQgPSBuZXcgRGF0ZVRpbWVJbnB1dCgpXG5cbiAgLyoqXG4gICAqIEB0eXBlIHtEYXRlVGltZUlucHV0fVxuICAgKi9cbiAgX2ZpbHRlclRvRGF0ZVRpbWVJbnB1dCA9IG5ldyBEYXRlVGltZUlucHV0KClcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgZW5hYmxlZCBmaWx0ZXIgdHlwZXNcbiAgICpcbiAgICogQHR5cGUge0FycmF5fVxuICAgKi9cbiAgX2ZpbHRlck9wdGlvbnMgPSBbXVxuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBlbmFibGVkIGZpbHRlciB0eXBlXG4gICAqXG4gICAqIEB0eXBlIHtOdW1iZXJ9XG4gICAqL1xuICBfZGVmYXVsdE9wdGlvbiA9IC0xXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgQG92ZXJyaWRlXG4gIGluaXQocGFyYW1zKSB7XG4gICAgY29uc3QgdHJhbnNsYXRlID0gcGFyYW1zLmFwaS5ncmlkT3B0aW9uc1dyYXBwZXIuZ2V0TG9jYWxlVGV4dEZ1bmMoKVxuXG4gICAgdGhpcy5fZmlsdGVyT3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9uKCdmaWx0ZXJPcHRpb25zJywgcGFyYW1zLCBbXG4gICAgICBUT0tFTlMuVE9LRU5fRVFVQUwsXG4gICAgICBUT0tFTlMuVE9LRU5fTk9UX0VRVUFMLFxuICAgICAgVE9LRU5TLlRPS0VOX0xFU1MsXG4gICAgICBUT0tFTlMuVE9LRU5fR1JFQVRFUixcbiAgICAgIFRPS0VOUy5UT0tFTl9SQU5HRSxcbiAgICBdKVxuXG4gICAgdGhpcy5fZGVmYXVsdE9wdGlvbiA9IHRoaXMuZ2V0T3B0aW9uKFxuICAgICAgJ2RlZmF1bHRPcHRpb24nLFxuICAgICAgcGFyYW1zLFxuICAgICAgdGhpcy5fZmlsdGVyT3B0aW9ucy5pbmRleE9mKFRPS0VOUy5UT0tFTl9FUVVBTCkgPiAtMVxuICAgICAgICA/IFRPS0VOUy5UT0tFTl9FUVVBTFxuICAgICAgICA6IHRoaXMuX2ZpbHRlck9wdGlvbnNbMF1cbiAgICApXG5cbiAgICB0aGlzLnN0YXRlLnR5cGUgPSB0aGlzLl9kZWZhdWx0T3B0aW9uXG5cbiAgICBjb25zdCBvcHRpb25zVHJhbnNsYXRpb25zID0ge1xuICAgICAgW1RPS0VOUy5UT0tFTl9FUVVBTF06IHRyYW5zbGF0ZShUT0tFTlMuVE9LRU5fRVFVQUwsICdFcXVhbHMnKSxcbiAgICAgIFtUT0tFTlMuVE9LRU5fTk9UX0VRVUFMXTogdHJhbnNsYXRlKFRPS0VOUy5UT0tFTl9FUVVBTCwgJ05vdCBlcXVhbCcpLFxuICAgICAgW1RPS0VOUy5UT0tFTl9MRVNTXTogdHJhbnNsYXRlKFRPS0VOUy5UT0tFTl9MRVNTLCAnTGVzcyB0aGFuJyksXG4gICAgICBbVE9LRU5TLlRPS0VOX0dSRUFURVJdOiB0cmFuc2xhdGUoVE9LRU5TLlRPS0VOX0dSRUFURVIsICdHcmVhdGVyIHRoYW4nKSxcbiAgICAgIFtUT0tFTlMuVE9LRU5fUkFOR0VdOiB0cmFuc2xhdGUoVE9LRU5TLlRPS0VOX1JBTkdFLCAnSW4gcmFuZ2UnKSxcbiAgICB9XG5cbiAgICB0aGlzLl9ndWkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAgIHRoaXMuX2d1aS5jbGFzc05hbWUgPSAnYWctZmlsdGVyLWJvZHktd3JhcHBlcidcbiAgICB0aGlzLl9ndWkuaW5uZXJIVE1MID0gLyogaHRtbCAqLyBgXG4gICAgICA8c2VsZWN0IGNsYXNzPVwiYWctZmlsdGVyLXNlbGVjdFwiICAke1xuICAgICAgICB0aGlzLl9maWx0ZXJPcHRpb25zLmxlbmd0aCA9PT0gMSA/ICdkaXNhYmxlZCcgOiAnJ1xuICAgICAgfT5cbiAgICAgICAgJHt0aGlzLl9maWx0ZXJPcHRpb25zLm1hcChcbiAgICAgICAgICBvcHRpb24gPT4gLyogaHRtbCAqLyBgXG4gICAgICAgICAgPG9wdGlvbiBcbiAgICAgICAgICAgIHZhbHVlPVwiJHtvcHRpb259XCIgXG4gICAgICAgICAgICAke29wdGlvbiA9PT0gdGhpcy5fZGVmYXVsdE9wdGlvbiA/ICdzZWxlY3RlZCcgOiAnJ31cbiAgICAgICAgICA+XG4gICAgICAgICAgICAgICR7b3B0aW9uc1RyYW5zbGF0aW9uc1tvcHRpb25dfVxuICAgICAgICAgIDwvb3B0aW9uPmBcbiAgICAgICAgKX1cbiAgICAgIDwvc2VsZWN0PlxuICAgICAgPGRpdiBjbGFzcz1cImFnLWZpbHRlci1ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZy1maWx0ZXItZGF0ZS1mcm9tXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWctZmlsdGVyLWRhdGUtdG8gYWctaGlkZGVuXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYFxuXG4gICAgdGhpcy5fZmlsdGVyVGltZUlucHV0LmluaXQocGFyYW1zKVxuICAgIHRoaXMuX2ZpbHRlclRpbWVJbnB1dC5vbihEYXRlVGltZUlucHV0Lk9OX0RBVEVfQ0hBTkdFRCwgc2VsZWN0ZWREYXRlID0+IHtcbiAgICAgIHRoaXMuc3RhdGUuZmlsdGVyID0gc2VsZWN0ZWREYXRlXG4gICAgICB0aGlzLm5vdGlmeShDb25kaXRpb25QYW5lbC5PTl9DT05ESVRJT05fQ0hBTkdFRCwgdGhpcy5zdGF0ZSlcbiAgICB9KVxuXG4gICAgdGhpcy5fZmlsdGVyVG9EYXRlVGltZUlucHV0LmluaXQocGFyYW1zKVxuICAgIHRoaXMuX2ZpbHRlclRvRGF0ZVRpbWVJbnB1dC5vbihcbiAgICAgIERhdGVUaW1lSW5wdXQuT05fREFURV9DSEFOR0VELFxuICAgICAgc2VsZWN0ZWREYXRlID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZS5maWx0ZXJUbyA9IHNlbGVjdGVkRGF0ZVxuICAgICAgICB0aGlzLm5vdGlmeShDb25kaXRpb25QYW5lbC5PTl9DT05ESVRJT05fQ0hBTkdFRCwgdGhpcy5zdGF0ZSlcbiAgICAgIH1cbiAgICApXG5cbiAgICB0aGlzLl9ndWlcbiAgICAgIC5xdWVyeVNlbGVjdG9yKCcuYWctZmlsdGVyLWRhdGUtZnJvbScpXG4gICAgICAuYXBwZW5kQ2hpbGQodGhpcy5fZmlsdGVyVGltZUlucHV0LmdldEd1aSgpKVxuICAgIHRoaXMuX2d1aVxuICAgICAgLnF1ZXJ5U2VsZWN0b3IoJy5hZy1maWx0ZXItZGF0ZS10bycpXG4gICAgICAuYXBwZW5kQ2hpbGQodGhpcy5fZmlsdGVyVG9EYXRlVGltZUlucHV0LmdldEd1aSgpKVxuXG4gICAgY29uc3Qgc2VsZWN0ID0gdGhpcy5fZ3VpLnF1ZXJ5U2VsZWN0b3IoJy5hZy1maWx0ZXItc2VsZWN0JylcbiAgICBzZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy5fb25UeXBlQ2hhbmdlKVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh0aGlzLl9zdGF0ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgQG92ZXJyaWRlXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5vZmYoQ29uZGl0aW9uUGFuZWwuT05fQ09ORElUSU9OX0NIQU5HRUQpXG4gICAgdGhpcy5fZmlsdGVyVGltZUlucHV0LmRlc3Ryb3koKVxuICAgIHRoaXMuX2ZpbHRlclRvRGF0ZVRpbWVJbnB1dC5kZXN0cm95KClcbiAgICB0aGlzLl9ndWlcbiAgICAgIC5xdWVyeVNlbGVjdG9yKCcuYWctZmlsdGVyLXNlbGVjdCcpXG4gICAgICAucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy5fb25UeXBlQ2hhbmdlKVxuICAgIHRoaXMucmVzZXQoKVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoZSBzdGF0ZVxuICAgKi9cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5zdGF0ZS5maWx0ZXIgPSBudWxsXG4gICAgdGhpcy5zdGF0ZS5maWx0ZXJUbyA9IG51bGxcbiAgICB0aGlzLl9maWx0ZXJUaW1lSW5wdXQucmVzZXQoKVxuICAgIHRoaXMuX2ZpbHRlclRvRGF0ZVRpbWVJbnB1dC5yZXNldCgpXG5cbiAgICB0aGlzLm5vdGlmeShDb25kaXRpb25QYW5lbC5PTl9DT05ESVRJT05fQ0hBTkdFRCwgdGhpcy5zdGF0ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGNvbmRpdGlvbiBzdGF0ZVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gc3RhdGVcbiAgICovXG4gIHNldFN0YXRlKHN0YXRlKSB7XG4gICAgc3RhdGUgPSBzdGF0ZSB8fCB7fVxuICAgIHRoaXMuc3RhdGUuZmlsdGVyID0gc3RhdGUuZmlsdGVyIHx8IG51bGxcbiAgICB0aGlzLnN0YXRlLmZpbHRlclRvID0gc3RhdGUuZmlsdGVyVG8gfHwgbnVsbFxuICAgIHRoaXMuc3RhdGUudHlwZSA9IHN0YXRlLnR5cGUgfHwgdGhpcy5fZGVmYXVsdE9wdGlvblxuXG4gICAgY29uc3QgZ3VpID0gdGhpcy5fZ3VpXG4gICAgY29uc3QgZmlsdGVyT3B0aW9ucyA9IHRoaXMuX2ZpbHRlck9wdGlvbnNcbiAgICBjb25zdCBzZWxlY3RFbCA9IGd1aS5xdWVyeVNlbGVjdG9yKCcuYWctZmlsdGVyLXNlbGVjdCcpXG4gICAgY29uc3QgZmlsdGVySW5wdXQgPSB0aGlzLl9maWx0ZXJUaW1lSW5wdXRcbiAgICBjb25zdCBmaWx0ZXJUb0lucHV0ID0gdGhpcy5fZmlsdGVyVG9EYXRlVGltZUlucHV0XG5cbiAgICBzZWxlY3RFbC5zZWxlY3RlZEluZGV4ID0gZmlsdGVyT3B0aW9ucy5pbmRleE9mKHRoaXMuc3RhdGUudHlwZSlcbiAgICBmaWx0ZXJJbnB1dC5zZXREYXRlKHRoaXMuc3RhdGUuZmlsdGVyKVxuICAgIGZpbHRlclRvSW5wdXQuc2V0RGF0ZSh0aGlzLnN0YXRlLmZpbHRlclRvKVxuXG4gICAgLy8gd2UgZmlyZSBvbiBjaGFuZ2UgZXZlbnQgaW4gY2FzZSB0aGUgZmlsdGVyIG9wdGlvbnMgY29udGFpblxuICAgIC8vIG9uZSBvcHRpb24gd2hpY2ggaXMgaW4gUmFuZ2UgXCJpblJhbmdlXCJcbiAgICBpZiAoJ2NyZWF0ZUV2ZW50JyBpbiBkb2N1bWVudCkge1xuICAgICAgY29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0hUTUxFdmVudHMnKVxuICAgICAgZXZ0LmluaXRFdmVudCgnY2hhbmdlJywgZmFsc2UsIHRydWUpXG4gICAgICBzZWxlY3RFbC5kaXNwYXRjaEV2ZW50KGV2dClcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZWN0RWwuZmlyZUV2ZW50KCdvbmNoYW5nZScpXG4gICAgfVxuXG4gICAgdGhpcy5ub3RpZnkoQ29uZGl0aW9uUGFuZWwuT05fQ09ORElUSU9OX0NIQU5HRUQsIHRoaXMuc3RhdGUpXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBzdGF0ZSB3aXRoIHRoZSBzZWxlY3RlZCB0eXBlXG4gICAqXG4gICAqIEBwYXJhbSB7RXZlbnR9IGVcbiAgICovXG4gIEBhdXRvYmluZFxuICBfb25UeXBlQ2hhbmdlKGUpIHtcbiAgICBjb25zdCBlbCA9IGUudGFyZ2V0XG4gICAgY29uc3QgZmlsdGVyRGF0ZVRvID0gdGhpcy5fZ3VpLnF1ZXJ5U2VsZWN0b3IoJy5hZy1maWx0ZXItZGF0ZS10bycpXG5cbiAgICB0aGlzLnN0YXRlLnR5cGUgPSBlbC5vcHRpb25zW2VsLnNlbGVjdGVkSW5kZXhdLnZhbHVlXG5cbiAgICBpZiAodGhpcy5zdGF0ZS50eXBlID09PSBUT0tFTlMuVE9LRU5fUkFOR0UpIHtcbiAgICAgIGZpbHRlckRhdGVUby5jbGFzc0xpc3QucmVtb3ZlKCdhZy1oaWRkZW4nKVxuICAgIH0gZWxzZSB7XG4gICAgICBmaWx0ZXJEYXRlVG8uY2xhc3NMaXN0LmFkZCgnYWctaGlkZGVuJylcbiAgICB9XG5cbiAgICB0aGlzLm5vdGlmeShDb25kaXRpb25QYW5lbC5PTl9DT05ESVRJT05fQ0hBTkdFRCwgdGhpcy5zdGF0ZSlcbiAgfVxufVxuXG5Ad2l0aEV2ZW50c01peGluXG5jbGFzcyBKb2luQ29uZGl0aW9uUGFuZWwgZXh0ZW5kcyBDb21wb25lbnQge1xuICAvKipcbiAgICogQ29uc3RhbnQgd2hpY2ggZGVzY3JpYmVzIHRoZSBldmVudCBuYW1lIHRoYXQgd2lsbCBiZSBmaXJlZCB3aGVuIHRoZSBqb2luXG4gICAqIHN0YXRlIGlzIGNoYW5nZWRcbiAgICpcbiAgICogQHR5cGUge1N0cmluZ31cbiAgICovXG4gIEByZWFkb25seVxuICBzdGF0aWMgT05fSk9JTl9DT05ESVRJT05fQ0hBTkdFRCA9XG4gICAgJ0pvaW5Db25kaXRpb25QYW5lbC5PTl9KT0lOX0NPTkRJVElPTl9DSEFOR0VEJ1xuICAvKipcbiAgICogVGhlIGpvaW4gc3RhdGVcbiAgICpcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIEByZWFkb25seVxuICBzdGF0ZSA9IHtcbiAgICBjb25kaXRpb24xOiB7fSxcbiAgICBjb25kaXRpb24yOiB7fSxcbiAgICBvcGVyYXRvcjogVE9LRU5TLlRPS0VOX09SLFxuICB9XG5cbiAgLyoqXG4gICAqIEB0eXBlIHtPcHRpb259XG4gICAqL1xuICBfZmlyc3RDb25kaXRpb25QYW5lbCA9IG5ldyBDb25kaXRpb25QYW5lbCgpXG5cbiAgLyoqXG4gICAqIEB0eXBlIHtPcHRpb259XG4gICAqL1xuICBfc2Vjb25kQ29uZGl0aW9uUGFuZWwgPSBuZXcgQ29uZGl0aW9uUGFuZWwoKVxuXG4gIC8qKlxuICAgKiBAdHlwZSB7SFRNTEVsZW1lbnR9XG4gICAqL1xuICBfb3BlcmF0b3JQYW5lbCA9IG51bGxcblxuICAvKipcbiAgICogUGFyYW1zIHJlY2VpdmVkIGFmdGVyIGluaXRcbiAgICpcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIF9wYXJhbXMgPSBudWxsXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgQG92ZXJyaWRlXG4gIGluaXQocGFyYW1zKSB7XG4gICAgY29uc3QgdHJhbnNsYXRlID0gcGFyYW1zLmFwaS5ncmlkT3B0aW9uc1dyYXBwZXIuZ2V0TG9jYWxlVGV4dEZ1bmMoKVxuXG4gICAgdGhpcy5fcGFyYW1zID0gcGFyYW1zXG5cbiAgICB0aGlzLl9maXJzdENvbmRpdGlvblBhbmVsLmluaXQocGFyYW1zKVxuICAgIHRoaXMuX2ZpcnN0Q29uZGl0aW9uUGFuZWwub24oXG4gICAgICBDb25kaXRpb25QYW5lbC5PTl9DT05ESVRJT05fQ0hBTkdFRCxcbiAgICAgIHRoaXMuX29uRmlyc3RDb25kaXRpb25DaGFuZ2VkXG4gICAgKVxuXG4gICAgdGhpcy5fc2Vjb25kQ29uZGl0aW9uUGFuZWwuaW5pdChwYXJhbXMpXG4gICAgdGhpcy5fc2Vjb25kQ29uZGl0aW9uUGFuZWwub24oXG4gICAgICBDb25kaXRpb25QYW5lbC5PTl9DT05ESVRJT05fQ0hBTkdFRCxcbiAgICAgIHRoaXMuX29uU2Vjb25kQ29uZGl0aW9uQ2hhbmdlZFxuICAgIClcbiAgICB0aGlzLl9zZWNvbmRDb25kaXRpb25QYW5lbC5nZXRHdWkoKS5jbGFzc0xpc3QuYWRkKCdhZy1oaWRkZW4nKVxuXG4gICAgdGhpcy5fZ3VpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICB0aGlzLl9ndWkuY2xhc3NOYW1lID0gJ2FnLWZpbHRlci1ib2R5LXdyYXBwZXInXG4gICAgdGhpcy5fZ3VpLmFwcGVuZENoaWxkKHRoaXMuX2ZpcnN0Q29uZGl0aW9uUGFuZWwuZ2V0R3VpKCkpXG5cbiAgICB0aGlzLl9vcGVyYXRvclBhbmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICB0aGlzLl9vcGVyYXRvclBhbmVsLmNsYXNzTmFtZSA9ICdhZy1maWx0ZXItY29uZGl0aW9uIGFnLWhpZGRlbidcbiAgICB0aGlzLl9vcGVyYXRvclBhbmVsLmlubmVySFRNTCA9IC8qIGh0bWwgKi8gYFxuICAgICAgPGxhYmVsPlxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJBTkRcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwib3JBbmRSYWRpb1wiIHZhbHVlPVwiJHtcbiAgICAgICAgICBUT0tFTlMuVE9LRU5fQU5EXG4gICAgICAgIH1cIi8+XG4gICAgICAgICR7dHJhbnNsYXRlKCdhbmRDb25kaXRpb24nLCAnQU5EJyl9XG4gICAgICA8L2xhYmVsPiBcbiAgICAgIDxsYWJlbD5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwiT1JcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwib3JBbmRSYWRpb1wiIHZhbHVlPVwiJHtcbiAgICAgICAgICBUT0tFTlMuVE9LRU5fT1JcbiAgICAgICAgfVwiIGNoZWNrZWQgLz5cbiAgICAgICAgJHt0cmFuc2xhdGUoJ29yQ29uZGl0aW9uJywgJ09SJyl9XG4gICAgICA8L2xhYmVsPlxuICAgIGBcbiAgICB0aGlzLl9ndWkuYXBwZW5kQ2hpbGQodGhpcy5fb3BlcmF0b3JQYW5lbClcbiAgICB0aGlzLl9vcGVyYXRvclBhbmVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMuX29uT3BlcmF0b3JDaGFuZ2VkKVxuXG4gICAgdGhpcy5fZ3VpLmFwcGVuZENoaWxkKHRoaXMuX3NlY29uZENvbmRpdGlvblBhbmVsLmdldEd1aSgpKVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBAb3ZlcnJpZGVcbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLl9maXJzdENvbmRpdGlvblBhbmVsLmRlc3Ryb3koKVxuICAgIHRoaXMuX3NlY29uZENvbmRpdGlvblBhbmVsLmRlc3Ryb3koKVxuICAgIHRoaXMuX29wZXJhdG9yUGFuZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy5fb25PcGVyYXRvckNoYW5nZWQpXG4gICAgdGhpcy5vZmYoSm9pbkNvbmRpdGlvblBhbmVsLk9OX0pPSU5fQ09ORElUSU9OX0NIQU5HRUQpXG4gICAgdGhpcy5yZXNldCgpXG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhlIHN0YXRlXG4gICAqL1xuICByZXNldCgpIHtcbiAgICB0aGlzLl9maXJzdENvbmRpdGlvblBhbmVsLnJlc2V0KClcbiAgICB0aGlzLl9zZWNvbmRDb25kaXRpb25QYW5lbC5yZXNldCgpXG4gICAgdGhpcy5ub3RpZnkoQ29uZGl0aW9uUGFuZWwuT05fQ09ORElUSU9OX0NIQU5HRUQsIHRoaXMuc3RhdGUpXG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBjb25kaXRpb24gam9pbiBzdGF0ZVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gc3RhdGVcbiAgICovXG4gIHNldFN0YXRlKHN0YXRlKSB7XG4gICAgc3RhdGUgPSBzdGF0ZSB8fCB7fVxuICAgIHRoaXMuc3RhdGUub3BlcmF0b3IgPSBzdGF0ZS5vcGVyYXRvciB8fCBUT0tFTlMuVE9LRU5fT1JcbiAgICB0aGlzLnN0YXRlLmNvbmRpdGlvbjEgPSBzdGF0ZS5jb25kaXRpb24xIHx8IG51bGxcbiAgICB0aGlzLnN0YXRlLmNvbmRpdGlvbjIgPSBzdGF0ZS5jb25kaXRpb24yIHx8IG51bGxcblxuICAgIHRoaXMuX2ZpcnN0Q29uZGl0aW9uUGFuZWwuc2V0U3RhdGUodGhpcy5zdGF0ZS5jb25kaXRpb24xKVxuICAgIHRoaXMuX3NlY29uZENvbmRpdGlvblBhbmVsLnNldFN0YXRlKHRoaXMuc3RhdGUuY29uZGl0aW9uMilcbiAgICB0aGlzLl9vcGVyYXRvclBhbmVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0JykuZm9yRWFjaChpbnB1dCA9PiB7XG4gICAgICBpZiAoaW5wdXQuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuc3RhdGUub3BlcmF0b3IpKSB7XG4gICAgICAgIGlucHV0LmNoZWNrZWQgPSB0cnVlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnB1dC5jaGVja2VkID0gZmFsc2VcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgdGhpcy5ub3RpZnkoSm9pbkNvbmRpdGlvblBhbmVsLk9OX0pPSU5fQ09ORElUSU9OX0NIQU5HRUQsIHRoaXMuc3RhdGUpXG4gIH1cblxuICAvKipcbiAgICogQWRkIHRoZSBzZWxlY3RlZCBjb25kaXRpb24gdG8gdGhlIGNvbXBvbmVudCBzdGF0ZXJcbiAgICpcbiAgICogQHBhcmFtIHtFdmVudH0gZVxuICAgKi9cbiAgQGF1dG9iaW5kXG4gIF9vbk9wZXJhdG9yQ2hhbmdlZChlKSB7XG4gICAgdGhpcy5zdGF0ZS5vcGVyYXRvciA9IGUudGFyZ2V0LnZhbHVlXG4gICAgdGhpcy5ub3RpZnkoSm9pbkNvbmRpdGlvblBhbmVsLk9OX0pPSU5fQ09ORElUSU9OX0NIQU5HRUQsIHRoaXMuc3RhdGUpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtPYmplY3R9IHN0YXRlICB0aGUgb3B0aW9uIHN0YXRlXG4gICAqL1xuICBAYXV0b2JpbmRcbiAgX29uRmlyc3RDb25kaXRpb25DaGFuZ2VkKHN0YXRlKSB7XG4gICAgdGhpcy5zdGF0ZS5jb25kaXRpb24xID0gc3RhdGVcblxuICAgIGNvbnN0IHN1cHByZXNzQW5kT3JDb25kaXRpb24gPSB0aGlzLmdldE9wdGlvbihcbiAgICAgICdzdXBwcmVzc0FuZE9yQ29uZGl0aW9uJyxcbiAgICAgIHRoaXMuX3BhcmFtcyxcbiAgICAgIGZhbHNlXG4gICAgKVxuXG4gICAgaWYgKCFzdXBwcmVzc0FuZE9yQ29uZGl0aW9uKSB7XG4gICAgICBjb25zdCB7IGZpbHRlciwgZmlsdGVyVG8sIHR5cGUgfSA9IHRoaXMuc3RhdGUuY29uZGl0aW9uMVxuICAgICAgY29uc3Qgc2Vjb25kQ29uZGl0aW9uR3VpID0gdGhpcy5fc2Vjb25kQ29uZGl0aW9uUGFuZWwuZ2V0R3VpKClcbiAgICAgIGNvbnN0IG9wZXJhdG9yUGFuZWxHdWkgPSB0aGlzLl9vcGVyYXRvclBhbmVsXG4gICAgICBjb25zdCBjb25kaXRpb24gPVxuICAgICAgICB0eXBlID09PSBUT0tFTlMuVE9LRU5fUkFOR0UgPyAhZmlsdGVyIHx8ICFmaWx0ZXJUbyA6ICFmaWx0ZXJcblxuICAgICAgaWYgKGNvbmRpdGlvbikge1xuICAgICAgICBzZWNvbmRDb25kaXRpb25HdWkuY2xhc3NMaXN0LmFkZCgnYWctaGlkZGVuJylcbiAgICAgICAgb3BlcmF0b3JQYW5lbEd1aS5jbGFzc0xpc3QuYWRkKCdhZy1oaWRkZW4nKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2Vjb25kQ29uZGl0aW9uR3VpLmNsYXNzTGlzdC5yZW1vdmUoJ2FnLWhpZGRlbicpXG4gICAgICAgIG9wZXJhdG9yUGFuZWxHdWkuY2xhc3NMaXN0LnJlbW92ZSgnYWctaGlkZGVuJylcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm5vdGlmeShKb2luQ29uZGl0aW9uUGFuZWwuT05fSk9JTl9DT05ESVRJT05fQ0hBTkdFRCwgdGhpcy5zdGF0ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge09iamVjdH0gc3RhdGUgIHRoZSBvcHRpb24gc3RhdGVcbiAgICovXG4gIEBhdXRvYmluZFxuICBfb25TZWNvbmRDb25kaXRpb25DaGFuZ2VkKHN0YXRlKSB7XG4gICAgdGhpcy5zdGF0ZS5jb25kaXRpb24yID0gc3RhdGVcbiAgICB0aGlzLm5vdGlmeShKb2luQ29uZGl0aW9uUGFuZWwuT05fSk9JTl9DT05ESVRJT05fQ0hBTkdFRCwgdGhpcy5zdGF0ZSlcbiAgfVxufVxuXG4vKipcbiAqIERhdGVUaW1lIEZpbHRlclxuICpcbiAqICMjIE9wdGlvbnNcbiAqXG4gKiB8IE5hbWUgICAgICAgICAgICAgICAgICBcdHwgRGVmYXVsdCAgICAgXHR8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcdHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHR8Oi0tLS0tLS0tLS0tLS06fC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAqKmRhdGVUaW1lRW5hYmxlVGltZSoqICAgfCBmYWxzZSAgICB8IGVuYWJsZSAvIGRpc2FibGUgdGltZVxuICogfCAqKmRhdGVUaW1lRW5hYmxlMjRIUioqICAgfCBmYWxzZSAgICB8IGVuYWJsZSAvIGRpc2FibGUgdGltZSAyNCBmb3JtYXRcbiAqIHwgKipkYXRlVGltZUVuYWJsZVNlY29uZHMqKiAgIHwgZmFsc2UgICAgfCBlbmFibGUgLyBkaXNhYmxlIHNlY29uZHMgbWFuYWdlbWVudFxuICogfCAqKmRhdGVUaW1lRW5hYmxlQ2FsZW5kYXIqKiAgIHwgZmFsc2UgICAgfCBlbmFibGUgLyBkaXNhYmxlIENhbGVuZGFyLlxuICogfCAqKmRhdGVUaW1lTWFzayoqICAgfCBmYWxzZSAgICB8IFRoZSBtYXNrIHVzZWQgdG8gZm9ybWF0IHRoZSBzZWxlY3RlZCBkYXRlXG4gKiB8ICoqZGF0ZVRpbWVNYXgqKiAgIHwgdW5kZWZpbmVkICAgIHwgIE1heCBhbGxvd2VkIGRhdGVcbiAqIHwgKipkYXRlVGltZU1pbioqICAgfCB1bmRlZmluZWQgICAgfCAgTWluIGFsbG93ZWQgZGF0ZVxuICogfCAqKmRhdGVUaW1lRm9ybWF0dGVyKiogICB8IHVuZGVmaW5lZCAgICB8ICBBIGZ1bmN0aW9uIG9yIGV4cHJlc3Npb24gdG8gZm9ybWF0IHRoZSBkYXRlIChAc2VlIHN1cHBvcnRlZCBwYXJhbSlcbiAqIHwgKipkYXRlVGltZUxvY2FsZSoqICAgfCBTeXN0ZW0gZGVmYXVsdCAgICB8ICBBIGxvY2FsZSB0byB1c2UgZm9yIGRhdGUgZm9ybWF0dGluZ1xuICogfCAqKmRhdGVUaW1lRGVmYXVsdEhvdXIqKiAgIHwgMTIgICAgfCAgSW5pdGlhbCB2YWx1ZSBvZiB0aGUgaG91ciBlbGVtZW50LlxuICogfCAqKmRhdGVUaW1lRGVmYXVsdE1pbnV0ZSoqICAgfCAwICAgIHwgIEluaXRpYWwgdmFsdWUgb2YgdGhlIG1pbnV0ZSBlbGVtZW50LlxuICogfCAqKmRhdGVUaW1lRGlzYWJsZU1vYmlsZSoqICAgfCBmYWxzZSAgICB8ICBTZXQgZGlzYWJsZU1vYmlsZSB0byB0cnVlIHRvIGFsd2F5cyB1c2UgdGhlIG5vbi1uYXRpdmUgcGlja2VyLlxuICogfCAqKmRhdGVUaW1lRW5hYmxlV2Vla051bWJlcioqICAgfCB0cnVlICAgIHwgIEVuYWJsZXMgZGlzcGxheSBvZiB3ZWVrIG51bWJlcnMgaW4gY2FsZW5kYXIuXG4gKiB8ICoqZmlsdGVyT3B0aW9ucyoqICAgfCBFcXVhbHMsIEdyZWF0ZXIgVGhhbiwgTGVzcyBUaGFuLCBOb3QgRXF1YWxzLCBJbiBSYW5nZS4gICAgfCAgV2hhdCBGaWx0ZXIgT3B0aW9ucyB0byBwcmVzZW50IHRvIHRoZSB1c2VyLlxuICogfCAqKmRlZmF1bHRPcHRpb24qKiAgIHwgRXF1YWxzICAgIHwgIFRoZSBkZWZhdWx0IEZpbHRlciBPcHRpb25zIHRvIGJlIHNlbGVjdGVkLlxuICogfCAqKnN1cHByZXNzQW5kT3JDb25kaXRpb24qKiAgIHwgZmFsc2UgICAgfCAgSWYgdHJ1ZSwgdGhlIGZpbHRlciB3aWxsIG9ubHkgb2ZmZXIgQ29uZGl0aW9uIDEuXG4gKiB8ICoqaW5SYW5nZUluY2x1c2l2ZSoqICAgfCBmYWxzZSAgICB8ICBJZiB0cnVlIHRoZW4gZG9pbmcgJ2luUmFuZ2UnIGZpbHRlciBvcHRpb24gd2lsbCBpbmNsdWRlIHZhbHVlcyBlcXVhbCB0byB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGUgcmFuZ2UuXG4gKiB8ICoqY2xlYXJCdXR0b24qKiAgIHwgZmFsc2UgICAgfCAgU2V0IHRvIHRydWUgdG8gaGF2ZSB0aGUgZmlsdGVyIHVzZSBhIENsZWFyIGJ1dHRvbi4gVGhlIENsZWFyIGJ1dHRvbiB3aWxsIGNsZWFyIHRoZSAoZm9ybSkgZGV0YWlscyBvZiB0aGUgZmlsdGVyIHdpdGhvdXQgcmVtb3ZpbmcgYW55IGFjdGl2ZSBmaWx0ZXJzIG9uIHRoZSBjb2x1bW4uXG4gKiB8ICoqYXBwbHlCdXR0b24qKiAgIHwgZmFsc2UgICAgfCAgU2V0IHRvIHRydWUgdG8gaGF2ZSB0aGUgZmlsdGVyIHVzZSBhbiBBcHBseSBidXR0b24uIElmIHRoZSBBcHBseSBidXR0b24gaXMgcHJlc2VudCwgdGhlbiB0aGUgZmlsdGVyIGlzIG9ubHkgYXBwbGllZCBhZnRlciB0aGUgdXNlciBoaXRzIHRoZSBBcHBseSBidXR0b24uXG4gKiB8ICoqcmVzZXRCdXR0b24qKiAgIHwgZmFsc2UgICAgfCAgU2V0IHRvIHRydWUgdG8gaGF2ZSB0aGUgZmlsdGVyIHVzZSBhIFJlc2V0IGJ1dHRvbi4gVGhlIFJlc2V0IGJ1dHRvbiB3aWxsIGNsZWFyIHRoZSBkZXRhaWxzIG9mIHRoZSBmaWx0ZXIgYW5kIGFueSBhY3RpdmUgZmlsdGVycyBvbiB0aGF0IGNvbHVtbi5cbiAqXG4gKiBAYXV0aG9yIEh5eWFuIEFibyBGYWtoZXIgPGhhYm9mYWtoZXJAYmFzaXMuY29tPlxuICovXG5jbGFzcyBEYXRlVGltZUZpbHRlciBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBAdHlwZSB7Sm9pbn1cbiAgICovXG4gIF9Kb2luQ29uZGl0aW9uUGFuZWwgPSBuZXcgSm9pbkNvbmRpdGlvblBhbmVsKClcblxuICAvKipcbiAgICogSm9pbiBwYW5lbCBzdGF0ZVxuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgX3N0YXRlID0ge31cblxuICAvKipcbiAgICogQ29tcG9uZW50IHBhcmFtc1xuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgX3BhcmFtcyA9IHt9XG5cbiAgLyoqXG4gICAqIEFuIG9iamVjdCBvZiBhbGwgdGhlIHJlcXVpcmVkIG9wdGlvbnMgY2FjaGVkIGZvciBkb2VzRmlsdGVyUGFzcyBtZXRob2RcbiAgICovXG4gIF9kb2VzRmlsdGVyUGFzc09wdGlvbnMgPSBudWxsXG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBAb3ZlcnJpZGVcbiAgaW5pdChwYXJhbXMpIHtcbiAgICBjb25zdCB0cmFuc2xhdGUgPSBwYXJhbXMuYXBpLmdyaWRPcHRpb25zV3JhcHBlci5nZXRMb2NhbGVUZXh0RnVuYygpXG4gICAgY29uc3QgaXNDbGVhckZpbHRlciA9IHRoaXMuZ2V0T3B0aW9uKCdjbGVhckJ1dHRvbicsIHBhcmFtcywgZmFsc2UpXG4gICAgY29uc3QgaXNSZXNldEJ1dHRvbiA9IHRoaXMuZ2V0T3B0aW9uKCdyZXNldEJ1dHRvbicsIHBhcmFtcywgZmFsc2UpXG4gICAgY29uc3QgaXNBcHBseUJ1dHRvbiA9IHRoaXMuZ2V0T3B0aW9uKCdhcHBseUJ1dHRvbicsIHBhcmFtcywgZmFsc2UpXG5cbiAgICB0aGlzLl9ndWkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuXG4gICAgdGhpcy5fSm9pbkNvbmRpdGlvblBhbmVsLmluaXQocGFyYW1zKVxuICAgIHRoaXMuX0pvaW5Db25kaXRpb25QYW5lbC5vbihcbiAgICAgIEpvaW5Db25kaXRpb25QYW5lbC5PTl9KT0lOX0NPTkRJVElPTl9DSEFOR0VELFxuICAgICAgc3RhdGUgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuX19kaXNhYmxlU3RhdGVDaGFuZ2VMaXN0ZW5lcikge1xuICAgICAgICAgIHRoaXMuX29uSm9pbkNvbmRpdGlvblBhbmVsU3RhdGVDaGFuZ2VkKHN0YXRlLCBpc0FwcGx5QnV0dG9uKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKVxuXG4gICAgdGhpcy5fZ3VpLmFwcGVuZENoaWxkKHRoaXMuX0pvaW5Db25kaXRpb25QYW5lbC5nZXRHdWkoKSlcblxuICAgIGNvbnN0IGFwcGx5RmlsdGVyUGFuZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAgIGFwcGx5RmlsdGVyUGFuZWwuY2xhc3NOYW1lID0gYGFnLWZpbHRlci1hcHBseS1wYW5lbCBhZy1oaWRkZW5gXG4gICAgYXBwbHlGaWx0ZXJQYW5lbC5pbm5lckhUTUwgPSAvKiBodG1sICovIGBcbiAgICAgIDxidXR0b24gY2xhc3M9XCJjbGVhciAkeyFpc0NsZWFyRmlsdGVyICYmXG4gICAgICAgICdhZy1oaWRkZW4nfVwiIHR5cGU9XCJidXR0b25cIj4ke3RyYW5zbGF0ZShcbiAgICAgICdjbGVhckZpbHRlcicsXG4gICAgICAnQ2xlYXIgRmlsdGVyJ1xuICAgICl9PC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwicmVzZXQgJHshaXNSZXNldEJ1dHRvbiAmJlxuICAgICAgICAnYWctaGlkZGVuJ31cIiB0eXBlPVwiYnV0dG9uXCI+JHt0cmFuc2xhdGUoXG4gICAgICAncmVzZXRGaWx0ZXInLFxuICAgICAgJ1Jlc2V0IEZpbHRlcidcbiAgICApfTwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImFwcGx5ICR7IWlzQXBwbHlCdXR0b24gJiZcbiAgICAgICAgJ2FnLWhpZGRlbid9XCIgdHlwZT1cImJ1dHRvblwiPiR7dHJhbnNsYXRlKFxuICAgICAgJ2FwcGx5RmlsdGVyJyxcbiAgICAgICdBcHBseSBGaWx0ZXInXG4gICAgKX08L2J1dHRvbj5cbiAgICBgXG5cbiAgICBpZiAoaXNDbGVhckZpbHRlciB8fCBpc1Jlc2V0QnV0dG9uIHx8IGlzQXBwbHlCdXR0b24pIHtcbiAgICAgIGFwcGx5RmlsdGVyUGFuZWwuY2xhc3NMaXN0LnJlbW92ZSgnYWctaGlkZGVuJylcbiAgICB9XG5cbiAgICBhcHBseUZpbHRlclBhbmVsLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnY2xpY2snLFxuICAgICAgdGhpcy5fQXBwbHlGaWx0ZXJQYW5lbEJ1dHRvbkNsaWNrXG4gICAgKVxuXG4gICAgdGhpcy5fZ3VpLmFwcGVuZENoaWxkKGFwcGx5RmlsdGVyUGFuZWwpXG5cbiAgICB0aGlzLl9zdGF0ZSA9IHRoaXMuX0pvaW5Db25kaXRpb25QYW5lbC5zdGF0ZVxuICAgIHRoaXMuX3BhcmFtcyA9IHBhcmFtc1xuXG4gICAgdGhpcy5fZG9lc0ZpbHRlclBhc3NPcHRpb25zID0ge1xuICAgICAgZW5hYmxlVGltZTogdGhpcy5nZXRPcHRpb24oJ2RhdGVUaW1lRW5hYmxlVGltZScsIHRoaXMuX3BhcmFtcywgdHJ1ZSksXG4gICAgICBpblJhbmdlSW5jbHVzaXZlOiB0aGlzLmdldE9wdGlvbignaW5SYW5nZUluY2x1c2l2ZScsIHRoaXMuX3BhcmFtcywgZmFsc2UpLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgICAgdmFsdWVHZXR0ZXI6IHRoaXMuX3BhcmFtcy5oYXNPd25Qcm9wZXJ0eSgnZmlsdGVyVmFsdWVHZXR0ZXInKVxuICAgICAgICA/IHRoaXMuX3BhcmFtcy5maWx0ZXJWYWx1ZUdldHRlclxuICAgICAgICA6IHRoaXMuX3BhcmFtcy52YWx1ZUdldHRlcixcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIEBvdmVycmlkZVxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuX0pvaW5Db25kaXRpb25QYW5lbC5kZXN0cm95KClcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIHNlbGVjdGVkIGZpbHRlciBtYXRjaGVzIHRoZSBwYXNzZWQgY2VsbCBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXNcbiAgICpcbiAgICogQHJldHVybiB7Qm9vbGVhbn0gdHJ1ZSB3aGVuIHBhc3MsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgZG9lc0ZpbHRlclBhc3MocGFyYW1zKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLl9kb2VzRmlsdGVyUGFzc09wdGlvbnMudmFsdWVHZXR0ZXIocGFyYW1zKVxuICAgIGNvbnN0IHsgY29uZGl0aW9uMSwgY29uZGl0aW9uMiwgb3BlcmF0b3IgfSA9IHRoaXMuX3N0YXRlXG4gICAgY29uc3QgZG9lc1Bhc3NGaXJzdENvbmRpdGlvbiA9IHRoaXMuX2RvZXNQYXNzQ29uZGl0aW9uKGNvbmRpdGlvbjEsIHZhbHVlKVxuICAgIGNvbnN0IGRvZXNQYXNzU2Vjb25kQ29uZGl0aW9uID0gdGhpcy5fZG9lc1Bhc3NDb25kaXRpb24oY29uZGl0aW9uMiwgdmFsdWUpXG5cbiAgICByZXR1cm4gb3BlcmF0b3IgPT09IFRPS0VOUy5UT0tFTl9PUlxuICAgICAgPyBkb2VzUGFzc0ZpcnN0Q29uZGl0aW9uIHx8IGRvZXNQYXNzU2Vjb25kQ29uZGl0aW9uXG4gICAgICA6IGRvZXNQYXNzRmlyc3RDb25kaXRpb24gJiYgZG9lc1Bhc3NTZWNvbmRDb25kaXRpb25cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIHRoZSBjb21wb25lbnQgaXMgYXBwbHlpbmcgYW55IGZpbHRlciBvbiB0aGUgY29sdW1uXG4gICAqXG4gICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAqKi9cbiAgaXNGaWx0ZXJBY3RpdmUoKSB7XG4gICAgY29uc3QgeyBjb25kaXRpb24xIH0gPSB0aGlzLl9zdGF0ZVxuXG4gICAgaWYgKGNvbmRpdGlvbjEgJiYgY29uZGl0aW9uMS5maWx0ZXIpIHtcbiAgICAgIGlmIChjb25kaXRpb24xLmZpbHRlclRvICYmIGNvbmRpdGlvbjEudHlwZSA9PT0gVE9LRU5TLlRPS0VOX1JBTkdFKSB7XG4gICAgICAgIHJldHVybiBjb25kaXRpb24xLmZpbHRlciAhPT0gbnVsbCAmJiBjb25kaXRpb24xLmZpbHRlclRvICE9PSBudWxsXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb25kaXRpb24xLmZpbHRlciAhPT0gbnVsbFxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGZpbHRlciBzdGF0ZS4gSWYgZmlsdGVyIGlzIG5vdCBhY3RpdmUsIHRoZW4gc2hvdWxkIHJldHVybiBudWxsL3VuZGVmaW5lZC5cbiAgICogVGhlIGdyaWQgY2FsbHMgZ2V0TW9kZWwoKSBvbiBhbGwgYWN0aXZlIGZpbHRlcnMgd2hlbiBncmlkQXBpLmdldEZpbHRlck1vZGVsKCkgaXMgY2FsbGVkLlxuICAgKlxuICAgKiBAcmV0dXJuIE9iamVjdCB8IG51bGwgdGhlIGZpbHRlciBzdGF0ZVxuICAgKi9cbiAgZ2V0TW9kZWwoKSB7XG4gICAgY29uc3QgY2xvbmUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuX3N0YXRlKSlcbiAgICA7W2Nsb25lLmNvbmRpdGlvbjEsIGNsb25lLmNvbmRpdGlvbjJdLmZvckVhY2goKGNvbmRpdGlvbiwgaSkgPT4ge1xuICAgICAgaWYgKGNvbmRpdGlvbi5maWx0ZXIpIHtcbiAgICAgICAgY29uZGl0aW9uLmZpbHRlciA9IHRoaXMuX3N0YXRlW2Bjb25kaXRpb24ke2kgKyAxfWBdLmZpbHRlci50b0lTT1N0cmluZygpXG4gICAgICB9XG4gICAgICBpZiAoY29uZGl0aW9uLmZpbHRlclRvKSB7XG4gICAgICAgIGNvbmRpdGlvbi5maWx0ZXJUbyA9IHRoaXMuX3N0YXRlW1xuICAgICAgICAgIGBjb25kaXRpb24ke2kgKyAxfWBcbiAgICAgICAgXS5maWx0ZXJUby50b0lTT1N0cmluZygpXG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBjbG9uZVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RvcmVzIHRoZSBmaWx0ZXIgc3RhdGUuIENhbGxlZCBieSB0aGUgZ3JpZCBhZnRlciBncmlkQXBpLnNldEZpbHRlck1vZGVsKG1vZGVsKSBpcyBjYWxsZWQuXG4gICAqIFRoZSBncmlkIHdpbGwgcGFzcyB1bmRlZmluZWQvbnVsbCB0byBjbGVhciB0aGUgZmlsdGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdCB8IG51bGx9IG1vZGVsXG4gICAqL1xuICBzZXRNb2RlbChtb2RlbCkge1xuICAgIHRoaXMuX19kaXNhYmxlU3RhdGVDaGFuZ2VMaXN0ZW5lciA9IHRydWVcbiAgICB0aGlzLl9Kb2luQ29uZGl0aW9uUGFuZWwuc2V0U3RhdGUobW9kZWwpXG4gICAgdGhpcy5fX2Rpc2FibGVTdGF0ZUNoYW5nZUxpc3RlbmVyID0gZmFsc2VcblxuICAgIHRoaXMuX3N0YXRlID0gdGhpcy5fSm9pbkNvbmRpdGlvblBhbmVsLnN0YXRlXG4gICAgO1t0aGlzLl9zdGF0ZS5jb25kaXRpb24xLCB0aGlzLl9zdGF0ZS5jb25kaXRpb24yXS5mb3JFYWNoKGNvbmRpdGlvbiA9PiB7XG4gICAgICBpZiAoY29uZGl0aW9uLmZpbHRlcikge1xuICAgICAgICBjb25kaXRpb24uZmlsdGVyID0gbmV3IERhdGUoY29uZGl0aW9uLmZpbHRlcilcbiAgICAgIH1cbiAgICAgIGlmIChjb25kaXRpb24uZmlsdGVyVG8pIHtcbiAgICAgICAgY29uZGl0aW9uLmZpbHRlclRvID0gbmV3IERhdGUoY29uZGl0aW9uLmZpbHRlclRvKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBmaWx0ZXIgbW9kZWwgYXMgcGxhaW4gc3RyaW5nIHRvIGRpc3BsYXkgaW4gdGhlIGZsb2F0aW5nIGZpbHRlciBpbnB1dFxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdCB8IG51bGx9IG1vZGVsXG4gICAqL1xuICBnZXRNb2RlbEFzU3RyaW5nKG1vZGVsKSB7XG4gICAgaWYgKCFtb2RlbCkge1xuICAgICAgcmV0dXJuICcnXG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZVRpbWVNYXNrID0gdGhpcy5nZXRPcHRpb24oXG4gICAgICAnZGF0ZVRpbWVNYXNrJyxcbiAgICAgIHRoaXMuX3BhcmFtcyxcbiAgICAgIC8vIEB0b2RvIEZpbmQgYSBiZXR0ZXIgd2F5IGZvciB0aGlzXG4gICAgICB0aGlzLl9Kb2luQ29uZGl0aW9uUGFuZWwuX2ZpcnN0Q29uZGl0aW9uUGFuZWwuX2ZpbHRlclRpbWVJbnB1dC5waWNrZXJcbiAgICAgICAgLmNvbmZpZ1snZGF0ZUZvcm1hdCddXG4gICAgKVxuICAgIGNvbnN0IGxvY2FsZSA9IHRoaXMuZ2V0T3B0aW9uKFxuICAgICAgJ2RhdGVUaW1lTG9jYWxlJyxcbiAgICAgIHRoaXMuX3BhcmFtcyxcbiAgICAgIEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUgfHwgJ2VuLVVTJ1xuICAgIClcblxuICAgIGNvbnN0IHsgY29uZGl0aW9uMSwgY29uZGl0aW9uMiwgb3BlcmF0b3IgfSA9IEpTT04ucGFyc2UoXG4gICAgICBKU09OLnN0cmluZ2lmeShtb2RlbClcbiAgICApXG5cbiAgICA7W2NvbmRpdGlvbjEsIGNvbmRpdGlvbjJdLmZvckVhY2goY29uZGl0aW9uID0+IHtcbiAgICAgIGlmIChjb25kaXRpb24uZmlsdGVyKSB7XG4gICAgICAgIGNvbmRpdGlvbi5maWx0ZXIgPSBCQmouTWFza3MuRGF0ZU1hc2subWFzayhcbiAgICAgICAgICBjb25kaXRpb24uZmlsdGVyLFxuICAgICAgICAgIGRhdGVUaW1lTWFzayxcbiAgICAgICAgICBsb2NhbGVcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBpZiAoY29uZGl0aW9uLmZpbHRlclRvKSB7XG4gICAgICAgIGNvbmRpdGlvbi5maWx0ZXJUbyA9IEJCai5NYXNrcy5EYXRlTWFzay5tYXNrKFxuICAgICAgICAgIGNvbmRpdGlvbi5maWx0ZXJUbyxcbiAgICAgICAgICBkYXRlVGltZU1hc2ssXG4gICAgICAgICAgbG9jYWxlXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgY29uc3QgZmlyc3RDb25kaXRpb25Bc1N0cmluZyA9IGAke2NvbmRpdGlvbjEuZmlsdGVyIHx8ICcnfSAke1xuICAgICAgY29uZGl0aW9uMS5maWx0ZXJUbyA/ICfihpIgJyArIGNvbmRpdGlvbjEuZmlsdGVyVG8gOiAnJ1xuICAgIH1gXG4gICAgY29uc3Qgc2Vjb25kQ29uZGl0aW9uQXNTdHJpbmcgPSBgJHtjb25kaXRpb24yLmZpbHRlciB8fCAnJ30gJHtcbiAgICAgIGNvbmRpdGlvbjIuZmlsdGVyVG8gPyAn4oaSICcgKyBjb25kaXRpb24yLmZpbHRlclRvIDogJydcbiAgICB9YFxuICAgIGNvbnN0IG9wZXJhdG9yQXNTdHJpbmcgPSBgJHtjb25kaXRpb24yLmZpbHRlciAmJiBvcGVyYXRvciA/IG9wZXJhdG9yIDogJyd9YFxuXG4gICAgcmV0dXJuIGAke2ZpcnN0Q29uZGl0aW9uQXNTdHJpbmd9ICR7b3BlcmF0b3JBc1N0cmluZ30gJHtzZWNvbmRDb25kaXRpb25Bc1N0cmluZ31gLnRyaW0oKVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoZSBnaXZlbiB2YWx1ZSBwYXNzZXMgdGhlIGZpbHRlciBkZWZpbmVkIGluIHRoZSBwYXNzZWQgQ29uZGl0aW9uUGFuZWwncyBzdGF0ZVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZGl0aW9uIGNvbmRpdGlvbiBwYW5lbCBzdGF0ZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gdmFsdWUgY2VsbCB2YWx1ZVxuICAgKlxuICAgKiBAcmV0dXJuIHtCb29sZWFufSB0cnVlIHdoZW4gcGFzcywgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBfZG9lc1Bhc3NDb25kaXRpb24oY29uZGl0aW9uLCB2YWx1ZSkge1xuICAgIGlmICghY29uZGl0aW9uLmZpbHRlcikge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgY29uc3QgeyBmaWx0ZXIsIGZpbHRlclRvLCB0eXBlIH0gPSBjb25kaXRpb25cbiAgICBjb25zdCB0aW1lem9uZSA9IEJCai5NYXNrcy5VdGlscy5EYXRlcy5nZXRUaW1lem9uZU9yT2Zmc2V0KClcbiAgICBjb25zdCBpblJhbmdlSW5jbHVzaXZlID0gdGhpcy5fZG9lc0ZpbHRlclBhc3NPcHRpb25zLmluUmFuZ2VJbmNsdXNpdmVcbiAgICBjb25zdCBlbmFibGVUaW1lID0gdGhpcy5fZG9lc0ZpbHRlclBhc3NPcHRpb25zLmVuYWJsZVRpbWVcbiAgICBsZXQgcGFzc2VkID0gZmFsc2VcblxuICAgIGlmIChCQmouTWFza3MuVXRpbHMuRGF0ZXMuSVNfVElNRV9SRUdFWC50ZXN0KHZhbHVlKSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZSA9IEJCai5NYXNrcy5VdGlscy5EYXRlcy5maXhTaG9ydElTTyh2YWx1ZSlcbiAgICAgIDtbZmlsdGVyLCBmaWx0ZXJUb10uZm9yRWFjaChkYXRlID0+IHtcbiAgICAgICAgaWYgKGRhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgZGF0ZS5zZXRGdWxsWWVhcigxOTcwKVxuICAgICAgICAgIGRhdGUuc2V0TW9udGgoMClcbiAgICAgICAgICBkYXRlLnNldERhdGUoMSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9IGVsc2UgaWYgKEJCai5NYXNrcy5VdGlscy5EYXRlcy5JU19EQVRFX1JFR0VYLnRlc3QodmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IEJCai5NYXNrcy5VdGlscy5EYXRlcy5maXhTaG9ydElTTyh2YWx1ZSlcbiAgICB9XG5cbiAgICAvLyBjb252ZXJ0IHRoZSBkYXRldGltZSBmcm9tIHV0YyB0byBsb2NhbGVcbiAgICB2YWx1ZSA9IHV0Y1RvWm9uZWRUaW1lKHZhbHVlLCB0aW1lem9uZSlcbiAgICAvLyBmaXJzdERhdGUgPSBmaXJzdERhdGUgPyB6b25lZFRpbWVUb1V0YyhmaXJzdERhdGUgLCB0aW1lem9uZSkgOiBmaXJzdERhdGVcbiAgICAvLyBzZWNvbmREYXRlID0gc2Vjb25kRGF0ZSA/IHpvbmVkVGltZVRvVXRjKHNlY29uZERhdGUgLCB0aW1lem9uZSkgOiBzZWNvbmREYXRlXG5cbiAgICBpZiAoIWVuYWJsZVRpbWUpIHtcbiAgICAgIC8vIHJlbW92ZSB0aGUgdGltZSBwb3J0aW9uIGZyb20gdGhlIGRhdGVcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1leHRyYS1zZW1pXG4gICAgICA7W3ZhbHVlLCBmaWx0ZXIsIGZpbHRlclRvXS5mb3JFYWNoKGRhdGUgPT4ge1xuICAgICAgICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICBkYXRlLnNldEhvdXJzKDApXG4gICAgICAgICAgZGF0ZS5zZXRNaW51dGVzKDApXG4gICAgICAgICAgZGF0ZS5zZXRTZWNvbmRzKDApXG4gICAgICAgICAgZGF0ZS5zZXRNaWxsaXNlY29uZHMoMClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gVE9LRU5TLlRPS0VOX0VRVUFMKSB7XG4gICAgICBwYXNzZWQgPSBmaWx0ZXIgPiB2YWx1ZSA9PT0gZmFsc2UgJiYgZmlsdGVyIDwgdmFsdWUgPT0gZmFsc2VcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFRPS0VOUy5UT0tFTl9OT1RfRVFVQUwpIHtcbiAgICAgIHBhc3NlZCA9ICEoZmlsdGVyID4gdmFsdWUgPT09IGZhbHNlICYmIGZpbHRlciA8IHZhbHVlID09IGZhbHNlKVxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gVE9LRU5TLlRPS0VOX0dSRUFURVIpIHtcbiAgICAgIHBhc3NlZCA9IGZpbHRlciA8IHZhbHVlXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSBUT0tFTlMuVE9LRU5fTEVTUykge1xuICAgICAgcGFzc2VkID0gZmlsdGVyID4gdmFsdWVcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFRPS0VOUy5UT0tFTl9SQU5HRSAmJiBmaWx0ZXJUbykge1xuICAgICAgaWYgKGluUmFuZ2VJbmNsdXNpdmUpIHtcbiAgICAgICAgcGFzc2VkID1cbiAgICAgICAgICAoKGZpbHRlciA8IHZhbHVlIHx8XG4gICAgICAgICAgICAoZmlsdGVyID4gdmFsdWUgPT09IGZhbHNlICYmIGZpbHRlciA8IHZhbHVlID09IGZhbHNlKSkgJiZcbiAgICAgICAgICAgIGZpbHRlclRvID4gdmFsdWUpIHx8XG4gICAgICAgICAgKGZpbHRlclRvID4gdmFsdWUgPT09IGZhbHNlICYmIGZpbHRlclRvIDwgdmFsdWUgPT0gZmFsc2UpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXNzZWQgPSBmaWx0ZXIgPCB2YWx1ZSAmJiBmaWx0ZXJUbyA+IHZhbHVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhc3NlZFxuICB9XG5cbiAgLyoqXG4gICAqIExpc3QgdG8gY2xpY2sgYnV0dG9uIGV2ZW50IG9uIHRoZSBmaWx0ZXIgcGFuZWwgYW5kIGV4ZWN1dGUgdGhlXG4gICAqIHJpZ2h0IGFjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge0V2ZW50fSBlXG4gICAqL1xuICBAYXV0b2JpbmRcbiAgX0FwcGx5RmlsdGVyUGFuZWxCdXR0b25DbGljayhlKSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXRcblxuICAgIGlmICh0YXJnZXQubm9kZU5hbWUgPT09ICdCVVRUT04nKSB7XG4gICAgICBpZiAodGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygncmVzZXQnKSkge1xuICAgICAgICB0aGlzLl9Kb2luQ29uZGl0aW9uUGFuZWwucmVzZXQoKVxuICAgICAgICB0aGlzLl9wYXJhbXMuZmlsdGVyQ2hhbmdlZENhbGxiYWNrKClcbiAgICAgIH0gZWxzZSBpZiAodGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnY2xlYXInKSkge1xuICAgICAgICB0aGlzLl9Kb2luQ29uZGl0aW9uUGFuZWwucmVzZXQoKVxuICAgICAgfSBlbHNlIGlmICh0YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdhcHBseScpKSB7XG4gICAgICAgIHRoaXMuX3BhcmFtcy5maWx0ZXJDaGFuZ2VkQ2FsbGJhY2soKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIGZpbHRlciBzdGF0ZSBhbmQgQXBwbHkgdGhlIGZpbHRlciBkZXBlbmRpbmcgb25cbiAgICogd2hldGhlciB0aGUgYGlzQXBwbHlCdXR0b25BY3RpdmVgIGlzIHRydWUgb3IgZmFsc2VcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHN0YXRlXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gaXNBcHBseUJ1dHRvbkFjdGl2ZVxuICAgKi9cbiAgQGF1dG9iaW5kXG4gIF9vbkpvaW5Db25kaXRpb25QYW5lbFN0YXRlQ2hhbmdlZChzdGF0ZSwgaXNBcHBseUJ1dHRvbkFjdGl2ZSkge1xuICAgIHRoaXMuX3N0YXRlID0gc3RhdGVcbiAgICBpZiAoZmFsc2UgPT09IGlzQXBwbHlCdXR0b25BY3RpdmUpIHtcbiAgICAgIHRoaXMuX3BhcmFtcy5maWx0ZXJDaGFuZ2VkQ2FsbGJhY2soKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBEYXRlVGltZUZpbHRlclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL0RhdGVUaW1lRmlsdGVyL0RhdGVUaW1lRmlsdGVyLmpzIiwiLyoqXG4gKiBSZXR1cm5zIHRoZSBbeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmRzXSB0b2tlbnMgb2YgdGhlIHByb3ZpZGVkXG4gKiBgZGF0ZWAgYXMgaXQgd2lsbCBiZSByZW5kZXJlZCBpbiB0aGUgYHRpbWVab25lYC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHpUb2tlbml6ZURhdGUoZGF0ZSwgdGltZVpvbmUpIHtcbiAgdmFyIGR0ZiA9IGdldERhdGVUaW1lRm9ybWF0KHRpbWVab25lKVxuICByZXR1cm4gZHRmLmZvcm1hdFRvUGFydHMgPyBwYXJ0c09mZnNldChkdGYsIGRhdGUpIDogaGFja3lPZmZzZXQoZHRmLCBkYXRlKVxufVxuXG52YXIgdHlwZVRvUG9zID0ge1xuICB5ZWFyOiAwLFxuICBtb250aDogMSxcbiAgZGF5OiAyLFxuICBob3VyOiAzLFxuICBtaW51dGU6IDQsXG4gIHNlY29uZDogNVxufVxuXG5mdW5jdGlvbiBwYXJ0c09mZnNldChkdGYsIGRhdGUpIHtcbiAgdmFyIGZvcm1hdHRlZCA9IGR0Zi5mb3JtYXRUb1BhcnRzKGRhdGUpXG4gIHZhciBmaWxsZWQgPSBbXVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGZvcm1hdHRlZC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwb3MgPSB0eXBlVG9Qb3NbZm9ybWF0dGVkW2ldLnR5cGVdXG5cbiAgICBpZiAocG9zID49IDApIHtcbiAgICAgIGZpbGxlZFtwb3NdID0gcGFyc2VJbnQoZm9ybWF0dGVkW2ldLnZhbHVlLCAxMClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZpbGxlZFxufVxuXG5mdW5jdGlvbiBoYWNreU9mZnNldChkdGYsIGRhdGUpIHtcbiAgdmFyIGZvcm1hdHRlZCA9IGR0Zi5mb3JtYXQoZGF0ZSkucmVwbGFjZSgvXFx1MjAwRS9nLCAnJylcbiAgdmFyIHBhcnNlZCA9IC8oXFxkKylcXC8oXFxkKylcXC8oXFxkKyksPyAoXFxkKyk6KFxcZCspOihcXGQrKS8uZXhlYyhmb3JtYXR0ZWQpXG4gIC8vIHZhciBbLCBmTW9udGgsIGZEYXksIGZZZWFyLCBmSG91ciwgZk1pbnV0ZSwgZlNlY29uZF0gPSBwYXJzZWRcbiAgLy8gcmV0dXJuIFtmWWVhciwgZk1vbnRoLCBmRGF5LCBmSG91ciwgZk1pbnV0ZSwgZlNlY29uZF1cbiAgcmV0dXJuIFtwYXJzZWRbM10sIHBhcnNlZFsxXSwgcGFyc2VkWzJdLCBwYXJzZWRbNF0sIHBhcnNlZFs1XSwgcGFyc2VkWzZdXVxufVxuXG4vLyBHZXQgYSBjYWNoZWQgSW50bC5EYXRlVGltZUZvcm1hdCBpbnN0YW5jZSBmb3IgdGhlIElBTkEgYHRpbWVab25lYC4gVGhpcyBjYW4gYmUgdXNlZFxuLy8gdG8gZ2V0IGRldGVybWluaXN0aWMgbG9jYWwgZGF0ZS90aW1lIG91dHB1dCBhY2NvcmRpbmcgdG8gdGhlIGBlbi1VU2AgbG9jYWxlIHdoaWNoXG4vLyBjYW4gYmUgdXNlZCB0byBleHRyYWN0IGxvY2FsIHRpbWUgcGFydHMgYXMgbmVjZXNzYXJ5LlxudmFyIGR0ZkNhY2hlID0ge31cbmZ1bmN0aW9uIGdldERhdGVUaW1lRm9ybWF0KHRpbWVab25lKSB7XG4gIGlmICghZHRmQ2FjaGVbdGltZVpvbmVdKSB7XG4gICAgLy8gTmV3IGJyb3dzZXJzIHVzZSBgaG91ckN5Y2xlYCwgSUUgYW5kIENocm9tZSA8NzMgZG9lcyBub3Qgc3VwcG9ydCBpdCBhbmQgdXNlcyBgaG91cjEyYFxuICAgIHZhciB0ZXN0RGF0ZUZvcm1hdHRlZCA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCdlbi1VUycsIHtcbiAgICAgIGhvdXIxMjogZmFsc2UsXG4gICAgICB0aW1lWm9uZTogJ0FtZXJpY2EvTmV3X1lvcmsnLFxuICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgbW9udGg6ICcyLWRpZ2l0JyxcbiAgICAgIGRheTogJzItZGlnaXQnLFxuICAgICAgaG91cjogJzItZGlnaXQnLFxuICAgICAgbWludXRlOiAnMi1kaWdpdCcsXG4gICAgICBzZWNvbmQ6ICcyLWRpZ2l0J1xuICAgIH0pLmZvcm1hdChuZXcgRGF0ZSgnMjAxNC0wNi0yNVQwNDowMDowMC4xMjNaJykpXG4gICAgdmFyIGhvdXJDeWNsZVN1cHBvcnRlZCA9XG4gICAgICB0ZXN0RGF0ZUZvcm1hdHRlZCA9PT0gJzA2LzI1LzIwMTQsIDAwOjAwOjAwJyB8fFxuICAgICAgdGVzdERhdGVGb3JtYXR0ZWQgPT09ICfigI4wNuKAji/igI4yNeKAji/igI4yMDE04oCOIOKAjjAw4oCOOuKAjjAw4oCOOuKAjjAwJ1xuXG4gICAgZHRmQ2FjaGVbdGltZVpvbmVdID0gaG91ckN5Y2xlU3VwcG9ydGVkXG4gICAgICA/IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCdlbi1VUycsIHtcbiAgICAgICAgICBob3VyMTI6IGZhbHNlLFxuICAgICAgICAgIHRpbWVab25lOiB0aW1lWm9uZSxcbiAgICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICAgICAgbW9udGg6ICcyLWRpZ2l0JyxcbiAgICAgICAgICBkYXk6ICcyLWRpZ2l0JyxcbiAgICAgICAgICBob3VyOiAnMi1kaWdpdCcsXG4gICAgICAgICAgbWludXRlOiAnMi1kaWdpdCcsXG4gICAgICAgICAgc2Vjb25kOiAnMi1kaWdpdCdcbiAgICAgICAgfSlcbiAgICAgIDogbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2VuLVVTJywge1xuICAgICAgICAgIGhvdXJDeWNsZTogJ2gyMycsXG4gICAgICAgICAgdGltZVpvbmU6IHRpbWVab25lLFxuICAgICAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgICAgICBtb250aDogJzItZGlnaXQnLFxuICAgICAgICAgIGRheTogJzItZGlnaXQnLFxuICAgICAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcbiAgICAgICAgICBtaW51dGU6ICcyLWRpZ2l0JyxcbiAgICAgICAgICBzZWNvbmQ6ICcyLWRpZ2l0J1xuICAgICAgICB9KVxuICB9XG4gIHJldHVybiBkdGZDYWNoZVt0aW1lWm9uZV1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zLXR6L2VzbS9fbGliL3R6VG9rZW5pemVEYXRlL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tICcuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qcyc7XG5pbXBvcnQgYWRkTWlsbGlzZWNvbmRzIGZyb20gJy4uL2FkZE1pbGxpc2Vjb25kcy9pbmRleC5qcyc7XG4vKipcbiAqIEBuYW1lIHN1Yk1pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5IE1pbGxpc2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogIyMjIHYyLjAuMCBicmVha2luZyBjaGFuZ2VzOlxuICpcbiAqIC0gW0NoYW5nZXMgdGhhdCBhcmUgY29tbW9uIGZvciB0aGUgd2hvbGUgbGlicmFyeV0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdXBncmFkZUd1aWRlLm1kI0NvbW1vbi1DaGFuZ2VzKS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIHRvIGJlIHN1YnRyYWN0ZWRcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgbWlsbGlzZWNvbmRzIHN1YnRyYWN0ZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3VidHJhY3QgNzUwIG1pbGxpc2Vjb25kcyBmcm9tIDEwIEp1bHkgMjAxNCAxMjo0NTozMC4wMDA6XG4gKiB2YXIgcmVzdWx0ID0gc3ViTWlsbGlzZWNvbmRzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAxMiwgNDUsIDMwLCAwKSwgNzUwKVxuICogLy89PiBUaHUgSnVsIDEwIDIwMTQgMTI6NDU6MjkuMjUwXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3ViTWlsbGlzZWNvbmRzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignMiBhcmd1bWVudHMgcmVxdWlyZWQsIGJ1dCBvbmx5ICcgKyBhcmd1bWVudHMubGVuZ3RoICsgJyBwcmVzZW50Jyk7XG4gIH1cblxuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZE1pbGxpc2Vjb25kcyhkaXJ0eURhdGUsIC1hbW91bnQpO1xufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdWJNaWxsaXNlY29uZHMvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tICcuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qcyc7XG5pbXBvcnQgdG9EYXRlIGZyb20gJy4uL3RvRGF0ZS9pbmRleC5qcyc7XG4vKipcbiAqIEBuYW1lIGFkZE1pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5IE1pbGxpc2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqICMjIyB2Mi4wLjAgYnJlYWtpbmcgY2hhbmdlczpcbiAqXG4gKiAtIFtDaGFuZ2VzIHRoYXQgYXJlIGNvbW1vbiBmb3IgdGhlIHdob2xlIGxpYnJhcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VwZ3JhZGVHdWlkZS5tZCNDb21tb24tQ2hhbmdlcykuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIG1pbGxpc2Vjb25kcyB0byBiZSBhZGRlZFxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBtaWxsaXNlY29uZHMgYWRkZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDc1MCBtaWxsaXNlY29uZHMgdG8gMTAgSnVseSAyMDE0IDEyOjQ1OjMwLjAwMDpcbiAqIHZhciByZXN1bHQgPSBhZGRNaWxsaXNlY29uZHMobmV3IERhdGUoMjAxNCwgNiwgMTAsIDEyLCA0NSwgMzAsIDApLCA3NTApXG4gKiAvLz0+IFRodSBKdWwgMTAgMjAxNCAxMjo0NTozMC43NTBcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRNaWxsaXNlY29uZHMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCcyIGFyZ3VtZW50cyByZXF1aXJlZCwgYnV0IG9ubHkgJyArIGFyZ3VtZW50cy5sZW5ndGggKyAnIHByZXNlbnQnKTtcbiAgfVxuXG4gIHZhciB0aW1lc3RhbXAgPSB0b0RhdGUoZGlydHlEYXRlKS5nZXRUaW1lKCk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gbmV3IERhdGUodGltZXN0YW1wICsgYW1vdW50KTtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkTWlsbGlzZWNvbmRzL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSIsIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGFyZ3VtZW50IC0gdGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPT4gVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz0+IFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAxKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignMSBhcmd1bWVudCByZXF1aXJlZCwgYnV0IG9ubHkgJyArIGFyZ3VtZW50cy5sZW5ndGggKyAnIHByZXNlbnQnKTtcbiAgfVxuXG4gIHZhciBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpOyAvLyBDbG9uZSB0aGUgZGF0ZVxuXG4gIGlmIChhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHwgdHlwZW9mIGFyZ3VtZW50ID09PSAnb2JqZWN0JyAmJiBhcmdTdHIgPT09ICdbb2JqZWN0IERhdGVdJykge1xuICAgIC8vIFByZXZlbnQgdGhlIGRhdGUgdG8gbG9zZSB0aGUgbWlsbGlzZWNvbmRzIHdoZW4gcGFzc2VkIHRvIG5ldyBEYXRlKCkgaW4gSUUxMFxuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudC5nZXRUaW1lKCkpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBhcmd1bWVudCA9PT0gJ251bWJlcicgfHwgYXJnU3RyID09PSAnW29iamVjdCBOdW1iZXJdJykge1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKCh0eXBlb2YgYXJndW1lbnQgPT09ICdzdHJpbmcnIHx8IGFyZ1N0ciA9PT0gJ1tvYmplY3QgU3RyaW5nXScpICYmIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihcIlN0YXJ0aW5nIHdpdGggdjIuMC4wLWJldGEuMSBkYXRlLWZucyBkb2Vzbid0IGFjY2VwdCBzdHJpbmdzIGFzIGFyZ3VtZW50cy4gUGxlYXNlIHVzZSBgcGFyc2VJU09gIHRvIHBhcnNlIHN0cmluZ3MuIFNlZTogaHR0cHM6Ly9naXQuaW8vZmp1bGVcIik7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG5cbiAgICAgIGNvbnNvbGUud2FybihuZXcgRXJyb3IoKS5zdGFjayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vdG9EYXRlL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSAnZGF0ZS1mbnMvZXNtL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzJ1xuaW1wb3J0IGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMgZnJvbSAnZGF0ZS1mbnMvZXNtL19saWIvZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcy9pbmRleC5qcydcbmltcG9ydCB0elBhcnNlVGltZXpvbmUgZnJvbSAnLi4vX2xpYi90elBhcnNlVGltZXpvbmUnXG5cbnZhciBNSUxMSVNFQ09ORFNfSU5fSE9VUiA9IDM2MDAwMDBcbnZhciBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFID0gNjAwMDBcbnZhciBERUZBVUxUX0FERElUSU9OQUxfRElHSVRTID0gMlxuXG52YXIgcGF0dGVybnMgPSB7XG4gIGRhdGVUaW1lRGVsaW1ldGVyOiAvW1QgXS8sXG4gIHBsYWluVGltZTogLzovLFxuICB0aW1lWm9uZURlbGltZXRlcjogL1taIF0vaSxcblxuICAvLyB5ZWFyIHRva2Vuc1xuICBZWTogL14oXFxkezJ9KSQvLFxuICBZWVk6IFtcbiAgICAvXihbKy1dXFxkezJ9KSQvLCAvLyAwIGFkZGl0aW9uYWwgZGlnaXRzXG4gICAgL14oWystXVxcZHszfSkkLywgLy8gMSBhZGRpdGlvbmFsIGRpZ2l0XG4gICAgL14oWystXVxcZHs0fSkkLyAvLyAyIGFkZGl0aW9uYWwgZGlnaXRzXG4gIF0sXG4gIFlZWVk6IC9eKFxcZHs0fSkvLFxuICBZWVlZWTogW1xuICAgIC9eKFsrLV1cXGR7NH0pLywgLy8gMCBhZGRpdGlvbmFsIGRpZ2l0c1xuICAgIC9eKFsrLV1cXGR7NX0pLywgLy8gMSBhZGRpdGlvbmFsIGRpZ2l0XG4gICAgL14oWystXVxcZHs2fSkvIC8vIDIgYWRkaXRpb25hbCBkaWdpdHNcbiAgXSxcblxuICAvLyBkYXRlIHRva2Vuc1xuICBNTTogL14tKFxcZHsyfSkkLyxcbiAgREREOiAvXi0/KFxcZHszfSkkLyxcbiAgTU1ERDogL14tPyhcXGR7Mn0pLT8oXFxkezJ9KSQvLFxuICBXd3c6IC9eLT9XKFxcZHsyfSkkLyxcbiAgV3d3RDogL14tP1coXFxkezJ9KS0/KFxcZHsxfSkkLyxcblxuICBISDogL14oXFxkezJ9KFsuLF1cXGQqKT8pJC8sXG4gIEhITU06IC9eKFxcZHsyfSk6PyhcXGR7Mn0oWy4sXVxcZCopPykkLyxcbiAgSEhNTVNTOiAvXihcXGR7Mn0pOj8oXFxkezJ9KTo/KFxcZHsyfShbLixdXFxkKik/KSQvLFxuXG4gIC8vIHRpbWV6b25lIHRva2VucyAodG8gaWRlbnRpZnkgdGhlIHByZXNlbmNlIG9mIGEgdHopXG4gIHRpbWV6b25lOiAvKFtaKy1dLip8IFVUQ3woPzpbYS16QS1aXStcXC9bYS16QS1aX10rKD86XFwvW2EtekEtWl9dKyk/KSkkL1xufVxuXG4vKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiBhbiBhcmd1bWVudCBpcyBhIHN0cmluZywgdGhlIGZ1bmN0aW9uIHRyaWVzIHRvIHBhcnNlIGl0LlxuICogRnVuY3Rpb24gYWNjZXB0cyBjb21wbGV0ZSBJU08gODYwMSBmb3JtYXRzIGFzIHdlbGwgYXMgcGFydGlhbCBpbXBsZW1lbnRhdGlvbnMuXG4gKiBJU08gODYwMTogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMVxuICogSWYgdGhlIGZ1bmN0aW9uIGNhbm5vdCBwYXJzZSB0aGUgc3RyaW5nIG9yIHRoZSB2YWx1ZXMgYXJlIGludmFsaWQsIGl0IHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICogQWxsICpkYXRlLWZucyogZnVuY3Rpb25zIHdpbGwgdGhyb3cgYFJhbmdlRXJyb3JgIGlmIGBvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHNgIGlzIG5vdCAwLCAxLCAyIG9yIHVuZGVmaW5lZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8U3RyaW5nfE51bWJlcn0gYXJndW1lbnQgLSB0aGUgdmFsdWUgdG8gY29udmVydFxuICogQHBhcmFtIHtPcHRpb25zV2l0aFRafSBbb3B0aW9uc10gLSB0aGUgb2JqZWN0IHdpdGggb3B0aW9ucy4gU2VlIFtPcHRpb25zXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL09wdGlvbnN9XG4gKiBAcGFyYW0gezB8MXwyfSBbb3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzPTJdIC0gdGhlIGFkZGl0aW9uYWwgbnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgZXh0ZW5kZWQgeWVhciBmb3JtYXRcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy50aW1lWm9uZT0nJ10gLSB1c2VkIHRvIHNwZWNpZnkgdGhlIElBTkEgdGltZSB6b25lIG9mZnNldCBvZiBhIGRhdGUgU3RyaW5nLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHNgIG11c3QgYmUgMCwgMSBvciAyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgc3RyaW5nICcyMDE0LTAyLTExVDExOjMwOjMwJyB0byBkYXRlOlxuICogdmFyIHJlc3VsdCA9IHRvRGF0ZSgnMjAxNC0wMi0xMVQxMTozMDozMCcpXG4gKiAvLz0+IFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHN0cmluZyAnKzAyMDE0MTAxJyB0byBkYXRlLFxuICogLy8gaWYgdGhlIGFkZGl0aW9uYWwgbnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgZXh0ZW5kZWQgeWVhciBmb3JtYXQgaXMgMTpcbiAqIHZhciByZXN1bHQgPSB0b0RhdGUoJyswMjAxNDEwMScsIHthZGRpdGlvbmFsRGlnaXRzOiAxfSlcbiAqIC8vPT4gRnJpIEFwciAxMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCwgZGlydHlPcHRpb25zKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAnMSBhcmd1bWVudCByZXF1aXJlZCwgYnV0IG9ubHkgJyArIGFyZ3VtZW50cy5sZW5ndGggKyAnIHByZXNlbnQnXG4gICAgKVxuICB9XG5cbiAgaWYgKGFyZ3VtZW50ID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTilcbiAgfVxuXG4gIHZhciBvcHRpb25zID0gZGlydHlPcHRpb25zIHx8IHt9XG5cbiAgdmFyIGFkZGl0aW9uYWxEaWdpdHMgPVxuICAgIG9wdGlvbnMuYWRkaXRpb25hbERpZ2l0cyA9PSBudWxsXG4gICAgICA/IERFRkFVTFRfQURESVRJT05BTF9ESUdJVFNcbiAgICAgIDogdG9JbnRlZ2VyKG9wdGlvbnMuYWRkaXRpb25hbERpZ2l0cylcbiAgaWYgKFxuICAgIGFkZGl0aW9uYWxEaWdpdHMgIT09IDIgJiZcbiAgICBhZGRpdGlvbmFsRGlnaXRzICE9PSAxICYmXG4gICAgYWRkaXRpb25hbERpZ2l0cyAhPT0gMFxuICApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYWRkaXRpb25hbERpZ2l0cyBtdXN0IGJlIDAsIDEgb3IgMicpXG4gIH1cblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gJ29iamVjdCcgJiZcbiAgICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCkgPT09ICdbb2JqZWN0IERhdGVdJylcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50LmdldFRpbWUoKSlcbiAgfSBlbHNlIGlmIChcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09ICdudW1iZXInIHx8XG4gICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KSA9PT0gJ1tvYmplY3QgTnVtYmVyXSdcbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KVxuICB9IGVsc2UgaWYgKFxuICAgICEoXG4gICAgICB0eXBlb2YgYXJndW1lbnQgPT09ICdzdHJpbmcnIHx8XG4gICAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpID09PSAnW29iamVjdCBTdHJpbmddJ1xuICAgIClcbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTilcbiAgfVxuXG4gIHZhciBkYXRlU3RyaW5ncyA9IHNwbGl0RGF0ZVN0cmluZyhhcmd1bWVudClcblxuICB2YXIgcGFyc2VZZWFyUmVzdWx0ID0gcGFyc2VZZWFyKGRhdGVTdHJpbmdzLmRhdGUsIGFkZGl0aW9uYWxEaWdpdHMpXG4gIHZhciB5ZWFyID0gcGFyc2VZZWFyUmVzdWx0LnllYXJcbiAgdmFyIHJlc3REYXRlU3RyaW5nID0gcGFyc2VZZWFyUmVzdWx0LnJlc3REYXRlU3RyaW5nXG5cbiAgdmFyIGRhdGUgPSBwYXJzZURhdGUocmVzdERhdGVTdHJpbmcsIHllYXIpXG5cbiAgaWYgKGlzTmFOKGRhdGUpKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTilcbiAgfVxuXG4gIGlmIChkYXRlKSB7XG4gICAgdmFyIHRpbWVzdGFtcCA9IGRhdGUuZ2V0VGltZSgpXG4gICAgdmFyIHRpbWUgPSAwXG4gICAgdmFyIG9mZnNldFxuXG4gICAgaWYgKGRhdGVTdHJpbmdzLnRpbWUpIHtcbiAgICAgIHRpbWUgPSBwYXJzZVRpbWUoZGF0ZVN0cmluZ3MudGltZSlcblxuICAgICAgaWYgKGlzTmFOKHRpbWUpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRhdGVTdHJpbmdzLnRpbWV6b25lIHx8IG9wdGlvbnMudGltZVpvbmUpIHtcbiAgICAgIG9mZnNldCA9IHR6UGFyc2VUaW1lem9uZShcbiAgICAgICAgZGF0ZVN0cmluZ3MudGltZXpvbmUgfHwgb3B0aW9ucy50aW1lWm9uZSxcbiAgICAgICAgbmV3IERhdGUodGltZXN0YW1wICsgdGltZSlcbiAgICAgIClcbiAgICAgIGlmIChpc05hTihvZmZzZXQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGdldCBvZmZzZXQgYWNjdXJhdGUgdG8gaG91ciBpbiB0aW1lem9uZXMgdGhhdCBjaGFuZ2Ugb2Zmc2V0XG4gICAgICBvZmZzZXQgPSBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKG5ldyBEYXRlKHRpbWVzdGFtcCArIHRpbWUpKVxuICAgICAgb2Zmc2V0ID0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhcbiAgICAgICAgbmV3IERhdGUodGltZXN0YW1wICsgdGltZSArIG9mZnNldClcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERhdGUodGltZXN0YW1wICsgdGltZSArIG9mZnNldClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKVxuICB9XG59XG5cbmZ1bmN0aW9uIHNwbGl0RGF0ZVN0cmluZyhkYXRlU3RyaW5nKSB7XG4gIHZhciBkYXRlU3RyaW5ncyA9IHt9XG4gIHZhciBhcnJheSA9IGRhdGVTdHJpbmcuc3BsaXQocGF0dGVybnMuZGF0ZVRpbWVEZWxpbWV0ZXIpXG4gIHZhciB0aW1lU3RyaW5nXG5cbiAgaWYgKHBhdHRlcm5zLnBsYWluVGltZS50ZXN0KGFycmF5WzBdKSkge1xuICAgIGRhdGVTdHJpbmdzLmRhdGUgPSBudWxsXG4gICAgdGltZVN0cmluZyA9IGFycmF5WzBdXG4gIH0gZWxzZSB7XG4gICAgZGF0ZVN0cmluZ3MuZGF0ZSA9IGFycmF5WzBdXG4gICAgdGltZVN0cmluZyA9IGFycmF5WzFdXG4gICAgZGF0ZVN0cmluZ3MudGltZXpvbmUgPSBhcnJheVsyXVxuICAgIGlmIChwYXR0ZXJucy50aW1lWm9uZURlbGltZXRlci50ZXN0KGRhdGVTdHJpbmdzLmRhdGUpKSB7XG4gICAgICBkYXRlU3RyaW5ncy5kYXRlID0gZGF0ZVN0cmluZy5zcGxpdChwYXR0ZXJucy50aW1lWm9uZURlbGltZXRlcilbMF1cbiAgICAgIHRpbWVTdHJpbmcgPSBkYXRlU3RyaW5nLnN1YnN0cihkYXRlU3RyaW5ncy5kYXRlLmxlbmd0aCwgZGF0ZVN0cmluZy5sZW5ndGgpXG4gICAgfVxuICB9XG5cbiAgaWYgKHRpbWVTdHJpbmcpIHtcbiAgICB2YXIgdG9rZW4gPSBwYXR0ZXJucy50aW1lem9uZS5leGVjKHRpbWVTdHJpbmcpXG4gICAgaWYgKHRva2VuKSB7XG4gICAgICBkYXRlU3RyaW5ncy50aW1lID0gdGltZVN0cmluZy5yZXBsYWNlKHRva2VuWzFdLCAnJylcbiAgICAgIGRhdGVTdHJpbmdzLnRpbWV6b25lID0gdG9rZW5bMV1cbiAgICB9IGVsc2Uge1xuICAgICAgZGF0ZVN0cmluZ3MudGltZSA9IHRpbWVTdHJpbmdcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGF0ZVN0cmluZ3Ncbn1cblxuZnVuY3Rpb24gcGFyc2VZZWFyKGRhdGVTdHJpbmcsIGFkZGl0aW9uYWxEaWdpdHMpIHtcbiAgdmFyIHBhdHRlcm5ZWVkgPSBwYXR0ZXJucy5ZWVlbYWRkaXRpb25hbERpZ2l0c11cbiAgdmFyIHBhdHRlcm5ZWVlZWSA9IHBhdHRlcm5zLllZWVlZW2FkZGl0aW9uYWxEaWdpdHNdXG5cbiAgdmFyIHRva2VuXG5cbiAgLy8gWVlZWSBvciDCsVlZWVlZXG4gIHRva2VuID0gcGF0dGVybnMuWVlZWS5leGVjKGRhdGVTdHJpbmcpIHx8IHBhdHRlcm5ZWVlZWS5leGVjKGRhdGVTdHJpbmcpXG4gIGlmICh0b2tlbikge1xuICAgIHZhciB5ZWFyU3RyaW5nID0gdG9rZW5bMV1cbiAgICByZXR1cm4ge1xuICAgICAgeWVhcjogcGFyc2VJbnQoeWVhclN0cmluZywgMTApLFxuICAgICAgcmVzdERhdGVTdHJpbmc6IGRhdGVTdHJpbmcuc2xpY2UoeWVhclN0cmluZy5sZW5ndGgpXG4gICAgfVxuICB9XG5cbiAgLy8gWVkgb3IgwrFZWVlcbiAgdG9rZW4gPSBwYXR0ZXJucy5ZWS5leGVjKGRhdGVTdHJpbmcpIHx8IHBhdHRlcm5ZWVkuZXhlYyhkYXRlU3RyaW5nKVxuICBpZiAodG9rZW4pIHtcbiAgICB2YXIgY2VudHVyeVN0cmluZyA9IHRva2VuWzFdXG4gICAgcmV0dXJuIHtcbiAgICAgIHllYXI6IHBhcnNlSW50KGNlbnR1cnlTdHJpbmcsIDEwKSAqIDEwMCxcbiAgICAgIHJlc3REYXRlU3RyaW5nOiBkYXRlU3RyaW5nLnNsaWNlKGNlbnR1cnlTdHJpbmcubGVuZ3RoKVxuICAgIH1cbiAgfVxuXG4gIC8vIEludmFsaWQgSVNPLWZvcm1hdHRlZCB5ZWFyXG4gIHJldHVybiB7XG4gICAgeWVhcjogbnVsbFxuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlRGF0ZShkYXRlU3RyaW5nLCB5ZWFyKSB7XG4gIC8vIEludmFsaWQgSVNPLWZvcm1hdHRlZCB5ZWFyXG4gIGlmICh5ZWFyID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHZhciB0b2tlblxuICB2YXIgZGF0ZVxuICB2YXIgbW9udGhcbiAgdmFyIHdlZWtcblxuICAvLyBZWVlZXG4gIGlmIChkYXRlU3RyaW5nLmxlbmd0aCA9PT0gMCkge1xuICAgIGRhdGUgPSBuZXcgRGF0ZSgwKVxuICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeWVhcilcbiAgICByZXR1cm4gZGF0ZVxuICB9XG5cbiAgLy8gWVlZWS1NTVxuICB0b2tlbiA9IHBhdHRlcm5zLk1NLmV4ZWMoZGF0ZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgZGF0ZSA9IG5ldyBEYXRlKDApXG4gICAgbW9udGggPSBwYXJzZUludCh0b2tlblsxXSwgMTApIC0gMVxuXG4gICAgaWYgKCF2YWxpZGF0ZURhdGUoeWVhciwgbW9udGgpKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoTmFOKVxuICAgIH1cblxuICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeWVhciwgbW9udGgpXG4gICAgcmV0dXJuIGRhdGVcbiAgfVxuXG4gIC8vIFlZWVktREREIG9yIFlZWVlERERcbiAgdG9rZW4gPSBwYXR0ZXJucy5EREQuZXhlYyhkYXRlU3RyaW5nKVxuICBpZiAodG9rZW4pIHtcbiAgICBkYXRlID0gbmV3IERhdGUoMClcbiAgICB2YXIgZGF5T2ZZZWFyID0gcGFyc2VJbnQodG9rZW5bMV0sIDEwKVxuXG4gICAgaWYgKCF2YWxpZGF0ZURheU9mWWVhckRhdGUoeWVhciwgZGF5T2ZZZWFyKSkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKE5hTilcbiAgICB9XG5cbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHllYXIsIDAsIGRheU9mWWVhcilcbiAgICByZXR1cm4gZGF0ZVxuICB9XG5cbiAgLy8geXl5eS1NTS1kZCBvciBZWVlZTU1ERFxuICB0b2tlbiA9IHBhdHRlcm5zLk1NREQuZXhlYyhkYXRlU3RyaW5nKVxuICBpZiAodG9rZW4pIHtcbiAgICBkYXRlID0gbmV3IERhdGUoMClcbiAgICBtb250aCA9IHBhcnNlSW50KHRva2VuWzFdLCAxMCkgLSAxXG4gICAgdmFyIGRheSA9IHBhcnNlSW50KHRva2VuWzJdLCAxMClcblxuICAgIGlmICghdmFsaWRhdGVEYXRlKHllYXIsIG1vbnRoLCBkYXkpKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoTmFOKVxuICAgIH1cblxuICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeWVhciwgbW9udGgsIGRheSlcbiAgICByZXR1cm4gZGF0ZVxuICB9XG5cbiAgLy8gWVlZWS1Xd3cgb3IgWVlZWVd3d1xuICB0b2tlbiA9IHBhdHRlcm5zLld3dy5leGVjKGRhdGVTdHJpbmcpXG4gIGlmICh0b2tlbikge1xuICAgIHdlZWsgPSBwYXJzZUludCh0b2tlblsxXSwgMTApIC0gMVxuXG4gICAgaWYgKCF2YWxpZGF0ZVdlZWtEYXRlKHllYXIsIHdlZWspKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoTmFOKVxuICAgIH1cblxuICAgIHJldHVybiBkYXlPZklTT1dlZWtZZWFyKHllYXIsIHdlZWspXG4gIH1cblxuICAvLyBZWVlZLVd3dy1EIG9yIFlZWVlXd3dEXG4gIHRva2VuID0gcGF0dGVybnMuV3d3RC5leGVjKGRhdGVTdHJpbmcpXG4gIGlmICh0b2tlbikge1xuICAgIHdlZWsgPSBwYXJzZUludCh0b2tlblsxXSwgMTApIC0gMVxuICAgIHZhciBkYXlPZldlZWsgPSBwYXJzZUludCh0b2tlblsyXSwgMTApIC0gMVxuXG4gICAgaWYgKCF2YWxpZGF0ZVdlZWtEYXRlKHllYXIsIHdlZWssIGRheU9mV2VlaykpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pXG4gICAgfVxuXG4gICAgcmV0dXJuIGRheU9mSVNPV2Vla1llYXIoeWVhciwgd2VlaywgZGF5T2ZXZWVrKVxuICB9XG5cbiAgLy8gSW52YWxpZCBJU08tZm9ybWF0dGVkIGRhdGVcbiAgcmV0dXJuIG51bGxcbn1cblxuZnVuY3Rpb24gcGFyc2VUaW1lKHRpbWVTdHJpbmcpIHtcbiAgdmFyIHRva2VuXG4gIHZhciBob3Vyc1xuICB2YXIgbWludXRlc1xuXG4gIC8vIGhoXG4gIHRva2VuID0gcGF0dGVybnMuSEguZXhlYyh0aW1lU3RyaW5nKVxuICBpZiAodG9rZW4pIHtcbiAgICBob3VycyA9IHBhcnNlRmxvYXQodG9rZW5bMV0ucmVwbGFjZSgnLCcsICcuJykpXG5cbiAgICBpZiAoIXZhbGlkYXRlVGltZShob3VycykpIHtcbiAgICAgIHJldHVybiBOYU5cbiAgICB9XG5cbiAgICByZXR1cm4gKGhvdXJzICUgMjQpICogTUlMTElTRUNPTkRTX0lOX0hPVVJcbiAgfVxuXG4gIC8vIGhoOm1tIG9yIGhobW1cbiAgdG9rZW4gPSBwYXR0ZXJucy5ISE1NLmV4ZWModGltZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgaG91cnMgPSBwYXJzZUludCh0b2tlblsxXSwgMTApXG4gICAgbWludXRlcyA9IHBhcnNlRmxvYXQodG9rZW5bMl0ucmVwbGFjZSgnLCcsICcuJykpXG5cbiAgICBpZiAoIXZhbGlkYXRlVGltZShob3VycywgbWludXRlcykpIHtcbiAgICAgIHJldHVybiBOYU5cbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgKGhvdXJzICUgMjQpICogTUlMTElTRUNPTkRTX0lOX0hPVVIgKyBtaW51dGVzICogTUlMTElTRUNPTkRTX0lOX01JTlVURVxuICAgIClcbiAgfVxuXG4gIC8vIGhoOm1tOnNzIG9yIGhobW1zc1xuICB0b2tlbiA9IHBhdHRlcm5zLkhITU1TUy5leGVjKHRpbWVTdHJpbmcpXG4gIGlmICh0b2tlbikge1xuICAgIGhvdXJzID0gcGFyc2VJbnQodG9rZW5bMV0sIDEwKVxuICAgIG1pbnV0ZXMgPSBwYXJzZUludCh0b2tlblsyXSwgMTApXG4gICAgdmFyIHNlY29uZHMgPSBwYXJzZUZsb2F0KHRva2VuWzNdLnJlcGxhY2UoJywnLCAnLicpKVxuXG4gICAgaWYgKCF2YWxpZGF0ZVRpbWUoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpKSB7XG4gICAgICByZXR1cm4gTmFOXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIChob3VycyAlIDI0KSAqIE1JTExJU0VDT05EU19JTl9IT1VSICtcbiAgICAgIG1pbnV0ZXMgKiBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFICtcbiAgICAgIHNlY29uZHMgKiAxMDAwXG4gICAgKVxuICB9XG5cbiAgLy8gSW52YWxpZCBJU08tZm9ybWF0dGVkIHRpbWVcbiAgcmV0dXJuIG51bGxcbn1cblxuZnVuY3Rpb24gZGF5T2ZJU09XZWVrWWVhcihpc29XZWVrWWVhciwgd2VlaywgZGF5KSB7XG4gIHdlZWsgPSB3ZWVrIHx8IDBcbiAgZGF5ID0gZGF5IHx8IDBcbiAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgwKVxuICBkYXRlLnNldFVUQ0Z1bGxZZWFyKGlzb1dlZWtZZWFyLCAwLCA0KVxuICB2YXIgZm91cnRoT2ZKYW51YXJ5RGF5ID0gZGF0ZS5nZXRVVENEYXkoKSB8fCA3XG4gIHZhciBkaWZmID0gd2VlayAqIDcgKyBkYXkgKyAxIC0gZm91cnRoT2ZKYW51YXJ5RGF5XG4gIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSArIGRpZmYpXG4gIHJldHVybiBkYXRlXG59XG5cbi8vIFZhbGlkYXRpb24gZnVuY3Rpb25zXG5cbnZhciBEQVlTX0lOX01PTlRIID0gWzMxLCAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdXG52YXIgREFZU19JTl9NT05USF9MRUFQX1lFQVIgPSBbMzEsIDI5LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV1cblxuZnVuY3Rpb24gaXNMZWFwWWVhckluZGV4KHllYXIpIHtcbiAgcmV0dXJuIHllYXIgJSA0MDAgPT09IDAgfHwgKHllYXIgJSA0ID09PSAwICYmIHllYXIgJSAxMDAgIT09IDApXG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlRGF0ZSh5ZWFyLCBtb250aCwgZGF0ZSkge1xuICBpZiAobW9udGggPCAwIHx8IG1vbnRoID4gMTEpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmIChkYXRlICE9IG51bGwpIHtcbiAgICBpZiAoZGF0ZSA8IDEpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHZhciBpc0xlYXBZZWFyID0gaXNMZWFwWWVhckluZGV4KHllYXIpXG4gICAgaWYgKGlzTGVhcFllYXIgJiYgZGF0ZSA+IERBWVNfSU5fTU9OVEhfTEVBUF9ZRUFSW21vbnRoXSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIGlmICghaXNMZWFwWWVhciAmJiBkYXRlID4gREFZU19JTl9NT05USFttb250aF0pIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlRGF5T2ZZZWFyRGF0ZSh5ZWFyLCBkYXlPZlllYXIpIHtcbiAgaWYgKGRheU9mWWVhciA8IDEpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHZhciBpc0xlYXBZZWFyID0gaXNMZWFwWWVhckluZGV4KHllYXIpXG4gIGlmIChpc0xlYXBZZWFyICYmIGRheU9mWWVhciA+IDM2Nikge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGlmICghaXNMZWFwWWVhciAmJiBkYXlPZlllYXIgPiAzNjUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlV2Vla0RhdGUoeWVhciwgd2VlaywgZGF5KSB7XG4gIGlmICh3ZWVrIDwgMCB8fCB3ZWVrID4gNTIpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmIChkYXkgIT0gbnVsbCAmJiAoZGF5IDwgMCB8fCBkYXkgPiA2KSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVUaW1lKGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKSB7XG4gIGlmIChob3VycyAhPSBudWxsICYmIChob3VycyA8IDAgfHwgaG91cnMgPj0gMjUpKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBpZiAobWludXRlcyAhPSBudWxsICYmIChtaW51dGVzIDwgMCB8fCBtaW51dGVzID49IDYwKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgaWYgKHNlY29uZHMgIT0gbnVsbCAmJiAoc2Vjb25kcyA8IDAgfHwgc2Vjb25kcyA+PSA2MCkpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9kYXRlLWZucy10ei9lc20vdG9EYXRlL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSIsInZhciBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFID0gNjAwMDA7XG4vKipcbiAqIEdvb2dsZSBDaHJvbWUgYXMgb2YgNjcuMC4zMzk2Ljg3IGludHJvZHVjZWQgdGltZXpvbmVzIHdpdGggb2Zmc2V0IHRoYXQgaW5jbHVkZXMgc2Vjb25kcy5cbiAqIFRoZXkgdXN1YWxseSBhcHBlYXIgZm9yIGRhdGVzIHRoYXQgZGVub3RlIHRpbWUgYmVmb3JlIHRoZSB0aW1lem9uZXMgd2VyZSBpbnRyb2R1Y2VkXG4gKiAoZS5nLiBmb3IgJ0V1cm9wZS9QcmFndWUnIHRpbWV6b25lIHRoZSBvZmZzZXQgaXMgR01UKzAwOjU3OjQ0IGJlZm9yZSAxIE9jdG9iZXIgMTg5MVxuICogYW5kIEdNVCswMTowMDowMCBhZnRlciB0aGF0IGRhdGUpXG4gKlxuICogRGF0ZSNnZXRUaW1lem9uZU9mZnNldCByZXR1cm5zIHRoZSBvZmZzZXQgaW4gbWludXRlcyBhbmQgd291bGQgcmV0dXJuIDU3IGZvciB0aGUgZXhhbXBsZSBhYm92ZSxcbiAqIHdoaWNoIHdvdWxkIGxlYWQgdG8gaW5jb3JyZWN0IGNhbGN1bGF0aW9ucy5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRpbWV6b25lIG9mZnNldCBpbiBtaWxsaXNlY29uZHMgdGhhdCB0YWtlcyBzZWNvbmRzIGluIGFjY291bnQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhkaXJ0eURhdGUpIHtcbiAgdmFyIGRhdGUgPSBuZXcgRGF0ZShkaXJ0eURhdGUuZ2V0VGltZSgpKTtcbiAgdmFyIGJhc2VUaW1lem9uZU9mZnNldCA9IE1hdGguY2VpbChkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkpO1xuICBkYXRlLnNldFNlY29uZHMoMCwgMCk7XG4gIHZhciBtaWxsaXNlY29uZHNQYXJ0T2ZUaW1lem9uZU9mZnNldCA9IGRhdGUuZ2V0VGltZSgpICUgTUlMTElTRUNPTkRTX0lOX01JTlVURTtcbiAgcmV0dXJuIGJhc2VUaW1lem9uZU9mZnNldCAqIE1JTExJU0VDT05EU19JTl9NSU5VVEUgKyBtaWxsaXNlY29uZHNQYXJ0T2ZUaW1lem9uZU9mZnNldDtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBiYXNpcy1hZ2dyaWQtY29tcG9uZW50cyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvdHlwZS1idWlsdGlucyAqL1xuXG4vKipcbiAqIEV2ZW50cyBNaXhpblxuICpcbiAqIEFsbG93IGNsYXNzZXMgdG8gaGF2ZSB0aGVpciBvd24gZXZlbnRzIG1hbmFnZXJcbiAqXG4gKiBAcGFyYW0ge0NsYXNzfSBzdXBlckNsYXNzXG4gKlxuICogQGF1dGhvciBIeXlhbiBBYm8gRmFraGVyIDxoYWJvZmFraGVyQGJhc2lzLmNvbT5cbiAqL1xuY29uc3QgRXZlbnRzTWl4aW4gPSBzdXBlckNsYXNzID0+XG4gIGNsYXNzIGV4dGVuZHMgc3VwZXJDbGFzcyB7XG4gICAgLyoqXG4gICAgICogT2JqZWN0IG9mIHJlZ2lzdGVycyBoYW5kbGVyc1xuICAgICAqXG4gICAgICogQHR5cGUge09iamVjdH1cbiAgICAgKi9cbiAgICBfX2hhbmRsZXJzID0ge31cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVyIGFuIGV2ZW50IGhhbmRsZXJcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIGV2ZW50IG5hbWVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIGhhbmRsZXIgZnVuY3Rpb25cbiAgICAgKi9cbiAgICBvbihuYW1lLCBoYW5kbGVyKSB7XG4gICAgICB0aGlzLl9faGFuZGxlcnNbbmFtZV0gPSB0aGlzLl9faGFuZGxlcnNbbmFtZV0gfHwgW11cbiAgICAgIHRoaXMuX19oYW5kbGVyc1tuYW1lXS5wdXNoKGhhbmRsZXIpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIGFuIGV2ZW50IGhhbmRsZXJcbiAgICAgKlxuICAgICAqICoqTm90ZSA6KiogaWYgaGFuZGxlciBpcyBub3QgcHJvdmlkZWQgdGhlbiBhbGwgcmVnaXN0ZXJlZCBoYW5kbGVyIGZvciB0aGUgZ2l2ZW4gZXZlbnQgd2lsbCBiZSByZW1vdmVkXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBldmVudCBuYW1lXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciBoYW5kbGVyIGZ1bmN0aW9uXG4gICAgICovXG4gICAgb2ZmKG5hbWUsIGhhbmRsZXIpIHtcbiAgICAgIHRoaXMuX19oYW5kbGVyc1tuYW1lXSA9IHRoaXMuX19oYW5kbGVyc1tuYW1lXSB8fCBbXVxuICAgICAgaWYgKCFoYW5kbGVyKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLl9faGFuZGxlcnNbbmFtZV1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAoY29uc3QgcmVnaXN0ZXJlZEhhbmRsZXIgaW4gdGhpcy5fX2hhbmRsZXJzKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5fX2hhbmRsZXJzLmhhc093blByb3BlcnR5KHJlZ2lzdGVyZWRIYW5kbGVyKSAmJlxuICAgICAgICAgICAgdGhpcy5fX2hhbmRsZXJzW3JlZ2lzdGVyZWRIYW5kbGVyXSA9PT0gaGFuZGxlclxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuX19oYW5kbGVyc1tuYW1lXVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5vdGlmeSBoYW5kbGVyc1xuICAgICAqXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgZXZlbnQgbmFtZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBldmVudCBwYXlsb2FkXG4gICAgICovXG4gICAgbm90aWZ5KG5hbWUsIHBheWxvYWQpIHtcbiAgICAgIGNvbnN0IGhhbmRsZXJzID0gdGhpcy5fX2hhbmRsZXJzW25hbWVdIHx8IFtdXG4gICAgICBoYW5kbGVycy5mb3JFYWNoKGhhbmRsZXIgPT4ge1xuICAgICAgICBoYW5kbGVyKHBheWxvYWQpXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4vKipcbiAqIEFuIGV2ZW50cyBtaXhpbiBkZWNvcmF0b3JcbiAqXG4gKiBAcGFyYW0ge0NsYXNzfSBzdXBlckNsYXNzXG4gKlxuICogQHNlZSB7RXZlbnRzTWl4aW59XG4gKi9cbmZ1bmN0aW9uIHdpdGhFdmVudHNNaXhpbihzdXBlckNsYXNzKSB7XG4gIHJldHVybiBFdmVudHNNaXhpbihzdXBlckNsYXNzKVxufVxuXG5leHBvcnQgZGVmYXVsdCBFdmVudHNNaXhpblxuZXhwb3J0IHsgRXZlbnRzTWl4aW4sIHdpdGhFdmVudHNNaXhpbiB9XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvRXZlbnRzTWl4aW4vRXZlbnRzTWl4aW4uanMiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmFzaXMtYWdncmlkLWNvbXBvbmVudHMgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgeyBhdXRvYmluZCwgb3ZlcnJpZGUsIHJlYWRvbmx5IH0gZnJvbSAnY29yZS1kZWNvcmF0b3JzJ1xuaW1wb3J0IHsgd2l0aEV2ZW50c01peGluIH0gZnJvbSAnLi4vRXZlbnRzTWl4aW4nXG5pbXBvcnQgQ29tcG9uZW50IGZyb20gJy4uL0NvbXBvbmVudCdcbmltcG9ydCAnLi9zdHlsZS5zY3NzJ1xuXG4vKipcbiAqIERhdGVUaW1lSW5wdXRcbiAqXG4gKiBTaW1wbGUgRGF0ZVRpbWVJbnB1dCBjb21wb25lbnQgd2hpY2ggaW50ZWdyYXRlcyB0aGUgZmxhdHBpY2tyXG4gKlxuICogQGF1dGhvciBIeXlhbiBBYm8gRmFraGVyIDxoYWJvZmFraGVyQGJhc2lzLmNvbT5cbiAqL1xuQHdpdGhFdmVudHNNaXhpblxuY2xhc3MgRGF0ZVRpbWVJbnB1dCBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBDb25zdGFudCB3aGljaCBkZXNjcmliZXMgdGhlIGV2ZW50IG5hbWUgdGhhdCB3aWxsIGJlIGZpcmVkIHdoZW4gYSBkYXRlXG4gICAqIGlzIHNlbGVjdGVkIHVzaW5nIHRoZSBkYXRlIHBpY2tlclxuICAgKlxuICAgKiBAdHlwZSB7U3RyaW5nfVxuICAgKi9cbiAgQHJlYWRvbmx5XG4gIHN0YXRpYyBPTl9EQVRFX0NIQU5HRUQgPSAnRGF0ZVRpbWVJbnB1dC5PTl9EQVRFX0NIQU5HRUQnXG5cbiAgLyoqXG4gICAqIFRoZSBkYXRlIHBpY2tlciBpbnN0YW5jZVxuICAgKlxuICAgKiBAdHlwZSB7RmxhdHBpY2tyRm59XG4gICAqL1xuICBwaWNrZXIgPSBudWxsXG5cbiAgLyoqXG4gICAqIFRoZSBsYXN0IHNlbGVjdGVkIGRhdGVcbiAgICpcbiAgICogQHR5cGUge0RhdGV8bnVsbH1cbiAgICovXG4gIHNlbGVjdGVkRGF0ZSA9IG51bGxcblxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCByZWNlaXZlZCBwYXJhbXMgd2hlbiBpbml0IGlzIGNhbGxlZFxuICAgKnNcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIF9wYXJhbXMgPSB7fVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3QgbmV3IERhdGVUaW1lSW5wdXRcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKClcblxuICAgIHRoaXMuX2d1aSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgdGhpcy5fZ3VpLmNsYXNzTmFtZSA9ICdhZy1pbnB1dC13cmFwcGVyJ1xuICAgIHRoaXMuX2d1aS5pbm5lckhUTUwgPSAvKiBodG1sICovIGBcbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXRpbWVfX2lucHV0XCI+XG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImRhdGV0aW1lX19pbnB1dF9faW5wdXRcIiB0eXBlPVwidGV4dFwiIGRhdGEtaW5wdXQ+XG4gICAgICAgIDxhIGNsYXNzPVwiZGF0ZXRpbWVfX2lucHV0X19jbGVhclwiIGRhdGEtY2xlYXI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJkYXRldGltZV9faW5wdXRfX2NsZWFyX19pY29uIGFnLWljb24gYWctaWNvbi1jcm9zc1wiPjwvaT5cbiAgICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICAgIGBcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgQG92ZXJyaWRlXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBpbml0KHBhcmFtcykge1xuICAgIHRoaXMuX3BhcmFtcyA9IHBhcmFtc1xuICAgIGNvbnN0IGVuYWJsZVRpbWUgPSB0aGlzLmdldE9wdGlvbignZGF0ZVRpbWVFbmFibGVUaW1lJywgcGFyYW1zLCB0cnVlKVxuICAgIGNvbnN0IHRpbWVfMjRociA9IHRoaXMuZ2V0T3B0aW9uKCdkYXRlVGltZUVuYWJsZTI0SFInLCBwYXJhbXMsIHRydWUpXG4gICAgY29uc3QgZW5hYmxlU2Vjb25kcyA9IHRoaXMuZ2V0T3B0aW9uKCdkYXRlVGltZUVuYWJsZVNlY29uZHMnLCBwYXJhbXMsIGZhbHNlKVxuICAgIGNvbnN0IG5vQ2FsZW5kYXIgPSAhdGhpcy5nZXRPcHRpb24oJ2RhdGVUaW1lRW5hYmxlQ2FsZW5kYXInLCBwYXJhbXMsIHRydWUpXG5cbiAgICBsZXQgZGF0ZUZvcm1hdCA9IHRoaXMuZ2V0T3B0aW9uKCdkYXRlVGltZU1hc2snLCBwYXJhbXMpXG5cbiAgICAvLyB0cnkgdG8gZ2VuZXJhdGUgYSBkZWZhdWx0IGRhdGUgZm9ybWF0IGJhc2VkIG9uIHRoZSBvcHRpb25zXG4gICAgaWYgKCFkYXRlRm9ybWF0KSB7XG4gICAgICBkYXRlRm9ybWF0ID0gbm9DYWxlbmRhciA/ICcnIDogJyVZLyVNei8lRHonXG4gICAgICBpZiAoZW5hYmxlVGltZSkge1xuICAgICAgICBkYXRlRm9ybWF0ICs9IHRpbWVfMjRociA/ICcgJUh6OiVteicgOiAnICVoejolbXonXG5cbiAgICAgICAgaWYgKGVuYWJsZVNlY29uZHMpIHtcbiAgICAgICAgICBkYXRlRm9ybWF0ICs9ICc6JXN6J1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZGF0ZUZvcm1hdCA9IGRhdGVGb3JtYXQudHJpbSgpXG5cbiAgICAvLyBpbml0IHRoZSBkYXRlIHBpY2tlclxuICAgIHRoaXMucGlja2VyID0gZmxhdHBpY2tyKHRoaXMuX2d1aSwge1xuICAgICAgd3JhcDogdHJ1ZSxcbiAgICAgIC8vIGFsbG93IGVudGVyaW5nIHRoZSBkYXRlIG1hbnVhbGx5IHJlcXVpcmVzIGRhdGUgcGFyc2luZyBmcm9tIHN0cmluZ1xuICAgICAgLy8gdGhpcyBpcyBhIHRvdWdoIHRoaW5nIGFuZCByZXF1aXJlcyBsaWJzIGxpa2UgbW9tZW50XG4gICAgICBhbGxvd0lucHV0OiBmYWxzZSxcbiAgICAgIG9uQ2hhbmdlOiB0aGlzLl9vbkRhdGVDaGFuZ2VkLFxuICAgICAgZm9ybWF0RGF0ZTogdGhpcy5mb3JtYXREYXRlLFxuICAgICAgbWF4RGF0ZTogdGhpcy5nZXRPcHRpb24oJ2RhdGVUaW1lTWF4JywgcGFyYW1zLCBudWxsKSxcbiAgICAgIG1pbkRhdGU6IHRoaXMuZ2V0T3B0aW9uKCdkYXRlVGltZU1pbicsIHBhcmFtcywgbnVsbCksXG4gICAgICBkZWZhdWx0SG91cjogdGhpcy5nZXRPcHRpb24oJ2RhdGVUaW1lRGVmYXVsdEhvdXInLCBwYXJhbXMsIDEyKSxcbiAgICAgIGRlZmF1bHRNaW51dGU6IHRoaXMuZ2V0T3B0aW9uKCdkYXRlVGltZURlZmF1bHRNaW51dGUnLCBwYXJhbXMsIDApLFxuICAgICAgZGlzYWJsZU1vYmlsZTogdGhpcy5nZXRPcHRpb24oJ2RhdGVUaW1lRGlzYWJsZU1vYmlsZScsIHBhcmFtcywgZmFsc2UpLFxuICAgICAgd2Vla051bWJlcnM6IHRoaXMuZ2V0T3B0aW9uKCdkYXRlVGltZUVuYWJsZVdlZWtOdW1iZXInLCBwYXJhbXMsIGZhbHNlKSxcbiAgICAgIGxvY2FsZTogdGhpcy5fZ2V0UGlja2VyTG9jYWxlKCksXG4gICAgICBub0NhbGVuZGFyLFxuICAgICAgZGF0ZUZvcm1hdCxcbiAgICAgIGVuYWJsZVRpbWUsXG4gICAgICBlbmFibGVTZWNvbmRzLFxuICAgICAgdGltZV8yNGhyLFxuICAgIH0pXG5cbiAgICAvLyBmb3JjZSBkaWFsb2cgb3ZlcmZsb3dcbiAgICB0aGlzLnBpY2tlci5jYWxlbmRhckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdhZy1jdXN0b20tY29tcG9uZW50LXBvcHVwJylcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgQG92ZXJyaWRlXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5waWNrZXIuZGVzdHJveSgpXG4gICAgdGhpcy5vZmYoRGF0ZVRpbWVJbnB1dC5PTl9EQVRFX0NIQU5HRUQpXG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBwaWNrZXIgZGF0ZVxuICAgKlxuICAgKiBAcGFyYW0ge0RhdGV8U3RyaW5nfSB2YWx1ZSB0aGUgZGF0ZSB2YWx1ZSB0byBzZXRcbiAgICovXG4gIHNldERhdGUodmFsdWUpIHtcbiAgICB0aGlzLnBpY2tlci5zZXREYXRlKHZhbHVlLCB0cnVlKVxuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gUGlja2VyXG4gICAqL1xuICBvcGVuKCkge1xuICAgIHRoaXMucGlja2VyLm9wZW4oKVxuICAgIHRoaXMuX2d1aS5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLmZvY3VzKClcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZSBwaWNrZXJcbiAgICovXG4gIGNsb3NlKCkge1xuICAgIHRoaXMucGlja2VyLmNsb3NlKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgcGlja2VyXG4gICAqL1xuICByZXNldCgpIHtcbiAgICAvKiogdGhpcyBjaGVjayBiZWNhdXNlIHRoZSB0ZXN0cyBmYWlsIGhlcmUgZm9yIHNvbWUgcmVhc29ucyAgKi9cbiAgICBpZiAodGhpcy5waWNrZXIuY29uZmlnKSB7XG4gICAgICB0aGlzLnBpY2tlci5jbGVhcigpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCB0aGUgZGF0ZSB1c2luZyBgQkJqLk1hc2tzLlR5cGVzLmRhdGVgXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBkYXRlIGRhdGUgYXMgYSBzdHJpbmdcbiAgICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdCBCQmogZGF0ZSBmb3JtYXRcbiAgICpcbiAgICogQHJldHVybiB7U3RyaW5nfSBmb3JtYXR0ZWQgZGF0ZSBhcyBzdHJpbmdcbiAgICovXG4gIEBhdXRvYmluZFxuICBmb3JtYXREYXRlKGRhdGUsIGZvcm1hdCkge1xuICAgIGNvbnN0IGRhdGVUaW1lRm9ybWF0dGVyID0gdGhpcy5nZXRPcHRpb24oJ2RhdGVUaW1lRm9ybWF0dGVyJywgdGhpcy5fcGFyYW1zKVxuICAgIGNvbnN0IGxvY2FsZSA9IHRoaXMuZ2V0T3B0aW9uKFxuICAgICAgJ2RhdGVUaW1lTG9jYWxlJyxcbiAgICAgIHRoaXMuX3BhcmFtcyxcbiAgICAgIEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUgfHwgJ2VuLVVTJ1xuICAgIClcblxuICAgIGlmIChkYXRlVGltZUZvcm1hdHRlcikge1xuICAgICAgY29uc3QgdHlwZSA9IHR5cGVvZiBkYXRlVGltZUZvcm1hdHRlclxuICAgICAgbGV0IGV4cHJlc3Npb24gPSBkYXRlVGltZUZvcm1hdHRlclxuXG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICBpZiAoIShleHByZXNzaW9uLmluZGV4T2YoJ3JldHVybicpID49IDApKSB7XG4gICAgICAgICAgICBleHByZXNzaW9uID0gJ3JldHVybiAnICsgZXhwcmVzc2lvbiArICc7J1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBuZXcgRnVuY3Rpb24oXG4gICAgICAgICAgICAnZGF0ZScsXG4gICAgICAgICAgICAnZm9ybWF0JyxcbiAgICAgICAgICAgICdsb2NhbGUnLFxuICAgICAgICAgICAgJ0RhdGVNYXNrJyxcbiAgICAgICAgICAgIGV4cHJlc3Npb25cbiAgICAgICAgICApKGRhdGUsIGZvcm1hdCwgbG9jYWxlLCBCQmouTWFza3MuRGF0ZU1hc2spXG5cbiAgICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICAgIHJldHVybiBkYXRlVGltZUZvcm1hdHRlcihkYXRlLCBmb3JtYXQsIGxvY2FsZSwgQkJqLk1hc2tzLkRhdGVNYXNrKVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBJbnZhbGlkIGRhdGVUaW1lRm9ybWF0dGVyIGRlZmluZWQgZm9yIGNvbHVtbiBcIiR7dGhpcy5fcGFyYW1zLmNvbERlZi5maWVsZH1cIi4gVGhlIGZvcm1hdHRlciBzaG91bGQgYmUgYW4gZXhwcmVzc2lvbiBvciBwbGFpbiBmdW5jdGlvbmBcbiAgICAgICAgICApXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghZm9ybWF0IHx8IChmb3JtYXQgJiYgZm9ybWF0LmluZGV4T2YoJyUnKSA8IDApKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICByZXR1cm4gQkJqLk1hc2tzLkRhdGVNYXNrLm1hc2soZGF0ZSwgZm9ybWF0LCBsb2NhbGUpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiB0byBkYXRlIHBpY2tlciBjaGFuZ2VzIGFuZCB1cGRhdGUgdGhlIHNlbGVjdGVkIGRhdGVcbiAgICpcbiAgICogQHBhcmFtIHtBcnJheX0gc2VsZWN0ZWREYXRlcyAgYXJyYXkgb2Ygc2VsZWN0ZWQgZGF0ZXNcbiAgICovXG4gIEBhdXRvYmluZFxuICBfb25EYXRlQ2hhbmdlZChzZWxlY3RlZERhdGVzKSB7XG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBzZWxlY3RlZERhdGVzWzBdIHx8IG51bGxcbiAgICB0aGlzLm5vdGlmeShEYXRlVGltZUlucHV0Lk9OX0RBVEVfQ0hBTkdFRCwgdGhpcy5zZWxlY3RlZERhdGUpXG4gIH1cblxuICAvKipcbiAgICogR2V0IHBpY2tlciBnbG9iYWwgbG9jYWxpemF0aW9uIHdoaWNoIHdpbGwgd29yayB3aXRoIGFueSBsb2NhbGVcbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKlxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vZmxhdHBpY2tyL2ZsYXRwaWNrci9ibG9iL21hc3Rlci9zcmMvbDEwbi9kZWZhdWx0LnRzXG4gICAqL1xuICBfZ2V0UGlja2VyTG9jYWxlKCkge1xuICAgIGNvbnN0IGxvY2FsZSA9IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUgfHwgJ2VuLVVTJ1xuXG4gICAgY29uc3Qgd2Vla0RheXNTaG9ydCA9IFtdXG4gICAgY29uc3Qgd2Vla0RheXNMb25nID0gW11cblxuICAgIGZvciAobGV0IGRheSA9IDQ7IGRheSA8IDExOyBkYXkrKykge1xuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKDE5NzAsIDEgLSAxLCBkYXkpXG5cbiAgICAgIHdlZWtEYXlzU2hvcnQucHVzaChcbiAgICAgICAgZGF0ZVxuICAgICAgICAgIC50b0xvY2FsZVN0cmluZyhsb2NhbGUsIHtcbiAgICAgICAgICAgIHdlZWtkYXk6ICdzaG9ydCcsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuc3BsaXQoJywnKVswXSAvLyB0aGUgZGF0ZS10aW1lLWZvcm1hdC10aW1lem9uZSBwb2x5ZmlsbCBhdHRhY2ggdGhlIGRhdGUgYWxzb1xuICAgICAgKVxuXG4gICAgICB3ZWVrRGF5c0xvbmcucHVzaChcbiAgICAgICAgZGF0ZVxuICAgICAgICAgIC50b0xvY2FsZVN0cmluZyhsb2NhbGUsIHtcbiAgICAgICAgICAgIHdlZWtkYXk6ICdsb25nJyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5zcGxpdCgnLCcpWzBdIC8vIHRoZSBkYXRlLXRpbWUtZm9ybWF0LXRpbWV6b25lIHBvbHlmaWxsIGF0dGFjaCB0aGUgZGF0ZSBhbHNvXG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgbW9udGhzU2hvcnQgPSBbXVxuICAgIGNvbnN0IG1vbnRoc0xvbmcgPSBbXVxuXG4gICAgZm9yIChsZXQgbW9udGggPSAwOyBtb250aCA8IDEyOyBtb250aCsrKSB7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoMTk3MCwgbW9udGgsIDQpXG5cbiAgICAgIG1vbnRoc1Nob3J0LnB1c2goXG4gICAgICAgIGRhdGUudG9Mb2NhbGVTdHJpbmcobG9jYWxlLCB7XG4gICAgICAgICAgbW9udGg6ICdzaG9ydCcsXG4gICAgICAgIH0pXG4gICAgICApXG5cbiAgICAgIG1vbnRoc0xvbmcucHVzaChcbiAgICAgICAgZGF0ZS50b0xvY2FsZVN0cmluZyhsb2NhbGUsIHtcbiAgICAgICAgICBtb250aDogJ2xvbmcnLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB3ZWVrZGF5czoge1xuICAgICAgICBzaG9ydGhhbmQ6IHdlZWtEYXlzU2hvcnQsXG4gICAgICAgIGxvbmdoYW5kOiB3ZWVrRGF5c0xvbmcsXG4gICAgICB9LFxuICAgICAgbW9udGhzOiB7XG4gICAgICAgIHNob3J0aGFuZDogbW9udGhzU2hvcnQsXG4gICAgICAgIGxvbmdoYW5kOiBtb250aHNMb25nLFxuICAgICAgfSxcbiAgICAgIGRheXNJbk1vbnRoOiBbMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV0sXG4gICAgICBmaXJzdERheU9mV2VlazogQkJqLk1hc2tzLlV0aWxzLkRhdGVzLmdldFdlZWtTdGFydEJ5TG9jYWxlKGxvY2FsZSksXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICAgIG9yZGluYWw6IG51bWJlciA9PiAnJyxcbiAgICAgIHJhbmdlU2VwYXJhdG9yOiAnICAnLFxuICAgICAgd2Vla0FiYnJldmlhdGlvbjogJycsXG4gICAgICBzY3JvbGxUaXRsZTogJycsXG4gICAgICB0b2dnbGVUaXRsZTogJycsXG4gICAgICBhbVBNOiBbJ0FNJywgJ1BNJ10sXG4gICAgICB5ZWFyQXJpYUxhYmVsOiAnJyxcbiAgICAgIGhvdXJBcmlhTGFiZWw6ICcnLFxuICAgICAgbWludXRlQXJpYUxhYmVsOiAnJyxcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRGF0ZVRpbWVJbnB1dFxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL0RhdGVUaW1lSW5wdXQvRGF0ZVRpbWVJbnB1dC5qcyIsIlxudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZS5zY3NzXCIpO1xuXG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcblxudmFyIHRyYW5zZm9ybTtcbnZhciBpbnNlcnRJbnRvO1xuXG5cblxudmFyIG9wdGlvbnMgPSB7XCJobXJcIjp0cnVlfVxuXG5vcHRpb25zLnRyYW5zZm9ybSA9IHRyYW5zZm9ybVxub3B0aW9ucy5pbnNlcnRJbnRvID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQuaGVhZFxuICAgICAgICAgICAgICB9O1xuXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXMuanNcIikoY29udGVudCwgb3B0aW9ucyk7XG5cbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuXG5pZihtb2R1bGUuaG90KSB7XG5cdG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZS5zY3NzXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3R5bGUuc2Nzc1wiKTtcblxuXHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXG5cdFx0dmFyIGxvY2FscyA9IChmdW5jdGlvbihhLCBiKSB7XG5cdFx0XHR2YXIga2V5LCBpZHggPSAwO1xuXG5cdFx0XHRmb3Ioa2V5IGluIGEpIHtcblx0XHRcdFx0aWYoIWIgfHwgYVtrZXldICE9PSBiW2tleV0pIHJldHVybiBmYWxzZTtcblx0XHRcdFx0aWR4Kys7XG5cdFx0XHR9XG5cblx0XHRcdGZvcihrZXkgaW4gYikgaWR4LS07XG5cblx0XHRcdHJldHVybiBpZHggPT09IDA7XG5cdFx0fShjb250ZW50LmxvY2FscywgbmV3Q29udGVudC5sb2NhbHMpKTtcblxuXHRcdGlmKCFsb2NhbHMpIHRocm93IG5ldyBFcnJvcignQWJvcnRpbmcgQ1NTIEhNUiBkdWUgdG8gY2hhbmdlZCBjc3MtbW9kdWxlcyBsb2NhbHMuJyk7XG5cblx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdH0pO1xuXG5cdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufVxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9EYXRlVGltZUlucHV0L3N0eWxlLnNjc3MiLCJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5kYXRldGltZV9faW5wdXR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjt3aWR0aDoxMDAlO21hcmdpbjphdXRvIDRweDtib3JkZXI6dGhpbiBzb2xpZCAjMDAwfS5kYXRldGltZV9faW5wdXRfX2lucHV0e2ZsZXg6MTtvdXRsaW5lOm5vbmUgIWltcG9ydGFudDtib3JkZXI6bm9uZSAhaW1wb3J0YW50fS5kYXRldGltZV9faW5wdXRfX2NsZWFye21hcmdpbi1sZWZ0OjFweDttYXJnaW4tdG9wOjFweDt0ZXh0LWFsaWduOmNlbnRlcjtvdXRsaW5lOm5vbmV9LmFnLXRoZW1lLWJhbGhhbSAuZGF0ZXRpbWVfX2lucHV0e2JvcmRlci1jb2xvcjojOTVBNUE2fS5hZy10aGVtZS1iYWxoYW0tZGFyayAuZGF0ZXRpbWVfX2lucHV0e2JvcmRlci1jb2xvcjojZWNmMGYxfS5hZy10aGVtZS1tYXRlcmlhbCAuZGF0ZXRpbWVfX2lucHV0e21hcmdpbjphdXRvIDhweH1cXG5cIiwgXCJcIl0pO1xuXG4vLyBleHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyIS4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL0RhdGVUaW1lSW5wdXQvc3R5bGUuc2Nzc1xuLy8gbW9kdWxlIGlkID0gMTI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBiYXNpcy1hZ2dyaWQtY29tcG9uZW50cyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmltcG9ydCBEYXRlVGltZUVkaXRvciBmcm9tICcuL0RhdGVUaW1lRWRpdG9yJ1xuXG5leHBvcnQgZGVmYXVsdCBEYXRlVGltZUVkaXRvclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL0RhdGVUaW1lRWRpdG9yL2luZGV4LmpzIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWFnZ3JpZC1jb21wb25lbnRzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IHsgYXV0b2JpbmQsIG92ZXJyaWRlIH0gZnJvbSAnY29yZS1kZWNvcmF0b3JzJ1xuaW1wb3J0IHV0Y1RvWm9uZWRUaW1lIGZyb20gJ2RhdGUtZm5zLXR6L3V0Y1RvWm9uZWRUaW1lJ1xuaW1wb3J0IERhdGVUaW1lSW5wdXQgZnJvbSAnLi4vRGF0ZVRpbWVJbnB1dCdcbmltcG9ydCBDb21wb25lbnQgZnJvbSAnLi4vQ29tcG9uZW50J1xuXG4vKipcbiAqIERhdGVUaW1lSW5wdXRcbiAqXG4gKiBTaW1wbGUgRGF0ZVRpbWVJbnB1dCBjb21wb25lbnQgd2hpY2ggaW50ZWdyYXRlcyB0aGUgZmxhdHBpY2tyXG4gKlxuICogIyMgT3B0aW9uc1xuICpcbiAqIHwgTmFtZSAgICAgICAgICAgICAgICAgIFx0fCBEZWZhdWx0ICAgICBcdHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx0fFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cdHw6LS0tLS0tLS0tLS0tLTp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8ICoqZGF0ZVRpbWVFbmFibGVUaW1lKiogICB8IGZhbHNlICAgIHwgZW5hYmxlIC8gZGlzYWJsZSB0aW1lXG4gKiB8ICoqZGF0ZVRpbWVFbmFibGUyNEhSKiogICB8IGZhbHNlICAgIHwgZW5hYmxlIC8gZGlzYWJsZSB0aW1lIDI0IGZvcm1hdFxuICogfCAqKmRhdGVUaW1lRW5hYmxlU2Vjb25kcyoqICAgfCBmYWxzZSAgICB8IGVuYWJsZSAvIGRpc2FibGUgc2Vjb25kcyBtYW5hZ2VtZW50XG4gKiB8ICoqZGF0ZVRpbWVFbmFibGVDYWxlbmRhcioqICAgfCBmYWxzZSAgICB8IGVuYWJsZSAvIGRpc2FibGUgQ2FsZW5kYXIuXG4gKiB8ICoqZGF0ZVRpbWVNYXNrKiogICB8IGZhbHNlICAgIHwgVGhlIG1hc2sgdXNlZCB0byBmb3JtYXQgdGhlIHNlbGVjdGVkIGRhdGVcbiAqIHwgKipkYXRlVGltZU1heCoqICAgfCB1bmRlZmluZWQgICAgfCAgTWF4IGFsbG93ZWQgZGF0ZVxuICogfCAqKmRhdGVUaW1lTWluKiogICB8IHVuZGVmaW5lZCAgICB8ICBNaW4gYWxsb3dlZCBkYXRlXG4gKiB8ICoqZGF0ZVRpbWVGb3JtYXR0ZXIqKiAgIHwgZmFsc2UgICAgfCAgQSBmdW5jdGlvbiBvciBleHByZXNzaW9uIHRvIGZvcm1hdCB0aGUgZGF0ZSAoQHNlZSBzdXBwb3J0ZWQgcGFyYW0pXG4gKiB8ICoqZGF0ZVRpbWVMb2NhbGUqKiAgIHwgU3lzdGVtIGRlZmF1bHQgICAgfCAgQSBsb2NhbGUgdG8gdXNlIGZvciBkYXRlIGZvcm1hdHRpbmdcbiAqIHwgKipkYXRlVGltZURlZmF1bHRIb3VyKiogICB8IDEyICAgIHwgIEluaXRpYWwgdmFsdWUgb2YgdGhlIGhvdXIgZWxlbWVudC5cbiAqIHwgKipkYXRlVGltZURlZmF1bHRNaW51dGUqKiAgIHwgMCAgICB8ICBJbml0aWFsIHZhbHVlIG9mIHRoZSBtaW51dGUgZWxlbWVudC5cbiAqIHwgKipkYXRlVGltZURpc2FibGVNb2JpbGUqKiAgIHwgZmFsc2UgICAgfCAgU2V0IGRpc2FibGVNb2JpbGUgdG8gdHJ1ZSB0byBhbHdheXMgdXNlIHRoZSBub24tbmF0aXZlIHBpY2tlci5cbiAqIHwgKipkYXRlVGltZUVuYWJsZVdlZWtOdW1iZXIqKiAgIHwgdHJ1ZSAgICB8ICBFbmFibGVzIGRpc3BsYXkgb2Ygd2VlayBudW1iZXJzIGluIGNhbGVuZGFyLlxuICpcbiAqIEBhdXRob3IgSHl5YW4gQWJvIEZha2hlciA8aGFib2Zha2hlckBiYXNpcy5jb20+XG4gKi9cbmNsYXNzIERhdGVUaW1lRWRpdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIEB0eXBlIHtEYXRlVGltZUlucHV0fVxuICAgKi9cbiAgX2lucHV0ID0gbmV3IERhdGVUaW1lSW5wdXQoKVxuXG4gIC8qKlxuICAgKiBAdHlwZSB7U3RyaW5nfVxuICAgKi9cbiAgX3ZhbHVlID0gbnVsbFxuXG4gIC8qKlxuICAgKiBQYXJhbXMgcmVjZWl2ZWQgaW4gaW5pdFxuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgX3BhcmFtcyA9IG51bGxcblxuICAvKipcbiAgICogVGFrZXMgaW5jb21wbGV0ZSBpc28gc3RyaW5nIGFuZCByZXR1cm4gYSBjb21wbGV0ZSBvbmVcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IGRhdGUgaW5jb21wbGV0ZSBpc28gc3RyaW5nXG4gICAqXG4gICAqIEByZXR1cm4ge1N0cmluZ30gY29tcGxldGUgaXNvIHN0cmluZ1xuICAgKi9cbiAgc3RhdGljIGZpeFNob3J0SVNPKHZhbHVlKSB7XG4gICAgcmV0dXJuIEJCai5NYXNrcy5VdGlscy5EYXRlcy5maXhTaG9ydElTTyh2YWx1ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgQG92ZXJyaWRlXG4gIGluaXQocGFyYW1zKSB7XG4gICAgdGhpcy5fcGFyYW1zID0gcGFyYW1zXG4gICAgdGhpcy5mb2N1c0FmdGVyQXR0YWNoZWQgPSBwYXJhbXMuY2VsbFN0YXJ0ZWRFZGl0XG4gICAgaWYgKHRoaXMuZm9jdXNBZnRlckF0dGFjaGVkKSB7XG4gICAgICBsZXQga2V5UHJlc3NCYWNrc3BhY2VPckRlbGV0ZSA9XG4gICAgICAgIHBhcmFtcy5rZXlQcmVzcyA9PSAzMiB8fCBwYXJhbXMua2V5UHJlc3MgPT0gNDYgLy8gc3BhY2UgLy8gZGVsZXRlXG5cbiAgICAgIGlmIChrZXlQcmVzc0JhY2tzcGFjZU9yRGVsZXRlKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gJydcbiAgICAgIH0gZWxzZSBpZiAocGFyYW1zLmNoYXJQcmVzcyAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHBhcmFtcy5jaGFyUHJlc3NcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gcGFyYW1zLnZhbHVlXG4gICAgICAgIGlmIChwYXJhbXMua2V5UHJlc3MgIT0gMTEzKSB7XG4gICAgICAgICAgLy9GMlxuICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0QWxsT25Gb2N1cyA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHBhcmFtcy52YWx1ZVxuICAgIH1cblxuICAgIHRoaXMuX3ZhbHVlID0gRGF0ZVRpbWVFZGl0b3IuZml4U2hvcnRJU08odGhpcy5fdmFsdWUpXG4gICAgdGhpcy5faW5wdXQuaW5pdChwYXJhbXMpXG4gICAgdGhpcy5faW5wdXQub24oRGF0ZVRpbWVJbnB1dC5PTl9EQVRFX0NIQU5HRUQsIHRoaXMuX29uRGF0ZUNoYW5nZSlcblxuICAgIGlmICh0aGlzLl92YWx1ZSkge1xuICAgICAgdGhpcy5faW5wdXQuc2V0RGF0ZShcbiAgICAgICAgdXRjVG9ab25lZFRpbWUodGhpcy5fdmFsdWUsIEJCai5NYXNrcy5VdGlscy5EYXRlcy5nZXRUaW1lem9uZU9yT2Zmc2V0KCkpXG4gICAgICApXG4gICAgfVxuXG4gICAgdGhpcy5fZ3VpID0gdGhpcy5faW5wdXQuZ2V0R3VpKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgQG92ZXJyaWRlXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5faW5wdXQuZGVzdHJveSgpXG4gIH1cblxuICAvKipcbiAgICogR2V0cyBjYWxsZWQgb25jZSBhZnRlciBHVUkgaXMgYXR0YWNoZWQgdG8gRE9NLlxuICAgKiBNYWtlIHN1cmUgdGhlIGNvbnRhaW5lciBpcyBhbHdheXMgZm9jdXNlZCBhbmQgbGlzdGVuaW5nIHRvIGtleSBjaGFuZ2VzXG4gICAqL1xuICBhZnRlckd1aUF0dGFjaGVkKCkge1xuICAgIGlmICh0aGlzLmZvY3VzQWZ0ZXJBdHRhY2hlZCkge1xuICAgICAgdGhpcy5mb2N1c0luKClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBmaW5hbCB2YWx1ZSB0byB0aGUgZ3JpZCwgdGhlIHJlc3VsdCBvZiB0aGUgZWRpdGluZ1xuICAgKlxuICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgKi9cbiAgZ2V0VmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlXG4gIH1cblxuICAvKipcbiAgICogR2V0cyBjYWxsZWQgb25jZSBhZnRlciBpbml0aWFsaXplZCBhbmQgcmV0dXJucyBmYWxzZSBzbyB0aGUgZWRpdG9yIGFwcGVhcnMgaW4gdGhlIGNlbGxcbiAgICpcbiAgICogQHJldHVybiB7Qm9vbGVhbn0gYWx3YXlzIGZhbHNlXG4gICAqKi9cbiAgaXNQb3B1cCgpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBkb2luZyBmdWxsIHJvdyBlZGl0LCB0aGVuIGdldHMgY2FsbGVkIHdoZW4gdGFiYmluZyBpbnRvIHRoZSBjZWxsLlxuICAgKi9cbiAgZm9jdXNJbigpIHtcbiAgICB0aGlzLl9pbnB1dC5vcGVuKClcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBkb2luZyBmdWxsIHJvdyBlZGl0LCB0aGVuIGdldHMgY2FsbGVkIHdoZW4gdGFiYmluZyBvdXQgb2YgdGhlIGNlbGwuXG4gICAqL1xuICBmb2N1c091dCgpIHtcbiAgICB0aGlzLl9pbnB1dC5jbG9zZSgpXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBlZGl0b3IgdmFsdWUgd2l0aCBzZWxlY3RlZCBkYXRlIGZyb20gdGhlIGlucHV0XG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBkYXRlXG4gICAqL1xuICBAYXV0b2JpbmRcbiAgX29uRGF0ZUNoYW5nZShkYXRlKSB7XG4gICAgdGhpcy5fdmFsdWUgPSBkYXRlIGluc3RhbmNlb2YgRGF0ZSA/IGRhdGUudG9JU09TdHJpbmcoKSA6ICcnXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRGF0ZVRpbWVFZGl0b3JcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9EYXRlVGltZUVkaXRvci9EYXRlVGltZUVkaXRvci5qcyIsIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuIFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbiBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4gXHRcdFx0XHRnZXQ6IGdldHRlclxuIFx0XHRcdH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDEpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2svYm9vdHN0cmFwIDBlNDFkYTFlODgzMDAzZmI4ZjI5IiwibW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFXzBfXztcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBleHRlcm5hbCB7XCJjb21tb25qc1wiOlwiYmJqLW1hc2tzL3NyYy9TdHJpbmdNYXNrXCIsXCJjb21tb25qczJcIjpcImJiai1tYXNrcy9zcmMvU3RyaW5nTWFza1wiLFwiYW1kXCI6XCJiYmotbWFza3Mvc3JjL1N0cmluZ01hc2tcIixcInJvb3RcIjpbXCJCQmpcIixcIk1hc2tzXCIsXCJTdHJpbmdNYXNrXCJdfVxuLy8gbW9kdWxlIGlkID0gMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSIsIi8qXHJcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWlucHV0LW1hc2tpbmcgbGliLlxyXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XHJcbiAqXHJcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXHJcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxyXG4gKi9cclxuXHJcbmltcG9ydCBUZXh0SW5wdXQgZnJvbSAnLi9UZXh0SW5wdXQnXHJcblxyXG5leHBvcnQgZGVmYXVsdCBUZXh0SW5wdXRcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL1RleHRJbnB1dC9pbmRleC5qcyIsIi8qXHJcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWlucHV0LW1hc2tpbmcgbGliLlxyXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XHJcbiAqXHJcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXHJcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxyXG4gKi9cclxuXHJcbmltcG9ydCBTdHJpbmdNYXNrIGZyb20gJ2Jiai1tYXNrcy9zcmMvU3RyaW5nTWFzaydcclxuaW1wb3J0IHtcclxuICBtYXNrSWZOb3RNYXNrZWQsXHJcbiAgdW5tYXNrLFxyXG4gIGZpbmRDYXJldFBvc2l0aW9uLFxyXG4gIGdlbmVyYXRlUGF0dGVybkZyb21NYXNrLFxyXG59IGZyb20gJy4vdG9vbHMuanMnXHJcblxyXG4vKipcclxuICogVGhlIGBUZXh0SW5wdXRgIHdpbGwgd3JhcCB0ZXh0IGlucHV0cyBhbmQgYXBwbHkgdGhlIGdpdmVuIFtiYmogc3RyaW5nIG1hc2tdKGh0dHBzOi8vZ2l0aHViLmNvbS9CYXNpc0h1Yi9iYmotbWFza3Mjc3RyaW5nLW1hc2tzKVxyXG4gKlxyXG4gKiAqKk9wdGlvbnMqKlxyXG4gKlxyXG4gKiBfT3B0aW9ucyBjYW4gYmUgcGFzc2VkIHZpYSBkYXRhIGF0dHJpYnV0ZXMgLiBGb3IgZGF0YSBhdHRyaWJ1dGVzLCBhcHBlbmQgdGhlIG9wdGlvbiBuYW1lIHRvIGRhdGEtLCBhcyBpbiBkYXRhLW1hc2tfXHJcbiAqXHJcbiAqIHwgT3B0aW9uICAgIHwgRGVmYXVsdCB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiB8LS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcclxuICogfCBtYXNrIHwgICAgICAgICB8IFRoZSBiYmogc3RyaW5nIG1hc2sgQHNlZSBbQkJqIFN0cmluZyBNYXNrc10oaHR0cHM6Ly9naXRodWIuY29tL0Jhc2lzSHViL2Jiai1tYXNrcyNzdHJpbmctbWFza3MpIHxcclxuICpcclxuICogIDxicj5cclxuICpcclxuICogKipFeGFtcGxlIDoqKlxyXG4gKiBgYGBodG1sXHJcbiAqICA8aW5wdXQgY2xhc3M9XCJiYmotdGV4dC1tYXNrZWRcIiBuYW1lPVwidGVzdFwiIGlkPVwidGVzdFwiIHZhbHVlPVwiZWQyM1wiIGRhdGEtbWFzaz1cIkFBLTAwXCI+XHJcbiAqXHJcbiAqICA8c2NyaXB0PlxyXG4gKiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKGUpIHtcclxuICogICAgICBuZXcgQmFzaXMuSW5wdXRNYXNraW5nLlRleHRJbnB1dCh7XHJcbiAqICAgICAgICAgb25VcGRhdGU6IChtYXNrZWRWYWx1ZSAsIHJhd1ZhbHVlICwgaW5wdXQpID0+IHtcclxuICogICAgICAgICAgICAvLyBkbyBzb21ldGhpbmdcclxuICogICAgICAgICB9LFxyXG4gKiAgICAgICAgIG9uSW52YWxpZDogKGVyciAsIGlucHV0KSA9PiB7XHJcbiAqICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nXHJcbiAqICAgICAgICAgfVxyXG4gKiAgICAgIH0pXHJcbiAqICAgIH0pXHJcbiAqICA8L3NjcmlwdD5cclxuICogYGBgXHJcbiAqXHJcbiAqIEBhdXRob3IgSHl5YW4gQWJvIEZha2hlciA8aGFib2Zha2hlckBiYXNpcy5jb20+XHJcbiAqL1xyXG5jbGFzcyBUZXh0SW5wdXQge1xyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdCBuZXcgVGV4dElucHV0XHJcbiAgICpcclxuICAgKiBAcGFyYW0gez9PYmplY3R9IG9wdGlvbnMgLSBUaGUgaW5wdXQgb3B0aW9ucy5cclxuICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fFN0cmluZ30gW29wdGlvbnMuZWxlbWVudHM9XCIuYmJqLXRleHQtbWFza2VkXCJdIC0gVGhlIGNsYXNzIG5hbWUgb3IgdGhlIG5vZGUgdG8gdXNlXHJcbiAgICogQHBhcmFtIHtIVE1MRG9jdW1lbnR9IFtvcHRpb25zLmRvY3VtZW50PWRvY3VtZW50XSAtIERvY3VtZW50IGluc3RhbmNlIHRvIHVzZVxyXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5jc3NDbGFzc0Vycm9yPVwiYmJqLW1hc2stZXJyb3JcIl0gLSBBIGNzcyBjbGFzcyB0byBhdHRhY2ggdG8gdGhlIGlucHV0IHdoZW4gaXQgaXMgaW52YWxpZFxyXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5jc3NDbGFzc1N1Y2Nlc3M9XCJiYmotbWFzay1zdWNjZXNzXCJdIC0gQSBjc3MgY2xhc3MgdG8gYXR0YWNoIHRvIHRoZSBpbnB1dCB3aGVuIGl0IGlzIHZhbGlkIGFmdGVyIHRoZSB1c2VyIGludGVyYWN0aW9uXHJcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdGlvbnMub25VcGRhdGU9bnVsbF0gLSBBIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCBvbiB0aGUgbmV3IG1hc2tlZCB2YWx1ZSBpcyBzZXRcclxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0aW9ucy5vbkludmFsaWQ9bnVsbF0gLSBBIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCBvbiB0aGUgaW5wdXQgb3IgdGhlIG1hc2sgaXMgaW52YWxpZFxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSB7fSkge1xyXG4gICAgdGhpcy5vcHRpb25zID0ge1xyXG4gICAgICAuLi57XHJcbiAgICAgICAgZWxlbWVudHM6ICcuYmJqLXRleHQtbWFza2VkJyxcclxuICAgICAgICBkb2M6IGRvY3VtZW50LFxyXG4gICAgICAgIGNzc0NsYXNzRXJyb3I6ICdiYmotbWFzay1lcnJvcicsXHJcbiAgICAgICAgY3NzQ2xhc3NTdWNjZXNzOiAnYmJqLW1hc2stc3VjY2VzcycsXHJcbiAgICAgICAgb25VcGRhdGU6IG51bGwsXHJcbiAgICAgICAgb25JbnZhbGlkOiBudWxsLFxyXG4gICAgICB9LFxyXG4gICAgICAuLi5vcHRpb25zLFxyXG4gICAgfVxyXG4gICAgdGhpcy5fb25LZXlzdHJva2UgPSB0aGlzLl9vbktleXN0cm9rZS5iaW5kKHRoaXMpXHJcbiAgICB0aGlzLl9vbkZvY3VzID0gdGhpcy5fb25Gb2N1cy5iaW5kKHRoaXMpXHJcbiAgICB0aGlzLnJlZnJlc2goKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSB0aGUgY29tcG9uZW50IGFuZCB3cmFwIHRoZSBpbnB1dCBlbGVtZW50cyBmb3IgbWFza2luZyBpbiBjYXNlXHJcbiAgICogdGhleSBhcmUgbm90IHdyYXBwZWQgeWV0XHJcbiAgICovXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIGNvbnN0IGVsZW1lbnRzID1cclxuICAgICAgdHlwZW9mIHRoaXMub3B0aW9ucy5lbGVtZW50cyA9PT0gJ3N0cmluZydcclxuICAgICAgICA/IHRoaXMub3B0aW9ucy5kb2MucXVlcnlTZWxlY3RvckFsbCh0aGlzLm9wdGlvbnMuZWxlbWVudHMpXHJcbiAgICAgICAgOiB0aGlzLm9wdGlvbnMuZWxlbWVudHNcclxuICAgIGxldCBpbnB1dCwgcGFyZW50Q2xhc3NcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlucHV0ID0gZWxlbWVudHNbaV1cclxuICAgICAgaWYgKGlucHV0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkge1xyXG4gICAgICAgIHBhcmVudENsYXNzID0gaW5wdXQucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoJ2NsYXNzJylcclxuXHJcbiAgICAgICAgaWYgKCFpbnB1dC5nZXRBdHRyaWJ1dGUoJ2lkJykpIHtcclxuICAgICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgICAgYEJCak1hc2tpbmc6IElucHV0IGhhcyBubyBJRC4gV2l0aG91dCBhbiBJRCB0aGUgaW5wdXQgY2Fubm90IGJlIG1hc2tlZGAsXHJcbiAgICAgICAgICAgIGlucHV0XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICBjb250aW51ZVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gd2UgZG9uJ3QgaW5pdGlhbGl6ZSB0aGUgaW5wdXQncyB3cmFwIHR3aWNlXHJcbiAgICAgICAgY29uc3QgaXNXcmFwcGVkID1cclxuICAgICAgICAgIHBhcmVudENsYXNzICYmIHBhcmVudENsYXNzLmluZGV4T2YoJ3RleHRJbnB1dE1hc2tfX3dyYXAnKSA+IC0xXHJcbiAgICAgICAgdGhpcy5fd3JhcChpbnB1dCwgaXNXcmFwcGVkKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgIGBCQmpNYXNraW5nOiBJbnZhbGlkIGlucHV0IGVsZW1lbnQuIFRoZSBlbGVtZW50IHdpbGwgYmUgaWdub3JlZGAsXHJcbiAgICAgICAgICBpbnB1dFxyXG4gICAgICAgIClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVW53cmFwIHRoZSBpbnB1dCBlbGVtZW50cyBhbmQgcmVtb3ZlIGF0dGFjaGVkIGxpc3RlbmVyc1xyXG4gICAqL1xyXG4gIGRlc3Ryb3koKSB7XHJcbiAgICBjb25zdCBlbGVtZW50cyA9XHJcbiAgICAgIHR5cGVvZiB0aGlzLm9wdGlvbnMuZWxlbWVudHMgPT09ICdzdHJpbmcnXHJcbiAgICAgICAgPyB0aGlzLm9wdGlvbnMuZG9jLnF1ZXJ5U2VsZWN0b3JBbGwodGhpcy5vcHRpb25zLmVsZW1lbnRzKVxyXG4gICAgICAgIDogdGhpcy5vcHRpb25zLmVsZW1lbnRzXHJcblxyXG4gICAgbGV0IGlucHV0LCBwYXJlbnQsIHBhcmVudENsYXNzXHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpbnB1dCA9IGVsZW1lbnRzW2ldXHJcbiAgICAgIHBhcmVudCA9IGlucHV0LnBhcmVudE5vZGVcclxuICAgICAgcGFyZW50Q2xhc3MgPSBwYXJlbnQuZ2V0QXR0cmlidXRlKCdjbGFzcycpXHJcblxyXG4gICAgICBpZiAocGFyZW50Q2xhc3MgJiYgcGFyZW50Q2xhc3MuaW5kZXhPZigndGV4dElucHV0TWFza19fd3JhcCcpID4gLTEpIHtcclxuICAgICAgICB0aGlzLl91bndyYXAocGFyZW50KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgdGhlIHRleHQgbWFza2luZyBpbnB1dCB3cmFwcGVyXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0hUTUxJbnB1dEVsZW1lbnR9IGlucHV0IHRoZSBpbnB1dCBlbGVtZW50XHJcbiAgICogQHBhcmFtIHtCb29sZWFufSBpc1dyYXBwZWQgd2hlbiB0cnVlIHRoZSBpbnB1dCBpcyBhbHJlYWR5IHdyYXBwZWQgYW5kIHdlIG5lZWQgdG8gYWRkIHdoYXQgaXNcclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNzaW5nIG9ubHlcclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHtIVE1MU3BhbkVsZW1lbnR9IHRoZSB3cmFwIGVsZW1lbnRcclxuICAgKlxyXG4gICAqIEBwcm90ZWN0ZWRcclxuICAgKi9cclxuICBfd3JhcChpbnB1dCwgaXNXcmFwcGVkKSB7XHJcbiAgICBjb25zdCBpbnB1dElkID0gaW5wdXQuZ2V0QXR0cmlidXRlKCdpZCcpLFxyXG4gICAgICBpbnB1dE5hbWUgPSBpbnB1dC5nZXRBdHRyaWJ1dGUoJ25hbWUnKSxcclxuICAgICAgbWFzayA9IGlucHV0LmRhdGFzZXQubWFzayB8fCAnJyxcclxuICAgICAgb3JpZ2luYWxQYXR0ZXJuID0gaW5wdXQucGF0dGVybixcclxuICAgICAgZGVmYXVsdFBhdHRlcm4gPSBnZW5lcmF0ZVBhdHRlcm5Gcm9tTWFzayhtYXNrKSxcclxuICAgICAgcGF0dGVybiA9IG9yaWdpbmFsUGF0dGVybiB8fCBkZWZhdWx0UGF0dGVyblxyXG5cclxuICAgIGxldCB3cmFwID0gbnVsbCxcclxuICAgICAgdW5tYXNrSW5wdXQgPSBudWxsXHJcblxyXG4gICAgaWYgKCFpc1dyYXBwZWQpIHtcclxuICAgICAgd3JhcCA9IHRoaXMub3B0aW9ucy5kb2MuY3JlYXRlRWxlbWVudCgnc3BhbicpXHJcbiAgICAgIHVubWFza0lucHV0ID0gdGhpcy5vcHRpb25zLmRvYy5jcmVhdGVFbGVtZW50KCdpbnB1dCcpIC8vIGhpZGRlbiBpbnB1dCB3aXRoIHRoZSB1bm1hc2tlZCB2YWx1ZXMgZm9yIGZvcm1zXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB3cmFwID0gaW5wdXQucGFyZW50Tm9kZVxyXG4gICAgICB1bm1hc2tJbnB1dCA9IHdyYXAucXVlcnlTZWxlY3RvcignLnRleHRJbnB1dE1hc2tfX3VubWFza2VkSW5wdXQnKVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGNvbmZpZ3VyZSB0aGUgYWN0dWFsIGlucHV0XHJcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgaW5wdXQudmFsdWUgPSBtYXNrSWZOb3RNYXNrZWQoaW5wdXQudmFsdWUsIG1hc2spXHJcbiAgICBpbnB1dC5wYXR0ZXJuID0gcGF0dGVyblxyXG4gICAgaW5wdXQuY2xhc3NMaXN0LmFkZCgndGV4dElucHV0TWFza19fdGV4dElucHV0JylcclxuICAgIGlucHV0LmRhdGFzZXQubWFzayA9IG1hc2tcclxuICAgIGlucHV0LmRhdGFzZXQudmFsdWVVbm1hc2tlZCA9IHVubWFzayhpbnB1dC52YWx1ZSwgbWFzaylcclxuICAgIGlmIChvcmlnaW5hbFBhdHRlcm4gJiYgb3JpZ2luYWxQYXR0ZXJuICE9PSBkZWZhdWx0UGF0dGVybikge1xyXG4gICAgICBpbnB1dC5kYXRhc2V0LmlzQ3VzdG9tUGF0dGVybiA9IHRydWVcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWlzV3JhcHBlZCkge1xyXG4gICAgICBpZiAoIShpbnB1dC5oYXNBdHRyaWJ1dGUoJ3JlYWRvbmx5JykgfHwgaW5wdXQuaGFzQXR0cmlidXRlKCdkaXNhYmxlJykpKSB7XHJcbiAgICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLl9vbktleXN0cm9rZSlcclxuICAgICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXlwcmVzcycsIHRoaXMuX29uS2V5c3Ryb2tlKVxyXG4gICAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ3Bhc3RlJywgdGhpcy5fb25LZXlzdHJva2UpXHJcbiAgICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIHRoaXMuX29uRm9jdXMpXHJcbiAgICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9vbkZvY3VzKVxyXG4gICAgICB9XHJcbiAgICAgIGlucHV0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHdyYXAsIGlucHV0KSAvLyBtb3ZlIHRoZSBpbnB1dCBvdXRzaWRlIHRoZSB3cmFwcGVyXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuX3ZhbGlkYXRlSW5wdXQoaW5wdXQpKSB7XHJcbiAgICAgIHRoaXMuX19maXJlT25VcGRhdGUoaW5wdXQudmFsdWUsIGlucHV0LmRhdGFzZXQudmFsdWVVbm1hc2tlZCwgaW5wdXQpXHJcbiAgICB9XHJcblxyXG4gICAgLy8gY29uZmlndXJlIHRoZSB1bm1hc2tlZCBpbnB1dFxyXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgdW5tYXNrSW5wdXQuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJylcclxuICAgIHVubWFza0lucHV0LnNldEF0dHJpYnV0ZSgndHlwZScsICdoaWRkZW4nKVxyXG4gICAgdW5tYXNrSW5wdXQuY2xhc3NMaXN0LmFkZCgndGV4dElucHV0TWFza19fdW5tYXNrZWRJbnB1dCcpXHJcbiAgICB1bm1hc2tJbnB1dC52YWx1ZSA9IGlucHV0LmRhdGFzZXQudmFsdWVVbm1hc2tlZFxyXG4gICAgaWYgKGlucHV0SWQpIHVubWFza0lucHV0LnNldEF0dHJpYnV0ZSgnaWQnLCBgJHtpbnB1dElkfS11bm1hc2tlZGApXHJcbiAgICBpZiAoaW5wdXROYW1lKSB1bm1hc2tJbnB1dC5zZXRBdHRyaWJ1dGUoJ25hbWUnLCBgJHtpbnB1dE5hbWV9LXVubWFza2VkYClcclxuXHJcbiAgICBpZiAoIWlzV3JhcHBlZCkge1xyXG4gICAgICAvLyBjb25maWd1cmUgdGhlIHdyYXBwZXJcclxuICAgICAgd3JhcC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ3RleHRJbnB1dE1hc2tfX3dyYXAnKVxyXG4gICAgICB3cmFwLmFwcGVuZENoaWxkKHVubWFza0lucHV0KVxyXG4gICAgICB3cmFwLmFwcGVuZENoaWxkKGlucHV0KVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB3cmFwXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVbndyYXAgdGhlIG1hc2tlZCBpbnB1dCBhbmQgcmVtb3ZlIHRoZSB2YWx1ZSBjaGFuZ2VkIGxpc3RlbmVyXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0hUTUxTcGFuRWxlbWVudH0gdGV4dElucHV0IHRoZSB3cmFwcGVyIHNwYW4gaW5zdGFuY2VcclxuICAgKlxyXG4gICAqIEBwcm90ZWN0ZWRcclxuICAgKi9cclxuICBfdW53cmFwKHRleHRJbnB1dCkge1xyXG4gICAgdGV4dElucHV0LnJlbW92ZUNoaWxkKFxyXG4gICAgICB0ZXh0SW5wdXQucXVlcnlTZWxlY3RvcignLnRleHRJbnB1dE1hc2tfX3VubWFza2VkSW5wdXQnKVxyXG4gICAgKVxyXG5cclxuICAgIGNvbnN0IGlucHV0ID0gdGV4dElucHV0LnF1ZXJ5U2VsZWN0b3IoJy50ZXh0SW5wdXRNYXNrX190ZXh0SW5wdXQnKVxyXG4gICAgaW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLl9vbktleXN0cm9rZSlcclxuICAgIGlucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXByZXNzJywgdGhpcy5fb25LZXlzdHJva2UpXHJcbiAgICBpbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCdwYXN0ZScsIHRoaXMuX29uS2V5c3Ryb2tlKVxyXG4gICAgaW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIHRoaXMuX29uRm9jdXMpXHJcbiAgICBpbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuX29uRm9jdXMpXHJcbiAgICBkZWxldGUgaW5wdXQuZGF0YXNldC52YWx1ZVVubWFza2VkXHJcbiAgICBpZiAoIWlucHV0LmRhdGFzZXQuaXNDdXN0b21QYXR0ZXJuKSB7XHJcbiAgICAgIGlucHV0LnJlbW92ZUF0dHJpYnV0ZSgncGF0dGVybicpXHJcbiAgICAgIGRlbGV0ZSBpbnB1dC5kYXRhc2V0LmlzQ3VzdG9tUGF0dGVyblxyXG4gICAgfVxyXG5cclxuICAgIGlucHV0LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5vcHRpb25zLmNzc0NsYXNzRXJyb3IpXHJcblxyXG4gICAgdGV4dElucHV0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGlucHV0LCB0ZXh0SW5wdXQpXHJcbiAgICB0ZXh0SW5wdXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0ZXh0SW5wdXQpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMaXN0ZW4gdG8gZXZlcnkga2V5c3Ryb2tlIG9uIHRoZSBpbnB1dCBhbmQgdXBkYXRlIHRoZSBtYXNrZWQgYW5kIHRoZSB1bm1hc2tlZCB2YWx1ZVxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtFdmVudH0gZVxyXG4gICAqXHJcbiAgICogQHByb3RlY3RlZFxyXG4gICAqL1xyXG4gIF9vbktleXN0cm9rZShlKSB7XHJcbiAgICBpZiAoZS5jdHJsS2V5IHx8IGUuc2hpZnRLZXkgfHwgZS5hbHRLZXkgfHwgZS5tZXRhS2V5KSByZXR1cm5cclxuICAgIGlmKGUua2V5Q29kZSAhPT0gMTMpIGUucHJldmVudERlZmF1bHQoKVxyXG4gICAgXHJcbiAgICBjb25zdCBpbnB1dCA9IGUudGFyZ2V0LFxyXG4gICAgICBtYXNrID0gaW5wdXQuZGF0YXNldC5tYXNrIHx8IHRoaXMub3B0aW9ucy5tYXNrLFxyXG4gICAgICBldmVudFR5cGUgPSBlLnR5cGVcclxuXHJcbiAgICBpbnB1dC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMub3B0aW9ucy5jc3NDbGFzc0Vycm9yKVxyXG4gICAgaW5wdXQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLm9wdGlvbnMuY3NzQ2xhc3NTdWNjZXNzKVxyXG4gICAgaW5wdXQuc2V0Q3VzdG9tVmFsaWRpdHkoJycpO1xyXG5cclxuICAgIGxldCB2YWx1ZSA9IGlucHV0LnZhbHVlLFxyXG4gICAgICBrZXlDb2RlID0gZS5rZXlDb2RlLFxyXG4gICAgICBrZXlDb250ZW50ID0gZS5rZXkgfHwgZS5jb2RlLnJlcGxhY2UoL1teMC05XS9nLCAnJyksXHJcbiAgICAgIGtleSA9IGtleUNvbnRlbnQgPyAoa2V5Q29udGVudC5sZW5ndGggPiAxID8gJycgOiBrZXlDb250ZW50KSA6ICcnLFxyXG4gICAgICBpbnNlcnRQb3NpdGlvbiA9IGZpbmRDYXJldFBvc2l0aW9uKHZhbHVlLCBtYXNrKSxcclxuICAgICAgbmV3VmFsdWUsXHJcbiAgICAgIHVubWFza2VkVmFsdWUsXHJcbiAgICAgIG1hc2tFcnJvciA9IGZhbHNlXHJcblxyXG4gICAgc3dpdGNoIChldmVudFR5cGUpIHtcclxuICAgICAgY2FzZSAncGFzdGUnOlxyXG4gICAgICAgIG5ld1ZhbHVlID0gbWFza0lmTm90TWFza2VkKFxyXG4gICAgICAgICAgKGUuY2xpcGJvYXJkRGF0YSB8fCB3aW5kb3cuY2xpcGJvYXJkRGF0YSkuZ2V0RGF0YSgnVGV4dCcpLFxyXG4gICAgICAgICAgbWFza1xyXG4gICAgICAgIClcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICdrZXl1cCc6XHJcbiAgICAgICAgbmV3VmFsdWUgPSB2YWx1ZVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJ2tleXByZXNzJzpcclxuICAgICAgICBjb25zdCBzZWxlY3Rpb25TdGFydCA9IGlucHV0LnNlbGVjdGlvblN0YXJ0XHJcbiAgICAgICAgaWYgKHNlbGVjdGlvblN0YXJ0ICE9PSBpbnNlcnRQb3NpdGlvbikgaW5zZXJ0UG9zaXRpb24gPSBzZWxlY3Rpb25TdGFydFxyXG5cclxuICAgICAgICBuZXdWYWx1ZSA9XHJcbiAgICAgICAgICB2YWx1ZS5zdWJzdHIoMCwgaW5zZXJ0UG9zaXRpb24pICsga2V5ICsgdmFsdWUuc3Vic3RyKGluc2VydFBvc2l0aW9uKVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuXHJcbiAgICB1bm1hc2tlZFZhbHVlID0gdW5tYXNrKG5ld1ZhbHVlLCBtYXNrKVxyXG5cclxuICAgIGlmIChbMzUsIDM2LCAzNywgMzgsIDM5LCA0MF0uaW5kZXhPZihrZXlDb2RlKSA9PT0gLTEpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBpbnB1dC52YWx1ZSA9IFN0cmluZ01hc2subWFzayh1bm1hc2tlZFZhbHVlLCBtYXNrLCBmYWxzZSlcclxuICAgICAgICBpZih0aGlzLl92YWxpZGF0ZUlucHV0KGlucHV0KSkge1xyXG4gICAgICAgICAgaW5wdXQuZGF0YXNldC52YWx1ZVVubWFza2VkID0gdW5tYXNrZWRWYWx1ZVxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmRvYy5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAgICAgICBgIyR7aW5wdXQuZ2V0QXR0cmlidXRlKCdpZCcpfS11bm1hc2tlZGBcclxuICAgICAgICAgICkudmFsdWUgPSB1bm1hc2tlZFZhbHVlXHJcbiAgICAgICAgICB0aGlzLl9fYXBwbHlDc3NDbGFzc1N0YXRlKGlucHV0LCAnc3VjY2VzcycpXHJcbiAgICAgICAgICB0aGlzLl9fZmlyZU9uVXBkYXRlKGlucHV0LnZhbHVlLCBpbnB1dC5kYXRhc2V0LnZhbHVlVW5tYXNrZWQsIGlucHV0KVxyXG4gICAgICAgIH1cclxuICAgICAgICBtYXNrRXJyb3IgPSBmYWxzZVxyXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIHRoaXMuX19hcHBseUNzc0NsYXNzU3RhdGUoaW5wdXQsICdlcnJvcicpXHJcbiAgICAgICAgdGhpcy5fX2ZpcmVPbkludmFsaWQoZXJyb3IsIGlucHV0KVxyXG4gICAgICAgIG1hc2tFcnJvciA9IHRydWVcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5fdXBkYXRlQ2FyZXRQb3NpdGlvbihpbnB1dCwgbWFzaylcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIW1hc2tFcnJvcikgdGhpcy5fdmFsaWRhdGVJbnB1dChpbnB1dClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3RlbiB0byBmb2N1cyBldmVudHMgb24gdGhlIGlucHV0IGFuZCB1cGRhdGUgdGhlIGNhcmV0IHBvc2l0aW9uXHJcbiAgICogd2hlcmUgdGhlIG5leHQgY2hhciBzaG91bGQgYmUgaW5zZXJ0ZWQgYWNjb3JkaW5nIHRvIHRoZSBtYXNrXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0ZvY3VzRXZlbnR9IGVcclxuICAgKlxyXG4gICAqIEBwcm90ZWN0ZWRcclxuICAgKi9cclxuICBfb25Gb2N1cyhlKSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGUudGFyZ2V0XHJcbiAgICBjb25zdCBtYXNrID0gaW5wdXQuZGF0YXNldC5tYXNrIHx8IHRoaXMub3B0aW9ucy5tYXNrXHJcbiAgICB0aGlzLl91cGRhdGVDYXJldFBvc2l0aW9uKGlucHV0LCBtYXNrKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHRoZSBjYXJldCBwb3NpdGlvbiBvbiB0aGUgaW5wdXQgYmFzZWQgb24gdGhlIGdpdmVuIG1hc2tcclxuICAgKlxyXG4gICAqIEBwYXJhbSB7SFRNTElucHV0RWxlbWVudH0gaW5wdXQgaW5zdGFuY2VcclxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWFzayAgYmJqIHN0cmluZ1xyXG4gICAqXHJcbiAgICogQHByb3RlY3RlZFxyXG4gICAqL1xyXG4gIF91cGRhdGVDYXJldFBvc2l0aW9uKGlucHV0LCBtYXNrKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgcG9zaXRpb24gPSBmaW5kQ2FyZXRQb3NpdGlvbihpbnB1dC52YWx1ZSwgbWFzaylcclxuICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UocG9zaXRpb24sIHBvc2l0aW9uKVxyXG4gICAgfSwgMClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyaWdnZXIgYGNoZWNrVmFsaWRpdHlgIG9uIHRoZSBpbnB1dFxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtIVE1MSW5wdXRFbGVtZW50fSBpbnB1dFxyXG4gICAqXHJcbiAgICogQHJldHVybnMge0Jvb2xlYW59IHRydWUgd2hlbiB2YWxpZCAsIGZhbHNlIG90aGVyd2lzZVxyXG4gICAqXHJcbiAgICogQHByb3RlY3RlZFxyXG4gICAqL1xyXG4gIF92YWxpZGF0ZUlucHV0KGlucHV0KSB7XHJcbiAgICBjb25zdCBpc1ZhbGlkID0gaW5wdXQuY2hlY2tWYWxpZGl0eSgpXHJcblxyXG4gICAgaWYgKGlzVmFsaWQpIHtcclxuICAgICAgdGhpcy5fX2FwcGx5Q3NzQ2xhc3NTdGF0ZShpbnB1dCwgJ3N1Y2Nlc3MnKVxyXG4gICAgICBpbnB1dC5zZXRDdXN0b21WYWxpZGl0eSgnJylcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX19hcHBseUNzc0NsYXNzU3RhdGUoaW5wdXQsICdlcnJvcicpXHJcbiAgICAgIHRoaXMuX19maXJlT25JbnZhbGlkKGlucHV0LnZhbGlkYXRpb25NZXNzYWdlLCBpbnB1dClcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaXNWYWxpZFxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBfX2ZpcmVPblVwZGF0ZSh2YWx1ZU1hc2tlZCwgdmFsdWVVbm1hc2tlZCwgaW5wdXQpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMub25VcGRhdGUpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLm9uVXBkYXRlKHZhbHVlTWFza2VkLCB2YWx1ZVVubWFza2VkLCBpbnB1dClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgX19maXJlT25JbnZhbGlkKGVycm9yLCBpbnB1dCkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vbkludmFsaWQpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLm9uSW52YWxpZChlcnJvciwgaW5wdXQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIF9fYXBwbHlDc3NDbGFzc1N0YXRlKGlucHV0LCBzdGF0ZSkge1xyXG4gICAgaWYgKGlucHV0Lmhhc0F0dHJpYnV0ZSgncmVhZG9ubHknKSB8fCBpbnB1dC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykpIHtcclxuICAgICAgaW5wdXQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLm9wdGlvbnMuY3NzQ2xhc3NFcnJvcilcclxuICAgICAgaW5wdXQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLm9wdGlvbnMuY3NzQ2xhc3NTdWNjZXNzKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHN0YXRlID09PSAnc3VjY2VzcycpIHtcclxuICAgICAgICBpbnB1dC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMub3B0aW9ucy5jc3NDbGFzc0Vycm9yKVxyXG4gICAgICAgIGlucHV0LmNsYXNzTGlzdC5hZGQodGhpcy5vcHRpb25zLmNzc0NsYXNzU3VjY2VzcylcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHN0YXRlID09PSAnZXJyb3InKSB7XHJcbiAgICAgICAgaW5wdXQuY2xhc3NMaXN0LmFkZCh0aGlzLm9wdGlvbnMuY3NzQ2xhc3NFcnJvcilcclxuICAgICAgICBpbnB1dC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMub3B0aW9ucy5jc3NDbGFzc1N1Y2Nlc3MpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFRleHRJbnB1dFxyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvVGV4dElucHV0L1RleHRJbnB1dC5qcyIsIi8qXHJcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhc2lzLWlucHV0LW1hc2tpbmcgbGliLlxyXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XHJcbiAqXHJcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXHJcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxyXG4gKi9cclxuXHJcbmltcG9ydCBTdHJpbmdNYXNrIGZyb20gJ2Jiai1tYXNrcy9zcmMvU3RyaW5nTWFzaydcclxuXHJcbmNvbnN0IFNVUFBPUlRFRF9NQVNLUyA9IFsnWCcsICdhJywgJ0EnLCAnMCcsICd6JywgJ1onLCAnVSddXHJcbi8qKlxyXG4gKiBXaGVuIHRydWUgLCB0aGVuIHRoZSBicm93c2VyIHN1cHBvcnRzIFVuaWNvZGUgUHJvcGVydHkgRXNjYXBlc1xyXG4gKiBvdGhlcndpc2UgaXQgaXMgZmFsc2UgXHJcbiAqIFxyXG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcmVnZXhwLXVuaWNvZGUtcHJvcGVydHktZXNjYXBlc31cclxuICovXHJcbmxldCBJU19VTklDT0RFX1BST1BFUlRZX1NVUFBPUlRFRCA9IGZhbHNlXHJcbnRyeSB7XHJcbiAgZXZhbCgnL1xcXFxwe0x9L3UnKVxyXG4gIElTX1VOSUNPREVfUFJPUEVSVFlfU1VQUE9SVEVEID0gdHJ1ZVxyXG59IGNhdGNoIChlcnIpIHtcclxuICBJU19VTklDT0RFX1BST1BFUlRZX1NVUFBPUlRFRCA9IGZhbHNlXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVjayBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgbWFza2VkIHdpdGggdGhlIGdpdmVuIG1hc2sgb3Igbm90XHJcbiAqXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZSBtYXNrZWQgb3IgdW5tYXNrZWQgdmFsdWVcclxuICogQHBhcmFtIHtTdHJpbmd9IG1hc2sgIGEgYmJqIG1hc2tcclxuICpcclxuICogQHJldHVybiB7Qm9vbGVhbn0gdHJ1ZSB3aGVuIHRoZSB2YWx1ZSBpcyBtYXNrZWQgd2l0aCBnaXZlbiBtYXNrICwgZmFsc2Ugb3RoZXJ3aXNlXHJcbiAqL1xyXG5jb25zdCBpc01hc2tlZFZhbHVlID0gKHZhbHVlLCBtYXNrKSA9PiB7XHJcbiAgaWYgKHR5cGVvZiBpc01hc2tlZFZhbHVlLl9fQ0FDSEVfXyA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgIGlzTWFza2VkVmFsdWUuX19DQUNIRV9fID0ge31cclxuICB9XHJcblxyXG4gIGNvbnN0IGNhY2hlS2V5ID0gYCR7dmFsdWV9LSR7bWFza31gXHJcblxyXG4gIGlmICghaXNNYXNrZWRWYWx1ZS5fX0NBQ0hFX19bY2FjaGVLZXldKSB7XHJcbiAgICBjb25zdCB1bm1hc2tlZFZhbHVlID0gdW5tYXNrKHZhbHVlLCBtYXNrKVxyXG4gICAgaXNNYXNrZWRWYWx1ZS5fX0NBQ0hFX19bY2FjaGVLZXldID1cclxuICAgICAgdmFsdWUgPT09IFN0cmluZ01hc2subWFzayh1bm1hc2tlZFZhbHVlLCBtYXNrKVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGlzTWFza2VkVmFsdWUuX19DQUNIRV9fW2NhY2hlS2V5XVxyXG59XHJcblxyXG4vKipcclxuICogTWFzayB0aGUgZ2l2ZW4gdmFsdWUgd2l0aCB0aGUgZ2l2ZW4gbWFzayBpbiBjYXNlIHRoZSB2YWx1ZSBpcyBub3QgYWxyZWFkeSBtYXNrZWQgd2l0aCB0aGVcclxuICogZ2l2ZW4gbWFza1xyXG4gKlxyXG4gKiBAcGFyYW0ge1N0cmluZ30gdmFsdWUgbWFza2VkIG9yIHVubWFza2VkIHZhbHVlXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBtYXNrICBhIGJiaiBtYXNrXHJcbiAqXHJcbiAqIEByZXR1cm4ge1N0cmluZ30gYSBtYXNrZWQgdmFsdWVcclxuICovXHJcbmNvbnN0IG1hc2tJZk5vdE1hc2tlZCA9ICh2YWx1ZSwgbWFzaykgPT4ge1xyXG4gIGlmICh0eXBlb2YgbWFza0lmTm90TWFza2VkLl9fQ0FDSEVfXyA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgIG1hc2tJZk5vdE1hc2tlZC5fX0NBQ0hFX18gPSB7fVxyXG4gIH1cclxuXHJcbiAgY29uc3QgY2FjaGVLZXkgPSBgJHt2YWx1ZX0tJHttYXNrfWBcclxuXHJcbiAgaWYgKCFtYXNrSWZOb3RNYXNrZWQuX19DQUNIRV9fW2NhY2hlS2V5XSkge1xyXG4gICAgaWYgKGlzTWFza2VkVmFsdWUodmFsdWUsIG1hc2spKSB7XHJcbiAgICAgIG1hc2tJZk5vdE1hc2tlZC5fX0NBQ0hFX19bY2FjaGVLZXldID0gdmFsdWVcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgbWFza0lmTm90TWFza2VkLl9fQ0FDSEVfX1tjYWNoZUtleV0gPSBTdHJpbmdNYXNrLm1hc2soXHJcbiAgICAgICAgICB2YWx1ZSxcclxuICAgICAgICAgIG1hc2ssXHJcbiAgICAgICAgICBmYWxzZVxyXG4gICAgICAgIClcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIG1hc2tJZk5vdE1hc2tlZC5fX0NBQ0hFX19bY2FjaGVLZXldID0gU3RyaW5nTWFzay5tYXNrKCcnLCBtYXNrKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gbWFza0lmTm90TWFza2VkLl9fQ0FDSEVfX1tjYWNoZUtleV1cclxufVxyXG5cclxuLyoqXHJcbiAqIEdlbmVyYXRlIGEgcmVnZXggcGF0dGVyIGJhc2VkIG9uIHRoZSBnaXZlIHRhc2tcclxuICpcclxuICogQHBhcmFtIHtTdHJpbmd9IG1hc2sgIGJiaiBzdHJpbmcgbWFza1xyXG4gKlxyXG4gKiBAcmV0dXJuIHtTdHJpbmd9IHJlZ2V4IGZvciB0aGUgZ2l2ZSBtYXNrXHJcbiAqL1xyXG5jb25zdCBnZW5lcmF0ZVBhdHRlcm5Gcm9tTWFzayA9IG1hc2sgPT4ge1xyXG4gIGlmICh0eXBlb2YgZ2VuZXJhdGVQYXR0ZXJuRnJvbU1hc2suX19DQUNIRV9fID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgZ2VuZXJhdGVQYXR0ZXJuRnJvbU1hc2suX19DQUNIRV9fID0ge31cclxuICB9XHJcblxyXG4gIGNvbnN0IGNhY2hlS2V5ID0gbWFza1xyXG5cclxuICBpZiAoIWdlbmVyYXRlUGF0dGVybkZyb21NYXNrLl9fQ0FDSEVfX1tjYWNoZUtleV0pIHtcclxuICAgIGNvbnN0IG1hc2tBc0FycnkgPSBtYXNrLnNwbGl0KCcnKVxyXG4gICAgbGV0IHJlZ2V4ID0gJydcclxuICAgIG1hc2tBc0FycnkuZm9yRWFjaChjID0+IHtcclxuICAgICAgc3dpdGNoIChjKSB7XHJcbiAgICAgICAgY2FzZSAnWCc6XHJcbiAgICAgICAgICByZWdleCArPSAnKFteIC1+XSknXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgJ2EnOlxyXG4gICAgICAgIGNhc2UgJ0EnOlxyXG4gICAgICAgICAgLy8gaHR0cHM6Ly9tb3RoZXJlZmYuaW4vcmVnZXhwdSNpbnB1dD12YXIrcmVnZXgrJTNEKy8lNUNwJTdCTCU3RC91JTNCJnVuaWNvZGVQcm9wZXJ0eUVzY2FwZT0xXHJcbiAgICAgICAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNTAwMzMvcmVndWxhci1leHByZXNzaW9uLXRvLW1hdGNoLW5vbi1hc2NpaS1jaGFyYWN0ZXJzI2Fuc3dlci00ODkwMjc2NVxyXG4gICAgICAgICAgcmVnZXggKz0gSVNfVU5JQ09ERV9QUk9QRVJUWV9TVVBQT1JURURcclxuICAgICAgICAgICAgPyAnXFxcXHB7TH0nXHJcbiAgICAgICAgICAgIDogJygoPzpbQS1aYS16XFx4QUFcXHhCNVxceEJBXFx4QzAtXFx4RDZcXHhEOC1cXHhGNlxceEY4LVxcdTAyQzFcXHUwMkM2LVxcdTAyRDFcXHUwMkUwLVxcdTAyRTRcXHUwMkVDXFx1MDJFRVxcdTAzNzAtXFx1MDM3NFxcdTAzNzZcXHUwMzc3XFx1MDM3QS1cXHUwMzdEXFx1MDM3RlxcdTAzODZcXHUwMzg4LVxcdTAzOEFcXHUwMzhDXFx1MDM4RS1cXHUwM0ExXFx1MDNBMy1cXHUwM0Y1XFx1MDNGNy1cXHUwNDgxXFx1MDQ4QS1cXHUwNTJGXFx1MDUzMS1cXHUwNTU2XFx1MDU1OVxcdTA1NjAtXFx1MDU4OFxcdTA1RDAtXFx1MDVFQVxcdTA1RUYtXFx1MDVGMlxcdTA2MjAtXFx1MDY0QVxcdTA2NkVcXHUwNjZGXFx1MDY3MS1cXHUwNkQzXFx1MDZENVxcdTA2RTVcXHUwNkU2XFx1MDZFRVxcdTA2RUZcXHUwNkZBLVxcdTA2RkNcXHUwNkZGXFx1MDcxMFxcdTA3MTItXFx1MDcyRlxcdTA3NEQtXFx1MDdBNVxcdTA3QjFcXHUwN0NBLVxcdTA3RUFcXHUwN0Y0XFx1MDdGNVxcdTA3RkFcXHUwODAwLVxcdTA4MTVcXHUwODFBXFx1MDgyNFxcdTA4MjhcXHUwODQwLVxcdTA4NThcXHUwODYwLVxcdTA4NkFcXHUwOEEwLVxcdTA4QjRcXHUwOEI2LVxcdTA4QkRcXHUwOTA0LVxcdTA5MzlcXHUwOTNEXFx1MDk1MFxcdTA5NTgtXFx1MDk2MVxcdTA5NzEtXFx1MDk4MFxcdTA5ODUtXFx1MDk4Q1xcdTA5OEZcXHUwOTkwXFx1MDk5My1cXHUwOUE4XFx1MDlBQS1cXHUwOUIwXFx1MDlCMlxcdTA5QjYtXFx1MDlCOVxcdTA5QkRcXHUwOUNFXFx1MDlEQ1xcdTA5RERcXHUwOURGLVxcdTA5RTFcXHUwOUYwXFx1MDlGMVxcdTA5RkNcXHUwQTA1LVxcdTBBMEFcXHUwQTBGXFx1MEExMFxcdTBBMTMtXFx1MEEyOFxcdTBBMkEtXFx1MEEzMFxcdTBBMzJcXHUwQTMzXFx1MEEzNVxcdTBBMzZcXHUwQTM4XFx1MEEzOVxcdTBBNTktXFx1MEE1Q1xcdTBBNUVcXHUwQTcyLVxcdTBBNzRcXHUwQTg1LVxcdTBBOERcXHUwQThGLVxcdTBBOTFcXHUwQTkzLVxcdTBBQThcXHUwQUFBLVxcdTBBQjBcXHUwQUIyXFx1MEFCM1xcdTBBQjUtXFx1MEFCOVxcdTBBQkRcXHUwQUQwXFx1MEFFMFxcdTBBRTFcXHUwQUY5XFx1MEIwNS1cXHUwQjBDXFx1MEIwRlxcdTBCMTBcXHUwQjEzLVxcdTBCMjhcXHUwQjJBLVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0RcXHUwQjVDXFx1MEI1RFxcdTBCNUYtXFx1MEI2MVxcdTBCNzFcXHUwQjgzXFx1MEI4NS1cXHUwQjhBXFx1MEI4RS1cXHUwQjkwXFx1MEI5Mi1cXHUwQjk1XFx1MEI5OVxcdTBCOUFcXHUwQjlDXFx1MEI5RVxcdTBCOUZcXHUwQkEzXFx1MEJBNFxcdTBCQTgtXFx1MEJBQVxcdTBCQUUtXFx1MEJCOVxcdTBCRDBcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzlcXHUwQzNEXFx1MEM1OC1cXHUwQzVBXFx1MEM2MFxcdTBDNjFcXHUwQzgwXFx1MEM4NS1cXHUwQzhDXFx1MEM4RS1cXHUwQzkwXFx1MEM5Mi1cXHUwQ0E4XFx1MENBQS1cXHUwQ0IzXFx1MENCNS1cXHUwQ0I5XFx1MENCRFxcdTBDREVcXHUwQ0UwXFx1MENFMVxcdTBDRjFcXHUwQ0YyXFx1MEQwNS1cXHUwRDBDXFx1MEQwRS1cXHUwRDEwXFx1MEQxMi1cXHUwRDNBXFx1MEQzRFxcdTBENEVcXHUwRDU0LVxcdTBENTZcXHUwRDVGLVxcdTBENjFcXHUwRDdBLVxcdTBEN0ZcXHUwRDg1LVxcdTBEOTZcXHUwRDlBLVxcdTBEQjFcXHUwREIzLVxcdTBEQkJcXHUwREJEXFx1MERDMC1cXHUwREM2XFx1MEUwMS1cXHUwRTMwXFx1MEUzMlxcdTBFMzNcXHUwRTQwLVxcdTBFNDZcXHUwRTgxXFx1MEU4MlxcdTBFODRcXHUwRTg2LVxcdTBFOEFcXHUwRThDLVxcdTBFQTNcXHUwRUE1XFx1MEVBNy1cXHUwRUIwXFx1MEVCMlxcdTBFQjNcXHUwRUJEXFx1MEVDMC1cXHUwRUM0XFx1MEVDNlxcdTBFREMtXFx1MEVERlxcdTBGMDBcXHUwRjQwLVxcdTBGNDdcXHUwRjQ5LVxcdTBGNkNcXHUwRjg4LVxcdTBGOENcXHUxMDAwLVxcdTEwMkFcXHUxMDNGXFx1MTA1MC1cXHUxMDU1XFx1MTA1QS1cXHUxMDVEXFx1MTA2MVxcdTEwNjVcXHUxMDY2XFx1MTA2RS1cXHUxMDcwXFx1MTA3NS1cXHUxMDgxXFx1MTA4RVxcdTEwQTAtXFx1MTBDNVxcdTEwQzdcXHUxMENEXFx1MTBEMC1cXHUxMEZBXFx1MTBGQy1cXHUxMjQ4XFx1MTI0QS1cXHUxMjREXFx1MTI1MC1cXHUxMjU2XFx1MTI1OFxcdTEyNUEtXFx1MTI1RFxcdTEyNjAtXFx1MTI4OFxcdTEyOEEtXFx1MTI4RFxcdTEyOTAtXFx1MTJCMFxcdTEyQjItXFx1MTJCNVxcdTEyQjgtXFx1MTJCRVxcdTEyQzBcXHUxMkMyLVxcdTEyQzVcXHUxMkM4LVxcdTEyRDZcXHUxMkQ4LVxcdTEzMTBcXHUxMzEyLVxcdTEzMTVcXHUxMzE4LVxcdTEzNUFcXHUxMzgwLVxcdTEzOEZcXHUxM0EwLVxcdTEzRjVcXHUxM0Y4LVxcdTEzRkRcXHUxNDAxLVxcdTE2NkNcXHUxNjZGLVxcdTE2N0ZcXHUxNjgxLVxcdTE2OUFcXHUxNkEwLVxcdTE2RUFcXHUxNkYxLVxcdTE2RjhcXHUxNzAwLVxcdTE3MENcXHUxNzBFLVxcdTE3MTFcXHUxNzIwLVxcdTE3MzFcXHUxNzQwLVxcdTE3NTFcXHUxNzYwLVxcdTE3NkNcXHUxNzZFLVxcdTE3NzBcXHUxNzgwLVxcdTE3QjNcXHUxN0Q3XFx1MTdEQ1xcdTE4MjAtXFx1MTg3OFxcdTE4ODAtXFx1MTg4NFxcdTE4ODctXFx1MThBOFxcdTE4QUFcXHUxOEIwLVxcdTE4RjVcXHUxOTAwLVxcdTE5MUVcXHUxOTUwLVxcdTE5NkRcXHUxOTcwLVxcdTE5NzRcXHUxOTgwLVxcdTE5QUJcXHUxOUIwLVxcdTE5QzlcXHUxQTAwLVxcdTFBMTZcXHUxQTIwLVxcdTFBNTRcXHUxQUE3XFx1MUIwNS1cXHUxQjMzXFx1MUI0NS1cXHUxQjRCXFx1MUI4My1cXHUxQkEwXFx1MUJBRVxcdTFCQUZcXHUxQkJBLVxcdTFCRTVcXHUxQzAwLVxcdTFDMjNcXHUxQzRELVxcdTFDNEZcXHUxQzVBLVxcdTFDN0RcXHUxQzgwLVxcdTFDODhcXHUxQzkwLVxcdTFDQkFcXHUxQ0JELVxcdTFDQkZcXHUxQ0U5LVxcdTFDRUNcXHUxQ0VFLVxcdTFDRjNcXHUxQ0Y1XFx1MUNGNlxcdTFDRkFcXHUxRDAwLVxcdTFEQkZcXHUxRTAwLVxcdTFGMTVcXHUxRjE4LVxcdTFGMURcXHUxRjIwLVxcdTFGNDVcXHUxRjQ4LVxcdTFGNERcXHUxRjUwLVxcdTFGNTdcXHUxRjU5XFx1MUY1QlxcdTFGNURcXHUxRjVGLVxcdTFGN0RcXHUxRjgwLVxcdTFGQjRcXHUxRkI2LVxcdTFGQkNcXHUxRkJFXFx1MUZDMi1cXHUxRkM0XFx1MUZDNi1cXHUxRkNDXFx1MUZEMC1cXHUxRkQzXFx1MUZENi1cXHUxRkRCXFx1MUZFMC1cXHUxRkVDXFx1MUZGMi1cXHUxRkY0XFx1MUZGNi1cXHUxRkZDXFx1MjA3MVxcdTIwN0ZcXHUyMDkwLVxcdTIwOUNcXHUyMTAyXFx1MjEwN1xcdTIxMEEtXFx1MjExM1xcdTIxMTVcXHUyMTE5LVxcdTIxMURcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMkRcXHUyMTJGLVxcdTIxMzlcXHUyMTNDLVxcdTIxM0ZcXHUyMTQ1LVxcdTIxNDlcXHUyMTRFXFx1MjE4M1xcdTIxODRcXHUyQzAwLVxcdTJDMkVcXHUyQzMwLVxcdTJDNUVcXHUyQzYwLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRUVcXHUyQ0YyXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1MkQzMC1cXHUyRDY3XFx1MkQ2RlxcdTJEODAtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTJFMkZcXHUzMDA1XFx1MzAwNlxcdTMwMzEtXFx1MzAzNVxcdTMwM0JcXHUzMDNDXFx1MzA0MS1cXHUzMDk2XFx1MzA5RC1cXHUzMDlGXFx1MzBBMS1cXHUzMEZBXFx1MzBGQy1cXHUzMEZGXFx1MzEwNS1cXHUzMTJGXFx1MzEzMS1cXHUzMThFXFx1MzFBMC1cXHUzMUJBXFx1MzFGMC1cXHUzMUZGXFx1MzQwMC1cXHU0REI1XFx1NEUwMC1cXHU5RkVGXFx1QTAwMC1cXHVBNDhDXFx1QTREMC1cXHVBNEZEXFx1QTUwMC1cXHVBNjBDXFx1QTYxMC1cXHVBNjFGXFx1QTYyQVxcdUE2MkJcXHVBNjQwLVxcdUE2NkVcXHVBNjdGLVxcdUE2OURcXHVBNkEwLVxcdUE2RTVcXHVBNzE3LVxcdUE3MUZcXHVBNzIyLVxcdUE3ODhcXHVBNzhCLVxcdUE3QkZcXHVBN0MyLVxcdUE3QzZcXHVBN0Y3LVxcdUE4MDFcXHVBODAzLVxcdUE4MDVcXHVBODA3LVxcdUE4MEFcXHVBODBDLVxcdUE4MjJcXHVBODQwLVxcdUE4NzNcXHVBODgyLVxcdUE4QjNcXHVBOEYyLVxcdUE4RjdcXHVBOEZCXFx1QThGRFxcdUE4RkVcXHVBOTBBLVxcdUE5MjVcXHVBOTMwLVxcdUE5NDZcXHVBOTYwLVxcdUE5N0NcXHVBOTg0LVxcdUE5QjJcXHVBOUNGXFx1QTlFMC1cXHVBOUU0XFx1QTlFNi1cXHVBOUVGXFx1QTlGQS1cXHVBOUZFXFx1QUEwMC1cXHVBQTI4XFx1QUE0MC1cXHVBQTQyXFx1QUE0NC1cXHVBQTRCXFx1QUE2MC1cXHVBQTc2XFx1QUE3QVxcdUFBN0UtXFx1QUFBRlxcdUFBQjFcXHVBQUI1XFx1QUFCNlxcdUFBQjktXFx1QUFCRFxcdUFBQzBcXHVBQUMyXFx1QUFEQi1cXHVBQUREXFx1QUFFMC1cXHVBQUVBXFx1QUFGMi1cXHVBQUY0XFx1QUIwMS1cXHVBQjA2XFx1QUIwOS1cXHVBQjBFXFx1QUIxMS1cXHVBQjE2XFx1QUIyMC1cXHVBQjI2XFx1QUIyOC1cXHVBQjJFXFx1QUIzMC1cXHVBQjVBXFx1QUI1Qy1cXHVBQjY3XFx1QUI3MC1cXHVBQkUyXFx1QUMwMC1cXHVEN0EzXFx1RDdCMC1cXHVEN0M2XFx1RDdDQi1cXHVEN0ZCXFx1RjkwMC1cXHVGQTZEXFx1RkE3MC1cXHVGQUQ5XFx1RkIwMC1cXHVGQjA2XFx1RkIxMy1cXHVGQjE3XFx1RkIxRFxcdUZCMUYtXFx1RkIyOFxcdUZCMkEtXFx1RkIzNlxcdUZCMzgtXFx1RkIzQ1xcdUZCM0VcXHVGQjQwXFx1RkI0MVxcdUZCNDNcXHVGQjQ0XFx1RkI0Ni1cXHVGQkIxXFx1RkJEMy1cXHVGRDNEXFx1RkQ1MC1cXHVGRDhGXFx1RkQ5Mi1cXHVGREM3XFx1RkRGMC1cXHVGREZCXFx1RkU3MC1cXHVGRTc0XFx1RkU3Ni1cXHVGRUZDXFx1RkYyMS1cXHVGRjNBXFx1RkY0MS1cXHVGRjVBXFx1RkY2Ni1cXHVGRkJFXFx1RkZDMi1cXHVGRkM3XFx1RkZDQS1cXHVGRkNGXFx1RkZEMi1cXHVGRkQ3XFx1RkZEQS1cXHVGRkRDXXxcXHVEODAwW1xcdURDMDAtXFx1REMwQlxcdURDMEQtXFx1REMyNlxcdURDMjgtXFx1REMzQVxcdURDM0NcXHVEQzNEXFx1REMzRi1cXHVEQzREXFx1REM1MC1cXHVEQzVEXFx1REM4MC1cXHVEQ0ZBXFx1REU4MC1cXHVERTlDXFx1REVBMC1cXHVERUQwXFx1REYwMC1cXHVERjFGXFx1REYyRC1cXHVERjQwXFx1REY0Mi1cXHVERjQ5XFx1REY1MC1cXHVERjc1XFx1REY4MC1cXHVERjlEXFx1REZBMC1cXHVERkMzXFx1REZDOC1cXHVERkNGXXxcXHVEODAxW1xcdURDMDAtXFx1REM5RFxcdURDQjAtXFx1RENEM1xcdURDRDgtXFx1RENGQlxcdUREMDAtXFx1REQyN1xcdUREMzAtXFx1REQ2M1xcdURFMDAtXFx1REYzNlxcdURGNDAtXFx1REY1NVxcdURGNjAtXFx1REY2N118XFx1RDgwMltcXHVEQzAwLVxcdURDMDVcXHVEQzA4XFx1REMwQS1cXHVEQzM1XFx1REMzN1xcdURDMzhcXHVEQzNDXFx1REMzRi1cXHVEQzU1XFx1REM2MC1cXHVEQzc2XFx1REM4MC1cXHVEQzlFXFx1RENFMC1cXHVEQ0YyXFx1RENGNFxcdURDRjVcXHVERDAwLVxcdUREMTVcXHVERDIwLVxcdUREMzlcXHVERDgwLVxcdUREQjdcXHVEREJFXFx1RERCRlxcdURFMDBcXHVERTEwLVxcdURFMTNcXHVERTE1LVxcdURFMTdcXHVERTE5LVxcdURFMzVcXHVERTYwLVxcdURFN0NcXHVERTgwLVxcdURFOUNcXHVERUMwLVxcdURFQzdcXHVERUM5LVxcdURFRTRcXHVERjAwLVxcdURGMzVcXHVERjQwLVxcdURGNTVcXHVERjYwLVxcdURGNzJcXHVERjgwLVxcdURGOTFdfFxcdUQ4MDNbXFx1REMwMC1cXHVEQzQ4XFx1REM4MC1cXHVEQ0IyXFx1RENDMC1cXHVEQ0YyXFx1REQwMC1cXHVERDIzXFx1REYwMC1cXHVERjFDXFx1REYyN1xcdURGMzAtXFx1REY0NVxcdURGRTAtXFx1REZGNl18XFx1RDgwNFtcXHVEQzAzLVxcdURDMzdcXHVEQzgzLVxcdURDQUZcXHVEQ0QwLVxcdURDRThcXHVERDAzLVxcdUREMjZcXHVERDQ0XFx1REQ1MC1cXHVERDcyXFx1REQ3NlxcdUREODMtXFx1RERCMlxcdUREQzEtXFx1RERDNFxcdUREREFcXHVERERDXFx1REUwMC1cXHVERTExXFx1REUxMy1cXHVERTJCXFx1REU4MC1cXHVERTg2XFx1REU4OFxcdURFOEEtXFx1REU4RFxcdURFOEYtXFx1REU5RFxcdURFOUYtXFx1REVBOFxcdURFQjAtXFx1REVERVxcdURGMDUtXFx1REYwQ1xcdURGMEZcXHVERjEwXFx1REYxMy1cXHVERjI4XFx1REYyQS1cXHVERjMwXFx1REYzMlxcdURGMzNcXHVERjM1LVxcdURGMzlcXHVERjNEXFx1REY1MFxcdURGNUQtXFx1REY2MV18XFx1RDgwNVtcXHVEQzAwLVxcdURDMzRcXHVEQzQ3LVxcdURDNEFcXHVEQzVGXFx1REM4MC1cXHVEQ0FGXFx1RENDNFxcdURDQzVcXHVEQ0M3XFx1REQ4MC1cXHVEREFFXFx1REREOC1cXHVERERCXFx1REUwMC1cXHVERTJGXFx1REU0NFxcdURFODAtXFx1REVBQVxcdURFQjhcXHVERjAwLVxcdURGMUFdfFxcdUQ4MDZbXFx1REMwMC1cXHVEQzJCXFx1RENBMC1cXHVEQ0RGXFx1RENGRlxcdUREQTAtXFx1RERBN1xcdUREQUEtXFx1REREMFxcdURERTFcXHVEREUzXFx1REUwMFxcdURFMEItXFx1REUzMlxcdURFM0FcXHVERTUwXFx1REU1Qy1cXHVERTg5XFx1REU5RFxcdURFQzAtXFx1REVGOF18XFx1RDgwN1tcXHVEQzAwLVxcdURDMDhcXHVEQzBBLVxcdURDMkVcXHVEQzQwXFx1REM3Mi1cXHVEQzhGXFx1REQwMC1cXHVERDA2XFx1REQwOFxcdUREMDlcXHVERDBCLVxcdUREMzBcXHVERDQ2XFx1REQ2MC1cXHVERDY1XFx1REQ2N1xcdURENjhcXHVERDZBLVxcdUREODlcXHVERDk4XFx1REVFMC1cXHVERUYyXXxcXHVEODA4W1xcdURDMDAtXFx1REY5OV18XFx1RDgwOVtcXHVEQzgwLVxcdURENDNdfFtcXHVEODBDXFx1RDgxQy1cXHVEODIwXFx1RDg0MC1cXHVEODY4XFx1RDg2QS1cXHVEODZDXFx1RDg2Ri1cXHVEODcyXFx1RDg3NC1cXHVEODc5XVtcXHVEQzAwLVxcdURGRkZdfFxcdUQ4MERbXFx1REMwMC1cXHVEQzJFXXxcXHVEODExW1xcdURDMDAtXFx1REU0Nl18XFx1RDgxQVtcXHVEQzAwLVxcdURFMzhcXHVERTQwLVxcdURFNUVcXHVERUQwLVxcdURFRURcXHVERjAwLVxcdURGMkZcXHVERjQwLVxcdURGNDNcXHVERjYzLVxcdURGNzdcXHVERjdELVxcdURGOEZdfFxcdUQ4MUJbXFx1REU0MC1cXHVERTdGXFx1REYwMC1cXHVERjRBXFx1REY1MFxcdURGOTMtXFx1REY5RlxcdURGRTBcXHVERkUxXFx1REZFM118XFx1RDgyMVtcXHVEQzAwLVxcdURGRjddfFxcdUQ4MjJbXFx1REMwMC1cXHVERUYyXXxcXHVEODJDW1xcdURDMDAtXFx1REQxRVxcdURENTAtXFx1REQ1MlxcdURENjQtXFx1REQ2N1xcdURENzAtXFx1REVGQl18XFx1RDgyRltcXHVEQzAwLVxcdURDNkFcXHVEQzcwLVxcdURDN0NcXHVEQzgwLVxcdURDODhcXHVEQzkwLVxcdURDOTldfFxcdUQ4MzVbXFx1REMwMC1cXHVEQzU0XFx1REM1Ni1cXHVEQzlDXFx1REM5RVxcdURDOUZcXHVEQ0EyXFx1RENBNVxcdURDQTZcXHVEQ0E5LVxcdURDQUNcXHVEQ0FFLVxcdURDQjlcXHVEQ0JCXFx1RENCRC1cXHVEQ0MzXFx1RENDNS1cXHVERDA1XFx1REQwNy1cXHVERDBBXFx1REQwRC1cXHVERDE0XFx1REQxNi1cXHVERDFDXFx1REQxRS1cXHVERDM5XFx1REQzQi1cXHVERDNFXFx1REQ0MC1cXHVERDQ0XFx1REQ0NlxcdURENEEtXFx1REQ1MFxcdURENTItXFx1REVBNVxcdURFQTgtXFx1REVDMFxcdURFQzItXFx1REVEQVxcdURFREMtXFx1REVGQVxcdURFRkMtXFx1REYxNFxcdURGMTYtXFx1REYzNFxcdURGMzYtXFx1REY0RVxcdURGNTAtXFx1REY2RVxcdURGNzAtXFx1REY4OFxcdURGOEEtXFx1REZBOFxcdURGQUEtXFx1REZDMlxcdURGQzQtXFx1REZDQl18XFx1RDgzOFtcXHVERDAwLVxcdUREMkNcXHVERDM3LVxcdUREM0RcXHVERDRFXFx1REVDMC1cXHVERUVCXXxcXHVEODNBW1xcdURDMDAtXFx1RENDNFxcdUREMDAtXFx1REQ0M1xcdURENEJdfFxcdUQ4M0JbXFx1REUwMC1cXHVERTAzXFx1REUwNS1cXHVERTFGXFx1REUyMVxcdURFMjJcXHVERTI0XFx1REUyN1xcdURFMjktXFx1REUzMlxcdURFMzQtXFx1REUzN1xcdURFMzlcXHVERTNCXFx1REU0MlxcdURFNDdcXHVERTQ5XFx1REU0QlxcdURFNEQtXFx1REU0RlxcdURFNTFcXHVERTUyXFx1REU1NFxcdURFNTdcXHVERTU5XFx1REU1QlxcdURFNURcXHVERTVGXFx1REU2MVxcdURFNjJcXHVERTY0XFx1REU2Ny1cXHVERTZBXFx1REU2Qy1cXHVERTcyXFx1REU3NC1cXHVERTc3XFx1REU3OS1cXHVERTdDXFx1REU3RVxcdURFODAtXFx1REU4OVxcdURFOEItXFx1REU5QlxcdURFQTEtXFx1REVBM1xcdURFQTUtXFx1REVBOVxcdURFQUItXFx1REVCQl18XFx1RDg2OVtcXHVEQzAwLVxcdURFRDZcXHVERjAwLVxcdURGRkZdfFxcdUQ4NkRbXFx1REMwMC1cXHVERjM0XFx1REY0MC1cXHVERkZGXXxcXHVEODZFW1xcdURDMDAtXFx1REMxRFxcdURDMjAtXFx1REZGRl18XFx1RDg3M1tcXHVEQzAwLVxcdURFQTFcXHVERUIwLVxcdURGRkZdfFxcdUQ4N0FbXFx1REMwMC1cXHVERkUwXXxcXHVEODdFW1xcdURDMDAtXFx1REUxRF0pKSdcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAnMCc6XHJcbiAgICAgICAgICByZWdleCArPSAnKFswLTldKSdcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAneic6XHJcbiAgICAgICAgY2FzZSAnWic6XHJcbiAgICAgICAgICByZWdleCArPSBJU19VTklDT0RFX1BST1BFUlRZX1NVUFBPUlRFRFxyXG4gICAgICAgICAgICA/ICcoWzAtOV18XFxcXHB7TH0pJ1xyXG4gICAgICAgICAgICA6ICcoWzAtOV18KD86W0EtWmEtelxceEFBXFx4QjVcXHhCQVxceEMwLVxceEQ2XFx4RDgtXFx4RjZcXHhGOC1cXHUwMkMxXFx1MDJDNi1cXHUwMkQxXFx1MDJFMC1cXHUwMkU0XFx1MDJFQ1xcdTAyRUVcXHUwMzcwLVxcdTAzNzRcXHUwMzc2XFx1MDM3N1xcdTAzN0EtXFx1MDM3RFxcdTAzN0ZcXHUwMzg2XFx1MDM4OC1cXHUwMzhBXFx1MDM4Q1xcdTAzOEUtXFx1MDNBMVxcdTAzQTMtXFx1MDNGNVxcdTAzRjctXFx1MDQ4MVxcdTA0OEEtXFx1MDUyRlxcdTA1MzEtXFx1MDU1NlxcdTA1NTlcXHUwNTYwLVxcdTA1ODhcXHUwNUQwLVxcdTA1RUFcXHUwNUVGLVxcdTA1RjJcXHUwNjIwLVxcdTA2NEFcXHUwNjZFXFx1MDY2RlxcdTA2NzEtXFx1MDZEM1xcdTA2RDVcXHUwNkU1XFx1MDZFNlxcdTA2RUVcXHUwNkVGXFx1MDZGQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTBcXHUwNzEyLVxcdTA3MkZcXHUwNzRELVxcdTA3QTVcXHUwN0IxXFx1MDdDQS1cXHUwN0VBXFx1MDdGNFxcdTA3RjVcXHUwN0ZBXFx1MDgwMC1cXHUwODE1XFx1MDgxQVxcdTA4MjRcXHUwODI4XFx1MDg0MC1cXHUwODU4XFx1MDg2MC1cXHUwODZBXFx1MDhBMC1cXHUwOEI0XFx1MDhCNi1cXHUwOEJEXFx1MDkwNC1cXHUwOTM5XFx1MDkzRFxcdTA5NTBcXHUwOTU4LVxcdTA5NjFcXHUwOTcxLVxcdTA5ODBcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJcXHUwOUI2LVxcdTA5QjlcXHUwOUJEXFx1MDlDRVxcdTA5RENcXHUwOUREXFx1MDlERi1cXHUwOUUxXFx1MDlGMFxcdTA5RjFcXHUwOUZDXFx1MEEwNS1cXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyXFx1MEEzM1xcdTBBMzVcXHUwQTM2XFx1MEEzOFxcdTBBMzlcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE3Mi1cXHUwQTc0XFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJEXFx1MEFEMFxcdTBBRTBcXHUwQUUxXFx1MEFGOVxcdTBCMDUtXFx1MEIwQ1xcdTBCMEZcXHUwQjEwXFx1MEIxMy1cXHUwQjI4XFx1MEIyQS1cXHUwQjMwXFx1MEIzMlxcdTBCMzNcXHUwQjM1LVxcdTBCMzlcXHUwQjNEXFx1MEI1Q1xcdTBCNURcXHUwQjVGLVxcdTBCNjFcXHUwQjcxXFx1MEI4M1xcdTBCODUtXFx1MEI4QVxcdTBCOEUtXFx1MEI5MFxcdTBCOTItXFx1MEI5NVxcdTBCOTlcXHUwQjlBXFx1MEI5Q1xcdTBCOUVcXHUwQjlGXFx1MEJBM1xcdTBCQTRcXHUwQkE4LVxcdTBCQUFcXHUwQkFFLVxcdTBCQjlcXHUwQkQwXFx1MEMwNS1cXHUwQzBDXFx1MEMwRS1cXHUwQzEwXFx1MEMxMi1cXHUwQzI4XFx1MEMyQS1cXHUwQzM5XFx1MEMzRFxcdTBDNTgtXFx1MEM1QVxcdTBDNjBcXHUwQzYxXFx1MEM4MFxcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkRcXHUwQ0RFXFx1MENFMFxcdTBDRTFcXHUwQ0YxXFx1MENGMlxcdTBEMDUtXFx1MEQwQ1xcdTBEMEUtXFx1MEQxMFxcdTBEMTItXFx1MEQzQVxcdTBEM0RcXHUwRDRFXFx1MEQ1NC1cXHUwRDU2XFx1MEQ1Ri1cXHUwRDYxXFx1MEQ3QS1cXHUwRDdGXFx1MEQ4NS1cXHUwRDk2XFx1MEQ5QS1cXHUwREIxXFx1MERCMy1cXHUwREJCXFx1MERCRFxcdTBEQzAtXFx1MERDNlxcdTBFMDEtXFx1MEUzMFxcdTBFMzJcXHUwRTMzXFx1MEU0MC1cXHUwRTQ2XFx1MEU4MVxcdTBFODJcXHUwRTg0XFx1MEU4Ni1cXHUwRThBXFx1MEU4Qy1cXHUwRUEzXFx1MEVBNVxcdTBFQTctXFx1MEVCMFxcdTBFQjJcXHUwRUIzXFx1MEVCRFxcdTBFQzAtXFx1MEVDNFxcdTBFQzZcXHUwRURDLVxcdTBFREZcXHUwRjAwXFx1MEY0MC1cXHUwRjQ3XFx1MEY0OS1cXHUwRjZDXFx1MEY4OC1cXHUwRjhDXFx1MTAwMC1cXHUxMDJBXFx1MTAzRlxcdTEwNTAtXFx1MTA1NVxcdTEwNUEtXFx1MTA1RFxcdTEwNjFcXHUxMDY1XFx1MTA2NlxcdTEwNkUtXFx1MTA3MFxcdTEwNzUtXFx1MTA4MVxcdTEwOEVcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEwRDAtXFx1MTBGQVxcdTEwRkMtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM4MC1cXHUxMzhGXFx1MTNBMC1cXHUxM0Y1XFx1MTNGOC1cXHUxM0ZEXFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTZGMS1cXHUxNkY4XFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzExXFx1MTcyMC1cXHUxNzMxXFx1MTc0MC1cXHUxNzUxXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc4MC1cXHUxN0IzXFx1MTdEN1xcdTE3RENcXHUxODIwLVxcdTE4NzhcXHUxODgwLVxcdTE4ODRcXHUxODg3LVxcdTE4QThcXHUxOEFBXFx1MThCMC1cXHUxOEY1XFx1MTkwMC1cXHUxOTFFXFx1MTk1MC1cXHUxOTZEXFx1MTk3MC1cXHUxOTc0XFx1MTk4MC1cXHUxOUFCXFx1MTlCMC1cXHUxOUM5XFx1MUEwMC1cXHUxQTE2XFx1MUEyMC1cXHUxQTU0XFx1MUFBN1xcdTFCMDUtXFx1MUIzM1xcdTFCNDUtXFx1MUI0QlxcdTFCODMtXFx1MUJBMFxcdTFCQUVcXHUxQkFGXFx1MUJCQS1cXHUxQkU1XFx1MUMwMC1cXHUxQzIzXFx1MUM0RC1cXHUxQzRGXFx1MUM1QS1cXHUxQzdEXFx1MUM4MC1cXHUxQzg4XFx1MUM5MC1cXHUxQ0JBXFx1MUNCRC1cXHUxQ0JGXFx1MUNFOS1cXHUxQ0VDXFx1MUNFRS1cXHUxQ0YzXFx1MUNGNVxcdTFDRjZcXHUxQ0ZBXFx1MUQwMC1cXHUxREJGXFx1MUUwMC1cXHUxRjE1XFx1MUYxOC1cXHUxRjFEXFx1MUYyMC1cXHUxRjQ1XFx1MUY0OC1cXHUxRjREXFx1MUY1MC1cXHUxRjU3XFx1MUY1OVxcdTFGNUJcXHUxRjVEXFx1MUY1Ri1cXHUxRjdEXFx1MUY4MC1cXHUxRkI0XFx1MUZCNi1cXHUxRkJDXFx1MUZCRVxcdTFGQzItXFx1MUZDNFxcdTFGQzYtXFx1MUZDQ1xcdTFGRDAtXFx1MUZEM1xcdTFGRDYtXFx1MUZEQlxcdTFGRTAtXFx1MUZFQ1xcdTFGRjItXFx1MUZGNFxcdTFGRjYtXFx1MUZGQ1xcdTIwNzFcXHUyMDdGXFx1MjA5MC1cXHUyMDlDXFx1MjEwMlxcdTIxMDdcXHUyMTBBLVxcdTIxMTNcXHUyMTE1XFx1MjExOS1cXHUyMTFEXFx1MjEyNFxcdTIxMjZcXHUyMTI4XFx1MjEyQS1cXHUyMTJEXFx1MjEyRi1cXHUyMTM5XFx1MjEzQy1cXHUyMTNGXFx1MjE0NS1cXHUyMTQ5XFx1MjE0RVxcdTIxODNcXHUyMTg0XFx1MkMwMC1cXHUyQzJFXFx1MkMzMC1cXHUyQzVFXFx1MkM2MC1cXHUyQ0U0XFx1MkNFQi1cXHUyQ0VFXFx1MkNGMlxcdTJDRjNcXHUyRDAwLVxcdTJEMjVcXHUyRDI3XFx1MkQyRFxcdTJEMzAtXFx1MkQ2N1xcdTJENkZcXHUyRDgwLVxcdTJEOTZcXHUyREEwLVxcdTJEQTZcXHUyREE4LVxcdTJEQUVcXHUyREIwLVxcdTJEQjZcXHUyREI4LVxcdTJEQkVcXHUyREMwLVxcdTJEQzZcXHUyREM4LVxcdTJEQ0VcXHUyREQwLVxcdTJERDZcXHUyREQ4LVxcdTJEREVcXHUyRTJGXFx1MzAwNVxcdTMwMDZcXHUzMDMxLVxcdTMwMzVcXHUzMDNCXFx1MzAzQ1xcdTMwNDEtXFx1MzA5NlxcdTMwOUQtXFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkMtXFx1MzBGRlxcdTMxMDUtXFx1MzEyRlxcdTMxMzEtXFx1MzE4RVxcdTMxQTAtXFx1MzFCQVxcdTMxRjAtXFx1MzFGRlxcdTM0MDAtXFx1NERCNVxcdTRFMDAtXFx1OUZFRlxcdUEwMDAtXFx1QTQ4Q1xcdUE0RDAtXFx1QTRGRFxcdUE1MDAtXFx1QTYwQ1xcdUE2MTAtXFx1QTYxRlxcdUE2MkFcXHVBNjJCXFx1QTY0MC1cXHVBNjZFXFx1QTY3Ri1cXHVBNjlEXFx1QTZBMC1cXHVBNkU1XFx1QTcxNy1cXHVBNzFGXFx1QTcyMi1cXHVBNzg4XFx1QTc4Qi1cXHVBN0JGXFx1QTdDMi1cXHVBN0M2XFx1QTdGNy1cXHVBODAxXFx1QTgwMy1cXHVBODA1XFx1QTgwNy1cXHVBODBBXFx1QTgwQy1cXHVBODIyXFx1QTg0MC1cXHVBODczXFx1QTg4Mi1cXHVBOEIzXFx1QThGMi1cXHVBOEY3XFx1QThGQlxcdUE4RkRcXHVBOEZFXFx1QTkwQS1cXHVBOTI1XFx1QTkzMC1cXHVBOTQ2XFx1QTk2MC1cXHVBOTdDXFx1QTk4NC1cXHVBOUIyXFx1QTlDRlxcdUE5RTAtXFx1QTlFNFxcdUE5RTYtXFx1QTlFRlxcdUE5RkEtXFx1QTlGRVxcdUFBMDAtXFx1QUEyOFxcdUFBNDAtXFx1QUE0MlxcdUFBNDQtXFx1QUE0QlxcdUFBNjAtXFx1QUE3NlxcdUFBN0FcXHVBQTdFLVxcdUFBQUZcXHVBQUIxXFx1QUFCNVxcdUFBQjZcXHVBQUI5LVxcdUFBQkRcXHVBQUMwXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFQVxcdUFBRjItXFx1QUFGNFxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCMzAtXFx1QUI1QVxcdUFCNUMtXFx1QUI2N1xcdUFCNzAtXFx1QUJFMlxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZCMURcXHVGQjFGLVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRFxcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGMjEtXFx1RkYzQVxcdUZGNDEtXFx1RkY1QVxcdUZGNjYtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQ118XFx1RDgwMFtcXHVEQzAwLVxcdURDMEJcXHVEQzBELVxcdURDMjZcXHVEQzI4LVxcdURDM0FcXHVEQzNDXFx1REMzRFxcdURDM0YtXFx1REM0RFxcdURDNTAtXFx1REM1RFxcdURDODAtXFx1RENGQVxcdURFODAtXFx1REU5Q1xcdURFQTAtXFx1REVEMFxcdURGMDAtXFx1REYxRlxcdURGMkQtXFx1REY0MFxcdURGNDItXFx1REY0OVxcdURGNTAtXFx1REY3NVxcdURGODAtXFx1REY5RFxcdURGQTAtXFx1REZDM1xcdURGQzgtXFx1REZDRl18XFx1RDgwMVtcXHVEQzAwLVxcdURDOURcXHVEQ0IwLVxcdURDRDNcXHVEQ0Q4LVxcdURDRkJcXHVERDAwLVxcdUREMjdcXHVERDMwLVxcdURENjNcXHVERTAwLVxcdURGMzZcXHVERjQwLVxcdURGNTVcXHVERjYwLVxcdURGNjddfFxcdUQ4MDJbXFx1REMwMC1cXHVEQzA1XFx1REMwOFxcdURDMEEtXFx1REMzNVxcdURDMzdcXHVEQzM4XFx1REMzQ1xcdURDM0YtXFx1REM1NVxcdURDNjAtXFx1REM3NlxcdURDODAtXFx1REM5RVxcdURDRTAtXFx1RENGMlxcdURDRjRcXHVEQ0Y1XFx1REQwMC1cXHVERDE1XFx1REQyMC1cXHVERDM5XFx1REQ4MC1cXHVEREI3XFx1RERCRVxcdUREQkZcXHVERTAwXFx1REUxMC1cXHVERTEzXFx1REUxNS1cXHVERTE3XFx1REUxOS1cXHVERTM1XFx1REU2MC1cXHVERTdDXFx1REU4MC1cXHVERTlDXFx1REVDMC1cXHVERUM3XFx1REVDOS1cXHVERUU0XFx1REYwMC1cXHVERjM1XFx1REY0MC1cXHVERjU1XFx1REY2MC1cXHVERjcyXFx1REY4MC1cXHVERjkxXXxcXHVEODAzW1xcdURDMDAtXFx1REM0OFxcdURDODAtXFx1RENCMlxcdURDQzAtXFx1RENGMlxcdUREMDAtXFx1REQyM1xcdURGMDAtXFx1REYxQ1xcdURGMjdcXHVERjMwLVxcdURGNDVcXHVERkUwLVxcdURGRjZdfFxcdUQ4MDRbXFx1REMwMy1cXHVEQzM3XFx1REM4My1cXHVEQ0FGXFx1RENEMC1cXHVEQ0U4XFx1REQwMy1cXHVERDI2XFx1REQ0NFxcdURENTAtXFx1REQ3MlxcdURENzZcXHVERDgzLVxcdUREQjJcXHVEREMxLVxcdUREQzRcXHVERERBXFx1REREQ1xcdURFMDAtXFx1REUxMVxcdURFMTMtXFx1REUyQlxcdURFODAtXFx1REU4NlxcdURFODhcXHVERThBLVxcdURFOERcXHVERThGLVxcdURFOURcXHVERTlGLVxcdURFQThcXHVERUIwLVxcdURFREVcXHVERjA1LVxcdURGMENcXHVERjBGXFx1REYxMFxcdURGMTMtXFx1REYyOFxcdURGMkEtXFx1REYzMFxcdURGMzJcXHVERjMzXFx1REYzNS1cXHVERjM5XFx1REYzRFxcdURGNTBcXHVERjVELVxcdURGNjFdfFxcdUQ4MDVbXFx1REMwMC1cXHVEQzM0XFx1REM0Ny1cXHVEQzRBXFx1REM1RlxcdURDODAtXFx1RENBRlxcdURDQzRcXHVEQ0M1XFx1RENDN1xcdUREODAtXFx1RERBRVxcdURERDgtXFx1REREQlxcdURFMDAtXFx1REUyRlxcdURFNDRcXHVERTgwLVxcdURFQUFcXHVERUI4XFx1REYwMC1cXHVERjFBXXxcXHVEODA2W1xcdURDMDAtXFx1REMyQlxcdURDQTAtXFx1RENERlxcdURDRkZcXHVEREEwLVxcdUREQTdcXHVEREFBLVxcdURERDBcXHVEREUxXFx1RERFM1xcdURFMDBcXHVERTBCLVxcdURFMzJcXHVERTNBXFx1REU1MFxcdURFNUMtXFx1REU4OVxcdURFOURcXHVERUMwLVxcdURFRjhdfFxcdUQ4MDdbXFx1REMwMC1cXHVEQzA4XFx1REMwQS1cXHVEQzJFXFx1REM0MFxcdURDNzItXFx1REM4RlxcdUREMDAtXFx1REQwNlxcdUREMDhcXHVERDA5XFx1REQwQi1cXHVERDMwXFx1REQ0NlxcdURENjAtXFx1REQ2NVxcdURENjdcXHVERDY4XFx1REQ2QS1cXHVERDg5XFx1REQ5OFxcdURFRTAtXFx1REVGMl18XFx1RDgwOFtcXHVEQzAwLVxcdURGOTldfFxcdUQ4MDlbXFx1REM4MC1cXHVERDQzXXxbXFx1RDgwQ1xcdUQ4MUMtXFx1RDgyMFxcdUQ4NDAtXFx1RDg2OFxcdUQ4NkEtXFx1RDg2Q1xcdUQ4NkYtXFx1RDg3MlxcdUQ4NzQtXFx1RDg3OV1bXFx1REMwMC1cXHVERkZGXXxcXHVEODBEW1xcdURDMDAtXFx1REMyRV18XFx1RDgxMVtcXHVEQzAwLVxcdURFNDZdfFxcdUQ4MUFbXFx1REMwMC1cXHVERTM4XFx1REU0MC1cXHVERTVFXFx1REVEMC1cXHVERUVEXFx1REYwMC1cXHVERjJGXFx1REY0MC1cXHVERjQzXFx1REY2My1cXHVERjc3XFx1REY3RC1cXHVERjhGXXxcXHVEODFCW1xcdURFNDAtXFx1REU3RlxcdURGMDAtXFx1REY0QVxcdURGNTBcXHVERjkzLVxcdURGOUZcXHVERkUwXFx1REZFMVxcdURGRTNdfFxcdUQ4MjFbXFx1REMwMC1cXHVERkY3XXxcXHVEODIyW1xcdURDMDAtXFx1REVGMl18XFx1RDgyQ1tcXHVEQzAwLVxcdUREMUVcXHVERDUwLVxcdURENTJcXHVERDY0LVxcdURENjdcXHVERDcwLVxcdURFRkJdfFxcdUQ4MkZbXFx1REMwMC1cXHVEQzZBXFx1REM3MC1cXHVEQzdDXFx1REM4MC1cXHVEQzg4XFx1REM5MC1cXHVEQzk5XXxcXHVEODM1W1xcdURDMDAtXFx1REM1NFxcdURDNTYtXFx1REM5Q1xcdURDOUVcXHVEQzlGXFx1RENBMlxcdURDQTVcXHVEQ0E2XFx1RENBOS1cXHVEQ0FDXFx1RENBRS1cXHVEQ0I5XFx1RENCQlxcdURDQkQtXFx1RENDM1xcdURDQzUtXFx1REQwNVxcdUREMDctXFx1REQwQVxcdUREMEQtXFx1REQxNFxcdUREMTYtXFx1REQxQ1xcdUREMUUtXFx1REQzOVxcdUREM0ItXFx1REQzRVxcdURENDAtXFx1REQ0NFxcdURENDZcXHVERDRBLVxcdURENTBcXHVERDUyLVxcdURFQTVcXHVERUE4LVxcdURFQzBcXHVERUMyLVxcdURFREFcXHVERURDLVxcdURFRkFcXHVERUZDLVxcdURGMTRcXHVERjE2LVxcdURGMzRcXHVERjM2LVxcdURGNEVcXHVERjUwLVxcdURGNkVcXHVERjcwLVxcdURGODhcXHVERjhBLVxcdURGQThcXHVERkFBLVxcdURGQzJcXHVERkM0LVxcdURGQ0JdfFxcdUQ4MzhbXFx1REQwMC1cXHVERDJDXFx1REQzNy1cXHVERDNEXFx1REQ0RVxcdURFQzAtXFx1REVFQl18XFx1RDgzQVtcXHVEQzAwLVxcdURDQzRcXHVERDAwLVxcdURENDNcXHVERDRCXXxcXHVEODNCW1xcdURFMDAtXFx1REUwM1xcdURFMDUtXFx1REUxRlxcdURFMjFcXHVERTIyXFx1REUyNFxcdURFMjdcXHVERTI5LVxcdURFMzJcXHVERTM0LVxcdURFMzdcXHVERTM5XFx1REUzQlxcdURFNDJcXHVERTQ3XFx1REU0OVxcdURFNEJcXHVERTRELVxcdURFNEZcXHVERTUxXFx1REU1MlxcdURFNTRcXHVERTU3XFx1REU1OVxcdURFNUJcXHVERTVEXFx1REU1RlxcdURFNjFcXHVERTYyXFx1REU2NFxcdURFNjctXFx1REU2QVxcdURFNkMtXFx1REU3MlxcdURFNzQtXFx1REU3N1xcdURFNzktXFx1REU3Q1xcdURFN0VcXHVERTgwLVxcdURFODlcXHVERThCLVxcdURFOUJcXHVERUExLVxcdURFQTNcXHVERUE1LVxcdURFQTlcXHVERUFCLVxcdURFQkJdfFxcdUQ4NjlbXFx1REMwMC1cXHVERUQ2XFx1REYwMC1cXHVERkZGXXxcXHVEODZEW1xcdURDMDAtXFx1REYzNFxcdURGNDAtXFx1REZGRl18XFx1RDg2RVtcXHVEQzAwLVxcdURDMURcXHVEQzIwLVxcdURGRkZdfFxcdUQ4NzNbXFx1REMwMC1cXHVERUExXFx1REVCMC1cXHVERkZGXXxcXHVEODdBW1xcdURDMDAtXFx1REZFMF18XFx1RDg3RVtcXHVEQzAwLVxcdURFMURdKSknXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgJ1UnOlxyXG4gICAgICAgICAgcmVnZXggKz0gSVNfVU5JQ09ERV9QUk9QRVJUWV9TVVBQT1JURURcclxuICAgICAgICAgICAgPyAnKChbMC05XSl8KFxcXFxzKXwoWy4sLyMhJCVeJio7Ont9PS1fYH4oKV0pfChcXFxccHtMfSkpJ1xyXG4gICAgICAgICAgICA6ICcoKFswLTldKXwoXFxcXHMpfChbLiwvIyEkJV4mKjs6e309LV9gfigpXSl8KD86W0EtWmEtelxceEFBXFx4QjVcXHhCQVxceEMwLVxceEQ2XFx4RDgtXFx4RjZcXHhGOC1cXHUwMkMxXFx1MDJDNi1cXHUwMkQxXFx1MDJFMC1cXHUwMkU0XFx1MDJFQ1xcdTAyRUVcXHUwMzcwLVxcdTAzNzRcXHUwMzc2XFx1MDM3N1xcdTAzN0EtXFx1MDM3RFxcdTAzN0ZcXHUwMzg2XFx1MDM4OC1cXHUwMzhBXFx1MDM4Q1xcdTAzOEUtXFx1MDNBMVxcdTAzQTMtXFx1MDNGNVxcdTAzRjctXFx1MDQ4MVxcdTA0OEEtXFx1MDUyRlxcdTA1MzEtXFx1MDU1NlxcdTA1NTlcXHUwNTYwLVxcdTA1ODhcXHUwNUQwLVxcdTA1RUFcXHUwNUVGLVxcdTA1RjJcXHUwNjIwLVxcdTA2NEFcXHUwNjZFXFx1MDY2RlxcdTA2NzEtXFx1MDZEM1xcdTA2RDVcXHUwNkU1XFx1MDZFNlxcdTA2RUVcXHUwNkVGXFx1MDZGQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTBcXHUwNzEyLVxcdTA3MkZcXHUwNzRELVxcdTA3QTVcXHUwN0IxXFx1MDdDQS1cXHUwN0VBXFx1MDdGNFxcdTA3RjVcXHUwN0ZBXFx1MDgwMC1cXHUwODE1XFx1MDgxQVxcdTA4MjRcXHUwODI4XFx1MDg0MC1cXHUwODU4XFx1MDg2MC1cXHUwODZBXFx1MDhBMC1cXHUwOEI0XFx1MDhCNi1cXHUwOEJEXFx1MDkwNC1cXHUwOTM5XFx1MDkzRFxcdTA5NTBcXHUwOTU4LVxcdTA5NjFcXHUwOTcxLVxcdTA5ODBcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJcXHUwOUI2LVxcdTA5QjlcXHUwOUJEXFx1MDlDRVxcdTA5RENcXHUwOUREXFx1MDlERi1cXHUwOUUxXFx1MDlGMFxcdTA5RjFcXHUwOUZDXFx1MEEwNS1cXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyXFx1MEEzM1xcdTBBMzVcXHUwQTM2XFx1MEEzOFxcdTBBMzlcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE3Mi1cXHUwQTc0XFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJEXFx1MEFEMFxcdTBBRTBcXHUwQUUxXFx1MEFGOVxcdTBCMDUtXFx1MEIwQ1xcdTBCMEZcXHUwQjEwXFx1MEIxMy1cXHUwQjI4XFx1MEIyQS1cXHUwQjMwXFx1MEIzMlxcdTBCMzNcXHUwQjM1LVxcdTBCMzlcXHUwQjNEXFx1MEI1Q1xcdTBCNURcXHUwQjVGLVxcdTBCNjFcXHUwQjcxXFx1MEI4M1xcdTBCODUtXFx1MEI4QVxcdTBCOEUtXFx1MEI5MFxcdTBCOTItXFx1MEI5NVxcdTBCOTlcXHUwQjlBXFx1MEI5Q1xcdTBCOUVcXHUwQjlGXFx1MEJBM1xcdTBCQTRcXHUwQkE4LVxcdTBCQUFcXHUwQkFFLVxcdTBCQjlcXHUwQkQwXFx1MEMwNS1cXHUwQzBDXFx1MEMwRS1cXHUwQzEwXFx1MEMxMi1cXHUwQzI4XFx1MEMyQS1cXHUwQzM5XFx1MEMzRFxcdTBDNTgtXFx1MEM1QVxcdTBDNjBcXHUwQzYxXFx1MEM4MFxcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkRcXHUwQ0RFXFx1MENFMFxcdTBDRTFcXHUwQ0YxXFx1MENGMlxcdTBEMDUtXFx1MEQwQ1xcdTBEMEUtXFx1MEQxMFxcdTBEMTItXFx1MEQzQVxcdTBEM0RcXHUwRDRFXFx1MEQ1NC1cXHUwRDU2XFx1MEQ1Ri1cXHUwRDYxXFx1MEQ3QS1cXHUwRDdGXFx1MEQ4NS1cXHUwRDk2XFx1MEQ5QS1cXHUwREIxXFx1MERCMy1cXHUwREJCXFx1MERCRFxcdTBEQzAtXFx1MERDNlxcdTBFMDEtXFx1MEUzMFxcdTBFMzJcXHUwRTMzXFx1MEU0MC1cXHUwRTQ2XFx1MEU4MVxcdTBFODJcXHUwRTg0XFx1MEU4Ni1cXHUwRThBXFx1MEU4Qy1cXHUwRUEzXFx1MEVBNVxcdTBFQTctXFx1MEVCMFxcdTBFQjJcXHUwRUIzXFx1MEVCRFxcdTBFQzAtXFx1MEVDNFxcdTBFQzZcXHUwRURDLVxcdTBFREZcXHUwRjAwXFx1MEY0MC1cXHUwRjQ3XFx1MEY0OS1cXHUwRjZDXFx1MEY4OC1cXHUwRjhDXFx1MTAwMC1cXHUxMDJBXFx1MTAzRlxcdTEwNTAtXFx1MTA1NVxcdTEwNUEtXFx1MTA1RFxcdTEwNjFcXHUxMDY1XFx1MTA2NlxcdTEwNkUtXFx1MTA3MFxcdTEwNzUtXFx1MTA4MVxcdTEwOEVcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEwRDAtXFx1MTBGQVxcdTEwRkMtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM4MC1cXHUxMzhGXFx1MTNBMC1cXHUxM0Y1XFx1MTNGOC1cXHUxM0ZEXFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTZGMS1cXHUxNkY4XFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzExXFx1MTcyMC1cXHUxNzMxXFx1MTc0MC1cXHUxNzUxXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc4MC1cXHUxN0IzXFx1MTdEN1xcdTE3RENcXHUxODIwLVxcdTE4NzhcXHUxODgwLVxcdTE4ODRcXHUxODg3LVxcdTE4QThcXHUxOEFBXFx1MThCMC1cXHUxOEY1XFx1MTkwMC1cXHUxOTFFXFx1MTk1MC1cXHUxOTZEXFx1MTk3MC1cXHUxOTc0XFx1MTk4MC1cXHUxOUFCXFx1MTlCMC1cXHUxOUM5XFx1MUEwMC1cXHUxQTE2XFx1MUEyMC1cXHUxQTU0XFx1MUFBN1xcdTFCMDUtXFx1MUIzM1xcdTFCNDUtXFx1MUI0QlxcdTFCODMtXFx1MUJBMFxcdTFCQUVcXHUxQkFGXFx1MUJCQS1cXHUxQkU1XFx1MUMwMC1cXHUxQzIzXFx1MUM0RC1cXHUxQzRGXFx1MUM1QS1cXHUxQzdEXFx1MUM4MC1cXHUxQzg4XFx1MUM5MC1cXHUxQ0JBXFx1MUNCRC1cXHUxQ0JGXFx1MUNFOS1cXHUxQ0VDXFx1MUNFRS1cXHUxQ0YzXFx1MUNGNVxcdTFDRjZcXHUxQ0ZBXFx1MUQwMC1cXHUxREJGXFx1MUUwMC1cXHUxRjE1XFx1MUYxOC1cXHUxRjFEXFx1MUYyMC1cXHUxRjQ1XFx1MUY0OC1cXHUxRjREXFx1MUY1MC1cXHUxRjU3XFx1MUY1OVxcdTFGNUJcXHUxRjVEXFx1MUY1Ri1cXHUxRjdEXFx1MUY4MC1cXHUxRkI0XFx1MUZCNi1cXHUxRkJDXFx1MUZCRVxcdTFGQzItXFx1MUZDNFxcdTFGQzYtXFx1MUZDQ1xcdTFGRDAtXFx1MUZEM1xcdTFGRDYtXFx1MUZEQlxcdTFGRTAtXFx1MUZFQ1xcdTFGRjItXFx1MUZGNFxcdTFGRjYtXFx1MUZGQ1xcdTIwNzFcXHUyMDdGXFx1MjA5MC1cXHUyMDlDXFx1MjEwMlxcdTIxMDdcXHUyMTBBLVxcdTIxMTNcXHUyMTE1XFx1MjExOS1cXHUyMTFEXFx1MjEyNFxcdTIxMjZcXHUyMTI4XFx1MjEyQS1cXHUyMTJEXFx1MjEyRi1cXHUyMTM5XFx1MjEzQy1cXHUyMTNGXFx1MjE0NS1cXHUyMTQ5XFx1MjE0RVxcdTIxODNcXHUyMTg0XFx1MkMwMC1cXHUyQzJFXFx1MkMzMC1cXHUyQzVFXFx1MkM2MC1cXHUyQ0U0XFx1MkNFQi1cXHUyQ0VFXFx1MkNGMlxcdTJDRjNcXHUyRDAwLVxcdTJEMjVcXHUyRDI3XFx1MkQyRFxcdTJEMzAtXFx1MkQ2N1xcdTJENkZcXHUyRDgwLVxcdTJEOTZcXHUyREEwLVxcdTJEQTZcXHUyREE4LVxcdTJEQUVcXHUyREIwLVxcdTJEQjZcXHUyREI4LVxcdTJEQkVcXHUyREMwLVxcdTJEQzZcXHUyREM4LVxcdTJEQ0VcXHUyREQwLVxcdTJERDZcXHUyREQ4LVxcdTJEREVcXHUyRTJGXFx1MzAwNVxcdTMwMDZcXHUzMDMxLVxcdTMwMzVcXHUzMDNCXFx1MzAzQ1xcdTMwNDEtXFx1MzA5NlxcdTMwOUQtXFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkMtXFx1MzBGRlxcdTMxMDUtXFx1MzEyRlxcdTMxMzEtXFx1MzE4RVxcdTMxQTAtXFx1MzFCQVxcdTMxRjAtXFx1MzFGRlxcdTM0MDAtXFx1NERCNVxcdTRFMDAtXFx1OUZFRlxcdUEwMDAtXFx1QTQ4Q1xcdUE0RDAtXFx1QTRGRFxcdUE1MDAtXFx1QTYwQ1xcdUE2MTAtXFx1QTYxRlxcdUE2MkFcXHVBNjJCXFx1QTY0MC1cXHVBNjZFXFx1QTY3Ri1cXHVBNjlEXFx1QTZBMC1cXHVBNkU1XFx1QTcxNy1cXHVBNzFGXFx1QTcyMi1cXHVBNzg4XFx1QTc4Qi1cXHVBN0JGXFx1QTdDMi1cXHVBN0M2XFx1QTdGNy1cXHVBODAxXFx1QTgwMy1cXHVBODA1XFx1QTgwNy1cXHVBODBBXFx1QTgwQy1cXHVBODIyXFx1QTg0MC1cXHVBODczXFx1QTg4Mi1cXHVBOEIzXFx1QThGMi1cXHVBOEY3XFx1QThGQlxcdUE4RkRcXHVBOEZFXFx1QTkwQS1cXHVBOTI1XFx1QTkzMC1cXHVBOTQ2XFx1QTk2MC1cXHVBOTdDXFx1QTk4NC1cXHVBOUIyXFx1QTlDRlxcdUE5RTAtXFx1QTlFNFxcdUE5RTYtXFx1QTlFRlxcdUE5RkEtXFx1QTlGRVxcdUFBMDAtXFx1QUEyOFxcdUFBNDAtXFx1QUE0MlxcdUFBNDQtXFx1QUE0QlxcdUFBNjAtXFx1QUE3NlxcdUFBN0FcXHVBQTdFLVxcdUFBQUZcXHVBQUIxXFx1QUFCNVxcdUFBQjZcXHVBQUI5LVxcdUFBQkRcXHVBQUMwXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFQVxcdUFBRjItXFx1QUFGNFxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCMzAtXFx1QUI1QVxcdUFCNUMtXFx1QUI2N1xcdUFCNzAtXFx1QUJFMlxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZCMURcXHVGQjFGLVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRFxcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGMjEtXFx1RkYzQVxcdUZGNDEtXFx1RkY1QVxcdUZGNjYtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQ118XFx1RDgwMFtcXHVEQzAwLVxcdURDMEJcXHVEQzBELVxcdURDMjZcXHVEQzI4LVxcdURDM0FcXHVEQzNDXFx1REMzRFxcdURDM0YtXFx1REM0RFxcdURDNTAtXFx1REM1RFxcdURDODAtXFx1RENGQVxcdURFODAtXFx1REU5Q1xcdURFQTAtXFx1REVEMFxcdURGMDAtXFx1REYxRlxcdURGMkQtXFx1REY0MFxcdURGNDItXFx1REY0OVxcdURGNTAtXFx1REY3NVxcdURGODAtXFx1REY5RFxcdURGQTAtXFx1REZDM1xcdURGQzgtXFx1REZDRl18XFx1RDgwMVtcXHVEQzAwLVxcdURDOURcXHVEQ0IwLVxcdURDRDNcXHVEQ0Q4LVxcdURDRkJcXHVERDAwLVxcdUREMjdcXHVERDMwLVxcdURENjNcXHVERTAwLVxcdURGMzZcXHVERjQwLVxcdURGNTVcXHVERjYwLVxcdURGNjddfFxcdUQ4MDJbXFx1REMwMC1cXHVEQzA1XFx1REMwOFxcdURDMEEtXFx1REMzNVxcdURDMzdcXHVEQzM4XFx1REMzQ1xcdURDM0YtXFx1REM1NVxcdURDNjAtXFx1REM3NlxcdURDODAtXFx1REM5RVxcdURDRTAtXFx1RENGMlxcdURDRjRcXHVEQ0Y1XFx1REQwMC1cXHVERDE1XFx1REQyMC1cXHVERDM5XFx1REQ4MC1cXHVEREI3XFx1RERCRVxcdUREQkZcXHVERTAwXFx1REUxMC1cXHVERTEzXFx1REUxNS1cXHVERTE3XFx1REUxOS1cXHVERTM1XFx1REU2MC1cXHVERTdDXFx1REU4MC1cXHVERTlDXFx1REVDMC1cXHVERUM3XFx1REVDOS1cXHVERUU0XFx1REYwMC1cXHVERjM1XFx1REY0MC1cXHVERjU1XFx1REY2MC1cXHVERjcyXFx1REY4MC1cXHVERjkxXXxcXHVEODAzW1xcdURDMDAtXFx1REM0OFxcdURDODAtXFx1RENCMlxcdURDQzAtXFx1RENGMlxcdUREMDAtXFx1REQyM1xcdURGMDAtXFx1REYxQ1xcdURGMjdcXHVERjMwLVxcdURGNDVcXHVERkUwLVxcdURGRjZdfFxcdUQ4MDRbXFx1REMwMy1cXHVEQzM3XFx1REM4My1cXHVEQ0FGXFx1RENEMC1cXHVEQ0U4XFx1REQwMy1cXHVERDI2XFx1REQ0NFxcdURENTAtXFx1REQ3MlxcdURENzZcXHVERDgzLVxcdUREQjJcXHVEREMxLVxcdUREQzRcXHVERERBXFx1REREQ1xcdURFMDAtXFx1REUxMVxcdURFMTMtXFx1REUyQlxcdURFODAtXFx1REU4NlxcdURFODhcXHVERThBLVxcdURFOERcXHVERThGLVxcdURFOURcXHVERTlGLVxcdURFQThcXHVERUIwLVxcdURFREVcXHVERjA1LVxcdURGMENcXHVERjBGXFx1REYxMFxcdURGMTMtXFx1REYyOFxcdURGMkEtXFx1REYzMFxcdURGMzJcXHVERjMzXFx1REYzNS1cXHVERjM5XFx1REYzRFxcdURGNTBcXHVERjVELVxcdURGNjFdfFxcdUQ4MDVbXFx1REMwMC1cXHVEQzM0XFx1REM0Ny1cXHVEQzRBXFx1REM1RlxcdURDODAtXFx1RENBRlxcdURDQzRcXHVEQ0M1XFx1RENDN1xcdUREODAtXFx1RERBRVxcdURERDgtXFx1REREQlxcdURFMDAtXFx1REUyRlxcdURFNDRcXHVERTgwLVxcdURFQUFcXHVERUI4XFx1REYwMC1cXHVERjFBXXxcXHVEODA2W1xcdURDMDAtXFx1REMyQlxcdURDQTAtXFx1RENERlxcdURDRkZcXHVEREEwLVxcdUREQTdcXHVEREFBLVxcdURERDBcXHVEREUxXFx1RERFM1xcdURFMDBcXHVERTBCLVxcdURFMzJcXHVERTNBXFx1REU1MFxcdURFNUMtXFx1REU4OVxcdURFOURcXHVERUMwLVxcdURFRjhdfFxcdUQ4MDdbXFx1REMwMC1cXHVEQzA4XFx1REMwQS1cXHVEQzJFXFx1REM0MFxcdURDNzItXFx1REM4RlxcdUREMDAtXFx1REQwNlxcdUREMDhcXHVERDA5XFx1REQwQi1cXHVERDMwXFx1REQ0NlxcdURENjAtXFx1REQ2NVxcdURENjdcXHVERDY4XFx1REQ2QS1cXHVERDg5XFx1REQ5OFxcdURFRTAtXFx1REVGMl18XFx1RDgwOFtcXHVEQzAwLVxcdURGOTldfFxcdUQ4MDlbXFx1REM4MC1cXHVERDQzXXxbXFx1RDgwQ1xcdUQ4MUMtXFx1RDgyMFxcdUQ4NDAtXFx1RDg2OFxcdUQ4NkEtXFx1RDg2Q1xcdUQ4NkYtXFx1RDg3MlxcdUQ4NzQtXFx1RDg3OV1bXFx1REMwMC1cXHVERkZGXXxcXHVEODBEW1xcdURDMDAtXFx1REMyRV18XFx1RDgxMVtcXHVEQzAwLVxcdURFNDZdfFxcdUQ4MUFbXFx1REMwMC1cXHVERTM4XFx1REU0MC1cXHVERTVFXFx1REVEMC1cXHVERUVEXFx1REYwMC1cXHVERjJGXFx1REY0MC1cXHVERjQzXFx1REY2My1cXHVERjc3XFx1REY3RC1cXHVERjhGXXxcXHVEODFCW1xcdURFNDAtXFx1REU3RlxcdURGMDAtXFx1REY0QVxcdURGNTBcXHVERjkzLVxcdURGOUZcXHVERkUwXFx1REZFMVxcdURGRTNdfFxcdUQ4MjFbXFx1REMwMC1cXHVERkY3XXxcXHVEODIyW1xcdURDMDAtXFx1REVGMl18XFx1RDgyQ1tcXHVEQzAwLVxcdUREMUVcXHVERDUwLVxcdURENTJcXHVERDY0LVxcdURENjdcXHVERDcwLVxcdURFRkJdfFxcdUQ4MkZbXFx1REMwMC1cXHVEQzZBXFx1REM3MC1cXHVEQzdDXFx1REM4MC1cXHVEQzg4XFx1REM5MC1cXHVEQzk5XXxcXHVEODM1W1xcdURDMDAtXFx1REM1NFxcdURDNTYtXFx1REM5Q1xcdURDOUVcXHVEQzlGXFx1RENBMlxcdURDQTVcXHVEQ0E2XFx1RENBOS1cXHVEQ0FDXFx1RENBRS1cXHVEQ0I5XFx1RENCQlxcdURDQkQtXFx1RENDM1xcdURDQzUtXFx1REQwNVxcdUREMDctXFx1REQwQVxcdUREMEQtXFx1REQxNFxcdUREMTYtXFx1REQxQ1xcdUREMUUtXFx1REQzOVxcdUREM0ItXFx1REQzRVxcdURENDAtXFx1REQ0NFxcdURENDZcXHVERDRBLVxcdURENTBcXHVERDUyLVxcdURFQTVcXHVERUE4LVxcdURFQzBcXHVERUMyLVxcdURFREFcXHVERURDLVxcdURFRkFcXHVERUZDLVxcdURGMTRcXHVERjE2LVxcdURGMzRcXHVERjM2LVxcdURGNEVcXHVERjUwLVxcdURGNkVcXHVERjcwLVxcdURGODhcXHVERjhBLVxcdURGQThcXHVERkFBLVxcdURGQzJcXHVERkM0LVxcdURGQ0JdfFxcdUQ4MzhbXFx1REQwMC1cXHVERDJDXFx1REQzNy1cXHVERDNEXFx1REQ0RVxcdURFQzAtXFx1REVFQl18XFx1RDgzQVtcXHVEQzAwLVxcdURDQzRcXHVERDAwLVxcdURENDNcXHVERDRCXXxcXHVEODNCW1xcdURFMDAtXFx1REUwM1xcdURFMDUtXFx1REUxRlxcdURFMjFcXHVERTIyXFx1REUyNFxcdURFMjdcXHVERTI5LVxcdURFMzJcXHVERTM0LVxcdURFMzdcXHVERTM5XFx1REUzQlxcdURFNDJcXHVERTQ3XFx1REU0OVxcdURFNEJcXHVERTRELVxcdURFNEZcXHVERTUxXFx1REU1MlxcdURFNTRcXHVERTU3XFx1REU1OVxcdURFNUJcXHVERTVEXFx1REU1RlxcdURFNjFcXHVERTYyXFx1REU2NFxcdURFNjctXFx1REU2QVxcdURFNkMtXFx1REU3MlxcdURFNzQtXFx1REU3N1xcdURFNzktXFx1REU3Q1xcdURFN0VcXHVERTgwLVxcdURFODlcXHVERThCLVxcdURFOUJcXHVERUExLVxcdURFQTNcXHVERUE1LVxcdURFQTlcXHVERUFCLVxcdURFQkJdfFxcdUQ4NjlbXFx1REMwMC1cXHVERUQ2XFx1REYwMC1cXHVERkZGXXxcXHVEODZEW1xcdURDMDAtXFx1REYzNFxcdURGNDAtXFx1REZGRl18XFx1RDg2RVtcXHVEQzAwLVxcdURDMURcXHVEQzIwLVxcdURGRkZdfFxcdUQ4NzNbXFx1REMwMC1cXHVERUExXFx1REVCMC1cXHVERkZGXXxcXHVEODdBW1xcdURDMDAtXFx1REZFMF18XFx1RDg3RVtcXHVEQzAwLVxcdURFMURdKSknXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICByZWdleCArPSBjLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJylcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgZ2VuZXJhdGVQYXR0ZXJuRnJvbU1hc2suX19DQUNIRV9fW2NhY2hlS2V5XSA9IHJlZ2V4XHJcbiAgfVxyXG5cclxuICByZXR1cm4gZ2VuZXJhdGVQYXR0ZXJuRnJvbU1hc2suX19DQUNIRV9fW2NhY2hlS2V5XVxyXG59XHJcblxyXG4vKipcclxuICogVW5tYXNrIHRoZSBnaXZlbiB2YWx1ZVxyXG4gKlxyXG4gKiBAcGFyYW0ge1N0cmluZ30gbWFza2VkVmFsdWUgbWFza2VkIHN0cmluZ1xyXG4gKiBAcGFyYW0ge1N0cmluZ30gbWFzayAgdGhlIHVzZWQgbWFzayB0byBwcm9kdWNlIHRoZSBtYXNrZWQgc3RyaW5nXHJcbiAqL1xyXG5jb25zdCB1bm1hc2sgPSAobWFza2VkVmFsdWUsIG1hc2spID0+IHtcclxuICBpZiAodHlwZW9mIHVubWFzay5fX0NBQ0hFX18gPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICB1bm1hc2suX19DQUNIRV9fID0ge31cclxuICB9XHJcblxyXG4gIGNvbnN0IGNhY2hlS2V5ID0gYCR7bWFza2VkVmFsdWV9LSR7bWFza31gXHJcblxyXG4gIGlmICghdW5tYXNrLl9fQ0FDSEVfX1tjYWNoZUtleV0pIHtcclxuICAgIGNvbnN0IG1hc2tBc0FycmF5ID0gbWFzay5zcGxpdCgnJylcclxuICAgIGNvbnN0IG1hc2tlZFZhbHVlQXNBcnJheSA9IG1hc2tlZFZhbHVlLnNwbGl0KCcnKVxyXG5cclxuICAgIGxldCB1bm1hc2tlZCA9ICcnXHJcblxyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG1hc2tlZFZhbHVlQXNBcnJheS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgY29uc3QgZWwgPSBtYXNrZWRWYWx1ZUFzQXJyYXlbaW5kZXhdXHJcbiAgICAgIGNvbnN0IG1hc2sgPSBtYXNrQXNBcnJheVtpbmRleF1cclxuICAgICAgY29uc3QgZWxIYXNNYXNrID0gU1VQUE9SVEVEX01BU0tTLmluZGV4T2YobWFzaykgPiAtMVxyXG4gICAgICBpZiAoZWxIYXNNYXNrKSB7XHJcbiAgICAgICAgY29uc3QgcGF0dGVybiA9IG5ldyBSZWdFeHAoXHJcbiAgICAgICAgICBnZW5lcmF0ZVBhdHRlcm5Gcm9tTWFzayhtYXNrKSxcclxuICAgICAgICAgIElTX1VOSUNPREVfUFJPUEVSVFlfU1VQUE9SVEVEID8gJ3UnIDogJydcclxuICAgICAgICApXHJcbiAgICAgICAgaWYgKHBhdHRlcm4udGVzdChlbCkpIHVubWFza2VkICs9IGVsXHJcbiAgICAgICAgZWxzZSBicmVha1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdW5tYXNrLl9fQ0FDSEVfX1tjYWNoZUtleV0gPSB1bm1hc2tlZC50b0xvY2FsZUxvd2VyQ2FzZSgpXHJcbiAgfVxyXG5cclxuICByZXR1cm4gdW5tYXNrLl9fQ0FDSEVfX1tjYWNoZUtleV1cclxufVxyXG5cclxuLyoqXHJcbiAqIEdpdmVuIHRoZSBtYXNrZWQgc3RyaW5nICwgZmluZCB0aGUgbmV4dCBjYXJldCBwb3NpdGlvbiBkZXBlbmRpbmcgb25cclxuICogd2hhdCBpcyBtaXNzaW5nIHRvIGNvbXBsZXRlIHRoZSBtYXNrXHJcbiAqXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBtYXNrZWRWYWx1ZSBtYXNrZWQgc3RyaW5nXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBtYXNrICB0aGUgdXNlZCBtYXNrIHRvIHByb2R1Y2UgdGhlIG1hc2tlZCBzdHJpbmdcclxuICovXHJcbmNvbnN0IGZpbmRDYXJldFBvc2l0aW9uID0gKG1hc2tlZFZhbHVlLCBtYXNrKSA9PiB7XHJcbiAgaWYgKHR5cGVvZiBmaW5kQ2FyZXRQb3NpdGlvbi5fX0NBQ0hFX18gPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICBmaW5kQ2FyZXRQb3NpdGlvbi5fX0NBQ0hFX18gPSB7fVxyXG4gIH1cclxuXHJcbiAgY29uc3QgY2FjaGVLZXkgPSBgJHttYXNrZWRWYWx1ZX0tJHttYXNrfWBcclxuICBpZiAoIWZpbmRDYXJldFBvc2l0aW9uLl9fQ0FDSEVfX1tjYWNoZUtleV0pIHtcclxuICAgIGNvbnN0IG1hc2tBc0FycmF5ID0gbWFzay5zcGxpdCgnJylcclxuICAgIGxldCBtYXNrZWRWYWx1ZUFzQXJyYXkgPSBtYXNrZWRWYWx1ZS5zcGxpdCgnJylcclxuICAgIGlmIChtYXNrZWRWYWx1ZUFzQXJyYXkubGVuZ3RoIDwgbWFza0FzQXJyYXkubGVuZ3RoKSB7XHJcbiAgICAgIG1hc2tlZFZhbHVlQXNBcnJheSA9IG1hc2tlZFZhbHVlQXNBcnJheS5jb25jYXQoXHJcbiAgICAgICAgbmV3IEFycmF5KG1hc2tBc0FycmF5Lmxlbmd0aCAtIG1hc2tlZFZhbHVlQXNBcnJheS5sZW5ndGgpLmpvaW4oJyAnKS5zcGxpdCgnJylcclxuICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBwb3NpdGlvbiA9IC0xXHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbWFza0FzQXJyYXkubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgIGNvbnN0IGVsID0gbWFza0FzQXJyYXlbaW5kZXhdXHJcbiAgICAgIGlmIChlbCAhPT0gbWFza2VkVmFsdWVBc0FycmF5W2luZGV4XSkge1xyXG4gICAgICAgIC8vIGlmIChtYXNrZWRWYWx1ZUFzQXJyYXlbaW5kZXhdID09PSAnICcpIHJldHVybiBpbmRleFxyXG4gICAgICAgIGlmIChTVVBQT1JURURfTUFTS1MuaW5kZXhPZihlbCkgPiAtMSkge1xyXG4gICAgICAgICAgY29uc3QgcGF0dGVybiA9IG5ldyBSZWdFeHAoXHJcbiAgICAgICAgICAgIGdlbmVyYXRlUGF0dGVybkZyb21NYXNrKGVsKSxcclxuICAgICAgICAgICAgSVNfVU5JQ09ERV9QUk9QRVJUWV9TVVBQT1JURUQgPyAndScgOiAnJ1xyXG4gICAgICAgICAgKVxyXG5cclxuICAgICAgICAgIGlmICghcGF0dGVybi50ZXN0KG1hc2tlZFZhbHVlQXNBcnJheVtpbmRleF0pKSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uID0gaW5kZXhcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmaW5kQ2FyZXRQb3NpdGlvbi5fX0NBQ0hFX19bY2FjaGVLZXldID1cclxuICAgICAgcG9zaXRpb24gPCAwID8gbWFza2VkVmFsdWVBc0FycmF5Lmxlbmd0aCA6IHBvc2l0aW9uXHJcbiAgfVxyXG5cclxuICByZXR1cm4gZmluZENhcmV0UG9zaXRpb24uX19DQUNIRV9fW2NhY2hlS2V5XVxyXG59XHJcblxyXG5leHBvcnQge1xyXG4gIGlzTWFza2VkVmFsdWUsXHJcbiAgbWFza0lmTm90TWFza2VkLFxyXG4gIHVubWFzayxcclxuICBmaW5kQ2FyZXRQb3NpdGlvbixcclxuICBnZW5lcmF0ZVBhdHRlcm5Gcm9tTWFzayxcclxuICBJU19VTklDT0RFX1BST1BFUlRZX1NVUFBPUlRFRCxcclxufVxyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvVGV4dElucHV0L3Rvb2xzLmpzIiwiLypcclxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmFzaXMtaW5wdXQtbWFza2luZyBsaWIuXHJcbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cclxuICpcclxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcclxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXHJcbiAqL1xyXG5cclxuaW1wb3J0IE51bWJlcklucHV0IGZyb20gJy4vTnVtYmVySW5wdXQnXHJcblxyXG5leHBvcnQgZGVmYXVsdCBOdW1iZXJJbnB1dFxyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvTnVtYmVySW5wdXQvaW5kZXguanMiLCIvKlxyXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBiYXNpcy1pbnB1dC1tYXNraW5nIGxpYi5cclxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxyXG4gKlxyXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxyXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cclxuICovXHJcblxyXG5pbXBvcnQgTnVtYmVyTWFzayBmcm9tICdiYmotbWFza3Mvc3JjL051bWJlck1hc2snXHJcblxyXG5jb25zdCBjb3VudERlY2ltYWxzID0gdmFsdWUgPT4ge1xyXG4gIGlmICh2YWx1ZSAlIDEgIT0gMCkge1xyXG4gICAgY29uc3Qgc3BsaXQgPSB2YWx1ZS50b1N0cmluZygpLnNwbGl0KCcuJylcclxuICAgIGlmIChzcGxpdC5sZW5ndGggPT09IDIpIHJldHVybiBzcGxpdFsxXS5sZW5ndGhcclxuICB9XHJcbiAgcmV0dXJuIDBcclxufVxyXG5cclxuLyoqXHJcbiAqIFRoZSBgTnVtYmVySW5wdXRgIHdpbGwgd3JhcCB0ZXh0IGlucHV0cyBhbmQgYXBwbHkgdGhlIGdpdmVuIFtiYmogTnVtYmVyIG1hc2tdKGh0dHBzOi8vZ2l0aHViLmNvbS9CYXNpc0h1Yi9iYmotbWFza3MjbnVtYmVyLW1hc2tzKVxyXG4gKlxyXG4gKiAqKk9wdGlvbnMqKlxyXG4gKlxyXG4gKiBfT3B0aW9ucyBjYW4gYmUgcGFzc2VkIHZpYSBkYXRhIGF0dHJpYnV0ZXMgLiBGb3IgZGF0YSBhdHRyaWJ1dGVzLCBhcHBlbmQgdGhlIG9wdGlvbiBuYW1lIHRvIGRhdGEtLCBhcyBpbiBkYXRhLW1hc2tfXHJcbiAqXHJcbiAqIHwgT3B0aW9uICAgIHwgRGVmYXVsdCB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiB8LS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcclxuICogfCBtYXNrIHwgICAgICAgICB8IFRoZSBiYmogbnVtYmVyIG1hc2sgQHNlZSBbQkJqIE51bWJlciBNYXNrc10oaHR0cHM6Ly9naXRodWIuY29tL0Jhc2lzSHViL2Jiai1tYXNrcyNudW1iZXItbWFza3MpIHxcclxuICogfCBtaW4gfCAgICAgICAgIHwgVGhlIG1heGltdW0gdmFsdWUgdG8gYWNjZXB0IGZvciB0aGlzIGlucHV0fFxyXG4gKiB8IG1heCB8ICAgICAgICAgfCBUaGUgbWluaW11bSB2YWx1ZSB0byBhY2NlcHQgZm9yIHRoaXMgaW5wdXR8XHJcbiAqIHwgc3RlcCB8ICAgICAgICAgfCBBIHN0ZXBwaW5nIGludGVydmFsIHRvIHVzZSB3aGVuIHVzaW5nIHVwIGFuZCBkb3duIGFycm93cyB0byBhZGp1c3QgdGhlIHZhbHVlLCBhcyB3ZWxsIGFzIGZvciB2YWxpZGF0aW9ufFxyXG4gKiB8Z3JvdXBpbmctc2VwYXJhdG9yIHwgLCB8IGEgY2hhciB3aGljaCB3aWxsIGJlIHVzZWQgYXMgYSBncm91cGluZyBzZXBhcmF0b3IgfFxyXG4gKiB8ZGVjaW1hbC1zZXBhcmF0b3IgfCAuIHwgYSBjaGFyIHdoaWNoIHdpbGwgYmUgdXNlZCBhcyBhIGRlY2ltYWwgc2VwYXJhdG9yIHxcclxuICogfGZvcmNlLXRyYWlsaW5nLXplcm9zIHwgZmFsc2UgfCBBZmZlY3RzIHRoZSBvdXRwdXQgYnkgc3dpdGNoaW5nIHRoZSB3YXkgYSBtYXNrIHdpdGggXCIjXCIgY2hhcmFjdGVycyBpbiB0aGUgdHJhaWxpbmcgcG9zaXRpb25zIGlzIGZpbGxlZC4gZm9yIGV4YW1wbGUsIHRoZSBmdW5jdGlvbiBOdW1iZXJNYXNrLm1hc2soLjEwOlwiIy4jI1wiKSByZXR1cm5zIC4xMCBpbnN0ZWFkIG9mIC4xfFxyXG4gKlxyXG4gKiAgPGJyPlxyXG4gKlxyXG4gKiAqKkV4YW1wbGUgOioqXHJcbiAqIGBgYGh0bWxcclxuICogIDxpbnB1dCBjbGFzcz1cImJiai1udW1iZXItbWFza2VkXCIgbmFtZT1cInRlc3RcIiBpZD1cInRlc3RcIiB2YWx1ZT1cIjEyMzRcIiBkYXRhLW1hc2s9XCIjIywjIzBcIj5cclxuICpcclxuICogIDxzY3JpcHQ+XHJcbiAqICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoZSkge1xyXG4gKiAgICAgIG5ldyBCYXNpcy5JbnB1dE1hc2tpbmcuTnVtYmVySW5wdXQoe1xyXG4gKlxyXG4gKiAgICAgICAgIC8vIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZU1hc2tlZCAgbWFza2VkIHZhbHVlXHJcbiAqICAgICAgICAgLy8gQHBhcmFtIHtOdW1iZXJ9IHZhbHVlVW5tYXNrZWQgIG9yaWdpbmFsIHZhbHVlXHJcbiAqICAgICAgICAgLy8gQHBhcmFtIHtIVE1MSW5wdXRFbGVtZW50fSBpbnB1dCB0aGUgYWN0dWFsIGlucHV0IGluc3RhbmNlXHJcbiAqICAgICAgICAgb25VcGRhdGU6ICh2YWx1ZU1hc2tlZCwgdmFsdWVVbm1hc2tlZCwgaW5wdXQsIGlzQXBwbGllZCwgaXNJbml0aWFsKSA9PiB7XHJcbiAqICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nXHJcbiAqICAgICAgICAgfSxcclxuICpcclxuICogICAgICAgICAvLyBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IGVycm9yIGxhc3Qgb2NjdXJyZWQgZXJyb3IuIGNvdWxkIGJlIG1hc2sgZXJyb3Igb3IgdmFsaWRhdGlvbiBlcnJvclxyXG4gKiAgICAgICAgIC8vIEBwYXJhbSB7SFRNTElucHV0RWxlbWVudH0gaW5wdXQgdGhlIGFjdHVhbCBpbnB1dCBpbnN0YW5jZVxyXG4gKiAgICAgICAgIG9uSW52YWxpZDogKGVyciAsIGlucHV0KSA9PiB7XHJcbiAqICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nXHJcbiAqICAgICAgICAgfVxyXG4gKiAgICAgIH0pXHJcbiAqICAgIH0pXHJcbiAqICA8L3NjcmlwdD5cclxuICogYGBgXHJcbiAqXHJcbiAqIEBhdXRob3IgSHl5YW4gQWJvIEZha2hlciA8aGFib2Zha2hlckBiYXNpcy5jb20+XHJcbiAqL1xyXG5jbGFzcyBOdW1iZXJJbnB1dCB7XHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0IG5ldyBOdW1iZXJJbnB1dFxyXG4gICAqXHJcbiAgICogQHBhcmFtIHs/T2JqZWN0fSBvcHRpb25zIC0gVGhlIGlucHV0IG9wdGlvbnMuXHJcbiAgICogQHBhcmFtIHtIVE1MRWxlbWVudHxTdHJpbmd9IFtvcHRpb25zLmVsZW1lbnRzPVwiLmJiai1udW1iZXItbWFza2VkXCJdIC0gVGhlIGNsYXNzIG5hbWUgb3IgdGhlIG5vZGUgdG8gdXNlXHJcbiAgICogQHBhcmFtIHtIVE1MRG9jdW1lbnR9IFtvcHRpb25zLmRvY3VtZW50PWRvY3VtZW50XSAtIERvY3VtZW50IGluc3RhbmNlIHRvIHVzZVxyXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5jc3NDbGFzc0Vycm9yPVwiYmJqLW1hc2stZXJyb3JcIl0gLSBBIGNzcyBjbGFzcyB0byBhdHRhY2ggdG8gdGhlIGlucHV0IHdoZW4gaXQgaXMgaW52YWxpZFxyXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5jc3NDbGFzc1N1Y2Nlc3M9XCJiYmotbWFzay1zdWNjZXNzXCJdIC0gQSBjc3MgY2xhc3MgdG8gYXR0YWNoIHRvIHRoZSBpbnB1dCB3aGVuIGl0IGlzIHZhbGlkIGFmdGVyIHRoZSB1c2VyIGludGVyYWN0aW9uXHJcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdGlvbnMub25VcGRhdGU9bnVsbF0gLSBBIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCBvbiB0aGUgbmV3IG1hc2tlZCB2YWx1ZSBpcyBzZXRcclxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0aW9ucy5vbkludmFsaWQ9bnVsbF0gLSBBIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCBvbiB0aGUgaW5wdXQgb3IgdGhlIG1hc2sgaXMgaW52YWxpZFxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSB7fSkge1xyXG4gICAgdGhpcy5vcHRpb25zID0ge1xyXG4gICAgICAuLi57XHJcbiAgICAgICAgZWxlbWVudHM6ICcuYmJqLW51bWJlci1tYXNrZWQnLFxyXG4gICAgICAgIGRvYzogZG9jdW1lbnQsXHJcbiAgICAgICAgY3NzQ2xhc3NFcnJvcjogJ2Jiai1tYXNrLWVycm9yJyxcclxuICAgICAgICBjc3NDbGFzc1N1Y2Nlc3M6ICdiYmotbWFzay1zdWNjZXNzJyxcclxuICAgICAgICBvblVwZGF0ZTogbnVsbCxcclxuICAgICAgICBvbkludmFsaWQ6IG51bGwsXHJcbiAgICAgIH0sXHJcbiAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fYWN0dWFsSW5wdXRIYW5kbGVyID0gdGhpcy5fYWN0dWFsSW5wdXRIYW5kbGVyLmJpbmQodGhpcylcclxuICAgIHRoaXMuX3VubWFza2VkSW5wdXRIYW5kbGVyID0gdGhpcy5fdW5tYXNrZWRJbnB1dEhhbmRsZXIuYmluZCh0aGlzKVxyXG4gICAgdGhpcy5yZWZyZXNoKClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgdGhlIGNvbXBvbmVudCBhbmQgd3JhcCB0aGUgaW5wdXQgZWxlbWVudHMgZm9yIG1hc2tpbmcgaW4gY2FzZVxyXG4gICAqIHRoZXkgYXJlIG5vdCB3cmFwcGVkIHlldFxyXG4gICAqL1xyXG4gIHJlZnJlc2goKSB7XHJcbiAgICBjb25zdCBlbGVtZW50cyA9XHJcbiAgICAgIHR5cGVvZiB0aGlzLm9wdGlvbnMuZWxlbWVudHMgPT09ICdzdHJpbmcnXHJcbiAgICAgICAgPyB0aGlzLm9wdGlvbnMuZG9jLnF1ZXJ5U2VsZWN0b3JBbGwodGhpcy5vcHRpb25zLmVsZW1lbnRzKVxyXG4gICAgICAgIDogdGhpcy5vcHRpb25zLmVsZW1lbnRzXHJcbiAgICBsZXQgaW5wdXQsIHBhcmVudENsYXNzXHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpbnB1dCA9IGVsZW1lbnRzW2ldXHJcbiAgICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpIHtcclxuICAgICAgICBwYXJlbnRDbGFzcyA9IGlucHV0LnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKCdjbGFzcycpXHJcblxyXG4gICAgICAgIGlmICghaW5wdXQuZ2V0QXR0cmlidXRlKCdpZCcpKSB7XHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgICAgIGBCQmpNYXNraW5nOiBJbnB1dCBoYXMgbm8gSUQuIFdpdGhvdXQgYW4gSUQgdGhlIGlucHV0IGNhbm5vdCBiZSBtYXNrZWRgLFxyXG4gICAgICAgICAgICBpbnB1dFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgY29udGludWVcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHdlIGRvbid0IGluaXRpYWxpemUgdGhlIGlucHV0J3Mgd3JhcCB0d2ljZVxyXG4gICAgICAgIGNvbnN0IGlzV3JhcHBlZCA9XHJcbiAgICAgICAgICBwYXJlbnRDbGFzcyAmJiBwYXJlbnRDbGFzcy5pbmRleE9mKCdudW1iZXJJbnB1dE1hc2tfX3dyYXAnKSA+IC0xXHJcbiAgICAgICAgdGhpcy5fd3JhcChpbnB1dCwgaXNXcmFwcGVkKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgIGBCQmpNYXNraW5nOiBJbnZhbGlkIGlucHV0IGVsZW1lbnQuIFRoZSBlbGVtZW50IHdpbGwgYmUgaWdub3JlZGAsXHJcbiAgICAgICAgICBpbnB1dFxyXG4gICAgICAgIClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVW53cmFwIHRoZSBpbnB1dCBlbGVtZW50cyBhbmQgcmVtb3ZlIGF0dGFjaGVkIGxpc3RlbmVyc1xyXG4gICAqL1xyXG4gIGRlc3Ryb3koKSB7XHJcbiAgICBjb25zdCBlbGVtZW50cyA9XHJcbiAgICAgIHR5cGVvZiB0aGlzLm9wdGlvbnMuZWxlbWVudHMgPT09ICdzdHJpbmcnXHJcbiAgICAgICAgPyB0aGlzLm9wdGlvbnMuZG9jLnF1ZXJ5U2VsZWN0b3JBbGwodGhpcy5vcHRpb25zLmVsZW1lbnRzKVxyXG4gICAgICAgIDogdGhpcy5vcHRpb25zLmVsZW1lbnRzXHJcblxyXG4gICAgbGV0IGlucHV0LCBwYXJlbnQsIHBhcmVudENsYXNzXHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpbnB1dCA9IGVsZW1lbnRzW2ldXHJcbiAgICAgIHBhcmVudCA9IGlucHV0LnBhcmVudE5vZGVcclxuICAgICAgcGFyZW50Q2xhc3MgPSBwYXJlbnQuZ2V0QXR0cmlidXRlKCdjbGFzcycpXHJcblxyXG4gICAgICBpZiAocGFyZW50Q2xhc3MgJiYgcGFyZW50Q2xhc3MuaW5kZXhPZignbnVtYmVySW5wdXRNYXNrX193cmFwJykgPiAtMSkge1xyXG4gICAgICAgIHRoaXMuX3Vud3JhcChwYXJlbnQpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSB0aGUgbnVtYmVyIG1hc2tpbmcgaW5wdXQgd3JhcHBlclxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtIVE1MSW5wdXRFbGVtZW50fSBhY3R1YWxJbnB1dCB0aGUgaW5wdXQgZWxlbWVudFxyXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gaXNXcmFwcGVkIHdoZW4gdHJ1ZSB0aGUgaW5wdXQgaXMgYWxyZWFkeSB3cmFwcGVkIGFuZCB3ZSBuZWVkIHRvIGFkZCB3aGF0IGlzXHJcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzc2luZyBvbmx5XHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB7SFRNTFNwYW5FbGVtZW50fSB3cmFwcGVyIGluc3RhbmNlXHJcbiAgICpcclxuICAgKiBAcHJvdGVjdGVkXHJcbiAgICovXHJcbiAgX3dyYXAoYWN0dWFsSW5wdXQsIGlzV3JhcHBlZCkge1xyXG4gICAgY29uc3QgYWN0dWFsSW5wdXRJZCA9IGFjdHVhbElucHV0LmdldEF0dHJpYnV0ZSgnaWQnKSxcclxuICAgICAgYWN0dWFsSW5wdXROYW1lID0gYWN0dWFsSW5wdXQuZ2V0QXR0cmlidXRlKCduYW1lJyksXHJcbiAgICAgIGFjdHVhbElucHV0U3RlcCA9IGFjdHVhbElucHV0LmRhdGFzZXQuc3RlcCB8fCBudWxsLFxyXG4gICAgICBhY3R1YWxJbnB1dE1heCA9IGFjdHVhbElucHV0LmRhdGFzZXQubWF4IHx8IG51bGwsXHJcbiAgICAgIGFjdHVhbElucHV0TWluID0gYWN0dWFsSW5wdXQuZGF0YXNldC5taW4gfHwgbnVsbCxcclxuICAgICAgYWN0dWFsSW5wdXRHcm91cGluZ1NlcGFyYXRvciA9XHJcbiAgICAgICAgYWN0dWFsSW5wdXQuZGF0YXNldC5ncm91cGluZ1NlcGFyYXRvciB8fCAnLCcsXHJcbiAgICAgIGFjdHVhbElucHV0RGVjaW1hbFNlcGFyYXRvciA9IGFjdHVhbElucHV0LmRhdGFzZXQuZGVjaW1hbFNlcGFyYXRvciB8fCAnLicsXHJcbiAgICAgIGFjdHVhbElucHV0Rm9yY2VUcmFpbGluZ1plcm9zID1cclxuICAgICAgICBhY3R1YWxJbnB1dC5kYXRhc2V0LmZvcmNlVHJhaWxpbmdaZXJvcyB8fCBudWxsLFxyXG4gICAgICBhY3R1YWxJbnB1dE1hc2sgPSBhY3R1YWxJbnB1dC5kYXRhc2V0Lm1hc2sgfHwgJycsXHJcbiAgICAgIGFjdHVhbElucHV0Q2xhc3NlcyA9IGFjdHVhbElucHV0LmdldEF0dHJpYnV0ZSgnY2xhc3MnKSxcclxuICAgICAgYWN0dWFsSW5wdXRSZXF1aXJlZCA9IGFjdHVhbElucHV0LmdldEF0dHJpYnV0ZSgncmVxdWlyZWQnKSB8fCBudWxsXHJcblxyXG4gICAgbGV0IHdyYXAgPSBudWxsLFxyXG4gICAgICB1bm1hc2tlZElucHV0ID0gbnVsbFxyXG5cclxuICAgIGlmICghaXNXcmFwcGVkKSB7XHJcbiAgICAgIHdyYXAgPSB0aGlzLm9wdGlvbnMuZG9jLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxyXG4gICAgICB1bm1hc2tlZElucHV0ID0gdGhpcy5vcHRpb25zLmRvYy5jcmVhdGVFbGVtZW50KCdpbnB1dCcpIC8vIGhpZGRlbiBpbnB1dCB3aXRoIHRoZSB1bm1hc2tlZCB2YWx1ZXMgZm9yIGZvcm1zXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB3cmFwID0gYWN0dWFsSW5wdXQucGFyZW50Tm9kZVxyXG4gICAgICB1bm1hc2tlZElucHV0ID0gd3JhcC5xdWVyeVNlbGVjdG9yKCcubnVtYmVySW5wdXRNYXNrX191bm1hc2tlZElucHV0JylcclxuICAgIH1cclxuXHJcbiAgICAvLyBjb25maWd1cmUgdGhlIGFjdHVhbCBpbnB1dFxyXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIGlmICghaXNXcmFwcGVkKSB7XHJcbiAgICAgIGFjdHVhbElucHV0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHdyYXAsIGFjdHVhbElucHV0KSAvLyBtb3ZlIHRoZSBpbnB1dCBvdXRzaWRlIHRoZSB3cmFwcGVyXHJcbiAgICAgIGlmIChcclxuICAgICAgICAhKFxyXG4gICAgICAgICAgYWN0dWFsSW5wdXQuaGFzQXR0cmlidXRlKCdyZWFkb25seScpIHx8XHJcbiAgICAgICAgICBhY3R1YWxJbnB1dC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJylcclxuICAgICAgICApXHJcbiAgICAgICkge1xyXG4gICAgICAgIGFjdHVhbElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5fYWN0dWFsSW5wdXRIYW5kbGVyKVxyXG4gICAgICAgIGFjdHVhbElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzaW4nLCB0aGlzLl9hY3R1YWxJbnB1dEhhbmRsZXIpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhY3R1YWxJbnB1dC5kYXRhc2V0LnZhbHVlVW5tYXNrZWQgPSBhY3R1YWxJbnB1dC52YWx1ZSB8fCAwXHJcbiAgICBhY3R1YWxJbnB1dC5kYXRhc2V0Lmdyb3VwaW5nU2VwYXJhdG9yID0gYWN0dWFsSW5wdXRHcm91cGluZ1NlcGFyYXRvclxyXG4gICAgYWN0dWFsSW5wdXQuZGF0YXNldC5kZWNpbWFsU2VwYXJhdG9yID0gYWN0dWFsSW5wdXREZWNpbWFsU2VwYXJhdG9yXHJcbiAgICBhY3R1YWxJbnB1dC5kYXRhc2V0LmZvcmNlVHJhaWxpbmdaZXJvcyA9IGFjdHVhbElucHV0Rm9yY2VUcmFpbGluZ1plcm9zXHJcbiAgICBhY3R1YWxJbnB1dC52YWx1ZSA9IE51bWJlck1hc2subWFzayhcclxuICAgICAgYWN0dWFsSW5wdXQuZGF0YXNldC52YWx1ZVVubWFza2VkLFxyXG4gICAgICBhY3R1YWxJbnB1dE1hc2ssXHJcbiAgICAgIGFjdHVhbElucHV0R3JvdXBpbmdTZXBhcmF0b3IsXHJcbiAgICAgIGFjdHVhbElucHV0RGVjaW1hbFNlcGFyYXRvcixcclxuICAgICAgYWN0dWFsSW5wdXRGb3JjZVRyYWlsaW5nWmVyb3NcclxuICAgICkudHJpbSgpXHJcbiAgICBhY3R1YWxJbnB1dC5jbGFzc0xpc3QuYWRkKFxyXG4gICAgICAnbnVtYmVySW5wdXRNYXNrX190ZXh0SW5wdXQnLFxyXG4gICAgICB0aGlzLm9wdGlvbnMuY3NzQ2xhc3NTdWNjZXNzXHJcbiAgICApXHJcblxyXG4gICAgLy8gY29uZmlndXJlIHRoZSB1bm1hc2tlZCBpbnB1dFxyXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgdW5tYXNrZWRJbnB1dC52YWx1ZSA9IGFjdHVhbElucHV0LmRhdGFzZXQudmFsdWVVbm1hc2tlZFxyXG4gICAgdW5tYXNrZWRJbnB1dC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKVxyXG4gICAgdW5tYXNrZWRJbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnaGlkZGVuJylcclxuICAgIHVubWFza2VkSW5wdXQuc2V0QXR0cmlidXRlKCdjbGFzcycsIGFjdHVhbElucHV0Q2xhc3NlcylcclxuICAgIGlmIChhY3R1YWxJbnB1dElkKVxyXG4gICAgICB1bm1hc2tlZElucHV0LnNldEF0dHJpYnV0ZSgnaWQnLCBgJHthY3R1YWxJbnB1dElkfS11bm1hc2tlZGApXHJcbiAgICBpZiAoYWN0dWFsSW5wdXROYW1lKVxyXG4gICAgICB1bm1hc2tlZElucHV0LnNldEF0dHJpYnV0ZSgnbmFtZScsIGAke2FjdHVhbElucHV0TmFtZX0tdW5tYXNrZWRgKVxyXG4gICAgaWYgKGFjdHVhbElucHV0UmVxdWlyZWQpIHVubWFza2VkSW5wdXQuc2V0QXR0cmlidXRlKCdyZXF1aXJlZCcsICdyZXF1aXJlZCcpXHJcblxyXG4gICAgaWYgKGFjdHVhbElucHV0U3RlcCkgdW5tYXNrZWRJbnB1dC5zZXRBdHRyaWJ1dGUoJ3N0ZXAnLCBhY3R1YWxJbnB1dFN0ZXApXHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uc3QgZGVjaW1hbHMgPSBjb3VudERlY2ltYWxzKHVubWFza2VkSW5wdXQudmFsdWUpXHJcbiAgICAgIGxldCBzdGVwID0gJzEnXHJcbiAgICAgIGlmIChkZWNpbWFscyA+IDApIHtcclxuICAgICAgICBzdGVwID0gYC4ke0FycmF5KGRlY2ltYWxzKS5qb2luKCcwJyl9MWBcclxuICAgICAgfVxyXG5cclxuICAgICAgdW5tYXNrZWRJbnB1dC5zZXRBdHRyaWJ1dGUoJ3N0ZXAnLCBzdGVwKVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChhY3R1YWxJbnB1dE1pbikgdW5tYXNrZWRJbnB1dC5zZXRBdHRyaWJ1dGUoJ21pbicsIGFjdHVhbElucHV0TWluKVxyXG4gICAgaWYgKGFjdHVhbElucHV0TWF4KSB1bm1hc2tlZElucHV0LnNldEF0dHJpYnV0ZSgnbWF4JywgYWN0dWFsSW5wdXRNYXgpXHJcbiAgICB1bm1hc2tlZElucHV0LmRhdGFzZXQuaW5wdXRJZCA9IGFjdHVhbElucHV0SWRcclxuICAgIHVubWFza2VkSW5wdXQuZGF0YXNldC5tYXNrID0gYWN0dWFsSW5wdXRNYXNrXHJcbiAgICB1bm1hc2tlZElucHV0LmRhdGFzZXQuZ3JvdXBpbmdTZXBhcmF0b3IgPSBhY3R1YWxJbnB1dEdyb3VwaW5nU2VwYXJhdG9yXHJcbiAgICB1bm1hc2tlZElucHV0LmRhdGFzZXQuZGVjaW1hbFNlcGFyYXRvciA9IGFjdHVhbElucHV0RGVjaW1hbFNlcGFyYXRvclxyXG4gICAgaWYgKGFjdHVhbElucHV0Rm9yY2VUcmFpbGluZ1plcm9zKVxyXG4gICAgICB1bm1hc2tlZElucHV0LmRhdGFzZXQuZm9yY2VUcmFpbGluZ1plcm9zID0gYWN0dWFsSW5wdXRGb3JjZVRyYWlsaW5nWmVyb3NcclxuXHJcbiAgICBpZiAoIWlzV3JhcHBlZCkge1xyXG4gICAgICB1bm1hc2tlZElucHV0LmNsYXNzTGlzdC5hZGQoJ251bWJlcklucHV0TWFza19fdW5tYXNrZWRJbnB1dCcpXHJcbiAgICAgIHVubWFza2VkSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuX3VubWFza2VkSW5wdXRIYW5kbGVyKVxyXG4gICAgICB1bm1hc2tlZElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy5fdW5tYXNrZWRJbnB1dEhhbmRsZXIpXHJcbiAgICAgIHVubWFza2VkSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNvdXQnLCB0aGlzLl91bm1hc2tlZElucHV0SGFuZGxlcilcclxuXHJcbiAgICAgIC8vIGNvbmZpZ3VyZSB0aGUgd3JhcHBlclxyXG4gICAgICB3cmFwLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAnbnVtYmVySW5wdXRNYXNrX193cmFwJylcclxuICAgICAgd3JhcC5hcHBlbmRDaGlsZCh1bm1hc2tlZElucHV0KVxyXG4gICAgICB3cmFwLmFwcGVuZENoaWxkKGFjdHVhbElucHV0KVxyXG4gICAgfVxyXG5cclxuICAgIGlmICghaXNOYU4oTnVtYmVyKGFjdHVhbElucHV0LmRhdGFzZXQudmFsdWVVbm1hc2tlZCkpKSB7XHJcbiAgICAgIGlmICh0aGlzLl92YWxpZGF0ZUlucHV0KHVubWFza2VkSW5wdXQsIGFjdHVhbElucHV0KSkge1xyXG4gICAgICAgIHRoaXMuX19maXJlT25VcGRhdGUoXHJcbiAgICAgICAgICBhY3R1YWxJbnB1dC52YWx1ZSxcclxuICAgICAgICAgIGFjdHVhbElucHV0LmRhdGFzZXQudmFsdWVVbm1hc2tlZCxcclxuICAgICAgICAgIGFjdHVhbElucHV0XHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhY3R1YWxJbnB1dC5jbGFzc0xpc3QuYWRkKHRoaXMub3B0aW9ucy5jc3NDbGFzc0Vycm9yKVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB3cmFwXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVbndyYXAgdGhlIG1hc2tlZCBpbnB1dCBhbmQgcmVtb3ZlIHRoZSB2YWx1ZSBjaGFuZ2VkIGxpc3RlbmVyXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0hUTUxTcGFuRWxlbWVudH0gdGV4dElucHV0IHRoZSB3cmFwcGVyIHNwYW4gaW5zdGFuY2VcclxuICAgKlxyXG4gICAqIEBwcm90ZWN0ZWRcclxuICAgKi9cclxuICBfdW53cmFwKHRleHRJbnB1dCkge1xyXG4gICAgdGV4dElucHV0LnJlbW92ZUNoaWxkKFxyXG4gICAgICB0ZXh0SW5wdXQucXVlcnlTZWxlY3RvcignLm51bWJlcklucHV0TWFza19fdW5tYXNrZWRJbnB1dCcpXHJcbiAgICApXHJcblxyXG4gICAgY29uc3QgaW5wdXQgPSB0ZXh0SW5wdXQucXVlcnlTZWxlY3RvcignLm51bWJlcklucHV0TWFza19fdGV4dElucHV0JylcclxuICAgIGlucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5fYWN0dWFsSW5wdXRIYW5kbGVyKVxyXG4gICAgaW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIHRoaXMuX2FjdHVhbElucHV0SGFuZGxlcilcclxuICAgIGlucHV0LmNsYXNzTGlzdC5yZW1vdmUoJ251bWJlcklucHV0TWFza19fdGV4dElucHV0JylcclxuICAgIGlucHV0LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5vcHRpb25zLmNzc0NsYXNzRXJyb3IpXHJcbiAgICBpbnB1dC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMub3B0aW9ucy5jc3NDbGFzc1N1Y2Nlc3MpXHJcbiAgICBkZWxldGUgaW5wdXQuZGF0YXNldC52YWx1ZVVubWFza2VkXHJcblxyXG4gICAgdGV4dElucHV0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGlucHV0LCB0ZXh0SW5wdXQpXHJcbiAgICB0ZXh0SW5wdXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0ZXh0SW5wdXQpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMaXN0ZW4gdG8gY2xpY2sgYW5kIGZvY3VzaW4gZXZlbnQgb24gdGhlIGFjdHVhbCBpbnB1dCBhbmQgdG9nZ2xlIHRoZSBudW1iZXIgaW5wdXRcclxuICAgKlxyXG4gICAqIEBwYXJhbSB7RXZlbnR9IGVcclxuICAgKlxyXG4gICAqIEBwcm90ZWN0ZWRcclxuICAgKi9cclxuICBfYWN0dWFsSW5wdXRIYW5kbGVyKGUpIHtcclxuICAgIGNvbnN0IGFjdHVhbElucHV0ID0gZS50YXJnZXQsXHJcbiAgICAgIGFjdHVhbElucHV0SWQgPSBhY3R1YWxJbnB1dC5pZCxcclxuICAgICAgdW5tYXNrZWRJbnB1dCA9IHRoaXMub3B0aW9ucy5kb2MucXVlcnlTZWxlY3RvcihcclxuICAgICAgICBgIyR7YWN0dWFsSW5wdXRJZH0tdW5tYXNrZWRgXHJcbiAgICAgIClcclxuXHJcbiAgICBhY3R1YWxJbnB1dC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKVxyXG4gICAgYWN0dWFsSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2hpZGRlbicpXHJcblxyXG4gICAgdW5tYXNrZWRJbnB1dC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJylcclxuICAgIHVubWFza2VkSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ251bWJlcicpXHJcbiAgICB0aGlzLl92YWxpZGF0ZUlucHV0KHVubWFza2VkSW5wdXQsIGFjdHVhbElucHV0KVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHVubWFza2VkSW5wdXQuZm9jdXMoKVxyXG4gICAgICBjb25zdCBsZW5ndGggPSBTdHJpbmcodW5tYXNrZWRJbnB1dC52YWx1ZSkubGVuZ3RoXHJcbiAgICAgIHVubWFza2VkSW5wdXQudHlwZSA9ICd0ZXh0J1xyXG4gICAgICB1bm1hc2tlZElucHV0LnNldFNlbGVjdGlvblJhbmdlKGxlbmd0aCwgbGVuZ3RoKVxyXG4gICAgICB1bm1hc2tlZElucHV0LnR5cGUgPSAnbnVtYmVyJ1xyXG4gICAgfSwgMClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3RlbiB0byB0aGUgdW5tYXNrZWQgaW5wdXQga2V5ZG93biBhbmQgZm9jdXNvdXQgZXZlbnRzIGFuZCBjaGVja1xyXG4gICAqIGlmIHRoZSBpbnB1dCB2YWx1ZSBjYW4gYmUgbWFza2VkIG9yIG5vdFxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtFdmVudH0gZVxyXG4gICAqXHJcbiAgICogQHByb3RlY3RlZFxyXG4gICAqL1xyXG4gIF91bm1hc2tlZElucHV0SGFuZGxlcihlKSB7XHJcbiAgICBjb25zdCB1bm1hc2tlZElucHV0ID0gZS50YXJnZXQsXHJcbiAgICAgIGtleUNvZGUgPSBlLmtleUNvZGUsXHJcbiAgICAgIG1hc2sgPSB1bm1hc2tlZElucHV0LmRhdGFzZXQubWFzayxcclxuICAgICAgZ3JvdXBpbmdTZXBhcmF0b3IgPSB1bm1hc2tlZElucHV0LmRhdGFzZXQuZ3JvdXBpbmdTZXBhcmF0b3IsXHJcbiAgICAgIGRlY2ltYWxTZXBhcmF0b3IgPSB1bm1hc2tlZElucHV0LmRhdGFzZXQuZGVjaW1hbFNlcGFyYXRvcixcclxuICAgICAgZm9yY2VUcmFpbGluZ1plcm9zID0gdW5tYXNrZWRJbnB1dC5kYXRhc2V0LmZvcmNlVHJhaWxpbmdaZXJvcyxcclxuICAgICAgYWN0dWFsSW5wdXRJZCA9IHVubWFza2VkSW5wdXQuZGF0YXNldC5pbnB1dElkLFxyXG4gICAgICBhY3R1YWxJbnB1dCA9IHRoaXMub3B0aW9ucy5kb2MucXVlcnlTZWxlY3RvcihgIyR7YWN0dWFsSW5wdXRJZH1gKVxyXG5cclxuICAgIGxldCByZXN0b3JlID0gZmFsc2UsXHJcbiAgICAgIGFwcGx5ID0gZmFsc2UsXHJcbiAgICAgIG1hc2tlZFZhbHVlID0gZmFsc2UsXHJcbiAgICAgIGlzVmFsaWQgPSB0aGlzLl92YWxpZGF0ZUlucHV0KHVubWFza2VkSW5wdXQsIGFjdHVhbElucHV0KVxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIG1hc2tlZFZhbHVlID0gTnVtYmVyTWFzay5tYXNrKFxyXG4gICAgICAgIHVubWFza2VkSW5wdXQudmFsdWUgfHwgMCxcclxuICAgICAgICBtYXNrLFxyXG4gICAgICAgIGdyb3VwaW5nU2VwYXJhdG9yLFxyXG4gICAgICAgIGRlY2ltYWxTZXBhcmF0b3IsXHJcbiAgICAgICAgZm9yY2VUcmFpbGluZ1plcm9zLFxyXG4gICAgICAgIGZhbHNlXHJcbiAgICAgICkudHJpbSgpXHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIG1hc2tlZFZhbHVlID0gZmFsc2VcclxuICAgICAgdGhpcy5fX2FwcGx5Q3NzQ2xhc3NTdGF0ZSh1bm1hc2tlZElucHV0LCBhY3R1YWxJbnB1dCwgJ2Vycm9yJylcclxuICAgICAgdGhpcy5fX2ZpcmVPbkludmFsaWQoZSwgYWN0dWFsSW5wdXQpXHJcbiAgICB9XHJcblxyXG4gICAgcmVzdG9yZSA9IFsxMywgMjddLmluZGV4T2Yoa2V5Q29kZSkgPiAtMSB8fCBlLnR5cGUgPT09ICdmb2N1c291dCdcclxuICAgIGFwcGx5ID0gbWFza2VkVmFsdWUgJiYgaXNWYWxpZFxyXG5cclxuICAgIGlmIChyZXN0b3JlKSB7XHJcbiAgICAgIHVubWFza2VkSW5wdXQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLm9wdGlvbnMuY3NzQ2xhc3NFcnJvcilcclxuICAgICAgdW5tYXNrZWRJbnB1dC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMub3B0aW9ucy5jc3NDbGFzc1N1Y2Nlc3MpXHJcblxyXG4gICAgICB1bm1hc2tlZElucHV0LnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpXHJcbiAgICAgIHVubWFza2VkSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2hpZGRlbicpXHJcblxyXG4gICAgICBhY3R1YWxJbnB1dC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJylcclxuICAgICAgYWN0dWFsSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ3RleHQnKVxyXG5cclxuICAgICAgYWN0dWFsSW5wdXQuY2xhc3NMaXN0LmFkZCh0aGlzLm9wdGlvbnMuY3NzQ2xhc3NTdWNjZXNzKVxyXG5cclxuICAgICAgaWYgKGFwcGx5KSB7XHJcbiAgICAgICAgYWN0dWFsSW5wdXQudmFsdWUgPSBtYXNrZWRWYWx1ZVxyXG4gICAgICAgIGFjdHVhbElucHV0LmRhdGFzZXQudmFsdWVVbm1hc2tlZCA9IHVubWFza2VkSW5wdXQudmFsdWVcclxuICAgICAgICB0aGlzLl9fZmlyZU9uVXBkYXRlKG1hc2tlZFZhbHVlLCB1bm1hc2tlZElucHV0LnZhbHVlLCBhY3R1YWxJbnB1dClcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB1bm1hc2tlZElucHV0LnZhbHVlID0gYWN0dWFsSW5wdXQuZGF0YXNldC52YWx1ZVVubWFza2VkXHJcbiAgICAgICAgdGhpcy5fX2FwcGx5Q3NzQ2xhc3NTdGF0ZSh1bm1hc2tlZElucHV0LCBhY3R1YWxJbnB1dCwgJ3N1Y2Nlc3MnKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmlnZ2VyIGBjaGVja1ZhbGlkaXR5YCBvbiB0aGUgaW5wdXRcclxuICAgKlxyXG4gICAqIEBwYXJhbSB7SFRNTElucHV0RWxlbWVudH0gdW5tYXNrZWRJbnB1dFxyXG4gICAqIEBwYXJhbSB7SFRNTElucHV0RWxlbWVudH0gYWN0dWFsSW5wdXRcclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHtCb29sZWFufSB0cnVlIHdoZW4gdmFsaWQgLCBmYWxzZSBvdGhlcndpc2VcclxuICAgKlxyXG4gICAqIEBwcm90ZWN0ZWRcclxuICAgKi9cclxuICBfdmFsaWRhdGVJbnB1dCh1bm1hc2tlZElucHV0LCBhY3R1YWxJbnB1dCkge1xyXG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlXHJcbiAgICBjb25zdCB2YWx1ZSA9IE51bWJlcih1bm1hc2tlZElucHV0LnZhbHVlKVxyXG4gICAgaWYgKHVubWFza2VkSW5wdXQuZ2V0QXR0cmlidXRlKCd0eXBlJykgPT09ICdoaWRkZW4nICYmICFpc05hTih2YWx1ZSkpIHtcclxuICAgICAgY29uc3QgbWF4ID0gdW5tYXNrZWRJbnB1dC5nZXRBdHRyaWJ1dGUoJ21heCcpXHJcbiAgICAgIGNvbnN0IG1pbiA9IHVubWFza2VkSW5wdXQuZ2V0QXR0cmlidXRlKCdtaW4nKVxyXG4gICAgICBjb25zdCBzdGVwID0gdW5tYXNrZWRJbnB1dC5nZXRBdHRyaWJ1dGUoJ3N0ZXAnKVxyXG5cclxuICAgICAgaWYgKG1pbikgaXNWYWxpZCA9IGlzVmFsaWQgJiYgdmFsdWUgPj0gTnVtYmVyKG1pbilcclxuICAgICAgaWYgKG1heCkgaXNWYWxpZCA9IGlzVmFsaWQgJiYgdmFsdWUgPD0gTnVtYmVyKG1heClcclxuXHJcbiAgICAgIGlmIChzdGVwKVxyXG4gICAgICAgIGlzVmFsaWQgPVxyXG4gICAgICAgICAgaXNWYWxpZCAmJiBjb3VudERlY2ltYWxzKHN0ZXApID09PSBjb3VudERlY2ltYWxzKHVubWFza2VkSW5wdXQudmFsdWUpXHJcbiAgICB9IGVsc2UgaXNWYWxpZCA9IHVubWFza2VkSW5wdXQuY2hlY2tWYWxpZGl0eSgpXHJcblxyXG4gICAgaWYgKGlzVmFsaWQpIHtcclxuICAgICAgdGhpcy5fX2FwcGx5Q3NzQ2xhc3NTdGF0ZSh1bm1hc2tlZElucHV0LCBhY3R1YWxJbnB1dCwgJ3N1Y2Nlc3MnKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fX2FwcGx5Q3NzQ2xhc3NTdGF0ZSh1bm1hc2tlZElucHV0LCBhY3R1YWxJbnB1dCwgJ2Vycm9yJylcclxuICAgICAgdGhpcy5fX2ZpcmVPbkludmFsaWQoXHJcbiAgICAgICAgdW5tYXNrZWRJbnB1dC52YWxpZGF0aW9uTWVzc2FnZSB8fCAnVmFsaWRpdHkgY2hlY2sgZmFpbHMnLFxyXG4gICAgICAgIGFjdHVhbElucHV0XHJcbiAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaXNWYWxpZFxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHBhcmFtIHtTdHJpbmd9IHZhbHVlTWFza2VkICBtYXNrZWQgdmFsdWVcclxuICAgKiBAcGFyYW0ge051bWJlcn0gdmFsdWVVbm1hc2tlZCAgb3JpZ2luYWwgdmFsdWVcclxuICAgKiBAcGFyYW0ge0hUTUxJbnB1dEVsZW1lbnR9IGlucHV0IHRoZSBhY3R1YWwgaW5wdXQgaW5zdGFuY2VcclxuICAgKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgX19maXJlT25VcGRhdGUodmFsdWVNYXNrZWQsIHZhbHVlVW5tYXNrZWQsIGlucHV0KSB7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9uVXBkYXRlKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5vblVwZGF0ZSh2YWx1ZU1hc2tlZCwgdmFsdWVVbm1hc2tlZCwgaW5wdXQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IGVycm9yIGxhc3Qgb2NjdXJyZWQgZXJyb3IuIGNvdWxkIGJlIG1hc2sgZXJyb3Igb3IgdmFsaWRhdGlvbiBlcnJvclxyXG4gICAqIEBwYXJhbSB7SFRNTElucHV0RWxlbWVudH0gaW5wdXQgdGhlIGFjdHVhbCBpbnB1dCBpbnN0YW5jZVxyXG4gICAqXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBfX2ZpcmVPbkludmFsaWQoZXJyb3IsIGlucHV0KSB7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9uSW52YWxpZCkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMub25JbnZhbGlkKGVycm9yLCBpbnB1dClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgX19hcHBseUNzc0NsYXNzU3RhdGUodW5tYXNrZWRJbnB1dCwgYWN0dWFsSW5wdXQsIHN0YXRlKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGFjdHVhbElucHV0Lmhhc0F0dHJpYnV0ZSgncmVhZG9ubHknKSB8fFxyXG4gICAgICBhY3R1YWxJbnB1dC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJylcclxuICAgICkge1xyXG4gICAgICBhY3R1YWxJbnB1dC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMub3B0aW9ucy5jc3NDbGFzc0Vycm9yKVxyXG4gICAgICBhY3R1YWxJbnB1dC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMub3B0aW9ucy5jc3NDbGFzc1N1Y2Nlc3MpXHJcblxyXG4gICAgICB1bm1hc2tlZElucHV0LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5vcHRpb25zLmNzc0NsYXNzRXJyb3IpXHJcbiAgICAgIHVubWFza2VkSW5wdXQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLm9wdGlvbnMuY3NzQ2xhc3NTdWNjZXNzKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHN0YXRlID09PSAnc3VjY2VzcycpIHtcclxuICAgICAgICBhY3R1YWxJbnB1dC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMub3B0aW9ucy5jc3NDbGFzc0Vycm9yKVxyXG4gICAgICAgIGFjdHVhbElucHV0LmNsYXNzTGlzdC5hZGQodGhpcy5vcHRpb25zLmNzc0NsYXNzU3VjY2VzcylcclxuXHJcbiAgICAgICAgdW5tYXNrZWRJbnB1dC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMub3B0aW9ucy5jc3NDbGFzc0Vycm9yKVxyXG4gICAgICAgIHVubWFza2VkSW5wdXQuY2xhc3NMaXN0LmFkZCh0aGlzLm9wdGlvbnMuY3NzQ2xhc3NTdWNjZXNzKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoc3RhdGUgPT09ICdlcnJvcicpIHtcclxuICAgICAgICBhY3R1YWxJbnB1dC5jbGFzc0xpc3QuYWRkKHRoaXMub3B0aW9ucy5jc3NDbGFzc0Vycm9yKVxyXG4gICAgICAgIGFjdHVhbElucHV0LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5vcHRpb25zLmNzc0NsYXNzU3VjY2VzcylcclxuXHJcbiAgICAgICAgdW5tYXNrZWRJbnB1dC5jbGFzc0xpc3QuYWRkKHRoaXMub3B0aW9ucy5jc3NDbGFzc0Vycm9yKVxyXG4gICAgICAgIHVubWFza2VkSW5wdXQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLm9wdGlvbnMuY3NzQ2xhc3NTdWNjZXNzKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBOdW1iZXJJbnB1dFxyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvTnVtYmVySW5wdXQvTnVtYmVySW5wdXQuanMiLCJtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfN19fO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIHtcImNvbW1vbmpzXCI6XCJiYmotbWFza3Mvc3JjL051bWJlck1hc2tcIixcImNvbW1vbmpzMlwiOlwiYmJqLW1hc2tzL3NyYy9OdW1iZXJNYXNrXCIsXCJhbWRcIjpcImJiai1tYXNrcy9zcmMvTnVtYmVyTWFza1wiLFwicm9vdFwiOltcIkJCalwiLFwiTWFza3NcIixcIk51bWJlck1hc2tcIl19XG4vLyBtb2R1bGUgaWQgPSA3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIiwiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbiBcdFx0XHRcdGdldDogZ2V0dGVyXG4gXHRcdFx0fSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gNSk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgZWZlZjg3YTAxYzNlZDIyY2EzNTgiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmJqLW1hc2tzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IE51bWJlck1hc2sgZnJvbSAnLi9OdW1iZXJNYXNrJ1xuXG5leHBvcnQgZGVmYXVsdCBOdW1iZXJNYXNrXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvTnVtYmVyTWFzay9pbmRleC5qcyIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBiYmotbWFza3MgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgRGF0ZU1hc2ssIHtcbiAgZ2V0RGF5T2ZZZWFyLFxuICBnZXRXZWVrTnVtYmVyLFxuICBnZXRXZWVrU3RhcnRCeUxvY2FsZSxcbiAgSVNfVElNRV9SRUdFWCxcbiAgSVNfREFURV9SRUdFWCxcbiAgZml4U2hvcnRJU08sXG4gIGdldFRpbWV6b25lT3JPZmZzZXRcbn0gZnJvbSAnLi9EYXRlTWFzaydcblxuZXhwb3J0IHtcbiAgZ2V0RGF5T2ZZZWFyLFxuICBnZXRXZWVrTnVtYmVyLFxuICBnZXRXZWVrU3RhcnRCeUxvY2FsZSxcbiAgSVNfREFURV9SRUdFWCxcbiAgSVNfVElNRV9SRUdFWCxcbiAgZml4U2hvcnRJU08sXG4gIGdldFRpbWV6b25lT3JPZmZzZXRcbn1cbmV4cG9ydCBkZWZhdWx0IERhdGVNYXNrXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvRGF0ZU1hc2svaW5kZXguanMiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmJqLW1hc2tzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IFN0cmluZ01hc2sgZnJvbSAnLi9TdHJpbmdNYXNrJ1xuXG5leHBvcnQgZGVmYXVsdCBTdHJpbmdNYXNrXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvU3RyaW5nTWFzay9pbmRleC5qcyIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBiYmotbWFza3MgbGliLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG4vKipcbiAqIE51bWJlck1hc2tcbiAqXG4gKiBBIGphdmFzY3JpcHQgaW1wbGVtZW50YXRpb24gZm9yIEJCaiBudW1iZXJzIG1hc2tpbmdcbiAqXG4gKiBAYXV0aG9yIEh5eWFuIEFibyBGYWtoZXIgPGhhYm9mYWtoZXJAYmFzaXMuY29tPlxuICovXG5jbGFzcyBOdW1iZXJNYXNrIHtcbiAgLyoqXG4gICAqIE1hc2sgdGhlIGdpdmVuIG51bWJlciB3aXRoIHRoZSBnaXZlbiBtYXNrIGFjY29yZGluZyB0byBCQmogcnVsZXNcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IG51bWJlciB0aGUgbnVtYmVyIHRvIGZvcm1hdFxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWFzayB0aGUgbWFzayB0byB1c2UgZm9yIGZvcm1hdHRpbmdcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtncm91cGluZ1NlcGFyYXRvcj0sXSAtIGEgY2hhciB3aGljaCB3aWxsIGJlIHVzZWQgYXMgYSBncm91cGluZyBzZXBhcmF0b3JcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtkZWNpbWFsU2VwYXJhdG9yPS5dICAtIGEgY2hhciB3aGljaCB3aWxsIGJlIHVzZWQgYXMgYSBkZWNpbWFsIHNlcGFyYXRvclxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IFtmb3JjZVRyYWlsaW5nWmVyb3M9ZmFsc2VdIC0gQWZmZWN0cyB0aGUgb3V0cHV0IGJ5IHN3aXRjaGluZyB0aGUgd2F5IGEgbWFzayB3aXRoIFwiI1wiIGNoYXJhY3RlcnMgaW4gdGhlIHRyYWlsaW5nIHBvc2l0aW9ucyBpcyBmaWxsZWQuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBleGFtcGxlLCB0aGUgZnVuY3Rpb24gYE51bWJlck1hc2subWFzayguMTA6XCIjLiMjXCIpYCByZXR1cm5zIGAgLjEwYCBpbnN0ZWFkIG9mIGAgLjEgYFxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IFtsb29zZT10cnVlXSB3aGVuIHRydWUgLCBlcnJvcnMgd2lsbCBiZSBpZ25vcmVkIGFuZCB0aGUgbWV0aG9kIHdpbGwgdHJ5IGF0IGFwcGx5IHRoZSBtYXNrXG4gICAqICAgICAgICAgICAgICAgIGFueXdheSAsIG90aGVyd2lzZSBpdCB3aWxsIHN0b3AgYXQgZmlyc3QgZXJyb3IgYW5kIHRocm93IGl0LlxuICAgKiBcbiAgICogQHRocm93cyB7TWFza0Vycm9yfSBvbmx5IGlmIGxvb3NlIGlzIGRpc2FibGVkXG4gICAqIFxuICAgKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgbWFza2VkIG51bWJlclxuICAgKi9cbiAgc3RhdGljIG1hc2soXG4gICAgbnVtYmVyLFxuICAgIG1hc2ssXG4gICAgZ3JvdXBpbmdTZXBhcmF0b3IgPSAnLCcsXG4gICAgZGVjaW1hbFNlcGFyYXRvciA9ICcuJyxcbiAgICBmb3JjZVRyYWlsaW5nWmVyb3MgPSBmYWxzZSxcbiAgICBsb29zZSA9IHRydWVcbiAgKSB7XG4gICAgY29uc3QgbWFza0xlbiA9IG1hc2subGVuZ3RoXG4gICAgaWYgKDAgPT09IG1hc2tMZW4pIHtcbiAgICAgIGlmIChsb29zZSkgcmV0dXJuIHN0clxuICAgICAgLy8gZnJpZW5kbHkgc2lsZW50IGZhaWxcbiAgICAgIGVsc2VcbiAgICAgICAgdGhyb3cge1xuICAgICAgICAgIG5hbWU6ICdNYXNrRXJyb3InLFxuICAgICAgICAgIG1lc3NhZ2U6IGBNYXNrRXJyb3I6IE1hc2sgaXMgZW1wdHlgXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHZXQgbWFnbml0dWRlIGFuZCBwcmVjaXNpb24gb2YgTUFTS1xuICAgIGxldCBtYXNrQmVmb3JlRGVjaW1hbCA9IDBcbiAgICBsZXQgbWFza0FmdGVyRGVjaW1hbCA9IDBcbiAgICBsZXQgZm91bmREZWNpbWFsID0gZmFsc2VcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hc2tMZW47ICsraSkge1xuICAgICAgY29uc3QgbSA9IG1hc2suY2hhckF0KGkpXG4gICAgICBpZiAobSA9PSAnMCcgfHwgbSA9PSAnIycpIHtcbiAgICAgICAgaWYgKGZvdW5kRGVjaW1hbCkgKyttYXNrQWZ0ZXJEZWNpbWFsXG4gICAgICAgIGVsc2UgKyttYXNrQmVmb3JlRGVjaW1hbFxuICAgICAgfSBlbHNlIGlmIChtID09ICcuJykgZm91bmREZWNpbWFsID0gdHJ1ZVxuICAgIH1cblxuICAgIGxldCBudW0gPSBOdW1iZXJNYXNrLl9yb3VuZChudW1iZXIsIG1hc2tBZnRlckRlY2ltYWwpXG4gICAgbGV0IGJ5dGVzID0gTnVtYmVyTWFzay5fdG9DaGFyQXJyYXkobnVtKVxuXG4gICAgLy8gR2V0IG1hZ25pdHVkZSBhbmQgcHJlY2lzaW9uIG9mIE5VTUJFUlxuICAgIGxldCBpbkxlbiA9IGJ5dGVzLmxlbmd0aFxuICAgIGxldCBudW1CZWZvcmVEZWNpbWFsID0gMFxuICAgIGxldCBudW1BZnRlckRlY2ltYWwgPSAwXG4gICAgZm91bmREZWNpbWFsID0gZmFsc2VcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluTGVuOyArK2kpIHtcbiAgICAgIGlmIChieXRlc1tpXSA9PSAnLicpIGZvdW5kRGVjaW1hbCA9IHRydWVcbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAoZm91bmREZWNpbWFsKSArK251bUFmdGVyRGVjaW1hbFxuICAgICAgICBlbHNlICsrbnVtQmVmb3JlRGVjaW1hbFxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGFsd2F5cyBpZ25vcmUgbWFzayBvdmVyZmxvd1xuICAgIGlmIChudW1CZWZvcmVEZWNpbWFsID4gbWFza0JlZm9yZURlY2ltYWwpIHtcbiAgICAgIGlmIChsb29zZSkgcmV0dXJuIG51bWJlci50b1N0cmluZygpXG4gICAgICAvLyBmcmllbmRseSBzaWxlbnQgZmFpbFxuICAgICAgZWxzZVxuICAgICAgICB0aHJvdyB7XG4gICAgICAgICAgbmFtZTogJ01hc2tFcnJvcicsXG4gICAgICAgICAgbWVzc2FnZTogYE1hc2tFcnJvcjogTnVtYmVyIGlzIHRvbyBsYXJnZSBmb3IgbWFza2BcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHJvdW5kIGlmIG1hc2sgaXMgZm9yIGEgbG93ZXIgcHJlY2lzaW9uIG51bWJlclxuICAgIGlmIChudW1BZnRlckRlY2ltYWwgPiBtYXNrQWZ0ZXJEZWNpbWFsKSB7XG4gICAgICBudW0gPSBOdW1iZXJNYXNrLl9yb3VuZChudW0sIG1hc2tBZnRlckRlY2ltYWwpXG4gICAgICBieXRlcyA9IE51bWJlck1hc2suX3RvQ2hhckFycmF5KG51bSlcbiAgICAgIGluTGVuID0gYnl0ZXMubGVuZ3RoXG5cbiAgICAgIC8vIEdldCBuZXcgbWFnbml0dWRlIGFuZCBwcmVjaXNpb24gb2YgTlVNQkVSXG4gICAgICBudW1CZWZvcmVEZWNpbWFsID0gMFxuICAgICAgbnVtQWZ0ZXJEZWNpbWFsID0gMFxuICAgICAgZm91bmREZWNpbWFsID0gZmFsc2VcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5MZW47ICsraSkge1xuICAgICAgICBpZiAoYnl0ZXNbaV0gPT0gJy4nKSBmb3VuZERlY2ltYWwgPSB0cnVlXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmIChmb3VuZERlY2ltYWwpICsrbnVtQWZ0ZXJEZWNpbWFsXG4gICAgICAgICAgZWxzZSArK251bUJlZm9yZURlY2ltYWxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBhbHdheXMgaWdub3JlIG1hc2sgb3ZlcmZsb3dcbiAgICAgIGlmIChudW1CZWZvcmVEZWNpbWFsID4gbWFza0JlZm9yZURlY2ltYWwpIHtcbiAgICAgICAgaWYgKGxvb3NlKSByZXR1cm4gbnVtYmVyLnRvU3RyaW5nKClcbiAgICAgICAgLy8gZnJpZW5kbHkgc2lsZW50IGZhaWxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRocm93IHtcbiAgICAgICAgICAgIG5hbWU6ICdNYXNrRXJyb3InLFxuICAgICAgICAgICAgbWVzc2FnZTogYE1hc2tFcnJvcjogTnVtYmVyIGlzIHRvbyBsYXJnZSBmb3IgbWFza2BcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGZpbGxCeXRlID0gJyAnLFxuICAgICAgZmxvYXRCeXRlID0gJyAnXG4gICAgbGV0IGluUG9zID0gMCxcbiAgICAgIG91dFBvcyA9IDAsXG4gICAgICBmbG9hdFBvcyA9IDBcbiAgICBpZiAobWFzay5jaGFyQXQoMCkgPT0gJyonKSBmaWxsQnl0ZSA9ICcqJ1xuXG4gICAgY29uc3QgZmlsbEluaXQgPSBmaWxsQnl0ZVxuICAgIGNvbnN0IGlzTmVnYXRpdmUgPSBOdW1iZXJNYXNrLl9nZXRTaWduKG51bSkgPCAwXG4gICAgbGV0IGVtaXREZWNpbWFsID0gaW5MZW4gPiAwIHx8IG1hc2suaW5kZXhPZignMCcpID49IDBcbiAgICBsZXQgZm91bmRaZXJvID0gZmFsc2VcbiAgICBsZXQgZm91bmREaWdpdCA9IGZhbHNlXG4gICAgbGV0IGN1cnJlbmN5ID0gZmFsc2VcbiAgICBmb3VuZERlY2ltYWwgPSBmYWxzZVxuXG4gICAgbGV0IHJldCA9IG5ldyBBcnJheShtYXNrTGVuKVxuXG4gICAgZm9yIChsZXQgbWFza1BvcyA9IDA7IG1hc2tQb3MgPCBtYXNrTGVuOyArK21hc2tQb3MpIHtcbiAgICAgIGxldCBtID0gbWFzay5jaGFyQXQobWFza1BvcylcbiAgICAgIHN3aXRjaCAobSkge1xuICAgICAgICBjYXNlICcwJzpcbiAgICAgICAgICAtLW1hc2tCZWZvcmVEZWNpbWFsXG4gICAgICAgICAgaWYgKG1hc2tCZWZvcmVEZWNpbWFsIDwgbnVtQmVmb3JlRGVjaW1hbCAmJiBpblBvcyA8IGluTGVuKSB7XG4gICAgICAgICAgICByZXRbb3V0UG9zXSA9IGJ5dGVzW2luUG9zXVxuICAgICAgICAgICAgKytpblBvc1xuICAgICAgICAgICAgZm91bmREaWdpdCA9IHRydWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0W291dFBvc10gPSAnMCdcbiAgICAgICAgICAgIGZvdW5kWmVybyA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgICAgKytvdXRQb3NcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJyMnOlxuICAgICAgICAgIC0tbWFza0JlZm9yZURlY2ltYWxcbiAgICAgICAgICBpZiAobWFza0JlZm9yZURlY2ltYWwgPCBudW1CZWZvcmVEZWNpbWFsICYmIGluUG9zIDwgaW5MZW4pIHtcbiAgICAgICAgICAgIHJldFtvdXRQb3NdID0gYnl0ZXNbaW5Qb3NdXG4gICAgICAgICAgICArK2luUG9zXG4gICAgICAgICAgICBmb3VuZERpZ2l0ID0gdHJ1ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXRbb3V0UG9zXSA9XG4gICAgICAgICAgICAgIGZvdW5kRGVjaW1hbCAmJlxuICAgICAgICAgICAgICBmb3JjZVRyYWlsaW5nWmVyb3MgJiZcbiAgICAgICAgICAgICAgTnVtYmVyTWFzay5fZ2V0U2lnbihudW0pICE9IDBcbiAgICAgICAgICAgICAgICA/ICcwJ1xuICAgICAgICAgICAgICAgIDogZmlsbEJ5dGVcbiAgICAgICAgICAgIGlmICghZm91bmREZWNpbWFsKSBmbG9hdFBvcyA9IG1hc2tQb3NcbiAgICAgICAgICB9XG4gICAgICAgICAgKytvdXRQb3NcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJywnOlxuICAgICAgICAgIGlmIChmb3VuZFplcm8gfHwgaW5Qb3MgPiAwKSByZXRbb3V0UG9zXSA9IGdyb3VwaW5nU2VwYXJhdG9yXG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXRbb3V0UG9zXSA9IGZpbGxCeXRlXG4gICAgICAgICAgICBpZiAoIWZvdW5kRGVjaW1hbCkgZmxvYXRQb3MgPSBtYXNrUG9zXG4gICAgICAgICAgfVxuICAgICAgICAgICsrb3V0UG9zXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICctJzpcbiAgICAgICAgICBpZiAoIWZvdW5kRGlnaXQgJiYgZmxvYXRCeXRlID09ICcgJykge1xuICAgICAgICAgICAgaWYgKGlzTmVnYXRpdmUpIGZsb2F0Qnl0ZSA9ICctJ1xuICAgICAgICAgICAgcmV0W291dFBvc10gPSBmaWxsQnl0ZVxuICAgICAgICAgICAgZmxvYXRQb3MgPSBmb3VuZERlY2ltYWwgPyAtMSA6IG1hc2tQb3NcbiAgICAgICAgICB9IGVsc2UgcmV0W291dFBvc10gPSBpc05lZ2F0aXZlID8gJy0nIDogZmlsbEJ5dGVcbiAgICAgICAgICArK291dFBvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnKyc6XG4gICAgICAgICAgaWYgKCFmb3VuZERpZ2l0ICYmIGZsb2F0Qnl0ZSA9PSAnICcpIHtcbiAgICAgICAgICAgIGZsb2F0Qnl0ZSA9IGlzTmVnYXRpdmUgPyAnLScgOiAnKydcbiAgICAgICAgICAgIHJldFtvdXRQb3NdID0gZmlsbEJ5dGVcbiAgICAgICAgICAgIGZsb2F0UG9zID0gZm91bmREZWNpbWFsID8gLTEgOiBtYXNrUG9zXG4gICAgICAgICAgfSBlbHNlIHJldFtvdXRQb3NdID0gaXNOZWdhdGl2ZSA/ICctJyA6ICcrJ1xuICAgICAgICAgICsrb3V0UG9zXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICckJzpcbiAgICAgICAgICBpZiAoIWZvdW5kRGlnaXQgJiYgZmxvYXRCeXRlID09ICcgJykge1xuICAgICAgICAgICAgZmxvYXRCeXRlID0gJyQnXG4gICAgICAgICAgICByZXRbb3V0UG9zXSA9IGZpbGxCeXRlXG4gICAgICAgICAgICBmbG9hdFBvcyA9IGZvdW5kRGVjaW1hbCA/IC0xIDogbWFza1Bvc1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXRbb3V0UG9zXSA9ICckJ1xuICAgICAgICAgIH1cbiAgICAgICAgICArK291dFBvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgLy8gY2FzZSAnJic6XG4gICAgICAgIC8vICAgY3VycmVuY3kgPSB0cnVlXG4gICAgICAgIC8vICAgaWYgKCFmb3VuZERpZ2l0ICYmIGZsb2F0Qnl0ZSA9PSAnICcpIHtcbiAgICAgICAgLy8gICAgIGZsb2F0Qnl0ZSA9ICcmJ1xuICAgICAgICAvLyAgICAgcmV0W291dFBvc10gPSBmaWxsQnl0ZVxuICAgICAgICAvLyAgICAgZmxvYXRQb3MgPSBmb3VuZERlY2ltYWwgPyAtMSA6IG1hc2tQb3NcbiAgICAgICAgLy8gICB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgcmV0W291dFBvc10gPSAnJidcbiAgICAgICAgLy8gICB9XG4gICAgICAgIC8vICAgKytvdXRQb3NcbiAgICAgICAgLy8gICBicmVha1xuXG4gICAgICAgIC8vIGNhc2UgJ0AnOlxuICAgICAgICAvLyAgIGN1cnJlbmN5ID0gdHJ1ZVxuICAgICAgICAvLyAgIGlmICghZm91bmREaWdpdCAmJiBmbG9hdEJ5dGUgPT0gJyAnKSB7XG4gICAgICAgIC8vICAgICBmbG9hdEJ5dGUgPSAnQCdcbiAgICAgICAgLy8gICAgIHJldFtvdXRQb3NdID0gZmlsbEJ5dGVcbiAgICAgICAgLy8gICAgIGZsb2F0UG9zID0gZm91bmREZWNpbWFsID8gLTEgOiBtYXNrUG9zXG4gICAgICAgIC8vICAgfSBlbHNlIHtcbiAgICAgICAgLy8gICAgIHJldFtvdXRQb3NdID0gJ0AnXG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyAgICsrb3V0UG9zXG4gICAgICAgIC8vICAgYnJlYWtcblxuICAgICAgICBjYXNlICcoJzpcbiAgICAgICAgICBpZiAoIWZvdW5kRGlnaXQgJiYgZmxvYXRCeXRlID09ICcgJykge1xuICAgICAgICAgICAgaWYgKGlzTmVnYXRpdmUpIGZsb2F0Qnl0ZSA9ICcoJ1xuICAgICAgICAgICAgcmV0W291dFBvc10gPSBmaWxsQnl0ZVxuICAgICAgICAgICAgZmxvYXRQb3MgPSBmb3VuZERlY2ltYWwgPyAtMSA6IG1hc2tQb3NcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzTmVnYXRpdmUpIHtcbiAgICAgICAgICAgICAgcmV0W291dFBvc10gPSAnKCdcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldFtvdXRQb3NdID0gZm91bmREZWNpbWFsID8gJyAnIDogZmlsbEJ5dGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgKytvdXRQb3NcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJyknOlxuICAgICAgICAgIGlmIChpc05lZ2F0aXZlKSB7XG4gICAgICAgICAgICByZXRbb3V0UG9zXSA9ICcpJ1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXRbb3V0UG9zXSA9IGZvdW5kRGVjaW1hbCA/ICcgJyA6IGZpbGxCeXRlXG4gICAgICAgICAgfVxuICAgICAgICAgICsrb3V0UG9zXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICdDJzpcbiAgICAgICAgICBpZiAobWFza1BvcyA8IG1hc2tMZW4gLSAxICYmIG1hc2suY2hhckF0KG1hc2tQb3MgKyAxKSA9PSAnUicpIHtcbiAgICAgICAgICAgIGlmIChpc05lZ2F0aXZlKSB7XG4gICAgICAgICAgICAgIHJldFtvdXRQb3NdID0gJ0MnXG4gICAgICAgICAgICAgIHJldFtvdXRQb3MgKyAxXSA9ICdSJ1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0W291dFBvc10gPSAnICdcbiAgICAgICAgICAgICAgcmV0W291dFBvcyArIDFdID0gJyAnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXRQb3MgKz0gMlxuICAgICAgICAgICAgKyttYXNrUG9zXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldFtvdXRQb3NdID0gJ0MnXG4gICAgICAgICAgICArK291dFBvc1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICBpZiAobWFza1BvcyA8IG1hc2tMZW4gLSAxICYmIG1hc2suY2hhckF0KG1hc2tQb3MgKyAxKSA9PSAnUicpIHtcbiAgICAgICAgICAgIGlmIChpc05lZ2F0aXZlKSB7XG4gICAgICAgICAgICAgIHJldFtvdXRQb3NdID0gJ0MnXG4gICAgICAgICAgICAgIHJldFtvdXRQb3MgKyAxXSA9ICdSJ1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0W291dFBvc10gPSAnRCdcbiAgICAgICAgICAgICAgcmV0W291dFBvcyArIDFdID0gJ1InXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXRQb3MgKz0gMlxuICAgICAgICAgICAgKyttYXNrUG9zXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldFtvdXRQb3NdID0gJ0QnXG4gICAgICAgICAgICArK291dFBvc1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJyonOlxuICAgICAgICAgIHJldFtvdXRQb3NdID0gJyonXG4gICAgICAgICAgKytvdXRQb3NcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJy4nOlxuICAgICAgICAgIHJldFtvdXRQb3NdID0gZW1pdERlY2ltYWwgPyBkZWNpbWFsU2VwYXJhdG9yIDogZmlsbEJ5dGVcbiAgICAgICAgICBmaWxsQnl0ZSA9ICcgJ1xuICAgICAgICAgIGZvdW5kRGVjaW1hbCA9IHRydWVcbiAgICAgICAgICArK2luUG9zXG4gICAgICAgICAgKytvdXRQb3NcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJ0InOlxuICAgICAgICAgIHJldFtvdXRQb3NdID0gJyAnXG4gICAgICAgICAgKytvdXRQb3NcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0W291dFBvc10gPSBtXG4gICAgICAgICAgKytvdXRQb3NcbiAgICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmbG9hdEJ5dGUgIT0gJyAnKSB7XG4gICAgICBpZiAoZmxvYXRQb3MgPCAwKSBmbG9hdFBvcyA9IG91dFBvc1xuICAgICAgd2hpbGUgKGZsb2F0UG9zID49IG1hc2tMZW4pIC0tZmxvYXRQb3NcbiAgICAgIGlmIChyZXRbZmxvYXRQb3NdID09IGZpbGxJbml0KSByZXRbZmxvYXRQb3NdID0gZmxvYXRCeXRlXG4gICAgfVxuXG4gICAgcmV0dXJuIHJldC5qb2luKCcnKVxuICB9XG5cbiAgc3RhdGljIF9zaGlmdChudW1iZXIsIHByZWNpc2lvbiwgcmV2ZXJzZVNoaWZ0KSB7XG4gICAgaWYgKHJldmVyc2VTaGlmdCkgcHJlY2lzaW9uID0gLXByZWNpc2lvblxuICAgIHZhciBudW1BcnJheSA9ICgnJyArIG51bWJlcikuc3BsaXQoJ2UnKVxuICAgIHJldHVybiArKFxuICAgICAgbnVtQXJyYXlbMF0gK1xuICAgICAgJ2UnICtcbiAgICAgIChudW1BcnJheVsxXSA/ICtudW1BcnJheVsxXSArIHByZWNpc2lvbiA6IHByZWNpc2lvbilcbiAgICApXG4gIH1cblxuICBzdGF0aWMgX3JvdW5kKG51bWJlciwgcHJlY2lzaW9uKSB7XG4gICAgcmV0dXJuIE51bWJlck1hc2suX3NoaWZ0KFxuICAgICAgTWF0aC5yb3VuZChOdW1iZXJNYXNrLl9zaGlmdChudW1iZXIsIHByZWNpc2lvbiwgZmFsc2UpKSxcbiAgICAgIHByZWNpc2lvbixcbiAgICAgIHRydWVcbiAgICApXG4gIH1cblxuICBzdGF0aWMgX3RvQ2hhckFycmF5KG51bWJlcikge1xuICAgIGNvbnN0IHNpZ251bSA9IE51bWJlck1hc2suX2dldFNpZ24obnVtYmVyKVxuICAgIGxldCBjaGFycyA9IFtdXG5cbiAgICBpZiAoc2lnbnVtICE9PSAwKSB7XG4gICAgICBsZXQgc3RyaW5nID0gc2lnbnVtIDwgMCA/IGAkey0xICogbnVtYmVyLnRvU3RyaW5nKCl9YCA6IG51bWJlci50b1N0cmluZygpXG5cbiAgICAgIGlmIChzdHJpbmcubGVuZ3RoID4gMSAmJiBzdHJpbmcuY2hhckF0KDApID09ICcwJylcbiAgICAgICAgc3RyaW5nID0gc3RyaW5nLnN1YnN0cmluZygxKVxuXG4gICAgICAvLyBUaGUgc3RyaW5nIGNvbnRhaW5zIG9ubHkgWzAtOV0gYW5kICcuJ1xuICAgICAgY2hhcnMgPSBzdHJpbmcuc3BsaXQoJycpXG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYXJzXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2lnbiBvZiBhIG51bWJlclxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0geCBudW1iZXJcbiAgICogQHJldHVybnMge051bWJlcn0gQSBudW1iZXIgcmVwcmVzZW50aW5nIHRoZSBzaWduIG9mIHRoZSBnaXZlbiBhcmd1bWVudC5cbiAgICogICAgICAgICAgICAgICAgICAgSWYgdGhlIGFyZ3VtZW50IGlzIGEgcG9zaXRpdmUgbnVtYmVyLCBuZWdhdGl2ZSBudW1iZXIsIHBvc2l0aXZlIHplcm9cbiAgICogICAgICAgICAgICAgICAgICAgb3IgbmVnYXRpdmUgemVybywgdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIDEsIC0xLCAwIG9yIC0wIHJlc3BlY3RpdmVseS5cbiAgICogICAgICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCBOYU4gaXMgcmV0dXJuZWQuXG4gICAqL1xuICBzdGF0aWMgX2dldFNpZ24oeCkge1xuICAgIHJldHVybiAoeCA+IDApIC0gKHggPCAwKSB8fCAreFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE51bWJlck1hc2tcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9OdW1iZXJNYXNrL051bWJlck1hc2suanMiLCIvKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYmJqLW1hc2tzIGxpYi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbiAqXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IHV0Y1RvWm9uZWRUaW1lIGZyb20gJ2RhdGUtZm5zLXR6L3V0Y1RvWm9uZWRUaW1lJ1xuaW1wb3J0IHsgZ2V0V2Vla1N0YXJ0QnlMb2NhbGUgYXMgb3JpZ2luYWxHZXRXZWVrU3RhcnRCeUxvY2FsZSB9IGZyb20gJ3dlZWtzdGFydCdcblxuZXhwb3J0IGNvbnN0IElTX1RJTUVfUkVHRVggPSAvXigyWzAtM118WzAxXVswLTldKTo/KFswLTVdWzAtOV0pOj8oWzAtNV1bMC05XSkoWnxbKy1dKD86MlswLTNdfFswMV1bMC05XSkoPzo6Pyg/OlswLTVdWzAtOV0pKT8pJC9cbmV4cG9ydCBjb25zdCBJU19EQVRFX1JFR0VYID0gL14oKFsxMl1cXGR7M30pLSgwWzEtOV18MVswLTJdKS0oMFsxLTldfFsxMl1cXGR8M1swMV0pKFp8WystXSg/OjJbMC0zXXxbMDFdWzAtOV0pKD86Oj8oPzpbMC01XVswLTldKSk/KSkkL1xuXG4vKipcbiAqIEZpbmQgb3V0IHdoZW4gdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayBiYXNlZCBvbiB0aGUgcGFzc2VkIGxvY2FsZVxuICpcbiAqIEBwYXJhbSB7bG9jYWxlfSBsb2NhbGVcbiAqXG4gKiBAcmV0dXJuIHtOdW1iZXJ9IGEgbnVtYmVyIDAgPSBzdW5kYXkgLCAxID0gbW9uZGF5ICwgLi4uLlxuICovXG5leHBvcnQgY29uc3QgZ2V0V2Vla1N0YXJ0QnlMb2NhbGUgPSBsb2NhbGUgPT4ge1xuICByZXR1cm4gb3JpZ2luYWxHZXRXZWVrU3RhcnRCeUxvY2FsZShsb2NhbGUpXG59XG5cbi8qKlxuICogIEdldCBkYXkgbnVtYmVyIGluIHRoZSB5ZWFyIG9mIHRoZSBwYXNzZWQgZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZX0gZGF0ZVxuICpcbiAqIEByZXR1cm4ge051bWJlcn0gZGF5IG51bWJlclxuICovXG5leHBvcnQgY29uc3QgZ2V0RGF5T2ZZZWFyID0gZGF0ZSA9PiB7XG4gIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCAwLCAwKVxuXG4gIGNvbnN0IGRpZmYgPVxuICAgIGRhdGUgLVxuICAgIHN0YXJ0ICtcbiAgICAoc3RhcnQuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSkgKiA2MCAqIDEwMDBcbiAgY29uc3Qgb25lRGF5ID0gMTAwMCAqIDYwICogNjAgKiAyNFxuICBjb25zdCBkYXkgPSBNYXRoLmZsb29yKGRpZmYgLyBvbmVEYXkpXG5cbiAgcmV0dXJuIGRheVxufVxuXG4vKipcbiAqIFRha2VzIGluY29tcGxldGUgaXNvIHN0cmluZyBhbmQgcmV0dXJuIGEgY29tcGxldGUgb25lXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGRhdGUgaW5jb21wbGV0ZSBpc28gc3RyaW5nXG4gKlxuICogQHJldHVybiB7U3RyaW5nfSBjb21wbGV0ZSBpc28gc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCBmaXhTaG9ydElTTyA9IGRhdGUgPT4ge1xuICBsZXQgdmFsdWUgPSBkYXRlXG4gIGxldCBvZmZzZXQgPSAodmFsdWUubWF0Y2goL3okfFsrXFwtXVxcZFxcZDpcXGRcXGQkL2kpIHx8IFtdKVswXVxuICBpZiAoIW9mZnNldCkge1xuICAgIG9mZnNldCA9ICdaJ1xuICAgIHZhbHVlICs9IG9mZnNldFxuICB9XG5cbiAgaWYgKElTX1RJTUVfUkVHRVgudGVzdCh2YWx1ZSkpIHtcbiAgICB2YWx1ZSA9IGAxOTcwLTAxLTAxVCR7dmFsdWV9YFxuICB9IGVsc2UgaWYgKElTX0RBVEVfUkVHRVgudGVzdCh2YWx1ZSkpIHtcbiAgICB2YWx1ZSA9IGAke3ZhbHVlLnNwbGl0KG9mZnNldClbMF19VDAwOjAwOjAwJHtvZmZzZXR9YFxuICB9XG5cbiAgcmV0dXJuIHZhbHVlXG59XG5cbi8qKlxuICogR2V0IHRoZSBicm93c2VyIHRpbWV6b25lIG5hbWUgLCBpZiBub3Qgc3VwcG9ydGVkIHRoZW4gdGhlIGJyb3dzZXJcbiAqIHRpbWV6b25lIG9mZnNldCBmb3JtYXR0ZWRcbiAqXG4gKiBAcmV0dXJuIHtTdHJpbmd9IHRpbWV6b25lIG9mIG9mZnNldFxuICovXG5leHBvcnQgY29uc3QgZ2V0VGltZXpvbmVPck9mZnNldCA9ICgpID0+IHtcbiAgY29uc3QgdGltZXpvbmUgPSBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmVcbiAgaWYgKCF0aW1lem9uZSkge1xuICAgIGNvbnN0IHBhZCA9IChudW1iZXIsIGxlbmd0aCkgPT4ge1xuICAgICAgdmFyIHN0ciA9ICcnICsgbnVtYmVyXG4gICAgICB3aGlsZSAoc3RyLmxlbmd0aCA8IGxlbmd0aCkge1xuICAgICAgICBzdHIgPSAnMCcgKyBzdHJcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHJcbiAgICB9XG5cbiAgICBsZXQgb2Zmc2V0ID0gbmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpXG4gICAgb2Zmc2V0ID1cbiAgICAgIChvZmZzZXQgPCAwID8gJysnIDogJy0nKSArIC8vIE5vdGUgdGhlIHJldmVyc2VkIHNpZ24hXG4gICAgICBwYWQocGFyc2VJbnQoTWF0aC5hYnMob2Zmc2V0IC8gNjApKSwgMikgK1xuICAgICAgcGFkKE1hdGguYWJzKG9mZnNldCAlIDYwKSwgMilcblxuICAgIHJldHVybiBvZmZzZXRcbiAgfVxuXG4gIHJldHVybiB0aW1lem9uZVxufVxuXG4vKipcbiAqIEdldCB0aGUgV2VlayBOdW1iZXIgaW4gdGhlIHBhc3NlZCBkYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfSBkYXRlIC0gRGF0ZSBvYmplY3RcbiAqIEBwYXJhbSB7TnVtYmVyfSB3ZWVrU3RhcnQgQSBudW1iZXIgd2hpY2ggZGVmaW5lcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwICA9IHN1bmRheSAsIDEgPSBtb25kYXkgLCAuLi4pXG4gKlxuICogQHJldHVybnMge051bWJlcn0gdGhlIHdlZWsgbnVtYmVyXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRXZWVrTnVtYmVyID0gZnVuY3Rpb24oZGF0ZSwgd2Vla1N0YXJ0KSB7XG4gIGNvbnN0IGQgPSBuZXcgRGF0ZShcbiAgICBEYXRlLlVUQyhkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpXG4gIClcbiAgY29uc3QgZGF5TnVtID0gZC5nZXRVVENEYXkoKSAtICh3ZWVrU3RhcnQgLSAxKSB8fCA3XG4gIGQuc2V0VVRDRGF0ZShkLmdldFVUQ0RhdGUoKSArIDQgLSBkYXlOdW0pXG4gIGNvbnN0IHllYXJTdGFydCA9IG5ldyBEYXRlKERhdGUuVVRDKGQuZ2V0VVRDRnVsbFllYXIoKSwgMCwgMSkpXG4gIHJldHVybiBNYXRoLmNlaWwoKChkIC0geWVhclN0YXJ0KSAvIDg2NDAwMDAwICsgMSkgLyA3KVxufVxuXG4vKipcbiAqIERhdGVNYXNrXG4gKlxuICogQSBqYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIGZvciBCQmogZGF0ZXMgbWFza2luZ1xuICpcbiAqIEBhdXRob3IgSHl5YW4gQWJvIEZha2hlciA8aGFib2Zha2hlckBiYXNpcy5jb20+XG4gKi9cbmNsYXNzIERhdGVNYXNrIHtcbiAgLyoqXG4gICAqIE1hc2sgZGF0ZVxuICAgKlxuICAgKiBNYXNrIHRoZSBwYXNzZWQgZGF0ZSB3aXRoIHRoZSBwYXNzZWQgbWFza1xuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gZGF0ZSBkYXRlIGFzIGEgc3RyaW5nXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtYXNrIG1hc2sgYXMgYSBzdHJpbmdcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtsb2NhbGU9QnJvd3NlcidzIGxvY2FsZV0gdGhlIGxhbmd1YWdlIHRvIHVzZSBleChlbi1VUykuIGRlZmF1bHQgaXMgdG8gdGhlIHN5c3RlbSBsYW5ndWFnZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW3RpbWV6b25lPVN5c3RlbSB0aW1lem9uZV0gdGhlIHRpbWUgem9uZSBkZXNjcmlwdG9yIChlLmcuIEFtZXJpY2EvTG9zX0FuZ2VsZXMpLiBkZWZhdWx0IHRvIHRoZSBzeXN0ZW1cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWV6b25lXG4gICAqXG4gICAqIEByZXR1cm4ge1N0cmluZ30gYSBkYXRlIG1hc2tlZCB3aXRoIHRoZSBnaXZlbiBtYXNrXG4gICAqL1xuICBzdGF0aWMgbWFzayhkYXRlLCBtYXNrLCBsb2NhbGUsIHRpbWV6b25lKSB7XG4gICAgaWYgKCFkYXRlKSByZXR1cm4gJydcbiAgICBpZiAoIW1hc2spIHJldHVybiBkYXRlXG5cbiAgICB0aW1lem9uZSA9IHRpbWV6b25lIHx8IGdldFRpbWV6b25lT3JPZmZzZXQoKVxuICAgIGxvY2FsZSA9IGxvY2FsZSB8fCBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlIHx8ICdlbi1VUydcblxuICAgIC8vIG1ha2Ugc3VyZSB3ZSBoYXZlIGEgY29tcGxldGUgaXNvIHN0cmluZ1xuICAgIGRhdGUgPSBkYXRlIGluc3RhbmNlb2YgRGF0ZSA/IGRhdGUgOiBmaXhTaG9ydElTTyhkYXRlKVxuXG4gICAgY29uc3QgZGF0ZU9iamVjdCA9IHV0Y1RvWm9uZWRUaW1lKGRhdGUsIHRpbWV6b25lKVxuICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gRGF0ZU1hc2suX2J1aWxkVHJhbnNsYXRpb24oe1xuICAgICAgeWVhcjogZGF0ZU9iamVjdC5nZXRGdWxsWWVhcigpLFxuICAgICAgbW9udGg6IGRhdGVPYmplY3QuZ2V0TW9udGgoKSArIDEsXG4gICAgICBtb250aFNob3J0OiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChbbG9jYWxlXSwgeyBtb250aDogJ3Nob3J0JyB9KS5mb3JtYXQoXG4gICAgICAgIGRhdGVPYmplY3RcbiAgICAgICksXG4gICAgICBtb250aExvbmc6IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFtsb2NhbGVdLCB7IG1vbnRoOiAnbG9uZycgfSkuZm9ybWF0KFxuICAgICAgICBkYXRlT2JqZWN0XG4gICAgICApLFxuICAgICAgZGF5OiBkYXRlT2JqZWN0LmdldERhdGUoKSxcbiAgICAgIGRheVNob3J0OiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChbbG9jYWxlXSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pLmZvcm1hdChcbiAgICAgICAgZGF0ZU9iamVjdFxuICAgICAgKSxcbiAgICAgIGRheUxvbmc6IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFtsb2NhbGVdLCB7IHdlZWtkYXk6ICdsb25nJyB9KS5mb3JtYXQoXG4gICAgICAgIGRhdGVPYmplY3RcbiAgICAgICksXG4gICAgICBtaW51dGVzOiBkYXRlT2JqZWN0LmdldE1pbnV0ZXMoKSxcbiAgICAgIHNlY29uZHM6IGRhdGVPYmplY3QuZ2V0U2Vjb25kcygpLFxuICAgICAgZ2V0IGhvdXJzMjQoKSB7XG4gICAgICAgIHJldHVybiBkYXRlT2JqZWN0LmdldEhvdXJzKClcbiAgICAgIH0sXG4gICAgICBnZXQgaG91cnMxMigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG91cnMyNCAlIDEyIHx8IDEyXG4gICAgICB9LFxuICAgICAgZGF5T2ZZZWFyOiBnZXREYXlPZlllYXIoZGF0ZU9iamVjdCksXG4gICAgICBkYXlPZldlZWs6IGRhdGVPYmplY3QuZ2V0RGF5KCkgKyAxLCAvLyBTdW5kYXkgPSAxIGluIEJCaiBidXQgU3VuZGF5ID0gMCBpbiBKU1xuICAgICAgd2Vla051bWJlcjogZ2V0V2Vla051bWJlcihkYXRlT2JqZWN0LCBnZXRXZWVrU3RhcnRCeUxvY2FsZShsb2NhbGUpKSxcbiAgICAgIGxvY2FsZSxcbiAgICAgIHRpbWV6b25lXG4gICAgfSlcblxuICAgIGxldCByZXN1bHQgPSBtYXNrXG4gICAgZm9yICh2YXIgayBpbiB0cmFuc2xhdGlvbikge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UobmV3IFJlZ0V4cCgnKCUnICsgayArICcpJywgJ2cnKSwgdHJhbnNsYXRpb25ba10pXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIG1hcCBvYmplY3Qgd2hpY2ggY29udGFpbnMgYWxsIHBvc3NpYmxlIGZvcm1zIG9mIG1hc2tzXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRlRGV0YWlscyBkYXRlXG4gICAqXG4gICAqIEByZXR1cm4ge09iamVjdH0gZm9ybXMgbWFza3NcbiAgICovXG4gIHN0YXRpYyBfYnVpbGRUcmFuc2xhdGlvbihkYXRlRGV0YWlscykge1xuICAgIHJldHVybiB7XG4gICAgICAvLyB5ZWFyXG4gICAgICBZejogZGF0ZURldGFpbHMueWVhci50b1N0cmluZygpLnN1YnN0cigtMiksXG4gICAgICBZczogZGF0ZURldGFpbHMueWVhcixcbiAgICAgIFlsOiBkYXRlRGV0YWlscy55ZWFyLFxuICAgICAgWXA6IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0ZURldGFpbHMueWVhciksXG4gICAgICBZZDogZGF0ZURldGFpbHMueWVhcixcbiAgICAgIFk6IGRhdGVEZXRhaWxzLnllYXIsXG5cbiAgICAgIC8vIG1vbnRoXG4gICAgICBNejpcbiAgICAgICAgU3RyaW5nKGRhdGVEZXRhaWxzLm1vbnRoKS5sZW5ndGggPT0gMVxuICAgICAgICAgID8gJzAnICsgZGF0ZURldGFpbHMubW9udGhcbiAgICAgICAgICA6IGRhdGVEZXRhaWxzLm1vbnRoLFxuICAgICAgTXM6IGRhdGVEZXRhaWxzLm1vbnRoU2hvcnQsXG4gICAgICBNbDogZGF0ZURldGFpbHMubW9udGhMb25nLFxuICAgICAgTXA6IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0ZURldGFpbHMubW9udGgpLFxuICAgICAgTWQ6IGRhdGVEZXRhaWxzLm1vbnRoLFxuICAgICAgTTogZGF0ZURldGFpbHMubW9udGgsXG5cbiAgICAgIC8vIGRheVxuICAgICAgRHo6XG4gICAgICAgIFN0cmluZyhkYXRlRGV0YWlscy5kYXkpLmxlbmd0aCA9PSAxXG4gICAgICAgICAgPyAnMCcgKyBkYXRlRGV0YWlscy5kYXlcbiAgICAgICAgICA6IGRhdGVEZXRhaWxzLmRheSxcbiAgICAgIERzOiBkYXRlRGV0YWlscy5kYXlTaG9ydCxcbiAgICAgIERsOiBkYXRlRGV0YWlscy5kYXlMb25nLFxuICAgICAgRHA6IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0ZURldGFpbHMuZGF5KSxcbiAgICAgIERkOiBkYXRlRGV0YWlscy5kYXksXG4gICAgICBEOiBkYXRlRGV0YWlscy5kYXksXG5cbiAgICAgIC8vIGhvdXIgMjRcbiAgICAgIEh6OlxuICAgICAgICBTdHJpbmcoZGF0ZURldGFpbHMuaG91cnMyNCkubGVuZ3RoID09IDFcbiAgICAgICAgICA/ICcwJyArIGRhdGVEZXRhaWxzLmhvdXJzMjRcbiAgICAgICAgICA6IGRhdGVEZXRhaWxzLmhvdXJzMjQsXG4gICAgICBIczogZGF0ZURldGFpbHMuaG91cnMyNCxcbiAgICAgIEhsOiBkYXRlRGV0YWlscy5ob3VyczI0LFxuICAgICAgSHA6IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0ZURldGFpbHMuaG91cnMyNCksXG4gICAgICBIZDogZGF0ZURldGFpbHMuaG91cnMyNCxcbiAgICAgIEg6IGRhdGVEZXRhaWxzLmhvdXJzMjQsXG5cbiAgICAgIC8vIGhvdXIgMTJcbiAgICAgIGh6OlxuICAgICAgICBTdHJpbmcoZGF0ZURldGFpbHMuaG91cnMxMikubGVuZ3RoID09IDFcbiAgICAgICAgICA/ICcwJyArIGRhdGVEZXRhaWxzLmhvdXJzMTJcbiAgICAgICAgICA6IGRhdGVEZXRhaWxzLmhvdXJzMTIsXG4gICAgICBoczogZGF0ZURldGFpbHMuaG91cnMxMixcbiAgICAgIGhsOiBkYXRlRGV0YWlscy5ob3VyczEyLFxuICAgICAgaHA6IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0ZURldGFpbHMuaG91cnMxMiksXG4gICAgICBoZDogZGF0ZURldGFpbHMuaG91cnMxMixcbiAgICAgIGg6IGRhdGVEZXRhaWxzLmhvdXJzMTIsXG5cbiAgICAgIC8vIG1pbnV0ZXNcbiAgICAgIG16OlxuICAgICAgICBTdHJpbmcoZGF0ZURldGFpbHMubWludXRlcykubGVuZ3RoID09IDFcbiAgICAgICAgICA/ICcwJyArIGRhdGVEZXRhaWxzLm1pbnV0ZXNcbiAgICAgICAgICA6IGRhdGVEZXRhaWxzLm1pbnV0ZXMsXG4gICAgICBtczogZGF0ZURldGFpbHMubWludXRlcyxcbiAgICAgIG1sOiBkYXRlRGV0YWlscy5taW51dGVzLFxuICAgICAgbXA6IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0ZURldGFpbHMubWludXRlcyksXG4gICAgICBtZDogZGF0ZURldGFpbHMubWludXRlcyxcbiAgICAgIG06IGRhdGVEZXRhaWxzLm1pbnV0ZXMsXG5cbiAgICAgIC8vIHNlY29uZHNcbiAgICAgIHN6OlxuICAgICAgICBTdHJpbmcoZGF0ZURldGFpbHMuc2Vjb25kcykubGVuZ3RoID09IDFcbiAgICAgICAgICA/ICcwJyArIGRhdGVEZXRhaWxzLnNlY29uZHNcbiAgICAgICAgICA6IGRhdGVEZXRhaWxzLnNlY29uZHMsXG4gICAgICBzczogZGF0ZURldGFpbHMuc2Vjb25kcyxcbiAgICAgIHNsOiBkYXRlRGV0YWlscy5zZWNvbmRzLFxuICAgICAgc3A6IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0ZURldGFpbHMuc2Vjb25kcyksXG4gICAgICBzZDogZGF0ZURldGFpbHMuc2Vjb25kcyxcbiAgICAgIHM6IGRhdGVEZXRhaWxzLnNlY29uZHMsXG5cbiAgICAgIC8vIEFNICwgUE1cbiAgICAgIFBQOiBkYXRlRGV0YWlscy5ob3VyczI0ID4gMTIgPyAnUE0nIDogJ1BNJyxcbiAgICAgIFA6IGRhdGVEZXRhaWxzLmhvdXJzMjQgPiAxMiA/ICdQTScgOiAnQU0nLFxuICAgICAgcHA6IGRhdGVEZXRhaWxzLmhvdXJzMjQgPiAxMiA/ICdwbScgOiAnYW0nLFxuICAgICAgcDogZGF0ZURldGFpbHMuaG91cnMyNCA+IDEyID8gJ3BtJyA6ICdhbScsXG5cbiAgICAgIC8vIERheSBvZiBZZWFyXG4gICAgICBKejpcbiAgICAgICAgU3RyaW5nKGRhdGVEZXRhaWxzLmRheU9mWWVhcikubGVuZ3RoID09IDFcbiAgICAgICAgICA/ICcwJyArIGRhdGVEZXRhaWxzLmRheU9mWWVhclxuICAgICAgICAgIDogZGF0ZURldGFpbHMuZGF5T2ZZZWFyLFxuICAgICAgSnM6IGRhdGVEZXRhaWxzLmRheU9mWWVhcixcbiAgICAgIEpsOiBkYXRlRGV0YWlscy5kYXlPZlllYXIsXG4gICAgICBKZDogZGF0ZURldGFpbHMuZGF5T2ZZZWFyLFxuICAgICAgSjogZGF0ZURldGFpbHMuZGF5T2ZZZWFyLFxuXG4gICAgICAvLyBEYXkgT2YgV2Vla1xuICAgICAgV3o6XG4gICAgICAgIFN0cmluZyhkYXRlRGV0YWlscy5kYXlPZldlZWspLmxlbmd0aCA9PSAxXG4gICAgICAgICAgPyAnMCcgKyBkYXRlRGV0YWlscy5kYXlPZldlZWtcbiAgICAgICAgICA6IGRhdGVEZXRhaWxzLmRheU9mV2VlayxcbiAgICAgIFdzOiBkYXRlRGV0YWlscy5kYXlPZldlZWssXG4gICAgICBXbDogZGF0ZURldGFpbHMuZGF5T2ZXZWVrLFxuICAgICAgV3A6IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0ZURldGFpbHMuZGF5T2ZXZWVrKSxcbiAgICAgIFdkOiBkYXRlRGV0YWlscy5kYXlPZldlZWssXG4gICAgICBXOiBkYXRlRGV0YWlscy5kYXlPZldlZWssXG5cbiAgICAgIC8vIHdlZWsgbnVtYmVyXG4gICAgICB3ejpcbiAgICAgICAgU3RyaW5nKGRhdGVEZXRhaWxzLndlZWtOdW1iZXIpLmxlbmd0aCA9PSAxXG4gICAgICAgICAgPyAnMCcgKyBkYXRlRGV0YWlscy53ZWVrTnVtYmVyXG4gICAgICAgICAgOiBkYXRlRGV0YWlscy53ZWVrTnVtYmVyLFxuICAgICAgd3M6IGRhdGVEZXRhaWxzLndlZWtOdW1iZXIsXG4gICAgICB3bDogZGF0ZURldGFpbHMud2Vla051bWJlcixcbiAgICAgIHdwOiBTdHJpbmcuZnJvbUNoYXJDb2RlKGRhdGVEZXRhaWxzLndlZWtOdW1iZXIpLFxuICAgICAgd2Q6IGRhdGVEZXRhaWxzLndlZWtOdW1iZXIsXG4gICAgICB3OiBkYXRlRGV0YWlscy53ZWVrTnVtYmVyXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IERhdGVNYXNrXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvRGF0ZU1hc2svRGF0ZU1hc2suanMiLCJpbXBvcnQgeyBnZXRXZWVrU3RhcnRCeVJlZ2lvbiwgZ2V0V2Vla1N0YXJ0QnlMb2NhbGUgfSBmcm9tICcuL2FwaS5qcyc7XG5pbXBvcnQgbGFuZ1JlZ2lvbk1hcCBmcm9tICcuL2xhbmdSZWdpb25NYXAuanMnO1xuaW1wb3J0IHJlZ2lvbkRheU1hcCBmcm9tICcuL3JlZ2lvbkRheU1hcC5qcyc7XG5cbmZ1bmN0aW9uIGdldFdlZWtTdGFydEJ5UmVnaW9uJDEocmVnaW9uQ29kZSkge1xuICAgIHJldHVybiBnZXRXZWVrU3RhcnRCeVJlZ2lvbihyZWdpb25Db2RlLCByZWdpb25EYXlNYXApO1xufVxuXG5mdW5jdGlvbiBnZXRXZWVrU3RhcnRCeUxvY2FsZSQxKGxvY2FsZSkge1xuICAgIHJldHVybiBnZXRXZWVrU3RhcnRCeUxvY2FsZShsb2NhbGUsIGxhbmdSZWdpb25NYXAsIHJlZ2lvbkRheU1hcCk7XG59XG5cbmV4cG9ydCB7IGdldFdlZWtTdGFydEJ5UmVnaW9uJDEgYXMgZ2V0V2Vla1N0YXJ0QnlSZWdpb24sIGdldFdlZWtTdGFydEJ5TG9jYWxlJDEgYXMgZ2V0V2Vla1N0YXJ0QnlMb2NhbGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1haW4uanMubWFwXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy93ZWVrc3RhcnQvZGlzdC9lcy1tb2R1bGUvbWFpbi5qc1xuLy8gbW9kdWxlIGlkID0gMTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEiLCJmdW5jdGlvbiBnZXRXZWVrU3RhcnRCeVJlZ2lvbihyZWdpb25Db2RlLCByZWdpb25EYXlNYXApIHtcbiAgICB2YXIgY29kZSA9IHJlZ2lvbkRheU1hcFt0eXBlb2YgcmVnaW9uQ29kZSA9PT0gJ3N0cmluZycgPyByZWdpb25Db2RlLnRvVXBwZXJDYXNlKCkgOiByZWdpb25Db2RlXTtcbiAgICByZXR1cm4gdHlwZW9mIGNvZGUgPT09ICdudW1iZXInID8gY29kZSA6IDE7XG59XG5cbmZ1bmN0aW9uIGdldFdlZWtTdGFydEJ5TG9jYWxlKGxvY2FsZSwgbGFuZ1JlZ2lvbk1hcCwgcmVnaW9uRGF5TWFwKSB7XG4gICAgaWYgKGxvY2FsZSkge1xuICAgICAgICB2YXIgZGF0YSA9IGxvY2FsZS50b0xvd2VyQ2FzZSgpLnNwbGl0KC9bLV9dLyk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IGRhdGFbMF07XG4gICAgICAgIHZhciBjb3VudHJ5O1xuICAgICAgICBpZiAoZGF0YVsxXSAmJiBkYXRhWzFdLmxlbmd0aCA9PT0gNCkge1xuICAgICAgICAgICAgbGFuZ3VhZ2UgKz0gXCJfXCIgKyAoZGF0YVsxXSk7XG4gICAgICAgICAgICBjb3VudHJ5ID0gZGF0YVsyXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvdW50cnkgPSBkYXRhWzFdO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY291bnRyeSkge1xuICAgICAgICAgICAgY291bnRyeSA9IGxhbmdSZWdpb25NYXBbbGFuZ3VhZ2VdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb3VudHJ5KSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0V2Vla1N0YXJ0QnlSZWdpb24oY291bnRyeS5tYXRjaCgvXlxcZCskLykgPyBOdW1iZXIoY291bnRyeSkgOiBjb3VudHJ5LCByZWdpb25EYXlNYXApO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAxO1xufVxuXG5leHBvcnQgeyBnZXRXZWVrU3RhcnRCeVJlZ2lvbiwgZ2V0V2Vla1N0YXJ0QnlMb2NhbGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFwaS5qcy5tYXBcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3dlZWtzdGFydC9kaXN0L2VzLW1vZHVsZS9hcGkuanNcbi8vIG1vZHVsZSBpZCA9IDE2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIiwidmFyIGxhbmdSZWdpb25NYXAgPSB7XG4gICAgZW46ICdVUycsXG4gICAgemg6ICdDTicsXG4gICAgemhfaGFuczogJ0NOJyxcbiAgICBoYW5zOiAnQ04nLFxuICAgIHd1dTogJ0NOJyxcbiAgICBoc246ICdDTicsXG4gICAgaGFrOiAnQ04nLFxuICAgIG5hbjogJ0NOJyxcbiAgICBnYW46ICdDTicsXG4gICAgaGk6ICdJTicsXG4gICAgdGU6ICdJTicsXG4gICAgbXI6ICdJTicsXG4gICAgdGE6ICdJTicsXG4gICAgZ3U6ICdJTicsXG4gICAga246ICdJTicsXG4gICAgb3I6ICdJTicsXG4gICAgbWw6ICdJTicsXG4gICAgcGFfZ3VydTogJ0lOJyxcbiAgICBiaG86ICdJTicsXG4gICAgYXdhOiAnSU4nLFxuICAgIGFzOiAnSU4nLFxuICAgIG13cjogJ0lOJyxcbiAgICBtYWk6ICdJTicsXG4gICAgbWFnOiAnSU4nLFxuICAgIGJnYzogJ0lOJyxcbiAgICBobmU6ICdJTicsXG4gICAgZGNjOiAnSU4nLFxuICAgIGR6OiAnQlQnLFxuICAgIHRuOiAnQlcnLFxuICAgIGFtOiAnRVQnLFxuICAgIG9tOiAnRVQnLFxuICAgIHF1YzogJ0dUJyxcbiAgICBpZDogJ0lEJyxcbiAgICBqdjogJ0lEJyxcbiAgICBzdTogJ0lEJyxcbiAgICBtYWQ6ICdJRCcsXG4gICAgbXNfYXJhYjogJ0lEJyxcbiAgICBnYTogJ0lFJyxcbiAgICBoZTogJ0lMJyxcbiAgICBqYW06ICdKTScsXG4gICAgamE6ICdKUCcsXG4gICAga206ICdLSCcsXG4gICAga286ICdLUicsXG4gICAgbG86ICdMQScsXG4gICAgbWg6ICdNSCcsXG4gICAgbXk6ICdNTScsXG4gICAgbXQ6ICdNVCcsXG4gICAgbmU6ICdOUCcsXG4gICAgZmlsOiAnUEgnLFxuICAgIGNlYjogJ1BIJyxcbiAgICBpbG86ICdQSCcsXG4gICAgdXI6ICdQSycsXG4gICAgcGE6ICdQSycsXG4gICAgcGFfYXJhYjogJ1BLJyxcbiAgICBhcmFiOiAnUEsnLFxuICAgIGxhaDogJ1BLJyxcbiAgICBwczogJ1BLJyxcbiAgICBzZDogJ1BLJyxcbiAgICBzZF9hcmFiOiAnUEsnLFxuICAgIHNrcjogJ1BLJyxcbiAgICBnbjogJ1BZJyxcbiAgICB0aDogJ1RIJyxcbiAgICB0dHM6ICdUSCcsXG4gICAgYWViOiAnVE4nLFxuICAgIHpoX2hhbnQ6ICdUVycsXG4gICAgaGFudDogJ1RXJyxcbiAgICBzbTogJ1dTJyxcbiAgICB6dTogJ1pBJyxcbiAgICBzbjogJ1pXJyxcbiAgICBhcnE6ICdEWicsXG4gICAgYXI6ICdFRycsXG4gICAgYXJ6OiAnRUcnLFxuICAgIGZhOiAnSVInLFxuICAgIGF6X2FyYWI6ICdJUicsXG4gICAgYXJ5OiAnTUEnLFxuICAgIGJuOiAnQkQnLFxuICAgIHJrdDogJ0JEJyxcbiAgICBkdjogJ01WJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbGFuZ1JlZ2lvbk1hcDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxhbmdSZWdpb25NYXAuanMubWFwXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy93ZWVrc3RhcnQvZGlzdC9lcy1tb2R1bGUvbGFuZ1JlZ2lvbk1hcC5qc1xuLy8gbW9kdWxlIGlkID0gMTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEiLCJ2YXIgcmVnaW9uRGF5TWFwID0ge1xuICAgIEFHOiAwLFxuICAgIEFURzogMCxcbiAgICAyODogMCxcbiAgICBBUjogMCxcbiAgICBBUkc6IDAsXG4gICAgMzI6IDAsXG4gICAgQVM6IDAsXG4gICAgQVNNOiAwLFxuICAgIDE2OiAwLFxuICAgIEFVOiAwLFxuICAgIEFVUzogMCxcbiAgICAzNjogMCxcbiAgICBCUjogMCxcbiAgICBCUkE6IDAsXG4gICAgNzY6IDAsXG4gICAgQlM6IDAsXG4gICAgQkhTOiAwLFxuICAgIDQ0OiAwLFxuICAgIEJUOiAwLFxuICAgIEJUTjogMCxcbiAgICA2NDogMCxcbiAgICBCVzogMCxcbiAgICBCV0E6IDAsXG4gICAgNzI6IDAsXG4gICAgQlo6IDAsXG4gICAgQkxaOiAwLFxuICAgIDg0OiAwLFxuICAgIENBOiAwLFxuICAgIENBTjogMCxcbiAgICAxMjQ6IDAsXG4gICAgQ046IDAsXG4gICAgQ0hOOiAwLFxuICAgIDE1NjogMCxcbiAgICBDTzogMCxcbiAgICBDT0w6IDAsXG4gICAgMTcwOiAwLFxuICAgIERNOiAwLFxuICAgIERNQTogMCxcbiAgICAyMTI6IDAsXG4gICAgRE86IDAsXG4gICAgRE9NOiAwLFxuICAgIDIxNDogMCxcbiAgICBFVDogMCxcbiAgICBFVEg6IDAsXG4gICAgMjMxOiAwLFxuICAgIEdUOiAwLFxuICAgIEdUTTogMCxcbiAgICAzMjA6IDAsXG4gICAgR1U6IDAsXG4gICAgR1VNOiAwLFxuICAgIDMxNjogMCxcbiAgICBISzogMCxcbiAgICBIS0c6IDAsXG4gICAgMzQ0OiAwLFxuICAgIEhOOiAwLFxuICAgIEhORDogMCxcbiAgICAzNDA6IDAsXG4gICAgSUQ6IDAsXG4gICAgSUROOiAwLFxuICAgIDM2MDogMCxcbiAgICBJRTogMCxcbiAgICBJUkw6IDAsXG4gICAgMzcyOiAwLFxuICAgIElMOiAwLFxuICAgIElTUjogMCxcbiAgICAzNzY6IDAsXG4gICAgSU46IDAsXG4gICAgSU5EOiAwLFxuICAgIDM1NjogMCxcbiAgICBKTTogMCxcbiAgICBKQU06IDAsXG4gICAgMzg4OiAwLFxuICAgIEpQOiAwLFxuICAgIEpQTjogMCxcbiAgICAzOTI6IDAsXG4gICAgS0U6IDAsXG4gICAgS0VOOiAwLFxuICAgIDQwNDogMCxcbiAgICBLSDogMCxcbiAgICBLSE06IDAsXG4gICAgMTE2OiAwLFxuICAgIEtSOiAwLFxuICAgIEtPUjogMCxcbiAgICA0MTA6IDAsXG4gICAgTEE6IDAsXG4gICAgTEEwOiAwLFxuICAgIDQxODogMCxcbiAgICBNSDogMCxcbiAgICBNSEw6IDAsXG4gICAgNTg0OiAwLFxuICAgIE1NOiAwLFxuICAgIE1NUjogMCxcbiAgICAxMDQ6IDAsXG4gICAgTU86IDAsXG4gICAgTUFDOiAwLFxuICAgIDQ0NjogMCxcbiAgICBNVDogMCxcbiAgICBNTFQ6IDAsXG4gICAgNDcwOiAwLFxuICAgIE1YOiAwLFxuICAgIE1FWDogMCxcbiAgICA0ODQ6IDAsXG4gICAgTVo6IDAsXG4gICAgTU9aOiAwLFxuICAgIDUwODogMCxcbiAgICBOSTogMCxcbiAgICBOSUM6IDAsXG4gICAgNTU4OiAwLFxuICAgIE5QOiAwLFxuICAgIE5QTDogMCxcbiAgICA1MjQ6IDAsXG4gICAgTlo6IDAsXG4gICAgTlpMOiAwLFxuICAgIDU1NDogMCxcbiAgICBQQTogMCxcbiAgICBQQU46IDAsXG4gICAgNTkxOiAwLFxuICAgIFBFOiAwLFxuICAgIFBFUjogMCxcbiAgICA2MDQ6IDAsXG4gICAgUEg6IDAsXG4gICAgUEhMOiAwLFxuICAgIDYwODogMCxcbiAgICBQSzogMCxcbiAgICBQQUs6IDAsXG4gICAgNTg2OiAwLFxuICAgIFBSOiAwLFxuICAgIFBSSTogMCxcbiAgICA2MzA6IDAsXG4gICAgUFk6IDAsXG4gICAgUFJZOiAwLFxuICAgIDYwMDogMCxcbiAgICBTQTogMCxcbiAgICBTQVU6IDAsXG4gICAgNjgyOiAwLFxuICAgIFNHOiAwLFxuICAgIFNHUDogMCxcbiAgICA3MDI6IDAsXG4gICAgU1Y6IDAsXG4gICAgU0xWOiAwLFxuICAgIDIyMjogMCxcbiAgICBUSDogMCxcbiAgICBUSEE6IDAsXG4gICAgNzY0OiAwLFxuICAgIFROOiAwLFxuICAgIFRVTjogMCxcbiAgICA3ODg6IDAsXG4gICAgVFQ6IDAsXG4gICAgVFRPOiAwLFxuICAgIDc4MDogMCxcbiAgICBUVzogMCxcbiAgICBUV046IDAsXG4gICAgMTU4OiAwLFxuICAgIFVNOiAwLFxuICAgIFVNSTogMCxcbiAgICA1ODE6IDAsXG4gICAgVVM6IDAsXG4gICAgVVNBOiAwLFxuICAgIDg0MDogMCxcbiAgICBWRTogMCxcbiAgICBWRU46IDAsXG4gICAgODYyOiAwLFxuICAgIFZJOiAwLFxuICAgIFZJUjogMCxcbiAgICA4NTA6IDAsXG4gICAgV1M6IDAsXG4gICAgV1NNOiAwLFxuICAgIDg4MjogMCxcbiAgICBZRTogMCxcbiAgICBZRU06IDAsXG4gICAgODg3OiAwLFxuICAgIFpBOiAwLFxuICAgIFpBRjogMCxcbiAgICA3MTA6IDAsXG4gICAgWlc6IDAsXG4gICAgWldFOiAwLFxuICAgIDcxNjogMCxcbiAgICBBRTogNixcbiAgICBBUkU6IDYsXG4gICAgNzg0OiA2LFxuICAgIEFGOiA2LFxuICAgIEFGRzogNixcbiAgICA0OiA2LFxuICAgIEJIOiA2LFxuICAgIEJIUjogNixcbiAgICA0ODogNixcbiAgICBESjogNixcbiAgICBESkk6IDYsXG4gICAgMjYyOiA2LFxuICAgIERaOiA2LFxuICAgIERaQTogNixcbiAgICAxMjogNixcbiAgICBFRzogNixcbiAgICBFR1k6IDYsXG4gICAgODE4OiA2LFxuICAgIElROiA2LFxuICAgIElSUTogNixcbiAgICAzNjg6IDYsXG4gICAgSVI6IDYsXG4gICAgSVJOOiA2LFxuICAgIDM2NDogNixcbiAgICBKTzogNixcbiAgICBKT1I6IDYsXG4gICAgNDAwOiA2LFxuICAgIEtXOiA2LFxuICAgIEtXVDogNixcbiAgICA0MTQ6IDYsXG4gICAgTFk6IDYsXG4gICAgTEJZOiA2LFxuICAgIDQzNDogNixcbiAgICBNQTogNixcbiAgICBNQVI6IDYsXG4gICAgNTA0OiA2LFxuICAgIE9NOiA2LFxuICAgIE9NTjogNixcbiAgICA1MTI6IDYsXG4gICAgUUE6IDYsXG4gICAgUUFUOiA2LFxuICAgIDYzNDogNixcbiAgICBTRDogNixcbiAgICBTRE46IDYsXG4gICAgNzI5OiA2LFxuICAgIFNZOiA2LFxuICAgIFNZUjogNixcbiAgICA3NjA6IDYsXG4gICAgQkQ6IDUsXG4gICAgQkdEOiA1LFxuICAgIDUwOiA1LFxuICAgIE1WOiA1LFxuICAgIE1EVjogNSxcbiAgICA0NjI6IDVcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHJlZ2lvbkRheU1hcDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlZ2lvbkRheU1hcC5qcy5tYXBcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3dlZWtzdGFydC9kaXN0L2VzLW1vZHVsZS9yZWdpb25EYXlNYXAuanNcbi8vIG1vZHVsZSBpZCA9IDE4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJiai1tYXNrcyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmNvbnN0IGlzTnVtYmVyUmVnZXggPSAvXlxcZCskL1xuY29uc3QgaXNXaGl0ZXNwYWNlUmVnZXggPSAvXFxzL1xuY29uc3QgcHVuY3R1YXRpb25MaXN0ID0gJyFcIiMkJSZcXCcoKSorLC0uLzo7PD0+P0BbXV5fYHt8fX4nXG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGdpdmVuIHN0cmluZyBpcyBpbiBsb3dlciBjYXNlXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICovXG5jb25zdCBpc0xvd2VyQ2FzZSA9IHN0ciA9PiB7XG4gIHJldHVybiBzdHIgPT0gc3RyLnRvTG93ZXJDYXNlKCkgJiYgc3RyICE9IHN0ci50b1VwcGVyQ2FzZSgpXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGdpdmVuIHN0cmluZyBpcyBpbiB1cHBlciBjYXNlXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICovXG5jb25zdCBpc1VwcGVyQ2FzZSA9IHN0ciA9PiB7XG4gIHJldHVybiBzdHIgPT0gc3RyLnRvVXBwZXJDYXNlKCkgJiYgc3RyICE9IHN0ci50b0xvd2VyQ2FzZSgpXG59XG5cbmNvbnN0IHBhc3NPclRocm93RXJyb3IgPSAobG9vc2UsIHJldCwgaSwgc3RyKSA9PiB7XG4gIGlmICghbG9vc2UpIHtcbiAgICBjb25zdCBjaGFyID0gc3RyLmNoYXJBdChpKVxuICAgIGNvbnN0IHBvcyA9IGkgKyAxXG4gICAgdGhyb3cge1xuICAgICAgbmFtZTogJ1N0cmluZ01hc2tFcnJvcicsXG4gICAgICBtZXNzYWdlOiBgU3RyaW5nTWFza0Vycm9yOiBlcnJvciBhcHBseWluZyBtYXNrIGF0IHBvc2l0aW9uIFwiJHtwb3N9XCIgLCBjaGFyIFwiJHtjaGFyfVwiYCxcbiAgICAgIHBvcyxcbiAgICAgIGNoYXJcbiAgICB9XG4gIH0gZWxzZSByZXRbaV0gPSAnICdcbn1cblxuLyoqXG4gKiBOdW1iZXJNYXNrXG4gKlxuICogQSBqYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIGZvciBCQmogbnVtYmVycyBtYXNraW5nXG4gKlxuICogQGF1dGhvciBIeXlhbiBBYm8gRmFraGVyIDxoYWJvZmFraGVyQGJhc2lzLmNvbT5cbiAqL1xuY2xhc3MgU3RyaW5nTWFzayB7XG4gIC8qKlxuICAgKiBNYXNrIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCB0aGUgZ2l2ZW4gbWFzayBhY2NvcmRpbmcgdG8gQkJqIHJ1bGVzXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgdGhlIHN0cmluZyB0byBtYXNrXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtYXNrIHRoZSBtYXNrIHRvIHVzZSBmb3IgZm9ybWF0dGluZ1xuICAgKiBAcGFyYW0ge0Jvb2xlYW59IFtsb29zZT10cnVlXSB3aGVuIHRydWUgLCBlcnJvcnMgd2lsbCBiZSBpZ25vcmVkIGFuZCB0aGUgbWV0aG9kIHdpbGwgdHJ5IGF0IGFwcGx5IHRoZSBtYXNrXG4gICAqICAgICAgICAgICAgICAgIGFueXdheSAsIG90aGVyd2lzZSBpdCB3aWxsIHN0b3AgYXQgZmlyc3QgZXJyb3IgYW5kIHRocm93IGl0LlxuICAgKiBcbiAgICogQHRocm93cyB7TWFza0lzVG9vU2hvcnRFcnJvcn1cbiAgICogQHRocm93cyB7U3RyaW5nTWFza0Vycm9yfVxuICAgKiBAdGhyb3dzIHtNYXNrRXJyb3J9XG4gICAqIFxuICAgKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgbWFza2VkIHN0cmluZ1xuICAgKi9cbiAgc3RhdGljIG1hc2soc3RyLCBtYXNrLCBsb29zZSA9IHRydWUpIHtcbiAgICBzdHIgPSBTdHJpbmcoc3RyKVxuICAgIG1hc2sgPSBTdHJpbmcobWFzaylcbiAgICBjb25zdCBtYXNrTGVuID0gbWFzay5sZW5ndGhcbiAgICBjb25zdCBzdHJMZW4gPSBzdHIubGVuZ3RoXG5cbiAgICBpZiAoc3RyTGVuID4gbWFza0xlbikge1xuICAgICAgaWYgKGxvb3NlKSByZXR1cm4gc3RyXG4gICAgICAvLyBmcmllbmRseSBzaWxlbnQgZmFpbFxuICAgICAgZWxzZVxuICAgICAgICB0aHJvdyB7XG4gICAgICAgICAgbmFtZTogJ01hc2tJc1Rvb1Nob3J0RXJyb3InLFxuICAgICAgICAgIG1lc3NhZ2U6IGBNYXNrSXNUb29TaG9ydEVycm9yOiBNYXNrIGlzIHNob3J0ZXIgdGhhbiB0aGUgcGFzc2VkIHN0cmluZ2BcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHJldCA9IG5ldyBBcnJheShtYXNrTGVuKVxuICAgIGxldCBwb3MgPSAwIC8vIHRvIGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIHN0clxuICAgIGxldCBtYXNrQnl0ZSA9ICcnXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hc2tMZW47IGkrKykge1xuICAgICAgbWFza0J5dGUgPSBtYXNrLmNoYXJBdChpKVxuICAgICAgc3dpdGNoIChtYXNrQnl0ZSkge1xuICAgICAgICBjYXNlICdYJzogLy8gbWF0Y2ggYW55IGNoYXJhY3RlclxuICAgICAgICAgIHJldFtpXSA9IHBvcyA8IHN0ckxlbiA/IHN0ci5jaGFyQXQocG9zKSA6ICcgJ1xuICAgICAgICAgICsrcG9zXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICdBJzogLy8gbWF0Y2ggbGV0dGVyOyBmb3JjZSB1cHBlciBjYXNlXG4gICAgICAgICAgaWYgKHBvcyA8IHN0ckxlbikge1xuICAgICAgICAgICAgY29uc3QgYnl0ZSA9IHN0ci5jaGFyQXQocG9zKVxuICAgICAgICAgICAgaWYgKGlzVXBwZXJDYXNlKGJ5dGUpKSByZXRbaV0gPSBieXRlXG4gICAgICAgICAgICBlbHNlIGlmIChpc0xvd2VyQ2FzZShieXRlKSkgcmV0W2ldID0gYnl0ZS50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICBlbHNlIHBhc3NPclRocm93RXJyb3IobG9vc2UsIHJldCwgaSwgc3RyKVxuICAgICAgICAgIH0gZWxzZSByZXRbaV0gPSAnICdcbiAgICAgICAgICArK3Bvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnYSc6IC8vIG1hdGNoIGxldHRlclxuICAgICAgICAgIGlmIChwb3MgPCBzdHJMZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGJ5dGUgPSBzdHIuY2hhckF0KHBvcylcbiAgICAgICAgICAgIGlmIChpc1VwcGVyQ2FzZShieXRlKSB8fCBpc0xvd2VyQ2FzZShieXRlKSkgcmV0W2ldID0gYnl0ZVxuICAgICAgICAgICAgZWxzZSBwYXNzT3JUaHJvd0Vycm9yKGxvb3NlLCByZXQsIGksIHN0cilcbiAgICAgICAgICB9IGVsc2UgcmV0W2ldID0gJyAnXG4gICAgICAgICAgKytwb3NcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICcwJzogLy8gbWF0Y2ggZGlnaXRcbiAgICAgICAgICBpZiAocG9zIDwgc3RyTGVuKSB7XG4gICAgICAgICAgICBjb25zdCBieXRlID0gc3RyLmNoYXJBdChwb3MpXG4gICAgICAgICAgICBpZiAoaXNOdW1iZXJSZWdleC50ZXN0KGJ5dGUpKSByZXRbaV0gPSBieXRlXG4gICAgICAgICAgICBlbHNlIHBhc3NPclRocm93RXJyb3IobG9vc2UsIHJldCwgaSwgc3RyKVxuICAgICAgICAgIH0gZWxzZSByZXRbaV0gPSAnICdcbiAgICAgICAgICArK3Bvc1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ1onOiAvLyBtYXRjaCBsZXR0ZXIgb3IgZGlnaXQ7IGZvcmNlIHVwcGVyIGNhc2VcbiAgICAgICAgICBpZiAocG9zIDwgc3RyTGVuKSB7XG4gICAgICAgICAgICBjb25zdCBieXRlID0gc3RyLmNoYXJBdChwb3MpXG4gICAgICAgICAgICBpZiAoaXNVcHBlckNhc2UoYnl0ZSkgfHwgaXNOdW1iZXJSZWdleC50ZXN0KGJ5dGUpKSByZXRbaV0gPSBieXRlXG4gICAgICAgICAgICBlbHNlIGlmIChpc0xvd2VyQ2FzZShieXRlKSkgcmV0W2ldID0gYnl0ZS50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICBlbHNlIHBhc3NPclRocm93RXJyb3IobG9vc2UsIHJldCwgaSwgc3RyKVxuICAgICAgICAgIH0gZWxzZSByZXRbaV0gPSAnICdcbiAgICAgICAgICArK3Bvc1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3onOiAvLyBtYXRjaCBsZXR0ZXIgb3IgZGlnaXRcbiAgICAgICAgICBpZiAocG9zIDwgc3RyTGVuKSB7XG4gICAgICAgICAgICBjb25zdCBieXRlID0gc3RyLmNoYXJBdChwb3MpXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGlzVXBwZXJDYXNlKGJ5dGUpIHx8XG4gICAgICAgICAgICAgIGlzTG93ZXJDYXNlKGJ5dGUpIHx8XG4gICAgICAgICAgICAgIGlzTnVtYmVyUmVnZXgudGVzdChieXRlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICByZXRbaV0gPSBieXRlXG4gICAgICAgICAgICBlbHNlIHBhc3NPclRocm93RXJyb3IobG9vc2UsIHJldCwgaSwgc3RyKVxuICAgICAgICAgIH0gZWxzZSByZXRbaV0gPSAnICdcbiAgICAgICAgICArK3Bvc1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdVJzogLy8gbWF0Y2ggbGV0dGVyIChmb3JjZSB1cHBlciBjYXNlKSwgZGlnaXQsIHdoaXRlc3BhY2Ugb3IgcHVuY3R1YXRpb24uXG4gICAgICAgICAgaWYgKHBvcyA8IHN0ckxlbikge1xuICAgICAgICAgICAgY29uc3QgYnl0ZSA9IHN0ci5jaGFyQXQocG9zKVxuICAgICAgICAgICAgaWYgKGlzTG93ZXJDYXNlKGJ5dGUpKSByZXRbaV0gPSBieXRlLnRvVXBwZXJDYXNlKClcbiAgICAgICAgICAgIGVsc2UgaWYgKFxuICAgICAgICAgICAgICBpc1VwcGVyQ2FzZShieXRlKSB8fFxuICAgICAgICAgICAgICBpc051bWJlclJlZ2V4LnRlc3QoYnl0ZSkgfHxcbiAgICAgICAgICAgICAgaXNXaGl0ZXNwYWNlUmVnZXgudGVzdChieXRlKSB8fFxuICAgICAgICAgICAgICBwdW5jdHVhdGlvbkxpc3QuaW5kZXhPZihieXRlKSA+IC0xXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIHJldFtpXSA9IGJ5dGVcbiAgICAgICAgICAgIGVsc2UgcGFzc09yVGhyb3dFcnJvcihsb29zZSwgcmV0LCBpLCBzdHIpXG4gICAgICAgICAgfSBlbHNlIHJldFtpXSA9ICcgJ1xuICAgICAgICAgICsrcG9zXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXRbaV0gPSBtYXNrQnl0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBvcyA8IHN0ckxlbikge1xuICAgICAgaWYgKCFsb29zZSkge1xuICAgICAgICB0aHJvdyB7IG5hbWU6ICdNYXNrRXJyb3InLCBtZXNzYWdlOiAnTWFzayBjYW5ub3QgYmUgYXBwbGllZCcgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXQuam9pbignJylcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTdHJpbmdNYXNrXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvU3RyaW5nTWFzay9TdHJpbmdNYXNrLmpzIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJiai1tYXNrcyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmltcG9ydCBUeXBlcyBmcm9tICcuL1R5cGVzJ1xuXG5leHBvcnQgZGVmYXVsdCBUeXBlc1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL1R5cGVzL2luZGV4LmpzIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJiai1tYXNrcyBsaWIuXG4gKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmltcG9ydCBOdW1iZXJNYXNrIGZyb20gJy4uL051bWJlck1hc2snXG5pbXBvcnQgRGF0ZU1hc2sgZnJvbSAnLi4vRGF0ZU1hc2snXG5pbXBvcnQgU3RyaW5nTWFzayBmcm9tICcuLi9TdHJpbmdNYXNrJ1xuXG4vKipcbiAqIFR5cGVzXG4gKlxuICogQkJqIG1hc2tzIGZhY3RvcnlcbiAqXG4gKiBAYXV0aG9yIEh5eWFuIEFibyBGYWtoZXIgPGhhYm9mYWtoZXJAYmFzaXMuY29tPlxuICovXG5jbGFzcyBUeXBlcyB7XG4gIC8qKlxuICAgKiBNYXNrIHRoZSBnaXZlbiBudW1iZXIgd2l0aCB0aGUgZ2l2ZW4gbWFzayBhY2NvcmRpbmcgdG8gQkJqIHJ1bGVzXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBudW1iZXIgdGhlIG51bWJlciB0byBmb3JtYXRcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1hc2sgdGhlIG1hc2sgdG8gdXNlIGZvciBmb3JtYXR0aW5nXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZ3JvdXBpbmdTZXBhcmF0b3I9LF0gLSBhIGNoYXIgd2hpY2ggd2lsbCBiZSB1c2VkIGFzIGEgZ3JvdXBpbmcgc2VwYXJhdG9yXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZGVjaW1hbFNlcGFyYXRvcj0uXSAgLSBhIGNoYXIgd2hpY2ggd2lsbCBiZSB1c2VkIGFzIGEgZGVjaW1hbCBzZXBhcmF0b3JcbiAgICogQHBhcmFtIHtCb29sZWFufSBbZm9yY2VUcmFpbGluZ1plcm9zPWZhbHNlXSAtIEFmZmVjdHMgdGhlIG91dHB1dCBieSBzd2l0Y2hpbmcgdGhlIHdheSBhIG1hc2sgd2l0aCBcIiNcIiBjaGFyYWN0ZXJzIGluIHRoZSB0cmFpbGluZyBwb3NpdGlvbnMgaXMgZmlsbGVkLlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZXhhbXBsZSwgdGhlIGZ1bmN0aW9uIGBOdW1iZXJNYXNrLm1hc2soLjEwOlwiIy4jI1wiKWAgcmV0dXJucyBgIC4xMGAgaW5zdGVhZCBvZiBgIC4xIGBcbiAgICogQHBhcmFtIHtCb29sZWFufSBbbG9vc2U9dHJ1ZV0gd2hlbiB0cnVlICwgZXJyb3JzIHdpbGwgYmUgaWdub3JlZCBhbmQgdGhlIG1ldGhvZCB3aWxsIHRyeSBhdCBhcHBseSB0aGUgbWFza1xuICAgKiAgICAgICAgICAgICAgICBhbnl3YXkgLCBvdGhlcndpc2UgaXQgd2lsbCBzdG9wIGF0IGZpcnN0IGVycm9yIGFuZCB0aHJvdyBpdC5cbiAgICpcbiAgICogQHJldHVybnMge1N0cmluZ30gdGhlIG1hc2tlZCBudW1iZXJcbiAgICovXG4gIHN0YXRpYyBudW1iZXIoXG4gICAgbnVtYmVyLFxuICAgIG1hc2ssXG4gICAgZ3JvdXBpbmdTZXBhcmF0b3IgPSAnLCcsXG4gICAgZGVjaW1hbFNlcGFyYXRvciA9ICcuJyxcbiAgICBmb3JjZVRyYWlsaW5nWmVyb3MgPSBmYWxzZSxcbiAgICBsb29zZSA9IHRydWVcbiAgKSB7XG4gICAgcmV0dXJuIE51bWJlck1hc2subWFzayhcbiAgICAgIG51bWJlcixcbiAgICAgIG1hc2ssXG4gICAgICBncm91cGluZ1NlcGFyYXRvcixcbiAgICAgIGRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICBmb3JjZVRyYWlsaW5nWmVyb3MsXG4gICAgICBsb29zZVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXNrIGEgZGF0ZSBhY2NvcmRpbmcgdG8gYmJqIG1hc2tpbmcgcnVsZXNcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IGRhdGUgZGF0ZSBhcyBhIHN0cmluZ1xuICAgKiBAcGFyYW0ge1N0cmluZ30gbWFzayBtYXNrIGFzIGEgc3RyaW5nXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbbG9jYWxlPUJyb3dzZXIncyBsb2NhbGVdIHRoZSBsYW5ndWFnZSB0byB1c2UgZXgoZW4tVVMpLiBkZWZhdWx0IGlzIHRvIHRoZSBzeXN0ZW0gbGFuZ3VhZ2VcbiAgICogQHBhcmFtIHtTdHJpbmd9IFt0aW1lem9uZT1TeXN0ZW0gdGltZXpvbmVdIHRoZSB0aW1lIHpvbmUgZGVzY3JpcHRvciAoZS5nLiBBbWVyaWNhL0xvc19BbmdlbGVzKS4gZGVmYXVsdCB0byB0aGUgc3lzdGVtXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lem9uZVxuICAgKlxuICAgKiBAcmV0dXJuIHtTdHJpbmd9IG51bWJlciBtYXNrZWQgd2l0aCB0aGUgZ2l2ZW4gbWFza1xuICAgKi9cbiAgc3RhdGljIGRhdGUoZGF0ZSwgbWFzaywgbG9jYWxlLCB0aW1lem9uZSkge1xuICAgIHJldHVybiBEYXRlTWFzay5tYXNrKGRhdGUsIG1hc2ssIGxvY2FsZSwgdGltZXpvbmUpXG4gIH1cblxuICAvKipcbiAgICogTWFzayB0aGUgZ2l2ZW4gc3RyaW5nIHdpdGggdGhlIGdpdmVuIG1hc2sgYWNjb3JkaW5nIHRvIEJCaiBydWxlc1xuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gc3RyIHRoZSBzdHJpbmcgdG8gbWFza1xuICAgKiBAcGFyYW0ge1N0cmluZ30gbWFzayB0aGUgbWFzayB0byB1c2UgZm9yIGZvcm1hdHRpbmdcbiAgICogQHBhcmFtIHtCb29sZWFufSBbbG9vc2U9dHJ1ZV0gd2hlbiB0cnVlICwgZXJyb3JzIHdpbGwgYmUgaWdub3JlZCBhbmQgdGhlIG1ldGhvZCB3aWxsIHRyeSBhdCBhcHBseSB0aGUgbWFza1xuICAgKiAgICAgICAgICAgICAgICBhbnl3YXkgLCBvdGhlcndpc2UgaXQgd2lsbCBzdG9wIGF0IGZpcnN0IGVycm9yIGFuZCB0aHJvdyBpdC5cbiAgICpcbiAgICogQHRocm93cyB7TWFza0lzVG9vU2hvcnRFcnJvcn1cbiAgICogQHRocm93cyB7U3RyaW5nTWFza0Vycm9yfVxuICAgKiBAdGhyb3dzIHtNYXNrRXJyb3J9XG4gICAqXG4gICAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBtYXNrZWQgc3RyaW5nXG4gICAqL1xuICBzdGF0aWMgc3RyaW5nKHN0ciwgbWFzaywgbG9vc2UgPSB0cnVlKSB7XG4gICAgcmV0dXJuIFN0cmluZ01hc2subWFzayhzdHIsIG1hc2ssIGxvb3NlKVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFR5cGVzXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvVHlwZXMvVHlwZXMuanMiLCIvKiBmbGF0cGlja3IgdjQuNi4zLCBAbGljZW5zZSBNSVQgKi9cbihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCkgOlxuICAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShmYWN0b3J5KSA6XG4gICAgKGdsb2JhbCA9IGdsb2JhbCB8fCBzZWxmLCBnbG9iYWwuZmxhdHBpY2tyID0gZmFjdG9yeSgpKTtcbn0odGhpcywgZnVuY3Rpb24gKCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlXHJcbiAgICB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZVxyXG4gICAgTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuXHJcbiAgICBUSElTIENPREUgSVMgUFJPVklERUQgT04gQU4gKkFTIElTKiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXHJcbiAgICBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVEXHJcbiAgICBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLFxyXG4gICAgTUVSQ0hBTlRBQkxJVFkgT1IgTk9OLUlORlJJTkdFTUVOVC5cclxuXHJcbiAgICBTZWUgdGhlIEFwYWNoZSBWZXJzaW9uIDIuMCBMaWNlbnNlIGZvciBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcclxuICAgIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcblxyXG4gICAgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdDtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG4gICAgfTtcblxuICAgIHZhciBIT09LUyA9IFtcbiAgICAgICAgXCJvbkNoYW5nZVwiLFxuICAgICAgICBcIm9uQ2xvc2VcIixcbiAgICAgICAgXCJvbkRheUNyZWF0ZVwiLFxuICAgICAgICBcIm9uRGVzdHJveVwiLFxuICAgICAgICBcIm9uS2V5RG93blwiLFxuICAgICAgICBcIm9uTW9udGhDaGFuZ2VcIixcbiAgICAgICAgXCJvbk9wZW5cIixcbiAgICAgICAgXCJvblBhcnNlQ29uZmlnXCIsXG4gICAgICAgIFwib25SZWFkeVwiLFxuICAgICAgICBcIm9uVmFsdWVVcGRhdGVcIixcbiAgICAgICAgXCJvblllYXJDaGFuZ2VcIixcbiAgICAgICAgXCJvblByZUNhbGVuZGFyUG9zaXRpb25cIixcbiAgICBdO1xuICAgIHZhciBkZWZhdWx0cyA9IHtcbiAgICAgICAgX2Rpc2FibGU6IFtdLFxuICAgICAgICBfZW5hYmxlOiBbXSxcbiAgICAgICAgYWxsb3dJbnB1dDogZmFsc2UsXG4gICAgICAgIGFsdEZvcm1hdDogXCJGIGosIFlcIixcbiAgICAgICAgYWx0SW5wdXQ6IGZhbHNlLFxuICAgICAgICBhbHRJbnB1dENsYXNzOiBcImZvcm0tY29udHJvbCBpbnB1dFwiLFxuICAgICAgICBhbmltYXRlOiB0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKFwiTVNJRVwiKSA9PT0gLTEsXG4gICAgICAgIGFyaWFEYXRlRm9ybWF0OiBcIkYgaiwgWVwiLFxuICAgICAgICBjbGlja09wZW5zOiB0cnVlLFxuICAgICAgICBjbG9zZU9uU2VsZWN0OiB0cnVlLFxuICAgICAgICBjb25qdW5jdGlvbjogXCIsIFwiLFxuICAgICAgICBkYXRlRm9ybWF0OiBcIlktbS1kXCIsXG4gICAgICAgIGRlZmF1bHRIb3VyOiAxMixcbiAgICAgICAgZGVmYXVsdE1pbnV0ZTogMCxcbiAgICAgICAgZGVmYXVsdFNlY29uZHM6IDAsXG4gICAgICAgIGRpc2FibGU6IFtdLFxuICAgICAgICBkaXNhYmxlTW9iaWxlOiBmYWxzZSxcbiAgICAgICAgZW5hYmxlOiBbXSxcbiAgICAgICAgZW5hYmxlU2Vjb25kczogZmFsc2UsXG4gICAgICAgIGVuYWJsZVRpbWU6IGZhbHNlLFxuICAgICAgICBlcnJvckhhbmRsZXI6IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBjb25zb2xlLndhcm4oZXJyKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0V2VlazogZnVuY3Rpb24gKGdpdmVuRGF0ZSkge1xuICAgICAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShnaXZlbkRhdGUuZ2V0VGltZSgpKTtcbiAgICAgICAgICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICAgICAgICAvLyBUaHVyc2RheSBpbiBjdXJyZW50IHdlZWsgZGVjaWRlcyB0aGUgeWVhci5cbiAgICAgICAgICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIDMgLSAoKGRhdGUuZ2V0RGF5KCkgKyA2KSAlIDcpKTtcbiAgICAgICAgICAgIC8vIEphbnVhcnkgNCBpcyBhbHdheXMgaW4gd2VlayAxLlxuICAgICAgICAgICAgdmFyIHdlZWsxID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCAwLCA0KTtcbiAgICAgICAgICAgIC8vIEFkanVzdCB0byBUaHVyc2RheSBpbiB3ZWVrIDEgYW5kIGNvdW50IG51bWJlciBvZiB3ZWVrcyBmcm9tIGRhdGUgdG8gd2VlazEuXG4gICAgICAgICAgICByZXR1cm4gKDEgK1xuICAgICAgICAgICAgICAgIE1hdGgucm91bmQoKChkYXRlLmdldFRpbWUoKSAtIHdlZWsxLmdldFRpbWUoKSkgLyA4NjQwMDAwMCAtXG4gICAgICAgICAgICAgICAgICAgIDMgK1xuICAgICAgICAgICAgICAgICAgICAoKHdlZWsxLmdldERheSgpICsgNikgJSA3KSkgL1xuICAgICAgICAgICAgICAgICAgICA3KSk7XG4gICAgICAgIH0sXG4gICAgICAgIGhvdXJJbmNyZW1lbnQ6IDEsXG4gICAgICAgIGlnbm9yZWRGb2N1c0VsZW1lbnRzOiBbXSxcbiAgICAgICAgaW5saW5lOiBmYWxzZSxcbiAgICAgICAgbG9jYWxlOiBcImRlZmF1bHRcIixcbiAgICAgICAgbWludXRlSW5jcmVtZW50OiA1LFxuICAgICAgICBtb2RlOiBcInNpbmdsZVwiLFxuICAgICAgICBtb250aFNlbGVjdG9yVHlwZTogXCJkcm9wZG93blwiLFxuICAgICAgICBuZXh0QXJyb3c6IFwiPHN2ZyB2ZXJzaW9uPScxLjEnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgeG1sbnM6eGxpbms9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnIHZpZXdCb3g9JzAgMCAxNyAxNyc+PGc+PC9nPjxwYXRoIGQ9J00xMy4yMDcgOC40NzJsLTcuODU0IDcuODU0LTAuNzA3LTAuNzA3IDcuMTQ2LTcuMTQ2LTcuMTQ2LTcuMTQ4IDAuNzA3LTAuNzA3IDcuODU0IDcuODU0eicgLz48L3N2Zz5cIixcbiAgICAgICAgbm9DYWxlbmRhcjogZmFsc2UsXG4gICAgICAgIG5vdzogbmV3IERhdGUoKSxcbiAgICAgICAgb25DaGFuZ2U6IFtdLFxuICAgICAgICBvbkNsb3NlOiBbXSxcbiAgICAgICAgb25EYXlDcmVhdGU6IFtdLFxuICAgICAgICBvbkRlc3Ryb3k6IFtdLFxuICAgICAgICBvbktleURvd246IFtdLFxuICAgICAgICBvbk1vbnRoQ2hhbmdlOiBbXSxcbiAgICAgICAgb25PcGVuOiBbXSxcbiAgICAgICAgb25QYXJzZUNvbmZpZzogW10sXG4gICAgICAgIG9uUmVhZHk6IFtdLFxuICAgICAgICBvblZhbHVlVXBkYXRlOiBbXSxcbiAgICAgICAgb25ZZWFyQ2hhbmdlOiBbXSxcbiAgICAgICAgb25QcmVDYWxlbmRhclBvc2l0aW9uOiBbXSxcbiAgICAgICAgcGx1Z2luczogW10sXG4gICAgICAgIHBvc2l0aW9uOiBcImF1dG9cIixcbiAgICAgICAgcG9zaXRpb25FbGVtZW50OiB1bmRlZmluZWQsXG4gICAgICAgIHByZXZBcnJvdzogXCI8c3ZnIHZlcnNpb249JzEuMScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB4bWxuczp4bGluaz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluaycgdmlld0JveD0nMCAwIDE3IDE3Jz48Zz48L2c+PHBhdGggZD0nTTUuMjA3IDguNDcxbDcuMTQ2IDcuMTQ3LTAuNzA3IDAuNzA3LTcuODUzLTcuODU0IDcuODU0LTcuODUzIDAuNzA3IDAuNzA3LTcuMTQ3IDcuMTQ2eicgLz48L3N2Zz5cIixcbiAgICAgICAgc2hvcnRoYW5kQ3VycmVudE1vbnRoOiBmYWxzZSxcbiAgICAgICAgc2hvd01vbnRoczogMSxcbiAgICAgICAgc3RhdGljOiBmYWxzZSxcbiAgICAgICAgdGltZV8yNGhyOiBmYWxzZSxcbiAgICAgICAgd2Vla051bWJlcnM6IGZhbHNlLFxuICAgICAgICB3cmFwOiBmYWxzZVxuICAgIH07XG5cbiAgICB2YXIgZW5nbGlzaCA9IHtcbiAgICAgICAgd2Vla2RheXM6IHtcbiAgICAgICAgICAgIHNob3J0aGFuZDogW1wiU3VuXCIsIFwiTW9uXCIsIFwiVHVlXCIsIFwiV2VkXCIsIFwiVGh1XCIsIFwiRnJpXCIsIFwiU2F0XCJdLFxuICAgICAgICAgICAgbG9uZ2hhbmQ6IFtcbiAgICAgICAgICAgICAgICBcIlN1bmRheVwiLFxuICAgICAgICAgICAgICAgIFwiTW9uZGF5XCIsXG4gICAgICAgICAgICAgICAgXCJUdWVzZGF5XCIsXG4gICAgICAgICAgICAgICAgXCJXZWRuZXNkYXlcIixcbiAgICAgICAgICAgICAgICBcIlRodXJzZGF5XCIsXG4gICAgICAgICAgICAgICAgXCJGcmlkYXlcIixcbiAgICAgICAgICAgICAgICBcIlNhdHVyZGF5XCIsXG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoczoge1xuICAgICAgICAgICAgc2hvcnRoYW5kOiBbXG4gICAgICAgICAgICAgICAgXCJKYW5cIixcbiAgICAgICAgICAgICAgICBcIkZlYlwiLFxuICAgICAgICAgICAgICAgIFwiTWFyXCIsXG4gICAgICAgICAgICAgICAgXCJBcHJcIixcbiAgICAgICAgICAgICAgICBcIk1heVwiLFxuICAgICAgICAgICAgICAgIFwiSnVuXCIsXG4gICAgICAgICAgICAgICAgXCJKdWxcIixcbiAgICAgICAgICAgICAgICBcIkF1Z1wiLFxuICAgICAgICAgICAgICAgIFwiU2VwXCIsXG4gICAgICAgICAgICAgICAgXCJPY3RcIixcbiAgICAgICAgICAgICAgICBcIk5vdlwiLFxuICAgICAgICAgICAgICAgIFwiRGVjXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbG9uZ2hhbmQ6IFtcbiAgICAgICAgICAgICAgICBcIkphbnVhcnlcIixcbiAgICAgICAgICAgICAgICBcIkZlYnJ1YXJ5XCIsXG4gICAgICAgICAgICAgICAgXCJNYXJjaFwiLFxuICAgICAgICAgICAgICAgIFwiQXByaWxcIixcbiAgICAgICAgICAgICAgICBcIk1heVwiLFxuICAgICAgICAgICAgICAgIFwiSnVuZVwiLFxuICAgICAgICAgICAgICAgIFwiSnVseVwiLFxuICAgICAgICAgICAgICAgIFwiQXVndXN0XCIsXG4gICAgICAgICAgICAgICAgXCJTZXB0ZW1iZXJcIixcbiAgICAgICAgICAgICAgICBcIk9jdG9iZXJcIixcbiAgICAgICAgICAgICAgICBcIk5vdmVtYmVyXCIsXG4gICAgICAgICAgICAgICAgXCJEZWNlbWJlclwiLFxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBkYXlzSW5Nb250aDogWzMxLCAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdLFxuICAgICAgICBmaXJzdERheU9mV2VlazogMCxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG50aCkge1xuICAgICAgICAgICAgdmFyIHMgPSBudGggJSAxMDA7XG4gICAgICAgICAgICBpZiAocyA+IDMgJiYgcyA8IDIxKVxuICAgICAgICAgICAgICAgIHJldHVybiBcInRoXCI7XG4gICAgICAgICAgICBzd2l0Y2ggKHMgJSAxMCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwic3RcIjtcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcIm5kXCI7XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJyZFwiO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcInRoXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJhbmdlU2VwYXJhdG9yOiBcIiB0byBcIixcbiAgICAgICAgd2Vla0FiYnJldmlhdGlvbjogXCJXa1wiLFxuICAgICAgICBzY3JvbGxUaXRsZTogXCJTY3JvbGwgdG8gaW5jcmVtZW50XCIsXG4gICAgICAgIHRvZ2dsZVRpdGxlOiBcIkNsaWNrIHRvIHRvZ2dsZVwiLFxuICAgICAgICBhbVBNOiBbXCJBTVwiLCBcIlBNXCJdLFxuICAgICAgICB5ZWFyQXJpYUxhYmVsOiBcIlllYXJcIixcbiAgICAgICAgaG91ckFyaWFMYWJlbDogXCJIb3VyXCIsXG4gICAgICAgIG1pbnV0ZUFyaWFMYWJlbDogXCJNaW51dGVcIixcbiAgICAgICAgdGltZV8yNGhyOiBmYWxzZVxuICAgIH07XG5cbiAgICB2YXIgcGFkID0gZnVuY3Rpb24gKG51bWJlcikgeyByZXR1cm4gKFwiMFwiICsgbnVtYmVyKS5zbGljZSgtMik7IH07XG4gICAgdmFyIGludCA9IGZ1bmN0aW9uIChib29sKSB7IHJldHVybiAoYm9vbCA9PT0gdHJ1ZSA/IDEgOiAwKTsgfTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIGltbWVkaWF0ZSkge1xuICAgICAgICBpZiAoaW1tZWRpYXRlID09PSB2b2lkIDApIHsgaW1tZWRpYXRlID0gZmFsc2U7IH1cbiAgICAgICAgdmFyIHRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgICAgICB0aW1lb3V0ICE9PSBudWxsICYmIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICAgIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKCFpbW1lZGlhdGUpXG4gICAgICAgICAgICAgICAgICAgIGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICAgICAgICB9LCB3YWl0KTtcbiAgICAgICAgICAgIGlmIChpbW1lZGlhdGUgJiYgIXRpbWVvdXQpXG4gICAgICAgICAgICAgICAgZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgdmFyIGFycmF5aWZ5ID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgQXJyYXkgPyBvYmogOiBbb2JqXTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gdG9nZ2xlQ2xhc3MoZWxlbSwgY2xhc3NOYW1lLCBib29sKSB7XG4gICAgICAgIGlmIChib29sID09PSB0cnVlKVxuICAgICAgICAgICAgcmV0dXJuIGVsZW0uY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO1xuICAgICAgICBlbGVtLmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlRWxlbWVudCh0YWcsIGNsYXNzTmFtZSwgY29udGVudCkge1xuICAgICAgICB2YXIgZSA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZyk7XG4gICAgICAgIGNsYXNzTmFtZSA9IGNsYXNzTmFtZSB8fCBcIlwiO1xuICAgICAgICBjb250ZW50ID0gY29udGVudCB8fCBcIlwiO1xuICAgICAgICBlLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTtcbiAgICAgICAgaWYgKGNvbnRlbnQgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIGUudGV4dENvbnRlbnQgPSBjb250ZW50O1xuICAgICAgICByZXR1cm4gZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2xlYXJOb2RlKG5vZGUpIHtcbiAgICAgICAgd2hpbGUgKG5vZGUuZmlyc3RDaGlsZClcbiAgICAgICAgICAgIG5vZGUucmVtb3ZlQ2hpbGQobm9kZS5maXJzdENoaWxkKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZmluZFBhcmVudChub2RlLCBjb25kaXRpb24pIHtcbiAgICAgICAgaWYgKGNvbmRpdGlvbihub2RlKSlcbiAgICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICBlbHNlIGlmIChub2RlLnBhcmVudE5vZGUpXG4gICAgICAgICAgICByZXR1cm4gZmluZFBhcmVudChub2RlLnBhcmVudE5vZGUsIGNvbmRpdGlvbik7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7IC8vIG5vdGhpbmcgZm91bmRcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlTnVtYmVySW5wdXQoaW5wdXRDbGFzc05hbWUsIG9wdHMpIHtcbiAgICAgICAgdmFyIHdyYXBwZXIgPSBjcmVhdGVFbGVtZW50KFwiZGl2XCIsIFwibnVtSW5wdXRXcmFwcGVyXCIpLCBudW1JbnB1dCA9IGNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCBcIm51bUlucHV0IFwiICsgaW5wdXRDbGFzc05hbWUpLCBhcnJvd1VwID0gY3JlYXRlRWxlbWVudChcInNwYW5cIiwgXCJhcnJvd1VwXCIpLCBhcnJvd0Rvd24gPSBjcmVhdGVFbGVtZW50KFwic3BhblwiLCBcImFycm93RG93blwiKTtcbiAgICAgICAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihcIk1TSUUgOS4wXCIpID09PSAtMSkge1xuICAgICAgICAgICAgbnVtSW5wdXQudHlwZSA9IFwibnVtYmVyXCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBudW1JbnB1dC50eXBlID0gXCJ0ZXh0XCI7XG4gICAgICAgICAgICBudW1JbnB1dC5wYXR0ZXJuID0gXCJcXFxcZCpcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0cyAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIG9wdHMpXG4gICAgICAgICAgICAgICAgbnVtSW5wdXQuc2V0QXR0cmlidXRlKGtleSwgb3B0c1trZXldKTtcbiAgICAgICAgd3JhcHBlci5hcHBlbmRDaGlsZChudW1JbnB1dCk7XG4gICAgICAgIHdyYXBwZXIuYXBwZW5kQ2hpbGQoYXJyb3dVcCk7XG4gICAgICAgIHdyYXBwZXIuYXBwZW5kQ2hpbGQoYXJyb3dEb3duKTtcbiAgICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldEV2ZW50VGFyZ2V0KGV2ZW50KSB7XG4gICAgICAgIGlmICh0eXBlb2YgZXZlbnQuY29tcG9zZWRQYXRoID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHZhciBwYXRoID0gZXZlbnQuY29tcG9zZWRQYXRoKCk7XG4gICAgICAgICAgICByZXR1cm4gcGF0aFswXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZXZlbnQudGFyZ2V0O1xuICAgIH1cblxuICAgIHZhciBkb05vdGhpbmcgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB1bmRlZmluZWQ7IH07XG4gICAgdmFyIG1vbnRoVG9TdHIgPSBmdW5jdGlvbiAobW9udGhOdW1iZXIsIHNob3J0aGFuZCwgbG9jYWxlKSB7IHJldHVybiBsb2NhbGUubW9udGhzW3Nob3J0aGFuZCA/IFwic2hvcnRoYW5kXCIgOiBcImxvbmdoYW5kXCJdW21vbnRoTnVtYmVyXTsgfTtcbiAgICB2YXIgcmV2Rm9ybWF0ID0ge1xuICAgICAgICBEOiBkb05vdGhpbmcsXG4gICAgICAgIEY6IGZ1bmN0aW9uIChkYXRlT2JqLCBtb250aE5hbWUsIGxvY2FsZSkge1xuICAgICAgICAgICAgZGF0ZU9iai5zZXRNb250aChsb2NhbGUubW9udGhzLmxvbmdoYW5kLmluZGV4T2YobW9udGhOYW1lKSk7XG4gICAgICAgIH0sXG4gICAgICAgIEc6IGZ1bmN0aW9uIChkYXRlT2JqLCBob3VyKSB7XG4gICAgICAgICAgICBkYXRlT2JqLnNldEhvdXJzKHBhcnNlRmxvYXQoaG91cikpO1xuICAgICAgICB9LFxuICAgICAgICBIOiBmdW5jdGlvbiAoZGF0ZU9iaiwgaG91cikge1xuICAgICAgICAgICAgZGF0ZU9iai5zZXRIb3VycyhwYXJzZUZsb2F0KGhvdXIpKTtcbiAgICAgICAgfSxcbiAgICAgICAgSjogZnVuY3Rpb24gKGRhdGVPYmosIGRheSkge1xuICAgICAgICAgICAgZGF0ZU9iai5zZXREYXRlKHBhcnNlRmxvYXQoZGF5KSk7XG4gICAgICAgIH0sXG4gICAgICAgIEs6IGZ1bmN0aW9uIChkYXRlT2JqLCBhbVBNLCBsb2NhbGUpIHtcbiAgICAgICAgICAgIGRhdGVPYmouc2V0SG91cnMoKGRhdGVPYmouZ2V0SG91cnMoKSAlIDEyKSArXG4gICAgICAgICAgICAgICAgMTIgKiBpbnQobmV3IFJlZ0V4cChsb2NhbGUuYW1QTVsxXSwgXCJpXCIpLnRlc3QoYW1QTSkpKTtcbiAgICAgICAgfSxcbiAgICAgICAgTTogZnVuY3Rpb24gKGRhdGVPYmosIHNob3J0TW9udGgsIGxvY2FsZSkge1xuICAgICAgICAgICAgZGF0ZU9iai5zZXRNb250aChsb2NhbGUubW9udGhzLnNob3J0aGFuZC5pbmRleE9mKHNob3J0TW9udGgpKTtcbiAgICAgICAgfSxcbiAgICAgICAgUzogZnVuY3Rpb24gKGRhdGVPYmosIHNlY29uZHMpIHtcbiAgICAgICAgICAgIGRhdGVPYmouc2V0U2Vjb25kcyhwYXJzZUZsb2F0KHNlY29uZHMpKTtcbiAgICAgICAgfSxcbiAgICAgICAgVTogZnVuY3Rpb24gKF8sIHVuaXhTZWNvbmRzKSB7IHJldHVybiBuZXcgRGF0ZShwYXJzZUZsb2F0KHVuaXhTZWNvbmRzKSAqIDEwMDApOyB9LFxuICAgICAgICBXOiBmdW5jdGlvbiAoZGF0ZU9iaiwgd2Vla051bSwgbG9jYWxlKSB7XG4gICAgICAgICAgICB2YXIgd2Vla051bWJlciA9IHBhcnNlSW50KHdlZWtOdW0pO1xuICAgICAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShkYXRlT2JqLmdldEZ1bGxZZWFyKCksIDAsIDIgKyAod2Vla051bWJlciAtIDEpICogNywgMCwgMCwgMCwgMCk7XG4gICAgICAgICAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgLSBkYXRlLmdldERheSgpICsgbG9jYWxlLmZpcnN0RGF5T2ZXZWVrKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgICB9LFxuICAgICAgICBZOiBmdW5jdGlvbiAoZGF0ZU9iaiwgeWVhcikge1xuICAgICAgICAgICAgZGF0ZU9iai5zZXRGdWxsWWVhcihwYXJzZUZsb2F0KHllYXIpKTtcbiAgICAgICAgfSxcbiAgICAgICAgWjogZnVuY3Rpb24gKF8sIElTT0RhdGUpIHsgcmV0dXJuIG5ldyBEYXRlKElTT0RhdGUpOyB9LFxuICAgICAgICBkOiBmdW5jdGlvbiAoZGF0ZU9iaiwgZGF5KSB7XG4gICAgICAgICAgICBkYXRlT2JqLnNldERhdGUocGFyc2VGbG9hdChkYXkpKTtcbiAgICAgICAgfSxcbiAgICAgICAgaDogZnVuY3Rpb24gKGRhdGVPYmosIGhvdXIpIHtcbiAgICAgICAgICAgIGRhdGVPYmouc2V0SG91cnMocGFyc2VGbG9hdChob3VyKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGk6IGZ1bmN0aW9uIChkYXRlT2JqLCBtaW51dGVzKSB7XG4gICAgICAgICAgICBkYXRlT2JqLnNldE1pbnV0ZXMocGFyc2VGbG9hdChtaW51dGVzKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGo6IGZ1bmN0aW9uIChkYXRlT2JqLCBkYXkpIHtcbiAgICAgICAgICAgIGRhdGVPYmouc2V0RGF0ZShwYXJzZUZsb2F0KGRheSkpO1xuICAgICAgICB9LFxuICAgICAgICBsOiBkb05vdGhpbmcsXG4gICAgICAgIG06IGZ1bmN0aW9uIChkYXRlT2JqLCBtb250aCkge1xuICAgICAgICAgICAgZGF0ZU9iai5zZXRNb250aChwYXJzZUZsb2F0KG1vbnRoKSAtIDEpO1xuICAgICAgICB9LFxuICAgICAgICBuOiBmdW5jdGlvbiAoZGF0ZU9iaiwgbW9udGgpIHtcbiAgICAgICAgICAgIGRhdGVPYmouc2V0TW9udGgocGFyc2VGbG9hdChtb250aCkgLSAxKTtcbiAgICAgICAgfSxcbiAgICAgICAgczogZnVuY3Rpb24gKGRhdGVPYmosIHNlY29uZHMpIHtcbiAgICAgICAgICAgIGRhdGVPYmouc2V0U2Vjb25kcyhwYXJzZUZsb2F0KHNlY29uZHMpKTtcbiAgICAgICAgfSxcbiAgICAgICAgdTogZnVuY3Rpb24gKF8sIHVuaXhNaWxsU2Vjb25kcykge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHBhcnNlRmxvYXQodW5peE1pbGxTZWNvbmRzKSk7XG4gICAgICAgIH0sXG4gICAgICAgIHc6IGRvTm90aGluZyxcbiAgICAgICAgeTogZnVuY3Rpb24gKGRhdGVPYmosIHllYXIpIHtcbiAgICAgICAgICAgIGRhdGVPYmouc2V0RnVsbFllYXIoMjAwMCArIHBhcnNlRmxvYXQoeWVhcikpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICB2YXIgdG9rZW5SZWdleCA9IHtcbiAgICAgICAgRDogXCIoXFxcXHcrKVwiLFxuICAgICAgICBGOiBcIihcXFxcdyspXCIsXG4gICAgICAgIEc6IFwiKFxcXFxkXFxcXGR8XFxcXGQpXCIsXG4gICAgICAgIEg6IFwiKFxcXFxkXFxcXGR8XFxcXGQpXCIsXG4gICAgICAgIEo6IFwiKFxcXFxkXFxcXGR8XFxcXGQpXFxcXHcrXCIsXG4gICAgICAgIEs6IFwiXCIsXG4gICAgICAgIE06IFwiKFxcXFx3KylcIixcbiAgICAgICAgUzogXCIoXFxcXGRcXFxcZHxcXFxcZClcIixcbiAgICAgICAgVTogXCIoLispXCIsXG4gICAgICAgIFc6IFwiKFxcXFxkXFxcXGR8XFxcXGQpXCIsXG4gICAgICAgIFk6IFwiKFxcXFxkezR9KVwiLFxuICAgICAgICBaOiBcIiguKylcIixcbiAgICAgICAgZDogXCIoXFxcXGRcXFxcZHxcXFxcZClcIixcbiAgICAgICAgaDogXCIoXFxcXGRcXFxcZHxcXFxcZClcIixcbiAgICAgICAgaTogXCIoXFxcXGRcXFxcZHxcXFxcZClcIixcbiAgICAgICAgajogXCIoXFxcXGRcXFxcZHxcXFxcZClcIixcbiAgICAgICAgbDogXCIoXFxcXHcrKVwiLFxuICAgICAgICBtOiBcIihcXFxcZFxcXFxkfFxcXFxkKVwiLFxuICAgICAgICBuOiBcIihcXFxcZFxcXFxkfFxcXFxkKVwiLFxuICAgICAgICBzOiBcIihcXFxcZFxcXFxkfFxcXFxkKVwiLFxuICAgICAgICB1OiBcIiguKylcIixcbiAgICAgICAgdzogXCIoXFxcXGRcXFxcZHxcXFxcZClcIixcbiAgICAgICAgeTogXCIoXFxcXGR7Mn0pXCJcbiAgICB9O1xuICAgIHZhciBmb3JtYXRzID0ge1xuICAgICAgICAvLyBnZXQgdGhlIGRhdGUgaW4gVVRDXG4gICAgICAgIFo6IGZ1bmN0aW9uIChkYXRlKSB7IHJldHVybiBkYXRlLnRvSVNPU3RyaW5nKCk7IH0sXG4gICAgICAgIC8vIHdlZWtkYXkgbmFtZSwgc2hvcnQsIGUuZy4gVGh1XG4gICAgICAgIEQ6IGZ1bmN0aW9uIChkYXRlLCBsb2NhbGUsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhbGUud2Vla2RheXMuc2hvcnRoYW5kW2Zvcm1hdHMudyhkYXRlLCBsb2NhbGUsIG9wdGlvbnMpXTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gZnVsbCBtb250aCBuYW1lIGUuZy4gSmFudWFyeVxuICAgICAgICBGOiBmdW5jdGlvbiAoZGF0ZSwgbG9jYWxlLCBvcHRpb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gbW9udGhUb1N0cihmb3JtYXRzLm4oZGF0ZSwgbG9jYWxlLCBvcHRpb25zKSAtIDEsIGZhbHNlLCBsb2NhbGUpO1xuICAgICAgICB9LFxuICAgICAgICAvLyBwYWRkZWQgaG91ciAxLTEyXG4gICAgICAgIEc6IGZ1bmN0aW9uIChkYXRlLCBsb2NhbGUsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiBwYWQoZm9ybWF0cy5oKGRhdGUsIGxvY2FsZSwgb3B0aW9ucykpO1xuICAgICAgICB9LFxuICAgICAgICAvLyBob3VycyB3aXRoIGxlYWRpbmcgemVybyBlLmcuIDAzXG4gICAgICAgIEg6IGZ1bmN0aW9uIChkYXRlKSB7IHJldHVybiBwYWQoZGF0ZS5nZXRIb3VycygpKTsgfSxcbiAgICAgICAgLy8gZGF5ICgxLTMwKSB3aXRoIG9yZGluYWwgc3VmZml4IGUuZy4gMXN0LCAybmRcbiAgICAgICAgSjogZnVuY3Rpb24gKGRhdGUsIGxvY2FsZSkge1xuICAgICAgICAgICAgcmV0dXJuIGxvY2FsZS5vcmRpbmFsICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA/IGRhdGUuZ2V0RGF0ZSgpICsgbG9jYWxlLm9yZGluYWwoZGF0ZS5nZXREYXRlKCkpXG4gICAgICAgICAgICAgICAgOiBkYXRlLmdldERhdGUoKTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gQU0vUE1cbiAgICAgICAgSzogZnVuY3Rpb24gKGRhdGUsIGxvY2FsZSkgeyByZXR1cm4gbG9jYWxlLmFtUE1baW50KGRhdGUuZ2V0SG91cnMoKSA+IDExKV07IH0sXG4gICAgICAgIC8vIHNob3J0aGFuZCBtb250aCBlLmcuIEphbiwgU2VwLCBPY3QsIGV0Y1xuICAgICAgICBNOiBmdW5jdGlvbiAoZGF0ZSwgbG9jYWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gbW9udGhUb1N0cihkYXRlLmdldE1vbnRoKCksIHRydWUsIGxvY2FsZSk7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIHNlY29uZHMgMDAtNTlcbiAgICAgICAgUzogZnVuY3Rpb24gKGRhdGUpIHsgcmV0dXJuIHBhZChkYXRlLmdldFNlY29uZHMoKSk7IH0sXG4gICAgICAgIC8vIHVuaXggdGltZXN0YW1wXG4gICAgICAgIFU6IGZ1bmN0aW9uIChkYXRlKSB7IHJldHVybiBkYXRlLmdldFRpbWUoKSAvIDEwMDA7IH0sXG4gICAgICAgIFc6IGZ1bmN0aW9uIChkYXRlLCBfLCBvcHRpb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5nZXRXZWVrKGRhdGUpO1xuICAgICAgICB9LFxuICAgICAgICAvLyBmdWxsIHllYXIgZS5nLiAyMDE2XG4gICAgICAgIFk6IGZ1bmN0aW9uIChkYXRlKSB7IHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCk7IH0sXG4gICAgICAgIC8vIGRheSBpbiBtb250aCwgcGFkZGVkICgwMS0zMClcbiAgICAgICAgZDogZnVuY3Rpb24gKGRhdGUpIHsgcmV0dXJuIHBhZChkYXRlLmdldERhdGUoKSk7IH0sXG4gICAgICAgIC8vIGhvdXIgZnJvbSAxLTEyIChhbS9wbSlcbiAgICAgICAgaDogZnVuY3Rpb24gKGRhdGUpIHsgcmV0dXJuIChkYXRlLmdldEhvdXJzKCkgJSAxMiA/IGRhdGUuZ2V0SG91cnMoKSAlIDEyIDogMTIpOyB9LFxuICAgICAgICAvLyBtaW51dGVzLCBwYWRkZWQgd2l0aCBsZWFkaW5nIHplcm8gZS5nLiAwOVxuICAgICAgICBpOiBmdW5jdGlvbiAoZGF0ZSkgeyByZXR1cm4gcGFkKGRhdGUuZ2V0TWludXRlcygpKTsgfSxcbiAgICAgICAgLy8gZGF5IGluIG1vbnRoICgxLTMwKVxuICAgICAgICBqOiBmdW5jdGlvbiAoZGF0ZSkgeyByZXR1cm4gZGF0ZS5nZXREYXRlKCk7IH0sXG4gICAgICAgIC8vIHdlZWtkYXkgbmFtZSwgZnVsbCwgZS5nLiBUaHVyc2RheVxuICAgICAgICBsOiBmdW5jdGlvbiAoZGF0ZSwgbG9jYWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLndlZWtkYXlzLmxvbmdoYW5kW2RhdGUuZ2V0RGF5KCldO1xuICAgICAgICB9LFxuICAgICAgICAvLyBwYWRkZWQgbW9udGggbnVtYmVyICgwMS0xMilcbiAgICAgICAgbTogZnVuY3Rpb24gKGRhdGUpIHsgcmV0dXJuIHBhZChkYXRlLmdldE1vbnRoKCkgKyAxKTsgfSxcbiAgICAgICAgLy8gdGhlIG1vbnRoIG51bWJlciAoMS0xMilcbiAgICAgICAgbjogZnVuY3Rpb24gKGRhdGUpIHsgcmV0dXJuIGRhdGUuZ2V0TW9udGgoKSArIDE7IH0sXG4gICAgICAgIC8vIHNlY29uZHMgMC01OVxuICAgICAgICBzOiBmdW5jdGlvbiAoZGF0ZSkgeyByZXR1cm4gZGF0ZS5nZXRTZWNvbmRzKCk7IH0sXG4gICAgICAgIC8vIFVuaXggTWlsbGlzZWNvbmRzXG4gICAgICAgIHU6IGZ1bmN0aW9uIChkYXRlKSB7IHJldHVybiBkYXRlLmdldFRpbWUoKTsgfSxcbiAgICAgICAgLy8gbnVtYmVyIG9mIHRoZSBkYXkgb2YgdGhlIHdlZWtcbiAgICAgICAgdzogZnVuY3Rpb24gKGRhdGUpIHsgcmV0dXJuIGRhdGUuZ2V0RGF5KCk7IH0sXG4gICAgICAgIC8vIGxhc3QgdHdvIGRpZ2l0cyBvZiB5ZWFyIGUuZy4gMTYgZm9yIDIwMTZcbiAgICAgICAgeTogZnVuY3Rpb24gKGRhdGUpIHsgcmV0dXJuIFN0cmluZyhkYXRlLmdldEZ1bGxZZWFyKCkpLnN1YnN0cmluZygyKTsgfVxuICAgIH07XG5cbiAgICB2YXIgY3JlYXRlRGF0ZUZvcm1hdHRlciA9IGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgX2IgPSBfYS5jb25maWcsIGNvbmZpZyA9IF9iID09PSB2b2lkIDAgPyBkZWZhdWx0cyA6IF9iLCBfYyA9IF9hLmwxMG4sIGwxMG4gPSBfYyA9PT0gdm9pZCAwID8gZW5nbGlzaCA6IF9jO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGRhdGVPYmosIGZybXQsIG92ZXJyaWRlTG9jYWxlKSB7XG4gICAgICAgICAgICB2YXIgbG9jYWxlID0gb3ZlcnJpZGVMb2NhbGUgfHwgbDEwbjtcbiAgICAgICAgICAgIGlmIChjb25maWcuZm9ybWF0RGF0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy5mb3JtYXREYXRlKGRhdGVPYmosIGZybXQsIGxvY2FsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZnJtdFxuICAgICAgICAgICAgICAgIC5zcGxpdChcIlwiKVxuICAgICAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKGMsIGksIGFycikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXRzW2NdICYmIGFycltpIC0gMV0gIT09IFwiXFxcXFwiXG4gICAgICAgICAgICAgICAgICAgID8gZm9ybWF0c1tjXShkYXRlT2JqLCBsb2NhbGUsIGNvbmZpZylcbiAgICAgICAgICAgICAgICAgICAgOiBjICE9PSBcIlxcXFxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPyBjXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCI7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5qb2luKFwiXCIpO1xuICAgICAgICB9O1xuICAgIH07XG4gICAgdmFyIGNyZWF0ZURhdGVQYXJzZXIgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIF9iID0gX2EuY29uZmlnLCBjb25maWcgPSBfYiA9PT0gdm9pZCAwID8gZGVmYXVsdHMgOiBfYiwgX2MgPSBfYS5sMTBuLCBsMTBuID0gX2MgPT09IHZvaWQgMCA/IGVuZ2xpc2ggOiBfYztcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChkYXRlLCBnaXZlbkZvcm1hdCwgdGltZWxlc3MsIGN1c3RvbUxvY2FsZSkge1xuICAgICAgICAgICAgaWYgKGRhdGUgIT09IDAgJiYgIWRhdGUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHZhciBsb2NhbGUgPSBjdXN0b21Mb2NhbGUgfHwgbDEwbjtcbiAgICAgICAgICAgIHZhciBwYXJzZWREYXRlO1xuICAgICAgICAgICAgdmFyIGRhdGVPcmlnID0gZGF0ZTtcbiAgICAgICAgICAgIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSlcbiAgICAgICAgICAgICAgICBwYXJzZWREYXRlID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpO1xuICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIGRhdGUgIT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgICAgICBkYXRlLnRvRml4ZWQgIT09IHVuZGVmaW5lZCAvLyB0aW1lc3RhbXBcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAvLyBjcmVhdGUgYSBjb3B5XG4gICAgICAgICAgICAgICAgcGFyc2VkRGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIGRhdGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAvLyBkYXRlIHN0cmluZ1xuICAgICAgICAgICAgICAgIHZhciBmb3JtYXQgPSBnaXZlbkZvcm1hdCB8fCAoY29uZmlnIHx8IGRlZmF1bHRzKS5kYXRlRm9ybWF0O1xuICAgICAgICAgICAgICAgIHZhciBkYXRlc3RyID0gU3RyaW5nKGRhdGUpLnRyaW0oKTtcbiAgICAgICAgICAgICAgICBpZiAoZGF0ZXN0ciA9PT0gXCJ0b2RheVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aW1lbGVzcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKC9aJC8udGVzdChkYXRlc3RyKSB8fFxuICAgICAgICAgICAgICAgICAgICAvR01UJC8udGVzdChkYXRlc3RyKSAvLyBkYXRlc3RyaW5ncyB3LyB0aW1lem9uZVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkRGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbmZpZyAmJiBjb25maWcucGFyc2VEYXRlKVxuICAgICAgICAgICAgICAgICAgICBwYXJzZWREYXRlID0gY29uZmlnLnBhcnNlRGF0ZShkYXRlLCBmb3JtYXQpO1xuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwYXJzZWREYXRlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICFjb25maWcgfHwgIWNvbmZpZy5ub0NhbGVuZGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBuZXcgRGF0ZShuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksIDAsIDEsIDAsIDAsIDAsIDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBuZXcgRGF0ZShuZXcgRGF0ZSgpLnNldEhvdXJzKDAsIDAsIDAsIDApKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoZWQgPSB2b2lkIDAsIG9wcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbWF0Y2hJbmRleCA9IDAsIHJlZ2V4U3RyID0gXCJcIjsgaSA8IGZvcm1hdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRva2VuXzEgPSBmb3JtYXRbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXNCYWNrU2xhc2ggPSB0b2tlbl8xID09PSBcIlxcXFxcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlc2NhcGVkID0gZm9ybWF0W2kgLSAxXSA9PT0gXCJcXFxcXCIgfHwgaXNCYWNrU2xhc2g7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW5SZWdleFt0b2tlbl8xXSAmJiAhZXNjYXBlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2V4U3RyICs9IHRva2VuUmVnZXhbdG9rZW5fMV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoID0gbmV3IFJlZ0V4cChyZWdleFN0cikuZXhlYyhkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2ggJiYgKG1hdGNoZWQgPSB0cnVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHNbdG9rZW5fMSAhPT0gXCJZXCIgPyBcInB1c2hcIiA6IFwidW5zaGlmdFwiXSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbjogcmV2Rm9ybWF0W3Rva2VuXzFdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsOiBtYXRjaFsrK21hdGNoSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFpc0JhY2tTbGFzaClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdleFN0ciArPSBcIi5cIjsgLy8gZG9uJ3QgcmVhbGx5IGNhcmVcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wcy5mb3JFYWNoKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmbiA9IF9hLmZuLCB2YWwgPSBfYS52YWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChwYXJzZWREYXRlID0gZm4ocGFyc2VkRGF0ZSwgdmFsLCBsb2NhbGUpIHx8IHBhcnNlZERhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkRGF0ZSA9IG1hdGNoZWQgPyBwYXJzZWREYXRlIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgICBpZiAoIShwYXJzZWREYXRlIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNOYU4ocGFyc2VkRGF0ZS5nZXRUaW1lKCkpKSkge1xuICAgICAgICAgICAgICAgIGNvbmZpZy5lcnJvckhhbmRsZXIobmV3IEVycm9yKFwiSW52YWxpZCBkYXRlIHByb3ZpZGVkOiBcIiArIGRhdGVPcmlnKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aW1lbGVzcyA9PT0gdHJ1ZSlcbiAgICAgICAgICAgICAgICBwYXJzZWREYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlZERhdGU7XG4gICAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDb21wdXRlIHRoZSBkaWZmZXJlbmNlIGluIGRhdGVzLCBtZWFzdXJlZCBpbiBtc1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbXBhcmVEYXRlcyhkYXRlMSwgZGF0ZTIsIHRpbWVsZXNzKSB7XG4gICAgICAgIGlmICh0aW1lbGVzcyA9PT0gdm9pZCAwKSB7IHRpbWVsZXNzID0gdHJ1ZTsgfVxuICAgICAgICBpZiAodGltZWxlc3MgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gKG5ldyBEYXRlKGRhdGUxLmdldFRpbWUoKSkuc2V0SG91cnMoMCwgMCwgMCwgMCkgLVxuICAgICAgICAgICAgICAgIG5ldyBEYXRlKGRhdGUyLmdldFRpbWUoKSkuc2V0SG91cnMoMCwgMCwgMCwgMCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRlMS5nZXRUaW1lKCkgLSBkYXRlMi5nZXRUaW1lKCk7XG4gICAgfVxuICAgIHZhciBpc0JldHdlZW4gPSBmdW5jdGlvbiAodHMsIHRzMSwgdHMyKSB7XG4gICAgICAgIHJldHVybiB0cyA+IE1hdGgubWluKHRzMSwgdHMyKSAmJiB0cyA8IE1hdGgubWF4KHRzMSwgdHMyKTtcbiAgICB9O1xuICAgIHZhciBkdXJhdGlvbiA9IHtcbiAgICAgICAgREFZOiA4NjQwMDAwMFxuICAgIH07XG5cbiAgICBpZiAodHlwZW9mIE9iamVjdC5hc3NpZ24gIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBPYmplY3QuYXNzaWduID0gZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgYXJnc1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiQ2Fubm90IGNvbnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNvdXJjZSkge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gKHRhcmdldFtrZXldID0gc291cmNlW2tleV0pOyB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZm9yICh2YXIgX2EgPSAwLCBhcmdzXzEgPSBhcmdzOyBfYSA8IGFyZ3NfMS5sZW5ndGg7IF9hKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgc291cmNlID0gYXJnc18xW19hXTtcbiAgICAgICAgICAgICAgICBfbG9vcF8xKHNvdXJjZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciBERUJPVU5DRURfQ0hBTkdFX01TID0gMzAwO1xuICAgIGZ1bmN0aW9uIEZsYXRwaWNrckluc3RhbmNlKGVsZW1lbnQsIGluc3RhbmNlQ29uZmlnKSB7XG4gICAgICAgIHZhciBzZWxmID0ge1xuICAgICAgICAgICAgY29uZmlnOiBfX2Fzc2lnbih7fSwgZGVmYXVsdHMsIGZsYXRwaWNrci5kZWZhdWx0Q29uZmlnKSxcbiAgICAgICAgICAgIGwxMG46IGVuZ2xpc2hcbiAgICAgICAgfTtcbiAgICAgICAgc2VsZi5wYXJzZURhdGUgPSBjcmVhdGVEYXRlUGFyc2VyKHsgY29uZmlnOiBzZWxmLmNvbmZpZywgbDEwbjogc2VsZi5sMTBuIH0pO1xuICAgICAgICBzZWxmLl9oYW5kbGVycyA9IFtdO1xuICAgICAgICBzZWxmLnBsdWdpbkVsZW1lbnRzID0gW107XG4gICAgICAgIHNlbGYubG9hZGVkUGx1Z2lucyA9IFtdO1xuICAgICAgICBzZWxmLl9iaW5kID0gYmluZDtcbiAgICAgICAgc2VsZi5fc2V0SG91cnNGcm9tRGF0ZSA9IHNldEhvdXJzRnJvbURhdGU7XG4gICAgICAgIHNlbGYuX3Bvc2l0aW9uQ2FsZW5kYXIgPSBwb3NpdGlvbkNhbGVuZGFyO1xuICAgICAgICBzZWxmLmNoYW5nZU1vbnRoID0gY2hhbmdlTW9udGg7XG4gICAgICAgIHNlbGYuY2hhbmdlWWVhciA9IGNoYW5nZVllYXI7XG4gICAgICAgIHNlbGYuY2xlYXIgPSBjbGVhcjtcbiAgICAgICAgc2VsZi5jbG9zZSA9IGNsb3NlO1xuICAgICAgICBzZWxmLl9jcmVhdGVFbGVtZW50ID0gY3JlYXRlRWxlbWVudDtcbiAgICAgICAgc2VsZi5kZXN0cm95ID0gZGVzdHJveTtcbiAgICAgICAgc2VsZi5pc0VuYWJsZWQgPSBpc0VuYWJsZWQ7XG4gICAgICAgIHNlbGYuanVtcFRvRGF0ZSA9IGp1bXBUb0RhdGU7XG4gICAgICAgIHNlbGYub3BlbiA9IG9wZW47XG4gICAgICAgIHNlbGYucmVkcmF3ID0gcmVkcmF3O1xuICAgICAgICBzZWxmLnNldCA9IHNldDtcbiAgICAgICAgc2VsZi5zZXREYXRlID0gc2V0RGF0ZTtcbiAgICAgICAgc2VsZi50b2dnbGUgPSB0b2dnbGU7XG4gICAgICAgIGZ1bmN0aW9uIHNldHVwSGVscGVyRnVuY3Rpb25zKCkge1xuICAgICAgICAgICAgc2VsZi51dGlscyA9IHtcbiAgICAgICAgICAgICAgICBnZXREYXlzSW5Nb250aDogZnVuY3Rpb24gKG1vbnRoLCB5cikge1xuICAgICAgICAgICAgICAgICAgICBpZiAobW9udGggPT09IHZvaWQgMCkgeyBtb250aCA9IHNlbGYuY3VycmVudE1vbnRoOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh5ciA9PT0gdm9pZCAwKSB7IHlyID0gc2VsZi5jdXJyZW50WWVhcjsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAobW9udGggPT09IDEgJiYgKCh5ciAlIDQgPT09IDAgJiYgeXIgJSAxMDAgIT09IDApIHx8IHlyICUgNDAwID09PSAwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAyOTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYubDEwbi5kYXlzSW5Nb250aFttb250aF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBpbml0KCkge1xuICAgICAgICAgICAgc2VsZi5lbGVtZW50ID0gc2VsZi5pbnB1dCA9IGVsZW1lbnQ7XG4gICAgICAgICAgICBzZWxmLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgcGFyc2VDb25maWcoKTtcbiAgICAgICAgICAgIHNldHVwTG9jYWxlKCk7XG4gICAgICAgICAgICBzZXR1cElucHV0cygpO1xuICAgICAgICAgICAgc2V0dXBEYXRlcygpO1xuICAgICAgICAgICAgc2V0dXBIZWxwZXJGdW5jdGlvbnMoKTtcbiAgICAgICAgICAgIGlmICghc2VsZi5pc01vYmlsZSlcbiAgICAgICAgICAgICAgICBidWlsZCgpO1xuICAgICAgICAgICAgYmluZEV2ZW50cygpO1xuICAgICAgICAgICAgaWYgKHNlbGYuc2VsZWN0ZWREYXRlcy5sZW5ndGggfHwgc2VsZi5jb25maWcubm9DYWxlbmRhcikge1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5lbmFibGVUaW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldEhvdXJzRnJvbURhdGUoc2VsZi5jb25maWcubm9DYWxlbmRhclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWxmLmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiB8fCBzZWxmLmNvbmZpZy5taW5EYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHVwZGF0ZVZhbHVlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldENhbGVuZGFyV2lkdGgoKTtcbiAgICAgICAgICAgIHNlbGYuc2hvd1RpbWVJbnB1dCA9XG4gICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RlZERhdGVzLmxlbmd0aCA+IDAgfHwgc2VsZi5jb25maWcubm9DYWxlbmRhcjtcbiAgICAgICAgICAgIHZhciBpc1NhZmFyaSA9IC9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gICAgICAgICAgICAvKiBUT0RPOiBpbnZlc3RpZ2F0ZSB0aGlzIGZ1cnRoZXJcbiAgICAgICAgXG4gICAgICAgICAgICAgIEN1cnJlbnRseSwgdGhlcmUgaXMgd2VpcmQgcG9zaXRpb25pbmcgYmVoYXZpb3IgaW4gc2FmYXJpIGNhdXNpbmcgcGFnZXNcbiAgICAgICAgICAgICAgdG8gc2Nyb2xsIHVwLiBodHRwczovL2dpdGh1Yi5jb20vY2htbG4vZmxhdHBpY2tyL2lzc3Vlcy81NjNcbiAgICAgICAgXG4gICAgICAgICAgICAgIEhvd2V2ZXIsIG1vc3QgYnJvd3NlcnMgYXJlIG5vdCBTYWZhcmkgYW5kIHBvc2l0aW9uaW5nIGlzIGV4cGVuc2l2ZSB3aGVuIHVzZWRcbiAgICAgICAgICAgICAgaW4gc2NhbGUuIGh0dHBzOi8vZ2l0aHViLmNvbS9jaG1sbi9mbGF0cGlja3IvaXNzdWVzLzEwOTZcbiAgICAgICAgICAgICovXG4gICAgICAgICAgICBpZiAoIXNlbGYuaXNNb2JpbGUgJiYgaXNTYWZhcmkpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbkNhbGVuZGFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cmlnZ2VyRXZlbnQoXCJvblJlYWR5XCIpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGJpbmRUb0luc3RhbmNlKGZuKSB7XG4gICAgICAgICAgICByZXR1cm4gZm4uYmluZChzZWxmKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzZXRDYWxlbmRhcldpZHRoKCkge1xuICAgICAgICAgICAgdmFyIGNvbmZpZyA9IHNlbGYuY29uZmlnO1xuICAgICAgICAgICAgaWYgKGNvbmZpZy53ZWVrTnVtYmVycyA9PT0gZmFsc2UgJiYgY29uZmlnLnNob3dNb250aHMgPT09IDEpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgZWxzZSBpZiAoY29uZmlnLm5vQ2FsZW5kYXIgIT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuY2FsZW5kYXJDb250YWluZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FsZW5kYXJDb250YWluZXIuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5kYXlzQ29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXlzV2lkdGggPSAoc2VsZi5kYXlzLm9mZnNldFdpZHRoICsgMSkgKiBjb25maWcuc2hvd01vbnRocztcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF5c0NvbnRhaW5lci5zdHlsZS53aWR0aCA9IGRheXNXaWR0aCArIFwicHhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FsZW5kYXJDb250YWluZXIuc3R5bGUud2lkdGggPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheXNXaWR0aCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLndlZWtXcmFwcGVyICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc2VsZi53ZWVrV3JhcHBlci5vZmZzZXRXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicHhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FsZW5kYXJDb250YWluZXIuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJ2aXNpYmlsaXR5XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcImRpc3BsYXlcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIGhhbmRsZXIgZm9yIGFsbCBldmVudHMgdGFyZ2V0aW5nIHRoZSB0aW1lIGlucHV0c1xuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlVGltZShlKSB7XG4gICAgICAgICAgICBpZiAoc2VsZi5zZWxlY3RlZERhdGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHNldERlZmF1bHRUaW1lKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZSAhPT0gdW5kZWZpbmVkICYmIGUudHlwZSAhPT0gXCJibHVyXCIpIHtcbiAgICAgICAgICAgICAgICB0aW1lV3JhcHBlcihlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBwcmV2VmFsdWUgPSBzZWxmLl9pbnB1dC52YWx1ZTtcbiAgICAgICAgICAgIHNldEhvdXJzRnJvbUlucHV0cygpO1xuICAgICAgICAgICAgdXBkYXRlVmFsdWUoKTtcbiAgICAgICAgICAgIGlmIChzZWxmLl9pbnB1dC52YWx1ZSAhPT0gcHJldlZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5fZGVib3VuY2VkQ2hhbmdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gYW1wbTJtaWxpdGFyeShob3VyLCBhbVBNKSB7XG4gICAgICAgICAgICByZXR1cm4gKGhvdXIgJSAxMikgKyAxMiAqIGludChhbVBNID09PSBzZWxmLmwxMG4uYW1QTVsxXSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gbWlsaXRhcnkyYW1wbShob3VyKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGhvdXIgJSAyNCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTI7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgJSAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogU3luY3MgdGhlIHNlbGVjdGVkIGRhdGUgb2JqZWN0IHRpbWUgd2l0aCB1c2VyJ3MgdGltZSBpbnB1dFxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gc2V0SG91cnNGcm9tSW5wdXRzKCkge1xuICAgICAgICAgICAgaWYgKHNlbGYuaG91ckVsZW1lbnQgPT09IHVuZGVmaW5lZCB8fCBzZWxmLm1pbnV0ZUVsZW1lbnQgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB2YXIgaG91cnMgPSAocGFyc2VJbnQoc2VsZi5ob3VyRWxlbWVudC52YWx1ZS5zbGljZSgtMiksIDEwKSB8fCAwKSAlIDI0LCBtaW51dGVzID0gKHBhcnNlSW50KHNlbGYubWludXRlRWxlbWVudC52YWx1ZSwgMTApIHx8IDApICUgNjAsIHNlY29uZHMgPSBzZWxmLnNlY29uZEVsZW1lbnQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgID8gKHBhcnNlSW50KHNlbGYuc2Vjb25kRWxlbWVudC52YWx1ZSwgMTApIHx8IDApICUgNjBcbiAgICAgICAgICAgICAgICA6IDA7XG4gICAgICAgICAgICBpZiAoc2VsZi5hbVBNICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBob3VycyA9IGFtcG0ybWlsaXRhcnkoaG91cnMsIHNlbGYuYW1QTS50ZXh0Q29udGVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgbGltaXRNaW5Ib3VycyA9IHNlbGYuY29uZmlnLm1pblRpbWUgIT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgIChzZWxmLmNvbmZpZy5taW5EYXRlICYmXG4gICAgICAgICAgICAgICAgICAgIHNlbGYubWluRGF0ZUhhc1RpbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5sYXRlc3RTZWxlY3RlZERhdGVPYmogJiZcbiAgICAgICAgICAgICAgICAgICAgY29tcGFyZURhdGVzKHNlbGYubGF0ZXN0U2VsZWN0ZWREYXRlT2JqLCBzZWxmLmNvbmZpZy5taW5EYXRlLCB0cnVlKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgIDApO1xuICAgICAgICAgICAgdmFyIGxpbWl0TWF4SG91cnMgPSBzZWxmLmNvbmZpZy5tYXhUaW1lICE9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAoc2VsZi5jb25maWcubWF4RGF0ZSAmJlxuICAgICAgICAgICAgICAgICAgICBzZWxmLm1heERhdGVIYXNUaW1lICYmXG4gICAgICAgICAgICAgICAgICAgIHNlbGYubGF0ZXN0U2VsZWN0ZWREYXRlT2JqICYmXG4gICAgICAgICAgICAgICAgICAgIGNvbXBhcmVEYXRlcyhzZWxmLmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiwgc2VsZi5jb25maWcubWF4RGF0ZSwgdHJ1ZSkgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAwKTtcbiAgICAgICAgICAgIGlmIChsaW1pdE1heEhvdXJzKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1heFRpbWUgPSBzZWxmLmNvbmZpZy5tYXhUaW1lICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgPyBzZWxmLmNvbmZpZy5tYXhUaW1lXG4gICAgICAgICAgICAgICAgICAgIDogc2VsZi5jb25maWcubWF4RGF0ZTtcbiAgICAgICAgICAgICAgICBob3VycyA9IE1hdGgubWluKGhvdXJzLCBtYXhUaW1lLmdldEhvdXJzKCkpO1xuICAgICAgICAgICAgICAgIGlmIChob3VycyA9PT0gbWF4VGltZS5nZXRIb3VycygpKVxuICAgICAgICAgICAgICAgICAgICBtaW51dGVzID0gTWF0aC5taW4obWludXRlcywgbWF4VGltZS5nZXRNaW51dGVzKCkpO1xuICAgICAgICAgICAgICAgIGlmIChtaW51dGVzID09PSBtYXhUaW1lLmdldE1pbnV0ZXMoKSlcbiAgICAgICAgICAgICAgICAgICAgc2Vjb25kcyA9IE1hdGgubWluKHNlY29uZHMsIG1heFRpbWUuZ2V0U2Vjb25kcygpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsaW1pdE1pbkhvdXJzKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1pblRpbWUgPSBzZWxmLmNvbmZpZy5taW5UaW1lICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgPyBzZWxmLmNvbmZpZy5taW5UaW1lXG4gICAgICAgICAgICAgICAgICAgIDogc2VsZi5jb25maWcubWluRGF0ZTtcbiAgICAgICAgICAgICAgICBob3VycyA9IE1hdGgubWF4KGhvdXJzLCBtaW5UaW1lLmdldEhvdXJzKCkpO1xuICAgICAgICAgICAgICAgIGlmIChob3VycyA9PT0gbWluVGltZS5nZXRIb3VycygpKVxuICAgICAgICAgICAgICAgICAgICBtaW51dGVzID0gTWF0aC5tYXgobWludXRlcywgbWluVGltZS5nZXRNaW51dGVzKCkpO1xuICAgICAgICAgICAgICAgIGlmIChtaW51dGVzID09PSBtaW5UaW1lLmdldE1pbnV0ZXMoKSlcbiAgICAgICAgICAgICAgICAgICAgc2Vjb25kcyA9IE1hdGgubWF4KHNlY29uZHMsIG1pblRpbWUuZ2V0U2Vjb25kcygpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldEhvdXJzKGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogU3luY3MgdGltZSBpbnB1dCB2YWx1ZXMgd2l0aCBhIGRhdGVcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHNldEhvdXJzRnJvbURhdGUoZGF0ZU9iaikge1xuICAgICAgICAgICAgdmFyIGRhdGUgPSBkYXRlT2JqIHx8IHNlbGYubGF0ZXN0U2VsZWN0ZWREYXRlT2JqO1xuICAgICAgICAgICAgaWYgKGRhdGUpXG4gICAgICAgICAgICAgICAgc2V0SG91cnMoZGF0ZS5nZXRIb3VycygpLCBkYXRlLmdldE1pbnV0ZXMoKSwgZGF0ZS5nZXRTZWNvbmRzKCkpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHNldERlZmF1bHRIb3VycygpIHtcbiAgICAgICAgICAgIHZhciBob3VycyA9IHNlbGYuY29uZmlnLmRlZmF1bHRIb3VyO1xuICAgICAgICAgICAgdmFyIG1pbnV0ZXMgPSBzZWxmLmNvbmZpZy5kZWZhdWx0TWludXRlO1xuICAgICAgICAgICAgdmFyIHNlY29uZHMgPSBzZWxmLmNvbmZpZy5kZWZhdWx0U2Vjb25kcztcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5taW5EYXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB2YXIgbWluSHIgPSBzZWxmLmNvbmZpZy5taW5EYXRlLmdldEhvdXJzKCk7XG4gICAgICAgICAgICAgICAgdmFyIG1pbk1pbnV0ZXMgPSBzZWxmLmNvbmZpZy5taW5EYXRlLmdldE1pbnV0ZXMoKTtcbiAgICAgICAgICAgICAgICBob3VycyA9IE1hdGgubWF4KGhvdXJzLCBtaW5Icik7XG4gICAgICAgICAgICAgICAgaWYgKGhvdXJzID09PSBtaW5IcilcbiAgICAgICAgICAgICAgICAgICAgbWludXRlcyA9IE1hdGgubWF4KG1pbk1pbnV0ZXMsIG1pbnV0ZXMpO1xuICAgICAgICAgICAgICAgIGlmIChob3VycyA9PT0gbWluSHIgJiYgbWludXRlcyA9PT0gbWluTWludXRlcylcbiAgICAgICAgICAgICAgICAgICAgc2Vjb25kcyA9IHNlbGYuY29uZmlnLm1pbkRhdGUuZ2V0U2Vjb25kcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLm1heERhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHZhciBtYXhIciA9IHNlbGYuY29uZmlnLm1heERhdGUuZ2V0SG91cnMoKTtcbiAgICAgICAgICAgICAgICB2YXIgbWF4TWludXRlcyA9IHNlbGYuY29uZmlnLm1heERhdGUuZ2V0TWludXRlcygpO1xuICAgICAgICAgICAgICAgIGhvdXJzID0gTWF0aC5taW4oaG91cnMsIG1heEhyKTtcbiAgICAgICAgICAgICAgICBpZiAoaG91cnMgPT09IG1heEhyKVxuICAgICAgICAgICAgICAgICAgICBtaW51dGVzID0gTWF0aC5taW4obWF4TWludXRlcywgbWludXRlcyk7XG4gICAgICAgICAgICAgICAgaWYgKGhvdXJzID09PSBtYXhIciAmJiBtaW51dGVzID09PSBtYXhNaW51dGVzKVxuICAgICAgICAgICAgICAgICAgICBzZWNvbmRzID0gc2VsZi5jb25maWcubWF4RGF0ZS5nZXRTZWNvbmRzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRIb3Vycyhob3VycywgbWludXRlcywgc2Vjb25kcyk7XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNldHMgdGhlIGhvdXJzLCBtaW51dGVzLCBhbmQgb3B0aW9uYWxseSBzZWNvbmRzXG4gICAgICAgICAqIG9mIHRoZSBsYXRlc3Qgc2VsZWN0ZWQgZGF0ZSBvYmplY3QgYW5kIHRoZVxuICAgICAgICAgKiBjb3JyZXNwb25kaW5nIHRpbWUgaW5wdXRzXG4gICAgICAgICAqIEBwYXJhbSB7TnVtYmVyfSBob3VycyB0aGUgaG91ci4gd2hldGhlciBpdHMgbWlsaXRhcnlcbiAgICAgICAgICogICAgICAgICAgICAgICAgIG9yIGFtLXBtIGdldHMgaW5mZXJyZWQgZnJvbSBjb25maWdcbiAgICAgICAgICogQHBhcmFtIHtOdW1iZXJ9IG1pbnV0ZXMgdGhlIG1pbnV0ZXNcbiAgICAgICAgICogQHBhcmFtIHtOdW1iZXJ9IHNlY29uZHMgdGhlIHNlY29uZHMgKG9wdGlvbmFsKVxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gc2V0SG91cnMoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpIHtcbiAgICAgICAgICAgIGlmIChzZWxmLmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5sYXRlc3RTZWxlY3RlZERhdGVPYmouc2V0SG91cnMoaG91cnMgJSAyNCwgbWludXRlcywgc2Vjb25kcyB8fCAwLCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc2VsZi5ob3VyRWxlbWVudCB8fCAhc2VsZi5taW51dGVFbGVtZW50IHx8IHNlbGYuaXNNb2JpbGUpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgc2VsZi5ob3VyRWxlbWVudC52YWx1ZSA9IHBhZCghc2VsZi5jb25maWcudGltZV8yNGhyXG4gICAgICAgICAgICAgICAgPyAoKDEyICsgaG91cnMpICUgMTIpICsgMTIgKiBpbnQoaG91cnMgJSAxMiA9PT0gMClcbiAgICAgICAgICAgICAgICA6IGhvdXJzKTtcbiAgICAgICAgICAgIHNlbGYubWludXRlRWxlbWVudC52YWx1ZSA9IHBhZChtaW51dGVzKTtcbiAgICAgICAgICAgIGlmIChzZWxmLmFtUE0gIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBzZWxmLmFtUE0udGV4dENvbnRlbnQgPSBzZWxmLmwxMG4uYW1QTVtpbnQoaG91cnMgPj0gMTIpXTtcbiAgICAgICAgICAgIGlmIChzZWxmLnNlY29uZEVsZW1lbnQgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBzZWxmLnNlY29uZEVsZW1lbnQudmFsdWUgPSBwYWQoc2Vjb25kcyk7XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEhhbmRsZXMgdGhlIHllYXIgaW5wdXQgYW5kIGluY3JlbWVudGluZyBldmVudHNcbiAgICAgICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQgdGhlIGtleXVwIG9yIGluY3JlbWVudCBldmVudFxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gb25ZZWFySW5wdXQoZXZlbnQpIHtcbiAgICAgICAgICAgIHZhciB5ZWFyID0gcGFyc2VJbnQoZXZlbnQudGFyZ2V0LnZhbHVlKSArIChldmVudC5kZWx0YSB8fCAwKTtcbiAgICAgICAgICAgIGlmICh5ZWFyIC8gMTAwMCA+IDEgfHxcbiAgICAgICAgICAgICAgICAoZXZlbnQua2V5ID09PSBcIkVudGVyXCIgJiYgIS9bXlxcZF0vLnRlc3QoeWVhci50b1N0cmluZygpKSkpIHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VZZWFyKHllYXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBFc3NlbnRpYWxseSBhZGRFdmVudExpc3RlbmVyICsgdHJhY2tpbmdcbiAgICAgICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IHRoZSBlbGVtZW50IHRvIGFkZEV2ZW50TGlzdGVuZXIgdG9cbiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50IHRoZSBldmVudCBuYW1lXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgdGhlIGV2ZW50IGhhbmRsZXJcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGJpbmQoZWxlbWVudCwgZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEFycmF5KVxuICAgICAgICAgICAgICAgIHJldHVybiBldmVudC5mb3JFYWNoKGZ1bmN0aW9uIChldikgeyByZXR1cm4gYmluZChlbGVtZW50LCBldiwgaGFuZGxlciwgb3B0aW9ucyk7IH0pO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBBcnJheSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudC5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gYmluZChlbCwgZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpOyB9KTtcbiAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgb3B0aW9ucyk7XG4gICAgICAgICAgICBzZWxmLl9oYW5kbGVycy5wdXNoKHtcbiAgICAgICAgICAgICAgICBlbGVtZW50OiBlbGVtZW50LFxuICAgICAgICAgICAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBoYW5kbGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBIG1vdXNlZG93biBoYW5kbGVyIHdoaWNoIG1pbWljcyBjbGljay5cbiAgICAgICAgICogTWluaW1pemVzIGxhdGVuY3ksIHNpbmNlIHdlIGRvbid0IG5lZWQgdG8gd2FpdCBmb3IgbW91c2V1cCBpbiBtb3N0IGNhc2VzLlxuICAgICAgICAgKiBBbHNvLCBhdm9pZHMgaGFuZGxpbmcgcmlnaHQgY2xpY2tzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIHRoZSBldmVudCBoYW5kbGVyXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBvbkNsaWNrKGhhbmRsZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICAgICAgZXZ0LndoaWNoID09PSAxICYmIGhhbmRsZXIoZXZ0KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gdHJpZ2dlckNoYW5nZSgpIHtcbiAgICAgICAgICAgIHRyaWdnZXJFdmVudChcIm9uQ2hhbmdlXCIpO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBZGRzIGFsbCB0aGUgbmVjZXNzYXJ5IGV2ZW50IGxpc3RlbmVyc1xuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gYmluZEV2ZW50cygpIHtcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy53cmFwKSB7XG4gICAgICAgICAgICAgICAgW1wib3BlblwiLCBcImNsb3NlXCIsIFwidG9nZ2xlXCIsIFwiY2xlYXJcIl0uZm9yRWFjaChmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoc2VsZi5lbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1cIiArIGV2dCArIFwiXVwiKSwgZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYmluZChlbCwgXCJjbGlja1wiLCBzZWxmW2V2dF0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxmLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgc2V0dXBNb2JpbGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgZGVib3VuY2VkUmVzaXplID0gZGVib3VuY2Uob25SZXNpemUsIDUwKTtcbiAgICAgICAgICAgIHNlbGYuX2RlYm91bmNlZENoYW5nZSA9IGRlYm91bmNlKHRyaWdnZXJDaGFuZ2UsIERFQk9VTkNFRF9DSEFOR0VfTVMpO1xuICAgICAgICAgICAgaWYgKHNlbGYuZGF5c0NvbnRhaW5lciAmJiAhL2lQaG9uZXxpUGFkfGlQb2QvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKVxuICAgICAgICAgICAgICAgIGJpbmQoc2VsZi5kYXlzQ29udGFpbmVyLCBcIm1vdXNlb3ZlclwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5jb25maWcubW9kZSA9PT0gXCJyYW5nZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZU92ZXIoZS50YXJnZXQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYmluZCh3aW5kb3cuZG9jdW1lbnQuYm9keSwgXCJrZXlkb3duXCIsIG9uS2V5RG93bik7XG4gICAgICAgICAgICBpZiAoIXNlbGYuY29uZmlnLmlubGluZSAmJiAhc2VsZi5jb25maWcuc3RhdGljKVxuICAgICAgICAgICAgICAgIGJpbmQod2luZG93LCBcInJlc2l6ZVwiLCBkZWJvdW5jZWRSZXNpemUpO1xuICAgICAgICAgICAgaWYgKHdpbmRvdy5vbnRvdWNoc3RhcnQgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBiaW5kKHdpbmRvdy5kb2N1bWVudCwgXCJ0b3VjaHN0YXJ0XCIsIGRvY3VtZW50Q2xpY2spO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGJpbmQod2luZG93LmRvY3VtZW50LCBcIm1vdXNlZG93blwiLCBvbkNsaWNrKGRvY3VtZW50Q2xpY2spKTtcbiAgICAgICAgICAgIGJpbmQod2luZG93LmRvY3VtZW50LCBcImZvY3VzXCIsIGRvY3VtZW50Q2xpY2ssIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5jbGlja09wZW5zID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgYmluZChzZWxmLl9pbnB1dCwgXCJmb2N1c1wiLCBzZWxmLm9wZW4pO1xuICAgICAgICAgICAgICAgIGJpbmQoc2VsZi5faW5wdXQsIFwibW91c2Vkb3duXCIsIG9uQ2xpY2soc2VsZi5vcGVuKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VsZi5kYXlzQ29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBiaW5kKHNlbGYubW9udGhOYXYsIFwibW91c2Vkb3duXCIsIG9uQ2xpY2sob25Nb250aE5hdkNsaWNrKSk7XG4gICAgICAgICAgICAgICAgYmluZChzZWxmLm1vbnRoTmF2LCBbXCJrZXl1cFwiLCBcImluY3JlbWVudFwiXSwgb25ZZWFySW5wdXQpO1xuICAgICAgICAgICAgICAgIGJpbmQoc2VsZi5kYXlzQ29udGFpbmVyLCBcIm1vdXNlZG93blwiLCBvbkNsaWNrKHNlbGVjdERhdGUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxmLnRpbWVDb250YWluZXIgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgIHNlbGYubWludXRlRWxlbWVudCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgc2VsZi5ob3VyRWxlbWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNlbFRleHQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS50YXJnZXQuc2VsZWN0KCk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBiaW5kKHNlbGYudGltZUNvbnRhaW5lciwgW1wiaW5jcmVtZW50XCJdLCB1cGRhdGVUaW1lKTtcbiAgICAgICAgICAgICAgICBiaW5kKHNlbGYudGltZUNvbnRhaW5lciwgXCJibHVyXCIsIHVwZGF0ZVRpbWUsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICBiaW5kKHNlbGYudGltZUNvbnRhaW5lciwgXCJtb3VzZWRvd25cIiwgb25DbGljayh0aW1lSW5jcmVtZW50KSk7XG4gICAgICAgICAgICAgICAgYmluZChbc2VsZi5ob3VyRWxlbWVudCwgc2VsZi5taW51dGVFbGVtZW50XSwgW1wiZm9jdXNcIiwgXCJjbGlja1wiXSwgc2VsVGV4dCk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuc2Vjb25kRWxlbWVudCAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICBiaW5kKHNlbGYuc2Vjb25kRWxlbWVudCwgXCJmb2N1c1wiLCBmdW5jdGlvbiAoKSB7IHJldHVybiBzZWxmLnNlY29uZEVsZW1lbnQgJiYgc2VsZi5zZWNvbmRFbGVtZW50LnNlbGVjdCgpOyB9KTtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5hbVBNICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgYmluZChzZWxmLmFtUE0sIFwibW91c2Vkb3duXCIsIG9uQ2xpY2soZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVRpbWUoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyQ2hhbmdlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNldCB0aGUgY2FsZW5kYXIgdmlldyB0byBhIHBhcnRpY3VsYXIgZGF0ZS5cbiAgICAgICAgICogQHBhcmFtIHtEYXRlfSBqdW1wRGF0ZSB0aGUgZGF0ZSB0byBzZXQgdGhlIHZpZXcgdG9cbiAgICAgICAgICogQHBhcmFtIHtib29sZWFufSB0cmlnZ2VyQ2hhbmdlIGlmIGNoYW5nZSBldmVudHMgc2hvdWxkIGJlIHRyaWdnZXJlZFxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24ganVtcFRvRGF0ZShqdW1wRGF0ZSwgdHJpZ2dlckNoYW5nZSkge1xuICAgICAgICAgICAgdmFyIGp1bXBUbyA9IGp1bXBEYXRlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA/IHNlbGYucGFyc2VEYXRlKGp1bXBEYXRlKVxuICAgICAgICAgICAgICAgIDogc2VsZi5sYXRlc3RTZWxlY3RlZERhdGVPYmogfHxcbiAgICAgICAgICAgICAgICAgICAgKHNlbGYuY29uZmlnLm1pbkRhdGUgJiYgc2VsZi5jb25maWcubWluRGF0ZSA+IHNlbGYubm93XG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlbGYuY29uZmlnLm1pbkRhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogc2VsZi5jb25maWcubWF4RGF0ZSAmJiBzZWxmLmNvbmZpZy5tYXhEYXRlIDwgc2VsZi5ub3dcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNlbGYuY29uZmlnLm1heERhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNlbGYubm93KTtcbiAgICAgICAgICAgIHZhciBvbGRZZWFyID0gc2VsZi5jdXJyZW50WWVhcjtcbiAgICAgICAgICAgIHZhciBvbGRNb250aCA9IHNlbGYuY3VycmVudE1vbnRoO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoanVtcFRvICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50WWVhciA9IGp1bXBUby5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnRNb250aCA9IGp1bXBUby5nZXRNb250aCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgICAgICBlLm1lc3NhZ2UgPSBcIkludmFsaWQgZGF0ZSBzdXBwbGllZDogXCIgKyBqdW1wVG87XG4gICAgICAgICAgICAgICAgc2VsZi5jb25maWcuZXJyb3JIYW5kbGVyKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRyaWdnZXJDaGFuZ2UgJiYgc2VsZi5jdXJyZW50WWVhciAhPT0gb2xkWWVhcikge1xuICAgICAgICAgICAgICAgIHRyaWdnZXJFdmVudChcIm9uWWVhckNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICBidWlsZE1vbnRoU3dpdGNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHJpZ2dlckNoYW5nZSAmJlxuICAgICAgICAgICAgICAgIChzZWxmLmN1cnJlbnRZZWFyICE9PSBvbGRZZWFyIHx8IHNlbGYuY3VycmVudE1vbnRoICE9PSBvbGRNb250aCkpIHtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoXCJvbk1vbnRoQ2hhbmdlXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZi5yZWRyYXcoKTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIHVwL2Rvd24gYXJyb3cgaGFuZGxlciBmb3IgdGltZSBpbnB1dHNcbiAgICAgICAgICogQHBhcmFtIHtFdmVudH0gZSB0aGUgY2xpY2sgZXZlbnRcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHRpbWVJbmNyZW1lbnQoZSkge1xuICAgICAgICAgICAgaWYgKH5lLnRhcmdldC5jbGFzc05hbWUuaW5kZXhPZihcImFycm93XCIpKVxuICAgICAgICAgICAgICAgIGluY3JlbWVudE51bUlucHV0KGUsIGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFycm93VXBcIikgPyAxIDogLTEpO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbmNyZW1lbnRzL2RlY3JlbWVudHMgdGhlIHZhbHVlIG9mIGlucHV0IGFzc29jaS1cbiAgICAgICAgICogYXRlZCB3aXRoIHRoZSB1cC9kb3duIGFycm93IGJ5IGRpc3BhdGNoaW5nIGFuXG4gICAgICAgICAqIFwiaW5jcmVtZW50XCIgZXZlbnQgb24gdGhlIGlucHV0LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0ge0V2ZW50fSBlIHRoZSBjbGljayBldmVudFxuICAgICAgICAgKiBAcGFyYW0ge051bWJlcn0gZGVsdGEgdGhlIGRpZmYgKHVzdWFsbHkgMSBvciAtMSlcbiAgICAgICAgICogQHBhcmFtIHtFbGVtZW50fSBpbnB1dEVsZW0gdGhlIGlucHV0IGVsZW1lbnRcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGluY3JlbWVudE51bUlucHV0KGUsIGRlbHRhLCBpbnB1dEVsZW0pIHtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlICYmIGUudGFyZ2V0O1xuICAgICAgICAgICAgdmFyIGlucHV0ID0gaW5wdXRFbGVtIHx8XG4gICAgICAgICAgICAgICAgKHRhcmdldCAmJiB0YXJnZXQucGFyZW50Tm9kZSAmJiB0YXJnZXQucGFyZW50Tm9kZS5maXJzdENoaWxkKTtcbiAgICAgICAgICAgIHZhciBldmVudCA9IGNyZWF0ZUV2ZW50KFwiaW5jcmVtZW50XCIpO1xuICAgICAgICAgICAgZXZlbnQuZGVsdGEgPSBkZWx0YTtcbiAgICAgICAgICAgIGlucHV0ICYmIGlucHV0LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGJ1aWxkKCkge1xuICAgICAgICAgICAgdmFyIGZyYWdtZW50ID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgICAgICAgIHNlbGYuY2FsZW5kYXJDb250YWluZXIgPSBjcmVhdGVFbGVtZW50KFwiZGl2XCIsIFwiZmxhdHBpY2tyLWNhbGVuZGFyXCIpO1xuICAgICAgICAgICAgc2VsZi5jYWxlbmRhckNvbnRhaW5lci50YWJJbmRleCA9IC0xO1xuICAgICAgICAgICAgaWYgKCFzZWxmLmNvbmZpZy5ub0NhbGVuZGFyKSB7XG4gICAgICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoYnVpbGRNb250aE5hdigpKTtcbiAgICAgICAgICAgICAgICBzZWxmLmlubmVyQ29udGFpbmVyID0gY3JlYXRlRWxlbWVudChcImRpdlwiLCBcImZsYXRwaWNrci1pbm5lckNvbnRhaW5lclwiKTtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5jb25maWcud2Vla051bWJlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hID0gYnVpbGRXZWVrcygpLCB3ZWVrV3JhcHBlciA9IF9hLndlZWtXcmFwcGVyLCB3ZWVrTnVtYmVycyA9IF9hLndlZWtOdW1iZXJzO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmlubmVyQ29udGFpbmVyLmFwcGVuZENoaWxkKHdlZWtXcmFwcGVyKTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi53ZWVrTnVtYmVycyA9IHdlZWtOdW1iZXJzO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLndlZWtXcmFwcGVyID0gd2Vla1dyYXBwZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNlbGYuckNvbnRhaW5lciA9IGNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgXCJmbGF0cGlja3ItckNvbnRhaW5lclwiKTtcbiAgICAgICAgICAgICAgICBzZWxmLnJDb250YWluZXIuYXBwZW5kQ2hpbGQoYnVpbGRXZWVrZGF5cygpKTtcbiAgICAgICAgICAgICAgICBpZiAoIXNlbGYuZGF5c0NvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmRheXNDb250YWluZXIgPSBjcmVhdGVFbGVtZW50KFwiZGl2XCIsIFwiZmxhdHBpY2tyLWRheXNcIik7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuZGF5c0NvbnRhaW5lci50YWJJbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBidWlsZERheXMoKTtcbiAgICAgICAgICAgICAgICBzZWxmLnJDb250YWluZXIuYXBwZW5kQ2hpbGQoc2VsZi5kYXlzQ29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICBzZWxmLmlubmVyQ29udGFpbmVyLmFwcGVuZENoaWxkKHNlbGYuckNvbnRhaW5lcik7XG4gICAgICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoc2VsZi5pbm5lckNvbnRhaW5lcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VsZi5jb25maWcuZW5hYmxlVGltZSkge1xuICAgICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGJ1aWxkVGltZSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHNlbGYuY2FsZW5kYXJDb250YWluZXIsIFwicmFuZ2VNb2RlXCIsIHNlbGYuY29uZmlnLm1vZGUgPT09IFwicmFuZ2VcIik7XG4gICAgICAgICAgICB0b2dnbGVDbGFzcyhzZWxmLmNhbGVuZGFyQ29udGFpbmVyLCBcImFuaW1hdGVcIiwgc2VsZi5jb25maWcuYW5pbWF0ZSA9PT0gdHJ1ZSk7XG4gICAgICAgICAgICB0b2dnbGVDbGFzcyhzZWxmLmNhbGVuZGFyQ29udGFpbmVyLCBcIm11bHRpTW9udGhcIiwgc2VsZi5jb25maWcuc2hvd01vbnRocyA+IDEpO1xuICAgICAgICAgICAgc2VsZi5jYWxlbmRhckNvbnRhaW5lci5hcHBlbmRDaGlsZChmcmFnbWVudCk7XG4gICAgICAgICAgICB2YXIgY3VzdG9tQXBwZW5kID0gc2VsZi5jb25maWcuYXBwZW5kVG8gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLmFwcGVuZFRvLm5vZGVUeXBlICE9PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAoc2VsZi5jb25maWcuaW5saW5lIHx8IHNlbGYuY29uZmlnLnN0YXRpYykge1xuICAgICAgICAgICAgICAgIHNlbGYuY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZChzZWxmLmNvbmZpZy5pbmxpbmUgPyBcImlubGluZVwiIDogXCJzdGF0aWNcIik7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLmlubGluZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWN1c3RvbUFwcGVuZCAmJiBzZWxmLmVsZW1lbnQucGFyZW50Tm9kZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzZWxmLmNhbGVuZGFyQ29udGFpbmVyLCBzZWxmLl9pbnB1dC5uZXh0U2libGluZyk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNlbGYuY29uZmlnLmFwcGVuZFRvICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZy5hcHBlbmRUby5hcHBlbmRDaGlsZChzZWxmLmNhbGVuZGFyQ29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLnN0YXRpYykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgd3JhcHBlciA9IGNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgXCJmbGF0cGlja3Itd3JhcHBlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuZWxlbWVudC5wYXJlbnROb2RlKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHdyYXBwZXIsIHNlbGYuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHdyYXBwZXIuYXBwZW5kQ2hpbGQoc2VsZi5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuYWx0SW5wdXQpXG4gICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVyLmFwcGVuZENoaWxkKHNlbGYuYWx0SW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICB3cmFwcGVyLmFwcGVuZENoaWxkKHNlbGYuY2FsZW5kYXJDb250YWluZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc2VsZi5jb25maWcuc3RhdGljICYmICFzZWxmLmNvbmZpZy5pbmxpbmUpXG4gICAgICAgICAgICAgICAgKHNlbGYuY29uZmlnLmFwcGVuZFRvICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgPyBzZWxmLmNvbmZpZy5hcHBlbmRUb1xuICAgICAgICAgICAgICAgICAgICA6IHdpbmRvdy5kb2N1bWVudC5ib2R5KS5hcHBlbmRDaGlsZChzZWxmLmNhbGVuZGFyQ29udGFpbmVyKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBjcmVhdGVEYXkoY2xhc3NOYW1lLCBkYXRlLCBkYXlOdW1iZXIsIGkpIHtcbiAgICAgICAgICAgIHZhciBkYXRlSXNFbmFibGVkID0gaXNFbmFibGVkKGRhdGUsIHRydWUpLCBkYXlFbGVtZW50ID0gY3JlYXRlRWxlbWVudChcInNwYW5cIiwgXCJmbGF0cGlja3ItZGF5IFwiICsgY2xhc3NOYW1lLCBkYXRlLmdldERhdGUoKS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIGRheUVsZW1lbnQuZGF0ZU9iaiA9IGRhdGU7XG4gICAgICAgICAgICBkYXlFbGVtZW50LiRpID0gaTtcbiAgICAgICAgICAgIGRheUVsZW1lbnQuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLCBzZWxmLmZvcm1hdERhdGUoZGF0ZSwgc2VsZi5jb25maWcuYXJpYURhdGVGb3JtYXQpKTtcbiAgICAgICAgICAgIGlmIChjbGFzc05hbWUuaW5kZXhPZihcImhpZGRlblwiKSA9PT0gLTEgJiZcbiAgICAgICAgICAgICAgICBjb21wYXJlRGF0ZXMoZGF0ZSwgc2VsZi5ub3cpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgc2VsZi50b2RheURhdGVFbGVtID0gZGF5RWxlbWVudDtcbiAgICAgICAgICAgICAgICBkYXlFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJ0b2RheVwiKTtcbiAgICAgICAgICAgICAgICBkYXlFbGVtZW50LnNldEF0dHJpYnV0ZShcImFyaWEtY3VycmVudFwiLCBcImRhdGVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGF0ZUlzRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIGRheUVsZW1lbnQudGFiSW5kZXggPSAtMTtcbiAgICAgICAgICAgICAgICBpZiAoaXNEYXRlU2VsZWN0ZWQoZGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF5RWxlbWVudC5jbGFzc0xpc3QuYWRkKFwic2VsZWN0ZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWREYXRlRWxlbSA9IGRheUVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5tb2RlID09PSBcInJhbmdlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGRheUVsZW1lbnQsIFwic3RhcnRSYW5nZVwiLCBzZWxmLnNlbGVjdGVkRGF0ZXNbMF0gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXJlRGF0ZXMoZGF0ZSwgc2VsZi5zZWxlY3RlZERhdGVzWzBdLCB0cnVlKSA9PT0gMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyhkYXlFbGVtZW50LCBcImVuZFJhbmdlXCIsIHNlbGYuc2VsZWN0ZWREYXRlc1sxXSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhcmVEYXRlcyhkYXRlLCBzZWxmLnNlbGVjdGVkRGF0ZXNbMV0sIHRydWUpID09PSAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjbGFzc05hbWUgPT09IFwibmV4dE1vbnRoRGF5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5RWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiaW5SYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRheUVsZW1lbnQuY2xhc3NMaXN0LmFkZChcImZsYXRwaWNrci1kaXNhYmxlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5tb2RlID09PSBcInJhbmdlXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNEYXRlSW5SYW5nZShkYXRlKSAmJiAhaXNEYXRlU2VsZWN0ZWQoZGF0ZSkpXG4gICAgICAgICAgICAgICAgICAgIGRheUVsZW1lbnQuY2xhc3NMaXN0LmFkZChcImluUmFuZ2VcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VsZi53ZWVrTnVtYmVycyAmJlxuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLnNob3dNb250aHMgPT09IDEgJiZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWUgIT09IFwicHJldk1vbnRoRGF5XCIgJiZcbiAgICAgICAgICAgICAgICBkYXlOdW1iZXIgJSA3ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgc2VsZi53ZWVrTnVtYmVycy5pbnNlcnRBZGphY2VudEhUTUwoXCJiZWZvcmVlbmRcIiwgXCI8c3BhbiBjbGFzcz0nZmxhdHBpY2tyLWRheSc+XCIgKyBzZWxmLmNvbmZpZy5nZXRXZWVrKGRhdGUpICsgXCI8L3NwYW4+XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJpZ2dlckV2ZW50KFwib25EYXlDcmVhdGVcIiwgZGF5RWxlbWVudCk7XG4gICAgICAgICAgICByZXR1cm4gZGF5RWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBmb2N1c09uRGF5RWxlbSh0YXJnZXROb2RlKSB7XG4gICAgICAgICAgICB0YXJnZXROb2RlLmZvY3VzKCk7XG4gICAgICAgICAgICBpZiAoc2VsZi5jb25maWcubW9kZSA9PT0gXCJyYW5nZVwiKVxuICAgICAgICAgICAgICAgIG9uTW91c2VPdmVyKHRhcmdldE5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGdldEZpcnN0QXZhaWxhYmxlRGF5KGRlbHRhKSB7XG4gICAgICAgICAgICB2YXIgc3RhcnRNb250aCA9IGRlbHRhID4gMCA/IDAgOiBzZWxmLmNvbmZpZy5zaG93TW9udGhzIC0gMTtcbiAgICAgICAgICAgIHZhciBlbmRNb250aCA9IGRlbHRhID4gMCA/IHNlbGYuY29uZmlnLnNob3dNb250aHMgOiAtMTtcbiAgICAgICAgICAgIGZvciAodmFyIG0gPSBzdGFydE1vbnRoOyBtICE9IGVuZE1vbnRoOyBtICs9IGRlbHRhKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1vbnRoID0gc2VsZi5kYXlzQ29udGFpbmVyLmNoaWxkcmVuW21dO1xuICAgICAgICAgICAgICAgIHZhciBzdGFydEluZGV4ID0gZGVsdGEgPiAwID8gMCA6IG1vbnRoLmNoaWxkcmVuLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgdmFyIGVuZEluZGV4ID0gZGVsdGEgPiAwID8gbW9udGguY2hpbGRyZW4ubGVuZ3RoIDogLTE7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IHN0YXJ0SW5kZXg7IGkgIT0gZW5kSW5kZXg7IGkgKz0gZGVsdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBtb250aC5jaGlsZHJlbltpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGMuY2xhc3NOYW1lLmluZGV4T2YoXCJoaWRkZW5cIikgPT09IC0xICYmIGlzRW5hYmxlZChjLmRhdGVPYmopKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBnZXROZXh0QXZhaWxhYmxlRGF5KGN1cnJlbnQsIGRlbHRhKSB7XG4gICAgICAgICAgICB2YXIgZ2l2ZW5Nb250aCA9IGN1cnJlbnQuY2xhc3NOYW1lLmluZGV4T2YoXCJNb250aFwiKSA9PT0gLTFcbiAgICAgICAgICAgICAgICA/IGN1cnJlbnQuZGF0ZU9iai5nZXRNb250aCgpXG4gICAgICAgICAgICAgICAgOiBzZWxmLmN1cnJlbnRNb250aDtcbiAgICAgICAgICAgIHZhciBlbmRNb250aCA9IGRlbHRhID4gMCA/IHNlbGYuY29uZmlnLnNob3dNb250aHMgOiAtMTtcbiAgICAgICAgICAgIHZhciBsb29wRGVsdGEgPSBkZWx0YSA+IDAgPyAxIDogLTE7XG4gICAgICAgICAgICBmb3IgKHZhciBtID0gZ2l2ZW5Nb250aCAtIHNlbGYuY3VycmVudE1vbnRoOyBtICE9IGVuZE1vbnRoOyBtICs9IGxvb3BEZWx0YSkge1xuICAgICAgICAgICAgICAgIHZhciBtb250aCA9IHNlbGYuZGF5c0NvbnRhaW5lci5jaGlsZHJlblttXTtcbiAgICAgICAgICAgICAgICB2YXIgc3RhcnRJbmRleCA9IGdpdmVuTW9udGggLSBzZWxmLmN1cnJlbnRNb250aCA9PT0gbVxuICAgICAgICAgICAgICAgICAgICA/IGN1cnJlbnQuJGkgKyBkZWx0YVxuICAgICAgICAgICAgICAgICAgICA6IGRlbHRhIDwgMFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBtb250aC5jaGlsZHJlbi5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA6IDA7XG4gICAgICAgICAgICAgICAgdmFyIG51bU1vbnRoRGF5cyA9IG1vbnRoLmNoaWxkcmVuLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gc3RhcnRJbmRleDsgaSA+PSAwICYmIGkgPCBudW1Nb250aERheXMgJiYgaSAhPSAoZGVsdGEgPiAwID8gbnVtTW9udGhEYXlzIDogLTEpOyBpICs9IGxvb3BEZWx0YSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IG1vbnRoLmNoaWxkcmVuW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYy5jbGFzc05hbWUuaW5kZXhPZihcImhpZGRlblwiKSA9PT0gLTEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRW5hYmxlZChjLmRhdGVPYmopICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmFicyhjdXJyZW50LiRpIC0gaSkgPj0gTWF0aC5hYnMoZGVsdGEpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvY3VzT25EYXlFbGVtKGMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGYuY2hhbmdlTW9udGgobG9vcERlbHRhKTtcbiAgICAgICAgICAgIGZvY3VzT25EYXkoZ2V0Rmlyc3RBdmFpbGFibGVEYXkobG9vcERlbHRhKSwgMCk7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGZvY3VzT25EYXkoY3VycmVudCwgb2Zmc2V0KSB7XG4gICAgICAgICAgICB2YXIgZGF5Rm9jdXNlZCA9IGlzSW5WaWV3KGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgfHwgZG9jdW1lbnQuYm9keSk7XG4gICAgICAgICAgICB2YXIgc3RhcnRFbGVtID0gY3VycmVudCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyBjdXJyZW50XG4gICAgICAgICAgICAgICAgOiBkYXlGb2N1c2VkXG4gICAgICAgICAgICAgICAgICAgID8gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICAgICAgICAgICAgICAgICAgICA6IHNlbGYuc2VsZWN0ZWREYXRlRWxlbSAhPT0gdW5kZWZpbmVkICYmIGlzSW5WaWV3KHNlbGYuc2VsZWN0ZWREYXRlRWxlbSlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2VsZi5zZWxlY3RlZERhdGVFbGVtXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlbGYudG9kYXlEYXRlRWxlbSAhPT0gdW5kZWZpbmVkICYmIGlzSW5WaWV3KHNlbGYudG9kYXlEYXRlRWxlbSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNlbGYudG9kYXlEYXRlRWxlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZ2V0Rmlyc3RBdmFpbGFibGVEYXkob2Zmc2V0ID4gMCA/IDEgOiAtMSk7XG4gICAgICAgICAgICBpZiAoc3RhcnRFbGVtID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2lucHV0LmZvY3VzKCk7XG4gICAgICAgICAgICBpZiAoIWRheUZvY3VzZWQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvY3VzT25EYXlFbGVtKHN0YXJ0RWxlbSk7XG4gICAgICAgICAgICBnZXROZXh0QXZhaWxhYmxlRGF5KHN0YXJ0RWxlbSwgb2Zmc2V0KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBidWlsZE1vbnRoRGF5cyh5ZWFyLCBtb250aCkge1xuICAgICAgICAgICAgdmFyIGZpcnN0T2ZNb250aCA9IChuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSkuZ2V0RGF5KCkgLSBzZWxmLmwxMG4uZmlyc3REYXlPZldlZWsgKyA3KSAlIDc7XG4gICAgICAgICAgICB2YXIgcHJldk1vbnRoRGF5cyA9IHNlbGYudXRpbHMuZ2V0RGF5c0luTW9udGgoKG1vbnRoIC0gMSArIDEyKSAlIDEyKTtcbiAgICAgICAgICAgIHZhciBkYXlzSW5Nb250aCA9IHNlbGYudXRpbHMuZ2V0RGF5c0luTW9udGgobW9udGgpLCBkYXlzID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSwgaXNNdWx0aU1vbnRoID0gc2VsZi5jb25maWcuc2hvd01vbnRocyA+IDEsIHByZXZNb250aERheUNsYXNzID0gaXNNdWx0aU1vbnRoID8gXCJwcmV2TW9udGhEYXkgaGlkZGVuXCIgOiBcInByZXZNb250aERheVwiLCBuZXh0TW9udGhEYXlDbGFzcyA9IGlzTXVsdGlNb250aCA/IFwibmV4dE1vbnRoRGF5IGhpZGRlblwiIDogXCJuZXh0TW9udGhEYXlcIjtcbiAgICAgICAgICAgIHZhciBkYXlOdW1iZXIgPSBwcmV2TW9udGhEYXlzICsgMSAtIGZpcnN0T2ZNb250aCwgZGF5SW5kZXggPSAwO1xuICAgICAgICAgICAgLy8gcHJlcGVuZCBkYXlzIGZyb20gdGhlIGVuZGluZyBvZiBwcmV2aW91cyBtb250aFxuICAgICAgICAgICAgZm9yICg7IGRheU51bWJlciA8PSBwcmV2TW9udGhEYXlzOyBkYXlOdW1iZXIrKywgZGF5SW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGRheXMuYXBwZW5kQ2hpbGQoY3JlYXRlRGF5KHByZXZNb250aERheUNsYXNzLCBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheU51bWJlciksIGRheU51bWJlciwgZGF5SW5kZXgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFN0YXJ0IGF0IDEgc2luY2UgdGhlcmUgaXMgbm8gMHRoIGRheVxuICAgICAgICAgICAgZm9yIChkYXlOdW1iZXIgPSAxOyBkYXlOdW1iZXIgPD0gZGF5c0luTW9udGg7IGRheU51bWJlcisrLCBkYXlJbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgZGF5cy5hcHBlbmRDaGlsZChjcmVhdGVEYXkoXCJcIiwgbmV3IERhdGUoeWVhciwgbW9udGgsIGRheU51bWJlciksIGRheU51bWJlciwgZGF5SW5kZXgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGFwcGVuZCBkYXlzIGZyb20gdGhlIG5leHQgbW9udGhcbiAgICAgICAgICAgIGZvciAodmFyIGRheU51bSA9IGRheXNJbk1vbnRoICsgMTsgZGF5TnVtIDw9IDQyIC0gZmlyc3RPZk1vbnRoICYmXG4gICAgICAgICAgICAgICAgKHNlbGYuY29uZmlnLnNob3dNb250aHMgPT09IDEgfHwgZGF5SW5kZXggJSA3ICE9PSAwKTsgZGF5TnVtKyssIGRheUluZGV4KyspIHtcbiAgICAgICAgICAgICAgICBkYXlzLmFwcGVuZENoaWxkKGNyZWF0ZURheShuZXh0TW9udGhEYXlDbGFzcywgbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCBkYXlOdW0gJSBkYXlzSW5Nb250aCksIGRheU51bSwgZGF5SW5kZXgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vdXBkYXRlTmF2aWdhdGlvbkN1cnJlbnRNb250aCgpO1xuICAgICAgICAgICAgdmFyIGRheUNvbnRhaW5lciA9IGNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgXCJkYXlDb250YWluZXJcIik7XG4gICAgICAgICAgICBkYXlDb250YWluZXIuYXBwZW5kQ2hpbGQoZGF5cyk7XG4gICAgICAgICAgICByZXR1cm4gZGF5Q29udGFpbmVyO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGJ1aWxkRGF5cygpIHtcbiAgICAgICAgICAgIGlmIChzZWxmLmRheXNDb250YWluZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNsZWFyTm9kZShzZWxmLmRheXNDb250YWluZXIpO1xuICAgICAgICAgICAgLy8gVE9ETzogd2VlayBudW1iZXJzIGZvciBlYWNoIG1vbnRoXG4gICAgICAgICAgICBpZiAoc2VsZi53ZWVrTnVtYmVycylcbiAgICAgICAgICAgICAgICBjbGVhck5vZGUoc2VsZi53ZWVrTnVtYmVycyk7XG4gICAgICAgICAgICB2YXIgZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZi5jb25maWcuc2hvd01vbnRoczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGQgPSBuZXcgRGF0ZShzZWxmLmN1cnJlbnRZZWFyLCBzZWxmLmN1cnJlbnRNb250aCwgMSk7XG4gICAgICAgICAgICAgICAgZC5zZXRNb250aChzZWxmLmN1cnJlbnRNb250aCArIGkpO1xuICAgICAgICAgICAgICAgIGZyYWcuYXBwZW5kQ2hpbGQoYnVpbGRNb250aERheXMoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGYuZGF5c0NvbnRhaW5lci5hcHBlbmRDaGlsZChmcmFnKTtcbiAgICAgICAgICAgIHNlbGYuZGF5cyA9IHNlbGYuZGF5c0NvbnRhaW5lci5maXJzdENoaWxkO1xuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLm1vZGUgPT09IFwicmFuZ2VcIiAmJiBzZWxmLnNlbGVjdGVkRGF0ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgb25Nb3VzZU92ZXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBidWlsZE1vbnRoU3dpdGNoKCkge1xuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLnNob3dNb250aHMgPiAxIHx8XG4gICAgICAgICAgICAgICAgc2VsZi5jb25maWcubW9udGhTZWxlY3RvclR5cGUgIT09IFwiZHJvcGRvd25cIilcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB2YXIgc2hvdWxkQnVpbGRNb250aCA9IGZ1bmN0aW9uIChtb250aCkge1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5taW5EYXRlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50WWVhciA9PT0gc2VsZi5jb25maWcubWluRGF0ZS5nZXRGdWxsWWVhcigpICYmXG4gICAgICAgICAgICAgICAgICAgIG1vbnRoIDwgc2VsZi5jb25maWcubWluRGF0ZS5nZXRNb250aCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuICEoc2VsZi5jb25maWcubWF4RGF0ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudFllYXIgPT09IHNlbGYuY29uZmlnLm1heERhdGUuZ2V0RnVsbFllYXIoKSAmJlxuICAgICAgICAgICAgICAgICAgICBtb250aCA+IHNlbGYuY29uZmlnLm1heERhdGUuZ2V0TW9udGgoKSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgc2VsZi5tb250aHNEcm9wZG93bkNvbnRhaW5lci50YWJJbmRleCA9IC0xO1xuICAgICAgICAgICAgc2VsZi5tb250aHNEcm9wZG93bkNvbnRhaW5lci5pbm5lckhUTUwgPSBcIlwiO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFzaG91bGRCdWlsZE1vbnRoKGkpKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB2YXIgbW9udGggPSBjcmVhdGVFbGVtZW50KFwib3B0aW9uXCIsIFwiZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGhcIik7XG4gICAgICAgICAgICAgICAgbW9udGgudmFsdWUgPSBuZXcgRGF0ZShzZWxmLmN1cnJlbnRZZWFyLCBpKS5nZXRNb250aCgpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgbW9udGgudGV4dENvbnRlbnQgPSBtb250aFRvU3RyKGksIHNlbGYuY29uZmlnLnNob3J0aGFuZEN1cnJlbnRNb250aCwgc2VsZi5sMTBuKTtcbiAgICAgICAgICAgICAgICBtb250aC50YWJJbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLmN1cnJlbnRNb250aCA9PT0gaSkge1xuICAgICAgICAgICAgICAgICAgICBtb250aC5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNlbGYubW9udGhzRHJvcGRvd25Db250YWluZXIuYXBwZW5kQ2hpbGQobW9udGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGJ1aWxkTW9udGgoKSB7XG4gICAgICAgICAgICB2YXIgY29udGFpbmVyID0gY3JlYXRlRWxlbWVudChcImRpdlwiLCBcImZsYXRwaWNrci1tb250aFwiKTtcbiAgICAgICAgICAgIHZhciBtb250aE5hdkZyYWdtZW50ID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgICAgICAgIHZhciBtb250aEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoc2VsZi5jb25maWcuc2hvd01vbnRocyA+IDEgfHxcbiAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZy5tb250aFNlbGVjdG9yVHlwZSA9PT0gXCJzdGF0aWNcIikge1xuICAgICAgICAgICAgICAgIG1vbnRoRWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIFwiY3VyLW1vbnRoXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZi5tb250aHNEcm9wZG93bkNvbnRhaW5lciA9IGNyZWF0ZUVsZW1lbnQoXCJzZWxlY3RcIiwgXCJmbGF0cGlja3ItbW9udGhEcm9wZG93bi1tb250aHNcIik7XG4gICAgICAgICAgICAgICAgYmluZChzZWxmLm1vbnRoc0Ryb3Bkb3duQ29udGFpbmVyLCBcImNoYW5nZVwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3RlZE1vbnRoID0gcGFyc2VJbnQodGFyZ2V0LnZhbHVlLCAxMCk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuY2hhbmdlTW9udGgoc2VsZWN0ZWRNb250aCAtIHNlbGYuY3VycmVudE1vbnRoKTtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlckV2ZW50KFwib25Nb250aENoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBidWlsZE1vbnRoU3dpdGNoKCk7XG4gICAgICAgICAgICAgICAgbW9udGhFbGVtZW50ID0gc2VsZi5tb250aHNEcm9wZG93bkNvbnRhaW5lcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciB5ZWFySW5wdXQgPSBjcmVhdGVOdW1iZXJJbnB1dChcImN1ci15ZWFyXCIsIHsgdGFiaW5kZXg6IFwiLTFcIiB9KTtcbiAgICAgICAgICAgIHZhciB5ZWFyRWxlbWVudCA9IHllYXJJbnB1dC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImlucHV0XCIpWzBdO1xuICAgICAgICAgICAgeWVhckVsZW1lbnQuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLCBzZWxmLmwxMG4ueWVhckFyaWFMYWJlbCk7XG4gICAgICAgICAgICBpZiAoc2VsZi5jb25maWcubWluRGF0ZSkge1xuICAgICAgICAgICAgICAgIHllYXJFbGVtZW50LnNldEF0dHJpYnV0ZShcIm1pblwiLCBzZWxmLmNvbmZpZy5taW5EYXRlLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VsZi5jb25maWcubWF4RGF0ZSkge1xuICAgICAgICAgICAgICAgIHllYXJFbGVtZW50LnNldEF0dHJpYnV0ZShcIm1heFwiLCBzZWxmLmNvbmZpZy5tYXhEYXRlLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgeWVhckVsZW1lbnQuZGlzYWJsZWQgPVxuICAgICAgICAgICAgICAgICAgICAhIXNlbGYuY29uZmlnLm1pbkRhdGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKSA9PT0gc2VsZi5jb25maWcubWF4RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGN1cnJlbnRNb250aCA9IGNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgXCJmbGF0cGlja3ItY3VycmVudC1tb250aFwiKTtcbiAgICAgICAgICAgIGN1cnJlbnRNb250aC5hcHBlbmRDaGlsZChtb250aEVsZW1lbnQpO1xuICAgICAgICAgICAgY3VycmVudE1vbnRoLmFwcGVuZENoaWxkKHllYXJJbnB1dCk7XG4gICAgICAgICAgICBtb250aE5hdkZyYWdtZW50LmFwcGVuZENoaWxkKGN1cnJlbnRNb250aCk7XG4gICAgICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQobW9udGhOYXZGcmFnbWVudCk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyLFxuICAgICAgICAgICAgICAgIHllYXJFbGVtZW50OiB5ZWFyRWxlbWVudCxcbiAgICAgICAgICAgICAgICBtb250aEVsZW1lbnQ6IG1vbnRoRWxlbWVudFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBidWlsZE1vbnRocygpIHtcbiAgICAgICAgICAgIGNsZWFyTm9kZShzZWxmLm1vbnRoTmF2KTtcbiAgICAgICAgICAgIHNlbGYubW9udGhOYXYuYXBwZW5kQ2hpbGQoc2VsZi5wcmV2TW9udGhOYXYpO1xuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLnNob3dNb250aHMpIHtcbiAgICAgICAgICAgICAgICBzZWxmLnllYXJFbGVtZW50cyA9IFtdO1xuICAgICAgICAgICAgICAgIHNlbGYubW9udGhFbGVtZW50cyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICh2YXIgbSA9IHNlbGYuY29uZmlnLnNob3dNb250aHM7IG0tLTspIHtcbiAgICAgICAgICAgICAgICB2YXIgbW9udGggPSBidWlsZE1vbnRoKCk7XG4gICAgICAgICAgICAgICAgc2VsZi55ZWFyRWxlbWVudHMucHVzaChtb250aC55ZWFyRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgc2VsZi5tb250aEVsZW1lbnRzLnB1c2gobW9udGgubW9udGhFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBzZWxmLm1vbnRoTmF2LmFwcGVuZENoaWxkKG1vbnRoLmNvbnRhaW5lcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxmLm1vbnRoTmF2LmFwcGVuZENoaWxkKHNlbGYubmV4dE1vbnRoTmF2KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBidWlsZE1vbnRoTmF2KCkge1xuICAgICAgICAgICAgc2VsZi5tb250aE5hdiA9IGNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgXCJmbGF0cGlja3ItbW9udGhzXCIpO1xuICAgICAgICAgICAgc2VsZi55ZWFyRWxlbWVudHMgPSBbXTtcbiAgICAgICAgICAgIHNlbGYubW9udGhFbGVtZW50cyA9IFtdO1xuICAgICAgICAgICAgc2VsZi5wcmV2TW9udGhOYXYgPSBjcmVhdGVFbGVtZW50KFwic3BhblwiLCBcImZsYXRwaWNrci1wcmV2LW1vbnRoXCIpO1xuICAgICAgICAgICAgc2VsZi5wcmV2TW9udGhOYXYuaW5uZXJIVE1MID0gc2VsZi5jb25maWcucHJldkFycm93O1xuICAgICAgICAgICAgc2VsZi5uZXh0TW9udGhOYXYgPSBjcmVhdGVFbGVtZW50KFwic3BhblwiLCBcImZsYXRwaWNrci1uZXh0LW1vbnRoXCIpO1xuICAgICAgICAgICAgc2VsZi5uZXh0TW9udGhOYXYuaW5uZXJIVE1MID0gc2VsZi5jb25maWcubmV4dEFycm93O1xuICAgICAgICAgICAgYnVpbGRNb250aHMoKTtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzZWxmLCBcIl9oaWRlUHJldk1vbnRoQXJyb3dcIiwge1xuICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gc2VsZi5fX2hpZGVQcmV2TW9udGhBcnJvdzsgfSxcbiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uIChib29sKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLl9faGlkZVByZXZNb250aEFycm93ICE9PSBib29sKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyhzZWxmLnByZXZNb250aE5hdiwgXCJmbGF0cGlja3ItZGlzYWJsZWRcIiwgYm9vbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9faGlkZVByZXZNb250aEFycm93ID0gYm9vbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHNlbGYsIFwiX2hpZGVOZXh0TW9udGhBcnJvd1wiLCB7XG4gICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBzZWxmLl9faGlkZU5leHRNb250aEFycm93OyB9LFxuICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24gKGJvb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuX19oaWRlTmV4dE1vbnRoQXJyb3cgIT09IGJvb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHNlbGYubmV4dE1vbnRoTmF2LCBcImZsYXRwaWNrci1kaXNhYmxlZFwiLCBib29sKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19oaWRlTmV4dE1vbnRoQXJyb3cgPSBib29sO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzZWxmLmN1cnJlbnRZZWFyRWxlbWVudCA9IHNlbGYueWVhckVsZW1lbnRzWzBdO1xuICAgICAgICAgICAgdXBkYXRlTmF2aWdhdGlvbkN1cnJlbnRNb250aCgpO1xuICAgICAgICAgICAgcmV0dXJuIHNlbGYubW9udGhOYXY7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gYnVpbGRUaW1lKCkge1xuICAgICAgICAgICAgc2VsZi5jYWxlbmRhckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwiaGFzVGltZVwiKTtcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5ub0NhbGVuZGFyKVxuICAgICAgICAgICAgICAgIHNlbGYuY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZChcIm5vQ2FsZW5kYXJcIik7XG4gICAgICAgICAgICBzZWxmLnRpbWVDb250YWluZXIgPSBjcmVhdGVFbGVtZW50KFwiZGl2XCIsIFwiZmxhdHBpY2tyLXRpbWVcIik7XG4gICAgICAgICAgICBzZWxmLnRpbWVDb250YWluZXIudGFiSW5kZXggPSAtMTtcbiAgICAgICAgICAgIHZhciBzZXBhcmF0b3IgPSBjcmVhdGVFbGVtZW50KFwic3BhblwiLCBcImZsYXRwaWNrci10aW1lLXNlcGFyYXRvclwiLCBcIjpcIik7XG4gICAgICAgICAgICB2YXIgaG91cklucHV0ID0gY3JlYXRlTnVtYmVySW5wdXQoXCJmbGF0cGlja3ItaG91clwiLCB7XG4gICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IHNlbGYubDEwbi5ob3VyQXJpYUxhYmVsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNlbGYuaG91ckVsZW1lbnQgPSBob3VySW5wdXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJpbnB1dFwiKVswXTtcbiAgICAgICAgICAgIHZhciBtaW51dGVJbnB1dCA9IGNyZWF0ZU51bWJlcklucHV0KFwiZmxhdHBpY2tyLW1pbnV0ZVwiLCB7XG4gICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IHNlbGYubDEwbi5taW51dGVBcmlhTGFiZWxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2VsZi5taW51dGVFbGVtZW50ID0gbWludXRlSW5wdXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJpbnB1dFwiKVswXTtcbiAgICAgICAgICAgIHNlbGYuaG91ckVsZW1lbnQudGFiSW5kZXggPSBzZWxmLm1pbnV0ZUVsZW1lbnQudGFiSW5kZXggPSAtMTtcbiAgICAgICAgICAgIHNlbGYuaG91ckVsZW1lbnQudmFsdWUgPSBwYWQoc2VsZi5sYXRlc3RTZWxlY3RlZERhdGVPYmpcbiAgICAgICAgICAgICAgICA/IHNlbGYubGF0ZXN0U2VsZWN0ZWREYXRlT2JqLmdldEhvdXJzKClcbiAgICAgICAgICAgICAgICA6IHNlbGYuY29uZmlnLnRpbWVfMjRoclxuICAgICAgICAgICAgICAgICAgICA/IHNlbGYuY29uZmlnLmRlZmF1bHRIb3VyXG4gICAgICAgICAgICAgICAgICAgIDogbWlsaXRhcnkyYW1wbShzZWxmLmNvbmZpZy5kZWZhdWx0SG91cikpO1xuICAgICAgICAgICAgc2VsZi5taW51dGVFbGVtZW50LnZhbHVlID0gcGFkKHNlbGYubGF0ZXN0U2VsZWN0ZWREYXRlT2JqXG4gICAgICAgICAgICAgICAgPyBzZWxmLmxhdGVzdFNlbGVjdGVkRGF0ZU9iai5nZXRNaW51dGVzKClcbiAgICAgICAgICAgICAgICA6IHNlbGYuY29uZmlnLmRlZmF1bHRNaW51dGUpO1xuICAgICAgICAgICAgc2VsZi5ob3VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJzdGVwXCIsIHNlbGYuY29uZmlnLmhvdXJJbmNyZW1lbnQudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICBzZWxmLm1pbnV0ZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwic3RlcFwiLCBzZWxmLmNvbmZpZy5taW51dGVJbmNyZW1lbnQudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICBzZWxmLmhvdXJFbGVtZW50LnNldEF0dHJpYnV0ZShcIm1pblwiLCBzZWxmLmNvbmZpZy50aW1lXzI0aHIgPyBcIjBcIiA6IFwiMVwiKTtcbiAgICAgICAgICAgIHNlbGYuaG91ckVsZW1lbnQuc2V0QXR0cmlidXRlKFwibWF4XCIsIHNlbGYuY29uZmlnLnRpbWVfMjRociA/IFwiMjNcIiA6IFwiMTJcIik7XG4gICAgICAgICAgICBzZWxmLm1pbnV0ZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwibWluXCIsIFwiMFwiKTtcbiAgICAgICAgICAgIHNlbGYubWludXRlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJtYXhcIiwgXCI1OVwiKTtcbiAgICAgICAgICAgIHNlbGYudGltZUNvbnRhaW5lci5hcHBlbmRDaGlsZChob3VySW5wdXQpO1xuICAgICAgICAgICAgc2VsZi50aW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKHNlcGFyYXRvcik7XG4gICAgICAgICAgICBzZWxmLnRpbWVDb250YWluZXIuYXBwZW5kQ2hpbGQobWludXRlSW5wdXQpO1xuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLnRpbWVfMjRocilcbiAgICAgICAgICAgICAgICBzZWxmLnRpbWVDb250YWluZXIuY2xhc3NMaXN0LmFkZChcInRpbWUyNGhyXCIpO1xuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLmVuYWJsZVNlY29uZHMpIHtcbiAgICAgICAgICAgICAgICBzZWxmLnRpbWVDb250YWluZXIuY2xhc3NMaXN0LmFkZChcImhhc1NlY29uZHNcIik7XG4gICAgICAgICAgICAgICAgdmFyIHNlY29uZElucHV0ID0gY3JlYXRlTnVtYmVySW5wdXQoXCJmbGF0cGlja3Itc2Vjb25kXCIpO1xuICAgICAgICAgICAgICAgIHNlbGYuc2Vjb25kRWxlbWVudCA9IHNlY29uZElucHV0LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaW5wdXRcIilbMF07XG4gICAgICAgICAgICAgICAgc2VsZi5zZWNvbmRFbGVtZW50LnZhbHVlID0gcGFkKHNlbGYubGF0ZXN0U2VsZWN0ZWREYXRlT2JqXG4gICAgICAgICAgICAgICAgICAgID8gc2VsZi5sYXRlc3RTZWxlY3RlZERhdGVPYmouZ2V0U2Vjb25kcygpXG4gICAgICAgICAgICAgICAgICAgIDogc2VsZi5jb25maWcuZGVmYXVsdFNlY29uZHMpO1xuICAgICAgICAgICAgICAgIHNlbGYuc2Vjb25kRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJzdGVwXCIsIHNlbGYubWludXRlRWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJzdGVwXCIpKTtcbiAgICAgICAgICAgICAgICBzZWxmLnNlY29uZEVsZW1lbnQuc2V0QXR0cmlidXRlKFwibWluXCIsIFwiMFwiKTtcbiAgICAgICAgICAgICAgICBzZWxmLnNlY29uZEVsZW1lbnQuc2V0QXR0cmlidXRlKFwibWF4XCIsIFwiNTlcIik7XG4gICAgICAgICAgICAgICAgc2VsZi50aW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKGNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIFwiZmxhdHBpY2tyLXRpbWUtc2VwYXJhdG9yXCIsIFwiOlwiKSk7XG4gICAgICAgICAgICAgICAgc2VsZi50aW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKHNlY29uZElucHV0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc2VsZi5jb25maWcudGltZV8yNGhyKSB7XG4gICAgICAgICAgICAgICAgLy8gYWRkIHNlbGYuYW1QTSBpZiBhcHByb3ByaWF0ZVxuICAgICAgICAgICAgICAgIHNlbGYuYW1QTSA9IGNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIFwiZmxhdHBpY2tyLWFtLXBtXCIsIHNlbGYubDEwbi5hbVBNW2ludCgoc2VsZi5sYXRlc3RTZWxlY3RlZERhdGVPYmpcbiAgICAgICAgICAgICAgICAgICAgPyBzZWxmLmhvdXJFbGVtZW50LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIDogc2VsZi5jb25maWcuZGVmYXVsdEhvdXIpID4gMTEpXSk7XG4gICAgICAgICAgICAgICAgc2VsZi5hbVBNLnRpdGxlID0gc2VsZi5sMTBuLnRvZ2dsZVRpdGxlO1xuICAgICAgICAgICAgICAgIHNlbGYuYW1QTS50YWJJbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgIHNlbGYudGltZUNvbnRhaW5lci5hcHBlbmRDaGlsZChzZWxmLmFtUE0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNlbGYudGltZUNvbnRhaW5lcjtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBidWlsZFdlZWtkYXlzKCkge1xuICAgICAgICAgICAgaWYgKCFzZWxmLndlZWtkYXlDb250YWluZXIpXG4gICAgICAgICAgICAgICAgc2VsZi53ZWVrZGF5Q29udGFpbmVyID0gY3JlYXRlRWxlbWVudChcImRpdlwiLCBcImZsYXRwaWNrci13ZWVrZGF5c1wiKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBjbGVhck5vZGUoc2VsZi53ZWVrZGF5Q29udGFpbmVyKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSBzZWxmLmNvbmZpZy5zaG93TW9udGhzOyBpLS07KSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IGNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgXCJmbGF0cGlja3Itd2Vla2RheWNvbnRhaW5lclwiKTtcbiAgICAgICAgICAgICAgICBzZWxmLndlZWtkYXlDb250YWluZXIuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVwZGF0ZVdlZWtkYXlzKCk7XG4gICAgICAgICAgICByZXR1cm4gc2VsZi53ZWVrZGF5Q29udGFpbmVyO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVdlZWtkYXlzKCkge1xuICAgICAgICAgICAgaWYgKCFzZWxmLndlZWtkYXlDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgZmlyc3REYXlPZldlZWsgPSBzZWxmLmwxMG4uZmlyc3REYXlPZldlZWs7XG4gICAgICAgICAgICB2YXIgd2Vla2RheXMgPSBzZWxmLmwxMG4ud2Vla2RheXMuc2hvcnRoYW5kLnNsaWNlKCk7XG4gICAgICAgICAgICBpZiAoZmlyc3REYXlPZldlZWsgPiAwICYmIGZpcnN0RGF5T2ZXZWVrIDwgd2Vla2RheXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgd2Vla2RheXMgPSB3ZWVrZGF5cy5zcGxpY2UoZmlyc3REYXlPZldlZWssIHdlZWtkYXlzLmxlbmd0aCkuY29uY2F0KHdlZWtkYXlzLnNwbGljZSgwLCBmaXJzdERheU9mV2VlaykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IHNlbGYuY29uZmlnLnNob3dNb250aHM7IGktLTspIHtcbiAgICAgICAgICAgICAgICBzZWxmLndlZWtkYXlDb250YWluZXIuY2hpbGRyZW5baV0uaW5uZXJIVE1MID0gXCJcXG4gICAgICA8c3BhbiBjbGFzcz0nZmxhdHBpY2tyLXdlZWtkYXknPlxcbiAgICAgICAgXCIgKyB3ZWVrZGF5cy5qb2luKFwiPC9zcGFuPjxzcGFuIGNsYXNzPSdmbGF0cGlja3Itd2Vla2RheSc+XCIpICsgXCJcXG4gICAgICA8L3NwYW4+XFxuICAgICAgXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZnVuY3Rpb24gYnVpbGRXZWVrcygpIHtcbiAgICAgICAgICAgIHNlbGYuY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZChcImhhc1dlZWtzXCIpO1xuICAgICAgICAgICAgdmFyIHdlZWtXcmFwcGVyID0gY3JlYXRlRWxlbWVudChcImRpdlwiLCBcImZsYXRwaWNrci13ZWVrd3JhcHBlclwiKTtcbiAgICAgICAgICAgIHdlZWtXcmFwcGVyLmFwcGVuZENoaWxkKGNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIFwiZmxhdHBpY2tyLXdlZWtkYXlcIiwgc2VsZi5sMTBuLndlZWtBYmJyZXZpYXRpb24pKTtcbiAgICAgICAgICAgIHZhciB3ZWVrTnVtYmVycyA9IGNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgXCJmbGF0cGlja3Itd2Vla3NcIik7XG4gICAgICAgICAgICB3ZWVrV3JhcHBlci5hcHBlbmRDaGlsZCh3ZWVrTnVtYmVycyk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHdlZWtXcmFwcGVyOiB3ZWVrV3JhcHBlcixcbiAgICAgICAgICAgICAgICB3ZWVrTnVtYmVyczogd2Vla051bWJlcnNcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gY2hhbmdlTW9udGgodmFsdWUsIGlzT2Zmc2V0KSB7XG4gICAgICAgICAgICBpZiAoaXNPZmZzZXQgPT09IHZvaWQgMCkgeyBpc09mZnNldCA9IHRydWU7IH1cbiAgICAgICAgICAgIHZhciBkZWx0YSA9IGlzT2Zmc2V0ID8gdmFsdWUgOiB2YWx1ZSAtIHNlbGYuY3VycmVudE1vbnRoO1xuICAgICAgICAgICAgaWYgKChkZWx0YSA8IDAgJiYgc2VsZi5faGlkZVByZXZNb250aEFycm93ID09PSB0cnVlKSB8fFxuICAgICAgICAgICAgICAgIChkZWx0YSA+IDAgJiYgc2VsZi5faGlkZU5leHRNb250aEFycm93ID09PSB0cnVlKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBzZWxmLmN1cnJlbnRNb250aCArPSBkZWx0YTtcbiAgICAgICAgICAgIGlmIChzZWxmLmN1cnJlbnRNb250aCA8IDAgfHwgc2VsZi5jdXJyZW50TW9udGggPiAxMSkge1xuICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudFllYXIgKz0gc2VsZi5jdXJyZW50TW9udGggPiAxMSA/IDEgOiAtMTtcbiAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnRNb250aCA9IChzZWxmLmN1cnJlbnRNb250aCArIDEyKSAlIDEyO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJFdmVudChcIm9uWWVhckNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICBidWlsZE1vbnRoU3dpdGNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidWlsZERheXMoKTtcbiAgICAgICAgICAgIHRyaWdnZXJFdmVudChcIm9uTW9udGhDaGFuZ2VcIik7XG4gICAgICAgICAgICB1cGRhdGVOYXZpZ2F0aW9uQ3VycmVudE1vbnRoKCk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gY2xlYXIodHJpZ2dlckNoYW5nZUV2ZW50LCB0b0luaXRpYWwpIHtcbiAgICAgICAgICAgIGlmICh0cmlnZ2VyQ2hhbmdlRXZlbnQgPT09IHZvaWQgMCkgeyB0cmlnZ2VyQ2hhbmdlRXZlbnQgPSB0cnVlOyB9XG4gICAgICAgICAgICBpZiAodG9Jbml0aWFsID09PSB2b2lkIDApIHsgdG9Jbml0aWFsID0gdHJ1ZTsgfVxuICAgICAgICAgICAgc2VsZi5pbnB1dC52YWx1ZSA9IFwiXCI7XG4gICAgICAgICAgICBpZiAoc2VsZi5hbHRJbnB1dCAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIHNlbGYuYWx0SW5wdXQudmFsdWUgPSBcIlwiO1xuICAgICAgICAgICAgaWYgKHNlbGYubW9iaWxlSW5wdXQgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBzZWxmLm1vYmlsZUlucHV0LnZhbHVlID0gXCJcIjtcbiAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWREYXRlcyA9IFtdO1xuICAgICAgICAgICAgc2VsZi5sYXRlc3RTZWxlY3RlZERhdGVPYmogPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAodG9Jbml0aWFsID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50WWVhciA9IHNlbGYuX2luaXRpYWxEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50TW9udGggPSBzZWxmLl9pbml0aWFsRGF0ZS5nZXRNb250aCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZi5zaG93VGltZUlucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoc2VsZi5jb25maWcuZW5hYmxlVGltZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHNldERlZmF1bHRIb3VycygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZi5yZWRyYXcoKTtcbiAgICAgICAgICAgIGlmICh0cmlnZ2VyQ2hhbmdlRXZlbnQpXG4gICAgICAgICAgICAgICAgLy8gdHJpZ2dlckNoYW5nZUV2ZW50IGlzIHRydWUgKGRlZmF1bHQpIG9yIGFuIEV2ZW50XG4gICAgICAgICAgICAgICAgdHJpZ2dlckV2ZW50KFwib25DaGFuZ2VcIik7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gY2xvc2UoKSB7XG4gICAgICAgICAgICBzZWxmLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKCFzZWxmLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuY2FsZW5kYXJDb250YWluZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmNhbGVuZGFyQ29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoXCJvcGVuXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5faW5wdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dC5jbGFzc0xpc3QucmVtb3ZlKFwiYWN0aXZlXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyaWdnZXJFdmVudChcIm9uQ2xvc2VcIik7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZyAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIHRyaWdnZXJFdmVudChcIm9uRGVzdHJveVwiKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSBzZWxmLl9oYW5kbGVycy5sZW5ndGg7IGktLTspIHtcbiAgICAgICAgICAgICAgICB2YXIgaCA9IHNlbGYuX2hhbmRsZXJzW2ldO1xuICAgICAgICAgICAgICAgIGguZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGguZXZlbnQsIGguaGFuZGxlciwgaC5vcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGYuX2hhbmRsZXJzID0gW107XG4gICAgICAgICAgICBpZiAoc2VsZi5tb2JpbGVJbnB1dCkge1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLm1vYmlsZUlucHV0LnBhcmVudE5vZGUpXG4gICAgICAgICAgICAgICAgICAgIHNlbGYubW9iaWxlSW5wdXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzZWxmLm1vYmlsZUlucHV0KTtcbiAgICAgICAgICAgICAgICBzZWxmLm1vYmlsZUlucHV0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc2VsZi5jYWxlbmRhckNvbnRhaW5lciAmJiBzZWxmLmNhbGVuZGFyQ29udGFpbmVyLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5jb25maWcuc3RhdGljICYmIHNlbGYuY2FsZW5kYXJDb250YWluZXIucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgd3JhcHBlciA9IHNlbGYuY2FsZW5kYXJDb250YWluZXIucGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICAgICAgd3JhcHBlci5sYXN0Q2hpbGQgJiYgd3JhcHBlci5yZW1vdmVDaGlsZCh3cmFwcGVyLmxhc3RDaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3cmFwcGVyLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh3cmFwcGVyLmZpcnN0Q2hpbGQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlci5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh3cmFwcGVyLmZpcnN0Q2hpbGQsIHdyYXBwZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHdyYXBwZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5jYWxlbmRhckNvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNlbGYuY2FsZW5kYXJDb250YWluZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGYuYWx0SW5wdXQpIHtcbiAgICAgICAgICAgICAgICBzZWxmLmlucHV0LnR5cGUgPSBcInRleHRcIjtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5hbHRJbnB1dC5wYXJlbnROb2RlKVxuICAgICAgICAgICAgICAgICAgICBzZWxmLmFsdElucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc2VsZi5hbHRJbnB1dCk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHNlbGYuYWx0SW5wdXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VsZi5pbnB1dCkge1xuICAgICAgICAgICAgICAgIHNlbGYuaW5wdXQudHlwZSA9IHNlbGYuaW5wdXQuX3R5cGU7XG4gICAgICAgICAgICAgICAgc2VsZi5pbnB1dC5jbGFzc0xpc3QucmVtb3ZlKFwiZmxhdHBpY2tyLWlucHV0XCIpO1xuICAgICAgICAgICAgICAgIHNlbGYuaW5wdXQucmVtb3ZlQXR0cmlidXRlKFwicmVhZG9ubHlcIik7XG4gICAgICAgICAgICAgICAgc2VsZi5pbnB1dC52YWx1ZSA9IFwiXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgXCJfc2hvd1RpbWVJbnB1dFwiLFxuICAgICAgICAgICAgICAgIFwibGF0ZXN0U2VsZWN0ZWREYXRlT2JqXCIsXG4gICAgICAgICAgICAgICAgXCJfaGlkZU5leHRNb250aEFycm93XCIsXG4gICAgICAgICAgICAgICAgXCJfaGlkZVByZXZNb250aEFycm93XCIsXG4gICAgICAgICAgICAgICAgXCJfX2hpZGVOZXh0TW9udGhBcnJvd1wiLFxuICAgICAgICAgICAgICAgIFwiX19oaWRlUHJldk1vbnRoQXJyb3dcIixcbiAgICAgICAgICAgICAgICBcImlzTW9iaWxlXCIsXG4gICAgICAgICAgICAgICAgXCJpc09wZW5cIixcbiAgICAgICAgICAgICAgICBcInNlbGVjdGVkRGF0ZUVsZW1cIixcbiAgICAgICAgICAgICAgICBcIm1pbkRhdGVIYXNUaW1lXCIsXG4gICAgICAgICAgICAgICAgXCJtYXhEYXRlSGFzVGltZVwiLFxuICAgICAgICAgICAgICAgIFwiZGF5c1wiLFxuICAgICAgICAgICAgICAgIFwiZGF5c0NvbnRhaW5lclwiLFxuICAgICAgICAgICAgICAgIFwiX2lucHV0XCIsXG4gICAgICAgICAgICAgICAgXCJfcG9zaXRpb25FbGVtZW50XCIsXG4gICAgICAgICAgICAgICAgXCJpbm5lckNvbnRhaW5lclwiLFxuICAgICAgICAgICAgICAgIFwickNvbnRhaW5lclwiLFxuICAgICAgICAgICAgICAgIFwibW9udGhOYXZcIixcbiAgICAgICAgICAgICAgICBcInRvZGF5RGF0ZUVsZW1cIixcbiAgICAgICAgICAgICAgICBcImNhbGVuZGFyQ29udGFpbmVyXCIsXG4gICAgICAgICAgICAgICAgXCJ3ZWVrZGF5Q29udGFpbmVyXCIsXG4gICAgICAgICAgICAgICAgXCJwcmV2TW9udGhOYXZcIixcbiAgICAgICAgICAgICAgICBcIm5leHRNb250aE5hdlwiLFxuICAgICAgICAgICAgICAgIFwibW9udGhzRHJvcGRvd25Db250YWluZXJcIixcbiAgICAgICAgICAgICAgICBcImN1cnJlbnRNb250aEVsZW1lbnRcIixcbiAgICAgICAgICAgICAgICBcImN1cnJlbnRZZWFyRWxlbWVudFwiLFxuICAgICAgICAgICAgICAgIFwibmF2aWdhdGlvbkN1cnJlbnRNb250aFwiLFxuICAgICAgICAgICAgICAgIFwic2VsZWN0ZWREYXRlRWxlbVwiLFxuICAgICAgICAgICAgICAgIFwiY29uZmlnXCIsXG4gICAgICAgICAgICBdLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgc2VsZltrXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKF8pIHsgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gaXNDYWxlbmRhckVsZW0oZWxlbSkge1xuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLmFwcGVuZFRvICYmIHNlbGYuY29uZmlnLmFwcGVuZFRvLmNvbnRhaW5zKGVsZW0pKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FsZW5kYXJDb250YWluZXIuY29udGFpbnMoZWxlbSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZG9jdW1lbnRDbGljayhlKSB7XG4gICAgICAgICAgICBpZiAoc2VsZi5pc09wZW4gJiYgIXNlbGYuY29uZmlnLmlubGluZSkge1xuICAgICAgICAgICAgICAgIHZhciBldmVudFRhcmdldF8xID0gZ2V0RXZlbnRUYXJnZXQoZSk7XG4gICAgICAgICAgICAgICAgdmFyIGlzQ2FsZW5kYXJFbGVtZW50ID0gaXNDYWxlbmRhckVsZW0oZXZlbnRUYXJnZXRfMSk7XG4gICAgICAgICAgICAgICAgdmFyIGlzSW5wdXQgPSBldmVudFRhcmdldF8xID09PSBzZWxmLmlucHV0IHx8XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50VGFyZ2V0XzEgPT09IHNlbGYuYWx0SW5wdXQgfHxcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5lbGVtZW50LmNvbnRhaW5zKGV2ZW50VGFyZ2V0XzEpIHx8XG4gICAgICAgICAgICAgICAgICAgIC8vIHdlYiBjb21wb25lbnRzXG4gICAgICAgICAgICAgICAgICAgIC8vIGUucGF0aCBpcyBub3QgcHJlc2VudCBpbiBhbGwgYnJvd3NlcnMuIGNpcmN1bXZlbnRpbmcgdHlwZWNoZWNrc1xuICAgICAgICAgICAgICAgICAgICAoZS5wYXRoICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhdGguaW5kZXhPZiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKH5lLnBhdGguaW5kZXhPZihzZWxmLmlucHV0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5lLnBhdGguaW5kZXhPZihzZWxmLmFsdElucHV0KSkpO1xuICAgICAgICAgICAgICAgIHZhciBsb3N0Rm9jdXMgPSBlLnR5cGUgPT09IFwiYmx1clwiXG4gICAgICAgICAgICAgICAgICAgID8gaXNJbnB1dCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5yZWxhdGVkVGFyZ2V0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhaXNDYWxlbmRhckVsZW0oZS5yZWxhdGVkVGFyZ2V0KVxuICAgICAgICAgICAgICAgICAgICA6ICFpc0lucHV0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhaXNDYWxlbmRhckVsZW1lbnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFpc0NhbGVuZGFyRWxlbShlLnJlbGF0ZWRUYXJnZXQpO1xuICAgICAgICAgICAgICAgIHZhciBpc0lnbm9yZWQgPSAhc2VsZi5jb25maWcuaWdub3JlZEZvY3VzRWxlbWVudHMuc29tZShmdW5jdGlvbiAoZWxlbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5jb250YWlucyhldmVudFRhcmdldF8xKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAobG9zdEZvY3VzICYmIGlzSWdub3JlZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi50aW1lQ29udGFpbmVyICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWludXRlRWxlbWVudCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhvdXJFbGVtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVRpbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5tb2RlID09PSBcInJhbmdlXCIgJiYgc2VsZi5zZWxlY3RlZERhdGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGVhcihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlZHJhdygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGNoYW5nZVllYXIobmV3WWVhcikge1xuICAgICAgICAgICAgaWYgKCFuZXdZZWFyIHx8XG4gICAgICAgICAgICAgICAgKHNlbGYuY29uZmlnLm1pbkRhdGUgJiYgbmV3WWVhciA8IHNlbGYuY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKSkgfHxcbiAgICAgICAgICAgICAgICAoc2VsZi5jb25maWcubWF4RGF0ZSAmJiBuZXdZZWFyID4gc2VsZi5jb25maWcubWF4RGF0ZS5nZXRGdWxsWWVhcigpKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB2YXIgbmV3WWVhck51bSA9IG5ld1llYXIsIGlzTmV3WWVhciA9IHNlbGYuY3VycmVudFllYXIgIT09IG5ld1llYXJOdW07XG4gICAgICAgICAgICBzZWxmLmN1cnJlbnRZZWFyID0gbmV3WWVhck51bSB8fCBzZWxmLmN1cnJlbnRZZWFyO1xuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLm1heERhdGUgJiZcbiAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnRZZWFyID09PSBzZWxmLmNvbmZpZy5tYXhEYXRlLmdldEZ1bGxZZWFyKCkpIHtcbiAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnRNb250aCA9IE1hdGgubWluKHNlbGYuY29uZmlnLm1heERhdGUuZ2V0TW9udGgoKSwgc2VsZi5jdXJyZW50TW9udGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc2VsZi5jb25maWcubWluRGF0ZSAmJlxuICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudFllYXIgPT09IHNlbGYuY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKSkge1xuICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudE1vbnRoID0gTWF0aC5tYXgoc2VsZi5jb25maWcubWluRGF0ZS5nZXRNb250aCgpLCBzZWxmLmN1cnJlbnRNb250aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNOZXdZZWFyKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5yZWRyYXcoKTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoXCJvblllYXJDaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgYnVpbGRNb250aFN3aXRjaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGlzRW5hYmxlZChkYXRlLCB0aW1lbGVzcykge1xuICAgICAgICAgICAgaWYgKHRpbWVsZXNzID09PSB2b2lkIDApIHsgdGltZWxlc3MgPSB0cnVlOyB9XG4gICAgICAgICAgICB2YXIgZGF0ZVRvQ2hlY2sgPSBzZWxmLnBhcnNlRGF0ZShkYXRlLCB1bmRlZmluZWQsIHRpbWVsZXNzKTsgLy8gdGltZWxlc3NcbiAgICAgICAgICAgIGlmICgoc2VsZi5jb25maWcubWluRGF0ZSAmJlxuICAgICAgICAgICAgICAgIGRhdGVUb0NoZWNrICYmXG4gICAgICAgICAgICAgICAgY29tcGFyZURhdGVzKGRhdGVUb0NoZWNrLCBzZWxmLmNvbmZpZy5taW5EYXRlLCB0aW1lbGVzcyAhPT0gdW5kZWZpbmVkID8gdGltZWxlc3MgOiAhc2VsZi5taW5EYXRlSGFzVGltZSkgPCAwKSB8fFxuICAgICAgICAgICAgICAgIChzZWxmLmNvbmZpZy5tYXhEYXRlICYmXG4gICAgICAgICAgICAgICAgICAgIGRhdGVUb0NoZWNrICYmXG4gICAgICAgICAgICAgICAgICAgIGNvbXBhcmVEYXRlcyhkYXRlVG9DaGVjaywgc2VsZi5jb25maWcubWF4RGF0ZSwgdGltZWxlc3MgIT09IHVuZGVmaW5lZCA/IHRpbWVsZXNzIDogIXNlbGYubWF4RGF0ZUhhc1RpbWUpID4gMCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLmVuYWJsZS5sZW5ndGggPT09IDAgJiYgc2VsZi5jb25maWcuZGlzYWJsZS5sZW5ndGggPT09IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBpZiAoZGF0ZVRvQ2hlY2sgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB2YXIgYm9vbCA9IHNlbGYuY29uZmlnLmVuYWJsZS5sZW5ndGggPiAwLCBhcnJheSA9IGJvb2wgPyBzZWxmLmNvbmZpZy5lbmFibGUgOiBzZWxmLmNvbmZpZy5kaXNhYmxlO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGQgPSB2b2lkIDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGQgPSBhcnJheVtpXTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGQgPT09IFwiZnVuY3Rpb25cIiAmJlxuICAgICAgICAgICAgICAgICAgICBkKGRhdGVUb0NoZWNrKSAvLyBkaXNhYmxlZCBieSBmdW5jdGlvblxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJvb2w7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZCBpbnN0YW5jZW9mIERhdGUgJiZcbiAgICAgICAgICAgICAgICAgICAgZGF0ZVRvQ2hlY2sgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICBkLmdldFRpbWUoKSA9PT0gZGF0ZVRvQ2hlY2suZ2V0VGltZSgpKVxuICAgICAgICAgICAgICAgICAgICAvLyBkaXNhYmxlZCBieSBkYXRlXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBib29sO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBkID09PSBcInN0cmluZ1wiICYmIGRhdGVUb0NoZWNrICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZGlzYWJsZWQgYnkgZGF0ZSBzdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnNlZCA9IHNlbGYucGFyc2VEYXRlKGQsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZWQgJiYgcGFyc2VkLmdldFRpbWUoKSA9PT0gZGF0ZVRvQ2hlY2suZ2V0VGltZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGJvb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIDogIWJvb2w7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIC8vIGRpc2FibGVkIGJ5IHJhbmdlXG4gICAgICAgICAgICAgICAgdHlwZW9mIGQgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgICAgICAgICAgZGF0ZVRvQ2hlY2sgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICBkLmZyb20gJiZcbiAgICAgICAgICAgICAgICAgICAgZC50byAmJlxuICAgICAgICAgICAgICAgICAgICBkYXRlVG9DaGVjay5nZXRUaW1lKCkgPj0gZC5mcm9tLmdldFRpbWUoKSAmJlxuICAgICAgICAgICAgICAgICAgICBkYXRlVG9DaGVjay5nZXRUaW1lKCkgPD0gZC50by5nZXRUaW1lKCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBib29sO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICFib29sO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGlzSW5WaWV3KGVsZW0pIHtcbiAgICAgICAgICAgIGlmIChzZWxmLmRheXNDb250YWluZXIgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICByZXR1cm4gKGVsZW0uY2xhc3NOYW1lLmluZGV4T2YoXCJoaWRkZW5cIikgPT09IC0xICYmXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuZGF5c0NvbnRhaW5lci5jb250YWlucyhlbGVtKSk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gb25LZXlEb3duKGUpIHtcbiAgICAgICAgICAgIC8vIGUua2V5ICAgICAgICAgICAgICAgICAgICAgIGUua2V5Q29kZVxuICAgICAgICAgICAgLy8gXCJCYWNrc3BhY2VcIiAgICAgICAgICAgICAgICAgICAgICAgIDhcbiAgICAgICAgICAgIC8vIFwiVGFiXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5XG4gICAgICAgICAgICAvLyBcIkVudGVyXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAxM1xuICAgICAgICAgICAgLy8gXCJFc2NhcGVcIiAgICAgKElFIFwiRXNjXCIpICAgICAgICAgICAyN1xuICAgICAgICAgICAgLy8gXCJBcnJvd0xlZnRcIiAgKElFIFwiTGVmdFwiKSAgICAgICAgICAzN1xuICAgICAgICAgICAgLy8gXCJBcnJvd1VwXCIgICAgKElFIFwiVXBcIikgICAgICAgICAgICAzOFxuICAgICAgICAgICAgLy8gXCJBcnJvd1JpZ2h0XCIgKElFIFwiUmlnaHRcIikgICAgICAgICAzOVxuICAgICAgICAgICAgLy8gXCJBcnJvd0Rvd25cIiAgKElFIFwiRG93blwiKSAgICAgICAgICA0MFxuICAgICAgICAgICAgLy8gXCJEZWxldGVcIiAgICAgKElFIFwiRGVsXCIpICAgICAgICAgICA0NlxuICAgICAgICAgICAgdmFyIGlzSW5wdXQgPSBlLnRhcmdldCA9PT0gc2VsZi5faW5wdXQ7XG4gICAgICAgICAgICB2YXIgYWxsb3dJbnB1dCA9IHNlbGYuY29uZmlnLmFsbG93SW5wdXQ7XG4gICAgICAgICAgICB2YXIgYWxsb3dLZXlkb3duID0gc2VsZi5pc09wZW4gJiYgKCFhbGxvd0lucHV0IHx8ICFpc0lucHV0KTtcbiAgICAgICAgICAgIHZhciBhbGxvd0lubGluZUtleWRvd24gPSBzZWxmLmNvbmZpZy5pbmxpbmUgJiYgaXNJbnB1dCAmJiAhYWxsb3dJbnB1dDtcbiAgICAgICAgICAgIGlmIChlLmtleUNvZGUgPT09IDEzICYmIGlzSW5wdXQpIHtcbiAgICAgICAgICAgICAgICBpZiAoYWxsb3dJbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLnNldERhdGUoc2VsZi5faW5wdXQudmFsdWUsIHRydWUsIGUudGFyZ2V0ID09PSBzZWxmLmFsdElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlbGYuY29uZmlnLmFsdEZvcm1hdFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWxmLmNvbmZpZy5kYXRlRm9ybWF0KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUudGFyZ2V0LmJsdXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYub3BlbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlzQ2FsZW5kYXJFbGVtKGUudGFyZ2V0KSB8fFxuICAgICAgICAgICAgICAgIGFsbG93S2V5ZG93biB8fFxuICAgICAgICAgICAgICAgIGFsbG93SW5saW5lS2V5ZG93bikge1xuICAgICAgICAgICAgICAgIHZhciBpc1RpbWVPYmogPSAhIXNlbGYudGltZUNvbnRhaW5lciAmJlxuICAgICAgICAgICAgICAgICAgICBzZWxmLnRpbWVDb250YWluZXIuY29udGFpbnMoZS50YXJnZXQpO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZS5rZXlDb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNUaW1lT2JqKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVRpbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c0FuZENsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0RGF0ZShlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI3OiAvLyBlc2NhcGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzQW5kQ2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDY6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbnB1dCAmJiAhc2VsZi5jb25maWcuYWxsb3dJbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzNzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUaW1lT2JqICYmICFpc0lucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLmRheXNDb250YWluZXIgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWxsb3dJbnB1dCA9PT0gZmFsc2UgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIGlzSW5WaWV3KGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRlbHRhXzEgPSBlLmtleUNvZGUgPT09IDM5ID8gMSA6IC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUuY3RybEtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzT25EYXkodW5kZWZpbmVkLCBkZWx0YV8xKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlTW9udGgoZGVsdGFfMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c09uRGF5KGdldEZpcnN0QXZhaWxhYmxlRGF5KDEpLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNlbGYuaG91ckVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ob3VyRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzg6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDA6XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSBlLmtleUNvZGUgPT09IDQwID8gMSA6IC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChzZWxmLmRheXNDb250YWluZXIgJiYgZS50YXJnZXQuJGkgIT09IHVuZGVmaW5lZCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnRhcmdldCA9PT0gc2VsZi5pbnB1dCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0ID09PSBzZWxmLmFsdElucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuY3RybEtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VZZWFyKHNlbGYuY3VycmVudFllYXIgLSBkZWx0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzT25EYXkoZ2V0Rmlyc3RBdmFpbGFibGVEYXkoMSksIDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghaXNUaW1lT2JqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c09uRGF5KHVuZGVmaW5lZCwgZGVsdGEgKiA3KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGUudGFyZ2V0ID09PSBzZWxmLmN1cnJlbnRZZWFyRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZVllYXIoc2VsZi5jdXJyZW50WWVhciAtIGRlbHRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNlbGYuY29uZmlnLmVuYWJsZVRpbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGltZU9iaiAmJiBzZWxmLmhvdXJFbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhvdXJFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlVGltZShlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9kZWJvdW5jZWRDaGFuZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNUaW1lT2JqKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW1zID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhvdXJFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1pbnV0ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2Vjb25kRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hbVBNLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNvbmNhdChzZWxmLnBsdWdpbkVsZW1lbnRzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4OyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGVsZW1zLmluZGV4T2YoZS50YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZWxlbXNbaSArIChlLnNoaWZ0S2V5ID8gLTEgOiAxKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhcmdldCB8fCBzZWxmLl9pbnB1dCkuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghc2VsZi5jb25maWcubm9DYWxlbmRhciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF5c0NvbnRhaW5lciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF5c0NvbnRhaW5lci5jb250YWlucyhlLnRhcmdldCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxmLmFtUE0gIT09IHVuZGVmaW5lZCAmJiBlLnRhcmdldCA9PT0gc2VsZi5hbVBNKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChlLmtleSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIHNlbGYubDEwbi5hbVBNWzBdLmNoYXJBdCgwKTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBzZWxmLmwxMG4uYW1QTVswXS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYW1QTS50ZXh0Q29udGVudCA9IHNlbGYubDEwbi5hbVBNWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SG91cnNGcm9tSW5wdXRzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2Ugc2VsZi5sMTBuLmFtUE1bMV0uY2hhckF0KDApOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIHNlbGYubDEwbi5hbVBNWzFdLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpOlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hbVBNLnRleHRDb250ZW50ID0gc2VsZi5sMTBuLmFtUE1bMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRIb3Vyc0Zyb21JbnB1dHMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNJbnB1dCB8fCBpc0NhbGVuZGFyRWxlbShlLnRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoXCJvbktleURvd25cIiwgZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gb25Nb3VzZU92ZXIoZWxlbSkge1xuICAgICAgICAgICAgaWYgKHNlbGYuc2VsZWN0ZWREYXRlcy5sZW5ndGggIT09IDEgfHxcbiAgICAgICAgICAgICAgICAoZWxlbSAmJlxuICAgICAgICAgICAgICAgICAgICAoIWVsZW0uY2xhc3NMaXN0LmNvbnRhaW5zKFwiZmxhdHBpY2tyLWRheVwiKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5jbGFzc0xpc3QuY29udGFpbnMoXCJmbGF0cGlja3ItZGlzYWJsZWRcIikpKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB2YXIgaG92ZXJEYXRlID0gZWxlbVxuICAgICAgICAgICAgICAgID8gZWxlbS5kYXRlT2JqLmdldFRpbWUoKVxuICAgICAgICAgICAgICAgIDogc2VsZi5kYXlzLmZpcnN0RWxlbWVudENoaWxkLmRhdGVPYmouZ2V0VGltZSgpLCBpbml0aWFsRGF0ZSA9IHNlbGYucGFyc2VEYXRlKHNlbGYuc2VsZWN0ZWREYXRlc1swXSwgdW5kZWZpbmVkLCB0cnVlKS5nZXRUaW1lKCksIHJhbmdlU3RhcnREYXRlID0gTWF0aC5taW4oaG92ZXJEYXRlLCBzZWxmLnNlbGVjdGVkRGF0ZXNbMF0uZ2V0VGltZSgpKSwgcmFuZ2VFbmREYXRlID0gTWF0aC5tYXgoaG92ZXJEYXRlLCBzZWxmLnNlbGVjdGVkRGF0ZXNbMF0uZ2V0VGltZSgpKTtcbiAgICAgICAgICAgIHZhciBjb250YWluc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgbWluUmFuZ2UgPSAwLCBtYXhSYW5nZSA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciB0ID0gcmFuZ2VTdGFydERhdGU7IHQgPCByYW5nZUVuZERhdGU7IHQgKz0gZHVyYXRpb24uREFZKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc0VuYWJsZWQobmV3IERhdGUodCksIHRydWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zRGlzYWJsZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnNEaXNhYmxlZCB8fCAodCA+IHJhbmdlU3RhcnREYXRlICYmIHQgPCByYW5nZUVuZERhdGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodCA8IGluaXRpYWxEYXRlICYmICghbWluUmFuZ2UgfHwgdCA+IG1pblJhbmdlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pblJhbmdlID0gdDtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodCA+IGluaXRpYWxEYXRlICYmICghbWF4UmFuZ2UgfHwgdCA8IG1heFJhbmdlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heFJhbmdlID0gdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBtID0gMDsgbSA8IHNlbGYuY29uZmlnLnNob3dNb250aHM7IG0rKykge1xuICAgICAgICAgICAgICAgIHZhciBtb250aCA9IHNlbGYuZGF5c0NvbnRhaW5lci5jaGlsZHJlblttXTtcbiAgICAgICAgICAgICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIChpLCBsKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkYXlFbGVtID0gbW9udGguY2hpbGRyZW5baV0sIGRhdGUgPSBkYXlFbGVtLmRhdGVPYmo7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aW1lc3RhbXAgPSBkYXRlLmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG91dE9mUmFuZ2UgPSAobWluUmFuZ2UgPiAwICYmIHRpbWVzdGFtcCA8IG1pblJhbmdlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1heFJhbmdlID4gMCAmJiB0aW1lc3RhbXAgPiBtYXhSYW5nZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvdXRPZlJhbmdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXlFbGVtLmNsYXNzTGlzdC5hZGQoXCJub3RBbGxvd2VkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgW1wiaW5SYW5nZVwiLCBcInN0YXJ0UmFuZ2VcIiwgXCJlbmRSYW5nZVwiXS5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5RWxlbS5jbGFzc0xpc3QucmVtb3ZlKGMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRhaW5zRGlzYWJsZWQgJiYgIW91dE9mUmFuZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgICAgICAgICAgICAgICBbXCJzdGFydFJhbmdlXCIsIFwiaW5SYW5nZVwiLCBcImVuZFJhbmdlXCIsIFwibm90QWxsb3dlZFwiXS5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXlFbGVtLmNsYXNzTGlzdC5yZW1vdmUoYyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmNsYXNzTGlzdC5hZGQoaG92ZXJEYXRlIDw9IHNlbGYuc2VsZWN0ZWREYXRlc1swXS5nZXRUaW1lKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwic3RhcnRSYW5nZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcImVuZFJhbmdlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluaXRpYWxEYXRlIDwgaG92ZXJEYXRlICYmIHRpbWVzdGFtcCA9PT0gaW5pdGlhbERhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5RWxlbS5jbGFzc0xpc3QuYWRkKFwic3RhcnRSYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGluaXRpYWxEYXRlID4gaG92ZXJEYXRlICYmIHRpbWVzdGFtcCA9PT0gaW5pdGlhbERhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5RWxlbS5jbGFzc0xpc3QuYWRkKFwiZW5kUmFuZ2VcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGltZXN0YW1wID49IG1pblJhbmdlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1heFJhbmdlID09PSAwIHx8IHRpbWVzdGFtcCA8PSBtYXhSYW5nZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0JldHdlZW4odGltZXN0YW1wLCBpbml0aWFsRGF0ZSwgaG92ZXJEYXRlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlFbGVtLmNsYXNzTGlzdC5hZGQoXCJpblJhbmdlXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IG1vbnRoLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBfbG9vcF8xKGksIGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBvblJlc2l6ZSgpIHtcbiAgICAgICAgICAgIGlmIChzZWxmLmlzT3BlbiAmJiAhc2VsZi5jb25maWcuc3RhdGljICYmICFzZWxmLmNvbmZpZy5pbmxpbmUpXG4gICAgICAgICAgICAgICAgcG9zaXRpb25DYWxlbmRhcigpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHNldERlZmF1bHRUaW1lKCkge1xuICAgICAgICAgICAgc2VsZi5zZXREYXRlKHNlbGYuY29uZmlnLm1pbkRhdGUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgID8gbmV3IERhdGUoc2VsZi5jb25maWcubWluRGF0ZS5nZXRUaW1lKCkpXG4gICAgICAgICAgICAgICAgOiBuZXcgRGF0ZSgpLCB0cnVlKTtcbiAgICAgICAgICAgIHNldERlZmF1bHRIb3VycygpO1xuICAgICAgICAgICAgdXBkYXRlVmFsdWUoKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBvcGVuKGUsIHBvc2l0aW9uRWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKHBvc2l0aW9uRWxlbWVudCA9PT0gdm9pZCAwKSB7IHBvc2l0aW9uRWxlbWVudCA9IHNlbGYuX3Bvc2l0aW9uRWxlbWVudDsgfVxuICAgICAgICAgICAgaWYgKHNlbGYuaXNNb2JpbGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0ICYmIGUudGFyZ2V0LmJsdXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYubW9iaWxlSW5wdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLm1vYmlsZUlucHV0LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYubW9iaWxlSW5wdXQuY2xpY2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdHJpZ2dlckV2ZW50KFwib25PcGVuXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxmLl9pbnB1dC5kaXNhYmxlZCB8fCBzZWxmLmNvbmZpZy5pbmxpbmUpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgdmFyIHdhc09wZW4gPSBzZWxmLmlzT3BlbjtcbiAgICAgICAgICAgIHNlbGYuaXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmICghd2FzT3Blbikge1xuICAgICAgICAgICAgICAgIHNlbGYuY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZChcIm9wZW5cIik7XG4gICAgICAgICAgICAgICAgc2VsZi5faW5wdXQuY2xhc3NMaXN0LmFkZChcImFjdGl2ZVwiKTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoXCJvbk9wZW5cIik7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25DYWxlbmRhcihwb3NpdGlvbkVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLmVuYWJsZVRpbWUgPT09IHRydWUgJiYgc2VsZi5jb25maWcubm9DYWxlbmRhciA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLnNlbGVjdGVkRGF0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldERlZmF1bHRUaW1lKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5hbGxvd0lucHV0ID09PSBmYWxzZSAmJlxuICAgICAgICAgICAgICAgICAgICAoZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAhc2VsZi50aW1lQ29udGFpbmVyLmNvbnRhaW5zKGUucmVsYXRlZFRhcmdldCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2VsZi5ob3VyRWxlbWVudC5zZWxlY3QoKTsgfSwgNTApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBtaW5NYXhEYXRlU2V0dGVyKHR5cGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZGF0ZSkge1xuICAgICAgICAgICAgICAgIHZhciBkYXRlT2JqID0gKHNlbGYuY29uZmlnW1wiX1wiICsgdHlwZSArIFwiRGF0ZVwiXSA9IHNlbGYucGFyc2VEYXRlKGRhdGUsIHNlbGYuY29uZmlnLmRhdGVGb3JtYXQpKTtcbiAgICAgICAgICAgICAgICB2YXIgaW52ZXJzZURhdGVPYmogPSBzZWxmLmNvbmZpZ1tcIl9cIiArICh0eXBlID09PSBcIm1pblwiID8gXCJtYXhcIiA6IFwibWluXCIpICsgXCJEYXRlXCJdO1xuICAgICAgICAgICAgICAgIGlmIChkYXRlT2JqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZlt0eXBlID09PSBcIm1pblwiID8gXCJtaW5EYXRlSGFzVGltZVwiIDogXCJtYXhEYXRlSGFzVGltZVwiXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlT2JqLmdldEhvdXJzKCkgPiAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZU9iai5nZXRNaW51dGVzKCkgPiAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZU9iai5nZXRTZWNvbmRzKCkgPiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5zZWxlY3RlZERhdGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWREYXRlcyA9IHNlbGYuc2VsZWN0ZWREYXRlcy5maWx0ZXIoZnVuY3Rpb24gKGQpIHsgcmV0dXJuIGlzRW5hYmxlZChkKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc2VsZi5zZWxlY3RlZERhdGVzLmxlbmd0aCAmJiB0eXBlID09PSBcIm1pblwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SG91cnNGcm9tRGF0ZShkYXRlT2JqKTtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlVmFsdWUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuZGF5c0NvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICByZWRyYXcoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGVPYmogIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudFllYXJFbGVtZW50W3R5cGVdID0gZGF0ZU9iai5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudFllYXJFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSh0eXBlKTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50WWVhckVsZW1lbnQuZGlzYWJsZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgISFpbnZlcnNlRGF0ZU9iaiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVPYmogIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmVyc2VEYXRlT2JqLmdldEZ1bGxZZWFyKCkgPT09IGRhdGVPYmouZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHBhcnNlQ29uZmlnKCkge1xuICAgICAgICAgICAgdmFyIGJvb2xPcHRzID0gW1xuICAgICAgICAgICAgICAgIFwid3JhcFwiLFxuICAgICAgICAgICAgICAgIFwid2Vla051bWJlcnNcIixcbiAgICAgICAgICAgICAgICBcImFsbG93SW5wdXRcIixcbiAgICAgICAgICAgICAgICBcImNsaWNrT3BlbnNcIixcbiAgICAgICAgICAgICAgICBcInRpbWVfMjRoclwiLFxuICAgICAgICAgICAgICAgIFwiZW5hYmxlVGltZVwiLFxuICAgICAgICAgICAgICAgIFwibm9DYWxlbmRhclwiLFxuICAgICAgICAgICAgICAgIFwiYWx0SW5wdXRcIixcbiAgICAgICAgICAgICAgICBcInNob3J0aGFuZEN1cnJlbnRNb250aFwiLFxuICAgICAgICAgICAgICAgIFwiaW5saW5lXCIsXG4gICAgICAgICAgICAgICAgXCJzdGF0aWNcIixcbiAgICAgICAgICAgICAgICBcImVuYWJsZVNlY29uZHNcIixcbiAgICAgICAgICAgICAgICBcImRpc2FibGVNb2JpbGVcIixcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICB2YXIgdXNlckNvbmZpZyA9IF9fYXNzaWduKHt9LCBpbnN0YW5jZUNvbmZpZywgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlbGVtZW50LmRhdGFzZXQgfHwge30pKSk7XG4gICAgICAgICAgICB2YXIgZm9ybWF0cyA9IHt9O1xuICAgICAgICAgICAgc2VsZi5jb25maWcucGFyc2VEYXRlID0gdXNlckNvbmZpZy5wYXJzZURhdGU7XG4gICAgICAgICAgICBzZWxmLmNvbmZpZy5mb3JtYXREYXRlID0gdXNlckNvbmZpZy5mb3JtYXREYXRlO1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHNlbGYuY29uZmlnLCBcImVuYWJsZVwiLCB7XG4gICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBzZWxmLmNvbmZpZy5fZW5hYmxlOyB9LFxuICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24gKGRhdGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLl9lbmFibGUgPSBwYXJzZURhdGVSdWxlcyhkYXRlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc2VsZi5jb25maWcsIFwiZGlzYWJsZVwiLCB7XG4gICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBzZWxmLmNvbmZpZy5fZGlzYWJsZTsgfSxcbiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uIChkYXRlcykge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZy5fZGlzYWJsZSA9IHBhcnNlRGF0ZVJ1bGVzKGRhdGVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciB0aW1lTW9kZSA9IHVzZXJDb25maWcubW9kZSA9PT0gXCJ0aW1lXCI7XG4gICAgICAgICAgICBpZiAoIXVzZXJDb25maWcuZGF0ZUZvcm1hdCAmJiAodXNlckNvbmZpZy5lbmFibGVUaW1lIHx8IHRpbWVNb2RlKSkge1xuICAgICAgICAgICAgICAgIHZhciBkZWZhdWx0RGF0ZUZvcm1hdCA9IGZsYXRwaWNrci5kZWZhdWx0Q29uZmlnLmRhdGVGb3JtYXQgfHwgZGVmYXVsdHMuZGF0ZUZvcm1hdDtcbiAgICAgICAgICAgICAgICBmb3JtYXRzLmRhdGVGb3JtYXQgPVxuICAgICAgICAgICAgICAgICAgICB1c2VyQ29uZmlnLm5vQ2FsZW5kYXIgfHwgdGltZU1vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJIOmlcIiArICh1c2VyQ29uZmlnLmVuYWJsZVNlY29uZHMgPyBcIjpTXCIgOiBcIlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0RGF0ZUZvcm1hdCArIFwiIEg6aVwiICsgKHVzZXJDb25maWcuZW5hYmxlU2Vjb25kcyA/IFwiOlNcIiA6IFwiXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHVzZXJDb25maWcuYWx0SW5wdXQgJiZcbiAgICAgICAgICAgICAgICAodXNlckNvbmZpZy5lbmFibGVUaW1lIHx8IHRpbWVNb2RlKSAmJlxuICAgICAgICAgICAgICAgICF1c2VyQ29uZmlnLmFsdEZvcm1hdCkge1xuICAgICAgICAgICAgICAgIHZhciBkZWZhdWx0QWx0Rm9ybWF0ID0gZmxhdHBpY2tyLmRlZmF1bHRDb25maWcuYWx0Rm9ybWF0IHx8IGRlZmF1bHRzLmFsdEZvcm1hdDtcbiAgICAgICAgICAgICAgICBmb3JtYXRzLmFsdEZvcm1hdCA9XG4gICAgICAgICAgICAgICAgICAgIHVzZXJDb25maWcubm9DYWxlbmRhciB8fCB0aW1lTW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcImg6aVwiICsgKHVzZXJDb25maWcuZW5hYmxlU2Vjb25kcyA/IFwiOlMgS1wiIDogXCIgS1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0QWx0Rm9ybWF0ICsgKFwiIGg6aVwiICsgKHVzZXJDb25maWcuZW5hYmxlU2Vjb25kcyA/IFwiOlNcIiA6IFwiXCIpICsgXCIgS1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdXNlckNvbmZpZy5hbHRJbnB1dENsYXNzKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5jb25maWcuYWx0SW5wdXRDbGFzcyA9XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuaW5wdXQuY2xhc3NOYW1lICsgXCIgXCIgKyBzZWxmLmNvbmZpZy5hbHRJbnB1dENsYXNzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHNlbGYuY29uZmlnLCBcIm1pbkRhdGVcIiwge1xuICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gc2VsZi5jb25maWcuX21pbkRhdGU7IH0sXG4gICAgICAgICAgICAgICAgc2V0OiBtaW5NYXhEYXRlU2V0dGVyKFwibWluXCIpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzZWxmLmNvbmZpZywgXCJtYXhEYXRlXCIsIHtcbiAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNlbGYuY29uZmlnLl9tYXhEYXRlOyB9LFxuICAgICAgICAgICAgICAgIHNldDogbWluTWF4RGF0ZVNldHRlcihcIm1heFwiKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXIgbWluTWF4VGltZVNldHRlciA9IGZ1bmN0aW9uICh0eXBlKSB7IHJldHVybiBmdW5jdGlvbiAodmFsKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5jb25maWdbdHlwZSA9PT0gXCJtaW5cIiA/IFwiX21pblRpbWVcIiA6IFwiX21heFRpbWVcIl0gPSBzZWxmLnBhcnNlRGF0ZSh2YWwsIFwiSDppOlNcIik7XG4gICAgICAgICAgICB9OyB9O1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHNlbGYuY29uZmlnLCBcIm1pblRpbWVcIiwge1xuICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gc2VsZi5jb25maWcuX21pblRpbWU7IH0sXG4gICAgICAgICAgICAgICAgc2V0OiBtaW5NYXhUaW1lU2V0dGVyKFwibWluXCIpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzZWxmLmNvbmZpZywgXCJtYXhUaW1lXCIsIHtcbiAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNlbGYuY29uZmlnLl9tYXhUaW1lOyB9LFxuICAgICAgICAgICAgICAgIHNldDogbWluTWF4VGltZVNldHRlcihcIm1heFwiKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAodXNlckNvbmZpZy5tb2RlID09PSBcInRpbWVcIikge1xuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLm5vQ2FsZW5kYXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLmVuYWJsZVRpbWUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihzZWxmLmNvbmZpZywgZm9ybWF0cywgdXNlckNvbmZpZyk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJvb2xPcHRzLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnW2Jvb2xPcHRzW2ldXSA9XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnW2Jvb2xPcHRzW2ldXSA9PT0gdHJ1ZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWdbYm9vbE9wdHNbaV1dID09PSBcInRydWVcIjtcbiAgICAgICAgICAgIEhPT0tTLmZpbHRlcihmdW5jdGlvbiAoaG9vaykgeyByZXR1cm4gc2VsZi5jb25maWdbaG9va10gIT09IHVuZGVmaW5lZDsgfSkuZm9yRWFjaChmdW5jdGlvbiAoaG9vaykge1xuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnW2hvb2tdID0gYXJyYXlpZnkoc2VsZi5jb25maWdbaG9va10gfHwgW10pLm1hcChiaW5kVG9JbnN0YW5jZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNlbGYuaXNNb2JpbGUgPVxuICAgICAgICAgICAgICAgICFzZWxmLmNvbmZpZy5kaXNhYmxlTW9iaWxlICYmXG4gICAgICAgICAgICAgICAgICAgICFzZWxmLmNvbmZpZy5pbmxpbmUgJiZcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWcubW9kZSA9PT0gXCJzaW5nbGVcIiAmJlxuICAgICAgICAgICAgICAgICAgICAhc2VsZi5jb25maWcuZGlzYWJsZS5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgIXNlbGYuY29uZmlnLmVuYWJsZS5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgIXNlbGYuY29uZmlnLndlZWtOdW1iZXJzICYmXG4gICAgICAgICAgICAgICAgICAgIC9BbmRyb2lkfHdlYk9TfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxJRU1vYmlsZXxPcGVyYSBNaW5pL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZi5jb25maWcucGx1Z2lucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBwbHVnaW5Db25mID0gc2VsZi5jb25maWcucGx1Z2luc1tpXShzZWxmKSB8fCB7fTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gcGx1Z2luQ29uZikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoSE9PS1MuaW5kZXhPZihrZXkpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnW2tleV0gPSBhcnJheWlmeShwbHVnaW5Db25mW2tleV0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChiaW5kVG9JbnN0YW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY29uY2F0KHNlbGYuY29uZmlnW2tleV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB1c2VyQ29uZmlnW2tleV0gPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZ1trZXldID0gcGx1Z2luQ29uZltrZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyaWdnZXJFdmVudChcIm9uUGFyc2VDb25maWdcIik7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gc2V0dXBMb2NhbGUoKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHNlbGYuY29uZmlnLmxvY2FsZSAhPT0gXCJvYmplY3RcIiAmJlxuICAgICAgICAgICAgICAgIHR5cGVvZiBmbGF0cGlja3IubDEwbnNbc2VsZi5jb25maWcubG9jYWxlXSA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZy5lcnJvckhhbmRsZXIobmV3IEVycm9yKFwiZmxhdHBpY2tyOiBpbnZhbGlkIGxvY2FsZSBcIiArIHNlbGYuY29uZmlnLmxvY2FsZSkpO1xuICAgICAgICAgICAgc2VsZi5sMTBuID0gX19hc3NpZ24oe30sIGZsYXRwaWNrci5sMTBuc1tcImRlZmF1bHRcIl0sICh0eXBlb2Ygc2VsZi5jb25maWcubG9jYWxlID09PSBcIm9iamVjdFwiXG4gICAgICAgICAgICAgICAgPyBzZWxmLmNvbmZpZy5sb2NhbGVcbiAgICAgICAgICAgICAgICA6IHNlbGYuY29uZmlnLmxvY2FsZSAhPT0gXCJkZWZhdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgPyBmbGF0cGlja3IubDEwbnNbc2VsZi5jb25maWcubG9jYWxlXVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCkpO1xuICAgICAgICAgICAgdG9rZW5SZWdleC5LID0gXCIoXCIgKyBzZWxmLmwxMG4uYW1QTVswXSArIFwifFwiICsgc2VsZi5sMTBuLmFtUE1bMV0gKyBcInxcIiArIHNlbGYubDEwbi5hbVBNWzBdLnRvTG93ZXJDYXNlKCkgKyBcInxcIiArIHNlbGYubDEwbi5hbVBNWzFdLnRvTG93ZXJDYXNlKCkgKyBcIilcIjtcbiAgICAgICAgICAgIHZhciB1c2VyQ29uZmlnID0gX19hc3NpZ24oe30sIGluc3RhbmNlQ29uZmlnLCBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGVsZW1lbnQuZGF0YXNldCB8fCB7fSkpKTtcbiAgICAgICAgICAgIGlmICh1c2VyQ29uZmlnLnRpbWVfMjRociA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgZmxhdHBpY2tyLmRlZmF1bHRDb25maWcudGltZV8yNGhyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZy50aW1lXzI0aHIgPSBzZWxmLmwxMG4udGltZV8yNGhyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZi5mb3JtYXREYXRlID0gY3JlYXRlRGF0ZUZvcm1hdHRlcihzZWxmKTtcbiAgICAgICAgICAgIHNlbGYucGFyc2VEYXRlID0gY3JlYXRlRGF0ZVBhcnNlcih7IGNvbmZpZzogc2VsZi5jb25maWcsIGwxMG46IHNlbGYubDEwbiB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBwb3NpdGlvbkNhbGVuZGFyKGN1c3RvbVBvc2l0aW9uRWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKHNlbGYuY2FsZW5kYXJDb250YWluZXIgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB0cmlnZ2VyRXZlbnQoXCJvblByZUNhbGVuZGFyUG9zaXRpb25cIik7XG4gICAgICAgICAgICB2YXIgcG9zaXRpb25FbGVtZW50ID0gY3VzdG9tUG9zaXRpb25FbGVtZW50IHx8IHNlbGYuX3Bvc2l0aW9uRWxlbWVudDtcbiAgICAgICAgICAgIHZhciBjYWxlbmRhckhlaWdodCA9IEFycmF5LnByb3RvdHlwZS5yZWR1Y2UuY2FsbChzZWxmLmNhbGVuZGFyQ29udGFpbmVyLmNoaWxkcmVuLCAoZnVuY3Rpb24gKGFjYywgY2hpbGQpIHsgcmV0dXJuIGFjYyArIGNoaWxkLm9mZnNldEhlaWdodDsgfSksIDApLCBjYWxlbmRhcldpZHRoID0gc2VsZi5jYWxlbmRhckNvbnRhaW5lci5vZmZzZXRXaWR0aCwgY29uZmlnUG9zID0gc2VsZi5jb25maWcucG9zaXRpb24uc3BsaXQoXCIgXCIpLCBjb25maWdQb3NWZXJ0aWNhbCA9IGNvbmZpZ1Bvc1swXSwgY29uZmlnUG9zSG9yaXpvbnRhbCA9IGNvbmZpZ1Bvcy5sZW5ndGggPiAxID8gY29uZmlnUG9zWzFdIDogbnVsbCwgaW5wdXRCb3VuZHMgPSBwb3NpdGlvbkVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIGRpc3RhbmNlRnJvbUJvdHRvbSA9IHdpbmRvdy5pbm5lckhlaWdodCAtIGlucHV0Qm91bmRzLmJvdHRvbSwgc2hvd09uVG9wID0gY29uZmlnUG9zVmVydGljYWwgPT09IFwiYWJvdmVcIiB8fFxuICAgICAgICAgICAgICAgIChjb25maWdQb3NWZXJ0aWNhbCAhPT0gXCJiZWxvd1wiICYmXG4gICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlRnJvbUJvdHRvbSA8IGNhbGVuZGFySGVpZ2h0ICYmXG4gICAgICAgICAgICAgICAgICAgIGlucHV0Qm91bmRzLnRvcCA+IGNhbGVuZGFySGVpZ2h0KTtcbiAgICAgICAgICAgIHZhciB0b3AgPSB3aW5kb3cucGFnZVlPZmZzZXQgK1xuICAgICAgICAgICAgICAgIGlucHV0Qm91bmRzLnRvcCArXG4gICAgICAgICAgICAgICAgKCFzaG93T25Ub3AgPyBwb3NpdGlvbkVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgMiA6IC1jYWxlbmRhckhlaWdodCAtIDIpO1xuICAgICAgICAgICAgdG9nZ2xlQ2xhc3Moc2VsZi5jYWxlbmRhckNvbnRhaW5lciwgXCJhcnJvd1RvcFwiLCAhc2hvd09uVG9wKTtcbiAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHNlbGYuY2FsZW5kYXJDb250YWluZXIsIFwiYXJyb3dCb3R0b21cIiwgc2hvd09uVG9wKTtcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5pbmxpbmUpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgdmFyIGxlZnQgPSB3aW5kb3cucGFnZVhPZmZzZXQgK1xuICAgICAgICAgICAgICAgIGlucHV0Qm91bmRzLmxlZnQgLVxuICAgICAgICAgICAgICAgIChjb25maWdQb3NIb3Jpem9udGFsICE9IG51bGwgJiYgY29uZmlnUG9zSG9yaXpvbnRhbCA9PT0gXCJjZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICA/IChjYWxlbmRhcldpZHRoIC0gaW5wdXRCb3VuZHMud2lkdGgpIC8gMlxuICAgICAgICAgICAgICAgICAgICA6IDApO1xuICAgICAgICAgICAgdmFyIHJpZ2h0ID0gd2luZG93LmRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGggLSAod2luZG93LnBhZ2VYT2Zmc2V0ICsgaW5wdXRCb3VuZHMucmlnaHQpO1xuICAgICAgICAgICAgdmFyIHJpZ2h0TW9zdCA9IGxlZnQgKyBjYWxlbmRhcldpZHRoID4gd2luZG93LmRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgICB2YXIgY2VudGVyTW9zdCA9IHJpZ2h0ICsgY2FsZW5kYXJXaWR0aCA+IHdpbmRvdy5kb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgdG9nZ2xlQ2xhc3Moc2VsZi5jYWxlbmRhckNvbnRhaW5lciwgXCJyaWdodE1vc3RcIiwgcmlnaHRNb3N0KTtcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5zdGF0aWMpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgc2VsZi5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS50b3AgPSB0b3AgKyBcInB4XCI7XG4gICAgICAgICAgICBpZiAoIXJpZ2h0TW9zdCkge1xuICAgICAgICAgICAgICAgIHNlbGYuY2FsZW5kYXJDb250YWluZXIuc3R5bGUubGVmdCA9IGxlZnQgKyBcInB4XCI7XG4gICAgICAgICAgICAgICAgc2VsZi5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5yaWdodCA9IFwiYXV0b1wiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIWNlbnRlck1vc3QpIHtcbiAgICAgICAgICAgICAgICBzZWxmLmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLmxlZnQgPSBcImF1dG9cIjtcbiAgICAgICAgICAgICAgICBzZWxmLmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLnJpZ2h0ID0gcmlnaHQgKyBcInB4XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgZG9jID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMF07XG4gICAgICAgICAgICAgICAgLy8gc29tZSB0ZXN0aW5nIGVudmlyb25tZW50cyBkb24ndCBoYXZlIGNzcyBzdXBwb3J0XG4gICAgICAgICAgICAgICAgaWYgKGRvYyA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgdmFyIGJvZHlXaWR0aCA9IHdpbmRvdy5kb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgICAgIHZhciBjZW50ZXJMZWZ0ID0gTWF0aC5tYXgoMCwgYm9keVdpZHRoIC8gMiAtIGNhbGVuZGFyV2lkdGggLyAyKTtcbiAgICAgICAgICAgICAgICB2YXIgY2VudGVyQmVmb3JlID0gXCIuZmxhdHBpY2tyLWNhbGVuZGFyLmNlbnRlck1vc3Q6YmVmb3JlXCI7XG4gICAgICAgICAgICAgICAgdmFyIGNlbnRlckFmdGVyID0gXCIuZmxhdHBpY2tyLWNhbGVuZGFyLmNlbnRlck1vc3Q6YWZ0ZXJcIjtcbiAgICAgICAgICAgICAgICB2YXIgY2VudGVySW5kZXggPSBkb2MuY3NzUnVsZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHZhciBjZW50ZXJTdHlsZSA9IFwie2xlZnQ6XCIgKyBpbnB1dEJvdW5kcy5sZWZ0ICsgXCJweDtyaWdodDphdXRvO31cIjtcbiAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyhzZWxmLmNhbGVuZGFyQ29udGFpbmVyLCBcInJpZ2h0TW9zdFwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3Moc2VsZi5jYWxlbmRhckNvbnRhaW5lciwgXCJjZW50ZXJNb3N0XCIsIHRydWUpO1xuICAgICAgICAgICAgICAgIGRvYy5pbnNlcnRSdWxlKGNlbnRlckJlZm9yZSArIFwiLFwiICsgY2VudGVyQWZ0ZXIgKyBjZW50ZXJTdHlsZSwgY2VudGVySW5kZXgpO1xuICAgICAgICAgICAgICAgIHNlbGYuY2FsZW5kYXJDb250YWluZXIuc3R5bGUubGVmdCA9IGNlbnRlckxlZnQgKyBcInB4XCI7XG4gICAgICAgICAgICAgICAgc2VsZi5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5yaWdodCA9IFwiYXV0b1wiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHJlZHJhdygpIHtcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5ub0NhbGVuZGFyIHx8IHNlbGYuaXNNb2JpbGUpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgdXBkYXRlTmF2aWdhdGlvbkN1cnJlbnRNb250aCgpO1xuICAgICAgICAgICAgYnVpbGREYXlzKCk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZm9jdXNBbmRDbG9zZSgpIHtcbiAgICAgICAgICAgIHNlbGYuX2lucHV0LmZvY3VzKCk7XG4gICAgICAgICAgICBpZiAod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihcIk1TSUVcIikgIT09IC0xIHx8XG4gICAgICAgICAgICAgICAgbmF2aWdhdG9yLm1zTWF4VG91Y2hQb2ludHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIC8vIGhhY2sgLSBidWdzIGluIHRoZSB3YXkgSUUgaGFuZGxlcyBmb2N1cyBrZWVwcyB0aGUgY2FsZW5kYXIgb3BlblxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoc2VsZi5jbG9zZSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gc2VsZWN0RGF0ZShlKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdmFyIGlzU2VsZWN0YWJsZSA9IGZ1bmN0aW9uIChkYXkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF5LmNsYXNzTGlzdCAmJlxuICAgICAgICAgICAgICAgICAgICBkYXkuY2xhc3NMaXN0LmNvbnRhaW5zKFwiZmxhdHBpY2tyLWRheVwiKSAmJlxuICAgICAgICAgICAgICAgICAgICAhZGF5LmNsYXNzTGlzdC5jb250YWlucyhcImZsYXRwaWNrci1kaXNhYmxlZFwiKSAmJlxuICAgICAgICAgICAgICAgICAgICAhZGF5LmNsYXNzTGlzdC5jb250YWlucyhcIm5vdEFsbG93ZWRcIik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIHQgPSBmaW5kUGFyZW50KGUudGFyZ2V0LCBpc1NlbGVjdGFibGUpO1xuICAgICAgICAgICAgaWYgKHQgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gdDtcbiAgICAgICAgICAgIHZhciBzZWxlY3RlZERhdGUgPSAoc2VsZi5sYXRlc3RTZWxlY3RlZERhdGVPYmogPSBuZXcgRGF0ZSh0YXJnZXQuZGF0ZU9iai5nZXRUaW1lKCkpKTtcbiAgICAgICAgICAgIHZhciBzaG91bGRDaGFuZ2VNb250aCA9IChzZWxlY3RlZERhdGUuZ2V0TW9udGgoKSA8IHNlbGYuY3VycmVudE1vbnRoIHx8XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlLmdldE1vbnRoKCkgPlxuICAgICAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnRNb250aCArIHNlbGYuY29uZmlnLnNob3dNb250aHMgLSAxKSAmJlxuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLm1vZGUgIT09IFwicmFuZ2VcIjtcbiAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWREYXRlRWxlbSA9IHRhcmdldDtcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5tb2RlID09PSBcInNpbmdsZVwiKVxuICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWREYXRlcyA9IFtzZWxlY3RlZERhdGVdO1xuICAgICAgICAgICAgZWxzZSBpZiAoc2VsZi5jb25maWcubW9kZSA9PT0gXCJtdWx0aXBsZVwiKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkSW5kZXggPSBpc0RhdGVTZWxlY3RlZChzZWxlY3RlZERhdGUpO1xuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEluZGV4KVxuICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbGVjdGVkRGF0ZXMuc3BsaWNlKHBhcnNlSW50KHNlbGVjdGVkSW5kZXgpLCAxKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWREYXRlcy5wdXNoKHNlbGVjdGVkRGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzZWxmLmNvbmZpZy5tb2RlID09PSBcInJhbmdlXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5zZWxlY3RlZERhdGVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmNsZWFyKGZhbHNlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNlbGYubGF0ZXN0U2VsZWN0ZWREYXRlT2JqID0gc2VsZWN0ZWREYXRlO1xuICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWREYXRlcy5wdXNoKHNlbGVjdGVkRGF0ZSk7XG4gICAgICAgICAgICAgICAgLy8gdW5sZXNzIHNlbGVjdGluZyBzYW1lIGRhdGUgdHdpY2UsIHNvcnQgYXNjZW5kaW5nbHlcbiAgICAgICAgICAgICAgICBpZiAoY29tcGFyZURhdGVzKHNlbGVjdGVkRGF0ZSwgc2VsZi5zZWxlY3RlZERhdGVzWzBdLCB0cnVlKSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RlZERhdGVzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEuZ2V0VGltZSgpIC0gYi5nZXRUaW1lKCk7IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0SG91cnNGcm9tSW5wdXRzKCk7XG4gICAgICAgICAgICBpZiAoc2hvdWxkQ2hhbmdlTW9udGgpIHtcbiAgICAgICAgICAgICAgICB2YXIgaXNOZXdZZWFyID0gc2VsZi5jdXJyZW50WWVhciAhPT0gc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50WWVhciA9IHNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudE1vbnRoID0gc2VsZWN0ZWREYXRlLmdldE1vbnRoKCk7XG4gICAgICAgICAgICAgICAgaWYgKGlzTmV3WWVhcikge1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoXCJvblllYXJDaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgICAgIGJ1aWxkTW9udGhTd2l0Y2goKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdHJpZ2dlckV2ZW50KFwib25Nb250aENoYW5nZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVwZGF0ZU5hdmlnYXRpb25DdXJyZW50TW9udGgoKTtcbiAgICAgICAgICAgIGJ1aWxkRGF5cygpO1xuICAgICAgICAgICAgdXBkYXRlVmFsdWUoKTtcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5lbmFibGVUaW1lKVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHNlbGYuc2hvd1RpbWVJbnB1dCA9IHRydWUpOyB9LCA1MCk7XG4gICAgICAgICAgICAvLyBtYWludGFpbiBmb2N1c1xuICAgICAgICAgICAgaWYgKCFzaG91bGRDaGFuZ2VNb250aCAmJlxuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLm1vZGUgIT09IFwicmFuZ2VcIiAmJlxuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLnNob3dNb250aHMgPT09IDEpXG4gICAgICAgICAgICAgICAgZm9jdXNPbkRheUVsZW0odGFyZ2V0KTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHNlbGYuc2VsZWN0ZWREYXRlRWxlbSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgc2VsZi5ob3VyRWxlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RlZERhdGVFbGVtICYmIHNlbGYuc2VsZWN0ZWREYXRlRWxlbS5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGYuaG91ckVsZW1lbnQgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBzZWxmLmhvdXJFbGVtZW50ICE9PSB1bmRlZmluZWQgJiYgc2VsZi5ob3VyRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgICAgICAgICAgICB2YXIgc2luZ2xlID0gc2VsZi5jb25maWcubW9kZSA9PT0gXCJzaW5nbGVcIiAmJiAhc2VsZi5jb25maWcuZW5hYmxlVGltZTtcbiAgICAgICAgICAgICAgICB2YXIgcmFuZ2UgPSBzZWxmLmNvbmZpZy5tb2RlID09PSBcInJhbmdlXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RlZERhdGVzLmxlbmd0aCA9PT0gMiAmJlxuICAgICAgICAgICAgICAgICAgICAhc2VsZi5jb25maWcuZW5hYmxlVGltZTtcbiAgICAgICAgICAgICAgICBpZiAoc2luZ2xlIHx8IHJhbmdlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvY3VzQW5kQ2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cmlnZ2VyQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIENBTExCQUNLUyA9IHtcbiAgICAgICAgICAgIGxvY2FsZTogW3NldHVwTG9jYWxlLCB1cGRhdGVXZWVrZGF5c10sXG4gICAgICAgICAgICBzaG93TW9udGhzOiBbYnVpbGRNb250aHMsIHNldENhbGVuZGFyV2lkdGgsIGJ1aWxkV2Vla2RheXNdLFxuICAgICAgICAgICAgbWluRGF0ZTogW2p1bXBUb0RhdGVdLFxuICAgICAgICAgICAgbWF4RGF0ZTogW2p1bXBUb0RhdGVdXG4gICAgICAgIH07XG4gICAgICAgIGZ1bmN0aW9uIHNldChvcHRpb24sIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9uICE9PSBudWxsICYmIHR5cGVvZiBvcHRpb24gPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHNlbGYuY29uZmlnLCBvcHRpb24pO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBvcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKENBTExCQUNLU1trZXldICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICBDQUxMQkFDS1Nba2V5XS5mb3JFYWNoKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4KCk7IH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnW29wdGlvbl0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAoQ0FMTEJBQ0tTW29wdGlvbl0gIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgQ0FMTEJBQ0tTW29wdGlvbl0uZm9yRWFjaChmdW5jdGlvbiAoeCkgeyByZXR1cm4geCgpOyB9KTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChIT09LUy5pbmRleE9mKG9wdGlvbikgPiAtMSlcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWdbb3B0aW9uXSA9IGFycmF5aWZ5KHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGYucmVkcmF3KCk7XG4gICAgICAgICAgICB1cGRhdGVWYWx1ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gc2V0U2VsZWN0ZWREYXRlKGlucHV0RGF0ZSwgZm9ybWF0KSB7XG4gICAgICAgICAgICB2YXIgZGF0ZXMgPSBbXTtcbiAgICAgICAgICAgIGlmIChpbnB1dERhdGUgaW5zdGFuY2VvZiBBcnJheSlcbiAgICAgICAgICAgICAgICBkYXRlcyA9IGlucHV0RGF0ZS5tYXAoZnVuY3Rpb24gKGQpIHsgcmV0dXJuIHNlbGYucGFyc2VEYXRlKGQsIGZvcm1hdCk7IH0pO1xuICAgICAgICAgICAgZWxzZSBpZiAoaW5wdXREYXRlIGluc3RhbmNlb2YgRGF0ZSB8fCB0eXBlb2YgaW5wdXREYXRlID09PSBcIm51bWJlclwiKVxuICAgICAgICAgICAgICAgIGRhdGVzID0gW3NlbGYucGFyc2VEYXRlKGlucHV0RGF0ZSwgZm9ybWF0KV07XG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgaW5wdXREYXRlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChzZWxmLmNvbmZpZy5tb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzaW5nbGVcIjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInRpbWVcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVzID0gW3NlbGYucGFyc2VEYXRlKGlucHV0RGF0ZSwgZm9ybWF0KV07XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIm11bHRpcGxlXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlcyA9IGlucHV0RGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdChzZWxmLmNvbmZpZy5jb25qdW5jdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChkYXRlKSB7IHJldHVybiBzZWxmLnBhcnNlRGF0ZShkYXRlLCBmb3JtYXQpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwicmFuZ2VcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVzID0gaW5wdXREYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KHNlbGYubDEwbi5yYW5nZVNlcGFyYXRvcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChkYXRlKSB7IHJldHVybiBzZWxmLnBhcnNlRGF0ZShkYXRlLCBmb3JtYXQpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLmVycm9ySGFuZGxlcihuZXcgRXJyb3IoXCJJbnZhbGlkIGRhdGUgc3VwcGxpZWQ6IFwiICsgSlNPTi5zdHJpbmdpZnkoaW5wdXREYXRlKSkpO1xuICAgICAgICAgICAgc2VsZi5zZWxlY3RlZERhdGVzID0gZGF0ZXMuZmlsdGVyKGZ1bmN0aW9uIChkKSB7IHJldHVybiBkIGluc3RhbmNlb2YgRGF0ZSAmJiBpc0VuYWJsZWQoZCwgZmFsc2UpOyB9KTtcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5tb2RlID09PSBcInJhbmdlXCIpXG4gICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RlZERhdGVzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEuZ2V0VGltZSgpIC0gYi5nZXRUaW1lKCk7IH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHNldERhdGUoZGF0ZSwgdHJpZ2dlckNoYW5nZSwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAodHJpZ2dlckNoYW5nZSA9PT0gdm9pZCAwKSB7IHRyaWdnZXJDaGFuZ2UgPSBmYWxzZTsgfVxuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IHNlbGYuY29uZmlnLmRhdGVGb3JtYXQ7IH1cbiAgICAgICAgICAgIGlmICgoZGF0ZSAhPT0gMCAmJiAhZGF0ZSkgfHwgKGRhdGUgaW5zdGFuY2VvZiBBcnJheSAmJiBkYXRlLmxlbmd0aCA9PT0gMCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2xlYXIodHJpZ2dlckNoYW5nZSk7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZERhdGUoZGF0ZSwgZm9ybWF0KTtcbiAgICAgICAgICAgIHNlbGYuc2hvd1RpbWVJbnB1dCA9IHNlbGYuc2VsZWN0ZWREYXRlcy5sZW5ndGggPiAwO1xuICAgICAgICAgICAgc2VsZi5sYXRlc3RTZWxlY3RlZERhdGVPYmogPVxuICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWREYXRlc1tzZWxmLnNlbGVjdGVkRGF0ZXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBzZWxmLnJlZHJhdygpO1xuICAgICAgICAgICAganVtcFRvRGF0ZSgpO1xuICAgICAgICAgICAgc2V0SG91cnNGcm9tRGF0ZSgpO1xuICAgICAgICAgICAgaWYgKHNlbGYuc2VsZWN0ZWREYXRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBzZWxmLmNsZWFyKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVwZGF0ZVZhbHVlKHRyaWdnZXJDaGFuZ2UpO1xuICAgICAgICAgICAgaWYgKHRyaWdnZXJDaGFuZ2UpXG4gICAgICAgICAgICAgICAgdHJpZ2dlckV2ZW50KFwib25DaGFuZ2VcIik7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gcGFyc2VEYXRlUnVsZXMoYXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJyXG4gICAgICAgICAgICAgICAgLnNsaWNlKClcbiAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChydWxlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBydWxlID09PSBcInN0cmluZ1wiIHx8XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBydWxlID09PSBcIm51bWJlclwiIHx8XG4gICAgICAgICAgICAgICAgICAgIHJ1bGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnBhcnNlRGF0ZShydWxlLCB1bmRlZmluZWQsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChydWxlICYmXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBydWxlID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICAgICAgICAgIHJ1bGUuZnJvbSAmJlxuICAgICAgICAgICAgICAgICAgICBydWxlLnRvKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZnJvbTogc2VsZi5wYXJzZURhdGUocnVsZS5mcm9tLCB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdG86IHNlbGYucGFyc2VEYXRlKHJ1bGUudG8sIHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcnVsZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoeCkgeyByZXR1cm4geDsgfSk7IC8vIHJlbW92ZSBmYWxzeSB2YWx1ZXNcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzZXR1cERhdGVzKCkge1xuICAgICAgICAgICAgc2VsZi5zZWxlY3RlZERhdGVzID0gW107XG4gICAgICAgICAgICBzZWxmLm5vdyA9IHNlbGYucGFyc2VEYXRlKHNlbGYuY29uZmlnLm5vdykgfHwgbmV3IERhdGUoKTtcbiAgICAgICAgICAgIC8vIFdvcmthcm91bmQgSUUxMSBzZXR0aW5nIHBsYWNlaG9sZGVyIGFzIHRoZSBpbnB1dCdzIHZhbHVlXG4gICAgICAgICAgICB2YXIgcHJlbG9hZGVkRGF0ZSA9IHNlbGYuY29uZmlnLmRlZmF1bHREYXRlIHx8XG4gICAgICAgICAgICAgICAgKChzZWxmLmlucHV0Lm5vZGVOYW1lID09PSBcIklOUFVUXCIgfHxcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5pbnB1dC5ub2RlTmFtZSA9PT0gXCJURVhUQVJFQVwiKSAmJlxuICAgICAgICAgICAgICAgICAgICBzZWxmLmlucHV0LnBsYWNlaG9sZGVyICYmXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuaW5wdXQudmFsdWUgPT09IHNlbGYuaW5wdXQucGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICAgIDogc2VsZi5pbnB1dC52YWx1ZSk7XG4gICAgICAgICAgICBpZiAocHJlbG9hZGVkRGF0ZSlcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZERhdGUocHJlbG9hZGVkRGF0ZSwgc2VsZi5jb25maWcuZGF0ZUZvcm1hdCk7XG4gICAgICAgICAgICBzZWxmLl9pbml0aWFsRGF0ZSA9XG4gICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RlZERhdGVzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgPyBzZWxmLnNlbGVjdGVkRGF0ZXNbMF1cbiAgICAgICAgICAgICAgICAgICAgOiBzZWxmLmNvbmZpZy5taW5EYXRlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZy5taW5EYXRlLmdldFRpbWUoKSA+IHNlbGYubm93LmdldFRpbWUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWxmLmNvbmZpZy5taW5EYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlbGYuY29uZmlnLm1heERhdGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZy5tYXhEYXRlLmdldFRpbWUoKSA8IHNlbGYubm93LmdldFRpbWUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc2VsZi5jb25maWcubWF4RGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc2VsZi5ub3c7XG4gICAgICAgICAgICBzZWxmLmN1cnJlbnRZZWFyID0gc2VsZi5faW5pdGlhbERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICAgIHNlbGYuY3VycmVudE1vbnRoID0gc2VsZi5faW5pdGlhbERhdGUuZ2V0TW9udGgoKTtcbiAgICAgICAgICAgIGlmIChzZWxmLnNlbGVjdGVkRGF0ZXMubGVuZ3RoID4gMClcbiAgICAgICAgICAgICAgICBzZWxmLmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiA9IHNlbGYuc2VsZWN0ZWREYXRlc1swXTtcbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5taW5UaW1lICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgc2VsZi5jb25maWcubWluVGltZSA9IHNlbGYucGFyc2VEYXRlKHNlbGYuY29uZmlnLm1pblRpbWUsIFwiSDppXCIpO1xuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnLm1heFRpbWUgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZy5tYXhUaW1lID0gc2VsZi5wYXJzZURhdGUoc2VsZi5jb25maWcubWF4VGltZSwgXCJIOmlcIik7XG4gICAgICAgICAgICBzZWxmLm1pbkRhdGVIYXNUaW1lID1cbiAgICAgICAgICAgICAgICAhIXNlbGYuY29uZmlnLm1pbkRhdGUgJiZcbiAgICAgICAgICAgICAgICAgICAgKHNlbGYuY29uZmlnLm1pbkRhdGUuZ2V0SG91cnMoKSA+IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLm1pbkRhdGUuZ2V0TWludXRlcygpID4gMCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWcubWluRGF0ZS5nZXRTZWNvbmRzKCkgPiAwKTtcbiAgICAgICAgICAgIHNlbGYubWF4RGF0ZUhhc1RpbWUgPVxuICAgICAgICAgICAgICAgICEhc2VsZi5jb25maWcubWF4RGF0ZSAmJlxuICAgICAgICAgICAgICAgICAgICAoc2VsZi5jb25maWcubWF4RGF0ZS5nZXRIb3VycygpID4gMCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWcubWF4RGF0ZS5nZXRNaW51dGVzKCkgPiAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZy5tYXhEYXRlLmdldFNlY29uZHMoKSA+IDApO1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHNlbGYsIFwic2hvd1RpbWVJbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBzZWxmLl9zaG93VGltZUlucHV0OyB9LFxuICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24gKGJvb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2hvd1RpbWVJbnB1dCA9IGJvb2w7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLmNhbGVuZGFyQ29udGFpbmVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3Moc2VsZi5jYWxlbmRhckNvbnRhaW5lciwgXCJzaG93VGltZUlucHV0XCIsIGJvb2wpO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmlzT3BlbiAmJiBwb3NpdGlvbkNhbGVuZGFyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gc2V0dXBJbnB1dHMoKSB7XG4gICAgICAgICAgICBzZWxmLmlucHV0ID0gc2VsZi5jb25maWcud3JhcFxuICAgICAgICAgICAgICAgID8gZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiW2RhdGEtaW5wdXRdXCIpXG4gICAgICAgICAgICAgICAgOiBlbGVtZW50O1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgIGlmICghc2VsZi5pbnB1dCkge1xuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLmVycm9ySGFuZGxlcihuZXcgRXJyb3IoXCJJbnZhbGlkIGlucHV0IGVsZW1lbnQgc3BlY2lmaWVkXCIpKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBoYWNrOiBzdG9yZSBwcmV2aW91cyB0eXBlIHRvIHJlc3RvcmUgaXQgYWZ0ZXIgZGVzdHJveSgpXG4gICAgICAgICAgICBzZWxmLmlucHV0Ll90eXBlID0gc2VsZi5pbnB1dC50eXBlO1xuICAgICAgICAgICAgc2VsZi5pbnB1dC50eXBlID0gXCJ0ZXh0XCI7XG4gICAgICAgICAgICBzZWxmLmlucHV0LmNsYXNzTGlzdC5hZGQoXCJmbGF0cGlja3ItaW5wdXRcIik7XG4gICAgICAgICAgICBzZWxmLl9pbnB1dCA9IHNlbGYuaW5wdXQ7XG4gICAgICAgICAgICBpZiAoc2VsZi5jb25maWcuYWx0SW5wdXQpIHtcbiAgICAgICAgICAgICAgICAvLyByZXBsaWNhdGUgc2VsZi5lbGVtZW50XG4gICAgICAgICAgICAgICAgc2VsZi5hbHRJbnB1dCA9IGNyZWF0ZUVsZW1lbnQoc2VsZi5pbnB1dC5ub2RlTmFtZSwgc2VsZi5jb25maWcuYWx0SW5wdXRDbGFzcyk7XG4gICAgICAgICAgICAgICAgc2VsZi5faW5wdXQgPSBzZWxmLmFsdElucHV0O1xuICAgICAgICAgICAgICAgIHNlbGYuYWx0SW5wdXQucGxhY2Vob2xkZXIgPSBzZWxmLmlucHV0LnBsYWNlaG9sZGVyO1xuICAgICAgICAgICAgICAgIHNlbGYuYWx0SW5wdXQuZGlzYWJsZWQgPSBzZWxmLmlucHV0LmRpc2FibGVkO1xuICAgICAgICAgICAgICAgIHNlbGYuYWx0SW5wdXQucmVxdWlyZWQgPSBzZWxmLmlucHV0LnJlcXVpcmVkO1xuICAgICAgICAgICAgICAgIHNlbGYuYWx0SW5wdXQudGFiSW5kZXggPSBzZWxmLmlucHV0LnRhYkluZGV4O1xuICAgICAgICAgICAgICAgIHNlbGYuYWx0SW5wdXQudHlwZSA9IFwidGV4dFwiO1xuICAgICAgICAgICAgICAgIHNlbGYuaW5wdXQuc2V0QXR0cmlidXRlKFwidHlwZVwiLCBcImhpZGRlblwiKTtcbiAgICAgICAgICAgICAgICBpZiAoIXNlbGYuY29uZmlnLnN0YXRpYyAmJiBzZWxmLmlucHV0LnBhcmVudE5vZGUpXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuaW5wdXQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoc2VsZi5hbHRJbnB1dCwgc2VsZi5pbnB1dC5uZXh0U2libGluZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXNlbGYuY29uZmlnLmFsbG93SW5wdXQpXG4gICAgICAgICAgICAgICAgc2VsZi5faW5wdXQuc2V0QXR0cmlidXRlKFwicmVhZG9ubHlcIiwgXCJyZWFkb25seVwiKTtcbiAgICAgICAgICAgIHNlbGYuX3Bvc2l0aW9uRWxlbWVudCA9IHNlbGYuY29uZmlnLnBvc2l0aW9uRWxlbWVudCB8fCBzZWxmLl9pbnB1dDtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzZXR1cE1vYmlsZSgpIHtcbiAgICAgICAgICAgIHZhciBpbnB1dFR5cGUgPSBzZWxmLmNvbmZpZy5lbmFibGVUaW1lXG4gICAgICAgICAgICAgICAgPyBzZWxmLmNvbmZpZy5ub0NhbGVuZGFyXG4gICAgICAgICAgICAgICAgICAgID8gXCJ0aW1lXCJcbiAgICAgICAgICAgICAgICAgICAgOiBcImRhdGV0aW1lLWxvY2FsXCJcbiAgICAgICAgICAgICAgICA6IFwiZGF0ZVwiO1xuICAgICAgICAgICAgc2VsZi5tb2JpbGVJbnB1dCA9IGNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCBzZWxmLmlucHV0LmNsYXNzTmFtZSArIFwiIGZsYXRwaWNrci1tb2JpbGVcIik7XG4gICAgICAgICAgICBzZWxmLm1vYmlsZUlucHV0LnN0ZXAgPSBzZWxmLmlucHV0LmdldEF0dHJpYnV0ZShcInN0ZXBcIikgfHwgXCJhbnlcIjtcbiAgICAgICAgICAgIHNlbGYubW9iaWxlSW5wdXQudGFiSW5kZXggPSAxO1xuICAgICAgICAgICAgc2VsZi5tb2JpbGVJbnB1dC50eXBlID0gaW5wdXRUeXBlO1xuICAgICAgICAgICAgc2VsZi5tb2JpbGVJbnB1dC5kaXNhYmxlZCA9IHNlbGYuaW5wdXQuZGlzYWJsZWQ7XG4gICAgICAgICAgICBzZWxmLm1vYmlsZUlucHV0LnJlcXVpcmVkID0gc2VsZi5pbnB1dC5yZXF1aXJlZDtcbiAgICAgICAgICAgIHNlbGYubW9iaWxlSW5wdXQucGxhY2Vob2xkZXIgPSBzZWxmLmlucHV0LnBsYWNlaG9sZGVyO1xuICAgICAgICAgICAgc2VsZi5tb2JpbGVGb3JtYXRTdHIgPVxuICAgICAgICAgICAgICAgIGlucHV0VHlwZSA9PT0gXCJkYXRldGltZS1sb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgID8gXCJZLW0tZFxcXFxUSDppOlNcIlxuICAgICAgICAgICAgICAgICAgICA6IGlucHV0VHlwZSA9PT0gXCJkYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJZLW0tZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiSDppOlNcIjtcbiAgICAgICAgICAgIGlmIChzZWxmLnNlbGVjdGVkRGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHNlbGYubW9iaWxlSW5wdXQuZGVmYXVsdFZhbHVlID0gc2VsZi5tb2JpbGVJbnB1dC52YWx1ZSA9IHNlbGYuZm9ybWF0RGF0ZShzZWxmLnNlbGVjdGVkRGF0ZXNbMF0sIHNlbGYubW9iaWxlRm9ybWF0U3RyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5taW5EYXRlKVxuICAgICAgICAgICAgICAgIHNlbGYubW9iaWxlSW5wdXQubWluID0gc2VsZi5mb3JtYXREYXRlKHNlbGYuY29uZmlnLm1pbkRhdGUsIFwiWS1tLWRcIik7XG4gICAgICAgICAgICBpZiAoc2VsZi5jb25maWcubWF4RGF0ZSlcbiAgICAgICAgICAgICAgICBzZWxmLm1vYmlsZUlucHV0Lm1heCA9IHNlbGYuZm9ybWF0RGF0ZShzZWxmLmNvbmZpZy5tYXhEYXRlLCBcIlktbS1kXCIpO1xuICAgICAgICAgICAgc2VsZi5pbnB1dC50eXBlID0gXCJoaWRkZW5cIjtcbiAgICAgICAgICAgIGlmIChzZWxmLmFsdElucHV0ICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgc2VsZi5hbHRJbnB1dC50eXBlID0gXCJoaWRkZW5cIjtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuaW5wdXQucGFyZW50Tm9kZSlcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5pbnB1dC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzZWxmLm1vYmlsZUlucHV0LCBzZWxmLmlucHV0Lm5leHRTaWJsaW5nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChfYSkgeyB9XG4gICAgICAgICAgICBiaW5kKHNlbGYubW9iaWxlSW5wdXQsIFwiY2hhbmdlXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5zZXREYXRlKGUudGFyZ2V0LnZhbHVlLCBmYWxzZSwgc2VsZi5tb2JpbGVGb3JtYXRTdHIpO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJFdmVudChcIm9uQ2hhbmdlXCIpO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJFdmVudChcIm9uQ2xvc2VcIik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiB0b2dnbGUoZSkge1xuICAgICAgICAgICAgaWYgKHNlbGYuaXNPcGVuID09PSB0cnVlKVxuICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNsb3NlKCk7XG4gICAgICAgICAgICBzZWxmLm9wZW4oZSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gdHJpZ2dlckV2ZW50KGV2ZW50LCBkYXRhKSB7XG4gICAgICAgICAgICAvLyBJZiB0aGUgaW5zdGFuY2UgaGFzIGJlZW4gZGVzdHJveWVkIGFscmVhZHksIGFsbCBob29rcyBoYXZlIGJlZW4gcmVtb3ZlZFxuICAgICAgICAgICAgaWYgKHNlbGYuY29uZmlnID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgdmFyIGhvb2tzID0gc2VsZi5jb25maWdbZXZlbnRdO1xuICAgICAgICAgICAgaWYgKGhvb2tzICE9PSB1bmRlZmluZWQgJiYgaG9va3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBob29rc1tpXSAmJiBpIDwgaG9va3MubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICAgICAgICAgIGhvb2tzW2ldKHNlbGYuc2VsZWN0ZWREYXRlcywgc2VsZi5pbnB1dC52YWx1ZSwgc2VsZiwgZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXZlbnQgPT09IFwib25DaGFuZ2VcIikge1xuICAgICAgICAgICAgICAgIHNlbGYuaW5wdXQuZGlzcGF0Y2hFdmVudChjcmVhdGVFdmVudChcImNoYW5nZVwiKSk7XG4gICAgICAgICAgICAgICAgLy8gbWFueSBmcm9udC1lbmQgZnJhbWV3b3JrcyBiaW5kIHRvIHRoZSBpbnB1dCBldmVudFxuICAgICAgICAgICAgICAgIHNlbGYuaW5wdXQuZGlzcGF0Y2hFdmVudChjcmVhdGVFdmVudChcImlucHV0XCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBjcmVhdGVFdmVudChuYW1lKSB7XG4gICAgICAgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KFwiRXZlbnRcIik7XG4gICAgICAgICAgICBlLmluaXRFdmVudChuYW1lLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGlzRGF0ZVNlbGVjdGVkKGRhdGUpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZi5zZWxlY3RlZERhdGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbXBhcmVEYXRlcyhzZWxmLnNlbGVjdGVkRGF0ZXNbaV0sIGRhdGUpID09PSAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJcIiArIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gaXNEYXRlSW5SYW5nZShkYXRlKSB7XG4gICAgICAgICAgICBpZiAoc2VsZi5jb25maWcubW9kZSAhPT0gXCJyYW5nZVwiIHx8IHNlbGYuc2VsZWN0ZWREYXRlcy5sZW5ndGggPCAyKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiAoY29tcGFyZURhdGVzKGRhdGUsIHNlbGYuc2VsZWN0ZWREYXRlc1swXSkgPj0gMCAmJlxuICAgICAgICAgICAgICAgIGNvbXBhcmVEYXRlcyhkYXRlLCBzZWxmLnNlbGVjdGVkRGF0ZXNbMV0pIDw9IDApO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZU5hdmlnYXRpb25DdXJyZW50TW9udGgoKSB7XG4gICAgICAgICAgICBpZiAoc2VsZi5jb25maWcubm9DYWxlbmRhciB8fCBzZWxmLmlzTW9iaWxlIHx8ICFzZWxmLm1vbnRoTmF2KVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIHNlbGYueWVhckVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKHllYXJFbGVtZW50LCBpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGQgPSBuZXcgRGF0ZShzZWxmLmN1cnJlbnRZZWFyLCBzZWxmLmN1cnJlbnRNb250aCwgMSk7XG4gICAgICAgICAgICAgICAgZC5zZXRNb250aChzZWxmLmN1cnJlbnRNb250aCArIGkpO1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLmNvbmZpZy5zaG93TW9udGhzID4gMSB8fFxuICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZy5tb250aFNlbGVjdG9yVHlwZSA9PT0gXCJzdGF0aWNcIikge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLm1vbnRoRWxlbWVudHNbaV0udGV4dENvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgbW9udGhUb1N0cihkLmdldE1vbnRoKCksIHNlbGYuY29uZmlnLnNob3J0aGFuZEN1cnJlbnRNb250aCwgc2VsZi5sMTBuKSArIFwiIFwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5tb250aHNEcm9wZG93bkNvbnRhaW5lci52YWx1ZSA9IGQuZ2V0TW9udGgoKS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB5ZWFyRWxlbWVudC52YWx1ZSA9IGQuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzZWxmLl9oaWRlUHJldk1vbnRoQXJyb3cgPVxuICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnLm1pbkRhdGUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAoc2VsZi5jdXJyZW50WWVhciA9PT0gc2VsZi5jb25maWcubWluRGF0ZS5nZXRGdWxsWWVhcigpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlbGYuY3VycmVudE1vbnRoIDw9IHNlbGYuY29uZmlnLm1pbkRhdGUuZ2V0TW9udGgoKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWxmLmN1cnJlbnRZZWFyIDwgc2VsZi5jb25maWcubWluRGF0ZS5nZXRGdWxsWWVhcigpKTtcbiAgICAgICAgICAgIHNlbGYuX2hpZGVOZXh0TW9udGhBcnJvdyA9XG4gICAgICAgICAgICAgICAgc2VsZi5jb25maWcubWF4RGF0ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgIChzZWxmLmN1cnJlbnRZZWFyID09PSBzZWxmLmNvbmZpZy5tYXhEYXRlLmdldEZ1bGxZZWFyKClcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2VsZi5jdXJyZW50TW9udGggKyAxID4gc2VsZi5jb25maWcubWF4RGF0ZS5nZXRNb250aCgpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlbGYuY3VycmVudFllYXIgPiBzZWxmLmNvbmZpZy5tYXhEYXRlLmdldEZ1bGxZZWFyKCkpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGdldERhdGVTdHIoZm9ybWF0KSB7XG4gICAgICAgICAgICByZXR1cm4gc2VsZi5zZWxlY3RlZERhdGVzXG4gICAgICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAoZE9iaikgeyByZXR1cm4gc2VsZi5mb3JtYXREYXRlKGRPYmosIGZvcm1hdCk7IH0pXG4gICAgICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoZCwgaSwgYXJyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29uZmlnLm1vZGUgIT09IFwicmFuZ2VcIiB8fFxuICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZy5lbmFibGVUaW1lIHx8XG4gICAgICAgICAgICAgICAgICAgIGFyci5pbmRleE9mKGQpID09PSBpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuam9pbihzZWxmLmNvbmZpZy5tb2RlICE9PSBcInJhbmdlXCJcbiAgICAgICAgICAgICAgICA/IHNlbGYuY29uZmlnLmNvbmp1bmN0aW9uXG4gICAgICAgICAgICAgICAgOiBzZWxmLmwxMG4ucmFuZ2VTZXBhcmF0b3IpO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVcGRhdGVzIHRoZSB2YWx1ZXMgb2YgaW5wdXRzIGFzc29jaWF0ZWQgd2l0aCB0aGUgY2FsZW5kYXJcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVZhbHVlKHRyaWdnZXJDaGFuZ2UpIHtcbiAgICAgICAgICAgIGlmICh0cmlnZ2VyQ2hhbmdlID09PSB2b2lkIDApIHsgdHJpZ2dlckNoYW5nZSA9IHRydWU7IH1cbiAgICAgICAgICAgIGlmIChzZWxmLm1vYmlsZUlucHV0ICE9PSB1bmRlZmluZWQgJiYgc2VsZi5tb2JpbGVGb3JtYXRTdHIpIHtcbiAgICAgICAgICAgICAgICBzZWxmLm1vYmlsZUlucHV0LnZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgc2VsZi5sYXRlc3RTZWxlY3RlZERhdGVPYmogIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWxmLmZvcm1hdERhdGUoc2VsZi5sYXRlc3RTZWxlY3RlZERhdGVPYmosIHNlbGYubW9iaWxlRm9ybWF0U3RyKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZi5pbnB1dC52YWx1ZSA9IGdldERhdGVTdHIoc2VsZi5jb25maWcuZGF0ZUZvcm1hdCk7XG4gICAgICAgICAgICBpZiAoc2VsZi5hbHRJbnB1dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5hbHRJbnB1dC52YWx1ZSA9IGdldERhdGVTdHIoc2VsZi5jb25maWcuYWx0Rm9ybWF0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0cmlnZ2VyQ2hhbmdlICE9PSBmYWxzZSlcbiAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoXCJvblZhbHVlVXBkYXRlXCIpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIG9uTW9udGhOYXZDbGljayhlKSB7XG4gICAgICAgICAgICB2YXIgaXNQcmV2TW9udGggPSBzZWxmLnByZXZNb250aE5hdi5jb250YWlucyhlLnRhcmdldCk7XG4gICAgICAgICAgICB2YXIgaXNOZXh0TW9udGggPSBzZWxmLm5leHRNb250aE5hdi5jb250YWlucyhlLnRhcmdldCk7XG4gICAgICAgICAgICBpZiAoaXNQcmV2TW9udGggfHwgaXNOZXh0TW9udGgpIHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VNb250aChpc1ByZXZNb250aCA/IC0xIDogMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzZWxmLnllYXJFbGVtZW50cy5pbmRleE9mKGUudGFyZ2V0KSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgZS50YXJnZXQuc2VsZWN0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcnJvd1VwXCIpKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5jaGFuZ2VZZWFyKHNlbGYuY3VycmVudFllYXIgKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFycm93RG93blwiKSkge1xuICAgICAgICAgICAgICAgIHNlbGYuY2hhbmdlWWVhcihzZWxmLmN1cnJlbnRZZWFyIC0gMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gdGltZVdyYXBwZXIoZSkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdmFyIGlzS2V5RG93biA9IGUudHlwZSA9PT0gXCJrZXlkb3duXCIsIGlucHV0ID0gZS50YXJnZXQ7XG4gICAgICAgICAgICBpZiAoc2VsZi5hbVBNICE9PSB1bmRlZmluZWQgJiYgZS50YXJnZXQgPT09IHNlbGYuYW1QTSkge1xuICAgICAgICAgICAgICAgIHNlbGYuYW1QTS50ZXh0Q29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgIHNlbGYubDEwbi5hbVBNW2ludChzZWxmLmFtUE0udGV4dENvbnRlbnQgPT09IHNlbGYubDEwbi5hbVBNWzBdKV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgbWluID0gcGFyc2VGbG9hdChpbnB1dC5nZXRBdHRyaWJ1dGUoXCJtaW5cIikpLCBtYXggPSBwYXJzZUZsb2F0KGlucHV0LmdldEF0dHJpYnV0ZShcIm1heFwiKSksIHN0ZXAgPSBwYXJzZUZsb2F0KGlucHV0LmdldEF0dHJpYnV0ZShcInN0ZXBcIikpLCBjdXJWYWx1ZSA9IHBhcnNlSW50KGlucHV0LnZhbHVlLCAxMCksIGRlbHRhID0gZS5kZWx0YSB8fFxuICAgICAgICAgICAgICAgIChpc0tleURvd24gPyAoZS53aGljaCA9PT0gMzggPyAxIDogLTEpIDogMCk7XG4gICAgICAgICAgICB2YXIgbmV3VmFsdWUgPSBjdXJWYWx1ZSArIHN0ZXAgKiBkZWx0YTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaW5wdXQudmFsdWUgIT09IFwidW5kZWZpbmVkXCIgJiYgaW5wdXQudmFsdWUubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgdmFyIGlzSG91ckVsZW0gPSBpbnB1dCA9PT0gc2VsZi5ob3VyRWxlbWVudCwgaXNNaW51dGVFbGVtID0gaW5wdXQgPT09IHNlbGYubWludXRlRWxlbWVudDtcbiAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWUgPCBtaW4pIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KCFpc0hvdXJFbGVtKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludChpc0hvdXJFbGVtKSAmJiBpbnQoIXNlbGYuYW1QTSkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNNaW51dGVFbGVtKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50TnVtSW5wdXQodW5kZWZpbmVkLCAtMSwgc2VsZi5ob3VyRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5ld1ZhbHVlID4gbWF4KSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0ID09PSBzZWxmLmhvdXJFbGVtZW50ID8gbmV3VmFsdWUgLSBtYXggLSBpbnQoIXNlbGYuYW1QTSkgOiBtaW47XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc01pbnV0ZUVsZW0pXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnROdW1JbnB1dCh1bmRlZmluZWQsIDEsIHNlbGYuaG91ckVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5hbVBNICYmXG4gICAgICAgICAgICAgICAgICAgIGlzSG91ckVsZW0gJiZcbiAgICAgICAgICAgICAgICAgICAgKHN0ZXAgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbmV3VmFsdWUgKyBjdXJWYWx1ZSA9PT0gMjNcbiAgICAgICAgICAgICAgICAgICAgICAgIDogTWF0aC5hYnMobmV3VmFsdWUgLSBjdXJWYWx1ZSkgPiBzdGVwKSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmFtUE0udGV4dENvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sMTBuLmFtUE1baW50KHNlbGYuYW1QTS50ZXh0Q29udGVudCA9PT0gc2VsZi5sMTBuLmFtUE1bMF0pXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaW5wdXQudmFsdWUgPSBwYWQobmV3VmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGluaXQoKTtcbiAgICAgICAgcmV0dXJuIHNlbGY7XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgZnVuY3Rpb24gX2ZsYXRwaWNrcihub2RlTGlzdCwgY29uZmlnKSB7XG4gICAgICAgIC8vIHN0YXRpYyBsaXN0XG4gICAgICAgIHZhciBub2RlcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZVxuICAgICAgICAgICAgLmNhbGwobm9kZUxpc3QpXG4gICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7IH0pO1xuICAgICAgICB2YXIgaW5zdGFuY2VzID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChub2RlLmdldEF0dHJpYnV0ZShcImRhdGEtZnAtb21pdFwiKSAhPT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUuX2ZsYXRwaWNrciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuX2ZsYXRwaWNrci5kZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuX2ZsYXRwaWNrciA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbm9kZS5fZmxhdHBpY2tyID0gRmxhdHBpY2tySW5zdGFuY2Uobm9kZSwgY29uZmlnIHx8IHt9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZXMucHVzaChub2RlLl9mbGF0cGlja3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbnN0YW5jZXMubGVuZ3RoID09PSAxID8gaW5zdGFuY2VzWzBdIDogaW5zdGFuY2VzO1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0eXBlb2YgSFRNTEVsZW1lbnQgIT09IFwidW5kZWZpbmVkXCIgJiZcbiAgICAgICAgdHlwZW9mIEhUTUxDb2xsZWN0aW9uICE9PSBcInVuZGVmaW5lZFwiICYmXG4gICAgICAgIHR5cGVvZiBOb2RlTGlzdCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAvLyBicm93c2VyIGVudlxuICAgICAgICBIVE1MQ29sbGVjdGlvbi5wcm90b3R5cGUuZmxhdHBpY2tyID0gTm9kZUxpc3QucHJvdG90eXBlLmZsYXRwaWNrciA9IGZ1bmN0aW9uIChjb25maWcpIHtcbiAgICAgICAgICAgIHJldHVybiBfZmxhdHBpY2tyKHRoaXMsIGNvbmZpZyk7XG4gICAgICAgIH07XG4gICAgICAgIEhUTUxFbGVtZW50LnByb3RvdHlwZS5mbGF0cGlja3IgPSBmdW5jdGlvbiAoY29uZmlnKSB7XG4gICAgICAgICAgICByZXR1cm4gX2ZsYXRwaWNrcihbdGhpc10sIGNvbmZpZyk7XG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgdmFyIGZsYXRwaWNrciA9IGZ1bmN0aW9uIChzZWxlY3RvciwgY29uZmlnKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBfZmxhdHBpY2tyKHdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSwgY29uZmlnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzZWxlY3RvciBpbnN0YW5jZW9mIE5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBfZmxhdHBpY2tyKFtzZWxlY3Rvcl0sIGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gX2ZsYXRwaWNrcihzZWxlY3RvciwgY29uZmlnKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBmbGF0cGlja3IuZGVmYXVsdENvbmZpZyA9IHt9O1xuICAgIGZsYXRwaWNrci5sMTBucyA9IHtcbiAgICAgICAgZW46IF9fYXNzaWduKHt9LCBlbmdsaXNoKSxcbiAgICAgICAgXCJkZWZhdWx0XCI6IF9fYXNzaWduKHt9LCBlbmdsaXNoKVxuICAgIH07XG4gICAgZmxhdHBpY2tyLmxvY2FsaXplID0gZnVuY3Rpb24gKGwxMG4pIHtcbiAgICAgICAgZmxhdHBpY2tyLmwxMG5zW1wiZGVmYXVsdFwiXSA9IF9fYXNzaWduKHt9LCBmbGF0cGlja3IubDEwbnNbXCJkZWZhdWx0XCJdLCBsMTBuKTtcbiAgICB9O1xuICAgIGZsYXRwaWNrci5zZXREZWZhdWx0cyA9IGZ1bmN0aW9uIChjb25maWcpIHtcbiAgICAgICAgZmxhdHBpY2tyLmRlZmF1bHRDb25maWcgPSBfX2Fzc2lnbih7fSwgZmxhdHBpY2tyLmRlZmF1bHRDb25maWcsIGNvbmZpZyk7XG4gICAgfTtcbiAgICBmbGF0cGlja3IucGFyc2VEYXRlID0gY3JlYXRlRGF0ZVBhcnNlcih7fSk7XG4gICAgZmxhdHBpY2tyLmZvcm1hdERhdGUgPSBjcmVhdGVEYXRlRm9ybWF0dGVyKHt9KTtcbiAgICBmbGF0cGlja3IuY29tcGFyZURhdGVzID0gY29tcGFyZURhdGVzO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKHR5cGVvZiBqUXVlcnkgIT09IFwidW5kZWZpbmVkXCIgJiYgdHlwZW9mIGpRdWVyeS5mbiAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBqUXVlcnkuZm4uZmxhdHBpY2tyID0gZnVuY3Rpb24gKGNvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuIF9mbGF0cGlja3IodGhpcywgY29uZmlnKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9jYW1lbGNhc2VcbiAgICBEYXRlLnByb3RvdHlwZS5mcF9pbmNyID0gZnVuY3Rpb24gKGRheXMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuZ2V0RnVsbFllYXIoKSwgdGhpcy5nZXRNb250aCgpLCB0aGlzLmdldERhdGUoKSArICh0eXBlb2YgZGF5cyA9PT0gXCJzdHJpbmdcIiA/IHBhcnNlSW50KGRheXMsIDEwKSA6IGRheXMpKTtcbiAgICB9O1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIHdpbmRvdy5mbGF0cGlja3IgPSBmbGF0cGlja3I7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZsYXRwaWNrcjtcblxufSkpO1xuIiwiLypcbiAqIEpTUyB2MC42IC0gSmF2YVNjcmlwdCBTdHlsZXNoZWV0c1xuICogaHR0cHM6Ly9naXRodWIuY29tL0JveDkvanNzXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDExLCBEYXZpZCBUYW5nXG4gKiBNSVQgTGljZW5zZWQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKVxuICovXG52YXIganNzID0gKGZ1bmN0aW9uKCkge1xuICAgIHZhciBhZGpTZWxBdHRyUmVnZXggPSAvKCg/OlxcLnwjKVteXFwuXFxzI10rKSgoPzpcXC58IylbXlxcLlxccyNdKykvZztcbiAgICB2YXIgZG91YmxlQ29sb25Qc2V1ZG9FbFJlZ2V4ID0gLyg6OikoYmVmb3JlfGFmdGVyfGZpcnN0LWxpbmV8Zmlyc3QtbGV0dGVyfHNlbGVjdGlvbikvO1xuICAgIHZhciBzaW5nbGVDb2xvblBzZXVkb0VsUmVnZXggPSAvKFteOl0pKDopKGJlZm9yZXxhZnRlcnxmaXJzdC1saW5lfGZpcnN0LWxldHRlcnxzZWxlY3Rpb24pLztcbiAgICB2YXIgc2luZ2xlQ29sb25Gb3JQc2V1ZG9FbGVtZW50czsgLy8gZmxhZyBmb3Igb2xkZXIgYnJvd3NlcnNcblxuICAgIGZ1bmN0aW9uIGdldFNlbGVjdG9yc0FuZFJ1bGVzKHNoZWV0KSB7XG4gICAgICAgIHZhciBydWxlcyA9IHNoZWV0LmNzc1J1bGVzIHx8IHNoZWV0LnJ1bGVzIHx8IFtdO1xuICAgICAgICB2YXIgcmVzdWx0cyA9IHt9O1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAvLyBPbGRlciBicm93c2VycyBhbmQgRkYgcmVwb3J0IHBzZXVkbyBlbGVtZW50IHNlbGVjdG9ycyBpbiBhbiBvdXRkYXRlZCBmb3JtYXRcbiAgICAgICAgICAgIHZhciBzZWxlY3RvclRleHQgPSB0b0RvdWJsZUNvbG9uUHNldWRvRWxlbWVudHMocnVsZXNbaV0uc2VsZWN0b3JUZXh0KTtcbiAgICAgICAgICAgIGlmICghcmVzdWx0c1tzZWxlY3RvclRleHRdKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0c1tzZWxlY3RvclRleHRdID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHRzW3NlbGVjdG9yVGV4dF0ucHVzaCh7XG4gICAgICAgICAgICAgICAgc2hlZXQ6IHNoZWV0LFxuICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgIHN0eWxlOiBydWxlc1tpXS5zdHlsZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UnVsZXMoc2hlZXQsIHNlbGVjdG9yKSB7XG4gICAgICAgIHZhciBydWxlcyA9IHNoZWV0LmNzc1J1bGVzIHx8IHNoZWV0LnJ1bGVzIHx8IFtdO1xuICAgICAgICB2YXIgcmVzdWx0cyA9IFtdO1xuICAgICAgICAvLyBCcm93c2VycyByZXBvcnQgc2VsZWN0b3JzIGluIGxvd2VyY2FzZVxuICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBzZWxlY3RvclRleHQgPSBydWxlc1tpXS5zZWxlY3RvclRleHQ7XG4gICAgICAgICAgICAvLyBOb3RlIC0gY2VydGFpbiBydWxlcyAoZS5nLiBAcnVsZXMpIGRvbid0IGhhdmUgc2VsZWN0b3JUZXh0XG4gICAgICAgICAgICBpZiAoc2VsZWN0b3JUZXh0ICYmIChzZWxlY3RvclRleHQgPT0gc2VsZWN0b3IgfHwgc2VsZWN0b3JUZXh0ID09IHN3YXBBZGpTZWxBdHRyKHNlbGVjdG9yKSB8fCBzZWxlY3RvclRleHQgPT0gc3dhcFBzZXVkb0VsU3ludGF4KHNlbGVjdG9yKSkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBzaGVldDogc2hlZXQsXG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICBzdHlsZTogcnVsZXNbaV0uc3R5bGVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRSdWxlKHNoZWV0LCBzZWxlY3Rvcikge1xuICAgICAgICB2YXIgcnVsZXMgPSBzaGVldC5jc3NSdWxlcyB8fCBzaGVldC5ydWxlcyB8fCBbXTtcbiAgICAgICAgdmFyIGluZGV4ID0gcnVsZXMubGVuZ3RoO1xuICAgICAgICB2YXIgcHNldWRvRWxlbWVudFJ1bGUgPSBhZGRQc2V1ZG9FbGVtZW50UnVsZShzaGVldCwgc2VsZWN0b3IsIHJ1bGVzLCBpbmRleCk7XG5cbiAgICAgICAgaWYgKCFwc2V1ZG9FbGVtZW50UnVsZSkge1xuICAgICAgICAgICAgYWRkUnVsZVRvU2hlZXQoc2hlZXQsIHNlbGVjdG9yLCBpbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaGVldDogc2hlZXQsXG4gICAgICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgICAgICBzdHlsZTogcnVsZXNbaW5kZXhdLnN0eWxlXG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGFkZFJ1bGVUb1NoZWV0KHNoZWV0LCBzZWxlY3RvciwgaW5kZXgpIHtcbiAgICAgICAgaWYgKHNoZWV0Lmluc2VydFJ1bGUpIHtcbiAgICAgICAgICAgIHNoZWV0Lmluc2VydFJ1bGUoc2VsZWN0b3IgKyAnIHsgfScsIGluZGV4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNoZWV0LmFkZFJ1bGUoc2VsZWN0b3IsIG51bGwsIGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhhbmRsZXMgc2luZ2xlIGNvbG9uIHN5bnRheCBmb3Igb2xkZXIgYnJvd3NlcnMgYW5kIGJ1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD05NDk2NTFcbiAgICBmdW5jdGlvbiBhZGRQc2V1ZG9FbGVtZW50UnVsZShzaGVldCwgc2VsZWN0b3IsIHJ1bGVzLCBpbmRleCkge1xuICAgICAgICB2YXIgZG91YmxlQ29sb25TZWxlY3RvcjtcbiAgICAgICAgdmFyIHNpbmdsZUNvbG9uU2VsZWN0b3I7XG5cbiAgICAgICAgaWYgKGRvdWJsZUNvbG9uUHNldWRvRWxSZWdleC5leGVjKHNlbGVjdG9yKSkge1xuICAgICAgICAgICAgZG91YmxlQ29sb25TZWxlY3RvciA9IHNlbGVjdG9yO1xuICAgICAgICAgICAgc2luZ2xlQ29sb25TZWxlY3RvciA9IHRvU2luZ2xlQ29sb25Qc2V1ZG9FbGVtZW50cyhzZWxlY3Rvcik7XG4gICAgICAgIH0gZWxzZSBpZiAoc2luZ2xlQ29sb25Qc2V1ZG9FbFJlZ2V4LmV4ZWMoc2VsZWN0b3IpKSB7XG4gICAgICAgICAgICBkb3VibGVDb2xvblNlbGVjdG9yID0gdG9Eb3VibGVDb2xvblBzZXVkb0VsZW1lbnRzKHNlbGVjdG9yKTtcbiAgICAgICAgICAgIHNpbmdsZUNvbG9uU2VsZWN0b3IgPSBzZWxlY3RvcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gTm90IGRlYWxpbmcgd2l0aCBhIHBzZXVkbyBlbGVtZW50XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXNpbmdsZUNvbG9uRm9yUHNldWRvRWxlbWVudHMpIHtcbiAgICAgICAgICAgIC8vIEFzc3VtZSBtb2Rlcm4gYnJvd3NlciBhbmQgdGhlbiBjaGVjayBpZiBzdWNjZXNzZnVsXG4gICAgICAgICAgICBhZGRSdWxlVG9TaGVldChzaGVldCwgZG91YmxlQ29sb25TZWxlY3RvciwgaW5kZXgpO1xuICAgICAgICAgICAgaWYgKHJ1bGVzLmxlbmd0aCA8PSBpbmRleCkge1xuICAgICAgICAgICAgICAgIHNpbmdsZUNvbG9uRm9yUHNldWRvRWxlbWVudHMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzaW5nbGVDb2xvbkZvclBzZXVkb0VsZW1lbnRzKSB7XG4gICAgICAgICAgICBhZGRSdWxlVG9TaGVldChzaGVldCwgc2luZ2xlQ29sb25TZWxlY3RvciwgaW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9Eb3VibGVDb2xvblBzZXVkb0VsZW1lbnRzKHNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3Rvci5yZXBsYWNlKHNpbmdsZUNvbG9uUHNldWRvRWxSZWdleCwgZnVuY3Rpb24gKG1hdGNoLCBzdWJtYXRjaDEsIHN1Ym1hdGNoMiwgc3VibWF0Y2gzKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VibWF0Y2gxICsgJzo6JyArIHN1Ym1hdGNoMztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9TaW5nbGVDb2xvblBzZXVkb0VsZW1lbnRzKHNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3Rvci5yZXBsYWNlKGRvdWJsZUNvbG9uUHNldWRvRWxSZWdleCwgZnVuY3Rpb24obWF0Y2gsIHN1Ym1hdGNoMSwgc3VibWF0Y2gyKSB7XG4gICAgICAgICAgICByZXR1cm4gJzonICsgc3VibWF0Y2gyO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZVJ1bGUocnVsZSkge1xuICAgICAgICB2YXIgc2hlZXQgPSBydWxlLnNoZWV0O1xuICAgICAgICBpZiAoc2hlZXQuZGVsZXRlUnVsZSkge1xuICAgICAgICAgICAgc2hlZXQuZGVsZXRlUnVsZShydWxlLmluZGV4KTtcbiAgICAgICAgfSBlbHNlIGlmIChzaGVldC5yZW1vdmVSdWxlKSB7XG4gICAgICAgICAgICBzaGVldC5yZW1vdmVSdWxlKHJ1bGUuaW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0ZW5kKGRlc3QsIHNyYykge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gc3JjKSB7XG4gICAgICAgICAgICBpZiAoIXNyYy5oYXNPd25Qcm9wZXJ0eShrZXkpKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgZGVzdFtrZXldID0gc3JjW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlc3Q7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWdncmVnYXRlU3R5bGVzKHJ1bGVzKSB7XG4gICAgICAgIHZhciBhZ2dyZWdhdGUgPSB7fTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZXh0ZW5kKGFnZ3JlZ2F0ZSwgZGVjbGFyZWRQcm9wZXJ0aWVzKHJ1bGVzW2ldLnN0eWxlKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFnZ3JlZ2F0ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWNsYXJlZFByb3BlcnRpZXMoc3R5bGUpIHtcbiAgICAgICAgdmFyIGRlY2xhcmVkID0ge307XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGRlY2xhcmVkW3N0eWxlW2ldXSA9IHN0eWxlW3RvQ2FtZWxDYXNlKHN0eWxlW2ldKV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlY2xhcmVkO1xuICAgIH1cblxuICAgIC8vIElFOSBzdG9yZXMgcnVsZXMgd2l0aCBhdHRyaWJ1dGVzIChjbGFzc2VzIG9yIElEJ3MpIGFkamFjZW50IGluIHRoZSBvcHBvc2l0ZSBvcmRlciBhcyBkZWZpbmVkXG4gICAgLy8gY2F1c2luZyB0aGVtIHRvIG5vdCBiZSBmb3VuZCwgc28gdGhpcyBtZXRob2Qgc3dhcHMgWyN8Ll1zZWwxWyN8Ll1zZWwyIHRvIGJlY29tZSBbI3wuXXNlbDJbI3wuXXNlbDFcbiAgICBmdW5jdGlvbiBzd2FwQWRqU2VsQXR0cihzZWxlY3Rvcikge1xuICAgICAgICB2YXIgc3dhcCA9ICcnO1xuICAgICAgICB2YXIgbGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgIFxuICAgICAgICB3aGlsZSAoKG1hdGNoID0gYWRqU2VsQXR0clJlZ2V4LmV4ZWMoc2VsZWN0b3IpKSAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZiAobWF0Y2hbMF0gPT09ICcnKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgc3dhcCArPSBzZWxlY3Rvci5zdWJzdHJpbmcobGFzdEluZGV4LCBtYXRjaC5pbmRleCk7XG4gICAgICAgICAgICBzd2FwICs9IHNlbGVjdG9yLnN1YnN0cihtYXRjaC5pbmRleCArIG1hdGNoWzFdLmxlbmd0aCwgbWF0Y2hbMl0ubGVuZ3RoKTtcbiAgICAgICAgICAgIHN3YXAgKz0gc2VsZWN0b3Iuc3Vic3RyKG1hdGNoLmluZGV4LCBtYXRjaFsxXS5sZW5ndGgpO1xuICAgICAgICAgICAgbGFzdEluZGV4ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgc3dhcCArPSBzZWxlY3Rvci5zdWJzdHIobGFzdEluZGV4KTtcbiAgICAgICAgXG4gICAgICAgIHJldHVybiBzd2FwO1xuICAgIH07XG5cbiAgICAvLyBGRiBhbmQgb2xkZXIgYnJvd3NlcnMgc3RvcmUgcnVsZXMgd2l0aCBwc2V1ZG8gZWxlbWVudHMgdXNpbmcgc2luZ2xlLWNvbG9uIHN5bnRheFxuICAgIGZ1bmN0aW9uIHN3YXBQc2V1ZG9FbFN5bnRheChzZWxlY3Rvcikge1xuICAgICAgICBpZiAoZG91YmxlQ29sb25Qc2V1ZG9FbFJlZ2V4LmV4ZWMoc2VsZWN0b3IpKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9TaW5nbGVDb2xvblBzZXVkb0VsZW1lbnRzKHNlbGVjdG9yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VsZWN0b3I7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0U3R5bGVQcm9wZXJ0aWVzKHJ1bGUsIHByb3BlcnRpZXMpIHtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIHByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHByb3BlcnRpZXNba2V5XTtcbiAgICAgICAgICAgIHZhciBpbXBvcnRhbnRJbmRleCA9IHZhbHVlLmluZGV4T2YoJyAhaW1wb3J0YW50Jyk7XG5cbiAgICAgICAgICAgIC8vIE1vZGVybiBicm93c2VycyBzZWVtIHRvIGhhbmRsZSBvdmVycmlkZXMgZmluZSwgYnV0IElFOSBkb2Vzbid0XG4gICAgICAgICAgICBydWxlLnN0eWxlLnJlbW92ZVByb3BlcnR5KGtleSk7IFxuICAgICAgICAgICAgaWYgKGltcG9ydGFudEluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgIHJ1bGUuc3R5bGUuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZS5zdWJzdHIoMCwgaW1wb3J0YW50SW5kZXgpLCAnaW1wb3J0YW50Jyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJ1bGUuc3R5bGUuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0NhbWVsQ2FzZShzdHIpIHtcbiAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8tKFthLXpdKS9nLCBmdW5jdGlvbiAobWF0Y2gsIHN1Ym1hdGNoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VibWF0Y2gudG9VcHBlckNhc2UoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhbnNmb3JtQ2FtZWxDYXNlZFByb3BlcnR5TmFtZXMob2xkUHJvcHMpIHtcbiAgICAgICAgdmFyIG5ld1Byb3BzID0ge307XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBvbGRQcm9wcykge1xuICAgICAgICAgICAgbmV3UHJvcHNbdW5DYW1lbENhc2Uoa2V5KV0gPSBvbGRQcm9wc1trZXldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdQcm9wcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1bkNhbWVsQ2FzZShzdHIpIHtcbiAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oW0EtWl0pL2csIGZ1bmN0aW9uKG1hdGNoLCBzdWJtYXRjaCkge1xuICAgICAgICAgICAgcmV0dXJuICctJyArIHN1Ym1hdGNoLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBKc3MgPSBmdW5jdGlvbihkb2MpIHtcbiAgICAgICAgdGhpcy5kb2MgPSBkb2M7XG4gICAgICAgIHRoaXMuaGVhZCA9IHRoaXMuZG9jLmhlYWQgfHwgdGhpcy5kb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiAgICAgICAgdGhpcy5zaGVldHMgPSB0aGlzLmRvYy5zdHlsZVNoZWV0cyB8fCBbXTtcbiAgICB9O1xuXG4gICAgSnNzLnByb3RvdHlwZSA9IHtcbiAgICAgICAgLy8gUmV0dXJucyBKU1MgcnVsZXMgKHNlbGVjdG9yIGlzIG9wdGlvbmFsKVxuICAgICAgICBnZXQ6IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZGVmYXVsdFNoZWV0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGVjdG9yKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFnZ3JlZ2F0ZVN0eWxlcyhnZXRSdWxlcyh0aGlzLmRlZmF1bHRTaGVldCwgc2VsZWN0b3IpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBydWxlcyA9IGdldFNlbGVjdG9yc0FuZFJ1bGVzKHRoaXMuZGVmYXVsdFNoZWV0KTtcbiAgICAgICAgICAgIGZvciAoc2VsZWN0b3IgaW4gcnVsZXMpIHtcbiAgICAgICAgICAgICAgICBydWxlc1tzZWxlY3Rvcl0gPSBhZ2dyZWdhdGVTdHlsZXMocnVsZXNbc2VsZWN0b3JdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBydWxlcztcbiAgICAgICAgfSxcbiAgICAgICAgLy8gUmV0dXJucyBhbGwgcnVsZXMgKHNlbGVjdG9yIGlzIHJlcXVpcmVkKVxuICAgICAgICBnZXRBbGw6IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gICAgICAgICAgICB2YXIgcHJvcGVydGllcyA9IHt9O1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNoZWV0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGV4dGVuZChwcm9wZXJ0aWVzLCBhZ2dyZWdhdGVTdHlsZXMoZ2V0UnVsZXModGhpcy5zaGVldHNbaV0sIHNlbGVjdG9yKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHByb3BlcnRpZXM7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIEFkZHMgSlNTIHJ1bGVzIGZvciB0aGUgc2VsZWN0b3IgYmFzZWQgb24gdGhlIGdpdmVuIHByb3BlcnRpZXNcbiAgICAgICAgc2V0OiBmdW5jdGlvbihzZWxlY3RvciwgcHJvcGVydGllcykge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRlZmF1bHRTaGVldCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdFNoZWV0ID0gdGhpcy5fY3JlYXRlU2hlZXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByb3BlcnRpZXMgPSB0cmFuc2Zvcm1DYW1lbENhc2VkUHJvcGVydHlOYW1lcyhwcm9wZXJ0aWVzKTtcbiAgICAgICAgICAgIHZhciBydWxlcyA9IGdldFJ1bGVzKHRoaXMuZGVmYXVsdFNoZWV0LCBzZWxlY3Rvcik7XG4gICAgICAgICAgICBpZiAoIXJ1bGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJ1bGVzID0gW2FkZFJ1bGUodGhpcy5kZWZhdWx0U2hlZXQsIHNlbGVjdG9yKV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgc2V0U3R5bGVQcm9wZXJ0aWVzKHJ1bGVzW2ldLCBwcm9wZXJ0aWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgLy8gUmVtb3ZlcyBKU1MgcnVsZXMgKHNlbGVjdG9yIGlzIG9wdGlvbmFsKVxuICAgICAgICByZW1vdmU6IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZGVmYXVsdFNoZWV0KVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGlmICghc2VsZWN0b3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVTaGVldCh0aGlzLmRlZmF1bHRTaGVldCk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuZGVmYXVsdFNoZWV0O1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBydWxlcyA9IGdldFJ1bGVzKHRoaXMuZGVmYXVsdFNoZWV0LCBzZWxlY3Rvcik7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlUnVsZShydWxlc1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcnVsZXMubGVuZ3RoO1xuICAgICAgICB9LFxuICAgICAgICBfY3JlYXRlU2hlZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHN0eWxlTm9kZSA9IHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICAgICAgICBzdHlsZU5vZGUudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgICAgICAgICBzdHlsZU5vZGUucmVsID0gJ3N0eWxlc2hlZXQnO1xuICAgICAgICAgICAgdGhpcy5oZWFkLmFwcGVuZENoaWxkKHN0eWxlTm9kZSk7XG4gICAgICAgICAgICByZXR1cm4gc3R5bGVOb2RlLnNoZWV0O1xuICAgICAgICB9LFxuICAgICAgICBfcmVtb3ZlU2hlZXQ6IGZ1bmN0aW9uKHNoZWV0KSB7XG4gICAgICAgICAgICB2YXIgbm9kZSA9IHNoZWV0Lm93bmVyTm9kZTtcbiAgICAgICAgICAgIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgZXhwb3J0cyA9IG5ldyBKc3MoZG9jdW1lbnQpO1xuICAgIGV4cG9ydHMuZm9yRG9jdW1lbnQgPSBmdW5jdGlvbihkb2MpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBKc3MoZG9jKTtcbiAgICB9O1xuICAgIHJldHVybiBleHBvcnRzO1xufSkoKTtcblxudHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMgJiYgKG1vZHVsZS5leHBvcnRzID0ganNzKTsgLy8gQ29tbW9uSlMgc3VwcG9ydCIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LmFycmF5LmZvci1lYWNoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5BcnJheS5mb3JFYWNoO1xuIiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcuYXJyYXkuaW5jbHVkZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLkFycmF5LmluY2x1ZGVzO1xuIiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYubnVtYmVyLmlzLWludGVnZXInKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk51bWJlci5pc0ludGVnZXI7XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5zdHJpbmcuc3RhcnRzLXdpdGgnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLlN0cmluZy5zdGFydHNXaXRoO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uIScpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwiLy8gMjIuMS4zLjMxIEFycmF5LnByb3RvdHlwZVtAQHVuc2NvcGFibGVzXVxudmFyIFVOU0NPUEFCTEVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3Vuc2NvcGFibGVzJyk7XG52YXIgQXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcbmlmIChBcnJheVByb3RvW1VOU0NPUEFCTEVTXSA9PSB1bmRlZmluZWQpIHJlcXVpcmUoJy4vX2hpZGUnKShBcnJheVByb3RvLCBVTlNDT1BBQkxFUywge30pO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIEFycmF5UHJvdG9bVU5TQ09QQUJMRVNdW2tleV0gPSB0cnVlO1xufTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGFuIG9iamVjdCEnKTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsIi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuIiwiLy8gMCAtPiBBcnJheSNmb3JFYWNoXG4vLyAxIC0+IEFycmF5I21hcFxuLy8gMiAtPiBBcnJheSNmaWx0ZXJcbi8vIDMgLT4gQXJyYXkjc29tZVxuLy8gNCAtPiBBcnJheSNldmVyeVxuLy8gNSAtPiBBcnJheSNmaW5kXG4vLyA2IC0+IEFycmF5I2ZpbmRJbmRleFxudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGFzYyA9IHJlcXVpcmUoJy4vX2FycmF5LXNwZWNpZXMtY3JlYXRlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUWVBFLCAkY3JlYXRlKSB7XG4gIHZhciBJU19NQVAgPSBUWVBFID09IDE7XG4gIHZhciBJU19GSUxURVIgPSBUWVBFID09IDI7XG4gIHZhciBJU19TT01FID0gVFlQRSA9PSAzO1xuICB2YXIgSVNfRVZFUlkgPSBUWVBFID09IDQ7XG4gIHZhciBJU19GSU5EX0lOREVYID0gVFlQRSA9PSA2O1xuICB2YXIgTk9fSE9MRVMgPSBUWVBFID09IDUgfHwgSVNfRklORF9JTkRFWDtcbiAgdmFyIGNyZWF0ZSA9ICRjcmVhdGUgfHwgYXNjO1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBjYWxsYmFja2ZuLCB0aGF0KSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCgkdGhpcyk7XG4gICAgdmFyIHNlbGYgPSBJT2JqZWN0KE8pO1xuICAgIHZhciBmID0gY3R4KGNhbGxiYWNrZm4sIHRoYXQsIDMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChzZWxmLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgcmVzdWx0ID0gSVNfTUFQID8gY3JlYXRlKCR0aGlzLCBsZW5ndGgpIDogSVNfRklMVEVSID8gY3JlYXRlKCR0aGlzLCAwKSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgdmFsLCByZXM7XG4gICAgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChOT19IT0xFUyB8fCBpbmRleCBpbiBzZWxmKSB7XG4gICAgICB2YWwgPSBzZWxmW2luZGV4XTtcbiAgICAgIHJlcyA9IGYodmFsLCBpbmRleCwgTyk7XG4gICAgICBpZiAoVFlQRSkge1xuICAgICAgICBpZiAoSVNfTUFQKSByZXN1bHRbaW5kZXhdID0gcmVzOyAgIC8vIG1hcFxuICAgICAgICBlbHNlIGlmIChyZXMpIHN3aXRjaCAoVFlQRSkge1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuIHRydWU7ICAgICAgICAgICAgIC8vIHNvbWVcbiAgICAgICAgICBjYXNlIDU6IHJldHVybiB2YWw7ICAgICAgICAgICAgICAvLyBmaW5kXG4gICAgICAgICAgY2FzZSA2OiByZXR1cm4gaW5kZXg7ICAgICAgICAgICAgLy8gZmluZEluZGV4XG4gICAgICAgICAgY2FzZSAyOiByZXN1bHQucHVzaCh2YWwpOyAgICAgICAgLy8gZmlsdGVyXG4gICAgICAgIH0gZWxzZSBpZiAoSVNfRVZFUlkpIHJldHVybiBmYWxzZTsgLy8gZXZlcnlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIElTX0ZJTkRfSU5ERVggPyAtMSA6IElTX1NPTUUgfHwgSVNfRVZFUlkgPyBJU19FVkVSWSA6IHJlc3VsdDtcbiAgfTtcbn07XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9faXMtYXJyYXknKTtcbnZhciBTUEVDSUVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3JpZ2luYWwpIHtcbiAgdmFyIEM7XG4gIGlmIChpc0FycmF5KG9yaWdpbmFsKSkge1xuICAgIEMgPSBvcmlnaW5hbC5jb25zdHJ1Y3RvcjtcbiAgICAvLyBjcm9zcy1yZWFsbSBmYWxsYmFja1xuICAgIGlmICh0eXBlb2YgQyA9PSAnZnVuY3Rpb24nICYmIChDID09PSBBcnJheSB8fCBpc0FycmF5KEMucHJvdG90eXBlKSkpIEMgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGlzT2JqZWN0KEMpKSB7XG4gICAgICBDID0gQ1tTUEVDSUVTXTtcbiAgICAgIGlmIChDID09PSBudWxsKSBDID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSByZXR1cm4gQyA9PT0gdW5kZWZpbmVkID8gQXJyYXkgOiBDO1xufTtcbiIsIi8vIDkuNC4yLjMgQXJyYXlTcGVjaWVzQ3JlYXRlKG9yaWdpbmFsQXJyYXksIGxlbmd0aClcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9yaWdpbmFsLCBsZW5ndGgpIHtcbiAgcmV0dXJuIG5ldyAoc3BlY2llc0NvbnN0cnVjdG9yKG9yaWdpbmFsKSkobGVuZ3RoKTtcbn07XG4iLCJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoaXQpLnNsaWNlKDgsIC0xKTtcbn07XG4iLCJ2YXIgY29yZSA9IG1vZHVsZS5leHBvcnRzID0geyB2ZXJzaW9uOiAnMi42LjknIH07XG5pZiAodHlwZW9mIF9fZSA9PSAnbnVtYmVyJykgX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIiwiLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQsIGxlbmd0aCkge1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwiLy8gNy4yLjEgUmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudClcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsIi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIGlzID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGlzID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIHRhcmdldCA9IElTX0dMT0JBTCA/IGdsb2JhbCA6IElTX1NUQVRJQyA/IGdsb2JhbFtuYW1lXSB8fCAoZ2xvYmFsW25hbWVdID0ge30pIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXTtcbiAgdmFyIGV4cG9ydHMgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KTtcbiAgdmFyIGV4cFByb3RvID0gZXhwb3J0c1tQUk9UT1RZUEVdIHx8IChleHBvcnRzW1BST1RPVFlQRV0gPSB7fSk7XG4gIHZhciBrZXksIG93biwgb3V0LCBleHA7XG4gIGlmIChJU19HTE9CQUwpIHNvdXJjZSA9IG5hbWU7XG4gIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuICAgIG93biA9ICFJU19GT1JDRUQgJiYgdGFyZ2V0ICYmIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcbiAgICBvdXQgPSAob3duID8gdGFyZ2V0IDogc291cmNlKVtrZXldO1xuICAgIC8vIGJpbmQgdGltZXJzIHRvIGdsb2JhbCBmb3IgY2FsbCBmcm9tIGV4cG9ydCBjb250ZXh0XG4gICAgZXhwID0gSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXh0ZW5kIGdsb2JhbFxuICAgIGlmICh0YXJnZXQpIHJlZGVmaW5lKHRhcmdldCwga2V5LCBvdXQsIHR5cGUgJiAkZXhwb3J0LlUpO1xuICAgIC8vIGV4cG9ydFxuICAgIGlmIChleHBvcnRzW2tleV0gIT0gb3V0KSBoaWRlKGV4cG9ydHMsIGtleSwgZXhwKTtcbiAgICBpZiAoSVNfUFJPVE8gJiYgZXhwUHJvdG9ba2V5XSAhPSBvdXQpIGV4cFByb3RvW2tleV0gPSBvdXQ7XG4gIH1cbn07XG5nbG9iYWwuY29yZSA9IGNvcmU7XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG4iLCJ2YXIgTUFUQ0ggPSByZXF1aXJlKCcuL193a3MnKSgnbWF0Y2gnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSkge1xuICB2YXIgcmUgPSAvLi87XG4gIHRyeSB7XG4gICAgJy8uLydbS0VZXShyZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0cnkge1xuICAgICAgcmVbTUFUQ0hdID0gZmFsc2U7XG4gICAgICByZXR1cm4gIScvLi8nW0tFWV0ocmUpO1xuICAgIH0gY2F0Y2ggKGYpIHsgLyogZW1wdHkgKi8gfVxuICB9IHJldHVybiB0cnVlO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ25hdGl2ZS1mdW5jdGlvbi10by1zdHJpbmcnLCBGdW5jdGlvbi50b1N0cmluZyk7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxudmFyIGdsb2JhbCA9IG1vZHVsZS5leHBvcnRzID0gdHlwZW9mIHdpbmRvdyAhPSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuTWF0aCA9PSBNYXRoXG4gID8gd2luZG93IDogdHlwZW9mIHNlbGYgIT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5NYXRoID09IE1hdGggPyBzZWxmXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICA6IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5pZiAodHlwZW9mIF9fZyA9PSAnbnVtYmVyJykgX19nID0gZ2xvYmFsOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4iLCJ2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoaXQsIGtleSk7XG59O1xuIiwidmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIGRQLmYob2JqZWN0LCBrZXksIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdkaXYnKSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcbiIsIi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApID8gT2JqZWN0IDogZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjb2YoaXQpID09ICdTdHJpbmcnID8gaXQuc3BsaXQoJycpIDogT2JqZWN0KGl0KTtcbn07XG4iLCIvLyA3LjIuMiBJc0FycmF5KGFyZ3VtZW50KVxudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xubW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIGlzQXJyYXkoYXJnKSB7XG4gIHJldHVybiBjb2YoYXJnKSA9PSAnQXJyYXknO1xufTtcbiIsIi8vIDIwLjEuMi4zIE51bWJlci5pc0ludGVnZXIobnVtYmVyKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0ludGVnZXIoaXQpIHtcbiAgcmV0dXJuICFpc09iamVjdChpdCkgJiYgaXNGaW5pdGUoaXQpICYmIGZsb29yKGl0KSA9PT0gaXQ7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG4iLCIvLyA3LjIuOCBJc1JlZ0V4cChhcmd1bWVudClcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xudmFyIE1BVENIID0gcmVxdWlyZSgnLi9fd2tzJykoJ21hdGNoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgaXNSZWdFeHA7XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgKChpc1JlZ0V4cCA9IGl0W01BVENIXSkgIT09IHVuZGVmaW5lZCA/ICEhaXNSZWdFeHAgOiBjb2YoaXQpID09ICdSZWdFeHAnKTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZhbHNlO1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBTUkMgPSByZXF1aXJlKCcuL191aWQnKSgnc3JjJyk7XG52YXIgJHRvU3RyaW5nID0gcmVxdWlyZSgnLi9fZnVuY3Rpb24tdG8tc3RyaW5nJyk7XG52YXIgVE9fU1RSSU5HID0gJ3RvU3RyaW5nJztcbnZhciBUUEwgPSAoJycgKyAkdG9TdHJpbmcpLnNwbGl0KFRPX1NUUklORyk7XG5cbnJlcXVpcmUoJy4vX2NvcmUnKS5pbnNwZWN0U291cmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiAkdG9TdHJpbmcuY2FsbChpdCk7XG59O1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywga2V5LCB2YWwsIHNhZmUpIHtcbiAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2YgdmFsID09ICdmdW5jdGlvbic7XG4gIGlmIChpc0Z1bmN0aW9uKSBoYXModmFsLCAnbmFtZScpIHx8IGhpZGUodmFsLCAnbmFtZScsIGtleSk7XG4gIGlmIChPW2tleV0gPT09IHZhbCkgcmV0dXJuO1xuICBpZiAoaXNGdW5jdGlvbikgaGFzKHZhbCwgU1JDKSB8fCBoaWRlKHZhbCwgU1JDLCBPW2tleV0gPyAnJyArIE9ba2V5XSA6IFRQTC5qb2luKFN0cmluZyhrZXkpKSk7XG4gIGlmIChPID09PSBnbG9iYWwpIHtcbiAgICBPW2tleV0gPSB2YWw7XG4gIH0gZWxzZSBpZiAoIXNhZmUpIHtcbiAgICBkZWxldGUgT1trZXldO1xuICAgIGhpZGUoTywga2V5LCB2YWwpO1xuICB9IGVsc2UgaWYgKE9ba2V5XSkge1xuICAgIE9ba2V5XSA9IHZhbDtcbiAgfSBlbHNlIHtcbiAgICBoaWRlKE8sIGtleSwgdmFsKTtcbiAgfVxuLy8gYWRkIGZha2UgRnVuY3Rpb24jdG9TdHJpbmcgZm9yIGNvcnJlY3Qgd29yayB3cmFwcGVkIG1ldGhvZHMgLyBjb25zdHJ1Y3RvcnMgd2l0aCBtZXRob2RzIGxpa2UgTG9EYXNoIGlzTmF0aXZlXG59KShGdW5jdGlvbi5wcm90b3R5cGUsIFRPX1NUUklORywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiB0eXBlb2YgdGhpcyA9PSAnZnVuY3Rpb24nICYmIHRoaXNbU1JDXSB8fCAkdG9TdHJpbmcuY2FsbCh0aGlzKTtcbn0pO1xuIiwidmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiBjb3JlLnZlcnNpb24sXG4gIG1vZGU6IHJlcXVpcmUoJy4vX2xpYnJhcnknKSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE5IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJ1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChtZXRob2QsIGFyZykge1xuICByZXR1cm4gISFtZXRob2QgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNhbGxcbiAgICBhcmcgPyBtZXRob2QuY2FsbChudWxsLCBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sIDEpIDogbWV0aG9kLmNhbGwobnVsbCk7XG4gIH0pO1xufTtcbiIsIi8vIGhlbHBlciBmb3IgU3RyaW5nI3tzdGFydHNXaXRoLCBlbmRzV2l0aCwgaW5jbHVkZXN9XG52YXIgaXNSZWdFeHAgPSByZXF1aXJlKCcuL19pcy1yZWdleHAnKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0aGF0LCBzZWFyY2hTdHJpbmcsIE5BTUUpIHtcbiAgaWYgKGlzUmVnRXhwKHNlYXJjaFN0cmluZykpIHRocm93IFR5cGVFcnJvcignU3RyaW5nIycgKyBOQU1FICsgXCIgZG9lc24ndCBhY2NlcHQgcmVnZXghXCIpO1xuICByZXR1cm4gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xufTtcbiIsInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIGluZGV4ID0gdG9JbnRlZ2VyKGluZGV4KTtcbiAgcmV0dXJuIGluZGV4IDwgMCA/IG1heChpbmRleCArIGxlbmd0aCwgMCkgOiBtaW4oaW5kZXgsIGxlbmd0aCk7XG59O1xuIiwiLy8gNy4xLjQgVG9JbnRlZ2VyXG52YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXNOYU4oaXQgPSAraXQpID8gMCA6IChpdCA+IDAgPyBmbG9vciA6IGNlaWwpKGl0KTtcbn07XG4iLCIvLyB0byBpbmRleGVkIG9iamVjdCwgdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSU9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuIiwiLy8gNy4xLjE1IFRvTGVuZ3RoXG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG4iLCIvLyA3LjEuMTMgVG9PYmplY3QoYXJndW1lbnQpXG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBPYmplY3QoZGVmaW5lZChpdCkpO1xufTtcbiIsIi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gaXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpdC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcbiIsInZhciBpZCA9IDA7XG52YXIgcHggPSBNYXRoLnJhbmRvbSgpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59O1xuIiwidmFyIHN0b3JlID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ3drcycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLlN5bWJvbDtcbnZhciBVU0VfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PSAnZnVuY3Rpb24nO1xuXG52YXIgJGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPVxuICAgIFVTRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdIHx8IChVU0VfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuXG4kZXhwb3J0cy5zdG9yZSA9IHN0b3JlO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkZm9yRWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSgwKTtcbnZhciBTVFJJQ1QgPSByZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoW10uZm9yRWFjaCwgdHJ1ZSk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIVNUUklDVCwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMTAgLyAxNS40LjQuMTggQXJyYXkucHJvdG90eXBlLmZvckVhY2goY2FsbGJhY2tmbiBbLCB0aGlzQXJnXSlcbiAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkZm9yRWFjaCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHNbMV0pO1xuICB9XG59KTtcbiIsIi8vIDIwLjEuMi4zIE51bWJlci5pc0ludGVnZXIobnVtYmVyKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdOdW1iZXInLCB7IGlzSW50ZWdlcjogcmVxdWlyZSgnLi9faXMtaW50ZWdlcicpIH0pO1xuIiwiLy8gMjEuMS4zLjE4IFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcgWywgcG9zaXRpb24gXSlcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjb250ZXh0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWNvbnRleHQnKTtcbnZhciBTVEFSVFNfV0lUSCA9ICdzdGFydHNXaXRoJztcbnZhciAkc3RhcnRzV2l0aCA9ICcnW1NUQVJUU19XSVRIXTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscy1pcy1yZWdleHAnKShTVEFSVFNfV0lUSCksICdTdHJpbmcnLCB7XG4gIHN0YXJ0c1dpdGg6IGZ1bmN0aW9uIHN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nIC8qICwgcG9zaXRpb24gPSAwICovKSB7XG4gICAgdmFyIHRoYXQgPSBjb250ZXh0KHRoaXMsIHNlYXJjaFN0cmluZywgU1RBUlRTX1dJVEgpO1xuICAgIHZhciBpbmRleCA9IHRvTGVuZ3RoKE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCB0aGF0Lmxlbmd0aCkpO1xuICAgIHZhciBzZWFyY2ggPSBTdHJpbmcoc2VhcmNoU3RyaW5nKTtcbiAgICByZXR1cm4gJHN0YXJ0c1dpdGhcbiAgICAgID8gJHN0YXJ0c1dpdGguY2FsbCh0aGF0LCBzZWFyY2gsIGluZGV4KVxuICAgICAgOiB0aGF0LnNsaWNlKGluZGV4LCBpbmRleCArIHNlYXJjaC5sZW5ndGgpID09PSBzZWFyY2g7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRpbmNsdWRlcyA9IHJlcXVpcmUoJy4vX2FycmF5LWluY2x1ZGVzJykodHJ1ZSk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnQXJyYXknLCB7XG4gIGluY2x1ZGVzOiBmdW5jdGlvbiBpbmNsdWRlcyhlbCAvKiAsIGZyb21JbmRleCA9IDAgKi8pIHtcbiAgICByZXR1cm4gJGluY2x1ZGVzKHRoaXMsIGVsLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG5yZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKSgnaW5jbHVkZXMnKTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8qKlxuICogW1JlY3Vyc2l2ZWx5IHBhcnNlcyBhIHN0cmluZ2lmaWVkIEpTT05dXG4gKiBAcGFyYW0gIHtbdHlwZV19IGpzb25TdHJpbmcgW3N0cmluZ2lmaWVkIGpzb24gdG8gcGFyc2VdXG4gKiBAcmV0dXJuIHtbdHlwZV19ICAgICAgICAgICAgW25vcm1hbGl6ZWQgSmF2YXNjcmlwdCBvYmplY3RdXG4gKi9cbmZ1bmN0aW9uIGRlZXBQYXJzZUpzb24oanNvblN0cmluZykge1xuICAvLyBpZiBub3Qgc3RyaW5naWZpZWQganNvbiByYXRoZXIgYSBzaW1wbGUgc3RyaW5nIHZhbHVlIHRoZW4gSlNPTi5wYXJzZSB3aWxsIHRocm93IGVycm9yXG4gIC8vIG90aGVyd2lzZSBjb250aW51ZSByZWN1cnNpb25cbiAgaWYgKHR5cGVvZiBqc29uU3RyaW5nID09PSAnc3RyaW5nJykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZGVlcFBhcnNlSnNvbihKU09OLnBhcnNlKGpzb25TdHJpbmcpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiBqc29uU3RyaW5nO1xuICAgIH1cbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGpzb25TdHJpbmcpKSB7XG4gICAgLy8gaWYgYW4gYXJyYXkgaXMgcmVjZWl2ZWQsIG1hcCBvdmVyIHRoZSBhcnJheSBhbmQgZGVlcFBhcnNlIGVhY2ggdmFsdWVcbiAgICByZXR1cm4ganNvblN0cmluZy5tYXAodmFsID0+IGRlZXBQYXJzZUpzb24odmFsKSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGpzb25TdHJpbmcgPT09ICdvYmplY3QnICYmIGpzb25TdHJpbmcgIT09IG51bGwpIHtcbiAgICAvLyBpZiBhbiBvYmplY3QgaXMgcmVjZWl2ZWQgdGhlbiBkZWVwUGFyc2UgZWFjaCBlbGVtZW50IGluIHRoZSBvYmplY3RcbiAgICAvLyB0eXBlb2YgbnVsbCByZXR1cm5zICdvYmplY3QnIHRvbywgc28gd2UgaGF2ZSB0byBlbGltaW5hdGUgdGhhdFxuICAgIHJldHVybiBPYmplY3Qua2V5cyhqc29uU3RyaW5nKS5yZWR1Y2UoKG9iaiwga2V5KSA9PiB7XG4gICAgICBvYmpba2V5XSA9IGRlZXBQYXJzZUpzb24oanNvblN0cmluZ1trZXldKTtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSwge30pO1xuICB9IGVsc2Uge1xuICAgIC8vIG90aGVyd2lzZSByZXR1cm4gd2hhdGV2ZXIgd2FzIHJlY2VpdmVkXG4gICAgcmV0dXJuIGpzb25TdHJpbmc7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IGRlZXBQYXJzZUpzb24gfTtcbiIsImlmKCFnbG9iYWxbXCJCQmpcIl0pIGdsb2JhbFtcIkJCalwiXSA9IHt9O1xubW9kdWxlLmV4cG9ydHMgPSBnbG9iYWxbXCJCQmpcIl1bXCJNYXNrc1wiXSA9IHJlcXVpcmUoXCItIUQ6XFxcXEdpdGh1YlxcXFxCQmpHcmlkRXhXaWRnZXRcXFxcY2xpZW50XFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz9yZWYtLTQhLlxcXFxiYmotbWFza3MuanNcIik7IiwiaWYoIWdsb2JhbFtcIkJhc2lzXCJdKSBnbG9iYWxbXCJCYXNpc1wiXSA9IHt9O1xubW9kdWxlLmV4cG9ydHMgPSBnbG9iYWxbXCJCYXNpc1wiXVtcIkFnR3JpZENvbXBvbmVudHNcIl0gPSByZXF1aXJlKFwiLSFEOlxcXFxHaXRodWJcXFxcQkJqR3JpZEV4V2lkZ2V0XFxcXGNsaWVudFxcXFxub2RlX21vZHVsZXNcXFxcYmFiZWwtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/cmVmLS00IS5cXFxcYmFzaXMtYWdncmlkLWNvbXBvbmVudHMuanNcIik7IiwiaWYoIWdsb2JhbFtcIkJhc2lzXCJdKSBnbG9iYWxbXCJCYXNpc1wiXSA9IHt9O1xubW9kdWxlLmV4cG9ydHMgPSBnbG9iYWxbXCJCYXNpc1wiXVtcIklucHV0TWFza2luZ1wiXSA9IHJlcXVpcmUoXCItIUQ6XFxcXEdpdGh1YlxcXFxCQmpHcmlkRXhXaWRnZXRcXFxcY2xpZW50XFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz9yZWYtLTQhLlxcXFxiYXNpcy1pbnB1dC1tYXNraW5nLmpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gZ2xvYmFsW1wiZmxhdHBpY2tyXCJdID0gcmVxdWlyZShcIi0hRDpcXFxcR2l0aHViXFxcXEJCakdyaWRFeFdpZGdldFxcXFxjbGllbnRcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3JlZi0tNCEuXFxcXGZsYXRwaWNrci5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbFtcImpzc1wiXSA9IHJlcXVpcmUoXCItIUQ6XFxcXEdpdGh1YlxcXFxCQmpHcmlkRXhXaWRnZXRcXFxcY2xpZW50XFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz9yZWYtLTQhLlxcXFxqc3MuanNcIik7IiwiXG52YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanMhLi9mbGF0cGlja3IuY3NzXCIpO1xuXG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcblxudmFyIHRyYW5zZm9ybTtcbnZhciBpbnNlcnRJbnRvO1xuXG5cblxudmFyIG9wdGlvbnMgPSB7XCJobXJcIjp0cnVlfVxuXG5vcHRpb25zLnRyYW5zZm9ybSA9IHRyYW5zZm9ybVxub3B0aW9ucy5pbnNlcnRJbnRvID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gd2luZG93LnBhcmVudC5kb2N1bWVudC5oZWFkIH07XG5cbnZhciB1cGRhdGUgPSByZXF1aXJlKFwiIS4uLy4uL3N0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzLmpzXCIpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5pZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2FscztcblxuaWYobW9kdWxlLmhvdCkge1xuXHRtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4uLy4uL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuL2ZsYXRwaWNrci5jc3NcIiwgZnVuY3Rpb24oKSB7XG5cdFx0dmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanMhLi4vLi4vcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4vZmxhdHBpY2tyLmNzc1wiKTtcblxuXHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXG5cdFx0dmFyIGxvY2FscyA9IChmdW5jdGlvbihhLCBiKSB7XG5cdFx0XHR2YXIga2V5LCBpZHggPSAwO1xuXG5cdFx0XHRmb3Ioa2V5IGluIGEpIHtcblx0XHRcdFx0aWYoIWIgfHwgYVtrZXldICE9PSBiW2tleV0pIHJldHVybiBmYWxzZTtcblx0XHRcdFx0aWR4Kys7XG5cdFx0XHR9XG5cblx0XHRcdGZvcihrZXkgaW4gYikgaWR4LS07XG5cblx0XHRcdHJldHVybiBpZHggPT09IDA7XG5cdFx0fShjb250ZW50LmxvY2FscywgbmV3Q29udGVudC5sb2NhbHMpKTtcblxuXHRcdGlmKCFsb2NhbHMpIHRocm93IG5ldyBFcnJvcignQWJvcnRpbmcgQ1NTIEhNUiBkdWUgdG8gY2hhbmdlZCBjc3MtbW9kdWxlcyBsb2NhbHMuJyk7XG5cblx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdH0pO1xuXG5cdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufSIsImltcG9ydCByb290IGZyb20gJy4vX3Jvb3QuanMnO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBTeW1ib2wgPSByb290LlN5bWJvbDtcblxuZXhwb3J0IGRlZmF1bHQgU3ltYm9sO1xuIiwiLyoqXG4gKiBBIGZhc3RlciBhbHRlcm5hdGl2ZSB0byBgRnVuY3Rpb24jYXBwbHlgLCB0aGlzIGZ1bmN0aW9uIGludm9rZXMgYGZ1bmNgXG4gKiB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiBgdGhpc0FyZ2AgYW5kIHRoZSBhcmd1bWVudHMgb2YgYGFyZ3NgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGBmdW5jYC5cbiAqL1xuZnVuY3Rpb24gYXBwbHkoZnVuYywgdGhpc0FyZywgYXJncykge1xuICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcpO1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdKTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICB9XG4gIHJldHVybiBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhcHBseTtcbiIsImltcG9ydCBiYXNlVGltZXMgZnJvbSAnLi9fYmFzZVRpbWVzLmpzJztcbmltcG9ydCBpc0FyZ3VtZW50cyBmcm9tICcuL2lzQXJndW1lbnRzLmpzJztcbmltcG9ydCBpc0FycmF5IGZyb20gJy4vaXNBcnJheS5qcyc7XG5pbXBvcnQgaXNCdWZmZXIgZnJvbSAnLi9pc0J1ZmZlci5qcyc7XG5pbXBvcnQgaXNJbmRleCBmcm9tICcuL19pc0luZGV4LmpzJztcbmltcG9ydCBpc1R5cGVkQXJyYXkgZnJvbSAnLi9pc1R5cGVkQXJyYXkuanMnO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgdGhlIGFycmF5LWxpa2UgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSksXG4gICAgICBpc0FyZyA9ICFpc0FyciAmJiBpc0FyZ3VtZW50cyh2YWx1ZSksXG4gICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgIGlzVHlwZSA9ICFpc0FyciAmJiAhaXNBcmcgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkodmFsdWUpLFxuICAgICAgc2tpcEluZGV4ZXMgPSBpc0FyciB8fCBpc0FyZyB8fCBpc0J1ZmYgfHwgaXNUeXBlLFxuICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICEoc2tpcEluZGV4ZXMgJiYgKFxuICAgICAgICAgICAvLyBTYWZhcmkgOSBoYXMgZW51bWVyYWJsZSBgYXJndW1lbnRzLmxlbmd0aGAgaW4gc3RyaWN0IG1vZGUuXG4gICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAvLyBOb2RlLmpzIDAuMTAgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gYnVmZmVycy5cbiAgICAgICAgICAgKGlzQnVmZiAmJiAoa2V5ID09ICdvZmZzZXQnIHx8IGtleSA9PSAncGFyZW50JykpIHx8XG4gICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgKGlzVHlwZSAmJiAoa2V5ID09ICdidWZmZXInIHx8IGtleSA9PSAnYnl0ZUxlbmd0aCcgfHwga2V5ID09ICdieXRlT2Zmc2V0JykpIHx8XG4gICAgICAgICAgIC8vIFNraXAgaW5kZXggcHJvcGVydGllcy5cbiAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFycmF5TGlrZUtleXM7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tYXBgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlNYXAoYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBhcnJheU1hcDtcbiIsImltcG9ydCBiYXNlQXNzaWduVmFsdWUgZnJvbSAnLi9fYmFzZUFzc2lnblZhbHVlLmpzJztcbmltcG9ydCBlcSBmcm9tICcuL2VxLmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBBc3NpZ25zIGB2YWx1ZWAgdG8gYGtleWAgb2YgYG9iamVjdGAgaWYgdGhlIGV4aXN0aW5nIHZhbHVlIGlzIG5vdCBlcXVpdmFsZW50XG4gKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gKi9cbmZ1bmN0aW9uIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XTtcbiAgaWYgKCEoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYgZXEob2JqVmFsdWUsIHZhbHVlKSkgfHxcbiAgICAgICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpKSB7XG4gICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgYXNzaWduVmFsdWU7XG4iLCJpbXBvcnQgZGVmaW5lUHJvcGVydHkgZnJvbSAnLi9fZGVmaW5lUHJvcGVydHkuanMnO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBhc3NpZ25WYWx1ZWAgYW5kIGBhc3NpZ25NZXJnZVZhbHVlYCB3aXRob3V0XG4gKiB2YWx1ZSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5ID09ICdfX3Byb3RvX18nICYmIGRlZmluZVByb3BlcnR5KSB7XG4gICAgZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIHtcbiAgICAgICdjb25maWd1cmFibGUnOiB0cnVlLFxuICAgICAgJ2VudW1lcmFibGUnOiB0cnVlLFxuICAgICAgJ3ZhbHVlJzogdmFsdWUsXG4gICAgICAnd3JpdGFibGUnOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlQXNzaWduVmFsdWU7XG4iLCJpbXBvcnQgU3ltYm9sIGZyb20gJy4vX1N5bWJvbC5qcyc7XG5pbXBvcnQgZ2V0UmF3VGFnIGZyb20gJy4vX2dldFJhd1RhZy5qcyc7XG5pbXBvcnQgb2JqZWN0VG9TdHJpbmcgZnJvbSAnLi9fb2JqZWN0VG9TdHJpbmcuanMnO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbnVsbFRhZyA9ICdbb2JqZWN0IE51bGxdJyxcbiAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBVbmRlZmluZWRdJztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0aG91dCBmYWxsYmFja3MgZm9yIGJ1Z2d5IGVudmlyb25tZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0VGFnKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWRUYWcgOiBudWxsVGFnO1xuICB9XG4gIHJldHVybiAoc3ltVG9TdHJpbmdUYWcgJiYgc3ltVG9TdHJpbmdUYWcgaW4gT2JqZWN0KHZhbHVlKSlcbiAgICA/IGdldFJhd1RhZyh2YWx1ZSlcbiAgICA6IG9iamVjdFRvU3RyaW5nKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUdldFRhZztcbiIsImltcG9ydCBiYXNlR2V0VGFnIGZyb20gJy4vX2Jhc2VHZXRUYWcuanMnO1xuaW1wb3J0IGlzT2JqZWN0TGlrZSBmcm9tICcuL2lzT2JqZWN0TGlrZS5qcyc7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcmd1bWVudHNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqL1xuZnVuY3Rpb24gYmFzZUlzQXJndW1lbnRzKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFyZ3NUYWc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VJc0FyZ3VtZW50cztcbiIsImltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJy4vaXNGdW5jdGlvbi5qcyc7XG5pbXBvcnQgaXNNYXNrZWQgZnJvbSAnLi9faXNNYXNrZWQuanMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QuanMnO1xuaW1wb3J0IHRvU291cmNlIGZyb20gJy4vX3RvU291cmNlLmpzJztcblxuLyoqXG4gKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAqL1xudmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xudmFyIHJlSXNIb3N0Q3RvciA9IC9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC87XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xudmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4pO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmF0aXZlYCB3aXRob3V0IGJhZCBzaGltIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hdGl2ZSh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCBpc01hc2tlZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUlzTmF0aXZlO1xuIiwiaW1wb3J0IGJhc2VHZXRUYWcgZnJvbSAnLi9fYmFzZUdldFRhZy5qcyc7XG5pbXBvcnQgaXNMZW5ndGggZnJvbSAnLi9pc0xlbmd0aC5qcyc7XG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gJy4vaXNPYmplY3RMaWtlLmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xudmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG50eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbnR5cGVkQXJyYXlUYWdzW2FyZ3NUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlUYWddID1cbnR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddID1cbnR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID1cbnR5cGVkQXJyYXlUYWdzW2Vycm9yVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Z1bmNUYWddID1cbnR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPSB0eXBlZEFycmF5VGFnc1tudW1iZXJUYWddID1cbnR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID1cbnR5cGVkQXJyYXlUYWdzW3NldFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzdHJpbmdUYWddID1cbnR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiZcbiAgICBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3NbYmFzZUdldFRhZyh2YWx1ZSldO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlSXNUeXBlZEFycmF5O1xuIiwiaW1wb3J0IGlzUHJvdG90eXBlIGZyb20gJy4vX2lzUHJvdG90eXBlLmpzJztcbmltcG9ydCBuYXRpdmVLZXlzIGZyb20gJy4vX25hdGl2ZUtleXMuanMnO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNgIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXMob2JqZWN0KSB7XG4gIGlmICghaXNQcm90b3R5cGUob2JqZWN0KSkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzKG9iamVjdCk7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYga2V5ICE9ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VLZXlzO1xuIiwiaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QuanMnO1xuaW1wb3J0IGlzUHJvdG90eXBlIGZyb20gJy4vX2lzUHJvdG90eXBlLmpzJztcbmltcG9ydCBuYXRpdmVLZXlzSW4gZnJvbSAnLi9fbmF0aXZlS2V5c0luLmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzSW5gIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXNJbihvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUtleXNJbihvYmplY3QpO1xuICB9XG4gIHZhciBpc1Byb3RvID0gaXNQcm90b3R5cGUob2JqZWN0KSxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICBpZiAoIShrZXkgPT0gJ2NvbnN0cnVjdG9yJyAmJiAoaXNQcm90byB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUtleXNJbjtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlPZmAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVByb3BlcnR5T2Yob2JqZWN0KSB7XG4gIHJldHVybiBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZVByb3BlcnR5T2Y7XG4iLCJpbXBvcnQgaWRlbnRpdHkgZnJvbSAnLi9pZGVudGl0eS5qcyc7XG5pbXBvcnQgb3ZlclJlc3QgZnJvbSAnLi9fb3ZlclJlc3QuanMnO1xuaW1wb3J0IHNldFRvU3RyaW5nIGZyb20gJy4vX3NldFRvU3RyaW5nLmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZXN0YCB3aGljaCBkb2Vzbid0IHZhbGlkYXRlIG9yIGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVJlc3QoZnVuYywgc3RhcnQpIHtcbiAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCBpZGVudGl0eSksIGZ1bmMgKyAnJyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VSZXN0O1xuIiwiaW1wb3J0IGNvbnN0YW50IGZyb20gJy4vY29uc3RhbnQuanMnO1xuaW1wb3J0IGRlZmluZVByb3BlcnR5IGZyb20gJy4vX2RlZmluZVByb3BlcnR5LmpzJztcbmltcG9ydCBpZGVudGl0eSBmcm9tICcuL2lkZW50aXR5LmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0VG9TdHJpbmdgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgYmFzZVNldFRvU3RyaW5nID0gIWRlZmluZVByb3BlcnR5ID8gaWRlbnRpdHkgOiBmdW5jdGlvbihmdW5jLCBzdHJpbmcpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmMsICd0b1N0cmluZycsIHtcbiAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAnZW51bWVyYWJsZSc6IGZhbHNlLFxuICAgICd2YWx1ZSc6IGNvbnN0YW50KHN0cmluZyksXG4gICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VTZXRUb1N0cmluZztcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udGltZXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kc1xuICogb3IgbWF4IGFycmF5IGxlbmd0aCBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICovXG5mdW5jdGlvbiBiYXNlVGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShuKTtcblxuICB3aGlsZSAoKytpbmRleCA8IG4pIHtcbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoaW5kZXgpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VUaW1lcztcbiIsImltcG9ydCBTeW1ib2wgZnJvbSAnLi9fU3ltYm9sLmpzJztcbmltcG9ydCBhcnJheU1hcCBmcm9tICcuL19hcnJheU1hcC5qcyc7XG5pbXBvcnQgaXNBcnJheSBmcm9tICcuL2lzQXJyYXkuanMnO1xuaW1wb3J0IGlzU3ltYm9sIGZyb20gJy4vaXNTeW1ib2wuanMnO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwO1xuXG4vKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbnZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgc3ltYm9sVG9TdHJpbmcgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnRvU3RyaW5nIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRvU3RyaW5nYCB3aGljaCBkb2Vzbid0IGNvbnZlcnQgbnVsbGlzaFxuICogdmFsdWVzIHRvIGVtcHR5IHN0cmluZ3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUb1N0cmluZyh2YWx1ZSkge1xuICAvLyBFeGl0IGVhcmx5IGZvciBzdHJpbmdzIHRvIGF2b2lkIGEgcGVyZm9ybWFuY2UgaGl0IGluIHNvbWUgZW52aXJvbm1lbnRzLlxuICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbnZlcnQgdmFsdWVzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgcmV0dXJuIGFycmF5TWFwKHZhbHVlLCBiYXNlVG9TdHJpbmcpICsgJyc7XG4gIH1cbiAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiBzeW1ib2xUb1N0cmluZyA/IHN5bWJvbFRvU3RyaW5nLmNhbGwodmFsdWUpIDogJyc7XG4gIH1cbiAgdmFyIHJlc3VsdCA9ICh2YWx1ZSArICcnKTtcbiAgcmV0dXJuIChyZXN1bHQgPT0gJzAnICYmICgxIC8gdmFsdWUpID09IC1JTkZJTklUWSkgPyAnLTAnIDogcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlVG9TdHJpbmc7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VVbmFyeTtcbiIsImltcG9ydCBhcnJheU1hcCBmcm9tICcuL19hcnJheU1hcC5qcyc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udmFsdWVzYCBhbmQgYF8udmFsdWVzSW5gIHdoaWNoIGNyZWF0ZXMgYW5cbiAqIGFycmF5IG9mIGBvYmplY3RgIHByb3BlcnR5IHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9wZXJ0eSBuYW1lc1xuICogb2YgYHByb3BzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBiYXNlVmFsdWVzKG9iamVjdCwgcHJvcHMpIHtcbiAgcmV0dXJuIGFycmF5TWFwKHByb3BzLCBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlVmFsdWVzO1xuIiwiaW1wb3J0IGFzc2lnblZhbHVlIGZyb20gJy4vX2Fzc2lnblZhbHVlLmpzJztcbmltcG9ydCBiYXNlQXNzaWduVmFsdWUgZnJvbSAnLi9fYmFzZUFzc2lnblZhbHVlLmpzJztcblxuLyoqXG4gKiBDb3BpZXMgcHJvcGVydGllcyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzIHRvIGNvcHkuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb3BpZWQgdmFsdWVzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weU9iamVjdChzb3VyY2UsIHByb3BzLCBvYmplY3QsIGN1c3RvbWl6ZXIpIHtcbiAgdmFyIGlzTmV3ID0gIW9iamVjdDtcbiAgb2JqZWN0IHx8IChvYmplY3QgPSB7fSk7XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gcHJvcHNbaW5kZXhdO1xuXG4gICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgPyBjdXN0b21pemVyKG9iamVjdFtrZXldLCBzb3VyY2Vba2V5XSwga2V5LCBvYmplY3QsIHNvdXJjZSlcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG5ld1ZhbHVlID0gc291cmNlW2tleV07XG4gICAgfVxuICAgIGlmIChpc05ldykge1xuICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvYmplY3Q7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvcHlPYmplY3Q7XG4iLCJpbXBvcnQgcm9vdCBmcm9tICcuL19yb290LmpzJztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG92ZXJyZWFjaGluZyBjb3JlLWpzIHNoaW1zLiAqL1xudmFyIGNvcmVKc0RhdGEgPSByb290WydfX2NvcmUtanNfc2hhcmVkX18nXTtcblxuZXhwb3J0IGRlZmF1bHQgY29yZUpzRGF0YTtcbiIsImltcG9ydCBiYXNlUmVzdCBmcm9tICcuL19iYXNlUmVzdC5qcyc7XG5pbXBvcnQgaXNJdGVyYXRlZUNhbGwgZnJvbSAnLi9faXNJdGVyYXRlZUNhbGwuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmFzc2lnbmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbmVyIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYXNzaWduZXIgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUFzc2lnbmVyKGFzc2lnbmVyKSB7XG4gIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gc291cmNlcy5sZW5ndGgsXG4gICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPiAxID8gc291cmNlc1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICAgIGN1c3RvbWl6ZXIgPSAoYXNzaWduZXIubGVuZ3RoID4gMyAmJiB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nKVxuICAgICAgPyAobGVuZ3RoLS0sIGN1c3RvbWl6ZXIpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzb3VyY2VzWzBdLCBzb3VyY2VzWzFdLCBndWFyZCkpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPCAzID8gdW5kZWZpbmVkIDogY3VzdG9taXplcjtcbiAgICAgIGxlbmd0aCA9IDE7XG4gICAgfVxuICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgc291cmNlID0gc291cmNlc1tpbmRleF07XG4gICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgIGFzc2lnbmVyKG9iamVjdCwgc291cmNlLCBpbmRleCwgY3VzdG9taXplcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Q7XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVBc3NpZ25lcjtcbiIsImltcG9ydCBlcSBmcm9tICcuL2VxLmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIGJ5IGBfLmRlZmF1bHRzYCB0byBjdXN0b21pemUgaXRzIGBfLmFzc2lnbkluYCB1c2UgdG8gYXNzaWduIHByb3BlcnRpZXNcbiAqIG9mIHNvdXJjZSBvYmplY3RzIHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgZm9yIGFsbCBkZXN0aW5hdGlvbiBwcm9wZXJ0aWVzXG4gKiB0aGF0IHJlc29sdmUgdG8gYHVuZGVmaW5lZGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gb2JqVmFsdWUgVGhlIGRlc3RpbmF0aW9uIHZhbHVlLlxuICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgc291cmNlIHZhbHVlLlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBwYXJlbnQgb2JqZWN0IG9mIGBvYmpWYWx1ZWAuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBjdXN0b21EZWZhdWx0c0Fzc2lnbkluKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QpIHtcbiAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgIChlcShvYmpWYWx1ZSwgb2JqZWN0UHJvdG9ba2V5XSkgJiYgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkge1xuICAgIHJldHVybiBzcmNWYWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqVmFsdWU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGN1c3RvbURlZmF1bHRzQXNzaWduSW47XG4iLCJpbXBvcnQgZ2V0TmF0aXZlIGZyb20gJy4vX2dldE5hdGl2ZS5qcyc7XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICB2YXIgZnVuYyA9IGdldE5hdGl2ZShPYmplY3QsICdkZWZpbmVQcm9wZXJ0eScpO1xuICAgIGZ1bmMoe30sICcnLCB7fSk7XG4gICAgcmV0dXJuIGZ1bmM7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVQcm9wZXJ0eTtcbiIsImltcG9ydCBiYXNlUHJvcGVydHlPZiBmcm9tICcuL19iYXNlUHJvcGVydHlPZi5qcyc7XG5cbi8qKiBVc2VkIHRvIG1hcCBjaGFyYWN0ZXJzIHRvIEhUTUwgZW50aXRpZXMuICovXG52YXIgaHRtbEVzY2FwZXMgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmIzM5Oydcbn07XG5cbi8qKlxuICogVXNlZCBieSBgXy5lc2NhcGVgIHRvIGNvbnZlcnQgY2hhcmFjdGVycyB0byBIVE1MIGVudGl0aWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gY2hyIFRoZSBtYXRjaGVkIGNoYXJhY3RlciB0byBlc2NhcGUuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIGNoYXJhY3Rlci5cbiAqL1xudmFyIGVzY2FwZUh0bWxDaGFyID0gYmFzZVByb3BlcnR5T2YoaHRtbEVzY2FwZXMpO1xuXG5leHBvcnQgZGVmYXVsdCBlc2NhcGVIdG1sQ2hhcjtcbiIsIi8qKiBVc2VkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIGZvciBpbmNsdXNpb24gaW4gY29tcGlsZWQgc3RyaW5nIGxpdGVyYWxzLiAqL1xudmFyIHN0cmluZ0VzY2FwZXMgPSB7XG4gICdcXFxcJzogJ1xcXFwnLFxuICBcIidcIjogXCInXCIsXG4gICdcXG4nOiAnbicsXG4gICdcXHInOiAncicsXG4gICdcXHUyMDI4JzogJ3UyMDI4JyxcbiAgJ1xcdTIwMjknOiAndTIwMjknXG59O1xuXG4vKipcbiAqIFVzZWQgYnkgYF8udGVtcGxhdGVgIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIGZvciBpbmNsdXNpb24gaW4gY29tcGlsZWQgc3RyaW5nIGxpdGVyYWxzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gY2hyIFRoZSBtYXRjaGVkIGNoYXJhY3RlciB0byBlc2NhcGUuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIGNoYXJhY3Rlci5cbiAqL1xuZnVuY3Rpb24gZXNjYXBlU3RyaW5nQ2hhcihjaHIpIHtcbiAgcmV0dXJuICdcXFxcJyArIHN0cmluZ0VzY2FwZXNbY2hyXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZXNjYXBlU3RyaW5nQ2hhcjtcbiIsIi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbmV4cG9ydCBkZWZhdWx0IGZyZWVHbG9iYWw7XG4iLCJpbXBvcnQgYmFzZUlzTmF0aXZlIGZyb20gJy4vX2Jhc2VJc05hdGl2ZS5qcyc7XG5pbXBvcnQgZ2V0VmFsdWUgZnJvbSAnLi9fZ2V0VmFsdWUuanMnO1xuXG4vKipcbiAqIEdldHMgdGhlIG5hdGl2ZSBmdW5jdGlvbiBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICByZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBnZXROYXRpdmU7XG4iLCJpbXBvcnQgb3ZlckFyZyBmcm9tICcuL19vdmVyQXJnLmpzJztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgZ2V0UHJvdG90eXBlID0gb3ZlckFyZyhPYmplY3QuZ2V0UHJvdG90eXBlT2YsIE9iamVjdCk7XG5cbmV4cG9ydCBkZWZhdWx0IGdldFByb3RvdHlwZTtcbiIsImltcG9ydCBTeW1ib2wgZnJvbSAnLi9fU3ltYm9sLmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlmIChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBnZXRSYXdUYWc7XG4iLCIvKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBnZXRWYWx1ZShvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZ2V0VmFsdWU7XG4iLCIvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzLiAqL1xudmFyIHJlSXNVaW50ID0gL14oPzowfFsxLTldXFxkKikkLztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgaW5kZXguXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9TUFYX1NBRkVfSU5URUdFUl0gVGhlIHVwcGVyIGJvdW5kcyBvZiBhIHZhbGlkIGluZGV4LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBpbmRleCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0luZGV4KHZhbHVlLCBsZW5ndGgpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIGxlbmd0aCA9IGxlbmd0aCA9PSBudWxsID8gTUFYX1NBRkVfSU5URUdFUiA6IGxlbmd0aDtcblxuICByZXR1cm4gISFsZW5ndGggJiZcbiAgICAodHlwZSA9PSAnbnVtYmVyJyB8fFxuICAgICAgKHR5cGUgIT0gJ3N5bWJvbCcgJiYgcmVJc1VpbnQudGVzdCh2YWx1ZSkpKSAmJlxuICAgICAgICAodmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8IGxlbmd0aCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzSW5kZXg7XG4iLCJpbXBvcnQgZXEgZnJvbSAnLi9lcS5qcyc7XG5pbXBvcnQgaXNBcnJheUxpa2UgZnJvbSAnLi9pc0FycmF5TGlrZS5qcyc7XG5pbXBvcnQgaXNJbmRleCBmcm9tICcuL19pc0luZGV4LmpzJztcbmltcG9ydCBpc09iamVjdCBmcm9tICcuL2lzT2JqZWN0LmpzJztcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgdmFsdWUgYXJndW1lbnQuXG4gKiBAcGFyYW0geyp9IGluZGV4IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgaW5kZXggb3Iga2V5IGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBvYmplY3QgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBvYmplY3QgYXJndW1lbnQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJdGVyYXRlZUNhbGwodmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciB0eXBlID0gdHlwZW9mIGluZGV4O1xuICBpZiAodHlwZSA9PSAnbnVtYmVyJ1xuICAgICAgICA/IChpc0FycmF5TGlrZShvYmplY3QpICYmIGlzSW5kZXgoaW5kZXgsIG9iamVjdC5sZW5ndGgpKVxuICAgICAgICA6ICh0eXBlID09ICdzdHJpbmcnICYmIGluZGV4IGluIG9iamVjdClcbiAgICAgICkge1xuICAgIHJldHVybiBlcShvYmplY3RbaW5kZXhdLCB2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0l0ZXJhdGVlQ2FsbDtcbiIsImltcG9ydCBjb3JlSnNEYXRhIGZyb20gJy4vX2NvcmVKc0RhdGEuanMnO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWV0aG9kcyBtYXNxdWVyYWRpbmcgYXMgbmF0aXZlLiAqL1xudmFyIG1hc2tTcmNLZXkgPSAoZnVuY3Rpb24oKSB7XG4gIHZhciB1aWQgPSAvW14uXSskLy5leGVjKGNvcmVKc0RhdGEgJiYgY29yZUpzRGF0YS5rZXlzICYmIGNvcmVKc0RhdGEua2V5cy5JRV9QUk9UTyB8fCAnJyk7XG4gIHJldHVybiB1aWQgPyAoJ1N5bWJvbChzcmMpXzEuJyArIHVpZCkgOiAnJztcbn0oKSk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgaXRzIHNvdXJjZSBtYXNrZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNNYXNrZWQoZnVuYykge1xuICByZXR1cm4gISFtYXNrU3JjS2V5ICYmIChtYXNrU3JjS2V5IGluIGZ1bmMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc01hc2tlZDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGEgcHJvdG90eXBlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3RvdHlwZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc1Byb3RvdHlwZSh2YWx1ZSkge1xuICB2YXIgQ3RvciA9IHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yLFxuICAgICAgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG5cbiAgcmV0dXJuIHZhbHVlID09PSBwcm90bztcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNQcm90b3R5cGU7XG4iLCJpbXBvcnQgb3ZlckFyZyBmcm9tICcuL19vdmVyQXJnLmpzJztcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUtleXMgPSBvdmVyQXJnKE9iamVjdC5rZXlzLCBPYmplY3QpO1xuXG5leHBvcnQgZGVmYXVsdCBuYXRpdmVLZXlzO1xuIiwiLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VcbiAqIFtgT2JqZWN0LmtleXNgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGV4Y2VwdCB0aGF0IGl0IGluY2x1ZGVzIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIG5hdGl2ZUtleXNJbihvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAob2JqZWN0ICE9IG51bGwpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5hdGl2ZUtleXNJbjtcbiIsImltcG9ydCBmcmVlR2xvYmFsIGZyb20gJy4vX2ZyZWVHbG9iYWwuanMnO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgcHJvY2Vzc2AgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVQcm9jZXNzID0gbW9kdWxlRXhwb3J0cyAmJiBmcmVlR2xvYmFsLnByb2Nlc3M7XG5cbi8qKiBVc2VkIHRvIGFjY2VzcyBmYXN0ZXIgTm9kZS5qcyBoZWxwZXJzLiAqL1xudmFyIG5vZGVVdGlsID0gKGZ1bmN0aW9uKCkge1xuICB0cnkge1xuICAgIC8vIFVzZSBgdXRpbC50eXBlc2AgZm9yIE5vZGUuanMgMTArLlxuICAgIHZhciB0eXBlcyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlICYmIGZyZWVNb2R1bGUucmVxdWlyZSgndXRpbCcpLnR5cGVzO1xuXG4gICAgaWYgKHR5cGVzKSB7XG4gICAgICByZXR1cm4gdHlwZXM7XG4gICAgfVxuXG4gICAgLy8gTGVnYWN5IGBwcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKWAgZm9yIE5vZGUuanMgPCAxMC5cbiAgICByZXR1cm4gZnJlZVByb2Nlc3MgJiYgZnJlZVByb2Nlc3MuYmluZGluZyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nKCd1dGlsJyk7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG5leHBvcnQgZGVmYXVsdCBub2RlVXRpbDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBvYmplY3RUb1N0cmluZztcbiIsIi8qKlxuICogQ3JlYXRlcyBhIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnQgdHJhbnNmb3JtZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIGFyZ3VtZW50IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyQXJnKGZ1bmMsIHRyYW5zZm9ybSkge1xuICByZXR1cm4gZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIGZ1bmModHJhbnNmb3JtKGFyZykpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBvdmVyQXJnO1xuIiwiaW1wb3J0IGFwcGx5IGZyb20gJy4vX2FwcGx5LmpzJztcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU1heCA9IE1hdGgubWF4O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVJlc3RgIHdoaWNoIHRyYW5zZm9ybXMgdGhlIHJlc3QgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIHJlc3QgYXJyYXkgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCB0cmFuc2Zvcm0pIHtcbiAgc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQgPT09IHVuZGVmaW5lZCA/IChmdW5jLmxlbmd0aCAtIDEpIDogc3RhcnQsIDApO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChhcmdzLmxlbmd0aCAtIHN0YXJ0LCAwKSxcbiAgICAgICAgYXJyYXkgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFycmF5W2luZGV4XSA9IGFyZ3Nbc3RhcnQgKyBpbmRleF07XG4gICAgfVxuICAgIGluZGV4ID0gLTE7XG4gICAgdmFyIG90aGVyQXJncyA9IEFycmF5KHN0YXJ0ICsgMSk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBzdGFydCkge1xuICAgICAgb3RoZXJBcmdzW2luZGV4XSA9IGFyZ3NbaW5kZXhdO1xuICAgIH1cbiAgICBvdGhlckFyZ3Nbc3RhcnRdID0gdHJhbnNmb3JtKGFycmF5KTtcbiAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgb3RoZXJBcmdzKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgb3ZlclJlc3Q7XG4iLCIvKiogVXNlZCB0byBtYXRjaCB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLiAqL1xudmFyIHJlRXNjYXBlID0gLzwlLShbXFxzXFxTXSs/KSU+L2c7XG5cbmV4cG9ydCBkZWZhdWx0IHJlRXNjYXBlO1xuIiwiLyoqIFVzZWQgdG8gbWF0Y2ggdGVtcGxhdGUgZGVsaW1pdGVycy4gKi9cbnZhciByZUV2YWx1YXRlID0gLzwlKFtcXHNcXFNdKz8pJT4vZztcblxuZXhwb3J0IGRlZmF1bHQgcmVFdmFsdWF0ZTtcbiIsIi8qKiBVc2VkIHRvIG1hdGNoIHRlbXBsYXRlIGRlbGltaXRlcnMuICovXG52YXIgcmVJbnRlcnBvbGF0ZSA9IC88JT0oW1xcc1xcU10rPyklPi9nO1xuXG5leHBvcnQgZGVmYXVsdCByZUludGVycG9sYXRlO1xuIiwiaW1wb3J0IGZyZWVHbG9iYWwgZnJvbSAnLi9fZnJlZUdsb2JhbC5qcyc7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG52YXIgZnJlZVNlbGYgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZjtcblxuLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG52YXIgcm9vdCA9IGZyZWVHbG9iYWwgfHwgZnJlZVNlbGYgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxuZXhwb3J0IGRlZmF1bHQgcm9vdDtcbiIsImltcG9ydCBiYXNlU2V0VG9TdHJpbmcgZnJvbSAnLi9fYmFzZVNldFRvU3RyaW5nLmpzJztcbmltcG9ydCBzaG9ydE91dCBmcm9tICcuL19zaG9ydE91dC5qcyc7XG5cbi8qKlxuICogU2V0cyB0aGUgYHRvU3RyaW5nYCBtZXRob2Qgb2YgYGZ1bmNgIHRvIHJldHVybiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gKi9cbnZhciBzZXRUb1N0cmluZyA9IHNob3J0T3V0KGJhc2VTZXRUb1N0cmluZyk7XG5cbmV4cG9ydCBkZWZhdWx0IHNldFRvU3RyaW5nO1xuIiwiLyoqIFVzZWQgdG8gZGV0ZWN0IGhvdCBmdW5jdGlvbnMgYnkgbnVtYmVyIG9mIGNhbGxzIHdpdGhpbiBhIHNwYW4gb2YgbWlsbGlzZWNvbmRzLiAqL1xudmFyIEhPVF9DT1VOVCA9IDgwMCxcbiAgICBIT1RfU1BBTiA9IDE2O1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTm93ID0gRGF0ZS5ub3c7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQnbGwgc2hvcnQgb3V0IGFuZCBpbnZva2UgYGlkZW50aXR5YCBpbnN0ZWFkXG4gKiBvZiBgZnVuY2Agd2hlbiBpdCdzIGNhbGxlZCBgSE9UX0NPVU5UYCBvciBtb3JlIHRpbWVzIGluIGBIT1RfU1BBTmBcbiAqIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzaG9ydGFibGUgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIHNob3J0T3V0KGZ1bmMpIHtcbiAgdmFyIGNvdW50ID0gMCxcbiAgICAgIGxhc3RDYWxsZWQgPSAwO1xuXG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc3RhbXAgPSBuYXRpdmVOb3coKSxcbiAgICAgICAgcmVtYWluaW5nID0gSE9UX1NQQU4gLSAoc3RhbXAgLSBsYXN0Q2FsbGVkKTtcblxuICAgIGxhc3RDYWxsZWQgPSBzdGFtcDtcbiAgICBpZiAocmVtYWluaW5nID4gMCkge1xuICAgICAgaWYgKCsrY291bnQgPj0gSE9UX0NPVU5UKSB7XG4gICAgICAgIHJldHVybiBhcmd1bWVudHNbMF07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvdW50ID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmMuYXBwbHkodW5kZWZpbmVkLCBhcmd1bWVudHMpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBzaG9ydE91dDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYGZ1bmNgIHRvIGl0cyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICovXG5mdW5jdGlvbiB0b1NvdXJjZShmdW5jKSB7XG4gIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoZnVuYyArICcnKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG4gIHJldHVybiAnJztcbn1cblxuZXhwb3J0IGRlZmF1bHQgdG9Tb3VyY2U7XG4iLCJpbXBvcnQgY29weU9iamVjdCBmcm9tICcuL19jb3B5T2JqZWN0LmpzJztcbmltcG9ydCBjcmVhdGVBc3NpZ25lciBmcm9tICcuL19jcmVhdGVBc3NpZ25lci5qcyc7XG5pbXBvcnQga2V5c0luIGZyb20gJy4va2V5c0luLmpzJztcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmFzc2lnbkluYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYFxuICogd2hpY2ggaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBhc3NpZ25lZCB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zXG4gKiBgdW5kZWZpbmVkYCwgYXNzaWdubWVudCBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYFxuICogaXMgaW52b2tlZCB3aXRoIGZpdmUgYXJndW1lbnRzOiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlKS5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAYWxpYXMgZXh0ZW5kV2l0aFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHsuLi5PYmplY3R9IHNvdXJjZXMgVGhlIHNvdXJjZSBvYmplY3RzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBzZWUgXy5hc3NpZ25XaXRoXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gKiAgIHJldHVybiBfLmlzVW5kZWZpbmVkKG9ialZhbHVlKSA/IHNyY1ZhbHVlIDogb2JqVmFsdWU7XG4gKiB9XG4gKlxuICogdmFyIGRlZmF1bHRzID0gXy5wYXJ0aWFsUmlnaHQoXy5hc3NpZ25JbldpdGgsIGN1c3RvbWl6ZXIpO1xuICpcbiAqIGRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKi9cbnZhciBhc3NpZ25JbldpdGggPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpIHtcbiAgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QsIGN1c3RvbWl6ZXIpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGFzc2lnbkluV2l0aDtcbiIsImltcG9ydCBhcHBseSBmcm9tICcuL19hcHBseS5qcyc7XG5pbXBvcnQgYmFzZVJlc3QgZnJvbSAnLi9fYmFzZVJlc3QuanMnO1xuaW1wb3J0IGlzRXJyb3IgZnJvbSAnLi9pc0Vycm9yLmpzJztcblxuLyoqXG4gKiBBdHRlbXB0cyB0byBpbnZva2UgYGZ1bmNgLCByZXR1cm5pbmcgZWl0aGVyIHRoZSByZXN1bHQgb3IgdGhlIGNhdWdodCBlcnJvclxuICogb2JqZWN0LiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgYXJlIHByb3ZpZGVkIHRvIGBmdW5jYCB3aGVuIGl0J3MgaW52b2tlZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXR0ZW1wdC5cbiAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGBmdW5jYCByZXN1bHQgb3IgZXJyb3Igb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBBdm9pZCB0aHJvd2luZyBlcnJvcnMgZm9yIGludmFsaWQgc2VsZWN0b3JzLlxuICogdmFyIGVsZW1lbnRzID0gXy5hdHRlbXB0KGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gKiAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcbiAqIH0sICc+Xz4nKTtcbiAqXG4gKiBpZiAoXy5pc0Vycm9yKGVsZW1lbnRzKSkge1xuICogICBlbGVtZW50cyA9IFtdO1xuICogfVxuICovXG52YXIgYXR0ZW1wdCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIGFyZ3MpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXBwbHkoZnVuYywgdW5kZWZpbmVkLCBhcmdzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBpc0Vycm9yKGUpID8gZSA6IG5ldyBFcnJvcihlKTtcbiAgfVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGF0dGVtcHQ7XG4iLCIvKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYHZhbHVlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmV0dXJuIGZyb20gdGhlIG5ldyBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbnN0YW50IGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IF8udGltZXMoMiwgXy5jb25zdGFudCh7ICdhJzogMSB9KSk7XG4gKlxuICogY29uc29sZS5sb2cob2JqZWN0cyk7XG4gKiAvLyA9PiBbeyAnYSc6IDEgfSwgeyAnYSc6IDEgfV1cbiAqXG4gKiBjb25zb2xlLmxvZyhvYmplY3RzWzBdID09PSBvYmplY3RzWzFdKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gY29uc3RhbnQodmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY29uc3RhbnQ7XG4iLCIvKipcbiAqIFBlcmZvcm1zIGFcbiAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmUgZXF1aXZhbGVudC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2EnOiAxIH07XG4gKlxuICogXy5lcShvYmplY3QsIG9iamVjdCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5lcShvYmplY3QsIG90aGVyKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5lcSgnYScsICdhJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5lcSgnYScsIE9iamVjdCgnYScpKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5lcShOYU4sIE5hTik7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGVxKHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPT09IG90aGVyIHx8ICh2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZXE7XG4iLCJpbXBvcnQgZXNjYXBlSHRtbENoYXIgZnJvbSAnLi9fZXNjYXBlSHRtbENoYXIuanMnO1xuaW1wb3J0IHRvU3RyaW5nIGZyb20gJy4vdG9TdHJpbmcuanMnO1xuXG4vKiogVXNlZCB0byBtYXRjaCBIVE1MIGVudGl0aWVzIGFuZCBIVE1MIGNoYXJhY3RlcnMuICovXG52YXIgcmVVbmVzY2FwZWRIdG1sID0gL1smPD5cIiddL2csXG4gICAgcmVIYXNVbmVzY2FwZWRIdG1sID0gUmVnRXhwKHJlVW5lc2NhcGVkSHRtbC5zb3VyY2UpO1xuXG4vKipcbiAqIENvbnZlcnRzIHRoZSBjaGFyYWN0ZXJzIFwiJlwiLCBcIjxcIiwgXCI+XCIsICdcIicsIGFuZCBcIidcIiBpbiBgc3RyaW5nYCB0byB0aGVpclxuICogY29ycmVzcG9uZGluZyBIVE1MIGVudGl0aWVzLlxuICpcbiAqICoqTm90ZToqKiBObyBvdGhlciBjaGFyYWN0ZXJzIGFyZSBlc2NhcGVkLiBUbyBlc2NhcGUgYWRkaXRpb25hbFxuICogY2hhcmFjdGVycyB1c2UgYSB0aGlyZC1wYXJ0eSBsaWJyYXJ5IGxpa2UgW19oZV9dKGh0dHBzOi8vbXRocy5iZS9oZSkuXG4gKlxuICogVGhvdWdoIHRoZSBcIj5cIiBjaGFyYWN0ZXIgaXMgZXNjYXBlZCBmb3Igc3ltbWV0cnksIGNoYXJhY3RlcnMgbGlrZVxuICogXCI+XCIgYW5kIFwiL1wiIGRvbid0IG5lZWQgZXNjYXBpbmcgaW4gSFRNTCBhbmQgaGF2ZSBubyBzcGVjaWFsIG1lYW5pbmdcbiAqIHVubGVzcyB0aGV5J3JlIHBhcnQgb2YgYSB0YWcgb3IgdW5xdW90ZWQgYXR0cmlidXRlIHZhbHVlLiBTZWVcbiAqIFtNYXRoaWFzIEJ5bmVucydzIGFydGljbGVdKGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9hbWJpZ3VvdXMtYW1wZXJzYW5kcylcbiAqICh1bmRlciBcInNlbWktcmVsYXRlZCBmdW4gZmFjdFwiKSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFdoZW4gd29ya2luZyB3aXRoIEhUTUwgeW91IHNob3VsZCBhbHdheXNcbiAqIFtxdW90ZSBhdHRyaWJ1dGUgdmFsdWVzXShodHRwOi8vd29ua28uY29tL3Bvc3QvaHRtbC1lc2NhcGluZykgdG8gcmVkdWNlXG4gKiBYU1MgdmVjdG9ycy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgU3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIHN0cmluZy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5lc2NhcGUoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJyk7XG4gKiAvLyA9PiAnZnJlZCwgYmFybmV5LCAmYW1wOyBwZWJibGVzJ1xuICovXG5mdW5jdGlvbiBlc2NhcGUoc3RyaW5nKSB7XG4gIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gIHJldHVybiAoc3RyaW5nICYmIHJlSGFzVW5lc2NhcGVkSHRtbC50ZXN0KHN0cmluZykpXG4gICAgPyBzdHJpbmcucmVwbGFjZShyZVVuZXNjYXBlZEh0bWwsIGVzY2FwZUh0bWxDaGFyKVxuICAgIDogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBlc2NhcGU7XG4iLCIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50IGl0IHJlY2VpdmVzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0geyp9IHZhbHVlIEFueSB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIGB2YWx1ZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICpcbiAqIGNvbnNvbGUubG9nKF8uaWRlbnRpdHkob2JqZWN0KSA9PT0gb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaWRlbnRpdHkodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpZGVudGl0eTtcbiIsImltcG9ydCBiYXNlSXNBcmd1bWVudHMgZnJvbSAnLi9fYmFzZUlzQXJndW1lbnRzLmpzJztcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSAnLi9pc09iamVjdExpa2UuanMnO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhbiBgYXJndW1lbnRzYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcmd1bWVudHMgPSBiYXNlSXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPyBiYXNlSXNBcmd1bWVudHMgOiBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgJiZcbiAgICAhcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgaXNBcmd1bWVudHM7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxuZXhwb3J0IGRlZmF1bHQgaXNBcnJheTtcbiIsImltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJy4vaXNGdW5jdGlvbi5qcyc7XG5pbXBvcnQgaXNMZW5ndGggZnJvbSAnLi9pc0xlbmd0aC5qcyc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZS4gQSB2YWx1ZSBpcyBjb25zaWRlcmVkIGFycmF5LWxpa2UgaWYgaXQnc1xuICogbm90IGEgZnVuY3Rpb24gYW5kIGhhcyBhIGB2YWx1ZS5sZW5ndGhgIHRoYXQncyBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvclxuICogZXF1YWwgdG8gYDBgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgIWlzRnVuY3Rpb24odmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0FycmF5TGlrZTtcbiIsImltcG9ydCByb290IGZyb20gJy4vX3Jvb3QuanMnO1xuaW1wb3J0IHN0dWJGYWxzZSBmcm9tICcuL3N0dWJGYWxzZS5qcyc7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlSXNCdWZmZXIgPSBCdWZmZXIgPyBCdWZmZXIuaXNCdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgQnVmZmVyKDIpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBVaW50OEFycmF5KDIpKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0J1ZmZlciA9IG5hdGl2ZUlzQnVmZmVyIHx8IHN0dWJGYWxzZTtcblxuZXhwb3J0IGRlZmF1bHQgaXNCdWZmZXI7XG4iLCJpbXBvcnQgYmFzZUdldFRhZyBmcm9tICcuL19iYXNlR2V0VGFnLmpzJztcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSAnLi9pc09iamVjdExpa2UuanMnO1xuaW1wb3J0IGlzUGxhaW5PYmplY3QgZnJvbSAnLi9pc1BsYWluT2JqZWN0LmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGRvbUV4Y1RhZyA9ICdbb2JqZWN0IERPTUV4Y2VwdGlvbl0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBgRXJyb3JgLCBgRXZhbEVycm9yYCwgYFJhbmdlRXJyb3JgLCBgUmVmZXJlbmNlRXJyb3JgLFxuICogYFN5bnRheEVycm9yYCwgYFR5cGVFcnJvcmAsIG9yIGBVUklFcnJvcmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGVycm9yIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRXJyb3IobmV3IEVycm9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRXJyb3IoRXJyb3IpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNFcnJvcih2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICByZXR1cm4gdGFnID09IGVycm9yVGFnIHx8IHRhZyA9PSBkb21FeGNUYWcgfHxcbiAgICAodHlwZW9mIHZhbHVlLm1lc3NhZ2UgPT0gJ3N0cmluZycgJiYgdHlwZW9mIHZhbHVlLm5hbWUgPT0gJ3N0cmluZycgJiYgIWlzUGxhaW5PYmplY3QodmFsdWUpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNFcnJvcjtcbiIsImltcG9ydCBiYXNlR2V0VGFnIGZyb20gJy4vX2Jhc2VHZXRUYWcuanMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QuanMnO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXN5bmNUYWcgPSAnW29iamVjdCBBc3luY0Z1bmN0aW9uXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBwcm94eVRhZyA9ICdbb2JqZWN0IFByb3h5XSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBGdW5jdGlvbmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAvLyBpbiBTYWZhcmkgOSB3aGljaCByZXR1cm5zICdvYmplY3QnIGZvciB0eXBlZCBhcnJheXMgYW5kIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZyB8fCB0YWcgPT0gYXN5bmNUYWcgfHwgdGFnID09IHByb3h5VGFnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0Z1bmN0aW9uO1xuIiwiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGxlbmd0aCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTGVuZ3RoKDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNMZW5ndGgoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoSW5maW5pdHkpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKCczJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmXG4gICAgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0xlbmd0aDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc09iamVjdDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc09iamVjdExpa2U7XG4iLCJpbXBvcnQgYmFzZUdldFRhZyBmcm9tICcuL19iYXNlR2V0VGFnLmpzJztcbmltcG9ydCBnZXRQcm90b3R5cGUgZnJvbSAnLi9fZ2V0UHJvdG90eXBlLmpzJztcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSAnLi9pc09iamVjdExpa2UuanMnO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBpbmZlciB0aGUgYE9iamVjdGAgY29uc3RydWN0b3IuICovXG52YXIgb2JqZWN0Q3RvclN0cmluZyA9IGZ1bmNUb1N0cmluZy5jYWxsKE9iamVjdCk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIHRoYXQgaXMsIGFuIG9iamVjdCBjcmVhdGVkIGJ5IHRoZVxuICogYE9iamVjdGAgY29uc3RydWN0b3Igb3Igb25lIHdpdGggYSBgW1tQcm90b3R5cGVdXWAgb2YgYG51bGxgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC44LjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqIH1cbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoeyAneCc6IDAsICd5JzogMCB9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdExpa2UodmFsdWUpIHx8IGJhc2VHZXRUYWcodmFsdWUpICE9IG9iamVjdFRhZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcHJvdG8gPSBnZXRQcm90b3R5cGUodmFsdWUpO1xuICBpZiAocHJvdG8gPT09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgQ3RvciA9IGhhc093blByb3BlcnR5LmNhbGwocHJvdG8sICdjb25zdHJ1Y3RvcicpICYmIHByb3RvLmNvbnN0cnVjdG9yO1xuICByZXR1cm4gdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yIGluc3RhbmNlb2YgQ3RvciAmJlxuICAgIGZ1bmNUb1N0cmluZy5jYWxsKEN0b3IpID09IG9iamVjdEN0b3JTdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzUGxhaW5PYmplY3Q7XG4iLCJpbXBvcnQgYmFzZUdldFRhZyBmcm9tICcuL19iYXNlR2V0VGFnLmpzJztcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSAnLi9pc09iamVjdExpa2UuanMnO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzeW1ib2wsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1N5bWJvbChTeW1ib2wuaXRlcmF0b3IpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTeW1ib2woJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN5bWJvbFRhZyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzU3ltYm9sO1xuIiwiaW1wb3J0IGJhc2VJc1R5cGVkQXJyYXkgZnJvbSAnLi9fYmFzZUlzVHlwZWRBcnJheS5qcyc7XG5pbXBvcnQgYmFzZVVuYXJ5IGZyb20gJy4vX2Jhc2VVbmFyeS5qcyc7XG5pbXBvcnQgbm9kZVV0aWwgZnJvbSAnLi9fbm9kZVV0aWwuanMnO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1R5cGVkQXJyYXkgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1R5cGVkQXJyYXk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkobmV3IFVpbnQ4QXJyYXkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KFtdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1R5cGVkQXJyYXkgPSBub2RlSXNUeXBlZEFycmF5ID8gYmFzZVVuYXJ5KG5vZGVJc1R5cGVkQXJyYXkpIDogYmFzZUlzVHlwZWRBcnJheTtcblxuZXhwb3J0IGRlZmF1bHQgaXNUeXBlZEFycmF5O1xuIiwiaW1wb3J0IGFycmF5TGlrZUtleXMgZnJvbSAnLi9fYXJyYXlMaWtlS2V5cy5qcyc7XG5pbXBvcnQgYmFzZUtleXMgZnJvbSAnLi9fYmFzZUtleXMuanMnO1xuaW1wb3J0IGlzQXJyYXlMaWtlIGZyb20gJy4vaXNBcnJheUxpa2UuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLiBTZWUgdGhlXG4gKiBbRVMgc3BlY10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gKiBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5cyhuZXcgRm9vKTtcbiAqIC8vID0+IFsnYScsICdiJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqXG4gKiBfLmtleXMoJ2hpJyk7XG4gKiAvLyA9PiBbJzAnLCAnMSddXG4gKi9cbmZ1bmN0aW9uIGtleXMob2JqZWN0KSB7XG4gIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QpIDogYmFzZUtleXMob2JqZWN0KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQga2V5cztcbiIsImltcG9ydCBhcnJheUxpa2VLZXlzIGZyb20gJy4vX2FycmF5TGlrZUtleXMuanMnO1xuaW1wb3J0IGJhc2VLZXlzSW4gZnJvbSAnLi9fYmFzZUtleXNJbi5qcyc7XG5pbXBvcnQgaXNBcnJheUxpa2UgZnJvbSAnLi9pc0FycmF5TGlrZS5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmtleXNJbihuZXcgRm9vKTtcbiAqIC8vID0+IFsnYScsICdiJywgJ2MnXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICovXG5mdW5jdGlvbiBrZXlzSW4ob2JqZWN0KSB7XG4gIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QsIHRydWUpIDogYmFzZUtleXNJbihvYmplY3QpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBrZXlzSW47XG4iLCIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udGltZXMoMiwgXy5zdHViRmFsc2UpO1xuICogLy8gPT4gW2ZhbHNlLCBmYWxzZV1cbiAqL1xuZnVuY3Rpb24gc3R1YkZhbHNlKCkge1xuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHN0dWJGYWxzZTtcbiIsImltcG9ydCBhc3NpZ25JbldpdGggZnJvbSAnLi9hc3NpZ25JbldpdGguanMnO1xuaW1wb3J0IGF0dGVtcHQgZnJvbSAnLi9hdHRlbXB0LmpzJztcbmltcG9ydCBiYXNlVmFsdWVzIGZyb20gJy4vX2Jhc2VWYWx1ZXMuanMnO1xuaW1wb3J0IGN1c3RvbURlZmF1bHRzQXNzaWduSW4gZnJvbSAnLi9fY3VzdG9tRGVmYXVsdHNBc3NpZ25Jbi5qcyc7XG5pbXBvcnQgZXNjYXBlU3RyaW5nQ2hhciBmcm9tICcuL19lc2NhcGVTdHJpbmdDaGFyLmpzJztcbmltcG9ydCBpc0Vycm9yIGZyb20gJy4vaXNFcnJvci5qcyc7XG5pbXBvcnQgaXNJdGVyYXRlZUNhbGwgZnJvbSAnLi9faXNJdGVyYXRlZUNhbGwuanMnO1xuaW1wb3J0IGtleXMgZnJvbSAnLi9rZXlzLmpzJztcbmltcG9ydCByZUludGVycG9sYXRlIGZyb20gJy4vX3JlSW50ZXJwb2xhdGUuanMnO1xuaW1wb3J0IHRlbXBsYXRlU2V0dGluZ3MgZnJvbSAnLi90ZW1wbGF0ZVNldHRpbmdzLmpzJztcbmltcG9ydCB0b1N0cmluZyBmcm9tICcuL3RvU3RyaW5nLmpzJztcblxuLyoqIFVzZWQgdG8gbWF0Y2ggZW1wdHkgc3RyaW5nIGxpdGVyYWxzIGluIGNvbXBpbGVkIHRlbXBsYXRlIHNvdXJjZS4gKi9cbnZhciByZUVtcHR5U3RyaW5nTGVhZGluZyA9IC9cXGJfX3AgXFwrPSAnJzsvZyxcbiAgICByZUVtcHR5U3RyaW5nTWlkZGxlID0gL1xcYihfX3AgXFwrPSkgJycgXFwrL2csXG4gICAgcmVFbXB0eVN0cmluZ1RyYWlsaW5nID0gLyhfX2VcXCguKj9cXCl8XFxiX190XFwpKSBcXCtcXG4nJzsvZztcblxuLyoqXG4gKiBVc2VkIHRvIG1hdGNoXG4gKiBbRVMgdGVtcGxhdGUgZGVsaW1pdGVyc10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdGVtcGxhdGUtbGl0ZXJhbC1sZXhpY2FsLWNvbXBvbmVudHMpLlxuICovXG52YXIgcmVFc1RlbXBsYXRlID0gL1xcJFxceyhbXlxcXFx9XSooPzpcXFxcLlteXFxcXH1dKikqKVxcfS9nO1xuXG4vKiogVXNlZCB0byBlbnN1cmUgY2FwdHVyaW5nIG9yZGVyIG9mIHRlbXBsYXRlIGRlbGltaXRlcnMuICovXG52YXIgcmVOb01hdGNoID0gLygkXikvO1xuXG4vKiogVXNlZCB0byBtYXRjaCB1bmVzY2FwZWQgY2hhcmFjdGVycyBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuICovXG52YXIgcmVVbmVzY2FwZWRTdHJpbmcgPSAvWydcXG5cXHJcXHUyMDI4XFx1MjAyOVxcXFxdL2c7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvbXBpbGVkIHRlbXBsYXRlIGZ1bmN0aW9uIHRoYXQgY2FuIGludGVycG9sYXRlIGRhdGEgcHJvcGVydGllc1xuICogaW4gXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlcnMsIEhUTUwtZXNjYXBlIGludGVycG9sYXRlZCBkYXRhIHByb3BlcnRpZXMgaW5cbiAqIFwiZXNjYXBlXCIgZGVsaW1pdGVycywgYW5kIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBcImV2YWx1YXRlXCIgZGVsaW1pdGVycy4gRGF0YVxuICogcHJvcGVydGllcyBtYXkgYmUgYWNjZXNzZWQgYXMgZnJlZSB2YXJpYWJsZXMgaW4gdGhlIHRlbXBsYXRlLiBJZiBhIHNldHRpbmdcbiAqIG9iamVjdCBpcyBnaXZlbiwgaXQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGBfLnRlbXBsYXRlU2V0dGluZ3NgIHZhbHVlcy5cbiAqXG4gKiAqKk5vdGU6KiogSW4gdGhlIGRldmVsb3BtZW50IGJ1aWxkIGBfLnRlbXBsYXRlYCB1dGlsaXplc1xuICogW3NvdXJjZVVSTHNdKGh0dHA6Ly93d3cuaHRtbDVyb2Nrcy5jb20vZW4vdHV0b3JpYWxzL2RldmVsb3BlcnRvb2xzL3NvdXJjZW1hcHMvI3RvYy1zb3VyY2V1cmwpXG4gKiBmb3IgZWFzaWVyIGRlYnVnZ2luZy5cbiAqXG4gKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBwcmVjb21waWxpbmcgdGVtcGxhdGVzIHNlZVxuICogW2xvZGFzaCdzIGN1c3RvbSBidWlsZHMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9sb2Rhc2guY29tL2N1c3RvbS1idWlsZHMpLlxuICpcbiAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIENocm9tZSBleHRlbnNpb24gc2FuZGJveGVzIHNlZVxuICogW0Nocm9tZSdzIGV4dGVuc2lvbnMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3NhbmRib3hpbmdFdmFsKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgU3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHRlbXBsYXRlIHN0cmluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICogQHBhcmFtIHtSZWdFeHB9IFtvcHRpb25zLmVzY2FwZT1fLnRlbXBsYXRlU2V0dGluZ3MuZXNjYXBlXVxuICogIFRoZSBIVE1MIFwiZXNjYXBlXCIgZGVsaW1pdGVyLlxuICogQHBhcmFtIHtSZWdFeHB9IFtvcHRpb25zLmV2YWx1YXRlPV8udGVtcGxhdGVTZXR0aW5ncy5ldmFsdWF0ZV1cbiAqICBUaGUgXCJldmFsdWF0ZVwiIGRlbGltaXRlci5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucy5pbXBvcnRzPV8udGVtcGxhdGVTZXR0aW5ncy5pbXBvcnRzXVxuICogIEFuIG9iamVjdCB0byBpbXBvcnQgaW50byB0aGUgdGVtcGxhdGUgYXMgZnJlZSB2YXJpYWJsZXMuXG4gKiBAcGFyYW0ge1JlZ0V4cH0gW29wdGlvbnMuaW50ZXJwb2xhdGU9Xy50ZW1wbGF0ZVNldHRpbmdzLmludGVycG9sYXRlXVxuICogIFRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyLlxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnNvdXJjZVVSTD0ndGVtcGxhdGVTb3VyY2VzW25dJ11cbiAqICBUaGUgc291cmNlVVJMIG9mIHRoZSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy52YXJpYWJsZT0nb2JqJ11cbiAqICBUaGUgZGF0YSBvYmplY3QgdmFyaWFibGUgbmFtZS5cbiAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGNvbXBpbGVkIHRlbXBsYXRlIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBVc2UgdGhlIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIgdG8gY3JlYXRlIGEgY29tcGlsZWQgdGVtcGxhdGUuXG4gKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyA8JT0gdXNlciAlPiEnKTtcbiAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnZnJlZCcgfSk7XG4gKiAvLyA9PiAnaGVsbG8gZnJlZCEnXG4gKlxuICogLy8gVXNlIHRoZSBIVE1MIFwiZXNjYXBlXCIgZGVsaW1pdGVyIHRvIGVzY2FwZSBkYXRhIHByb3BlcnR5IHZhbHVlcy5cbiAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzxiPjwlLSB2YWx1ZSAlPjwvYj4nKTtcbiAqIGNvbXBpbGVkKHsgJ3ZhbHVlJzogJzxzY3JpcHQ+JyB9KTtcbiAqIC8vID0+ICc8Yj4mbHQ7c2NyaXB0Jmd0OzwvYj4nXG4gKlxuICogLy8gVXNlIHRoZSBcImV2YWx1YXRlXCIgZGVsaW1pdGVyIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBhbmQgZ2VuZXJhdGUgSFRNTC5cbiAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlIF8uZm9yRWFjaCh1c2VycywgZnVuY3Rpb24odXNlcikgeyAlPjxsaT48JS0gdXNlciAlPjwvbGk+PCUgfSk7ICU+Jyk7XG4gKiBjb21waWxlZCh7ICd1c2Vycyc6IFsnZnJlZCcsICdiYXJuZXknXSB9KTtcbiAqIC8vID0+ICc8bGk+ZnJlZDwvbGk+PGxpPmJhcm5leTwvbGk+J1xuICpcbiAqIC8vIFVzZSB0aGUgaW50ZXJuYWwgYHByaW50YCBmdW5jdGlvbiBpbiBcImV2YWx1YXRlXCIgZGVsaW1pdGVycy5cbiAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlIHByaW50KFwiaGVsbG8gXCIgKyB1c2VyKTsgJT4hJyk7XG4gKiBjb21waWxlZCh7ICd1c2VyJzogJ2Jhcm5leScgfSk7XG4gKiAvLyA9PiAnaGVsbG8gYmFybmV5ISdcbiAqXG4gKiAvLyBVc2UgdGhlIEVTIHRlbXBsYXRlIGxpdGVyYWwgZGVsaW1pdGVyIGFzIGFuIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIuXG4gKiAvLyBEaXNhYmxlIHN1cHBvcnQgYnkgcmVwbGFjaW5nIHRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyLlxuICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8gJHsgdXNlciB9IScpO1xuICogY29tcGlsZWQoeyAndXNlcic6ICdwZWJibGVzJyB9KTtcbiAqIC8vID0+ICdoZWxsbyBwZWJibGVzISdcbiAqXG4gKiAvLyBVc2UgYmFja3NsYXNoZXMgdG8gdHJlYXQgZGVsaW1pdGVycyBhcyBwbGFpbiB0ZXh0LlxuICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPCU9IFwiXFxcXDwlLSB2YWx1ZSAlXFxcXD5cIiAlPicpO1xuICogY29tcGlsZWQoeyAndmFsdWUnOiAnaWdub3JlZCcgfSk7XG4gKiAvLyA9PiAnPCUtIHZhbHVlICU+J1xuICpcbiAqIC8vIFVzZSB0aGUgYGltcG9ydHNgIG9wdGlvbiB0byBpbXBvcnQgYGpRdWVyeWAgYXMgYGpxYC5cbiAqIHZhciB0ZXh0ID0gJzwlIGpxLmVhY2godXNlcnMsIGZ1bmN0aW9uKHVzZXIpIHsgJT48bGk+PCUtIHVzZXIgJT48L2xpPjwlIH0pOyAlPic7XG4gKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKHRleHQsIHsgJ2ltcG9ydHMnOiB7ICdqcSc6IGpRdWVyeSB9IH0pO1xuICogY29tcGlsZWQoeyAndXNlcnMnOiBbJ2ZyZWQnLCAnYmFybmV5J10gfSk7XG4gKiAvLyA9PiAnPGxpPmZyZWQ8L2xpPjxsaT5iYXJuZXk8L2xpPidcbiAqXG4gKiAvLyBVc2UgdGhlIGBzb3VyY2VVUkxgIG9wdGlvbiB0byBzcGVjaWZ5IGEgY3VzdG9tIHNvdXJjZVVSTCBmb3IgdGhlIHRlbXBsYXRlLlxuICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8gPCU9IHVzZXIgJT4hJywgeyAnc291cmNlVVJMJzogJy9iYXNpYy9ncmVldGluZy5qc3QnIH0pO1xuICogY29tcGlsZWQoZGF0YSk7XG4gKiAvLyA9PiBGaW5kIHRoZSBzb3VyY2Ugb2YgXCJncmVldGluZy5qc3RcIiB1bmRlciB0aGUgU291cmNlcyB0YWIgb3IgUmVzb3VyY2VzIHBhbmVsIG9mIHRoZSB3ZWIgaW5zcGVjdG9yLlxuICpcbiAqIC8vIFVzZSB0aGUgYHZhcmlhYmxlYCBvcHRpb24gdG8gZW5zdXJlIGEgd2l0aC1zdGF0ZW1lbnQgaXNuJ3QgdXNlZCBpbiB0aGUgY29tcGlsZWQgdGVtcGxhdGUuXG4gKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoaSA8JT0gZGF0YS51c2VyICU+IScsIHsgJ3ZhcmlhYmxlJzogJ2RhdGEnIH0pO1xuICogY29tcGlsZWQuc291cmNlO1xuICogLy8gPT4gZnVuY3Rpb24oZGF0YSkge1xuICogLy8gICB2YXIgX190LCBfX3AgPSAnJztcbiAqIC8vICAgX19wICs9ICdoaSAnICsgKChfX3QgPSAoIGRhdGEudXNlciApKSA9PSBudWxsID8gJycgOiBfX3QpICsgJyEnO1xuICogLy8gICByZXR1cm4gX19wO1xuICogLy8gfVxuICpcbiAqIC8vIFVzZSBjdXN0b20gdGVtcGxhdGUgZGVsaW1pdGVycy5cbiAqIF8udGVtcGxhdGVTZXR0aW5ncy5pbnRlcnBvbGF0ZSA9IC97eyhbXFxzXFxTXSs/KX19L2c7XG4gKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyB7eyB1c2VyIH19IScpO1xuICogY29tcGlsZWQoeyAndXNlcic6ICdtdXN0YWNoZScgfSk7XG4gKiAvLyA9PiAnaGVsbG8gbXVzdGFjaGUhJ1xuICpcbiAqIC8vIFVzZSB0aGUgYHNvdXJjZWAgcHJvcGVydHkgdG8gaW5saW5lIGNvbXBpbGVkIHRlbXBsYXRlcyBmb3IgbWVhbmluZ2Z1bFxuICogLy8gbGluZSBudW1iZXJzIGluIGVycm9yIG1lc3NhZ2VzIGFuZCBzdGFjayB0cmFjZXMuXG4gKiBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnanN0LmpzJyksICdcXFxuICogICB2YXIgSlNUID0ge1xcXG4gKiAgICAgXCJtYWluXCI6ICcgKyBfLnRlbXBsYXRlKG1haW5UZXh0KS5zb3VyY2UgKyAnXFxcbiAqICAgfTtcXFxuICogJyk7XG4gKi9cbmZ1bmN0aW9uIHRlbXBsYXRlKHN0cmluZywgb3B0aW9ucywgZ3VhcmQpIHtcbiAgLy8gQmFzZWQgb24gSm9obiBSZXNpZydzIGB0bXBsYCBpbXBsZW1lbnRhdGlvblxuICAvLyAoaHR0cDovL2Vqb2huLm9yZy9ibG9nL2phdmFzY3JpcHQtbWljcm8tdGVtcGxhdGluZy8pXG4gIC8vIGFuZCBMYXVyYSBEb2t0b3JvdmEncyBkb1QuanMgKGh0dHBzOi8vZ2l0aHViLmNvbS9vbGFkby9kb1QpLlxuICB2YXIgc2V0dGluZ3MgPSB0ZW1wbGF0ZVNldHRpbmdzLmltcG9ydHMuXy50ZW1wbGF0ZVNldHRpbmdzIHx8IHRlbXBsYXRlU2V0dGluZ3M7XG5cbiAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHN0cmluZywgb3B0aW9ucywgZ3VhcmQpKSB7XG4gICAgb3B0aW9ucyA9IHVuZGVmaW5lZDtcbiAgfVxuICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICBvcHRpb25zID0gYXNzaWduSW5XaXRoKHt9LCBvcHRpb25zLCBzZXR0aW5ncywgY3VzdG9tRGVmYXVsdHNBc3NpZ25Jbik7XG5cbiAgdmFyIGltcG9ydHMgPSBhc3NpZ25JbldpdGgoe30sIG9wdGlvbnMuaW1wb3J0cywgc2V0dGluZ3MuaW1wb3J0cywgY3VzdG9tRGVmYXVsdHNBc3NpZ25JbiksXG4gICAgICBpbXBvcnRzS2V5cyA9IGtleXMoaW1wb3J0cyksXG4gICAgICBpbXBvcnRzVmFsdWVzID0gYmFzZVZhbHVlcyhpbXBvcnRzLCBpbXBvcnRzS2V5cyk7XG5cbiAgdmFyIGlzRXNjYXBpbmcsXG4gICAgICBpc0V2YWx1YXRpbmcsXG4gICAgICBpbmRleCA9IDAsXG4gICAgICBpbnRlcnBvbGF0ZSA9IG9wdGlvbnMuaW50ZXJwb2xhdGUgfHwgcmVOb01hdGNoLFxuICAgICAgc291cmNlID0gXCJfX3AgKz0gJ1wiO1xuXG4gIC8vIENvbXBpbGUgdGhlIHJlZ2V4cCB0byBtYXRjaCBlYWNoIGRlbGltaXRlci5cbiAgdmFyIHJlRGVsaW1pdGVycyA9IFJlZ0V4cChcbiAgICAob3B0aW9ucy5lc2NhcGUgfHwgcmVOb01hdGNoKS5zb3VyY2UgKyAnfCcgK1xuICAgIGludGVycG9sYXRlLnNvdXJjZSArICd8JyArXG4gICAgKGludGVycG9sYXRlID09PSByZUludGVycG9sYXRlID8gcmVFc1RlbXBsYXRlIDogcmVOb01hdGNoKS5zb3VyY2UgKyAnfCcgK1xuICAgIChvcHRpb25zLmV2YWx1YXRlIHx8IHJlTm9NYXRjaCkuc291cmNlICsgJ3wkJ1xuICAsICdnJyk7XG5cbiAgLy8gVXNlIGEgc291cmNlVVJMIGZvciBlYXNpZXIgZGVidWdnaW5nLlxuICAvLyBUaGUgc291cmNlVVJMIGdldHMgaW5qZWN0ZWQgaW50byB0aGUgc291cmNlIHRoYXQncyBldmFsLWVkLCBzbyBiZSBjYXJlZnVsXG4gIC8vIHdpdGggbG9va3VwIChpbiBjYXNlIG9mIGUuZy4gcHJvdG90eXBlIHBvbGx1dGlvbiksIGFuZCBzdHJpcCBuZXdsaW5lcyBpZiBhbnkuXG4gIC8vIEEgbmV3bGluZSB3b3VsZG4ndCBiZSBhIHZhbGlkIHNvdXJjZVVSTCBhbnl3YXksIGFuZCBpdCdkIGVuYWJsZSBjb2RlIGluamVjdGlvbi5cbiAgdmFyIHNvdXJjZVVSTCA9IGhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgJ3NvdXJjZVVSTCcpXG4gICAgPyAoJy8vIyBzb3VyY2VVUkw9JyArXG4gICAgICAgKG9wdGlvbnMuc291cmNlVVJMICsgJycpLnJlcGxhY2UoL1tcXHJcXG5dL2csICcgJykgK1xuICAgICAgICdcXG4nKVxuICAgIDogJyc7XG5cbiAgc3RyaW5nLnJlcGxhY2UocmVEZWxpbWl0ZXJzLCBmdW5jdGlvbihtYXRjaCwgZXNjYXBlVmFsdWUsIGludGVycG9sYXRlVmFsdWUsIGVzVGVtcGxhdGVWYWx1ZSwgZXZhbHVhdGVWYWx1ZSwgb2Zmc2V0KSB7XG4gICAgaW50ZXJwb2xhdGVWYWx1ZSB8fCAoaW50ZXJwb2xhdGVWYWx1ZSA9IGVzVGVtcGxhdGVWYWx1ZSk7XG5cbiAgICAvLyBFc2NhcGUgY2hhcmFjdGVycyB0aGF0IGNhbid0IGJlIGluY2x1ZGVkIGluIHN0cmluZyBsaXRlcmFscy5cbiAgICBzb3VyY2UgKz0gc3RyaW5nLnNsaWNlKGluZGV4LCBvZmZzZXQpLnJlcGxhY2UocmVVbmVzY2FwZWRTdHJpbmcsIGVzY2FwZVN0cmluZ0NoYXIpO1xuXG4gICAgLy8gUmVwbGFjZSBkZWxpbWl0ZXJzIHdpdGggc25pcHBldHMuXG4gICAgaWYgKGVzY2FwZVZhbHVlKSB7XG4gICAgICBpc0VzY2FwaW5nID0gdHJ1ZTtcbiAgICAgIHNvdXJjZSArPSBcIicgK1xcbl9fZShcIiArIGVzY2FwZVZhbHVlICsgXCIpICtcXG4nXCI7XG4gICAgfVxuICAgIGlmIChldmFsdWF0ZVZhbHVlKSB7XG4gICAgICBpc0V2YWx1YXRpbmcgPSB0cnVlO1xuICAgICAgc291cmNlICs9IFwiJztcXG5cIiArIGV2YWx1YXRlVmFsdWUgKyBcIjtcXG5fX3AgKz0gJ1wiO1xuICAgIH1cbiAgICBpZiAoaW50ZXJwb2xhdGVWYWx1ZSkge1xuICAgICAgc291cmNlICs9IFwiJyArXFxuKChfX3QgPSAoXCIgKyBpbnRlcnBvbGF0ZVZhbHVlICsgXCIpKSA9PSBudWxsID8gJycgOiBfX3QpICtcXG4nXCI7XG4gICAgfVxuICAgIGluZGV4ID0gb2Zmc2V0ICsgbWF0Y2gubGVuZ3RoO1xuXG4gICAgLy8gVGhlIEpTIGVuZ2luZSBlbWJlZGRlZCBpbiBBZG9iZSBwcm9kdWN0cyBuZWVkcyBgbWF0Y2hgIHJldHVybmVkIGluXG4gICAgLy8gb3JkZXIgdG8gcHJvZHVjZSB0aGUgY29ycmVjdCBgb2Zmc2V0YCB2YWx1ZS5cbiAgICByZXR1cm4gbWF0Y2g7XG4gIH0pO1xuXG4gIHNvdXJjZSArPSBcIic7XFxuXCI7XG5cbiAgLy8gSWYgYHZhcmlhYmxlYCBpcyBub3Qgc3BlY2lmaWVkIHdyYXAgYSB3aXRoLXN0YXRlbWVudCBhcm91bmQgdGhlIGdlbmVyYXRlZFxuICAvLyBjb2RlIHRvIGFkZCB0aGUgZGF0YSBvYmplY3QgdG8gdGhlIHRvcCBvZiB0aGUgc2NvcGUgY2hhaW4uXG4gIC8vIExpa2Ugd2l0aCBzb3VyY2VVUkwsIHdlIHRha2UgY2FyZSB0byBub3QgY2hlY2sgdGhlIG9wdGlvbidzIHByb3RvdHlwZSxcbiAgLy8gYXMgdGhpcyBjb25maWd1cmF0aW9uIGlzIGEgY29kZSBpbmplY3Rpb24gdmVjdG9yLlxuICB2YXIgdmFyaWFibGUgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9wdGlvbnMsICd2YXJpYWJsZScpICYmIG9wdGlvbnMudmFyaWFibGU7XG4gIGlmICghdmFyaWFibGUpIHtcbiAgICBzb3VyY2UgPSAnd2l0aCAob2JqKSB7XFxuJyArIHNvdXJjZSArICdcXG59XFxuJztcbiAgfVxuICAvLyBDbGVhbnVwIGNvZGUgYnkgc3RyaXBwaW5nIGVtcHR5IHN0cmluZ3MuXG4gIHNvdXJjZSA9IChpc0V2YWx1YXRpbmcgPyBzb3VyY2UucmVwbGFjZShyZUVtcHR5U3RyaW5nTGVhZGluZywgJycpIDogc291cmNlKVxuICAgIC5yZXBsYWNlKHJlRW1wdHlTdHJpbmdNaWRkbGUsICckMScpXG4gICAgLnJlcGxhY2UocmVFbXB0eVN0cmluZ1RyYWlsaW5nLCAnJDE7Jyk7XG5cbiAgLy8gRnJhbWUgY29kZSBhcyB0aGUgZnVuY3Rpb24gYm9keS5cbiAgc291cmNlID0gJ2Z1bmN0aW9uKCcgKyAodmFyaWFibGUgfHwgJ29iaicpICsgJykge1xcbicgK1xuICAgICh2YXJpYWJsZVxuICAgICAgPyAnJ1xuICAgICAgOiAnb2JqIHx8IChvYmogPSB7fSk7XFxuJ1xuICAgICkgK1xuICAgIFwidmFyIF9fdCwgX19wID0gJydcIiArXG4gICAgKGlzRXNjYXBpbmdcbiAgICAgICA/ICcsIF9fZSA9IF8uZXNjYXBlJ1xuICAgICAgIDogJydcbiAgICApICtcbiAgICAoaXNFdmFsdWF0aW5nXG4gICAgICA/ICcsIF9faiA9IEFycmF5LnByb3RvdHlwZS5qb2luO1xcbicgK1xuICAgICAgICBcImZ1bmN0aW9uIHByaW50KCkgeyBfX3AgKz0gX19qLmNhbGwoYXJndW1lbnRzLCAnJykgfVxcblwiXG4gICAgICA6ICc7XFxuJ1xuICAgICkgK1xuICAgIHNvdXJjZSArXG4gICAgJ3JldHVybiBfX3BcXG59JztcblxuICB2YXIgcmVzdWx0ID0gYXR0ZW1wdChmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gRnVuY3Rpb24oaW1wb3J0c0tleXMsIHNvdXJjZVVSTCArICdyZXR1cm4gJyArIHNvdXJjZSlcbiAgICAgIC5hcHBseSh1bmRlZmluZWQsIGltcG9ydHNWYWx1ZXMpO1xuICB9KTtcblxuICAvLyBQcm92aWRlIHRoZSBjb21waWxlZCBmdW5jdGlvbidzIHNvdXJjZSBieSBpdHMgYHRvU3RyaW5nYCBtZXRob2Qgb3JcbiAgLy8gdGhlIGBzb3VyY2VgIHByb3BlcnR5IGFzIGEgY29udmVuaWVuY2UgZm9yIGlubGluaW5nIGNvbXBpbGVkIHRlbXBsYXRlcy5cbiAgcmVzdWx0LnNvdXJjZSA9IHNvdXJjZTtcbiAgaWYgKGlzRXJyb3IocmVzdWx0KSkge1xuICAgIHRocm93IHJlc3VsdDtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCB0ZW1wbGF0ZTtcbiIsImltcG9ydCBlc2NhcGUgZnJvbSAnLi9lc2NhcGUuanMnO1xuaW1wb3J0IHJlRXNjYXBlIGZyb20gJy4vX3JlRXNjYXBlLmpzJztcbmltcG9ydCByZUV2YWx1YXRlIGZyb20gJy4vX3JlRXZhbHVhdGUuanMnO1xuaW1wb3J0IHJlSW50ZXJwb2xhdGUgZnJvbSAnLi9fcmVJbnRlcnBvbGF0ZS5qcyc7XG5cbi8qKlxuICogQnkgZGVmYXVsdCwgdGhlIHRlbXBsYXRlIGRlbGltaXRlcnMgdXNlZCBieSBsb2Rhc2ggYXJlIGxpa2UgdGhvc2UgaW5cbiAqIGVtYmVkZGVkIFJ1YnkgKEVSQikgYXMgd2VsbCBhcyBFUzIwMTUgdGVtcGxhdGUgc3RyaW5ncy4gQ2hhbmdlIHRoZVxuICogZm9sbG93aW5nIHRlbXBsYXRlIHNldHRpbmdzIHRvIHVzZSBhbHRlcm5hdGl2ZSBkZWxpbWl0ZXJzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAdHlwZSB7T2JqZWN0fVxuICovXG52YXIgdGVtcGxhdGVTZXR0aW5ncyA9IHtcblxuICAvKipcbiAgICogVXNlZCB0byBkZXRlY3QgYGRhdGFgIHByb3BlcnR5IHZhbHVlcyB0byBiZSBIVE1MLWVzY2FwZWQuXG4gICAqXG4gICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICogQHR5cGUge1JlZ0V4cH1cbiAgICovXG4gICdlc2NhcGUnOiByZUVzY2FwZSxcblxuICAvKipcbiAgICogVXNlZCB0byBkZXRlY3QgY29kZSB0byBiZSBldmFsdWF0ZWQuXG4gICAqXG4gICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICogQHR5cGUge1JlZ0V4cH1cbiAgICovXG4gICdldmFsdWF0ZSc6IHJlRXZhbHVhdGUsXG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gZGV0ZWN0IGBkYXRhYCBwcm9wZXJ0eSB2YWx1ZXMgdG8gaW5qZWN0LlxuICAgKlxuICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAqIEB0eXBlIHtSZWdFeHB9XG4gICAqL1xuICAnaW50ZXJwb2xhdGUnOiByZUludGVycG9sYXRlLFxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHJlZmVyZW5jZSB0aGUgZGF0YSBvYmplY3QgaW4gdGhlIHRlbXBsYXRlIHRleHQuXG4gICAqXG4gICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gICd2YXJpYWJsZSc6ICcnLFxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGltcG9ydCB2YXJpYWJsZXMgaW50byB0aGUgY29tcGlsZWQgdGVtcGxhdGUuXG4gICAqXG4gICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gICdpbXBvcnRzJzoge1xuXG4gICAgLyoqXG4gICAgICogQSByZWZlcmVuY2UgdG8gdGhlIGBsb2Rhc2hgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5ncy5pbXBvcnRzXG4gICAgICogQHR5cGUge0Z1bmN0aW9ufVxuICAgICAqL1xuICAgICdfJzogeyAnZXNjYXBlJzogZXNjYXBlIH1cbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgdGVtcGxhdGVTZXR0aW5ncztcbiIsImltcG9ydCBiYXNlVG9TdHJpbmcgZnJvbSAnLi9fYmFzZVRvU3RyaW5nLmpzJztcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nLiBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgZm9yIGBudWxsYFxuICogYW5kIGB1bmRlZmluZWRgIHZhbHVlcy4gVGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvU3RyaW5nKG51bGwpO1xuICogLy8gPT4gJydcbiAqXG4gKiBfLnRvU3RyaW5nKC0wKTtcbiAqIC8vID0+ICctMCdcbiAqXG4gKiBfLnRvU3RyaW5nKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiAnMSwyLDMnXG4gKi9cbmZ1bmN0aW9uIHRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJycgOiBiYXNlVG9TdHJpbmcodmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB0b1N0cmluZztcbiIsIm1vZHVsZS5leHBvcnRzID0gXCIvKipcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAqIEdlbmVyaWMgU3R5bGVzXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4qL1xcbmFnLWdyaWQsIGFnLWdyaWQtYW5ndWxhciwgYWctZ3JpZC1uZzIsIGFnLWdyaWQtcG9seW1lciwgYWctZ3JpZC1hdXJlbGlhIHtcXG4gIGRpc3BsYXk6IGJsb2NrOyB9XFxuXFxuLmFnLWhpZGRlbiB7XFxuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cXG5cXG4uYWctaW52aXNpYmxlIHtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50OyB9XFxuXFxuLmFnLWZhZGVkIHtcXG4gIG9wYWNpdHk6IDAuMzsgfVxcblxcbi5hZy13aWR0aC1oYWxmIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIHdpZHRoOiA1MCUgIWltcG9ydGFudDsgfVxcblxcbi5hZy11bnNlbGVjdGFibGUge1xcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50O1xcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50O1xcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lICFpbXBvcnRhbnQ7XFxuICB1c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50OyB9XFxuXFxuLmFnLXNlbGVjdGFibGUge1xcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogdGV4dCAhaW1wb3J0YW50O1xcbiAgLW1vei11c2VyLXNlbGVjdDogdGV4dCAhaW1wb3J0YW50O1xcbiAgLW1zLXVzZXItc2VsZWN0OiB0ZXh0ICFpbXBvcnRhbnQ7XFxuICB1c2VyLXNlbGVjdDogdGV4dCAhaW1wb3J0YW50OyB9XFxuXFxuLmFnLXNlbGVjdC1hZ2ctZnVuYy1wb3B1cCB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7IH1cXG5cXG4uYWctaW5wdXQtd3JhcHBlciB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAtbXMtZmxleDogMSAxIGF1dG87XFxuICBmbGV4OiAxIDEgYXV0bztcXG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBvdmVyZmxvdzogaGlkZGVuOyB9XFxuXFxuLmFnLXNoYWtlLWxlZnQtdG8tcmlnaHQge1xcbiAgLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOiBhbHRlcm5hdGU7XFxuICBhbmltYXRpb24tZGlyZWN0aW9uOiBhbHRlcm5hdGU7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMC4ycztcXG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMC4ycztcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XFxuICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGFnLXNoYWtlLWxlZnQtdG8tcmlnaHQ7XFxuICBhbmltYXRpb24tbmFtZTogYWctc2hha2UtbGVmdC10by1yaWdodDsgfVxcblxcbkAtd2Via2l0LWtleWZyYW1lcyBhZy1zaGFrZS1sZWZ0LXRvLXJpZ2h0IHtcXG4gIGZyb20ge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDZweDtcXG4gICAgcGFkZGluZy1yaWdodDogMnB4OyB9XFxuICB0byB7XFxuICAgIHBhZGRpbmctbGVmdDogMnB4O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA2cHg7IH0gfVxcblxcbkBrZXlmcmFtZXMgYWctc2hha2UtbGVmdC10by1yaWdodCB7XFxuICBmcm9tIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA2cHg7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDJweDsgfVxcbiAgdG8ge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDJweDtcXG4gICAgcGFkZGluZy1yaWdodDogNnB4OyB9IH1cXG5cXG4uYWctcm9vdC13cmFwcGVyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG4gIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxcbiAgLmFnLXJvb3Qtd3JhcHBlci5hZy1sYXlvdXQtbm9ybWFsIHtcXG4gICAgaGVpZ2h0OiAxMDAlOyB9XFxuICAuYWctcm9vdC13cmFwcGVyIC5hZy13YXRlcm1hcmsge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGJvdHRvbTogMTBweDtcXG4gICAgcmlnaHQ6IDI1cHg7XFxuICAgIG9wYWNpdHk6IDAuNTtcXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDFzIGVhc2Utb3V0IDNzO1xcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDFzIGVhc2Utb3V0IDNzOyB9XFxuICAgIC5hZy1yb290LXdyYXBwZXIgLmFnLXdhdGVybWFyazpiZWZvcmUge1xcbiAgICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NEtQSE4yWnlCM2FXUjBhRDBpTkRrMGNIZ2lJR2hsYVdkb2REMGlNak01Y0hnaUlIWnBaWGRDYjNnOUlqQWdNQ0EwT1RRZ01qTTVJaUIyWlhKemFXOXVQU0l4TGpFaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02ZUd4cGJtczlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1RrdmVHeHBibXNpUGdvZ0lDQWdQQ0V0TFNCSFpXNWxjbUYwYjNJNklGTnJaWFJqYUNBME55NHhJQ2cwTlRReU1pa2dMU0JvZEhSd09pOHZkM2QzTG1KdmFHVnRhV0Z1WTI5a2FXNW5MbU52YlM5emEyVjBZMmdnTFMwK0NpQWdJQ0E4ZEdsMGJHVStURzluYnp3dmRHbDBiR1UrQ2lBZ0lDQThaR1Z6WXo1RGNtVmhkR1ZrSUhkcGRHZ2dVMnRsZEdOb0xqd3ZaR1Z6WXo0S0lDQWdJRHhrWldaelBnb2dJQ0FnSUNBZ0lEeHdZWFJvSUdROUlrMHdMall4TWpnME9Ua3pNU3d4TURnZ1REQXVOakV5T0RRNU9UTXhMRFkzTGpRMU9UWXpOelFnVERBdU5qRXlPRFE1T1RNeExEWTNMalExT1RZek56UWdRekF1TmpFeU9EUTVPVE14TERZeUxqRXdNRFkxTXpZZ015NDBOekU0TXpNM09DdzFOeTR4TkRnM05EZ3pJRGd1TVRFeU9EUTVPVE1zTlRRdU5EWTVNalUyTkNCTU9UZ3VNekEyTkRJMUxESXVNemsxT1RjeE5UY2dURGs0TGpNd05qUXlOU3d5TGpNNU5UazNNVFUzSUVNeE1ESXVPVFEzTkRReExDMHdMakk0TXpVeU1ETTFPQ0F4TURndU5qWTFOREE1TEMwd0xqSTRNelV5TURNMU9DQXhNVE11TXpBMk5ESTFMREl1TXprMU9UY3hOVGNnVERFeE15NHpNRFkwTWpVc01pNHpPVFU1TnpFMU55Qk1NakF6TGpVc05UUXVORFk1TWpVMk5DQk1NakF6TGpVc05UUXVORFk1TWpVMk5DQkRNakE0TGpFME1UQXhOaXcxTnk0eE5EZzNORGd6SURJeE1TdzJNaTR4TURBMk5UTTJJREl4TVN3Mk55NDBOVGsyTXpjMElFd3lNVEVzTVRNNElFd3hPREVzTVRNNElFd3hPREF1T1RrM01EUXhMRGt6TGprNU9UazVPVGdnVERFNE1DNDVPVFl3TXpJc09UTXVPVGs1T1RrNU9TQkRNVGd3TGprNU5UUTNOU3c0TlM0M01UWXhNakkySURFM05DNHlOems1TURrc056a3VNREF4TURBNE55QXhOalV1T1RrMk1ETXlMRGM1TGpBd01UQXdPRGNnVERFeU1pdzNPQzQ1T1RrNU9UazVJRU14TVRNdU56RTFOekk1TERjNExqazVPVGs1T1RrZ01UQTNMRGcxTGpjeE5UY3lPRFlnTVRBM0xEa3pMams1T1RrNU9Ua2dUREV3Tnl3eE16WXVNREUxTmpJeklFd3hNRGNzTVRNMkxqQXhOVFl5TXlCRE1UQTNMREUwTkM0eU9UazRPVFVnTVRFekxqY3hOVGN5T1N3eE5URXVNREUxTmpJeklERXlNaXd4TlRFdU1ERTFOakl6SUV3eE5qZ3NNVFV4TGpBeE5UWXlNeUJNTVRZNExERTJNeUJETVRZNExERTJOQzQyTlRZNE5UUWdNVFkyTGpZMU5qZzFOQ3d4TmpZZ01UWTFMREUyTmlCTU1USXdMREUyTmlCTU1USXdMREUzT1NCTU1UWTFMams1TmpBek1pd3hOemtnVERFMk5TNDVPVFl3TXpJc01UYzRMams1TnpnM055QkRNVGMwTGpJM09UUTNOQ3d4TnpndU9UazNPRGMzSURFNE1DNDVPVFE0Tml3eE56SXVNamd6TkRReUlERTRNQzQ1T1RZd016SXNNVFkwSUV3eE9ERXNNVFV3TGprMk1EVTFOQ0JNTWpFeExERTFNQzQ1TmpBMU5UUWdUREl4TVN3eE56RXVOakEyTWpBM0lFd3lNVEVzTVRjeExqWXdOakl3TnlCRE1qRXhMREUzTmk0NU5qVXhPVEVnTWpBNExqRTBNVEF4Tml3eE9ERXVPVEUzTURrMklESXdNeTQxTERFNE5DNDFPVFkxT0RnZ1RERXhNeTR6TURZME1qVXNNak0yTGpZMk9UZzNNeUJNTVRFekxqTXdOalF5TlN3eU16WXVOalk1T0RjeklFTXhNRGd1TmpZMU5EQTVMREl6T1M0ek5Ea3pOalVnTVRBeUxqazBOelEwTVN3eU16a3VNelE1TXpZMUlEazRMak13TmpReU5Td3lNell1TmpZNU9EY3pJRXc0TGpFeE1qZzBPVGt6TERFNE5DNDFPVFkxT0RnZ1REZ3VNVEV5T0RRNU9UTXNNVGcwTGpVNU5qVTRPQ0JETXk0ME56RTRNek0zT0N3eE9ERXVPVEUzTURrMklEQXVOakV5T0RRNU9UTXhMREUzTmk0NU5qVXhPVEVnTUM0Mk1USTRORGs1TXpFc01UY3hMall3TmpJd055Qk1NQzQyTVRJNE5EazVNekVzTVRJeElFd3lOeXd4TWpFZ1RESTNMREV6TmlCRE1qY3NNVFEwTGpJNE5ESTNNU0F6TXk0M01UVTNNamczTERFMU1TQTBNaXd4TlRFZ1REUXlMREUxTVNCTU1UQXdMREUxTVNCTU1UQXdMRGswSUVNeE1EQXNPRFV1TnpFMU56STRPQ0E1TXk0eU9EUXlOekV5TERjNUlEZzFMRGM1SUV3eU55dzNPU0JNTWpjc09USWdURGcwTERreUlFTTROUzQyTlRZNE5UUXlMRGt5SURnM0xEa3pMak0wTXpFME5UZ2dPRGNzT1RVZ1REZzNMRGsxSUV3NE55d3hNRGdnVERBdU5qRXlPRFE1T1RNeExERXdPQ0JhSWlCcFpEMGljR0YwYUMweElqNDhMM0JoZEdnK0NpQWdJQ0E4TDJSbFpuTStDaUFnSUNBOFp5QnBaRDBpVTNsdFltOXNjeUlnYzNSeWIydGxQU0p1YjI1bElpQnpkSEp2YTJVdGQybGtkR2c5SWpFaUlHWnBiR3c5SW01dmJtVWlJR1pwYkd3dGNuVnNaVDBpWlhabGJtOWtaQ0krQ2lBZ0lDQWdJQ0FnUEdjZ2FXUTlJa3h2WjI4aVBnb2dJQ0FnSUNBZ0lDQWdJQ0E4Y0dGMGFDQmtQU0pOTkRjM0xEVTFJRXcwT1RRc05UVWdURFE1TkN3eE5URWdURFF6TlN3eE5URWdRelF5Tmk0M01UVTNNamtzTVRVeElEUXlNQ3d4TkRRdU1qZzBNamN4SURReU1Dd3hNellnVERReU1DdzVOaUJETkRJd0xEZzNMamN4TlRjeU9EZ2dOREkyTGpjeE5UY3lPU3c0TVNBME16VXNPREVnVERRek5TdzRNU0JNTkRjM0xEZ3hJRXcwTnpjc05UVWdXaUJOTkRRd0xEazRJRU0wTXpndU16UXpNVFEyTERrNElEUXpOeXc1T1M0ek5ETXhORFU0SURRek55d3hNREVnVERRek55d3hNekVnUXpRek55d3hNekl1TmpVMk9EVTBJRFF6T0M0ek5ETXhORFlzTVRNMElEUTBNQ3d4TXpRZ1REUTNOeXd4TXpRZ1REUTNOeXc1T0NCTU5EUXdMRGs0SUZvaUlHbGtQU0prSWlCbWFXeHNQU0lqUmtaR1JrWkdJajQ4TDNCaGRHZytDaUFnSUNBZ0lDQWdJQ0FnSUR4bklHbGtQU0pwSWlCMGNtRnVjMlp2Y20wOUluUnlZVzV6YkdGMFpTZ3pPVFl1TURBd01EQXdMQ0ExTlM0d01EQXdNREFwSWo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4d2IyeDVaMjl1SUdsa1BTSlFZWFJvTFRZaUlHWnBiR3c5SWlOR1JrWkdSa1lpSUhCdmFXNTBjejBpTUNBeU5pQXhOeUF5TmlBeE55QTVOaUF3SURrMklqNDhMM0J2YkhsbmIyNCtDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjRzlzZVdkdmJpQnBaRDBpVUdGMGFDMDNJaUJtYVd4c1BTSWpSVEV4UmpJeUlpQndiMmx1ZEhNOUlqQWdNUzR4TXpZNE5qZ3pPR1V0TVRNZ01UY2dNUzR4TXpZNE5qZ3pPR1V0TVRNZ01UY2dNVGNnTUNBeE55SStQQzl3YjJ4NVoyOXVQZ29nSUNBZ0lDQWdJQ0FnSUNBOEwyYytDaUFnSUNBZ0lDQWdJQ0FnSUR4d1lYUm9JR1E5SWswek16RXNNVFV4SUV3ek5EZ3NNVFV4SUV3ek5EZ3NNVEF4SUV3ek5EZ3NNVEF4SUVNek5EZ3NPVGt1TXpRek1UUTFPQ0F6TkRrdU16UXpNVFEyTERrNElETTFNU3c1T0NCTU16ZzVMRGs0SUV3ek9Ea3NPREVnVERNME5pdzRNU0JNTXpRMkxEZ3hJRU16TXpjdU56RTFOekk1TERneElETXpNU3c0Tnk0M01UVTNNamc0SURNek1TdzVOaUJNTXpNeExERTFNU0JhSWlCcFpEMGljaUlnWm1sc2JEMGlJMFpHUmtaR1JpSStQQzl3WVhSb1Bnb2dJQ0FnSUNBZ0lDQWdJQ0E4Y0dGMGFDQmtQU0pOTXpJMExEZzJJRXd6TWpRc056WWdURE15TkN3M05pQkRNekkwTERZM0xqY3hOVGN5T0RnZ016RTNMakk0TkRJM01TdzJNU0F6TURrc05qRWdUREkwT1N3Mk1TQk1NalE1TERZeElFTXlOREF1TnpFMU56STVMRFl4SURJek5DdzJOeTQzTVRVM01qZzRJREl6TkN3M05pQk1Nak0wTERFek5pQk1Nak0wTERFek5pQkRNak0wTERFME5DNHlPRFF5TnpFZ01qUXdMamN4TlRjeU9Td3hOVEVnTWpRNUxERTFNU0JNTXpBNUxERTFNU0JNTXpBNUxERTFNU0JETXpFM0xqSTROREkzTVN3eE5URWdNekkwTERFME5DNHlPRFF5TnpFZ016STBMREV6TmlCTU16STBMREV3TUNCTU1qZzNMREV3TUNCTU1qZzNMREV4TnlCTU16QTNMREV4TnlCTU16QTNMREV6TVNCTU16QTNMREV6TVNCRE16QTNMREV6TWk0Mk5UWTROVFFnTXpBMUxqWTFOamcxTkN3eE16UWdNekEwTERFek5DQk1NalUwTERFek5DQk1NalUwTERFek5DQkRNalV5TGpNME16RTBOaXd4TXpRZ01qVXhMREV6TWk0Mk5UWTROVFFnTWpVeExERXpNU0JNTWpVeExEZ3hJRXd5TlRFc09ERWdRekkxTVN3M09TNHpORE14TkRVNElESTFNaTR6TkRNeE5EWXNOemdnTWpVMExEYzRJRXd6TURRc056Z2dURE13TkN3M09DQkRNekExTGpZMU5qZzFOQ3czT0NBek1EY3NOemt1TXpRek1UUTFPQ0F6TURjc09ERWdURE13Tnl3NE5pQk1NekkwTERnMklGb2lJR2xrUFNKSElpQm1hV3hzUFNJalJrWkdSa1pHSWo0OEwzQmhkR2crQ2lBZ0lDQWdJQ0FnSUNBZ0lEeG5JR2xrUFNKaFp5SStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThaeUJwWkQwaVEyOXRZbWx1WldRdFUyaGhjR1VpUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHRZWE5ySUdsa1BTSnRZWE5yTFRJaUlHWnBiR3c5SW5kb2FYUmxJajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSFZ6WlNCNGJHbHVhenBvY21WbVBTSWpjR0YwYUMweElqNDhMM1Z6WlQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThMMjFoYzJzK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSFZ6WlNCbWFXeHNQU0lqUlRFeFJqSXlJaUI0YkdsdWF6cG9jbVZtUFNJamNHRjBhQzB4SWo0OEwzVnpaVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHd2Wno0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpXTjBJR2xrUFNKbklpQm1hV3hzUFNJalJURXhSakl5SWlCNFBTSXhNakFpSUhrOUlqa3lJaUIzYVdSMGFEMGlORGdpSUdobGFXZG9kRDBpTkRZaUlISjRQU0l6SWo0OEwzSmxZM1ErQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y0dGMGFDQmtQU0pOTkRBc01USXhJRXc0Tnl3eE1qRWdURGczTERFek9DQk1ORE1zTVRNNElFdzBNeXd4TXpnZ1F6UXhMak0wTXpFME5UZ3NNVE00SURRd0xERXpOaTQyTlRZNE5UUWdOREFzTVRNMUlFdzBNQ3d4TWpFZ1dpSWdhV1E5SWtOdmJXSnBibVZrTFZOb1lYQmxJaUJtYVd4c1BTSWpSVEV4UmpJeUlqNDhMM0JoZEdnK0NpQWdJQ0FnSUNBZ0lDQWdJRHd2Wno0S0lDQWdJQ0FnSUNBOEwyYytDaUFnSUNBOEwyYytDand2YzNablBnPT0pO1xcbiAgICAgIC13ZWJraXQtZmlsdGVyOiBpbnZlcnQoNTAlKTtcXG4gICAgICBmaWx0ZXI6IGludmVydCg1MCUpO1xcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICAgICAgYmFja2dyb3VuZC1zaXplOiAxMTBweCA2MHB4O1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIGhlaWdodDogNjBweDtcXG4gICAgICB3aWR0aDogMTEwcHg7IH1cXG4gICAgLmFnLXJvb3Qtd3JhcHBlciAuYWctd2F0ZXJtYXJrIC5hZy13YXRlcm1hcmstdGV4dCB7XFxuICAgICAgb3BhY2l0eTogMC41O1xcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgICAgIGZvbnQtZmFtaWx5OiBJbXBhY3Q7XFxuICAgICAgZm9udC1zaXplOiAxOXB4OyB9XFxuXFxuLmFnLXJvb3Qtd3JhcHBlci1ib2R5IHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsO1xcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdztcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7IH1cXG4gIC5hZy1yb290LXdyYXBwZXItYm9keS5hZy1sYXlvdXQtbm9ybWFsIHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICBmbGV4OiAxIDEgYXV0bztcXG4gICAgaGVpZ2h0OiAwO1xcbiAgICBtaW4taGVpZ2h0OiAwOyB9XFxuXFxuLmFnLXJvb3Qge1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH1cXG4gIC5hZy1yb290LmFnLWxheW91dC1ub3JtYWwsIC5hZy1yb290LmFnLWxheW91dC1hdXRvLWhlaWdodCB7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgIC1tcy1mbGV4OiAxIDEgYXV0bztcXG4gICAgZmxleDogMSAxIGF1dG87XFxuICAgIHdpZHRoOiAwOyB9XFxuICAuYWctcm9vdC5hZy1sYXlvdXQtbm9ybWFsIHtcXG4gICAgaGVpZ2h0OiAxMDAlOyB9XFxuXFxuLyoqXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gKiBWaWV3cG9ydHNcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiovXFxuLmFnLWhlYWRlci12aWV3cG9ydCxcXG4uYWctZmxvYXRpbmctdG9wLXZpZXdwb3J0LFxcbi5hZy1ib2R5LXZpZXdwb3J0LFxcbi5hZy1waW5uZWQtbGVmdC1jb2xzLXZpZXdwb3J0LFxcbi5hZy1jZW50ZXItY29scy12aWV3cG9ydCxcXG4uYWctcGlubmVkLXJpZ2h0LWNvbHMtdmlld3BvcnQsXFxuLmFnLWZsb2F0aW5nLWJvdHRvbS12aWV3cG9ydCxcXG4uYWctYm9keS1ob3Jpem9udGFsLXNjcm9sbC12aWV3cG9ydCxcXG4uYWctdmlydHVhbC1saXN0LXZpZXdwb3J0IHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIG1pbi13aWR0aDogMHB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAtbXMtZmxleDogMSAxIGF1dG87XFxuICBmbGV4OiAxIDEgYXV0bzsgfVxcblxcbi5hZy1ib2R5LXZpZXdwb3J0IHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4OyB9XFxuICAuYWctYm9keS12aWV3cG9ydC5hZy1sYXlvdXQtbm9ybWFsIHtcXG4gICAgb3ZlcmZsb3cteTogYXV0bztcXG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOyB9XFxuICAuYWctYm9keS12aWV3cG9ydDpub3QoLmFnLWxheW91dC1wcmludCkuYWctZm9yY2UtdmVydGljYWwtc2Nyb2xsIHtcXG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsOyB9XFxuXFxuLmFnLXBpbm5lZC1sZWZ0LWNvbHMtdmlld3BvcnQsIC5hZy1waW5uZWQtcmlnaHQtY29scy12aWV3cG9ydCB7XFxuICAtd2Via2l0LWJveC1mbGV4OiAxMDAwO1xcbiAgLW1zLWZsZXgtcG9zaXRpdmU6IDEwMDA7XFxuICBmbGV4LWdyb3c6IDEwMDA7IH1cXG5cXG4uYWctY2VudGVyLWNvbHMtdmlld3BvcnQge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBvdmVyZmxvdy14OiBhdXRvOyB9XFxuXFxuLmFnLWJvZHktaG9yaXpvbnRhbC1zY3JvbGwtdmlld3BvcnQge1xcbiAgb3ZlcmZsb3cteDogc2Nyb2xsOyB9XFxuXFxuLmFnLXZpcnR1YWwtbGlzdC12aWV3cG9ydCB7XFxuICBvdmVyZmxvdzogYXV0bztcXG4gIHdpZHRoOiAxMDAlOyB9XFxuXFxuLyoqXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gKiBDb250YWluZXJzXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4qL1xcbi5hZy1oZWFkZXItY29udGFpbmVyLFxcbi5hZy1mbG9hdGluZy10b3AtY29udGFpbmVyLFxcbi5hZy1ib2R5LWNvbnRhaW5lcixcXG4uYWctcGlubmVkLXJpZ2h0LWNvbHMtY29udGFpbmVyLFxcbi5hZy1jZW50ZXItY29scy1jb250YWluZXIsXFxuLmFnLXBpbm5lZC1sZWZ0LWNvbHMtY29udGFpbmVyLFxcbi5hZy1mbG9hdGluZy1ib3R0b20tY29udGFpbmVyLFxcbi5hZy1ib2R5LWhvcml6b250YWwtc2Nyb2xsLWNvbnRhaW5lcixcXG4uYWctZnVsbC13aWR0aC1jb250YWluZXIsXFxuLmFnLWZsb2F0aW5nLWJvdHRvbS1mdWxsLXdpZHRoLWNvbnRhaW5lcixcXG4uYWctdmlydHVhbC1saXN0LWNvbnRhaW5lciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cXG5cXG4uYWctaGVhZGVyLWNvbnRhaW5lciwgLmFnLWZsb2F0aW5nLXRvcC1jb250YWluZXIsIC5hZy1mbG9hdGluZy1ib3R0b20tY29udGFpbmVyIHtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cXG5cXG4uYWctYm9keS12aWV3cG9ydCAuYWctY2VudGVyLWNvbHMtY2xpcHBlciB7XFxuICBtaW4taGVpZ2h0OiAxMDAlOyB9XFxuXFxuLmFnLWJvZHktdmlld3BvcnQuYWctbGF5b3V0LWF1dG8taGVpZ2h0IC5hZy1jZW50ZXItY29scy1jbGlwcGVyLCAuYWctYm9keS12aWV3cG9ydC5hZy1sYXlvdXQtYXV0by1oZWlnaHQgLmFnLWNlbnRlci1jb2xzLWNvbnRhaW5lciB7XFxuICBtaW4taGVpZ2h0OiA1MHB4OyB9XFxuXFxuLmFnLWJvZHktdmlld3BvcnQgLmFnLWNlbnRlci1jb2xzLWNvbnRhaW5lciB7XFxuICBkaXNwbGF5OiBibG9jazsgfVxcblxcbi5hZy1ib2R5LXZpZXdwb3J0LmFnLWxheW91dC1wcmludCB7XFxuICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgLW1zLWZsZXg6IG5vbmU7XFxuICBmbGV4OiBub25lOyB9XFxuICAuYWctYm9keS12aWV3cG9ydC5hZy1sYXlvdXQtcHJpbnQgLmFnLWNlbnRlci1jb2xzLWNsaXBwZXIge1xcbiAgICBtaW4td2lkdGg6IDEwMCU7IH1cXG5cXG4uYWctcGlubmVkLXJpZ2h0LWNvbHMtY29udGFpbmVyIHtcXG4gIGRpc3BsYXk6IGJsb2NrOyB9XFxuXFxuLmFnLWJvZHktaG9yaXpvbnRhbC1zY3JvbGwtY29udGFpbmVyIHtcXG4gIGhlaWdodDogMTAwJTsgfVxcblxcbi5hZy1mdWxsLXdpZHRoLWNvbnRhaW5lcixcXG4uYWctZmxvYXRpbmctdG9wLWZ1bGwtd2lkdGgtY29udGFpbmVyLFxcbi5hZy1mbG9hdGluZy1ib3R0b20tZnVsbC13aWR0aC1jb250YWluZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwcHg7XFxuICBsZWZ0OiAwcHg7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTsgfVxcblxcbi5hZy1mdWxsLXdpZHRoLWNvbnRhaW5lciB7XFxuICB3aWR0aDogMTAwJTsgfVxcblxcbi5hZy1mbG9hdGluZy1ib3R0b20tZnVsbC13aWR0aC1jb250YWluZXIsIC5hZy1mbG9hdGluZy10b3AtZnVsbC13aWR0aC1jb250YWluZXIge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAxMDAlOyB9XFxuXFxuLmFnLXZpcnR1YWwtbGlzdC1jb250YWluZXIge1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxcblxcbi8qKlxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICogU2Nyb2xsZXJzXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4qL1xcbi5hZy1jZW50ZXItY29scy1jbGlwcGVyIHtcXG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAtbXMtZmxleDogMTtcXG4gIGZsZXg6IDE7XFxuICBtaW4td2lkdGg6IDA7XFxuICBvdmVyZmxvdzogaGlkZGVuOyB9XFxuXFxuLmFnLWJvZHktaG9yaXpvbnRhbC1zY3JvbGwge1xcbiAgbWluLWhlaWdodDogMDtcXG4gIG1pbi13aWR0aDogMDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cXG5cXG4uYWctbGF5b3V0LXByaW50IC5hZy1ib2R5LWhvcml6b250YWwtc2Nyb2xsIHtcXG4gIGRpc3BsYXk6IG5vbmU7IH1cXG5cXG4uYWctaG9yaXpvbnRhbC1sZWZ0LXNwYWNlciwgLmFnLWhvcml6b250YWwtcmlnaHQtc3BhY2VyIHtcXG4gIGhlaWdodDogMTAwJTtcXG4gIG1pbi13aWR0aDogMDtcXG4gIC13ZWJraXQtYm94LWZsZXg6IDEwMDA7XFxuICAtbXMtZmxleC1wb3NpdGl2ZTogMTAwMDtcXG4gIGZsZXgtZ3JvdzogMTAwMDtcXG4gIG92ZXJmbG93LXg6IHNjcm9sbDsgfVxcbiAgLmFnLWhvcml6b250YWwtbGVmdC1zcGFjZXIuYWctc2Nyb2xsZXItY29ybmVyLCAuYWctaG9yaXpvbnRhbC1yaWdodC1zcGFjZXIuYWctc2Nyb2xsZXItY29ybmVyIHtcXG4gICAgb3ZlcmZsb3cteDogaGlkZGVuOyB9XFxuXFxuLyoqXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gKiBIZWFkZXJzXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4qL1xcbi5hZy1oZWFkZXIsIC5hZy1waW5uZWQtbGVmdC1oZWFkZXIsIC5hZy1waW5uZWQtcmlnaHQtaGVhZGVyIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIG92ZXJmbG93OiBoaWRkZW47IH1cXG4gIC5hZy1oZWFkZXIgLmFnLWhlYWRlci1jZWxsLXNvcnRhYmxlLCAuYWctcGlubmVkLWxlZnQtaGVhZGVyIC5hZy1oZWFkZXItY2VsbC1zb3J0YWJsZSwgLmFnLXBpbm5lZC1yaWdodC1oZWFkZXIgLmFnLWhlYWRlci1jZWxsLXNvcnRhYmxlIHtcXG4gICAgY3Vyc29yOiBwb2ludGVyOyB9XFxuXFxuLmFnLWhlYWRlciB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxcblxcbi5hZy1oZWFkZXItaWNvbiB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDsgfVxcblxcbi5hZy1waW5uZWQtbGVmdC1oZWFkZXIge1xcbiAgaGVpZ2h0OiAxMDAlOyB9XFxuXFxuLmFnLXBpbm5lZC1yaWdodC1oZWFkZXIge1xcbiAgaGVpZ2h0OiAxMDAlOyB9XFxuXFxuLmFnLWhlYWRlci1yb3cge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxcblxcbi5hZy1oZWFkZXItb3ZlcmxheSB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTsgfVxcblxcbi5hZy1oZWFkZXItY2VsbCB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7XFxuICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBsaW5lLWhlaWdodDogMS41OyB9XFxuXFxuLmFnLWhlYWRlci1ncm91cC1jZWxsLWxhYmVsLCAuYWctaGVhZGVyLWNlbGwtbGFiZWwge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgZmxleDogMSAxIGF1dG87XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuICBoZWlnaHQ6IDEwMCU7IH1cXG5cXG4uYWctaGVhZGVyLWNlbGwtbGFiZWwgLmFnLWhlYWRlci1jZWxsLXRleHQge1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxcblxcbi5hZy1udW1lcmljLWhlYWRlciAuYWctaGVhZGVyLWNlbGwtbGFiZWwge1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsO1xcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiByZXZlcnNlO1xcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsgfVxcblxcbi5hZy1oZWFkZXItZ3JvdXAtdGV4dCB7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XFxuXFxuLmFnLWhlYWRlci1jZWxsLXJlc2l6ZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB6LWluZGV4OiAxO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDRweDsgfVxcblxcbi5hZy1oZWFkZXItZXhwYW5kLWljb24ge1xcbiAgcGFkZGluZy1sZWZ0OiA0cHg7IH1cXG5cXG4uYWctaGVhZGVyLXNlbGVjdC1hbGwge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBsaW5lLWhlaWdodDogMTsgfVxcblxcbi8qKlxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICogQ29sdW1uc1xcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuKi9cXG4uYWctY29sdW1uLW1vdmluZyAuYWctY2VsbCB7XFxuICAtd2Via2l0LXRyYW5zaXRpb246IGxlZnQgMC4ycztcXG4gIHRyYW5zaXRpb246IGxlZnQgMC4yczsgfVxcblxcbi5hZy1jb2x1bW4tbW92aW5nIC5hZy1oZWFkZXItY2VsbCB7XFxuICAtd2Via2l0LXRyYW5zaXRpb246IGxlZnQgMC4ycztcXG4gIHRyYW5zaXRpb246IGxlZnQgMC4yczsgfVxcblxcbi5hZy1jb2x1bW4tbW92aW5nIC5hZy1oZWFkZXItZ3JvdXAtY2VsbCB7XFxuICAtd2Via2l0LXRyYW5zaXRpb246IGxlZnQgMC4ycywgd2lkdGggMC4ycztcXG4gIHRyYW5zaXRpb246IGxlZnQgMC4ycywgd2lkdGggMC4yczsgfVxcblxcbi8qKlxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICogQ29sdW1uIFBhbmVsXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4qL1xcbi5hZy1jb2x1bW4tcGFuZWwge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gIC1tcy1mbGV4OiAxIDEgYXV0bztcXG4gIGZsZXg6IDEgMSBhdXRvOyB9XFxuXFxuLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgLXdlYmtpdC1ib3gtZmxleDogNDtcXG4gIC1tcy1mbGV4LXBvc2l0aXZlOiA0O1xcbiAgZmxleC1ncm93OiA0O1xcbiAgLW1zLWZsZXgtbmVnYXRpdmU6IDE7XFxuICBmbGV4LXNocmluazogMTtcXG4gIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAwO1xcbiAgZmxleC1iYXNpczogMDsgfVxcbiAgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLXByaW1hcnktY29scy1oZWFkZXItcGFuZWwge1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgIC1tcy1mbGV4OiBub25lO1xcbiAgICBmbGV4OiBub25lOyB9XFxuICAgIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1wcmltYXJ5LWNvbHMtaGVhZGVyLXBhbmVsIC5hZy1jb2x1bW4tbmFtZS1maWx0ZXIge1xcbiAgICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICAgIGZsZXg6IDEgMSBhdXRvOyB9XFxuICAgIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1wcmltYXJ5LWNvbHMtaGVhZGVyLXBhbmVsIC5hZy1wcmltYXJ5LWNvbHMtZmlsdGVyLXdyYXBwZXIge1xcbiAgICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICAgIGZsZXg6IDEgMSBhdXRvOyB9XFxuICAgICAgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLXByaW1hcnktY29scy1oZWFkZXItcGFuZWwgLmFnLXByaW1hcnktY29scy1maWx0ZXItd3JhcHBlciBpbnB1dCB7XFxuICAgICAgICB3aWR0aDogMTAwJTsgfVxcbiAgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLXByaW1hcnktY29scy1saXN0LXBhbmVsIHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICBmbGV4OiAxIDEgYXV0bztcXG4gICAgb3ZlcmZsb3c6IGF1dG87IH1cXG5cXG4uYWctY29sdW1uLWRyb3Age1xcbiAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtYm94O1xcbiAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94O1xcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBvdmVyZmxvdzogYXV0bztcXG4gIHdpZHRoOiAxMDAlOyB9XFxuICAuYWctY29sdW1uLWRyb3AgLmFnLWNvbHVtbi1kcm9wLWxpc3Qge1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cXG4gICAgLmFnLWNvbHVtbi1kcm9wIC5hZy1jb2x1bW4tZHJvcC1saXN0IC5hZy1jb2x1bW4tZHJvcC1jZWxsIHtcXG4gICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyOyB9XFxuICAgICAgLmFnLWNvbHVtbi1kcm9wIC5hZy1jb2x1bW4tZHJvcC1saXN0IC5hZy1jb2x1bW4tZHJvcC1jZWxsIC5hZy1jb2x1bW4tZHJvcC1jZWxsLXRleHQge1xcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgICAgICAtbXMtZmxleDogMSAxIGF1dG87XFxuICAgICAgICBmbGV4OiAxIDEgYXV0bztcXG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxcblxcbi5hZy1jb2x1bW4tZHJvcC5hZy1jb2x1bW4tZHJvcC12ZXJ0aWNhbCB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XFxuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgLW1zLWZsZXg6IDEgMSAwcHg7XFxuICBmbGV4OiAxIDEgMDtcXG4gIC13ZWJraXQtYm94LWFsaWduOiBzdHJldGNoO1xcbiAgLW1zLWZsZXgtYWxpZ246IHN0cmV0Y2g7XFxuICBhbGlnbi1pdGVtczogc3RyZXRjaDsgfVxcbiAgLmFnLWNvbHVtbi1kcm9wLmFnLWNvbHVtbi1kcm9wLXZlcnRpY2FsID4gZGl2IHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyOyB9XFxuICAuYWctY29sdW1uLWRyb3AuYWctY29sdW1uLWRyb3AtdmVydGljYWwgLmFnLWNvbHVtbi1kcm9wLWxpc3Qge1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogc3RyZXRjaDtcXG4gICAgLW1zLWZsZXgtYWxpZ246IHN0cmV0Y2g7XFxuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTtcXG4gICAgZmxleC1ncm93OiAxO1xcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIG92ZXJmbG93LXg6IGF1dG87IH1cXG4gIC5hZy1jb2x1bW4tZHJvcC5hZy1jb2x1bW4tZHJvcC12ZXJ0aWNhbCAuYWctY29sdW1uLWRyb3AtZW1wdHktbWVzc2FnZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrOyB9XFxuXFxuLmFnLWNvbHVtbi1kcm9wLmFnLWNvbHVtbi1kcm9wLWhvcml6b250YWwge1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIG92ZXJmbG93OiBoaWRkZW47IH1cXG5cXG4vKipcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAqIFJvd3NcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiovXFxuLmFnLXJvdy1hbmltYXRpb24gLmFnLXJvdyB7XFxuICAtd2Via2l0LXRyYW5zaXRpb246IHRvcCAwLjRzLCBoZWlnaHQgMC40cywgYmFja2dyb3VuZC1jb2xvciAwLjFzLCBvcGFjaXR5IDAuMnMsIC13ZWJraXQtdHJhbnNmb3JtIDAuNHM7XFxuICB0cmFuc2l0aW9uOiB0b3AgMC40cywgaGVpZ2h0IDAuNHMsIGJhY2tncm91bmQtY29sb3IgMC4xcywgb3BhY2l0eSAwLjJzLCAtd2Via2l0LXRyYW5zZm9ybSAwLjRzO1xcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNHMsIHRvcCAwLjRzLCBoZWlnaHQgMC40cywgYmFja2dyb3VuZC1jb2xvciAwLjFzLCBvcGFjaXR5IDAuMnM7XFxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC40cywgdG9wIDAuNHMsIGhlaWdodCAwLjRzLCBiYWNrZ3JvdW5kLWNvbG9yIDAuMXMsIG9wYWNpdHkgMC4ycywgLXdlYmtpdC10cmFuc2Zvcm0gMC40czsgfVxcblxcbi5hZy1yb3ctbm8tYW5pbWF0aW9uIC5hZy1yb3cge1xcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMXM7XFxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMXM7IH1cXG5cXG4uYWctcm93IHtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICB3aWR0aDogMTAwJTsgfVxcblxcbi5hZy1yb3ctcG9zaXRpb24tYWJzb2x1dGUge1xcbiAgcG9zaXRpb246IGFic29sdXRlOyB9XFxuXFxuLmFnLXJvdy1wb3NpdGlvbi1yZWxhdGl2ZSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cXG5cXG4uYWctZnVsbC13aWR0aC1yb3cge1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHBvaW50ZXItZXZlbnRzOiBhbGw7IH1cXG5cXG4uYWctcm93LWlubGluZS1lZGl0aW5nIHtcXG4gIHotaW5kZXg6IDE7IH1cXG5cXG4uYWctcm93LWRyYWdnaW5nIHtcXG4gIHotaW5kZXg6IDI7IH1cXG5cXG4uYWctc3R1Yi1jZWxsIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICBhbGlnbi1pdGVtczogY2VudGVyOyB9XFxuXFxuLyoqXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gKiBDZWxsc1xcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuKi9cXG4uYWctY2VsbCB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XFxuXFxuLmFnLWNlbGwtd3JhcHBlciB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlOyB9XFxuICAuYWctY2VsbC13cmFwcGVyLmFnLXJvdy1ncm91cCB7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBzdGFydDtcXG4gICAgLW1zLWZsZXgtYWxpZ246IHN0YXJ0O1xcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgfVxcbiAgLmFnLWNlbGwtd3JhcHBlciAuYWctY2VsbC12YWx1ZSwgLmFnLWNlbGwtd3JhcHBlciAuYWctZ3JvdXAtdmFsdWUge1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgfVxcblxcbi5hZy1mdWxsLXdpZHRoLXJvdy5hZy1yb3ctZ3JvdXAgLmFnLWNlbGwtd3JhcHBlciB7XFxuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cXG5cXG4uYWctY2VsbC13aXRoLWhlaWdodCB7XFxuICBoZWlnaHQ6IDEwMCU7IH1cXG5cXG4uYWctZ3JvdXAtY2VsbC1lbnRpcmUtcm93IHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIGhlaWdodDogMTAwJTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICB3aWR0aDogMTAwJTsgfVxcblxcbi5hZy1mb290ZXItY2VsbC1lbnRpcmUtcm93IHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIGhlaWdodDogMTAwJTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICB3aWR0aDogMTAwJTsgfVxcblxcbi5hZy1jZWxsLWlubGluZS1lZGl0aW5nIHtcXG4gIHotaW5kZXg6IDE7IH1cXG4gIC5hZy1jZWxsLWlubGluZS1lZGl0aW5nIC5hZy1jZWxsLWVkaXQtaW5wdXQsIC5hZy1jZWxsLWlubGluZS1lZGl0aW5nIC5hZy1pbnB1dC13cmFwcGVyIHtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgbGluZS1oZWlnaHQ6IG5vcm1hbDsgfVxcblxcbi8qKlxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICogRmlsdGVyc1xcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuKi9cXG4uYWctc2V0LWZpbHRlci1pdGVtIHtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cXG5cXG4uYWctZmlsdGVyIC5hZy1maWx0ZXItY2hlY2tib3gge1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7IH1cXG5cXG4uYWctZmlsdGVyIC5hZy1maWx0ZXItYm9keS13cmFwcGVyIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG4gIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyB9XFxuXFxuLmFnLWZpbHRlciAuYWctZmlsdGVyLWZpbHRlciB7XFxuICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgZmxleDogMSAxIGF1dG87IH1cXG5cXG4vKipcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAqIEZsb2F0aW5nIEZpbHRlclxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuKi9cXG4uYWctZmxvYXRpbmctZmlsdGVyLWZ1bGwtYm9keSAuYWctcmVhY3QtY29udGFpbmVyLCAuYWctZmxvYXRpbmctZmlsdGVyLWJvZHkgLmFnLXJlYWN0LWNvbnRhaW5lciB7XFxuICBoZWlnaHQ6IDEwMCU7IH1cXG5cXG4uYWctZmxvYXRpbmctZmlsdGVyLWJvZHkge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgZmxleDogMSAxIGF1dG87XFxuICBoZWlnaHQ6IDEwMCU7IH1cXG4gIC5hZy1mbG9hdGluZy1maWx0ZXItYm9keSBpbnB1dCB7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICBmbGV4OiAxIDEgYXV0bztcXG4gICAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gMXB4KTsgfVxcblxcbi5hZy1mbG9hdGluZy1maWx0ZXItZnVsbC1ib2R5IHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDEwMCU7IH1cXG4gIC5hZy1mbG9hdGluZy1maWx0ZXItZnVsbC1ib2R5ID4gZGl2IHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICBmbGV4OiAxIDEgYXV0bzsgfVxcbiAgLmFnLWZsb2F0aW5nLWZpbHRlci1mdWxsLWJvZHkgaW5wdXQge1xcbiAgICBtYXJnaW46IDA7XFxuICAgIHdpZHRoOiAxMDAlOyB9XFxuICAuYWctZmxvYXRpbmctZmlsdGVyLWZ1bGwtYm9keSBpbnB1dFt0eXBlPVxcXCJyYW5nZVxcXCJdIHtcXG4gICAgaGVpZ2h0OiAxMDAlOyB9XFxuXFxuLmFnLWZsb2F0aW5nLWZpbHRlciB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7IH1cXG5cXG4uYWctZmxvYXRpbmctZmlsdGVyLWlucHV0IHtcXG4gIHdpZHRoOiAxMDAlOyB9XFxuXFxuLmFnLWZsb2F0aW5nLWZpbHRlci1pbnB1dDotbW96LXJlYWQtb25seSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOyB9XFxuXFxuLmFnLWZsb2F0aW5nLWZpbHRlci1pbnB1dDpyZWFkLW9ubHkge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsgfVxcblxcbi5hZy1mbG9hdGluZy1maWx0ZXItbWVudSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcXG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcXG4gIHVzZXItc2VsZWN0OiBub25lOyB9XFxuXFxuLmFnLWZsb2F0aW5nLWZpbHRlci1idXR0b24ge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgLW1zLWZsZXg6IG5vbmU7XFxuICBmbGV4OiBub25lOyB9XFxuXFxuLyoqXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gKiBEcmFnICYgRHJvcFxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuKi9cXG4uYWctZG5kLWdob3N0IHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgYmFja2dyb3VuZDogI2U1ZTVlNTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrO1xcbiAgY3Vyc29yOiBtb3ZlO1xcbiAgZm9udC1mYW1pbHk6IFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XFxuICBmb250LXNpemU6IDE0cHg7XFxuICBsaW5lLWhlaWdodDogMS40O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHBhZGRpbmc6IDNweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcXG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIHotaW5kZXg6IDEwOyB9XFxuXFxuLmFnLWRuZC1naG9zdC1pY29uIHtcXG4gIHBhZGRpbmc6IDJweDsgfVxcblxcbi8qKlxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICogT3ZlcmxheVxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuKi9cXG4uYWctb3ZlcmxheSB7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBsZWZ0OiAwO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICB3aWR0aDogMTAwJTsgfVxcblxcbi5hZy1vdmVybGF5LXBhbmVsIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICB3aWR0aDogMTAwJTsgfVxcblxcbi5hZy1vdmVybGF5LXdyYXBwZXIge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgLW1zLWZsZXg6IG5vbmU7XFxuICBmbGV4OiBub25lO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XFxuICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjsgfVxcbiAgLmFnLW92ZXJsYXktd3JhcHBlci5hZy1vdmVybGF5LWxvYWRpbmctd3JhcHBlciB7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7IH1cXG5cXG4uYWctb3ZlcmxheS1uby1yb3dzLXdyYXBwZXIuYWctbGF5b3V0LWF1dG8taGVpZ2h0IHtcXG4gIHBhZGRpbmctdG9wOiAzMHB4OyB9XFxuXFxuLyoqXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gKiBQb3B1cFxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuKi9cXG4uYWctcG9wdXAgPiBkaXYge1xcbiAgei1pbmRleDogNTsgfVxcblxcbi5hZy1wb3B1cC1iYWNrZHJvcCB7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBsZWZ0OiAwO1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgdG9wOiAwO1xcbiAgd2lkdGg6IDEwMCU7IH1cXG5cXG4uYWctcG9wdXAtZWRpdG9yIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICB6LWluZGV4OiAxOyB9XFxuXFxuLyoqXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gKiBWaXJ0dWFsIExpc3RzXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4qL1xcbi5hZy12aXJ0dWFsLWxpc3QtaXRlbSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB3aWR0aDogMTAwJTsgfVxcbiAgLmFnLXZpcnR1YWwtbGlzdC1pdGVtIHNwYW46ZW1wdHk6bm90KC5hZy1pY29uKSB7XFxuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgdHJhbnNwYXJlbnQ7IH1cXG5cXG4vKipcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAqIEZsb2F0aW5nIFRvcCBhbmQgQm90dG9tXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4qL1xcbi5hZy1mbG9hdGluZy10b3Age1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICB3aWR0aDogMTAwJTtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4OyB9XFxuXFxuLmFnLXBpbm5lZC1sZWZ0LWZsb2F0aW5nLXRvcCB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgbWluLXdpZHRoOiAwcHg7XFxuICAtd2Via2l0LWJveC1mbGV4OiAxMDAwO1xcbiAgLW1zLWZsZXgtcG9zaXRpdmU6IDEwMDA7XFxuICBmbGV4LWdyb3c6IDEwMDA7IH1cXG5cXG4uYWctcGlubmVkLXJpZ2h0LWZsb2F0aW5nLXRvcCB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgbWluLXdpZHRoOiAwcHg7XFxuICAtd2Via2l0LWJveC1mbGV4OiAxMDAwO1xcbiAgLW1zLWZsZXgtcG9zaXRpdmU6IDEwMDA7XFxuICBmbGV4LWdyb3c6IDEwMDA7IH1cXG5cXG4uYWctZmxvYXRpbmctYm90dG9tIHtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDsgfVxcblxcbi5hZy1waW5uZWQtbGVmdC1mbG9hdGluZy1ib3R0b20ge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG1pbi13aWR0aDogMHB4O1xcbiAgLXdlYmtpdC1ib3gtZmxleDogMTAwMDtcXG4gIC1tcy1mbGV4LXBvc2l0aXZlOiAxMDAwO1xcbiAgZmxleC1ncm93OiAxMDAwOyB9XFxuXFxuLmFnLXBpbm5lZC1yaWdodC1mbG9hdGluZy1ib3R0b20ge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG1pbi13aWR0aDogMHB4O1xcbiAgLXdlYmtpdC1ib3gtZmxleDogMTAwMDtcXG4gIC1tcy1mbGV4LXBvc2l0aXZlOiAxMDAwO1xcbiAgZmxleC1ncm93OiAxMDAwOyB9XFxuXFxuLyoqXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gKiBEaWFsb2dcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiovXFxuLmFnLWRpYWxvZywgLmFnLXBhbmVsIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG4gIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxcbiAgLmFnLWRpYWxvZyAuYWctdGl0bGUtYmFyLCAuYWctcGFuZWwgLmFnLXRpdGxlLWJhciB7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgLW1zLWZsZXg6IG5vbmU7XFxuICAgIGZsZXg6IG5vbmU7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGN1cnNvcjogZGVmYXVsdDsgfVxcbiAgICAuYWctZGlhbG9nIC5hZy10aXRsZS1iYXIgLmFnLXRpdGxlLWJhci10aXRsZSwgLmFnLXBhbmVsIC5hZy10aXRsZS1iYXIgLmFnLXRpdGxlLWJhci10aXRsZSB7XFxuICAgICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgICAtbXMtZmxleDogMSAxIGF1dG87XFxuICAgICAgZmxleDogMSAxIGF1dG87IH1cXG4gICAgLmFnLWRpYWxvZyAuYWctdGl0bGUtYmFyIC5hZy10aXRsZS1iYXItYnV0dG9ucywgLmFnLXBhbmVsIC5hZy10aXRsZS1iYXIgLmFnLXRpdGxlLWJhci1idXR0b25zIHtcXG4gICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgICBkaXNwbGF5OiBmbGV4OyB9XFxuICAgICAgLmFnLWRpYWxvZyAuYWctdGl0bGUtYmFyIC5hZy10aXRsZS1iYXItYnV0dG9ucyAuYWctYnV0dG9uLCAuYWctcGFuZWwgLmFnLXRpdGxlLWJhciAuYWctdGl0bGUtYmFyLWJ1dHRvbnMgLmFnLWJ1dHRvbiB7XFxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7IH1cXG4gIC5hZy1kaWFsb2cgLmFnLXBhbmVsLWNvbnRlbnQtd3JhcHBlciwgLmFnLXBhbmVsIC5hZy1wYW5lbC1jb250ZW50LXdyYXBwZXIge1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgIC1tcy1mbGV4OiAxIDEgYXV0bztcXG4gICAgZmxleDogMSAxIGF1dG87XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxcbiAgICAuYWctZGlhbG9nIC5hZy1wYW5lbC1jb250ZW50LXdyYXBwZXIgPiBkaXYsIC5hZy1wYW5lbCAuYWctcGFuZWwtY29udGVudC13cmFwcGVyID4gZGl2IHtcXG4gICAgICB3aWR0aDogMTAwJTtcXG4gICAgICBoZWlnaHQ6IDEwMCU7IH1cXG5cXG4uYWctZGlhbG9nIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTsgfVxcbiAgLmFnLWRpYWxvZyAuYWctcmVzaXplciB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICAgIHotaW5kZXg6IDE7IH1cXG4gICAgLmFnLWRpYWxvZyAuYWctcmVzaXplci5hZy1yZXNpemVyLXRvcExlZnQge1xcbiAgICAgIHRvcDogMDtcXG4gICAgICBsZWZ0OiAwO1xcbiAgICAgIGhlaWdodDogNXB4O1xcbiAgICAgIHdpZHRoOiA1cHg7XFxuICAgICAgY3Vyc29yOiBud3NlLXJlc2l6ZTsgfVxcbiAgICAuYWctZGlhbG9nIC5hZy1yZXNpemVyLmFnLXJlc2l6ZXItdG9wIHtcXG4gICAgICB0b3A6IDA7XFxuICAgICAgbGVmdDogNXB4O1xcbiAgICAgIHJpZ2h0OiA1cHg7XFxuICAgICAgaGVpZ2h0OiA1cHg7XFxuICAgICAgY3Vyc29yOiBucy1yZXNpemU7IH1cXG4gICAgLmFnLWRpYWxvZyAuYWctcmVzaXplci5hZy1yZXNpemVyLXRvcFJpZ2h0IHtcXG4gICAgICB0b3A6IDA7XFxuICAgICAgcmlnaHQ6IDA7XFxuICAgICAgaGVpZ2h0OiA1cHg7XFxuICAgICAgd2lkdGg6IDVweDtcXG4gICAgICBjdXJzb3I6IG5lc3ctcmVzaXplOyB9XFxuICAgIC5hZy1kaWFsb2cgLmFnLXJlc2l6ZXIuYWctcmVzaXplci1yaWdodCB7XFxuICAgICAgdG9wOiA1cHg7XFxuICAgICAgcmlnaHQ6IDA7XFxuICAgICAgYm90dG9tOiA1cHg7XFxuICAgICAgd2lkdGg6IDVweDtcXG4gICAgICBjdXJzb3I6IGV3LXJlc2l6ZTsgfVxcbiAgICAuYWctZGlhbG9nIC5hZy1yZXNpemVyLmFnLXJlc2l6ZXItYm90dG9tUmlnaHQge1xcbiAgICAgIGJvdHRvbTogMDtcXG4gICAgICByaWdodDogMDtcXG4gICAgICBoZWlnaHQ6IDVweDtcXG4gICAgICB3aWR0aDogNXB4O1xcbiAgICAgIGN1cnNvcjogbndzZS1yZXNpemU7IH1cXG4gICAgLmFnLWRpYWxvZyAuYWctcmVzaXplci5hZy1yZXNpemVyLWJvdHRvbSB7XFxuICAgICAgYm90dG9tOiAwO1xcbiAgICAgIGxlZnQ6IDVweDtcXG4gICAgICByaWdodDogNXB4O1xcbiAgICAgIGhlaWdodDogNXB4O1xcbiAgICAgIGN1cnNvcjogbnMtcmVzaXplOyB9XFxuICAgIC5hZy1kaWFsb2cgLmFnLXJlc2l6ZXIuYWctcmVzaXplci1ib3R0b21MZWZ0IHtcXG4gICAgICBib3R0b206IDA7XFxuICAgICAgbGVmdDogMDtcXG4gICAgICBoZWlnaHQ6IDVweDtcXG4gICAgICB3aWR0aDogNXB4O1xcbiAgICAgIGN1cnNvcjogbmVzdy1yZXNpemU7IH1cXG4gICAgLmFnLWRpYWxvZyAuYWctcmVzaXplci5hZy1yZXNpemVyLWxlZnQge1xcbiAgICAgIGxlZnQ6IDA7XFxuICAgICAgdG9wOiA1cHg7XFxuICAgICAgYm90dG9tOiA1cHg7XFxuICAgICAgd2lkdGg6IDVweDtcXG4gICAgICBjdXJzb3I6IGV3LXJlc2l6ZTsgfVxcbiAgLmFnLWRpYWxvZyAuYWctbWVzc2FnZS1ib3gge1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XFxuICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfVxcbiAgICAuYWctZGlhbG9nIC5hZy1tZXNzYWdlLWJveCAuYWctbWVzc2FnZS1ib3gtY29udGVudCB7XFxuICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgIC1tcy1mbGV4OiAxIDEgYXV0bztcXG4gICAgICBmbGV4OiAxIDEgYXV0bztcXG4gICAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XFxuICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyOyB9XFxuICAgIC5hZy1kaWFsb2cgLmFnLW1lc3NhZ2UtYm94IC5hZy1tZXNzYWdlLWJveC1idXR0b24tYmFyIHtcXG4gICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcXG4gICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH1cXG5cXG4vKipcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAqIFRvb2x0aXBcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiovXFxuLmFnLXRvb2x0aXAge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICB6LWluZGV4OiA5OTk5OTsgfVxcblxcbi5hZy1jaGFydC10b29sdGlwIHtcXG4gIGRpc3BsYXk6IHRhYmxlO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcXG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIHotaW5kZXg6IDk5OTk5O1xcbiAgZm9udDogMTJweCBWZXJkYW5hLCBzYW5zLXNlcmlmO1xcbiAgY29sb3I6IGJsYWNrO1xcbiAgYmFja2dyb3VuZDogI2Y0ZjRmNDtcXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcXG4gIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDFweCByZ2JhKDMsIDMsIDMsIDAuNyksIDAuNXZoIDAuNXZoIDF2aCByZ2JhKDMsIDMsIDMsIDAuMjUpO1xcbiAgYm94LXNoYWRvdzogMCAwIDFweCByZ2JhKDMsIDMsIDMsIDAuNyksIDAuNXZoIDAuNXZoIDF2aCByZ2JhKDMsIDMsIDMsIDAuMjUpO1xcbiAgb3BhY2l0eTogMDtcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjkpO1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjkpO1xcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiAwLjNzIGN1YmljLWJlemllcigwLjE5LCAxLCAwLjIyLCAxKTtcXG4gIHRyYW5zaXRpb246IDAuM3MgY3ViaWMtYmV6aWVyKDAuMTksIDEsIDAuMjIsIDEpO1xcbiAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5LCAtd2Via2l0LXRyYW5zZm9ybTtcXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IG9wYWNpdHksIC13ZWJraXQtdHJhbnNmb3JtO1xcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogb3BhY2l0eSwgdHJhbnNmb3JtO1xcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogb3BhY2l0eSwgdHJhbnNmb3JtLCAtd2Via2l0LXRyYW5zZm9ybTsgfVxcbiAgLmFnLWNoYXJ0LXRvb2x0aXAudmlzaWJsZSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfVxcbiAgLmFnLWNoYXJ0LXRvb2x0aXAgLnRpdGxlIHtcXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICAgIHBhZGRpbmc6IDdweDtcXG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNXB4O1xcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4O1xcbiAgICBjb2xvcjogd2hpdGU7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICM4ODg4ODg7IH1cXG4gIC5hZy1jaGFydC10b29sdGlwIC5jb250ZW50IHtcXG4gICAgcGFkZGluZzogN3B4OyB9XFxuXFxuLyoqXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gKiBBbmltYXRpb25zXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4qL1xcbi5hZy12YWx1ZS1zbGlkZS1vdXQge1xcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XFxuICBvcGFjaXR5OiAxO1xcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDNzLCBtYXJnaW4tcmlnaHQgM3M7XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDNzLCBtYXJnaW4tcmlnaHQgM3M7XFxuICAtd2Via2l0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XFxuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOyB9XFxuXFxuLmFnLXZhbHVlLXNsaWRlLW91dC1lbmQge1xcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xcbiAgb3BhY2l0eTogMDsgfVxcblxcbi5hZy1vcGFjaXR5LXplcm8ge1xcbiAgb3BhY2l0eTogMCAhaW1wb3J0YW50OyB9XFxuXFxuLyoqXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gKiBNZW51XFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4qL1xcbi5hZy1tZW51IHtcXG4gIG1heC1oZWlnaHQ6IDEwMCU7XFxuICBvdmVyZmxvdy15OiBhdXRvO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcXG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICB1c2VyLXNlbGVjdDogbm9uZTsgfVxcblxcbi5hZy1tZW51LWNvbHVtbi1zZWxlY3Qtd3JhcHBlciB7XFxuICBoZWlnaHQ6IDI2NXB4O1xcbiAgb3ZlcmZsb3c6IGF1dG87XFxuICB3aWR0aDogMjAwcHg7IH1cXG5cXG4uYWctbWVudS1saXN0IHtcXG4gIGRpc3BsYXk6IHRhYmxlOyB9XFxuXFxuLmFnLW1lbnUtb3B0aW9uLCAuYWctbWVudS1zZXBhcmF0b3Ige1xcbiAgZGlzcGxheTogdGFibGUtcm93OyB9XFxuICAuYWctbWVudS1vcHRpb24gPiBzcGFuLCAuYWctbWVudS1zZXBhcmF0b3IgPiBzcGFuIHtcXG4gICAgZGlzcGxheTogdGFibGUtY2VsbDtcXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxcblxcbi5hZy1tZW51LW9wdGlvbi10ZXh0IHtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cXG5cXG4uYWctbWVudS1jb2x1bW4tc2VsZWN0LXdyYXBwZXIgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwge1xcbiAgaGVpZ2h0OiAxMDAlOyB9XFxuXFxuLyoqXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gKiBSaWNoIFNlbGVjdFxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuKi9cXG4uYWctcmljaC1zZWxlY3Qge1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgb3V0bGluZTogbm9uZTsgfVxcbiAgLmFnLXJpY2gtc2VsZWN0IC5hZy1yaWNoLXNlbGVjdC12YWx1ZSB7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxcbiAgICAuYWctcmljaC1zZWxlY3QgLmFnLXJpY2gtc2VsZWN0LXZhbHVlID4gc3BhbiB7XFxuICAgICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgICAtbXMtZmxleDogMSAxIGF1dG87XFxuICAgICAgZmxleDogMSAxIGF1dG87IH1cXG4gICAgICAuYWctcmljaC1zZWxlY3QgLmFnLXJpY2gtc2VsZWN0LXZhbHVlID4gc3Bhbi5hZy1pY29uIHtcXG4gICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDI7XFxuICAgICAgICAtbXMtZmxleC1vcmRlcjogMTtcXG4gICAgICAgIG9yZGVyOiAxO1xcbiAgICAgICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgIC1tcy1mbGV4OiBub25lO1xcbiAgICAgICAgZmxleDogbm9uZTsgfVxcbiAgLmFnLXJpY2gtc2VsZWN0IC5hZy1yaWNoLXNlbGVjdC1saXN0IC5hZy12aXJ0dWFsLWxpc3QtaXRlbSB7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDsgfVxcbiAgICAuYWctcmljaC1zZWxlY3QgLmFnLXJpY2gtc2VsZWN0LWxpc3QgLmFnLXZpcnR1YWwtbGlzdC1pdGVtIC5hZy1yaWNoLXNlbGVjdC1yb3cge1xcbiAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgICAtbXMtZmxleDogMSAxIGF1dG87XFxuICAgICAgZmxleDogMSAxIGF1dG87XFxuICAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxcblxcbi8qKlxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICogUGFnaW5hdGlvblxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuKi9cXG4uYWctcGFnaW5nLXBhbmVsIHtcXG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtcGFjazogZW5kO1xcbiAgLW1zLWZsZXgtcGFjazogZW5kO1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgfVxcblxcbi5hZy1wYWdpbmctcGFnZS1zdW1tYXJ5LXBhbmVsIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICBhbGlnbi1pdGVtczogY2VudGVyOyB9XFxuICAuYWctcGFnaW5nLXBhZ2Utc3VtbWFyeS1wYW5lbCAuYWctZGlzYWJsZWQge1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsgfVxcbiAgLmFnLXBhZ2luZy1wYWdlLXN1bW1hcnktcGFuZWwgLmFnLXBhZ2luZy1idXR0b24ge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cXG4gICAgLmFnLXBhZ2luZy1wYWdlLXN1bW1hcnktcGFuZWwgLmFnLXBhZ2luZy1idXR0b24gYnV0dG9uIHtcXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7IH1cXG5cXG4vKipcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAqIFRvb2wgUGFuZWxcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiovXFxuLmFnLXRvb2wtcGFuZWwtd3JhcHBlciB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcXG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcXG4gIHVzZXItc2VsZWN0OiBub25lO1xcbiAgd2lkdGg6IDIwMHB4OyB9XFxuICAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1maWx0ZXItdG9vbHBhbmVsLWhlYWRlciB7XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICAgIGN1cnNvcjogcG9pbnRlcjsgfVxcblxcbi5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4sXFxuLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCB7XFxuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDtcXG4gIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7XFxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgLW1zLWZsZXgtd3JhcDogbm93cmFwO1xcbiAgZmxleC13cmFwOiBub3dyYXA7XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cXG4gIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4gLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbixcXG4gIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4gLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCxcXG4gIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4tZ3JvdXAgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbixcXG4gIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4tZ3JvdXAgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgIC1tcy1mbGV4OiAxIDEgYXV0bztcXG4gICAgZmxleDogMSAxIGF1dG87XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyB9XFxuXFxuLmFnLWNvbHVtbi1zZWxlY3QtY2hlY2tib3gge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7IH1cXG5cXG4uYWctdG9vbC1wYW5lbC1ob3Jpem9udGFsLXJlc2l6ZSB7XFxuICBjdXJzb3I6IGNvbC1yZXNpemU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICB3aWR0aDogNXB4O1xcbiAgei1pbmRleDogMTsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2wtcGFuZWwtaG9yaXpvbnRhbC1yZXNpemUge1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoM3B4KTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgzcHgpOyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbC1wYW5lbC1ob3Jpem9udGFsLXJlc2l6ZSB7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtM3B4KTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtM3B4KTsgfVxcblxcbi5sb2FkaW5nLWZpbHRlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgcGFkZGluZzogNXB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAzNHB4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICB6LWluZGV4OiAxOyB9XFxuXFxuLmFnLWRldGFpbHMtcm93IHtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAxMDAlOyB9XFxuXFxuLmFnLWRldGFpbHMtZ3JpZCB7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMTAwJTsgfVxcblxcbi5hZy1oZWFkZXItZ3JvdXAtY2VsbCB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGhlaWdodDogMTAwJTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgfVxcblxcbi5hZy1jZWxsLWxhYmVsLWNvbnRhaW5lciB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LXBhY2s6IGp1c3RpZnk7XFxuICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5O1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsO1xcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiByZXZlcnNlO1xcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcXG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIHdpZHRoOiAxMDAlOyB9XFxuXFxuLmFnLW51bWVyaWMtaGVhZGVyIC5hZy1jZWxsLWxhYmVsLWNvbnRhaW5lciB7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7XFxuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgZmxleC1kaXJlY3Rpb246IHJvdzsgfVxcblxcbi8qKlxcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICogU2lkZSBCYXJcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiovXFxuLmFnLXNpZGUtYmFyIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsO1xcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiByZXZlcnNlO1xcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsgfVxcbiAgLmFnLXNpZGUtYmFyIC5hZy1zaWRlLWJ1dHRvbnMgZGl2IGJ1dHRvbiB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgICBvdXRsaW5lOiBub25lO1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7IH1cXG4gICAgLmFnLXNpZGUtYmFyIC5hZy1zaWRlLWJ1dHRvbnMgZGl2IGJ1dHRvbiBzcGFuOm5vdCguYWctaWNvbikge1xcbiAgICAgIC13ZWJraXQtd3JpdGluZy1tb2RlOiB0YjtcXG4gICAgICAtbXMtd3JpdGluZy1tb2RlOiB0YjtcXG4gICAgICB3cml0aW5nLW1vZGU6IHRiO1xcbiAgICAgIC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1scjtcXG4gICAgICAtbXMtd3JpdGluZy1tb2RlOiB0Yi1scjtcXG4gICAgICB3cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyOyB9XFxuICAuYWctc2lkZS1iYXIgLnBhbmVsLWNvbnRhaW5lciB7XFxuICAgIHdpZHRoOiAxODBweDsgfVxcbiAgLmFnLXNpZGUtYmFyLmZ1bGwtd2lkdGggLnBhbmVsLWNvbnRhaW5lciB7XFxuICAgIHdpZHRoOiAyMDBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXNpZGUtYmFyIC5hZy1zaWRlLWJ1dHRvbnMgYnV0dG9uIHNwYW46bm90KC5hZy1pY29uKSB7XFxuICAtd2Via2l0LXdyaXRpbmctbW9kZTogdGItcmw7XFxuICAtbXMtd3JpdGluZy1tb2RlOiB0Yi1ybDtcXG4gIHdyaXRpbmctbW9kZTogdGItcmw7XFxuICAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmw7XFxuICAtbXMtd3JpdGluZy1tb2RlOiB0Yi1ybDtcXG4gIHdyaXRpbmctbW9kZTogdmVydGljYWwtcmw7IH1cXG5cXG4vKipcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAqIFN0YXR1cyBCYXJcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiovXFxuLmFnLXN0YXR1cy1iYXIge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5O1xcbiAgLW1zLWZsZXgtcGFjazoganVzdGlmeTtcXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gIG92ZXJmbG93OiBoaWRkZW47IH1cXG4gIC5hZy1zdGF0dXMtYmFyIC5hZy1zdGF0dXMtcGFuZWwge1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDtcXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7IH1cXG5cXG4uYWctc3RhdHVzLWJhci1sZWZ0IHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveDtcXG4gIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4OyB9XFxuXFxuLmFnLXN0YXR1cy1iYXItY2VudGVyIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveDtcXG4gIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4OyB9XFxuXFxuLmFnLXN0YXR1cy1iYXItcmlnaHQge1xcbiAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtYm94O1xcbiAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94O1xcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7IH1cXG5cXG4vKipcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAqIFdpZGdldHNcXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiovXFxuLmFnLWdyb3VwLWNvbXBvbmVudCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgLW1zLWZsZXg6IDEgMSAxMDAlO1xcbiAgZmxleDogMSAxIDEwMCU7IH1cXG4gIC5hZy1ncm91cC1jb21wb25lbnQgLmFnLWdyb3VwLWNvbXBvbmVudC10aXRsZS1iYXIge1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cXG4gIC5hZy1ncm91cC1jb21wb25lbnQgLmFnLWdyb3VwLWNvbXBvbmVudC10b29sYmFyIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyOyB9XFxuICAuYWctZ3JvdXAtY29tcG9uZW50IC5hZy1ncm91cC1jb21wb25lbnQtY29udGFpbmVyIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH1cXG4gICAgLmFnLWdyb3VwLWNvbXBvbmVudCAuYWctZ3JvdXAtY29tcG9uZW50LWNvbnRhaW5lciAuYWctZ3JvdXAtc3ViZ3JvdXAge1xcbiAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaDtcXG4gICAgICBhbGlnbi1zZWxmOiBzdHJldGNoOyB9XFxuICAuYWctZ3JvdXAtY29tcG9uZW50IC5hZy1ncm91cC1pdGVtIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAtbXMtZmxleDogMSAxIGF1dG87XFxuICAgIGZsZXg6IDEgMSBhdXRvO1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyOyB9XFxuICAuYWctZ3JvdXAtY29tcG9uZW50LmFnLWRpc2FibGVkIC5hZy1ncm91cC1jb21wb25lbnQtY29udGFpbmVyIHtcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7IH1cXG4gIC5hZy1ncm91cC1jb21wb25lbnQuYWctY29sbGFwc2VkIC5hZy1ncm91cC1jb21wb25lbnQtdG9vbGJhciwgLmFnLWdyb3VwLWNvbXBvbmVudC5hZy1jb2xsYXBzZWQgLmFnLWdyb3VwLWNvbXBvbmVudC1jb250YWluZXIge1xcbiAgICBkaXNwbGF5OiBub25lOyB9XFxuXFxuLmFnLXRvZ2dsZS1idXR0b24gLmFnLWlucHV0LXdyYXBwZXIgLmFnLWljb24ge1xcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiByaWdodCAwLjNzO1xcbiAgdHJhbnNpdGlvbjogcmlnaHQgMC4zcztcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogLTFweDsgfVxcblxcbi5hZy1pbnB1dC1maWVsZCB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDtcXG4gIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7XFxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICBhbGlnbi1pdGVtczogY2VudGVyOyB9XFxuICAuYWctaW5wdXQtZmllbGQgaW5wdXQsIC5hZy1pbnB1dC1maWVsZCBzZWxlY3QsIC5hZy1pbnB1dC1maWVsZCB0ZXh0YXJlYSB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgIC1tcy1mbGV4OiAxIDEgYXV0bztcXG4gICAgZmxleDogMSAxIGF1dG87XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBtaW4td2lkdGg6IDA7IH1cXG5cXG4uYWctcmFuZ2UtZmllbGQge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cXG5cXG4uYWctcGlja2VyLWZpZWxkID4gLmFnLXdyYXBwZXIsIC5hZy1zbGlkZXIgPiAuYWctd3JhcHBlciwgLmFnLWFuZ2xlLXNlbGVjdCA+IC5hZy13cmFwcGVyIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4OyB9XFxuICAuYWctcGlja2VyLWZpZWxkID4gLmFnLXdyYXBwZXIgPiBkaXYsIC5hZy1zbGlkZXIgPiAuYWctd3JhcHBlciA+IGRpdiwgLmFnLWFuZ2xlLXNlbGVjdCA+IC5hZy13cmFwcGVyID4gZGl2IHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICBmbGV4OiAxIDEgYXV0bzsgfVxcblxcbi5hZy1hbmdsZS1zZWxlY3Qge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cXG4gIC5hZy1hbmdsZS1zZWxlY3QgLmFnLWFuZ2xlLXNlbGVjdC1maWVsZCAuYWctcGFyZW50LWNpcmNsZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cXG4gIC5hZy1hbmdsZS1zZWxlY3QgLmFnLWFuZ2xlLXNlbGVjdC1maWVsZCAuYWctY2hpbGQtY2lyY2xlIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlOyB9XFxuXFxuLmFnLXBpY2tlci1maWVsZCB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxcbiAgLmFnLXBpY2tlci1maWVsZCA+IC5hZy13cmFwcGVyID4gYnV0dG9uIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBib3JkZXI6IDA7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIG1hcmdpbjogMDsgfVxcblxcbi5hZy1jb2xvci1waWNrZXIgPiAuYWctd3JhcHBlciB7XFxuICAtd2Via2l0LWJveC1hbGlnbjogc3RyZXRjaDtcXG4gIC1tcy1mbGV4LWFsaWduOiBzdHJldGNoO1xcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XFxuICBvdmVyZmxvdzogaGlkZGVuOyB9XFxuXFxuLmFnLWNvbG9yLXBpY2tlciBidXR0b24ge1xcbiAgY3Vyc29yOiBwb2ludGVyOyB9XFxuXFxuLmFnLWxhYmVsZWQuYWctbGFiZWwtYWxpZ24tcmlnaHQgbGFiZWwge1xcbiAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMjtcXG4gIC1tcy1mbGV4LW9yZGVyOiAxO1xcbiAgb3JkZXI6IDE7IH1cXG5cXG4uYWctbGFiZWxlZC5hZy1sYWJlbC1hbGlnbi1yaWdodCA+IGRpdiB7XFxuICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgLW1zLWZsZXg6IG5vbmU7XFxuICBmbGV4OiBub25lOyB9XFxuXFxuLmFnLWxhYmVsZWQuYWctbGFiZWwtYWxpZ24tdG9wIHtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XFxuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIC13ZWJraXQtYm94LWFsaWduOiBzdGFydDtcXG4gIC1tcy1mbGV4LWFsaWduOiBzdGFydDtcXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyB9XFxuICAuYWctbGFiZWxlZC5hZy1sYWJlbC1hbGlnbi10b3AgPiBkaXYge1xcbiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBzdHJldGNoO1xcbiAgICBhbGlnbi1zZWxmOiBzdHJldGNoOyB9XFxuXFxuLmFnLWNvbG9yLXBhbmVsIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG4gIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XFxuICAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLWNvbG9yIHtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICBmbGV4OiAxIDEgYXV0bztcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICBjdXJzb3I6IGRlZmF1bHQ7IH1cXG4gIC5hZy1jb2xvci1wYW5lbCAuYWctZmlsbCB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgdG9wOiAwO1xcbiAgICBsZWZ0OiAwO1xcbiAgICByaWdodDogMDtcXG4gICAgYm90dG9tOiAwOyB9XFxuICAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLXZhbCB7XFxuICAgIGN1cnNvcjogcG9pbnRlcjsgfVxcbiAgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1kcmFnZ2VyIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gICAgY3Vyc29yOiBwb2ludGVyOyB9XFxuICAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLWh1ZSB7XFxuICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIHJpZ2h0IHRvcCwgbGVmdCB0b3AsIGNvbG9yLXN0b3AoMyUsICNmZjAwMDApLCBjb2xvci1zdG9wKDE3JSwgI2ZmZmYwMCksIGNvbG9yLXN0b3AoMzMlLCAjMDBmZjAwKSwgY29sb3Itc3RvcCg1MCUsICMwMGZmZmYpLCBjb2xvci1zdG9wKDY3JSwgIzAwMDBmZiksIGNvbG9yLXN0b3AoODMlLCAjZmYwMGZmKSwgdG8oI2ZmMDAwMCkpO1xcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgI2ZmMDAwMCAzJSwgI2ZmZmYwMCAxNyUsICMwMGZmMDAgMzMlLCAjMDBmZmZmIDUwJSwgIzAwMDBmZiA2NyUsICNmZjAwZmYgODMlLCAjZmYwMDAwIDEwMCUpOyB9XFxuICAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLWFscGhhIHtcXG4gICAgY3Vyc29yOiBkZWZhdWx0OyB9XFxuICAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLWh1ZS1iYWNrZ3JvdW5kIHtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIGhlaWdodDogMTAwJTsgfVxcbiAgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1hbHBoYS1iYWNrZ3JvdW5kIHtcXG4gICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCByaWdodCB0b3AsIGZyb20ocmdiYSgwLCAwLCAwLCAwKSksIHRvKGJsYWNrKSk7XFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwKSwgYmxhY2spO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgaGVpZ2h0OiAxMDAlOyB9XFxuICAuYWctY29sb3ItcGFuZWwgLmFnLWh1ZS1hbHBoYSB7XFxuICAgIGN1cnNvcjogcG9pbnRlcjsgfVxcbiAgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1zbGlkZXIge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lOyB9XFxuICAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLXRleHQtdmFsdWUge1xcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxcbiAgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS10ZXh0LXZhbHVlOmZvY3VzIHtcXG4gICAgb3V0bGluZTogbm9uZTtcXG4gICAgb3V0bGluZS1vZmZzZXQ6IDA7IH1cXG4gIC5hZy1jb2xvci1wYW5lbCAuYWctcmVjZW50LWNvbG9ycyB7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDsgfVxcbiAgICAuYWctY29sb3ItcGFuZWwgLmFnLXJlY2VudC1jb2xvcnMgPiBkaXYge1xcbiAgICAgIGN1cnNvcjogcG9pbnRlcjsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMSB7XFxuICBwYWRkaW5nLWxlZnQ6IDEwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTEge1xcbiAgcGFkZGluZy1yaWdodDogMTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMSB7XFxuICBwYWRkaW5nLWxlZnQ6IDEwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEge1xcbiAgcGFkZGluZy1yaWdodDogMTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMiB7XFxuICBwYWRkaW5nLWxlZnQ6IDIwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTIge1xcbiAgcGFkZGluZy1yaWdodDogMjBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMiB7XFxuICBwYWRkaW5nLWxlZnQ6IDIwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTIge1xcbiAgcGFkZGluZy1yaWdodDogMjBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMyB7XFxuICBwYWRkaW5nLWxlZnQ6IDMwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTMge1xcbiAgcGFkZGluZy1yaWdodDogMzBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMyB7XFxuICBwYWRkaW5nLWxlZnQ6IDMwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTMge1xcbiAgcGFkZGluZy1yaWdodDogMzBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNCB7XFxuICBwYWRkaW5nLWxlZnQ6IDQwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTQge1xcbiAgcGFkZGluZy1yaWdodDogNDBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNCB7XFxuICBwYWRkaW5nLWxlZnQ6IDQwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQge1xcbiAgcGFkZGluZy1yaWdodDogNDBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNSB7XFxuICBwYWRkaW5nLWxlZnQ6IDUwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTUge1xcbiAgcGFkZGluZy1yaWdodDogNTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNSB7XFxuICBwYWRkaW5nLWxlZnQ6IDUwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTUge1xcbiAgcGFkZGluZy1yaWdodDogNTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNiB7XFxuICBwYWRkaW5nLWxlZnQ6IDYwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTYge1xcbiAgcGFkZGluZy1yaWdodDogNjBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNiB7XFxuICBwYWRkaW5nLWxlZnQ6IDYwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTYge1xcbiAgcGFkZGluZy1yaWdodDogNjBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNyB7XFxuICBwYWRkaW5nLWxlZnQ6IDcwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTcge1xcbiAgcGFkZGluZy1yaWdodDogNzBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNyB7XFxuICBwYWRkaW5nLWxlZnQ6IDcwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTcge1xcbiAgcGFkZGluZy1yaWdodDogNzBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtOCB7XFxuICBwYWRkaW5nLWxlZnQ6IDgwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTgge1xcbiAgcGFkZGluZy1yaWdodDogODBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtOCB7XFxuICBwYWRkaW5nLWxlZnQ6IDgwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTgge1xcbiAgcGFkZGluZy1yaWdodDogODBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtOSB7XFxuICBwYWRkaW5nLWxlZnQ6IDkwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTkge1xcbiAgcGFkZGluZy1yaWdodDogOTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtOSB7XFxuICBwYWRkaW5nLWxlZnQ6IDkwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTkge1xcbiAgcGFkZGluZy1yaWdodDogOTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTAge1xcbiAgcGFkZGluZy1sZWZ0OiAxMDBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTAge1xcbiAgcGFkZGluZy1yaWdodDogMTAwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEwIHtcXG4gIHBhZGRpbmctbGVmdDogMTAwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEwIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDEwMHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xMSB7XFxuICBwYWRkaW5nLWxlZnQ6IDExMHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xMSB7XFxuICBwYWRkaW5nLXJpZ2h0OiAxMTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTEge1xcbiAgcGFkZGluZy1sZWZ0OiAxMTBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTEge1xcbiAgcGFkZGluZy1yaWdodDogMTEwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTEyIHtcXG4gIHBhZGRpbmctbGVmdDogMTIwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTEyIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDEyMHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xMiB7XFxuICBwYWRkaW5nLWxlZnQ6IDEyMHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xMiB7XFxuICBwYWRkaW5nLXJpZ2h0OiAxMjBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTMge1xcbiAgcGFkZGluZy1sZWZ0OiAxMzBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTMge1xcbiAgcGFkZGluZy1yaWdodDogMTMwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEzIHtcXG4gIHBhZGRpbmctbGVmdDogMTMwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEzIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDEzMHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xNCB7XFxuICBwYWRkaW5nLWxlZnQ6IDE0MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xNCB7XFxuICBwYWRkaW5nLXJpZ2h0OiAxNDBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTQge1xcbiAgcGFkZGluZy1sZWZ0OiAxNDBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTQge1xcbiAgcGFkZGluZy1yaWdodDogMTQwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTE1IHtcXG4gIHBhZGRpbmctbGVmdDogMTUwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTE1IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDE1MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xNSB7XFxuICBwYWRkaW5nLWxlZnQ6IDE1MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xNSB7XFxuICBwYWRkaW5nLXJpZ2h0OiAxNTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTYge1xcbiAgcGFkZGluZy1sZWZ0OiAxNjBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTYge1xcbiAgcGFkZGluZy1yaWdodDogMTYwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE2IHtcXG4gIHBhZGRpbmctbGVmdDogMTYwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE2IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDE2MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xNyB7XFxuICBwYWRkaW5nLWxlZnQ6IDE3MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xNyB7XFxuICBwYWRkaW5nLXJpZ2h0OiAxNzBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTcge1xcbiAgcGFkZGluZy1sZWZ0OiAxNzBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTcge1xcbiAgcGFkZGluZy1yaWdodDogMTcwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTE4IHtcXG4gIHBhZGRpbmctbGVmdDogMTgwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTE4IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDE4MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xOCB7XFxuICBwYWRkaW5nLWxlZnQ6IDE4MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xOCB7XFxuICBwYWRkaW5nLXJpZ2h0OiAxODBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTkge1xcbiAgcGFkZGluZy1sZWZ0OiAxOTBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTkge1xcbiAgcGFkZGluZy1yaWdodDogMTkwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE5IHtcXG4gIHBhZGRpbmctbGVmdDogMTkwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE5IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDE5MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yMCB7XFxuICBwYWRkaW5nLWxlZnQ6IDIwMHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yMCB7XFxuICBwYWRkaW5nLXJpZ2h0OiAyMDBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjAge1xcbiAgcGFkZGluZy1sZWZ0OiAyMDBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjAge1xcbiAgcGFkZGluZy1yaWdodDogMjAwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTIxIHtcXG4gIHBhZGRpbmctbGVmdDogMjEwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTIxIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDIxMHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yMSB7XFxuICBwYWRkaW5nLWxlZnQ6IDIxMHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yMSB7XFxuICBwYWRkaW5nLXJpZ2h0OiAyMTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjIge1xcbiAgcGFkZGluZy1sZWZ0OiAyMjBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjIge1xcbiAgcGFkZGluZy1yaWdodDogMjIwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTIyIHtcXG4gIHBhZGRpbmctbGVmdDogMjIwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTIyIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDIyMHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yMyB7XFxuICBwYWRkaW5nLWxlZnQ6IDIzMHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yMyB7XFxuICBwYWRkaW5nLXJpZ2h0OiAyMzBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjMge1xcbiAgcGFkZGluZy1sZWZ0OiAyMzBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjMge1xcbiAgcGFkZGluZy1yaWdodDogMjMwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTI0IHtcXG4gIHBhZGRpbmctbGVmdDogMjQwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTI0IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDI0MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yNCB7XFxuICBwYWRkaW5nLWxlZnQ6IDI0MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yNCB7XFxuICBwYWRkaW5nLXJpZ2h0OiAyNDBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjUge1xcbiAgcGFkZGluZy1sZWZ0OiAyNTBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjUge1xcbiAgcGFkZGluZy1yaWdodDogMjUwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI1IHtcXG4gIHBhZGRpbmctbGVmdDogMjUwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI1IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDI1MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yNiB7XFxuICBwYWRkaW5nLWxlZnQ6IDI2MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yNiB7XFxuICBwYWRkaW5nLXJpZ2h0OiAyNjBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjYge1xcbiAgcGFkZGluZy1sZWZ0OiAyNjBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjYge1xcbiAgcGFkZGluZy1yaWdodDogMjYwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTI3IHtcXG4gIHBhZGRpbmctbGVmdDogMjcwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTI3IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDI3MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yNyB7XFxuICBwYWRkaW5nLWxlZnQ6IDI3MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yNyB7XFxuICBwYWRkaW5nLXJpZ2h0OiAyNzBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjgge1xcbiAgcGFkZGluZy1sZWZ0OiAyODBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjgge1xcbiAgcGFkZGluZy1yaWdodDogMjgwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI4IHtcXG4gIHBhZGRpbmctbGVmdDogMjgwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI4IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDI4MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yOSB7XFxuICBwYWRkaW5nLWxlZnQ6IDI5MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yOSB7XFxuICBwYWRkaW5nLXJpZ2h0OiAyOTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjkge1xcbiAgcGFkZGluZy1sZWZ0OiAyOTBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjkge1xcbiAgcGFkZGluZy1yaWdodDogMjkwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTMwIHtcXG4gIHBhZGRpbmctbGVmdDogMzAwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTMwIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDMwMHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zMCB7XFxuICBwYWRkaW5nLWxlZnQ6IDMwMHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zMCB7XFxuICBwYWRkaW5nLXJpZ2h0OiAzMDBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzEge1xcbiAgcGFkZGluZy1sZWZ0OiAzMTBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzEge1xcbiAgcGFkZGluZy1yaWdodDogMzEwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTMxIHtcXG4gIHBhZGRpbmctbGVmdDogMzEwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTMxIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDMxMHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0zMiB7XFxuICBwYWRkaW5nLWxlZnQ6IDMyMHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zMiB7XFxuICBwYWRkaW5nLXJpZ2h0OiAzMjBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzIge1xcbiAgcGFkZGluZy1sZWZ0OiAzMjBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzIge1xcbiAgcGFkZGluZy1yaWdodDogMzIwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTMzIHtcXG4gIHBhZGRpbmctbGVmdDogMzMwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTMzIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDMzMHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zMyB7XFxuICBwYWRkaW5nLWxlZnQ6IDMzMHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zMyB7XFxuICBwYWRkaW5nLXJpZ2h0OiAzMzBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzQge1xcbiAgcGFkZGluZy1sZWZ0OiAzNDBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzQge1xcbiAgcGFkZGluZy1yaWdodDogMzQwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTM0IHtcXG4gIHBhZGRpbmctbGVmdDogMzQwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTM0IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDM0MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0zNSB7XFxuICBwYWRkaW5nLWxlZnQ6IDM1MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zNSB7XFxuICBwYWRkaW5nLXJpZ2h0OiAzNTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzUge1xcbiAgcGFkZGluZy1sZWZ0OiAzNTBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzUge1xcbiAgcGFkZGluZy1yaWdodDogMzUwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTM2IHtcXG4gIHBhZGRpbmctbGVmdDogMzYwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTM2IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDM2MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zNiB7XFxuICBwYWRkaW5nLWxlZnQ6IDM2MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zNiB7XFxuICBwYWRkaW5nLXJpZ2h0OiAzNjBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzcge1xcbiAgcGFkZGluZy1sZWZ0OiAzNzBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzcge1xcbiAgcGFkZGluZy1yaWdodDogMzcwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTM3IHtcXG4gIHBhZGRpbmctbGVmdDogMzcwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTM3IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDM3MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0zOCB7XFxuICBwYWRkaW5nLWxlZnQ6IDM4MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zOCB7XFxuICBwYWRkaW5nLXJpZ2h0OiAzODBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzgge1xcbiAgcGFkZGluZy1sZWZ0OiAzODBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzgge1xcbiAgcGFkZGluZy1yaWdodDogMzgwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTM5IHtcXG4gIHBhZGRpbmctbGVmdDogMzkwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTM5IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDM5MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zOSB7XFxuICBwYWRkaW5nLWxlZnQ6IDM5MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zOSB7XFxuICBwYWRkaW5nLXJpZ2h0OiAzOTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDAge1xcbiAgcGFkZGluZy1sZWZ0OiA0MDBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDAge1xcbiAgcGFkZGluZy1yaWdodDogNDAwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQwIHtcXG4gIHBhZGRpbmctbGVmdDogNDAwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQwIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDQwMHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00MSB7XFxuICBwYWRkaW5nLWxlZnQ6IDQxMHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00MSB7XFxuICBwYWRkaW5nLXJpZ2h0OiA0MTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDEge1xcbiAgcGFkZGluZy1sZWZ0OiA0MTBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDEge1xcbiAgcGFkZGluZy1yaWdodDogNDEwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTQyIHtcXG4gIHBhZGRpbmctbGVmdDogNDIwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTQyIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDQyMHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00MiB7XFxuICBwYWRkaW5nLWxlZnQ6IDQyMHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00MiB7XFxuICBwYWRkaW5nLXJpZ2h0OiA0MjBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDMge1xcbiAgcGFkZGluZy1sZWZ0OiA0MzBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDMge1xcbiAgcGFkZGluZy1yaWdodDogNDMwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQzIHtcXG4gIHBhZGRpbmctbGVmdDogNDMwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQzIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDQzMHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00NCB7XFxuICBwYWRkaW5nLWxlZnQ6IDQ0MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00NCB7XFxuICBwYWRkaW5nLXJpZ2h0OiA0NDBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDQge1xcbiAgcGFkZGluZy1sZWZ0OiA0NDBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDQge1xcbiAgcGFkZGluZy1yaWdodDogNDQwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTQ1IHtcXG4gIHBhZGRpbmctbGVmdDogNDUwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTQ1IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDQ1MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00NSB7XFxuICBwYWRkaW5nLWxlZnQ6IDQ1MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00NSB7XFxuICBwYWRkaW5nLXJpZ2h0OiA0NTBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDYge1xcbiAgcGFkZGluZy1sZWZ0OiA0NjBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDYge1xcbiAgcGFkZGluZy1yaWdodDogNDYwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ2IHtcXG4gIHBhZGRpbmctbGVmdDogNDYwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ2IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDQ2MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00NyB7XFxuICBwYWRkaW5nLWxlZnQ6IDQ3MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00NyB7XFxuICBwYWRkaW5nLXJpZ2h0OiA0NzBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDcge1xcbiAgcGFkZGluZy1sZWZ0OiA0NzBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDcge1xcbiAgcGFkZGluZy1yaWdodDogNDcwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTQ4IHtcXG4gIHBhZGRpbmctbGVmdDogNDgwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTQ4IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDQ4MHB4OyB9XFxuXFxuLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00OCB7XFxuICBwYWRkaW5nLWxlZnQ6IDQ4MHB4OyB9XFxuXFxuLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00OCB7XFxuICBwYWRkaW5nLXJpZ2h0OiA0ODBweDsgfVxcblxcbi5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDkge1xcbiAgcGFkZGluZy1sZWZ0OiA0OTBweDsgfVxcblxcbi5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDkge1xcbiAgcGFkZGluZy1yaWdodDogNDkwcHg7IH1cXG5cXG4uYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ5IHtcXG4gIHBhZGRpbmctbGVmdDogNDkwcHg7IH1cXG5cXG4uYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ5IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDQ5MHB4OyB9XFxuXFxuLmFnLWx0ciB7XFxuICBkaXJlY3Rpb246IGx0cjsgfVxcbiAgLmFnLWx0ciAuYWctYm9keSwgLmFnLWx0ciAuYWctZmxvYXRpbmctdG9wLCAuYWctbHRyIC5hZy1mbG9hdGluZy1ib3R0b20sIC5hZy1sdHIgLmFnLWhlYWRlciwgLmFnLWx0ciAuYWctYm9keS12aWV3cG9ydCwgLmFnLWx0ciAuYWctYm9keS1ob3Jpem9udGFsLXNjcm9sbCB7XFxuICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDtcXG4gICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93OyB9XFxuICAuYWctbHRyIC5hZy1oZWFkZXItY2VsbC1yZXNpemUge1xcbiAgICByaWdodDogLTRweDsgfVxcbiAgLmFnLWx0ciAuYWctcGlubmVkLXJpZ2h0LWhlYWRlciAuYWctaGVhZGVyLWNlbGwtcmVzaXplIHtcXG4gICAgbGVmdDogLTRweDsgfVxcblxcbi5hZy1ydGwge1xcbiAgZGlyZWN0aW9uOiBydGw7IH1cXG4gIC5hZy1ydGwgLmFnLWJvZHksIC5hZy1ydGwgLmFnLWZsb2F0aW5nLXRvcCwgLmFnLXJ0bCAuYWctZmxvYXRpbmctYm90dG9tLCAuYWctcnRsIC5hZy1oZWFkZXIsIC5hZy1ydGwgLmFnLWJvZHktdmlld3BvcnQsIC5hZy1ydGwgLmFnLWJvZHktaG9yaXpvbnRhbC1zY3JvbGwge1xcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7XFxuICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogcmV2ZXJzZTtcXG4gICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcXG4gICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOyB9XFxuICAuYWctcnRsIC5hZy1oZWFkZXItY2VsbC1yZXNpemUge1xcbiAgICBsZWZ0OiAtNHB4OyB9XFxuICAuYWctcnRsIC5hZy1waW5uZWQtbGVmdC1oZWFkZXIgLmFnLWhlYWRlci1jZWxsLXJlc2l6ZSB7XFxuICAgIHJpZ2h0OiAtNHB4OyB9XFxuXFxuQG1lZGlhIHByaW50IHtcXG4gIC5hZy1ib2R5LXZpZXdwb3J0IHtcXG4gICAgZGlzcGxheTogYmxvY2s7IH1cXG4gIC5hZy1yb3cge1xcbiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7IH0gfVxcblxcbi5hZy1ib2R5IC5hZy1waW5uZWQtbGVmdC1jb2xzLXZpZXdwb3J0LCAuYWctYm9keSAuYWctYm9keS12aWV3cG9ydCwgLmFnLWJvZHkgLmFnLXBpbm5lZC1yaWdodC1jb2xzLXZpZXdwb3J0IHtcXG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsgfVxcblxcbi5hZy1jaGFydCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTsgfVxcbiAgLmFnLWNoYXJ0IC5hZy1jaGFydC1jb21wb25lbnRzLXdyYXBwZXIge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgICAgIC1tcy1mbGV4OiAxIDEgYXV0bztcXG4gICAgICAgICAgICBmbGV4OiAxIDEgYXV0bztcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxcbiAgICAuYWctY2hhcnQgLmFnLWNoYXJ0LWNvbXBvbmVudHMtd3JhcHBlciAuYWctY2hhcnQtY2FudmFzLXdyYXBwZXIge1xcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgICAgICAtbXMtZmxleDogMSAxIGF1dG87XFxuICAgICAgICAgICAgICBmbGV4OiAxIDEgYXV0bztcXG4gICAgICBvdmVyZmxvdzogaGlkZGVuOyB9XFxuICAgICAgLmFnLWNoYXJ0IC5hZy1jaGFydC1jb21wb25lbnRzLXdyYXBwZXIgLmFnLWNoYXJ0LWNhbnZhcy13cmFwcGVyIGNhbnZhcyB7XFxuICAgICAgICBkaXNwbGF5OiBibG9jazsgfVxcbiAgICAuYWctY2hhcnQgLmFnLWNoYXJ0LWNvbXBvbmVudHMtd3JhcHBlciAuYWctY2hhcnQtbWVudSB7XFxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgIHRvcDogMTBweDtcXG4gICAgICByaWdodDogMjBweDtcXG4gICAgICB3aWR0aDogMjRweDtcXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG4gICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyB9XFxuICAuYWctY2hhcnQ6bm90KC5hZy1oYXMtbWVudSk6aG92ZXIgLmFnLWNoYXJ0LW1lbnUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgICBwb2ludGVyLWV2ZW50czogYWxsOyB9XFxuICAuYWctY2hhcnQgLmFnLWNoYXJ0LWRvY2tlZC1jb250YWluZXIge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIHdpZHRoOiAwO1xcbiAgICBtaW4td2lkdGg6IDA7XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogbWluLXdpZHRoIDAuNHM7XFxuICAgIHRyYW5zaXRpb246IG1pbi13aWR0aCAwLjRzOyB9XFxuICAgIC5hZy1jaGFydCAuYWctY2hhcnQtZG9ja2VkLWNvbnRhaW5lciAuYWctcGFuZWwge1xcbiAgICAgIGJvcmRlci13aWR0aDogMCAwIDAgMXB4OyB9XFxuXFxuLmFnLWNoYXJ0LXRhYmJlZC1tZW51ID4gZGl2IHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBvdmVyZmxvdzogaGlkZGVuOyB9XFxuXFxuLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy10YWItaGVhZGVyIHtcXG4gIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgLW1zLWZsZXg6IG5vbmU7XFxuICAgICAgICAgIGZsZXg6IG5vbmU7XFxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xcbiAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xcbiAgY3Vyc29yOiBkZWZhdWx0OyB9XFxuXFxuLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy10YWItYm9keSB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICAgICAgICBmbGV4OiAxIDEgYXV0bztcXG4gIC13ZWJraXQtYm94LWFsaWduOiBzdHJldGNoO1xcbiAgICAgIC1tcy1mbGV4LWFsaWduOiBzdHJldGNoO1xcbiAgICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcXG4gIG92ZXJmbG93OiBoaWRkZW47IH1cXG4gIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctdGFiLWJvZHkgPiBkaXYge1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgb3ZlcmZsb3cteTogYXV0bzsgfVxcblxcbi5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3Mge1xcbiAgb3ZlcmZsb3cteDogaGlkZGVuOyB9XFxuICAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy13cmFwcGVyIHtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxcbiAgICAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy13cmFwcGVyIC5hZy1jaGFydC1zZXR0aW5ncy1uYXYtYmFyIHtcXG4gICAgICB3aWR0aDogMTAwJTtcXG4gICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgIGhlaWdodDogMzBweDtcXG4gICAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxcbiAgICAgIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLXdyYXBwZXIgLmFnLWNoYXJ0LXNldHRpbmdzLW5hdi1iYXIgLmFnLW5hdi1jYXJkLXNlbGVjdG9yIHtcXG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgICAgLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZTtcXG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcXG4gICAgICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgICAgICAgICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICAgICAgICAgICAgICBmbGV4OiAxIDEgYXV0bztcXG4gICAgICAgIGhlaWdodDogMTAwJTsgfVxcbiAgICAgICAgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3Mtd3JhcHBlciAuYWctY2hhcnQtc2V0dGluZ3MtbmF2LWJhciAuYWctbmF2LWNhcmQtc2VsZWN0b3IgLmFnLW5hdi1jYXJkLWl0ZW0ge1xcbiAgICAgICAgICBvcGFjaXR5OiAwLjI7IH1cXG4gICAgICAgICAgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3Mtd3JhcHBlciAuYWctY2hhcnQtc2V0dGluZ3MtbmF2LWJhciAuYWctbmF2LWNhcmQtc2VsZWN0b3IgLmFnLW5hdi1jYXJkLWl0ZW0uYWctc2VsZWN0ZWQge1xcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7IH1cXG4gICAgICAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy13cmFwcGVyIC5hZy1jaGFydC1zZXR0aW5ncy1uYXYtYmFyIC5hZy1jaGFydC1zZXR0aW5ncy1wcmV2LWJ0biwgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3Mtd3JhcHBlciAuYWctY2hhcnQtc2V0dGluZ3MtbmF2LWJhciAuYWctY2hhcnQtc2V0dGluZ3MtbmV4dC1idG4ge1xcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICAgICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgICAgICAtbXMtZmxleDogbm9uZTtcXG4gICAgICAgICAgICAgICAgZmxleDogbm9uZTsgfVxcbiAgICAgICAgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3Mtd3JhcHBlciAuYWctY2hhcnQtc2V0dGluZ3MtbmF2LWJhciAuYWctY2hhcnQtc2V0dGluZ3MtcHJldi1idG4gYnV0dG9uLCAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy13cmFwcGVyIC5hZy1jaGFydC1zZXR0aW5ncy1uYXYtYmFyIC5hZy1jaGFydC1zZXR0aW5ncy1uZXh0LWJ0biBidXR0b24ge1xcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICAgIHRvcDogMDtcXG4gICAgICAgICAgbGVmdDogMDtcXG4gICAgICAgICAgd2lkdGg6IDEwMCU7XFxuICAgICAgICAgIGhlaWdodDogMTAwJTtcXG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICAgICAgICBvcGFjaXR5OiAwOyB9XFxuICAgIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLXdyYXBwZXIgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktY2hhcnRzLWNvbnRhaW5lciB7XFxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgICAgICAgIC1tcy1mbGV4OiAxIDEgYXV0bztcXG4gICAgICAgICAgICAgIGZsZXg6IDEgMSBhdXRvO1xcbiAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcXG4gICAgICBvdmVyZmxvdy15OiBhdXRvOyB9XFxuICAgICAgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3Mtd3JhcHBlciAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS1jaGFydHMtY29udGFpbmVyIC5hZy1jaGFydC1zZXR0aW5ncy1taW5pLXdyYXBwZXIge1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgdG9wOiAwO1xcbiAgICAgICAgbGVmdDogMDtcXG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG4gICAgICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgICAgICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgd2lkdGg6IDEwMCU7XFxuICAgICAgICBtaW4taGVpZ2h0OiAxMDAlO1xcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxcbiAgICAgICAgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3Mtd3JhcHBlciAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS1jaGFydHMtY29udGFpbmVyIC5hZy1jaGFydC1zZXR0aW5ncy1taW5pLXdyYXBwZXIgLmFnLWdyb3VwLWNvbXBvbmVudCB7XFxuICAgICAgICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgICAgICAgICAtbXMtZmxleDogbm9uZTtcXG4gICAgICAgICAgICAgICAgICBmbGV4OiBub25lOyB9XFxuICAgICAgICAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy13cmFwcGVyIC5hZy1jaGFydC1zZXR0aW5ncy1taW5pLWNoYXJ0cy1jb250YWluZXIgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktd3JhcHBlciAuYWctZ3JvdXAtY29tcG9uZW50LWNvbnRhaW5lciB7XFxuICAgICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDtcXG4gICAgICAgICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAgICAgICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdztcXG4gICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgICAgICAgICAtbXMtZmxleC13cmFwOiB3cmFwO1xcbiAgICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwOyB9XFxuICAgICAgICAgIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLXdyYXBwZXIgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktY2hhcnRzLWNvbnRhaW5lciAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS13cmFwcGVyIC5hZy1ncm91cC1jb21wb25lbnQtY29udGFpbmVyIC5hZy1jaGFydC1taW5pLXRodW1ibmFpbCB7XFxuICAgICAgICAgICAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gICAgICAgICAgICAgICAgLW1zLWZsZXg6IG5vbmU7XFxuICAgICAgICAgICAgICAgICAgICBmbGV4OiBub25lOyB9XFxuICAgICAgICAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy13cmFwcGVyIC5hZy1jaGFydC1zZXR0aW5ncy1taW5pLWNoYXJ0cy1jb250YWluZXIgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktd3JhcHBlci5hZy1hbmltYXRpbmcsIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLXdyYXBwZXIgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktY2hhcnRzLWNvbnRhaW5lciAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS13cmFwcGVyLmFnLWFuaW1hdGluZyB7XFxuICAgICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogbGVmdCAwLjNzO1xcbiAgICAgICAgICB0cmFuc2l0aW9uOiBsZWZ0IDAuM3M7XFxuICAgICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0O1xcbiAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDsgfVxcbiAgICAgICAgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3Mtd3JhcHBlciAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS1jaGFydHMtY29udGFpbmVyIC5hZy1jaGFydC1zZXR0aW5ncy1taW5pLXdyYXBwZXIgLmFnLWNoYXJ0LW1pbmktdGh1bWJuYWlsIHtcXG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyOyB9XFxuICAgICAgICAgIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLXdyYXBwZXIgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktY2hhcnRzLWNvbnRhaW5lciAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS13cmFwcGVyIC5hZy1jaGFydC1taW5pLXRodW1ibmFpbCBjYW52YXMge1xcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOyB9XFxuXFxuLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1kYXRhLXdyYXBwZXIsIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtZm9ybWF0LXdyYXBwZXIge1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xcbiAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lOyB9XFxuICAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LWRhdGEtd3JhcHBlciA+IGRpdiwgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1mb3JtYXQtd3JhcHBlciA+IGRpdiB7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMnB4OyB9XFxuICAgIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtZGF0YS13cmFwcGVyID4gZGl2Om5vdCg6Zmlyc3QtY2hpbGQpLCAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LWZvcm1hdC13cmFwcGVyID4gZGl2Om5vdCg6Zmlyc3QtY2hpbGQpIHtcXG4gICAgICBtYXJnaW4tdG9wOiAwOyB9XFxuXFxuLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1mb3JtYXQtd3JhcHBlciB7XFxuICBvdmVyZmxvdy14OiBoaWRkZW47IH1cXG4gIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtZm9ybWF0LXdyYXBwZXIgLmFnLWdyb3VwLWNvbXBvbmVudCAuYWctZ3JvdXAtc3ViZ3JvdXAge1xcbiAgICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5O1xcbiAgICAgICAgLW1zLWZsZXgtcGFjazoganVzdGlmeTtcXG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IH1cXG5cXG4uYWctY2hhcnQgLmFnLWNoYXJ0LW1lbnUge1xcbiAgb3BhY2l0eTogMDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lOyB9XFxuICAuYWctY2hhcnQgLmFnLWNoYXJ0LW1lbnUgPiBzcGFuIHtcXG4gICAgb3BhY2l0eTogMC41O1xcbiAgICBsaW5lLWhlaWdodDogMjRweDtcXG4gICAgZm9udC1zaXplOiAyNHB4O1xcbiAgICB3aWR0aDogMjRweDtcXG4gICAgaGVpZ2h0OiAyNHB4O1xcbiAgICBtYXJnaW46IDJweCAwO1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7IH1cXG4gICAgLmFnLWNoYXJ0IC5hZy1jaGFydC1tZW51ID4gc3Bhbjpob3ZlciB7XFxuICAgICAgYm9yZGVyLXJhZGl1czogNXB4OyB9XFxuXFxuLmFnLWNoYXJ0IC5hZy1jaGFydC1kb2NrZWQtY29udGFpbmVyIHtcXG4gIG1pbi13aWR0aDogMDtcXG4gIHdpZHRoOiAwOyB9XFxuXFxuLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy10YWItYm9keSB7XFxuICBwYWRkaW5nOiAwOyB9XFxuXFxuLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3MtbmF2LWJhciB7XFxuICBwYWRkaW5nOiAwIDEwcHg7XFxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xcbiAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lOyB9XFxuICAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy1uYXYtYmFyIC5hZy1uYXYtY2FyZC1zZWxlY3RvciB7XFxuICAgIHBhZGRpbmc6IDAgMTBweDsgfVxcbiAgICAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy1uYXYtYmFyIC5hZy1uYXYtY2FyZC1zZWxlY3RvciAuYWctbmF2LWNhcmQtaXRlbSB7XFxuICAgICAgY3Vyc29yOiBwb2ludGVyOyB9XFxuXFxuXCIiLCJtb2R1bGUuZXhwb3J0cyA9IFwiQGNoYXJzZXQgXFxcIlVURi04XFxcIjtcXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiYWdHcmlkQmFsaGFtXFxcIjtcXG4gIHNyYzogdXJsKFxcXCJkYXRhOmFwcGxpY2F0aW9uL3gtZm9udC10dGY7Y2hhcnNldD11dGYtODtiYXNlNjQsQUFFQUFBQUxBSUFBQXdBd1QxTXZNZzhTQmxNQUFBQzhBQUFBWUdOdFlYQVhWdEs2QUFBQkhBQUFBRlJuWVhOd0FBQUFFQUFBQVhBQUFBQUlaMng1WnFNdXkzZ0FBQUY0QUFBYkRHaGxZV1FWb21PWEFBQWNoQUFBQURab2FHVmhCOElEK1FBQUhMd0FBQUFrYUcxMGVOWUFJbllBQUJ6Z0FBQUE0R3h2WTJIRW1MNGFBQUFkd0FBQUFISnRZWGh3QUVVQWxRQUFIalFBQUFBZ2JtRnRaWlFYeEtRQUFCNVVBQUFCa25CdmMzUUFBd0FBQUFBZjZBQUFBQ0FBQXdQMkFaQUFCUUFBQXBrQ3pBQUFBSThDbVFMTUFBQUI2d0F6QVFrQUFBQUFBQUFBQUFBQUFBQUFBQUFCRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFEcE13UEEvOEFBUUFQQUFFQUFBQUFCQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFEQUFBQUF3QUFBQndBQVFBREFBQUFIQUFEQUFFQUFBQWNBQVFBT0FBQUFBb0FDQUFDQUFJQUFRQWc2VFAvL2YvL0FBQUFBQUFnNlFELy9mLy9BQUgvNHhjRUFBTUFBUUFBQUFBQUFBQUFBQUFBQVFBQi8vOEFEd0FCQUFBQUFBQUFBQUFBQWdBQU56a0JBQUFBQUFFQUFBQUFBQUFBQUFBQ0FBQTNPUUVBQUFBQUFRQUFBQUFBQUFBQUFBSUFBRGM1QVFBQUFBQURBRC8vL3dQQkE0RUFKd0JRQUc0QUFBRWVBUmNXRlJZVUJ4UUhEZ0VIQmlNR0lpY2lKeTRCSnlZMUpqUTNORGMrQVRjMk16WXlGeklGSWdZSEJnY09BUmNVRng0QkZ4WVhGakkzTmpjK0FUYzJOelkwSnlZbkxnRW5KaU1pQmdjR0l3RWpOU0VWSGdFWEZnWUhEZ0VWSVRVekZTRTBOamMrQVNjdUFTYzFJUU1rUGx3Q0FRRUJBUUpjUGtsSlNaSkpTVWs5WFFJQkFRRUJBbHcrU1VsSmtrbEovZ1VsT2dFQkFRRUJBUU1DTlNSSlNVcVNTa2xKSkRVQ0F3RUJBUUVEQWpVa1NVaEprVWxJU1FIZ1FQOEFBWFVaRUFvWUoxWUJBRUQrZ0FZYkxXUWdMbUlDQVlBRGdBSmNQa2xKU1pKSlNVaytYQUlCQVFFQkFsdytTVWxKa2tsSlNUNWNBZ0VCQVVFNEpraEpTWkpKU1Vra05RSURBUUVCQVFNQ05TUkpTVXFTU2tsSkpEVUNBd0VCQWY4QVFBTWdRaXNjUkJjaVBScEFnQ1pNR0NkSEh5bEhORVVBQVFCVEFCTURyUU50QUNjQUFCTVhCeWMzSGdFWEJ5RVJCeWMzSGdFWEJ5Y1JJU2MzSGdFWEJ5YzNJUkUzSGdFWEJ5YzNGeEhOU2k2V2xnd1dERW9CRTBrdWx5WkxKaTVKQVJOS0xpVk1KWll1U3Y3dFNRd1dESmVYTGtrQm9Fa3VsNWNNRmd4SkFSTktMcFlsVENVdVN2N3RTUzRtU3lhWExrbis3VW9NRmd5V2xpNUtBUk1BQUFFQktRQ1pBdGNDNXdBS0FBQUJCeWMzSGdFWEJ5Y1JJd0hnaVM3WE5tczJMb2xBQW15SkxkYzJhell0aWY0dEFBTUFnQUJBQTRBRFFBQWJBRGNBUmdBQUFTSUhEZ0VIQmhVVUZ4NEJGeFl6TWpjK0FUYzJOVFFuTGdFbkpnY3lGeDRCRnhZVkZBY09BUWNHSXlJbkxnRW5KalUwTno0Qk56WVROeDRCRndjWEJ5Y0hKemNuTnhjQ0FFOUdSbWtlSGg0ZWFVWkdUMDlHUm1rZUhoNGVhVVpHVDBJN09sY1pHUmtaVnpvN1FrSTdPbGNaR1JrWlZ6bzdRcWtNRmd5cXFpNnBxUzZxcWk2cEEwQWVIbWxHUms5UFJrWnBIaDRlSG1sR1JrOVBSa1pwSGg1QUdSbFhPanRDUWpzNlZ4a1pHUmxYT2p0Q1FqczZWeGtaL3UycURCWU1xYWt1cXFvdXFha3VxZ0FEQU5VQWxRTXJBdXNBQkFBSkFBMEFBQk16RVNNUk56TVJJeEVUTXhFajFZQ0E3M2g0NzNoNEFqZitYZ0dpdFAycUFsYitxdjhBQUFNQUFQL0FCQUFEd0FBUEFDQUFLQUFBQlNFaUpqVVJORFl6SVRJV0ZSRVVCZ01oSWdZVkVSUVdNeUV5TmpVUk5DWWpCd0VuTnhjQkhnRURTUDF3VEd4c1RBS1FUR3hzU3YxdExVRkJMUUtUTFVGQUxneitWTkF6blFGNURScEFiRXdDa0V4c2JFejljRXhzQTdsQkxmMXRMa0JBTGdLVExVSDMvbFBSTkowQmVBMGFBQU1BQVAvQUJBQUR3QUFQQUNBQUpBQUFCU0VpSmpVUk5EWXpJVElXRlJFVUJnTWhJZ1lWRVJRV015RXlOalVSTkNZakF5RTFJUU5JL1hCTWJHeE1BcEJNYkd4Sy9XMHRRVUV0QXBNdFFVQXVKZjIyQWtwQWJFd0NrRXhzYkV6OWNFeHNBN2xCTGYxdExrQkFMZ0tUTFVIK0lrb0FBZ0FBLzhBRUFBUEFBQThBSUFBQUFUSVdGUkVVQmlNaElpWTFFVFEyTXdVaElnWVZFUlFXTXlFeU5qVVJOQ1lqQTBoTWJHeE0vWEJNYkd4TUFwTDliUzFCUVMwQ2t5MUJRQzREd0d4TS9YQk1iR3hNQXBCTWJFZEJMZjF0TGtCQUxnS1RMVUVBQUFBREFITUFTQU9OQXpnQUJnQUtBQllBQUFrQkJ4Y0pBaUUzRnlFRk1BWVZGQll6TWpZMU5DWUMvZjVWUEdiKzl3RkZBVVg5Nzh6TS9tZ0NURlV5SXlNeVZRR05BYXM4WnY3My9yc0JSYzNOUUdzcUl6SXlJeXByQUFBQUFBSUF3QUNnQWNBQzRBQURBQWNBQUNVaEVTRUhFVE1SQWNEL0FBRUF3SUNnQWtCQS9rQUJ3QUFFQU1BQW9BTkFBdUFBQXdBSEFBc0FEd0FBSlNNUk14TWpFVE1USXhFekFTTVJNd0hBUUVEQVFFREFRRUQ5d0VCQW9BSkEvY0FDUVAzQUFrRDl3QUpBQUFBQUFBRUJYZ0NwQXFJQzF3QUhBQUFCQnhjSENRRWVBUUtpNmVrdC91a0JGd3NYQXFucDZTNEJGd0VYREJZQUF3Q2dBRUFEWUFOQUFCQUFJQUF6QUFBbEl5SW1OUkUwTmpzQk1oWVZFUlFHSXhNaElnWVZFUlFXTXlFeU5qVVJOQ1lCSXp3Qk5SRTBOak1oT2dFekZTRWlCaFVSQXI3N1EyQmdRL3REWDE5REJmNzlKemMzSndFREp6YzMvZmRCWDBNQm1nRUNBZjVkSmpaQVgwUUJPa05nWUVQK3hrUmZBa0E0SnY2N0p6YzNKd0ZGSmpqK0FBRUVBZ0lYUTE5QU5pYjkzQUFBQUFBQkFTa0E2UUxYQXBjQURnQUFBVGNlQVJjSEZ3Y25CeWMzSnpjWEFnQ3BEQllNcXFvdXFha3VxcW91cVFIdHFnd1dES21wTHFxcUxxbXBMcW9BQUFBQUJRQkFBQUFEd0FPQUFDVUFNZ0EvQUVzQVVRQUFBVDRCTlRRbUl5SUdGUlFXTXpJMk54Y0hMZ0VqSWdZVkZCWXpNalkxTkNZbk53RXpOUUVISWlZMU5EWXpNaFlWRkFZakVTSW1OVFEyTXpJV0ZSUUdJd0VpSmpVME5qTXlGaFVVQmdrQkZ3RTFJd0dXQ0FocFNrcHBhVW9VSlJGcGFSRWxGRXBwYVVwS2FRZ0lhZ0U2aHYzV295VTBOQ1VsTlRVbEpUUTBKU1UxTlNVQkRRa05EUWtKRFEwQk1mN3pXUUU2aGdLREVTVVVTbWxwU2twcENBaHFhZ2dJYVVwS2FXbEtGQ1VSYWY3SExRSXBFRFVsSlRRMEpTVTEvZWMwSlNVMU5TVWxOQUZRRFFrSkRRMEpDUTBCcWY3eldRRTVMUUFBQndDR0FGWURlZ01xQUFzQUR3QWJBQ2dBTEFBNEFEd0FBRGNpQmhVVUZqTXlOalUwSmdVMUlSVURJZ1lWRkJZek1qWTFOQ1lITWhZVkZBWWpJaVkxTkRZekJTRTFJUUV5RmhVVUJpTWlKalUwTmdVaE5TSEdHaVltR2hzbEpRS1ovZWFhR2lZbUdoc2xKUnNTR1JrU0VSa1pFUUlKL3BFQmIvMzNHeVVsR3hvbUpnTE8vZVlDR3RZbUdoc2xKUnNhSm10VlZRR1ZKaG9hSmlZYUdpWVZHUklTR1JrU0VobFdWZ0UvSlJzYUppWWFHeVZxVlFBQUFBRUJLUUNaQXRjQzV3QUtBQUFCTng0QkZ3Y25OeGNSTXdJZ2lRd1dETmZYTG9sQUFSU0pDeGNMMTljdGlRSFRBQUVCWGdDcEFxSUMxd0FNQUFBSkFTYzNKemNXRng0QkZ4WVhBcUwrNlMzcDZTMGpJeU5GSXlNakFjRCs2UzdwNlM0akl5TkdJaU1qQUFBQUFBVUFRd0J6QTcwRERRQXNBRW9BYUFCekFIMEFBQUUrQVRjNkFUTVdGeDRCRnhZWE1BWUhEZ0VIRndjbkJnY0dKaWNtSnk0Qkp5NEJKekEyTno0Qk55YzNGd2NPQVE4QkZoY2VBUmNXTno0Qk55Y09BU01pSnk0Qkp5WTFORFkzSndFK0FUOEJKaWN1QVNjbUJ3NEJCeGMrQVRNeUZ4NEJGeFlWRkFZSEZ3RU9BUlVVRmpNeU5qY25CVDRCTlRRbUl5SUdCd0VxTDJnMkJ3UUhTRU5DY2kwdEd6a3VFQ1FUUGkxTE9VQkFnRDQ5TlNsRUdRb1BDaVViRnpjZ1BpMUtDakZPR0FFZE56ZUpURXhJQ3hZS0hSeEVKaThvS1QwU0VSY1ZNQUhCTVUwWUFSZ25LR1U3T3o0cFVDVWtIRVFtTGlrcFBSRVNHQlVxL3AwTURsNUNHQzBUM2dFTERRNWVRaGtzRXdMRUZ4c0NBaGdYVWprNFJIWXdFUjROUGkxTEhBME1DQlVWSmg1S0xCRWlHRk1rSHpZV1BpMUpVU0ZaTndKRk5UVS9Cd2NYQkFnRkhSVVlFaEk4S1NrdUprUWNNZjZaSVZvM0FqZ3VMa0VTRWdFQkV4RWpGUmNSRWowcEtDOGxSUndxQVFnVExCbENYZzROM2JBVExSaERYUTRNQUFRQVF3Q1pBNzBDOWdBa0FFTUFZQUJ2QUFBQkZoY2VBUmNXRnpBR0J3WUhEZ0VuSmljdUFTY3VBU2N3TmpjMk56NEJOelkzT2dFekJ3WUhEZ0VIQmc4QkZoY2VBUmNXTnpZM1BnRTNOajhCSmljdUFTY21JeGN5Rng0QkZ4WVZGQWNPQVFjR0l5SW5MZ0VuSmpVME56NEJOell6RnpVMEppTWlCaDBCRkJZek1qWTFBZ2xJUTBKeUxTMGJPUzQ2VGs2b1UxUkZLVVFaQ2c4S0pSc2dLU3BnTlRVM0J3UUhFVHM0TjJBbkpoZ0JIVGMzaVV4TVNDb2xKa0FhR2hJQkdDY29aVHM3UGdndEtDYzdFUklTRVRzbktDMHRLQ2M3RVJJU0VUc25LQzJnWGtKQ1hsNUNRbDRDOWdJWUYxSTVPRVIyTUQwakpCQVZGREllU2l3UkloaFRKQ3NqSXpJT0RnSkFBaElUUUMwc05nSkZOVFUvQndjWERSWVdPeU1qS0FNNExpMUNFaEVmRVJFN0p5Z3RMU2duT3hJUkVSSTdKeWd0TFNnbk94RVIyQUZDWGw1Q0FrSmVYa0lBQWdEQUFLQURRQU1BQUJzQU13QUFBUVlIRGdFSEJnY09BUjBCQnpRMkp6UW1KeVluTGdFbkppYzFJUVVVRmhjV0Z4NEJGeFlYRlRjMU5qYytBVGMyTno0Qk5RTkFBUllWUVNVbUlBUUV3QUlDQlFNaEpTWkFGaFVCQW9EOXdBUUVJU1VtUUJZVkFVQUJGaFZCSlNZZ0JBUUN1aUFmSHo4Z0lDSUZDd1oxa0VLRFFnWUtCQ0loSWtBZUh4MUdRQWNPQmlJaElrQWVIeDJHTUZZZ0h4OC9JQ0FpQmc0SEFBQUFBZ0QxQUtrREN3TFhBQWNBQ3dBQUFRY1hCd2tCSGdFbEVTTVJBd3ZwNlMzKzZRRVhDeGYrTlVBQ3FlbnBMZ0VYQVJjTUZnditBQUlBQUFBQURBREFBTUFEUUFMQUFBTUFCd0FMQUE4QUV3QVhBQnNBSHdBakFDY0FLd0F2QUFBbEl6VXpGeU0xTXhjak5UTVhJelV6SlNNMU14Y2pOVE1YSXpVekZ5TTFNeVVqTlRNWEl6VXpGeU0xTXhjak5UTUJBRUJBd0VCQXdFQkF3RUJBL2NCQVFNQkFRTUJBUU1CQVFQM0FRRURBUUVEQVFFREFRRURBZ0lDQWdJQ0FnRUNBZ0lDQWdJQ0FRSUNBZ0lDQWdJQUFBQWdBUC8vL0E4RURnUUFuQUZBQVZBQllBRndBWUFCa0FHZ0FBQUVlQVJjV0ZSWVVCeFFIRGdFSEJpTUdJaWNpSnk0Qkp5WTFKalEzTkRjK0FUYzJNell5RnpJRklnWUhCZ2NPQVJjVUZ4NEJGeFlYRmpJM05qYytBVGMyTnpZMEp5WW5MZ0VuSmlNaUJnY0dJeE1qTlRNRklUVWhKU00xTXdVaE5TRWxJelV6QlNFMUlRTWtQbHdDQVFFQkFRSmNQa2xKU1pKSlNVazlYUUlCQVFFQkFsdytTVWxKa2tsSi9nVWxPZ0VCQVFFQkFRTUNOU1JKU1VxU1NrbEpKRFVDQXdFQkFRRURBalVrU1VoSmtVbElTZUNBZ0FHQS9zQUJRUDZBZ0lBQmdQN0FBVUQrQUlDQUFnRCtRQUhBQTRBQ1hENUpTVW1TU1VsSlBsd0NBUUVCQVFKY1BrbEpTWkpKU1VrK1hBSUJBUUZCT0NaSVNVbVNTVWxKSkRVQ0F3RUJBUUVEQWpVa1NVbEtra3BKU1NRMUFnTUJBUUg5NEVCQVFFQkFRRUJBUUVCQUFBQUFBQVFBUXdESUE3MEN1QUFrQUUwQVlBQndBQUFCRmhjZUFSY1dGekFHQndZSERnRUhCaWNtSnk0Qkp5WW5NRFkzTmpjK0FUYzJNem9CQnlJR0J3WUhEZ0VIQmdjd0ZoY1dGeDRCTnpZM05qYytBVGMyTnpBbUp5WW5MZ0VuSmlNcUFTTVhIZ0VWRkFZSERnRW5MZ0VuTkRZM1BnRXpCdzRCQndZV0Z4WTJOelltSnk0Qkl3SUpRRUpCZFM4d0hVSTdLUzh2WXpJeU1EczVPbVlwS1JsRlB5RWxKVTRvS0NjSEJBb05HUXd1TUM5Vkl5TVZIeDhxTkRSdk9EZ3hLaWdvU0IwZEVoOGZIaVVrVHlvcEtBWUVCaEpHaXhnWk1IdzBQR2NDR1J3a1Vqb1RJMGdXR3hvdlBZd2VHeUF3RnlBb0FyZ0JEQXc1THk5SWZTa2RFaEVSQVFFREJCQVBPeTB0UG9FcUZ3NFBFUVFFUUFFQkF3c0xLeUVoTGo4Y0tCVVZFUUlDQndZTkRTd2VIaWMvSFJ3VEVoUUZCQjBDUlZRZ1BSUW1CZ1VGVFVFaVFoWWFERUFCQ1JrZ1hBMFJCeVVpWEFzR0FnQUNBUFVBcVFNTEF0Y0FEQUFRQUFBSkFTYzNKemNXRng0QkZ4WVhFeU1STXdJNS91a3Q2ZWt0SXlNaVJpTWpJOUpBUUFIQS91a3U2ZWt1SXlNalJpSWpJLzhBQWdBQUFBQUNBSGtBa3dPSEF1MEFDd0FXQUFBQkJ5RVZJUmNIQ1FFZUFSY0ZGemNuSVRVaE55Y09BUUkwUUFHVC9tMUFqZjdTQVM0alJ5UCtvTk15Z0FIdS9oS0FNalZwQW1CQXdFQ05BUzBCTFNOSEk2RFRNNEJBZ0RNMWFRQUFBQWdBWUFBZ0E2QURZQUFEQUFrQUR3QVRBQmNBSFFBakFDY0FBQ1VqRVRNbkJ5YzNIZ0VGQnljM0hnRTNJVFVoQlNFMUlUY0hKemNlQVNVSEp6Y2VBUVVqRVRNQ0lFQkFjODB0elFzWEFhc3R6UzB6WjRiL0FBRUEvY0QvQUFFQVRTM05MVE5uQWRQTkxjMExGLzdlUUVBZ0FRQWd6UzNOQ3hlckxjMHRNMmZOUUVCQVlDM05MVE5uYmMwdHpRc1hpd0VBQUFBQ0FQRUFzUU1QQXM4QUJ3QU9BQUFUSHdFbk55Y0hKeVV2QVJjSEZ6ZnhBOTlIZEZOMVJ3SWVBOTlIZEZOMUFaUGZBMGQxVTNSSFd0OERSM1ZUZEFBQUF3REFBT0FEUUFLZ0FBTUFCd0FMQUFBbElUVWhOU0UxSVRVaE5TRURRUDJBQW9EOWdBS0EvWUFDZ09CQWdFQ0FRQUFBQUFJQXl3Q0tBelVDOWdBSEFBOEFBQ1V2QVJjSEZ6Y1hFeDhCSnpjbkJ5Y0IyZ1RlUjNSVGRVZE1CTjVIZEZOMVI3amVCRWgxVTNWSEFoRGVCRWgxVTNWSEFBQUFBZ0NBQVdBRGdBSWdBQU1BQndBQUFTRTFJUVVWSVRVRGdQMEFBd0Q5UUFLQUFXREFRRUJBQUFFQlhnQ3BBcUlDMXdBTUFBQUpBU2MzSnpjV0Z4NEJGeFlYQXFMKzZTM3A2UzBqSXlORkl5TWpBY0QrNlM3cDZTNGpJeU5HSWlNakFBQUFBQUlBUUFDZ0E4QUM0QUFLQUJZQUFBRTNIZ0VYQnljM0Z4RXpBU01SQnljM0hnRVhCeWNSQVVHUURCY000T0F2a0VJQndFS1FMK0E0Y0RndmtBRVloZ3NXQzlMU0xJWUJ5UDNBQWNpR0xOSTBhVFVzaHY0NEFBQUdBSFlBUUFPTEEwc0FIQUF5QUVFQVV3QmlBRzRBQUFFV0Z4NEJGeFlIQmdjT0FTY21KeVluTGdFM05qYzJOejRCTnpZWEJ3WUhEZ0VIQmhjV0Z4NEJOelkzTmljdUFTY21CeGNXQnc0QkJ3WW5MZ0V2QVFFZUFRRVdOejRCTnpZM05pWW5CZ2NPQVFjR0J4TXlGaDhCQVNZbkpqWTNOamM2QVFjR0J3NEJCd1lYQVM0QkJ3SUdZbFZWYXc0TkxTZE9UYmRkWGtjdkhoNFhDQWdjR1NjbVh6YzNPUXBUUjBoYUNnc25LRk5UdVZWVkxTVUtDVmhKU1Z6ekl3Z0lUVUJCVGh3MEdDZ0Jnd1lML3Rnb0tTcEpIQnNNQ0FFSklTQWhRU0VnSVVNaFFCMHAvbjBsQlFZeU9EaFlCQW9HTUNvcU53b0tEZ0VHRVNJU0Ewc0NOVFdrWldSZ1ZEYzNKUlVVUXlzNU9uNUFRRG95S2lrNkVCQUJRQUV0TFl4VlZGRlRMUzBFS2l0Y1RGVlZqeTh1QWMxQVNrbDdKU1lJQWhFTkZnR0RDaFQrclF3RkJTY2dIeWtlUFIwZ0lTRkJJU0FoQWRZUkVCYitmRUZMVElJdUxRWkFBaGtaVFRBdkxnRUZCUVVCQUFBQUFBTUFnQUF3QTRBRFVBQVdBQ0lBTmdBQUFUUW1JeUlHRlNNaUJoVVJGQll6SVRJMk5SRTBKaU1GTWhZVkZBWWpJaVkxTkRZQklTSW1OUkUwTmpzQkZTRTFNeklXRlJFVUJnS0FPRWhJT0lBMVMwczFBZ0ExUzBzMS93QVNHUmtTRWhrWkFSTCtBQm9tSmhwQUFZQkFHaVltQXZBWVNFZ1lTelgrUURWTFN6VUJ3RFZMRVJnUkVSZ1lFUkVZL1pFbUdnSEFHaWFBZ0NZYS9rQWFKZ0FBQUFBQ0FIQUFNQU9RQTFBQUtBQkFBQUFCSnpBMk56NEJGemNtTno0Qk56WXhGaGNlQVJjV0Z3NEJCdzRCSndjZUFSY1dCZzhCSndjbk53RU9BUjhCQnlZR0J3RStBVGMySmljM01CWTNKekFHTVFGWmxRWVBJWEV3WlFrUUVDd1VGQ1VrSlVrbEpTUUZDd1VhUlNwcUFRRUNBeWd2R0pycExla0JDQkVhQ2hDZ01HSVRBU0VDQkFJZUJ3ZWFPaVRhQVFGSGxTY1ZMUThKWXh3ZEhTNFBEeVVsSkVvbEpDVUhEZ2NqTHdkbkNRRWJNMkFZREpycUx1a0J0ZzRtRHhlZkRBSWUvdDhDQXdJYVZpeWFFU3JaQVFBQUNnQS8vLzhEd1FPQkFDY0FPd0JIQUdFQVp3QnVBSHNBaGdDTUFKSUFBQUVlQVJjV0ZSWVVCeFFIRGdFSEJpTUdJaWNpSnk0Qkp5WTFKalEzTkRjK0FUYzJNell5RnpJVElSRVdNeFkyTnpZM1BnRTNOamMrQVNjMEp3RVVGaFVlQVJjeUZqTTFJd0VISnpjZUFSY0hKeFVPQVFjakZ3Y25OeDRCRndjV05qYzFCUlFXRlRNMUp3WVVCek0xSXpjcUFTTWlCZ2NVQmhVek5UTWxGVE0wSmpVdUFTY2lKaVVHSWdjVk16Y21JaU1WTXdNa1Bsd0NBUUVCQVFKY1BrbEpTWkpKU1VrOVhRSUJBUUVCQWx3K1NVbEpra2xKcVAyNlBUMDllajA5UFNRMUFnSUNBUUVCQXZ6OEFRSTFKQWdRQ0h3Q1FRa3VWeFlyRmk0SkFWdy9kd291VmxZTUZnd0xVWUlCL2J3QmZuMEJBWDk5dnhndUZ5VTZBUUY4UWdISGZRRUNOU1FJRVA3eklVRWdnc01nUVNHQ0E0QUNYRDVKU1VtU1NVbEpQbHdDQVFFQkFRSmNQa2xKU1pKSlNVaytYQUlCQVFIL0FQMjhBZ0VCQVFJQ0FqVWtQVDA4ZWowOVBQNDhDUkVJSkRVQ0FYNEJGZ291VmhVc0ZTNEtjejlmQWdrdVYxY01GZ3dLQVIxRmMxUWhRQ0NCd2lGQUlZTC9PQ1lZTUJsQmYzOEpFUWtrTlFJQkFnRUJmNEFCZ1FBQUFnQ2dBR0FEWUFNZ0FBc0FGd0FBQVNFVklSRWpFU0UxSVJFekJ4RWhGU0VSTXhFaE5TRVJBbUFCQVA4QXdQOEFBUURBZ1A4QUFRQkFBUUQvQUFJZ3dQOEFBUURBQVFCQS93QkEvd0FCQUVBQkFBQUFBUUZlQUtrQ29nTFhBQWNBQUFFSEZ3Y0pBUjRCQXFMcDZTMys2UUVYQ3hjQ3FlbnBMZ0VYQVJjTUZnQUNBQUQvd0FRQUE4QUFHd0EzQUFBQklnY09BUWNHRlJRWEhnRVhGak15Tno0Qk56WTFOQ2N1QVNjbUJ6SVhIZ0VYRmhVVUJ3NEJCd1lqSWljdUFTY21OVFEzUGdFM05nSUFhbDFkaXlrb0tDbUxYVjFxYWwxZGl5a29LQ21MWFYxcVhWRlNlaU1qSXlONlVsRmRYVkZTZWlNakl5TjZVbEVEd0NncGkxMWRhbXBkWFlzcEtDZ3BpMTFkYW1wZFhZc3BLRUFqSTNwU1VWMWRVVko2SXlNakkzcFNVVjFkVVZKNkl5TUFBd0FBLzhBRUFBUEFBQnNBTndCVEFBQUJJZ2NPQVFjR0ZSUVhIZ0VYRmpNeU56NEJOelkxTkNjdUFTY21CeklYSGdFWEZoVVVCdzRCQndZaklpY3VBU2NtTlRRM1BnRTNOZ0VVQnc0QkJ3WWpJaWN1QVNjbU5UUTNQZ0UzTmpNeUZ4NEJGeFlDQUdwZFhZc3BLQ2dwaTExZGFtcGRYWXNwS0NncGkxMWRhbDFSVW5vakl5TWplbEpSWFYxUlVub2pJeU1qZWxKUkFaMFpHVmM2TzBKQ096cFhHUmtaR1ZjNk8wSkNPenBYR1JrRHdDZ3BpMTFkYW1wZFhZc3BLQ2dwaTExZGFtcGRYWXNwS0VBakkzcFNVVjFkVVZKNkl5TWpJM3BTVVYxZFVWSjZJeVArUUVJN09sY1pHUmtaVnpvN1FrSTdPbGNaR1JrWlZ6bzdBQUFBQUFJQWVRQ1RBNGNDN1FBT0FCa0FBQWtCSnpjaE5TRW5OeFlYSGdFWEZpVVhJUlVoQnhjM0p3NEJBNGYrMG8xQS9tMEJrMENOSmlZbFRDVW0vc2FBL2hJQjdvQXkwOU1NR2dIQS90T05RTUJBalNVbUprc21KWHFBUUlBejA5TU5HUUFBQUFBQ0FJQUFRQU9BQTBBQURnQVpBQUFCRVNFUkl4RVVGak1oTWpZMUVTTUZOeGNISnpjWEVUTVJNUU1yL2FwVk1pTUNWaU15VmY4QWJqelYxVHh1VmdIQS90VUJLLzdWSXpJeUl3RXJIVzQ4MWRVOGJnR2QvbU1BQVFEcEFSNERGd0ppQUFjQUFBa0NOeGMzSGdFREYvN3AvdWt1NmVrTUZnSTEvdWtCRnkzcDZRc1hBQUFCQVY0QXFRS2lBdGNBQndBQUFRY1hCd2tCSGdFQ291bnBMZjdwQVJjTEZ3S3A2ZWt1QVJjQkZ3d1dBQUVCWGdDcEFxSUMxd0FNQUFBSkFTYzNKemNXRng0QkZ4WVhBcUwrNlMzcDZTMGpJeU5GSXlNakFjRCs2UzdwNlM0akl5TkdJaU1qQUFBQUFBRUE2UUVlQXhjQ1lnQUxBQUFCQnljSEp3RVdGeDRCRnhZREZ5N3A2UzRCRnlNaklrWWpJd0ZMTGVucExRRVhJeU1qUlNNakFBQUFBUURwQU80REZ3S1NBQWNBQUFrQkp6Y1hBUjRCQXhmK2liY3VpUUZKREJZQ1pmNkp0eTJKQVVrTEZ3QUJBVjRBcVFLaUF0Y0FEQUFBQ1FFbk55YzNGaGNlQVJjV0Z3S2kvdWt0NmVrdEl5TWpSU01qSXdIQS91a3U2ZWt1SXlNalJpSWpJd0FBQUFBQkFNQUJvQU5BQWVBQUF3QUFFeUVWSWNBQ2dQMkFBZUJBQUFBQUFRRHBBUjRERndKaUFBY0FBQWtDTnhjM0hnRURGLzdwL3VrdTZla01GZ0kxL3VrQkZ5M3A2UXNYQUFBQkFBQUFBUUFBRWt2aGVWOFBQUFVBQ3dRQUFBQUFBTmxCajQwQUFBQUEyVUdQalFBQS84QUVBQVBBQUFBQUNBQUNBQUFBQUFBQUFBRUFBQVBBLzhBQUFBUUFBQUFBQUFRQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBNEJBQUFBQUFBQUFBQUFBQUFBZ0FBQUFRQUFEOEVBQUJUQkFBQktRUUFBSUFFQUFEVkJBQUFBQVFBQUFBRUFBQUFCQUFBY3dRQUFNQUVBQURBQkFBQlhnUUFBS0FFQUFFcEJBQUFRQVFBQUlZRUFBRXBCQUFCWGdRQUFFTUVBQUJEQkFBQXdBUUFBUFVFQUFEQUJBQUFQd1FBQUVNRUFBRDFCQUFBZVFRQUFHQUVBQUR4QkFBQXdBUUFBTXNFQUFDQUJBQUJYZ1FBQUVBRUFBQjJCQUFBZ0FRQUFIQUVBQUEvQkFBQW9BUUFBVjRFQUFBQUJBQUFBQVFBQUhrRUFBQ0FCQUFBNlFRQUFWNEVBQUZlQkFBQTZRUUFBT2tFQUFGZUJBQUF3QVFBQU9rQUFBQUFBQW9BRkFBZUFNSUJCZ0VlQVl3QnFBSHFBaVFDV0FLR0Fwb0N2QUxTQXg0RFBnTzJCQklFS2dSSUJRZ0ZyZ1lDQmlBR2FnY01CN1lIMmdnSUNGSUljZ2lNQ0s0SXdnamdDUXdKeEFvVUNud0xWQXQrQzVRTDZneHFESndNeUF6ZURQUU5FZzB1RFVRTllnMXdEWVlBQUFBQkFBQUFPQUNUQUF3QUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGdDdUFBRUFBQUFBQUFFQUNBQUFBQUVBQUFBQUFBSUFCd0JwQUFFQUFBQUFBQU1BQ0FBNUFBRUFBQUFBQUFRQUNBQitBQUVBQUFBQUFBVUFDd0FZQUFFQUFBQUFBQVlBQ0FCUkFBRUFBQUFBQUFvQUdnQ1dBQU1BQVFRSkFBRUFFQUFJQUFNQUFRUUpBQUlBRGdCd0FBTUFBUVFKQUFNQUVBQkJBQU1BQVFRSkFBUUFFQUNHQUFNQUFRUUpBQVVBRmdBakFBTUFBUVFKQUFZQUVBQlpBQU1BQVFRSkFBb0FOQUN3UVdkQ1lXeG9ZVzBBUVFCbkFFSUFZUUJzQUdnQVlRQnRWbVZ5YzJsdmJpQXhMakFBVmdCbEFISUFjd0JwQUc4QWJnQWdBREVBTGdBd1FXZENZV3hvWVcwQVFRQm5BRUlBWVFCc0FHZ0FZUUJ0UVdkQ1lXeG9ZVzBBUVFCbkFFSUFZUUJzQUdnQVlRQnRVbVZuZFd4aGNnQlNBR1VBWndCMUFHd0FZUUJ5UVdkQ1lXeG9ZVzBBUVFCbkFFSUFZUUJzQUdnQVlRQnRSbTl1ZENCblpXNWxjbUYwWldRZ1lua2dTV052VFc5dmJpNEFSZ0J2QUc0QWRBQWdBR2NBWlFCdUFHVUFjZ0JoQUhRQVpRQmtBQ0FBWWdCNUFDQUFTUUJqQUc4QVRRQnZBRzhBYmdBdUFBQUFBd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9PVxcXCIpIGZvcm1hdChcXFwidHJ1ZXR5cGVcXFwiKTtcXG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxuICBmb250LXN0eWxlOiBub3JtYWw7IH1cXG5cXG4uYWctdGhlbWUtYmFsaGFtLWRhcmsge1xcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQzNDM2O1xcbiAgY29sb3I6ICNGNUY1RjU7XFxuICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcXFwiU2Vnb2UgVUlcXFwiLCBSb2JvdG8sIE94eWdlbi1TYW5zLCBVYnVudHUsIENhbnRhcmVsbCwgXFxcIkhlbHZldGljYSBOZXVlXFxcIiwgc2Fucy1zZXJpZjtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICBmb250LXNpemU6IDEycHg7XFxuICBsaW5lLWhlaWdodDogMTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1tZW51LCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRoZW1lLWJhbGhhbS1kYXJrLmFnLWRuZC1naG9zdCwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jZWxsLmFnLWNlbGwtaW5saW5lLWVkaXRpbmcsIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY2VsbC5hZy1wb3B1cC1lZGl0b3IsIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctc2VsZWN0LWFnZy1mdW5jLXBvcHVwLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLW92ZXJsYXktbG9hZGluZy1jZW50ZXIge1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjNDI0MjQyOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRhYi1oZWFkZXIgLmFnLXRhYiB7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xcbiAgICBtYXJnaW46IDRweDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcXG4gICAgcGFkZGluZzogNHB4IDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10YWItaGVhZGVyIC5hZy10YWIuYWctdGFiLXNlbGVjdGVkIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzJkMzQzNjtcXG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICMwMEIwRkY7XFxuICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjMmQzNDM2O1xcbiAgICBib3JkZXItY29sb3I6ICM0MjQyNDI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayBsYWJlbCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAqIHtcXG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrICo6Zm9jdXMsIC5hZy10aGVtZS1iYWxoYW0tZGFyayAqICo6YmVmb3JlLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgKiAqOmFmdGVyIHtcXG4gICAgICBvdXRsaW5lOiBub25lO1xcbiAgICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gICAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdGFiIHtcXG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBjb250ZW50LWJveDtcXG4gICAgICAgICAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMSB7XFxuICAgIHBhZGRpbmctbGVmdDogMjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDI4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yIHtcXG4gICAgcGFkZGluZy1yaWdodDogNDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMiB7XFxuICAgIHBhZGRpbmctbGVmdDogNTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDU2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDYwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTMge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA4NHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zIHtcXG4gICAgcGFkZGluZy1yaWdodDogODRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNCB7XFxuICAgIHBhZGRpbmctbGVmdDogODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDExMnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTEycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC01IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC01IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC02IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE2OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC02IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTY4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC03IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE5NnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC03IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTk2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC04IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTYwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDIyNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC04IHtcXG4gICAgcGFkZGluZy1yaWdodDogMjI0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC05IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDI1MnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC05IHtcXG4gICAgcGFkZGluZy1yaWdodDogMjUycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTEwIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyMDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTAge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyMDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDI4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xMCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDI4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xMSB7XFxuICAgIHBhZGRpbmctbGVmdDogMjIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTExIHtcXG4gICAgcGFkZGluZy1yaWdodDogMjIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTExIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAzMDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTEge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAzMDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDI0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDI0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xMiB7XFxuICAgIHBhZGRpbmctbGVmdDogMzM2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEyIHtcXG4gICAgcGFkZGluZy1yaWdodDogMzM2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTEzIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyNjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTMge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyNjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDM2NHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xMyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDM2NHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xNCB7XFxuICAgIHBhZGRpbmctbGVmdDogMjgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTE0IHtcXG4gICAgcGFkZGluZy1yaWdodDogMjgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE0IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAzOTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTQge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAzOTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDMwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xNSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDMwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xNSB7XFxuICAgIHBhZGRpbmctbGVmdDogNDIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE1IHtcXG4gICAgcGFkZGluZy1yaWdodDogNDIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTE2IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAzMjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTYge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAzMjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDQ0OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDQ0OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xNyB7XFxuICAgIHBhZGRpbmctbGVmdDogMzQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTE3IHtcXG4gICAgcGFkZGluZy1yaWdodDogMzQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE3IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0NzZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTcge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA0NzZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDM2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDM2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xOCB7XFxuICAgIHBhZGRpbmctbGVmdDogNTA0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE4IHtcXG4gICAgcGFkZGluZy1yaWdodDogNTA0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTE5IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAzODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTkge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAzODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDUzMnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xOSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDUzMnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yMCB7XFxuICAgIHBhZGRpbmctbGVmdDogNDAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTIwIHtcXG4gICAgcGFkZGluZy1yaWdodDogNDAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTIwIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA1NjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjAge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1NjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjEge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDQyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDQyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yMSB7XFxuICAgIHBhZGRpbmctbGVmdDogNTg4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTIxIHtcXG4gICAgcGFkZGluZy1yaWdodDogNTg4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTIyIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0NDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjIge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA0NDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDYxNnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDYxNnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yMyB7XFxuICAgIHBhZGRpbmctbGVmdDogNDYwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTIzIHtcXG4gICAgcGFkZGluZy1yaWdodDogNDYwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTIzIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA2NDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjMge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA2NDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDQ4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDQ4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yNCB7XFxuICAgIHBhZGRpbmctbGVmdDogNjcycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI0IHtcXG4gICAgcGFkZGluZy1yaWdodDogNjcycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTI1IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA1MDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjUge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1MDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDcwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yNSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDcwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yNiB7XFxuICAgIHBhZGRpbmctbGVmdDogNTIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTI2IHtcXG4gICAgcGFkZGluZy1yaWdodDogNTIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI2IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA3MjhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjYge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA3MjhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDU0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yNyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDU0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yNyB7XFxuICAgIHBhZGRpbmctbGVmdDogNzU2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI3IHtcXG4gICAgcGFkZGluZy1yaWdodDogNzU2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTI4IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA1NjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjgge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1NjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDc4NHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDc4NHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yOSB7XFxuICAgIHBhZGRpbmctbGVmdDogNTgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTI5IHtcXG4gICAgcGFkZGluZy1yaWdodDogNTgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI5IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA4MTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjkge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA4MTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDYwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zMCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDYwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zMCB7XFxuICAgIHBhZGRpbmctbGVmdDogODQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTMwIHtcXG4gICAgcGFkZGluZy1yaWdodDogODQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTMxIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA2MjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzEge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA2MjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzEge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDg2OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDg2OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0zMiB7XFxuICAgIHBhZGRpbmctbGVmdDogNjQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTMyIHtcXG4gICAgcGFkZGluZy1yaWdodDogNjQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTMyIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA4OTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzIge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA4OTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDY2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zMyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDY2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zMyB7XFxuICAgIHBhZGRpbmctbGVmdDogOTI0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTMzIHtcXG4gICAgcGFkZGluZy1yaWdodDogOTI0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTM0IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA2ODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzQge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA2ODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDk1MnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDk1MnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0zNSB7XFxuICAgIHBhZGRpbmctbGVmdDogNzAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTM1IHtcXG4gICAgcGFkZGluZy1yaWdodDogNzAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTM1IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA5ODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzUge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA5ODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDcyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDcyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zNiB7XFxuICAgIHBhZGRpbmctbGVmdDogMTAwOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEwMDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDc0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zNyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDc0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zNyB7XFxuICAgIHBhZGRpbmctbGVmdDogMTAzNnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zNyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEwMzZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDc2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDc2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zOCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTA2NHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEwNjRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDc4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zOSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDc4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zOSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTA5MnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zOSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEwOTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDgwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00MCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDgwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00MCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTEyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00MCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDExMjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDEge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDgyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00MSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDgyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00MSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTE0OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00MSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDExNDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDg0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00MiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDg0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00MiB7XFxuICAgIHBhZGRpbmctbGVmdDogMTE3NnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00MiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDExNzZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDg2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00MyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDg2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00MyB7XFxuICAgIHBhZGRpbmctbGVmdDogMTIwNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00MyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEyMDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDg4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00NCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDg4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00NCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTIzMnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00NCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEyMzJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDkwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00NSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDkwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00NSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTI2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00NSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEyNjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDkyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00NiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDkyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00NiB7XFxuICAgIHBhZGRpbmctbGVmdDogMTI4OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00NiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEyODhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDk0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00NyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDk0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00NyB7XFxuICAgIHBhZGRpbmctbGVmdDogMTMxNnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00NyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEzMTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDk2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00OCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDk2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00OCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTM0NHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00OCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEzNDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDk4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00OSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDk4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00OSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTM3MnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00OSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEzNzJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jZWxsIC5hZy1pY29uIHtcXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNoZWNrYm94LCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJhZGlvLWJ1dHRvbiwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10b2dnbGUtYnV0dG9uIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBjdXJzb3I6IGRlZmF1bHQ7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jaGVja2JveCBsYWJlbCwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1yYWRpby1idXR0b24gbGFiZWwsIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdG9nZ2xlLWJ1dHRvbiBsYWJlbCB7XFxuICAgICAgY3Vyc29yOiBkZWZhdWx0OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jaGVja2JveCBsYWJlbDplbXB0eSwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1yYWRpby1idXR0b24gbGFiZWw6ZW1wdHksIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdG9nZ2xlLWJ1dHRvbiBsYWJlbDplbXB0eSB7XFxuICAgICAgICBtYXJnaW46IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jaGVja2JveDpub3QoLmFnLWxhYmVsLWFsaWduLWxlZnQpIGxhYmVsLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJhZGlvLWJ1dHRvbjpub3QoLmFnLWxhYmVsLWFsaWduLWxlZnQpIGxhYmVsLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRvZ2dsZS1idXR0b246bm90KC5hZy1sYWJlbC1hbGlnbi1sZWZ0KSBsYWJlbCB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jZWxsIHtcXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogc3VicGl4ZWwtYW50aWFsaWFzZWQ7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtbGVhZi1pbmRlbnQge1xcbiAgICBtYXJnaW4tbGVmdDogMjhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLWNlbGwge1xcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy5hZy1jZWxsLWZpcnN0LXJpZ2h0LXBpbm5lZCwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLWNlbGw6bm90KC5hZy1jZWxsLWZvY3VzKS5hZy1jZWxsLWZpcnN0LXJpZ2h0LXBpbm5lZCB7XFxuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgIzQyNDI0MjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLXJvdy5hZy1jZWxsLWxhc3QtbGVmdC1waW5uZWQsIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1jZWxsOm5vdCguYWctY2VsbC1mb2N1cykuYWctY2VsbC1sYXN0LWxlZnQtcGlubmVkIHtcXG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgIzQyNDI0MjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1sZWFmLWluZGVudCB7XFxuICAgIG1hcmdpbi1yaWdodDogMjhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWNlbGwge1xcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHRyYW5zcGFyZW50OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LmFnLWNlbGwtZmlyc3QtcmlnaHQtcGlubmVkLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctY2VsbDpub3QoLmFnLWNlbGwtZm9jdXMpLmFnLWNlbGwtZmlyc3QtcmlnaHQtcGlubmVkIHtcXG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjNDI0MjQyOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctcm93LmFnLWNlbGwtbGFzdC1sZWZ0LXBpbm5lZCwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWNlbGw6bm90KC5hZy1jZWxsLWZvY3VzKS5hZy1jZWxsLWxhc3QtbGVmdC1waW5uZWQge1xcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjNDI0MjQyOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXZhbHVlLWNoYW5nZS1kZWx0YSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy12YWx1ZS1jaGFuZ2UtZGVsdGEtdXAge1xcbiAgICBjb2xvcjogIzQzYTA0NzsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy12YWx1ZS1jaGFuZ2UtZGVsdGEtZG93biB7XFxuICAgIGNvbG9yOiAjZTUzOTM1OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXZhbHVlLWNoYW5nZS12YWx1ZSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICBib3JkZXItcmFkaXVzOiAxcHg7XFxuICAgIHBhZGRpbmctbGVmdDogMXB4O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxcHg7XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxcztcXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxczsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy12YWx1ZS1jaGFuZ2UtdmFsdWUtaGlnaGxpZ2h0IHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMiwgMTYwLCAxMzMsIDAuNSk7XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjFzO1xcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMXM7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaW5wdXQtd3JhcHBlciBpbnB1dDpub3QoW3R5cGVdKSxcXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJ0ZXh0XFxcIl0sXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwibnVtYmVyXFxcIl0sXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwidGVsXFxcIl0sXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZVxcXCJdLFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcImRhdGV0aW1lLWxvY2FsXFxcIl0ge1xcbiAgICBib3JkZXItd2lkdGg6IDFweDtcXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gICAgYm9yZGVyLWNvbG9yOiAjZWNmMGYxOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaW5wdXQtd3JhcHBlciBpbnB1dDpub3QoW3R5cGVdKTpkaXNhYmxlZCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcInRleHRcXFwiXTpkaXNhYmxlZCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcIm51bWJlclxcXCJdOmRpc2FibGVkLFxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwidGVsXFxcIl06ZGlzYWJsZWQsXFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJkYXRlXFxcIl06ZGlzYWJsZWQsXFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJkYXRldGltZS1sb2NhbFxcXCJdOmRpc2FibGVkIHtcXG4gICAgICBjb2xvcjogcmdiYSgyNDUsIDI0NSwgMjQ1LCAwLjM4KTtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQ4LCA0NiwgNDYsIDAuMyk7XFxuICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDIzNiwgMjQwLCAyNDEsIDAuMyk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJkYXRlXFxcIl0ge1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICAgICAgICAgIGZsZXg6IDEgMSBhdXRvOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwicmFuZ2VcXFwiXSB7XFxuICAgIHBhZGRpbmc6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaW5wdXQtd3JhcHBlciB0ZXh0YXJlYSB7XFxuICAgIGJvcmRlci13aWR0aDogMXB4O1xcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xcbiAgICBib3JkZXItY29sb3I6ICNlY2YwZjE7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pbnB1dC13cmFwcGVyIHRleHRhcmVhOmRpc2FibGVkIHtcXG4gICAgICBjb2xvcjogcmdiYSgyNDUsIDI0NSwgMjQ1LCAwLjM4KTtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQ4LCA0NiwgNDYsIDAuMyk7XFxuICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDIzNiwgMjQwLCAyNDEsIDAuMyk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaGVhZGVyIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzFjMWYyMDtcXG4gICAgY29sb3I6IHJnYmEoMjQ1LCAyNDUsIDI0NSwgMC42NCk7XFxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICAgIGZvbnQtc2l6ZTogMTJweDtcXG4gICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXFxcIlNlZ29lIFVJXFxcIiwgUm9ib3RvLCBPeHlnZW4tU2FucywgVWJ1bnR1LCBDYW50YXJlbGwsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIHNhbnMtc2VyaWY7XFxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNDI0MjQyOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXBpbm5lZC1yaWdodC1oZWFkZXIge1xcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICM0MjQyNDI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcGlubmVkLWxlZnQtaGVhZGVyIHtcXG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgIzQyNDI0MjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1oZWFkZXItcm93IHtcXG4gICAgYm9yZGVyOiBub25lOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJvdyB7XFxuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XFxuICAgIGJvcmRlci1jb2xvcjogIzQyNDI0MjtcXG4gICAgYm9yZGVyLXdpZHRoOiAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcm93Om5vdCguYWctcm93LWZpcnN0KSB7XFxuICAgICAgYm9yZGVyLXdpZHRoOiAxcHggMCAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcm93LmFnLXJvdy1sYXN0IHtcXG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcm93LW9kZCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMyNjJjMmU7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcm93LWV2ZW4ge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQzNDM2OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWhvcml6b250YWwtbGVmdC1zcGFjZXIge1xcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjNDI0MjQyOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaG9yaXpvbnRhbC1sZWZ0LXNwYWNlci5hZy1zY3JvbGxlci1jb3JuZXIge1xcbiAgICAgIGJvcmRlci1yaWdodDogbm9uZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ob3Jpem9udGFsLXJpZ2h0LXNwYWNlciB7XFxuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgIzQyNDI0MjsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWhvcml6b250YWwtcmlnaHQtc3BhY2VyLmFnLXNjcm9sbGVyLWNvcm5lciB7XFxuICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcm93LWhvdmVyIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzNkNDc0OTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1udW1lcmljLWNlbGwge1xcbiAgICB0ZXh0LWFsaWduOiByaWdodDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1oZWFkZXItY2VsbC1sYWJlbCAuYWctaGVhZGVyLWljb24ge1xcbiAgICBtYXJnaW4tbGVmdDogNHB4O1xcbiAgICBvcGFjaXR5OiAwLjg3OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWhlYWRlci1jZWxsLFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1oZWFkZXItZ3JvdXAtY2VsbCB7XFxuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XFxuICAgIGJvcmRlci1jb2xvcjogIzQyNDI0MjtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMnB4O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMnB4O1xcbiAgICBib3JkZXItd2lkdGg6IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1oZWFkZXItY2VsbC5hZy1oZWFkZXItY2VsbC1tb3ZpbmcsXFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaGVhZGVyLWdyb3VwLWNlbGwuYWctaGVhZGVyLWNlbGwtbW92aW5nIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQzNDM2OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaGVhZGVyLWNlbGw6bm90KC5hZy1oZWFkZXItZ3JvdXAtY2VsbC1uby1ncm91cCksXFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaGVhZGVyLWdyb3VwLWNlbGw6bm90KC5hZy1oZWFkZXItZ3JvdXAtY2VsbC1uby1ncm91cCkge1xcbiAgICAgIGJvcmRlci10b3Atd2lkdGg6IDFweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1oZWFkZXItcm93OmZpcnN0LWNoaWxkIC5hZy1oZWFkZXItY2VsbCwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1oZWFkZXItcm93OmZpcnN0LWNoaWxkIC5hZy1oZWFkZXItZ3JvdXAtY2VsbCB7XFxuICAgIGJvcmRlci10b3Atd2lkdGg6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaGVhZGVyLWNlbGwtcmVzaXplIHtcXG4gICAgY3Vyc29yOiBjb2wtcmVzaXplOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWhlYWRlci1zZWxlY3QtYWxsIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAxMnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNlbGwge1xcbiAgICBsaW5lLWhlaWdodDogMjZweDtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMnB4O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMnB4O1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMXB4O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMXB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJvdy1kcmFnIHtcXG4gICAgY3Vyc29yOiBtb3ZlO1xcbiAgICBjdXJzb3I6IC13ZWJraXQtZ3JhYjtcXG4gICAgY3Vyc29yOiBncmFiO1xcbiAgICBtaW4td2lkdGg6IDI4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcm93LWRyYWdnaW5nLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJvdy1kcmFnZ2luZyAuYWctcm93LWRyYWcge1xcbiAgICBjdXJzb3I6IG1vdmU7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLWRyYWcge1xcbiAgICBjdXJzb3I6IG1vdmU7XFxuICAgIGN1cnNvcjogLXdlYmtpdC1ncmFiO1xcbiAgICBjdXJzb3I6IGdyYWI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcm93LWRyYWdnaW5nIHtcXG4gICAgb3BhY2l0eTogMC41OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctaGFzLWZvY3VzIC5hZy1jZWxsLWZvY3VzOm5vdCguYWctY2VsbC1yYW5nZS1zZWxlY3RlZCksXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctaGFzLWZvY3VzIC5hZy1jZWxsLWZvY3VzLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwsXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctY2VsbC1mb2N1cy5hZy1jZWxsLXJhbmdlLXNpbmdsZS1jZWxsLmFnLWNlbGwtcmFuZ2UtaGFuZGxlLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctaGFzLWZvY3VzIC5hZy1jZWxsLWZvY3VzOm5vdCguYWctY2VsbC1yYW5nZS1zZWxlY3RlZCksXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctaGFzLWZvY3VzIC5hZy1jZWxsLWZvY3VzLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwsXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctY2VsbC1mb2N1cy5hZy1jZWxsLXJhbmdlLXNpbmdsZS1jZWxsLmFnLWNlbGwtcmFuZ2UtaGFuZGxlIHtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgIzAwQjBGRjtcXG4gICAgb3V0bGluZTogaW5pdGlhbDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1oZWFkZXItY2VsbC1yZXNpemUge1xcbiAgICB3aWR0aDogOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLW1lbnUge1xcbiAgICBiYWNrZ3JvdW5kOiAjMmQzNDM2O1xcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xcbiAgICBwYWRkaW5nOiA0cHg7XFxuICAgIHBhZGRpbmc6IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1tZW51IC5hZy1tZW51LWxpc3Qge1xcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XFxuICAgICAgbWFyZ2luLXRvcDogNHB4O1xcbiAgICAgIHdpZHRoOiAxMDAlOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbWVudSAuYWctbWVudS1vcHRpb24tYWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Q0NzQ5OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbWVudSAuYWctbWVudS1vcHRpb24tZGlzYWJsZWQge1xcbiAgICAgIG9wYWNpdHk6IDAuNTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLW1lbnUgLmFnLW1lbnUtb3B0aW9uLXRleHQge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1tZW51IC5hZy1tZW51LW9wdGlvbi1pY29uIHtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDRweDtcXG4gICAgICBwYWRkaW5nLXJpZ2h0OiA0cHg7XFxuICAgICAgbWluLXdpZHRoOiAyNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbWVudSAuYWctbWVudS1vcHRpb24tc2hvcnRjdXQge1xcbiAgICAgIHBhZGRpbmctbGVmdDogOHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbWVudSAuYWctbWVudS1zZXBhcmF0b3Ige1xcbiAgICAgIGhlaWdodDogOHB4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1tZW51IC5hZy1tZW51LXNlcGFyYXRvciA+IHNwYW4ge1xcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIwd2lkdGglM0QnMSclMjBoZWlnaHQlM0QnOHB4JyUyMHZpZXdCb3glM0QnMCUyMDAlMjAxJTIwOHB4JyUyMHhtbG5zJTNEJ2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyclM0UlM0NsaW5lJTIweDElM0QnMCclMjB5MSUzRCc0cHgnJTIweDIlM0QnMSclMjB5MiUzRCc0cHgnJTIwc3Ryb2tlLXdpZHRoJTNEJzEnJTIwc3Ryb2tlJTNEJyUyMzQyNDI0MiclMkYlM0UlM0MlMkZzdmclM0VcXFwiKTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLW1lbnUgLmFnLW1lbnUtb3B0aW9uLXBvcHVwLXBvaW50ZXIge1xcbiAgICAgIHdpZHRoOiAyNHB4O1xcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrLmFnLWRuZC1naG9zdCB7XFxuICAgIGJhY2tncm91bmQ6ICMyZDM0MzY7XFxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lO1xcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XFxuICAgIHBhZGRpbmc6IDRweDtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgIzQyNDI0MjtcXG4gICAgY29sb3I6IHJnYmEoMjQ1LCAyNDUsIDI0NSwgMC42NCk7XFxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICAgIGZvbnQtc2l6ZTogMTJweDtcXG4gICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXFxcIlNlZ29lIFVJXFxcIiwgUm9ib3RvLCBPeHlnZW4tU2FucywgVWJ1bnR1LCBDYW50YXJlbGwsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIHNhbnMtc2VyaWY7XFxuICAgIGhlaWdodDogMzJweCAhaW1wb3J0YW50O1xcbiAgICBsaW5lLWhlaWdodDogMzJweDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBwYWRkaW5nOiAwIDhweDtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoOHB4KTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoOHB4KTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsuYWctZG5kLWdob3N0IHNwYW4sXFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyay5hZy1kbmQtZ2hvc3QgZGl2IHtcXG4gICAgICBoZWlnaHQ6IDEwMCU7XFxuICAgICAgbWFyZ2luOiAwO1xcbiAgICAgIHBhZGRpbmc6IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrLmFnLWRuZC1naG9zdCAuYWctZG5kLWdob3N0LWljb24ge1xcbiAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xcbiAgICAgIG9wYWNpdHk6IDAuODc7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdGFiLWhlYWRlciB7XFxuICAgIGJhY2tncm91bmQ6ICMxYzFmMjA7XFxuICAgIG1pbi13aWR0aDogMjIwcHg7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10YWItaGVhZGVyIC5hZy10YWIge1xcbiAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgICAgIGhlaWdodDogMTZweDtcXG4gICAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgICAtbXMtZmxleDogbm9uZTtcXG4gICAgICAgICAgICAgIGZsZXg6IG5vbmU7XFxuICAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10YWItYm9keSB7XFxuICAgIHBhZGRpbmc6IDJweCAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdGFiLWJvZHkgLmFnLW1lbnUtbGlzdCB7XFxuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcXG4gICAgICBtYXJnaW4tdG9wOiAwOyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10YWItYm9keSAuYWctbWVudS1saXN0ID4gZGl2OmZpcnN0LWNoaWxkID4gc3BhbiB7XFxuICAgICAgICBwYWRkaW5nLXRvcDogMDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdGFiLWJvZHkgLmFnLW1lbnUtbGlzdCA+IGRpdjpsYXN0LWNoaWxkID4gc3BhbiB7XFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdGFiLWJvZHkgLmFnLW1lbnUtbGlzdCA+IGRpdjpsYXN0LWNoaWxkID4gLmFnLW1lbnUtb3B0aW9uLXBvcHVwLXBvaW50ZXIge1xcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbi15OiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWZpbHRlciAuYWctZmlsdGVyLXNlbGVjdCwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1maWx0ZXIgLmFnLWZpbHRlci1ib2R5IHtcXG4gICAgbWFyZ2luLWJvdHRvbTogNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWZpbHRlciAuYWctZmlsdGVyLWJvZHkge1xcbiAgICBtYXJnaW4tdG9wOiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWZpbHRlciAuYWctZmlsdGVyLWZpbHRlciB7XFxuICAgIG1hcmdpbi1sZWZ0OiA0cHg7XFxuICAgIG1hcmdpbi1yaWdodDogNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWZpbHRlciAuYWctZmlsdGVyLXNlbGVjdCB7XFxuICAgIG1hcmdpbjogNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWZpbHRlciBpbnB1dFt0eXBlPVxcXCJyYWRpb1xcXCJdIHtcXG4gICAgbWFyZ2luOiAwIDNweCAwIDZweDtcXG4gICAgd2lkdGg6IDEycHg7XFxuICAgIGhlaWdodDogMTdweDtcXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1maWx0ZXIgaW5wdXRbdHlwZT1cXFwidGV4dFxcXCJdLFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1maWx0ZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZVxcXCJdIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZmlsdGVyIC5hZy1zZXQtZmlsdGVyLWxpc3Qge1xcbiAgICBoZWlnaHQ6IDE2OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWZpbHRlciAuYWctc2V0LWZpbHRlci1pdGVtIHtcXG4gICAgaGVpZ2h0OiAyOHB4O1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1maWx0ZXIgLmFnLXNldC1maWx0ZXItaXRlbSA+IGRpdiwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1maWx0ZXIgLmFnLXNldC1maWx0ZXItaXRlbSA+IHNwYW4ge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7XFxuICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgICAgZGlzcGxheTogZmxleDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1maWx0ZXIgLmFnLWZpbHRlci1oZWFkZXItY29udGFpbmVyOm50aC1jaGlsZCgyKSB7XFxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNDI0MjQyOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWZpbHRlciAuYWctZmlsdGVyLWFwcGx5LXBhbmVsIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7XFxuICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7XFxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG4gICAgcGFkZGluZzogNHB4O1xcbiAgICBwYWRkaW5nLXRvcDogOHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZmlsdGVyIC5hZy1maWx0ZXItYXBwbHktcGFuZWwgYnV0dG9uIHtcXG4gICAgICBsaW5lLWhlaWdodDogMS41OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZmlsdGVyIC5hZy1maWx0ZXItYXBwbHktcGFuZWwgYnV0dG9uICsgYnV0dG9uIHtcXG4gICAgICBtYXJnaW4tbGVmdDogOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCxcXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uIHtcXG4gICAgaGVpZ2h0OiAxNnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLWdyb3VwIC5hZy1jb2x1bW4tc2VsZWN0LWNoZWNrYm94LFxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLWxhYmVsLFxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCAuYWctY29sdW1uLWdyb3VwLWljb25zLFxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbiAuYWctY29sdW1uLXNlbGVjdC1jaGVja2JveCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4gLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1sYWJlbCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4gLmFnLWNvbHVtbi1ncm91cC1pY29ucyB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1wcmltYXJ5LWNvbHMtbGlzdC1wYW5lbCB7XFxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjNDI0MjQyO1xcbiAgICBwYWRkaW5nLXRvcDogNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctcHJpbWFyeS1jb2xzLWxpc3QtcGFuZWwgPiBkaXYge1xcbiAgICAgIGN1cnNvcjogcG9pbnRlcjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4uYWctdG9vbHBhbmVsLWFkZC1ncm91cC1pbmRlbnQge1xcbiAgICBtYXJnaW4tbGVmdDogMjRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wcmltYXJ5LWNvbHMtaGVhZGVyLXBhbmVsIHtcXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICM0MjQyNDI7XFxuICAgIGhlaWdodDogMzJweDtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXByaW1hcnktY29scy1oZWFkZXItcGFuZWwgPiBkaXYge1xcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgICBtYXJnaW46IDAgNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcHJpbWFyeS1jb2xzLWhlYWRlci1wYW5lbCAuYWctZmlsdGVyLWJvZHkge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7XFxuICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdG9vbC1wYW5lbC13cmFwcGVyIHtcXG4gICAgYm9yZGVyLXJpZ2h0OiAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1maWx0ZXItcGFuZWwge1xcbiAgICAgIHdpZHRoOiAxMDAlOyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWZpbHRlci1wYW5lbCAuYWctZmlsdGVyLXRvb2xwYW5lbC1pbnN0YW5jZSB7XFxuICAgICAgICBjb2xvcjogcmdiYSgyNDUsIDI0NSwgMjQ1LCAwLjY0KTtcXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICAgICAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgICAgICAgIC1tcy1mbGV4OiBhdXRvO1xcbiAgICAgICAgICAgICAgICBmbGV4OiBhdXRvO1xcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG4gICAgICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgICAgICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgLW1zLWZsZXgtd3JhcDogbm93cmFwO1xcbiAgICAgICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICAtbXMtZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xcbiAgICAgICAgICAgIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDsgfVxcbiAgICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWZpbHRlci1wYW5lbCAuYWctZmlsdGVyLXRvb2xwYW5lbC1pbnN0YW5jZSAuYWctZmlsdGVyLXRvb2xwYW5lbC1oZWFkZXIge1xcbiAgICAgICAgICBwYWRkaW5nOiAwIDVweDsgfVxcbiAgICAgICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctZmlsdGVyLXBhbmVsIC5hZy1maWx0ZXItdG9vbHBhbmVsLWluc3RhbmNlIC5hZy1maWx0ZXItdG9vbHBhbmVsLWhlYWRlciA+IGRpdiB7XFxuICAgICAgICAgICAgbWFyZ2luOiBhdXRvIDA7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctZmlsdGVyLXBhbmVsIC5hZy1maWx0ZXItYm9keS13cmFwcGVyIHtcXG4gICAgICAgIHBhZGRpbmctdG9wOiA1cHg7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctZmlsdGVyLXBhbmVsIC5hZy1maWx0ZXItYWlyIHtcXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM0MjQyNDI7XFxuICAgICAgICBib3JkZXItbGVmdDogMDtcXG4gICAgICAgIGJvcmRlci1yaWdodDogMDtcXG4gICAgICAgIHBhZGRpbmc6IDRweCAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1waXZvdC1tb2RlLXBhbmVsIHtcXG4gICAgICBoZWlnaHQ6IDMycHg7XFxuICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgICAtbXMtZmxleDogbm9uZTtcXG4gICAgICAgICAgICAgIGZsZXg6IG5vbmU7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctcGl2b3QtbW9kZS1wYW5lbCAuYWctcGl2b3QtbW9kZS1zZWxlY3Qge1xcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgICBtYXJnaW4tbGVmdDogNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIHtcXG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzQyNDI0MjtcXG4gICAgICBwYWRkaW5nLWJvdHRvbTogM3B4O1xcbiAgICAgIHBhZGRpbmctdG9wOiAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1jb2x1bW4tZHJvcCB7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM0MjQyNDI7XFxuICAgICAgcGFkZGluZzogNHB4IDA7XFxuICAgICAgcGFkZGluZy1ib3R0b206IDhweDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1jb2x1bW4tZHJvcCAuYWctY29sdW1uLWRyb3AtZW1wdHktbWVzc2FnZSB7XFxuICAgICAgICBjb2xvcjogcmdiYSgyNDUsIDI0NSwgMjQ1LCAwLjM4KTtcXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICAgICAgICBmb250LXNpemU6IDEycHg7XFxuICAgICAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcXFwiU2Vnb2UgVUlcXFwiLCBSb2JvdG8sIE94eWdlbi1TYW5zLCBVYnVudHUsIENhbnRhcmVsbCwgXFxcIkhlbHZldGljYSBOZXVlXFxcIiwgc2Fucy1zZXJpZjtcXG4gICAgICAgIHBhZGRpbmctbGVmdDogMjRweDtcXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDRweDtcXG4gICAgICAgIG1hcmdpbi10b3A6IDRweDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1jb2x1bW4tZHJvcCAuYWctY29sdW1uLWRyb3AtbGlzdCB7XFxuICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XFxuICAgICAgICBtYXJnaW4tdG9wOiA0cHg7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctY29sdW1uLWRyb3AgPiBkaXYgPiA6Zmlyc3QtY2hpbGQge1xcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcXG4gICAgICAgIG1hcmdpbi1yaWdodDogNHB4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWNvbHVtbi1kcm9wOmxhc3QtY2hpbGQge1xcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1udW1lcmljLWhlYWRlciAuYWctaGVhZGVyLWNlbGwtbGFiZWwgLmFnLWhlYWRlci1pY29uIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDA7XFxuICAgIG1hcmdpbi1yaWdodDogNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXBhZ2luZy1wYW5lbCB7XFxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjNDI0MjQyO1xcbiAgICBjb2xvcjogcmdiYSgyNDUsIDI0NSwgMjQ1LCAwLjY0KTtcXG4gICAgaGVpZ2h0OiAzMnB4O1xcbiAgICBwYWRkaW5nOiAwIDEycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wYWdpbmctcGFuZWwgPiBzcGFuIHtcXG4gICAgICBtYXJnaW4tbGVmdDogMTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wYWdpbmctcGFnZS1zdW1tYXJ5LXBhbmVsIC5hZy1pY29uIHtcXG4gICAgd2lkdGg6IDE2cHg7XFxuICAgIGhlaWdodDogMTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wYWdpbmctcGFnZS1zdW1tYXJ5LXBhbmVsIC5hZy1wYWdpbmctYnV0dG9uIGJ1dHRvbiB7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgb3BhY2l0eTogMDtcXG4gICAgdG9wOiAwO1xcbiAgICByaWdodDogMDtcXG4gICAgYm90dG9tOiAwO1xcbiAgICBsZWZ0OiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXBhZ2luZy1wYWdlLXN1bW1hcnktcGFuZWwgLmFnLXBhZ2luZy1idXR0b24uYWctZGlzYWJsZWQgLmFnLWljb24ge1xcbiAgICBjb2xvcjogcmdiYSgyNDUsIDI0NSwgMjQ1LCAwLjM4KTtcXG4gICAgb3BhY2l0eTogMC4zODsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wYWdpbmctcGFnZS1zdW1tYXJ5LXBhbmVsIC5hZy1wYWdpbmctYnV0dG9uLmFnLWRpc2FibGVkIGJ1dHRvbiB7XFxuICAgIGN1cnNvcjogZGVmYXVsdDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wYWdpbmctcGFnZS1zdW1tYXJ5LXBhbmVsIHNwYW4ge1xcbiAgICBtYXJnaW46IDAgNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJvdy1zZWxlY3RlZCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDU4ODA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQ6bm90KC5hZy1jZWxsLXJhbmdlLXNpbmdsZS1jZWxsKSwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwpIHtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwpLmFnLWNlbGwtcmFuZ2UtdG9wLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkuYWctY2VsbC1yYW5nZS10b3Age1xcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICMwMEIwRkY7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwpLmFnLWNlbGwtcmFuZ2UtcmlnaHQsIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQ6bm90KC5hZy1jZWxsLXJhbmdlLXNpbmdsZS1jZWxsKS5hZy1jZWxsLXJhbmdlLXJpZ2h0IHtcXG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICMwMEIwRkY7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwpLmFnLWNlbGwtcmFuZ2UtYm90dG9tLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkuYWctY2VsbC1yYW5nZS1ib3R0b20ge1xcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICMwMEIwRkY7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwpLmFnLWNlbGwtcmFuZ2UtbGVmdCwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwpLmFnLWNlbGwtcmFuZ2UtbGVmdCB7XFxuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICMwMEIwRkY7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtZm9jdXMpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxNzYsIDI1NSwgMC4yKTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQ6bm90KC5hZy1jZWxsLWZvY3VzKS5hZy1jZWxsLXJhbmdlLWNoYXJ0IHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQ1LCAxNjYsIDI1NSwgMC41KTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQ6bm90KC5hZy1jZWxsLWZvY3VzKS5hZy1jZWxsLXJhbmdlLWNoYXJ0LmFnLWNlbGwtcmFuZ2UtY2hhcnQtY2F0ZWdvcnkge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjYsIDE3NywgNzQsIDAuNSk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY2VsbC1yYW5nZS1zZWxlY3RlZC0xOm5vdCguYWctY2VsbC1mb2N1cykge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDE3NiwgMjU1LCAwLjMpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQtMjpub3QoLmFnLWNlbGwtZm9jdXMpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxNzYsIDI1NSwgMC40KTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLTM6bm90KC5hZy1jZWxsLWZvY3VzKSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTc2LCAyNTUsIDAuNSk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY2VsbC1yYW5nZS1zZWxlY3RlZC00Om5vdCguYWctY2VsbC1mb2N1cykge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDE3NiwgMjU1LCAwLjYpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctc2VsZWN0aW9uLWZpbGwtdG9wLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWZpbGwtdG9wIHtcXG4gICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCAjMDBCMEZGOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1zZWxlY3Rpb24tZmlsbC10b3AuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWZpbGwtdG9wLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZCB7XFxuICAgICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCAjMGYwZjBmOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctc2VsZWN0aW9uLWZpbGwtcmlnaHQsIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1zZWxlY3Rpb24tZmlsbC1yaWdodCB7XFxuICAgIGJvcmRlci1yaWdodDogMXB4IGRhc2hlZCAjMDBCMEZGOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1zZWxlY3Rpb24tZmlsbC1yaWdodC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQsIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1zZWxlY3Rpb24tZmlsbC1yaWdodC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQge1xcbiAgICAgIGJvcmRlci1yaWdodDogMXB4IGRhc2hlZCAjMGYwZjBmOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctc2VsZWN0aW9uLWZpbGwtYm90dG9tLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWZpbGwtYm90dG9tIHtcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCAjMDBCMEZGOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1zZWxlY3Rpb24tZmlsbC1ib3R0b20uYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWZpbGwtYm90dG9tLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZCB7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCAjMGYwZjBmOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctc2VsZWN0aW9uLWZpbGwtbGVmdCwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1maWxsLWxlZnQge1xcbiAgICBib3JkZXItbGVmdDogMXB4IGRhc2hlZCAjMDBCMEZGOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1zZWxlY3Rpb24tZmlsbC1sZWZ0LmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZCwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1maWxsLWxlZnQuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkIHtcXG4gICAgICBib3JkZXItbGVmdDogMXB4IGRhc2hlZCAjMGYwZjBmOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWZpbGwtaGFuZGxlLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJhbmdlLWhhbmRsZSB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgd2lkdGg6IDZweDtcXG4gICAgaGVpZ2h0OiA2cHg7XFxuICAgIGJvdHRvbTogLTFweDtcXG4gICAgcmlnaHQ6IC0xcHg7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMEIwRkY7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZmlsbC1oYW5kbGUge1xcbiAgICBjdXJzb3I6IGNlbGw7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcmFuZ2UtaGFuZGxlIHtcXG4gICAgY3Vyc29yOiBud3NlLXJlc2l6ZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jZWxsLmFnLWNlbGwtaW5saW5lLWVkaXRpbmcge1xcbiAgICBwYWRkaW5nOiAxMnB4O1xcbiAgICBoZWlnaHQ6IDQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY2VsbC5hZy1jZWxsLWlubGluZS1lZGl0aW5nLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNlbGwuYWctcG9wdXAtZWRpdG9yIHtcXG4gICAgYmFja2dyb3VuZDogIzJkMzQzNjtcXG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7XFxuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcXG4gICAgcGFkZGluZzogNHB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWMxZjIwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXBvcHVwLWVkaXRvciB7XFxuICAgIHBhZGRpbmc6IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wb3B1cC1lZGl0b3IgLmFnLWxhcmdlLXRleHRhcmVhIHRleHRhcmVhIHtcXG4gICAgICBoZWlnaHQ6IGF1dG87XFxuICAgICAgcGFkZGluZzogMTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1yaWNoLXNlbGVjdCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMxYzFmMjA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1yaWNoLXNlbGVjdCAuYWctcmljaC1zZWxlY3QtbGlzdCB7XFxuICAgICAgd2lkdGg6IDIwMHB4O1xcbiAgICAgIGhlaWdodDogMTgycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1yaWNoLXNlbGVjdCAuYWctcmljaC1zZWxlY3QtdmFsdWUge1xcbiAgICAgIHBhZGRpbmc6IDAgNHB4IDAgMTJweDtcXG4gICAgICBoZWlnaHQ6IDI4cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1yaWNoLXNlbGVjdCAuYWctdmlydHVhbC1saXN0LWl0ZW0ge1xcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgICBoZWlnaHQ6IDI4cHg7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJpY2gtc2VsZWN0IC5hZy12aXJ0dWFsLWxpc3QtaXRlbTpob3ZlciB7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Q0NzQ5OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcmljaC1zZWxlY3QgLmFnLXJpY2gtc2VsZWN0LXJvdyB7XFxuICAgICAgcGFkZGluZy1sZWZ0OiAxMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcmljaC1zZWxlY3QgLmFnLXJpY2gtc2VsZWN0LXJvdy1zZWxlY3RlZCB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNTg4MDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLWZsb2F0aW5nLWZpbHRlci1idXR0b24ge1xcbiAgICBtYXJnaW4tbGVmdDogMTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1mbG9hdGluZy1maWx0ZXItYnV0dG9uIGJ1dHRvbiB7XFxuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcXG4gICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xcbiAgICAgICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7XFxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgICBib3JkZXI6IDA7XFxuICAgIGhlaWdodDogMTZweDtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgd2lkdGg6IDE2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctc2VsZWN0aW9uLWNoZWNrYm94Om5vdCguYWctaGlkZGVuKSB+IC5hZy1jZWxsLXZhbHVlOm5vdCg6ZW1wdHkpLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXNlbGVjdGlvbi1jaGVja2JveDpub3QoLmFnLWhpZGRlbikgKyAuYWctZ3JvdXAtdmFsdWU6bm90KDplbXB0eSksXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWdyb3VwLWV4cGFuZGVkOm5vdCguYWctaGlkZGVuKSB+IC5hZy1jZWxsLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ncm91cC1leHBhbmRlZDpub3QoLmFnLWhpZGRlbikgKyAuYWctZ3JvdXAtdmFsdWU6bm90KDplbXB0eSksXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWdyb3VwLWNvbnRyYWN0ZWQ6bm90KC5hZy1oaWRkZW4pIH4gLmFnLWNlbGwtdmFsdWU6bm90KDplbXB0eSksXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWdyb3VwLWNvbnRyYWN0ZWQ6bm90KC5hZy1oaWRkZW4pICsgLmFnLWdyb3VwLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ncm91cC1jaGVja2JveDpub3QoLmFnLWludmlzaWJsZSkgfiAuYWctY2VsbC12YWx1ZTpub3QoOmVtcHR5KSxcXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZ3JvdXAtY2hlY2tib3g6bm90KC5hZy1pbnZpc2libGUpICsgLmFnLWdyb3VwLXZhbHVlOm5vdCg6ZW1wdHkpIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDEycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctc2VsZWN0aW9uLWNoZWNrYm94Om5vdCguYWctaGlkZGVuKSB+IC5hZy1ncm91cC1jaGVja2JveCxcXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZ3JvdXAtZXhwYW5kZWQ6bm90KC5hZy1oaWRkZW4pIH4gLmFnLWdyb3VwLWNoZWNrYm94LFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ncm91cC1jb250cmFjdGVkOm5vdCguYWctaGlkZGVuKSB+IC5hZy1ncm91cC1jaGVja2JveCxcXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZ3JvdXAtY2hlY2tib3g6bm90KC5hZy1pbnZpc2libGUpIH4gLmFnLWdyb3VwLWNoZWNrYm94IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDEycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZ3JvdXAtY2hpbGQtY291bnQge1xcbiAgICBtYXJnaW4tbGVmdDogMnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXNlbGVjdGlvbi1jaGVja2JveCBzcGFuIHtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbHVtbi1kcm9wLWhvcml6b250YWwge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWMxZjIwO1xcbiAgICBoZWlnaHQ6IDI4cHg7XFxuICAgIHBhZGRpbmctbGVmdDogMTJweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbHVtbi1kcm9wLWhvcml6b250YWwgLmFnLWljb24tZ3JvdXAsXFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCAuYWctaWNvbi1waXZvdCB7XFxuICAgICAgbWFyZ2luLXJpZ2h0OiAxMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCAuYWctaWNvbi1zbWFsbC1sZWZ0LFxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbHVtbi1kcm9wLWhvcml6b250YWwgLmFnLWljb24tc21hbGwtcmlnaHQge1xcbiAgICAgIG1hcmdpbjogMCA0cHg7XFxuICAgICAgb3BhY2l0eTogMC42NDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbHVtbi1kcm9wLWhvcml6b250YWwgLmFnLWNvbHVtbi1kcm9wLWVtcHR5LW1lc3NhZ2Uge1xcbiAgICAgIG9wYWNpdHk6IDAuMzg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLWRyb3AtY2VsbCB7XFxuICAgIGJhY2tncm91bmQ6ICMzMjM5M2M7XFxuICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XFxuICAgIG1pbi1oZWlnaHQ6IDE2cHg7XFxuICAgIHBhZGRpbmc6IDAgMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLWRyb3AtY2VsbCAuYWctY29sdW1uLWRyb3AtY2VsbC10ZXh0IHtcXG4gICAgICBtYXJnaW46IDAgNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLWRyb3AtY2VsbCAuYWctY29sdW1uLWRyb3AtY2VsbC1idXR0b24ge1xcbiAgICAgIG1pbi13aWR0aDogMTZweDtcXG4gICAgICBtYXJnaW46IDAgMnB4O1xcbiAgICAgIG9wYWNpdHk6IDAuNjQ7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbHVtbi1kcm9wLWNlbGwgLmFnLWNvbHVtbi1kcm9wLWNlbGwtYnV0dG9uOmhvdmVyIHtcXG4gICAgICAgIG9wYWNpdHk6IDAuODc7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2x1bW4tZHJvcC1jZWxsIC5hZy1jb2x1bW4tZHJhZyB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2x1bW4tZHJvcC12ZXJ0aWNhbCAuYWctY29sdW1uLWRyb3AtY2VsbCB7XFxuICAgIG1hcmdpbi10b3A6IDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1zZWxlY3QtYWdnLWZ1bmMtcG9wdXAge1xcbiAgICBiYWNrZ3JvdW5kOiAjMmQzNDM2O1xcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xcbiAgICBwYWRkaW5nOiA0cHg7XFxuICAgIGJhY2tncm91bmQ6ICMyZDM0MzY7XFxuICAgIGhlaWdodDogNzBweDtcXG4gICAgcGFkZGluZzogMDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXNlbGVjdC1hZ2ctZnVuYy1wb3B1cCAuYWctdmlydHVhbC1saXN0LWl0ZW0ge1xcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgICBsaW5lLWhlaWdodDogMjBweDtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1zZXQtZmlsdGVyLWxpc3QsXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLW1lbnUtY29sdW1uLXNlbGVjdC13cmFwcGVyIHtcXG4gICAgd2lkdGg6IGF1dG87IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLWRyb3AtdmVydGljYWwgPiAuYWctY29sdW1uLWRyb3AtY2VsbCB7XFxuICAgIG1hcmdpbi1sZWZ0OiA0cHg7XFxuICAgIG1hcmdpbi10b3A6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY2VsbC1kYXRhLWNoYW5nZWQge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIyLCAxNjAsIDEzMywgMC41KSAhaW1wb3J0YW50OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNlbGwtZGF0YS1jaGFuZ2VkLWFuaW1hdGlvbiB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMXM7XFxuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMXM7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcm93LXN0dWIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXN0dWItY2VsbCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTJweDtcXG4gICAgcGFkZGluZy10b3A6IDRweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXN0dWItY2VsbCAuYWctbG9hZGluZy1pY29uIHtcXG4gICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBzcGluO1xcbiAgICAgICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IHNwaW47XFxuICAgICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDEwMDBtcztcXG4gICAgICAgICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMTAwMG1zO1xcbiAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XFxuICAgICAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcXG4gICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcXG4gICAgICAgICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsgfVxcblxcbkAtd2Via2l0LWtleWZyYW1lcyBzcGluIHtcXG4gIGZyb20ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9XFxuICB0byB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9IH1cXG5cXG5Aa2V5ZnJhbWVzIHNwaW4ge1xcbiAgZnJvbSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cXG4gIHRvIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0gfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXN0dWItY2VsbCAuYWctbG9hZGluZy10ZXh0IHtcXG4gICAgICBtYXJnaW4tbGVmdDogNHB4O1xcbiAgICAgIG1hcmdpbi10b3A6IDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1mbG9hdGluZy10b3Age1xcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzQyNDI0MjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1mbG9hdGluZy1ib3R0b20ge1xcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgIzQyNDI0MjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1mbG9hdGluZy10b3AsIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZmxvYXRpbmctYm90dG9tIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWZsb2F0aW5nLXRvcCAuYWctcm93LCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWZsb2F0aW5nLWJvdHRvbSAuYWctcm93IHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXN0YXR1cy1iYXIge1xcbiAgICBiYWNrZ3JvdW5kOiAjMmQzNDM2O1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjNDI0MjQyO1xcbiAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xcbiAgICBjb2xvcjogcmdiYSgyNDUsIDI0NSwgMjQ1LCAwLjM4KTtcXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcXG4gICAgZm9udC1zaXplOiAxMnB4O1xcbiAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcXFwiU2Vnb2UgVUlcXFwiLCBSb2JvdG8sIE94eWdlbi1TYW5zLCBVYnVudHUsIENhbnRhcmVsbCwgXFxcIkhlbHZldGljYSBOZXVlXFxcIiwgc2Fucy1zZXJpZjtcXG4gICAgcGFkZGluZy1yaWdodDogMTZweDtcXG4gICAgcGFkZGluZy1sZWZ0OiAxNnB4O1xcbiAgICBsaW5lLWhlaWdodDogMS41OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLW5hbWUtdmFsdWUtdmFsdWUge1xcbiAgICBjb2xvcjogI0Y1RjVGNTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1zdGF0dXMtYmFyLWNlbnRlciB7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1uYW1lLXZhbHVlIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDRweDtcXG4gICAgbWFyZ2luLXJpZ2h0OiA0cHg7XFxuICAgIHBhZGRpbmctdG9wOiA4cHg7XFxuICAgIHBhZGRpbmctYm90dG9tOiA4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZGV0YWlscy1yb3cge1xcbiAgICBwYWRkaW5nOiAyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLW92ZXJsYXktbG9hZGluZy13cmFwcGVyIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLW92ZXJsYXktbG9hZGluZy1jZW50ZXIge1xcbiAgICBiYWNrZ3JvdW5kOiAjMmQzNDM2O1xcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xcbiAgICBwYWRkaW5nOiA0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctc2lkZS1iYXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWMxZjIwO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjNDI0MjQyO1xcbiAgICBib3JkZXItbGVmdC13aWR0aDogMDtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctc2lkZS1iYXIgLmFnLXNpZGUtYnV0dG9ucyB7XFxuICAgICAgcGFkZGluZy10b3A6IDE2cHg7XFxuICAgICAgYmFja2dyb3VuZDogIzJkMzQzNjtcXG4gICAgICB3aWR0aDogMjBweDtcXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXNpZGUtYmFyIC5hZy1zaWRlLWJ1dHRvbnMgLmFnLXNpZGUtYnV0dG9uIGJ1dHRvbiB7XFxuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gICAgICAgIGJvcmRlcjogMDtcXG4gICAgICAgIGNvbG9yOiAjRjVGNUY1O1xcbiAgICAgICAgcGFkZGluZzogOHB4IDAgOHB4IDA7XFxuICAgICAgICB3aWR0aDogMTAwJTtcXG4gICAgICAgIG1hcmdpbjogMDtcXG4gICAgICAgIG1pbi1oZWlnaHQ6IDcycHg7XFxuICAgICAgICBib3JkZXItd2lkdGg6IDFweCAwIDFweCAwO1xcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IGNlbnRlcjtcXG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb24teDogY2VudGVyO1xcbiAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctc2lkZS1iYXIgLmFnLXNpZGUtYnV0dG9ucyAuYWctc2VsZWN0ZWQgYnV0dG9uIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMxYzFmMjA7XFxuICAgICAgICBtYXJnaW4tbGVmdDogLTFweDtcXG4gICAgICAgIHBhZGRpbmctbGVmdDogMXB4O1xcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjNDI0MjQyOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctc2lkZS1iYXIgLmFnLXBhbmVsLWNvbnRhaW5lciB7XFxuICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgIzQyNDI0MjsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXNpZGUtYmFyLmZ1bGwtd2lkdGggLmFnLXBhbmVsLWNvbnRhaW5lciB7XFxuICAgICAgYm9yZGVyLXJpZ2h0OiAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctc2lkZS1iYXIgLmFnLWNvbHVtbi1kcm9wIHtcXG4gICAgICBtaW4taGVpZ2h0OiA1MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXByaW1hcnktY29scy1maWx0ZXItd3JhcHBlciB7XFxuICAgIG1hcmdpbi1sZWZ0OiA0cHg7XFxuICAgIG1hcmdpbi1yaWdodDogNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWdyb3VwLWNvbXBvbmVudCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMyZDM0MzY7XFxuICAgIHBhZGRpbmc6IDBweDtcXG4gICAgYm9yZGVyOiAwIHNvbGlkICM0ZjRmNGY7XFxuICAgIGJvcmRlci10b3Atd2lkdGg6IDFweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWdyb3VwLWNvbXBvbmVudC5hZy1kaXNhYmxlZCA+IC5hZy1ncm91cC1jb21wb25lbnQtbGFiZWwgLmFnLWdyb3VwLWNvbXBvbmVudC10aXRsZSwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ncm91cC1jb21wb25lbnQuYWctZGlzYWJsZWQgPiAuYWctZ3JvdXAtY29tcG9uZW50LWNvbnRhaW5lciB7XFxuICAgICAgb3BhY2l0eTogMC41OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZ3JvdXAtY29tcG9uZW50IC5hZy1ncm91cC1jb21wb25lbnQtdGl0bGUtYmFyIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWMxZjIwO1xcbiAgICAgIGhlaWdodDogMTZweDtcXG4gICAgICBmb250LXNpemU6IDEycHg7XFxuICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXFxcIlNlZ29lIFVJXFxcIiwgUm9ib3RvLCBPeHlnZW4tU2FucywgVWJ1bnR1LCBDYW50YXJlbGwsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIHNhbnMtc2VyaWY7XFxuICAgICAgaGVpZ2h0OiAyNnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZ3JvdXAtY29tcG9uZW50Om5vdCguYWctY29sbGFwc2libGUpID4gZGl2IHtcXG4gICAgICBtYXJnaW4tbGVmdDogMDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWdyb3VwLWNvbXBvbmVudDpub3QoLmFnLWNvbGxhcHNpYmxlKSA+IC5hZy1ncm91cC1jb21wb25lbnQtdGl0bGUtYmFyIHtcXG4gICAgICBtYXJnaW4tbGVmdDogMDtcXG4gICAgICBwYWRkaW5nOiA0cHg7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWdyb3VwLWNvbXBvbmVudDpub3QoLmFnLWNvbGxhcHNpYmxlKSA+IC5hZy1ncm91cC1jb21wb25lbnQtdGl0bGUtYmFyIC5hZy1jb2x1bW4tZ3JvdXAtaWNvbnMge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWdyb3VwLWNvbXBvbmVudCAuYWctZ3JvdXAtY29tcG9uZW50LXRvb2xiYXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyODJmMzA7XFxuICAgICAgcGFkZGluZzogNHB4O1xcbiAgICAgIGJvcmRlcjogMCBzb2xpZCAjNDI0MjQyOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZ3JvdXAtY29tcG9uZW50ID4gLmFnLWdyb3VwLWNvbXBvbmVudC1jb250YWluZXIge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7XFxuICAgICAgcGFkZGluZzogNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZ3JvdXAtY29tcG9uZW50IC5hZy1ncm91cC1pdGVtIHtcXG4gICAgICBtYXJnaW46IDJweCAwOyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ncm91cC1jb21wb25lbnQgLmFnLWdyb3VwLWl0ZW0gLmFnLWdyb3VwLWNvbXBvbmVudC10aXRsZS1iYXIge1xcbiAgICAgICAgaGVpZ2h0OiAxOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWxhYmVsZWQgbGFiZWwge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDRweDtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sYWJlbGVkLmFnLWxhYmVsLWFsaWduLXRvcCBsYWJlbCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1zbGlkZXIgPiAuYWctd3JhcHBlciA+IGRpdjpub3QoOmZpcnN0LW9mLXR5cGUpLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWFuZ2xlLXNlbGVjdCA+IC5hZy13cmFwcGVyID4gZGl2Om5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xcbiAgICBtYXJnaW4tbGVmdDogOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWFuZ2xlLXNlbGVjdCAuYWctYW5nbGUtc2VsZWN0LWZpZWxkIC5hZy1wYXJlbnQtY2lyY2xlIHtcXG4gICAgd2lkdGg6IDI0cHg7XFxuICAgIGhlaWdodDogMjRweDtcXG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMnB4IHJnYmEoMCwgMCwgMCwgMC45KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMnB4IHJnYmEoMCwgMCwgMCwgMC45KTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1hbmdsZS1zZWxlY3QgLmFnLWFuZ2xlLXNlbGVjdC1maWVsZCAuYWctY2hpbGQtY2lyY2xlIHtcXG4gICAgdG9wOiA0cHg7XFxuICAgIGxlZnQ6IDEycHg7XFxuICAgIHdpZHRoOiA2cHg7XFxuICAgIGhlaWdodDogNnB4O1xcbiAgICBtYXJnaW4tbGVmdDogLTNweDtcXG4gICAgbWFyZ2luLXRvcDogLTRweDtcXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGM0YzRjOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRvZ2dsZS1idXR0b24gLmFnLWlucHV0LXdyYXBwZXIge1xcbiAgICBoZWlnaHQ6IDE2cHg7XFxuICAgIHdpZHRoOiA0MHB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQzNDM2O1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZWNmMGYxO1xcbiAgICBib3JkZXItcmFkaXVzOiA1MDByZW07IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10b2dnbGUtYnV0dG9uIC5hZy1pbnB1dC13cmFwcGVyIC5hZy1pY29uIHtcXG4gICAgICB3aWR0aDogMTZweDtcXG4gICAgICBoZWlnaHQ6IDE2cHg7XFxuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2VjZjBmMTtcXG4gICAgICBib3JkZXItcmFkaXVzOiA1MDByZW07XFxuICAgICAgcmlnaHQ6IGNhbGMoMTAwJSAtIDE2cHgpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRvZ2dsZS1idXR0b24uYWctc2VsZWN0ZWQgLmFnLWlucHV0LXdyYXBwZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBCMEZGOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctdG9nZ2xlLWJ1dHRvbi5hZy1zZWxlY3RlZCAuYWctaW5wdXQtd3JhcHBlciAuYWctaWNvbiB7XFxuICAgICAgYmFja2dyb3VuZDogIzJkMzQzNjtcXG4gICAgICByaWdodDogLTFweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2xvci1waWNrZXIgPiAuYWctd3JhcHBlciB7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICM0MjQyNDI7XFxuICAgIGJvcmRlci1yYWRpdXM6IDVweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbG9yLXBpY2tlciA+IC5hZy13cmFwcGVyID4gZGl2IHtcXG4gICAgICB3aWR0aDogMTZweDtcXG4gICAgICBoZWlnaHQ6IDE2cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2xvci1waWNrZXIgPiAuYWctd3JhcHBlciBidXR0b24ge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyZDM0MzY7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2xvci1waWNrZXIgPiAuYWctd3JhcHBlciBidXR0b246aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzZDQ3NDk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZGlhbG9nLmFnLWNvbG9yLWRpYWxvZyB7XFxuICAgIGJvcmRlci1yYWRpdXM6IDVweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2xvci1wYW5lbCB7XFxuICAgIHBhZGRpbmc6IDRweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1jb2xvciB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkO1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS10b29scyB7XFxuICAgICAgcGFkZGluZzogMTBweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1zYXQge1xcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgcmlnaHQgdG9wLCBmcm9tKHdoaXRlKSwgdG8ocmdiYSgyMDQsIDE1NCwgMTI5LCAwKSkpO1xcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgd2hpdGUsIHJnYmEoMjA0LCAxNTQsIDEyOSwgMCkpOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLXZhbCB7XFxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgYm90dG9tLCBsZWZ0IHRvcCwgZnJvbShibGFjayksIHRvKHJnYmEoMjA0LCAxNTQsIDEyOSwgMCkpKTtcXG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCBibGFjaywgcmdiYSgyMDQsIDE1NCwgMTI5LCAwKSk7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2xvci1wYW5lbCAuYWctc3BlY3RydW0tZHJhZ2dlciB7XFxuICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcXG4gICAgICBoZWlnaHQ6IDEycHg7XFxuICAgICAgd2lkdGg6IDEycHg7XFxuICAgICAgYm9yZGVyOiAxcHggc29saWQgd2hpdGU7XFxuICAgICAgYmFja2dyb3VuZDogYmxhY2s7XFxuICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMjQpO1xcbiAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjI0KTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1odWUtYmFja2dyb3VuZCB7XFxuICAgICAgYm9yZGVyLXJhZGl1czogMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLWFscGhhLWJhY2tncm91bmQge1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbG9yLXBhbmVsIC5hZy1odWUtYWxwaGEge1xcbiAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XFxuICAgICAgaGVpZ2h0OiAxMXB4O1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1zbGlkZXIge1xcbiAgICAgIG1hcmdpbi10b3A6IC0xMnB4O1xcbiAgICAgIHdpZHRoOiAxM3B4O1xcbiAgICAgIGhlaWdodDogMTNweDtcXG4gICAgICBib3JkZXItcmFkaXVzOiAxM3B4O1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGY4Zjg7XFxuICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMzcpO1xcbiAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjM3KTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS10ZXh0LXZhbHVlIHtcXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcXG4gICAgICBsaW5lLWhlaWdodDogMjBweDtcXG4gICAgICBjb2xvcjogIzMzMzsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS10ZXh0LXZhbHVlOmZvY3VzIHtcXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjMGQ3N2U0O1xcbiAgICAgIHBhZGRpbmc6IDJweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbG9yLXBhbmVsIC5hZy1yZWNlbnQtY29sb3JzID4gZGl2IHtcXG4gICAgICBtYXJnaW46IDAgM3B4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2xvci1wYW5lbCAuYWctcmVjZW50LWNvbG9ycyA+IGRpdjpmaXJzdC1jaGlsZCB7XFxuICAgICAgICBtYXJnaW4tbGVmdDogMDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sb3ItcGFuZWwgLmFnLXJlY2VudC1jb2xvcnMgPiBkaXY6bGFzdC1jaGlsZCB7XFxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyay5hZy1wb3B1cCA+IGRpdjpub3QoLmFnLXRvb2x0aXAtY3VzdG9tKSB7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogNXB4IDVweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiA1cHggNXB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjMpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXBhbmVsIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzJkMzQzNjtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgIzQyNDI0MjsgfVxcbiAgICAuYWctZHJhZ2dpbmctcmFuZ2UtaGFuZGxlIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcGFuZWwuYWctZGlhbG9nLCAuYWctZHJhZ2dpbmctZmlsbC1oYW5kbGUgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wYW5lbC5hZy1kaWFsb2cge1xcbiAgICAgIG9wYWNpdHk6IDAuNztcXG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXBhbmVsIC5hZy10aXRsZS1iYXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMxYzFmMjA7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM1YzVjNWM7XFxuICAgICAgY29sb3I6IHJnYmEoMjQ1LCAyNDUsIDI0NSwgMC42NCk7XFxuICAgICAgaGVpZ2h0OiAzMnB4O1xcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcXG4gICAgICBmb250LXdlaWdodDogNjAwO1xcbiAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFxcXCJTZWdvZSBVSVxcXCIsIFJvYm90bywgT3h5Z2VuLVNhbnMsIFVidW50dSwgQ2FudGFyZWxsLCBcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLCBzYW5zLXNlcmlmO1xcbiAgICAgIHBhZGRpbmctbGVmdDogMTJweDtcXG4gICAgICBwYWRkaW5nOiA1cHggMTBweDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcGFuZWwgLmFnLXRpdGxlLWJhciAuYWctdGl0bGUtYmFyLWJ1dHRvbnMgLmFnLWJ1dHRvbiB7XFxuICAgICAgICBoZWlnaHQ6IDIwcHg7XFxuICAgICAgICB3aWR0aDogMjBweDtcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDsgfVxcbiAgICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wYW5lbCAuYWctdGl0bGUtYmFyIC5hZy10aXRsZS1iYXItYnV0dG9ucyAuYWctYnV0dG9uIC5hZy1pY29uIHtcXG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XFxuICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDsgfVxcbiAgICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wYW5lbCAuYWctdGl0bGUtYmFyIC5hZy10aXRsZS1iYXItYnV0dG9ucyAuYWctYnV0dG9uOmhvdmVyLCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXBhbmVsIC5hZy10aXRsZS1iYXIgLmFnLXRpdGxlLWJhci1idXR0b25zIC5hZy1idXR0b24uYWctaGFzLXBvcHVwIHtcXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzA0MDUwNTsgfVxcbiAgICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wYW5lbCAuYWctdGl0bGUtYmFyIC5hZy10aXRsZS1iYXItYnV0dG9ucyAuYWctYnV0dG9uOm5vdCg6bGFzdC1jaGlsZCkge1xcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXBhbmVsIC5hZy1tZXNzYWdlLWJveCAuYWctbWVzc2FnZS1ib3gtYnV0dG9uLWJhciB7XFxuICAgICAgaGVpZ2h0OiAzMHB4O1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMxYzFmMjA7XFxuICAgICAgcGFkZGluZzogMnB4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wYW5lbCAuYWctbWVzc2FnZS1ib3ggLmFnLW1lc3NhZ2UtYm94LWJ1dHRvbi1iYXIgYnV0dG9uIHtcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10b29sdGlwIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzFjMWYyMDtcXG4gICAgY29sb3I6ICNGNUY1RjU7XFxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gICAgcGFkZGluZzogNXB4O1xcbiAgICBib3JkZXItd2lkdGg6IDFweDtcXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gICAgYm9yZGVyLWNvbG9yOiAjMzQzOTNiO1xcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMXM7XFxuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMXM7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10b29sdGlwLmFnLXRvb2x0aXAtaGlkaW5nIHtcXG4gICAgICBvcGFjaXR5OiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNoYXJ0IC5hZy1jaGFydC1tZW51IHtcXG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xcbiAgICBiYWNrZ3JvdW5kOiAjMmQzNDM2OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY2hhcnQgLmFnLWNoYXJ0LW1lbnUgPiBzcGFuOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTYxOTFhOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS13cmFwcGVyIC5hZy1ncm91cC1jb21wb25lbnQtY29udGFpbmVyIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy1taW5pLXdyYXBwZXIgLmFnLWNoYXJ0LW1pbmktdGh1bWJuYWlsIHtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgIzQyNDI0MjtcXG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xcbiAgICBtYXJnaW46IDVweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS13cmFwcGVyIC5hZy1jaGFydC1taW5pLXRodW1ibmFpbDpudGgtY2hpbGQoMm4gKyAyKTpub3QoOmxhc3QtY2hpbGQpIHtcXG4gICAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktd3JhcHBlciAuYWctY2hhcnQtbWluaS10aHVtYm5haWw6bnRoLWNoaWxkKDNuICsgMSkge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktd3JhcHBlciAuYWctY2hhcnQtbWluaS10aHVtYm5haWw6bnRoLWNoaWxkKDNuKSB7XFxuICAgICAgbWFyZ2luLXJpZ2h0OiAycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktd3JhcHBlciAuYWctY2hhcnQtbWluaS10aHVtYm5haWwuYWctc2VsZWN0ZWQge1xcbiAgICAgIGJvcmRlci1jb2xvcjogIzAwQjBGRjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLW5hdi1iYXIgLmFnLW5hdi1jYXJkLXNlbGVjdG9yIC5hZy1uYXYtY2FyZC1pdGVtIHtcXG4gICAgY29sb3I6ICNGNUY1RjU7XFxuICAgIGZvbnQtc2l6ZTogMTBweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3MtbmF2LWJhciAuYWctbmF2LWNhcmQtc2VsZWN0b3IgLmFnLW5hdi1jYXJkLWl0ZW0uYWctc2VsZWN0ZWQge1xcbiAgICAgIGNvbG9yOiAjMDBCMEZGOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1mb3JtYXQgLmFnLWNoYXJ0LWZvcm1hdC13cmFwcGVyIC5hZy1ncm91cC1pdGVtIHtcXG4gICAgbWFyZ2luOiA0LjhweCAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24ge1xcbiAgICAvKiB1c2UgIWltcG9ydGFudCB0byBwcmV2ZW50IGlzc3VlcyB3aXRoIGJyb3dzZXIgZXh0ZW5zaW9ucyB0aGF0IGNoYW5nZSBmb250cyAqL1xcbiAgICBmb250LWZhbWlseTogXFxcImFnR3JpZEJhbGhhbVxcXCI7XFxuICAgIHNwZWFrOiBub25lO1xcbiAgICBmb250LXNpemU6IDE2cHg7XFxuICAgIGNvbG9yOiAjZWNmMGYxO1xcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XFxuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcXG4gICAgLyogQmV0dGVyIEZvbnQgUmVuZGVyaW5nID09PT09PT09PT09ICovXFxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tYWdncmVnYXRpb246YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTAwXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLWFycm93czpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MDFcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tYXNjOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwMlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jYW5jZWw6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTAzXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLWNoYXJ0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwNFxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jaGVja2JveC1jaGVja2VkOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwNVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jaGVja2JveC1pbmRldGVybWluYXRlOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwNlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jaGVja2JveC11bmNoZWNrZWQ6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTA3XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLWNvbG9yLXBpY2tlcjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MDhcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tY29sdW1uOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwOVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jb2x1bW5zOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwQVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jb250cmFjdGVkOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwQlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jb3B5OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwQ1xcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jcm9zczpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MERcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tY3V0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwRVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1kYXRhOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwRlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1kZXNjOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxMFxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1leHBhbmRlZDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MTFcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tZXllLXNsYXNoOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxMlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1leWU6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTEzXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLWZpbHRlcjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MTRcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tZmlyc3Q6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTE1XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLWdyaXA6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTE2XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLWdyb3VwOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxN1xcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1pbmRldGVybWluYXRlOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxOFxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1sYXN0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxOVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1sZWZ0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxQVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1sb2FkaW5nOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxQlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1tYXhpbWl6ZTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MUNcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tbWVudTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MURcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tbWluaW1pemU6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTFFXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLW1pbnVzOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxRlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1uZXh0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyMFxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1ub25lOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyMVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1ub3QtYWxsb3dlZDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MjJcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tcGFzdGU6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTIzXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLXBpbjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MjRcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tcGl2b3Q6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTI1XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLXBsdXM6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTI2XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLXByZXZpb3VzOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyN1xcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1yYWRpby1idXR0b24tb2ZmOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyOFxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1yYWRpby1idXR0b24tb246YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTI5XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLXJpZ2h0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyQVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1zYXZlOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyQlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1zbWFsbC1kb3duOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyQ1xcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1zbWFsbC1sZWZ0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyRFxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1zbWFsbC1yaWdodDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MkVcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tc21hbGwtdXA6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTJGXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLXRpY2s6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTMwXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLXRyZWUtY2xvc2VkOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkzMVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi10cmVlLWluZGV0ZXJtaW5hdGU6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTMyXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLXRyZWUtb3BlbjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MzNcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tY2hlY2tib3gtY2hlY2tlZCxcXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jaGVja2JveC1pbmRldGVybWluYXRlLFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLWNoZWNrYm94LXVuY2hlY2tlZCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMyZDM0MzY7XFxuICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLWNoZWNrYm94LWNoZWNrZWQtcmVhZG9ubHksXFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jaGVja2JveC1pbmRldGVybWluYXRlLXJlYWRvbmx5LFxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tY2hlY2tib3gtdW5jaGVja2VkLXJlYWRvbmx5IHtcXG4gICAgICBjdXJzb3I6IGRlZmF1bHQ7XFxuICAgICAgb3BhY2l0eTogMC4zODsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1pY29uLWNoZWNrYm94LWNoZWNrZWQge1xcbiAgICBjb2xvcjogIzAwQjBGRjsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWljb24tY2hlY2tib3gtY2hlY2tlZC1yZWFkb25seTpiZWZvcmUge1xcbiAgICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwNVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jaGVja2JveC1pbmRldGVybWluYXRlLXJlYWRvbmx5OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwNlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1jaGVja2JveC11bmNoZWNrZWQtcmVhZG9ubHk6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTA3XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ncm91cC1leHBhbmRlZCAuYWctaWNvbi1jb250cmFjdGVkOmVtcHR5OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkzM1xcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1yb3ctZHJhZzpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MTZcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJpZ2h0LWFycm93OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxQVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctaWNvbi1yYWRpby1idXR0b24tb24ge1xcbiAgICBjb2xvcjogIzAwQjBGRjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1yaWdodC1hcnJvdzpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MkFcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCB7XFxuICAgIHRleHQtYWxpZ246IHJpZ2h0OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1udW1lcmljLWNlbGwge1xcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWNoZWNrYm94Om5vdCguYWctbGFiZWwtYWxpZ24tbGVmdCkgbGFiZWwsIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1yYWRpby1idXR0b246bm90KC5hZy1sYWJlbC1hbGlnbi1sZWZ0KSBsYWJlbCwgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvZ2dsZS1idXR0b246bm90KC5hZy1sYWJlbC1hbGlnbi1sZWZ0KSBsYWJlbCB7XFxuICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctcGl2b3QtbW9kZS1wYW5lbCAuYWctcGl2b3QtbW9kZS1zZWxlY3Qge1xcbiAgICAgIG1hcmdpbi1yaWdodDogNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWNvbHVtbi1kcm9wIC5hZy1jb2x1bW4tZHJvcC1lbXB0eS1tZXNzYWdlIHtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDRweDtcXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxNnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4tZ3JvdXAgLmFnLWNvbHVtbi1zZWxlY3QtY2hlY2tib3gsXFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4tZ3JvdXAgLmFnLWNvbHVtbi1ncm91cC1pY29ucyxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbiAuYWctY29sdW1uLXNlbGVjdC1jaGVja2JveCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbiAuYWctY29sdW1uLWdyb3VwLWljb25zIHtcXG4gICAgICBtYXJnaW4tbGVmdDogNHB4O1xcbiAgICAgIG1hcmdpbi1yaWdodDogNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4uYWctdG9vbHBhbmVsLWFkZC1ncm91cC1pbmRlbnQge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xcbiAgICAgIG1hcmdpbi1yaWdodDogMjRweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctaGVhZGVyLXNlbGVjdC1hbGwge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xcbiAgICAgIG1hcmdpbi1yaWdodDogMDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWNoZWNrYm94LFxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctZ3JvdXAtY2hlY2tib3gsXFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1ncm91cC1leHBhbmRlZCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWdyb3VwLWNvbnRyYWN0ZWQge1xcbiAgICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveDtcXG4gICAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7XFxuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWNoZWNrYm94ICsgLmFnLWNlbGwtdmFsdWU6bm90KDplbXB0eSksIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1zZWxlY3Rpb24tY2hlY2tib3ggKyAuYWctZ3JvdXAtdmFsdWU6bm90KDplbXB0eSksXFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWdyb3VwLWNoZWNrYm94ICsgLmFnLWNlbGwtdmFsdWU6bm90KDplbXB0eSksXFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWdyb3VwLWNoZWNrYm94ICsgLmFnLWdyb3VwLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1ncm91cC1leHBhbmRlZCArIC5hZy1jZWxsLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1ncm91cC1leHBhbmRlZCArIC5hZy1ncm91cC12YWx1ZTpub3QoOmVtcHR5KSxcXG4gICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctZ3JvdXAtY29udHJhY3RlZCArIC5hZy1jZWxsLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1ncm91cC1jb250cmFjdGVkICsgLmFnLWdyb3VwLXZhbHVlOm5vdCg6ZW1wdHkpIHtcXG4gICAgICAgIG1hcmdpbi1yaWdodDogMTJweDtcXG4gICAgICAgIG1hcmdpbi1sZWZ0OiBpbml0aWFsOyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1jaGVja2JveCArIC5hZy1ncm91cC1jaGVja2JveCxcXG4gICAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctZ3JvdXAtY2hlY2tib3ggKyAuYWctZ3JvdXAtY2hlY2tib3gsXFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWdyb3VwLWV4cGFuZGVkICsgLmFnLWdyb3VwLWNoZWNrYm94LFxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1ncm91cC1jb250cmFjdGVkICsgLmFnLWdyb3VwLWNoZWNrYm94IHtcXG4gICAgICAgIG1hcmdpbi1yaWdodDogMTJweDtcXG4gICAgICAgIG1hcmdpbi1sZWZ0OiBpbml0aWFsOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1ncm91cC1jaGlsZC1jb3VudCB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IHVuc2V0O1xcbiAgICAgIG1hcmdpbi1yaWdodDogMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIHtcXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxMnB4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWNvbHVtbi1kcm9wLWhvcml6b250YWwgLmFnLWljb24tZ3JvdXAsXFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWNvbHVtbi1kcm9wLWhvcml6b250YWwgLmFnLWljb24tcGl2b3Qge1xcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEycHg7XFxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWZsb2F0aW5nLWZpbHRlci1idXR0b24ge1xcbiAgICAgIG1hcmdpbi1yaWdodDogMTJweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctc2V0LWZpbHRlci1pdGVtID4gZGl2LCAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctc2V0LWZpbHRlci1pdGVtID4gc3BhbiB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDA7XFxuICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWhlYWRlciAuYWctaGVhZGVyLWNlbGwtcmVzaXplOjphZnRlciB7XFxuICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjNDI0MjQyO1xcbiAgICAgIGJvcmRlci1yaWdodDogMDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctc2lkZS1iYXIgLmFnLXBhbmVsLWNvbnRhaW5lciB7XFxuICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjNDI0MjQyO1xcbiAgICAgIGJvcmRlci1yaWdodDogMDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctc2lkZS1iYXIuZnVsbC13aWR0aCAuYWctcGFuZWwtY29udGFpbmVyIHtcXG4gICAgICBib3JkZXItbGVmdDogMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5zYXNzLXZhcmlhYmxlczo6YWZ0ZXIge1xcbiAgICBjb250ZW50OiAneyBcXFwiYXV0b1NpemVQYWRkaW5nXFxcIjogXFxcIjEycHhcXFwiLCBcXFwiaGVhZGVySGVpZ2h0XFxcIjogXFxcIjMycHhcXFwiLCBcXFwiZ3JvdXBQYWRkaW5nU2l6ZVxcXCI6IFxcXCIyOHB4XFxcIiwgXFxcImZvb3RlclBhZGRpbmdBZGRpdGlvblxcXCI6IFxcXCIxNnB4XFxcIiwgXFxcInZpcnR1YWxJdGVtSGVpZ2h0XFxcIjogXFxcIjI4cHhcXFwiLCBcXFwiYWdnRnVuY1BvcHVwSGVpZ2h0XFxcIjogXFxcIjk4cHhcXFwiLCBcXFwiY2hlY2tib3hJbmRlbnRXaWR0aFxcXCI6IFxcXCIyMHB4XFxcIiwgXFxcImxlYWZOb2RlUGFkZGluZ1xcXCI6IFxcXCIxMnB4XFxcIiwgXFxcInJvd0hlaWdodFxcXCI6IFxcXCIyOHB4XFxcIiwgXFxcImdyaWRTaXplXFxcIjogXFxcIjRweFxcXCIsIFxcXCJpY29uU2l6ZVxcXCI6IFxcXCIxNnB4XFxcIiB9JztcXG4gICAgZGlzcGxheTogbm9uZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jZWxsLWhpZ2hsaWdodCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMEIwRkYgIWltcG9ydGFudDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1oZWFkZXItY2VsbC1yZXNpemU6OmFmdGVyIHtcXG4gICAgaGVpZ2h0OiA4MCU7XFxuICAgIG1hcmdpbi10b3A6IDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1oZWFkZXItY2VsbDo6YWZ0ZXIsXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWhlYWRlci1ncm91cC1jZWxsOjphZnRlciB7XFxuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYmEoNjYsIDY2LCA2NiwgMC41KTtcXG4gICAgY29udGVudDogXFxcIiBcXFwiO1xcbiAgICBoZWlnaHQ6IDE2cHg7XFxuICAgIG1hcmdpbi10b3A6IDhweDtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0ZXh0LWluZGVudDogLTIwMDBweDtcXG4gICAgdG9wOiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWx0ciAuYWctaGVhZGVyLWNlbGw6OmFmdGVyLFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1sdHIgLmFnLWhlYWRlci1ncm91cC1jZWxsOjphZnRlciB7XFxuICAgIHJpZ2h0OiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctaGVhZGVyLWNlbGw6OmFmdGVyLFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLWhlYWRlci1ncm91cC1jZWxsOjphZnRlciB7XFxuICAgIGxlZnQ6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbC5hZy1jb2x1bW4tZHJvcCB7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICM0MjQyNDI7XFxuICAgIGJvcmRlci1ib3R0b206IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctbHRyIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsLmFnLWNvbHVtbi1kcm9wLmFnLXdpZHRoLWhhbGY6Zmlyc3QtY2hpbGQge1xcbiAgICBib3JkZXItcmlnaHQ6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsLmFnLWNvbHVtbi1kcm9wLmFnLXdpZHRoLWhhbGY6Zmlyc3QtY2hpbGQge1xcbiAgICBib3JkZXItbGVmdDogMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1yb3cge1xcbiAgICBib3JkZXItY29sb3I6ICM1YzVjNWM7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcm93LXNlbGVjdGVkIHtcXG4gICAgYm9yZGVyLWNvbG9yOiAjMDA1ODgwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbHVtbi1kcm9wLWNlbGwge1xcbiAgICBtaW4taGVpZ2h0OiAyNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLWRyb3AtY2VsbCAuYWctY29sdW1uLWRyb3AtY2VsbC1idXR0b24ge1xcbiAgICAgIG1hcmdpbi1ib3R0b206IDJweDtcXG4gICAgICBtYXJnaW4tdG9wOiAycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2x1bW4tZHJvcC1jZWxsIC5hZy1jb2x1bW4tZHJvcC1jZWxsLWJ1dHRvbjpob3ZlciB7XFxuICAgICAgb3BhY2l0eTogMTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2x1bW4tZHJvcC12ZXJ0aWNhbCAuYWctY29sdW1uLWRyb3AtY2VsbCB7XFxuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XFxuICAgIG1hcmdpbi1yaWdodDogOHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLWRyb3AtdmVydGljYWwgLmFnLWNvbHVtbi1kcm9wLWNlbGwgLmFnLWNvbHVtbi1kcm9wLWNlbGwtdGV4dCB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzFjMWYyMDtcXG4gICAgaGVpZ2h0OiAzMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCAuYWctY29sdW1uLWRyb3AtY2VsbC10ZXh0IHtcXG4gICAgICBtYXJnaW4tbGVmdDogOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJvb3Qge1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjNDI0MjQyOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciB7XFxuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICM0MjQyNDI7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbiB7XFxuICAgICAgbWluLWhlaWdodDogMjBweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctY29sdW1uLWRyb3Age1xcbiAgICAgIHBhZGRpbmctYm90dG9tOiA4cHg7XFxuICAgICAgcGFkZGluZy10b3A6IDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXNpZGUtYmFyLFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1ydGwgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciB7XFxuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgIzQyNDI0MjtcXG4gICAgYm9yZGVyLXJpZ2h0OiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXJ0bCAuYWctaWNvbi1leHBhbmRlZCxcXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcnRsIC5hZy1pY29uLWNvbnRyYWN0ZWQge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1tZW51LW9wdGlvbiB7XFxuICAgIGhlaWdodDogMjhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4tZ3JvdXAsXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbiB7XFxuICAgIGhlaWdodDogMjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10YWItaGVhZGVyIHtcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM0MjQyNDI7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10YWItaGVhZGVyIC5hZy10YWIge1xcbiAgICAgIG1hcmdpbi1ib3R0b206IC0ycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy10YWItaGVhZGVyIC5hZy10YWIuYWctdGFiLXNlbGVjdGVkIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQzNDM2O1xcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLXRhYi1ib2R5LFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1wb3B1cC1lZGl0b3IsXFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLW1lbnUge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQzNDM2O1xcbiAgICBjb2xvcjogI0Y1RjVGNTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jZWxsLmFnLWNlbGwtaW5saW5lLWVkaXRpbmcge1xcbiAgICBoZWlnaHQ6IDI4cHg7XFxuICAgIHBhZGRpbmc6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctZGV0YWlscy1yb3cge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQzNDM2OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLW92ZXJsYXktbG9hZGluZy13cmFwcGVyIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLW92ZXJsYXktbG9hZGluZy1jZW50ZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQzNDM2O1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjNDI0MjQyO1xcbiAgICBjb2xvcjogI0Y1RjVGNTtcXG4gICAgcGFkZGluZzogMTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLTE6bm90KC5hZy1jZWxsLWZvY3VzKSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTc2LCAyNTUsIDAuMyk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctY2VsbC1yYW5nZS1zZWxlY3RlZC0yOm5vdCguYWctY2VsbC1mb2N1cykge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDE3NiwgMjU1LCAwLjQpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQtMzpub3QoLmFnLWNlbGwtZm9jdXMpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxNzYsIDI1NSwgMC41KTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLTQ6bm90KC5hZy1jZWxsLWZvY3VzKSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTc2LCAyNTUsIDAuNik7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctcmljaC1zZWxlY3QtdmFsdWUge1xcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzQyNDI0MjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIC5hZy1maWx0ZXItYXBwbHktcGFuZWwge1xcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgIzQyNDI0MjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIGlucHV0LFxcbiAgLmFnLXRoZW1lLWJhbGhhbS1kYXJrIHNlbGVjdCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMyNjJjMmU7XFxuICAgIGNvbG9yOiAjRjVGNUY1OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWZpbHRlci10b29scGFuZWwtYm9keSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMyZDM0MzY7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0tZGFyayAuYWctYW5nbGUtc2VsZWN0IC5hZy1hbmdsZS1zZWxlY3QtZmllbGQgLmFnLXBhcmVudC1jaXJjbGUge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtLWRhcmsgLmFnLWFuZ2xlLXNlbGVjdCAuYWctYW5nbGUtc2VsZWN0LWZpZWxkIC5hZy1jaGlsZC1jaXJjbGUge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGM0YzRjOyB9XFxuXFxuXCIiLCJtb2R1bGUuZXhwb3J0cyA9IFwiQGNoYXJzZXQgXFxcIlVURi04XFxcIjtcXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiYWdHcmlkQmFsaGFtXFxcIjtcXG4gIHNyYzogdXJsKFxcXCJkYXRhOmFwcGxpY2F0aW9uL3gtZm9udC10dGY7Y2hhcnNldD11dGYtODtiYXNlNjQsQUFFQUFBQUxBSUFBQXdBd1QxTXZNZzhTQmxNQUFBQzhBQUFBWUdOdFlYQVhWdEs2QUFBQkhBQUFBRlJuWVhOd0FBQUFFQUFBQVhBQUFBQUlaMng1WnFNdXkzZ0FBQUY0QUFBYkRHaGxZV1FWb21PWEFBQWNoQUFBQURab2FHVmhCOElEK1FBQUhMd0FBQUFrYUcxMGVOWUFJbllBQUJ6Z0FBQUE0R3h2WTJIRW1MNGFBQUFkd0FBQUFISnRZWGh3QUVVQWxRQUFIalFBQUFBZ2JtRnRaWlFYeEtRQUFCNVVBQUFCa25CdmMzUUFBd0FBQUFBZjZBQUFBQ0FBQXdQMkFaQUFCUUFBQXBrQ3pBQUFBSThDbVFMTUFBQUI2d0F6QVFrQUFBQUFBQUFBQUFBQUFBQUFBQUFCRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFEcE13UEEvOEFBUUFQQUFFQUFBQUFCQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFEQUFBQUF3QUFBQndBQVFBREFBQUFIQUFEQUFFQUFBQWNBQVFBT0FBQUFBb0FDQUFDQUFJQUFRQWc2VFAvL2YvL0FBQUFBQUFnNlFELy9mLy9BQUgvNHhjRUFBTUFBUUFBQUFBQUFBQUFBQUFBQVFBQi8vOEFEd0FCQUFBQUFBQUFBQUFBQWdBQU56a0JBQUFBQUFFQUFBQUFBQUFBQUFBQ0FBQTNPUUVBQUFBQUFRQUFBQUFBQUFBQUFBSUFBRGM1QVFBQUFBQURBRC8vL3dQQkE0RUFKd0JRQUc0QUFBRWVBUmNXRlJZVUJ4UUhEZ0VIQmlNR0lpY2lKeTRCSnlZMUpqUTNORGMrQVRjMk16WXlGeklGSWdZSEJnY09BUmNVRng0QkZ4WVhGakkzTmpjK0FUYzJOelkwSnlZbkxnRW5KaU1pQmdjR0l3RWpOU0VWSGdFWEZnWUhEZ0VWSVRVekZTRTBOamMrQVNjdUFTYzFJUU1rUGx3Q0FRRUJBUUpjUGtsSlNaSkpTVWs5WFFJQkFRRUJBbHcrU1VsSmtrbEovZ1VsT2dFQkFRRUJBUU1DTlNSSlNVcVNTa2xKSkRVQ0F3RUJBUUVEQWpVa1NVaEprVWxJU1FIZ1FQOEFBWFVaRUFvWUoxWUJBRUQrZ0FZYkxXUWdMbUlDQVlBRGdBSmNQa2xKU1pKSlNVaytYQUlCQVFFQkFsdytTVWxKa2tsSlNUNWNBZ0VCQVVFNEpraEpTWkpKU1Vra05RSURBUUVCQVFNQ05TUkpTVXFTU2tsSkpEVUNBd0VCQWY4QVFBTWdRaXNjUkJjaVBScEFnQ1pNR0NkSEh5bEhORVVBQVFCVEFCTURyUU50QUNjQUFCTVhCeWMzSGdFWEJ5RVJCeWMzSGdFWEJ5Y1JJU2MzSGdFWEJ5YzNJUkUzSGdFWEJ5YzNGeEhOU2k2V2xnd1dERW9CRTBrdWx5WkxKaTVKQVJOS0xpVk1KWll1U3Y3dFNRd1dESmVYTGtrQm9Fa3VsNWNNRmd4SkFSTktMcFlsVENVdVN2N3RTUzRtU3lhWExrbis3VW9NRmd5V2xpNUtBUk1BQUFFQktRQ1pBdGNDNXdBS0FBQUJCeWMzSGdFWEJ5Y1JJd0hnaVM3WE5tczJMb2xBQW15SkxkYzJhell0aWY0dEFBTUFnQUJBQTRBRFFBQWJBRGNBUmdBQUFTSUhEZ0VIQmhVVUZ4NEJGeFl6TWpjK0FUYzJOVFFuTGdFbkpnY3lGeDRCRnhZVkZBY09BUWNHSXlJbkxnRW5KalUwTno0Qk56WVROeDRCRndjWEJ5Y0hKemNuTnhjQ0FFOUdSbWtlSGg0ZWFVWkdUMDlHUm1rZUhoNGVhVVpHVDBJN09sY1pHUmtaVnpvN1FrSTdPbGNaR1JrWlZ6bzdRcWtNRmd5cXFpNnBxUzZxcWk2cEEwQWVIbWxHUms5UFJrWnBIaDRlSG1sR1JrOVBSa1pwSGg1QUdSbFhPanRDUWpzNlZ4a1pHUmxYT2p0Q1FqczZWeGtaL3UycURCWU1xYWt1cXFvdXFha3VxZ0FEQU5VQWxRTXJBdXNBQkFBSkFBMEFBQk16RVNNUk56TVJJeEVUTXhFajFZQ0E3M2g0NzNoNEFqZitYZ0dpdFAycUFsYitxdjhBQUFNQUFQL0FCQUFEd0FBUEFDQUFLQUFBQlNFaUpqVVJORFl6SVRJV0ZSRVVCZ01oSWdZVkVSUVdNeUV5TmpVUk5DWWpCd0VuTnhjQkhnRURTUDF3VEd4c1RBS1FUR3hzU3YxdExVRkJMUUtUTFVGQUxneitWTkF6blFGNURScEFiRXdDa0V4c2JFejljRXhzQTdsQkxmMXRMa0JBTGdLVExVSDMvbFBSTkowQmVBMGFBQU1BQVAvQUJBQUR3QUFQQUNBQUpBQUFCU0VpSmpVUk5EWXpJVElXRlJFVUJnTWhJZ1lWRVJRV015RXlOalVSTkNZakF5RTFJUU5JL1hCTWJHeE1BcEJNYkd4Sy9XMHRRVUV0QXBNdFFVQXVKZjIyQWtwQWJFd0NrRXhzYkV6OWNFeHNBN2xCTGYxdExrQkFMZ0tUTFVIK0lrb0FBZ0FBLzhBRUFBUEFBQThBSUFBQUFUSVdGUkVVQmlNaElpWTFFVFEyTXdVaElnWVZFUlFXTXlFeU5qVVJOQ1lqQTBoTWJHeE0vWEJNYkd4TUFwTDliUzFCUVMwQ2t5MUJRQzREd0d4TS9YQk1iR3hNQXBCTWJFZEJMZjF0TGtCQUxnS1RMVUVBQUFBREFITUFTQU9OQXpnQUJnQUtBQllBQUFrQkJ4Y0pBaUUzRnlFRk1BWVZGQll6TWpZMU5DWUMvZjVWUEdiKzl3RkZBVVg5Nzh6TS9tZ0NURlV5SXlNeVZRR05BYXM4WnY3My9yc0JSYzNOUUdzcUl6SXlJeXByQUFBQUFBSUF3QUNnQWNBQzRBQURBQWNBQUNVaEVTRUhFVE1SQWNEL0FBRUF3SUNnQWtCQS9rQUJ3QUFFQU1BQW9BTkFBdUFBQXdBSEFBc0FEd0FBSlNNUk14TWpFVE1USXhFekFTTVJNd0hBUUVEQVFFREFRRUQ5d0VCQW9BSkEvY0FDUVAzQUFrRDl3QUpBQUFBQUFBRUJYZ0NwQXFJQzF3QUhBQUFCQnhjSENRRWVBUUtpNmVrdC91a0JGd3NYQXFucDZTNEJGd0VYREJZQUF3Q2dBRUFEWUFOQUFCQUFJQUF6QUFBbEl5SW1OUkUwTmpzQk1oWVZFUlFHSXhNaElnWVZFUlFXTXlFeU5qVVJOQ1lCSXp3Qk5SRTBOak1oT2dFekZTRWlCaFVSQXI3N1EyQmdRL3REWDE5REJmNzlKemMzSndFREp6YzMvZmRCWDBNQm1nRUNBZjVkSmpaQVgwUUJPa05nWUVQK3hrUmZBa0E0SnY2N0p6YzNKd0ZGSmpqK0FBRUVBZ0lYUTE5QU5pYjkzQUFBQUFBQkFTa0E2UUxYQXBjQURnQUFBVGNlQVJjSEZ3Y25CeWMzSnpjWEFnQ3BEQllNcXFvdXFha3VxcW91cVFIdHFnd1dES21wTHFxcUxxbXBMcW9BQUFBQUJRQkFBQUFEd0FPQUFDVUFNZ0EvQUVzQVVRQUFBVDRCTlRRbUl5SUdGUlFXTXpJMk54Y0hMZ0VqSWdZVkZCWXpNalkxTkNZbk53RXpOUUVISWlZMU5EWXpNaFlWRkFZakVTSW1OVFEyTXpJV0ZSUUdJd0VpSmpVME5qTXlGaFVVQmdrQkZ3RTFJd0dXQ0FocFNrcHBhVW9VSlJGcGFSRWxGRXBwYVVwS2FRZ0lhZ0U2aHYzV295VTBOQ1VsTlRVbEpUUTBKU1UxTlNVQkRRa05EUWtKRFEwQk1mN3pXUUU2aGdLREVTVVVTbWxwU2twcENBaHFhZ2dJYVVwS2FXbEtGQ1VSYWY3SExRSXBFRFVsSlRRMEpTVTEvZWMwSlNVMU5TVWxOQUZRRFFrSkRRMEpDUTBCcWY3eldRRTVMUUFBQndDR0FGWURlZ01xQUFzQUR3QWJBQ2dBTEFBNEFEd0FBRGNpQmhVVUZqTXlOalUwSmdVMUlSVURJZ1lWRkJZek1qWTFOQ1lITWhZVkZBWWpJaVkxTkRZekJTRTFJUUV5RmhVVUJpTWlKalUwTmdVaE5TSEdHaVltR2hzbEpRS1ovZWFhR2lZbUdoc2xKUnNTR1JrU0VSa1pFUUlKL3BFQmIvMzNHeVVsR3hvbUpnTE8vZVlDR3RZbUdoc2xKUnNhSm10VlZRR1ZKaG9hSmlZYUdpWVZHUklTR1JrU0VobFdWZ0UvSlJzYUppWWFHeVZxVlFBQUFBRUJLUUNaQXRjQzV3QUtBQUFCTng0QkZ3Y25OeGNSTXdJZ2lRd1dETmZYTG9sQUFSU0pDeGNMMTljdGlRSFRBQUVCWGdDcEFxSUMxd0FNQUFBSkFTYzNKemNXRng0QkZ4WVhBcUwrNlMzcDZTMGpJeU5GSXlNakFjRCs2UzdwNlM0akl5TkdJaU1qQUFBQUFBVUFRd0J6QTcwRERRQXNBRW9BYUFCekFIMEFBQUUrQVRjNkFUTVdGeDRCRnhZWE1BWUhEZ0VIRndjbkJnY0dKaWNtSnk0Qkp5NEJKekEyTno0Qk55YzNGd2NPQVE4QkZoY2VBUmNXTno0Qk55Y09BU01pSnk0Qkp5WTFORFkzSndFK0FUOEJKaWN1QVNjbUJ3NEJCeGMrQVRNeUZ4NEJGeFlWRkFZSEZ3RU9BUlVVRmpNeU5qY25CVDRCTlRRbUl5SUdCd0VxTDJnMkJ3UUhTRU5DY2kwdEd6a3VFQ1FUUGkxTE9VQkFnRDQ5TlNsRUdRb1BDaVViRnpjZ1BpMUtDakZPR0FFZE56ZUpURXhJQ3hZS0hSeEVKaThvS1QwU0VSY1ZNQUhCTVUwWUFSZ25LR1U3T3o0cFVDVWtIRVFtTGlrcFBSRVNHQlVxL3AwTURsNUNHQzBUM2dFTERRNWVRaGtzRXdMRUZ4c0NBaGdYVWprNFJIWXdFUjROUGkxTEhBME1DQlVWSmg1S0xCRWlHRk1rSHpZV1BpMUpVU0ZaTndKRk5UVS9Cd2NYQkFnRkhSVVlFaEk4S1NrdUprUWNNZjZaSVZvM0FqZ3VMa0VTRWdFQkV4RWpGUmNSRWowcEtDOGxSUndxQVFnVExCbENYZzROM2JBVExSaERYUTRNQUFRQVF3Q1pBNzBDOWdBa0FFTUFZQUJ2QUFBQkZoY2VBUmNXRnpBR0J3WUhEZ0VuSmljdUFTY3VBU2N3TmpjMk56NEJOelkzT2dFekJ3WUhEZ0VIQmc4QkZoY2VBUmNXTnpZM1BnRTNOajhCSmljdUFTY21JeGN5Rng0QkZ4WVZGQWNPQVFjR0l5SW5MZ0VuSmpVME56NEJOell6RnpVMEppTWlCaDBCRkJZek1qWTFBZ2xJUTBKeUxTMGJPUzQ2VGs2b1UxUkZLVVFaQ2c4S0pSc2dLU3BnTlRVM0J3UUhFVHM0TjJBbkpoZ0JIVGMzaVV4TVNDb2xKa0FhR2hJQkdDY29aVHM3UGdndEtDYzdFUklTRVRzbktDMHRLQ2M3RVJJU0VUc25LQzJnWGtKQ1hsNUNRbDRDOWdJWUYxSTVPRVIyTUQwakpCQVZGREllU2l3UkloaFRKQ3NqSXpJT0RnSkFBaElUUUMwc05nSkZOVFUvQndjWERSWVdPeU1qS0FNNExpMUNFaEVmRVJFN0p5Z3RMU2duT3hJUkVSSTdKeWd0TFNnbk94RVIyQUZDWGw1Q0FrSmVYa0lBQWdEQUFLQURRQU1BQUJzQU13QUFBUVlIRGdFSEJnY09BUjBCQnpRMkp6UW1KeVluTGdFbkppYzFJUVVVRmhjV0Z4NEJGeFlYRlRjMU5qYytBVGMyTno0Qk5RTkFBUllWUVNVbUlBUUV3QUlDQlFNaEpTWkFGaFVCQW9EOXdBUUVJU1VtUUJZVkFVQUJGaFZCSlNZZ0JBUUN1aUFmSHo4Z0lDSUZDd1oxa0VLRFFnWUtCQ0loSWtBZUh4MUdRQWNPQmlJaElrQWVIeDJHTUZZZ0h4OC9JQ0FpQmc0SEFBQUFBZ0QxQUtrREN3TFhBQWNBQ3dBQUFRY1hCd2tCSGdFbEVTTVJBd3ZwNlMzKzZRRVhDeGYrTlVBQ3FlbnBMZ0VYQVJjTUZnditBQUlBQUFBQURBREFBTUFEUUFMQUFBTUFCd0FMQUE4QUV3QVhBQnNBSHdBakFDY0FLd0F2QUFBbEl6VXpGeU0xTXhjak5UTVhJelV6SlNNMU14Y2pOVE1YSXpVekZ5TTFNeVVqTlRNWEl6VXpGeU0xTXhjak5UTUJBRUJBd0VCQXdFQkF3RUJBL2NCQVFNQkFRTUJBUU1CQVFQM0FRRURBUUVEQVFFREFRRURBZ0lDQWdJQ0FnRUNBZ0lDQWdJQ0FRSUNBZ0lDQWdJQUFBQWdBUC8vL0E4RURnUUFuQUZBQVZBQllBRndBWUFCa0FHZ0FBQUVlQVJjV0ZSWVVCeFFIRGdFSEJpTUdJaWNpSnk0Qkp5WTFKalEzTkRjK0FUYzJNell5RnpJRklnWUhCZ2NPQVJjVUZ4NEJGeFlYRmpJM05qYytBVGMyTnpZMEp5WW5MZ0VuSmlNaUJnY0dJeE1qTlRNRklUVWhKU00xTXdVaE5TRWxJelV6QlNFMUlRTWtQbHdDQVFFQkFRSmNQa2xKU1pKSlNVazlYUUlCQVFFQkFsdytTVWxKa2tsSi9nVWxPZ0VCQVFFQkFRTUNOU1JKU1VxU1NrbEpKRFVDQXdFQkFRRURBalVrU1VoSmtVbElTZUNBZ0FHQS9zQUJRUDZBZ0lBQmdQN0FBVUQrQUlDQUFnRCtRQUhBQTRBQ1hENUpTVW1TU1VsSlBsd0NBUUVCQVFKY1BrbEpTWkpKU1VrK1hBSUJBUUZCT0NaSVNVbVNTVWxKSkRVQ0F3RUJBUUVEQWpVa1NVbEtra3BKU1NRMUFnTUJBUUg5NEVCQVFFQkFRRUJBUUVCQUFBQUFBQVFBUXdESUE3MEN1QUFrQUUwQVlBQndBQUFCRmhjZUFSY1dGekFHQndZSERnRUhCaWNtSnk0Qkp5WW5NRFkzTmpjK0FUYzJNem9CQnlJR0J3WUhEZ0VIQmdjd0ZoY1dGeDRCTnpZM05qYytBVGMyTnpBbUp5WW5MZ0VuSmlNcUFTTVhIZ0VWRkFZSERnRW5MZ0VuTkRZM1BnRXpCdzRCQndZV0Z4WTJOelltSnk0Qkl3SUpRRUpCZFM4d0hVSTdLUzh2WXpJeU1EczVPbVlwS1JsRlB5RWxKVTRvS0NjSEJBb05HUXd1TUM5Vkl5TVZIeDhxTkRSdk9EZ3hLaWdvU0IwZEVoOGZIaVVrVHlvcEtBWUVCaEpHaXhnWk1IdzBQR2NDR1J3a1Vqb1RJMGdXR3hvdlBZd2VHeUF3RnlBb0FyZ0JEQXc1THk5SWZTa2RFaEVSQVFFREJCQVBPeTB0UG9FcUZ3NFBFUVFFUUFFQkF3c0xLeUVoTGo4Y0tCVVZFUUlDQndZTkRTd2VIaWMvSFJ3VEVoUUZCQjBDUlZRZ1BSUW1CZ1VGVFVFaVFoWWFERUFCQ1JrZ1hBMFJCeVVpWEFzR0FnQUNBUFVBcVFNTEF0Y0FEQUFRQUFBSkFTYzNKemNXRng0QkZ4WVhFeU1STXdJNS91a3Q2ZWt0SXlNaVJpTWpJOUpBUUFIQS91a3U2ZWt1SXlNalJpSWpJLzhBQWdBQUFBQUNBSGtBa3dPSEF1MEFDd0FXQUFBQkJ5RVZJUmNIQ1FFZUFSY0ZGemNuSVRVaE55Y09BUUkwUUFHVC9tMUFqZjdTQVM0alJ5UCtvTk15Z0FIdS9oS0FNalZwQW1CQXdFQ05BUzBCTFNOSEk2RFRNNEJBZ0RNMWFRQUFBQWdBWUFBZ0E2QURZQUFEQUFrQUR3QVRBQmNBSFFBakFDY0FBQ1VqRVRNbkJ5YzNIZ0VGQnljM0hnRTNJVFVoQlNFMUlUY0hKemNlQVNVSEp6Y2VBUVVqRVRNQ0lFQkFjODB0elFzWEFhc3R6UzB6WjRiL0FBRUEvY0QvQUFFQVRTM05MVE5uQWRQTkxjMExGLzdlUUVBZ0FRQWd6UzNOQ3hlckxjMHRNMmZOUUVCQVlDM05MVE5uYmMwdHpRc1hpd0VBQUFBQ0FQRUFzUU1QQXM4QUJ3QU9BQUFUSHdFbk55Y0hKeVV2QVJjSEZ6ZnhBOTlIZEZOMVJ3SWVBOTlIZEZOMUFaUGZBMGQxVTNSSFd0OERSM1ZUZEFBQUF3REFBT0FEUUFLZ0FBTUFCd0FMQUFBbElUVWhOU0UxSVRVaE5TRURRUDJBQW9EOWdBS0EvWUFDZ09CQWdFQ0FRQUFBQUFJQXl3Q0tBelVDOWdBSEFBOEFBQ1V2QVJjSEZ6Y1hFeDhCSnpjbkJ5Y0IyZ1RlUjNSVGRVZE1CTjVIZEZOMVI3amVCRWgxVTNWSEFoRGVCRWgxVTNWSEFBQUFBZ0NBQVdBRGdBSWdBQU1BQndBQUFTRTFJUVVWSVRVRGdQMEFBd0Q5UUFLQUFXREFRRUJBQUFFQlhnQ3BBcUlDMXdBTUFBQUpBU2MzSnpjV0Z4NEJGeFlYQXFMKzZTM3A2UzBqSXlORkl5TWpBY0QrNlM3cDZTNGpJeU5HSWlNakFBQUFBQUlBUUFDZ0E4QUM0QUFLQUJZQUFBRTNIZ0VYQnljM0Z4RXpBU01SQnljM0hnRVhCeWNSQVVHUURCY000T0F2a0VJQndFS1FMK0E0Y0RndmtBRVloZ3NXQzlMU0xJWUJ5UDNBQWNpR0xOSTBhVFVzaHY0NEFBQUdBSFlBUUFPTEEwc0FIQUF5QUVFQVV3QmlBRzRBQUFFV0Z4NEJGeFlIQmdjT0FTY21KeVluTGdFM05qYzJOejRCTnpZWEJ3WUhEZ0VIQmhjV0Z4NEJOelkzTmljdUFTY21CeGNXQnc0QkJ3WW5MZ0V2QVFFZUFRRVdOejRCTnpZM05pWW5CZ2NPQVFjR0J4TXlGaDhCQVNZbkpqWTNOamM2QVFjR0J3NEJCd1lYQVM0QkJ3SUdZbFZWYXc0TkxTZE9UYmRkWGtjdkhoNFhDQWdjR1NjbVh6YzNPUXBUUjBoYUNnc25LRk5UdVZWVkxTVUtDVmhKU1Z6ekl3Z0lUVUJCVGh3MEdDZ0Jnd1lML3Rnb0tTcEpIQnNNQ0FFSklTQWhRU0VnSVVNaFFCMHAvbjBsQlFZeU9EaFlCQW9HTUNvcU53b0tEZ0VHRVNJU0Ewc0NOVFdrWldSZ1ZEYzNKUlVVUXlzNU9uNUFRRG95S2lrNkVCQUJRQUV0TFl4VlZGRlRMUzBFS2l0Y1RGVlZqeTh1QWMxQVNrbDdKU1lJQWhFTkZnR0RDaFQrclF3RkJTY2dIeWtlUFIwZ0lTRkJJU0FoQWRZUkVCYitmRUZMVElJdUxRWkFBaGtaVFRBdkxnRUZCUVVCQUFBQUFBTUFnQUF3QTRBRFVBQVdBQ0lBTmdBQUFUUW1JeUlHRlNNaUJoVVJGQll6SVRJMk5SRTBKaU1GTWhZVkZBWWpJaVkxTkRZQklTSW1OUkUwTmpzQkZTRTFNeklXRlJFVUJnS0FPRWhJT0lBMVMwczFBZ0ExUzBzMS93QVNHUmtTRWhrWkFSTCtBQm9tSmhwQUFZQkFHaVltQXZBWVNFZ1lTelgrUURWTFN6VUJ3RFZMRVJnUkVSZ1lFUkVZL1pFbUdnSEFHaWFBZ0NZYS9rQWFKZ0FBQUFBQ0FIQUFNQU9RQTFBQUtBQkFBQUFCSnpBMk56NEJGemNtTno0Qk56WXhGaGNlQVJjV0Z3NEJCdzRCSndjZUFSY1dCZzhCSndjbk53RU9BUjhCQnlZR0J3RStBVGMySmljM01CWTNKekFHTVFGWmxRWVBJWEV3WlFrUUVDd1VGQ1VrSlVrbEpTUUZDd1VhUlNwcUFRRUNBeWd2R0pycExla0JDQkVhQ2hDZ01HSVRBU0VDQkFJZUJ3ZWFPaVRhQVFGSGxTY1ZMUThKWXh3ZEhTNFBEeVVsSkVvbEpDVUhEZ2NqTHdkbkNRRWJNMkFZREpycUx1a0J0ZzRtRHhlZkRBSWUvdDhDQXdJYVZpeWFFU3JaQVFBQUNnQS8vLzhEd1FPQkFDY0FPd0JIQUdFQVp3QnVBSHNBaGdDTUFKSUFBQUVlQVJjV0ZSWVVCeFFIRGdFSEJpTUdJaWNpSnk0Qkp5WTFKalEzTkRjK0FUYzJNell5RnpJVElSRVdNeFkyTnpZM1BnRTNOamMrQVNjMEp3RVVGaFVlQVJjeUZqTTFJd0VISnpjZUFSY0hKeFVPQVFjakZ3Y25OeDRCRndjV05qYzFCUlFXRlRNMUp3WVVCek0xSXpjcUFTTWlCZ2NVQmhVek5UTWxGVE0wSmpVdUFTY2lKaVVHSWdjVk16Y21JaU1WTXdNa1Bsd0NBUUVCQVFKY1BrbEpTWkpKU1VrOVhRSUJBUUVCQWx3K1NVbEpra2xKcVAyNlBUMDllajA5UFNRMUFnSUNBUUVCQXZ6OEFRSTFKQWdRQ0h3Q1FRa3VWeFlyRmk0SkFWdy9kd291VmxZTUZnd0xVWUlCL2J3QmZuMEJBWDk5dnhndUZ5VTZBUUY4UWdISGZRRUNOU1FJRVA3eklVRWdnc01nUVNHQ0E0QUNYRDVKU1VtU1NVbEpQbHdDQVFFQkFRSmNQa2xKU1pKSlNVaytYQUlCQVFIL0FQMjhBZ0VCQVFJQ0FqVWtQVDA4ZWowOVBQNDhDUkVJSkRVQ0FYNEJGZ291VmhVc0ZTNEtjejlmQWdrdVYxY01GZ3dLQVIxRmMxUWhRQ0NCd2lGQUlZTC9PQ1lZTUJsQmYzOEpFUWtrTlFJQkFnRUJmNEFCZ1FBQUFnQ2dBR0FEWUFNZ0FBc0FGd0FBQVNFVklSRWpFU0UxSVJFekJ4RWhGU0VSTXhFaE5TRVJBbUFCQVA4QXdQOEFBUURBZ1A4QUFRQkFBUUQvQUFJZ3dQOEFBUURBQVFCQS93QkEvd0FCQUVBQkFBQUFBUUZlQUtrQ29nTFhBQWNBQUFFSEZ3Y0pBUjRCQXFMcDZTMys2UUVYQ3hjQ3FlbnBMZ0VYQVJjTUZnQUNBQUQvd0FRQUE4QUFHd0EzQUFBQklnY09BUWNHRlJRWEhnRVhGak15Tno0Qk56WTFOQ2N1QVNjbUJ6SVhIZ0VYRmhVVUJ3NEJCd1lqSWljdUFTY21OVFEzUGdFM05nSUFhbDFkaXlrb0tDbUxYVjFxYWwxZGl5a29LQ21MWFYxcVhWRlNlaU1qSXlONlVsRmRYVkZTZWlNakl5TjZVbEVEd0NncGkxMWRhbXBkWFlzcEtDZ3BpMTFkYW1wZFhZc3BLRUFqSTNwU1VWMWRVVko2SXlNakkzcFNVVjFkVVZKNkl5TUFBd0FBLzhBRUFBUEFBQnNBTndCVEFBQUJJZ2NPQVFjR0ZSUVhIZ0VYRmpNeU56NEJOelkxTkNjdUFTY21CeklYSGdFWEZoVVVCdzRCQndZaklpY3VBU2NtTlRRM1BnRTNOZ0VVQnc0QkJ3WWpJaWN1QVNjbU5UUTNQZ0UzTmpNeUZ4NEJGeFlDQUdwZFhZc3BLQ2dwaTExZGFtcGRYWXNwS0NncGkxMWRhbDFSVW5vakl5TWplbEpSWFYxUlVub2pJeU1qZWxKUkFaMFpHVmM2TzBKQ096cFhHUmtaR1ZjNk8wSkNPenBYR1JrRHdDZ3BpMTFkYW1wZFhZc3BLQ2dwaTExZGFtcGRYWXNwS0VBakkzcFNVVjFkVVZKNkl5TWpJM3BTVVYxZFVWSjZJeVArUUVJN09sY1pHUmtaVnpvN1FrSTdPbGNaR1JrWlZ6bzdBQUFBQUFJQWVRQ1RBNGNDN1FBT0FCa0FBQWtCSnpjaE5TRW5OeFlYSGdFWEZpVVhJUlVoQnhjM0p3NEJBNGYrMG8xQS9tMEJrMENOSmlZbFRDVW0vc2FBL2hJQjdvQXkwOU1NR2dIQS90T05RTUJBalNVbUprc21KWHFBUUlBejA5TU5HUUFBQUFBQ0FJQUFRQU9BQTBBQURnQVpBQUFCRVNFUkl4RVVGak1oTWpZMUVTTUZOeGNISnpjWEVUTVJNUU1yL2FwVk1pTUNWaU15VmY4QWJqelYxVHh1VmdIQS90VUJLLzdWSXpJeUl3RXJIVzQ4MWRVOGJnR2QvbU1BQVFEcEFSNERGd0ppQUFjQUFBa0NOeGMzSGdFREYvN3AvdWt1NmVrTUZnSTEvdWtCRnkzcDZRc1hBQUFCQVY0QXFRS2lBdGNBQndBQUFRY1hCd2tCSGdFQ291bnBMZjdwQVJjTEZ3S3A2ZWt1QVJjQkZ3d1dBQUVCWGdDcEFxSUMxd0FNQUFBSkFTYzNKemNXRng0QkZ4WVhBcUwrNlMzcDZTMGpJeU5GSXlNakFjRCs2UzdwNlM0akl5TkdJaU1qQUFBQUFBRUE2UUVlQXhjQ1lnQUxBQUFCQnljSEp3RVdGeDRCRnhZREZ5N3A2UzRCRnlNaklrWWpJd0ZMTGVucExRRVhJeU1qUlNNakFBQUFBUURwQU80REZ3S1NBQWNBQUFrQkp6Y1hBUjRCQXhmK2liY3VpUUZKREJZQ1pmNkp0eTJKQVVrTEZ3QUJBVjRBcVFLaUF0Y0FEQUFBQ1FFbk55YzNGaGNlQVJjV0Z3S2kvdWt0NmVrdEl5TWpSU01qSXdIQS91a3U2ZWt1SXlNalJpSWpJd0FBQUFBQkFNQUJvQU5BQWVBQUF3QUFFeUVWSWNBQ2dQMkFBZUJBQUFBQUFRRHBBUjRERndKaUFBY0FBQWtDTnhjM0hnRURGLzdwL3VrdTZla01GZ0kxL3VrQkZ5M3A2UXNYQUFBQkFBQUFBUUFBRWt2aGVWOFBQUFVBQ3dRQUFBQUFBTmxCajQwQUFBQUEyVUdQalFBQS84QUVBQVBBQUFBQUNBQUNBQUFBQUFBQUFBRUFBQVBBLzhBQUFBUUFBQUFBQUFRQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBNEJBQUFBQUFBQUFBQUFBQUFBZ0FBQUFRQUFEOEVBQUJUQkFBQktRUUFBSUFFQUFEVkJBQUFBQVFBQUFBRUFBQUFCQUFBY3dRQUFNQUVBQURBQkFBQlhnUUFBS0FFQUFFcEJBQUFRQVFBQUlZRUFBRXBCQUFCWGdRQUFFTUVBQUJEQkFBQXdBUUFBUFVFQUFEQUJBQUFQd1FBQUVNRUFBRDFCQUFBZVFRQUFHQUVBQUR4QkFBQXdBUUFBTXNFQUFDQUJBQUJYZ1FBQUVBRUFBQjJCQUFBZ0FRQUFIQUVBQUEvQkFBQW9BUUFBVjRFQUFBQUJBQUFBQVFBQUhrRUFBQ0FCQUFBNlFRQUFWNEVBQUZlQkFBQTZRUUFBT2tFQUFGZUJBQUF3QVFBQU9rQUFBQUFBQW9BRkFBZUFNSUJCZ0VlQVl3QnFBSHFBaVFDV0FLR0Fwb0N2QUxTQXg0RFBnTzJCQklFS2dSSUJRZ0ZyZ1lDQmlBR2FnY01CN1lIMmdnSUNGSUljZ2lNQ0s0SXdnamdDUXdKeEFvVUNud0xWQXQrQzVRTDZneHFESndNeUF6ZURQUU5FZzB1RFVRTllnMXdEWVlBQUFBQkFBQUFPQUNUQUF3QUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGdDdUFBRUFBQUFBQUFFQUNBQUFBQUVBQUFBQUFBSUFCd0JwQUFFQUFBQUFBQU1BQ0FBNUFBRUFBQUFBQUFRQUNBQitBQUVBQUFBQUFBVUFDd0FZQUFFQUFBQUFBQVlBQ0FCUkFBRUFBQUFBQUFvQUdnQ1dBQU1BQVFRSkFBRUFFQUFJQUFNQUFRUUpBQUlBRGdCd0FBTUFBUVFKQUFNQUVBQkJBQU1BQVFRSkFBUUFFQUNHQUFNQUFRUUpBQVVBRmdBakFBTUFBUVFKQUFZQUVBQlpBQU1BQVFRSkFBb0FOQUN3UVdkQ1lXeG9ZVzBBUVFCbkFFSUFZUUJzQUdnQVlRQnRWbVZ5YzJsdmJpQXhMakFBVmdCbEFISUFjd0JwQUc4QWJnQWdBREVBTGdBd1FXZENZV3hvWVcwQVFRQm5BRUlBWVFCc0FHZ0FZUUJ0UVdkQ1lXeG9ZVzBBUVFCbkFFSUFZUUJzQUdnQVlRQnRVbVZuZFd4aGNnQlNBR1VBWndCMUFHd0FZUUJ5UVdkQ1lXeG9ZVzBBUVFCbkFFSUFZUUJzQUdnQVlRQnRSbTl1ZENCblpXNWxjbUYwWldRZ1lua2dTV052VFc5dmJpNEFSZ0J2QUc0QWRBQWdBR2NBWlFCdUFHVUFjZ0JoQUhRQVpRQmtBQ0FBWWdCNUFDQUFTUUJqQUc4QVRRQnZBRzhBYmdBdUFBQUFBd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9PVxcXCIpIGZvcm1hdChcXFwidHJ1ZXR5cGVcXFwiKTtcXG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxuICBmb250LXN0eWxlOiBub3JtYWw7IH1cXG5cXG4uYWctdGhlbWUtYmFsaGFtIHtcXG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XFxuICBjb2xvcjogIzAwMDtcXG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFxcXCJTZWdvZSBVSVxcXCIsIFJvYm90bywgT3h5Z2VuLVNhbnMsIFVidW50dSwgQ2FudGFyZWxsLCBcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLCBzYW5zLXNlcmlmO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIGZvbnQtc2l6ZTogMTJweDtcXG4gIGxpbmUtaGVpZ2h0OiAxOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1tZW51LCAuYWctdGhlbWUtYmFsaGFtIC5hZy10aGVtZS1iYWxoYW0uYWctZG5kLWdob3N0LCAuYWctdGhlbWUtYmFsaGFtIC5hZy1jZWxsLmFnLWNlbGwtaW5saW5lLWVkaXRpbmcsIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNlbGwuYWctcG9wdXAtZWRpdG9yLCAuYWctdGhlbWUtYmFsaGFtIC5hZy1zZWxlY3QtYWdnLWZ1bmMtcG9wdXAsIC5hZy10aGVtZS1iYWxoYW0gLmFnLW92ZXJsYXktbG9hZGluZy1jZW50ZXIge1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjQkRDM0M3OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy10YWItaGVhZGVyIC5hZy10YWIge1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcXG4gICAgbWFyZ2luOiA0cHg7XFxuICAgIG1hcmdpbi1ib3R0b206IDA7XFxuICAgIHBhZGRpbmc6IDRweCA4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRhYi1oZWFkZXIgLmFnLXRhYi5hZy10YWItc2VsZWN0ZWQge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcXG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICMwMDkxRUE7XFxuICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB3aGl0ZTtcXG4gICAgYm9yZGVyLWNvbG9yOiAjQkRDM0M3OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIGxhYmVsIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAqIHtcXG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAqOmZvY3VzLCAuYWctdGhlbWUtYmFsaGFtICogKjpiZWZvcmUsIC5hZy10aGVtZS1iYWxoYW0gKiAqOmFmdGVyIHtcXG4gICAgICBvdXRsaW5lOiBub25lO1xcbiAgICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gICAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRhYiB7XFxuICAgIC13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7XFxuICAgICAgICAgICAgYm94LXNpemluZzogY29udGVudC1ib3g7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDI4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA1NnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDU2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0zIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDYwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA4NHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDg0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC01IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC02IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTYge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE2OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDE2OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNyB7XFxuICAgIHBhZGRpbmctbGVmdDogMTQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC03IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC03IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxOTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTcge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxOTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDE2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtOCB7XFxuICAgIHBhZGRpbmctbGVmdDogMjI0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC04IHtcXG4gICAgcGFkZGluZy1yaWdodDogMjI0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC05IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTkge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDI1MnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtOSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDI1MnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDIwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTAge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyMDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEwIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEwIHtcXG4gICAgcGFkZGluZy1yaWdodDogMjgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xMSB7XFxuICAgIHBhZGRpbmctbGVmdDogMjIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDIyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTEge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDMwOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTEge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAzMDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTEyIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyNDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTEyIHtcXG4gICAgcGFkZGluZy1yaWdodDogMjQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xMiB7XFxuICAgIHBhZGRpbmctbGVmdDogMzM2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDMzNnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDI2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTMge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyNjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEzIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAzNjRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEzIHtcXG4gICAgcGFkZGluZy1yaWdodDogMzY0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xNCB7XFxuICAgIHBhZGRpbmctbGVmdDogMjgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDI4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDM5MnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTQge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAzOTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTE1IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAzMDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTE1IHtcXG4gICAgcGFkZGluZy1yaWdodDogMzAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xNSB7XFxuICAgIHBhZGRpbmctbGVmdDogNDIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xNSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDQyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDMyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTYge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAzMjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE2IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0NDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE2IHtcXG4gICAgcGFkZGluZy1yaWdodDogNDQ4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xNyB7XFxuICAgIHBhZGRpbmctbGVmdDogMzQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xNyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDM0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDQ3NnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTcge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA0NzZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTE4IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAzNjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTE4IHtcXG4gICAgcGFkZGluZy1yaWdodDogMzYwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xOCB7XFxuICAgIHBhZGRpbmctbGVmdDogNTA0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDUwNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDM4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTkge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAzODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE5IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA1MzJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE5IHtcXG4gICAgcGFkZGluZy1yaWdodDogNTMycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yMCB7XFxuICAgIHBhZGRpbmctbGVmdDogNDAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yMCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDQwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDU2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjAge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1NjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTIxIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0MjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTIxIHtcXG4gICAgcGFkZGluZy1yaWdodDogNDIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yMSB7XFxuICAgIHBhZGRpbmctbGVmdDogNTg4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDU4OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDQ0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjIge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA0NDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTIyIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA2MTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTIyIHtcXG4gICAgcGFkZGluZy1yaWdodDogNjE2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yMyB7XFxuICAgIHBhZGRpbmctbGVmdDogNDYwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yMyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDQ2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDY0NHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjMge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA2NDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTI0IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0ODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTI0IHtcXG4gICAgcGFkZGluZy1yaWdodDogNDgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yNCB7XFxuICAgIHBhZGRpbmctbGVmdDogNjcycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDY3MnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDUwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjUge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1MDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI1IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA3MDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI1IHtcXG4gICAgcGFkZGluZy1yaWdodDogNzAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yNiB7XFxuICAgIHBhZGRpbmctbGVmdDogNTIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDUyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDcyOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjYge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA3MjhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTI3IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA1NDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTI3IHtcXG4gICAgcGFkZGluZy1yaWdodDogNTQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yNyB7XFxuICAgIHBhZGRpbmctbGVmdDogNzU2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yNyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDc1NnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDU2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjgge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1NjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI4IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA3ODRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTI4IHtcXG4gICAgcGFkZGluZy1yaWdodDogNzg0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yOSB7XFxuICAgIHBhZGRpbmctbGVmdDogNTgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yOSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDU4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDgxMnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjkge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA4MTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTMwIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA2MDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTMwIHtcXG4gICAgcGFkZGluZy1yaWdodDogNjAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zMCB7XFxuICAgIHBhZGRpbmctbGVmdDogODQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zMCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDg0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzEge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDYyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzEge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA2MjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTMxIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA4NjhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTMxIHtcXG4gICAgcGFkZGluZy1yaWdodDogODY4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0zMiB7XFxuICAgIHBhZGRpbmctbGVmdDogNjQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDY0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDg5NnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzIge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA4OTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTMzIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA2NjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTMzIHtcXG4gICAgcGFkZGluZy1yaWdodDogNjYwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zMyB7XFxuICAgIHBhZGRpbmctbGVmdDogOTI0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zMyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDkyNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDY4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzQge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA2ODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTM0IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA5NTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTM0IHtcXG4gICAgcGFkZGluZy1yaWdodDogOTUycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0zNSB7XFxuICAgIHBhZGRpbmctbGVmdDogNzAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zNSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDcwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDk4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzUge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA5ODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTM2IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA3MjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTM2IHtcXG4gICAgcGFkZGluZy1yaWdodDogNzIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zNiB7XFxuICAgIHBhZGRpbmctbGVmdDogMTAwOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzYge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMDA4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0zNyB7XFxuICAgIHBhZGRpbmctbGVmdDogNzQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zNyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDc0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEwMzZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTM3IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTAzNnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDc2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzgge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA3NjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTM4IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMDY0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEwNjRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTM5IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA3ODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTM5IHtcXG4gICAgcGFkZGluZy1yaWdodDogNzgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zOSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTA5MnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMzkge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMDkycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00MCB7XFxuICAgIHBhZGRpbmctbGVmdDogODAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00MCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDgwMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDExMjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQwIHtcXG4gICAgcGFkZGluZy1yaWdodDogMTEyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDEge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDgyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDEge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA4MjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQxIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMTQ4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00MSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDExNDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTQyIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA4NDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTQyIHtcXG4gICAgcGFkZGluZy1yaWdodDogODQwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00MiB7XFxuICAgIHBhZGRpbmctbGVmdDogMTE3NnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDIge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMTc2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00MyB7XFxuICAgIHBhZGRpbmctbGVmdDogODYwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00MyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDg2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEyMDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQzIHtcXG4gICAgcGFkZGluZy1yaWdodDogMTIwNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDg4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDQge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA4ODBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ0IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMjMycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00NCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEyMzJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTQ1IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA5MDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTQ1IHtcXG4gICAgcGFkZGluZy1yaWdodDogOTAwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00NSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTI2MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDUge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMjYwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00NiB7XFxuICAgIHBhZGRpbmctbGVmdDogOTIwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00NiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDkyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEyODhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ2IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTI4OHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDk0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDcge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA5NDBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ3IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMzE2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00NyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEzMTZweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTQ4IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA5NjBweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTQ4IHtcXG4gICAgcGFkZGluZy1yaWdodDogOTYwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00OCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTM0NHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDgge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMzQ0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00OSB7XFxuICAgIHBhZGRpbmctbGVmdDogOTgwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00OSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDk4MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEzNzJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ5IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTM3MnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jZWxsIC5hZy1pY29uIHtcXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jaGVja2JveCwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcmFkaW8tYnV0dG9uLCAuYWctdGhlbWUtYmFsaGFtIC5hZy10b2dnbGUtYnV0dG9uIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBjdXJzb3I6IGRlZmF1bHQ7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2hlY2tib3ggbGFiZWwsIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJhZGlvLWJ1dHRvbiBsYWJlbCwgLmFnLXRoZW1lLWJhbGhhbSAuYWctdG9nZ2xlLWJ1dHRvbiBsYWJlbCB7XFxuICAgICAgY3Vyc29yOiBkZWZhdWx0OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2hlY2tib3ggbGFiZWw6ZW1wdHksIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJhZGlvLWJ1dHRvbiBsYWJlbDplbXB0eSwgLmFnLXRoZW1lLWJhbGhhbSAuYWctdG9nZ2xlLWJ1dHRvbiBsYWJlbDplbXB0eSB7XFxuICAgICAgICBtYXJnaW46IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2hlY2tib3g6bm90KC5hZy1sYWJlbC1hbGlnbi1sZWZ0KSBsYWJlbCwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcmFkaW8tYnV0dG9uOm5vdCguYWctbGFiZWwtYWxpZ24tbGVmdCkgbGFiZWwsIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRvZ2dsZS1idXR0b246bm90KC5hZy1sYWJlbC1hbGlnbi1sZWZ0KSBsYWJlbCB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2VsbCB7XFxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IHN1YnBpeGVsLWFudGlhbGlhc2VkOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1sZWFmLWluZGVudCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAyOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLWNlbGwge1xcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1yb3cuYWctY2VsbC1maXJzdC1yaWdodC1waW5uZWQsIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctY2VsbDpub3QoLmFnLWNlbGwtZm9jdXMpLmFnLWNlbGwtZmlyc3QtcmlnaHQtcGlubmVkIHtcXG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjQkRDM0M3OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXJvdy5hZy1jZWxsLWxhc3QtbGVmdC1waW5uZWQsIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctY2VsbDpub3QoLmFnLWNlbGwtZm9jdXMpLmFnLWNlbGwtbGFzdC1sZWZ0LXBpbm5lZCB7XFxuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNCREMzQzc7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LWdyb3VwLWxlYWYtaW5kZW50IHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAyOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWNlbGwge1xcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHRyYW5zcGFyZW50OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXJvdy5hZy1jZWxsLWZpcnN0LXJpZ2h0LXBpbm5lZCwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1jZWxsOm5vdCguYWctY2VsbC1mb2N1cykuYWctY2VsbC1maXJzdC1yaWdodC1waW5uZWQge1xcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNCREMzQzc7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctcm93LmFnLWNlbGwtbGFzdC1sZWZ0LXBpbm5lZCwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1jZWxsOm5vdCguYWctY2VsbC1mb2N1cykuYWctY2VsbC1sYXN0LWxlZnQtcGlubmVkIHtcXG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0JEQzNDNzsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdmFsdWUtY2hhbmdlLWRlbHRhIHtcXG4gICAgcGFkZGluZy1yaWdodDogMnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy12YWx1ZS1jaGFuZ2UtZGVsdGEtdXAge1xcbiAgICBjb2xvcjogIzQzYTA0NzsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdmFsdWUtY2hhbmdlLWRlbHRhLWRvd24ge1xcbiAgICBjb2xvcjogI2U1MzkzNTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdmFsdWUtY2hhbmdlLXZhbHVlIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAgIGJvcmRlci1yYWRpdXM6IDFweDtcXG4gICAgcGFkZGluZy1sZWZ0OiAxcHg7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDFweDtcXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDFzO1xcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDFzOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy12YWx1ZS1jaGFuZ2UtdmFsdWUtaGlnaGxpZ2h0IHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMiwgMTYwLCAxMzMsIDAuNSk7XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjFzO1xcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMXM7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWlucHV0LXdyYXBwZXIgaW5wdXQ6bm90KFt0eXBlXSksXFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcInRleHRcXFwiXSxcXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwibnVtYmVyXFxcIl0sXFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcInRlbFxcXCJdLFxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJkYXRlXFxcIl0sXFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcImRhdGV0aW1lLWxvY2FsXFxcIl0ge1xcbiAgICBib3JkZXItd2lkdGg6IDFweDtcXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gICAgYm9yZGVyLWNvbG9yOiAjOTVBNUE2OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWlucHV0LXdyYXBwZXIgaW5wdXQ6bm90KFt0eXBlXSk6ZGlzYWJsZWQsXFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwidGV4dFxcXCJdOmRpc2FibGVkLFxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcIm51bWJlclxcXCJdOmRpc2FibGVkLFxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcInRlbFxcXCJdOmRpc2FibGVkLFxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcImRhdGVcXFwiXTpkaXNhYmxlZCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJkYXRldGltZS1sb2NhbFxcXCJdOmRpc2FibGVkIHtcXG4gICAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM4KTtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWJlYmViO1xcbiAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgxNDksIDE2NSwgMTY2LCAwLjMpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcImRhdGVcXFwiXSB7XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgICAgICAtbXMtZmxleDogMSAxIGF1dG87XFxuICAgICAgICAgICAgZmxleDogMSAxIGF1dG87IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwicmFuZ2VcXFwiXSB7XFxuICAgIHBhZGRpbmc6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWlucHV0LXdyYXBwZXIgdGV4dGFyZWEge1xcbiAgICBib3JkZXItd2lkdGg6IDFweDtcXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gICAgYm9yZGVyLWNvbG9yOiAjOTVBNUE2OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWlucHV0LXdyYXBwZXIgdGV4dGFyZWE6ZGlzYWJsZWQge1xcbiAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlYmViZWI7XFxuICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE0OSwgMTY1LCAxNjYsIDAuMyk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWhlYWRlciB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY3Zjc7XFxuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xcbiAgICBmb250LXdlaWdodDogNjAwO1xcbiAgICBmb250LXNpemU6IDEycHg7XFxuICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFxcXCJTZWdvZSBVSVxcXCIsIFJvYm90bywgT3h5Z2VuLVNhbnMsIFVidW50dSwgQ2FudGFyZWxsLCBcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLCBzYW5zLXNlcmlmO1xcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0JEQzNDNzsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcGlubmVkLXJpZ2h0LWhlYWRlciB7XFxuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0JEQzNDNzsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcGlubmVkLWxlZnQtaGVhZGVyIHtcXG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0JEQzNDNzsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaGVhZGVyLXJvdyB7XFxuICAgIGJvcmRlcjogbm9uZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcm93IHtcXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gICAgYm9yZGVyLWNvbG9yOiAjQkRDM0M3O1xcbiAgICBib3JkZXItd2lkdGg6IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcm93Om5vdCguYWctcm93LWZpcnN0KSB7XFxuICAgICAgYm9yZGVyLXdpZHRoOiAxcHggMCAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJvdy5hZy1yb3ctbGFzdCB7XFxuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1yb3ctb2RkIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZmRmZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcm93LWV2ZW4ge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaG9yaXpvbnRhbC1sZWZ0LXNwYWNlciB7XFxuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNCREMzQzc7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaG9yaXpvbnRhbC1sZWZ0LXNwYWNlci5hZy1zY3JvbGxlci1jb3JuZXIge1xcbiAgICAgIGJvcmRlci1yaWdodDogbm9uZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaG9yaXpvbnRhbC1yaWdodC1zcGFjZXIge1xcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNCREMzQzc7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaG9yaXpvbnRhbC1yaWdodC1zcGFjZXIuYWctc2Nyb2xsZXItY29ybmVyIHtcXG4gICAgICBib3JkZXItbGVmdDogbm9uZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcm93LWhvdmVyIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0VDRjBGMTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbnVtZXJpYy1jZWxsIHtcXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWhlYWRlci1jZWxsLWxhYmVsIC5hZy1oZWFkZXItaWNvbiB7XFxuICAgIG1hcmdpbi1sZWZ0OiA0cHg7XFxuICAgIG9wYWNpdHk6IDAuODc7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWhlYWRlci1jZWxsLFxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaGVhZGVyLWdyb3VwLWNlbGwge1xcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xcbiAgICBib3JkZXItY29sb3I6ICNCREMzQzc7XFxuICAgIHBhZGRpbmctbGVmdDogMTJweDtcXG4gICAgcGFkZGluZy1yaWdodDogMTJweDtcXG4gICAgYm9yZGVyLXdpZHRoOiAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWhlYWRlci1jZWxsLmFnLWhlYWRlci1jZWxsLW1vdmluZyxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaGVhZGVyLWdyb3VwLWNlbGwuYWctaGVhZGVyLWNlbGwtbW92aW5nIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1oZWFkZXItY2VsbDpub3QoLmFnLWhlYWRlci1ncm91cC1jZWxsLW5vLWdyb3VwKSxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaGVhZGVyLWdyb3VwLWNlbGw6bm90KC5hZy1oZWFkZXItZ3JvdXAtY2VsbC1uby1ncm91cCkge1xcbiAgICAgIGJvcmRlci10b3Atd2lkdGg6IDFweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaGVhZGVyLXJvdzpmaXJzdC1jaGlsZCAuYWctaGVhZGVyLWNlbGwsIC5hZy10aGVtZS1iYWxoYW0gLmFnLWhlYWRlci1yb3c6Zmlyc3QtY2hpbGQgLmFnLWhlYWRlci1ncm91cC1jZWxsIHtcXG4gICAgYm9yZGVyLXRvcC13aWR0aDogMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaGVhZGVyLWNlbGwtcmVzaXplIHtcXG4gICAgY3Vyc29yOiBjb2wtcmVzaXplOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1oZWFkZXItc2VsZWN0LWFsbCB7XFxuICAgIG1hcmdpbi1yaWdodDogMTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2VsbCB7XFxuICAgIGxpbmUtaGVpZ2h0OiAyNnB4O1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEycHg7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEycHg7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgICBwYWRkaW5nLWxlZnQ6IDExcHg7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDExcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJvdy1kcmFnIHtcXG4gICAgY3Vyc29yOiBtb3ZlO1xcbiAgICBjdXJzb3I6IC13ZWJraXQtZ3JhYjtcXG4gICAgY3Vyc29yOiBncmFiO1xcbiAgICBtaW4td2lkdGg6IDI4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJvdy1kcmFnZ2luZywgLmFnLXRoZW1lLWJhbGhhbSAuYWctcm93LWRyYWdnaW5nIC5hZy1yb3ctZHJhZyB7XFxuICAgIGN1cnNvcjogbW92ZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyYWcge1xcbiAgICBjdXJzb3I6IG1vdmU7XFxuICAgIGN1cnNvcjogLXdlYmtpdC1ncmFiO1xcbiAgICBjdXJzb3I6IGdyYWI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJvdy1kcmFnZ2luZyB7XFxuICAgIG9wYWNpdHk6IDAuNTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1oYXMtZm9jdXMgLmFnLWNlbGwtZm9jdXM6bm90KC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkKSxcXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctaGFzLWZvY3VzIC5hZy1jZWxsLWZvY3VzLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwsXFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLWNlbGwtZm9jdXMuYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbC5hZy1jZWxsLXJhbmdlLWhhbmRsZSwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1oYXMtZm9jdXMgLmFnLWNlbGwtZm9jdXM6bm90KC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkKSxcXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctaGFzLWZvY3VzIC5hZy1jZWxsLWZvY3VzLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwsXFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWNlbGwtZm9jdXMuYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbC5hZy1jZWxsLXJhbmdlLWhhbmRsZSB7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDkxRUE7XFxuICAgIG91dGxpbmU6IGluaXRpYWw7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWhlYWRlci1jZWxsLXJlc2l6ZSB7XFxuICAgIHdpZHRoOiA4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLW1lbnUge1xcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7XFxuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcXG4gICAgcGFkZGluZzogNHB4O1xcbiAgICBwYWRkaW5nOiAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLW1lbnUgLmFnLW1lbnUtbGlzdCB7XFxuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcXG4gICAgICBtYXJnaW4tdG9wOiA0cHg7XFxuICAgICAgd2lkdGg6IDEwMCU7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbWVudSAuYWctbWVudS1vcHRpb24tYWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUNGMEYxOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLW1lbnUgLmFnLW1lbnUtb3B0aW9uLWRpc2FibGVkIHtcXG4gICAgICBvcGFjaXR5OiAwLjU7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbWVudSAuYWctbWVudS1vcHRpb24tdGV4dCB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDRweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1tZW51IC5hZy1tZW51LW9wdGlvbi1pY29uIHtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDRweDtcXG4gICAgICBwYWRkaW5nLXJpZ2h0OiA0cHg7XFxuICAgICAgbWluLXdpZHRoOiAyNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLW1lbnUgLmFnLW1lbnUtb3B0aW9uLXNob3J0Y3V0IHtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDhweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1tZW51IC5hZy1tZW51LXNlcGFyYXRvciB7XFxuICAgICAgaGVpZ2h0OiA4cHg7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1tZW51IC5hZy1tZW51LXNlcGFyYXRvciA+IHNwYW4ge1xcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIwd2lkdGglM0QnMSclMjBoZWlnaHQlM0QnOHB4JyUyMHZpZXdCb3glM0QnMCUyMDAlMjAxJTIwOHB4JyUyMHhtbG5zJTNEJ2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyclM0UlM0NsaW5lJTIweDElM0QnMCclMjB5MSUzRCc0cHgnJTIweDIlM0QnMSclMjB5MiUzRCc0cHgnJTIwc3Ryb2tlLXdpZHRoJTNEJzEnJTIwc3Ryb2tlJTNEJyUyM0JEQzNDNyclMkYlM0UlM0MlMkZzdmclM0VcXFwiKTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1tZW51IC5hZy1tZW51LW9wdGlvbi1wb3B1cC1wb2ludGVyIHtcXG4gICAgICB3aWR0aDogMjRweDtcXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0uYWctZG5kLWdob3N0IHtcXG4gICAgYmFja2dyb3VuZDogd2hpdGU7XFxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lO1xcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XFxuICAgIHBhZGRpbmc6IDRweDtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0JEQzNDNztcXG4gICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XFxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICAgIGZvbnQtc2l6ZTogMTJweDtcXG4gICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXFxcIlNlZ29lIFVJXFxcIiwgUm9ib3RvLCBPeHlnZW4tU2FucywgVWJ1bnR1LCBDYW50YXJlbGwsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIHNhbnMtc2VyaWY7XFxuICAgIGhlaWdodDogMzJweCAhaW1wb3J0YW50O1xcbiAgICBsaW5lLWhlaWdodDogMzJweDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBwYWRkaW5nOiAwIDhweDtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoOHB4KTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoOHB4KTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLmFnLWRuZC1naG9zdCBzcGFuLFxcbiAgICAuYWctdGhlbWUtYmFsaGFtLmFnLWRuZC1naG9zdCBkaXYge1xcbiAgICAgIGhlaWdodDogMTAwJTtcXG4gICAgICBtYXJnaW46IDA7XFxuICAgICAgcGFkZGluZzogMDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtLmFnLWRuZC1naG9zdCAuYWctZG5kLWdob3N0LWljb24ge1xcbiAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xcbiAgICAgIG9wYWNpdHk6IDAuODc7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRhYi1oZWFkZXIge1xcbiAgICBiYWNrZ3JvdW5kOiAjZjVmN2Y3O1xcbiAgICBtaW4td2lkdGg6IDIyMHB4O1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRhYi1oZWFkZXIgLmFnLXRhYiB7XFxuICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICAgICAgaGVpZ2h0OiAxNnB4O1xcbiAgICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XFxuICAgICAgICAgIC1tcy1mbGV4OiBub25lO1xcbiAgICAgICAgICAgICAgZmxleDogbm9uZTtcXG4gICAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XFxuICAgICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcXG4gICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy10YWItYm9keSB7XFxuICAgIHBhZGRpbmc6IDJweCAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRhYi1ib2R5IC5hZy1tZW51LWxpc3Qge1xcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XFxuICAgICAgbWFyZ2luLXRvcDogMDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRhYi1ib2R5IC5hZy1tZW51LWxpc3QgPiBkaXY6Zmlyc3QtY2hpbGQgPiBzcGFuIHtcXG4gICAgICAgIHBhZGRpbmctdG9wOiAwOyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdGFiLWJvZHkgLmFnLW1lbnUtbGlzdCA+IGRpdjpsYXN0LWNoaWxkID4gc3BhbiB7XFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRhYi1ib2R5IC5hZy1tZW51LWxpc3QgPiBkaXY6bGFzdC1jaGlsZCA+IC5hZy1tZW51LW9wdGlvbi1wb3B1cC1wb2ludGVyIHtcXG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb24teTogMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZmlsdGVyIC5hZy1maWx0ZXItc2VsZWN0LCAuYWctdGhlbWUtYmFsaGFtIC5hZy1maWx0ZXIgLmFnLWZpbHRlci1ib2R5IHtcXG4gICAgbWFyZ2luLWJvdHRvbTogNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1maWx0ZXIgLmFnLWZpbHRlci1ib2R5IHtcXG4gICAgbWFyZ2luLXRvcDogMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZmlsdGVyIC5hZy1maWx0ZXItZmlsdGVyIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDRweDtcXG4gICAgbWFyZ2luLXJpZ2h0OiA0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWZpbHRlciAuYWctZmlsdGVyLXNlbGVjdCB7XFxuICAgIG1hcmdpbjogNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1maWx0ZXIgaW5wdXRbdHlwZT1cXFwicmFkaW9cXFwiXSB7XFxuICAgIG1hcmdpbjogMCAzcHggMCA2cHg7XFxuICAgIHdpZHRoOiAxMnB4O1xcbiAgICBoZWlnaHQ6IDE3cHg7XFxuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWZpbHRlciBpbnB1dFt0eXBlPVxcXCJ0ZXh0XFxcIl0sXFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1maWx0ZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZVxcXCJdIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWZpbHRlciAuYWctc2V0LWZpbHRlci1saXN0IHtcXG4gICAgaGVpZ2h0OiAxNjhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZmlsdGVyIC5hZy1zZXQtZmlsdGVyLWl0ZW0ge1xcbiAgICBoZWlnaHQ6IDI4cHg7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1maWx0ZXIgLmFnLXNldC1maWx0ZXItaXRlbSA+IGRpdiwgLmFnLXRoZW1lLWJhbGhhbSAuYWctZmlsdGVyIC5hZy1zZXQtZmlsdGVyLWl0ZW0gPiBzcGFuIHtcXG4gICAgICBtYXJnaW4tbGVmdDogNXB4O1xcbiAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWZpbHRlciAuYWctZmlsdGVyLWhlYWRlci1jb250YWluZXI6bnRoLWNoaWxkKDIpIHtcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNCREMzQzc7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWZpbHRlciAuYWctZmlsdGVyLWFwcGx5LXBhbmVsIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7XFxuICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7XFxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG4gICAgcGFkZGluZzogNHB4O1xcbiAgICBwYWRkaW5nLXRvcDogOHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWZpbHRlciAuYWctZmlsdGVyLWFwcGx5LXBhbmVsIGJ1dHRvbiB7XFxuICAgICAgbGluZS1oZWlnaHQ6IDEuNTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1maWx0ZXIgLmFnLWZpbHRlci1hcHBseS1wYW5lbCBidXR0b24gKyBidXR0b24ge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCxcXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbiB7XFxuICAgIGhlaWdodDogMTZweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4tZ3JvdXAgLmFnLWNvbHVtbi1zZWxlY3QtY2hlY2tib3gsXFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLWxhYmVsLFxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4tZ3JvdXAgLmFnLWNvbHVtbi1ncm91cC1pY29ucyxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uIC5hZy1jb2x1bW4tc2VsZWN0LWNoZWNrYm94LFxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4gLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1sYWJlbCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uIC5hZy1jb2x1bW4tZ3JvdXAtaWNvbnMge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7XFxuICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLXByaW1hcnktY29scy1saXN0LXBhbmVsIHtcXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNCREMzQzc7XFxuICAgIHBhZGRpbmctdG9wOiA0cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctcHJpbWFyeS1jb2xzLWxpc3QtcGFuZWwgPiBkaXYge1xcbiAgICAgIGN1cnNvcjogcG9pbnRlcjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLmFnLXRvb2xwYW5lbC1hZGQtZ3JvdXAtaW5kZW50IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDI0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXByaW1hcnktY29scy1oZWFkZXItcGFuZWwge1xcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI0JEQzNDNztcXG4gICAgaGVpZ2h0OiAzMnB4O1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXByaW1hcnktY29scy1oZWFkZXItcGFuZWwgPiBkaXYge1xcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgICBtYXJnaW46IDAgNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXByaW1hcnktY29scy1oZWFkZXItcGFuZWwgLmFnLWZpbHRlci1ib2R5IHtcXG4gICAgICBtYXJnaW4tbGVmdDogNHB4O1xcbiAgICAgIG1hcmdpbi1yaWdodDogNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy10b29sLXBhbmVsLXdyYXBwZXIge1xcbiAgICBib3JkZXItcmlnaHQ6IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1maWx0ZXItcGFuZWwge1xcbiAgICAgIHdpZHRoOiAxMDAlOyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1maWx0ZXItcGFuZWwgLmFnLWZpbHRlci10b29scGFuZWwtaW5zdGFuY2Uge1xcbiAgICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XFxuICAgICAgICBmb250LXdlaWdodDogNjAwO1xcbiAgICAgICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgICAgICAgICAtbXMtZmxleDogYXV0bztcXG4gICAgICAgICAgICAgICAgZmxleDogYXV0bztcXG4gICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XFxuICAgICAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgICAgIC1tcy1mbGV4LXdyYXA6IG5vd3JhcDtcXG4gICAgICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcXG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgLW1zLWZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcXG4gICAgICAgICAgICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7IH1cXG4gICAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctZmlsdGVyLXBhbmVsIC5hZy1maWx0ZXItdG9vbHBhbmVsLWluc3RhbmNlIC5hZy1maWx0ZXItdG9vbHBhbmVsLWhlYWRlciB7XFxuICAgICAgICAgIHBhZGRpbmc6IDAgNXB4OyB9XFxuICAgICAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctZmlsdGVyLXBhbmVsIC5hZy1maWx0ZXItdG9vbHBhbmVsLWluc3RhbmNlIC5hZy1maWx0ZXItdG9vbHBhbmVsLWhlYWRlciA+IGRpdiB7XFxuICAgICAgICAgICAgbWFyZ2luOiBhdXRvIDA7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWZpbHRlci1wYW5lbCAuYWctZmlsdGVyLWJvZHktd3JhcHBlciB7XFxuICAgICAgICBwYWRkaW5nLXRvcDogNXB4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1maWx0ZXItcGFuZWwgLmFnLWZpbHRlci1haXIge1xcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0JEQzNDNztcXG4gICAgICAgIGJvcmRlci1sZWZ0OiAwO1xcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAwO1xcbiAgICAgICAgcGFkZGluZzogNHB4IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1waXZvdC1tb2RlLXBhbmVsIHtcXG4gICAgICBoZWlnaHQ6IDMycHg7XFxuICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgICAtbXMtZmxleDogbm9uZTtcXG4gICAgICAgICAgICAgIGZsZXg6IG5vbmU7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLXBpdm90LW1vZGUtcGFuZWwgLmFnLXBpdm90LW1vZGUtc2VsZWN0IHtcXG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwge1xcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQkRDM0M3O1xcbiAgICAgIHBhZGRpbmctYm90dG9tOiAzcHg7XFxuICAgICAgcGFkZGluZy10b3A6IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1jb2x1bW4tZHJvcCB7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNCREMzQzc7XFxuICAgICAgcGFkZGluZzogNHB4IDA7XFxuICAgICAgcGFkZGluZy1ib3R0b206IDhweDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctY29sdW1uLWRyb3AgLmFnLWNvbHVtbi1kcm9wLWVtcHR5LW1lc3NhZ2Uge1xcbiAgICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7XFxuICAgICAgICBmb250LXdlaWdodDogNjAwO1xcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xcbiAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXFxcIlNlZ29lIFVJXFxcIiwgUm9ib3RvLCBPeHlnZW4tU2FucywgVWJ1bnR1LCBDYW50YXJlbGwsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIHNhbnMtc2VyaWY7XFxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7XFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiA0cHg7XFxuICAgICAgICBtYXJnaW4tdG9wOiA0cHg7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWNvbHVtbi1kcm9wIC5hZy1jb2x1bW4tZHJvcC1saXN0IHtcXG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgICAgIG1hcmdpbi10b3A6IDRweDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctY29sdW1uLWRyb3AgPiBkaXYgPiA6Zmlyc3QtY2hpbGQge1xcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcXG4gICAgICAgIG1hcmdpbi1yaWdodDogNHB4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1jb2x1bW4tZHJvcDpsYXN0LWNoaWxkIHtcXG4gICAgICAgIGJvcmRlci1ib3R0b206IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLW51bWVyaWMtaGVhZGVyIC5hZy1oZWFkZXItY2VsbC1sYWJlbCAuYWctaGVhZGVyLWljb24ge1xcbiAgICBtYXJnaW4tbGVmdDogMDtcXG4gICAgbWFyZ2luLXJpZ2h0OiA0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXBhZ2luZy1wYW5lbCB7XFxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjQkRDM0M3O1xcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcXG4gICAgaGVpZ2h0OiAzMnB4O1xcbiAgICBwYWRkaW5nOiAwIDEycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcGFnaW5nLXBhbmVsID4gc3BhbiB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDE2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXBhZ2luZy1wYWdlLXN1bW1hcnktcGFuZWwgLmFnLWljb24ge1xcbiAgICB3aWR0aDogMTZweDtcXG4gICAgaGVpZ2h0OiAxNnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1wYWdpbmctcGFnZS1zdW1tYXJ5LXBhbmVsIC5hZy1wYWdpbmctYnV0dG9uIGJ1dHRvbiB7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgb3BhY2l0eTogMDtcXG4gICAgdG9wOiAwO1xcbiAgICByaWdodDogMDtcXG4gICAgYm90dG9tOiAwO1xcbiAgICBsZWZ0OiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1wYWdpbmctcGFnZS1zdW1tYXJ5LXBhbmVsIC5hZy1wYWdpbmctYnV0dG9uLmFnLWRpc2FibGVkIC5hZy1pY29uIHtcXG4gICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7XFxuICAgIG9wYWNpdHk6IDAuMzg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXBhZ2luZy1wYWdlLXN1bW1hcnktcGFuZWwgLmFnLXBhZ2luZy1idXR0b24uYWctZGlzYWJsZWQgYnV0dG9uIHtcXG4gICAgY3Vyc29yOiBkZWZhdWx0OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1wYWdpbmctcGFnZS1zdW1tYXJ5LXBhbmVsIHNwYW4ge1xcbiAgICBtYXJnaW46IDAgNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1yb3ctc2VsZWN0ZWQge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjdlNGZmOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwpLCAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwpIHtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQ6bm90KC5hZy1jZWxsLXJhbmdlLXNpbmdsZS1jZWxsKS5hZy1jZWxsLXJhbmdlLXRvcCwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQ6bm90KC5hZy1jZWxsLXJhbmdlLXNpbmdsZS1jZWxsKS5hZy1jZWxsLXJhbmdlLXRvcCB7XFxuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogIzAwOTFFQTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwpLmFnLWNlbGwtcmFuZ2UtcmlnaHQsIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkuYWctY2VsbC1yYW5nZS1yaWdodCB7XFxuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjMDA5MUVBOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkuYWctY2VsbC1yYW5nZS1ib3R0b20sIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkuYWctY2VsbC1yYW5nZS1ib3R0b20ge1xcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICMwMDkxRUE7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQ6bm90KC5hZy1jZWxsLXJhbmdlLXNpbmdsZS1jZWxsKS5hZy1jZWxsLXJhbmdlLWxlZnQsIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkuYWctY2VsbC1yYW5nZS1sZWZ0IHtcXG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogIzAwOTFFQTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtZm9jdXMpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxNDUsIDIzNCwgMC4yKTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1mb2N1cykuYWctY2VsbC1yYW5nZS1jaGFydCB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCA4OCwgMjU1LCAwLjEpOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQ6bm90KC5hZy1jZWxsLWZvY3VzKS5hZy1jZWxsLXJhbmdlLWNoYXJ0LmFnLWNlbGwtcmFuZ2UtY2hhcnQtY2F0ZWdvcnkge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMjU1LCAxMzIsIDAuMSk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQtMTpub3QoLmFnLWNlbGwtZm9jdXMpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxNDUsIDIzNCwgMC4zKTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2VsbC1yYW5nZS1zZWxlY3RlZC0yOm5vdCguYWctY2VsbC1mb2N1cykge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDE0NSwgMjM0LCAwLjQpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLTM6bm90KC5hZy1jZWxsLWZvY3VzKSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTQ1LCAyMzQsIDAuNSk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQtNDpub3QoLmFnLWNlbGwtZm9jdXMpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxNDUsIDIzNCwgMC42KTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1zZWxlY3Rpb24tZmlsbC10b3AsIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWZpbGwtdG9wIHtcXG4gICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCAjMDA5MUVBOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctc2VsZWN0aW9uLWZpbGwtdG9wLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZCwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1zZWxlY3Rpb24tZmlsbC10b3AuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkIHtcXG4gICAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkICM4NjkxOTg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctc2VsZWN0aW9uLWZpbGwtcmlnaHQsIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWZpbGwtcmlnaHQge1xcbiAgICBib3JkZXItcmlnaHQ6IDFweCBkYXNoZWQgIzAwOTFFQTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXNlbGVjdGlvbi1maWxsLXJpZ2h0LmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZCwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1zZWxlY3Rpb24tZmlsbC1yaWdodC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQge1xcbiAgICAgIGJvcmRlci1yaWdodDogMXB4IGRhc2hlZCAjODY5MTk4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLXNlbGVjdGlvbi1maWxsLWJvdHRvbSwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1zZWxlY3Rpb24tZmlsbC1ib3R0b20ge1xcbiAgICBib3JkZXItYm90dG9tOiAxcHggZGFzaGVkICMwMDkxRUE7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1zZWxlY3Rpb24tZmlsbC1ib3R0b20uYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLCAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1maWxsLWJvdHRvbS5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQge1xcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgIzg2OTE5ODsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1zZWxlY3Rpb24tZmlsbC1sZWZ0LCAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1maWxsLWxlZnQge1xcbiAgICBib3JkZXItbGVmdDogMXB4IGRhc2hlZCAjMDA5MUVBOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctc2VsZWN0aW9uLWZpbGwtbGVmdC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQsIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWZpbGwtbGVmdC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQge1xcbiAgICAgIGJvcmRlci1sZWZ0OiAxcHggZGFzaGVkICM4NjkxOTg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWZpbGwtaGFuZGxlLCAuYWctdGhlbWUtYmFsaGFtIC5hZy1yYW5nZS1oYW5kbGUge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHdpZHRoOiA2cHg7XFxuICAgIGhlaWdodDogNnB4O1xcbiAgICBib3R0b206IC0xcHg7XFxuICAgIHJpZ2h0OiAtMXB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5MUVBOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1maWxsLWhhbmRsZSB7XFxuICAgIGN1cnNvcjogY2VsbDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcmFuZ2UtaGFuZGxlIHtcXG4gICAgY3Vyc29yOiBud3NlLXJlc2l6ZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2VsbC5hZy1jZWxsLWlubGluZS1lZGl0aW5nIHtcXG4gICAgcGFkZGluZzogMTJweDtcXG4gICAgaGVpZ2h0OiA0MHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jZWxsLmFnLWNlbGwtaW5saW5lLWVkaXRpbmcsIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNlbGwuYWctcG9wdXAtZWRpdG9yIHtcXG4gICAgYmFja2dyb3VuZDogd2hpdGU7XFxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lO1xcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XFxuICAgIHBhZGRpbmc6IDRweDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjdmNzsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcG9wdXAtZWRpdG9yIHtcXG4gICAgcGFkZGluZzogMDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1wb3B1cC1lZGl0b3IgLmFnLWxhcmdlLXRleHRhcmVhIHRleHRhcmVhIHtcXG4gICAgICBoZWlnaHQ6IGF1dG87XFxuICAgICAgcGFkZGluZzogMTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcmljaC1zZWxlY3Qge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmN2Y3OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJpY2gtc2VsZWN0IC5hZy1yaWNoLXNlbGVjdC1saXN0IHtcXG4gICAgICB3aWR0aDogMjAwcHg7XFxuICAgICAgaGVpZ2h0OiAxODJweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1yaWNoLXNlbGVjdCAuYWctcmljaC1zZWxlY3QtdmFsdWUge1xcbiAgICAgIHBhZGRpbmc6IDAgNHB4IDAgMTJweDtcXG4gICAgICBoZWlnaHQ6IDI4cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcmljaC1zZWxlY3QgLmFnLXZpcnR1YWwtbGlzdC1pdGVtIHtcXG4gICAgICBjdXJzb3I6IGRlZmF1bHQ7XFxuICAgICAgaGVpZ2h0OiAyOHB4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcmljaC1zZWxlY3QgLmFnLXZpcnR1YWwtbGlzdC1pdGVtOmhvdmVyIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNFQ0YwRjE7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcmljaC1zZWxlY3QgLmFnLXJpY2gtc2VsZWN0LXJvdyB7XFxuICAgICAgcGFkZGluZy1sZWZ0OiAxMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJpY2gtc2VsZWN0IC5hZy1yaWNoLXNlbGVjdC1yb3ctc2VsZWN0ZWQge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNiN2U0ZmY7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctZmxvYXRpbmctZmlsdGVyLWJ1dHRvbiB7XFxuICAgIG1hcmdpbi1sZWZ0OiAxMnB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1mbG9hdGluZy1maWx0ZXItYnV0dG9uIGJ1dHRvbiB7XFxuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcXG4gICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xcbiAgICAgICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7XFxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgICBib3JkZXI6IDA7XFxuICAgIGhlaWdodDogMTZweDtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgd2lkdGg6IDE2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXNlbGVjdGlvbi1jaGVja2JveDpub3QoLmFnLWhpZGRlbikgfiAuYWctY2VsbC12YWx1ZTpub3QoOmVtcHR5KSwgLmFnLXRoZW1lLWJhbGhhbSAuYWctc2VsZWN0aW9uLWNoZWNrYm94Om5vdCguYWctaGlkZGVuKSArIC5hZy1ncm91cC12YWx1ZTpub3QoOmVtcHR5KSxcXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWdyb3VwLWV4cGFuZGVkOm5vdCguYWctaGlkZGVuKSB+IC5hZy1jZWxsLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZ3JvdXAtZXhwYW5kZWQ6bm90KC5hZy1oaWRkZW4pICsgLmFnLWdyb3VwLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZ3JvdXAtY29udHJhY3RlZDpub3QoLmFnLWhpZGRlbikgfiAuYWctY2VsbC12YWx1ZTpub3QoOmVtcHR5KSxcXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWdyb3VwLWNvbnRyYWN0ZWQ6bm90KC5hZy1oaWRkZW4pICsgLmFnLWdyb3VwLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZ3JvdXAtY2hlY2tib3g6bm90KC5hZy1pbnZpc2libGUpIH4gLmFnLWNlbGwtdmFsdWU6bm90KDplbXB0eSksXFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ncm91cC1jaGVja2JveDpub3QoLmFnLWludmlzaWJsZSkgKyAuYWctZ3JvdXAtdmFsdWU6bm90KDplbXB0eSkge1xcbiAgICBtYXJnaW4tbGVmdDogMTJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctc2VsZWN0aW9uLWNoZWNrYm94Om5vdCguYWctaGlkZGVuKSB+IC5hZy1ncm91cC1jaGVja2JveCxcXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWdyb3VwLWV4cGFuZGVkOm5vdCguYWctaGlkZGVuKSB+IC5hZy1ncm91cC1jaGVja2JveCxcXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWdyb3VwLWNvbnRyYWN0ZWQ6bm90KC5hZy1oaWRkZW4pIH4gLmFnLWdyb3VwLWNoZWNrYm94LFxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZ3JvdXAtY2hlY2tib3g6bm90KC5hZy1pbnZpc2libGUpIH4gLmFnLWdyb3VwLWNoZWNrYm94IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDEycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWdyb3VwLWNoaWxkLWNvdW50IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctc2VsZWN0aW9uLWNoZWNrYm94IHNwYW4ge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbHVtbi1kcm9wLWhvcml6b250YWwge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmN2Y3O1xcbiAgICBoZWlnaHQ6IDI4cHg7XFxuICAgIHBhZGRpbmctbGVmdDogMTJweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIC5hZy1pY29uLWdyb3VwLFxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIC5hZy1pY29uLXBpdm90IHtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDEycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCAuYWctaWNvbi1zbWFsbC1sZWZ0LFxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIC5hZy1pY29uLXNtYWxsLXJpZ2h0IHtcXG4gICAgICBtYXJnaW46IDAgNHB4O1xcbiAgICAgIG9wYWNpdHk6IDAuNTQ7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCAuYWctY29sdW1uLWRyb3AtZW1wdHktbWVzc2FnZSB7XFxuICAgICAgb3BhY2l0eTogMC4zODsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyb3AtY2VsbCB7XFxuICAgIGJhY2tncm91bmQ6ICNkZGU0ZTY7XFxuICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XFxuICAgIG1pbi1oZWlnaHQ6IDE2cHg7XFxuICAgIHBhZGRpbmc6IDAgMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbHVtbi1kcm9wLWNlbGwgLmFnLWNvbHVtbi1kcm9wLWNlbGwtdGV4dCB7XFxuICAgICAgbWFyZ2luOiAwIDRweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2x1bW4tZHJvcC1jZWxsIC5hZy1jb2x1bW4tZHJvcC1jZWxsLWJ1dHRvbiB7XFxuICAgICAgbWluLXdpZHRoOiAxNnB4O1xcbiAgICAgIG1hcmdpbjogMCAycHg7XFxuICAgICAgb3BhY2l0eTogMC41NDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbHVtbi1kcm9wLWNlbGwgLmFnLWNvbHVtbi1kcm9wLWNlbGwtYnV0dG9uOmhvdmVyIHtcXG4gICAgICAgIG9wYWNpdHk6IDAuODc7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyb3AtY2VsbCAuYWctY29sdW1uLWRyYWcge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbHVtbi1kcm9wLXZlcnRpY2FsIC5hZy1jb2x1bW4tZHJvcC1jZWxsIHtcXG4gICAgbWFyZ2luLXRvcDogNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1zZWxlY3QtYWdnLWZ1bmMtcG9wdXAge1xcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7XFxuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcXG4gICAgcGFkZGluZzogNHB4O1xcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gICAgaGVpZ2h0OiA3MHB4O1xcbiAgICBwYWRkaW5nOiAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXNlbGVjdC1hZ2ctZnVuYy1wb3B1cCAuYWctdmlydHVhbC1saXN0LWl0ZW0ge1xcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgICBsaW5lLWhlaWdodDogMjBweDtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctc2V0LWZpbHRlci1saXN0LFxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbWVudS1jb2x1bW4tc2VsZWN0LXdyYXBwZXIge1xcbiAgICB3aWR0aDogYXV0bzsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyb3AtdmVydGljYWwgPiAuYWctY29sdW1uLWRyb3AtY2VsbCB7XFxuICAgIG1hcmdpbi1sZWZ0OiA0cHg7XFxuICAgIG1hcmdpbi10b3A6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNlbGwtZGF0YS1jaGFuZ2VkIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMiwgMTYwLCAxMzMsIDAuNSkgIWltcG9ydGFudDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2VsbC1kYXRhLWNoYW5nZWQtYW5pbWF0aW9uIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxcztcXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxczsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcm93LXN0dWIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1zdHViLWNlbGwge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEycHg7XFxuICAgIHBhZGRpbmctdG9wOiA0cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctc3R1Yi1jZWxsIC5hZy1sb2FkaW5nLWljb24ge1xcbiAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHNwaW47XFxuICAgICAgICAgICAgICBhbmltYXRpb24tbmFtZTogc3BpbjtcXG4gICAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMTAwMG1zO1xcbiAgICAgICAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxMDAwbXM7XFxuICAgICAgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcXG4gICAgICAgICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xcbiAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xcbiAgICAgICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOyB9XFxuXFxuQC13ZWJraXQta2V5ZnJhbWVzIHNwaW4ge1xcbiAgZnJvbSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cXG4gIHRvIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0gfVxcblxcbkBrZXlmcmFtZXMgc3BpbiB7XFxuICBmcm9tIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxcbiAgdG8ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfSB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXN0dWItY2VsbCAuYWctbG9hZGluZy10ZXh0IHtcXG4gICAgICBtYXJnaW4tbGVmdDogNHB4O1xcbiAgICAgIG1hcmdpbi10b3A6IDRweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZmxvYXRpbmctdG9wIHtcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNCREMzQzc7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWZsb2F0aW5nLWJvdHRvbSB7XFxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjQkRDM0M3OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1mbG9hdGluZy10b3AsIC5hZy10aGVtZS1iYWxoYW0gLmFnLWZsb2F0aW5nLWJvdHRvbSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZmxvYXRpbmctdG9wIC5hZy1yb3csIC5hZy10aGVtZS1iYWxoYW0gLmFnLWZsb2F0aW5nLWJvdHRvbSAuYWctcm93IHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1zdGF0dXMtYmFyIHtcXG4gICAgYmFja2dyb3VuZDogd2hpdGU7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNCREMzQzc7XFxuICAgIGJvcmRlci10b3Atd2lkdGg6IDA7XFxuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xcbiAgICBmb250LXdlaWdodDogNjAwO1xcbiAgICBmb250LXNpemU6IDEycHg7XFxuICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFxcXCJTZWdvZSBVSVxcXCIsIFJvYm90bywgT3h5Z2VuLVNhbnMsIFVidW50dSwgQ2FudGFyZWxsLCBcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLCBzYW5zLXNlcmlmO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxNnB4O1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE2cHg7XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjU7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLW5hbWUtdmFsdWUtdmFsdWUge1xcbiAgICBjb2xvcjogIzAwMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctc3RhdHVzLWJhci1jZW50ZXIge1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLW5hbWUtdmFsdWUge1xcbiAgICBtYXJnaW4tbGVmdDogNHB4O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDRweDtcXG4gICAgcGFkZGluZy10b3A6IDhweDtcXG4gICAgcGFkZGluZy1ib3R0b206IDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZGV0YWlscy1yb3cge1xcbiAgICBwYWRkaW5nOiAyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1vdmVybGF5LWxvYWRpbmctd3JhcHBlciB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctb3ZlcmxheS1sb2FkaW5nLWNlbnRlciB7XFxuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xcbiAgICBwYWRkaW5nOiA0cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXNpZGUtYmFyIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjdmNztcXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0JEQzNDNztcXG4gICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1zaWRlLWJhciAuYWctc2lkZS1idXR0b25zIHtcXG4gICAgICBwYWRkaW5nLXRvcDogMTZweDtcXG4gICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gICAgICB3aWR0aDogMjBweDtcXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1zaWRlLWJhciAuYWctc2lkZS1idXR0b25zIC5hZy1zaWRlLWJ1dHRvbiBidXR0b24ge1xcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxuICAgICAgICBib3JkZXI6IDA7XFxuICAgICAgICBjb2xvcjogIzAwMDtcXG4gICAgICAgIHBhZGRpbmc6IDhweCAwIDhweCAwO1xcbiAgICAgICAgd2lkdGg6IDEwMCU7XFxuICAgICAgICBtYXJnaW46IDA7XFxuICAgICAgICBtaW4taGVpZ2h0OiA3MnB4O1xcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAxcHggMCAxcHggMDtcXG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XFxuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbi15OiBjZW50ZXI7XFxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IGNlbnRlcjtcXG4gICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1zaWRlLWJhciAuYWctc2lkZS1idXR0b25zIC5hZy1zZWxlY3RlZCBidXR0b24ge1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjdmNztcXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtMXB4O1xcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxcHg7XFxuICAgICAgICBib3JkZXItY29sb3I6ICNCREMzQzc7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctc2lkZS1iYXIgLmFnLXBhbmVsLWNvbnRhaW5lciB7XFxuICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0JEQzNDNzsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1zaWRlLWJhci5mdWxsLXdpZHRoIC5hZy1wYW5lbC1jb250YWluZXIge1xcbiAgICAgIGJvcmRlci1yaWdodDogMDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1zaWRlLWJhciAuYWctY29sdW1uLWRyb3Age1xcbiAgICAgIG1pbi1oZWlnaHQ6IDUwcHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXByaW1hcnktY29scy1maWx0ZXItd3JhcHBlciB7XFxuICAgIG1hcmdpbi1sZWZ0OiA0cHg7XFxuICAgIG1hcmdpbi1yaWdodDogNHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ncm91cC1jb21wb25lbnQge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xcbiAgICBwYWRkaW5nOiAwcHg7XFxuICAgIGJvcmRlcjogMCBzb2xpZCAjY2JkMGQzO1xcbiAgICBib3JkZXItdG9wLXdpZHRoOiAxcHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZ3JvdXAtY29tcG9uZW50LmFnLWRpc2FibGVkID4gLmFnLWdyb3VwLWNvbXBvbmVudC1sYWJlbCAuYWctZ3JvdXAtY29tcG9uZW50LXRpdGxlLCAuYWctdGhlbWUtYmFsaGFtIC5hZy1ncm91cC1jb21wb25lbnQuYWctZGlzYWJsZWQgPiAuYWctZ3JvdXAtY29tcG9uZW50LWNvbnRhaW5lciB7XFxuICAgICAgb3BhY2l0eTogMC41OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWdyb3VwLWNvbXBvbmVudCAuYWctZ3JvdXAtY29tcG9uZW50LXRpdGxlLWJhciB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWVlZjtcXG4gICAgICBoZWlnaHQ6IDE2cHg7XFxuICAgICAgZm9udC1zaXplOiAxMnB4O1xcbiAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFxcXCJTZWdvZSBVSVxcXCIsIFJvYm90bywgT3h5Z2VuLVNhbnMsIFVidW50dSwgQ2FudGFyZWxsLCBcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLCBzYW5zLXNlcmlmO1xcbiAgICAgIGhlaWdodDogMjZweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ncm91cC1jb21wb25lbnQ6bm90KC5hZy1jb2xsYXBzaWJsZSkgPiBkaXYge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWdyb3VwLWNvbXBvbmVudDpub3QoLmFnLWNvbGxhcHNpYmxlKSA+IC5hZy1ncm91cC1jb21wb25lbnQtdGl0bGUtYmFyIHtcXG4gICAgICBtYXJnaW4tbGVmdDogMDtcXG4gICAgICBwYWRkaW5nOiA0cHg7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ncm91cC1jb21wb25lbnQ6bm90KC5hZy1jb2xsYXBzaWJsZSkgPiAuYWctZ3JvdXAtY29tcG9uZW50LXRpdGxlLWJhciAuYWctY29sdW1uLWdyb3VwLWljb25zIHtcXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZ3JvdXAtY29tcG9uZW50IC5hZy1ncm91cC1jb21wb25lbnQtdG9vbGJhciB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjVmNTtcXG4gICAgICBwYWRkaW5nOiA0cHg7XFxuICAgICAgYm9yZGVyOiAwIHNvbGlkICNCREMzQzc7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZ3JvdXAtY29tcG9uZW50ID4gLmFnLWdyb3VwLWNvbXBvbmVudC1jb250YWluZXIge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7XFxuICAgICAgcGFkZGluZzogNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWdyb3VwLWNvbXBvbmVudCAuYWctZ3JvdXAtaXRlbSB7XFxuICAgICAgbWFyZ2luOiAycHggMDsgfVxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWdyb3VwLWNvbXBvbmVudCAuYWctZ3JvdXAtaXRlbSAuYWctZ3JvdXAtY29tcG9uZW50LXRpdGxlLWJhciB7XFxuICAgICAgICBoZWlnaHQ6IDE4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWxhYmVsZWQgbGFiZWwge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDRweDtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbGFiZWxlZC5hZy1sYWJlbC1hbGlnbi10b3AgbGFiZWwge1xcbiAgICBtYXJnaW4tYm90dG9tOiAycHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXNsaWRlciA+IC5hZy13cmFwcGVyID4gZGl2Om5vdCg6Zmlyc3Qtb2YtdHlwZSksIC5hZy10aGVtZS1iYWxoYW0gLmFnLWFuZ2xlLXNlbGVjdCA+IC5hZy13cmFwcGVyID4gZGl2Om5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xcbiAgICBtYXJnaW4tbGVmdDogOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1hbmdsZS1zZWxlY3QgLmFnLWFuZ2xlLXNlbGVjdC1maWVsZCAuYWctcGFyZW50LWNpcmNsZSB7XFxuICAgIHdpZHRoOiAyNHB4O1xcbiAgICBoZWlnaHQ6IDI0cHg7XFxuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDJweCByZ2JhKDAsIDAsIDAsIDAuOSk7XFxuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDJweCByZ2JhKDAsIDAsIDAsIDAuOSk7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWFuZ2xlLXNlbGVjdCAuYWctYW5nbGUtc2VsZWN0LWZpZWxkIC5hZy1jaGlsZC1jaXJjbGUge1xcbiAgICB0b3A6IDRweDtcXG4gICAgbGVmdDogMTJweDtcXG4gICAgd2lkdGg6IDZweDtcXG4gICAgaGVpZ2h0OiA2cHg7XFxuICAgIG1hcmdpbi1sZWZ0OiAtM3B4O1xcbiAgICBtYXJnaW4tdG9wOiAtNHB4O1xcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICM0YzRjNGM7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRvZ2dsZS1idXR0b24gLmFnLWlucHV0LXdyYXBwZXIge1xcbiAgICBoZWlnaHQ6IDE2cHg7XFxuICAgIHdpZHRoOiA0MHB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgIzdGOEM4RDtcXG4gICAgYm9yZGVyLXJhZGl1czogNTAwcmVtOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRvZ2dsZS1idXR0b24gLmFnLWlucHV0LXdyYXBwZXIgLmFnLWljb24ge1xcbiAgICAgIHdpZHRoOiAxNnB4O1xcbiAgICAgIGhlaWdodDogMTZweDtcXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjN0Y4QzhEO1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwMHJlbTtcXG4gICAgICByaWdodDogY2FsYygxMDAlIC0gMTZweCk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRvZ2dsZS1idXR0b24uYWctc2VsZWN0ZWQgLmFnLWlucHV0LXdyYXBwZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5MUVBOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRvZ2dsZS1idXR0b24uYWctc2VsZWN0ZWQgLmFnLWlucHV0LXdyYXBwZXIgLmFnLWljb24ge1xcbiAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xcbiAgICAgIHJpZ2h0OiAtMXB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2xvci1waWNrZXIgPiAuYWctd3JhcHBlciB7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNCREMzQzc7XFxuICAgIGJvcmRlci1yYWRpdXM6IDVweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2xvci1waWNrZXIgPiAuYWctd3JhcHBlciA+IGRpdiB7XFxuICAgICAgd2lkdGg6IDE2cHg7XFxuICAgICAgaGVpZ2h0OiAxNnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbG9yLXBpY2tlciA+IC5hZy13cmFwcGVyIGJ1dHRvbiB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sb3ItcGlja2VyID4gLmFnLXdyYXBwZXIgYnV0dG9uOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUNGMEYxOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1kaWFsb2cuYWctY29sb3ItZGlhbG9nIHtcXG4gICAgYm9yZGVyLXJhZGl1czogNXB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2xvci1wYW5lbCB7XFxuICAgIHBhZGRpbmc6IDRweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2xvci1wYW5lbCAuYWctc3BlY3RydW0tY29sb3Ige1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDtcXG4gICAgICBib3JkZXItcmFkaXVzOiAycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLXRvb2xzIHtcXG4gICAgICBwYWRkaW5nOiAxMHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1zYXQge1xcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgcmlnaHQgdG9wLCBmcm9tKHdoaXRlKSwgdG8ocmdiYSgyMDQsIDE1NCwgMTI5LCAwKSkpO1xcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgd2hpdGUsIHJnYmEoMjA0LCAxNTQsIDEyOSwgMCkpOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS12YWwge1xcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IGJvdHRvbSwgbGVmdCB0b3AsIGZyb20oYmxhY2spLCB0byhyZ2JhKDIwNCwgMTU0LCAxMjksIDApKSk7XFxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgYmxhY2ssIHJnYmEoMjA0LCAxNTQsIDEyOSwgMCkpOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1kcmFnZ2VyIHtcXG4gICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xcbiAgICAgIGhlaWdodDogMTJweDtcXG4gICAgICB3aWR0aDogMTJweDtcXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB3aGl0ZTtcXG4gICAgICBiYWNrZ3JvdW5kOiBibGFjaztcXG4gICAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yNCk7XFxuICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMjQpOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1odWUtYmFja2dyb3VuZCB7XFxuICAgICAgYm9yZGVyLXJhZGl1czogMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1hbHBoYS1iYWNrZ3JvdW5kIHtcXG4gICAgICBib3JkZXItcmFkaXVzOiAycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sb3ItcGFuZWwgLmFnLWh1ZS1hbHBoYSB7XFxuICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcXG4gICAgICBoZWlnaHQ6IDExcHg7XFxuICAgICAgYm9yZGVyLXJhZGl1czogMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1zbGlkZXIge1xcbiAgICAgIG1hcmdpbi10b3A6IC0xMnB4O1xcbiAgICAgIHdpZHRoOiAxM3B4O1xcbiAgICAgIGhlaWdodDogMTNweDtcXG4gICAgICBib3JkZXItcmFkaXVzOiAxM3B4O1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGY4Zjg7XFxuICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMzcpO1xcbiAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjM3KTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2xvci1wYW5lbCAuYWctc3BlY3RydW0tdGV4dC12YWx1ZSB7XFxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XFxuICAgICAgY29sb3I6ICMzMzM7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLXRleHQtdmFsdWU6Zm9jdXMge1xcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMwZDc3ZTQ7XFxuICAgICAgcGFkZGluZzogMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbG9yLXBhbmVsIC5hZy1yZWNlbnQtY29sb3JzID4gZGl2IHtcXG4gICAgICBtYXJnaW46IDAgM3B4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sb3ItcGFuZWwgLmFnLXJlY2VudC1jb2xvcnMgPiBkaXY6Zmlyc3QtY2hpbGQge1xcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2xvci1wYW5lbCAuYWctcmVjZW50LWNvbG9ycyA+IGRpdjpsYXN0LWNoaWxkIHtcXG4gICAgICAgIG1hcmdpbi1yaWdodDogMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbS5hZy1wb3B1cCA+IGRpdjpub3QoLmFnLXRvb2x0aXAtY3VzdG9tKSB7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogNXB4IDVweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiA1cHggNXB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjMpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1wYW5lbCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjQkRDM0M3OyB9XFxuICAgIC5hZy1kcmFnZ2luZy1yYW5nZS1oYW5kbGUgLmFnLXRoZW1lLWJhbGhhbSAuYWctcGFuZWwuYWctZGlhbG9nLCAuYWctZHJhZ2dpbmctZmlsbC1oYW5kbGUgLmFnLXRoZW1lLWJhbGhhbSAuYWctcGFuZWwuYWctZGlhbG9nIHtcXG4gICAgICBvcGFjaXR5OiAwLjc7XFxuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcGFuZWwgLmFnLXRpdGxlLWJhciB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjdmNztcXG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Q5ZGNkZTtcXG4gICAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcXG4gICAgICBoZWlnaHQ6IDMycHg7XFxuICAgICAgZm9udC1zaXplOiAxMnB4O1xcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXFxcIlNlZ29lIFVJXFxcIiwgUm9ib3RvLCBPeHlnZW4tU2FucywgVWJ1bnR1LCBDYW50YXJlbGwsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIHNhbnMtc2VyaWY7XFxuICAgICAgcGFkZGluZy1sZWZ0OiAxMnB4O1xcbiAgICAgIHBhZGRpbmc6IDVweCAxMHB4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcGFuZWwgLmFnLXRpdGxlLWJhciAuYWctdGl0bGUtYmFyLWJ1dHRvbnMgLmFnLWJ1dHRvbiB7XFxuICAgICAgICBoZWlnaHQ6IDIwcHg7XFxuICAgICAgICB3aWR0aDogMjBweDtcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDsgfVxcbiAgICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcGFuZWwgLmFnLXRpdGxlLWJhciAuYWctdGl0bGUtYmFyLWJ1dHRvbnMgLmFnLWJ1dHRvbiAuYWctaWNvbiB7XFxuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xcbiAgICAgICAgICBmb250LXNpemU6IDIwcHg7IH1cXG4gICAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXBhbmVsIC5hZy10aXRsZS1iYXIgLmFnLXRpdGxlLWJhci1idXR0b25zIC5hZy1idXR0b246aG92ZXIsIC5hZy10aGVtZS1iYWxoYW0gLmFnLXBhbmVsIC5hZy10aXRsZS1iYXIgLmFnLXRpdGxlLWJhci1idXR0b25zIC5hZy1idXR0b24uYWctaGFzLXBvcHVwIHtcXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Q3ZTBlMjsgfVxcbiAgICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcGFuZWwgLmFnLXRpdGxlLWJhciAuYWctdGl0bGUtYmFyLWJ1dHRvbnMgLmFnLWJ1dHRvbjpub3QoOmxhc3QtY2hpbGQpIHtcXG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcGFuZWwgLmFnLW1lc3NhZ2UtYm94IC5hZy1tZXNzYWdlLWJveC1idXR0b24tYmFyIHtcXG4gICAgICBoZWlnaHQ6IDMwcHg7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjdmNztcXG4gICAgICBwYWRkaW5nOiAycHg7IH1cXG4gICAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1wYW5lbCAuYWctbWVzc2FnZS1ib3ggLmFnLW1lc3NhZ2UtYm94LWJ1dHRvbi1iYXIgYnV0dG9uIHtcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdG9vbHRpcCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNjYmQwZDM7XFxuICAgIGNvbG9yOiAjMDAwO1xcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgIHBhZGRpbmc6IDVweDtcXG4gICAgYm9yZGVyLXdpZHRoOiAxcHg7XFxuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XFxuICAgIGJvcmRlci1jb2xvcjogI2NiZDBkMztcXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDFzO1xcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDFzOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRvb2x0aXAuYWctdG9vbHRpcC1oaWRpbmcge1xcbiAgICAgIG9wYWNpdHk6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNoYXJ0IC5hZy1jaGFydC1tZW51IHtcXG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jaGFydCAuYWctY2hhcnQtbWVudSA+IHNwYW46aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS13cmFwcGVyIC5hZy1ncm91cC1jb21wb25lbnQtY29udGFpbmVyIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS13cmFwcGVyIC5hZy1jaGFydC1taW5pLXRodW1ibmFpbCB7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNCREMzQzc7XFxuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcXG4gICAgbWFyZ2luOiA1cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy1taW5pLXdyYXBwZXIgLmFnLWNoYXJ0LW1pbmktdGh1bWJuYWlsOm50aC1jaGlsZCgybiArIDIpOm5vdCg6bGFzdC1jaGlsZCkge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICAgIG1hcmdpbi1yaWdodDogYXV0bzsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktd3JhcHBlciAuYWctY2hhcnQtbWluaS10aHVtYm5haWw6bnRoLWNoaWxkKDNuICsgMSkge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy1taW5pLXdyYXBwZXIgLmFnLWNoYXJ0LW1pbmktdGh1bWJuYWlsOm50aC1jaGlsZCgzbikge1xcbiAgICAgIG1hcmdpbi1yaWdodDogMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS13cmFwcGVyIC5hZy1jaGFydC1taW5pLXRodW1ibmFpbC5hZy1zZWxlY3RlZCB7XFxuICAgICAgYm9yZGVyLWNvbG9yOiAjMDA5MUVBOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLW5hdi1iYXIgLmFnLW5hdi1jYXJkLXNlbGVjdG9yIC5hZy1uYXYtY2FyZC1pdGVtIHtcXG4gICAgY29sb3I6ICMwMDA7XFxuICAgIGZvbnQtc2l6ZTogMTBweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLW5hdi1iYXIgLmFnLW5hdi1jYXJkLXNlbGVjdG9yIC5hZy1uYXYtY2FyZC1pdGVtLmFnLXNlbGVjdGVkIHtcXG4gICAgICBjb2xvcjogIzAwOTFFQTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LWZvcm1hdCAuYWctY2hhcnQtZm9ybWF0LXdyYXBwZXIgLmFnLWdyb3VwLWl0ZW0ge1xcbiAgICBtYXJnaW46IDQuOHB4IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24ge1xcbiAgICAvKiB1c2UgIWltcG9ydGFudCB0byBwcmV2ZW50IGlzc3VlcyB3aXRoIGJyb3dzZXIgZXh0ZW5zaW9ucyB0aGF0IGNoYW5nZSBmb250cyAqL1xcbiAgICBmb250LWZhbWlseTogXFxcImFnR3JpZEJhbGhhbVxcXCI7XFxuICAgIHNwZWFrOiBub25lO1xcbiAgICBmb250LXNpemU6IDE2cHg7XFxuICAgIGNvbG9yOiAjN0Y4QzhEO1xcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XFxuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcXG4gICAgLyogQmV0dGVyIEZvbnQgUmVuZGVyaW5nID09PT09PT09PT09ICovXFxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWFnZ3JlZ2F0aW9uOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwMFxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tYXJyb3dzOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwMVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tYXNjOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwMlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tY2FuY2VsOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwM1xcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tY2hhcnQ6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTA0XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1jaGVja2JveC1jaGVja2VkOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwNVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MDZcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWNoZWNrYm94LXVuY2hlY2tlZDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MDdcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWNvbG9yLXBpY2tlcjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MDhcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWNvbHVtbjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MDlcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWNvbHVtbnM6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTBBXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1jb250cmFjdGVkOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwQlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tY29weTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MENcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWNyb3NzOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwRFxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tY3V0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwRVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tZGF0YTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MEZcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWRlc2M6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTEwXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1leHBhbmRlZDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MTFcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWV5ZS1zbGFzaDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MTJcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWV5ZTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MTNcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWZpbHRlcjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MTRcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWZpcnN0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxNVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tZ3JpcDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MTZcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWdyb3VwOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxN1xcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24taW5kZXRlcm1pbmF0ZTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MThcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWxhc3Q6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTE5XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1sZWZ0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxQVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tbG9hZGluZzpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MUJcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLW1heGltaXplOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxQ1xcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tbWVudTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MURcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLW1pbmltaXplOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxRVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tbWludXM6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTFGXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1uZXh0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyMFxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tbm9uZTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MjFcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLW5vdC1hbGxvd2VkOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyMlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tcGFzdGU6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTIzXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1waW46YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTI0XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1waXZvdDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MjVcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLXBsdXM6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTI2XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1wcmV2aW91czpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MjdcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLXJhZGlvLWJ1dHRvbi1vZmY6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTI4XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1yYWRpby1idXR0b24tb246YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTI5XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1yaWdodDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MkFcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLXNhdmU6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTJCXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1zbWFsbC1kb3duOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyQ1xcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tc21hbGwtbGVmdDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MkRcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLXNtYWxsLXJpZ2h0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyRVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tc21hbGwtdXA6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTJGXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi10aWNrOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkzMFxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tdHJlZS1jbG9zZWQ6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTMxXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi10cmVlLWluZGV0ZXJtaW5hdGU6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTMyXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi10cmVlLW9wZW46YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTMzXFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1jaGVja2JveC1jaGVja2VkLFxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1jaGVja2JveC1pbmRldGVybWluYXRlLFxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1jaGVja2JveC11bmNoZWNrZWQge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcXG4gICAgbGluZS1oZWlnaHQ6IDE2cHg7XFxuICAgIGJvcmRlci1yYWRpdXM6IDNweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWNoZWNrYm94LWNoZWNrZWQtcmVhZG9ubHksXFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1yZWFkb25seSxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1jaGVja2JveC11bmNoZWNrZWQtcmVhZG9ubHkge1xcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgICBvcGFjaXR5OiAwLjM4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWNoZWNrYm94LWNoZWNrZWQge1xcbiAgICBjb2xvcjogIzAwOTFFQTsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWNoZWNrYm94LWNoZWNrZWQtcmVhZG9ubHk6YmVmb3JlIHtcXG4gICAgICBjb250ZW50OiBcXFwiXFxcXEU5MDVcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtcmVhZG9ubHk6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTA2XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctaWNvbi1jaGVja2JveC11bmNoZWNrZWQtcmVhZG9ubHk6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTA3XFxcIjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZ3JvdXAtZXhwYW5kZWQgLmFnLWljb24tY29udHJhY3RlZDplbXB0eTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MzNcXFwiOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1pY29uLXJvdy1kcmFnOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxNlxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJpZ2h0LWFycm93OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxQVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWljb24tcmFkaW8tYnV0dG9uLW9uIHtcXG4gICAgY29sb3I6ICMwMDkxRUE7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJpZ2h0LWFycm93OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyQVxcXCI7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCB7XFxuICAgIHRleHQtYWxpZ246IHJpZ2h0OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctbnVtZXJpYy1jZWxsIHtcXG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctY2hlY2tib3g6bm90KC5hZy1sYWJlbC1hbGlnbi1sZWZ0KSBsYWJlbCwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1yYWRpby1idXR0b246bm90KC5hZy1sYWJlbC1hbGlnbi1sZWZ0KSBsYWJlbCwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b2dnbGUtYnV0dG9uOm5vdCguYWctbGFiZWwtYWxpZ24tbGVmdCkgbGFiZWwge1xcbiAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAwOyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1waXZvdC1tb2RlLXBhbmVsIC5hZy1waXZvdC1tb2RlLXNlbGVjdCB7XFxuICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWNvbHVtbi1kcm9wIC5hZy1jb2x1bW4tZHJvcC1lbXB0eS1tZXNzYWdlIHtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDRweDtcXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxNnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLWdyb3VwIC5hZy1jb2x1bW4tc2VsZWN0LWNoZWNrYm94LFxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCAuYWctY29sdW1uLWdyb3VwLWljb25zLFxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbiAuYWctY29sdW1uLXNlbGVjdC1jaGVja2JveCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4gLmFnLWNvbHVtbi1ncm91cC1pY29ucyB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDRweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi5hZy10b29scGFuZWwtYWRkLWdyb3VwLWluZGVudCB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDA7XFxuICAgICAgbWFyZ2luLXJpZ2h0OiAyNHB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctaGVhZGVyLXNlbGVjdC1hbGwge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xcbiAgICAgIG1hcmdpbi1yaWdodDogMDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1jaGVja2JveCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1ncm91cC1jaGVja2JveCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1ncm91cC1leHBhbmRlZCxcXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1ncm91cC1jb250cmFjdGVkIHtcXG4gICAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7XFxuICAgICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94O1xcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1zZWxlY3Rpb24tY2hlY2tib3ggKyAuYWctY2VsbC12YWx1ZTpub3QoOmVtcHR5KSwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1zZWxlY3Rpb24tY2hlY2tib3ggKyAuYWctZ3JvdXAtdmFsdWU6bm90KDplbXB0eSksXFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1ncm91cC1jaGVja2JveCArIC5hZy1jZWxsLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctZ3JvdXAtY2hlY2tib3ggKyAuYWctZ3JvdXAtdmFsdWU6bm90KDplbXB0eSksXFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1ncm91cC1leHBhbmRlZCArIC5hZy1jZWxsLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctZ3JvdXAtZXhwYW5kZWQgKyAuYWctZ3JvdXAtdmFsdWU6bm90KDplbXB0eSksXFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1ncm91cC1jb250cmFjdGVkICsgLmFnLWNlbGwtdmFsdWU6bm90KDplbXB0eSksXFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1ncm91cC1jb250cmFjdGVkICsgLmFnLWdyb3VwLXZhbHVlOm5vdCg6ZW1wdHkpIHtcXG4gICAgICAgIG1hcmdpbi1yaWdodDogMTJweDtcXG4gICAgICAgIG1hcmdpbi1sZWZ0OiBpbml0aWFsOyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1zZWxlY3Rpb24tY2hlY2tib3ggKyAuYWctZ3JvdXAtY2hlY2tib3gsXFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1ncm91cC1jaGVja2JveCArIC5hZy1ncm91cC1jaGVja2JveCxcXG4gICAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWdyb3VwLWV4cGFuZGVkICsgLmFnLWdyb3VwLWNoZWNrYm94LFxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctZ3JvdXAtY29udHJhY3RlZCArIC5hZy1ncm91cC1jaGVja2JveCB7XFxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEycHg7XFxuICAgICAgICBtYXJnaW4tbGVmdDogaW5pdGlhbDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWdyb3VwLWNoaWxkLWNvdW50IHtcXG4gICAgICBtYXJnaW4tbGVmdDogdW5zZXQ7XFxuICAgICAgbWFyZ2luLXJpZ2h0OiAycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIHtcXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxMnB4OyB9XFxuICAgICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIC5hZy1pY29uLWdyb3VwLFxcbiAgICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCAuYWctaWNvbi1waXZvdCB7XFxuICAgICAgICBtYXJnaW4tbGVmdDogMTJweDtcXG4gICAgICAgIG1hcmdpbi1yaWdodDogMDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWZsb2F0aW5nLWZpbHRlci1idXR0b24ge1xcbiAgICAgIG1hcmdpbi1yaWdodDogMTJweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXNldC1maWx0ZXItaXRlbSA+IGRpdiwgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1zZXQtZmlsdGVyLWl0ZW0gPiBzcGFuIHtcXG4gICAgICBtYXJnaW4tbGVmdDogMDtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDVweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWhlYWRlciAuYWctaGVhZGVyLWNlbGwtcmVzaXplOjphZnRlciB7XFxuICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjQkRDM0M3O1xcbiAgICAgIGJvcmRlci1yaWdodDogMDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXNpZGUtYmFyIC5hZy1wYW5lbC1jb250YWluZXIge1xcbiAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0JEQzNDNztcXG4gICAgICBib3JkZXItcmlnaHQ6IDA7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcnRsIC5hZy1zaWRlLWJhci5mdWxsLXdpZHRoIC5hZy1wYW5lbC1jb250YWluZXIge1xcbiAgICAgIGJvcmRlci1sZWZ0OiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5zYXNzLXZhcmlhYmxlczo6YWZ0ZXIge1xcbiAgICBjb250ZW50OiAneyBcXFwiYXV0b1NpemVQYWRkaW5nXFxcIjogXFxcIjEycHhcXFwiLCBcXFwiaGVhZGVySGVpZ2h0XFxcIjogXFxcIjMycHhcXFwiLCBcXFwiZ3JvdXBQYWRkaW5nU2l6ZVxcXCI6IFxcXCIyOHB4XFxcIiwgXFxcImZvb3RlclBhZGRpbmdBZGRpdGlvblxcXCI6IFxcXCIxNnB4XFxcIiwgXFxcInZpcnR1YWxJdGVtSGVpZ2h0XFxcIjogXFxcIjI4cHhcXFwiLCBcXFwiYWdnRnVuY1BvcHVwSGVpZ2h0XFxcIjogXFxcIjk4cHhcXFwiLCBcXFwiY2hlY2tib3hJbmRlbnRXaWR0aFxcXCI6IFxcXCIyMHB4XFxcIiwgXFxcImxlYWZOb2RlUGFkZGluZ1xcXCI6IFxcXCIxMnB4XFxcIiwgXFxcInJvd0hlaWdodFxcXCI6IFxcXCIyOHB4XFxcIiwgXFxcImdyaWRTaXplXFxcIjogXFxcIjRweFxcXCIsIFxcXCJpY29uU2l6ZVxcXCI6IFxcXCIxNnB4XFxcIiB9JztcXG4gICAgZGlzcGxheTogbm9uZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2VsbC1oaWdobGlnaHQge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5MUVBICFpbXBvcnRhbnQ7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWhlYWRlci1jZWxsLXJlc2l6ZTo6YWZ0ZXIge1xcbiAgICBoZWlnaHQ6IDgwJTtcXG4gICAgbWFyZ2luLXRvcDogOHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1oZWFkZXItY2VsbDo6YWZ0ZXIsXFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1oZWFkZXItZ3JvdXAtY2VsbDo6YWZ0ZXIge1xcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCByZ2JhKDE4OSwgMTk1LCAxOTksIDAuNSk7XFxuICAgIGNvbnRlbnQ6IFxcXCIgXFxcIjtcXG4gICAgaGVpZ2h0OiAxNnB4O1xcbiAgICBtYXJnaW4tdG9wOiA4cHg7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgdGV4dC1pbmRlbnQ6IC0yMDAwcHg7XFxuICAgIHRvcDogMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctbHRyIC5hZy1oZWFkZXItY2VsbDo6YWZ0ZXIsXFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1sdHIgLmFnLWhlYWRlci1ncm91cC1jZWxsOjphZnRlciB7XFxuICAgIHJpZ2h0OiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWhlYWRlci1jZWxsOjphZnRlcixcXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctaGVhZGVyLWdyb3VwLWNlbGw6OmFmdGVyIHtcXG4gICAgbGVmdDogMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbC5hZy1jb2x1bW4tZHJvcCB7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNCREMzQzc7XFxuICAgIGJvcmRlci1ib3R0b206IDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWx0ciAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbC5hZy1jb2x1bW4tZHJvcC5hZy13aWR0aC1oYWxmOmZpcnN0LWNoaWxkIHtcXG4gICAgYm9yZGVyLXJpZ2h0OiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWNvbHVtbi1kcm9wLWhvcml6b250YWwuYWctY29sdW1uLWRyb3AuYWctd2lkdGgtaGFsZjpmaXJzdC1jaGlsZCB7XFxuICAgIGJvcmRlci1sZWZ0OiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1yb3cge1xcbiAgICBib3JkZXItY29sb3I6ICNkOWRjZGU7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJvdy1zZWxlY3RlZCB7XFxuICAgIGJvcmRlci1jb2xvcjogI2I3ZTRmZjsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyb3AtY2VsbCB7XFxuICAgIG1pbi1oZWlnaHQ6IDI0cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyb3AtY2VsbCAuYWctY29sdW1uLWRyb3AtY2VsbC1idXR0b24ge1xcbiAgICAgIG1hcmdpbi1ib3R0b206IDJweDtcXG4gICAgICBtYXJnaW4tdG9wOiAycHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyb3AtY2VsbCAuYWctY29sdW1uLWRyb3AtY2VsbC1idXR0b246aG92ZXIge1xcbiAgICAgIG9wYWNpdHk6IDE7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNvbHVtbi1kcm9wLXZlcnRpY2FsIC5hZy1jb2x1bW4tZHJvcC1jZWxsIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcXG4gICAgbWFyZ2luLXJpZ2h0OiA4cHg7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyb3AtdmVydGljYWwgLmFnLWNvbHVtbi1kcm9wLWNlbGwgLmFnLWNvbHVtbi1kcm9wLWNlbGwtdGV4dCB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY3Zjc7XFxuICAgIGhlaWdodDogMzJweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIC5hZy1jb2x1bW4tZHJvcC1jZWxsLXRleHQge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJvb3Qge1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjQkRDM0M3OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy10b29sLXBhbmVsLXdyYXBwZXIge1xcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjQkRDM0M3OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLWdyb3VwLFxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbiB7XFxuICAgICAgbWluLWhlaWdodDogMjBweDsgfVxcbiAgICAuYWctdGhlbWUtYmFsaGFtIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWNvbHVtbi1kcm9wIHtcXG4gICAgICBwYWRkaW5nLWJvdHRvbTogOHB4O1xcbiAgICAgIHBhZGRpbmctdG9wOiA4cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXJ0bCAuYWctc2lkZS1iYXIsXFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciB7XFxuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0JEQzNDNztcXG4gICAgYm9yZGVyLXJpZ2h0OiAwOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWljb24tZXhwYW5kZWQsXFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1ydGwgLmFnLWljb24tY29udHJhY3RlZCB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1tZW51LW9wdGlvbiB7XFxuICAgIGhlaWdodDogMjhweDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLWdyb3VwLFxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uIHtcXG4gICAgaGVpZ2h0OiAyMHB4OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy10YWItaGVhZGVyIHtcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNCREMzQzc7IH1cXG4gICAgLmFnLXRoZW1lLWJhbGhhbSAuYWctdGFiLWhlYWRlciAuYWctdGFiIHtcXG4gICAgICBtYXJnaW4tYm90dG9tOiAtMnB4OyB9XFxuICAgIC5hZy10aGVtZS1iYWxoYW0gLmFnLXRhYi1oZWFkZXIgLmFnLXRhYi5hZy10YWItc2VsZWN0ZWQge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50OyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy10YWItYm9keSxcXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLXBvcHVwLWVkaXRvcixcXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLW1lbnUge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcXG4gICAgY29sb3I6ICMwMDA7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNlbGwuYWctY2VsbC1pbmxpbmUtZWRpdGluZyB7XFxuICAgIGhlaWdodDogMjhweDtcXG4gICAgcGFkZGluZzogMDsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZGV0YWlscy1yb3cge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctb3ZlcmxheS1sb2FkaW5nLXdyYXBwZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLW92ZXJsYXktbG9hZGluZy1jZW50ZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0JEQzNDNztcXG4gICAgY29sb3I6ICMwMDA7XFxuICAgIHBhZGRpbmc6IDE2cHg7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQtMTpub3QoLmFnLWNlbGwtZm9jdXMpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxNDUsIDIzNCwgMC4zKTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctY2VsbC1yYW5nZS1zZWxlY3RlZC0yOm5vdCguYWctY2VsbC1mb2N1cykge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDE0NSwgMjM0LCAwLjQpOyB9XFxuICAuYWctdGhlbWUtYmFsaGFtIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLTM6bm90KC5hZy1jZWxsLWZvY3VzKSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTQ1LCAyMzQsIDAuNSk7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQtNDpub3QoLmFnLWNlbGwtZm9jdXMpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxNDUsIDIzNCwgMC42KTsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctcmljaC1zZWxlY3QtdmFsdWUge1xcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0JEQzNDNzsgfVxcbiAgLmFnLXRoZW1lLWJhbGhhbSAuYWctZmlsdGVyLWFwcGx5LXBhbmVsIHtcXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNCREMzQzc7IH1cXG4gIC5hZy10aGVtZS1iYWxoYW0gLmFnLWZpbHRlci10b29scGFuZWwtYm9keSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyB9XFxuXFxuXCIiLCJtb2R1bGUuZXhwb3J0cyA9IFwiQGNoYXJzZXQgXFxcIlVURi04XFxcIjtcXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiYWdHcmlkTWF0ZXJpYWxcXFwiO1xcbiAgc3JjOiB1cmwoXFxcImRhdGE6YXBwbGljYXRpb24veC1mb250LXR0ZjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxBQUVBQUFBTEFJQUFBd0F3VDFNdk1nOFNCbE1BQUFDOEFBQUFZR050WVhBWFZ0SzZBQUFCSEFBQUFGUm5ZWE53QUFBQUVBQUFBWEFBQUFBSVoyeDVadlpOQkJnQUFBRjRBQUFSV0dobFlXUVZhV04zQUFBUzBBQUFBRFpvYUdWaEI0a0QrUUFBRXdnQUFBQWthRzEwZU5ZQUpwOEFBQk1zQUFBQTRHeHZZMkY5U0hqTUFBQVVEQUFBQUhKdFlYaHdBRUlBV1FBQUZJQUFBQUFnYm1GdFpWbThxM0VBQUJTZ0FBQUJxbkJ2YzNRQUF3QUFBQUFXVEFBQUFDQUFBd1AyQVpBQUJRQUFBcGtDekFBQUFJOENtUUxNQUFBQjZ3QXpBUWtBQUFBQUFBQUFBQUFBQUFBQUFBQUJFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQURwTXdQQS84QUFRQVBBQUVBQUFBQUJBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQURBQUFBQXdBQUFCd0FBUUFEQUFBQUhBQURBQUVBQUFBY0FBUUFPQUFBQUFvQUNBQUNBQUlBQVFBZzZUUC8vZi8vQUFBQUFBQWc2UUQvL2YvL0FBSC80eGNFQUFNQUFRQUFBQUFBQUFBQUFBQUFBUUFCLy84QUR3QUJBQUFBQUFBQUFBQUFBZ0FBTnprQkFBQUFBQUVBQUFBQUFBQUFBQUFDQUFBM09RRUFBQUFBQVFBQUFBQUFBQUFBQUFJQUFEYzVBUUFBQUFBQkFRQUFhd01BQXhVQUN3QUFBU0VWQ1FFVklUVWhOeWNoQXdEK0FBRVYvdXNDQVA3VjF0WUJLd01WVmY4QS93QlZnTlhWQUFBQUFBUUFPZi81QThjRGh3QUlBQThBRndBZkFBQUJNelV6SndjekZURUhJelVIRnpVekpTY1ZJeFV6RlRjRkl4VWpGemNqTlFHcnFuTEh4M0k1Y3NmSGNnSlZ4M0p5eC82T3FuTEh4M0lDVG5MSHgzSTVjc2ZIY2xYSGNxcHl4NDV5eDhkeUFBQUJBS3NBYXdOVkF4VUFDUUFBRXhjM0VUTVJGemNKQWFzODdsYnVQUDZyL3FzQndEenUvZmtDQis4OUFWWCtxd0FDQUZVQUZRT3JBMnNBSEFBb0FBQUJJZ2NPQVFjR0ZSUVhIZ0VYRmpNeU56NEJOelkxTkNjdUFTY21JeE1ISndjbk55YzNGemNYQndJQVdFNU9kQ0VpSWlGMFRrNVlXRTVPZENFaUlpRjBUazVZMVR5Wm1UeVptVHlabVR5WkEyc2lJWFJPVGxoWVRrNTBJU0lpSVhST1RsaFlUazUwSVNMOXZEeVptVHlabVR5Wm1UeVpBQUFBQXdEVkFKVURLd0xyQUFRQUNRQU5BQUFUTXhFakVUY3pFU01SRXpNUkk5V0FnTzk0ZU85NGVBSTMvbDRCb3JUOXFnSlcvcXIvQUFBQ0FJQUFRQU9BQTBBQUR3QVdBQUFCSVNJR0ZSRVVGak1oTWpZMUVUUW1BU2MzRndFWEFRTXIvYW9qTWpJakFsWWpNakwrWGRZOG1nRkVQUDZBQTBBeUkvMnFJekl5SXdKV0l6TDlxOVU4bVFGRVBQNkFBQUFBQWdDQUFFQURnQU5BQUE4QUV3QUFBU0VpQmhVUkZCWXpJVEkyTlJFMEpnTWhOU0VESy8ycUl6SXlJd0pXSXpJeWVmNVdBYW9EUURJai9hb2pNaklqQWxZak12NVZWZ0FBQWdDQUFFQURnQU5BQUFNQUV3QUFBUkVoRVNVaElnWVZFUlFXTXlFeU5qVVJOQ1lESy8ycUFsYjlxaU15TWlNQ1ZpTXlNZ0xyL2FvQ1ZsVXlJLzJxSXpJeUl3SldJeklBQXdCekFFZ0RqUU00QUFZQUNnQVdBQUFKQVFjWENRSWhOeGNoQlRBR0ZSUVdNekkyTlRRbUF2MytWVHhtL3ZjQlJRRkYvZS9NelA1b0FreFZNaU1qTWxVQmpRR3JQR2IrOS82N0FVWE56VUJyS2lNeU1pTXFhd0FBQUFBQ0FLc0Fhd0ZWQXhVQUF3QUhBQUFsSXhFek5SVWpOUUZWcXFxcWF3SC9xMWRYQUFBSkFLc0Fhd05WQXhVQUF3QUlBQXdBRUFBVkFCa0FIZ0FpQUNZQUFCTXpOU01CTXpVakZTRXpOU00xTXpVakJUTTFJeFVCRlRNMUJUTTFJeFVCTXpVakVUTTFJNnVxcWdFQXFxci9BS3FxcXFvQkFLcXFBUUNxL2xhcXFnRUFxcXFxcWdKcnF2MVdxcXFxVnFxcXFxb0JxcXFxcXFxcS93Q3EvbGFxQUFBQUFBRUJZZ0RBQXA0Q3dBQUdBQUFCSndrQk55YzNBcDQ4L3dBQkFEekR3d0tFUFA4QS93QTh4TVFBQUFBQUF3QnIvK3NEbFFPVkFBZ0FHUUFkQUFBQklTSUdGUkV6RVNFWElTSUdGUkVVRmpNaE1qWTFFVFFtSXhFaEVTRUN3UDRBSXpKVkFnQ0EvaXNrTWpJa0FkVWpNaklqL2lzQjFRT1ZNaVA5cXdKVlZUSWsvYXNqTWpJakFsVWtNdjFWQWxVQUFBRUExUUNWQXlzQzZ3QU1BQUFCSndjbkJ4Y0hGemNYTnljM0F5czg3Kzg4Nys4ODcrODg3KzhDcnp6djd6enY3enp2N3p6djd3QUFCUUJWQUJVRHF3TnJBQ1VBTWdBL0FFc0FVUUFBQVQ0Qk5UUW1JeUlHRlJRV016STJOeGNITGdFaklnWVZGQll6TWpZMU5DWW5Od0V6TlFFSElpWTFORFl6TWhZVkZBWWpFU0ltTlRRMk16SVdGUlFHSXdFaUpqVTBOak15RmhVVUJna0JGd0UxSXdHYkNBaGtSMGRrWkVjVEl4QmxaUkFqRTBka1pFZEhaQWdJWlFFcmdQM3dteU15TWlNak1qSWpJekl5SXlNeU1pTUJBQWtNREFrSkRBd0JJdjhBVlFFcmdBSjZFQ01UUjJSa1IwZGtDQWhsWlFnSVpFZEhaR1JIRXlNUVpmN1ZLd0lQRHpFa0pERXhKQ1F4L2dBeEpDUXhNU1FrTVFGQURBa0pEQXdKQ1F3QmxmOEFWUUVxS3dBQUJ3Q1hBTDhEYVFMQkFBd0FFQUFkQUNFQUxRQTZBRDRBQUJNaUJoVVVGak15TmpVMEppTUZOU0VWQXlJR0ZSUVdNekkyTlRRbUl3VWhOU0VGTWhZVkZBWWpJaVkxTkRZM01oWVZGQVlqSWlZMU5EWXpCU0UxSWNJU0dSa1NFaGtaRWdLbi9kZCtFaGtaRWhJWkdSSUIwdjZzQVZUK0xnMFRFdzBORXhNTkVoa1pFaElaR1JJQ3AvM1hBaWtCRlJrU0VSb2FFUklaVlZaV0FTc1pFaElaR1JJU0dWVlZDeE1ORFJNVERRMFQ0Um9SRWhrWkVoRWFWbFVBQUFBQkFLc0Fhd05WQXhVQUNRQUFBU2NIRVNNUkp3Y0pBUU5WUE81Vzdqd0JWUUZWQWNBODdnSUgvZm52UGY2ckFWVUFBQUFBQVFGaUFNQUNuZ0xBQUFZQUFBRUhGd2NYQ1FFQm5qekR3endCQVA4QUFzQTh4TVE4QVFBQkFBQUFBQUFCQUpNQXh3TnRBcmtBUndBQUFTNEJJeUlHQnljK0FUTXlGeDRCRnhZWERnRUhKejRCTnlNT0FRY25JeGNPQVNNaUppY2pIZ0V6TWpZM0Z3NEJJeUluTGdFbkppYytBVGNYRGdFSE15YytBVE15RmhjekFxTUtYRDBpUFJaUEsyTTJQams1WHlRbEZSaFlPVThTR0FWRUJBMElLMUJHQkFrRklqVUpSQXBjUGhNakVFZ2hSeVkrT1RsZkpDVVZFejRvWGdVR0FvWXBEU1FWSWpRSlJBSGRPazhhRjA4WkhCTVNRaTR0Tno1bElVOFNMUm9NRlFrcVJnRUJLUjg2VUFnSVNBME9FeEpDTGkwM01GUWdYZ29VQ3lvTkVDZ2ZBQUFEQUpNQXh3TnRBcmtBSEFBcEFEVUFBQUVpQnc0QkJ3WUhGaGNlQVJjV016STNQZ0UzTmpjbUp5NEJKeVlqRVNJbU5UUTJNeklXRlJRR0l4RWlCaFVVRmpNeU5qVTBKZ0lBUGprNVh5UWxGUlVsSkY4NU9UNCtPVGxmSkNVVkZTVWtYems1UGtWaFlVVkZZV0ZGS1RzN0tTazdPd0s1RXhKQ0xpMDNOeTB1UWhJVEV4SkNMaTAzTnkwdVFoSVQvbUZoUlVWaFlVVkZZUUVLT3lrcE96c3BLVHNBQUFNQWdBREFBNEFDd0FBRUFBZ0FEQUFBSlRNMUl4VUJGU0UxQVNFMUlRR3JxcXIrMVFNQS9ZQUNBUDRBd0ZWVkFnQlZWZjdWVmdBQUFnRDNBTUFEQ1FMQUFBVUFDZ0FBSlNjM0p3a0JBVE1SSXhFRENjVEVQUDhBQVFEK0tsWlcvTVRFUFA4QS93QUNBUDRBQWdBQUFBQUNBS3NCUUFOVkFrQUFBd0FJQUFBQklSVWhCU0UxSVJVRFZmMVdBcXI5VmdLcS9WWUNRRldyVlZVQUFBWUFqZ0NrQTNJQzNBQUhBQXdBRXdBWEFCc0FJUUFBQVNFVUJpc0JOVEVsRlNFMUlTY3lGaFVoTlNFQkl6VXpOU00xTXljak5EWXpGUUpWQVIxREw2c0JIZjdqQVIxeUwwUCtBQUdPL3VSeWNuSnk1SEpETHdFVkwwSng1SEp5NDBJdmNmM0ljWEp5Y2k5Q2NRQUFBQUFDQUpNQXh3TnRBcmtBSEFBcEFBQUJJZ2NPQVFjR0J4WVhIZ0VYRmpNeU56NEJOelkzSmljdUFTY21JeEVpSmpVME5qTXlGaFVVQmlNQ0FENDVPVjhrSlJVVkpTUmZPVGsrUGprNVh5UWxGUlVsSkY4NU9UNUZZV0ZGUldGaFJRSzVFeEpDTGkwM055MHVRaElURXhKQ0xpMDNOeTB1UWhJVC9tRmhSVVZoWVVWRllRQUNBUGNBd0FNSkFzQUFCZ0FLQUFBVEZ3Y1hDUUVISlRNUkkvZkV4RHdCQVA4QVBBRzhWbFlDaE1URVBBRUFBUUE4UFA0QUFBQUFBQUVBcXdCckExVURGUUFKQUFBQklUY25DUUUzSnlFMUExWDkrZTg5L3FzQlZUenVBZ2NCNis0OC9xditxenp1VmdBQUFBQUNBT1FBcEFNY0F0d0FIQUFtQUFBQk54Y0hNeFVqSGdFWEJ5Y1ZJelVISnpjak5UTW5OeDRCRnpVekZRY3pOelVuSXdjVkhnRUNPV2hRYUpPVEdqUWFVR2h5YUZCb2s1Tm9VQm8wR25Kb1hrTkRYa01SSVFKSmFGQm9jaG8wR2xCb2s1Tm9VR2h5YUZBYU5CcVRrL3REWGtORFhoRWhBQUFCQUlBQzZ3T0FBMEFBQXdBQUV5RVZJWUFEQVAwQUEwQlZBQUFBQXdDQUFNQURnQUxBQUFNQUJ3QUxBQUEzSVRVaE5TRTFJVFVWSVRXQUF3RDlBQU1BL1FBREFNQlZnRmJWVlZVQUFRRUFBRUFEQUFDVkFBTUFBQ1VoRlNFQkFBSUEvZ0NWVlFBQUFBRUExUUdWQXlzQjZ3QUVBQUFUSVJVaE5kVUNWdjJxQWV0V1ZnQUJBV0lBd0FLZUFzQUFCZ0FBQVFjWEJ4Y0pBUUdlUE1QRFBBRUEvd0FDd0R6RXhEd0JBQUVBQUFBQUFBTUFnQURBQTRBQ3dBQURBQWNBQ3dBQU55RTFJUkVWSVRVQklUVWhnQUlBL2dBREFQMEFBd0Q5QU1CVkFhdFZWZjdWVmdBREFGVUFGUU9yQTJzQUhBQXJBRG9BQUFFaUJ3NEJCd1lWRkJjZUFSY1dNekkzUGdFM05qVTBKeTRCSnlZakFUUTNQZ0UzTmpNeUZoY0JMZ0UxQVNJbUp3RWVBUlVVQnc0QkJ3WWpBZ0JZVGs1MElTSWlJWFJPVGxoWVRrNTBJU0lpSVhST1RsaitxeG9iWFQ0K1J6dHJLLzRpSWlZQlZUdHJLd0hlSWlZYUcxMCtQa2NEYXlJaGRFNU9XRmhPVG5RaElpSWhkRTVPV0ZoT1RuUWhJdjVWUno0K1hSc2FKaUwrSWl0ck8vNnJKaUlCM2l0ck8wYytQbDBiR2dBQUFBQURBSUQvNndPQUE1VUFHQUFrQUN3QUFBRWpMZ0VqSWdZSEl5SUdGUkVVRmpNaE1qWTFFVFFtSXpFaE1oWVZGQVlqSWlZMU5EWUJJUkV6RlNFMU13TXJzdzFCS2lwQkRiTWpNaklqQWxZak1qSWovdFVTR1JrU0Voa1pBVDM5cWxZQnFsWURRQ1V3TUNVeUkvMVZJekl5SXdLckl6SVpFaEVaR1JFU0dmMEFBcXVBZ0FBQ0FLMEFid05UQXhFQUJRQVNBQUFsQnljM0hnRVRBUWNuQnhjSEp6Y1hOeWMzQVdPT0tJNEtGTVlCTkI4ZTl6NVk5bGc5ZXg0ZS9ZNG9qZ29VQWdyK3pCNGVlejFZOWxnKzl4NGZBQUFBQUFrQU9mLzVBOGNEaHdBUEFCTUFGd0FnQUNRQUxnQXlBRFlBT2dBQUJTRWlKalVSTkRZeklUSVdGUkVVQmdFakZUTUJJUkVoSlFjWEJ5YzNIZ0VYSnlNVk15VUhKd2NuTng0QkZ6RUJJeFV6SlNNVk16Y2pGVE1EVmYxV0wwTkRMd0txTDBORC9kR3FxZ0lBL2prQngvN2NRa0lwYVdrS0ZRcmNxcW9CK0NoQlFpaHFHalVhL2dpcXFnRWQ1T1RqcXFvSFF5OENxaTlEUXkvOVZpOURBUnlxQVk3K2NyTkNRU2hwYWdvVUN0dXJNU2hCUVNocEdqVWFBWmFxcXFxcXFnQUFBQUFCQU5VQWxRTXJBdXNBQ3dBQUFTRVJJeEVoTlNFUk14RWhBeXYvQUZiL0FBRUFWZ0VBQVpYL0FBRUFWZ0VBL3dBQUFBQUFBUUZpQU1BQ25nTEFBQVlBQUFFbkNRRTNKemNDbmp6L0FBRUFQTVBEQW9ROC93RC9BRHpFeEFBQUFBQUNBRlVBRlFPckEyc0FIQUE1QUFBQklnY09BUWNHRlJRWEhnRVhGak15Tno0Qk56WTFOQ2N1QVNjbUl4RWlKeTRCSnlZMU5EYytBVGMyTXpJWEhnRVhGaFVVQnc0QkJ3WWpBZ0JZVGs1MElTSWlJWFJPVGxoWVRrNTBJU0lpSVhST1RsaEhQajVkR3hvYUcxMCtQa2RIUGo1ZEd4b2FHMTArUGtjRGF5SWhkRTVPV0ZoT1RuUWhJaUloZEU1T1dGaE9UblFoSXYwQUdodGRQajVIUno0K1hSc2FHaHRkUGo1SFJ6NCtYUnNhQUFNQVZRQVZBNnNEYXdBY0FEa0FWZ0FBQVNJSERnRUhCaFVVRng0QkZ4WXpNamMrQVRjMk5UUW5MZ0VuSmlNMUlnY09BUWNHRlJRWEhnRVhGak15Tno0Qk56WTFOQ2N1QVNjbUl4RWlKeTRCSnlZMU5EYytBVGMyTXpJWEhnRVhGaFVVQnc0QkJ3WWpBZ0FzSnljNkVSQVFFVG9uSnl3c0p5YzZFUkFRRVRvbkp5eFlUazUwSVNJaUlYUk9UbGhZVGs1MElTSWlJWFJPVGxoSFBqNWRHeG9hRzEwK1BrZEhQajVkR3hvYUcxMCtQa2NDbFJBUk9pY25MQ3duSnpvUkVCQVJPaWNuTEN3bkp6b1JFTllpSVhST1RsaFlUazUwSVNJaUlYUk9UbGhZVGs1MElTTDlBQm9iWFQ0K1IwYytQbDBiR2hvYlhUNCtSMGMrUGwwYkdnQUJBS3NBYXdOVkF4VUFDUUFBQVFjWElSVWhCeGNKQVFJQVBPNzkrUUlIN2p3QlZmNnJBeFU4N2xidVBBRlZBVlVBQUFBQUFnQ0FBRUFEZ0FOQUFBNEFHUUFBQVJFaEVTTVJGQll6SVRJMk5SRWpCVGNYQnljM0Z4RXpFVEVESy8ycVZUSWpBbFlqTWxYL0FHNDgxZFU4YmxZQndQN1ZBU3YrMVNNeU1pTUJLeDF1UE5YVlBHNEJuZjVqQUFFQkt3RlZBdFVDS3dBREFBQUJGemNoQVN2VjFmNVdBaXZXMWdBQkFaVUE2d0pyQXBVQUF3QUFBUWNYRVFKcjF0WUNsZFhWQWFvQUFRR1ZBT3NDYXdLVkFBTUFBQ1UzSnhFQmxkYlc2OVhWL2xZQUFBRUJLd0ZWQXRVQ0t3QURBQUFCTnhjaEFTdlYxZjVXQVZYVzFnQUJBSWtBb2dOM0F0NEFCZ0FBQVNjSEZ3RW5BUUYzc2p6dUFnQTgvandCRzdJOTdnSUFQUDQ5QUFBQUFBRUJZZ0RBQXA0Q3dBQUdBQUFCQnhjSEZ3a0JBWjQ4dzhNOEFRRC9BQUxBUE1URVBBRUFBUUFBQUFBQUFRRFZBWlVES3dIckFBUUFBQk1oRlNFMTFRSlcvYW9CNjFaV0FBRUJBQUVpQXdBQ1hnQUZBQUFCQnljSENRRUN4TVRFUEFFQUFRQUNYc1BEUFA4QUFRQUFBQUFCQUFBQUFRQUFjRkJ6RVY4UFBQVUFDd1FBQUFBQUFObEJqMzBBQUFBQTJVR1BmUUFBLytzRHh3T1ZBQUFBQ0FBQ0FBQUFBQUFBQUFFQUFBUEEvOEFBQUFRQUFBQUFBQVBIQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUE0QkFBQUFBQUFBQUFBQUFBQUFnQUFBQVFBQVFBRUFBQTVCQUFBcXdRQUFGVUVBQURWQkFBQWdBUUFBSUFFQUFDQUJBQUFjd1FBQUtzRUFBQ3JCQUFCWWdRQUFHc0VBQURWQkFBQVZRUUFBSmNFQUFDckJBQUJZZ1FBQUpNRUFBQ1RCQUFBZ0FRQUFQY0VBQUNyQkFBQWpnUUFBSk1FQUFEM0JBQUFxd1FBQU9RRUFBQ0FCQUFBZ0FRQUFRQUVBQURWQkFBQllnUUFBSUFFQUFCVkJBQUFnQVFBQUswRUFBQTVCQUFBMVFRQUFXSUVBQUJWQkFBQVZRUUFBS3NFQUFDQUJBQUJLd1FBQVpVRUFBR1ZCQUFCS3dRQUFJa0VBQUZpQkFBQTFRUUFBUUFBQUFBQUFBb0FGQUFlQURvQWJBQ0VBTWdBNUFFUUFUUUJXQUdHQVpnQjJBSHVBaUFDUEFLMEF4SURMQU5DQTY0RUFBUWNCRGdFVGdTR0JNZ0U1QVQrQlRvRlNBVmdCVzRGZkFXU0Jhd0dEQVpPQm5ZRzJBYnlCd2dIWUFmZ0Ivb0lKZ2cwQ0VJSVVBaGVDSFFJaWdpWUNLd0FBQUFCQUFBQU9BQlhBQWtBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEZ0N1QUFFQUFBQUFBQUVBQ2dBQUFBRUFBQUFBQUFJQUJ3QjdBQUVBQUFBQUFBTUFDZ0EvQUFFQUFBQUFBQVFBQ2dDUUFBRUFBQUFBQUFVQUN3QWVBQUVBQUFBQUFBWUFDZ0JkQUFFQUFBQUFBQW9BR2dDdUFBTUFBUVFKQUFFQUZBQUtBQU1BQVFRSkFBSUFEZ0NDQUFNQUFRUUpBQU1BRkFCSkFBTUFBUVFKQUFRQUZBQ2FBQU1BQVFRSkFBVUFGZ0FwQUFNQUFRUUpBQVlBRkFCbkFBTUFBUVFKQUFvQU5BRElRV2ROWVhSbGNtbGhiQUJCQUdjQVRRQmhBSFFBWlFCeUFHa0FZUUJzVm1WeWMybHZiaUF4TGpBQVZnQmxBSElBY3dCcEFHOEFiZ0FnQURFQUxnQXdRV2ROWVhSbGNtbGhiQUJCQUdjQVRRQmhBSFFBWlFCeUFHa0FZUUJzUVdkTllYUmxjbWxoYkFCQkFHY0FUUUJoQUhRQVpRQnlBR2tBWVFCc1VtVm5kV3hoY2dCU0FHVUFad0IxQUd3QVlRQnlRV2ROWVhSbGNtbGhiQUJCQUdjQVRRQmhBSFFBWlFCeUFHa0FZUUJzUm05dWRDQm5aVzVsY21GMFpXUWdZbmtnU1dOdlRXOXZiaTRBUmdCdkFHNEFkQUFnQUdjQVpRQnVBR1VBY2dCaEFIUUFaUUJrQUNBQVlnQjVBQ0FBU1FCakFHOEFUUUJ2QUc4QWJnQXVBQUFBQXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBPT1cXFwiKSBmb3JtYXQoXFxcInRydWV0eXBlXFxcIik7XFxuICBmb250LXdlaWdodDogbm9ybWFsO1xcbiAgZm9udC1zdHlsZTogbm9ybWFsOyB9XFxuXFxuLmFnLXRoZW1lLW1hdGVyaWFsIHtcXG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xcbiAgZm9udC1mYW1pbHk6IFxcXCJSb2JvdG9cXFwiLCBzYW5zLXNlcmlmO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIGZvbnQtc2l6ZTogMTNweDtcXG4gIGxpbmUtaGVpZ2h0OiAxOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXRhYi1oZWFkZXIgLmFnLXRhYi5hZy10YWItc2VsZWN0ZWQge1xcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgIzNmNTFiNTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIGxhYmVsIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsICoge1xcbiAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgKjpmb2N1cywgLmFnLXRoZW1lLW1hdGVyaWFsICogKjpiZWZvcmUsIC5hZy10aGVtZS1tYXRlcmlhbCAqICo6YWZ0ZXIge1xcbiAgICAgIG91dGxpbmU6IG5vbmU7XFxuICAgICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy10YWIge1xcbiAgICAtd2Via2l0LWJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xcbiAgICAgICAgICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyNnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xIHtcXG4gICAgcGFkZGluZy1yaWdodDogMjZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMSB7XFxuICAgIHBhZGRpbmctbGVmdDogNDJweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDQycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDUycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTIge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1MnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA4NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yIHtcXG4gICAgcGFkZGluZy1yaWdodDogODRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMyB7XFxuICAgIHBhZGRpbmctbGVmdDogNzhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDc4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEyNnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zIHtcXG4gICAgcGFkZGluZy1yaWdodDogMTI2cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEwNHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTA0cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE2OHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTY4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEzMHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC01IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTMwcHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDIxMHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC01IHtcXG4gICAgcGFkZGluZy1yaWdodDogMjEwcHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE1NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC02IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTU2cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDI1MnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC02IHtcXG4gICAgcGFkZGluZy1yaWdodDogMjUycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE4MnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC03IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTgycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDI5NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC03IHtcXG4gICAgcGFkZGluZy1yaWdodDogMjk0cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDIwOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC04IHtcXG4gICAgcGFkZGluZy1yaWdodDogMjA4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDMzNnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC04IHtcXG4gICAgcGFkZGluZy1yaWdodDogMzM2cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDIzNHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC05IHtcXG4gICAgcGFkZGluZy1yaWdodDogMjM0cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDM3OHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC05IHtcXG4gICAgcGFkZGluZy1yaWdodDogMzc4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTEwIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyNjBweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTAge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyNjBweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDQyMHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xMCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDQyMHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xMSB7XFxuICAgIHBhZGRpbmctbGVmdDogMjg2cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTExIHtcXG4gICAgcGFkZGluZy1yaWdodDogMjg2cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTExIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0NjJweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTEge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA0NjJweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDMxMnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDMxMnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xMiB7XFxuICAgIHBhZGRpbmctbGVmdDogNTA0cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTEyIHtcXG4gICAgcGFkZGluZy1yaWdodDogNTA0cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTEzIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAzMzhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTMge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAzMzhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDU0NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xMyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDU0NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xNCB7XFxuICAgIHBhZGRpbmctbGVmdDogMzY0cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTE0IHtcXG4gICAgcGFkZGluZy1yaWdodDogMzY0cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE0IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA1ODhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTQge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1ODhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDM5MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xNSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDM5MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xNSB7XFxuICAgIHBhZGRpbmctbGVmdDogNjMwcHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE1IHtcXG4gICAgcGFkZGluZy1yaWdodDogNjMwcHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTE2IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0MTZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTYge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA0MTZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDY3MnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDY3MnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0xNyB7XFxuICAgIHBhZGRpbmctbGVmdDogNDQycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTE3IHtcXG4gICAgcGFkZGluZy1yaWdodDogNDQycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE3IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA3MTRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTcge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA3MTRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDQ2OHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0xOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDQ2OHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0xOCB7XFxuICAgIHBhZGRpbmctbGVmdDogNzU2cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTE4IHtcXG4gICAgcGFkZGluZy1yaWdodDogNzU2cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTE5IHtcXG4gICAgcGFkZGluZy1sZWZ0OiA0OTRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMTkge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA0OTRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMTkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDc5OHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0xOSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDc5OHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yMCB7XFxuICAgIHBhZGRpbmctbGVmdDogNTIwcHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTIwIHtcXG4gICAgcGFkZGluZy1yaWdodDogNTIwcHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTIwIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA4NDBweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjAge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA4NDBweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjEge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDU0NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDU0NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yMSB7XFxuICAgIHBhZGRpbmctbGVmdDogODgycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTIxIHtcXG4gICAgcGFkZGluZy1yaWdodDogODgycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTIyIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA1NzJweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjIge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1NzJweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDkyNHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDkyNHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC0yMyB7XFxuICAgIHBhZGRpbmctbGVmdDogNTk4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTIzIHtcXG4gICAgcGFkZGluZy1yaWdodDogNTk4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTIzIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA5NjZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtMjMge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA5NjZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDYyNHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDYyNHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yNCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTAwOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEwMDhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDY1MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yNSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDY1MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yNSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTA1MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yNSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEwNTBweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDY3NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDY3NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yNiB7XFxuICAgIHBhZGRpbmctbGVmdDogMTA5MnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEwOTJweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDcwMnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yNyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDcwMnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yNyB7XFxuICAgIHBhZGRpbmctbGVmdDogMTEzNHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yNyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDExMzRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDcyOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDcyOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yOCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTE3NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDExNzZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMjkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDc1NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0yOSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDc1NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0yOSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTIxOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0yOSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEyMThweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDc4MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zMCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDc4MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zMCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTI2MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zMCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEyNjBweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzEge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDgwNnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDgwNnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zMSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTMwMnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zMSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEzMDJweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDgzMnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDgzMnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zMiB7XFxuICAgIHBhZGRpbmctbGVmdDogMTM0NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zMiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEzNDRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDg1OHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zMyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDg1OHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zMyB7XFxuICAgIHBhZGRpbmctbGVmdDogMTM4NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zMyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEzODZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzQge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDg4NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDg4NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zNCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTQyOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zNCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDE0MjhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDkxMHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zNSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDkxMHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zNSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTQ3MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zNSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDE0NzBweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDkzNnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDkzNnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zNiB7XFxuICAgIHBhZGRpbmctbGVmdDogMTUxMnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zNiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDE1MTJweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzcge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDk2MnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zNyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDk2MnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zNyB7XFxuICAgIHBhZGRpbmctbGVmdDogMTU1NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zNyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDE1NTRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDk4OHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC0zOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDk4OHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC0zOCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTU5NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC0zOCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDE1OTZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEwMTRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtMzkge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMDE0cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTM5IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxNjM4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTM5IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTYzOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00MCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTA0MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00MCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEwNDBweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE2ODBweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDAge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxNjgwcHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTQxIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMDY2cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTQxIHtcXG4gICAgcGFkZGluZy1yaWdodDogMTA2NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00MSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTcyMnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00MSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDE3MjJweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEwOTJweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDIge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMDkycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQyIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxNzY0cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQyIHtcXG4gICAgcGFkZGluZy1yaWdodDogMTc2NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00MyB7XFxuICAgIHBhZGRpbmctbGVmdDogMTExOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00MyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDExMThweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDMge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE4MDZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDMge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxODA2cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTQ0IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMTQ0cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTQ0IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTE0NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00NCB7XFxuICAgIHBhZGRpbmctbGVmdDogMTg0OHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00NCB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDE4NDhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDUge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDExNzBweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDUge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMTcwcHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ1IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxODkwcHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ1IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTg5MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00NiB7XFxuICAgIHBhZGRpbmctbGVmdDogMTE5NnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00NiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDExOTZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE5MzJweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDYge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxOTMycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy10b29scGFuZWwtaW5kZW50LTQ3IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMjIycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy10b29scGFuZWwtaW5kZW50LTQ3IHtcXG4gICAgcGFkZGluZy1yaWdodDogMTIyMnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWluZGVudC00NyB7XFxuICAgIHBhZGRpbmctbGVmdDogMTk3NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcm93LWdyb3VwLWluZGVudC00NyB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDE5NzRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDgge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEyNDhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXRvb2xwYW5lbC1pbmRlbnQtNDgge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMjQ4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ4IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyMDE2cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtaW5kZW50LTQ4IHtcXG4gICAgcGFkZGluZy1yaWdodDogMjAxNnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctdG9vbHBhbmVsLWluZGVudC00OSB7XFxuICAgIHBhZGRpbmctbGVmdDogMTI3NHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbHBhbmVsLWluZGVudC00OSB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDEyNzRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDkge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDIwNThweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy1ncm91cC1pbmRlbnQtNDkge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyMDU4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2VsbCAuYWctaWNvbiB7XFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jaGVja2JveCwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1yYWRpby1idXR0b24sIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdG9nZ2xlLWJ1dHRvbiB7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgY3Vyc29yOiBkZWZhdWx0OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2hlY2tib3ggbGFiZWwsIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcmFkaW8tYnV0dG9uIGxhYmVsLCAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXRvZ2dsZS1idXR0b24gbGFiZWwge1xcbiAgICAgIGN1cnNvcjogZGVmYXVsdDsgfVxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2hlY2tib3ggbGFiZWw6ZW1wdHksIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcmFkaW8tYnV0dG9uIGxhYmVsOmVtcHR5LCAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXRvZ2dsZS1idXR0b24gbGFiZWw6ZW1wdHkge1xcbiAgICAgICAgbWFyZ2luOiAwOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2hlY2tib3g6bm90KC5hZy1sYWJlbC1hbGlnbi1sZWZ0KSBsYWJlbCwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1yYWRpby1idXR0b246bm90KC5hZy1sYWJlbC1hbGlnbi1sZWZ0KSBsYWJlbCwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy10b2dnbGUtYnV0dG9uOm5vdCguYWctbGFiZWwtYWxpZ24tbGVmdCkgbGFiZWwge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2VsbCB7XFxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IHN1YnBpeGVsLWFudGlhbGlhc2VkOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctcm93LWdyb3VwLWxlYWYtaW5kZW50IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDQycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1jZWxsIHtcXG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdHJhbnNwYXJlbnQ7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3cuYWctY2VsbC1maXJzdC1yaWdodC1waW5uZWQsIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1jZWxsOm5vdCguYWctY2VsbC1mb2N1cykuYWctY2VsbC1maXJzdC1yaWdodC1waW5uZWQge1xcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNlMmUyZTI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbHRyIC5hZy1yb3cuYWctY2VsbC1sYXN0LWxlZnQtcGlubmVkLCAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctY2VsbDpub3QoLmFnLWNlbGwtZm9jdXMpLmFnLWNlbGwtbGFzdC1sZWZ0LXBpbm5lZCB7XFxuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNlMmUyZTI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1yb3ctZ3JvdXAtbGVhZi1pbmRlbnQge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDQycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1jZWxsIHtcXG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy5hZy1jZWxsLWZpcnN0LXJpZ2h0LXBpbm5lZCwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLWNlbGw6bm90KC5hZy1jZWxsLWZvY3VzKS5hZy1jZWxsLWZpcnN0LXJpZ2h0LXBpbm5lZCB7XFxuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2UyZTJlMjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXJvdy5hZy1jZWxsLWxhc3QtbGVmdC1waW5uZWQsIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1jZWxsOm5vdCguYWctY2VsbC1mb2N1cykuYWctY2VsbC1sYXN0LWxlZnQtcGlubmVkIHtcXG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2UyZTJlMjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy12YWx1ZS1jaGFuZ2UtZGVsdGEge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdmFsdWUtY2hhbmdlLWRlbHRhLXVwIHtcXG4gICAgY29sb3I6ICM0M2EwNDc7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdmFsdWUtY2hhbmdlLWRlbHRhLWRvd24ge1xcbiAgICBjb2xvcjogI2U1MzkzNTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy12YWx1ZS1jaGFuZ2UtdmFsdWUge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgYm9yZGVyLXJhZGl1czogMXB4O1xcbiAgICBwYWRkaW5nLWxlZnQ6IDFweDtcXG4gICAgcGFkZGluZy1yaWdodDogMXB4O1xcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMXM7XFxuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMXM7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdmFsdWUtY2hhbmdlLXZhbHVlLWhpZ2hsaWdodCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMGFjYzE7XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjFzO1xcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMXM7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dDpub3QoW3R5cGVdKSxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJ0ZXh0XFxcIl0sXFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwibnVtYmVyXFxcIl0sXFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwidGVsXFxcIl0sXFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZVxcXCJdLFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcImRhdGV0aW1lLWxvY2FsXFxcIl0ge1xcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44Nyk7XFxuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XFxuICAgIGhlaWdodDogNDBweDtcXG4gICAgcGFkZGluZy1ib3R0b206IDhweDtcXG4gICAgYm9yZGVyLXdpZHRoOiAwO1xcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2UyZTJlMjsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXQ6bm90KFt0eXBlXSk6Zm9jdXMsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJ0ZXh0XFxcIl06Zm9jdXMsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJudW1iZXJcXFwiXTpmb2N1cyxcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcInRlbFxcXCJdOmZvY3VzLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZVxcXCJdOmZvY3VzLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZXRpbWUtbG9jYWxcXFwiXTpmb2N1cyB7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICMzZjUxYjU7XFxuICAgICAgb3V0bGluZTogbm9uZTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXQ6bm90KFt0eXBlXSk6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJ0ZXh0XFxcIl06Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJudW1iZXJcXFwiXTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcixcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcInRlbFxcXCJdOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZVxcXCJdOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZXRpbWUtbG9jYWxcXFwiXTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0Om5vdChbdHlwZV0pOjotbW96LXBsYWNlaG9sZGVyLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwidGV4dFxcXCJdOjotbW96LXBsYWNlaG9sZGVyLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwibnVtYmVyXFxcIl06Oi1tb3otcGxhY2Vob2xkZXIsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJ0ZWxcXFwiXTo6LW1vei1wbGFjZWhvbGRlcixcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcImRhdGVcXFwiXTo6LW1vei1wbGFjZWhvbGRlcixcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcImRhdGV0aW1lLWxvY2FsXFxcIl06Oi1tb3otcGxhY2Vob2xkZXIge1xcbiAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dDpub3QoW3R5cGVdKTotbXMtaW5wdXQtcGxhY2Vob2xkZXIsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJ0ZXh0XFxcIl06LW1zLWlucHV0LXBsYWNlaG9sZGVyLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwibnVtYmVyXFxcIl06LW1zLWlucHV0LXBsYWNlaG9sZGVyLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwidGVsXFxcIl06LW1zLWlucHV0LXBsYWNlaG9sZGVyLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZVxcXCJdOi1tcy1pbnB1dC1wbGFjZWhvbGRlcixcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcImRhdGV0aW1lLWxvY2FsXFxcIl06LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcXG4gICAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM4KTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXQ6bm90KFt0eXBlXSk6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcixcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcInRleHRcXFwiXTo6LW1zLWlucHV0LXBsYWNlaG9sZGVyLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwibnVtYmVyXFxcIl06Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcixcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcInRlbFxcXCJdOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJkYXRlXFxcIl06Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcixcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcImRhdGV0aW1lLWxvY2FsXFxcIl06Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0Om5vdChbdHlwZV0pOjpwbGFjZWhvbGRlcixcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcInRleHRcXFwiXTo6cGxhY2Vob2xkZXIsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJudW1iZXJcXFwiXTo6cGxhY2Vob2xkZXIsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJ0ZWxcXFwiXTo6cGxhY2Vob2xkZXIsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJkYXRlXFxcIl06OnBsYWNlaG9sZGVyLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZXRpbWUtbG9jYWxcXFwiXTo6cGxhY2Vob2xkZXIge1xcbiAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dDpub3QoW3R5cGVdKTpkaXNhYmxlZCxcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcInRleHRcXFwiXTpkaXNhYmxlZCxcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcIm51bWJlclxcXCJdOmRpc2FibGVkLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwidGVsXFxcIl06ZGlzYWJsZWQsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJkYXRlXFxcIl06ZGlzYWJsZWQsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJkYXRldGltZS1sb2NhbFxcXCJdOmRpc2FibGVkIHtcXG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UyZTJlMjsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXQ6bm90KFt0eXBlXSk6ZGlzYWJsZWQsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJ0ZXh0XFxcIl06ZGlzYWJsZWQsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJudW1iZXJcXFwiXTpkaXNhYmxlZCxcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XFxcInRlbFxcXCJdOmRpc2FibGVkLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZVxcXCJdOmRpc2FibGVkLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZXRpbWUtbG9jYWxcXFwiXTpkaXNhYmxlZCB7XFxuICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciBpbnB1dFt0eXBlPVxcXCJkYXRlXFxcIl0ge1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgICAgLW1zLWZsZXg6IDEgMSBhdXRvO1xcbiAgICAgICAgICAgIGZsZXg6IDEgMSBhdXRvOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgaW5wdXRbdHlwZT1cXFwicmFuZ2VcXFwiXSB7XFxuICAgIHBhZGRpbmc6IDA7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciB0ZXh0YXJlYSB7XFxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcXG4gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XFxuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcXG4gICAgaGVpZ2h0OiA0MHB4O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogOHB4O1xcbiAgICBib3JkZXItd2lkdGg6IDA7XFxuICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjZTJlMmUyOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciB0ZXh0YXJlYTpmb2N1cyB7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICMzZjUxYjU7XFxuICAgICAgb3V0bGluZTogbm9uZTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWlucHV0LXdyYXBwZXIgdGV4dGFyZWE6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciB0ZXh0YXJlYTo6LW1vei1wbGFjZWhvbGRlciB7XFxuICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIHRleHRhcmVhOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XFxuICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIHRleHRhcmVhOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xcbiAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciB0ZXh0YXJlYTo6cGxhY2Vob2xkZXIge1xcbiAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaW5wdXQtd3JhcHBlciB0ZXh0YXJlYTpkaXNhYmxlZCB7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMmUyZTI7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pbnB1dC13cmFwcGVyIHRleHRhcmVhOmRpc2FibGVkIHtcXG4gICAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM4KTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1oZWFkZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gICAgZm9udC1zaXplOiAxMnB4O1xcbiAgICBmb250LWZhbWlseTogXFxcIlJvYm90b1xcXCIsIHNhbnMtc2VyaWY7XFxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTJlMmUyOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXBpbm5lZC1yaWdodC1oZWFkZXIge1xcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNlMmUyZTI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcGlubmVkLWxlZnQtaGVhZGVyIHtcXG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2UyZTJlMjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1oZWFkZXItcm93IHtcXG4gICAgYm9yZGVyOiBub25lOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJvdyB7XFxuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XFxuICAgIGJvcmRlci1jb2xvcjogI2UyZTJlMjtcXG4gICAgYm9yZGVyLXdpZHRoOiAwOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcm93Om5vdCguYWctcm93LWZpcnN0KSB7XFxuICAgICAgYm9yZGVyLXdpZHRoOiAxcHggMCAwOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcm93LmFnLXJvdy1sYXN0IHtcXG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaG9yaXpvbnRhbC1sZWZ0LXNwYWNlciB7XFxuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNlMmUyZTI7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ob3Jpem9udGFsLWxlZnQtc3BhY2VyLmFnLXNjcm9sbGVyLWNvcm5lciB7XFxuICAgICAgYm9yZGVyLXJpZ2h0OiBub25lOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWhvcml6b250YWwtcmlnaHQtc3BhY2VyIHtcXG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZTJlMmUyOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaG9yaXpvbnRhbC1yaWdodC1zcGFjZXIuYWctc2Nyb2xsZXItY29ybmVyIHtcXG4gICAgICBib3JkZXItbGVmdDogbm9uZTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1yb3ctaG92ZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLW51bWVyaWMtY2VsbCB7XFxuICAgIHRleHQtYWxpZ246IHJpZ2h0OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWhlYWRlci1jZWxsLWxhYmVsIC5hZy1oZWFkZXItaWNvbiB7XFxuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XFxuICAgIG9wYWNpdHk6IDAuODc7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaGVhZGVyLWNlbGwsXFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWhlYWRlci1ncm91cC1jZWxsIHtcXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gICAgYm9yZGVyLWNvbG9yOiAjZTJlMmUyO1xcbiAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDI0cHg7XFxuICAgIGJvcmRlci13aWR0aDogMDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWhlYWRlci1jZWxsLmFnLWhlYWRlci1jZWxsLW1vdmluZyxcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1oZWFkZXItZ3JvdXAtY2VsbC5hZy1oZWFkZXItY2VsbC1tb3Zpbmcge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjI7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1oZWFkZXItY2VsbDpub3QoLmFnLWhlYWRlci1ncm91cC1jZWxsLW5vLWdyb3VwKSxcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1oZWFkZXItZ3JvdXAtY2VsbDpub3QoLmFnLWhlYWRlci1ncm91cC1jZWxsLW5vLWdyb3VwKSB7XFxuICAgICAgYm9yZGVyLXRvcC13aWR0aDogMXB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWhlYWRlci1yb3c6Zmlyc3QtY2hpbGQgLmFnLWhlYWRlci1jZWxsLCAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWhlYWRlci1yb3c6Zmlyc3QtY2hpbGQgLmFnLWhlYWRlci1ncm91cC1jZWxsIHtcXG4gICAgYm9yZGVyLXRvcC13aWR0aDogMDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1oZWFkZXItZ3JvdXAtY2VsbDpub3QoLmFnLWNvbHVtbi1yZXNpemluZykgKyAuYWctaGVhZGVyLWdyb3VwLWNlbGw6aG92ZXIsIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaGVhZGVyLWdyb3VwLWNlbGw6bm90KC5hZy1jb2x1bW4tcmVzaXppbmcpICsgLmFnLWhlYWRlci1ncm91cC1jZWxsLmFnLWNvbHVtbi1yZXNpemluZyxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaGVhZGVyLWNlbGw6bm90KC5hZy1jb2x1bW4tcmVzaXppbmcpICsgLmFnLWhlYWRlci1jZWxsOmhvdmVyLFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1oZWFkZXItY2VsbDpub3QoLmFnLWNvbHVtbi1yZXNpemluZykgKyAuYWctaGVhZGVyLWNlbGwuYWctY29sdW1uLXJlc2l6aW5nLFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1oZWFkZXItZ3JvdXAtY2VsbDpmaXJzdC1vZi10eXBlOmhvdmVyLFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1oZWFkZXItZ3JvdXAtY2VsbDpmaXJzdC1vZi10eXBlLmFnLWNvbHVtbi1yZXNpemluZyxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaGVhZGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZTpob3ZlcixcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaGVhZGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZS5hZy1jb2x1bW4tcmVzaXppbmcge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmYyOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWhlYWRlci1jZWxsLXJlc2l6ZSB7XFxuICAgIGN1cnNvcjogY29sLXJlc2l6ZTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1oZWFkZXItc2VsZWN0LWFsbCB7XFxuICAgIG1hcmdpbi1yaWdodDogMjRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jZWxsIHtcXG4gICAgbGluZS1oZWlnaHQ6IDQ2cHg7XFxuICAgIHBhZGRpbmctbGVmdDogMjRweDtcXG4gICAgcGFkZGluZy1yaWdodDogMjRweDtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICAgIHBhZGRpbmctbGVmdDogMjNweDtcXG4gICAgcGFkZGluZy1yaWdodDogMjNweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1yb3ctZHJhZyB7XFxuICAgIGN1cnNvcjogbW92ZTtcXG4gICAgY3Vyc29yOiAtd2Via2l0LWdyYWI7XFxuICAgIGN1cnNvcjogZ3JhYjtcXG4gICAgbWluLXdpZHRoOiA0MnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJvdy1kcmFnZ2luZywgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1yb3ctZHJhZ2dpbmcgLmFnLXJvdy1kcmFnIHtcXG4gICAgY3Vyc29yOiBtb3ZlOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbHVtbi1kcmFnIHtcXG4gICAgY3Vyc29yOiBtb3ZlO1xcbiAgICBjdXJzb3I6IC13ZWJraXQtZ3JhYjtcXG4gICAgY3Vyc29yOiBncmFiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJvdy1kcmFnZ2luZyB7XFxuICAgIG9wYWNpdHk6IDAuNTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLWhhcy1mb2N1cyAuYWctY2VsbC1mb2N1czpub3QoLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQpLFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLWhhcy1mb2N1cyAuYWctY2VsbC1mb2N1cy5hZy1jZWxsLXJhbmdlLXNpbmdsZS1jZWxsLFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLWNlbGwtZm9jdXMuYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbC5hZy1jZWxsLXJhbmdlLWhhbmRsZSwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLWhhcy1mb2N1cyAuYWctY2VsbC1mb2N1czpub3QoLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQpLFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLWhhcy1mb2N1cyAuYWctY2VsbC1mb2N1cy5hZy1jZWxsLXJhbmdlLXNpbmdsZS1jZWxsLFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLWNlbGwtZm9jdXMuYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbC5hZy1jZWxsLXJhbmdlLWhhbmRsZSB7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICMzZjUxYjU7XFxuICAgIG91dGxpbmU6IGluaXRpYWw7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaGVhZGVyLWNlbGwtcmVzaXplIHtcXG4gICAgd2lkdGg6IDE2cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbWVudSB7XFxuICAgIGJhY2tncm91bmQ6ICNmZmY7XFxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7XFxuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbiAgICBwYWRkaW5nOiA4cHg7XFxuICAgIHBhZGRpbmc6IDA7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1tZW51IC5hZy1tZW51LWxpc3Qge1xcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XFxuICAgICAgbWFyZ2luLXRvcDogOHB4O1xcbiAgICAgIHdpZHRoOiAxMDAlOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbWVudSAuYWctbWVudS1vcHRpb24tYWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbWVudSAuYWctbWVudS1vcHRpb24tZGlzYWJsZWQge1xcbiAgICAgIG9wYWNpdHk6IDAuNTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLW1lbnUgLmFnLW1lbnUtb3B0aW9uLXRleHQge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1tZW51IC5hZy1tZW51LW9wdGlvbi1pY29uIHtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDhweDtcXG4gICAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7XFxuICAgICAgbWluLXdpZHRoOiAzNHB4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbWVudSAuYWctbWVudS1vcHRpb24tc2hvcnRjdXQge1xcbiAgICAgIHBhZGRpbmctbGVmdDogMTZweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLW1lbnUgLmFnLW1lbnUtc2VwYXJhdG9yIHtcXG4gICAgICBoZWlnaHQ6IDE2cHg7IH1cXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLW1lbnUgLmFnLW1lbnUtc2VwYXJhdG9yID4gc3BhbiB7XFxuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB3aWR0aCUzRCcxJyUyMGhlaWdodCUzRCcxNnB4JyUyMHZpZXdCb3glM0QnMCUyMDAlMjAxJTIwMTZweCclMjB4bWxucyUzRCdodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmcnJTNFJTNDbGluZSUyMHgxJTNEJzAnJTIweTElM0QnOHB4JyUyMHgyJTNEJzEnJTIweTIlM0QnOHB4JyUyMHN0cm9rZS13aWR0aCUzRCcxJyUyMHN0cm9rZSUzRCclMjNFMkUyRTInJTJGJTNFJTNDJTJGc3ZnJTNFXFxcIik7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1tZW51IC5hZy1tZW51LW9wdGlvbi1wb3B1cC1wb2ludGVyIHtcXG4gICAgICB3aWR0aDogMzRweDtcXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbC5hZy1kbmQtZ2hvc3Qge1xcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG4gICAgcGFkZGluZzogOHB4O1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTJlMmUyO1xcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gICAgZm9udC1zaXplOiAxMnB4O1xcbiAgICBmb250LWZhbWlseTogXFxcIlJvYm90b1xcXCIsIHNhbnMtc2VyaWY7XFxuICAgIGhlaWdodDogNTZweCAhaW1wb3J0YW50O1xcbiAgICBsaW5lLWhlaWdodDogNTZweDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBwYWRkaW5nOiAwIDE2cHg7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDE2cHgpO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxNnB4KTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwuYWctZG5kLWdob3N0IHNwYW4sXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbC5hZy1kbmQtZ2hvc3QgZGl2IHtcXG4gICAgICBoZWlnaHQ6IDEwMCU7XFxuICAgICAgbWFyZ2luOiAwO1xcbiAgICAgIHBhZGRpbmc6IDA7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsLmFnLWRuZC1naG9zdCAuYWctZG5kLWdob3N0LWljb24ge1xcbiAgICAgIG1hcmdpbi1yaWdodDogOHB4O1xcbiAgICAgIG9wYWNpdHk6IDAuODc7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdGFiLWhlYWRlciB7XFxuICAgIGJhY2tncm91bmQ6ICNlZWU7XFxuICAgIG1pbi13aWR0aDogMjIwcHg7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy10YWItaGVhZGVyIC5hZy10YWIge1xcbiAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgICAgIGhlaWdodDogMzJweDtcXG4gICAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgICAtbXMtZmxleDogbm9uZTtcXG4gICAgICAgICAgICAgIGZsZXg6IG5vbmU7XFxuICAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgICAgICAtbXMtZmxleDogMSAxIGF1dG87XFxuICAgICAgICAgICAgICBmbGV4OiAxIDEgYXV0bzsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy10YWItYm9keSB7XFxuICAgIHBhZGRpbmc6IDRweCAwOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdGFiLWJvZHkgLmFnLW1lbnUtbGlzdCB7XFxuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcXG4gICAgICBtYXJnaW4tdG9wOiAwOyB9XFxuICAgICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy10YWItYm9keSAuYWctbWVudS1saXN0ID4gZGl2OmZpcnN0LWNoaWxkID4gc3BhbiB7XFxuICAgICAgICBwYWRkaW5nLXRvcDogMDsgfVxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdGFiLWJvZHkgLmFnLW1lbnUtbGlzdCA+IGRpdjpsYXN0LWNoaWxkID4gc3BhbiB7XFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDsgfVxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdGFiLWJvZHkgLmFnLW1lbnUtbGlzdCA+IGRpdjpsYXN0LWNoaWxkID4gLmFnLW1lbnUtb3B0aW9uLXBvcHVwLXBvaW50ZXIge1xcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbi15OiAwOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWZpbHRlciAuYWctZmlsdGVyLXNlbGVjdCwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1maWx0ZXIgLmFnLWZpbHRlci1ib2R5IHtcXG4gICAgbWFyZ2luLWJvdHRvbTogOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWZpbHRlciAuYWctZmlsdGVyLWJvZHkge1xcbiAgICBtYXJnaW4tdG9wOiAwOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWZpbHRlciAuYWctZmlsdGVyLWZpbHRlciB7XFxuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XFxuICAgIG1hcmdpbi1yaWdodDogOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWZpbHRlciAuYWctZmlsdGVyLXNlbGVjdCB7XFxuICAgIG1hcmdpbjogOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWZpbHRlciBpbnB1dFt0eXBlPVxcXCJyYWRpb1xcXCJdIHtcXG4gICAgbWFyZ2luOiAwIDNweCAwIDZweDtcXG4gICAgd2lkdGg6IDEycHg7XFxuICAgIGhlaWdodDogMTdweDtcXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1maWx0ZXIgaW5wdXRbdHlwZT1cXFwidGV4dFxcXCJdLFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1maWx0ZXIgaW5wdXRbdHlwZT1cXFwiZGF0ZVxcXCJdIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctZmlsdGVyIC5hZy1zZXQtZmlsdGVyLWxpc3Qge1xcbiAgICBoZWlnaHQ6IDI0MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWZpbHRlciAuYWctc2V0LWZpbHRlci1pdGVtIHtcXG4gICAgaGVpZ2h0OiA0MHB4O1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1maWx0ZXIgLmFnLXNldC1maWx0ZXItaXRlbSA+IGRpdiwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1maWx0ZXIgLmFnLXNldC1maWx0ZXItaXRlbSA+IHNwYW4ge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7XFxuICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgICAgZGlzcGxheTogZmxleDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1maWx0ZXIgLmFnLWZpbHRlci1oZWFkZXItY29udGFpbmVyOm50aC1jaGlsZCgyKSB7XFxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTJlMmUyOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWZpbHRlciAuYWctZmlsdGVyLWFwcGx5LXBhbmVsIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7XFxuICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7XFxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG4gICAgcGFkZGluZzogOHB4O1xcbiAgICBwYWRkaW5nLXRvcDogMTZweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWZpbHRlciAuYWctZmlsdGVyLWFwcGx5LXBhbmVsIGJ1dHRvbiB7XFxuICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcXG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XFxuICAgICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xcbiAgICAgICAgICAgICAgYXBwZWFyYW5jZTogbm9uZTtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgICBib3JkZXI6IDA7XFxuICAgICAgY29sb3I6ICMzZjUxYjU7XFxuICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XFxuICAgICAgZm9udC1zaXplOiBpbmhlcml0O1xcbiAgICAgIG1hcmdpbjogMDtcXG4gICAgICBwYWRkaW5nOiAwO1xcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1maWx0ZXIgLmFnLWZpbHRlci1hcHBseS1wYW5lbCBidXR0b24gKyBidXR0b24ge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAxNnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uIHtcXG4gICAgaGVpZ2h0OiAzMnB4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLWdyb3VwIC5hZy1jb2x1bW4tc2VsZWN0LWNoZWNrYm94LFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLWxhYmVsLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1ncm91cCAuYWctY29sdW1uLWdyb3VwLWljb25zLFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbHVtbi1zZWxlY3QtcGFuZWwgLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbiAuYWctY29sdW1uLXNlbGVjdC1jaGVja2JveCxcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4gLmFnLWNvbHVtbi10b29sLXBhbmVsLWNvbHVtbi1sYWJlbCxcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4gLmFnLWNvbHVtbi1ncm91cC1pY29ucyB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDhweDtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1wcmltYXJ5LWNvbHMtbGlzdC1wYW5lbCB7XFxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTJlMmUyO1xcbiAgICBwYWRkaW5nLXRvcDogOHB4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctcHJpbWFyeS1jb2xzLWxpc3QtcGFuZWwgPiBkaXYge1xcbiAgICAgIGN1cnNvcjogcG9pbnRlcjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4uYWctdG9vbHBhbmVsLWFkZC1ncm91cC1pbmRlbnQge1xcbiAgICBtYXJnaW4tbGVmdDogMzRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1wcmltYXJ5LWNvbHMtaGVhZGVyLXBhbmVsIHtcXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlMmUyZTI7XFxuICAgIGhlaWdodDogNTZweDtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXByaW1hcnktY29scy1oZWFkZXItcGFuZWwgPiBkaXYge1xcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgICBtYXJnaW46IDAgOHB4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcHJpbWFyeS1jb2xzLWhlYWRlci1wYW5lbCAuYWctZmlsdGVyLWJvZHkge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7XFxuICAgICAgbWFyZ2luLXJpZ2h0OiA4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdG9vbC1wYW5lbC13cmFwcGVyIHtcXG4gICAgYm9yZGVyLXJpZ2h0OiAwOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1maWx0ZXItcGFuZWwge1xcbiAgICAgIHdpZHRoOiAxMDAlOyB9XFxuICAgICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWZpbHRlci1wYW5lbCAuYWctZmlsdGVyLXRvb2xwYW5lbC1pbnN0YW5jZSB7XFxuICAgICAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICAgICAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgICAgICAgIC1tcy1mbGV4OiBhdXRvO1xcbiAgICAgICAgICAgICAgICBmbGV4OiBhdXRvO1xcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG4gICAgICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgICAgICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgLW1zLWZsZXgtd3JhcDogbm93cmFwO1xcbiAgICAgICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICAtbXMtZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xcbiAgICAgICAgICAgIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDsgfVxcbiAgICAgICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWZpbHRlci1wYW5lbCAuYWctZmlsdGVyLXRvb2xwYW5lbC1pbnN0YW5jZSAuYWctZmlsdGVyLXRvb2xwYW5lbC1oZWFkZXIge1xcbiAgICAgICAgICBwYWRkaW5nOiAwIDVweDsgfVxcbiAgICAgICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctZmlsdGVyLXBhbmVsIC5hZy1maWx0ZXItdG9vbHBhbmVsLWluc3RhbmNlIC5hZy1maWx0ZXItdG9vbHBhbmVsLWhlYWRlciA+IGRpdiB7XFxuICAgICAgICAgICAgbWFyZ2luOiBhdXRvIDA7IH1cXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctZmlsdGVyLXBhbmVsIC5hZy1maWx0ZXItYm9keS13cmFwcGVyIHtcXG4gICAgICAgIHBhZGRpbmctdG9wOiA1cHg7IH1cXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctZmlsdGVyLXBhbmVsIC5hZy1maWx0ZXItYWlyIHtcXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMmUyZTI7XFxuICAgICAgICBib3JkZXItbGVmdDogMDtcXG4gICAgICAgIGJvcmRlci1yaWdodDogMDtcXG4gICAgICAgIHBhZGRpbmc6IDhweCAwOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1waXZvdC1tb2RlLXBhbmVsIHtcXG4gICAgICBoZWlnaHQ6IDU2cHg7XFxuICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xcbiAgICAgICAgICAtbXMtZmxleDogbm9uZTtcXG4gICAgICAgICAgICAgIGZsZXg6IG5vbmU7IH1cXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctcGl2b3QtbW9kZS1wYW5lbCAuYWctcGl2b3QtbW9kZS1zZWxlY3Qge1xcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgICBtYXJnaW4tbGVmdDogOHB4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIHtcXG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UyZTJlMjtcXG4gICAgICBwYWRkaW5nLWJvdHRvbTogN3B4O1xcbiAgICAgIHBhZGRpbmctdG9wOiAwOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1jb2x1bW4tZHJvcCB7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMmUyZTI7XFxuICAgICAgcGFkZGluZzogOHB4IDA7XFxuICAgICAgcGFkZGluZy1ib3R0b206IDE2cHg7IH1cXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctY29sdW1uLWRyb3AgLmFnLWNvbHVtbi1kcm9wLWVtcHR5LW1lc3NhZ2Uge1xcbiAgICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7XFxuICAgICAgICBmb250LXdlaWdodDogNzAwO1xcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xcbiAgICAgICAgZm9udC1mYW1pbHk6IFxcXCJSb2JvdG9cXFwiLCBzYW5zLXNlcmlmO1xcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAzNHB4O1xcbiAgICAgICAgcGFkZGluZy1yaWdodDogOHB4O1xcbiAgICAgICAgbWFyZ2luLXRvcDogOHB4OyB9XFxuICAgICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLWNvbHVtbi1kcm9wIC5hZy1jb2x1bW4tZHJvcC1saXN0IHtcXG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgICAgIG1hcmdpbi10b3A6IDhweDsgfVxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1jb2x1bW4tZHJvcCA+IGRpdiA+IDpmaXJzdC1jaGlsZCB7XFxuICAgICAgICBtYXJnaW4tbGVmdDogOHB4O1xcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA4cHg7IH1cXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXRvb2wtcGFuZWwtd3JhcHBlciAuYWctY29sdW1uLWRyb3A6bGFzdC1jaGlsZCB7XFxuICAgICAgICBib3JkZXItYm90dG9tOiAwOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLW51bWVyaWMtaGVhZGVyIC5hZy1oZWFkZXItY2VsbC1sYWJlbCAuYWctaGVhZGVyLWljb24ge1xcbiAgICBtYXJnaW4tbGVmdDogMDtcXG4gICAgbWFyZ2luLXJpZ2h0OiA4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcGFnaW5nLXBhbmVsIHtcXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlMmUyZTI7XFxuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xcbiAgICBoZWlnaHQ6IDU2cHg7XFxuICAgIHBhZGRpbmc6IDAgMjRweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXBhZ2luZy1wYW5lbCA+IHNwYW4ge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAzMnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXBhZ2luZy1wYWdlLXN1bW1hcnktcGFuZWwgLmFnLWljb24ge1xcbiAgICB3aWR0aDogMThweDtcXG4gICAgaGVpZ2h0OiAxOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXBhZ2luZy1wYWdlLXN1bW1hcnktcGFuZWwgLmFnLXBhZ2luZy1idXR0b24gYnV0dG9uIHtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgICB0b3A6IDA7XFxuICAgIHJpZ2h0OiAwO1xcbiAgICBib3R0b206IDA7XFxuICAgIGxlZnQ6IDA7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcGFnaW5nLXBhZ2Utc3VtbWFyeS1wYW5lbCAuYWctcGFnaW5nLWJ1dHRvbi5hZy1kaXNhYmxlZCAuYWctaWNvbiB7XFxuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xcbiAgICBvcGFjaXR5OiAwLjM4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXBhZ2luZy1wYWdlLXN1bW1hcnktcGFuZWwgLmFnLXBhZ2luZy1idXR0b24uYWctZGlzYWJsZWQgYnV0dG9uIHtcXG4gICAgY3Vyc29yOiBkZWZhdWx0OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXBhZ2luZy1wYWdlLXN1bW1hcnktcGFuZWwgc3BhbiB7XFxuICAgIG1hcmdpbjogMCA4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcm93LXNlbGVjdGVkIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwpLCAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkge1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkuYWctY2VsbC1yYW5nZS10b3AsIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQ6bm90KC5hZy1jZWxsLXJhbmdlLXNpbmdsZS1jZWxsKS5hZy1jZWxsLXJhbmdlLXRvcCB7XFxuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogIzNmNTFiNTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkuYWctY2VsbC1yYW5nZS1yaWdodCwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtcmFuZ2Utc2luZ2xlLWNlbGwpLmFnLWNlbGwtcmFuZ2UtcmlnaHQge1xcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogIzNmNTFiNTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkuYWctY2VsbC1yYW5nZS1ib3R0b20sIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQ6bm90KC5hZy1jZWxsLXJhbmdlLXNpbmdsZS1jZWxsKS5hZy1jZWxsLXJhbmdlLWJvdHRvbSB7XFxuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzNmNTFiNTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkuYWctY2VsbC1yYW5nZS1sZWZ0LCAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1yYW5nZS1zaW5nbGUtY2VsbCkuYWctY2VsbC1yYW5nZS1sZWZ0IHtcXG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogIzNmNTFiNTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1mb2N1cykge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEyMiwgMTM0LCAyMDMsIDAuMSk7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkOm5vdCguYWctY2VsbC1mb2N1cykuYWctY2VsbC1yYW5nZS1jaGFydCB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCA4OCwgMjU1LCAwLjEpOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2VsbC1yYW5nZS1zZWxlY3RlZDpub3QoLmFnLWNlbGwtZm9jdXMpLmFnLWNlbGwtcmFuZ2UtY2hhcnQuYWctY2VsbC1yYW5nZS1jaGFydC1jYXRlZ29yeSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAyNTUsIDEzMiwgMC4xKTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLTE6bm90KC5hZy1jZWxsLWZvY3VzKSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTIyLCAxMzQsIDIwMywgMC4yKTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLTI6bm90KC5hZy1jZWxsLWZvY3VzKSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTIyLCAxMzQsIDIwMywgMC4zKTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLTM6bm90KC5hZy1jZWxsLWZvY3VzKSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTIyLCAxMzQsIDIwMywgMC40KTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLTQ6bm90KC5hZy1jZWxsLWZvY3VzKSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTIyLCAxMzQsIDIwMywgMC41KTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXNlbGVjdGlvbi1maWxsLXRvcCwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1maWxsLXRvcCB7XFxuICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgIzNmNTFiNTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctc2VsZWN0aW9uLWZpbGwtdG9wLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZCwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1maWxsLXRvcC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQge1xcbiAgICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgI2FmYWZhZjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXNlbGVjdGlvbi1maWxsLXJpZ2h0LCAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWZpbGwtcmlnaHQge1xcbiAgICBib3JkZXItcmlnaHQ6IDFweCBkYXNoZWQgIzNmNTFiNTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctc2VsZWN0aW9uLWZpbGwtcmlnaHQuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkLCAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWZpbGwtcmlnaHQuYWctY2VsbC5hZy1jZWxsLXJhbmdlLXNlbGVjdGVkIHtcXG4gICAgICBib3JkZXItcmlnaHQ6IDFweCBkYXNoZWQgI2FmYWZhZjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXNlbGVjdGlvbi1maWxsLWJvdHRvbSwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1maWxsLWJvdHRvbSB7XFxuICAgIGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgIzNmNTFiNTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctc2VsZWN0aW9uLWZpbGwtYm90dG9tLmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZCwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1maWxsLWJvdHRvbS5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQge1xcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgI2FmYWZhZjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1sdHIgLmFnLXNlbGVjdGlvbi1maWxsLWxlZnQsIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1zZWxlY3Rpb24tZmlsbC1sZWZ0IHtcXG4gICAgYm9yZGVyLWxlZnQ6IDFweCBkYXNoZWQgIzNmNTFiNTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctc2VsZWN0aW9uLWZpbGwtbGVmdC5hZy1jZWxsLmFnLWNlbGwtcmFuZ2Utc2VsZWN0ZWQsIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1zZWxlY3Rpb24tZmlsbC1sZWZ0LmFnLWNlbGwuYWctY2VsbC1yYW5nZS1zZWxlY3RlZCB7XFxuICAgICAgYm9yZGVyLWxlZnQ6IDFweCBkYXNoZWQgI2FmYWZhZjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1maWxsLWhhbmRsZSwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1yYW5nZS1oYW5kbGUge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHdpZHRoOiA2cHg7XFxuICAgIGhlaWdodDogNnB4O1xcbiAgICBib3R0b206IC0xcHg7XFxuICAgIHJpZ2h0OiAtMXB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Y1MWI1OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWZpbGwtaGFuZGxlIHtcXG4gICAgY3Vyc29yOiBjZWxsOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJhbmdlLWhhbmRsZSB7XFxuICAgIGN1cnNvcjogbndzZS1yZXNpemU7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2VsbC5hZy1jZWxsLWlubGluZS1lZGl0aW5nIHtcXG4gICAgcGFkZGluZzogMjRweDtcXG4gICAgaGVpZ2h0OiA3MnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNlbGwuYWctY2VsbC1pbmxpbmUtZWRpdGluZywgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jZWxsLmFnLXBvcHVwLWVkaXRvciB7XFxuICAgIGJhY2tncm91bmQ6ICNmZmY7XFxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7XFxuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbiAgICBwYWRkaW5nOiA4cHg7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcG9wdXAtZWRpdG9yIHtcXG4gICAgcGFkZGluZzogMDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXBvcHVwLWVkaXRvciAuYWctbGFyZ2UtdGV4dGFyZWEgdGV4dGFyZWEge1xcbiAgICAgIGhlaWdodDogYXV0bztcXG4gICAgICBwYWRkaW5nOiAyNHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJpY2gtc2VsZWN0IHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJpY2gtc2VsZWN0IC5hZy1yaWNoLXNlbGVjdC1saXN0IHtcXG4gICAgICB3aWR0aDogMjAwcHg7XFxuICAgICAgaGVpZ2h0OiAzMTJweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJpY2gtc2VsZWN0IC5hZy1yaWNoLXNlbGVjdC12YWx1ZSB7XFxuICAgICAgcGFkZGluZzogMCA4cHggMCAyNHB4O1xcbiAgICAgIGhlaWdodDogNDhweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJpY2gtc2VsZWN0IC5hZy12aXJ0dWFsLWxpc3QtaXRlbSB7XFxuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgICAgIGhlaWdodDogNDhweDsgfVxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcmljaC1zZWxlY3QgLmFnLXZpcnR1YWwtbGlzdC1pdGVtOmhvdmVyIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1yaWNoLXNlbGVjdCAuYWctcmljaC1zZWxlY3Qtcm93IHtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1yaWNoLXNlbGVjdCAuYWctcmljaC1zZWxlY3Qtcm93LXNlbGVjdGVkIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWx0ciAuYWctZmxvYXRpbmctZmlsdGVyLWJ1dHRvbiB7XFxuICAgIG1hcmdpbi1sZWZ0OiAyNHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWZsb2F0aW5nLWZpbHRlci1idXR0b24gYnV0dG9uIHtcXG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xcbiAgICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XFxuICAgICAgICAgICAgYXBwZWFyYW5jZTogbm9uZTtcXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxuICAgIGJvcmRlcjogMDtcXG4gICAgaGVpZ2h0OiAxOHB4O1xcbiAgICBwYWRkaW5nOiAwO1xcbiAgICB3aWR0aDogMThweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1zZWxlY3Rpb24tY2hlY2tib3g6bm90KC5hZy1oaWRkZW4pIH4gLmFnLWNlbGwtdmFsdWU6bm90KDplbXB0eSksIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctc2VsZWN0aW9uLWNoZWNrYm94Om5vdCguYWctaGlkZGVuKSArIC5hZy1ncm91cC12YWx1ZTpub3QoOmVtcHR5KSxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctZ3JvdXAtZXhwYW5kZWQ6bm90KC5hZy1oaWRkZW4pIH4gLmFnLWNlbGwtdmFsdWU6bm90KDplbXB0eSksXFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWdyb3VwLWV4cGFuZGVkOm5vdCguYWctaGlkZGVuKSArIC5hZy1ncm91cC12YWx1ZTpub3QoOmVtcHR5KSxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctZ3JvdXAtY29udHJhY3RlZDpub3QoLmFnLWhpZGRlbikgfiAuYWctY2VsbC12YWx1ZTpub3QoOmVtcHR5KSxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctZ3JvdXAtY29udHJhY3RlZDpub3QoLmFnLWhpZGRlbikgKyAuYWctZ3JvdXAtdmFsdWU6bm90KDplbXB0eSksXFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWdyb3VwLWNoZWNrYm94Om5vdCguYWctaW52aXNpYmxlKSB+IC5hZy1jZWxsLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ncm91cC1jaGVja2JveDpub3QoLmFnLWludmlzaWJsZSkgKyAuYWctZ3JvdXAtdmFsdWU6bm90KDplbXB0eSkge1xcbiAgICBtYXJnaW4tbGVmdDogMjRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1zZWxlY3Rpb24tY2hlY2tib3g6bm90KC5hZy1oaWRkZW4pIH4gLmFnLWdyb3VwLWNoZWNrYm94LFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ncm91cC1leHBhbmRlZDpub3QoLmFnLWhpZGRlbikgfiAuYWctZ3JvdXAtY2hlY2tib3gsXFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWdyb3VwLWNvbnRyYWN0ZWQ6bm90KC5hZy1oaWRkZW4pIH4gLmFnLWdyb3VwLWNoZWNrYm94LFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ncm91cC1jaGVja2JveDpub3QoLmFnLWludmlzaWJsZSkgfiAuYWctZ3JvdXAtY2hlY2tib3gge1xcbiAgICBtYXJnaW4tbGVmdDogMjRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ncm91cC1jaGlsZC1jb3VudCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctc2VsZWN0aW9uLWNoZWNrYm94IHNwYW4ge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7XFxuICAgIGhlaWdodDogNDhweDtcXG4gICAgcGFkZGluZy1sZWZ0OiAyNHB4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCAuYWctaWNvbi1ncm91cCxcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIC5hZy1pY29uLXBpdm90IHtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDI0cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIC5hZy1pY29uLXNtYWxsLWxlZnQsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCAuYWctaWNvbi1zbWFsbC1yaWdodCB7XFxuICAgICAgbWFyZ2luOiAwIDhweDtcXG4gICAgICBvcGFjaXR5OiAwLjU0OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCAuYWctY29sdW1uLWRyb3AtZW1wdHktbWVzc2FnZSB7XFxuICAgICAgb3BhY2l0eTogMC4zODsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2x1bW4tZHJvcC1jZWxsIHtcXG4gICAgYmFja2dyb3VuZDogI2UyZTJlMjtcXG4gICAgYm9yZGVyLXJhZGl1czogMzJweDtcXG4gICAgbWluLWhlaWdodDogMzJweDtcXG4gICAgcGFkZGluZzogMCA0cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2x1bW4tZHJvcC1jZWxsIC5hZy1jb2x1bW4tZHJvcC1jZWxsLXRleHQge1xcbiAgICAgIG1hcmdpbjogMCA4cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2x1bW4tZHJvcC1jZWxsIC5hZy1jb2x1bW4tZHJvcC1jZWxsLWJ1dHRvbiB7XFxuICAgICAgbWluLXdpZHRoOiAzMnB4O1xcbiAgICAgIG1hcmdpbjogMCA0cHg7XFxuICAgICAgb3BhY2l0eTogMC41NDsgfVxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sdW1uLWRyb3AtY2VsbCAuYWctY29sdW1uLWRyb3AtY2VsbC1idXR0b246aG92ZXIge1xcbiAgICAgICAgb3BhY2l0eTogMC44NzsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbHVtbi1kcm9wLWNlbGwgLmFnLWNvbHVtbi1kcmFnIHtcXG4gICAgICBtYXJnaW4tbGVmdDogMTZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2x1bW4tZHJvcC12ZXJ0aWNhbCAuYWctY29sdW1uLWRyb3AtY2VsbCB7XFxuICAgIG1hcmdpbi10b3A6IDhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1zZWxlY3QtYWdnLWZ1bmMtcG9wdXAge1xcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG4gICAgcGFkZGluZzogOHB4O1xcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xcbiAgICBoZWlnaHQ6IDE0MHB4O1xcbiAgICBwYWRkaW5nOiAwOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctc2VsZWN0LWFnZy1mdW5jLXBvcHVwIC5hZy12aXJ0dWFsLWxpc3QtaXRlbSB7XFxuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xcbiAgICAgIHBhZGRpbmctbGVmdDogMTZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1zZXQtZmlsdGVyLWxpc3QsXFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLW1lbnUtY29sdW1uLXNlbGVjdC13cmFwcGVyIHtcXG4gICAgd2lkdGg6IGF1dG87IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sdW1uLWRyb3AtdmVydGljYWwgPiAuYWctY29sdW1uLWRyb3AtY2VsbCB7XFxuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XFxuICAgIG1hcmdpbi10b3A6IDA7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2VsbC1kYXRhLWNoYW5nZWQge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBhY2MxICFpbXBvcnRhbnQ7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2VsbC1kYXRhLWNoYW5nZWQtYW5pbWF0aW9uIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxcztcXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxczsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1zdHViLWNlbGwge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7XFxuICAgIHBhZGRpbmctdG9wOiA4cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1zdHViLWNlbGwgLmFnLWxvYWRpbmctaWNvbiB7XFxuICAgICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogc3BpbjtcXG4gICAgICAgICAgICAgIGFuaW1hdGlvbi1uYW1lOiBzcGluO1xcbiAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAxMDAwbXM7XFxuICAgICAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDEwMDBtcztcXG4gICAgICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xcbiAgICAgICAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XFxuICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XFxuICAgICAgICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7IH1cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgc3BpbiB7XFxuICBmcm9tIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxcbiAgdG8ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfSB9XFxuXFxuQGtleWZyYW1lcyBzcGluIHtcXG4gIGZyb20ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9XFxuICB0byB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1zdHViLWNlbGwgLmFnLWxvYWRpbmctdGV4dCB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDhweDtcXG4gICAgICBtYXJnaW4tdG9wOiA4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctZmxvYXRpbmctdG9wIHtcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMmUyZTI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctZmxvYXRpbmctYm90dG9tIHtcXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlMmUyZTI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctc3RhdHVzLWJhciB7XFxuICAgIGJhY2tncm91bmQ6ICNmZmY7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMmUyZTI7XFxuICAgIGJvcmRlci10b3Atd2lkdGg6IDA7XFxuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xcbiAgICBmb250LXdlaWdodDogNzAwO1xcbiAgICBmb250LXNpemU6IDEycHg7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiUm9ib3RvXFxcIiwgc2Fucy1zZXJpZjtcXG4gICAgcGFkZGluZy1yaWdodDogMzJweDtcXG4gICAgcGFkZGluZy1sZWZ0OiAzMnB4O1xcbiAgICBsaW5lLWhlaWdodDogMS41OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLW5hbWUtdmFsdWUtdmFsdWUge1xcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1zdGF0dXMtYmFyLWNlbnRlciB7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1uYW1lLXZhbHVlIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcXG4gICAgbWFyZ2luLXJpZ2h0OiA4cHg7XFxuICAgIHBhZGRpbmctdG9wOiAxNnB4O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMTZweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1kZXRhaWxzLXJvdyB7XFxuICAgIHBhZGRpbmc6IDQwcHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctb3ZlcmxheS1sb2FkaW5nLXdyYXBwZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctb3ZlcmxheS1sb2FkaW5nLWNlbnRlciB7XFxuICAgIGJhY2tncm91bmQ6ICNmZmY7XFxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7XFxuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbiAgICBwYWRkaW5nOiA4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctc2lkZS1iYXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTJlMmUyO1xcbiAgICBib3JkZXItbGVmdC13aWR0aDogMDtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctc2lkZS1iYXIgLmFnLXNpZGUtYnV0dG9ucyB7XFxuICAgICAgcGFkZGluZy10b3A6IDMycHg7XFxuICAgICAgYmFja2dyb3VuZDogI2ZmZjtcXG4gICAgICB3aWR0aDogMjJweDtcXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXNpZGUtYmFyIC5hZy1zaWRlLWJ1dHRvbnMgLmFnLXNpZGUtYnV0dG9uIGJ1dHRvbiB7XFxuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gICAgICAgIGJvcmRlcjogMDtcXG4gICAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xcbiAgICAgICAgcGFkZGluZzogMTZweCAwIDE2cHggMDtcXG4gICAgICAgIHdpZHRoOiAxMDAlO1xcbiAgICAgICAgbWFyZ2luOiAwO1xcbiAgICAgICAgbWluLWhlaWdodDogMTQ0cHg7XFxuICAgICAgICBib3JkZXItd2lkdGg6IDFweCAwIDFweCAwO1xcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IGNlbnRlcjtcXG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb24teDogY2VudGVyO1xcbiAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsgfVxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctc2lkZS1iYXIgLmFnLXNpZGUtYnV0dG9ucyAuYWctc2VsZWN0ZWQgYnV0dG9uIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XFxuICAgICAgICBtYXJnaW4tbGVmdDogLTFweDtcXG4gICAgICAgIHBhZGRpbmctbGVmdDogMXB4O1xcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjZTJlMmUyOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctc2lkZS1iYXIgLmFnLXBhbmVsLWNvbnRhaW5lciB7XFxuICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2UyZTJlMjsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXNpZGUtYmFyLmZ1bGwtd2lkdGggLmFnLXBhbmVsLWNvbnRhaW5lciB7XFxuICAgICAgYm9yZGVyLXJpZ2h0OiAwOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctc2lkZS1iYXIgLmFnLWNvbHVtbi1kcm9wIHtcXG4gICAgICBtaW4taGVpZ2h0OiA1MHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXByaW1hcnktY29scy1maWx0ZXItd3JhcHBlciB7XFxuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XFxuICAgIG1hcmdpbi1yaWdodDogOHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWdyb3VwLWNvbXBvbmVudCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZGZkZmQ7XFxuICAgIHBhZGRpbmc6IDBweDtcXG4gICAgYm9yZGVyOiAwIHNvbGlkICNlZmVmZWY7XFxuICAgIGJvcmRlci10b3Atd2lkdGg6IDFweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWdyb3VwLWNvbXBvbmVudC5hZy1kaXNhYmxlZCA+IC5hZy1ncm91cC1jb21wb25lbnQtbGFiZWwgLmFnLWdyb3VwLWNvbXBvbmVudC10aXRsZSwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ncm91cC1jb21wb25lbnQuYWctZGlzYWJsZWQgPiAuYWctZ3JvdXAtY29tcG9uZW50LWNvbnRhaW5lciB7XFxuICAgICAgb3BhY2l0eTogMC41OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctZ3JvdXAtY29tcG9uZW50IC5hZy1ncm91cC1jb21wb25lbnQtdGl0bGUtYmFyIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwO1xcbiAgICAgIGhlaWdodDogMThweDtcXG4gICAgICBmb250LXNpemU6IDEzcHg7XFxuICAgICAgZm9udC1mYW1pbHk6IFxcXCJSb2JvdG9cXFwiLCBzYW5zLXNlcmlmO1xcbiAgICAgIGhlaWdodDogMjZweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWdyb3VwLWNvbXBvbmVudDpub3QoLmFnLWNvbGxhcHNpYmxlKSA+IGRpdiB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDA7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ncm91cC1jb21wb25lbnQ6bm90KC5hZy1jb2xsYXBzaWJsZSkgPiAuYWctZ3JvdXAtY29tcG9uZW50LXRpdGxlLWJhciB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDA7XFxuICAgICAgcGFkZGluZzogOHB4OyB9XFxuICAgICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ncm91cC1jb21wb25lbnQ6bm90KC5hZy1jb2xsYXBzaWJsZSkgPiAuYWctZ3JvdXAtY29tcG9uZW50LXRpdGxlLWJhciAuYWctY29sdW1uLWdyb3VwLWljb25zIHtcXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ncm91cC1jb21wb25lbnQgLmFnLWdyb3VwLWNvbXBvbmVudC10b29sYmFyIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3O1xcbiAgICAgIHBhZGRpbmc6IDhweDtcXG4gICAgICBib3JkZXI6IDAgc29saWQgI2UyZTJlMjsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWdyb3VwLWNvbXBvbmVudCA+IC5hZy1ncm91cC1jb21wb25lbnQtY29udGFpbmVyIHtcXG4gICAgICBtYXJnaW4tbGVmdDogMTZweDtcXG4gICAgICBwYWRkaW5nOiA4cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ncm91cC1jb21wb25lbnQgLmFnLWdyb3VwLWl0ZW0ge1xcbiAgICAgIG1hcmdpbjogNHB4IDA7IH1cXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWdyb3VwLWNvbXBvbmVudCAuYWctZ3JvdXAtaXRlbSAuYWctZ3JvdXAtY29tcG9uZW50LXRpdGxlLWJhciB7XFxuICAgICAgICBoZWlnaHQ6IDE4cHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctbGFiZWxlZCBsYWJlbCB7XFxuICAgIG1hcmdpbi1yaWdodDogOHB4O1xcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWxhYmVsZWQuYWctbGFiZWwtYWxpZ24tdG9wIGxhYmVsIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogNHB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXNsaWRlciA+IC5hZy13cmFwcGVyID4gZGl2Om5vdCg6Zmlyc3Qtb2YtdHlwZSksIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctYW5nbGUtc2VsZWN0ID4gLmFnLXdyYXBwZXIgPiBkaXY6bm90KDpmaXJzdC1vZi10eXBlKSB7XFxuICAgIG1hcmdpbi1sZWZ0OiAxNnB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWFuZ2xlLXNlbGVjdCAuYWctYW5nbGUtc2VsZWN0LWZpZWxkIC5hZy1wYXJlbnQtY2lyY2xlIHtcXG4gICAgd2lkdGg6IDI0cHg7XFxuICAgIGhlaWdodDogMjRweDtcXG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMnB4IHJnYmEoMCwgMCwgMCwgMC45KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMnB4IHJnYmEoMCwgMCwgMCwgMC45KTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1hbmdsZS1zZWxlY3QgLmFnLWFuZ2xlLXNlbGVjdC1maWVsZCAuYWctY2hpbGQtY2lyY2xlIHtcXG4gICAgdG9wOiA0cHg7XFxuICAgIGxlZnQ6IDEycHg7XFxuICAgIHdpZHRoOiA2cHg7XFxuICAgIGhlaWdodDogNnB4O1xcbiAgICBtYXJnaW4tbGVmdDogLTNweDtcXG4gICAgbWFyZ2luLXRvcDogLTRweDtcXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGM0YzRjOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXRvZ2dsZS1idXR0b24gLmFnLWlucHV0LXdyYXBwZXIge1xcbiAgICBoZWlnaHQ6IDE4cHg7XFxuICAgIHdpZHRoOiA0MHB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjMzMzO1xcbiAgICBib3JkZXItcmFkaXVzOiA1MDByZW07IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy10b2dnbGUtYnV0dG9uIC5hZy1pbnB1dC13cmFwcGVyIC5hZy1pY29uIHtcXG4gICAgICB3aWR0aDogMThweDtcXG4gICAgICBoZWlnaHQ6IDE4cHg7XFxuICAgICAgYm9yZGVyOiAxcHggc29saWQgIzMzMztcXG4gICAgICBib3JkZXItcmFkaXVzOiA1MDByZW07XFxuICAgICAgcmlnaHQ6IGNhbGMoMTAwJSAtIDE4cHgpOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXRvZ2dsZS1idXR0b24uYWctc2VsZWN0ZWQgLmFnLWlucHV0LXdyYXBwZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY0MDgxOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdG9nZ2xlLWJ1dHRvbi5hZy1zZWxlY3RlZCAuYWctaW5wdXQtd3JhcHBlciAuYWctaWNvbiB7XFxuICAgICAgYmFja2dyb3VuZDogI2ZmZjtcXG4gICAgICByaWdodDogLTFweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2xvci1waWNrZXIgPiAuYWctd3JhcHBlciB7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMmUyZTI7XFxuICAgIGJvcmRlci1yYWRpdXM6IDVweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbG9yLXBpY2tlciA+IC5hZy13cmFwcGVyID4gZGl2IHtcXG4gICAgICB3aWR0aDogMThweDtcXG4gICAgICBoZWlnaHQ6IDE4cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2xvci1waWNrZXIgPiAuYWctd3JhcHBlciBidXR0b24ge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2xvci1waWNrZXIgPiAuYWctd3JhcHBlciBidXR0b246aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctZGlhbG9nLmFnLWNvbG9yLWRpYWxvZyB7XFxuICAgIGJvcmRlci1yYWRpdXM6IDVweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2xvci1wYW5lbCB7XFxuICAgIHBhZGRpbmc6IDhweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1jb2xvciB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkO1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS10b29scyB7XFxuICAgICAgcGFkZGluZzogMTBweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1zYXQge1xcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgcmlnaHQgdG9wLCBmcm9tKHdoaXRlKSwgdG8ocmdiYSgyMDQsIDE1NCwgMTI5LCAwKSkpO1xcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgd2hpdGUsIHJnYmEoMjA0LCAxNTQsIDEyOSwgMCkpOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLXZhbCB7XFxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgYm90dG9tLCBsZWZ0IHRvcCwgZnJvbShibGFjayksIHRvKHJnYmEoMjA0LCAxNTQsIDEyOSwgMCkpKTtcXG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCBibGFjaywgcmdiYSgyMDQsIDE1NCwgMTI5LCAwKSk7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2xvci1wYW5lbCAuYWctc3BlY3RydW0tZHJhZ2dlciB7XFxuICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcXG4gICAgICBoZWlnaHQ6IDEycHg7XFxuICAgICAgd2lkdGg6IDEycHg7XFxuICAgICAgYm9yZGVyOiAxcHggc29saWQgd2hpdGU7XFxuICAgICAgYmFja2dyb3VuZDogYmxhY2s7XFxuICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMjQpO1xcbiAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjI0KTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1odWUtYmFja2dyb3VuZCB7XFxuICAgICAgYm9yZGVyLXJhZGl1czogMnB4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sb3ItcGFuZWwgLmFnLXNwZWN0cnVtLWFscGhhLWJhY2tncm91bmQge1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbG9yLXBhbmVsIC5hZy1odWUtYWxwaGEge1xcbiAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XFxuICAgICAgaGVpZ2h0OiAxMXB4O1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS1zbGlkZXIge1xcbiAgICAgIG1hcmdpbi10b3A6IC0xMnB4O1xcbiAgICAgIHdpZHRoOiAxM3B4O1xcbiAgICAgIGhlaWdodDogMTNweDtcXG4gICAgICBib3JkZXItcmFkaXVzOiAxM3B4O1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGY4Zjg7XFxuICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMzcpO1xcbiAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjM3KTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS10ZXh0LXZhbHVlIHtcXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcXG4gICAgICBsaW5lLWhlaWdodDogMjBweDtcXG4gICAgICBjb2xvcjogIzMzMzsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbG9yLXBhbmVsIC5hZy1zcGVjdHJ1bS10ZXh0LXZhbHVlOmZvY3VzIHtcXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjMGQ3N2U0O1xcbiAgICAgIHBhZGRpbmc6IDJweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNvbG9yLXBhbmVsIC5hZy1yZWNlbnQtY29sb3JzID4gZGl2IHtcXG4gICAgICBtYXJnaW46IDAgM3B4OyB9XFxuICAgICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jb2xvci1wYW5lbCAuYWctcmVjZW50LWNvbG9ycyA+IGRpdjpmaXJzdC1jaGlsZCB7XFxuICAgICAgICBtYXJnaW4tbGVmdDogMDsgfVxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY29sb3ItcGFuZWwgLmFnLXJlY2VudC1jb2xvcnMgPiBkaXY6bGFzdC1jaGlsZCB7XFxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbC5hZy1wb3B1cCA+IGRpdjpub3QoLmFnLXRvb2x0aXAtY3VzdG9tKSB7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogNXB4IDVweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiA1cHggNXB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjMpOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXBhbmVsIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2UyZTJlMjsgfVxcbiAgICAuYWctZHJhZ2dpbmctcmFuZ2UtaGFuZGxlIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcGFuZWwuYWctZGlhbG9nLCAuYWctZHJhZ2dpbmctZmlsbC1oYW5kbGUgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1wYW5lbC5hZy1kaWFsb2cge1xcbiAgICAgIG9wYWNpdHk6IDAuNztcXG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXBhbmVsIC5hZy10aXRsZS1iYXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmY2ZjZmM7XFxuICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XFxuICAgICAgaGVpZ2h0OiA1NnB4O1xcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcXG4gICAgICBmb250LXdlaWdodDogNzAwO1xcbiAgICAgIGZvbnQtZmFtaWx5OiBcXFwiUm9ib3RvXFxcIiwgc2Fucy1zZXJpZjtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7XFxuICAgICAgcGFkZGluZzogNXB4IDEwcHg7IH1cXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXBhbmVsIC5hZy10aXRsZS1iYXIgLmFnLXRpdGxlLWJhci1idXR0b25zIC5hZy1idXR0b24ge1xcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xcbiAgICAgICAgd2lkdGg6IDIwcHg7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7IH1cXG4gICAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcGFuZWwgLmFnLXRpdGxlLWJhciAuYWctdGl0bGUtYmFyLWJ1dHRvbnMgLmFnLWJ1dHRvbiAuYWctaWNvbiB7XFxuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xcbiAgICAgICAgICBmb250LXNpemU6IDIwcHg7IH1cXG4gICAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcGFuZWwgLmFnLXRpdGxlLWJhciAuYWctdGl0bGUtYmFyLWJ1dHRvbnMgLmFnLWJ1dHRvbjpob3ZlciwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1wYW5lbCAuYWctdGl0bGUtYmFyIC5hZy10aXRsZS1iYXItYnV0dG9ucyAuYWctYnV0dG9uLmFnLWhhcy1wb3B1cCB7XFxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7IH1cXG4gICAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcGFuZWwgLmFnLXRpdGxlLWJhciAuYWctdGl0bGUtYmFyLWJ1dHRvbnMgLmFnLWJ1dHRvbjpub3QoOmxhc3QtY2hpbGQpIHtcXG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1wYW5lbCAuYWctbWVzc2FnZS1ib3ggLmFnLW1lc3NhZ2UtYm94LWJ1dHRvbi1iYXIge1xcbiAgICAgIGhlaWdodDogMzBweDtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbiAgICAgIHBhZGRpbmc6IDJweDsgfVxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcGFuZWwgLmFnLW1lc3NhZ2UtYm94IC5hZy1tZXNzYWdlLWJveC1idXR0b24tYmFyIGJ1dHRvbiB7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdG9vbHRpcCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICM1MzUzNTM7XFxuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgIHBhZGRpbmc6IDVweDtcXG4gICAgYm9yZGVyLXdpZHRoOiAxcHg7XFxuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XFxuICAgIGJvcmRlci1jb2xvcjogI2ViZWJlYjtcXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDFzO1xcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDFzOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctdG9vbHRpcC5hZy10b29sdGlwLWhpZGluZyB7XFxuICAgICAgb3BhY2l0eTogMDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jaGFydCAuYWctY2hhcnQtbWVudSB7XFxuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcXG4gICAgYmFja2dyb3VuZDogI2ZmZjsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNoYXJ0IC5hZy1jaGFydC1tZW51ID4gc3Bhbjpob3ZlciB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktd3JhcHBlciAuYWctZ3JvdXAtY29tcG9uZW50LWNvbnRhaW5lciB7XFxuICAgIG1hcmdpbi1sZWZ0OiAwOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNoYXJ0LXRhYmJlZC1tZW51IC5hZy1jaGFydC1zZXR0aW5ncyAuYWctY2hhcnQtc2V0dGluZ3MtbWluaS13cmFwcGVyIC5hZy1jaGFydC1taW5pLXRodW1ibmFpbCB7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMmUyZTI7XFxuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcXG4gICAgbWFyZ2luOiA1cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLW1pbmktd3JhcHBlciAuYWctY2hhcnQtbWluaS10aHVtYm5haWw6bnRoLWNoaWxkKDJuICsgMik6bm90KDpsYXN0LWNoaWxkKSB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy1taW5pLXdyYXBwZXIgLmFnLWNoYXJ0LW1pbmktdGh1bWJuYWlsOm50aC1jaGlsZCgzbiArIDEpIHtcXG4gICAgICBtYXJnaW4tbGVmdDogMnB4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy1taW5pLXdyYXBwZXIgLmFnLWNoYXJ0LW1pbmktdGh1bWJuYWlsOm50aC1jaGlsZCgzbikge1xcbiAgICAgIG1hcmdpbi1yaWdodDogMnB4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy1taW5pLXdyYXBwZXIgLmFnLWNoYXJ0LW1pbmktdGh1bWJuYWlsLmFnLXNlbGVjdGVkIHtcXG4gICAgICBib3JkZXItY29sb3I6ICMzZjUxYjU7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctY2hhcnQtdGFiYmVkLW1lbnUgLmFnLWNoYXJ0LXNldHRpbmdzIC5hZy1jaGFydC1zZXR0aW5ncy1uYXYtYmFyIC5hZy1uYXYtY2FyZC1zZWxlY3RvciAuYWctbmF2LWNhcmQtaXRlbSB7XFxuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xcbiAgICBmb250LXNpemU6IDExcHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtc2V0dGluZ3MgLmFnLWNoYXJ0LXNldHRpbmdzLW5hdi1iYXIgLmFnLW5hdi1jYXJkLXNlbGVjdG9yIC5hZy1uYXYtY2FyZC1pdGVtLmFnLXNlbGVjdGVkIHtcXG4gICAgICBjb2xvcjogIzNmNTFiNTsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1jaGFydC10YWJiZWQtbWVudSAuYWctY2hhcnQtZm9ybWF0IC5hZy1jaGFydC1mb3JtYXQtd3JhcHBlciAuYWctZ3JvdXAtaXRlbSB7XFxuICAgIG1hcmdpbjogOS42cHggMDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uIHtcXG4gICAgLyogdXNlICFpbXBvcnRhbnQgdG8gcHJldmVudCBpc3N1ZXMgd2l0aCBicm93c2VyIGV4dGVuc2lvbnMgdGhhdCBjaGFuZ2UgZm9udHMgKi9cXG4gICAgZm9udC1mYW1pbHk6IFxcXCJhZ0dyaWRNYXRlcmlhbFxcXCI7XFxuICAgIHNwZWFrOiBub25lO1xcbiAgICBmb250LXNpemU6IDE4cHg7XFxuICAgIGNvbG9yOiAjMzMzO1xcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XFxuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcXG4gICAgLyogQmV0dGVyIEZvbnQgUmVuZGVyaW5nID09PT09PT09PT09ICovXFxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tYWdncmVnYXRpb246YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTAwXFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLWFycm93czpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MDFcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tYXNjOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwMlxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jYW5jZWw6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTAzXFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLWNoYXJ0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwNFxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jaGVja2JveC1jaGVja2VkOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwNVxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jaGVja2JveC1pbmRldGVybWluYXRlOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwNlxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jaGVja2JveC11bmNoZWNrZWQ6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTA3XFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLWNvbG9yLXBpY2tlcjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MDhcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tY29sdW1uOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwOVxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jb2x1bW5zOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwQVxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jb250cmFjdGVkOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwQlxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jb3B5OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwQ1xcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jcm9zczpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MERcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tY3V0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwRVxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1kYXRhOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwRlxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1kZXNjOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxMFxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1leHBhbmRlZDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MTFcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tZXllLXNsYXNoOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxMlxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1leWU6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTEzXFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLWZpbHRlcjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MTRcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tZmlyc3Q6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTE1XFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLWdyaXA6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTE2XFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLWdyb3VwOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxN1xcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1pbmRldGVybWluYXRlOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxOFxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1sYXN0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxOVxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1sZWZ0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxQVxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1sb2FkaW5nOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxQlxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1tYXhpbWl6ZTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MUNcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tbWVudTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MURcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tbWluaW1pemU6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTFFXFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLW1pbnVzOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkxRlxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1uZXh0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyMFxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1ub25lOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyMVxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1ub3QtYWxsb3dlZDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MjJcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tcGFzdGU6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTIzXFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLXBpbjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MjRcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tcGl2b3Q6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTI1XFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLXBsdXM6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTI2XFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLXByZXZpb3VzOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyN1xcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1yYWRpby1idXR0b24tb2ZmOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyOFxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1yYWRpby1idXR0b24tb246YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTI5XFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLXJpZ2h0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyQVxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1zYXZlOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyQlxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1zbWFsbC1kb3duOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyQ1xcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1zbWFsbC1sZWZ0OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkyRFxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1zbWFsbC1yaWdodDpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MkVcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tc21hbGwtdXA6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTJGXFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLXRpY2s6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTMwXFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLXRyZWUtY2xvc2VkOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkzMVxcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi10cmVlLWluZGV0ZXJtaW5hdGU6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTMyXFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLXRyZWUtb3BlbjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MzNcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tY2hlY2tib3gtY2hlY2tlZCxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jaGVja2JveC1pbmRldGVybWluYXRlLFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLWNoZWNrYm94LXVuY2hlY2tlZCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICBsaW5lLWhlaWdodDogMThweDtcXG4gICAgYm9yZGVyLXJhZGl1czogM3B4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jaGVja2JveC1jaGVja2VkLXJlYWRvbmx5LFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1yZWFkb25seSxcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLWNoZWNrYm94LXVuY2hlY2tlZC1yZWFkb25seSB7XFxuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgICAgIG9wYWNpdHk6IDAuMzg7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jaGVja2JveC1jaGVja2VkIHtcXG4gICAgY29sb3I6ICNmZjQwODE7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLWNoZWNrYm94LWNoZWNrZWQtcmVhZG9ubHk6YmVmb3JlIHtcXG4gICAgICBjb250ZW50OiBcXFwiXFxcXEU5MDVcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1yZWFkb25seTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MDZcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tY2hlY2tib3gtdW5jaGVja2VkLXJlYWRvbmx5OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IFxcXCJcXFxcRTkwN1xcXCI7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctZ3JvdXAtZXhwYW5kZWQgLmFnLWljb24tY29udHJhY3RlZDplbXB0eTpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MzNcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tcm93LWRyYWc6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTE2XFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1yaWdodC1hcnJvdzpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXEU5MUFcXFwiOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tcmFkaW8tYnV0dG9uLW9uIHtcXG4gICAgY29sb3I6ICNmZjQwODE7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcmlnaHQtYXJyb3c6YmVmb3JlIHtcXG4gICAgY29udGVudDogXFxcIlxcXFxFOTJBXFxcIjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwge1xcbiAgICB0ZXh0LWFsaWduOiByaWdodDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctbnVtZXJpYy1jZWxsIHtcXG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1jaGVja2JveDpub3QoLmFnLWxhYmVsLWFsaWduLWxlZnQpIGxhYmVsLCAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctcmFkaW8tYnV0dG9uOm5vdCguYWctbGFiZWwtYWxpZ24tbGVmdCkgbGFiZWwsIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy10b2dnbGUtYnV0dG9uOm5vdCguYWctbGFiZWwtYWxpZ24tbGVmdCkgbGFiZWwge1xcbiAgICAgIG1hcmdpbi1yaWdodDogOHB4O1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAwOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy10b29sLXBhbmVsLXdyYXBwZXIgLmFnLXBpdm90LW1vZGUtcGFuZWwgLmFnLXBpdm90LW1vZGUtc2VsZWN0IHtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDhweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctdG9vbC1wYW5lbC13cmFwcGVyIC5hZy1jb2x1bW4tZHJvcCAuYWctY29sdW1uLWRyb3AtZW1wdHktbWVzc2FnZSB7XFxuICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7XFxuICAgICAgcGFkZGluZy1yaWdodDogMzJweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLWdyb3VwIC5hZy1jb2x1bW4tc2VsZWN0LWNoZWNrYm94LFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLWdyb3VwIC5hZy1jb2x1bW4tZ3JvdXAtaWNvbnMsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4gLmFnLWNvbHVtbi1zZWxlY3QtY2hlY2tib3gsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1jb2x1bW4tc2VsZWN0LXBhbmVsIC5hZy1jb2x1bW4tdG9vbC1wYW5lbC1jb2x1bW4gLmFnLWNvbHVtbi1ncm91cC1pY29ucyB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDhweDtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDhweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctY29sdW1uLXNlbGVjdC1wYW5lbCAuYWctY29sdW1uLXRvb2wtcGFuZWwtY29sdW1uLmFnLXRvb2xwYW5lbC1hZGQtZ3JvdXAtaW5kZW50IHtcXG4gICAgICBtYXJnaW4tbGVmdDogMDtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDM0cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLWhlYWRlci1zZWxlY3QtYWxsIHtcXG4gICAgICBtYXJnaW4tbGVmdDogMjRweDtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1jaGVja2JveCxcXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLWdyb3VwLWNoZWNrYm94LFxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctZ3JvdXAtZXhwYW5kZWQsXFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1ncm91cC1jb250cmFjdGVkIHtcXG4gICAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7XFxuICAgICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94O1xcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyB9XFxuICAgICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXNlbGVjdGlvbi1jaGVja2JveCArIC5hZy1jZWxsLXZhbHVlOm5vdCg6ZW1wdHkpLCAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctc2VsZWN0aW9uLWNoZWNrYm94ICsgLmFnLWdyb3VwLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1ncm91cC1jaGVja2JveCArIC5hZy1jZWxsLXZhbHVlOm5vdCg6ZW1wdHkpLFxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1ncm91cC1jaGVja2JveCArIC5hZy1ncm91cC12YWx1ZTpub3QoOmVtcHR5KSxcXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctZ3JvdXAtZXhwYW5kZWQgKyAuYWctY2VsbC12YWx1ZTpub3QoOmVtcHR5KSxcXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctZ3JvdXAtZXhwYW5kZWQgKyAuYWctZ3JvdXAtdmFsdWU6bm90KDplbXB0eSksXFxuICAgICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLWdyb3VwLWNvbnRyYWN0ZWQgKyAuYWctY2VsbC12YWx1ZTpub3QoOmVtcHR5KSxcXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctZ3JvdXAtY29udHJhY3RlZCArIC5hZy1ncm91cC12YWx1ZTpub3QoOmVtcHR5KSB7XFxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDI0cHg7XFxuICAgICAgICBtYXJnaW4tbGVmdDogaW5pdGlhbDsgfVxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1zZWxlY3Rpb24tY2hlY2tib3ggKyAuYWctZ3JvdXAtY2hlY2tib3gsXFxuICAgICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLWdyb3VwLWNoZWNrYm94ICsgLmFnLWdyb3VwLWNoZWNrYm94LFxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1ncm91cC1leHBhbmRlZCArIC5hZy1ncm91cC1jaGVja2JveCxcXG4gICAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctZ3JvdXAtY29udHJhY3RlZCArIC5hZy1ncm91cC1jaGVja2JveCB7XFxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDI0cHg7XFxuICAgICAgICBtYXJnaW4tbGVmdDogaW5pdGlhbDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctZ3JvdXAtY2hpbGQtY291bnQge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiB1bnNldDtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDJweDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctY29sdW1uLWRyb3AtaG9yaXpvbnRhbCB7XFxuICAgICAgcGFkZGluZy1yaWdodDogMjRweDsgfVxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIC5hZy1pY29uLWdyb3VwLFxcbiAgICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1jb2x1bW4tZHJvcC1ob3Jpem9udGFsIC5hZy1pY29uLXBpdm90IHtcXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAyNHB4O1xcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1mbG9hdGluZy1maWx0ZXItYnV0dG9uIHtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDI0cHg7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXNldC1maWx0ZXItaXRlbSA+IGRpdiwgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXNldC1maWx0ZXItaXRlbSA+IHNwYW4ge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xcbiAgICAgIG1hcmdpbi1yaWdodDogNXB4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctcnRsIC5hZy1oZWFkZXIgLmFnLWhlYWRlci1jZWxsLXJlc2l6ZTo6YWZ0ZXIge1xcbiAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2UyZTJlMjtcXG4gICAgICBib3JkZXItcmlnaHQ6IDA7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXNpZGUtYmFyIC5hZy1wYW5lbC1jb250YWluZXIge1xcbiAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2UyZTJlMjtcXG4gICAgICBib3JkZXItcmlnaHQ6IDA7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1ydGwgLmFnLXNpZGUtYmFyLmZ1bGwtd2lkdGggLmFnLXBhbmVsLWNvbnRhaW5lciB7XFxuICAgICAgYm9yZGVyLWxlZnQ6IDA7IH1cXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuc2Fzcy12YXJpYWJsZXM6OmFmdGVyIHtcXG4gICAgY29udGVudDogJ3sgXFxcImF1dG9TaXplUGFkZGluZ1xcXCI6IFxcXCIyNHB4XFxcIiwgXFxcImhlYWRlckhlaWdodFxcXCI6IFxcXCI1NnB4XFxcIiwgXFxcImdyb3VwUGFkZGluZ1NpemVcXFwiOiBcXFwiNDJweFxcXCIsIFxcXCJmb290ZXJQYWRkaW5nQWRkaXRpb25cXFwiOiBcXFwiMzJweFxcXCIsIFxcXCJ2aXJ0dWFsSXRlbUhlaWdodFxcXCI6IFxcXCI0MHB4XFxcIiwgXFxcImFnZ0Z1bmNQb3B1cEhlaWdodFxcXCI6IFxcXCIxNDBweFxcXCIsIFxcXCJjaGVja2JveEluZGVudFdpZHRoXFxcIjogXFxcIjI2cHhcXFwiLCBcXFwibGVhZk5vZGVQYWRkaW5nXFxcIjogXFxcIjI0cHhcXFwiLCBcXFwicm93SGVpZ2h0XFxcIjogXFxcIjQ4cHhcXFwiLCBcXFwiZ3JpZFNpemVcXFwiOiBcXFwiOHB4XFxcIiwgXFxcImljb25TaXplXFxcIjogXFxcIjE4cHhcXFwiIH0nO1xcbiAgICBkaXNwbGF5OiBub25lOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tY2hlY2tib3gtY2hlY2tlZCxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jaGVja2JveC1jaGVja2VkLXJlYWRvbmx5LFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLWNoZWNrYm94LXVuY2hlY2tlZCxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jaGVja2JveC11bmNoZWNrZWQtcmVhZG9ubHksXFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWljb24tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1jaGVja2JveC1pbmRldGVybWluYXRlLXJlYWRvbmx5LFxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1pY29uLXJhZGlvLWJ1dHRvbi1vbixcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaWNvbi1yYWRpby1idXR0b24tb2ZmIHtcXG4gICAgaGVpZ2h0OiAyNHB4O1xcbiAgICB3aWR0aDogMjRweDtcXG4gICAgZm9udC1zaXplOiAyNHB4O1xcbiAgICBsaW5lLWhlaWdodDogMjRweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1oZWFkZXItY2VsbCxcXG4gIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctaGVhZGVyLWdyb3VwLWNlbGwge1xcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC41cztcXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjVzOyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNlbGwtaGlnaGxpZ2h0IHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZTRlYyAhaW1wb3J0YW50OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLWNlbGwtaGlnaGxpZ2h0LWFuaW1hdGlvbiB7XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxcztcXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxczsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1tZW51LW9wdGlvbiB7XFxuICAgIGhlaWdodDogMzhweDsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1zaWRlLWJhciB7XFxuICAgIGJvcmRlci1ib3R0b206IDA7XFxuICAgIGJvcmRlci1yaWdodDogMDtcXG4gICAgYm9yZGVyLXRvcDogMDsgfVxcbiAgICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXNpZGUtYmFyIC5hZy1zaWRlLWJ1dHRvbnMgYnV0dG9uIHtcXG4gICAgICBib3JkZXI6IDA7XFxuICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XFxuICAgICAgZm9udC1mYW1pbHk6IFxcXCJSb2JvdG9cXFwiLCBzYW5zLXNlcmlmO1xcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcXG4gICAgICBmb250LXdlaWdodDogNzAwO1xcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctc2lkZS1iYXIgLmFnLXNpZGUtYnV0dG9ucyAuYWctc2lkZS1idXR0b24gYnV0dG9uIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgICBib3JkZXItd2lkdGg6IDA7IH1cXG4gICAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1zaWRlLWJhciAuYWctc2lkZS1idXR0b25zIC5hZy1zZWxlY3RlZCBidXR0b24ge1xcbiAgICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgIzNmNTFiNTtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAtMnB4O1xcbiAgICAgIHBhZGRpbmctbGVmdDogMXB4OyB9XFxuICAgIC5hZy10aGVtZS1tYXRlcmlhbCAuYWctc2lkZS1iYXIgLmFnLWZpbHRlci10b29scGFuZWwtYm9keSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgfVxcbiAgLmFnLXRoZW1lLW1hdGVyaWFsIC5hZy1zdGF0dXMtYmFyIHtcXG4gICAgYm9yZGVyLXRvcC13aWR0aDogMXB4OyB9XFxuICAuYWctdGhlbWUtbWF0ZXJpYWwgLmFnLXJ0bCAuYWctc2lkZS1iYXIgLmFnLXNpZGUtYnV0dG9ucyAuYWctc2VsZWN0ZWQgYnV0dG9uIHtcXG4gICAgYm9yZGVyLWxlZnQ6IDA7XFxuICAgIG1hcmdpbi1sZWZ0OiAwO1xcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XFxuICAgIGJvcmRlci1yaWdodDogMnB4IHNvbGlkICMzZjUxYjU7XFxuICAgIG1hcmdpbi1yaWdodDogLTJweDtcXG4gICAgcGFkZGluZy1yaWdodDogMXB4OyB9XFxuXFxuXCIiLCJtb2R1bGUuZXhwb3J0cyA9IFwiLmZsYXRwaWNrci1jYWxlbmRhciB7XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gIG9wYWNpdHk6IDA7XFxuICBkaXNwbGF5OiBub25lO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgcGFkZGluZzogMDtcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBub25lO1xcbiAgICAgICAgICBhbmltYXRpb246IG5vbmU7XFxuICBkaXJlY3Rpb246IGx0cjtcXG4gIGJvcmRlcjogMDtcXG4gIGZvbnQtc2l6ZTogMTRweDtcXG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgd2lkdGg6IDMwNy44NzVweDtcXG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIC1tcy10b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcXG4gICAgICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcXG4gIGJhY2tncm91bmQ6ICNmZmY7XFxuICAtd2Via2l0LWJveC1zaGFkb3c6IDFweCAwIDAgI2U2ZTZlNiwgLTFweCAwIDAgI2U2ZTZlNiwgMCAxcHggMCAjZTZlNmU2LCAwIC0xcHggMCAjZTZlNmU2LCAwIDNweCAxM3B4IHJnYmEoMCwwLDAsMC4wOCk7XFxuICAgICAgICAgIGJveC1zaGFkb3c6IDFweCAwIDAgI2U2ZTZlNiwgLTFweCAwIDAgI2U2ZTZlNiwgMCAxcHggMCAjZTZlNmU2LCAwIC0xcHggMCAjZTZlNmU2LCAwIDNweCAxM3B4IHJnYmEoMCwwLDAsMC4wOCk7XFxufVxcbi5mbGF0cGlja3ItY2FsZW5kYXIub3BlbixcXG4uZmxhdHBpY2tyLWNhbGVuZGFyLmlubGluZSB7XFxuICBvcGFjaXR5OiAxO1xcbiAgbWF4LWhlaWdodDogNjQwcHg7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbn1cXG4uZmxhdHBpY2tyLWNhbGVuZGFyLm9wZW4ge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgei1pbmRleDogOTk5OTk7XFxufVxcbi5mbGF0cGlja3ItY2FsZW5kYXIuYW5pbWF0ZS5vcGVuIHtcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBmcEZhZGVJbkRvd24gMzAwbXMgY3ViaWMtYmV6aWVyKDAuMjMsIDEsIDAuMzIsIDEpO1xcbiAgICAgICAgICBhbmltYXRpb246IGZwRmFkZUluRG93biAzMDBtcyBjdWJpYy1iZXppZXIoMC4yMywgMSwgMC4zMiwgMSk7XFxufVxcbi5mbGF0cGlja3ItY2FsZW5kYXIuaW5saW5lIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgdG9wOiAycHg7XFxufVxcbi5mbGF0cGlja3ItY2FsZW5kYXIuc3RhdGljIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogY2FsYygxMDAlICsgMnB4KTtcXG59XFxuLmZsYXRwaWNrci1jYWxlbmRhci5zdGF0aWMub3BlbiB7XFxuICB6LWluZGV4OiA5OTk7XFxuICBkaXNwbGF5OiBibG9jaztcXG59XFxuLmZsYXRwaWNrci1jYWxlbmRhci5tdWx0aU1vbnRoIC5mbGF0cGlja3ItZGF5cyAuZGF5Q29udGFpbmVyOm50aC1jaGlsZChuKzEpIC5mbGF0cGlja3ItZGF5LmluUmFuZ2U6bnRoLWNoaWxkKDduKzcpIHtcXG4gIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xcbiAgICAgICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XFxufVxcbi5mbGF0cGlja3ItY2FsZW5kYXIubXVsdGlNb250aCAuZmxhdHBpY2tyLWRheXMgLmRheUNvbnRhaW5lcjpudGgtY2hpbGQobisyKSAuZmxhdHBpY2tyLWRheS5pblJhbmdlOm50aC1jaGlsZCg3bisxKSB7XFxuICAtd2Via2l0LWJveC1zaGFkb3c6IC0ycHggMCAwICNlNmU2ZTYsIDVweCAwIDAgI2U2ZTZlNjtcXG4gICAgICAgICAgYm94LXNoYWRvdzogLTJweCAwIDAgI2U2ZTZlNiwgNXB4IDAgMCAjZTZlNmU2O1xcbn1cXG4uZmxhdHBpY2tyLWNhbGVuZGFyIC5oYXNXZWVrcyAuZGF5Q29udGFpbmVyLFxcbi5mbGF0cGlja3ItY2FsZW5kYXIgLmhhc1RpbWUgLmRheUNvbnRhaW5lciB7XFxuICBib3JkZXItYm90dG9tOiAwO1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xcbn1cXG4uZmxhdHBpY2tyLWNhbGVuZGFyIC5oYXNXZWVrcyAuZGF5Q29udGFpbmVyIHtcXG4gIGJvcmRlci1sZWZ0OiAwO1xcbn1cXG4uZmxhdHBpY2tyLWNhbGVuZGFyLnNob3dUaW1lSW5wdXQuaGFzVGltZSAuZmxhdHBpY2tyLXRpbWUge1xcbiAgaGVpZ2h0OiA0MHB4O1xcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlNmU2ZTY7XFxufVxcbi5mbGF0cGlja3ItY2FsZW5kYXIubm9DYWxlbmRhci5oYXNUaW1lIC5mbGF0cGlja3ItdGltZSB7XFxuICBoZWlnaHQ6IGF1dG87XFxufVxcbi5mbGF0cGlja3ItY2FsZW5kYXI6YmVmb3JlLFxcbi5mbGF0cGlja3ItY2FsZW5kYXI6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIGJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQ7XFxuICBjb250ZW50OiAnJztcXG4gIGhlaWdodDogMDtcXG4gIHdpZHRoOiAwO1xcbiAgbGVmdDogMjJweDtcXG59XFxuLmZsYXRwaWNrci1jYWxlbmRhci5yaWdodE1vc3Q6YmVmb3JlLFxcbi5mbGF0cGlja3ItY2FsZW5kYXIucmlnaHRNb3N0OmFmdGVyIHtcXG4gIGxlZnQ6IGF1dG87XFxuICByaWdodDogMjJweDtcXG59XFxuLmZsYXRwaWNrci1jYWxlbmRhcjpiZWZvcmUge1xcbiAgYm9yZGVyLXdpZHRoOiA1cHg7XFxuICBtYXJnaW46IDAgLTVweDtcXG59XFxuLmZsYXRwaWNrci1jYWxlbmRhcjphZnRlciB7XFxuICBib3JkZXItd2lkdGg6IDRweDtcXG4gIG1hcmdpbjogMCAtNHB4O1xcbn1cXG4uZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93VG9wOmJlZm9yZSxcXG4uZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93VG9wOmFmdGVyIHtcXG4gIGJvdHRvbTogMTAwJTtcXG59XFxuLmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd1RvcDpiZWZvcmUge1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2U2ZTZlNjtcXG59XFxuLmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd1RvcDphZnRlciB7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmZmO1xcbn1cXG4uZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93Qm90dG9tOmJlZm9yZSxcXG4uZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93Qm90dG9tOmFmdGVyIHtcXG4gIHRvcDogMTAwJTtcXG59XFxuLmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd0JvdHRvbTpiZWZvcmUge1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogI2U2ZTZlNjtcXG59XFxuLmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd0JvdHRvbTphZnRlciB7XFxuICBib3JkZXItdG9wLWNvbG9yOiAjZmZmO1xcbn1cXG4uZmxhdHBpY2tyLWNhbGVuZGFyOmZvY3VzIHtcXG4gIG91dGxpbmU6IDA7XFxufVxcbi5mbGF0cGlja3Itd3JhcHBlciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxufVxcbi5mbGF0cGlja3ItbW9udGhzIHtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLXdlYmtpdC1mbGV4O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbn1cXG4uZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLW1vbnRoIHtcXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgY29sb3I6IHJnYmEoMCwwLDAsMC45KTtcXG4gIGZpbGw6IHJnYmEoMCwwLDAsMC45KTtcXG4gIGhlaWdodDogMzRweDtcXG4gIGxpbmUtaGVpZ2h0OiAxO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xcbiAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgLXdlYmtpdC1mbGV4OiAxO1xcbiAgICAgIC1tcy1mbGV4OiAxO1xcbiAgICAgICAgICBmbGV4OiAxO1xcbn1cXG4uZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLXByZXYtbW9udGgsXFxuLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1uZXh0LW1vbnRoIHtcXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGhlaWdodDogMzRweDtcXG4gIHBhZGRpbmc6IDEwcHg7XFxuICB6LWluZGV4OiAzO1xcbiAgY29sb3I6IHJnYmEoMCwwLDAsMC45KTtcXG4gIGZpbGw6IHJnYmEoMCwwLDAsMC45KTtcXG59XFxuLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoLmZsYXRwaWNrci1kaXNhYmxlZCxcXG4uZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLW5leHQtbW9udGguZmxhdHBpY2tyLWRpc2FibGVkIHtcXG4gIGRpc3BsYXk6IG5vbmU7XFxufVxcbi5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItcHJldi1tb250aCBpLFxcbi5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbmV4dC1tb250aCBpIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoLmZsYXRwaWNrci1wcmV2LW1vbnRoLFxcbi5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbmV4dC1tb250aC5mbGF0cGlja3ItcHJldi1tb250aCB7XFxuLypcXG4gICAgICAvKnJ0bDpiZWdpbjppZ25vcmUqL1xcbi8qXFxuICAgICAgKi9cXG4gIGxlZnQ6IDA7XFxuLypcXG4gICAgICAvKnJ0bDplbmQ6aWdub3JlKi9cXG4vKlxcbiAgICAgICovXFxufVxcbi8qXFxuICAgICAgLypydGw6YmVnaW46aWdub3JlKi9cXG4vKlxcbiAgICAgIC8qcnRsOmVuZDppZ25vcmUqL1xcbi5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItcHJldi1tb250aC5mbGF0cGlja3ItbmV4dC1tb250aCxcXG4uZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLW5leHQtbW9udGguZmxhdHBpY2tyLW5leHQtbW9udGgge1xcbi8qXFxuICAgICAgLypydGw6YmVnaW46aWdub3JlKi9cXG4vKlxcbiAgICAgICovXFxuICByaWdodDogMDtcXG4vKlxcbiAgICAgIC8qcnRsOmVuZDppZ25vcmUqL1xcbi8qXFxuICAgICAgKi9cXG59XFxuLypcXG4gICAgICAvKnJ0bDpiZWdpbjppZ25vcmUqL1xcbi8qXFxuICAgICAgLypydGw6ZW5kOmlnbm9yZSovXFxuLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoOmhvdmVyLFxcbi5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbmV4dC1tb250aDpob3ZlciB7XFxuICBjb2xvcjogIzk1OWVhOTtcXG59XFxuLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoOmhvdmVyIHN2ZyxcXG4uZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLW5leHQtbW9udGg6aG92ZXIgc3ZnIHtcXG4gIGZpbGw6ICNmNjQ3NDc7XFxufVxcbi5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItcHJldi1tb250aCBzdmcsXFxuLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1uZXh0LW1vbnRoIHN2ZyB7XFxuICB3aWR0aDogMTRweDtcXG4gIGhlaWdodDogMTRweDtcXG59XFxuLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoIHN2ZyBwYXRoLFxcbi5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbmV4dC1tb250aCBzdmcgcGF0aCB7XFxuICAtd2Via2l0LXRyYW5zaXRpb246IGZpbGwgMC4xcztcXG4gIHRyYW5zaXRpb246IGZpbGwgMC4xcztcXG4gIGZpbGw6IGluaGVyaXQ7XFxufVxcbi5udW1JbnB1dFdyYXBwZXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgaGVpZ2h0OiBhdXRvO1xcbn1cXG4ubnVtSW5wdXRXcmFwcGVyIGlucHV0LFxcbi5udW1JbnB1dFdyYXBwZXIgc3BhbiB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxufVxcbi5udW1JbnB1dFdyYXBwZXIgaW5wdXQge1xcbiAgd2lkdGg6IDEwMCU7XFxufVxcbi5udW1JbnB1dFdyYXBwZXIgaW5wdXQ6Oi1tcy1jbGVhciB7XFxuICBkaXNwbGF5OiBub25lO1xcbn1cXG4ubnVtSW5wdXRXcmFwcGVyIGlucHV0Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLFxcbi5udW1JbnB1dFdyYXBwZXIgaW5wdXQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24ge1xcbiAgbWFyZ2luOiAwO1xcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xcbn1cXG4ubnVtSW5wdXRXcmFwcGVyIHNwYW4ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcmlnaHQ6IDA7XFxuICB3aWR0aDogMTRweDtcXG4gIHBhZGRpbmc6IDAgNHB4IDAgMnB4O1xcbiAgaGVpZ2h0OiA1MCU7XFxuICBsaW5lLWhlaWdodDogNTAlO1xcbiAgb3BhY2l0eTogMDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNTcsNTcsNTcsMC4xNSk7XFxuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcbi5udW1JbnB1dFdyYXBwZXIgc3Bhbjpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuMSk7XFxufVxcbi5udW1JbnB1dFdyYXBwZXIgc3BhbjphY3RpdmUge1xcbiAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjIpO1xcbn1cXG4ubnVtSW5wdXRXcmFwcGVyIHNwYW46YWZ0ZXIge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG59XFxuLm51bUlucHV0V3JhcHBlciBzcGFuLmFycm93VXAge1xcbiAgdG9wOiAwO1xcbiAgYm9yZGVyLWJvdHRvbTogMDtcXG59XFxuLm51bUlucHV0V3JhcHBlciBzcGFuLmFycm93VXA6YWZ0ZXIge1xcbiAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci1yaWdodDogNHB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLWJvdHRvbTogNHB4IHNvbGlkIHJnYmEoNTcsNTcsNTcsMC42KTtcXG4gIHRvcDogMjYlO1xcbn1cXG4ubnVtSW5wdXRXcmFwcGVyIHNwYW4uYXJyb3dEb3duIHtcXG4gIHRvcDogNTAlO1xcbn1cXG4ubnVtSW5wdXRXcmFwcGVyIHNwYW4uYXJyb3dEb3duOmFmdGVyIHtcXG4gIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItcmlnaHQ6IDRweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci10b3A6IDRweCBzb2xpZCByZ2JhKDU3LDU3LDU3LDAuNik7XFxuICB0b3A6IDQwJTtcXG59XFxuLm51bUlucHV0V3JhcHBlciBzcGFuIHN2ZyB7XFxuICB3aWR0aDogaW5oZXJpdDtcXG4gIGhlaWdodDogYXV0bztcXG59XFxuLm51bUlucHV0V3JhcHBlciBzcGFuIHN2ZyBwYXRoIHtcXG4gIGZpbGw6IHJnYmEoMCwwLDAsMC41KTtcXG59XFxuLm51bUlucHV0V3JhcHBlcjpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuMDUpO1xcbn1cXG4ubnVtSW5wdXRXcmFwcGVyOmhvdmVyIHNwYW4ge1xcbiAgb3BhY2l0eTogMTtcXG59XFxuLmZsYXRwaWNrci1jdXJyZW50LW1vbnRoIHtcXG4gIGZvbnQtc2l6ZTogMTM1JTtcXG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcbiAgZm9udC13ZWlnaHQ6IDMwMDtcXG4gIGNvbG9yOiBpbmhlcml0O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgd2lkdGg6IDc1JTtcXG4gIGxlZnQ6IDEyLjUlO1xcbiAgcGFkZGluZzogNy40OHB4IDAgMCAwO1xcbiAgbGluZS1oZWlnaHQ6IDE7XFxuICBoZWlnaHQ6IDM0cHg7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMHB4LCAwcHgsIDBweCk7XFxuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMHB4LCAwcHgsIDBweCk7XFxufVxcbi5mbGF0cGlja3ItY3VycmVudC1tb250aCBzcGFuLmN1ci1tb250aCB7XFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICBjb2xvcjogaW5oZXJpdDtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIG1hcmdpbi1sZWZ0OiAwLjVjaDtcXG4gIHBhZGRpbmc6IDA7XFxufVxcbi5mbGF0cGlja3ItY3VycmVudC1tb250aCBzcGFuLmN1ci1tb250aDpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuMDUpO1xcbn1cXG4uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLm51bUlucHV0V3JhcHBlciB7XFxuICB3aWR0aDogNmNoO1xcbiAgd2lkdGg6IDdjaFxcXFwwO1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbn1cXG4uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLm51bUlucHV0V3JhcHBlciBzcGFuLmFycm93VXA6YWZ0ZXIge1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgwLDAsMCwwLjkpO1xcbn1cXG4uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLm51bUlucHV0V3JhcHBlciBzcGFuLmFycm93RG93bjphZnRlciB7XFxuICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsMCwwLDAuOSk7XFxufVxcbi5mbGF0cGlja3ItY3VycmVudC1tb250aCBpbnB1dC5jdXIteWVhciB7XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGNvbG9yOiBpbmhlcml0O1xcbiAgY3Vyc29yOiB0ZXh0O1xcbiAgcGFkZGluZzogMCAwIDAgMC41Y2g7XFxuICBtYXJnaW46IDA7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBmb250LXNpemU6IGluaGVyaXQ7XFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG4gIGZvbnQtd2VpZ2h0OiAzMDA7XFxuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcXG4gIGhlaWdodDogYXV0bztcXG4gIGJvcmRlcjogMDtcXG4gIGJvcmRlci1yYWRpdXM6IDA7XFxuICB2ZXJ0aWNhbC1hbGlnbjogaW5pdGlhbDtcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xcbiAgLW1vei1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XFxuICBhcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XFxufVxcbi5mbGF0cGlja3ItY3VycmVudC1tb250aCBpbnB1dC5jdXIteWVhcjpmb2N1cyB7XFxuICBvdXRsaW5lOiAwO1xcbn1cXG4uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggaW5wdXQuY3VyLXllYXJbZGlzYWJsZWRdLFxcbi5mbGF0cGlja3ItY3VycmVudC1tb250aCBpbnB1dC5jdXIteWVhcltkaXNhYmxlZF06aG92ZXIge1xcbiAgZm9udC1zaXplOiAxMDAlO1xcbiAgY29sb3I6IHJnYmEoMCwwLDAsMC41KTtcXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxufVxcbi5mbGF0cGlja3ItY3VycmVudC1tb250aCAuZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGhzIHtcXG4gIGFwcGVhcmFuY2U6IG1lbnVsaXN0O1xcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXI6IG5vbmU7XFxuICBib3JkZXItcmFkaXVzOiAwO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGNvbG9yOiBpbmhlcml0O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgZm9udC1zaXplOiBpbmhlcml0O1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XFxuICBmb250LXdlaWdodDogMzAwO1xcbiAgaGVpZ2h0OiBhdXRvO1xcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxuICBtYXJnaW46IC0xcHggMCAwIDA7XFxuICBvdXRsaW5lOiBub25lO1xcbiAgcGFkZGluZzogMCAwIDAgMC41Y2g7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB2ZXJ0aWNhbC1hbGlnbjogaW5pdGlhbDtcXG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbWVudWxpc3Q7XFxuICAtbW96LWFwcGVhcmFuY2U6IG1lbnVsaXN0O1xcbiAgd2lkdGg6IGF1dG87XFxufVxcbi5mbGF0cGlja3ItY3VycmVudC1tb250aCAuZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGhzOmZvY3VzLFxcbi5mbGF0cGlja3ItY3VycmVudC1tb250aCAuZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGhzOmFjdGl2ZSB7XFxuICBvdXRsaW5lOiBub25lO1xcbn1cXG4uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLmZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRoczpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuMDUpO1xcbn1cXG4uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLmZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRocyAuZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGgge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBvdXRsaW5lOiBub25lO1xcbiAgcGFkZGluZzogMDtcXG59XFxuLmZsYXRwaWNrci13ZWVrZGF5cyB7XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB3aWR0aDogMTAwJTtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLXdlYmtpdC1mbGV4O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgaGVpZ2h0OiAyOHB4O1xcbn1cXG4uZmxhdHBpY2tyLXdlZWtkYXlzIC5mbGF0cGlja3Itd2Vla2RheWNvbnRhaW5lciB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC13ZWJraXQtZmxleDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAtd2Via2l0LWZsZXg6IDE7XFxuICAgICAgLW1zLWZsZXg6IDE7XFxuICAgICAgICAgIGZsZXg6IDE7XFxufVxcbnNwYW4uZmxhdHBpY2tyLXdlZWtkYXkge1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgZm9udC1zaXplOiA5MCU7XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gIGNvbG9yOiByZ2JhKDAsMCwwLDAuNTQpO1xcbiAgbGluZS1oZWlnaHQ6IDE7XFxuICBtYXJnaW46IDA7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAtd2Via2l0LWZsZXg6IDE7XFxuICAgICAgLW1zLWZsZXg6IDE7XFxuICAgICAgICAgIGZsZXg6IDE7XFxuICBmb250LXdlaWdodDogYm9sZGVyO1xcbn1cXG4uZGF5Q29udGFpbmVyLFxcbi5mbGF0cGlja3Itd2Vla3Mge1xcbiAgcGFkZGluZzogMXB4IDAgMCAwO1xcbn1cXG4uZmxhdHBpY2tyLWRheXMge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLXdlYmtpdC1mbGV4O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtYWxpZ246IHN0YXJ0O1xcbiAgLXdlYmtpdC1hbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gICAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQ7XFxuICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcbiAgd2lkdGg6IDMwNy44NzVweDtcXG59XFxuLmZsYXRwaWNrci1kYXlzOmZvY3VzIHtcXG4gIG91dGxpbmU6IDA7XFxufVxcbi5kYXlDb250YWluZXIge1xcbiAgcGFkZGluZzogMDtcXG4gIG91dGxpbmU6IDA7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgd2lkdGg6IDMwNy44NzVweDtcXG4gIG1pbi13aWR0aDogMzA3Ljg3NXB4O1xcbiAgbWF4LXdpZHRoOiAzMDcuODc1cHg7XFxuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLXdlYmtpdC1mbGV4O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtZmxleC13cmFwOiB3cmFwO1xcbiAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XFxuICAtbXMtZmxleC13cmFwOiB3cmFwO1xcbiAgLW1zLWZsZXgtcGFjazoganVzdGlmeTtcXG4gIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XFxuICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDBweCwgMHB4LCAwcHgpO1xcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDBweCwgMHB4LCAwcHgpO1xcbiAgb3BhY2l0eTogMTtcXG59XFxuLmRheUNvbnRhaW5lciArIC5kYXlDb250YWluZXIge1xcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAtMXB4IDAgMCAjZTZlNmU2O1xcbiAgICAgICAgICBib3gtc2hhZG93OiAtMXB4IDAgMCAjZTZlNmU2O1xcbn1cXG4uZmxhdHBpY2tyLWRheSB7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItcmFkaXVzOiAxNTBweDtcXG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGNvbG9yOiAjMzkzOTM5O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIHdpZHRoOiAxNC4yODU3MTQzJTtcXG4gIC13ZWJraXQtZmxleC1iYXNpczogMTQuMjg1NzE0MyU7XFxuICAgICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDE0LjI4NTcxNDMlO1xcbiAgICAgICAgICBmbGV4LWJhc2lzOiAxNC4yODU3MTQzJTtcXG4gIG1heC13aWR0aDogMzlweDtcXG4gIGhlaWdodDogMzlweDtcXG4gIGxpbmUtaGVpZ2h0OiAzOXB4O1xcbiAgbWFyZ2luOiAwO1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbn1cXG4uZmxhdHBpY2tyLWRheS5pblJhbmdlLFxcbi5mbGF0cGlja3ItZGF5LnByZXZNb250aERheS5pblJhbmdlLFxcbi5mbGF0cGlja3ItZGF5Lm5leHRNb250aERheS5pblJhbmdlLFxcbi5mbGF0cGlja3ItZGF5LnRvZGF5LmluUmFuZ2UsXFxuLmZsYXRwaWNrci1kYXkucHJldk1vbnRoRGF5LnRvZGF5LmluUmFuZ2UsXFxuLmZsYXRwaWNrci1kYXkubmV4dE1vbnRoRGF5LnRvZGF5LmluUmFuZ2UsXFxuLmZsYXRwaWNrci1kYXk6aG92ZXIsXFxuLmZsYXRwaWNrci1kYXkucHJldk1vbnRoRGF5OmhvdmVyLFxcbi5mbGF0cGlja3ItZGF5Lm5leHRNb250aERheTpob3ZlcixcXG4uZmxhdHBpY2tyLWRheTpmb2N1cyxcXG4uZmxhdHBpY2tyLWRheS5wcmV2TW9udGhEYXk6Zm9jdXMsXFxuLmZsYXRwaWNrci1kYXkubmV4dE1vbnRoRGF5OmZvY3VzIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIG91dGxpbmU6IDA7XFxuICBiYWNrZ3JvdW5kOiAjZTZlNmU2O1xcbiAgYm9yZGVyLWNvbG9yOiAjZTZlNmU2O1xcbn1cXG4uZmxhdHBpY2tyLWRheS50b2RheSB7XFxuICBib3JkZXItY29sb3I6ICM5NTllYTk7XFxufVxcbi5mbGF0cGlja3ItZGF5LnRvZGF5OmhvdmVyLFxcbi5mbGF0cGlja3ItZGF5LnRvZGF5OmZvY3VzIHtcXG4gIGJvcmRlci1jb2xvcjogIzk1OWVhOTtcXG4gIGJhY2tncm91bmQ6ICM5NTllYTk7XFxuICBjb2xvcjogI2ZmZjtcXG59XFxuLmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQsXFxuLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZSxcXG4uZmxhdHBpY2tyLWRheS5lbmRSYW5nZSxcXG4uZmxhdHBpY2tyLWRheS5zZWxlY3RlZC5pblJhbmdlLFxcbi5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2UuaW5SYW5nZSxcXG4uZmxhdHBpY2tyLWRheS5lbmRSYW5nZS5pblJhbmdlLFxcbi5mbGF0cGlja3ItZGF5LnNlbGVjdGVkOmZvY3VzLFxcbi5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2U6Zm9jdXMsXFxuLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2U6Zm9jdXMsXFxuLmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQ6aG92ZXIsXFxuLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZTpob3ZlcixcXG4uZmxhdHBpY2tyLWRheS5lbmRSYW5nZTpob3ZlcixcXG4uZmxhdHBpY2tyLWRheS5zZWxlY3RlZC5wcmV2TW9udGhEYXksXFxuLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZS5wcmV2TW9udGhEYXksXFxuLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2UucHJldk1vbnRoRGF5LFxcbi5mbGF0cGlja3ItZGF5LnNlbGVjdGVkLm5leHRNb250aERheSxcXG4uZmxhdHBpY2tyLWRheS5zdGFydFJhbmdlLm5leHRNb250aERheSxcXG4uZmxhdHBpY2tyLWRheS5lbmRSYW5nZS5uZXh0TW9udGhEYXkge1xcbiAgYmFja2dyb3VuZDogIzU2OWZmNztcXG4gIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTtcXG4gICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcXG4gIGNvbG9yOiAjZmZmO1xcbiAgYm9yZGVyLWNvbG9yOiAjNTY5ZmY3O1xcbn1cXG4uZmxhdHBpY2tyLWRheS5zZWxlY3RlZC5zdGFydFJhbmdlLFxcbi5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2Uuc3RhcnRSYW5nZSxcXG4uZmxhdHBpY2tyLWRheS5lbmRSYW5nZS5zdGFydFJhbmdlIHtcXG4gIGJvcmRlci1yYWRpdXM6IDUwcHggMCAwIDUwcHg7XFxufVxcbi5mbGF0cGlja3ItZGF5LnNlbGVjdGVkLmVuZFJhbmdlLFxcbi5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2UuZW5kUmFuZ2UsXFxuLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2UuZW5kUmFuZ2Uge1xcbiAgYm9yZGVyLXJhZGl1czogMCA1MHB4IDUwcHggMDtcXG59XFxuLmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQuc3RhcnRSYW5nZSArIC5lbmRSYW5nZTpub3QoOm50aC1jaGlsZCg3bisxKSksXFxuLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZS5zdGFydFJhbmdlICsgLmVuZFJhbmdlOm5vdCg6bnRoLWNoaWxkKDduKzEpKSxcXG4uZmxhdHBpY2tyLWRheS5lbmRSYW5nZS5zdGFydFJhbmdlICsgLmVuZFJhbmdlOm5vdCg6bnRoLWNoaWxkKDduKzEpKSB7XFxuICAtd2Via2l0LWJveC1zaGFkb3c6IC0xMHB4IDAgMCAjNTY5ZmY3O1xcbiAgICAgICAgICBib3gtc2hhZG93OiAtMTBweCAwIDAgIzU2OWZmNztcXG59XFxuLmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQuc3RhcnRSYW5nZS5lbmRSYW5nZSxcXG4uZmxhdHBpY2tyLWRheS5zdGFydFJhbmdlLnN0YXJ0UmFuZ2UuZW5kUmFuZ2UsXFxuLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2Uuc3RhcnRSYW5nZS5lbmRSYW5nZSB7XFxuICBib3JkZXItcmFkaXVzOiA1MHB4O1xcbn1cXG4uZmxhdHBpY2tyLWRheS5pblJhbmdlIHtcXG4gIGJvcmRlci1yYWRpdXM6IDA7XFxuICAtd2Via2l0LWJveC1zaGFkb3c6IC01cHggMCAwICNlNmU2ZTYsIDVweCAwIDAgI2U2ZTZlNjtcXG4gICAgICAgICAgYm94LXNoYWRvdzogLTVweCAwIDAgI2U2ZTZlNiwgNXB4IDAgMCAjZTZlNmU2O1xcbn1cXG4uZmxhdHBpY2tyLWRheS5mbGF0cGlja3ItZGlzYWJsZWQsXFxuLmZsYXRwaWNrci1kYXkuZmxhdHBpY2tyLWRpc2FibGVkOmhvdmVyLFxcbi5mbGF0cGlja3ItZGF5LnByZXZNb250aERheSxcXG4uZmxhdHBpY2tyLWRheS5uZXh0TW9udGhEYXksXFxuLmZsYXRwaWNrci1kYXkubm90QWxsb3dlZCxcXG4uZmxhdHBpY2tyLWRheS5ub3RBbGxvd2VkLnByZXZNb250aERheSxcXG4uZmxhdHBpY2tyLWRheS5ub3RBbGxvd2VkLm5leHRNb250aERheSB7XFxuICBjb2xvcjogcmdiYSg1Nyw1Nyw1NywwLjMpO1xcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbn1cXG4uZmxhdHBpY2tyLWRheS5mbGF0cGlja3ItZGlzYWJsZWQsXFxuLmZsYXRwaWNrci1kYXkuZmxhdHBpY2tyLWRpc2FibGVkOmhvdmVyIHtcXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxuICBjb2xvcjogcmdiYSg1Nyw1Nyw1NywwLjEpO1xcbn1cXG4uZmxhdHBpY2tyLWRheS53ZWVrLnNlbGVjdGVkIHtcXG4gIGJvcmRlci1yYWRpdXM6IDA7XFxuICAtd2Via2l0LWJveC1zaGFkb3c6IC01cHggMCAwICM1NjlmZjcsIDVweCAwIDAgIzU2OWZmNztcXG4gICAgICAgICAgYm94LXNoYWRvdzogLTVweCAwIDAgIzU2OWZmNywgNXB4IDAgMCAjNTY5ZmY3O1xcbn1cXG4uZmxhdHBpY2tyLWRheS5oaWRkZW4ge1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbn1cXG4ucmFuZ2VNb2RlIC5mbGF0cGlja3ItZGF5IHtcXG4gIG1hcmdpbi10b3A6IDFweDtcXG59XFxuLmZsYXRwaWNrci13ZWVrd3JhcHBlciB7XFxuICBmbG9hdDogbGVmdDtcXG59XFxuLmZsYXRwaWNrci13ZWVrd3JhcHBlciAuZmxhdHBpY2tyLXdlZWtzIHtcXG4gIHBhZGRpbmc6IDAgMTJweDtcXG4gIC13ZWJraXQtYm94LXNoYWRvdzogMXB4IDAgMCAjZTZlNmU2O1xcbiAgICAgICAgICBib3gtc2hhZG93OiAxcHggMCAwICNlNmU2ZTY7XFxufVxcbi5mbGF0cGlja3Itd2Vla3dyYXBwZXIgLmZsYXRwaWNrci13ZWVrZGF5IHtcXG4gIGZsb2F0OiBub25lO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBsaW5lLWhlaWdodDogMjhweDtcXG59XFxuLmZsYXRwaWNrci13ZWVrd3JhcHBlciBzcGFuLmZsYXRwaWNrci1kYXksXFxuLmZsYXRwaWNrci13ZWVrd3JhcHBlciBzcGFuLmZsYXRwaWNrci1kYXk6aG92ZXIge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1heC13aWR0aDogbm9uZTtcXG4gIGNvbG9yOiByZ2JhKDU3LDU3LDU3LDAuMyk7XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIGJvcmRlcjogbm9uZTtcXG59XFxuLmZsYXRwaWNrci1pbm5lckNvbnRhaW5lciB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLXdlYmtpdC1mbGV4O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG59XFxuLmZsYXRwaWNrci1yQ29udGFpbmVyIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIHBhZGRpbmc6IDA7XFxuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcbi5mbGF0cGlja3ItdGltZSB7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBvdXRsaW5lOiAwO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBoZWlnaHQ6IDA7XFxuICBsaW5lLWhlaWdodDogNDBweDtcXG4gIG1heC1oZWlnaHQ6IDQwcHg7XFxuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxufVxcbi5mbGF0cGlja3ItdGltZTphZnRlciB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIGRpc3BsYXk6IHRhYmxlO1xcbiAgY2xlYXI6IGJvdGg7XFxufVxcbi5mbGF0cGlja3ItdGltZSAubnVtSW5wdXRXcmFwcGVyIHtcXG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAtd2Via2l0LWZsZXg6IDE7XFxuICAgICAgLW1zLWZsZXg6IDE7XFxuICAgICAgICAgIGZsZXg6IDE7XFxuICB3aWR0aDogNDAlO1xcbiAgaGVpZ2h0OiA0MHB4O1xcbiAgZmxvYXQ6IGxlZnQ7XFxufVxcbi5mbGF0cGlja3ItdGltZSAubnVtSW5wdXRXcmFwcGVyIHNwYW4uYXJyb3dVcDphZnRlciB7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiAjMzkzOTM5O1xcbn1cXG4uZmxhdHBpY2tyLXRpbWUgLm51bUlucHV0V3JhcHBlciBzcGFuLmFycm93RG93bjphZnRlciB7XFxuICBib3JkZXItdG9wLWNvbG9yOiAjMzkzOTM5O1xcbn1cXG4uZmxhdHBpY2tyLXRpbWUuaGFzU2Vjb25kcyAubnVtSW5wdXRXcmFwcGVyIHtcXG4gIHdpZHRoOiAyNiU7XFxufVxcbi5mbGF0cGlja3ItdGltZS50aW1lMjRociAubnVtSW5wdXRXcmFwcGVyIHtcXG4gIHdpZHRoOiA0OSU7XFxufVxcbi5mbGF0cGlja3ItdGltZSBpbnB1dCB7XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTtcXG4gICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcXG4gIGJvcmRlcjogMDtcXG4gIGJvcmRlci1yYWRpdXM6IDA7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBtYXJnaW46IDA7XFxuICBwYWRkaW5nOiAwO1xcbiAgaGVpZ2h0OiBpbmhlcml0O1xcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxuICBjb2xvcjogIzM5MzkzOTtcXG4gIGZvbnQtc2l6ZTogMTRweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xcbiAgLW1vei1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XFxuICBhcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XFxufVxcbi5mbGF0cGlja3ItdGltZSBpbnB1dC5mbGF0cGlja3ItaG91ciB7XFxuICBmb250LXdlaWdodDogYm9sZDtcXG59XFxuLmZsYXRwaWNrci10aW1lIGlucHV0LmZsYXRwaWNrci1taW51dGUsXFxuLmZsYXRwaWNrci10aW1lIGlucHV0LmZsYXRwaWNrci1zZWNvbmQge1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG59XFxuLmZsYXRwaWNrci10aW1lIGlucHV0OmZvY3VzIHtcXG4gIG91dGxpbmU6IDA7XFxuICBib3JkZXI6IDA7XFxufVxcbi5mbGF0cGlja3ItdGltZSAuZmxhdHBpY2tyLXRpbWUtc2VwYXJhdG9yLFxcbi5mbGF0cGlja3ItdGltZSAuZmxhdHBpY2tyLWFtLXBtIHtcXG4gIGhlaWdodDogaW5oZXJpdDtcXG4gIGZsb2F0OiBsZWZ0O1xcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxuICBjb2xvcjogIzM5MzkzOTtcXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgd2lkdGg6IDIlO1xcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xcbiAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIC13ZWJraXQtYWxpZ24tc2VsZjogY2VudGVyO1xcbiAgICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xcbn1cXG4uZmxhdHBpY2tyLXRpbWUgLmZsYXRwaWNrci1hbS1wbSB7XFxuICBvdXRsaW5lOiAwO1xcbiAgd2lkdGg6IDE4JTtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxufVxcbi5mbGF0cGlja3ItdGltZSBpbnB1dDpob3ZlcixcXG4uZmxhdHBpY2tyLXRpbWUgLmZsYXRwaWNrci1hbS1wbTpob3ZlcixcXG4uZmxhdHBpY2tyLXRpbWUgaW5wdXQ6Zm9jdXMsXFxuLmZsYXRwaWNrci10aW1lIC5mbGF0cGlja3ItYW0tcG06Zm9jdXMge1xcbiAgYmFja2dyb3VuZDogI2VlZTtcXG59XFxuLmZsYXRwaWNrci1pbnB1dFtyZWFkb25seV0ge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG5ALXdlYmtpdC1rZXlmcmFtZXMgZnBGYWRlSW5Eb3duIHtcXG4gIGZyb20ge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwcHgsIDApO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwcHgsIDApO1xcbiAgfVxcbiAgdG8ge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyBmcEZhZGVJbkRvd24ge1xcbiAgZnJvbSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMjBweCwgMCk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMjBweCwgMCk7XFxuICB9XFxuICB0byB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xcbiAgfVxcbn1cXG5cIiIsIm1vZHVsZS5leHBvcnRzID0gXCIvKlxcbiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEJCakdyaWRFeFdpZGdldCBwbHVnaW4uXFxuKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XFxuKlxcbiogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcXG4qIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxcbiovXFxuXFxuLmd3LWFsaWdubWVudC1jZWxsLXJpZ2h0LFxcbi5ndy1hbGlnbm1lbnQtY2VsbC1yaWdodCAuYWctY2VsbC12YWx1ZSB7XFxuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xcbiAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7XFxuICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7XFxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgICAgIC1tcy1mbGV4OiAxO1xcbiAgICAgICAgICAgIGZsZXg6IDE7XFxufVxcblxcbi5ndy1hbGlnbm1lbnQtY2VsbC1jZW50ZXIsXFxuLmd3LWFsaWdubWVudC1jZWxsLWNlbnRlciAuYWctY2VsbC12YWx1ZSB7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgICAgLW1zLWZsZXg6IDE7XFxuICAgICAgICAgICAgZmxleDogMTtcXG59XFxuXFxuLmd3LWFsaWdubWVudC1oZWFkZXItcmlnaHQgLmFnLWhlYWRlci1jZWxsLWxhYmVsIHtcXG4gICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsO1xcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHJldmVyc2U7XFxuICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsgICAgXFxufVxcblxcbi5ndy1hbGlnbm1lbnQtaGVhZGVyLWNlbnRlciAuYWctaGVhZGVyLWNlbGwtbGFiZWwge1xcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxufVxcblxcbi5ndy1hbGlnbm1lbnQtaGVhZGVyLXJpZ2h0IC5hZy1jZWxsLWxhYmVsLWNvbnRhaW5lcixcXG4uZ3ctYWxpZ25tZW50LWhlYWRlci1jZW50ZXIgLmFnLWNlbGwtbGFiZWwtY29udGFpbmVyIHtcXG4gICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsO1xcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XFxufVwiIiwiLypcblx0TUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcblx0QXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cblxudmFyIHN0eWxlc0luRG9tID0ge307XG5cbnZhclx0bWVtb2l6ZSA9IGZ1bmN0aW9uIChmbikge1xuXHR2YXIgbWVtbztcblxuXHRyZXR1cm4gZnVuY3Rpb24gKCkge1xuXHRcdGlmICh0eXBlb2YgbWVtbyA9PT0gXCJ1bmRlZmluZWRcIikgbWVtbyA9IGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0cmV0dXJuIG1lbW87XG5cdH07XG59O1xuXG52YXIgaXNPbGRJRSA9IG1lbW9pemUoZnVuY3Rpb24gKCkge1xuXHQvLyBUZXN0IGZvciBJRSA8PSA5IGFzIHByb3Bvc2VkIGJ5IEJyb3dzZXJoYWNrc1xuXHQvLyBAc2VlIGh0dHA6Ly9icm93c2VyaGFja3MuY29tLyNoYWNrLWU3MWQ4NjkyZjY1MzM0MTczZmVlNzE1YzIyMmNiODA1XG5cdC8vIFRlc3RzIGZvciBleGlzdGVuY2Ugb2Ygc3RhbmRhcmQgZ2xvYmFscyBpcyB0byBhbGxvdyBzdHlsZS1sb2FkZXJcblx0Ly8gdG8gb3BlcmF0ZSBjb3JyZWN0bHkgaW50byBub24tc3RhbmRhcmQgZW52aXJvbm1lbnRzXG5cdC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2stY29udHJpYi9zdHlsZS1sb2FkZXIvaXNzdWVzLzE3N1xuXHRyZXR1cm4gd2luZG93ICYmIGRvY3VtZW50ICYmIGRvY3VtZW50LmFsbCAmJiAhd2luZG93LmF0b2I7XG59KTtcblxudmFyIGdldFRhcmdldCA9IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0KTtcbn07XG5cbnZhciBnZXRFbGVtZW50ID0gKGZ1bmN0aW9uIChmbikge1xuXHR2YXIgbWVtbyA9IHt9O1xuXG5cdHJldHVybiBmdW5jdGlvbih0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBwYXNzaW5nIGZ1bmN0aW9uIGluIG9wdGlvbnMsIHRoZW4gdXNlIGl0IGZvciByZXNvbHZlIFwiaGVhZFwiIGVsZW1lbnQuXG4gICAgICAgICAgICAgICAgLy8gVXNlZnVsIGZvciBTaGFkb3cgUm9vdCBzdHlsZSBpLmVcbiAgICAgICAgICAgICAgICAvLyB7XG4gICAgICAgICAgICAgICAgLy8gICBpbnNlcnRJbnRvOiBmdW5jdGlvbiAoKSB7IHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2Zvb1wiKS5zaGFkb3dSb290IH1cbiAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0YXJnZXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBtZW1vW3RhcmdldF0gPT09IFwidW5kZWZpbmVkXCIpIHtcblx0XHRcdHZhciBzdHlsZVRhcmdldCA9IGdldFRhcmdldC5jYWxsKHRoaXMsIHRhcmdldCk7XG5cdFx0XHQvLyBTcGVjaWFsIGNhc2UgdG8gcmV0dXJuIGhlYWQgb2YgaWZyYW1lIGluc3RlYWQgb2YgaWZyYW1lIGl0c2VsZlxuXHRcdFx0aWYgKHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCAmJiBzdHlsZVRhcmdldCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCkge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdC8vIFRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgYWNjZXNzIHRvIGlmcmFtZSBpcyBibG9ja2VkXG5cdFx0XHRcdFx0Ly8gZHVlIHRvIGNyb3NzLW9yaWdpbiByZXN0cmljdGlvbnNcblx0XHRcdFx0XHRzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuXHRcdFx0XHR9IGNhdGNoKGUpIHtcblx0XHRcdFx0XHRzdHlsZVRhcmdldCA9IG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuXHRcdH1cblx0XHRyZXR1cm4gbWVtb1t0YXJnZXRdXG5cdH07XG59KSgpO1xuXG52YXIgc2luZ2xldG9uID0gbnVsbDtcbnZhclx0c2luZ2xldG9uQ291bnRlciA9IDA7XG52YXJcdHN0eWxlc0luc2VydGVkQXRUb3AgPSBbXTtcblxudmFyXHRmaXhVcmxzID0gcmVxdWlyZShcIi4vdXJsc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihsaXN0LCBvcHRpb25zKSB7XG5cdGlmICh0eXBlb2YgREVCVUcgIT09IFwidW5kZWZpbmVkXCIgJiYgREVCVUcpIHtcblx0XHRpZiAodHlwZW9mIGRvY3VtZW50ICE9PSBcIm9iamVjdFwiKSB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgc3R5bGUtbG9hZGVyIGNhbm5vdCBiZSB1c2VkIGluIGEgbm9uLWJyb3dzZXIgZW52aXJvbm1lbnRcIik7XG5cdH1cblxuXHRvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuXHRvcHRpb25zLmF0dHJzID0gdHlwZW9mIG9wdGlvbnMuYXR0cnMgPT09IFwib2JqZWN0XCIgPyBvcHRpb25zLmF0dHJzIDoge307XG5cblx0Ly8gRm9yY2Ugc2luZ2xlLXRhZyBzb2x1dGlvbiBvbiBJRTYtOSwgd2hpY2ggaGFzIGEgaGFyZCBsaW1pdCBvbiB0aGUgIyBvZiA8c3R5bGU+XG5cdC8vIHRhZ3MgaXQgd2lsbCBhbGxvdyBvbiBhIHBhZ2Vcblx0aWYgKCFvcHRpb25zLnNpbmdsZXRvbiAmJiB0eXBlb2Ygb3B0aW9ucy5zaW5nbGV0b24gIT09IFwiYm9vbGVhblwiKSBvcHRpb25zLnNpbmdsZXRvbiA9IGlzT2xkSUUoKTtcblxuXHQvLyBCeSBkZWZhdWx0LCBhZGQgPHN0eWxlPiB0YWdzIHRvIHRoZSA8aGVhZD4gZWxlbWVudFxuICAgICAgICBpZiAoIW9wdGlvbnMuaW5zZXJ0SW50bykgb3B0aW9ucy5pbnNlcnRJbnRvID0gXCJoZWFkXCI7XG5cblx0Ly8gQnkgZGVmYXVsdCwgYWRkIDxzdHlsZT4gdGFncyB0byB0aGUgYm90dG9tIG9mIHRoZSB0YXJnZXRcblx0aWYgKCFvcHRpb25zLmluc2VydEF0KSBvcHRpb25zLmluc2VydEF0ID0gXCJib3R0b21cIjtcblxuXHR2YXIgc3R5bGVzID0gbGlzdFRvU3R5bGVzKGxpc3QsIG9wdGlvbnMpO1xuXG5cdGFkZFN0eWxlc1RvRG9tKHN0eWxlcywgb3B0aW9ucyk7XG5cblx0cmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZSAobmV3TGlzdCkge1xuXHRcdHZhciBtYXlSZW1vdmUgPSBbXTtcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgaXRlbSA9IHN0eWxlc1tpXTtcblx0XHRcdHZhciBkb21TdHlsZSA9IHN0eWxlc0luRG9tW2l0ZW0uaWRdO1xuXG5cdFx0XHRkb21TdHlsZS5yZWZzLS07XG5cdFx0XHRtYXlSZW1vdmUucHVzaChkb21TdHlsZSk7XG5cdFx0fVxuXG5cdFx0aWYobmV3TGlzdCkge1xuXHRcdFx0dmFyIG5ld1N0eWxlcyA9IGxpc3RUb1N0eWxlcyhuZXdMaXN0LCBvcHRpb25zKTtcblx0XHRcdGFkZFN0eWxlc1RvRG9tKG5ld1N0eWxlcywgb3B0aW9ucyk7XG5cdFx0fVxuXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBtYXlSZW1vdmUubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBkb21TdHlsZSA9IG1heVJlbW92ZVtpXTtcblxuXHRcdFx0aWYoZG9tU3R5bGUucmVmcyA9PT0gMCkge1xuXHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGRvbVN0eWxlLnBhcnRzLmxlbmd0aDsgaisrKSBkb21TdHlsZS5wYXJ0c1tqXSgpO1xuXG5cdFx0XHRcdGRlbGV0ZSBzdHlsZXNJbkRvbVtkb21TdHlsZS5pZF07XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xufTtcblxuZnVuY3Rpb24gYWRkU3R5bGVzVG9Eb20gKHN0eWxlcywgb3B0aW9ucykge1xuXHRmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5sZW5ndGg7IGkrKykge1xuXHRcdHZhciBpdGVtID0gc3R5bGVzW2ldO1xuXHRcdHZhciBkb21TdHlsZSA9IHN0eWxlc0luRG9tW2l0ZW0uaWRdO1xuXG5cdFx0aWYoZG9tU3R5bGUpIHtcblx0XHRcdGRvbVN0eWxlLnJlZnMrKztcblxuXHRcdFx0Zm9yKHZhciBqID0gMDsgaiA8IGRvbVN0eWxlLnBhcnRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdGRvbVN0eWxlLnBhcnRzW2pdKGl0ZW0ucGFydHNbal0pO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3IoOyBqIDwgaXRlbS5wYXJ0cy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRkb21TdHlsZS5wYXJ0cy5wdXNoKGFkZFN0eWxlKGl0ZW0ucGFydHNbal0sIG9wdGlvbnMpKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0dmFyIHBhcnRzID0gW107XG5cblx0XHRcdGZvcih2YXIgaiA9IDA7IGogPCBpdGVtLnBhcnRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdHBhcnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tqXSwgb3B0aW9ucykpO1xuXHRcdFx0fVxuXG5cdFx0XHRzdHlsZXNJbkRvbVtpdGVtLmlkXSA9IHtpZDogaXRlbS5pZCwgcmVmczogMSwgcGFydHM6IHBhcnRzfTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gbGlzdFRvU3R5bGVzIChsaXN0LCBvcHRpb25zKSB7XG5cdHZhciBzdHlsZXMgPSBbXTtcblx0dmFyIG5ld1N0eWxlcyA9IHt9O1xuXG5cdGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdHZhciBpdGVtID0gbGlzdFtpXTtcblx0XHR2YXIgaWQgPSBvcHRpb25zLmJhc2UgPyBpdGVtWzBdICsgb3B0aW9ucy5iYXNlIDogaXRlbVswXTtcblx0XHR2YXIgY3NzID0gaXRlbVsxXTtcblx0XHR2YXIgbWVkaWEgPSBpdGVtWzJdO1xuXHRcdHZhciBzb3VyY2VNYXAgPSBpdGVtWzNdO1xuXHRcdHZhciBwYXJ0ID0ge2NzczogY3NzLCBtZWRpYTogbWVkaWEsIHNvdXJjZU1hcDogc291cmNlTWFwfTtcblxuXHRcdGlmKCFuZXdTdHlsZXNbaWRdKSBzdHlsZXMucHVzaChuZXdTdHlsZXNbaWRdID0ge2lkOiBpZCwgcGFydHM6IFtwYXJ0XX0pO1xuXHRcdGVsc2UgbmV3U3R5bGVzW2lkXS5wYXJ0cy5wdXNoKHBhcnQpO1xuXHR9XG5cblx0cmV0dXJuIHN0eWxlcztcbn1cblxuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50IChvcHRpb25zLCBzdHlsZSkge1xuXHR2YXIgdGFyZ2V0ID0gZ2V0RWxlbWVudChvcHRpb25zLmluc2VydEludG8pXG5cblx0aWYgKCF0YXJnZXQpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydEludG8nIHBhcmFtZXRlciBpcyBpbnZhbGlkLlwiKTtcblx0fVxuXG5cdHZhciBsYXN0U3R5bGVFbGVtZW50SW5zZXJ0ZWRBdFRvcCA9IHN0eWxlc0luc2VydGVkQXRUb3Bbc3R5bGVzSW5zZXJ0ZWRBdFRvcC5sZW5ndGggLSAxXTtcblxuXHRpZiAob3B0aW9ucy5pbnNlcnRBdCA9PT0gXCJ0b3BcIikge1xuXHRcdGlmICghbGFzdFN0eWxlRWxlbWVudEluc2VydGVkQXRUb3ApIHtcblx0XHRcdHRhcmdldC5pbnNlcnRCZWZvcmUoc3R5bGUsIHRhcmdldC5maXJzdENoaWxkKTtcblx0XHR9IGVsc2UgaWYgKGxhc3RTdHlsZUVsZW1lbnRJbnNlcnRlZEF0VG9wLm5leHRTaWJsaW5nKSB7XG5cdFx0XHR0YXJnZXQuaW5zZXJ0QmVmb3JlKHN0eWxlLCBsYXN0U3R5bGVFbGVtZW50SW5zZXJ0ZWRBdFRvcC5uZXh0U2libGluZyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG5cdFx0fVxuXHRcdHN0eWxlc0luc2VydGVkQXRUb3AucHVzaChzdHlsZSk7XG5cdH0gZWxzZSBpZiAob3B0aW9ucy5pbnNlcnRBdCA9PT0gXCJib3R0b21cIikge1xuXHRcdHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG5cdH0gZWxzZSBpZiAodHlwZW9mIG9wdGlvbnMuaW5zZXJ0QXQgPT09IFwib2JqZWN0XCIgJiYgb3B0aW9ucy5pbnNlcnRBdC5iZWZvcmUpIHtcblx0XHR2YXIgbmV4dFNpYmxpbmcgPSBnZXRFbGVtZW50KG9wdGlvbnMuaW5zZXJ0SW50byArIFwiIFwiICsgb3B0aW9ucy5pbnNlcnRBdC5iZWZvcmUpO1xuXHRcdHRhcmdldC5pbnNlcnRCZWZvcmUoc3R5bGUsIG5leHRTaWJsaW5nKTtcblx0fSBlbHNlIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJbU3R5bGUgTG9hZGVyXVxcblxcbiBJbnZhbGlkIHZhbHVlIGZvciBwYXJhbWV0ZXIgJ2luc2VydEF0JyAoJ29wdGlvbnMuaW5zZXJ0QXQnKSBmb3VuZC5cXG4gTXVzdCBiZSAndG9wJywgJ2JvdHRvbScsIG9yIE9iamVjdC5cXG4gKGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrLWNvbnRyaWIvc3R5bGUtbG9hZGVyI2luc2VydGF0KVxcblwiKTtcblx0fVxufVxuXG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQgKHN0eWxlKSB7XG5cdGlmIChzdHlsZS5wYXJlbnROb2RlID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG5cdHN0eWxlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGUpO1xuXG5cdHZhciBpZHggPSBzdHlsZXNJbnNlcnRlZEF0VG9wLmluZGV4T2Yoc3R5bGUpO1xuXHRpZihpZHggPj0gMCkge1xuXHRcdHN0eWxlc0luc2VydGVkQXRUb3Auc3BsaWNlKGlkeCwgMSk7XG5cdH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlU3R5bGVFbGVtZW50IChvcHRpb25zKSB7XG5cdHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcblxuXHRvcHRpb25zLmF0dHJzLnR5cGUgPSBcInRleHQvY3NzXCI7XG5cblx0YWRkQXR0cnMoc3R5bGUsIG9wdGlvbnMuYXR0cnMpO1xuXHRpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucywgc3R5bGUpO1xuXG5cdHJldHVybiBzdHlsZTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlTGlua0VsZW1lbnQgKG9wdGlvbnMpIHtcblx0dmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtcblxuXHRvcHRpb25zLmF0dHJzLnR5cGUgPSBcInRleHQvY3NzXCI7XG5cdG9wdGlvbnMuYXR0cnMucmVsID0gXCJzdHlsZXNoZWV0XCI7XG5cblx0YWRkQXR0cnMobGluaywgb3B0aW9ucy5hdHRycyk7XG5cdGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zLCBsaW5rKTtcblxuXHRyZXR1cm4gbGluaztcbn1cblxuZnVuY3Rpb24gYWRkQXR0cnMgKGVsLCBhdHRycykge1xuXHRPYmplY3Qua2V5cyhhdHRycykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG5cdFx0ZWwuc2V0QXR0cmlidXRlKGtleSwgYXR0cnNba2V5XSk7XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBhZGRTdHlsZSAob2JqLCBvcHRpb25zKSB7XG5cdHZhciBzdHlsZSwgdXBkYXRlLCByZW1vdmUsIHJlc3VsdDtcblxuXHQvLyBJZiBhIHRyYW5zZm9ybSBmdW5jdGlvbiB3YXMgZGVmaW5lZCwgcnVuIGl0IG9uIHRoZSBjc3Ncblx0aWYgKG9wdGlvbnMudHJhbnNmb3JtICYmIG9iai5jc3MpIHtcblx0ICAgIHJlc3VsdCA9IG9wdGlvbnMudHJhbnNmb3JtKG9iai5jc3MpO1xuXG5cdCAgICBpZiAocmVzdWx0KSB7XG5cdCAgICBcdC8vIElmIHRyYW5zZm9ybSByZXR1cm5zIGEgdmFsdWUsIHVzZSB0aGF0IGluc3RlYWQgb2YgdGhlIG9yaWdpbmFsIGNzcy5cblx0ICAgIFx0Ly8gVGhpcyBhbGxvd3MgcnVubmluZyBydW50aW1lIHRyYW5zZm9ybWF0aW9ucyBvbiB0aGUgY3NzLlxuXHQgICAgXHRvYmouY3NzID0gcmVzdWx0O1xuXHQgICAgfSBlbHNlIHtcblx0ICAgIFx0Ly8gSWYgdGhlIHRyYW5zZm9ybSBmdW5jdGlvbiByZXR1cm5zIGEgZmFsc3kgdmFsdWUsIGRvbid0IGFkZCB0aGlzIGNzcy5cblx0ICAgIFx0Ly8gVGhpcyBhbGxvd3MgY29uZGl0aW9uYWwgbG9hZGluZyBvZiBjc3Ncblx0ICAgIFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xuXHQgICAgXHRcdC8vIG5vb3Bcblx0ICAgIFx0fTtcblx0ICAgIH1cblx0fVxuXG5cdGlmIChvcHRpb25zLnNpbmdsZXRvbikge1xuXHRcdHZhciBzdHlsZUluZGV4ID0gc2luZ2xldG9uQ291bnRlcisrO1xuXG5cdFx0c3R5bGUgPSBzaW5nbGV0b24gfHwgKHNpbmdsZXRvbiA9IGNyZWF0ZVN0eWxlRWxlbWVudChvcHRpb25zKSk7XG5cblx0XHR1cGRhdGUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGUsIHN0eWxlSW5kZXgsIGZhbHNlKTtcblx0XHRyZW1vdmUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGUsIHN0eWxlSW5kZXgsIHRydWUpO1xuXG5cdH0gZWxzZSBpZiAoXG5cdFx0b2JqLnNvdXJjZU1hcCAmJlxuXHRcdHR5cGVvZiBVUkwgPT09IFwiZnVuY3Rpb25cIiAmJlxuXHRcdHR5cGVvZiBVUkwuY3JlYXRlT2JqZWN0VVJMID09PSBcImZ1bmN0aW9uXCIgJiZcblx0XHR0eXBlb2YgVVJMLnJldm9rZU9iamVjdFVSTCA9PT0gXCJmdW5jdGlvblwiICYmXG5cdFx0dHlwZW9mIEJsb2IgPT09IFwiZnVuY3Rpb25cIiAmJlxuXHRcdHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCJcblx0KSB7XG5cdFx0c3R5bGUgPSBjcmVhdGVMaW5rRWxlbWVudChvcHRpb25zKTtcblx0XHR1cGRhdGUgPSB1cGRhdGVMaW5rLmJpbmQobnVsbCwgc3R5bGUsIG9wdGlvbnMpO1xuXHRcdHJlbW92ZSA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZSk7XG5cblx0XHRcdGlmKHN0eWxlLmhyZWYpIFVSTC5yZXZva2VPYmplY3RVUkwoc3R5bGUuaHJlZik7XG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHRzdHlsZSA9IGNyZWF0ZVN0eWxlRWxlbWVudChvcHRpb25zKTtcblx0XHR1cGRhdGUgPSBhcHBseVRvVGFnLmJpbmQobnVsbCwgc3R5bGUpO1xuXHRcdHJlbW92ZSA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZSk7XG5cdFx0fTtcblx0fVxuXG5cdHVwZGF0ZShvYmopO1xuXG5cdHJldHVybiBmdW5jdGlvbiB1cGRhdGVTdHlsZSAobmV3T2JqKSB7XG5cdFx0aWYgKG5ld09iaikge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRuZXdPYmouY3NzID09PSBvYmouY3NzICYmXG5cdFx0XHRcdG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmXG5cdFx0XHRcdG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXBcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdHVwZGF0ZShvYmogPSBuZXdPYmopO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZW1vdmUoKTtcblx0XHR9XG5cdH07XG59XG5cbnZhciByZXBsYWNlVGV4dCA9IChmdW5jdGlvbiAoKSB7XG5cdHZhciB0ZXh0U3RvcmUgPSBbXTtcblxuXHRyZXR1cm4gZnVuY3Rpb24gKGluZGV4LCByZXBsYWNlbWVudCkge1xuXHRcdHRleHRTdG9yZVtpbmRleF0gPSByZXBsYWNlbWVudDtcblxuXHRcdHJldHVybiB0ZXh0U3RvcmUuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcbicpO1xuXHR9O1xufSkoKTtcblxuZnVuY3Rpb24gYXBwbHlUb1NpbmdsZXRvblRhZyAoc3R5bGUsIGluZGV4LCByZW1vdmUsIG9iaikge1xuXHR2YXIgY3NzID0gcmVtb3ZlID8gXCJcIiA6IG9iai5jc3M7XG5cblx0aWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcblx0XHRzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSByZXBsYWNlVGV4dChpbmRleCwgY3NzKTtcblx0fSBlbHNlIHtcblx0XHR2YXIgY3NzTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcyk7XG5cdFx0dmFyIGNoaWxkTm9kZXMgPSBzdHlsZS5jaGlsZE5vZGVzO1xuXG5cdFx0aWYgKGNoaWxkTm9kZXNbaW5kZXhdKSBzdHlsZS5yZW1vdmVDaGlsZChjaGlsZE5vZGVzW2luZGV4XSk7XG5cblx0XHRpZiAoY2hpbGROb2Rlcy5sZW5ndGgpIHtcblx0XHRcdHN0eWxlLmluc2VydEJlZm9yZShjc3NOb2RlLCBjaGlsZE5vZGVzW2luZGV4XSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN0eWxlLmFwcGVuZENoaWxkKGNzc05vZGUpO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBhcHBseVRvVGFnIChzdHlsZSwgb2JqKSB7XG5cdHZhciBjc3MgPSBvYmouY3NzO1xuXHR2YXIgbWVkaWEgPSBvYmoubWVkaWE7XG5cblx0aWYobWVkaWEpIHtcblx0XHRzdHlsZS5zZXRBdHRyaWJ1dGUoXCJtZWRpYVwiLCBtZWRpYSlcblx0fVxuXG5cdGlmKHN0eWxlLnN0eWxlU2hlZXQpIHtcblx0XHRzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG5cdH0gZWxzZSB7XG5cdFx0d2hpbGUoc3R5bGUuZmlyc3RDaGlsZCkge1xuXHRcdFx0c3R5bGUucmVtb3ZlQ2hpbGQoc3R5bGUuZmlyc3RDaGlsZCk7XG5cdFx0fVxuXG5cdFx0c3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG5cdH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlTGluayAobGluaywgb3B0aW9ucywgb2JqKSB7XG5cdHZhciBjc3MgPSBvYmouY3NzO1xuXHR2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcblxuXHQvKlxuXHRcdElmIGNvbnZlcnRUb0Fic29sdXRlVXJscyBpc24ndCBkZWZpbmVkLCBidXQgc291cmNlbWFwcyBhcmUgZW5hYmxlZFxuXHRcdGFuZCB0aGVyZSBpcyBubyBwdWJsaWNQYXRoIGRlZmluZWQgdGhlbiBsZXRzIHR1cm4gY29udmVydFRvQWJzb2x1dGVVcmxzXG5cdFx0b24gYnkgZGVmYXVsdC4gIE90aGVyd2lzZSBkZWZhdWx0IHRvIHRoZSBjb252ZXJ0VG9BYnNvbHV0ZVVybHMgb3B0aW9uXG5cdFx0ZGlyZWN0bHlcblx0Ki9cblx0dmFyIGF1dG9GaXhVcmxzID0gb3B0aW9ucy5jb252ZXJ0VG9BYnNvbHV0ZVVybHMgPT09IHVuZGVmaW5lZCAmJiBzb3VyY2VNYXA7XG5cblx0aWYgKG9wdGlvbnMuY29udmVydFRvQWJzb2x1dGVVcmxzIHx8IGF1dG9GaXhVcmxzKSB7XG5cdFx0Y3NzID0gZml4VXJscyhjc3MpO1xuXHR9XG5cblx0aWYgKHNvdXJjZU1hcCkge1xuXHRcdC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI2NjAzODc1XG5cdFx0Y3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIiArIGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSkgKyBcIiAqL1wiO1xuXHR9XG5cblx0dmFyIGJsb2IgPSBuZXcgQmxvYihbY3NzXSwgeyB0eXBlOiBcInRleHQvY3NzXCIgfSk7XG5cblx0dmFyIG9sZFNyYyA9IGxpbmsuaHJlZjtcblxuXHRsaW5rLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuXG5cdGlmKG9sZFNyYykgVVJMLnJldm9rZU9iamVjdFVSTChvbGRTcmMpO1xufVxuIiwiXG4vKipcbiAqIFdoZW4gc291cmNlIG1hcHMgYXJlIGVuYWJsZWQsIGBzdHlsZS1sb2FkZXJgIHVzZXMgYSBsaW5rIGVsZW1lbnQgd2l0aCBhIGRhdGEtdXJpIHRvXG4gKiBlbWJlZCB0aGUgY3NzIG9uIHRoZSBwYWdlLiBUaGlzIGJyZWFrcyBhbGwgcmVsYXRpdmUgdXJscyBiZWNhdXNlIG5vdyB0aGV5IGFyZSByZWxhdGl2ZSB0byBhXG4gKiBidW5kbGUgaW5zdGVhZCBvZiB0aGUgY3VycmVudCBwYWdlLlxuICpcbiAqIE9uZSBzb2x1dGlvbiBpcyB0byBvbmx5IHVzZSBmdWxsIHVybHMsIGJ1dCB0aGF0IG1heSBiZSBpbXBvc3NpYmxlLlxuICpcbiAqIEluc3RlYWQsIHRoaXMgZnVuY3Rpb24gXCJmaXhlc1wiIHRoZSByZWxhdGl2ZSB1cmxzIHRvIGJlIGFic29sdXRlIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBwYWdlIGxvY2F0aW9uLlxuICpcbiAqIEEgcnVkaW1lbnRhcnkgdGVzdCBzdWl0ZSBpcyBsb2NhdGVkIGF0IGB0ZXN0L2ZpeFVybHMuanNgIGFuZCBjYW4gYmUgcnVuIHZpYSB0aGUgYG5wbSB0ZXN0YCBjb21tYW5kLlxuICpcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjc3MpIHtcbiAgLy8gZ2V0IGN1cnJlbnQgbG9jYXRpb25cbiAgdmFyIGxvY2F0aW9uID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB3aW5kb3cubG9jYXRpb247XG5cbiAgaWYgKCFsb2NhdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihcImZpeFVybHMgcmVxdWlyZXMgd2luZG93LmxvY2F0aW9uXCIpO1xuICB9XG5cblx0Ly8gYmxhbmsgb3IgbnVsbD9cblx0aWYgKCFjc3MgfHwgdHlwZW9mIGNzcyAhPT0gXCJzdHJpbmdcIikge1xuXHQgIHJldHVybiBjc3M7XG4gIH1cblxuICB2YXIgYmFzZVVybCA9IGxvY2F0aW9uLnByb3RvY29sICsgXCIvL1wiICsgbG9jYXRpb24uaG9zdDtcbiAgdmFyIGN1cnJlbnREaXIgPSBiYXNlVXJsICsgbG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvXFwvW15cXC9dKiQvLCBcIi9cIik7XG5cblx0Ly8gY29udmVydCBlYWNoIHVybCguLi4pXG5cdC8qXG5cdFRoaXMgcmVndWxhciBleHByZXNzaW9uIGlzIGp1c3QgYSB3YXkgdG8gcmVjdXJzaXZlbHkgbWF0Y2ggYnJhY2tldHMgd2l0aGluXG5cdGEgc3RyaW5nLlxuXG5cdCAvdXJsXFxzKlxcKCAgPSBNYXRjaCBvbiB0aGUgd29yZCBcInVybFwiIHdpdGggYW55IHdoaXRlc3BhY2UgYWZ0ZXIgaXQgYW5kIHRoZW4gYSBwYXJlbnNcblx0ICAgKCAgPSBTdGFydCBhIGNhcHR1cmluZyBncm91cFxuXHQgICAgICg/OiAgPSBTdGFydCBhIG5vbi1jYXB0dXJpbmcgZ3JvdXBcblx0ICAgICAgICAgW14pKF0gID0gTWF0Y2ggYW55dGhpbmcgdGhhdCBpc24ndCBhIHBhcmVudGhlc2VzXG5cdCAgICAgICAgIHwgID0gT1Jcblx0ICAgICAgICAgXFwoICA9IE1hdGNoIGEgc3RhcnQgcGFyZW50aGVzZXNcblx0ICAgICAgICAgICAgICg/OiAgPSBTdGFydCBhbm90aGVyIG5vbi1jYXB0dXJpbmcgZ3JvdXBzXG5cdCAgICAgICAgICAgICAgICAgW14pKF0rICA9IE1hdGNoIGFueXRoaW5nIHRoYXQgaXNuJ3QgYSBwYXJlbnRoZXNlc1xuXHQgICAgICAgICAgICAgICAgIHwgID0gT1Jcblx0ICAgICAgICAgICAgICAgICBcXCggID0gTWF0Y2ggYSBzdGFydCBwYXJlbnRoZXNlc1xuXHQgICAgICAgICAgICAgICAgICAgICBbXikoXSogID0gTWF0Y2ggYW55dGhpbmcgdGhhdCBpc24ndCBhIHBhcmVudGhlc2VzXG5cdCAgICAgICAgICAgICAgICAgXFwpICA9IE1hdGNoIGEgZW5kIHBhcmVudGhlc2VzXG5cdCAgICAgICAgICAgICApICA9IEVuZCBHcm91cFxuICAgICAgICAgICAgICAqXFwpID0gTWF0Y2ggYW55dGhpbmcgYW5kIHRoZW4gYSBjbG9zZSBwYXJlbnNcbiAgICAgICAgICApICA9IENsb3NlIG5vbi1jYXB0dXJpbmcgZ3JvdXBcbiAgICAgICAgICAqICA9IE1hdGNoIGFueXRoaW5nXG4gICAgICAgKSAgPSBDbG9zZSBjYXB0dXJpbmcgZ3JvdXBcblx0IFxcKSAgPSBNYXRjaCBhIGNsb3NlIHBhcmVuc1xuXG5cdCAvZ2kgID0gR2V0IGFsbCBtYXRjaGVzLCBub3QgdGhlIGZpcnN0LiAgQmUgY2FzZSBpbnNlbnNpdGl2ZS5cblx0ICovXG5cdHZhciBmaXhlZENzcyA9IGNzcy5yZXBsYWNlKC91cmxcXHMqXFwoKCg/OlteKShdfFxcKCg/OlteKShdK3xcXChbXikoXSpcXCkpKlxcKSkqKVxcKS9naSwgZnVuY3Rpb24oZnVsbE1hdGNoLCBvcmlnVXJsKSB7XG5cdFx0Ly8gc3RyaXAgcXVvdGVzIChpZiB0aGV5IGV4aXN0KVxuXHRcdHZhciB1bnF1b3RlZE9yaWdVcmwgPSBvcmlnVXJsXG5cdFx0XHQudHJpbSgpXG5cdFx0XHQucmVwbGFjZSgvXlwiKC4qKVwiJC8sIGZ1bmN0aW9uKG8sICQxKXsgcmV0dXJuICQxOyB9KVxuXHRcdFx0LnJlcGxhY2UoL14nKC4qKSckLywgZnVuY3Rpb24obywgJDEpeyByZXR1cm4gJDE7IH0pO1xuXG5cdFx0Ly8gYWxyZWFkeSBhIGZ1bGwgdXJsPyBubyBjaGFuZ2Vcblx0XHRpZiAoL14oI3xkYXRhOnxodHRwOlxcL1xcL3xodHRwczpcXC9cXC98ZmlsZTpcXC9cXC9cXC98XFxzKiQpL2kudGVzdCh1bnF1b3RlZE9yaWdVcmwpKSB7XG5cdFx0ICByZXR1cm4gZnVsbE1hdGNoO1xuXHRcdH1cblxuXHRcdC8vIGNvbnZlcnQgdGhlIHVybCB0byBhIGZ1bGwgdXJsXG5cdFx0dmFyIG5ld1VybDtcblxuXHRcdGlmICh1bnF1b3RlZE9yaWdVcmwuaW5kZXhPZihcIi8vXCIpID09PSAwKSB7XG5cdFx0ICBcdC8vVE9ETzogc2hvdWxkIHdlIGFkZCBwcm90b2NvbD9cblx0XHRcdG5ld1VybCA9IHVucXVvdGVkT3JpZ1VybDtcblx0XHR9IGVsc2UgaWYgKHVucXVvdGVkT3JpZ1VybC5pbmRleE9mKFwiL1wiKSA9PT0gMCkge1xuXHRcdFx0Ly8gcGF0aCBzaG91bGQgYmUgcmVsYXRpdmUgdG8gdGhlIGJhc2UgdXJsXG5cdFx0XHRuZXdVcmwgPSBiYXNlVXJsICsgdW5xdW90ZWRPcmlnVXJsOyAvLyBhbHJlYWR5IHN0YXJ0cyB3aXRoICcvJ1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZSB0byBjdXJyZW50IGRpcmVjdG9yeVxuXHRcdFx0bmV3VXJsID0gY3VycmVudERpciArIHVucXVvdGVkT3JpZ1VybC5yZXBsYWNlKC9eXFwuXFwvLywgXCJcIik7IC8vIFN0cmlwIGxlYWRpbmcgJy4vJ1xuXHRcdH1cblxuXHRcdC8vIHNlbmQgYmFjayB0aGUgZml4ZWQgdXJsKC4uLilcblx0XHRyZXR1cm4gXCJ1cmwoXCIgKyBKU09OLnN0cmluZ2lmeShuZXdVcmwpICsgXCIpXCI7XG5cdH0pO1xuXG5cdC8vIHNlbmQgYmFjayB0aGUgZml4ZWQgY3NzXG5cdHJldHVybiBmaXhlZENzcztcbn07XG4iLCJ2YXIgZztcblxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcbmcgPSAoZnVuY3Rpb24oKSB7XG5cdHJldHVybiB0aGlzO1xufSkoKTtcblxudHJ5IHtcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXG5cdGcgPSBnIHx8IG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XG59IGNhdGNoIChlKSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXG5cdGlmICh0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKSBnID0gd2luZG93O1xufVxuXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5nIHRvIGRvIGFib3V0IGl0Li4uXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGc7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHRpZiAoIW1vZHVsZS53ZWJwYWNrUG9seWZpbGwpIHtcblx0XHRtb2R1bGUuZGVwcmVjYXRlID0gZnVuY3Rpb24oKSB7fTtcblx0XHRtb2R1bGUucGF0aHMgPSBbXTtcblx0XHQvLyBtb2R1bGUucGFyZW50ID0gdW5kZWZpbmVkIGJ5IGRlZmF1bHRcblx0XHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJsb2FkZWRcIiwge1xuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBtb2R1bGUubDtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImlkXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0bW9kdWxlLndlYnBhY2tQb2x5ZmlsbCA9IDE7XG5cdH1cblx0cmV0dXJuIG1vZHVsZTtcbn07XG4iLCIvKlxuKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQkJqR3JpZEV4V2lkZ2V0IHBsdWdpbi5cbiogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuKlxuKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiovXG5cbmltcG9ydCB7IGd3X2dldEdyaWQgfSBmcm9tIFwiLi91dGlsaXRpZXNcIjtcbmltcG9ydCB7IGd3X3BhcnNlTm9kZSB9IGZyb20gXCJldmVudHMvdXRpbGl0aWVzXCI7XG5cbmNvbnN0IHsgZGVlcFBhcnNlSnNvbiB9ID0gcmVxdWlyZShcImRlZXAtcGFyc2UtanNvblwiKTtcblxuLyoqXG4gKiBTdGFydCBjZWxsIGVkaXRpbmdcbiAqIFxuICogQHBhcmFtIHtTdHJpbmd9IGlkIFRoZSBncmlkJ3MgaWQgXG4gKiBAcGFyYW0ge1N0cmluZ3xudW1iZXJ9IHJvdyBUaGUgcm93IGluZGV4IG9yIGtleVxuICogQHBhcmFtIHtTdHJpbmd9IGNvbEtleSBUaGUgY29sdW1uJ3Mga2V5XG4gKiBAcGFyYW0ge1N0cmluZ3xOdW1iZXJ9IGtleSAgS2V5IHByZXNzXG4gKiBAcGFyYW0ge1N0cmluZ30gY2hhciBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3N0YXJ0RWRpdGluZ0NlbGwoaWQsIHJvdywgY29sS2V5LCBrZXksIGNoYXIpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGd3X2dldEdyaWQoaWQpLm9wdGlvbnM7XG4gIGNvbnN0IGFwaSA9IG9wdGlvbnMuYXBpO1xuICBjb25zdCBub2RlID0gYXBpLmdldFJvd05vZGUocm93KSB8fCBhcGkuZ2V0RGlzcGxheWVkUm93QXRJbmRleChyb3cpO1xuXG4gIG9wdGlvbnMuYXBpLnNldEZvY3VzZWRDZWxsKG5vZGUucm93SW5kZXgsIGNvbEtleSk7XG4gIG9wdGlvbnMuYXBpLnN0YXJ0RWRpdGluZ0NlbGwoe1xuICAgIHJvd0luZGV4OiBub2RlLnJvd0luZGV4LFxuICAgIGNvbEtleTogY29sS2V5LFxuICAgIGtleVByZXNzOiBOdW1iZXIoa2V5KSxcbiAgICBjaGFyUHJlc3M6IGNoYXJcbiAgfSk7XG59XG5cbi8qKlxuICogU3RvcCBjZWxsIGVkaXRpbmcgXG4gKiBcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCBUaGUgZ3JpZCdzIGlkIFxuICogQHBhcmFtIHtCb29sZWFufSBjYW5jZWwgd2hlbiB0cnVlIGNhbmNlbCBlZGl0cyAsIHNhdmUgZWRpdHMgb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19zdG9wRWRpdGluZyhpZCwgY2FuY2VsKSB7XG4gIGd3X2dldEdyaWQoaWQpXG4gICAgLm9wdGlvbnNcbiAgICAuYXBpXG4gICAgLnN0b3BFZGl0aW5nKGNhbmNlbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnd19lZGl0TmV4dENlbGwoaWQpIHtcbiAgZ3dfZ2V0R3JpZChpZClcbiAgICAub3B0aW9uc1xuICAgIC5hcGlcbiAgICAudGFiVG9OZXh0Q2VsbCgpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGd3X2VkaXRQcmV2aW91c0NlbGwoaWQpIHtcbiAgZ3dfZ2V0R3JpZChpZClcbiAgICAub3B0aW9uc1xuICAgIC5hcGlcbiAgICAudGFiVG9QcmV2aW91c0NlbGwoKTtcbn1cblxuLyoqXG4gKiBTZXQgRm9jdXMgb24gdGhlIGdpdmVuIHJvdyBhbmQgY29sdW1uXG4gKiBcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCBUaGUgZ3JpZCdzIGlkIFxuICogQHBhcmFtIHtTdHJpbmd8TnVtYmVyfSByb3cgVGhlIHJvdydzIGluZGV4L2lkXG4gKiBAcGFyYW0ge1N0cmluZ30gY29sdW1uIFRoZSBjb2x1bW4gaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3NldEZvY3VzZWRDZWxsKGlkLCByb3csIGNvbHVtbikge1xuICBjb25zdCBvcHRpb25zID0gZ3dfZ2V0R3JpZChpZCkub3B0aW9ucztcbiAgY29uc3QgciA9ICFyb3cgPyAwIDogKE51bWJlci5pc0ludGVnZXIoK3JvdykgPyArcm93IDogb3B0aW9ucy5hcGkuZ2V0Um93Tm9kZShyb3cpLnJvd0luZGV4KTtcbiAgY29uc3QgYyA9IGNvbHVtbiA/IGNvbHVtbiA6IG9wdGlvbnMuY29sdW1uQXBpLmdldEFsbEdyaWRDb2x1bW5zKClbMF0uY29sSWQ7XG4gIGd3X2dldEdyaWQoaWQpXG4gICAgLm9wdGlvbnNcbiAgICAuYXBpXG4gICAgLnNldEZvY3VzZWRDZWxsKHIsIGMpO1xufVxuXG4vKipcbiAqIEdldCBSYW5nZSBTZWxlY3Rpb25zXG4gKiBcbiAqIFRoZSBtZXRob2Qgd2lsbCBjcmVhdGUgYSByYW5nZSBqc29uIG1vZGVsIGZvciBlYWNoIHJhbmdlIHdoaWNoIGNhbiBiZSBwYXJzZWQgaW4gQkJqIHNpZGUuXG4gKiBcbiAqIEBwYXJhbSB7TnVtYmVyfSBpZCBncmlkJ3MgaWRcbiAqIFxuICogQHJldHVybnMge1N0cmluZ30gc2VsZWN0ZWQgcmFuZ2VzIGFzIEpTT05cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X2dldFJhbmdlU2VsZWN0aW9ucyhpZCkge1xuICBjb25zdCBvcHRpb25zID0gZ3dfZ2V0R3JpZChpZCkub3B0aW9ucztcbiAgY29uc3QgY29udGV4dCA9IG9wdGlvbnMuY29udGV4dDtcbiAgY29uc3QgYXBpID0gb3B0aW9ucy5hcGk7XG4gIGNvbnN0IHJhbmdlcyA9IGFwaS5nZXRDZWxsUmFuZ2VzKCk7XG4gIGNvbnN0IG1vZGVsID0gYXBpLmdldE1vZGVsKCk7XG4gIGxldCByZXN1bHQgPSBbXTtcblxuICByYW5nZXMuZm9yRWFjaChyYW5nZSA9PiB7XG5cbiAgICAvLyBjb25zdCBzdGFydCA9IGd3X3BhcnNlTm9kZShtb2RlbC5nZXRSb3cocmFuZ2Uuc3RhcnRSb3cucm93SW5kZXgpLCBvcHRpb25zLmNvbnRleHQpO1xuICAgIC8vIGNvbnN0IGVuZCA9IGd3X3BhcnNlTm9kZShtb2RlbC5nZXRSb3cocmFuZ2UuZW5kUm93LnJvd0luZGV4KSwgb3B0aW9ucy5jb250ZXh0KTtcblxuICAgIC8vaWYgKHN0YXJ0ICE9PSBmYWxzZSAmJiBlbmQgIT09IGZhbHNlKSB7XG4gICAgY29uc3QgY29sdW1ucyA9IHJhbmdlLmNvbHVtbnMucmVkdWNlKChhY2N1bXVsYXRvciwgY3VycmVudCkgPT4ge1xuXG4gICAgICBpZiAoXCJhZy1HcmlkLUF1dG9Db2x1bW5cIiAhPT0gY3VycmVudC5jb2xJZCkge1xuICAgICAgICBhY2N1bXVsYXRvci5wdXNoKGN1cnJlbnQuY29sSWQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgfSwgW10pLmZpbHRlcihCb29sZWFuKTtcblxuICAgIGNvbnN0IHN0YXJJbmRleCA9IE1hdGgubWluKHJhbmdlLnN0YXJ0Um93LnJvd0luZGV4LCByYW5nZS5lbmRSb3cucm93SW5kZXgpO1xuICAgIGNvbnN0IGVuZEluZGV4ID0gTWF0aC5tYXgocmFuZ2Uuc3RhcnRSb3cucm93SW5kZXgsIHJhbmdlLmVuZFJvdy5yb3dJbmRleCk7XG4gICAgY29uc3Qgcm93cyA9IFtdO1xuXG4gICAgZm9yIChsZXQgcm93SW5kZXggPSBzdGFySW5kZXg7IHJvd0luZGV4IDw9IGVuZEluZGV4OyByb3dJbmRleCsrKSB7XG4gICAgICBjb25zdCBub2RlID0gbW9kZWwuZ2V0Um93KHJvd0luZGV4KTtcbiAgICAgIGlmIChub2RlKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZE5vZGUgPSBnd19wYXJzZU5vZGUobm9kZSwgY29udGV4dCk7XG4gICAgICAgIGlmIChwYXJzZWROb2RlKSByb3dzLnB1c2gocGFyc2VkTm9kZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJvd3MubGVuZ3RoICYmIGNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICByZXN1bHQucHVzaCh7IHI6IHJvd3MsIGM6IGNvbHVtbnMgfSk7XG4gICAgfVxuICAgIC8vfVxuICB9KTtcblxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocmVzdWx0KTtcbn1cblxuLyoqXG4gKiBQYXJzZSB0aGUgY2VsbHMgcmFuZ2UgaW4gYSBmb3JtYXQgdGhlIGdyaWQgY2FuIHVuZGVyc3RhbmQgd2hlbiBpdCBpcyBwYXNzZWQgXG4gKiB0byBgYXBpLmFkZENlbGxSYW5nZWBcbiAqIFxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgVGhlIGdyaWQncyBvcHRpb25zXG4gKiBAcGFyYW0ge09iamVjdH0gcmFuZ2UgIGJvdW5kZWQgb3IgdW5ib3VuZGVkIHJhbmdlIG1vZGVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19wYXJzZUFkZENlbGxSYW5nZShvcHRpb25zICwgcmFuZ2UpIHtcbiAgY29uc3QgcHIgPSBkZWVwUGFyc2VKc29uKEpTT04uc3RyaW5naWZ5KHJhbmdlKSk7XG4gIGNvbnN0IHN0YXJ0ID0gIShwci5zdGFydCB8fCBudWxsKSA/XG4gICAgMCA6IChOdW1iZXIuaXNJbnRlZ2VyKCtwci5zdGFydCkgPyArcHIuc3RhcnQgOiBvcHRpb25zLmFwaS5nZXRSb3dOb2RlKHByLnN0YXJ0KS5yb3dJbmRleCk7XG4gIGNvbnN0IGVuZCA9ICEocHIuZW5kIHx8IG51bGwpID9cbiAgICAob3B0aW9ucy5yb3dEYXRhLmxlbmd0aCAtIDEpIDogKE51bWJlci5pc0ludGVnZXIoK3ByLmVuZCkgPyArcHIuZW5kIDogb3B0aW9ucy5hcGkuZ2V0Um93Tm9kZShwci5lbmQpLnJvd0luZGV4KTtcblxuICByZXR1cm4ge1xuICAgIHJvd1N0YXJ0SW5kZXg6IE1hdGguYWJzKHN0YXJ0KSxcbiAgICByb3dFbmRJbmRleDogTWF0aC5hYnMoZW5kKSxcbiAgICBjb2x1bW5zOiBwci5jb2x1bW5zXG4gIH07XG59XG4vKipcbiAqIEFkZCBuZXcgY2VsbCByYW5nZVxuICogXG4gKiBAcGFyYW0ge051bWJlcn0gaWQgZ3JpZCdzIGlkXG4gKiBAcGFyYW0ge09iamVjdH0gcmFuZ2UgIGJvdW5kZWQgb3IgdW5ib3VuZGVkIHJhbmdlIG1vZGVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19hZGRDZWxsUmFuZ2UoaWQsIHJhbmdlKSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnd19nZXRHcmlkKGlkKS5vcHRpb25zO1xuICBvcHRpb25zLmFwaS5hZGRDZWxsUmFuZ2UoZ3dfcGFyc2VBZGRDZWxsUmFuZ2Uob3B0aW9ucywgcmFuZ2UpKTtcbn1cblxuLyoqXG4gKiBDbGVhcnMgdGhlIHNlbGVjdGVkIHJhbmdlLlxuICogXG4gKiBAcGFyYW0ge051bWJlcn0gaWQgZ3JpZCdzIGlkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19jbGVhclJhbmdlU2VsZWN0aW9uKGlkKSB7XG4gIGd3X2dldEdyaWQoaWQpXG4gICAgLm9wdGlvbnNcbiAgICAuYXBpXG4gICAgLmNsZWFyUmFuZ2VTZWxlY3Rpb24oKTtcbn0iLCIvKlxuKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQkJqR3JpZEV4V2lkZ2V0IHBsdWdpbi5cbiogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuKlxuKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiovXG5cbmltcG9ydCB7IGd3X2dldEdyaWQsIGd3X3V1aWQgfSBmcm9tIFwiYXBpL3V0aWxpdGllc1wiO1xuaW1wb3J0IHsgZ3dfcGFyc2VBZGRDZWxsUmFuZ2UgfSBmcm9tIFwiYXBpL2NlbGxzXCI7XG5cbmNvbnN0IHsgZGVlcFBhcnNlSnNvbiB9ID0gcmVxdWlyZShcImRlZXAtcGFyc2UtanNvblwiKTtcblxuLyoqXG4gKiBUaGUgYXJyYXkgY29udGFpbnMgcmVmZXJlbmNlcyB0byBjcmVhdGVkIGNoYXJ0cyBmcm9tIEJCai5cbiAqIEV2ZXJ5IHJlZmVyZW5jZSBpcyBhIENoYXJ0UmVmIG9iamVjdCB3aGljaCBwcm92aWRlcyB0aGUgYXBwbGljYXRpb24gd2l0aCB0aGUgXG4gKiBkZXN0cm95Q2hhcnQoKSBtZXRob2QgdGhhdCBpcyByZXF1aXJlZCB3aGVuIHRoZSBhcHBsaWNhdGlvbiB3YW50cyB0byBkaXNwb3NlIHRoZSBjaGFydC5cbiAqL1xuXG4vKipcbiAqIFJldHVybiB0aGUgY2hhcnQgdG9vbGJhciBpdGVtcyBkZWZpbmVkIGluIHRoZSBncmlkJ3MgY29udGV4dCBcbiAqIFxuICogQHBhcmFtIHtPYmplY3R9IHBhcmFtcyBcbiAqIEByZXR1cm5zIHtBcnJheX0gYXJyYXkgb2Ygc3VwcG9ydGVkIGNoYXJ0IGl0ZW1zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19nZXRDaGFydFRvb2xiYXJJdGVtcyhwYXJhbXMpIHtcbiAgcmV0dXJuIHBhcmFtc1xuICAgIC5hcGlcbiAgICAuZ3JpZE9wdGlvbnNXcmFwcGVyXG4gICAgLmdyaWRPcHRpb25zXG4gICAgLmNvbnRleHRcbiAgICAuY2hhcnRUb29sYmFySXRlbXMgfHwgW107XG59XG5cbi8qKlxuICogQWRkIG5ldyBjaGFydCByYW5nZVxuICogXG4gKiBAcGFyYW0ge1N0cmluZ30gaWQgZ3JpZCdzIGlkXG4gKiBAcGFyYW0ge09iamVjdH0gcmFuZ2UgIGJvdW5kZWQgb3IgdW5ib3VuZGVkIHJhbmdlIG1vZGVsXG4gKiBcbiAqIEByZXR1cm4ge1N0cmluZ30gYSB1bmlxdWUgaWQgZm9yIHRoZSBnZW5lcmF0ZSBjaGFydFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfYWRkQ2hhcnRSYW5nZShpZCwgcmFuZ2UpIHtcbiAgY29uc3QgZ3JpZCA9IGd3X2dldEdyaWQoaWQpO1xuICBjb25zdCBvcHRpb25zID0gZ3JpZC5vcHRpb25zO1xuICBjb25zdCBwciA9IGRlZXBQYXJzZUpzb24oSlNPTi5zdHJpbmdpZnkocmFuZ2UpKTtcblxuICBwci5jZWxsUmFuZ2UgPSBnd19wYXJzZUFkZENlbGxSYW5nZShvcHRpb25zLCBwci5jZWxsUmFuZ2UpO1xuXG4gIGNvbnN0IHJlZiA9IG9wdGlvbnMuYXBpLmNoYXJ0UmFuZ2UocHIpO1xuICBjb25zdCB1dWlkID0gZ3dfdXVpZCgpO1xuICBcbiAgZ3JpZC5jcmVhdGVkX2NoYXJ0cyA9IGdyaWQuY3JlYXRlZF9jaGFydHMgfHwge307XG4gIGdyaWQuY3JlYXRlZF9jaGFydHNbdXVpZF0gPSByZWY7XG4gIFxuICByZXR1cm4gdXVpZDtcbn1cblxuLyoqXG4gKiBEZXN0cm95IGNyZWF0ZWQgY2hhcnRzXG4gKiBcbiAqIERlc3Ryb3kgYWxyZWFkeSBjcmVhdGVkIGNoYXJ0IGJ5IGlkIG9yIGFsbCBjcmVhdGVkIGNoYXJ0cyBcbiAqIHdoZW4gdGhlIGB1dWlkYCBpcyBvbWl0dGVkLlxuICogXG4gKiBAcGFyYW0ge1N0cmluZ30gaWQgZ3JpZCdzIGlkXG4gKiBAcGFyYW0ge1N0cmluZ30gdXVpZCBUaGUgY2hhcnQncyBpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfZGVzdHJveUNoYXJ0KGlkLCB1dWlkKSB7XG4gIGNvbnN0IGdyaWQgPSBnd19nZXRHcmlkKGlkKTtcbiAgXG4gIGlmICh1dWlkKSB7XG4gICAgaWYgKGdyaWQuaGFzT3duUHJvcGVydHkoJ2NyZWF0ZWRfY2hhcnRzJykgJiYgZ3JpZC5jcmVhdGVkX2NoYXJ0cy5oYXNPd25Qcm9wZXJ0eSh1dWlkKSkge1xuICAgICAgZ3JpZC5jcmVhdGVkX2NoYXJ0c1t1dWlkXS5kZXN0cm95Q2hhcnQoKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gIFxuICAgIGlmIChncmlkLmhhc093blByb3BlcnR5KCdjcmVhdGVkX2NoYXJ0cycpKSB7XG4gICAgICBmb3IgKGNvbnN0IGkgaW4gZ3JpZC5jcmVhdGVkX2NoYXJ0cykge1xuICAgICAgICBpZiAoZ3JpZC5jcmVhdGVkX2NoYXJ0cy5oYXNPd25Qcm9wZXJ0eShpKSkge1xuICAgICAgICAgIGNvbnN0IGNoYXJ0ID0gZ3JpZC5jcmVhdGVkX2NoYXJ0c1tpXTtcbiAgICAgICAgICBjaGFydC5kZXN0cm95Q2hhcnQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQkJqR3JpZEV4V2lkZ2V0IHBsdWdpbi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QEJhc2lzLkFnR3JpZENvbXBvbmVudHMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgeyBnd19nZXRHcmlkIH0gZnJvbSBcIi4vdXRpbGl0aWVzXCI7XG5jb25zdCB7IGRlZXBQYXJzZUpzb24gfSA9IHJlcXVpcmUoXCJkZWVwLXBhcnNlLWpzb25cIik7XG5cbi8qKlxuICogRXh0ZW5kIHRoZSBjb2x1bW4gZGVmaW5pdGlvbnNcbiAqXG4gKiBFeHRlbmQgdGhlIGNvbHVtbiBkZWZpbml0aW9ucyB3aXRoIG9wdGlvbnMgd2hpY2ggY2FuIG5vdCBiZSBoYW5kbGVkIGluIEJCalxuICogKGV4OiBhdHRhY2hpbmcgY2FsbGJhY2tzKVxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGRlZmluaXRpb25zIGFycmF5IG9mIGNvbHVtbiBkZWZpbml0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfZXh0ZW5kQ29sdW1uRGVmaW5pdGlvbnMoZGVmaW5pdGlvbnMpIHtcbiAgZm9yIChsZXQgaSBpbiBkZWZpbml0aW9ucykge1xuICAgIGNvbnN0IGRlZiA9IGRlZmluaXRpb25zW2ldO1xuXG4gICAgZGVmLmNoZWNrYm94U2VsZWN0aW9uID0gZGVmLmNoZWNrYm94U2VsZWN0aW9uIHx8IGd3X2lzU2hvd1NlbGVjdGlvbkNoZWNrYm94O1xuICAgIGRlZi5oZWFkZXJDaGVja2JveFNlbGVjdGlvbiA9XG4gICAgICBkZWYuaGVhZGVyQ2hlY2tib3hTZWxlY3Rpb24gfHwgZ3dfaXNIZWFkZXJDaGVja2JveFNlbGVjdGlvbjtcbiAgfVxufVxuXG4vKipcbiAqIFVwZGF0ZSB0aGUgY29sdW1uIGRlZmluaXRpb25zXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkIFRoZSBncmlkIGlkXG4gKiBAcGFyYW0ge0FycmF5fSBkZWZpbml0aW9ucyBhcnJheSBvZiBjb2x1bW4gZGVmaW5pdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3NldENvbHVtbkRlZmluaXRpb25zKGlkLCBkZWZpbml0aW9ucykge1xuICBjb25zdCBncmlkID0gZ3dfZ2V0R3JpZChpZCk7XG4gIGNvbnN0IGRlZXBQYXJzZWREZWZpbml0aW9ucyA9IGRlZXBQYXJzZUpzb24oSlNPTi5zdHJpbmdpZnkoZGVmaW5pdGlvbnMpKTtcblxuICBnd19leHRlbmRDb2x1bW5EZWZpbml0aW9ucyhkZWVwUGFyc2VkRGVmaW5pdGlvbnMpO1xuXG4gIGdyaWQub3B0aW9ucy5hcGkuc2V0Q29sdW1uRGVmcyhkZWVwUGFyc2VkRGVmaW5pdGlvbnMpO1xuICBncmlkLm9wdGlvbnMuY29sdW1uRGVmcyA9IGRlZXBQYXJzZWREZWZpbml0aW9ucztcbn1cblxuLyoqXG4gKiBNYWtlIHRoZSBjdXJyZW50bHkgdmlzaWJsZSBjb2x1bW5zIGZpdCB0aGUgc2NyZWVuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkIFRoZSBncmlkJ3MgaWRcbiAqIEBwYXJhbSB7TnVtYmVyfSB0aGUgd2lkdGggdG8gdXNlIHRvIGZpdCBhbGwgY29sdW1ucyBpblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfc2l6ZUNvbHVtbnNUb0ZpdChpZCwgd2lkdGgpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGd3X2dldEdyaWQoaWQpLm9wdGlvbnM7XG4gIGNvbnN0IGFwaSA9IG9wdGlvbnMuYXBpO1xuICBjb25zdCBjb2x1bW5zQVBJID0gb3B0aW9ucy5jb2x1bW5BcGk7XG4gIGlmICh3aWR0aCkgY29sdW1uc0FQSS5zaXplQ29sdW1uc1RvRml0KE51bWJlcih3aWR0aCkpO1xuICBlbHNlIGFwaS5zaXplQ29sdW1uc1RvRml0KCk7XG59XG5cbi8qKlxuICogV29yayBvdXQgdGhlIGJlc3Qgd2lkdGggdG8gZml0IHRoZSBjb250ZW50cyBvZiB0aGUgY2VsbHMgaW4gdGhlIGNvbHVtbi5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaWQgVGhlIGdyaWQncyBpZFxuICogQHBhcmFtIHtCb29sZWFufSBbc2tpcEhlYWRlcj1mYWxzZV0gd2hlbiB0cnVlIGluZGljYXRlIHRoYXQgdGhlIGhlYWRlciBjb250ZW50IChoZWFkZXJOYW1lKSBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgd2hlblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0aW5nIHRoZSB3aWR0aCBvZiB0aGUgY29sdW1uXG4gKiBAcGFyYW0ge0FycmF5fG51bGx9IFtjb2x1bW5zPW51bGxdIGFuIGFycmF5IG9mIGNvbHVtbnMgaWRzIHRvIGF1dG8gc2l6ZSBvciBudWxsIHRvIGF1dG8gc2l6ZSBhbGwgY29sdW1uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfYXV0b1NpemVDb2x1bW5zKGlkLCBza2lwSGVhZGVyID0gZmFsc2UsIGNvbHVtbnMgPSBudWxsKSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnd19nZXRHcmlkKGlkKS5vcHRpb25zO1xuICBjb25zdCBjb2x1bW5zQVBJID0gb3B0aW9ucy5jb2x1bW5BcGk7XG5cbiAgaWYgKCEoY29sdW1ucyAmJiBjb2x1bW5zLmxlbmd0aCkpIHtcbiAgICBjb25zdCBhbGxDb2x1bW5JZHMgPSBbXTtcblxuICAgIGNvbHVtbnNBUEkuZ2V0QWxsQ29sdW1ucygpLmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgIGFsbENvbHVtbklkcy5wdXNoKGNvbHVtbi5jb2xJZCk7XG4gICAgfSk7XG5cbiAgICBjb2x1bW5zQVBJLmF1dG9TaXplQ29sdW1ucyhhbGxDb2x1bW5JZHMsIEJvb2xlYW4oc2tpcEhlYWRlcikpO1xuICB9IGVsc2Uge1xuICAgIGNvbHVtbnNBUEkuYXV0b1NpemVDb2x1bW5zKGNvbHVtbnMsIEJvb2xlYW4oc2tpcEhlYWRlcikpO1xuICB9XG59XG4vKipcbiAqIEVuc3VyZXMgdGhlIGNvbHVtbiBpcyB2aXNpYmxlLCBzY3JvbGxpbmcgdGhlIHRhYmxlIGlmIG5lZWRlZC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaWQgIHRoZSBncmlkJ3MgaWRcbiAqIEBwYXJhbSB7U3RyaW5nfSBjb2x1bW5JZCAgdGhlIGNvbHVtbiBpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfZW5zdXJlQ29sdW1uVmlzaWJsZShpZCwgY29sdW1uSWQpIHtcbiAgZ3dfZ2V0R3JpZChpZCkub3B0aW9ucy5hcGkuZW5zdXJlQ29sdW1uVmlzaWJsZShjb2x1bW5JZCk7XG59XG5cbi8qKlxuICogU2V0IENvbHVtbiBXaWR0aFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCBUaGUgZ3JpZCBpZFxuICogQHBhcmFtIHtTdHJpbmd9IGNvbHVtbklkIFRoZSBjb2x1bW4gaWRcbiAqIEBwYXJhbSB7TnVtYmVyfFN0cmluZ30gd2lkdGggVGhlIG5ldyBjb2x1bW4gd2lkdGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3NldENvbHVtbldpZHRoKGlkLCBjb2x1bW5JZCwgd2lkdGgpIHtcbiAgZ3dfZ2V0R3JpZChpZCkub3B0aW9ucy5jb2x1bW5BcGkuc2V0Q29sdW1uV2lkdGgoY29sdW1uSWQsIE51bWJlcih3aWR0aCkpO1xufVxuXG4vKipcbiAqIFBpbiBDb2x1bW5cbiAqXG4gKiBQaW4gYSBjb2x1bW4gdG8gYSBzcGVjaWZpYyBkaXJlY3Rpb25cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaWQgVGhlIGdyaWQgaWRcbiAqIEBwYXJhbSB7U3RyaW5nfSBjb2x1bW5JZCBUaGUgY29sdW1uIGlkXG4gKiBAcGFyYW0ge1N0cmluZ30gcGluIFRoZSBwaW4gZGlyZWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19waW5Db2x1bW4oaWQsIGNvbHVtbklkLCBwaW4pIHtcbiAgZ3dfZ2V0R3JpZChpZCkub3B0aW9ucy5jb2x1bW5BcGkuc2V0Q29sdW1uUGlubmVkKGNvbHVtbklkLCBwaW4pO1xufVxuXG4vKipcbiAqIE1vdmUgQ29sdW1uXG4gKlxuICogTW92ZSBjb2x1bW4gdG8gYSBzcGVjaWZpYyBpbmRleFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCBUaGUgZ3JpZCBpZFxuICogQHBhcmFtIHtTdHJpbmd9IGNvbHVtbklkIFRoZSBjb2x1bW4gaWRcbiAqIEBwYXJhbSB7TnVtYmVyfFN0cmluZ30gdG9JbmRleCBUaGUgbmV3IGNvbHVtbiBpbmRleFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfbW92ZUNvbHVtbihpZCwgY29sdW1uSWQsIHRvSW5kZXgpIHtcbiAgZ3dfZ2V0R3JpZChpZCkub3B0aW9ucy5jb2x1bW5BcGkubW92ZUNvbHVtbihjb2x1bW5JZCwgdG9JbmRleCk7XG59XG5cbi8qKlxuICogU2hvdyAvIEhpZGUgc2VsZWN0aW9uIGNoZWNrYm94IGJhc2VkIG9uIHRoZSBmaXJzdCBjb2x1bW5cbiAqXG4gKiBUaGUgZnVuY3Rpb24gbWFrZSBzdXJlIHRoYXQgdGhlIHNlbGVjdGlvbiBjaGVja2JveCBpcyBhbHdheXMgc2hvd24gb24gdGhlXG4gKiBmaXJzdCBjb2x1bW5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcGFyYW1cbiAqXG4gKiBAcmV0dXJuIHtCb29sZWFufSB0cnVlIHdoZW4gZmlyc3QgY29sdW1uICwgZmFsc2UgaWYgbm90IHRoZSBmaXJzdCBjb2x1bW4gb3IgaWYgdGhlXG4gKiAgICAgICAgICAgICAgICAgICBncmlkJ3MgYENvbnRleHQuc2hvd1NlbGVjdGlvbkNoZWNrYm94YCBpcyBmYWxzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfaXNTaG93U2VsZWN0aW9uQ2hlY2tib3gocGFyYW0pIHtcbiAgaWYgKCFwYXJhbS5jb250ZXh0LnNob3dTZWxlY3Rpb25DaGVja2JveCkgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IGNvbHVtbnMgPSBwYXJhbS5jb2x1bW5BcGkuZ2V0QWxsR3JpZENvbHVtbnMoKTtcblxuICByZXR1cm4gY29sdW1uc1swXS5jb2xEZWYuZmllbGQgPT09IHBhcmFtLmNvbERlZi5maWVsZDtcbn1cblxuLyoqXG4gKiBTaG93IC8gSGlkZSBoZWFkZXIgc2VsZWN0aW9uIGNoZWNrYm94IGJhc2VkIG9uIHRoZSBmaXJzdCBjb2x1bW5cbiAqXG4gKiBUaGUgZnVuY3Rpb24gbWFrZSBzdXJlIHRoYXQgdGhlIGhlYWRlciBzZWxlY3Rpb24gY2hlY2tib3ggaXMgYWx3YXlzIHNob3duIG9uIHRoZVxuICogZmlyc3QgY29sdW1uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHBhcmFtXG4gKlxuICogQHJldHVybiB7Qm9vbGVhbn0gdHJ1ZSB3aGVuIGZpcnN0IGNvbHVtbiAsIGZhbHNlIGlmIG5vdCB0aGUgZmlyc3QgY29sdW1uIG9yIGlmIHRoZVxuICogICAgICAgICAgICAgICAgICAgZ3JpZCdzIGBDb250ZXh0LnNob3dIZWFkZXJTZWxlY3Rpb25DaGVja2JveGAgaXMgZmFsc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X2lzSGVhZGVyQ2hlY2tib3hTZWxlY3Rpb24ocGFyYW0pIHtcbiAgY29uc3QgY29udGV4dCA9IHBhcmFtLmFwaS5ncmlkT3B0aW9uc1dyYXBwZXIuZ3JpZE9wdGlvbnMuY29udGV4dDtcblxuICBpZiAoIWNvbnRleHQuc2hvd0hlYWRlclNlbGVjdGlvbkNoZWNrYm94KSByZXR1cm4gZmFsc2U7XG5cbiAgY29uc3QgY29sdW1ucyA9IHBhcmFtLmNvbHVtbkFwaS5nZXRBbGxHcmlkQ29sdW1ucygpO1xuXG4gIHJldHVybiBjb2x1bW5zWzBdLmNvbERlZi5maWVsZCA9PT0gcGFyYW0uY29sRGVmLmZpZWxkO1xufVxuXG4vKipcbiAqIEVuYWJsZSByb3cgZ3JvdXBpbmcgZm9yIGNvbHVtbnNcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaWQgdGhlIGdyaWQgaWRcbiAqIEBwYXJhbSB7U3RyaW5nfSBjb2x1bW5zICBhIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmcgb2YgY29sdW1uc1xuICogQHBhcmFtIHtCb29sZWFufSBzZXQgIFdoZW4gdHJ1ZSAsIGBzZXRSb3dHcm91cENvbHVtbnNgIHdpbGwgYmUgdXNlZCAsIGBhZGRSb3dHcm91cENvbHVtbnNgIG90aGVyd2lzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfYWRkUm93R3JvdXBDb2x1bW4oaWQsIGNvbHVtbnMsIHNldCkge1xuICBnd19nZXRHcmlkKGlkKS5vcHRpb25zLmNvbHVtbkFwaVtcbiAgICBzZXQgPyBcInNldFJvd0dyb3VwQ29sdW1uc1wiIDogXCJhZGRSb3dHcm91cENvbHVtbnNcIlxuICBdKGNvbHVtbnMuc3BsaXQoXCIsXCIpLm1hcChpID0+IGkudHJpbSgpKSk7XG59XG5cbi8qKlxuICogRGlzYWJsZSByb3cgZ3JvdXBpbmcgZm9yIGNvbHVtbnNcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaWQgdGhlIGdyaWQgaWRcbiAqIEBwYXJhbSB7U3RyaW5nfSBjb2x1bW5zICBhIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmcgb2YgY29sdW1uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfcmVtb3ZlUm93R3JvdXBDb2x1bW4oaWQsIGNvbHVtbnMpIHtcbiAgZ3dfZ2V0R3JpZChpZCkub3B0aW9ucy5jb2x1bW5BcGkucmVtb3ZlUm93R3JvdXBDb2x1bW5zKFxuICAgIGNvbHVtbnMuc3BsaXQoXCIsXCIpLm1hcChpID0+IGkudHJpbSgpKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3dfZ2V0UGl2b3RNb2RlKGlkKSB7XG4gIHJldHVybiBnd19nZXRHcmlkKGlkKS5vcHRpb25zLmNvbHVtbkFwaS5pc1Bpdm90TW9kZSgpO1xufVxuXG4vKipcbiAqIEVuYWJsZSAvIGRpc2JhbGUgcGl2b3QgbW9kZVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCB0aGUgZ3JpZCBpZFxuICogQHBhcmFtIHtCb29sZWFufSBtb2RlIHdoZW4gdHJ1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfc2V0UGl2b3RNb2RlKGlkLCBtb2RlKSB7XG4gIGd3X2dldEdyaWQoaWQpLm9wdGlvbnMuY29sdW1uQXBpLnNldFBpdm90TW9kZSghIU51bWJlcihtb2RlKSk7XG59XG5cbi8qKlxuICogRW5hYmxlIHBpdm90IGZvciBjb2x1bW5zXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkIHRoZSBncmlkIGlkXG4gKiBAcGFyYW0ge1N0cmluZ30gY29sdW1ucyAgYSBjb21tYSBzZXBhcmF0ZWQgc3RyaW5nIG9mIGNvbHVtbnNcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gc2V0ICBXaGVuIHRydWUgLCBgYWRkUGl2b3RDb2x1bW5zYCB3aWxsIGJlIHVzZWQgLCBgc2V0UGl2b3RDb2x1bW5zYCBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X2FkZFBpdm90Q29sdW1ucyhpZCwgY29sdW1ucywgc2V0KSB7XG4gIGd3X2dldEdyaWQoaWQpLm9wdGlvbnMuY29sdW1uQXBpW3NldCA/IFwic2V0UGl2b3RDb2x1bW5zXCIgOiBcImFkZFBpdm90Q29sdW1uc1wiXShcbiAgICBjb2x1bW5zLnNwbGl0KFwiLFwiKS5tYXAoaSA9PiBpLnRyaW0oKSlcbiAgKTtcbn1cblxuLyoqXG4gKiBEaXNhYmxlIHBpdm90IGZvciBjb2x1bW5zXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkIHRoZSBncmlkIGlkXG4gKiBAcGFyYW0ge1N0cmluZ30gY29sdW1ucyAgYSBjb21tYSBzZXBhcmF0ZWQgc3RyaW5nIG9mIGNvbHVtbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3JlbW92ZVBpdm90Q29sdW1ucyhpZCwgY29sdW1ucykge1xuICBnd19nZXRHcmlkKGlkKS5vcHRpb25zLmNvbHVtbkFwaS5yZW1vdmVQaXZvdENvbHVtbnMoXG4gICAgY29sdW1ucy5zcGxpdChcIixcIikubWFwKGkgPT4gaS50cmltKCkpXG4gICk7XG59XG5cbi8qKlxuICogRW5hYmxlIHZhbHVlIGZvciBjb2x1bW5zXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkIHRoZSBncmlkIGlkXG4gKiBAcGFyYW0ge1N0cmluZ30gY29sdW1ucyAgYSBjb21tYSBzZXBhcmF0ZWQgc3RyaW5nIG9mIGNvbHVtbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X2FkZFZhbHVlQ29sdW1ucyhpZCwgY29sdW1ucywgc2V0KSB7XG4gIGd3X2dldEdyaWQoaWQpLm9wdGlvbnMuY29sdW1uQXBpLmFkZFZhbHVlQ29sdW1ucyhcbiAgICBjb2x1bW5zLnNwbGl0KFwiLFwiKS5tYXAoaSA9PiBpLnRyaW0oKSlcbiAgKTtcbn1cblxuLyoqXG4gKiBEaXNhYmxlIHZhbHVlIGZvciBjb2x1bW5zXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkIHRoZSBncmlkIGlkXG4gKiBAcGFyYW0ge1N0cmluZ30gY29sdW1ucyAgYSBjb21tYSBzZXBhcmF0ZWQgc3RyaW5nIG9mIGNvbHVtbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3JlbW92ZVZhbHVlQ29sdW1ucyhpZCwgY29sdW1ucykge1xuICBnd19nZXRHcmlkKGlkKS5vcHRpb25zLmNvbHVtbkFwaS5yZW1vdmVWYWx1ZUNvbHVtbnMoXG4gICAgY29sdW1ucy5zcGxpdChcIixcIikubWFwKGkgPT4gaS50cmltKCkpXG4gICk7XG59XG5cbi8qKlxuICogU2V0IHRoZSBjb2x1bW4gc29ydGluZyBtb2RlbFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCB0aGUgZ3JpZCBpZFxuICogQHBhcmFtIHtTdHJpbmd9IG1vZGVsIG1vZGVsIGFzIGpzb24gYXJyYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3NldFNvcnRNb2RlbChpZCwgbW9kZWwpIHtcbiAgY29uc3QgYXNBcnJheSA9IEpTT04ucGFyc2UobW9kZWwpXG4gIGNvbnN0IHBhcnNlZE1vZGVsID0gW11cbiAgYXNBcnJheS5mb3JFYWNoKGkgPT4ge1xuICAgIGZvciAoY29uc3Qga2V5IGluIGkpIHtcbiAgICAgIHBhcnNlZE1vZGVsLnB1c2goe1xuICAgICAgICBjb2xJZDoga2V5ICxcbiAgICAgICAgc29ydDogaVtrZXldXG4gICAgICB9KVxuICAgIH1cbiAgfSlcblxuICBnd19nZXRHcmlkKGlkKS5vcHRpb25zLmFwaS5zZXRTb3J0TW9kZWwocGFyc2VkTW9kZWwpO1xufVxuIiwiLypcbiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEJCakdyaWRFeFdpZGdldCBwbHVnaW4uXG4qIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbipcbiogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4qL1xuXG5pbXBvcnQgeyBnd19nZXRHcmlkIH0gZnJvbSBcIi4vdXRpbGl0aWVzXCI7XG5cbi8qKlxuICogVXBkYXRlIGNvbnRleHQgXG4gKiBcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCBUaGUgZ3JpZCdzIGlkIFxuICogQHBhcmFtIHtTdHJpbmd9IGtleSBUaGUgY29udGV4dCdzIGtleSB0byB1cGRhdGVcbiAqIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZSAgVGhlIG5ldyBjb250ZXh0J3MgdmFsdWUgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd191cGRhdGVDb250ZXh0KGlkLCBrZXksIHZhbHVlKSB7XG5cdGd3X2dldEdyaWQoaWQpXG5cdFx0Lm9wdGlvbnNcblx0XHQuY29udGV4dFtrZXldID0gSlNPTi5wYXJzZSh2YWx1ZSk7XG59IiwiLypcbiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEJCakdyaWRFeFdpZGdldCBwbHVnaW4uXG4qIChjKSBCYXNpcyBFdXJvcGUgPGV1QEJhc2lzLkFnR3JpZENvbXBvbmVudHMuY29tPlxuKlxuKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5pdC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbHVtbnMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9yb3dzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY2VsbHMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9zdGF0ZS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3Rvb2xwYW5lbC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3N0YXR1c2Jhci5qcyc7XG5leHBvcnQgKiBmcm9tICcuL292ZXJsYXlzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29udGV4dC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NoYXJ0cy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2pzcy5qcyc7IiwiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBCQmpHcmlkRXhXaWRnZXQgcGx1Z2luLlxuICogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAQmFzaXMuQWdHcmlkQ29tcG9uZW50cy5jb20+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbmltcG9ydCB7IGd3X2V4dGVuZENvbHVtbkRlZmluaXRpb25zIH0gZnJvbSBcIi4vY29sdW1uc1wiO1xuaW1wb3J0IHsgZ3dfbmF2aWdhdGVUb05leHRSb3csIGd3X2dldFJvd05vZGVJZCB9IGZyb20gXCIuL3Jvd3NcIjtcbmltcG9ydCB7IGd3X2dldENvbnRleHRNZW51IH0gZnJvbSBcIi4vbWVudXNcIjtcbmltcG9ydCB7IGd3X2dldENoYXJ0VG9vbGJhckl0ZW1zIH0gZnJvbSBcIi4vY2hhcnRzXCI7XG5pbXBvcnQgeyBnd19nZXREb2N1bWVudCwgZ3dfZ2V0V2luZG93LCBnd19hZGRHcmlkIH0gZnJvbSBcIi4vdXRpbGl0aWVzXCI7XG5pbXBvcnQge1xuICBnd19vblJvd0RvdWJsZUNsaWNrZWQsXG4gIGd3X29uU2VsZWN0aW9uQ2hhbmdlZCxcbiAgZ3dfb25SYW5nZVNlbGVjdGlvbkNoYW5nZWQsXG4gIGd3X29uQ2VsbENsaWNrRXZlbnQsXG4gIGd3X29uQ2VsbEVkaXRpbmdFdmVudCxcbiAgZ3dfb25Sb3dFZGl0aW5nRXZlbnQsXG4gIGd3X29uUmVhZHlFdmVudCxcbiAgZ3dfZGVib3VuY2Vcbn0gZnJvbSBcImV2ZW50c1wiO1xuaW1wb3J0IHRlbXBsYXRlIGZyb20gJ2xvZGFzaC1lcy90ZW1wbGF0ZSdcblxuY29uc3QgeyBkZWVwUGFyc2VKc29uIH0gPSByZXF1aXJlKFwiZGVlcC1wYXJzZS1qc29uXCIpO1xuXG5leHBvcnQgZnVuY3Rpb24gZ3dfaW5pdChvcHRpb25zLCBsaWNlbnNlICwgZGF0YSkge1xuICBcbiAgaWYgKGFnR3JpZC5MaWNlbnNlTWFuYWdlciAmJiBsaWNlbnNlKVxuICAgIGFnR3JpZC5MaWNlbnNlTWFuYWdlci5zZXRMaWNlbnNlS2V5KGxpY2Vuc2UpO1xuXG4gIGNvbnN0IGlkICAgICAgICAgICAgICA9IG9wdGlvbnMuY29udGV4dC5pZDtcbiAgY29uc3QgY29udGFpbmVyICAgICAgID0gZ3dfZ2V0RG9jdW1lbnQoKS5nZXRFbGVtZW50QnlJZChpZCk7XG4gIC8vIHdlIG1ha2UgdGhlIGdyaWQgb3B0aW9ucyBhdmFpbGFibGUgYXMgc29vbiBhcyBwb3NzaWJsZSBcbiAgY29uc3QgZ3JpZCAgICAgICAgICAgID0gZ3dfYWRkR3JpZChpZCwge1xuICAgIGNvbnRhaW5lcixcbiAgICBvcHRpb25zXG4gIH0pO1xuXG4gIC8vIFRPRE86IHVzZSBhZyBncmlkIGRlc3Ryb3lcbiAgY29udGFpbmVyLmlubmVySFRNTCAgID0gJyc7XG5cbiAgY29uc3QgcGFyc2VkT3B0aW9ucyAgID0gZ3dfcGFyc2VPcHRpb25zKG9wdGlvbnMpO1xuICBwYXJzZWRPcHRpb25zLnJvd0RhdGEgPSBkYXRhO1xuXG4gIGNvbnN0IGluc3RhbmNlICAgICAgICA9IG5ldyBhZ0dyaWQuR3JpZChjb250YWluZXIsIHBhcnNlZE9wdGlvbnMpO1xuICBncmlkLmluc3RhbmNlID0gaW5zdGFuY2U7XG4gIGdyaWQub3B0aW9ucyAgPSBwYXJzZWRPcHRpb25zO1xuXG4gIGNvbnNvbGUubG9nKFxuICAgIGAlYyBHcmlkIFske2lkfV0gc2V0dGluZ3MgOiBgXG4gICAgLCAnYmFja2dyb3VuZDogIzIyMjsgY29sb3I6ICNiYWRhNTUnXG4gICAgLCBwYXJzZWRPcHRpb25zXG4gICk7XG59XG5cbi8qKlxuICogUGFyc2UgT3B0aW9uc1xuICogXG4gKiBQYXJzZSB0aGUgZ3JpZCBvcHRpb25zIGFuZCByZXR1cm4gXG4gKiBhbiBvYmplY3Qgd2hpY2ggY2FuIGJlIHBhc3NlZCB0byB0aGUgZ3JpZFxuICogXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyBHcmlkIG9wdGlvbnMgYXMgSnNvbiBPYmplY3RcbiAqIFxuICogQHJldHVybiB7T2JqZWN0fSBvcHRpb25zIG9iamVjdFxuICovXG5mdW5jdGlvbiBnd19wYXJzZU9wdGlvbnMob3B0aW9ucykge1xuICBjb25zdCBkZWVwUGFyc2VkT3B0aW9ucyAgICAgPSBkZWVwUGFyc2VKc29uKEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpKTtcbiAgY29uc3QgaWQgICAgICAgICAgICAgICAgICAgID0gZGVlcFBhcnNlZE9wdGlvbnMuY29udGV4dC5pZDtcbiAgY29uc3QgZ2V0RGF0YVBhdGhUZW1wbGF0ZSAgID0gZGVlcFBhcnNlZE9wdGlvbnMuY29udGV4dC5nZXREYXRhUGF0aCB8fCBcIlwiO1xuICAvLyBUT0RPOiBkbyB3ZSBuZWVkIHRvIGNvbnRyb2wgdGhpcyBzZXR0aW5nIGZyb20gQkJqID9cbiAgY29uc3QgZGVib3VuY2VEdXJhdGlvbiAgICAgID0gMjUwO1xuICBjb25zdCBmaW5hbE9wdGlvbnMgPSB7XG4gICAgLi4uZGVlcFBhcnNlZE9wdGlvbnMgLFxuICAgIC4uLntcbiAgICAgIGdldERvY3VtZW50OiAgICAgICAgICAgICgpICAgICA9PiAgIGd3X2dldERvY3VtZW50KCksXG4gICAgICBvbkNlbGxFZGl0aW5nU3RhcnRlZDogICBlICAgICAgPT4geyBnd19vbkNlbGxFZGl0aW5nRXZlbnQoaWQsIGUpIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgb25DZWxsRWRpdGluZ1N0b3BwZWQ6ICAgZSAgICAgID0+IHsgZ3dfb25DZWxsRWRpdGluZ0V2ZW50KGlkLCBlKSB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxcbiAgICAgIG9uQ2VsbFZhbHVlQ2hhbmdlZDogICAgIGUgICAgICA9PiB7IGd3X29uQ2VsbEVkaXRpbmdFdmVudChpZCwgZSkgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsXG4gICAgICBvblJvd0VkaXRpbmdTdGFydGVkOiAgICBlICAgICAgPT4geyBnd19vblJvd0VkaXRpbmdFdmVudChpZCwgZSkgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLFxuICAgICAgb25Sb3dFZGl0aW5nU3RvcHBlZDogICAgZSAgICAgID0+IHsgZ3dfb25Sb3dFZGl0aW5nRXZlbnQoaWQsIGUpICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxcbiAgICAgIG9uUm93VmFsdWVDaGFuZ2VkOiAgICAgIGUgICAgICA9PiB7IGd3X29uUm93RWRpdGluZ0V2ZW50KGlkLCBlKSAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsXG4gICAgICBvbkNlbGxDbGlja2VkOiAgICAgICAgICBlICAgICAgPT4geyBnd19vbkNlbGxDbGlja0V2ZW50KGlkLCBlKSAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLFxuICAgICAgb25DZWxsRG91YmxlQ2xpY2tlZDogICAgZSAgICAgID0+IHsgZ3dfb25DZWxsQ2xpY2tFdmVudChpZCwgZSkgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxcbiAgICAgIG9uR3JpZFJlYWR5OiAgICAgICAgICAgIGUgICAgICA9PiB7IGd3X29uUmVhZHlFdmVudChpZCwgZSkgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsXG4gICAgICBnZXRSb3dOb2RlSWQ6ICAgICAgICAgICBkYXRhICAgPT4gICBnd19nZXRSb3dOb2RlSWQoaWQsIGRhdGEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLFxuICAgICAgZ2V0Q29udGV4dE1lbnVJdGVtczogICAgcGFyYW1zID0+ICAgZ3dfZ2V0Q29udGV4dE1lbnUoaWQsIHBhcmFtcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxcbiAgICAgIFwiZ2V0Q2hhcnRUb29sYmFySXRlbXNcIjogICAgICAgICAgICAgZ3dfZ2V0Q2hhcnRUb29sYmFySXRlbXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxcbiAgICAgIFwicG9wdXBQYXJlbnRcIjogICAgICAgICAgICAgICAgICAgICAgZ3dfZ2V0RG9jdW1lbnQoKS5ib2R5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxcbiAgICAgIFwib25Sb3dEb3VibGVDbGlja2VkXCI6ICAgICAgICAgICAgICAgZ3dfZGVib3VuY2UoZ3dfb25Sb3dEb3VibGVDbGlja2VkLCBkZWJvdW5jZUR1cmF0aW9uKSAgICAgICAgICxcbiAgICAgIFwib25TZWxlY3Rpb25DaGFuZ2VkXCI6ICAgICAgICAgICAgICAgZ3dfZGVib3VuY2UoZ3dfb25TZWxlY3Rpb25DaGFuZ2VkLCBkZWJvdW5jZUR1cmF0aW9uKSAgICAgICAgICxcbiAgICAgIFwib25SYW5nZVNlbGVjdGlvbkNoYW5nZWRcIjogICAgICAgICAgZ3dfZGVib3VuY2UoZ3dfb25SYW5nZVNlbGVjdGlvbkNoYW5nZWQgLCBkZWJvdW5jZUR1cmF0aW9uKSAgICxcbiAgICAgIFwiY29tcG9uZW50c1wiOiB7XG4gICAgICAgIFwiQm9vbGVhbkZpbHRlclwiICAgICAgICAgICAgICAgOiBCYXNpcy5BZ0dyaWRDb21wb25lbnRzLkJvb2xlYW5GaWx0ZXIgICAgICAgICxcbiAgICAgICAgXCJCb29sZWFuUmVuZGVyZXJcIiAgICAgICAgICAgICA6IEJhc2lzLkFnR3JpZENvbXBvbmVudHMuQm9vbGVhblJlbmRlcmVyICAgICAgLFxuICAgICAgICBcIkJvb2xlYW5FZGl0b3JcIiAgICAgICAgICAgICAgIDogQmFzaXMuQWdHcmlkQ29tcG9uZW50cy5Cb29sZWFuRWRpdG9yICAgICAgICAsXG4gICAgICAgIFwiTnVtYmVyRWRpdG9yXCIgICAgICAgICAgICAgICAgOiBCYXNpcy5BZ0dyaWRDb21wb25lbnRzLk51bWJlckVkaXRvciAgICAgICAgICxcbiAgICAgICAgXCJUZXh0RWRpdG9yXCIgICAgICAgICAgICAgICAgICA6IEJhc2lzLkFnR3JpZENvbXBvbmVudHMuVGV4dEVkaXRvciAgICAgICAgICAgLFxuICAgICAgICBcIkRhdGVUaW1lRWRpdG9yXCIgICAgICAgICAgICAgIDogQmFzaXMuQWdHcmlkQ29tcG9uZW50cy5EYXRlVGltZUVkaXRvciAgICAgICAsXG4gICAgICAgIFwiRGF0ZVRpbWVGaWx0ZXJcIiAgICAgICAgICAgICAgOiBCYXNpcy5BZ0dyaWRDb21wb25lbnRzLkRhdGVUaW1lRmlsdGVyICAgICAgICxcbiAgICAgICAgXCJJbWFnZVJlbmRlcmVyXCIgICAgICAgICAgICAgICA6IEJhc2lzLkFnR3JpZENvbXBvbmVudHMuSW1hZ2VSZW5kZXJlciAgICAgICAgLFxuICAgICAgICBcIlRlbXBsYXRlUmVuZGVyZXJcIiAgICAgICAgICAgIDogQmFzaXMuQWdHcmlkQ29tcG9uZW50cy5UZW1wbGF0ZVJlbmRlcmVyICAgICAsXG4gICAgICB9LFxuICAgICAgXCJjb250ZXh0XCI6IHtcbiAgICAgICAgLi4uZGVlcFBhcnNlZE9wdGlvbnMuY29udGV4dCxcbiAgICAgICAgLi4ue1xuICAgICAgICAgIFwiZG9jdW1lbnRcIjogZ3dfZ2V0RG9jdW1lbnQoKSxcbiAgICAgICAgICBcIndpbmRvd1wiICA6IGd3X2dldFdpbmRvdygpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgaWYgKFxuICAgIGZpbmFsT3B0aW9ucy5jb250ZXh0Lmhhc093blByb3BlcnR5KFwibmF2aWdhdGVUb05leHRDZWxsXCIpICYmXG4gICAgZmluYWxPcHRpb25zLmNvbnRleHQubmF2aWdhdGVUb05leHRDZWxsXG4gICkge1xuICAgIGZpbmFsT3B0aW9ucy5uYXZpZ2F0ZVRvTmV4dENlbGwgPSBwYXJhbXMgPT4geyByZXR1cm4gZ3dfbmF2aWdhdGVUb05leHRSb3coaWQsIHBhcmFtcykgfTtcbiAgfVxuXG4gIGlmIChnZXREYXRhUGF0aFRlbXBsYXRlICYmIGZpbmFsT3B0aW9ucy50cmVlRGF0YSkge1xuICAgIGNvbnN0IGdldERhdGFQYXRoVGVtcGxhdGVDb21wbGllZCA9IHRlbXBsYXRlKGdldERhdGFQYXRoVGVtcGxhdGUpO1xuICAgIGZpbmFsT3B0aW9ucy5nZXREYXRhUGF0aCA9IGRhdGEgPT4gZ2V0RGF0YVBhdGhUZW1wbGF0ZUNvbXBsaWVkKHsgZGF0YTogZGF0YSB9KTtcbiAgfVxuXG4gIC8vIGV4dGVuZCB0aGUgY29sdW1uIGRlZmluaXRpb25zXG4gIGd3X2V4dGVuZENvbHVtbkRlZmluaXRpb25zKGZpbmFsT3B0aW9ucy5jb2x1bW5EZWZzKTtcblxuICByZXR1cm4gZmluYWxPcHRpb25zO1xufSIsIi8qXG4qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBCQmpHcmlkRXhXaWRnZXQgcGx1Z2luLlxuKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4qXG4qIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4qIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuKi9cblxuaW1wb3J0ICdleHBvc2UtbG9hZGVyP2pzcyFqc3MvanNzLmpzJztcbmltcG9ydCB7Z3dfZ2V0RG9jdW1lbnR9IGZyb20gXCIuL3V0aWxpdGllc1wiO1xuXG4vKipcbiAqIEFkZCBuZXcgc3R5bGUgXG4gKiBcbiAqIEFkZCBuZXcgc3R5bGUgdG8gdGhlIGRvY3VtZW50IFxuICogXG4gKiBAcGFyYW0ge1N0cmluZ30gc2VsZWN0b3IgY3NzIHNlbGVjdG9yXG4gKiBAcGFyYW0ge1N0cmluZ30gcnVsZXMgSnNvbiBzdHJpbmcgZm9yIGFuIGFycmF5IG9mIHJ1bGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19zZXRTdHlsZShzZWxlY3RvciwgcnVsZXMpIHtcbiAganNzLmZvckRvY3VtZW50KGd3X2dldERvY3VtZW50KCkpLnNldChzZWxlY3RvciwgSlNPTi5wYXJzZShydWxlcykpO1xufVxuXG4vKipcbiAqIFJlbW92ZSBzdHlsZVxuICogXG4gKiBSZW1vdmUgYWRkZWQgc3R5bGUgZnJvbSB0aGVzIGRvY3VtZW50IFxuICogXG4gKiBAcGFyYW0ge1N0cmluZ30gc2VsZWN0b3IgY3NzIHNlbGVjdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19yZW1vdmVTdHlsZShzZWxlY3Rvcikge1xuICBqc3MuZm9yRG9jdW1lbnQoZ3dfZ2V0RG9jdW1lbnQoKSkucmVtb3ZlKHNlbGVjdG9yKTtcbn1cbiIsIi8qXG4qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBCQmpHcmlkRXhXaWRnZXQgcGx1Z2luLlxuKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4qXG4qIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4qIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuKi9cblxuaW1wb3J0IHsgZ3dfZ2V0R3JpZCB9IGZyb20gXCIuL3V0aWxpdGllc1wiXG5pbXBvcnQge1xuICBnd19wYXJzZU5vZGVGcm9tRXZlbnQsXG4gIGd3X3NlbmRFdmVudFxufSBmcm9tIFwiZXZlbnRzL3V0aWxpdGllc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ3dfZ2V0Q29udGV4dE1lbnUoZ3JpZElkLCBwYXJhbXMpIHtcblxuICBjb25zdCBidWlsZENvbnRleHRNZW51QWN0aW9uID0gKHBhcmFtcywgaWQpID0+IHtcblxuICAgIHJldHVybiAoKSA9PiB7XG5cbiAgICAgIGNvbnN0IG5vZGUgPSBnd19wYXJzZU5vZGVGcm9tRXZlbnQocGFyYW1zKTtcbiAgICAgIGNvbnN0IGNvbElkID0gcGFyYW1zLmNvbHVtbi5jb2xJZDtcbiAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW1zLnZhbHVlO1xuXG4gICAgICBnd19zZW5kRXZlbnQoZ3dfZ2V0R3JpZChncmlkSWQpLm9wdGlvbnMuY29udGV4dCwge1xuICAgICAgICAndHlwZSc6ICdndy5jb250ZXh0bWVudScsXG4gICAgICAgICdkZXRhaWwnOiBKU09OLnN0cmluZ2lmeSh7IHI6IG5vZGUsIGM6IGNvbElkLCB2OnZhbHVlLCBpOmlkIH0pXG4gICAgICB9LCBpZCk7XG4gICAgfTtcbiAgfTtcblxuICBjb25zdCBwYXJzZU1lbnUgPSAobWVudSkgPT4ge1xuICAgIG1lbnUuZm9yRWFjaChpdGVtID0+IHtcblxuICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykgcmV0dXJuO1xuXG4gICAgICBpdGVtWydhY3Rpb24nXSA9IGJ1aWxkQ29udGV4dE1lbnVBY3Rpb24ocGFyYW1zLCBpdGVtLmlkKTtcblxuICAgICAgaWYgKGl0ZW1bJ2Nzc0NsYXNzZXMnXSAmJiAhQXJyYXkuaXNBcnJheShpdGVtWydjc3NDbGFzc2VzJ10pKVxuICAgICAgICBpdGVtWydjc3NDbGFzc2VzJ10gPSBpdGVtWydjc3NDbGFzc2VzJ10uc3BsaXQoXCIgXCIpO1xuXG4gICAgICBpZiAoaXRlbVsnc3ViTWVudSddKSBpdGVtWydzdWJNZW51J10gPSBwYXJzZU1lbnUoaXRlbVsnc3ViTWVudSddKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBtZW51O1xuICB9O1xuXG4gIHJldHVybiBwYXJzZU1lbnUoZ3dfZ2V0R3JpZChncmlkSWQpLm9wdGlvbnMuY29udGV4dC5jb250ZXh0TWVudSk7XG59XG4iLCIvKlxuKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQkJqR3JpZEV4V2lkZ2V0IHBsdWdpbi5cbiogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuKlxuKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiovXG5cbmltcG9ydCB7IGd3X2dldEdyaWQgfSBmcm9tIFwiLi91dGlsaXRpZXNcIjtcblxuLyoqXG4gKiBTaG93IGxvYWRpbmcgb3ZlcmxheVxuICogXG4gKiBAcGFyYW0ge1N0cmluZ30gaWQgdGhlIGdyaWQgaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3Nob3dMb2FkaW5nT3ZlcmxheShpZCkge1xuICBnd19nZXRHcmlkKGlkKVxuICAgIC5vcHRpb25zXG4gICAgLmFwaVxuICAgIC5zaG93TG9hZGluZ092ZXJsYXkoKTtcbn1cblxuLyoqXG4gKiBTaG93ICdubyByb3dzJyBvdmVybGF5XG4gKiBcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCB0aGUgZ3JpZCBpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfc2hvd05vUm93c092ZXJsYXkoaWQpIHtcbiAgZ3dfZ2V0R3JpZChpZClcbiAgICAub3B0aW9uc1xuICAgIC5hcGlcbiAgICAuc2hvd05vUm93c092ZXJsYXkoKTtcbn1cblxuLyoqXG4gKiBDbGVhciBhbGwgb3ZlcmxheXNcbiAqIFxuICogQHBhcmFtIHtTdHJpbmd9IGlkIHRoZSBncmlkIGlkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19oaWRlT3ZlcmxheShpZCkge1xuICBnd19nZXRHcmlkKGlkKVxuICAgIC5vcHRpb25zXG4gICAgLmFwaVxuICAgIC5oaWRlT3ZlcmxheSgpO1xufSIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQkJqR3JpZEV4V2lkZ2V0IHBsdWdpbi5cbiAqIChjKSBCYXNpcyBFdXJvcGUgPGV1QEJhc2lzLkFnR3JpZENvbXBvbmVudHMuY29tPlxuICpcbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgeyBnd19nZXRHcmlkIH0gZnJvbSBcIi4vdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBnd19wYXJzZU5vZGUgfSBmcm9tIFwiZXZlbnRzL3V0aWxpdGllc1wiO1xuXG5jb25zdCB7IGRlZXBQYXJzZUpzb24gfSA9IHJlcXVpcmUoXCJkZWVwLXBhcnNlLWpzb25cIik7XG5cbmV4cG9ydCBmdW5jdGlvbiBnd19zZXRRdWlja0ZpbHRlcihpZCwgZmlsdGVyKSB7XG4gIGd3X2dldEdyaWQoaWQpLm9wdGlvbnMuYXBpLnNldFF1aWNrRmlsdGVyKGZpbHRlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnd19leHBhbmRBbGwoaWQpIHtcbiAgZ3dfZ2V0R3JpZChpZCkub3B0aW9ucy5hcGkuZXhwYW5kQWxsKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnd19jb2xsYXBzZUFsbChpZCkge1xuICBnd19nZXRHcmlkKGlkKS5vcHRpb25zLmFwaS5jb2xsYXBzZUFsbCgpO1xufVxuLyoqXG4gKiBFbnN1cmVzIHRoZSByb3cgaW5kZXggaXMgdmlzaWJsZSBieSB2ZXJ0aWNhbGx5IHNjcm9sbGluZyB0aGUgZ3JpZFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCAgdGhlIGdyaWQncyBpZFxuICogQHBhcmFtIHtTdHJpbmd8TnVtYmVyfSBpbmRleCB0aGUgcm93IGluZGV4IG9yIGtleVxuICogQHBhcmFtIHtTdHJpbmd9IHBvc2l0aW9uIHsndG9wJywgJ21pZGRsZScsICdib3R0b20nLCB1bmRlZmluZWQvbnVsbH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X2Vuc3VyZUluZGV4VmlzaWJsZShpZCwgaW5kZXgsIHBvc2l0aW9uKSB7XG4gIGNvbnN0IGFwaSA9IGd3X2dldEdyaWQoaWQpLm9wdGlvbnMuYXBpO1xuICBjb25zdCBub2RlID0gYXBpLmdldFJvd05vZGUoaW5kZXgpO1xuXG4gIGlmIChub2RlKSBhcGkuZW5zdXJlTm9kZVZpc2libGUobm9kZSwgcG9zaXRpb24pO1xuICBlbHNlIGFwaS5lbnN1cmVJbmRleFZpc2libGUoTnVtYmVyKGluZGV4KSwgcG9zaXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3dfbmF2aWdhdGVUb05leHRSb3coaWQsIHBhcmFtcykge1xuICBjb25zdCBvcHRpb25zID0gZ3dfZ2V0R3JpZChpZCkub3B0aW9ucztcbiAgbGV0IHByZXZpb3VzQ2VsbCA9IHBhcmFtcy5wcmV2aW91c0NlbGxQb3NpdGlvbjtcbiAgbGV0IHN1Z2dlc3RlZE5leHRDZWxsID0gcGFyYW1zLm5leHRDZWxsUG9zaXRpb247XG5cbiAgY29uc3QgS0VZX1VQID0gMzg7XG4gIGNvbnN0IEtFWV9ET1dOID0gNDA7XG4gIGNvbnN0IEtFWV9MRUZUID0gMzc7XG4gIGNvbnN0IEtFWV9SSUdIVCA9IDM5O1xuXG4gIHN3aXRjaCAocGFyYW1zLmtleSkge1xuICAgIGNhc2UgS0VZX0RPV046XG4gICAgICAvLyBzZXQgc2VsZWN0ZWQgY2VsbCBvbiBjdXJyZW50IGNlbGwgKyAxXG4gICAgICBvcHRpb25zLmFwaS5mb3JFYWNoTm9kZShub2RlID0+IHtcbiAgICAgICAgaWYgKHByZXZpb3VzQ2VsbC5yb3dJbmRleCArIDEgPT09IG5vZGUucm93SW5kZXgpIHtcbiAgICAgICAgICBub2RlLnNldFNlbGVjdGVkKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBzdWdnZXN0ZWROZXh0Q2VsbDtcbiAgICBjYXNlIEtFWV9VUDpcbiAgICAgIC8vIHNldCBzZWxlY3RlZCBjZWxsIG9uIGN1cnJlbnQgY2VsbCAtIDFcbiAgICAgIG9wdGlvbnMuYXBpLmZvckVhY2hOb2RlKG5vZGUgPT4ge1xuICAgICAgICBpZiAocHJldmlvdXNDZWxsLnJvd0luZGV4IC0gMSA9PT0gbm9kZS5yb3dJbmRleCkge1xuICAgICAgICAgIG5vZGUuc2V0U2VsZWN0ZWQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHN1Z2dlc3RlZE5leHRDZWxsO1xuICAgIGNhc2UgS0VZX0xFRlQ6XG4gICAgY2FzZSBLRVlfUklHSFQ6XG4gICAgICByZXR1cm4gc3VnZ2VzdGVkTmV4dENlbGw7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIllvdSBoYXZlIHN1cGVyIHN0cmFuZ2Uga2V5Ym9hcmRcIik7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgcm93IGJhc2VkIG9uIGBnZXRSb3dOb2RlSWRgIGNvbmZpZyBkZWZpbmVkIGluIHRoZSBncmlkIGNvbnRleHRcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaWQgdGhlIGdyaWQncyBpZFxuICogQHBhcmFtIHtPYmplY3R9IGRhdGEgIHRoZSBkYXRhIHJvd1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfZ2V0Um93Tm9kZUlkKGlkLCBkYXRhKSB7XG4gIHJldHVybiBkYXRhW2d3X2dldEdyaWQoaWQpLm9wdGlvbnMuY29udGV4dC5nZXRSb3dOb2RlSWRdO1xufVxuXG4vKipcbiAqIFVwZGF0ZSB0aGUgZ3JpZCdzIGRhdGEgc2V0XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkIHRoZSBncmlkJ3MgaWRcbiAqIEBwYXJhbSB7T2JqZWN0fSBqc29uIGpzb24gb2JqZWN0IHdoaWNoIGNvbnRhaW5zIHRoZSBuZXcgZGF0YXNldCB0byB1cGRhdGUgdGhlIGdyaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3NldFJvd3NEYXRhKGlkLCBqc29uKSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnd19nZXRHcmlkKGlkKS5vcHRpb25zO1xuXG4gIG9wdGlvbnMuYXBpLnNldFJvd0RhdGEoanNvbik7XG4gIG9wdGlvbnMucm93RGF0YSA9IGpzb247XG59XG5cbi8qKlxuICogUmVzZXQgdGhlIHJvdyBoZWlnaHRcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaWQgIHRoZSBncmlkIGlkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19yZXNldFJvd0hlaWdodHMoaWQpIHtcbiAgZ3dfZ2V0R3JpZChpZCkub3B0aW9ucy5hcGkucmVzZXRSb3dIZWlnaHRzKCk7XG59XG5cbi8qKlxuICogVXBkYXRlIGEgcm93IG9uIHRoZSBncmlkXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkIHRoZSBncmlkJ3MgaWRcbiAqIEBwYXJhbSB7T2JqZWN0fSByb3cgIGEgcm93IGRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3NldFJvd0RhdGEoaWQsIHJvdykge1xuICBjb25zdCBvcHRpb25zID0gZ3dfZ2V0R3JpZChpZCkub3B0aW9ucztcblxuICBvcHRpb25zLmFwaS51cGRhdGVSb3dEYXRhKHsgdXBkYXRlOiBbcm93XSB9KTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgb25lIG9yIG1vcmUgcm93cyBmcm9tIHRoZSBncmlkXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkIHRoZSBncmlkJ3MgaWRcbiAqIEBwYXJhbSB7QXJyYXl9IGluZGV4ZXMgIGFuIGFycmF5IG9mIHJvd3MgaW5kZXhlcyBvciBhbiBhcnJheSBvZiByb3dzIGtleXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3JlbW92ZVJvd3MoaWQsIGluZGV4ZXMpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGd3X2dldEdyaWQoaWQpLm9wdGlvbnM7XG4gIGxldCBpdGVtcyA9IFtdO1xuXG4gIGluZGV4ZXMuZm9yRWFjaChpbmRleCA9PiB7XG4gICAgaXRlbXMucHVzaChvcHRpb25zLmFwaS5nZXRSb3dOb2RlKGluZGV4KS5kYXRhKTtcbiAgfSk7XG5cbiAgb3B0aW9ucy5hcGkudXBkYXRlUm93RGF0YSh7IHJlbW92ZTogaXRlbXMgfSk7XG59XG5cbi8qKlxuICogQWRkIGEgcm93IHRvIGdyaWQgYXQgdGhlIGdpdmVuIGluZGV4XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkIHRoZSBncmlkJ3MgaWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBpbmRleCAgVGhlIGluc2VydGlvbiBwb3NpdGlvblxuICogQHBhcmFtIHtBcnJheX0gcm93cyAgQW4gYXJyYXkgb2Ygcm93cyB0byBhZGRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X2FkZFJvd3MoaWQsIGluZGV4LCByb3dzKSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnd19nZXRHcmlkKGlkKS5vcHRpb25zO1xuXG4gIG9wdGlvbnMuYXBpLnVwZGF0ZVJvd0RhdGEoeyBhZGQ6IHJvd3MsIGFkZEluZGV4OiBpbmRleCB9KTtcbn1cblxuLyoqXG4gKiBTZXQgdGhlIGhlaWdodCBvZiBhbGwgcm93c1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCB0aGUgZ3JpZCBpZFxuICogQHBhcmFtIHtOdW1iZXJ9IGhlaWdodCB0aGUgcm93IGhlaWdodFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfc2V0Um93c0hlaWdodChpZCwgaGVpZ2h0KSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnd19nZXRHcmlkKGlkKS5vcHRpb25zO1xuICBjb25zdCBhcGkgPSBvcHRpb25zLmFwaTtcblxuICBhcGkuZm9yRWFjaE5vZGUocm93ID0+IHtcbiAgICByb3cuc2V0Um93SGVpZ2h0KGhlaWdodCk7XG4gIH0pO1xuXG4gIGFwaS5vblJvd0hlaWdodENoYW5nZWQoKTtcbn1cblxuLyoqXG4gKiBTZXQgdGhlIGdpdmVuIHJvdyBoZWlnaHRcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaWQgdGhlIGdyaWQgaWRcbiAqIEBwYXJhbSB7TnVtYmVyfFN0cmluZ30gaW5kZXggdGhlIHJvdyBpbmRleCBvciBrZXlcbiAqIEBwYXJhbSB7TnVtYmVyfSBoZWlnaHQgdGhlIG5ldyBoZWlnaHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3NldFJvd0hlaWdodChpZCwgaW5kZXgsIGhlaWdodCkge1xuICBjb25zdCBvcHRpb25zID0gZ3dfZ2V0R3JpZChpZCkub3B0aW9ucztcbiAgY29uc3QgYXBpID0gb3B0aW9ucy5hcGk7XG4gIGNvbnN0IHJvdyA9IGFwaS5nZXRSb3dOb2RlKGluZGV4KSB8fCBhcGkuZ2V0RGlzcGxheWVkUm93QXRJbmRleChpbmRleCk7XG5cbiAgaWYgKHJvdykge1xuICAgIHJvdy5zZXRSb3dIZWlnaHQoaGVpZ2h0KTtcbiAgICBvcHRpb25zLmFwaS5vblJvd0hlaWdodENoYW5nZWQoKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLndhcm4oYEZhaWxlZCB0byBzZXQgaGVpZ2h0IGZvciByb3cgJHtpbmRleH0uIFJvdyBjYW5ub3QgYmUgZm91bmRgKTtcbiAgfVxufVxuXG4vKipcbiAqIFNlbGVjdCByb3cgb3IgbW9yZSBiYXNlZCBvbiB0aGUgcm93IGlkIG9yIGluZGV4XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkIHRoZSBncmlkJ3MgaWRcbiAqIEBwYXJhbSB7QXJyYXl9IHJvd3MgYW4gYXJyYXkgb2Ygcm93IGtleXMgYW5kIGluZGV4ZXMgdG8gc2VsZWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19zZXRTZWxlY3RlZFJvd3MoaWQsIHJvd3MpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGd3X2dldEdyaWQoaWQpLm9wdGlvbnM7XG4gIGNvbnN0IGFwaSA9IG9wdGlvbnMuYXBpO1xuXG4gIGFwaS5mb3JFYWNoTm9kZUFmdGVyRmlsdGVyQW5kU29ydChub2RlID0+IHtcbiAgICBpZiAoXG4gICAgICByb3dzLmluZGV4T2YoU3RyaW5nKG5vZGUucm93SW5kZXgpKSA+IC0xIHx8XG4gICAgICByb3dzLmluZGV4T2YoU3RyaW5nKG5vZGUuaWQpKSA+IC0xXG4gICAgKSB7XG4gICAgICBub2RlLnNldFNlbGVjdGVkKHRydWUpO1xuICAgICAgbm9kZS5leHBhbmRlZCA9IHRydWU7XG4gICAgfVxuICB9KTtcblxuICBhcGkub25Hcm91cEV4cGFuZGVkT3JDb2xsYXBzZWQoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGd3X3NlbGVjdEFsbChpZCwgZmlsdGVyZWQpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGd3X2dldEdyaWQoaWQpLm9wdGlvbnM7XG5cbiAgaWYgKDEgPT09IGZpbHRlcmVkKSB7XG4gICAgb3B0aW9ucy5hcGkuc2VsZWN0QWxsRmlsdGVyZWQoKTtcbiAgfSBlbHNlIHtcbiAgICBvcHRpb25zLmFwaS5zZWxlY3RBbGwoKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3dfZGVzZWxlY3RBbGwoaWQsIGZpbHRlcmVkKSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnd19nZXRHcmlkKGlkKS5vcHRpb25zO1xuXG4gIGlmICgxID09PSBmaWx0ZXJlZCkge1xuICAgIG9wdGlvbnMuYXBpLmRlc2VsZWN0QWxsRmlsdGVyZWQoKTtcbiAgfSBlbHNlIHtcbiAgICBvcHRpb25zLmFwaS5kZXNlbGVjdEFsbCgpO1xuICB9XG59XG5cbi8qKlxuICogR2V0IHRoZSBjdXJyZW50IHNlbGVjdGVkIHJvd3NcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gaWQgZ3JpZCdzIGlkXG4gKlxuICogQHJldHVybnMge1N0cmluZ30gIHNlbGVjdGVkIHJvd3MgYXMgSlNPTlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfZ2V0U2VsZWN0ZWRSb3dzKGlkKSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnd19nZXRHcmlkKGlkKS5vcHRpb25zO1xuICBjb25zdCBub2RlcyA9IG9wdGlvbnMuYXBpLmdldFNlbGVjdGVkTm9kZXMoKTtcbiAgbGV0IHBhcnNlZCA9IFtdO1xuXG4gIG5vZGVzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgcGFyc2VkLnB1c2goZ3dfcGFyc2VOb2RlKG5vZGUsIG9wdGlvbnMuY29udGV4dCkpO1xuICB9KTtcblxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocGFyc2VkKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGxhc3Qgc2VsZWN0ZWQgcm93XG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IGlkIGdyaWQncyBpZFxuICpcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHNlbGVjdGVkIHJvdyBhcyBKU09OXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19nZXRTZWxlY3RlZFJvdyhpZCkge1xuICBjb25zdCByb3dzID0gSlNPTi5wYXJzZShnd19nZXRTZWxlY3RlZFJvd3MoaWQpKTtcblxuICBpZiAocm93cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocm93c1tyb3dzLmxlbmd0aCAtIDFdKTtcbiAgfVxuXG4gIHJldHVybiBcIlwiO1xufVxuIiwiLypcbiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEJCakdyaWRFeFdpZGdldCBwbHVnaW4uXG4qIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbipcbiogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4qL1xuXG5pbXBvcnQgeyBnd19nZXRHcmlkIH0gZnJvbSBcIi4vdXRpbGl0aWVzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnd19zZXRTdGF0ZShpZCwgc3RhdGUpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGd3X2dldEdyaWQoaWQpLm9wdGlvbnM7XG5cbiAgdHJ5IHtcbiAgICBvcHRpb25zLmNvbHVtbkFwaS5zZXRDb2x1bW5TdGF0ZShzdGF0ZS5jb2x1bW5zKTtcbiAgICBvcHRpb25zLmNvbHVtbkFwaS5zZXRDb2x1bW5Hcm91cFN0YXRlKHN0YXRlLmdyb3Vwcyk7XG4gICAgb3B0aW9ucy5hcGkuc2V0U29ydE1vZGVsKHN0YXRlLnNvcnQpO1xuICAgIG9wdGlvbnMuYXBpLnNldEZpbHRlck1vZGVsKHN0YXRlLmZpbHRlcnMpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gcGFyc2UgZ3JpZCBzdGF0ZSBmcm9tIEpTT04nLCBlKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3dfZ2V0U3RhdGUoaWQpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGd3X2dldEdyaWQoaWQpLm9wdGlvbnM7XG4gIGNvbnN0IGNvbHVtbnMgPSBvcHRpb25zLmNvbHVtbkFwaS5nZXRDb2x1bW5TdGF0ZSgpO1xuICBjb25zdCBncm91cHMgPSBvcHRpb25zLmNvbHVtbkFwaS5nZXRDb2x1bW5Hcm91cFN0YXRlKCk7XG4gIGNvbnN0IHNvcnQgPSBvcHRpb25zLmFwaS5nZXRTb3J0TW9kZWwoKTtcbiAgY29uc3QgZmlsdGVycyA9IG9wdGlvbnMuYXBpLmdldEZpbHRlck1vZGVsKCk7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgY29sdW1ucyxcbiAgICAgIGdyb3VwcyxcbiAgICAgIHNvcnQsXG4gICAgICBmaWx0ZXJzXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBjb252ZXJ0IHRoZSBncmlkIHN0YXRlIHRvIGpzb24nLCBlKTtcbiAgfVxufSIsIi8qXG4qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBCQmpHcmlkRXhXaWRnZXQgcGx1Z2luLlxuKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4qXG4qIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4qIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuKi9cblxuaW1wb3J0IHsgZ3dfZ2V0R3JpZCB9IGZyb20gXCIuL3V0aWxpdGllc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ3dfc2V0U3RhdHVzYmFyQ29tcG9uZW50VmlzaWJpbGl0eShpZCwga2V5LCB2aXNpYmlsaXR5KSB7XG5cdGd3X2dldEdyaWQoaWQpXG5cdFx0Lm9wdGlvbnNcblx0XHQuYXBpXG5cdFx0LmdldFN0YXR1c1BhbmVsKGtleSlcblx0XHQuc2V0VmlzaWJsZShCb29sZWFuKHZpc2liaWxpdHkpKTtcbn0iLCIvKlxuKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQkJqR3JpZEV4V2lkZ2V0IHBsdWdpbi5cbiogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuKlxuKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiovXG5cbmltcG9ydCB7IGd3X2dldEdyaWQgfSBmcm9tIFwiLi91dGlsaXRpZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGd3X3NldFNpZGVCYXJWaXNpYmxlKGlkLCB2YWx1ZSkge1xuICBnd19nZXRHcmlkKGlkKVxuICAgIC5vcHRpb25zXG4gICAgLmFwaVxuICAgIC5zZXRTaWRlQmFyVmlzaWJsZShCb29sZWFuKHZhbHVlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnd19vcGVuVG9vbHBhbmVsKGdyaWRJZCwgdG9vbHBhbmVsSWQpIHtcbiAgZ3dfZ2V0R3JpZChncmlkSWQpXG4gICAgLm9wdGlvbnNcbiAgICAuYXBpXG4gICAgLm9wZW5Ub29sUGFuZWwodG9vbHBhbmVsSWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3dfY2xvc2VUb29scGFuZWwoZ3JpZElkLCB0b29scGFuZWxJZCkge1xuICBnd19nZXRHcmlkKGdyaWRJZClcbiAgICAub3B0aW9uc1xuICAgIC5hcGlcbiAgICAuY2xvc2VUb29sUGFuZWwodG9vbHBhbmVsSWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3dfc2V0RnVuY3Rpb25zUmVhZE9ubHkoaWQsIHJlYWRvbmx5KSB7XG4gIGd3X2dldEdyaWQoaWQpXG4gICAgLm9wdGlvbnNcbiAgICAuYXBpXG4gICAgLnNldEZ1bmN0aW9uc1JlYWRPbmx5KEJvb2xlYW4ocmVhZG9ubHkpKTtcbn0iLCIvKlxuKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQkJqR3JpZEV4V2lkZ2V0IHBsdWdpbi5cbiogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAQmFzaXMuQWdHcmlkQ29tcG9uZW50cy5jb20+XG4qXG4qIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4qIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuKi9cblxuLyoqXG4gKiBHZXQgZG9jdW1lbnQgXG4gKiBcbiAqIEdldCB0aGUgZG9jdW1lbnQgaW5zdGFuY2UgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IEJCaiBlbnZcbiAqIFxuICogQHJldHVybiB7T2JqZWN0fSBEb2N1bWVudCBpbnN0YW5jZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfZ2V0RG9jdW1lbnQoKSB7XG4gIHJldHVybiB0eXBlb2YgJGRvYyAhPT0gJ3VuZGVmaW5lZCcgPyAkZG9jIDogZG9jdW1lbnQ7XG59XG5cbi8qKlxuICogR2V0IHdpbmRvdyBcbiAqIFxuICogR2V0IHRoZSB3aW5kb3cgaW5zdGFuY2UgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IEJCaiBlbnZcbiAqIFxuICogQHJldHVybiB7T2JqZWN0fSBXaW5kb3cgaW5zdGFuY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X2dldFdpbmRvdygpIHtcbiAgcmV0dXJuIHR5cGVvZiAkd25kICE9PSAndW5kZWZpbmVkJyA/ICR3bmQgOiB3aW5kb3c7XG59XG5cbi8qKlxuICogRXNjYXBlIFZhbHVlIFxuICogXG4gKiBDaGFuZ2UgbnVsbCBhbmQgdW5kZWZpbmVkIHRvIGVtcHR5IHN0cmluZyBcbiAqIFxuICogQHBhcmFtIHsqfSB2YWx1ZSBcbiAqIFxuICogQHJldHVybiB7U3RyaW5nfSBlc2NhcGVkIHZhbHVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19lc2NhcGUodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6ICcnO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgdW5pcXVlIHV1aWQgXG4gKiBAc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEwNTAzNC9jcmVhdGUtZ3VpZC11dWlkLWluLWphdmFzY3JpcHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3V1aWQoKSB7XG4gIHJldHVybiAneHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4Jy5yZXBsYWNlKC9beHldL2csIGZ1bmN0aW9uKGMpIHtcbiAgICB2YXIgciA9IE1hdGgucmFuZG9tKCkgKiAxNiB8IDAsIHYgPSBjID09ICd4JyA/IHIgOiAociAmIDB4MyB8IDB4OCk7XG4gICAgcmV0dXJuIHYudG9TdHJpbmcoMTYpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgR3JpZCBcbiAqIFxuICogUmV0cmlldmUgdGhlIGdyaWQgaW5zdGFuY2UgZnJvbSBgd2luZG93LkJCakdyaWRFeFdpZGdldGAgYXJyYXkgXG4gKiBcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCBUaGUgZ3JpZCdzIGlkXG4gKiBcbiAqIEByZXR1cm4ge09iamVjdHxudWxsfSBUaGUgZ3JpZCdzIGluc3RhbmNlIG9mciBudWxsXG4gKiBAdGhyb3dzIFR5cGVFcnJvciB3aGVuIHRoZSBncmlkIGluc3RhbmNlIGlzIG5vdCBmb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfZ2V0R3JpZChpZCkge1xuICB3aW5kb3cuQkJqR3JpZEV4V2lkZ2V0ID0gd2luZG93LkJCakdyaWRFeFdpZGdldCB8fCB7fTtcbiAgY29uc3QgZ3JpZCA9ICB3aW5kb3cuQkJqR3JpZEV4V2lkZ2V0W2lkXSB8fCBudWxsO1xuXG4gIGlmICghZ3JpZCkge1xuICAgIGNvbnN0IHJlZ2lzdGVyZWRHcmlkcyA9IEpTT04uc3RyaW5naWZ5KE9iamVjdC5rZXlzKHdpbmRvdy5CQmpHcmlkRXhXaWRnZXQpKTtcbiAgICAvL2dldEZ1bmNBcmdzKGZ1bmMpLmZvckVhY2goKGtleSwgaSkgPT4gYXJnc09ialtrZXldID0gYXJnc1tpXSk7XG4gICAgXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbmBcXG5cXG5bR3JpZCBOb3QgRm91bmRdIFRoZSBtZXRob2QgYXNrZWQgZm9yIG5vbi1leGlzdGVudCBncmlkIGluc3RhbmNlLlxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuUmVxdWlyZWQgR3JpZCBJZCA6ICR7aWR9ICAgXG5SZWdpc3RlcmVkIEdyaWRzIDogJHtyZWdpc3RlcmVkR3JpZHN9XG5gKTtcbiAgfVxuICBcbiAgcmV0dXJuIGdyaWQ7XG59XG5cbi8qKlxuICogQWRkIEdyaWQgXG4gKiBcbiAqIFN0b3JlIGEgbmV3IGdyaWQgaW5zdGFuY2UgYnkgaW4gdGhlIGB3aW5kb3cuQkJqR3JpZEV4V2lkZ2V0YCBhcnJheSBcbiAqIFxuICogQHBhcmFtIHtTdHJpbmd9IGlkIFRoZSBncmlkJ3MgaWRcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zICBUaGUgZ3JpZCdzIG9wdGlvbnNcbiAqIFxuICogQHJldHVybiB7T2JqZWN0fSBTdG9yZWQgZ3JpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfYWRkR3JpZChpZCwgb3B0aW9ucykge1xuICB3aW5kb3cuQkJqR3JpZEV4V2lkZ2V0ID0gd2luZG93LkJCakdyaWRFeFdpZGdldCB8fCB7fTtcbiAgd2luZG93LkJCakdyaWRFeFdpZGdldFtpZF0gPSBvcHRpb25zO1xuICBcbiAgcmV0dXJuIGd3X2dldEdyaWQoaWQpO1xufSIsIi8qXG4qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBCQmpHcmlkRXhXaWRnZXQgcGx1Z2luLlxuKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4qXG4qIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4qIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuKi9cblxuLy8gc2VsZWN0aW9uIGNvbnN0YW50c1xuZXhwb3J0IGNvbnN0IEdXX0VWRU5UX1JPV19DTElDSyA9IDY5O1xuZXhwb3J0IGNvbnN0IEdXX0VWRU5UX1JPV19ET1VCTEVfQ0xJQ0sgPSA1MjtcbmV4cG9ydCBjb25zdCBHV19FVkVOVF9DRUxMX0NMSUNLID0gNTAwMTtcbmV4cG9ydCBjb25zdCBHV19FVkVOVF9DRUxMX0RPVUJMRV9DTElDSyA9IDUwMDI7XG5cbi8vIGVkaXRpbmcgY29uc3RhbnRzXG5leHBvcnQgY29uc3QgR1dfRVZFTlRfQ0VMTF9FRElUSU5HX1NUQVJURUQgPSA1MDAzO1xuZXhwb3J0IGNvbnN0IEdXX0VWRU5UX0NFTExfRURJVElOR19TVE9QUEVEID0gNTAwNDtcbmV4cG9ydCBjb25zdCBHV19FVkVOVF9DRUxMX1ZBTFVFX0NIQU5HRUQgPSA1MDA1O1xuZXhwb3J0IGNvbnN0IEdXX0VWRU5UX1JPV19FRElUSU5HX1NUQVJURUQgID0gNTAwNjtcbmV4cG9ydCBjb25zdCBHV19FVkVOVF9ST1dfRURJVElOR19TVE9QUEVEID0gNTAwNztcblxuLy8gc3RhdGUgY29uc3RhbnRzXG5leHBvcnQgY29uc3QgR1dfRVZFTlRfR1JJRF9TVEFURV9DSEFOR0UgPSA1MDA4O1xuXG4vLyByYW5nZSBzZWxlY3Rpb25cbmV4cG9ydCBjb25zdCBHV19FVkVOVF9SQU5HRV9TRUxFQ1RJT05fQ0hBTkdFRCA9IDUwMDk7XG5cbi8vIGtleWJvYXJkIGV2ZW50c1xuZXhwb3J0IGNvbnN0IEdXX0VWRU5UX0tFWVBSRVNTID0gNTAxMDsiLCIvKlxuKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQkJqR3JpZEV4V2lkZ2V0IHBsdWdpbi5cbiogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuKlxuKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiovXG5cbmltcG9ydCB7IGd3X3NlbmRFdmVudCwgZ3dfcGFyc2VOb2RlRnJvbUV2ZW50IH0gZnJvbSBcIi4vdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBnd19lc2NhcGUsIGd3X2dldEdyaWQgfSBmcm9tIFwiYXBpL3V0aWxpdGllc1wiO1xuaW1wb3J0IHtcbiAgR1dfRVZFTlRfQ0VMTF9FRElUSU5HX1NUQVJURUQsXG4gIEdXX0VWRU5UX0NFTExfRURJVElOR19TVE9QUEVELFxuICBHV19FVkVOVF9DRUxMX1ZBTFVFX0NIQU5HRUQsXG4gIEdXX0VWRU5UX1JPV19FRElUSU5HX1NUQVJURUQsXG4gIEdXX0VWRU5UX1JPV19FRElUSU5HX1NUT1BQRURcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IENFTExfRURJVElOR19FVkVOVFNfTUFQID0ge1xuICAnY2VsbEVkaXRpbmdTdGFydGVkJyAgOiBHV19FVkVOVF9DRUxMX0VESVRJTkdfU1RBUlRFRCxcbiAgJ2NlbGxFZGl0aW5nU3RvcHBlZCcgIDogR1dfRVZFTlRfQ0VMTF9FRElUSU5HX1NUT1BQRUQsXG4gICdjZWxsVmFsdWVDaGFuZ2VkJyAgOiBHV19FVkVOVF9DRUxMX1ZBTFVFX0NIQU5HRUQsXG59O1xuXG5jb25zdCBST1dfRURJVElOR19FVkVOVFNfTUFQID0ge1xuICAncm93RWRpdGluZ1N0YXJ0ZWQnICA6IEdXX0VWRU5UX1JPV19FRElUSU5HX1NUQVJURUQsXG4gICdyb3dFZGl0aW5nU3RvcHBlZCcgIDogR1dfRVZFTlRfUk9XX0VESVRJTkdfU1RPUFBFRCxcbn07XG5cbi8qKlxuICogQW4gaGFuZGxlciBmb3IgdGhlIGdyaWQgYGNlbGxFZGl0aW5nU3RhcnRlZGAgLCBgY2VsbEVkaXRpbmdTdG9wcGVkYCBhbmQgXG4gKiBgY2VsbFZhbHVlQ2hhbmdlZGAgZXZlbnRzXG4gKiBcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCBUaGUgZ3JpZCdzIGlkXG4gKiBAcGFyYW0ge09iamVjdH0gZSAgVGhlIGV2ZW50IHBheWxvYWRcbiAqIFxuICogQGxpc3RlbnMgYWdHcmlkLmNlbGxFZGl0aW5nU3RhcnRlZFxuICogQGxpc3RlbnMgYWdHcmlkLmNlbGxFZGl0aW5nU3RvcHBlZFxuICogQGxpc3RlbnMgYWdHcmlkLmNlbGxWYWx1ZUNoYW5nZWRcbiAqIFxuICogQGZpcmVzIGd3LmNlbGxFZGl0aW5nU3RhcnRlZFxuICogQGZpcmVzIGd3LmNlbGxFZGl0aW5nU3RvcHBlZFxuICogQGZpcmVzIGd3LmNlbGxWYWx1ZUNoYW5nZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X29uQ2VsbEVkaXRpbmdFdmVudChpZCwgZSkge1xuXG4gIGNvbnN0IHZhbHVlID0gZS5oYXNPd25Qcm9wZXJ0eShcIm5ld1ZhbHVlXCIpID8gZ3dfZXNjYXBlKGUubmV3VmFsdWUpIDogZ3dfZXNjYXBlKGUudmFsdWUpO1xuICBjb25zdCBvbGRWYWx1ZSA9IGUuaGFzT3duUHJvcGVydHkoXCJvbGRWYWx1ZVwiKSA/ICBnd19lc2NhcGUoZS5vbGRWYWx1ZSkgOiAoZS5oYXNPd25Qcm9wZXJ0eShcIm5ld1ZhbHVlXCIpID8gZ3dfZXNjYXBlKGUubmV3VmFsdWUpIDogZ3dfZXNjYXBlKGUudmFsdWUpKVxuXG4gIC8vaWYgKHZhbHVlID09PSBvbGRWYWx1ZSkgcmV0dXJuO1xuXG4gIGNvbnN0IHBhcnNlZCA9IGd3X3BhcnNlTm9kZUZyb21FdmVudChlKTtcbiAgY29uc3QgdHlwZSA9IGUudHlwZTtcbiAgY29uc3QgY29sSWQgPSBlLmNvbHVtbi5jb2xJZDtcblxuICBpZiAocGFyc2VkKSB7XG4gICAgZ3dfc2VuZEV2ZW50KFxuICAgICAgZ3dfZ2V0R3JpZChpZCkub3B0aW9ucy5jb250ZXh0LFxuICAgICAge1xuICAgICAgICAndHlwZSc6IGBndy4ke3R5cGV9YCxcbiAgICAgICAgJ2RldGFpbCc6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICByOiBwYXJzZWQsIC8vIHJvd1xuICAgICAgICAgIHY6IHZhbHVlLCAvLyBuZXcgdmFsdWVcbiAgICAgICAgICBvOiBvbGRWYWx1ZSwgLy8gb2xkIHZhbHVlXG4gICAgICAgICAgYzogY29sSWQgLy8gY29sdW1uXG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgQ0VMTF9FRElUSU5HX0VWRU5UU19NQVBbdHlwZV1cbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogQW4gaGFuZGxlciBmb3IgdGhlIGdyaWQgYHJvd0VkaXRpbmdTdGFydGVkYCAsIGByb3dFZGl0aW5nU3RvcHBlZGAgZXZlbnRzXG4gKiBcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCBUaGUgZ3JpZCdzIGlkXG4gKiBAcGFyYW0ge09iamVjdH0gZSAgVGhlIGV2ZW50IHBheWxvYWRcbiAqIFxuICogQGxpc3RlbnMgYWdHcmlkLnJvd0VkaXRpbmdTdGFydGVkXG4gKiBAbGlzdGVucyBhZ0dyaWQucm93RWRpdGluZ1N0b3BwZWRcbiAqIFxuICogQGZpcmVzIGd3LnJvd0VkaXRpbmdTdGFydGVkXG4gKiBAZmlyZXMgZ3cucm93RWRpdGluZ1N0b3BwZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X29uUm93RWRpdGluZ0V2ZW50KGlkLCBlKSB7XG4gIGNvbnN0IHBhcnNlZCA9IGd3X3BhcnNlTm9kZUZyb21FdmVudChlKTtcblxuICBpZiAocGFyc2VkKSB7XG4gICAgY29uc3QgdHlwZSA9IGUudHlwZTtcbiAgICBnd19zZW5kRXZlbnQoXG4gICAgICBnd19nZXRHcmlkKGlkKS5vcHRpb25zLmNvbnRleHQsXG4gICAgICB7XG4gICAgICAgICd0eXBlJzogYGd3LiR7ZS50eXBlfWAsXG4gICAgICAgICdkZXRhaWwnOiBKU09OLnN0cmluZ2lmeShwYXJzZWQpXG4gICAgICB9LFxuICAgICAgUk9XX0VESVRJTkdfRVZFTlRTX01BUFt0eXBlXVxuICAgICk7XG4gIH1cbn1cblxuIiwiLypcbiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEJCakdyaWRFeFdpZGdldCBwbHVnaW4uXG4qIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbipcbiogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4qL1xuXG5pbXBvcnQge1xuXHRnd19vblJvd0RvdWJsZUNsaWNrZWQsXG5cdGd3X29uU2VsZWN0aW9uQ2hhbmdlZCxcblx0Z3dfb25DZWxsQ2xpY2tFdmVudCxcblx0Z3dfb25SYW5nZVNlbGVjdGlvbkNoYW5nZWRcbn0gZnJvbSBcIi4vc2VsZWN0aW9uc1wiO1xuXG5pbXBvcnQge1xuXHRnd19vbkNlbGxFZGl0aW5nRXZlbnQsXG5cdGd3X29uUm93RWRpdGluZ0V2ZW50XG59IGZyb20gXCIuL2VkaXRpbmdcIjtcblxuaW1wb3J0IHtcblx0Z3dfb25SZWFkeUV2ZW50XG59IGZyb20gXCIuL3JlYWR5XCI7XG5cbmltcG9ydCB7XG5cdGd3X2RlYm91bmNlXG59IGZyb20gXCIuL3V0aWxpdGllc1wiO1xuXG5leHBvcnQge1xuXHRnd19vblJvd0RvdWJsZUNsaWNrZWQsXG5cdGd3X29uU2VsZWN0aW9uQ2hhbmdlZCxcblx0Z3dfb25SYW5nZVNlbGVjdGlvbkNoYW5nZWQsXG5cdGd3X29uQ2VsbENsaWNrRXZlbnQsXG5cdGd3X29uQ2VsbEVkaXRpbmdFdmVudCxcblx0Z3dfb25Sb3dFZGl0aW5nRXZlbnQsXG5cdGd3X29uUmVhZHlFdmVudCxcblx0Z3dfZGVib3VuY2Vcbn07IiwiLypcbiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEJCakdyaWRFeFdpZGdldCBwbHVnaW4uXG4qIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbipcbiogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4qL1xuXG5pbXBvcnQgeyBnd19zZW5kRXZlbnQgfSBmcm9tIFwiLi91dGlsaXRpZXNcIjtcbmltcG9ydCB7IEdXX0VWRU5UX0tFWVBSRVNTIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBnd19nZXRHcmlkIH0gZnJvbSBcImFwaS91dGlsaXRpZXNcIjtcblxuLyoqXG4gKiBDb21wb3NlIGEgbW9kZWwgb2YgdGhlIGtleWRvd24gZXZlbnQgYW5kIHNlbmQgaXQgdG8gQkJqXG4gKiBcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCAgdGhlIGdyaWQncyBpZFxuICogQHBhcmFtIHtFdmVudH0ga2V5ZG93bkV2ZW50IGtleWRvd24gZXZlbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X29uS2V5ZG93bihpZCwga2V5ZG93bkV2ZW50KSB7XG4gIGd3X3NlbmRFdmVudChcbiAgICBnd19nZXRHcmlkKGlkKS5vcHRpb25zLmNvbnRleHQsXG4gICAge1xuICAgICAgJ3R5cGUnOiBgZ3cua2V5cHJlc3NgLFxuICAgICAgJ2RldGFpbCc6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgYzogIGtleWRvd25FdmVudC5rZXksXG4gICAgICAgIGtjOiBrZXlkb3duRXZlbnQud2hpY2ggfHwgTnVtYmVyKGtleWRvd25FdmVudC5rZXlDb2RlKSxcbiAgICAgICAgYWs6IGtleWRvd25FdmVudC5hbHRLZXksXG4gICAgICAgIHNrOiBrZXlkb3duRXZlbnQuc2hpZnRLZXksXG4gICAgICAgIGNrOiBrZXlkb3duRXZlbnQuY3RybEtleSxcbiAgICAgIH0pXG4gICAgfSxcbiAgICBHV19FVkVOVF9LRVlQUkVTU1xuICApO1xufVxuIiwiLypcbiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEJCakdyaWRFeFdpZGdldCBwbHVnaW4uXG4qIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbipcbiogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4qL1xuXG5pbXBvcnQgeyBnd19kZWJvdW5jZSB9IGZyb20gXCIuL3V0aWxpdGllc1wiO1xuaW1wb3J0IHsgZ3dfb25TdGF0ZUNoYW5nZWQgfSBmcm9tIFwiLi9zdGF0ZVwiO1xuaW1wb3J0IHsgZ3dfb25LZXlkb3duIH0gZnJvbSBcIi4va2V5Ym9hcmRcIjtcbmltcG9ydCB7IGd3X2dldEdyaWQgfSBmcm9tIFwiYXBpL3V0aWxpdGllc1wiO1xuXG4vKipcbiAqIE9uIFJlYWR5IEV2ZW50IFxuICogXG4gKiBUaGUgbWV0aG9kIHdpbGwgaWdub3JlIGZpcnN0IHJlYWR5IGV2ZW50IGFuZCB0aGVuIHJlZ2lzdGVyIGEgZGVib3VuY2VkIHN0YXRlXG4gKiBjYWxsYmFjayB0byBzZW5kIHN0YXRlIGV2ZW50cyB0byBCQmpcbiAqIFxuICogQHBhcmFtIHtTdHJpbmd9IGlkIFRoZSBncmlkJ3MgaWRcbiAqIEBwYXJhbSB7T2JqZWN0fSBlICBUaGUgZXZlbnQgcGF5bG9hZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfb25SZWFkeUV2ZW50KGlkLCBlKSB7XG4gIGNvbnN0IGdyaWQgPSBnd19nZXRHcmlkKGlkKTtcblxuICAvLyByZWdpc3RlciBzdGF0ZSBkZWJvdW5jZSBtb25pdG9yIFxuICBjb25zdCBzdGF0ZURlYm91bmNlID0gZ3dfZGVib3VuY2UoY2hhbmdlRXZlbnQgPT4ge1xuICAgIGd3X29uU3RhdGVDaGFuZ2VkKGlkLCBjaGFuZ2VFdmVudCk7XG4gIH0sIDUwMCk7XG5cbiAgW1xuICAgICdzb3J0Q2hhbmdlZCcsXG4gICAgJ2ZpbHRlckNoYW5nZWQnLFxuICAgICdjb2x1bW5WaXNpYmxlJyxcbiAgICAnY29sdW1uUGlubmVkJyxcbiAgICAnY29sdW1uUmVzaXplZCcsXG4gICAgJ2NvbHVtbk1vdmVkJyxcbiAgICAnbmV3Q29sdW1uc0xvYWRlZCcsXG4gICAgJ2dyaWRDb2x1bW5zQ2hhbmdlZCcsXG4gICAgJ2Rpc3BsYXllZENvbHVtbnNDaGFuZ2VkJyxcbiAgICAndmlydHVhbENvbHVtbnNDaGFuZ2VkJyxcbiAgICAnY29sdW1uRXZlcnl0aGluZ0NoYW5nZWQnLFxuICAgIC8vJ2dyaWRTaXplQ2hhbmdlZCcsXG4gICAgJ2V4cGFuZE9yQ29sbGFwc2VBbGwnLFxuICAgIC8vJ3Rvb2xQYW5lbFZpc2libGVDaGFuZ2VkJ1xuICBdLmZvckVhY2goZXZlbnQgPT4ge1xuICAgIGdyaWQub3B0aW9ucy5hcGkuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgc3RhdGVEZWJvdW5jZSk7XG4gIH0pO1xuXG4gIC8vIHJlZ2lzdGVyIGtleWJvYXJkIGRlYm91bmNlIG1vbml0b3IgXG4gIGNvbnN0IGtleWJvYXJkRGVib3VuY2UgPSBnd19kZWJvdW5jZShrZXlkb3duRXZlbnQgPT4ge1xuICAgIGd3X29uS2V5ZG93bihpZCwga2V5ZG93bkV2ZW50KTtcbiAgfSAsIDUwMCk7XG5cbiAgZ3JpZC5jb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGtleWJvYXJkRGVib3VuY2UpO1xufSIsIi8qXG4qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBCQmpHcmlkRXhXaWRnZXQgcGx1Z2luLlxuKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4qXG4qIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4qIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuKi9cblxuaW1wb3J0IHsgZ3dfc2VuZEV2ZW50LCBnd19wYXJzZU5vZGVGcm9tRXZlbnQgfSBmcm9tIFwiLi91dGlsaXRpZXNcIjtcbmltcG9ydCB7IGd3X2VzY2FwZSwgZ3dfZ2V0R3JpZCB9IGZyb20gXCJhcGkvdXRpbGl0aWVzXCI7XG5pbXBvcnQge1xuICBHV19FVkVOVF9ST1dfQ0xJQ0ssXG4gIEdXX0VWRU5UX1JPV19ET1VCTEVfQ0xJQ0ssXG4gIEdXX0VWRU5UX0NFTExfQ0xJQ0ssXG4gIEdXX0VWRU5UX0NFTExfRE9VQkxFX0NMSUNLLFxuICBHV19FVkVOVF9SQU5HRV9TRUxFQ1RJT05fQ0hBTkdFRFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuY29uc3QgQ0VMTF9DTElDS0lOR19FVkVOVFNfTUFQID0ge1xuICAnY2VsbENsaWNrZWQnOiBHV19FVkVOVF9DRUxMX0NMSUNLLFxuICAnY2VsbERvdWJsZUNsaWNrZWQnOiBHV19FVkVOVF9DRUxMX0RPVUJMRV9DTElDSyxcbn07XG5cbi8qKlxuICogQW4gaGFuZGxlciBmb3IgdGhlIGdyaWQgYHJvd0RvdWJsZUNsaWNrZWRgIGV2ZW50XG4gKiBcbiAqIFRoZSBmdW5jdGlvbiB3aWxsIHNlbmQgYSBiYmogZXZlbnQgd2l0aCBgR1dfTk9ERWAgYXMgcGF5bG9hZFxuICogXG4gKiBAcGFyYW0ge09iamVjdH0gZSBUaGUgZXZlbnQncyBwYXlsb2FkXG4gKiBcbiAqIEBsaXN0ZW5zIGFnR3JpZC5yb3dEb3VibGVDbGlja2VkXG4gKiBAZmlyZXMgZ3cucm93RG91YmxlQ2xpY2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X29uUm93RG91YmxlQ2xpY2tlZChlKSB7XG4gIGNvbnN0IGNvbnRleHQgPSBlLmFwaS5ncmlkT3B0aW9uc1dyYXBwZXIuZ3JpZE9wdGlvbnMuY29udGV4dDtcbiAgZ3dfc2VuZEV2ZW50KGNvbnRleHQsIHtcbiAgICAndHlwZSc6ICdndy5yb3dEb3VibGVDbGljaycsXG4gICAgJ2RldGFpbCc6ICcnXG4gIH0sIEdXX0VWRU5UX1JPV19ET1VCTEVfQ0xJQ0spO1xufVxuXG4vKipcbiAqIEEgaGFuZGxlciBmb3IgdGhlIGdyaWQgYHNlbGVjdGlvbkNoYW5nZWRgIGV2ZW50XG4gKiBcbiAqIEBwYXJhbSB7T2JqZWN0fSBlICBUaGUgZXZlbnQgcGF5bG9hZFxuICogXG4gKiBAbGlzdGVucyBhZ0dyaWQuc2VsZWN0aW9uQ2hhbmdlZFxuICogQGZpcmVzIGd3LnJvd1NlbGVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfb25TZWxlY3Rpb25DaGFuZ2VkKGUpIHtcbiAgY29uc3QgY29udGV4dCA9IGUuYXBpLmdyaWRPcHRpb25zV3JhcHBlci5ncmlkT3B0aW9ucy5jb250ZXh0O1xuICBnd19zZW5kRXZlbnQoY29udGV4dCwge1xuICAgICd0eXBlJzogJ2d3LnJvd1NlbGVjdCcsXG4gICAgJ2RldGFpbCc6ICcnXG4gIH0sIEdXX0VWRU5UX1JPV19DTElDSyk7XG59XG5cbi8qKlxuICogQSBoYW5kbGVyIGZvciB0aGUgZ3JpZCBgcmFuZ2VTZWxlY3Rpb25DaGFuZ2VkYCBldmVudFxuICogXG4gKiBAcGFyYW0ge09iamVjdH0gZSBcbiAqIFxuICogQGxpc3RlbnMgYWdHcmlkLnJhbmdlU2VsZWN0aW9uQ2hhbmdlZFxuICogQGZpcmVzIGd3LnJhbmdlU2VsZWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19vblJhbmdlU2VsZWN0aW9uQ2hhbmdlZChlKSB7XG4gIGNvbnN0IGNvbnRleHQgPSBlLmFwaS5ncmlkT3B0aW9uc1dyYXBwZXIuZ3JpZE9wdGlvbnMuY29udGV4dDtcbiAgZ3dfc2VuZEV2ZW50KGNvbnRleHQsIHtcbiAgICAndHlwZSc6ICdndy5yYW5nZVNlbGVjdGlvbicsXG4gICAgJ2RldGFpbCc6ICcnXG4gIH0sIEdXX0VWRU5UX1JBTkdFX1NFTEVDVElPTl9DSEFOR0VEKTtcbn1cblxuLyoqXG4gKiBBIGhhbmRsZXIgZm9yIHRoZSBncmlkIGBjZWxsQ2xpY2tFdmVudGAgJiBgY2VsbERvdWJsZUNsaWNrZWRgIGV2ZW50XG4gKiBcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCBUaGUgZ3JpZCdzIGlkXG4gKiBAcGFyYW0ge09iamVjdH0gZSAgVGhlIGV2ZW50IHBheWxvYWRcbiAqIFxuICogQGxpc3RlbnMgYWdHcmlkLmNlbGxDbGlja0V2ZW50XG4gKiBAbGlzdGVucyBhZ0dyaWQuY2VsbERvdWJsZUNsaWNrZWRcbiAqIFxuICogQGZpcmVzIGd3LmNlbGxDbGlja2VkXG4gKiBAZmlyZXMgZ3cuY2VsbERvdWJsZUNsaWNrZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X29uQ2VsbENsaWNrRXZlbnQoaWQsIGUpIHtcbiAgY29uc3QgcGFyc2VkID0gZ3dfcGFyc2VOb2RlRnJvbUV2ZW50KGUpO1xuXG4gIGlmIChwYXJzZWQpIHtcbiAgICBjb25zdCB0eXBlID0gZS50eXBlO1xuICAgIGd3X3NlbmRFdmVudChnd19nZXRHcmlkKGlkKS5vcHRpb25zLmNvbnRleHQsIHtcbiAgICAgICd0eXBlJzogYGd3LiR7ZS50eXBlfWAsXG4gICAgICAnZGV0YWlsJzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICByOiBwYXJzZWQsIC8vIHJvd1xuICAgICAgICB2OiBnd19lc2NhcGUoZS52YWx1ZSksICAvLyBuZXcgdmFsdWVcbiAgICAgICAgbzogZ3dfZXNjYXBlKGUudmFsdWUpLCAvLyBvZGwgdmFsdWVcbiAgICAgICAgYzogZS5jb2x1bW4uY29sSWQgLy8gY29sdW1uc1xuICAgICAgfSlcbiAgICB9LCBDRUxMX0NMSUNLSU5HX0VWRU5UU19NQVBbdHlwZV0pO1xuICB9XG59XG4iLCIvKlxuKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQkJqR3JpZEV4V2lkZ2V0IHBsdWdpbi5cbiogKGMpIEJhc2lzIEV1cm9wZSA8ZXVAYmFzaXMuY29tPlxuKlxuKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiovXG5cbmltcG9ydCB7IGd3X3NlbmRFdmVudCB9IGZyb20gXCIuL3V0aWxpdGllc1wiO1xuaW1wb3J0IHsgZ3dfZ2V0R3JpZCB9IGZyb20gXCJhcGkvdXRpbGl0aWVzXCI7XG5pbXBvcnQge1xuICBHV19FVkVOVF9HUklEX1NUQVRFX0NIQU5HRVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuLyoqXG4gKiBBbiBoYW5kbGVyIGZvciB0aGUgZ3JpZCBgc3RhdGVDaGFuZ2VkYCBldmVudHNcbiAqIFxuICogQHBhcmFtIHtTdHJpbmd9IGlkIFRoZSBncmlkJ3MgaWRcbiAqIEBwYXJhbSB7T2JqZWN0fSBlICBUaGUgZXZlbnQgcGF5bG9hZFxuICogXG4gKiBAbGlzdGVucyBhZ0dyaWQuc3RhdGVDaGFuZ2VkXG4gKiBAbGlzdGVucyBhZ0dyaWQucm93RWRpdGluZ1N0b3BwZWRcbiAqIFxuICogQGZpcmVzIGd3LnN0YXRlQ2hhbmdlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3dfb25TdGF0ZUNoYW5nZWQoaWQsIGUpIHtcbiAgZ3dfc2VuZEV2ZW50KFxuICAgIGd3X2dldEdyaWQoaWQpLm9wdGlvbnMuY29udGV4dCxcbiAgICB7XG4gICAgICAndHlwZSc6ICdndy5zdGF0ZUNoYW5nZWQnLFxuICAgICAgJ2RldGFpbCc6IFtdXG4gICAgfSxcbiAgICBHV19FVkVOVF9HUklEX1NUQVRFX0NIQU5HRVxuICApO1xufSIsIi8qXG4qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBCQmpHcmlkRXhXaWRnZXQgcGx1Z2luLlxuKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4qXG4qIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4qIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuKi9cblxuaW1wb3J0IHsgZ3dfZ2V0RG9jdW1lbnQgfSBmcm9tIFwiYXBpL3V0aWxpdGllc1wiO1xuXG4vKiogaHR0cHM6Ly9kYXZpZHdhbHNoLm5hbWUvamF2YXNjcmlwdC1kZWJvdW5jZS1mdW5jdGlvbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X2RlYm91bmNlKGZ1bmMsIHdhaXQsIGltbWVkaWF0ZSkge1xuICB2YXIgdGltZW91dDtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY29udGV4dCA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgdmFyIGxhdGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgICBpZiAoIWltbWVkaWF0ZSkgZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICB9O1xuICAgIHZhciBjYWxsTm93ID0gaW1tZWRpYXRlICYmICF0aW1lb3V0O1xuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICB0aW1lb3V0ID0gc2V0VGltZW91dChsYXRlciwgd2FpdCk7XG4gICAgaWYgKGNhbGxOb3cpIGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gIH07XG59XG5cbi8qKlxuICogU2VuZCBhbiBldmVudCB0byBCQmogc2lkZSBcbiAqIFxuICogVGhlIGZ1bmN0aW9uIHdpbGwgdHJpZ2dlciBhIGN1c3RvbSBjbGljayBldmVudCBvbiB0aGUgYGV2ZW50LWJyaWRnZS0ke2lkfWAgZGl2XG4gKiB0aGVuIHRoZSBkaXYgd2lsbCB1c2UgYmFzaXNEaXNwYXRjaEN1c3RvbUV2ZW50IHRvIGRpc3BhdGNoIHRoZSBldmVudCB0byBCQmpcbiAqIFxuICogQHBhcmFtIHtBcnJheX0gY29udGV4dCB0aGUgZ3JpZCdzIGNvbnRleHRcbiAqIEBwYXJhbSB7Kn0gcGF5bG9hZCB0aGUgZXZlbnQgcGF5bG9hZFxuICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50SWQgdGhlIGV2ZW50J3MgaWQgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnd19zZW5kRXZlbnQoY29udGV4dCwgcGF5bG9hZCA9IHt9LCBldmVudElkID0gW10pIHtcbiAgY29uc3QgcmVnaXN0ZXJlZEludGVyZXN0cyA9IGNvbnRleHQuaW50ZXJlc3RzIHx8IFtdO1xuXG4gIGlmIChyZWdpc3RlcmVkSW50ZXJlc3RzLmluY2x1ZGVzKGV2ZW50SWQpKSB7XG4gICAgY29uc3QgZGl2ID0gZ3dfZ2V0RG9jdW1lbnQoKS5nZXRFbGVtZW50QnlJZChgZXZlbnQtYnJpZGdlLSR7Y29udGV4dC5pZH1gKTtcbiAgICBjb25zdCBldmVudCA9IG5ldyBDdXN0b21FdmVudCgnY2xpY2snKTtcblxuICAgIGV2ZW50LnBheWxvYWQgPSBwYXlsb2FkO1xuICAgIGRpdi5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgfVxufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEJCakdyaWRFeFdpZGdldFJvd1xuICogXG4gKiBAcHJvcGVydHkge251bWJlcn0gaWQgXG4gKiBAcHJvcGVydHkge251bWJlcn0gaW5kZXggXG4gKiBAcHJvcGVydHkge251bWJlcn0gcGFyZW50S2V5IFxuICogQHByb3BlcnR5IHtudW1iZXJ9IGNoaWxkSW5kZXggXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHNlbGVjdGVkIFxuICovXG5cbi8qKlxuICogUGFyc2UgYSBub2RlIGFzIEJCakdyaWRFeFdpZGdldFJvd1xuICogXG4gKiBAcGFyYW0ge09iamVjdH0gbm9kZSBhZyBncmlkIG5vZGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0ICBhZyBncmlkIGNvbnRleHRcbiAqIFxuICogQHJldHVybnMge0JCakdyaWRFeFdpZGdldFJvd3xCb29sZWFufSBvYmplY3QgZm9ybWF0dGVkIGFzIEJCakdyaWRFeFdpZGdldFJvdy5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgaWYgdGhlIG5vZGUgaXMgZm9yIGdyb3VwIG5vZGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3BhcnNlTm9kZShub2RlLCBjb250ZXh0KSB7XG5cbiAgaWYgKHRydWUgPT09IG5vZGUuZ3JvdXApIHJldHVybiBmYWxzZTsgLy8gd2UgZG8gbm90IG1hbmFnZSBncm91cHNcblxuICAvLyBjb25zdCByb3dOb2RlSWQgPSBjb250ZXh0Lmhhc093blByb3BlcnR5KCdnZXRSb3dOb2RlSWQnKSAmJiBub2RlLmRhdGFbY29udGV4dC5nZXRSb3dOb2RlSWRdID9cbiAgLy8gICBub2RlLmRhdGFbY29udGV4dC5nZXRSb3dOb2RlSWRdIDogJyc7XG5cbiAgcmV0dXJuIHtcbiAgICBpOiBub2RlLmlkLCAvLyBpZFxuICAgIHg6IG5vZGUucm93SW5kZXgsIC8vIGluZGV4XG4gICAgcDogbm9kZS5oYXNPd25Qcm9wZXJ0eSgncGFyZW50JykgJiYgbm9kZS5wYXJlbnQuaGFzT3duUHJvcGVydHkoJ2tleScpID9cbiAgICAgIG5vZGUucGFyZW50LmtleSA6ICcnLCAvLyBwYXJlbnQga2V5XG4gICAgYzogbm9kZS5jaGlsZEluZGV4LCAvL2NoaWxkSW5kZXhcbiAgICBzOiBCb29sZWFuKG5vZGUuc2VsZWN0ZWQpLCAvLyBzZWxlY3RlZCBcbiAgfTtcbn1cblxuLyoqXG4gKiBQYXJzZSBub2RlIGZyb20gZXZlbnQgXG4gKiBcbiAqIFBhcnNlIG5vZGUgaW4gdGhlIHBhU3NlZCBldmVudCBhcyBCQmpHcmlkRXhXaWRnZXRSb3dcbiAqIFxuICogQHBhcmFtIHtPYmplY3R9IGVcbiAqIFxuICogQHJldHVybnMge0JCakdyaWRFeFdpZGdldFJvd31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd3X3BhcnNlTm9kZUZyb21FdmVudChlKSB7XG4gIHJldHVybiBnd19wYXJzZU5vZGUoZS5ub2RlLCBlLmNvbnRleHQpO1xufVxuIiwiLypcbiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEJCakdyaWRFeFdpZGdldCBwbHVnaW4uXG4qIChjKSBCYXNpcyBFdXJvcGUgPGV1QGJhc2lzLmNvbT5cbipcbiogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4qL1xuXG5pbXBvcnQgJ2V4cG9zZS1sb2FkZXI/QkJqLk1hc2tzIWJiai1tYXNrcy9kaXN0L2Jiai1tYXNrcy5qcydcbmltcG9ydCAnZXhwb3NlLWxvYWRlcj9CYXNpcy5JbnB1dE1hc2tpbmchYmFzaXMtaW5wdXQtbWFza2luZy9kaXN0L2Jhc2lzLWlucHV0LW1hc2tpbmcuanMnXG5pbXBvcnQgJ2V4cG9zZS1sb2FkZXI/ZmxhdHBpY2tyIWZsYXRwaWNrci9kaXN0L2ZsYXRwaWNrci5qcydcbmltcG9ydCAnZXhwb3NlLWxvYWRlcj9CYXNpcy5BZ0dyaWRDb21wb25lbnRzIWJhc2lzLWFnZ3JpZC1jb21wb25lbnRzL2Rpc3QvYmFzaXMtYWdncmlkLWNvbXBvbmVudHMuanMnO1xuXG5yZXF1aXJlKCdmbGF0cGlja3IvZGlzdC9mbGF0cGlja3IuY3NzJyk7XG5yZXF1aXJlKCdhZy1ncmlkLWNvbW11bml0eS9kaXN0L3N0eWxlcy9hZy1ncmlkLmNzcycpO1xucmVxdWlyZSgnYWctZ3JpZC1jb21tdW5pdHkvZGlzdC9zdHlsZXMvYWctdGhlbWUtbWF0ZXJpYWwuY3NzJyk7XG5yZXF1aXJlKCdhZy1ncmlkLWNvbW11bml0eS9kaXN0L3N0eWxlcy9hZy10aGVtZS1iYWxoYW0uY3NzJyk7XG5yZXF1aXJlKCdhZy1ncmlkLWNvbW11bml0eS9kaXN0L3N0eWxlcy9hZy10aGVtZS1iYWxoYW0tZGFyay5jc3MnKTtcblxucmVxdWlyZSgnLi9zdHlsZS9jbGFzc2VzLmNzcycpO1xuXG5leHBvcnQgKiBmcm9tICcuL3BvbHlmaWxscy5qcyc7XG5leHBvcnQgKiBmcm9tIFwiLi9hcGlcIjtcbiIsIi8qXG4qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBCQmpHcmlkRXhXaWRnZXQgcGx1Z2luLlxuKiAoYykgQmFzaXMgRXVyb3BlIDxldUBiYXNpcy5jb20+XG4qXG4qIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4qIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuKi9cblxuLyoqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9DdXN0b21FdmVudC9DdXN0b21FdmVudCAgKi9cbihmdW5jdGlvbiAoKSB7XG4gIGlmICh0eXBlb2Ygd2luZG93LkN1c3RvbUV2ZW50ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBmYWxzZTsgLy9JZiBub3QgSUVcblxuICBmdW5jdGlvbiBDdXN0b21FdmVudChldmVudCwgcGFyYW1zKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zIHx8IHsgYnViYmxlczogZmFsc2UsIGNhbmNlbGFibGU6IGZhbHNlLCBkZXRhaWw6IHVuZGVmaW5lZCB9O1xuICAgIHZhciBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnQ3VzdG9tRXZlbnQnKTtcbiAgICBldnQuaW5pdEN1c3RvbUV2ZW50KGV2ZW50LCBwYXJhbXMuYnViYmxlcywgcGFyYW1zLmNhbmNlbGFibGUsIHBhcmFtcy5kZXRhaWwpO1xuICAgIHJldHVybiBldnQ7XG4gIH1cblxuICBDdXN0b21FdmVudC5wcm90b3R5cGUgPSB3aW5kb3cuRXZlbnQucHJvdG90eXBlO1xuXG4gIHdpbmRvdy5DdXN0b21FdmVudCA9IEN1c3RvbUV2ZW50O1xufSkoKTtcblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbmRcbmlmICghQXJyYXkucHJvdG90eXBlLmZpbmQpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgJ2ZpbmQnLCB7XG4gICAgdmFsdWU6IGZ1bmN0aW9uIChwcmVkaWNhdGUpIHtcbiAgICAgIC8vIDEuIExldCBPIGJlID8gVG9PYmplY3QodGhpcyB2YWx1ZSkuXG4gICAgICBpZiAodGhpcyA9PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1widGhpc1wiIGlzIG51bGwgb3Igbm90IGRlZmluZWQnKTtcbiAgICAgIH1cblxuICAgICAgdmFyIG8gPSBPYmplY3QodGhpcyk7XG5cbiAgICAgIC8vIDIuIExldCBsZW4gYmUgPyBUb0xlbmd0aCg/IEdldChPLCBcImxlbmd0aFwiKSkuXG4gICAgICB2YXIgbGVuID0gby5sZW5ndGggPj4+IDA7XG5cbiAgICAgIC8vIDMuIElmIElzQ2FsbGFibGUocHJlZGljYXRlKSBpcyBmYWxzZSwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLlxuICAgICAgaWYgKHR5cGVvZiBwcmVkaWNhdGUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncHJlZGljYXRlIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICAgICAgfVxuXG4gICAgICAvLyA0LiBJZiB0aGlzQXJnIHdhcyBzdXBwbGllZCwgbGV0IFQgYmUgdGhpc0FyZzsgZWxzZSBsZXQgVCBiZSB1bmRlZmluZWQuXG4gICAgICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50c1sxXTtcblxuICAgICAgLy8gNS4gTGV0IGsgYmUgMC5cbiAgICAgIHZhciBrID0gMDtcblxuICAgICAgLy8gNi4gUmVwZWF0LCB3aGlsZSBrIDwgbGVuXG4gICAgICB3aGlsZSAoayA8IGxlbikge1xuICAgICAgICAvLyBhLiBMZXQgUGsgYmUgISBUb1N0cmluZyhrKS5cbiAgICAgICAgLy8gYi4gTGV0IGtWYWx1ZSBiZSA/IEdldChPLCBQaykuXG4gICAgICAgIC8vIGMuIExldCB0ZXN0UmVzdWx0IGJlIFRvQm9vbGVhbig/IENhbGwocHJlZGljYXRlLCBULCDCqyBrVmFsdWUsIGssIE8gwrspKS5cbiAgICAgICAgLy8gZC4gSWYgdGVzdFJlc3VsdCBpcyB0cnVlLCByZXR1cm4ga1ZhbHVlLlxuICAgICAgICB2YXIga1ZhbHVlID0gb1trXTtcbiAgICAgICAgaWYgKHByZWRpY2F0ZS5jYWxsKHRoaXNBcmcsIGtWYWx1ZSwgaywgbykpIHtcbiAgICAgICAgICByZXR1cm4ga1ZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIGUuIEluY3JlYXNlIGsgYnkgMS5cbiAgICAgICAgaysrO1xuICAgICAgfVxuXG4gICAgICAvLyA3LiBSZXR1cm4gdW5kZWZpbmVkLlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9LFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KTtcbn0iLCJcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4vY2xhc3Nlcy5jc3NcIik7XG5cbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuXG52YXIgdHJhbnNmb3JtO1xudmFyIGluc2VydEludG87XG5cblxuXG52YXIgb3B0aW9ucyA9IHtcImhtclwiOnRydWV9XG5cbm9wdGlvbnMudHJhbnNmb3JtID0gdHJhbnNmb3JtXG5vcHRpb25zLmluc2VydEludG8gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB3aW5kb3cucGFyZW50LmRvY3VtZW50LmhlYWQgfTtcblxudmFyIHVwZGF0ZSA9IHJlcXVpcmUoXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzLmpzXCIpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5pZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2FscztcblxuaWYobW9kdWxlLmhvdCkge1xuXHRtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4vY2xhc3Nlcy5jc3NcIiwgZnVuY3Rpb24oKSB7XG5cdFx0dmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzIS4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanMhLi9jbGFzc2VzLmNzc1wiKTtcblxuXHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXG5cdFx0dmFyIGxvY2FscyA9IChmdW5jdGlvbihhLCBiKSB7XG5cdFx0XHR2YXIga2V5LCBpZHggPSAwO1xuXG5cdFx0XHRmb3Ioa2V5IGluIGEpIHtcblx0XHRcdFx0aWYoIWIgfHwgYVtrZXldICE9PSBiW2tleV0pIHJldHVybiBmYWxzZTtcblx0XHRcdFx0aWR4Kys7XG5cdFx0XHR9XG5cblx0XHRcdGZvcihrZXkgaW4gYikgaWR4LS07XG5cblx0XHRcdHJldHVybiBpZHggPT09IDA7XG5cdFx0fShjb250ZW50LmxvY2FscywgbmV3Q29udGVudC5sb2NhbHMpKTtcblxuXHRcdGlmKCFsb2NhbHMpIHRocm93IG5ldyBFcnJvcignQWJvcnRpbmcgQ1NTIEhNUiBkdWUgdG8gY2hhbmdlZCBjc3MtbW9kdWxlcyBsb2NhbHMuJyk7XG5cblx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdH0pO1xuXG5cdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/client/dist/bbj-grid-widget.min.js b/client/dist/bbj-grid-widget.min.js index 7d59d68f..8c38c335 100644 --- a/client/dist/bbj-grid-widget.min.js +++ b/client/dist/bbj-grid-widget.min.js @@ -658,7 +658,7 @@ var e=function(){return(e=Object.assign||function(e){for(var n,t=1,a=arguments.l /*!*************************!*\ !*** ./src/api/rows.js ***! \*************************/ -/*! no static exports found */function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.gw_setQuickFilter=function(e,n){(0,a.gw_getGrid)(e).options.api.setQuickFilter(n)},n.gw_expandAll=function(e){(0,a.gw_getGrid)(e).options.api.expandAll()},n.gw_collapseAll=function(e){(0,a.gw_getGrid)(e).options.api.collapseAll()},n.gw_ensureIndexVisible=function(e,n,t){var r=(0,a.gw_getGrid)(e).options.api,o=r.getRowNode(n);o?r.ensureNodeVisible(o,t):r.ensureIndexVisible(Number(n),t)},n.gw_navigateToNextRow=function(e,n){var t=(0,a.gw_getGrid)(e).options,r=n.previousCellPosition,o=n.nextCellPosition;switch(n.key){case 40:return t.api.forEachNode(function(e){r.rowIndex+1===e.rowIndex&&e.setSelected(!0)}),o;case 38:return t.api.forEachNode(function(e){r.rowIndex-1===e.rowIndex&&e.setSelected(!0)}),o;case 37:case 39:return o;default:throw new Error("You have super strange keyboard")}},n.gw_getRowNodeId=function(e,n){return n[(0,a.gw_getGrid)(e).options.context.getRowNodeId]},n.gw_setRowsData=function(e,n){var t=(0,a.gw_getGrid)(e).options;t.api.setRowData(n),t.rowData=n},n.gw_setRowData=function(e,n){(0,a.gw_getGrid)(e).options.api.updateRowData({update:[n]})},n.gw_removeRows=function(e,n){var t=(0,a.gw_getGrid)(e).options,r=[];n.forEach(function(e){r.push(t.api.getRowNode(e).data)}),t.api.updateRowData({remove:r})},n.gw_addRows=function(e,n,t){(0,a.gw_getGrid)(e).options.api.updateRowData({add:t,addIndex:n})},n.gw_setRowsHeight=function(e,n){var t=(0,a.gw_getGrid)(e).options.api;t.forEachNode(function(e){e.setRowHeight(n)}),t.onRowHeightChanged()},n.gw_setRowHeight=function(e,n,t){var r=(0,a.gw_getGrid)(e).options,o=r.api,i=o.getRowNode(n)||o.getDisplayedRowAtIndex(n);i?(i.setRowHeight(t),r.api.onRowHeightChanged()):console.warn("Failed to set height for row ".concat(n,". Row cannot be found"))},n.gw_setSelectedRows=function(e,n){var t=(0,a.gw_getGrid)(e).options.api;t.forEachNodeAfterFilterAndSort(function(e){(n.indexOf(String(e.rowIndex))>-1||n.indexOf(String(e.id))>-1)&&(e.setSelected(!0),e.expanded=!0)}),t.onGroupExpandedOrCollapsed()},n.gw_selectAll=function(e,n){var t=(0,a.gw_getGrid)(e).options;1===n?t.api.selectAllFiltered():t.api.selectAll()},n.gw_deselectAll=function(e,n){var t=(0,a.gw_getGrid)(e).options;1===n?t.api.deselectAllFiltered():t.api.deselectAll()},n.gw_getSelectedRows=o,n.gw_getSelectedRow=function(e){var n=JSON.parse(o(e));if(n.length)return JSON.stringify(n[n.length-1]);return""};var a=t(/*! ./utilities */"./src/api/utilities.js"),r=t(/*! events/utilities */"./src/events/utilities.js");t(/*! deep-parse-json */"./node_modules/deep-parse-json/index.js").deepParseJson;function o(e){var n=(0,a.gw_getGrid)(e).options,t=[];return n.api.getSelectedNodes().forEach(function(e){t.push((0,r.gw_parseNode)(e,n.context))}),JSON.stringify(t)}},"./src/api/state.js": +/*! no static exports found */function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.gw_setQuickFilter=function(e,n){(0,a.gw_getGrid)(e).options.api.setQuickFilter(n)},n.gw_expandAll=function(e){(0,a.gw_getGrid)(e).options.api.expandAll()},n.gw_collapseAll=function(e){(0,a.gw_getGrid)(e).options.api.collapseAll()},n.gw_ensureIndexVisible=function(e,n,t){var r=(0,a.gw_getGrid)(e).options.api,o=r.getRowNode(n);o?r.ensureNodeVisible(o,t):r.ensureIndexVisible(Number(n),t)},n.gw_navigateToNextRow=function(e,n){var t=(0,a.gw_getGrid)(e).options,r=n.previousCellPosition,o=n.nextCellPosition;switch(n.key){case 40:return t.api.forEachNode(function(e){r.rowIndex+1===e.rowIndex&&e.setSelected(!0)}),o;case 38:return t.api.forEachNode(function(e){r.rowIndex-1===e.rowIndex&&e.setSelected(!0)}),o;case 37:case 39:return o;default:throw new Error("You have super strange keyboard")}},n.gw_getRowNodeId=function(e,n){return n[(0,a.gw_getGrid)(e).options.context.getRowNodeId]},n.gw_setRowsData=function(e,n){var t=(0,a.gw_getGrid)(e).options;t.api.setRowData(n),t.rowData=n},n.gw_resetRowHeights=function(e){(0,a.gw_getGrid)(e).options.api.resetRowHeights()},n.gw_setRowData=function(e,n){(0,a.gw_getGrid)(e).options.api.updateRowData({update:[n]})},n.gw_removeRows=function(e,n){var t=(0,a.gw_getGrid)(e).options,r=[];n.forEach(function(e){r.push(t.api.getRowNode(e).data)}),t.api.updateRowData({remove:r})},n.gw_addRows=function(e,n,t){(0,a.gw_getGrid)(e).options.api.updateRowData({add:t,addIndex:n})},n.gw_setRowsHeight=function(e,n){var t=(0,a.gw_getGrid)(e).options.api;t.forEachNode(function(e){e.setRowHeight(n)}),t.onRowHeightChanged()},n.gw_setRowHeight=function(e,n,t){var r=(0,a.gw_getGrid)(e).options,o=r.api,i=o.getRowNode(n)||o.getDisplayedRowAtIndex(n);i?(i.setRowHeight(t),r.api.onRowHeightChanged()):console.warn("Failed to set height for row ".concat(n,". Row cannot be found"))},n.gw_setSelectedRows=function(e,n){var t=(0,a.gw_getGrid)(e).options.api;t.forEachNodeAfterFilterAndSort(function(e){(n.indexOf(String(e.rowIndex))>-1||n.indexOf(String(e.id))>-1)&&(e.setSelected(!0),e.expanded=!0)}),t.onGroupExpandedOrCollapsed()},n.gw_selectAll=function(e,n){var t=(0,a.gw_getGrid)(e).options;1===n?t.api.selectAllFiltered():t.api.selectAll()},n.gw_deselectAll=function(e,n){var t=(0,a.gw_getGrid)(e).options;1===n?t.api.deselectAllFiltered():t.api.deselectAll()},n.gw_getSelectedRows=o,n.gw_getSelectedRow=function(e){var n=JSON.parse(o(e));if(n.length)return JSON.stringify(n[n.length-1]);return""};var a=t(/*! ./utilities */"./src/api/utilities.js"),r=t(/*! events/utilities */"./src/events/utilities.js");t(/*! deep-parse-json */"./node_modules/deep-parse-json/index.js").deepParseJson;function o(e){var n=(0,a.gw_getGrid)(e).options,t=[];return n.api.getSelectedNodes().forEach(function(e){t.push((0,r.gw_parseNode)(e,n.context))}),JSON.stringify(t)}},"./src/api/state.js": /*!**************************!*\ !*** ./src/api/state.js ***! \**************************/ diff --git a/client/dist/report.html b/client/dist/report.html index 8d502a9c..b9fcc73b 100644 --- a/client/dist/report.html +++ b/client/dist/report.html @@ -56,7 +56,7 @@
diff --git a/client/src/api/rows.js b/client/src/api/rows.js index 0a78ac65..c07ed4f3 100644 --- a/client/src/api/rows.js +++ b/client/src/api/rows.js @@ -95,6 +95,15 @@ export function gw_setRowsData(id, json) { options.rowData = json; } +/** + * Reset the row height + * + * @param {String} id the grid id + */ +export function gw_resetRowHeights(id) { + gw_getGrid(id).options.api.resetRowHeights(); +} + /** * Update a row on the grid * @@ -145,12 +154,12 @@ export function gw_addRows(id, index, rows) { */ export function gw_setRowsHeight(id, height) { const options = gw_getGrid(id).options; - const api = options.api; + const api = options.api; api.forEachNode(row => { row.setRowHeight(height); }); - + api.onRowHeightChanged(); }