my-orders-tickets-widget 1.0.0-beta.37 → 1.0.0-beta.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +9 -0
- package/dist/index.js +1 -3
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -3358,7 +3358,6 @@ const MyOrdersTickets = () => {
|
|
|
3358
3358
|
next: () => fetchData(orders_current_page + _utils_constants__WEBPACK_IMPORTED_MODULE_9__.ONE_PAGE_NEXT),
|
|
3359
3359
|
hasMore: (0,_utils__WEBPACK_IMPORTED_MODULE_10__.hasMore2Fetch)(orders_current_page, orders_last_page),
|
|
3360
3360
|
scrollThreshold: 1,
|
|
3361
|
-
scrollableTarget: "infiniteWrapper",
|
|
3362
3361
|
children: memberOrders === null || memberOrders === void 0 ? void 0 : memberOrders.map(order => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_OrdersList__WEBPACK_IMPORTED_MODULE_7__["default"], {
|
|
3363
3362
|
order: order,
|
|
3364
3363
|
summit: summit
|
|
@@ -3821,7 +3820,6 @@ const AssignToMe = () => {
|
|
|
3821
3820
|
next: () => fetchData(user_tickets_current_page + _utils_constants__WEBPACK_IMPORTED_MODULE_9__.ONE_PAGE_NEXT),
|
|
3822
3821
|
hasMore: (0,_utils__WEBPACK_IMPORTED_MODULE_11__.hasMore2Fetch)(user_tickets_current_page, user_tickets_last_page),
|
|
3823
3822
|
scrollThreshold: 1,
|
|
3824
|
-
scrollableTarget: "assignedToMeWrapper",
|
|
3825
3823
|
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)("div", {
|
|
3826
3824
|
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_10__.ticketListContainer,
|
|
3827
3825
|
children: userTickets.map(ticket => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_OrderListTickets__WEBPACK_IMPORTED_MODULE_8__["default"], {
|
|
@@ -9574,4 +9572,4 @@ MyOrdersMyTicketsWidget.propTypes = {
|
|
|
9574
9572
|
/******/ })()
|
|
9575
9573
|
;
|
|
9576
9574
|
});
|
|
9577
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0g1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUM4WDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkI5WDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2dNOzs7Ozs7Ozs7Ozs7Ozs7OztBQ1JoTTtBQUNBO0FBQ0E7QUFDQTtBQUNnRTs7Ozs7Ozs7Ozs7Ozs7O0FDSmhFO0FBQ0E7QUFDbUM7Ozs7Ozs7Ozs7O0FDRm5DOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7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Zy9CLHVCQUF1QixFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvYWN0aW9ucy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Bc3NpZ25FUUZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ29weVRleHQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tRGlhbG9nL0NvbnRleHQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tRGlhbG9nL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbVRoZW1lLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9UZXh0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0Fzc2lnbmVkRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvQmFkZ2VGZWF0dXJlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvRnJlZVBhaWRGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Qcm9tb0NvZGVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9TZWFyY2guanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Tb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvU3RhdHVzRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvVGlja2V0VHlwZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Zvcm1Gb290ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL0Vycm9yTGFiZWwuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTG9hZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvT3JkZXJTdW1tYXJ5VGFibGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L1JlZnVuZEVtYWlsU3VwcG9ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9Bc3NpZ25lZFRvTWUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdEl0ZW0uanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFJlcXVlc3RlZFRpY2tldC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmRTdGF0dXMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmlnaHREcmF3ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvU3VtbWl0SGVhZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0RlbGVnYXRlRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvQXNzaWduSGVhZGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9SZWFzc2lnbkhlYWRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9SZWFzc2lnbkZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0NvbXBhbnlGaWVsZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0Rm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0VGFicy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VHZXRUaWNrZXQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZVNjcm9sbFRvRXJyb3IuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZVRpY2tldERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2kxOG4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3JlZHVjZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3N0b3JlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9hdXRoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9zdW1taXRVdGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvdGlja2V0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ29weVRleHQvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Zvcm1Gb290ZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xhYmVscy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3Qvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SaWdodERyYXdlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvU3VtbWl0SGVhZGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRUYWJzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0luZm9cIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1Rvb2x0aXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkByZWR1eGpzL3Rvb2xraXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAc2VudHJ5L3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiZm9ybWlrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaWR0b2tlbi12ZXJpZmllclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm1vbWVudC10aW1lem9uZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInAtbGltaXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwcm9wLXR5cGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXFyLWNvZGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1yZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0L2pzeC1ydW50aW1lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJ5dXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL215LW9yZGVycy10aWNrZXRzLXdpZGdldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiLCBbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgKCkgPT4ge1xucmV0dXJuICIsImltcG9ydCB7XG4gIGF1dGhFcnJvckhhbmRsZXIsXG4gIGNyZWF0ZUFjdGlvbixcbiAgZGVsZXRlUmVxdWVzdCxcbiAgZ2V0UmVxdWVzdCxcbiAgcHV0UmVxdWVzdCxcbiAgc3RhcnRMb2FkaW5nLFxuICBzdG9wTG9hZGluZ1xufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQgcExpbWl0IGZyb20gXCJwLWxpbWl0XCI7XG5pbXBvcnQgeyBnZXRJZFRva2VuIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0IHsgb2JqZWN0VG9RdWVyeVN0cmluZyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIjtcbmltcG9ydCBJZFRva2VuVmVyaWZpZXIgZnJvbSBcImlkdG9rZW4tdmVyaWZpZXJcIjtcbmltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBnZXRBY2Nlc3NUb2tlblNhZmVseSB9IGZyb20gXCIuL3V0aWxzL2F1dGhcIjtcbmltcG9ydCB7XG4gIERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gIEVSUk9SX0NPREVTLFxuICBGSUZUWV9QRVJfUEFHRSxcbiAgRklSU1RfUEFHRSxcbiAgUFJPTUlTRV9CQVRDSF9MSU1JVCxcbiAgVEFCU1xufSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IFJFU0VUX1NUQVRFID0gXCJSRVNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX0ZJTFRFUiA9IFwiUkVTRVRfRklMVEVSXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfQVBJX0VSUk9SID0gXCJSRVNFVF9BUElfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBTRVRfU1RBVEUgPSBcIlNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BUElfRVJST1IgPSBcIlNFVF9BUElfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBDSEFOR0VfRklMVEVSID0gXCJDSEFOR0VfRklMVEVSXCI7XG5leHBvcnQgY29uc3QgQ0hBTkdFX1NPUlQgPSBcIkNIQU5HRV9TT1JUXCI7XG5cbi8vIE9SREVSUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfVVNFUl9PUkRFUlMgPSBcIkdFVF9PUkRFUlNcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfT1JERVIgPSBcIlJFRlVORF9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BQ1RJVkVfT1JERVJfSUQgPSBcIlNFVF9BQ1RJVkVfT1JERVJfSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVVNFUl9PUkRFUlMgPSBcIkZJTFRFUl9VU0VSX09SREVSU1wiO1xuXG4vLyBUSUNLRVRTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9NWV9BU1NJR05FRF9USUNLRVRTID0gXCJHRVRfTVlfQVNTSUdORURfVElDS0VUU1wiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVQgPSBcIlVQREFURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9USUNLRVQgPSBcIlJFU0VUX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfVElDS0VUID0gXCJSRUNFSVZFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFTU9WRV9USUNLRVRfQVRURU5ERUUgPSBcIlJFTU9WRV9USUNLRVRfQVRURU5ERUVcIjtcbmV4cG9ydCBjb25zdCBBU1NJR05fVElDS0VUID0gXCJBU1NJR05fVElDS0VUXCI7XG5leHBvcnQgY29uc3QgREVMRUdBVEVfVElDS0VUID0gXCJERUxFR0FURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfVElDS0VUID0gXCJSRUZVTkRfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVTRU5EX05PVElGSUNBVElPTiA9IFwiUkVTRU5EX05PVElGSUNBVElPTlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyA9IFwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyA9IFwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiLFxuICBleHRyYVF1ZXN0aW9uczogXCJleHRyYV9xdWVzdGlvbnNcIlxufTtcbmV4cG9ydCBjb25zdCBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEID1cbiAgXCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEXCI7XG5cbi8vIFVTRVIgQ09OVFNcbmV4cG9ydCBjb25zdCBTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBVUERBVEVfSURQX1BST0ZJTEUgPSBcIlVQREFURV9JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9VU0VSID0gXCJTRVRfVVNFUlwiO1xuXG4vLyBTVU1NSVQgQ09OU1RTXG5leHBvcnQgY29uc3QgU0VUX1NVTU1JVCA9IFwiU0VUX1NVTU1JVFwiO1xuZXhwb3J0IGNvbnN0IEdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyA9IFwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5leHBvcnQgY29uc3QgQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1NcIjtcblxuZXhwb3J0IGNvbnN0IHJlc2V0VGlja2V0ID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9USUNLRVQpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRTdGF0ZSA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfU1RBVEUpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRGaWx0ZXIgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0ZJTFRFUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEVycm9yID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9BUElfRVJST1IpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0UmVkdWNlclN0YXRlID0gKHN1bW1pdCwgdXNlcikgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfU1RBVEUpKHsgc3VtbWl0LCB1c2VyIH0pKTtcbn07XG5cbi8vIEZJTFRFUiAvIFNPUlQgQ09OU1RBTlRTXG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9EQVRFID0gXCJGSUxURVJfVkFSX0RBVEVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUgPSBcIkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfVElDS0VUX1RZUEUgPSBcIkZJTFRFUl9WQVJfVElDS0VUX1RZUEVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCA9IFwiRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyA9IFwiRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX1BST01PQ09ERSA9IFwiRklMVEVSX1ZBUl9QUk9NT0NPREVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0ZSRUVfUEFJRCA9IFwiRklMVEVSX1ZBUl9GUkVFX1BBSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX09SREVSX05VTUJFUiA9IFwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJcIjtcblxuLy8gRklMVEVSIC8gU09SVCBBQ1RJT05TXG5leHBvcnQgY29uc3QgY2hhbmdlRmlsdGVyID0gKGZpbHRlcikgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihDSEFOR0VfRklMVEVSKShmaWx0ZXIpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGFuZ2VTb3J0ID0gKHNvcnQpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oQ0hBTkdFX1NPUlQpKHNvcnQpKTtcbn07XG5cbi8vIEZJTFRFUi9TT1JUIFBBUlNFXG5jb25zdCBwYXJzZUZpbHRlciA9IChmaWx0ZXJPYmosIGN1cnJlbnRUYWIpID0+IHtcbiAgY29uc3QgZmlsdGVyID0gW107XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9EQVRFKSB7XG4gICAgZmlsdGVyLnB1c2goYGNyZWF0ZWRbXSR7ZmlsdGVyT2JqLmxvd2VyfSYmJHtmaWx0ZXJPYmoudXBwZXJ9YCk7XG4gIH1cbiAgaWYgKFxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUgJiZcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLmxlbmd0aCA+IDBcbiAgKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSU1xuICAgICAgICA/IFwidGlja2V0c19iYWRnZV9mZWF0dXJlc19pZFwiXG4gICAgICAgIDogXCJiYWRnZV9mZWF0dXJlc19pZFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRS5qb2luKFwifHxcIil9YFxuICAgICk7XG4gIH1cbiAgaWYgKFxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9UWVBFICYmXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUubGVuZ3RoID4gMFxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJ0aWNrZXRzX3R5cGVfaWRcIiA6IFwidGlja2V0X3R5cGVfaWRcIjtcbiAgICBmaWx0ZXIucHVzaChcbiAgICAgIGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9UWVBFLmpvaW4oXCJ8fFwiKX1gXG4gICAgKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwidGlja2V0c19hc3NpZ25lZF90b1wiIDogXCJhc3NpZ25lZF90b1wiO1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRH1gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwidGlja2V0c19vd25lcl9zdGF0dXNcIiA6IFwib3duZXJfc3RhdHVzXCI7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9GUkVFX1BBSUQpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID0gY3VycmVudFRhYiA9PT0gVEFCUy5PUkRFUlMgPyBcImFtb3VudFwiIDogXCJmaW5hbF9hbW91bnRcIjtcbiAgICBmaWx0ZXIucHVzaChcbiAgICAgIGAke2ZpbHRlck5hbWV9JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9GUkVFX1BBSUQgPT09IFwiRnJlZVwiID8gXCI9PTBcIiA6IFwiPjBcIn1gXG4gICAgKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfUFJPTU9DT0RFKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwidGlja2V0c19wcm9tb19jb2RlXCIgOiBcInByb21vX2NvZGVcIjtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJOYW1lfT1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9QUk9NT0NPREV9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUikge1xuICAgIGZpbHRlci5wdXNoKGBudW1iZXI9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfWApO1xuICB9XG4gIHJldHVybiBmaWx0ZXI7XG59O1xuXG5jb25zdCBnZXRTb3J0RGlyZWN0aW9uID0gKGRpcmVjdGlvbikgPT4gKGRpcmVjdGlvbiA9PT0gXCJhc2NcIiA/IFwiK1wiIDogXCItXCIpO1xuXG4vLyBwYXlsb2FkOiB7IGh0dHBDb2RlLCB0aXRsZSwgaHRtbDogY29udGVudCwgdHlwZSB9XG5jb25zdCBlcnJvckhhbmRsZXJOb3RpZnkgPSAocGF5bG9hZCwgY2FsbGJhY2spID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX0FQSV9FUlJPUikocGF5bG9hZCkpO1xuICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7XG59O1xuXG5jb25zdCBjdXN0b21BdXRoRXJyb3JIYW5kbGVyID0gKGVyciwgcmVzKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goYXV0aEVycm9ySGFuZGxlcihlcnIsIHJlcywgZXJyb3JIYW5kbGVyTm90aWZ5KSk7XG59O1xuXG5jb25zdCBjdXN0b21GZXRjaEVycm9ySGFuZGxlciA9IChyZXNwb25zZSkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGNvbnN0IGNvZGUgPSByZXNwb25zZS5zdGF0dXM7XG4gIGxldCBtc2c7XG4gIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICBzd2l0Y2ggKGNvZGUpIHtcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDAzXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnVzZXJfbm90X2F1dGh6XCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQwMVwiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy5zZXNzaW9uX2V4cGlyZWRcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDEyXCJdOlxuICAgICAgbXNnID0gXCJcIjtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJlc3BvbnNlLmVycm9ycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4oa2V5KSkge1xuICAgICAgICAgIG1zZyA9IGAke21zZ30gJHtrZXl9OiBgO1xuICAgICAgICB9XG5cbiAgICAgICAgbXNnID0gYCR7bXNnfSAke3ZhbHVlfSA8YnI+YDtcbiAgICAgIH0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjUwMFwiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy5zZXJ2ZXJfZXJyb3JcIik7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgbXNnID0gcmVzcG9uc2Uuc3RhdHVzVGV4dDtcbiAgfVxuXG4gIGRpc3BhdGNoKGVycm9ySGFuZGxlck5vdGlmeSh7IHRpdGxlOiBpMThuLnQoXCJlcnJvcnMuZXJyb3JcIiksIGh0bWw6IG1zZyB9KSk7XG59O1xuXG4vLyBPUkRFUlMgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IGdldFVzZXJPcmRlcnMgPVxuICAoe1xuICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgIGZpbHRlciA9IHt9LFxuICAgIHNvcnQgPSB7fVxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBvcmRlcjogXCItaWRcIixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCJdLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmVcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG5cbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyLCBUQUJTLk9SREVSUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVVNFUl9PUkRFUlMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9tZWAsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyLFxuICAgICAgeyBmaWx0ZXIsIHNvcnQgfVxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzZXRBY3RpdmVPcmRlcklkID0gKG9yZGVySWQpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9BQ1RJVkVfT1JERVJfSUQpKG9yZGVySWQpKTtcblxuLy8gVVNFUiBBQ1RJT05TXG5leHBvcnQgY29uc3Qgc2V0VXNlciA9ICh1c2VyKSA9PiAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfVVNFUikodXNlcikpO1xuXG4vLyBUSUNLRVQgQUNUSU9OU1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlclRpY2tldHMgPVxuICAoe1xuICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgIGZpbHRlciA9IHt9LFxuICAgIHNvcnQgPSB7fVxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCwgdXNlciB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgeyB1c2VyUHJvZmlsZSB9ID0gdXNlcjtcbiAgICBpZiAoIXN1bW1pdCkgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcbiAgICBjb25zdCBmaWVsZHMgPSBbXG4gICAgICBcIm9yZGVyLmlkXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2ZpcnN0X25hbWVcIixcbiAgICAgIFwib3JkZXIub3duZXJfbGFzdF9uYW1lXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2VtYWlsXCIsXG4gICAgICBcIm93bmVyLmlkXCIsXG4gICAgICBcIm93bmVyLmVtYWlsXCIsXG4gICAgICBcIm93bmVyLmZpcnN0X25hbWVcIixcbiAgICAgIFwib3duZXIubGFzdF9uYW1lXCIsXG4gICAgICBcIm93bmVyLnN0YXR1c1wiXG4gICAgXTtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCIsIGBvcmRlcl9vd25lcl9pZDw+JHt1c2VyUHJvZmlsZS5pZH1gXSxcbiAgICAgIGV4cGFuZDogXCJvcmRlcixvd25lcix0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBmaWVsZHM6IGZpZWxkcy5qb2luKFwiLFwiKSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIFRBQlMuVElDS0VUUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9hbGwvdGlja2V0cy9tZWAsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRzQnlPcmRlciA9XG4gICh7XG4gICAgb3JkZXJJZCxcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIsXG4gICAgc29ydFxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogW10sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLHJlZnVuZF9yZXF1ZXN0cy5yZWZ1bmRlZF90YXhlcyxyZWZ1bmRfcmVxdWVzdHMucmVmdW5kZWRfdGF4ZXMudGF4LG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiK2lkXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIFRBQlMuVElDS0VUUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVIpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHNgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUikpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVzZW5kTm90aWZpY2F0aW9uID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgeyBtZXNzYWdlIH0gPSB0aWNrZXQ7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVTRU5EX05PVElGSUNBVElPTiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vYXR0ZW5kZWUvcmVpbnZpdGVgLFxuICAgICAgeyBtZXNzYWdlIH0sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRUaWNrZXQgPVxuICAoeyB0aWNrZXQgfSkgPT5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcInJlZnVuZF9yZXF1ZXN0cyx0aWNrZXRfdHlwZVwiLFxuICAgICAgZmllbGRzOiBcInJlZnVuZF9yZXF1ZXN0cy5zdGF0dXNcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVGVU5EX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcmVmdW5kYCxcbiAgICAgIHt9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRCdWxrVGlja2V0cyA9XG4gICh7IHRpY2tldHMgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoKSA9PiB7XG4gICAgY29uc3QgbGltaXQgPSBwTGltaXQoUFJPTUlTRV9CQVRDSF9MSU1JVCk7XG4gICAgY29uc3QgYWxsUmVmdW5kVGlja2V0Q2FsbHMgPSB0aWNrZXRzLm1hcCgodGlja2V0KSA9PlxuICAgICAgbGltaXQoKCkgPT4gZGlzcGF0Y2gocmVmdW5kVGlja2V0KHsgdGlja2V0IH0pKSlcbiAgICApO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChbLi4uYWxsUmVmdW5kVGlja2V0Q2FsbHNdKVxuICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICBjb25zdCBzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQgPSByZXNcbiAgICAgICAgICAuZmlsdGVyKChyKSA9PiByLnJlc3BvbnNlPy5yZWZ1bmRfcmVxdWVzdHM/Lmxlbmd0aClcbiAgICAgICAgICAubWFwKChyKSA9PiByLnJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3NmdWxseVJlcXVlc3RlZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IGUpO1xuICB9O1xuXG4vLyB1cGRhdGUgdGhlIHRpY2tldHMgdGhhdCBoYXZlIGJlZW4gc3VjZXNzZnVsbHkgcmVmdW5kZWRcbmV4cG9ydCBjb25zdCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkID1cbiAgKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpID0+IChkaXNwYXRjaCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEKSh0aWNrZXRzUmVmdW5kUmVxdWVzdGVkKVxuICAgICk7XG5cbi8vIFNVTU1JVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRFeHRyYVF1ZXN0aW9ucyA9XG4gIChhdHRlbmRlZUlkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgcGFnZTogMSxcbiAgICAgIHBlcl9wYWdlOiBGSUZUWV9QRVJfUEFHRSxcbiAgICAgIGV4cGFuZDogXCIqc3ViX3F1ZXN0aW9uX3J1bGVzLCpzdWJfcXVlc3Rpb24sKnZhbHVlc1wiLFxuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogXCJ0aWNrZXRzX2V4Y2x1ZGVfaW5hY3RpdmVzPT10cnVlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vYXR0ZW5kZWVzLyR7YXR0ZW5kZWVJZH0vYWxsb3dlZC1leHRyYS1xdWVzdGlvbnNgO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkudGhlbigoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldCA9XG4gICh0aWNrZXRJZCwgb3JkZXJJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9YDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VUX1RJQ0tFVCksXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9USUNLRVQpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5jb25zdCBub3JtYWxpemVUaWNrZXQgPSAoZW50aXR5KSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSB7IC4uLmVudGl0eSB9O1xuXG4gIGlmICghZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQpIHtcbiAgICBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnkgPSBlbnRpdHkuYXR0ZW5kZWVfY29tcGFueTtcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueV9pZCA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55LmlkO1xuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRFbnRpdHk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVmcmVzaFByb2ZpbGUgPVxuICAoZGF0YSwgY29tcGFueSwgdGlja2V0T3duZXIpID0+XG4gIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgdXBkYXRlUHJvZmlsZSB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgdXNlciB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgeyB1c2VyUHJvZmlsZSB9ID0gdXNlcjtcblxuICAgIC8vIGVtYWlsIHNob3VsZCBtYXRjaCAoIG9ubHkgdXBkYXRlIG15IHByb2ZpbGUgaXMgdGlja2V0IGJlbG9uZ3MgdG8gbWUhKVxuICAgIC8vIGFuZCBpZiB0aGUgdGlja2V0IGRvZXNuJ3QgaGF2ZSBhIG1hbmFnZXJcbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGNoYW5nZXMgaW4gdGhlIHRpY2tldCBkYXRhIHRvIHVwZGF0ZSB0aGUgcHJvZmlsZVxuICAgIGNvbnN0IHtcbiAgICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2NvbXBhbnlcbiAgICB9ID0gZGF0YTtcbiAgICBjb25zdCBoYXNNYW5hZ2VyID0gdGlja2V0T3duZXI/Lm1hbmFnZXI/LmlkIHx8IHRpY2tldE93bmVyPy5tYW5hZ2VyX2lkO1xuICAgIGNvbnN0IGl0c01lID0gdXNlclByb2ZpbGUuZW1haWwgPT09IGF0dGVuZGVlX2VtYWlsO1xuICAgIGNvbnN0IHByb2ZpbGVDaGFuZ2VkID1cbiAgICAgIGF0dGVuZGVlX2NvbXBhbnkubmFtZSAhPT0gY29tcGFueSB8fFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSAhPT0gdXNlclByb2ZpbGUuZmlyc3RfbmFtZSB8fFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5sYXN0X25hbWU7XG5cbiAgICBpZiAoaXRzTWUgJiYgIWhhc01hbmFnZXIgJiYgcHJvZmlsZUNoYW5nZWQpIHtcbiAgICAgIGNvbnN0IG5ld1Byb2ZpbGUgPSB7XG4gICAgICAgIGZpcnN0X25hbWU6IGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgICAgIGxhc3RfbmFtZTogYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgICBjb21wYW55OiBhdHRlbmRlZV9jb21wYW55Lm5hbWUgfHwgYXR0ZW5kZWVfY29tcGFueVxuICAgICAgfTtcblxuICAgICAgLy8gdGhpcyBpcyBhIGNhbGxiYWNrIG1ldGhvZCB0aGF0IHVwZGF0ZXMgdXNlclByb2ZpbGUgaW4gQVBJIGFuZCBldmVudC1zaXRlXG4gICAgICB1cGRhdGVQcm9maWxlKG5ld1Byb2ZpbGUpO1xuICAgIH1cbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNhdmVUaWNrZXREZXRhaWxzID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGVcIlxuICAgIH07XG5cbiAgICBjb25zdCBpZFRva2VuID0gZ2V0SWRUb2tlbigpO1xuICAgIGxldCBjb21wYW55ID0gXCJcIjtcbiAgICBpZiAoaWRUb2tlbikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdmVyaWZpZXIgPSBuZXcgSWRUb2tlblZlcmlmaWVyKCk7XG4gICAgICAgIGNvbnN0IGp3dCA9IHZlcmlmaWVyLmRlY29kZShpZFRva2VuKTtcbiAgICAgICAgY29tcGFueSA9IGp3dC5wYXlsb2FkLmNvbXBhbnk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSBub3JtYWxpemVUaWNrZXQoYW5zd2Vycyk7XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzL2FsbC90aWNrZXRzLyR7dGlja2V0LmlkfWAsXG4gICAgICBub3JtYWxpemVkRW50aXR5LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2gocmVmcmVzaFByb2ZpbGUoYW5zd2VycywgY29tcGFueSwgdGlja2V0Lm93bmVyKSk7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGFzc2lnbkF0dGVuZGVlID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBhdHRlbmRlZV9lbWFpbCwgbWVzc2FnZSA9IG51bGwpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcblxuICAgIGNvbnN0IHBheWxvYWQgPSB7IGF0dGVuZGVlX2VtYWlsIH07XG4gICAgaWYgKG1lc3NhZ2UpIHBheWxvYWQubWVzc2FnZSA9IG1lc3NhZ2U7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwib3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbix0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEFTU0lHTl9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vYXR0ZW5kZWVgLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWFzc2lnblRpY2tldCA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwsIG1lc3NhZ2UpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDogXCJvcmRlciwgb3duZXIsIG93bmVyLmV4dHJhX3F1ZXN0aW9ucywgb3JkZXIuc3VtbWl0XCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlbGV0ZVJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFTU9WRV9USUNLRVRfQVRURU5ERUUpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vYXR0ZW5kZWVgLFxuICAgICAge30sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS50aGVuKCgpID0+XG4gICAgICBkaXNwYXRjaChhc3NpZ25BdHRlbmRlZShvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwsIG1lc3NhZ2UpKVxuICAgICk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBkZWxlZ2F0ZVRpY2tldCA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lOiBmaXJzdE5hbWUsXG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWU6IGxhc3ROYW1lLFxuICAgICAgYXR0ZW5kZWVfZW1haWw6IGVtYWlsXG4gICAgfTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oREVMRUdBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9L2RlbGVnYXRlYCxcbiAgICAgIHBheWxvYWQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZUV4dHJhUXVlc3Rpb25zID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzL2FsbC90aWNrZXRzLyR7dGlja2V0LmlkfWAsXG4gICAgICBhbnN3ZXJzLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0UERGID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgfTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IG9iamVjdFRvUXVlcnlTdHJpbmcocGFyYW1zKTtcbiAgICBjb25zdCBhcGlVcmwgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcGRmPyR7cXVlcnlTdHJpbmd9YDtcblxuICAgIHJldHVybiBmZXRjaChhcGlVcmwsIHtcbiAgICAgIHJlc3BvbnNlVHlwZTogXCJCbG9iXCIsXG4gICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vcGRmXCIgfVxuICAgIH0pXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZS5ibG9iKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAudGhlbigocGRmKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKHBkZik7XG4gICAgICAgIGxpbmsuaHJlZiA9IHVybDtcbiAgICAgICAgbGluay5kb3dubG9hZCA9IFwidGlja2V0LnBkZlwiO1xuICAgICAgICBsaW5rLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoXCJjbGlja1wiKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGN1c3RvbUZldGNoRXJyb3JIYW5kbGVyKTtcbiAgfTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgRXh0cmFRdWVzdGlvbnNGaWVsZHMgZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzXCI7XG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vRm9ybUZvb3RlclwiO1xuaW1wb3J0IHVzZVNjcm9sbFRvRXJyb3IgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVNjcm9sbFRvRXJyb3JcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCB7IGJ1aWxkVmFsaWRhdGlvblNjaGVtYSwgcGFyc2VBbnN3ZXJzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmNvbnN0IEFzc2lnbkVRRm9ybSA9ICh7XG4gIHRpY2tldCxcbiAgc3VtbWl0LFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgb25TdWJtaXQsXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczogcGFyc2VBbnN3ZXJzKHRpY2tldC5vd25lciwgZXh0cmFRdWVzdGlvbnMsIHt9LCBmYWxzZSwgdHJ1ZSksXG4gICAgdmFsaWRhdGlvblNjaGVtYTogYnVpbGRWYWxpZGF0aW9uU2NoZW1hKFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICBmYWxzZSxcbiAgICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnlcbiAgICApLFxuICAgIG9uU3VibWl0OiAodmFsdWVzKSA9PiB7XG4gICAgICBjb25zdCByZWxldmFudEFuc3dlcnMgPSBwYXJzZUFuc3dlcnMoXG4gICAgICAgIHRpY2tldC5vd25lcixcbiAgICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgICByZXR1cm4gb25TdWJtaXQocmVsZXZhbnRBbnN3ZXJzKTtcbiAgICB9LFxuICAgIGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZVxuICB9KTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWssIFwicmVhc3NpZ25EcmF3ZXJcIik7XG5cbiAgaWYgKGV4dHJhUXVlc3Rpb25zPy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8Qm94PlxuICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHMgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfSBmb3JtaWs9e2Zvcm1pa30gLz5cbiAgICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5leHRyYV9xdWVzdGlvbnNfZm9ybS5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9hc3NpZ24uZXh0cmFfcXVlc3Rpb25zX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuQXNzaWduRVFGb3JtLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25FUUZvcm07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQ29udGVudENvcHlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCI7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBkZWZhdWx0V2lkdGggPSA5MDtcblxuY29uc3QgQ29weVRleHQgPSAoe1xuICB0ZXh0LFxuICB0b29sdGlwVGV4dCxcbiAgaGlkZUNvcHkgPSBmYWxzZSxcbiAgdHJ1bmNhdGVkID0gdHJ1ZSxcbiAgcmV2ZXJzZWQgPSBmYWxzZSxcbiAgd2lkdGggPSBkZWZhdWx0V2lkdGhcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB0b29sdGlwVGV4dFRvVXNlID0gdG9vbHRpcFRleHQgfHwgdChcImdlbmVyYWwuY29weV90b19jbGlwYm9hcmRcIik7XG4gIGNvbnN0IFt0b29sdGlwLCBzZXRUb29sdGlwXSA9IFJlYWN0LnVzZVN0YXRlKHRvb2x0aXBUZXh0VG9Vc2UpO1xuICBjb25zdCBjbGFzc05hbWVzID0gYCR7dHJ1bmNhdGVkICYmIHN0eWxlcy50cnVuY2F0ZWR9ICR7XG4gICAgcmV2ZXJzZWQgJiYgc3R5bGVzLnJldmVyc2VkXG4gIH1gO1xuXG4gIGNvbnN0IGhhbmRsZUNvcHkgPSAoKSA9PiB7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dCk7XG4gICAgc2V0VG9vbHRpcCh0KFwiZ2VuZXJhbC5jb3BpZWRcIikpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0VG9vbHRpcCh0b29sdGlwVGV4dFRvVXNlKTtcbiAgICB9LCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y2xhc3NOYW1lc30gc3R5bGU9e3sgd2lkdGggfX0+XG4gICAgICAgIHt0ZXh0fVxuICAgICAgPC9zcGFuPlxuICAgICAgeyFoaWRlQ29weSAmJiAoXG4gICAgICAgIDxUb29sdGlwIHRpdGxlPXt0b29sdGlwfT5cbiAgICAgICAgICA8Q29udGVudENvcHlJY29uXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb3B5SWNvbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNvcHl9XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cImNvcHktbnVtYmVyLWJ1dHRvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNvcHlUZXh0LnByb3BUeXBlcyA9IHtcbiAgdGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdG9vbHRpcFRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGhpZGVDb3B5OiBQcm9wVHlwZXMuYm9vbCxcbiAgdHJ1bmNhdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmV2ZXJzZWQ6IFByb3BUeXBlcy5ib29sLFxuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlclxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29weVRleHQ7XG4iLCJpbXBvcnQgeyBjcmVhdGVDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IGRlZmF1bHRDb250ZXh0VmFsdWUgPSB7XG4gIHNldE1lc3NhZ2U6ICgpID0+IHt9LFxuICBzZXRNZXNzYWdlQ2FsbGJhY2s6ICgpID0+IHt9XG59O1xuXG5jb25zdCBDdXN0b21EaWFsb2dDb250ZXh0ID0gY3JlYXRlQ29udGV4dChkZWZhdWx0Q29udGV4dFZhbHVlKTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tRGlhbG9nQ29udGV4dDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIERpYWxvZyxcbiAgRGlhbG9nQ29udGVudCxcbiAgRGlhbG9nQ29udGVudFRleHQsXG4gIERpYWxvZ1RpdGxlXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmNvbnN0IEN1c3RvbURpYWxvZyA9ICh7IG9wZW4sIG9uQ2xvc2UsIHRpdGxlLCBib2R5IH0pID0+IChcbiAgPERpYWxvZ1xuICAgIG9wZW49e29wZW59XG4gICAgb25DbG9zZT17b25DbG9zZX1cbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJhbGVydC1kaWFsb2ctdGl0bGVcIlxuICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICA+XG4gICAgPERpYWxvZ1RpdGxlIGlkPVwiYWxlcnQtZGlhbG9nLXRpdGxlXCI+e3RpdGxlfTwvRGlhbG9nVGl0bGU+XG4gICAgPERpYWxvZ0NvbnRlbnQ+XG4gICAgICA8RGlhbG9nQ29udGVudFRleHRcbiAgICAgICAgaWQ9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IGJvZHkgfX1cbiAgICAgIC8+XG4gICAgPC9EaWFsb2dDb250ZW50PlxuICA8L0RpYWxvZz5cbik7XG5cbkN1c3RvbURpYWxvZy5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGJvZHk6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbURpYWxvZztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxubGV0IGRhcmtDb2xvciA9IFwiXCI7XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAvLyBHZXQgdGhlIHJvb3QgZWxlbWVudFxuICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gIC8vIFJldHJpZXZlIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgQ1NTIHZhcmlhYmxlXG4gIGRhcmtDb2xvciA9IGdldENvbXB1dGVkU3R5bGUocm9vdCkuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICBcIi0tY29sb3JfYmFja2dyb3VuZF9kYXJrXCJcbiAgKTtcbn1cblxuY29uc3QgdGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHBhbGV0dGU6IHtcbiAgICBwcmltYXJ5OiB7XG4gICAgICBtYWluOiBkYXJrQ29sb3JcbiAgICB9LFxuICAgIHRleHQ6IHtcbiAgICAgIHByaW1hcnk6IFwiIzAwMDAwMERFXCIsXG4gICAgICBzZWNvbmRhcnk6IFwiIzAwMDAwMDk5XCJcbiAgICB9XG4gIH0sXG4gIHR5cG9ncmFwaHk6IHtcbiAgICBib2R5MToge1xuICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICB9LFxuICAgIGg1OiB7XG4gICAgICBmb250U2l6ZTogXCIxLjZlbVwiLFxuICAgICAgZm9udFdlaWdodDogNDAwLFxuICAgICAgXCImLk11aVR5cG9ncmFwaHktZ3V0dGVyQm90dG9tXCI6IHtcbiAgICAgICAgbWFyZ2luQm90dG9tOiBcIjIwcHhcIlxuICAgICAgfVxuICAgIH0sXG4gICAgaDY6IHtcbiAgICAgIGZvbnRTaXplOiBcIjEuNGVtXCIsXG4gICAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgICBcIiYuTXVpVHlwb2dyYXBoeS1ndXR0ZXJCb3R0b21cIjoge1xuICAgICAgICBtYXJnaW5Cb3R0b206IFwiMjBweFwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjb21wb25lbnRzOiB7XG4gICAgTXVpQnV0dG9uOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgZm9udFNpemU6IFwiMWVtXCIsXG4gICAgICAgICAgZm9udFdlaWdodDogNTAwLFxuICAgICAgICAgIGxpbmVIZWlnaHQ6IFwiMjJweFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE11aVRhYjoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgcm9vdDoge1xuICAgICAgICAgIGZvbnRTaXplOiBcIjE0cHhcIixcbiAgICAgICAgICBjb2xvcjogXCIjMDAwMDAwOTlcIixcbiAgICAgICAgICBcIiYuTXVpLXNlbGVjdGVkXCI6IHtcbiAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpVGFiczoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgaW5kaWNhdG9yOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcblxuY29uc3QgQ3VzdG9tVGhlbWUgPSAoeyBjaGlsZHJlbiB9KSA9PiAoXG4gIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+e2NoaWxkcmVufTwvVGhlbWVQcm92aWRlcj5cbik7XG5cbkN1c3RvbVRoZW1lLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbVRoZW1lO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWxcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuICBjb25zdCBxdWVzdGlvbk1heFZhbHVlcyA9IHF1ZXN0aW9uLm1heF9zZWxlY3RlZF92YWx1ZXM7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICBjb25zdCBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UgPSAoY2hlY2tlZCwgdmFsKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEFucyA9IHZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IG1heFNlbGVjdGlvblJlYWNoZWQgPVxuICAgICAgcXVlc3Rpb25NYXhWYWx1ZXMgIT09IDAgJiYgY3VycmVudEFucy5sZW5ndGggPT09IHF1ZXN0aW9uTWF4VmFsdWVzO1xuICAgIGxldCBuZXdWYWx1ZTtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBuZXdWYWx1ZSA9IG1heFNlbGVjdGlvblJlYWNoZWQgPyBjdXJyZW50QW5zIDogWy4uLmN1cnJlbnRBbnMsIHZhbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlID0gY3VycmVudEFucy5maWx0ZXIoKHYpID0+IHYgIT09IHZhbCk7XG4gICAgfVxuXG4gICAgc2V0RmllbGRWYWx1ZShxdWVzdGlvblNsdWcsIG5ld1ZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbD57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXt2YWx1ZT8uaW5jbHVkZXMob3AudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhldikgPT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlKGV2LnRhcmdldC5jaGVja2VkLCBvcC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvRm9ybUdyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYXJyYXksXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBtYXJnaW49XCJub3JtYWxcIiBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmJvb2wsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgSW5wdXRMYWJlbCwgTWVudUl0ZW0sIFNlbGVjdCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25RdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZFxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPElucHV0TGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0lucHV0TGFiZWw+XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBsYWJlbElkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgaWQ9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMjAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPE1lbnVJdGVtIGtleT17b3AubGFiZWx9IHZhbHVlPXtvcC52YWx1ZX0+XG4gICAgICAgICAgICAgIHtvcC5sYWJlbH1cbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU2VsZWN0PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuRHJvcGRvd25RdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsLFxuICBSYWRpbyxcbiAgUmFkaW9Hcm91cFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPFJhZGlvR3JvdXBcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICB2YWx1ZT17b3AudmFsdWV9XG4gICAgICAgICAgICAgIGNvbnRyb2w9ezxSYWRpbyAvPn1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFRleHRRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5UZXh0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGV4dFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1J1bGUgPSAodmFsdWUsIHJ1bGUpID0+IHtcbiAgY29uc3QgdmFsdWVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzO1xuXG4gIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBpZiAoIXZhbHVlLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGxldCByZXMgPSBydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCI7XG4gICAgdmFsdWVzLmZvckVhY2goKHYpID0+IHtcbiAgICAgIGlmIChydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCIpIHtcbiAgICAgICAgcmVzID0gcmVzICYmIHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3JcbiAgICAgICAgcmVzID0gcmVzIHx8IHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgcmV0dXJuIHZhbHVlcy5pbmNsdWRlcyh2YWx1ZT8udG9TdHJpbmcoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tWaXNpYmlsaXR5ID0gKHJ1bGUsIHJ1bGVSZXN1bHQsIGNoaWxkcmVuKSA9PiB7XG4gIGlmIChydWxlLnZpc2liaWxpdHkgPT09IFwiVmlzaWJsZVwiKSB7XG4gICAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgICAgaWYgKHJ1bGVSZXN1bHQpIHJldHVybiBjaGlsZHJlbjtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyBOb24gRXF1YWxcbiAgICBpZiAoIXJ1bGVSZXN1bHQpIHtcbiAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gbm90IHZpc2libGVcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgIGlmICghcnVsZVJlc3VsdCkgcmV0dXJuIGNoaWxkcmVuO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChydWxlUmVzdWx0KSByZXR1cm4gY2hpbGRyZW47XG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHRvU2x1ZyA9ICh0ZXh0LCBxdWVzdGlvbklkKSA9PiB7XG4gIGNvbnN0IHRleHRMQyA9IHRleHQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGAke3RleHRMQy5yZXBsYWNlKC9bXmEtekEtWjAtOV0rL2csIFwiX1wiKX1fJHtxdWVzdGlvbklkfWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGFiZWwgPSAocSkgPT5cbiAgLy8gcmVwbGFjZSBsaW5lIGJyZWFrcyBhbmQgcmVtb3ZlIG91dGVyIDxwPlxuICBxPy5sYWJlbD8ucmVwbGFjZSgvXFxuL2csIFwiIFwiKS5yZXBsYWNlKC88cD4oLiopPFxcL3A+L2dpLCBcIiQxXCIpO1xuXG5leHBvcnQgY29uc3QgaXNBbnN3ZXJlZCA9IChhbnN3ZXIpID0+IHtcbiAgaWYgKCFhbnN3ZXIpIHJldHVybiBmYWxzZTtcbiAgLy8gY2hlY2sgdHlwZVxuICBpZiAoQXJyYXkuaXNBcnJheShhbnN3ZXIpKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcInN0cmluZ1wiKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcIm51bWJlclwiKSByZXR1cm4gYW5zd2VyID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gYW5zd2VyO1xuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tJZlZhbHVlTWF0Y2ggPSAoYW5zd2VyLCBjb21wYXJlVmFsKSA9PiB7XG4gIGNvbnN0IGFuc3dlckFycmF5ID0gQXJyYXkuaXNBcnJheShhbnN3ZXIpID8gYW5zd2VyIDogW2Fuc3dlcl07XG5cbiAgcmV0dXJuIGFuc3dlckFycmF5LnNvbWUoKHYpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb21wYXJlVmFsKSkge1xuICAgICAgcmV0dXJuIGNvbXBhcmVWYWwuaW5jbHVkZXModik7XG4gICAgfVxuICAgIHJldHVybiB2ID09PSBjb21wYXJlVmFsO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlSW5pdGlhbFZhbHVlID0gKHEpID0+IHtcbiAgc3dpdGNoIChxLnR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcIlwiO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbHVlID0gKGFucywgdHlwZSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBhbnMgPT09IFwidHJ1ZVwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHJldHVybiBhbnM/LnNwbGl0KFwiLFwiKSB8fCBbXTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICByZXR1cm4gYW5zIHx8IFwiXCI7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIGFucyB8fCBudWxsO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gYW5zO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtQW53ZXJzRm9ybWF0ID0gKGFuc3dlcnMpID0+IHtcbiAgY29uc3Qge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICAuLi5leHRyYV9xdWVzdGlvbnNcbiAgfSA9IGFuc3dlcnM7XG5cbiAgY29uc3QgZm9ybWF0dGVkRVEgPSBPYmplY3QuZW50cmllcyhleHRyYV9xdWVzdGlvbnMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgIHF1ZXN0aW9uX2lkOiBwYXJzZUludChrZXkuc3BsaXQoXCJfXCIpLnBvcCgpLCAxMCksXG4gICAgYW5zd2VyOiB2YWx1ZS50b1N0cmluZygpXG4gIH0pKTtcblxuICByZXR1cm4ge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICBleHRyYV9xdWVzdGlvbnM6IGZvcm1hdHRlZEVRXG4gIH07XG59O1xuIiwiZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0ID0gXCJUZXh0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1RleHRBcmVhID0gXCJUZXh0QXJlYVwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja2JveCA9IFwiQ2hlY2tCb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0ID0gXCJSYWRpb0J1dHRvbkxpc3RcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ29tYm9Cb3ggPSBcIkNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCA9IFwiQ2hlY2tCb3hMaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCA9IFwiQ291bnRyeUNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uID0gXCJSYWRpb0J1dHRvblwiO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQge1xuICB0b1NsdWcsXG4gIGlzQW5zd2VyZWQsXG4gIGNoZWNrVmlzaWJpbGl0eSxcbiAgY2hlY2tSdWxlXG59IGZyb20gXCIuL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0LFxuICBRdWVzdGlvblR5cGVfVGV4dCxcbiAgUXVlc3Rpb25UeXBlX1RleHRBcmVhXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRleHRRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgRHJvcGRvd25RdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkXCI7XG5cbmNvbnN0IGdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSAocXVlc3Rpb25UeXBlKSA9PiB7XG4gIHN3aXRjaCAocXVlc3Rpb25UeXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dEFyZWE6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dDoge1xuICAgICAgcmV0dXJuIFRleHRRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OiB7XG4gICAgICByZXR1cm4gUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OiB7XG4gICAgICByZXR1cm4gQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OiB7XG4gICAgICByZXR1cm4gRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gUmVhY3QuRnJhZ21lbnQ7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyA9ICh7XG4gIGV4dHJhUXVlc3Rpb25zLFxuICBjbGFzc05hbWUgPSBcImV4dHJhUXVlc3Rpb25zXCIsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uXCIsXG4gIHJlYWRPbmx5ID0gZmFsc2UsXG4gIGFsbG93RWRpdCA9IHRydWUsXG4gIGZvcm1pa1xufSkgPT4ge1xuICBjb25zdCByZW5kZXJSdWxlID0gKHJ1bGUsIHF1ZXN0aW9uU2x1ZykgPT5cbiAgICBjaGVja1Zpc2liaWxpdHkoXG4gICAgICBydWxlLFxuICAgICAgY2hlY2tSdWxlKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSwgcnVsZSksXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHJlbmRlclF1ZXN0aW9uKHJ1bGUuc3ViX3F1ZXN0aW9uKVxuICAgICk7XG5cbiAgY29uc3QgcmVuZGVyUXVlc3Rpb24gPSAocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIC8vIGRpc2FibGUgZmllbGQgaWYgZWRpdCBpc24ndCBhbGxvd2VkIGFuZCB0aGUgcXVlc3Rpb25zIGlzIGFuc3dlcmVkXG4gICAgY29uc3QgaXNEaXNhYmxlZCA9XG4gICAgICAoIWFsbG93RWRpdCAmJiBpc0Fuc3dlcmVkKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSkpIHx8IHJlYWRPbmx5O1xuICAgIGNvbnN0IFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50KHEudHlwZSk7XG5cbiAgICBjb25zdCBmb3JtaWtQcm9wcyA9IHtcbiAgICAgIHZhbHVlOiBmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBvbkNoYW5nZTogZm9ybWlrLmhhbmRsZUNoYW5nZSxcbiAgICAgIG9uQmx1cjogZm9ybWlrLmhhbmRsZUJsdXIsXG4gICAgICBlcnJvcjpcbiAgICAgICAgZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBCb29sZWFuKGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSksXG4gICAgICBoZWxwZXJUZXh0OiBmb3JtaWsudG91Y2hlZFtxdWVzdGlvblNsdWddICYmIGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSxcbiAgICAgIHNldEZpZWxkVmFsdWU6IGZvcm1pay5zZXRGaWVsZFZhbHVlXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UXVlc3Rpb25GaWVsZENvbXBvbmVudFxuICAgICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgcXVlc3Rpb249e3F9XG4gICAgICAgIHF1ZXN0aW9uQ2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICAgICAgaXNEaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgey4uLmZvcm1pa1Byb3BzfVxuICAgICAgPlxuICAgICAgICB7cS5zdWJfcXVlc3Rpb25fcnVsZXM/Lm1hcCgocnVsZSkgPT4gcmVuZGVyUnVsZShydWxlLCBxdWVzdGlvblNsdWcpKX1cbiAgICAgIDwvUXVlc3Rpb25GaWVsZENvbXBvbmVudD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT57ZXh0cmFRdWVzdGlvbnMubWFwKHJlbmRlclF1ZXN0aW9uKX08L2Rpdj47XG59O1xuXG5FeHRyYVF1ZXN0aW9uc0ZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYWxsb3dFZGl0OiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFJhZGlvR3JvdXAsXG4gIFJhZGlvXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBBc3NpZ25lZEZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRDogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiTWVcIiwgbGFiZWw6IFwiTWVcIiB9LFxuICAgIHsgdmFsdWU6IFwiU29tZW9uZUVsc2VcIiwgbGFiZWw6IFwiU29tZW9uZSBFbHNlXCIgfSxcbiAgICB7IHZhbHVlOiBcIk5vYm9keVwiLCBsYWJlbDogXCJOb2JvZHlcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF06IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiQXNzaWduZWRcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuQXNzaWduZWRGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbmVkRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2hlY2tib3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEJhZGdlRmVhdHVyZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdDogeyBiYWRnZV9mZWF0dXJlc190eXBlcyB9LFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkU6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IGZpbHRlclZhbHVlcz8uaW5jbHVkZXModmFsdWUpXG4gICAgICA/IGZpbHRlclZhbHVlcy5maWx0ZXIoKGYpID0+IGYgIT09IHZhbHVlKVxuICAgICAgOiBbLi4uZmlsdGVyVmFsdWVzLCB2YWx1ZV07XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRV06IG5ld0ZpbHRlcnNcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiQmFkZ2UgRmVhdHVyZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7YmFkZ2VfZmVhdHVyZXNfdHlwZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPEJveCBzeD17eyBweTogMSB9fSBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2JmLm5hbWV9fWB9PlxuICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBoYW5kbGVGaWx0ZXJDaGFuZ2UoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtmaWx0ZXJWYWx1ZXMuaW5jbHVkZXMoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2RjNcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtiZi5uYW1lfVxuICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5CYWRnZUZlYXR1cmVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEJhZGdlRmVhdHVyZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IEZpbHRlckxpc3RJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIjtcbmltcG9ydCB7XG4gIEJhZGdlLFxuICBCb3gsXG4gIEJ1dHRvbixcbiAgQ2FyZCxcbiAgQ2FyZEhlYWRlcixcbiAgRGl2aWRlcixcbiAgUGFwZXJcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IGNvbm5lY3QgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBCYWRnZUZlYXR1cmVGaWx0ZXIgZnJvbSBcIi4vQmFkZ2VGZWF0dXJlRmlsdGVyXCI7XG5pbXBvcnQge1xuICBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUsXG4gIEZJTFRFUl9WQVJfRlJFRV9QQUlELFxuICBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyxcbiAgRklMVEVSX1ZBUl9QUk9NT0NPREUsXG4gIEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVELFxuICBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgVGlja2V0VHlwZUZpbHRlciBmcm9tIFwiLi9UaWNrZXRUeXBlRmlsdGVyXCI7XG5pbXBvcnQgQXNzaWduZWRGaWx0ZXIgZnJvbSBcIi4vQXNzaWduZWRGaWx0ZXJcIjtcbmltcG9ydCBTdGF0dXNGaWx0ZXIgZnJvbSBcIi4vU3RhdHVzRmlsdGVyXCI7XG5pbXBvcnQgRnJlZVBhaWRGaWx0ZXIgZnJvbSBcIi4vRnJlZVBhaWRGaWx0ZXJcIjtcbmltcG9ydCBQcm9tb0NvZGVGaWx0ZXIgZnJvbSBcIi4vUHJvbW9Db2RlRmlsdGVyXCI7XG5cbmNvbnN0IEZpbHRlciA9ICh7IG9uRmlsdGVyLCBvblJlc2V0LCBmaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93RmlsdGVyTGlzdCwgc2V0U2hvd0ZpbHRlckxpc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2hvd0RhdGVwaWNrZXIsIHNldFNob3dEYXRlcGlja2VyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2ZpbHRlck51bUFjdGl2ZSwgc2V0RmlsdGVyTnVtQWN0aXZlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBmaWx0ZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChmaWx0ZXJSZWYuY3VycmVudCAmJiAhZmlsdGVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgaWYgKHNob3dGaWx0ZXJMaXN0KSB7XG4gICAgICAgIHNldFNob3dGaWx0ZXJMaXN0KGZhbHNlKTtcbiAgICAgICAgc2V0U2hvd0RhdGVwaWNrZXIoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd0ZpbHRlckxpc3RdKTtcblxuICBjb25zdCBNQVJHSU5fUklHSFRfV0lUSF9CQURHRSA9IDE7XG4gIGNvbnN0IEFERF9GSUxURVJfTlVNQkVSID0gMTtcblxuICBjb25zdCBjYWxjdWxhdGVBY3RpdmVGaWx0ZXJzID0gKGZpbHRlcnMpID0+IHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpLmZvckVhY2goKFssIHZhbHVlXSkgPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGNvdW50ICs9IHZhbHVlLmxlbmd0aDtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlLnRyaW0oKSAhPT0gXCJcIikge1xuICAgICAgICBjb3VudCArPSBBRERfRklMVEVSX05VTUJFUjtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiICYmIHZhbHVlID4gMCkge1xuICAgICAgICBjb3VudCArPSBBRERfRklMVEVSX05VTUJFUjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY291bnQ7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRGaWx0ZXJOdW1BY3RpdmUoY2FsY3VsYXRlQWN0aXZlRmlsdGVycyhmaWx0ZXIpKTtcbiAgfSwgW2ZpbHRlcl0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93RmlsdGVyTGlzdCghc2hvd0ZpbHRlckxpc3QpO1xuICAgIHNldFNob3dEYXRlcGlja2VyKCFzaG93RGF0ZXBpY2tlcik7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyUmVzZXQgPSAoKSA9PiB7XG4gICAgc2V0RmlsdGVyTnVtQWN0aXZlKDApO1xuICAgIG9uUmVzZXQoKTtcbiAgICB0b2dnbGUoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ29udGFpbmVyfSByZWY9e2ZpbHRlclJlZn0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgICBvbkNsaWNrPXt0b2dnbGV9XG4gICAgICA+XG4gICAgICAgIDxCYWRnZVxuICAgICAgICAgIGJhZGdlQ29udGVudD17ZmlsdGVyTnVtQWN0aXZlfVxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgc3g9e3sgbXI6IGZpbHRlck51bUFjdGl2ZSA+IDAgPyBNQVJHSU5fUklHSFRfV0lUSF9CQURHRSA6IFwiXCIgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxGaWx0ZXJMaXN0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVySWNvbn0gLz5cbiAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyTGFiZWx9Pnt0KFwiZmlsdGVyLmZpbHRlclwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5maWx0ZXJMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9ICR7XG4gICAgICAgICAgc2hvd0ZpbHRlckxpc3QgPyBzdHlsZXMuc2hvd0ZpbHRlckxpc3QgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgPlxuICAgICAgICA8UGFwZXIgZWxldmF0aW9uPXs4fSBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJDaGVja2JveENvbnRhaW5lcn0+XG4gICAgICAgICAgPENhcmQgdmFyaWFudD1cIm91dGxpbmVkXCI+XG4gICAgICAgICAgICA8Q2FyZEhlYWRlclxuICAgICAgICAgICAgICB0aXRsZT1cIkZpbHRlcnNcIlxuICAgICAgICAgICAgICBhY3Rpb249e1xuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUZpbHRlclJlc2V0fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xlYW5CdXR0b259XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQ2xlYW5cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxEaXZpZGVyIC8+XG4gICAgICAgICAgICA8QmFkZ2VGZWF0dXJlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRV19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxBc3NpZ25lZEZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxTdGF0dXNGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VGlja2V0VHlwZUZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFByb21vQ29kZUZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX1BST01PQ09ERV19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxGcmVlUGFpZEZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX0ZSRUVfUEFJRF19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgIDwvUGFwZXI+XG4gICAgICA8L0JveD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuY29uc3QgbWFwU3RhdGVUb1Byb3BzID0gKHsgd2lkZ2V0U3RhdGUgfSkgPT4gKHtcbiAgc29ydDogd2lkZ2V0U3RhdGUuc29ydCxcbiAgZmlsdGVyOiB3aWRnZXRTdGF0ZS5maWx0ZXJcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywge30pKEZpbHRlcik7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfRlJFRV9QQUlEIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgRnJlZVBhaWRGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9GUkVFX1BBSUQ6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcblxuICBjb25zdCBhc3NpZ25lZFZhbHVlcyA9IFtcbiAgICB7IHZhbHVlOiBcIkZyZWVcIiwgbGFiZWw6IFwiRnJlZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJQYWlkXCIsIGxhYmVsOiBcIlBhaWRcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX0ZSRUVfUEFJRF06IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiRnJlZSAvIFBhaWRcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuRnJlZVBhaWRGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZyZWVQYWlkRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFRleHRGaWVsZFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfUFJPTU9DT0RFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgUHJvbW9Db2RlRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfUFJPTU9DT0RFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG4gIGNvbnN0IFtwcm9tb0NvZGUsIHNldFByb21vQ29kZV0gPSB1c2VTdGF0ZShmaWx0ZXJWYWx1ZXMgfHwgXCJcIik7XG5cbiAgY29uc3QgZGVib3VuY2VUaW1lciA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgREVCT1VOQ0VfVkFMVUUgPSA1MDA7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRQcm9tb0NvZGUoZmlsdGVyVmFsdWVzIHx8IFwiXCIpO1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMpO1xuICB9LCBbZmlsdGVyVmFsdWVzXSk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2KSA9PiB7XG4gICAgY29uc3QgbmV3UHJvbW9Db2RlID0gZXYudGFyZ2V0LnZhbHVlO1xuICAgIC8vIHVwZGF0ZSBsb2NhbCBzdGF0ZSBzbyB0aGUgaW5wdXQgcmVmbGVjdHMgY2hhbmdlc1xuICAgIHNldFByb21vQ29kZShuZXdQcm9tb0NvZGUpO1xuXG4gICAgLy8gcmVtb3ZlIGN1cnJlbnQgZGVib3VuY2VcbiAgICBpZiAoZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VUaW1lci5jdXJyZW50KTtcbiAgICB9XG5cbiAgICAvLyBkZWJvdW5jZSBzZXQgdG8gNTAwIG1zXG4gICAgZGVib3VuY2VUaW1lci5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBvbkZpbHRlcih7XG4gICAgICAgIFtGSUxURVJfVkFSX1BST01PQ09ERV06IG5ld1Byb21vQ29kZVxuICAgICAgfSk7XG4gICAgfSwgREVCT1VOQ0VfVkFMVUUpO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gcmVtb3ZlIGRlYm91bmNlIG9uIHJlbG9hZFxuICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiUHJvbW8gQ29kZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcHk6IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgcHJvbW8gY29kZVwiXG4gICAgICAgICAgICB2YWx1ZT17cHJvbW9Db2RlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX1cbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuUHJvbW9Db2RlRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBQcm9tb0NvZGVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IFNlYXJjaEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCI7XG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCI7XG5pbXBvcnQgSW5wdXRCYXNlIGZyb20gXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgU2VhcmNoQ29udGFpbmVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gIG1hcmdpblJpZ2h0OiBcIjBcIixcbiAgbWFyZ2luTGVmdDogXCIwXCIsXG4gIHdpZHRoOiBcIjEwMCVcIixcbiAgZGlzcGxheTogXCJibG9ja1wiXG59KSk7XG5jb25zdCBTZWFyY2hJY29uV3JhcHBlciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCJcbn0pKTtcbmNvbnN0IFN0eWxlZElucHV0QmFzZSA9IHN0eWxlZChJbnB1dEJhc2UpKCgpID0+ICh7XG4gIGNvbG9yOiBcImluaGVyaXRcIixcbiAgYm9yZGVyQm90dG9tOiBcIjFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuNDIpXCIsXG4gIHBhZGRpbmdMZWZ0OiBcIjI1cHhcIixcbiAgcGFkZGluZ1JpZ2h0OiBcIjI1cHhcIixcbiAgZm9udFNpemU6IFwiMWVtXCJcbn0pKTtcbmNvbnN0IENsb3NlSWNvbldyYXBwZXIgPSBzdHlsZWQoQ2xvc2VJY29uKSgoKSA9PiAoe1xuICBwYWRkaW5nOiBcIjJweFwiLFxuICBmb250U2l6ZTogXCIxLjVlbVwiLFxuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICB0b3A6IFwiMFwiLFxuICByaWdodDogXCIwXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgY3Vyc29yOiBcInBvaW50ZXJcIixcbiAgekluZGV4OiBcIjEwMDBcIlxufSkpO1xuXG5jb25zdCBTZWFyY2ggPSAoeyBvblNlYXJjaCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dDbG9zZSwgc2V0U2hvd0Nsb3NlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qgb25LZXlEb3duID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAga2V5LFxuICAgICAgbmF0aXZlRXZlbnQ6IHtcbiAgICAgICAgdGFyZ2V0OiB7IHZhbHVlIH1cbiAgICAgIH1cbiAgICB9ID0gZXZlbnQ7XG4gICAgaWYgKGtleSA9PT0gXCJFbnRlclwiKSB7XG4gICAgICBvblNlYXJjaCh7XG4gICAgICAgIFtGSUxURVJfVkFSX09SREVSX05VTUJFUl06IHZhbHVlXG4gICAgICB9KTtcbiAgICAgIHNldFNob3dDbG9zZSh0cnVlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHJlc2V0U2VhcmNoID0gKCkgPT4ge1xuICAgIHNldFNlYXJjaFZhbHVlKFwiXCIpO1xuICAgIG9uU2VhcmNoKHtcbiAgICAgIFtGSUxURVJfVkFSX09SREVSX05VTUJFUl06IFwiXCJcbiAgICB9KTtcbiAgICBzZXRTaG93Q2xvc2UodHJ1ZSk7XG4gICAgc2V0U2hvd0Nsb3NlKGZhbHNlKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPFNlYXJjaENvbnRhaW5lcj5cbiAgICAgICAge3Nob3dDbG9zZSAmJiAoXG4gICAgICAgICAgPENsb3NlSWNvbldyYXBwZXIgb25DbGljaz17cmVzZXRTZWFyY2h9PlxuICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgIDwvQ2xvc2VJY29uV3JhcHBlcj5cbiAgICAgICAgKX1cbiAgICAgICAgPFNlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICAgIDxTZWFyY2hJY29uIC8+XG4gICAgICAgIDwvU2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgIDxTdHlsZWRJbnB1dEJhc2VcbiAgICAgICAgICBwbGFjZWhvbGRlcj17dChcIm9yZGVyX3NlYXJjaC5vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgaW5wdXRQcm9wcz17eyBcImFyaWEtbGFiZWxcIjogXCJzZWFyY2hcIiB9fVxuICAgICAgICAgIHZhbHVlPXtzZWFyY2hWYWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFNlYXJjaFZhbHVlKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICBvbktleURvd249e29uS2V5RG93bn1cbiAgICAgICAgLz5cbiAgICAgIDwvU2VhcmNoQ29udGFpbmVyPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuU2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZWFyY2g7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBQYXBlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgSW1wb3J0RXhwb3J0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgU29ydCA9ICh7IG9uU29ydCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dTb3J0LCBzZXRTaG93U29ydF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHNvcnRSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZVNvcnRDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoc29ydFJlZi5jdXJyZW50ICYmICFzb3J0UmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgc2V0U2hvd1NvcnQoZmFsc2UpO1xuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93U29ydF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93U29ydCghc2hvd1NvcnQpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuc29ydENvbnRhaW5lcn0gb25DbGljaz17dG9nZ2xlfT5cbiAgICAgIDxTdGFja1xuICAgICAgICByZWY9e3NvcnRSZWZ9XG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgID5cbiAgICAgICAgPEltcG9ydEV4cG9ydEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRJY29ufSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0TGFiZWx9Pnt0KFwic29ydC5zb3J0XCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICB7c2hvd1NvcnQgJiYgKFxuICAgICAgICA8UGFwZXJcbiAgICAgICAgICBlbGV2YXRpb249ezh9XG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuc29ydExpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn1gfVxuICAgICAgICA+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNvcnQoeyBkaXJlY3Rpb246IFwiZGVzY1wiLCBuYW1lOiBcImNyZWF0ZWRcIiB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInNvcnQubmV3X2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Tb3J0KHsgZGlyZWN0aW9uOiBcImFzY1wiLCBuYW1lOiBcImNyZWF0ZWRcIiB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInNvcnQub2xkX2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L1BhcGVyPlxuICAgICAgKX1cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNvcnQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgU3RhdHVzRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG5cbiAgY29uc3QgYXNzaWduZWRWYWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogXCJJbmNvbXBsZXRlXCIsIGxhYmVsOiBcIkluY29tcGxldGVcIiB9LFxuICAgIHsgdmFsdWU6IFwiQ29tcGxldGVcIiwgbGFiZWw6IFwiQ29tcGxldGVcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX09XTkVSX1NUQVRVU106IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiU3RhdHVzXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblN0YXR1c0ZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3RhdHVzRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2hlY2tib3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfVElDS0VUX1RZUEUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBUaWNrZXRUeXBlRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgc3VtbWl0OiB7IHRpY2tldF90eXBlcyB9LFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9ICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBmaWx0ZXJWYWx1ZXM/LmluY2x1ZGVzKHZhbHVlKVxuICAgICAgPyBmaWx0ZXJWYWx1ZXMuZmlsdGVyKChmKSA9PiBmICE9PSB2YWx1ZSlcbiAgICAgIDogWy4uLmZpbHRlclZhbHVlcywgdmFsdWVdO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXTogbmV3RmlsdGVyc1xuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SXNFeHBhbmRlZCghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuICB9LCBbZmlsdGVyVmFsdWVzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJUaWNrZXQgVHlwZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7dGlja2V0X3R5cGVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxCb3ggc3g9e3sgcHk6IDEgfX0ga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHtiZi5uYW1lfX1gfT5cbiAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gaGFuZGxlRmlsdGVyQ2hhbmdlKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZmlsdGVyVmFsdWVzLmluY2x1ZGVzKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCIjMjE5NkYzXCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsYWJlbD17YmYubmFtZX1cbiAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0VHlwZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0VHlwZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwiLi9GaWx0ZXJcIjtcbmltcG9ydCBTb3J0IGZyb20gXCIuL1NvcnRcIjtcbmltcG9ydCBTZWFyY2ggZnJvbSBcIi4vU2VhcmNoXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEZpbHRlcnMgPSAoeyBvbkZpbHRlciwgb25Tb3J0LCBvblNlYXJjaCwgb25SZXNldCB9KSA9PiAoXG4gIDxHcmlkIGNvbnRhaW5lciBqdXN0aWZ5PVwiZmxleC1lbmRcIiBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgPEdyaWRcbiAgICAgIGl0ZW1cbiAgICAgIHhzPXs2fVxuICAgICAgY29udGFpbmVyXG4gICAgICBwYWRkaW5nPXsxfVxuICAgICAgZ2FwPXsyfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyU29ydENvbnRhaW5lcn1cbiAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgID5cbiAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgIDxGaWx0ZXIgb25GaWx0ZXI9e29uRmlsdGVyfSBvblJlc2V0PXtvblJlc2V0fSAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgPFNvcnQgb25Tb3J0PXtvblNvcnR9IC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICAgIDxHcmlkIGl0ZW0geHM9ezZ9IGNvbnRhaW5lciBqdXN0aWZ5Q29udGVudD1cImZsZXgtZW5kXCI+XG4gICAgICA8U2VhcmNoIG9uU2VhcmNoPXtvblNlYXJjaH0gLz5cbiAgICA8L0dyaWQ+XG4gIDwvR3JpZD5cbik7XG5cbkZpbHRlcnMucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU29ydDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlcnM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgRm9ybUZvb3RlciA9ICh7IHNhdmVMYWJlbCwgY2FuY2VsTGFiZWwsIG9uQ2xvc2UsIGRpc2FibGVkIH0pID0+IChcbiAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5mb290ZXJ9PlxuICAgIDxCdXR0b25cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ0bn1cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge2NhbmNlbExhYmVsfVxuICAgIDwvQnV0dG9uPlxuICAgIDxCdXR0b25cbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuc2F2ZUJ0bn1cbiAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge3NhdmVMYWJlbH1cbiAgICA8L0J1dHRvbj5cbiAgPC9Cb3g+XG4pO1xuXG5Gb3JtRm9vdGVyLnByb3BUeXBlcyA9IHtcbiAgc2F2ZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjYW5jZWxMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRm9ybUZvb3RlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBFcnJvckljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRXJyb3JMYWJlbCh7IG1lc3NhZ2UsIGNvbG9yLCBjbGFzc05hbWVzLCBkYXRhVGVzdElkIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3BhblxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZXJyb3JMYWJlbH0gJHtjbGFzc05hbWVzICYmIGNsYXNzTmFtZXN9YH1cbiAgICAgIHN0eWxlPXt7IGNvbG9yIH19XG4gICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZH1cbiAgICA+XG4gICAgICA8RXJyb3JJY29uIHN4PXt7IGNvbG9yIH19IC8+XG4gICAgICB7bWVzc2FnZX1cbiAgICA8L3NwYW4+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVycm9yTGFiZWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCYWNrZHJvcCwgQ2lyY3VsYXJQcm9ncmVzcyB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmNvbnN0IExvYWRlciA9ICh7IG9wZW4gfSkgPT4gKFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICA8QmFja2Ryb3Agb3Blbj17b3Blbn0gc3g9eyh0aGVtZSkgPT4gKHsgekluZGV4OiB0aGVtZS56SW5kZXguZHJhd2VyICsgMSB9KX0+XG4gICAgPENpcmN1bGFyUHJvZ3Jlc3MgY29sb3I9XCJpbmhlcml0XCIgLz5cbiAgPC9CYWNrZHJvcD5cbik7XG5cbkxvYWRlci5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBMb2FkZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IEluZmluaXRlU2Nyb2xsIGZyb20gXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCI7XG5pbXBvcnQgT3JkZXJzTGlzdCBmcm9tIFwiLi4vT3JkZXJzTGlzdFwiO1xuaW1wb3J0IHsgZ2V0VGlja2V0c0J5T3JkZXIsIGdldFVzZXJPcmRlcnMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCwgRklSU1RfUEFHRSB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCB7IGhhc01vcmUyRmV0Y2gsIHNob3VsZEZldGNoRGF0YSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE15T3JkZXJzVGlja2V0cyA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQsXG4gICAgbWVtYmVyT3JkZXJzLFxuICAgIG9yZGVyc19jdXJyZW50X3BhZ2UsXG4gICAgb3JkZXJzX2xhc3RfcGFnZSxcbiAgICBvcmRlcnNfcGVyX3BhZ2UsXG4gICAgdGlja2V0X3Blcl9wYWdlLFxuICAgIGZpbHRlcixcbiAgICBzb3J0XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IGZldGNoRGF0YSA9IGFzeW5jIChwYWdlKSA9PiB7XG4gICAgaWYgKHNob3VsZEZldGNoRGF0YShwYWdlLCBvcmRlcnNfY3VycmVudF9wYWdlLCBvcmRlcnNfbGFzdF9wYWdlKSlcbiAgICAgIGRpc3BhdGNoKFxuICAgICAgICBnZXRVc2VyT3JkZXJzKHtcbiAgICAgICAgICBwYWdlLFxuICAgICAgICAgIHBlclBhZ2U6IG9yZGVyc19wZXJfcGFnZSxcbiAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgc29ydFxuICAgICAgICB9KVxuICAgICAgKS50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgICAgZGF0YS5mb3JFYWNoKChvcmRlcikgPT4ge1xuICAgICAgICAgIGRpc3BhdGNoKFxuICAgICAgICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgICAgICAgY3VycmVudF9wYWdlOiBGSVJTVF9QQUdFLFxuICAgICAgICAgICAgICBwZXJQYWdlOiB0aWNrZXRfcGVyX3BhZ2UsXG4gICAgICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICAgICAgc29ydFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZmV0Y2hEYXRhKEZJUlNUX1BBR0UpO1xuICB9LCBbZmlsdGVyLCBzb3J0XSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGlkPVwiaW5maW5pdGVXcmFwcGVyXCIgY2xhc3NOYW1lPXtzdHlsZXMubXlPcmRlcnNXcmFwcGVyfT5cbiAgICAgIHtcIiBcIn1cbiAgICAgIHttZW1iZXJPcmRlcnM/Lmxlbmd0aCA/IChcbiAgICAgICAgPEluZmluaXRlU2Nyb2xsXG4gICAgICAgICAgZGF0YUxlbmd0aD17bWVtYmVyT3JkZXJzPy5sZW5ndGh9XG4gICAgICAgICAgbmV4dD17KCkgPT4gZmV0Y2hEYXRhKG9yZGVyc19jdXJyZW50X3BhZ2UgKyBPTkVfUEFHRV9ORVhUKX1cbiAgICAgICAgICBoYXNNb3JlPXtoYXNNb3JlMkZldGNoKG9yZGVyc19jdXJyZW50X3BhZ2UsIG9yZGVyc19sYXN0X3BhZ2UpfVxuICAgICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgICAgICBzY3JvbGxhYmxlVGFyZ2V0PVwiaW5maW5pdGVXcmFwcGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIHttZW1iZXJPcmRlcnM/Lm1hcCgob3JkZXIpID0+IChcbiAgICAgICAgICAgIDxPcmRlcnNMaXN0XG4gICAgICAgICAgICAgIGtleT17b3JkZXIubnVtYmVyICsgb3JkZXIuaWR9XG4gICAgICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5ub09yZGVyc0ZvdW5kfT5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm5vT3JkZXJzSWNvbldyYXBwZXJ9PlxuICAgICAgICAgICAgPFNlYXJjaEljb24gc3g9e3sgZm9udFNpemU6IDQ0LCBjb2xvcjogXCIjMDAwMDAwOEZcIiB9fSAvPlxuICAgICAgICAgICAgPENsb3NlSWNvblxuICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxOCxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgICAgICBjb2xvcjogXCIjMDAwMDAwOEZcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICB7dChcIm9yZGVycy5ub19vcmRlcnNcIil9XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzVGlja2V0cztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRGl2aWRlciBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVPcmRlclRvdGFscywgZm9ybWF0Q3VycmVuY3kgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5VGFibGUgPSAoeyBvcmRlciwgc3VtbWl0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGRpc2NvdW50VG90YWwsIHJlZnVuZFRvdGFsLCB0YXhlc1RvdGFsLCBhbW91bnRUb3RhbCwgdGlja2V0U3VtbWFyeSB9ID1cbiAgICBjYWxjdWxhdGVPcmRlclRvdGFscyh7IG9yZGVyLCBzdW1taXQgfSk7XG4gIGNvbnN0IGh1bmRyZWQgPSAxMDA7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVRhYmxlfT5cbiAgICAgIHt0aWNrZXRTdW1tYXJ5Py5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dGlja2V0U3VtbWFyeS5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGlja2V0VG90YWwgPVxuICAgICAgICAgICAgICAodGlja2V0LnF0eSAqICh0aWNrZXQudGlja2V0X3R5cGUuY29zdCAqIGh1bmRyZWQpKSAvIGh1bmRyZWQ7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgICAga2V5PXtgdGl4b3JkZXJfJHt0aWNrZXQudGlja2V0X3R5cGUuY3JlYXRlZH1gfVxuICAgICAgICAgICAgICAgIHN4PXt7IHBiOiAxIH19XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1zdW1tYXJ5LWl0ZW1pemVkXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIHh7dGlja2V0LnF0eX0ge3RpY2tldC50aWNrZXRfdHlwZS5uYW1lfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0VG90YWwsIHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH0pfVxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAge29yZGVyLmRpc2NvdW50X2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkuZGlzY291bnRzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Rpc2NvdW50VG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAge29yZGVyLnRheGVzX2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudGF4ZXNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHt0YXhlc1RvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmFtb3VudF9wYWlkXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Ftb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtyZWZ1bmRUb3RhbCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kc1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAge3JlZnVuZFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcHQ6IDEsIHBiOiAxIH19PlxuICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudG90YWxcIil9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiID8gXCIkMC4wMFwiIDogYW1vdW50VG90YWx9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbk9yZGVyU3VtbWFyeVRhYmxlLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzY291bnRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRheGVzX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5VGFibGU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyB0aWNrZXRzUmVmdW5kYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWZ1bmRFbWFpbFN1cHBvcnQgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldHMsXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2ssXG4gIG9uRW1haWxTdXBwb3J0Q2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgaXNJblJlZnVuZGFibGVQZXJpb2QgPVxuICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUgPiBub3c7XG4gIGNvbnN0IGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0ID0gdGlja2V0c1JlZnVuZGFibGUodGlja2V0cyk7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9ICEhKGlzSW5SZWZ1bmRhYmxlUGVyaW9kICYmIGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0KTtcbiAgY29uc3QgaGFzUmVmdW5kUmVxdWVzdHMgPSB0aWNrZXRzPy5zb21lKCh0KSA9PiB0LnJlZnVuZF9yZXF1ZXN0cy5sZW5ndGggPiAwKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2lzUmVmdW5kYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHJlcXVlc3QgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259IFxuICAgICAgICAgICR7c3VibWl0UmVxdWVzdCA/IHN0eWxlcy5yZWZ1bmREaXNhYmxlZCA6IFwiXCJ9YH1cbiAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgb25DbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBkaXNhYmxlZD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgICAge2hhc1JlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgZGV0YWlscyBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgb25DbGljaz17b25SZWZ1bmREZXRhaWxDbGlja31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwiZW1haWwgc3VwcG9ydCBidXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBvbkNsaWNrPXtvbkVtYWlsU3VwcG9ydENsaWNrfVxuICAgICAgPlxuICAgICAgICB7dChcIm9yZGVyX2luZm8uZW1haWxfc3VwcG9ydFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvPlxuICApO1xufTtcblxuUmVmdW5kRW1haWxTdXBwb3J0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZWZ1bmREZXRhaWxDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRW1haWxTdXBwb3J0Q2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRW1haWxTdXBwb3J0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBPcmRlclN1bW1hcnlUYWJsZSBmcm9tIFwiLi9PcmRlclN1bW1hcnlUYWJsZVwiO1xuaW1wb3J0IFJlZnVuZEVtYWlsU3VwcG9ydCBmcm9tIFwiLi9SZWZ1bmRFbWFpbFN1cHBvcnRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5ID0gKHtcbiAgb3JkZXIsXG4gIHN1bW1pdCxcbiAgb25SZWZ1bmRDbGljayxcbiAgc3VibWl0UmVxdWVzdCxcbiAgb25SZWZ1bmREZXRhaWxDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5V3JhcHBlcn1cbiAgICAgICAgc3g9e3sgcHQ6IDQsIHB4OiA0IH19XG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX3N1bW1hcnlcIil9PC9oMz5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvfVxuICAgICAgICAgICAgc3g9e3sgcGI6IDMgfX1cbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8T3JkZXJTdW1tYXJ5VGFibGUgb3JkZXI9e29yZGVyfSBzdW1taXQ9e3N1bW1pdH0gLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCB4cz17MTJ9IHN4PXt7IHBiOiAzIH19PlxuICAgICAgICA8UmVmdW5kRW1haWxTdXBwb3J0XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHN9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICAgICAgb25FbWFpbFN1cHBvcnRDbGljaz17KCkgPT4ge319XG4gICAgICAgIC8+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcbn07XG5PcmRlclN1bW1hcnkucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lbWJlclRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSksXG4gIG9uUmVmdW5kQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IHsgZ2V0VXNlclRpY2tldHMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHtcbiAgT05FX1BBR0VfTkVYVCxcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgRklSU1RfUEFHRVxufSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBoYXNNb3JlMkZldGNoLCBzaG91bGRGZXRjaERhdGEgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcblxuY29uc3QgQXNzaWduVG9NZSA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIHVzZXJUaWNrZXRzLFxuICAgIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UsXG4gICAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZSxcbiAgICBmaWx0ZXIsXG4gICAgc29ydFxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIGNvbnN0IGZldGNoRGF0YSA9IGFzeW5jIChwYWdlKSA9PiB7XG4gICAgaWYgKFxuICAgICAgc2hvdWxkRmV0Y2hEYXRhKHBhZ2UsIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UsIHVzZXJfdGlja2V0c19sYXN0X3BhZ2UpXG4gICAgKVxuICAgICAgZGlzcGF0Y2goXG4gICAgICAgIGdldFVzZXJUaWNrZXRzKHsgcGFnZSwgcGVyUGFnZTogREVGQVVMVF9JVEVNU19QRVJfUEFHRSwgZmlsdGVyLCBzb3J0IH0pXG4gICAgICApO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZmV0Y2hEYXRhKEZJUlNUX1BBR0UpO1xuICB9LCBbZmlsdGVyLCBzb3J0XSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfT5cbiAgICAgIDxkaXYgaWQ9XCJhc3NpZ25lZFRvTWVXcmFwcGVyXCIgY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRUb01lV3JhcHBlcn0+XG4gICAgICAgIHt1c2VyVGlja2V0cz8ubGVuZ3RoID8gKFxuICAgICAgICAgIDxJbmZpbml0ZVNjcm9sbFxuICAgICAgICAgICAgZGF0YUxlbmd0aD17dXNlclRpY2tldHM/Lmxlbmd0aH1cbiAgICAgICAgICAgIG5leHQ9eygpID0+IGZldGNoRGF0YSh1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlICsgT05FX1BBR0VfTkVYVCl9XG4gICAgICAgICAgICBoYXNNb3JlPXtoYXNNb3JlMkZldGNoKFxuICAgICAgICAgICAgICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlLFxuICAgICAgICAgICAgICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlXG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgc2Nyb2xsVGhyZXNob2xkPXsxfVxuICAgICAgICAgICAgc2Nyb2xsYWJsZVRhcmdldD1cImFzc2lnbmVkVG9NZVdyYXBwZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn0+XG4gICAgICAgICAgICAgIHt1c2VyVGlja2V0cy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICBpc1JlZnVuZGluZz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9e1tdfVxuICAgICAgICAgICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubm9UaWNrZXRzRm91bmR9PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5ub09yZGVyc0ljb25XcmFwcGVyfT5cbiAgICAgICAgICAgICAgPFNlYXJjaEljb24gc3g9e3sgZm9udFNpemU6IDQ0LCBjb2xvcjogXCIjMDAwMDAwOEZcIiB9fSAvPlxuICAgICAgICAgICAgICA8Q2xvc2VJY29uXG4gICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxOCxcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMwMDAwMDA4RlwiXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRzLm5vX3RpY2tldHNcIil9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnblRvTWU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIEdyaWQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25lZFRvID0gKHsgZW1haWwgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+e3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbmVkX3RvXCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGRhdGEtdGVzdGlkPVwiYXR0ZW5kZWUtc3RhdHVzLWFzc2lnbmVkXCI+XG4gICAgICAgIHtlbWFpbH1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmNvbnN0IEV4dGVybmFsQXNzaWduZWRUbyA9ICh7IGZpcnN0TmFtZSwgbGFzdE5hbWUgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+e3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbmVkX2J5XCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiPlxuICAgICAgICB7Zmlyc3ROYW1lfSB7bGFzdE5hbWV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5jb25zdCBNYW5hZ2VGb3IgPSAoeyBmaXJzdE5hbWUsIGxhc3ROYW1lIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9Pnt0KFwidGlja2V0X3N0YXR1cy5tYW5hZ2VfZm9yXCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiPlxuICAgICAgICB7Zmlyc3ROYW1lfSB7bGFzdE5hbWV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5jb25zdCBBdHRlbmRlZVN0YXR1cyA9ICh7IHRpY2tldCwgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc1VuYXNzaWduZWQgPSAhdGlja2V0Lm93bmVyPy5lbWFpbCAmJiB0aWNrZXQuaXNfYWN0aXZlO1xuICBjb25zdCBpc0RlbGVnYXRlZCA9ICEhdGlja2V0Lm93bmVyPy5tYW5hZ2VyX2lkO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0T3duZXJFbWFpbH1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJhdHRlbmRlZS1zdGF0dXMtdW5hc3NpZ25lZFwiXG4gICAgICA+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hdHRlbmRlZV9zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICApO1xuICB9XG5cbiAgaWYgKHRpY2tldC5vd25lcj8uZW1haWwpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICA8R3JpZCBpdGVtPlxuICAgICAgICAgIDxBc3NpZ25lZFRvIGVtYWlsPXt0aWNrZXQub3duZXIuZW1haWx9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAge2lzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCAmJiAoXG4gICAgICAgICAgPEdyaWQgaXRlbSBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25lZEJ5VGV4dH0+XG4gICAgICAgICAgICA8RXh0ZXJuYWxBc3NpZ25lZFRvXG4gICAgICAgICAgICAgIGZpcnN0TmFtZT17dGlja2V0Lm9yZGVyPy5vd25lcl9maXJzdF9uYW1lfVxuICAgICAgICAgICAgICBsYXN0TmFtZT17dGlja2V0Lm9yZGVyPy5vd25lcl9sYXN0X25hbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKX1cbiAgICAgICAge2lzRGVsZWdhdGVkICYmIChcbiAgICAgICAgICA8R3JpZCBpdGVtIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbmVkQnlUZXh0fT5cbiAgICAgICAgICAgIDxNYW5hZ2VGb3JcbiAgICAgICAgICAgICAgZmlyc3ROYW1lPXt0aWNrZXQub3duZXI/LmZpcnN0X25hbWV9XG4gICAgICAgICAgICAgIGxhc3ROYW1lPXt0aWNrZXQub3duZXI/Lmxhc3RfbmFtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApfVxuICAgICAgPC9HcmlkPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbkF0dGVuZGVlU3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBpc19hY3RpdmU6IFByb3BUeXBlcy5ib29sXG4gIH0pLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBdHRlbmRlZVN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuL09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCB7IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJMaXN0SXRlbSA9ICh7XG4gIHN1bW1pdCxcbiAgb3JkZXIsXG4gIG9uUGFnaW5hdGVDbGljayxcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpdGVtc1RvRGlzcGxheSwgc2V0SXRlbXNUb0Rpc3BsYXldID0gdXNlU3RhdGUoXG4gICAgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UXG4gICk7XG5cbiAgaWYgKCFvcmRlcj8ubWVtYmVyVGlja2V0cz8ubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgY29uc3Qgc2xpY2VkVGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzPy5zbGljZSgwLCBpdGVtc1RvRGlzcGxheSk7XG5cbiAgY29uc3Qgb25WaWV3TW9yZSA9ICgpID0+IHtcbiAgICBpZiAob3JkZXI/LnRpY2tldHNfdG90YWwgPiBvcmRlcj8ubWVtYmVyVGlja2V0cy5sZW5ndGgpIHtcbiAgICAgIG9uUGFnaW5hdGVDbGljaygpO1xuICAgIH1cbiAgICBzZXRJdGVtc1RvRGlzcGxheShpdGVtc1RvRGlzcGxheSArIFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCk7XG4gIH07XG5cbiAgY29uc3Qgb25WaWV3TGVzcyA9ICgpID0+IHNldEl0ZW1zVG9EaXNwbGF5KFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge3NsaWNlZFRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgaXNSZWZ1bmRpbmc9e2ZhbHNlfVxuICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17ISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKX1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICAgIHtvcmRlcj8udGlja2V0c190b3RhbCA+IGl0ZW1zVG9EaXNwbGF5ID8gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInZpZXcgbW9yZSBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e29uVmlld01vcmV9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy10aWNrZXRzLnZpZXdfbW9yZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgICAge3NsaWNlZFRpY2tldHM/Lmxlbmd0aCA+IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCAmJlxuICAgICAgc2xpY2VkVGlja2V0cz8ubGVuZ3RoID09PSBvcmRlcj8udGlja2V0c190b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IGxlc3MgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdMZXNzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMtdGlja2V0cy52aWV3X2xlc3NcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyTGlzdEl0ZW0ucHJvcFR5cGVzID0ge1xuICBvcmRlcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RJdGVtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgVGlja2V0U3RhdHVzIGZyb20gXCIuLi9UaWNrZXRTdGF0dXNcIjtcbmltcG9ydCB7IGdldFN1bW1pdFJlYXNzaWduRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdW1taXRVdGlsc1wiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgQXR0ZW5kZWVTdGF0dXMgZnJvbSBcIi4vQXR0ZW5kZWVTdGF0dXNcIjtcbmltcG9ydCBUaWNrZXREZXRhaWwgZnJvbSBcIi4uL1RpY2tldERldGFpbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgVGlja2V0QXNzaWduIGZyb20gXCIuLi9UaWNrZXRBc3NpZ25cIjtcbmltcG9ydCB7IHJlc2V0VGlja2V0IH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgbW9kYWxWaWV3cyA9IHtcbiAgZGV0YWlsOiBcIkRFVEFJTFwiLFxuICByZWFzc2lnbjogXCJSRUFTU0lHTlwiLFxuICBhc3NpZ246IFwiQVNTSUdOXCJcbn07XG5cbmNvbnN0IFRpY2tldENUQXMgPSAoe1xuICBpc0luY29tcGxldGUsXG4gIGlzVW5hc3NpZ25lZCxcbiAgaXNSZWFzc2lnbmFibGUsXG4gIG9uT3BlbkNsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBpZiAoaXNVbmFzc2lnbmVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxCdXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduVGlja2V0QnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLmFzc2lnbil9XG4gICAgICA+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25fdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFN0YWNrXG4gICAgICBzeD17e1xuICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJlbmRcIixcbiAgICAgICAgd2lkdGg6IFwiMTAwJVwiXG4gICAgICB9fVxuICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgID5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld0ZpbmlzaFRpY2tldEJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5kZXRhaWwpfVxuICAgICAgPlxuICAgICAgICB7aXNJbmNvbXBsZXRlXG4gICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5maW5pc2hfdGlja2V0XCIpXG4gICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAge2lzUmVhc3NpZ25hYmxlICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWFzc2lnbiB0aWNrZXQgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWFzc2lnbkJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLnJlYXNzaWduKX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5yZWFzc2lnbl90aWNrZXRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L1N0YWNrPlxuICApO1xufTtcblxuVGlja2V0Q1RBcy5wcm9wVHlwZXMgPSB7XG4gIGlzSW5jb21wbGV0ZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgaXNVbmFzc2lnbmVkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBpc1JlYXNzaWduYWJsZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgb25PcGVuQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmNvbnN0IE9yZGVyTGlzdFRpY2tldHMgPSAoe1xuICB0aWNrZXQsXG4gIHN1bW1pdCxcbiAgaXNSZWZ1bmRpbmcsXG4gIGlzU2VsZWN0ZWRUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmQsXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IHsgaXNSZWZ1bmRhYmxlLCBpc1VuYXNzaWduZWQsIGlzSW5jb21wbGV0ZSwgY2FuUmVhc3NpZ24gfSA9XG4gICAgdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuICBjb25zdCBbbW9kYWxPcGVuLCBzZXRNb2RhbE9wZW5dID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHJlYXNzaWduRGF0ZSA9IGdldFN1bW1pdFJlYXNzaWduRGF0ZShzdW1taXQpO1xuICBjb25zdCBvblJlYXNzaWduYWJsZVBlcmlvZCA9IHJlYXNzaWduRGF0ZSA+IG5vdztcbiAgY29uc3QgaXNSZWFzc2lnbmFibGUgPVxuICAgIG9uUmVhc3NpZ25hYmxlUGVyaW9kICYmIGNhblJlYXNzaWduICYmICFpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ7XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldFRpY2tldCgpKTtcbiAgICBzZXRNb2RhbE9wZW4obnVsbCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3Blbk1vZGFsID0gKHZpZXcpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldFRpY2tldCgpKTtcbiAgICBzZXRNb2RhbE9wZW4odmlldyk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8R3JpZFxuICAgICAgY29udGFpbmVyXG4gICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyV3JhcHBlcn0gJHtcbiAgICAgICAgaXNSZWZ1bmRpbmcgPyBzdHlsZXMucmVmdW5kTW9kYWwgOiBcIlwiXG4gICAgICB9ICR7aXNSZWZ1bmRpbmcgJiYgIWlzUmVmdW5kYWJsZSA/IHN0eWxlcy5kaXNhYmxlZFJlZnVuZCA6IFwiXCJ9ICR7XG4gICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZCA/IHN0eWxlcy5zZWxlY3RlZCA6IFwiXCJcbiAgICAgIH1gfVxuICAgID5cbiAgICAgIHtpc1JlZnVuZGluZyAmJiAoXG4gICAgICAgIDxHcmlkIGl0ZW0geHM9ezF9IHBhZGRpbmc9ezJ9IGNsYXNzTmFtZT17c3R5bGVzLmNoZWNrYm94fT5cbiAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgdGlja2V0IGNoZWNrYm94XCJcbiAgICAgICAgICAgIHJvbGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBjaGVja2VkPXtpc1NlbGVjdGVkVG9SZWZ1bmR9XG4gICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNlbGVjdFRvUmVmdW5kKGUsIHRpY2tldCl9XG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7XG4gICAgICAgICAgICAgICAgZm9udFNpemU6IDE4XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBkaXNhYmxlZD17IWlzUmVmdW5kYWJsZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPEdyaWRcbiAgICAgICAgaXRlbVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1saXN0LXRpY2tldFwiXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICB4cz17aXNSZWZ1bmRpbmcgPyAxMSA6IDEyfVxuICAgICAgPlxuICAgICAgICA8R3JpZFxuICAgICAgICAgIHhzPXs4fVxuICAgICAgICAgIHB5PXsyfVxuICAgICAgICAgIHBsPXs0fVxuICAgICAgICAgIGl0ZW1cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRUaWNrZXRUeXBlfVxuICAgICAgICAgIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxTdGFja1xuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1zdGFydFwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlV3JhcHBlcn0geHM9ezR9IHB5PXsyfSBwcj17NH0gaXRlbT5cbiAgICAgICAgICB7LyogVG8gYWRkIGJhZGdlIGZlYXR1cmVzICovfVxuICAgICAgICAgIHt0aWNrZXQuYmFkZ2U/LmZlYXR1cmVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlfVxuICAgICAgICAgICAgICBzcmM9e2JmLmltYWdlfVxuICAgICAgICAgICAgICBhbHQ9e2JmLm5hbWV9XG4gICAgICAgICAgICAgIGtleT17YmYubmFtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezEyfSBzeD17eyBweDogNCwgcGI6IDIgfX0gaXRlbT5cbiAgICAgICAgICA8QXR0ZW5kZWVTdGF0dXNcbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0PXshIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy50aWNrZXRfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgICB0ZXh0PXt0aWNrZXQubnVtYmVyfVxuICAgICAgICAgICAgICB0b29sdGlwVGV4dD17dChcInRpY2tldF9zdGF0dXMuY29weV90aWNrZXRfbnVtYmVyXCIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBsZz17Nn1cbiAgICAgICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICAgICAgaXRlbVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHB5PXsyfSBwcj17NH0geHM9ezEyfSBsZz17Nn0gY29udGFpbmVyIGl0ZW0+XG4gICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICBhbGlnbj1cImNlbnRlclwiXG4gICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgICAgICAgICAgIG1pbkhlaWdodDogXCIyZW1cIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRBY3Rpb25CdXR0b25zfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dGlja2V0LmlzX2FjdGl2ZSAmJiAhaXNSZWZ1bmRpbmcgJiYgKFxuICAgICAgICAgICAgICAgIDxUaWNrZXRDVEFzXG4gICAgICAgICAgICAgICAgICBpc1VuYXNzaWduZWQ9e2lzVW5hc3NpZ25lZH1cbiAgICAgICAgICAgICAgICAgIGlzSW5jb21wbGV0ZT17aXNJbmNvbXBsZXRlfVxuICAgICAgICAgICAgICAgICAgaXNSZWFzc2lnbmFibGU9e2lzUmVhc3NpZ25hYmxlICYmICFpc0V4dGVybmFsQXNzaWduZWRUaWNrZXR9XG4gICAgICAgICAgICAgICAgICBvbk9wZW5DbGljaz17aGFuZGxlT3Blbk1vZGFsfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxUaWNrZXREZXRhaWxcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICB0aWNrZXRJZD17dGlja2V0Py5pZH1cbiAgICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkIHx8IHRpY2tldD8ub3JkZXI/LmlkfVxuICAgICAgICAgIG93bmVySWQ9e3RpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICAgIG9wZW49e21vZGFsT3BlbiA9PT0gbW9kYWxWaWV3cy5kZXRhaWx9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgLz5cbiAgICAgICAgPFRpY2tldEFzc2lnblxuICAgICAgICAgIHRpY2tldElkPXt0aWNrZXQ/LmlkfVxuICAgICAgICAgIG9yZGVySWQ9e3RpY2tldD8ub3JkZXJfaWQgfHwgdGlja2V0Py5vcmRlcj8uaWR9XG4gICAgICAgICAgb3duZXJJZD17dGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgICAgb3Blbj17W21vZGFsVmlld3MucmVhc3NpZ24sIG1vZGFsVmlld3MuYXNzaWduXS5pbmNsdWRlcyhtb2RhbE9wZW4pfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICApO1xufTtcblxuT3JkZXJMaXN0VGlja2V0cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBpZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvcmRlcl9pZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGlkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBudW1iZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdG90YWxfcmVmdW5kZWRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRpY2tldF90eXBlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgaXNSZWZ1bmRpbmc6IFByb3BUeXBlcy5ib29sLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQ6IFByb3BUeXBlcy5ib29sLFxuICBzZWxlY3RUb1JlZnVuZDogUHJvcFR5cGVzLmZ1bmMsXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdFRpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgVGFicyBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJzXCI7XG5pbXBvcnQgVGFiIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYlwiO1xuaW1wb3J0IE9yZGVyTGlzdEl0ZW0gZnJvbSBcIi4vT3JkZXJMaXN0SXRlbVwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeSBmcm9tIFwiLi4vT3JkZXJTdW1tYXJ5XCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdHNNb2RhbCBmcm9tIFwiLi4vUmVmdW5kUmVxdWVzdHNcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFJlZnVuZERldGFpbHMgZnJvbSBcIi4uL1JlZnVuZFJlcXVlc3RzL1JlZnVuZERldGFpbHNcIjtcblxuY29uc3QgVGFiUGFuZWwgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgdmFsdWUsIGluZGV4IH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByb2xlPVwidGFicGFuZWxcIlxuICAgICAgaGlkZGVuPXt2YWx1ZSAhPT0gaW5kZXh9XG4gICAgICBpZD17YHRhYnBhbmVsLSR7aW5kZXh9YH1cbiAgICAgIGFyaWEtbGFiZWxsZWRieT17YHRhYi0ke2luZGV4fWB9XG4gICAgPlxuICAgICAge3ZhbHVlID09PSBpbmRleCAmJiBjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlID0gKHtcbiAgaXNNb2JpbGUsXG4gIHN1bW1pdCxcbiAgb3JkZXIsXG4gIGRldGFpbHNSZXF1aXJlZCxcbiAgb25QYWdpbmF0ZUNsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKF8sIG5ld1ZhbHVlKSA9PiB7XG4gICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICB9O1xuICBjb25zdCBbdGlja2V0c1RvUmVmdW5kLCBzZXRUaWNrZXRzVG9SZWZ1bmRdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbc3VibWl0UmVxdWVzdCwgc2V0U3VibWl0UmVxdWVzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtyZWZ1bmREZXRhaWxzT3Blbiwgc2V0UmVmdW5kRGV0YWlsc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IG9uUmVmdW5kQ2xpY2sgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdCh0cnVlKTtcbiAgfTtcbiAgY29uc3QgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzID0gKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IGZpbHRlclNlbGVjdGVkID0gdGlja2V0c1RvUmVmdW5kLmZpbHRlcigodCkgPT4gdC5pZCAhPT0gdGlja2V0LmlkKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoZmlsdGVyU2VsZWN0ZWQpO1xuICB9O1xuICBjb25zdCBzZWxlY3RUb1JlZnVuZCA9IChlLCB0aWNrZXQpID0+IHtcbiAgICBjb25zdCB7IGNoZWNrZWQgfSA9IGUudGFyZ2V0O1xuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFRpY2tldCA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICAgICAodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkXG4gICAgICApO1xuICAgICAgc2V0VGlja2V0c1RvUmVmdW5kKFsuLi50aWNrZXRzVG9SZWZ1bmQsIHNlbGVjdGVkVGlja2V0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cyh0aWNrZXQpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBjbG9zZVN1Ym1pdFJlcXVlc3QgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdChmYWxzZSk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKFtdKTtcbiAgfTtcblxuICBjb25zdCByZXNldEFsbFJlZnVuZFN0YXR1c2VzID0gKCkgPT4ge1xuICAgIHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3QgbW9yZURldGFpbHMgPSAoKSA9PlxuICAgIGRldGFpbHNSZXF1aXJlZCAmJiAoXG4gICAgICA8RXJyb3JMYWJlbFxuICAgICAgICBtZXNzYWdlPXt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfZGV0YWlsc19yZXF1aXJlZFwiKX1cbiAgICAgICAgY29sb3I9XCIjZmY5ODAwXCJcbiAgICAgICAgZGF0YVRlc3RJZD1cIm1vcmUtZGV0YWlscy1sYWJlbFwiXG4gICAgICAvPlxuICAgICk7XG5cbiAgcmV0dXJuIGlzTW9iaWxlID8gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICBkYXRhLXRlc3RpZD1cIm1vYmlsZS1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxCb3ggc3g9e3sgYm9yZGVyQ29sb3I6IFwiZGl2aWRlclwiLCBwYjogMiB9fT5cbiAgICAgICAgPFRhYnNcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiVGlja2V0cyAmIFN1bW1hcnlcIlxuICAgICAgICA+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy50aWNrZXRzXCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMuc3VtbWFyeVwiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgPC9UYWJzPlxuICAgICAgPC9Cb3g+XG4gICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXswfT5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezF9PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgPC9Cb3g+XG4gICkgOiAoXG4gICAgPD5cbiAgICAgIDxHcmlkIGl0ZW0gbWQ9ezEyfT5cbiAgICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZFxuICAgICAgICBwYWRkaW5nPXsxfVxuICAgICAgICBpdGVtXG4gICAgICAgIG1kPXs3fVxuICAgICAgICBvcmRlcj17eyBtZDogMSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImRlc2t0b3Atb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBwYWRkaW5nPXsxfSBpdGVtIG1kPXs1fSBvcmRlcj17eyBtZDogMSB9fT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4odHJ1ZSl9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8UmVmdW5kUmVxdWVzdHNNb2RhbFxuICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0cyB8fCBbXX1cbiAgICAgICAgb3Blbj17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U9eygpID0+IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMoKX1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gY2xvc2VTdWJtaXRSZXF1ZXN0KCl9XG4gICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgLz5cbiAgICAgIDxSZWZ1bmREZXRhaWxzXG4gICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICBjdXJyZW5jeT17b3JkZXIuY3VycmVuY3l9XG4gICAgICAgIG9wZW49e3JlZnVuZERldGFpbHNPcGVufVxuICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3BlbihmYWxzZSl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lbWJlclRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSksXG4gIGlzTW9iaWxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgZGV0YWlsc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25QYWdpbmF0ZUNsaWNrOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGU7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHVzZU1lZGlhUXVlcnkgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiO1xuaW1wb3J0IHsgZ2V0VGlja2V0c0J5T3JkZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSBmcm9tIFwiLi9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZVwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlcnNMaXN0ID0gKHsgc3VtbWl0LCBvcmRlciB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7IHRpY2tldF9wZXJfcGFnZSwgZmlsdGVyLCBzb3J0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlTWVkaWFRdWVyeSh0aGVtZS5icmVha3BvaW50cy5kb3duKFwibGdcIikpO1xuICBjb25zdCBbaXNNb2JpbGVWaWV3YWJsZSwgc2V0TW9iaWxlVmlld2FibGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkZXRhaWxzUmVxdWlyZWQgPSBvcmRlci5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICh0aWNrZXQpID0+IHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIlxuICApO1xuXG4gIGNvbnN0IG9uUGFnaW5hdGVDbGljayA9ICgpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICBwYWdlOiBvcmRlci50aWNrZXRzX3BhZ2VfY3VycmVudCArIE9ORV9QQUdFX05FWFQsXG4gICAgICAgIHBlclBhZ2U6IHRpY2tldF9wZXJfcGFnZSxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBzb3J0XG4gICAgICB9KVxuICAgICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBzeD17e1xuICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgIHhzOiAyLFxuICAgICAgICAgICAgbWQ6IDEsXG4gICAgICAgICAgICBsZzogMFxuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb31cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXRpY2tldC1pbmZvLWNvbnRhaW5lclwiXG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy5wdXJjaGFzZWRcIil9OiB7Z2V0Rm9ybWF0dGVkRGF0ZShvcmRlci5jcmVhdGVkKX0gfHtcIiBcIn1cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkub3JkZXJfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgIHRleHQ9e29yZGVyLm51bWJlcn1cbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwib3JkZXJfc3VtbWFyeS5jb3B5X29yZGVyX251bWJlclwiKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgc3g9e3sgcGFkZGluZzogMCB9fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmxhY2tCdXR0b259XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRNb2JpbGVWaWV3YWJsZSghaXNNb2JpbGVWaWV3YWJsZSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2lzTW9iaWxlVmlld2FibGVcbiAgICAgICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5oaWRlX3RpY2tldHNcIilcbiAgICAgICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldHNcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxHcmlkXG4gICAgICAgIGtleT17b3JkZXIuaWR9XG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICByb3dTcGFjaW5nPXsxfVxuICAgICAgICBjb2x1bW5TcGFjaW5nPXt7IHhzOiAxLCBzbTogMiwgbWQ6IDMgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9ICR7XG4gICAgICAgICAgaXNNb2JpbGUgJiYgIWlzTW9iaWxlVmlld2FibGUgPyBzdHlsZXMuZGlzcGxheV9ub25lIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiB7XG4gICAgICAgICAgICBtZDogXCJyb3dcIixcbiAgICAgICAgICAgIGxnOiBcInJvd1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiA0LFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxPcmRlcnNMaXN0RGVza3RvcE1vYmlsZVxuICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgZGV0YWlsc1JlcXVpcmVkPXshIWRldGFpbHNSZXF1aXJlZH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyc0xpc3QucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdGVkVGlja2V0IGZyb20gXCIuL1JlZnVuZFJlcXVlc3RlZFRpY2tldFwiO1xuaW1wb3J0IHsgZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5jb25zdCBSZWZ1bmREZXRhaWxzID0gKHsgdGlja2V0cywgY3VycmVuY3ksIG9wZW4sIG9uQ2xvc2VTbGlkZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHJlcXVlc3RlZFRpY2tldHMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHModGlja2V0cyksXG4gICAgW3RpY2tldHNdXG4gICk7XG4gIGNvbnN0IGNsb3NlU2xpZGVyID0gKCkgPT4ge1xuICAgIG9uQ2xvc2VTbGlkZXIoKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8UmlnaHREcmF3ZXJcbiAgICAgIGlkPVwicmVmdW5kLWRldGFpbHNcIlxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e2Nsb3NlU2xpZGVyfVxuICAgICAgdGl0bGU9e3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZF9kZXRhaWxzXCIpfVxuICAgID5cbiAgICAgIDxCb3hcbiAgICAgICAgc3g9e3sgZGlzcGxheTogXCJmbGV4XCIsIGZsZXhEaXJlY3Rpb246IFwiY29sdW1uXCIsIGFsaWduSXRlbXM6IFwiY2VudGVyXCIgfX1cbiAgICAgID5cbiAgICAgICAge3JlcXVlc3RlZFRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPFJlZnVuZFJlcXVlc3RlZFRpY2tldFxuICAgICAgICAgICAga2V5PXtgcmVmdW5kX3JlcV8ke3RpY2tldD8uaWR9YH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgY3VycmVuY3k9e2N1cnJlbmN5fVxuICAgICAgICAgICAgcmVmdW5kRGV0YWlsc1xuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgPC9SaWdodERyYXdlcj5cbiAgKTtcbn07XG5cblJlZnVuZERldGFpbHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZERldGFpbHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBJY29uQnV0dG9uLCBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHRvb2x0aXBDbGFzc2VzIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgSW5mb0ljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCBBdHRlbmRlZVN0YXR1cyBmcm9tIFwiLi4vT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1c1wiO1xuaW1wb3J0IFJlZnVuZFN0YXR1cyBmcm9tIFwiLi9SZWZ1bmRTdGF0dXNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBmb3JtYXRDdXJyZW5jeSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuXG5jb25zdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgPSAoeyB0aWNrZXQsIGN1cnJlbmN5LCByZWZ1bmREZXRhaWxzIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IEdSSURfOCA9IDg7XG4gIGNvbnN0IEdSSURfMTIgPSAxMjtcblxuICBjb25zdCBQQURESU5HXzIgPSAyO1xuXG4gIGNvbnN0IGFwcHJvdmVkUmVmdW5kcyA9IHRpY2tldC5yZWZ1bmRfcmVxdWVzdHMuZmlsdGVyKFxuICAgIChyZWZ1bmQpID0+IHJlZnVuZC5zdGF0dXMgPT09IFwiQXBwcm92ZWRcIlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkgPSB7fTtcblxuICBhcHByb3ZlZFJlZnVuZHMuZm9yRWFjaCgocmVmdW5kKSA9PiB7XG4gICAgcmVmdW5kLnJlZnVuZGVkX3RheGVzLmZvckVhY2goKHJ0KSA9PiB7XG4gICAgICBjb25zdCB0YXhJZCA9IHJ0LnRheC5pZDtcbiAgICAgIGlmICghcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0pIHtcbiAgICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0gPSB7XG4gICAgICAgICAgbmFtZTogcnQudGF4Lm5hbWUsXG4gICAgICAgICAgdG90YWxSZWZ1bmRlZFRheEFtb3VudDogMFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0udG90YWxSZWZ1bmRlZFRheEFtb3VudCArPVxuICAgICAgICBydC5yZWZ1bmRlZF9hbW91bnQ7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IEh0bWxUb29sdGlwID0gc3R5bGVkKCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSkgPT4gKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIDxUb29sdGlwIHsuLi5wcm9wc30gY2xhc3Nlcz17eyBwb3BwZXI6IGNsYXNzTmFtZSB9fSAvPlxuICApKSgoKSA9PiAoe1xuICAgIFtgJiAuJHt0b29sdGlwQ2xhc3Nlcy50b29sdGlwfWBdOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiI2Y1ZjVmOVwiLFxuICAgICAgY29sb3I6IFwicmdiYSgwLCAwLCAwLCAwLjg3KVwiLFxuICAgICAgbWF4V2lkdGg6IDIyMCxcbiAgICAgIGZvbnRTaXplOiBcIjFlbVwiLFxuICAgICAgYm9yZGVyOiBcIjFweCBzb2xpZCAjZGFkZGU5XCJcbiAgICB9XG4gIH0pKTtcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBjb250YWluZXJcbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnJlZnVuZFRpY2tldEJveENvbnRhaW5lcn0gJHtcbiAgICAgICAgcmVmdW5kRGV0YWlscyA/IHN0eWxlcy5yZWZ1bmREZXRhaWwgOiBcIlwiXG4gICAgICB9IGB9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0ZWQtdGlja2V0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEdyaWRcbiAgICAgICAgeHM9e3JlZnVuZERldGFpbHMgPyBHUklEXzggOiBHUklEXzEyfVxuICAgICAgICBpdGVtXG4gICAgICAgIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgcHQ9ezJ9XG4gICAgICAgIHB4PXs0fVxuICAgICAgPlxuICAgICAgICA8U3RhY2tcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIlxuICAgICAgICAgIH19XG4gICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxoND57dGlja2V0LnRpY2tldF90eXBlPy5uYW1lfTwvaDQ+XG4gICAgICAgICAgPEdyaWQgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlV3JhcHBlcn0geHM9ezR9IGl0ZW0+XG4gICAgICAgICAgICB7dGlja2V0LmJhZGdlPy5mZWF0dXJlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmV9XG4gICAgICAgICAgICAgICAgc3JjPXtiZi5pbWFnZX1cbiAgICAgICAgICAgICAgICBhbHQ9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAga2V5PXtiZi5uYW1lfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L1N0YWNrPlxuICAgICAgPC9HcmlkPlxuICAgICAge3JlZnVuZERldGFpbHMgJiYgKFxuICAgICAgICA8R3JpZCB4cz17NH0gcGFkZGluZz17Mn0gaXRlbT5cbiAgICAgICAgICA8UmVmdW5kU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPEdyaWQgeHM9ezEyfSBpdGVtIHB4PXs0fSBwYj17cmVmdW5kRGV0YWlscyA/IFBBRERJTkdfMiA6IDB9IGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFRpY2tldEF0dGVuZGVlfT5cbiAgICAgICAgICA8QXR0ZW5kZWVTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06IDxDb3B5VGV4dCB0ZXh0PXt0aWNrZXQubnVtYmVyfSAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICB7cmVmdW5kRGV0YWlscyAmJiB0aWNrZXQudG90YWxfcmVmdW5kZWRfYW1vdW50ID4gMCAmJiAoXG4gICAgICAgICAgPEdyaWQgeHM9ezR9IHBsPXs0fT5cbiAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeSh0aWNrZXQudG90YWxfcmVmdW5kZWRfYW1vdW50LCB7IGN1cnJlbmN5IH0pfXtcIiBcIn1cbiAgICAgICAgICAgIFJlZnVuZGVkXG4gICAgICAgICAgICB7YXBwcm92ZWRSZWZ1bmRzLnNvbWUoKHIpID0+IHIucmVmdW5kZWRfdGF4ZXMubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICAgICAgICA8SHRtbFRvb2x0aXBcbiAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0LnJlZnVuZGVkX2Ftb3VudCwgeyBjdXJyZW5jeSB9KX17XCIgXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgVGlja2V0IEFtb3VudFxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxiPlRheGVzPC9iPlxuICAgICAgICAgICAgICAgICAgICB7T2JqZWN0LmtleXMocmVmdW5kZWRUYXhlc1N1bW1hdG9yeSkubWFwKCh0YXhJZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdG90YWxSZWZ1bmRlZFRheEFtb3VudCwgbmFtZSB9ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnlbdGF4SWRdO1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBrZXk9e3RheElkfT57YCR7bmFtZX0gLSAke2Zvcm1hdEN1cnJlbmN5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbFJlZnVuZGVkVGF4QW1vdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7IGN1cnJlbmN5IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICl9YH08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxJbmZvSWNvbiAvPlxuICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9IdG1sVG9vbHRpcD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgIHttb21lbnQoXG4gICAgICAgICAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHNbMF0uYWN0aW9uX2RhdGUgKiBNSUxMSVNFQ19UT19TRUNcbiAgICAgICAgICAgICkuZm9ybWF0KFwiTU1NIERELCBZWVlZXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKX1cbiAgICAgIDwvR3JpZD5cbiAgICAgIHshcmVmdW5kRGV0YWlscyAmJiAoXG4gICAgICAgIDxHcmlkIHhzPXsxMn0gcHI9ezR9IHBiPXsyfT5cbiAgICAgICAgICA8R3JpZCB4cz17MTJ9IGl0ZW0+XG4gICAgICAgICAgICA8VGlja2V0U3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICA8L0dyaWQ+XG4gICk7XG59O1xuXG5SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHJlZnVuZERldGFpbHM6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ2hpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZnVuZFN0YXR1cyA9ICh7IHRpY2tldCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgc3RhdHVzQ29sb3IgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yKHRpY2tldCksXG4gICAgW3RpY2tldF1cbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8Q2hpcFxuICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCByZWZ1bmQgc3RhdHVzIGxhYmVsXCJcbiAgICAgIGxhYmVsPXt0KGB0aWNrZXRfc3RhdHVzLnJlZnVuZF9yZXF1ZXN0XyR7c3RhdHVzQ29sb3J9YCl9XG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlc1tzdGF0dXNDb2xvcl19YH1cbiAgICAvPlxuICApO1xufTtcblxuUmVmdW5kU3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgU3R5bGVkRW5naW5lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENoZWNrQ2lyY2xlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgeyByZWZ1bmRCdWxrVGlja2V0cywgdXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBTVEVQX09ORSwgU1RFUF9USFJFRSwgU1RFUF9UV08gfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgT3JkZXJMaXN0VGlja2V0cyBmcm9tIFwiLi4vT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzXCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdGVkVGlja2V0IGZyb20gXCIuL1JlZnVuZFJlcXVlc3RlZFRpY2tldFwiO1xuXG5jb25zdCBSZWZ1bmRSZXF1ZXN0c01vZGFsID0gKHtcbiAgdGlja2V0cyxcbiAgc3VtbWl0LFxuICBvcGVuLFxuICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSxcbiAgb25DbG9zZVNsaWRlcixcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZCxcbiAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc3RlcCwgc2V0U3RlcF0gPSB1c2VTdGF0ZShTVEVQX09ORSk7XG4gIGNvbnN0IFtlcnJvck1zZywgc2V0RXJyb3JNc2ddID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtyZWZ1bmRTdWNjZXNzLCBzZXRSZWZ1bmRTdWNjZXNzXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBjbG9zZVNsaWRlciA9ICgpID0+IHtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgICBvbkNsb3NlU2xpZGVyKCk7XG4gICAgc2V0U3RlcChTVEVQX09ORSk7XG4gICAgaWYgKHJlZnVuZFN1Y2Nlc3MpIHtcbiAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlKCk7IC8vIGlmIHRoZSByZWZ1bmQgaXMgYSBzdWNjZXNzLCB0cmlnZ2VyIGFuZCByZS1yZXRyaWV2ZSB0aWNrZXRzIGJ5IG9yZGVyXG4gICAgICBzZXRSZWZ1bmRTdWNjZXNzKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY29uZmlybVJlZnVuZCA9ICgpID0+IHtcbiAgICBzZXRTdGVwKFNURVBfVFdPKTtcbiAgfTtcblxuICBjb25zdCBnb0JhY2tUb1JlZnVuZCA9ICgpID0+IHtcbiAgICBzZXRTdGVwKFNURVBfT05FKTtcbiAgfTtcblxuICBjb25zdCByZWZ1bmRUaWNrZXRzID0gYXN5bmMgKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlZnVuZEJ1bGtUaWNrZXRzKHsgdGlja2V0czogdGlja2V0c1RvUmVmdW5kIH0pKS50aGVuKChyZXMpID0+IHtcbiAgICAgIGRpc3BhdGNoKHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQocmVzKSk7IC8vIHJldHVybmluZyB3aGljaCB0aWNrZXRzIHdlcmUgc3VjY2Vzc2Z1bFxuICAgICAgaWYgKHJlcz8ubGVuZ3RoID09PSB0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoKSB7XG4gICAgICAgIHNldFN0ZXAoU1RFUF9USFJFRSk7IC8vIHN1Y2Nlc3MsIGFsbCByZWZ1bmRzIHdlcmUgcmVxdWVzdGVkXG4gICAgICAgIHNldFJlZnVuZFN1Y2Nlc3ModHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRFcnJvck1zZyh0KFwiZXJyb3JzLnJlZnVuZF91bnN1Y2Nlc3NmdWxcIikpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHNldEVycm9yTXNnKFwiXCIpO1xuICB9O1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBPbmUgPSAoKSA9PiAoXG4gICAgPD5cbiAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgIHt0KFwiY29uZmlybV9wb3B1cC5xdWVzdGlvbl90ZXh0X3NlbGVjdF9yZWZ1bmRcIil9XG4gICAgICA8L2gyPlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0fT5cbiAgICAgICAge3RpY2tldHMubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgICAga2V5PXtgdGlja2V0LSR7dGlja2V0LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXtcbiAgICAgICAgICAgICAgISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgICAgICBpc1JlZnVuZGluZ1xuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFjdGlvbkJ1dHRvbnN9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jYW5jZWwtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Y2xvc2VTbGlkZXJ9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY2FuY2VsXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY29udGludWUtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtjb25maXJtUmVmdW5kfVxuICAgICAgICAgIGRpc2FibGVkPXt0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoID09PSAwfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNvbnRpbnVlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvPlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBUd28gPSAoKSA9PiAoXG4gICAgPEJveCBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LXN1Y2Nlc3NmdWxcIj5cbiAgICAgIDxoMyBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgIHt0KFwiY29uZmlybV9wb3B1cC5xdWVzdGlvbl90ZXh0X2NvbmZpcm1fcmVmdW5kXCIpfVxuICAgICAgPC9oMz5cbiAgICAgIHtlcnJvck1zZyAmJiAoXG4gICAgICAgIDxFcnJvckxhYmVsXG4gICAgICAgICAgY2xhc3NOYW1lcz17c3R5bGVzLnJlZnVuZEVycm9yTXNnfVxuICAgICAgICAgIGNvbG9yPVwiI0ZGMDAwMFwiXG4gICAgICAgICAgZGF0YVRlc3RJZD1cImZhaWxlZC1yZWZ1bmQtbWVzc2FnZVwiXG4gICAgICAgICAgbWVzc2FnZT17ZXJyb3JNc2d9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0fT5cbiAgICAgICAge3RpY2tldHNUb1JlZnVuZC5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcbiAgICAgICAgICAgIGtleT17YHJlZnVuZF9yZXFfJHt0aWNrZXQ/LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5DVEFCdXR0b25XcmFwcGVyfT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtcmV0dXJuLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2dvQmFja1RvUmVmdW5kfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmJhY2tcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jb250aW51ZS1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e3JlZnVuZFRpY2tldHN9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29udGludWVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG5cbiAgY29uc3QgcmVmdW5kU3RlcFRocmVlID0gKCkgPT4gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFN1Y2Nlc3NmdWx9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LXN1Y2Nlc3NmdWxcIlxuICAgID5cbiAgICAgIDxDaGVja0NpcmNsZUljb24gc3g9e3sgY29sb3I6IFwiIzRjYWY1MFwiIH19IC8+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMVwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnN1Y2Nlc3NNc2cyfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMlwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1maW5pc2gtYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgID5cbiAgICAgICAge3QoXCJnZW5lcmFsLmZpbmlzaFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvQm94PlxuICApO1xuXG4gIGNvbnN0IHJlbmRlclN0ZXBzID0gKCkgPT4ge1xuICAgIHN3aXRjaCAoc3RlcCkge1xuICAgICAgY2FzZSBTVEVQX09ORTpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICAgIGNhc2UgU1RFUF9UV086XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwVHdvKCk7XG4gICAgICBjYXNlIFNURVBfVEhSRUU6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwVGhyZWUoKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwT25lKCk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gKFxuICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgIDxSaWdodERyYXdlclxuICAgICAgICBpZD1cInJlZnVuZC1yZXF1ZXN0c1wiXG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uQ2xvc2U9e2Nsb3NlU2xpZGVyfVxuICAgICAgICB0aXRsZT17dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3QtbW9kYWxcIlxuICAgICAgPlxuICAgICAgICB7cmVuZGVyU3RlcHMoKX1cbiAgICAgIDwvUmlnaHREcmF3ZXI+XG4gICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgKTtcbn07XG5cblJlZnVuZFJlcXVlc3RzTW9kYWwucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvbkNsb3NlU2xpZGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kUmVxdWVzdHNNb2RhbDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSwgRHJhd2VyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IENsb3NlIGFzIENsb3NlSWNvbiB9IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJpZ2h0RHJhd2VyID0gKHsgaWQsIHRpdGxlLCBjaGlsZHJlbiwgb3Blbiwgb25DbG9zZSwgY2xhc3NOYW1lIH0pID0+IChcbiAgPERyYXdlclxuICAgIGlkPXtpZH1cbiAgICBvcGVuPXtvcGVufVxuICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgYW5jaG9yPVwicmlnaHRcIlxuICAgIE1vZGFsUHJvcHM9e3sga2VlcE1vdW50ZWQ6IGZhbHNlIH19XG4gICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMud3JhcHBlcn0gJHtjbGFzc05hbWV9YH1cbiAgPlxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiY2xvc2UtZHJhd2VyXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xvc2VCdG59XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgIHN4PXt7IGZsb2F0OiBcInJpZ2h0XCIgfX1cbiAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICA+XG4gICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgIHt0aXRsZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRHJhd2VyPlxuKTtcblxuUmlnaHREcmF3ZXIucHJvcFR5cGVzID0ge1xuICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aXRsZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm5vZGVdKSxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmlnaHREcmF3ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBzaGFsbG93RXF1YWwsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5pbXBvcnQgeyBnZXRTdW1taXRGb3JtYXR0ZWREYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N1bW1pdFV0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFN1bW1pdEhlYWRlciA9ICgpID0+IHtcbiAgY29uc3QgeyBzdW1taXQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sXG4gICAgc2hhbGxvd0VxdWFsXG4gICk7XG4gIHJldHVybiAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMud2lkZ2V0SGVhZGVyfVxuICAgICAgc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX1cbiAgICAgIGRhdGEtdGVzdGlkPVwibXktb3JkZXJzLXRpY2tldC1oZWFkZXJcIlxuICAgID5cbiAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PntzdW1taXQ/Lm5hbWV9PC9oMj5cbiAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PlxuICAgICAgICB7Z2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZShzdW1taXQpfVxuICAgICAgPC9oMj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFN1bW1pdEhlYWRlcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuXG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuXG5jb25zdCBEZWxlZ2F0ZUZvcm0gPSAoeyBvblN1Ym1pdCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHtcbiAgICAgIGRlbGVnYXRlX2ZpcnN0X25hbWU6IFwiXCIsXG4gICAgICBkZWxlZ2F0ZV9sYXN0X25hbWU6IFwiXCIsXG4gICAgICBkZWxlZ2F0ZV9lbWFpbDogXCJcIlxuICAgIH0sXG4gICAgdmFsaWRhdGlvblNjaGVtYTogeXVwLm9iamVjdCh7XG4gICAgICBkZWxlZ2F0ZV9maXJzdF9uYW1lOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUucmVxdWlyZWRcIikpLFxuICAgICAgZGVsZWdhdGVfbGFzdF9uYW1lOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5sYXN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgICAucmVxdWlyZWQodChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnJlcXVpcmVkXCIpKSxcbiAgICAgIGRlbGVnYXRlX2VtYWlsOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAgIC5lbWFpbCh0KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgfSksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMsIHsgcmVzZXRGb3JtIH0pID0+IHtcbiAgICAgIG9uU3VibWl0KHZhbHVlcyk7XG4gICAgICByZXNldEZvcm0oKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICgpID0+IHtcbiAgICBmb3JtaWsucmVzZXRGb3JtKCk7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0udGl0bGVcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uYm9keVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cImRlbGVnYXRlX2ZpcnN0X25hbWVcIlxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uZmlyc3RfbmFtZVwiKX1cbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZV9maXJzdF9uYW1lfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfZmlyc3RfbmFtZSAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2ZpcnN0X25hbWUpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfZmlyc3RfbmFtZSAmJlxuICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9maXJzdF9uYW1lXG4gICAgICAgICAgfVxuICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgIC8+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwiZGVsZWdhdGVfbGFzdF9uYW1lXCJcbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmxhc3RfbmFtZVwiKX1cbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZV9sYXN0X25hbWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9sYXN0X25hbWUgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9sYXN0X25hbWUpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfbGFzdF9uYW1lICYmXG4gICAgICAgICAgICBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2xhc3RfbmFtZVxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJkZWxlZ2F0ZV9lbWFpbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uZW1haWxcIil9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZV9lbWFpbH1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2VtYWlsICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZW1haWwpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfZW1haWwgJiYgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9lbWFpbFxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uc2F2ZVwiKX1cbiAgICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5jYW5jZWxcIil9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2FuY2VsfVxuICAgICAgICAgIGRpc2FibGVkPXtmb3JtaWsuaXNTdWJtaXR0aW5nfVxuICAgICAgICAvPlxuICAgICAgPC9mb3JtPlxuICAgIDwvPlxuICApO1xufTtcblxuRGVsZWdhdGVGb3JtLnByb3BUeXBlcyA9IHtcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERlbGVnYXRlRm9ybTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uLy4uLy4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEFzc2lnbkhlYWRlciA9ICh7IGluUHJvZ3Jlc3MsIHRpY2tldCwgdXNlckVtYWlsIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBhc3NpZ25lZFRvWW91ID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJFbWFpbDtcblxuICBjb25zdCBnZXRTZWNvbmRhcnlUaXRsZSA9ICgpID0+IHtcbiAgICBpZiAoaW5Qcm9ncmVzcyA9PT0gXCJtYW5hZ2VcIikge1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uZGVsZWdhdGVkXCIpfSAke1xuICAgICAgICB0aWNrZXQub3duZXIuZmlyc3RfbmFtZVxuICAgICAgfSAke3RpY2tldC5vd25lci5sYXN0X25hbWV9LmA7XG4gICAgfVxuXG4gICAgaWYgKGluUHJvZ3Jlc3MpIHtcbiAgICAgIGNvbnN0IHVzZXIgPSBhc3NpZ25lZFRvWW91ID8gXCJ5b3VcIiA6IHRpY2tldD8ub3duZXI/LmVtYWlsO1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uYXNzaWduZWRfdG9cIil9ICR7dXNlcn1gO1xuICAgIH1cblxuICAgIHJldHVybiB0aWNrZXQudGlja2V0X3R5cGUubmFtZTtcbiAgfTtcblxuICBjb25zdCBnZXRIZWFkZXJOb3RlID0gKCkgPT4ge1xuICAgIGlmIChpblByb2dyZXNzKSB7XG4gICAgICBpZiAoYXNzaWduZWRUb1lvdSkge1xuICAgICAgICByZXR1cm4gdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5hbnN3ZXJfeW91cl9lcVwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uYW5zd2VyX290aGVyc19lcVwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gXCJcIjtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnB1cmNoYXNlZEJ5V3JhcHBlcn0+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5wdXJjaGFzZWRCeX0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24ucHVyY2hhc2VkX2J5XCIpfXtcIiBcIn1cbiAgICAgICAgICB7dGlja2V0Py5vcmRlcj8ub3duZXJfZW1haWx9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTm99PlxuICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgIHdpZHRoPXsyNTB9XG4gICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDVcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHtnZXRTZWNvbmRhcnlUaXRsZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlck5vdGV9XG4gICAgICAgIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgID5cbiAgICAgICAge2dldEhlYWRlck5vdGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbi8vIEFkZGluZyBwcm9wLXR5cGVzIGZvciB0eXBlLWNoZWNraW5nXG5Bc3NpZ25IZWFkZXIucHJvcFR5cGVzID0ge1xuICBpblByb2dyZXNzOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB1c2VyRW1haWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduSGVhZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVhc3NpZ25IZWFkZXIgPSAoeyBpblByb2dyZXNzLCBhbGxvd3NEZWxlZ2F0ZSwgdGlja2V0LCB1c2VyRW1haWwgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGFzc2lnbmVkVG9Zb3UgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlckVtYWlsO1xuXG4gIGNvbnN0IGdldFNlY29uZGFyeVRpdGxlID0gKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSBhc3NpZ25lZFRvWW91ID8gXCJ5b3VcIiA6IHRpY2tldD8ub3duZXI/LmVtYWlsO1xuXG4gICAgaWYgKGluUHJvZ3Jlc3MgPT09IFwibWFuYWdlXCIpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uZGVsZWdhdGVkXCIpfSAke1xuICAgICAgICB0aWNrZXQub3duZXIuZmlyc3RfbmFtZVxuICAgICAgfSAke3RpY2tldC5vd25lci5sYXN0X25hbWV9LmA7XG4gICAgfVxuXG4gICAgaWYgKCFpblByb2dyZXNzKSB7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmFzc2lnbmVkX3RvXCIpfSAke3VzZXJ9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLnJlYXNzaWduZWRfdG9cIil9ICR7dXNlcn1gO1xuICB9O1xuXG4gIGNvbnN0IGdldEhlYWRlck5vdGUgPSAoKSA9PiB7XG4gICAgaWYgKCFpblByb2dyZXNzKSB7XG4gICAgICByZXR1cm4gYWxsb3dzRGVsZWdhdGVcbiAgICAgICAgPyB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uY2hvb3NlX29wdGlvblwiKVxuICAgICAgICA6IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5jaG9vc2Vfb3B0aW9uX25vX2RlbGVnYXRlXCIpO1xuICAgIH1cbiAgICBpZiAoYXNzaWduZWRUb1lvdSkge1xuICAgICAgcmV0dXJuIHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5hbnN3ZXJfeW91cl9lcVwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5hbnN3ZXJfb3RoZXJzX2VxXCIpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNVwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge2dldFNlY29uZGFyeVRpdGxlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeVxuICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyTm90ZX1cbiAgICAgICAgc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fVxuICAgICAgPlxuICAgICAgICB7Z2V0SGVhZGVyTm90ZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuLy8gQWRkaW5nIHByb3AtdHlwZXMgZm9yIHR5cGUtY2hlY2tpbmdcblJlYXNzaWduSGVhZGVyLnByb3BUeXBlcyA9IHtcbiAgaW5Qcm9ncmVzczogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdXNlckVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYXNzaWduSGVhZGVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5cbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5cbmNvbnN0IFJlYXNzaWduRm9ybSA9ICh7IG9uU3VibWl0LCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczoge1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiBcIlwiLFxuICAgICAgcGVyc29uYWxfbWVzc2FnZTogXCJcIlxuICAgIH0sXG4gICAgdmFsaWRhdGlvblNjaGVtYTogeXVwLm9iamVjdCh7XG4gICAgICBuZXdfYXR0ZW5kZWVfZW1haWw6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgICAgLmVtYWlsKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnJlcXVpcmVkXCIpKSxcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IHl1cC5zdHJpbmcodChcInZhbGlkYXRpb24udGV4dC5zdHJpbmdcIikpXG4gICAgfSksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMsIHsgcmVzZXRGb3JtIH0pID0+IHtcbiAgICAgIG9uU3VibWl0KHZhbHVlcyk7XG4gICAgICByZXNldEZvcm0oKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICgpID0+IHtcbiAgICBmb3JtaWsucmVzZXRGb3JtKCk7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0udGl0bGVcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uYm9keVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cIm5ld19hdHRlbmRlZV9lbWFpbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0ubmV3X2F0dGVuZGVlX2VtYWlsXCIpfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMubmV3X2F0dGVuZGVlX2VtYWlsfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQubmV3X2F0dGVuZGVlX2VtYWlsICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMubmV3X2F0dGVuZGVlX2VtYWlsKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLm5ld19hdHRlbmRlZV9lbWFpbCAmJlxuICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5uZXdfYXR0ZW5kZWVfZW1haWxcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgLz5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJwZXJzb25hbF9tZXNzYWdlXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5wZXJzb25hbF9tZXNzYWdlXCIpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLnBlcnNvbmFsX21lc3NhZ2V9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBtdWx0aWxpbmVcbiAgICAgICAgICBtaW5Sb3dzPXs0fVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2UpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJiBmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2VcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLnNhdmVcIil9XG4gICAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgICAgLz5cbiAgICAgIDwvZm9ybT5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblJlYXNzaWduRm9ybS5wcm9wVHlwZXMgPSB7XG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWFzc2lnbkZvcm07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIENvbGxhcHNlLCBEaXZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIGFzc2lnbkF0dGVuZGVlLFxuICBkZWxlZ2F0ZVRpY2tldCxcbiAgcmVhc3NpZ25UaWNrZXQsXG4gIHNhdmVFeHRyYVF1ZXN0aW9uc1xufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFJlYXNzaWduRm9ybSBmcm9tIFwiLi9jb21wb25lbnRzL1JlYXNzaWduRm9ybVwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IEFzc2lnbkVRRm9ybSBmcm9tIFwiLi4vQXNzaWduRVFGb3JtXCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IEN1c3RvbURpYWxvZyBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nXCI7XG5pbXBvcnQgdXNlR2V0VGlja2V0IGZyb20gXCIuLi8uLi9ob29rcy91c2VHZXRUaWNrZXRcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBEZWxlZ2F0ZUZvcm0gZnJvbSBcIi4vY29tcG9uZW50cy9EZWxlZ2F0ZUZvcm1cIjtcbmltcG9ydCBBc3NpZ25IZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9IZWFkZXIvQXNzaWduSGVhZGVyXCI7XG5pbXBvcnQgUmVhc3NpZ25IZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9IZWFkZXIvUmVhc3NpZ25IZWFkZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuXG5jb25zdCBUaWNrZXRBc3NpZ24gPSAoeyB0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgb3Blbiwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc2F2ZU1lc3NhZ2UsIHNldFNhdmVNZXNzYWdlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbYXNzaWduT3B0aW9uLCBzZXRBc3NpZ25PcHRpb25dID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFthc3NpZ25hdGlvbkluUHJvZ3Jlc3MsIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzc10gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qge1xuICAgIHN1bW1pdCxcbiAgICB1c2VyOiB7IHVzZXJQcm9maWxlIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfSA9IHVzZUdldFRpY2tldChcbiAgICB0aWNrZXRJZCxcbiAgICBvcmRlcklkLFxuICAgIG93bmVySWQsXG4gICAgb3BlblxuICApO1xuICBjb25zdCBpc0Fzc2lnbmVkVG9NZSA9IHVzZXJQcm9maWxlPy5lbWFpbCA9PT0gdGlja2V0Py5vd25lcj8uZW1haWw7XG4gIGNvbnN0IHsgYWxsb3dzRGVsZWdhdGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBvbkFzc2lnbiA9IChlbWFpbCwgbWVzc2FnZSA9IFwiXCIpID0+IHtcbiAgICBpZiAob3duZXJJZCkge1xuICAgICAgZGlzcGF0Y2gocmVhc3NpZ25UaWNrZXQob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSkudGhlbigoKSA9PiB7XG4gICAgICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhgJHthc3NpZ25PcHRpb259YCk7XG4gICAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwYXRjaChhc3NpZ25BdHRlbmRlZShvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwpKS50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgICAgc2V0QXNzaWduT3B0aW9uKG51bGwpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9uRGVsZWdhdGUgPSAoZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpID0+IHtcbiAgICBkaXNwYXRjaChcbiAgICAgIGRlbGVnYXRlVGlja2V0KG9yZGVySWQsIHRpY2tldElkLCBmaXJzdE5hbWUsIGxhc3ROYW1lLCBlbWFpbClcbiAgICApLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvbkNsb3NlRVFGb3JtID0gKCkgPT4ge1xuICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhcIlwiKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZVNhdmVNZXNzYWdlID0gKCkgPT4ge1xuICAgIHNldFNhdmVNZXNzYWdlKG51bGwpO1xuICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhcIlwiKTtcbiAgICBzZXRUaW1lb3V0KG9uQ2xvc2UsIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgY29uc3Qgb25TYXZlRVEgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVFeHRyYVF1ZXN0aW9ucyh0aWNrZXQsIGFuc3dlcnMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19zdWNjZXNzXCIpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0KFwidGlja2V0X2Fzc2lnbi5zYXZpbmdfc3VjY2Vzc19kZXNjcmlwdGlvblwiKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9hc3NpZ24uc2F2aW5nX2Vycm9yXCIpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBlcnIudG9TdHJpbmcoKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9KTtcbiAgfTtcblxuICBjb25zdCB0aXRsZSA9IG93bmVySWRcbiAgICA/IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi50aXRsZVwiKVxuICAgIDogdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi50aXRsZVwiKTtcbiAgY29uc3QgSGVhZGVyID0gb3duZXJJZCA/IFJlYXNzaWduSGVhZGVyIDogQXNzaWduSGVhZGVyO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxSaWdodERyYXdlclxuICAgICAgICBpZD1cInJlYXNzaWduRHJhd2VyXCJcbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgPlxuICAgICAgICB7dGlja2V0ICYmIGV4dHJhUXVlc3Rpb25zICYmIChcbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFJlYXNzaWduQ29udGFpbmVyfT5cbiAgICAgICAgICAgIDxIZWFkZXJcbiAgICAgICAgICAgICAgaW5Qcm9ncmVzcz17YXNzaWduYXRpb25JblByb2dyZXNzfVxuICAgICAgICAgICAgICBhbGxvd3NEZWxlZ2F0ZT17YWxsb3dzRGVsZWdhdGV9XG4gICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICB1c2VyRW1haWw9e3VzZXJQcm9maWxlLmVtYWlsfVxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAge2Fzc2lnbmF0aW9uSW5Qcm9ncmVzcyA/IChcbiAgICAgICAgICAgICAgPEFzc2lnbkVRRm9ybVxuICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlRVF9XG4gICAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduT3B0aW9uc1dyYXBwZXJ9PlxuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNBc3NpZ25lZFRvTWV9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbkFzc2lnbih1c2VyUHJvZmlsZS5lbWFpbCwgXCJcIil9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmFzc2lnbl90b19tZVwiKX1cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8RGl2aWRlciB2YXJpYW50PVwibWlkZGxlXCIgc3g9e3sgbXk6IDMsIHB4OiA0IH19PlxuICAgICAgICAgICAgICAgICAgb3JcbiAgICAgICAgICAgICAgICA8L0RpdmlkZXI+XG4gICAgICAgICAgICAgICAgPEJveD5cbiAgICAgICAgICAgICAgICAgIDxDb2xsYXBzZSBpbj17YXNzaWduT3B0aW9uID09PSBcIm90aGVyXCJ9IHRpbWVvdXQ9ezUwMH0+XG4gICAgICAgICAgICAgICAgICAgIDxSZWFzc2lnbkZvcm1cbiAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdD17KHZhbCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQXNzaWduKHZhbC5uZXdfYXR0ZW5kZWVfZW1haWwsIHZhbC5wZXJzb25hbF9tZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24obnVsbCl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L0NvbGxhcHNlPlxuICAgICAgICAgICAgICAgICAge2Fzc2lnbk9wdGlvbiAhPT0gXCJvdGhlclwiICYmIChcbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24oXCJvdGhlclwiKX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5hc3NpZ25fdG9fb3RoZXJcIil9XG4gICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICB7YWxsb3dzRGVsZWdhdGUgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPERpdmlkZXIgdmFyaWFudD1cIm1pZGRsZVwiIHN4PXt7IG15OiAzLCBweDogNCB9fT5cbiAgICAgICAgICAgICAgICAgICAgICBvclxuICAgICAgICAgICAgICAgICAgICA8L0RpdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxDb2xsYXBzZSBpbj17YXNzaWduT3B0aW9uID09PSBcIm1hbmFnZVwifSB0aW1lb3V0PXs1MDB9PlxuICAgICAgICAgICAgICAgICAgICAgIDxEZWxlZ2F0ZUZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdD17KHZhbCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZWxlZ2F0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfZmlyc3RfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfbGFzdF9uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5kZWxlZ2F0ZV9lbWFpbFxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24obnVsbCl9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9Db2xsYXBzZT5cbiAgICAgICAgICAgICAgICAgICAge2Fzc2lnbk9wdGlvbiAhPT0gXCJtYW5hZ2VcIiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFzc2lnbk9wdGlvbihcIm1hbmFnZVwiKX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ubWFuYWdlX3RpY2tldFwiKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgKX1cbiAgICAgIDwvUmlnaHREcmF3ZXI+XG4gICAgICA8Q3VzdG9tRGlhbG9nXG4gICAgICAgIG9wZW49eyEhc2F2ZU1lc3NhZ2V9XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VTYXZlTWVzc2FnZX1cbiAgICAgICAgdGl0bGU9e3NhdmVNZXNzYWdlPy50aXRsZX1cbiAgICAgICAgZGVzY3JpcHRpb249e3NhdmVNZXNzYWdlPy5kZXNjcmlwdGlvbn1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG5UaWNrZXRBc3NpZ24ucHJvcFR5cGVzID0ge1xuICB0aWNrZXRJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3JkZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3duZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRBc3NpZ247XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIEF1dG9jb21wbGV0ZSwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCBDb21wYW55RmllbGQgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBpc1JlcXVpcmVkIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW29wdGlvbnMsIHNldE9wdGlvbnNdID0gUmVhY3QudXNlU3RhdGUoW10pO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBzZXRGaWVsZFRvdWNoZWQsIHNldEZpZWxkVmFsdWUgfSA9IGZvcm1paztcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnk7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSA9PT0gXCJcIikge1xuICAgICAgc2V0T3B0aW9ucyh2YWx1ZSA/IFt2YWx1ZV0gOiBbXSk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzKHN1bW1pdElkLCBpbnB1dFZhbHVlLCAocmVzdWx0cykgPT4ge1xuICAgICAgbGV0IG5ld09wdGlvbnMgPSBbXTtcblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbdmFsdWVdO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICBuZXdPcHRpb25zID0gWy4uLm5ld09wdGlvbnMsIC4uLnJlc3VsdHNdO1xuICAgICAgfVxuXG4gICAgICBzZXRPcHRpb25zKG5ld09wdGlvbnMpO1xuICAgIH0pO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0sIFt2YWx1ZSwgaW5wdXRWYWx1ZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPEF1dG9jb21wbGV0ZVxuICAgICAgbmFtZT17bmFtZX1cbiAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICBhdXRvQ29tcGxldGVcbiAgICAgIGZyZWVTb2xvXG4gICAgICBpbmNsdWRlSW5wdXRJbkxpc3RcbiAgICAgIGZpbHRlclNlbGVjdGVkT3B0aW9uc1xuICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgb25CbHVyPXsoKSA9PiBzZXRGaWVsZFRvdWNoZWQobmFtZSwgdHJ1ZSwgdHJ1ZSl9XG4gICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4ge1xuICAgICAgICAvLyBWYWx1ZSBzZWxlY3RlZCB3aXRoIGVudGVyLCByaWdodCBmcm9tIHRoZSBpbnB1dFxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWRkIFwieHh4XCIgb3B0aW9uIGNyZWF0ZWQgZHluYW1pY2FsbHlcbiAgICAgICAgaWYgKG9wdGlvbi5pbnB1dFZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbi5pbnB1dFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlZ3VsYXIgb3B0aW9uXG4gICAgICAgIHJldHVybiBvcHRpb24ubmFtZTtcbiAgICAgIH19XG4gICAgICBvbkNoYW5nZT17KGV2ZW50LCBuZXdWYWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCB0bXBWYWx1ZSA9IG5ld1ZhbHVlPy5pbnB1dFZhbHVlIHx8IG5ld1ZhbHVlO1xuICAgICAgICBzZXRPcHRpb25zKHRtcFZhbHVlID8gW3RtcFZhbHVlLCAuLi5vcHRpb25zXSA6IG9wdGlvbnMpO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKG5hbWUsIHRtcFZhbHVlKTtcbiAgICAgIH19XG4gICAgICBvbklucHV0Q2hhbmdlPXsoZXZlbnQsIG5ld0lucHV0VmFsdWUpID0+IHtcbiAgICAgICAgc2V0SW5wdXRWYWx1ZShuZXdJbnB1dFZhbHVlKTtcbiAgICAgIH19XG4gICAgICBmaWx0ZXJPcHRpb25zPXsob3B0aW9ucywgcGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaW5wdXRWYWx1ZSB9ID0gcGFyYW1zO1xuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IFsuLi5vcHRpb25zXTtcbiAgICAgICAgLy8gU3VnZ2VzdCB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmFsdWVcbiAgICAgICAgY29uc3QgaXNFeGlzdGluZyA9IG9wdGlvbnMuc29tZShcbiAgICAgICAgICAob3B0aW9uKSA9PiBpbnB1dFZhbHVlID09PSBvcHRpb24udGl0bGVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGlucHV0VmFsdWUgIT09IFwiXCIgJiYgIWlzRXhpc3RpbmcpIHtcbiAgICAgICAgICBmaWx0ZXJlZC5wdXNoKHtcbiAgICAgICAgICAgIGlucHV0VmFsdWUsXG4gICAgICAgICAgICBuYW1lOiBgU2VsZWN0IFwiJHtpbnB1dFZhbHVlfVwiYFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgfX1cbiAgICAgIHJlbmRlcklucHV0PXsocGFyYW1zKSA9PiAoXG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5wYXJhbXN9XG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2NvbXBhbnlcIil9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgaGVscGVyVGV4dD17aGVscGVyVGV4dH1cbiAgICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICByZW5kZXJPcHRpb249eyhwcm9wcywgb3B0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHsga2V5LCAuLi5vcHRpb25Qcm9wcyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmdcbiAgICAgICAgICA8bGkga2V5PXtrZXl9IHsuLi5vcHRpb25Qcm9wc30+XG4gICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19PlxuICAgICAgICAgICAgICB7b3B0aW9uLm5hbWV9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn07XG5cbkNvbXBhbnlGaWVsZC5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzdW1taXRJZDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb21wYW55RmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgPSAoe1xuICBkaXNjbGFpbWVyLFxuICBmb3JtaWssXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgaXNSZXF1aXJlZCA9IHRydWVcbn0pID0+IHtcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZDtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57ZGlzY2xhaW1lcn08L1Jhd0hUTUw+fVxuICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e2Rpc2NsYWltZXJ9PC9SYXdIVE1MPn1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5SZWdpc3RyYXRpb25EaXNjbGFpbWVyLnByb3BUeXBlcyA9IHtcbiAgZGlzY2xhaW1lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzUmVxdWlyZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyBmcm9tIFwiLi4vLi4vLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHNcIjtcblxuaW1wb3J0IHtcbiAgZ2V0VHlwZVZhbHVlLFxuICB0b1NsdWdcbn0gZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcblxuaW1wb3J0IFRpY2tldE93bmVyRmllbGRzIGZyb20gXCIuLi9UaWNrZXRPd25lckZpZWxkc1wiO1xuaW1wb3J0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgZnJvbSBcIi4uL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lclwiO1xuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcbmltcG9ydCB1c2VTY3JvbGxUb0Vycm9yIGZyb20gXCIuLi8uLi8uLi8uLi9ob29rcy91c2VTY3JvbGxUb0Vycm9yXCI7XG5pbXBvcnQge1xuICBwYXJzZUFuc3dlcnMsXG4gIGJ1aWxkVmFsaWRhdGlvblNjaGVtYVxufSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuLi8uLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0Rm9ybSA9ICh7XG4gIHRpY2tldCxcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIHN1bW1pdCxcbiAgY2FuRWRpdCxcbiAgb25TdWJtaXQsXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBhbnN3ZXJzID0gdGlja2V0Py5vd25lcj8uZXh0cmFfcXVlc3Rpb25zLnJlZHVjZSgocmVzLCBhbnMpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcoYW5zLnF1ZXN0aW9uLm5hbWUsIGFucy5xdWVzdGlvbi5pZCk7XG4gICAgcmVzW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsdWUoYW5zLnZhbHVlLCBhbnMucXVlc3Rpb24udHlwZSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfSwge30pO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczogcGFyc2VBbnN3ZXJzKFxuICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICBhbnN3ZXJzLFxuICAgICAgdHJ1ZSxcbiAgICAgIHRydWVcbiAgICApLFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IGJ1aWxkVmFsaWRhdGlvblNjaGVtYShcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgdHJ1ZSxcbiAgICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnlcbiAgICApLFxuICAgIG9uU3VibWl0OiAodmFsdWVzKSA9PiB7XG4gICAgICBjb25zdCByZWxldmFudEFuc3dlcnMgPSBwYXJzZUFuc3dlcnMoXG4gICAgICAgIHRpY2tldC5vd25lcixcbiAgICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIG9uU3VibWl0KHJlbGV2YW50QW5zd2Vycyk7XG4gICAgfSxcbiAgICBlbmFibGVSZWluaXRpYWxpemU6IHRydWVcbiAgfSk7XG5cbiAgLy8gY29uc29sZS5sb2coXCJTVU1NSVQ6IFwiLCBzdW1taXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRJQ0tFVDogXCIsIHRpY2tldCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiUVVFU1RJVU9OczogXCIsIGV4dHJhUXVlc3Rpb25zKTtcbiAgLy8gY29uc29sZS5sb2coXCJBTlNXRVJTOiBcIiwgYW5zd2Vycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiRVJST1JzOiBcIiwgZm9ybWlrLmVycm9ycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVkFMVUVTOiBcIiwgZm9ybWlrLnZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiSU5JVElBTDogXCIsIGZvcm1pay5pbml0aWFsVmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJUT1VDSEVEOiBcIiwgZm9ybWlrLnRvdWNoZWQpO1xuXG4gIC8vIFNDUk9MTCBUTyBFUlJPUlxuICB1c2VTY3JvbGxUb0Vycm9yKGZvcm1paywgXCJkZXRhaWxzRHJhd2VyXCIpO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8VGlja2V0T3duZXJGaWVsZHNcbiAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgIGlzRGVsZWdhdGVkPXshIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZH1cbiAgICAgICAgc3VtbWl0SWQ9e3N1bW1pdC5pZH1cbiAgICAgICAgZGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgLz5cblxuICAgICAge2V4dHJhUXVlc3Rpb25zPy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBjbGFzc05hbWU9e3N0eWxlcy5hZGRpdGlvbmFsRGV0YWlsc30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYWRpdGlvbmFsX2RldGFpbHNcIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDxFeHRyYVF1ZXN0aW9uc0ZpZWxkc1xuICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgYWxsb3dFZGl0PXtjYW5FZGl0fVxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQgJiYgKFxuICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIGRpc2NsYWltZXI9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50fVxuICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgaXNEaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9kZXRhaWwuY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuVGlja2V0Rm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY2FuRWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRGb3JtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCBDb21wYW55RmllbGQgZnJvbSBcIi4uL0NvbXBhbnlGaWVsZFwiO1xuXG5jb25zdCBUaWNrZXRPd25lckZpZWxkcyA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGRpc2FibGVkLCBpc0RlbGVnYXRlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT17VElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWx9XG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5lbWFpbFwiKX1cbiAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgdmFsdWU9e3ZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF19XG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAvPlxuICAgICAge2lzRGVsZWdhdGVkICYmIChcbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgc3g9e3sgZm9udFdlaWdodDogNTAwLCBtYXJnaW46IFwiMTBweCAwXCIgfX0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLm1hbmFnZV9mb3JcIil9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICl9XG4gICAgICB7W1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZSwgVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdLm1hcChcbiAgICAgICAgKG5hbWUpID0+IChcbiAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgIGtleT17bmFtZX1cbiAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICBsYWJlbD17dChgdGlja2V0X2RldGFpbC4ke25hbWV9YCl9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWVzW25hbWVdfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkIHx8IGlzRGVsZWdhdGVkfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIGVycm9yPXt0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKX1cbiAgICAgICAgICAgIGhlbHBlclRleHQ9e2Zvcm1pay50b3VjaGVkW25hbWVdICYmIGZvcm1pay5lcnJvcnNbbmFtZV19XG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICApfVxuICAgICAgPENvbXBhbnlGaWVsZCBmb3JtaWs9e2Zvcm1pa30gc3VtbWl0SWQ9e3N1bW1pdElkfSBpc1JlcXVpcmVkIC8+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmluZm9Ob3RlfT57dChcInRpY2tldF9kZXRhaWwuaW5mb19ub3RlXCIpfTwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0T3duZXJGaWVsZHMucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0SWQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc0RlbGVnYXRlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldE93bmVyRmllbGRzO1xuIiwiZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCJcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFFSQ29kZSBmcm9tIFwicmVhY3QtcXItY29kZVwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIERyYXdlciwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBDbG9zZSBhcyBDbG9zZUljb24sXG4gIEZpbGVEb3dubG9hZE91dGxpbmVkIGFzIERvd25sb2FkSWNvbixcbiAgRW1haWxPdXRsaW5lZCBhcyBFbWFpbEljb25cbn0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0IHVzZUdldFRpY2tldCBmcm9tIFwiLi4vLi4vaG9va3MvdXNlR2V0VGlja2V0XCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IEN1c3RvbURpYWxvZyBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIFRXT19JVEVNIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRpY2tldEZvcm0gZnJvbSBcIi4vY29tcG9uZW50cy9UaWNrZXRGb3JtXCI7XG5pbXBvcnQge1xuICBnZXRUaWNrZXRQREYsXG4gIHNhdmVUaWNrZXREZXRhaWxzLFxuICByZXNlbmROb3RpZmljYXRpb25cbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXREZXRhaWwgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldElkLFxuICBvcmRlcklkLFxuICBvd25lcklkLFxuICBvcGVuLFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgeyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH0gPSB1c2VHZXRUaWNrZXQoXG4gICAgdGlja2V0SWQsXG4gICAgb3JkZXJJZCxcbiAgICBvd25lcklkLFxuICAgIG9wZW5cbiAgKTtcbiAgY29uc3QgW3NhdmVNZXNzYWdlLCBzZXRTYXZlTWVzc2FnZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW3NlbnRDb25maXJtYXRpb24sIHNldFNlbnRDb25maXJtYXRpb25dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBpc1VzZXJPcmRlck93bmVyID0gdGlja2V0Py5vcmRlcj8ub3duZXJfaWQgPT09IHVzZXJQcm9maWxlPy5pZDtcbiAgY29uc3QgaXNVc2VyVGlja2V0T3duZXIgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlclByb2ZpbGU/LmVtYWlsO1xuICBjb25zdCBjYW5FZGl0VGlja2V0RGF0YSA9XG4gICAgKGlzVXNlclRpY2tldE93bmVyIHx8IGlzVXNlck9yZGVyT3duZXIpICYmXG4gICAgc3VtbWl0LmFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnM7XG4gIGNvbnN0IHsgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIGNvbnN0IG9uU2F2ZSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZVRpY2tldERldGFpbHModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfc3VjY2Vzc1wiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdChcInRpY2tldF9kZXRhaWwuc2F2aW5nX3N1Y2Nlc3NfZGVzY3JpcHRpb25cIilcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19lcnJvclwiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZXJyLnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZVNhdmVNZXNzYWdlID0gKCkgPT4ge1xuICAgIHNldFNhdmVNZXNzYWdlKG51bGwpO1xuICAgIHNldFRpbWVvdXQob25DbG9zZSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICBjb25zdCBkb3dubG9hZFRpY2tldFBkZiA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChnZXRUaWNrZXRQREYodGlja2V0KSk7XG4gIH07XG5cbiAgY29uc3Qgb25TZW5kRW1haWwgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZW5kTm90aWZpY2F0aW9uKHRpY2tldCkpLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0U2VudENvbmZpcm1hdGlvbih0cnVlKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXRTZW50Q29uZmlybWF0aW9uKGZhbHNlKTtcbiAgICAgIH0sIE1JTExJU0VDX1RPX1NFQyAqIFRXT19JVEVNKTtcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8RHJhd2VyXG4gICAgICAgIGlkPVwiZGV0YWlsc0RyYXdlclwiXG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICAgICAgTW9kYWxQcm9wcz17eyBrZWVwTW91bnRlZDogZmFsc2UgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0RGV0YWlsQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICB7dGlja2V0ICYmIGV4dHJhUXVlc3Rpb25zICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgICAgICAgICAgc3g9e3sgZmxvYXQ6IFwicmlnaHRcIiB9fVxuICAgICAgICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNFwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgICAgICAgICAge3RpY2tldD8udGlja2V0X3R5cGU/Lm5hbWV9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTJcIlxuICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnB1cmNoYXNlZF9ieVwiKX0ge3RpY2tldD8ub3JkZXI/Lm93bmVyX2VtYWlsfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG5cbiAgICAgICAgICAgICAge2lzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnFyQ29kZX0+XG4gICAgICAgICAgICAgICAgICAgIDxRUkNvZGVcbiAgICAgICAgICAgICAgICAgICAgICBzaXplPXsyNTZ9XG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCJhdXRvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aWNrZXQucXJfY29kZX1cbiAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI1NiAyNTZcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9e3N0eWxlcy5zdGF0dXN9Pnt0KFwidGlja2V0X2RldGFpbC5zdGF0dXNcIil9PC9wPlxuICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkyXCJcbiAgICAgICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnFyTm90ZX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnFyX25vdGVcIil9XG4gICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgeyFzdW1taXQ/LmlzX3ZpcnR1YWwgJiYgaXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hY3Rpb25CdXR0b25zQ29udGFpbmVyfT5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZG93bmxvYWRCdG59XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtkb3dubG9hZFRpY2tldFBkZn1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPERvd25sb2FkSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmRvd25sb2FkXCIpfVxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnNlbmRCdG59ICR7XG4gICAgICAgICAgICAgICAgICAgICAgc2VudENvbmZpcm1hdGlvbiA/IHN0eWxlcy5zZW50IDogXCJcIlxuICAgICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17b25TZW5kRW1haWx9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtzZW50Q29uZmlybWF0aW9ufVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8RW1haWxJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICB7c2VudENvbmZpcm1hdGlvblxuICAgICAgICAgICAgICAgICAgICAgID8gdChcInRpY2tldF9kZXRhaWwuc2VudFwiKVxuICAgICAgICAgICAgICAgICAgICAgIDogdChcInRpY2tldF9kZXRhaWwuc2VuZFwiKX1cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJOdW1iZXJ9PlxuICAgICAgICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgICAgICAgIHdpZHRoPXsxNTB9XG4gICAgICAgICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvVGl0bGV9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfaW5mb3JtYXRpb25cIil9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAge3RpY2tldCAmJiAoXG4gICAgICAgICAgICAgICAgPFRpY2tldEZvcm1cbiAgICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICBjYW5FZGl0PXtjYW5FZGl0VGlja2V0RGF0YX1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmV9XG4gICAgICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvRHJhd2VyPlxuICAgICAgPEN1c3RvbURpYWxvZ1xuICAgICAgICBvcGVuPXshIXNhdmVNZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlU2F2ZU1lc3NhZ2V9XG4gICAgICAgIHRpdGxlPXtzYXZlTWVzc2FnZT8udGl0bGV9XG4gICAgICAgIGRlc2NyaXB0aW9uPXtzYXZlTWVzc2FnZT8uZGVzY3JpcHRpb259XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0RGV0YWlsLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3JkZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3duZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZXRhaWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBDb250YWluZXIsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRTdGF0dXMgPSAoeyB0aWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZTtcbiAgY29uc3QgcmVmdW5kUmVxdWVzdHMgPSB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5maW5kKFxuICAgIChyKSA9PiByLnN0YXR1cyA9PT0gXCJSZXF1ZXN0ZWRcIlxuICApO1xuICBjb25zdCB7IGlzSW5jb21wbGV0ZSwgaXNVbmFzc2lnbmVkLCBpc0NvbXBsZXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFN0YXR1c0NvbnRhaW5lcn0+XG4gICAgICB7aXNBY3RpdmUgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3JlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHJlZnVuZCByZXF1ZXN0ZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25SZWZ1bmRSZXF1ZXN0ZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19yZWZ1bmRfcmVxdWVzdGVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNJbmNvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGluY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25JbmNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfaW5jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzVW5hc3NpZ25lZCAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyB1bmFzc2lnbmVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uVW5hc3NpZ25lZH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNhbmNlbGxlZFwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ2FuY2VsbGVkfWB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NhbmNlbGxlZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufTtcblxuVGlja2V0U3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgcmVmdW5kUmVxdWVzdHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBEaXZpZGVyLFxuICBUYWJzLFxuICBUYWIsXG4gIHVzZVRoZW1lLFxuICB1c2VNZWRpYVF1ZXJ5XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBUQUJTIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IE15T3JkZXJzVGlja2V0cyBmcm9tIFwiLi4vTXlPcmRlcnNUaWNrZXRzXCI7XG5pbXBvcnQgQXNzaWduZWRUb01lIGZyb20gXCIuLi9PcmRlcnNMaXN0L0Fzc2lnbmVkVG9NZVwiO1xuXG5jb25zdCBXaWRnZXRUYWJzID0gKHsgdGl0bGUgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFt0YWIsIHNldFRhYl0gPSB1c2VTdGF0ZShUQUJTLk9SREVSUyk7XG5cbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBpc01vYmlsZSA9IHVzZU1lZGlhUXVlcnkodGhlbWUuYnJlYWtwb2ludHMuZG93bihcImxnXCIpKTtcblxuICBjb25zdCBoYW5kbGVUYWJDaGFuZ2UgPSAoXywgbmV3VGFiKSA9PiB7XG4gICAgc2V0VGFiKG5ld1RhYik7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRhYldyYXBwZXJ9PlxuICAgICAgPFRhYnNcbiAgICAgICAgdmFsdWU9e3RhYn1cbiAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRhYkNoYW5nZX1cbiAgICAgICAgdmFyaWFudD17aXNNb2JpbGUgPyBcImZ1bGxXaWR0aFwiIDogXCJzdGFuZGFyZFwifVxuICAgICAgPlxuICAgICAgICA8VGFiIGxhYmVsPXt0KFwib3JkZXJzLnRpdGxlXCIpfSB2YWx1ZT17VEFCUy5PUkRFUlN9IC8+XG4gICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMuYXNzaWduZWRfdG9fbWVcIil9IHZhbHVlPXtUQUJTLlRJQ0tFVFN9IC8+XG4gICAgICA8L1RhYnM+XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEJveCBzeD17eyBwdDogNiwgcGI6IDMgfX0+e3RpdGxlfTwvQm94PlxuICAgICAge3RhYiA9PT0gVEFCUy5PUkRFUlMgJiYgPE15T3JkZXJzVGlja2V0cyAvPn1cbiAgICAgIHt0YWIgPT09IFRBQlMuVElDS0VUUyAmJiA8QXNzaWduZWRUb01lIC8+fVxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgV2lkZ2V0VGFicztcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwsIGNvbm5lY3QgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICByZXNldEZpbHRlcixcbiAgcmVzZXRFcnJvcixcbiAgY2hhbmdlU29ydCxcbiAgY2hhbmdlRmlsdGVyXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgQ3VzdG9tVGhlbWUgZnJvbSBcIi4uL0N1c3RvbVRoZW1lXCI7XG5pbXBvcnQgTG9hZGVyIGZyb20gXCIuLi9Mb2FkZXJcIjtcbmltcG9ydCBDdXN0b21EaWFsb2dDb250ZXh0IGZyb20gXCIuLi9DdXN0b21EaWFsb2cvQ29udGV4dFwiO1xuaW1wb3J0IEN1c3RvbURpYWxvZyBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nXCI7XG5cbmltcG9ydCBGaWx0ZXJzIGZyb20gXCIuLi9GaWx0ZXJzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgV2lkZ2V0VGFicyBmcm9tIFwiLi4vV2lkZ2V0VGFic1wiO1xuaW1wb3J0IFN1bW1pdEhlYWRlciBmcm9tIFwiLi4vU3VtbWl0SGVhZGVyXCI7XG5cbmNvbnN0IFdpZGdldFdyYXBwZXIgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbbWVzc2FnZSwgc2V0TWVzc2FnZV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW21lc3NhZ2VDYWxsYmFjaywgc2V0TWVzc2FnZUNhbGxiYWNrXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCB7XG4gICAgbG9hZGluZyxcbiAgICBhcGlFcnJvcixcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVI6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IG9uUmVzZXQgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRGaWx0ZXIoKSk7XG4gIH07XG5cbiAgY29uc3QgcmVzZXRBcGlFcnJvciA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldEVycm9yKCkpO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFwaUVycm9yKSB7XG4gICAgICBzZXRNZXNzYWdlKGFwaUVycm9yKTtcbiAgICAgIHNldE1lc3NhZ2VDYWxsYmFjayhyZXNldEFwaUVycm9yKTtcbiAgICB9XG4gIH0sIFthcGlFcnJvcl0pO1xuXG4gIGNvbnN0IG9uRmlsdGVyID0gKGZpbHRlclZhbHVlKSA9PiB7XG4gICAgZGlzcGF0Y2goY2hhbmdlRmlsdGVyKGZpbHRlclZhbHVlKSk7XG4gIH07XG5cbiAgY29uc3Qgb25Tb3J0ID0gKHNvcnRWYWx1ZSkgPT4ge1xuICAgIGRpc3BhdGNoKGNoYW5nZVNvcnQoc29ydFZhbHVlKSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Q3VzdG9tVGhlbWU+XG4gICAgICA8TG9hZGVyIG9wZW49e2xvYWRpbmd9IC8+XG4gICAgICA8Q3VzdG9tRGlhbG9nXG4gICAgICAgIG9wZW49eyEhbWVzc2FnZX1cbiAgICAgICAgb25DbG9zZT17KCkgPT4ge1xuICAgICAgICAgIHNldE1lc3NhZ2UobnVsbCk7XG4gICAgICAgICAgaWYgKG1lc3NhZ2VDYWxsYmFjaykgbWVzc2FnZUNhbGxiYWNrKCk7XG4gICAgICAgIH19XG4gICAgICAgIGJvZHk9e21lc3NhZ2U/LmJvZHl9XG4gICAgICAgIHRpdGxlPXttZXNzYWdlPy50aXRsZX1cbiAgICAgIC8+XG4gICAgICA8RmlsdGVyc1xuICAgICAgICBvbkZpbHRlcj17b25GaWx0ZXJ9XG4gICAgICAgIG9uU29ydD17b25Tb3J0fVxuICAgICAgICBvblNlYXJjaD17b25GaWx0ZXJ9XG4gICAgICAgIG9uUmVzZXQ9e29uUmVzZXR9XG4gICAgICAvPlxuICAgICAgPEJveCBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMCwgbGc6IDAgfSB9fT5cbiAgICAgICAgPGgzIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldHNUaXRsZVRleHR9PlxuICAgICAgICAgIHtmaWx0ZXJWYWx1ZXNcbiAgICAgICAgICAgID8gdChcImxhYmVscy5zZWFyY2hfcmVzdWx0c1wiLCB7IGZpbHRlcjogZmlsdGVyVmFsdWVzIH0pXG4gICAgICAgICAgICA6IHQoXCJsYWJlbHMudGlja2V0c1wiKX1cbiAgICAgICAgPC9oMz5cbiAgICAgIDwvQm94PlxuICAgICAgPEN1c3RvbURpYWxvZ0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9eyhzZXRNZXNzYWdlLCBzZXRNZXNzYWdlQ2FsbGJhY2spfT5cbiAgICAgICAgPFdpZGdldFRhYnMgdGl0bGU9ezxTdW1taXRIZWFkZXIgLz59IC8+XG4gICAgICA8L0N1c3RvbURpYWxvZ0NvbnRleHQuUHJvdmlkZXI+XG4gICAgPC9DdXN0b21UaGVtZT5cbiAgKTtcbn07XG5cbmNvbnN0IG1hcFN0YXRlVG9Qcm9wcyA9ICh7IHdpZGdldFN0YXRlIH0pID0+ICh7XG4gIHNvcnQ6IHdpZGdldFN0YXRlLnNvcnQsXG4gIGZpbHRlcjogd2lkZ2V0U3RhdGUuZmlsdGVyXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgY29ubmVjdChtYXBTdGF0ZVRvUHJvcHMsIHt9KShXaWRnZXRXcmFwcGVyKTtcbiIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBnZXRFeHRyYVF1ZXN0aW9ucywgZ2V0VGlja2V0IH0gZnJvbSBcIi4uL2FjdGlvbnNcIjtcblxuY29uc3QgdXNlR2V0VGlja2V0ID0gKHRpY2tldElkLCBvcmRlcklkLCBvd25lcklkLCBydW4pID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJ1bikge1xuICAgICAgaWYgKHRpY2tldElkICYmIG9yZGVySWQpIHtcbiAgICAgICAgZGlzcGF0Y2goZ2V0VGlja2V0KHRpY2tldElkLCBvcmRlcklkKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvd25lcklkKSB7XG4gICAgICAgIGRpc3BhdGNoKGdldEV4dHJhUXVlc3Rpb25zKG93bmVySWQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFt0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgcnVuXSk7XG5cbiAgY29uc3QgeyBleHRyYVF1ZXN0aW9ucywgY3VycmVudFRpY2tldDogdGlja2V0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlXG4gICk7XG5cbiAgcmV0dXJuIHsgdGlja2V0LCBleHRyYVF1ZXN0aW9ucyB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdXNlR2V0VGlja2V0O1xuIiwiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5cbi8vIFNtb290aCBzY3JvbGxpbmcgZnVuY3Rpb24gdXNpbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lXG5mdW5jdGlvbiBzbW9vdGhTY3JvbGxUbyhjb250YWluZXIsIHRhcmdldFNjcm9sbFRvcCwgZHVyYXRpb24pIHtcbiAgY29uc3Qgc3RhcnRTY3JvbGxUb3AgPSBjb250YWluZXIuc2Nyb2xsVG9wO1xuICBjb25zdCBkaXN0YW5jZSA9IHRhcmdldFNjcm9sbFRvcCAtIHN0YXJ0U2Nyb2xsVG9wO1xuICBsZXQgc3RhcnRUaW1lID0gbnVsbDtcblxuICBmdW5jdGlvbiBhbmltYXRpb25TdGVwKHRpbWVzdGFtcCkge1xuICAgIGlmICghc3RhcnRUaW1lKSBzdGFydFRpbWUgPSB0aW1lc3RhbXA7XG4gICAgY29uc3QgZWxhcHNlZCA9IHRpbWVzdGFtcCAtIHN0YXJ0VGltZTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgY29uc3QgcHJvZ3Jlc3MgPSBNYXRoLm1pbihlbGFwc2VkIC8gZHVyYXRpb24sIDEpO1xuICAgIGNvbnN0IGVhc2VJbk91dFF1YWQgPVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICAgIHByb2dyZXNzIDwgMC41ID8gMiAqIHByb2dyZXNzICoqIDIgOiAxIC0gKC0yICogcHJvZ3Jlc3MgKyAyKSAqKiAyIC8gMjtcblxuICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSBzdGFydFNjcm9sbFRvcCArIGRpc3RhbmNlICogZWFzZUluT3V0UXVhZDtcblxuICAgIGlmIChlbGFwc2VkIDwgZHVyYXRpb24pIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRpb25TdGVwKTtcbiAgICB9XG4gIH1cblxuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uU3RlcCk7XG59XG5cbmNvbnN0IHVzZVNjcm9sbFRvRXJyb3IgPSAoZm9ybWlrLCBjb250YWluZXJJZCkgPT4ge1xuICBjb25zdCB7IGVycm9ycywgaXNWYWxpZCwgaXNTdWJtaXR0aW5nIH0gPSBmb3JtaWs7XG4gIGNvbnN0IGVycm9yQXJyYXkgPSBPYmplY3Qua2V5cyhlcnJvcnMpO1xuICBjb25zdCBlcnJvckNvdW50ID0gZXJyb3JBcnJheS5sZW5ndGg7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNWYWxpZCB8fCBlcnJvckNvdW50ID09PSAwKSByZXR1cm47XG5cbiAgICAvLyBzb3J0IGVsZW1lbnRzIGJ5IHBvc2l0aW9uXG4gICAgY29uc3QgZWxlbWVudHNTb3J0ZWQgPSBlcnJvckFycmF5XG4gICAgICAucmVkdWNlKChyZXN1bHQsIGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBpbnB1dFtuYW1lPScke2Vycm9yfSddYCk7XG4gICAgICAgIGlmICghZWxlbWVudCkgcmV0dXJuIHJlc3VsdDtcblxuICAgICAgICBjb25zdCBlbFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICByZXN1bHQucHVzaCh7IGVsZW1lbnQsIGVycm9yLCB0b3A6IGVsUmVjdC50b3AgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0sIFtdKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEudG9wIC0gYi50b3ApO1xuXG4gICAgaWYgKGVsZW1lbnRzU29ydGVkLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnRcbiAgICAgIC5nZXRFbGVtZW50QnlJZChjb250YWluZXJJZClcbiAgICAgIC5xdWVyeVNlbGVjdG9yKFwiLk11aURyYXdlci1wYXBlclwiKTtcbiAgICBjb25zdCB0YXJnZXQgPSBlbGVtZW50c1NvcnRlZFswXTtcblxuICAgIGlmIChjb250YWluZXI/LmNvbnRhaW5zKHRhcmdldC5lbGVtZW50KSkge1xuICAgICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBvZmZzZXQgb2YgdGhlIHRhcmdldCBlbGVtZW50IHJlbGF0aXZlIHRvIHRoZSBjb250YWluZXJcbiAgICAgIGNvbnN0IGVsZW1PZmZlc3QgPSAxMDA7XG4gICAgICBjb25zdCBhbmltYXRpb25EdXJhdGlvbiA9IDUwMDtcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9XG4gICAgICAgIHRhcmdldC50b3AgLSBjb250YWluZXJSZWN0LnRvcCArIGNvbnRhaW5lci5zY3JvbGxUb3AgLSBlbGVtT2ZmZXN0O1xuXG4gICAgICAvLyBTY3JvbGwgdGhlIGNvbnRhaW5lciB0byB0aGUgdGFyZ2V0IGVsZW1lbnQncyBwb3NpdGlvblxuICAgICAgc21vb3RoU2Nyb2xsVG8oY29udGFpbmVyLCBzY3JvbGxUb3AsIGFuaW1hdGlvbkR1cmF0aW9uKTsgLy8gNTAwbXMgZHVyYXRpb25cbiAgICB9XG4gIH0sIFtpc1N1Ym1pdHRpbmddKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVNjcm9sbFRvRXJyb3I7XG4iLCJpbXBvcnQgeyBpc1RpY2tldFJlZnVuZGFibGUgfSBmcm9tIFwiLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiQ29tcGxldGVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfSU5DT01QTEVURSA9IFwiSW5jb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19DQU5DRUxMRUQgPSBcIkNhbmNlbGxlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19VTkFTU0lHTkVEID0gXCJVbmFzc2lnbmVkXCI7XG5cbmV4cG9ydCBjb25zdCB1c2VUaWNrZXREZXRhaWxzID0gKHRpY2tldCkgPT4ge1xuICBjb25zdCBnZXRTdGF0dXMgPSAoKSA9PiB7XG4gICAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcbiAgICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG4gICAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuICAgIHJldHVybiB0aWNrZXQub3duZXIuc3RhdHVzO1xuICB9O1xuXG4gIGlmICghdGlja2V0KSByZXR1cm4ge307XG5cbiAgY29uc3Qgc3RhdHVzID0gZ2V0U3RhdHVzKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZSAmJiBzdGF0dXMgIT09IFNUQVRVU19DQU5DRUxMRUQ7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpO1xuICBjb25zdCBhbGxvd3NEZWxlZ2F0ZSA9XG4gICAgdGlja2V0Py50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX2RlbGVnYXRlIHx8XG4gICAgdGlja2V0Py5wcm9tb19jb2RlPy5hbGxvd3NfdG9fZGVsZWdhdGU7XG4gIGNvbnN0IGlzQ29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19DT01QTEVURTtcbiAgY29uc3QgaXNVbmFzc2lnbmVkID0gc3RhdHVzID09PSBTVEFUVVNfVU5BU1NJR05FRDtcbiAgY29uc3QgaXNJbmNvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfSU5DT01QTEVURTtcbiAgY29uc3QgY2FuUmVhc3NpZ24gPVxuICAgICFpc1VuYXNzaWduZWQgJiZcbiAgICB0aWNrZXQudGlja2V0X3R5cGU/LmFsbG93c190b19yZWFzc2lnbiAmJlxuICAgICghdGlja2V0LnByb21vX2NvZGUgfHwgdGlja2V0LnByb21vX2NvZGU/LmFsbG93c190b19yZWFzc2lnbik7XG5cbiAgcmV0dXJuIHtcbiAgICBzdGF0dXMsXG4gICAgaXNDb21wbGV0ZSxcbiAgICBpc1VuYXNzaWduZWQsXG4gICAgaXNJbmNvbXBsZXRlLFxuICAgIGlzQWN0aXZlLFxuICAgIGlzUmVmdW5kYWJsZSxcbiAgICBhbGxvd3NEZWxlZ2F0ZSxcbiAgICBjYW5SZWFzc2lnblxuICB9O1xufTtcbiIsImltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBpbml0UmVhY3RJMThuZXh0IH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBMYW5ndWFnZURldGVjdG9yIGZyb20gXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiO1xuaW1wb3J0IGVuIGZyb20gXCIuL2xvY2FsZXMvZW4uanNvblwiO1xuaW1wb3J0IGVzIGZyb20gXCIuL2xvY2FsZXMvZXMuanNvblwiO1xuXG4vLyBpbXBvcnQgQmFja2VuZCBmcm9tICdpMThuZXh0LWh0dHAtYmFja2VuZCc7XG4vLyBkb24ndCB3YW50IHRvIHVzZSB0aGlzP1xuLy8gaGF2ZSBhIGxvb2sgYXQgdGhlIFF1aWNrIHN0YXJ0IGd1aWRlXG4vLyBmb3IgcGFzc2luZyBpbiBsbmcgYW5kIHRyYW5zbGF0aW9ucyBvbiBpbml0XG5cbmkxOG5cbiAgLy8gbG9hZCB0cmFuc2xhdGlvbiB1c2luZyBodHRwIC0+IHNlZSAvcHVibGljL2xvY2FsZXMgKGkuZS4gaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvcmVhY3QtaTE4bmV4dC90cmVlL21hc3Rlci9leGFtcGxlL3JlYWN0L3B1YmxpYy9sb2NhbGVzKVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWh0dHAtYmFja2VuZFxuICAvLyB3YW50IHlvdXIgdHJhbnNsYXRpb25zIHRvIGJlIGxvYWRlZCBmcm9tIGEgcHJvZmVzc2lvbmFsIENETj8gPT4gaHR0cHM6Ly9naXRodWIuY29tL2xvY2l6ZS9yZWFjdC10dXRvcmlhbCNzdGVwLTItLS11c2UtdGhlLWxvY2l6ZS1jZG5cbiAgLy8gLnVzZShCYWNrZW5kKVxuICAvLyBkZXRlY3QgdXNlciBsYW5ndWFnZVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VEZXRlY3RvclxuICAudXNlKExhbmd1YWdlRGV0ZWN0b3IpXG4gIC8vIHBhc3MgdGhlIGkxOG4gaW5zdGFuY2UgdG8gcmVhY3QtaTE4bmV4dC5cbiAgLnVzZShpbml0UmVhY3RJMThuZXh0KVxuICAvLyBpbml0IGkxOG5leHRcbiAgLy8gZm9yIGFsbCBvcHRpb25zIHJlYWQ6IGh0dHBzOi8vd3d3LmkxOG5leHQuY29tL292ZXJ2aWV3L2NvbmZpZ3VyYXRpb24tb3B0aW9uc1xuICAuaW5pdCh7XG4gICAgZmFsbGJhY2tMbmc6IFwiZW5cIixcbiAgICBkZWJ1ZzogZmFsc2UsXG4gICAgcmVzb3VyY2VzOiB7XG4gICAgICBlbjogeyB0cmFuc2xhdGlvbjogZW4gfSxcbiAgICAgIGVzOiB7IHRyYW5zbGF0aW9uOiBlcyB9XG4gICAgfSxcbiAgICBpbnRlcnBvbGF0aW9uOiB7XG4gICAgICBlc2NhcGVWYWx1ZTogZmFsc2UgLy8gbm90IG5lZWRlZCBmb3IgcmVhY3QgYXMgaXQgZXNjYXBlcyBieSBkZWZhdWx0XG4gICAgfVxuICB9KTtcblxuZXhwb3J0IGRlZmF1bHQgaTE4bjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgeyBMT0dPVVRfVVNFUiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIFNUQVJUX0xPQURJTkcsXG4gIFNUT1BfTE9BRElORyxcbiAgUkVTRVRfTE9BRElOR1xufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBSRVNFVF9TVEFURSxcbiAgUkVTRVRfRklMVEVSLFxuICBTRVRfU1RBVEUsXG4gIFNFVF9VU0VSLFxuICBHRVRfVVNFUl9PUkRFUlMsXG4gIEdFVF9NWV9BU1NJR05FRF9USUNLRVRTLFxuICBHRVRfVElDS0VUU19CWV9PUkRFUixcbiAgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCxcbiAgUkVDRUlWRV9USUNLRVQsXG4gIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TLFxuICBVUERBVEVfVElDS0VULFxuICBBU1NJR05fVElDS0VULFxuICBSRVNFVF9BUElfRVJST1IsXG4gIFNFVF9BUElfRVJST1IsXG4gIFJFU0VUX1RJQ0tFVCxcbiAgQ0hBTkdFX0ZJTFRFUixcbiAgQ0hBTkdFX1NPUlQsXG4gIEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSxcbiAgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIsXG4gIEZJTFRFUl9WQVJfREFURSxcbiAgRklMVEVSX1ZBUl9USUNLRVRfVFlQRSxcbiAgRklMVEVSX1ZBUl9GUkVFX1BBSUQsXG4gIEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTLFxuICBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCxcbiAgRklMVEVSX1ZBUl9QUk9NT0NPREUsXG4gIERFTEVHQVRFX1RJQ0tFVFxufSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBGSVJTVF9QQUdFLCBUQUJTIH0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBoYXNMb2FkZWRBbGxEYXRhIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgREVGQVVMVF9GSUxURVJfU1RBVEUgPSB7XG4gIFtGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfREFURV06IG51bGxcbn07XG5cbmNvbnN0IERFRkFVTFRfU1RBVEUgPSB7XG4gIHN1bW1pdDogbnVsbCxcbiAgdXNlcjoge30sXG4gIHdpZGdldExvYWRpbmc6IGZhbHNlLFxuICBtZW1iZXJPcmRlcnM6IFtdLFxuICB1c2VyVGlja2V0czogW10sXG4gIGV4dHJhUXVlc3Rpb25zOiBbXSxcbiAgY3VycmVudFRpY2tldDogbnVsbCxcbiAgZXJyb3JzOiB7fSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGN1cnJlbnRfdGFiOiBUQUJTLk9SREVSUyxcbiAgc29ydDoge30sXG4gIGZpbHRlcjogREVGQVVMVF9GSUxURVJfU1RBVEUsXG4gIGlzT3JkZXJMb2FkaW5nOiBmYWxzZSxcbiAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMCxcbiAgb3JkZXJzX2xhc3RfcGFnZTogMCxcbiAgb3JkZXJzX3Blcl9wYWdlOiA1LFxuICBvcmRlcnNfdG90YWw6IDAsXG4gIHRpY2tldF9jdXJyZW50X3BhZ2U6IDAsXG4gIHRpY2tldF9sYXN0X3BhZ2U6IDAsXG4gIHRpY2tldF9wZXJfcGFnZTogNSxcbiAgdGlja2V0X3RvdGFsOiAwLFxuICB1c2VyX3RpY2tldHNfdG90YWw6IDAsXG4gIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2U6IDAsXG4gIHVzZXJfdGlja2V0c19sYXN0X3BhZ2U6IDAsXG4gIGFwaUVycm9yOiBudWxsXG59O1xuXG5jb25zdCBXaWRnZXRSZWR1Y2VyID0gKHN0YXRlID0gREVGQVVMVF9TVEFURSwgeyB0eXBlLCBwYXlsb2FkIH0gPSB7fSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIExPR09VVF9VU0VSOlxuICAgIGNhc2UgUkVTRVRfU1RBVEU6XG4gICAgICByZXR1cm4gREVGQVVMVF9TVEFURTtcbiAgICBjYXNlIFNUQVJUX0xPQURJTkc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbG9hZGluZzogdHJ1ZSB9O1xuICAgIGNhc2UgU1RPUF9MT0FESU5HOlxuICAgIGNhc2UgUkVTRVRfTE9BRElORzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBsb2FkaW5nOiBmYWxzZSB9O1xuICAgIGNhc2UgUkVTRVRfQVBJX0VSUk9SOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFwaUVycm9yOiBudWxsIH07XG4gICAgY2FzZSBSRVNFVF9GSUxURVI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZmlsdGVyOiBERUZBVUxUX0ZJTFRFUl9TVEFURSxcbiAgICAgICAgc29ydDoge30sXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IDEsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IDFcbiAgICAgIH07XG4gICAgY2FzZSBTRVRfU1RBVEU6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgLi4ucGF5bG9hZCB9O1xuICAgIGNhc2UgU0VUX0FQSV9FUlJPUjoge1xuICAgICAgY29uc3QgeyB0aXRsZSwgaHRtbDogYm9keSB9ID0gcGF5bG9hZDtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhcGlFcnJvcjogeyB0aXRsZSwgYm9keSB9IH07XG4gICAgfVxuICAgIGNhc2UgU0VUX1VTRVI6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgdXNlcjogcGF5bG9hZCB9O1xuICAgIGNhc2UgQ0hBTkdFX0ZJTFRFUjoge1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGZpbHRlcjogeyAuLi5zdGF0ZS5maWx0ZXIsIC4uLnBheWxvYWQgfSB9O1xuICAgIH1cbiAgICBjYXNlIENIQU5HRV9TT1JUOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgc29ydDogeyAuLi5wYXlsb2FkIH0gfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfVVNFUl9PUkRFUlM6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuXG4gICAgICBpZiAoaGFzTG9hZGVkQWxsRGF0YShjdXJyZW50X3BhZ2UsIG1lbWJlck9yZGVycywgdG90YWwpKSByZXR1cm4gc3RhdGU7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6XG4gICAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFID8gZGF0YSA6IFsuLi5tZW1iZXJPcmRlcnMsIC4uLmRhdGFdLFxuICAgICAgICBvcmRlcnNfdG90YWw6IHRvdGFsLFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IGxhc3RfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfTVlfQVNTSUdORURfVElDS0VUUzoge1xuICAgICAgY29uc3QgeyB1c2VyVGlja2V0cyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcblxuICAgICAgaWYgKGhhc0xvYWRlZEFsbERhdGEoY3VycmVudF9wYWdlLCB1c2VyVGlja2V0cywgdG90YWwpKSByZXR1cm4gc3RhdGU7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICB1c2VyVGlja2V0czpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0UgPyBkYXRhIDogWy4uLnVzZXJUaWNrZXRzLCAuLi5kYXRhXSxcbiAgICAgICAgdXNlcl90aWNrZXRzX3RvdGFsOiB0b3RhbCxcbiAgICAgICAgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZTogY3VycmVudF9wYWdlLFxuICAgICAgICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlOiBsYXN0X3BhZ2VcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgR0VUX1RJQ0tFVFNfQllfT1JERVI6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgZm9ybWVyT3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZCgobykgPT4gby5pZCA9PT0gZGF0YVswXT8ub3JkZXJfaWQpO1xuXG4gICAgICBpZiAoaGFzTG9hZGVkQWxsRGF0YShjdXJyZW50X3BhZ2UsIGZvcm1lck9yZGVyPy5tZW1iZXJUaWNrZXRzLCB0b3RhbCkpXG4gICAgICAgIHJldHVybiBzdGF0ZTtcblxuICAgICAgY29uc3QgdXBkYXRlZE9yZGVyID0ge1xuICAgICAgICAuLi5mb3JtZXJPcmRlcixcbiAgICAgICAgbWVtYmVyVGlja2V0czpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0VcbiAgICAgICAgICAgID8gZGF0YVxuICAgICAgICAgICAgOiBbLi4uZm9ybWVyT3JkZXIubWVtYmVyVGlja2V0cywgLi4uZGF0YV0sXG4gICAgICAgIHRpY2tldHNfcGFnZV9jdXJyZW50OiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfcGFnZV9sYXN0OiBsYXN0X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfdG90YWw6IHRvdGFsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRDoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgdGlja2V0c1JlZnVuZFJlcXVlc3RlZCA9IHBheWxvYWQ7XG4gICAgICBjb25zdCBvcmRlciA9IG1lbWJlck9yZGVycy5maW5kKFxuICAgICAgICAobykgPT4gby5pZCA9PT0gdGlja2V0c1JlZnVuZFJlcXVlc3RlZFswXT8ub3JkZXJfaWRcbiAgICAgICk7XG4gICAgICBjb25zdCB1cGRhdGVkVGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzLm1hcChcbiAgICAgICAgKHRpY2tldCkgPT5cbiAgICAgICAgICB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkLmZpbmQoKHRycikgPT4gdHJyLmlkID09PSB0aWNrZXQuaWQpIHx8IHRpY2tldFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4ub3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6IHVwZGF0ZWRUaWNrZXRzXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgUkVTRVRfVElDS0VUOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogbnVsbCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXQgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TOiB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZXh0cmFRdWVzdGlvbnM6IGRhdGEgfTtcbiAgICB9XG4gICAgY2FzZSBVUERBVEVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXREYXRhID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IHN0YXRlLm1lbWJlck9yZGVycy5tYXAoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPSBvcmRlci5tZW1iZXJUaWNrZXRzLm1hcCgodGlja2V0KSA9PiB7XG4gICAgICAgICAgaWYgKHRpY2tldC5pZCA9PT0gdGlja2V0RGF0YS5pZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRpY2tldERhdGE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aWNrZXQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7IC4uLm9yZGVyLCBtZW1iZXJUaWNrZXRzOiBuZXdUaWNrZXRzIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIG1lbWJlck9yZGVyczogbmV3T3JkZXJzIH07XG4gICAgfVxuICAgIGNhc2UgREVMRUdBVEVfVElDS0VUOlxuICAgIGNhc2UgQVNTSUdOX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gb3JkZXIubWVtYmVyVGlja2V0cy5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgIGlmICh0aWNrZXQuaWQgPT09IHRpY2tldERhdGEuaWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aWNrZXREYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGlja2V0O1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4geyAuLi5vcmRlciwgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiB0aWNrZXREYXRhLCBtZW1iZXJPcmRlcnM6IG5ld09yZGVycyB9O1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRSZWR1Y2VyO1xuIiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29uZmlndXJlU3RvcmUgfSBmcm9tIFwiQHJlZHV4anMvdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgcGVyc2lzdFN0b3JlLFxuICBwZXJzaXN0UmVkdWNlcixcbiAgRkxVU0gsXG4gIFJFSFlEUkFURSxcbiAgUEFVU0UsXG4gIFBFUlNJU1QsXG4gIFBVUkdFLFxuICBSRUdJU1RFUlxufSBmcm9tIFwicmVkdXgtcGVyc2lzdFwiO1xuaW1wb3J0IHN0b3JhZ2UgZnJvbSBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIjtcbmltcG9ydCB7IGNvbWJpbmVSZWR1Y2VycyB9IGZyb20gXCJyZWR1eFwiO1xuaW1wb3J0IFdpZGdldFJlZHVjZXIgZnJvbSBcIi4vcmVkdWNlclwiO1xuXG5leHBvcnQgY29uc3QgZ2V0U3RvcmUgPSAoe1xuICBjbGllbnRJZCxcbiAgbG9naW5VcmwsXG4gIHN1bW1pdCxcbiAgYXBpQmFzZVVybCxcbiAgdXBkYXRlUHJvZmlsZVxufSkgPT4ge1xuICAvLyB0byBhZGQgb3RoZXIgcmVkdWNlcnMgbGF0ZXJcbiAgY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICAgIHdpZGdldFN0YXRlOiBXaWRnZXRSZWR1Y2VyXG4gIH0pO1xuXG4gIGNvbnN0IHN0b3JlID0gY29uZmlndXJlU3RvcmUoe1xuICAgIHJlZHVjZXI6IHBlcnNpc3RSZWR1Y2VyKFxuICAgICAge1xuICAgICAgICBrZXk6IGByb290X215X29yZGVyc190aWNrZXRzXyR7Y2xpZW50SWR9YCxcbiAgICAgICAgc3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHJlZHVjZXJzXG4gICAgKSxcbiAgICBtaWRkbGV3YXJlOiAoZ2V0RGVmYXVsdE1pZGRsZXdhcmUpID0+XG4gICAgICBnZXREZWZhdWx0TWlkZGxld2FyZSh7XG4gICAgICAgIHRodW5rOiB7XG4gICAgICAgICAgZXh0cmFBcmd1bWVudDoge1xuICAgICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgICBhcGlCYXNlVXJsLFxuICAgICAgICAgICAgc3VtbWl0LFxuICAgICAgICAgICAgbG9naW5VcmwsXG4gICAgICAgICAgICB1cGRhdGVQcm9maWxlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpbW11dGFibGVDaGVjazogZmFsc2UsXG4gICAgICAgIHNlcmlhbGl6YWJsZUNoZWNrOiB7XG4gICAgICAgICAgaWdub3JlZEFjdGlvbnM6IFtGTFVTSCwgUkVIWURSQVRFLCBQQVVTRSwgUEVSU0lTVCwgUFVSR0UsIFJFR0lTVEVSXVxuICAgICAgICB9XG4gICAgICB9KVxuICB9KTtcblxuICByZXR1cm4gc3RvcmU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlSW5pdFN0b3JlID0gKGNvbmZpZykgPT4ge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oKCkgPT4gZ2V0U3RvcmUoY29uZmlnKSwgW10pO1xuICBjb25zdCBwZXJzaXN0b3IgPSB1c2VNZW1vKCgpID0+IHBlcnNpc3RTdG9yZShzdG9yZSksIFtzdG9yZV0pO1xuXG4gIHJldHVybiB7XG4gICAgc3RvcmUsXG4gICAgcGVyc2lzdG9yXG4gIH07XG59O1xuIiwiaW1wb3J0IHtcbiAgaW5pdExvZ091dCxcbiAgZ2V0QWNjZXNzVG9rZW5cbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0ICogYXMgU2VudHJ5IGZyb20gXCJAc2VudHJ5L3JlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBnZXRBY2Nlc3NUb2tlblNhZmVseSA9IGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0QWNjZXNzVG9rZW4oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0OjpnZXRBY2Nlc3NUb2tlblNhZmVseSBlcnJvcjogXCIsIGUpO1xuICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGUpO1xuICAgIGluaXRMb2dPdXQoKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgfVxufTtcbiIsImV4cG9ydCBjb25zdCBMQVNUX0hPVVJfT0ZfMjRfSE9VUiA9IDIzO1xuZXhwb3J0IGNvbnN0IExBU1RfTUlOVVRFX09GX0hPVVIgPSA1OTtcbmV4cG9ydCBjb25zdCBPTkVfUEFHRV9ORVhUID0gMTtcbmV4cG9ydCBjb25zdCBNSUxMSVNFQ19UT19TRUMgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IE9ORV9EQVkgPSAxO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgPSA1O1xuZXhwb3J0IGNvbnN0IEZJUlNUX1BBR0UgPSAxO1xuZXhwb3J0IGNvbnN0IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCA9IDU7XG5leHBvcnQgY29uc3QgU1RFUF9PTkUgPSAxO1xuZXhwb3J0IGNvbnN0IFNURVBfVFdPID0gMjtcbmV4cG9ydCBjb25zdCBTVEVQX1RIUkVFID0gMztcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiU1RBVFVTX0NPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIlNUQVRVU19JTkNPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BFTkRJTkcgPSBcIlNUQVRVU19QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiU1RBVFVTX0NBTkNFTExFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19FUlJPUiA9IFwiU1RBVFVTX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BST0NFU1NJTkcgPSBcIlNUQVRVU19QUk9DRVNTSU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlNUQVRVU19VTkFTU0lHTkVEXCI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1BFTkRJTkcgPSBcIlNUQVRVU19SRUZVTkRfUEVORElOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfQVBQUk9WRUQgPSBcIlNUQVRVU19SRUZVTkRfQVBQUk9WRURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEID0gXCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDID0gXCJSZXF1ZXN0ZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDID0gXCJBcHByb3ZlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMgPSBcIlJlamVjdGVkXCI7XG5cbmV4cG9ydCBjb25zdCBKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMgPSAxMDAwMDtcblxuZXhwb3J0IGNvbnN0IE9ORV9JVEVNID0gMTtcbmV4cG9ydCBjb25zdCBUV09fSVRFTSA9IDI7XG5leHBvcnQgY29uc3QgRklWRV9JVEVNID0gNTtcbmV4cG9ydCBjb25zdCBTSVhfSVRFTSA9IDY7XG5cbmV4cG9ydCBjb25zdCBQUk9NSVNFX0JBVENIX0xJTUlUID0gMTA7XG5leHBvcnQgY29uc3QgRklGVFlfUEVSX1BBR0UgPSA1MDtcblxuZXhwb3J0IGNvbnN0IEVSUk9SX0NPREVTID0ge1xuICA0MDE6IDQwMSxcbiAgNDAzOiA0MDEsXG4gIDQxMjogNDAxLFxuICA1MDA6IDUwMFxufTtcblxuZXhwb3J0IGNvbnN0IFRBQlMgPSB7XG4gIE9SREVSUzogXCJPUkRFUlNcIixcbiAgVElDS0VUUzogXCJUSUNLRVRTXCJcbn07XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQge1xuICBMQVNUX0hPVVJfT0ZfMjRfSE9VUixcbiAgTEFTVF9NSU5VVEVfT0ZfSE9VUixcbiAgTUlMTElTRUNfVE9fU0VDLFxuICBGSVJTVF9QQUdFXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0Q3VycmVuY3kgPSAodmFsdWUsIHsgbG9jYWxlID0gXCJlbi1VU1wiLCAuLi5vcHRpb25zIH0pID0+IHtcbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgY3VycmVuY3k6IFwiVVNEXCIsXG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMlxuICB9O1xuXG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIHtcbiAgICBzdHlsZTogXCJjdXJyZW5jeVwiLFxuICAgIC4uLmRlZmF1bHRPcHRpb25zLFxuICAgIC4uLm9wdGlvbnNcbiAgfSk7XG5cbiAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQodmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZERhdGUgPSAoZGF0ZXRpbWUsIHRpbWVab25lKSA9PiB7XG4gIGlmICh0aW1lWm9uZSlcbiAgICByZXR1cm4gbW9tZW50XG4gICAgICAudHooZGF0ZXRpbWUgKiBNSUxMSVNFQ19UT19TRUMsIHRpbWVab25lKVxuICAgICAgLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG5cbiAgcmV0dXJuIG1vbWVudC51bml4KGRhdGV0aW1lKS5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZU9yZGVyVG90YWxzID0gKHsgb3JkZXIsIHN1bW1pdCB9KSA9PiB7XG4gIGlmICghb3JkZXIgfHwgIXN1bW1pdCkgcmV0dXJuIHt9O1xuICBjb25zdCB0aWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM7XG4gIGlmICghdGlja2V0cykgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHsgcmVmdW5kZWRfYW1vdW50LCBkaXNjb3VudF9hbW91bnQsIHRheGVzX2Ftb3VudCwgYW1vdW50IH0gPSBvcmRlcjtcbiAgY29uc3QgeyB0aWNrZXRfdHlwZXMgfSA9IHN1bW1pdDtcblxuICBjb25zdCB0aWNrZXRTdW1tYXJ5ID0gW107XG4gIGxldCBwdXJjaGFzZVRpY2tldFRvdGFsID0gMDtcblxuICBjb25zdCBjdXJyZW5jeU9iamVjdCA9IHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH07XG5cbiAgT2JqZWN0LmtleXMob3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlKS5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHRpY2tldFR5cGUgPSB0aWNrZXRfdHlwZXM/LmZpbmQoKHR0KSA9PiB0dC5uYW1lID09PSB0aWNrZXQpO1xuICAgIGlmICghdGlja2V0VHlwZSkgcmV0dXJuIG51bGw7XG4gICAgdGlja2V0U3VtbWFyeS5wdXNoKHtcbiAgICAgIHRpY2tldF90eXBlX2lkOiB0aWNrZXRUeXBlLmlkLFxuICAgICAgdGlja2V0X3R5cGU6IHRpY2tldFR5cGUsXG4gICAgICBuYW1lOiB0aWNrZXQsXG4gICAgICBxdHk6IG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdXG4gICAgfSk7XG4gICAgcHVyY2hhc2VUaWNrZXRUb3RhbCArPVxuICAgICAgdGlja2V0VHlwZS5jb3N0ICogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF07XG5cbiAgICByZXR1cm4gdGlja2V0U3VtbWFyeTtcbiAgfSk7XG5cbiAgY29uc3QgcHVyY2hhc2VUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVGlja2V0VG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICBjb25zdCBkaXNjb3VudFRvdGFsID0gZm9ybWF0Q3VycmVuY3koZGlzY291bnRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHJlZnVuZFRvdGFsID0gZm9ybWF0Q3VycmVuY3kocmVmdW5kZWRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHRheGVzVG90YWwgPSBmb3JtYXRDdXJyZW5jeSh0YXhlc19hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgYW1vdW50VG90YWwgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3JkZXIsIFwiYW1vdW50XCIpXG4gICAgPyBmb3JtYXRDdXJyZW5jeShhbW91bnQsIGN1cnJlbmN5T2JqZWN0KVxuICAgIDogZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIHJldHVybiB7XG4gICAgZGlzY291bnRUb3RhbCxcbiAgICByZWZ1bmRUb3RhbCxcbiAgICB0YXhlc1RvdGFsLFxuICAgIGFtb3VudFRvdGFsLFxuICAgIHRpY2tldFN1bW1hcnlcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPcmRlclRpY2tldHMgPSAobWVtYmVyT3JkZXJzLCBvcmRlcklkKSA9PiB7XG4gIGNvbnN0IG9yZGVycyA9IG1lbWJlck9yZGVycy5maWx0ZXIoKG8pID0+IG8uaWQgPT09IG9yZGVySWQpO1xuICByZXR1cm4gb3JkZXJzWzBdPy5tZW1iZXJUaWNrZXRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyA9ICh0cykgPT4ge1xuICBjb25zdCBsb3dlciA9IHRzLnNldEhvdXJzKDAsIDAsIDAsIDApIC8gTUlMTElTRUNfVE9fU0VDO1xuICBjb25zdCB1cHBlciA9XG4gICAgdHMuc2V0SG91cnMoTEFTVF9IT1VSX09GXzI0X0hPVVIsIExBU1RfTUlOVVRFX09GX0hPVVIsIDAsIDApIC9cbiAgICBNSUxMSVNFQ19UT19TRUM7XG4gIHJldHVybiB7XG4gICAgbG93ZXIsXG4gICAgdXBwZXJcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q3VycmVudFRpbWUgPSAoKSA9PlxuICBNYXRoLnJvdW5kKCtuZXcgRGF0ZSgpIC8gTUlMTElTRUNfVE9fU0VDKTtcblxuZXhwb3J0IGNvbnN0IGdldE5vdyA9ICgpID0+IChkaXNwYXRjaCwgZ2V0U3RhdGUpID0+IHtcbiAgY29uc3QgeyB0aW1lclN0YXRlIH0gPSBnZXRTdGF0ZSgpO1xuICByZXR1cm4gdGltZXJTdGF0ZT8ubm93VXRjID09IG51bGwgPyBkZWZhdWx0Q3VycmVudFRpbWUoKSA6IHRpbWVyU3RhdGU/Lm5vd1V0Yztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VOb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICByZXR1cm4gZGlzcGF0Y2goZ2V0Tm93KCkpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gcmVxdWVzdGVkUGFnZVxuICogQHBhcmFtIGN1cnJlbnRQYWdlXG4gKiBAcGFyYW0gbGFzdFBhZ2VcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgY29uc3Qgc2hvdWxkRmV0Y2hEYXRhID0gKHJlcXVlc3RlZFBhZ2UsIGN1cnJlbnRQYWdlLCBsYXN0UGFnZSkgPT4ge1xuICBsZXQgcmVzID0gdHJ1ZTtcblxuICBpZiAocmVxdWVzdGVkUGFnZSA8PSAwKSByZXMgPSBmYWxzZTtcblxuICBjb25zdCBpc1NhbWVQYWdlID0gY3VycmVudFBhZ2UgPiAwICYmIHJlcXVlc3RlZFBhZ2UgPT09IGN1cnJlbnRQYWdlO1xuICBjb25zdCBpc0xhc3RQYWdlID0gY3VycmVudFBhZ2UgPiAwICYmIGN1cnJlbnRQYWdlID09PSBsYXN0UGFnZTtcblxuICBpZiAoaXNTYW1lUGFnZSB8fCBpc0xhc3RQYWdlKSByZXMgPSBmYWxzZTtcblxuICBpZiAocmVxdWVzdGVkUGFnZSA9PT0gRklSU1RfUEFHRSkgcmVzID0gdHJ1ZTtcblxuICBjb25zb2xlLmxvZyhcbiAgICBgbXktb3JkZXJzLXRpY2tldC13aWRnZXQ6OnV0aWxzOjpzaG91bGRGZXRjaERhdGEgcmVxdWVzdGVkUGFnZSAke3JlcXVlc3RlZFBhZ2V9IGN1cnJlbnRQYWdlICR7Y3VycmVudFBhZ2V9IGxhc3RQYWdlICR7bGFzdFBhZ2V9IHJlcyAke3Jlc31gXG4gICk7XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cbi8qKlxuICogQHBhcmFtIGN1cnJlbnRQYWdlXG4gKiBAcGFyYW0gbGFzdFBhZ2VcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgY29uc3QgaGFzTW9yZTJGZXRjaCA9IChjdXJyZW50UGFnZSwgbGFzdFBhZ2UpID0+IHtcbiAgY29uc3QgcmVzID0gY3VycmVudFBhZ2UgPiAwICYmIGN1cnJlbnRQYWdlIDwgbGFzdFBhZ2U7XG4gIGNvbnNvbGUubG9nKFxuICAgIGBteS1vcmRlcnMtdGlja2V0LXdpZGdldDo6dXRpbHM6Omhhc01vcmUyRmV0Y2ggY3VycmVudFBhZ2UgJHtjdXJyZW50UGFnZX0gbGFzdFBhZ2UgJHtsYXN0UGFnZX0gcmVzICR7cmVzfWBcbiAgKTtcbiAgcmV0dXJuIHJlcztcbn07XG5cbi8qKlxuICogQHBhcmFtIGN1cnJlbnRQYWdlXG4gKiBAcGFyYW0gZGF0YVxuICogQHBhcmFtIHRvdGFsXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGNvbnN0IGhhc0xvYWRlZEFsbERhdGEgPSAoY3VycmVudFBhZ2UsIGRhdGEsIHRvdGFsKSA9PiB7XG4gIGxldCByZXMgPSBmYWxzZTtcbiAgY29uc3QgZGF0YUxlbmd0aCA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhLmxlbmd0aCA6IDA7XG4gIC8vIHdlIGFscmVhZHkgbG9hZGVkIGFsbCAgZGF0YSAoIGZpcnN0IHBhZ2UgaXMgYWx3YXlzIHJlbG9hZGVkIGl0IClcbiAgaWYgKGN1cnJlbnRQYWdlID4gRklSU1RfUEFHRSAmJiBkYXRhTGVuZ3RoID4gMCAmJiBkYXRhTGVuZ3RoID09PSB0b3RhbClcbiAgICByZXMgPSB0cnVlO1xuICBjb25zb2xlLmxvZyhcbiAgICBgbXktb3JkZXJzLXRpY2tldC13aWRnZXQ6OnV0aWxzOjpoYXNMb2FkZWRBbGxEYXRhIGN1cnJlbnRQYWdlICR7Y3VycmVudFBhZ2V9IGRhdGEubGVuZ3RoICR7ZGF0YUxlbmd0aH0gcmVzICR7cmVzfWBcbiAgKTtcbiAgcmV0dXJuIHJlcztcbn07XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQywgT05FX0RBWSB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi5cIjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrU3VtbWl0UGFzdCA9IChzdW1taXQsIG5vdykgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgcmVhc3NpZ25fZGF0ZSA9XG4gICAgc3VtbWl0Py5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlICYmXG4gICAgc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgPCBzdW1taXQuZW5kX2RhdGVcbiAgICAgID8gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGVcbiAgICAgIDogc3VtbWl0LmVuZF9kYXRlO1xuXG4gIHJldHVybiBub3cgPiByZWFzc2lnbl9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrU3VtbWl0U3RhcnRlZCA9IChzdW1taXQsIG5vdykgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHN1bW1pdC5zdGFydF9kYXRlIDwgbm93O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdERheXNEaWZmID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHN0YXJ0RGF5ID0gbW9tZW50KHN1bW1pdC5zdGFydF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGVuZERheSA9IG1vbWVudChzdW1taXQuZW5kX2RhdGUgKiBNSUxMSVNFQ19UT19TRUMpLnR6KFxuICAgIHN1bW1pdC50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZGF5cyA9IGVuZERheT8uZGlmZihzdGFydERheSwgXCJkYXlzXCIpO1xuICByZXR1cm4ge1xuICAgIHN0YXJ0RGF5LFxuICAgIGVuZERheSxcbiAgICBkYXlzXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCB7IHN0YXJ0RGF5LCBlbmREYXksIGRheXMgfSA9IGdldFN1bW1pdERheXNEaWZmKHN1bW1pdCk7XG4gIGlmICghc3RhcnREYXkgfHwgIWVuZERheSkgcmV0dXJuIG51bGw7XG4gIGxldCBmb3JtYXRTdGFydERhdGUgPSBcIk1NTU0gREQsIFlZWVlcIjtcbiAgbGV0IGZvcm1hdEVuZERhdGUgPSBcIk1NTU0gREQsIFlZWVlcIjtcbiAgaWYgKHN0YXJ0RGF5LnllYXIoKSA9PT0gZW5kRGF5LnllYXIoKSkgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIEREXCI7XG4gIGlmIChzdGFydERheS5tb250aCgpID09PSBlbmREYXkubW9udGgoKSkgZm9ybWF0RW5kRGF0ZSA9IFwiREQsIFlZWVlcIjtcblxuICBjb25zdCBzdGFydERhdGUgPSBzdGFydERheS5mb3JtYXQoZm9ybWF0U3RhcnREYXRlKTtcbiAgY29uc3QgZW5kRGF0ZSA9IGVuZERheS5mb3JtYXQoZm9ybWF0RW5kRGF0ZSk7XG5cbiAgaWYgKGRheXMgPiBPTkVfREFZKSByZXR1cm4gYCR7c3RhcnREYXRlfSAtICR7ZW5kRGF0ZX1gO1xuXG4gIHJldHVybiBzdGFydERhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0TG9jYXRpb24gPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBsb2NhdGlvbiA9IHN1bW1pdC5sb2NhdGlvbnM/LmZpbmQoXG4gICAgKGwpID0+IGwuY2xhc3NfbmFtZSA9PT0gXCJTdW1taXRWZW51ZVwiICYmIGwuaXNfbWFpbiA9PT0gdHJ1ZVxuICApO1xuXG4gIGlmICghbG9jYXRpb24pIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBgJHtsb2NhdGlvbi5jaXR5fSwgJHtsb2NhdGlvbi5jb3VudHJ5fWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0UmVhc3NpZ25EYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlICYmXG4gICAgc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgPCBzdW1taXQuZW5kX2RhdGVcbiAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgOiBzdW1taXQuZW5kX2RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlU3VtbWl0RGV0YWlscyA9ICh7IHN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuXG4gIGlmICghc3VtbWl0KSByZXR1cm4ge307XG5cbiAgY29uc3QgbG9jYXRpb24gPSBnZXRTdW1taXRMb2NhdGlvbihzdW1taXQpO1xuICBjb25zdCBmb3JtYXR0ZWREYXRlID0gZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZShzdW1taXQpO1xuICBjb25zdCByZWFzc2lnbkRhdGUgPSBnZXRTdW1taXRSZWFzc2lnbkRhdGUoc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkUmVhc3NpZ25EYXRlID0gbW9tZW50LnR6KFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBzdW1taXQudGltZV96b25lPy50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSA9IGdldFN1bW1pdERheXNEaWZmKFxuICAgIG5vdyxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8ubmFtZVxuICApO1xuXG4gIGNvbnN0IGlzUGFzdCA9IGNoZWNrU3VtbWl0UGFzdChzdW1taXQsIG5vdyk7XG4gIGNvbnN0IGlzU3RhcnRlZCA9IGNoZWNrU3VtbWl0U3RhcnRlZChzdW1taXQsIG5vdyk7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID0gcmVhc3NpZ25EYXRlID4gbm93O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogc3VtbWl0Py5uYW1lLFxuICAgIG5vdyxcbiAgICBsb2NhdGlvbixcbiAgICBmb3JtYXR0ZWREYXRlLFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBmb3JtYXR0ZWRSZWFzc2lnbkRhdGUsXG4gICAgZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSxcbiAgICBpc1Bhc3QsXG4gICAgaXNTdGFydGVkLFxuICAgIGlzUmVhc3NpZ25hYmxlXG4gIH07XG59O1xuIiwiaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcbmltcG9ydCBpMThuIGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQge1xuICBTVEFUVVNfQ0FOQ0VMTEVELFxuICBTVEFUVVNfQ09NUExFVEUsXG4gIFNUQVRVU19JTkNPTVBMRVRFLFxuICBTVEFUVVNfVU5BU1NJR05FRCxcbiAgU1RBVFVTX1JFRlVORF9QRU5ESU5HLFxuICBTVEFUVVNfUkVGVU5EX0FQUFJPVkVELFxuICBTVEFUVVNfUkVGVU5EX1JFSkVDVEVELFxuICBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMsXG4gIFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTEMsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURURfTENcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb25zdGFudHNcIjtcbmltcG9ydCB7XG4gIGNoZWNrSWZWYWx1ZU1hdGNoLFxuICBnZXRUeXBlSW5pdGlhbFZhbHVlLFxuICB0b1NsdWdcbn0gZnJvbSBcIi4uL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBzdGF0dXNEYXRhID0ge1xuICBbU1RBVFVTX1VOQVNTSUdORURdOiB7XG4gICAgdHlwZTogU1RBVFVTX1VOQVNTSUdORUQsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy51bmFzc2lnbmVkXCIpXG4gIH0sXG4gIFtTVEFUVVNfSU5DT01QTEVURV06IHtcbiAgICB0eXBlOiBTVEFUVVNfSU5DT01QTEVURSxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmluY29tcGxldGVcIilcbiAgfSxcbiAgW1NUQVRVU19DT01QTEVURV06IHtcbiAgICB0eXBlOiBTVEFUVVNfQ09NUExFVEUsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5jb21wbGV0ZVwiKVxuICB9LFxuICBbU1RBVFVTX0NBTkNFTExFRF06IHtcbiAgICB0eXBlOiBTVEFUVVNfQ0FOQ0VMTEVELFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuY2FuY2VsbGVkXCIpXG4gIH1cbn07XG5leHBvcnQgY29uc3QgZ2V0VGlja2V0U3RhdHVzS2V5ID0gKHRpY2tldCkgPT4ge1xuICBpZiAoIXRpY2tldC5pc19hY3RpdmUpIHJldHVybiBTVEFUVVNfQ0FOQ0VMTEVEO1xuXG4gIGlmICh0aWNrZXQub3duZXJfaWQgPT09IDApIHJldHVybiBTVEFUVVNfVU5BU1NJR05FRDtcblxuICBpZiAoIXRpY2tldC5vd25lcj8uZmlyc3RfbmFtZSB8fCAhdGlja2V0Lm93bmVyPy5sYXN0X25hbWUpXG4gICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIGlmICh0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiSW5jb21wbGV0ZVwiKVxuICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcblxuICBpZiAodGlja2V0Lm93bmVyICYmIHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkNvbXBsZXRlXCIpXG4gICAgcmV0dXJuIFNUQVRVU19DT01QTEVURTtcblxuICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0U3RhdHVzRGF0YSA9ICh0aWNrZXQsIGlzU3VtbWl0UGFzdCkgPT5cbiAgc3RhdHVzRGF0YVtnZXRUaWNrZXRTdGF0dXNLZXkodGlja2V0LCBpc1N1bW1pdFBhc3QpXTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFJvbGUgPSAodGlja2V0KSA9PiB7XG4gIGlmICghdGlja2V0LmJhZGdlKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCB7IGZlYXR1cmVzIH0gPSB0aWNrZXQuYmFkZ2U7XG5cbiAgaWYgKGZlYXR1cmVzLmxlbmd0aCA+IDApXG4gICAgcmV0dXJuIGZlYXR1cmVzLm1hcCgoZmVhdHVyZSkgPT4gZmVhdHVyZS5uYW1lKS5qb2luKFwiLCBcIik7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0VHlwZSA9ICh0aWNrZXQsIHN1bW1pdCkgPT5cbiAgc3VtbWl0LnRpY2tldF90eXBlcy5maW5kKCh0eXBlKSA9PiB0eXBlLmlkID09PSB0aWNrZXQudGlja2V0X3R5cGVfaWQpO1xuXG5leHBvcnQgY29uc3QgaXNUaWNrZXRSZWZ1bmRhYmxlID0gKHRpY2tldCkgPT5cbiAgdGlja2V0Py5maW5hbF9hbW91bnQgPiAwICYmXG4gIHRpY2tldD8uZmluYWxfYW1vdW50ID4gdGlja2V0Py5yZWZ1bmRlZF9hbW91bnQgJiZcbiAgIXRpY2tldD8ucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTENcbiAgKTtcblxuZXhwb3J0IGNvbnN0IHRpY2tldHNSZWZ1bmRhYmxlID0gKHRpY2tldHMpID0+XG4gIHRpY2tldHM/LmZpbHRlcigodGlja2V0KSA9PiBpc1RpY2tldFJlZnVuZGFibGUodGlja2V0KSkubGVuZ3RoIHx8IDA7XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRlZFJlcXVlc3RlZFRpY2tldHMgPSAodGlja2V0cykgPT5cbiAgdGlja2V0cz8uZmlsdGVyKCh0aWNrZXQpID0+XG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZSgocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDKVxuICApO1xuZXhwb3J0IGNvbnN0IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMgPSAodGlja2V0cykgPT4ge1xuICBjb25zdCBhbGxUaWNrZXRzID0gW107XG4gIHRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiB7XG4gICAgaWYgKFxuICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQ1xuICAgICAgKSB8fFxuICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTENcbiAgICAgICkgfHxcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDXG4gICAgICApXG4gICAgKSB7XG4gICAgICBhbGxUaWNrZXRzLnB1c2godGlja2V0KTtcbiAgICB9XG4gICAgcmV0dXJuIHRpY2tldDtcbiAgfSk7XG4gIHJldHVybiBhbGxUaWNrZXRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZGVkUmVxdWVzdGVkU3RhdHVzID0gKHRpY2tldCkgPT4ge1xuICBpZiAoXG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZSgocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDKVxuICApXG4gICAgcmV0dXJuIFNUQVRVU19SRUZVTkRfUEVORElORztcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQ1xuICAgIClcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEO1xuICBpZiAoXG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDXG4gICAgKVxuICApXG4gICAgcmV0dXJuIFNUQVRVU19SRUZVTkRfUkVKRUNURUQ7XG4gIHJldHVybiBTVEFUVVNfUkVGVU5EX1BFTkRJTkc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IgPSAodGlja2V0KSA9PiB7XG4gIGNvbnN0IHN0YXR1cyA9IGdldFJlZnVuZGVkUmVxdWVzdGVkU3RhdHVzKHRpY2tldCk7XG4gIGxldCBzdGF0dXNDb2xvciA9IFwiXCI7XG4gIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX1BFTkRJTkc6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicGVuZGluZ1wiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcImFwcHJvdmVkXCI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNUQVRVU19SRUZVTkRfUkVKRUNURUQ6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicmVqZWN0ZWRcIjtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicGVuZGluZ1wiO1xuICB9XG4gIHJldHVybiBzdGF0dXNDb2xvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlVmFsaWRhdGlvbiA9ICh0eXBlLCBuYW1lLCBpc1JlcXVpcmVkKSA9PiB7XG4gIGxldCBzY2hlbWE7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgc2NoZW1hID0geXVwLmJvb2woKS5vbmVPZihbdHJ1ZV0sIGkxOG4udChcInZhbGlkYXRpb24uY2hlY2tib3gucmVxdWlyZWRcIikpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgc2NoZW1hID0geXVwLmFycmF5KCkub2YoeXVwLnN0cmluZygpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKGAke25hbWV9IGlzIHJlcXVpcmVkYCk7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlQW5zd2VycyA9IChcbiAgb3duZXIsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBhbnN3ZXJzLFxuICBpbmNsdWRlQXR0ZW5kZWVJbmZvLFxuICBpbmNsdWRlRGlzY2xhaW1lcixcbiAgb25seVJlbGV2YW50ID0gZmFsc2VcbikgPT4ge1xuICBjb25zdCBpbml0aWFsVmFsdWVzID0ge307XG5cbiAgaWYgKGluY2x1ZGVBdHRlbmRlZUluZm8pIHtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSB8fCBvd25lci5lbWFpbCB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gfHwgb3duZXIuZmlyc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdIHx8IG93bmVyLmxhc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSB8fCBvd25lci5jb21wYW55O1xuICB9XG5cbiAgaWYgKGluY2x1ZGVEaXNjbGFpbWVyKSB7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSB8fFxuICAgICAgb3duZXIuZGlzY2xhaW1lcl9hY2NlcHRlZDtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICBjb25zdCBhbnN3ZXIgPSBhbnN3ZXJzW3F1ZXN0aW9uU2x1Z107XG4gICAgaW5pdGlhbFZhbHVlc1txdWVzdGlvblNsdWddID0gYW5zd2VyIHx8IGdldFR5cGVJbml0aWFsVmFsdWUocSk7XG5cbiAgICBpZiAocS5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHEuc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgICAgY29uc3Qgc3ViUXVlc3Rpb25TbHVnID0gdG9TbHVnKFxuICAgICAgICAgIHJ1bGUuc3ViX3F1ZXN0aW9uLm5hbWUsXG4gICAgICAgICAgcnVsZS5zdWJfcXVlc3Rpb24uaWRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgc3ViQW5zd2VyID0gYW5zd2Vyc1tzdWJRdWVzdGlvblNsdWddO1xuICAgICAgICBjb25zdCBtYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKGFuc3dlciwgcnVsZS5hbnN3ZXJfdmFsdWVzKTtcblxuICAgICAgICBpZiAoIW9ubHlSZWxldmFudCB8fCBtYXRjaCkge1xuICAgICAgICAgIGluaXRpYWxWYWx1ZXNbc3ViUXVlc3Rpb25TbHVnXSA9XG4gICAgICAgICAgICBzdWJBbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShydWxlLnN1Yl9xdWVzdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGluaXRpYWxWYWx1ZXM7XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRWYWxpZGF0aW9uU2NoZW1hID0gKFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgaW5jbHVkZUF0dGVuZGVlSW5mbyxcbiAgZGlzY2xhaW1lck1hbmRhdG9yeVxuKSA9PiB7XG4gIGNvbnN0IHNjaGVtYSA9IHt9O1xuXG4gIGlmIChpbmNsdWRlQXR0ZW5kZWVJbmZvKSB7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgIC5lbWFpbChpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSA9IHl1cC5sYXp5KCh2YWx1ZSkgPT5cbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIlxuICAgICAgICA/IHl1cFxuICAgICAgICAgICAgLm9iamVjdCgpXG4gICAgICAgICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5jb21wYW55LnJlcXVpcmVkXCIpKVxuICAgICAgICAgICAgLnR5cGVFcnJvcihpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX2ZpZWxkXCIpKVxuICAgICAgICA6IHl1cC5zdHJpbmcoKS5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmNvbXBhbnkucmVxdWlyZWRcIikpXG4gICAgKTtcbiAgfVxuXG4gIGlmIChkaXNjbGFpbWVyTWFuZGF0b3J5KSB7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gPSB5dXBcbiAgICAgIC5ib29sKClcbiAgICAgIC5vbmVPZihbdHJ1ZV0sIGkxOG4udChcInZhbGlkYXRpb24uY2hlY2tib3gucmVxdWlyZWRcIikpO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIHNjaGVtYVtxdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24ocS50eXBlLCBxLm5hbWUsIHEubWFuZGF0b3J5KTtcblxuICAgIGlmIChxLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgcS5zdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICBjb25zdCBzdWJRdWVzdGlvbiA9IHJ1bGUuc3ViX3F1ZXN0aW9uO1xuICAgICAgICBjb25zdCBzdWJRdWVzdGlvblNsdWcgPSB0b1NsdWcoc3ViUXVlc3Rpb24ubmFtZSwgc3ViUXVlc3Rpb24uaWQpO1xuICAgICAgICBzY2hlbWFbc3ViUXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWxpZGF0aW9uKFxuICAgICAgICAgIHN1YlF1ZXN0aW9uLnR5cGUsXG4gICAgICAgICAgc3ViUXVlc3Rpb24ubmFtZSxcbiAgICAgICAgICBmYWxzZVxuICAgICAgICApXG4gICAgICAgICAgLm51bGxhYmxlKClcbiAgICAgICAgICAud2hlbihxdWVzdGlvblNsdWcsIHtcbiAgICAgICAgICAgIGlzOiAocXVlc3Rpb25BbnMpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChxdWVzdGlvbkFucywgcnVsZS5hbnN3ZXJfdmFsdWVzKTtcbiAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoZW46IChzY2gpID0+IHNjaC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX3F1ZXN0aW9uXCIpKVxuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4geXVwLm9iamVjdChzY2hlbWEpO1xufTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjb3B5SWNvbl9fX2xJM2VRXCI7XG52YXIgXzIgPSBcInJldmVyc2VkX19fekp6bURcIjtcbnZhciBfMyA9IFwidHJ1bmNhdGVkX19faldTblVcIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX21WUGlSXCI7XG5leHBvcnQgeyBfMSBhcyBcImNvcHlJY29uXCIsIF8yIGFzIFwicmV2ZXJzZWRcIiwgXzMgYXMgXCJ0cnVuY2F0ZWRcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVfX19teEVLV1wiO1xudmFyIF8yID0gXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJfX19PNHNTc1wiO1xudmFyIF8zID0gXCJjYWxlbmRhckRpc3BsYXlfX19GM251S1wiO1xudmFyIF80ID0gXCJjbGVhbkJ1dHRvbl9fX3FxRHZVXCI7XG52YXIgXzUgPSBcImNvbnRhaW5lcl9fX1FlUVlfXCI7XG52YXIgXzYgPSBcImRhdGVQaWNrZXJDb250YWluZXJfX19aNDJtd1wiO1xudmFyIF83ID0gXCJkYXRlcGlja2VyQ2xvc2VfX19UWjdrSlwiO1xudmFyIF84ID0gXCJmaWx0ZXJDaGVja2JveENvbnRhaW5lcl9fX2tVblc5XCI7XG52YXIgXzkgPSBcImZpbHRlckNvbnRhaW5lcl9fX3JycXA5XCI7XG52YXIgX2EgPSBcImZpbHRlckRhdGVMYWJlbF9fX0pnYmNzXCI7XG52YXIgX2IgPSBcImZpbHRlckljb25fX19paU96b1wiO1xudmFyIF9jID0gXCJmaWx0ZXJMYWJlbF9fX3NrWlA3XCI7XG52YXIgX2QgPSBcImZpbHRlckxpc3RDb250YWluZXJfX19JRHJsU1wiO1xudmFyIF9lID0gXCJmaWx0ZXJOdW1BY3RpdmVfX19rbUVFS1wiO1xudmFyIF9mID0gXCJmaWx0ZXJTb3J0Q29udGFpbmVyX19fbmhOSnNcIjtcbnZhciBfMTAgPSBcImxhYmVsX19fTEFtZV9cIjtcbnZhciBfMTEgPSBcInNob3dGaWx0ZXJMaXN0X19fSVc0eEdcIjtcbnZhciBfMTIgPSBcInNvcnRDb250YWluZXJfX19zYjVCZFwiO1xudmFyIF8xMyA9IFwic29ydEljb25fX19jX1haaVwiO1xudmFyIF8xNCA9IFwic29ydExhYmVsX19fZFhpTXlcIjtcbnZhciBfMTUgPSBcInNvcnRMaXN0Q29udGFpbmVyX19fUHAyWGdcIjtcbnZhciBfMTYgPSBcInRpdGxlV3JhcHBlcl9fX1A2bVB1XCI7XG5leHBvcnQgeyBfMSBhcyBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVcIiwgXzIgYXMgXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJcIiwgXzMgYXMgXCJjYWxlbmRhckRpc3BsYXlcIiwgXzQgYXMgXCJjbGVhbkJ1dHRvblwiLCBfNSBhcyBcImNvbnRhaW5lclwiLCBfNiBhcyBcImRhdGVQaWNrZXJDb250YWluZXJcIiwgXzcgYXMgXCJkYXRlcGlja2VyQ2xvc2VcIiwgXzggYXMgXCJmaWx0ZXJDaGVja2JveENvbnRhaW5lclwiLCBfOSBhcyBcImZpbHRlckNvbnRhaW5lclwiLCBfYSBhcyBcImZpbHRlckRhdGVMYWJlbFwiLCBfYiBhcyBcImZpbHRlckljb25cIiwgX2MgYXMgXCJmaWx0ZXJMYWJlbFwiLCBfZCBhcyBcImZpbHRlckxpc3RDb250YWluZXJcIiwgX2UgYXMgXCJmaWx0ZXJOdW1BY3RpdmVcIiwgX2YgYXMgXCJmaWx0ZXJTb3J0Q29udGFpbmVyXCIsIF8xMCBhcyBcImxhYmVsXCIsIF8xMSBhcyBcInNob3dGaWx0ZXJMaXN0XCIsIF8xMiBhcyBcInNvcnRDb250YWluZXJcIiwgXzEzIGFzIFwic29ydEljb25cIiwgXzE0IGFzIFwic29ydExhYmVsXCIsIF8xNSBhcyBcInNvcnRMaXN0Q29udGFpbmVyXCIsIF8xNiBhcyBcInRpdGxlV3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjYW5jZWxCdG5fX19xRGV4aFwiO1xudmFyIF8yID0gXCJmb290ZXJfX19TTjcweVwiO1xudmFyIF8zID0gXCJzYXZlQnRuX19fbmJVNmNcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY2FuY2VsQnRuXCIsIF8yIGFzIFwiZm9vdGVyXCIsIF8zIGFzIFwic2F2ZUJ0blwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJlcnJvckxhYmVsX19fbm9jeVhcIjtcbmV4cG9ydCB7IF8xIGFzIFwiZXJyb3JMYWJlbFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJteU9yZGVyc1dyYXBwZXJfX19ISm15c1wiO1xudmFyIF8yID0gXCJub09yZGVyc0ZvdW5kX19fRFJ3Z29cIjtcbnZhciBfMyA9IFwibm9PcmRlcnNJY29uV3JhcHBlcl9fX3RQVG1ZXCI7XG5leHBvcnQgeyBfMSBhcyBcIm15T3JkZXJzV3JhcHBlclwiLCBfMiBhcyBcIm5vT3JkZXJzRm91bmRcIiwgXzMgYXMgXCJub09yZGVyc0ljb25XcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm9yZGVyRGV0YWlsc01tb3VudF9fX3Iza1JBXCI7XG52YXIgXzIgPSBcIm9yZGVyRGV0YWlsc1RpY2tldHNfX19tNElqS1wiO1xudmFyIF8zID0gXCJvcmRlclN1bW1hcnlCdXR0b25fX191eGpodFwiO1xudmFyIF80ID0gXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvX19fX1JCWEVcIjtcbnZhciBfNSA9IFwib3JkZXJTdW1tYXJ5VGFibGVfX19ZRG54VlwiO1xudmFyIF82ID0gXCJvcmRlclN1bW1hcnlXcmFwcGVyX19fUndJRVJcIjtcbnZhciBfNyA9IFwicmVmdW5kRGlzYWJsZWRfX19qdnJrM1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJvcmRlckRldGFpbHNNbW91bnRcIiwgXzIgYXMgXCJvcmRlckRldGFpbHNUaWNrZXRzXCIsIF8zIGFzIFwib3JkZXJTdW1tYXJ5QnV0dG9uXCIsIF80IGFzIFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb1wiLCBfNSBhcyBcIm9yZGVyU3VtbWFyeVRhYmxlXCIsIF82IGFzIFwib3JkZXJTdW1tYXJ5V3JhcHBlclwiLCBfNyBhcyBcInJlZnVuZERpc2FibGVkXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFzc2lnblRpY2tldEJ1dHRvbl9fX3p6THNjXCI7XG52YXIgXzIgPSBcImFzc2lnblRvTWVUZXh0X19fWlBhZXhcIjtcbnZhciBfMyA9IFwiYXNzaWduZWRCeVRleHRfX19iTlo3elwiO1xudmFyIF80ID0gXCJhc3NpZ25lZFRvTWVEZXNfX19HakZrVlwiO1xudmFyIF81ID0gXCJhc3NpZ25lZFRvTWVXcmFwcGVyX19fVXhjMnlcIjtcbnZhciBfNiA9IFwiYmFkZ2VGZWF0dXJlX19fQTJMTVZcIjtcbnZhciBfNyA9IFwiYmFkZ2VGZWF0dXJlV3JhcHBlcl9fX0lRTE5QXCI7XG52YXIgXzggPSBcImJsYWNrQnV0dG9uX19fbDloajlcIjtcbnZhciBfOSA9IFwiY2hlY2tib3hfX19YWkpwYlwiO1xudmFyIF9hID0gXCJkaXNhYmxlZFJlZnVuZF9fX1NmZmw3XCI7XG52YXIgX2IgPSBcImRpc3BsYXlfbm9uZV9fX0NxcEwzXCI7XG52YXIgX2MgPSBcImxhYmVsX19felhEV3pcIjtcbnZhciBfZCA9IFwibm9PcmRlcnNJY29uV3JhcHBlcl9fX2VmeXJwXCI7XG52YXIgX2UgPSBcIm5vVGlja2V0c0ZvdW5kX19fakxvY29cIjtcbnZhciBfZiA9IFwib3JkZXJUaWNrZXRDb250YWluZXJfX19aSkx6a1wiO1xudmFyIF8xMCA9IFwib3JkZXJUaWNrZXRJbmZvX19fZ2VtcUJcIjtcbnZhciBfMTEgPSBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcl9fX19wNjZWXCI7XG52YXIgXzEyID0gXCJvcmRlcldyYXBwZXJfX195REJBb1wiO1xudmFyIF8xMyA9IFwicmVhc3NpZ25CdXR0b25fX19Sb2pNNVwiO1xudmFyIF8xNCA9IFwicmVmdW5kQnV0dG9uc19fX2pEbDRIXCI7XG52YXIgXzE1ID0gXCJyZWZ1bmRNb2RhbF9fX0VxZ1BGXCI7XG52YXIgXzE2ID0gXCJzZWxlY3RlZF9fX0hXR05jXCI7XG52YXIgXzE3ID0gXCJ0YWJCdXR0b25zX19feFR5SkFcIjtcbnZhciBfMTggPSBcInRpY2tldEFjdGlvbkJ1dHRvbnNfX19ycFNNUVwiO1xudmFyIF8xOSA9IFwidGlja2V0TGlzdENvbnRhaW5lcl9fX2NmbXJyXCI7XG52YXIgXzFhID0gXCJ0aWNrZXROb19fX2EyaU05XCI7XG52YXIgXzFiID0gXCJ0aWNrZXRPd25lckVtYWlsX19fWnQ0T0VcIjtcbnZhciBfMWMgPSBcInRpY2tldFRpY2tldFR5cGVfX19acV9mMFwiO1xudmFyIF8xZCA9IFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbl9fX0hGNkltXCI7XG52YXIgXzFlID0gXCJ2aWV3TW9yZUJ1dHRvbl9fX0tfMXpUXCI7XG5leHBvcnQgeyBfMSBhcyBcImFzc2lnblRpY2tldEJ1dHRvblwiLCBfMiBhcyBcImFzc2lnblRvTWVUZXh0XCIsIF8zIGFzIFwiYXNzaWduZWRCeVRleHRcIiwgXzQgYXMgXCJhc3NpZ25lZFRvTWVEZXNcIiwgXzUgYXMgXCJhc3NpZ25lZFRvTWVXcmFwcGVyXCIsIF82IGFzIFwiYmFkZ2VGZWF0dXJlXCIsIF83IGFzIFwiYmFkZ2VGZWF0dXJlV3JhcHBlclwiLCBfOCBhcyBcImJsYWNrQnV0dG9uXCIsIF85IGFzIFwiY2hlY2tib3hcIiwgX2EgYXMgXCJkaXNhYmxlZFJlZnVuZFwiLCBfYiBhcyBcImRpc3BsYXlfbm9uZVwiLCBfYyBhcyBcImxhYmVsXCIsIF9kIGFzIFwibm9PcmRlcnNJY29uV3JhcHBlclwiLCBfZSBhcyBcIm5vVGlja2V0c0ZvdW5kXCIsIF9mIGFzIFwib3JkZXJUaWNrZXRDb250YWluZXJcIiwgXzEwIGFzIFwib3JkZXJUaWNrZXRJbmZvXCIsIF8xMSBhcyBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lclwiLCBfMTIgYXMgXCJvcmRlcldyYXBwZXJcIiwgXzEzIGFzIFwicmVhc3NpZ25CdXR0b25cIiwgXzE0IGFzIFwicmVmdW5kQnV0dG9uc1wiLCBfMTUgYXMgXCJyZWZ1bmRNb2RhbFwiLCBfMTYgYXMgXCJzZWxlY3RlZFwiLCBfMTcgYXMgXCJ0YWJCdXR0b25zXCIsIF8xOCBhcyBcInRpY2tldEFjdGlvbkJ1dHRvbnNcIiwgXzE5IGFzIFwidGlja2V0TGlzdENvbnRhaW5lclwiLCBfMWEgYXMgXCJ0aWNrZXROb1wiLCBfMWIgYXMgXCJ0aWNrZXRPd25lckVtYWlsXCIsIF8xYyBhcyBcInRpY2tldFRpY2tldFR5cGVcIiwgXzFkIGFzIFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvblwiLCBfMWUgYXMgXCJ2aWV3TW9yZUJ1dHRvblwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJDVEFCdXR0b25XcmFwcGVyX19fS2dxNmdcIjtcbnZhciBfMiA9IFwiYWN0aW9uQnV0dG9uc19fX3U3bVBTXCI7XG52YXIgXzMgPSBcImFwcHJvdmVkX19fc3hFSldcIjtcbnZhciBfNCA9IFwiYmFkZ2VGZWF0dXJlX19fdExoRXBcIjtcbnZhciBfNSA9IFwiYmFkZ2VGZWF0dXJlV3JhcHBlcl9fX185R2JEXCI7XG52YXIgXzYgPSBcImJ1dHRvblBpbGxfX19MZXNhelwiO1xudmFyIF83ID0gXCJjYW5jZWxCdXR0b25fX195ZmhZYlwiO1xudmFyIF84ID0gXCJjb250aW51ZUJ1dHRvbl9fX055WDNzXCI7XG52YXIgXzkgPSBcImRlbGV0ZUljb25fX19GU3d5ZVwiO1xudmFyIF9hID0gXCJwZW5kaW5nX19fYUViV3dcIjtcbnZhciBfYiA9IFwicmVmdW5kRGV0YWlsX19fY1EyOFZcIjtcbnZhciBfYyA9IFwicmVmdW5kRXJyb3JNc2dfX19BYWh6clwiO1xudmFyIF9kID0gXCJyZWZ1bmRTdWNjZXNzZnVsX19fenJEUVlcIjtcbnZhciBfZSA9IFwicmVmdW5kVGV4dF9fX2FFbkw5XCI7XG52YXIgX2YgPSBcInJlZnVuZFRpY2tldEF0dGVuZGVlX19fUVhDak1cIjtcbnZhciBfMTAgPSBcInJlZnVuZFRpY2tldEJveENvbnRhaW5lcl9fX3lhNjEzXCI7XG52YXIgXzExID0gXCJyZWplY3RlZF9fX05KRTRaXCI7XG52YXIgXzEyID0gXCJzdWJ0aXRsZV9fX1B0RGUyXCI7XG52YXIgXzEzID0gXCJzdWNjZXNzTXNnX19fSHRNc2VcIjtcbnZhciBfMTQgPSBcInN1Y2Nlc3NNc2cyX19fUTZ6bmFcIjtcbnZhciBfMTUgPSBcInRpY2tldExpc3RfX19lRFFSM1wiO1xudmFyIF8xNiA9IFwidGlja2V0Tm9fX19fRUFENFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJDVEFCdXR0b25XcmFwcGVyXCIsIF8yIGFzIFwiYWN0aW9uQnV0dG9uc1wiLCBfMyBhcyBcImFwcHJvdmVkXCIsIF80IGFzIFwiYmFkZ2VGZWF0dXJlXCIsIF81IGFzIFwiYmFkZ2VGZWF0dXJlV3JhcHBlclwiLCBfNiBhcyBcImJ1dHRvblBpbGxcIiwgXzcgYXMgXCJjYW5jZWxCdXR0b25cIiwgXzggYXMgXCJjb250aW51ZUJ1dHRvblwiLCBfOSBhcyBcImRlbGV0ZUljb25cIiwgX2EgYXMgXCJwZW5kaW5nXCIsIF9iIGFzIFwicmVmdW5kRGV0YWlsXCIsIF9jIGFzIFwicmVmdW5kRXJyb3JNc2dcIiwgX2QgYXMgXCJyZWZ1bmRTdWNjZXNzZnVsXCIsIF9lIGFzIFwicmVmdW5kVGV4dFwiLCBfZiBhcyBcInJlZnVuZFRpY2tldEF0dGVuZGVlXCIsIF8xMCBhcyBcInJlZnVuZFRpY2tldEJveENvbnRhaW5lclwiLCBfMTEgYXMgXCJyZWplY3RlZFwiLCBfMTIgYXMgXCJzdWJ0aXRsZVwiLCBfMTMgYXMgXCJzdWNjZXNzTXNnXCIsIF8xNCBhcyBcInN1Y2Nlc3NNc2cyXCIsIF8xNSBhcyBcInRpY2tldExpc3RcIiwgXzE2IGFzIFwidGlja2V0Tm9cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY2xvc2VCdG5fX195U1FDT1wiO1xudmFyIF8yID0gXCJoZWFkZXJfX19mQlhHOVwiO1xudmFyIF8zID0gXCJ0aXRsZV9fX3R5WmVRXCI7XG52YXIgXzQgPSBcIndyYXBwZXJfX19ST0pHc1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJjbG9zZUJ0blwiLCBfMiBhcyBcImhlYWRlclwiLCBfMyBhcyBcInRpdGxlXCIsIF80IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJzdW1taXRUaXRsZURhdGVfX19YbnJwRlwiO1xudmFyIF8yID0gXCJ3aWRnZXRIZWFkZXJfX19nZ0x0TVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJzdW1taXRUaXRsZURhdGVcIiwgXzIgYXMgXCJ3aWRnZXRIZWFkZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiaGVhZGVyTm90ZV9fX0FlNUVBXCI7XG52YXIgXzIgPSBcIm9yZGVyTm9fX19WT1BSd1wiO1xudmFyIF8zID0gXCJwdXJjaGFzZWRCeV9fX01OaUhUXCI7XG52YXIgXzQgPSBcInB1cmNoYXNlZEJ5V3JhcHBlcl9fX0RoNkhVXCI7XG52YXIgXzUgPSBcIndyYXBwZXJfX19tVnVpWlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJoZWFkZXJOb3RlXCIsIF8yIGFzIFwib3JkZXJOb1wiLCBfMyBhcyBcInB1cmNoYXNlZEJ5XCIsIF80IGFzIFwicHVyY2hhc2VkQnlXcmFwcGVyXCIsIF81IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhc3NpZ25PcHRpb25zV3JhcHBlcl9fX29qRl83XCI7XG52YXIgXzIgPSBcInRpY2tldFJlYXNzaWduQ29udGFpbmVyX19fZ090YUpcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYXNzaWduT3B0aW9uc1dyYXBwZXJcIiwgXzIgYXMgXCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ3cmFwcGVyX19fRXdPUnpcIjtcbmV4cG9ydCB7IF8xIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJpbmZvTm90ZV9fX2kxWFk5XCI7XG52YXIgXzIgPSBcIndyYXBwZXJfX19NQXVOU1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJpbmZvTm90ZVwiLCBfMiBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lcl9fX0F1dnJuXCI7XG52YXIgXzIgPSBcImFkZGl0aW9uYWxEZXRhaWxzX19fbVAxaUpcIjtcbnZhciBfMyA9IFwiYXR0ZW5kZWVDb250YWluZXJfX19RMFZVelwiO1xudmFyIF80ID0gXCJhdHRlbmRlZUluZm9UaXRsZV9fX0xtcm00XCI7XG52YXIgXzUgPSBcImNsb3NlQnRuX19fV05KbEVcIjtcbnZhciBfNiA9IFwiY29weUJ0bl9fX191dEE2XCI7XG52YXIgXzcgPSBcImRlbGVnYXRlZFRvX19fU0dWUUlcIjtcbnZhciBfOCA9IFwiZG93bmxvYWRCdG5fX19xalloelwiO1xudmFyIF85ID0gXCJoZWFkZXJfX19BdWduelwiO1xudmFyIF9hID0gXCJvcmRlck51bWJlcl9fX0w1UTVhXCI7XG52YXIgX2IgPSBcInFyQ29kZV9fX2Z3cVpxXCI7XG52YXIgX2MgPSBcInFyTm90ZV9fX0djN0tuXCI7XG52YXIgX2QgPSBcInNlbmRCdG5fX19rb1dNMlwiO1xudmFyIF9lID0gXCJzZW50X19fazZXS3hcIjtcbnZhciBfZiA9IFwic3RhdHVzX19fa3dDOHlcIjtcbnZhciBfMTAgPSBcInN1YnRpdGxlX19feV9OdU9cIjtcbnZhciBfMTEgPSBcInRpY2tldERldGFpbENvbnRhaW5lcl9fX2IyVExSXCI7XG52YXIgXzEyID0gXCJ0aXRsZV9fX3dRelVOXCI7XG5leHBvcnQgeyBfMSBhcyBcImFjdGlvbkJ1dHRvbnNDb250YWluZXJcIiwgXzIgYXMgXCJhZGRpdGlvbmFsRGV0YWlsc1wiLCBfMyBhcyBcImF0dGVuZGVlQ29udGFpbmVyXCIsIF80IGFzIFwiYXR0ZW5kZWVJbmZvVGl0bGVcIiwgXzUgYXMgXCJjbG9zZUJ0blwiLCBfNiBhcyBcImNvcHlCdG5cIiwgXzcgYXMgXCJkZWxlZ2F0ZWRUb1wiLCBfOCBhcyBcImRvd25sb2FkQnRuXCIsIF85IGFzIFwiaGVhZGVyXCIsIF9hIGFzIFwib3JkZXJOdW1iZXJcIiwgX2IgYXMgXCJxckNvZGVcIiwgX2MgYXMgXCJxck5vdGVcIiwgX2QgYXMgXCJzZW5kQnRuXCIsIF9lIGFzIFwic2VudFwiLCBfZiBhcyBcInN0YXR1c1wiLCBfMTAgYXMgXCJzdWJ0aXRsZVwiLCBfMTEgYXMgXCJ0aWNrZXREZXRhaWxDb250YWluZXJcIiwgXzEyIGFzIFwidGl0bGVcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYnV0dG9uQ2FuY2VsbGVkX19fRXJsRFpcIjtcbnZhciBfMiA9IFwiYnV0dG9uQ29tcGxldGVfX19sbFdrWlwiO1xudmFyIF8zID0gXCJidXR0b25JbmNvbXBsZXRlX19fVG9sSGdcIjtcbnZhciBfNCA9IFwiYnV0dG9uUGlsbF9fX3pxMnRjXCI7XG52YXIgXzUgPSBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZF9fX3BXdDMwXCI7XG52YXIgXzYgPSBcImJ1dHRvblVuYXNzaWduZWRfX19ZRGQ4WFwiO1xudmFyIF83ID0gXCJ0aWNrZXRTdGF0dXNDb250YWluZXJfX19xajZmYlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJidXR0b25DYW5jZWxsZWRcIiwgXzIgYXMgXCJidXR0b25Db21wbGV0ZVwiLCBfMyBhcyBcImJ1dHRvbkluY29tcGxldGVcIiwgXzQgYXMgXCJidXR0b25QaWxsXCIsIF81IGFzIFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkXCIsIF82IGFzIFwiYnV0dG9uVW5hc3NpZ25lZFwiLCBfNyBhcyBcInRpY2tldFN0YXR1c0NvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3RpdmVfX190THlXWlwiO1xudmFyIF8yID0gXCJ0YWJPcHRpb25fX19INEgxdVwiO1xudmFyIF8zID0gXCJ0YWJXcmFwcGVyX19fdTIxc0dcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aXZlXCIsIF8yIGFzIFwidGFiT3B0aW9uXCIsIF8zIGFzIFwidGFiV3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ0aWNrZXRzVGl0bGVUZXh0X19fVERQbXBcIjtcbmV4cG9ydCB7IF8xIGFzIFwidGlja2V0c1RpdGxlVGV4dFwiIH1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0luZm9cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFiXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFic1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1Rvb2x0aXBcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkByZWR1eGpzL3Rvb2xraXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHNlbnRyeS9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJmb3JtaWtcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaTE4bmV4dFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpZHRva2VuLXZlcmlmaWVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1vbWVudC10aW1lem9uZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9tZXRob2RzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwLWxpbWl0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInByb3AtdHlwZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaTE4bmV4dFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXFyLWNvZGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwieXVwXCIpOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IFBlcnNpc3RHYXRlIH0gZnJvbSBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIjtcbmltcG9ydCB7IFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUluaXRTdG9yZSB9IGZyb20gXCIuL3N0b3JlXCI7XG5pbXBvcnQgeyBSRVNFVF9TVEFURSwgc2V0UmVkdWNlclN0YXRlIH0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuXG5pbXBvcnQgV2lkZ2V0V3JhcHBlciBmcm9tIFwiLi9jb21wb25lbnRzL1dpZGdldFdyYXBwZXJcIjtcblxuY29uc3QgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQgPSAocHJvcHMpID0+IHtcbiAgY29uc3Qge1xuICAgIGxvZ2luVXJsLFxuICAgIHN1cHBvcnRFbWFpbCxcbiAgICBzdW1taXQsXG4gICAgYXBpQmFzZVVybCxcbiAgICB1c2VyLFxuICAgIGNsaWVudElkLFxuICAgIHVwZGF0ZVByb2ZpbGVcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHsgc3RvcmUsIHBlcnNpc3RvciB9ID0gdXNlSW5pdFN0b3JlKHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIHVzZXIsXG4gICAgYXBpQmFzZVVybCxcbiAgICBjbGllbnRJZCxcbiAgICB1cGRhdGVQcm9maWxlXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUJlZm9yZUxpZnQgPSAoKSA9PiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICBjb25zdCBmbHVzaCA9IHBhcmFtcy5oYXMoXCJmbHVzaFN0YXRlXCIpO1xuICAgIGlmIChmbHVzaCkgc3RvcmUuZGlzcGF0Y2goeyB0eXBlOiBSRVNFVF9TVEFURSwgcGF5bG9hZDogbnVsbCB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHN0b3JlLmRpc3BhdGNoKHNldFJlZHVjZXJTdGF0ZShzdW1taXQsIHVzZXIpKTtcbiAgfSwgW3N1bW1pdCwgdXNlcl0pO1xuXG4gIHJldHVybiAoXG4gICAgPFByb3ZpZGVyIHN0b3JlPXtzdG9yZX0+XG4gICAgICA8UGVyc2lzdEdhdGVcbiAgICAgICAgb25CZWZvcmVMaWZ0PXtoYW5kbGVCZWZvcmVMaWZ0fVxuICAgICAgICBsb2FkaW5nPXtudWxsfVxuICAgICAgICBwZXJzaXN0b3I9e3BlcnNpc3Rvcn1cbiAgICAgID5cbiAgICAgICAgPFN0eWxlZEVuZ2luZVByb3ZpZGVyIGluamVjdEZpcnN0PlxuICAgICAgICAgIDxXaWRnZXRXcmFwcGVyIC8+XG4gICAgICAgIDwvU3R5bGVkRW5naW5lUHJvdmlkZXI+XG4gICAgICA8L1BlcnNpc3RHYXRlPlxuICAgIDwvUHJvdmlkZXI+XG4gICk7XG59O1xuXG5NeU9yZGVyc015VGlja2V0c1dpZGdldC5wcm9wVHlwZXMgPSB7XG4gIGxvZ2luVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdXBwb3J0RW1haWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgYXBpQmFzZVVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdXNlcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgY2xpZW50SWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHVwZGF0ZVByb2ZpbGU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc015VGlja2V0c1dpZGdldDtcbiJdLCJuYW1lcyI6WyJhdXRoRXJyb3JIYW5kbGVyIiwiY3JlYXRlQWN0aW9uIiwiZGVsZXRlUmVxdWVzdCIsImdldFJlcXVlc3QiLCJwdXRSZXF1ZXN0Iiwic3RhcnRMb2FkaW5nIiwic3RvcExvYWRpbmciLCJwTGltaXQiLCJnZXRJZFRva2VuIiwib2JqZWN0VG9RdWVyeVN0cmluZyIsIklkVG9rZW5WZXJpZmllciIsImkxOG4iLCJnZXRBY2Nlc3NUb2tlblNhZmVseSIsIkRFRkFVTFRfSVRFTVNfUEVSX1BBR0UiLCJFUlJPUl9DT0RFUyIsIkZJRlRZX1BFUl9QQUdFIiwiRklSU1RfUEFHRSIsIlBST01JU0VfQkFUQ0hfTElNSVQiLCJUQUJTIiwiUkVTRVRfU1RBVEUiLCJSRVNFVF9GSUxURVIiLCJSRVNFVF9BUElfRVJST1IiLCJTRVRfU1RBVEUiLCJTRVRfQVBJX0VSUk9SIiwiQ0hBTkdFX0ZJTFRFUiIsIkNIQU5HRV9TT1JUIiwiR0VUX1VTRVJfT1JERVJTIiwiUkVGVU5EX09SREVSIiwiU0VUX0FDVElWRV9PUkRFUl9JRCIsIkZJTFRFUl9VU0VSX09SREVSUyIsIkdFVF9NWV9BU1NJR05FRF9USUNLRVRTIiwiVVBEQVRFX1RJQ0tFVCIsIlJFU0VUX1RJQ0tFVCIsIlJFQ0VJVkVfVElDS0VUIiwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSIsIkFTU0lHTl9USUNLRVQiLCJERUxFR0FURV9USUNLRVQiLCJSRUZVTkRfVElDS0VUIiwiUkVTRU5EX05PVElGSUNBVElPTiIsIkdFVF9USUNLRVRTX0JZX09SREVSIiwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IiLCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMiLCJHRVRfVElDS0VUX0RFVEFJTFMiLCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyIsIlRJQ0tFVF9BVFRFTkRFRV9LRVlTIiwiZW1haWwiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImNvbXBhbnkiLCJkaXNjbGFpbWVyQWNjZXB0ZWQiLCJleHRyYVF1ZXN0aW9ucyIsIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQiLCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiVVBEQVRFX0lEUF9QUk9GSUxFIiwiU0VUX1VTRVIiLCJTRVRfU1VNTUlUIiwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TIiwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MiLCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MiLCJyZXNldFRpY2tldCIsImRpc3BhdGNoIiwicmVzZXRTdGF0ZSIsInJlc2V0RmlsdGVyIiwicmVzZXRFcnJvciIsInNldFJlZHVjZXJTdGF0ZSIsInN1bW1pdCIsInVzZXIiLCJGSUxURVJfVkFSX0RBVEUiLCJGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUiLCJGSUxURVJfVkFSX1RJQ0tFVF9UWVBFIiwiRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQiLCJGSUxURVJfVkFSX09XTkVSX1NUQVRVUyIsIkZJTFRFUl9WQVJfUFJPTU9DT0RFIiwiRklMVEVSX1ZBUl9GUkVFX1BBSUQiLCJGSUxURVJfVkFSX09SREVSX05VTUJFUiIsImNoYW5nZUZpbHRlciIsImZpbHRlciIsImNoYW5nZVNvcnQiLCJzb3J0IiwicGFyc2VGaWx0ZXIiLCJmaWx0ZXJPYmoiLCJjdXJyZW50VGFiIiwicHVzaCIsImNvbmNhdCIsImxvd2VyIiwidXBwZXIiLCJsZW5ndGgiLCJmaWx0ZXJOYW1lIiwiT1JERVJTIiwiam9pbiIsImdldFNvcnREaXJlY3Rpb24iLCJkaXJlY3Rpb24iLCJlcnJvckhhbmRsZXJOb3RpZnkiLCJwYXlsb2FkIiwiY2FsbGJhY2siLCJjdXN0b21BdXRoRXJyb3JIYW5kbGVyIiwiZXJyIiwicmVzIiwiY3VzdG9tRmV0Y2hFcnJvckhhbmRsZXIiLCJyZXNwb25zZSIsImNvZGUiLCJzdGF0dXMiLCJtc2ciLCJ0IiwiT2JqZWN0IiwiZW50cmllcyIsImVycm9ycyIsImZvckVhY2giLCJfcmVmIiwia2V5IiwidmFsdWUiLCJOdW1iZXIiLCJpc05hTiIsInN0YXR1c1RleHQiLCJ0aXRsZSIsImh0bWwiLCJnZXRVc2VyT3JkZXJzIiwiX3JlZjIiLCJwYWdlIiwicGVyUGFnZSIsImdldFN0YXRlIiwiX3JlZjMiLCJhcGlCYXNlVXJsIiwid2lkZ2V0U3RhdGUiLCJhY2Nlc3NUb2tlbiIsImNhdGNoIiwiUHJvbWlzZSIsInJlamVjdCIsInBhcmFtcyIsImFjY2Vzc190b2tlbiIsIm9yZGVyIiwicmVsYXRpb25zIiwicGVyX3BhZ2UiLCJrZXlzIiwiZmlsdGVycyIsIm5hbWUiLCJpZCIsInRoZW4iLCJlIiwic2V0QWN0aXZlT3JkZXJJZCIsIm9yZGVySWQiLCJzZXRVc2VyIiwiZ2V0VXNlclRpY2tldHMiLCJfcmVmNCIsIl9yZWY1IiwidXNlclByb2ZpbGUiLCJmaWVsZHMiLCJleHBhbmQiLCJUSUNLRVRTIiwiZ2V0VGlja2V0c0J5T3JkZXIiLCJfcmVmNiIsIl9yZWY3IiwicmVzZW5kTm90aWZpY2F0aW9uIiwidGlja2V0IiwiX3JlZjgiLCJtZXNzYWdlIiwib3JkZXJfaWQiLCJyZWZ1bmRUaWNrZXQiLCJfcmVmOSIsIl9yZWYxMCIsInJlZnVuZEJ1bGtUaWNrZXRzIiwiX3JlZjExIiwidGlja2V0cyIsImxpbWl0IiwiYWxsUmVmdW5kVGlja2V0Q2FsbHMiLCJtYXAiLCJhbGwiLCJzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQiLCJyIiwiX3IkcmVzcG9uc2UiLCJyZWZ1bmRfcmVxdWVzdHMiLCJ1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkIiwidGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsImdldEV4dHJhUXVlc3Rpb25zIiwiYXR0ZW5kZWVJZCIsIl9yZWYxMiIsImVuZHBvaW50IiwiZ2V0VGlja2V0IiwidGlja2V0SWQiLCJfcmVmMTMiLCJmaW5hbGx5Iiwibm9ybWFsaXplVGlja2V0IiwiZW50aXR5Iiwibm9ybWFsaXplZEVudGl0eSIsIl9vYmplY3RTcHJlYWQiLCJhdHRlbmRlZV9jb21wYW55IiwiYXR0ZW5kZWVfY29tcGFueV9pZCIsInJlZnJlc2hQcm9maWxlIiwiZGF0YSIsInRpY2tldE93bmVyIiwiX3JlZjE0IiwiX3RpY2tldE93bmVyJG1hbmFnZXIiLCJ1cGRhdGVQcm9maWxlIiwiYXR0ZW5kZWVfZW1haWwiLCJhdHRlbmRlZV9maXJzdF9uYW1lIiwiYXR0ZW5kZWVfbGFzdF9uYW1lIiwiaGFzTWFuYWdlciIsIm1hbmFnZXIiLCJtYW5hZ2VyX2lkIiwiaXRzTWUiLCJwcm9maWxlQ2hhbmdlZCIsImZpcnN0X25hbWUiLCJsYXN0X25hbWUiLCJuZXdQcm9maWxlIiwic2F2ZVRpY2tldERldGFpbHMiLCJhbnN3ZXJzIiwiX3JlZjE1IiwiaWRUb2tlbiIsInZlcmlmaWVyIiwiand0IiwiZGVjb2RlIiwiY29uc29sZSIsImxvZyIsIm93bmVyIiwiYXNzaWduQXR0ZW5kZWUiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfcmVmMTYiLCJyZWFzc2lnblRpY2tldCIsIl9yZWYxNyIsImRlbGVnYXRlVGlja2V0IiwiX3JlZjE4Iiwic2F2ZUV4dHJhUXVlc3Rpb25zIiwiX3JlZjE5IiwiZ2V0VGlja2V0UERGIiwiX3JlZjIwIiwicXVlcnlTdHJpbmciLCJhcGlVcmwiLCJmZXRjaCIsInJlc3BvbnNlVHlwZSIsImhlYWRlcnMiLCJvayIsImJsb2IiLCJwZGYiLCJsaW5rIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwidXJsIiwid2luZG93IiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiaHJlZiIsImRvd25sb2FkIiwiZGlzcGF0Y2hFdmVudCIsIk1vdXNlRXZlbnQiLCJSZWFjdCIsIlByb3BUeXBlcyIsInVzZVRyYW5zbGF0aW9uIiwiQm94IiwidXNlRm9ybWlrIiwiRXh0cmFRdWVzdGlvbnNGaWVsZHMiLCJGb3JtRm9vdGVyIiwidXNlU2Nyb2xsVG9FcnJvciIsIlJlZ2lzdHJhdGlvbkRpc2NsYWltZXIiLCJidWlsZFZhbGlkYXRpb25TY2hlbWEiLCJwYXJzZUFuc3dlcnMiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiQXNzaWduRVFGb3JtIiwib25TdWJtaXQiLCJvbkNsb3NlIiwiZm9ybWlrIiwiaW5pdGlhbFZhbHVlcyIsInZhbGlkYXRpb25TY2hlbWEiLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnkiLCJ2YWx1ZXMiLCJyZWxldmFudEFuc3dlcnMiLCJlbmFibGVSZWluaXRpYWxpemUiLCJoYW5kbGVTdWJtaXQiLCJub1ZhbGlkYXRlIiwiY2hpbGRyZW4iLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50IiwiZGlzY2xhaW1lciIsImlzUmVxdWlyZWQiLCJzYXZlTGFiZWwiLCJjYW5jZWxMYWJlbCIsImRpc2FibGVkIiwiaXNTdWJtaXR0aW5nIiwicHJvcFR5cGVzIiwib2JqZWN0IiwiYXJyYXkiLCJmdW5jIiwiQ29udGVudENvcHlJY29uIiwiVG9vbHRpcCIsIk1JTExJU0VDX1RPX1NFQyIsInN0eWxlcyIsImRlZmF1bHRXaWR0aCIsIkNvcHlUZXh0IiwidGV4dCIsInRvb2x0aXBUZXh0IiwiaGlkZUNvcHkiLCJ0cnVuY2F0ZWQiLCJyZXZlcnNlZCIsIndpZHRoIiwidG9vbHRpcFRleHRUb1VzZSIsInRvb2x0aXAiLCJzZXRUb29sdGlwIiwidXNlU3RhdGUiLCJjbGFzc05hbWVzIiwiaGFuZGxlQ29weSIsIm5hdmlnYXRvciIsImNsaXBib2FyZCIsIndyaXRlVGV4dCIsInNldFRpbWVvdXQiLCJjbGFzc05hbWUiLCJ3cmFwcGVyIiwic3R5bGUiLCJjb3B5SWNvbiIsIm9uQ2xpY2siLCJzdHJpbmciLCJib29sIiwibnVtYmVyIiwiY3JlYXRlQ29udGV4dCIsImRlZmF1bHRDb250ZXh0VmFsdWUiLCJzZXRNZXNzYWdlIiwic2V0TWVzc2FnZUNhbGxiYWNrIiwiQ3VzdG9tRGlhbG9nQ29udGV4dCIsIkRpYWxvZyIsIkRpYWxvZ0NvbnRlbnQiLCJEaWFsb2dDb250ZW50VGV4dCIsIkRpYWxvZ1RpdGxlIiwiQ3VzdG9tRGlhbG9nIiwib3BlbiIsImJvZHkiLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsIl9faHRtbCIsIlRoZW1lUHJvdmlkZXIiLCJjcmVhdGVUaGVtZSIsImRhcmtDb2xvciIsInJvb3QiLCJkb2N1bWVudEVsZW1lbnQiLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsInRoZW1lIiwicGFsZXR0ZSIsInByaW1hcnkiLCJtYWluIiwic2Vjb25kYXJ5IiwidHlwb2dyYXBoeSIsImJvZHkxIiwiZm9udFNpemUiLCJoNSIsImZvbnRXZWlnaHQiLCJtYXJnaW5Cb3R0b20iLCJoNiIsImNvbXBvbmVudHMiLCJNdWlCdXR0b24iLCJzdHlsZU92ZXJyaWRlcyIsImxpbmVIZWlnaHQiLCJNdWlUYWIiLCJjb2xvciIsIk11aVRhYnMiLCJpbmRpY2F0b3IiLCJiYWNrZ3JvdW5kQ29sb3IiLCJDdXN0b21UaGVtZSIsIm5vZGUiLCJDaGVja2JveCIsIkZvcm1Db250cm9sIiwiRm9ybUNvbnRyb2xMYWJlbCIsIkZvcm1Hcm91cCIsIkZvcm1IZWxwZXJUZXh0IiwiRm9ybUxhYmVsIiwiZ2V0TGFiZWwiLCJ0b1NsdWciLCJDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIiwiX3F1ZXN0aW9uJHZhbHVlcyIsInF1ZXN0aW9uIiwicXVlc3Rpb25DbGFzc05hbWUiLCJpc0Rpc2FibGVkIiwib25DaGFuZ2UiLCJzZXRGaWVsZFZhbHVlIiwiZXJyb3IiLCJoZWxwZXJUZXh0IiwicmVzdCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsInF1ZXN0aW9uU2x1ZyIsInF1ZXN0aW9uTGFiZWwiLCJtYW5kYXRvcnkiLCJxdWVzdGlvbk1heFZhbHVlcyIsIm1heF9zZWxlY3RlZF92YWx1ZXMiLCJxdWVzdGlvbk9wdGlvbnMiLCJ2YWwiLCJsYWJlbCIsInRvU3RyaW5nIiwiaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlIiwiY2hlY2tlZCIsImN1cnJlbnRBbnMiLCJtYXhTZWxlY3Rpb25SZWFjaGVkIiwibmV3VmFsdWUiLCJ2IiwicmVxdWlyZWQiLCJmdWxsV2lkdGgiLCJtYXJnaW4iLCJvcCIsImNvbnRyb2wiLCJpbmNsdWRlcyIsImV2IiwidGFyZ2V0IiwiUmF3SFRNTCIsIkNoZWNrYm94UXVlc3Rpb25GaWVsZCIsIklucHV0TGFiZWwiLCJNZW51SXRlbSIsIlNlbGVjdCIsIkRyb3Bkb3duUXVlc3Rpb25GaWVsZCIsImxhYmVsSWQiLCJSYWRpbyIsIlJhZGlvR3JvdXAiLCJSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIiwiVGV4dEZpZWxkIiwiVGV4dFF1ZXN0aW9uRmllbGQiLCJRdWVzdGlvblR5cGVfQ2hlY2tib3giLCJRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0IiwiUXVlc3Rpb25UeXBlX0NvbWJvQm94IiwiUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QiLCJjaGVja1J1bGUiLCJydWxlIiwiYW5zd2VyX3ZhbHVlcyIsIkFycmF5IiwiaXNBcnJheSIsImFuc3dlcl92YWx1ZXNfb3BlcmF0b3IiLCJjaGVja1Zpc2liaWxpdHkiLCJydWxlUmVzdWx0IiwidmlzaWJpbGl0eSIsInZpc2liaWxpdHlfY29uZGl0aW9uIiwicXVlc3Rpb25JZCIsInRleHRMQyIsInRvTG93ZXJDYXNlIiwicmVwbGFjZSIsInEiLCJfcSRsYWJlbCIsImlzQW5zd2VyZWQiLCJhbnN3ZXIiLCJjaGVja0lmVmFsdWVNYXRjaCIsImNvbXBhcmVWYWwiLCJhbnN3ZXJBcnJheSIsInNvbWUiLCJnZXRUeXBlSW5pdGlhbFZhbHVlIiwidHlwZSIsImdldFR5cGVWYWx1ZSIsImFucyIsInNwbGl0IiwidHJhbnNmb3JtQW53ZXJzRm9ybWF0IiwiZGlzY2xhaW1lcl9hY2NlcHRlZCIsImV4dHJhX3F1ZXN0aW9ucyIsImZvcm1hdHRlZEVRIiwicXVlc3Rpb25faWQiLCJwYXJzZUludCIsInBvcCIsIlF1ZXN0aW9uVHlwZV9UZXh0IiwiUXVlc3Rpb25UeXBlX1RleHRBcmVhIiwiUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uIiwiZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudCIsInF1ZXN0aW9uVHlwZSIsIkZyYWdtZW50IiwicmVhZE9ubHkiLCJhbGxvd0VkaXQiLCJyZW5kZXJSdWxlIiwicmVuZGVyUXVlc3Rpb24iLCJzdWJfcXVlc3Rpb24iLCJfcSRzdWJfcXVlc3Rpb25fcnVsZXMiLCJRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwiZm9ybWlrUHJvcHMiLCJoYW5kbGVDaGFuZ2UiLCJvbkJsdXIiLCJoYW5kbGVCbHVyIiwidG91Y2hlZCIsIkJvb2xlYW4iLCJzdWJfcXVlc3Rpb25fcnVsZXMiLCJ1c2VTZWxlY3RvciIsInNoYWxsb3dFcXVhbCIsIkNhcmRIZWFkZXIiLCJJY29uQnV0dG9uIiwiQ29sbGFwc2UiLCJDYXJkQ29udGVudCIsIkV4cGFuZE1vcmVJY29uIiwiQXNzaWduZWRGaWx0ZXIiLCJvbkZpbHRlciIsImZpbHRlclZhbHVlcyIsInN0YXRlIiwiaXNFeHBhbmRlZCIsInNldElzRXhwYW5kZWQiLCJhc3NpZ25lZFZhbHVlcyIsImhhbmRsZUZpbHRlckNoYW5nZSIsIm5ld0ZpbHRlciIsInRpdGxlV3JhcHBlciIsImFjdGlvbiIsImRpc2FibGVSaXBwbGUiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2l0aW9uIiwiaW4iLCJ0aW1lb3V0IiwidW5tb3VudE9uRXhpdCIsInN4IiwicHkiLCJwYiIsImFzc2lnbmVkIiwidXNlRWZmZWN0IiwiQmFkZ2VGZWF0dXJlRmlsdGVyIiwiYmFkZ2VfZmVhdHVyZXNfdHlwZXMiLCJuZXdGaWx0ZXJzIiwiZiIsImJmIiwidXNlUmVmIiwiU3RhY2siLCJGaWx0ZXJMaXN0SWNvbiIsIkJhZGdlIiwiQnV0dG9uIiwiQ2FyZCIsIkRpdmlkZXIiLCJQYXBlciIsImNvbm5lY3QiLCJUaWNrZXRUeXBlRmlsdGVyIiwiU3RhdHVzRmlsdGVyIiwiRnJlZVBhaWRGaWx0ZXIiLCJQcm9tb0NvZGVGaWx0ZXIiLCJGaWx0ZXIiLCJvblJlc2V0Iiwic2hvd0ZpbHRlckxpc3QiLCJzZXRTaG93RmlsdGVyTGlzdCIsInNob3dEYXRlcGlja2VyIiwic2V0U2hvd0RhdGVwaWNrZXIiLCJmaWx0ZXJOdW1BY3RpdmUiLCJzZXRGaWx0ZXJOdW1BY3RpdmUiLCJmaWx0ZXJSZWYiLCJoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUiLCJldmVudCIsImN1cnJlbnQiLCJjb250YWlucyIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiTUFSR0lOX1JJR0hUX1dJVEhfQkFER0UiLCJBRERfRklMVEVSX05VTUJFUiIsImNhbGN1bGF0ZUFjdGl2ZUZpbHRlcnMiLCJjb3VudCIsInRyaW0iLCJ0b2dnbGUiLCJoYW5kbGVGaWx0ZXJSZXNldCIsImZpbHRlckNvbnRhaW5lciIsInJlZiIsImFsaWduSXRlbXMiLCJwdCIsImJhZGdlQ29udGVudCIsIm1yIiwiZmlsdGVySWNvbiIsImZpbHRlckxhYmVsIiwiZmlsdGVyTGlzdENvbnRhaW5lciIsImNvbnRhaW5lciIsImVsZXZhdGlvbiIsImZpbHRlckNoZWNrYm94Q29udGFpbmVyIiwidmFyaWFudCIsImNsZWFuQnV0dG9uIiwibWFwU3RhdGVUb1Byb3BzIiwicHJvbW9Db2RlIiwic2V0UHJvbW9Db2RlIiwiZGVib3VuY2VUaW1lciIsIkRFQk9VTkNFX1ZBTFVFIiwibmV3UHJvbW9Db2RlIiwiY2xlYXJUaW1lb3V0IiwicGxhY2Vob2xkZXIiLCJzdHlsZWQiLCJTZWFyY2hJY29uIiwiQ2xvc2VJY29uIiwiSW5wdXRCYXNlIiwiU2VhcmNoQ29udGFpbmVyIiwicG9zaXRpb24iLCJtYXJnaW5SaWdodCIsIm1hcmdpbkxlZnQiLCJkaXNwbGF5IiwiU2VhcmNoSWNvbldyYXBwZXIiLCJoZWlnaHQiLCJqdXN0aWZ5Q29udGVudCIsIlN0eWxlZElucHV0QmFzZSIsImJvcmRlckJvdHRvbSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiQ2xvc2VJY29uV3JhcHBlciIsInBhZGRpbmciLCJ0b3AiLCJyaWdodCIsImN1cnNvciIsInpJbmRleCIsIlNlYXJjaCIsIm9uU2VhcmNoIiwic2hvd0Nsb3NlIiwic2V0U2hvd0Nsb3NlIiwic2VhcmNoVmFsdWUiLCJzZXRTZWFyY2hWYWx1ZSIsIm9uS2V5RG93biIsIm5hdGl2ZUV2ZW50IiwicmVzZXRTZWFyY2giLCJpbnB1dFByb3BzIiwiSW1wb3J0RXhwb3J0SWNvbiIsIlNvcnQiLCJvblNvcnQiLCJzaG93U29ydCIsInNldFNob3dTb3J0Iiwic29ydFJlZiIsImhhbmRsZVNvcnRDbGlja091dHNpZGUiLCJzb3J0Q29udGFpbmVyIiwic29ydEljb24iLCJzb3J0TGFiZWwiLCJzb3J0TGlzdENvbnRhaW5lciIsInRpY2tldF90eXBlcyIsIkdyaWQiLCJGaWx0ZXJzIiwianVzdGlmeSIsIml0ZW0iLCJ4cyIsImdhcCIsImZpbHRlclNvcnRDb250YWluZXIiLCJmb290ZXIiLCJjYW5jZWxCdG4iLCJzaXplIiwic2F2ZUJ0biIsIkVycm9ySWNvbiIsIkVycm9yTGFiZWwiLCJkYXRhVGVzdElkIiwiZXJyb3JMYWJlbCIsIkJhY2tkcm9wIiwiQ2lyY3VsYXJQcm9ncmVzcyIsIkxvYWRlciIsImRyYXdlciIsInVzZURpc3BhdGNoIiwiSW5maW5pdGVTY3JvbGwiLCJPcmRlcnNMaXN0IiwiT05FX1BBR0VfTkVYVCIsImhhc01vcmUyRmV0Y2giLCJzaG91bGRGZXRjaERhdGEiLCJNeU9yZGVyc1RpY2tldHMiLCJtZW1iZXJPcmRlcnMiLCJvcmRlcnNfY3VycmVudF9wYWdlIiwib3JkZXJzX2xhc3RfcGFnZSIsIm9yZGVyc19wZXJfcGFnZSIsInRpY2tldF9wZXJfcGFnZSIsImZldGNoRGF0YSIsImN1cnJlbnRfcGFnZSIsIm15T3JkZXJzV3JhcHBlciIsImRhdGFMZW5ndGgiLCJuZXh0IiwiaGFzTW9yZSIsInNjcm9sbFRocmVzaG9sZCIsInNjcm9sbGFibGVUYXJnZXQiLCJub09yZGVyc0ZvdW5kIiwibm9PcmRlcnNJY29uV3JhcHBlciIsImNhbGN1bGF0ZU9yZGVyVG90YWxzIiwiZm9ybWF0Q3VycmVuY3kiLCJfRnJhZ21lbnQiLCJPcmRlclN1bW1hcnlUYWJsZSIsImRpc2NvdW50VG90YWwiLCJyZWZ1bmRUb3RhbCIsInRheGVzVG90YWwiLCJhbW91bnRUb3RhbCIsInRpY2tldFN1bW1hcnkiLCJodW5kcmVkIiwib3JkZXJTdW1tYXJ5VGFibGUiLCJ0aWNrZXRUb3RhbCIsInF0eSIsInRpY2tldF90eXBlIiwiY29zdCIsImFsaWduIiwiY3VycmVuY3kiLCJjcmVhdGVkIiwiZGlzY291bnRfYW1vdW50IiwidGF4ZXNfYW1vdW50Iiwic2hhcGUiLCJ1c2VOb3ciLCJ0aWNrZXRzUmVmdW5kYWJsZSIsIlJlZnVuZEVtYWlsU3VwcG9ydCIsInN1Ym1pdFJlcXVlc3QiLCJvblJlZnVuZENsaWNrIiwib25SZWZ1bmREZXRhaWxDbGljayIsIm9uRW1haWxTdXBwb3J0Q2xpY2siLCJub3ciLCJpc0luUmVmdW5kYWJsZVBlcmlvZCIsInJlZ2lzdHJhdGlvbl9hbGxvd2VkX3JlZnVuZF9yZXF1ZXN0X3RpbGxfZGF0ZSIsImF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0IiwiaXNSZWZ1bmRhYmxlIiwiaGFzUmVmdW5kUmVxdWVzdHMiLCJyb2xlIiwib3JkZXJTdW1tYXJ5QnV0dG9uIiwicmVmdW5kRGlzYWJsZWQiLCJhcnJheU9mIiwiT3JkZXJTdW1tYXJ5Iiwib3JkZXJTdW1tYXJ5V3JhcHBlciIsInB4Iiwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mbyIsIm1lbWJlclRpY2tldHMiLCJPcmRlckxpc3RUaWNrZXRzIiwiQXNzaWduVG9NZSIsInVzZXJUaWNrZXRzIiwidXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSIsInVzZXJfdGlja2V0c19sYXN0X3BhZ2UiLCJvcmRlclRpY2tldENvbnRhaW5lciIsImFzc2lnbmVkVG9NZVdyYXBwZXIiLCJ0aWNrZXRMaXN0Q29udGFpbmVyIiwiaXNSZWZ1bmRpbmciLCJpc1NlbGVjdGVkVG9SZWZ1bmQiLCJzZWxlY3RUb1JlZnVuZCIsImlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCIsIm5vVGlja2V0c0ZvdW5kIiwiVHlwb2dyYXBoeSIsIkFzc2lnbmVkVG8iLCJFeHRlcm5hbEFzc2lnbmVkVG8iLCJNYW5hZ2VGb3IiLCJBdHRlbmRlZVN0YXR1cyIsIl90aWNrZXQkb3duZXIiLCJfdGlja2V0JG93bmVyMiIsIl90aWNrZXQkb3duZXIzIiwiaXNVbmFzc2lnbmVkIiwiaXNfYWN0aXZlIiwiaXNEZWxlZ2F0ZWQiLCJ0aWNrZXRPd25lckVtYWlsIiwiX3RpY2tldCRvcmRlciIsIl90aWNrZXQkb3JkZXIyIiwiX3RpY2tldCRvd25lcjQiLCJfdGlja2V0JG93bmVyNSIsImFzc2lnbmVkQnlUZXh0Iiwib3duZXJfZmlyc3RfbmFtZSIsIm93bmVyX2xhc3RfbmFtZSIsIlBBR0lOQVRJT05fRElTUExBWV9DT1VOVCIsIk9yZGVyTGlzdEl0ZW0iLCJfb3JkZXIkbWVtYmVyVGlja2V0cyIsIl9vcmRlciRtZW1iZXJUaWNrZXRzMiIsIm9uUGFnaW5hdGVDbGljayIsInRpY2tldHNUb1JlZnVuZCIsIml0ZW1zVG9EaXNwbGF5Iiwic2V0SXRlbXNUb0Rpc3BsYXkiLCJzbGljZWRUaWNrZXRzIiwic2xpY2UiLCJvblZpZXdNb3JlIiwidGlja2V0c190b3RhbCIsIm9uVmlld0xlc3MiLCJmaW5kIiwidmlld01vcmVCdXR0b24iLCJUaWNrZXRTdGF0dXMiLCJnZXRTdW1taXRSZWFzc2lnbkRhdGUiLCJUaWNrZXREZXRhaWwiLCJ1c2VUaWNrZXREZXRhaWxzIiwiVGlja2V0QXNzaWduIiwibW9kYWxWaWV3cyIsImRldGFpbCIsInJlYXNzaWduIiwiYXNzaWduIiwiVGlja2V0Q1RBcyIsImlzSW5jb21wbGV0ZSIsImlzUmVhc3NpZ25hYmxlIiwib25PcGVuQ2xpY2siLCJhc3NpZ25UaWNrZXRCdXR0b24iLCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uIiwicmVhc3NpZ25CdXR0b24iLCJfdGlja2V0JHRpY2tldF90eXBlIiwiX3RpY2tldCRiYWRnZSIsImNhblJlYXNzaWduIiwibW9kYWxPcGVuIiwic2V0TW9kYWxPcGVuIiwicmVhc3NpZ25EYXRlIiwib25SZWFzc2lnbmFibGVQZXJpb2QiLCJoYW5kbGVDbG9zZU1vZGFsIiwiaGFuZGxlT3Blbk1vZGFsIiwidmlldyIsIm9yZGVyV3JhcHBlciIsInJlZnVuZE1vZGFsIiwiZGlzYWJsZWRSZWZ1bmQiLCJzZWxlY3RlZCIsImNoZWNrYm94IiwicGwiLCJ0aWNrZXRUaWNrZXRUeXBlIiwiYmFkZ2VGZWF0dXJlV3JhcHBlciIsInByIiwiYmFkZ2UiLCJmZWF0dXJlcyIsImJhZGdlRmVhdHVyZSIsInNyYyIsImltYWdlIiwiYWx0IiwidGlja2V0Tm8iLCJsZyIsIm1pbkhlaWdodCIsInRpY2tldEFjdGlvbkJ1dHRvbnMiLCJvd25lcklkIiwidG90YWxfcmVmdW5kZWRfYW1vdW50IiwiVGFicyIsIlRhYiIsIlJlZnVuZFJlcXVlc3RzTW9kYWwiLCJSZWZ1bmREZXRhaWxzIiwiVGFiUGFuZWwiLCJwcm9wcyIsImluZGV4IiwiaGlkZGVuIiwiT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUiLCJpc01vYmlsZSIsImRldGFpbHNSZXF1aXJlZCIsInNldFZhbHVlIiwiXyIsInNldFRpY2tldHNUb1JlZnVuZCIsInNldFN1Ym1pdFJlcXVlc3QiLCJyZWZ1bmREZXRhaWxzT3BlbiIsInNldFJlZnVuZERldGFpbHNPcGVuIiwidW5zZWxlY3RSZWZ1bmRUaWNrZXRzIiwiZmlsdGVyU2VsZWN0ZWQiLCJzZWxlY3RlZFRpY2tldCIsImNsb3NlU3VibWl0UmVxdWVzdCIsInJlc2V0QWxsUmVmdW5kU3RhdHVzZXMiLCJtb3JlRGV0YWlscyIsImJvcmRlckNvbG9yIiwidGFiQnV0dG9ucyIsIm1kIiwib25SZWZ1bmRTdWNjZXNzQ2xvc2UiLCJvbkNsb3NlU2xpZGVyIiwidXNlVGhlbWUiLCJ1c2VNZWRpYVF1ZXJ5IiwiZ2V0Rm9ybWF0dGVkRGF0ZSIsImJyZWFrcG9pbnRzIiwiZG93biIsImlzTW9iaWxlVmlld2FibGUiLCJzZXRNb2JpbGVWaWV3YWJsZSIsInRpY2tldHNfcGFnZV9jdXJyZW50Iiwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyIiwib3JkZXJUaWNrZXRJbmZvIiwiYmxhY2tCdXR0b24iLCJyb3dTcGFjaW5nIiwiY29sdW1uU3BhY2luZyIsInNtIiwiZGlzcGxheV9ub25lIiwiZmxleERpcmVjdGlvbiIsInVzZU1lbW8iLCJSaWdodERyYXdlciIsIlJlZnVuZFJlcXVlc3RlZFRpY2tldCIsImdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMiLCJyZXF1ZXN0ZWRUaWNrZXRzIiwiY2xvc2VTbGlkZXIiLCJyZWZ1bmREZXRhaWxzIiwidG9vbHRpcENsYXNzZXMiLCJJbmZvSWNvbiIsIm1vbWVudCIsIlJlZnVuZFN0YXR1cyIsIkdSSURfOCIsIkdSSURfMTIiLCJQQURESU5HXzIiLCJhcHByb3ZlZFJlZnVuZHMiLCJyZWZ1bmQiLCJyZWZ1bmRlZFRheGVzU3VtbWF0b3J5IiwicmVmdW5kZWRfdGF4ZXMiLCJydCIsInRheElkIiwidGF4IiwidG90YWxSZWZ1bmRlZFRheEFtb3VudCIsInJlZnVuZGVkX2Ftb3VudCIsIkh0bWxUb29sdGlwIiwiY2xhc3NlcyIsInBvcHBlciIsIm1heFdpZHRoIiwiYm9yZGVyIiwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyIiwicmVmdW5kRGV0YWlsIiwicmVmdW5kVGlja2V0QXR0ZW5kZWUiLCJhY3Rpb25fZGF0ZSIsImZvcm1hdCIsIkNoaXAiLCJnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciIsInN0YXR1c0NvbG9yIiwiYnV0dG9uUGlsbCIsIlN0eWxlZEVuZ2luZVByb3ZpZGVyIiwiQ2hlY2tDaXJjbGVJY29uIiwiU1RFUF9PTkUiLCJTVEVQX1RIUkVFIiwiU1RFUF9UV08iLCJzdGVwIiwic2V0U3RlcCIsImVycm9yTXNnIiwic2V0RXJyb3JNc2ciLCJyZWZ1bmRTdWNjZXNzIiwic2V0UmVmdW5kU3VjY2VzcyIsImNvbmZpcm1SZWZ1bmQiLCJnb0JhY2tUb1JlZnVuZCIsInJlZnVuZFRpY2tldHMiLCJyZWZ1bmRTdGVwT25lIiwic3VidGl0bGUiLCJ0aWNrZXRMaXN0IiwiYWN0aW9uQnV0dG9ucyIsImNhbmNlbEJ1dHRvbiIsImNvbnRpbnVlQnV0dG9uIiwicmVmdW5kU3RlcFR3byIsInJlZnVuZEVycm9yTXNnIiwiQ1RBQnV0dG9uV3JhcHBlciIsInJlZnVuZFN0ZXBUaHJlZSIsInJlZnVuZFN1Y2Nlc3NmdWwiLCJzdWNjZXNzTXNnIiwic3VjY2Vzc01zZzIiLCJyZW5kZXJTdGVwcyIsImluamVjdEZpcnN0IiwiRHJhd2VyIiwiQ2xvc2UiLCJhbmNob3IiLCJNb2RhbFByb3BzIiwia2VlcE1vdW50ZWQiLCJoZWFkZXIiLCJjbG9zZUJ0biIsImZsb2F0IiwiZ3V0dGVyQm90dG9tIiwib25lT2ZUeXBlIiwiZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSIsIlN1bW1pdEhlYWRlciIsIndpZGdldEhlYWRlciIsInN1bW1pdFRpdGxlRGF0ZSIsInl1cCIsIkRlbGVnYXRlRm9ybSIsImRlbGVnYXRlX2ZpcnN0X25hbWUiLCJkZWxlZ2F0ZV9sYXN0X25hbWUiLCJkZWxlZ2F0ZV9lbWFpbCIsInJlc2V0Rm9ybSIsImhhbmRsZUNhbmNlbCIsIkFzc2lnbkhlYWRlciIsImluUHJvZ3Jlc3MiLCJ1c2VyRW1haWwiLCJhc3NpZ25lZFRvWW91IiwiZ2V0U2Vjb25kYXJ5VGl0bGUiLCJnZXRIZWFkZXJOb3RlIiwicHVyY2hhc2VkQnlXcmFwcGVyIiwicHVyY2hhc2VkQnkiLCJvd25lcl9lbWFpbCIsIm9yZGVyTm8iLCJoZWFkZXJOb3RlIiwiUmVhc3NpZ25IZWFkZXIiLCJhbGxvd3NEZWxlZ2F0ZSIsIlJlYXNzaWduRm9ybSIsIm5ld19hdHRlbmRlZV9lbWFpbCIsInBlcnNvbmFsX21lc3NhZ2UiLCJtdWx0aWxpbmUiLCJtaW5Sb3dzIiwidXNlR2V0VGlja2V0Iiwic2F2ZU1lc3NhZ2UiLCJzZXRTYXZlTWVzc2FnZSIsImFzc2lnbk9wdGlvbiIsInNldEFzc2lnbk9wdGlvbiIsImFzc2lnbmF0aW9uSW5Qcm9ncmVzcyIsInNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyIsImlzQXNzaWduZWRUb01lIiwib25Bc3NpZ24iLCJvbkRlbGVnYXRlIiwib25DbG9zZUVRRm9ybSIsIm9uQ2xvc2VTYXZlTWVzc2FnZSIsIm9uU2F2ZUVRIiwiZGVzY3JpcHRpb24iLCJyZXNvbHZlIiwiSGVhZGVyIiwidGlja2V0UmVhc3NpZ25Db250YWluZXIiLCJhc3NpZ25PcHRpb25zV3JhcHBlciIsIm15IiwiQXV0b2NvbXBsZXRlIiwicXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMiLCJDb21wYW55RmllbGQiLCJzdW1taXRJZCIsImlucHV0VmFsdWUiLCJzZXRJbnB1dFZhbHVlIiwib3B0aW9ucyIsInNldE9wdGlvbnMiLCJzZXRGaWVsZFRvdWNoZWQiLCJyZXN1bHRzIiwibmV3T3B0aW9ucyIsImF1dG9Db21wbGV0ZSIsImZyZWVTb2xvIiwiaW5jbHVkZUlucHV0SW5MaXN0IiwiZmlsdGVyU2VsZWN0ZWRPcHRpb25zIiwiZ2V0T3B0aW9uTGFiZWwiLCJvcHRpb24iLCJ0bXBWYWx1ZSIsIm9uSW5wdXRDaGFuZ2UiLCJuZXdJbnB1dFZhbHVlIiwiZmlsdGVyT3B0aW9ucyIsImZpbHRlcmVkIiwiaXNFeGlzdGluZyIsInJlbmRlcklucHV0IiwicmVuZGVyT3B0aW9uIiwib3B0aW9uUHJvcHMiLCJUaWNrZXRPd25lckZpZWxkcyIsIlRpY2tldEZvcm0iLCJjYW5FZGl0IiwicmVkdWNlIiwiYWRkaXRpb25hbERldGFpbHMiLCJpbmZvTm90ZSIsIlFSQ29kZSIsIkZpbGVEb3dubG9hZE91dGxpbmVkIiwiRG93bmxvYWRJY29uIiwiRW1haWxPdXRsaW5lZCIsIkVtYWlsSWNvbiIsIlRXT19JVEVNIiwiX3RpY2tldCRvcmRlcjMiLCJzZW50Q29uZmlybWF0aW9uIiwic2V0U2VudENvbmZpcm1hdGlvbiIsImlzVXNlck9yZGVyT3duZXIiLCJvd25lcl9pZCIsImlzVXNlclRpY2tldE93bmVyIiwiY2FuRWRpdFRpY2tldERhdGEiLCJhbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zIiwiaXNDb21wbGV0ZSIsIm9uU2F2ZSIsImRvd25sb2FkVGlja2V0UGRmIiwib25TZW5kRW1haWwiLCJ0aWNrZXREZXRhaWxDb250YWluZXIiLCJxckNvZGUiLCJxcl9jb2RlIiwidmlld0JveCIsInFyTm90ZSIsImlzX3ZpcnR1YWwiLCJhY3Rpb25CdXR0b25zQ29udGFpbmVyIiwiZG93bmxvYWRCdG4iLCJzZW5kQnRuIiwic2VudCIsIm9yZGVyTnVtYmVyIiwiYXR0ZW5kZWVDb250YWluZXIiLCJhdHRlbmRlZUluZm9UaXRsZSIsIkNvbnRhaW5lciIsIl90aWNrZXQkcmVmdW5kX3JlcXVlcyIsImlzQWN0aXZlIiwicmVmdW5kUmVxdWVzdHMiLCJ0aWNrZXRTdGF0dXNDb250YWluZXIiLCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWQiLCJidXR0b25JbmNvbXBsZXRlIiwiYnV0dG9uVW5hc3NpZ25lZCIsImJ1dHRvbkNvbXBsZXRlIiwiYnV0dG9uQ2FuY2VsbGVkIiwiQXNzaWduZWRUb01lIiwiV2lkZ2V0VGFicyIsInRhYiIsInNldFRhYiIsImhhbmRsZVRhYkNoYW5nZSIsIm5ld1RhYiIsInRhYldyYXBwZXIiLCJXaWRnZXRXcmFwcGVyIiwibWVzc2FnZUNhbGxiYWNrIiwibG9hZGluZyIsImFwaUVycm9yIiwicmVzZXRBcGlFcnJvciIsImZpbHRlclZhbHVlIiwic29ydFZhbHVlIiwidGlja2V0c1RpdGxlVGV4dCIsIlByb3ZpZGVyIiwicnVuIiwiY3VycmVudFRpY2tldCIsInNtb290aFNjcm9sbFRvIiwidGFyZ2V0U2Nyb2xsVG9wIiwiZHVyYXRpb24iLCJzdGFydFNjcm9sbFRvcCIsInNjcm9sbFRvcCIsImRpc3RhbmNlIiwic3RhcnRUaW1lIiwiYW5pbWF0aW9uU3RlcCIsInRpbWVzdGFtcCIsImVsYXBzZWQiLCJwcm9ncmVzcyIsIk1hdGgiLCJtaW4iLCJlYXNlSW5PdXRRdWFkIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY29udGFpbmVySWQiLCJpc1ZhbGlkIiwiZXJyb3JBcnJheSIsImVycm9yQ291bnQiLCJlbGVtZW50c1NvcnRlZCIsInJlc3VsdCIsImVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZWxSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiYSIsImIiLCJnZXRFbGVtZW50QnlJZCIsImNvbnRhaW5lclJlY3QiLCJlbGVtT2ZmZXN0IiwiYW5pbWF0aW9uRHVyYXRpb24iLCJpc1RpY2tldFJlZnVuZGFibGUiLCJTVEFUVVNfQ09NUExFVEUiLCJTVEFUVVNfSU5DT01QTEVURSIsIlNUQVRVU19DQU5DRUxMRUQiLCJTVEFUVVNfVU5BU1NJR05FRCIsIl90aWNrZXQkcHJvbW9fY29kZSIsIl90aWNrZXQkdGlja2V0X3R5cGUyIiwiX3RpY2tldCRwcm9tb19jb2RlMiIsImdldFN0YXR1cyIsImFsbG93c190b19kZWxlZ2F0ZSIsInByb21vX2NvZGUiLCJhbGxvd3NfdG9fcmVhc3NpZ24iLCJpbml0UmVhY3RJMThuZXh0IiwiTGFuZ3VhZ2VEZXRlY3RvciIsImVuIiwiZXMiLCJ1c2UiLCJpbml0IiwiZmFsbGJhY2tMbmciLCJkZWJ1ZyIsInJlc291cmNlcyIsInRyYW5zbGF0aW9uIiwiaW50ZXJwb2xhdGlvbiIsImVzY2FwZVZhbHVlIiwiTE9HT1VUX1VTRVIiLCJTVEFSVF9MT0FESU5HIiwiU1RPUF9MT0FESU5HIiwiUkVTRVRfTE9BRElORyIsImhhc0xvYWRlZEFsbERhdGEiLCJERUZBVUxUX0ZJTFRFUl9TVEFURSIsIkRFRkFVTFRfU1RBVEUiLCJ3aWRnZXRMb2FkaW5nIiwiY3VycmVudF90YWIiLCJpc09yZGVyTG9hZGluZyIsIm9yZGVyc190b3RhbCIsInRpY2tldF9jdXJyZW50X3BhZ2UiLCJ0aWNrZXRfbGFzdF9wYWdlIiwidGlja2V0X3RvdGFsIiwidXNlcl90aWNrZXRzX3RvdGFsIiwiV2lkZ2V0UmVkdWNlciIsInRvdGFsIiwibGFzdF9wYWdlIiwiZm9ybWVyT3JkZXIiLCJvIiwiX2RhdGEkIiwidXBkYXRlZE9yZGVyIiwidGlja2V0c19wYWdlX2xhc3QiLCJtbyIsIl90aWNrZXRzUmVmdW5kUmVxdWVzdCIsInVwZGF0ZWRUaWNrZXRzIiwidHJyIiwidGlja2V0RGF0YSIsIm5ld09yZGVycyIsIm5ld1RpY2tldHMiLCJjb25maWd1cmVTdG9yZSIsInBlcnNpc3RTdG9yZSIsInBlcnNpc3RSZWR1Y2VyIiwiRkxVU0giLCJSRUhZRFJBVEUiLCJQQVVTRSIsIlBFUlNJU1QiLCJQVVJHRSIsIlJFR0lTVEVSIiwic3RvcmFnZSIsImNvbWJpbmVSZWR1Y2VycyIsImdldFN0b3JlIiwiY2xpZW50SWQiLCJsb2dpblVybCIsInJlZHVjZXJzIiwic3RvcmUiLCJyZWR1Y2VyIiwibWlkZGxld2FyZSIsImdldERlZmF1bHRNaWRkbGV3YXJlIiwidGh1bmsiLCJleHRyYUFyZ3VtZW50IiwiaW1tdXRhYmxlQ2hlY2siLCJzZXJpYWxpemFibGVDaGVjayIsImlnbm9yZWRBY3Rpb25zIiwidXNlSW5pdFN0b3JlIiwiY29uZmlnIiwicGVyc2lzdG9yIiwiaW5pdExvZ091dCIsImdldEFjY2Vzc1Rva2VuIiwiU2VudHJ5IiwiY2FwdHVyZUV4Y2VwdGlvbiIsIkxBU1RfSE9VUl9PRl8yNF9IT1VSIiwiTEFTVF9NSU5VVEVfT0ZfSE9VUiIsIk9ORV9EQVkiLCJTVEFUVVNfUEVORElORyIsIlNUQVRVU19FUlJPUiIsIlNUQVRVU19QUk9DRVNTSU5HIiwiU1RBVFVTX1JFRlVORF9QRU5ESU5HIiwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRCIsIlNUQVRVU19SRUZVTkRfUkVKRUNURUQiLCJTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMiLCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDIiwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyIsIkpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyIsIk9ORV9JVEVNIiwiRklWRV9JVEVNIiwiU0lYX0lURU0iLCJsb2NhbGUiLCJkZWZhdWx0T3B0aW9ucyIsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIsImZvcm1hdHRlciIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJkYXRldGltZSIsInRpbWVab25lIiwidHoiLCJ1bml4IiwiYW1vdW50IiwicHVyY2hhc2VUaWNrZXRUb3RhbCIsImN1cnJlbmN5T2JqZWN0IiwidGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlIiwidGlja2V0VHlwZSIsInR0IiwidGlja2V0X3R5cGVfaWQiLCJwdXJjaGFzZVRvdGFsIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZ2V0T3JkZXJUaWNrZXRzIiwiX29yZGVycyQiLCJvcmRlcnMiLCJnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMiLCJ0cyIsInNldEhvdXJzIiwiZGVmYXVsdEN1cnJlbnRUaW1lIiwicm91bmQiLCJEYXRlIiwiZ2V0Tm93IiwidGltZXJTdGF0ZSIsIm5vd1V0YyIsInJlcXVlc3RlZFBhZ2UiLCJjdXJyZW50UGFnZSIsImxhc3RQYWdlIiwiaXNTYW1lUGFnZSIsImlzTGFzdFBhZ2UiLCJjaGVja1N1bW1pdFBhc3QiLCJyZWFzc2lnbl9kYXRlIiwicmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSIsImVuZF9kYXRlIiwiY2hlY2tTdW1taXRTdGFydGVkIiwic3RhcnRfZGF0ZSIsImdldFN1bW1pdERheXNEaWZmIiwic3RhcnREYXkiLCJ0aW1lX3pvbmVfaWQiLCJlbmREYXkiLCJkYXlzIiwiZGlmZiIsImZvcm1hdFN0YXJ0RGF0ZSIsImZvcm1hdEVuZERhdGUiLCJ5ZWFyIiwibW9udGgiLCJzdGFydERhdGUiLCJlbmREYXRlIiwiZ2V0U3VtbWl0TG9jYXRpb24iLCJfc3VtbWl0JGxvY2F0aW9ucyIsImxvY2F0aW9uIiwibG9jYXRpb25zIiwibCIsImNsYXNzX25hbWUiLCJpc19tYWluIiwiY2l0eSIsImNvdW50cnkiLCJ1c2VTdW1taXREZXRhaWxzIiwiX3N1bW1pdCR0aW1lX3pvbmUiLCJfc3VtbWl0JHRpbWVfem9uZTIiLCJmb3JtYXR0ZWREYXRlIiwiZm9ybWF0dGVkUmVhc3NpZ25EYXRlIiwidGltZV96b25lIiwiZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSIsImlzUGFzdCIsImlzU3RhcnRlZCIsInN0YXR1c0RhdGEiLCJnZXRUaWNrZXRTdGF0dXNLZXkiLCJnZXRUaWNrZXRTdGF0dXNEYXRhIiwiaXNTdW1taXRQYXN0IiwiZ2V0VGlja2V0Um9sZSIsImZlYXR1cmUiLCJnZXRUaWNrZXRUeXBlIiwiZmluYWxfYW1vdW50IiwicnIiLCJnZXRSZWZ1bmRlZFJlcXVlc3RlZFRpY2tldHMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMyIiwiYWxsVGlja2V0cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM0IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNSIsImdldFJlZnVuZGVkUmVxdWVzdGVkU3RhdHVzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNiIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczciLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM4IiwiZ2V0VHlwZVZhbGlkYXRpb24iLCJzY2hlbWEiLCJvbmVPZiIsIm9mIiwiaW5jbHVkZUF0dGVuZGVlSW5mbyIsImluY2x1ZGVEaXNjbGFpbWVyIiwib25seVJlbGV2YW50Iiwic3ViUXVlc3Rpb25TbHVnIiwic3ViQW5zd2VyIiwibWF0Y2giLCJkaXNjbGFpbWVyTWFuZGF0b3J5IiwibGF6eSIsInR5cGVFcnJvciIsIl9xJHN1Yl9xdWVzdGlvbl9ydWxlczIiLCJzdWJRdWVzdGlvbiIsIm51bGxhYmxlIiwid2hlbiIsImlzIiwicXVlc3Rpb25BbnMiLCJzY2giLCJQZXJzaXN0R2F0ZSIsIk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0Iiwic3VwcG9ydEVtYWlsIiwiaGFuZGxlQmVmb3JlTGlmdCIsIlVSTFNlYXJjaFBhcmFtcyIsInNlYXJjaCIsImZsdXNoIiwiaGFzIiwib25CZWZvcmVMaWZ0Il0sInNvdXJjZVJvb3QiOiIifQ==
|
|
9575
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUM4WDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkI5WDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2dNOzs7Ozs7Ozs7Ozs7Ozs7OztBQ1JoTTtBQUNBO0FBQ0E7QUFDQTtBQUNnRTs7Ozs7Ozs7Ozs7Ozs7O0FDSmhFO0FBQ0E7QUFDbUM7Ozs7Ozs7Ozs7O0FDRm5DOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7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d2lkZ2V0L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvYWN0aW9ucy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Bc3NpZ25FUUZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ29weVRleHQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tRGlhbG9nL0NvbnRleHQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tRGlhbG9nL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbVRoZW1lLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9UZXh0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0Fzc2lnbmVkRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvQmFkZ2VGZWF0dXJlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvRnJlZVBhaWRGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Qcm9tb0NvZGVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9TZWFyY2guanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Tb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvU3RhdHVzRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvVGlja2V0VHlwZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Zvcm1Gb290ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL0Vycm9yTGFiZWwuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTG9hZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvT3JkZXJTdW1tYXJ5VGFibGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L1JlZnVuZEVtYWlsU3VwcG9ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9Bc3NpZ25lZFRvTWUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdEl0ZW0uanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFJlcXVlc3RlZFRpY2tldC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmRTdGF0dXMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmlnaHREcmF3ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvU3VtbWl0SGVhZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0RlbGVnYXRlRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvQXNzaWduSGVhZGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9SZWFzc2lnbkhlYWRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9SZWFzc2lnbkZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0NvbXBhbnlGaWVsZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0Rm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0VGFicy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VHZXRUaWNrZXQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZVNjcm9sbFRvRXJyb3IuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZVRpY2tldERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2kxOG4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3JlZHVjZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3N0b3JlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9hdXRoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9zdW1taXRVdGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvdGlja2V0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ29weVRleHQvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Zvcm1Gb290ZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xhYmVscy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3Qvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SaWdodERyYXdlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvU3VtbWl0SGVhZGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRUYWJzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0luZm9cIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1Rvb2x0aXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkByZWR1eGpzL3Rvb2xraXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAc2VudHJ5L3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiZm9ybWlrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaWR0b2tlbi12ZXJpZmllclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm1vbWVudC10aW1lem9uZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInAtbGltaXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwcm9wLXR5cGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXFyLWNvZGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1yZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0L2pzeC1ydW50aW1lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJ5dXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL215LW9yZGVycy10aWNrZXRzLXdpZGdldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiLCBbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgKCkgPT4ge1xucmV0dXJuICIsImltcG9ydCB7XG4gIGF1dGhFcnJvckhhbmRsZXIsXG4gIGNyZWF0ZUFjdGlvbixcbiAgZGVsZXRlUmVxdWVzdCxcbiAgZ2V0UmVxdWVzdCxcbiAgcHV0UmVxdWVzdCxcbiAgc3RhcnRMb2FkaW5nLFxuICBzdG9wTG9hZGluZ1xufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQgcExpbWl0IGZyb20gXCJwLWxpbWl0XCI7XG5pbXBvcnQgeyBnZXRJZFRva2VuIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0IHsgb2JqZWN0VG9RdWVyeVN0cmluZyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIjtcbmltcG9ydCBJZFRva2VuVmVyaWZpZXIgZnJvbSBcImlkdG9rZW4tdmVyaWZpZXJcIjtcbmltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBnZXRBY2Nlc3NUb2tlblNhZmVseSB9IGZyb20gXCIuL3V0aWxzL2F1dGhcIjtcbmltcG9ydCB7XG4gIERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gIEVSUk9SX0NPREVTLFxuICBGSUZUWV9QRVJfUEFHRSxcbiAgRklSU1RfUEFHRSxcbiAgUFJPTUlTRV9CQVRDSF9MSU1JVCxcbiAgVEFCU1xufSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IFJFU0VUX1NUQVRFID0gXCJSRVNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX0ZJTFRFUiA9IFwiUkVTRVRfRklMVEVSXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfQVBJX0VSUk9SID0gXCJSRVNFVF9BUElfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBTRVRfU1RBVEUgPSBcIlNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BUElfRVJST1IgPSBcIlNFVF9BUElfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBDSEFOR0VfRklMVEVSID0gXCJDSEFOR0VfRklMVEVSXCI7XG5leHBvcnQgY29uc3QgQ0hBTkdFX1NPUlQgPSBcIkNIQU5HRV9TT1JUXCI7XG5cbi8vIE9SREVSUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfVVNFUl9PUkRFUlMgPSBcIkdFVF9PUkRFUlNcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfT1JERVIgPSBcIlJFRlVORF9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BQ1RJVkVfT1JERVJfSUQgPSBcIlNFVF9BQ1RJVkVfT1JERVJfSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVVNFUl9PUkRFUlMgPSBcIkZJTFRFUl9VU0VSX09SREVSU1wiO1xuXG4vLyBUSUNLRVRTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9NWV9BU1NJR05FRF9USUNLRVRTID0gXCJHRVRfTVlfQVNTSUdORURfVElDS0VUU1wiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVQgPSBcIlVQREFURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9USUNLRVQgPSBcIlJFU0VUX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfVElDS0VUID0gXCJSRUNFSVZFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFTU9WRV9USUNLRVRfQVRURU5ERUUgPSBcIlJFTU9WRV9USUNLRVRfQVRURU5ERUVcIjtcbmV4cG9ydCBjb25zdCBBU1NJR05fVElDS0VUID0gXCJBU1NJR05fVElDS0VUXCI7XG5leHBvcnQgY29uc3QgREVMRUdBVEVfVElDS0VUID0gXCJERUxFR0FURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfVElDS0VUID0gXCJSRUZVTkRfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVTRU5EX05PVElGSUNBVElPTiA9IFwiUkVTRU5EX05PVElGSUNBVElPTlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyA9IFwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyA9IFwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiLFxuICBleHRyYVF1ZXN0aW9uczogXCJleHRyYV9xdWVzdGlvbnNcIlxufTtcbmV4cG9ydCBjb25zdCBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEID1cbiAgXCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEXCI7XG5cbi8vIFVTRVIgQ09OVFNcbmV4cG9ydCBjb25zdCBTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBVUERBVEVfSURQX1BST0ZJTEUgPSBcIlVQREFURV9JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9VU0VSID0gXCJTRVRfVVNFUlwiO1xuXG4vLyBTVU1NSVQgQ09OU1RTXG5leHBvcnQgY29uc3QgU0VUX1NVTU1JVCA9IFwiU0VUX1NVTU1JVFwiO1xuZXhwb3J0IGNvbnN0IEdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyA9IFwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5leHBvcnQgY29uc3QgQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1NcIjtcblxuZXhwb3J0IGNvbnN0IHJlc2V0VGlja2V0ID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9USUNLRVQpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRTdGF0ZSA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfU1RBVEUpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRGaWx0ZXIgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0ZJTFRFUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEVycm9yID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9BUElfRVJST1IpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0UmVkdWNlclN0YXRlID0gKHN1bW1pdCwgdXNlcikgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfU1RBVEUpKHsgc3VtbWl0LCB1c2VyIH0pKTtcbn07XG5cbi8vIEZJTFRFUiAvIFNPUlQgQ09OU1RBTlRTXG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9EQVRFID0gXCJGSUxURVJfVkFSX0RBVEVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUgPSBcIkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfVElDS0VUX1RZUEUgPSBcIkZJTFRFUl9WQVJfVElDS0VUX1RZUEVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCA9IFwiRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyA9IFwiRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX1BST01PQ09ERSA9IFwiRklMVEVSX1ZBUl9QUk9NT0NPREVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0ZSRUVfUEFJRCA9IFwiRklMVEVSX1ZBUl9GUkVFX1BBSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX09SREVSX05VTUJFUiA9IFwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJcIjtcblxuLy8gRklMVEVSIC8gU09SVCBBQ1RJT05TXG5leHBvcnQgY29uc3QgY2hhbmdlRmlsdGVyID0gKGZpbHRlcikgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihDSEFOR0VfRklMVEVSKShmaWx0ZXIpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGFuZ2VTb3J0ID0gKHNvcnQpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oQ0hBTkdFX1NPUlQpKHNvcnQpKTtcbn07XG5cbi8vIEZJTFRFUi9TT1JUIFBBUlNFXG5jb25zdCBwYXJzZUZpbHRlciA9IChmaWx0ZXJPYmosIGN1cnJlbnRUYWIpID0+IHtcbiAgY29uc3QgZmlsdGVyID0gW107XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9EQVRFKSB7XG4gICAgZmlsdGVyLnB1c2goYGNyZWF0ZWRbXSR7ZmlsdGVyT2JqLmxvd2VyfSYmJHtmaWx0ZXJPYmoudXBwZXJ9YCk7XG4gIH1cbiAgaWYgKFxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUgJiZcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLmxlbmd0aCA+IDBcbiAgKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSU1xuICAgICAgICA/IFwidGlja2V0c19iYWRnZV9mZWF0dXJlc19pZFwiXG4gICAgICAgIDogXCJiYWRnZV9mZWF0dXJlc19pZFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRS5qb2luKFwifHxcIil9YFxuICAgICk7XG4gIH1cbiAgaWYgKFxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9UWVBFICYmXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUubGVuZ3RoID4gMFxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJ0aWNrZXRzX3R5cGVfaWRcIiA6IFwidGlja2V0X3R5cGVfaWRcIjtcbiAgICBmaWx0ZXIucHVzaChcbiAgICAgIGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9UWVBFLmpvaW4oXCJ8fFwiKX1gXG4gICAgKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwidGlja2V0c19hc3NpZ25lZF90b1wiIDogXCJhc3NpZ25lZF90b1wiO1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRH1gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwidGlja2V0c19vd25lcl9zdGF0dXNcIiA6IFwib3duZXJfc3RhdHVzXCI7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9GUkVFX1BBSUQpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID0gY3VycmVudFRhYiA9PT0gVEFCUy5PUkRFUlMgPyBcImFtb3VudFwiIDogXCJmaW5hbF9hbW91bnRcIjtcbiAgICBmaWx0ZXIucHVzaChcbiAgICAgIGAke2ZpbHRlck5hbWV9JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9GUkVFX1BBSUQgPT09IFwiRnJlZVwiID8gXCI9PTBcIiA6IFwiPjBcIn1gXG4gICAgKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfUFJPTU9DT0RFKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwidGlja2V0c19wcm9tb19jb2RlXCIgOiBcInByb21vX2NvZGVcIjtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJOYW1lfT1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9QUk9NT0NPREV9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUikge1xuICAgIGZpbHRlci5wdXNoKGBudW1iZXI9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfWApO1xuICB9XG4gIHJldHVybiBmaWx0ZXI7XG59O1xuXG5jb25zdCBnZXRTb3J0RGlyZWN0aW9uID0gKGRpcmVjdGlvbikgPT4gKGRpcmVjdGlvbiA9PT0gXCJhc2NcIiA/IFwiK1wiIDogXCItXCIpO1xuXG4vLyBwYXlsb2FkOiB7IGh0dHBDb2RlLCB0aXRsZSwgaHRtbDogY29udGVudCwgdHlwZSB9XG5jb25zdCBlcnJvckhhbmRsZXJOb3RpZnkgPSAocGF5bG9hZCwgY2FsbGJhY2spID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX0FQSV9FUlJPUikocGF5bG9hZCkpO1xuICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7XG59O1xuXG5jb25zdCBjdXN0b21BdXRoRXJyb3JIYW5kbGVyID0gKGVyciwgcmVzKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goYXV0aEVycm9ySGFuZGxlcihlcnIsIHJlcywgZXJyb3JIYW5kbGVyTm90aWZ5KSk7XG59O1xuXG5jb25zdCBjdXN0b21GZXRjaEVycm9ySGFuZGxlciA9IChyZXNwb25zZSkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGNvbnN0IGNvZGUgPSByZXNwb25zZS5zdGF0dXM7XG4gIGxldCBtc2c7XG4gIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICBzd2l0Y2ggKGNvZGUpIHtcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDAzXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnVzZXJfbm90X2F1dGh6XCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQwMVwiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy5zZXNzaW9uX2V4cGlyZWRcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDEyXCJdOlxuICAgICAgbXNnID0gXCJcIjtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJlc3BvbnNlLmVycm9ycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4oa2V5KSkge1xuICAgICAgICAgIG1zZyA9IGAke21zZ30gJHtrZXl9OiBgO1xuICAgICAgICB9XG5cbiAgICAgICAgbXNnID0gYCR7bXNnfSAke3ZhbHVlfSA8YnI+YDtcbiAgICAgIH0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjUwMFwiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy5zZXJ2ZXJfZXJyb3JcIik7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgbXNnID0gcmVzcG9uc2Uuc3RhdHVzVGV4dDtcbiAgfVxuXG4gIGRpc3BhdGNoKGVycm9ySGFuZGxlck5vdGlmeSh7IHRpdGxlOiBpMThuLnQoXCJlcnJvcnMuZXJyb3JcIiksIGh0bWw6IG1zZyB9KSk7XG59O1xuXG4vLyBPUkRFUlMgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IGdldFVzZXJPcmRlcnMgPVxuICAoe1xuICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgIGZpbHRlciA9IHt9LFxuICAgIHNvcnQgPSB7fVxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBvcmRlcjogXCItaWRcIixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCJdLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmVcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG5cbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyLCBUQUJTLk9SREVSUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVVNFUl9PUkRFUlMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9tZWAsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyLFxuICAgICAgeyBmaWx0ZXIsIHNvcnQgfVxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzZXRBY3RpdmVPcmRlcklkID0gKG9yZGVySWQpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9BQ1RJVkVfT1JERVJfSUQpKG9yZGVySWQpKTtcblxuLy8gVVNFUiBBQ1RJT05TXG5leHBvcnQgY29uc3Qgc2V0VXNlciA9ICh1c2VyKSA9PiAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfVVNFUikodXNlcikpO1xuXG4vLyBUSUNLRVQgQUNUSU9OU1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlclRpY2tldHMgPVxuICAoe1xuICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgIGZpbHRlciA9IHt9LFxuICAgIHNvcnQgPSB7fVxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCwgdXNlciB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgeyB1c2VyUHJvZmlsZSB9ID0gdXNlcjtcbiAgICBpZiAoIXN1bW1pdCkgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcbiAgICBjb25zdCBmaWVsZHMgPSBbXG4gICAgICBcIm9yZGVyLmlkXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2ZpcnN0X25hbWVcIixcbiAgICAgIFwib3JkZXIub3duZXJfbGFzdF9uYW1lXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2VtYWlsXCIsXG4gICAgICBcIm93bmVyLmlkXCIsXG4gICAgICBcIm93bmVyLmVtYWlsXCIsXG4gICAgICBcIm93bmVyLmZpcnN0X25hbWVcIixcbiAgICAgIFwib3duZXIubGFzdF9uYW1lXCIsXG4gICAgICBcIm93bmVyLnN0YXR1c1wiXG4gICAgXTtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCIsIGBvcmRlcl9vd25lcl9pZDw+JHt1c2VyUHJvZmlsZS5pZH1gXSxcbiAgICAgIGV4cGFuZDogXCJvcmRlcixvd25lcix0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBmaWVsZHM6IGZpZWxkcy5qb2luKFwiLFwiKSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIFRBQlMuVElDS0VUUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9hbGwvdGlja2V0cy9tZWAsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRzQnlPcmRlciA9XG4gICh7XG4gICAgb3JkZXJJZCxcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIsXG4gICAgc29ydFxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogW10sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLHJlZnVuZF9yZXF1ZXN0cy5yZWZ1bmRlZF90YXhlcyxyZWZ1bmRfcmVxdWVzdHMucmVmdW5kZWRfdGF4ZXMudGF4LG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiK2lkXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIFRBQlMuVElDS0VUUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVIpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHNgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUikpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVzZW5kTm90aWZpY2F0aW9uID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgeyBtZXNzYWdlIH0gPSB0aWNrZXQ7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVTRU5EX05PVElGSUNBVElPTiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vYXR0ZW5kZWUvcmVpbnZpdGVgLFxuICAgICAgeyBtZXNzYWdlIH0sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRUaWNrZXQgPVxuICAoeyB0aWNrZXQgfSkgPT5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcInJlZnVuZF9yZXF1ZXN0cyx0aWNrZXRfdHlwZVwiLFxuICAgICAgZmllbGRzOiBcInJlZnVuZF9yZXF1ZXN0cy5zdGF0dXNcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVGVU5EX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcmVmdW5kYCxcbiAgICAgIHt9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRCdWxrVGlja2V0cyA9XG4gICh7IHRpY2tldHMgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoKSA9PiB7XG4gICAgY29uc3QgbGltaXQgPSBwTGltaXQoUFJPTUlTRV9CQVRDSF9MSU1JVCk7XG4gICAgY29uc3QgYWxsUmVmdW5kVGlja2V0Q2FsbHMgPSB0aWNrZXRzLm1hcCgodGlja2V0KSA9PlxuICAgICAgbGltaXQoKCkgPT4gZGlzcGF0Y2gocmVmdW5kVGlja2V0KHsgdGlja2V0IH0pKSlcbiAgICApO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChbLi4uYWxsUmVmdW5kVGlja2V0Q2FsbHNdKVxuICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICBjb25zdCBzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQgPSByZXNcbiAgICAgICAgICAuZmlsdGVyKChyKSA9PiByLnJlc3BvbnNlPy5yZWZ1bmRfcmVxdWVzdHM/Lmxlbmd0aClcbiAgICAgICAgICAubWFwKChyKSA9PiByLnJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3NmdWxseVJlcXVlc3RlZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IGUpO1xuICB9O1xuXG4vLyB1cGRhdGUgdGhlIHRpY2tldHMgdGhhdCBoYXZlIGJlZW4gc3VjZXNzZnVsbHkgcmVmdW5kZWRcbmV4cG9ydCBjb25zdCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkID1cbiAgKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpID0+IChkaXNwYXRjaCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEKSh0aWNrZXRzUmVmdW5kUmVxdWVzdGVkKVxuICAgICk7XG5cbi8vIFNVTU1JVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRFeHRyYVF1ZXN0aW9ucyA9XG4gIChhdHRlbmRlZUlkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgcGFnZTogMSxcbiAgICAgIHBlcl9wYWdlOiBGSUZUWV9QRVJfUEFHRSxcbiAgICAgIGV4cGFuZDogXCIqc3ViX3F1ZXN0aW9uX3J1bGVzLCpzdWJfcXVlc3Rpb24sKnZhbHVlc1wiLFxuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogXCJ0aWNrZXRzX2V4Y2x1ZGVfaW5hY3RpdmVzPT10cnVlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vYXR0ZW5kZWVzLyR7YXR0ZW5kZWVJZH0vYWxsb3dlZC1leHRyYS1xdWVzdGlvbnNgO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkudGhlbigoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldCA9XG4gICh0aWNrZXRJZCwgb3JkZXJJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9YDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VUX1RJQ0tFVCksXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9USUNLRVQpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5jb25zdCBub3JtYWxpemVUaWNrZXQgPSAoZW50aXR5KSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSB7IC4uLmVudGl0eSB9O1xuXG4gIGlmICghZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQpIHtcbiAgICBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnkgPSBlbnRpdHkuYXR0ZW5kZWVfY29tcGFueTtcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueV9pZCA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55LmlkO1xuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRFbnRpdHk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVmcmVzaFByb2ZpbGUgPVxuICAoZGF0YSwgY29tcGFueSwgdGlja2V0T3duZXIpID0+XG4gIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgdXBkYXRlUHJvZmlsZSB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgdXNlciB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgeyB1c2VyUHJvZmlsZSB9ID0gdXNlcjtcblxuICAgIC8vIGVtYWlsIHNob3VsZCBtYXRjaCAoIG9ubHkgdXBkYXRlIG15IHByb2ZpbGUgaXMgdGlja2V0IGJlbG9uZ3MgdG8gbWUhKVxuICAgIC8vIGFuZCBpZiB0aGUgdGlja2V0IGRvZXNuJ3QgaGF2ZSBhIG1hbmFnZXJcbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGNoYW5nZXMgaW4gdGhlIHRpY2tldCBkYXRhIHRvIHVwZGF0ZSB0aGUgcHJvZmlsZVxuICAgIGNvbnN0IHtcbiAgICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2NvbXBhbnlcbiAgICB9ID0gZGF0YTtcbiAgICBjb25zdCBoYXNNYW5hZ2VyID0gdGlja2V0T3duZXI/Lm1hbmFnZXI/LmlkIHx8IHRpY2tldE93bmVyPy5tYW5hZ2VyX2lkO1xuICAgIGNvbnN0IGl0c01lID0gdXNlclByb2ZpbGUuZW1haWwgPT09IGF0dGVuZGVlX2VtYWlsO1xuICAgIGNvbnN0IHByb2ZpbGVDaGFuZ2VkID1cbiAgICAgIGF0dGVuZGVlX2NvbXBhbnkubmFtZSAhPT0gY29tcGFueSB8fFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSAhPT0gdXNlclByb2ZpbGUuZmlyc3RfbmFtZSB8fFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5sYXN0X25hbWU7XG5cbiAgICBpZiAoaXRzTWUgJiYgIWhhc01hbmFnZXIgJiYgcHJvZmlsZUNoYW5nZWQpIHtcbiAgICAgIGNvbnN0IG5ld1Byb2ZpbGUgPSB7XG4gICAgICAgIGZpcnN0X25hbWU6IGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgICAgIGxhc3RfbmFtZTogYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgICBjb21wYW55OiBhdHRlbmRlZV9jb21wYW55Lm5hbWUgfHwgYXR0ZW5kZWVfY29tcGFueVxuICAgICAgfTtcblxuICAgICAgLy8gdGhpcyBpcyBhIGNhbGxiYWNrIG1ldGhvZCB0aGF0IHVwZGF0ZXMgdXNlclByb2ZpbGUgaW4gQVBJIGFuZCBldmVudC1zaXRlXG4gICAgICB1cGRhdGVQcm9maWxlKG5ld1Byb2ZpbGUpO1xuICAgIH1cbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNhdmVUaWNrZXREZXRhaWxzID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGVcIlxuICAgIH07XG5cbiAgICBjb25zdCBpZFRva2VuID0gZ2V0SWRUb2tlbigpO1xuICAgIGxldCBjb21wYW55ID0gXCJcIjtcbiAgICBpZiAoaWRUb2tlbikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdmVyaWZpZXIgPSBuZXcgSWRUb2tlblZlcmlmaWVyKCk7XG4gICAgICAgIGNvbnN0IGp3dCA9IHZlcmlmaWVyLmRlY29kZShpZFRva2VuKTtcbiAgICAgICAgY29tcGFueSA9IGp3dC5wYXlsb2FkLmNvbXBhbnk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSBub3JtYWxpemVUaWNrZXQoYW5zd2Vycyk7XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzL2FsbC90aWNrZXRzLyR7dGlja2V0LmlkfWAsXG4gICAgICBub3JtYWxpemVkRW50aXR5LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2gocmVmcmVzaFByb2ZpbGUoYW5zd2VycywgY29tcGFueSwgdGlja2V0Lm93bmVyKSk7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGFzc2lnbkF0dGVuZGVlID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBhdHRlbmRlZV9lbWFpbCwgbWVzc2FnZSA9IG51bGwpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcblxuICAgIGNvbnN0IHBheWxvYWQgPSB7IGF0dGVuZGVlX2VtYWlsIH07XG4gICAgaWYgKG1lc3NhZ2UpIHBheWxvYWQubWVzc2FnZSA9IG1lc3NhZ2U7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwib3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbix0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEFTU0lHTl9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vYXR0ZW5kZWVgLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWFzc2lnblRpY2tldCA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwsIG1lc3NhZ2UpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDogXCJvcmRlciwgb3duZXIsIG93bmVyLmV4dHJhX3F1ZXN0aW9ucywgb3JkZXIuc3VtbWl0XCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlbGV0ZVJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFTU9WRV9USUNLRVRfQVRURU5ERUUpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vYXR0ZW5kZWVgLFxuICAgICAge30sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS50aGVuKCgpID0+XG4gICAgICBkaXNwYXRjaChhc3NpZ25BdHRlbmRlZShvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwsIG1lc3NhZ2UpKVxuICAgICk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBkZWxlZ2F0ZVRpY2tldCA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lOiBmaXJzdE5hbWUsXG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWU6IGxhc3ROYW1lLFxuICAgICAgYXR0ZW5kZWVfZW1haWw6IGVtYWlsXG4gICAgfTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oREVMRUdBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9L2RlbGVnYXRlYCxcbiAgICAgIHBheWxvYWQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZUV4dHJhUXVlc3Rpb25zID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzL2FsbC90aWNrZXRzLyR7dGlja2V0LmlkfWAsXG4gICAgICBhbnN3ZXJzLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0UERGID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgfTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IG9iamVjdFRvUXVlcnlTdHJpbmcocGFyYW1zKTtcbiAgICBjb25zdCBhcGlVcmwgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcGRmPyR7cXVlcnlTdHJpbmd9YDtcblxuICAgIHJldHVybiBmZXRjaChhcGlVcmwsIHtcbiAgICAgIHJlc3BvbnNlVHlwZTogXCJCbG9iXCIsXG4gICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vcGRmXCIgfVxuICAgIH0pXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZS5ibG9iKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAudGhlbigocGRmKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKHBkZik7XG4gICAgICAgIGxpbmsuaHJlZiA9IHVybDtcbiAgICAgICAgbGluay5kb3dubG9hZCA9IFwidGlja2V0LnBkZlwiO1xuICAgICAgICBsaW5rLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoXCJjbGlja1wiKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGN1c3RvbUZldGNoRXJyb3JIYW5kbGVyKTtcbiAgfTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgRXh0cmFRdWVzdGlvbnNGaWVsZHMgZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzXCI7XG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vRm9ybUZvb3RlclwiO1xuaW1wb3J0IHVzZVNjcm9sbFRvRXJyb3IgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVNjcm9sbFRvRXJyb3JcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCB7IGJ1aWxkVmFsaWRhdGlvblNjaGVtYSwgcGFyc2VBbnN3ZXJzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmNvbnN0IEFzc2lnbkVRRm9ybSA9ICh7XG4gIHRpY2tldCxcbiAgc3VtbWl0LFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgb25TdWJtaXQsXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczogcGFyc2VBbnN3ZXJzKHRpY2tldC5vd25lciwgZXh0cmFRdWVzdGlvbnMsIHt9LCBmYWxzZSwgdHJ1ZSksXG4gICAgdmFsaWRhdGlvblNjaGVtYTogYnVpbGRWYWxpZGF0aW9uU2NoZW1hKFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICBmYWxzZSxcbiAgICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnlcbiAgICApLFxuICAgIG9uU3VibWl0OiAodmFsdWVzKSA9PiB7XG4gICAgICBjb25zdCByZWxldmFudEFuc3dlcnMgPSBwYXJzZUFuc3dlcnMoXG4gICAgICAgIHRpY2tldC5vd25lcixcbiAgICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgICByZXR1cm4gb25TdWJtaXQocmVsZXZhbnRBbnN3ZXJzKTtcbiAgICB9LFxuICAgIGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZVxuICB9KTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWssIFwicmVhc3NpZ25EcmF3ZXJcIik7XG5cbiAgaWYgKGV4dHJhUXVlc3Rpb25zPy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8Qm94PlxuICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHMgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfSBmb3JtaWs9e2Zvcm1pa30gLz5cbiAgICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5leHRyYV9xdWVzdGlvbnNfZm9ybS5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9hc3NpZ24uZXh0cmFfcXVlc3Rpb25zX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuQXNzaWduRVFGb3JtLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25FUUZvcm07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQ29udGVudENvcHlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCI7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBkZWZhdWx0V2lkdGggPSA5MDtcblxuY29uc3QgQ29weVRleHQgPSAoe1xuICB0ZXh0LFxuICB0b29sdGlwVGV4dCxcbiAgaGlkZUNvcHkgPSBmYWxzZSxcbiAgdHJ1bmNhdGVkID0gdHJ1ZSxcbiAgcmV2ZXJzZWQgPSBmYWxzZSxcbiAgd2lkdGggPSBkZWZhdWx0V2lkdGhcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB0b29sdGlwVGV4dFRvVXNlID0gdG9vbHRpcFRleHQgfHwgdChcImdlbmVyYWwuY29weV90b19jbGlwYm9hcmRcIik7XG4gIGNvbnN0IFt0b29sdGlwLCBzZXRUb29sdGlwXSA9IFJlYWN0LnVzZVN0YXRlKHRvb2x0aXBUZXh0VG9Vc2UpO1xuICBjb25zdCBjbGFzc05hbWVzID0gYCR7dHJ1bmNhdGVkICYmIHN0eWxlcy50cnVuY2F0ZWR9ICR7XG4gICAgcmV2ZXJzZWQgJiYgc3R5bGVzLnJldmVyc2VkXG4gIH1gO1xuXG4gIGNvbnN0IGhhbmRsZUNvcHkgPSAoKSA9PiB7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dCk7XG4gICAgc2V0VG9vbHRpcCh0KFwiZ2VuZXJhbC5jb3BpZWRcIikpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0VG9vbHRpcCh0b29sdGlwVGV4dFRvVXNlKTtcbiAgICB9LCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y2xhc3NOYW1lc30gc3R5bGU9e3sgd2lkdGggfX0+XG4gICAgICAgIHt0ZXh0fVxuICAgICAgPC9zcGFuPlxuICAgICAgeyFoaWRlQ29weSAmJiAoXG4gICAgICAgIDxUb29sdGlwIHRpdGxlPXt0b29sdGlwfT5cbiAgICAgICAgICA8Q29udGVudENvcHlJY29uXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb3B5SWNvbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNvcHl9XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cImNvcHktbnVtYmVyLWJ1dHRvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNvcHlUZXh0LnByb3BUeXBlcyA9IHtcbiAgdGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdG9vbHRpcFRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGhpZGVDb3B5OiBQcm9wVHlwZXMuYm9vbCxcbiAgdHJ1bmNhdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmV2ZXJzZWQ6IFByb3BUeXBlcy5ib29sLFxuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlclxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29weVRleHQ7XG4iLCJpbXBvcnQgeyBjcmVhdGVDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IGRlZmF1bHRDb250ZXh0VmFsdWUgPSB7XG4gIHNldE1lc3NhZ2U6ICgpID0+IHt9LFxuICBzZXRNZXNzYWdlQ2FsbGJhY2s6ICgpID0+IHt9XG59O1xuXG5jb25zdCBDdXN0b21EaWFsb2dDb250ZXh0ID0gY3JlYXRlQ29udGV4dChkZWZhdWx0Q29udGV4dFZhbHVlKTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tRGlhbG9nQ29udGV4dDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIERpYWxvZyxcbiAgRGlhbG9nQ29udGVudCxcbiAgRGlhbG9nQ29udGVudFRleHQsXG4gIERpYWxvZ1RpdGxlXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmNvbnN0IEN1c3RvbURpYWxvZyA9ICh7IG9wZW4sIG9uQ2xvc2UsIHRpdGxlLCBib2R5IH0pID0+IChcbiAgPERpYWxvZ1xuICAgIG9wZW49e29wZW59XG4gICAgb25DbG9zZT17b25DbG9zZX1cbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJhbGVydC1kaWFsb2ctdGl0bGVcIlxuICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICA+XG4gICAgPERpYWxvZ1RpdGxlIGlkPVwiYWxlcnQtZGlhbG9nLXRpdGxlXCI+e3RpdGxlfTwvRGlhbG9nVGl0bGU+XG4gICAgPERpYWxvZ0NvbnRlbnQ+XG4gICAgICA8RGlhbG9nQ29udGVudFRleHRcbiAgICAgICAgaWQ9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IGJvZHkgfX1cbiAgICAgIC8+XG4gICAgPC9EaWFsb2dDb250ZW50PlxuICA8L0RpYWxvZz5cbik7XG5cbkN1c3RvbURpYWxvZy5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGJvZHk6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbURpYWxvZztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxubGV0IGRhcmtDb2xvciA9IFwiXCI7XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAvLyBHZXQgdGhlIHJvb3QgZWxlbWVudFxuICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gIC8vIFJldHJpZXZlIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgQ1NTIHZhcmlhYmxlXG4gIGRhcmtDb2xvciA9IGdldENvbXB1dGVkU3R5bGUocm9vdCkuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICBcIi0tY29sb3JfYmFja2dyb3VuZF9kYXJrXCJcbiAgKTtcbn1cblxuY29uc3QgdGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHBhbGV0dGU6IHtcbiAgICBwcmltYXJ5OiB7XG4gICAgICBtYWluOiBkYXJrQ29sb3JcbiAgICB9LFxuICAgIHRleHQ6IHtcbiAgICAgIHByaW1hcnk6IFwiIzAwMDAwMERFXCIsXG4gICAgICBzZWNvbmRhcnk6IFwiIzAwMDAwMDk5XCJcbiAgICB9XG4gIH0sXG4gIHR5cG9ncmFwaHk6IHtcbiAgICBib2R5MToge1xuICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICB9LFxuICAgIGg1OiB7XG4gICAgICBmb250U2l6ZTogXCIxLjZlbVwiLFxuICAgICAgZm9udFdlaWdodDogNDAwLFxuICAgICAgXCImLk11aVR5cG9ncmFwaHktZ3V0dGVyQm90dG9tXCI6IHtcbiAgICAgICAgbWFyZ2luQm90dG9tOiBcIjIwcHhcIlxuICAgICAgfVxuICAgIH0sXG4gICAgaDY6IHtcbiAgICAgIGZvbnRTaXplOiBcIjEuNGVtXCIsXG4gICAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgICBcIiYuTXVpVHlwb2dyYXBoeS1ndXR0ZXJCb3R0b21cIjoge1xuICAgICAgICBtYXJnaW5Cb3R0b206IFwiMjBweFwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjb21wb25lbnRzOiB7XG4gICAgTXVpQnV0dG9uOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgZm9udFNpemU6IFwiMWVtXCIsXG4gICAgICAgICAgZm9udFdlaWdodDogNTAwLFxuICAgICAgICAgIGxpbmVIZWlnaHQ6IFwiMjJweFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE11aVRhYjoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgcm9vdDoge1xuICAgICAgICAgIGZvbnRTaXplOiBcIjE0cHhcIixcbiAgICAgICAgICBjb2xvcjogXCIjMDAwMDAwOTlcIixcbiAgICAgICAgICBcIiYuTXVpLXNlbGVjdGVkXCI6IHtcbiAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpVGFiczoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgaW5kaWNhdG9yOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcblxuY29uc3QgQ3VzdG9tVGhlbWUgPSAoeyBjaGlsZHJlbiB9KSA9PiAoXG4gIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+e2NoaWxkcmVufTwvVGhlbWVQcm92aWRlcj5cbik7XG5cbkN1c3RvbVRoZW1lLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbVRoZW1lO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWxcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuICBjb25zdCBxdWVzdGlvbk1heFZhbHVlcyA9IHF1ZXN0aW9uLm1heF9zZWxlY3RlZF92YWx1ZXM7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICBjb25zdCBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UgPSAoY2hlY2tlZCwgdmFsKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEFucyA9IHZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IG1heFNlbGVjdGlvblJlYWNoZWQgPVxuICAgICAgcXVlc3Rpb25NYXhWYWx1ZXMgIT09IDAgJiYgY3VycmVudEFucy5sZW5ndGggPT09IHF1ZXN0aW9uTWF4VmFsdWVzO1xuICAgIGxldCBuZXdWYWx1ZTtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBuZXdWYWx1ZSA9IG1heFNlbGVjdGlvblJlYWNoZWQgPyBjdXJyZW50QW5zIDogWy4uLmN1cnJlbnRBbnMsIHZhbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlID0gY3VycmVudEFucy5maWx0ZXIoKHYpID0+IHYgIT09IHZhbCk7XG4gICAgfVxuXG4gICAgc2V0RmllbGRWYWx1ZShxdWVzdGlvblNsdWcsIG5ld1ZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbD57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXt2YWx1ZT8uaW5jbHVkZXMob3AudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhldikgPT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlKGV2LnRhcmdldC5jaGVja2VkLCBvcC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvRm9ybUdyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYXJyYXksXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBtYXJnaW49XCJub3JtYWxcIiBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmJvb2wsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgSW5wdXRMYWJlbCwgTWVudUl0ZW0sIFNlbGVjdCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25RdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZFxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPElucHV0TGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0lucHV0TGFiZWw+XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBsYWJlbElkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgaWQ9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMjAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPE1lbnVJdGVtIGtleT17b3AubGFiZWx9IHZhbHVlPXtvcC52YWx1ZX0+XG4gICAgICAgICAgICAgIHtvcC5sYWJlbH1cbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU2VsZWN0PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuRHJvcGRvd25RdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsLFxuICBSYWRpbyxcbiAgUmFkaW9Hcm91cFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPFJhZGlvR3JvdXBcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICB2YWx1ZT17b3AudmFsdWV9XG4gICAgICAgICAgICAgIGNvbnRyb2w9ezxSYWRpbyAvPn1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFRleHRRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5UZXh0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGV4dFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1J1bGUgPSAodmFsdWUsIHJ1bGUpID0+IHtcbiAgY29uc3QgdmFsdWVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzO1xuXG4gIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBpZiAoIXZhbHVlLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGxldCByZXMgPSBydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCI7XG4gICAgdmFsdWVzLmZvckVhY2goKHYpID0+IHtcbiAgICAgIGlmIChydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCIpIHtcbiAgICAgICAgcmVzID0gcmVzICYmIHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3JcbiAgICAgICAgcmVzID0gcmVzIHx8IHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgcmV0dXJuIHZhbHVlcy5pbmNsdWRlcyh2YWx1ZT8udG9TdHJpbmcoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tWaXNpYmlsaXR5ID0gKHJ1bGUsIHJ1bGVSZXN1bHQsIGNoaWxkcmVuKSA9PiB7XG4gIGlmIChydWxlLnZpc2liaWxpdHkgPT09IFwiVmlzaWJsZVwiKSB7XG4gICAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgICAgaWYgKHJ1bGVSZXN1bHQpIHJldHVybiBjaGlsZHJlbjtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyBOb24gRXF1YWxcbiAgICBpZiAoIXJ1bGVSZXN1bHQpIHtcbiAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gbm90IHZpc2libGVcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgIGlmICghcnVsZVJlc3VsdCkgcmV0dXJuIGNoaWxkcmVuO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChydWxlUmVzdWx0KSByZXR1cm4gY2hpbGRyZW47XG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHRvU2x1ZyA9ICh0ZXh0LCBxdWVzdGlvbklkKSA9PiB7XG4gIGNvbnN0IHRleHRMQyA9IHRleHQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGAke3RleHRMQy5yZXBsYWNlKC9bXmEtekEtWjAtOV0rL2csIFwiX1wiKX1fJHtxdWVzdGlvbklkfWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGFiZWwgPSAocSkgPT5cbiAgLy8gcmVwbGFjZSBsaW5lIGJyZWFrcyBhbmQgcmVtb3ZlIG91dGVyIDxwPlxuICBxPy5sYWJlbD8ucmVwbGFjZSgvXFxuL2csIFwiIFwiKS5yZXBsYWNlKC88cD4oLiopPFxcL3A+L2dpLCBcIiQxXCIpO1xuXG5leHBvcnQgY29uc3QgaXNBbnN3ZXJlZCA9IChhbnN3ZXIpID0+IHtcbiAgaWYgKCFhbnN3ZXIpIHJldHVybiBmYWxzZTtcbiAgLy8gY2hlY2sgdHlwZVxuICBpZiAoQXJyYXkuaXNBcnJheShhbnN3ZXIpKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcInN0cmluZ1wiKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcIm51bWJlclwiKSByZXR1cm4gYW5zd2VyID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gYW5zd2VyO1xuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tJZlZhbHVlTWF0Y2ggPSAoYW5zd2VyLCBjb21wYXJlVmFsKSA9PiB7XG4gIGNvbnN0IGFuc3dlckFycmF5ID0gQXJyYXkuaXNBcnJheShhbnN3ZXIpID8gYW5zd2VyIDogW2Fuc3dlcl07XG5cbiAgcmV0dXJuIGFuc3dlckFycmF5LnNvbWUoKHYpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb21wYXJlVmFsKSkge1xuICAgICAgcmV0dXJuIGNvbXBhcmVWYWwuaW5jbHVkZXModik7XG4gICAgfVxuICAgIHJldHVybiB2ID09PSBjb21wYXJlVmFsO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlSW5pdGlhbFZhbHVlID0gKHEpID0+IHtcbiAgc3dpdGNoIChxLnR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcIlwiO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbHVlID0gKGFucywgdHlwZSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBhbnMgPT09IFwidHJ1ZVwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHJldHVybiBhbnM/LnNwbGl0KFwiLFwiKSB8fCBbXTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICByZXR1cm4gYW5zIHx8IFwiXCI7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIGFucyB8fCBudWxsO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gYW5zO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtQW53ZXJzRm9ybWF0ID0gKGFuc3dlcnMpID0+IHtcbiAgY29uc3Qge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICAuLi5leHRyYV9xdWVzdGlvbnNcbiAgfSA9IGFuc3dlcnM7XG5cbiAgY29uc3QgZm9ybWF0dGVkRVEgPSBPYmplY3QuZW50cmllcyhleHRyYV9xdWVzdGlvbnMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgIHF1ZXN0aW9uX2lkOiBwYXJzZUludChrZXkuc3BsaXQoXCJfXCIpLnBvcCgpLCAxMCksXG4gICAgYW5zd2VyOiB2YWx1ZS50b1N0cmluZygpXG4gIH0pKTtcblxuICByZXR1cm4ge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICBleHRyYV9xdWVzdGlvbnM6IGZvcm1hdHRlZEVRXG4gIH07XG59O1xuIiwiZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0ID0gXCJUZXh0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1RleHRBcmVhID0gXCJUZXh0QXJlYVwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja2JveCA9IFwiQ2hlY2tCb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0ID0gXCJSYWRpb0J1dHRvbkxpc3RcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ29tYm9Cb3ggPSBcIkNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCA9IFwiQ2hlY2tCb3hMaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCA9IFwiQ291bnRyeUNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uID0gXCJSYWRpb0J1dHRvblwiO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQge1xuICB0b1NsdWcsXG4gIGlzQW5zd2VyZWQsXG4gIGNoZWNrVmlzaWJpbGl0eSxcbiAgY2hlY2tSdWxlXG59IGZyb20gXCIuL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0LFxuICBRdWVzdGlvblR5cGVfVGV4dCxcbiAgUXVlc3Rpb25UeXBlX1RleHRBcmVhXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRleHRRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgRHJvcGRvd25RdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkXCI7XG5cbmNvbnN0IGdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSAocXVlc3Rpb25UeXBlKSA9PiB7XG4gIHN3aXRjaCAocXVlc3Rpb25UeXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dEFyZWE6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dDoge1xuICAgICAgcmV0dXJuIFRleHRRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OiB7XG4gICAgICByZXR1cm4gUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OiB7XG4gICAgICByZXR1cm4gQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OiB7XG4gICAgICByZXR1cm4gRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gUmVhY3QuRnJhZ21lbnQ7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyA9ICh7XG4gIGV4dHJhUXVlc3Rpb25zLFxuICBjbGFzc05hbWUgPSBcImV4dHJhUXVlc3Rpb25zXCIsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uXCIsXG4gIHJlYWRPbmx5ID0gZmFsc2UsXG4gIGFsbG93RWRpdCA9IHRydWUsXG4gIGZvcm1pa1xufSkgPT4ge1xuICBjb25zdCByZW5kZXJSdWxlID0gKHJ1bGUsIHF1ZXN0aW9uU2x1ZykgPT5cbiAgICBjaGVja1Zpc2liaWxpdHkoXG4gICAgICBydWxlLFxuICAgICAgY2hlY2tSdWxlKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSwgcnVsZSksXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHJlbmRlclF1ZXN0aW9uKHJ1bGUuc3ViX3F1ZXN0aW9uKVxuICAgICk7XG5cbiAgY29uc3QgcmVuZGVyUXVlc3Rpb24gPSAocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIC8vIGRpc2FibGUgZmllbGQgaWYgZWRpdCBpc24ndCBhbGxvd2VkIGFuZCB0aGUgcXVlc3Rpb25zIGlzIGFuc3dlcmVkXG4gICAgY29uc3QgaXNEaXNhYmxlZCA9XG4gICAgICAoIWFsbG93RWRpdCAmJiBpc0Fuc3dlcmVkKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSkpIHx8IHJlYWRPbmx5O1xuICAgIGNvbnN0IFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50KHEudHlwZSk7XG5cbiAgICBjb25zdCBmb3JtaWtQcm9wcyA9IHtcbiAgICAgIHZhbHVlOiBmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBvbkNoYW5nZTogZm9ybWlrLmhhbmRsZUNoYW5nZSxcbiAgICAgIG9uQmx1cjogZm9ybWlrLmhhbmRsZUJsdXIsXG4gICAgICBlcnJvcjpcbiAgICAgICAgZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBCb29sZWFuKGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSksXG4gICAgICBoZWxwZXJUZXh0OiBmb3JtaWsudG91Y2hlZFtxdWVzdGlvblNsdWddICYmIGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSxcbiAgICAgIHNldEZpZWxkVmFsdWU6IGZvcm1pay5zZXRGaWVsZFZhbHVlXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UXVlc3Rpb25GaWVsZENvbXBvbmVudFxuICAgICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgcXVlc3Rpb249e3F9XG4gICAgICAgIHF1ZXN0aW9uQ2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICAgICAgaXNEaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgey4uLmZvcm1pa1Byb3BzfVxuICAgICAgPlxuICAgICAgICB7cS5zdWJfcXVlc3Rpb25fcnVsZXM/Lm1hcCgocnVsZSkgPT4gcmVuZGVyUnVsZShydWxlLCBxdWVzdGlvblNsdWcpKX1cbiAgICAgIDwvUXVlc3Rpb25GaWVsZENvbXBvbmVudD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT57ZXh0cmFRdWVzdGlvbnMubWFwKHJlbmRlclF1ZXN0aW9uKX08L2Rpdj47XG59O1xuXG5FeHRyYVF1ZXN0aW9uc0ZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYWxsb3dFZGl0OiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFJhZGlvR3JvdXAsXG4gIFJhZGlvXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBBc3NpZ25lZEZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRDogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiTWVcIiwgbGFiZWw6IFwiTWVcIiB9LFxuICAgIHsgdmFsdWU6IFwiU29tZW9uZUVsc2VcIiwgbGFiZWw6IFwiU29tZW9uZSBFbHNlXCIgfSxcbiAgICB7IHZhbHVlOiBcIk5vYm9keVwiLCBsYWJlbDogXCJOb2JvZHlcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF06IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiQXNzaWduZWRcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuQXNzaWduZWRGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbmVkRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2hlY2tib3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEJhZGdlRmVhdHVyZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdDogeyBiYWRnZV9mZWF0dXJlc190eXBlcyB9LFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkU6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IGZpbHRlclZhbHVlcz8uaW5jbHVkZXModmFsdWUpXG4gICAgICA/IGZpbHRlclZhbHVlcy5maWx0ZXIoKGYpID0+IGYgIT09IHZhbHVlKVxuICAgICAgOiBbLi4uZmlsdGVyVmFsdWVzLCB2YWx1ZV07XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRV06IG5ld0ZpbHRlcnNcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiQmFkZ2UgRmVhdHVyZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7YmFkZ2VfZmVhdHVyZXNfdHlwZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPEJveCBzeD17eyBweTogMSB9fSBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2JmLm5hbWV9fWB9PlxuICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBoYW5kbGVGaWx0ZXJDaGFuZ2UoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtmaWx0ZXJWYWx1ZXMuaW5jbHVkZXMoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2RjNcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtiZi5uYW1lfVxuICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5CYWRnZUZlYXR1cmVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEJhZGdlRmVhdHVyZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IEZpbHRlckxpc3RJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIjtcbmltcG9ydCB7XG4gIEJhZGdlLFxuICBCb3gsXG4gIEJ1dHRvbixcbiAgQ2FyZCxcbiAgQ2FyZEhlYWRlcixcbiAgRGl2aWRlcixcbiAgUGFwZXJcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IGNvbm5lY3QgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBCYWRnZUZlYXR1cmVGaWx0ZXIgZnJvbSBcIi4vQmFkZ2VGZWF0dXJlRmlsdGVyXCI7XG5pbXBvcnQge1xuICBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUsXG4gIEZJTFRFUl9WQVJfRlJFRV9QQUlELFxuICBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyxcbiAgRklMVEVSX1ZBUl9QUk9NT0NPREUsXG4gIEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVELFxuICBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgVGlja2V0VHlwZUZpbHRlciBmcm9tIFwiLi9UaWNrZXRUeXBlRmlsdGVyXCI7XG5pbXBvcnQgQXNzaWduZWRGaWx0ZXIgZnJvbSBcIi4vQXNzaWduZWRGaWx0ZXJcIjtcbmltcG9ydCBTdGF0dXNGaWx0ZXIgZnJvbSBcIi4vU3RhdHVzRmlsdGVyXCI7XG5pbXBvcnQgRnJlZVBhaWRGaWx0ZXIgZnJvbSBcIi4vRnJlZVBhaWRGaWx0ZXJcIjtcbmltcG9ydCBQcm9tb0NvZGVGaWx0ZXIgZnJvbSBcIi4vUHJvbW9Db2RlRmlsdGVyXCI7XG5cbmNvbnN0IEZpbHRlciA9ICh7IG9uRmlsdGVyLCBvblJlc2V0LCBmaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93RmlsdGVyTGlzdCwgc2V0U2hvd0ZpbHRlckxpc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2hvd0RhdGVwaWNrZXIsIHNldFNob3dEYXRlcGlja2VyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2ZpbHRlck51bUFjdGl2ZSwgc2V0RmlsdGVyTnVtQWN0aXZlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBmaWx0ZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChmaWx0ZXJSZWYuY3VycmVudCAmJiAhZmlsdGVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgaWYgKHNob3dGaWx0ZXJMaXN0KSB7XG4gICAgICAgIHNldFNob3dGaWx0ZXJMaXN0KGZhbHNlKTtcbiAgICAgICAgc2V0U2hvd0RhdGVwaWNrZXIoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd0ZpbHRlckxpc3RdKTtcblxuICBjb25zdCBNQVJHSU5fUklHSFRfV0lUSF9CQURHRSA9IDE7XG4gIGNvbnN0IEFERF9GSUxURVJfTlVNQkVSID0gMTtcblxuICBjb25zdCBjYWxjdWxhdGVBY3RpdmVGaWx0ZXJzID0gKGZpbHRlcnMpID0+IHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpLmZvckVhY2goKFssIHZhbHVlXSkgPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGNvdW50ICs9IHZhbHVlLmxlbmd0aDtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlLnRyaW0oKSAhPT0gXCJcIikge1xuICAgICAgICBjb3VudCArPSBBRERfRklMVEVSX05VTUJFUjtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiICYmIHZhbHVlID4gMCkge1xuICAgICAgICBjb3VudCArPSBBRERfRklMVEVSX05VTUJFUjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY291bnQ7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRGaWx0ZXJOdW1BY3RpdmUoY2FsY3VsYXRlQWN0aXZlRmlsdGVycyhmaWx0ZXIpKTtcbiAgfSwgW2ZpbHRlcl0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93RmlsdGVyTGlzdCghc2hvd0ZpbHRlckxpc3QpO1xuICAgIHNldFNob3dEYXRlcGlja2VyKCFzaG93RGF0ZXBpY2tlcik7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyUmVzZXQgPSAoKSA9PiB7XG4gICAgc2V0RmlsdGVyTnVtQWN0aXZlKDApO1xuICAgIG9uUmVzZXQoKTtcbiAgICB0b2dnbGUoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ29udGFpbmVyfSByZWY9e2ZpbHRlclJlZn0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgICBvbkNsaWNrPXt0b2dnbGV9XG4gICAgICA+XG4gICAgICAgIDxCYWRnZVxuICAgICAgICAgIGJhZGdlQ29udGVudD17ZmlsdGVyTnVtQWN0aXZlfVxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgc3g9e3sgbXI6IGZpbHRlck51bUFjdGl2ZSA+IDAgPyBNQVJHSU5fUklHSFRfV0lUSF9CQURHRSA6IFwiXCIgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxGaWx0ZXJMaXN0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVySWNvbn0gLz5cbiAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyTGFiZWx9Pnt0KFwiZmlsdGVyLmZpbHRlclwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5maWx0ZXJMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9ICR7XG4gICAgICAgICAgc2hvd0ZpbHRlckxpc3QgPyBzdHlsZXMuc2hvd0ZpbHRlckxpc3QgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgPlxuICAgICAgICA8UGFwZXIgZWxldmF0aW9uPXs4fSBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJDaGVja2JveENvbnRhaW5lcn0+XG4gICAgICAgICAgPENhcmQgdmFyaWFudD1cIm91dGxpbmVkXCI+XG4gICAgICAgICAgICA8Q2FyZEhlYWRlclxuICAgICAgICAgICAgICB0aXRsZT1cIkZpbHRlcnNcIlxuICAgICAgICAgICAgICBhY3Rpb249e1xuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUZpbHRlclJlc2V0fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xlYW5CdXR0b259XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQ2xlYW5cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxEaXZpZGVyIC8+XG4gICAgICAgICAgICA8QmFkZ2VGZWF0dXJlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRV19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxBc3NpZ25lZEZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxTdGF0dXNGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VGlja2V0VHlwZUZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFByb21vQ29kZUZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX1BST01PQ09ERV19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxGcmVlUGFpZEZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX0ZSRUVfUEFJRF19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgIDwvUGFwZXI+XG4gICAgICA8L0JveD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuY29uc3QgbWFwU3RhdGVUb1Byb3BzID0gKHsgd2lkZ2V0U3RhdGUgfSkgPT4gKHtcbiAgc29ydDogd2lkZ2V0U3RhdGUuc29ydCxcbiAgZmlsdGVyOiB3aWRnZXRTdGF0ZS5maWx0ZXJcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywge30pKEZpbHRlcik7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfRlJFRV9QQUlEIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgRnJlZVBhaWRGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9GUkVFX1BBSUQ6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcblxuICBjb25zdCBhc3NpZ25lZFZhbHVlcyA9IFtcbiAgICB7IHZhbHVlOiBcIkZyZWVcIiwgbGFiZWw6IFwiRnJlZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJQYWlkXCIsIGxhYmVsOiBcIlBhaWRcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX0ZSRUVfUEFJRF06IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiRnJlZSAvIFBhaWRcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuRnJlZVBhaWRGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZyZWVQYWlkRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFRleHRGaWVsZFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfUFJPTU9DT0RFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgUHJvbW9Db2RlRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfUFJPTU9DT0RFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG4gIGNvbnN0IFtwcm9tb0NvZGUsIHNldFByb21vQ29kZV0gPSB1c2VTdGF0ZShmaWx0ZXJWYWx1ZXMgfHwgXCJcIik7XG5cbiAgY29uc3QgZGVib3VuY2VUaW1lciA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgREVCT1VOQ0VfVkFMVUUgPSA1MDA7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRQcm9tb0NvZGUoZmlsdGVyVmFsdWVzIHx8IFwiXCIpO1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMpO1xuICB9LCBbZmlsdGVyVmFsdWVzXSk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2KSA9PiB7XG4gICAgY29uc3QgbmV3UHJvbW9Db2RlID0gZXYudGFyZ2V0LnZhbHVlO1xuICAgIC8vIHVwZGF0ZSBsb2NhbCBzdGF0ZSBzbyB0aGUgaW5wdXQgcmVmbGVjdHMgY2hhbmdlc1xuICAgIHNldFByb21vQ29kZShuZXdQcm9tb0NvZGUpO1xuXG4gICAgLy8gcmVtb3ZlIGN1cnJlbnQgZGVib3VuY2VcbiAgICBpZiAoZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VUaW1lci5jdXJyZW50KTtcbiAgICB9XG5cbiAgICAvLyBkZWJvdW5jZSBzZXQgdG8gNTAwIG1zXG4gICAgZGVib3VuY2VUaW1lci5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBvbkZpbHRlcih7XG4gICAgICAgIFtGSUxURVJfVkFSX1BST01PQ09ERV06IG5ld1Byb21vQ29kZVxuICAgICAgfSk7XG4gICAgfSwgREVCT1VOQ0VfVkFMVUUpO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gcmVtb3ZlIGRlYm91bmNlIG9uIHJlbG9hZFxuICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiUHJvbW8gQ29kZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcHk6IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgcHJvbW8gY29kZVwiXG4gICAgICAgICAgICB2YWx1ZT17cHJvbW9Db2RlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX1cbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuUHJvbW9Db2RlRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBQcm9tb0NvZGVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IFNlYXJjaEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCI7XG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCI7XG5pbXBvcnQgSW5wdXRCYXNlIGZyb20gXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgU2VhcmNoQ29udGFpbmVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gIG1hcmdpblJpZ2h0OiBcIjBcIixcbiAgbWFyZ2luTGVmdDogXCIwXCIsXG4gIHdpZHRoOiBcIjEwMCVcIixcbiAgZGlzcGxheTogXCJibG9ja1wiXG59KSk7XG5jb25zdCBTZWFyY2hJY29uV3JhcHBlciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCJcbn0pKTtcbmNvbnN0IFN0eWxlZElucHV0QmFzZSA9IHN0eWxlZChJbnB1dEJhc2UpKCgpID0+ICh7XG4gIGNvbG9yOiBcImluaGVyaXRcIixcbiAgYm9yZGVyQm90dG9tOiBcIjFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuNDIpXCIsXG4gIHBhZGRpbmdMZWZ0OiBcIjI1cHhcIixcbiAgcGFkZGluZ1JpZ2h0OiBcIjI1cHhcIixcbiAgZm9udFNpemU6IFwiMWVtXCJcbn0pKTtcbmNvbnN0IENsb3NlSWNvbldyYXBwZXIgPSBzdHlsZWQoQ2xvc2VJY29uKSgoKSA9PiAoe1xuICBwYWRkaW5nOiBcIjJweFwiLFxuICBmb250U2l6ZTogXCIxLjVlbVwiLFxuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICB0b3A6IFwiMFwiLFxuICByaWdodDogXCIwXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgY3Vyc29yOiBcInBvaW50ZXJcIixcbiAgekluZGV4OiBcIjEwMDBcIlxufSkpO1xuXG5jb25zdCBTZWFyY2ggPSAoeyBvblNlYXJjaCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dDbG9zZSwgc2V0U2hvd0Nsb3NlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qgb25LZXlEb3duID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAga2V5LFxuICAgICAgbmF0aXZlRXZlbnQ6IHtcbiAgICAgICAgdGFyZ2V0OiB7IHZhbHVlIH1cbiAgICAgIH1cbiAgICB9ID0gZXZlbnQ7XG4gICAgaWYgKGtleSA9PT0gXCJFbnRlclwiKSB7XG4gICAgICBvblNlYXJjaCh7XG4gICAgICAgIFtGSUxURVJfVkFSX09SREVSX05VTUJFUl06IHZhbHVlXG4gICAgICB9KTtcbiAgICAgIHNldFNob3dDbG9zZSh0cnVlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHJlc2V0U2VhcmNoID0gKCkgPT4ge1xuICAgIHNldFNlYXJjaFZhbHVlKFwiXCIpO1xuICAgIG9uU2VhcmNoKHtcbiAgICAgIFtGSUxURVJfVkFSX09SREVSX05VTUJFUl06IFwiXCJcbiAgICB9KTtcbiAgICBzZXRTaG93Q2xvc2UodHJ1ZSk7XG4gICAgc2V0U2hvd0Nsb3NlKGZhbHNlKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPFNlYXJjaENvbnRhaW5lcj5cbiAgICAgICAge3Nob3dDbG9zZSAmJiAoXG4gICAgICAgICAgPENsb3NlSWNvbldyYXBwZXIgb25DbGljaz17cmVzZXRTZWFyY2h9PlxuICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgIDwvQ2xvc2VJY29uV3JhcHBlcj5cbiAgICAgICAgKX1cbiAgICAgICAgPFNlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICAgIDxTZWFyY2hJY29uIC8+XG4gICAgICAgIDwvU2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgIDxTdHlsZWRJbnB1dEJhc2VcbiAgICAgICAgICBwbGFjZWhvbGRlcj17dChcIm9yZGVyX3NlYXJjaC5vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgaW5wdXRQcm9wcz17eyBcImFyaWEtbGFiZWxcIjogXCJzZWFyY2hcIiB9fVxuICAgICAgICAgIHZhbHVlPXtzZWFyY2hWYWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFNlYXJjaFZhbHVlKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICBvbktleURvd249e29uS2V5RG93bn1cbiAgICAgICAgLz5cbiAgICAgIDwvU2VhcmNoQ29udGFpbmVyPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuU2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZWFyY2g7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBQYXBlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgSW1wb3J0RXhwb3J0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgU29ydCA9ICh7IG9uU29ydCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dTb3J0LCBzZXRTaG93U29ydF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHNvcnRSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZVNvcnRDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoc29ydFJlZi5jdXJyZW50ICYmICFzb3J0UmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgc2V0U2hvd1NvcnQoZmFsc2UpO1xuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93U29ydF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93U29ydCghc2hvd1NvcnQpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuc29ydENvbnRhaW5lcn0gb25DbGljaz17dG9nZ2xlfT5cbiAgICAgIDxTdGFja1xuICAgICAgICByZWY9e3NvcnRSZWZ9XG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgID5cbiAgICAgICAgPEltcG9ydEV4cG9ydEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRJY29ufSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0TGFiZWx9Pnt0KFwic29ydC5zb3J0XCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICB7c2hvd1NvcnQgJiYgKFxuICAgICAgICA8UGFwZXJcbiAgICAgICAgICBlbGV2YXRpb249ezh9XG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuc29ydExpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn1gfVxuICAgICAgICA+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNvcnQoeyBkaXJlY3Rpb246IFwiZGVzY1wiLCBuYW1lOiBcImNyZWF0ZWRcIiB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInNvcnQubmV3X2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Tb3J0KHsgZGlyZWN0aW9uOiBcImFzY1wiLCBuYW1lOiBcImNyZWF0ZWRcIiB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInNvcnQub2xkX2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L1BhcGVyPlxuICAgICAgKX1cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNvcnQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgU3RhdHVzRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG5cbiAgY29uc3QgYXNzaWduZWRWYWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogXCJJbmNvbXBsZXRlXCIsIGxhYmVsOiBcIkluY29tcGxldGVcIiB9LFxuICAgIHsgdmFsdWU6IFwiQ29tcGxldGVcIiwgbGFiZWw6IFwiQ29tcGxldGVcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX09XTkVSX1NUQVRVU106IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiU3RhdHVzXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblN0YXR1c0ZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3RhdHVzRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2hlY2tib3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfVElDS0VUX1RZUEUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBUaWNrZXRUeXBlRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgc3VtbWl0OiB7IHRpY2tldF90eXBlcyB9LFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9ICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBmaWx0ZXJWYWx1ZXM/LmluY2x1ZGVzKHZhbHVlKVxuICAgICAgPyBmaWx0ZXJWYWx1ZXMuZmlsdGVyKChmKSA9PiBmICE9PSB2YWx1ZSlcbiAgICAgIDogWy4uLmZpbHRlclZhbHVlcywgdmFsdWVdO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXTogbmV3RmlsdGVyc1xuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SXNFeHBhbmRlZCghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuICB9LCBbZmlsdGVyVmFsdWVzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJUaWNrZXQgVHlwZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7dGlja2V0X3R5cGVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxCb3ggc3g9e3sgcHk6IDEgfX0ga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHtiZi5uYW1lfX1gfT5cbiAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gaGFuZGxlRmlsdGVyQ2hhbmdlKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZmlsdGVyVmFsdWVzLmluY2x1ZGVzKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCIjMjE5NkYzXCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsYWJlbD17YmYubmFtZX1cbiAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0VHlwZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0VHlwZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwiLi9GaWx0ZXJcIjtcbmltcG9ydCBTb3J0IGZyb20gXCIuL1NvcnRcIjtcbmltcG9ydCBTZWFyY2ggZnJvbSBcIi4vU2VhcmNoXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEZpbHRlcnMgPSAoeyBvbkZpbHRlciwgb25Tb3J0LCBvblNlYXJjaCwgb25SZXNldCB9KSA9PiAoXG4gIDxHcmlkIGNvbnRhaW5lciBqdXN0aWZ5PVwiZmxleC1lbmRcIiBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgPEdyaWRcbiAgICAgIGl0ZW1cbiAgICAgIHhzPXs2fVxuICAgICAgY29udGFpbmVyXG4gICAgICBwYWRkaW5nPXsxfVxuICAgICAgZ2FwPXsyfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyU29ydENvbnRhaW5lcn1cbiAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgID5cbiAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgIDxGaWx0ZXIgb25GaWx0ZXI9e29uRmlsdGVyfSBvblJlc2V0PXtvblJlc2V0fSAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgPFNvcnQgb25Tb3J0PXtvblNvcnR9IC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICAgIDxHcmlkIGl0ZW0geHM9ezZ9IGNvbnRhaW5lciBqdXN0aWZ5Q29udGVudD1cImZsZXgtZW5kXCI+XG4gICAgICA8U2VhcmNoIG9uU2VhcmNoPXtvblNlYXJjaH0gLz5cbiAgICA8L0dyaWQ+XG4gIDwvR3JpZD5cbik7XG5cbkZpbHRlcnMucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU29ydDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlcnM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgRm9ybUZvb3RlciA9ICh7IHNhdmVMYWJlbCwgY2FuY2VsTGFiZWwsIG9uQ2xvc2UsIGRpc2FibGVkIH0pID0+IChcbiAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5mb290ZXJ9PlxuICAgIDxCdXR0b25cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ0bn1cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge2NhbmNlbExhYmVsfVxuICAgIDwvQnV0dG9uPlxuICAgIDxCdXR0b25cbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuc2F2ZUJ0bn1cbiAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge3NhdmVMYWJlbH1cbiAgICA8L0J1dHRvbj5cbiAgPC9Cb3g+XG4pO1xuXG5Gb3JtRm9vdGVyLnByb3BUeXBlcyA9IHtcbiAgc2F2ZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjYW5jZWxMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRm9ybUZvb3RlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBFcnJvckljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRXJyb3JMYWJlbCh7IG1lc3NhZ2UsIGNvbG9yLCBjbGFzc05hbWVzLCBkYXRhVGVzdElkIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3BhblxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZXJyb3JMYWJlbH0gJHtjbGFzc05hbWVzICYmIGNsYXNzTmFtZXN9YH1cbiAgICAgIHN0eWxlPXt7IGNvbG9yIH19XG4gICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZH1cbiAgICA+XG4gICAgICA8RXJyb3JJY29uIHN4PXt7IGNvbG9yIH19IC8+XG4gICAgICB7bWVzc2FnZX1cbiAgICA8L3NwYW4+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVycm9yTGFiZWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCYWNrZHJvcCwgQ2lyY3VsYXJQcm9ncmVzcyB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmNvbnN0IExvYWRlciA9ICh7IG9wZW4gfSkgPT4gKFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICA8QmFja2Ryb3Agb3Blbj17b3Blbn0gc3g9eyh0aGVtZSkgPT4gKHsgekluZGV4OiB0aGVtZS56SW5kZXguZHJhd2VyICsgMSB9KX0+XG4gICAgPENpcmN1bGFyUHJvZ3Jlc3MgY29sb3I9XCJpbmhlcml0XCIgLz5cbiAgPC9CYWNrZHJvcD5cbik7XG5cbkxvYWRlci5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBMb2FkZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IEluZmluaXRlU2Nyb2xsIGZyb20gXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCI7XG5pbXBvcnQgT3JkZXJzTGlzdCBmcm9tIFwiLi4vT3JkZXJzTGlzdFwiO1xuaW1wb3J0IHsgZ2V0VGlja2V0c0J5T3JkZXIsIGdldFVzZXJPcmRlcnMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCwgRklSU1RfUEFHRSB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCB7IGhhc01vcmUyRmV0Y2gsIHNob3VsZEZldGNoRGF0YSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE15T3JkZXJzVGlja2V0cyA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQsXG4gICAgbWVtYmVyT3JkZXJzLFxuICAgIG9yZGVyc19jdXJyZW50X3BhZ2UsXG4gICAgb3JkZXJzX2xhc3RfcGFnZSxcbiAgICBvcmRlcnNfcGVyX3BhZ2UsXG4gICAgdGlja2V0X3Blcl9wYWdlLFxuICAgIGZpbHRlcixcbiAgICBzb3J0XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IGZldGNoRGF0YSA9IGFzeW5jIChwYWdlKSA9PiB7XG4gICAgaWYgKHNob3VsZEZldGNoRGF0YShwYWdlLCBvcmRlcnNfY3VycmVudF9wYWdlLCBvcmRlcnNfbGFzdF9wYWdlKSlcbiAgICAgIGRpc3BhdGNoKFxuICAgICAgICBnZXRVc2VyT3JkZXJzKHtcbiAgICAgICAgICBwYWdlLFxuICAgICAgICAgIHBlclBhZ2U6IG9yZGVyc19wZXJfcGFnZSxcbiAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgc29ydFxuICAgICAgICB9KVxuICAgICAgKS50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgICAgZGF0YS5mb3JFYWNoKChvcmRlcikgPT4ge1xuICAgICAgICAgIGRpc3BhdGNoKFxuICAgICAgICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgICAgICAgY3VycmVudF9wYWdlOiBGSVJTVF9QQUdFLFxuICAgICAgICAgICAgICBwZXJQYWdlOiB0aWNrZXRfcGVyX3BhZ2UsXG4gICAgICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICAgICAgc29ydFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZmV0Y2hEYXRhKEZJUlNUX1BBR0UpO1xuICB9LCBbZmlsdGVyLCBzb3J0XSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGlkPVwiaW5maW5pdGVXcmFwcGVyXCIgY2xhc3NOYW1lPXtzdHlsZXMubXlPcmRlcnNXcmFwcGVyfT5cbiAgICAgIHtcIiBcIn1cbiAgICAgIHttZW1iZXJPcmRlcnM/Lmxlbmd0aCA/IChcbiAgICAgICAgPEluZmluaXRlU2Nyb2xsXG4gICAgICAgICAgZGF0YUxlbmd0aD17bWVtYmVyT3JkZXJzPy5sZW5ndGh9XG4gICAgICAgICAgbmV4dD17KCkgPT4gZmV0Y2hEYXRhKG9yZGVyc19jdXJyZW50X3BhZ2UgKyBPTkVfUEFHRV9ORVhUKX1cbiAgICAgICAgICBoYXNNb3JlPXtoYXNNb3JlMkZldGNoKG9yZGVyc19jdXJyZW50X3BhZ2UsIG9yZGVyc19sYXN0X3BhZ2UpfVxuICAgICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgICAgPlxuICAgICAgICAgIHttZW1iZXJPcmRlcnM/Lm1hcCgob3JkZXIpID0+IChcbiAgICAgICAgICAgIDxPcmRlcnNMaXN0XG4gICAgICAgICAgICAgIGtleT17b3JkZXIubnVtYmVyICsgb3JkZXIuaWR9XG4gICAgICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5ub09yZGVyc0ZvdW5kfT5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm5vT3JkZXJzSWNvbldyYXBwZXJ9PlxuICAgICAgICAgICAgPFNlYXJjaEljb24gc3g9e3sgZm9udFNpemU6IDQ0LCBjb2xvcjogXCIjMDAwMDAwOEZcIiB9fSAvPlxuICAgICAgICAgICAgPENsb3NlSWNvblxuICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxOCxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgICAgICBjb2xvcjogXCIjMDAwMDAwOEZcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICB7dChcIm9yZGVycy5ub19vcmRlcnNcIil9XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzVGlja2V0cztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRGl2aWRlciBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVPcmRlclRvdGFscywgZm9ybWF0Q3VycmVuY3kgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5VGFibGUgPSAoeyBvcmRlciwgc3VtbWl0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGRpc2NvdW50VG90YWwsIHJlZnVuZFRvdGFsLCB0YXhlc1RvdGFsLCBhbW91bnRUb3RhbCwgdGlja2V0U3VtbWFyeSB9ID1cbiAgICBjYWxjdWxhdGVPcmRlclRvdGFscyh7IG9yZGVyLCBzdW1taXQgfSk7XG4gIGNvbnN0IGh1bmRyZWQgPSAxMDA7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVRhYmxlfT5cbiAgICAgIHt0aWNrZXRTdW1tYXJ5Py5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dGlja2V0U3VtbWFyeS5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGlja2V0VG90YWwgPVxuICAgICAgICAgICAgICAodGlja2V0LnF0eSAqICh0aWNrZXQudGlja2V0X3R5cGUuY29zdCAqIGh1bmRyZWQpKSAvIGh1bmRyZWQ7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgICAga2V5PXtgdGl4b3JkZXJfJHt0aWNrZXQudGlja2V0X3R5cGUuY3JlYXRlZH1gfVxuICAgICAgICAgICAgICAgIHN4PXt7IHBiOiAxIH19XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1zdW1tYXJ5LWl0ZW1pemVkXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIHh7dGlja2V0LnF0eX0ge3RpY2tldC50aWNrZXRfdHlwZS5uYW1lfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0VG90YWwsIHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH0pfVxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAge29yZGVyLmRpc2NvdW50X2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkuZGlzY291bnRzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Rpc2NvdW50VG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAge29yZGVyLnRheGVzX2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudGF4ZXNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHt0YXhlc1RvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmFtb3VudF9wYWlkXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Ftb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtyZWZ1bmRUb3RhbCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kc1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAge3JlZnVuZFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcHQ6IDEsIHBiOiAxIH19PlxuICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudG90YWxcIil9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiID8gXCIkMC4wMFwiIDogYW1vdW50VG90YWx9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbk9yZGVyU3VtbWFyeVRhYmxlLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzY291bnRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRheGVzX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5VGFibGU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyB0aWNrZXRzUmVmdW5kYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWZ1bmRFbWFpbFN1cHBvcnQgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldHMsXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2ssXG4gIG9uRW1haWxTdXBwb3J0Q2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgaXNJblJlZnVuZGFibGVQZXJpb2QgPVxuICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUgPiBub3c7XG4gIGNvbnN0IGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0ID0gdGlja2V0c1JlZnVuZGFibGUodGlja2V0cyk7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9ICEhKGlzSW5SZWZ1bmRhYmxlUGVyaW9kICYmIGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0KTtcbiAgY29uc3QgaGFzUmVmdW5kUmVxdWVzdHMgPSB0aWNrZXRzPy5zb21lKCh0KSA9PiB0LnJlZnVuZF9yZXF1ZXN0cy5sZW5ndGggPiAwKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2lzUmVmdW5kYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHJlcXVlc3QgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259IFxuICAgICAgICAgICR7c3VibWl0UmVxdWVzdCA/IHN0eWxlcy5yZWZ1bmREaXNhYmxlZCA6IFwiXCJ9YH1cbiAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgb25DbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBkaXNhYmxlZD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgICAge2hhc1JlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgZGV0YWlscyBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgb25DbGljaz17b25SZWZ1bmREZXRhaWxDbGlja31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwiZW1haWwgc3VwcG9ydCBidXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBvbkNsaWNrPXtvbkVtYWlsU3VwcG9ydENsaWNrfVxuICAgICAgPlxuICAgICAgICB7dChcIm9yZGVyX2luZm8uZW1haWxfc3VwcG9ydFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvPlxuICApO1xufTtcblxuUmVmdW5kRW1haWxTdXBwb3J0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZWZ1bmREZXRhaWxDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRW1haWxTdXBwb3J0Q2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRW1haWxTdXBwb3J0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBPcmRlclN1bW1hcnlUYWJsZSBmcm9tIFwiLi9PcmRlclN1bW1hcnlUYWJsZVwiO1xuaW1wb3J0IFJlZnVuZEVtYWlsU3VwcG9ydCBmcm9tIFwiLi9SZWZ1bmRFbWFpbFN1cHBvcnRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5ID0gKHtcbiAgb3JkZXIsXG4gIHN1bW1pdCxcbiAgb25SZWZ1bmRDbGljayxcbiAgc3VibWl0UmVxdWVzdCxcbiAgb25SZWZ1bmREZXRhaWxDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5V3JhcHBlcn1cbiAgICAgICAgc3g9e3sgcHQ6IDQsIHB4OiA0IH19XG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX3N1bW1hcnlcIil9PC9oMz5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvfVxuICAgICAgICAgICAgc3g9e3sgcGI6IDMgfX1cbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8T3JkZXJTdW1tYXJ5VGFibGUgb3JkZXI9e29yZGVyfSBzdW1taXQ9e3N1bW1pdH0gLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCB4cz17MTJ9IHN4PXt7IHBiOiAzIH19PlxuICAgICAgICA8UmVmdW5kRW1haWxTdXBwb3J0XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHN9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICAgICAgb25FbWFpbFN1cHBvcnRDbGljaz17KCkgPT4ge319XG4gICAgICAgIC8+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcbn07XG5PcmRlclN1bW1hcnkucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lbWJlclRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSksXG4gIG9uUmVmdW5kQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IHsgZ2V0VXNlclRpY2tldHMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHtcbiAgT05FX1BBR0VfTkVYVCxcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgRklSU1RfUEFHRVxufSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBoYXNNb3JlMkZldGNoLCBzaG91bGRGZXRjaERhdGEgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcblxuY29uc3QgQXNzaWduVG9NZSA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIHVzZXJUaWNrZXRzLFxuICAgIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UsXG4gICAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZSxcbiAgICBmaWx0ZXIsXG4gICAgc29ydFxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIGNvbnN0IGZldGNoRGF0YSA9IGFzeW5jIChwYWdlKSA9PiB7XG4gICAgaWYgKFxuICAgICAgc2hvdWxkRmV0Y2hEYXRhKHBhZ2UsIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UsIHVzZXJfdGlja2V0c19sYXN0X3BhZ2UpXG4gICAgKVxuICAgICAgZGlzcGF0Y2goXG4gICAgICAgIGdldFVzZXJUaWNrZXRzKHsgcGFnZSwgcGVyUGFnZTogREVGQVVMVF9JVEVNU19QRVJfUEFHRSwgZmlsdGVyLCBzb3J0IH0pXG4gICAgICApO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZmV0Y2hEYXRhKEZJUlNUX1BBR0UpO1xuICB9LCBbZmlsdGVyLCBzb3J0XSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfT5cbiAgICAgIDxkaXYgaWQ9XCJhc3NpZ25lZFRvTWVXcmFwcGVyXCIgY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRUb01lV3JhcHBlcn0+XG4gICAgICAgIHt1c2VyVGlja2V0cz8ubGVuZ3RoID8gKFxuICAgICAgICAgIDxJbmZpbml0ZVNjcm9sbFxuICAgICAgICAgICAgZGF0YUxlbmd0aD17dXNlclRpY2tldHM/Lmxlbmd0aH1cbiAgICAgICAgICAgIG5leHQ9eygpID0+IGZldGNoRGF0YSh1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlICsgT05FX1BBR0VfTkVYVCl9XG4gICAgICAgICAgICBoYXNNb3JlPXtoYXNNb3JlMkZldGNoKFxuICAgICAgICAgICAgICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlLFxuICAgICAgICAgICAgICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlXG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgc2Nyb2xsVGhyZXNob2xkPXsxfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn0+XG4gICAgICAgICAgICAgIHt1c2VyVGlja2V0cy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICBpc1JlZnVuZGluZz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9e1tdfVxuICAgICAgICAgICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubm9UaWNrZXRzRm91bmR9PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5ub09yZGVyc0ljb25XcmFwcGVyfT5cbiAgICAgICAgICAgICAgPFNlYXJjaEljb24gc3g9e3sgZm9udFNpemU6IDQ0LCBjb2xvcjogXCIjMDAwMDAwOEZcIiB9fSAvPlxuICAgICAgICAgICAgICA8Q2xvc2VJY29uXG4gICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxOCxcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMwMDAwMDA4RlwiXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRzLm5vX3RpY2tldHNcIil9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnblRvTWU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIEdyaWQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25lZFRvID0gKHsgZW1haWwgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+e3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbmVkX3RvXCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGRhdGEtdGVzdGlkPVwiYXR0ZW5kZWUtc3RhdHVzLWFzc2lnbmVkXCI+XG4gICAgICAgIHtlbWFpbH1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmNvbnN0IEV4dGVybmFsQXNzaWduZWRUbyA9ICh7IGZpcnN0TmFtZSwgbGFzdE5hbWUgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+e3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbmVkX2J5XCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiPlxuICAgICAgICB7Zmlyc3ROYW1lfSB7bGFzdE5hbWV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5jb25zdCBNYW5hZ2VGb3IgPSAoeyBmaXJzdE5hbWUsIGxhc3ROYW1lIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9Pnt0KFwidGlja2V0X3N0YXR1cy5tYW5hZ2VfZm9yXCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiPlxuICAgICAgICB7Zmlyc3ROYW1lfSB7bGFzdE5hbWV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5jb25zdCBBdHRlbmRlZVN0YXR1cyA9ICh7IHRpY2tldCwgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc1VuYXNzaWduZWQgPSAhdGlja2V0Lm93bmVyPy5lbWFpbCAmJiB0aWNrZXQuaXNfYWN0aXZlO1xuICBjb25zdCBpc0RlbGVnYXRlZCA9ICEhdGlja2V0Lm93bmVyPy5tYW5hZ2VyX2lkO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0T3duZXJFbWFpbH1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJhdHRlbmRlZS1zdGF0dXMtdW5hc3NpZ25lZFwiXG4gICAgICA+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hdHRlbmRlZV9zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICApO1xuICB9XG5cbiAgaWYgKHRpY2tldC5vd25lcj8uZW1haWwpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICA8R3JpZCBpdGVtPlxuICAgICAgICAgIDxBc3NpZ25lZFRvIGVtYWlsPXt0aWNrZXQub3duZXIuZW1haWx9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAge2lzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCAmJiAoXG4gICAgICAgICAgPEdyaWQgaXRlbSBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25lZEJ5VGV4dH0+XG4gICAgICAgICAgICA8RXh0ZXJuYWxBc3NpZ25lZFRvXG4gICAgICAgICAgICAgIGZpcnN0TmFtZT17dGlja2V0Lm9yZGVyPy5vd25lcl9maXJzdF9uYW1lfVxuICAgICAgICAgICAgICBsYXN0TmFtZT17dGlja2V0Lm9yZGVyPy5vd25lcl9sYXN0X25hbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKX1cbiAgICAgICAge2lzRGVsZWdhdGVkICYmIChcbiAgICAgICAgICA8R3JpZCBpdGVtIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbmVkQnlUZXh0fT5cbiAgICAgICAgICAgIDxNYW5hZ2VGb3JcbiAgICAgICAgICAgICAgZmlyc3ROYW1lPXt0aWNrZXQub3duZXI/LmZpcnN0X25hbWV9XG4gICAgICAgICAgICAgIGxhc3ROYW1lPXt0aWNrZXQub3duZXI/Lmxhc3RfbmFtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApfVxuICAgICAgPC9HcmlkPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbkF0dGVuZGVlU3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBpc19hY3RpdmU6IFByb3BUeXBlcy5ib29sXG4gIH0pLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBdHRlbmRlZVN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuL09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCB7IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJMaXN0SXRlbSA9ICh7XG4gIHN1bW1pdCxcbiAgb3JkZXIsXG4gIG9uUGFnaW5hdGVDbGljayxcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpdGVtc1RvRGlzcGxheSwgc2V0SXRlbXNUb0Rpc3BsYXldID0gdXNlU3RhdGUoXG4gICAgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UXG4gICk7XG5cbiAgaWYgKCFvcmRlcj8ubWVtYmVyVGlja2V0cz8ubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgY29uc3Qgc2xpY2VkVGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzPy5zbGljZSgwLCBpdGVtc1RvRGlzcGxheSk7XG5cbiAgY29uc3Qgb25WaWV3TW9yZSA9ICgpID0+IHtcbiAgICBpZiAob3JkZXI/LnRpY2tldHNfdG90YWwgPiBvcmRlcj8ubWVtYmVyVGlja2V0cy5sZW5ndGgpIHtcbiAgICAgIG9uUGFnaW5hdGVDbGljaygpO1xuICAgIH1cbiAgICBzZXRJdGVtc1RvRGlzcGxheShpdGVtc1RvRGlzcGxheSArIFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCk7XG4gIH07XG5cbiAgY29uc3Qgb25WaWV3TGVzcyA9ICgpID0+IHNldEl0ZW1zVG9EaXNwbGF5KFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge3NsaWNlZFRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgaXNSZWZ1bmRpbmc9e2ZhbHNlfVxuICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17ISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKX1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICAgIHtvcmRlcj8udGlja2V0c190b3RhbCA+IGl0ZW1zVG9EaXNwbGF5ID8gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInZpZXcgbW9yZSBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e29uVmlld01vcmV9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy10aWNrZXRzLnZpZXdfbW9yZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgICAge3NsaWNlZFRpY2tldHM/Lmxlbmd0aCA+IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCAmJlxuICAgICAgc2xpY2VkVGlja2V0cz8ubGVuZ3RoID09PSBvcmRlcj8udGlja2V0c190b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IGxlc3MgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdMZXNzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMtdGlja2V0cy52aWV3X2xlc3NcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyTGlzdEl0ZW0ucHJvcFR5cGVzID0ge1xuICBvcmRlcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RJdGVtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgVGlja2V0U3RhdHVzIGZyb20gXCIuLi9UaWNrZXRTdGF0dXNcIjtcbmltcG9ydCB7IGdldFN1bW1pdFJlYXNzaWduRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdW1taXRVdGlsc1wiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgQXR0ZW5kZWVTdGF0dXMgZnJvbSBcIi4vQXR0ZW5kZWVTdGF0dXNcIjtcbmltcG9ydCBUaWNrZXREZXRhaWwgZnJvbSBcIi4uL1RpY2tldERldGFpbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgVGlja2V0QXNzaWduIGZyb20gXCIuLi9UaWNrZXRBc3NpZ25cIjtcbmltcG9ydCB7IHJlc2V0VGlja2V0IH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgbW9kYWxWaWV3cyA9IHtcbiAgZGV0YWlsOiBcIkRFVEFJTFwiLFxuICByZWFzc2lnbjogXCJSRUFTU0lHTlwiLFxuICBhc3NpZ246IFwiQVNTSUdOXCJcbn07XG5cbmNvbnN0IFRpY2tldENUQXMgPSAoe1xuICBpc0luY29tcGxldGUsXG4gIGlzVW5hc3NpZ25lZCxcbiAgaXNSZWFzc2lnbmFibGUsXG4gIG9uT3BlbkNsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBpZiAoaXNVbmFzc2lnbmVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxCdXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduVGlja2V0QnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLmFzc2lnbil9XG4gICAgICA+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25fdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFN0YWNrXG4gICAgICBzeD17e1xuICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJlbmRcIixcbiAgICAgICAgd2lkdGg6IFwiMTAwJVwiXG4gICAgICB9fVxuICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgID5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld0ZpbmlzaFRpY2tldEJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5kZXRhaWwpfVxuICAgICAgPlxuICAgICAgICB7aXNJbmNvbXBsZXRlXG4gICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5maW5pc2hfdGlja2V0XCIpXG4gICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAge2lzUmVhc3NpZ25hYmxlICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWFzc2lnbiB0aWNrZXQgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWFzc2lnbkJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLnJlYXNzaWduKX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5yZWFzc2lnbl90aWNrZXRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L1N0YWNrPlxuICApO1xufTtcblxuVGlja2V0Q1RBcy5wcm9wVHlwZXMgPSB7XG4gIGlzSW5jb21wbGV0ZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgaXNVbmFzc2lnbmVkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBpc1JlYXNzaWduYWJsZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgb25PcGVuQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmNvbnN0IE9yZGVyTGlzdFRpY2tldHMgPSAoe1xuICB0aWNrZXQsXG4gIHN1bW1pdCxcbiAgaXNSZWZ1bmRpbmcsXG4gIGlzU2VsZWN0ZWRUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmQsXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IHsgaXNSZWZ1bmRhYmxlLCBpc1VuYXNzaWduZWQsIGlzSW5jb21wbGV0ZSwgY2FuUmVhc3NpZ24gfSA9XG4gICAgdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuICBjb25zdCBbbW9kYWxPcGVuLCBzZXRNb2RhbE9wZW5dID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHJlYXNzaWduRGF0ZSA9IGdldFN1bW1pdFJlYXNzaWduRGF0ZShzdW1taXQpO1xuICBjb25zdCBvblJlYXNzaWduYWJsZVBlcmlvZCA9IHJlYXNzaWduRGF0ZSA+IG5vdztcbiAgY29uc3QgaXNSZWFzc2lnbmFibGUgPVxuICAgIG9uUmVhc3NpZ25hYmxlUGVyaW9kICYmIGNhblJlYXNzaWduICYmICFpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ7XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldFRpY2tldCgpKTtcbiAgICBzZXRNb2RhbE9wZW4obnVsbCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3Blbk1vZGFsID0gKHZpZXcpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldFRpY2tldCgpKTtcbiAgICBzZXRNb2RhbE9wZW4odmlldyk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8R3JpZFxuICAgICAgY29udGFpbmVyXG4gICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyV3JhcHBlcn0gJHtcbiAgICAgICAgaXNSZWZ1bmRpbmcgPyBzdHlsZXMucmVmdW5kTW9kYWwgOiBcIlwiXG4gICAgICB9ICR7aXNSZWZ1bmRpbmcgJiYgIWlzUmVmdW5kYWJsZSA/IHN0eWxlcy5kaXNhYmxlZFJlZnVuZCA6IFwiXCJ9ICR7XG4gICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZCA/IHN0eWxlcy5zZWxlY3RlZCA6IFwiXCJcbiAgICAgIH1gfVxuICAgID5cbiAgICAgIHtpc1JlZnVuZGluZyAmJiAoXG4gICAgICAgIDxHcmlkIGl0ZW0geHM9ezF9IHBhZGRpbmc9ezJ9IGNsYXNzTmFtZT17c3R5bGVzLmNoZWNrYm94fT5cbiAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgdGlja2V0IGNoZWNrYm94XCJcbiAgICAgICAgICAgIHJvbGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBjaGVja2VkPXtpc1NlbGVjdGVkVG9SZWZ1bmR9XG4gICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNlbGVjdFRvUmVmdW5kKGUsIHRpY2tldCl9XG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7XG4gICAgICAgICAgICAgICAgZm9udFNpemU6IDE4XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBkaXNhYmxlZD17IWlzUmVmdW5kYWJsZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPEdyaWRcbiAgICAgICAgaXRlbVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1saXN0LXRpY2tldFwiXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICB4cz17aXNSZWZ1bmRpbmcgPyAxMSA6IDEyfVxuICAgICAgPlxuICAgICAgICA8R3JpZFxuICAgICAgICAgIHhzPXs4fVxuICAgICAgICAgIHB5PXsyfVxuICAgICAgICAgIHBsPXs0fVxuICAgICAgICAgIGl0ZW1cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRUaWNrZXRUeXBlfVxuICAgICAgICAgIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxTdGFja1xuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1zdGFydFwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlV3JhcHBlcn0geHM9ezR9IHB5PXsyfSBwcj17NH0gaXRlbT5cbiAgICAgICAgICB7LyogVG8gYWRkIGJhZGdlIGZlYXR1cmVzICovfVxuICAgICAgICAgIHt0aWNrZXQuYmFkZ2U/LmZlYXR1cmVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlfVxuICAgICAgICAgICAgICBzcmM9e2JmLmltYWdlfVxuICAgICAgICAgICAgICBhbHQ9e2JmLm5hbWV9XG4gICAgICAgICAgICAgIGtleT17YmYubmFtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezEyfSBzeD17eyBweDogNCwgcGI6IDIgfX0gaXRlbT5cbiAgICAgICAgICA8QXR0ZW5kZWVTdGF0dXNcbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0PXshIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy50aWNrZXRfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgICB0ZXh0PXt0aWNrZXQubnVtYmVyfVxuICAgICAgICAgICAgICB0b29sdGlwVGV4dD17dChcInRpY2tldF9zdGF0dXMuY29weV90aWNrZXRfbnVtYmVyXCIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBsZz17Nn1cbiAgICAgICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICAgICAgaXRlbVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHB5PXsyfSBwcj17NH0geHM9ezEyfSBsZz17Nn0gY29udGFpbmVyIGl0ZW0+XG4gICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICBhbGlnbj1cImNlbnRlclwiXG4gICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgICAgICAgICAgIG1pbkhlaWdodDogXCIyZW1cIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRBY3Rpb25CdXR0b25zfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dGlja2V0LmlzX2FjdGl2ZSAmJiAhaXNSZWZ1bmRpbmcgJiYgKFxuICAgICAgICAgICAgICAgIDxUaWNrZXRDVEFzXG4gICAgICAgICAgICAgICAgICBpc1VuYXNzaWduZWQ9e2lzVW5hc3NpZ25lZH1cbiAgICAgICAgICAgICAgICAgIGlzSW5jb21wbGV0ZT17aXNJbmNvbXBsZXRlfVxuICAgICAgICAgICAgICAgICAgaXNSZWFzc2lnbmFibGU9e2lzUmVhc3NpZ25hYmxlICYmICFpc0V4dGVybmFsQXNzaWduZWRUaWNrZXR9XG4gICAgICAgICAgICAgICAgICBvbk9wZW5DbGljaz17aGFuZGxlT3Blbk1vZGFsfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxUaWNrZXREZXRhaWxcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICB0aWNrZXRJZD17dGlja2V0Py5pZH1cbiAgICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkIHx8IHRpY2tldD8ub3JkZXI/LmlkfVxuICAgICAgICAgIG93bmVySWQ9e3RpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICAgIG9wZW49e21vZGFsT3BlbiA9PT0gbW9kYWxWaWV3cy5kZXRhaWx9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgLz5cbiAgICAgICAgPFRpY2tldEFzc2lnblxuICAgICAgICAgIHRpY2tldElkPXt0aWNrZXQ/LmlkfVxuICAgICAgICAgIG9yZGVySWQ9e3RpY2tldD8ub3JkZXJfaWQgfHwgdGlja2V0Py5vcmRlcj8uaWR9XG4gICAgICAgICAgb3duZXJJZD17dGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgICAgb3Blbj17W21vZGFsVmlld3MucmVhc3NpZ24sIG1vZGFsVmlld3MuYXNzaWduXS5pbmNsdWRlcyhtb2RhbE9wZW4pfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICApO1xufTtcblxuT3JkZXJMaXN0VGlja2V0cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBpZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvcmRlcl9pZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGlkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBudW1iZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdG90YWxfcmVmdW5kZWRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRpY2tldF90eXBlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgaXNSZWZ1bmRpbmc6IFByb3BUeXBlcy5ib29sLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQ6IFByb3BUeXBlcy5ib29sLFxuICBzZWxlY3RUb1JlZnVuZDogUHJvcFR5cGVzLmZ1bmMsXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdFRpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgVGFicyBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJzXCI7XG5pbXBvcnQgVGFiIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYlwiO1xuaW1wb3J0IE9yZGVyTGlzdEl0ZW0gZnJvbSBcIi4vT3JkZXJMaXN0SXRlbVwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeSBmcm9tIFwiLi4vT3JkZXJTdW1tYXJ5XCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdHNNb2RhbCBmcm9tIFwiLi4vUmVmdW5kUmVxdWVzdHNcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFJlZnVuZERldGFpbHMgZnJvbSBcIi4uL1JlZnVuZFJlcXVlc3RzL1JlZnVuZERldGFpbHNcIjtcblxuY29uc3QgVGFiUGFuZWwgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgdmFsdWUsIGluZGV4IH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByb2xlPVwidGFicGFuZWxcIlxuICAgICAgaGlkZGVuPXt2YWx1ZSAhPT0gaW5kZXh9XG4gICAgICBpZD17YHRhYnBhbmVsLSR7aW5kZXh9YH1cbiAgICAgIGFyaWEtbGFiZWxsZWRieT17YHRhYi0ke2luZGV4fWB9XG4gICAgPlxuICAgICAge3ZhbHVlID09PSBpbmRleCAmJiBjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlID0gKHtcbiAgaXNNb2JpbGUsXG4gIHN1bW1pdCxcbiAgb3JkZXIsXG4gIGRldGFpbHNSZXF1aXJlZCxcbiAgb25QYWdpbmF0ZUNsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKF8sIG5ld1ZhbHVlKSA9PiB7XG4gICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICB9O1xuICBjb25zdCBbdGlja2V0c1RvUmVmdW5kLCBzZXRUaWNrZXRzVG9SZWZ1bmRdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbc3VibWl0UmVxdWVzdCwgc2V0U3VibWl0UmVxdWVzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtyZWZ1bmREZXRhaWxzT3Blbiwgc2V0UmVmdW5kRGV0YWlsc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IG9uUmVmdW5kQ2xpY2sgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdCh0cnVlKTtcbiAgfTtcbiAgY29uc3QgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzID0gKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IGZpbHRlclNlbGVjdGVkID0gdGlja2V0c1RvUmVmdW5kLmZpbHRlcigodCkgPT4gdC5pZCAhPT0gdGlja2V0LmlkKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoZmlsdGVyU2VsZWN0ZWQpO1xuICB9O1xuICBjb25zdCBzZWxlY3RUb1JlZnVuZCA9IChlLCB0aWNrZXQpID0+IHtcbiAgICBjb25zdCB7IGNoZWNrZWQgfSA9IGUudGFyZ2V0O1xuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFRpY2tldCA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICAgICAodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkXG4gICAgICApO1xuICAgICAgc2V0VGlja2V0c1RvUmVmdW5kKFsuLi50aWNrZXRzVG9SZWZ1bmQsIHNlbGVjdGVkVGlja2V0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cyh0aWNrZXQpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBjbG9zZVN1Ym1pdFJlcXVlc3QgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdChmYWxzZSk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKFtdKTtcbiAgfTtcblxuICBjb25zdCByZXNldEFsbFJlZnVuZFN0YXR1c2VzID0gKCkgPT4ge1xuICAgIHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3QgbW9yZURldGFpbHMgPSAoKSA9PlxuICAgIGRldGFpbHNSZXF1aXJlZCAmJiAoXG4gICAgICA8RXJyb3JMYWJlbFxuICAgICAgICBtZXNzYWdlPXt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfZGV0YWlsc19yZXF1aXJlZFwiKX1cbiAgICAgICAgY29sb3I9XCIjZmY5ODAwXCJcbiAgICAgICAgZGF0YVRlc3RJZD1cIm1vcmUtZGV0YWlscy1sYWJlbFwiXG4gICAgICAvPlxuICAgICk7XG5cbiAgcmV0dXJuIGlzTW9iaWxlID8gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICBkYXRhLXRlc3RpZD1cIm1vYmlsZS1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxCb3ggc3g9e3sgYm9yZGVyQ29sb3I6IFwiZGl2aWRlclwiLCBwYjogMiB9fT5cbiAgICAgICAgPFRhYnNcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiVGlja2V0cyAmIFN1bW1hcnlcIlxuICAgICAgICA+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy50aWNrZXRzXCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMuc3VtbWFyeVwiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgPC9UYWJzPlxuICAgICAgPC9Cb3g+XG4gICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXswfT5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezF9PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgPC9Cb3g+XG4gICkgOiAoXG4gICAgPD5cbiAgICAgIDxHcmlkIGl0ZW0gbWQ9ezEyfT5cbiAgICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZFxuICAgICAgICBwYWRkaW5nPXsxfVxuICAgICAgICBpdGVtXG4gICAgICAgIG1kPXs3fVxuICAgICAgICBvcmRlcj17eyBtZDogMSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImRlc2t0b3Atb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBwYWRkaW5nPXsxfSBpdGVtIG1kPXs1fSBvcmRlcj17eyBtZDogMSB9fT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4odHJ1ZSl9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8UmVmdW5kUmVxdWVzdHNNb2RhbFxuICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0cyB8fCBbXX1cbiAgICAgICAgb3Blbj17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U9eygpID0+IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMoKX1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gY2xvc2VTdWJtaXRSZXF1ZXN0KCl9XG4gICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgLz5cbiAgICAgIDxSZWZ1bmREZXRhaWxzXG4gICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICBjdXJyZW5jeT17b3JkZXIuY3VycmVuY3l9XG4gICAgICAgIG9wZW49e3JlZnVuZERldGFpbHNPcGVufVxuICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3BlbihmYWxzZSl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lbWJlclRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSksXG4gIGlzTW9iaWxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgZGV0YWlsc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25QYWdpbmF0ZUNsaWNrOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGU7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHVzZU1lZGlhUXVlcnkgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiO1xuaW1wb3J0IHsgZ2V0VGlja2V0c0J5T3JkZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSBmcm9tIFwiLi9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZVwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlcnNMaXN0ID0gKHsgc3VtbWl0LCBvcmRlciB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7IHRpY2tldF9wZXJfcGFnZSwgZmlsdGVyLCBzb3J0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlTWVkaWFRdWVyeSh0aGVtZS5icmVha3BvaW50cy5kb3duKFwibGdcIikpO1xuICBjb25zdCBbaXNNb2JpbGVWaWV3YWJsZSwgc2V0TW9iaWxlVmlld2FibGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkZXRhaWxzUmVxdWlyZWQgPSBvcmRlci5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICh0aWNrZXQpID0+IHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIlxuICApO1xuXG4gIGNvbnN0IG9uUGFnaW5hdGVDbGljayA9ICgpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICBwYWdlOiBvcmRlci50aWNrZXRzX3BhZ2VfY3VycmVudCArIE9ORV9QQUdFX05FWFQsXG4gICAgICAgIHBlclBhZ2U6IHRpY2tldF9wZXJfcGFnZSxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBzb3J0XG4gICAgICB9KVxuICAgICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBzeD17e1xuICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgIHhzOiAyLFxuICAgICAgICAgICAgbWQ6IDEsXG4gICAgICAgICAgICBsZzogMFxuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb31cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXRpY2tldC1pbmZvLWNvbnRhaW5lclwiXG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy5wdXJjaGFzZWRcIil9OiB7Z2V0Rm9ybWF0dGVkRGF0ZShvcmRlci5jcmVhdGVkKX0gfHtcIiBcIn1cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkub3JkZXJfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgIHRleHQ9e29yZGVyLm51bWJlcn1cbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwib3JkZXJfc3VtbWFyeS5jb3B5X29yZGVyX251bWJlclwiKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgc3g9e3sgcGFkZGluZzogMCB9fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmxhY2tCdXR0b259XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRNb2JpbGVWaWV3YWJsZSghaXNNb2JpbGVWaWV3YWJsZSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2lzTW9iaWxlVmlld2FibGVcbiAgICAgICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5oaWRlX3RpY2tldHNcIilcbiAgICAgICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldHNcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxHcmlkXG4gICAgICAgIGtleT17b3JkZXIuaWR9XG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICByb3dTcGFjaW5nPXsxfVxuICAgICAgICBjb2x1bW5TcGFjaW5nPXt7IHhzOiAxLCBzbTogMiwgbWQ6IDMgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9ICR7XG4gICAgICAgICAgaXNNb2JpbGUgJiYgIWlzTW9iaWxlVmlld2FibGUgPyBzdHlsZXMuZGlzcGxheV9ub25lIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiB7XG4gICAgICAgICAgICBtZDogXCJyb3dcIixcbiAgICAgICAgICAgIGxnOiBcInJvd1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiA0LFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxPcmRlcnNMaXN0RGVza3RvcE1vYmlsZVxuICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgZGV0YWlsc1JlcXVpcmVkPXshIWRldGFpbHNSZXF1aXJlZH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyc0xpc3QucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdGVkVGlja2V0IGZyb20gXCIuL1JlZnVuZFJlcXVlc3RlZFRpY2tldFwiO1xuaW1wb3J0IHsgZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5jb25zdCBSZWZ1bmREZXRhaWxzID0gKHsgdGlja2V0cywgY3VycmVuY3ksIG9wZW4sIG9uQ2xvc2VTbGlkZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHJlcXVlc3RlZFRpY2tldHMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHModGlja2V0cyksXG4gICAgW3RpY2tldHNdXG4gICk7XG4gIGNvbnN0IGNsb3NlU2xpZGVyID0gKCkgPT4ge1xuICAgIG9uQ2xvc2VTbGlkZXIoKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8UmlnaHREcmF3ZXJcbiAgICAgIGlkPVwicmVmdW5kLWRldGFpbHNcIlxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e2Nsb3NlU2xpZGVyfVxuICAgICAgdGl0bGU9e3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZF9kZXRhaWxzXCIpfVxuICAgID5cbiAgICAgIDxCb3hcbiAgICAgICAgc3g9e3sgZGlzcGxheTogXCJmbGV4XCIsIGZsZXhEaXJlY3Rpb246IFwiY29sdW1uXCIsIGFsaWduSXRlbXM6IFwiY2VudGVyXCIgfX1cbiAgICAgID5cbiAgICAgICAge3JlcXVlc3RlZFRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPFJlZnVuZFJlcXVlc3RlZFRpY2tldFxuICAgICAgICAgICAga2V5PXtgcmVmdW5kX3JlcV8ke3RpY2tldD8uaWR9YH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgY3VycmVuY3k9e2N1cnJlbmN5fVxuICAgICAgICAgICAgcmVmdW5kRGV0YWlsc1xuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgPC9SaWdodERyYXdlcj5cbiAgKTtcbn07XG5cblJlZnVuZERldGFpbHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZERldGFpbHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBJY29uQnV0dG9uLCBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHRvb2x0aXBDbGFzc2VzIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgSW5mb0ljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCBBdHRlbmRlZVN0YXR1cyBmcm9tIFwiLi4vT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1c1wiO1xuaW1wb3J0IFJlZnVuZFN0YXR1cyBmcm9tIFwiLi9SZWZ1bmRTdGF0dXNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBmb3JtYXRDdXJyZW5jeSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuXG5jb25zdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgPSAoeyB0aWNrZXQsIGN1cnJlbmN5LCByZWZ1bmREZXRhaWxzIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IEdSSURfOCA9IDg7XG4gIGNvbnN0IEdSSURfMTIgPSAxMjtcblxuICBjb25zdCBQQURESU5HXzIgPSAyO1xuXG4gIGNvbnN0IGFwcHJvdmVkUmVmdW5kcyA9IHRpY2tldC5yZWZ1bmRfcmVxdWVzdHMuZmlsdGVyKFxuICAgIChyZWZ1bmQpID0+IHJlZnVuZC5zdGF0dXMgPT09IFwiQXBwcm92ZWRcIlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkgPSB7fTtcblxuICBhcHByb3ZlZFJlZnVuZHMuZm9yRWFjaCgocmVmdW5kKSA9PiB7XG4gICAgcmVmdW5kLnJlZnVuZGVkX3RheGVzLmZvckVhY2goKHJ0KSA9PiB7XG4gICAgICBjb25zdCB0YXhJZCA9IHJ0LnRheC5pZDtcbiAgICAgIGlmICghcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0pIHtcbiAgICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0gPSB7XG4gICAgICAgICAgbmFtZTogcnQudGF4Lm5hbWUsXG4gICAgICAgICAgdG90YWxSZWZ1bmRlZFRheEFtb3VudDogMFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0udG90YWxSZWZ1bmRlZFRheEFtb3VudCArPVxuICAgICAgICBydC5yZWZ1bmRlZF9hbW91bnQ7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IEh0bWxUb29sdGlwID0gc3R5bGVkKCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSkgPT4gKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIDxUb29sdGlwIHsuLi5wcm9wc30gY2xhc3Nlcz17eyBwb3BwZXI6IGNsYXNzTmFtZSB9fSAvPlxuICApKSgoKSA9PiAoe1xuICAgIFtgJiAuJHt0b29sdGlwQ2xhc3Nlcy50b29sdGlwfWBdOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiI2Y1ZjVmOVwiLFxuICAgICAgY29sb3I6IFwicmdiYSgwLCAwLCAwLCAwLjg3KVwiLFxuICAgICAgbWF4V2lkdGg6IDIyMCxcbiAgICAgIGZvbnRTaXplOiBcIjFlbVwiLFxuICAgICAgYm9yZGVyOiBcIjFweCBzb2xpZCAjZGFkZGU5XCJcbiAgICB9XG4gIH0pKTtcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBjb250YWluZXJcbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnJlZnVuZFRpY2tldEJveENvbnRhaW5lcn0gJHtcbiAgICAgICAgcmVmdW5kRGV0YWlscyA/IHN0eWxlcy5yZWZ1bmREZXRhaWwgOiBcIlwiXG4gICAgICB9IGB9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0ZWQtdGlja2V0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEdyaWRcbiAgICAgICAgeHM9e3JlZnVuZERldGFpbHMgPyBHUklEXzggOiBHUklEXzEyfVxuICAgICAgICBpdGVtXG4gICAgICAgIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgcHQ9ezJ9XG4gICAgICAgIHB4PXs0fVxuICAgICAgPlxuICAgICAgICA8U3RhY2tcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIlxuICAgICAgICAgIH19XG4gICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxoND57dGlja2V0LnRpY2tldF90eXBlPy5uYW1lfTwvaDQ+XG4gICAgICAgICAgPEdyaWQgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlV3JhcHBlcn0geHM9ezR9IGl0ZW0+XG4gICAgICAgICAgICB7dGlja2V0LmJhZGdlPy5mZWF0dXJlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmV9XG4gICAgICAgICAgICAgICAgc3JjPXtiZi5pbWFnZX1cbiAgICAgICAgICAgICAgICBhbHQ9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAga2V5PXtiZi5uYW1lfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L1N0YWNrPlxuICAgICAgPC9HcmlkPlxuICAgICAge3JlZnVuZERldGFpbHMgJiYgKFxuICAgICAgICA8R3JpZCB4cz17NH0gcGFkZGluZz17Mn0gaXRlbT5cbiAgICAgICAgICA8UmVmdW5kU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPEdyaWQgeHM9ezEyfSBpdGVtIHB4PXs0fSBwYj17cmVmdW5kRGV0YWlscyA/IFBBRERJTkdfMiA6IDB9IGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFRpY2tldEF0dGVuZGVlfT5cbiAgICAgICAgICA8QXR0ZW5kZWVTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06IDxDb3B5VGV4dCB0ZXh0PXt0aWNrZXQubnVtYmVyfSAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICB7cmVmdW5kRGV0YWlscyAmJiB0aWNrZXQudG90YWxfcmVmdW5kZWRfYW1vdW50ID4gMCAmJiAoXG4gICAgICAgICAgPEdyaWQgeHM9ezR9IHBsPXs0fT5cbiAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeSh0aWNrZXQudG90YWxfcmVmdW5kZWRfYW1vdW50LCB7IGN1cnJlbmN5IH0pfXtcIiBcIn1cbiAgICAgICAgICAgIFJlZnVuZGVkXG4gICAgICAgICAgICB7YXBwcm92ZWRSZWZ1bmRzLnNvbWUoKHIpID0+IHIucmVmdW5kZWRfdGF4ZXMubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICAgICAgICA8SHRtbFRvb2x0aXBcbiAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0LnJlZnVuZGVkX2Ftb3VudCwgeyBjdXJyZW5jeSB9KX17XCIgXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgVGlja2V0IEFtb3VudFxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxiPlRheGVzPC9iPlxuICAgICAgICAgICAgICAgICAgICB7T2JqZWN0LmtleXMocmVmdW5kZWRUYXhlc1N1bW1hdG9yeSkubWFwKCh0YXhJZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdG90YWxSZWZ1bmRlZFRheEFtb3VudCwgbmFtZSB9ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnlbdGF4SWRdO1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBrZXk9e3RheElkfT57YCR7bmFtZX0gLSAke2Zvcm1hdEN1cnJlbmN5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbFJlZnVuZGVkVGF4QW1vdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7IGN1cnJlbmN5IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICl9YH08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxJbmZvSWNvbiAvPlxuICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9IdG1sVG9vbHRpcD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgIHttb21lbnQoXG4gICAgICAgICAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHNbMF0uYWN0aW9uX2RhdGUgKiBNSUxMSVNFQ19UT19TRUNcbiAgICAgICAgICAgICkuZm9ybWF0KFwiTU1NIERELCBZWVlZXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKX1cbiAgICAgIDwvR3JpZD5cbiAgICAgIHshcmVmdW5kRGV0YWlscyAmJiAoXG4gICAgICAgIDxHcmlkIHhzPXsxMn0gcHI9ezR9IHBiPXsyfT5cbiAgICAgICAgICA8R3JpZCB4cz17MTJ9IGl0ZW0+XG4gICAgICAgICAgICA8VGlja2V0U3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICA8L0dyaWQ+XG4gICk7XG59O1xuXG5SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHJlZnVuZERldGFpbHM6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ2hpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZnVuZFN0YXR1cyA9ICh7IHRpY2tldCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgc3RhdHVzQ29sb3IgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yKHRpY2tldCksXG4gICAgW3RpY2tldF1cbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8Q2hpcFxuICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCByZWZ1bmQgc3RhdHVzIGxhYmVsXCJcbiAgICAgIGxhYmVsPXt0KGB0aWNrZXRfc3RhdHVzLnJlZnVuZF9yZXF1ZXN0XyR7c3RhdHVzQ29sb3J9YCl9XG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlc1tzdGF0dXNDb2xvcl19YH1cbiAgICAvPlxuICApO1xufTtcblxuUmVmdW5kU3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgU3R5bGVkRW5naW5lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENoZWNrQ2lyY2xlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgeyByZWZ1bmRCdWxrVGlja2V0cywgdXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBTVEVQX09ORSwgU1RFUF9USFJFRSwgU1RFUF9UV08gfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgT3JkZXJMaXN0VGlja2V0cyBmcm9tIFwiLi4vT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzXCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdGVkVGlja2V0IGZyb20gXCIuL1JlZnVuZFJlcXVlc3RlZFRpY2tldFwiO1xuXG5jb25zdCBSZWZ1bmRSZXF1ZXN0c01vZGFsID0gKHtcbiAgdGlja2V0cyxcbiAgc3VtbWl0LFxuICBvcGVuLFxuICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSxcbiAgb25DbG9zZVNsaWRlcixcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZCxcbiAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc3RlcCwgc2V0U3RlcF0gPSB1c2VTdGF0ZShTVEVQX09ORSk7XG4gIGNvbnN0IFtlcnJvck1zZywgc2V0RXJyb3JNc2ddID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtyZWZ1bmRTdWNjZXNzLCBzZXRSZWZ1bmRTdWNjZXNzXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBjbG9zZVNsaWRlciA9ICgpID0+IHtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgICBvbkNsb3NlU2xpZGVyKCk7XG4gICAgc2V0U3RlcChTVEVQX09ORSk7XG4gICAgaWYgKHJlZnVuZFN1Y2Nlc3MpIHtcbiAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlKCk7IC8vIGlmIHRoZSByZWZ1bmQgaXMgYSBzdWNjZXNzLCB0cmlnZ2VyIGFuZCByZS1yZXRyaWV2ZSB0aWNrZXRzIGJ5IG9yZGVyXG4gICAgICBzZXRSZWZ1bmRTdWNjZXNzKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY29uZmlybVJlZnVuZCA9ICgpID0+IHtcbiAgICBzZXRTdGVwKFNURVBfVFdPKTtcbiAgfTtcblxuICBjb25zdCBnb0JhY2tUb1JlZnVuZCA9ICgpID0+IHtcbiAgICBzZXRTdGVwKFNURVBfT05FKTtcbiAgfTtcblxuICBjb25zdCByZWZ1bmRUaWNrZXRzID0gYXN5bmMgKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlZnVuZEJ1bGtUaWNrZXRzKHsgdGlja2V0czogdGlja2V0c1RvUmVmdW5kIH0pKS50aGVuKChyZXMpID0+IHtcbiAgICAgIGRpc3BhdGNoKHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQocmVzKSk7IC8vIHJldHVybmluZyB3aGljaCB0aWNrZXRzIHdlcmUgc3VjY2Vzc2Z1bFxuICAgICAgaWYgKHJlcz8ubGVuZ3RoID09PSB0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoKSB7XG4gICAgICAgIHNldFN0ZXAoU1RFUF9USFJFRSk7IC8vIHN1Y2Nlc3MsIGFsbCByZWZ1bmRzIHdlcmUgcmVxdWVzdGVkXG4gICAgICAgIHNldFJlZnVuZFN1Y2Nlc3ModHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRFcnJvck1zZyh0KFwiZXJyb3JzLnJlZnVuZF91bnN1Y2Nlc3NmdWxcIikpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHNldEVycm9yTXNnKFwiXCIpO1xuICB9O1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBPbmUgPSAoKSA9PiAoXG4gICAgPD5cbiAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgIHt0KFwiY29uZmlybV9wb3B1cC5xdWVzdGlvbl90ZXh0X3NlbGVjdF9yZWZ1bmRcIil9XG4gICAgICA8L2gyPlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0fT5cbiAgICAgICAge3RpY2tldHMubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgICAga2V5PXtgdGlja2V0LSR7dGlja2V0LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXtcbiAgICAgICAgICAgICAgISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgICAgICBpc1JlZnVuZGluZ1xuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFjdGlvbkJ1dHRvbnN9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jYW5jZWwtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Y2xvc2VTbGlkZXJ9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY2FuY2VsXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY29udGludWUtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtjb25maXJtUmVmdW5kfVxuICAgICAgICAgIGRpc2FibGVkPXt0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoID09PSAwfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNvbnRpbnVlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvPlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBUd28gPSAoKSA9PiAoXG4gICAgPEJveCBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LXN1Y2Nlc3NmdWxcIj5cbiAgICAgIDxoMyBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgIHt0KFwiY29uZmlybV9wb3B1cC5xdWVzdGlvbl90ZXh0X2NvbmZpcm1fcmVmdW5kXCIpfVxuICAgICAgPC9oMz5cbiAgICAgIHtlcnJvck1zZyAmJiAoXG4gICAgICAgIDxFcnJvckxhYmVsXG4gICAgICAgICAgY2xhc3NOYW1lcz17c3R5bGVzLnJlZnVuZEVycm9yTXNnfVxuICAgICAgICAgIGNvbG9yPVwiI0ZGMDAwMFwiXG4gICAgICAgICAgZGF0YVRlc3RJZD1cImZhaWxlZC1yZWZ1bmQtbWVzc2FnZVwiXG4gICAgICAgICAgbWVzc2FnZT17ZXJyb3JNc2d9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0fT5cbiAgICAgICAge3RpY2tldHNUb1JlZnVuZC5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcbiAgICAgICAgICAgIGtleT17YHJlZnVuZF9yZXFfJHt0aWNrZXQ/LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5DVEFCdXR0b25XcmFwcGVyfT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtcmV0dXJuLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2dvQmFja1RvUmVmdW5kfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmJhY2tcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jb250aW51ZS1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e3JlZnVuZFRpY2tldHN9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29udGludWVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG5cbiAgY29uc3QgcmVmdW5kU3RlcFRocmVlID0gKCkgPT4gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFN1Y2Nlc3NmdWx9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LXN1Y2Nlc3NmdWxcIlxuICAgID5cbiAgICAgIDxDaGVja0NpcmNsZUljb24gc3g9e3sgY29sb3I6IFwiIzRjYWY1MFwiIH19IC8+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMVwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnN1Y2Nlc3NNc2cyfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMlwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1maW5pc2gtYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgID5cbiAgICAgICAge3QoXCJnZW5lcmFsLmZpbmlzaFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvQm94PlxuICApO1xuXG4gIGNvbnN0IHJlbmRlclN0ZXBzID0gKCkgPT4ge1xuICAgIHN3aXRjaCAoc3RlcCkge1xuICAgICAgY2FzZSBTVEVQX09ORTpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICAgIGNhc2UgU1RFUF9UV086XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwVHdvKCk7XG4gICAgICBjYXNlIFNURVBfVEhSRUU6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwVGhyZWUoKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwT25lKCk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gKFxuICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgIDxSaWdodERyYXdlclxuICAgICAgICBpZD1cInJlZnVuZC1yZXF1ZXN0c1wiXG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uQ2xvc2U9e2Nsb3NlU2xpZGVyfVxuICAgICAgICB0aXRsZT17dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3QtbW9kYWxcIlxuICAgICAgPlxuICAgICAgICB7cmVuZGVyU3RlcHMoKX1cbiAgICAgIDwvUmlnaHREcmF3ZXI+XG4gICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgKTtcbn07XG5cblJlZnVuZFJlcXVlc3RzTW9kYWwucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvbkNsb3NlU2xpZGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kUmVxdWVzdHNNb2RhbDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSwgRHJhd2VyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IENsb3NlIGFzIENsb3NlSWNvbiB9IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJpZ2h0RHJhd2VyID0gKHsgaWQsIHRpdGxlLCBjaGlsZHJlbiwgb3Blbiwgb25DbG9zZSwgY2xhc3NOYW1lIH0pID0+IChcbiAgPERyYXdlclxuICAgIGlkPXtpZH1cbiAgICBvcGVuPXtvcGVufVxuICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgYW5jaG9yPVwicmlnaHRcIlxuICAgIE1vZGFsUHJvcHM9e3sga2VlcE1vdW50ZWQ6IGZhbHNlIH19XG4gICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMud3JhcHBlcn0gJHtjbGFzc05hbWV9YH1cbiAgPlxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiY2xvc2UtZHJhd2VyXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xvc2VCdG59XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgIHN4PXt7IGZsb2F0OiBcInJpZ2h0XCIgfX1cbiAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICA+XG4gICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgIHt0aXRsZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRHJhd2VyPlxuKTtcblxuUmlnaHREcmF3ZXIucHJvcFR5cGVzID0ge1xuICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aXRsZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm5vZGVdKSxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmlnaHREcmF3ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBzaGFsbG93RXF1YWwsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5pbXBvcnQgeyBnZXRTdW1taXRGb3JtYXR0ZWREYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N1bW1pdFV0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFN1bW1pdEhlYWRlciA9ICgpID0+IHtcbiAgY29uc3QgeyBzdW1taXQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sXG4gICAgc2hhbGxvd0VxdWFsXG4gICk7XG4gIHJldHVybiAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMud2lkZ2V0SGVhZGVyfVxuICAgICAgc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX1cbiAgICAgIGRhdGEtdGVzdGlkPVwibXktb3JkZXJzLXRpY2tldC1oZWFkZXJcIlxuICAgID5cbiAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PntzdW1taXQ/Lm5hbWV9PC9oMj5cbiAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PlxuICAgICAgICB7Z2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZShzdW1taXQpfVxuICAgICAgPC9oMj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFN1bW1pdEhlYWRlcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuXG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuXG5jb25zdCBEZWxlZ2F0ZUZvcm0gPSAoeyBvblN1Ym1pdCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHtcbiAgICAgIGRlbGVnYXRlX2ZpcnN0X25hbWU6IFwiXCIsXG4gICAgICBkZWxlZ2F0ZV9sYXN0X25hbWU6IFwiXCIsXG4gICAgICBkZWxlZ2F0ZV9lbWFpbDogXCJcIlxuICAgIH0sXG4gICAgdmFsaWRhdGlvblNjaGVtYTogeXVwLm9iamVjdCh7XG4gICAgICBkZWxlZ2F0ZV9maXJzdF9uYW1lOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUucmVxdWlyZWRcIikpLFxuICAgICAgZGVsZWdhdGVfbGFzdF9uYW1lOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5sYXN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgICAucmVxdWlyZWQodChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnJlcXVpcmVkXCIpKSxcbiAgICAgIGRlbGVnYXRlX2VtYWlsOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAgIC5lbWFpbCh0KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgfSksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMsIHsgcmVzZXRGb3JtIH0pID0+IHtcbiAgICAgIG9uU3VibWl0KHZhbHVlcyk7XG4gICAgICByZXNldEZvcm0oKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICgpID0+IHtcbiAgICBmb3JtaWsucmVzZXRGb3JtKCk7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0udGl0bGVcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uYm9keVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cImRlbGVnYXRlX2ZpcnN0X25hbWVcIlxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uZmlyc3RfbmFtZVwiKX1cbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZV9maXJzdF9uYW1lfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfZmlyc3RfbmFtZSAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2ZpcnN0X25hbWUpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfZmlyc3RfbmFtZSAmJlxuICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9maXJzdF9uYW1lXG4gICAgICAgICAgfVxuICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgIC8+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwiZGVsZWdhdGVfbGFzdF9uYW1lXCJcbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmxhc3RfbmFtZVwiKX1cbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZV9sYXN0X25hbWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9sYXN0X25hbWUgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9sYXN0X25hbWUpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfbGFzdF9uYW1lICYmXG4gICAgICAgICAgICBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2xhc3RfbmFtZVxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJkZWxlZ2F0ZV9lbWFpbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uZW1haWxcIil9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZV9lbWFpbH1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2VtYWlsICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZW1haWwpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfZW1haWwgJiYgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9lbWFpbFxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uc2F2ZVwiKX1cbiAgICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5jYW5jZWxcIil9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2FuY2VsfVxuICAgICAgICAgIGRpc2FibGVkPXtmb3JtaWsuaXNTdWJtaXR0aW5nfVxuICAgICAgICAvPlxuICAgICAgPC9mb3JtPlxuICAgIDwvPlxuICApO1xufTtcblxuRGVsZWdhdGVGb3JtLnByb3BUeXBlcyA9IHtcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERlbGVnYXRlRm9ybTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uLy4uLy4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEFzc2lnbkhlYWRlciA9ICh7IGluUHJvZ3Jlc3MsIHRpY2tldCwgdXNlckVtYWlsIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBhc3NpZ25lZFRvWW91ID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJFbWFpbDtcblxuICBjb25zdCBnZXRTZWNvbmRhcnlUaXRsZSA9ICgpID0+IHtcbiAgICBpZiAoaW5Qcm9ncmVzcyA9PT0gXCJtYW5hZ2VcIikge1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uZGVsZWdhdGVkXCIpfSAke1xuICAgICAgICB0aWNrZXQub3duZXIuZmlyc3RfbmFtZVxuICAgICAgfSAke3RpY2tldC5vd25lci5sYXN0X25hbWV9LmA7XG4gICAgfVxuXG4gICAgaWYgKGluUHJvZ3Jlc3MpIHtcbiAgICAgIGNvbnN0IHVzZXIgPSBhc3NpZ25lZFRvWW91ID8gXCJ5b3VcIiA6IHRpY2tldD8ub3duZXI/LmVtYWlsO1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uYXNzaWduZWRfdG9cIil9ICR7dXNlcn1gO1xuICAgIH1cblxuICAgIHJldHVybiB0aWNrZXQudGlja2V0X3R5cGUubmFtZTtcbiAgfTtcblxuICBjb25zdCBnZXRIZWFkZXJOb3RlID0gKCkgPT4ge1xuICAgIGlmIChpblByb2dyZXNzKSB7XG4gICAgICBpZiAoYXNzaWduZWRUb1lvdSkge1xuICAgICAgICByZXR1cm4gdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5hbnN3ZXJfeW91cl9lcVwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uYW5zd2VyX290aGVyc19lcVwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gXCJcIjtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnB1cmNoYXNlZEJ5V3JhcHBlcn0+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5wdXJjaGFzZWRCeX0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24ucHVyY2hhc2VkX2J5XCIpfXtcIiBcIn1cbiAgICAgICAgICB7dGlja2V0Py5vcmRlcj8ub3duZXJfZW1haWx9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTm99PlxuICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgIHdpZHRoPXsyNTB9XG4gICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDVcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHtnZXRTZWNvbmRhcnlUaXRsZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlck5vdGV9XG4gICAgICAgIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgID5cbiAgICAgICAge2dldEhlYWRlck5vdGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbi8vIEFkZGluZyBwcm9wLXR5cGVzIGZvciB0eXBlLWNoZWNraW5nXG5Bc3NpZ25IZWFkZXIucHJvcFR5cGVzID0ge1xuICBpblByb2dyZXNzOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB1c2VyRW1haWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduSGVhZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVhc3NpZ25IZWFkZXIgPSAoeyBpblByb2dyZXNzLCBhbGxvd3NEZWxlZ2F0ZSwgdGlja2V0LCB1c2VyRW1haWwgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGFzc2lnbmVkVG9Zb3UgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlckVtYWlsO1xuXG4gIGNvbnN0IGdldFNlY29uZGFyeVRpdGxlID0gKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSBhc3NpZ25lZFRvWW91ID8gXCJ5b3VcIiA6IHRpY2tldD8ub3duZXI/LmVtYWlsO1xuXG4gICAgaWYgKGluUHJvZ3Jlc3MgPT09IFwibWFuYWdlXCIpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uZGVsZWdhdGVkXCIpfSAke1xuICAgICAgICB0aWNrZXQub3duZXIuZmlyc3RfbmFtZVxuICAgICAgfSAke3RpY2tldC5vd25lci5sYXN0X25hbWV9LmA7XG4gICAgfVxuXG4gICAgaWYgKCFpblByb2dyZXNzKSB7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmFzc2lnbmVkX3RvXCIpfSAke3VzZXJ9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLnJlYXNzaWduZWRfdG9cIil9ICR7dXNlcn1gO1xuICB9O1xuXG4gIGNvbnN0IGdldEhlYWRlck5vdGUgPSAoKSA9PiB7XG4gICAgaWYgKCFpblByb2dyZXNzKSB7XG4gICAgICByZXR1cm4gYWxsb3dzRGVsZWdhdGVcbiAgICAgICAgPyB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uY2hvb3NlX29wdGlvblwiKVxuICAgICAgICA6IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5jaG9vc2Vfb3B0aW9uX25vX2RlbGVnYXRlXCIpO1xuICAgIH1cbiAgICBpZiAoYXNzaWduZWRUb1lvdSkge1xuICAgICAgcmV0dXJuIHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5hbnN3ZXJfeW91cl9lcVwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5hbnN3ZXJfb3RoZXJzX2VxXCIpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNVwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge2dldFNlY29uZGFyeVRpdGxlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeVxuICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyTm90ZX1cbiAgICAgICAgc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fVxuICAgICAgPlxuICAgICAgICB7Z2V0SGVhZGVyTm90ZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuLy8gQWRkaW5nIHByb3AtdHlwZXMgZm9yIHR5cGUtY2hlY2tpbmdcblJlYXNzaWduSGVhZGVyLnByb3BUeXBlcyA9IHtcbiAgaW5Qcm9ncmVzczogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdXNlckVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYXNzaWduSGVhZGVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5cbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5cbmNvbnN0IFJlYXNzaWduRm9ybSA9ICh7IG9uU3VibWl0LCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczoge1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiBcIlwiLFxuICAgICAgcGVyc29uYWxfbWVzc2FnZTogXCJcIlxuICAgIH0sXG4gICAgdmFsaWRhdGlvblNjaGVtYTogeXVwLm9iamVjdCh7XG4gICAgICBuZXdfYXR0ZW5kZWVfZW1haWw6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgICAgLmVtYWlsKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnJlcXVpcmVkXCIpKSxcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IHl1cC5zdHJpbmcodChcInZhbGlkYXRpb24udGV4dC5zdHJpbmdcIikpXG4gICAgfSksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMsIHsgcmVzZXRGb3JtIH0pID0+IHtcbiAgICAgIG9uU3VibWl0KHZhbHVlcyk7XG4gICAgICByZXNldEZvcm0oKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICgpID0+IHtcbiAgICBmb3JtaWsucmVzZXRGb3JtKCk7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0udGl0bGVcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uYm9keVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cIm5ld19hdHRlbmRlZV9lbWFpbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0ubmV3X2F0dGVuZGVlX2VtYWlsXCIpfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMubmV3X2F0dGVuZGVlX2VtYWlsfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQubmV3X2F0dGVuZGVlX2VtYWlsICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMubmV3X2F0dGVuZGVlX2VtYWlsKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLm5ld19hdHRlbmRlZV9lbWFpbCAmJlxuICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5uZXdfYXR0ZW5kZWVfZW1haWxcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgLz5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJwZXJzb25hbF9tZXNzYWdlXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5wZXJzb25hbF9tZXNzYWdlXCIpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLnBlcnNvbmFsX21lc3NhZ2V9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBtdWx0aWxpbmVcbiAgICAgICAgICBtaW5Sb3dzPXs0fVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2UpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJiBmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2VcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLnNhdmVcIil9XG4gICAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgICAgLz5cbiAgICAgIDwvZm9ybT5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblJlYXNzaWduRm9ybS5wcm9wVHlwZXMgPSB7XG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWFzc2lnbkZvcm07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIENvbGxhcHNlLCBEaXZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIGFzc2lnbkF0dGVuZGVlLFxuICBkZWxlZ2F0ZVRpY2tldCxcbiAgcmVhc3NpZ25UaWNrZXQsXG4gIHNhdmVFeHRyYVF1ZXN0aW9uc1xufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFJlYXNzaWduRm9ybSBmcm9tIFwiLi9jb21wb25lbnRzL1JlYXNzaWduRm9ybVwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IEFzc2lnbkVRRm9ybSBmcm9tIFwiLi4vQXNzaWduRVFGb3JtXCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IEN1c3RvbURpYWxvZyBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nXCI7XG5pbXBvcnQgdXNlR2V0VGlja2V0IGZyb20gXCIuLi8uLi9ob29rcy91c2VHZXRUaWNrZXRcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBEZWxlZ2F0ZUZvcm0gZnJvbSBcIi4vY29tcG9uZW50cy9EZWxlZ2F0ZUZvcm1cIjtcbmltcG9ydCBBc3NpZ25IZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9IZWFkZXIvQXNzaWduSGVhZGVyXCI7XG5pbXBvcnQgUmVhc3NpZ25IZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9IZWFkZXIvUmVhc3NpZ25IZWFkZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuXG5jb25zdCBUaWNrZXRBc3NpZ24gPSAoeyB0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgb3Blbiwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc2F2ZU1lc3NhZ2UsIHNldFNhdmVNZXNzYWdlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbYXNzaWduT3B0aW9uLCBzZXRBc3NpZ25PcHRpb25dID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFthc3NpZ25hdGlvbkluUHJvZ3Jlc3MsIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzc10gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qge1xuICAgIHN1bW1pdCxcbiAgICB1c2VyOiB7IHVzZXJQcm9maWxlIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfSA9IHVzZUdldFRpY2tldChcbiAgICB0aWNrZXRJZCxcbiAgICBvcmRlcklkLFxuICAgIG93bmVySWQsXG4gICAgb3BlblxuICApO1xuICBjb25zdCBpc0Fzc2lnbmVkVG9NZSA9IHVzZXJQcm9maWxlPy5lbWFpbCA9PT0gdGlja2V0Py5vd25lcj8uZW1haWw7XG4gIGNvbnN0IHsgYWxsb3dzRGVsZWdhdGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBvbkFzc2lnbiA9IChlbWFpbCwgbWVzc2FnZSA9IFwiXCIpID0+IHtcbiAgICBpZiAob3duZXJJZCkge1xuICAgICAgZGlzcGF0Y2gocmVhc3NpZ25UaWNrZXQob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSkudGhlbigoKSA9PiB7XG4gICAgICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhgJHthc3NpZ25PcHRpb259YCk7XG4gICAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwYXRjaChhc3NpZ25BdHRlbmRlZShvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwpKS50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgICAgc2V0QXNzaWduT3B0aW9uKG51bGwpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9uRGVsZWdhdGUgPSAoZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpID0+IHtcbiAgICBkaXNwYXRjaChcbiAgICAgIGRlbGVnYXRlVGlja2V0KG9yZGVySWQsIHRpY2tldElkLCBmaXJzdE5hbWUsIGxhc3ROYW1lLCBlbWFpbClcbiAgICApLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvbkNsb3NlRVFGb3JtID0gKCkgPT4ge1xuICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhcIlwiKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZVNhdmVNZXNzYWdlID0gKCkgPT4ge1xuICAgIHNldFNhdmVNZXNzYWdlKG51bGwpO1xuICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhcIlwiKTtcbiAgICBzZXRUaW1lb3V0KG9uQ2xvc2UsIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgY29uc3Qgb25TYXZlRVEgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVFeHRyYVF1ZXN0aW9ucyh0aWNrZXQsIGFuc3dlcnMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19zdWNjZXNzXCIpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0KFwidGlja2V0X2Fzc2lnbi5zYXZpbmdfc3VjY2Vzc19kZXNjcmlwdGlvblwiKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9hc3NpZ24uc2F2aW5nX2Vycm9yXCIpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBlcnIudG9TdHJpbmcoKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9KTtcbiAgfTtcblxuICBjb25zdCB0aXRsZSA9IG93bmVySWRcbiAgICA/IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi50aXRsZVwiKVxuICAgIDogdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi50aXRsZVwiKTtcbiAgY29uc3QgSGVhZGVyID0gb3duZXJJZCA/IFJlYXNzaWduSGVhZGVyIDogQXNzaWduSGVhZGVyO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxSaWdodERyYXdlclxuICAgICAgICBpZD1cInJlYXNzaWduRHJhd2VyXCJcbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgPlxuICAgICAgICB7dGlja2V0ICYmIGV4dHJhUXVlc3Rpb25zICYmIChcbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFJlYXNzaWduQ29udGFpbmVyfT5cbiAgICAgICAgICAgIDxIZWFkZXJcbiAgICAgICAgICAgICAgaW5Qcm9ncmVzcz17YXNzaWduYXRpb25JblByb2dyZXNzfVxuICAgICAgICAgICAgICBhbGxvd3NEZWxlZ2F0ZT17YWxsb3dzRGVsZWdhdGV9XG4gICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICB1c2VyRW1haWw9e3VzZXJQcm9maWxlLmVtYWlsfVxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAge2Fzc2lnbmF0aW9uSW5Qcm9ncmVzcyA/IChcbiAgICAgICAgICAgICAgPEFzc2lnbkVRRm9ybVxuICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlRVF9XG4gICAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduT3B0aW9uc1dyYXBwZXJ9PlxuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNBc3NpZ25lZFRvTWV9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbkFzc2lnbih1c2VyUHJvZmlsZS5lbWFpbCwgXCJcIil9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmFzc2lnbl90b19tZVwiKX1cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8RGl2aWRlciB2YXJpYW50PVwibWlkZGxlXCIgc3g9e3sgbXk6IDMsIHB4OiA0IH19PlxuICAgICAgICAgICAgICAgICAgb3JcbiAgICAgICAgICAgICAgICA8L0RpdmlkZXI+XG4gICAgICAgICAgICAgICAgPEJveD5cbiAgICAgICAgICAgICAgICAgIDxDb2xsYXBzZSBpbj17YXNzaWduT3B0aW9uID09PSBcIm90aGVyXCJ9IHRpbWVvdXQ9ezUwMH0+XG4gICAgICAgICAgICAgICAgICAgIDxSZWFzc2lnbkZvcm1cbiAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdD17KHZhbCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQXNzaWduKHZhbC5uZXdfYXR0ZW5kZWVfZW1haWwsIHZhbC5wZXJzb25hbF9tZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24obnVsbCl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L0NvbGxhcHNlPlxuICAgICAgICAgICAgICAgICAge2Fzc2lnbk9wdGlvbiAhPT0gXCJvdGhlclwiICYmIChcbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24oXCJvdGhlclwiKX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5hc3NpZ25fdG9fb3RoZXJcIil9XG4gICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICB7YWxsb3dzRGVsZWdhdGUgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPERpdmlkZXIgdmFyaWFudD1cIm1pZGRsZVwiIHN4PXt7IG15OiAzLCBweDogNCB9fT5cbiAgICAgICAgICAgICAgICAgICAgICBvclxuICAgICAgICAgICAgICAgICAgICA8L0RpdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxDb2xsYXBzZSBpbj17YXNzaWduT3B0aW9uID09PSBcIm1hbmFnZVwifSB0aW1lb3V0PXs1MDB9PlxuICAgICAgICAgICAgICAgICAgICAgIDxEZWxlZ2F0ZUZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdD17KHZhbCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZWxlZ2F0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfZmlyc3RfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfbGFzdF9uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5kZWxlZ2F0ZV9lbWFpbFxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24obnVsbCl9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9Db2xsYXBzZT5cbiAgICAgICAgICAgICAgICAgICAge2Fzc2lnbk9wdGlvbiAhPT0gXCJtYW5hZ2VcIiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFzc2lnbk9wdGlvbihcIm1hbmFnZVwiKX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ubWFuYWdlX3RpY2tldFwiKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgKX1cbiAgICAgIDwvUmlnaHREcmF3ZXI+XG4gICAgICA8Q3VzdG9tRGlhbG9nXG4gICAgICAgIG9wZW49eyEhc2F2ZU1lc3NhZ2V9XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VTYXZlTWVzc2FnZX1cbiAgICAgICAgdGl0bGU9e3NhdmVNZXNzYWdlPy50aXRsZX1cbiAgICAgICAgZGVzY3JpcHRpb249e3NhdmVNZXNzYWdlPy5kZXNjcmlwdGlvbn1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG5UaWNrZXRBc3NpZ24ucHJvcFR5cGVzID0ge1xuICB0aWNrZXRJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3JkZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3duZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRBc3NpZ247XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIEF1dG9jb21wbGV0ZSwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCBDb21wYW55RmllbGQgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBpc1JlcXVpcmVkIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW29wdGlvbnMsIHNldE9wdGlvbnNdID0gUmVhY3QudXNlU3RhdGUoW10pO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBzZXRGaWVsZFRvdWNoZWQsIHNldEZpZWxkVmFsdWUgfSA9IGZvcm1paztcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnk7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSA9PT0gXCJcIikge1xuICAgICAgc2V0T3B0aW9ucyh2YWx1ZSA/IFt2YWx1ZV0gOiBbXSk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzKHN1bW1pdElkLCBpbnB1dFZhbHVlLCAocmVzdWx0cykgPT4ge1xuICAgICAgbGV0IG5ld09wdGlvbnMgPSBbXTtcblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbdmFsdWVdO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICBuZXdPcHRpb25zID0gWy4uLm5ld09wdGlvbnMsIC4uLnJlc3VsdHNdO1xuICAgICAgfVxuXG4gICAgICBzZXRPcHRpb25zKG5ld09wdGlvbnMpO1xuICAgIH0pO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0sIFt2YWx1ZSwgaW5wdXRWYWx1ZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPEF1dG9jb21wbGV0ZVxuICAgICAgbmFtZT17bmFtZX1cbiAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICBhdXRvQ29tcGxldGVcbiAgICAgIGZyZWVTb2xvXG4gICAgICBpbmNsdWRlSW5wdXRJbkxpc3RcbiAgICAgIGZpbHRlclNlbGVjdGVkT3B0aW9uc1xuICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgb25CbHVyPXsoKSA9PiBzZXRGaWVsZFRvdWNoZWQobmFtZSwgdHJ1ZSwgdHJ1ZSl9XG4gICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4ge1xuICAgICAgICAvLyBWYWx1ZSBzZWxlY3RlZCB3aXRoIGVudGVyLCByaWdodCBmcm9tIHRoZSBpbnB1dFxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWRkIFwieHh4XCIgb3B0aW9uIGNyZWF0ZWQgZHluYW1pY2FsbHlcbiAgICAgICAgaWYgKG9wdGlvbi5pbnB1dFZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbi5pbnB1dFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlZ3VsYXIgb3B0aW9uXG4gICAgICAgIHJldHVybiBvcHRpb24ubmFtZTtcbiAgICAgIH19XG4gICAgICBvbkNoYW5nZT17KGV2ZW50LCBuZXdWYWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCB0bXBWYWx1ZSA9IG5ld1ZhbHVlPy5pbnB1dFZhbHVlIHx8IG5ld1ZhbHVlO1xuICAgICAgICBzZXRPcHRpb25zKHRtcFZhbHVlID8gW3RtcFZhbHVlLCAuLi5vcHRpb25zXSA6IG9wdGlvbnMpO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKG5hbWUsIHRtcFZhbHVlKTtcbiAgICAgIH19XG4gICAgICBvbklucHV0Q2hhbmdlPXsoZXZlbnQsIG5ld0lucHV0VmFsdWUpID0+IHtcbiAgICAgICAgc2V0SW5wdXRWYWx1ZShuZXdJbnB1dFZhbHVlKTtcbiAgICAgIH19XG4gICAgICBmaWx0ZXJPcHRpb25zPXsob3B0aW9ucywgcGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaW5wdXRWYWx1ZSB9ID0gcGFyYW1zO1xuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IFsuLi5vcHRpb25zXTtcbiAgICAgICAgLy8gU3VnZ2VzdCB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmFsdWVcbiAgICAgICAgY29uc3QgaXNFeGlzdGluZyA9IG9wdGlvbnMuc29tZShcbiAgICAgICAgICAob3B0aW9uKSA9PiBpbnB1dFZhbHVlID09PSBvcHRpb24udGl0bGVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGlucHV0VmFsdWUgIT09IFwiXCIgJiYgIWlzRXhpc3RpbmcpIHtcbiAgICAgICAgICBmaWx0ZXJlZC5wdXNoKHtcbiAgICAgICAgICAgIGlucHV0VmFsdWUsXG4gICAgICAgICAgICBuYW1lOiBgU2VsZWN0IFwiJHtpbnB1dFZhbHVlfVwiYFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgfX1cbiAgICAgIHJlbmRlcklucHV0PXsocGFyYW1zKSA9PiAoXG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5wYXJhbXN9XG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2NvbXBhbnlcIil9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgaGVscGVyVGV4dD17aGVscGVyVGV4dH1cbiAgICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICByZW5kZXJPcHRpb249eyhwcm9wcywgb3B0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHsga2V5LCAuLi5vcHRpb25Qcm9wcyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmdcbiAgICAgICAgICA8bGkga2V5PXtrZXl9IHsuLi5vcHRpb25Qcm9wc30+XG4gICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19PlxuICAgICAgICAgICAgICB7b3B0aW9uLm5hbWV9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn07XG5cbkNvbXBhbnlGaWVsZC5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzdW1taXRJZDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb21wYW55RmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgPSAoe1xuICBkaXNjbGFpbWVyLFxuICBmb3JtaWssXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgaXNSZXF1aXJlZCA9IHRydWVcbn0pID0+IHtcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZDtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57ZGlzY2xhaW1lcn08L1Jhd0hUTUw+fVxuICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e2Rpc2NsYWltZXJ9PC9SYXdIVE1MPn1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5SZWdpc3RyYXRpb25EaXNjbGFpbWVyLnByb3BUeXBlcyA9IHtcbiAgZGlzY2xhaW1lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzUmVxdWlyZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyBmcm9tIFwiLi4vLi4vLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHNcIjtcblxuaW1wb3J0IHtcbiAgZ2V0VHlwZVZhbHVlLFxuICB0b1NsdWdcbn0gZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcblxuaW1wb3J0IFRpY2tldE93bmVyRmllbGRzIGZyb20gXCIuLi9UaWNrZXRPd25lckZpZWxkc1wiO1xuaW1wb3J0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgZnJvbSBcIi4uL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lclwiO1xuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcbmltcG9ydCB1c2VTY3JvbGxUb0Vycm9yIGZyb20gXCIuLi8uLi8uLi8uLi9ob29rcy91c2VTY3JvbGxUb0Vycm9yXCI7XG5pbXBvcnQge1xuICBwYXJzZUFuc3dlcnMsXG4gIGJ1aWxkVmFsaWRhdGlvblNjaGVtYVxufSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuLi8uLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0Rm9ybSA9ICh7XG4gIHRpY2tldCxcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIHN1bW1pdCxcbiAgY2FuRWRpdCxcbiAgb25TdWJtaXQsXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBhbnN3ZXJzID0gdGlja2V0Py5vd25lcj8uZXh0cmFfcXVlc3Rpb25zLnJlZHVjZSgocmVzLCBhbnMpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcoYW5zLnF1ZXN0aW9uLm5hbWUsIGFucy5xdWVzdGlvbi5pZCk7XG4gICAgcmVzW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsdWUoYW5zLnZhbHVlLCBhbnMucXVlc3Rpb24udHlwZSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfSwge30pO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczogcGFyc2VBbnN3ZXJzKFxuICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICBhbnN3ZXJzLFxuICAgICAgdHJ1ZSxcbiAgICAgIHRydWVcbiAgICApLFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IGJ1aWxkVmFsaWRhdGlvblNjaGVtYShcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgdHJ1ZSxcbiAgICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnlcbiAgICApLFxuICAgIG9uU3VibWl0OiAodmFsdWVzKSA9PiB7XG4gICAgICBjb25zdCByZWxldmFudEFuc3dlcnMgPSBwYXJzZUFuc3dlcnMoXG4gICAgICAgIHRpY2tldC5vd25lcixcbiAgICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIG9uU3VibWl0KHJlbGV2YW50QW5zd2Vycyk7XG4gICAgfSxcbiAgICBlbmFibGVSZWluaXRpYWxpemU6IHRydWVcbiAgfSk7XG5cbiAgLy8gY29uc29sZS5sb2coXCJTVU1NSVQ6IFwiLCBzdW1taXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRJQ0tFVDogXCIsIHRpY2tldCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiUVVFU1RJVU9OczogXCIsIGV4dHJhUXVlc3Rpb25zKTtcbiAgLy8gY29uc29sZS5sb2coXCJBTlNXRVJTOiBcIiwgYW5zd2Vycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiRVJST1JzOiBcIiwgZm9ybWlrLmVycm9ycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVkFMVUVTOiBcIiwgZm9ybWlrLnZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiSU5JVElBTDogXCIsIGZvcm1pay5pbml0aWFsVmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJUT1VDSEVEOiBcIiwgZm9ybWlrLnRvdWNoZWQpO1xuXG4gIC8vIFNDUk9MTCBUTyBFUlJPUlxuICB1c2VTY3JvbGxUb0Vycm9yKGZvcm1paywgXCJkZXRhaWxzRHJhd2VyXCIpO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8VGlja2V0T3duZXJGaWVsZHNcbiAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgIGlzRGVsZWdhdGVkPXshIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZH1cbiAgICAgICAgc3VtbWl0SWQ9e3N1bW1pdC5pZH1cbiAgICAgICAgZGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgLz5cblxuICAgICAge2V4dHJhUXVlc3Rpb25zPy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBjbGFzc05hbWU9e3N0eWxlcy5hZGRpdGlvbmFsRGV0YWlsc30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYWRpdGlvbmFsX2RldGFpbHNcIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDxFeHRyYVF1ZXN0aW9uc0ZpZWxkc1xuICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgYWxsb3dFZGl0PXtjYW5FZGl0fVxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQgJiYgKFxuICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIGRpc2NsYWltZXI9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50fVxuICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgaXNEaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9kZXRhaWwuY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuVGlja2V0Rm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY2FuRWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRGb3JtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCBDb21wYW55RmllbGQgZnJvbSBcIi4uL0NvbXBhbnlGaWVsZFwiO1xuXG5jb25zdCBUaWNrZXRPd25lckZpZWxkcyA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGRpc2FibGVkLCBpc0RlbGVnYXRlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT17VElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWx9XG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5lbWFpbFwiKX1cbiAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgdmFsdWU9e3ZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF19XG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAvPlxuICAgICAge2lzRGVsZWdhdGVkICYmIChcbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgc3g9e3sgZm9udFdlaWdodDogNTAwLCBtYXJnaW46IFwiMTBweCAwXCIgfX0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLm1hbmFnZV9mb3JcIil9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICl9XG4gICAgICB7W1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZSwgVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdLm1hcChcbiAgICAgICAgKG5hbWUpID0+IChcbiAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgIGtleT17bmFtZX1cbiAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICBsYWJlbD17dChgdGlja2V0X2RldGFpbC4ke25hbWV9YCl9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWVzW25hbWVdfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkIHx8IGlzRGVsZWdhdGVkfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIGVycm9yPXt0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKX1cbiAgICAgICAgICAgIGhlbHBlclRleHQ9e2Zvcm1pay50b3VjaGVkW25hbWVdICYmIGZvcm1pay5lcnJvcnNbbmFtZV19XG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICApfVxuICAgICAgPENvbXBhbnlGaWVsZCBmb3JtaWs9e2Zvcm1pa30gc3VtbWl0SWQ9e3N1bW1pdElkfSBpc1JlcXVpcmVkIC8+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmluZm9Ob3RlfT57dChcInRpY2tldF9kZXRhaWwuaW5mb19ub3RlXCIpfTwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0T3duZXJGaWVsZHMucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0SWQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc0RlbGVnYXRlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldE93bmVyRmllbGRzO1xuIiwiZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCJcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFFSQ29kZSBmcm9tIFwicmVhY3QtcXItY29kZVwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIERyYXdlciwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBDbG9zZSBhcyBDbG9zZUljb24sXG4gIEZpbGVEb3dubG9hZE91dGxpbmVkIGFzIERvd25sb2FkSWNvbixcbiAgRW1haWxPdXRsaW5lZCBhcyBFbWFpbEljb25cbn0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0IHVzZUdldFRpY2tldCBmcm9tIFwiLi4vLi4vaG9va3MvdXNlR2V0VGlja2V0XCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IEN1c3RvbURpYWxvZyBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIFRXT19JVEVNIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRpY2tldEZvcm0gZnJvbSBcIi4vY29tcG9uZW50cy9UaWNrZXRGb3JtXCI7XG5pbXBvcnQge1xuICBnZXRUaWNrZXRQREYsXG4gIHNhdmVUaWNrZXREZXRhaWxzLFxuICByZXNlbmROb3RpZmljYXRpb25cbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXREZXRhaWwgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldElkLFxuICBvcmRlcklkLFxuICBvd25lcklkLFxuICBvcGVuLFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgeyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH0gPSB1c2VHZXRUaWNrZXQoXG4gICAgdGlja2V0SWQsXG4gICAgb3JkZXJJZCxcbiAgICBvd25lcklkLFxuICAgIG9wZW5cbiAgKTtcbiAgY29uc3QgW3NhdmVNZXNzYWdlLCBzZXRTYXZlTWVzc2FnZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW3NlbnRDb25maXJtYXRpb24sIHNldFNlbnRDb25maXJtYXRpb25dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBpc1VzZXJPcmRlck93bmVyID0gdGlja2V0Py5vcmRlcj8ub3duZXJfaWQgPT09IHVzZXJQcm9maWxlPy5pZDtcbiAgY29uc3QgaXNVc2VyVGlja2V0T3duZXIgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlclByb2ZpbGU/LmVtYWlsO1xuICBjb25zdCBjYW5FZGl0VGlja2V0RGF0YSA9XG4gICAgKGlzVXNlclRpY2tldE93bmVyIHx8IGlzVXNlck9yZGVyT3duZXIpICYmXG4gICAgc3VtbWl0LmFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnM7XG4gIGNvbnN0IHsgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIGNvbnN0IG9uU2F2ZSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZVRpY2tldERldGFpbHModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfc3VjY2Vzc1wiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdChcInRpY2tldF9kZXRhaWwuc2F2aW5nX3N1Y2Nlc3NfZGVzY3JpcHRpb25cIilcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19lcnJvclwiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZXJyLnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZVNhdmVNZXNzYWdlID0gKCkgPT4ge1xuICAgIHNldFNhdmVNZXNzYWdlKG51bGwpO1xuICAgIHNldFRpbWVvdXQob25DbG9zZSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICBjb25zdCBkb3dubG9hZFRpY2tldFBkZiA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChnZXRUaWNrZXRQREYodGlja2V0KSk7XG4gIH07XG5cbiAgY29uc3Qgb25TZW5kRW1haWwgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZW5kTm90aWZpY2F0aW9uKHRpY2tldCkpLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0U2VudENvbmZpcm1hdGlvbih0cnVlKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXRTZW50Q29uZmlybWF0aW9uKGZhbHNlKTtcbiAgICAgIH0sIE1JTExJU0VDX1RPX1NFQyAqIFRXT19JVEVNKTtcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8RHJhd2VyXG4gICAgICAgIGlkPVwiZGV0YWlsc0RyYXdlclwiXG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICAgICAgTW9kYWxQcm9wcz17eyBrZWVwTW91bnRlZDogZmFsc2UgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0RGV0YWlsQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICB7dGlja2V0ICYmIGV4dHJhUXVlc3Rpb25zICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgICAgICAgICAgc3g9e3sgZmxvYXQ6IFwicmlnaHRcIiB9fVxuICAgICAgICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNFwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgICAgICAgICAge3RpY2tldD8udGlja2V0X3R5cGU/Lm5hbWV9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTJcIlxuICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnB1cmNoYXNlZF9ieVwiKX0ge3RpY2tldD8ub3JkZXI/Lm93bmVyX2VtYWlsfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG5cbiAgICAgICAgICAgICAge2lzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnFyQ29kZX0+XG4gICAgICAgICAgICAgICAgICAgIDxRUkNvZGVcbiAgICAgICAgICAgICAgICAgICAgICBzaXplPXsyNTZ9XG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCJhdXRvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aWNrZXQucXJfY29kZX1cbiAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI1NiAyNTZcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9e3N0eWxlcy5zdGF0dXN9Pnt0KFwidGlja2V0X2RldGFpbC5zdGF0dXNcIil9PC9wPlxuICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkyXCJcbiAgICAgICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnFyTm90ZX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnFyX25vdGVcIil9XG4gICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgeyFzdW1taXQ/LmlzX3ZpcnR1YWwgJiYgaXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hY3Rpb25CdXR0b25zQ29udGFpbmVyfT5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZG93bmxvYWRCdG59XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtkb3dubG9hZFRpY2tldFBkZn1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPERvd25sb2FkSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmRvd25sb2FkXCIpfVxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnNlbmRCdG59ICR7XG4gICAgICAgICAgICAgICAgICAgICAgc2VudENvbmZpcm1hdGlvbiA/IHN0eWxlcy5zZW50IDogXCJcIlxuICAgICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17b25TZW5kRW1haWx9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtzZW50Q29uZmlybWF0aW9ufVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8RW1haWxJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICB7c2VudENvbmZpcm1hdGlvblxuICAgICAgICAgICAgICAgICAgICAgID8gdChcInRpY2tldF9kZXRhaWwuc2VudFwiKVxuICAgICAgICAgICAgICAgICAgICAgIDogdChcInRpY2tldF9kZXRhaWwuc2VuZFwiKX1cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJOdW1iZXJ9PlxuICAgICAgICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgICAgICAgIHdpZHRoPXsxNTB9XG4gICAgICAgICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvVGl0bGV9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfaW5mb3JtYXRpb25cIil9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAge3RpY2tldCAmJiAoXG4gICAgICAgICAgICAgICAgPFRpY2tldEZvcm1cbiAgICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICBjYW5FZGl0PXtjYW5FZGl0VGlja2V0RGF0YX1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmV9XG4gICAgICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvRHJhd2VyPlxuICAgICAgPEN1c3RvbURpYWxvZ1xuICAgICAgICBvcGVuPXshIXNhdmVNZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlU2F2ZU1lc3NhZ2V9XG4gICAgICAgIHRpdGxlPXtzYXZlTWVzc2FnZT8udGl0bGV9XG4gICAgICAgIGRlc2NyaXB0aW9uPXtzYXZlTWVzc2FnZT8uZGVzY3JpcHRpb259XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0RGV0YWlsLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3JkZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3duZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZXRhaWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBDb250YWluZXIsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRTdGF0dXMgPSAoeyB0aWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZTtcbiAgY29uc3QgcmVmdW5kUmVxdWVzdHMgPSB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5maW5kKFxuICAgIChyKSA9PiByLnN0YXR1cyA9PT0gXCJSZXF1ZXN0ZWRcIlxuICApO1xuICBjb25zdCB7IGlzSW5jb21wbGV0ZSwgaXNVbmFzc2lnbmVkLCBpc0NvbXBsZXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFN0YXR1c0NvbnRhaW5lcn0+XG4gICAgICB7aXNBY3RpdmUgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3JlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHJlZnVuZCByZXF1ZXN0ZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25SZWZ1bmRSZXF1ZXN0ZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19yZWZ1bmRfcmVxdWVzdGVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNJbmNvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGluY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25JbmNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfaW5jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzVW5hc3NpZ25lZCAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyB1bmFzc2lnbmVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uVW5hc3NpZ25lZH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNhbmNlbGxlZFwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ2FuY2VsbGVkfWB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NhbmNlbGxlZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufTtcblxuVGlja2V0U3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgcmVmdW5kUmVxdWVzdHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBEaXZpZGVyLFxuICBUYWJzLFxuICBUYWIsXG4gIHVzZVRoZW1lLFxuICB1c2VNZWRpYVF1ZXJ5XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBUQUJTIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IE15T3JkZXJzVGlja2V0cyBmcm9tIFwiLi4vTXlPcmRlcnNUaWNrZXRzXCI7XG5pbXBvcnQgQXNzaWduZWRUb01lIGZyb20gXCIuLi9PcmRlcnNMaXN0L0Fzc2lnbmVkVG9NZVwiO1xuXG5jb25zdCBXaWRnZXRUYWJzID0gKHsgdGl0bGUgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFt0YWIsIHNldFRhYl0gPSB1c2VTdGF0ZShUQUJTLk9SREVSUyk7XG5cbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBpc01vYmlsZSA9IHVzZU1lZGlhUXVlcnkodGhlbWUuYnJlYWtwb2ludHMuZG93bihcImxnXCIpKTtcblxuICBjb25zdCBoYW5kbGVUYWJDaGFuZ2UgPSAoXywgbmV3VGFiKSA9PiB7XG4gICAgc2V0VGFiKG5ld1RhYik7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRhYldyYXBwZXJ9PlxuICAgICAgPFRhYnNcbiAgICAgICAgdmFsdWU9e3RhYn1cbiAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRhYkNoYW5nZX1cbiAgICAgICAgdmFyaWFudD17aXNNb2JpbGUgPyBcImZ1bGxXaWR0aFwiIDogXCJzdGFuZGFyZFwifVxuICAgICAgPlxuICAgICAgICA8VGFiIGxhYmVsPXt0KFwib3JkZXJzLnRpdGxlXCIpfSB2YWx1ZT17VEFCUy5PUkRFUlN9IC8+XG4gICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMuYXNzaWduZWRfdG9fbWVcIil9IHZhbHVlPXtUQUJTLlRJQ0tFVFN9IC8+XG4gICAgICA8L1RhYnM+XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEJveCBzeD17eyBwdDogNiwgcGI6IDMgfX0+e3RpdGxlfTwvQm94PlxuICAgICAge3RhYiA9PT0gVEFCUy5PUkRFUlMgJiYgPE15T3JkZXJzVGlja2V0cyAvPn1cbiAgICAgIHt0YWIgPT09IFRBQlMuVElDS0VUUyAmJiA8QXNzaWduZWRUb01lIC8+fVxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgV2lkZ2V0VGFicztcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwsIGNvbm5lY3QgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICByZXNldEZpbHRlcixcbiAgcmVzZXRFcnJvcixcbiAgY2hhbmdlU29ydCxcbiAgY2hhbmdlRmlsdGVyXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgQ3VzdG9tVGhlbWUgZnJvbSBcIi4uL0N1c3RvbVRoZW1lXCI7XG5pbXBvcnQgTG9hZGVyIGZyb20gXCIuLi9Mb2FkZXJcIjtcbmltcG9ydCBDdXN0b21EaWFsb2dDb250ZXh0IGZyb20gXCIuLi9DdXN0b21EaWFsb2cvQ29udGV4dFwiO1xuaW1wb3J0IEN1c3RvbURpYWxvZyBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nXCI7XG5cbmltcG9ydCBGaWx0ZXJzIGZyb20gXCIuLi9GaWx0ZXJzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgV2lkZ2V0VGFicyBmcm9tIFwiLi4vV2lkZ2V0VGFic1wiO1xuaW1wb3J0IFN1bW1pdEhlYWRlciBmcm9tIFwiLi4vU3VtbWl0SGVhZGVyXCI7XG5cbmNvbnN0IFdpZGdldFdyYXBwZXIgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbbWVzc2FnZSwgc2V0TWVzc2FnZV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW21lc3NhZ2VDYWxsYmFjaywgc2V0TWVzc2FnZUNhbGxiYWNrXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCB7XG4gICAgbG9hZGluZyxcbiAgICBhcGlFcnJvcixcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVI6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IG9uUmVzZXQgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRGaWx0ZXIoKSk7XG4gIH07XG5cbiAgY29uc3QgcmVzZXRBcGlFcnJvciA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldEVycm9yKCkpO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFwaUVycm9yKSB7XG4gICAgICBzZXRNZXNzYWdlKGFwaUVycm9yKTtcbiAgICAgIHNldE1lc3NhZ2VDYWxsYmFjayhyZXNldEFwaUVycm9yKTtcbiAgICB9XG4gIH0sIFthcGlFcnJvcl0pO1xuXG4gIGNvbnN0IG9uRmlsdGVyID0gKGZpbHRlclZhbHVlKSA9PiB7XG4gICAgZGlzcGF0Y2goY2hhbmdlRmlsdGVyKGZpbHRlclZhbHVlKSk7XG4gIH07XG5cbiAgY29uc3Qgb25Tb3J0ID0gKHNvcnRWYWx1ZSkgPT4ge1xuICAgIGRpc3BhdGNoKGNoYW5nZVNvcnQoc29ydFZhbHVlKSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Q3VzdG9tVGhlbWU+XG4gICAgICA8TG9hZGVyIG9wZW49e2xvYWRpbmd9IC8+XG4gICAgICA8Q3VzdG9tRGlhbG9nXG4gICAgICAgIG9wZW49eyEhbWVzc2FnZX1cbiAgICAgICAgb25DbG9zZT17KCkgPT4ge1xuICAgICAgICAgIHNldE1lc3NhZ2UobnVsbCk7XG4gICAgICAgICAgaWYgKG1lc3NhZ2VDYWxsYmFjaykgbWVzc2FnZUNhbGxiYWNrKCk7XG4gICAgICAgIH19XG4gICAgICAgIGJvZHk9e21lc3NhZ2U/LmJvZHl9XG4gICAgICAgIHRpdGxlPXttZXNzYWdlPy50aXRsZX1cbiAgICAgIC8+XG4gICAgICA8RmlsdGVyc1xuICAgICAgICBvbkZpbHRlcj17b25GaWx0ZXJ9XG4gICAgICAgIG9uU29ydD17b25Tb3J0fVxuICAgICAgICBvblNlYXJjaD17b25GaWx0ZXJ9XG4gICAgICAgIG9uUmVzZXQ9e29uUmVzZXR9XG4gICAgICAvPlxuICAgICAgPEJveCBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMCwgbGc6IDAgfSB9fT5cbiAgICAgICAgPGgzIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldHNUaXRsZVRleHR9PlxuICAgICAgICAgIHtmaWx0ZXJWYWx1ZXNcbiAgICAgICAgICAgID8gdChcImxhYmVscy5zZWFyY2hfcmVzdWx0c1wiLCB7IGZpbHRlcjogZmlsdGVyVmFsdWVzIH0pXG4gICAgICAgICAgICA6IHQoXCJsYWJlbHMudGlja2V0c1wiKX1cbiAgICAgICAgPC9oMz5cbiAgICAgIDwvQm94PlxuICAgICAgPEN1c3RvbURpYWxvZ0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9eyhzZXRNZXNzYWdlLCBzZXRNZXNzYWdlQ2FsbGJhY2spfT5cbiAgICAgICAgPFdpZGdldFRhYnMgdGl0bGU9ezxTdW1taXRIZWFkZXIgLz59IC8+XG4gICAgICA8L0N1c3RvbURpYWxvZ0NvbnRleHQuUHJvdmlkZXI+XG4gICAgPC9DdXN0b21UaGVtZT5cbiAgKTtcbn07XG5cbmNvbnN0IG1hcFN0YXRlVG9Qcm9wcyA9ICh7IHdpZGdldFN0YXRlIH0pID0+ICh7XG4gIHNvcnQ6IHdpZGdldFN0YXRlLnNvcnQsXG4gIGZpbHRlcjogd2lkZ2V0U3RhdGUuZmlsdGVyXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgY29ubmVjdChtYXBTdGF0ZVRvUHJvcHMsIHt9KShXaWRnZXRXcmFwcGVyKTtcbiIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBnZXRFeHRyYVF1ZXN0aW9ucywgZ2V0VGlja2V0IH0gZnJvbSBcIi4uL2FjdGlvbnNcIjtcblxuY29uc3QgdXNlR2V0VGlja2V0ID0gKHRpY2tldElkLCBvcmRlcklkLCBvd25lcklkLCBydW4pID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJ1bikge1xuICAgICAgaWYgKHRpY2tldElkICYmIG9yZGVySWQpIHtcbiAgICAgICAgZGlzcGF0Y2goZ2V0VGlja2V0KHRpY2tldElkLCBvcmRlcklkKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvd25lcklkKSB7XG4gICAgICAgIGRpc3BhdGNoKGdldEV4dHJhUXVlc3Rpb25zKG93bmVySWQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFt0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgcnVuXSk7XG5cbiAgY29uc3QgeyBleHRyYVF1ZXN0aW9ucywgY3VycmVudFRpY2tldDogdGlja2V0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlXG4gICk7XG5cbiAgcmV0dXJuIHsgdGlja2V0LCBleHRyYVF1ZXN0aW9ucyB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdXNlR2V0VGlja2V0O1xuIiwiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5cbi8vIFNtb290aCBzY3JvbGxpbmcgZnVuY3Rpb24gdXNpbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lXG5mdW5jdGlvbiBzbW9vdGhTY3JvbGxUbyhjb250YWluZXIsIHRhcmdldFNjcm9sbFRvcCwgZHVyYXRpb24pIHtcbiAgY29uc3Qgc3RhcnRTY3JvbGxUb3AgPSBjb250YWluZXIuc2Nyb2xsVG9wO1xuICBjb25zdCBkaXN0YW5jZSA9IHRhcmdldFNjcm9sbFRvcCAtIHN0YXJ0U2Nyb2xsVG9wO1xuICBsZXQgc3RhcnRUaW1lID0gbnVsbDtcblxuICBmdW5jdGlvbiBhbmltYXRpb25TdGVwKHRpbWVzdGFtcCkge1xuICAgIGlmICghc3RhcnRUaW1lKSBzdGFydFRpbWUgPSB0aW1lc3RhbXA7XG4gICAgY29uc3QgZWxhcHNlZCA9IHRpbWVzdGFtcCAtIHN0YXJ0VGltZTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgY29uc3QgcHJvZ3Jlc3MgPSBNYXRoLm1pbihlbGFwc2VkIC8gZHVyYXRpb24sIDEpO1xuICAgIGNvbnN0IGVhc2VJbk91dFF1YWQgPVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICAgIHByb2dyZXNzIDwgMC41ID8gMiAqIHByb2dyZXNzICoqIDIgOiAxIC0gKC0yICogcHJvZ3Jlc3MgKyAyKSAqKiAyIC8gMjtcblxuICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSBzdGFydFNjcm9sbFRvcCArIGRpc3RhbmNlICogZWFzZUluT3V0UXVhZDtcblxuICAgIGlmIChlbGFwc2VkIDwgZHVyYXRpb24pIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRpb25TdGVwKTtcbiAgICB9XG4gIH1cblxuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uU3RlcCk7XG59XG5cbmNvbnN0IHVzZVNjcm9sbFRvRXJyb3IgPSAoZm9ybWlrLCBjb250YWluZXJJZCkgPT4ge1xuICBjb25zdCB7IGVycm9ycywgaXNWYWxpZCwgaXNTdWJtaXR0aW5nIH0gPSBmb3JtaWs7XG4gIGNvbnN0IGVycm9yQXJyYXkgPSBPYmplY3Qua2V5cyhlcnJvcnMpO1xuICBjb25zdCBlcnJvckNvdW50ID0gZXJyb3JBcnJheS5sZW5ndGg7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNWYWxpZCB8fCBlcnJvckNvdW50ID09PSAwKSByZXR1cm47XG5cbiAgICAvLyBzb3J0IGVsZW1lbnRzIGJ5IHBvc2l0aW9uXG4gICAgY29uc3QgZWxlbWVudHNTb3J0ZWQgPSBlcnJvckFycmF5XG4gICAgICAucmVkdWNlKChyZXN1bHQsIGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBpbnB1dFtuYW1lPScke2Vycm9yfSddYCk7XG4gICAgICAgIGlmICghZWxlbWVudCkgcmV0dXJuIHJlc3VsdDtcblxuICAgICAgICBjb25zdCBlbFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICByZXN1bHQucHVzaCh7IGVsZW1lbnQsIGVycm9yLCB0b3A6IGVsUmVjdC50b3AgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0sIFtdKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEudG9wIC0gYi50b3ApO1xuXG4gICAgaWYgKGVsZW1lbnRzU29ydGVkLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnRcbiAgICAgIC5nZXRFbGVtZW50QnlJZChjb250YWluZXJJZClcbiAgICAgIC5xdWVyeVNlbGVjdG9yKFwiLk11aURyYXdlci1wYXBlclwiKTtcbiAgICBjb25zdCB0YXJnZXQgPSBlbGVtZW50c1NvcnRlZFswXTtcblxuICAgIGlmIChjb250YWluZXI/LmNvbnRhaW5zKHRhcmdldC5lbGVtZW50KSkge1xuICAgICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBvZmZzZXQgb2YgdGhlIHRhcmdldCBlbGVtZW50IHJlbGF0aXZlIHRvIHRoZSBjb250YWluZXJcbiAgICAgIGNvbnN0IGVsZW1PZmZlc3QgPSAxMDA7XG4gICAgICBjb25zdCBhbmltYXRpb25EdXJhdGlvbiA9IDUwMDtcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9XG4gICAgICAgIHRhcmdldC50b3AgLSBjb250YWluZXJSZWN0LnRvcCArIGNvbnRhaW5lci5zY3JvbGxUb3AgLSBlbGVtT2ZmZXN0O1xuXG4gICAgICAvLyBTY3JvbGwgdGhlIGNvbnRhaW5lciB0byB0aGUgdGFyZ2V0IGVsZW1lbnQncyBwb3NpdGlvblxuICAgICAgc21vb3RoU2Nyb2xsVG8oY29udGFpbmVyLCBzY3JvbGxUb3AsIGFuaW1hdGlvbkR1cmF0aW9uKTsgLy8gNTAwbXMgZHVyYXRpb25cbiAgICB9XG4gIH0sIFtpc1N1Ym1pdHRpbmddKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVNjcm9sbFRvRXJyb3I7XG4iLCJpbXBvcnQgeyBpc1RpY2tldFJlZnVuZGFibGUgfSBmcm9tIFwiLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiQ29tcGxldGVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfSU5DT01QTEVURSA9IFwiSW5jb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19DQU5DRUxMRUQgPSBcIkNhbmNlbGxlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19VTkFTU0lHTkVEID0gXCJVbmFzc2lnbmVkXCI7XG5cbmV4cG9ydCBjb25zdCB1c2VUaWNrZXREZXRhaWxzID0gKHRpY2tldCkgPT4ge1xuICBjb25zdCBnZXRTdGF0dXMgPSAoKSA9PiB7XG4gICAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcbiAgICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG4gICAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuICAgIHJldHVybiB0aWNrZXQub3duZXIuc3RhdHVzO1xuICB9O1xuXG4gIGlmICghdGlja2V0KSByZXR1cm4ge307XG5cbiAgY29uc3Qgc3RhdHVzID0gZ2V0U3RhdHVzKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZSAmJiBzdGF0dXMgIT09IFNUQVRVU19DQU5DRUxMRUQ7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpO1xuICBjb25zdCBhbGxvd3NEZWxlZ2F0ZSA9XG4gICAgdGlja2V0Py50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX2RlbGVnYXRlIHx8XG4gICAgdGlja2V0Py5wcm9tb19jb2RlPy5hbGxvd3NfdG9fZGVsZWdhdGU7XG4gIGNvbnN0IGlzQ29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19DT01QTEVURTtcbiAgY29uc3QgaXNVbmFzc2lnbmVkID0gc3RhdHVzID09PSBTVEFUVVNfVU5BU1NJR05FRDtcbiAgY29uc3QgaXNJbmNvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfSU5DT01QTEVURTtcbiAgY29uc3QgY2FuUmVhc3NpZ24gPVxuICAgICFpc1VuYXNzaWduZWQgJiZcbiAgICB0aWNrZXQudGlja2V0X3R5cGU/LmFsbG93c190b19yZWFzc2lnbiAmJlxuICAgICghdGlja2V0LnByb21vX2NvZGUgfHwgdGlja2V0LnByb21vX2NvZGU/LmFsbG93c190b19yZWFzc2lnbik7XG5cbiAgcmV0dXJuIHtcbiAgICBzdGF0dXMsXG4gICAgaXNDb21wbGV0ZSxcbiAgICBpc1VuYXNzaWduZWQsXG4gICAgaXNJbmNvbXBsZXRlLFxuICAgIGlzQWN0aXZlLFxuICAgIGlzUmVmdW5kYWJsZSxcbiAgICBhbGxvd3NEZWxlZ2F0ZSxcbiAgICBjYW5SZWFzc2lnblxuICB9O1xufTtcbiIsImltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBpbml0UmVhY3RJMThuZXh0IH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBMYW5ndWFnZURldGVjdG9yIGZyb20gXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiO1xuaW1wb3J0IGVuIGZyb20gXCIuL2xvY2FsZXMvZW4uanNvblwiO1xuaW1wb3J0IGVzIGZyb20gXCIuL2xvY2FsZXMvZXMuanNvblwiO1xuXG4vLyBpbXBvcnQgQmFja2VuZCBmcm9tICdpMThuZXh0LWh0dHAtYmFja2VuZCc7XG4vLyBkb24ndCB3YW50IHRvIHVzZSB0aGlzP1xuLy8gaGF2ZSBhIGxvb2sgYXQgdGhlIFF1aWNrIHN0YXJ0IGd1aWRlXG4vLyBmb3IgcGFzc2luZyBpbiBsbmcgYW5kIHRyYW5zbGF0aW9ucyBvbiBpbml0XG5cbmkxOG5cbiAgLy8gbG9hZCB0cmFuc2xhdGlvbiB1c2luZyBodHRwIC0+IHNlZSAvcHVibGljL2xvY2FsZXMgKGkuZS4gaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvcmVhY3QtaTE4bmV4dC90cmVlL21hc3Rlci9leGFtcGxlL3JlYWN0L3B1YmxpYy9sb2NhbGVzKVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWh0dHAtYmFja2VuZFxuICAvLyB3YW50IHlvdXIgdHJhbnNsYXRpb25zIHRvIGJlIGxvYWRlZCBmcm9tIGEgcHJvZmVzc2lvbmFsIENETj8gPT4gaHR0cHM6Ly9naXRodWIuY29tL2xvY2l6ZS9yZWFjdC10dXRvcmlhbCNzdGVwLTItLS11c2UtdGhlLWxvY2l6ZS1jZG5cbiAgLy8gLnVzZShCYWNrZW5kKVxuICAvLyBkZXRlY3QgdXNlciBsYW5ndWFnZVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VEZXRlY3RvclxuICAudXNlKExhbmd1YWdlRGV0ZWN0b3IpXG4gIC8vIHBhc3MgdGhlIGkxOG4gaW5zdGFuY2UgdG8gcmVhY3QtaTE4bmV4dC5cbiAgLnVzZShpbml0UmVhY3RJMThuZXh0KVxuICAvLyBpbml0IGkxOG5leHRcbiAgLy8gZm9yIGFsbCBvcHRpb25zIHJlYWQ6IGh0dHBzOi8vd3d3LmkxOG5leHQuY29tL292ZXJ2aWV3L2NvbmZpZ3VyYXRpb24tb3B0aW9uc1xuICAuaW5pdCh7XG4gICAgZmFsbGJhY2tMbmc6IFwiZW5cIixcbiAgICBkZWJ1ZzogZmFsc2UsXG4gICAgcmVzb3VyY2VzOiB7XG4gICAgICBlbjogeyB0cmFuc2xhdGlvbjogZW4gfSxcbiAgICAgIGVzOiB7IHRyYW5zbGF0aW9uOiBlcyB9XG4gICAgfSxcbiAgICBpbnRlcnBvbGF0aW9uOiB7XG4gICAgICBlc2NhcGVWYWx1ZTogZmFsc2UgLy8gbm90IG5lZWRlZCBmb3IgcmVhY3QgYXMgaXQgZXNjYXBlcyBieSBkZWZhdWx0XG4gICAgfVxuICB9KTtcblxuZXhwb3J0IGRlZmF1bHQgaTE4bjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgeyBMT0dPVVRfVVNFUiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIFNUQVJUX0xPQURJTkcsXG4gIFNUT1BfTE9BRElORyxcbiAgUkVTRVRfTE9BRElOR1xufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBSRVNFVF9TVEFURSxcbiAgUkVTRVRfRklMVEVSLFxuICBTRVRfU1RBVEUsXG4gIFNFVF9VU0VSLFxuICBHRVRfVVNFUl9PUkRFUlMsXG4gIEdFVF9NWV9BU1NJR05FRF9USUNLRVRTLFxuICBHRVRfVElDS0VUU19CWV9PUkRFUixcbiAgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCxcbiAgUkVDRUlWRV9USUNLRVQsXG4gIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TLFxuICBVUERBVEVfVElDS0VULFxuICBBU1NJR05fVElDS0VULFxuICBSRVNFVF9BUElfRVJST1IsXG4gIFNFVF9BUElfRVJST1IsXG4gIFJFU0VUX1RJQ0tFVCxcbiAgQ0hBTkdFX0ZJTFRFUixcbiAgQ0hBTkdFX1NPUlQsXG4gIEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSxcbiAgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIsXG4gIEZJTFRFUl9WQVJfREFURSxcbiAgRklMVEVSX1ZBUl9USUNLRVRfVFlQRSxcbiAgRklMVEVSX1ZBUl9GUkVFX1BBSUQsXG4gIEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTLFxuICBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCxcbiAgRklMVEVSX1ZBUl9QUk9NT0NPREUsXG4gIERFTEVHQVRFX1RJQ0tFVFxufSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBGSVJTVF9QQUdFLCBUQUJTIH0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBoYXNMb2FkZWRBbGxEYXRhIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgREVGQVVMVF9GSUxURVJfU1RBVEUgPSB7XG4gIFtGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfREFURV06IG51bGxcbn07XG5cbmNvbnN0IERFRkFVTFRfU1RBVEUgPSB7XG4gIHN1bW1pdDogbnVsbCxcbiAgdXNlcjoge30sXG4gIHdpZGdldExvYWRpbmc6IGZhbHNlLFxuICBtZW1iZXJPcmRlcnM6IFtdLFxuICB1c2VyVGlja2V0czogW10sXG4gIGV4dHJhUXVlc3Rpb25zOiBbXSxcbiAgY3VycmVudFRpY2tldDogbnVsbCxcbiAgZXJyb3JzOiB7fSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGN1cnJlbnRfdGFiOiBUQUJTLk9SREVSUyxcbiAgc29ydDoge30sXG4gIGZpbHRlcjogREVGQVVMVF9GSUxURVJfU1RBVEUsXG4gIGlzT3JkZXJMb2FkaW5nOiBmYWxzZSxcbiAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMCxcbiAgb3JkZXJzX2xhc3RfcGFnZTogMCxcbiAgb3JkZXJzX3Blcl9wYWdlOiA1LFxuICBvcmRlcnNfdG90YWw6IDAsXG4gIHRpY2tldF9jdXJyZW50X3BhZ2U6IDAsXG4gIHRpY2tldF9sYXN0X3BhZ2U6IDAsXG4gIHRpY2tldF9wZXJfcGFnZTogNSxcbiAgdGlja2V0X3RvdGFsOiAwLFxuICB1c2VyX3RpY2tldHNfdG90YWw6IDAsXG4gIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2U6IDAsXG4gIHVzZXJfdGlja2V0c19sYXN0X3BhZ2U6IDAsXG4gIGFwaUVycm9yOiBudWxsXG59O1xuXG5jb25zdCBXaWRnZXRSZWR1Y2VyID0gKHN0YXRlID0gREVGQVVMVF9TVEFURSwgeyB0eXBlLCBwYXlsb2FkIH0gPSB7fSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIExPR09VVF9VU0VSOlxuICAgIGNhc2UgUkVTRVRfU1RBVEU6XG4gICAgICByZXR1cm4gREVGQVVMVF9TVEFURTtcbiAgICBjYXNlIFNUQVJUX0xPQURJTkc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbG9hZGluZzogdHJ1ZSB9O1xuICAgIGNhc2UgU1RPUF9MT0FESU5HOlxuICAgIGNhc2UgUkVTRVRfTE9BRElORzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBsb2FkaW5nOiBmYWxzZSB9O1xuICAgIGNhc2UgUkVTRVRfQVBJX0VSUk9SOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFwaUVycm9yOiBudWxsIH07XG4gICAgY2FzZSBSRVNFVF9GSUxURVI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZmlsdGVyOiBERUZBVUxUX0ZJTFRFUl9TVEFURSxcbiAgICAgICAgc29ydDoge30sXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IDEsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IDFcbiAgICAgIH07XG4gICAgY2FzZSBTRVRfU1RBVEU6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgLi4ucGF5bG9hZCB9O1xuICAgIGNhc2UgU0VUX0FQSV9FUlJPUjoge1xuICAgICAgY29uc3QgeyB0aXRsZSwgaHRtbDogYm9keSB9ID0gcGF5bG9hZDtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhcGlFcnJvcjogeyB0aXRsZSwgYm9keSB9IH07XG4gICAgfVxuICAgIGNhc2UgU0VUX1VTRVI6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgdXNlcjogcGF5bG9hZCB9O1xuICAgIGNhc2UgQ0hBTkdFX0ZJTFRFUjoge1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGZpbHRlcjogeyAuLi5zdGF0ZS5maWx0ZXIsIC4uLnBheWxvYWQgfSB9O1xuICAgIH1cbiAgICBjYXNlIENIQU5HRV9TT1JUOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgc29ydDogeyAuLi5wYXlsb2FkIH0gfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfVVNFUl9PUkRFUlM6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuXG4gICAgICBpZiAoaGFzTG9hZGVkQWxsRGF0YShjdXJyZW50X3BhZ2UsIG1lbWJlck9yZGVycywgdG90YWwpKSByZXR1cm4gc3RhdGU7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6XG4gICAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFID8gZGF0YSA6IFsuLi5tZW1iZXJPcmRlcnMsIC4uLmRhdGFdLFxuICAgICAgICBvcmRlcnNfdG90YWw6IHRvdGFsLFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IGxhc3RfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfTVlfQVNTSUdORURfVElDS0VUUzoge1xuICAgICAgY29uc3QgeyB1c2VyVGlja2V0cyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcblxuICAgICAgaWYgKGhhc0xvYWRlZEFsbERhdGEoY3VycmVudF9wYWdlLCB1c2VyVGlja2V0cywgdG90YWwpKSByZXR1cm4gc3RhdGU7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICB1c2VyVGlja2V0czpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0UgPyBkYXRhIDogWy4uLnVzZXJUaWNrZXRzLCAuLi5kYXRhXSxcbiAgICAgICAgdXNlcl90aWNrZXRzX3RvdGFsOiB0b3RhbCxcbiAgICAgICAgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZTogY3VycmVudF9wYWdlLFxuICAgICAgICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlOiBsYXN0X3BhZ2VcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgR0VUX1RJQ0tFVFNfQllfT1JERVI6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgZm9ybWVyT3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZCgobykgPT4gby5pZCA9PT0gZGF0YVswXT8ub3JkZXJfaWQpO1xuXG4gICAgICBpZiAoaGFzTG9hZGVkQWxsRGF0YShjdXJyZW50X3BhZ2UsIGZvcm1lck9yZGVyPy5tZW1iZXJUaWNrZXRzLCB0b3RhbCkpXG4gICAgICAgIHJldHVybiBzdGF0ZTtcblxuICAgICAgY29uc3QgdXBkYXRlZE9yZGVyID0ge1xuICAgICAgICAuLi5mb3JtZXJPcmRlcixcbiAgICAgICAgbWVtYmVyVGlja2V0czpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0VcbiAgICAgICAgICAgID8gZGF0YVxuICAgICAgICAgICAgOiBbLi4uZm9ybWVyT3JkZXIubWVtYmVyVGlja2V0cywgLi4uZGF0YV0sXG4gICAgICAgIHRpY2tldHNfcGFnZV9jdXJyZW50OiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfcGFnZV9sYXN0OiBsYXN0X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfdG90YWw6IHRvdGFsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRDoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgdGlja2V0c1JlZnVuZFJlcXVlc3RlZCA9IHBheWxvYWQ7XG4gICAgICBjb25zdCBvcmRlciA9IG1lbWJlck9yZGVycy5maW5kKFxuICAgICAgICAobykgPT4gby5pZCA9PT0gdGlja2V0c1JlZnVuZFJlcXVlc3RlZFswXT8ub3JkZXJfaWRcbiAgICAgICk7XG4gICAgICBjb25zdCB1cGRhdGVkVGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzLm1hcChcbiAgICAgICAgKHRpY2tldCkgPT5cbiAgICAgICAgICB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkLmZpbmQoKHRycikgPT4gdHJyLmlkID09PSB0aWNrZXQuaWQpIHx8IHRpY2tldFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4ub3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6IHVwZGF0ZWRUaWNrZXRzXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgUkVTRVRfVElDS0VUOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogbnVsbCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXQgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TOiB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZXh0cmFRdWVzdGlvbnM6IGRhdGEgfTtcbiAgICB9XG4gICAgY2FzZSBVUERBVEVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXREYXRhID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IHN0YXRlLm1lbWJlck9yZGVycy5tYXAoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPSBvcmRlci5tZW1iZXJUaWNrZXRzLm1hcCgodGlja2V0KSA9PiB7XG4gICAgICAgICAgaWYgKHRpY2tldC5pZCA9PT0gdGlja2V0RGF0YS5pZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRpY2tldERhdGE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aWNrZXQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7IC4uLm9yZGVyLCBtZW1iZXJUaWNrZXRzOiBuZXdUaWNrZXRzIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIG1lbWJlck9yZGVyczogbmV3T3JkZXJzIH07XG4gICAgfVxuICAgIGNhc2UgREVMRUdBVEVfVElDS0VUOlxuICAgIGNhc2UgQVNTSUdOX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gb3JkZXIubWVtYmVyVGlja2V0cy5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgIGlmICh0aWNrZXQuaWQgPT09IHRpY2tldERhdGEuaWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aWNrZXREYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGlja2V0O1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4geyAuLi5vcmRlciwgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiB0aWNrZXREYXRhLCBtZW1iZXJPcmRlcnM6IG5ld09yZGVycyB9O1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRSZWR1Y2VyO1xuIiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29uZmlndXJlU3RvcmUgfSBmcm9tIFwiQHJlZHV4anMvdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgcGVyc2lzdFN0b3JlLFxuICBwZXJzaXN0UmVkdWNlcixcbiAgRkxVU0gsXG4gIFJFSFlEUkFURSxcbiAgUEFVU0UsXG4gIFBFUlNJU1QsXG4gIFBVUkdFLFxuICBSRUdJU1RFUlxufSBmcm9tIFwicmVkdXgtcGVyc2lzdFwiO1xuaW1wb3J0IHN0b3JhZ2UgZnJvbSBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIjtcbmltcG9ydCB7IGNvbWJpbmVSZWR1Y2VycyB9IGZyb20gXCJyZWR1eFwiO1xuaW1wb3J0IFdpZGdldFJlZHVjZXIgZnJvbSBcIi4vcmVkdWNlclwiO1xuXG5leHBvcnQgY29uc3QgZ2V0U3RvcmUgPSAoe1xuICBjbGllbnRJZCxcbiAgbG9naW5VcmwsXG4gIHN1bW1pdCxcbiAgYXBpQmFzZVVybCxcbiAgdXBkYXRlUHJvZmlsZVxufSkgPT4ge1xuICAvLyB0byBhZGQgb3RoZXIgcmVkdWNlcnMgbGF0ZXJcbiAgY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICAgIHdpZGdldFN0YXRlOiBXaWRnZXRSZWR1Y2VyXG4gIH0pO1xuXG4gIGNvbnN0IHN0b3JlID0gY29uZmlndXJlU3RvcmUoe1xuICAgIHJlZHVjZXI6IHBlcnNpc3RSZWR1Y2VyKFxuICAgICAge1xuICAgICAgICBrZXk6IGByb290X215X29yZGVyc190aWNrZXRzXyR7Y2xpZW50SWR9YCxcbiAgICAgICAgc3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHJlZHVjZXJzXG4gICAgKSxcbiAgICBtaWRkbGV3YXJlOiAoZ2V0RGVmYXVsdE1pZGRsZXdhcmUpID0+XG4gICAgICBnZXREZWZhdWx0TWlkZGxld2FyZSh7XG4gICAgICAgIHRodW5rOiB7XG4gICAgICAgICAgZXh0cmFBcmd1bWVudDoge1xuICAgICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgICBhcGlCYXNlVXJsLFxuICAgICAgICAgICAgc3VtbWl0LFxuICAgICAgICAgICAgbG9naW5VcmwsXG4gICAgICAgICAgICB1cGRhdGVQcm9maWxlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpbW11dGFibGVDaGVjazogZmFsc2UsXG4gICAgICAgIHNlcmlhbGl6YWJsZUNoZWNrOiB7XG4gICAgICAgICAgaWdub3JlZEFjdGlvbnM6IFtGTFVTSCwgUkVIWURSQVRFLCBQQVVTRSwgUEVSU0lTVCwgUFVSR0UsIFJFR0lTVEVSXVxuICAgICAgICB9XG4gICAgICB9KVxuICB9KTtcblxuICByZXR1cm4gc3RvcmU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlSW5pdFN0b3JlID0gKGNvbmZpZykgPT4ge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oKCkgPT4gZ2V0U3RvcmUoY29uZmlnKSwgW10pO1xuICBjb25zdCBwZXJzaXN0b3IgPSB1c2VNZW1vKCgpID0+IHBlcnNpc3RTdG9yZShzdG9yZSksIFtzdG9yZV0pO1xuXG4gIHJldHVybiB7XG4gICAgc3RvcmUsXG4gICAgcGVyc2lzdG9yXG4gIH07XG59O1xuIiwiaW1wb3J0IHtcbiAgaW5pdExvZ091dCxcbiAgZ2V0QWNjZXNzVG9rZW5cbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0ICogYXMgU2VudHJ5IGZyb20gXCJAc2VudHJ5L3JlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBnZXRBY2Nlc3NUb2tlblNhZmVseSA9IGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0QWNjZXNzVG9rZW4oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0OjpnZXRBY2Nlc3NUb2tlblNhZmVseSBlcnJvcjogXCIsIGUpO1xuICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGUpO1xuICAgIGluaXRMb2dPdXQoKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgfVxufTtcbiIsImV4cG9ydCBjb25zdCBMQVNUX0hPVVJfT0ZfMjRfSE9VUiA9IDIzO1xuZXhwb3J0IGNvbnN0IExBU1RfTUlOVVRFX09GX0hPVVIgPSA1OTtcbmV4cG9ydCBjb25zdCBPTkVfUEFHRV9ORVhUID0gMTtcbmV4cG9ydCBjb25zdCBNSUxMSVNFQ19UT19TRUMgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IE9ORV9EQVkgPSAxO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgPSA1O1xuZXhwb3J0IGNvbnN0IEZJUlNUX1BBR0UgPSAxO1xuZXhwb3J0IGNvbnN0IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCA9IDU7XG5leHBvcnQgY29uc3QgU1RFUF9PTkUgPSAxO1xuZXhwb3J0IGNvbnN0IFNURVBfVFdPID0gMjtcbmV4cG9ydCBjb25zdCBTVEVQX1RIUkVFID0gMztcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiU1RBVFVTX0NPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIlNUQVRVU19JTkNPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BFTkRJTkcgPSBcIlNUQVRVU19QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiU1RBVFVTX0NBTkNFTExFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19FUlJPUiA9IFwiU1RBVFVTX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BST0NFU1NJTkcgPSBcIlNUQVRVU19QUk9DRVNTSU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlNUQVRVU19VTkFTU0lHTkVEXCI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1BFTkRJTkcgPSBcIlNUQVRVU19SRUZVTkRfUEVORElOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfQVBQUk9WRUQgPSBcIlNUQVRVU19SRUZVTkRfQVBQUk9WRURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEID0gXCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDID0gXCJSZXF1ZXN0ZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDID0gXCJBcHByb3ZlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMgPSBcIlJlamVjdGVkXCI7XG5cbmV4cG9ydCBjb25zdCBKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMgPSAxMDAwMDtcblxuZXhwb3J0IGNvbnN0IE9ORV9JVEVNID0gMTtcbmV4cG9ydCBjb25zdCBUV09fSVRFTSA9IDI7XG5leHBvcnQgY29uc3QgRklWRV9JVEVNID0gNTtcbmV4cG9ydCBjb25zdCBTSVhfSVRFTSA9IDY7XG5cbmV4cG9ydCBjb25zdCBQUk9NSVNFX0JBVENIX0xJTUlUID0gMTA7XG5leHBvcnQgY29uc3QgRklGVFlfUEVSX1BBR0UgPSA1MDtcblxuZXhwb3J0IGNvbnN0IEVSUk9SX0NPREVTID0ge1xuICA0MDE6IDQwMSxcbiAgNDAzOiA0MDEsXG4gIDQxMjogNDAxLFxuICA1MDA6IDUwMFxufTtcblxuZXhwb3J0IGNvbnN0IFRBQlMgPSB7XG4gIE9SREVSUzogXCJPUkRFUlNcIixcbiAgVElDS0VUUzogXCJUSUNLRVRTXCJcbn07XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQge1xuICBMQVNUX0hPVVJfT0ZfMjRfSE9VUixcbiAgTEFTVF9NSU5VVEVfT0ZfSE9VUixcbiAgTUlMTElTRUNfVE9fU0VDLFxuICBGSVJTVF9QQUdFXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0Q3VycmVuY3kgPSAodmFsdWUsIHsgbG9jYWxlID0gXCJlbi1VU1wiLCAuLi5vcHRpb25zIH0pID0+IHtcbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgY3VycmVuY3k6IFwiVVNEXCIsXG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMlxuICB9O1xuXG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIHtcbiAgICBzdHlsZTogXCJjdXJyZW5jeVwiLFxuICAgIC4uLmRlZmF1bHRPcHRpb25zLFxuICAgIC4uLm9wdGlvbnNcbiAgfSk7XG5cbiAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQodmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZERhdGUgPSAoZGF0ZXRpbWUsIHRpbWVab25lKSA9PiB7XG4gIGlmICh0aW1lWm9uZSlcbiAgICByZXR1cm4gbW9tZW50XG4gICAgICAudHooZGF0ZXRpbWUgKiBNSUxMSVNFQ19UT19TRUMsIHRpbWVab25lKVxuICAgICAgLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG5cbiAgcmV0dXJuIG1vbWVudC51bml4KGRhdGV0aW1lKS5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZU9yZGVyVG90YWxzID0gKHsgb3JkZXIsIHN1bW1pdCB9KSA9PiB7XG4gIGlmICghb3JkZXIgfHwgIXN1bW1pdCkgcmV0dXJuIHt9O1xuICBjb25zdCB0aWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM7XG4gIGlmICghdGlja2V0cykgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHsgcmVmdW5kZWRfYW1vdW50LCBkaXNjb3VudF9hbW91bnQsIHRheGVzX2Ftb3VudCwgYW1vdW50IH0gPSBvcmRlcjtcbiAgY29uc3QgeyB0aWNrZXRfdHlwZXMgfSA9IHN1bW1pdDtcblxuICBjb25zdCB0aWNrZXRTdW1tYXJ5ID0gW107XG4gIGxldCBwdXJjaGFzZVRpY2tldFRvdGFsID0gMDtcblxuICBjb25zdCBjdXJyZW5jeU9iamVjdCA9IHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH07XG5cbiAgT2JqZWN0LmtleXMob3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlKS5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHRpY2tldFR5cGUgPSB0aWNrZXRfdHlwZXM/LmZpbmQoKHR0KSA9PiB0dC5uYW1lID09PSB0aWNrZXQpO1xuICAgIGlmICghdGlja2V0VHlwZSkgcmV0dXJuIG51bGw7XG4gICAgdGlja2V0U3VtbWFyeS5wdXNoKHtcbiAgICAgIHRpY2tldF90eXBlX2lkOiB0aWNrZXRUeXBlLmlkLFxuICAgICAgdGlja2V0X3R5cGU6IHRpY2tldFR5cGUsXG4gICAgICBuYW1lOiB0aWNrZXQsXG4gICAgICBxdHk6IG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdXG4gICAgfSk7XG4gICAgcHVyY2hhc2VUaWNrZXRUb3RhbCArPVxuICAgICAgdGlja2V0VHlwZS5jb3N0ICogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF07XG5cbiAgICByZXR1cm4gdGlja2V0U3VtbWFyeTtcbiAgfSk7XG5cbiAgY29uc3QgcHVyY2hhc2VUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVGlja2V0VG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICBjb25zdCBkaXNjb3VudFRvdGFsID0gZm9ybWF0Q3VycmVuY3koZGlzY291bnRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHJlZnVuZFRvdGFsID0gZm9ybWF0Q3VycmVuY3kocmVmdW5kZWRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHRheGVzVG90YWwgPSBmb3JtYXRDdXJyZW5jeSh0YXhlc19hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgYW1vdW50VG90YWwgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3JkZXIsIFwiYW1vdW50XCIpXG4gICAgPyBmb3JtYXRDdXJyZW5jeShhbW91bnQsIGN1cnJlbmN5T2JqZWN0KVxuICAgIDogZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIHJldHVybiB7XG4gICAgZGlzY291bnRUb3RhbCxcbiAgICByZWZ1bmRUb3RhbCxcbiAgICB0YXhlc1RvdGFsLFxuICAgIGFtb3VudFRvdGFsLFxuICAgIHRpY2tldFN1bW1hcnlcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPcmRlclRpY2tldHMgPSAobWVtYmVyT3JkZXJzLCBvcmRlcklkKSA9PiB7XG4gIGNvbnN0IG9yZGVycyA9IG1lbWJlck9yZGVycy5maWx0ZXIoKG8pID0+IG8uaWQgPT09IG9yZGVySWQpO1xuICByZXR1cm4gb3JkZXJzWzBdPy5tZW1iZXJUaWNrZXRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyA9ICh0cykgPT4ge1xuICBjb25zdCBsb3dlciA9IHRzLnNldEhvdXJzKDAsIDAsIDAsIDApIC8gTUlMTElTRUNfVE9fU0VDO1xuICBjb25zdCB1cHBlciA9XG4gICAgdHMuc2V0SG91cnMoTEFTVF9IT1VSX09GXzI0X0hPVVIsIExBU1RfTUlOVVRFX09GX0hPVVIsIDAsIDApIC9cbiAgICBNSUxMSVNFQ19UT19TRUM7XG4gIHJldHVybiB7XG4gICAgbG93ZXIsXG4gICAgdXBwZXJcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q3VycmVudFRpbWUgPSAoKSA9PlxuICBNYXRoLnJvdW5kKCtuZXcgRGF0ZSgpIC8gTUlMTElTRUNfVE9fU0VDKTtcblxuZXhwb3J0IGNvbnN0IGdldE5vdyA9ICgpID0+IChkaXNwYXRjaCwgZ2V0U3RhdGUpID0+IHtcbiAgY29uc3QgeyB0aW1lclN0YXRlIH0gPSBnZXRTdGF0ZSgpO1xuICByZXR1cm4gdGltZXJTdGF0ZT8ubm93VXRjID09IG51bGwgPyBkZWZhdWx0Q3VycmVudFRpbWUoKSA6IHRpbWVyU3RhdGU/Lm5vd1V0Yztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VOb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICByZXR1cm4gZGlzcGF0Y2goZ2V0Tm93KCkpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gcmVxdWVzdGVkUGFnZVxuICogQHBhcmFtIGN1cnJlbnRQYWdlXG4gKiBAcGFyYW0gbGFzdFBhZ2VcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgY29uc3Qgc2hvdWxkRmV0Y2hEYXRhID0gKHJlcXVlc3RlZFBhZ2UsIGN1cnJlbnRQYWdlLCBsYXN0UGFnZSkgPT4ge1xuICBsZXQgcmVzID0gdHJ1ZTtcblxuICBpZiAocmVxdWVzdGVkUGFnZSA8PSAwKSByZXMgPSBmYWxzZTtcblxuICBjb25zdCBpc1NhbWVQYWdlID0gY3VycmVudFBhZ2UgPiAwICYmIHJlcXVlc3RlZFBhZ2UgPT09IGN1cnJlbnRQYWdlO1xuICBjb25zdCBpc0xhc3RQYWdlID0gY3VycmVudFBhZ2UgPiAwICYmIGN1cnJlbnRQYWdlID09PSBsYXN0UGFnZTtcblxuICBpZiAoaXNTYW1lUGFnZSB8fCBpc0xhc3RQYWdlKSByZXMgPSBmYWxzZTtcblxuICBpZiAocmVxdWVzdGVkUGFnZSA9PT0gRklSU1RfUEFHRSkgcmVzID0gdHJ1ZTtcblxuICBjb25zb2xlLmxvZyhcbiAgICBgbXktb3JkZXJzLXRpY2tldC13aWRnZXQ6OnV0aWxzOjpzaG91bGRGZXRjaERhdGEgcmVxdWVzdGVkUGFnZSAke3JlcXVlc3RlZFBhZ2V9IGN1cnJlbnRQYWdlICR7Y3VycmVudFBhZ2V9IGxhc3RQYWdlICR7bGFzdFBhZ2V9IHJlcyAke3Jlc31gXG4gICk7XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cbi8qKlxuICogQHBhcmFtIGN1cnJlbnRQYWdlXG4gKiBAcGFyYW0gbGFzdFBhZ2VcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgY29uc3QgaGFzTW9yZTJGZXRjaCA9IChjdXJyZW50UGFnZSwgbGFzdFBhZ2UpID0+IHtcbiAgY29uc3QgcmVzID0gY3VycmVudFBhZ2UgPiAwICYmIGN1cnJlbnRQYWdlIDwgbGFzdFBhZ2U7XG4gIGNvbnNvbGUubG9nKFxuICAgIGBteS1vcmRlcnMtdGlja2V0LXdpZGdldDo6dXRpbHM6Omhhc01vcmUyRmV0Y2ggY3VycmVudFBhZ2UgJHtjdXJyZW50UGFnZX0gbGFzdFBhZ2UgJHtsYXN0UGFnZX0gcmVzICR7cmVzfWBcbiAgKTtcbiAgcmV0dXJuIHJlcztcbn07XG5cbi8qKlxuICogQHBhcmFtIGN1cnJlbnRQYWdlXG4gKiBAcGFyYW0gZGF0YVxuICogQHBhcmFtIHRvdGFsXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGNvbnN0IGhhc0xvYWRlZEFsbERhdGEgPSAoY3VycmVudFBhZ2UsIGRhdGEsIHRvdGFsKSA9PiB7XG4gIGxldCByZXMgPSBmYWxzZTtcbiAgY29uc3QgZGF0YUxlbmd0aCA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhLmxlbmd0aCA6IDA7XG4gIC8vIHdlIGFscmVhZHkgbG9hZGVkIGFsbCAgZGF0YSAoIGZpcnN0IHBhZ2UgaXMgYWx3YXlzIHJlbG9hZGVkIGl0IClcbiAgaWYgKGN1cnJlbnRQYWdlID4gRklSU1RfUEFHRSAmJiBkYXRhTGVuZ3RoID4gMCAmJiBkYXRhTGVuZ3RoID09PSB0b3RhbClcbiAgICByZXMgPSB0cnVlO1xuICBjb25zb2xlLmxvZyhcbiAgICBgbXktb3JkZXJzLXRpY2tldC13aWRnZXQ6OnV0aWxzOjpoYXNMb2FkZWRBbGxEYXRhIGN1cnJlbnRQYWdlICR7Y3VycmVudFBhZ2V9IGRhdGEubGVuZ3RoICR7ZGF0YUxlbmd0aH0gcmVzICR7cmVzfWBcbiAgKTtcbiAgcmV0dXJuIHJlcztcbn07XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQywgT05FX0RBWSB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi5cIjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrU3VtbWl0UGFzdCA9IChzdW1taXQsIG5vdykgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgcmVhc3NpZ25fZGF0ZSA9XG4gICAgc3VtbWl0Py5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlICYmXG4gICAgc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgPCBzdW1taXQuZW5kX2RhdGVcbiAgICAgID8gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGVcbiAgICAgIDogc3VtbWl0LmVuZF9kYXRlO1xuXG4gIHJldHVybiBub3cgPiByZWFzc2lnbl9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrU3VtbWl0U3RhcnRlZCA9IChzdW1taXQsIG5vdykgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHN1bW1pdC5zdGFydF9kYXRlIDwgbm93O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdERheXNEaWZmID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHN0YXJ0RGF5ID0gbW9tZW50KHN1bW1pdC5zdGFydF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGVuZERheSA9IG1vbWVudChzdW1taXQuZW5kX2RhdGUgKiBNSUxMSVNFQ19UT19TRUMpLnR6KFxuICAgIHN1bW1pdC50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZGF5cyA9IGVuZERheT8uZGlmZihzdGFydERheSwgXCJkYXlzXCIpO1xuICByZXR1cm4ge1xuICAgIHN0YXJ0RGF5LFxuICAgIGVuZERheSxcbiAgICBkYXlzXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCB7IHN0YXJ0RGF5LCBlbmREYXksIGRheXMgfSA9IGdldFN1bW1pdERheXNEaWZmKHN1bW1pdCk7XG4gIGlmICghc3RhcnREYXkgfHwgIWVuZERheSkgcmV0dXJuIG51bGw7XG4gIGxldCBmb3JtYXRTdGFydERhdGUgPSBcIk1NTU0gREQsIFlZWVlcIjtcbiAgbGV0IGZvcm1hdEVuZERhdGUgPSBcIk1NTU0gREQsIFlZWVlcIjtcbiAgaWYgKHN0YXJ0RGF5LnllYXIoKSA9PT0gZW5kRGF5LnllYXIoKSkgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIEREXCI7XG4gIGlmIChzdGFydERheS5tb250aCgpID09PSBlbmREYXkubW9udGgoKSkgZm9ybWF0RW5kRGF0ZSA9IFwiREQsIFlZWVlcIjtcblxuICBjb25zdCBzdGFydERhdGUgPSBzdGFydERheS5mb3JtYXQoZm9ybWF0U3RhcnREYXRlKTtcbiAgY29uc3QgZW5kRGF0ZSA9IGVuZERheS5mb3JtYXQoZm9ybWF0RW5kRGF0ZSk7XG5cbiAgaWYgKGRheXMgPiBPTkVfREFZKSByZXR1cm4gYCR7c3RhcnREYXRlfSAtICR7ZW5kRGF0ZX1gO1xuXG4gIHJldHVybiBzdGFydERhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0TG9jYXRpb24gPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBsb2NhdGlvbiA9IHN1bW1pdC5sb2NhdGlvbnM/LmZpbmQoXG4gICAgKGwpID0+IGwuY2xhc3NfbmFtZSA9PT0gXCJTdW1taXRWZW51ZVwiICYmIGwuaXNfbWFpbiA9PT0gdHJ1ZVxuICApO1xuXG4gIGlmICghbG9jYXRpb24pIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBgJHtsb2NhdGlvbi5jaXR5fSwgJHtsb2NhdGlvbi5jb3VudHJ5fWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0UmVhc3NpZ25EYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlICYmXG4gICAgc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgPCBzdW1taXQuZW5kX2RhdGVcbiAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgOiBzdW1taXQuZW5kX2RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlU3VtbWl0RGV0YWlscyA9ICh7IHN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuXG4gIGlmICghc3VtbWl0KSByZXR1cm4ge307XG5cbiAgY29uc3QgbG9jYXRpb24gPSBnZXRTdW1taXRMb2NhdGlvbihzdW1taXQpO1xuICBjb25zdCBmb3JtYXR0ZWREYXRlID0gZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZShzdW1taXQpO1xuICBjb25zdCByZWFzc2lnbkRhdGUgPSBnZXRTdW1taXRSZWFzc2lnbkRhdGUoc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkUmVhc3NpZ25EYXRlID0gbW9tZW50LnR6KFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBzdW1taXQudGltZV96b25lPy50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSA9IGdldFN1bW1pdERheXNEaWZmKFxuICAgIG5vdyxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8ubmFtZVxuICApO1xuXG4gIGNvbnN0IGlzUGFzdCA9IGNoZWNrU3VtbWl0UGFzdChzdW1taXQsIG5vdyk7XG4gIGNvbnN0IGlzU3RhcnRlZCA9IGNoZWNrU3VtbWl0U3RhcnRlZChzdW1taXQsIG5vdyk7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID0gcmVhc3NpZ25EYXRlID4gbm93O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogc3VtbWl0Py5uYW1lLFxuICAgIG5vdyxcbiAgICBsb2NhdGlvbixcbiAgICBmb3JtYXR0ZWREYXRlLFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBmb3JtYXR0ZWRSZWFzc2lnbkRhdGUsXG4gICAgZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSxcbiAgICBpc1Bhc3QsXG4gICAgaXNTdGFydGVkLFxuICAgIGlzUmVhc3NpZ25hYmxlXG4gIH07XG59O1xuIiwiaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcbmltcG9ydCBpMThuIGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQge1xuICBTVEFUVVNfQ0FOQ0VMTEVELFxuICBTVEFUVVNfQ09NUExFVEUsXG4gIFNUQVRVU19JTkNPTVBMRVRFLFxuICBTVEFUVVNfVU5BU1NJR05FRCxcbiAgU1RBVFVTX1JFRlVORF9QRU5ESU5HLFxuICBTVEFUVVNfUkVGVU5EX0FQUFJPVkVELFxuICBTVEFUVVNfUkVGVU5EX1JFSkVDVEVELFxuICBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMsXG4gIFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTEMsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURURfTENcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb25zdGFudHNcIjtcbmltcG9ydCB7XG4gIGNoZWNrSWZWYWx1ZU1hdGNoLFxuICBnZXRUeXBlSW5pdGlhbFZhbHVlLFxuICB0b1NsdWdcbn0gZnJvbSBcIi4uL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBzdGF0dXNEYXRhID0ge1xuICBbU1RBVFVTX1VOQVNTSUdORURdOiB7XG4gICAgdHlwZTogU1RBVFVTX1VOQVNTSUdORUQsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy51bmFzc2lnbmVkXCIpXG4gIH0sXG4gIFtTVEFUVVNfSU5DT01QTEVURV06IHtcbiAgICB0eXBlOiBTVEFUVVNfSU5DT01QTEVURSxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmluY29tcGxldGVcIilcbiAgfSxcbiAgW1NUQVRVU19DT01QTEVURV06IHtcbiAgICB0eXBlOiBTVEFUVVNfQ09NUExFVEUsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5jb21wbGV0ZVwiKVxuICB9LFxuICBbU1RBVFVTX0NBTkNFTExFRF06IHtcbiAgICB0eXBlOiBTVEFUVVNfQ0FOQ0VMTEVELFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuY2FuY2VsbGVkXCIpXG4gIH1cbn07XG5leHBvcnQgY29uc3QgZ2V0VGlja2V0U3RhdHVzS2V5ID0gKHRpY2tldCkgPT4ge1xuICBpZiAoIXRpY2tldC5pc19hY3RpdmUpIHJldHVybiBTVEFUVVNfQ0FOQ0VMTEVEO1xuXG4gIGlmICh0aWNrZXQub3duZXJfaWQgPT09IDApIHJldHVybiBTVEFUVVNfVU5BU1NJR05FRDtcblxuICBpZiAoIXRpY2tldC5vd25lcj8uZmlyc3RfbmFtZSB8fCAhdGlja2V0Lm93bmVyPy5sYXN0X25hbWUpXG4gICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIGlmICh0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiSW5jb21wbGV0ZVwiKVxuICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcblxuICBpZiAodGlja2V0Lm93bmVyICYmIHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkNvbXBsZXRlXCIpXG4gICAgcmV0dXJuIFNUQVRVU19DT01QTEVURTtcblxuICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0U3RhdHVzRGF0YSA9ICh0aWNrZXQsIGlzU3VtbWl0UGFzdCkgPT5cbiAgc3RhdHVzRGF0YVtnZXRUaWNrZXRTdGF0dXNLZXkodGlja2V0LCBpc1N1bW1pdFBhc3QpXTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFJvbGUgPSAodGlja2V0KSA9PiB7XG4gIGlmICghdGlja2V0LmJhZGdlKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCB7IGZlYXR1cmVzIH0gPSB0aWNrZXQuYmFkZ2U7XG5cbiAgaWYgKGZlYXR1cmVzLmxlbmd0aCA+IDApXG4gICAgcmV0dXJuIGZlYXR1cmVzLm1hcCgoZmVhdHVyZSkgPT4gZmVhdHVyZS5uYW1lKS5qb2luKFwiLCBcIik7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0VHlwZSA9ICh0aWNrZXQsIHN1bW1pdCkgPT5cbiAgc3VtbWl0LnRpY2tldF90eXBlcy5maW5kKCh0eXBlKSA9PiB0eXBlLmlkID09PSB0aWNrZXQudGlja2V0X3R5cGVfaWQpO1xuXG5leHBvcnQgY29uc3QgaXNUaWNrZXRSZWZ1bmRhYmxlID0gKHRpY2tldCkgPT5cbiAgdGlja2V0Py5maW5hbF9hbW91bnQgPiAwICYmXG4gIHRpY2tldD8uZmluYWxfYW1vdW50ID4gdGlja2V0Py5yZWZ1bmRlZF9hbW91bnQgJiZcbiAgIXRpY2tldD8ucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTENcbiAgKTtcblxuZXhwb3J0IGNvbnN0IHRpY2tldHNSZWZ1bmRhYmxlID0gKHRpY2tldHMpID0+XG4gIHRpY2tldHM/LmZpbHRlcigodGlja2V0KSA9PiBpc1RpY2tldFJlZnVuZGFibGUodGlja2V0KSkubGVuZ3RoIHx8IDA7XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRlZFJlcXVlc3RlZFRpY2tldHMgPSAodGlja2V0cykgPT5cbiAgdGlja2V0cz8uZmlsdGVyKCh0aWNrZXQpID0+XG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZSgocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDKVxuICApO1xuZXhwb3J0IGNvbnN0IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMgPSAodGlja2V0cykgPT4ge1xuICBjb25zdCBhbGxUaWNrZXRzID0gW107XG4gIHRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiB7XG4gICAgaWYgKFxuICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQ1xuICAgICAgKSB8fFxuICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTENcbiAgICAgICkgfHxcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDXG4gICAgICApXG4gICAgKSB7XG4gICAgICBhbGxUaWNrZXRzLnB1c2godGlja2V0KTtcbiAgICB9XG4gICAgcmV0dXJuIHRpY2tldDtcbiAgfSk7XG4gIHJldHVybiBhbGxUaWNrZXRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZGVkUmVxdWVzdGVkU3RhdHVzID0gKHRpY2tldCkgPT4ge1xuICBpZiAoXG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZSgocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDKVxuICApXG4gICAgcmV0dXJuIFNUQVRVU19SRUZVTkRfUEVORElORztcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQ1xuICAgIClcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEO1xuICBpZiAoXG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDXG4gICAgKVxuICApXG4gICAgcmV0dXJuIFNUQVRVU19SRUZVTkRfUkVKRUNURUQ7XG4gIHJldHVybiBTVEFUVVNfUkVGVU5EX1BFTkRJTkc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IgPSAodGlja2V0KSA9PiB7XG4gIGNvbnN0IHN0YXR1cyA9IGdldFJlZnVuZGVkUmVxdWVzdGVkU3RhdHVzKHRpY2tldCk7XG4gIGxldCBzdGF0dXNDb2xvciA9IFwiXCI7XG4gIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX1BFTkRJTkc6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicGVuZGluZ1wiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcImFwcHJvdmVkXCI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNUQVRVU19SRUZVTkRfUkVKRUNURUQ6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicmVqZWN0ZWRcIjtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicGVuZGluZ1wiO1xuICB9XG4gIHJldHVybiBzdGF0dXNDb2xvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlVmFsaWRhdGlvbiA9ICh0eXBlLCBuYW1lLCBpc1JlcXVpcmVkKSA9PiB7XG4gIGxldCBzY2hlbWE7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgc2NoZW1hID0geXVwLmJvb2woKS5vbmVPZihbdHJ1ZV0sIGkxOG4udChcInZhbGlkYXRpb24uY2hlY2tib3gucmVxdWlyZWRcIikpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgc2NoZW1hID0geXVwLmFycmF5KCkub2YoeXVwLnN0cmluZygpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKGAke25hbWV9IGlzIHJlcXVpcmVkYCk7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlQW5zd2VycyA9IChcbiAgb3duZXIsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBhbnN3ZXJzLFxuICBpbmNsdWRlQXR0ZW5kZWVJbmZvLFxuICBpbmNsdWRlRGlzY2xhaW1lcixcbiAgb25seVJlbGV2YW50ID0gZmFsc2VcbikgPT4ge1xuICBjb25zdCBpbml0aWFsVmFsdWVzID0ge307XG5cbiAgaWYgKGluY2x1ZGVBdHRlbmRlZUluZm8pIHtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSB8fCBvd25lci5lbWFpbCB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gfHwgb3duZXIuZmlyc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdIHx8IG93bmVyLmxhc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSB8fCBvd25lci5jb21wYW55O1xuICB9XG5cbiAgaWYgKGluY2x1ZGVEaXNjbGFpbWVyKSB7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSB8fFxuICAgICAgb3duZXIuZGlzY2xhaW1lcl9hY2NlcHRlZDtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICBjb25zdCBhbnN3ZXIgPSBhbnN3ZXJzW3F1ZXN0aW9uU2x1Z107XG4gICAgaW5pdGlhbFZhbHVlc1txdWVzdGlvblNsdWddID0gYW5zd2VyIHx8IGdldFR5cGVJbml0aWFsVmFsdWUocSk7XG5cbiAgICBpZiAocS5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHEuc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgICAgY29uc3Qgc3ViUXVlc3Rpb25TbHVnID0gdG9TbHVnKFxuICAgICAgICAgIHJ1bGUuc3ViX3F1ZXN0aW9uLm5hbWUsXG4gICAgICAgICAgcnVsZS5zdWJfcXVlc3Rpb24uaWRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgc3ViQW5zd2VyID0gYW5zd2Vyc1tzdWJRdWVzdGlvblNsdWddO1xuICAgICAgICBjb25zdCBtYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKGFuc3dlciwgcnVsZS5hbnN3ZXJfdmFsdWVzKTtcblxuICAgICAgICBpZiAoIW9ubHlSZWxldmFudCB8fCBtYXRjaCkge1xuICAgICAgICAgIGluaXRpYWxWYWx1ZXNbc3ViUXVlc3Rpb25TbHVnXSA9XG4gICAgICAgICAgICBzdWJBbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShydWxlLnN1Yl9xdWVzdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGluaXRpYWxWYWx1ZXM7XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRWYWxpZGF0aW9uU2NoZW1hID0gKFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgaW5jbHVkZUF0dGVuZGVlSW5mbyxcbiAgZGlzY2xhaW1lck1hbmRhdG9yeVxuKSA9PiB7XG4gIGNvbnN0IHNjaGVtYSA9IHt9O1xuXG4gIGlmIChpbmNsdWRlQXR0ZW5kZWVJbmZvKSB7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgIC5lbWFpbChpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSA9IHl1cC5sYXp5KCh2YWx1ZSkgPT5cbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIlxuICAgICAgICA/IHl1cFxuICAgICAgICAgICAgLm9iamVjdCgpXG4gICAgICAgICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5jb21wYW55LnJlcXVpcmVkXCIpKVxuICAgICAgICAgICAgLnR5cGVFcnJvcihpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX2ZpZWxkXCIpKVxuICAgICAgICA6IHl1cC5zdHJpbmcoKS5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmNvbXBhbnkucmVxdWlyZWRcIikpXG4gICAgKTtcbiAgfVxuXG4gIGlmIChkaXNjbGFpbWVyTWFuZGF0b3J5KSB7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gPSB5dXBcbiAgICAgIC5ib29sKClcbiAgICAgIC5vbmVPZihbdHJ1ZV0sIGkxOG4udChcInZhbGlkYXRpb24uY2hlY2tib3gucmVxdWlyZWRcIikpO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIHNjaGVtYVtxdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24ocS50eXBlLCBxLm5hbWUsIHEubWFuZGF0b3J5KTtcblxuICAgIGlmIChxLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgcS5zdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICBjb25zdCBzdWJRdWVzdGlvbiA9IHJ1bGUuc3ViX3F1ZXN0aW9uO1xuICAgICAgICBjb25zdCBzdWJRdWVzdGlvblNsdWcgPSB0b1NsdWcoc3ViUXVlc3Rpb24ubmFtZSwgc3ViUXVlc3Rpb24uaWQpO1xuICAgICAgICBzY2hlbWFbc3ViUXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWxpZGF0aW9uKFxuICAgICAgICAgIHN1YlF1ZXN0aW9uLnR5cGUsXG4gICAgICAgICAgc3ViUXVlc3Rpb24ubmFtZSxcbiAgICAgICAgICBmYWxzZVxuICAgICAgICApXG4gICAgICAgICAgLm51bGxhYmxlKClcbiAgICAgICAgICAud2hlbihxdWVzdGlvblNsdWcsIHtcbiAgICAgICAgICAgIGlzOiAocXVlc3Rpb25BbnMpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChxdWVzdGlvbkFucywgcnVsZS5hbnN3ZXJfdmFsdWVzKTtcbiAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoZW46IChzY2gpID0+IHNjaC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX3F1ZXN0aW9uXCIpKVxuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4geXVwLm9iamVjdChzY2hlbWEpO1xufTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjb3B5SWNvbl9fX2xJM2VRXCI7XG52YXIgXzIgPSBcInJldmVyc2VkX19fekp6bURcIjtcbnZhciBfMyA9IFwidHJ1bmNhdGVkX19faldTblVcIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX21WUGlSXCI7XG5leHBvcnQgeyBfMSBhcyBcImNvcHlJY29uXCIsIF8yIGFzIFwicmV2ZXJzZWRcIiwgXzMgYXMgXCJ0cnVuY2F0ZWRcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVfX19teEVLV1wiO1xudmFyIF8yID0gXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJfX19PNHNTc1wiO1xudmFyIF8zID0gXCJjYWxlbmRhckRpc3BsYXlfX19GM251S1wiO1xudmFyIF80ID0gXCJjbGVhbkJ1dHRvbl9fX3FxRHZVXCI7XG52YXIgXzUgPSBcImNvbnRhaW5lcl9fX1FlUVlfXCI7XG52YXIgXzYgPSBcImRhdGVQaWNrZXJDb250YWluZXJfX19aNDJtd1wiO1xudmFyIF83ID0gXCJkYXRlcGlja2VyQ2xvc2VfX19UWjdrSlwiO1xudmFyIF84ID0gXCJmaWx0ZXJDaGVja2JveENvbnRhaW5lcl9fX2tVblc5XCI7XG52YXIgXzkgPSBcImZpbHRlckNvbnRhaW5lcl9fX3JycXA5XCI7XG52YXIgX2EgPSBcImZpbHRlckRhdGVMYWJlbF9fX0pnYmNzXCI7XG52YXIgX2IgPSBcImZpbHRlckljb25fX19paU96b1wiO1xudmFyIF9jID0gXCJmaWx0ZXJMYWJlbF9fX3NrWlA3XCI7XG52YXIgX2QgPSBcImZpbHRlckxpc3RDb250YWluZXJfX19JRHJsU1wiO1xudmFyIF9lID0gXCJmaWx0ZXJOdW1BY3RpdmVfX19rbUVFS1wiO1xudmFyIF9mID0gXCJmaWx0ZXJTb3J0Q29udGFpbmVyX19fbmhOSnNcIjtcbnZhciBfMTAgPSBcImxhYmVsX19fTEFtZV9cIjtcbnZhciBfMTEgPSBcInNob3dGaWx0ZXJMaXN0X19fSVc0eEdcIjtcbnZhciBfMTIgPSBcInNvcnRDb250YWluZXJfX19zYjVCZFwiO1xudmFyIF8xMyA9IFwic29ydEljb25fX19jX1haaVwiO1xudmFyIF8xNCA9IFwic29ydExhYmVsX19fZFhpTXlcIjtcbnZhciBfMTUgPSBcInNvcnRMaXN0Q29udGFpbmVyX19fUHAyWGdcIjtcbnZhciBfMTYgPSBcInRpdGxlV3JhcHBlcl9fX1A2bVB1XCI7XG5leHBvcnQgeyBfMSBhcyBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVcIiwgXzIgYXMgXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJcIiwgXzMgYXMgXCJjYWxlbmRhckRpc3BsYXlcIiwgXzQgYXMgXCJjbGVhbkJ1dHRvblwiLCBfNSBhcyBcImNvbnRhaW5lclwiLCBfNiBhcyBcImRhdGVQaWNrZXJDb250YWluZXJcIiwgXzcgYXMgXCJkYXRlcGlja2VyQ2xvc2VcIiwgXzggYXMgXCJmaWx0ZXJDaGVja2JveENvbnRhaW5lclwiLCBfOSBhcyBcImZpbHRlckNvbnRhaW5lclwiLCBfYSBhcyBcImZpbHRlckRhdGVMYWJlbFwiLCBfYiBhcyBcImZpbHRlckljb25cIiwgX2MgYXMgXCJmaWx0ZXJMYWJlbFwiLCBfZCBhcyBcImZpbHRlckxpc3RDb250YWluZXJcIiwgX2UgYXMgXCJmaWx0ZXJOdW1BY3RpdmVcIiwgX2YgYXMgXCJmaWx0ZXJTb3J0Q29udGFpbmVyXCIsIF8xMCBhcyBcImxhYmVsXCIsIF8xMSBhcyBcInNob3dGaWx0ZXJMaXN0XCIsIF8xMiBhcyBcInNvcnRDb250YWluZXJcIiwgXzEzIGFzIFwic29ydEljb25cIiwgXzE0IGFzIFwic29ydExhYmVsXCIsIF8xNSBhcyBcInNvcnRMaXN0Q29udGFpbmVyXCIsIF8xNiBhcyBcInRpdGxlV3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjYW5jZWxCdG5fX19xRGV4aFwiO1xudmFyIF8yID0gXCJmb290ZXJfX19TTjcweVwiO1xudmFyIF8zID0gXCJzYXZlQnRuX19fbmJVNmNcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY2FuY2VsQnRuXCIsIF8yIGFzIFwiZm9vdGVyXCIsIF8zIGFzIFwic2F2ZUJ0blwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJlcnJvckxhYmVsX19fbm9jeVhcIjtcbmV4cG9ydCB7IF8xIGFzIFwiZXJyb3JMYWJlbFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJteU9yZGVyc1dyYXBwZXJfX19ISm15c1wiO1xudmFyIF8yID0gXCJub09yZGVyc0ZvdW5kX19fRFJ3Z29cIjtcbnZhciBfMyA9IFwibm9PcmRlcnNJY29uV3JhcHBlcl9fX3RQVG1ZXCI7XG5leHBvcnQgeyBfMSBhcyBcIm15T3JkZXJzV3JhcHBlclwiLCBfMiBhcyBcIm5vT3JkZXJzRm91bmRcIiwgXzMgYXMgXCJub09yZGVyc0ljb25XcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm9yZGVyRGV0YWlsc01tb3VudF9fX3Iza1JBXCI7XG52YXIgXzIgPSBcIm9yZGVyRGV0YWlsc1RpY2tldHNfX19tNElqS1wiO1xudmFyIF8zID0gXCJvcmRlclN1bW1hcnlCdXR0b25fX191eGpodFwiO1xudmFyIF80ID0gXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvX19fX1JCWEVcIjtcbnZhciBfNSA9IFwib3JkZXJTdW1tYXJ5VGFibGVfX19ZRG54VlwiO1xudmFyIF82ID0gXCJvcmRlclN1bW1hcnlXcmFwcGVyX19fUndJRVJcIjtcbnZhciBfNyA9IFwicmVmdW5kRGlzYWJsZWRfX19qdnJrM1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJvcmRlckRldGFpbHNNbW91bnRcIiwgXzIgYXMgXCJvcmRlckRldGFpbHNUaWNrZXRzXCIsIF8zIGFzIFwib3JkZXJTdW1tYXJ5QnV0dG9uXCIsIF80IGFzIFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb1wiLCBfNSBhcyBcIm9yZGVyU3VtbWFyeVRhYmxlXCIsIF82IGFzIFwib3JkZXJTdW1tYXJ5V3JhcHBlclwiLCBfNyBhcyBcInJlZnVuZERpc2FibGVkXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFzc2lnblRpY2tldEJ1dHRvbl9fX3p6THNjXCI7XG52YXIgXzIgPSBcImFzc2lnblRvTWVUZXh0X19fWlBhZXhcIjtcbnZhciBfMyA9IFwiYXNzaWduZWRCeVRleHRfX19iTlo3elwiO1xudmFyIF80ID0gXCJhc3NpZ25lZFRvTWVEZXNfX19HakZrVlwiO1xudmFyIF81ID0gXCJhc3NpZ25lZFRvTWVXcmFwcGVyX19fVXhjMnlcIjtcbnZhciBfNiA9IFwiYmFkZ2VGZWF0dXJlX19fQTJMTVZcIjtcbnZhciBfNyA9IFwiYmFkZ2VGZWF0dXJlV3JhcHBlcl9fX0lRTE5QXCI7XG52YXIgXzggPSBcImJsYWNrQnV0dG9uX19fbDloajlcIjtcbnZhciBfOSA9IFwiY2hlY2tib3hfX19YWkpwYlwiO1xudmFyIF9hID0gXCJkaXNhYmxlZFJlZnVuZF9fX1NmZmw3XCI7XG52YXIgX2IgPSBcImRpc3BsYXlfbm9uZV9fX0NxcEwzXCI7XG52YXIgX2MgPSBcImxhYmVsX19felhEV3pcIjtcbnZhciBfZCA9IFwibm9PcmRlcnNJY29uV3JhcHBlcl9fX2VmeXJwXCI7XG52YXIgX2UgPSBcIm5vVGlja2V0c0ZvdW5kX19fakxvY29cIjtcbnZhciBfZiA9IFwib3JkZXJUaWNrZXRDb250YWluZXJfX19aSkx6a1wiO1xudmFyIF8xMCA9IFwib3JkZXJUaWNrZXRJbmZvX19fZ2VtcUJcIjtcbnZhciBfMTEgPSBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcl9fX19wNjZWXCI7XG52YXIgXzEyID0gXCJvcmRlcldyYXBwZXJfX195REJBb1wiO1xudmFyIF8xMyA9IFwicmVhc3NpZ25CdXR0b25fX19Sb2pNNVwiO1xudmFyIF8xNCA9IFwicmVmdW5kQnV0dG9uc19fX2pEbDRIXCI7XG52YXIgXzE1ID0gXCJyZWZ1bmRNb2RhbF9fX0VxZ1BGXCI7XG52YXIgXzE2ID0gXCJzZWxlY3RlZF9fX0hXR05jXCI7XG52YXIgXzE3ID0gXCJ0YWJCdXR0b25zX19feFR5SkFcIjtcbnZhciBfMTggPSBcInRpY2tldEFjdGlvbkJ1dHRvbnNfX19ycFNNUVwiO1xudmFyIF8xOSA9IFwidGlja2V0TGlzdENvbnRhaW5lcl9fX2NmbXJyXCI7XG52YXIgXzFhID0gXCJ0aWNrZXROb19fX2EyaU05XCI7XG52YXIgXzFiID0gXCJ0aWNrZXRPd25lckVtYWlsX19fWnQ0T0VcIjtcbnZhciBfMWMgPSBcInRpY2tldFRpY2tldFR5cGVfX19acV9mMFwiO1xudmFyIF8xZCA9IFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbl9fX0hGNkltXCI7XG52YXIgXzFlID0gXCJ2aWV3TW9yZUJ1dHRvbl9fX0tfMXpUXCI7XG5leHBvcnQgeyBfMSBhcyBcImFzc2lnblRpY2tldEJ1dHRvblwiLCBfMiBhcyBcImFzc2lnblRvTWVUZXh0XCIsIF8zIGFzIFwiYXNzaWduZWRCeVRleHRcIiwgXzQgYXMgXCJhc3NpZ25lZFRvTWVEZXNcIiwgXzUgYXMgXCJhc3NpZ25lZFRvTWVXcmFwcGVyXCIsIF82IGFzIFwiYmFkZ2VGZWF0dXJlXCIsIF83IGFzIFwiYmFkZ2VGZWF0dXJlV3JhcHBlclwiLCBfOCBhcyBcImJsYWNrQnV0dG9uXCIsIF85IGFzIFwiY2hlY2tib3hcIiwgX2EgYXMgXCJkaXNhYmxlZFJlZnVuZFwiLCBfYiBhcyBcImRpc3BsYXlfbm9uZVwiLCBfYyBhcyBcImxhYmVsXCIsIF9kIGFzIFwibm9PcmRlcnNJY29uV3JhcHBlclwiLCBfZSBhcyBcIm5vVGlja2V0c0ZvdW5kXCIsIF9mIGFzIFwib3JkZXJUaWNrZXRDb250YWluZXJcIiwgXzEwIGFzIFwib3JkZXJUaWNrZXRJbmZvXCIsIF8xMSBhcyBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lclwiLCBfMTIgYXMgXCJvcmRlcldyYXBwZXJcIiwgXzEzIGFzIFwicmVhc3NpZ25CdXR0b25cIiwgXzE0IGFzIFwicmVmdW5kQnV0dG9uc1wiLCBfMTUgYXMgXCJyZWZ1bmRNb2RhbFwiLCBfMTYgYXMgXCJzZWxlY3RlZFwiLCBfMTcgYXMgXCJ0YWJCdXR0b25zXCIsIF8xOCBhcyBcInRpY2tldEFjdGlvbkJ1dHRvbnNcIiwgXzE5IGFzIFwidGlja2V0TGlzdENvbnRhaW5lclwiLCBfMWEgYXMgXCJ0aWNrZXROb1wiLCBfMWIgYXMgXCJ0aWNrZXRPd25lckVtYWlsXCIsIF8xYyBhcyBcInRpY2tldFRpY2tldFR5cGVcIiwgXzFkIGFzIFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvblwiLCBfMWUgYXMgXCJ2aWV3TW9yZUJ1dHRvblwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJDVEFCdXR0b25XcmFwcGVyX19fS2dxNmdcIjtcbnZhciBfMiA9IFwiYWN0aW9uQnV0dG9uc19fX3U3bVBTXCI7XG52YXIgXzMgPSBcImFwcHJvdmVkX19fc3hFSldcIjtcbnZhciBfNCA9IFwiYmFkZ2VGZWF0dXJlX19fdExoRXBcIjtcbnZhciBfNSA9IFwiYmFkZ2VGZWF0dXJlV3JhcHBlcl9fX185R2JEXCI7XG52YXIgXzYgPSBcImJ1dHRvblBpbGxfX19MZXNhelwiO1xudmFyIF83ID0gXCJjYW5jZWxCdXR0b25fX195ZmhZYlwiO1xudmFyIF84ID0gXCJjb250aW51ZUJ1dHRvbl9fX055WDNzXCI7XG52YXIgXzkgPSBcImRlbGV0ZUljb25fX19GU3d5ZVwiO1xudmFyIF9hID0gXCJwZW5kaW5nX19fYUViV3dcIjtcbnZhciBfYiA9IFwicmVmdW5kRGV0YWlsX19fY1EyOFZcIjtcbnZhciBfYyA9IFwicmVmdW5kRXJyb3JNc2dfX19BYWh6clwiO1xudmFyIF9kID0gXCJyZWZ1bmRTdWNjZXNzZnVsX19fenJEUVlcIjtcbnZhciBfZSA9IFwicmVmdW5kVGV4dF9fX2FFbkw5XCI7XG52YXIgX2YgPSBcInJlZnVuZFRpY2tldEF0dGVuZGVlX19fUVhDak1cIjtcbnZhciBfMTAgPSBcInJlZnVuZFRpY2tldEJveENvbnRhaW5lcl9fX3lhNjEzXCI7XG52YXIgXzExID0gXCJyZWplY3RlZF9fX05KRTRaXCI7XG52YXIgXzEyID0gXCJzdWJ0aXRsZV9fX1B0RGUyXCI7XG52YXIgXzEzID0gXCJzdWNjZXNzTXNnX19fSHRNc2VcIjtcbnZhciBfMTQgPSBcInN1Y2Nlc3NNc2cyX19fUTZ6bmFcIjtcbnZhciBfMTUgPSBcInRpY2tldExpc3RfX19lRFFSM1wiO1xudmFyIF8xNiA9IFwidGlja2V0Tm9fX19fRUFENFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJDVEFCdXR0b25XcmFwcGVyXCIsIF8yIGFzIFwiYWN0aW9uQnV0dG9uc1wiLCBfMyBhcyBcImFwcHJvdmVkXCIsIF80IGFzIFwiYmFkZ2VGZWF0dXJlXCIsIF81IGFzIFwiYmFkZ2VGZWF0dXJlV3JhcHBlclwiLCBfNiBhcyBcImJ1dHRvblBpbGxcIiwgXzcgYXMgXCJjYW5jZWxCdXR0b25cIiwgXzggYXMgXCJjb250aW51ZUJ1dHRvblwiLCBfOSBhcyBcImRlbGV0ZUljb25cIiwgX2EgYXMgXCJwZW5kaW5nXCIsIF9iIGFzIFwicmVmdW5kRGV0YWlsXCIsIF9jIGFzIFwicmVmdW5kRXJyb3JNc2dcIiwgX2QgYXMgXCJyZWZ1bmRTdWNjZXNzZnVsXCIsIF9lIGFzIFwicmVmdW5kVGV4dFwiLCBfZiBhcyBcInJlZnVuZFRpY2tldEF0dGVuZGVlXCIsIF8xMCBhcyBcInJlZnVuZFRpY2tldEJveENvbnRhaW5lclwiLCBfMTEgYXMgXCJyZWplY3RlZFwiLCBfMTIgYXMgXCJzdWJ0aXRsZVwiLCBfMTMgYXMgXCJzdWNjZXNzTXNnXCIsIF8xNCBhcyBcInN1Y2Nlc3NNc2cyXCIsIF8xNSBhcyBcInRpY2tldExpc3RcIiwgXzE2IGFzIFwidGlja2V0Tm9cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY2xvc2VCdG5fX195U1FDT1wiO1xudmFyIF8yID0gXCJoZWFkZXJfX19mQlhHOVwiO1xudmFyIF8zID0gXCJ0aXRsZV9fX3R5WmVRXCI7XG52YXIgXzQgPSBcIndyYXBwZXJfX19ST0pHc1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJjbG9zZUJ0blwiLCBfMiBhcyBcImhlYWRlclwiLCBfMyBhcyBcInRpdGxlXCIsIF80IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJzdW1taXRUaXRsZURhdGVfX19YbnJwRlwiO1xudmFyIF8yID0gXCJ3aWRnZXRIZWFkZXJfX19nZ0x0TVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJzdW1taXRUaXRsZURhdGVcIiwgXzIgYXMgXCJ3aWRnZXRIZWFkZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiaGVhZGVyTm90ZV9fX0FlNUVBXCI7XG52YXIgXzIgPSBcIm9yZGVyTm9fX19WT1BSd1wiO1xudmFyIF8zID0gXCJwdXJjaGFzZWRCeV9fX01OaUhUXCI7XG52YXIgXzQgPSBcInB1cmNoYXNlZEJ5V3JhcHBlcl9fX0RoNkhVXCI7XG52YXIgXzUgPSBcIndyYXBwZXJfX19tVnVpWlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJoZWFkZXJOb3RlXCIsIF8yIGFzIFwib3JkZXJOb1wiLCBfMyBhcyBcInB1cmNoYXNlZEJ5XCIsIF80IGFzIFwicHVyY2hhc2VkQnlXcmFwcGVyXCIsIF81IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhc3NpZ25PcHRpb25zV3JhcHBlcl9fX29qRl83XCI7XG52YXIgXzIgPSBcInRpY2tldFJlYXNzaWduQ29udGFpbmVyX19fZ090YUpcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYXNzaWduT3B0aW9uc1dyYXBwZXJcIiwgXzIgYXMgXCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ3cmFwcGVyX19fRXdPUnpcIjtcbmV4cG9ydCB7IF8xIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJpbmZvTm90ZV9fX2kxWFk5XCI7XG52YXIgXzIgPSBcIndyYXBwZXJfX19NQXVOU1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJpbmZvTm90ZVwiLCBfMiBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lcl9fX0F1dnJuXCI7XG52YXIgXzIgPSBcImFkZGl0aW9uYWxEZXRhaWxzX19fbVAxaUpcIjtcbnZhciBfMyA9IFwiYXR0ZW5kZWVDb250YWluZXJfX19RMFZVelwiO1xudmFyIF80ID0gXCJhdHRlbmRlZUluZm9UaXRsZV9fX0xtcm00XCI7XG52YXIgXzUgPSBcImNsb3NlQnRuX19fV05KbEVcIjtcbnZhciBfNiA9IFwiY29weUJ0bl9fX191dEE2XCI7XG52YXIgXzcgPSBcImRlbGVnYXRlZFRvX19fU0dWUUlcIjtcbnZhciBfOCA9IFwiZG93bmxvYWRCdG5fX19xalloelwiO1xudmFyIF85ID0gXCJoZWFkZXJfX19BdWduelwiO1xudmFyIF9hID0gXCJvcmRlck51bWJlcl9fX0w1UTVhXCI7XG52YXIgX2IgPSBcInFyQ29kZV9fX2Z3cVpxXCI7XG52YXIgX2MgPSBcInFyTm90ZV9fX0djN0tuXCI7XG52YXIgX2QgPSBcInNlbmRCdG5fX19rb1dNMlwiO1xudmFyIF9lID0gXCJzZW50X19fazZXS3hcIjtcbnZhciBfZiA9IFwic3RhdHVzX19fa3dDOHlcIjtcbnZhciBfMTAgPSBcInN1YnRpdGxlX19feV9OdU9cIjtcbnZhciBfMTEgPSBcInRpY2tldERldGFpbENvbnRhaW5lcl9fX2IyVExSXCI7XG52YXIgXzEyID0gXCJ0aXRsZV9fX3dRelVOXCI7XG5leHBvcnQgeyBfMSBhcyBcImFjdGlvbkJ1dHRvbnNDb250YWluZXJcIiwgXzIgYXMgXCJhZGRpdGlvbmFsRGV0YWlsc1wiLCBfMyBhcyBcImF0dGVuZGVlQ29udGFpbmVyXCIsIF80IGFzIFwiYXR0ZW5kZWVJbmZvVGl0bGVcIiwgXzUgYXMgXCJjbG9zZUJ0blwiLCBfNiBhcyBcImNvcHlCdG5cIiwgXzcgYXMgXCJkZWxlZ2F0ZWRUb1wiLCBfOCBhcyBcImRvd25sb2FkQnRuXCIsIF85IGFzIFwiaGVhZGVyXCIsIF9hIGFzIFwib3JkZXJOdW1iZXJcIiwgX2IgYXMgXCJxckNvZGVcIiwgX2MgYXMgXCJxck5vdGVcIiwgX2QgYXMgXCJzZW5kQnRuXCIsIF9lIGFzIFwic2VudFwiLCBfZiBhcyBcInN0YXR1c1wiLCBfMTAgYXMgXCJzdWJ0aXRsZVwiLCBfMTEgYXMgXCJ0aWNrZXREZXRhaWxDb250YWluZXJcIiwgXzEyIGFzIFwidGl0bGVcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYnV0dG9uQ2FuY2VsbGVkX19fRXJsRFpcIjtcbnZhciBfMiA9IFwiYnV0dG9uQ29tcGxldGVfX19sbFdrWlwiO1xudmFyIF8zID0gXCJidXR0b25JbmNvbXBsZXRlX19fVG9sSGdcIjtcbnZhciBfNCA9IFwiYnV0dG9uUGlsbF9fX3pxMnRjXCI7XG52YXIgXzUgPSBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZF9fX3BXdDMwXCI7XG52YXIgXzYgPSBcImJ1dHRvblVuYXNzaWduZWRfX19ZRGQ4WFwiO1xudmFyIF83ID0gXCJ0aWNrZXRTdGF0dXNDb250YWluZXJfX19xajZmYlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJidXR0b25DYW5jZWxsZWRcIiwgXzIgYXMgXCJidXR0b25Db21wbGV0ZVwiLCBfMyBhcyBcImJ1dHRvbkluY29tcGxldGVcIiwgXzQgYXMgXCJidXR0b25QaWxsXCIsIF81IGFzIFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkXCIsIF82IGFzIFwiYnV0dG9uVW5hc3NpZ25lZFwiLCBfNyBhcyBcInRpY2tldFN0YXR1c0NvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3RpdmVfX190THlXWlwiO1xudmFyIF8yID0gXCJ0YWJPcHRpb25fX19INEgxdVwiO1xudmFyIF8zID0gXCJ0YWJXcmFwcGVyX19fdTIxc0dcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aXZlXCIsIF8yIGFzIFwidGFiT3B0aW9uXCIsIF8zIGFzIFwidGFiV3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ0aWNrZXRzVGl0bGVUZXh0X19fVERQbXBcIjtcbmV4cG9ydCB7IF8xIGFzIFwidGlja2V0c1RpdGxlVGV4dFwiIH1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0luZm9cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFiXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFic1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1Rvb2x0aXBcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkByZWR1eGpzL3Rvb2xraXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHNlbnRyeS9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJmb3JtaWtcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaTE4bmV4dFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpZHRva2VuLXZlcmlmaWVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1vbWVudC10aW1lem9uZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9tZXRob2RzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwLWxpbWl0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInByb3AtdHlwZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaTE4bmV4dFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXFyLWNvZGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwieXVwXCIpOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IFBlcnNpc3RHYXRlIH0gZnJvbSBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIjtcbmltcG9ydCB7IFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUluaXRTdG9yZSB9IGZyb20gXCIuL3N0b3JlXCI7XG5pbXBvcnQgeyBSRVNFVF9TVEFURSwgc2V0UmVkdWNlclN0YXRlIH0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuXG5pbXBvcnQgV2lkZ2V0V3JhcHBlciBmcm9tIFwiLi9jb21wb25lbnRzL1dpZGdldFdyYXBwZXJcIjtcblxuY29uc3QgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQgPSAocHJvcHMpID0+IHtcbiAgY29uc3Qge1xuICAgIGxvZ2luVXJsLFxuICAgIHN1cHBvcnRFbWFpbCxcbiAgICBzdW1taXQsXG4gICAgYXBpQmFzZVVybCxcbiAgICB1c2VyLFxuICAgIGNsaWVudElkLFxuICAgIHVwZGF0ZVByb2ZpbGVcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHsgc3RvcmUsIHBlcnNpc3RvciB9ID0gdXNlSW5pdFN0b3JlKHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIHVzZXIsXG4gICAgYXBpQmFzZVVybCxcbiAgICBjbGllbnRJZCxcbiAgICB1cGRhdGVQcm9maWxlXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUJlZm9yZUxpZnQgPSAoKSA9PiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICBjb25zdCBmbHVzaCA9IHBhcmFtcy5oYXMoXCJmbHVzaFN0YXRlXCIpO1xuICAgIGlmIChmbHVzaCkgc3RvcmUuZGlzcGF0Y2goeyB0eXBlOiBSRVNFVF9TVEFURSwgcGF5bG9hZDogbnVsbCB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHN0b3JlLmRpc3BhdGNoKHNldFJlZHVjZXJTdGF0ZShzdW1taXQsIHVzZXIpKTtcbiAgfSwgW3N1bW1pdCwgdXNlcl0pO1xuXG4gIHJldHVybiAoXG4gICAgPFByb3ZpZGVyIHN0b3JlPXtzdG9yZX0+XG4gICAgICA8UGVyc2lzdEdhdGVcbiAgICAgICAgb25CZWZvcmVMaWZ0PXtoYW5kbGVCZWZvcmVMaWZ0fVxuICAgICAgICBsb2FkaW5nPXtudWxsfVxuICAgICAgICBwZXJzaXN0b3I9e3BlcnNpc3Rvcn1cbiAgICAgID5cbiAgICAgICAgPFN0eWxlZEVuZ2luZVByb3ZpZGVyIGluamVjdEZpcnN0PlxuICAgICAgICAgIDxXaWRnZXRXcmFwcGVyIC8+XG4gICAgICAgIDwvU3R5bGVkRW5naW5lUHJvdmlkZXI+XG4gICAgICA8L1BlcnNpc3RHYXRlPlxuICAgIDwvUHJvdmlkZXI+XG4gICk7XG59O1xuXG5NeU9yZGVyc015VGlja2V0c1dpZGdldC5wcm9wVHlwZXMgPSB7XG4gIGxvZ2luVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdXBwb3J0RW1haWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgYXBpQmFzZVVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdXNlcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgY2xpZW50SWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHVwZGF0ZVByb2ZpbGU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc015VGlja2V0c1dpZGdldDtcbiJdLCJuYW1lcyI6WyJhdXRoRXJyb3JIYW5kbGVyIiwiY3JlYXRlQWN0aW9uIiwiZGVsZXRlUmVxdWVzdCIsImdldFJlcXVlc3QiLCJwdXRSZXF1ZXN0Iiwic3RhcnRMb2FkaW5nIiwic3RvcExvYWRpbmciLCJwTGltaXQiLCJnZXRJZFRva2VuIiwib2JqZWN0VG9RdWVyeVN0cmluZyIsIklkVG9rZW5WZXJpZmllciIsImkxOG4iLCJnZXRBY2Nlc3NUb2tlblNhZmVseSIsIkRFRkFVTFRfSVRFTVNfUEVSX1BBR0UiLCJFUlJPUl9DT0RFUyIsIkZJRlRZX1BFUl9QQUdFIiwiRklSU1RfUEFHRSIsIlBST01JU0VfQkFUQ0hfTElNSVQiLCJUQUJTIiwiUkVTRVRfU1RBVEUiLCJSRVNFVF9GSUxURVIiLCJSRVNFVF9BUElfRVJST1IiLCJTRVRfU1RBVEUiLCJTRVRfQVBJX0VSUk9SIiwiQ0hBTkdFX0ZJTFRFUiIsIkNIQU5HRV9TT1JUIiwiR0VUX1VTRVJfT1JERVJTIiwiUkVGVU5EX09SREVSIiwiU0VUX0FDVElWRV9PUkRFUl9JRCIsIkZJTFRFUl9VU0VSX09SREVSUyIsIkdFVF9NWV9BU1NJR05FRF9USUNLRVRTIiwiVVBEQVRFX1RJQ0tFVCIsIlJFU0VUX1RJQ0tFVCIsIlJFQ0VJVkVfVElDS0VUIiwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSIsIkFTU0lHTl9USUNLRVQiLCJERUxFR0FURV9USUNLRVQiLCJSRUZVTkRfVElDS0VUIiwiUkVTRU5EX05PVElGSUNBVElPTiIsIkdFVF9USUNLRVRTX0JZX09SREVSIiwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IiLCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMiLCJHRVRfVElDS0VUX0RFVEFJTFMiLCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyIsIlRJQ0tFVF9BVFRFTkRFRV9LRVlTIiwiZW1haWwiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImNvbXBhbnkiLCJkaXNjbGFpbWVyQWNjZXB0ZWQiLCJleHRyYVF1ZXN0aW9ucyIsIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQiLCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiVVBEQVRFX0lEUF9QUk9GSUxFIiwiU0VUX1VTRVIiLCJTRVRfU1VNTUlUIiwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TIiwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MiLCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MiLCJyZXNldFRpY2tldCIsImRpc3BhdGNoIiwicmVzZXRTdGF0ZSIsInJlc2V0RmlsdGVyIiwicmVzZXRFcnJvciIsInNldFJlZHVjZXJTdGF0ZSIsInN1bW1pdCIsInVzZXIiLCJGSUxURVJfVkFSX0RBVEUiLCJGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUiLCJGSUxURVJfVkFSX1RJQ0tFVF9UWVBFIiwiRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQiLCJGSUxURVJfVkFSX09XTkVSX1NUQVRVUyIsIkZJTFRFUl9WQVJfUFJPTU9DT0RFIiwiRklMVEVSX1ZBUl9GUkVFX1BBSUQiLCJGSUxURVJfVkFSX09SREVSX05VTUJFUiIsImNoYW5nZUZpbHRlciIsImZpbHRlciIsImNoYW5nZVNvcnQiLCJzb3J0IiwicGFyc2VGaWx0ZXIiLCJmaWx0ZXJPYmoiLCJjdXJyZW50VGFiIiwicHVzaCIsImNvbmNhdCIsImxvd2VyIiwidXBwZXIiLCJsZW5ndGgiLCJmaWx0ZXJOYW1lIiwiT1JERVJTIiwiam9pbiIsImdldFNvcnREaXJlY3Rpb24iLCJkaXJlY3Rpb24iLCJlcnJvckhhbmRsZXJOb3RpZnkiLCJwYXlsb2FkIiwiY2FsbGJhY2siLCJjdXN0b21BdXRoRXJyb3JIYW5kbGVyIiwiZXJyIiwicmVzIiwiY3VzdG9tRmV0Y2hFcnJvckhhbmRsZXIiLCJyZXNwb25zZSIsImNvZGUiLCJzdGF0dXMiLCJtc2ciLCJ0IiwiT2JqZWN0IiwiZW50cmllcyIsImVycm9ycyIsImZvckVhY2giLCJfcmVmIiwia2V5IiwidmFsdWUiLCJOdW1iZXIiLCJpc05hTiIsInN0YXR1c1RleHQiLCJ0aXRsZSIsImh0bWwiLCJnZXRVc2VyT3JkZXJzIiwiX3JlZjIiLCJwYWdlIiwicGVyUGFnZSIsImdldFN0YXRlIiwiX3JlZjMiLCJhcGlCYXNlVXJsIiwid2lkZ2V0U3RhdGUiLCJhY2Nlc3NUb2tlbiIsImNhdGNoIiwiUHJvbWlzZSIsInJlamVjdCIsInBhcmFtcyIsImFjY2Vzc190b2tlbiIsIm9yZGVyIiwicmVsYXRpb25zIiwicGVyX3BhZ2UiLCJrZXlzIiwiZmlsdGVycyIsIm5hbWUiLCJpZCIsInRoZW4iLCJlIiwic2V0QWN0aXZlT3JkZXJJZCIsIm9yZGVySWQiLCJzZXRVc2VyIiwiZ2V0VXNlclRpY2tldHMiLCJfcmVmNCIsIl9yZWY1IiwidXNlclByb2ZpbGUiLCJmaWVsZHMiLCJleHBhbmQiLCJUSUNLRVRTIiwiZ2V0VGlja2V0c0J5T3JkZXIiLCJfcmVmNiIsIl9yZWY3IiwicmVzZW5kTm90aWZpY2F0aW9uIiwidGlja2V0IiwiX3JlZjgiLCJtZXNzYWdlIiwib3JkZXJfaWQiLCJyZWZ1bmRUaWNrZXQiLCJfcmVmOSIsIl9yZWYxMCIsInJlZnVuZEJ1bGtUaWNrZXRzIiwiX3JlZjExIiwidGlja2V0cyIsImxpbWl0IiwiYWxsUmVmdW5kVGlja2V0Q2FsbHMiLCJtYXAiLCJhbGwiLCJzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQiLCJyIiwiX3IkcmVzcG9uc2UiLCJyZWZ1bmRfcmVxdWVzdHMiLCJ1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkIiwidGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsImdldEV4dHJhUXVlc3Rpb25zIiwiYXR0ZW5kZWVJZCIsIl9yZWYxMiIsImVuZHBvaW50IiwiZ2V0VGlja2V0IiwidGlja2V0SWQiLCJfcmVmMTMiLCJmaW5hbGx5Iiwibm9ybWFsaXplVGlja2V0IiwiZW50aXR5Iiwibm9ybWFsaXplZEVudGl0eSIsIl9vYmplY3RTcHJlYWQiLCJhdHRlbmRlZV9jb21wYW55IiwiYXR0ZW5kZWVfY29tcGFueV9pZCIsInJlZnJlc2hQcm9maWxlIiwiZGF0YSIsInRpY2tldE93bmVyIiwiX3JlZjE0IiwiX3RpY2tldE93bmVyJG1hbmFnZXIiLCJ1cGRhdGVQcm9maWxlIiwiYXR0ZW5kZWVfZW1haWwiLCJhdHRlbmRlZV9maXJzdF9uYW1lIiwiYXR0ZW5kZWVfbGFzdF9uYW1lIiwiaGFzTWFuYWdlciIsIm1hbmFnZXIiLCJtYW5hZ2VyX2lkIiwiaXRzTWUiLCJwcm9maWxlQ2hhbmdlZCIsImZpcnN0X25hbWUiLCJsYXN0X25hbWUiLCJuZXdQcm9maWxlIiwic2F2ZVRpY2tldERldGFpbHMiLCJhbnN3ZXJzIiwiX3JlZjE1IiwiaWRUb2tlbiIsInZlcmlmaWVyIiwiand0IiwiZGVjb2RlIiwiY29uc29sZSIsImxvZyIsIm93bmVyIiwiYXNzaWduQXR0ZW5kZWUiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfcmVmMTYiLCJyZWFzc2lnblRpY2tldCIsIl9yZWYxNyIsImRlbGVnYXRlVGlja2V0IiwiX3JlZjE4Iiwic2F2ZUV4dHJhUXVlc3Rpb25zIiwiX3JlZjE5IiwiZ2V0VGlja2V0UERGIiwiX3JlZjIwIiwicXVlcnlTdHJpbmciLCJhcGlVcmwiLCJmZXRjaCIsInJlc3BvbnNlVHlwZSIsImhlYWRlcnMiLCJvayIsImJsb2IiLCJwZGYiLCJsaW5rIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwidXJsIiwid2luZG93IiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiaHJlZiIsImRvd25sb2FkIiwiZGlzcGF0Y2hFdmVudCIsIk1vdXNlRXZlbnQiLCJSZWFjdCIsIlByb3BUeXBlcyIsInVzZVRyYW5zbGF0aW9uIiwiQm94IiwidXNlRm9ybWlrIiwiRXh0cmFRdWVzdGlvbnNGaWVsZHMiLCJGb3JtRm9vdGVyIiwidXNlU2Nyb2xsVG9FcnJvciIsIlJlZ2lzdHJhdGlvbkRpc2NsYWltZXIiLCJidWlsZFZhbGlkYXRpb25TY2hlbWEiLCJwYXJzZUFuc3dlcnMiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiQXNzaWduRVFGb3JtIiwib25TdWJtaXQiLCJvbkNsb3NlIiwiZm9ybWlrIiwiaW5pdGlhbFZhbHVlcyIsInZhbGlkYXRpb25TY2hlbWEiLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnkiLCJ2YWx1ZXMiLCJyZWxldmFudEFuc3dlcnMiLCJlbmFibGVSZWluaXRpYWxpemUiLCJoYW5kbGVTdWJtaXQiLCJub1ZhbGlkYXRlIiwiY2hpbGRyZW4iLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50IiwiZGlzY2xhaW1lciIsImlzUmVxdWlyZWQiLCJzYXZlTGFiZWwiLCJjYW5jZWxMYWJlbCIsImRpc2FibGVkIiwiaXNTdWJtaXR0aW5nIiwicHJvcFR5cGVzIiwib2JqZWN0IiwiYXJyYXkiLCJmdW5jIiwiQ29udGVudENvcHlJY29uIiwiVG9vbHRpcCIsIk1JTExJU0VDX1RPX1NFQyIsInN0eWxlcyIsImRlZmF1bHRXaWR0aCIsIkNvcHlUZXh0IiwidGV4dCIsInRvb2x0aXBUZXh0IiwiaGlkZUNvcHkiLCJ0cnVuY2F0ZWQiLCJyZXZlcnNlZCIsIndpZHRoIiwidG9vbHRpcFRleHRUb1VzZSIsInRvb2x0aXAiLCJzZXRUb29sdGlwIiwidXNlU3RhdGUiLCJjbGFzc05hbWVzIiwiaGFuZGxlQ29weSIsIm5hdmlnYXRvciIsImNsaXBib2FyZCIsIndyaXRlVGV4dCIsInNldFRpbWVvdXQiLCJjbGFzc05hbWUiLCJ3cmFwcGVyIiwic3R5bGUiLCJjb3B5SWNvbiIsIm9uQ2xpY2siLCJzdHJpbmciLCJib29sIiwibnVtYmVyIiwiY3JlYXRlQ29udGV4dCIsImRlZmF1bHRDb250ZXh0VmFsdWUiLCJzZXRNZXNzYWdlIiwic2V0TWVzc2FnZUNhbGxiYWNrIiwiQ3VzdG9tRGlhbG9nQ29udGV4dCIsIkRpYWxvZyIsIkRpYWxvZ0NvbnRlbnQiLCJEaWFsb2dDb250ZW50VGV4dCIsIkRpYWxvZ1RpdGxlIiwiQ3VzdG9tRGlhbG9nIiwib3BlbiIsImJvZHkiLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsIl9faHRtbCIsIlRoZW1lUHJvdmlkZXIiLCJjcmVhdGVUaGVtZSIsImRhcmtDb2xvciIsInJvb3QiLCJkb2N1bWVudEVsZW1lbnQiLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsInRoZW1lIiwicGFsZXR0ZSIsInByaW1hcnkiLCJtYWluIiwic2Vjb25kYXJ5IiwidHlwb2dyYXBoeSIsImJvZHkxIiwiZm9udFNpemUiLCJoNSIsImZvbnRXZWlnaHQiLCJtYXJnaW5Cb3R0b20iLCJoNiIsImNvbXBvbmVudHMiLCJNdWlCdXR0b24iLCJzdHlsZU92ZXJyaWRlcyIsImxpbmVIZWlnaHQiLCJNdWlUYWIiLCJjb2xvciIsIk11aVRhYnMiLCJpbmRpY2F0b3IiLCJiYWNrZ3JvdW5kQ29sb3IiLCJDdXN0b21UaGVtZSIsIm5vZGUiLCJDaGVja2JveCIsIkZvcm1Db250cm9sIiwiRm9ybUNvbnRyb2xMYWJlbCIsIkZvcm1Hcm91cCIsIkZvcm1IZWxwZXJUZXh0IiwiRm9ybUxhYmVsIiwiZ2V0TGFiZWwiLCJ0b1NsdWciLCJDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIiwiX3F1ZXN0aW9uJHZhbHVlcyIsInF1ZXN0aW9uIiwicXVlc3Rpb25DbGFzc05hbWUiLCJpc0Rpc2FibGVkIiwib25DaGFuZ2UiLCJzZXRGaWVsZFZhbHVlIiwiZXJyb3IiLCJoZWxwZXJUZXh0IiwicmVzdCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsInF1ZXN0aW9uU2x1ZyIsInF1ZXN0aW9uTGFiZWwiLCJtYW5kYXRvcnkiLCJxdWVzdGlvbk1heFZhbHVlcyIsIm1heF9zZWxlY3RlZF92YWx1ZXMiLCJxdWVzdGlvbk9wdGlvbnMiLCJ2YWwiLCJsYWJlbCIsInRvU3RyaW5nIiwiaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlIiwiY2hlY2tlZCIsImN1cnJlbnRBbnMiLCJtYXhTZWxlY3Rpb25SZWFjaGVkIiwibmV3VmFsdWUiLCJ2IiwicmVxdWlyZWQiLCJmdWxsV2lkdGgiLCJtYXJnaW4iLCJvcCIsImNvbnRyb2wiLCJpbmNsdWRlcyIsImV2IiwidGFyZ2V0IiwiUmF3SFRNTCIsIkNoZWNrYm94UXVlc3Rpb25GaWVsZCIsIklucHV0TGFiZWwiLCJNZW51SXRlbSIsIlNlbGVjdCIsIkRyb3Bkb3duUXVlc3Rpb25GaWVsZCIsImxhYmVsSWQiLCJSYWRpbyIsIlJhZGlvR3JvdXAiLCJSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIiwiVGV4dEZpZWxkIiwiVGV4dFF1ZXN0aW9uRmllbGQiLCJRdWVzdGlvblR5cGVfQ2hlY2tib3giLCJRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0IiwiUXVlc3Rpb25UeXBlX0NvbWJvQm94IiwiUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QiLCJjaGVja1J1bGUiLCJydWxlIiwiYW5zd2VyX3ZhbHVlcyIsIkFycmF5IiwiaXNBcnJheSIsImFuc3dlcl92YWx1ZXNfb3BlcmF0b3IiLCJjaGVja1Zpc2liaWxpdHkiLCJydWxlUmVzdWx0IiwidmlzaWJpbGl0eSIsInZpc2liaWxpdHlfY29uZGl0aW9uIiwicXVlc3Rpb25JZCIsInRleHRMQyIsInRvTG93ZXJDYXNlIiwicmVwbGFjZSIsInEiLCJfcSRsYWJlbCIsImlzQW5zd2VyZWQiLCJhbnN3ZXIiLCJjaGVja0lmVmFsdWVNYXRjaCIsImNvbXBhcmVWYWwiLCJhbnN3ZXJBcnJheSIsInNvbWUiLCJnZXRUeXBlSW5pdGlhbFZhbHVlIiwidHlwZSIsImdldFR5cGVWYWx1ZSIsImFucyIsInNwbGl0IiwidHJhbnNmb3JtQW53ZXJzRm9ybWF0IiwiZGlzY2xhaW1lcl9hY2NlcHRlZCIsImV4dHJhX3F1ZXN0aW9ucyIsImZvcm1hdHRlZEVRIiwicXVlc3Rpb25faWQiLCJwYXJzZUludCIsInBvcCIsIlF1ZXN0aW9uVHlwZV9UZXh0IiwiUXVlc3Rpb25UeXBlX1RleHRBcmVhIiwiUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uIiwiZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudCIsInF1ZXN0aW9uVHlwZSIsIkZyYWdtZW50IiwicmVhZE9ubHkiLCJhbGxvd0VkaXQiLCJyZW5kZXJSdWxlIiwicmVuZGVyUXVlc3Rpb24iLCJzdWJfcXVlc3Rpb24iLCJfcSRzdWJfcXVlc3Rpb25fcnVsZXMiLCJRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwiZm9ybWlrUHJvcHMiLCJoYW5kbGVDaGFuZ2UiLCJvbkJsdXIiLCJoYW5kbGVCbHVyIiwidG91Y2hlZCIsIkJvb2xlYW4iLCJzdWJfcXVlc3Rpb25fcnVsZXMiLCJ1c2VTZWxlY3RvciIsInNoYWxsb3dFcXVhbCIsIkNhcmRIZWFkZXIiLCJJY29uQnV0dG9uIiwiQ29sbGFwc2UiLCJDYXJkQ29udGVudCIsIkV4cGFuZE1vcmVJY29uIiwiQXNzaWduZWRGaWx0ZXIiLCJvbkZpbHRlciIsImZpbHRlclZhbHVlcyIsInN0YXRlIiwiaXNFeHBhbmRlZCIsInNldElzRXhwYW5kZWQiLCJhc3NpZ25lZFZhbHVlcyIsImhhbmRsZUZpbHRlckNoYW5nZSIsIm5ld0ZpbHRlciIsInRpdGxlV3JhcHBlciIsImFjdGlvbiIsImRpc2FibGVSaXBwbGUiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2l0aW9uIiwiaW4iLCJ0aW1lb3V0IiwidW5tb3VudE9uRXhpdCIsInN4IiwicHkiLCJwYiIsImFzc2lnbmVkIiwidXNlRWZmZWN0IiwiQmFkZ2VGZWF0dXJlRmlsdGVyIiwiYmFkZ2VfZmVhdHVyZXNfdHlwZXMiLCJuZXdGaWx0ZXJzIiwiZiIsImJmIiwidXNlUmVmIiwiU3RhY2siLCJGaWx0ZXJMaXN0SWNvbiIsIkJhZGdlIiwiQnV0dG9uIiwiQ2FyZCIsIkRpdmlkZXIiLCJQYXBlciIsImNvbm5lY3QiLCJUaWNrZXRUeXBlRmlsdGVyIiwiU3RhdHVzRmlsdGVyIiwiRnJlZVBhaWRGaWx0ZXIiLCJQcm9tb0NvZGVGaWx0ZXIiLCJGaWx0ZXIiLCJvblJlc2V0Iiwic2hvd0ZpbHRlckxpc3QiLCJzZXRTaG93RmlsdGVyTGlzdCIsInNob3dEYXRlcGlja2VyIiwic2V0U2hvd0RhdGVwaWNrZXIiLCJmaWx0ZXJOdW1BY3RpdmUiLCJzZXRGaWx0ZXJOdW1BY3RpdmUiLCJmaWx0ZXJSZWYiLCJoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUiLCJldmVudCIsImN1cnJlbnQiLCJjb250YWlucyIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiTUFSR0lOX1JJR0hUX1dJVEhfQkFER0UiLCJBRERfRklMVEVSX05VTUJFUiIsImNhbGN1bGF0ZUFjdGl2ZUZpbHRlcnMiLCJjb3VudCIsInRyaW0iLCJ0b2dnbGUiLCJoYW5kbGVGaWx0ZXJSZXNldCIsImZpbHRlckNvbnRhaW5lciIsInJlZiIsImFsaWduSXRlbXMiLCJwdCIsImJhZGdlQ29udGVudCIsIm1yIiwiZmlsdGVySWNvbiIsImZpbHRlckxhYmVsIiwiZmlsdGVyTGlzdENvbnRhaW5lciIsImNvbnRhaW5lciIsImVsZXZhdGlvbiIsImZpbHRlckNoZWNrYm94Q29udGFpbmVyIiwidmFyaWFudCIsImNsZWFuQnV0dG9uIiwibWFwU3RhdGVUb1Byb3BzIiwicHJvbW9Db2RlIiwic2V0UHJvbW9Db2RlIiwiZGVib3VuY2VUaW1lciIsIkRFQk9VTkNFX1ZBTFVFIiwibmV3UHJvbW9Db2RlIiwiY2xlYXJUaW1lb3V0IiwicGxhY2Vob2xkZXIiLCJzdHlsZWQiLCJTZWFyY2hJY29uIiwiQ2xvc2VJY29uIiwiSW5wdXRCYXNlIiwiU2VhcmNoQ29udGFpbmVyIiwicG9zaXRpb24iLCJtYXJnaW5SaWdodCIsIm1hcmdpbkxlZnQiLCJkaXNwbGF5IiwiU2VhcmNoSWNvbldyYXBwZXIiLCJoZWlnaHQiLCJqdXN0aWZ5Q29udGVudCIsIlN0eWxlZElucHV0QmFzZSIsImJvcmRlckJvdHRvbSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiQ2xvc2VJY29uV3JhcHBlciIsInBhZGRpbmciLCJ0b3AiLCJyaWdodCIsImN1cnNvciIsInpJbmRleCIsIlNlYXJjaCIsIm9uU2VhcmNoIiwic2hvd0Nsb3NlIiwic2V0U2hvd0Nsb3NlIiwic2VhcmNoVmFsdWUiLCJzZXRTZWFyY2hWYWx1ZSIsIm9uS2V5RG93biIsIm5hdGl2ZUV2ZW50IiwicmVzZXRTZWFyY2giLCJpbnB1dFByb3BzIiwiSW1wb3J0RXhwb3J0SWNvbiIsIlNvcnQiLCJvblNvcnQiLCJzaG93U29ydCIsInNldFNob3dTb3J0Iiwic29ydFJlZiIsImhhbmRsZVNvcnRDbGlja091dHNpZGUiLCJzb3J0Q29udGFpbmVyIiwic29ydEljb24iLCJzb3J0TGFiZWwiLCJzb3J0TGlzdENvbnRhaW5lciIsInRpY2tldF90eXBlcyIsIkdyaWQiLCJGaWx0ZXJzIiwianVzdGlmeSIsIml0ZW0iLCJ4cyIsImdhcCIsImZpbHRlclNvcnRDb250YWluZXIiLCJmb290ZXIiLCJjYW5jZWxCdG4iLCJzaXplIiwic2F2ZUJ0biIsIkVycm9ySWNvbiIsIkVycm9yTGFiZWwiLCJkYXRhVGVzdElkIiwiZXJyb3JMYWJlbCIsIkJhY2tkcm9wIiwiQ2lyY3VsYXJQcm9ncmVzcyIsIkxvYWRlciIsImRyYXdlciIsInVzZURpc3BhdGNoIiwiSW5maW5pdGVTY3JvbGwiLCJPcmRlcnNMaXN0IiwiT05FX1BBR0VfTkVYVCIsImhhc01vcmUyRmV0Y2giLCJzaG91bGRGZXRjaERhdGEiLCJNeU9yZGVyc1RpY2tldHMiLCJtZW1iZXJPcmRlcnMiLCJvcmRlcnNfY3VycmVudF9wYWdlIiwib3JkZXJzX2xhc3RfcGFnZSIsIm9yZGVyc19wZXJfcGFnZSIsInRpY2tldF9wZXJfcGFnZSIsImZldGNoRGF0YSIsImN1cnJlbnRfcGFnZSIsIm15T3JkZXJzV3JhcHBlciIsImRhdGFMZW5ndGgiLCJuZXh0IiwiaGFzTW9yZSIsInNjcm9sbFRocmVzaG9sZCIsIm5vT3JkZXJzRm91bmQiLCJub09yZGVyc0ljb25XcmFwcGVyIiwiY2FsY3VsYXRlT3JkZXJUb3RhbHMiLCJmb3JtYXRDdXJyZW5jeSIsIl9GcmFnbWVudCIsIk9yZGVyU3VtbWFyeVRhYmxlIiwiZGlzY291bnRUb3RhbCIsInJlZnVuZFRvdGFsIiwidGF4ZXNUb3RhbCIsImFtb3VudFRvdGFsIiwidGlja2V0U3VtbWFyeSIsImh1bmRyZWQiLCJvcmRlclN1bW1hcnlUYWJsZSIsInRpY2tldFRvdGFsIiwicXR5IiwidGlja2V0X3R5cGUiLCJjb3N0IiwiYWxpZ24iLCJjdXJyZW5jeSIsImNyZWF0ZWQiLCJkaXNjb3VudF9hbW91bnQiLCJ0YXhlc19hbW91bnQiLCJzaGFwZSIsInVzZU5vdyIsInRpY2tldHNSZWZ1bmRhYmxlIiwiUmVmdW5kRW1haWxTdXBwb3J0Iiwic3VibWl0UmVxdWVzdCIsIm9uUmVmdW5kQ2xpY2siLCJvblJlZnVuZERldGFpbENsaWNrIiwib25FbWFpbFN1cHBvcnRDbGljayIsIm5vdyIsImlzSW5SZWZ1bmRhYmxlUGVyaW9kIiwicmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlIiwiYXRMZWFzdE9uZVJlZnVuZGFibGVUaWNrZXQiLCJpc1JlZnVuZGFibGUiLCJoYXNSZWZ1bmRSZXF1ZXN0cyIsInJvbGUiLCJvcmRlclN1bW1hcnlCdXR0b24iLCJyZWZ1bmREaXNhYmxlZCIsImFycmF5T2YiLCJPcmRlclN1bW1hcnkiLCJvcmRlclN1bW1hcnlXcmFwcGVyIiwicHgiLCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvIiwibWVtYmVyVGlja2V0cyIsIk9yZGVyTGlzdFRpY2tldHMiLCJBc3NpZ25Ub01lIiwidXNlclRpY2tldHMiLCJ1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlIiwidXNlcl90aWNrZXRzX2xhc3RfcGFnZSIsIm9yZGVyVGlja2V0Q29udGFpbmVyIiwiYXNzaWduZWRUb01lV3JhcHBlciIsInRpY2tldExpc3RDb250YWluZXIiLCJpc1JlZnVuZGluZyIsImlzU2VsZWN0ZWRUb1JlZnVuZCIsInNlbGVjdFRvUmVmdW5kIiwiaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0Iiwibm9UaWNrZXRzRm91bmQiLCJUeXBvZ3JhcGh5IiwiQXNzaWduZWRUbyIsIkV4dGVybmFsQXNzaWduZWRUbyIsIk1hbmFnZUZvciIsIkF0dGVuZGVlU3RhdHVzIiwiX3RpY2tldCRvd25lciIsIl90aWNrZXQkb3duZXIyIiwiX3RpY2tldCRvd25lcjMiLCJpc1VuYXNzaWduZWQiLCJpc19hY3RpdmUiLCJpc0RlbGVnYXRlZCIsInRpY2tldE93bmVyRW1haWwiLCJfdGlja2V0JG9yZGVyIiwiX3RpY2tldCRvcmRlcjIiLCJfdGlja2V0JG93bmVyNCIsIl90aWNrZXQkb3duZXI1IiwiYXNzaWduZWRCeVRleHQiLCJvd25lcl9maXJzdF9uYW1lIiwib3duZXJfbGFzdF9uYW1lIiwiUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIiwiT3JkZXJMaXN0SXRlbSIsIl9vcmRlciRtZW1iZXJUaWNrZXRzIiwiX29yZGVyJG1lbWJlclRpY2tldHMyIiwib25QYWdpbmF0ZUNsaWNrIiwidGlja2V0c1RvUmVmdW5kIiwiaXRlbXNUb0Rpc3BsYXkiLCJzZXRJdGVtc1RvRGlzcGxheSIsInNsaWNlZFRpY2tldHMiLCJzbGljZSIsIm9uVmlld01vcmUiLCJ0aWNrZXRzX3RvdGFsIiwib25WaWV3TGVzcyIsImZpbmQiLCJ2aWV3TW9yZUJ1dHRvbiIsIlRpY2tldFN0YXR1cyIsImdldFN1bW1pdFJlYXNzaWduRGF0ZSIsIlRpY2tldERldGFpbCIsInVzZVRpY2tldERldGFpbHMiLCJUaWNrZXRBc3NpZ24iLCJtb2RhbFZpZXdzIiwiZGV0YWlsIiwicmVhc3NpZ24iLCJhc3NpZ24iLCJUaWNrZXRDVEFzIiwiaXNJbmNvbXBsZXRlIiwiaXNSZWFzc2lnbmFibGUiLCJvbk9wZW5DbGljayIsImFzc2lnblRpY2tldEJ1dHRvbiIsInZpZXdGaW5pc2hUaWNrZXRCdXR0b24iLCJyZWFzc2lnbkJ1dHRvbiIsIl90aWNrZXQkdGlja2V0X3R5cGUiLCJfdGlja2V0JGJhZGdlIiwiY2FuUmVhc3NpZ24iLCJtb2RhbE9wZW4iLCJzZXRNb2RhbE9wZW4iLCJyZWFzc2lnbkRhdGUiLCJvblJlYXNzaWduYWJsZVBlcmlvZCIsImhhbmRsZUNsb3NlTW9kYWwiLCJoYW5kbGVPcGVuTW9kYWwiLCJ2aWV3Iiwib3JkZXJXcmFwcGVyIiwicmVmdW5kTW9kYWwiLCJkaXNhYmxlZFJlZnVuZCIsInNlbGVjdGVkIiwiY2hlY2tib3giLCJwbCIsInRpY2tldFRpY2tldFR5cGUiLCJiYWRnZUZlYXR1cmVXcmFwcGVyIiwicHIiLCJiYWRnZSIsImZlYXR1cmVzIiwiYmFkZ2VGZWF0dXJlIiwic3JjIiwiaW1hZ2UiLCJhbHQiLCJ0aWNrZXRObyIsImxnIiwibWluSGVpZ2h0IiwidGlja2V0QWN0aW9uQnV0dG9ucyIsIm93bmVySWQiLCJ0b3RhbF9yZWZ1bmRlZF9hbW91bnQiLCJUYWJzIiwiVGFiIiwiUmVmdW5kUmVxdWVzdHNNb2RhbCIsIlJlZnVuZERldGFpbHMiLCJUYWJQYW5lbCIsInByb3BzIiwiaW5kZXgiLCJoaWRkZW4iLCJPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSIsImlzTW9iaWxlIiwiZGV0YWlsc1JlcXVpcmVkIiwic2V0VmFsdWUiLCJfIiwic2V0VGlja2V0c1RvUmVmdW5kIiwic2V0U3VibWl0UmVxdWVzdCIsInJlZnVuZERldGFpbHNPcGVuIiwic2V0UmVmdW5kRGV0YWlsc09wZW4iLCJ1bnNlbGVjdFJlZnVuZFRpY2tldHMiLCJmaWx0ZXJTZWxlY3RlZCIsInNlbGVjdGVkVGlja2V0IiwiY2xvc2VTdWJtaXRSZXF1ZXN0IiwicmVzZXRBbGxSZWZ1bmRTdGF0dXNlcyIsIm1vcmVEZXRhaWxzIiwiYm9yZGVyQ29sb3IiLCJ0YWJCdXR0b25zIiwibWQiLCJvblJlZnVuZFN1Y2Nlc3NDbG9zZSIsIm9uQ2xvc2VTbGlkZXIiLCJ1c2VUaGVtZSIsInVzZU1lZGlhUXVlcnkiLCJnZXRGb3JtYXR0ZWREYXRlIiwiYnJlYWtwb2ludHMiLCJkb3duIiwiaXNNb2JpbGVWaWV3YWJsZSIsInNldE1vYmlsZVZpZXdhYmxlIiwidGlja2V0c19wYWdlX2N1cnJlbnQiLCJvcmRlclRpY2tldEluZm9Db250YWluZXIiLCJvcmRlclRpY2tldEluZm8iLCJibGFja0J1dHRvbiIsInJvd1NwYWNpbmciLCJjb2x1bW5TcGFjaW5nIiwic20iLCJkaXNwbGF5X25vbmUiLCJmbGV4RGlyZWN0aW9uIiwidXNlTWVtbyIsIlJpZ2h0RHJhd2VyIiwiUmVmdW5kUmVxdWVzdGVkVGlja2V0IiwiZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyIsInJlcXVlc3RlZFRpY2tldHMiLCJjbG9zZVNsaWRlciIsInJlZnVuZERldGFpbHMiLCJ0b29sdGlwQ2xhc3NlcyIsIkluZm9JY29uIiwibW9tZW50IiwiUmVmdW5kU3RhdHVzIiwiR1JJRF84IiwiR1JJRF8xMiIsIlBBRERJTkdfMiIsImFwcHJvdmVkUmVmdW5kcyIsInJlZnVuZCIsInJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkiLCJyZWZ1bmRlZF90YXhlcyIsInJ0IiwidGF4SWQiLCJ0YXgiLCJ0b3RhbFJlZnVuZGVkVGF4QW1vdW50IiwicmVmdW5kZWRfYW1vdW50IiwiSHRtbFRvb2x0aXAiLCJjbGFzc2VzIiwicG9wcGVyIiwibWF4V2lkdGgiLCJib3JkZXIiLCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXIiLCJyZWZ1bmREZXRhaWwiLCJyZWZ1bmRUaWNrZXRBdHRlbmRlZSIsImFjdGlvbl9kYXRlIiwiZm9ybWF0IiwiQ2hpcCIsImdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yIiwic3RhdHVzQ29sb3IiLCJidXR0b25QaWxsIiwiU3R5bGVkRW5naW5lUHJvdmlkZXIiLCJDaGVja0NpcmNsZUljb24iLCJTVEVQX09ORSIsIlNURVBfVEhSRUUiLCJTVEVQX1RXTyIsInN0ZXAiLCJzZXRTdGVwIiwiZXJyb3JNc2ciLCJzZXRFcnJvck1zZyIsInJlZnVuZFN1Y2Nlc3MiLCJzZXRSZWZ1bmRTdWNjZXNzIiwiY29uZmlybVJlZnVuZCIsImdvQmFja1RvUmVmdW5kIiwicmVmdW5kVGlja2V0cyIsInJlZnVuZFN0ZXBPbmUiLCJzdWJ0aXRsZSIsInRpY2tldExpc3QiLCJhY3Rpb25CdXR0b25zIiwiY2FuY2VsQnV0dG9uIiwiY29udGludWVCdXR0b24iLCJyZWZ1bmRTdGVwVHdvIiwicmVmdW5kRXJyb3JNc2ciLCJDVEFCdXR0b25XcmFwcGVyIiwicmVmdW5kU3RlcFRocmVlIiwicmVmdW5kU3VjY2Vzc2Z1bCIsInN1Y2Nlc3NNc2ciLCJzdWNjZXNzTXNnMiIsInJlbmRlclN0ZXBzIiwiaW5qZWN0Rmlyc3QiLCJEcmF3ZXIiLCJDbG9zZSIsImFuY2hvciIsIk1vZGFsUHJvcHMiLCJrZWVwTW91bnRlZCIsImhlYWRlciIsImNsb3NlQnRuIiwiZmxvYXQiLCJndXR0ZXJCb3R0b20iLCJvbmVPZlR5cGUiLCJnZXRTdW1taXRGb3JtYXR0ZWREYXRlIiwiU3VtbWl0SGVhZGVyIiwid2lkZ2V0SGVhZGVyIiwic3VtbWl0VGl0bGVEYXRlIiwieXVwIiwiRGVsZWdhdGVGb3JtIiwiZGVsZWdhdGVfZmlyc3RfbmFtZSIsImRlbGVnYXRlX2xhc3RfbmFtZSIsImRlbGVnYXRlX2VtYWlsIiwicmVzZXRGb3JtIiwiaGFuZGxlQ2FuY2VsIiwiQXNzaWduSGVhZGVyIiwiaW5Qcm9ncmVzcyIsInVzZXJFbWFpbCIsImFzc2lnbmVkVG9Zb3UiLCJnZXRTZWNvbmRhcnlUaXRsZSIsImdldEhlYWRlck5vdGUiLCJwdXJjaGFzZWRCeVdyYXBwZXIiLCJwdXJjaGFzZWRCeSIsIm93bmVyX2VtYWlsIiwib3JkZXJObyIsImhlYWRlck5vdGUiLCJSZWFzc2lnbkhlYWRlciIsImFsbG93c0RlbGVnYXRlIiwiUmVhc3NpZ25Gb3JtIiwibmV3X2F0dGVuZGVlX2VtYWlsIiwicGVyc29uYWxfbWVzc2FnZSIsIm11bHRpbGluZSIsIm1pblJvd3MiLCJ1c2VHZXRUaWNrZXQiLCJzYXZlTWVzc2FnZSIsInNldFNhdmVNZXNzYWdlIiwiYXNzaWduT3B0aW9uIiwic2V0QXNzaWduT3B0aW9uIiwiYXNzaWduYXRpb25JblByb2dyZXNzIiwic2V0QXNzaWduYXRpb25JblByb2dyZXNzIiwiaXNBc3NpZ25lZFRvTWUiLCJvbkFzc2lnbiIsIm9uRGVsZWdhdGUiLCJvbkNsb3NlRVFGb3JtIiwib25DbG9zZVNhdmVNZXNzYWdlIiwib25TYXZlRVEiLCJkZXNjcmlwdGlvbiIsInJlc29sdmUiLCJIZWFkZXIiLCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lciIsImFzc2lnbk9wdGlvbnNXcmFwcGVyIiwibXkiLCJBdXRvY29tcGxldGUiLCJxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyIsIkNvbXBhbnlGaWVsZCIsInN1bW1pdElkIiwiaW5wdXRWYWx1ZSIsInNldElucHV0VmFsdWUiLCJvcHRpb25zIiwic2V0T3B0aW9ucyIsInNldEZpZWxkVG91Y2hlZCIsInJlc3VsdHMiLCJuZXdPcHRpb25zIiwiYXV0b0NvbXBsZXRlIiwiZnJlZVNvbG8iLCJpbmNsdWRlSW5wdXRJbkxpc3QiLCJmaWx0ZXJTZWxlY3RlZE9wdGlvbnMiLCJnZXRPcHRpb25MYWJlbCIsIm9wdGlvbiIsInRtcFZhbHVlIiwib25JbnB1dENoYW5nZSIsIm5ld0lucHV0VmFsdWUiLCJmaWx0ZXJPcHRpb25zIiwiZmlsdGVyZWQiLCJpc0V4aXN0aW5nIiwicmVuZGVySW5wdXQiLCJyZW5kZXJPcHRpb24iLCJvcHRpb25Qcm9wcyIsIlRpY2tldE93bmVyRmllbGRzIiwiVGlja2V0Rm9ybSIsImNhbkVkaXQiLCJyZWR1Y2UiLCJhZGRpdGlvbmFsRGV0YWlscyIsImluZm9Ob3RlIiwiUVJDb2RlIiwiRmlsZURvd25sb2FkT3V0bGluZWQiLCJEb3dubG9hZEljb24iLCJFbWFpbE91dGxpbmVkIiwiRW1haWxJY29uIiwiVFdPX0lURU0iLCJfdGlja2V0JG9yZGVyMyIsInNlbnRDb25maXJtYXRpb24iLCJzZXRTZW50Q29uZmlybWF0aW9uIiwiaXNVc2VyT3JkZXJPd25lciIsIm93bmVyX2lkIiwiaXNVc2VyVGlja2V0T3duZXIiLCJjYW5FZGl0VGlja2V0RGF0YSIsImFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnMiLCJpc0NvbXBsZXRlIiwib25TYXZlIiwiZG93bmxvYWRUaWNrZXRQZGYiLCJvblNlbmRFbWFpbCIsInRpY2tldERldGFpbENvbnRhaW5lciIsInFyQ29kZSIsInFyX2NvZGUiLCJ2aWV3Qm94IiwicXJOb3RlIiwiaXNfdmlydHVhbCIsImFjdGlvbkJ1dHRvbnNDb250YWluZXIiLCJkb3dubG9hZEJ0biIsInNlbmRCdG4iLCJzZW50Iiwib3JkZXJOdW1iZXIiLCJhdHRlbmRlZUNvbnRhaW5lciIsImF0dGVuZGVlSW5mb1RpdGxlIiwiQ29udGFpbmVyIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzIiwiaXNBY3RpdmUiLCJyZWZ1bmRSZXF1ZXN0cyIsInRpY2tldFN0YXR1c0NvbnRhaW5lciIsImJ1dHRvblJlZnVuZFJlcXVlc3RlZCIsImJ1dHRvbkluY29tcGxldGUiLCJidXR0b25VbmFzc2lnbmVkIiwiYnV0dG9uQ29tcGxldGUiLCJidXR0b25DYW5jZWxsZWQiLCJBc3NpZ25lZFRvTWUiLCJXaWRnZXRUYWJzIiwidGFiIiwic2V0VGFiIiwiaGFuZGxlVGFiQ2hhbmdlIiwibmV3VGFiIiwidGFiV3JhcHBlciIsIldpZGdldFdyYXBwZXIiLCJtZXNzYWdlQ2FsbGJhY2siLCJsb2FkaW5nIiwiYXBpRXJyb3IiLCJyZXNldEFwaUVycm9yIiwiZmlsdGVyVmFsdWUiLCJzb3J0VmFsdWUiLCJ0aWNrZXRzVGl0bGVUZXh0IiwiUHJvdmlkZXIiLCJydW4iLCJjdXJyZW50VGlja2V0Iiwic21vb3RoU2Nyb2xsVG8iLCJ0YXJnZXRTY3JvbGxUb3AiLCJkdXJhdGlvbiIsInN0YXJ0U2Nyb2xsVG9wIiwic2Nyb2xsVG9wIiwiZGlzdGFuY2UiLCJzdGFydFRpbWUiLCJhbmltYXRpb25TdGVwIiwidGltZXN0YW1wIiwiZWxhcHNlZCIsInByb2dyZXNzIiwiTWF0aCIsIm1pbiIsImVhc2VJbk91dFF1YWQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJjb250YWluZXJJZCIsImlzVmFsaWQiLCJlcnJvckFycmF5IiwiZXJyb3JDb3VudCIsImVsZW1lbnRzU29ydGVkIiwicmVzdWx0IiwiZWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJlbFJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJhIiwiYiIsImdldEVsZW1lbnRCeUlkIiwiY29udGFpbmVyUmVjdCIsImVsZW1PZmZlc3QiLCJhbmltYXRpb25EdXJhdGlvbiIsImlzVGlja2V0UmVmdW5kYWJsZSIsIlNUQVRVU19DT01QTEVURSIsIlNUQVRVU19JTkNPTVBMRVRFIiwiU1RBVFVTX0NBTkNFTExFRCIsIlNUQVRVU19VTkFTU0lHTkVEIiwiX3RpY2tldCRwcm9tb19jb2RlIiwiX3RpY2tldCR0aWNrZXRfdHlwZTIiLCJfdGlja2V0JHByb21vX2NvZGUyIiwiZ2V0U3RhdHVzIiwiYWxsb3dzX3RvX2RlbGVnYXRlIiwicHJvbW9fY29kZSIsImFsbG93c190b19yZWFzc2lnbiIsImluaXRSZWFjdEkxOG5leHQiLCJMYW5ndWFnZURldGVjdG9yIiwiZW4iLCJlcyIsInVzZSIsImluaXQiLCJmYWxsYmFja0xuZyIsImRlYnVnIiwicmVzb3VyY2VzIiwidHJhbnNsYXRpb24iLCJpbnRlcnBvbGF0aW9uIiwiZXNjYXBlVmFsdWUiLCJMT0dPVVRfVVNFUiIsIlNUQVJUX0xPQURJTkciLCJTVE9QX0xPQURJTkciLCJSRVNFVF9MT0FESU5HIiwiaGFzTG9hZGVkQWxsRGF0YSIsIkRFRkFVTFRfRklMVEVSX1NUQVRFIiwiREVGQVVMVF9TVEFURSIsIndpZGdldExvYWRpbmciLCJjdXJyZW50X3RhYiIsImlzT3JkZXJMb2FkaW5nIiwib3JkZXJzX3RvdGFsIiwidGlja2V0X2N1cnJlbnRfcGFnZSIsInRpY2tldF9sYXN0X3BhZ2UiLCJ0aWNrZXRfdG90YWwiLCJ1c2VyX3RpY2tldHNfdG90YWwiLCJXaWRnZXRSZWR1Y2VyIiwidG90YWwiLCJsYXN0X3BhZ2UiLCJmb3JtZXJPcmRlciIsIm8iLCJfZGF0YSQiLCJ1cGRhdGVkT3JkZXIiLCJ0aWNrZXRzX3BhZ2VfbGFzdCIsIm1vIiwiX3RpY2tldHNSZWZ1bmRSZXF1ZXN0IiwidXBkYXRlZFRpY2tldHMiLCJ0cnIiLCJ0aWNrZXREYXRhIiwibmV3T3JkZXJzIiwibmV3VGlja2V0cyIsImNvbmZpZ3VyZVN0b3JlIiwicGVyc2lzdFN0b3JlIiwicGVyc2lzdFJlZHVjZXIiLCJGTFVTSCIsIlJFSFlEUkFURSIsIlBBVVNFIiwiUEVSU0lTVCIsIlBVUkdFIiwiUkVHSVNURVIiLCJzdG9yYWdlIiwiY29tYmluZVJlZHVjZXJzIiwiZ2V0U3RvcmUiLCJjbGllbnRJZCIsImxvZ2luVXJsIiwicmVkdWNlcnMiLCJzdG9yZSIsInJlZHVjZXIiLCJtaWRkbGV3YXJlIiwiZ2V0RGVmYXVsdE1pZGRsZXdhcmUiLCJ0aHVuayIsImV4dHJhQXJndW1lbnQiLCJpbW11dGFibGVDaGVjayIsInNlcmlhbGl6YWJsZUNoZWNrIiwiaWdub3JlZEFjdGlvbnMiLCJ1c2VJbml0U3RvcmUiLCJjb25maWciLCJwZXJzaXN0b3IiLCJpbml0TG9nT3V0IiwiZ2V0QWNjZXNzVG9rZW4iLCJTZW50cnkiLCJjYXB0dXJlRXhjZXB0aW9uIiwiTEFTVF9IT1VSX09GXzI0X0hPVVIiLCJMQVNUX01JTlVURV9PRl9IT1VSIiwiT05FX0RBWSIsIlNUQVRVU19QRU5ESU5HIiwiU1RBVFVTX0VSUk9SIiwiU1RBVFVTX1BST0NFU1NJTkciLCJTVEFUVVNfUkVGVU5EX1BFTkRJTkciLCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEIiwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRCIsIlNUQVRVU19SRUZVTkRfUEVORElOR19MQyIsIlNUQVRVU19SRUZVTkRfQVBQUk9WRURfTEMiLCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDIiwiSkVTVF9USU1FT1VUX0lOX01JTExJU0VDIiwiT05FX0lURU0iLCJGSVZFX0lURU0iLCJTSVhfSVRFTSIsImxvY2FsZSIsImRlZmF1bHRPcHRpb25zIiwibWluaW11bUZyYWN0aW9uRGlnaXRzIiwibWF4aW11bUZyYWN0aW9uRGlnaXRzIiwiZm9ybWF0dGVyIiwiSW50bCIsIk51bWJlckZvcm1hdCIsImRhdGV0aW1lIiwidGltZVpvbmUiLCJ0eiIsInVuaXgiLCJhbW91bnQiLCJwdXJjaGFzZVRpY2tldFRvdGFsIiwiY3VycmVuY3lPYmplY3QiLCJ0aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUiLCJ0aWNrZXRUeXBlIiwidHQiLCJ0aWNrZXRfdHlwZV9pZCIsInB1cmNoYXNlVG90YWwiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJnZXRPcmRlclRpY2tldHMiLCJfb3JkZXJzJCIsIm9yZGVycyIsImdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyIsInRzIiwic2V0SG91cnMiLCJkZWZhdWx0Q3VycmVudFRpbWUiLCJyb3VuZCIsIkRhdGUiLCJnZXROb3ciLCJ0aW1lclN0YXRlIiwibm93VXRjIiwicmVxdWVzdGVkUGFnZSIsImN1cnJlbnRQYWdlIiwibGFzdFBhZ2UiLCJpc1NhbWVQYWdlIiwiaXNMYXN0UGFnZSIsImNoZWNrU3VtbWl0UGFzdCIsInJlYXNzaWduX2RhdGUiLCJyZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIiwiZW5kX2RhdGUiLCJjaGVja1N1bW1pdFN0YXJ0ZWQiLCJzdGFydF9kYXRlIiwiZ2V0U3VtbWl0RGF5c0RpZmYiLCJzdGFydERheSIsInRpbWVfem9uZV9pZCIsImVuZERheSIsImRheXMiLCJkaWZmIiwiZm9ybWF0U3RhcnREYXRlIiwiZm9ybWF0RW5kRGF0ZSIsInllYXIiLCJtb250aCIsInN0YXJ0RGF0ZSIsImVuZERhdGUiLCJnZXRTdW1taXRMb2NhdGlvbiIsIl9zdW1taXQkbG9jYXRpb25zIiwibG9jYXRpb24iLCJsb2NhdGlvbnMiLCJsIiwiY2xhc3NfbmFtZSIsImlzX21haW4iLCJjaXR5IiwiY291bnRyeSIsInVzZVN1bW1pdERldGFpbHMiLCJfc3VtbWl0JHRpbWVfem9uZSIsIl9zdW1taXQkdGltZV96b25lMiIsImZvcm1hdHRlZERhdGUiLCJmb3JtYXR0ZWRSZWFzc2lnbkRhdGUiLCJ0aW1lX3pvbmUiLCJkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lIiwiaXNQYXN0IiwiaXNTdGFydGVkIiwic3RhdHVzRGF0YSIsImdldFRpY2tldFN0YXR1c0tleSIsImdldFRpY2tldFN0YXR1c0RhdGEiLCJpc1N1bW1pdFBhc3QiLCJnZXRUaWNrZXRSb2xlIiwiZmVhdHVyZSIsImdldFRpY2tldFR5cGUiLCJmaW5hbF9hbW91bnQiLCJyciIsImdldFJlZnVuZGVkUmVxdWVzdGVkVGlja2V0cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczIiLCJhbGxUaWNrZXRzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzMyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczQiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM1IiwiZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM2IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczgiLCJnZXRUeXBlVmFsaWRhdGlvbiIsInNjaGVtYSIsIm9uZU9mIiwib2YiLCJpbmNsdWRlQXR0ZW5kZWVJbmZvIiwiaW5jbHVkZURpc2NsYWltZXIiLCJvbmx5UmVsZXZhbnQiLCJzdWJRdWVzdGlvblNsdWciLCJzdWJBbnN3ZXIiLCJtYXRjaCIsImRpc2NsYWltZXJNYW5kYXRvcnkiLCJsYXp5IiwidHlwZUVycm9yIiwiX3Ekc3ViX3F1ZXN0aW9uX3J1bGVzMiIsInN1YlF1ZXN0aW9uIiwibnVsbGFibGUiLCJ3aGVuIiwiaXMiLCJxdWVzdGlvbkFucyIsInNjaCIsIlBlcnNpc3RHYXRlIiwiTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQiLCJzdXBwb3J0RW1haWwiLCJoYW5kbGVCZWZvcmVMaWZ0IiwiVVJMU2VhcmNoUGFyYW1zIiwic2VhcmNoIiwiZmx1c2giLCJoYXMiLCJvbkJlZm9yZUxpZnQiXSwic291cmNlUm9vdCI6IiJ9
|