@phenixrts/sdk 2025.2.2-beta.583 → 2025.2.2
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/channels/debug/channels.js +2 -2
- package/channels/debug/package.json +1 -1
- package/channels/debug.private/channels.js +2 -2
- package/channels/debug.private/package.json +1 -1
- package/channels/debug.provideGlobalScope/channels.js +2 -2
- package/channels/debug.provideGlobalScope/package.json +1 -1
- package/channels/es5.debug.private/channels.js +2 -2
- package/channels/es5.debug.private/package.json +1 -1
- package/channels/min/channels.js +1 -1
- package/channels/min/channels.js.map +1 -1
- package/channels/min/package.json +1 -1
- package/channels/min.private/channels.js +1 -1
- package/channels/min.private/channels.js.map +1 -1
- package/channels/min.private/package.json +1 -1
- package/channels/min.provideGlobalScope/channels.js +1 -1
- package/channels/min.provideGlobalScope/channels.js.map +1 -1
- package/channels/min.provideGlobalScope/package.json +1 -1
- package/channels/package.json +1 -1
- package/full/debug/full.js +2 -2
- package/full/debug/package.json +1 -1
- package/full/debug.private/full.js +2 -2
- package/full/debug.private/package.json +1 -1
- package/full/min/full.js +1 -1
- package/full/min/full.js.map +1 -1
- package/full/min/package.json +1 -1
- package/full/min.private/full.js +1 -1
- package/full/min.private/full.js.map +1 -1
- package/full/min.private/package.json +1 -1
- package/full/package.json +1 -1
- package/package.json +1 -1
- package/publish/debug/package.json +1 -1
- package/publish/debug/publish.js +2 -2
- package/publish/debug.private/package.json +1 -1
- package/publish/debug.private/publish.js +2 -2
- package/publish/min/package.json +1 -1
- package/publish/min/publish.js +1 -1
- package/publish/min/publish.js.map +1 -1
- package/publish/min.private/package.json +1 -1
- package/publish/min.private/publish.js +1 -1
- package/publish/min.private/publish.js.map +1 -1
- package/publish/package.json +1 -1
|
@@ -9893,7 +9893,7 @@ var VersionManager = /*#__PURE__*/function () {
|
|
|
9893
9893
|
key: "sdkVersion",
|
|
9894
9894
|
get: function get() {
|
|
9895
9895
|
try {
|
|
9896
|
-
return "2025-08-
|
|
9896
|
+
return "2025-08-14T15:38:21.184Z (2025.2.2)";
|
|
9897
9897
|
} catch (e) {
|
|
9898
9898
|
return this._defaultVersion;
|
|
9899
9899
|
}
|
|
@@ -11414,4 +11414,4 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
11414
11414
|
/******/ })()
|
|
11415
11415
|
;
|
|
11416
11416
|
});
|
|
11417
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQztFQUFFO0VBQ3hMbFcsR0FBRyxFQUFFLElBQUlLLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0VBQ3pTSixHQUFHLEVBQUUsSUFBSUksVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFB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QzF2QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUUsR0FBRyxHQUFBc04sOElBQUEsQ0FDekVpNEIsb0dBQXVCLElBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFBajRCLDhJQUFBLENBQUssSUFBSW9pQixVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMxdkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxF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QUNBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTs7Ozs7V0N0QkE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLGlDQUFpQyxXQUFXO1dBQzVDO1dBQ0EsRTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHlDQUF5Qyx3Q0FBd0M7V0FDakY7V0FDQTtXQUNBLEU7Ozs7O1dDUEEsd0Y7Ozs7O1dDQUE7V0FDQTtXQUNBO1dBQ0EsdURBQXVELGlCQUFpQjtXQUN4RTtXQUNBLGdEQUFnRCxhQUFhO1dBQzdELEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTkE7QUFDQTtBQUNBOztBQUV5QjtBQUNTO0FBQ1E7QUFLNUI7QUFHZCwrREFBZTtFQUNicjJDLEdBQUcsRUFBSEEsNENBQUc7RUFDSCsyQixRQUFRLEVBQVJBLGlEQUFRO0VBQ1JqTixZQUFZLEVBQVpBLHFEQUFZQTtBQUNkLENBQUMsRSIsInNvdXJjZXMiOlsid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0Jyb3dzZXJEZXRlY3Rvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL1BsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vTmV0d29ya01vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZWRnZUF1dGgvRWRnZVRva2VuLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvUGFyYW1ldGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvRGlzcG9zYWJsZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9EaXNwb3NhYmxlTGlzdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9OdW1iZXJzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL1N0cmluZ3MudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9BcHBlbmRlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Db25zb2xlQXBwZW5kZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlckZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2luZ1RocmVzaG9sZC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NGYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcHJvbWlzZS9Qcm9taXNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9wcm9taXNlL1Byb21pc2VIYW5kbGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9SdGNDb25uZWN0aW9uTW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1NkcFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J4L1JlYWRPbmx5U3ViamVjdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcngvU3ViamVjdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL0Vudmlyb25tZW50LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvU0RLLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvVGVsZW1ldHJ5VXJsLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY2hhbm5lbHMvQ2hhbm5lbC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL0NoYW5uZWxTdGF0ZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL0NoYW5uZWxzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9DaGFubmVsQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvU3RhdGVDb250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9Ub2tlbkNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL0F1ZGlvQ29kZWMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL0F1ZGlvQ29kZWNNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvaDI2NC9uYWxVbml0L0FubmV4QkZvdXJCeXRlU3RhcnRDb2RlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVmYXVsdHMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvQml0cmF0ZU1vZGVNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0JpdHJhdGVTdGF0ZU1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRGlzY292ZXJ5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeVNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0VuZFBvaW50LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZnJhbWVUaW1pbmcvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9zdHJlYW1pbmcvUmVhbFRpbWVTdHJlYW0udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9zdHJlYW1pbmcvUmVhbFRpbWVTdHJlYW1GYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vSW5zZXJ0YWJsZVN0cmVhbXMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL1N1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9zdXJyb2dhdGVGcmFtZXMvaDI2NC9zdXJyb2dhdGUyOHgxNklGcmFtZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3N1cnJvZ2F0ZUZyYW1lcy9oMjY0L3N1cnJvZ2F0ZTI4eDE2UEZyYW1lLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL01lc3NhZ2VSb3V0ZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdmVyc2lvbi9WZXJzaW9uTWFuYWdlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeUFwZW5kZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlDb25maWd1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5U2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGltZS9EdXJhdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGltZS9FeHBvbmVudGlhbEJhY2tvZmYudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3ZpZGVvL0RpbWVuc2lvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdmlkZW8vU2Vzc2lvblRlbGVtZXRyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdmlkZW8vVmlkZW9UZWxlbWV0cnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmUud29ya2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy93b3JrZXItbG9hZGVyL2Rpc3QvcnVudGltZS9pbmxpbmUuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXJyYXlMaWtlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheVdpdGhIb2xlcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheVdpdGhvdXRIb2xlcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0cy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXRlcmFibGVUb0FycmF5TGltaXQuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvbm9uSXRlcmFibGVSZXN0LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL25vbkl0ZXJhYmxlU3ByZWFkLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJpbWl0aXZlLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJvcGVydHlLZXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcInBoZW5peFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJwaGVuaXhcIl0gPSBmYWN0b3J5KCk7XG59KShzZWxmLCAoKSA9PiB7XG5yZXR1cm4gIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5cbmNvbnN0IHZpc2liaWxpdHlDaGFuZ2VFdmVudCA9ICd2aXNpYmlsaXR5Y2hhbmdlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlJc0ZvcmVncm91bmQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNGb3JlZ3JvdW5kOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF90aW1lT2ZMYXN0VGFiRm9jdXNDaGFuZ2U6IG51bWJlciA9IERhdGUubm93KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5faXNGb3JlZ3JvdW5kID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgdGhpcy5fcmVhZE9ubHlJc0ZvcmVncm91bmQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0KHRoaXMuX2lzRm9yZWdyb3VuZCk7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gIH1cblxuICBnZXQgaXNGb3JlZ3JvdW5kKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5SXNGb3JlZ3JvdW5kO1xuICB9XG5cbiAgcHVibGljIGdldFRpbWVTaW5jZUxhc3RDaGFuZ2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gRGF0ZS5ub3coKSAtIHRoaXMuX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlID0gKCkgPT4gdGhpcy5faXNGb3JlZ3JvdW5kLnZhbHVlID0gIUdsb2JhbFNjb3BlLnZhbHVlLmRvY3VtZW50SXNIaWRkZW47XG4gICAgY29uc3QgdXNlRXZlbnRDYXB0dXJlUGhhc2UgPSBmYWxzZTtcblxuICAgIEdsb2JhbFNjb3BlLnZhbHVlLmFkZERvY3VtZW50RXZlbnRMaXN0ZW5lcih2aXNpYmlsaXR5Q2hhbmdlRXZlbnQsIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UsIHVzZUV2ZW50Q2FwdHVyZVBoYXNlKTtcblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5yZW1vdmVEb2N1bWVudEV2ZW50TGlzdGVuZXIodmlzaWJpbGl0eUNoYW5nZUV2ZW50LCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlLCB1c2VFdmVudENhcHR1cmVQaGFzZSkpKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCcm93c2VyRGV0ZWN0b3Ige1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXggPSAvKE1TSUV8KD8hR2Vja28uKylGaXJlZm94fCg/IUFwcGxlV2ViS2l0LitDaHJvbWUuKylTYWZhcml8KD8hQXBwbGVXZWJLaXQuKylDaHJvbWV8QXBwbGVXZWJLaXQoPyEuK0Nocm9tZXwuK1NhZmFyaSl8R2Vja28oPyEuK0ZpcmVmb3gpKSg/OiB8XFwvKShbXFxkLmFwcmVdKykvZztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbiA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbigpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWUgPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZSgpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck1ham9yVmVyc2lvbiA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJNYWpvclZlcnNpb24oKTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNNb2JpbGUgPSAoL0FuZHJvaWR8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fE9wZXJhIE1pbmkvaSkudGVzdChuYXZpZ2F0b3I/LnVzZXJBZ2VudCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0FuZHJvaWQgPSAoL0FuZHJvaWQvaSkudGVzdChuYXZpZ2F0b3I/LnVzZXJBZ2VudCk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNjkgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzY5LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzAuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcxID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83MS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzIgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcyLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzQuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc1ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83NS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzYgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc2LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NyA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzcuJyk7XG5cbiAgc3RhdGljIGdldCBicm93c2VyTmFtZUFuZFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb3dzZXJOYW1lO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyTWFqb3JWZXJzaW9uKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb3dzZXJNYWpvclZlcnNpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQW5kcm9pZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0FuZHJvaWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNjkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU2OTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcwO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcxKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzE7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc0O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc1KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzYoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc3O1xuICB9XG5cbiAgc3RhdGljIGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzTW9iaWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hdmlnYXRvciB8fCAhbmF2aWdhdG9yLnVzZXJBZ2VudCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJOYW1lQW5kVmVyc2lvbiA9IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCk7XG5cbiAgICBpZiAoYnJvd3Nlck5hbWVBbmRWZXJzaW9uICYmIGJyb3dzZXJOYW1lQW5kVmVyc2lvblswXSkge1xuICAgICAgcmV0dXJuIGJyb3dzZXJOYW1lQW5kVmVyc2lvblswXTtcbiAgICB9XG5cbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWUoKTogc3RyaW5nIHtcbiAgICBpZiAoIUJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3Nlck5hbWVMaXN0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uc3BsaXQoJy8nKTtcblxuICAgIGlmICghYnJvd3Nlck5hbWVMaXN0IHx8ICFicm93c2VyTmFtZUxpc3RbMF0pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gYnJvd3Nlck5hbWVMaXN0WzBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uKCk6IG51bWJlciB7XG4gICAgaWYgKCFCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3NlclZlcnNpb25MaXN0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uc3BsaXQoJy8nKTtcblxuICAgIGlmICghYnJvd3NlclZlcnNpb25MaXN0IHx8ICFicm93c2VyVmVyc2lvbkxpc3RbMV0pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bGxWZXJzaW9uID0gYnJvd3NlclZlcnNpb25MaXN0WzFdO1xuXG4gICAgaWYgKCFmdWxsVmVyc2lvbikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIE51bWJlcihmdWxsVmVyc2lvbi5zcGxpdCgnLicpWzBdKSB8fCAwO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSgpOiBzdHJpbmcge1xuICAgIGlmICghbmF2aWdhdG9yIHx8ICFuYXZpZ2F0b3IudXNlckFnZW50KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgICBjb25zdCBtc2llID0gdXNlckFnZW50LmluZGV4T2YoJ01TSUUgJyk7XG5cbiAgICBpZiAobXNpZSA+IDApIHtcbiAgICAgIC8vIElFIDEwIG9yIG9sZGVyID0+IHJldHVybiB2ZXJzaW9uIG51bWJlclxuICAgICAgcmV0dXJuIGBJRS8ke3BhcnNlSW50KHVzZXJBZ2VudC5zdWJzdHJpbmcobXNpZSArIDUsIHVzZXJBZ2VudC5pbmRleE9mKCcuJywgbXNpZSkpLCAxMCl9YDtcbiAgICB9XG5cbiAgICBjb25zdCB0cmlkZW50ID0gdXNlckFnZW50LmluZGV4T2YoJ1RyaWRlbnQvJyk7XG5cbiAgICBpZiAodHJpZGVudCA+IDApIHtcbiAgICAgIC8vIElFIDExID0+IHJldHVybiB2ZXJzaW9uIG51bWJlclxuICAgICAgY29uc3QgdmVyc2lvbiA9IHVzZXJBZ2VudC5pbmRleE9mKCdydjonKTtcblxuICAgICAgcmV0dXJuIGBJRS8ke3BhcnNlSW50KHVzZXJBZ2VudC5zdWJzdHJpbmcodmVyc2lvbiArIDMsIHVzZXJBZ2VudC5pbmRleE9mKCcuJywgdmVyc2lvbikpLCAxMCl9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFRlbGVtZXRyeUxldmVsTWFwcGluZyBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cnlEZWZhdWx0JztcbmltcG9ydCBMb2dnaW5nTGV2ZWxNYXBwaW5nIGZyb20gJy4uL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRGVmYXVsdHMnO1xuXG4vLyBUaGUgUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZpbGUgaXMgdXNlZCBpbiB0aGUgc2lsZW50IGJ1aWxkXG4vLyB0byBjb25zdHJhaW4gdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyB0byB0aGUgc3BlY2lmaWVkIHZhbHVlcy5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciB7XG4gIHB1YmxpYyBzdGF0aWMgZ2V0U3RyaW5nVmFsdWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmRlZmF1bHRTdHJpbmdWYWx1ZVtuYW1lXTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0Qm9vbGVhblZhbHVlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZGVmYXVsdEJvb2xlYW5WYWx1ZVtuYW1lXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkZWZhdWx0U3RyaW5nVmFsdWUoKTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB7XG4gICAgICAncGhlbml4LW1ldHJpY3MtbGV2ZWwnOiBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUoVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWwpLFxuICAgICAgJ3BoZW5peC1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC1jb25zb2xlLWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC10ZWxlbWV0cnktbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsKSxcbiAgICAgICdwaGVuaXgtY2hhbm5lbC10b2tlbic6ICcnLFxuICAgICAgJ3BoZW5peC11cmknOiAnJyxcbiAgICAgICdwaGVuaXgtYmFzZS11cmknOiAnJ1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXQgZGVmYXVsdEJvb2xlYW5WYWx1ZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBib29sZWFuIH0ge1xuICAgIHJldHVybiB7XG4gICAgICAncGhlbml4LWF1dG9tYXRpY2FsbHktcmV0cnktb24tZmFpbHVyZSc6IHRydWUsXG4gICAgICAncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbic6IHRydWUsXG4gICAgICAncGhlbml4LWZvcmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1yZXN0YXJ0JzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnOiB0cnVlXG4gICAgfTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIge1xuICBzdGF0aWMgZm9yY2VHYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkKSB7XG4gICAgICB0aGlzLmZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc1F1ZXVlTWljcm90YXNrU3VwcG9ydGVkKSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5xdWV1ZU1pY3JvdGFzayh0aGlzLm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbi5iaW5kKHRoaXMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCh0aGlzLm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbi5iaW5kKHRoaXMpLCAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBvdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgbGV0IGltZzogSFRNTEltYWdlRWxlbWVudCB8IG51bGwgPSBHbG9iYWxTY29wZS52YWx1ZS5kb2N1bWVudENyZWF0ZUVsZW1lbnQ8SFRNTEltYWdlRWxlbWVudD4oJ2ltZycpO1xuXG4gICAgaW1nLnNyYyA9IEdsb2JhbFNjb3BlLnZhbHVlLlVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW25ldyBBcnJheUJ1ZmZlcigxMGUrNyldKSk7IC8vIDEwME1iIG9yIGxlc3Mgb3IgbW9yZSBkZXBlbmRpbmcgb24gYXMgeW91IHdpc2ggdG8gZm9yY2UvaW52b2tlIEdDIGN5Y2xlIHJ1blxuICAgIGltZy5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5VUkwucmV2b2tlT2JqZWN0VVJMKHRoaXMuc3JjKTtcblxuICAgICAgaW1nID0gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXR3b3JrTW9uaXRvciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzU3VwcG9ydGVkOiBib29sZWFuID0gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbiAhPT0gdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ydHQ6IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPiA9IG5ldyBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZWZmZWN0aXZlVHlwZTogU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+ID0gbmV3IFN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+ID0gbmV3IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghdGhpcy5pc1N1cHBvcnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2V0dXBOZXR3b3JrQ2hhbmdlTGlzdGVuZXJzKCk7XG4gICAgdGhpcy51cGRhdGVTdGF0aXN0aWNzKCk7XG4gIH1cblxuICBnZXQgaXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU3VwcG9ydGVkO1xuICB9XG5cbiAgZ2V0IHJ0dCgpOiBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLl9ydHQ7XG4gIH1cblxuICBnZXQgZWZmZWN0aXZlVHlwZSgpOiBTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLl9lZmZlY3RpdmVUeXBlO1xuICB9XG5cbiAgZ2V0IGRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5KCk6IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5O1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldERvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LmRvd25saW5rID8/IEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LmRvd25saW5rTWF4ID8/IC0xO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFZmZlY3RpdmVUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LmVmZmVjdGl2ZVR5cGUgPz8gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8udHlwZSA/PyAnVW5rbm93bic7XG4gIH1cblxuICBwcml2YXRlIGdldFJvdW5kVHJpcFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8ucnR0ID8/IC0xO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgY29uc3QgbGlzdGVuZXIgPSAoKTogdm9pZCA9PiB0aGlzLnVwZGF0ZVN0YXRpc3RpY3MoKTtcblxuICAgIEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKTtcblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcikpKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3RhdGlzdGljcygpOiB2b2lkIHtcbiAgICB0aGlzLl9ydHQudmFsdWUgPSB0aGlzLmdldFJvdW5kVHJpcFRpbWUoKTtcbiAgICB0aGlzLl9lZmZlY3RpdmVUeXBlLnZhbHVlID0gdGhpcy5nZXRFZmZlY3RpdmVUeXBlKCk7XG4gICAgdGhpcy5fZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkudmFsdWUgPSB0aGlzLmdldERvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5KCk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IE1ldHJpY1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNUeXBlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcblxuZXhwb3J0IGNsYXNzIFN0cmVhbVNldHVwTGlzdGVuZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU3RyZWFtU2V0dXBMaXN0ZW5lcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IG1ldHJpY3NTZXJ2aWNlID0gU0RLLm1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdlTG9hZFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhcnRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgX21ldHJpY1N1Ym1pdHRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2VMb2FkVGltZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBzdWNjZXNzKHN0cmVhbUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZFN0cmVhbU1ldHJpYyhNZXRyaWNzVHlwZS5TZXR1cENvbXBsZXRlZCwgc3RyZWFtSWQpO1xuICB9XG5cbiAgZmFpbCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZFN0cmVhbU1ldHJpYyhNZXRyaWNzVHlwZS5TZXR1cEZhaWxlZCk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZFN0cmVhbU1ldHJpYyhtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZSwgc3RyZWFtSWQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fbWV0cmljU3VibWl0dGVkKSB7XG4gICAgICByZXR1cm4gO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY1N1Ym1pdHRlZCA9IHRydWU7XG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHNldHVwVGltZSA9IG5vdyAtIHRoaXMuX3N0YXJ0VGltZTtcbiAgICBjb25zdCBtZXRyaWNOYW1lID0gbmV3IE1ldHJpY1R5cGUobWV0cmljVHlwZSkuZ2V0TmFtZSgpO1xuXG4gICAgdGhpcy5tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogc2V0dXBUaW1lfSxcbiAgICAgIHN0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gU3RyZWFtIG1ldHJpYyBbJXNdIGluIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBzdHJlYW1JZCxcbiAgICAgIG1ldHJpY05hbWUsXG4gICAgICBuZXcgRHVyYXRpb25zKHNldHVwVGltZSkudG9Jc29TdHJpbmcoKVxuICAgICk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBFZGdlVG9rZW4gZnJvbSAnLi9FZGdlVG9rZW4nO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuL0VuY29kZWRFZGdlVG9rZW4nO1xuXG5jb25zdCBlZGdlQXV0aFRva2VuUHJlZml4ID0gJ0RJR0VTVDonO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGdlQXV0aFBhcnNlciB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRWRnZUF1dGhQYXJzZXInKTtcblxuICBzdGF0aWMgcGFyc2VUb2tlbih0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbik6IEVkZ2VUb2tlbiB7XG4gICAgaWYgKCF0aGlzLmlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkKHRva2VuKSkge1xuICAgICAgRWRnZUF1dGhQYXJzZXIuX2xvZ2dlci5lcnJvcignVG9rZW4gaXMgbm90IHZhbGlkIFslc10nLCB0b2tlbik7XG5cbiAgICAgIHJldHVybiBuZXcgRWRnZVRva2VuKG51bGwpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWNvZGVkVG9rZW4gPSBhdG9iKHRva2VuLnN1YnN0cihlZGdlQXV0aFRva2VuUHJlZml4Lmxlbmd0aCkpO1xuICAgICAgY29uc3QgZWRnZVRva2VuID0gSlNPTi5wYXJzZShkZWNvZGVkVG9rZW4pO1xuXG4gICAgICBlZGdlVG9rZW4udG9rZW4gPSBKU09OLnBhcnNlKGVkZ2VUb2tlbi50b2tlbik7XG5cbiAgICAgIHJldHVybiBuZXcgRWRnZVRva2VuKGVkZ2VUb2tlbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgRWRnZUF1dGhQYXJzZXIuX2xvZ2dlci5lcnJvcignQ2Fubm90IHBhcnNlIHRva2VuIHZhbHVlJywgZSk7XG5cbiAgICAgIHJldHVybiBuZXcgRWRnZVRva2VuKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBpc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRva2VuICYmIHRva2VuLnN0YXJ0c1dpdGgoZWRnZUF1dGhUb2tlblByZWZpeCk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcblxuaW50ZXJmYWNlIElUb2tlbiB7XG4gIHVyaTogVVJMIHwgbnVsbDtcbiAgY2FwYWJpbGl0aWVzOiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIElFZGdlVG9rZW4ge1xuICBhcHBsaWNhdGlvbklkOiBzdHJpbmc7XG4gIHRva2VuOiBJVG9rZW47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkZ2VUb2tlbiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGxpY2F0aW9uSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdG9rZW46IElUb2tlbjtcblxuICBjb25zdHJ1Y3RvcihlZGdlVG9rZW46IElFZGdlVG9rZW4gfCBudWxsKSB7XG4gICAgdGhpcy5fYXBwbGljYXRpb25JZCA9IGVkZ2VUb2tlbj8uYXBwbGljYXRpb25JZCB8fCAnJztcbiAgICB0aGlzLl90b2tlbiA9IHtcbiAgICAgIHVyaTogZWRnZVRva2VuPy50b2tlbj8udXJpID8gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTChlZGdlVG9rZW4udG9rZW4udXJpKSA6IG51bGwsXG4gICAgICBjYXBhYmlsaXRpZXM6IGVkZ2VUb2tlbj8udG9rZW4/LmNhcGFiaWxpdGllcyB8fCBbXVxuICAgIH07XG4gIH1cblxuICBnZXQgdXJpKCk6IFVSTCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl90b2tlbi51cmk7XG4gIH1cblxuICBnZXQgY2FwYWJpbGl0aWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW4uY2FwYWJpbGl0aWVzO1xuICB9XG5cbiAgZ2V0IHRlbmFuY3koKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYXBwbGljYXRpb25JZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0xvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5kZWNsYXJlIGNvbnN0IF9fRkVBVFVSRVNfXzoge1xuICBzZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBzZW5kTG9nczogTG9nZ2luZ0xldmVsVHlwZTtcbiAgc2VuZE1ldHJpY3M6IFRlbGVtZXRyeUxldmVsVHlwZTtcbiAgbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRGZWF0dXJlcyB7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBwcml2YXRlIHN0YXRpYyBfc2VuZExvZ3M6IExvZ2dpbmdMZXZlbFR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTWV0cmljczogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBwcml2YXRlIHN0YXRpYyBfbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xuXG4gIHN0YXRpYyBnZXQgc2VuZExvY2FsQ2FuZGlkYXRlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZExvZ3MoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRMb2dzO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTWV0cmljcygpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTWV0cmljcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9nVG9Db25zb2xlKCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9sb2dUb0NvbnNvbGU7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlGZWF0dXJlcygpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmVhdHVyZXMgPSBfX0ZFQVRVUkVTX187XG5cbiAgICAgIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXMgPSAnc2VuZExvY2FsQ2FuZGlkYXRlcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTG9jYWxDYW5kaWRhdGVzIDogdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ3NlbmRMb2dzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRMb2dzIDogJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdzZW5kTWV0cmljcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTWV0cmljcyA6ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ2xvZ1RvQ29uc29sZScgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5sb2dUb0NvbnNvbGUgOiAnQWxsJztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ0FsbCc7XG4gICAgfVxuICB9XG59XG5cbkJ1aWxkRmVhdHVyZXMuYXBwbHlGZWF0dXJlcygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IEJyb3dzZXJEZXRlY3RvciBmcm9tICcuLi9kb20vQnJvd3NlckRldGVjdG9yJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmVhdHVyZUVuYWJsZW1lbnQge1xuICBzdGF0aWMgZ2V0IGNsaWVudE9mZmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gQ2xpZW50IG9mZmVyIHdvcmtmbG93IGRvZXMgbm90IHdvcmsgY29ycmVjdGx5IGluIHRoZSBmb2xsb3dpbmcgYnJvd3NlcnNcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzQgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc1IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NiB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGdldFRyYW5zY2VpdmVyc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBGZWF0dXJlRW5hYmxlbWVudC5hZGRUcmFuY2VpdmVyRGlzYWJsZWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGFkZFRyYW5jZWl2ZXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAvLyBDaHJvbWUgNjksIDcwLCA3MSwgNzIgZXhwb3NlcyBgYWRkVHJhbmNlaXZlcmAgYnV0IGl0IGRvZXMgbm90IHdvcmsgY29ycmVjdGx5XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTY5IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3MCB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzEgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTcyO1xuICB9XG5cbiAgc3RhdGljIGdldCBnZXRTdGF0c1Byb21pc2VCYXNlZERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDY2O1xuICB9XG5cbiAgc3RhdGljIGdldCBnZXRDdXJyZW50T2ZmZXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IG9uVHJhY2tEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA2MyB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1NTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgcHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDUyO1xuICB9XG5cbiAgc3RhdGljIGdldCBzaG91bGRVc2VOYXRpdmVIbHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ1NhZmFyaScgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ1NhbXN1bmdCcm93c2VyJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNQcmVjYWNoaW5nRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lICE9PSAnSUUnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0ZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb25TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgdHlwZW9mIEdsb2JhbFNjb3BlLnZhbHVlPy5kb2N1bWVudENyZWF0ZUVsZW1lbnQgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPj0gNzEgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uID49IDY5IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYWZhcmknO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmlzTW9iaWxlKCk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEodHlwZW9mIE1lZGlhU3RyZWFtVHJhY2tQcm9jZXNzb3IgPT09ICd1bmRlZmluZWQnIHx8XG4gICAgICB0eXBlb2YgTWVkaWFTdHJlYW1UcmFja0dlbmVyYXRvciA9PT0gJ3VuZGVmaW5lZCcpO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIFJUQ1J0cFJlY2VpdmVyICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgUlRDUnRwUmVjZWl2ZXIucHJvdG90eXBlLmNyZWF0ZUVuY29kZWRTdHJlYW1zICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBSVENSdHBTY3JpcHRUcmFuc2Zvcm0gIT09ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1JlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2tTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBHbG9iYWxTY29wZS52YWx1ZT8uSFRNTFZpZGVvRWxlbWVudC5wcm90b3R5cGUucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayAhPT0gJ3VuZGVmaW5lZCc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hhbm5lbEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZlYXR1cmVFbmFibGVtZW50LmlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZFxuICAgICAgJiYgKEZlYXR1cmVFbmFibGVtZW50LmlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIHx8IEZlYXR1cmVFbmFibGVtZW50LmlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ1NhZmFyaSc7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZGVjbGFyZSBjb25zdCBfX1BBUkFNRVRFUlNfXzoge1xuICBkaXNjb3Zlcnk6IElEaXNjb3ZlcnlQYXJhbWV0ZXI7XG59O1xuXG5pbnRlcmZhY2UgSURpc2NvdmVyeVBhcmFtZXRlcntcbiAgaW50ZW50aW9uczogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXJhbWV0ZXJzIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2Rpc2NvdmVyeVBhcmFtZXRlcnM6IElEaXNjb3ZlcnlQYXJhbWV0ZXIgO1xuXG4gIHN0YXRpYyBnZXQgZGlzY292ZXJ5UGFyYW1ldGVycygpOiBJRGlzY292ZXJ5UGFyYW1ldGVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzY292ZXJ5UGFyYW1ldGVycztcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVBhcmFtZXRlcnMoKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBfX1BBUkFNRVRFUlNfXztcblxuICAgICAgdGhpcy5fZGlzY292ZXJ5UGFyYW1ldGVycyA9ICdkaXNjb3ZlcnknIGluIHBhcmFtZXRlcnMgPyBwYXJhbWV0ZXJzLmRpc2NvdmVyeSA6IHtpbnRlbnRpb25zOiAnJ307XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fZGlzY292ZXJ5UGFyYW1ldGVycyA9IHtpbnRlbnRpb25zOiAnJ307XG4gICAgfVxuICB9XG59XG5cblBhcmFtZXRlcnMuYXBwbHlQYXJhbWV0ZXJzKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJR2xvYmFsU2NvcGUgZnJvbSAnLi9JR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElEb2N1bWVudCBmcm9tICcuL0lEb2N1bWVudCc7XG5pbXBvcnQgSUxvY2F0aW9uIGZyb20gJy4vSUxvY2F0aW9uJztcbmltcG9ydCBJTmV0d29ya0luZm9ybWF0aW9uIGZyb20gJy4vSU5ldHdvcmtJbmZvcm1hdGlvbic7XG5pbXBvcnQgSU5hdmlnYXRvciBmcm9tICcuL0lOYXZpZ2F0b3InO1xuaW1wb3J0IElXaW5kb3cgZnJvbSAnLi9JV2luZG93JztcbmltcG9ydCBJUHJvdmlkZWRHbG9iYWxTY29wZSBmcm9tICcuL0lQcm92aWRlZEdsb2JhbFNjb3BlJztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuXG50eXBlIEJyb3dzZXJHbG9iYWxTY29wZSA9IElQcm92aWRlZEdsb2JhbFNjb3BlO1xuXG5jb25zdCBicm93c2VyR2xvYmFsU2NvcGU6IEJyb3dzZXJHbG9iYWxTY29wZSA9IHtcbiAgZG9jdW1lbnQsXG4gIGxvY2F0aW9uLFxuICBuYXZpZ2F0b3IsXG4gIHdpbmRvd1xufTtcblxuZXhwb3J0IGNsYXNzIEdsb2JhbFNjb3BlIGltcGxlbWVudHMgSUdsb2JhbFNjb3BlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2luc3RhbmNlID0gbmV3IFN1YmplY3Q8SUdsb2JhbFNjb3BlPihuZXcgR2xvYmFsU2NvcGUoYnJvd3Nlckdsb2JhbFNjb3BlKSk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seUluc3RhbmNlOiBSZWFkT25seVN1YmplY3Q8SUdsb2JhbFNjb3BlPiA9IG5ldyBSZWFkT25seVN1YmplY3QoR2xvYmFsU2NvcGUuX2luc3RhbmNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnQ6IElEb2N1bWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9jYXRpb246IElMb2NhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmF2aWdhdG9yOiBJTmF2aWdhdG9yO1xuICBwcml2YXRlIHJlYWRvbmx5IF93aW5kb3c6IElXaW5kb3c7XG5cbiAgY29uc3RydWN0b3IoZ2xvYmFsU2NvcGU6IEJyb3dzZXJHbG9iYWxTY29wZSkge1xuICAgIHRoaXMuX2RvY3VtZW50ID0gZ2xvYmFsU2NvcGUuZG9jdW1lbnQ7XG4gICAgdGhpcy5fbG9jYXRpb24gPSBnbG9iYWxTY29wZS5sb2NhdGlvbjtcbiAgICB0aGlzLl9uYXZpZ2F0b3IgPSBnbG9iYWxTY29wZS5uYXZpZ2F0b3I7XG4gICAgdGhpcy5fd2luZG93ID0gZ2xvYmFsU2NvcGUud2luZG93O1xuICB9XG5cbiAgLy8gVGhpcyBtZXRob2QgaXMgcmVxdWlyZWQgdG8gbWFpbnRhaW4gQVBJIGNvbnNpc3RlbmN5IHdpdGggUHJvdmlkZWRHbG9iYWxTY29wZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gIC8vIEB0cy1pZ25vcmVcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBwdWJsaWMgc3RhdGljIHNldEluc3RhbmNlKHByb3ZpZGVkR2xvYmFsU2NvcGU6IElQcm92aWRlZEdsb2JhbFNjb3BlKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIGJ1aWxkIGRvZXMgbm90IHN1cHBvcnQgc2V0dGluZyB0aGUgR2xvYmFsU2NvcGUnKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0SW5zdGFuY2UoKTogUmVhZE9ubHlTdWJqZWN0PElHbG9iYWxTY29wZT4ge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS5fcmVhZE9ubHlJbnN0YW5jZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc3Vic2NyaWJlKGNhbGxiYWNrOiAodmFsdWU6IElHbG9iYWxTY29wZSB8IG51bGwpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLl9yZWFkT25seUluc3RhbmNlLnN1YnNjcmliZShjYWxsYmFjayk7XG4gIH1cblxuICBnZXQgRm9ybURhdGEoKTogdHlwZW9mIEZvcm1EYXRhIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LkZvcm1EYXRhO1xuICB9XG5cbiAgZ2V0IEhUTUxWaWRlb0VsZW1lbnQoKTogdHlwZW9mIEhUTUxWaWRlb0VsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuSFRNTFZpZGVvRWxlbWVudDtcbiAgfVxuXG4gIGdldCBNZWRpYVN0cmVhbSgpOiB0eXBlb2YgTWVkaWFTdHJlYW0ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuTWVkaWFTdHJlYW07XG4gIH1cblxuICBnZXQgTWVkaWFTdHJlYW1UcmFjaygpOiB0eXBlb2YgTWVkaWFTdHJlYW1UcmFjayB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5NZWRpYVN0cmVhbVRyYWNrO1xuICB9XG5cbiAgZ2V0IE1lZGlhU291cmNlKCk6IHR5cGVvZiBNZWRpYVNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5NZWRpYVNvdXJjZTtcbiAgfVxuXG4gIGdldCBSVENQZWVyQ29ubmVjdGlvbigpOiB0eXBlb2YgUlRDUGVlckNvbm5lY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuUlRDUGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKCk6IHR5cGVvZiBSVENTZXNzaW9uRGVzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuUlRDU2Vzc2lvbkRlc2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IFJUQ0ljZUNhbmRpZGF0ZSgpOiB0eXBlb2YgUlRDSWNlQ2FuZGlkYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlJUQ0ljZUNhbmRpZGF0ZTtcbiAgfVxuXG4gIGdldCBVUkwoKTogdHlwZW9mIFVSTCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5VUkw7XG4gIH1cblxuICBnZXQgVVJMU2VhcmNoUGFyYW1zKCk6IHR5cGVvZiBVUkxTZWFyY2hQYXJhbXMge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuVVJMU2VhcmNoUGFyYW1zO1xuICB9XG5cbiAgZ2V0IGFkZERvY3VtZW50RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgYWRkV2luZG93RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5hZGRFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBjbGVhckludGVydmFsKCk6IChpZD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5jbGVhckludGVydmFsLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBjbGVhclRpbWVvdXQoKTogKGlkPzogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmNsZWFyVGltZW91dC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgZG9jdW1lbnRDcmVhdGVFbGVtZW50KCk6IDxFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQ+KHRhZzogc3RyaW5nKSA9PiBFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudC5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBkb2N1bWVudEhhc0ZvY3VzKCk6ICgpID0+IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5oYXNGb2N1cy5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBkb2N1bWVudElzSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX2RvY3VtZW50LmhpZGRlbjtcbiAgfVxuXG4gIGdldCBkb2N1bWVudFF1ZXJ5U2VsZWN0b3IoKTogPEVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudD4odGFnOiBzdHJpbmcpID0+IEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQucXVlcnlTZWxlY3Rvci5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBmZXRjaCgpOiAoaW5wdXQ6IHN0cmluZyB8IFVSTCB8IFJlcXVlc3QsIGluaXQ/OiBSZXF1ZXN0SW5pdCkgPT4gUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuZmV0Y2guYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGxvY2F0aW9uSG9zdG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb24uaG9zdG5hbWU7XG4gIH1cblxuICBnZXQgbG9jYXRpb25TZWFyY2goKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb24uc2VhcmNoO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRvckNvbm5lY3Rpb24oKTogSU5ldHdvcmtJbmZvcm1hdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRvci5jb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRvcklzT25MaW5lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0b3Iub25MaW5lO1xuICB9XG5cbiAgZ2V0IHBhZ2VMb2FkVGltZSgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3dbJ19fcGhlbml4UGFnZUxvYWRUaW1lJ10gfHwgdGhpcy5fd2luZG93WydfX3BhZ2VMb2FkVGltZSddO1xuICB9XG5cbiAgZ2V0IHF1ZXVlTWljcm90YXNrKCk6IChtaWNyb3Rhc2s6ICgpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cucXVldWVNaWNyb3Rhc2suYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IHJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgcmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBzZXRJbnRlcnZhbCgpOiAoaGFuZGxlcjogc3RyaW5nIHwgRnVuY3Rpb24sIHRpbWVvdXQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5zZXRJbnRlcnZhbC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgc2V0VGltZW91dCgpOiAoaGFuZGxlcjogc3RyaW5nIHwgRnVuY3Rpb24sIHRpbWVvdXQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5zZXRUaW1lb3V0LmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBHbG9iYWxTY29wZS5nZXRJbnN0YW5jZSgpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc3Bvc2FibGUgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgX2Rpc3Bvc2VkOiBib29sZWFuO1xuICBwcml2YXRlIF9kaXNwb3NhYmxlOiAoKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKGRpc3Bvc2FibGU6ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLl9kaXNwb3NlZCA9IGZhbHNlO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGUgPSBkaXNwb3NhYmxlO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGlzcG9zZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9kaXNwb3NlZCA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5fZGlzcG9zYWJsZS5jYWxsKHRoaXMpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuL0lEaXNwb3NhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzcG9zYWJsZUxpc3Qge1xuICBwcml2YXRlIHJlYWRvbmx5IF9saXN0OiBJRGlzcG9zYWJsZVtdID0gW107XG5cbiAgYWRkKGRpc3Bvc2FibGU6IElEaXNwb3NhYmxlKTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdC5wdXNoKGRpc3Bvc2FibGUpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9saXN0LmZvckVhY2goZGlzcG9zYWJsZSA9PiBkaXNwb3NhYmxlLmRpc3Bvc2UoKSk7XG4gICAgdGhpcy5fbGlzdC5sZW5ndGggPSAwO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYERpc3Bvc2FibGVMaXN0W2Rpc3Bvc2FibGVzPSR7dGhpcy5fbGlzdC5sZW5ndGh9XWA7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuLy8gQXMgZmxvYXQgaW4gRUNNQVNjcmlwdCB1c2UgNjQtYml0IGZvcm1hdCBpdCBjYW5ub3QgaGF2ZS9oYW5kbGUgbW9yZSB0aGFuIDE1IHN5bWJvbHMgYWZ0ZXIgZG90LlxuY29uc3QgbWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90ID0gMTU7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE51bWJlcnMge1xuICBzdGF0aWMgY291bnROdW1iZXJMZW5ndGgodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUgPSAwO1xuICAgIGxldCBudW1iZXIgPSB2YWx1ZTtcblxuICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICBudW1iZXIgKj0gLTE7XG4gICAgICBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIE51bWJlcnMuY291bnREaWdpdHNCZWZvcmVEZWNpbWFsKG51bWJlcikgKyBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlICsgKG51bWJlciAhPT0gTWF0aC5mbG9vcihudW1iZXIpID8gTnVtYmVycy5jb3VudERpZ2l0c0FmdGVyRGVjaW1hbChudW1iZXIpICsgMSA6IDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZml4Um91bmRpbmcodmFsdWU6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHBvd2VyID0gTWF0aC5wb3coMTAsIHByZWNpc2lvbik7XG5cbiAgICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIHBvd2VyKSAvIHBvd2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY291bnREaWdpdHNCZWZvcmVEZWNpbWFsKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCBkaWdpdHNCZWZvcmVEZWNpbWFsID0gMTtcbiAgICBsZXQgbnVtYmVyID0gdmFsdWU7XG5cbiAgICB3aGlsZSAobnVtYmVyID49IDEwKSB7XG4gICAgICBudW1iZXIgPSBudW1iZXIgLyAxMDtcbiAgICAgIGRpZ2l0c0JlZm9yZURlY2ltYWwrKztcbiAgICB9XG5cbiAgICByZXR1cm4gZGlnaXRzQmVmb3JlRGVjaW1hbDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSB2YWx1ZTtcbiAgICBsZXQgbW9kaWZpZWRWYWx1ZSA9IE1hdGguZmxvb3IodmFsdWUpO1xuICAgIGxldCBjb3VudCA9IDA7XG5cbiAgICB3aGlsZSAobW9kaWZpZWRWYWx1ZSAhPT0gb3JpZ2luYWxWYWx1ZSAmJiBjb3VudCA8IG1heERpZ2l0c0luRmxvYXRBZnRlckRvdCkge1xuICAgICAgY291bnQrKztcbiAgICAgIG1vZGlmaWVkVmFsdWUgPSBOdW1iZXJzLmZpeFJvdW5kaW5nKG9yaWdpbmFsVmFsdWUsIGNvdW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTnVtYmVycyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RyaW5ncyB7XG4gIHN0YXRpYyByYW5kb20obGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJhbmRvbTEzQ2hhcmFjdGVycyA9ICgpOiBzdHJpbmcgPT4ge1xuICAgICAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTYpLnN1YnN0cmluZygyLCAxNSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGxvb3BzOiBudW1iZXIgPSBNYXRoLmNlaWwobGVuZ3RoIC8gMTMpO1xuXG4gICAgcmV0dXJuIG5ldyBBcnJheShsb29wcykuZmlsbChyYW5kb20xM0NoYXJhY3RlcnMpLnJlZHVjZSgoc3RyaW5nLCBmdW5jKSA9PiB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgZnVuYygpO1xuICAgIH0sICcnKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdHJpbmdzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0VW5yZWFjaGFibGUoeDogbmV2ZXIpOiBuZXZlciB7XG4gIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB2YWx1ZSBbJHt4fV0uIFRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWRgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXNzZXJ0VW5yZWFjaGFibGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwcGVuZGVycyB7XG4gIHByaXZhdGUgX2FwcGVuZGVyczogQXJyYXk8SUFwcGVuZGVyPiA9IFtdO1xuXG4gIGdldCB2YWx1ZSgpOiBBcnJheTxJQXBwZW5kZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYXBwZW5kZXJzO1xuICB9XG5cbiAgYWRkKGFwcGVuZGVyOiBJQXBwZW5kZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBlbmRlcnMucHVzaChhcHBlbmRlcik7XG4gIH1cblxuICByZW1vdmUoYXBwZW5kZXI6IElBcHBlbmRlcik6IHZvaWQge1xuICAgIHRoaXMuX2FwcGVuZGVycyA9IHRoaXMuX2FwcGVuZGVycy5yZWR1Y2UoKGl0ZW1zLCBpdGVtKSA9PiB7XG4gICAgICBpZiAoIShpdGVtID09PSBhcHBlbmRlcikpIHtcbiAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH0sIFtdIGFzIEFycmF5PElBcHBlbmRlcj4pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25zb2xlQXBwZW5kZXIgaW1wbGVtZW50cyBJQXBwZW5kZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbDtcblxuICBsb2cobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCBkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgaWYgKGxvZ0xldmVsIDwgdGhpcy5fdGhyZXNob2xkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbE1lc3NhZ2UgPSBgJHtkYXRlLnRvSVNPU3RyaW5nKCl9IFske2NhdGVnb3J5fV0gWyR7TG9nZ2luZ0xldmVsW2xvZ0xldmVsXX1dICR7bWVzc2FnZX1gO1xuXG4gICAgaWYgKGxvZ0xldmVsIDwgTG9nZ2luZ0xldmVsLldhcm4pIHtcbiAgICAgIGNvbnNvbGUubG9nKGZ1bGxNZXNzYWdlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUuZXJyb3IoZnVsbE1lc3NhZ2UpO1xuICB9XG5cbiAgY29uc3RydWN0b3IodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcbmltcG9ydCBBcHBlbmRlcnMgZnJvbSAnLi9BcHBlbmRlcnMnO1xuaW1wb3J0IExvZ2dpbmdUaHJlc2hvbGQgZnJvbSAnLi9Mb2dnaW5nVGhyZXNob2xkJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5cbmV4cG9ydCBlbnVtIExvZ2dpbmdMZXZlbCB7XG4gIEFsbCA9IC0xLFxuICBUcmFjZSA9IDEwLFxuICBEZWJ1ZyA9IDIwLFxuICBJbmZvID0gMzAsXG4gIFdhcm4gPSA0MCxcbiAgRXJyb3IgPSA1MCxcbiAgRmF0YWwgPSA2MCxcbiAgT2ZmID0gMTAwLFxufVxuXG5leHBvcnQgdHlwZSBMb2dnaW5nTGV2ZWxUeXBlID0gJ09mZicgfCAnVHJhY2UnIHwgJ0RlYnVnJyB8ICdJbmZvJyB8ICdXYXJuJyB8ICdFcnJvcicgfCAnRmF0YWwnIHwgJ0FsbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NhdGVnb3J5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGVuZGVyczogQXBwZW5kZXJzO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQ7XG5cbiAgZ2V0IGNhdGVnb3J5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NhdGVnb3J5O1xuICB9XG5cbiAgZ2V0IGFwcGVuZGVycygpOiBBcHBlbmRlcnMge1xuICAgIHJldHVybiB0aGlzLl9hcHBlbmRlcnM7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IExvZ2dpbmdUaHJlc2hvbGQge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICB0cmFjZSguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuVHJhY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuVHJhY2UsIGFyZ3MpO1xuICB9XG5cbiAgZGVidWcoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkRlYnVnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkRlYnVnLCBhcmdzKTtcbiAgfVxuXG4gIGluZm8oLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkluZm8pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuSW5mbywgYXJncyk7XG4gIH1cblxuICB3YXJuKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5XYXJuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLldhcm4sIGFyZ3MpO1xuICB9XG5cbiAgZXJyb3IoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkVycm9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkVycm9yLCBhcmdzKTtcbiAgfVxuXG4gIGZhdGFsKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5GYXRhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5GYXRhbCwgYXJncyk7XG4gIH1cblxuICBwcml2YXRlIGxvZyhsZXZlbDogbnVtYmVyLCBhcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5yZXBsYWNlUGxhY2Vob2xkZXJzKGFyZ3MpO1xuXG4gICAgdGhpcy5fYXBwZW5kZXJzLnZhbHVlLmZvckVhY2goKGFwcGVuZGVyOiBJQXBwZW5kZXIpID0+IHtcbiAgICAgIGFwcGVuZGVyLmxvZyhsZXZlbCwgbWVzc2FnZSwgdGhpcy5jYXRlZ29yeSwgZGF0ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VQbGFjZWhvbGRlcnMoYXJnczogYW55KTogc3RyaW5nIHtcbiAgICBsZXQgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IGFyZ3NbMF07XG4gICAgbGV0IGluZGV4ID0gMDtcblxuICAgIHdoaWxlIChyZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLmluZGV4T2YgJiYgYXJncy5sZW5ndGggPiAxICYmIGluZGV4ID49IDApIHtcbiAgICAgIGluZGV4ID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5pbmRleE9mKCclJywgaW5kZXgpO1xuXG4gICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDEsIGluZGV4ICsgMik7XG5cbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgY2FzZSAnJSc6XG4gICAgICAgICAgICAvLyBFc2NhcGVkICclJScgdHVybnMgaW50byAnJSdcbiAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCkgKyByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDEpO1xuICAgICAgICAgICAgaW5kZXgrKztcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAvLyBSZXBsYWNlICclZCcgb3IgJyVzJyB3aXRoIHRoZSBhcmd1bWVudFxuICAgICAgICAgICAgYXJnc1swXSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSB0aGlzLnJlcGxhY2VBcmd1bWVudChcbiAgICAgICAgICAgICAgdGhpcy50b1N0cmluZyhhcmdzWzFdKSxcbiAgICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyxcbiAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhcmdzLnNwbGljZSgxLCAxKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnaic6XG4gICAgICAgICAgICAvLyBSZXBsYWNlICVqJyB3aXRoIHRoZSBhcmd1bWVudFxuICAgICAgICAgICAgYXJnc1swXSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSB0aGlzLnJlcGxhY2VBcmd1bWVudChcbiAgICAgICAgICAgICAgdGhpcy5zdHJpbmdpZnkoYXJnc1sxXSksXG4gICAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcsXG4gICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBhcmdzLnNwbGljZSgxLCAxKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBhcmdzLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPiAxKSB7XG4gICAgICBhcmdzID0gYXJncy5yZWR1Y2UoKGFjY3VtdWxhdG9yOiBzdHJpbmcsIGN1cnJlbnRWYWx1ZTogc3RyaW5nIHwgRXJyb3IsIGluZGV4OiBudW1iZXIsIGFycmF5OiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICBpZiAoaW5kZXggKyAxID09PSBhcnJheS5sZW5ndGggJiYgY3VycmVudFZhbHVlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUuc3RhY2spO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUubWVzc2FnZSkgKyAnXFxuJyArIHRoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlLnN0YWNrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArIGBbJHt0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZSl9XWA7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJncy50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdHJpbmdpZnkoYXJnOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNhY2hlOiBvYmplY3RbXSA9IFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgYXJnIGluc3RhbmNlb2YgRXJyb3IgPyB0aGlzLnRvU3RyaW5nKGFyZykgOiBhcmcsXG4gICAgICAgIChfLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgIGlmICghIXZhbHVlICYmIHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgICAgICBpZiAoY2FjaGUuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgICAgICAgIHJldHVybiAnPHJlY3Vyc2l2ZT4nO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYWNoZS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0sXG4gICAgICAgIDJcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuICdbb2JqZWN0IGludmFsaWQgSlNPTi5zdHJpbmdpZnldJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VBcmd1bWVudChhcmd1bWVudDogYW55LCByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCkgKyB0aGlzLnRvU3RyaW5nKGFyZ3VtZW50KSArIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMik7XG4gIH1cblxuICBwcml2YXRlIHRvU3RyaW5nKGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiBkYXRhID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gZGF0YS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGxldCB0b1N0cmluZ1N0ciA9ICcnO1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0b1N0cmluZ1N0ciA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgIH0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRvU3RyaW5nU3RyID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdG9TdHJpbmdTdHIgPSAnW29iamVjdCBpbnZhbGlkIHRvU3RyaW5nKCldJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0b1N0cmluZ1N0cjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGNhdGVnb3J5OiBzdHJpbmcsIGFwcGVuZGVyczogQXBwZW5kZXJzLCB0aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQpIHtcbiAgICB0aGlzLl9jYXRlZ29yeSA9IGNhdGVnb3J5O1xuICAgIHRoaXMuX2FwcGVuZGVycyA9IGFwcGVuZGVycztcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlckRlZmF1bHRzIHtcbiAgc3RhdGljIGdldCBkZWZhdWx0TG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbFtCdWlsZEZlYXR1cmVzLnNlbmRMb2dzXTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsW0J1aWxkRmVhdHVyZXMubG9nVG9Db25zb2xlXTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuSW5mbztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4vTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXIsIHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4vTG9nZ2VyJztcbmltcG9ydCBBcHBlbmRlcnMgZnJvbSAnLi9BcHBlbmRlcnMnO1xuaW1wb3J0IExvZ2dpbmdUaHJlc2hvbGQgZnJvbSAnLi9Mb2dnaW5nVGhyZXNob2xkJztcbmltcG9ydCBDb25zb2xlQXBwZW5kZXIgZnJvbSAnLi9Db25zb2xlQXBwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUFwcGVuZGVyIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlDb25maWd1cmF0aW9uIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZyb20gJy4uL2RvbS9Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyJztcbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuL0xvZ2dlckRlZmF1bHRzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyRmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXJzOiB7W2NhdGVnb3J5OiBzdHJpbmddOiBJTG9nZ2VyfSA9IHt9O1xuICBwcml2YXRlIHN0YXRpYyBfYXBwZW5kZXJzOiBBcHBlbmRlcnMgPSBuZXcgQXBwZW5kZXJzKCk7XG4gIHByaXZhdGUgc3RhdGljIF90aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQgPSBuZXcgTG9nZ2luZ1RocmVzaG9sZCgpO1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiA9IG5ldyBUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk7XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uKCk6IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiBMb2dnZXJGYWN0b3J5Ll90ZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgc3RhdGljIGdldExvZ2dlcihjYXRlZ29yeTogc3RyaW5nKTogSUxvZ2dlciB7XG4gICAgaWYgKHR5cGVvZiBjYXRlZ29yeSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGNhdGVnb3J5ID0gJ1NESyc7XG4gICAgfVxuXG4gICAgY29uc3QgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5fbG9nZ2Vyc1tjYXRlZ29yeV07XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICByZXR1cm4gbG9nZ2VyO1xuICAgIH1cblxuICAgIHJldHVybiBMb2dnZXJGYWN0b3J5Ll9sb2dnZXJzW2NhdGVnb3J5XSA9IG5ldyBMb2dnZXIoY2F0ZWdvcnksIHRoaXMuX2FwcGVuZGVycywgdGhpcy5fdGhyZXNob2xkKTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlMb2dnaW5nTGV2ZWwoKTtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwoJ2NvbnNvbGUnLCBMb2dnZXJGYWN0b3J5LmFwcGx5Q29uc29sZUxvZ2dlci5iaW5kKHRoaXMpKTtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwoJ3RlbGVtZXRyeScsIExvZ2dlckZhY3RvcnkuYXBwbHlUZWxlbWV0cnlMb2dnZXIuYmluZCh0aGlzKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseUxvZ2dpbmdMZXZlbCgpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJWYWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1sb2dnaW5nLWxldmVsJykgYXMgTG9nZ2luZ0xldmVsVHlwZTtcblxuICAgIGlmIChMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKSB7XG4gICAgICB0aGlzLl90aHJlc2hvbGQuc2V0VGhyZXNob2xkKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwobmFtZTogc3RyaW5nLCBhcHBseUFwcGVuZGVyOiAobGV2ZWw6IExvZ2dpbmdMZXZlbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtZXRlclZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZShgcGhlbml4LSR7bmFtZX0tbG9nZ2luZy1sZXZlbGApIGFzIExvZ2dpbmdMZXZlbFR5cGU7XG5cbiAgICBpZiAocGFyYW1ldGVyVmFsdWUgPT09ICdPZmYnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXBwbHlBcHBlbmRlcihMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5Q29uc29sZUxvZ2dlcihsZXZlbDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzLmFkZChuZXcgQ29uc29sZUFwcGVuZGVyKGxldmVsIHx8IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseVRlbGVtZXRyeUxvZ2dlcihsZXZlbDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSBsZXZlbCB8fCBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsO1xuXG4gICAgdGhpcy5fYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0xvZ2dlckZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbkxvZ2dlckZhY3RvcnkuYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbCwgTG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnaW5nTGV2ZWxNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUobG9nZ2luZ0xldmVsOiBMb2dnaW5nTGV2ZWwpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICBzd2l0Y2ggKGxvZ2dpbmdMZXZlbCkge1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuT2ZmOlxuICAgICAgICByZXR1cm4gJ09mZic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5UcmFjZTpcbiAgICAgICAgcmV0dXJuICdUcmFjZSc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5EZWJ1ZzpcbiAgICAgICAgcmV0dXJuICdEZWJ1Zyc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5JbmZvOlxuICAgICAgICByZXR1cm4gJ1RyYWNlJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLldhcm46XG4gICAgICAgIHJldHVybiAnV2Fybic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5FcnJvcjpcbiAgICAgICAgcmV0dXJuICdFcnJvcic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5GYXRhbDpcbiAgICAgICAgcmV0dXJuICdGYXRhbCc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5BbGw6XG4gICAgICAgIHJldHVybiAnQWxsJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGxvZ2dpbmdMZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwobG9nZ2luZ0xldmVsVHlwZTogTG9nZ2luZ0xldmVsVHlwZSk6IExvZ2dpbmdMZXZlbCB7XG4gICAgc3dpdGNoIChsb2dnaW5nTGV2ZWxUeXBlKSB7XG4gICAgICBjYXNlICdPZmYnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLk9mZjtcbiAgICAgIGNhc2UgJ1RyYWNlJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5UcmFjZTtcbiAgICAgIGNhc2UgJ0RlYnVnJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5EZWJ1ZztcbiAgICAgIGNhc2UgJ0luZm8nOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkluZm87XG4gICAgICBjYXNlICdXYXJuJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5XYXJuO1xuICAgICAgY2FzZSAnRXJyb3InOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkVycm9yO1xuICAgICAgY2FzZSAnRmF0YWwnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkZhdGFsO1xuICAgICAgY2FzZSAnQWxsJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShsb2dnaW5nTGV2ZWxUeXBlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4vTG9nZ2VyRGVmYXVsdHMnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4vTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2luZ1RocmVzaG9sZCB7XG4gIHByaXZhdGUgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsID0gTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbDtcblxuICBnZXQgdmFsdWUoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgc2V0VGhyZXNob2xkKHRocmVzaG9sZDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4vTWV0cmljc1R5cGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRyaWNUeXBlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljczogTWV0cmljc1R5cGU7XG5cbiAgY29uc3RydWN0b3IobWV0cmljczogTWV0cmljc1R5cGUpIHtcbiAgICB0aGlzLl9tZXRyaWNzID0gbWV0cmljcztcbiAgfVxuXG4gIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gTWV0cmljc1R5cGVbdGhpcy5fbWV0cmljc107XG4gIH1cblxuICBnZXRUZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgc3dpdGNoICh0aGlzLl9tZXRyaWNzKSB7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlRpbWVUb0ZpcnN0RnJhbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkNoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlN0YWxsZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkJ1ZmZlcmluZzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU2V0dXBDb21wbGV0ZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlNldHVwRmFpbGVkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5Sb3VuZFRyaXBUaW1lOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5Eb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuTmV0d29ya1R5cGU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlJlc29sdXRpb25DaGFuZ2VkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkZvcmVncm91bmQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uQmFja2dyb3VuZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX21ldHJpY3MpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi9UZWxlbWV0cnlEZWZhdWx0JztcblxuZXhwb3J0IGVudW0gVGVsZW1ldHJ5TGV2ZWwge1xuICBPZmYgPSAxMDAsXG4gIEVzc2VudGlhbCA9IDEwLFxuICBBbGwgPSAtMVxufVxuXG5leHBvcnQgdHlwZSBUZWxlbWV0cnlMZXZlbFR5cGUgPSAnT2ZmJyB8ICdFc3NlbnRpYWwnIHwgJ0FsbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NDb25maWd1cmF0aW9uIHtcbiAgcHJpdmF0ZSBfdXJsID0gJ2h0dHBzOi8vdGVsZW1ldHJ5LnBoZW5peHJ0cy5jb20vdGVsZW1ldHJ5L21ldHJpY3MnO1xuICBwcml2YXRlIF90ZW5hbmN5OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3Nlc3Npb25JZDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9lbnZpcm9ubWVudDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF90aHJlc2hvbGQ6IFRlbGVtZXRyeUxldmVsID0gVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWw7XG5cbiAgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl91cmw7XG4gIH1cblxuICBzZXQgdXJsKHVybDogc3RyaW5nKSB7XG4gICAgY29uc3QgbWV0cmljc1VybCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcblxuICAgIG1ldHJpY3NVcmwucGF0aG5hbWUgPSBtZXRyaWNzVXJsLnBhdGhuYW1lICsgJy9tZXRyaWNzJztcblxuICAgIHRoaXMuX3VybCA9IG1ldHJpY3NVcmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldCBlbnZpcm9ubWVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudDtcbiAgfVxuXG4gIHNldCBlbnZpcm9ubWVudChlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIGdldCB0ZW5hbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzZXQgdGVuYW5jeSh0ZW5hbmN5OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVuYW5jeTtcbiAgfVxuXG4gIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbklkO1xuICB9XG5cbiAgc2V0IHNlc3Npb25JZChzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICBzZXQgdGhyZXNob2xkKHRocmVzaG9sZDogVGVsZW1ldHJ5TGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4vTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uLCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBUZWxlbWV0cnlVcmwgZnJvbSAnLi4vc2RrL1RlbGVtZXRyeVVybCc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi4vc2RrL0Vudmlyb25tZW50JztcbmltcG9ydCBUZWxlbWV0cnlMZXZlbE1hcHBpbmcgZnJvbSAnLi9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc0ZhY3Rvcnkge1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc1NlcnZpY2VzOiB7W2NhdGVnb3J5OiBzdHJpbmddOiBNZXRyaWNzU2VydmljZX0gPSB7fTtcblxuICBzdGF0aWMgZ2V0TWV0cmljc1NlcnZpY2UodXJsOiBzdHJpbmcpOiBNZXRyaWNzU2VydmljZSB7XG4gICAgaWYgKHR5cGVvZiB1cmwgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVybCBtdXN0IGJlIGEgc3RyaW5nIGluc3RlYWQgcmVjZWl2ZWQgWyR7dHlwZW9mIHVybH1dYCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljc1NlcnZpY2VzID0gTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlc1t1cmxdO1xuXG4gICAgaWYgKG1ldHJpY3NTZXJ2aWNlcykge1xuICAgICAgcmV0dXJuIG1ldHJpY3NTZXJ2aWNlcztcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNzQ29uZmlndXJhdGlvbiA9IG5ldyBNZXRyaWNzQ29uZmlndXJhdGlvbigpO1xuXG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5ID0gU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsID0gVGVsZW1ldHJ5VXJsLmdldFRlbGVtZXRyeVVybCh1cmwpO1xuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gRW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHVybCk7XG5cbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwoU0RLLnRlbGVtZXRyeUxldmVsKTtcblxuICAgIHJldHVybiBNZXRyaWNzRmFjdG9yeS5fbWV0cmljc1NlcnZpY2VzW3VybF0gPSBuZXcgTWV0cmljc1NlcnZpY2UobWV0cmljc0NvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgc3RhdGljIHNldFRlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsOiBUZWxlbWV0cnlMZXZlbCk6IHZvaWQge1xuICAgIGNvbnN0IG1ldHJpY3NTZXJ2aWNlcyA9IE9iamVjdC52YWx1ZXMoTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlcyk7XG5cbiAgICBpZiAobWV0cmljc1NlcnZpY2VzICYmIG1ldHJpY3NTZXJ2aWNlcy5sZW5ndGgpIHtcbiAgICAgIG1ldHJpY3NTZXJ2aWNlcy5mb3JFYWNoKG1ldHJpY3NTZXJ2aWNlID0+IHtcbiAgICAgICAgY29uc3QgbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBtZXRyaWNzU2VydmljZS5tZXRyaWNzQ29uZmlndXJhdGlvbjtcblxuICAgICAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSB0ZWxlbWV0cnlMZXZlbDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRyaWNzRmFjdG9yeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgRXhwb25lbnRpYWxCYWNrb2ZmIGZyb20gJy4uL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi9zZGsvdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgTWV0cmljVHlwZSBmcm9tICcuL01ldHJpY1R5cGUnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4vTWV0cmljc1R5cGUnO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uIGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5jb25zdCByZXF1ZXN0U2l6ZUxpbWl0ID0gMTAyNDtcbmNvbnN0IG1heEJ1ZmZlcmVkUmVjb3JkcyA9IDIwNDg7XG5cbmludGVyZmFjZSBJVmFsdWUge1xuICBzdHJpbmc/OiBzdHJpbmc7XG4gIHVpbnQ2ND86IG51bWJlcjtcbiAgZmxvYXQ/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBJTWV0cmljUmVjb3JkIHtcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIHRlbmFuY3k6IHN0cmluZztcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHN0cmVhbUlkPzogc3RyaW5nO1xuICBtZXRyaWM6IHN0cmluZztcbiAgdmFsdWU/OiBJVmFsdWU7XG4gIHByZXZpb3VzVmFsdWU/OiBJVmFsdWU7XG4gIGZ1bGxRdWFsaWZpZWROYW1lOiBzdHJpbmc7XG4gIGVudmlyb25tZW50OiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgcnVudGltZTogbnVtYmVyO1xuICByZXNvdXJjZT86IHN0cmluZztcbiAga2luZD86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIElNZXRyaWMge1xuICBzdHJlYW1JZD86IHN0cmluZztcbiAgbWV0cmljVHlwZTogTWV0cmljc1R5cGU7XG4gIHZhbHVlPzogSVZhbHVlO1xuICBwcmV2aW91c1ZhbHVlPzogSVZhbHVlO1xuICBydW50aW1lOiBudW1iZXI7XG4gIHJlc291cmNlPzogc3RyaW5nO1xuICBraW5kPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRyaWNzU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdNZXRyaWNzU2VydmljZScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzQ29uZmlndXJhdGlvbjogTWV0cmljc0NvbmZpZ3VyYXRpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4cG9uZW50aWFsQmFja29mZjogRXhwb25lbnRpYWxCYWNrb2ZmO1xuICBwcml2YXRlIF9tZXRyaWNzOiBBcnJheTxJTWV0cmljUmVjb3JkPiA9IFtdO1xuICBwcml2YXRlIF9pc1NlbmRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZmFpbHVyZUNvdW50ID0gMDtcbiAgcHJpdmF0ZSBfZG9tYWluID0gJyc7XG5cbiAgY29uc3RydWN0b3IobWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBtZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgICB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYgPSBuZXcgRXhwb25lbnRpYWxCYWNrb2ZmKCk7XG4gICAgdGhpcy5nZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCkudGhlbihsb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIHRoaXMuX2RvbWFpbiA9IGxvY2F0aW9uSG9zdG5hbWU7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgbWV0cmljc0NvbmZpZ3VyYXRpb24oKTogTWV0cmljc0NvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHB1c2gobWV0cmljOiBJTWV0cmljKTogdm9pZCB7XG4gICAgY29uc3Qge3N0cmVhbUlkLCB2YWx1ZSwgcHJldmlvdXNWYWx1ZSwgcnVudGltZSwgcmVzb3VyY2UsIGtpbmR9ID0gbWV0cmljO1xuICAgIGNvbnN0IG1ldHJpY1R5cGUgPSBuZXcgTWV0cmljVHlwZShtZXRyaWMubWV0cmljVHlwZSk7XG5cbiAgICBpZiAodGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udGhyZXNob2xkID4gbWV0cmljVHlwZS5nZXRUZWxlbWV0cnlMZXZlbCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljUmVjb3JkID0ge1xuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB0ZW5hbmN5OiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5LFxuICAgICAgc2Vzc2lvbklkOiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5zZXNzaW9uSWQsXG4gICAgICBzdHJlYW1JZCxcbiAgICAgIG1ldHJpYzogbWV0cmljVHlwZS5nZXROYW1lKCksXG4gICAgICB2YWx1ZSxcbiAgICAgIHByZXZpb3VzVmFsdWUsXG4gICAgICBmdWxsUXVhbGlmaWVkTmFtZTogdGhpcy5fZG9tYWluLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50LFxuICAgICAgdmVyc2lvbjogVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbixcbiAgICAgIHJ1bnRpbWUsXG4gICAgICByZXNvdXJjZSxcbiAgICAgIGtpbmRcbiAgICB9O1xuXG4gICAgdGhpcy5fbWV0cmljcy5wdXNoKG1ldHJpY1JlY29yZCk7XG5cbiAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4ocmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUoZ2xvYmFsU2NvcGUubG9jYXRpb25Ib3N0bmFtZSk7XG4gICAgICAgIGdsb2JhbFNjb3BlLnNldFRpbWVvdXQoKCkgPT4gZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpLCAwKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTWV0cmljcyhtZXRyaWNzTWVzc2FnZXM6IEFycmF5PElNZXRyaWNSZWNvcmQ+KTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoe3JlY29yZHM6IG1ldHJpY3NNZXNzYWdlc30pKTtcblxuICAgIHJldHVybiBhd2FpdCBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi51cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGFcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZE1ldHJpY3NJZkFibGUoKTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fbWV0cmljcy5sZW5ndGggPD0gMCB8fCB0aGlzLl9pc1NlbmRpbmcgfHwgIUdsb2JhbFNjb3BlLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faXNTZW5kaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IG1ldHJpY3NNZXNzYWdlcyA9IHRoaXMuX21ldHJpY3Muc2xpY2UoMCwgcmVxdWVzdFNpemVMaW1pdCk7XG5cbiAgICB0aGlzLl9tZXRyaWNzID0gdGhpcy5fbWV0cmljcy5zbGljZShyZXF1ZXN0U2l6ZUxpbWl0KTtcblxuICAgIHJldHVybiB0aGlzLnNlbmRNZXRyaWNzKG1ldHJpY3NNZXNzYWdlcykudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICBpZiAodGhpcy5pc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZShyZXNwb25zZSkpIHtcbiAgICAgICAgaWYgKHRoaXMuX21ldHJpY3MubGVuZ3RoIDw9IG1heEJ1ZmZlcmVkUmVjb3Jkcykge1xuICAgICAgICAgIHRoaXMuX2ZhaWx1cmVDb3VudCsrO1xuXG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9tZXRyaWNzID0gWy4uLm1ldHJpY3NNZXNzYWdlcywgLi4udGhpcy5fbWV0cmljc107XG5cbiAgICAgICAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICAgICAgICAgIH0sIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZi5nZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50KHRoaXMuX2ZhaWx1cmVDb3VudCkpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdUb28gbWFueSBjYWNoZWQgbWV0cmljIHJlY29yZHMgWyVzXSwgZHJvcHBpbmcgWyVzXSByZWNvcmRzJywgdGhpcy5fbWV0cmljcy5sZW5ndGgsIG1ldHJpY3NNZXNzYWdlcy5sZW5ndGgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2ZhaWx1cmVDb3VudCA9IDA7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNSZXNwb25zZVN0YXR1c0NvZGVSZXRyeWFibGUoe3N0YXR1c306IFJlc3BvbnNlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9eNVxcZHsyfSQvLnRlc3Qoc3RhdHVzLnRvU3RyaW5nKCkpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmVudW0gTWV0cmljc1R5cGUge1xuICBUaW1lVG9GaXJzdEZyYW1lLFxuICBDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lLFxuICBTdGFsbGVkLFxuICBCdWZmZXJpbmcsXG4gIFNldHVwQ29tcGxldGVkLFxuICBTZXR1cEZhaWxlZCxcbiAgUm91bmRUcmlwVGltZSxcbiAgRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHksXG4gIE5ldHdvcmtUeXBlLFxuICBSZXNvbHV0aW9uQ2hhbmdlZCxcbiAgQXBwbGljYXRpb25Gb3JlZ3JvdW5kLFxuICBBcHBsaWNhdGlvbkJhY2tncm91bmRcbn1cblxuZXhwb3J0IGRlZmF1bHQgTWV0cmljc1R5cGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWwsIFRlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUxldmVsTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZSh0ZWxlbWV0cnlMZXZlbDogVGVsZW1ldHJ5TGV2ZWwpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHN3aXRjaCAodGVsZW1ldHJ5TGV2ZWwpIHtcbiAgICAgIGNhc2UgVGVsZW1ldHJ5TGV2ZWwuT2ZmOlxuICAgICAgICByZXR1cm4gJ09mZic7XG4gICAgICBjYXNlIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDpcbiAgICAgICAgcmV0dXJuICdFc3NlbnRpYWwnO1xuICAgICAgY2FzZSBUZWxlbWV0cnlMZXZlbC5BbGw6XG4gICAgICAgIHJldHVybiAnQWxsJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRlbGVtZXRyeUxldmVsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWxUeXBlOiBUZWxlbWV0cnlMZXZlbFR5cGUpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgc3dpdGNoICh0ZWxlbWV0cnlMZXZlbFR5cGUpIHtcbiAgICAgIGNhc2UgJ09mZic6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5PZmY7XG4gICAgICBjYXNlICdFc3NlbnRpYWwnOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSAnQWxsJzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRlbGVtZXRyeUxldmVsVHlwZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBCdWlsZEZlYXR1cmVzIGZyb20gJy4uL2Vudmlyb25tZW50L0J1aWxkRmVhdHVyZXMnO1xuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbH0gZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeURlZmF1bHQge1xuICBzdGF0aWMgZ2V0IGRlZmF1bHRUZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsW0J1aWxkRmVhdHVyZXMuc2VuZE1ldHJpY3NdO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG4vLyBOb3RlOiBUaGlzIFByb21pc2UgcG9seWZpbGwgaXMgaW5jbHVkZWQgZm9yIGJyb3dzZXIgYnVpbGRzIG9ubHkgdG8gYWRkcmVzcyBjb21wYXRpYmlsaXR5IGlzc3Vlc1xuLy8gd2l0aCBvbGRlciBicm93c2VycyB3aG9zZSBuYXRpdmUgUHJvbWlzZTxUPmltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgLmZpbmFsbHkuXG5cbmltcG9ydCBQcm9taXNlSGFuZGxlciBmcm9tICcuL1Byb21pc2VIYW5kbGVyJztcblxuY2xhc3MgUHJvbWlzZTxUPiB7XG4gIF9zdGF0ZTogbnVtYmVyO1xuICBfaGFuZGxlZDogYm9vbGVhbjtcbiAgX3ZhbHVlOiBUIHwgdW5rbm93bjtcbiAgX2RlZmVycmVkczogQXJyYXk8UHJvbWlzZUhhbmRsZXI8VD4+O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gIC8vIEB0cy1pZ25vcmVcbiAgdGhlbihvbkZ1bGZpbGxlZDogRnVuY3Rpb24gfCBudWxsLCBvblJlamVjdGVkOiBGdW5jdGlvbiB8IG51bGwpOiBQcm9taXNlPFQ+fCB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBQcm9taXNlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUHJvbWlzZXMgbXVzdCBiZSBjb25zdHJ1Y3RlZCB2aWEgbmV3Jyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbm90IGEgZnVuY3Rpb24nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0ZSA9IDA7XG4gICAgdGhpcy5faGFuZGxlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICB0aGlzLl9kZWZlcnJlZHMgPSBbXTtcblxuICAgIHRoaXMuZG9SZXNvbHZlKGNhbGxiYWNrKTtcbiAgfVxuXG4gIGRvUmVzb2x2ZShjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICBsZXQgZG9uZSA9IGZhbHNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNhbGxiYWNrKFxuICAgICAgICAodmFsdWU6IFByb21pc2U8VD58IG51bGwpID0+IHtcbiAgICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucHJvbWlzZVJlc29sdmUodmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICAocmVhc29uOiBQcm9taXNlPFQ+fCBudWxsKSA9PiB7XG4gICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnByb21pc2VSZWplY3QocmVhc29uKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBkb25lID0gdHJ1ZTtcbiAgICAgIHRoaXMucHJvbWlzZVJlamVjdChlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJvbWlzZVJlc29sdmUobmV3VmFsdWU6IFByb21pc2U8VD58IG51bGwgfCB1bmtub3duKTogdm9pZCB7XG4gICAgY29uc3QgcHJvbWlzZSA9IHRoaXMgYXMgUHJvbWlzZTxUPjtcblxuICAgIHRyeSB7XG4gICAgICAvLyBQcm9taXNlPFQ+UmVzb2x1dGlvbiBQcm9jZWR1cmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9Qcm9taXNlcy1hcGx1cy9Qcm9taXNlcy1zcGVjI3RoZS1Qcm9taXNlLXJlc29sdXRpb24tcHJvY2VkdXJlXG4gICAgICBpZiAobmV3VmFsdWUgPT09IHByb21pc2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQSBQcm9taXNlIGNhbm5vdCBiZSByZXNvbHZlZCB3aXRoIGl0IHNlbGYuJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXdWYWx1ZSAmJiAodHlwZW9mIG5ld1ZhbHVlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgbmV3VmFsdWUgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgICAgIC8vIERpc2FibGluZyBhIFRTIGNvbXBpbGVyIGNoZWNrIGZvciBuZXh0IGxpbmUgdG8gbm90IGRvIGV4dHJhIGlmIHN0YXRlbWVudHNcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IHRoZW4gPSBuZXdWYWx1ZS50aGVuO1xuXG4gICAgICAgIGlmIChuZXdWYWx1ZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICBwcm9taXNlLl9zdGF0ZSA9IDM7XG4gICAgICAgICAgcHJvbWlzZS5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgICBwcm9taXNlLmZpbmFsZSgpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcHJvbWlzZS5kb1Jlc29sdmUoZnVuY3Rpb24oKTogdm9pZCB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXJlc3QtcGFyYW1zXG4gICAgICAgICAgICB0aGVuLmFwcGx5KG5ld1ZhbHVlLCBhcmd1bWVudHMgYXMgdW5rbm93biBhcyBbb25GdWxmaWxsZWQ6IEZ1bmN0aW9uLCBvblJlamVjdGVkOiBGdW5jdGlvbl0pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHByb21pc2UuX3N0YXRlID0gMTtcbiAgICAgIHByb21pc2UuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgICBwcm9taXNlLmZpbmFsZSgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHByb21pc2UucHJvbWlzZVJlamVjdChlKTtcbiAgICB9XG4gIH1cblxuICBwcm9taXNlUmVqZWN0KG5ld1ZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGUgPSAyO1xuICAgIHRoaXMuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5maW5hbGUoKTtcbiAgfVxuXG4gIGZpbmFsZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc3RhdGUgPT09IDIgJiYgdGhpcy5fZGVmZXJyZWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgUHJvbWlzZS5faW1tZWRpYXRlKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLl9oYW5kbGVkKSB7XG4gICAgICAgICAgUHJvbWlzZS5fdW5oYW5kbGVkUmVqZWN0aW9uKHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRoaXMuX2RlZmVycmVkcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgdGhpcy5oYW5kbGUodGhpcy5fZGVmZXJyZWRzW2ldKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kZWZlcnJlZHMgPSBbXTtcbiAgfVxuXG4gIGhhbmRsZShkZWZlcnJlZDogUHJvbWlzZUhhbmRsZXI8VD4pOiB2b2lkIHtcbiAgICBsZXQgcHJvbWlzZSA9IHRoaXMgYXMgUHJvbWlzZTxUPjtcblxuICAgIHdoaWxlIChwcm9taXNlLl9zdGF0ZSA9PT0gMykge1xuICAgICAgcHJvbWlzZSA9IHByb21pc2UuX3ZhbHVlIGFzIFByb21pc2U8VD47XG4gICAgfVxuXG4gICAgaWYgKHByb21pc2UuX3N0YXRlID09PSAwKSB7XG4gICAgICBwcm9taXNlLl9kZWZlcnJlZHMucHVzaChkZWZlcnJlZCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwcm9taXNlLl9oYW5kbGVkID0gdHJ1ZTtcbiAgICBQcm9taXNlLl9pbW1lZGlhdGUoKCkgPT4ge1xuICAgICAgY29uc3QgY2FsbGJhY2sgPSBwcm9taXNlLl9zdGF0ZSA9PT0gMSA/IGRlZmVycmVkLm9uRnVsZmlsbGVkIDogZGVmZXJyZWQub25SZWplY3RlZDtcblxuICAgICAgaWYgKGNhbGxiYWNrID09PSBudWxsKSB7XG4gICAgICAgIGlmIChwcm9taXNlLl9zdGF0ZSA9PT0gMSkge1xuICAgICAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlc29sdmUocHJvbWlzZS5fdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlamVjdChwcm9taXNlLl92YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGxldCByZXN1bHQ7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKHByb21pc2UuX3ZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgZGVmZXJyZWQucHJvbWlzZS5wcm9taXNlUmVqZWN0KGUpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZGVmZXJyZWQucHJvbWlzZS5wcm9taXNlUmVzb2x2ZShyZXN1bHQpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFsbChhcnI6IEFycmF5PFByb21pc2U8dW5rbm93bj4+KTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgVHlwZUVycm9yKCdQcm9taXNlLmFsbCBhY2NlcHRzIGFuIGFycmF5JykpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKTtcblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKFtdKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHJlbWFpbmluZyA9IGFyZ3MubGVuZ3RoO1xuICAgICAgY29uc3QgbWFuYWdlUmVzcG9uc2UgPSAoaTogbnVtYmVyLCB2YWx1ZTogUHJvbWlzZTx1bmtub3duPik6IHZvaWQgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmICh2YWx1ZSAmJiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgICAgICAgICBjb25zdCB0aGVuID0gdmFsdWUudGhlbjtcblxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIHRoZW4uY2FsbChcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAodmFsdWU6IFByb21pc2U8dW5rbm93bj4pID0+IG1hbmFnZVJlc3BvbnNlKGksIHZhbHVlKSxcbiAgICAgICAgICAgICAgICByZWplY3RcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYXJnc1tpXSA9IHZhbHVlO1xuXG4gICAgICAgICAgaWYgKC0tcmVtYWluaW5nID09PSAwKSB7XG4gICAgICAgICAgICByZXNvbHZlKGFyZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbWFuYWdlUmVzcG9uc2UoaSwgYXJnc1tpXSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcmVzb2x2ZSh2YWx1ZTogdW5rbm93bik6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlLmNvbnN0cnVjdG9yID09PSBQcm9taXNlKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbikgPT4gcmVzb2x2ZSh2YWx1ZSkpO1xuICB9XG5cbiAgc3RhdGljIHJlamVjdCh2YWx1ZTogdW5rbm93bik6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgoXzogdW5kZWZpbmVkLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiByZWplY3QodmFsdWUpKTtcbiAgfVxuXG4gIHN0YXRpYyByYWNlKGFycjogQXJyYXk8UHJvbWlzZTx1bmtub3duPj4pOiBQcm9taXNlPHVua25vd24+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ1Byb21pc2UucmFjZSBhY2NlcHRzIGFuIGFycmF5JykpO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gYXJyLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZShhcnJbaV0pLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBfaW1tZWRpYXRlKGNhbGxiYWNrOiBGdW5jdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGlnbm9yZWQgPSB3aW5kb3cuc2V0VGltZW91dChjYWxsYmFjaywgMCk7XG4gIH1cblxuICBzdGF0aWMgX3VuaGFuZGxlZFJlamVjdGlvbihlcnJvcjogUHJvbWlzZTx1bmtub3duPnwgbnVsbCB8IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIGNvbnNvbGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignUG9zc2libGUgVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOicsIGVycm9yKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59XG5cbi8vIERpc2FibGluZyBhIFRTIGNvbXBpbGVyIGNoZWNrIGZvciB1bnN1cHBvcnRlZCBwcm90b3R5cGUgY2hhbmdlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtaWdub3JlXG5Qcm9taXNlLnByb3RvdHlwZVsnY2F0Y2gnXSA9IGZ1bmN0aW9uKG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uKTogdW5rbm93biB7XG4gIHJldHVybiB0aGlzLnRoZW4obnVsbCwgb25SZWplY3RlZCk7XG59O1xuLy8gRGlzYWJsaW5nIGEgVFMgY29tcGlsZXIgY2hlY2sgZm9yIHVuc3VwcG9ydGVkIHByb3RvdHlwZSBjaGFuZ2Vcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1pZ25vcmVcblByb21pc2UucHJvdG90eXBlWyd0aGVuJ10gPSBmdW5jdGlvbihvbkZ1bGZpbGxlZDogRnVuY3Rpb24sIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uKTogUHJvbWlzZTx1bmtub3duPnwgdm9pZCB7XG4gIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgoKTogbnVsbCA9PiBudWxsKTtcblxuICB0aGlzLmhhbmRsZShuZXcgUHJvbWlzZUhhbmRsZXI8dW5rbm93bj4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQsIHByb21pc2UpKTtcblxuICByZXR1cm4gcHJvbWlzZTtcbn07XG4vLyBEaXNhYmxpbmcgYSBUUyBjb21waWxlciBjaGVjayBmb3IgdW5zdXBwb3J0ZWQgcHJvdG90eXBlIGNoYW5nZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLWlnbm9yZVxuUHJvbWlzZS5wcm90b3R5cGVbJ2ZpbmFsbHknXSA9IGZ1bmN0aW9uKGNhbGxiYWNrOiBGdW5jdGlvbik6IFByb21pc2U8dW5rbm93bj58IHZvaWQge1xuICByZXR1cm4gdGhpcy50aGVuKFxuICAgICh2YWx1ZTogUHJvbWlzZTx1bmtub3duPnwgdW5kZWZpbmVkKSA9PiBQcm9taXNlLnJlc29sdmUoY2FsbGJhY2soKSkudGhlbigoKSA9PiB2YWx1ZSwgKCk6IG51bGwgPT4gbnVsbCksXG4gICAgKHJlYXNvbjogRXJyb3IgfCBzdHJpbmcpID0+IFByb21pc2UucmVzb2x2ZShjYWxsYmFjaygpKS50aGVuKCgpID0+IFByb21pc2UucmVqZWN0KHJlYXNvbiksICgpOiBudWxsID0+IG51bGwpXG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBQcm9taXNlOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgUHJvbWlzZSBmcm9tICcuL1Byb21pc2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcm9taXNlSGFuZGxlcjxUPiB7XG4gIG9uRnVsZmlsbGVkOiBGdW5jdGlvbiB8IG51bGw7XG4gIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uIHwgbnVsbDtcbiAgcHJvbWlzZTogUHJvbWlzZTxUPjtcblxuICBjb25zdHJ1Y3RvcihvbkZ1bGZpbGxlZDogRnVuY3Rpb24sIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uLCBwcm9taXNlOiBQcm9taXNlPFQ+KSB7XG4gICAgdGhpcy5vbkZ1bGZpbGxlZCA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogbnVsbDtcbiAgICB0aGlzLm9uUmVqZWN0ZWQgPSB0eXBlb2Ygb25SZWplY3RlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uUmVqZWN0ZWQgOiBudWxsO1xuICAgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0IHtcbiAgYXVkaW9UcmFuc2NlaXZlcnM/OiBSVENSdHBUcmFuc2NlaXZlcltdO1xuICB2aWRlb1RyYW5zY2VpdmVycz86IFJUQ1J0cFRyYW5zY2VpdmVyW107XG4gIHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb247XG4gIGxvY2FsT2ZmZXI6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG59XG5cbmV4cG9ydCBlbnVtIEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyB7XG4gIERpc2FibGVkLFxuICBFbmFibGVkXG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VHJhY2tLaW5kczogKCdhdWRpbycgfCAndmlkZW8nKVtdID0gWydhdWRpbycsICd2aWRlbyddO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQZWVyQ29ubmVjdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1BlZXJDb25uZWN0aW9uU2VydmljZScpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcGVlckNvbm5lY3Rpb25GYWN0b3J5OiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+ID0gbmV3IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4obmV3IFZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkoKSk7XG4gIHByaXZhdGUgc3RhdGljIF9jYWNoZWQ6IHtcbiAgICBkaXJlY3Rpb24/OiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjtcbiAgICBwZWVyQ29ubmVjdGlvbjogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb25PZmZlckluaXQ+O1xuICB9IHwgbnVsbDtcblxuICBzdGF0aWMgZ2V0IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpOiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+IHtcbiAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9wZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIH1cblxuICBzdGF0aWMgaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZygpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNQcmVjYWNoaW5nRW5hYmxlZCkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IFBlZXJDb25uZWN0aW9uU2VydmljZS5wcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKVxuICAgICAgICAuY2F0Y2goZSA9PiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHByZS1jYWNoZSBwZWVyIGNvbm5lY3Rpb24gb2ZmZXInLCBlKSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGFzeW5jIHByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpOiBQcm9taXNlPHsgcGVlckNvbm5lY3Rpb246IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0IHwgdm9pZD47IGRpcmVjdGlvbjogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gfT4ge1xuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IHtcbiAgICAgIGRpcmVjdGlvbjogJ3JlY3Zvbmx5JyxcbiAgICAgIHBlZXJDb25uZWN0aW9uOiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IG51bGw7XG5cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9KVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcihkaXJlY3Rpb246IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uID0gJ3JlY3Zvbmx5JywgdHJhY2tLaW5kcyA9IGRlZmF1bHRUcmFja0tpbmRzLCBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5EaXNhYmxlZCk6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0PiB7XG4gICAgaWYgKFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkICYmIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkLmRpcmVjdGlvbiA9PT0gZGlyZWN0aW9uICYmIGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9PT0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkRpc2FibGVkICYmIHRoaXMuaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQodHJhY2tLaW5kcykpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQucGVlckNvbm5lY3Rpb247XG5cbiAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkID0gbnVsbDtcblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQgPSBGZWF0dXJlRW5hYmxlbWVudC5pc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCA/IHtlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9PT0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkVuYWJsZWR9IDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU2VydmljZS5fcGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlLmNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pXG4gICAgICAudGhlbihhc3luYyBwZWVyQ29ubmVjdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IHN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIgPSBwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0FkZFRyYW5zY2VpdmVyO1xuICAgICAgICBjb25zdCBhdWRpb1RyYW5zY2VpdmVyczogUlRDUnRwVHJhbnNjZWl2ZXJbXSA9IFtdO1xuICAgICAgICBjb25zdCB2aWRlb1RyYW5zY2VpdmVyczogUlRDUnRwVHJhbnNjZWl2ZXJbXSA9IFtdO1xuXG4gICAgICAgIGlmIChzdXBwb3J0c0FkZFRyYW5zY2VpdmVyKSB7XG4gICAgICAgICAgdHJhY2tLaW5kcy5mb3JFYWNoKGtpbmQgPT4ge1xuICAgICAgICAgICAgaWYgKGtpbmQgPT09ICdhdWRpbycpIHtcbiAgICAgICAgICAgICAgYXVkaW9UcmFuc2NlaXZlcnMucHVzaChwZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihraW5kLCB7ZGlyZWN0aW9ufSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGtpbmQgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICAgICAgdmlkZW9UcmFuc2NlaXZlcnMucHVzaChwZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihraW5kLCB7ZGlyZWN0aW9ufSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhdWRpb1RyYW5zY2VpdmVycyxcbiAgICAgICAgICAgIHZpZGVvVHJhbnNjZWl2ZXJzLFxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb246IHBlZXJDb25uZWN0aW9uLFxuICAgICAgICAgICAgbG9jYWxPZmZlcjogYXdhaXQgcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIodW5kZWZpbmVkKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25zID0gZGlyZWN0aW9uID09PSAncmVjdm9ubHknID8ge1xuICAgICAgICAgIG9mZmVyVG9SZWNlaXZlQXVkaW86IHRydWUsXG4gICAgICAgICAgb2ZmZXJUb1JlY2VpdmVWaWRlbzogdHJ1ZVxuICAgICAgICB9IDoge307XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbjogcGVlckNvbm5lY3Rpb24sXG4gICAgICAgICAgbG9jYWxPZmZlcjogYXdhaXQgcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIob3B0aW9ucylcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQodHJhY2tzS2luZHM6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSk6IGJvb2xlYW4ge1xuICAgIGlmICh0cmFja3NLaW5kcy5sZW5ndGggIT09IGRlZmF1bHRUcmFja0tpbmRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvdW50VHJhY2tLaW5kcyA9IChhcnJheTogKCdhdWRpbycgfCAndmlkZW8nKVtdKSA9PiBhcnJheS5yZWR1Y2UoKHRyYWNrS2luZENvdW50LCBraW5kKSA9PiB7XG4gICAgICB0cmFja0tpbmRDb3VudFtraW5kXSA9ICh0cmFja0tpbmRDb3VudFtraW5kXSB8fCAwKSArIDE7XG5cbiAgICAgIHJldHVybiB0cmFja0tpbmRDb3VudDtcbiAgICB9LCB7XG4gICAgICBhdWRpbzogMCxcbiAgICAgIHZpZGVvOiAwXG4gICAgfSk7XG4gICAgY29uc3QgY291bnRlZFRyYWNrS2luZHMgPSBjb3VudFRyYWNrS2luZHModHJhY2tzS2luZHMpO1xuICAgIGNvbnN0IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcyA9IGNvdW50VHJhY2tLaW5kcyhkZWZhdWx0VHJhY2tLaW5kcyk7XG5cbiAgICByZXR1cm4gY291bnRlZFRyYWNrS2luZHMuYXVkaW8gPT09IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcy5hdWRpbyAmJiBjb3VudGVkVHJhY2tLaW5kcy52aWRlbyA9PT0gY291bnRlZERlZmF1bHRUcmFja0tpbmRzLnZpZGVvO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BlZXJDb25uZWN0aW9uU2VydmljZSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmcoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIge1xuICBzdGF0aWMgdHJ1bmNhdGVJY2VTZXJ2ZXJzKGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCBpY2VTZXJ2ZXJzOiBSVENJY2VTZXJ2ZXJbXSA9IFtdO1xuXG4gICAgaWYgKCFjb25maWd1cmF0aW9uLmljZVNlcnZlcnMpIHtcbiAgICAgIHJldHVybiBjb25maWd1cmF0aW9uO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCB1cmxzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgMjsgaW5kZXgrKykge1xuICAgICAgICBjb25zdCB1cmwgPSBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXJsc1tpbmRleF07XG5cbiAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgIHVybHMucHVzaChjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXJsc1tpbmRleF0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGljZVNlcnZlcnMucHVzaCh7XG4gICAgICAgIHVybHM6IHVybHMsXG4gICAgICAgIHVzZXJuYW1lOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXNlcm5hbWUsXG4gICAgICAgIGNyZWRlbnRpYWw6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS5jcmVkZW50aWFsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25maWd1cmF0aW9uLmljZVNlcnZlcnMgPSBpY2VTZXJ2ZXJzO1xuXG4gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBTZHBQYXJzZXIgZnJvbSAnLi9TZHBQYXJzZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSdGNNb25pdG9yU3RhdGlzdGljIHtcbiAgW2tpbmQ6IHN0cmluZ106IElSdGNTdGF0aXN0aWM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0IHtcbiAgcmVzdWx0OiAoKSA9PiBJTGVnYWN5UlRDU3RhdHNSZXBvcnRJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0SXRlbSBleHRlbmRzIFJUQ1N0YXRzUmVwb3J0IHtcbiAgdHlwZTogc3RyaW5nO1xuICBuYW1lczogKCkgPT4gc3RyaW5nW107XG4gIHN0YXQ6IChuYW1lOiBzdHJpbmcpID0+IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUnRjU3RhdGlzdGljIHtcbiAgc3NyYz86IHN0cmluZztcbiAgbWVkaWFUeXBlPzogc3RyaW5nO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgYml0cmF0ZT86IG51bWJlcjtcbiAgYnl0ZXNSZWNlaXZlZD86IG51bWJlcjtcbiAgZnJhbWVzRGVjb2RlZD86IG51bWJlcjtcbiAgcGFja2V0c0xvc3Q/OiBudW1iZXI7XG4gIHBhY2tldHNSZWNlaXZlZD86IG51bWJlcjtcbiAgY29kZWM/OiBzdHJpbmc7XG4gIGZwcz86IG51bWJlcjtcbiAgcm91bmRUcmlwVGltZT86IG51bWJlcjtcbiAgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wPzogbnVtYmVyO1xufVxuXG5jb25zdCB1cGRhdGVTdGF0aXN0aWNUaW1lb3V0ID0gMTAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnRjQ29ubmVjdGlvbk1vbml0b3IgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZFJvdW5kVHJpcFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkVmlkZW9Db2RlYzogc3RyaW5nID0gJ3Vua25vd24nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRBdWRpb0NvZGVjOiBzdHJpbmcgPSAndW5rbm93bic7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J0Y1N0YXRpc3RpYzogU3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+ID0gbmV3IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPih7fSk7XG4gIHByaXZhdGUgX3BlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24gfCBudWxsO1xuICBwcml2YXRlIF9pc01vbml0b3JSdW5uaW5nID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfdXBkYXRlVGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3RyYWNrc1RvTW9uaXRvcjogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IocGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiwgbWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtLCBlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IHBlZXJDb25uZWN0aW9uO1xuICAgIHRoaXMuX2VzdGltYXRlZFJvdW5kVHJpcFRpbWUgPSBlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lO1xuICAgIHRoaXMuX3RyYWNrc1RvTW9uaXRvciA9IG1lZGlhU3RyZWFtLmdldFRyYWNrcygpLm1hcCh0cmFjayA9PiB0cmFjay5raW5kKSB8fCBbXTtcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgaWYgKCFGZWF0dXJlRW5hYmxlbWVudC5nZXRDdXJyZW50T2ZmZXJEaXNhYmxlZCAmJiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uPy5zZHApIHtcbiAgICAgICAgY29uc3QgcGFyc2VkU0RQID0gbmV3IFNkcFBhcnNlcih0aGlzLl9wZWVyQ29ubmVjdGlvbi5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICB0aGlzLl9lc3RpbWF0ZWRBdWRpb0NvZGVjID0gcGFyc2VkU0RQLmF1ZGlvQ29kZWM7XG4gICAgICAgIHRoaXMuX2VzdGltYXRlZFZpZGVvQ29kZWMgPSBwYXJzZWRTRFAudmlkZW9Db2RlYztcbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGVTdGF0aXN0aWMoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcnRjU3RhdGlzdGljKCk6IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3J0Y1N0YXRpc3RpYztcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5faXNNb25pdG9yUnVubmluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbnVsbDtcblxuICAgIGlmICh0aGlzLl91cGRhdGVUaW1lb3V0KSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGhpcy5fdXBkYXRlVGltZW91dCk7XG4gICAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVN0YXRpc3RpYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IGF3YWl0IHRoaXMudXBkYXRlU3RhdGlzdGljTGVnYWN5KCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTYWZhcmkgMTEgZG9lc250IGhhdmUga2luZCBvciBtZWRpYVR5cGUgc28gd2UgbmVlZCB0byB0YWtlIGl0IGZyb20gdGhlIGluYm91bmQtcnRwIG9iamVjdCBpZFxuICAgIGNvbnN0IGdldEtpbmRGb3JTYWZhcmkxMSA9IChpdGVtOiB7aWQ6IHN0cmluZ30pOiBzdHJpbmcgPT4gaXRlbS5pZC5pbmNsdWRlcygnQXVkaW8nKSA/ICdhdWRpbycgOiBpdGVtLmlkLmluY2x1ZGVzKCdWaWRlbycpID8gJ3ZpZGVvJyA6ICcnO1xuICAgIGNvbnN0IGlnbm9yZWQgPSBhd2FpdCB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0U3RhdHMobnVsbClcbiAgICAgIC50aGVuKHN0YXRzID0+IHtcbiAgICAgICAgY29uc3QgcnRjU3RhdGlzdGljczogSVJ0Y01vbml0b3JTdGF0aXN0aWMgPSB7fTtcblxuICAgICAgICBpZiAoc3RhdHMpIHtcbiAgICAgICAgICBsZXQgcm91bmRUcmlwVGltZSA9IHRoaXMuX2VzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgbGV0IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgICAgc3RhdHMuZm9yRWFjaChyZXBvcnQgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5jdXJyZW50Um91bmRUcmlwVGltZSkge1xuICAgICAgICAgICAgICByb3VuZFRyaXBUaW1lID0gcmVwb3J0LmN1cnJlbnRSb3VuZFRyaXBUaW1lICogMTAwMDtcblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1sndmlkZW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wID0gcmVwb3J0Lmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDtcblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wID0gbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10pIHtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWyd2aWRlbyddLmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCA9IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdpbmJvdW5kLXJ0cCcpIHtcbiAgICAgICAgICAgICAgY29uc3Qga2luZCA9IHJlcG9ydC5raW5kIHx8IHJlcG9ydC5tZWRpYVR5cGUgfHwgZ2V0S2luZEZvclNhZmFyaTExKHJlcG9ydCk7XG4gICAgICAgICAgICAgIGxldCBjb2RlYyA9ICcnO1xuXG4gICAgICAgICAgICAgIHN0YXRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IHJlcG9ydC5jb2RlY0lkKSB7XG4gICAgICAgICAgICAgICAgICBjb2RlYyA9IGl0ZW0ubWltZVR5cGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBpZiAoa2luZCAmJiB0aGlzLl90cmFja3NUb01vbml0b3IuaW5jbHVkZXMoa2luZCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBieXRlcyA9IHJlcG9ydC5ieXRlc1JlY2VpdmVkIHx8IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNCeXRlc1JlY2VpdmVkID0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy5ba2luZF0/LmJ5dGVzUmVjZWl2ZWQgPz8gMDtcbiAgICAgICAgICAgICAgICBjb25zdCBieXRlc0RlbHRhID0gYnl0ZXMgLSBwcmV2aW91c0J5dGVzUmVjZWl2ZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgdGltZURlbHRhID0gcmVwb3J0LnRpbWVzdGFtcCAtICh0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWU/LltraW5kXT8udGltZXN0YW1wIHx8IDApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJpdHJhdGUgPSBieXRlc0RlbHRhICYmIHRpbWVEZWx0YSA/IE1hdGguZmxvb3IoOCAqIGJ5dGVzRGVsdGEgL1xuICAgICAgICAgICAgICAgICAgdGltZURlbHRhICogMTAwMCkgOiAwO1xuXG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXSA9IHtcbiAgICAgICAgICAgICAgICAgIHNzcmM6IHJlcG9ydC5zc3JjLFxuICAgICAgICAgICAgICAgICAgbWVkaWFUeXBlOiBraW5kLFxuICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOiByZXBvcnQudGltZXN0YW1wLFxuICAgICAgICAgICAgICAgICAgYml0cmF0ZSxcbiAgICAgICAgICAgICAgICAgIGJ5dGVzUmVjZWl2ZWQ6IHJlcG9ydC5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgcGFja2V0c0xvc3Q6IHJlcG9ydC5wYWNrZXRzTG9zdCxcbiAgICAgICAgICAgICAgICAgIHBhY2tldHNSZWNlaXZlZDogcmVwb3J0LnBhY2tldHNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgIGNvZGVjOiBjb2RlYyB8fCB0aGlzLmdldENvZGVjQnlUeXBlKGtpbmQpLFxuICAgICAgICAgICAgICAgICAgcm91bmRUcmlwVGltZVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAocmVwb3J0Lmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF0ubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wID0gcmVwb3J0Lmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGtpbmQgPT09ICd2aWRlbycgJiYgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy52aWRlbz8uZnJhbWVzRGVjb2RlZCkge1xuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnJhbWVzRGVjb2RlZCddID0gcmVwb3J0LmZyYW1lc0RlY29kZWQ7XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZwcyA9IChyZXBvcnQuZnJhbWVzRGVjb2RlZCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby5mcmFtZXNEZWNvZGVkKSAvXG4gICAgICAgICAgICAgICAgICAgIChydGNTdGF0aXN0aWNzW2tpbmRdLnRpbWVzdGFtcCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby50aW1lc3RhbXApICpcbiAgICAgICAgICAgICAgICAgICAgMTAwMDtcblxuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnBzJ10gPSBmcHMgPyBNYXRoLnJvdW5kKGZwcyAqIDEwMCkgLyAxMDAgOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlID0gcnRjU3RhdGlzdGljcztcbiAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlU3RhdGlzdGljKCksIHVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlU3RhdGlzdGljTGVnYWN5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGlnbm9yZWQgPSBhd2FpdCB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0U3RhdHNMZWdhY3koKS50aGVuKHN0YXRzID0+IHtcbiAgICAgIGNvbnN0IHJ0Y1N0YXRpc3RpY3M6IElSdGNNb25pdG9yU3RhdGlzdGljID0ge307XG4gICAgICBsZXQgcm91bmRUcmlwVGltZSA9IHRoaXMuX2VzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG5cbiAgICAgIHN0YXRzLnJlc3VsdCgpLmZvckVhY2gocmVwb3J0ID0+IHtcbiAgICAgICAgcmVwb3J0Lm5hbWVzKCkuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICBpZiAobmFtZSA9PT0gJ2dvb2dSVFQnKSB7XG4gICAgICAgICAgICByb3VuZFRyaXBUaW1lID0gcmVwb3J0LnN0YXQobmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdzc3JjJykge1xuICAgICAgICAgIGNvbnN0IG1lZGlhVHlwZSA9IHJlcG9ydC5zdGF0KCdtZWRpYVR5cGUnKS50b1N0cmluZygpO1xuXG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdID0ge3RpbWVzdGFtcDogRGF0ZS5ub3coKX07XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydzc3JjJ10gPSByZXBvcnQuc3RhdCgnc3NyYycpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydtZWRpYVR5cGUnXSA9IG1lZGlhVHlwZTtcbiAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ2J5dGVzUmVjZWl2ZWQnXSA9IHJlcG9ydC5zdGF0KCdieXRlc1JlY2VpdmVkJyk7XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydwYWNrZXRzTG9zdCddID0gcmVwb3J0LnN0YXQoJ3BhY2tldHNMb3N0Jyk7XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydwYWNrZXRzUmVjZWl2ZWQnXSA9IHJlcG9ydC5zdGF0KCdwYWNrZXRzUmVjZWl2ZWQnKTtcbiAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ2NvZGVjJ10gPSByZXBvcnQuc3RhdCgnZ29vZ0NvZGVjTmFtZScpLnRvU3RyaW5nKCkgfHwgdGhpcy5nZXRDb2RlY0J5VHlwZShtZWRpYVR5cGUpO1xuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsncm91bmRUcmlwVGltZSddID0gcm91bmRUcmlwVGltZTtcblxuICAgICAgICAgIGlmIChtZWRpYVR5cGUgPT09ICd2aWRlbycgJiYgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy52aWRlbz8uZnJhbWVzRGVjb2RlZCkge1xuICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydmcmFtZXNEZWNvZGVkJ10gPSByZXBvcnQuc3RhdCgnZnJhbWVzRGVjb2RlZCcpO1xuICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydmcHMnXSA9IChydGNTdGF0aXN0aWNzW21lZGlhVHlwZV0uZnJhbWVzRGVjb2RlZCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby5mcmFtZXNEZWNvZGVkKSAvXG4gICAgICAgICAgICAgIChydGNTdGF0aXN0aWNzW21lZGlhVHlwZV0udGltZXN0YW1wIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvLnRpbWVzdGFtcCkgKlxuICAgICAgICAgICAgMTAwMCB8fCAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUgPSBydGNTdGF0aXN0aWNzO1xuICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcpIHtcbiAgICAgICAgdGhpcy5fdXBkYXRlVGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gdGhpcy51cGRhdGVTdGF0aXN0aWMoKSwgdXBkYXRlU3RhdGlzdGljVGltZW91dCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldENvZGVjQnlUeXBlKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdhdWRpbyc6XG4gICAgICAgIHJldHVybiB0aGlzLl9lc3RpbWF0ZWRBdWRpb0NvZGVjIHx8ICd1bmtub3duJztcbiAgICAgIGNhc2UgJ3ZpZGVvJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VzdGltYXRlZFZpZGVvQ29kZWMgfHwgJ3Vua25vd24nO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICd1bmtub3duJztcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2RwUGFyc2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2RwOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2F1ZGlvQ29kZWM6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlkZW9Db2RlYzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0F1ZGlvVHJhY2tFbmFibGVkOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc1ZpZGVvVHJhY2tFbmFibGVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHNkcDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2RwID0gc2RwO1xuXG4gICAgY29uc3Qgc2RwU3BsaXRCeUxpbmVzID0gdGhpcy5fc2RwLnNwbGl0KC8oXFxyXFxufFxccnxcXG4pLyk7XG4gICAgY29uc3Qgc2RwU3BsaXRCeVRyYWNrcyA9IHRoaXMuX3NkcC5zcGxpdCgvKD86XnxbXFxyXFxuXSltPS8pO1xuXG4gICAgdGhpcy5fYXVkaW9Db2RlYyA9IHRoaXMuYXBwbHlDb2RlYygnYXVkaW8nLCBzZHBTcGxpdEJ5TGluZXMpO1xuICAgIHRoaXMuX3ZpZGVvQ29kZWMgPSB0aGlzLmFwcGx5Q29kZWMoJ3ZpZGVvJywgc2RwU3BsaXRCeUxpbmVzKTtcbiAgICB0aGlzLl9pc0F1ZGlvVHJhY2tFbmFibGVkID0gdGhpcy5pc1RyYWNrQnlUeXBlRW5hYmxlZCgnYXVkaW8nLCBzZHBTcGxpdEJ5VHJhY2tzKTtcbiAgICB0aGlzLl9pc1ZpZGVvVHJhY2tFbmFibGVkID0gdGhpcy5pc1RyYWNrQnlUeXBlRW5hYmxlZCgndmlkZW8nLCBzZHBTcGxpdEJ5VHJhY2tzKTtcbiAgfVxuXG4gIGdldCBhdWRpb0NvZGVjKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2F1ZGlvQ29kZWM7XG4gIH1cblxuICBnZXQgdmlkZW9Db2RlYygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl92aWRlb0NvZGVjO1xuICB9XG5cbiAgZ2V0IGlzQXVkaW9UcmFja0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzQXVkaW9UcmFja0VuYWJsZWQ7XG4gIH1cblxuICBnZXQgaXNWaWRlb1RyYWNrRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNWaWRlb1RyYWNrRW5hYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgaXNUcmFja0J5VHlwZUVuYWJsZWQodHlwZTogc3RyaW5nLCBzZHBTcGxpdEJ5VHJhY2tzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNkcFNlY3Rpb25Gb3JUeXBlID0gc2RwU3BsaXRCeVRyYWNrcy5maW5kKHNkcFRyYWNrID0+IHNkcFRyYWNrLnN0YXJ0c1dpdGgodHlwZSkpO1xuXG4gICAgaWYgKCFzZHBTZWN0aW9uRm9yVHlwZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiAhc2RwU2VjdGlvbkZvclR5cGUuaW5jbHVkZXMoYGE9aW5hY3RpdmVgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlDb2RlYyh0eXBlOiBzdHJpbmcsIHNkcFNwbGl0QnlMaW5lczogc3RyaW5nIFtdKTogc3RyaW5nIHtcbiAgICBjb25zdCBydG1hcCA9IHNkcFNwbGl0QnlMaW5lcy5maW5kKHNkcExpbmUgPT4gc2RwTGluZS5pbmNsdWRlcyhgbT0ke3R5cGV9YCkpPy5zcGxpdCgnICcpWzNdIHx8ICcnO1xuICAgIGNvbnN0IHVzZWRDb2RlY0xpbmUgPSBzZHBTcGxpdEJ5TGluZXMuZmluZChzZHBMaW5lID0+IHNkcExpbmUuaW5jbHVkZXMoYGE9cnRwbWFwOiR7cnRtYXB9YCkpO1xuICAgIGNvbnN0IHVzZWRDb2RlYyA9IHVzZWRDb2RlY0xpbmU/LnNwbGl0KCcgJylbMV0gfHwgJyc7XG4gICAgY29uc3QgY29kZWNOYW1lID0gdXNlZENvZGVjLnNwbGl0KCcvJylbMF07XG5cbiAgICByZXR1cm4gY29kZWNOYW1lO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCB7SUxlZ2FjeVJUQ1N0YXRzUmVwb3J0fSBmcm9tICcuL1J0Y0Nvbm5lY3Rpb25Nb25pdG9yJztcblxuY2xhc3MgVmFuaWxsYVBlZXJDb25uZWN0aW9uIGltcGxlbWVudHMgSVBlZXJDb25uZWN0aW9uIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1ZhbmlsbGFQZWVyQ29ubmVjdGlvbicpO1xuICBwcml2YXRlIF9wZWVyQ29ubmVjdGlvbjogUlRDUGVlckNvbm5lY3Rpb24gfCBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uKSB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCkge1xuICAgICAgLy8gSWdub3JlZCBhcyBsZWdhY3kgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24gY2xhc3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gVGhpcyB3YXMgYSBDaHJvbWUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25cbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlJUQ1BlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgZ2V0IG5hdGl2ZSgpOiBSVENQZWVyQ29ubmVjdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbigpOiBSVENTZXNzaW9uRGVzY3JpcHRpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uIHx8IG51bGw7XG4gIH1cblxuICBnZXQgY3VycmVudFJlbW90ZURlc2NyaXB0aW9uKCk6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uIHx8IG51bGw7XG4gIH1cblxuICBnZXQgY29ubmVjdGlvblN0YXRlKCk6IFJUQ1BlZXJDb25uZWN0aW9uU3RhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmNvbm5lY3Rpb25TdGF0ZSB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IGljZUNvbm5lY3Rpb25TdGF0ZSgpOiBSVENJY2VDb25uZWN0aW9uU3RhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmljZUNvbm5lY3Rpb25TdGF0ZSB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5nZXRDb25maWd1cmF0aW9uID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5zZXRDb25maWd1cmF0aW9uID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzR2V0VHJhbnNjZWl2ZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhRmVhdHVyZUVuYWJsZW1lbnQuZ2V0VHJhbnNjZWl2ZXJzRGlzYWJsZWQgJiYgdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5nZXRUcmFuc2NlaXZlcnMgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNBZGRUcmFuc2NlaXZlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIUZlYXR1cmVFbmFibGVtZW50LmFkZFRyYW5jZWl2ZXJEaXNhYmxlZCAmJiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmFkZFRyYW5zY2VpdmVyID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlT2ZmZXIob3B0aW9ucz86IFJUQ09mZmVyT3B0aW9ucyk6IFByb21pc2U8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IGNyZWF0ZU9mZmVyIG1ldGhvZCB3aXRoIGNhbGxiYWNrcyBpcyBkZXByZWNhdGVkXG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHJlc29sdmUsIHJlamVjdCwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcihvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUFuc3dlcihvcHRpb25zPzogUlRDQW5zd2VyT3B0aW9ucyk6IFByb21pc2U8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IGNyZWF0ZUFuc3dlciBtZXRob2Qgd2l0aCBjYWxsYmFja3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIocmVzb2x2ZSwgcmVqZWN0LCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcihvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIHNldExvY2FsRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQgP1xuICAgICAgbmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbihkZXNjcmlwdGlvbikgOiBkZXNjcmlwdGlvbik7XG4gIH1cblxuICBhc3luYyBzZXRSZW1vdGVEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNDcnlwdG8gPSBkZXNjcmlwdGlvbi5zZHA/Lm1hdGNoKC9hPWNyeXB0bzovaSk7XG5cbiAgICBpZiAoaGFzQ3J5cHRvKSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignU0RQIGE9Y3J5cHRvIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQgP1xuICAgICAgbmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbihkZXNjcmlwdGlvbikgOiBkZXNjcmlwdGlvbik7XG4gIH1cblxuICBnZXRTZW5kZXJzKCk6IFJUQ1J0cFNlbmRlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFNlbmRlcnMoKTtcbiAgfVxuXG4gIGdldFJlY2VpdmVycygpOiBSVENSdHBSZWNlaXZlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFJlY2VpdmVycygpO1xuICB9XG5cbiAgZ2V0U3RhdHMoc2VsZWN0b3I/OiBNZWRpYVN0cmVhbVRyYWNrIHwgbnVsbCk6IFByb21pc2U8UlRDU3RhdHNSZXBvcnQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFN0YXRzKHNlbGVjdG9yKTtcbiAgfVxuXG4gIGdldFN0YXRzTGVnYWN5KCk6IFByb21pc2U8SUxlZ2FjeVJUQ1N0YXRzUmVwb3J0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIC8vIElnbm9yZWQgZHVlIHRvIHR5cGVzY3JpcHQgbm90IGhhdmluZyBsZWdhY3kgJ2dldFN0YXRzJyBtZXRob2QgdHlwZSBkZWZpbml0aW9uXG4gICAgICAvLyBUaGlzIHdhcyBhIENocm9tZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgJ2dldFN0YXRzJyBtZXRob2QgZm9yXG4gICAgICAvLyBDaHJvbWVAPD0gNjYgZGV0YWlsZWQgaGVyZTogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NjI3ODE2XG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFN0YXRzKHJlc29sdmUpO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkRXZlbnRMaXN0ZW5lcjxUIGV4dGVuZHMga2V5b2YgUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcD4odHlwZTogVCwgbGlzdGVuZXI6ICh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXBbVF0pID0+IHVua25vd24sIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gIH1cblxuICByZW1vdmVFdmVudExpc3RlbmVyPFQgZXh0ZW5kcyBrZXlvZiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwPih0eXBlOiBULCBsaXN0ZW5lcjogKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcFtUXSkgPT4gdW5rbm93biwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgfVxuXG4gIGdldFRyYW5zY2VpdmVycygpOiBSVENSdHBUcmFuc2NlaXZlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFRyYW5zY2VpdmVycygpO1xuICB9XG5cbiAgYWRkVHJhbnNjZWl2ZXIobmFtZTogc3RyaW5nLCBvcHRpb25zOiBSVENSdHBUcmFuc2NlaXZlckluaXQpOiBSVENSdHBUcmFuc2NlaXZlciB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihuYW1lLCBvcHRpb25zKTtcbiAgfVxuXG4gIGFkZFN0cmVhbShtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW0pOiB2b2lkIHtcbiAgICBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHtcbiAgICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRUcmFjayh0cmFjayk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDb25maWd1cmF0aW9uKCk6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0Q29uZmlndXJhdGlvbigpO1xuICB9XG5cbiAgc2V0Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7XG4gIH1cblxuICBzZXQgb250cmFjayhoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDVHJhY2tFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9udHJhY2sgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9udHJhY2soKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1RyYWNrRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbnRyYWNrO1xuICB9XG5cbiAgc2V0IG9uaWNlY2FuZGlkYXRlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uaWNlY2FuZGlkYXRlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGU7XG4gIH1cblxuICBzZXQgb25jb25uZWN0aW9uc3RhdGVjaGFuZ2UoaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25jb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uY29ubmVjdGlvbnN0YXRlY2hhbmdlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlO1xuICB9XG5cbiAgc2V0IG9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSgpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZTtcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jbG9zZSgpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVmFuaWxsYVBlZXJDb25uZWN0aW9uOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vSVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBWYW5pbGxhUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9WYW5pbGxhUGVlckNvbm5lY3Rpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IGltcGxlbWVudHMgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSB7XG4gIGFzeW5jIGNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uKTogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb24+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8SVBlZXJDb25uZWN0aW9uPihyZXNvbHZlUGVlckNvbm5lY3Rpb25Qcm9taXNlID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmVQZWVyQ29ubmVjdGlvblByb21pc2UobmV3IFZhbmlsbGFQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKSk7XG4gICAgICAgIGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4vU3ViamVjdCc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWRPbmx5U3ViamVjdDxUPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YmplY3Q6IFN1YmplY3Q8VD47XG5cbiAgY29uc3RydWN0b3Ioc3ViamVjdDogU3ViamVjdDxUPikge1xuICAgIHRoaXMuX3N1YmplY3QgPSBzdWJqZWN0O1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl9zdWJqZWN0LnZhbHVlO1xuICB9XG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyOiAodmFsdWU6IFQpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YmplY3Quc3Vic2NyaWJlKGxpc3RlbmVyKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IElDb21wYXJhYmxlIGZyb20gJy4uL2xhbmcvSUNvbXBhcmFibGUnO1xuXG5jbGFzcyBEaXNwb3NhYmxlTGlzdGVuZXI8VD4gZXh0ZW5kcyBEaXNwb3NhYmxlIHtcbiAgY29uc3RydWN0b3IobGlzdGVuZXJzOiBUW10sIGxpc3RlbmVyOiBUKSB7XG4gICAgc3VwZXIoKCkgPT4ge1xuICAgICAgY29uc3QgaWR4ID0gbGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpO1xuXG4gICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgbGlzdGVuZXJzLnNwbGljZShpZHgsIDEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1YmplY3Q8VD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9saXN0ZW5lcnM6ICgodmFsdWU6IFQpID0+IHZvaWQpW107XG4gIHByaXZhdGUgX3ZhbHVlOiBUO1xuXG4gIGNvbnN0cnVjdG9yKHZhbHVlOiBUKSB7XG4gICAgdGhpcy5fbGlzdGVuZXJzID0gW107XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHNldCB2YWx1ZSh2YWx1ZTogVCkge1xuICAgIGxldCBjaGFuZ2VkID0gdGhpcy5fdmFsdWUgIT09IHZhbHVlO1xuXG4gICAgaWYgKGNoYW5nZWQgJiYgdmFsdWUpIHtcbiAgICAgIGNvbnN0IGNvbXBhcmFibGUgPSB2YWx1ZSBhcyB1bmtub3duIGFzIElDb21wYXJhYmxlPFQ+O1xuXG4gICAgICBpZiAodHlwZW9mIGNvbXBhcmFibGUuZXF1YWxzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNoYW5nZWQgPSAhY29tcGFyYWJsZS5lcXVhbHModGhpcy5fdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghY2hhbmdlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG5cbiAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIFsuLi50aGlzLl9saXN0ZW5lcnNdKSB7XG4gICAgICBsaXN0ZW5lcih2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHN1YnNjcmliZShsaXN0ZW5lcjogKHZhbHVlOiBUKSA9PiB2b2lkKTogSURpc3Bvc2FibGUge1xuICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcblxuICAgIGxpc3RlbmVyKHRoaXMuX3ZhbHVlKTtcblxuICAgIHJldHVybiBuZXcgRGlzcG9zYWJsZUxpc3RlbmVyPCh2YWx1ZTogVCkgPT4gdm9pZD4odGhpcy5fbGlzdGVuZXJzLCBsaXN0ZW5lcik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW52aXJvbm1lbnQge1xuICBzdGF0aWMgZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYmFzZVVSTCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcblxuICAgICAgcmV0dXJuIGJhc2VVUkwub3JpZ2luO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBJR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvSUdsb2JhbFNjb3BlJztcbmltcG9ydCB7R2xvYmFsU2NvcGV9IGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBTdHJpbmdzIGZyb20gJy4uL2xhbmcvU3RyaW5ncyc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IENvbnNvbGVBcHBlbmRlciBmcm9tICcuLi9sb2dnZXIvQ29uc29sZUFwcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlBcHBlbmRlciBmcm9tICcuLi90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlcic7XG5pbXBvcnQgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciBmcm9tICcuLi9kb20vQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlcic7XG5pbXBvcnQgTWV0cmljc0NvbmZpZ3VyYXRpb24sIHtUZWxlbWV0cnlMZXZlbCwgVGVsZW1ldHJ5TGV2ZWxUeXBlfSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBMb2dnaW5nTGV2ZWxNYXBwaW5nIGZyb20gJy4uL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBCdWlsZEZlYXR1cmVzIGZyb20gJy4uL2Vudmlyb25tZW50L0J1aWxkRmVhdHVyZXMnO1xuaW1wb3J0IEJyb3dzZXJEZXRlY3RvciBmcm9tICcuLi9kb20vQnJvd3NlckRldGVjdG9yJztcbmltcG9ydCBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciBmcm9tICcuLi9kb20vQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3InO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi4vcnRjL0lQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uU2VydmljZSBmcm9tICcuLi9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlVcmwgZnJvbSAnLi9UZWxlbWV0cnlVcmwnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4vRW52aXJvbm1lbnQnO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuL2Rpc2NvdmVyeS9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IE1ldHJpY3NGYWN0b3J5IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0ZhY3RvcnknO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cnlEZWZhdWx0JztcbmltcG9ydCB7U2hha2FQbGF5ZXJUeXBlfSBmcm9tICcuL3N0cmVhbWluZy9JU2hha2FQbGF5ZXInO1xuaW1wb3J0IHtIbHNQbGF5ZXJUeXBlfSBmcm9tICcuL3N0cmVhbWluZy9JSGxzUGxheWVyJztcbmltcG9ydCB7V2ViUGxheWVyVHlwZX0gZnJvbSAnLi9zdHJlYW1pbmcvSVdlYlBsYXllcic7XG5pbXBvcnQgSVByb3ZpZGVkR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvSVByb3ZpZGVkR2xvYmFsU2NvcGUnO1xuXG5jb25zdCBwYWdlTG9hZFRpbWUgPSBHbG9iYWxTY29wZS5nZXRJbnN0YW5jZSgpLnZhbHVlPy5wYWdlTG9hZFRpbWUgfHwgRGF0ZS5ub3coKTtcblxuaW50ZXJmYWNlIElJbml0T3B0aW9ucyB7XG4gIGRpc2NvdmVyeVVyaT86IHN0cmluZztcbiAgcGVlckNvbm5lY3Rpb25GYWN0b3J5PzogSVBlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgdGVsZW1ldHJ5TGV2ZWw/OiBUZWxlbWV0cnlMZXZlbFR5cGU7XG4gIGxvZ2dpbmdMZXZlbD86IExvZ2dpbmdMZXZlbFR5cGU7XG4gIGNvbnNvbGVMb2dnaW5nTGV2ZWw/OiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtPzogYm9vbGVhbjtcbiAgYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU/OiBib29sZWFuO1xuICB3ZWJQbGF5ZXJMb2FkZXI/OiAodmFsdWU6IChwbGF5ZXI6IFdlYlBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHNoYWthUGxheWVyTG9hZGVyPzogKHZhbHVlOiAocGxheWVyOiBTaGFrYVBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIGhsc0pzTG9hZGVyPzogKHZhbHVlOiAocGxheWVyOiBIbHNQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTREsge1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJldHJ5LW9uLWZhaWx1cmUnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJyk7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWZvcmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1yZXN0YXJ0Jyk7XG4gIHByaXZhdGUgc3RhdGljIF9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LXNraXAtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLW1vYmlsZS1kZXZpY2VzJyk7XG4gIHByaXZhdGUgc3RhdGljIF93ZWJQbGF5ZXJMb2FkZXI6ICh2YWx1ZTogKHBsYXllcjogV2ViUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NoYWthUGxheWVyTG9hZGVyOiAodmFsdWU6IChwbGF5ZXI6IFNoYWthUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgX2hsc0pzTG9hZGVyOiAodmFsdWU6IChwbGF5ZXI6IEhsc1BsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHByaXZhdGUgc3RhdGljIF9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjogQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgfCBudWxsO1xuICBwcml2YXRlIHN0YXRpYyBfZW52aXJvbm1lbnQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5VXJsOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCdodHRwczovL3RlbGVtZXRyeS5waGVuaXhydHMuY29tL3RlbGVtZXRyeScpO1xuICBwcml2YXRlIHN0YXRpYyBfbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDg7XG4gIHByaXZhdGUgc3RhdGljIF90ZWxlbWV0cnlMZXZlbDogU3ViamVjdDxUZWxlbWV0cnlMZXZlbD4gPSBuZXcgU3ViamVjdDxUZWxlbWV0cnlMZXZlbD4oVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWwpO1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc2VuZExvY2FsQ2FuZGlkYXRlczogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KEJ1aWxkRmVhdHVyZXMuc2VuZExvY2FsQ2FuZGlkYXRlcyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF90ZW5hbmN5OiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2NsaWVudFNlc3Npb25JZDogc3RyaW5nID0gU3RyaW5ncy5yYW5kb20oMzIpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfbG9hZGVkVGltZXN0YW1wOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTREsnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2luaXRpYWxpemVkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlJbml0aWFsaXplZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPihTREsuX2luaXRpYWxpemVkKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5RGlzY292ZXJ5VXJpOiBSZWFkT25seVN1YmplY3Q8c3RyaW5nPiA9IG5ldyBSZWFkT25seVN1YmplY3Q8c3RyaW5nPihEaXNjb3ZlcnlVcmkudXJpKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5UGVlckNvbm5lY3Rpb25GYWN0b3J5OiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+KFBlZXJDb25uZWN0aW9uU2VydmljZS5wZWVyQ29ubmVjdGlvbkZhY3RvcnkpO1xuXG4gIHN0YXRpYyBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZExvY2FsQ2FuZGlkYXRlcygpOiBTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVuYW5jeSgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl90ZW5hbmN5O1xuICB9XG5cbiAgc3RhdGljIGdldCBjbGllbnRTZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU0RLLl9jbGllbnRTZXNzaW9uSWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGxvYWRlZFRpbWVzdGFtcCgpOiBEYXRlIHtcbiAgICByZXR1cm4gU0RLLl9sb2FkZWRUaW1lc3RhbXA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGluaXRpYWxpemVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlJbml0aWFsaXplZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGlzY292ZXJ5VXJpKCk6IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gU0RLLl9yZWFkT25seURpc2NvdmVyeVVyaTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgcGVlckNvbm5lY3Rpb25GYWN0b3J5KCk6IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY1JldHJ5T25GYWlsdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtO1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXM7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHdlYlBsYXllckxvYWRlcigpOiAodmFsdWU6IChwbGF5ZXI6IFdlYlBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93ZWJQbGF5ZXJMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNoYWthUGxheWVyTG9hZGVyKCk6ICh2YWx1ZTogKHBsYXllcjogU2hha2FQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fc2hha2FQbGF5ZXJMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGhsc0pzTG9hZGVyKCk6ICh2YWx1ZTogKHBsYXllcjogSGxzUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2hsc0pzTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBtZXRyaWNzU2VydmljZSgpOiBNZXRyaWNzU2VydmljZSB7XG4gICAgcmV0dXJuIFNESy5fbWV0cmljc1NlcnZpY2U7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKCk6IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlVcmwoKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fdGVsZW1ldHJ5VXJsO1xuICB9XG5cbiAgc3RhdGljIGdldCBtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHM7XG4gIH1cblxuICBzdGF0aWMgc2V0IG1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMocmV0cmllc0Ftb3VudDogbnVtYmVyKSB7XG4gICAgdGhpcy5fbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IHJldHJpZXNBbW91bnQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKHRoaXMuX2xvZ2dlci50aHJlc2hvbGQudmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUoU0RLLl90ZWxlbWV0cnlMZXZlbC52YWx1ZSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJEZXRlY3RvcigpOiBCcm93c2VyRGV0ZWN0b3Ige1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3I7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gPSBMb2dnZXJGYWN0b3J5LnRlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG5cbiAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5wYWdlTG9hZFRpbWUgPSBTREsucGFnZUxvYWRUaW1lO1xuXG4gICAgY29uc3QgaWdub3JlZEVudmlyb25tZW50ID0gU0RLLl9lbnZpcm9ubWVudC5zdWJzY3JpYmUoZW52aXJvbm1lbnQgPT4ge1xuICAgICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWREaXNjb3ZlcnlVcmkgPSBTREsudGVsZW1ldHJ5VXJsLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBjb25zdCB0ZWxlbWV0cnlBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIFRlbGVtZXRyeUFwcGVuZGVyKTtcblxuICAgICAgaWYgKHRlbGVtZXRyeUFwcGVuZGVyKSB7XG4gICAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udXJsID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUodGVsZW1ldHJ5QXBwZW5kZXIpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnVGVsZW1ldHJ5IFVSTCB3YXMgc2V0IHRvIFslc10nLCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZFRlbmFuY3kgPSBTREsuX3RlbmFuY3kuc3Vic2NyaWJlKHRlbmFuY3kgPT4ge1xuICAgICAgY29uc3QgdGVsZW1ldHJ5QXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBUZWxlbWV0cnlBcHBlbmRlcik7XG5cbiAgICAgIGlmICh0ZWxlbWV0cnlBcHBlbmRlciAmJiB0ZW5hbmN5KSB7XG4gICAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeSA9IHRlbmFuY3k7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUodGVsZW1ldHJ5QXBwZW5kZXIpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnVGVsZW1ldHJ5IHRlbmFuY3kgd2FzIHNldCB0byBbJXNdJywgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseU1ldHJpY3NDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIFNESy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShEaXNjb3ZlcnlVcmkudXJpLnZhbHVlKTtcbiAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uID0gU0RLLl9tZXRyaWNzU2VydmljZS5tZXRyaWNzQ29uZmlndXJhdGlvbjtcblxuICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcblxuICAgIGNvbnN0IGlnbm9yZWRFbnZpcm9ubWVudCA9IFNESy5fZW52aXJvbm1lbnQuc3Vic2NyaWJlKGVudmlyb25tZW50ID0+IHtcbiAgICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkRGlzY292ZXJ5VXJpID0gU0RLLnRlbGVtZXRyeVVybC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi51cmwgPSB2YWx1ZTtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkVGVuYW5jeSA9IFNESy5fdGVuYW5jeS5zdWJzY3JpYmUodGVuYW5jeSA9PiB7XG4gICAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLnRlbmFuY3kgPSB0ZW5hbmN5O1xuICAgIH0pO1xuICAgIGNvbnN0IHZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LW1ldHJpY3MtbGV2ZWwnKSBhcyBUZWxlbWV0cnlMZXZlbFR5cGU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIE1ldHJpY3NGYWN0b3J5LnNldFRlbGVtZXRyeUxldmVsKFRlbGVtZXRyeUxldmVsW3ZhbHVlXSk7XG4gICAgfVxuXG4gICAgY29uc3QgaWdub3JlZFRlbGVtZXRyeUxldmVsID0gU0RLLl90ZWxlbWV0cnlMZXZlbC5zdWJzY3JpYmUodGVsZW1ldHJ5TGV2ZWwgPT4ge1xuICAgICAgTWV0cmljc0ZhY3Rvcnkuc2V0VGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWwpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5QXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJldHJ5LW9uLWZhaWx1cmUnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZXRyeSBvbiBmYWlsdXJlIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb25Gcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24gPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbicpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1mb3JjZS1nYXJiYWdlLWNvbGxlY3Rpb24tb24tcmVzdGFydCcpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlc0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnU2tpcCBnYXJiYWdlIGNvbGxlY3Rpb24gb24gbW9iaWxlIGRldmljZXMgb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIFNESy5kaXNjb3ZlcnlVcmkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIFNESy50ZWxlbWV0cnlVcmwudmFsdWUgPSBTREsuZ2V0VGVsZW1ldHJ5VXJsKHZhbHVlKTtcbiAgICAgIFNESy5fZW52aXJvbm1lbnQudmFsdWUgPSBFbnZpcm9ubWVudC5nZXRFbnZpcm9ubWVudEZyb21VcmwodmFsdWUpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY2hhbm5lbFRva2VuID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWNoYW5uZWwtdG9rZW4nKTtcblxuICAgIGlmIChjaGFubmVsVG9rZW4pIHtcbiAgICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4oY2hhbm5lbFRva2VuKTtcblxuICAgICAgU0RLLl90ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3k7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdXJpVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtdXJpJyk7XG5cbiAgICBpZiAodXJpVmFsdWUpIHtcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSB1cmlWYWx1ZTtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIFwicGhlbml4LXVyaVwiIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHRhZyB0byBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlVVJJVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtYmFzZS11cmknKTtcblxuICAgIGlmIChiYXNlVVJJVmFsdWUpIHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlID0gR2xvYmFsU2NvcGUuZ2V0SW5zdGFuY2UoKS52YWx1ZTtcbiAgICAgIGNvbnN0IHVyaSA9IG5ldyBnbG9iYWxTY29wZS5VUkwoYmFzZVVSSVZhbHVlKTtcblxuICAgICAgdXJpLnBhdGhuYW1lID0gJy9wY2FzdC9lbmRQb2ludHMnO1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IHVyaS50b1N0cmluZygpO1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gXCJwaGVuaXgtYmFzZS11cmlcIiBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0YWcgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG9uTG9hZChnbG9iYWxTY29wZTogSUdsb2JhbFNjb3BlIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faW5pdGlhbGl6ZWQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdTREsgaGFzIGFscmVhZHkgYmVlbiBsb2FkZWQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGdsb2JhbFNjb3BlLmFkZFdpbmRvd0V2ZW50TGlzdGVuZXIoJ3VubG9hZCcsICgpID0+IHtcbiAgICAgIFNESy5kaXNwb3NlKCk7XG4gICAgfSk7XG5cbiAgICBTREsuYXBwbHlEaXNjb3ZlcnlVcmlEZWZhdWx0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTtcbiAgICBTREsuYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbigpO1xuICAgIFNESy5hcHBseVRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTtcblxuICAgIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gbmV3IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKCk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZXRyeSBvbiBmYWlsdXJlIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbiBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24pO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnU2tpcCBnYXJiYWdlIGNvbGxlY3Rpb24gb24gbW9iaWxlIGRldmljZXMgb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpO1xuXG4gICAgdGhpcy5faW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlO1xuICB9XG5cbiAgc3RhdGljIGluaXQob3B0aW9ucz86IElJbml0T3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZTogSUluaXRPcHRpb25zICYge2dsb2JhbFNjb3BlPzogSVByb3ZpZGVkR2xvYmFsU2NvcGV9ID0gb3B0aW9ucztcblxuICAgIGlmIChvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGUuZ2xvYmFsU2NvcGUpIHtcbiAgICAgIEdsb2JhbFNjb3BlLnNldEluc3RhbmNlKG9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZS5nbG9iYWxTY29wZSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGlzY292ZXJ5VXJpKSB7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gb3B0aW9ucy5kaXNjb3ZlcnlVcmk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucGVlckNvbm5lY3Rpb25GYWN0b3J5KSB7XG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UucGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlID0gb3B0aW9ucy5wZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMudGVsZW1ldHJ5TGV2ZWwgJiYgVGVsZW1ldHJ5TGV2ZWxbb3B0aW9ucy50ZWxlbWV0cnlMZXZlbF0pIHtcbiAgICAgIFNESy5fdGVsZW1ldHJ5TGV2ZWwudmFsdWUgPSBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwob3B0aW9ucy50ZWxlbWV0cnlMZXZlbCk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubG9nZ2luZ0xldmVsICYmIExvZ2dpbmdMZXZlbFtvcHRpb25zLmxvZ2dpbmdMZXZlbF0pIHtcbiAgICAgIHRoaXMuX2xvZ2dlci50aHJlc2hvbGQuc2V0VGhyZXNob2xkKExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChvcHRpb25zLmxvZ2dpbmdMZXZlbCkpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWwgJiYgTG9nZ2luZ0xldmVsW29wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbF0pIHtcbiAgICAgIGNvbnN0IGNvbnNvbGVBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIENvbnNvbGVBcHBlbmRlcik7XG5cbiAgICAgIGlmIChjb25zb2xlQXBwZW5kZXIpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUoY29uc29sZUFwcGVuZGVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbCAhPT0gJ09mZicpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IENvbnNvbGVBcHBlbmRlcihMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsKSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0gPSBvcHRpb25zLmF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW07XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID0gb3B0aW9ucy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy53ZWJQbGF5ZXJMb2FkZXIpIHtcbiAgICAgIHRoaXMuX3dlYlBsYXllckxvYWRlciA9IG9wdGlvbnMud2ViUGxheWVyTG9hZGVyO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnNoYWthUGxheWVyTG9hZGVyKSB7XG4gICAgICB0aGlzLl9zaGFrYVBsYXllckxvYWRlciA9IG9wdGlvbnMuc2hha2FQbGF5ZXJMb2FkZXI7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuaGxzSnNMb2FkZXIpIHtcbiAgICAgIHRoaXMuX2hsc0pzTG9hZGVyID0gb3B0aW9ucy5obHNKc0xvYWRlcjtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICBTREsuX2luaXRpYWxpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I/LmRpc3Bvc2UoKTtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciA9IG51bGw7XG4gIH1cblxuICBzdGF0aWMgZ2V0VGVsZW1ldHJ5VXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5VXJsLmdldFRlbGVtZXRyeVVybCh1cmwpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NESyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuR2xvYmFsU2NvcGUuc3Vic2NyaWJlKFNESy5vbkxvYWQuYmluZChTREspKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5VXJsIHtcbiAgc3RhdGljIGdldFRlbGVtZXRyeVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhc2VVUkwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG4gICAgICBjb25zdCBzZWdtZW50cyA9IGJhc2VVUkwuaG9zdG5hbWUuc3BsaXQoJy4nKTtcblxuICAgICAgc3dpdGNoIChiYXNlVVJMLnByb3RvY29sKSB7XG4gICAgICAgIGNhc2UgJ3dzOic6XG4gICAgICAgICAgYmFzZVVSTC5wcm90b2NvbCA9ICdodHRwOic7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnd3NzOic6XG4gICAgICAgICAgYmFzZVVSTC5wcm90b2NvbCA9ICdodHRwczonO1xuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKHNlZ21lbnRzLmxlbmd0aCA9PT0gMiB8fFxuICAgICAgICAgIChzZWdtZW50cy5sZW5ndGggPT09IDMgJiYgc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMl0ubGVuZ3RoIDw9IDIgJiYgc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMV0ubGVuZ3RoIDw9IDMpXG4gICAgICApIHtcbiAgICAgICAgc2VnbWVudHMudW5zaGlmdCgndGVsZW1ldHJ5Jyk7XG4gICAgICB9IGVsc2UgaWYgKHNlZ21lbnRzWzBdLnN0YXJ0c1dpdGgoJ3N0Zy0nKSB8fCBzZWdtZW50c1swXS5lbmRzV2l0aCgnLXN0ZycpIHx8IHNlZ21lbnRzWzBdLmluY2x1ZGVzKCctc3RnLScpIHx8IHNlZ21lbnRzWzBdID09PSAnc3RnJykge1xuICAgICAgICBzZWdtZW50c1swXSA9ICd0ZWxlbWV0cnktc3RnJztcbiAgICAgIH0gZWxzZSBpZiAoc2VnbWVudHNbMF0uc3RhcnRzV2l0aCgnbG9jYWwnKSB8fCBzZWdtZW50c1swXS5lbmRzV2l0aCgnLWxvY2FsJykpIHtcbiAgICAgICAgLy8gTGVhdmUgVVJMIHVuY2hhbmdlZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VnbWVudHNbMF0gPSAndGVsZW1ldHJ5JztcbiAgICAgIH1cblxuICAgICAgYmFzZVVSTC5ob3N0bmFtZSA9IHNlZ21lbnRzLmpvaW4oJy4nKTtcblxuICAgICAgcmV0dXJuIGAke2Jhc2VVUkwub3JpZ2lufS90ZWxlbWV0cnlgO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCB0eXBlIEJpdHJhdGVTdGF0ZVR5cGUgPSAnS2VlcCcgfCAnUmVzZXQnO1xuZXhwb3J0IHR5cGUgQml0cmF0ZU1vZGVUeXBlID0gJ05vcm1hbCcgfCAnRm9yY2UnIHwgJ1Jlc2V0JztcblxuZXhwb3J0IGVudW0gQml0cmF0ZVN0YXRlIHtcbiAgS2VlcCxcbiAgUmVzZXRcbn1cblxuZXhwb3J0IGVudW0gQml0cmF0ZU1vZGUge1xuICBOb3JtYWwsXG4gIEZvcmNlLFxuICBSZXNldFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSB7XG4gIGFwaVZlcnNpb246IG51bWJlcjtcbiAgc2hhcmVkU2VjcmV0OiBzdHJpbmc7XG4gIGVsYXBzZWRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kOiBudW1iZXI7XG4gIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlVHlwZTtcbiAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlVHlwZTtcbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcbmltcG9ydCBEaW1lbnNpb24gZnJvbSAnLi4vLi4vdmlkZW8vRGltZW5zaW9uJztcbmltcG9ydCBFeHBvbmVudGlhbEJhY2tvZmYgZnJvbSAnLi4vLi4vdGltZS9FeHBvbmVudGlhbEJhY2tvZmYnO1xuaW1wb3J0IEVuZFBvaW50LCB7SVN0cmVhbX0gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCB7SU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2t9IGZyb20gJy4vSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2snO1xuaW1wb3J0IHtJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2t9IGZyb20gJy4vSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrJztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciBmcm9tICcuLi8uLi9kb20vR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXInO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCB7SUNoYW5uZWx9IGZyb20gJy4vSUNoYW5uZWwnO1xuaW1wb3J0IENoYW5uZWxTdGF0ZSBmcm9tICcuL0NoYW5uZWxTdGF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBWaWRlb1RlbGVtZXRyeSBmcm9tICcuLi8uLi92aWRlby9WaWRlb1RlbGVtZXRyeSc7XG5pbXBvcnQgU2Vzc2lvblRlbGVtZXRyeSBmcm9tICcuLi8uLi92aWRlby9TZXNzaW9uVGVsZW1ldHJ5JztcbmltcG9ydCB7SVJ0Y01vbml0b3JTdGF0aXN0aWN9IGZyb20gJy4uLy4uL3J0Yy9SdGNDb25uZWN0aW9uTW9uaXRvcic7XG5pbXBvcnQge0JpdHJhdGVNb2RlLCBCaXRyYXRlU3RhdGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcbmltcG9ydCB7Qml0c1BlclNlY29uZCwgTWlsbGlzZWNvbmR9IGZyb20gJy4uLy4uL3VuaXRzL1VuaXRzJztcbmltcG9ydCBUb2tlbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9Ub2tlbkNvbnRleHQnO1xuaW1wb3J0IENoYW5uZWxDb250ZXh0LCB7Q2hhbm5lbENvbnRleHRPcHRpb25zfSBmcm9tICcuLi9jb250ZXh0L0NoYW5uZWxDb250ZXh0JztcbmltcG9ydCBFbmNvZGVkU3RyZWFtU2luaywge0lFbmNvZGVkU3RyZWFtU2lua30gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vRW5jb2RlZFN0cmVhbVNpbmsnO1xuaW1wb3J0IFN0cmVhbVRyYWNrVHJhbnNmb3JtLCB7SVN0cmVhbVRyYWNrVHJhbnNmb3JtfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybSc7XG5pbXBvcnQgU3RyZWFtVHJhbnNmb3JtQ29udGV4dCwge1N0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zfSBmcm9tICcuLi9jb250ZXh0L1N0cmVhbVRyYW5zZm9ybUNvbnRleHQnO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dCc7XG5pbXBvcnQgU3RhdGVDb250ZXh0IGZyb20gJy4uL2NvbnRleHQvU3RhdGVDb250ZXh0JztcbmltcG9ydCBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L0ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0JztcbmltcG9ydCB7RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24sIFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbn0gZnJvbSAnLi4vZnJhbWVUaW1pbmcvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbic7XG5pbXBvcnQgU3RyZWFtRmFjdG9yeSBmcm9tICcuLi9zdHJlYW1pbmcvU3RyZWFtRmFjdG9yeSc7XG5pbXBvcnQgRGlzY292ZXJ5IGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnknO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuLi9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5cbmNvbnN0IGRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbiA9ICdjbGllbnQ6dGVybWluYXRpb24nO1xuY29uc3QgZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMgPSAzMDAwO1xuY29uc3Qgc3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzID0gMTUwMDA7XG5cbmV4cG9ydCB0eXBlIENoYW5uZWxPcHRpb25zID0ge1xuICB0YXJnZXRMYWc/OiBNaWxsaXNlY29uZDtcbiAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaz86IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPjtcbiAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaz86IElTdHJlYW1UcmFja1RyYW5zZm9ybTxBdWRpb0RhdGE+O1xuICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rPzogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPjtcbiAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luaz86IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT47XG4gIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s/OiBJT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgb25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/OiBJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGFubmVsIGltcGxlbWVudHMgSUNoYW5uZWwge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignQ2hhbm5lbCcpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlbkNvbnRleHQ6IFRva2VuQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2hhbm5lbENvbnRleHQ6IENoYW5uZWxDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9wZWVyQ29ubmVjdGlvbkNvbnRleHQ6IFBlZXJDb25uZWN0aW9uQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhdGVDb250ZXh0OiBTdGF0ZUNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwb25lbnRpYWxCYWNrb2ZmOiBFeHBvbmVudGlhbEJhY2tvZmY7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxTdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbjogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0YXRlOiBSZWFkT25seVN1YmplY3Q8Q2hhbm5lbFN0YXRlPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlFeGlzdHM6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5QXV0b011dGVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5QXV0b1BhdXNlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVRva2VuRXhwaXJpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlBdXRob3JpemVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5T25saW5lOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TG9hZGluZzogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVBsYXlpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdGFuZGJ5OiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RvcHBlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVRhcmdldExhZzogUmVhZE9ubHlTdWJqZWN0PE1pbGxpc2Vjb25kPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlMYWc6IFJlYWRPbmx5U3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUJpdHJhdGVMaW1pdDogUmVhZE9ubHlTdWJqZWN0PEJpdHNQZXJTZWNvbmQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVJlc29sdXRpb246IFJlYWRPbmx5U3ViamVjdDxEaW1lbnNpb24+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUZhaWx1cmVDb3VudDogUmVhZE9ubHlTdWJqZWN0PG51bWJlcj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5RW5kUG9pbnQ6IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludCB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0cmVhbTogUmVhZE9ubHlTdWJqZWN0PElTdHJlYW0gfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlSdGNTdGF0aXN0aWNzOiBSZWFkT25seVN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlNZWRpYVN0cmVhbTogUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5SXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uRW5hYmxlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seURlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBSZWFkT25seVN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb246IFJlYWRPbmx5U3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPjtcblxuICBwcml2YXRlIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nlc3Npb25UZWxlbWV0cnk6IFNlc3Npb25UZWxlbWV0cnk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcjogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3Rvcih2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQsIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBvcHRpb25zPzogQ2hhbm5lbE9wdGlvbnMpIHtcbiAgICBjb25zdCBlZGdlVG9rZW4gPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKTtcbiAgICBjb25zdCBjaGFubmVsQ29udGV4dE9wdGlvbnM6IENoYW5uZWxDb250ZXh0T3B0aW9ucyA9IHtcbiAgICAgIHRhcmdldExhZzogb3B0aW9ucz8udGFyZ2V0TGFnLFxuICAgICAgb25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjazogb3B0aW9ucz8ub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayxcbiAgICAgIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrOiBvcHRpb25zPy5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFja1xuICAgIH07XG4gICAgY29uc3Qgc3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnM6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zID0ge1xuICAgICAgaGFzSW5zZXJ0YWJsZVN0cmVhbXM6IGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ2luc2VydGFibGUtc3RyZWFtcycpLFxuICAgICAgaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBlZGdlVG9rZW4uY2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdlbmNvZGVkLWluc2VydGFibGUtc3RyZWFtcycpLFxuICAgICAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogb3B0aW9ucz8udmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayxcbiAgICAgIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IG9wdGlvbnM/LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssXG4gICAgICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBvcHRpb25zPy5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rLFxuICAgICAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogb3B0aW9ucz8uZW5jb2RlZEF1ZGlvU3RyZWFtU2lua1xuICAgIH07XG5cbiAgICB0aGlzLl90b2tlbkNvbnRleHQgPSBuZXcgVG9rZW5Db250ZXh0KHRva2VuKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dCA9IG5ldyBDaGFubmVsQ29udGV4dChjaGFubmVsQ29udGV4dE9wdGlvbnMpO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dCA9IG5ldyBQZWVyQ29ubmVjdGlvbkNvbnRleHQoKTtcbiAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0ID0gbmV3IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQoc3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMpO1xuICAgIHRoaXMuX3N0YXRlQ29udGV4dCA9IG5ldyBTdGF0ZUNvbnRleHQoKTtcbiAgICB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYgPSBuZXcgRXhwb25lbnRpYWxCYWNrb2ZmKCk7XG4gICAgdGhpcy5fY2hhbm5lbFN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgdGhpcy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD4odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uKTtcbiAgICB0aGlzLl9yZWFkT25seVN0YXRlID0gbmV3IFJlYWRPbmx5U3ViamVjdDxDaGFubmVsU3RhdGU+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlKTtcbiAgICB0aGlzLl9yZWFkT25seUV4aXN0cyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbiB8IG51bGw+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmV4aXN0cyk7XG4gICAgdGhpcy5fcmVhZE9ubHlBdXRvTXV0ZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlBdXRvUGF1c2VkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkKTtcbiAgICB0aGlzLl9yZWFkT25seVRva2VuRXhwaXJpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbkV4cGlyaW5nKTtcbiAgICB0aGlzLl9yZWFkT25seUF1dGhvcml6ZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5T25saW5lID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5vbmxpbmUpO1xuICAgIHRoaXMuX3JlYWRPbmx5TG9hZGluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlQbGF5aW5nID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nKTtcbiAgICB0aGlzLl9yZWFkT25seVN0YW5kYnkgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YW5kYnkpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RvcHBlZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQuc3RvcHBlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlUYXJnZXRMYWcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4odGhpcy5fY2hhbm5lbENvbnRleHQudGFyZ2V0TGFnKTtcbiAgICB0aGlzLl9yZWFkT25seUxhZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih0aGlzLl9jaGFubmVsQ29udGV4dC5sYWcpO1xuICAgIHRoaXMuX3JlYWRPbmx5Qml0cmF0ZUxpbWl0ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxCaXRzUGVyU2Vjb25kPih0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQpO1xuICAgIHRoaXMuX3JlYWRPbmx5UmVzb2x1dGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8RGltZW5zaW9uPih0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uKTtcbiAgICB0aGlzLl9yZWFkT25seUZhaWx1cmVDb3VudCA9IG5ldyBSZWFkT25seVN1YmplY3Q8bnVtYmVyPih0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQpO1xuICAgIHRoaXMuX3JlYWRPbmx5RW5kUG9pbnQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD4odGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RyZWFtID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD4odGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtKTtcbiAgICB0aGlzLl9yZWFkT25seVJ0Y1N0YXRpc3RpY3MgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4odGhpcy5fY2hhbm5lbENvbnRleHQucnRjU3RhdGlzdGljcyk7XG4gICAgdGhpcy5fcmVhZE9ubHlNZWRpYVN0cmVhbSA9IG5ldyBSZWFkT25seVN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPih0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0pO1xuXG4gICAgY29uc3QgZGlzY292ZXJ5VXJpID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgIFNESy50ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3kgfHwgU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IGRpc2NvdmVyeVVyaTtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKGRpc2NvdmVyeVVyaSk7XG4gICAgdGhpcy5fc2Vzc2lvblRlbGVtZXRyeSA9IG5ldyBTZXNzaW9uVGVsZW1ldHJ5KFNESy5wYWdlTG9hZFRpbWUsIHRoaXMuX21ldHJpY3NTZXJ2aWNlKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkpO1xuICAgIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlciA9IHRoaXMuaGFuZGxlVmlkZW9NZXRhRGF0YUNoYW5nZWQuYmluZCh0aGlzKTtcbiAgICB0aGlzLnZpZGVvRWxlbWVudCA9IHZpZGVvRWxlbWVudDtcblxuICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0ID0gbmV3IEZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0KCk7XG4gICAgdGhpcy5jb25maWd1cmVGcmFtZVRpbWluZ0luZm9ybWF0aW9uKGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMpO1xuICAgIHRoaXMuX3JlYWRPbmx5SXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uRW5hYmxlZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuaXNFbmFibGVkKTtcbiAgICB0aGlzLl9yZWFkT25seURlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uID0gbmV3IFJlYWRPbmx5U3ViamVjdDxEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LmRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uKTtcbiAgICB0aGlzLl9yZWFkT25seVJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4odGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQucmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uKTtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQuc3Vic2NyaWJlKHZpZGVvRWxlbWVudCA9PiB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgICAgIGlmICghdmlkZW9FbGVtZW50KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5hZGQodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnN1YnNjcmliZShzdHJlYW0gPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb1RlbGVtZXRyeSkge1xuICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkuZGlzcG9zZSgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghc3RyZWFtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCF0aGlzLnZpZGVvRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0KSB7XG4gICAgICAgICAgICB0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0LnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgICAgICAgICB0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0LnN0cmVhbUlkID0gdGhpcy5zdHJlYW1JZDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb1RlbGVtZXRyeSA9IG5ldyBWaWRlb1RlbGVtZXRyeSh0aGlzLnN0cmVhbUlkLCBTREsucGFnZUxvYWRUaW1lLCB0aGlzLl9jaGFubmVsU3RhcnRUaW1lLCB0aGlzLl9tZXRyaWNzU2VydmljZSk7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkuc2V0dXBMaXN0ZW5lckZvclRpbWVUb0ZpcnN0VGltZSh0aGlzLnZpZGVvRWxlbWVudCk7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkuc2V0dXBMaXN0ZW5lckZvclJlYnVmZmVyaW5nKHRoaXMudmlkZW9FbGVtZW50KTtcblxuICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9PT0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnJlc3RhcnRBZnRlclN0b3AoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMpO1xuICAgICAgfSkpO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0KSB7XG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRoaXMuX2NoYW5uZWxDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZSAhPT0gQ2hhbm5lbFN0YXRlLlBsYXlpbmcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgICAgICB9LCBmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyk7XG4gICAgICB9KSk7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZChcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlc29sdXRpb24uc3Vic2NyaWJlKHJlc29sdXRpb24gPT4ge1xuICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkpIHtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb1RlbGVtZXRyeS5vblZpZGVvUmVzb2x1dGlvbkNoYW5nZXMocmVzb2x1dGlvbi50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQuc3Vic2NyaWJlKGJpdHJhdGVMaW1pdCA9PiB7XG4gICAgICAgIGlmIChiaXRyYXRlTGltaXQgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlKSB7XG4gICAgICAgICAgY29uc3QgZWxhcHNlZEluTWlsbGlzZWNvbmRzID0gRGF0ZS5ub3coKSAtIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxJbml0aWFsaXphdGlvbi5nZXRUaW1lKCk7XG4gICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLmxpbWl0Qml0cmF0ZShcbiAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSxcbiAgICAgICAgICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgIGJpdHJhdGVMaW1pdCxcbiAgICAgICAgICAgIEJpdHJhdGVTdGF0ZS5LZWVwLFxuICAgICAgICAgICAgQml0cmF0ZU1vZGUuTm9ybWFsXG4gICAgICAgICAgKVxuICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0Vycm9yIHdoaWxlIHNldHRpbmcgbGltaXQgYml0cmF0ZScsIGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW1PblVubW91bnQgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5kZXN0cm95U3RyZWFtT25Vbm1vdW50KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSwgJ2NsaWVudDp0ZXJtaW5hdGlvbi1vbi13aW5kb3ctdW5sb2FkJyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIEdsb2JhbFNjb3BlLnZhbHVlLmFkZFdpbmRvd0V2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIGRlc3Ryb3lTdHJlYW1PblVubW91bnQpO1xuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5yZW1vdmVXaW5kb3dFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBkZXN0cm95U3RyZWFtT25Vbm1vdW50KTtcbiAgICB9KSk7XG5cbiAgICB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBnZXQgdmlkZW9FbGVtZW50KCk6IEhUTUxWaWRlb0VsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuICB9XG5cbiAgc2V0IHZpZGVvRWxlbWVudCh2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZGVkZGF0YScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG5cbiAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldCkge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldC5zZXNzaW9uSWQgPSAnJztcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQuc3RyZWFtSWQgPSAnJztcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5wYXVzZSgpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnNyY09iamVjdCA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgIT09IENoYW5uZWxTdGF0ZS5Jbml0aWFsaXppbmcpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlID0gdmlkZW9FbGVtZW50O1xuXG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVmlkZW9NZXRhRGF0YUNoYW5nZWQoKTogdm9pZCB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKHZpZGVvRWxlbWVudCkge1xuICAgICAgaWYgKHRoaXMucmVzb2x1dGlvbi52YWx1ZS53aWR0aCAhPT0gdmlkZW9FbGVtZW50LnZpZGVvV2lkdGggfHwgdGhpcy5yZXNvbHV0aW9uLnZhbHVlLmhlaWdodCAhPT0gdmlkZW9FbGVtZW50LnZpZGVvSGVpZ2h0KSB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlc29sdXRpb24udmFsdWUgPSBuZXcgRGltZW5zaW9uKHZpZGVvRWxlbWVudC52aWRlb1dpZHRoLCB2aWRlb0VsZW1lbnQudmlkZW9IZWlnaHQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uLnZhbHVlID0gRGltZW5zaW9uLmVtcHR5O1xuICAgIH1cbiAgfVxuXG4gIGdldCB0b2tlbigpOiBFbmNvZGVkRWRnZVRva2VuIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlO1xuICB9XG5cbiAgc2V0IHRva2VuKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKSB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlID0gdG9rZW47XG4gICAgdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuRXhwaXJpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlKTtcbiAgICBjb25zdCBkaXNjb3ZlcnlVcmkgPSAoZWRnZVRva2VuLnVyaSB8fCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKS50b1N0cmluZygpO1xuXG4gICAgU0RLLnRlbmFuY3kudmFsdWUgPSBlZGdlVG9rZW4udGVuYW5jeSB8fCBTREsudGVuYW5jeS52YWx1ZTtcbiAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gZGlzY292ZXJ5VXJpO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShkaXNjb3ZlcnlVcmkpO1xuXG4gICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSA9IGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ2luc2VydGFibGUtc3RyZWFtcycpO1xuICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlID0gZWRnZVRva2VuLmNhcGFiaWxpdGllcy5pbmNsdWRlcygnZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMnKTtcblxuICAgIHRoaXMuY29uZmlndXJlRnJhbWVUaW1pbmdJbmZvcm1hdGlvbihlZGdlVG9rZW4uY2FwYWJpbGl0aWVzKTtcblxuICAgIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIGdldCBwZWVyQ29ubmVjdGlvbigpOiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IHN0YXRlKCk6IFJlYWRPbmx5U3ViamVjdDxDaGFubmVsU3RhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdGF0ZTtcbiAgfVxuXG4gIGdldCBleGlzdHMoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RXhpc3RzO1xuICB9XG5cbiAgZ2V0IGF1dG9NdXRlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUF1dG9NdXRlZDtcbiAgfVxuXG4gIGdldCBhdXRvUGF1c2VkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5QXV0b1BhdXNlZDtcbiAgfVxuXG4gIGdldCB0b2tlbkV4cGlyaW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5VG9rZW5FeHBpcmluZztcbiAgfVxuXG4gIGdldCBhdXRob3JpemVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5QXV0aG9yaXplZDtcbiAgfVxuXG4gIGdldCBvbmxpbmUoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlPbmxpbmU7XG4gIH1cblxuICBnZXQgbG9hZGluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUxvYWRpbmc7XG4gIH1cblxuICBnZXQgcGxheWluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVBsYXlpbmc7XG4gIH1cblxuICBnZXQgc3RhbmRieSgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0YW5kYnk7XG4gIH1cblxuICBnZXQgc3RvcHBlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0b3BwZWQ7XG4gIH1cblxuICBnZXQgdGFyZ2V0TGFnKCk6IFJlYWRPbmx5U3ViamVjdDxNaWxsaXNlY29uZD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVRhcmdldExhZztcbiAgfVxuXG4gIGdldCBsYWcoKTogUmVhZE9ubHlTdWJqZWN0PE1pbGxpc2Vjb25kIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TGFnO1xuICB9XG5cbiAgZ2V0IGJpdHJhdGVMaW1pdCgpOiBCaXRzUGVyU2Vjb25kIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlCaXRyYXRlTGltaXQudmFsdWU7XG4gIH1cblxuICBnZXQgcmVzb2x1dGlvbigpOiBSZWFkT25seVN1YmplY3Q8RGltZW5zaW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UmVzb2x1dGlvbjtcbiAgfVxuXG4gIGdldCBmYWlsdXJlQ291bnQoKTogUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUZhaWx1cmVDb3VudDtcbiAgfVxuXG4gIGdldCBlbmRQb2ludCgpOiBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RW5kUG9pbnQ7XG4gIH1cblxuICBnZXQgc3RyZWFtKCk6IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0cmVhbTtcbiAgfVxuXG4gIGdldCBzdHJlYW1JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZDtcbiAgfVxuXG4gIGdldCBydGNTdGF0aXN0aWNzKCk6IFJlYWRPbmx5U3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlSdGNTdGF0aXN0aWNzO1xuICB9XG5cbiAgZ2V0IG1lZGlhU3RyZWFtKCk6IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlNZWRpYVN0cmVhbTtcbiAgfVxuXG4gIGdldCBpc0ZyYW1lVGltaW5nSW5mb3JtYXRpb25FbmFibGVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5SXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uRW5hYmxlZDtcbiAgfVxuXG4gIGdldCBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbigpOiBSZWFkT25seVN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb247XG4gIH1cblxuICBnZXQgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uKCk6IFJlYWRPbmx5U3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uO1xuICB9XG5cbiAgc2V0Qml0cmF0ZUxpbWl0KGJpdHJhdGVMaW1pdDogQml0c1BlclNlY29uZCk6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmJpdHJhdGVMaW1pdC52YWx1ZSA9IGJpdHJhdGVMaW1pdDtcbiAgfVxuXG4gIGNsZWFyQml0cmF0ZUxpbWl0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQudmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlKSB7XG4gICAgICBjb25zdCBlbGFwc2VkSW5NaWxsaXNlY29uZHMgPSBEYXRlLm5vdygpIC0gdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbEluaXRpYWxpemF0aW9uLmdldFRpbWUoKTtcbiAgICAgIGNvbnN0IGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQgPSAwO1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLmxpbWl0Qml0cmF0ZShcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlLFxuICAgICAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHMsXG4gICAgICAgIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQsXG4gICAgICAgIEJpdHJhdGVTdGF0ZS5LZWVwLFxuICAgICAgICBCaXRyYXRlTW9kZS5SZXNldFxuICAgICAgKVxuICAgICAgICAudGhlbigoe3N0YXR1c30pID0+IHtcbiAgICAgICAgICBpZiAoc3RhdHVzID09PSAnb2snKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQudmFsdWUgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRXJyb3Igd2hpbGUgc2V0dGluZyBsaW1pdCBiaXRyYXRlJywgZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVRhcmdldExhZyhsYWc6IE1pbGxpc2Vjb25kKTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQudGFyZ2V0TGFnLnZhbHVlID0gbGFnO1xuICB9XG5cbiAgYXN5bmMgc3RvcChyZWFzb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGlmICghdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3RvcChyZWFzb24pO1xuXG4gICAgICAgIHJlc29sdmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuYWRkKHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnN1YnNjcmliZShpc1N0YXJ0aW5nID0+IHtcbiAgICAgICAgaWYgKCFpc1N0YXJ0aW5nKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzU3RvcChyZWFzb24pO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzU3RvcChyZWFzb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5wYXVzZSgpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnNyY09iamVjdCA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICB0aGlzLmNsZWFuVXBSZXNvdXJjZXMocmVhc29uKTtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQ7XG4gIH1cblxuICBhc3luYyByZXN1bWUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gdGhpcy5wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudCh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG11dGUoKTogdm9pZCB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKHZpZGVvRWxlbWVudCkge1xuICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICB1bm11dGUoKTogdm9pZCB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKHZpZGVvRWxlbWVudCkge1xuICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkaXNwb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnN0b3AoJ2NsaWVudDpjaGFubmVsLWRpc3Bvc2UnKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNEaXNwb3NlZCA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBnZXRVcmkodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBVUkwge1xuICAgIGNvbnN0IHVybCA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLnVyaTtcblxuICAgIGlmICh1cmwpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBkaXNjb3ZlciBVUkkgWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgcmV0dXJuIG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwoU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG4gIH1cblxuICBhc3luYyBzdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2hhbm5lbCB3YXMgYWxyZWFkeSBkaXNwb3NlZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgYWxyZWFkeSBzdGFydGluZywgc2tpcHBpbmcgc3RhcnQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLnByb2Nlc3NTdGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzU3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuU3RhcnRpbmc7XG4gICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKCdjbGllbnQ6c3RhcnQnKTtcblxuICAgIGNvbnN0IHRva2VuOiBFbmNvZGVkRWRnZVRva2VuID0gdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlO1xuICAgIGNvbnN0IGxpc3Rlbk9uU3RyZWFtU2V0dXAgPSB0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5Lmxpc3Rlbk9uU3RyZWFtU2V0dXAoKTtcblxuICAgIGlmICghRWRnZUF1dGhQYXJzZXIuaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW4pKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSB0b2tlbiBbJXNdJywgdG9rZW4pO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spIHtcbiAgICAgIGNvbnN0IHt2YWxpZCwgdmFsaWRhdGlvblJlc3VsdH0gPSBTdHJlYW1UcmFja1RyYW5zZm9ybS52YWxpZGF0ZU1lZGlhU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT4oJ3ZpZGVvJywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKTtcblxuICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IodmFsaWRhdGlvblJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKSB7XG4gICAgICBjb25zdCB7dmFsaWQsIHZhbGlkYXRpb25SZXN1bHR9ID0gU3RyZWFtVHJhY2tUcmFuc2Zvcm0udmFsaWRhdGVNZWRpYVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT4oJ2F1ZGlvJywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKTtcblxuICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IodmFsaWRhdGlvblJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rKSB7XG4gICAgICBjb25zdCB7dmFsaWQsIHZhbGlkYXRpb25SZXN1bHR9ID0gRW5jb2RlZFN0cmVhbVNpbmsudmFsaWRhdGVFbmNvZGVkU3RyZWFtU2luaygndmlkZW8nLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmspO1xuXG4gICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcih2YWxpZGF0aW9uUmVzdWx0KTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmspIHtcbiAgICAgIGNvbnN0IHt2YWxpZCwgdmFsaWRhdGlvblJlc3VsdH0gPSBFbmNvZGVkU3RyZWFtU2luay52YWxpZGF0ZUVuY29kZWRTdHJlYW1TaW5rKCdhdWRpbycsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZEF1ZGlvU3RyZWFtU2luayk7XG5cbiAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKHZhbGlkYXRpb25SZXN1bHQpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUgJiYgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQm90aCBpbnNlcnRhYmxlLXN0cmVhbXMgYW5kIGVuY29kZWQtaW5zZXJ0YWJsZS1zdHJlYW1zIGFyZSBlbmFibGVkLCBvbmx5IHVzZSBvbmUgb3IgdGhlIG90aGVyJyk7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2sgPSB0eXBlb2YgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sgPT09ICdmdW5jdGlvbic7XG4gICAgY29uc3QgaGFzRW5jb2RlZFN0cmVhbVNpbmsgPSB0eXBlb2YgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmsgPT09ICdmdW5jdGlvbic7XG5cbiAgICBpZiAoaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2sgJiYgaGFzRW5jb2RlZFN0cmVhbVNpbmspIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQm90aCBNZWRpYSBTdHJlYW0gVHJhY2sgdHJhbnNmb3JtIGNhbGxiYWNrIGFuZCBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgc2luayBmdW5jdGlvbiBmb3VuZCwgb25seSB1c2Ugb25lIHR5cGUgb3IgdGhlIG90aGVyJyk7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgIGlmICghRmVhdHVyZUVuYWJsZW1lbnQuaXNJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0Jyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBNZWRpYSBTdHJlYW0gVHJhY2sgQVBJJyk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjaykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0NyZWF0ZUNoYW5uZWxPcHRpb25zIHRyYW5zZm9ybSBjYWxsYmFjayBmdW5jdGlvbiBpcyBtaXNzaW5nOyBob3dldmVyLCBpbnNlcnRhYmxlLXN0cmVhbXMgaXMgZW5hYmxlZCcpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjaykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoYENyZWF0ZUNoYW5uZWxPcHRpb25zIHRyYW5zZm9ybSBjYWxsYmFjayBmdW5jdGlvbiBmb3VuZDsgaG93ZXZlciwgaW5zZXJ0YWJsZS1zdHJlYW1zIGlzIG5vdCBlbmFibGVkYCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgIGlmICghKEZlYXR1cmVFbmFibGVtZW50LmlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIHx8IEZlYXR1cmVFbmFibGVtZW50LmlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKSkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0Jyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgQVBJJyk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFoYXNFbmNvZGVkU3RyZWFtU2luaykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0NyZWF0ZUNoYW5uZWxPcHRpb25zIHRyYW5zZm9ybSBzaW5rIGZ1bmN0aW9uIGlzIG1pc3Npbmc7IGhvd2V2ZXIsIGVuY29kZWQtaW5zZXJ0YWJsZS1zdHJlYW1zIGlzIGVuYWJsZWQnKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaGFzRW5jb2RlZFN0cmVhbVNpbmspIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKGBDcmVhdGVDaGFubmVsT3B0aW9ucyB0cmFuc2Zvcm0gc2luayBmdW5jdGlvbiBmb3VuZDsgaG93ZXZlciwgZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMgaXMgbm90IGVuYWJsZWRgKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgY29uc3QgdXJpID0gdGhpcy5nZXRVcmkodG9rZW4pO1xuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgaWYgKHN0YXRlID09PSBDaGFubmVsU3RhdGUuRXJyb3IgfHwgc3RhdGUgPT09IENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nKSB7XG4gICAgICAgICAgRGlzY292ZXJ5LmNsZWFyQ2FjaGVkQ2xvc2VzdEVuZHBvaW50KHVyaSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjazogKCkgPT4gUHJvbWlzZTx2b2lkPiA9ICgpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKTogdm9pZCA9PiB7XG4gICAgICAvLyBOZWVkIHRvIHNldCBpc1N0YXJ0aW5nIHRvIGZhbHNlIGFuZCBjYWxsIGhhbmRsZVN0cmVhbUZhaWx1cmUgaWYgc3RyZWFtIG1vbml0b3JzIGZvdW5kIGFuIGlzc3VlXG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gcmVzb2x2ZSh0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc3RyZWFtUGxheWVyID0gU3RyZWFtRmFjdG9yeS5jcmVhdGUodG9rZW4sIHRoaXMuX2NoYW5uZWxDb250ZXh0LCB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQsIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2spO1xuXG4gICAgaWYgKCFzdHJlYW1QbGF5ZXIpIHtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyZWFtUGxheWVyLnN0YXJ0KFxuICAgICAgdXJpLFxuICAgICAgdG9rZW4sXG4gICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLFxuICAgICAgdGhpcy5wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudC5iaW5kKHRoaXMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLmZhaWwoKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUrKztcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5vbmxpbmUudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmNsZWFuVXBSZXNvdXJjZXMoJ2NsaWVudDpjbGVhbnVwLWFmdGVyLWZhaWxlZC1zZXR1cCcpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNsaWVudFN0YXJ0RXJyb3I7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3RhcnQgY2hhbm5lbCcsIGUpO1xuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPT09IENoYW5uZWxTdGF0ZS5QbGF5aW5nIHx8ICFTREsuYXV0b21hdGljUmV0cnlPbkZhaWx1cmUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUnLCBlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCB0aGlzLmdldFJldHJ5SW50ZXJ2YWwoKSk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc3RhcnRBZnRlclN0b3AoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3N0YXRlQ29udGV4dC5pc0Rpc3Bvc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5uZWwgd2FzIGFscmVhZHkgZGlzcG9zZWQnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudCh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnN0YXJ0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHBsYXkoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbWVkaWFTdHJlYW0gPSB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWU7XG5cbiAgICBpZiAoIW1lZGlhU3RyZWFtKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGFydCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50KG1lZGlhU3RyZWFtKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmV0cnlJbnRlcnZhbCgpOiBudW1iZXIge1xuICAgIHN3aXRjaCAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpIHtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkluaXRpYWxpemluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0YW5kQnk6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5PZmZsaW5lOlxuICAgICAgICByZXR1cm4gc3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvUmVzdHJpY3RlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkdlb0Jsb2NrZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdG9wcGVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhcnRpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QbGF5aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUGF1c2VkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29ubmVjdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjpcbiAgICAgICAgLy8gRmlyc3QgYW5kIHNlY29uZCBhdHRlbXB0IGZhc3QsIGFmdGVyIHRoYXQgZXhwb25lbnRpYWwgd2l0aCBiYWNrb2ZmIGludGVydmFsXG4gICAgICAgIHJldHVybiB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYuZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudCh0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlU3RyZWFtRmFpbHVyZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBzd2l0Y2ggKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlKSB7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlJlY29ubmVjdGluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0YW5kQnk6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5PZmZsaW5lOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb3ZlcmluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNvbm5lY3Rpb25FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNsaWVudFN0YXJ0RXJyb3I6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdSZXRyeSBzdGFydCB3aXRoIGluaXRpYWwgc3RhdGUgWyVzXSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUsIENoYW5uZWxTdGF0ZVt0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZV0pO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyB1bmF1dGhvcml6ZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgcHJvdmlkZSBhIG5ldyB0b2tlbiBhbmQgaW52b2tlIHN0YXJ0KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBnZW8gcmVzdHJpY3RlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkdlb0Jsb2NrZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIGdlbyBibG9ja2VkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIHByb3ZpZGUgYSBuZXcgdG9rZW4gYW5kIGludm9rZSBzdGFydCgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RvcHBlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgc3RvcHBlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuSW5pdGlhbGl6aW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBhbHJlYWR5IGluaXRpYWxpemluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QbGF5aW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBwbGF5aW5nLCBza2lwcGluZyByZXRyeSBvZiBzdGFydCcpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBhdXNlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgcGF1c2VkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIGludm9rZSBwbGF5KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFydGluZzpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgYWxyZWFkeSBzdGFydGluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHN0b3BwZWQgZHVlIHRvIHVuc3VwcG9ydGVkIGZlYXR1cmUsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgc3RvcHBlZCBkdWUgdG8gY29uZmlndXJhdGlvbiBlcnJvciwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFuVXBSZXNvdXJjZXMocmVhc29uOiBzdHJpbmcgPSBkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24pOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICBjb25zdCBwZWVyQ29ubmVjdGlvbiA9IHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZTtcblxuICAgIGlmIChwZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gbnVsbDtcbiAgICAgIHBlZXJDb25uZWN0aW9uLmNsb3NlKCk7XG4gICAgICBwZWVyQ29ubmVjdGlvbi5kaXNwb3NlKCk7XG5cbiAgICAgIGlmIChTREsuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCAmJiAhKEZlYXR1cmVFbmFibGVtZW50LmlzTW9iaWxlICYmIFNESy5za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpKSB7XG4gICAgICAgIEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb24oKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUuZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpO1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0b3BwZWQudmFsdWUgPSB0cnVlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YW5kYnkudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5kZXN0cm95U3RyZWFtKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSwgcmVhc29uKVxuICAgICAgICAudGhlbigoe3N0YXR1c30pID0+IHtcbiAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBGYWlsZWQgdG8gZGVzdHJveSBzdHJlYW0gd2l0aCByZWFzb24gWyVzXScsIHRoaXMuc3RyZWFtSWQsIHN0YXR1cyk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBEZXN0cm95ZWQgc3RyZWFtIHdpdGggcmVhc29uIFslc10nLCB0aGlzLnN0cmVhbUlkLCBzdGF0dXMpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdbJXNdIEZhaWxlZCB0byBkZXN0cm95IHN0cmVhbScsIHRoaXMuc3RyZWFtSWQsIGUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy52aWRlb0VsZW1lbnQgJiYgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldCkge1xuICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zZXNzaW9uSWQgPSAnJztcbiAgICAgIHRoaXMudmlkZW9FbGVtZW50LmRhdGFzZXQuc3RyZWFtSWQgPSAnJztcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gIH1cblxuICBwcml2YXRlIGNvbmZpZ3VyZUZyYW1lVGltaW5nSW5mb3JtYXRpb24oY2FwYWJpbGl0aWVzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGNvbnN0IGZyYW1lVGltaW5nSW5mb3JtYXRpb25DYXBhYmlsaXR5ID0gY2FwYWJpbGl0aWVzLmZpbmQoY2FwYWJpbGl0eSA9PiBjYXBhYmlsaXR5LnN0YXJ0c1dpdGgoJ2ZyYW1lLXRpbWluZy1pbmZvcm1hdGlvbj0nKSk7XG5cbiAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZWNvZGUudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZXN0YW1wcy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LmlzRW5hYmxlZC52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKCFmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ2FwYWJpbGl0eSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2FibGluZyBmcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gYXMgbm8gY2FwYWJpbGl0eSB3YXMgZm91bmQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghRmVhdHVyZUVuYWJsZW1lbnQuaXNDaGFubmVsRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1cHBvcnRlZCkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2FibGluZyBmcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gYXMgdGhlIGVudmlyb25tZW50IGRvZXMgbm90IHN1cHBvcnQgaXQgWyVzXScsIGZyYW1lVGltaW5nSW5mb3JtYXRpb25DYXBhYmlsaXR5KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZyYW1lVGltaW5nSW5mb3JtYXRpb25DYXBhYmlsaXR5LnNwbGl0KCc9JylbMV1cbiAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAubWFwKG9wdGlvbiA9PiBvcHRpb24udHJpbSgpKVxuICAgICAgLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgc3dpdGNoIChvcHRpb24pIHtcbiAgICAgICAgICBjYXNlICd0aW1lY29kZSc6XG4gICAgICAgICAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZWNvZGUudmFsdWUgPSB0cnVlO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICd0aW1lc3RhbXBzJzpcbiAgICAgICAgICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lc3RhbXBzLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdJZ25vcmluZyB1bmtub3duIGZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBvcHRpb24gWyVzXScsIG9wdGlvbik7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gY29uZmlndXJhdGlvbiBbKHRpbWVjb2RlIFslc10sIHRpbWVzdGFtcHMgWyVzXSldJywgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVjb2RlLnZhbHVlLCB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZXN0YW1wcy52YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50KG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHZpZGVvRWxlbWVudCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcblxuICAgIGlmICghdmlkZW9FbGVtZW50KSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQ7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlKSB7XG4gICAgICB2aWRlb0VsZW1lbnQuc3JjT2JqZWN0ID0gbWVkaWFTdHJlYW07XG4gICAgfVxuXG4gICAgY29uc3QgcGxheVByb21pc2UgPSB2aWRlb0VsZW1lbnQucGxheSgpO1xuXG4gICAgaWYgKHBsYXlQcm9taXNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IHRydWU7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QbGF5aW5nO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHBsYXlQcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBsYXlpbmc7XG4gICAgfSkuY2F0Y2goZSA9PiB7XG4gICAgICBjb25zdCBoYXNBdWRpb1RyYWNrID0gISFtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5maWx0ZXIodHJhY2sgPT4ge1xuICAgICAgICByZXR1cm4gdHJhY2sua2luZCA9PT0gJ2F1ZGlvJztcbiAgICAgIH0pLmxlbmd0aDtcbiAgICAgIGNvbnN0IGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmID0gIVNESy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcblxuICAgICAgaWYgKGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmIHx8IHZpZGVvRWxlbWVudC5tdXRlZCB8fCAhaGFzQXVkaW9UcmFjaykge1xuICAgICAgICB2aWRlb0VsZW1lbnQuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGF1c2VkO1xuXG4gICAgICAgIGlmIChhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZU9mZikge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFBhdXNlZCB2aWRlbyBhZnRlciBwbGF5IGZhaWxlZC4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkLicsIHRoaXMuc3RyZWFtSWQsIGUpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhc0F1ZGlvVHJhY2spIHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gcGxheSB2aWRlby4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkLicsIHRoaXMuc3RyZWFtSWQsIGUpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHBsYXkgbXV0ZWQgdmlkZW8uIE1hbnVhbCB1c2VyIGFjdGlvbiByZXF1aXJlZC4nLCB0aGlzLnN0cmVhbUlkLCBlKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZpZGVvRWxlbWVudC5tdXRlZCA9IHRydWU7XG5cbiAgICAgIHJldHVybiB2aWRlb0VsZW1lbnQucGxheSgpXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBQbGF5ZWQgdmlkZW8gYWZ0ZXIgYXV0byBtdXRpbmcuIE1hbnVhbCB1c2VyIGFjdGlvbiByZXF1aXJlZCB0byB1bm11dGUuJywgdGhpcy5zdHJlYW1JZCk7XG5cbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGxheWluZztcbiAgICAgICAgfSkuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gZmFsc2U7XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gcGxheSB2aWRlby4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkLicsIHRoaXMuc3RyZWFtSWQsIGUpO1xuXG4gICAgICAgICAgdmlkZW9FbGVtZW50LnNyY09iamVjdCA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QYXVzZWQ7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmVudW0gQ2hhbm5lbFN0YXRlIHtcbiAgSW5pdGlhbGl6aW5nID0gMCxcbiAgT2ZmbGluZSA9IDEsXG4gIFN0YXJ0aW5nID0gMixcbiAgUGF1c2VkID0gMyxcbiAgUGxheWluZyA9IDQsXG4gIFJlY292ZXJpbmcgPSA1LFxuICBSZWNvbm5lY3RpbmcgPSA2LFxuICBTdGFuZEJ5ID0gNyxcbiAgU3RvcHBlZCA9IDgsXG4gIFVuYXV0aG9yaXplZCA9IDksXG4gIEdlb1Jlc3RyaWN0ZWQgPSAxMCxcbiAgR2VvQmxvY2tlZCA9IDExLFxuICBVbnN1cHBvcnRlZEZlYXR1cmUgPSAxMixcbiAgQ29uZmlndXJhdGlvbkVycm9yID0gMTMsXG4gIFRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvciA9IDE0LFxuICBDb25uZWN0aW9uRXJyb3IgPSAxNSxcbiAgQ2xpZW50U3RhcnRFcnJvciA9IDE2LFxuICBFcnJvciA9IDE3XG59XG5cbmV4cG9ydCBkZWZhdWx0IENoYW5uZWxTdGF0ZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtNaWxsaXNlY29uZH0gZnJvbSAnLi4vLi4vdW5pdHMvVW5pdHMnO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQge0lFbmNvZGVkU3RyZWFtU2lua30gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vRW5jb2RlZFN0cmVhbVNpbmsnO1xuaW1wb3J0IHtJU3RyZWFtVHJhY2tUcmFuc2Zvcm19IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL1N0cmVhbVRyYWNrVHJhbnNmb3JtJztcbmltcG9ydCBDaGFubmVsLCB7Q2hhbm5lbE9wdGlvbnN9IGZyb20gJy4vQ2hhbm5lbCc7XG5pbXBvcnQge0lPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrfSBmcm9tICcuL0lPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrJztcbmltcG9ydCB7SU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrfSBmcm9tICcuL0lPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayc7XG5cbmV4cG9ydCB0eXBlIENyZWF0ZUNoYW5uZWxPcHRpb25zID0ge1xuICB2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQ7XG4gIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuO1xuICB0YXJnZXRMYWc/OiBNaWxsaXNlY29uZDtcbiAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaz86IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPjtcbiAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaz86IElTdHJlYW1UcmFja1RyYW5zZm9ybTxBdWRpb0RhdGE+O1xuICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rPzogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPjtcbiAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luaz86IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGFubmVscyB7XG4gIHN0YXRpYyBjcmVhdGVDaGFubmVsKG9wdGlvbnM6IENyZWF0ZUNoYW5uZWxPcHRpb25zKTogQ2hhbm5lbCB7XG4gICAgaWYgKCFTREsuaW5pdGlhbGl6ZWQudmFsdWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU0RLIGlzIG5vdCBsb2FkZWQuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY2hhbm5lbE9wdGlvbnM6IENoYW5uZWxPcHRpb25zID0ge1xuICAgICAgdGFyZ2V0TGFnOiBvcHRpb25zLnRhcmdldExhZyxcbiAgICAgIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IG9wdGlvbnMudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayxcbiAgICAgIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IG9wdGlvbnMuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayxcbiAgICAgIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IG9wdGlvbnMuZW5jb2RlZFZpZGVvU3RyZWFtU2luayxcbiAgICAgIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IG9wdGlvbnMuZW5jb2RlZEF1ZGlvU3RyZWFtU2lua1xuICAgIH07XG4gICAgY29uc3Qgb3B0aW9uc1dpdGhSZWFsVGltZVN1YnNjcmliZUNhbGxiYWNrczogQ2hhbm5lbE9wdGlvbnMgJiB7XG4gICAgICBvblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrPzogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s7XG4gICAgICBvblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz86IElPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaztcbiAgICB9ID0gb3B0aW9ucztcblxuICAgIGlmIChvcHRpb25zV2l0aFJlYWxUaW1lU3Vic2NyaWJlQ2FsbGJhY2tzLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2spIHtcbiAgICAgIGNoYW5uZWxPcHRpb25zLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2sgPSBvcHRpb25zV2l0aFJlYWxUaW1lU3Vic2NyaWJlQ2FsbGJhY2tzLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnNXaXRoUmVhbFRpbWVTdWJzY3JpYmVDYWxsYmFja3Mub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2spIHtcbiAgICAgIGNoYW5uZWxPcHRpb25zLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrID0gb3B0aW9uc1dpdGhSZWFsVGltZVN1YnNjcmliZUNhbGxiYWNrcy5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaztcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IENoYW5uZWwob3B0aW9ucy52aWRlb0VsZW1lbnQsIG9wdGlvbnMudG9rZW4sIGNoYW5uZWxPcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGlzRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRmVhdHVyZUVuYWJsZW1lbnQuaXNDaGFubmVsRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1cHBvcnRlZDtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDaGFubmVscyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgQ2hhbm5lbFN0YXRlIGZyb20gJy4uL2NoYW5uZWxzL0NoYW5uZWxTdGF0ZSc7XG5pbXBvcnQgRGltZW5zaW9uIGZyb20gJy4uLy4uL3ZpZGVvL0RpbWVuc2lvbic7XG5pbXBvcnQgRW5kUG9pbnQsIHtJU3RyZWFtLCBTdWJzY3JpYmVTdGF0dXN9IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQge0lPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrfSBmcm9tICcuLi9jaGFubmVscy9JT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayc7XG5pbXBvcnQge0lPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFja30gZnJvbSAnLi4vY2hhbm5lbHMvSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrJztcbmltcG9ydCBWaWRlb1RlbGVtZXRyeSBmcm9tICcuLi8uLi92aWRlby9WaWRlb1RlbGVtZXRyeSc7XG5pbXBvcnQge0lSdGNNb25pdG9yU3RhdGlzdGljLCBJUnRjU3RhdGlzdGljfSBmcm9tICcuLi8uLi9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IHtCaXRzUGVyU2Vjb25kLCBNaWxsaXNlY29uZH0gZnJvbSAnLi4vLi4vdW5pdHMvVW5pdHMnO1xuXG5jb25zdCBkZWZhdWx0VGFyZ2V0TGFnID0gMDtcblxuZXhwb3J0IHR5cGUgQ2hhbm5lbENvbnRleHRPcHRpb25zID0ge1xuICB0YXJnZXRMYWc/OiBudW1iZXI7XG4gIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s/OiBJT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgb25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/OiBJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGFubmVsQ29udGV4dCB7XG4gIGNoYW5uZWxJbml0aWFsaXphdGlvbjogRGF0ZTtcbiAgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICBjaGFubmVsRGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICByZW5kZXJlckRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdDtcbiAgdmlkZW9FbGVtZW50OiBTdWJqZWN0PEhUTUxWaWRlb0VsZW1lbnQgfCBudWxsPjtcbiAgc3RhdGU6IFN1YmplY3Q8Q2hhbm5lbFN0YXRlPjtcbiAgZXhpc3RzOiBTdWJqZWN0PGJvb2xlYW4gfCBudWxsPjtcbiAgYXV0b011dGVkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBhdXRvUGF1c2VkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBhdXRob3JpemVkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBvbmxpbmU6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGxvYWRpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHBsYXlpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHN0YW5kYnk6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHN0b3BwZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHRhcmdldExhZzogU3ViamVjdDxNaWxsaXNlY29uZD47XG4gIGxhZzogU3ViamVjdDxNaWxsaXNlY29uZCB8IHVuZGVmaW5lZD47XG4gIGJpdHJhdGVMaW1pdDogU3ViamVjdDxCaXRzUGVyU2Vjb25kPjtcbiAgcmVzb2x1dGlvbjogU3ViamVjdDxEaW1lbnNpb24+O1xuICBmYWlsdXJlQ291bnQ6IFN1YmplY3Q8bnVtYmVyPjtcbiAgZW5kUG9pbnQ6IFN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPjtcbiAgb25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjazogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2sgfCBudWxsO1xuICBvblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjazogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrIHwgbnVsbDtcbiAgc3RyZWFtOiBTdWJqZWN0PElTdHJlYW0gfCBudWxsPjtcbiAgcnRjU3RhdGlzdGljczogU3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+O1xuICB2aWRlb1RlbGVtZXRyeTogVmlkZW9UZWxlbWV0cnkgfCBudWxsO1xuICBydGNBdWRpb1N0YXRpc3RpYzogSVJ0Y1N0YXRpc3RpYyB8IG51bGw7XG4gIHJ0Y1ZpZGVvU3RhdGlzdGljOiBJUnRjU3RhdGlzdGljIHwgbnVsbDtcbiAgY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IENoYW5uZWxDb250ZXh0T3B0aW9ucykge1xuICAgIHRoaXMuZGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLmNoYW5uZWxEaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIHRoaXMucmVuZGVyZXJEaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIHRoaXMuY2hhbm5lbEluaXRpYWxpemF0aW9uID0gbmV3IERhdGUoKTtcbiAgICB0aGlzLnZpZGVvRWxlbWVudCA9IG5ldyBTdWJqZWN0PEhUTUxWaWRlb0VsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnN0YXRlID0gbmV3IFN1YmplY3Q8Q2hhbm5lbFN0YXRlPihDaGFubmVsU3RhdGUuSW5pdGlhbGl6aW5nKTtcbiAgICB0aGlzLmV4aXN0cyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLmF1dG9NdXRlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmF1dG9QYXVzZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5hdXRob3JpemVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgdGhpcy5vbmxpbmUgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLmxvYWRpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5wbGF5aW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuc3RhbmRieSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnN0b3BwZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy50YXJnZXRMYWcgPSBuZXcgU3ViamVjdDxNaWxsaXNlY29uZD4ob3B0aW9ucz8udGFyZ2V0TGFnID8/IGRlZmF1bHRUYXJnZXRMYWcpO1xuICAgIHRoaXMubGFnID0gbmV3IFN1YmplY3Q8TWlsbGlzZWNvbmQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5iaXRyYXRlTGltaXQgPSBuZXcgU3ViamVjdDxCaXRzUGVyU2Vjb25kPigwKTtcbiAgICB0aGlzLnJlc29sdXRpb24gPSBuZXcgU3ViamVjdDxEaW1lbnNpb24+KERpbWVuc2lvbi5lbXB0eSk7XG4gICAgdGhpcy5mYWlsdXJlQ291bnQgPSBuZXcgU3ViamVjdDxudW1iZXI+KDApO1xuICAgIHRoaXMuZW5kUG9pbnQgPSBuZXcgU3ViamVjdDxFbmRQb2ludCB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayA9IG9wdGlvbnM/Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2sgPz8gbnVsbDtcbiAgICB0aGlzLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrID0gb3B0aW9ucz8ub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2sgPz8gbnVsbDtcbiAgICB0aGlzLnN0cmVhbSA9IG5ldyBTdWJqZWN0PElTdHJlYW0gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnJ0Y1N0YXRpc3RpY3MgPSBuZXcgU3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMudmlkZW9UZWxlbWV0cnkgPSBudWxsO1xuICAgIHRoaXMucnRjQXVkaW9TdGF0aXN0aWMgPSBudWxsO1xuICAgIHRoaXMucnRjVmlkZW9TdGF0aXN0aWMgPSBudWxsO1xuICAgIHRoaXMuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0ID0gMDtcbiAgfVxuXG4gIGdldCBzdHJlYW1JZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0cmVhbSA9IHRoaXMuc3RyZWFtLnZhbHVlO1xuXG4gICAgaWYgKCFzdHJlYW0pIHtcbiAgICAgIHJldHVybiAnLSc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmVhbS5zdHJlYW1JZDtcbiAgfVxuXG4gIGFwcGx5U3RhdHVzKHN0YXR1czogU3Vic2NyaWJlU3RhdHVzKTogdm9pZCB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgY2FzZSAnZ2VvLXJlc3RyaWN0ZWQnOlxuICAgICAgY2FzZSAnZ2VvLWJsb2NrZWQnOlxuICAgICAgICB0aGlzLmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgICAgICB0aGlzLnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RyZWFtLnZhbHVlID0gbnVsbDtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICduby1zdHJlYW0nOlxuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgdGhpcy5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgICAgICB0aGlzLnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RyZWFtLnZhbHVlID0gbnVsbDtcblxuICAgICAgICByZXR1cm47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSsrO1xuICAgICAgICB0aGlzLnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RyZWFtLnZhbHVlID0gbnVsbDtcblxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgYXBwbHlTZXNzaW9uQW5kU3RyZWFtUHJvcGVydGllc1RvVmlkZW9FbGVtZW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZpZGVvRWxlbWVudC52YWx1ZSAmJiB0aGlzLnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0KSB7XG4gICAgICB0aGlzLnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0LnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgICB0aGlzLnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0LnN0cmVhbUlkID0gdGhpcy5zdHJlYW1JZDtcbiAgICB9XG4gIH1cblxuICBtYXBTdWJzY3JpYmVTdGF0dXNUb0NoYW5uZWxTdGF0dXMoc3RhdHVzOiBTdWJzY3JpYmVTdGF0dXMpOiBDaGFubmVsU3RhdGUge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuU3RhcnRpbmc7XG4gICAgICBjYXNlICduby1zdHJlYW0nOlxuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5TdGFuZEJ5O1xuICAgICAgY2FzZSAnZ2VvLXJlc3RyaWN0ZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkdlb1Jlc3RyaWN0ZWQ7XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuR2VvQmxvY2tlZDtcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmc7XG4gICAgICBjYXNlICdmb3JiaWRkZW4tdGFnJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICBjYXNlICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5FcnJvcjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHN0YXR1cyk7XG4gICAgfVxuICB9XG5cbiAgbWFwU3Vic2NyaWJlU3RhdHVzVG9FeGlzdHMoc3RhdHVzOiBTdWJzY3JpYmVTdGF0dXMpOiBib29sZWFuIHwgbnVsbCB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgIGNhc2UgJ25vLXN0cmVhbSc6XG4gICAgICBjYXNlICdnZW8tcmVzdHJpY3RlZCc6XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICBjYXNlICdmb3JiaWRkZW4tdGFnJzpcbiAgICAgIGNhc2UgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgY2FzZSAndGltZW91dCc6XG4gICAgICBjYXNlICdyYXRlLWxpbWl0ZWQnOlxuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhpc3RzLnZhbHVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge0RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLCBSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb259IGZyb20gJy4uL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCB7XG4gIHB1YmxpYyByZWFkb25seSBzaG91bGRFeHRyYWN0VGltZWNvZGU6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHB1YmxpYyByZWFkb25seSBzaG91bGRFeHRyYWN0VGltZXN0YW1wczogU3ViamVjdDxib29sZWFuPjtcbiAgcHVibGljIHJlYWRvbmx5IGlzRW5hYmxlZDogU3ViamVjdDxib29sZWFuPjtcbiAgcHVibGljIHJlYWRvbmx5IGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG4gIHB1YmxpYyByZWFkb25seSByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb246IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zaG91bGRFeHRyYWN0VGltZWNvZGUgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zaG91bGRFeHRyYWN0VGltZXN0YW1wcyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmlzRW5hYmxlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uID0gbmV3IFN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IG5ldyBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KG51bGwpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGVlckNvbm5lY3Rpb25Db250ZXh0IHtcbiAgbWVkaWFTdHJlYW06IFN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPjtcbiAgcGVlckNvbm5lY3Rpb246IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD47XG4gIHBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm1lZGlhU3RyZWFtID0gbmV3IFN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnBlZXJDb25uZWN0aW9uID0gbmV3IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RhdGVDb250ZXh0IHtcbiAgaXNTdGFydGluZzogU3ViamVjdDxib29sZWFuPjtcbiAgaXNEaXNwb3NlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmlzU3RhcnRpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5pc0Rpc3Bvc2VkID0gZmFsc2U7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge1ZpZGVvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYyc7XG5pbXBvcnQge0F1ZGlvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlYyc7XG5pbXBvcnQge0lTdHJlYW1UcmFja1RyYW5zZm9ybX0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0nO1xuaW1wb3J0IHtJRW5jb2RlZFN0cmVhbVNpbmt9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rJztcbmltcG9ydCBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9NZXNzYWdlUm91dGVyJztcblxuZXhwb3J0IHR5cGUgU3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMgPSB7XG4gIGhhc0luc2VydGFibGVTdHJlYW1zOiBib29sZWFuO1xuICBoYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IGJvb2xlYW47XG4gIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT4gfCB1bmRlZmluZWQ7XG4gIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4gfCB1bmRlZmluZWQ7XG4gIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT4gfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2sgPSB7XG4gIG1lZGlhU3RyZWFtVHJhY2s6IE1lZGlhU3RyZWFtVHJhY2sgfCBudWxsO1xuICByZWNlaXZlcjogUlRDUnRwUmVjZWl2ZXIgfCBudWxsO1xuICBtaWQ6IHN0cmluZyB8IG51bGw7XG4gIGNvZGVjOiBWaWRlb0NvZGVjIHwgQXVkaW9Db2RlYyB8IG51bGw7XG4gIHRyYW5zZm9ybVBpcGVsaW5lV29ya2VyOiBXb3JrZXIgfCBudWxsO1xuICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIHwgbnVsbDtcbiAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogc3RyaW5nW107XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IHtcbiAgcmVhZG9ubHkgaGFzSW5zZXJ0YWJsZVN0cmVhbXM6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IGhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtczogU3ViamVjdDxib29sZWFuPjtcbiAgcmVhZG9ubHkgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+IHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgYXVkaW9UcmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrO1xuICByZWFkb25seSB2aWRlb1RyYWNrOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2s7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogU3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMpIHtcbiAgICB0aGlzLmhhc0luc2VydGFibGVTdHJlYW1zID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4ob3B0aW9ucy5oYXNJbnNlcnRhYmxlU3RyZWFtcyk7XG4gICAgdGhpcy5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPSBuZXcgU3ViamVjdDxib29sZWFuPihvcHRpb25zLmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyk7XG4gICAgdGhpcy52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrID0gb3B0aW9ucy52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrO1xuICAgIHRoaXMuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayA9IG9wdGlvbnMuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaztcbiAgICB0aGlzLmVuY29kZWRWaWRlb1N0cmVhbVNpbmsgPSBvcHRpb25zLmVuY29kZWRWaWRlb1N0cmVhbVNpbms7XG4gICAgdGhpcy5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rID0gb3B0aW9ucy5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rO1xuICAgIHRoaXMuYXVkaW9UcmFjayA9IHtcbiAgICAgIG1lZGlhU3RyZWFtVHJhY2s6IG51bGwsXG4gICAgICByZWNlaXZlcjogbnVsbCxcbiAgICAgIG1pZDogbnVsbCxcbiAgICAgIGNvZGVjOiBudWxsLFxuICAgICAgdHJhbnNmb3JtUGlwZWxpbmVXb3JrZXI6IG51bGwsXG4gICAgICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBudWxsLFxuICAgICAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogW11cbiAgICB9O1xuICAgIHRoaXMudmlkZW9UcmFjayA9IHtcbiAgICAgIG1lZGlhU3RyZWFtVHJhY2s6IG51bGwsXG4gICAgICByZWNlaXZlcjogbnVsbCxcbiAgICAgIG1pZDogbnVsbCxcbiAgICAgIGNvZGVjOiBudWxsLFxuICAgICAgdHJhbnNmb3JtUGlwZWxpbmVXb3JrZXI6IG51bGwsXG4gICAgICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBudWxsLFxuICAgICAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogW11cbiAgICB9O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9rZW5Db250ZXh0IHtcbiAgdG9rZW46IFN1YmplY3Q8RW5jb2RlZEVkZ2VUb2tlbj47XG4gIHRva2VuRXhwaXJpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG5cbiAgY29uc3RydWN0b3IodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pIHtcbiAgICB0aGlzLnRva2VuID0gbmV3IFN1YmplY3Q8RW5jb2RlZEVkZ2VUb2tlbj4odG9rZW4pO1xuICAgIHRoaXMudG9rZW5FeHBpcmluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZW51bSBBdWRpb0NvZGVjIHtcbiAgT1BVUyA9IDAsXG4gIEFBQyA9IDFcbn1cblxuZXhwb3J0IHR5cGUgQXVkaW9Db2RlY1R5cGUgPSAnT1BVUycgfCAnQUFDJzsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtBdWRpb0NvZGVjLCBBdWRpb0NvZGVjVHlwZX0gZnJvbSAnLi9BdWRpb0NvZGVjJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi8uLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXVkaW9Db2RlY01hcHBpbmcge1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRBdWRpb0NvZGVjVG9BdWRpb0NvZGVjVHlwZShhdWRpb0NvZGVjOiBBdWRpb0NvZGVjKTogQXVkaW9Db2RlY1R5cGUge1xuICAgIHN3aXRjaCAoYXVkaW9Db2RlYykge1xuICAgICAgY2FzZSBBdWRpb0NvZGVjLk9QVVM6XG4gICAgICAgIHJldHVybiAnT1BVUyc7XG4gICAgICBjYXNlIEF1ZGlvQ29kZWMuQUFDOlxuICAgICAgICByZXR1cm4gJ0FBQyc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShhdWRpb0NvZGVjKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRBdWRpb0NvZGVjVHlwZVRvQXVkaW9Db2RlYyhhdWRpb0NvZGVjVHlwZTogQXVkaW9Db2RlY1R5cGUpOiBBdWRpb0NvZGVjIHtcbiAgICBjb25zdCBhdWRpb0NvZGVjU3RyaW5nID0gYXVkaW9Db2RlY1R5cGUudG9VcHBlckNhc2UoKSBhcyBrZXlvZiB0eXBlb2YgQXVkaW9Db2RlYztcblxuICAgIHN3aXRjaCAoYXVkaW9Db2RlY1N0cmluZykge1xuICAgICAgY2FzZSAnT1BVUyc6XG4gICAgICAgIHJldHVybiBBdWRpb0NvZGVjLk9QVVM7XG4gICAgICBjYXNlICdBQUMnOlxuICAgICAgICByZXR1cm4gQXVkaW9Db2RlYy5BQUM7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShhdWRpb0NvZGVjU3RyaW5nKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGVudW0gVmlkZW9Db2RlYyB7XG4gIEgyNjQgPSAwLFxuICBWUDggPSAxLFxuICBWUDkgPSAyXG59XG5cbmV4cG9ydCB0eXBlIFZpZGVvQ29kZWNUeXBlID0gJ0gyNjQnIHwgJ1ZQOCcgfCAnVlA5JzsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uLy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IHtWaWRlb0NvZGVjLCBWaWRlb0NvZGVjVHlwZX0gZnJvbSAnLi9WaWRlb0NvZGVjJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmlkZW9Db2RlY01hcHBpbmcge1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRWaWRlb0NvZGVjVG9WaWRlb0NvZGVjVHlwZSh2aWRlb0NvZGVjOiBWaWRlb0NvZGVjKTogVmlkZW9Db2RlY1R5cGUge1xuICAgIHN3aXRjaCAodmlkZW9Db2RlYykge1xuICAgICAgY2FzZSBWaWRlb0NvZGVjLkgyNjQ6XG4gICAgICAgIHJldHVybiAnSDI2NCc7XG4gICAgICBjYXNlIFZpZGVvQ29kZWMuVlA4OlxuICAgICAgICByZXR1cm4gJ1ZQOCc7XG4gICAgICBjYXNlIFZpZGVvQ29kZWMuVlA5OlxuICAgICAgICByZXR1cm4gJ1ZQOSc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh2aWRlb0NvZGVjKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRWaWRlb0NvZGVjVHlwZVRvVmlkZW9Db2RlYyh2aWRlb0NvZGVjVHlwZTogVmlkZW9Db2RlY1R5cGUpOiBWaWRlb0NvZGVjIHtcbiAgICBjb25zdCB2aWRlb0NvZGVjU3RyaW5nID0gdmlkZW9Db2RlY1R5cGUudG9VcHBlckNhc2UoKSBhcyBrZXlvZiB0eXBlb2YgVmlkZW9Db2RlYztcblxuICAgIHN3aXRjaCAodmlkZW9Db2RlY1N0cmluZykge1xuICAgICAgY2FzZSAnSDI2NCc6XG4gICAgICAgIHJldHVybiBWaWRlb0NvZGVjLkgyNjQ7XG4gICAgICBjYXNlICdWUDgnOlxuICAgICAgICByZXR1cm4gVmlkZW9Db2RlYy5WUDg7XG4gICAgICBjYXNlICdWUDknOlxuICAgICAgICByZXR1cm4gVmlkZW9Db2RlYy5WUDk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh2aWRlb0NvZGVjU3RyaW5nKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgbmV3IFVpbnQ4QXJyYXkoWzB4MDAsIDB4MDAsIDB4MDAsIDB4MDFdKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuY29uc3QgZGVmYXVsdERpc2NvdmVyeVVyaSA9ICdodHRwczovL3BjYXN0LnBoZW5peHJ0cy5jb20vcGNhc3QvZW5kUG9pbnRzJztcblxuZXhwb3J0IHtkZWZhdWx0RGlzY292ZXJ5VXJpfTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZU1vZGVUeXBlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCaXRyYXRlTW9kZU1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUoYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlKTogQml0cmF0ZU1vZGVUeXBlIHtcbiAgICBzd2l0Y2ggKGJpdHJhdGVNb2RlKSB7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLk5vcm1hbDpcbiAgICAgICAgcmV0dXJuICdOb3JtYWwnO1xuICAgICAgY2FzZSBCaXRyYXRlTW9kZS5Gb3JjZTpcbiAgICAgICAgcmV0dXJuICdGb3JjZSc7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLlJlc2V0OlxuICAgICAgICByZXR1cm4gJ1Jlc2V0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGJpdHJhdGVNb2RlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtCaXRyYXRlU3RhdGUsIEJpdHJhdGVTdGF0ZVR5cGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJpdHJhdGVTdGF0ZU1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZShiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZSk6IEJpdHJhdGVTdGF0ZVR5cGUge1xuICAgIHN3aXRjaCAoYml0cmF0ZVN0YXRlKSB7XG4gICAgICBjYXNlIEJpdHJhdGVTdGF0ZS5LZWVwOlxuICAgICAgICByZXR1cm4gJ0tlZXAnO1xuICAgICAgY2FzZSBCaXRyYXRlU3RhdGUuUmVzZXQ6XG4gICAgICAgIHJldHVybiAnUmVzZXQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoYml0cmF0ZVN0YXRlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBEaXNjb3ZlcnlTZXJ2aWNlIGZyb20gJy4vRGlzY292ZXJ5U2VydmljZSc7XG5pbXBvcnQgRW5kUG9pbnQgZnJvbSAnLi9FbmRQb2ludCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5cbmNvbnN0IGRpc2NvdmVyeUNhY2hlSW50ZXJ2YWwgPSA2MDAwMDtcblxuaW50ZXJmYWNlIElQZXJVUklFbmRwb2ludCB7IFt4OiBzdHJpbmddOiBQcm9taXNlPEVuZFBvaW50PiB9XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc2NvdmVyeSB7XG4gIHByaXZhdGUgc3RhdGljIF9jYWNoZTogSVBlclVSSUVuZHBvaW50ID0ge307XG5cbiAgc3RhdGljIGFzeW5jIHByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5KCk6IFByb21pc2U8RW5kUG9pbnQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8RW5kUG9pbnQ+KHJlc29sdmVFbmRQb2ludFByb21pc2UgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXJpID0gbmV3IGdsb2JhbFNjb3BlLlVSTChTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgICByZXR1cm4gRGlzY292ZXJ5LmRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmcodXJpKVxuICAgICAgICAgIC50aGVuKHJlc29sdmVFbmRQb2ludFByb21pc2UpXG4gICAgICAgICAgLnRoZW4oKCkgPT4gZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmcodXJpOiBVUkwpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgY29uc3QgdXJsID0gdXJpLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAodXJsIGluIERpc2NvdmVyeS5fY2FjaGUpIHtcbiAgICAgIHJldHVybiBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgfVxuXG4gICAgY29uc3QgZGlzY292ZXJ5U2VydmljZSA9IG5ldyBEaXNjb3ZlcnlTZXJ2aWNlKHVyaSk7XG4gICAgY29uc3QgY2FjaGVkVmFsdWUgPSBEaXNjb3ZlcnkuX2NhY2hlW3VybF0gPSBkaXNjb3ZlcnlTZXJ2aWNlLmRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50KCk7XG4gICAgY29uc3QgaWdub3JlZCA9IERpc2NvdmVyeS5fY2FjaGVbdXJsXS50aGVuKCgpID0+IHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKERpc2NvdmVyeS5fY2FjaGVbdXJsXSA9PT0gY2FjaGVkVmFsdWUpIHtcbiAgICAgICAgICBkZWxldGUgRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgICAgICB9XG4gICAgICB9LCBkaXNjb3ZlcnlDYWNoZUludGVydmFsKTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICBkZWxldGUgRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNhY2hlZFZhbHVlO1xuICB9XG5cbiAgc3RhdGljIGNsZWFyQ2FjaGVkQ2xvc2VzdEVuZHBvaW50KHVyaTogVVJMKTogdm9pZCB7XG4gICAgY29uc3QgdXJsID0gdXJpLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAodXJsIGluIERpc2NvdmVyeS5fY2FjaGUpIHtcbiAgICAgIGRlbGV0ZSBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuY29uc3QgaWdub3JlZCA9IERpc2NvdmVyeS5wcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSgpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IEVuZFBvaW50IGZyb20gJy4vRW5kUG9pbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuXG5jb25zdCBkZWZhdWx0VGltZW91dCA9IDIwMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3ZlcnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0Rpc2NvdmVyeScpO1xuICBwcml2YXRlIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgX3VyaTogVVJMO1xuXG4gIGNvbnN0cnVjdG9yKHVyaTogVVJMKSB7XG4gICAgaWYgKCF1cmkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IHJlcXVpcmVzIHVyaScpO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UodXJpLnRvU3RyaW5nKCkpO1xuICAgIHRoaXMuX3VyaSA9IHVyaTtcbiAgfVxuXG4gIGFzeW5jIGRpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzKHVyaTogVVJMLCB0aW1lb3V0OiBudW1iZXIpOiBQcm9taXNlPEVuZFBvaW50W10+IHtcbiAgICBpZiAoIXRpbWVvdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IHJlcXVpcmVzIHRpbWVvdXQnKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB1cmkudG9TdHJpbmcoKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICAgIH0pLFxuICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KChfLCByZWplY3QpID0+IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgRGlzY292ZXJ5IHRpbWVkIG91dCBbJHt1cmx9XWApKSwgdGltZW91dCkpXG4gICAgXSk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERpc2NvdmVyeSBmYWlsZWQgWyR7dXJsfV0gWyR7cmVzcG9uc2Uuc3RhdHVzfV1gKTtcbiAgICB9XG5cbiAgICBpZiAocmVzcG9uc2UuYm9keSA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaXNjb3ZlcnkgZmFpbGVkIHdpdGggbm8gZGF0YSBbJHt1cmx9XWApO1xuICAgIH1cblxuICAgIGNvbnN0IGFzU3RyaW5nID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuICAgIGNvbnN0IGVuZFBvaW50cyA9IGFzU3RyaW5nLnNwbGl0KCcsJyk7XG5cbiAgICByZXR1cm4gZW5kUG9pbnRzLm1hcChlbmRQb2ludCA9PiBuZXcgRW5kUG9pbnQoZW5kUG9pbnQsIHRpbWVvdXQpKTtcbiAgfVxuXG4gIGFzeW5jIGRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50KHRpbWVvdXQ6IG51bWJlciA9IGRlZmF1bHRUaW1lb3V0KTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIGNvbnN0IHVybCA9IERpc2NvdmVyeVVyaS5idWlsZERpc2NvdmVyeVVybCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IGVuZFBvaW50cyA9IGF3YWl0IHRoaXMuZGlzY292ZXJOZWFyYnlFbmRQb2ludHMobmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpLCB0aW1lb3V0KTtcbiAgICBsZXQgZmFpbGVkUmVxdWVzdHMgPSAwO1xuICAgIGNvbnN0IHByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkID0gKCk6IFByb21pc2U8dm9pZD4gPT4gbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKGZhaWxlZFJlcXVlc3RzID49IGVuZFBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgcmVqZWN0KGBEaXNjb3Zlcnkgb2YgWyR7ZW5kUG9pbnRzLmxlbmd0aH1dIGVuZHBvaW50cyBmcm9tIFske3VybH1dIGZhaWxlZCwgcHJldmVudGluZyBpdCBmcm9tIGNvbXBsZXRpbmdgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBlbmRQb2ludCA9IGF3YWl0IFByb21pc2UucmFjZShlbmRQb2ludHMubWFwKGVuZFBvaW50ID0+IGVuZFBvaW50XG4gICAgICAucGluZygpXG4gICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdGYWlsZWQgdG8gcGluZyBlbmQgcG9pbnQgWyVzXScsIGVuZFBvaW50LCBlKTtcblxuICAgICAgICBmYWlsZWRSZXF1ZXN0cysrO1xuXG4gICAgICAgIHJldHVybiBwcm9wYWdhdGVGYWlsdXJlSWZBbGxSZXF1ZXN0c0ZhaWxlZCgpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKHRpbWUgPT4ge1xuICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcmVkIGVuZCBwb2ludCBbJXNdIHdpdGggdGltZSBbJXNdJywgZW5kUG9pbnQudG9TdHJpbmcoKSwgdGltZSk7XG4gICAgICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWUsXG4gICAgICAgICAgcnVudGltZTogKG5vdyAtIFNESy5wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgICAgICB2YWx1ZToge3VpbnQ2NDogdGltZSB8fCAwfSxcbiAgICAgICAgICByZXNvdXJjZTogZW5kUG9pbnQudG9TdHJpbmcoKSxcbiAgICAgICAgICBraW5kOiAncGluZydcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGVuZFBvaW50O1xuICAgICAgfSkpKTtcblxuICAgIHJldHVybiBlbmRQb2ludDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgUGFyYW1ldGVycyBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9QYXJhbWV0ZXJzJztcbmltcG9ydCB7ZGVmYXVsdERpc2NvdmVyeVVyaX0gZnJvbSAnLi4vZGVmYXVsdHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3ZlcnlVcmkge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZGlzY292ZXJ5VXJpOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KGRlZmF1bHREaXNjb3ZlcnlVcmkpO1xuXG4gIHN0YXRpYyBnZXQgdXJpKCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIERpc2NvdmVyeVVyaS5fZGlzY292ZXJ5VXJpO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkRGlzY292ZXJ5VXJsKHVyaTogVVJMKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVyaS50b1N0cmluZygpKTtcbiAgICBjb25zdCBzZGtWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBjb25zdCBpbnRlbnRpb25zID0gUGFyYW1ldGVycy5kaXNjb3ZlcnlQYXJhbWV0ZXJzLmludGVudGlvbnM7XG5cbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgndmVyc2lvbicsIHNka1ZlcnNpb24pO1xuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdpbnRlbnRpb25zJywgaW50ZW50aW9ucyk7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ18nLCBgJHtEYXRlLm5vdygpfWApO1xuXG4gICAgaWYgKHVybC5wYXRobmFtZSA9PT0gJy8nKSB7XG4gICAgICB1cmwucGF0aG5hbWUgPSAnL3BjYXN0L2VuZFBvaW50cyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybC50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeVVyaSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcblxuaW1wb3J0IHtcbiAgSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZSxcbiAgSVN1YnNjcmliZVdpdGhPZmZlclJlcXVlc3QsXG4gIElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0XG59IGZyb20gJy4uL2FwaS9TdWJzY3JpYmUnO1xuaW1wb3J0IHtJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXF1ZXN0LCBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZX0gZnJvbSAnLi4vYXBpL1NldFJlbW90ZURlc2NyaXB0aW9uJztcbmltcG9ydCB7SURlc3Ryb3lTdHJlYW1SZXF1ZXN0LCBJRGVzdHJveVN0cmVhbVJlc3BvbnNlfSBmcm9tICcuLi9hcGkvRGVzdHJveVN0cmVhbSc7XG5pbXBvcnQge0lBZGRJY2VDYW5kaWRhdGVzUmVxdWVzdCwgSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZX0gZnJvbSAnLi4vYXBpL0FkZEljZUNhbmRpZGF0ZXMnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuaW1wb3J0IFBhcmFtZXRlcnMgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvUGFyYW1ldGVycyc7XG5pbXBvcnQge0JpdHJhdGVNb2RlLCBCaXRyYXRlU3RhdGUsIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZX0gZnJvbSAnLi4vYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlJztcbmltcG9ydCBCaXRyYXRlTW9kZU1hcHBpbmcgZnJvbSAnLi9CaXRyYXRlTW9kZU1hcHBpbmcnO1xuaW1wb3J0IEJpdHJhdGVTdGF0ZU1hcHBpbmcgZnJvbSAnLi9CaXRyYXRlU3RhdGVNYXBwaW5nJztcbmltcG9ydCB7Qml0c1BlclNlY29uZCwgTWlsbGlzZWNvbmR9IGZyb20gJy4uLy4uL3VuaXRzL1VuaXRzJztcbmltcG9ydCB7XG4gIElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlLFxuICBJUHVibGlzaFdpdGhPZmZlclJlcXVlc3QsXG4gIElQdWJsaXNoV2l0aG91dE9mZmVyUmVxdWVzdCxcbiAgUHVibGlzaFN0YXR1c1xufSBmcm9tICcuLi9hcGkvUHVibGlzaCc7XG5cbmNvbnN0IGFwaVZlcnNpb24gPSA3O1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpYmVTdGF0dXMgPSAnb2snIHwgJ25vLXN0cmVhbScgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ2dlby1yZXN0cmljdGVkJyB8ICdnZW8tYmxvY2tlZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZm9yYmlkZGVuLXRhZycgfCAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBSZW1vdmVUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIERlc3Ryb3lTdHJlYW1TdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IGludGVyZmFjZSBJU3RyZWFtIHtcbiAgc3RyZWFtSWQ6IHN0cmluZztcbiAgc2hhcmVkU2VjcmV0OiBzdHJpbmc7XG4gIHRlbmFuY3k6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogJ29rJztcbiAgc3RyZWFtOiBJU3RyZWFtO1xuICBsYWc6IE1pbGxpc2Vjb25kO1xuICBydGNDb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbjtcbiAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiAnbm8tc3RyZWFtJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAnZ2VvLXJlc3RyaWN0ZWQnIHwgJ2dlby1ibG9ja2VkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmb3JiaWRkZW4tdGFnJyB8ICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCcgfCAnZmFpbGVkJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrIHtcbiAgKHJlcXVlc3Q6IElTdWJzY3JpYmVXaXRoT2ZmZXJSZXF1ZXN0IHwgSVN1YnNjcmliZVdpdGhvdXRPZmZlclJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrIHtcbiAgKHJlc3BvbnNlOiBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdCB8IElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0KTogUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IHR5cGUgU3Vic2NyaWJlT3B0aW9ucyA9IHtcbiAgb25TdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s/OiBJU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrO1xuICBvblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/OiBJU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaztcbn07XG5cbmV4cG9ydCB0eXBlIElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlSW5pdCA9IHtcbiAgc3RhdHVzOiAnb2snO1xuICBzdHJlYW06IElTdHJlYW07XG4gIGxhZz86IE1pbGxpc2Vjb25kO1xuICBydGNDb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbjtcbiAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgSVB1Ymxpc2hGYWlsdXJlUmVzcG9uc2VJbml0ID0ge1xuICBzdGF0dXM6ICdub3QtZm91bmQnIHwgJ2dlby1yZXN0cmljdGVkJyB8ICdnZW8tYmxvY2tlZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmb3JiaWRkZW4tdGFnJyB8ICdtaXNzaW5nLWNoYW5uZWwtb3Itcm9vbS1pZCcgfCAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnIHwgJ2ZhaWxlZCc7XG59O1xuXG5pbnRlcmZhY2UgSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cztcbiAgc2Vzc2lvbkRlc2NyaXB0aW9uPzogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbn1cblxuaW50ZXJmYWNlIElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzO1xuICBvcHRpb25zPzogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVSZXNwb25zZUluaXQge1xuICBzdGF0dXM6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzO1xufVxuXG5pbnRlcmZhY2UgSURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQge1xuICBzdGF0dXM6IERlc3Ryb3lTdHJlYW1TdGF0dXM7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVuZFBvaW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0VuZFBvaW50Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3VyaTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aW1lb3V0OiBudW1iZXI7XG4gIHByaXZhdGUgX3JvdW5kVHJpcFRpbWU6IG51bWJlciA9IDA7XG5cbiAgY29uc3RydWN0b3IodXJpOiBzdHJpbmcsIHRpbWVvdXQ6IG51bWJlcikge1xuICAgIHRoaXMuX3VyaSA9IHVyaTtcbiAgICB0aGlzLl90aW1lb3V0ID0gdGltZW91dDtcblxuICAgIGlmICghdGltZW91dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFbmQgcG9pbnQgcmVxdWlyZXMgYSB0aW1lb3V0YCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJvdW5kVHJpcFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcm91bmRUcmlwVGltZTtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBFbmRQb2ludFt1cmk9JHt0aGlzLl91cml9XWA7XG4gIH1cblxuICBhc3luYyBwaW5nKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFBpbmdVcmwoKTtcbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIGNhY2hlOiAnbm8tY2FjaGUnXG4gICAgICB9KSxcbiAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPigoXywgcmVqZWN0KSA9PlxuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoYFBpbmcgdGltZWQgb3V0IFske3VybH1dYCkpLCB0aGlzLl90aW1lb3V0KSlcbiAgICBdKTtcbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7IC8qIEhhbmRsZSAqL1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBQaW5nIGZhaWxlZCBbJHt1cmx9XSBbJHtyZXNwb25zZS5zdGF0dXN9XWApO1xuICAgIH1cblxuICAgIHRoaXMuX3JvdW5kVHJpcFRpbWUgPSBmaW5pc2hlZCAtIHN0YXJ0O1xuXG4gICAgcmV0dXJuIHRoaXMuX3JvdW5kVHJpcFRpbWU7XG4gIH1cblxuICBhc3luYyBzdWJzY3JpYmUodG9rZW46IEVuY29kZWRFZGdlVG9rZW4sIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0IHwgbnVsbCwgZmFpbHVyZUNvdW50OiBudW1iZXIsIG9wdGlvbnM6IFN1YnNjcmliZU9wdGlvbnMgPSB7fSk6IFByb21pc2U8SVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQgfCBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHRlbmFuY3kgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS50ZW5hbmN5O1xuXG4gICAgaWYgKCF0ZW5hbmN5KSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSB0b2tlbiBbJXNdJywgdG9rZW4pO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ3VuYXV0aG9yaXplZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3RlbmFuY3ksICdzdHJlYW0nLCAnc3Vic2NyaWJlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBjbGllbnRWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBsZXQgcmVxdWVzdEJvZHk6IElTdWJzY3JpYmVXaXRoT2ZmZXJSZXF1ZXN0IHwgSVN1YnNjcmliZVdpdGhvdXRPZmZlclJlcXVlc3Q7XG5cbiAgICBpZiAoZmFpbHVyZUNvdW50ID09PSAwICYmIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICByZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi50eXBlLFxuICAgICAgICAgICAgc2RwOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi5zZHBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uOiB7YXBpVmVyc2lvbn1cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3RCb2R5ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb246IHthcGlWZXJzaW9ufVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBhd2FpdCBvcHRpb25zLm9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrPy4ocmVxdWVzdEJvZHkpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHJlcXVlc3RCb2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzdWJzY3JpYmUnLCBuZXcgRXJyb3IoYFN1YnNjcmliZSB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzdWJzY3JpYmUnLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IFN1YnNjcmliZVN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICBjb25zdCByZXNwb25zZTogSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQgPSB7c3RhdHVzfTtcblxuICAgICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/LihyZXNwb25zZSk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc3Vic2NyaWJlUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb1N1YnNjcmliZVJlc3BvbnNlKHRlbmFuY3ksIGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ0dvdCBzdWJzY3JpYmUgcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgc3Vic2NyaWJlUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/LihzdWJzY3JpYmVSZXNwb25zZSk7XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBwdWJsaXNoKG5hbWU6IHN0cmluZywgdG9rZW46IEVuY29kZWRFZGdlVG9rZW4sIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0IHwgbnVsbCwgZmFpbHVyZUNvdW50OiBudW1iZXIpOiBQcm9taXNlPElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlSW5pdCB8IElQdWJsaXNoRmFpbHVyZVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHRlbmFuY3kgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS50ZW5hbmN5O1xuXG4gICAgaWYgKCF0ZW5hbmN5KSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSB0b2tlbiBbJXNdJywgdG9rZW4pO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ3VuYXV0aG9yaXplZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3RlbmFuY3ksICdzdHJlYW0nLCAncHVibGlzaCddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgY2xpZW50VmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG5cbiAgICBpZiAoZmFpbHVyZUNvdW50ID09PSAwICYmIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBjb25zdCBib2R5V2l0aE9mZmVyOiBJUHVibGlzaFdpdGhPZmZlclJlcXVlc3QgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICAgIHNlc3Npb25EZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24udHlwZSxcbiAgICAgICAgICAgIHNkcDogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24uc2RwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIHN0cmVhbUlkOiAnJyxcbiAgICAgICAgICBhcGlWZXJzaW9uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5V2l0aE9mZmVyKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGJvZHlXaXRob3V0T2ZmZXI6IElQdWJsaXNoV2l0aG91dE9mZmVyUmVxdWVzdCA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBuYW1lLFxuICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgc3RyZWFtSWQ6ICcnLFxuICAgICAgICAgIGFwaVZlcnNpb25cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHlXaXRob3V0T2ZmZXIpKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwdWJsaXNoJywgbmV3IEVycm9yKGBQdWJsaXNoIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHB1Ymxpc2gnLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IFB1Ymxpc2hTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1B1Ymxpc2hTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc3Vic2NyaWJlUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb1B1Ymxpc2hSZXNwb25zZSh0ZW5hbmN5LCBodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3QgcHVibGlzaCByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBzdWJzY3JpYmVSZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBzZXRSZW1vdGVEZXNjcmlwdGlvbihzdHJlYW06IElTdHJlYW0sIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCk6IFByb21pc2U8SVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdkZXNjcmlwdGlvbicsICdyZW1vdGUnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElTZXRSZW1vdGVEZXNjcmlwdGlvblJlcXVlc3QgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0/LnNoYXJlZFNlY3JldCxcbiAgICAgIHNlc3Npb25EZXNjcmlwdGlvbjoge1xuICAgICAgICB0eXBlOiBzZXNzaW9uRGVzY3JpcHRpb24udHlwZSxcbiAgICAgICAgc2RwOiBzZXNzaW9uRGVzY3JpcHRpb24uc2RwXG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uJywgbmV3IEVycm9yKGBTZXQgcmVtb3RlIGRlc2NyaXB0aW9uIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24nLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ0dvdCBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBsaW1pdEJpdHJhdGUoXG4gICAgc3RyZWFtOiBJU3RyZWFtLFxuICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kczogbnVtYmVyLFxuICAgIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQ6IEJpdHNQZXJTZWNvbmQsXG4gICAgYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGUsXG4gICAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlLFxuICApOiBQcm9taXNlPElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnYml0cmF0ZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kcyxcbiAgICAgIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQsXG4gICAgICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZU1hcHBpbmcuY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZShiaXRyYXRlU3RhdGUpLFxuICAgICAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlTWFwcGluZy5jb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZShiaXRyYXRlTW9kZSlcbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHNldCBsaW1pdCBiaXRyYXRlIHRpbWVkJywgbmV3IEVycm9yKGBTZXQgbGltaXQgYml0cmF0ZSB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzZXQgbGltaXQgYml0cmF0ZSB0aW1lZCcsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzKGh0dHBSZXNwb25zZSk7XG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0dvdCBzZXQgbGltaXQgYml0cmF0ZSByZXNwb25zZSBbJXNdIGluIFslc10gbXMnLCBzdGF0dXMsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHtzdGF0dXN9O1xuICB9XG5cbiAgYXN5bmMgYWRkSWNlQ2FuZGlkYXRlcyhzdHJlYW06IElTdHJlYW0sIGNhbmRpZGF0ZXM6IFJUQ0ljZUNhbmRpZGF0ZVtdLCBkaXNjb3ZlcnlDb21wbGV0ZWQ6IGJvb2xlYW4sIG9wdGlvbnM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdpY2UnLCAnY2FuZGlkYXRlcyddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSUFkZEljZUNhbmRpZGF0ZXNSZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIGNhbmRpZGF0ZXMsXG4gICAgICBkaXNjb3ZlcnlDb21wbGV0ZWQsXG4gICAgICBvcHRpb25zXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBhZGQgaWNlIGNhbmRpZGF0ZXMnLCBuZXcgRXJyb3IoYEFkZCBpY2UgY2FuZGlkYXRlcyB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBhZGQgaWNlIGNhbmRpZGF0ZXMnLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UoaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3QgYWRkIElDRSBjYW5kaWRhdGVzIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgZGVzdHJveVN0cmVhbShzdHJlYW06IElTdHJlYW0sIHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTxJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzdHJveSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSURlc3Ryb3lTdHJlYW1SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIHJlYXNvbixcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzdWJzY3JpYmUnLCBuZXcgRXJyb3IoYERlbGV0ZSBzdHJlYW0gdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gZGVsZXRlIHN0cmVhbScsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogRGVzdHJveVN0cmVhbVN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBkZXN0cm95U3RyZWFtUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW1SZXNwb25zZShodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0dvdCBkZXN0cm95IHN0cmVhbSByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBkZXN0cm95U3RyZWFtUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIGRlc3Ryb3lTdHJlYW1SZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIGRlc3Ryb3lTdHJlYW1PblVubW91bnQoc3RyZWFtOiBJU3RyZWFtLCByZWFzb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghbmF2aWdhdG9yPy5zZW5kQmVhY29uKSB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5kZXN0cm95U3RyZWFtKHN0cmVhbSwgcmVhc29uKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc3Ryb3knXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElEZXN0cm95U3RyZWFtUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICByZWFzb24sXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgbmF2aWdhdG9yLnNlbmRCZWFjb24odXJsLCBmb3JtRGF0YSk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkVXJsKHBhdGg6IHN0cmluZ1tdKTogVVJMIHtcbiAgICBjb25zdCB1cmkgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHRoaXMuX3VyaSk7XG4gICAgY29uc3QgcGF0aEFzQXJyYXkgPSB1cmkucGF0aG5hbWUuc3BsaXQoJy8nKTtcblxuICAgIHBhdGhBc0FycmF5Lmxlbmd0aCA9IHBhdGhBc0FycmF5Lmxlbmd0aCAtIDE7XG5cbiAgICB1cmkucGF0aG5hbWUgPSBwYXRoQXNBcnJheS5jb25jYXQoLi4ucGF0aCkuam9pbignLycpO1xuXG4gICAgcmV0dXJuIHVyaTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRQaW5nVXJsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdXJpID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IHNka1ZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuICAgIGNvbnN0IGludGVudGlvbnMgPSBQYXJhbWV0ZXJzLmRpc2NvdmVyeVBhcmFtZXRlcnMuaW50ZW50aW9ucztcblxuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCd0eXBlJywgJ2h0dHAnKTtcbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgndmVyc2lvbicsIHNka1ZlcnNpb24pO1xuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCdpbnRlbnRpb25zJywgaW50ZW50aW9ucyk7XG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ18nLCBgJHtEYXRlLm5vdygpfWApO1xuXG4gICAgcmV0dXJuIHVyaS50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9QdWJsaXNoU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFB1Ymxpc2hTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDAyOlxuICAgICAgICByZXR1cm4gJ2dlby1yZXN0cmljdGVkJztcbiAgICAgIGNhc2UgNDAzOlxuICAgICAgICByZXR1cm4gJ2dlby1ibG9ja2VkJztcbiAgICAgIGNhc2UgNDA2OlxuICAgICAgICByZXR1cm4gJ21pc3NpbmctY2hhbm5lbC1vci1yb29tLWlkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA0MDk6XG4gICAgICAgIHJldHVybiAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnO1xuICAgICAgY2FzZSA0MTU6XG4gICAgICAgIHJldHVybiAnZm9yYmlkZGVuLXRhZyc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFN1YnNjcmliZVN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDI6XG4gICAgICAgIHJldHVybiAnZ2VvLXJlc3RyaWN0ZWQnO1xuICAgICAgY2FzZSA0MDM6XG4gICAgICAgIHJldHVybiAnZ2VvLWJsb2NrZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDQwOTpcbiAgICAgICAgcmV0dXJuICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCc7XG4gICAgICBjYXNlIDQxNTpcbiAgICAgICAgcmV0dXJuICdmb3JiaWRkZW4tdGFnJztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBEZXN0cm95U3RyZWFtU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9TdWJzY3JpYmVSZXNwb25zZSh0ZW5hbmN5OiBzdHJpbmcsIHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2U7XG4gICAgY29uc3Qge1xuICAgICAgc3RhdHVzLFxuICAgICAgc3RyZWFtSWQsXG4gICAgICBzaGFyZWRTZWNyZXQsXG4gICAgICBsYWcsXG4gICAgICBydGNDb25maWd1cmF0aW9uLFxuICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICAuLi5vdGhlclByb3BlcnRpZXNcbiAgICB9ID0gZGF0YTtcbiAgICBjb25zdCBzdWJzY3JpYmVSZXNwb25zZTogSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQgPSB7XG4gICAgICBzdGF0dXMsXG4gICAgICBzdHJlYW06IHtcbiAgICAgICAgdGVuYW5jeSxcbiAgICAgICAgc3RyZWFtSWQsXG4gICAgICAgIHNoYXJlZFNlY3JldFxuICAgICAgfSxcbiAgICAgIGxhZyxcbiAgICAgIC4uLm90aGVyUHJvcGVydGllc1xuICAgIH07XG5cbiAgICBpZiAocnRjQ29uZmlndXJhdGlvbikge1xuICAgICAgc3Vic2NyaWJlUmVzcG9uc2UucnRjQ29uZmlndXJhdGlvbiA9IHRoaXMuY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKHJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIGlmIChzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/LnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgc3Vic2NyaWJlUmVzcG9uc2UuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICBpZiAoY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIHJldHVybiBzdWJzY3JpYmVSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvUHVibGlzaFJlc3BvbnNlKHRlbmFuY3k6IHN0cmluZywgcmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlO1xuICAgIGNvbnN0IHB1Ymxpc2hSZXNwb25zZTogSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgc3RhdHVzOiBkYXRhLnN0YXR1cyxcbiAgICAgIHN0cmVhbToge1xuICAgICAgICB0ZW5hbmN5LFxuICAgICAgICBzdHJlYW1JZDogZGF0YS5zdHJlYW1JZCxcbiAgICAgICAgc2hhcmVkU2VjcmV0OiBkYXRhLnNoYXJlZFNlY3JldFxuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKGRhdGEucnRjQ29uZmlndXJhdGlvbikge1xuICAgICAgICBwdWJsaXNoUmVzcG9uc2UucnRjQ29uZmlndXJhdGlvbiA9IHRoaXMuY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKGRhdGEucnRjQ29uZmlndXJhdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgICBwdWJsaXNoUmVzcG9uc2Uuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgcHVibGlzaFJlc3BvbnNlLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgICBwdWJsaXNoUmVzcG9uc2UuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcHVibGlzaFJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0IHJ0Y0NvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24gPSB7aWNlU2VydmVyczogW119O1xuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5KSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeSA9IGNvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY29uZmlndXJhdGlvbi5pY2VDYW5kaWRhdGVQb29sU2l6ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlQ2FuZGlkYXRlUG9vbFNpemUgPSBjb25maWd1cmF0aW9uLmljZUNhbmRpZGF0ZVBvb2xTaXplO1xuICAgIH1cblxuICAgIGlmIChjb25maWd1cmF0aW9uLmljZVNlcnZlcnMpIHtcbiAgICAgIGNvbnN0IGljZVNlcnZlcnM6IFJUQ0ljZVNlcnZlcltdID0gW107XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGljZVNlcnZlcnMucHVzaCh7XG4gICAgICAgICAgdXJsczogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHMsXG4gICAgICAgICAgdXNlcm5hbWU6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51c2VybmFtZSxcbiAgICAgICAgICBjcmVkZW50aWFsOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0uY3JlZGVudGlhbFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcnRjQ29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzID0gaWNlU2VydmVycztcbiAgICB9XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3kpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5ID0gY29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3k7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeSkge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5ydGNwTXV4UG9saWN5ID0gY29uZmlndXJhdGlvbi5ydGNwTXV4UG9saWN5O1xuICAgIH1cblxuICAgIHJldHVybiBydGNDb25maWd1cmF0aW9uO1xuICB9XG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZShyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U7XG4gICAgY29uc3Qgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTogSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0ID0ge3N0YXR1czogZGF0YS5zdGF0dXN9O1xuXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uID0gZGF0YS5zZXNzaW9uRGVzY3JpcHRpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXNSZXNwb25zZShyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlO1xuICAgIGNvbnN0IGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTogSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQgPSB7XG4gICAgICBzdGF0dXM6IGRhdGEuc3RhdHVzLFxuICAgICAgb3B0aW9uczogW11cbiAgICB9O1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmIChkYXRhLm9wdGlvbnMpIHtcbiAgICAgICAgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlLm9wdGlvbnMgPSBkYXRhLm9wdGlvbnM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbVJlc3BvbnNlKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElEZXN0cm95U3RyZWFtUmVzcG9uc2U7XG4gICAgY29uc3QgZGVzdHJveVN0cmVhbTogSURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQgPSB7c3RhdHVzOiBkYXRhLnN0YXR1c307XG5cbiAgICByZXR1cm4gZGVzdHJveVN0cmVhbTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IHtEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiwgUmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLCBSdHBUaW1lc3RhbXB9IGZyb20gJy4vRnJhbWVUaW1pbmdJbmZvcm1hdGlvbic7XG5pbXBvcnQge1ZpZGVvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYyc7XG5pbXBvcnQge01ldGFkYXRhTWVzc2FnZVBheWxvYWQsIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSwgVHJhbnNmb3JtTWVzc2FnZVBheWxvYWR9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UnO1xuaW1wb3J0IFRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIgZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vd29ya2VyL01lc3NhZ2VSb3V0ZXInO1xuXG5leHBvcnQgdHlwZSBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQgPSB7XG4gIGNvZGVjOiBWaWRlb0NvZGVjO1xuICBzdHJlYW1JZDogc3RyaW5nO1xuICB2aWRlb0VsZW1lbnQ6IFN1YmplY3Q8SFRNTFZpZGVvRWxlbWVudCB8IG51bGw+O1xuICBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPjtcbiAgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPjtcbiAgaXNFbmFibGVkU3ViamVjdDogU3ViamVjdDxib29sZWFuPjtcbiAgcmVjZWl2ZXI6IFJUQ1J0cFJlY2VpdmVyO1xuICBtaWQ6IHN0cmluZztcbiAgdHJhY2tJZDogc3RyaW5nO1xuICB0cmFuc2Zvcm1GdW5jdGlvbk5hbWVzOiBzdHJpbmdbXTtcbiAgdHJhbnNmb3JtTWVzc2FnZVJvdXRlcjogVHJhbnNmb3JtTWVzc2FnZVJvdXRlcjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfdHJhbnNmb3JtTmFtZSA9ICdmcmFtZS10aW1pbmctaW5mb3JtYXRpb24nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXInKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25CeVJ0cFRpbWVzdGFtcDogTWFwPFJ0cFRpbWVzdGFtcCwgRGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWRlb0VsZW1lbnREaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgX2N1cnJlbnRQbGF5YmFja1N0YXRlOiAncGxheWluZycgfCAncGF1c2VkJyB8ICdzdGFsbGVkJyB8ICdlbmRlZCcgfCAnZXJyb3InIHwgJ3dhaXRpbmcnID0gJ3dhaXRpbmcnO1xuICBwcml2YXRlIF9hcm1lZFZpZGVvRnJhbWVDYWxsYmFja0lkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfZGlzcG9zZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihjb250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQpIHtcbiAgICB0aGlzLmluaXRpYWxpemUoY29udGV4dCk7XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NlZCA9IHRydWU7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKGNvbnRleHQ6IEZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jYW5Qcm9jZXNzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbihjb250ZXh0LnN0cmVhbUlkLCBjb250ZXh0LmNvZGVjLCBjb250ZXh0LnJlY2VpdmVyLCBjb250ZXh0Lm1pZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldHVwVmlkZW9FbGVtZW50SGFuZGxpbmcoY29udGV4dC52aWRlb0VsZW1lbnQsIGNvbnRleHQucmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCk7XG4gICAgdGhpcy5zZXR1cEZyYW1lVGltaW5nSW5mb3JtYXRpb25UcmFuc2Zvcm0oY29udGV4dC5jb2RlYywgY29udGV4dC5taWQsIGNvbnRleHQudHJhY2tJZCwgY29udGV4dC50cmFuc2Zvcm1NZXNzYWdlUm91dGVyLCBjb250ZXh0LnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMsIGNvbnRleHQuZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0KTtcbiAgICBjb250ZXh0LmlzRW5hYmxlZFN1YmplY3QudmFsdWUgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5Qcm9jZXNzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbihzdHJlYW1JZDogc3RyaW5nLCBjb2RlYzogVmlkZW9Db2RlYywgcmVjZWl2ZXI6IFJUQ1J0cFJlY2VpdmVyLCBtaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChjb2RlYyAhPT0gVmlkZW9Db2RlYy5IMjY0KSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBTa2lwcGluZyBmcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gZm9yIHZpZGVvIHRyYWNrIGJlY2F1c2UgdmlkZW8gY29kZWMgaXMgbm90IEgyNjQnLCBzdHJlYW1JZCk7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXJlY2VpdmVyKSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBTa2lwcGluZyBmcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gZm9yIHZpZGVvIHRyYWNrIGJlY2F1c2Ugbm8gcmVjZWl2ZXIgd2FzIGZvdW5kJywgc3RyZWFtSWQpO1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCFtaWQpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIFNraXBwaW5nIGZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBmb3IgdmlkZW8gdHJhY2sgYmVjYXVzZSBubyBtaWQgd2FzIGZvdW5kJywgc3RyZWFtSWQpO1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIHNldHVwRnJhbWVUaW1pbmdJbmZvcm1hdGlvblRyYW5zZm9ybShjb2RlYzogVmlkZW9Db2RlYywgbWlkOiBzdHJpbmcsIHRyYWNrSWQ6IHN0cmluZywgdHJhbnNmb3JtTWVzc2FnZVJvdXRlcjogVHJhbnNmb3JtTWVzc2FnZVJvdXRlciwgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogc3RyaW5nW10sIGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KTogdm9pZCB7XG4gICAgdHJhbnNmb3JtTWVzc2FnZVJvdXRlci5yZWdpc3RlclJvdXRlPFRyYW5zZm9ybU1lc3NhZ2VQYXlsb2FkPE1ldGFkYXRhTWVzc2FnZVBheWxvYWQ+PihUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiwgdGhpcy5oYW5kbGVGcmFtZVRpbWluZ01lc3NhZ2UuYmluZCh0aGlzLCBWaWRlb0NvZGVjW2NvZGVjXSwgbWlkISwgdHJhY2tJZCEsIGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCkpO1xuICAgIHRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMucHVzaChGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlci5fdHJhbnNmb3JtTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUZyYW1lVGltaW5nTWVzc2FnZShjb2RlYzogc3RyaW5nLCBtaWQ6IHN0cmluZywgdHJhY2tJZDogc3RyaW5nLCBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPiwgbWVzc2FnZTogTWV0YWRhdGFNZXNzYWdlUGF5bG9hZCk6IHZvaWQge1xuICAgIGlmICghbWVzc2FnZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW3J0cFRpbWVzdGFtcCwgbWV0YWRhdGFdIG9mIE9iamVjdC5lbnRyaWVzKG1lc3NhZ2UpKSB7XG4gICAgICBjb25zdCBydHBUaW1lc3RhbXBOdW1iZXIgPSBwYXJzZUludChydHBUaW1lc3RhbXAsIDEwKTtcbiAgICAgIGNvbnN0IGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uID0gbWV0YWRhdGFbJ2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uJ107XG5cbiAgICAgIGlmIChkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbikge1xuICAgICAgICBjb25zdCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IHtcbiAgICAgICAgICB0aW1lY29kZTogZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24udGltZWNvZGUgPz8gbnVsbCxcbiAgICAgICAgICByZWNlaXZlVGltZXN0YW1wOiBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbi5yZWNlaXZlVGltZXN0YW1wID8/IG51bGwsXG4gICAgICAgICAga2luZDogJ3ZpZGVvJyxcbiAgICAgICAgICBjb2RlYyxcbiAgICAgICAgICBtaWQsXG4gICAgICAgICAgdHJhY2tJZCxcbiAgICAgICAgICBzb3VyY2VUaW1lc3RhbXA6IG51bGwsXG4gICAgICAgICAgaW5nZXN0VGltZXN0YW1wOiBudWxsLFxuICAgICAgICAgIGVuY29kZVRpbWVzdGFtcDogbnVsbCxcbiAgICAgICAgICB0cmFuc2NvZGVUaW1lc3RhbXA6IG51bGwsXG4gICAgICAgICAgcGxheWJhY2tTdGF0ZTogdGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGVcbiAgICAgICAgfTtcblxuICAgICAgICBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QudmFsdWUgPSBmcmFtZVRpbWluZ0luZm9ybWF0aW9uO1xuXG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZSA9PT0gJ3BsYXlpbmcnKSB7XG4gICAgICAgICAgdGhpcy5fZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25CeVJ0cFRpbWVzdGFtcC5zZXQocnRwVGltZXN0YW1wTnVtYmVyLCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBWaWRlb0VsZW1lbnRIYW5kbGluZyh2aWRlb0VsZW1lbnRTdWJqZWN0OiBTdWJqZWN0PEhUTUxWaWRlb0VsZW1lbnQgfCBudWxsPiwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPik6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB0aGlzLl9kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkJ5UnRwVGltZXN0YW1wLmNsZWFyKCkpKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh2aWRlb0VsZW1lbnRTdWJqZWN0LnN1YnNjcmliZSh2aWRlb0VsZW1lbnQgPT4ge1xuICAgICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgICBpZiAoIXZpZGVvRWxlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2V0dXBWaWRlb0V2ZW50TGlzdGVuZXJzKHZpZGVvRWxlbWVudCwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCk7XG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVWaWRlb0ZyYW1lQ2FsbGJhY2sodmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+LCBub3c6IERPTUhpZ2hSZXNUaW1lU3RhbXAsIG1ldGFkYXRhOiBWaWRlb0ZyYW1lQ2FsbGJhY2tNZXRhZGF0YSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9kaXNwb3NlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFJlLXJlZ2lzdGVyIHRoZSBjYWxsYmFjayB0byBlbnN1cmUgaXQncyBjYWxsZWQgYWdhaW5cbiAgICB0aGlzLl9hcm1WaWRlb0ZyYW1lQ2FsbGJhY2sodmlkZW9FbGVtZW50LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0KTtcblxuICAgIGNvbnN0IHJ0cFRpbWVzdGFtcCA9IG1ldGFkYXRhLnJ0cFRpbWVzdGFtcDtcblxuICAgIGlmICghcnRwVGltZXN0YW1wKSB7XG4gICAgICAvLyBUT0RPIChOSCk6IEFkZCBhIHRocm90dGxlZCBsb2cgaW5kaWNhdGluZyB0aGF0IG5vIFJUUCB0aW1lc3RhbXAgd2FzIGZvdW5kXG4gICAgICAvLyBUaGUgc3BlY2lmaWNhdGlvbiBzYXlzIHRoYXQgaXQncyBudWxsYWJsZSwgYnV0IHdlIGFsd2F5cyBoYXZlIGl0IGluIGEgV2ViUlRDIGNvbnRleHRcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0aW1lc3RhbXBzVG9EZWxldGU6IFJ0cFRpbWVzdGFtcFtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IFt0aW1lc3RhbXAsIGZyYW1lVGltaW5nXSBvZiB0aGlzLl9kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkJ5UnRwVGltZXN0YW1wKSB7XG4gICAgICBpZiAodGltZXN0YW1wID4gcnRwVGltZXN0YW1wKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0LnZhbHVlID0ge1xuICAgICAgICAuLi5mcmFtZVRpbWluZyxcbiAgICAgICAgcmVuZGVyVGltZXN0YW1wOiBuZXcgRGF0ZShwZXJmb3JtYW5jZS50aW1lT3JpZ2luICsgbm93KSxcbiAgICAgICAgcGxheWJhY2tTdGF0ZTogJ3BsYXlpbmcnXG4gICAgICB9O1xuXG4gICAgICB0aW1lc3RhbXBzVG9EZWxldGUucHVzaCh0aW1lc3RhbXApO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgdGltZXN0YW1wIG9mIHRpbWVzdGFtcHNUb0RlbGV0ZSkge1xuICAgICAgdGhpcy5fZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25CeVJ0cFRpbWVzdGFtcC5kZWxldGUodGltZXN0YW1wKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldHVwVmlkZW9FdmVudExpc3RlbmVycyh2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4pOiB2b2lkIHtcbiAgICBjb25zdCBvblBsYXlpbmcgPSAoKSA9PiB0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZSA9ICdwbGF5aW5nJztcblxuICAgIHZpZGVvRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdwbGF5aW5nJywgb25QbGF5aW5nKTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBvblBsYXlpbmcpKSk7XG5cbiAgICBjb25zdCBvblBhdXNlID0gKCkgPT4gdGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGUgPSAncGF1c2VkJztcblxuICAgIHZpZGVvRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdwYXVzZScsIG9uUGF1c2UpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB2aWRlb0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGF1c2UnLCBvblBhdXNlKSkpO1xuXG4gICAgY29uc3Qgb25TdGFsbGVkID0gKCkgPT4gdGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGUgPSAnc3RhbGxlZCc7XG5cbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc3RhbGxlZCcsIG9uU3RhbGxlZCk7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHZpZGVvRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzdGFsbGVkJywgb25TdGFsbGVkKSkpO1xuXG4gICAgY29uc3Qgb25XYWl0aW5nID0gKCkgPT4gdGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGUgPSAnd2FpdGluZyc7XG5cbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignd2FpdGluZycsIG9uV2FpdGluZyk7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHZpZGVvRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd3YWl0aW5nJywgb25XYWl0aW5nKSkpO1xuXG4gICAgY29uc3Qgb25FbmRlZCA9ICgpID0+IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID0gJ2VuZGVkJztcblxuICAgIHZpZGVvRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdlbmRlZCcsIG9uRW5kZWQpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB2aWRlb0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZW5kZWQnLCBvbkVuZGVkKSkpO1xuXG4gICAgY29uc3Qgb25FcnJvciA9ICgpID0+IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID0gJ2Vycm9yJztcblxuICAgIHZpZGVvRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB2aWRlb0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZXJyb3InLCBvbkVycm9yKSkpO1xuXG4gICAgdGhpcy5fYXJtVmlkZW9GcmFtZUNhbGxiYWNrKHZpZGVvRWxlbWVudCwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCk7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9hcm1lZFZpZGVvRnJhbWVDYWxsYmFja0lkKSB7XG4gICAgICAgIHZpZGVvRWxlbWVudC5jYW5jZWxWaWRlb0ZyYW1lQ2FsbGJhY2sodGhpcy5fYXJtZWRWaWRlb0ZyYW1lQ2FsbGJhY2tJZCk7XG4gICAgICB9XG4gICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXJtVmlkZW9GcmFtZUNhbGxiYWNrKHZpZGVvRWxlbWVudDogSFRNTFZpZGVvRWxlbWVudCwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPik6IHZvaWQge1xuICAgIGlmICghdmlkZW9FbGVtZW50LnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2spIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9hcm1lZFZpZGVvRnJhbWVDYWxsYmFja0lkID0gdmlkZW9FbGVtZW50LnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2sodGhpcy5oYW5kbGVWaWRlb0ZyYW1lQ2FsbGJhY2suYmluZCh0aGlzLCB2aWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCB7U3RyZWFtU2V0dXBMaXN0ZW5lcn0gZnJvbSAnLi4vLi4vZG9tL1N0cmVhbVNldHVwTGlzdGVuZXInO1xuaW1wb3J0IEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIGZyb20gJy4uLy4uL2RvbS9HYXJiYWdlQ29sbGVjdG9yTWFuYWdlcic7XG5pbXBvcnQgRHVyYXRpb25zIGZyb20gJy4uLy4uL3RpbWUvRHVyYXRpb24nO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBTZHBQYXJzZXIgZnJvbSAnLi4vLi4vcnRjL1NkcFBhcnNlcic7XG5pbXBvcnQgUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIgZnJvbSAnLi4vLi4vcnRjL1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyJztcbmltcG9ydCBQZWVyQ29ubmVjdGlvblNlcnZpY2UsIHtcbiAgZGVmYXVsdFRyYWNrS2luZHMsXG4gIEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1xufSBmcm9tICcuLi8uLi9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlJztcbmltcG9ydCBSdGNDb25uZWN0aW9uTW9uaXRvciBmcm9tICcuLi8uLi9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuaW1wb3J0IEVuZFBvaW50LCB7U3Vic2NyaWJlT3B0aW9ucywgU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXN9IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQgRGlzY292ZXJ5IGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnknO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi4vY2hhbm5lbHMvQ2hhbm5lbFN0YXRlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgQ2hhbm5lbENvbnRleHQgZnJvbSAnLi4vY29udGV4dC9DaGFubmVsQ29udGV4dCc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0JztcbmltcG9ydCBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvU3RyZWFtVHJhbnNmb3JtQ29udGV4dCc7XG5pbXBvcnQgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9GcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCc7XG5pbXBvcnQgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXIsIHtGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHR9IGZyb20gJy4uL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyJztcbmltcG9ydCBJbnNlcnRhYmxlU3RyZWFtcyBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9JbnNlcnRhYmxlU3RyZWFtcyc7XG5pbXBvcnQge0lTdHJlYW19IGZyb20gJy4vSVN0cmVhbSc7XG5pbXBvcnQgRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlciwge0VuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXJDb250ZXh0fSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyJztcbmltcG9ydCB7QXVkaW9Db2RlY1R5cGV9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlYyc7XG5pbXBvcnQge1ZpZGVvQ29kZWNUeXBlfSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL1ZpZGVvQ29kZWMnO1xuaW1wb3J0IFZpZGVvQ29kZWNNYXBwaW5nIGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlY01hcHBpbmcnO1xuaW1wb3J0IEF1ZGlvQ29kZWNNYXBwaW5nIGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlY01hcHBpbmcnO1xuXG5jb25zdCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCA9IDEwMDtcbmNvbnN0IGRlZmF1bHRTdHJlYW1TZXR1cFRpbWVvdXQgPSAzMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhbFRpbWVTdHJlYW0gaW1wbGVtZW50cyBJU3RyZWFtIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1JlYWxUaW1lU3RyZWFtJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxDb250ZXh0OiBDaGFubmVsQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfaGFuZGxlU3RyZWFtRmFpbHVyZTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuXG4gIGNvbnN0cnVjdG9yKGNoYW5uZWxDb250ZXh0OiBDaGFubmVsQ29udGV4dCwgcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQsIHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQsIGZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCwgaGFuZGxlU3RyZWFtRmFpbHVyZTogKCkgPT4gUHJvbWlzZTx2b2lkPikge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0ID0gY2hhbm5lbENvbnRleHQ7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0ID0gcGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQgPSBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0ID0gZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQ7XG4gICAgdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSA9IGhhbmRsZVN0cmVhbUZhaWx1cmU7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQodGhpcyk7XG4gIH1cblxuICBzdGFydCh1cmk6IFVSTCwgdG9rZW46IHN0cmluZywgbGlzdGVuT25TdHJlYW1TZXR1cDogU3RyZWFtU2V0dXBMaXN0ZW5lciwgcGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQ6IEZ1bmN0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVxdWlyZXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZVxuICAgICAgfHwgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVjb2RlLnZhbHVlXG4gICAgICB8fCB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZXN0YW1wcy52YWx1ZSA/IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5FbmFibGVkIDogRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkRpc2FibGVkO1xuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICAgIERpc2NvdmVyeS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaSksXG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigncmVjdm9ubHknLCBkZWZhdWx0VHJhY2tLaW5kcywgcmVxdWlyZXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMpXG4gICAgICAgIC50aGVuKCh7bG9jYWxPZmZlciwgcGVlckNvbm5lY3Rpb259KSA9PiB7XG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gcGVlckNvbm5lY3Rpb247XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbG9jYWxPZmZlcixcbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uXG4gICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICBdKVxuICAgICAgLnRoZW4oKFtlbmRQb2ludCwge2xvY2FsT2ZmZXIsIHBlZXJDb25uZWN0aW9ufV0pID0+IHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQub25saW5lLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgPSBlbmRQb2ludDtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Nvbm5lY3RpbmcgdG8gWyVzXScsIGVuZFBvaW50LnRvU3RyaW5nKCkpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnTG9jYWwgb2ZmZXI6XFxuJyArIGxvY2FsT2ZmZXIuc2RwKTtcblxuICAgICAgICBjb25zdCBzdWJzY3JpYmVPcHRpb25zOiBTdWJzY3JpYmVPcHRpb25zID0ge307XG5cbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2spIHtcbiAgICAgICAgICBzdWJzY3JpYmVPcHRpb25zLm9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrID0gdGhpcy5fY2hhbm5lbENvbnRleHQub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaykge1xuICAgICAgICAgIHN1YnNjcmliZU9wdGlvbnMub25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrID0gdGhpcy5fY2hhbm5lbENvbnRleHQub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuY2xpZW50T2ZmZXJEaXNhYmxlZCB8fCAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIHx8ICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldENvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5jbG9zZSgpO1xuICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmRpc3Bvc2UoKTtcblxuICAgICAgICAgIGlmIChTREsuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCAmJiAhKEZlYXR1cmVFbmFibGVtZW50LmlzTW9iaWxlICYmIFNESy5za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpKSB7XG4gICAgICAgICAgICBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlci5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gbnVsbDtcblxuICAgICAgICAgIHJldHVybiBlbmRQb2ludC5zdWJzY3JpYmUodG9rZW4sIG51bGwsIHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSwgc3Vic2NyaWJlT3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZW5kUG9pbnQuc3Vic2NyaWJlKHRva2VuLCBsb2NhbE9mZmVyLCB0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUsIHN1YnNjcmliZU9wdGlvbnMpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgY29uc3Qge3N0YXR1c30gPSByZXNwb25zZTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5leGlzdHMudmFsdWUgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5tYXBTdWJzY3JpYmVTdGF0dXNUb0V4aXN0cyhzdGF0dXMpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMuX2NoYW5uZWxDb250ZXh0Lm1hcFN1YnNjcmliZVN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmFwcGx5U3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubGFnLnZhbHVlID0gdW5kZWZpbmVkIDtcblxuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCgpO1xuXG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAnWyVzXSBTdWJzY3JpYmUgZmFpbGVkIHdpdGggc3RhdHVzIFslc10nLFxuICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge3N0cmVhbSwgcnRjQ29uZmlndXJhdGlvbiwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLCBsYWd9ID0gcmVzcG9uc2U7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlID0gc3RyZWFtO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sYWcudmFsdWUgPSBsYWc7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXBwbHlTZXNzaW9uQW5kU3RyZWFtUHJvcGVydGllc1RvVmlkZW9FbGVtZW50KCk7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICdbJXNdIFN1YnNjcmliZSBjb21wbGV0ZWQgWyVzXSBbJWpdIFslal0gWyVqXSBbJWpdJyxcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgcnRjQ29uZmlndXJhdGlvbixcbiAgICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlSdGNDb25maWd1cmF0aW9uKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSwgcnRjQ29uZmlndXJhdGlvbiBhcyBSVENDb25maWd1cmF0aW9uKVxuICAgICAgICAgIC50aGVuKHBlZXJDb25uZWN0aW9uID0+IHtcbiAgICAgICAgICAgIGxldCBzdWJtaXRDYW5kaWRhdGVzVGltZW91dDogdW5kZWZpbmVkIHwgbnVtYmVyO1xuICAgICAgICAgICAgbGV0IGNhbmNlbERpc2NvdmVyeSA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IGRpc2NvdmVyeUNvbXBsZXRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlczogUlRDSWNlQ2FuZGlkYXRlW10gPSBbXTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUpIHtcbiAgICAgICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gcGVlckNvbm5lY3Rpb247XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlID0gKGUpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSAhPT0gcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoY2FuY2VsRGlzY292ZXJ5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCFTREsuc2VuZExvY2FsQ2FuZGlkYXRlcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChlLmNhbmRpZGF0ZSAmJiBlLmNhbmRpZGF0ZS5jYW5kaWRhdGUpIHtcbiAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goZS5jYW5kaWRhdGUpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRpc2NvdmVyeUNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoIXN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGlmIChjYW5jZWxEaXNjb3ZlcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWU/LmFkZEljZUNhbmRpZGF0ZXMoc3RyZWFtLCBjYW5kaWRhdGVzLCBkaXNjb3ZlcnlDb21wbGV0ZWQpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCh7c3RhdHVzLCBvcHRpb25zfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIEZhaWxlZCB0byBhZGQgSUNFIGNhbmRpZGF0ZXMgd2l0aCByZWFzb24gWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnM/LmluY2x1ZGVzKCdjYW5jZWwnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsRGlzY292ZXJ5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBBZGRlZCBJQ0UgY2FuZGlkYXRlcyB3aXRoIHJlYXNvbiBbJXNdIGFuZCBvcHRpb25zIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc3RhdHVzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignWyVzXSBGYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHJldHJ5Q2FsbGJhY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgLy8gSWYgd2Ugc3RvcCBub3JtYWxseSB0aGUgcGVlciBjb25uZWN0aW9uIGlzIHVucmVnaXN0ZXJlZCBmaXJzdC5cbiAgICAgICAgICAgICAgICAvLyBUaHVzIGFueXRpbWUgd2Ugc2VlIGEgY2xvc2VkIHBlZXIgY29ubmVjdGlvbiB0aGF0IGlzIHN0aWxsIHZhbGlkLCBpdCBpcyBhbiBlcnJvci5cbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25uZWN0aW9uRXJyb3I7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucGF1c2UoKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZSBhZnRlciBwZWVyIGNvbm5lY3Rpb24gc3RvcHBlZCB3aXRoIHN0YXRlIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBzd2l0Y2ggKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NoZWNraW5nJzpcbiAgICAgICAgICAgICAgICBjYXNlICdjb21wbGV0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2Nvbm5lY3RlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnbmV3JzpcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Rpc2Nvbm5lY3RlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgICAgICAgICAgIGlmIChHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JJc09uTGluZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBJQ0UgY29ubmVjdGlvbiBzdGF0ZSBjaGFuZ2VkIHRvIFslc10sIHRyeWluZyB0byByZWNvbm5lY3QnLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjYXNlICdjbG9zZWQnOlxuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gSUNFIGNvbm5lY3Rpb24gc3RhdGUgY2hhbmdlZCB0byBbJXNdLCByZXRyeWluZyB0byBjb25uZWN0JywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHJ5Q2FsbGJhY2soKTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUgYXMgbmV2ZXIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBtZWRpYVN0cmVhbVByb21pc2UgPSBuZXcgUHJvbWlzZTxNZWRpYVN0cmVhbT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIUZlYXR1cmVFbmFibGVtZW50Lm9uVHJhY2tEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignU3RyZWFtIHNldHVwIHRpbWVkIG91dCcpKSwgZGVmYXVsdFN0cmVhbVNldHVwVGltZW91dCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCkpKTtcblxuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9udHJhY2sgPSAoZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKGUuc3RyZWFtc1swXSk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHRyYWNrTGlzdGVuZXIgPSAoZTogUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcFsndHJhY2snIHwgJ2FkZHN0cmVhbSddKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYWNrJywgdHJhY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWRkc3RyZWFtJywgdHJhY2tMaXN0ZW5lcik7XG5cbiAgICAgICAgICAgICAgICBpZiAoJ3N0cmVhbXMnIGluIGUpIHtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoZS5zdHJlYW1zWzBdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShlLnN0cmVhbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYWNrJywgdHJhY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWRkc3RyZWFtJywgdHJhY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignU3RyZWFtIHNldHVwIHRpbWVkIG91dCcpKTtcbiAgICAgICAgICAgICAgfSwgZGVmYXVsdFN0cmVhbVNldHVwVGltZW91dCk7XG5cbiAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcigndHJhY2snLCB0cmFja0xpc3RlbmVyKTtcbiAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcignYWRkc3RyZWFtJywgdHJhY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgbG9jYWwgU0RQIG9mZmVyIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IGxvY2FsIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IHJlbW90ZSBTRFAgYW5zd2VyIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCByZW1vdGUgU0RQIG9mZmVyIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIoe1xuICAgICAgICAgICAgICAgICAgICBvZmZlclRvUmVjZWl2ZUF1ZGlvOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBvZmZlclRvUmVjZWl2ZVZpZGVvOiB0cnVlXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KS50aGVuKGFuc3dlciA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgbG9jYWwgU0RQIGFuc3dlciBbJWpdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGFuc3dlcik7XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZFBvaW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgYXMgRW5kUG9pbnQ7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBlbmRQb2ludC5zZXRSZW1vdGVEZXNjcmlwdGlvbihzdHJlYW0sIGFuc3dlcik7XG4gICAgICAgICAgICAgICAgfSkudGhlbigoe3N0YXR1cywgc2Vzc2lvbkRlc2NyaXB0aW9ufSkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLm1hcFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzVG9DaGFubmVsU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oc2Vzc2lvbkRlc2NyaXB0aW9uIGFzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgbG9jYWwgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBzZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLnN1Y2Nlc3ModGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQpO1xuXG4gICAgICAgICAgICAgIHJldHVybiBtZWRpYVN0cmVhbVByb21pc2U7XG4gICAgICAgICAgICB9KS50aGVuKG1lZGlhU3RyZWFtID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlcXVpcmVzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zICYmIHBlZXJDb25uZWN0aW9uPy5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24/LnNkcCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uID0gbmV3IFNkcFBhcnNlcihwZWVyQ29ubmVjdGlvbi5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5jb2RlYyA9IFZpZGVvQ29kZWNNYXBwaW5nLmNvbnZlcnRWaWRlb0NvZGVjVHlwZVRvVmlkZW9Db2RlYyhwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi52aWRlb0NvZGVjIGFzIFZpZGVvQ29kZWNUeXBlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvVHJhY2suY29kZWMgPSBBdWRpb0NvZGVjTWFwcGluZy5jb252ZXJ0QXVkaW9Db2RlY1R5cGVUb0F1ZGlvQ29kZWMocGFyc2VkUmVtb3RlRGVzY3JpcHRpb24uYXVkaW9Db2RlYyBhcyBBdWRpb0NvZGVjVHlwZSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlcnMgPSBwZWVyQ29ubmVjdGlvbi5nZXRSZWNlaXZlcnMoKTtcbiAgICAgICAgICAgICAgICAvLyBOb3RlOiBUaGlzIGFzc3VtZXMgdGhhdCB0aGVyZSBpcyBvbmx5IG9uZSB2aWRlbyBNZWRpYVN0cmVhbVRyYWNrIGFuZCBvbmUgYXVkaW8gTWVkaWFTdHJlYW1UcmFja1xuICAgICAgICAgICAgICAgIGNvbnN0IHZpZGVvVHJhY2sgPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2subWVkaWFTdHJlYW1UcmFjayA9IG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF07XG4gICAgICAgICAgICAgICAgLy8gQm90aCBhcmUgZXhwZWN0ZWQgdG8gYmUgcHJlc2VudCwgYnV0IHRoZSB0eXBlIHN5c3RlbSBtYWtlcyB0aGVtIG51bGxhYmxlLCBzbyB3ZSBoYXZlIHRvIGFzc2VydCB0aGUgcHJlc2VuY2VcbiAgICAgICAgICAgICAgICBjb25zdCB2aWRlb1RyYWNrUmVjZWl2ZXIgPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2sucmVjZWl2ZXIgPSByZWNlaXZlcnMuZmlsdGVyKHJlY2VpdmVyID0+IHJlY2VpdmVyLnRyYWNrID09PSB2aWRlb1RyYWNrKVswXTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5taWQgPSBwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldFRyYW5zY2VpdmVyc1xuICAgICAgICAgICAgICAgICAgPyBwZWVyQ29ubmVjdGlvbi5nZXRUcmFuc2NlaXZlcnMoKS5maWx0ZXIodHJhbnNjZWl2ZXIgPT4gdHJhbnNjZWl2ZXIucmVjZWl2ZXIgPT09IHZpZGVvVHJhY2tSZWNlaXZlcilbMF0/Lm1pZFxuICAgICAgICAgICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYXVkaW9UcmFjayA9IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9UcmFjay5tZWRpYVN0cmVhbVRyYWNrID0gbWVkaWFTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXTtcbiAgICAgICAgICAgICAgICBjb25zdCBhdWRpb1RyYWNrUmVjZWl2ZXIgPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvVHJhY2sucmVjZWl2ZXIgPSByZWNlaXZlcnMuZmlsdGVyKHJlY2VpdmVyID0+IHJlY2VpdmVyLnRyYWNrID09PSBhdWRpb1RyYWNrKVswXTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9UcmFjay5taWQgPSBwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldFRyYW5zY2VpdmVyc1xuICAgICAgICAgICAgICAgICAgPyBwZWVyQ29ubmVjdGlvbi5nZXRUcmFuc2NlaXZlcnMoKS5maWx0ZXIodHJhbnNjZWl2ZXIgPT4gdHJhbnNjZWl2ZXIucmVjZWl2ZXIgPT09IGF1ZGlvVHJhY2tSZWNlaXZlcilbMF0/Lm1pZFxuICAgICAgICAgICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKEluc2VydGFibGVTdHJlYW1zLmNyZWF0ZUVuY29kZWRTdHJlYW1QaXBlbGluZSh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0KSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCByZXF1aXJlc0ZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZWNvZGUudmFsdWUgfHwgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVzdGFtcHMudmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVxdWlyZXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQ6IEZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dCA9IHtcbiAgICAgICAgICAgICAgICAgICAgc3RyZWFtSWQ6IHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICBjb2RlYzogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLmNvZGVjLFxuICAgICAgICAgICAgICAgICAgICB2aWRlb0VsZW1lbnQ6IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbixcbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQucmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLFxuICAgICAgICAgICAgICAgICAgICBpc0VuYWJsZWRTdWJqZWN0OiB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5pc0VuYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyOiB2aWRlb1RyYWNrUmVjZWl2ZXIsXG4gICAgICAgICAgICAgICAgICAgIG1pZDogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLm1pZCEsXG4gICAgICAgICAgICAgICAgICAgIHRyYWNrSWQ6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5tZWRpYVN0cmVhbVRyYWNrLmlkISxcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtTWVzc2FnZVJvdXRlcjogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLnRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIhLFxuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1GdW5jdGlvbk5hbWVzOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2sudHJhbnNmb3JtRnVuY3Rpb25OYW1lc1xuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlcihmcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCByZXF1aXJlc0VuY29kZWRNZWRpYVRyYW5zZm9ybSA9IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVzRW5jb2RlZE1lZGlhVHJhbnNmb3JtKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBlbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyQ29udGV4dDogRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQgPSB7XG4gICAgICAgICAgICAgICAgICAgIHZpZGVvVHJhY2s6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjayxcbiAgICAgICAgICAgICAgICAgICAgYXVkaW9UcmFjazogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1RyYWNrLFxuICAgICAgICAgICAgICAgICAgICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmshLFxuICAgICAgICAgICAgICAgICAgICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmshXG4gICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IEVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXIoZW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBJbnNlcnRhYmxlU3RyZWFtcy5jb25maWd1cmVFbmNvZGVkU3RyZWFtUGlwZWxpbmUodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dCk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHt0cmFuc2Zvcm1lZFN0cmVhbSwgZGlzcG9zYWJsZXN9ID0gSW5zZXJ0YWJsZVN0cmVhbXMuY29uZmlndXJlSW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybWF0aW9uKG1lZGlhU3RyZWFtLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQoZGlzcG9zYWJsZXMpO1xuICAgICAgICAgICAgICAgIG1lZGlhU3RyZWFtID0gdHJhbnNmb3JtZWRTdHJlYW07XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUgPSBtZWRpYVN0cmVhbTtcblxuICAgICAgICAgICAgICBjb25zdCBydGNDb25uZWN0aW9uTW9uaXRvciA9IG5ldyBSdGNDb25uZWN0aW9uTW9uaXRvcihwZWVyQ29ubmVjdGlvbiwgbWVkaWFTdHJlYW0sIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlPy5yb3VuZFRyaXBUaW1lID8gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUucm91bmRUcmlwVGltZSAvIDQgOiAwKTtcblxuICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQocnRjQ29ubmVjdGlvbk1vbml0b3IpO1xuXG4gICAgICAgICAgICAgIGNvbnN0IHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yU3RhdGlzdGljU3Vic2NyaXB0aW9uID0gcnRjQ29ubmVjdGlvbk1vbml0b3IucnRjU3RhdGlzdGljLnN1YnNjcmliZShzdGF0aXN0aWNzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNTdGF0aXN0aWNzLnZhbHVlID0gc3RhdGlzdGljcztcblxuICAgICAgICAgICAgICAgIGlmICghc3RhdGlzdGljcykge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgJiYgIXRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYyA9IHN0YXRpc3RpY3MuYXVkaW87XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYyA9IHN0YXRpc3RpY3MudmlkZW87XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgYXVkaW9UcmFja0ZhaWxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGxldCB2aWRlb1RyYWNrRmFpbGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RhdGlzdGljcy5hdWRpbykge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljLnRpbWVzdGFtcCAhPT0gc3RhdGlzdGljcy5hdWRpby50aW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgICAgYXVkaW9UcmFja0ZhaWxlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljLmJ5dGVzUmVjZWl2ZWQgPT09IHN0YXRpc3RpY3MuYXVkaW8uYnl0ZXNSZWNlaXZlZDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoYXVkaW9UcmFja0ZhaWxlZCAmJiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JJc09uTGluZSkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1slc10gQXVkaW8gdHJhY2sgZmFpbGVkIHdpdGggbGFzdCBieXRlc1JlY2VpdmVkIFslc10gaXMgZXF1YWwgdG8gcHJldmlvdXMgYnl0ZXNSZWNlaXZlZCBbJXNdIHdpdGhpbiBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljcy5hdWRpby5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMuYnl0ZXNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEdXJhdGlvbnMoc3RhdGlzdGljcy5hdWRpby50aW1lc3RhbXAgLSB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYy50aW1lc3RhbXApLnRvSXNvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMgPSBzdGF0aXN0aWNzLmF1ZGlvO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChzdGF0aXN0aWNzLnZpZGVvKSB7XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMudGltZXN0YW1wICE9PSBzdGF0aXN0aWNzLnZpZGVvLnRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgICAgICB2aWRlb1RyYWNrRmFpbGVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMuYnl0ZXNSZWNlaXZlZCA9PT0gc3RhdGlzdGljcy52aWRlby5ieXRlc1JlY2VpdmVkO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh2aWRlb1RyYWNrRmFpbGVkICYmIEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvcklzT25MaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBWaWRlbyB0cmFjayBmYWlsZWQgd2l0aCBsYXN0IGJ5dGVzUmVjZWl2ZWQgWyVzXSBpcyBlcXVhbCB0byBwcmV2aW91cyBieXRlc1JlY2VpdmVkIFslc10gd2l0aGluIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aXN0aWNzLnZpZGVvLmJ5dGVzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYy5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IER1cmF0aW9ucyhzdGF0aXN0aWNzLnZpZGVvLnRpbWVzdGFtcCAtIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljLnRpbWVzdGFtcCkudG9Jc29TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYyA9IHN0YXRpc3RpY3MudmlkZW87XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JJc09uTGluZSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuT2ZmbGluZTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh2aWRlb1RyYWNrRmFpbGVkIHx8IGF1ZGlvVHJhY2tGYWlsZWQpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJldHJ5Q2FsbGJhY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbm5lY3Rpb25FcnJvcjtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnBhdXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnNyY09iamVjdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgIHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yLmRpc3Bvc2UoKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUgYWZ0ZXIgdHJhY2sgc3RvcHBlZCB3aXRoIHN0YXRlIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcblxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlICE9PSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlICE9PSBDaGFubmVsU3RhdGUuT2ZmbGluZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA/IENoYW5uZWxTdGF0ZS5QbGF5aW5nIDogQ2hhbm5lbFN0YXRlLlBhdXNlZDtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIHN0YXRlIHJlc3RvcmVkIHRvIFslc10gYWZ0ZXIgcmVjb25uZWN0aW5nJywgQ2hhbm5lbFN0YXRlW3RoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQocnRjQ29ubmVjdGlvbk1vbml0b3JTdGF0aXN0aWNTdWJzY3JpcHRpb24pO1xuXG4gICAgICAgICAgICAgIGlmICghU0RLLmF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBhdXNlZDtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBwbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudChtZWRpYVN0cmVhbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhcHBseVJ0Y0NvbmZpZ3VyYXRpb24oXG4gICAgb3B0aW9uYWxQZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uIHwgbnVsbCxcbiAgICBydGNDb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb24+IHtcbiAgICBpZiAoIW9wdGlvbmFsUGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24gPSBSdGNDb25maWd1cmF0aW9uTWFuYWdlci50cnVuY2F0ZUljZVNlcnZlcnMocnRjQ29uZmlndXJhdGlvbik7XG5cbiAgICAgIHJldHVybiBTREsucGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlLmNyZWF0ZVBlZXJDb25uZWN0aW9uKHJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld1J0Y0NvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAuLi5vcHRpb25hbFBlZXJDb25uZWN0aW9uLmdldENvbmZpZ3VyYXRpb24oKSxcbiAgICAgIC4uLnJ0Y0NvbmZpZ3VyYXRpb25cbiAgICB9O1xuXG4gICAgb3B0aW9uYWxQZWVyQ29ubmVjdGlvbi5zZXRDb25maWd1cmF0aW9uKG5ld1J0Y0NvbmZpZ3VyYXRpb24pO1xuXG4gICAgcmV0dXJuIG9wdGlvbmFsUGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBwcml2YXRlIHJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBpZiAocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlID09PSAnY2xvc2VkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlJlY29ubmVjdGluZztcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA8IFNESy5tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIHx8ICFTREsuYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cysrO1xuXG4gICAgICBjb25zdCBpc0NsaWVudE9mZmVyRmxvdyA9IHBlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uPy50eXBlID09PSAnb2ZmZXInO1xuXG4gICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuY2xpZW50T2ZmZXJEaXNhYmxlZCB8fFxuICAgICAgICAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIHx8XG4gICAgICAgICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldENvbmZpZ3VyYXRpb24gfHxcbiAgICAgICAgIWlzQ2xpZW50T2ZmZXJGbG93XG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUmVjb25uZWN0aW5nIHBlZXIgY29ubmVjdGlvbiBieSByZXN0YXJ0aW5nIElDRScpO1xuXG4gICAgICBjb25zdCBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbiA9IHBlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uO1xuICAgICAgY29uc3QgaWdub3JlZCA9IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHtpY2VSZXN0YXJ0OiB0cnVlfSkudGhlbihvZmZlciA9PiB7XG4gICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihjdXJyZW50TG9jYWxEZXNjcmlwdGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24nLCBlKTtcbiAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gICAgICAgICAgcmV0cnlDYWxsYmFjaygpO1xuICAgICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGYWlsZWQgdG8gcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbiBhZnRlciBbJXNdIGF0dGVtcHRzLCBwZXJmb3JtaW5nIGZ1bGwgcmVjb3ZlcnknLCB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyk7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICAgIHJldHJ5Q2FsbGJhY2soKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKTogQ2hhbm5lbFN0YXRlIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmc7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkVycm9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJU3RyZWFtfSBmcm9tICcuL0lTdHJlYW0nO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCBSZWFsVGltZVN0cmVhbSBmcm9tICcuL1JlYWxUaW1lU3RyZWFtJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgQ2hhbm5lbFN0YXRlIGZyb20gJy4uL2NoYW5uZWxzL0NoYW5uZWxTdGF0ZSc7XG5pbXBvcnQgQ2hhbm5lbENvbnRleHQgZnJvbSAnLi4vY29udGV4dC9DaGFubmVsQ29udGV4dCc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0JztcbmltcG9ydCBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvU3RyZWFtVHJhbnNmb3JtQ29udGV4dCc7XG5pbXBvcnQgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9GcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWxUaW1lU3RyZWFtRmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU3RyZWFtaW5nJyk7XG5cbiAgc3RhdGljIGNyZWF0ZSh0b2tlbjogc3RyaW5nLCBjaGFubmVsQ29udGV4dDogQ2hhbm5lbENvbnRleHQsIHBlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0LCBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD4pOiBJU3RyZWFtIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB0b2tlbkNhcGFiaWxpdGllcyA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLmNhcGFiaWxpdGllcztcblxuICAgIGlmICh0b2tlbkNhcGFiaWxpdGllcy5pbmNsdWRlcygnb24tZGVtYW5kJykpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignVGhpcyBidWlsZCBkb2VzIG5vdCBzdXBwb3J0IE9uLURlbWFuZCBTdHJlYW0gcGxheWJhY2suJyk7XG4gICAgICBjaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodG9rZW5DYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ3N0cmVhbWluZycpKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1RoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBMaXZlIFN0cmVhbSBwbGF5YmFjay4nKTtcbiAgICAgIGNoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUmVhbFRpbWVTdHJlYW0oY2hhbm5lbENvbnRleHQsIHBlZXJDb25uZWN0aW9uQ29udGV4dCwgc3RyZWFtVHJhbnNmb3JtQ29udGV4dCwgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSZWFsVGltZVN0cmVhbUZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQge0F1ZGlvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlYyc7XG5pbXBvcnQge1ZpZGVvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYyc7XG5pbXBvcnQge0lFbmNvZGVkU3RyZWFtU2lua30gZnJvbSAnLi9FbmNvZGVkU3RyZWFtU2luayc7XG5pbXBvcnQge1N0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFja30gZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLCB7U3Vycm9nYXRlRnJhbWVUeXBlLCBTa2lwRnJhbWV9IGZyb20gJy4vU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlcic7XG5pbXBvcnQge1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZX0gZnJvbSAnLi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlJztcbmltcG9ydCBDaHVuayBmcm9tICcuL0NodW5rJztcblxuZXhwb3J0IHR5cGUgRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQgPSB7XG4gIHZpZGVvVHJhY2s6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaztcbiAgYXVkaW9UcmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrO1xuICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+O1xuICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG5cbiAgY29uc3RydWN0b3IoY29udGV4dDogRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQpIHtcbiAgICB0aGlzLmluaXRpYWxpemUoY29udGV4dCk7XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoY29udGV4dDogRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAoY29udGV4dC52aWRlb1RyYWNrLm1lZGlhU3RyZWFtVHJhY2spIHtcbiAgICAgIGNvbnRleHQudmlkZW9UcmFjay50cmFuc2Zvcm1GdW5jdGlvbk5hbWVzLnB1c2goJ3Byb3RlY3RlZC12aWRlbycpO1xuXG4gICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQoY29udGV4dC52aWRlb1RyYWNrLnRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIhLnJlZ2lzdGVyUm91dGUoVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLkVuY29kZWRWaWRlb0NodW5rLCAoY2h1bms6IFJUQ0VuY29kZWRWaWRlb0ZyYW1lKSA9PiB0aGlzLmVuY29kZWRWaWRlb1N0cmVhbUNhbGxiYWNrKGNvbnRleHQudmlkZW9UcmFjaywgY29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rIGFzIElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4sIGNodW5rKSkpO1xuICAgIH1cblxuICAgIGlmIChjb250ZXh0LmF1ZGlvVHJhY2subWVkaWFTdHJlYW1UcmFjaykge1xuICAgICAgY29udGV4dC5hdWRpb1RyYWNrLnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMucHVzaCgncHJvdGVjdGVkLWF1ZGlvJyk7XG5cbiAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChjb250ZXh0LmF1ZGlvVHJhY2sudHJhbnNmb3JtTWVzc2FnZVJvdXRlciEucmVnaXN0ZXJSb3V0ZShUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRW5jb2RlZEF1ZGlvQ2h1bmssIChjaHVuazogUlRDRW5jb2RlZEF1ZGlvRnJhbWUpID0+IHRoaXMuZW5jb2RlZEF1ZGlvU3RyZWFtQ2FsbGJhY2soY29udGV4dC5hdWRpb1RyYWNrLCBjb250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmsgYXMgSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPiwgY2h1bmspKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbmNvZGVkQXVkaW9TdHJlYW1DYWxsYmFjayh0cmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrLCBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+LCBjaHVuazogUlRDRW5jb2RlZEF1ZGlvRnJhbWUpOiBQcm9taXNlPENodW5rPiB7XG4gICAgaWYgKCFhd2FpdCBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rKHRyYWNrLm1lZGlhU3RyZWFtVHJhY2shLCBjaHVuaykpIHtcbiAgICAgIGNodW5rLmRhdGEgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldEludmFsaWRTdXJyb2dhdGVBdWRpb0RhdGEoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlQXVkaW9TaWxlbnRQZXJDb2RlYyh0cmFjay5jb2RlYyBhcyBBdWRpb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgIH1cblxuICAgIHJldHVybiBjaHVuayBhcyB1bmtub3duIGFzIENodW5rO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbmNvZGVkVmlkZW9TdHJlYW1DYWxsYmFjayh0cmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrLCBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+LCBjaHVuazogUlRDRW5jb2RlZFZpZGVvRnJhbWUpOiBQcm9taXNlPENodW5rIHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKCFhd2FpdCBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rKHRyYWNrLm1lZGlhU3RyZWFtVHJhY2shLCBjaHVuaykpIHtcbiAgICAgIGxldCBzdXJyb2dhdGU6IFN1cnJvZ2F0ZUZyYW1lVHlwZTtcblxuICAgICAgaWYgKGNodW5rLnR5cGUgPT09ICdrZXknKSB7XG4gICAgICAgIHN1cnJvZ2F0ZSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvSUZyYW1lKHRyYWNrLmNvZGVjIGFzIFZpZGVvQ29kZWMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3Vycm9nYXRlID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9QRnJhbWUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN1cnJvZ2F0ZSA9PT0gU2tpcEZyYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY2h1bmsuZGF0YSA9IHN1cnJvZ2F0ZSB8fCBjaHVuay5kYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY2h1bmsudHlwZSA9PT0gJ2tleScpIHtcbiAgICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlVmlkZW9JRnJhbWVQZXJDb2RlYyh0cmFjay5jb2RlYyBhcyBWaWRlb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlVmlkZW9QRnJhbWVQZXJDb2RlYyh0cmFjay5jb2RlYyBhcyBWaWRlb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjaHVuaztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIElFbmNvZGVkU3RyZWFtU2luazxUIGV4dGVuZHMgUlRDRW5jb2RlZEF1ZGlvRnJhbWUgfCBSVENFbmNvZGVkVmlkZW9GcmFtZT4ge1xuICAgICh0cmFjazogTWVkaWFTdHJlYW1UcmFjaywgY2h1bms6IFQpOiBib29sZWFuIHwgUHJvbWlzZUxpa2U8Ym9vbGVhbj47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVuY29kZWRTdHJlYW1TaW5rIHtcbiAgc3RhdGljIHZhbGlkYXRlRW5jb2RlZFN0cmVhbVNpbms8VCBleHRlbmRzIFJUQ0VuY29kZWRBdWRpb0ZyYW1lIHwgUlRDRW5jb2RlZFZpZGVvRnJhbWU+KG1vZGU6ICdhdWRpbycgfCAndmlkZW8nLCBpdGVtOiBJRW5jb2RlZFN0cmVhbVNpbms8VD4pIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdDogYFVuZXhwZWN0ZWQgJHttb2RlfSBFbmNvZGVkIFN0cmVhbSBTaW5rIGZ1bmN0aW9uIHR5cGUuIEZvdW5kIFske3R5cGVvZiBpdGVtfV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChpdGVtLmxlbmd0aCAhPT0gMikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0OiBgVW5leHBlY3RlZCAke21vZGV9IEVuY29kZWQgU3RyZWFtIFNpbmsgZnVuY3Rpb24gcGFyYW1ldGVyIGxlbmd0aC4gRXhwZWN0ZWQgMi4gRm91bmQgWyR7aXRlbS5sZW5ndGh9XWBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgdmFsaWRhdGlvblJlc3VsdDogJ29rJ1xuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0VuY29kZWRTdHJlYW1TaW5rIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCB7SVN0cmVhbVRyYWNrVHJhbnNmb3JtfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybSc7XG5pbXBvcnQgU3RyZWFtVHJhbnNmb3JtQ29udGV4dCwge1N0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFja30gZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciBmcm9tICcuL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZS53b3JrZXInO1xuaW1wb3J0IHtUcmFuc2Zvcm1NZXNzYWdlVHlwZX0gZnJvbSAnLi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlJztcbmltcG9ydCBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIGZyb20gJy4vd29ya2VyL01lc3NhZ2VSb3V0ZXInO1xuXG50eXBlIE1lZGlhU3RyZWFtVHJhY2tLaW5kID0gJ3ZpZGVvJyB8ICdhdWRpbyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc2VydGFibGVTdHJlYW1zIHtcbiAgc3RhdGljIGNyZWF0ZUVuY29kZWRTdHJlYW1QaXBlbGluZShzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0KTogRGlzcG9zYWJsZUxpc3Qge1xuICAgIGNvbnN0IGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIGNvbnN0IHt2aWRlb1RyYWNrLCBhdWRpb1RyYWNrfSA9IHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gICAgY29uc3QgY3JlYXRlVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJGb3JUcmFjayA9IChjb250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2spID0+IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmUgLSBVc2luZyBXZWJwYWNrJ3Mgd29ya2VyIGxvYWRlciB0byBpbmxpbmUgd29ya2VyXG4gICAgICBjb25zdCB3b3JrZXIgPSBjb250ZXh0LnRyYW5zZm9ybVBpcGVsaW5lV29ya2VyID0gbmV3IFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyKCk7XG5cbiAgICAgIGRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB3b3JrZXIudGVybWluYXRlKCkpKTtcbiAgICAgIGRpc3Bvc2FibGVzLmFkZChjb250ZXh0LnRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIgPSBuZXcgVHJhbnNmb3JtTWVzc2FnZVJvdXRlcih3b3JrZXIpKTtcbiAgICB9O1xuXG4gICAgY29uc3Qge3JlY2VpdmVyOiB2aWRlb1RyYWNrUmVjZWl2ZXIsIG1lZGlhU3RyZWFtVHJhY2s6IHZpZGVvVHJhY2tNZWRpYVN0cmVhbVRyYWNrfSA9IHZpZGVvVHJhY2s7XG5cbiAgICBpZiAodmlkZW9UcmFja1JlY2VpdmVyICYmIHZpZGVvVHJhY2tNZWRpYVN0cmVhbVRyYWNrKSB7XG4gICAgICBjcmVhdGVUcmFuc2Zvcm1QaXBlbGluZVdvcmtlckZvclRyYWNrKHZpZGVvVHJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHtyZWNlaXZlcjogYXVkaW9UcmFja1JlY2VpdmVyLCBtZWRpYVN0cmVhbVRyYWNrOiBhdWRpb1RyYWNrTWVkaWFTdHJlYW1UcmFja30gPSBhdWRpb1RyYWNrO1xuXG4gICAgaWYgKGF1ZGlvVHJhY2tSZWNlaXZlciAmJiBhdWRpb1RyYWNrTWVkaWFTdHJlYW1UcmFjaykge1xuICAgICAgY3JlYXRlVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJGb3JUcmFjayhhdWRpb1RyYWNrKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlzcG9zYWJsZXM7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgY29uZmlndXJlRW5jb2RlZFN0cmVhbVBpcGVsaW5lKHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7dmlkZW9UcmFjaywgYXVkaW9UcmFja30gPSBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICAgIGNvbnN0IGFkZFRyYWNrVHJhbnNmb3JtcyA9ICh0cmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrKSA9PiB7XG4gICAgICBpZiAodHJhY2sudHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIpIHtcbiAgICAgICAgaWYgKHRyYWNrLnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMubGVuZ3RoKSB7XG4gICAgICAgICAgZm9yIChjb25zdCB0cmFuc2Zvcm1GdW5jdGlvbk5hbWUgb2YgdHJhY2sudHJhbnNmb3JtRnVuY3Rpb25OYW1lcykge1xuICAgICAgICAgICAgdHJhY2sudHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5BZGRUcmFuc2Zvcm0sXG4gICAgICAgICAgICAgIGRhdGE6IHRyYW5zZm9ybUZ1bmN0aW9uTmFtZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFJlcXVpcmVkIGZvciBzYWZhcmkgdG8gcHJvcGVybHkgd29yayB3aGVuIG9ubHkgdmlkZW8gdHJhbnNmb3JtYXRpb24gaXMgYWRkZWQgKGkuZS4gRnJhbWVUaW1pbmdJbmZvcm1hdGlvbilcbiAgICAgICAgICB0cmFjay50cmFuc2Zvcm1QaXBlbGluZVdvcmtlci5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5BZGRUcmFuc2Zvcm0sXG4gICAgICAgICAgICBkYXRhOiAncGFzcy10aHJvdWdoJ1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIGFkZFRyYWNrVHJhbnNmb3Jtcyh2aWRlb1RyYWNrKTtcbiAgICBhZGRUcmFja1RyYW5zZm9ybXMoYXVkaW9UcmFjayk7XG5cbiAgICBjb25zdCBjb25maWd1cmVSVENSdHBTY3JpcHRUcmFuc2Zvcm0gPSBhc3luYyhzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0KSA9PiB7XG4gICAgICAvLyBTYWZhcmkgYW5kIEZpcmVmb3ggLi4uXG4gICAgICBjb25zdCBjb25maWd1cmVSVENSdHBTY3JpcHRUcmFuc2Zvcm1Gb3JUcmFjayA9IGFzeW5jKGNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaykgPT4ge1xuICAgICAgICBjb25zdCB7cmVjZWl2ZXI6IHRyYWNrUmVjZWl2ZXIsIG1lZGlhU3RyZWFtVHJhY2s6IHRyYWNrTWVkaWFTdHJlYW1UcmFjaywgdHJhbnNmb3JtUGlwZWxpbmVXb3JrZXI6IHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJ9ID0gY29udGV4dDtcblxuICAgICAgICBpZiAodHJhY2tSZWNlaXZlciAmJiB0cmFja01lZGlhU3RyZWFtVHJhY2sgJiYgdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlcikge1xuICAgICAgICAgIHRyYWNrUmVjZWl2ZXIudHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyLCB7bmFtZTogYCR7dHJhY2tNZWRpYVN0cmVhbVRyYWNrLmtpbmR9LXRyYW5zZm9ybS1waXBlbGluZWB9KTtcblxuICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsICh7ZGF0YTogbWVzc2FnZX06IE1lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICBpZiAobWVzc2FnZS50eXBlID09PSBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5QaXBlbGluZUNvbmZpZ3VyZWQpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIHtvbmNlOiB0cnVlfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7dmlkZW9UcmFjaywgYXVkaW9UcmFja30gPSBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChbY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtRm9yVHJhY2sodmlkZW9UcmFjayksIGNvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybUZvclRyYWNrKGF1ZGlvVHJhY2spXSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGNvbmZpZ3VyZUVuY29kZWRTdHJlYW1zID0gYXN5bmMoc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgY29uZmlndXJlRW5jb2RlZFN0cmVhbXNGb3JUcmFjayA9IChjb250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2spID0+IHtcbiAgICAgICAgY29uc3Qge3JlY2VpdmVyOiB0cmFja1JlY2VpdmVyLCBtZWRpYVN0cmVhbVRyYWNrOiB0cmFja01lZGlhU3RyZWFtVHJhY2ssIHRyYW5zZm9ybVBpcGVsaW5lV29ya2VyOiB0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyfSA9IGNvbnRleHQ7XG5cbiAgICAgICAgaWYgKHRyYWNrUmVjZWl2ZXIgJiYgdHJhY2tNZWRpYVN0cmVhbVRyYWNrICYmIHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZSAtIGNyZWF0ZUVuY29kZWRTdHJlYW1zIG1ldGhvZCBpcyBub3QgZGVmaW5lZCBpbiBsaWIuZG9tLmQudHNcbiAgICAgICAgICBjb25zdCBlbmNvZGVkUmVjZWl2ZXJTdHJlYW1zID0gdHJhY2tSZWNlaXZlci5jcmVhdGVFbmNvZGVkU3RyZWFtcygpO1xuXG4gICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKHtkYXRhOiBtZXNzYWdlfTogTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLlBpcGVsaW5lQ29uZmlndXJlZCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwge29uY2U6IHRydWV9KTtcblxuICAgICAgICAgICAgdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlci5wb3N0TWVzc2FnZShcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNvbmZpZ3VyZVBpcGVsaW5lLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgIHNvdXJjZTogZW5jb2RlZFJlY2VpdmVyU3RyZWFtcy5yZWFkYWJsZSxcbiAgICAgICAgICAgICAgICAgIHNpbms6IGVuY29kZWRSZWNlaXZlclN0cmVhbXMud3JpdGFibGVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHt0cmFuc2ZlcjogW2VuY29kZWRSZWNlaXZlclN0cmVhbXMucmVhZGFibGUsIGVuY29kZWRSZWNlaXZlclN0cmVhbXMud3JpdGFibGVdfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHt2aWRlb1RyYWNrLCBhdWRpb1RyYWNrfSA9IHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gICAgICBjb25zdCBhY3Rpb25zOiBQcm9taXNlPHZvaWQ+W10gPSBbXTtcblxuICAgICAgaWYgKHZpZGVvVHJhY2sucmVjZWl2ZXIgJiYgdmlkZW9UcmFjay50cmFuc2Zvcm1QaXBlbGluZVdvcmtlcikge1xuICAgICAgICBhY3Rpb25zLnB1c2goY29uZmlndXJlRW5jb2RlZFN0cmVhbXNGb3JUcmFjayh2aWRlb1RyYWNrKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhdWRpb1RyYWNrLnJlY2VpdmVyICYmIGF1ZGlvVHJhY2sudHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIpIHtcbiAgICAgICAgYWN0aW9ucy5wdXNoKGNvbmZpZ3VyZUVuY29kZWRTdHJlYW1zRm9yVHJhY2soYXVkaW9UcmFjaykpO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChhY3Rpb25zKTtcbiAgICB9O1xuXG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKSB7XG4gICAgICAvLyBTYWZhcmkgYW5kIEZpcmVmb3guLi5cbiAgICAgIGF3YWl0IGNvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybShzdHJlYW1UcmFuc2Zvcm1Db250ZXh0KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENocm9tZSwgQ2hyb21pdW0uLi5cbiAgICBhd2FpdCBjb25maWd1cmVFbmNvZGVkU3RyZWFtcyhzdHJlYW1UcmFuc2Zvcm1Db250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBjb25maWd1cmVJbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtYXRpb24oXG4gICAgc3RyZWFtOiBNZWRpYVN0cmVhbSxcbiAgICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT4gfCB1bmRlZmluZWQsXG4gICAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT4gfCB1bmRlZmluZWRcbiAgKToge3RyYW5zZm9ybWVkU3RyZWFtOiBNZWRpYVN0cmVhbTsgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0fSB7XG4gICAgY29uc3QgdHJhbnNmb3JtZWRTdHJlYW0gPSBuZXcgTWVkaWFTdHJlYW0oKTtcbiAgICBjb25zdCBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcblxuICAgIHN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHtcbiAgICAgIGNvbnN0IGtpbmQ6IE1lZGlhU3RyZWFtVHJhY2tLaW5kID0gdHJhY2sua2luZCBhcyBNZWRpYVN0cmVhbVRyYWNrS2luZDtcblxuICAgICAgc3dpdGNoIChraW5kKSB7XG4gICAgICAgIGNhc2UgJ3ZpZGVvJzoge1xuICAgICAgICAgIGlmICh2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKSB7XG4gICAgICAgICAgICBjb25zdCBpbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IFRyYW5zZm9ybWVyVHJhbnNmb3JtQ2FsbGJhY2s8VmlkZW9GcmFtZSwgVmlkZW9GcmFtZT4gPSAoY2h1bmssIGNvbnRyb2xsZXIpID0+IHtcbiAgICAgICAgICAgICAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayh0cmFjaywgY2h1bmssIGNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgdmlkZW9UcmFjayA9IHRyYWNrIGFzIE1lZGlhU3RyZWFtVmlkZW9UcmFjaztcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7dHJhbnNmb3JtOiBpbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2t9KTtcbiAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NvciA9IG5ldyBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yKHt0cmFjazogdmlkZW9UcmFja30pO1xuICAgICAgICAgICAgY29uc3QgZ2VuZXJhdG9yID0gbmV3IE1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3Ioe2tpbmQ6IHZpZGVvVHJhY2sua2luZH0pO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gcHJvY2Vzc29yLnJlYWRhYmxlO1xuICAgICAgICAgICAgY29uc3Qgc2luayA9IGdlbmVyYXRvci53cml0YWJsZTtcblxuICAgICAgICAgICAgc291cmNlLnBpcGVUaHJvdWdoKHRyYW5zZm9ybWVyKS5waXBlVG8oc2luayk7XG5cbiAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLmFkZFRyYWNrKGdlbmVyYXRvcik7XG4gICAgICAgICAgICBkaXNwb3NhYmxlcy5hZGQoXG4gICAgICAgICAgICAgIG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5yZW1vdmVUcmFjayhnZW5lcmF0b3IpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNmb3JtZWRTdHJlYW0uYWRkVHJhY2sodHJhY2spO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSAnYXVkaW8nOiB7XG4gICAgICAgICAgaWYgKGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIGNvbnN0IGluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogVHJhbnNmb3JtZXJUcmFuc2Zvcm1DYWxsYmFjazxBdWRpb0RhdGEsIEF1ZGlvRGF0YT4gPSAoY2h1bmssIGNvbnRyb2xsZXIpID0+IHtcbiAgICAgICAgICAgICAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayh0cmFjaywgY2h1bmssIGNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgYXVkaW9UcmFjayA9IHRyYWNrIGFzIE1lZGlhU3RyZWFtQXVkaW9UcmFjaztcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7dHJhbnNmb3JtOiBpbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2t9KTtcbiAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NvciA9IG5ldyBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yKHt0cmFjazogYXVkaW9UcmFja30pO1xuICAgICAgICAgICAgY29uc3QgZ2VuZXJhdG9yID0gbmV3IE1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3Ioe2tpbmQ6IGF1ZGlvVHJhY2sua2luZH0pO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gcHJvY2Vzc29yLnJlYWRhYmxlO1xuICAgICAgICAgICAgY29uc3Qgc2luayA9IGdlbmVyYXRvci53cml0YWJsZTtcblxuICAgICAgICAgICAgc291cmNlLnBpcGVUaHJvdWdoKHRyYW5zZm9ybWVyKS5waXBlVG8oc2luayk7XG5cbiAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLmFkZFRyYWNrKGdlbmVyYXRvcik7XG5cbiAgICAgICAgICAgIGNvbnN0IG1lZGlhU3RyZWFtID0gbmV3IE1lZGlhU3RyZWFtKCk7XG4gICAgICAgICAgICBjb25zdCBhdWRpb1B1bXBlciA9IG5ldyBBdWRpbygpO1xuXG4gICAgICAgICAgICBtZWRpYVN0cmVhbS5hZGRUcmFjayh0cmFjayk7XG4gICAgICAgICAgICBhdWRpb1B1bXBlci5zcmNPYmplY3QgPSBtZWRpYVN0cmVhbTtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYXVkaW9QdW1wZXIpO1xuICAgICAgICAgICAgZGlzcG9zYWJsZXMuYWRkKFxuICAgICAgICAgICAgICBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRTdHJlYW0ucmVtb3ZlVHJhY2soZ2VuZXJhdG9yKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGF1ZGlvUHVtcGVyKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLmFkZFRyYWNrKHRyYWNrKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoa2luZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHJhbnNmb3JtZWRTdHJlYW0sXG4gICAgICBkaXNwb3NhYmxlc1xuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0luc2VydGFibGVTdHJlYW1zIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIElTdHJlYW1UcmFja1RyYW5zZm9ybTxUIGV4dGVuZHMgQXVkaW9EYXRhIHwgVmlkZW9GcmFtZT4ge1xuICAgICh0cmFjazogTWVkaWFTdHJlYW1UcmFjaywgY2h1bms6IFQsIGNvbnRyb2xsZXI6IFRyYW5zZm9ybVN0cmVhbURlZmF1bHRDb250cm9sbGVyPFQ+KTogdm9pZCB8IFByb21pc2VMaWtlPHZvaWQ+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJlYW1UcmFja1RyYW5zZm9ybSB7XG4gIHN0YXRpYyB2YWxpZGF0ZU1lZGlhU3RyZWFtVHJhY2tUcmFuc2Zvcm08VCBleHRlbmRzIEF1ZGlvRGF0YSB8IFZpZGVvRnJhbWU+KG1vZGU6ICdhdWRpbycgfCAndmlkZW8nLCBpdGVtOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VD4pIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdDogYFVuZXhwZWN0ZWQgJHttb2RlfSBNZWRpYSBTdHJlYW0gVHJhY2sgdHJhbnNmb3JtIGZ1bmN0aW9uIHR5cGUuIEZvdW5kIFske3R5cGVvZiBpdGVtfV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChpdGVtLmxlbmd0aCAhPT0gMykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0OiBgVW5leHBlY3RlZCAke21vZGV9IE1lZGlhIFN0cmVhbSBUcmFjayB0cmFuc2Zvcm0gZnVuY3Rpb24gcGFyYW1ldGVyIGxlbmd0aC4gRXhwZWN0ZWQgMy4gRm91bmQgWyR7aXRlbS5sZW5ndGh9XWBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgdmFsaWRhdGlvblJlc3VsdDogJ29rJ1xuICAgIH07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEJyb3dzZXJEZXRlY3RvciBmcm9tICcuLi8uLi9kb20vQnJvd3NlckRldGVjdG9yJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCB7QXVkaW9Db2RlY30gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjJztcbmltcG9ydCB7VmlkZW9Db2RlY30gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjJztcbmltcG9ydCBhbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL2gyNjQvbmFsVW5pdC9Bbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSc7XG5pbXBvcnQgc3Vycm9nYXRlSDI2NDI4eDE2SUZyYW1lIGZyb20gJy4vc3Vycm9nYXRlRnJhbWVzL2gyNjQvc3Vycm9nYXRlMjh4MTZJRnJhbWUnO1xuaW1wb3J0IHN1cnJvZ2F0ZUgyNjQyOHgxNlBGcmFtZSBmcm9tICcuL3N1cnJvZ2F0ZUZyYW1lcy9oMjY0L3N1cnJvZ2F0ZTI4eDE2UEZyYW1lJztcblxuZXhwb3J0IGNvbnN0IFNraXBGcmFtZSA9IFN5bWJvbCgpO1xuXG5leHBvcnQgdHlwZSBTdXJyb2dhdGVGcmFtZVR5cGUgPSBBcnJheUJ1ZmZlciB8IHVuZGVmaW5lZCB8IHR5cGVvZiBTa2lwRnJhbWU7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNTYWZhcmkgPSBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYWZhcmknO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNBbmRyb2lkQ2hyb21lID0gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuaXNBbmRyb2lkO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc2luZ2xlWmVyb0J5dGUgPSBuZXcgVWludDhBcnJheShbMHgwMF0pO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXlBdWRpb1NpbGVudFBlckNvZGVjID0ge09QVVM6IG5ldyBVaW50OEFycmF5KFsweDY4LCAweDA3LCAweGQ5LCAweGFiLCAweGJjLCAweDc5LCAweDg3LCAweGFiLCAweDhlLCAweDRhLCAweDE0LCAweGYzLCAweGE3LCAweDFjLCAweGYyLCAweDlhLCAweDdhLCAweDQ1LCAweGE3LCAweDJkLCAweDQ0LCAweDI1LCAweDc0LCAweDRjLCAweGFkLCAweDE2LCAweGIzLCAweDBlLCAweDUxLCAweDU3LCAweGVhLCAweGU3LCAweGFkLCAweDJhLCAweDM4LCAweGNlLCAweDMzXSl9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjID0ge1xuICAgIEgyNjQ6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDY3LCAweGY0LCAweDAwLCAweDBhLCAweDkxLCAweDliLCAweDJiLCAweGYxLCAweGYxLCAweGY4LCAweDA4LCAweDgwLCAweDAwLCAweDAwLCAweDAzLCAweDAwLCAweDgwLCAweDAwLCAweDAwLCAweDE5LCAweDA3LCAweDg5LCAweDEyLCAweGNiLCAvLyBTZXF1ZW5jZSBwYXJhbWV0ZXIgc2V0XG4gICAgICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMHg2OCwgMHhlYiwgMHhlMywgMHhjNCwgMHg0OCwgMHg0NCwgLy8gUGljdHVyZSBwYXJhbXRlciBzZXRcbiAgICAgIC8qICovIDB4MDAsIDB4MDAsIDB4MDEsIDB4NjUsIDB4ODgsIDB4ODIsIDB4MDAsIDB4M2YsIDB4NzAsIDB4MjMsIDB4ODYsIDB4ZTYsIDB4ZDEsIDB4ODAsIDB4MDksIDB4YWYsIDB4MGEsIDB4NDEsIDB4NjYsIDB4NmIsIDB4NTQsIDB4NDYsIDB4ZmIsIDB4NzEsIDB4ZDksIDB4N2YsIDB4ZmYsIDB4ZmYsIDB4ZjldKSwgLy8gU2xpY2UgbGF5ZXI6IGlkciBkYXRhXG4gICAgVlA4OiBuZXcgVWludDhBcnJheShbMHhiMCwgMHgwMiwgMHgwMCwgMHg5ZCwgMHgwMSwgMHgyYSwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzOSwgMHg2YiwgMHgwMCwgMHgyNywgMHgxYywgMHgyNCwgMHgwYywgMHgyYywgMHgyYywgMHg0NCwgMHhjYywgMHgyNCwgMHg0MSwgMHhhOCwgMHgwMCwgMHgxMywgMHhhNywgMHhhMywgMHg3YSwgMHg1MCwgMHgwMCwgMHhmZSwgMHhlYiwgMHhkZSwgMHgyZiwgMHg4YSwgMHgxZSwgMHg2YiwgMHg3YiwgMHgwNywgMHg3MiwgMHg2MywgMHgwOSwgMHhhNCwgMHg4ZSwgMHhjMF0pLFxuICAgIFZQOTogbmV3IFVpbnQ4QXJyYXkoWzB4ODIsIDB4NDksIDB4ODMsIDB4NDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4NzYsIDB4MzgsIDB4MjQsIDB4MWMsIDB4MTksIDB4YTAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4NDAsIDB4MDAsIDB4MTEsIDB4YmYsIDB4ZGQsIDB4NzcsIDB4ZmYsIDB4NDAsIDB4N2YsIDB4YjEsIDB4MDBdKVxuICB9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjID0ge1xuICAgIEgyNjQ6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDQxLCAweDlhLCAweDY4LCAweDQ5LCAweGE4LCAweDQxLCAweDY4LCAweDk5LCAweDRjLCAweDBmLCAweGZmLCAweDkyLCAweDgxXSksIC8vIFNsaWNlIGxheWVyOiBub24gaWRyIGRhdGFcbiAgICBWUDg6IG5ldyBVaW50OEFycmF5KFsweDMxLCAweDAzLCAweDAwLCAweGU0LCAweGUwLCAweGE4LCAweDliLCAweDM3LCAweGFmLCAweDEwLCAweDRmLCAweDRmLCAweGIxLCAweDBhLCAweDJmLCAweGU0LCAweDkyLCAweGMwLCAweDFmLCAweGU3LCAweDRmLCAweDQ2LCAweGZmLCAweGVlLCAweDUxLCAweGMxLCAweDVkLCAweDAwLCAweGZlLCAweGViLCAweGRlLCAweDJmLCAweDhhLCAweDFlLCAweDZiLCAweDdiLCAweDA3LCAweDcyLCAweDYzLCAweDA5LCAweGE0LCAweDhlLCAweGMwXSksXG4gICAgVlA5OiBuZXcgVWludDhBcnJheShbMHg4NiwgMHgwMCwgMHg0MCwgMHg5MiwgMHg5YywgMHgyNCwgMHg0OCwgMHgwMCwgMHgwMCwgMHgwMywgMHg3MCwgMHgwMCwgMHgwMCwgMHg0YiwgMHg0MF0pXG4gIH07XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGUyOHgxNkgyNjRJRnJhbWUgPSBzdXJyb2dhdGVIMjY0Mjh4MTZJRnJhbWU7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGUyOHgxNkgyNjRQRnJhbWUgPSBzdXJyb2dhdGVIMjY0Mjh4MTZQRnJhbWU7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQgPSAxO1xuICBwcml2YXRlIHN0YXRpYyBfc3Vycm9nYXRlMjh4MTZQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXJSZXNldDtcblxuICBzdGF0aWMgZ2V0U3Vycm9nYXRlQXVkaW9TaWxlbnRQZXJDb2RlYyhjb2RlYzogQXVkaW9Db2RlYyk6IEFycmF5QnVmZmVyIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKGNvZGVjKSB7XG4gICAgICBjYXNlIEF1ZGlvQ29kZWMuT1BVUzpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYy5PUFVTLmJ1ZmZlcjtcblxuICAgICAgLy8gVE9ETyAoQVopOiBBZGQgYSBkdW1teSBBQUMgc2lsZW50IGZyYW1lIHdoZW4gQUFDIHN1cHBvcnQgaXMgYWRkZWRcbiAgICAgIGNhc2UgQXVkaW9Db2RlYy5BQUM6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGNvZGVjKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0SW52YWxpZFN1cnJvZ2F0ZUF1ZGlvRGF0YSgpOiBBcnJheUJ1ZmZlciB7XG4gICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3NpbmdsZVplcm9CeXRlLmJ1ZmZlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRTdXJyb2dhdGVWaWRlb0lGcmFtZVBlckNvZGVjKGNvZGVjOiBWaWRlb0NvZGVjKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMpIHtcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5IMjY0OlxuICAgICAgICBpZiAoU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5faXNTYWZhcmkpIHtcbiAgICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlMjh4MTZIMjY0SUZyYW1lLmJ1ZmZlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMuSDI2NC5idWZmZXI7XG5cbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5WUDg6XG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMuVlA4LmJ1ZmZlcjtcblxuICAgICAgY2FzZSBWaWRlb0NvZGVjLlZQOTpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYy5WUDkuYnVmZmVyO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShjb2RlYyk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldEludmFsaWRTdXJyb2dhdGVWaWRlb0lGcmFtZShjb2RlYzogVmlkZW9Db2RlYyk6IFN1cnJvZ2F0ZUZyYW1lVHlwZSB7XG4gICAgaWYgKChjb2RlYyA9PT0gVmlkZW9Db2RlYy5IMjY0KSAmJiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9pc0FuZHJvaWRDaHJvbWUpIHtcbiAgICAgIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXIgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQ7XG5cbiAgICAgIHJldHVybiBTa2lwRnJhbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3NpbmdsZVplcm9CeXRlLmJ1ZmZlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRTdXJyb2dhdGVWaWRlb1BGcmFtZVBlckNvZGVjKGNvZGVjOiBWaWRlb0NvZGVjKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMpIHtcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5IMjY0OiB7XG4gICAgICAgIGlmIChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9pc1NhZmFyaSkge1xuICAgICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGUyOHgxNkgyNjRQRnJhbWUuYnVmZmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYy5IMjY0LmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgY2FzZSBWaWRlb0NvZGVjLlZQODpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYy5WUDguYnVmZmVyO1xuXG4gICAgICBjYXNlIFZpZGVvQ29kZWMuVlA5OlxuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjLlZQOS5idWZmZXI7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGNvZGVjKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lKCk6IFN1cnJvZ2F0ZUZyYW1lVHlwZSB7XG4gICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3NpbmdsZVplcm9CeXRlLmJ1ZmZlcjtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgYW5uZXhCRm91ckJ5dGVTdGFydENvZGUgZnJvbSAnLi4vLi4vLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9oMjY0L25hbFVuaXQvQW5uZXhCRm91ckJ5dGVTdGFydENvZGUnO1xuXG5leHBvcnQgZGVmYXVsdCBuZXcgVWludDhBcnJheShbXG4gIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAxMDMsIDY2LCAxOTIsIDQyLCAyMTgsIDQsIDQsIDIzMiwgNjQsIDAsIDAsIDMsIDAsIDY0LCAwLCAwLCAxNSwgMzUsIDE5OCwgMTIsIDE2OCxcbiAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDEwNCwgMjA2LCA2MCwgMTI4LFxuICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgNiwgMywgMTY3LCAuLi5uZXcgVWludDhBcnJheSgxNTApLmZpbGwoMjU1KSwgMTI4LFxuICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMTAxLCAxMzYsIDEzMiwgNiwgMTkxLCAyNTUsIDI1NSwgMTUsIDY5LCAwLCAxLCA4NywgMTU5LCAuLi5uZXcgVWludDhBcnJheSgxNSkuZmlsbCgzOSksIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCAxMjhcbl0pOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IGFubmV4QkZvdXJCeXRlU3RhcnRDb2RlIGZyb20gJy4uLy4uLy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvaDI2NC9uYWxVbml0L0FubmV4QkZvdXJCeXRlU3RhcnRDb2RlJztcblxuZXhwb3J0IGRlZmF1bHQgbmV3IFVpbnQ4QXJyYXkoW1xuICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgNiwgMywgMjU1LCA2MSwgLi4ubmV3IFVpbnQ4QXJyYXkoMzE2KS5maWxsKDI1NSksIDEyOCxcbiAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDY1LCAxNTQsIDMyLCAyNiwgMjQwLCAxOCwgNDhcbl0pOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uLy4uLy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCB7VHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLCBUcmFuc2Zvcm1NZXNzYWdlLCBUcmFuc2Zvcm1NZXNzYWdlUGF5bG9hZCwgVHJhbnNmb3JtTWVzc2FnZVR5cGV9IGZyb20gJy4vVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVHJhbnNmb3JtUGlwZWxpbmVNZXNzYWdlUm91dGVyIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXNzYWdlUm91dGVzOiBNYXA8VHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLCA8VD4obWVzc2FnZTogVCkgPT4gdm9pZD4gPSBuZXcgTWFwKCk7XG5cbiAgY29uc3RydWN0b3Iod29ya2VyOiBXb3JrZXIpIHtcbiAgICB0aGlzLmluaXRpYWxpemUod29ya2VyKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlclJvdXRlPFQ+KG1lc3NhZ2VUeXBlOiBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUsIHJvdXRlTWVzc2FnZTogKG1lc3NhZ2U6IFQpID0+IHZvaWQpOiBEaXNwb3NhYmxlIHtcbiAgICB0aGlzLl9tZXNzYWdlUm91dGVzLnNldChtZXNzYWdlVHlwZSwgcm91dGVNZXNzYWdlIGFzIDxUPihtZXNzYWdlOiBUKSA9PiB2b2lkKTtcblxuICAgIHJldHVybiBuZXcgRGlzcG9zYWJsZSgoKSA9PiB0aGlzLl9tZXNzYWdlUm91dGVzLmRlbGV0ZShtZXNzYWdlVHlwZSkpO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fbWVzc2FnZVJvdXRlcy5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKHdvcmtlcjogV29ya2VyKTogdm9pZCB7XG4gICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoe2RhdGE6IG1lc3NhZ2V9OiBNZXNzYWdlRXZlbnQ8VHJhbnNmb3JtTWVzc2FnZT4pID0+IHtcbiAgICAgIGNvbnN0IHJvdXRlTWVzc2FnZURhdGEgPSA8VD4oe3R5cGUsIGRhdGF9OiBUcmFuc2Zvcm1NZXNzYWdlUGF5bG9hZDxUPikgPT4ge1xuICAgICAgICBjb25zdCByb3V0ZU1lc3NhZ2UgPSB0aGlzLl9tZXNzYWdlUm91dGVzLmdldCh0eXBlKTtcblxuICAgICAgICBpZiAoIXJvdXRlTWVzc2FnZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJvdXRlTWVzc2FnZShkYXRhKTtcbiAgICAgIH07XG5cbiAgICAgIHN3aXRjaCAobWVzc2FnZS50eXBlKSB7XG4gICAgICAgIGNhc2UgVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ2h1bms6XG4gICAgICAgIGNhc2UgVHJhbnNmb3JtTWVzc2FnZVR5cGUuTWV0YWRhdGE6XG4gICAgICAgICAgcm91dGVNZXNzYWdlRGF0YShtZXNzYWdlLmRhdGEpO1xuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgIH1cbiAgICB9LCB7b25jZTogZmFsc2V9KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgQ2h1bmsgZnJvbSAnLi4vQ2h1bmsnO1xuaW1wb3J0IHtSdHBUaW1lc3RhbXB9IGZyb20gJy4uLy4uL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb24nO1xuaW1wb3J0IHtEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblBheWxvYWR9IGZyb20gJy4vdHJhbnNmb3Jtcy9mcmFtZVRpbWluZ0luZm9ybWF0aW9uJztcblxuZXhwb3J0IGVudW0gVHJhbnNmb3JtTWVzc2FnZVR5cGUge1xuICBFcnJvciA9IC0xLFxuICBBZGRUcmFuc2Zvcm0gPSAwLFxuICBDb25maWd1cmVQaXBlbGluZSA9IDEsXG4gIE1ldGFkYXRhID0gMixcbiAgQ2h1bmsgPSAzLFxuICBQaXBlbGluZUNvbmZpZ3VyZWQgPSA0XG59XG5cbmV4cG9ydCBlbnVtIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSB7XG4gIEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSAwLFxuICBFbmNvZGVkVmlkZW9DaHVuayA9IDEsXG4gIEVuY29kZWRBdWRpb0NodW5rID0gMixcbiAgU3Vycm9nYXRlVmlkZW9DaHVuayA9IDMsXG4gIFN1cnJvZ2F0ZUF1ZGlvQ2h1bmsgPSA0XG59XG5cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybU1lc3NhZ2VQYXlsb2FkPFQ+ID0ge1xuICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGU7XG4gIGRhdGE6IFQ7XG59O1xuXG50eXBlIFdlYlJUQ0luc2VydGFibGVTdHJlYW1zID0ge1xuICBzb3VyY2U6IFJlYWRhYmxlU3RyZWFtO1xuICBzaW5rOiBXcml0YWJsZVN0cmVhbTtcbn07XG5cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybVN0cmVhbU1ldGFkYXRhID0gRGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25QYXlsb2FkO1xuZXhwb3J0IHR5cGUgTWV0YWRhdGFNZXNzYWdlUGF5bG9hZCA9IHtbdGltZXN0YW1wOiBSdHBUaW1lc3RhbXBdOiB7ZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb246IFRyYW5zZm9ybVN0cmVhbU1ldGFkYXRhfX07XG5cbnR5cGUgVHJhbnNmb3JtTmFtZSA9IHN0cmluZztcbmV4cG9ydCB0eXBlIFRyYW5zZm9ybU1lc3NhZ2UgPVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkFkZFRyYW5zZm9ybTtcbiAgICAgIGRhdGE6IFRyYW5zZm9ybU5hbWU7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNvbmZpZ3VyZVBpcGVsaW5lO1xuICAgICAgZGF0YTogV2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXM7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLk1ldGFkYXRhO1xuICAgICAgZGF0YTogVHJhbnNmb3JtTWVzc2FnZVBheWxvYWQ8TWV0YWRhdGFNZXNzYWdlUGF5bG9hZD47XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNodW5rO1xuICAgICAgZGF0YTogVHJhbnNmb3JtTWVzc2FnZVBheWxvYWQ8Q2h1bms+O1xuICAgIH07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmRlY2xhcmUgY29uc3QgX19CVUlMRF9WRVJTSU9OX186IHN0cmluZztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVyc2lvbk1hbmFnZXIge1xuICBwcml2YXRlIHN0YXRpYyBfZGVmYXVsdFZlcnNpb24gPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG5cbiAgc3RhdGljIGdldCBzZGtWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBfX0JVSUxEX1ZFUlNJT05fXztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFZlcnNpb247XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBUZWxlbWV0cnlTZXJ2aWNlIGZyb20gJy4vVGVsZW1ldHJ5U2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4uL2xvZ2dlci9JQXBwZW5kZXInO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlBcHBlbmRlciBpbXBsZW1lbnRzIElBcHBlbmRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbGVtZXRyeVNlcnZpY2U6IFRlbGVtZXRyeVNlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbmFuY3k6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5O1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkO1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGhyZXNob2xkO1xuICAgIHRoaXMuX3RlbGVtZXRyeVNlcnZpY2UgPSBuZXcgVGVsZW1ldHJ5U2VydmljZSh0ZWxlbWV0cnlDb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIGxvZyhsb2dMZXZlbDogTG9nZ2luZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNhdGVnb3J5OiBzdHJpbmcsIGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAobG9nTGV2ZWwgPCB0aGlzLl90aHJlc2hvbGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90ZWxlbWV0cnlTZXJ2aWNlLnB1c2gobG9nTGV2ZWwsIG1lc3NhZ2UsIGNhdGVnb3J5LCBkYXRlKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ge1xuICBwcml2YXRlIF91cmwgPSAnaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnkvbG9ncyc7XG4gIHByaXZhdGUgX3RlbmFuY3k6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfc2Vzc2lvbklkOiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX2Vudmlyb25tZW50OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3BhZ2VMb2FkVGltZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfdGhyZXNob2xkID0gTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbDtcblxuICBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VybDtcbiAgfVxuXG4gIHNldCB1cmwodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0ZWxlbWV0cnlVcmwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG5cbiAgICB0ZWxlbWV0cnlVcmwucGF0aG5hbWUgPSB0ZWxlbWV0cnlVcmwucGF0aG5hbWUgKyAnL2xvZ3MnO1xuXG4gICAgdGhpcy5fdXJsID0gdGVsZW1ldHJ5VXJsLnRvU3RyaW5nKCk7XG4gIH1cblxuICBnZXQgZW52aXJvbm1lbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnQ7XG4gIH1cblxuICBzZXQgZW52aXJvbm1lbnQoZW52aXJvbm1lbnQ6IHN0cmluZykge1xuICAgIHRoaXMuX2Vudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90ZW5hbmN5O1xuICB9XG5cbiAgc2V0IHRlbmFuY3kodGVuYW5jeTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGVuYW5jeSA9IHRlbmFuY3k7XG4gIH1cblxuICBnZXQgc2Vzc2lvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25JZDtcbiAgfVxuXG4gIHNldCBzZXNzaW9uSWQoc2Vzc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXNzaW9uSWQgPSBzZXNzaW9uSWQ7XG4gIH1cblxuICBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHNldCBwYWdlTG9hZFRpbWUocGFnZUxvYWRUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldCB0aHJlc2hvbGQodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBOdW1iZXJzIGZyb20gJy4uL2xhbmcvTnVtYmVycyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcblxuY29uc3QgcmVxdWVzdFNpemVMaW1pdCA9IDgxOTI7XG5cbmludGVyZmFjZSBJTG9nSXRlbSB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG4gIGxldmVsOiBzdHJpbmc7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgZnVsbFF1YWxpZmllZE5hbWU6IHN0cmluZztcbiAgcnVudGltZTogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcblxuICBwcml2YXRlIF9sb2dzOiBBcnJheTxJTG9nSXRlbT4gPSBbXTtcbiAgcHJpdmF0ZSBfaXNTZW5kaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2RvbWFpbiA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcbiAgICB0aGlzLmdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKS50aGVuKGxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgdGhpcy5fZG9tYWluID0gbG9jYXRpb25Ib3N0bmFtZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1c2gobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCB0aW1lc3RhbXA6IERhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBydW50aW1lID0gKHRpbWVzdGFtcC52YWx1ZU9mKCkgLSB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnBhZ2VMb2FkVGltZSkgLyAxMDAwO1xuICAgIGNvbnN0IGxvZ1JlY29yZCA9IHtcbiAgICAgIHRpbWVzdGFtcDogdGltZXN0YW1wLnRvSVNPU3RyaW5nKCksXG4gICAgICB0ZW5hbmN5OiB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3ksXG4gICAgICBsZXZlbDogTG9nZ2luZ0xldmVsW2xvZ0xldmVsXSxcbiAgICAgIGNhdGVnb3J5LFxuICAgICAgbWVzc2FnZSxcbiAgICAgIHNlc3Npb25JZDogdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQsXG4gICAgICB2ZXJzaW9uOiBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQsXG4gICAgICBmdWxsUXVhbGlmaWVkTmFtZTogdGhpcy5fZG9tYWluLFxuICAgICAgcnVudGltZVxuICAgIH07XG5cbiAgICBpZiAobG9nTGV2ZWwgPCBMb2dnaW5nTGV2ZWwuRXJyb3IpIHtcbiAgICAgIHRoaXMuX2xvZ3MucHVzaChsb2dSZWNvcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9sb2dzLnVuc2hpZnQobG9nUmVjb3JkKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4ocmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUoZ2xvYmFsU2NvcGUubG9jYXRpb25Ib3N0bmFtZSk7XG4gICAgICAgIGdsb2JhbFNjb3BlLnNldFRpbWVvdXQoKCkgPT4gZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpLCAwKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9ncyhsb2dNZXNzYWdlczogQXJyYXk8SUxvZ0l0ZW0+KTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHtyZWNvcmRzOiBsb2dNZXNzYWdlc30pKTtcblxuICAgIHJldHVybiBhd2FpdCBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9nc0lmQWJsZSgpOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGlmICh0aGlzLl9sb2dzLmxlbmd0aCA8PSAwIHx8IHRoaXMuX2lzU2VuZGluZyB8fCAhR2xvYmFsU2NvcGUudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbnVtYmVyT2ZMb2dzVG9TZW5kID0gMDtcbiAgICBsZXQgc2l6ZU9mTG9nc1RvU2VuZCA9IDA7XG5cbiAgICB0aGlzLl9pc1NlbmRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgZ2V0SXRlbVNpemUgPSAoaXRlbTogbnVtYmVyIHwgc3RyaW5nKSA9PiB0eXBlb2YgaXRlbSA9PT0gJ251bWJlcicgPyBOdW1iZXJzLmNvdW50TnVtYmVyTGVuZ3RoKGl0ZW0pIDogaXRlbS5sZW5ndGg7XG4gICAgY29uc3QgZ2V0TG9nU2l6ZSA9IChsb2c6IElMb2dJdGVtKTogbnVtYmVyID0+IE9iamVjdC52YWx1ZXMobG9nKVxuICAgICAgLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyAoaXRlbSA/IGdldEl0ZW1TaXplKGl0ZW0pIDogMCksIDApO1xuXG4gICAgd2hpbGUgKHRoaXMuX2xvZ3MubGVuZ3RoID4gbnVtYmVyT2ZMb2dzVG9TZW5kICYmIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSArIHNpemVPZkxvZ3NUb1NlbmQgPCByZXF1ZXN0U2l6ZUxpbWl0KSB7XG4gICAgICBzaXplT2ZMb2dzVG9TZW5kICs9IGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKTtcbiAgICAgIG51bWJlck9mTG9nc1RvU2VuZCsrO1xuICAgIH1cblxuICAgIGlmICghbnVtYmVyT2ZMb2dzVG9TZW5kKSB7XG4gICAgICB0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0ubWVzc2FnZSA9IHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXS5tZXNzYWdlLnN1YnN0cmluZygwLFxuICAgICAgICBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkgKyAocmVxdWVzdFNpemVMaW1pdCAtIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSkpO1xuICAgICAgbnVtYmVyT2ZMb2dzVG9TZW5kID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2dNZXNzYWdlcyA9IHRoaXMuX2xvZ3Muc2xpY2UoMCwgbnVtYmVyT2ZMb2dzVG9TZW5kKTtcblxuICAgIHRoaXMuX2xvZ3MgPSB0aGlzLl9sb2dzLnNsaWNlKG51bWJlck9mTG9nc1RvU2VuZCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZW5kTG9ncyhsb2dNZXNzYWdlcykudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIER1cmF0aW9ucyB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2R1cmF0aW9uOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoZHVyYXRpb24gPSAwKSB7XG4gICAgdGhpcy5fZHVyYXRpb24gPSBkdXJhdGlvbjtcbiAgfVxuXG4gIHRvSXNvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX2R1cmF0aW9uID09PSAwKSB7XG4gICAgICByZXR1cm4gJ1AwUyc7XG4gICAgfVxuXG4gICAgY29uc3QgaXNOZWdhdGl2ZSA9IHRoaXMuX2R1cmF0aW9uIDwgMDtcbiAgICBjb25zdCBkdXJhdGlvbiA9IGlzTmVnYXRpdmUgPyBNYXRoLmFicyh0aGlzLl9kdXJhdGlvbikgOiB0aGlzLl9kdXJhdGlvbjtcbiAgICBsZXQgb2Zmc2V0ID0gTWF0aC5mbG9vcihkdXJhdGlvbik7XG4gICAgY29uc3QgbWlsbGlzZWNvbmRzID0gb2Zmc2V0ICUgMTAwMDtcblxuICAgIG9mZnNldCA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gMTAwMCk7XG5cbiAgICBjb25zdCBzZWNvbmRzID0gb2Zmc2V0ICUgNjA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDYwKTtcblxuICAgIGNvbnN0IG1pbnV0ZXMgPSBvZmZzZXQgJSA2MDtcblxuICAgIG9mZnNldCA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gNjApO1xuXG4gICAgY29uc3QgaG91cnMgPSBvZmZzZXQgJSAyNDtcbiAgICBjb25zdCBwYXJ0cyA9IFsnUFQnXTtcblxuICAgIGlmIChpc05lZ2F0aXZlKSB7XG4gICAgICBwYXJ0cy51bnNoaWZ0KCctJyk7XG4gICAgfVxuXG4gICAgaWYgKGhvdXJzKSB7XG4gICAgICBwYXJ0cy5wdXNoKGhvdXJzICsgJ0gnKTtcbiAgICB9XG5cbiAgICBpZiAobWludXRlcykge1xuICAgICAgcGFydHMucHVzaChtaW51dGVzICsgJ00nKTtcbiAgICB9XG5cbiAgICBpZiAoc2Vjb25kcyB8fCBtaWxsaXNlY29uZHMpIHtcbiAgICAgIHBhcnRzLnB1c2goU3RyaW5nKHNlY29uZHMpKTtcblxuICAgICAgaWYgKG1pbGxpc2Vjb25kcykge1xuICAgICAgICBwYXJ0cy5wdXNoKCcuJyArIHRoaXMucGFkU3RhcnQobWlsbGlzZWNvbmRzLnRvU3RyaW5nKCksIDMsICcwJykpO1xuICAgICAgfVxuXG4gICAgICBwYXJ0cy5wdXNoKCdTJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oJycpO1xuICB9XG5cbiAgcGFkU3RhcnQoaXRlbTogc3RyaW5nLCB0YXJnZXRMZW5ndGg6IG51bWJlciwgcGFkU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRhcmdldExlbmd0aCA9IHRhcmdldExlbmd0aCA+PiAwO1xuICAgIHBhZFN0cmluZyA9IFN0cmluZygodHlwZW9mIHBhZFN0cmluZyAhPT0gJ3VuZGVmaW5lZCcgPyBwYWRTdHJpbmcgOiAnICcpKTtcblxuICAgIGlmIChpdGVtLmxlbmd0aCA+IHRhcmdldExlbmd0aCkge1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgdGFyZ2V0TGVuZ3RoID0gdGFyZ2V0TGVuZ3RoIC0gaXRlbS5sZW5ndGg7XG5cbiAgICBpZiAodGFyZ2V0TGVuZ3RoID4gcGFkU3RyaW5nLmxlbmd0aCkge1xuICAgICAgcGFkU3RyaW5nICs9IHBhZFN0cmluZy5yZXBlYXQodGFyZ2V0TGVuZ3RoIC8gcGFkU3RyaW5nLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhZFN0cmluZy5zbGljZSgwLCB0YXJnZXRMZW5ndGgpICsgaXRlbTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5jb25zdCBkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDIwMDA7XG5jb25zdCBkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDE7XG5jb25zdCBkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDMwMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXhwb25lbnRpYWxCYWNrb2ZmIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBiYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCxcbiAgICBtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCxcbiAgICBtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZFxuICApIHtcbiAgICB0aGlzLl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgICB0aGlzLl9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgICB0aGlzLl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgfVxuXG4gIGdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQoZmFpbHVyZUNvdW50OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IGJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcyA9IHRoaXMuX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgLyAxMDAwO1xuICAgIGNvbnN0IHJhbmRvbWl6YXRpb24gPSAwLjUgKyAoMC41ICogTWF0aC5yYW5kb20oKSk7IC8vIFswLjUsIDEpXG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmID0gTWF0aC5wb3coYmFja29mZkludGVydmFsSW5TZWNvbmRzLCBmYWlsdXJlQ291bnQgLSAyKTsgLy8gIFsxLzQgMS8yIDEgMiA0IDggLi4uLl1cbiAgICBjb25zdCBleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiA9IE1hdGguZmxvb3IoZXhwb25lbnRpYWxCYWNrb2ZmKSAqIHJhbmRvbWl6YXRpb247XG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kID0gTWF0aC5jZWlsKE1hdGgubWF4KGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uICogMTAwMCwgdGhpcy5fbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCkpO1xuXG4gICAgcmV0dXJuIE1hdGgubWluKGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCwgdGhpcy5fbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElDb21wYXJhYmxlIGZyb20gJy4uL2xhbmcvSUNvbXBhcmFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaW1lbnNpb24gaW1wbGVtZW50cyBJQ29tcGFyYWJsZTxEaW1lbnNpb24+IHtcbiAgcmVhZG9ubHkgd2lkdGg6IG51bWJlcjtcbiAgcmVhZG9ubHkgaGVpZ2h0OiBudW1iZXI7XG5cbiAgc3RhdGljIGdldCBlbXB0eSgpOiBEaW1lbnNpb24ge1xuICAgIHJldHVybiBuZXcgRGltZW5zaW9uKDAsIDApO1xuICB9XG5cbiAgY29uc3RydWN0b3Iod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG4gIH1cblxuICBlcXVhbHMob3RoZXI6IERpbWVuc2lvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvdGhlciAmJiB0aGlzLndpZHRoID09PSBvdGhlci53aWR0aCAmJiB0aGlzLmhlaWdodCA9PT0gb3RoZXIuaGVpZ2h0O1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy53aWR0aH14JHt0aGlzLmhlaWdodH1gO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7U3RyZWFtU2V0dXBMaXN0ZW5lcn0gZnJvbSAnLi4vZG9tL1N0cmVhbVNldHVwTGlzdGVuZXInO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBOZXR3b3JrTW9uaXRvciBmcm9tICcuLi9kb20vTmV0d29ya01vbml0b3InO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5cbmludGVyZmFjZSBJTmV0d29ya1N0YXRpc3RpY3Mge1xuICBydHQ/OiBudW1iZXI7XG4gIGVmZmVjdGl2ZVR5cGU/OiBzdHJpbmc7XG4gIGRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXNzaW9uVGVsZW1ldHJ5IGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU2Vzc2lvblRlbGVtZXRyeScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gU0RLLmFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uZXR3b3JrTW9uaXRvcjogTmV0d29ya01vbml0b3IgPSBuZXcgTmV0d29ya01vbml0b3IoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIF9sYXN0TmV0d29ya1N0YXRpc3RpY3M6IElOZXR3b3JrU3RhdGlzdGljcyA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2VMb2FkVGltZTogbnVtYmVyLCBtZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2UpIHtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yKTtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IG1ldHJpY3NTZXJ2aWNlO1xuXG4gICAgaWYgKCF0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZXNzaW9uVGVsZW1ldHJ5IEZhaWxlZDogTm8gYXBwbGljYXRpb24gbW9uaXRvciBpbml0aWFsaXplZC4nKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX25ldHdvcmtNb25pdG9yLmlzU3VwcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yLmlzRm9yZWdyb3VuZC5zdWJzY3JpYmUoaXNGb3JlZ3JvdW5kID0+IHtcbiAgICAgIHRoaXMucmVjb3JkRm9yZWdyb3VuZENoYW5nZShpc0ZvcmVncm91bmQpO1xuICAgIH0pKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IucnR0LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrUlRUVXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLmVmZmVjdGl2ZVR5cGUuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLmRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHlVcGRhdGUodmFsdWUpO1xuICAgIH0pKTtcbiAgfVxuXG4gIGxpc3Rlbk9uU3RyZWFtU2V0dXAoKTogU3RyZWFtU2V0dXBMaXN0ZW5lciB7XG4gICAgcmV0dXJuIG5ldyBTdHJlYW1TZXR1cExpc3RlbmVyKHRoaXMuX3BhZ2VMb2FkVGltZSk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkRm9yZWdyb3VuZENoYW5nZShpc0ZvcmVncm91bmQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHRpbWVTaW5jZUxhc3RDaGFuZ2UgPSB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcj8uZ2V0VGltZVNpbmNlTGFzdENoYW5nZSgpO1xuXG4gICAgaWYgKCF0aW1lU2luY2VMYXN0Q2hhbmdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBpc0ZvcmVncm91bmQgPyBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkZvcmVncm91bmQgOiBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkJhY2tncm91bmQsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGltZVNpbmNlTGFzdENoYW5nZX1cbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ0FwcGxpY2F0aW9uIGhhcyBnb25lIGludG8gdGhlIFslc10gYWZ0ZXIgWyVzXSBtcycsXG4gICAgICBpc0ZvcmVncm91bmQgPyAnZm9yZWdyb3VuZCcgOiAnYmFja2dyb3VuZCcsXG4gICAgICBuZXcgRHVyYXRpb25zKHRpbWVTaW5jZUxhc3RDaGFuZ2UpLnRvSXNvU3RyaW5nKCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkTmV0d29ya1JUVFVwZGF0ZShuZXdSVFQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgb2xkUnR0ID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLnJ0dDtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5ydHQgPSBuZXdSVFQ7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogbmV3UlRUfSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZFJ0dCA/IHt1aW50NjQ6IG9sZFJ0dH0gOiB1bmRlZmluZWQsXG4gICAgICByZXNvdXJjZTogJ25hdmlnYXRvcidcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBSVFQgY2hhbmdlZCB0byBbJXNdIGZyb20gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIG5ld1JUVCxcbiAgICAgIG9sZFJ0dFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlKG5ld05ldHdvcmtUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG9sZE5ldHdvcmtUeXBlID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmVmZmVjdGl2ZVR5cGU7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZWZmZWN0aXZlVHlwZSA9IG5ld05ldHdvcmtUeXBlO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5OZXR3b3JrVHlwZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7c3RyaW5nOiBuZXdOZXR3b3JrVHlwZX0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGROZXR3b3JrVHlwZSA/IHtzdHJpbmc6IG9sZE5ldHdvcmtUeXBlfSA6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBOZXR3b3JrIGVmZmVjdGl2ZSB0eXBlIGhhcyBjaGFuZ2VkIHRvIFslc10gZnJvbSBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgbmV3TmV0d29ya1R5cGUsXG4gICAgICBvbGROZXR3b3JrVHlwZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZShuZXdDYXBhY2l0eTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBvbGRDYXBhY2l0eSA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSA9IG5ld0NhcGFjaXR5O1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Eb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7ZmxvYXQ6IG5ld0NhcGFjaXR5fSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZENhcGFjaXR5ID8ge2Zsb2F0OiBvbGRDYXBhY2l0eX0gOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBkb3dubGluayB0aHJvdWdocHV0IGNhcGFjaXR5IGNoYW5nZWQgdG8gWyVzXSBmcm9tIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBuZXdDYXBhY2l0eSxcbiAgICAgIG9sZENhcGFjaXR5XG4gICAgKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5cbnR5cGUgQ29udGludWF0aW9uRXZlbnQgPSBIVE1MVmlkZW9FbGVtZW50RXZlbnRNYXBbJ3BsYXknIHwgJ3BsYXlpbmcnIHwgJ3Byb2dyZXNzJyB8ICd0aW1ldXBkYXRlJ107XG5jb25zdCBub29wID0gKCk6IHZvaWQgPT4gdW5kZWZpbmVkO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWaWRlb1RlbGVtZXRyeSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxTdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1N0cmVhbVRlbGVtZXRyeScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RyZWFtSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIF9saXN0ZW5Ub0ZpcnN0VGltZTogKCkgPT4gdm9pZCA9IG5vb3A7XG4gIHByaXZhdGUgX2xpc3RlbkZvclN0YWxsOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfbGlzdGVuRm9yQ29udGludWF0aW9uOiAoZXZlbnQ6IENvbnRpbnVhdGlvbkV2ZW50KSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfdGltZVRvRmlyc3RGcmFtZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfY2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfc3RhcnRSZWNvcmRpbmdGaXJzdEZyYW1lOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF92aWRlb1N0YWxsZWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9sYXN0UHJvZ3Jlc3M6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX3ZpZGVvUmVzb2x1dGlvbjogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyOiBEaXNwb3NhYmxlID0gbmV3IERpc3Bvc2FibGUoKCkgPT4gbnVsbCk7XG4gIHByaXZhdGUgX2NsZWFyUmVidWZmZXJpbmdMaXN0ZW5lcjogRGlzcG9zYWJsZSA9IG5ldyBEaXNwb3NhYmxlKCgpID0+IG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKHN0cmVhbUlkOiBzdHJpbmcsIHBhZ2VMb2FkVGltZTogbnVtYmVyLCBjaGFubmVsU3RhcnRUaW1lOiBudW1iZXIsIG1ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZSkge1xuICAgIHRoaXMuX3N0cmVhbUlkID0gc3RyZWFtSWQ7XG4gICAgdGhpcy5fcGFnZUxvYWRUaW1lID0gcGFnZUxvYWRUaW1lO1xuICAgIHRoaXMuX2NoYW5uZWxTdGFydFRpbWUgPSBjaGFubmVsU3RhcnRUaW1lO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBtZXRyaWNzU2VydmljZTtcbiAgfVxuXG4gIHNldHVwTGlzdGVuZXJGb3JUaW1lVG9GaXJzdFRpbWUodmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGFydFJlY29yZGluZ0ZpcnN0RnJhbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUgPSAoKTogdm9pZCA9PiB0aGlzLmNhbGxUaW1lVG9GaXJzdEZyYW1lKCk7XG5cbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdsb2FkZWRkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuXG4gICAgdGhpcy5fY2xlYXJUaW1lVG9GaXJzdEZyYW1lTGlzdGVuZXIgPSBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkZWRkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSk7XG4gICAgfSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyKTtcbiAgfVxuXG4gIHNldHVwTGlzdGVuZXJGb3JSZWJ1ZmZlcmluZyh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3RlbkZvclN0YWxsID0gKCk6IHZvaWQgPT4gdGhpcy5vblN0YWxsKCk7XG5cbiAgICB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24gPSAoZXZlbnQ6IENvbnRpbnVhdGlvbkV2ZW50KTogdm9pZCA9PiB0aGlzLm9uQ29udGludWF0aW9uKGV2ZW50LCB2aWRlbyk7XG5cbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdzdGFsbGVkJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3N1c3BlbmQnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheScsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3RpbWV1cGRhdGUnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuXG4gICAgdGhpcy5fY2xlYXJSZWJ1ZmZlcmluZ0xpc3RlbmVyID0gbmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3RhbGxlZCcsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3VzcGVuZCcsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXknLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCd0aW1ldXBkYXRlJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9jbGVhclJlYnVmZmVyaW5nTGlzdGVuZXIpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBkdXJhdGlvblNpbmNlUGFnZUxvYWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgcmV0dXJuIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxsVGltZVRvRmlyc3RGcmFtZSgpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5wdXNoVGltZVRvRmlyc3RGcmFtZShub3cpO1xuICAgIHRoaXMucHVzaENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUobm93KTtcblxuICAgIHRoaXMuX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcHVzaFRpbWVUb0ZpcnN0RnJhbWUobm93OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl90aW1lVG9GaXJzdEZyYW1lID0gbm93IC0gdGhpcy5fc3RhcnRSZWNvcmRpbmdGaXJzdEZyYW1lO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5UaW1lVG9GaXJzdEZyYW1lLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IHRoaXMuX3RpbWVUb0ZpcnN0RnJhbWV9LFxuICAgICAgc3RyZWFtSWQ6IHRoaXMuX3N0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gRmlyc3QgZnJhbWUgWyVzXScsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aGlzLl90aW1lVG9GaXJzdEZyYW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcHVzaENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUobm93OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lID0gbm93IC0gdGhpcy5fY2hhbm5lbFN0YXJ0VGltZTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiB0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lfSxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBbJXNdIENoYW5uZWwgY3JlYXRpb24gdG8gZmlyc3QgZnJhbWUgWyVzXScsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb25TdGFsbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdmlkZW9TdGFsbGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5TdGFsbGVkLFxuICAgICAgcnVudGltZTogKERhdGUubm93KCkgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fdmlkZW9TdGFsbGVkID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBbYnVmZmVyaW5nXSBTdHJlYW0gaGFzIHN0YWxsZWQnLFxuICAgICAgdGhpcy5kdXJhdGlvblNpbmNlUGFnZUxvYWQsXG4gICAgICB0aGlzLl9zdHJlYW1JZFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uQ29udGludWF0aW9uKGV2ZW50OiBDb250aW51YXRpb25FdmVudCwgdmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoIXZpZGVvLmJ1ZmZlcmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyTGVuZ3RoID0gdmlkZW8uYnVmZmVyZWQubGVuZ3RoO1xuICAgIGNvbnN0IGhhc05vdFByb2dyZXNzZWRTaW5jZUxhc3RQcm9ncmVzc0V2ZW50ID0gZXZlbnQudHlwZSA9PT0gJ3BsYXlpbmcnXG4gICAgfHwgYnVmZmVyTGVuZ3RoID4gMCA/IChldmVudC50eXBlID09PSAncHJvZ3Jlc3MnXG4gICAgICB8fCBldmVudC50eXBlID09PSAndGltZXVwZGF0ZScpXG4gICAgICAmJiB2aWRlby5idWZmZXJlZC5lbmQoYnVmZmVyTGVuZ3RoIC0gMSkgPT09IHRoaXMuX2xhc3RQcm9ncmVzcyA6IHRydWU7XG5cbiAgICBpZiAoIXRoaXMuX3ZpZGVvU3RhbGxlZCB8fCBoYXNOb3RQcm9ncmVzc2VkU2luY2VMYXN0UHJvZ3Jlc3NFdmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudC50eXBlID09PSAncHJvZ3Jlc3MnKSB7XG4gICAgICB0aGlzLl9sYXN0UHJvZ3Jlc3MgPSB2aWRlby5idWZmZXJlZC5lbmQoYnVmZmVyTGVuZ3RoIC0gMSk7XG4gICAgfVxuXG4gICAgY29uc3QgdGltZVNpbmNlU3RvcCA9IERhdGUubm93KCkgLSB0aGlzLl92aWRlb1N0YWxsZWQ7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLkJ1ZmZlcmluZyxcbiAgICAgIHJ1bnRpbWU6IChEYXRlLm5vdygpIC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGltZVNpbmNlU3RvcH0sXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBbYnVmZmVyaW5nXSBTdHJlYW0gaGFzIHJlY292ZXJlZCBmcm9tIHN0YWxsIGFmdGVyIFslc10nLFxuICAgICAgdGhpcy5kdXJhdGlvblNpbmNlUGFnZUxvYWQsXG4gICAgICB0aGlzLl9zdHJlYW1JZCxcbiAgICAgIG5ldyBEdXJhdGlvbnModGltZVNpbmNlU3RvcCkudG9Jc29TdHJpbmcoKVxuICAgICk7XG4gICAgdGhpcy5fdmlkZW9TdGFsbGVkID0gbnVsbDtcbiAgfVxuXG4gIG9uVmlkZW9SZXNvbHV0aW9uQ2hhbmdlcyhuZXdSZXNvbHV0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJlc29sdXRpb25DaGFuZ2VkLFxuICAgICAgcnVudGltZTogKERhdGUubm93KCkgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7c3RyaW5nOiBuZXdSZXNvbHV0aW9ufSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IHRoaXMuX3ZpZGVvUmVzb2x1dGlvbiA/IHtzdHJpbmc6IHRoaXMuX3ZpZGVvUmVzb2x1dGlvbn0gOiB1bmRlZmluZWQsXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX3ZpZGVvUmVzb2x1dGlvbiA9IG5ld1Jlc29sdXRpb247XG4gIH1cbn0iLCJcbmltcG9ydCB3b3JrZXIgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3dvcmtlci1sb2FkZXIvZGlzdC9ydW50aW1lL2lubGluZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBXb3JrZXJfZm4oKSB7XG4gIHJldHVybiB3b3JrZXIoXCIvKioqKioqLyAoKCkgPT4geyAvLyB3ZWJwYWNrQm9vdHN0cmFwXFxuLyoqKioqKi8gXFx0dmFyIF9fd2VicGFja19tb2R1bGVzX18gPSAoe1xcblxcbi8qKiovIFxcXCIuL3NyYy9sYW5nL2Fzc2VydFVucmVhY2hhYmxlLnRzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9zcmMvbGFuZy9hc3NlcnRVbnJlYWNoYWJsZS50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgoX191bnVzZWRfd2VicGFja19tb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHtcXG5cXG5cXFwidXNlIHN0cmljdFxcXCI7XFxuLyogdW51c2VkIGhhcm1vbnkgZXhwb3J0IGFzc2VydFVucmVhY2hhYmxlICovXFxuLyoqXFxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cXG4gKi9cXG5cXG5mdW5jdGlvbiBhc3NlcnRVbnJlYWNoYWJsZSh4KSB7XFxuICB0aHJvdyBuZXcgRXJyb3IoXFxcIlVuZXhwZWN0ZWQgdmFsdWUgW1xcXCIuY29uY2F0KHgsIFxcXCJdLiBUaGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkXFxcIikpO1xcbn1cXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXFxcImRlZmF1bHRcXFwiXSA9IChhc3NlcnRVbnJlYWNoYWJsZSk7XFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vc3JjL3Byb21pc2UvUHJvbWlzZS50c1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9zcmMvcHJvbWlzZS9Qcm9taXNlLnRzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7XFxuXFxuXFxcInVzZSBzdHJpY3RcXFwiO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX3R5cGVvZl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mLmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfdHlwZW9mX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc190eXBlb2ZfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9Qcm9taXNlSGFuZGxlcl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9Qcm9taXNlSGFuZGxlciAqLyBcXFwiLi9zcmMvcHJvbWlzZS9Qcm9taXNlSGFuZGxlci50c1xcXCIpO1xcblxcblxcblxcblxcbi8qKlxcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXFxuICovXFxuLy8gTm90ZTogVGhpcyBQcm9taXNlIHBvbHlmaWxsIGlzIGluY2x1ZGVkIGZvciBicm93c2VyIGJ1aWxkcyBvbmx5IHRvIGFkZHJlc3MgY29tcGF0aWJpbGl0eSBpc3N1ZXNcXG4vLyB3aXRoIG9sZGVyIGJyb3dzZXJzIHdob3NlIG5hdGl2ZSBQcm9taXNlPFQ+aW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCAuZmluYWxseS5cXG5cXG5cXG52YXIgUHJvbWlzZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XFxuICBmdW5jdGlvbiBQcm9taXNlKGNhbGxiYWNrKSB7XFxuICAgIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX19kZWZhdWx0KCkodGhpcywgUHJvbWlzZSk7XFxuICAgIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX19kZWZhdWx0KCkodGhpcywgXFxcIl9zdGF0ZVxcXCIsIHZvaWQgMCk7XFxuICAgIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX19kZWZhdWx0KCkodGhpcywgXFxcIl9oYW5kbGVkXFxcIiwgdm9pZCAwKTtcXG4gICAgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQoKSh0aGlzLCBcXFwiX3ZhbHVlXFxcIiwgdm9pZCAwKTtcXG4gICAgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQoKSh0aGlzLCBcXFwiX2RlZmVycmVkc1xcXCIsIHZvaWQgMCk7XFxuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBQcm9taXNlKSkge1xcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb21pc2VzIG11c3QgYmUgY29uc3RydWN0ZWQgdmlhIG5ldycpO1xcbiAgICB9XFxuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdub3QgYSBmdW5jdGlvbicpO1xcbiAgICB9XFxuICAgIHRoaXMuX3N0YXRlID0gMDtcXG4gICAgdGhpcy5faGFuZGxlZCA9IGZhbHNlO1xcbiAgICB0aGlzLl92YWx1ZSA9IG51bGw7XFxuICAgIHRoaXMuX2RlZmVycmVkcyA9IFtdO1xcbiAgICB0aGlzLmRvUmVzb2x2ZShjYWxsYmFjayk7XFxuICB9XFxuICByZXR1cm4gX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQoKShQcm9taXNlLCBbe1xcbiAgICBrZXk6IFxcXCJkb1Jlc29sdmVcXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZG9SZXNvbHZlKGNhbGxiYWNrKSB7XFxuICAgICAgdmFyIF90aGlzID0gdGhpcztcXG4gICAgICB2YXIgZG9uZSA9IGZhbHNlO1xcbiAgICAgIHRyeSB7XFxuICAgICAgICBjYWxsYmFjayhmdW5jdGlvbiAodmFsdWUpIHtcXG4gICAgICAgICAgaWYgKGRvbmUpIHtcXG4gICAgICAgICAgICByZXR1cm47XFxuICAgICAgICAgIH1cXG4gICAgICAgICAgZG9uZSA9IHRydWU7XFxuICAgICAgICAgIF90aGlzLnByb21pc2VSZXNvbHZlKHZhbHVlKTtcXG4gICAgICAgIH0sIGZ1bmN0aW9uIChyZWFzb24pIHtcXG4gICAgICAgICAgaWYgKGRvbmUpIHtcXG4gICAgICAgICAgICByZXR1cm47XFxuICAgICAgICAgIH1cXG4gICAgICAgICAgZG9uZSA9IHRydWU7XFxuICAgICAgICAgIF90aGlzLnByb21pc2VSZWplY3QocmVhc29uKTtcXG4gICAgICAgIH0pO1xcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XFxuICAgICAgICBpZiAoZG9uZSkge1xcbiAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICBkb25lID0gdHJ1ZTtcXG4gICAgICAgIHRoaXMucHJvbWlzZVJlamVjdChlcnJvcik7XFxuICAgICAgfVxcbiAgICB9XFxuICB9LCB7XFxuICAgIGtleTogXFxcInByb21pc2VSZXNvbHZlXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHByb21pc2VSZXNvbHZlKG5ld1ZhbHVlKSB7XFxuICAgICAgdmFyIHByb21pc2UgPSB0aGlzO1xcbiAgICAgIHRyeSB7XFxuICAgICAgICAvLyBQcm9taXNlPFQ+UmVzb2x1dGlvbiBQcm9jZWR1cmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9Qcm9taXNlcy1hcGx1cy9Qcm9taXNlcy1zcGVjI3RoZS1Qcm9taXNlLXJlc29sdXRpb24tcHJvY2VkdXJlXFxuICAgICAgICBpZiAobmV3VmFsdWUgPT09IHByb21pc2UpIHtcXG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQSBQcm9taXNlIGNhbm5vdCBiZSByZXNvbHZlZCB3aXRoIGl0IHNlbGYuJyk7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAobmV3VmFsdWUgJiYgKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfdHlwZW9mX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19fZGVmYXVsdCgpKG5ld1ZhbHVlKSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIG5ld1ZhbHVlID09PSAnZnVuY3Rpb24nKSkge1xcbiAgICAgICAgICAvLyBEaXNhYmxpbmcgYSBUUyBjb21waWxlciBjaGVjayBmb3IgbmV4dCBsaW5lIHRvIG5vdCBkbyBleHRyYSBpZiBzdGF0ZW1lbnRzXFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxcbiAgICAgICAgICB2YXIgX3RoZW4gPSBuZXdWYWx1ZS50aGVuO1xcbiAgICAgICAgICBpZiAobmV3VmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XFxuICAgICAgICAgICAgcHJvbWlzZS5fc3RhdGUgPSAzO1xcbiAgICAgICAgICAgIHByb21pc2UuX3ZhbHVlID0gbmV3VmFsdWU7XFxuICAgICAgICAgICAgcHJvbWlzZS5maW5hbGUoKTtcXG4gICAgICAgICAgICByZXR1cm47XFxuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIF90aGVuID09PSAnZnVuY3Rpb24nKSB7XFxuICAgICAgICAgICAgcHJvbWlzZS5kb1Jlc29sdmUoZnVuY3Rpb24gKCkge1xcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1yZXN0LXBhcmFtc1xcbiAgICAgICAgICAgICAgX3RoZW4uYXBwbHkobmV3VmFsdWUsIGFyZ3VtZW50cyk7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBwcm9taXNlLl9zdGF0ZSA9IDE7XFxuICAgICAgICBwcm9taXNlLl92YWx1ZSA9IG5ld1ZhbHVlO1xcbiAgICAgICAgcHJvbWlzZS5maW5hbGUoKTtcXG4gICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICBwcm9taXNlLnByb21pc2VSZWplY3QoZSk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9LCB7XFxuICAgIGtleTogXFxcInByb21pc2VSZWplY3RcXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHJvbWlzZVJlamVjdChuZXdWYWx1ZSkge1xcbiAgICAgIHRoaXMuX3N0YXRlID0gMjtcXG4gICAgICB0aGlzLl92YWx1ZSA9IG5ld1ZhbHVlO1xcbiAgICAgIHRoaXMuZmluYWxlKCk7XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiZmluYWxlXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZpbmFsZSgpIHtcXG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcXG4gICAgICBpZiAodGhpcy5fc3RhdGUgPT09IDIgJiYgdGhpcy5fZGVmZXJyZWRzLmxlbmd0aCA9PT0gMCkge1xcbiAgICAgICAgUHJvbWlzZS5faW1tZWRpYXRlKGZ1bmN0aW9uICgpIHtcXG4gICAgICAgICAgaWYgKCFfdGhpczIuX2hhbmRsZWQpIHtcXG4gICAgICAgICAgICBQcm9taXNlLl91bmhhbmRsZWRSZWplY3Rpb24oX3RoaXMyLl92YWx1ZSk7XFxuICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgIH1cXG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5fZGVmZXJyZWRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XFxuICAgICAgICB0aGlzLmhhbmRsZSh0aGlzLl9kZWZlcnJlZHNbaV0pO1xcbiAgICAgIH1cXG4gICAgICB0aGlzLl9kZWZlcnJlZHMgPSBbXTtcXG4gICAgfVxcbiAgfSwge1xcbiAgICBrZXk6IFxcXCJoYW5kbGVcXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlKGRlZmVycmVkKSB7XFxuICAgICAgdmFyIHByb21pc2UgPSB0aGlzO1xcbiAgICAgIHdoaWxlIChwcm9taXNlLl9zdGF0ZSA9PT0gMykge1xcbiAgICAgICAgcHJvbWlzZSA9IHByb21pc2UuX3ZhbHVlO1xcbiAgICAgIH1cXG4gICAgICBpZiAocHJvbWlzZS5fc3RhdGUgPT09IDApIHtcXG4gICAgICAgIHByb21pc2UuX2RlZmVycmVkcy5wdXNoKGRlZmVycmVkKTtcXG4gICAgICAgIHJldHVybjtcXG4gICAgICB9XFxuICAgICAgcHJvbWlzZS5faGFuZGxlZCA9IHRydWU7XFxuICAgICAgUHJvbWlzZS5faW1tZWRpYXRlKGZ1bmN0aW9uICgpIHtcXG4gICAgICAgIHZhciBjYWxsYmFjayA9IHByb21pc2UuX3N0YXRlID09PSAxID8gZGVmZXJyZWQub25GdWxmaWxsZWQgOiBkZWZlcnJlZC5vblJlamVjdGVkO1xcbiAgICAgICAgaWYgKGNhbGxiYWNrID09PSBudWxsKSB7XFxuICAgICAgICAgIGlmIChwcm9taXNlLl9zdGF0ZSA9PT0gMSkge1xcbiAgICAgICAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlc29sdmUocHJvbWlzZS5fdmFsdWUpO1xcbiAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlamVjdChwcm9taXNlLl92YWx1ZSk7XFxuICAgICAgICAgIH1cXG4gICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIHJlc3VsdDtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKHByb21pc2UuX3ZhbHVlKTtcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgZGVmZXJyZWQucHJvbWlzZS5wcm9taXNlUmVqZWN0KGUpO1xcbiAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZXNvbHZlKHJlc3VsdCk7XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH1dLCBbe1xcbiAgICBrZXk6IFxcXCJhbGxcXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWxsKGFycikge1xcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XFxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyKSkge1xcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ1Byb21pc2UuYWxsIGFjY2VwdHMgYW4gYXJyYXknKSk7XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycik7XFxuICAgICAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcXG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoW10pO1xcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIHJlbWFpbmluZyA9IGFyZ3MubGVuZ3RoO1xcbiAgICAgICAgdmFyIF9tYW5hZ2VSZXNwb25zZSA9IGZ1bmN0aW9uIG1hbmFnZVJlc3BvbnNlKGksIHZhbHVlKSB7XFxuICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgaWYgKHZhbHVlICYmIChfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX3R5cGVvZl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQoKSh2YWx1ZSkgPT09ICdvYmplY3QnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykpIHtcXG4gICAgICAgICAgICAgIHZhciBfdGhlbjIgPSB2YWx1ZS50aGVuO1xcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBfdGhlbjIgPT09ICdmdW5jdGlvbicpIHtcXG4gICAgICAgICAgICAgICAgX3RoZW4yLmNhbGwodmFsdWUsIGZ1bmN0aW9uICh2YWx1ZSkge1xcbiAgICAgICAgICAgICAgICAgIHJldHVybiBfbWFuYWdlUmVzcG9uc2UoaSwgdmFsdWUpO1xcbiAgICAgICAgICAgICAgICB9LCByZWplY3QpO1xcbiAgICAgICAgICAgICAgICByZXR1cm47XFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGFyZ3NbaV0gPSB2YWx1ZTtcXG4gICAgICAgICAgICBpZiAoLS1yZW1haW5pbmcgPT09IDApIHtcXG4gICAgICAgICAgICAgIHJlc29sdmUoYXJncyk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XFxuICAgICAgICAgIH1cXG4gICAgICAgIH07XFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgX21hbmFnZVJlc3BvbnNlKGksIGFyZ3NbaV0pO1xcbiAgICAgICAgfVxcbiAgICAgIH0pO1xcbiAgICB9XFxuICB9LCB7XFxuICAgIGtleTogXFxcInJlc29sdmVcXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVzb2x2ZSh2YWx1ZSkge1xcbiAgICAgIGlmICh2YWx1ZSAmJiBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX3R5cGVvZl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQoKSh2YWx1ZSkgPT09ICdvYmplY3QnICYmIHZhbHVlLmNvbnN0cnVjdG9yID09PSBQcm9taXNlKSB7XFxuICAgICAgICByZXR1cm4gdmFsdWU7XFxuICAgICAgfVxcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xcbiAgICAgICAgcmV0dXJuIHJlc29sdmUodmFsdWUpO1xcbiAgICAgIH0pO1xcbiAgICB9XFxuICB9LCB7XFxuICAgIGtleTogXFxcInJlamVjdFxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWplY3QodmFsdWUpIHtcXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKF8sIHJlamVjdCkge1xcbiAgICAgICAgcmV0dXJuIHJlamVjdCh2YWx1ZSk7XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwicmFjZVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiByYWNlKGFycikge1xcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XFxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyKSkge1xcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ1Byb21pc2UucmFjZSBhY2NlcHRzIGFuIGFycmF5JykpO1xcbiAgICAgICAgfVxcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGFyci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xcbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUoYXJyW2ldKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XFxuICAgICAgICB9XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiX2ltbWVkaWF0ZVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfaW1tZWRpYXRlKGNhbGxiYWNrKSB7XFxuICAgICAgdmFyIGlnbm9yZWQgPSB3aW5kb3cuc2V0VGltZW91dChjYWxsYmFjaywgMCk7XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiX3VuaGFuZGxlZFJlamVjdGlvblxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfdW5oYW5kbGVkUmVqZWN0aW9uKGVycm9yKSB7XFxuICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiBjb25zb2xlKSB7XFxuICAgICAgICBjb25zb2xlLndhcm4oJ1Bvc3NpYmxlIFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjonLCBlcnJvcik7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxcbiAgICAgIH1cXG4gICAgfVxcbiAgfV0pO1xcbn0oKTsgLy8gRGlzYWJsaW5nIGEgVFMgY29tcGlsZXIgY2hlY2sgZm9yIHVuc3VwcG9ydGVkIHByb3RvdHlwZSBjaGFuZ2VcXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XFxuLy8gQHRzLWlnbm9yZVxcblByb21pc2UucHJvdG90eXBlWydjYXRjaCddID0gZnVuY3Rpb24gKG9uUmVqZWN0ZWQpIHtcXG4gIHJldHVybiB0aGlzLnRoZW4obnVsbCwgb25SZWplY3RlZCk7XFxufTtcXG4vLyBEaXNhYmxpbmcgYSBUUyBjb21waWxlciBjaGVjayBmb3IgdW5zdXBwb3J0ZWQgcHJvdG90eXBlIGNoYW5nZVxcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcXG4vLyBAdHMtaWdub3JlXFxuUHJvbWlzZS5wcm90b3R5cGVbJ3RoZW4nXSA9IGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xcbiAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAoKSB7XFxuICAgIHJldHVybiBudWxsO1xcbiAgfSk7XFxuICB0aGlzLmhhbmRsZShuZXcgX1Byb21pc2VIYW5kbGVyX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19bXFxcImRlZmF1bHRcXFwiXShvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgcHJvbWlzZSkpO1xcbiAgcmV0dXJuIHByb21pc2U7XFxufTtcXG4vLyBEaXNhYmxpbmcgYSBUUyBjb21waWxlciBjaGVjayBmb3IgdW5zdXBwb3J0ZWQgcHJvdG90eXBlIGNoYW5nZVxcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcXG4vLyBAdHMtaWdub3JlXFxuUHJvbWlzZS5wcm90b3R5cGVbJ2ZpbmFsbHknXSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xcbiAgcmV0dXJuIHRoaXMudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjYWxsYmFjaygpKS50aGVuKGZ1bmN0aW9uICgpIHtcXG4gICAgICByZXR1cm4gdmFsdWU7XFxuICAgIH0sIGZ1bmN0aW9uICgpIHtcXG4gICAgICByZXR1cm4gbnVsbDtcXG4gICAgfSk7XFxuICB9LCBmdW5jdGlvbiAocmVhc29uKSB7XFxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoY2FsbGJhY2soKSkudGhlbihmdW5jdGlvbiAoKSB7XFxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlYXNvbik7XFxuICAgIH0sIGZ1bmN0aW9uICgpIHtcXG4gICAgICByZXR1cm4gbnVsbDtcXG4gICAgfSk7XFxuICB9KTtcXG59O1xcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcXFwiZGVmYXVsdFxcXCJdID0gKFByb21pc2UpO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL3NyYy9wcm9taXNlL1Byb21pc2VIYW5kbGVyLnRzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9zcmMvcHJvbWlzZS9Qcm9taXNlSGFuZGxlci50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgoX191bnVzZWRfd2VicGFja19tb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHtcXG5cXG5cXFwidXNlIHN0cmljdFxcXCI7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHtcXG4vKiBoYXJtb255IGV4cG9ydCAqLyAgIFxcXCJkZWZhdWx0XFxcIjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gUHJvbWlzZUhhbmRsZXIpXFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyk7XFxuXFxuXFxuXFxuLyoqXFxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cXG4gKi9cXG52YXIgUHJvbWlzZUhhbmRsZXIgPSAvKiNfX1BVUkVfXyovX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQoKShmdW5jdGlvbiBQcm9taXNlSGFuZGxlcihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgcHJvbWlzZSkge1xcbiAgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fX2RlZmF1bHQoKSh0aGlzLCBQcm9taXNlSGFuZGxlcik7XFxuICBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19fZGVmYXVsdCgpKHRoaXMsIFxcXCJvbkZ1bGZpbGxlZFxcXCIsIHZvaWQgMCk7XFxuICBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19fZGVmYXVsdCgpKHRoaXMsIFxcXCJvblJlamVjdGVkXFxcIiwgdm9pZCAwKTtcXG4gIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX19kZWZhdWx0KCkodGhpcywgXFxcInByb21pc2VcXFwiLCB2b2lkIDApO1xcbiAgdGhpcy5vbkZ1bGZpbGxlZCA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogbnVsbDtcXG4gIHRoaXMub25SZWplY3RlZCA9IHR5cGVvZiBvblJlamVjdGVkID09PSAnZnVuY3Rpb24nID8gb25SZWplY3RlZCA6IG51bGw7XFxuICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xcbn0pO1xcblxcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50c1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7XFxuXFxuXFxcInVzZSBzdHJpY3RcXFwiO1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGU6ICgpID0+ICgvKiBiaW5kaW5nICovIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSksXFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBUcmFuc2Zvcm1NZXNzYWdlVHlwZTogKCkgPT4gKC8qIGJpbmRpbmcgKi8gVHJhbnNmb3JtTWVzc2FnZVR5cGUpXFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuLyoqXFxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cXG4gKi9cXG5cXG52YXIgVHJhbnNmb3JtTWVzc2FnZVR5cGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKFRyYW5zZm9ybU1lc3NhZ2VUeXBlKSB7XFxuICBUcmFuc2Zvcm1NZXNzYWdlVHlwZVtUcmFuc2Zvcm1NZXNzYWdlVHlwZVtcXFwiRXJyb3JcXFwiXSA9IC0xXSA9IFxcXCJFcnJvclxcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlVHlwZVtUcmFuc2Zvcm1NZXNzYWdlVHlwZVtcXFwiQWRkVHJhbnNmb3JtXFxcIl0gPSAwXSA9IFxcXCJBZGRUcmFuc2Zvcm1cXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZVR5cGVbVHJhbnNmb3JtTWVzc2FnZVR5cGVbXFxcIkNvbmZpZ3VyZVBpcGVsaW5lXFxcIl0gPSAxXSA9IFxcXCJDb25maWd1cmVQaXBlbGluZVxcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlVHlwZVtUcmFuc2Zvcm1NZXNzYWdlVHlwZVtcXFwiTWV0YWRhdGFcXFwiXSA9IDJdID0gXFxcIk1ldGFkYXRhXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VUeXBlW1RyYW5zZm9ybU1lc3NhZ2VUeXBlW1xcXCJDaHVua1xcXCJdID0gM10gPSBcXFwiQ2h1bmtcXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZVR5cGVbVHJhbnNmb3JtTWVzc2FnZVR5cGVbXFxcIlBpcGVsaW5lQ29uZmlndXJlZFxcXCJdID0gNF0gPSBcXFwiUGlwZWxpbmVDb25maWd1cmVkXFxcIjtcXG4gIHJldHVybiBUcmFuc2Zvcm1NZXNzYWdlVHlwZTtcXG59KHt9KTtcXG52YXIgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUpIHtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbXFxcIkZyYW1lVGltaW5nSW5mb3JtYXRpb25cXFwiXSA9IDBdID0gXFxcIkZyYW1lVGltaW5nSW5mb3JtYXRpb25cXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtcXFwiRW5jb2RlZFZpZGVvQ2h1bmtcXFwiXSA9IDFdID0gXFxcIkVuY29kZWRWaWRlb0NodW5rXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbXFxcIkVuY29kZWRBdWRpb0NodW5rXFxcIl0gPSAyXSA9IFxcXCJFbmNvZGVkQXVkaW9DaHVua1xcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1xcXCJTdXJyb2dhdGVWaWRlb0NodW5rXFxcIl0gPSAzXSA9IFxcXCJTdXJyb2dhdGVWaWRlb0NodW5rXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbXFxcIlN1cnJvZ2F0ZUF1ZGlvQ2h1bmtcXFwiXSA9IDRdID0gXFxcIlN1cnJvZ2F0ZUF1ZGlvQ2h1bmtcXFwiO1xcbiAgcmV0dXJuIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZTtcXG59KHt9KTtcXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL1dvcmtlclRyYW5zZm9ybXMudHNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL1dvcmtlclRyYW5zZm9ybXMudHMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykgPT4ge1xcblxcblxcXCJ1c2Ugc3RyaWN0XFxcIjtcXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgXFxcImRlZmF1bHRcXFwiOiAoKSA9PiAoLyogYmluZGluZyAqLyBXb3JrZXJUcmFuc2Zvcm1zKVxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIH0pO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18pO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18pO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UgKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlLnRzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9mcmFtZVRpbWluZ0luZm9ybWF0aW9uX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL2ZyYW1lVGltaW5nSW5mb3JtYXRpb24gKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvdHJhbnNmb3Jtcy9mcmFtZVRpbWluZ0luZm9ybWF0aW9uLnRzXFxcIik7XFxuXFxuXFxuLyoqXFxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cXG4gKi9cXG5cXG5cXG5cXG52YXIgV29ya2VyVHJhbnNmb3JtcyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XFxuICBmdW5jdGlvbiBXb3JrZXJUcmFuc2Zvcm1zKCkge1xcbiAgICBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19fZGVmYXVsdCgpKHRoaXMsIFdvcmtlclRyYW5zZm9ybXMpO1xcbiAgfVxcbiAgcmV0dXJuIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX19kZWZhdWx0KCkoV29ya2VyVHJhbnNmb3JtcywgbnVsbCwgW3tcXG4gICAga2V5OiBcXFwiY3JlYXRlRnJhbWVUaW1pbmdJbmZvcm1hdGlvblRyYW5zZm9ybVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVGcmFtZVRpbWluZ0luZm9ybWF0aW9uVHJhbnNmb3JtKCkge1xcbiAgICAgIHJldHVybiBuZXcgVHJhbnNmb3JtU3RyZWFtKHtcXG4gICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24gdHJhbnNmb3JtKGNodW5rLCBjb250cm9sbGVyKSB7XFxuICAgICAgICAgICgwLF9mcmFtZVRpbWluZ0luZm9ybWF0aW9uX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19bXFxcImRlZmF1bHRcXFwiXSkoY2h1bmspO1xcbiAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xcbiAgICAgICAgfVxcbiAgICAgIH0pO1xcbiAgICB9XFxuICB9LCB7XFxuICAgIGtleTogXFxcImNyZWF0ZUVuY29kZWRWaWRlb1N0cmVhbVRyYW5zZm9ybVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVFbmNvZGVkVmlkZW9TdHJlYW1UcmFuc2Zvcm0od29ya2VyKSB7XFxuICAgICAgdmFyIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAgPSBuZXcgTWFwKCk7XFxuICAgICAgdmFyIHN1cnJvZ2F0ZUZyYW1lTWVzc2FnZUhhbmRsZXIgPSBmdW5jdGlvbiBzdXJyb2dhdGVGcmFtZU1lc3NhZ2VIYW5kbGVyKGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAsIGNvbnRyb2xsZXIsIF9yZWYpIHtcXG4gICAgICAgIHZhciBtZXNzYWdlID0gX3JlZi5kYXRhO1xcbiAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSAhPT0gX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNodW5rIHx8IG1lc3NhZ2UuZGF0YS50eXBlICE9PSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLlN1cnJvZ2F0ZVZpZGVvQ2h1bmspIHtcXG4gICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5kYXRhO1xcbiAgICAgICAgdmFyIF9tZXNzYWdlRGF0YSRkYXRhID0gbWVzc2FnZURhdGEuZGF0YSxcXG4gICAgICAgICAgc3Vycm9nYXRlID0gX21lc3NhZ2VEYXRhJGRhdGEuc3Vycm9nYXRlLFxcbiAgICAgICAgICB0aW1lc3RhbXAgPSBfbWVzc2FnZURhdGEkZGF0YS50aW1lc3RhbXA7XFxuICAgICAgICB2YXIgY2h1bmtQZW5kaW5nRW5xdWV1ZSA9IGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAuZ2V0KHRpbWVzdGFtcCk7XFxuICAgICAgICBpZiAoIWNodW5rUGVuZGluZ0VucXVldWUpIHtcXG4gICAgICAgICAgY29uc29sZS53YXJuKCdbV29ya2VyVHJhbnNmb3Jtc10gU3Vycm9nYXRlIHZpZGVvIGNodW5rIG5vdCBmb3VuZCBmb3IgdGltZXN0YW1wJywgdGltZXN0YW1wKTtcXG4gICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgfVxcbiAgICAgICAgY2h1bmtQZW5kaW5nRW5xdWV1ZS5kYXRhID0gc3Vycm9nYXRlO1xcbiAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rUGVuZGluZ0VucXVldWUpO1xcbiAgICAgICAgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcC5kZWxldGUodGltZXN0YW1wKTtcXG4gICAgICB9O1xcbiAgICAgIHJldHVybiBuZXcgVHJhbnNmb3JtU3RyZWFtKHtcXG4gICAgICAgIHN0YXJ0OiBmdW5jdGlvbiBzdGFydChjb250cm9sbGVyKSB7XFxuICAgICAgICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgc3Vycm9nYXRlRnJhbWVNZXNzYWdlSGFuZGxlci5iaW5kKG51bGwsIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAsIGNvbnRyb2xsZXIpLCB7XFxuICAgICAgICAgICAgb25jZTogZmFsc2VcXG4gICAgICAgICAgfSk7XFxuICAgICAgICB9LFxcbiAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbiB0cmFuc2Zvcm0oY2h1bmspIHtcXG4gICAgICAgICAgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcC5zZXQoY2h1bmsudGltZXN0YW1wLCBjaHVuayk7XFxuICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2Uoe1xcbiAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5NZXRhZGF0YSxcXG4gICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICB0eXBlOiBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLkVuY29kZWRWaWRlb0NodW5rLFxcbiAgICAgICAgICAgICAgZGF0YToge1xcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IGNodW5rLnRpbWVzdGFtcCxcXG4gICAgICAgICAgICAgICAgZGF0YTogbmV3IFVpbnQ4QXJyYXkoY2h1bmsuZGF0YSksXFxuICAgICAgICAgICAgICAgIHR5cGU6IGNodW5rLnR5cGVcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0cmFuc2ZlcjogW2NodW5rLmRhdGFdXFxuICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgIH0pO1xcbiAgICB9XFxuICB9LCB7XFxuICAgIGtleTogXFxcImNyZWF0ZUVuY29kZWRBdWRpb1N0cmVhbVRyYW5zZm9ybVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVFbmNvZGVkQXVkaW9TdHJlYW1UcmFuc2Zvcm0od29ya2VyKSB7XFxuICAgICAgdmFyIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAgPSBuZXcgTWFwKCk7XFxuICAgICAgdmFyIHN1cnJvZ2F0ZUZyYW1lTWVzc2FnZUhhbmRsZXIgPSBmdW5jdGlvbiBzdXJyb2dhdGVGcmFtZU1lc3NhZ2VIYW5kbGVyKGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAsIGNvbnRyb2xsZXIsIF9yZWYyKSB7XFxuICAgICAgICB2YXIgbWVzc2FnZSA9IF9yZWYyLmRhdGE7XFxuICAgICAgICBpZiAobWVzc2FnZS50eXBlICE9PSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ2h1bmsgfHwgbWVzc2FnZS5kYXRhLnR5cGUgIT09IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuU3Vycm9nYXRlQXVkaW9DaHVuaykge1xcbiAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgbWVzc2FnZURhdGEgPSBtZXNzYWdlLmRhdGE7XFxuICAgICAgICB2YXIgX21lc3NhZ2VEYXRhJGRhdGEyID0gbWVzc2FnZURhdGEuZGF0YSxcXG4gICAgICAgICAgc3Vycm9nYXRlID0gX21lc3NhZ2VEYXRhJGRhdGEyLnN1cnJvZ2F0ZSxcXG4gICAgICAgICAgdGltZXN0YW1wID0gX21lc3NhZ2VEYXRhJGRhdGEyLnRpbWVzdGFtcDtcXG4gICAgICAgIHZhciBjaHVua1BlbmRpbmdFbnF1ZXVlID0gY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcC5nZXQodGltZXN0YW1wKTtcXG4gICAgICAgIGlmICghY2h1bmtQZW5kaW5nRW5xdWV1ZSkge1xcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1tXb3JrZXJUcmFuc2Zvcm1zXSBTdXJyb2dhdGUgYXVkaW8gY2h1bmsgbm90IGZvdW5kIGZvciB0aW1lc3RhbXAnLCB0aW1lc3RhbXApO1xcbiAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICBjaHVua1BlbmRpbmdFbnF1ZXVlLmRhdGEgPSBzdXJyb2dhdGU7XFxuICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmtQZW5kaW5nRW5xdWV1ZSk7XFxuICAgICAgICBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLmRlbGV0ZSh0aW1lc3RhbXApO1xcbiAgICAgIH07XFxuICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xcbiAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uIHN0YXJ0KGNvbnRyb2xsZXIpIHtcXG4gICAgICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBzdXJyb2dhdGVGcmFtZU1lc3NhZ2VIYW5kbGVyLmJpbmQobnVsbCwgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCwgY29udHJvbGxlciksIHtcXG4gICAgICAgICAgICBvbmNlOiBmYWxzZVxcbiAgICAgICAgICB9KTtcXG4gICAgICAgIH0sXFxuICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShjaHVuaykge1xcbiAgICAgICAgICBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLnNldChjaHVuay50aW1lc3RhbXAsIGNodW5rKTtcXG4gICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7XFxuICAgICAgICAgICAgdHlwZTogX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLk1ldGFkYXRhLFxcbiAgICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRW5jb2RlZEF1ZGlvQ2h1bmssXFxuICAgICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogY2h1bmsudGltZXN0YW1wLFxcbiAgICAgICAgICAgICAgICBkYXRhOiBuZXcgVWludDhBcnJheShjaHVuay5kYXRhKSxcXG4gICAgICAgICAgICAgICAgdHlwZTogY2h1bmsudHlwZVxcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRyYW5zZmVyOiBbY2h1bmsuZGF0YV1cXG4gICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiY3JlYXRlUGFzc1Rocm91Z2hUcmFuc2Zvcm1cXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlUGFzc1Rocm91Z2hUcmFuc2Zvcm0oKSB7XFxuICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xcbiAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbiB0cmFuc2Zvcm0oY2h1bmssIGNvbnRyb2xsZXIpIHtcXG4gICAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XFxuICAgICAgICB9XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH1dKTtcXG59KCk7XFxuXFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvdHJhbnNmb3Jtcy9mcmFtZVRpbWluZ0luZm9ybWF0aW9uLnRzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvdHJhbnNmb3Jtcy9mcmFtZVRpbWluZ0luZm9ybWF0aW9uLnRzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgoX191bnVzZWRfd2VicGFja19tb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHtcXG5cXG5cXFwidXNlIHN0cmljdFxcXCI7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZSAqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UudHNcXFwiKTtcXG5cXG5mdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihyLCBlKSB7IHZhciB0ID0gXFxcInVuZGVmaW5lZFxcXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcXFwiQEBpdGVyYXRvclxcXCJdOyBpZiAoIXQpIHsgaWYgKEFycmF5LmlzQXJyYXkocikgfHwgKHQgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkocikpIHx8IGUgJiYgciAmJiBcXFwibnVtYmVyXFxcIiA9PSB0eXBlb2Ygci5sZW5ndGgpIHsgdCAmJiAociA9IHQpOyB2YXIgX24gPSAwLCBGID0gZnVuY3Rpb24gRigpIHt9OyByZXR1cm4geyBzOiBGLCBuOiBmdW5jdGlvbiBuKCkgeyByZXR1cm4gX24gPj0gci5sZW5ndGggPyB7IGRvbmU6ICEwIH0gOiB7IGRvbmU6ICExLCB2YWx1ZTogcltfbisrXSB9OyB9LCBlOiBmdW5jdGlvbiBlKHIpIHsgdGhyb3cgcjsgfSwgZjogRiB9OyB9IHRocm93IG5ldyBUeXBlRXJyb3IoXFxcIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cXFwiKTsgfSB2YXIgbywgYSA9ICEwLCB1ID0gITE7IHJldHVybiB7IHM6IGZ1bmN0aW9uIHMoKSB7IHQgPSB0LmNhbGwocik7IH0sIG46IGZ1bmN0aW9uIG4oKSB7IHZhciByID0gdC5uZXh0KCk7IHJldHVybiBhID0gci5kb25lLCByOyB9LCBlOiBmdW5jdGlvbiBlKHIpIHsgdSA9ICEwLCBvID0gcjsgfSwgZjogZnVuY3Rpb24gZigpIHsgdHJ5IHsgYSB8fCBudWxsID09IHQucmV0dXJuIHx8IHQucmV0dXJuKCk7IH0gZmluYWxseSB7IGlmICh1KSB0aHJvdyBvOyB9IH0gfTsgfVxcbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBhKSB7IGlmIChyKSB7IGlmIChcXFwic3RyaW5nXFxcIiA9PSB0eXBlb2YgcikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KHIsIGEpOyB2YXIgdCA9IHt9LnRvU3RyaW5nLmNhbGwocikuc2xpY2UoOCwgLTEpOyByZXR1cm4gXFxcIk9iamVjdFxcXCIgPT09IHQgJiYgci5jb25zdHJ1Y3RvciAmJiAodCA9IHIuY29uc3RydWN0b3IubmFtZSksIFxcXCJNYXBcXFwiID09PSB0IHx8IFxcXCJTZXRcXFwiID09PSB0ID8gQXJyYXkuZnJvbShyKSA6IFxcXCJBcmd1bWVudHNcXFwiID09PSB0IHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpID8gX2FycmF5TGlrZVRvQXJyYXkociwgYSkgOiB2b2lkIDA7IH0gfVxcbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KHIsIGEpIHsgKG51bGwgPT0gYSB8fCBhID4gci5sZW5ndGgpICYmIChhID0gci5sZW5ndGgpOyBmb3IgKHZhciBlID0gMCwgbiA9IEFycmF5KGEpOyBlIDwgYTsgZSsrKSBuW2VdID0gcltlXTsgcmV0dXJuIG47IH1cXG4vKipcXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxcbiAqL1xcblxcblxcbnZhciBIMjY0X0NPTlNUQU5UUyA9IHtcXG4gIE5BTF9VTklUX1RZUEVfU0VJOiA2LFxcbiAgTkFMX1VOSVRfSEVBREVSX1NJWkU6IDEsXFxuICBTRUlfUEFZTE9BRF9UWVBFX1BJQ19USU1JTkc6IDEsXFxuICBFTVVMQVRJT05fUFJFVkVOVElPTl9CWVRFOiAweDAzLFxcbiAgU1RBUlRfQ09ERV9QUkVGSVhfM0I6IFsweDAwLCAweDAwLCAweDAxXSxcXG4gIFNUQVJUX0NPREVfUFJFRklYXzRCOiBbMHgwMCwgMHgwMCwgMHgwMCwgMHgwMV1cXG59O1xcbnZhciBCSVRTVFJFQU1fQ09OU1RBTlRTID0ge1xcbiAgTUlOX0JJVFNfRk9SX0NMT0NLX1RJTUVTVEFNUDogMTAsXFxuICBNSU5fQklUU19GT1JfRlVMTF9USU1FU1RBTVA6IDE3LFxcbiAgTUlOX0JJVFNfRk9SX1RJTUVfT0ZGU0VUOiAyNFxcbn07XFxuZnVuY3Rpb24gZmluZE5leHROYWxTdGFydChkYXRhLCBwb3NpdGlvbikge1xcbiAgdmFyIGRhdGFMZW5ndGggPSBkYXRhLmxlbmd0aDtcXG4gIGZvciAodmFyIGkgPSBwb3NpdGlvbjsgaSA8IGRhdGFMZW5ndGggLSAzOyBpKyspIHtcXG4gICAgaWYgKGRhdGFbaV0gPT09IDB4MDAgJiYgZGF0YVtpICsgMV0gPT09IDB4MDApIHtcXG4gICAgICBpZiAoZGF0YVtpICsgMl0gPT09IDB4MDEpIHtcXG4gICAgICAgIHJldHVybiBpO1xcbiAgICAgIH1cXG4gICAgICBpZiAoaSArIDMgPCBkYXRhTGVuZ3RoICYmIGRhdGFbaSArIDJdID09PSAweDAwICYmIGRhdGFbaSArIDNdID09PSAweDAxKSB7XFxuICAgICAgICByZXR1cm4gaTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG4gIHJldHVybiAtMTtcXG59XFxuZnVuY3Rpb24gZXh0cmFjdFNlaVBheWxvYWQoZGF0YSwgc3RhcnRJbmRleCkge1xcbiAgdmFyIGluZGV4ID0gc3RhcnRJbmRleDtcXG4gIHZhciBmZkNvdW50ID0gMDtcXG4gIHdoaWxlIChkYXRhW2luZGV4XSA9PT0gMHhmZikge1xcbiAgICBmZkNvdW50Kys7XFxuICAgIGluZGV4Kys7XFxuICB9XFxuICB2YXIgcGF5bG9hZFR5cGUgPSBmZkNvdW50ICogMjU1ICsgZGF0YVtpbmRleCsrXTtcXG5cXG4gIC8vIFBhcnNlIHBheWxvYWQgc2l6ZVxcbiAgZmZDb3VudCA9IDA7XFxuICB3aGlsZSAoZGF0YVtpbmRleF0gPT09IDB4ZmYpIHtcXG4gICAgZmZDb3VudCsrO1xcbiAgICBpbmRleCsrO1xcbiAgfVxcbiAgdmFyIHBheWxvYWRTaXplID0gZmZDb3VudCAqIDI1NSArIGRhdGFbaW5kZXgrK107XFxuICByZXR1cm4ge1xcbiAgICB0eXBlOiBwYXlsb2FkVHlwZSxcXG4gICAgcGF5bG9hZDogZGF0YS5zdWJhcnJheShpbmRleCwgaW5kZXggKyBwYXlsb2FkU2l6ZSksXFxuICAgIGxlbmd0aDogaW5kZXggKyBwYXlsb2FkU2l6ZSAtIHN0YXJ0SW5kZXhcXG4gIH07XFxufVxcbmZ1bmN0aW9uIHJlbW92ZUVtdWxhdGlvblByZXZlbnRpb25CeXRlcyhkYXRhKSB7XFxuICB2YXIgcmVzdWx0ID0gW107XFxuICB2YXIgemVyb0NvdW50ID0gMDtcXG4gIHZhciBfaXRlcmF0b3IgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihkYXRhKSxcXG4gICAgX3N0ZXA7XFxuICB0cnkge1xcbiAgICBmb3IgKF9pdGVyYXRvci5zKCk7ICEoX3N0ZXAgPSBfaXRlcmF0b3IubigpKS5kb25lOykge1xcbiAgICAgIHZhciBieXRlID0gX3N0ZXAudmFsdWU7XFxuICAgICAgaWYgKHplcm9Db3VudCA9PT0gMiAmJiBieXRlID09PSBIMjY0X0NPTlNUQU5UUy5FTVVMQVRJT05fUFJFVkVOVElPTl9CWVRFKSB7XFxuICAgICAgICB6ZXJvQ291bnQgPSAwOyAvLyBSZXNldCBhZnRlciBmaW5kaW5nIGVtdWxhdGlvbiBwcmV2ZW50aW9uIGJ5dGUuXFxuICAgICAgfSBlbHNlIHtcXG4gICAgICAgIGlmIChieXRlID09PSAweDAwKSB7XFxuICAgICAgICAgIHplcm9Db3VudCsrO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgemVyb0NvdW50ID0gMDtcXG4gICAgICAgIH1cXG4gICAgICAgIHJlc3VsdC5wdXNoKGJ5dGUpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfSBjYXRjaCAoZXJyKSB7XFxuICAgIF9pdGVyYXRvci5lKGVycik7XFxuICB9IGZpbmFsbHkge1xcbiAgICBfaXRlcmF0b3IuZigpO1xcbiAgfVxcbiAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHJlc3VsdCk7XFxufVxcbmZ1bmN0aW9uIGNvbnZlcnRQaWNTdHJ1Y3RUb051bUNsb2NrVFMocGljU3RydWN0KSB7XFxuICBzd2l0Y2ggKHBpY1N0cnVjdCkge1xcbiAgICBjYXNlIDA6XFxuICAgIGNhc2UgMTpcXG4gICAgY2FzZSAyOlxcbiAgICAgIHJldHVybiAxO1xcbiAgICBjYXNlIDM6XFxuICAgIGNhc2UgNDpcXG4gICAgY2FzZSA3OlxcbiAgICAgIHJldHVybiAyO1xcbiAgICBjYXNlIDU6XFxuICAgIGNhc2UgNjpcXG4gICAgY2FzZSA4OlxcbiAgICAgIHJldHVybiAzO1xcbiAgICBkZWZhdWx0OlxcbiAgICAgIHJldHVybiAwO1xcbiAgfVxcbn1cXG5mdW5jdGlvbiBjcmVhdGVCaXRzdHJlYW1SZWFkZXIoYnVmZmVyKSB7XFxuICB2YXIgYml0T2Zmc2V0ID0gMDtcXG4gIGZ1bmN0aW9uIHJlYWRCaXRzKGJpdHNUb1JlYWQpIHtcXG4gICAgaWYgKGJpdE9mZnNldCArIGJpdHNUb1JlYWQgPiBidWZmZXIubGVuZ3RoICogOCkge1xcbiAgICAgIHRocm93IG5ldyBFcnJvcihcXFwiQ2Fubm90IHJlYWQgW1xcXCIuY29uY2F0KGJpdHNUb1JlYWQsIFxcXCJdIGJpdHMgLSBvdXQgb2YgYm91bmRzXFxcIikpO1xcbiAgICB9XFxuICAgIHZhciB2YWx1ZSA9IDA7XFxuICAgIHZhciBiaXRzUmVtYWluaW5nID0gYml0c1RvUmVhZDtcXG4gICAgd2hpbGUgKGJpdHNSZW1haW5pbmcgPiAwKSB7XFxuICAgICAgdmFyIGJ5dGVPZmZzZXQgPSBNYXRoLmZsb29yKGJpdE9mZnNldCAvIDgpO1xcbiAgICAgIHZhciBiaXRJbkJ5dGUgPSBiaXRPZmZzZXQgJSA4O1xcbiAgICAgIHZhciBiaXRzTGVmdEluQnl0ZSA9IDggLSBiaXRJbkJ5dGU7XFxuICAgICAgdmFyIHJlYWROb3cgPSBNYXRoLm1pbihiaXRzUmVtYWluaW5nLCBiaXRzTGVmdEluQnl0ZSk7XFxuICAgICAgdmFyIG1hc2sgPSAoMSA8PCByZWFkTm93KSAtIDE7XFxuICAgICAgdmFyIGJ5dGVWYWwgPSBidWZmZXJbYnl0ZU9mZnNldF0gPj4gYml0c0xlZnRJbkJ5dGUgLSByZWFkTm93O1xcbiAgICAgIHZhciBiaXRzID0gYnl0ZVZhbCAmIG1hc2s7XFxuICAgICAgdmFsdWUgPSB2YWx1ZSA8PCByZWFkTm93IHwgYml0cztcXG4gICAgICBiaXRPZmZzZXQgKz0gcmVhZE5vdztcXG4gICAgICBiaXRzUmVtYWluaW5nIC09IHJlYWROb3c7XFxuICAgIH1cXG4gICAgcmV0dXJuIHZhbHVlO1xcbiAgfVxcbiAgZnVuY3Rpb24gc2tpcEJpdHMobikge1xcbiAgICBpZiAoYml0T2Zmc2V0ICsgbiA+IGJ1ZmZlci5sZW5ndGggKiA4KSB7XFxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJDYW5ub3Qgc2tpcCBbXFxcIi5jb25jYXQobiwgXFxcIl0gYml0cyAtIG91dCBvZiBib3VuZHNcXFwiKSk7XFxuICAgIH1cXG4gICAgYml0T2Zmc2V0ICs9IG47XFxuICB9XFxuICBmdW5jdGlvbiBnZXRSZW1haW5pbmdCaXRzKCkge1xcbiAgICByZXR1cm4gYnVmZmVyLmxlbmd0aCAqIDggLSBiaXRPZmZzZXQ7XFxuICB9XFxuICByZXR1cm4ge1xcbiAgICByZWFkQml0czogcmVhZEJpdHMsXFxuICAgIHNraXBCaXRzOiBza2lwQml0cyxcXG4gICAgZ2V0UmVtYWluaW5nQml0czogZ2V0UmVtYWluaW5nQml0c1xcbiAgfTtcXG59XFxuZnVuY3Rpb24gcmVhZE9wdGlvbmFsVGltZXN0YW1wRmllbGRzKHJlYWRlciwgdHMpIHtcXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgMSB8fCByZWFkZXIucmVhZEJpdHMoMSkgPT09IDApIHtcXG4gICAgcmV0dXJuIHRydWU7IC8vIE5vIHNlY29uZHNfZmxhZywgd2UgYXJlIGRvbmUuXFxuICB9XFxuICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IDYpIHtcXG4gICAgcmV0dXJuIGZhbHNlO1xcbiAgfVxcbiAgdHMuc2Vjb25kcyA9IHJlYWRlci5yZWFkQml0cyg2KTtcXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgMSB8fCByZWFkZXIucmVhZEJpdHMoMSkgPT09IDApIHtcXG4gICAgcmV0dXJuIHRydWU7IC8vIE5vIG1pbnV0ZXNfZmxhZywgd2UgYXJlIGRvbmUuXFxuICB9XFxuICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IDYpIHtcXG4gICAgcmV0dXJuIGZhbHNlO1xcbiAgfVxcbiAgdHMubWludXRlcyA9IHJlYWRlci5yZWFkQml0cyg2KTtcXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgMSB8fCByZWFkZXIucmVhZEJpdHMoMSkgPT09IDApIHtcXG4gICAgcmV0dXJuIHRydWU7IC8vIE5vIGhvdXJzX2ZsYWcsIHdlIGFyZSBkb25lLlxcbiAgfVxcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCA1KSB7XFxuICAgIHJldHVybiBmYWxzZTtcXG4gIH1cXG4gIHRzLmhvdXJzID0gcmVhZGVyLnJlYWRCaXRzKDUpO1xcbiAgcmV0dXJuIHRydWU7XFxufVxcbmZ1bmN0aW9uIHBhcnNlQ2xvY2tUaW1lc3RhbXAocmVhZGVyKSB7XFxuICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IEJJVFNUUkVBTV9DT05TVEFOVFMuTUlOX0JJVFNfRk9SX0NMT0NLX1RJTUVTVEFNUCkge1xcbiAgICByZXR1cm4gbnVsbDtcXG4gIH1cXG4gIHZhciB0cyA9IHtcXG4gICAgY3RUeXBlOiByZWFkZXIucmVhZEJpdHMoMiksXFxuICAgIG51aXRGaWVsZEJhc2VkRmxhZzogcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxLFxcbiAgICBjb3VudGluZ1R5cGU6IHJlYWRlci5yZWFkQml0cyg1KSxcXG4gICAgZnVsbFRpbWVzdGFtcEZsYWc6IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMSxcXG4gICAgZGlzY29udGludWl0eUZsYWc6IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMSxcXG4gICAgY250RHJvcHBlZEZsYWc6IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMSxcXG4gICAgbkZyYW1lczogcmVhZGVyLnJlYWRCaXRzKDgpXFxuICB9O1xcbiAgaWYgKHRzLmZ1bGxUaW1lc3RhbXBGbGFnKSB7XFxuICAgIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgQklUU1RSRUFNX0NPTlNUQU5UUy5NSU5fQklUU19GT1JfRlVMTF9USU1FU1RBTVApIHtcXG4gICAgICByZXR1cm4gbnVsbDtcXG4gICAgfVxcbiAgICB0cy5zZWNvbmRzID0gcmVhZGVyLnJlYWRCaXRzKDYpO1xcbiAgICB0cy5taW51dGVzID0gcmVhZGVyLnJlYWRCaXRzKDYpO1xcbiAgICB0cy5ob3VycyA9IHJlYWRlci5yZWFkQml0cyg1KTtcXG4gIH0gZWxzZSB7XFxuICAgIGlmICghcmVhZE9wdGlvbmFsVGltZXN0YW1wRmllbGRzKHJlYWRlciwgdHMpKSB7XFxuICAgICAgcmV0dXJuIG51bGw7XFxuICAgIH1cXG4gIH1cXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgQklUU1RSRUFNX0NPTlNUQU5UUy5NSU5fQklUU19GT1JfVElNRV9PRkZTRVQpIHtcXG4gICAgcmV0dXJuIG51bGw7XFxuICB9XFxuICB0cy50aW1lT2Zmc2V0ID0gcmVhZGVyLnJlYWRCaXRzKDI0KTtcXG4gIHJldHVybiB0cztcXG59XFxuZnVuY3Rpb24gcGFyc2VQaWN0dXJlVGltaW5nKGRhdGEsIGNvbmZpZykge1xcbiAgdmFyIHJlYWRlciA9IGNyZWF0ZUJpdHN0cmVhbVJlYWRlcihyZW1vdmVFbXVsYXRpb25QcmV2ZW50aW9uQnl0ZXMoZGF0YSkpO1xcbiAgdmFyIHJlc3VsdCA9IHtcXG4gICAgcGljU3RydWN0OiB1bmRlZmluZWRcXG4gIH07XFxuICBpZiAoY29uZmlnLmNwYkRwYkRlbGF5c1ByZXNlbnRGbGFnICYmIGNvbmZpZy5jcGJSZW1vdmFsRGVsYXlMZW5ndGhNaW51czEgIT09IHVuZGVmaW5lZCAmJiBjb25maWcuZHBiT3V0cHV0RGVsYXlMZW5ndGhNaW51czEgIT09IHVuZGVmaW5lZCkge1xcbiAgICByZWFkZXIuc2tpcEJpdHMoY29uZmlnLmNwYlJlbW92YWxEZWxheUxlbmd0aE1pbnVzMSArIDEpO1xcbiAgICByZWFkZXIuc2tpcEJpdHMoY29uZmlnLmRwYk91dHB1dERlbGF5TGVuZ3RoTWludXMxICsgMSk7XFxuICB9XFxuICBpZiAoY29uZmlnLnBpY1N0cnVjdFByZXNlbnRGbGFnKSB7XFxuICAgIHZhciBwaWNTdHJ1Y3QgPSByZWFkZXIucmVhZEJpdHMoNCk7XFxuICAgIHZhciBudW1DbG9ja1RTID0gY29udmVydFBpY1N0cnVjdFRvTnVtQ2xvY2tUUyhwaWNTdHJ1Y3QpO1xcbiAgICB2YXIgY2xvY2tUaW1lc3RhbXBzID0gW107XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ2xvY2tUUzsgaSsrKSB7XFxuICAgICAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCAxKSB7XFxuICAgICAgICBicmVhaztcXG4gICAgICB9XFxuICAgICAgdmFyIGNsb2NrVGltZXN0YW1wRmxhZyA9IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMTtcXG4gICAgICBpZiAoIWNsb2NrVGltZXN0YW1wRmxhZykge1xcbiAgICAgICAgY2xvY2tUaW1lc3RhbXBzLnB1c2goe1xcbiAgICAgICAgICBjbG9ja1RpbWVzdGFtcEZsYWc6IGZhbHNlXFxuICAgICAgICB9KTtcXG4gICAgICAgIGNvbnRpbnVlO1xcbiAgICAgIH1cXG4gICAgICB2YXIgdHMgPSBwYXJzZUNsb2NrVGltZXN0YW1wKHJlYWRlcik7XFxuICAgICAgaWYgKHRzKSB7XFxuICAgICAgICBjbG9ja1RpbWVzdGFtcHMucHVzaCh7XFxuICAgICAgICAgIGNsb2NrVGltZXN0YW1wRmxhZzogdHJ1ZSxcXG4gICAgICAgICAgY2xvY2tUaW1lc3RhbXA6IHRzXFxuICAgICAgICB9KTtcXG4gICAgICB9IGVsc2Uge1xcbiAgICAgICAgLy8gTm90IGVub3VnaCBiaXRzLCBzdG9wIHByb2Nlc3NpbmcgU0VJXFxuICAgICAgICBicmVhaztcXG4gICAgICB9XFxuICAgIH1cXG4gICAgcmVzdWx0LnBpY1N0cnVjdCA9IHtcXG4gICAgICBudW1DbG9ja1RTOiBudW1DbG9ja1RTLFxcbiAgICAgIGNsb2NrVGltZXN0YW1wczogY2xvY2tUaW1lc3RhbXBzXFxuICAgIH07XFxuICB9XFxuICByZXR1cm4gcmVzdWx0O1xcbn1cXG5mdW5jdGlvbiBkZWNvZGVGcmFtZVRpbWluZ1RpbWVjb2RlKGNodW5rKSB7XFxuICB2YXIgcmVjZWl2ZVRpbWVzdGFtcCA9IG5ldyBEYXRlKCk7XFxuICB2YXIgY2h1bmtEYXRhID0gbmV3IFVpbnQ4QXJyYXkoY2h1bmsuZGF0YSk7XFxuICB2YXIgY3VycmVudEluZGV4ID0gZmluZE5leHROYWxTdGFydChjaHVua0RhdGEsIDApO1xcbiAgd2hpbGUgKGN1cnJlbnRJbmRleCAhPT0gLTEpIHtcXG4gICAgdmFyIG5leHROYWxTdGFydCA9IGZpbmROZXh0TmFsU3RhcnQoY2h1bmtEYXRhLCBjdXJyZW50SW5kZXggKyAxKTtcXG4gICAgdmFyIG5hbFVuaXRFbmQgPSBuZXh0TmFsU3RhcnQgPT09IC0xID8gY2h1bmtEYXRhLmxlbmd0aCA6IG5leHROYWxTdGFydDtcXG4gICAgdmFyIHN0YXJ0Q29kZUxlbmd0aCA9IGNodW5rRGF0YVtjdXJyZW50SW5kZXggKyAyXSA9PT0gMHgwMSA/IDMgOiA0O1xcbiAgICB2YXIgbmFsVW5pdEhlYWRlckluZGV4ID0gY3VycmVudEluZGV4ICsgc3RhcnRDb2RlTGVuZ3RoO1xcbiAgICB2YXIgbmFsVW5pdFR5cGUgPSBjaHVua0RhdGFbbmFsVW5pdEhlYWRlckluZGV4XSAmIDB4MWY7XFxuICAgIGlmIChuYWxVbml0VHlwZSA9PT0gSDI2NF9DT05TVEFOVFMuTkFMX1VOSVRfVFlQRV9TRUkpIHtcXG4gICAgICB2YXIgc2VpSW5kZXggPSBuYWxVbml0SGVhZGVySW5kZXggKyBIMjY0X0NPTlNUQU5UUy5OQUxfVU5JVF9IRUFERVJfU0laRTtcXG4gICAgICB2YXIgbmFsVW5pdERhdGEgPSBjaHVua0RhdGEuc3ViYXJyYXkoc2VpSW5kZXgsIG5hbFVuaXRFbmQpO1xcbiAgICAgIHZhciBzZWlPZmZzZXQgPSAwO1xcblxcbiAgICAgIC8vIFByb2Nlc3MgU0VJIG1lc3NhZ2VzIHVudGlsIGVuZCBvZiBOQUwgdW5pdFxcbiAgICAgIHdoaWxlIChzZWlPZmZzZXQgPCBuYWxVbml0RGF0YS5sZW5ndGgpIHtcXG4gICAgICAgIC8vIFN0b3AgaWYgcmVtYWluaW5nIGRhdGEgaXMgdG9vIHNob3J0IHRvIGJlIGEgdmFsaWQgU0VJIG1lc3NhZ2VcXG4gICAgICAgIGlmIChzZWlPZmZzZXQgKyAyID4gbmFsVW5pdERhdGEubGVuZ3RoKSB7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIHNlaVBheWxvYWQgPSBleHRyYWN0U2VpUGF5bG9hZChuYWxVbml0RGF0YSwgc2VpT2Zmc2V0KTtcXG4gICAgICAgIGlmIChzZWlQYXlsb2FkLnR5cGUgPT09IEgyNjRfQ09OU1RBTlRTLlNFSV9QQVlMT0FEX1RZUEVfUElDX1RJTUlORykge1xcbiAgICAgICAgICB2YXIgX3BhcnNlZFBpY3R1cmVUaW1pbmckO1xcbiAgICAgICAgICB2YXIgcGFyc2VkUGljdHVyZVRpbWluZyA9IHBhcnNlUGljdHVyZVRpbWluZyhzZWlQYXlsb2FkLnBheWxvYWQsIHtcXG4gICAgICAgICAgICBjcGJEcGJEZWxheXNQcmVzZW50RmxhZzogZmFsc2UsXFxuICAgICAgICAgICAgcGljU3RydWN0UHJlc2VudEZsYWc6IHRydWVcXG4gICAgICAgICAgfSk7XFxuICAgICAgICAgIHZhciBmaXJzdENsb2NrVGltZXN0YW1wID0gKF9wYXJzZWRQaWN0dXJlVGltaW5nJCA9IHBhcnNlZFBpY3R1cmVUaW1pbmcucGljU3RydWN0KSA9PT0gbnVsbCB8fCBfcGFyc2VkUGljdHVyZVRpbWluZyQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9wYXJzZWRQaWN0dXJlVGltaW5nJC5jbG9ja1RpbWVzdGFtcHNbMF07XFxuICAgICAgICAgIGlmIChmaXJzdENsb2NrVGltZXN0YW1wICE9PSBudWxsICYmIGZpcnN0Q2xvY2tUaW1lc3RhbXAgIT09IHZvaWQgMCAmJiBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wRmxhZykge1xcbiAgICAgICAgICAgIHZhciBfZmlyc3RDbG9ja1RpbWVzdGFtcCQsIF9maXJzdENsb2NrVGltZXN0YW1wJDIsIF9maXJzdENsb2NrVGltZXN0YW1wJDMsIF9maXJzdENsb2NrVGltZXN0YW1wJDQ7XFxuICAgICAgICAgICAgdmFyIHJ0cFRpbWVzdGFtcCA9IGNodW5rLnRpbWVzdGFtcDtcXG4gICAgICAgICAgICB2YXIgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSB7XFxuICAgICAgICAgICAgICB0aW1lY29kZTogZmlyc3RDbG9ja1RpbWVzdGFtcC5jbG9ja1RpbWVzdGFtcCA/IHtcXG4gICAgICAgICAgICAgICAgaG91cnM6IChfZmlyc3RDbG9ja1RpbWVzdGFtcCQgPSBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wLmhvdXJzKSAhPT0gbnVsbCAmJiBfZmlyc3RDbG9ja1RpbWVzdGFtcCQgIT09IHZvaWQgMCA/IF9maXJzdENsb2NrVGltZXN0YW1wJCA6IG51bGwsXFxuICAgICAgICAgICAgICAgIG1pbnV0ZXM6IChfZmlyc3RDbG9ja1RpbWVzdGFtcCQyID0gZmlyc3RDbG9ja1RpbWVzdGFtcC5jbG9ja1RpbWVzdGFtcC5taW51dGVzKSAhPT0gbnVsbCAmJiBfZmlyc3RDbG9ja1RpbWVzdGFtcCQyICE9PSB2b2lkIDAgPyBfZmlyc3RDbG9ja1RpbWVzdGFtcCQyIDogbnVsbCxcXG4gICAgICAgICAgICAgICAgc2Vjb25kczogKF9maXJzdENsb2NrVGltZXN0YW1wJDMgPSBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wLnNlY29uZHMpICE9PSBudWxsICYmIF9maXJzdENsb2NrVGltZXN0YW1wJDMgIT09IHZvaWQgMCA/IF9maXJzdENsb2NrVGltZXN0YW1wJDMgOiBudWxsLFxcbiAgICAgICAgICAgICAgICBmcmFtZXM6IChfZmlyc3RDbG9ja1RpbWVzdGFtcCQ0ID0gZmlyc3RDbG9ja1RpbWVzdGFtcC5jbG9ja1RpbWVzdGFtcC5uRnJhbWVzKSAhPT0gbnVsbCAmJiBfZmlyc3RDbG9ja1RpbWVzdGFtcCQ0ICE9PSB2b2lkIDAgPyBfZmlyc3RDbG9ja1RpbWVzdGFtcCQ0IDogbnVsbCxcXG4gICAgICAgICAgICAgICAgaXNGcmFtZURyb3A6IGZpcnN0Q2xvY2tUaW1lc3RhbXAuY2xvY2tUaW1lc3RhbXAuY250RHJvcHBlZEZsYWdcXG4gICAgICAgICAgICAgIH0gOiBudWxsLFxcbiAgICAgICAgICAgICAgcmVjZWl2ZVRpbWVzdGFtcDogcmVjZWl2ZVRpbWVzdGFtcFxcbiAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7XFxuICAgICAgICAgICAgICB0eXBlOiBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuTWV0YWRhdGEsXFxuICAgICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5UcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRnJhbWVUaW1pbmdJbmZvcm1hdGlvbixcXG4gICAgICAgICAgICAgICAgZGF0YTogX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQoKSh7fSwgcnRwVGltZXN0YW1wLCB7XFxuICAgICAgICAgICAgICAgICAgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb246IGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIHNlaU9mZnNldCArPSBzZWlQYXlsb2FkLmxlbmd0aDtcXG5cXG4gICAgICAgIC8vIFN0b3AgaWYgYW4gaW52YWxpZCBwYXlsb2FkIGxlbmd0aCB3YXMgZGV0ZWN0ZWQuXFxuICAgICAgICBpZiAoc2VpUGF5bG9hZC5sZW5ndGggPT09IDApIHtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICB9XFxuICAgIGN1cnJlbnRJbmRleCA9IG5leHROYWxTdGFydDtcXG4gIH1cXG59XFxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1xcXCJkZWZhdWx0XFxcIl0gPSAoZGVjb2RlRnJhbWVUaW1pbmdUaW1lY29kZSk7XFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvci5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoKG1vZHVsZSwgX191bnVzZWRfd2VicGFja19leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7XFxuXFxuLyogcHJvdmlkZWQgZGVwZW5kZW5jeSAqLyB2YXIgUHJvbWlzZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vc3JjL3Byb21pc2UvUHJvbWlzZSAqLyBcXFwiLi9zcmMvcHJvbWlzZS9Qcm9taXNlLnRzXFxcIilbXFxcImRlZmF1bHRcXFwiXTtcXG5mdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAobiwgdCwgZSwgciwgbywgYSwgYykge1xcbiAgdHJ5IHtcXG4gICAgdmFyIGkgPSBuW2FdKGMpLFxcbiAgICAgIHUgPSBpLnZhbHVlO1xcbiAgfSBjYXRjaCAobikge1xcbiAgICByZXR1cm4gdm9pZCBlKG4pO1xcbiAgfVxcbiAgaS5kb25lID8gdCh1KSA6IFByb21pc2UucmVzb2x2ZSh1KS50aGVuKHIsIG8pO1xcbn1cXG5mdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihuKSB7XFxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xcbiAgICB2YXIgdCA9IHRoaXMsXFxuICAgICAgZSA9IGFyZ3VtZW50cztcXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyLCBvKSB7XFxuICAgICAgdmFyIGEgPSBuLmFwcGx5KHQsIGUpO1xcbiAgICAgIGZ1bmN0aW9uIF9uZXh0KG4pIHtcXG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChhLCByLCBvLCBfbmV4dCwgX3Rocm93LCBcXFwibmV4dFxcXCIsIG4pO1xcbiAgICAgIH1cXG4gICAgICBmdW5jdGlvbiBfdGhyb3cobikge1xcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGEsIHIsIG8sIF9uZXh0LCBfdGhyb3csIFxcXCJ0aHJvd1xcXCIsIG4pO1xcbiAgICAgIH1cXG4gICAgICBfbmV4dCh2b2lkIDApO1xcbiAgICB9KTtcXG4gIH07XFxufVxcbm1vZHVsZS5leHBvcnRzID0gX2FzeW5jVG9HZW5lcmF0b3IsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcXFwiZGVmYXVsdFxcXCJdID0gbW9kdWxlLmV4cG9ydHM7XFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKChtb2R1bGUpID0+IHtcXG5cXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soYSwgbikge1xcbiAgaWYgKCEoYSBpbnN0YW5jZW9mIG4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKFxcXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cXFwiKTtcXG59XFxubW9kdWxlLmV4cG9ydHMgPSBfY2xhc3NDYWxsQ2hlY2ssIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcXFwiZGVmYXVsdFxcXCJdID0gbW9kdWxlLmV4cG9ydHM7XFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKChtb2R1bGUsIF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgPT4ge1xcblxcbnZhciB0b1Byb3BlcnR5S2V5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi90b1Byb3BlcnR5S2V5LmpzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJvcGVydHlLZXkuanNcXFwiKTtcXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyhlLCByKSB7XFxuICBmb3IgKHZhciB0ID0gMDsgdCA8IHIubGVuZ3RoOyB0KyspIHtcXG4gICAgdmFyIG8gPSByW3RdO1xcbiAgICBvLmVudW1lcmFibGUgPSBvLmVudW1lcmFibGUgfHwgITEsIG8uY29uZmlndXJhYmxlID0gITAsIFxcXCJ2YWx1ZVxcXCIgaW4gbyAmJiAoby53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHRvUHJvcGVydHlLZXkoby5rZXkpLCBvKTtcXG4gIH1cXG59XFxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKGUsIHIsIHQpIHtcXG4gIHJldHVybiByICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLCByKSwgdCAmJiBfZGVmaW5lUHJvcGVydGllcyhlLCB0KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFxcXCJwcm90b3R5cGVcXFwiLCB7XFxuICAgIHdyaXRhYmxlOiAhMVxcbiAgfSksIGU7XFxufVxcbm1vZHVsZS5leHBvcnRzID0gX2NyZWF0ZUNsYXNzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXFxcImRlZmF1bHRcXFwiXSA9IG1vZHVsZS5leHBvcnRzO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5LmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgobW9kdWxlLCBfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pID0+IHtcXG5cXG52YXIgdG9Qcm9wZXJ0eUtleSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdG9Qcm9wZXJ0eUtleS5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1Byb3BlcnR5S2V5LmpzXFxcIik7XFxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KGUsIHIsIHQpIHtcXG4gIHJldHVybiAociA9IHRvUHJvcGVydHlLZXkocikpIGluIGUgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwge1xcbiAgICB2YWx1ZTogdCxcXG4gICAgZW51bWVyYWJsZTogITAsXFxuICAgIGNvbmZpZ3VyYWJsZTogITAsXFxuICAgIHdyaXRhYmxlOiAhMFxcbiAgfSkgOiBlW3JdID0gdCwgZTtcXG59XFxubW9kdWxlLmV4cG9ydHMgPSBfZGVmaW5lUHJvcGVydHksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcXFwiZGVmYXVsdFxcXCJdID0gbW9kdWxlLmV4cG9ydHM7XFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9QcmltaXRpdmUuanNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJpbWl0aXZlLmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKChtb2R1bGUsIF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgPT4ge1xcblxcbnZhciBfdHlwZW9mID0gKF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdHlwZW9mLmpzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qc1xcXCIpW1xcXCJkZWZhdWx0XFxcIl0pO1xcbmZ1bmN0aW9uIHRvUHJpbWl0aXZlKHQsIHIpIHtcXG4gIGlmIChcXFwib2JqZWN0XFxcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDtcXG4gIHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xcbiAgaWYgKHZvaWQgMCAhPT0gZSkge1xcbiAgICB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFxcXCJkZWZhdWx0XFxcIik7XFxuICAgIGlmIChcXFwib2JqZWN0XFxcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTtcXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcXFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cXFwiKTtcXG4gIH1cXG4gIHJldHVybiAoXFxcInN0cmluZ1xcXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xcbn1cXG5tb2R1bGUuZXhwb3J0cyA9IHRvUHJpbWl0aXZlLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXFxcImRlZmF1bHRcXFwiXSA9IG1vZHVsZS5leHBvcnRzO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJvcGVydHlLZXkuanNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Qcm9wZXJ0eUtleS5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKChtb2R1bGUsIF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgPT4ge1xcblxcbnZhciBfdHlwZW9mID0gKF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdHlwZW9mLmpzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qc1xcXCIpW1xcXCJkZWZhdWx0XFxcIl0pO1xcbnZhciB0b1ByaW1pdGl2ZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdG9QcmltaXRpdmUuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9QcmltaXRpdmUuanNcXFwiKTtcXG5mdW5jdGlvbiB0b1Byb3BlcnR5S2V5KHQpIHtcXG4gIHZhciBpID0gdG9QcmltaXRpdmUodCwgXFxcInN0cmluZ1xcXCIpO1xcbiAgcmV0dXJuIFxcXCJzeW1ib2xcXFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFxcXCJcXFwiO1xcbn1cXG5tb2R1bGUuZXhwb3J0cyA9IHRvUHJvcGVydHlLZXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcXFwiZGVmYXVsdFxcXCJdID0gbW9kdWxlLmV4cG9ydHM7XFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mLmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mLmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgobW9kdWxlKSA9PiB7XFxuXFxuZnVuY3Rpb24gX3R5cGVvZihvKSB7XFxuICBcXFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcXFwiO1xcblxcbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YgPSBcXFwiZnVuY3Rpb25cXFwiID09IHR5cGVvZiBTeW1ib2wgJiYgXFxcInN5bWJvbFxcXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7XFxuICAgIHJldHVybiB0eXBlb2YgbztcXG4gIH0gOiBmdW5jdGlvbiAobykge1xcbiAgICByZXR1cm4gbyAmJiBcXFwiZnVuY3Rpb25cXFwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcXFwic3ltYm9sXFxcIiA6IHR5cGVvZiBvO1xcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1xcXCJkZWZhdWx0XFxcIl0gPSBtb2R1bGUuZXhwb3J0cyksIF90eXBlb2Yobyk7XFxufVxcbm1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1xcXCJkZWZhdWx0XFxcIl0gPSBtb2R1bGUuZXhwb3J0cztcXG5cXG4vKioqLyB9KVxcblxcbi8qKioqKiovIFxcdH0pO1xcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKioqKi8gXFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxcbi8qKioqKiovIFxcdHZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqLyBcXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxcbi8qKioqKiovIFxcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcXG4vKioqKioqLyBcXHRcXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcXG4vKioqKioqLyBcXHRcXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcXG4vKioqKioqLyBcXHRcXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcXG4vKioqKioqLyBcXHRcXHRcXHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XFxuLyoqKioqKi8gXFx0XFx0fVxcbi8qKioqKiovIFxcdFxcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXFxuLyoqKioqKi8gXFx0XFx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XFxuLyoqKioqKi8gXFx0XFx0XFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxcbi8qKioqKiovIFxcdFxcdFxcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXFxuLyoqKioqKi8gXFx0XFx0XFx0ZXhwb3J0czoge31cXG4vKioqKioqLyBcXHRcXHR9O1xcbi8qKioqKiovIFxcdFxcbi8qKioqKiovIFxcdFxcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxcbi8qKioqKiovIFxcdFxcdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xcbi8qKioqKiovIFxcdFxcbi8qKioqKiovIFxcdFxcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXFxuLyoqKioqKi8gXFx0XFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xcbi8qKioqKiovIFxcdH1cXG4vKioqKioqLyBcXHRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKioqKiovIFxcdC8qIHdlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0ICovXFxuLyoqKioqKi8gXFx0KCgpID0+IHtcXG4vKioqKioqLyBcXHRcXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xcbi8qKioqKiovIFxcdFxcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcXG4vKioqKioqLyBcXHRcXHRcXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cXG4vKioqKioqLyBcXHRcXHRcXHRcXHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcXG4vKioqKioqLyBcXHRcXHRcXHRcXHQoKSA9PiAobW9kdWxlKTtcXG4vKioqKioqLyBcXHRcXHRcXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcXG4vKioqKioqLyBcXHRcXHRcXHRyZXR1cm4gZ2V0dGVyO1xcbi8qKioqKiovIFxcdFxcdH07XFxuLyoqKioqKi8gXFx0fSkoKTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqLyBcXHQvKiB3ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMgKi9cXG4vKioqKioqLyBcXHQoKCkgPT4ge1xcbi8qKioqKiovIFxcdFxcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcXG4vKioqKioqLyBcXHRcXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xcbi8qKioqKiovIFxcdFxcdFxcdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcXG4vKioqKioqLyBcXHRcXHRcXHRcXHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcXG4vKioqKioqLyBcXHRcXHRcXHRcXHRcXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xcbi8qKioqKiovIFxcdFxcdFxcdFxcdH1cXG4vKioqKioqLyBcXHRcXHRcXHR9XFxuLyoqKioqKi8gXFx0XFx0fTtcXG4vKioqKioqLyBcXHR9KSgpO1xcbi8qKioqKiovIFxcdFxcbi8qKioqKiovIFxcdC8qIHdlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQgKi9cXG4vKioqKioqLyBcXHQoKCkgPT4ge1xcbi8qKioqKiovIFxcdFxcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSlcXG4vKioqKioqLyBcXHR9KSgpO1xcbi8qKioqKiovIFxcdFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSB7fTtcXG4vLyBUaGlzIGVudHJ5IG5lZWQgdG8gYmUgd3JhcHBlZCBpbiBhbiBJSUZFIGJlY2F1c2UgaXQgbmVlZCB0byBiZSBpbiBzdHJpY3QgbW9kZS5cXG4oKCkgPT4ge1xcblxcXCJ1c2Ugc3RyaWN0XFxcIjtcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P3J1bGVTZXRbMV0ucnVsZXNbMV0udXNlIS4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmUud29ya2VyLnRzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2FzeW5jVG9HZW5lcmF0b3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvci5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfYXN5bmNUb0dlbmVyYXRvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfYXN5bmNUb0dlbmVyYXRvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qc1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qc1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qc1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2xhbmdfYXNzZXJ0VW5yZWFjaGFibGVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uLy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUgKi8gXFxcIi4vc3JjL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUudHNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UgKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlLnRzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF90cmFuc2Zvcm1zX1dvcmtlclRyYW5zZm9ybXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdHJhbnNmb3Jtcy9Xb3JrZXJUcmFuc2Zvcm1zICovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL3RyYW5zZm9ybXMvV29ya2VyVHJhbnNmb3Jtcy50c1xcXCIpO1xcblxcblxcblxcblxcbnZhciBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXI7XFxuZnVuY3Rpb24gX3JlZ2VuZXJhdG9yKCkgeyAvKiEgcmVnZW5lcmF0b3ItcnVudGltZSAtLSBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4gLS0gbGljZW5zZSAoTUlUKTogaHR0cHM6Ly9naXRodWIuY29tL2JhYmVsL2JhYmVsL2Jsb2IvbWFpbi9wYWNrYWdlcy9iYWJlbC1oZWxwZXJzL0xJQ0VOU0UgKi8gdmFyIGUsIHQsIHIgPSBcXFwiZnVuY3Rpb25cXFwiID09IHR5cGVvZiBTeW1ib2wgPyBTeW1ib2wgOiB7fSwgbiA9IHIuaXRlcmF0b3IgfHwgXFxcIkBAaXRlcmF0b3JcXFwiLCBvID0gci50b1N0cmluZ1RhZyB8fCBcXFwiQEB0b1N0cmluZ1RhZ1xcXCI7IGZ1bmN0aW9uIGkociwgbiwgbywgaSkgeyB2YXIgYyA9IG4gJiYgbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBuIDogR2VuZXJhdG9yLCB1ID0gT2JqZWN0LmNyZWF0ZShjLnByb3RvdHlwZSk7IHJldHVybiBfcmVnZW5lcmF0b3JEZWZpbmUyKHUsIFxcXCJfaW52b2tlXFxcIiwgZnVuY3Rpb24gKHIsIG4sIG8pIHsgdmFyIGksIGMsIHUsIGYgPSAwLCBwID0gbyB8fCBbXSwgeSA9ICExLCBHID0geyBwOiAwLCBuOiAwLCB2OiBlLCBhOiBkLCBmOiBkLmJpbmQoZSwgNCksIGQ6IGZ1bmN0aW9uIGQodCwgcikgeyByZXR1cm4gaSA9IHQsIGMgPSAwLCB1ID0gZSwgRy5uID0gciwgYTsgfSB9OyBmdW5jdGlvbiBkKHIsIG4pIHsgZm9yIChjID0gciwgdSA9IG4sIHQgPSAwOyAheSAmJiBmICYmICFvICYmIHQgPCBwLmxlbmd0aDsgdCsrKSB7IHZhciBvLCBpID0gcFt0XSwgZCA9IEcucCwgbCA9IGlbMl07IHIgPiAzID8gKG8gPSBsID09PSBuKSAmJiAodSA9IGlbKGMgPSBpWzRdKSA/IDUgOiAoYyA9IDMsIDMpXSwgaVs0XSA9IGlbNV0gPSBlKSA6IGlbMF0gPD0gZCAmJiAoKG8gPSByIDwgMiAmJiBkIDwgaVsxXSkgPyAoYyA9IDAsIEcudiA9IG4sIEcubiA9IGlbMV0pIDogZCA8IGwgJiYgKG8gPSByIDwgMyB8fCBpWzBdID4gbiB8fCBuID4gbCkgJiYgKGlbNF0gPSByLCBpWzVdID0gbiwgRy5uID0gbCwgYyA9IDApKTsgfSBpZiAobyB8fCByID4gMSkgcmV0dXJuIGE7IHRocm93IHkgPSAhMCwgbjsgfSByZXR1cm4gZnVuY3Rpb24gKG8sIHAsIGwpIHsgaWYgKGYgPiAxKSB0aHJvdyBUeXBlRXJyb3IoXFxcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcXFwiKTsgZm9yICh5ICYmIDEgPT09IHAgJiYgZChwLCBsKSwgYyA9IHAsIHUgPSBsOyAodCA9IGMgPCAyID8gZSA6IHUpIHx8ICF5OykgeyBpIHx8IChjID8gYyA8IDMgPyAoYyA+IDEgJiYgKEcubiA9IC0xKSwgZChjLCB1KSkgOiBHLm4gPSB1IDogRy52ID0gdSk7IHRyeSB7IGlmIChmID0gMiwgaSkgeyBpZiAoYyB8fCAobyA9IFxcXCJuZXh0XFxcIiksIHQgPSBpW29dKSB7IGlmICghKHQgPSB0LmNhbGwoaSwgdSkpKSB0aHJvdyBUeXBlRXJyb3IoXFxcIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0XFxcIik7IGlmICghdC5kb25lKSByZXR1cm4gdDsgdSA9IHQudmFsdWUsIGMgPCAyICYmIChjID0gMCk7IH0gZWxzZSAxID09PSBjICYmICh0ID0gaS5yZXR1cm4pICYmIHQuY2FsbChpKSwgYyA8IDIgJiYgKHUgPSBUeXBlRXJyb3IoXFxcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ1xcXCIgKyBvICsgXFxcIicgbWV0aG9kXFxcIiksIGMgPSAxKTsgaSA9IGU7IH0gZWxzZSBpZiAoKHQgPSAoeSA9IEcubiA8IDApID8gdSA6IHIuY2FsbChuLCBHKSkgIT09IGEpIGJyZWFrOyB9IGNhdGNoICh0KSB7IGkgPSBlLCBjID0gMSwgdSA9IHQ7IH0gZmluYWxseSB7IGYgPSAxOyB9IH0gcmV0dXJuIHsgdmFsdWU6IHQsIGRvbmU6IHkgfTsgfTsgfShyLCBvLCBpKSwgITApLCB1OyB9IHZhciBhID0ge307IGZ1bmN0aW9uIEdlbmVyYXRvcigpIHt9IGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uKCkge30gZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSB7fSB0ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mOyB2YXIgYyA9IFtdW25dID8gdCh0KFtdW25dKCkpKSA6IChfcmVnZW5lcmF0b3JEZWZpbmUyKHQgPSB7fSwgbiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSksIHQpLCB1ID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlID0gR2VuZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoYyk7IGZ1bmN0aW9uIGYoZSkgeyByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKSA6IChlLl9fcHJvdG9fXyA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBfcmVnZW5lcmF0b3JEZWZpbmUyKGUsIG8sIFxcXCJHZW5lcmF0b3JGdW5jdGlvblxcXCIpKSwgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHUpLCBlOyB9IHJldHVybiBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgX3JlZ2VuZXJhdG9yRGVmaW5lMih1LCBcXFwiY29uc3RydWN0b3JcXFwiLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSksIF9yZWdlbmVyYXRvckRlZmluZTIoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIFxcXCJjb25zdHJ1Y3RvclxcXCIsIEdlbmVyYXRvckZ1bmN0aW9uKSwgR2VuZXJhdG9yRnVuY3Rpb24uZGlzcGxheU5hbWUgPSBcXFwiR2VuZXJhdG9yRnVuY3Rpb25cXFwiLCBfcmVnZW5lcmF0b3JEZWZpbmUyKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBvLCBcXFwiR2VuZXJhdG9yRnVuY3Rpb25cXFwiKSwgX3JlZ2VuZXJhdG9yRGVmaW5lMih1KSwgX3JlZ2VuZXJhdG9yRGVmaW5lMih1LCBvLCBcXFwiR2VuZXJhdG9yXFxcIiksIF9yZWdlbmVyYXRvckRlZmluZTIodSwgbiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSksIF9yZWdlbmVyYXRvckRlZmluZTIodSwgXFxcInRvU3RyaW5nXFxcIiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gXFxcIltvYmplY3QgR2VuZXJhdG9yXVxcXCI7IH0pLCAoX3JlZ2VuZXJhdG9yID0gZnVuY3Rpb24gX3JlZ2VuZXJhdG9yKCkgeyByZXR1cm4geyB3OiBpLCBtOiBmIH07IH0pKCk7IH1cXG5mdW5jdGlvbiBfcmVnZW5lcmF0b3JEZWZpbmUyKGUsIHIsIG4sIHQpIHsgdmFyIGkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7IHRyeSB7IGkoe30sIFxcXCJcXFwiLCB7fSk7IH0gY2F0Y2ggKGUpIHsgaSA9IDA7IH0gX3JlZ2VuZXJhdG9yRGVmaW5lMiA9IGZ1bmN0aW9uIF9yZWdlbmVyYXRvckRlZmluZShlLCByLCBuLCB0KSB7IGZ1bmN0aW9uIG8ociwgbikgeyBfcmVnZW5lcmF0b3JEZWZpbmUyKGUsIHIsIGZ1bmN0aW9uIChlKSB7IHJldHVybiB0aGlzLl9pbnZva2UociwgbiwgZSk7IH0pOyB9IHIgPyBpID8gaShlLCByLCB7IHZhbHVlOiBuLCBlbnVtZXJhYmxlOiAhdCwgY29uZmlndXJhYmxlOiAhdCwgd3JpdGFibGU6ICF0IH0pIDogZVtyXSA9IG4gOiAobyhcXFwibmV4dFxcXCIsIDApLCBvKFxcXCJ0aHJvd1xcXCIsIDEpLCBvKFxcXCJyZXR1cm5cXFwiLCAyKSk7IH0sIF9yZWdlbmVyYXRvckRlZmluZTIoZSwgciwgbiwgdCk7IH1cXG4vKipcXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxcbiAqL1xcblxcblxcblxcbnZhciB3b3JrZXIgPSBzZWxmO1xcbi8vIFRoaXMgaXMgaG93IHRoZSBkb2N1bWVudGF0aW9uIGluc3RydWN0cyB0byBkbyBpdCAtIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3dvcmtlci1sb2FkZXJcXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXFxudmFyIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcXG4gIGZ1bmN0aW9uIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyKCkge1xcbiAgICBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19fZGVmYXVsdCgpKHRoaXMsIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyKTtcXG4gIH1cXG4gIHJldHVybiBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19fZGVmYXVsdCgpKFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLCBudWxsLCBbe1xcbiAgICBrZXk6IFxcXCJoYW5kbGVBZGRUcmFuc2Zvcm1cXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlQWRkVHJhbnNmb3JtKHR5cGUpIHtcXG4gICAgICBpZiAoVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX2lzUGlwZWxpbmVDb25maWd1cmVkKSB7XFxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yOiBQaXBlbGluZSBpcyBsb2NrZWQuIEEgdHJhbnNmb3JtIGNhbm5vdCBiZSBhZGRlZCBvbmNlIHRoZSBwaXBlbGluZSBoYXMgYmVlbiBjb25maWd1cmVkJyk7XFxuICAgICAgfVxcbiAgICAgIHN3aXRjaCAodHlwZSkge1xcbiAgICAgICAgY2FzZSAnZnJhbWUtdGltaW5nLWluZm9ybWF0aW9uJzpcXG4gICAgICAgICAgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3RyYW5zZm9ybXMucHVzaChfdHJhbnNmb3Jtc19Xb3JrZXJUcmFuc2Zvcm1zX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19bXFxcImRlZmF1bHRcXFwiXS5jcmVhdGVGcmFtZVRpbWluZ0luZm9ybWF0aW9uVHJhbnNmb3JtKCkpO1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgJ3Byb3RlY3RlZC12aWRlbyc6XFxuICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLnB1c2goX3RyYW5zZm9ybXNfV29ya2VyVHJhbnNmb3Jtc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fW1xcXCJkZWZhdWx0XFxcIl0uY3JlYXRlRW5jb2RlZFZpZGVvU3RyZWFtVHJhbnNmb3JtKHdvcmtlcikpO1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgJ3Byb3RlY3RlZC1hdWRpbyc6XFxuICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLnB1c2goX3RyYW5zZm9ybXNfV29ya2VyVHJhbnNmb3Jtc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fW1xcXCJkZWZhdWx0XFxcIl0uY3JlYXRlRW5jb2RlZEF1ZGlvU3RyZWFtVHJhbnNmb3JtKHdvcmtlcikpO1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgJ3Bhc3MtdGhyb3VnaCc6XFxuICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLnB1c2goX3RyYW5zZm9ybXNfV29ya2VyVHJhbnNmb3Jtc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fW1xcXCJkZWZhdWx0XFxcIl0uY3JlYXRlUGFzc1Rocm91Z2hUcmFuc2Zvcm0oKSk7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJFcnJvcjogVW5rbm93biB0cmFuc2Zvcm0gdHlwZSBbXFxcIi5jb25jYXQodHlwZSwgXFxcIl1cXFwiKSk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9LCB7XFxuICAgIGtleTogXFxcImNvbmZpZ3VyZVBpcGVsaW5lXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcXG4gICAgICB2YXIgX2NvbmZpZ3VyZVBpcGVsaW5lID0gX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19hc3luY1RvR2VuZXJhdG9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19fZGVmYXVsdCgpKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IoKS5tKGZ1bmN0aW9uIF9jYWxsZWUoc291cmNlLCBzaW5rKSB7XFxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yKCkudyhmdW5jdGlvbiAoX2NvbnRleHQpIHtcXG4gICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQubikge1xcbiAgICAgICAgICAgIGNhc2UgMDpcXG4gICAgICAgICAgICAgIGlmIChzb3VyY2UgJiYgc2luaykge1xcbiAgICAgICAgICAgICAgICBfY29udGV4dC5uID0gMTtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yOiBDb25maWd1cmF0aW9uIG9mIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lIHJlcXVpcmVzIGJvdGggYSByZWFkYmFsZSBzb3VyY2UgYW5kIHdyaXRhYmxlIHNpbmsnKTtcXG4gICAgICAgICAgICBjYXNlIDE6XFxuICAgICAgICAgICAgICBpZiAoVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3RyYW5zZm9ybXMubGVuZ3RoID09PSAwKSB7XFxuICAgICAgICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLnB1c2goKTtcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgIF9jb250ZXh0Lm4gPSAyO1xcbiAgICAgICAgICAgICAgcmV0dXJuIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLnJlZHVjZVJpZ2h0KGZ1bmN0aW9uIChwaXBlbGluZSwgdHJhbnNmb3JtKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBwaXBlbGluZS5waXBlVGhyb3VnaCh0cmFuc2Zvcm0pO1xcbiAgICAgICAgICAgICAgfSwgc291cmNlKS5waXBlVG8oc2luayk7XFxuICAgICAgICAgICAgY2FzZSAyOlxcbiAgICAgICAgICAgICAgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX2lzUGlwZWxpbmVDb25maWd1cmVkID0gdHJ1ZTtcXG4gICAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7XFxuICAgICAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5QaXBlbGluZUNvbmZpZ3VyZWQsXFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICAgICAgICBuYW1lOiBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fd29ya2VyTmFtZVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBjYXNlIDM6XFxuICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYSgyKTtcXG4gICAgICAgICAgfVxcbiAgICAgICAgfSwgX2NhbGxlZSk7XFxuICAgICAgfSkpO1xcbiAgICAgIGZ1bmN0aW9uIGNvbmZpZ3VyZVBpcGVsaW5lKF94LCBfeDIpIHtcXG4gICAgICAgIHJldHVybiBfY29uZmlndXJlUGlwZWxpbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcXG4gICAgICB9XFxuICAgICAgcmV0dXJuIGNvbmZpZ3VyZVBpcGVsaW5lO1xcbiAgICB9KClcXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiaGFuZGxlTWVzc2FnZVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVNZXNzYWdlKF9yZWYpIHtcXG4gICAgICB2YXIgbWVzc2FnZSA9IF9yZWYuZGF0YTtcXG4gICAgICB2YXIgdHlwZSA9IG1lc3NhZ2UudHlwZTtcXG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcXG4gICAgICAgIGNhc2UgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLkFkZFRyYW5zZm9ybTpcXG4gICAgICAgICAgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuaGFuZGxlQWRkVHJhbnNmb3JtKG1lc3NhZ2UuZGF0YSk7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ29uZmlndXJlUGlwZWxpbmU6XFxuICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLmNvbmZpZ3VyZVBpcGVsaW5lKG1lc3NhZ2UuZGF0YS5zb3VyY2UsIG1lc3NhZ2UuZGF0YS5zaW5rKTtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5NZXRhZGF0YTpcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5DaHVuazpcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAoMCxfbGFuZ19hc3NlcnRVbnJlYWNoYWJsZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fW1xcXCJkZWZhdWx0XFxcIl0pKHR5cGUpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfV0pO1xcbn0oKTtcXG5fVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIgPSBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlcjtcXG5faG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19fZGVmYXVsdCgpKFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLCBcXFwiX3RyYW5zZm9ybXNcXFwiLCBbXSk7XFxuX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQoKShUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciwgXFxcIl9pc1BpcGVsaW5lQ29uZmlndXJlZFxcXCIsIGZhbHNlKTtcXG5faG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19fZGVmYXVsdCgpKFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLCBcXFwiX3dvcmtlck5hbWVcXFwiLCB2b2lkIDApO1xcbihmdW5jdGlvbiAoKSB7XFxuICB3b3JrZXIub25lcnJvciA9IGZ1bmN0aW9uIChlcnJvcikge1xcbiAgICByZXR1cm4gY29uc29sZS5lcnJvcignW1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyXSBFcnJvcjogWyVzXScsIGVycm9yKTtcXG4gIH07XFxuICB3b3JrZXIub25tZXNzYWdlID0gX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLmhhbmRsZU1lc3NhZ2UuYmluZChfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIpO1xcbiAgaWYgKHdvcmtlci5SVENUcmFuc2Zvcm1FdmVudCkge1xcbiAgICB3b3JrZXIub25ydGN0cmFuc2Zvcm0gPSBmdW5jdGlvbiAoX3JlZjIpIHtcXG4gICAgICB2YXIgdHJhbnNmb3JtZXIgPSBfcmVmMi50cmFuc2Zvcm1lcjtcXG4gICAgICBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3dvcmtlck5hbWUgPSB0cmFuc2Zvcm1lci5vcHRpb25zLm5hbWU7XFxuICAgICAgdmFyIHNvdXJjZSA9IHRyYW5zZm9ybWVyLnJlYWRhYmxlO1xcbiAgICAgIHZhciBzaW5rID0gdHJhbnNmb3JtZXIud3JpdGFibGU7XFxuICAgICAgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLmNvbmZpZ3VyZVBpcGVsaW5lKHNvdXJjZSwgc2luayk7XFxuICAgIH07XFxuICB9XFxufSkoKTtcXG4vKiB1bnVzZWQgaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgX19XRUJQQUNLX0RFRkFVTFRfRVhQT1JUX18gPSAobnVsbCk7XFxufSkoKTtcXG5cXG4vKioqKioqLyB9KSgpXFxuO1xcblwiLCBcIldvcmtlclwiLCB1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLyogZXNsaW50LWVudiBicm93c2VyICovXG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmLCBuby11c2UtYmVmb3JlLWRlZmluZSwgbmV3LWNhcCAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY29udGVudCwgd29ya2VyQ29uc3RydWN0b3IsIHdvcmtlck9wdGlvbnMsIHVybCkge1xuICB2YXIgZ2xvYmFsU2NvcGUgPSBzZWxmIHx8IHdpbmRvdztcblxuICB0cnkge1xuICAgIHRyeSB7XG4gICAgICB2YXIgYmxvYjtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gTmV3IEFQSVxuICAgICAgICBibG9iID0gbmV3IGdsb2JhbFNjb3BlLkJsb2IoW2NvbnRlbnRdKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gQmxvYkJ1aWxkZXIgPSBEZXByZWNhdGVkLCBidXQgd2lkZWx5IGltcGxlbWVudGVkXG4gICAgICAgIHZhciBCbG9iQnVpbGRlciA9IGdsb2JhbFNjb3BlLkJsb2JCdWlsZGVyIHx8IGdsb2JhbFNjb3BlLldlYktpdEJsb2JCdWlsZGVyIHx8IGdsb2JhbFNjb3BlLk1vekJsb2JCdWlsZGVyIHx8IGdsb2JhbFNjb3BlLk1TQmxvYkJ1aWxkZXI7XG4gICAgICAgIGJsb2IgPSBuZXcgQmxvYkJ1aWxkZXIoKTtcbiAgICAgICAgYmxvYi5hcHBlbmQoY29udGVudCk7XG4gICAgICAgIGJsb2IgPSBibG9iLmdldEJsb2IoKTtcbiAgICAgIH1cblxuICAgICAgdmFyIFVSTCA9IGdsb2JhbFNjb3BlLlVSTCB8fCBnbG9iYWxTY29wZS53ZWJraXRVUkw7XG4gICAgICB2YXIgb2JqZWN0VVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgIHZhciB3b3JrZXIgPSBuZXcgZ2xvYmFsU2NvcGVbd29ya2VyQ29uc3RydWN0b3JdKG9iamVjdFVSTCwgd29ya2VyT3B0aW9ucyk7XG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKG9iamVjdFVSTCk7XG4gICAgICByZXR1cm4gd29ya2VyO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBuZXcgZ2xvYmFsU2NvcGVbd29ya2VyQ29uc3RydWN0b3JdKFwiZGF0YTphcHBsaWNhdGlvbi9qYXZhc2NyaXB0LFwiLmNvbmNhdChlbmNvZGVVUklDb21wb25lbnQoY29udGVudCkpLCB3b3JrZXJPcHRpb25zKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIXVybCkge1xuICAgICAgdGhyb3cgRXJyb3IoXCJJbmxpbmUgd29ya2VyIGlzIG5vdCBzdXBwb3J0ZWRcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBnbG9iYWxTY29wZVt3b3JrZXJDb25zdHJ1Y3Rvcl0odXJsLCB3b3JrZXJPcHRpb25zKTtcbiAgfVxufTsiLCJmdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShyLCBhKSB7XG4gIChudWxsID09IGEgfHwgYSA+IHIubGVuZ3RoKSAmJiAoYSA9IHIubGVuZ3RoKTtcbiAgZm9yICh2YXIgZSA9IDAsIG4gPSBBcnJheShhKTsgZSA8IGE7IGUrKykgbltlXSA9IHJbZV07XG4gIHJldHVybiBuO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlMaWtlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHIpKSByZXR1cm4gcjtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FycmF5V2l0aEhvbGVzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5TGlrZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCIpO1xuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRob3V0SG9sZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKGUpIHtcbiAgaWYgKHZvaWQgMCA9PT0gZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICByZXR1cm4gZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2Fzc2VydFRoaXNJbml0aWFsaXplZCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChuLCB0LCBlLCByLCBvLCBhLCBjKSB7XG4gIHRyeSB7XG4gICAgdmFyIGkgPSBuW2FdKGMpLFxuICAgICAgdSA9IGkudmFsdWU7XG4gIH0gY2F0Y2ggKG4pIHtcbiAgICByZXR1cm4gdm9pZCBlKG4pO1xuICB9XG4gIGkuZG9uZSA/IHQodSkgOiBQcm9taXNlLnJlc29sdmUodSkudGhlbihyLCBvKTtcbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdCA9IHRoaXMsXG4gICAgICBlID0gYXJndW1lbnRzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAociwgbykge1xuICAgICAgdmFyIGEgPSBuLmFwcGx5KHQsIGUpO1xuICAgICAgZnVuY3Rpb24gX25leHQobikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoYSwgciwgbywgX25leHQsIF90aHJvdywgXCJuZXh0XCIsIG4pO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX3Rocm93KG4pIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGEsIHIsIG8sIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgbik7XG4gICAgICB9XG4gICAgICBfbmV4dCh2b2lkIDApO1xuICAgIH0pO1xuICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXN5bmNUb0dlbmVyYXRvciwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhhLCBuKSB7XG4gIGlmICghKGEgaW5zdGFuY2VvZiBuKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2NsYXNzQ2FsbENoZWNrLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKFwiLi90b1Byb3BlcnR5S2V5LmpzXCIpO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXMoZSwgcikge1xuICBmb3IgKHZhciB0ID0gMDsgdCA8IHIubGVuZ3RoOyB0KyspIHtcbiAgICB2YXIgbyA9IHJbdF07XG4gICAgby5lbnVtZXJhYmxlID0gby5lbnVtZXJhYmxlIHx8ICExLCBvLmNvbmZpZ3VyYWJsZSA9ICEwLCBcInZhbHVlXCIgaW4gbyAmJiAoby53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHRvUHJvcGVydHlLZXkoby5rZXkpLCBvKTtcbiAgfVxufVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKGUsIHIsIHQpIHtcbiAgcmV0dXJuIHIgJiYgX2RlZmluZVByb3BlcnRpZXMoZS5wcm90b3R5cGUsIHIpLCB0ICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHQpLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2NyZWF0ZUNsYXNzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKFwiLi90b1Byb3BlcnR5S2V5LmpzXCIpO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KGUsIHIsIHQpIHtcbiAgcmV0dXJuIChyID0gdG9Qcm9wZXJ0eUtleShyKSkgaW4gZSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCB7XG4gICAgdmFsdWU6IHQsXG4gICAgZW51bWVyYWJsZTogITAsXG4gICAgY29uZmlndXJhYmxlOiAhMCxcbiAgICB3cml0YWJsZTogITBcbiAgfSkgOiBlW3JdID0gdCwgZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2RlZmluZVByb3BlcnR5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKHQpIHtcbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiAodCkge1xuICAgIHJldHVybiB0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cyksIF9nZXRQcm90b3R5cGVPZih0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2dldFByb3RvdHlwZU9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4vc2V0UHJvdG90eXBlT2YuanNcIik7XG5mdW5jdGlvbiBfaW5oZXJpdHModCwgZSkge1xuICBpZiAoXCJmdW5jdGlvblwiICE9IHR5cGVvZiBlICYmIG51bGwgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGUgJiYgZS5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHQsXG4gICAgICB3cml0YWJsZTogITAsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfVxuICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogITFcbiAgfSksIGUgJiYgc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pbmhlcml0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkocikge1xuICBpZiAoXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIG51bGwgIT0gcltTeW1ib2wuaXRlcmF0b3JdIHx8IG51bGwgIT0gcltcIkBAaXRlcmF0b3JcIl0pIHJldHVybiBBcnJheS5mcm9tKHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfaXRlcmFibGVUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHtcbiAgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTtcbiAgaWYgKG51bGwgIT0gdCkge1xuICAgIHZhciBlLFxuICAgICAgbixcbiAgICAgIGksXG4gICAgICB1LFxuICAgICAgYSA9IFtdLFxuICAgICAgZiA9ICEwLFxuICAgICAgbyA9ICExO1xuICAgIHRyeSB7XG4gICAgICBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7XG4gICAgICAgIGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjtcbiAgICAgICAgZiA9ICExO1xuICAgICAgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApO1xuICAgIH0gY2F0Y2ggKHIpIHtcbiAgICAgIG8gPSAhMCwgbiA9IHI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghZiAmJiBudWxsICE9IHRbXCJyZXR1cm5cIl0gJiYgKHUgPSB0W1wicmV0dXJuXCJdKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChvKSB0aHJvdyBuO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfaXRlcmFibGVUb0FycmF5TGltaXQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVSZXN0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX25vbkl0ZXJhYmxlU3ByZWFkLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgPSByZXF1aXJlKFwiLi9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzXCIpO1xuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKGUsIHQpIHtcbiAgaWYgKG51bGwgPT0gZSkgcmV0dXJuIHt9O1xuICB2YXIgbyxcbiAgICByLFxuICAgIGkgPSBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKGUsIHQpO1xuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBuID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtcbiAgICBmb3IgKHIgPSAwOyByIDwgbi5sZW5ndGg7IHIrKykgbyA9IG5bcl0sIHQuaW5kZXhPZihvKSA+PSAwIHx8IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSwgbykgJiYgKGlbb10gPSBlW29dKTtcbiAgfVxuICByZXR1cm4gaTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UociwgZSkge1xuICBpZiAobnVsbCA9PSByKSByZXR1cm4ge307XG4gIHZhciB0ID0ge307XG4gIGZvciAodmFyIG4gaW4gcikgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwociwgbikpIHtcbiAgICBpZiAoZS5pbmRleE9mKG4pID49IDApIGNvbnRpbnVlO1xuICAgIHRbbl0gPSByW25dO1xuICB9XG4gIHJldHVybiB0O1xufVxubW9kdWxlLmV4cG9ydHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbnZhciBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQgPSByZXF1aXJlKFwiLi9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanNcIik7XG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBlKSB7XG4gIGlmIChlICYmIChcIm9iamVjdFwiID09IF90eXBlb2YoZSkgfHwgXCJmdW5jdGlvblwiID09IHR5cGVvZiBlKSkgcmV0dXJuIGU7XG4gIGlmICh2b2lkIDAgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTtcbiAgcmV0dXJuIGFzc2VydFRoaXNJbml0aWFsaXplZCh0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YodCwgZSkge1xuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fID0gZSwgdDtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX3NldFByb3RvdHlwZU9mKHQsIGUpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfc2V0UHJvdG90eXBlT2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlXaXRoSG9sZXMgPSByZXF1aXJlKFwiLi9hcnJheVdpdGhIb2xlcy5qc1wiKTtcbnZhciBpdGVyYWJsZVRvQXJyYXlMaW1pdCA9IHJlcXVpcmUoXCIuL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzXCIpO1xudmFyIHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgbm9uSXRlcmFibGVSZXN0ID0gcmVxdWlyZShcIi4vbm9uSXRlcmFibGVSZXN0LmpzXCIpO1xuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkociwgZSkge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMocikgfHwgaXRlcmFibGVUb0FycmF5TGltaXQociwgZSkgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgZSkgfHwgbm9uSXRlcmFibGVSZXN0KCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9zbGljZWRUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5V2l0aG91dEhvbGVzID0gcmVxdWlyZShcIi4vYXJyYXlXaXRob3V0SG9sZXMuanNcIik7XG52YXIgaXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vaXRlcmFibGVUb0FycmF5LmpzXCIpO1xudmFyIHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgbm9uSXRlcmFibGVTcHJlYWQgPSByZXF1aXJlKFwiLi9ub25JdGVyYWJsZVNwcmVhZC5qc1wiKTtcbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShyKSB7XG4gIHJldHVybiBhcnJheVdpdGhvdXRIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXkocikgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkocikgfHwgbm9uSXRlcmFibGVTcHJlYWQoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3RvQ29uc3VtYWJsZUFycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xuZnVuY3Rpb24gdG9QcmltaXRpdmUodCwgcikge1xuICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDtcbiAgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XG4gIGlmICh2b2lkIDAgIT09IGUpIHtcbiAgICB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTtcbiAgICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7XG4gIH1cbiAgcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gdG9QcmltaXRpdmUsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCIuL3R5cGVvZi5qc1wiKVtcImRlZmF1bHRcIl07XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKFwiLi90b1ByaW1pdGl2ZS5qc1wiKTtcbmZ1bmN0aW9uIHRvUHJvcGVydHlLZXkodCkge1xuICB2YXIgaSA9IHRvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpO1xuICByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiO1xufVxubW9kdWxlLmV4cG9ydHMgPSB0b1Byb3BlcnR5S2V5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX3R5cGVvZihvKSB7XG4gIFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjtcblxuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvO1xuICB9IDogZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbztcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX3R5cGVvZihvKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheUxpa2VUb0FycmF5ID0gcmVxdWlyZShcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiKTtcbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBhKSB7XG4gIGlmIChyKSB7XG4gICAgaWYgKFwic3RyaW5nXCIgPT0gdHlwZW9mIHIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIsIGEpO1xuICAgIHZhciB0ID0ge30udG9TdHJpbmcuY2FsbChyKS5zbGljZSg4LCAtMSk7XG4gICAgcmV0dXJuIFwiT2JqZWN0XCIgPT09IHQgJiYgci5jb25zdHJ1Y3RvciAmJiAodCA9IHIuY29uc3RydWN0b3IubmFtZSksIFwiTWFwXCIgPT09IHQgfHwgXCJTZXRcIiA9PT0gdCA/IEFycmF5LmZyb20ocikgOiBcIkFyZ3VtZW50c1wiID09PSB0IHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpID8gYXJyYXlMaWtlVG9BcnJheShyLCBhKSA6IHZvaWQgMDtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBDaGFubmVscyBmcm9tICcuL0NoYW5uZWxzJztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi9DaGFubmVsU3RhdGUnO1xuXG5leHBvcnQge1xuICBTREssXG4gIENoYW5uZWxzLFxuICBDaGFubmVsU3RhdGVcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgU0RLLFxuICBDaGFubmVscyxcbiAgQ2hhbm5lbFN0YXRlXG59OyJdLCJuYW1lcyI6WyJHbG9iYWxTY29wZSIsIkRpc3Bvc2FibGUiLCJEaXNwb3NhYmxlTGlzdCIsIlN1YmplY3QiLCJSZWFkT25seVN1YmplY3QiLCJ2aXNpYmlsaXR5Q2hhbmdlRXZlbnQiLCJBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsIl9jbGFzc0NhbGxDaGVjayIsIl9kZWZpbmVQcm9wZXJ0eSIsIkRhdGUiLCJub3ciLCJfaXNGb3JlZ3JvdW5kIiwiX3JlYWRPbmx5SXNGb3JlZ3JvdW5kIiwiaW5pdGlhbGl6ZSIsIl9jcmVhdGVDbGFzcyIsImtleSIsImdldCIsInZhbHVlIiwiZ2V0VGltZVNpbmNlTGFzdENoYW5nZSIsIl90aW1lT2ZMYXN0VGFiRm9jdXNDaGFuZ2UiLCJkaXNwb3NlIiwiX2Rpc3Bvc2FibGVzIiwiX3RoaXMiLCJoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlIiwiZG9jdW1lbnRJc0hpZGRlbiIsInVzZUV2ZW50Q2FwdHVyZVBoYXNlIiwiYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyIiwiYWRkIiwicmVtb3ZlRG9jdW1lbnRFdmVudExpc3RlbmVyIiwiZGVmYXVsdCIsIkJyb3dzZXJEZXRlY3RvciIsIl9icm93c2VyTmFtZUFuZFZlcnNpb24iLCJfYnJvd3Nlck5hbWUiLCJfYnJvd3Nlck1ham9yVmVyc2lvbiIsIl9pc0FuZHJvaWQiLCJfaXNDaHJvbWU2OSIsIl9pc0Nocm9tZTcwIiwiX2lzQ2hyb21lNzEiLCJfaXNDaHJvbWU3MiIsIl9pc0Nocm9tZTc0IiwiX2lzQ2hyb21lNzUiLCJfaXNDaHJvbWU3NiIsIl9pc0Nocm9tZTc3IiwiaXNNb2JpbGUiLCJfaXNNb2JpbGUiLCJwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsImJyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIm1hdGNoIiwiX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4IiwicGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSIsInBhcnNlQnJvd3Nlck5hbWUiLCJicm93c2VyTmFtZUxpc3QiLCJzcGxpdCIsInBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbiIsImJyb3dzZXJWZXJzaW9uTGlzdCIsImZ1bGxWZXJzaW9uIiwiTnVtYmVyIiwibXNpZSIsImluZGV4T2YiLCJjb25jYXQiLCJwYXJzZUludCIsInN1YnN0cmluZyIsInRyaWRlbnQiLCJ2ZXJzaW9uIiwiX0Jyb3dzZXJEZXRlY3RvciIsInRlc3QiLCJfbmF2aWdhdG9yIiwiX25hdmlnYXRvcjIiLCJpbmNsdWRlcyIsIlRlbGVtZXRyeUxldmVsTWFwcGluZyIsIlRlbGVtZXRyeURlZmF1bHQiLCJMb2dnaW5nTGV2ZWxNYXBwaW5nIiwiTG9nZ2VyRGVmYXVsdHMiLCJQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIiLCJnZXRTdHJpbmdWYWx1ZSIsIm5hbWUiLCJkZWZhdWx0U3RyaW5nVmFsdWUiLCJnZXRCb29sZWFuVmFsdWUiLCJkZWZhdWx0Qm9vbGVhblZhbHVlIiwiY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUiLCJkZWZhdWx0VGVsZW1ldHJ5TGV2ZWwiLCJjb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlIiwiZGVmYXVsdExvZ2dpbmdMZXZlbCIsImRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsIiwiZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbCIsIkZlYXR1cmVFbmFibGVtZW50IiwiR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIiLCJFcnJvciIsImZvcmNlR2FyYmFnZUNvbGxlY3Rpb24iLCJpc0ZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb25TdXBwb3J0ZWQiLCJmb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uIiwiaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCIsInF1ZXVlTWljcm90YXNrIiwib3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uIiwiYmluZCIsInNldFRpbWVvdXQiLCJpbWciLCJkb2N1bWVudENyZWF0ZUVsZW1lbnQiLCJzcmMiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJCbG9iIiwiQXJyYXlCdWZmZXIiLCJvbmVycm9yIiwicmV2b2tlT2JqZWN0VVJMIiwiTmV0d29ya01vbml0b3IiLCJuYXZpZ2F0b3JDb25uZWN0aW9uIiwidW5kZWZpbmVkIiwiaXNTdXBwb3J0ZWQiLCJzZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMiLCJ1cGRhdGVTdGF0aXN0aWNzIiwiX2lzU3VwcG9ydGVkIiwiX3J0dCIsIl9lZmZlY3RpdmVUeXBlIiwiX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJfcmVmIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hMiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTMiLCJkb3dubGluayIsImRvd25saW5rTWF4IiwiZ2V0RWZmZWN0aXZlVHlwZSIsIl9yZWYyIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNCIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTUiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE2IiwiZWZmZWN0aXZlVHlwZSIsInR5cGUiLCJnZXRSb3VuZFRyaXBUaW1lIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNyIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTgiLCJydHQiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE5IiwibGlzdGVuZXIiLCJhZGRFdmVudExpc3RlbmVyIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hMCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJNZXRyaWNzVHlwZSIsIk1ldHJpY1R5cGUiLCJEdXJhdGlvbnMiLCJTREsiLCJMb2dnZXJGYWN0b3J5IiwiU3RyZWFtU2V0dXBMaXN0ZW5lciIsInBhZ2VMb2FkVGltZSIsImdldExvZ2dlciIsIm1ldHJpY3NTZXJ2aWNlIiwiX3N0YXJ0VGltZSIsIl9wYWdlTG9hZFRpbWUiLCJzdWNjZXNzIiwic3RyZWFtSWQiLCJyZWNvcmRTdHJlYW1NZXRyaWMiLCJTZXR1cENvbXBsZXRlZCIsImZhaWwiLCJTZXR1cEZhaWxlZCIsIm1ldHJpY1R5cGUiLCJfbWV0cmljU3VibWl0dGVkIiwic2V0dXBUaW1lIiwibWV0cmljTmFtZSIsImdldE5hbWUiLCJwdXNoIiwicnVudGltZSIsInVpbnQ2NCIsIl9sb2dnZXIiLCJpbmZvIiwidG9Jc29TdHJpbmciLCJFZGdlVG9rZW4iLCJlZGdlQXV0aFRva2VuUHJlZml4IiwiRWRnZUF1dGhQYXJzZXIiLCJwYXJzZVRva2VuIiwidG9rZW4iLCJpc0VuY29kZWRFZGdlVG9rZW5WYWxpZCIsImVycm9yIiwiZGVjb2RlZFRva2VuIiwiYXRvYiIsInN1YnN0ciIsImxlbmd0aCIsImVkZ2VUb2tlbiIsIkpTT04iLCJwYXJzZSIsImUiLCJzdGFydHNXaXRoIiwiX2VkZ2VUb2tlbiR0b2tlbiIsIl9lZGdlVG9rZW4kdG9rZW4yIiwiX2FwcGxpY2F0aW9uSWQiLCJhcHBsaWNhdGlvbklkIiwiX3Rva2VuIiwidXJpIiwiY2FwYWJpbGl0aWVzIiwiQnVpbGRGZWF0dXJlcyIsIl9zZW5kTG9jYWxDYW5kaWRhdGVzIiwiX3NlbmRMb2dzIiwiX3NlbmRNZXRyaWNzIiwiX2xvZ1RvQ29uc29sZSIsImFwcGx5RmVhdHVyZXMiLCJmZWF0dXJlcyIsIl9fRkVBVFVSRVNfXyIsInNlbmRMb2NhbENhbmRpZGF0ZXMiLCJzZW5kTG9ncyIsInNlbmRNZXRyaWNzIiwibG9nVG9Db25zb2xlIiwiaXNDaHJvbWU3NCIsImlzQ2hyb21lNzUiLCJpc0Nocm9tZTc2IiwiaXNDaHJvbWU3NyIsImFkZFRyYW5jZWl2ZXJEaXNhYmxlZCIsImlzQ2hyb21lNjkiLCJpc0Nocm9tZTcwIiwiaXNDaHJvbWU3MSIsImlzQ2hyb21lNzIiLCJicm93c2VyTmFtZSIsImJyb3dzZXJNYWpvclZlcnNpb24iLCJfR2xvYmFsU2NvcGUkdmFsdWUiLCJNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yIiwiTWVkaWFTdHJlYW1UcmFja0dlbmVyYXRvciIsIlJUQ1J0cFJlY2VpdmVyIiwicHJvdG90eXBlIiwiY3JlYXRlRW5jb2RlZFN0cmVhbXMiLCJSVENSdHBTY3JpcHRUcmFuc2Zvcm0iLCJfR2xvYmFsU2NvcGUkdmFsdWUyIiwiSFRNTFZpZGVvRWxlbWVudCIsInJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2siLCJpc1JlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2tTdXBwb3J0ZWQiLCJpc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCIsImlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkIiwiUGFyYW1ldGVycyIsIl9kaXNjb3ZlcnlQYXJhbWV0ZXJzIiwiYXBwbHlQYXJhbWV0ZXJzIiwicGFyYW1ldGVycyIsIl9fUEFSQU1FVEVSU19fIiwiZGlzY292ZXJ5IiwiaW50ZW50aW9ucyIsImJyb3dzZXJHbG9iYWxTY29wZSIsImRvY3VtZW50IiwibG9jYXRpb24iLCJ3aW5kb3ciLCJnbG9iYWxTY29wZSIsIl9kb2N1bWVudCIsIl9sb2NhdGlvbiIsIl93aW5kb3ciLCJGb3JtRGF0YSIsIk1lZGlhU3RyZWFtIiwiTWVkaWFTdHJlYW1UcmFjayIsIk1lZGlhU291cmNlIiwiUlRDUGVlckNvbm5lY3Rpb24iLCJSVENTZXNzaW9uRGVzY3JpcHRpb24iLCJSVENJY2VDYW5kaWRhdGUiLCJVUkxTZWFyY2hQYXJhbXMiLCJjbGVhckludGVydmFsIiwiY2xlYXJUaW1lb3V0IiwiY3JlYXRlRWxlbWVudCIsImhhc0ZvY3VzIiwiaGlkZGVuIiwicXVlcnlTZWxlY3RvciIsImZldGNoIiwiaG9zdG5hbWUiLCJzZWFyY2giLCJjb25uZWN0aW9uIiwib25MaW5lIiwic2V0SW50ZXJ2YWwiLCJzZXRJbnN0YW5jZSIsInByb3ZpZGVkR2xvYmFsU2NvcGUiLCJnZXRJbnN0YW5jZSIsIl9yZWFkT25seUluc3RhbmNlIiwic3Vic2NyaWJlIiwiY2FsbGJhY2siLCJfR2xvYmFsU2NvcGUiLCJfaW5zdGFuY2UiLCJkaXNwb3NhYmxlIiwiX2Rpc3Bvc2VkIiwiX2Rpc3Bvc2FibGUiLCJjYWxsIiwiX2xpc3QiLCJmb3JFYWNoIiwidG9TdHJpbmciLCJtYXhEaWdpdHNJbkZsb2F0QWZ0ZXJEb3QiLCJOdW1iZXJzIiwiY291bnROdW1iZXJMZW5ndGgiLCJpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlIiwibnVtYmVyIiwiY291bnREaWdpdHNCZWZvcmVEZWNpbWFsIiwiTWF0aCIsImZsb29yIiwiY291bnREaWdpdHNBZnRlckRlY2ltYWwiLCJmaXhSb3VuZGluZyIsInByZWNpc2lvbiIsInBvd2VyIiwicG93Iiwicm91bmQiLCJkaWdpdHNCZWZvcmVEZWNpbWFsIiwib3JpZ2luYWxWYWx1ZSIsIm1vZGlmaWVkVmFsdWUiLCJjb3VudCIsIlN0cmluZ3MiLCJyYW5kb20iLCJyYW5kb20xM0NoYXJhY3RlcnMiLCJsb29wcyIsImNlaWwiLCJBcnJheSIsImZpbGwiLCJyZWR1Y2UiLCJzdHJpbmciLCJmdW5jIiwiYXNzZXJ0VW5yZWFjaGFibGUiLCJ4IiwiQXBwZW5kZXJzIiwiX2FwcGVuZGVycyIsImFwcGVuZGVyIiwicmVtb3ZlIiwiaXRlbXMiLCJpdGVtIiwiTG9nZ2luZ0xldmVsIiwiQ29uc29sZUFwcGVuZGVyIiwidGhyZXNob2xkIiwiX3RocmVzaG9sZCIsImxvZyIsImxvZ0xldmVsIiwibWVzc2FnZSIsImNhdGVnb3J5IiwiZGF0ZSIsImZ1bGxNZXNzYWdlIiwidG9JU09TdHJpbmciLCJXYXJuIiwiY29uc29sZSIsIkxvZ2dlciIsImFwcGVuZGVycyIsIl9jYXRlZ29yeSIsInRyYWNlIiwiVHJhY2UiLCJfbGVuIiwiYXJndW1lbnRzIiwiYXJncyIsIl9rZXkiLCJkZWJ1ZyIsIkRlYnVnIiwiX2xlbjIiLCJfa2V5MiIsIkluZm8iLCJfbGVuMyIsIl9rZXkzIiwid2FybiIsIl9sZW40IiwiX2tleTQiLCJfbGVuNSIsIl9rZXk1IiwiZmF0YWwiLCJGYXRhbCIsIl9sZW42IiwiX2tleTYiLCJsZXZlbCIsInJlcGxhY2VQbGFjZWhvbGRlcnMiLCJfdGhpczIiLCJyZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nIiwiaW5kZXgiLCJyZXBsYWNlQXJndW1lbnQiLCJzcGxpY2UiLCJzdHJpbmdpZnkiLCJhY2N1bXVsYXRvciIsImN1cnJlbnRWYWx1ZSIsImFycmF5IiwiZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UiLCJzdGFjayIsImFyZyIsImNhY2hlIiwiXyIsIk9iamVjdCIsImFyZ3VtZW50IiwiZGF0YSIsInRvU3RyaW5nU3RyIiwiTG9nZ2luZ1RocmVzaG9sZCIsIlRlbGVtZXRyeUFwcGVuZGVyIiwiVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsIkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIiLCJfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsImxvZ2dlciIsIl9sb2dnZXJzIiwiYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5TG9nZ2luZ0xldmVsIiwiYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbCIsImFwcGx5Q29uc29sZUxvZ2dlciIsImFwcGx5VGVsZW1ldHJ5TG9nZ2VyIiwicGFyYW1ldGVyVmFsdWUiLCJzZXRUaHJlc2hvbGQiLCJhcHBseUFwcGVuZGVyIiwibG9nZ2luZ0xldmVsIiwiT2ZmIiwiQWxsIiwiY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbCIsImxvZ2dpbmdMZXZlbFR5cGUiLCJUZWxlbWV0cnlMZXZlbCIsIm1ldHJpY3MiLCJfbWV0cmljcyIsImdldFRlbGVtZXRyeUxldmVsIiwiVGltZVRvRmlyc3RGcmFtZSIsIkVzc2VudGlhbCIsIkNoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUiLCJTdGFsbGVkIiwiQnVmZmVyaW5nIiwiUm91bmRUcmlwVGltZSIsIkRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiTmV0d29ya1R5cGUiLCJSZXNvbHV0aW9uQ2hhbmdlZCIsIkFwcGxpY2F0aW9uRm9yZWdyb3VuZCIsIkFwcGxpY2F0aW9uQmFja2dyb3VuZCIsIk1ldHJpY3NDb25maWd1cmF0aW9uIiwiX3VybCIsInNldCIsInVybCIsIm1ldHJpY3NVcmwiLCJwYXRobmFtZSIsIl9lbnZpcm9ubWVudCIsImVudmlyb25tZW50IiwiX3RlbmFuY3kiLCJ0ZW5hbmN5IiwiX3Nlc3Npb25JZCIsInNlc3Npb25JZCIsIk1ldHJpY3NTZXJ2aWNlIiwiVGVsZW1ldHJ5VXJsIiwiRW52aXJvbm1lbnQiLCJNZXRyaWNzRmFjdG9yeSIsImdldE1ldHJpY3NTZXJ2aWNlIiwiX3R5cGVvZiIsIm1ldHJpY3NTZXJ2aWNlcyIsIl9tZXRyaWNzU2VydmljZXMiLCJtZXRyaWNzQ29uZmlndXJhdGlvbiIsImNsaWVudFNlc3Npb25JZCIsImdldFRlbGVtZXRyeVVybCIsImdldEVudmlyb25tZW50RnJvbVVybCIsImNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsIiwidGVsZW1ldHJ5TGV2ZWwiLCJzZXRUZWxlbWV0cnlMZXZlbCIsInZhbHVlcyIsInQiLCJyIiwiU3ltYm9sIiwibiIsIml0ZXJhdG9yIiwibyIsInRvU3RyaW5nVGFnIiwiaSIsImMiLCJHZW5lcmF0b3IiLCJ1IiwiY3JlYXRlIiwiX3JlZ2VuZXJhdG9yRGVmaW5lMiIsImYiLCJwIiwieSIsIkciLCJ2IiwiYSIsImQiLCJsIiwiVHlwZUVycm9yIiwiZG9uZSIsInJldHVybiIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJnZXRQcm90b3R5cGVPZiIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiZGlzcGxheU5hbWUiLCJfcmVnZW5lcmF0b3IiLCJ3IiwibSIsImRlZmluZVByb3BlcnR5IiwiX3JlZ2VuZXJhdG9yRGVmaW5lIiwiX2ludm9rZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIkV4cG9uZW50aWFsQmFja29mZiIsIlZlcnNpb25NYW5hZ2VyIiwicmVxdWVzdFNpemVMaW1pdCIsIm1heEJ1ZmZlcmVkUmVjb3JkcyIsIl9tZXRyaWNzQ29uZmlndXJhdGlvbiIsIl9leHBvbmVudGlhbEJhY2tvZmYiLCJnZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlIiwidGhlbiIsImxvY2F0aW9uSG9zdG5hbWUiLCJfZG9tYWluIiwibWV0cmljIiwicHJldmlvdXNWYWx1ZSIsInJlc291cmNlIiwia2luZCIsIm1ldHJpY1JlY29yZCIsInRpbWVzdGFtcCIsImZ1bGxRdWFsaWZpZWROYW1lIiwic2RrVmVyc2lvbiIsImlnbm9yZWQiLCJzZW5kTWV0cmljc0lmQWJsZSIsIlByb21pc2UiLCJyZXNvbHZlTG9jYXRpb25Ib3N0bmFtZSIsImdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfY2FsbGVlIiwibWV0cmljc01lc3NhZ2VzIiwiZm9ybURhdGEiLCJfY29udGV4dCIsImFwcGVuZCIsInJlY29yZHMiLCJtZXRob2QiLCJib2R5IiwiX3giLCJhcHBseSIsIl9zZW5kTWV0cmljc0lmQWJsZSIsIl9jYWxsZWUyIiwiX2NvbnRleHQyIiwiX2lzU2VuZGluZyIsInNsaWNlIiwicmVzcG9uc2UiLCJpc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZSIsIl9mYWlsdXJlQ291bnQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJnZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50IiwiY2F0Y2giLCJzdGF0dXMiLCJ0ZWxlbWV0cnlMZXZlbFR5cGUiLCJQcm9taXNlSGFuZGxlciIsIl9zdGF0ZSIsIl9oYW5kbGVkIiwiX3ZhbHVlIiwiX2RlZmVycmVkcyIsImRvUmVzb2x2ZSIsInByb21pc2VSZXNvbHZlIiwicmVhc29uIiwicHJvbWlzZVJlamVjdCIsIm5ld1ZhbHVlIiwicHJvbWlzZSIsImZpbmFsZSIsIl9pbW1lZGlhdGUiLCJfdW5oYW5kbGVkUmVqZWN0aW9uIiwibGVuIiwiaGFuZGxlIiwiZGVmZXJyZWQiLCJvbkZ1bGZpbGxlZCIsIm9uUmVqZWN0ZWQiLCJyZXN1bHQiLCJhbGwiLCJhcnIiLCJyZXNvbHZlIiwicmVqZWN0IiwiaXNBcnJheSIsInJlbWFpbmluZyIsIm1hbmFnZVJlc3BvbnNlIiwiY29uc3RydWN0b3IiLCJyYWNlIiwiVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSIsIkVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsImRlZmF1bHRUcmFja0tpbmRzIiwiUGVlckNvbm5lY3Rpb25TZXJ2aWNlIiwiX3BlZXJDb25uZWN0aW9uRmFjdG9yeSIsImluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmciLCJpc1ByZWNhY2hpbmdFbmFibGVkIiwicHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX3ByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jYWNoZWQiLCJkaXJlY3Rpb24iLCJwZWVyQ29ubmVjdGlvbiIsImNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jYWxsZWUzIiwidHJhY2tLaW5kcyIsImVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsImNvbmZpZ3VyYXRpb24iLCJfYXJnczMiLCJfY29udGV4dDMiLCJEaXNhYmxlZCIsImlzVHJhY2tzS2luZHNFcXVpdmFsZW50VG9EZWZhdWx0IiwiRW5hYmxlZCIsImNyZWF0ZVBlZXJDb25uZWN0aW9uIiwic3VwcG9ydHNBZGRUcmFuc2NlaXZlciIsImF1ZGlvVHJhbnNjZWl2ZXJzIiwidmlkZW9UcmFuc2NlaXZlcnMiLCJvcHRpb25zIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJfdDUiLCJfdDYiLCJhZGRUcmFuc2NlaXZlciIsImNyZWF0ZU9mZmVyIiwibG9jYWxPZmZlciIsIm9mZmVyVG9SZWNlaXZlQXVkaW8iLCJvZmZlclRvUmVjZWl2ZVZpZGVvIiwidHJhY2tzS2luZHMiLCJjb3VudFRyYWNrS2luZHMiLCJ0cmFja0tpbmRDb3VudCIsImF1ZGlvIiwidmlkZW8iLCJjb3VudGVkVHJhY2tLaW5kcyIsImNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcyIsIlJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIiwidHJ1bmNhdGVJY2VTZXJ2ZXJzIiwiaWNlU2VydmVycyIsInVybHMiLCJ1c2VybmFtZSIsImNyZWRlbnRpYWwiLCJTZHBQYXJzZXIiLCJ1cGRhdGVTdGF0aXN0aWNUaW1lb3V0IiwiUnRjQ29ubmVjdGlvbk1vbml0b3IiLCJtZWRpYVN0cmVhbSIsImVzdGltYXRlZFJvdW5kVHJpcFRpbWUiLCJfcGVlckNvbm5lY3Rpb24iLCJfZXN0aW1hdGVkUm91bmRUcmlwVGltZSIsIl90cmFja3NUb01vbml0b3IiLCJnZXRUcmFja3MiLCJtYXAiLCJ0cmFjayIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjIiLCJnZXRDdXJyZW50T2ZmZXJEaXNhYmxlZCIsImN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiIsInNkcCIsInBhcnNlZFNEUCIsIl9lc3RpbWF0ZWRBdWRpb0NvZGVjIiwiYXVkaW9Db2RlYyIsIl9lc3RpbWF0ZWRWaWRlb0NvZGVjIiwidmlkZW9Db2RlYyIsInVwZGF0ZVN0YXRpc3RpYyIsIl9ydGNTdGF0aXN0aWMiLCJfaXNNb25pdG9yUnVubmluZyIsIl91cGRhdGVUaW1lb3V0IiwiX3VwZGF0ZVN0YXRpc3RpYyIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjMiLCJfaWdub3JlZCIsImdldEtpbmRGb3JTYWZhcmkxMSIsImdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQiLCJ1cGRhdGVTdGF0aXN0aWNMZWdhY3kiLCJpZCIsImdldFN0YXRzIiwic3RhdHMiLCJydGNTdGF0aXN0aWNzIiwicm91bmRUcmlwVGltZSIsImxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCIsInJlcG9ydCIsImN1cnJlbnRSb3VuZFRyaXBUaW1lIiwibWVkaWFUeXBlIiwiY29kZWMiLCJjb2RlY0lkIiwibWltZVR5cGUiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHYiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHYyIiwiX3RoaXMkX3J0Y1N0YXRpc3RpYyR2MyIsIl90aGlzJF9ydGNTdGF0aXN0aWMkdjQiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHY1IiwiX3RoaXMkX3J0Y1N0YXRpc3RpYyR2NiIsIl90aGlzJF9ydGNTdGF0aXN0aWMkdjciLCJieXRlcyIsImJ5dGVzUmVjZWl2ZWQiLCJwcmV2aW91c0J5dGVzUmVjZWl2ZWQiLCJieXRlc0RlbHRhIiwidGltZURlbHRhIiwiYml0cmF0ZSIsInNzcmMiLCJwYWNrZXRzTG9zdCIsInBhY2tldHNSZWNlaXZlZCIsImdldENvZGVjQnlUeXBlIiwiZnJhbWVzRGVjb2RlZCIsImZwcyIsIl91cGRhdGVTdGF0aXN0aWNMZWdhY3kiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb240IiwiZ2V0U3RhdHNMZWdhY3kiLCJuYW1lcyIsInN0YXQiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQyIiwiX3NkcCIsInNkcFNwbGl0QnlMaW5lcyIsInNkcFNwbGl0QnlUcmFja3MiLCJfYXVkaW9Db2RlYyIsImFwcGx5Q29kZWMiLCJfdmlkZW9Db2RlYyIsIl9pc0F1ZGlvVHJhY2tFbmFibGVkIiwiaXNUcmFja0J5VHlwZUVuYWJsZWQiLCJfaXNWaWRlb1RyYWNrRW5hYmxlZCIsInNkcFNlY3Rpb25Gb3JUeXBlIiwiZmluZCIsInNkcFRyYWNrIiwiX3NkcFNwbGl0QnlMaW5lcyRmaW5kIiwicnRtYXAiLCJzZHBMaW5lIiwidXNlZENvZGVjTGluZSIsInVzZWRDb2RlYyIsImNvZGVjTmFtZSIsIlZhbmlsbGFQZWVyQ29ubmVjdGlvbiIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uIiwiY3VycmVudExvY2FsRGVzY3JpcHRpb24iLCJjb25uZWN0aW9uU3RhdGUiLCJpY2VDb25uZWN0aW9uU3RhdGUiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb241IiwiZ2V0Q29uZmlndXJhdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjYiLCJzZXRDb25maWd1cmF0aW9uIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNyIsImdldFRyYW5zY2VpdmVyc0Rpc2FibGVkIiwiZ2V0VHJhbnNjZWl2ZXJzIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uOCIsIl9jcmVhdGVPZmZlciIsInByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkIiwiX2NyZWF0ZUFuc3dlciIsImNyZWF0ZUFuc3dlciIsIl94MiIsIl9zZXRMb2NhbERlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb24iLCJzZXRMb2NhbERlc2NyaXB0aW9uIiwiX3gzIiwiX3NldFJlbW90ZURlc2NyaXB0aW9uIiwiX2NhbGxlZTQiLCJfZGVzY3JpcHRpb24kc2RwIiwiaGFzQ3J5cHRvIiwiX2NvbnRleHQ0Iiwic2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfeDQiLCJnZXRTZW5kZXJzIiwiZ2V0UmVjZWl2ZXJzIiwic2VsZWN0b3IiLCJfdGhpczMiLCJhZGRTdHJlYW0iLCJfdGhpczQiLCJhZGRUcmFjayIsIm9udHJhY2siLCJoYW5kbGVyIiwib25pY2VjYW5kaWRhdGUiLCJvbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSIsIm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlIiwiY2xvc2UiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb245IiwiX2NyZWF0ZVBlZXJDb25uZWN0aW9uIiwicmVzb2x2ZVBlZXJDb25uZWN0aW9uUHJvbWlzZSIsInN1YmplY3QiLCJfc3ViamVjdCIsIkRpc3Bvc2FibGVMaXN0ZW5lciIsIl9EaXNwb3NhYmxlIiwibGlzdGVuZXJzIiwiX2NhbGxTdXBlciIsImlkeCIsIl9pbmhlcml0cyIsIl9saXN0ZW5lcnMiLCJjaGFuZ2VkIiwiY29tcGFyYWJsZSIsImVxdWFscyIsIl9pIiwiX2FyciIsImJhc2VVUkwiLCJvcmlnaW4iLCJEaXNjb3ZlcnlVcmkiLCJfR2xvYmFsU2NvcGUkZ2V0SW5zdGEiLCJfY2xpZW50U2Vzc2lvbklkIiwiX2xvYWRlZFRpbWVzdGFtcCIsIl9yZWFkT25seUluaXRpYWxpemVkIiwiX3JlYWRPbmx5RGlzY292ZXJ5VXJpIiwiX3JlYWRPbmx5UGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSIsIl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24iLCJfYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSIsIl9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSIsIl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0IiwiX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyIsIl93ZWJQbGF5ZXJMb2FkZXIiLCJfc2hha2FQbGF5ZXJMb2FkZXIiLCJfaGxzSnNMb2FkZXIiLCJfbWV0cmljc1NlcnZpY2UiLCJfYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJfdGVsZW1ldHJ5VXJsIiwiX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJyZXRyaWVzQW1vdW50IiwiX3RlbGVtZXRyeUxldmVsIiwiYXBwbHlUZWxlbWV0cnlDb25maWd1cmF0aW9uIiwidGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsImlnbm9yZWRFbnZpcm9ubWVudCIsImlnbm9yZWREaXNjb3ZlcnlVcmkiLCJ0ZWxlbWV0cnlVcmwiLCJ0ZWxlbWV0cnlBcHBlbmRlciIsImlnbm9yZWRUZW5hbmN5IiwiYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbiIsImlnbm9yZWRUZWxlbWV0cnlMZXZlbCIsImFwcGx5QXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseUF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbkZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlGb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseVNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlc0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlEaXNjb3ZlcnlVcmlEZWZhdWx0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJkaXNjb3ZlcnlVcmkiLCJjaGFubmVsVG9rZW4iLCJ1cmlWYWx1ZSIsImJhc2VVUklWYWx1ZSIsIm9uTG9hZCIsIl9pbml0aWFsaXplZCIsImFkZFdpbmRvd0V2ZW50TGlzdGVuZXIiLCJpbml0Iiwib3B0aW9uc1dpdGhPcHRpb25hbGdsb2JhbFNjb3BlIiwicGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiY29uc29sZUxvZ2dpbmdMZXZlbCIsImNvbnNvbGVBcHBlbmRlciIsImF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0iLCJhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSIsIndlYlBsYXllckxvYWRlciIsInNoYWthUGxheWVyTG9hZGVyIiwiaGxzSnNMb2FkZXIiLCJfdGhpcyRfYXBwbGljYXRpb25BY3QiLCJfU0RLIiwic2VnbWVudHMiLCJwcm90b2NvbCIsInVuc2hpZnQiLCJlbmRzV2l0aCIsImpvaW4iLCJCaXRyYXRlU3RhdGUiLCJCaXRyYXRlTW9kZSIsIkRpbWVuc2lvbiIsIkNoYW5uZWxTdGF0ZSIsIlZpZGVvVGVsZW1ldHJ5IiwiU2Vzc2lvblRlbGVtZXRyeSIsIlRva2VuQ29udGV4dCIsIkNoYW5uZWxDb250ZXh0IiwiRW5jb2RlZFN0cmVhbVNpbmsiLCJTdHJlYW1UcmFja1RyYW5zZm9ybSIsIlN0cmVhbVRyYW5zZm9ybUNvbnRleHQiLCJQZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJTdGF0ZUNvbnRleHQiLCJGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCIsIlN0cmVhbUZhY3RvcnkiLCJEaXNjb3ZlcnkiLCJkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24iLCJmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsInN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsIkNoYW5uZWwiLCJ2aWRlb0VsZW1lbnQiLCJjaGFubmVsQ29udGV4dE9wdGlvbnMiLCJ0YXJnZXRMYWciLCJvblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrIiwib25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2siLCJzdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9ucyIsImhhc0luc2VydGFibGVTdHJlYW1zIiwiaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zIiwidmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayIsImF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2siLCJlbmNvZGVkVmlkZW9TdHJlYW1TaW5rIiwiZW5jb2RlZEF1ZGlvU3RyZWFtU2luayIsIl90b2tlbkNvbnRleHQiLCJfY2hhbm5lbENvbnRleHQiLCJfcGVlckNvbm5lY3Rpb25Db250ZXh0IiwiX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQiLCJfc3RhdGVDb250ZXh0IiwiX2NoYW5uZWxTdGFydFRpbWUiLCJfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbiIsIl9yZWFkT25seVN0YXRlIiwic3RhdGUiLCJfcmVhZE9ubHlFeGlzdHMiLCJleGlzdHMiLCJfcmVhZE9ubHlBdXRvTXV0ZWQiLCJhdXRvTXV0ZWQiLCJfcmVhZE9ubHlBdXRvUGF1c2VkIiwiYXV0b1BhdXNlZCIsIl9yZWFkT25seVRva2VuRXhwaXJpbmciLCJ0b2tlbkV4cGlyaW5nIiwiX3JlYWRPbmx5QXV0aG9yaXplZCIsImF1dGhvcml6ZWQiLCJfcmVhZE9ubHlPbmxpbmUiLCJvbmxpbmUiLCJfcmVhZE9ubHlMb2FkaW5nIiwibG9hZGluZyIsIl9yZWFkT25seVBsYXlpbmciLCJwbGF5aW5nIiwiX3JlYWRPbmx5U3RhbmRieSIsInN0YW5kYnkiLCJfcmVhZE9ubHlTdG9wcGVkIiwic3RvcHBlZCIsIl9yZWFkT25seVRhcmdldExhZyIsIl9yZWFkT25seUxhZyIsImxhZyIsIl9yZWFkT25seUJpdHJhdGVMaW1pdCIsImJpdHJhdGVMaW1pdCIsIl9yZWFkT25seVJlc29sdXRpb24iLCJyZXNvbHV0aW9uIiwiX3JlYWRPbmx5RmFpbHVyZUNvdW50IiwiZmFpbHVyZUNvdW50IiwiX3JlYWRPbmx5RW5kUG9pbnQiLCJlbmRQb2ludCIsIl9yZWFkT25seVN0cmVhbSIsInN0cmVhbSIsIl9yZWFkT25seVJ0Y1N0YXRpc3RpY3MiLCJfcmVhZE9ubHlNZWRpYVN0cmVhbSIsIl9zZXNzaW9uVGVsZW1ldHJ5IiwiY2hhbm5lbERpc3Bvc2FibGVzIiwiX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlciIsImhhbmRsZVZpZGVvTWV0YURhdGFDaGFuZ2VkIiwiX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0IiwiY29uZmlndXJlRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsIl9yZWFkT25seUlzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkVuYWJsZWQiLCJpc0VuYWJsZWQiLCJfcmVhZE9ubHlEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsImRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwiX3JlYWRPbmx5UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwicmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwicmVuZGVyZXJEaXNwb3NhYmxlcyIsInZpZGVvVGVsZW1ldHJ5IiwiZGF0YXNldCIsInNldHVwTGlzdGVuZXJGb3JUaW1lVG9GaXJzdFRpbWUiLCJzZXR1cExpc3RlbmVyRm9yUmVidWZmZXJpbmciLCJTdG9wcGVkIiwicmVzdGFydEFmdGVyU3RvcCIsImNsZWFyRmFpbHVyZUNvdW50VGltZW91dCIsIlBsYXlpbmciLCJvblZpZGVvUmVzb2x1dGlvbkNoYW5nZXMiLCJlbGFwc2VkSW5NaWxsaXNlY29uZHMiLCJjaGFubmVsSW5pdGlhbGl6YXRpb24iLCJnZXRUaW1lIiwibGltaXRCaXRyYXRlIiwiS2VlcCIsIk5vcm1hbCIsImRlc3Ryb3lTdHJlYW1PblVubW91bnQiLCJyZW1vdmVXaW5kb3dFdmVudExpc3RlbmVyIiwic3RhcnQiLCJwYXVzZSIsInNyY09iamVjdCIsIkluaXRpYWxpemluZyIsIndpZHRoIiwidmlkZW9XaWR0aCIsImhlaWdodCIsInZpZGVvSGVpZ2h0IiwiZW1wdHkiLCJkaXNwb3NhYmxlcyIsInNldEJpdHJhdGVMaW1pdCIsImNsZWFyQml0cmF0ZUxpbWl0IiwiYml0cmF0ZUluQml0c1BlclNlY29uZCIsIlJlc2V0IiwidXBkYXRlVGFyZ2V0TGFnIiwiX3N0b3AiLCJpc1N0YXJ0aW5nIiwicHJvY2Vzc1N0b3AiLCJzdG9wIiwiY2xlYW5VcFJlc291cmNlcyIsIl9yZXN1bWUiLCJwbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudCIsInJlc3VtZSIsIm11dGUiLCJtdXRlZCIsInVubXV0ZSIsIl9kaXNwb3NlIiwiaXNEaXNwb3NlZCIsImdldFVyaSIsIl9zdGFydCIsInByb2Nlc3NTdGFydCIsIl9wcm9jZXNzU3RhcnQiLCJfY2FsbGVlNSIsIl90aGlzNSIsImxpc3Rlbk9uU3RyZWFtU2V0dXAiLCJfU3RyZWFtVHJhY2tUcmFuc2Zvcm0iLCJ2YWxpZCIsInZhbGlkYXRpb25SZXN1bHQiLCJfU3RyZWFtVHJhY2tUcmFuc2Zvcm0yIiwiX3ZhbGlkIiwiX3ZhbGlkYXRpb25SZXN1bHQiLCJfRW5jb2RlZFN0cmVhbVNpbmskdmEiLCJfdmFsaWQyIiwiX3ZhbGlkYXRpb25SZXN1bHQyIiwiX0VuY29kZWRTdHJlYW1TaW5rJHZhMiIsIl92YWxpZDMiLCJfdmFsaWRhdGlvblJlc3VsdDMiLCJoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjayIsImhhc0VuY29kZWRTdHJlYW1TaW5rIiwiaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrIiwic3RyZWFtUGxheWVyIiwiX2NvbnRleHQ1IiwiU3RhcnRpbmciLCJVbmF1dGhvcml6ZWQiLCJ2YWxpZGF0ZU1lZGlhU3RyZWFtVHJhY2tUcmFuc2Zvcm0iLCJDb25maWd1cmF0aW9uRXJyb3IiLCJ2YWxpZGF0ZUVuY29kZWRTdHJlYW1TaW5rIiwiaXNJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCIsIlVuc3VwcG9ydGVkRmVhdHVyZSIsIlJlY292ZXJpbmciLCJjbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCIsImhhbmRsZVN0cmVhbUZhaWx1cmUiLCJDbGllbnRTdGFydEVycm9yIiwiZmluYWxseSIsImF1dG9tYXRpY1JldHJ5T25GYWlsdXJlIiwidGltZW91dElkIiwiZ2V0UmV0cnlJbnRlcnZhbCIsIl9yZXN0YXJ0QWZ0ZXJTdG9wIiwiX2NhbGxlZTYiLCJfY29udGV4dDYiLCJfcGxheSIsIl9jYWxsZWU3IiwiX2NvbnRleHQ3IiwicGxheSIsIlN0YW5kQnkiLCJPZmZsaW5lIiwiR2VvUmVzdHJpY3RlZCIsIkdlb0Jsb2NrZWQiLCJQYXVzZWQiLCJSZWNvbm5lY3RpbmciLCJUcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3IiLCJDb25uZWN0aW9uRXJyb3IiLCJfaGFuZGxlU3RyZWFtRmFpbHVyZSIsIl9jYWxsZWU4IiwiX2NvbnRleHQ4IiwiX3RoaXM2IiwiZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCIsInNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyIsImRlc3Ryb3lTdHJlYW0iLCJwZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwiX3RoaXM3IiwiZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNhcGFiaWxpdHkiLCJjYXBhYmlsaXR5Iiwic2hvdWxkRXh0cmFjdFRpbWVjb2RlIiwic2hvdWxkRXh0cmFjdFRpbWVzdGFtcHMiLCJpc0NoYW5uZWxGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3VwcG9ydGVkIiwib3B0aW9uIiwidHJpbSIsIl9wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudCIsIl9jYWxsZWU5IiwiX3RoaXM4IiwicGxheVByb21pc2UiLCJfY29udGV4dDkiLCJoYXNBdWRpb1RyYWNrIiwiZmlsdGVyIiwiYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmVPZmYiLCJDaGFubmVscyIsImNyZWF0ZUNoYW5uZWwiLCJpbml0aWFsaXplZCIsImNoYW5uZWxPcHRpb25zIiwib3B0aW9uc1dpdGhSZWFsVGltZVN1YnNjcmliZUNhbGxiYWNrcyIsImRlZmF1bHRUYXJnZXRMYWciLCJfb3B0aW9ucyR0YXJnZXRMYWciLCJfb3B0aW9ucyRvblJlYWxUaW1lU3UiLCJfb3B0aW9ucyRvblJlYWxUaW1lU3UyIiwicnRjQXVkaW9TdGF0aXN0aWMiLCJydGNWaWRlb1N0YXRpc3RpYyIsImFwcGx5U3RhdHVzIiwiYXBwbHlTZXNzaW9uQW5kU3RyZWFtUHJvcGVydGllc1RvVmlkZW9FbGVtZW50IiwibWFwU3Vic2NyaWJlU3RhdHVzVG9DaGFubmVsU3RhdHVzIiwibWFwU3Vic2NyaWJlU3RhdHVzVG9FeGlzdHMiLCJhdWRpb1RyYWNrIiwibWVkaWFTdHJlYW1UcmFjayIsInJlY2VpdmVyIiwibWlkIiwidHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIiLCJ0cmFuc2Zvcm1NZXNzYWdlUm91dGVyIiwidHJhbnNmb3JtRnVuY3Rpb25OYW1lcyIsInZpZGVvVHJhY2siLCJBdWRpb0NvZGVjIiwiQXVkaW9Db2RlY01hcHBpbmciLCJjb252ZXJ0QXVkaW9Db2RlY1RvQXVkaW9Db2RlY1R5cGUiLCJPUFVTIiwiQUFDIiwiY29udmVydEF1ZGlvQ29kZWNUeXBlVG9BdWRpb0NvZGVjIiwiYXVkaW9Db2RlY1R5cGUiLCJhdWRpb0NvZGVjU3RyaW5nIiwidG9VcHBlckNhc2UiLCJWaWRlb0NvZGVjIiwiVmlkZW9Db2RlY01hcHBpbmciLCJjb252ZXJ0VmlkZW9Db2RlY1RvVmlkZW9Db2RlY1R5cGUiLCJIMjY0IiwiVlA4IiwiVlA5IiwiY29udmVydFZpZGVvQ29kZWNUeXBlVG9WaWRlb0NvZGVjIiwidmlkZW9Db2RlY1R5cGUiLCJ2aWRlb0NvZGVjU3RyaW5nIiwiVWludDhBcnJheSIsImRlZmF1bHREaXNjb3ZlcnlVcmkiLCJCaXRyYXRlTW9kZU1hcHBpbmciLCJjb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZSIsImJpdHJhdGVNb2RlIiwiRm9yY2UiLCJCaXRyYXRlU3RhdGVNYXBwaW5nIiwiY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZSIsImJpdHJhdGVTdGF0ZSIsIkRpc2NvdmVyeVNlcnZpY2UiLCJkaXNjb3ZlcnlDYWNoZUludGVydmFsIiwiX3ByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5IiwicmVzb2x2ZUVuZFBvaW50UHJvbWlzZSIsImRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmciLCJwcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSIsIl9kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nIiwiZGlzY292ZXJ5U2VydmljZSIsImNhY2hlZFZhbHVlIiwiX2NhY2hlIiwiZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQiLCJFbmRQb2ludCIsImRlZmF1bHRUaW1lb3V0IiwiX3VyaSIsIl9kaXNjb3Zlck5lYXJieUVuZFBvaW50cyIsInRpbWVvdXQiLCJhc1N0cmluZyIsImVuZFBvaW50cyIsIm9rIiwidGV4dCIsImRpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzIiwiX2Rpc2NvdmVyQ2xvc2VzdEVuZFBvaW50IiwiZmFpbGVkUmVxdWVzdHMiLCJwcm9wYWdhdGVGYWlsdXJlSWZBbGxSZXF1ZXN0c0ZhaWxlZCIsIl9hcmdzMiIsImJ1aWxkRGlzY292ZXJ5VXJsIiwicGluZyIsInRpbWUiLCJfZGlzY292ZXJ5VXJpIiwiZGlzY292ZXJ5UGFyYW1ldGVycyIsInNlYXJjaFBhcmFtcyIsImFwaVZlcnNpb24iLCJfdGltZW91dCIsIl9yb3VuZFRyaXBUaW1lIiwiX3BpbmciLCJmaW5pc2hlZCIsImJ1aWxkUGluZ1VybCIsIl9zdWJzY3JpYmUiLCJsb2NhbFNlc3Npb25EZXNjcmlwdGlvbiIsIl9vcHRpb25zJG9uU3Vic2NyaWJlUiIsIl9vcHRpb25zJG9uU3Vic2NyaWJlUjMiLCJjbGllbnRWZXJzaW9uIiwicmVxdWVzdEJvZHkiLCJodHRwUmVzcG9uc2UiLCJfb3B0aW9ucyRvblN1YnNjcmliZVIyIiwiX3Jlc3BvbnNlIiwic3Vic2NyaWJlUmVzcG9uc2UiLCJidWlsZFVybCIsImJlYXJlclRva2VuIiwiaHR0cFJvdW5kVHJpcFRpbWUiLCJzZXNzaW9uRGVzY3JpcHRpb24iLCJjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvbiIsImNyZWF0ZU9mZmVyRGVzY3JpcHRpb24iLCJvblN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayIsIm1hcEh0dHBTdGF0dXNUb1N1YnNjcmliZVN0YXR1cyIsIm9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb1N1YnNjcmliZVJlc3BvbnNlIiwiX3B1Ymxpc2giLCJib2R5V2l0aE9mZmVyIiwiYm9keVdpdGhvdXRPZmZlciIsIm1hcEh0dHBTdGF0dXNUb1B1Ymxpc2hTdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9QdWJsaXNoUmVzcG9uc2UiLCJwdWJsaXNoIiwiX3g1IiwiX3g2IiwiX3g3Iiwic2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSIsInNoYXJlZFNlY3JldCIsIm1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSIsIl94OCIsIl94OSIsIl9saW1pdEJpdHJhdGUiLCJtYXBIdHRwU3RhdHVzVG9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyIsIl94MCIsIl94MSIsIl94MTAiLCJfeDExIiwiX3gxMiIsIl9hZGRJY2VDYW5kaWRhdGVzIiwiY2FuZGlkYXRlcyIsImRpc2NvdmVyeUNvbXBsZXRlZCIsImFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSIsIl9hcmdzNiIsIm1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UiLCJhZGRJY2VDYW5kaWRhdGVzIiwiX3gxMyIsIl94MTQiLCJfeDE1IiwiX2Rlc3Ryb3lTdHJlYW0iLCJkZXN0cm95U3RyZWFtUmVzcG9uc2UiLCJtYXBIdHRwU3RhdHVzVG9TZXREZXN0cm95U3RyZWFtU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbVJlc3BvbnNlIiwiX3gxNiIsIl94MTciLCJfZGVzdHJveVN0cmVhbU9uVW5tb3VudCIsInNlbmRCZWFjb24iLCJfeDE4IiwiX3gxOSIsInBhdGgiLCJwYXRoQXNBcnJheSIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9TdWJzY3JpYmVSZXNwb25zZSIsInJ0Y0NvbmZpZ3VyYXRpb24iLCJjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlIiwiY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlIiwib3RoZXJQcm9wZXJ0aWVzIiwianNvbiIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIl9vYmplY3RTcHJlYWQiLCJjb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24iLCJfeDIwIiwiX3gyMSIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9QdWJsaXNoUmVzcG9uc2UiLCJfY2FsbGVlMCIsInB1Ymxpc2hSZXNwb25zZSIsIl9jb250ZXh0MCIsIl94MjIiLCJfeDIzIiwiYnVuZGxlUG9saWN5IiwiaWNlQ2FuZGlkYXRlUG9vbFNpemUiLCJpY2VUcmFuc3BvcnRQb2xpY3kiLCJydGNwTXV4UG9saWN5IiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UiLCJfY2FsbGVlMSIsIl9jb250ZXh0MSIsIl94MjQiLCJfY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlIiwiX2NhbGxlZTEwIiwiX2NvbnRleHQxMCIsIl94MjUiLCJfY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbVJlc3BvbnNlIiwiX2NhbGxlZTExIiwiX2NvbnRleHQxMSIsIl94MjYiLCJUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUiLCJGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlciIsImNvbnRleHQiLCJNYXAiLCJjYW5Qcm9jZXNzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsInNldHVwVmlkZW9FbGVtZW50SGFuZGxpbmciLCJyZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0Iiwic2V0dXBGcmFtZVRpbWluZ0luZm9ybWF0aW9uVHJhbnNmb3JtIiwidHJhY2tJZCIsImRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCIsImlzRW5hYmxlZFN1YmplY3QiLCJyZWdpc3RlclJvdXRlIiwiRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsImhhbmRsZUZyYW1lVGltaW5nTWVzc2FnZSIsIl90cmFuc2Zvcm1OYW1lIiwiX09iamVjdCRlbnRyaWVzIiwiZW50cmllcyIsIl9PYmplY3QkZW50cmllcyRfaSIsIl9zbGljZWRUb0FycmF5IiwicnRwVGltZXN0YW1wIiwibWV0YWRhdGEiLCJydHBUaW1lc3RhbXBOdW1iZXIiLCJfZGVjb2RlZEZyYW1lVGltaW5nSW4iLCJfZGVjb2RlZEZyYW1lVGltaW5nSW4yIiwiZnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsInRpbWVjb2RlIiwicmVjZWl2ZVRpbWVzdGFtcCIsInNvdXJjZVRpbWVzdGFtcCIsImluZ2VzdFRpbWVzdGFtcCIsImVuY29kZVRpbWVzdGFtcCIsInRyYW5zY29kZVRpbWVzdGFtcCIsInBsYXliYWNrU3RhdGUiLCJfY3VycmVudFBsYXliYWNrU3RhdGUiLCJfZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25CeVJ0cFRpbWVzdGFtcCIsInZpZGVvRWxlbWVudFN1YmplY3QiLCJjbGVhciIsIl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcyIsInNldHVwVmlkZW9FdmVudExpc3RlbmVycyIsImhhbmRsZVZpZGVvRnJhbWVDYWxsYmFjayIsIl9hcm1WaWRlb0ZyYW1lQ2FsbGJhY2siLCJ0aW1lc3RhbXBzVG9EZWxldGUiLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwicyIsIl9zdGVwJHZhbHVlIiwiZnJhbWVUaW1pbmciLCJyZW5kZXJUaW1lc3RhbXAiLCJwZXJmb3JtYW5jZSIsInRpbWVPcmlnaW4iLCJlcnIiLCJfaTIiLCJfdGltZXN0YW1wc1RvRGVsZXRlIiwiZGVsZXRlIiwib25QbGF5aW5nIiwib25QYXVzZSIsIm9uU3RhbGxlZCIsIm9uV2FpdGluZyIsIm9uRW5kZWQiLCJvbkVycm9yIiwiX2FybWVkVmlkZW9GcmFtZUNhbGxiYWNrSWQiLCJjYW5jZWxWaWRlb0ZyYW1lQ2FsbGJhY2siLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiSW5zZXJ0YWJsZVN0cmVhbXMiLCJFbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyIiwiaWNlQ2FuZGlkYXRlQWNjdW11bGF0aW9uSW50ZXJ2YWwiLCJkZWZhdWx0U3RyZWFtU2V0dXBUaW1lb3V0IiwiUmVhbFRpbWVTdHJlYW0iLCJjaGFubmVsQ29udGV4dCIsInBlZXJDb25uZWN0aW9uQ29udGV4dCIsInN0cmVhbVRyYW5zZm9ybUNvbnRleHQiLCJmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCIsInJlcXVpcmVzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zIiwiX3JlZjMiLCJfcmVmMyQiLCJzdWJzY3JpYmVPcHRpb25zIiwiY2xpZW50T2ZmZXJEaXNhYmxlZCIsInN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiIsInN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbiIsImFwcGx5UnRjQ29uZmlndXJhdGlvbiIsInN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0IiwiY2FuY2VsRGlzY292ZXJ5IiwiY2FuZGlkYXRlIiwiX3RoaXMkX2NoYW5uZWxDb250ZXh0IiwiX3JlZjQiLCJyZXRyeUNhbGxiYWNrIiwibmF2aWdhdG9ySXNPbkxpbmUiLCJyZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsIm1lZGlhU3RyZWFtUHJvbWlzZSIsIm9uVHJhY2tEaXNhYmxlZCIsInN0cmVhbXMiLCJ0cmFja0xpc3RlbmVyIiwiYW5zd2VyIiwiX3JlZjUiLCJtYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvQ2hhbm5lbFN0YXR1cyIsIl9wZWVyQ29ubmVjdGlvbiRjdXJyZSIsIl90aGlzJF9jaGFubmVsQ29udGV4dDIiLCJfcGVlckNvbm5lY3Rpb24kZ2V0VHIiLCJfcGVlckNvbm5lY3Rpb24kZ2V0VHIyIiwicGFyc2VkUmVtb3RlRGVzY3JpcHRpb24iLCJyZWNlaXZlcnMiLCJnZXRWaWRlb1RyYWNrcyIsInZpZGVvVHJhY2tSZWNlaXZlciIsInN1cHBvcnRzR2V0VHJhbnNjZWl2ZXJzIiwidHJhbnNjZWl2ZXIiLCJnZXRBdWRpb1RyYWNrcyIsImF1ZGlvVHJhY2tSZWNlaXZlciIsImNyZWF0ZUVuY29kZWRTdHJlYW1QaXBlbGluZSIsInJlcXVpcmVzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsImZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dCIsInJlcXVpcmVzRW5jb2RlZE1lZGlhVHJhbnNmb3JtIiwiZW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQiLCJjb25maWd1cmVFbmNvZGVkU3RyZWFtUGlwZWxpbmUiLCJfSW5zZXJ0YWJsZVN0cmVhbXMkY28iLCJjb25maWd1cmVJbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtYXRpb24iLCJ0cmFuc2Zvcm1lZFN0cmVhbSIsInJ0Y0Nvbm5lY3Rpb25Nb25pdG9yIiwicnRjQ29ubmVjdGlvbk1vbml0b3JTdGF0aXN0aWNTdWJzY3JpcHRpb24iLCJydGNTdGF0aXN0aWMiLCJzdGF0aXN0aWNzIiwiYXVkaW9UcmFja0ZhaWxlZCIsInZpZGVvVHJhY2tGYWlsZWQiLCJfYXBwbHlSdGNDb25maWd1cmF0aW9uIiwib3B0aW9uYWxQZWVyQ29ubmVjdGlvbiIsIm5ld1J0Y0NvbmZpZ3VyYXRpb24iLCJtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwiYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwiX3BlZXJDb25uZWN0aW9uJGN1cnJlMiIsImlzQ2xpZW50T2ZmZXJGbG93IiwiaWNlUmVzdGFydCIsIm9mZmVyIiwiUmVhbFRpbWVTdHJlYW1GYWN0b3J5IiwidG9rZW5DYXBhYmlsaXRpZXMiLCJTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIiwiU2tpcEZyYW1lIiwiRW5jb2RlZFZpZGVvQ2h1bmsiLCJjaHVuayIsImVuY29kZWRWaWRlb1N0cmVhbUNhbGxiYWNrIiwiRW5jb2RlZEF1ZGlvQ2h1bmsiLCJlbmNvZGVkQXVkaW9TdHJlYW1DYWxsYmFjayIsIl9lbmNvZGVkQXVkaW9TdHJlYW1DYWxsYmFjayIsImdldEludmFsaWRTdXJyb2dhdGVBdWRpb0RhdGEiLCJnZXRTdXJyb2dhdGVBdWRpb1NpbGVudFBlckNvZGVjIiwiX2VuY29kZWRWaWRlb1N0cmVhbUNhbGxiYWNrIiwic3Vycm9nYXRlIiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvSUZyYW1lIiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lIiwiZ2V0U3Vycm9nYXRlVmlkZW9JRnJhbWVQZXJDb2RlYyIsImdldFN1cnJvZ2F0ZVZpZGVvUEZyYW1lUGVyQ29kZWMiLCJtb2RlIiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX24iLCJGIiwibmV4dCIsIl9hcnJheUxpa2VUb0FycmF5IiwiZnJvbSIsIlRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyIiwiVHJhbnNmb3JtTWVzc2FnZVR5cGUiLCJUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIiwiY3JlYXRlVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJGb3JUcmFjayIsIndvcmtlciIsInRlcm1pbmF0ZSIsInZpZGVvVHJhY2tNZWRpYVN0cmVhbVRyYWNrIiwiYXVkaW9UcmFja01lZGlhU3RyZWFtVHJhY2siLCJfY29uZmlndXJlRW5jb2RlZFN0cmVhbVBpcGVsaW5lIiwiYWRkVHJhY2tUcmFuc2Zvcm1zIiwiY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtIiwiY29uZmlndXJlRW5jb2RlZFN0cmVhbXMiLCJ0cmFuc2Zvcm1GdW5jdGlvbk5hbWUiLCJwb3N0TWVzc2FnZSIsIkFkZFRyYW5zZm9ybSIsImNvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybUZvclRyYWNrIiwidHJhY2tSZWNlaXZlciIsInRyYWNrTWVkaWFTdHJlYW1UcmFjayIsInRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIiLCJ0cmFuc2Zvcm0iLCJQaXBlbGluZUNvbmZpZ3VyZWQiLCJvbmNlIiwiY29uZmlndXJlRW5jb2RlZFN0cmVhbXNGb3JUcmFjayIsImFjdGlvbnMiLCJlbmNvZGVkUmVjZWl2ZXJTdHJlYW1zIiwiQ29uZmlndXJlUGlwZWxpbmUiLCJzb3VyY2UiLCJyZWFkYWJsZSIsInNpbmsiLCJ0cmFuc2ZlciIsImluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayIsImNvbnRyb2xsZXIiLCJ0cmFuc2Zvcm1lciIsIlRyYW5zZm9ybVN0cmVhbSIsInByb2Nlc3NvciIsImdlbmVyYXRvciIsInBpcGVUaHJvdWdoIiwicGlwZVRvIiwicmVtb3ZlVHJhY2siLCJhdWRpb1B1bXBlciIsIkF1ZGlvIiwiYXBwZW5kQ2hpbGQiLCJyZW1vdmVDaGlsZCIsImFubmV4QkZvdXJCeXRlU3RhcnRDb2RlIiwic3Vycm9nYXRlSDI2NDI4eDE2SUZyYW1lIiwic3Vycm9nYXRlSDI2NDI4eDE2UEZyYW1lIiwiX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYyIsImJ1ZmZlciIsIl9zaW5nbGVaZXJvQnl0ZSIsIl9pc1NhZmFyaSIsIl9zdXJyb2dhdGUyOHgxNkgyNjRJRnJhbWUiLCJfZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjIiwiX2lzQW5kcm9pZENocm9tZSIsIl9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyIiwiX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXJSZXNldCIsIl9zdXJyb2dhdGUyOHgxNkgyNjRQRnJhbWUiLCJfZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjIiwiX1N1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIiLCJpc0FuZHJvaWQiLCJUcmFuc2Zvcm1QaXBlbGluZU1lc3NhZ2VSb3V0ZXIiLCJtZXNzYWdlVHlwZSIsInJvdXRlTWVzc2FnZSIsIl9tZXNzYWdlUm91dGVzIiwicm91dGVNZXNzYWdlRGF0YSIsIkNodW5rIiwiTWV0YWRhdGEiLCJfX0JVSUxEX1ZFUlNJT05fXyIsIl9kZWZhdWx0VmVyc2lvbiIsIlRlbGVtZXRyeVNlcnZpY2UiLCJfdGVsZW1ldHJ5U2VydmljZSIsInZhbHVlT2YiLCJsb2dSZWNvcmQiLCJfbG9ncyIsInNlbmRMb2dzSWZBYmxlIiwibG9nTWVzc2FnZXMiLCJfc2VuZExvZ3NJZkFibGUiLCJudW1iZXJPZkxvZ3NUb1NlbmQiLCJzaXplT2ZMb2dzVG9TZW5kIiwiZ2V0SXRlbVNpemUiLCJnZXRMb2dTaXplIiwic3VtIiwiZHVyYXRpb24iLCJfZHVyYXRpb24iLCJpc05lZ2F0aXZlIiwiYWJzIiwib2Zmc2V0IiwibWlsbGlzZWNvbmRzIiwic2Vjb25kcyIsIm1pbnV0ZXMiLCJob3VycyIsInBhcnRzIiwiU3RyaW5nIiwicGFkU3RhcnQiLCJ0YXJnZXRMZW5ndGgiLCJwYWRTdHJpbmciLCJyZXBlYXQiLCJkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImRlZmF1bHRNaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiZGVmYXVsdE1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJiYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwibWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIm1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJiYWNrb2ZmSW50ZXJ2YWxJblNlY29uZHMiLCJyYW5kb21pemF0aW9uIiwiZXhwb25lbnRpYWxCYWNrb2ZmIiwiZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb24iLCJleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbkluTWlsbGlzZWNvbmQiLCJtYXgiLCJtaW4iLCJvdGhlciIsImFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIiwiX25ldHdvcmtNb25pdG9yIiwiaXNGb3JlZ3JvdW5kIiwicmVjb3JkRm9yZWdyb3VuZENoYW5nZSIsInJlY29yZE5ldHdvcmtSVFRVcGRhdGUiLCJyZWNvcmROZXR3b3JrVHlwZUNoYW5nZVVwZGF0ZSIsImRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwicmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlIiwidGltZVNpbmNlTGFzdENoYW5nZSIsIm5ld1JUVCIsIm9sZFJ0dCIsIl9sYXN0TmV0d29ya1N0YXRpc3RpY3MiLCJuZXdOZXR3b3JrVHlwZSIsIm9sZE5ldHdvcmtUeXBlIiwibmV3Q2FwYWNpdHkiLCJvbGRDYXBhY2l0eSIsImZsb2F0Iiwibm9vcCIsImNoYW5uZWxTdGFydFRpbWUiLCJfc3RyZWFtSWQiLCJfc3RhcnRSZWNvcmRpbmdGaXJzdEZyYW1lIiwiX2xpc3RlblRvRmlyc3RUaW1lIiwiY2FsbFRpbWVUb0ZpcnN0RnJhbWUiLCJfY2xlYXJUaW1lVG9GaXJzdEZyYW1lTGlzdGVuZXIiLCJfbGlzdGVuRm9yU3RhbGwiLCJvblN0YWxsIiwiX2xpc3RlbkZvckNvbnRpbnVhdGlvbiIsImV2ZW50Iiwib25Db250aW51YXRpb24iLCJfY2xlYXJSZWJ1ZmZlcmluZ0xpc3RlbmVyIiwicHVzaFRpbWVUb0ZpcnN0RnJhbWUiLCJwdXNoQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSIsIl90aW1lVG9GaXJzdEZyYW1lIiwiZHVyYXRpb25TaW5jZVBhZ2VMb2FkIiwiX2NoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUiLCJfdmlkZW9TdGFsbGVkIiwiYnVmZmVyZWQiLCJidWZmZXJMZW5ndGgiLCJoYXNOb3RQcm9ncmVzc2VkU2luY2VMYXN0UHJvZ3Jlc3NFdmVudCIsImVuZCIsIl9sYXN0UHJvZ3Jlc3MiLCJ0aW1lU2luY2VTdG9wIiwibmV3UmVzb2x1dGlvbiIsIl92aWRlb1Jlc29sdXRpb24iXSwic291cmNlUm9vdCI6IiJ9
|
|
11417
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQztFQUFFO0VBQ3hMbFcsR0FBRyxFQUFFLElBQUlLLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0VBQ3pTSixHQUFHLEVBQUUsSUFBSUksVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFB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QzF2QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUUsR0FBRyxHQUFBc04sOElBQUEsQ0FDekVpNEIsb0dBQXVCLElBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFBajRCLDhJQUFBLENBQUssSUFBSW9pQixVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMxdkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxF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QUNBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTs7Ozs7V0N0QkE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLGlDQUFpQyxXQUFXO1dBQzVDO1dBQ0EsRTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHlDQUF5Qyx3Q0FBd0M7V0FDakY7V0FDQTtXQUNBLEU7Ozs7O1dDUEEsd0Y7Ozs7O1dDQUE7V0FDQTtXQUNBO1dBQ0EsdURBQXVELGlCQUFpQjtXQUN4RTtXQUNBLGdEQUFnRCxhQUFhO1dBQzdELEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTkE7QUFDQTtBQUNBOztBQUV5QjtBQUNTO0FBQ1E7QUFLNUI7QUFHZCwrREFBZTtFQUNicjJDLEdBQUcsRUFBSEEsNENBQUc7RUFDSCsyQixRQUFRLEVBQVJBLGlEQUFRO0VBQ1JqTixZQUFZLEVBQVpBLHFEQUFZQTtBQUNkLENBQUMsRSIsInNvdXJjZXMiOlsid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0Jyb3dzZXJEZXRlY3Rvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL1BsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vTmV0d29ya01vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZWRnZUF1dGgvRWRnZVRva2VuLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvUGFyYW1ldGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvRGlzcG9zYWJsZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9EaXNwb3NhYmxlTGlzdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9OdW1iZXJzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL1N0cmluZ3MudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9BcHBlbmRlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Db25zb2xlQXBwZW5kZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlckZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2luZ1RocmVzaG9sZC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NGYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcHJvbWlzZS9Qcm9taXNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9wcm9taXNlL1Byb21pc2VIYW5kbGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9SdGNDb25uZWN0aW9uTW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1NkcFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J4L1JlYWRPbmx5U3ViamVjdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcngvU3ViamVjdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL0Vudmlyb25tZW50LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvU0RLLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvVGVsZW1ldHJ5VXJsLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY2hhbm5lbHMvQ2hhbm5lbC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL0NoYW5uZWxTdGF0ZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL0NoYW5uZWxzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9DaGFubmVsQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvU3RhdGVDb250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9Ub2tlbkNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL0F1ZGlvQ29kZWMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL0F1ZGlvQ29kZWNNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvaDI2NC9uYWxVbml0L0FubmV4QkZvdXJCeXRlU3RhcnRDb2RlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVmYXVsdHMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvQml0cmF0ZU1vZGVNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0JpdHJhdGVTdGF0ZU1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRGlzY292ZXJ5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeVNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0VuZFBvaW50LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZnJhbWVUaW1pbmcvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9zdHJlYW1pbmcvUmVhbFRpbWVTdHJlYW0udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9zdHJlYW1pbmcvUmVhbFRpbWVTdHJlYW1GYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vSW5zZXJ0YWJsZVN0cmVhbXMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL1N1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9zdXJyb2dhdGVGcmFtZXMvaDI2NC9zdXJyb2dhdGUyOHgxNklGcmFtZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3N1cnJvZ2F0ZUZyYW1lcy9oMjY0L3N1cnJvZ2F0ZTI4eDE2UEZyYW1lLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL01lc3NhZ2VSb3V0ZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdmVyc2lvbi9WZXJzaW9uTWFuYWdlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeUFwZW5kZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlDb25maWd1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5U2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGltZS9EdXJhdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGltZS9FeHBvbmVudGlhbEJhY2tvZmYudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3ZpZGVvL0RpbWVuc2lvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdmlkZW8vU2Vzc2lvblRlbGVtZXRyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdmlkZW8vVmlkZW9UZWxlbWV0cnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmUud29ya2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy93b3JrZXItbG9hZGVyL2Rpc3QvcnVudGltZS9pbmxpbmUuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXJyYXlMaWtlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheVdpdGhIb2xlcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheVdpdGhvdXRIb2xlcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0cy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXRlcmFibGVUb0FycmF5TGltaXQuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvbm9uSXRlcmFibGVSZXN0LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL25vbkl0ZXJhYmxlU3ByZWFkLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJpbWl0aXZlLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJvcGVydHlLZXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcInBoZW5peFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJwaGVuaXhcIl0gPSBmYWN0b3J5KCk7XG59KShzZWxmLCAoKSA9PiB7XG5yZXR1cm4gIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5cbmNvbnN0IHZpc2liaWxpdHlDaGFuZ2VFdmVudCA9ICd2aXNpYmlsaXR5Y2hhbmdlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlJc0ZvcmVncm91bmQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNGb3JlZ3JvdW5kOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF90aW1lT2ZMYXN0VGFiRm9jdXNDaGFuZ2U6IG51bWJlciA9IERhdGUubm93KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5faXNGb3JlZ3JvdW5kID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgdGhpcy5fcmVhZE9ubHlJc0ZvcmVncm91bmQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0KHRoaXMuX2lzRm9yZWdyb3VuZCk7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gIH1cblxuICBnZXQgaXNGb3JlZ3JvdW5kKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5SXNGb3JlZ3JvdW5kO1xuICB9XG5cbiAgcHVibGljIGdldFRpbWVTaW5jZUxhc3RDaGFuZ2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gRGF0ZS5ub3coKSAtIHRoaXMuX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlID0gKCkgPT4gdGhpcy5faXNGb3JlZ3JvdW5kLnZhbHVlID0gIUdsb2JhbFNjb3BlLnZhbHVlLmRvY3VtZW50SXNIaWRkZW47XG4gICAgY29uc3QgdXNlRXZlbnRDYXB0dXJlUGhhc2UgPSBmYWxzZTtcblxuICAgIEdsb2JhbFNjb3BlLnZhbHVlLmFkZERvY3VtZW50RXZlbnRMaXN0ZW5lcih2aXNpYmlsaXR5Q2hhbmdlRXZlbnQsIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UsIHVzZUV2ZW50Q2FwdHVyZVBoYXNlKTtcblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5yZW1vdmVEb2N1bWVudEV2ZW50TGlzdGVuZXIodmlzaWJpbGl0eUNoYW5nZUV2ZW50LCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlLCB1c2VFdmVudENhcHR1cmVQaGFzZSkpKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCcm93c2VyRGV0ZWN0b3Ige1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXggPSAvKE1TSUV8KD8hR2Vja28uKylGaXJlZm94fCg/IUFwcGxlV2ViS2l0LitDaHJvbWUuKylTYWZhcml8KD8hQXBwbGVXZWJLaXQuKylDaHJvbWV8QXBwbGVXZWJLaXQoPyEuK0Nocm9tZXwuK1NhZmFyaSl8R2Vja28oPyEuK0ZpcmVmb3gpKSg/OiB8XFwvKShbXFxkLmFwcmVdKykvZztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbiA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbigpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWUgPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZSgpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck1ham9yVmVyc2lvbiA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJNYWpvclZlcnNpb24oKTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNNb2JpbGUgPSAoL0FuZHJvaWR8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fE9wZXJhIE1pbmkvaSkudGVzdChuYXZpZ2F0b3I/LnVzZXJBZ2VudCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0FuZHJvaWQgPSAoL0FuZHJvaWQvaSkudGVzdChuYXZpZ2F0b3I/LnVzZXJBZ2VudCk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNjkgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzY5LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzAuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcxID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83MS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzIgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcyLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzQuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc1ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83NS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzYgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc2LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NyA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzcuJyk7XG5cbiAgc3RhdGljIGdldCBicm93c2VyTmFtZUFuZFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb3dzZXJOYW1lO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyTWFqb3JWZXJzaW9uKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb3dzZXJNYWpvclZlcnNpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQW5kcm9pZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0FuZHJvaWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNjkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU2OTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcwO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcxKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzE7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc0O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc1KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzYoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc3O1xuICB9XG5cbiAgc3RhdGljIGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzTW9iaWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hdmlnYXRvciB8fCAhbmF2aWdhdG9yLnVzZXJBZ2VudCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJOYW1lQW5kVmVyc2lvbiA9IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCk7XG5cbiAgICBpZiAoYnJvd3Nlck5hbWVBbmRWZXJzaW9uICYmIGJyb3dzZXJOYW1lQW5kVmVyc2lvblswXSkge1xuICAgICAgcmV0dXJuIGJyb3dzZXJOYW1lQW5kVmVyc2lvblswXTtcbiAgICB9XG5cbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWUoKTogc3RyaW5nIHtcbiAgICBpZiAoIUJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3Nlck5hbWVMaXN0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uc3BsaXQoJy8nKTtcblxuICAgIGlmICghYnJvd3Nlck5hbWVMaXN0IHx8ICFicm93c2VyTmFtZUxpc3RbMF0pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gYnJvd3Nlck5hbWVMaXN0WzBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uKCk6IG51bWJlciB7XG4gICAgaWYgKCFCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3NlclZlcnNpb25MaXN0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uc3BsaXQoJy8nKTtcblxuICAgIGlmICghYnJvd3NlclZlcnNpb25MaXN0IHx8ICFicm93c2VyVmVyc2lvbkxpc3RbMV0pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bGxWZXJzaW9uID0gYnJvd3NlclZlcnNpb25MaXN0WzFdO1xuXG4gICAgaWYgKCFmdWxsVmVyc2lvbikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIE51bWJlcihmdWxsVmVyc2lvbi5zcGxpdCgnLicpWzBdKSB8fCAwO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSgpOiBzdHJpbmcge1xuICAgIGlmICghbmF2aWdhdG9yIHx8ICFuYXZpZ2F0b3IudXNlckFnZW50KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgICBjb25zdCBtc2llID0gdXNlckFnZW50LmluZGV4T2YoJ01TSUUgJyk7XG5cbiAgICBpZiAobXNpZSA+IDApIHtcbiAgICAgIC8vIElFIDEwIG9yIG9sZGVyID0+IHJldHVybiB2ZXJzaW9uIG51bWJlclxuICAgICAgcmV0dXJuIGBJRS8ke3BhcnNlSW50KHVzZXJBZ2VudC5zdWJzdHJpbmcobXNpZSArIDUsIHVzZXJBZ2VudC5pbmRleE9mKCcuJywgbXNpZSkpLCAxMCl9YDtcbiAgICB9XG5cbiAgICBjb25zdCB0cmlkZW50ID0gdXNlckFnZW50LmluZGV4T2YoJ1RyaWRlbnQvJyk7XG5cbiAgICBpZiAodHJpZGVudCA+IDApIHtcbiAgICAgIC8vIElFIDExID0+IHJldHVybiB2ZXJzaW9uIG51bWJlclxuICAgICAgY29uc3QgdmVyc2lvbiA9IHVzZXJBZ2VudC5pbmRleE9mKCdydjonKTtcblxuICAgICAgcmV0dXJuIGBJRS8ke3BhcnNlSW50KHVzZXJBZ2VudC5zdWJzdHJpbmcodmVyc2lvbiArIDMsIHVzZXJBZ2VudC5pbmRleE9mKCcuJywgdmVyc2lvbikpLCAxMCl9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFRlbGVtZXRyeUxldmVsTWFwcGluZyBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cnlEZWZhdWx0JztcbmltcG9ydCBMb2dnaW5nTGV2ZWxNYXBwaW5nIGZyb20gJy4uL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRGVmYXVsdHMnO1xuXG4vLyBUaGUgUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZpbGUgaXMgdXNlZCBpbiB0aGUgc2lsZW50IGJ1aWxkXG4vLyB0byBjb25zdHJhaW4gdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyB0byB0aGUgc3BlY2lmaWVkIHZhbHVlcy5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciB7XG4gIHB1YmxpYyBzdGF0aWMgZ2V0U3RyaW5nVmFsdWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmRlZmF1bHRTdHJpbmdWYWx1ZVtuYW1lXTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0Qm9vbGVhblZhbHVlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZGVmYXVsdEJvb2xlYW5WYWx1ZVtuYW1lXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkZWZhdWx0U3RyaW5nVmFsdWUoKTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB7XG4gICAgICAncGhlbml4LW1ldHJpY3MtbGV2ZWwnOiBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUoVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWwpLFxuICAgICAgJ3BoZW5peC1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC1jb25zb2xlLWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC10ZWxlbWV0cnktbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsKSxcbiAgICAgICdwaGVuaXgtY2hhbm5lbC10b2tlbic6ICcnLFxuICAgICAgJ3BoZW5peC11cmknOiAnJyxcbiAgICAgICdwaGVuaXgtYmFzZS11cmknOiAnJ1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXQgZGVmYXVsdEJvb2xlYW5WYWx1ZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBib29sZWFuIH0ge1xuICAgIHJldHVybiB7XG4gICAgICAncGhlbml4LWF1dG9tYXRpY2FsbHktcmV0cnktb24tZmFpbHVyZSc6IHRydWUsXG4gICAgICAncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbic6IHRydWUsXG4gICAgICAncGhlbml4LWZvcmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1yZXN0YXJ0JzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnOiB0cnVlXG4gICAgfTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIge1xuICBzdGF0aWMgZm9yY2VHYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkKSB7XG4gICAgICB0aGlzLmZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc1F1ZXVlTWljcm90YXNrU3VwcG9ydGVkKSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5xdWV1ZU1pY3JvdGFzayh0aGlzLm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbi5iaW5kKHRoaXMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCh0aGlzLm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbi5iaW5kKHRoaXMpLCAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBvdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgbGV0IGltZzogSFRNTEltYWdlRWxlbWVudCB8IG51bGwgPSBHbG9iYWxTY29wZS52YWx1ZS5kb2N1bWVudENyZWF0ZUVsZW1lbnQ8SFRNTEltYWdlRWxlbWVudD4oJ2ltZycpO1xuXG4gICAgaW1nLnNyYyA9IEdsb2JhbFNjb3BlLnZhbHVlLlVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW25ldyBBcnJheUJ1ZmZlcigxMGUrNyldKSk7IC8vIDEwME1iIG9yIGxlc3Mgb3IgbW9yZSBkZXBlbmRpbmcgb24gYXMgeW91IHdpc2ggdG8gZm9yY2UvaW52b2tlIEdDIGN5Y2xlIHJ1blxuICAgIGltZy5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5VUkwucmV2b2tlT2JqZWN0VVJMKHRoaXMuc3JjKTtcblxuICAgICAgaW1nID0gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXR3b3JrTW9uaXRvciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzU3VwcG9ydGVkOiBib29sZWFuID0gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbiAhPT0gdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ydHQ6IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPiA9IG5ldyBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZWZmZWN0aXZlVHlwZTogU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+ID0gbmV3IFN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+ID0gbmV3IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghdGhpcy5pc1N1cHBvcnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2V0dXBOZXR3b3JrQ2hhbmdlTGlzdGVuZXJzKCk7XG4gICAgdGhpcy51cGRhdGVTdGF0aXN0aWNzKCk7XG4gIH1cblxuICBnZXQgaXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU3VwcG9ydGVkO1xuICB9XG5cbiAgZ2V0IHJ0dCgpOiBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLl9ydHQ7XG4gIH1cblxuICBnZXQgZWZmZWN0aXZlVHlwZSgpOiBTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLl9lZmZlY3RpdmVUeXBlO1xuICB9XG5cbiAgZ2V0IGRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5KCk6IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5O1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldERvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LmRvd25saW5rID8/IEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LmRvd25saW5rTWF4ID8/IC0xO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFZmZlY3RpdmVUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LmVmZmVjdGl2ZVR5cGUgPz8gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8udHlwZSA/PyAnVW5rbm93bic7XG4gIH1cblxuICBwcml2YXRlIGdldFJvdW5kVHJpcFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8ucnR0ID8/IC0xO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgY29uc3QgbGlzdGVuZXIgPSAoKTogdm9pZCA9PiB0aGlzLnVwZGF0ZVN0YXRpc3RpY3MoKTtcblxuICAgIEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKTtcblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcikpKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3RhdGlzdGljcygpOiB2b2lkIHtcbiAgICB0aGlzLl9ydHQudmFsdWUgPSB0aGlzLmdldFJvdW5kVHJpcFRpbWUoKTtcbiAgICB0aGlzLl9lZmZlY3RpdmVUeXBlLnZhbHVlID0gdGhpcy5nZXRFZmZlY3RpdmVUeXBlKCk7XG4gICAgdGhpcy5fZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkudmFsdWUgPSB0aGlzLmdldERvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5KCk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IE1ldHJpY1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNUeXBlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcblxuZXhwb3J0IGNsYXNzIFN0cmVhbVNldHVwTGlzdGVuZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU3RyZWFtU2V0dXBMaXN0ZW5lcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IG1ldHJpY3NTZXJ2aWNlID0gU0RLLm1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdlTG9hZFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhcnRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgX21ldHJpY1N1Ym1pdHRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2VMb2FkVGltZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBzdWNjZXNzKHN0cmVhbUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZFN0cmVhbU1ldHJpYyhNZXRyaWNzVHlwZS5TZXR1cENvbXBsZXRlZCwgc3RyZWFtSWQpO1xuICB9XG5cbiAgZmFpbCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZFN0cmVhbU1ldHJpYyhNZXRyaWNzVHlwZS5TZXR1cEZhaWxlZCk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZFN0cmVhbU1ldHJpYyhtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZSwgc3RyZWFtSWQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fbWV0cmljU3VibWl0dGVkKSB7XG4gICAgICByZXR1cm4gO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY1N1Ym1pdHRlZCA9IHRydWU7XG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHNldHVwVGltZSA9IG5vdyAtIHRoaXMuX3N0YXJ0VGltZTtcbiAgICBjb25zdCBtZXRyaWNOYW1lID0gbmV3IE1ldHJpY1R5cGUobWV0cmljVHlwZSkuZ2V0TmFtZSgpO1xuXG4gICAgdGhpcy5tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogc2V0dXBUaW1lfSxcbiAgICAgIHN0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gU3RyZWFtIG1ldHJpYyBbJXNdIGluIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBzdHJlYW1JZCxcbiAgICAgIG1ldHJpY05hbWUsXG4gICAgICBuZXcgRHVyYXRpb25zKHNldHVwVGltZSkudG9Jc29TdHJpbmcoKVxuICAgICk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBFZGdlVG9rZW4gZnJvbSAnLi9FZGdlVG9rZW4nO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuL0VuY29kZWRFZGdlVG9rZW4nO1xuXG5jb25zdCBlZGdlQXV0aFRva2VuUHJlZml4ID0gJ0RJR0VTVDonO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGdlQXV0aFBhcnNlciB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRWRnZUF1dGhQYXJzZXInKTtcblxuICBzdGF0aWMgcGFyc2VUb2tlbih0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbik6IEVkZ2VUb2tlbiB7XG4gICAgaWYgKCF0aGlzLmlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkKHRva2VuKSkge1xuICAgICAgRWRnZUF1dGhQYXJzZXIuX2xvZ2dlci5lcnJvcignVG9rZW4gaXMgbm90IHZhbGlkIFslc10nLCB0b2tlbik7XG5cbiAgICAgIHJldHVybiBuZXcgRWRnZVRva2VuKG51bGwpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWNvZGVkVG9rZW4gPSBhdG9iKHRva2VuLnN1YnN0cihlZGdlQXV0aFRva2VuUHJlZml4Lmxlbmd0aCkpO1xuICAgICAgY29uc3QgZWRnZVRva2VuID0gSlNPTi5wYXJzZShkZWNvZGVkVG9rZW4pO1xuXG4gICAgICBlZGdlVG9rZW4udG9rZW4gPSBKU09OLnBhcnNlKGVkZ2VUb2tlbi50b2tlbik7XG5cbiAgICAgIHJldHVybiBuZXcgRWRnZVRva2VuKGVkZ2VUb2tlbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgRWRnZUF1dGhQYXJzZXIuX2xvZ2dlci5lcnJvcignQ2Fubm90IHBhcnNlIHRva2VuIHZhbHVlJywgZSk7XG5cbiAgICAgIHJldHVybiBuZXcgRWRnZVRva2VuKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBpc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRva2VuICYmIHRva2VuLnN0YXJ0c1dpdGgoZWRnZUF1dGhUb2tlblByZWZpeCk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcblxuaW50ZXJmYWNlIElUb2tlbiB7XG4gIHVyaTogVVJMIHwgbnVsbDtcbiAgY2FwYWJpbGl0aWVzOiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIElFZGdlVG9rZW4ge1xuICBhcHBsaWNhdGlvbklkOiBzdHJpbmc7XG4gIHRva2VuOiBJVG9rZW47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkZ2VUb2tlbiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGxpY2F0aW9uSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdG9rZW46IElUb2tlbjtcblxuICBjb25zdHJ1Y3RvcihlZGdlVG9rZW46IElFZGdlVG9rZW4gfCBudWxsKSB7XG4gICAgdGhpcy5fYXBwbGljYXRpb25JZCA9IGVkZ2VUb2tlbj8uYXBwbGljYXRpb25JZCB8fCAnJztcbiAgICB0aGlzLl90b2tlbiA9IHtcbiAgICAgIHVyaTogZWRnZVRva2VuPy50b2tlbj8udXJpID8gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTChlZGdlVG9rZW4udG9rZW4udXJpKSA6IG51bGwsXG4gICAgICBjYXBhYmlsaXRpZXM6IGVkZ2VUb2tlbj8udG9rZW4/LmNhcGFiaWxpdGllcyB8fCBbXVxuICAgIH07XG4gIH1cblxuICBnZXQgdXJpKCk6IFVSTCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl90b2tlbi51cmk7XG4gIH1cblxuICBnZXQgY2FwYWJpbGl0aWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW4uY2FwYWJpbGl0aWVzO1xuICB9XG5cbiAgZ2V0IHRlbmFuY3koKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYXBwbGljYXRpb25JZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0xvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5kZWNsYXJlIGNvbnN0IF9fRkVBVFVSRVNfXzoge1xuICBzZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBzZW5kTG9nczogTG9nZ2luZ0xldmVsVHlwZTtcbiAgc2VuZE1ldHJpY3M6IFRlbGVtZXRyeUxldmVsVHlwZTtcbiAgbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRGZWF0dXJlcyB7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBwcml2YXRlIHN0YXRpYyBfc2VuZExvZ3M6IExvZ2dpbmdMZXZlbFR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTWV0cmljczogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBwcml2YXRlIHN0YXRpYyBfbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xuXG4gIHN0YXRpYyBnZXQgc2VuZExvY2FsQ2FuZGlkYXRlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZExvZ3MoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRMb2dzO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTWV0cmljcygpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTWV0cmljcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9nVG9Db25zb2xlKCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9sb2dUb0NvbnNvbGU7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlGZWF0dXJlcygpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmVhdHVyZXMgPSBfX0ZFQVRVUkVTX187XG5cbiAgICAgIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXMgPSAnc2VuZExvY2FsQ2FuZGlkYXRlcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTG9jYWxDYW5kaWRhdGVzIDogdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ3NlbmRMb2dzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRMb2dzIDogJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdzZW5kTWV0cmljcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTWV0cmljcyA6ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ2xvZ1RvQ29uc29sZScgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5sb2dUb0NvbnNvbGUgOiAnQWxsJztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ0FsbCc7XG4gICAgfVxuICB9XG59XG5cbkJ1aWxkRmVhdHVyZXMuYXBwbHlGZWF0dXJlcygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IEJyb3dzZXJEZXRlY3RvciBmcm9tICcuLi9kb20vQnJvd3NlckRldGVjdG9yJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmVhdHVyZUVuYWJsZW1lbnQge1xuICBzdGF0aWMgZ2V0IGNsaWVudE9mZmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gQ2xpZW50IG9mZmVyIHdvcmtmbG93IGRvZXMgbm90IHdvcmsgY29ycmVjdGx5IGluIHRoZSBmb2xsb3dpbmcgYnJvd3NlcnNcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzQgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc1IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NiB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGdldFRyYW5zY2VpdmVyc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBGZWF0dXJlRW5hYmxlbWVudC5hZGRUcmFuY2VpdmVyRGlzYWJsZWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGFkZFRyYW5jZWl2ZXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAvLyBDaHJvbWUgNjksIDcwLCA3MSwgNzIgZXhwb3NlcyBgYWRkVHJhbmNlaXZlcmAgYnV0IGl0IGRvZXMgbm90IHdvcmsgY29ycmVjdGx5XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTY5IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3MCB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzEgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTcyO1xuICB9XG5cbiAgc3RhdGljIGdldCBnZXRTdGF0c1Byb21pc2VCYXNlZERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDY2O1xuICB9XG5cbiAgc3RhdGljIGdldCBnZXRDdXJyZW50T2ZmZXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IG9uVHJhY2tEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA2MyB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1NTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgcHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDUyO1xuICB9XG5cbiAgc3RhdGljIGdldCBzaG91bGRVc2VOYXRpdmVIbHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ1NhZmFyaScgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ1NhbXN1bmdCcm93c2VyJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNQcmVjYWNoaW5nRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lICE9PSAnSUUnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0ZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb25TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgdHlwZW9mIEdsb2JhbFNjb3BlLnZhbHVlPy5kb2N1bWVudENyZWF0ZUVsZW1lbnQgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPj0gNzEgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uID49IDY5IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYWZhcmknO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmlzTW9iaWxlKCk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEodHlwZW9mIE1lZGlhU3RyZWFtVHJhY2tQcm9jZXNzb3IgPT09ICd1bmRlZmluZWQnIHx8XG4gICAgICB0eXBlb2YgTWVkaWFTdHJlYW1UcmFja0dlbmVyYXRvciA9PT0gJ3VuZGVmaW5lZCcpO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIFJUQ1J0cFJlY2VpdmVyICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgUlRDUnRwUmVjZWl2ZXIucHJvdG90eXBlLmNyZWF0ZUVuY29kZWRTdHJlYW1zICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBSVENSdHBTY3JpcHRUcmFuc2Zvcm0gIT09ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1JlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2tTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBHbG9iYWxTY29wZS52YWx1ZT8uSFRNTFZpZGVvRWxlbWVudC5wcm90b3R5cGUucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayAhPT0gJ3VuZGVmaW5lZCc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hhbm5lbEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZlYXR1cmVFbmFibGVtZW50LmlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZFxuICAgICAgJiYgKEZlYXR1cmVFbmFibGVtZW50LmlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIHx8IEZlYXR1cmVFbmFibGVtZW50LmlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ1NhZmFyaSc7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZGVjbGFyZSBjb25zdCBfX1BBUkFNRVRFUlNfXzoge1xuICBkaXNjb3Zlcnk6IElEaXNjb3ZlcnlQYXJhbWV0ZXI7XG59O1xuXG5pbnRlcmZhY2UgSURpc2NvdmVyeVBhcmFtZXRlcntcbiAgaW50ZW50aW9uczogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXJhbWV0ZXJzIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2Rpc2NvdmVyeVBhcmFtZXRlcnM6IElEaXNjb3ZlcnlQYXJhbWV0ZXIgO1xuXG4gIHN0YXRpYyBnZXQgZGlzY292ZXJ5UGFyYW1ldGVycygpOiBJRGlzY292ZXJ5UGFyYW1ldGVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzY292ZXJ5UGFyYW1ldGVycztcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVBhcmFtZXRlcnMoKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBfX1BBUkFNRVRFUlNfXztcblxuICAgICAgdGhpcy5fZGlzY292ZXJ5UGFyYW1ldGVycyA9ICdkaXNjb3ZlcnknIGluIHBhcmFtZXRlcnMgPyBwYXJhbWV0ZXJzLmRpc2NvdmVyeSA6IHtpbnRlbnRpb25zOiAnJ307XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fZGlzY292ZXJ5UGFyYW1ldGVycyA9IHtpbnRlbnRpb25zOiAnJ307XG4gICAgfVxuICB9XG59XG5cblBhcmFtZXRlcnMuYXBwbHlQYXJhbWV0ZXJzKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJR2xvYmFsU2NvcGUgZnJvbSAnLi9JR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElEb2N1bWVudCBmcm9tICcuL0lEb2N1bWVudCc7XG5pbXBvcnQgSUxvY2F0aW9uIGZyb20gJy4vSUxvY2F0aW9uJztcbmltcG9ydCBJTmV0d29ya0luZm9ybWF0aW9uIGZyb20gJy4vSU5ldHdvcmtJbmZvcm1hdGlvbic7XG5pbXBvcnQgSU5hdmlnYXRvciBmcm9tICcuL0lOYXZpZ2F0b3InO1xuaW1wb3J0IElXaW5kb3cgZnJvbSAnLi9JV2luZG93JztcbmltcG9ydCBJUHJvdmlkZWRHbG9iYWxTY29wZSBmcm9tICcuL0lQcm92aWRlZEdsb2JhbFNjb3BlJztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuXG50eXBlIEJyb3dzZXJHbG9iYWxTY29wZSA9IElQcm92aWRlZEdsb2JhbFNjb3BlO1xuXG5jb25zdCBicm93c2VyR2xvYmFsU2NvcGU6IEJyb3dzZXJHbG9iYWxTY29wZSA9IHtcbiAgZG9jdW1lbnQsXG4gIGxvY2F0aW9uLFxuICBuYXZpZ2F0b3IsXG4gIHdpbmRvd1xufTtcblxuZXhwb3J0IGNsYXNzIEdsb2JhbFNjb3BlIGltcGxlbWVudHMgSUdsb2JhbFNjb3BlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2luc3RhbmNlID0gbmV3IFN1YmplY3Q8SUdsb2JhbFNjb3BlPihuZXcgR2xvYmFsU2NvcGUoYnJvd3Nlckdsb2JhbFNjb3BlKSk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seUluc3RhbmNlOiBSZWFkT25seVN1YmplY3Q8SUdsb2JhbFNjb3BlPiA9IG5ldyBSZWFkT25seVN1YmplY3QoR2xvYmFsU2NvcGUuX2luc3RhbmNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnQ6IElEb2N1bWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9jYXRpb246IElMb2NhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmF2aWdhdG9yOiBJTmF2aWdhdG9yO1xuICBwcml2YXRlIHJlYWRvbmx5IF93aW5kb3c6IElXaW5kb3c7XG5cbiAgY29uc3RydWN0b3IoZ2xvYmFsU2NvcGU6IEJyb3dzZXJHbG9iYWxTY29wZSkge1xuICAgIHRoaXMuX2RvY3VtZW50ID0gZ2xvYmFsU2NvcGUuZG9jdW1lbnQ7XG4gICAgdGhpcy5fbG9jYXRpb24gPSBnbG9iYWxTY29wZS5sb2NhdGlvbjtcbiAgICB0aGlzLl9uYXZpZ2F0b3IgPSBnbG9iYWxTY29wZS5uYXZpZ2F0b3I7XG4gICAgdGhpcy5fd2luZG93ID0gZ2xvYmFsU2NvcGUud2luZG93O1xuICB9XG5cbiAgLy8gVGhpcyBtZXRob2QgaXMgcmVxdWlyZWQgdG8gbWFpbnRhaW4gQVBJIGNvbnNpc3RlbmN5IHdpdGggUHJvdmlkZWRHbG9iYWxTY29wZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gIC8vIEB0cy1pZ25vcmVcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBwdWJsaWMgc3RhdGljIHNldEluc3RhbmNlKHByb3ZpZGVkR2xvYmFsU2NvcGU6IElQcm92aWRlZEdsb2JhbFNjb3BlKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIGJ1aWxkIGRvZXMgbm90IHN1cHBvcnQgc2V0dGluZyB0aGUgR2xvYmFsU2NvcGUnKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0SW5zdGFuY2UoKTogUmVhZE9ubHlTdWJqZWN0PElHbG9iYWxTY29wZT4ge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS5fcmVhZE9ubHlJbnN0YW5jZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc3Vic2NyaWJlKGNhbGxiYWNrOiAodmFsdWU6IElHbG9iYWxTY29wZSB8IG51bGwpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLl9yZWFkT25seUluc3RhbmNlLnN1YnNjcmliZShjYWxsYmFjayk7XG4gIH1cblxuICBnZXQgRm9ybURhdGEoKTogdHlwZW9mIEZvcm1EYXRhIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LkZvcm1EYXRhO1xuICB9XG5cbiAgZ2V0IEhUTUxWaWRlb0VsZW1lbnQoKTogdHlwZW9mIEhUTUxWaWRlb0VsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuSFRNTFZpZGVvRWxlbWVudDtcbiAgfVxuXG4gIGdldCBNZWRpYVN0cmVhbSgpOiB0eXBlb2YgTWVkaWFTdHJlYW0ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuTWVkaWFTdHJlYW07XG4gIH1cblxuICBnZXQgTWVkaWFTdHJlYW1UcmFjaygpOiB0eXBlb2YgTWVkaWFTdHJlYW1UcmFjayB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5NZWRpYVN0cmVhbVRyYWNrO1xuICB9XG5cbiAgZ2V0IE1lZGlhU291cmNlKCk6IHR5cGVvZiBNZWRpYVNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5NZWRpYVNvdXJjZTtcbiAgfVxuXG4gIGdldCBSVENQZWVyQ29ubmVjdGlvbigpOiB0eXBlb2YgUlRDUGVlckNvbm5lY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuUlRDUGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKCk6IHR5cGVvZiBSVENTZXNzaW9uRGVzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuUlRDU2Vzc2lvbkRlc2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IFJUQ0ljZUNhbmRpZGF0ZSgpOiB0eXBlb2YgUlRDSWNlQ2FuZGlkYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlJUQ0ljZUNhbmRpZGF0ZTtcbiAgfVxuXG4gIGdldCBVUkwoKTogdHlwZW9mIFVSTCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5VUkw7XG4gIH1cblxuICBnZXQgVVJMU2VhcmNoUGFyYW1zKCk6IHR5cGVvZiBVUkxTZWFyY2hQYXJhbXMge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuVVJMU2VhcmNoUGFyYW1zO1xuICB9XG5cbiAgZ2V0IGFkZERvY3VtZW50RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgYWRkV2luZG93RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5hZGRFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBjbGVhckludGVydmFsKCk6IChpZD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5jbGVhckludGVydmFsLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBjbGVhclRpbWVvdXQoKTogKGlkPzogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmNsZWFyVGltZW91dC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgZG9jdW1lbnRDcmVhdGVFbGVtZW50KCk6IDxFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQ+KHRhZzogc3RyaW5nKSA9PiBFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudC5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBkb2N1bWVudEhhc0ZvY3VzKCk6ICgpID0+IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5oYXNGb2N1cy5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBkb2N1bWVudElzSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX2RvY3VtZW50LmhpZGRlbjtcbiAgfVxuXG4gIGdldCBkb2N1bWVudFF1ZXJ5U2VsZWN0b3IoKTogPEVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudD4odGFnOiBzdHJpbmcpID0+IEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQucXVlcnlTZWxlY3Rvci5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBmZXRjaCgpOiAoaW5wdXQ6IHN0cmluZyB8IFVSTCB8IFJlcXVlc3QsIGluaXQ/OiBSZXF1ZXN0SW5pdCkgPT4gUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuZmV0Y2guYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGxvY2F0aW9uSG9zdG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb24uaG9zdG5hbWU7XG4gIH1cblxuICBnZXQgbG9jYXRpb25TZWFyY2goKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb24uc2VhcmNoO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRvckNvbm5lY3Rpb24oKTogSU5ldHdvcmtJbmZvcm1hdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRvci5jb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRvcklzT25MaW5lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0b3Iub25MaW5lO1xuICB9XG5cbiAgZ2V0IHBhZ2VMb2FkVGltZSgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3dbJ19fcGhlbml4UGFnZUxvYWRUaW1lJ10gfHwgdGhpcy5fd2luZG93WydfX3BhZ2VMb2FkVGltZSddO1xuICB9XG5cbiAgZ2V0IHF1ZXVlTWljcm90YXNrKCk6IChtaWNyb3Rhc2s6ICgpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cucXVldWVNaWNyb3Rhc2suYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IHJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgcmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBzZXRJbnRlcnZhbCgpOiAoaGFuZGxlcjogc3RyaW5nIHwgRnVuY3Rpb24sIHRpbWVvdXQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5zZXRJbnRlcnZhbC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgc2V0VGltZW91dCgpOiAoaGFuZGxlcjogc3RyaW5nIHwgRnVuY3Rpb24sIHRpbWVvdXQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5zZXRUaW1lb3V0LmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBHbG9iYWxTY29wZS5nZXRJbnN0YW5jZSgpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc3Bvc2FibGUgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgX2Rpc3Bvc2VkOiBib29sZWFuO1xuICBwcml2YXRlIF9kaXNwb3NhYmxlOiAoKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKGRpc3Bvc2FibGU6ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLl9kaXNwb3NlZCA9IGZhbHNlO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGUgPSBkaXNwb3NhYmxlO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGlzcG9zZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9kaXNwb3NlZCA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5fZGlzcG9zYWJsZS5jYWxsKHRoaXMpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuL0lEaXNwb3NhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzcG9zYWJsZUxpc3Qge1xuICBwcml2YXRlIHJlYWRvbmx5IF9saXN0OiBJRGlzcG9zYWJsZVtdID0gW107XG5cbiAgYWRkKGRpc3Bvc2FibGU6IElEaXNwb3NhYmxlKTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdC5wdXNoKGRpc3Bvc2FibGUpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9saXN0LmZvckVhY2goZGlzcG9zYWJsZSA9PiBkaXNwb3NhYmxlLmRpc3Bvc2UoKSk7XG4gICAgdGhpcy5fbGlzdC5sZW5ndGggPSAwO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYERpc3Bvc2FibGVMaXN0W2Rpc3Bvc2FibGVzPSR7dGhpcy5fbGlzdC5sZW5ndGh9XWA7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuLy8gQXMgZmxvYXQgaW4gRUNNQVNjcmlwdCB1c2UgNjQtYml0IGZvcm1hdCBpdCBjYW5ub3QgaGF2ZS9oYW5kbGUgbW9yZSB0aGFuIDE1IHN5bWJvbHMgYWZ0ZXIgZG90LlxuY29uc3QgbWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90ID0gMTU7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE51bWJlcnMge1xuICBzdGF0aWMgY291bnROdW1iZXJMZW5ndGgodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUgPSAwO1xuICAgIGxldCBudW1iZXIgPSB2YWx1ZTtcblxuICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICBudW1iZXIgKj0gLTE7XG4gICAgICBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIE51bWJlcnMuY291bnREaWdpdHNCZWZvcmVEZWNpbWFsKG51bWJlcikgKyBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlICsgKG51bWJlciAhPT0gTWF0aC5mbG9vcihudW1iZXIpID8gTnVtYmVycy5jb3VudERpZ2l0c0FmdGVyRGVjaW1hbChudW1iZXIpICsgMSA6IDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZml4Um91bmRpbmcodmFsdWU6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHBvd2VyID0gTWF0aC5wb3coMTAsIHByZWNpc2lvbik7XG5cbiAgICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIHBvd2VyKSAvIHBvd2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY291bnREaWdpdHNCZWZvcmVEZWNpbWFsKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCBkaWdpdHNCZWZvcmVEZWNpbWFsID0gMTtcbiAgICBsZXQgbnVtYmVyID0gdmFsdWU7XG5cbiAgICB3aGlsZSAobnVtYmVyID49IDEwKSB7XG4gICAgICBudW1iZXIgPSBudW1iZXIgLyAxMDtcbiAgICAgIGRpZ2l0c0JlZm9yZURlY2ltYWwrKztcbiAgICB9XG5cbiAgICByZXR1cm4gZGlnaXRzQmVmb3JlRGVjaW1hbDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSB2YWx1ZTtcbiAgICBsZXQgbW9kaWZpZWRWYWx1ZSA9IE1hdGguZmxvb3IodmFsdWUpO1xuICAgIGxldCBjb3VudCA9IDA7XG5cbiAgICB3aGlsZSAobW9kaWZpZWRWYWx1ZSAhPT0gb3JpZ2luYWxWYWx1ZSAmJiBjb3VudCA8IG1heERpZ2l0c0luRmxvYXRBZnRlckRvdCkge1xuICAgICAgY291bnQrKztcbiAgICAgIG1vZGlmaWVkVmFsdWUgPSBOdW1iZXJzLmZpeFJvdW5kaW5nKG9yaWdpbmFsVmFsdWUsIGNvdW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTnVtYmVycyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RyaW5ncyB7XG4gIHN0YXRpYyByYW5kb20obGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJhbmRvbTEzQ2hhcmFjdGVycyA9ICgpOiBzdHJpbmcgPT4ge1xuICAgICAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTYpLnN1YnN0cmluZygyLCAxNSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGxvb3BzOiBudW1iZXIgPSBNYXRoLmNlaWwobGVuZ3RoIC8gMTMpO1xuXG4gICAgcmV0dXJuIG5ldyBBcnJheShsb29wcykuZmlsbChyYW5kb20xM0NoYXJhY3RlcnMpLnJlZHVjZSgoc3RyaW5nLCBmdW5jKSA9PiB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgZnVuYygpO1xuICAgIH0sICcnKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdHJpbmdzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0VW5yZWFjaGFibGUoeDogbmV2ZXIpOiBuZXZlciB7XG4gIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB2YWx1ZSBbJHt4fV0uIFRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWRgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXNzZXJ0VW5yZWFjaGFibGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwcGVuZGVycyB7XG4gIHByaXZhdGUgX2FwcGVuZGVyczogQXJyYXk8SUFwcGVuZGVyPiA9IFtdO1xuXG4gIGdldCB2YWx1ZSgpOiBBcnJheTxJQXBwZW5kZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYXBwZW5kZXJzO1xuICB9XG5cbiAgYWRkKGFwcGVuZGVyOiBJQXBwZW5kZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBlbmRlcnMucHVzaChhcHBlbmRlcik7XG4gIH1cblxuICByZW1vdmUoYXBwZW5kZXI6IElBcHBlbmRlcik6IHZvaWQge1xuICAgIHRoaXMuX2FwcGVuZGVycyA9IHRoaXMuX2FwcGVuZGVycy5yZWR1Y2UoKGl0ZW1zLCBpdGVtKSA9PiB7XG4gICAgICBpZiAoIShpdGVtID09PSBhcHBlbmRlcikpIHtcbiAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH0sIFtdIGFzIEFycmF5PElBcHBlbmRlcj4pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25zb2xlQXBwZW5kZXIgaW1wbGVtZW50cyBJQXBwZW5kZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbDtcblxuICBsb2cobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCBkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgaWYgKGxvZ0xldmVsIDwgdGhpcy5fdGhyZXNob2xkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbE1lc3NhZ2UgPSBgJHtkYXRlLnRvSVNPU3RyaW5nKCl9IFske2NhdGVnb3J5fV0gWyR7TG9nZ2luZ0xldmVsW2xvZ0xldmVsXX1dICR7bWVzc2FnZX1gO1xuXG4gICAgaWYgKGxvZ0xldmVsIDwgTG9nZ2luZ0xldmVsLldhcm4pIHtcbiAgICAgIGNvbnNvbGUubG9nKGZ1bGxNZXNzYWdlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUuZXJyb3IoZnVsbE1lc3NhZ2UpO1xuICB9XG5cbiAgY29uc3RydWN0b3IodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcbmltcG9ydCBBcHBlbmRlcnMgZnJvbSAnLi9BcHBlbmRlcnMnO1xuaW1wb3J0IExvZ2dpbmdUaHJlc2hvbGQgZnJvbSAnLi9Mb2dnaW5nVGhyZXNob2xkJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5cbmV4cG9ydCBlbnVtIExvZ2dpbmdMZXZlbCB7XG4gIEFsbCA9IC0xLFxuICBUcmFjZSA9IDEwLFxuICBEZWJ1ZyA9IDIwLFxuICBJbmZvID0gMzAsXG4gIFdhcm4gPSA0MCxcbiAgRXJyb3IgPSA1MCxcbiAgRmF0YWwgPSA2MCxcbiAgT2ZmID0gMTAwLFxufVxuXG5leHBvcnQgdHlwZSBMb2dnaW5nTGV2ZWxUeXBlID0gJ09mZicgfCAnVHJhY2UnIHwgJ0RlYnVnJyB8ICdJbmZvJyB8ICdXYXJuJyB8ICdFcnJvcicgfCAnRmF0YWwnIHwgJ0FsbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NhdGVnb3J5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGVuZGVyczogQXBwZW5kZXJzO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQ7XG5cbiAgZ2V0IGNhdGVnb3J5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NhdGVnb3J5O1xuICB9XG5cbiAgZ2V0IGFwcGVuZGVycygpOiBBcHBlbmRlcnMge1xuICAgIHJldHVybiB0aGlzLl9hcHBlbmRlcnM7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IExvZ2dpbmdUaHJlc2hvbGQge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICB0cmFjZSguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuVHJhY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuVHJhY2UsIGFyZ3MpO1xuICB9XG5cbiAgZGVidWcoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkRlYnVnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkRlYnVnLCBhcmdzKTtcbiAgfVxuXG4gIGluZm8oLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkluZm8pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuSW5mbywgYXJncyk7XG4gIH1cblxuICB3YXJuKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5XYXJuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLldhcm4sIGFyZ3MpO1xuICB9XG5cbiAgZXJyb3IoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkVycm9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkVycm9yLCBhcmdzKTtcbiAgfVxuXG4gIGZhdGFsKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5GYXRhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5GYXRhbCwgYXJncyk7XG4gIH1cblxuICBwcml2YXRlIGxvZyhsZXZlbDogbnVtYmVyLCBhcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5yZXBsYWNlUGxhY2Vob2xkZXJzKGFyZ3MpO1xuXG4gICAgdGhpcy5fYXBwZW5kZXJzLnZhbHVlLmZvckVhY2goKGFwcGVuZGVyOiBJQXBwZW5kZXIpID0+IHtcbiAgICAgIGFwcGVuZGVyLmxvZyhsZXZlbCwgbWVzc2FnZSwgdGhpcy5jYXRlZ29yeSwgZGF0ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VQbGFjZWhvbGRlcnMoYXJnczogYW55KTogc3RyaW5nIHtcbiAgICBsZXQgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IGFyZ3NbMF07XG4gICAgbGV0IGluZGV4ID0gMDtcblxuICAgIHdoaWxlIChyZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLmluZGV4T2YgJiYgYXJncy5sZW5ndGggPiAxICYmIGluZGV4ID49IDApIHtcbiAgICAgIGluZGV4ID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5pbmRleE9mKCclJywgaW5kZXgpO1xuXG4gICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDEsIGluZGV4ICsgMik7XG5cbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgY2FzZSAnJSc6XG4gICAgICAgICAgICAvLyBFc2NhcGVkICclJScgdHVybnMgaW50byAnJSdcbiAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCkgKyByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDEpO1xuICAgICAgICAgICAgaW5kZXgrKztcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAvLyBSZXBsYWNlICclZCcgb3IgJyVzJyB3aXRoIHRoZSBhcmd1bWVudFxuICAgICAgICAgICAgYXJnc1swXSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSB0aGlzLnJlcGxhY2VBcmd1bWVudChcbiAgICAgICAgICAgICAgdGhpcy50b1N0cmluZyhhcmdzWzFdKSxcbiAgICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyxcbiAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhcmdzLnNwbGljZSgxLCAxKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnaic6XG4gICAgICAgICAgICAvLyBSZXBsYWNlICVqJyB3aXRoIHRoZSBhcmd1bWVudFxuICAgICAgICAgICAgYXJnc1swXSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSB0aGlzLnJlcGxhY2VBcmd1bWVudChcbiAgICAgICAgICAgICAgdGhpcy5zdHJpbmdpZnkoYXJnc1sxXSksXG4gICAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcsXG4gICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBhcmdzLnNwbGljZSgxLCAxKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBhcmdzLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPiAxKSB7XG4gICAgICBhcmdzID0gYXJncy5yZWR1Y2UoKGFjY3VtdWxhdG9yOiBzdHJpbmcsIGN1cnJlbnRWYWx1ZTogc3RyaW5nIHwgRXJyb3IsIGluZGV4OiBudW1iZXIsIGFycmF5OiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICBpZiAoaW5kZXggKyAxID09PSBhcnJheS5sZW5ndGggJiYgY3VycmVudFZhbHVlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUuc3RhY2spO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUubWVzc2FnZSkgKyAnXFxuJyArIHRoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlLnN0YWNrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArIGBbJHt0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZSl9XWA7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJncy50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdHJpbmdpZnkoYXJnOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNhY2hlOiBvYmplY3RbXSA9IFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgYXJnIGluc3RhbmNlb2YgRXJyb3IgPyB0aGlzLnRvU3RyaW5nKGFyZykgOiBhcmcsXG4gICAgICAgIChfLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgIGlmICghIXZhbHVlICYmIHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgICAgICBpZiAoY2FjaGUuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgICAgICAgIHJldHVybiAnPHJlY3Vyc2l2ZT4nO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYWNoZS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0sXG4gICAgICAgIDJcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuICdbb2JqZWN0IGludmFsaWQgSlNPTi5zdHJpbmdpZnldJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VBcmd1bWVudChhcmd1bWVudDogYW55LCByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCkgKyB0aGlzLnRvU3RyaW5nKGFyZ3VtZW50KSArIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMik7XG4gIH1cblxuICBwcml2YXRlIHRvU3RyaW5nKGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiBkYXRhID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gZGF0YS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGxldCB0b1N0cmluZ1N0ciA9ICcnO1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0b1N0cmluZ1N0ciA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgIH0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRvU3RyaW5nU3RyID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdG9TdHJpbmdTdHIgPSAnW29iamVjdCBpbnZhbGlkIHRvU3RyaW5nKCldJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0b1N0cmluZ1N0cjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGNhdGVnb3J5OiBzdHJpbmcsIGFwcGVuZGVyczogQXBwZW5kZXJzLCB0aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQpIHtcbiAgICB0aGlzLl9jYXRlZ29yeSA9IGNhdGVnb3J5O1xuICAgIHRoaXMuX2FwcGVuZGVycyA9IGFwcGVuZGVycztcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlckRlZmF1bHRzIHtcbiAgc3RhdGljIGdldCBkZWZhdWx0TG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbFtCdWlsZEZlYXR1cmVzLnNlbmRMb2dzXTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsW0J1aWxkRmVhdHVyZXMubG9nVG9Db25zb2xlXTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuSW5mbztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4vTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXIsIHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4vTG9nZ2VyJztcbmltcG9ydCBBcHBlbmRlcnMgZnJvbSAnLi9BcHBlbmRlcnMnO1xuaW1wb3J0IExvZ2dpbmdUaHJlc2hvbGQgZnJvbSAnLi9Mb2dnaW5nVGhyZXNob2xkJztcbmltcG9ydCBDb25zb2xlQXBwZW5kZXIgZnJvbSAnLi9Db25zb2xlQXBwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUFwcGVuZGVyIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlDb25maWd1cmF0aW9uIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZyb20gJy4uL2RvbS9Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyJztcbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuL0xvZ2dlckRlZmF1bHRzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyRmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXJzOiB7W2NhdGVnb3J5OiBzdHJpbmddOiBJTG9nZ2VyfSA9IHt9O1xuICBwcml2YXRlIHN0YXRpYyBfYXBwZW5kZXJzOiBBcHBlbmRlcnMgPSBuZXcgQXBwZW5kZXJzKCk7XG4gIHByaXZhdGUgc3RhdGljIF90aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQgPSBuZXcgTG9nZ2luZ1RocmVzaG9sZCgpO1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiA9IG5ldyBUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk7XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uKCk6IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiBMb2dnZXJGYWN0b3J5Ll90ZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgc3RhdGljIGdldExvZ2dlcihjYXRlZ29yeTogc3RyaW5nKTogSUxvZ2dlciB7XG4gICAgaWYgKHR5cGVvZiBjYXRlZ29yeSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGNhdGVnb3J5ID0gJ1NESyc7XG4gICAgfVxuXG4gICAgY29uc3QgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5fbG9nZ2Vyc1tjYXRlZ29yeV07XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICByZXR1cm4gbG9nZ2VyO1xuICAgIH1cblxuICAgIHJldHVybiBMb2dnZXJGYWN0b3J5Ll9sb2dnZXJzW2NhdGVnb3J5XSA9IG5ldyBMb2dnZXIoY2F0ZWdvcnksIHRoaXMuX2FwcGVuZGVycywgdGhpcy5fdGhyZXNob2xkKTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlMb2dnaW5nTGV2ZWwoKTtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwoJ2NvbnNvbGUnLCBMb2dnZXJGYWN0b3J5LmFwcGx5Q29uc29sZUxvZ2dlci5iaW5kKHRoaXMpKTtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwoJ3RlbGVtZXRyeScsIExvZ2dlckZhY3RvcnkuYXBwbHlUZWxlbWV0cnlMb2dnZXIuYmluZCh0aGlzKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseUxvZ2dpbmdMZXZlbCgpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJWYWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1sb2dnaW5nLWxldmVsJykgYXMgTG9nZ2luZ0xldmVsVHlwZTtcblxuICAgIGlmIChMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKSB7XG4gICAgICB0aGlzLl90aHJlc2hvbGQuc2V0VGhyZXNob2xkKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwobmFtZTogc3RyaW5nLCBhcHBseUFwcGVuZGVyOiAobGV2ZWw6IExvZ2dpbmdMZXZlbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtZXRlclZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZShgcGhlbml4LSR7bmFtZX0tbG9nZ2luZy1sZXZlbGApIGFzIExvZ2dpbmdMZXZlbFR5cGU7XG5cbiAgICBpZiAocGFyYW1ldGVyVmFsdWUgPT09ICdPZmYnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXBwbHlBcHBlbmRlcihMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5Q29uc29sZUxvZ2dlcihsZXZlbDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzLmFkZChuZXcgQ29uc29sZUFwcGVuZGVyKGxldmVsIHx8IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseVRlbGVtZXRyeUxvZ2dlcihsZXZlbDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSBsZXZlbCB8fCBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsO1xuXG4gICAgdGhpcy5fYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0xvZ2dlckZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbkxvZ2dlckZhY3RvcnkuYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbCwgTG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnaW5nTGV2ZWxNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUobG9nZ2luZ0xldmVsOiBMb2dnaW5nTGV2ZWwpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICBzd2l0Y2ggKGxvZ2dpbmdMZXZlbCkge1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuT2ZmOlxuICAgICAgICByZXR1cm4gJ09mZic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5UcmFjZTpcbiAgICAgICAgcmV0dXJuICdUcmFjZSc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5EZWJ1ZzpcbiAgICAgICAgcmV0dXJuICdEZWJ1Zyc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5JbmZvOlxuICAgICAgICByZXR1cm4gJ1RyYWNlJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLldhcm46XG4gICAgICAgIHJldHVybiAnV2Fybic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5FcnJvcjpcbiAgICAgICAgcmV0dXJuICdFcnJvcic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5GYXRhbDpcbiAgICAgICAgcmV0dXJuICdGYXRhbCc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5BbGw6XG4gICAgICAgIHJldHVybiAnQWxsJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGxvZ2dpbmdMZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwobG9nZ2luZ0xldmVsVHlwZTogTG9nZ2luZ0xldmVsVHlwZSk6IExvZ2dpbmdMZXZlbCB7XG4gICAgc3dpdGNoIChsb2dnaW5nTGV2ZWxUeXBlKSB7XG4gICAgICBjYXNlICdPZmYnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLk9mZjtcbiAgICAgIGNhc2UgJ1RyYWNlJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5UcmFjZTtcbiAgICAgIGNhc2UgJ0RlYnVnJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5EZWJ1ZztcbiAgICAgIGNhc2UgJ0luZm8nOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkluZm87XG4gICAgICBjYXNlICdXYXJuJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5XYXJuO1xuICAgICAgY2FzZSAnRXJyb3InOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkVycm9yO1xuICAgICAgY2FzZSAnRmF0YWwnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkZhdGFsO1xuICAgICAgY2FzZSAnQWxsJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShsb2dnaW5nTGV2ZWxUeXBlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4vTG9nZ2VyRGVmYXVsdHMnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4vTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2luZ1RocmVzaG9sZCB7XG4gIHByaXZhdGUgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsID0gTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbDtcblxuICBnZXQgdmFsdWUoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgc2V0VGhyZXNob2xkKHRocmVzaG9sZDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4vTWV0cmljc1R5cGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRyaWNUeXBlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljczogTWV0cmljc1R5cGU7XG5cbiAgY29uc3RydWN0b3IobWV0cmljczogTWV0cmljc1R5cGUpIHtcbiAgICB0aGlzLl9tZXRyaWNzID0gbWV0cmljcztcbiAgfVxuXG4gIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gTWV0cmljc1R5cGVbdGhpcy5fbWV0cmljc107XG4gIH1cblxuICBnZXRUZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgc3dpdGNoICh0aGlzLl9tZXRyaWNzKSB7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlRpbWVUb0ZpcnN0RnJhbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkNoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlN0YWxsZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkJ1ZmZlcmluZzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU2V0dXBDb21wbGV0ZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlNldHVwRmFpbGVkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5Sb3VuZFRyaXBUaW1lOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5Eb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuTmV0d29ya1R5cGU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlJlc29sdXRpb25DaGFuZ2VkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkZvcmVncm91bmQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uQmFja2dyb3VuZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX21ldHJpY3MpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi9UZWxlbWV0cnlEZWZhdWx0JztcblxuZXhwb3J0IGVudW0gVGVsZW1ldHJ5TGV2ZWwge1xuICBPZmYgPSAxMDAsXG4gIEVzc2VudGlhbCA9IDEwLFxuICBBbGwgPSAtMVxufVxuXG5leHBvcnQgdHlwZSBUZWxlbWV0cnlMZXZlbFR5cGUgPSAnT2ZmJyB8ICdFc3NlbnRpYWwnIHwgJ0FsbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NDb25maWd1cmF0aW9uIHtcbiAgcHJpdmF0ZSBfdXJsID0gJ2h0dHBzOi8vdGVsZW1ldHJ5LnBoZW5peHJ0cy5jb20vdGVsZW1ldHJ5L21ldHJpY3MnO1xuICBwcml2YXRlIF90ZW5hbmN5OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3Nlc3Npb25JZDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9lbnZpcm9ubWVudDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF90aHJlc2hvbGQ6IFRlbGVtZXRyeUxldmVsID0gVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWw7XG5cbiAgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl91cmw7XG4gIH1cblxuICBzZXQgdXJsKHVybDogc3RyaW5nKSB7XG4gICAgY29uc3QgbWV0cmljc1VybCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcblxuICAgIG1ldHJpY3NVcmwucGF0aG5hbWUgPSBtZXRyaWNzVXJsLnBhdGhuYW1lICsgJy9tZXRyaWNzJztcblxuICAgIHRoaXMuX3VybCA9IG1ldHJpY3NVcmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldCBlbnZpcm9ubWVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudDtcbiAgfVxuXG4gIHNldCBlbnZpcm9ubWVudChlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIGdldCB0ZW5hbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzZXQgdGVuYW5jeSh0ZW5hbmN5OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVuYW5jeTtcbiAgfVxuXG4gIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbklkO1xuICB9XG5cbiAgc2V0IHNlc3Npb25JZChzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICBzZXQgdGhyZXNob2xkKHRocmVzaG9sZDogVGVsZW1ldHJ5TGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4vTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uLCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBUZWxlbWV0cnlVcmwgZnJvbSAnLi4vc2RrL1RlbGVtZXRyeVVybCc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi4vc2RrL0Vudmlyb25tZW50JztcbmltcG9ydCBUZWxlbWV0cnlMZXZlbE1hcHBpbmcgZnJvbSAnLi9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc0ZhY3Rvcnkge1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc1NlcnZpY2VzOiB7W2NhdGVnb3J5OiBzdHJpbmddOiBNZXRyaWNzU2VydmljZX0gPSB7fTtcblxuICBzdGF0aWMgZ2V0TWV0cmljc1NlcnZpY2UodXJsOiBzdHJpbmcpOiBNZXRyaWNzU2VydmljZSB7XG4gICAgaWYgKHR5cGVvZiB1cmwgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVybCBtdXN0IGJlIGEgc3RyaW5nIGluc3RlYWQgcmVjZWl2ZWQgWyR7dHlwZW9mIHVybH1dYCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljc1NlcnZpY2VzID0gTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlc1t1cmxdO1xuXG4gICAgaWYgKG1ldHJpY3NTZXJ2aWNlcykge1xuICAgICAgcmV0dXJuIG1ldHJpY3NTZXJ2aWNlcztcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNzQ29uZmlndXJhdGlvbiA9IG5ldyBNZXRyaWNzQ29uZmlndXJhdGlvbigpO1xuXG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5ID0gU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsID0gVGVsZW1ldHJ5VXJsLmdldFRlbGVtZXRyeVVybCh1cmwpO1xuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gRW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHVybCk7XG5cbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwoU0RLLnRlbGVtZXRyeUxldmVsKTtcblxuICAgIHJldHVybiBNZXRyaWNzRmFjdG9yeS5fbWV0cmljc1NlcnZpY2VzW3VybF0gPSBuZXcgTWV0cmljc1NlcnZpY2UobWV0cmljc0NvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgc3RhdGljIHNldFRlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsOiBUZWxlbWV0cnlMZXZlbCk6IHZvaWQge1xuICAgIGNvbnN0IG1ldHJpY3NTZXJ2aWNlcyA9IE9iamVjdC52YWx1ZXMoTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlcyk7XG5cbiAgICBpZiAobWV0cmljc1NlcnZpY2VzICYmIG1ldHJpY3NTZXJ2aWNlcy5sZW5ndGgpIHtcbiAgICAgIG1ldHJpY3NTZXJ2aWNlcy5mb3JFYWNoKG1ldHJpY3NTZXJ2aWNlID0+IHtcbiAgICAgICAgY29uc3QgbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBtZXRyaWNzU2VydmljZS5tZXRyaWNzQ29uZmlndXJhdGlvbjtcblxuICAgICAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSB0ZWxlbWV0cnlMZXZlbDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRyaWNzRmFjdG9yeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgRXhwb25lbnRpYWxCYWNrb2ZmIGZyb20gJy4uL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi9zZGsvdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgTWV0cmljVHlwZSBmcm9tICcuL01ldHJpY1R5cGUnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4vTWV0cmljc1R5cGUnO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uIGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5jb25zdCByZXF1ZXN0U2l6ZUxpbWl0ID0gMTAyNDtcbmNvbnN0IG1heEJ1ZmZlcmVkUmVjb3JkcyA9IDIwNDg7XG5cbmludGVyZmFjZSBJVmFsdWUge1xuICBzdHJpbmc/OiBzdHJpbmc7XG4gIHVpbnQ2ND86IG51bWJlcjtcbiAgZmxvYXQ/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBJTWV0cmljUmVjb3JkIHtcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIHRlbmFuY3k6IHN0cmluZztcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHN0cmVhbUlkPzogc3RyaW5nO1xuICBtZXRyaWM6IHN0cmluZztcbiAgdmFsdWU/OiBJVmFsdWU7XG4gIHByZXZpb3VzVmFsdWU/OiBJVmFsdWU7XG4gIGZ1bGxRdWFsaWZpZWROYW1lOiBzdHJpbmc7XG4gIGVudmlyb25tZW50OiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgcnVudGltZTogbnVtYmVyO1xuICByZXNvdXJjZT86IHN0cmluZztcbiAga2luZD86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIElNZXRyaWMge1xuICBzdHJlYW1JZD86IHN0cmluZztcbiAgbWV0cmljVHlwZTogTWV0cmljc1R5cGU7XG4gIHZhbHVlPzogSVZhbHVlO1xuICBwcmV2aW91c1ZhbHVlPzogSVZhbHVlO1xuICBydW50aW1lOiBudW1iZXI7XG4gIHJlc291cmNlPzogc3RyaW5nO1xuICBraW5kPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRyaWNzU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdNZXRyaWNzU2VydmljZScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzQ29uZmlndXJhdGlvbjogTWV0cmljc0NvbmZpZ3VyYXRpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4cG9uZW50aWFsQmFja29mZjogRXhwb25lbnRpYWxCYWNrb2ZmO1xuICBwcml2YXRlIF9tZXRyaWNzOiBBcnJheTxJTWV0cmljUmVjb3JkPiA9IFtdO1xuICBwcml2YXRlIF9pc1NlbmRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZmFpbHVyZUNvdW50ID0gMDtcbiAgcHJpdmF0ZSBfZG9tYWluID0gJyc7XG5cbiAgY29uc3RydWN0b3IobWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBtZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgICB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYgPSBuZXcgRXhwb25lbnRpYWxCYWNrb2ZmKCk7XG4gICAgdGhpcy5nZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCkudGhlbihsb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIHRoaXMuX2RvbWFpbiA9IGxvY2F0aW9uSG9zdG5hbWU7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgbWV0cmljc0NvbmZpZ3VyYXRpb24oKTogTWV0cmljc0NvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHB1c2gobWV0cmljOiBJTWV0cmljKTogdm9pZCB7XG4gICAgY29uc3Qge3N0cmVhbUlkLCB2YWx1ZSwgcHJldmlvdXNWYWx1ZSwgcnVudGltZSwgcmVzb3VyY2UsIGtpbmR9ID0gbWV0cmljO1xuICAgIGNvbnN0IG1ldHJpY1R5cGUgPSBuZXcgTWV0cmljVHlwZShtZXRyaWMubWV0cmljVHlwZSk7XG5cbiAgICBpZiAodGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udGhyZXNob2xkID4gbWV0cmljVHlwZS5nZXRUZWxlbWV0cnlMZXZlbCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljUmVjb3JkID0ge1xuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB0ZW5hbmN5OiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5LFxuICAgICAgc2Vzc2lvbklkOiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5zZXNzaW9uSWQsXG4gICAgICBzdHJlYW1JZCxcbiAgICAgIG1ldHJpYzogbWV0cmljVHlwZS5nZXROYW1lKCksXG4gICAgICB2YWx1ZSxcbiAgICAgIHByZXZpb3VzVmFsdWUsXG4gICAgICBmdWxsUXVhbGlmaWVkTmFtZTogdGhpcy5fZG9tYWluLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50LFxuICAgICAgdmVyc2lvbjogVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbixcbiAgICAgIHJ1bnRpbWUsXG4gICAgICByZXNvdXJjZSxcbiAgICAgIGtpbmRcbiAgICB9O1xuXG4gICAgdGhpcy5fbWV0cmljcy5wdXNoKG1ldHJpY1JlY29yZCk7XG5cbiAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4ocmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUoZ2xvYmFsU2NvcGUubG9jYXRpb25Ib3N0bmFtZSk7XG4gICAgICAgIGdsb2JhbFNjb3BlLnNldFRpbWVvdXQoKCkgPT4gZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpLCAwKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTWV0cmljcyhtZXRyaWNzTWVzc2FnZXM6IEFycmF5PElNZXRyaWNSZWNvcmQ+KTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoe3JlY29yZHM6IG1ldHJpY3NNZXNzYWdlc30pKTtcblxuICAgIHJldHVybiBhd2FpdCBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi51cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGFcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZE1ldHJpY3NJZkFibGUoKTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fbWV0cmljcy5sZW5ndGggPD0gMCB8fCB0aGlzLl9pc1NlbmRpbmcgfHwgIUdsb2JhbFNjb3BlLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faXNTZW5kaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IG1ldHJpY3NNZXNzYWdlcyA9IHRoaXMuX21ldHJpY3Muc2xpY2UoMCwgcmVxdWVzdFNpemVMaW1pdCk7XG5cbiAgICB0aGlzLl9tZXRyaWNzID0gdGhpcy5fbWV0cmljcy5zbGljZShyZXF1ZXN0U2l6ZUxpbWl0KTtcblxuICAgIHJldHVybiB0aGlzLnNlbmRNZXRyaWNzKG1ldHJpY3NNZXNzYWdlcykudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICBpZiAodGhpcy5pc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZShyZXNwb25zZSkpIHtcbiAgICAgICAgaWYgKHRoaXMuX21ldHJpY3MubGVuZ3RoIDw9IG1heEJ1ZmZlcmVkUmVjb3Jkcykge1xuICAgICAgICAgIHRoaXMuX2ZhaWx1cmVDb3VudCsrO1xuXG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9tZXRyaWNzID0gWy4uLm1ldHJpY3NNZXNzYWdlcywgLi4udGhpcy5fbWV0cmljc107XG5cbiAgICAgICAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICAgICAgICAgIH0sIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZi5nZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50KHRoaXMuX2ZhaWx1cmVDb3VudCkpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdUb28gbWFueSBjYWNoZWQgbWV0cmljIHJlY29yZHMgWyVzXSwgZHJvcHBpbmcgWyVzXSByZWNvcmRzJywgdGhpcy5fbWV0cmljcy5sZW5ndGgsIG1ldHJpY3NNZXNzYWdlcy5sZW5ndGgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2ZhaWx1cmVDb3VudCA9IDA7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNSZXNwb25zZVN0YXR1c0NvZGVSZXRyeWFibGUoe3N0YXR1c306IFJlc3BvbnNlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9eNVxcZHsyfSQvLnRlc3Qoc3RhdHVzLnRvU3RyaW5nKCkpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmVudW0gTWV0cmljc1R5cGUge1xuICBUaW1lVG9GaXJzdEZyYW1lLFxuICBDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lLFxuICBTdGFsbGVkLFxuICBCdWZmZXJpbmcsXG4gIFNldHVwQ29tcGxldGVkLFxuICBTZXR1cEZhaWxlZCxcbiAgUm91bmRUcmlwVGltZSxcbiAgRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHksXG4gIE5ldHdvcmtUeXBlLFxuICBSZXNvbHV0aW9uQ2hhbmdlZCxcbiAgQXBwbGljYXRpb25Gb3JlZ3JvdW5kLFxuICBBcHBsaWNhdGlvbkJhY2tncm91bmRcbn1cblxuZXhwb3J0IGRlZmF1bHQgTWV0cmljc1R5cGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWwsIFRlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUxldmVsTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZSh0ZWxlbWV0cnlMZXZlbDogVGVsZW1ldHJ5TGV2ZWwpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHN3aXRjaCAodGVsZW1ldHJ5TGV2ZWwpIHtcbiAgICAgIGNhc2UgVGVsZW1ldHJ5TGV2ZWwuT2ZmOlxuICAgICAgICByZXR1cm4gJ09mZic7XG4gICAgICBjYXNlIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDpcbiAgICAgICAgcmV0dXJuICdFc3NlbnRpYWwnO1xuICAgICAgY2FzZSBUZWxlbWV0cnlMZXZlbC5BbGw6XG4gICAgICAgIHJldHVybiAnQWxsJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRlbGVtZXRyeUxldmVsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWxUeXBlOiBUZWxlbWV0cnlMZXZlbFR5cGUpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgc3dpdGNoICh0ZWxlbWV0cnlMZXZlbFR5cGUpIHtcbiAgICAgIGNhc2UgJ09mZic6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5PZmY7XG4gICAgICBjYXNlICdFc3NlbnRpYWwnOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSAnQWxsJzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRlbGVtZXRyeUxldmVsVHlwZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBCdWlsZEZlYXR1cmVzIGZyb20gJy4uL2Vudmlyb25tZW50L0J1aWxkRmVhdHVyZXMnO1xuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbH0gZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeURlZmF1bHQge1xuICBzdGF0aWMgZ2V0IGRlZmF1bHRUZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsW0J1aWxkRmVhdHVyZXMuc2VuZE1ldHJpY3NdO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG4vLyBOb3RlOiBUaGlzIFByb21pc2UgcG9seWZpbGwgaXMgaW5jbHVkZWQgZm9yIGJyb3dzZXIgYnVpbGRzIG9ubHkgdG8gYWRkcmVzcyBjb21wYXRpYmlsaXR5IGlzc3Vlc1xuLy8gd2l0aCBvbGRlciBicm93c2VycyB3aG9zZSBuYXRpdmUgUHJvbWlzZTxUPmltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgLmZpbmFsbHkuXG5cbmltcG9ydCBQcm9taXNlSGFuZGxlciBmcm9tICcuL1Byb21pc2VIYW5kbGVyJztcblxuY2xhc3MgUHJvbWlzZTxUPiB7XG4gIF9zdGF0ZTogbnVtYmVyO1xuICBfaGFuZGxlZDogYm9vbGVhbjtcbiAgX3ZhbHVlOiBUIHwgdW5rbm93bjtcbiAgX2RlZmVycmVkczogQXJyYXk8UHJvbWlzZUhhbmRsZXI8VD4+O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gIC8vIEB0cy1pZ25vcmVcbiAgdGhlbihvbkZ1bGZpbGxlZDogRnVuY3Rpb24gfCBudWxsLCBvblJlamVjdGVkOiBGdW5jdGlvbiB8IG51bGwpOiBQcm9taXNlPFQ+fCB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBQcm9taXNlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUHJvbWlzZXMgbXVzdCBiZSBjb25zdHJ1Y3RlZCB2aWEgbmV3Jyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbm90IGEgZnVuY3Rpb24nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0ZSA9IDA7XG4gICAgdGhpcy5faGFuZGxlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICB0aGlzLl9kZWZlcnJlZHMgPSBbXTtcblxuICAgIHRoaXMuZG9SZXNvbHZlKGNhbGxiYWNrKTtcbiAgfVxuXG4gIGRvUmVzb2x2ZShjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICBsZXQgZG9uZSA9IGZhbHNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNhbGxiYWNrKFxuICAgICAgICAodmFsdWU6IFByb21pc2U8VD58IG51bGwpID0+IHtcbiAgICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucHJvbWlzZVJlc29sdmUodmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICAocmVhc29uOiBQcm9taXNlPFQ+fCBudWxsKSA9PiB7XG4gICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnByb21pc2VSZWplY3QocmVhc29uKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBkb25lID0gdHJ1ZTtcbiAgICAgIHRoaXMucHJvbWlzZVJlamVjdChlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJvbWlzZVJlc29sdmUobmV3VmFsdWU6IFByb21pc2U8VD58IG51bGwgfCB1bmtub3duKTogdm9pZCB7XG4gICAgY29uc3QgcHJvbWlzZSA9IHRoaXMgYXMgUHJvbWlzZTxUPjtcblxuICAgIHRyeSB7XG4gICAgICAvLyBQcm9taXNlPFQ+UmVzb2x1dGlvbiBQcm9jZWR1cmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9Qcm9taXNlcy1hcGx1cy9Qcm9taXNlcy1zcGVjI3RoZS1Qcm9taXNlLXJlc29sdXRpb24tcHJvY2VkdXJlXG4gICAgICBpZiAobmV3VmFsdWUgPT09IHByb21pc2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQSBQcm9taXNlIGNhbm5vdCBiZSByZXNvbHZlZCB3aXRoIGl0IHNlbGYuJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXdWYWx1ZSAmJiAodHlwZW9mIG5ld1ZhbHVlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgbmV3VmFsdWUgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgICAgIC8vIERpc2FibGluZyBhIFRTIGNvbXBpbGVyIGNoZWNrIGZvciBuZXh0IGxpbmUgdG8gbm90IGRvIGV4dHJhIGlmIHN0YXRlbWVudHNcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IHRoZW4gPSBuZXdWYWx1ZS50aGVuO1xuXG4gICAgICAgIGlmIChuZXdWYWx1ZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICBwcm9taXNlLl9zdGF0ZSA9IDM7XG4gICAgICAgICAgcHJvbWlzZS5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgICBwcm9taXNlLmZpbmFsZSgpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcHJvbWlzZS5kb1Jlc29sdmUoZnVuY3Rpb24oKTogdm9pZCB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXJlc3QtcGFyYW1zXG4gICAgICAgICAgICB0aGVuLmFwcGx5KG5ld1ZhbHVlLCBhcmd1bWVudHMgYXMgdW5rbm93biBhcyBbb25GdWxmaWxsZWQ6IEZ1bmN0aW9uLCBvblJlamVjdGVkOiBGdW5jdGlvbl0pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHByb21pc2UuX3N0YXRlID0gMTtcbiAgICAgIHByb21pc2UuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgICBwcm9taXNlLmZpbmFsZSgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHByb21pc2UucHJvbWlzZVJlamVjdChlKTtcbiAgICB9XG4gIH1cblxuICBwcm9taXNlUmVqZWN0KG5ld1ZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGUgPSAyO1xuICAgIHRoaXMuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5maW5hbGUoKTtcbiAgfVxuXG4gIGZpbmFsZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc3RhdGUgPT09IDIgJiYgdGhpcy5fZGVmZXJyZWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgUHJvbWlzZS5faW1tZWRpYXRlKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLl9oYW5kbGVkKSB7XG4gICAgICAgICAgUHJvbWlzZS5fdW5oYW5kbGVkUmVqZWN0aW9uKHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRoaXMuX2RlZmVycmVkcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgdGhpcy5oYW5kbGUodGhpcy5fZGVmZXJyZWRzW2ldKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kZWZlcnJlZHMgPSBbXTtcbiAgfVxuXG4gIGhhbmRsZShkZWZlcnJlZDogUHJvbWlzZUhhbmRsZXI8VD4pOiB2b2lkIHtcbiAgICBsZXQgcHJvbWlzZSA9IHRoaXMgYXMgUHJvbWlzZTxUPjtcblxuICAgIHdoaWxlIChwcm9taXNlLl9zdGF0ZSA9PT0gMykge1xuICAgICAgcHJvbWlzZSA9IHByb21pc2UuX3ZhbHVlIGFzIFByb21pc2U8VD47XG4gICAgfVxuXG4gICAgaWYgKHByb21pc2UuX3N0YXRlID09PSAwKSB7XG4gICAgICBwcm9taXNlLl9kZWZlcnJlZHMucHVzaChkZWZlcnJlZCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwcm9taXNlLl9oYW5kbGVkID0gdHJ1ZTtcbiAgICBQcm9taXNlLl9pbW1lZGlhdGUoKCkgPT4ge1xuICAgICAgY29uc3QgY2FsbGJhY2sgPSBwcm9taXNlLl9zdGF0ZSA9PT0gMSA/IGRlZmVycmVkLm9uRnVsZmlsbGVkIDogZGVmZXJyZWQub25SZWplY3RlZDtcblxuICAgICAgaWYgKGNhbGxiYWNrID09PSBudWxsKSB7XG4gICAgICAgIGlmIChwcm9taXNlLl9zdGF0ZSA9PT0gMSkge1xuICAgICAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlc29sdmUocHJvbWlzZS5fdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlamVjdChwcm9taXNlLl92YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGxldCByZXN1bHQ7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKHByb21pc2UuX3ZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgZGVmZXJyZWQucHJvbWlzZS5wcm9taXNlUmVqZWN0KGUpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZGVmZXJyZWQucHJvbWlzZS5wcm9taXNlUmVzb2x2ZShyZXN1bHQpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFsbChhcnI6IEFycmF5PFByb21pc2U8dW5rbm93bj4+KTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgVHlwZUVycm9yKCdQcm9taXNlLmFsbCBhY2NlcHRzIGFuIGFycmF5JykpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKTtcblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKFtdKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHJlbWFpbmluZyA9IGFyZ3MubGVuZ3RoO1xuICAgICAgY29uc3QgbWFuYWdlUmVzcG9uc2UgPSAoaTogbnVtYmVyLCB2YWx1ZTogUHJvbWlzZTx1bmtub3duPik6IHZvaWQgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmICh2YWx1ZSAmJiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgICAgICAgICBjb25zdCB0aGVuID0gdmFsdWUudGhlbjtcblxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIHRoZW4uY2FsbChcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAodmFsdWU6IFByb21pc2U8dW5rbm93bj4pID0+IG1hbmFnZVJlc3BvbnNlKGksIHZhbHVlKSxcbiAgICAgICAgICAgICAgICByZWplY3RcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYXJnc1tpXSA9IHZhbHVlO1xuXG4gICAgICAgICAgaWYgKC0tcmVtYWluaW5nID09PSAwKSB7XG4gICAgICAgICAgICByZXNvbHZlKGFyZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbWFuYWdlUmVzcG9uc2UoaSwgYXJnc1tpXSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcmVzb2x2ZSh2YWx1ZTogdW5rbm93bik6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlLmNvbnN0cnVjdG9yID09PSBQcm9taXNlKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbikgPT4gcmVzb2x2ZSh2YWx1ZSkpO1xuICB9XG5cbiAgc3RhdGljIHJlamVjdCh2YWx1ZTogdW5rbm93bik6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgoXzogdW5kZWZpbmVkLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiByZWplY3QodmFsdWUpKTtcbiAgfVxuXG4gIHN0YXRpYyByYWNlKGFycjogQXJyYXk8UHJvbWlzZTx1bmtub3duPj4pOiBQcm9taXNlPHVua25vd24+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ1Byb21pc2UucmFjZSBhY2NlcHRzIGFuIGFycmF5JykpO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gYXJyLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZShhcnJbaV0pLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBfaW1tZWRpYXRlKGNhbGxiYWNrOiBGdW5jdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGlnbm9yZWQgPSB3aW5kb3cuc2V0VGltZW91dChjYWxsYmFjaywgMCk7XG4gIH1cblxuICBzdGF0aWMgX3VuaGFuZGxlZFJlamVjdGlvbihlcnJvcjogUHJvbWlzZTx1bmtub3duPnwgbnVsbCB8IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIGNvbnNvbGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignUG9zc2libGUgVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOicsIGVycm9yKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59XG5cbi8vIERpc2FibGluZyBhIFRTIGNvbXBpbGVyIGNoZWNrIGZvciB1bnN1cHBvcnRlZCBwcm90b3R5cGUgY2hhbmdlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtaWdub3JlXG5Qcm9taXNlLnByb3RvdHlwZVsnY2F0Y2gnXSA9IGZ1bmN0aW9uKG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uKTogdW5rbm93biB7XG4gIHJldHVybiB0aGlzLnRoZW4obnVsbCwgb25SZWplY3RlZCk7XG59O1xuLy8gRGlzYWJsaW5nIGEgVFMgY29tcGlsZXIgY2hlY2sgZm9yIHVuc3VwcG9ydGVkIHByb3RvdHlwZSBjaGFuZ2Vcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1pZ25vcmVcblByb21pc2UucHJvdG90eXBlWyd0aGVuJ10gPSBmdW5jdGlvbihvbkZ1bGZpbGxlZDogRnVuY3Rpb24sIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uKTogUHJvbWlzZTx1bmtub3duPnwgdm9pZCB7XG4gIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgoKTogbnVsbCA9PiBudWxsKTtcblxuICB0aGlzLmhhbmRsZShuZXcgUHJvbWlzZUhhbmRsZXI8dW5rbm93bj4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQsIHByb21pc2UpKTtcblxuICByZXR1cm4gcHJvbWlzZTtcbn07XG4vLyBEaXNhYmxpbmcgYSBUUyBjb21waWxlciBjaGVjayBmb3IgdW5zdXBwb3J0ZWQgcHJvdG90eXBlIGNoYW5nZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLWlnbm9yZVxuUHJvbWlzZS5wcm90b3R5cGVbJ2ZpbmFsbHknXSA9IGZ1bmN0aW9uKGNhbGxiYWNrOiBGdW5jdGlvbik6IFByb21pc2U8dW5rbm93bj58IHZvaWQge1xuICByZXR1cm4gdGhpcy50aGVuKFxuICAgICh2YWx1ZTogUHJvbWlzZTx1bmtub3duPnwgdW5kZWZpbmVkKSA9PiBQcm9taXNlLnJlc29sdmUoY2FsbGJhY2soKSkudGhlbigoKSA9PiB2YWx1ZSwgKCk6IG51bGwgPT4gbnVsbCksXG4gICAgKHJlYXNvbjogRXJyb3IgfCBzdHJpbmcpID0+IFByb21pc2UucmVzb2x2ZShjYWxsYmFjaygpKS50aGVuKCgpID0+IFByb21pc2UucmVqZWN0KHJlYXNvbiksICgpOiBudWxsID0+IG51bGwpXG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBQcm9taXNlOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgUHJvbWlzZSBmcm9tICcuL1Byb21pc2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcm9taXNlSGFuZGxlcjxUPiB7XG4gIG9uRnVsZmlsbGVkOiBGdW5jdGlvbiB8IG51bGw7XG4gIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uIHwgbnVsbDtcbiAgcHJvbWlzZTogUHJvbWlzZTxUPjtcblxuICBjb25zdHJ1Y3RvcihvbkZ1bGZpbGxlZDogRnVuY3Rpb24sIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uLCBwcm9taXNlOiBQcm9taXNlPFQ+KSB7XG4gICAgdGhpcy5vbkZ1bGZpbGxlZCA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogbnVsbDtcbiAgICB0aGlzLm9uUmVqZWN0ZWQgPSB0eXBlb2Ygb25SZWplY3RlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uUmVqZWN0ZWQgOiBudWxsO1xuICAgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0IHtcbiAgYXVkaW9UcmFuc2NlaXZlcnM/OiBSVENSdHBUcmFuc2NlaXZlcltdO1xuICB2aWRlb1RyYW5zY2VpdmVycz86IFJUQ1J0cFRyYW5zY2VpdmVyW107XG4gIHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb247XG4gIGxvY2FsT2ZmZXI6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG59XG5cbmV4cG9ydCBlbnVtIEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyB7XG4gIERpc2FibGVkLFxuICBFbmFibGVkXG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VHJhY2tLaW5kczogKCdhdWRpbycgfCAndmlkZW8nKVtdID0gWydhdWRpbycsICd2aWRlbyddO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQZWVyQ29ubmVjdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1BlZXJDb25uZWN0aW9uU2VydmljZScpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcGVlckNvbm5lY3Rpb25GYWN0b3J5OiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+ID0gbmV3IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4obmV3IFZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkoKSk7XG4gIHByaXZhdGUgc3RhdGljIF9jYWNoZWQ6IHtcbiAgICBkaXJlY3Rpb24/OiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjtcbiAgICBwZWVyQ29ubmVjdGlvbjogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb25PZmZlckluaXQ+O1xuICB9IHwgbnVsbDtcblxuICBzdGF0aWMgZ2V0IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpOiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+IHtcbiAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9wZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIH1cblxuICBzdGF0aWMgaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZygpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNQcmVjYWNoaW5nRW5hYmxlZCkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IFBlZXJDb25uZWN0aW9uU2VydmljZS5wcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKVxuICAgICAgICAuY2F0Y2goZSA9PiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHByZS1jYWNoZSBwZWVyIGNvbm5lY3Rpb24gb2ZmZXInLCBlKSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGFzeW5jIHByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpOiBQcm9taXNlPHsgcGVlckNvbm5lY3Rpb246IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0IHwgdm9pZD47IGRpcmVjdGlvbjogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gfT4ge1xuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IHtcbiAgICAgIGRpcmVjdGlvbjogJ3JlY3Zvbmx5JyxcbiAgICAgIHBlZXJDb25uZWN0aW9uOiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IG51bGw7XG5cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9KVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcihkaXJlY3Rpb246IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uID0gJ3JlY3Zvbmx5JywgdHJhY2tLaW5kcyA9IGRlZmF1bHRUcmFja0tpbmRzLCBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5EaXNhYmxlZCk6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0PiB7XG4gICAgaWYgKFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkICYmIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkLmRpcmVjdGlvbiA9PT0gZGlyZWN0aW9uICYmIGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9PT0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkRpc2FibGVkICYmIHRoaXMuaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQodHJhY2tLaW5kcykpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQucGVlckNvbm5lY3Rpb247XG5cbiAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkID0gbnVsbDtcblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQgPSBGZWF0dXJlRW5hYmxlbWVudC5pc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCA/IHtlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9PT0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkVuYWJsZWR9IDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU2VydmljZS5fcGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlLmNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pXG4gICAgICAudGhlbihhc3luYyBwZWVyQ29ubmVjdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IHN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIgPSBwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0FkZFRyYW5zY2VpdmVyO1xuICAgICAgICBjb25zdCBhdWRpb1RyYW5zY2VpdmVyczogUlRDUnRwVHJhbnNjZWl2ZXJbXSA9IFtdO1xuICAgICAgICBjb25zdCB2aWRlb1RyYW5zY2VpdmVyczogUlRDUnRwVHJhbnNjZWl2ZXJbXSA9IFtdO1xuXG4gICAgICAgIGlmIChzdXBwb3J0c0FkZFRyYW5zY2VpdmVyKSB7XG4gICAgICAgICAgdHJhY2tLaW5kcy5mb3JFYWNoKGtpbmQgPT4ge1xuICAgICAgICAgICAgaWYgKGtpbmQgPT09ICdhdWRpbycpIHtcbiAgICAgICAgICAgICAgYXVkaW9UcmFuc2NlaXZlcnMucHVzaChwZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihraW5kLCB7ZGlyZWN0aW9ufSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGtpbmQgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICAgICAgdmlkZW9UcmFuc2NlaXZlcnMucHVzaChwZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihraW5kLCB7ZGlyZWN0aW9ufSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhdWRpb1RyYW5zY2VpdmVycyxcbiAgICAgICAgICAgIHZpZGVvVHJhbnNjZWl2ZXJzLFxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb246IHBlZXJDb25uZWN0aW9uLFxuICAgICAgICAgICAgbG9jYWxPZmZlcjogYXdhaXQgcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIodW5kZWZpbmVkKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25zID0gZGlyZWN0aW9uID09PSAncmVjdm9ubHknID8ge1xuICAgICAgICAgIG9mZmVyVG9SZWNlaXZlQXVkaW86IHRydWUsXG4gICAgICAgICAgb2ZmZXJUb1JlY2VpdmVWaWRlbzogdHJ1ZVxuICAgICAgICB9IDoge307XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbjogcGVlckNvbm5lY3Rpb24sXG4gICAgICAgICAgbG9jYWxPZmZlcjogYXdhaXQgcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIob3B0aW9ucylcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQodHJhY2tzS2luZHM6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSk6IGJvb2xlYW4ge1xuICAgIGlmICh0cmFja3NLaW5kcy5sZW5ndGggIT09IGRlZmF1bHRUcmFja0tpbmRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvdW50VHJhY2tLaW5kcyA9IChhcnJheTogKCdhdWRpbycgfCAndmlkZW8nKVtdKSA9PiBhcnJheS5yZWR1Y2UoKHRyYWNrS2luZENvdW50LCBraW5kKSA9PiB7XG4gICAgICB0cmFja0tpbmRDb3VudFtraW5kXSA9ICh0cmFja0tpbmRDb3VudFtraW5kXSB8fCAwKSArIDE7XG5cbiAgICAgIHJldHVybiB0cmFja0tpbmRDb3VudDtcbiAgICB9LCB7XG4gICAgICBhdWRpbzogMCxcbiAgICAgIHZpZGVvOiAwXG4gICAgfSk7XG4gICAgY29uc3QgY291bnRlZFRyYWNrS2luZHMgPSBjb3VudFRyYWNrS2luZHModHJhY2tzS2luZHMpO1xuICAgIGNvbnN0IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcyA9IGNvdW50VHJhY2tLaW5kcyhkZWZhdWx0VHJhY2tLaW5kcyk7XG5cbiAgICByZXR1cm4gY291bnRlZFRyYWNrS2luZHMuYXVkaW8gPT09IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcy5hdWRpbyAmJiBjb3VudGVkVHJhY2tLaW5kcy52aWRlbyA9PT0gY291bnRlZERlZmF1bHRUcmFja0tpbmRzLnZpZGVvO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BlZXJDb25uZWN0aW9uU2VydmljZSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmcoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIge1xuICBzdGF0aWMgdHJ1bmNhdGVJY2VTZXJ2ZXJzKGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCBpY2VTZXJ2ZXJzOiBSVENJY2VTZXJ2ZXJbXSA9IFtdO1xuXG4gICAgaWYgKCFjb25maWd1cmF0aW9uLmljZVNlcnZlcnMpIHtcbiAgICAgIHJldHVybiBjb25maWd1cmF0aW9uO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCB1cmxzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgMjsgaW5kZXgrKykge1xuICAgICAgICBjb25zdCB1cmwgPSBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXJsc1tpbmRleF07XG5cbiAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgIHVybHMucHVzaChjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXJsc1tpbmRleF0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGljZVNlcnZlcnMucHVzaCh7XG4gICAgICAgIHVybHM6IHVybHMsXG4gICAgICAgIHVzZXJuYW1lOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXNlcm5hbWUsXG4gICAgICAgIGNyZWRlbnRpYWw6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS5jcmVkZW50aWFsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25maWd1cmF0aW9uLmljZVNlcnZlcnMgPSBpY2VTZXJ2ZXJzO1xuXG4gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBTZHBQYXJzZXIgZnJvbSAnLi9TZHBQYXJzZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSdGNNb25pdG9yU3RhdGlzdGljIHtcbiAgW2tpbmQ6IHN0cmluZ106IElSdGNTdGF0aXN0aWM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0IHtcbiAgcmVzdWx0OiAoKSA9PiBJTGVnYWN5UlRDU3RhdHNSZXBvcnRJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0SXRlbSBleHRlbmRzIFJUQ1N0YXRzUmVwb3J0IHtcbiAgdHlwZTogc3RyaW5nO1xuICBuYW1lczogKCkgPT4gc3RyaW5nW107XG4gIHN0YXQ6IChuYW1lOiBzdHJpbmcpID0+IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUnRjU3RhdGlzdGljIHtcbiAgc3NyYz86IHN0cmluZztcbiAgbWVkaWFUeXBlPzogc3RyaW5nO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgYml0cmF0ZT86IG51bWJlcjtcbiAgYnl0ZXNSZWNlaXZlZD86IG51bWJlcjtcbiAgZnJhbWVzRGVjb2RlZD86IG51bWJlcjtcbiAgcGFja2V0c0xvc3Q/OiBudW1iZXI7XG4gIHBhY2tldHNSZWNlaXZlZD86IG51bWJlcjtcbiAgY29kZWM/OiBzdHJpbmc7XG4gIGZwcz86IG51bWJlcjtcbiAgcm91bmRUcmlwVGltZT86IG51bWJlcjtcbiAgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wPzogbnVtYmVyO1xufVxuXG5jb25zdCB1cGRhdGVTdGF0aXN0aWNUaW1lb3V0ID0gMTAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnRjQ29ubmVjdGlvbk1vbml0b3IgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZFJvdW5kVHJpcFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkVmlkZW9Db2RlYzogc3RyaW5nID0gJ3Vua25vd24nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRBdWRpb0NvZGVjOiBzdHJpbmcgPSAndW5rbm93bic7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J0Y1N0YXRpc3RpYzogU3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+ID0gbmV3IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPih7fSk7XG4gIHByaXZhdGUgX3BlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24gfCBudWxsO1xuICBwcml2YXRlIF9pc01vbml0b3JSdW5uaW5nID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfdXBkYXRlVGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3RyYWNrc1RvTW9uaXRvcjogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IocGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiwgbWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtLCBlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IHBlZXJDb25uZWN0aW9uO1xuICAgIHRoaXMuX2VzdGltYXRlZFJvdW5kVHJpcFRpbWUgPSBlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lO1xuICAgIHRoaXMuX3RyYWNrc1RvTW9uaXRvciA9IG1lZGlhU3RyZWFtLmdldFRyYWNrcygpLm1hcCh0cmFjayA9PiB0cmFjay5raW5kKSB8fCBbXTtcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgaWYgKCFGZWF0dXJlRW5hYmxlbWVudC5nZXRDdXJyZW50T2ZmZXJEaXNhYmxlZCAmJiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uPy5zZHApIHtcbiAgICAgICAgY29uc3QgcGFyc2VkU0RQID0gbmV3IFNkcFBhcnNlcih0aGlzLl9wZWVyQ29ubmVjdGlvbi5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICB0aGlzLl9lc3RpbWF0ZWRBdWRpb0NvZGVjID0gcGFyc2VkU0RQLmF1ZGlvQ29kZWM7XG4gICAgICAgIHRoaXMuX2VzdGltYXRlZFZpZGVvQ29kZWMgPSBwYXJzZWRTRFAudmlkZW9Db2RlYztcbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGVTdGF0aXN0aWMoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcnRjU3RhdGlzdGljKCk6IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3J0Y1N0YXRpc3RpYztcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5faXNNb25pdG9yUnVubmluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbnVsbDtcblxuICAgIGlmICh0aGlzLl91cGRhdGVUaW1lb3V0KSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGhpcy5fdXBkYXRlVGltZW91dCk7XG4gICAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVN0YXRpc3RpYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IGF3YWl0IHRoaXMudXBkYXRlU3RhdGlzdGljTGVnYWN5KCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTYWZhcmkgMTEgZG9lc250IGhhdmUga2luZCBvciBtZWRpYVR5cGUgc28gd2UgbmVlZCB0byB0YWtlIGl0IGZyb20gdGhlIGluYm91bmQtcnRwIG9iamVjdCBpZFxuICAgIGNvbnN0IGdldEtpbmRGb3JTYWZhcmkxMSA9IChpdGVtOiB7aWQ6IHN0cmluZ30pOiBzdHJpbmcgPT4gaXRlbS5pZC5pbmNsdWRlcygnQXVkaW8nKSA/ICdhdWRpbycgOiBpdGVtLmlkLmluY2x1ZGVzKCdWaWRlbycpID8gJ3ZpZGVvJyA6ICcnO1xuICAgIGNvbnN0IGlnbm9yZWQgPSBhd2FpdCB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0U3RhdHMobnVsbClcbiAgICAgIC50aGVuKHN0YXRzID0+IHtcbiAgICAgICAgY29uc3QgcnRjU3RhdGlzdGljczogSVJ0Y01vbml0b3JTdGF0aXN0aWMgPSB7fTtcblxuICAgICAgICBpZiAoc3RhdHMpIHtcbiAgICAgICAgICBsZXQgcm91bmRUcmlwVGltZSA9IHRoaXMuX2VzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgbGV0IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgICAgc3RhdHMuZm9yRWFjaChyZXBvcnQgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5jdXJyZW50Um91bmRUcmlwVGltZSkge1xuICAgICAgICAgICAgICByb3VuZFRyaXBUaW1lID0gcmVwb3J0LmN1cnJlbnRSb3VuZFRyaXBUaW1lICogMTAwMDtcblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1sndmlkZW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wID0gcmVwb3J0Lmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDtcblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wID0gbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10pIHtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWyd2aWRlbyddLmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCA9IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdpbmJvdW5kLXJ0cCcpIHtcbiAgICAgICAgICAgICAgY29uc3Qga2luZCA9IHJlcG9ydC5raW5kIHx8IHJlcG9ydC5tZWRpYVR5cGUgfHwgZ2V0S2luZEZvclNhZmFyaTExKHJlcG9ydCk7XG4gICAgICAgICAgICAgIGxldCBjb2RlYyA9ICcnO1xuXG4gICAgICAgICAgICAgIHN0YXRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IHJlcG9ydC5jb2RlY0lkKSB7XG4gICAgICAgICAgICAgICAgICBjb2RlYyA9IGl0ZW0ubWltZVR5cGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBpZiAoa2luZCAmJiB0aGlzLl90cmFja3NUb01vbml0b3IuaW5jbHVkZXMoa2luZCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBieXRlcyA9IHJlcG9ydC5ieXRlc1JlY2VpdmVkIHx8IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNCeXRlc1JlY2VpdmVkID0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy5ba2luZF0/LmJ5dGVzUmVjZWl2ZWQgPz8gMDtcbiAgICAgICAgICAgICAgICBjb25zdCBieXRlc0RlbHRhID0gYnl0ZXMgLSBwcmV2aW91c0J5dGVzUmVjZWl2ZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgdGltZURlbHRhID0gcmVwb3J0LnRpbWVzdGFtcCAtICh0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWU/LltraW5kXT8udGltZXN0YW1wIHx8IDApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJpdHJhdGUgPSBieXRlc0RlbHRhICYmIHRpbWVEZWx0YSA/IE1hdGguZmxvb3IoOCAqIGJ5dGVzRGVsdGEgL1xuICAgICAgICAgICAgICAgICAgdGltZURlbHRhICogMTAwMCkgOiAwO1xuXG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXSA9IHtcbiAgICAgICAgICAgICAgICAgIHNzcmM6IHJlcG9ydC5zc3JjLFxuICAgICAgICAgICAgICAgICAgbWVkaWFUeXBlOiBraW5kLFxuICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOiByZXBvcnQudGltZXN0YW1wLFxuICAgICAgICAgICAgICAgICAgYml0cmF0ZSxcbiAgICAgICAgICAgICAgICAgIGJ5dGVzUmVjZWl2ZWQ6IHJlcG9ydC5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgcGFja2V0c0xvc3Q6IHJlcG9ydC5wYWNrZXRzTG9zdCxcbiAgICAgICAgICAgICAgICAgIHBhY2tldHNSZWNlaXZlZDogcmVwb3J0LnBhY2tldHNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgIGNvZGVjOiBjb2RlYyB8fCB0aGlzLmdldENvZGVjQnlUeXBlKGtpbmQpLFxuICAgICAgICAgICAgICAgICAgcm91bmRUcmlwVGltZVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAocmVwb3J0Lmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF0ubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wID0gcmVwb3J0Lmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGtpbmQgPT09ICd2aWRlbycgJiYgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy52aWRlbz8uZnJhbWVzRGVjb2RlZCkge1xuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnJhbWVzRGVjb2RlZCddID0gcmVwb3J0LmZyYW1lc0RlY29kZWQ7XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZwcyA9IChyZXBvcnQuZnJhbWVzRGVjb2RlZCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby5mcmFtZXNEZWNvZGVkKSAvXG4gICAgICAgICAgICAgICAgICAgIChydGNTdGF0aXN0aWNzW2tpbmRdLnRpbWVzdGFtcCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby50aW1lc3RhbXApICpcbiAgICAgICAgICAgICAgICAgICAgMTAwMDtcblxuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnBzJ10gPSBmcHMgPyBNYXRoLnJvdW5kKGZwcyAqIDEwMCkgLyAxMDAgOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlID0gcnRjU3RhdGlzdGljcztcbiAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlU3RhdGlzdGljKCksIHVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlU3RhdGlzdGljTGVnYWN5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGlnbm9yZWQgPSBhd2FpdCB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0U3RhdHNMZWdhY3koKS50aGVuKHN0YXRzID0+IHtcbiAgICAgIGNvbnN0IHJ0Y1N0YXRpc3RpY3M6IElSdGNNb25pdG9yU3RhdGlzdGljID0ge307XG4gICAgICBsZXQgcm91bmRUcmlwVGltZSA9IHRoaXMuX2VzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG5cbiAgICAgIHN0YXRzLnJlc3VsdCgpLmZvckVhY2gocmVwb3J0ID0+IHtcbiAgICAgICAgcmVwb3J0Lm5hbWVzKCkuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICBpZiAobmFtZSA9PT0gJ2dvb2dSVFQnKSB7XG4gICAgICAgICAgICByb3VuZFRyaXBUaW1lID0gcmVwb3J0LnN0YXQobmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdzc3JjJykge1xuICAgICAgICAgIGNvbnN0IG1lZGlhVHlwZSA9IHJlcG9ydC5zdGF0KCdtZWRpYVR5cGUnKS50b1N0cmluZygpO1xuXG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdID0ge3RpbWVzdGFtcDogRGF0ZS5ub3coKX07XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydzc3JjJ10gPSByZXBvcnQuc3RhdCgnc3NyYycpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydtZWRpYVR5cGUnXSA9IG1lZGlhVHlwZTtcbiAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ2J5dGVzUmVjZWl2ZWQnXSA9IHJlcG9ydC5zdGF0KCdieXRlc1JlY2VpdmVkJyk7XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydwYWNrZXRzTG9zdCddID0gcmVwb3J0LnN0YXQoJ3BhY2tldHNMb3N0Jyk7XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydwYWNrZXRzUmVjZWl2ZWQnXSA9IHJlcG9ydC5zdGF0KCdwYWNrZXRzUmVjZWl2ZWQnKTtcbiAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ2NvZGVjJ10gPSByZXBvcnQuc3RhdCgnZ29vZ0NvZGVjTmFtZScpLnRvU3RyaW5nKCkgfHwgdGhpcy5nZXRDb2RlY0J5VHlwZShtZWRpYVR5cGUpO1xuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsncm91bmRUcmlwVGltZSddID0gcm91bmRUcmlwVGltZTtcblxuICAgICAgICAgIGlmIChtZWRpYVR5cGUgPT09ICd2aWRlbycgJiYgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy52aWRlbz8uZnJhbWVzRGVjb2RlZCkge1xuICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydmcmFtZXNEZWNvZGVkJ10gPSByZXBvcnQuc3RhdCgnZnJhbWVzRGVjb2RlZCcpO1xuICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydmcHMnXSA9IChydGNTdGF0aXN0aWNzW21lZGlhVHlwZV0uZnJhbWVzRGVjb2RlZCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby5mcmFtZXNEZWNvZGVkKSAvXG4gICAgICAgICAgICAgIChydGNTdGF0aXN0aWNzW21lZGlhVHlwZV0udGltZXN0YW1wIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvLnRpbWVzdGFtcCkgKlxuICAgICAgICAgICAgMTAwMCB8fCAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUgPSBydGNTdGF0aXN0aWNzO1xuICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcpIHtcbiAgICAgICAgdGhpcy5fdXBkYXRlVGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gdGhpcy51cGRhdGVTdGF0aXN0aWMoKSwgdXBkYXRlU3RhdGlzdGljVGltZW91dCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldENvZGVjQnlUeXBlKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdhdWRpbyc6XG4gICAgICAgIHJldHVybiB0aGlzLl9lc3RpbWF0ZWRBdWRpb0NvZGVjIHx8ICd1bmtub3duJztcbiAgICAgIGNhc2UgJ3ZpZGVvJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VzdGltYXRlZFZpZGVvQ29kZWMgfHwgJ3Vua25vd24nO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICd1bmtub3duJztcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2RwUGFyc2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2RwOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2F1ZGlvQ29kZWM6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlkZW9Db2RlYzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0F1ZGlvVHJhY2tFbmFibGVkOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc1ZpZGVvVHJhY2tFbmFibGVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHNkcDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2RwID0gc2RwO1xuXG4gICAgY29uc3Qgc2RwU3BsaXRCeUxpbmVzID0gdGhpcy5fc2RwLnNwbGl0KC8oXFxyXFxufFxccnxcXG4pLyk7XG4gICAgY29uc3Qgc2RwU3BsaXRCeVRyYWNrcyA9IHRoaXMuX3NkcC5zcGxpdCgvKD86XnxbXFxyXFxuXSltPS8pO1xuXG4gICAgdGhpcy5fYXVkaW9Db2RlYyA9IHRoaXMuYXBwbHlDb2RlYygnYXVkaW8nLCBzZHBTcGxpdEJ5TGluZXMpO1xuICAgIHRoaXMuX3ZpZGVvQ29kZWMgPSB0aGlzLmFwcGx5Q29kZWMoJ3ZpZGVvJywgc2RwU3BsaXRCeUxpbmVzKTtcbiAgICB0aGlzLl9pc0F1ZGlvVHJhY2tFbmFibGVkID0gdGhpcy5pc1RyYWNrQnlUeXBlRW5hYmxlZCgnYXVkaW8nLCBzZHBTcGxpdEJ5VHJhY2tzKTtcbiAgICB0aGlzLl9pc1ZpZGVvVHJhY2tFbmFibGVkID0gdGhpcy5pc1RyYWNrQnlUeXBlRW5hYmxlZCgndmlkZW8nLCBzZHBTcGxpdEJ5VHJhY2tzKTtcbiAgfVxuXG4gIGdldCBhdWRpb0NvZGVjKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2F1ZGlvQ29kZWM7XG4gIH1cblxuICBnZXQgdmlkZW9Db2RlYygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl92aWRlb0NvZGVjO1xuICB9XG5cbiAgZ2V0IGlzQXVkaW9UcmFja0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzQXVkaW9UcmFja0VuYWJsZWQ7XG4gIH1cblxuICBnZXQgaXNWaWRlb1RyYWNrRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNWaWRlb1RyYWNrRW5hYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgaXNUcmFja0J5VHlwZUVuYWJsZWQodHlwZTogc3RyaW5nLCBzZHBTcGxpdEJ5VHJhY2tzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNkcFNlY3Rpb25Gb3JUeXBlID0gc2RwU3BsaXRCeVRyYWNrcy5maW5kKHNkcFRyYWNrID0+IHNkcFRyYWNrLnN0YXJ0c1dpdGgodHlwZSkpO1xuXG4gICAgaWYgKCFzZHBTZWN0aW9uRm9yVHlwZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiAhc2RwU2VjdGlvbkZvclR5cGUuaW5jbHVkZXMoYGE9aW5hY3RpdmVgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlDb2RlYyh0eXBlOiBzdHJpbmcsIHNkcFNwbGl0QnlMaW5lczogc3RyaW5nIFtdKTogc3RyaW5nIHtcbiAgICBjb25zdCBydG1hcCA9IHNkcFNwbGl0QnlMaW5lcy5maW5kKHNkcExpbmUgPT4gc2RwTGluZS5pbmNsdWRlcyhgbT0ke3R5cGV9YCkpPy5zcGxpdCgnICcpWzNdIHx8ICcnO1xuICAgIGNvbnN0IHVzZWRDb2RlY0xpbmUgPSBzZHBTcGxpdEJ5TGluZXMuZmluZChzZHBMaW5lID0+IHNkcExpbmUuaW5jbHVkZXMoYGE9cnRwbWFwOiR7cnRtYXB9YCkpO1xuICAgIGNvbnN0IHVzZWRDb2RlYyA9IHVzZWRDb2RlY0xpbmU/LnNwbGl0KCcgJylbMV0gfHwgJyc7XG4gICAgY29uc3QgY29kZWNOYW1lID0gdXNlZENvZGVjLnNwbGl0KCcvJylbMF07XG5cbiAgICByZXR1cm4gY29kZWNOYW1lO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCB7SUxlZ2FjeVJUQ1N0YXRzUmVwb3J0fSBmcm9tICcuL1J0Y0Nvbm5lY3Rpb25Nb25pdG9yJztcblxuY2xhc3MgVmFuaWxsYVBlZXJDb25uZWN0aW9uIGltcGxlbWVudHMgSVBlZXJDb25uZWN0aW9uIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1ZhbmlsbGFQZWVyQ29ubmVjdGlvbicpO1xuICBwcml2YXRlIF9wZWVyQ29ubmVjdGlvbjogUlRDUGVlckNvbm5lY3Rpb24gfCBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uKSB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCkge1xuICAgICAgLy8gSWdub3JlZCBhcyBsZWdhY3kgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24gY2xhc3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gVGhpcyB3YXMgYSBDaHJvbWUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25cbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlJUQ1BlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgZ2V0IG5hdGl2ZSgpOiBSVENQZWVyQ29ubmVjdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbigpOiBSVENTZXNzaW9uRGVzY3JpcHRpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uIHx8IG51bGw7XG4gIH1cblxuICBnZXQgY3VycmVudFJlbW90ZURlc2NyaXB0aW9uKCk6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uIHx8IG51bGw7XG4gIH1cblxuICBnZXQgY29ubmVjdGlvblN0YXRlKCk6IFJUQ1BlZXJDb25uZWN0aW9uU3RhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmNvbm5lY3Rpb25TdGF0ZSB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IGljZUNvbm5lY3Rpb25TdGF0ZSgpOiBSVENJY2VDb25uZWN0aW9uU3RhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmljZUNvbm5lY3Rpb25TdGF0ZSB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5nZXRDb25maWd1cmF0aW9uID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5zZXRDb25maWd1cmF0aW9uID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzR2V0VHJhbnNjZWl2ZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhRmVhdHVyZUVuYWJsZW1lbnQuZ2V0VHJhbnNjZWl2ZXJzRGlzYWJsZWQgJiYgdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5nZXRUcmFuc2NlaXZlcnMgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNBZGRUcmFuc2NlaXZlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIUZlYXR1cmVFbmFibGVtZW50LmFkZFRyYW5jZWl2ZXJEaXNhYmxlZCAmJiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmFkZFRyYW5zY2VpdmVyID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlT2ZmZXIob3B0aW9ucz86IFJUQ09mZmVyT3B0aW9ucyk6IFByb21pc2U8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IGNyZWF0ZU9mZmVyIG1ldGhvZCB3aXRoIGNhbGxiYWNrcyBpcyBkZXByZWNhdGVkXG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHJlc29sdmUsIHJlamVjdCwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcihvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUFuc3dlcihvcHRpb25zPzogUlRDQW5zd2VyT3B0aW9ucyk6IFByb21pc2U8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IGNyZWF0ZUFuc3dlciBtZXRob2Qgd2l0aCBjYWxsYmFja3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIocmVzb2x2ZSwgcmVqZWN0LCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcihvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIHNldExvY2FsRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQgP1xuICAgICAgbmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbihkZXNjcmlwdGlvbikgOiBkZXNjcmlwdGlvbik7XG4gIH1cblxuICBhc3luYyBzZXRSZW1vdGVEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNDcnlwdG8gPSBkZXNjcmlwdGlvbi5zZHA/Lm1hdGNoKC9hPWNyeXB0bzovaSk7XG5cbiAgICBpZiAoaGFzQ3J5cHRvKSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignU0RQIGE9Y3J5cHRvIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQgP1xuICAgICAgbmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbihkZXNjcmlwdGlvbikgOiBkZXNjcmlwdGlvbik7XG4gIH1cblxuICBnZXRTZW5kZXJzKCk6IFJUQ1J0cFNlbmRlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFNlbmRlcnMoKTtcbiAgfVxuXG4gIGdldFJlY2VpdmVycygpOiBSVENSdHBSZWNlaXZlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFJlY2VpdmVycygpO1xuICB9XG5cbiAgZ2V0U3RhdHMoc2VsZWN0b3I/OiBNZWRpYVN0cmVhbVRyYWNrIHwgbnVsbCk6IFByb21pc2U8UlRDU3RhdHNSZXBvcnQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFN0YXRzKHNlbGVjdG9yKTtcbiAgfVxuXG4gIGdldFN0YXRzTGVnYWN5KCk6IFByb21pc2U8SUxlZ2FjeVJUQ1N0YXRzUmVwb3J0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIC8vIElnbm9yZWQgZHVlIHRvIHR5cGVzY3JpcHQgbm90IGhhdmluZyBsZWdhY3kgJ2dldFN0YXRzJyBtZXRob2QgdHlwZSBkZWZpbml0aW9uXG4gICAgICAvLyBUaGlzIHdhcyBhIENocm9tZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgJ2dldFN0YXRzJyBtZXRob2QgZm9yXG4gICAgICAvLyBDaHJvbWVAPD0gNjYgZGV0YWlsZWQgaGVyZTogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NjI3ODE2XG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFN0YXRzKHJlc29sdmUpO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkRXZlbnRMaXN0ZW5lcjxUIGV4dGVuZHMga2V5b2YgUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcD4odHlwZTogVCwgbGlzdGVuZXI6ICh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXBbVF0pID0+IHVua25vd24sIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gIH1cblxuICByZW1vdmVFdmVudExpc3RlbmVyPFQgZXh0ZW5kcyBrZXlvZiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwPih0eXBlOiBULCBsaXN0ZW5lcjogKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcFtUXSkgPT4gdW5rbm93biwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgfVxuXG4gIGdldFRyYW5zY2VpdmVycygpOiBSVENSdHBUcmFuc2NlaXZlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFRyYW5zY2VpdmVycygpO1xuICB9XG5cbiAgYWRkVHJhbnNjZWl2ZXIobmFtZTogc3RyaW5nLCBvcHRpb25zOiBSVENSdHBUcmFuc2NlaXZlckluaXQpOiBSVENSdHBUcmFuc2NlaXZlciB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihuYW1lLCBvcHRpb25zKTtcbiAgfVxuXG4gIGFkZFN0cmVhbShtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW0pOiB2b2lkIHtcbiAgICBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHtcbiAgICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRUcmFjayh0cmFjayk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDb25maWd1cmF0aW9uKCk6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0Q29uZmlndXJhdGlvbigpO1xuICB9XG5cbiAgc2V0Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7XG4gIH1cblxuICBzZXQgb250cmFjayhoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDVHJhY2tFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9udHJhY2sgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9udHJhY2soKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1RyYWNrRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbnRyYWNrO1xuICB9XG5cbiAgc2V0IG9uaWNlY2FuZGlkYXRlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uaWNlY2FuZGlkYXRlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGU7XG4gIH1cblxuICBzZXQgb25jb25uZWN0aW9uc3RhdGVjaGFuZ2UoaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25jb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uY29ubmVjdGlvbnN0YXRlY2hhbmdlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlO1xuICB9XG5cbiAgc2V0IG9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSgpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZTtcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jbG9zZSgpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVmFuaWxsYVBlZXJDb25uZWN0aW9uOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vSVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBWYW5pbGxhUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9WYW5pbGxhUGVlckNvbm5lY3Rpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IGltcGxlbWVudHMgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSB7XG4gIGFzeW5jIGNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uKTogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb24+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8SVBlZXJDb25uZWN0aW9uPihyZXNvbHZlUGVlckNvbm5lY3Rpb25Qcm9taXNlID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmVQZWVyQ29ubmVjdGlvblByb21pc2UobmV3IFZhbmlsbGFQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKSk7XG4gICAgICAgIGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4vU3ViamVjdCc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWRPbmx5U3ViamVjdDxUPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YmplY3Q6IFN1YmplY3Q8VD47XG5cbiAgY29uc3RydWN0b3Ioc3ViamVjdDogU3ViamVjdDxUPikge1xuICAgIHRoaXMuX3N1YmplY3QgPSBzdWJqZWN0O1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl9zdWJqZWN0LnZhbHVlO1xuICB9XG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyOiAodmFsdWU6IFQpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YmplY3Quc3Vic2NyaWJlKGxpc3RlbmVyKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IElDb21wYXJhYmxlIGZyb20gJy4uL2xhbmcvSUNvbXBhcmFibGUnO1xuXG5jbGFzcyBEaXNwb3NhYmxlTGlzdGVuZXI8VD4gZXh0ZW5kcyBEaXNwb3NhYmxlIHtcbiAgY29uc3RydWN0b3IobGlzdGVuZXJzOiBUW10sIGxpc3RlbmVyOiBUKSB7XG4gICAgc3VwZXIoKCkgPT4ge1xuICAgICAgY29uc3QgaWR4ID0gbGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpO1xuXG4gICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgbGlzdGVuZXJzLnNwbGljZShpZHgsIDEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1YmplY3Q8VD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9saXN0ZW5lcnM6ICgodmFsdWU6IFQpID0+IHZvaWQpW107XG4gIHByaXZhdGUgX3ZhbHVlOiBUO1xuXG4gIGNvbnN0cnVjdG9yKHZhbHVlOiBUKSB7XG4gICAgdGhpcy5fbGlzdGVuZXJzID0gW107XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHNldCB2YWx1ZSh2YWx1ZTogVCkge1xuICAgIGxldCBjaGFuZ2VkID0gdGhpcy5fdmFsdWUgIT09IHZhbHVlO1xuXG4gICAgaWYgKGNoYW5nZWQgJiYgdmFsdWUpIHtcbiAgICAgIGNvbnN0IGNvbXBhcmFibGUgPSB2YWx1ZSBhcyB1bmtub3duIGFzIElDb21wYXJhYmxlPFQ+O1xuXG4gICAgICBpZiAodHlwZW9mIGNvbXBhcmFibGUuZXF1YWxzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNoYW5nZWQgPSAhY29tcGFyYWJsZS5lcXVhbHModGhpcy5fdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghY2hhbmdlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG5cbiAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIFsuLi50aGlzLl9saXN0ZW5lcnNdKSB7XG4gICAgICBsaXN0ZW5lcih2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHN1YnNjcmliZShsaXN0ZW5lcjogKHZhbHVlOiBUKSA9PiB2b2lkKTogSURpc3Bvc2FibGUge1xuICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcblxuICAgIGxpc3RlbmVyKHRoaXMuX3ZhbHVlKTtcblxuICAgIHJldHVybiBuZXcgRGlzcG9zYWJsZUxpc3RlbmVyPCh2YWx1ZTogVCkgPT4gdm9pZD4odGhpcy5fbGlzdGVuZXJzLCBsaXN0ZW5lcik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW52aXJvbm1lbnQge1xuICBzdGF0aWMgZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYmFzZVVSTCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcblxuICAgICAgcmV0dXJuIGJhc2VVUkwub3JpZ2luO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBJR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvSUdsb2JhbFNjb3BlJztcbmltcG9ydCB7R2xvYmFsU2NvcGV9IGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBTdHJpbmdzIGZyb20gJy4uL2xhbmcvU3RyaW5ncyc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IENvbnNvbGVBcHBlbmRlciBmcm9tICcuLi9sb2dnZXIvQ29uc29sZUFwcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlBcHBlbmRlciBmcm9tICcuLi90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlcic7XG5pbXBvcnQgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciBmcm9tICcuLi9kb20vQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlcic7XG5pbXBvcnQgTWV0cmljc0NvbmZpZ3VyYXRpb24sIHtUZWxlbWV0cnlMZXZlbCwgVGVsZW1ldHJ5TGV2ZWxUeXBlfSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBMb2dnaW5nTGV2ZWxNYXBwaW5nIGZyb20gJy4uL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBCdWlsZEZlYXR1cmVzIGZyb20gJy4uL2Vudmlyb25tZW50L0J1aWxkRmVhdHVyZXMnO1xuaW1wb3J0IEJyb3dzZXJEZXRlY3RvciBmcm9tICcuLi9kb20vQnJvd3NlckRldGVjdG9yJztcbmltcG9ydCBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciBmcm9tICcuLi9kb20vQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3InO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi4vcnRjL0lQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uU2VydmljZSBmcm9tICcuLi9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlVcmwgZnJvbSAnLi9UZWxlbWV0cnlVcmwnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4vRW52aXJvbm1lbnQnO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuL2Rpc2NvdmVyeS9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IE1ldHJpY3NGYWN0b3J5IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0ZhY3RvcnknO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cnlEZWZhdWx0JztcbmltcG9ydCB7U2hha2FQbGF5ZXJUeXBlfSBmcm9tICcuL3N0cmVhbWluZy9JU2hha2FQbGF5ZXInO1xuaW1wb3J0IHtIbHNQbGF5ZXJUeXBlfSBmcm9tICcuL3N0cmVhbWluZy9JSGxzUGxheWVyJztcbmltcG9ydCB7V2ViUGxheWVyVHlwZX0gZnJvbSAnLi9zdHJlYW1pbmcvSVdlYlBsYXllcic7XG5pbXBvcnQgSVByb3ZpZGVkR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvSVByb3ZpZGVkR2xvYmFsU2NvcGUnO1xuXG5jb25zdCBwYWdlTG9hZFRpbWUgPSBHbG9iYWxTY29wZS5nZXRJbnN0YW5jZSgpLnZhbHVlPy5wYWdlTG9hZFRpbWUgfHwgRGF0ZS5ub3coKTtcblxuaW50ZXJmYWNlIElJbml0T3B0aW9ucyB7XG4gIGRpc2NvdmVyeVVyaT86IHN0cmluZztcbiAgcGVlckNvbm5lY3Rpb25GYWN0b3J5PzogSVBlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgdGVsZW1ldHJ5TGV2ZWw/OiBUZWxlbWV0cnlMZXZlbFR5cGU7XG4gIGxvZ2dpbmdMZXZlbD86IExvZ2dpbmdMZXZlbFR5cGU7XG4gIGNvbnNvbGVMb2dnaW5nTGV2ZWw/OiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtPzogYm9vbGVhbjtcbiAgYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU/OiBib29sZWFuO1xuICB3ZWJQbGF5ZXJMb2FkZXI/OiAodmFsdWU6IChwbGF5ZXI6IFdlYlBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHNoYWthUGxheWVyTG9hZGVyPzogKHZhbHVlOiAocGxheWVyOiBTaGFrYVBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIGhsc0pzTG9hZGVyPzogKHZhbHVlOiAocGxheWVyOiBIbHNQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTREsge1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJldHJ5LW9uLWZhaWx1cmUnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJyk7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWZvcmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1yZXN0YXJ0Jyk7XG4gIHByaXZhdGUgc3RhdGljIF9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LXNraXAtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLW1vYmlsZS1kZXZpY2VzJyk7XG4gIHByaXZhdGUgc3RhdGljIF93ZWJQbGF5ZXJMb2FkZXI6ICh2YWx1ZTogKHBsYXllcjogV2ViUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NoYWthUGxheWVyTG9hZGVyOiAodmFsdWU6IChwbGF5ZXI6IFNoYWthUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgX2hsc0pzTG9hZGVyOiAodmFsdWU6IChwbGF5ZXI6IEhsc1BsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHByaXZhdGUgc3RhdGljIF9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjogQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgfCBudWxsO1xuICBwcml2YXRlIHN0YXRpYyBfZW52aXJvbm1lbnQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5VXJsOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCdodHRwczovL3RlbGVtZXRyeS5waGVuaXhydHMuY29tL3RlbGVtZXRyeScpO1xuICBwcml2YXRlIHN0YXRpYyBfbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDg7XG4gIHByaXZhdGUgc3RhdGljIF90ZWxlbWV0cnlMZXZlbDogU3ViamVjdDxUZWxlbWV0cnlMZXZlbD4gPSBuZXcgU3ViamVjdDxUZWxlbWV0cnlMZXZlbD4oVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWwpO1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc2VuZExvY2FsQ2FuZGlkYXRlczogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KEJ1aWxkRmVhdHVyZXMuc2VuZExvY2FsQ2FuZGlkYXRlcyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF90ZW5hbmN5OiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2NsaWVudFNlc3Npb25JZDogc3RyaW5nID0gU3RyaW5ncy5yYW5kb20oMzIpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfbG9hZGVkVGltZXN0YW1wOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTREsnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2luaXRpYWxpemVkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlJbml0aWFsaXplZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPihTREsuX2luaXRpYWxpemVkKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5RGlzY292ZXJ5VXJpOiBSZWFkT25seVN1YmplY3Q8c3RyaW5nPiA9IG5ldyBSZWFkT25seVN1YmplY3Q8c3RyaW5nPihEaXNjb3ZlcnlVcmkudXJpKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5UGVlckNvbm5lY3Rpb25GYWN0b3J5OiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+KFBlZXJDb25uZWN0aW9uU2VydmljZS5wZWVyQ29ubmVjdGlvbkZhY3RvcnkpO1xuXG4gIHN0YXRpYyBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZExvY2FsQ2FuZGlkYXRlcygpOiBTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVuYW5jeSgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl90ZW5hbmN5O1xuICB9XG5cbiAgc3RhdGljIGdldCBjbGllbnRTZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU0RLLl9jbGllbnRTZXNzaW9uSWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGxvYWRlZFRpbWVzdGFtcCgpOiBEYXRlIHtcbiAgICByZXR1cm4gU0RLLl9sb2FkZWRUaW1lc3RhbXA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGluaXRpYWxpemVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlJbml0aWFsaXplZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGlzY292ZXJ5VXJpKCk6IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gU0RLLl9yZWFkT25seURpc2NvdmVyeVVyaTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgcGVlckNvbm5lY3Rpb25GYWN0b3J5KCk6IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY1JldHJ5T25GYWlsdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtO1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXM7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHdlYlBsYXllckxvYWRlcigpOiAodmFsdWU6IChwbGF5ZXI6IFdlYlBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93ZWJQbGF5ZXJMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNoYWthUGxheWVyTG9hZGVyKCk6ICh2YWx1ZTogKHBsYXllcjogU2hha2FQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fc2hha2FQbGF5ZXJMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGhsc0pzTG9hZGVyKCk6ICh2YWx1ZTogKHBsYXllcjogSGxzUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2hsc0pzTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBtZXRyaWNzU2VydmljZSgpOiBNZXRyaWNzU2VydmljZSB7XG4gICAgcmV0dXJuIFNESy5fbWV0cmljc1NlcnZpY2U7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKCk6IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlVcmwoKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fdGVsZW1ldHJ5VXJsO1xuICB9XG5cbiAgc3RhdGljIGdldCBtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHM7XG4gIH1cblxuICBzdGF0aWMgc2V0IG1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMocmV0cmllc0Ftb3VudDogbnVtYmVyKSB7XG4gICAgdGhpcy5fbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IHJldHJpZXNBbW91bnQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKHRoaXMuX2xvZ2dlci50aHJlc2hvbGQudmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUoU0RLLl90ZWxlbWV0cnlMZXZlbC52YWx1ZSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJEZXRlY3RvcigpOiBCcm93c2VyRGV0ZWN0b3Ige1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3I7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gPSBMb2dnZXJGYWN0b3J5LnRlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG5cbiAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5wYWdlTG9hZFRpbWUgPSBTREsucGFnZUxvYWRUaW1lO1xuXG4gICAgY29uc3QgaWdub3JlZEVudmlyb25tZW50ID0gU0RLLl9lbnZpcm9ubWVudC5zdWJzY3JpYmUoZW52aXJvbm1lbnQgPT4ge1xuICAgICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWREaXNjb3ZlcnlVcmkgPSBTREsudGVsZW1ldHJ5VXJsLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBjb25zdCB0ZWxlbWV0cnlBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIFRlbGVtZXRyeUFwcGVuZGVyKTtcblxuICAgICAgaWYgKHRlbGVtZXRyeUFwcGVuZGVyKSB7XG4gICAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udXJsID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUodGVsZW1ldHJ5QXBwZW5kZXIpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnVGVsZW1ldHJ5IFVSTCB3YXMgc2V0IHRvIFslc10nLCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZFRlbmFuY3kgPSBTREsuX3RlbmFuY3kuc3Vic2NyaWJlKHRlbmFuY3kgPT4ge1xuICAgICAgY29uc3QgdGVsZW1ldHJ5QXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBUZWxlbWV0cnlBcHBlbmRlcik7XG5cbiAgICAgIGlmICh0ZWxlbWV0cnlBcHBlbmRlciAmJiB0ZW5hbmN5KSB7XG4gICAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeSA9IHRlbmFuY3k7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUodGVsZW1ldHJ5QXBwZW5kZXIpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnVGVsZW1ldHJ5IHRlbmFuY3kgd2FzIHNldCB0byBbJXNdJywgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseU1ldHJpY3NDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIFNESy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShEaXNjb3ZlcnlVcmkudXJpLnZhbHVlKTtcbiAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uID0gU0RLLl9tZXRyaWNzU2VydmljZS5tZXRyaWNzQ29uZmlndXJhdGlvbjtcblxuICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcblxuICAgIGNvbnN0IGlnbm9yZWRFbnZpcm9ubWVudCA9IFNESy5fZW52aXJvbm1lbnQuc3Vic2NyaWJlKGVudmlyb25tZW50ID0+IHtcbiAgICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkRGlzY292ZXJ5VXJpID0gU0RLLnRlbGVtZXRyeVVybC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi51cmwgPSB2YWx1ZTtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkVGVuYW5jeSA9IFNESy5fdGVuYW5jeS5zdWJzY3JpYmUodGVuYW5jeSA9PiB7XG4gICAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLnRlbmFuY3kgPSB0ZW5hbmN5O1xuICAgIH0pO1xuICAgIGNvbnN0IHZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LW1ldHJpY3MtbGV2ZWwnKSBhcyBUZWxlbWV0cnlMZXZlbFR5cGU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIE1ldHJpY3NGYWN0b3J5LnNldFRlbGVtZXRyeUxldmVsKFRlbGVtZXRyeUxldmVsW3ZhbHVlXSk7XG4gICAgfVxuXG4gICAgY29uc3QgaWdub3JlZFRlbGVtZXRyeUxldmVsID0gU0RLLl90ZWxlbWV0cnlMZXZlbC5zdWJzY3JpYmUodGVsZW1ldHJ5TGV2ZWwgPT4ge1xuICAgICAgTWV0cmljc0ZhY3Rvcnkuc2V0VGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWwpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5QXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJldHJ5LW9uLWZhaWx1cmUnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZXRyeSBvbiBmYWlsdXJlIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb25Gcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24gPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbicpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1mb3JjZS1nYXJiYWdlLWNvbGxlY3Rpb24tb24tcmVzdGFydCcpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlc0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnU2tpcCBnYXJiYWdlIGNvbGxlY3Rpb24gb24gbW9iaWxlIGRldmljZXMgb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIFNESy5kaXNjb3ZlcnlVcmkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIFNESy50ZWxlbWV0cnlVcmwudmFsdWUgPSBTREsuZ2V0VGVsZW1ldHJ5VXJsKHZhbHVlKTtcbiAgICAgIFNESy5fZW52aXJvbm1lbnQudmFsdWUgPSBFbnZpcm9ubWVudC5nZXRFbnZpcm9ubWVudEZyb21VcmwodmFsdWUpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY2hhbm5lbFRva2VuID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWNoYW5uZWwtdG9rZW4nKTtcblxuICAgIGlmIChjaGFubmVsVG9rZW4pIHtcbiAgICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4oY2hhbm5lbFRva2VuKTtcblxuICAgICAgU0RLLl90ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3k7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdXJpVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtdXJpJyk7XG5cbiAgICBpZiAodXJpVmFsdWUpIHtcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSB1cmlWYWx1ZTtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIFwicGhlbml4LXVyaVwiIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHRhZyB0byBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlVVJJVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtYmFzZS11cmknKTtcblxuICAgIGlmIChiYXNlVVJJVmFsdWUpIHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlID0gR2xvYmFsU2NvcGUuZ2V0SW5zdGFuY2UoKS52YWx1ZTtcbiAgICAgIGNvbnN0IHVyaSA9IG5ldyBnbG9iYWxTY29wZS5VUkwoYmFzZVVSSVZhbHVlKTtcblxuICAgICAgdXJpLnBhdGhuYW1lID0gJy9wY2FzdC9lbmRQb2ludHMnO1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IHVyaS50b1N0cmluZygpO1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gXCJwaGVuaXgtYmFzZS11cmlcIiBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0YWcgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG9uTG9hZChnbG9iYWxTY29wZTogSUdsb2JhbFNjb3BlIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faW5pdGlhbGl6ZWQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdTREsgaGFzIGFscmVhZHkgYmVlbiBsb2FkZWQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGdsb2JhbFNjb3BlLmFkZFdpbmRvd0V2ZW50TGlzdGVuZXIoJ3VubG9hZCcsICgpID0+IHtcbiAgICAgIFNESy5kaXNwb3NlKCk7XG4gICAgfSk7XG5cbiAgICBTREsuYXBwbHlEaXNjb3ZlcnlVcmlEZWZhdWx0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTtcbiAgICBTREsuYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbigpO1xuICAgIFNESy5hcHBseVRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTtcblxuICAgIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gbmV3IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKCk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZXRyeSBvbiBmYWlsdXJlIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbiBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24pO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnU2tpcCBnYXJiYWdlIGNvbGxlY3Rpb24gb24gbW9iaWxlIGRldmljZXMgb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpO1xuXG4gICAgdGhpcy5faW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlO1xuICB9XG5cbiAgc3RhdGljIGluaXQob3B0aW9ucz86IElJbml0T3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZTogSUluaXRPcHRpb25zICYge2dsb2JhbFNjb3BlPzogSVByb3ZpZGVkR2xvYmFsU2NvcGV9ID0gb3B0aW9ucztcblxuICAgIGlmIChvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGUuZ2xvYmFsU2NvcGUpIHtcbiAgICAgIEdsb2JhbFNjb3BlLnNldEluc3RhbmNlKG9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZS5nbG9iYWxTY29wZSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGlzY292ZXJ5VXJpKSB7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gb3B0aW9ucy5kaXNjb3ZlcnlVcmk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucGVlckNvbm5lY3Rpb25GYWN0b3J5KSB7XG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UucGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlID0gb3B0aW9ucy5wZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMudGVsZW1ldHJ5TGV2ZWwgJiYgVGVsZW1ldHJ5TGV2ZWxbb3B0aW9ucy50ZWxlbWV0cnlMZXZlbF0pIHtcbiAgICAgIFNESy5fdGVsZW1ldHJ5TGV2ZWwudmFsdWUgPSBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwob3B0aW9ucy50ZWxlbWV0cnlMZXZlbCk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubG9nZ2luZ0xldmVsICYmIExvZ2dpbmdMZXZlbFtvcHRpb25zLmxvZ2dpbmdMZXZlbF0pIHtcbiAgICAgIHRoaXMuX2xvZ2dlci50aHJlc2hvbGQuc2V0VGhyZXNob2xkKExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChvcHRpb25zLmxvZ2dpbmdMZXZlbCkpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWwgJiYgTG9nZ2luZ0xldmVsW29wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbF0pIHtcbiAgICAgIGNvbnN0IGNvbnNvbGVBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIENvbnNvbGVBcHBlbmRlcik7XG5cbiAgICAgIGlmIChjb25zb2xlQXBwZW5kZXIpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUoY29uc29sZUFwcGVuZGVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbCAhPT0gJ09mZicpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IENvbnNvbGVBcHBlbmRlcihMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsKSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0gPSBvcHRpb25zLmF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW07XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID0gb3B0aW9ucy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy53ZWJQbGF5ZXJMb2FkZXIpIHtcbiAgICAgIHRoaXMuX3dlYlBsYXllckxvYWRlciA9IG9wdGlvbnMud2ViUGxheWVyTG9hZGVyO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnNoYWthUGxheWVyTG9hZGVyKSB7XG4gICAgICB0aGlzLl9zaGFrYVBsYXllckxvYWRlciA9IG9wdGlvbnMuc2hha2FQbGF5ZXJMb2FkZXI7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuaGxzSnNMb2FkZXIpIHtcbiAgICAgIHRoaXMuX2hsc0pzTG9hZGVyID0gb3B0aW9ucy5obHNKc0xvYWRlcjtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICBTREsuX2luaXRpYWxpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I/LmRpc3Bvc2UoKTtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciA9IG51bGw7XG4gIH1cblxuICBzdGF0aWMgZ2V0VGVsZW1ldHJ5VXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5VXJsLmdldFRlbGVtZXRyeVVybCh1cmwpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NESyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuR2xvYmFsU2NvcGUuc3Vic2NyaWJlKFNESy5vbkxvYWQuYmluZChTREspKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5VXJsIHtcbiAgc3RhdGljIGdldFRlbGVtZXRyeVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhc2VVUkwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG4gICAgICBjb25zdCBzZWdtZW50cyA9IGJhc2VVUkwuaG9zdG5hbWUuc3BsaXQoJy4nKTtcblxuICAgICAgc3dpdGNoIChiYXNlVVJMLnByb3RvY29sKSB7XG4gICAgICAgIGNhc2UgJ3dzOic6XG4gICAgICAgICAgYmFzZVVSTC5wcm90b2NvbCA9ICdodHRwOic7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnd3NzOic6XG4gICAgICAgICAgYmFzZVVSTC5wcm90b2NvbCA9ICdodHRwczonO1xuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKHNlZ21lbnRzLmxlbmd0aCA9PT0gMiB8fFxuICAgICAgICAgIChzZWdtZW50cy5sZW5ndGggPT09IDMgJiYgc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMl0ubGVuZ3RoIDw9IDIgJiYgc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMV0ubGVuZ3RoIDw9IDMpXG4gICAgICApIHtcbiAgICAgICAgc2VnbWVudHMudW5zaGlmdCgndGVsZW1ldHJ5Jyk7XG4gICAgICB9IGVsc2UgaWYgKHNlZ21lbnRzWzBdLnN0YXJ0c1dpdGgoJ3N0Zy0nKSB8fCBzZWdtZW50c1swXS5lbmRzV2l0aCgnLXN0ZycpIHx8IHNlZ21lbnRzWzBdLmluY2x1ZGVzKCctc3RnLScpIHx8IHNlZ21lbnRzWzBdID09PSAnc3RnJykge1xuICAgICAgICBzZWdtZW50c1swXSA9ICd0ZWxlbWV0cnktc3RnJztcbiAgICAgIH0gZWxzZSBpZiAoc2VnbWVudHNbMF0uc3RhcnRzV2l0aCgnbG9jYWwnKSB8fCBzZWdtZW50c1swXS5lbmRzV2l0aCgnLWxvY2FsJykpIHtcbiAgICAgICAgLy8gTGVhdmUgVVJMIHVuY2hhbmdlZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VnbWVudHNbMF0gPSAndGVsZW1ldHJ5JztcbiAgICAgIH1cblxuICAgICAgYmFzZVVSTC5ob3N0bmFtZSA9IHNlZ21lbnRzLmpvaW4oJy4nKTtcblxuICAgICAgcmV0dXJuIGAke2Jhc2VVUkwub3JpZ2lufS90ZWxlbWV0cnlgO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCB0eXBlIEJpdHJhdGVTdGF0ZVR5cGUgPSAnS2VlcCcgfCAnUmVzZXQnO1xuZXhwb3J0IHR5cGUgQml0cmF0ZU1vZGVUeXBlID0gJ05vcm1hbCcgfCAnRm9yY2UnIHwgJ1Jlc2V0JztcblxuZXhwb3J0IGVudW0gQml0cmF0ZVN0YXRlIHtcbiAgS2VlcCxcbiAgUmVzZXRcbn1cblxuZXhwb3J0IGVudW0gQml0cmF0ZU1vZGUge1xuICBOb3JtYWwsXG4gIEZvcmNlLFxuICBSZXNldFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSB7XG4gIGFwaVZlcnNpb246IG51bWJlcjtcbiAgc2hhcmVkU2VjcmV0OiBzdHJpbmc7XG4gIGVsYXBzZWRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kOiBudW1iZXI7XG4gIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlVHlwZTtcbiAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlVHlwZTtcbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcbmltcG9ydCBEaW1lbnNpb24gZnJvbSAnLi4vLi4vdmlkZW8vRGltZW5zaW9uJztcbmltcG9ydCBFeHBvbmVudGlhbEJhY2tvZmYgZnJvbSAnLi4vLi4vdGltZS9FeHBvbmVudGlhbEJhY2tvZmYnO1xuaW1wb3J0IEVuZFBvaW50LCB7SVN0cmVhbX0gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCB7SU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2t9IGZyb20gJy4vSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2snO1xuaW1wb3J0IHtJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2t9IGZyb20gJy4vSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrJztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciBmcm9tICcuLi8uLi9kb20vR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXInO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCB7SUNoYW5uZWx9IGZyb20gJy4vSUNoYW5uZWwnO1xuaW1wb3J0IENoYW5uZWxTdGF0ZSBmcm9tICcuL0NoYW5uZWxTdGF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBWaWRlb1RlbGVtZXRyeSBmcm9tICcuLi8uLi92aWRlby9WaWRlb1RlbGVtZXRyeSc7XG5pbXBvcnQgU2Vzc2lvblRlbGVtZXRyeSBmcm9tICcuLi8uLi92aWRlby9TZXNzaW9uVGVsZW1ldHJ5JztcbmltcG9ydCB7SVJ0Y01vbml0b3JTdGF0aXN0aWN9IGZyb20gJy4uLy4uL3J0Yy9SdGNDb25uZWN0aW9uTW9uaXRvcic7XG5pbXBvcnQge0JpdHJhdGVNb2RlLCBCaXRyYXRlU3RhdGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcbmltcG9ydCB7Qml0c1BlclNlY29uZCwgTWlsbGlzZWNvbmR9IGZyb20gJy4uLy4uL3VuaXRzL1VuaXRzJztcbmltcG9ydCBUb2tlbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9Ub2tlbkNvbnRleHQnO1xuaW1wb3J0IENoYW5uZWxDb250ZXh0LCB7Q2hhbm5lbENvbnRleHRPcHRpb25zfSBmcm9tICcuLi9jb250ZXh0L0NoYW5uZWxDb250ZXh0JztcbmltcG9ydCBFbmNvZGVkU3RyZWFtU2luaywge0lFbmNvZGVkU3RyZWFtU2lua30gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vRW5jb2RlZFN0cmVhbVNpbmsnO1xuaW1wb3J0IFN0cmVhbVRyYWNrVHJhbnNmb3JtLCB7SVN0cmVhbVRyYWNrVHJhbnNmb3JtfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybSc7XG5pbXBvcnQgU3RyZWFtVHJhbnNmb3JtQ29udGV4dCwge1N0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zfSBmcm9tICcuLi9jb250ZXh0L1N0cmVhbVRyYW5zZm9ybUNvbnRleHQnO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dCc7XG5pbXBvcnQgU3RhdGVDb250ZXh0IGZyb20gJy4uL2NvbnRleHQvU3RhdGVDb250ZXh0JztcbmltcG9ydCBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L0ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0JztcbmltcG9ydCB7RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24sIFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbn0gZnJvbSAnLi4vZnJhbWVUaW1pbmcvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbic7XG5pbXBvcnQgU3RyZWFtRmFjdG9yeSBmcm9tICcuLi9zdHJlYW1pbmcvU3RyZWFtRmFjdG9yeSc7XG5pbXBvcnQgRGlzY292ZXJ5IGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnknO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuLi9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5cbmNvbnN0IGRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbiA9ICdjbGllbnQ6dGVybWluYXRpb24nO1xuY29uc3QgZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMgPSAzMDAwO1xuY29uc3Qgc3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzID0gMTUwMDA7XG5cbmV4cG9ydCB0eXBlIENoYW5uZWxPcHRpb25zID0ge1xuICB0YXJnZXRMYWc/OiBNaWxsaXNlY29uZDtcbiAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaz86IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPjtcbiAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaz86IElTdHJlYW1UcmFja1RyYW5zZm9ybTxBdWRpb0RhdGE+O1xuICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rPzogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPjtcbiAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luaz86IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT47XG4gIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s/OiBJT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgb25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/OiBJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGFubmVsIGltcGxlbWVudHMgSUNoYW5uZWwge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignQ2hhbm5lbCcpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlbkNvbnRleHQ6IFRva2VuQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2hhbm5lbENvbnRleHQ6IENoYW5uZWxDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9wZWVyQ29ubmVjdGlvbkNvbnRleHQ6IFBlZXJDb25uZWN0aW9uQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhdGVDb250ZXh0OiBTdGF0ZUNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwb25lbnRpYWxCYWNrb2ZmOiBFeHBvbmVudGlhbEJhY2tvZmY7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxTdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbjogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0YXRlOiBSZWFkT25seVN1YmplY3Q8Q2hhbm5lbFN0YXRlPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlFeGlzdHM6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5QXV0b011dGVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5QXV0b1BhdXNlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVRva2VuRXhwaXJpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlBdXRob3JpemVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5T25saW5lOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TG9hZGluZzogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVBsYXlpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdGFuZGJ5OiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RvcHBlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVRhcmdldExhZzogUmVhZE9ubHlTdWJqZWN0PE1pbGxpc2Vjb25kPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlMYWc6IFJlYWRPbmx5U3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUJpdHJhdGVMaW1pdDogUmVhZE9ubHlTdWJqZWN0PEJpdHNQZXJTZWNvbmQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVJlc29sdXRpb246IFJlYWRPbmx5U3ViamVjdDxEaW1lbnNpb24+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUZhaWx1cmVDb3VudDogUmVhZE9ubHlTdWJqZWN0PG51bWJlcj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5RW5kUG9pbnQ6IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludCB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0cmVhbTogUmVhZE9ubHlTdWJqZWN0PElTdHJlYW0gfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlSdGNTdGF0aXN0aWNzOiBSZWFkT25seVN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlNZWRpYVN0cmVhbTogUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5SXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uRW5hYmxlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seURlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBSZWFkT25seVN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb246IFJlYWRPbmx5U3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPjtcblxuICBwcml2YXRlIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nlc3Npb25UZWxlbWV0cnk6IFNlc3Npb25UZWxlbWV0cnk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcjogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3Rvcih2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQsIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBvcHRpb25zPzogQ2hhbm5lbE9wdGlvbnMpIHtcbiAgICBjb25zdCBlZGdlVG9rZW4gPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKTtcbiAgICBjb25zdCBjaGFubmVsQ29udGV4dE9wdGlvbnM6IENoYW5uZWxDb250ZXh0T3B0aW9ucyA9IHtcbiAgICAgIHRhcmdldExhZzogb3B0aW9ucz8udGFyZ2V0TGFnLFxuICAgICAgb25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjazogb3B0aW9ucz8ub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayxcbiAgICAgIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrOiBvcHRpb25zPy5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFja1xuICAgIH07XG4gICAgY29uc3Qgc3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnM6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zID0ge1xuICAgICAgaGFzSW5zZXJ0YWJsZVN0cmVhbXM6IGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ2luc2VydGFibGUtc3RyZWFtcycpLFxuICAgICAgaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBlZGdlVG9rZW4uY2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdlbmNvZGVkLWluc2VydGFibGUtc3RyZWFtcycpLFxuICAgICAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogb3B0aW9ucz8udmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayxcbiAgICAgIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IG9wdGlvbnM/LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssXG4gICAgICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBvcHRpb25zPy5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rLFxuICAgICAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogb3B0aW9ucz8uZW5jb2RlZEF1ZGlvU3RyZWFtU2lua1xuICAgIH07XG5cbiAgICB0aGlzLl90b2tlbkNvbnRleHQgPSBuZXcgVG9rZW5Db250ZXh0KHRva2VuKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dCA9IG5ldyBDaGFubmVsQ29udGV4dChjaGFubmVsQ29udGV4dE9wdGlvbnMpO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dCA9IG5ldyBQZWVyQ29ubmVjdGlvbkNvbnRleHQoKTtcbiAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0ID0gbmV3IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQoc3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMpO1xuICAgIHRoaXMuX3N0YXRlQ29udGV4dCA9IG5ldyBTdGF0ZUNvbnRleHQoKTtcbiAgICB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYgPSBuZXcgRXhwb25lbnRpYWxCYWNrb2ZmKCk7XG4gICAgdGhpcy5fY2hhbm5lbFN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgdGhpcy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD4odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uKTtcbiAgICB0aGlzLl9yZWFkT25seVN0YXRlID0gbmV3IFJlYWRPbmx5U3ViamVjdDxDaGFubmVsU3RhdGU+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlKTtcbiAgICB0aGlzLl9yZWFkT25seUV4aXN0cyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbiB8IG51bGw+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmV4aXN0cyk7XG4gICAgdGhpcy5fcmVhZE9ubHlBdXRvTXV0ZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlBdXRvUGF1c2VkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkKTtcbiAgICB0aGlzLl9yZWFkT25seVRva2VuRXhwaXJpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbkV4cGlyaW5nKTtcbiAgICB0aGlzLl9yZWFkT25seUF1dGhvcml6ZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5T25saW5lID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5vbmxpbmUpO1xuICAgIHRoaXMuX3JlYWRPbmx5TG9hZGluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlQbGF5aW5nID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nKTtcbiAgICB0aGlzLl9yZWFkT25seVN0YW5kYnkgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YW5kYnkpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RvcHBlZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQuc3RvcHBlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlUYXJnZXRMYWcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4odGhpcy5fY2hhbm5lbENvbnRleHQudGFyZ2V0TGFnKTtcbiAgICB0aGlzLl9yZWFkT25seUxhZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih0aGlzLl9jaGFubmVsQ29udGV4dC5sYWcpO1xuICAgIHRoaXMuX3JlYWRPbmx5Qml0cmF0ZUxpbWl0ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxCaXRzUGVyU2Vjb25kPih0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQpO1xuICAgIHRoaXMuX3JlYWRPbmx5UmVzb2x1dGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8RGltZW5zaW9uPih0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uKTtcbiAgICB0aGlzLl9yZWFkT25seUZhaWx1cmVDb3VudCA9IG5ldyBSZWFkT25seVN1YmplY3Q8bnVtYmVyPih0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQpO1xuICAgIHRoaXMuX3JlYWRPbmx5RW5kUG9pbnQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD4odGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RyZWFtID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD4odGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtKTtcbiAgICB0aGlzLl9yZWFkT25seVJ0Y1N0YXRpc3RpY3MgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4odGhpcy5fY2hhbm5lbENvbnRleHQucnRjU3RhdGlzdGljcyk7XG4gICAgdGhpcy5fcmVhZE9ubHlNZWRpYVN0cmVhbSA9IG5ldyBSZWFkT25seVN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPih0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0pO1xuXG4gICAgY29uc3QgZGlzY292ZXJ5VXJpID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgIFNESy50ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3kgfHwgU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IGRpc2NvdmVyeVVyaTtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKGRpc2NvdmVyeVVyaSk7XG4gICAgdGhpcy5fc2Vzc2lvblRlbGVtZXRyeSA9IG5ldyBTZXNzaW9uVGVsZW1ldHJ5KFNESy5wYWdlTG9hZFRpbWUsIHRoaXMuX21ldHJpY3NTZXJ2aWNlKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkpO1xuICAgIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlciA9IHRoaXMuaGFuZGxlVmlkZW9NZXRhRGF0YUNoYW5nZWQuYmluZCh0aGlzKTtcbiAgICB0aGlzLnZpZGVvRWxlbWVudCA9IHZpZGVvRWxlbWVudDtcblxuICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0ID0gbmV3IEZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0KCk7XG4gICAgdGhpcy5jb25maWd1cmVGcmFtZVRpbWluZ0luZm9ybWF0aW9uKGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMpO1xuICAgIHRoaXMuX3JlYWRPbmx5SXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uRW5hYmxlZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuaXNFbmFibGVkKTtcbiAgICB0aGlzLl9yZWFkT25seURlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uID0gbmV3IFJlYWRPbmx5U3ViamVjdDxEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LmRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uKTtcbiAgICB0aGlzLl9yZWFkT25seVJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4odGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQucmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uKTtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQuc3Vic2NyaWJlKHZpZGVvRWxlbWVudCA9PiB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgICAgIGlmICghdmlkZW9FbGVtZW50KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5hZGQodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnN1YnNjcmliZShzdHJlYW0gPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb1RlbGVtZXRyeSkge1xuICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkuZGlzcG9zZSgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghc3RyZWFtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCF0aGlzLnZpZGVvRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0KSB7XG4gICAgICAgICAgICB0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0LnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgICAgICAgICB0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0LnN0cmVhbUlkID0gdGhpcy5zdHJlYW1JZDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb1RlbGVtZXRyeSA9IG5ldyBWaWRlb1RlbGVtZXRyeSh0aGlzLnN0cmVhbUlkLCBTREsucGFnZUxvYWRUaW1lLCB0aGlzLl9jaGFubmVsU3RhcnRUaW1lLCB0aGlzLl9tZXRyaWNzU2VydmljZSk7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkuc2V0dXBMaXN0ZW5lckZvclRpbWVUb0ZpcnN0VGltZSh0aGlzLnZpZGVvRWxlbWVudCk7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkuc2V0dXBMaXN0ZW5lckZvclJlYnVmZmVyaW5nKHRoaXMudmlkZW9FbGVtZW50KTtcblxuICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9PT0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnJlc3RhcnRBZnRlclN0b3AoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMpO1xuICAgICAgfSkpO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0KSB7XG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRoaXMuX2NoYW5uZWxDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZSAhPT0gQ2hhbm5lbFN0YXRlLlBsYXlpbmcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgICAgICB9LCBmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyk7XG4gICAgICB9KSk7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZChcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlc29sdXRpb24uc3Vic2NyaWJlKHJlc29sdXRpb24gPT4ge1xuICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkpIHtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb1RlbGVtZXRyeS5vblZpZGVvUmVzb2x1dGlvbkNoYW5nZXMocmVzb2x1dGlvbi50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQuc3Vic2NyaWJlKGJpdHJhdGVMaW1pdCA9PiB7XG4gICAgICAgIGlmIChiaXRyYXRlTGltaXQgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlKSB7XG4gICAgICAgICAgY29uc3QgZWxhcHNlZEluTWlsbGlzZWNvbmRzID0gRGF0ZS5ub3coKSAtIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxJbml0aWFsaXphdGlvbi5nZXRUaW1lKCk7XG4gICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLmxpbWl0Qml0cmF0ZShcbiAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSxcbiAgICAgICAgICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgIGJpdHJhdGVMaW1pdCxcbiAgICAgICAgICAgIEJpdHJhdGVTdGF0ZS5LZWVwLFxuICAgICAgICAgICAgQml0cmF0ZU1vZGUuTm9ybWFsXG4gICAgICAgICAgKVxuICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0Vycm9yIHdoaWxlIHNldHRpbmcgbGltaXQgYml0cmF0ZScsIGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW1PblVubW91bnQgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5kZXN0cm95U3RyZWFtT25Vbm1vdW50KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSwgJ2NsaWVudDp0ZXJtaW5hdGlvbi1vbi13aW5kb3ctdW5sb2FkJyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIEdsb2JhbFNjb3BlLnZhbHVlLmFkZFdpbmRvd0V2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIGRlc3Ryb3lTdHJlYW1PblVubW91bnQpO1xuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5yZW1vdmVXaW5kb3dFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBkZXN0cm95U3RyZWFtT25Vbm1vdW50KTtcbiAgICB9KSk7XG5cbiAgICB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBnZXQgdmlkZW9FbGVtZW50KCk6IEhUTUxWaWRlb0VsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuICB9XG5cbiAgc2V0IHZpZGVvRWxlbWVudCh2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZGVkZGF0YScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG5cbiAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldCkge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldC5zZXNzaW9uSWQgPSAnJztcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQuc3RyZWFtSWQgPSAnJztcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5wYXVzZSgpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnNyY09iamVjdCA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgIT09IENoYW5uZWxTdGF0ZS5Jbml0aWFsaXppbmcpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlID0gdmlkZW9FbGVtZW50O1xuXG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVmlkZW9NZXRhRGF0YUNoYW5nZWQoKTogdm9pZCB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKHZpZGVvRWxlbWVudCkge1xuICAgICAgaWYgKHRoaXMucmVzb2x1dGlvbi52YWx1ZS53aWR0aCAhPT0gdmlkZW9FbGVtZW50LnZpZGVvV2lkdGggfHwgdGhpcy5yZXNvbHV0aW9uLnZhbHVlLmhlaWdodCAhPT0gdmlkZW9FbGVtZW50LnZpZGVvSGVpZ2h0KSB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlc29sdXRpb24udmFsdWUgPSBuZXcgRGltZW5zaW9uKHZpZGVvRWxlbWVudC52aWRlb1dpZHRoLCB2aWRlb0VsZW1lbnQudmlkZW9IZWlnaHQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uLnZhbHVlID0gRGltZW5zaW9uLmVtcHR5O1xuICAgIH1cbiAgfVxuXG4gIGdldCB0b2tlbigpOiBFbmNvZGVkRWRnZVRva2VuIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlO1xuICB9XG5cbiAgc2V0IHRva2VuKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKSB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlID0gdG9rZW47XG4gICAgdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuRXhwaXJpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlKTtcbiAgICBjb25zdCBkaXNjb3ZlcnlVcmkgPSAoZWRnZVRva2VuLnVyaSB8fCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKS50b1N0cmluZygpO1xuXG4gICAgU0RLLnRlbmFuY3kudmFsdWUgPSBlZGdlVG9rZW4udGVuYW5jeSB8fCBTREsudGVuYW5jeS52YWx1ZTtcbiAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gZGlzY292ZXJ5VXJpO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShkaXNjb3ZlcnlVcmkpO1xuXG4gICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSA9IGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ2luc2VydGFibGUtc3RyZWFtcycpO1xuICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlID0gZWRnZVRva2VuLmNhcGFiaWxpdGllcy5pbmNsdWRlcygnZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMnKTtcblxuICAgIHRoaXMuY29uZmlndXJlRnJhbWVUaW1pbmdJbmZvcm1hdGlvbihlZGdlVG9rZW4uY2FwYWJpbGl0aWVzKTtcblxuICAgIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIGdldCBwZWVyQ29ubmVjdGlvbigpOiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IHN0YXRlKCk6IFJlYWRPbmx5U3ViamVjdDxDaGFubmVsU3RhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdGF0ZTtcbiAgfVxuXG4gIGdldCBleGlzdHMoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RXhpc3RzO1xuICB9XG5cbiAgZ2V0IGF1dG9NdXRlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUF1dG9NdXRlZDtcbiAgfVxuXG4gIGdldCBhdXRvUGF1c2VkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5QXV0b1BhdXNlZDtcbiAgfVxuXG4gIGdldCB0b2tlbkV4cGlyaW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5VG9rZW5FeHBpcmluZztcbiAgfVxuXG4gIGdldCBhdXRob3JpemVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5QXV0aG9yaXplZDtcbiAgfVxuXG4gIGdldCBvbmxpbmUoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlPbmxpbmU7XG4gIH1cblxuICBnZXQgbG9hZGluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUxvYWRpbmc7XG4gIH1cblxuICBnZXQgcGxheWluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVBsYXlpbmc7XG4gIH1cblxuICBnZXQgc3RhbmRieSgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0YW5kYnk7XG4gIH1cblxuICBnZXQgc3RvcHBlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0b3BwZWQ7XG4gIH1cblxuICBnZXQgdGFyZ2V0TGFnKCk6IFJlYWRPbmx5U3ViamVjdDxNaWxsaXNlY29uZD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVRhcmdldExhZztcbiAgfVxuXG4gIGdldCBsYWcoKTogUmVhZE9ubHlTdWJqZWN0PE1pbGxpc2Vjb25kIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TGFnO1xuICB9XG5cbiAgZ2V0IGJpdHJhdGVMaW1pdCgpOiBCaXRzUGVyU2Vjb25kIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlCaXRyYXRlTGltaXQudmFsdWU7XG4gIH1cblxuICBnZXQgcmVzb2x1dGlvbigpOiBSZWFkT25seVN1YmplY3Q8RGltZW5zaW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UmVzb2x1dGlvbjtcbiAgfVxuXG4gIGdldCBmYWlsdXJlQ291bnQoKTogUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUZhaWx1cmVDb3VudDtcbiAgfVxuXG4gIGdldCBlbmRQb2ludCgpOiBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RW5kUG9pbnQ7XG4gIH1cblxuICBnZXQgc3RyZWFtKCk6IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0cmVhbTtcbiAgfVxuXG4gIGdldCBzdHJlYW1JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZDtcbiAgfVxuXG4gIGdldCBydGNTdGF0aXN0aWNzKCk6IFJlYWRPbmx5U3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlSdGNTdGF0aXN0aWNzO1xuICB9XG5cbiAgZ2V0IG1lZGlhU3RyZWFtKCk6IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlNZWRpYVN0cmVhbTtcbiAgfVxuXG4gIGdldCBpc0ZyYW1lVGltaW5nSW5mb3JtYXRpb25FbmFibGVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5SXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uRW5hYmxlZDtcbiAgfVxuXG4gIGdldCBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbigpOiBSZWFkT25seVN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb247XG4gIH1cblxuICBnZXQgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uKCk6IFJlYWRPbmx5U3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uO1xuICB9XG5cbiAgc2V0Qml0cmF0ZUxpbWl0KGJpdHJhdGVMaW1pdDogQml0c1BlclNlY29uZCk6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmJpdHJhdGVMaW1pdC52YWx1ZSA9IGJpdHJhdGVMaW1pdDtcbiAgfVxuXG4gIGNsZWFyQml0cmF0ZUxpbWl0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQudmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlKSB7XG4gICAgICBjb25zdCBlbGFwc2VkSW5NaWxsaXNlY29uZHMgPSBEYXRlLm5vdygpIC0gdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbEluaXRpYWxpemF0aW9uLmdldFRpbWUoKTtcbiAgICAgIGNvbnN0IGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQgPSAwO1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLmxpbWl0Qml0cmF0ZShcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlLFxuICAgICAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHMsXG4gICAgICAgIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQsXG4gICAgICAgIEJpdHJhdGVTdGF0ZS5LZWVwLFxuICAgICAgICBCaXRyYXRlTW9kZS5SZXNldFxuICAgICAgKVxuICAgICAgICAudGhlbigoe3N0YXR1c30pID0+IHtcbiAgICAgICAgICBpZiAoc3RhdHVzID09PSAnb2snKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQudmFsdWUgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRXJyb3Igd2hpbGUgc2V0dGluZyBsaW1pdCBiaXRyYXRlJywgZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVRhcmdldExhZyhsYWc6IE1pbGxpc2Vjb25kKTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQudGFyZ2V0TGFnLnZhbHVlID0gbGFnO1xuICB9XG5cbiAgYXN5bmMgc3RvcChyZWFzb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGlmICghdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3RvcChyZWFzb24pO1xuXG4gICAgICAgIHJlc29sdmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuYWRkKHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnN1YnNjcmliZShpc1N0YXJ0aW5nID0+IHtcbiAgICAgICAgaWYgKCFpc1N0YXJ0aW5nKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzU3RvcChyZWFzb24pO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzU3RvcChyZWFzb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5wYXVzZSgpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnNyY09iamVjdCA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICB0aGlzLmNsZWFuVXBSZXNvdXJjZXMocmVhc29uKTtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQ7XG4gIH1cblxuICBhc3luYyByZXN1bWUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gdGhpcy5wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudCh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG11dGUoKTogdm9pZCB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKHZpZGVvRWxlbWVudCkge1xuICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICB1bm11dGUoKTogdm9pZCB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKHZpZGVvRWxlbWVudCkge1xuICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkaXNwb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnN0b3AoJ2NsaWVudDpjaGFubmVsLWRpc3Bvc2UnKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNEaXNwb3NlZCA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBnZXRVcmkodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBVUkwge1xuICAgIGNvbnN0IHVybCA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLnVyaTtcblxuICAgIGlmICh1cmwpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBkaXNjb3ZlciBVUkkgWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgcmV0dXJuIG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwoU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG4gIH1cblxuICBhc3luYyBzdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2hhbm5lbCB3YXMgYWxyZWFkeSBkaXNwb3NlZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgYWxyZWFkeSBzdGFydGluZywgc2tpcHBpbmcgc3RhcnQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLnByb2Nlc3NTdGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzU3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuU3RhcnRpbmc7XG4gICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKCdjbGllbnQ6c3RhcnQnKTtcblxuICAgIGNvbnN0IHRva2VuOiBFbmNvZGVkRWRnZVRva2VuID0gdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlO1xuICAgIGNvbnN0IGxpc3Rlbk9uU3RyZWFtU2V0dXAgPSB0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5Lmxpc3Rlbk9uU3RyZWFtU2V0dXAoKTtcblxuICAgIGlmICghRWRnZUF1dGhQYXJzZXIuaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW4pKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSB0b2tlbiBbJXNdJywgdG9rZW4pO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spIHtcbiAgICAgIGNvbnN0IHt2YWxpZCwgdmFsaWRhdGlvblJlc3VsdH0gPSBTdHJlYW1UcmFja1RyYW5zZm9ybS52YWxpZGF0ZU1lZGlhU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT4oJ3ZpZGVvJywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKTtcblxuICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IodmFsaWRhdGlvblJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKSB7XG4gICAgICBjb25zdCB7dmFsaWQsIHZhbGlkYXRpb25SZXN1bHR9ID0gU3RyZWFtVHJhY2tUcmFuc2Zvcm0udmFsaWRhdGVNZWRpYVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT4oJ2F1ZGlvJywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKTtcblxuICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IodmFsaWRhdGlvblJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rKSB7XG4gICAgICBjb25zdCB7dmFsaWQsIHZhbGlkYXRpb25SZXN1bHR9ID0gRW5jb2RlZFN0cmVhbVNpbmsudmFsaWRhdGVFbmNvZGVkU3RyZWFtU2luaygndmlkZW8nLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmspO1xuXG4gICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcih2YWxpZGF0aW9uUmVzdWx0KTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmspIHtcbiAgICAgIGNvbnN0IHt2YWxpZCwgdmFsaWRhdGlvblJlc3VsdH0gPSBFbmNvZGVkU3RyZWFtU2luay52YWxpZGF0ZUVuY29kZWRTdHJlYW1TaW5rKCdhdWRpbycsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZEF1ZGlvU3RyZWFtU2luayk7XG5cbiAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKHZhbGlkYXRpb25SZXN1bHQpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUgJiYgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQm90aCBpbnNlcnRhYmxlLXN0cmVhbXMgYW5kIGVuY29kZWQtaW5zZXJ0YWJsZS1zdHJlYW1zIGFyZSBlbmFibGVkLCBvbmx5IHVzZSBvbmUgb3IgdGhlIG90aGVyJyk7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2sgPSB0eXBlb2YgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sgPT09ICdmdW5jdGlvbic7XG4gICAgY29uc3QgaGFzRW5jb2RlZFN0cmVhbVNpbmsgPSB0eXBlb2YgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmsgPT09ICdmdW5jdGlvbic7XG5cbiAgICBpZiAoaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2sgJiYgaGFzRW5jb2RlZFN0cmVhbVNpbmspIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQm90aCBNZWRpYSBTdHJlYW0gVHJhY2sgdHJhbnNmb3JtIGNhbGxiYWNrIGFuZCBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgc2luayBmdW5jdGlvbiBmb3VuZCwgb25seSB1c2Ugb25lIHR5cGUgb3IgdGhlIG90aGVyJyk7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgIGlmICghRmVhdHVyZUVuYWJsZW1lbnQuaXNJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0Jyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBNZWRpYSBTdHJlYW0gVHJhY2sgQVBJJyk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjaykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0NyZWF0ZUNoYW5uZWxPcHRpb25zIHRyYW5zZm9ybSBjYWxsYmFjayBmdW5jdGlvbiBpcyBtaXNzaW5nOyBob3dldmVyLCBpbnNlcnRhYmxlLXN0cmVhbXMgaXMgZW5hYmxlZCcpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjaykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoYENyZWF0ZUNoYW5uZWxPcHRpb25zIHRyYW5zZm9ybSBjYWxsYmFjayBmdW5jdGlvbiBmb3VuZDsgaG93ZXZlciwgaW5zZXJ0YWJsZS1zdHJlYW1zIGlzIG5vdCBlbmFibGVkYCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgIGlmICghKEZlYXR1cmVFbmFibGVtZW50LmlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIHx8IEZlYXR1cmVFbmFibGVtZW50LmlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKSkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0Jyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgQVBJJyk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFoYXNFbmNvZGVkU3RyZWFtU2luaykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0NyZWF0ZUNoYW5uZWxPcHRpb25zIHRyYW5zZm9ybSBzaW5rIGZ1bmN0aW9uIGlzIG1pc3Npbmc7IGhvd2V2ZXIsIGVuY29kZWQtaW5zZXJ0YWJsZS1zdHJlYW1zIGlzIGVuYWJsZWQnKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaGFzRW5jb2RlZFN0cmVhbVNpbmspIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKGBDcmVhdGVDaGFubmVsT3B0aW9ucyB0cmFuc2Zvcm0gc2luayBmdW5jdGlvbiBmb3VuZDsgaG93ZXZlciwgZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMgaXMgbm90IGVuYWJsZWRgKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgY29uc3QgdXJpID0gdGhpcy5nZXRVcmkodG9rZW4pO1xuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgaWYgKHN0YXRlID09PSBDaGFubmVsU3RhdGUuRXJyb3IgfHwgc3RhdGUgPT09IENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nKSB7XG4gICAgICAgICAgRGlzY292ZXJ5LmNsZWFyQ2FjaGVkQ2xvc2VzdEVuZHBvaW50KHVyaSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjazogKCkgPT4gUHJvbWlzZTx2b2lkPiA9ICgpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKTogdm9pZCA9PiB7XG4gICAgICAvLyBOZWVkIHRvIHNldCBpc1N0YXJ0aW5nIHRvIGZhbHNlIGFuZCBjYWxsIGhhbmRsZVN0cmVhbUZhaWx1cmUgaWYgc3RyZWFtIG1vbml0b3JzIGZvdW5kIGFuIGlzc3VlXG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gcmVzb2x2ZSh0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc3RyZWFtUGxheWVyID0gU3RyZWFtRmFjdG9yeS5jcmVhdGUodG9rZW4sIHRoaXMuX2NoYW5uZWxDb250ZXh0LCB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQsIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2spO1xuXG4gICAgaWYgKCFzdHJlYW1QbGF5ZXIpIHtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyZWFtUGxheWVyLnN0YXJ0KFxuICAgICAgdXJpLFxuICAgICAgdG9rZW4sXG4gICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLFxuICAgICAgdGhpcy5wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudC5iaW5kKHRoaXMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLmZhaWwoKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUrKztcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5vbmxpbmUudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmNsZWFuVXBSZXNvdXJjZXMoJ2NsaWVudDpjbGVhbnVwLWFmdGVyLWZhaWxlZC1zZXR1cCcpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNsaWVudFN0YXJ0RXJyb3I7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3RhcnQgY2hhbm5lbCcsIGUpO1xuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPT09IENoYW5uZWxTdGF0ZS5QbGF5aW5nIHx8ICFTREsuYXV0b21hdGljUmV0cnlPbkZhaWx1cmUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUnLCBlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCB0aGlzLmdldFJldHJ5SW50ZXJ2YWwoKSk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc3RhcnRBZnRlclN0b3AoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3N0YXRlQ29udGV4dC5pc0Rpc3Bvc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5uZWwgd2FzIGFscmVhZHkgZGlzcG9zZWQnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudCh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnN0YXJ0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHBsYXkoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbWVkaWFTdHJlYW0gPSB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWU7XG5cbiAgICBpZiAoIW1lZGlhU3RyZWFtKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGFydCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50KG1lZGlhU3RyZWFtKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmV0cnlJbnRlcnZhbCgpOiBudW1iZXIge1xuICAgIHN3aXRjaCAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpIHtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkluaXRpYWxpemluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0YW5kQnk6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5PZmZsaW5lOlxuICAgICAgICByZXR1cm4gc3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvUmVzdHJpY3RlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkdlb0Jsb2NrZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdG9wcGVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhcnRpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QbGF5aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUGF1c2VkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29ubmVjdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjpcbiAgICAgICAgLy8gRmlyc3QgYW5kIHNlY29uZCBhdHRlbXB0IGZhc3QsIGFmdGVyIHRoYXQgZXhwb25lbnRpYWwgd2l0aCBiYWNrb2ZmIGludGVydmFsXG4gICAgICAgIHJldHVybiB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYuZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudCh0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlU3RyZWFtRmFpbHVyZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBzd2l0Y2ggKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlKSB7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlJlY29ubmVjdGluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0YW5kQnk6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5PZmZsaW5lOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb3ZlcmluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNvbm5lY3Rpb25FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNsaWVudFN0YXJ0RXJyb3I6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdSZXRyeSBzdGFydCB3aXRoIGluaXRpYWwgc3RhdGUgWyVzXSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUsIENoYW5uZWxTdGF0ZVt0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZV0pO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyB1bmF1dGhvcml6ZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgcHJvdmlkZSBhIG5ldyB0b2tlbiBhbmQgaW52b2tlIHN0YXJ0KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBnZW8gcmVzdHJpY3RlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkdlb0Jsb2NrZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIGdlbyBibG9ja2VkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIHByb3ZpZGUgYSBuZXcgdG9rZW4gYW5kIGludm9rZSBzdGFydCgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RvcHBlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgc3RvcHBlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuSW5pdGlhbGl6aW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBhbHJlYWR5IGluaXRpYWxpemluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QbGF5aW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBwbGF5aW5nLCBza2lwcGluZyByZXRyeSBvZiBzdGFydCcpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBhdXNlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgcGF1c2VkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIGludm9rZSBwbGF5KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFydGluZzpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgYWxyZWFkeSBzdGFydGluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHN0b3BwZWQgZHVlIHRvIHVuc3VwcG9ydGVkIGZlYXR1cmUsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgc3RvcHBlZCBkdWUgdG8gY29uZmlndXJhdGlvbiBlcnJvciwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFuVXBSZXNvdXJjZXMocmVhc29uOiBzdHJpbmcgPSBkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24pOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICBjb25zdCBwZWVyQ29ubmVjdGlvbiA9IHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZTtcblxuICAgIGlmIChwZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gbnVsbDtcbiAgICAgIHBlZXJDb25uZWN0aW9uLmNsb3NlKCk7XG4gICAgICBwZWVyQ29ubmVjdGlvbi5kaXNwb3NlKCk7XG5cbiAgICAgIGlmIChTREsuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCAmJiAhKEZlYXR1cmVFbmFibGVtZW50LmlzTW9iaWxlICYmIFNESy5za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpKSB7XG4gICAgICAgIEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb24oKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUuZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpO1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0b3BwZWQudmFsdWUgPSB0cnVlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YW5kYnkudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5kZXN0cm95U3RyZWFtKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSwgcmVhc29uKVxuICAgICAgICAudGhlbigoe3N0YXR1c30pID0+IHtcbiAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBGYWlsZWQgdG8gZGVzdHJveSBzdHJlYW0gd2l0aCByZWFzb24gWyVzXScsIHRoaXMuc3RyZWFtSWQsIHN0YXR1cyk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBEZXN0cm95ZWQgc3RyZWFtIHdpdGggcmVhc29uIFslc10nLCB0aGlzLnN0cmVhbUlkLCBzdGF0dXMpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdbJXNdIEZhaWxlZCB0byBkZXN0cm95IHN0cmVhbScsIHRoaXMuc3RyZWFtSWQsIGUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy52aWRlb0VsZW1lbnQgJiYgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldCkge1xuICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zZXNzaW9uSWQgPSAnJztcbiAgICAgIHRoaXMudmlkZW9FbGVtZW50LmRhdGFzZXQuc3RyZWFtSWQgPSAnJztcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gIH1cblxuICBwcml2YXRlIGNvbmZpZ3VyZUZyYW1lVGltaW5nSW5mb3JtYXRpb24oY2FwYWJpbGl0aWVzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGNvbnN0IGZyYW1lVGltaW5nSW5mb3JtYXRpb25DYXBhYmlsaXR5ID0gY2FwYWJpbGl0aWVzLmZpbmQoY2FwYWJpbGl0eSA9PiBjYXBhYmlsaXR5LnN0YXJ0c1dpdGgoJ2ZyYW1lLXRpbWluZy1pbmZvcm1hdGlvbj0nKSk7XG5cbiAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZWNvZGUudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZXN0YW1wcy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LmlzRW5hYmxlZC52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKCFmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ2FwYWJpbGl0eSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2FibGluZyBmcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gYXMgbm8gY2FwYWJpbGl0eSB3YXMgZm91bmQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghRmVhdHVyZUVuYWJsZW1lbnQuaXNDaGFubmVsRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1cHBvcnRlZCkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2FibGluZyBmcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gYXMgdGhlIGVudmlyb25tZW50IGRvZXMgbm90IHN1cHBvcnQgaXQgWyVzXScsIGZyYW1lVGltaW5nSW5mb3JtYXRpb25DYXBhYmlsaXR5KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZyYW1lVGltaW5nSW5mb3JtYXRpb25DYXBhYmlsaXR5LnNwbGl0KCc9JylbMV1cbiAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAubWFwKG9wdGlvbiA9PiBvcHRpb24udHJpbSgpKVxuICAgICAgLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgc3dpdGNoIChvcHRpb24pIHtcbiAgICAgICAgICBjYXNlICd0aW1lY29kZSc6XG4gICAgICAgICAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZWNvZGUudmFsdWUgPSB0cnVlO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICd0aW1lc3RhbXBzJzpcbiAgICAgICAgICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lc3RhbXBzLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdJZ25vcmluZyB1bmtub3duIGZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBvcHRpb24gWyVzXScsIG9wdGlvbik7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gY29uZmlndXJhdGlvbiBbKHRpbWVjb2RlIFslc10sIHRpbWVzdGFtcHMgWyVzXSldJywgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVjb2RlLnZhbHVlLCB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZXN0YW1wcy52YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50KG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHZpZGVvRWxlbWVudCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcblxuICAgIGlmICghdmlkZW9FbGVtZW50KSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQ7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlKSB7XG4gICAgICB2aWRlb0VsZW1lbnQuc3JjT2JqZWN0ID0gbWVkaWFTdHJlYW07XG4gICAgfVxuXG4gICAgY29uc3QgcGxheVByb21pc2UgPSB2aWRlb0VsZW1lbnQucGxheSgpO1xuXG4gICAgaWYgKHBsYXlQcm9taXNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IHRydWU7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QbGF5aW5nO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHBsYXlQcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBsYXlpbmc7XG4gICAgfSkuY2F0Y2goZSA9PiB7XG4gICAgICBjb25zdCBoYXNBdWRpb1RyYWNrID0gISFtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5maWx0ZXIodHJhY2sgPT4ge1xuICAgICAgICByZXR1cm4gdHJhY2sua2luZCA9PT0gJ2F1ZGlvJztcbiAgICAgIH0pLmxlbmd0aDtcbiAgICAgIGNvbnN0IGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmID0gIVNESy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcblxuICAgICAgaWYgKGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmIHx8IHZpZGVvRWxlbWVudC5tdXRlZCB8fCAhaGFzQXVkaW9UcmFjaykge1xuICAgICAgICB2aWRlb0VsZW1lbnQuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGF1c2VkO1xuXG4gICAgICAgIGlmIChhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZU9mZikge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFBhdXNlZCB2aWRlbyBhZnRlciBwbGF5IGZhaWxlZC4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkLicsIHRoaXMuc3RyZWFtSWQsIGUpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhc0F1ZGlvVHJhY2spIHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gcGxheSB2aWRlby4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkLicsIHRoaXMuc3RyZWFtSWQsIGUpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHBsYXkgbXV0ZWQgdmlkZW8uIE1hbnVhbCB1c2VyIGFjdGlvbiByZXF1aXJlZC4nLCB0aGlzLnN0cmVhbUlkLCBlKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZpZGVvRWxlbWVudC5tdXRlZCA9IHRydWU7XG5cbiAgICAgIHJldHVybiB2aWRlb0VsZW1lbnQucGxheSgpXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBQbGF5ZWQgdmlkZW8gYWZ0ZXIgYXV0byBtdXRpbmcuIE1hbnVhbCB1c2VyIGFjdGlvbiByZXF1aXJlZCB0byB1bm11dGUuJywgdGhpcy5zdHJlYW1JZCk7XG5cbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGxheWluZztcbiAgICAgICAgfSkuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gZmFsc2U7XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gcGxheSB2aWRlby4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkLicsIHRoaXMuc3RyZWFtSWQsIGUpO1xuXG4gICAgICAgICAgdmlkZW9FbGVtZW50LnNyY09iamVjdCA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QYXVzZWQ7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmVudW0gQ2hhbm5lbFN0YXRlIHtcbiAgSW5pdGlhbGl6aW5nID0gMCxcbiAgT2ZmbGluZSA9IDEsXG4gIFN0YXJ0aW5nID0gMixcbiAgUGF1c2VkID0gMyxcbiAgUGxheWluZyA9IDQsXG4gIFJlY292ZXJpbmcgPSA1LFxuICBSZWNvbm5lY3RpbmcgPSA2LFxuICBTdGFuZEJ5ID0gNyxcbiAgU3RvcHBlZCA9IDgsXG4gIFVuYXV0aG9yaXplZCA9IDksXG4gIEdlb1Jlc3RyaWN0ZWQgPSAxMCxcbiAgR2VvQmxvY2tlZCA9IDExLFxuICBVbnN1cHBvcnRlZEZlYXR1cmUgPSAxMixcbiAgQ29uZmlndXJhdGlvbkVycm9yID0gMTMsXG4gIFRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvciA9IDE0LFxuICBDb25uZWN0aW9uRXJyb3IgPSAxNSxcbiAgQ2xpZW50U3RhcnRFcnJvciA9IDE2LFxuICBFcnJvciA9IDE3XG59XG5cbmV4cG9ydCBkZWZhdWx0IENoYW5uZWxTdGF0ZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtNaWxsaXNlY29uZH0gZnJvbSAnLi4vLi4vdW5pdHMvVW5pdHMnO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQge0lFbmNvZGVkU3RyZWFtU2lua30gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vRW5jb2RlZFN0cmVhbVNpbmsnO1xuaW1wb3J0IHtJU3RyZWFtVHJhY2tUcmFuc2Zvcm19IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL1N0cmVhbVRyYWNrVHJhbnNmb3JtJztcbmltcG9ydCBDaGFubmVsLCB7Q2hhbm5lbE9wdGlvbnN9IGZyb20gJy4vQ2hhbm5lbCc7XG5pbXBvcnQge0lPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrfSBmcm9tICcuL0lPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrJztcbmltcG9ydCB7SU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrfSBmcm9tICcuL0lPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayc7XG5cbmV4cG9ydCB0eXBlIENyZWF0ZUNoYW5uZWxPcHRpb25zID0ge1xuICB2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQ7XG4gIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuO1xuICB0YXJnZXRMYWc/OiBNaWxsaXNlY29uZDtcbiAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaz86IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPjtcbiAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaz86IElTdHJlYW1UcmFja1RyYW5zZm9ybTxBdWRpb0RhdGE+O1xuICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rPzogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPjtcbiAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luaz86IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGFubmVscyB7XG4gIHN0YXRpYyBjcmVhdGVDaGFubmVsKG9wdGlvbnM6IENyZWF0ZUNoYW5uZWxPcHRpb25zKTogQ2hhbm5lbCB7XG4gICAgaWYgKCFTREsuaW5pdGlhbGl6ZWQudmFsdWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU0RLIGlzIG5vdCBsb2FkZWQuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY2hhbm5lbE9wdGlvbnM6IENoYW5uZWxPcHRpb25zID0ge1xuICAgICAgdGFyZ2V0TGFnOiBvcHRpb25zLnRhcmdldExhZyxcbiAgICAgIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IG9wdGlvbnMudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayxcbiAgICAgIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IG9wdGlvbnMuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayxcbiAgICAgIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IG9wdGlvbnMuZW5jb2RlZFZpZGVvU3RyZWFtU2luayxcbiAgICAgIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IG9wdGlvbnMuZW5jb2RlZEF1ZGlvU3RyZWFtU2lua1xuICAgIH07XG4gICAgY29uc3Qgb3B0aW9uc1dpdGhSZWFsVGltZVN1YnNjcmliZUNhbGxiYWNrczogQ2hhbm5lbE9wdGlvbnMgJiB7XG4gICAgICBvblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrPzogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s7XG4gICAgICBvblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz86IElPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaztcbiAgICB9ID0gb3B0aW9ucztcblxuICAgIGlmIChvcHRpb25zV2l0aFJlYWxUaW1lU3Vic2NyaWJlQ2FsbGJhY2tzLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2spIHtcbiAgICAgIGNoYW5uZWxPcHRpb25zLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2sgPSBvcHRpb25zV2l0aFJlYWxUaW1lU3Vic2NyaWJlQ2FsbGJhY2tzLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnNXaXRoUmVhbFRpbWVTdWJzY3JpYmVDYWxsYmFja3Mub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2spIHtcbiAgICAgIGNoYW5uZWxPcHRpb25zLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrID0gb3B0aW9uc1dpdGhSZWFsVGltZVN1YnNjcmliZUNhbGxiYWNrcy5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaztcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IENoYW5uZWwob3B0aW9ucy52aWRlb0VsZW1lbnQsIG9wdGlvbnMudG9rZW4sIGNoYW5uZWxPcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGlzRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRmVhdHVyZUVuYWJsZW1lbnQuaXNDaGFubmVsRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1cHBvcnRlZDtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDaGFubmVscyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgQ2hhbm5lbFN0YXRlIGZyb20gJy4uL2NoYW5uZWxzL0NoYW5uZWxTdGF0ZSc7XG5pbXBvcnQgRGltZW5zaW9uIGZyb20gJy4uLy4uL3ZpZGVvL0RpbWVuc2lvbic7XG5pbXBvcnQgRW5kUG9pbnQsIHtJU3RyZWFtLCBTdWJzY3JpYmVTdGF0dXN9IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQge0lPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrfSBmcm9tICcuLi9jaGFubmVscy9JT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayc7XG5pbXBvcnQge0lPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFja30gZnJvbSAnLi4vY2hhbm5lbHMvSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrJztcbmltcG9ydCBWaWRlb1RlbGVtZXRyeSBmcm9tICcuLi8uLi92aWRlby9WaWRlb1RlbGVtZXRyeSc7XG5pbXBvcnQge0lSdGNNb25pdG9yU3RhdGlzdGljLCBJUnRjU3RhdGlzdGljfSBmcm9tICcuLi8uLi9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IHtCaXRzUGVyU2Vjb25kLCBNaWxsaXNlY29uZH0gZnJvbSAnLi4vLi4vdW5pdHMvVW5pdHMnO1xuXG5jb25zdCBkZWZhdWx0VGFyZ2V0TGFnID0gMDtcblxuZXhwb3J0IHR5cGUgQ2hhbm5lbENvbnRleHRPcHRpb25zID0ge1xuICB0YXJnZXRMYWc/OiBudW1iZXI7XG4gIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s/OiBJT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgb25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/OiBJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGFubmVsQ29udGV4dCB7XG4gIGNoYW5uZWxJbml0aWFsaXphdGlvbjogRGF0ZTtcbiAgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICBjaGFubmVsRGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICByZW5kZXJlckRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdDtcbiAgdmlkZW9FbGVtZW50OiBTdWJqZWN0PEhUTUxWaWRlb0VsZW1lbnQgfCBudWxsPjtcbiAgc3RhdGU6IFN1YmplY3Q8Q2hhbm5lbFN0YXRlPjtcbiAgZXhpc3RzOiBTdWJqZWN0PGJvb2xlYW4gfCBudWxsPjtcbiAgYXV0b011dGVkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBhdXRvUGF1c2VkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBhdXRob3JpemVkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBvbmxpbmU6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGxvYWRpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHBsYXlpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHN0YW5kYnk6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHN0b3BwZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHRhcmdldExhZzogU3ViamVjdDxNaWxsaXNlY29uZD47XG4gIGxhZzogU3ViamVjdDxNaWxsaXNlY29uZCB8IHVuZGVmaW5lZD47XG4gIGJpdHJhdGVMaW1pdDogU3ViamVjdDxCaXRzUGVyU2Vjb25kPjtcbiAgcmVzb2x1dGlvbjogU3ViamVjdDxEaW1lbnNpb24+O1xuICBmYWlsdXJlQ291bnQ6IFN1YmplY3Q8bnVtYmVyPjtcbiAgZW5kUG9pbnQ6IFN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPjtcbiAgb25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjazogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2sgfCBudWxsO1xuICBvblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjazogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrIHwgbnVsbDtcbiAgc3RyZWFtOiBTdWJqZWN0PElTdHJlYW0gfCBudWxsPjtcbiAgcnRjU3RhdGlzdGljczogU3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+O1xuICB2aWRlb1RlbGVtZXRyeTogVmlkZW9UZWxlbWV0cnkgfCBudWxsO1xuICBydGNBdWRpb1N0YXRpc3RpYzogSVJ0Y1N0YXRpc3RpYyB8IG51bGw7XG4gIHJ0Y1ZpZGVvU3RhdGlzdGljOiBJUnRjU3RhdGlzdGljIHwgbnVsbDtcbiAgY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IENoYW5uZWxDb250ZXh0T3B0aW9ucykge1xuICAgIHRoaXMuZGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLmNoYW5uZWxEaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIHRoaXMucmVuZGVyZXJEaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIHRoaXMuY2hhbm5lbEluaXRpYWxpemF0aW9uID0gbmV3IERhdGUoKTtcbiAgICB0aGlzLnZpZGVvRWxlbWVudCA9IG5ldyBTdWJqZWN0PEhUTUxWaWRlb0VsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnN0YXRlID0gbmV3IFN1YmplY3Q8Q2hhbm5lbFN0YXRlPihDaGFubmVsU3RhdGUuSW5pdGlhbGl6aW5nKTtcbiAgICB0aGlzLmV4aXN0cyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLmF1dG9NdXRlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmF1dG9QYXVzZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5hdXRob3JpemVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgdGhpcy5vbmxpbmUgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLmxvYWRpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5wbGF5aW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuc3RhbmRieSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnN0b3BwZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy50YXJnZXRMYWcgPSBuZXcgU3ViamVjdDxNaWxsaXNlY29uZD4ob3B0aW9ucz8udGFyZ2V0TGFnID8/IGRlZmF1bHRUYXJnZXRMYWcpO1xuICAgIHRoaXMubGFnID0gbmV3IFN1YmplY3Q8TWlsbGlzZWNvbmQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5iaXRyYXRlTGltaXQgPSBuZXcgU3ViamVjdDxCaXRzUGVyU2Vjb25kPigwKTtcbiAgICB0aGlzLnJlc29sdXRpb24gPSBuZXcgU3ViamVjdDxEaW1lbnNpb24+KERpbWVuc2lvbi5lbXB0eSk7XG4gICAgdGhpcy5mYWlsdXJlQ291bnQgPSBuZXcgU3ViamVjdDxudW1iZXI+KDApO1xuICAgIHRoaXMuZW5kUG9pbnQgPSBuZXcgU3ViamVjdDxFbmRQb2ludCB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayA9IG9wdGlvbnM/Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2sgPz8gbnVsbDtcbiAgICB0aGlzLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrID0gb3B0aW9ucz8ub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2sgPz8gbnVsbDtcbiAgICB0aGlzLnN0cmVhbSA9IG5ldyBTdWJqZWN0PElTdHJlYW0gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnJ0Y1N0YXRpc3RpY3MgPSBuZXcgU3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMudmlkZW9UZWxlbWV0cnkgPSBudWxsO1xuICAgIHRoaXMucnRjQXVkaW9TdGF0aXN0aWMgPSBudWxsO1xuICAgIHRoaXMucnRjVmlkZW9TdGF0aXN0aWMgPSBudWxsO1xuICAgIHRoaXMuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0ID0gMDtcbiAgfVxuXG4gIGdldCBzdHJlYW1JZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0cmVhbSA9IHRoaXMuc3RyZWFtLnZhbHVlO1xuXG4gICAgaWYgKCFzdHJlYW0pIHtcbiAgICAgIHJldHVybiAnLSc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmVhbS5zdHJlYW1JZDtcbiAgfVxuXG4gIGFwcGx5U3RhdHVzKHN0YXR1czogU3Vic2NyaWJlU3RhdHVzKTogdm9pZCB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgY2FzZSAnZ2VvLXJlc3RyaWN0ZWQnOlxuICAgICAgY2FzZSAnZ2VvLWJsb2NrZWQnOlxuICAgICAgICB0aGlzLmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgICAgICB0aGlzLnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RyZWFtLnZhbHVlID0gbnVsbDtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICduby1zdHJlYW0nOlxuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgdGhpcy5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgICAgICB0aGlzLnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RyZWFtLnZhbHVlID0gbnVsbDtcblxuICAgICAgICByZXR1cm47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSsrO1xuICAgICAgICB0aGlzLnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RyZWFtLnZhbHVlID0gbnVsbDtcblxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgYXBwbHlTZXNzaW9uQW5kU3RyZWFtUHJvcGVydGllc1RvVmlkZW9FbGVtZW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZpZGVvRWxlbWVudC52YWx1ZSAmJiB0aGlzLnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0KSB7XG4gICAgICB0aGlzLnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0LnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgICB0aGlzLnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0LnN0cmVhbUlkID0gdGhpcy5zdHJlYW1JZDtcbiAgICB9XG4gIH1cblxuICBtYXBTdWJzY3JpYmVTdGF0dXNUb0NoYW5uZWxTdGF0dXMoc3RhdHVzOiBTdWJzY3JpYmVTdGF0dXMpOiBDaGFubmVsU3RhdGUge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuU3RhcnRpbmc7XG4gICAgICBjYXNlICduby1zdHJlYW0nOlxuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5TdGFuZEJ5O1xuICAgICAgY2FzZSAnZ2VvLXJlc3RyaWN0ZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkdlb1Jlc3RyaWN0ZWQ7XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuR2VvQmxvY2tlZDtcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmc7XG4gICAgICBjYXNlICdmb3JiaWRkZW4tdGFnJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICBjYXNlICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5FcnJvcjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHN0YXR1cyk7XG4gICAgfVxuICB9XG5cbiAgbWFwU3Vic2NyaWJlU3RhdHVzVG9FeGlzdHMoc3RhdHVzOiBTdWJzY3JpYmVTdGF0dXMpOiBib29sZWFuIHwgbnVsbCB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgIGNhc2UgJ25vLXN0cmVhbSc6XG4gICAgICBjYXNlICdnZW8tcmVzdHJpY3RlZCc6XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICBjYXNlICdmb3JiaWRkZW4tdGFnJzpcbiAgICAgIGNhc2UgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgY2FzZSAndGltZW91dCc6XG4gICAgICBjYXNlICdyYXRlLWxpbWl0ZWQnOlxuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhpc3RzLnZhbHVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge0RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLCBSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb259IGZyb20gJy4uL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCB7XG4gIHB1YmxpYyByZWFkb25seSBzaG91bGRFeHRyYWN0VGltZWNvZGU6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHB1YmxpYyByZWFkb25seSBzaG91bGRFeHRyYWN0VGltZXN0YW1wczogU3ViamVjdDxib29sZWFuPjtcbiAgcHVibGljIHJlYWRvbmx5IGlzRW5hYmxlZDogU3ViamVjdDxib29sZWFuPjtcbiAgcHVibGljIHJlYWRvbmx5IGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG4gIHB1YmxpYyByZWFkb25seSByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb246IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zaG91bGRFeHRyYWN0VGltZWNvZGUgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zaG91bGRFeHRyYWN0VGltZXN0YW1wcyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmlzRW5hYmxlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uID0gbmV3IFN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IG5ldyBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KG51bGwpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGVlckNvbm5lY3Rpb25Db250ZXh0IHtcbiAgbWVkaWFTdHJlYW06IFN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPjtcbiAgcGVlckNvbm5lY3Rpb246IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD47XG4gIHBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm1lZGlhU3RyZWFtID0gbmV3IFN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnBlZXJDb25uZWN0aW9uID0gbmV3IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RhdGVDb250ZXh0IHtcbiAgaXNTdGFydGluZzogU3ViamVjdDxib29sZWFuPjtcbiAgaXNEaXNwb3NlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmlzU3RhcnRpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5pc0Rpc3Bvc2VkID0gZmFsc2U7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge1ZpZGVvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYyc7XG5pbXBvcnQge0F1ZGlvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlYyc7XG5pbXBvcnQge0lTdHJlYW1UcmFja1RyYW5zZm9ybX0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0nO1xuaW1wb3J0IHtJRW5jb2RlZFN0cmVhbVNpbmt9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rJztcbmltcG9ydCBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9NZXNzYWdlUm91dGVyJztcblxuZXhwb3J0IHR5cGUgU3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMgPSB7XG4gIGhhc0luc2VydGFibGVTdHJlYW1zOiBib29sZWFuO1xuICBoYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IGJvb2xlYW47XG4gIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT4gfCB1bmRlZmluZWQ7XG4gIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4gfCB1bmRlZmluZWQ7XG4gIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT4gfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2sgPSB7XG4gIG1lZGlhU3RyZWFtVHJhY2s6IE1lZGlhU3RyZWFtVHJhY2sgfCBudWxsO1xuICByZWNlaXZlcjogUlRDUnRwUmVjZWl2ZXIgfCBudWxsO1xuICBtaWQ6IHN0cmluZyB8IG51bGw7XG4gIGNvZGVjOiBWaWRlb0NvZGVjIHwgQXVkaW9Db2RlYyB8IG51bGw7XG4gIHRyYW5zZm9ybVBpcGVsaW5lV29ya2VyOiBXb3JrZXIgfCBudWxsO1xuICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIHwgbnVsbDtcbiAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogc3RyaW5nW107XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IHtcbiAgcmVhZG9ubHkgaGFzSW5zZXJ0YWJsZVN0cmVhbXM6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IGhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtczogU3ViamVjdDxib29sZWFuPjtcbiAgcmVhZG9ubHkgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+IHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgYXVkaW9UcmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrO1xuICByZWFkb25seSB2aWRlb1RyYWNrOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2s7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogU3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMpIHtcbiAgICB0aGlzLmhhc0luc2VydGFibGVTdHJlYW1zID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4ob3B0aW9ucy5oYXNJbnNlcnRhYmxlU3RyZWFtcyk7XG4gICAgdGhpcy5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPSBuZXcgU3ViamVjdDxib29sZWFuPihvcHRpb25zLmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyk7XG4gICAgdGhpcy52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrID0gb3B0aW9ucy52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrO1xuICAgIHRoaXMuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayA9IG9wdGlvbnMuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaztcbiAgICB0aGlzLmVuY29kZWRWaWRlb1N0cmVhbVNpbmsgPSBvcHRpb25zLmVuY29kZWRWaWRlb1N0cmVhbVNpbms7XG4gICAgdGhpcy5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rID0gb3B0aW9ucy5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rO1xuICAgIHRoaXMuYXVkaW9UcmFjayA9IHtcbiAgICAgIG1lZGlhU3RyZWFtVHJhY2s6IG51bGwsXG4gICAgICByZWNlaXZlcjogbnVsbCxcbiAgICAgIG1pZDogbnVsbCxcbiAgICAgIGNvZGVjOiBudWxsLFxuICAgICAgdHJhbnNmb3JtUGlwZWxpbmVXb3JrZXI6IG51bGwsXG4gICAgICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBudWxsLFxuICAgICAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogW11cbiAgICB9O1xuICAgIHRoaXMudmlkZW9UcmFjayA9IHtcbiAgICAgIG1lZGlhU3RyZWFtVHJhY2s6IG51bGwsXG4gICAgICByZWNlaXZlcjogbnVsbCxcbiAgICAgIG1pZDogbnVsbCxcbiAgICAgIGNvZGVjOiBudWxsLFxuICAgICAgdHJhbnNmb3JtUGlwZWxpbmVXb3JrZXI6IG51bGwsXG4gICAgICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBudWxsLFxuICAgICAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogW11cbiAgICB9O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9rZW5Db250ZXh0IHtcbiAgdG9rZW46IFN1YmplY3Q8RW5jb2RlZEVkZ2VUb2tlbj47XG4gIHRva2VuRXhwaXJpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG5cbiAgY29uc3RydWN0b3IodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pIHtcbiAgICB0aGlzLnRva2VuID0gbmV3IFN1YmplY3Q8RW5jb2RlZEVkZ2VUb2tlbj4odG9rZW4pO1xuICAgIHRoaXMudG9rZW5FeHBpcmluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZW51bSBBdWRpb0NvZGVjIHtcbiAgT1BVUyA9IDAsXG4gIEFBQyA9IDFcbn1cblxuZXhwb3J0IHR5cGUgQXVkaW9Db2RlY1R5cGUgPSAnT1BVUycgfCAnQUFDJzsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtBdWRpb0NvZGVjLCBBdWRpb0NvZGVjVHlwZX0gZnJvbSAnLi9BdWRpb0NvZGVjJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi8uLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXVkaW9Db2RlY01hcHBpbmcge1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRBdWRpb0NvZGVjVG9BdWRpb0NvZGVjVHlwZShhdWRpb0NvZGVjOiBBdWRpb0NvZGVjKTogQXVkaW9Db2RlY1R5cGUge1xuICAgIHN3aXRjaCAoYXVkaW9Db2RlYykge1xuICAgICAgY2FzZSBBdWRpb0NvZGVjLk9QVVM6XG4gICAgICAgIHJldHVybiAnT1BVUyc7XG4gICAgICBjYXNlIEF1ZGlvQ29kZWMuQUFDOlxuICAgICAgICByZXR1cm4gJ0FBQyc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShhdWRpb0NvZGVjKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRBdWRpb0NvZGVjVHlwZVRvQXVkaW9Db2RlYyhhdWRpb0NvZGVjVHlwZTogQXVkaW9Db2RlY1R5cGUpOiBBdWRpb0NvZGVjIHtcbiAgICBjb25zdCBhdWRpb0NvZGVjU3RyaW5nID0gYXVkaW9Db2RlY1R5cGUudG9VcHBlckNhc2UoKSBhcyBrZXlvZiB0eXBlb2YgQXVkaW9Db2RlYztcblxuICAgIHN3aXRjaCAoYXVkaW9Db2RlY1N0cmluZykge1xuICAgICAgY2FzZSAnT1BVUyc6XG4gICAgICAgIHJldHVybiBBdWRpb0NvZGVjLk9QVVM7XG4gICAgICBjYXNlICdBQUMnOlxuICAgICAgICByZXR1cm4gQXVkaW9Db2RlYy5BQUM7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShhdWRpb0NvZGVjU3RyaW5nKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGVudW0gVmlkZW9Db2RlYyB7XG4gIEgyNjQgPSAwLFxuICBWUDggPSAxLFxuICBWUDkgPSAyXG59XG5cbmV4cG9ydCB0eXBlIFZpZGVvQ29kZWNUeXBlID0gJ0gyNjQnIHwgJ1ZQOCcgfCAnVlA5JzsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uLy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IHtWaWRlb0NvZGVjLCBWaWRlb0NvZGVjVHlwZX0gZnJvbSAnLi9WaWRlb0NvZGVjJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmlkZW9Db2RlY01hcHBpbmcge1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRWaWRlb0NvZGVjVG9WaWRlb0NvZGVjVHlwZSh2aWRlb0NvZGVjOiBWaWRlb0NvZGVjKTogVmlkZW9Db2RlY1R5cGUge1xuICAgIHN3aXRjaCAodmlkZW9Db2RlYykge1xuICAgICAgY2FzZSBWaWRlb0NvZGVjLkgyNjQ6XG4gICAgICAgIHJldHVybiAnSDI2NCc7XG4gICAgICBjYXNlIFZpZGVvQ29kZWMuVlA4OlxuICAgICAgICByZXR1cm4gJ1ZQOCc7XG4gICAgICBjYXNlIFZpZGVvQ29kZWMuVlA5OlxuICAgICAgICByZXR1cm4gJ1ZQOSc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh2aWRlb0NvZGVjKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRWaWRlb0NvZGVjVHlwZVRvVmlkZW9Db2RlYyh2aWRlb0NvZGVjVHlwZTogVmlkZW9Db2RlY1R5cGUpOiBWaWRlb0NvZGVjIHtcbiAgICBjb25zdCB2aWRlb0NvZGVjU3RyaW5nID0gdmlkZW9Db2RlY1R5cGUudG9VcHBlckNhc2UoKSBhcyBrZXlvZiB0eXBlb2YgVmlkZW9Db2RlYztcblxuICAgIHN3aXRjaCAodmlkZW9Db2RlY1N0cmluZykge1xuICAgICAgY2FzZSAnSDI2NCc6XG4gICAgICAgIHJldHVybiBWaWRlb0NvZGVjLkgyNjQ7XG4gICAgICBjYXNlICdWUDgnOlxuICAgICAgICByZXR1cm4gVmlkZW9Db2RlYy5WUDg7XG4gICAgICBjYXNlICdWUDknOlxuICAgICAgICByZXR1cm4gVmlkZW9Db2RlYy5WUDk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh2aWRlb0NvZGVjU3RyaW5nKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgbmV3IFVpbnQ4QXJyYXkoWzB4MDAsIDB4MDAsIDB4MDAsIDB4MDFdKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuY29uc3QgZGVmYXVsdERpc2NvdmVyeVVyaSA9ICdodHRwczovL3BjYXN0LnBoZW5peHJ0cy5jb20vcGNhc3QvZW5kUG9pbnRzJztcblxuZXhwb3J0IHtkZWZhdWx0RGlzY292ZXJ5VXJpfTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZU1vZGVUeXBlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCaXRyYXRlTW9kZU1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUoYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlKTogQml0cmF0ZU1vZGVUeXBlIHtcbiAgICBzd2l0Y2ggKGJpdHJhdGVNb2RlKSB7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLk5vcm1hbDpcbiAgICAgICAgcmV0dXJuICdOb3JtYWwnO1xuICAgICAgY2FzZSBCaXRyYXRlTW9kZS5Gb3JjZTpcbiAgICAgICAgcmV0dXJuICdGb3JjZSc7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLlJlc2V0OlxuICAgICAgICByZXR1cm4gJ1Jlc2V0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGJpdHJhdGVNb2RlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtCaXRyYXRlU3RhdGUsIEJpdHJhdGVTdGF0ZVR5cGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJpdHJhdGVTdGF0ZU1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZShiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZSk6IEJpdHJhdGVTdGF0ZVR5cGUge1xuICAgIHN3aXRjaCAoYml0cmF0ZVN0YXRlKSB7XG4gICAgICBjYXNlIEJpdHJhdGVTdGF0ZS5LZWVwOlxuICAgICAgICByZXR1cm4gJ0tlZXAnO1xuICAgICAgY2FzZSBCaXRyYXRlU3RhdGUuUmVzZXQ6XG4gICAgICAgIHJldHVybiAnUmVzZXQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoYml0cmF0ZVN0YXRlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBEaXNjb3ZlcnlTZXJ2aWNlIGZyb20gJy4vRGlzY292ZXJ5U2VydmljZSc7XG5pbXBvcnQgRW5kUG9pbnQgZnJvbSAnLi9FbmRQb2ludCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5cbmNvbnN0IGRpc2NvdmVyeUNhY2hlSW50ZXJ2YWwgPSA2MDAwMDtcblxuaW50ZXJmYWNlIElQZXJVUklFbmRwb2ludCB7IFt4OiBzdHJpbmddOiBQcm9taXNlPEVuZFBvaW50PiB9XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc2NvdmVyeSB7XG4gIHByaXZhdGUgc3RhdGljIF9jYWNoZTogSVBlclVSSUVuZHBvaW50ID0ge307XG5cbiAgc3RhdGljIGFzeW5jIHByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5KCk6IFByb21pc2U8RW5kUG9pbnQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8RW5kUG9pbnQ+KHJlc29sdmVFbmRQb2ludFByb21pc2UgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXJpID0gbmV3IGdsb2JhbFNjb3BlLlVSTChTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgICByZXR1cm4gRGlzY292ZXJ5LmRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmcodXJpKVxuICAgICAgICAgIC50aGVuKHJlc29sdmVFbmRQb2ludFByb21pc2UpXG4gICAgICAgICAgLnRoZW4oKCkgPT4gZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmcodXJpOiBVUkwpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgY29uc3QgdXJsID0gdXJpLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAodXJsIGluIERpc2NvdmVyeS5fY2FjaGUpIHtcbiAgICAgIHJldHVybiBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgfVxuXG4gICAgY29uc3QgZGlzY292ZXJ5U2VydmljZSA9IG5ldyBEaXNjb3ZlcnlTZXJ2aWNlKHVyaSk7XG4gICAgY29uc3QgY2FjaGVkVmFsdWUgPSBEaXNjb3ZlcnkuX2NhY2hlW3VybF0gPSBkaXNjb3ZlcnlTZXJ2aWNlLmRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50KCk7XG4gICAgY29uc3QgaWdub3JlZCA9IERpc2NvdmVyeS5fY2FjaGVbdXJsXS50aGVuKCgpID0+IHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKERpc2NvdmVyeS5fY2FjaGVbdXJsXSA9PT0gY2FjaGVkVmFsdWUpIHtcbiAgICAgICAgICBkZWxldGUgRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgICAgICB9XG4gICAgICB9LCBkaXNjb3ZlcnlDYWNoZUludGVydmFsKTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICBkZWxldGUgRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNhY2hlZFZhbHVlO1xuICB9XG5cbiAgc3RhdGljIGNsZWFyQ2FjaGVkQ2xvc2VzdEVuZHBvaW50KHVyaTogVVJMKTogdm9pZCB7XG4gICAgY29uc3QgdXJsID0gdXJpLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAodXJsIGluIERpc2NvdmVyeS5fY2FjaGUpIHtcbiAgICAgIGRlbGV0ZSBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuY29uc3QgaWdub3JlZCA9IERpc2NvdmVyeS5wcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSgpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IEVuZFBvaW50IGZyb20gJy4vRW5kUG9pbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuXG5jb25zdCBkZWZhdWx0VGltZW91dCA9IDIwMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3ZlcnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0Rpc2NvdmVyeScpO1xuICBwcml2YXRlIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgX3VyaTogVVJMO1xuXG4gIGNvbnN0cnVjdG9yKHVyaTogVVJMKSB7XG4gICAgaWYgKCF1cmkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IHJlcXVpcmVzIHVyaScpO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UodXJpLnRvU3RyaW5nKCkpO1xuICAgIHRoaXMuX3VyaSA9IHVyaTtcbiAgfVxuXG4gIGFzeW5jIGRpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzKHVyaTogVVJMLCB0aW1lb3V0OiBudW1iZXIpOiBQcm9taXNlPEVuZFBvaW50W10+IHtcbiAgICBpZiAoIXRpbWVvdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IHJlcXVpcmVzIHRpbWVvdXQnKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB1cmkudG9TdHJpbmcoKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICAgIH0pLFxuICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KChfLCByZWplY3QpID0+IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgRGlzY292ZXJ5IHRpbWVkIG91dCBbJHt1cmx9XWApKSwgdGltZW91dCkpXG4gICAgXSk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERpc2NvdmVyeSBmYWlsZWQgWyR7dXJsfV0gWyR7cmVzcG9uc2Uuc3RhdHVzfV1gKTtcbiAgICB9XG5cbiAgICBpZiAocmVzcG9uc2UuYm9keSA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaXNjb3ZlcnkgZmFpbGVkIHdpdGggbm8gZGF0YSBbJHt1cmx9XWApO1xuICAgIH1cblxuICAgIGNvbnN0IGFzU3RyaW5nID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuICAgIGNvbnN0IGVuZFBvaW50cyA9IGFzU3RyaW5nLnNwbGl0KCcsJyk7XG5cbiAgICByZXR1cm4gZW5kUG9pbnRzLm1hcChlbmRQb2ludCA9PiBuZXcgRW5kUG9pbnQoZW5kUG9pbnQsIHRpbWVvdXQpKTtcbiAgfVxuXG4gIGFzeW5jIGRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50KHRpbWVvdXQ6IG51bWJlciA9IGRlZmF1bHRUaW1lb3V0KTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIGNvbnN0IHVybCA9IERpc2NvdmVyeVVyaS5idWlsZERpc2NvdmVyeVVybCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IGVuZFBvaW50cyA9IGF3YWl0IHRoaXMuZGlzY292ZXJOZWFyYnlFbmRQb2ludHMobmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpLCB0aW1lb3V0KTtcbiAgICBsZXQgZmFpbGVkUmVxdWVzdHMgPSAwO1xuICAgIGNvbnN0IHByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkID0gKCk6IFByb21pc2U8dm9pZD4gPT4gbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKGZhaWxlZFJlcXVlc3RzID49IGVuZFBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgcmVqZWN0KGBEaXNjb3Zlcnkgb2YgWyR7ZW5kUG9pbnRzLmxlbmd0aH1dIGVuZHBvaW50cyBmcm9tIFske3VybH1dIGZhaWxlZCwgcHJldmVudGluZyBpdCBmcm9tIGNvbXBsZXRpbmdgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBlbmRQb2ludCA9IGF3YWl0IFByb21pc2UucmFjZShlbmRQb2ludHMubWFwKGVuZFBvaW50ID0+IGVuZFBvaW50XG4gICAgICAucGluZygpXG4gICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdGYWlsZWQgdG8gcGluZyBlbmQgcG9pbnQgWyVzXScsIGVuZFBvaW50LCBlKTtcblxuICAgICAgICBmYWlsZWRSZXF1ZXN0cysrO1xuXG4gICAgICAgIHJldHVybiBwcm9wYWdhdGVGYWlsdXJlSWZBbGxSZXF1ZXN0c0ZhaWxlZCgpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKHRpbWUgPT4ge1xuICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcmVkIGVuZCBwb2ludCBbJXNdIHdpdGggdGltZSBbJXNdJywgZW5kUG9pbnQudG9TdHJpbmcoKSwgdGltZSk7XG4gICAgICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWUsXG4gICAgICAgICAgcnVudGltZTogKG5vdyAtIFNESy5wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgICAgICB2YWx1ZToge3VpbnQ2NDogdGltZSB8fCAwfSxcbiAgICAgICAgICByZXNvdXJjZTogZW5kUG9pbnQudG9TdHJpbmcoKSxcbiAgICAgICAgICBraW5kOiAncGluZydcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGVuZFBvaW50O1xuICAgICAgfSkpKTtcblxuICAgIHJldHVybiBlbmRQb2ludDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgUGFyYW1ldGVycyBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9QYXJhbWV0ZXJzJztcbmltcG9ydCB7ZGVmYXVsdERpc2NvdmVyeVVyaX0gZnJvbSAnLi4vZGVmYXVsdHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3ZlcnlVcmkge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZGlzY292ZXJ5VXJpOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KGRlZmF1bHREaXNjb3ZlcnlVcmkpO1xuXG4gIHN0YXRpYyBnZXQgdXJpKCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIERpc2NvdmVyeVVyaS5fZGlzY292ZXJ5VXJpO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkRGlzY292ZXJ5VXJsKHVyaTogVVJMKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVyaS50b1N0cmluZygpKTtcbiAgICBjb25zdCBzZGtWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBjb25zdCBpbnRlbnRpb25zID0gUGFyYW1ldGVycy5kaXNjb3ZlcnlQYXJhbWV0ZXJzLmludGVudGlvbnM7XG5cbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgndmVyc2lvbicsIHNka1ZlcnNpb24pO1xuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdpbnRlbnRpb25zJywgaW50ZW50aW9ucyk7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ18nLCBgJHtEYXRlLm5vdygpfWApO1xuXG4gICAgaWYgKHVybC5wYXRobmFtZSA9PT0gJy8nKSB7XG4gICAgICB1cmwucGF0aG5hbWUgPSAnL3BjYXN0L2VuZFBvaW50cyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybC50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeVVyaSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcblxuaW1wb3J0IHtcbiAgSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZSxcbiAgSVN1YnNjcmliZVdpdGhPZmZlclJlcXVlc3QsXG4gIElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0XG59IGZyb20gJy4uL2FwaS9TdWJzY3JpYmUnO1xuaW1wb3J0IHtJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXF1ZXN0LCBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZX0gZnJvbSAnLi4vYXBpL1NldFJlbW90ZURlc2NyaXB0aW9uJztcbmltcG9ydCB7SURlc3Ryb3lTdHJlYW1SZXF1ZXN0LCBJRGVzdHJveVN0cmVhbVJlc3BvbnNlfSBmcm9tICcuLi9hcGkvRGVzdHJveVN0cmVhbSc7XG5pbXBvcnQge0lBZGRJY2VDYW5kaWRhdGVzUmVxdWVzdCwgSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZX0gZnJvbSAnLi4vYXBpL0FkZEljZUNhbmRpZGF0ZXMnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuaW1wb3J0IFBhcmFtZXRlcnMgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvUGFyYW1ldGVycyc7XG5pbXBvcnQge0JpdHJhdGVNb2RlLCBCaXRyYXRlU3RhdGUsIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZX0gZnJvbSAnLi4vYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlJztcbmltcG9ydCBCaXRyYXRlTW9kZU1hcHBpbmcgZnJvbSAnLi9CaXRyYXRlTW9kZU1hcHBpbmcnO1xuaW1wb3J0IEJpdHJhdGVTdGF0ZU1hcHBpbmcgZnJvbSAnLi9CaXRyYXRlU3RhdGVNYXBwaW5nJztcbmltcG9ydCB7Qml0c1BlclNlY29uZCwgTWlsbGlzZWNvbmR9IGZyb20gJy4uLy4uL3VuaXRzL1VuaXRzJztcbmltcG9ydCB7XG4gIElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlLFxuICBJUHVibGlzaFdpdGhPZmZlclJlcXVlc3QsXG4gIElQdWJsaXNoV2l0aG91dE9mZmVyUmVxdWVzdCxcbiAgUHVibGlzaFN0YXR1c1xufSBmcm9tICcuLi9hcGkvUHVibGlzaCc7XG5cbmNvbnN0IGFwaVZlcnNpb24gPSA3O1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpYmVTdGF0dXMgPSAnb2snIHwgJ25vLXN0cmVhbScgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ2dlby1yZXN0cmljdGVkJyB8ICdnZW8tYmxvY2tlZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZm9yYmlkZGVuLXRhZycgfCAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBSZW1vdmVUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIERlc3Ryb3lTdHJlYW1TdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IGludGVyZmFjZSBJU3RyZWFtIHtcbiAgc3RyZWFtSWQ6IHN0cmluZztcbiAgc2hhcmVkU2VjcmV0OiBzdHJpbmc7XG4gIHRlbmFuY3k6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogJ29rJztcbiAgc3RyZWFtOiBJU3RyZWFtO1xuICBsYWc6IE1pbGxpc2Vjb25kO1xuICBydGNDb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbjtcbiAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiAnbm8tc3RyZWFtJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAnZ2VvLXJlc3RyaWN0ZWQnIHwgJ2dlby1ibG9ja2VkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmb3JiaWRkZW4tdGFnJyB8ICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCcgfCAnZmFpbGVkJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrIHtcbiAgKHJlcXVlc3Q6IElTdWJzY3JpYmVXaXRoT2ZmZXJSZXF1ZXN0IHwgSVN1YnNjcmliZVdpdGhvdXRPZmZlclJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrIHtcbiAgKHJlc3BvbnNlOiBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdCB8IElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0KTogUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IHR5cGUgU3Vic2NyaWJlT3B0aW9ucyA9IHtcbiAgb25TdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s/OiBJU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrO1xuICBvblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/OiBJU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaztcbn07XG5cbmV4cG9ydCB0eXBlIElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlSW5pdCA9IHtcbiAgc3RhdHVzOiAnb2snO1xuICBzdHJlYW06IElTdHJlYW07XG4gIGxhZz86IE1pbGxpc2Vjb25kO1xuICBydGNDb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbjtcbiAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgSVB1Ymxpc2hGYWlsdXJlUmVzcG9uc2VJbml0ID0ge1xuICBzdGF0dXM6ICdub3QtZm91bmQnIHwgJ2dlby1yZXN0cmljdGVkJyB8ICdnZW8tYmxvY2tlZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmb3JiaWRkZW4tdGFnJyB8ICdtaXNzaW5nLWNoYW5uZWwtb3Itcm9vbS1pZCcgfCAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnIHwgJ2ZhaWxlZCc7XG59O1xuXG5pbnRlcmZhY2UgSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cztcbiAgc2Vzc2lvbkRlc2NyaXB0aW9uPzogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbn1cblxuaW50ZXJmYWNlIElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzO1xuICBvcHRpb25zPzogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVSZXNwb25zZUluaXQge1xuICBzdGF0dXM6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzO1xufVxuXG5pbnRlcmZhY2UgSURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQge1xuICBzdGF0dXM6IERlc3Ryb3lTdHJlYW1TdGF0dXM7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVuZFBvaW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0VuZFBvaW50Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3VyaTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aW1lb3V0OiBudW1iZXI7XG4gIHByaXZhdGUgX3JvdW5kVHJpcFRpbWU6IG51bWJlciA9IDA7XG5cbiAgY29uc3RydWN0b3IodXJpOiBzdHJpbmcsIHRpbWVvdXQ6IG51bWJlcikge1xuICAgIHRoaXMuX3VyaSA9IHVyaTtcbiAgICB0aGlzLl90aW1lb3V0ID0gdGltZW91dDtcblxuICAgIGlmICghdGltZW91dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFbmQgcG9pbnQgcmVxdWlyZXMgYSB0aW1lb3V0YCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJvdW5kVHJpcFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcm91bmRUcmlwVGltZTtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBFbmRQb2ludFt1cmk9JHt0aGlzLl91cml9XWA7XG4gIH1cblxuICBhc3luYyBwaW5nKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFBpbmdVcmwoKTtcbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIGNhY2hlOiAnbm8tY2FjaGUnXG4gICAgICB9KSxcbiAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPigoXywgcmVqZWN0KSA9PlxuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoYFBpbmcgdGltZWQgb3V0IFske3VybH1dYCkpLCB0aGlzLl90aW1lb3V0KSlcbiAgICBdKTtcbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7IC8qIEhhbmRsZSAqL1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBQaW5nIGZhaWxlZCBbJHt1cmx9XSBbJHtyZXNwb25zZS5zdGF0dXN9XWApO1xuICAgIH1cblxuICAgIHRoaXMuX3JvdW5kVHJpcFRpbWUgPSBmaW5pc2hlZCAtIHN0YXJ0O1xuXG4gICAgcmV0dXJuIHRoaXMuX3JvdW5kVHJpcFRpbWU7XG4gIH1cblxuICBhc3luYyBzdWJzY3JpYmUodG9rZW46IEVuY29kZWRFZGdlVG9rZW4sIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0IHwgbnVsbCwgZmFpbHVyZUNvdW50OiBudW1iZXIsIG9wdGlvbnM6IFN1YnNjcmliZU9wdGlvbnMgPSB7fSk6IFByb21pc2U8SVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQgfCBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHRlbmFuY3kgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS50ZW5hbmN5O1xuXG4gICAgaWYgKCF0ZW5hbmN5KSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSB0b2tlbiBbJXNdJywgdG9rZW4pO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ3VuYXV0aG9yaXplZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3RlbmFuY3ksICdzdHJlYW0nLCAnc3Vic2NyaWJlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBjbGllbnRWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBsZXQgcmVxdWVzdEJvZHk6IElTdWJzY3JpYmVXaXRoT2ZmZXJSZXF1ZXN0IHwgSVN1YnNjcmliZVdpdGhvdXRPZmZlclJlcXVlc3Q7XG5cbiAgICBpZiAoZmFpbHVyZUNvdW50ID09PSAwICYmIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICByZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi50eXBlLFxuICAgICAgICAgICAgc2RwOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi5zZHBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uOiB7YXBpVmVyc2lvbn1cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3RCb2R5ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb246IHthcGlWZXJzaW9ufVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBhd2FpdCBvcHRpb25zLm9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrPy4ocmVxdWVzdEJvZHkpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHJlcXVlc3RCb2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzdWJzY3JpYmUnLCBuZXcgRXJyb3IoYFN1YnNjcmliZSB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzdWJzY3JpYmUnLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IFN1YnNjcmliZVN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICBjb25zdCByZXNwb25zZTogSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQgPSB7c3RhdHVzfTtcblxuICAgICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/LihyZXNwb25zZSk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc3Vic2NyaWJlUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb1N1YnNjcmliZVJlc3BvbnNlKHRlbmFuY3ksIGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ0dvdCBzdWJzY3JpYmUgcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgc3Vic2NyaWJlUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/LihzdWJzY3JpYmVSZXNwb25zZSk7XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBwdWJsaXNoKG5hbWU6IHN0cmluZywgdG9rZW46IEVuY29kZWRFZGdlVG9rZW4sIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0IHwgbnVsbCwgZmFpbHVyZUNvdW50OiBudW1iZXIpOiBQcm9taXNlPElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlSW5pdCB8IElQdWJsaXNoRmFpbHVyZVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHRlbmFuY3kgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS50ZW5hbmN5O1xuXG4gICAgaWYgKCF0ZW5hbmN5KSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSB0b2tlbiBbJXNdJywgdG9rZW4pO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ3VuYXV0aG9yaXplZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3RlbmFuY3ksICdzdHJlYW0nLCAncHVibGlzaCddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgY2xpZW50VmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG5cbiAgICBpZiAoZmFpbHVyZUNvdW50ID09PSAwICYmIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBjb25zdCBib2R5V2l0aE9mZmVyOiBJUHVibGlzaFdpdGhPZmZlclJlcXVlc3QgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICAgIHNlc3Npb25EZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24udHlwZSxcbiAgICAgICAgICAgIHNkcDogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24uc2RwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIHN0cmVhbUlkOiAnJyxcbiAgICAgICAgICBhcGlWZXJzaW9uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5V2l0aE9mZmVyKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGJvZHlXaXRob3V0T2ZmZXI6IElQdWJsaXNoV2l0aG91dE9mZmVyUmVxdWVzdCA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBuYW1lLFxuICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgc3RyZWFtSWQ6ICcnLFxuICAgICAgICAgIGFwaVZlcnNpb25cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHlXaXRob3V0T2ZmZXIpKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwdWJsaXNoJywgbmV3IEVycm9yKGBQdWJsaXNoIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHB1Ymxpc2gnLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IFB1Ymxpc2hTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1B1Ymxpc2hTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc3Vic2NyaWJlUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb1B1Ymxpc2hSZXNwb25zZSh0ZW5hbmN5LCBodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3QgcHVibGlzaCByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBzdWJzY3JpYmVSZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBzZXRSZW1vdGVEZXNjcmlwdGlvbihzdHJlYW06IElTdHJlYW0sIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCk6IFByb21pc2U8SVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdkZXNjcmlwdGlvbicsICdyZW1vdGUnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElTZXRSZW1vdGVEZXNjcmlwdGlvblJlcXVlc3QgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0/LnNoYXJlZFNlY3JldCxcbiAgICAgIHNlc3Npb25EZXNjcmlwdGlvbjoge1xuICAgICAgICB0eXBlOiBzZXNzaW9uRGVzY3JpcHRpb24udHlwZSxcbiAgICAgICAgc2RwOiBzZXNzaW9uRGVzY3JpcHRpb24uc2RwXG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uJywgbmV3IEVycm9yKGBTZXQgcmVtb3RlIGRlc2NyaXB0aW9uIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24nLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ0dvdCBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBsaW1pdEJpdHJhdGUoXG4gICAgc3RyZWFtOiBJU3RyZWFtLFxuICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kczogbnVtYmVyLFxuICAgIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQ6IEJpdHNQZXJTZWNvbmQsXG4gICAgYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGUsXG4gICAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlLFxuICApOiBQcm9taXNlPElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnYml0cmF0ZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kcyxcbiAgICAgIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQsXG4gICAgICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZU1hcHBpbmcuY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZShiaXRyYXRlU3RhdGUpLFxuICAgICAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlTWFwcGluZy5jb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZShiaXRyYXRlTW9kZSlcbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHNldCBsaW1pdCBiaXRyYXRlIHRpbWVkJywgbmV3IEVycm9yKGBTZXQgbGltaXQgYml0cmF0ZSB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzZXQgbGltaXQgYml0cmF0ZSB0aW1lZCcsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzKGh0dHBSZXNwb25zZSk7XG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0dvdCBzZXQgbGltaXQgYml0cmF0ZSByZXNwb25zZSBbJXNdIGluIFslc10gbXMnLCBzdGF0dXMsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHtzdGF0dXN9O1xuICB9XG5cbiAgYXN5bmMgYWRkSWNlQ2FuZGlkYXRlcyhzdHJlYW06IElTdHJlYW0sIGNhbmRpZGF0ZXM6IFJUQ0ljZUNhbmRpZGF0ZVtdLCBkaXNjb3ZlcnlDb21wbGV0ZWQ6IGJvb2xlYW4sIG9wdGlvbnM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdpY2UnLCAnY2FuZGlkYXRlcyddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSUFkZEljZUNhbmRpZGF0ZXNSZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIGNhbmRpZGF0ZXMsXG4gICAgICBkaXNjb3ZlcnlDb21wbGV0ZWQsXG4gICAgICBvcHRpb25zXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBhZGQgaWNlIGNhbmRpZGF0ZXMnLCBuZXcgRXJyb3IoYEFkZCBpY2UgY2FuZGlkYXRlcyB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBhZGQgaWNlIGNhbmRpZGF0ZXMnLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UoaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3QgYWRkIElDRSBjYW5kaWRhdGVzIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgZGVzdHJveVN0cmVhbShzdHJlYW06IElTdHJlYW0sIHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTxJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzdHJveSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSURlc3Ryb3lTdHJlYW1SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIHJlYXNvbixcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzdWJzY3JpYmUnLCBuZXcgRXJyb3IoYERlbGV0ZSBzdHJlYW0gdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gZGVsZXRlIHN0cmVhbScsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogRGVzdHJveVN0cmVhbVN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBkZXN0cm95U3RyZWFtUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW1SZXNwb25zZShodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0dvdCBkZXN0cm95IHN0cmVhbSByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBkZXN0cm95U3RyZWFtUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIGRlc3Ryb3lTdHJlYW1SZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIGRlc3Ryb3lTdHJlYW1PblVubW91bnQoc3RyZWFtOiBJU3RyZWFtLCByZWFzb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghbmF2aWdhdG9yPy5zZW5kQmVhY29uKSB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5kZXN0cm95U3RyZWFtKHN0cmVhbSwgcmVhc29uKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc3Ryb3knXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElEZXN0cm95U3RyZWFtUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICByZWFzb24sXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgbmF2aWdhdG9yLnNlbmRCZWFjb24odXJsLCBmb3JtRGF0YSk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkVXJsKHBhdGg6IHN0cmluZ1tdKTogVVJMIHtcbiAgICBjb25zdCB1cmkgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHRoaXMuX3VyaSk7XG4gICAgY29uc3QgcGF0aEFzQXJyYXkgPSB1cmkucGF0aG5hbWUuc3BsaXQoJy8nKTtcblxuICAgIHBhdGhBc0FycmF5Lmxlbmd0aCA9IHBhdGhBc0FycmF5Lmxlbmd0aCAtIDE7XG5cbiAgICB1cmkucGF0aG5hbWUgPSBwYXRoQXNBcnJheS5jb25jYXQoLi4ucGF0aCkuam9pbignLycpO1xuXG4gICAgcmV0dXJuIHVyaTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRQaW5nVXJsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdXJpID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IHNka1ZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuICAgIGNvbnN0IGludGVudGlvbnMgPSBQYXJhbWV0ZXJzLmRpc2NvdmVyeVBhcmFtZXRlcnMuaW50ZW50aW9ucztcblxuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCd0eXBlJywgJ2h0dHAnKTtcbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgndmVyc2lvbicsIHNka1ZlcnNpb24pO1xuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCdpbnRlbnRpb25zJywgaW50ZW50aW9ucyk7XG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ18nLCBgJHtEYXRlLm5vdygpfWApO1xuXG4gICAgcmV0dXJuIHVyaS50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9QdWJsaXNoU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFB1Ymxpc2hTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDAyOlxuICAgICAgICByZXR1cm4gJ2dlby1yZXN0cmljdGVkJztcbiAgICAgIGNhc2UgNDAzOlxuICAgICAgICByZXR1cm4gJ2dlby1ibG9ja2VkJztcbiAgICAgIGNhc2UgNDA2OlxuICAgICAgICByZXR1cm4gJ21pc3NpbmctY2hhbm5lbC1vci1yb29tLWlkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA0MDk6XG4gICAgICAgIHJldHVybiAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnO1xuICAgICAgY2FzZSA0MTU6XG4gICAgICAgIHJldHVybiAnZm9yYmlkZGVuLXRhZyc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFN1YnNjcmliZVN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDI6XG4gICAgICAgIHJldHVybiAnZ2VvLXJlc3RyaWN0ZWQnO1xuICAgICAgY2FzZSA0MDM6XG4gICAgICAgIHJldHVybiAnZ2VvLWJsb2NrZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDQwOTpcbiAgICAgICAgcmV0dXJuICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCc7XG4gICAgICBjYXNlIDQxNTpcbiAgICAgICAgcmV0dXJuICdmb3JiaWRkZW4tdGFnJztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBEZXN0cm95U3RyZWFtU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9TdWJzY3JpYmVSZXNwb25zZSh0ZW5hbmN5OiBzdHJpbmcsIHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2U7XG4gICAgY29uc3Qge1xuICAgICAgc3RhdHVzLFxuICAgICAgc3RyZWFtSWQsXG4gICAgICBzaGFyZWRTZWNyZXQsXG4gICAgICBsYWcsXG4gICAgICBydGNDb25maWd1cmF0aW9uLFxuICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICAuLi5vdGhlclByb3BlcnRpZXNcbiAgICB9ID0gZGF0YTtcbiAgICBjb25zdCBzdWJzY3JpYmVSZXNwb25zZTogSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQgPSB7XG4gICAgICBzdGF0dXMsXG4gICAgICBzdHJlYW06IHtcbiAgICAgICAgdGVuYW5jeSxcbiAgICAgICAgc3RyZWFtSWQsXG4gICAgICAgIHNoYXJlZFNlY3JldFxuICAgICAgfSxcbiAgICAgIGxhZyxcbiAgICAgIC4uLm90aGVyUHJvcGVydGllc1xuICAgIH07XG5cbiAgICBpZiAocnRjQ29uZmlndXJhdGlvbikge1xuICAgICAgc3Vic2NyaWJlUmVzcG9uc2UucnRjQ29uZmlndXJhdGlvbiA9IHRoaXMuY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKHJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIGlmIChzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/LnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgc3Vic2NyaWJlUmVzcG9uc2UuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICBpZiAoY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIHJldHVybiBzdWJzY3JpYmVSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvUHVibGlzaFJlc3BvbnNlKHRlbmFuY3k6IHN0cmluZywgcmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlO1xuICAgIGNvbnN0IHB1Ymxpc2hSZXNwb25zZTogSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgc3RhdHVzOiBkYXRhLnN0YXR1cyxcbiAgICAgIHN0cmVhbToge1xuICAgICAgICB0ZW5hbmN5LFxuICAgICAgICBzdHJlYW1JZDogZGF0YS5zdHJlYW1JZCxcbiAgICAgICAgc2hhcmVkU2VjcmV0OiBkYXRhLnNoYXJlZFNlY3JldFxuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKGRhdGEucnRjQ29uZmlndXJhdGlvbikge1xuICAgICAgICBwdWJsaXNoUmVzcG9uc2UucnRjQ29uZmlndXJhdGlvbiA9IHRoaXMuY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKGRhdGEucnRjQ29uZmlndXJhdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgICBwdWJsaXNoUmVzcG9uc2Uuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgcHVibGlzaFJlc3BvbnNlLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgICBwdWJsaXNoUmVzcG9uc2UuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcHVibGlzaFJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0IHJ0Y0NvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24gPSB7aWNlU2VydmVyczogW119O1xuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5KSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeSA9IGNvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY29uZmlndXJhdGlvbi5pY2VDYW5kaWRhdGVQb29sU2l6ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlQ2FuZGlkYXRlUG9vbFNpemUgPSBjb25maWd1cmF0aW9uLmljZUNhbmRpZGF0ZVBvb2xTaXplO1xuICAgIH1cblxuICAgIGlmIChjb25maWd1cmF0aW9uLmljZVNlcnZlcnMpIHtcbiAgICAgIGNvbnN0IGljZVNlcnZlcnM6IFJUQ0ljZVNlcnZlcltdID0gW107XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGljZVNlcnZlcnMucHVzaCh7XG4gICAgICAgICAgdXJsczogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHMsXG4gICAgICAgICAgdXNlcm5hbWU6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51c2VybmFtZSxcbiAgICAgICAgICBjcmVkZW50aWFsOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0uY3JlZGVudGlhbFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcnRjQ29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzID0gaWNlU2VydmVycztcbiAgICB9XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3kpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5ID0gY29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3k7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeSkge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5ydGNwTXV4UG9saWN5ID0gY29uZmlndXJhdGlvbi5ydGNwTXV4UG9saWN5O1xuICAgIH1cblxuICAgIHJldHVybiBydGNDb25maWd1cmF0aW9uO1xuICB9XG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZShyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U7XG4gICAgY29uc3Qgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTogSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0ID0ge3N0YXR1czogZGF0YS5zdGF0dXN9O1xuXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uID0gZGF0YS5zZXNzaW9uRGVzY3JpcHRpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXNSZXNwb25zZShyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlO1xuICAgIGNvbnN0IGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTogSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQgPSB7XG4gICAgICBzdGF0dXM6IGRhdGEuc3RhdHVzLFxuICAgICAgb3B0aW9uczogW11cbiAgICB9O1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmIChkYXRhLm9wdGlvbnMpIHtcbiAgICAgICAgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlLm9wdGlvbnMgPSBkYXRhLm9wdGlvbnM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbVJlc3BvbnNlKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElEZXN0cm95U3RyZWFtUmVzcG9uc2U7XG4gICAgY29uc3QgZGVzdHJveVN0cmVhbTogSURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQgPSB7c3RhdHVzOiBkYXRhLnN0YXR1c307XG5cbiAgICByZXR1cm4gZGVzdHJveVN0cmVhbTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IHtEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiwgUmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLCBSdHBUaW1lc3RhbXB9IGZyb20gJy4vRnJhbWVUaW1pbmdJbmZvcm1hdGlvbic7XG5pbXBvcnQge1ZpZGVvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYyc7XG5pbXBvcnQge01ldGFkYXRhTWVzc2FnZVBheWxvYWQsIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSwgVHJhbnNmb3JtTWVzc2FnZVBheWxvYWR9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UnO1xuaW1wb3J0IFRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIgZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vd29ya2VyL01lc3NhZ2VSb3V0ZXInO1xuXG5leHBvcnQgdHlwZSBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQgPSB7XG4gIGNvZGVjOiBWaWRlb0NvZGVjO1xuICBzdHJlYW1JZDogc3RyaW5nO1xuICB2aWRlb0VsZW1lbnQ6IFN1YmplY3Q8SFRNTFZpZGVvRWxlbWVudCB8IG51bGw+O1xuICBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPjtcbiAgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPjtcbiAgaXNFbmFibGVkU3ViamVjdDogU3ViamVjdDxib29sZWFuPjtcbiAgcmVjZWl2ZXI6IFJUQ1J0cFJlY2VpdmVyO1xuICBtaWQ6IHN0cmluZztcbiAgdHJhY2tJZDogc3RyaW5nO1xuICB0cmFuc2Zvcm1GdW5jdGlvbk5hbWVzOiBzdHJpbmdbXTtcbiAgdHJhbnNmb3JtTWVzc2FnZVJvdXRlcjogVHJhbnNmb3JtTWVzc2FnZVJvdXRlcjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfdHJhbnNmb3JtTmFtZSA9ICdmcmFtZS10aW1pbmctaW5mb3JtYXRpb24nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXInKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25CeVJ0cFRpbWVzdGFtcDogTWFwPFJ0cFRpbWVzdGFtcCwgRGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWRlb0VsZW1lbnREaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgX2N1cnJlbnRQbGF5YmFja1N0YXRlOiAncGxheWluZycgfCAncGF1c2VkJyB8ICdzdGFsbGVkJyB8ICdlbmRlZCcgfCAnZXJyb3InIHwgJ3dhaXRpbmcnID0gJ3dhaXRpbmcnO1xuICBwcml2YXRlIF9hcm1lZFZpZGVvRnJhbWVDYWxsYmFja0lkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfZGlzcG9zZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihjb250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQpIHtcbiAgICB0aGlzLmluaXRpYWxpemUoY29udGV4dCk7XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NlZCA9IHRydWU7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKGNvbnRleHQ6IEZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jYW5Qcm9jZXNzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbihjb250ZXh0LnN0cmVhbUlkLCBjb250ZXh0LmNvZGVjLCBjb250ZXh0LnJlY2VpdmVyLCBjb250ZXh0Lm1pZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldHVwVmlkZW9FbGVtZW50SGFuZGxpbmcoY29udGV4dC52aWRlb0VsZW1lbnQsIGNvbnRleHQucmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCk7XG4gICAgdGhpcy5zZXR1cEZyYW1lVGltaW5nSW5mb3JtYXRpb25UcmFuc2Zvcm0oY29udGV4dC5jb2RlYywgY29udGV4dC5taWQsIGNvbnRleHQudHJhY2tJZCwgY29udGV4dC50cmFuc2Zvcm1NZXNzYWdlUm91dGVyLCBjb250ZXh0LnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMsIGNvbnRleHQuZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0KTtcbiAgICBjb250ZXh0LmlzRW5hYmxlZFN1YmplY3QudmFsdWUgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5Qcm9jZXNzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbihzdHJlYW1JZDogc3RyaW5nLCBjb2RlYzogVmlkZW9Db2RlYywgcmVjZWl2ZXI6IFJUQ1J0cFJlY2VpdmVyLCBtaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChjb2RlYyAhPT0gVmlkZW9Db2RlYy5IMjY0KSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBTa2lwcGluZyBmcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gZm9yIHZpZGVvIHRyYWNrIGJlY2F1c2UgdmlkZW8gY29kZWMgaXMgbm90IEgyNjQnLCBzdHJlYW1JZCk7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXJlY2VpdmVyKSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBTa2lwcGluZyBmcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gZm9yIHZpZGVvIHRyYWNrIGJlY2F1c2Ugbm8gcmVjZWl2ZXIgd2FzIGZvdW5kJywgc3RyZWFtSWQpO1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCFtaWQpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIFNraXBwaW5nIGZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBmb3IgdmlkZW8gdHJhY2sgYmVjYXVzZSBubyBtaWQgd2FzIGZvdW5kJywgc3RyZWFtSWQpO1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIHNldHVwRnJhbWVUaW1pbmdJbmZvcm1hdGlvblRyYW5zZm9ybShjb2RlYzogVmlkZW9Db2RlYywgbWlkOiBzdHJpbmcsIHRyYWNrSWQ6IHN0cmluZywgdHJhbnNmb3JtTWVzc2FnZVJvdXRlcjogVHJhbnNmb3JtTWVzc2FnZVJvdXRlciwgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogc3RyaW5nW10sIGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KTogdm9pZCB7XG4gICAgdHJhbnNmb3JtTWVzc2FnZVJvdXRlci5yZWdpc3RlclJvdXRlPFRyYW5zZm9ybU1lc3NhZ2VQYXlsb2FkPE1ldGFkYXRhTWVzc2FnZVBheWxvYWQ+PihUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiwgdGhpcy5oYW5kbGVGcmFtZVRpbWluZ01lc3NhZ2UuYmluZCh0aGlzLCBWaWRlb0NvZGVjW2NvZGVjXSwgbWlkISwgdHJhY2tJZCEsIGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCkpO1xuICAgIHRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMucHVzaChGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlci5fdHJhbnNmb3JtTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUZyYW1lVGltaW5nTWVzc2FnZShjb2RlYzogc3RyaW5nLCBtaWQ6IHN0cmluZywgdHJhY2tJZDogc3RyaW5nLCBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPiwgbWVzc2FnZTogTWV0YWRhdGFNZXNzYWdlUGF5bG9hZCk6IHZvaWQge1xuICAgIGlmICghbWVzc2FnZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW3J0cFRpbWVzdGFtcCwgbWV0YWRhdGFdIG9mIE9iamVjdC5lbnRyaWVzKG1lc3NhZ2UpKSB7XG4gICAgICBjb25zdCBydHBUaW1lc3RhbXBOdW1iZXIgPSBwYXJzZUludChydHBUaW1lc3RhbXAsIDEwKTtcbiAgICAgIGNvbnN0IGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uID0gbWV0YWRhdGFbJ2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uJ107XG5cbiAgICAgIGlmIChkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbikge1xuICAgICAgICBjb25zdCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IHtcbiAgICAgICAgICB0aW1lY29kZTogZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24udGltZWNvZGUgPz8gbnVsbCxcbiAgICAgICAgICByZWNlaXZlVGltZXN0YW1wOiBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbi5yZWNlaXZlVGltZXN0YW1wID8/IG51bGwsXG4gICAgICAgICAga2luZDogJ3ZpZGVvJyxcbiAgICAgICAgICBjb2RlYyxcbiAgICAgICAgICBtaWQsXG4gICAgICAgICAgdHJhY2tJZCxcbiAgICAgICAgICBzb3VyY2VUaW1lc3RhbXA6IG51bGwsXG4gICAgICAgICAgaW5nZXN0VGltZXN0YW1wOiBudWxsLFxuICAgICAgICAgIGVuY29kZVRpbWVzdGFtcDogbnVsbCxcbiAgICAgICAgICB0cmFuc2NvZGVUaW1lc3RhbXA6IG51bGwsXG4gICAgICAgICAgcGxheWJhY2tTdGF0ZTogdGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGVcbiAgICAgICAgfTtcblxuICAgICAgICBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QudmFsdWUgPSBmcmFtZVRpbWluZ0luZm9ybWF0aW9uO1xuXG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZSA9PT0gJ3BsYXlpbmcnKSB7XG4gICAgICAgICAgdGhpcy5fZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25CeVJ0cFRpbWVzdGFtcC5zZXQocnRwVGltZXN0YW1wTnVtYmVyLCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBWaWRlb0VsZW1lbnRIYW5kbGluZyh2aWRlb0VsZW1lbnRTdWJqZWN0OiBTdWJqZWN0PEhUTUxWaWRlb0VsZW1lbnQgfCBudWxsPiwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPik6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB0aGlzLl9kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkJ5UnRwVGltZXN0YW1wLmNsZWFyKCkpKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh2aWRlb0VsZW1lbnRTdWJqZWN0LnN1YnNjcmliZSh2aWRlb0VsZW1lbnQgPT4ge1xuICAgICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgICBpZiAoIXZpZGVvRWxlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2V0dXBWaWRlb0V2ZW50TGlzdGVuZXJzKHZpZGVvRWxlbWVudCwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCk7XG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVWaWRlb0ZyYW1lQ2FsbGJhY2sodmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+LCBub3c6IERPTUhpZ2hSZXNUaW1lU3RhbXAsIG1ldGFkYXRhOiBWaWRlb0ZyYW1lQ2FsbGJhY2tNZXRhZGF0YSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9kaXNwb3NlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFJlLXJlZ2lzdGVyIHRoZSBjYWxsYmFjayB0byBlbnN1cmUgaXQncyBjYWxsZWQgYWdhaW5cbiAgICB0aGlzLl9hcm1WaWRlb0ZyYW1lQ2FsbGJhY2sodmlkZW9FbGVtZW50LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0KTtcblxuICAgIGNvbnN0IHJ0cFRpbWVzdGFtcCA9IG1ldGFkYXRhLnJ0cFRpbWVzdGFtcDtcblxuICAgIGlmICghcnRwVGltZXN0YW1wKSB7XG4gICAgICAvLyBUT0RPIChOSCk6IEFkZCBhIHRocm90dGxlZCBsb2cgaW5kaWNhdGluZyB0aGF0IG5vIFJUUCB0aW1lc3RhbXAgd2FzIGZvdW5kXG4gICAgICAvLyBUaGUgc3BlY2lmaWNhdGlvbiBzYXlzIHRoYXQgaXQncyBudWxsYWJsZSwgYnV0IHdlIGFsd2F5cyBoYXZlIGl0IGluIGEgV2ViUlRDIGNvbnRleHRcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0aW1lc3RhbXBzVG9EZWxldGU6IFJ0cFRpbWVzdGFtcFtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IFt0aW1lc3RhbXAsIGZyYW1lVGltaW5nXSBvZiB0aGlzLl9kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkJ5UnRwVGltZXN0YW1wKSB7XG4gICAgICBpZiAodGltZXN0YW1wID4gcnRwVGltZXN0YW1wKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0LnZhbHVlID0ge1xuICAgICAgICAuLi5mcmFtZVRpbWluZyxcbiAgICAgICAgcmVuZGVyVGltZXN0YW1wOiBuZXcgRGF0ZShwZXJmb3JtYW5jZS50aW1lT3JpZ2luICsgbm93KSxcbiAgICAgICAgcGxheWJhY2tTdGF0ZTogJ3BsYXlpbmcnXG4gICAgICB9O1xuXG4gICAgICB0aW1lc3RhbXBzVG9EZWxldGUucHVzaCh0aW1lc3RhbXApO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgdGltZXN0YW1wIG9mIHRpbWVzdGFtcHNUb0RlbGV0ZSkge1xuICAgICAgdGhpcy5fZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25CeVJ0cFRpbWVzdGFtcC5kZWxldGUodGltZXN0YW1wKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldHVwVmlkZW9FdmVudExpc3RlbmVycyh2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4pOiB2b2lkIHtcbiAgICBjb25zdCBvblBsYXlpbmcgPSAoKSA9PiB0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZSA9ICdwbGF5aW5nJztcblxuICAgIHZpZGVvRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdwbGF5aW5nJywgb25QbGF5aW5nKTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBvblBsYXlpbmcpKSk7XG5cbiAgICBjb25zdCBvblBhdXNlID0gKCkgPT4gdGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGUgPSAncGF1c2VkJztcblxuICAgIHZpZGVvRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdwYXVzZScsIG9uUGF1c2UpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB2aWRlb0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGF1c2UnLCBvblBhdXNlKSkpO1xuXG4gICAgY29uc3Qgb25TdGFsbGVkID0gKCkgPT4gdGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGUgPSAnc3RhbGxlZCc7XG5cbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc3RhbGxlZCcsIG9uU3RhbGxlZCk7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHZpZGVvRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzdGFsbGVkJywgb25TdGFsbGVkKSkpO1xuXG4gICAgY29uc3Qgb25XYWl0aW5nID0gKCkgPT4gdGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGUgPSAnd2FpdGluZyc7XG5cbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignd2FpdGluZycsIG9uV2FpdGluZyk7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHZpZGVvRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd3YWl0aW5nJywgb25XYWl0aW5nKSkpO1xuXG4gICAgY29uc3Qgb25FbmRlZCA9ICgpID0+IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID0gJ2VuZGVkJztcblxuICAgIHZpZGVvRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdlbmRlZCcsIG9uRW5kZWQpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB2aWRlb0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZW5kZWQnLCBvbkVuZGVkKSkpO1xuXG4gICAgY29uc3Qgb25FcnJvciA9ICgpID0+IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID0gJ2Vycm9yJztcblxuICAgIHZpZGVvRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB2aWRlb0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZXJyb3InLCBvbkVycm9yKSkpO1xuXG4gICAgdGhpcy5fYXJtVmlkZW9GcmFtZUNhbGxiYWNrKHZpZGVvRWxlbWVudCwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCk7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9hcm1lZFZpZGVvRnJhbWVDYWxsYmFja0lkKSB7XG4gICAgICAgIHZpZGVvRWxlbWVudC5jYW5jZWxWaWRlb0ZyYW1lQ2FsbGJhY2sodGhpcy5fYXJtZWRWaWRlb0ZyYW1lQ2FsbGJhY2tJZCk7XG4gICAgICB9XG4gICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXJtVmlkZW9GcmFtZUNhbGxiYWNrKHZpZGVvRWxlbWVudDogSFRNTFZpZGVvRWxlbWVudCwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPik6IHZvaWQge1xuICAgIGlmICghdmlkZW9FbGVtZW50LnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2spIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9hcm1lZFZpZGVvRnJhbWVDYWxsYmFja0lkID0gdmlkZW9FbGVtZW50LnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2sodGhpcy5oYW5kbGVWaWRlb0ZyYW1lQ2FsbGJhY2suYmluZCh0aGlzLCB2aWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCB7U3RyZWFtU2V0dXBMaXN0ZW5lcn0gZnJvbSAnLi4vLi4vZG9tL1N0cmVhbVNldHVwTGlzdGVuZXInO1xuaW1wb3J0IEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIGZyb20gJy4uLy4uL2RvbS9HYXJiYWdlQ29sbGVjdG9yTWFuYWdlcic7XG5pbXBvcnQgRHVyYXRpb25zIGZyb20gJy4uLy4uL3RpbWUvRHVyYXRpb24nO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBTZHBQYXJzZXIgZnJvbSAnLi4vLi4vcnRjL1NkcFBhcnNlcic7XG5pbXBvcnQgUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIgZnJvbSAnLi4vLi4vcnRjL1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyJztcbmltcG9ydCBQZWVyQ29ubmVjdGlvblNlcnZpY2UsIHtcbiAgZGVmYXVsdFRyYWNrS2luZHMsXG4gIEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1xufSBmcm9tICcuLi8uLi9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlJztcbmltcG9ydCBSdGNDb25uZWN0aW9uTW9uaXRvciBmcm9tICcuLi8uLi9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuaW1wb3J0IEVuZFBvaW50LCB7U3Vic2NyaWJlT3B0aW9ucywgU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXN9IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQgRGlzY292ZXJ5IGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnknO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi4vY2hhbm5lbHMvQ2hhbm5lbFN0YXRlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgQ2hhbm5lbENvbnRleHQgZnJvbSAnLi4vY29udGV4dC9DaGFubmVsQ29udGV4dCc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0JztcbmltcG9ydCBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvU3RyZWFtVHJhbnNmb3JtQ29udGV4dCc7XG5pbXBvcnQgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9GcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCc7XG5pbXBvcnQgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXIsIHtGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHR9IGZyb20gJy4uL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyJztcbmltcG9ydCBJbnNlcnRhYmxlU3RyZWFtcyBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9JbnNlcnRhYmxlU3RyZWFtcyc7XG5pbXBvcnQge0lTdHJlYW19IGZyb20gJy4vSVN0cmVhbSc7XG5pbXBvcnQgRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlciwge0VuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXJDb250ZXh0fSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyJztcbmltcG9ydCB7QXVkaW9Db2RlY1R5cGV9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlYyc7XG5pbXBvcnQge1ZpZGVvQ29kZWNUeXBlfSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL1ZpZGVvQ29kZWMnO1xuaW1wb3J0IFZpZGVvQ29kZWNNYXBwaW5nIGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlY01hcHBpbmcnO1xuaW1wb3J0IEF1ZGlvQ29kZWNNYXBwaW5nIGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlY01hcHBpbmcnO1xuXG5jb25zdCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCA9IDEwMDtcbmNvbnN0IGRlZmF1bHRTdHJlYW1TZXR1cFRpbWVvdXQgPSAzMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhbFRpbWVTdHJlYW0gaW1wbGVtZW50cyBJU3RyZWFtIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1JlYWxUaW1lU3RyZWFtJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxDb250ZXh0OiBDaGFubmVsQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfaGFuZGxlU3RyZWFtRmFpbHVyZTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuXG4gIGNvbnN0cnVjdG9yKGNoYW5uZWxDb250ZXh0OiBDaGFubmVsQ29udGV4dCwgcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQsIHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQsIGZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCwgaGFuZGxlU3RyZWFtRmFpbHVyZTogKCkgPT4gUHJvbWlzZTx2b2lkPikge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0ID0gY2hhbm5lbENvbnRleHQ7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0ID0gcGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQgPSBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0ID0gZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQ7XG4gICAgdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSA9IGhhbmRsZVN0cmVhbUZhaWx1cmU7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQodGhpcyk7XG4gIH1cblxuICBzdGFydCh1cmk6IFVSTCwgdG9rZW46IHN0cmluZywgbGlzdGVuT25TdHJlYW1TZXR1cDogU3RyZWFtU2V0dXBMaXN0ZW5lciwgcGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQ6IEZ1bmN0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVxdWlyZXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZVxuICAgICAgfHwgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVjb2RlLnZhbHVlXG4gICAgICB8fCB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZXN0YW1wcy52YWx1ZSA/IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5FbmFibGVkIDogRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkRpc2FibGVkO1xuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICAgIERpc2NvdmVyeS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaSksXG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigncmVjdm9ubHknLCBkZWZhdWx0VHJhY2tLaW5kcywgcmVxdWlyZXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMpXG4gICAgICAgIC50aGVuKCh7bG9jYWxPZmZlciwgcGVlckNvbm5lY3Rpb259KSA9PiB7XG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gcGVlckNvbm5lY3Rpb247XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbG9jYWxPZmZlcixcbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uXG4gICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICBdKVxuICAgICAgLnRoZW4oKFtlbmRQb2ludCwge2xvY2FsT2ZmZXIsIHBlZXJDb25uZWN0aW9ufV0pID0+IHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQub25saW5lLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgPSBlbmRQb2ludDtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Nvbm5lY3RpbmcgdG8gWyVzXScsIGVuZFBvaW50LnRvU3RyaW5nKCkpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnTG9jYWwgb2ZmZXI6XFxuJyArIGxvY2FsT2ZmZXIuc2RwKTtcblxuICAgICAgICBjb25zdCBzdWJzY3JpYmVPcHRpb25zOiBTdWJzY3JpYmVPcHRpb25zID0ge307XG5cbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2spIHtcbiAgICAgICAgICBzdWJzY3JpYmVPcHRpb25zLm9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrID0gdGhpcy5fY2hhbm5lbENvbnRleHQub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaykge1xuICAgICAgICAgIHN1YnNjcmliZU9wdGlvbnMub25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrID0gdGhpcy5fY2hhbm5lbENvbnRleHQub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuY2xpZW50T2ZmZXJEaXNhYmxlZCB8fCAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIHx8ICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldENvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5jbG9zZSgpO1xuICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmRpc3Bvc2UoKTtcblxuICAgICAgICAgIGlmIChTREsuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCAmJiAhKEZlYXR1cmVFbmFibGVtZW50LmlzTW9iaWxlICYmIFNESy5za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpKSB7XG4gICAgICAgICAgICBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlci5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gbnVsbDtcblxuICAgICAgICAgIHJldHVybiBlbmRQb2ludC5zdWJzY3JpYmUodG9rZW4sIG51bGwsIHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSwgc3Vic2NyaWJlT3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZW5kUG9pbnQuc3Vic2NyaWJlKHRva2VuLCBsb2NhbE9mZmVyLCB0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUsIHN1YnNjcmliZU9wdGlvbnMpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgY29uc3Qge3N0YXR1c30gPSByZXNwb25zZTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5leGlzdHMudmFsdWUgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5tYXBTdWJzY3JpYmVTdGF0dXNUb0V4aXN0cyhzdGF0dXMpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMuX2NoYW5uZWxDb250ZXh0Lm1hcFN1YnNjcmliZVN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmFwcGx5U3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubGFnLnZhbHVlID0gdW5kZWZpbmVkIDtcblxuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCgpO1xuXG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAnWyVzXSBTdWJzY3JpYmUgZmFpbGVkIHdpdGggc3RhdHVzIFslc10nLFxuICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge3N0cmVhbSwgcnRjQ29uZmlndXJhdGlvbiwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLCBsYWd9ID0gcmVzcG9uc2U7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlID0gc3RyZWFtO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sYWcudmFsdWUgPSBsYWc7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXBwbHlTZXNzaW9uQW5kU3RyZWFtUHJvcGVydGllc1RvVmlkZW9FbGVtZW50KCk7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICdbJXNdIFN1YnNjcmliZSBjb21wbGV0ZWQgWyVzXSBbJWpdIFslal0gWyVqXSBbJWpdJyxcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgcnRjQ29uZmlndXJhdGlvbixcbiAgICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlSdGNDb25maWd1cmF0aW9uKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSwgcnRjQ29uZmlndXJhdGlvbiBhcyBSVENDb25maWd1cmF0aW9uKVxuICAgICAgICAgIC50aGVuKHBlZXJDb25uZWN0aW9uID0+IHtcbiAgICAgICAgICAgIGxldCBzdWJtaXRDYW5kaWRhdGVzVGltZW91dDogdW5kZWZpbmVkIHwgbnVtYmVyO1xuICAgICAgICAgICAgbGV0IGNhbmNlbERpc2NvdmVyeSA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IGRpc2NvdmVyeUNvbXBsZXRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlczogUlRDSWNlQ2FuZGlkYXRlW10gPSBbXTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUpIHtcbiAgICAgICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gcGVlckNvbm5lY3Rpb247XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlID0gKGUpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSAhPT0gcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoY2FuY2VsRGlzY292ZXJ5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCFTREsuc2VuZExvY2FsQ2FuZGlkYXRlcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChlLmNhbmRpZGF0ZSAmJiBlLmNhbmRpZGF0ZS5jYW5kaWRhdGUpIHtcbiAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goZS5jYW5kaWRhdGUpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRpc2NvdmVyeUNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoIXN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGlmIChjYW5jZWxEaXNjb3ZlcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWU/LmFkZEljZUNhbmRpZGF0ZXMoc3RyZWFtLCBjYW5kaWRhdGVzLCBkaXNjb3ZlcnlDb21wbGV0ZWQpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCh7c3RhdHVzLCBvcHRpb25zfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIEZhaWxlZCB0byBhZGQgSUNFIGNhbmRpZGF0ZXMgd2l0aCByZWFzb24gWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnM/LmluY2x1ZGVzKCdjYW5jZWwnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsRGlzY292ZXJ5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBBZGRlZCBJQ0UgY2FuZGlkYXRlcyB3aXRoIHJlYXNvbiBbJXNdIGFuZCBvcHRpb25zIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc3RhdHVzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignWyVzXSBGYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHJldHJ5Q2FsbGJhY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgLy8gSWYgd2Ugc3RvcCBub3JtYWxseSB0aGUgcGVlciBjb25uZWN0aW9uIGlzIHVucmVnaXN0ZXJlZCBmaXJzdC5cbiAgICAgICAgICAgICAgICAvLyBUaHVzIGFueXRpbWUgd2Ugc2VlIGEgY2xvc2VkIHBlZXIgY29ubmVjdGlvbiB0aGF0IGlzIHN0aWxsIHZhbGlkLCBpdCBpcyBhbiBlcnJvci5cbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25uZWN0aW9uRXJyb3I7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucGF1c2UoKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZSBhZnRlciBwZWVyIGNvbm5lY3Rpb24gc3RvcHBlZCB3aXRoIHN0YXRlIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBzd2l0Y2ggKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NoZWNraW5nJzpcbiAgICAgICAgICAgICAgICBjYXNlICdjb21wbGV0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2Nvbm5lY3RlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnbmV3JzpcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Rpc2Nvbm5lY3RlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgICAgICAgICAgIGlmIChHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JJc09uTGluZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBJQ0UgY29ubmVjdGlvbiBzdGF0ZSBjaGFuZ2VkIHRvIFslc10sIHRyeWluZyB0byByZWNvbm5lY3QnLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjYXNlICdjbG9zZWQnOlxuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gSUNFIGNvbm5lY3Rpb24gc3RhdGUgY2hhbmdlZCB0byBbJXNdLCByZXRyeWluZyB0byBjb25uZWN0JywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHJ5Q2FsbGJhY2soKTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUgYXMgbmV2ZXIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBtZWRpYVN0cmVhbVByb21pc2UgPSBuZXcgUHJvbWlzZTxNZWRpYVN0cmVhbT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIUZlYXR1cmVFbmFibGVtZW50Lm9uVHJhY2tEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignU3RyZWFtIHNldHVwIHRpbWVkIG91dCcpKSwgZGVmYXVsdFN0cmVhbVNldHVwVGltZW91dCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCkpKTtcblxuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9udHJhY2sgPSAoZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKGUuc3RyZWFtc1swXSk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHRyYWNrTGlzdGVuZXIgPSAoZTogUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcFsndHJhY2snIHwgJ2FkZHN0cmVhbSddKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYWNrJywgdHJhY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWRkc3RyZWFtJywgdHJhY2tMaXN0ZW5lcik7XG5cbiAgICAgICAgICAgICAgICBpZiAoJ3N0cmVhbXMnIGluIGUpIHtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoZS5zdHJlYW1zWzBdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShlLnN0cmVhbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYWNrJywgdHJhY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWRkc3RyZWFtJywgdHJhY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignU3RyZWFtIHNldHVwIHRpbWVkIG91dCcpKTtcbiAgICAgICAgICAgICAgfSwgZGVmYXVsdFN0cmVhbVNldHVwVGltZW91dCk7XG5cbiAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcigndHJhY2snLCB0cmFja0xpc3RlbmVyKTtcbiAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcignYWRkc3RyZWFtJywgdHJhY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgbG9jYWwgU0RQIG9mZmVyIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IGxvY2FsIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IHJlbW90ZSBTRFAgYW5zd2VyIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCByZW1vdGUgU0RQIG9mZmVyIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIoe1xuICAgICAgICAgICAgICAgICAgICBvZmZlclRvUmVjZWl2ZUF1ZGlvOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBvZmZlclRvUmVjZWl2ZVZpZGVvOiB0cnVlXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KS50aGVuKGFuc3dlciA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgbG9jYWwgU0RQIGFuc3dlciBbJWpdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGFuc3dlcik7XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZFBvaW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgYXMgRW5kUG9pbnQ7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBlbmRQb2ludC5zZXRSZW1vdGVEZXNjcmlwdGlvbihzdHJlYW0sIGFuc3dlcik7XG4gICAgICAgICAgICAgICAgfSkudGhlbigoe3N0YXR1cywgc2Vzc2lvbkRlc2NyaXB0aW9ufSkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLm1hcFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzVG9DaGFubmVsU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oc2Vzc2lvbkRlc2NyaXB0aW9uIGFzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgbG9jYWwgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBzZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLnN1Y2Nlc3ModGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQpO1xuXG4gICAgICAgICAgICAgIHJldHVybiBtZWRpYVN0cmVhbVByb21pc2U7XG4gICAgICAgICAgICB9KS50aGVuKG1lZGlhU3RyZWFtID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlcXVpcmVzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zICYmIHBlZXJDb25uZWN0aW9uPy5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24/LnNkcCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uID0gbmV3IFNkcFBhcnNlcihwZWVyQ29ubmVjdGlvbi5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5jb2RlYyA9IFZpZGVvQ29kZWNNYXBwaW5nLmNvbnZlcnRWaWRlb0NvZGVjVHlwZVRvVmlkZW9Db2RlYyhwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi52aWRlb0NvZGVjIGFzIFZpZGVvQ29kZWNUeXBlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvVHJhY2suY29kZWMgPSBBdWRpb0NvZGVjTWFwcGluZy5jb252ZXJ0QXVkaW9Db2RlY1R5cGVUb0F1ZGlvQ29kZWMocGFyc2VkUmVtb3RlRGVzY3JpcHRpb24uYXVkaW9Db2RlYyBhcyBBdWRpb0NvZGVjVHlwZSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlcnMgPSBwZWVyQ29ubmVjdGlvbi5nZXRSZWNlaXZlcnMoKTtcbiAgICAgICAgICAgICAgICAvLyBOb3RlOiBUaGlzIGFzc3VtZXMgdGhhdCB0aGVyZSBpcyBvbmx5IG9uZSB2aWRlbyBNZWRpYVN0cmVhbVRyYWNrIGFuZCBvbmUgYXVkaW8gTWVkaWFTdHJlYW1UcmFja1xuICAgICAgICAgICAgICAgIGNvbnN0IHZpZGVvVHJhY2sgPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2subWVkaWFTdHJlYW1UcmFjayA9IG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF07XG4gICAgICAgICAgICAgICAgLy8gQm90aCBhcmUgZXhwZWN0ZWQgdG8gYmUgcHJlc2VudCwgYnV0IHRoZSB0eXBlIHN5c3RlbSBtYWtlcyB0aGVtIG51bGxhYmxlLCBzbyB3ZSBoYXZlIHRvIGFzc2VydCB0aGUgcHJlc2VuY2VcbiAgICAgICAgICAgICAgICBjb25zdCB2aWRlb1RyYWNrUmVjZWl2ZXIgPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2sucmVjZWl2ZXIgPSByZWNlaXZlcnMuZmlsdGVyKHJlY2VpdmVyID0+IHJlY2VpdmVyLnRyYWNrID09PSB2aWRlb1RyYWNrKVswXTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5taWQgPSBwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldFRyYW5zY2VpdmVyc1xuICAgICAgICAgICAgICAgICAgPyBwZWVyQ29ubmVjdGlvbi5nZXRUcmFuc2NlaXZlcnMoKS5maWx0ZXIodHJhbnNjZWl2ZXIgPT4gdHJhbnNjZWl2ZXIucmVjZWl2ZXIgPT09IHZpZGVvVHJhY2tSZWNlaXZlcilbMF0/Lm1pZFxuICAgICAgICAgICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYXVkaW9UcmFjayA9IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9UcmFjay5tZWRpYVN0cmVhbVRyYWNrID0gbWVkaWFTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXTtcbiAgICAgICAgICAgICAgICBjb25zdCBhdWRpb1RyYWNrUmVjZWl2ZXIgPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvVHJhY2sucmVjZWl2ZXIgPSByZWNlaXZlcnMuZmlsdGVyKHJlY2VpdmVyID0+IHJlY2VpdmVyLnRyYWNrID09PSBhdWRpb1RyYWNrKVswXTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9UcmFjay5taWQgPSBwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldFRyYW5zY2VpdmVyc1xuICAgICAgICAgICAgICAgICAgPyBwZWVyQ29ubmVjdGlvbi5nZXRUcmFuc2NlaXZlcnMoKS5maWx0ZXIodHJhbnNjZWl2ZXIgPT4gdHJhbnNjZWl2ZXIucmVjZWl2ZXIgPT09IGF1ZGlvVHJhY2tSZWNlaXZlcilbMF0/Lm1pZFxuICAgICAgICAgICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKEluc2VydGFibGVTdHJlYW1zLmNyZWF0ZUVuY29kZWRTdHJlYW1QaXBlbGluZSh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0KSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCByZXF1aXJlc0ZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZWNvZGUudmFsdWUgfHwgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVzdGFtcHMudmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVxdWlyZXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQ6IEZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dCA9IHtcbiAgICAgICAgICAgICAgICAgICAgc3RyZWFtSWQ6IHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICBjb2RlYzogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLmNvZGVjLFxuICAgICAgICAgICAgICAgICAgICB2aWRlb0VsZW1lbnQ6IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbixcbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQucmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLFxuICAgICAgICAgICAgICAgICAgICBpc0VuYWJsZWRTdWJqZWN0OiB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5pc0VuYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyOiB2aWRlb1RyYWNrUmVjZWl2ZXIsXG4gICAgICAgICAgICAgICAgICAgIG1pZDogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLm1pZCEsXG4gICAgICAgICAgICAgICAgICAgIHRyYWNrSWQ6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5tZWRpYVN0cmVhbVRyYWNrLmlkISxcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtTWVzc2FnZVJvdXRlcjogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLnRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIhLFxuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1GdW5jdGlvbk5hbWVzOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2sudHJhbnNmb3JtRnVuY3Rpb25OYW1lc1xuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlcihmcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCByZXF1aXJlc0VuY29kZWRNZWRpYVRyYW5zZm9ybSA9IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVzRW5jb2RlZE1lZGlhVHJhbnNmb3JtKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBlbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyQ29udGV4dDogRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQgPSB7XG4gICAgICAgICAgICAgICAgICAgIHZpZGVvVHJhY2s6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjayxcbiAgICAgICAgICAgICAgICAgICAgYXVkaW9UcmFjazogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1RyYWNrLFxuICAgICAgICAgICAgICAgICAgICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmshLFxuICAgICAgICAgICAgICAgICAgICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmshXG4gICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IEVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXIoZW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBJbnNlcnRhYmxlU3RyZWFtcy5jb25maWd1cmVFbmNvZGVkU3RyZWFtUGlwZWxpbmUodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dCk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHt0cmFuc2Zvcm1lZFN0cmVhbSwgZGlzcG9zYWJsZXN9ID0gSW5zZXJ0YWJsZVN0cmVhbXMuY29uZmlndXJlSW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybWF0aW9uKG1lZGlhU3RyZWFtLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQoZGlzcG9zYWJsZXMpO1xuICAgICAgICAgICAgICAgIG1lZGlhU3RyZWFtID0gdHJhbnNmb3JtZWRTdHJlYW07XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUgPSBtZWRpYVN0cmVhbTtcblxuICAgICAgICAgICAgICBjb25zdCBydGNDb25uZWN0aW9uTW9uaXRvciA9IG5ldyBSdGNDb25uZWN0aW9uTW9uaXRvcihwZWVyQ29ubmVjdGlvbiwgbWVkaWFTdHJlYW0sIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlPy5yb3VuZFRyaXBUaW1lID8gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUucm91bmRUcmlwVGltZSAvIDQgOiAwKTtcblxuICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQocnRjQ29ubmVjdGlvbk1vbml0b3IpO1xuXG4gICAgICAgICAgICAgIGNvbnN0IHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yU3RhdGlzdGljU3Vic2NyaXB0aW9uID0gcnRjQ29ubmVjdGlvbk1vbml0b3IucnRjU3RhdGlzdGljLnN1YnNjcmliZShzdGF0aXN0aWNzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNTdGF0aXN0aWNzLnZhbHVlID0gc3RhdGlzdGljcztcblxuICAgICAgICAgICAgICAgIGlmICghc3RhdGlzdGljcykge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgJiYgIXRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYyA9IHN0YXRpc3RpY3MuYXVkaW87XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYyA9IHN0YXRpc3RpY3MudmlkZW87XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgYXVkaW9UcmFja0ZhaWxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGxldCB2aWRlb1RyYWNrRmFpbGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RhdGlzdGljcy5hdWRpbykge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljLnRpbWVzdGFtcCAhPT0gc3RhdGlzdGljcy5hdWRpby50aW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgICAgYXVkaW9UcmFja0ZhaWxlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljLmJ5dGVzUmVjZWl2ZWQgPT09IHN0YXRpc3RpY3MuYXVkaW8uYnl0ZXNSZWNlaXZlZDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoYXVkaW9UcmFja0ZhaWxlZCAmJiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JJc09uTGluZSkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1slc10gQXVkaW8gdHJhY2sgZmFpbGVkIHdpdGggbGFzdCBieXRlc1JlY2VpdmVkIFslc10gaXMgZXF1YWwgdG8gcHJldmlvdXMgYnl0ZXNSZWNlaXZlZCBbJXNdIHdpdGhpbiBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljcy5hdWRpby5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMuYnl0ZXNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEdXJhdGlvbnMoc3RhdGlzdGljcy5hdWRpby50aW1lc3RhbXAgLSB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYy50aW1lc3RhbXApLnRvSXNvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMgPSBzdGF0aXN0aWNzLmF1ZGlvO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChzdGF0aXN0aWNzLnZpZGVvKSB7XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMudGltZXN0YW1wICE9PSBzdGF0aXN0aWNzLnZpZGVvLnRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgICAgICB2aWRlb1RyYWNrRmFpbGVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMuYnl0ZXNSZWNlaXZlZCA9PT0gc3RhdGlzdGljcy52aWRlby5ieXRlc1JlY2VpdmVkO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh2aWRlb1RyYWNrRmFpbGVkICYmIEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvcklzT25MaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBWaWRlbyB0cmFjayBmYWlsZWQgd2l0aCBsYXN0IGJ5dGVzUmVjZWl2ZWQgWyVzXSBpcyBlcXVhbCB0byBwcmV2aW91cyBieXRlc1JlY2VpdmVkIFslc10gd2l0aGluIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aXN0aWNzLnZpZGVvLmJ5dGVzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYy5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IER1cmF0aW9ucyhzdGF0aXN0aWNzLnZpZGVvLnRpbWVzdGFtcCAtIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljLnRpbWVzdGFtcCkudG9Jc29TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYyA9IHN0YXRpc3RpY3MudmlkZW87XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JJc09uTGluZSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuT2ZmbGluZTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh2aWRlb1RyYWNrRmFpbGVkIHx8IGF1ZGlvVHJhY2tGYWlsZWQpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJldHJ5Q2FsbGJhY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbm5lY3Rpb25FcnJvcjtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnBhdXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnNyY09iamVjdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgIHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yLmRpc3Bvc2UoKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUgYWZ0ZXIgdHJhY2sgc3RvcHBlZCB3aXRoIHN0YXRlIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcblxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlICE9PSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlICE9PSBDaGFubmVsU3RhdGUuT2ZmbGluZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA/IENoYW5uZWxTdGF0ZS5QbGF5aW5nIDogQ2hhbm5lbFN0YXRlLlBhdXNlZDtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIHN0YXRlIHJlc3RvcmVkIHRvIFslc10gYWZ0ZXIgcmVjb25uZWN0aW5nJywgQ2hhbm5lbFN0YXRlW3RoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQocnRjQ29ubmVjdGlvbk1vbml0b3JTdGF0aXN0aWNTdWJzY3JpcHRpb24pO1xuXG4gICAgICAgICAgICAgIGlmICghU0RLLmF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBhdXNlZDtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBwbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudChtZWRpYVN0cmVhbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhcHBseVJ0Y0NvbmZpZ3VyYXRpb24oXG4gICAgb3B0aW9uYWxQZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uIHwgbnVsbCxcbiAgICBydGNDb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb24+IHtcbiAgICBpZiAoIW9wdGlvbmFsUGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24gPSBSdGNDb25maWd1cmF0aW9uTWFuYWdlci50cnVuY2F0ZUljZVNlcnZlcnMocnRjQ29uZmlndXJhdGlvbik7XG5cbiAgICAgIHJldHVybiBTREsucGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlLmNyZWF0ZVBlZXJDb25uZWN0aW9uKHJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld1J0Y0NvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAuLi5vcHRpb25hbFBlZXJDb25uZWN0aW9uLmdldENvbmZpZ3VyYXRpb24oKSxcbiAgICAgIC4uLnJ0Y0NvbmZpZ3VyYXRpb25cbiAgICB9O1xuXG4gICAgb3B0aW9uYWxQZWVyQ29ubmVjdGlvbi5zZXRDb25maWd1cmF0aW9uKG5ld1J0Y0NvbmZpZ3VyYXRpb24pO1xuXG4gICAgcmV0dXJuIG9wdGlvbmFsUGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBwcml2YXRlIHJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBpZiAocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlID09PSAnY2xvc2VkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlJlY29ubmVjdGluZztcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA8IFNESy5tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIHx8ICFTREsuYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cysrO1xuXG4gICAgICBjb25zdCBpc0NsaWVudE9mZmVyRmxvdyA9IHBlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uPy50eXBlID09PSAnb2ZmZXInO1xuXG4gICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuY2xpZW50T2ZmZXJEaXNhYmxlZCB8fFxuICAgICAgICAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIHx8XG4gICAgICAgICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldENvbmZpZ3VyYXRpb24gfHxcbiAgICAgICAgIWlzQ2xpZW50T2ZmZXJGbG93XG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUmVjb25uZWN0aW5nIHBlZXIgY29ubmVjdGlvbiBieSByZXN0YXJ0aW5nIElDRScpO1xuXG4gICAgICBjb25zdCBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbiA9IHBlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uO1xuICAgICAgY29uc3QgaWdub3JlZCA9IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHtpY2VSZXN0YXJ0OiB0cnVlfSkudGhlbihvZmZlciA9PiB7XG4gICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihjdXJyZW50TG9jYWxEZXNjcmlwdGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24nLCBlKTtcbiAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gICAgICAgICAgcmV0cnlDYWxsYmFjaygpO1xuICAgICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGYWlsZWQgdG8gcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbiBhZnRlciBbJXNdIGF0dGVtcHRzLCBwZXJmb3JtaW5nIGZ1bGwgcmVjb3ZlcnknLCB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyk7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICAgIHJldHJ5Q2FsbGJhY2soKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKTogQ2hhbm5lbFN0YXRlIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmc7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkVycm9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJU3RyZWFtfSBmcm9tICcuL0lTdHJlYW0nO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCBSZWFsVGltZVN0cmVhbSBmcm9tICcuL1JlYWxUaW1lU3RyZWFtJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgQ2hhbm5lbFN0YXRlIGZyb20gJy4uL2NoYW5uZWxzL0NoYW5uZWxTdGF0ZSc7XG5pbXBvcnQgQ2hhbm5lbENvbnRleHQgZnJvbSAnLi4vY29udGV4dC9DaGFubmVsQ29udGV4dCc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0JztcbmltcG9ydCBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvU3RyZWFtVHJhbnNmb3JtQ29udGV4dCc7XG5pbXBvcnQgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9GcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWxUaW1lU3RyZWFtRmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU3RyZWFtaW5nJyk7XG5cbiAgc3RhdGljIGNyZWF0ZSh0b2tlbjogc3RyaW5nLCBjaGFubmVsQ29udGV4dDogQ2hhbm5lbENvbnRleHQsIHBlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0LCBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD4pOiBJU3RyZWFtIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB0b2tlbkNhcGFiaWxpdGllcyA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLmNhcGFiaWxpdGllcztcblxuICAgIGlmICh0b2tlbkNhcGFiaWxpdGllcy5pbmNsdWRlcygnb24tZGVtYW5kJykpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignVGhpcyBidWlsZCBkb2VzIG5vdCBzdXBwb3J0IE9uLURlbWFuZCBTdHJlYW0gcGxheWJhY2suJyk7XG4gICAgICBjaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodG9rZW5DYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ3N0cmVhbWluZycpKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1RoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBMaXZlIFN0cmVhbSBwbGF5YmFjay4nKTtcbiAgICAgIGNoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUmVhbFRpbWVTdHJlYW0oY2hhbm5lbENvbnRleHQsIHBlZXJDb25uZWN0aW9uQ29udGV4dCwgc3RyZWFtVHJhbnNmb3JtQ29udGV4dCwgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSZWFsVGltZVN0cmVhbUZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQge0F1ZGlvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlYyc7XG5pbXBvcnQge1ZpZGVvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYyc7XG5pbXBvcnQge0lFbmNvZGVkU3RyZWFtU2lua30gZnJvbSAnLi9FbmNvZGVkU3RyZWFtU2luayc7XG5pbXBvcnQge1N0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFja30gZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLCB7U3Vycm9nYXRlRnJhbWVUeXBlLCBTa2lwRnJhbWV9IGZyb20gJy4vU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlcic7XG5pbXBvcnQge1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZX0gZnJvbSAnLi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlJztcbmltcG9ydCBDaHVuayBmcm9tICcuL0NodW5rJztcblxuZXhwb3J0IHR5cGUgRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQgPSB7XG4gIHZpZGVvVHJhY2s6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaztcbiAgYXVkaW9UcmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrO1xuICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+O1xuICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG5cbiAgY29uc3RydWN0b3IoY29udGV4dDogRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQpIHtcbiAgICB0aGlzLmluaXRpYWxpemUoY29udGV4dCk7XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoY29udGV4dDogRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAoY29udGV4dC52aWRlb1RyYWNrLm1lZGlhU3RyZWFtVHJhY2spIHtcbiAgICAgIGNvbnRleHQudmlkZW9UcmFjay50cmFuc2Zvcm1GdW5jdGlvbk5hbWVzLnB1c2goJ3Byb3RlY3RlZC12aWRlbycpO1xuXG4gICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQoY29udGV4dC52aWRlb1RyYWNrLnRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIhLnJlZ2lzdGVyUm91dGUoVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLkVuY29kZWRWaWRlb0NodW5rLCAoY2h1bms6IFJUQ0VuY29kZWRWaWRlb0ZyYW1lKSA9PiB0aGlzLmVuY29kZWRWaWRlb1N0cmVhbUNhbGxiYWNrKGNvbnRleHQudmlkZW9UcmFjaywgY29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rIGFzIElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4sIGNodW5rKSkpO1xuICAgIH1cblxuICAgIGlmIChjb250ZXh0LmF1ZGlvVHJhY2subWVkaWFTdHJlYW1UcmFjaykge1xuICAgICAgY29udGV4dC5hdWRpb1RyYWNrLnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMucHVzaCgncHJvdGVjdGVkLWF1ZGlvJyk7XG5cbiAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChjb250ZXh0LmF1ZGlvVHJhY2sudHJhbnNmb3JtTWVzc2FnZVJvdXRlciEucmVnaXN0ZXJSb3V0ZShUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRW5jb2RlZEF1ZGlvQ2h1bmssIChjaHVuazogUlRDRW5jb2RlZEF1ZGlvRnJhbWUpID0+IHRoaXMuZW5jb2RlZEF1ZGlvU3RyZWFtQ2FsbGJhY2soY29udGV4dC5hdWRpb1RyYWNrLCBjb250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmsgYXMgSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPiwgY2h1bmspKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbmNvZGVkQXVkaW9TdHJlYW1DYWxsYmFjayh0cmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrLCBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+LCBjaHVuazogUlRDRW5jb2RlZEF1ZGlvRnJhbWUpOiBQcm9taXNlPENodW5rPiB7XG4gICAgaWYgKCFhd2FpdCBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rKHRyYWNrLm1lZGlhU3RyZWFtVHJhY2shLCBjaHVuaykpIHtcbiAgICAgIGNodW5rLmRhdGEgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldEludmFsaWRTdXJyb2dhdGVBdWRpb0RhdGEoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlQXVkaW9TaWxlbnRQZXJDb2RlYyh0cmFjay5jb2RlYyBhcyBBdWRpb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgIH1cblxuICAgIHJldHVybiBjaHVuayBhcyB1bmtub3duIGFzIENodW5rO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbmNvZGVkVmlkZW9TdHJlYW1DYWxsYmFjayh0cmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrLCBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+LCBjaHVuazogUlRDRW5jb2RlZFZpZGVvRnJhbWUpOiBQcm9taXNlPENodW5rIHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKCFhd2FpdCBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rKHRyYWNrLm1lZGlhU3RyZWFtVHJhY2shLCBjaHVuaykpIHtcbiAgICAgIGxldCBzdXJyb2dhdGU6IFN1cnJvZ2F0ZUZyYW1lVHlwZTtcblxuICAgICAgaWYgKGNodW5rLnR5cGUgPT09ICdrZXknKSB7XG4gICAgICAgIHN1cnJvZ2F0ZSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvSUZyYW1lKHRyYWNrLmNvZGVjIGFzIFZpZGVvQ29kZWMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3Vycm9nYXRlID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9QRnJhbWUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN1cnJvZ2F0ZSA9PT0gU2tpcEZyYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY2h1bmsuZGF0YSA9IHN1cnJvZ2F0ZSB8fCBjaHVuay5kYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY2h1bmsudHlwZSA9PT0gJ2tleScpIHtcbiAgICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlVmlkZW9JRnJhbWVQZXJDb2RlYyh0cmFjay5jb2RlYyBhcyBWaWRlb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlVmlkZW9QRnJhbWVQZXJDb2RlYyh0cmFjay5jb2RlYyBhcyBWaWRlb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjaHVuaztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIElFbmNvZGVkU3RyZWFtU2luazxUIGV4dGVuZHMgUlRDRW5jb2RlZEF1ZGlvRnJhbWUgfCBSVENFbmNvZGVkVmlkZW9GcmFtZT4ge1xuICAgICh0cmFjazogTWVkaWFTdHJlYW1UcmFjaywgY2h1bms6IFQpOiBib29sZWFuIHwgUHJvbWlzZUxpa2U8Ym9vbGVhbj47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVuY29kZWRTdHJlYW1TaW5rIHtcbiAgc3RhdGljIHZhbGlkYXRlRW5jb2RlZFN0cmVhbVNpbms8VCBleHRlbmRzIFJUQ0VuY29kZWRBdWRpb0ZyYW1lIHwgUlRDRW5jb2RlZFZpZGVvRnJhbWU+KG1vZGU6ICdhdWRpbycgfCAndmlkZW8nLCBpdGVtOiBJRW5jb2RlZFN0cmVhbVNpbms8VD4pIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdDogYFVuZXhwZWN0ZWQgJHttb2RlfSBFbmNvZGVkIFN0cmVhbSBTaW5rIGZ1bmN0aW9uIHR5cGUuIEZvdW5kIFske3R5cGVvZiBpdGVtfV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChpdGVtLmxlbmd0aCAhPT0gMikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0OiBgVW5leHBlY3RlZCAke21vZGV9IEVuY29kZWQgU3RyZWFtIFNpbmsgZnVuY3Rpb24gcGFyYW1ldGVyIGxlbmd0aC4gRXhwZWN0ZWQgMi4gRm91bmQgWyR7aXRlbS5sZW5ndGh9XWBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgdmFsaWRhdGlvblJlc3VsdDogJ29rJ1xuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0VuY29kZWRTdHJlYW1TaW5rIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCB7SVN0cmVhbVRyYWNrVHJhbnNmb3JtfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybSc7XG5pbXBvcnQgU3RyZWFtVHJhbnNmb3JtQ29udGV4dCwge1N0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFja30gZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciBmcm9tICcuL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZS53b3JrZXInO1xuaW1wb3J0IHtUcmFuc2Zvcm1NZXNzYWdlVHlwZX0gZnJvbSAnLi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlJztcbmltcG9ydCBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIGZyb20gJy4vd29ya2VyL01lc3NhZ2VSb3V0ZXInO1xuXG50eXBlIE1lZGlhU3RyZWFtVHJhY2tLaW5kID0gJ3ZpZGVvJyB8ICdhdWRpbyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc2VydGFibGVTdHJlYW1zIHtcbiAgc3RhdGljIGNyZWF0ZUVuY29kZWRTdHJlYW1QaXBlbGluZShzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0KTogRGlzcG9zYWJsZUxpc3Qge1xuICAgIGNvbnN0IGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIGNvbnN0IHt2aWRlb1RyYWNrLCBhdWRpb1RyYWNrfSA9IHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gICAgY29uc3QgY3JlYXRlVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJGb3JUcmFjayA9IChjb250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2spID0+IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmUgLSBVc2luZyBXZWJwYWNrJ3Mgd29ya2VyIGxvYWRlciB0byBpbmxpbmUgd29ya2VyXG4gICAgICBjb25zdCB3b3JrZXIgPSBjb250ZXh0LnRyYW5zZm9ybVBpcGVsaW5lV29ya2VyID0gbmV3IFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyKCk7XG5cbiAgICAgIGRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB3b3JrZXIudGVybWluYXRlKCkpKTtcbiAgICAgIGRpc3Bvc2FibGVzLmFkZChjb250ZXh0LnRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIgPSBuZXcgVHJhbnNmb3JtTWVzc2FnZVJvdXRlcih3b3JrZXIpKTtcbiAgICB9O1xuXG4gICAgY29uc3Qge3JlY2VpdmVyOiB2aWRlb1RyYWNrUmVjZWl2ZXIsIG1lZGlhU3RyZWFtVHJhY2s6IHZpZGVvVHJhY2tNZWRpYVN0cmVhbVRyYWNrfSA9IHZpZGVvVHJhY2s7XG5cbiAgICBpZiAodmlkZW9UcmFja1JlY2VpdmVyICYmIHZpZGVvVHJhY2tNZWRpYVN0cmVhbVRyYWNrKSB7XG4gICAgICBjcmVhdGVUcmFuc2Zvcm1QaXBlbGluZVdvcmtlckZvclRyYWNrKHZpZGVvVHJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHtyZWNlaXZlcjogYXVkaW9UcmFja1JlY2VpdmVyLCBtZWRpYVN0cmVhbVRyYWNrOiBhdWRpb1RyYWNrTWVkaWFTdHJlYW1UcmFja30gPSBhdWRpb1RyYWNrO1xuXG4gICAgaWYgKGF1ZGlvVHJhY2tSZWNlaXZlciAmJiBhdWRpb1RyYWNrTWVkaWFTdHJlYW1UcmFjaykge1xuICAgICAgY3JlYXRlVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJGb3JUcmFjayhhdWRpb1RyYWNrKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlzcG9zYWJsZXM7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgY29uZmlndXJlRW5jb2RlZFN0cmVhbVBpcGVsaW5lKHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7dmlkZW9UcmFjaywgYXVkaW9UcmFja30gPSBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICAgIGNvbnN0IGFkZFRyYWNrVHJhbnNmb3JtcyA9ICh0cmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrKSA9PiB7XG4gICAgICBpZiAodHJhY2sudHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIpIHtcbiAgICAgICAgaWYgKHRyYWNrLnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMubGVuZ3RoKSB7XG4gICAgICAgICAgZm9yIChjb25zdCB0cmFuc2Zvcm1GdW5jdGlvbk5hbWUgb2YgdHJhY2sudHJhbnNmb3JtRnVuY3Rpb25OYW1lcykge1xuICAgICAgICAgICAgdHJhY2sudHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5BZGRUcmFuc2Zvcm0sXG4gICAgICAgICAgICAgIGRhdGE6IHRyYW5zZm9ybUZ1bmN0aW9uTmFtZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFJlcXVpcmVkIGZvciBzYWZhcmkgdG8gcHJvcGVybHkgd29yayB3aGVuIG9ubHkgdmlkZW8gdHJhbnNmb3JtYXRpb24gaXMgYWRkZWQgKGkuZS4gRnJhbWVUaW1pbmdJbmZvcm1hdGlvbilcbiAgICAgICAgICB0cmFjay50cmFuc2Zvcm1QaXBlbGluZVdvcmtlci5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5BZGRUcmFuc2Zvcm0sXG4gICAgICAgICAgICBkYXRhOiAncGFzcy10aHJvdWdoJ1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIGFkZFRyYWNrVHJhbnNmb3Jtcyh2aWRlb1RyYWNrKTtcbiAgICBhZGRUcmFja1RyYW5zZm9ybXMoYXVkaW9UcmFjayk7XG5cbiAgICBjb25zdCBjb25maWd1cmVSVENSdHBTY3JpcHRUcmFuc2Zvcm0gPSBhc3luYyhzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0KSA9PiB7XG4gICAgICAvLyBTYWZhcmkgYW5kIEZpcmVmb3ggLi4uXG4gICAgICBjb25zdCBjb25maWd1cmVSVENSdHBTY3JpcHRUcmFuc2Zvcm1Gb3JUcmFjayA9IGFzeW5jKGNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaykgPT4ge1xuICAgICAgICBjb25zdCB7cmVjZWl2ZXI6IHRyYWNrUmVjZWl2ZXIsIG1lZGlhU3RyZWFtVHJhY2s6IHRyYWNrTWVkaWFTdHJlYW1UcmFjaywgdHJhbnNmb3JtUGlwZWxpbmVXb3JrZXI6IHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJ9ID0gY29udGV4dDtcblxuICAgICAgICBpZiAodHJhY2tSZWNlaXZlciAmJiB0cmFja01lZGlhU3RyZWFtVHJhY2sgJiYgdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlcikge1xuICAgICAgICAgIHRyYWNrUmVjZWl2ZXIudHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyLCB7bmFtZTogYCR7dHJhY2tNZWRpYVN0cmVhbVRyYWNrLmtpbmR9LXRyYW5zZm9ybS1waXBlbGluZWB9KTtcblxuICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsICh7ZGF0YTogbWVzc2FnZX06IE1lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICBpZiAobWVzc2FnZS50eXBlID09PSBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5QaXBlbGluZUNvbmZpZ3VyZWQpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIHtvbmNlOiB0cnVlfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7dmlkZW9UcmFjaywgYXVkaW9UcmFja30gPSBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChbY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtRm9yVHJhY2sodmlkZW9UcmFjayksIGNvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybUZvclRyYWNrKGF1ZGlvVHJhY2spXSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGNvbmZpZ3VyZUVuY29kZWRTdHJlYW1zID0gYXN5bmMoc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgY29uZmlndXJlRW5jb2RlZFN0cmVhbXNGb3JUcmFjayA9IChjb250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2spID0+IHtcbiAgICAgICAgY29uc3Qge3JlY2VpdmVyOiB0cmFja1JlY2VpdmVyLCBtZWRpYVN0cmVhbVRyYWNrOiB0cmFja01lZGlhU3RyZWFtVHJhY2ssIHRyYW5zZm9ybVBpcGVsaW5lV29ya2VyOiB0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyfSA9IGNvbnRleHQ7XG5cbiAgICAgICAgaWYgKHRyYWNrUmVjZWl2ZXIgJiYgdHJhY2tNZWRpYVN0cmVhbVRyYWNrICYmIHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZSAtIGNyZWF0ZUVuY29kZWRTdHJlYW1zIG1ldGhvZCBpcyBub3QgZGVmaW5lZCBpbiBsaWIuZG9tLmQudHNcbiAgICAgICAgICBjb25zdCBlbmNvZGVkUmVjZWl2ZXJTdHJlYW1zID0gdHJhY2tSZWNlaXZlci5jcmVhdGVFbmNvZGVkU3RyZWFtcygpO1xuXG4gICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKHtkYXRhOiBtZXNzYWdlfTogTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLlBpcGVsaW5lQ29uZmlndXJlZCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwge29uY2U6IHRydWV9KTtcblxuICAgICAgICAgICAgdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlci5wb3N0TWVzc2FnZShcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNvbmZpZ3VyZVBpcGVsaW5lLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgIHNvdXJjZTogZW5jb2RlZFJlY2VpdmVyU3RyZWFtcy5yZWFkYWJsZSxcbiAgICAgICAgICAgICAgICAgIHNpbms6IGVuY29kZWRSZWNlaXZlclN0cmVhbXMud3JpdGFibGVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHt0cmFuc2ZlcjogW2VuY29kZWRSZWNlaXZlclN0cmVhbXMucmVhZGFibGUsIGVuY29kZWRSZWNlaXZlclN0cmVhbXMud3JpdGFibGVdfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHt2aWRlb1RyYWNrLCBhdWRpb1RyYWNrfSA9IHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gICAgICBjb25zdCBhY3Rpb25zOiBQcm9taXNlPHZvaWQ+W10gPSBbXTtcblxuICAgICAgaWYgKHZpZGVvVHJhY2sucmVjZWl2ZXIgJiYgdmlkZW9UcmFjay50cmFuc2Zvcm1QaXBlbGluZVdvcmtlcikge1xuICAgICAgICBhY3Rpb25zLnB1c2goY29uZmlndXJlRW5jb2RlZFN0cmVhbXNGb3JUcmFjayh2aWRlb1RyYWNrKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhdWRpb1RyYWNrLnJlY2VpdmVyICYmIGF1ZGlvVHJhY2sudHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIpIHtcbiAgICAgICAgYWN0aW9ucy5wdXNoKGNvbmZpZ3VyZUVuY29kZWRTdHJlYW1zRm9yVHJhY2soYXVkaW9UcmFjaykpO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChhY3Rpb25zKTtcbiAgICB9O1xuXG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKSB7XG4gICAgICAvLyBTYWZhcmkgYW5kIEZpcmVmb3guLi5cbiAgICAgIGF3YWl0IGNvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybShzdHJlYW1UcmFuc2Zvcm1Db250ZXh0KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENocm9tZSwgQ2hyb21pdW0uLi5cbiAgICBhd2FpdCBjb25maWd1cmVFbmNvZGVkU3RyZWFtcyhzdHJlYW1UcmFuc2Zvcm1Db250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBjb25maWd1cmVJbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtYXRpb24oXG4gICAgc3RyZWFtOiBNZWRpYVN0cmVhbSxcbiAgICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT4gfCB1bmRlZmluZWQsXG4gICAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT4gfCB1bmRlZmluZWRcbiAgKToge3RyYW5zZm9ybWVkU3RyZWFtOiBNZWRpYVN0cmVhbTsgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0fSB7XG4gICAgY29uc3QgdHJhbnNmb3JtZWRTdHJlYW0gPSBuZXcgTWVkaWFTdHJlYW0oKTtcbiAgICBjb25zdCBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcblxuICAgIHN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHtcbiAgICAgIGNvbnN0IGtpbmQ6IE1lZGlhU3RyZWFtVHJhY2tLaW5kID0gdHJhY2sua2luZCBhcyBNZWRpYVN0cmVhbVRyYWNrS2luZDtcblxuICAgICAgc3dpdGNoIChraW5kKSB7XG4gICAgICAgIGNhc2UgJ3ZpZGVvJzoge1xuICAgICAgICAgIGlmICh2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKSB7XG4gICAgICAgICAgICBjb25zdCBpbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IFRyYW5zZm9ybWVyVHJhbnNmb3JtQ2FsbGJhY2s8VmlkZW9GcmFtZSwgVmlkZW9GcmFtZT4gPSAoY2h1bmssIGNvbnRyb2xsZXIpID0+IHtcbiAgICAgICAgICAgICAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayh0cmFjaywgY2h1bmssIGNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgdmlkZW9UcmFjayA9IHRyYWNrIGFzIE1lZGlhU3RyZWFtVmlkZW9UcmFjaztcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7dHJhbnNmb3JtOiBpbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2t9KTtcbiAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NvciA9IG5ldyBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yKHt0cmFjazogdmlkZW9UcmFja30pO1xuICAgICAgICAgICAgY29uc3QgZ2VuZXJhdG9yID0gbmV3IE1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3Ioe2tpbmQ6IHZpZGVvVHJhY2sua2luZH0pO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gcHJvY2Vzc29yLnJlYWRhYmxlO1xuICAgICAgICAgICAgY29uc3Qgc2luayA9IGdlbmVyYXRvci53cml0YWJsZTtcblxuICAgICAgICAgICAgc291cmNlLnBpcGVUaHJvdWdoKHRyYW5zZm9ybWVyKS5waXBlVG8oc2luayk7XG5cbiAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLmFkZFRyYWNrKGdlbmVyYXRvcik7XG4gICAgICAgICAgICBkaXNwb3NhYmxlcy5hZGQoXG4gICAgICAgICAgICAgIG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5yZW1vdmVUcmFjayhnZW5lcmF0b3IpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNmb3JtZWRTdHJlYW0uYWRkVHJhY2sodHJhY2spO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSAnYXVkaW8nOiB7XG4gICAgICAgICAgaWYgKGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIGNvbnN0IGluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogVHJhbnNmb3JtZXJUcmFuc2Zvcm1DYWxsYmFjazxBdWRpb0RhdGEsIEF1ZGlvRGF0YT4gPSAoY2h1bmssIGNvbnRyb2xsZXIpID0+IHtcbiAgICAgICAgICAgICAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayh0cmFjaywgY2h1bmssIGNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgYXVkaW9UcmFjayA9IHRyYWNrIGFzIE1lZGlhU3RyZWFtQXVkaW9UcmFjaztcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7dHJhbnNmb3JtOiBpbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2t9KTtcbiAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NvciA9IG5ldyBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yKHt0cmFjazogYXVkaW9UcmFja30pO1xuICAgICAgICAgICAgY29uc3QgZ2VuZXJhdG9yID0gbmV3IE1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3Ioe2tpbmQ6IGF1ZGlvVHJhY2sua2luZH0pO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gcHJvY2Vzc29yLnJlYWRhYmxlO1xuICAgICAgICAgICAgY29uc3Qgc2luayA9IGdlbmVyYXRvci53cml0YWJsZTtcblxuICAgICAgICAgICAgc291cmNlLnBpcGVUaHJvdWdoKHRyYW5zZm9ybWVyKS5waXBlVG8oc2luayk7XG5cbiAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLmFkZFRyYWNrKGdlbmVyYXRvcik7XG5cbiAgICAgICAgICAgIGNvbnN0IG1lZGlhU3RyZWFtID0gbmV3IE1lZGlhU3RyZWFtKCk7XG4gICAgICAgICAgICBjb25zdCBhdWRpb1B1bXBlciA9IG5ldyBBdWRpbygpO1xuXG4gICAgICAgICAgICBtZWRpYVN0cmVhbS5hZGRUcmFjayh0cmFjayk7XG4gICAgICAgICAgICBhdWRpb1B1bXBlci5zcmNPYmplY3QgPSBtZWRpYVN0cmVhbTtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYXVkaW9QdW1wZXIpO1xuICAgICAgICAgICAgZGlzcG9zYWJsZXMuYWRkKFxuICAgICAgICAgICAgICBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRTdHJlYW0ucmVtb3ZlVHJhY2soZ2VuZXJhdG9yKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGF1ZGlvUHVtcGVyKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLmFkZFRyYWNrKHRyYWNrKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoa2luZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHJhbnNmb3JtZWRTdHJlYW0sXG4gICAgICBkaXNwb3NhYmxlc1xuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0luc2VydGFibGVTdHJlYW1zIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIElTdHJlYW1UcmFja1RyYW5zZm9ybTxUIGV4dGVuZHMgQXVkaW9EYXRhIHwgVmlkZW9GcmFtZT4ge1xuICAgICh0cmFjazogTWVkaWFTdHJlYW1UcmFjaywgY2h1bms6IFQsIGNvbnRyb2xsZXI6IFRyYW5zZm9ybVN0cmVhbURlZmF1bHRDb250cm9sbGVyPFQ+KTogdm9pZCB8IFByb21pc2VMaWtlPHZvaWQ+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJlYW1UcmFja1RyYW5zZm9ybSB7XG4gIHN0YXRpYyB2YWxpZGF0ZU1lZGlhU3RyZWFtVHJhY2tUcmFuc2Zvcm08VCBleHRlbmRzIEF1ZGlvRGF0YSB8IFZpZGVvRnJhbWU+KG1vZGU6ICdhdWRpbycgfCAndmlkZW8nLCBpdGVtOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VD4pIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdDogYFVuZXhwZWN0ZWQgJHttb2RlfSBNZWRpYSBTdHJlYW0gVHJhY2sgdHJhbnNmb3JtIGZ1bmN0aW9uIHR5cGUuIEZvdW5kIFske3R5cGVvZiBpdGVtfV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChpdGVtLmxlbmd0aCAhPT0gMykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0OiBgVW5leHBlY3RlZCAke21vZGV9IE1lZGlhIFN0cmVhbSBUcmFjayB0cmFuc2Zvcm0gZnVuY3Rpb24gcGFyYW1ldGVyIGxlbmd0aC4gRXhwZWN0ZWQgMy4gRm91bmQgWyR7aXRlbS5sZW5ndGh9XWBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgdmFsaWRhdGlvblJlc3VsdDogJ29rJ1xuICAgIH07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEJyb3dzZXJEZXRlY3RvciBmcm9tICcuLi8uLi9kb20vQnJvd3NlckRldGVjdG9yJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCB7QXVkaW9Db2RlY30gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjJztcbmltcG9ydCB7VmlkZW9Db2RlY30gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjJztcbmltcG9ydCBhbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL2gyNjQvbmFsVW5pdC9Bbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSc7XG5pbXBvcnQgc3Vycm9nYXRlSDI2NDI4eDE2SUZyYW1lIGZyb20gJy4vc3Vycm9nYXRlRnJhbWVzL2gyNjQvc3Vycm9nYXRlMjh4MTZJRnJhbWUnO1xuaW1wb3J0IHN1cnJvZ2F0ZUgyNjQyOHgxNlBGcmFtZSBmcm9tICcuL3N1cnJvZ2F0ZUZyYW1lcy9oMjY0L3N1cnJvZ2F0ZTI4eDE2UEZyYW1lJztcblxuZXhwb3J0IGNvbnN0IFNraXBGcmFtZSA9IFN5bWJvbCgpO1xuXG5leHBvcnQgdHlwZSBTdXJyb2dhdGVGcmFtZVR5cGUgPSBBcnJheUJ1ZmZlciB8IHVuZGVmaW5lZCB8IHR5cGVvZiBTa2lwRnJhbWU7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNTYWZhcmkgPSBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYWZhcmknO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNBbmRyb2lkQ2hyb21lID0gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuaXNBbmRyb2lkO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc2luZ2xlWmVyb0J5dGUgPSBuZXcgVWludDhBcnJheShbMHgwMF0pO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXlBdWRpb1NpbGVudFBlckNvZGVjID0ge09QVVM6IG5ldyBVaW50OEFycmF5KFsweDY4LCAweDA3LCAweGQ5LCAweGFiLCAweGJjLCAweDc5LCAweDg3LCAweGFiLCAweDhlLCAweDRhLCAweDE0LCAweGYzLCAweGE3LCAweDFjLCAweGYyLCAweDlhLCAweDdhLCAweDQ1LCAweGE3LCAweDJkLCAweDQ0LCAweDI1LCAweDc0LCAweDRjLCAweGFkLCAweDE2LCAweGIzLCAweDBlLCAweDUxLCAweDU3LCAweGVhLCAweGU3LCAweGFkLCAweDJhLCAweDM4LCAweGNlLCAweDMzXSl9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjID0ge1xuICAgIEgyNjQ6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDY3LCAweGY0LCAweDAwLCAweDBhLCAweDkxLCAweDliLCAweDJiLCAweGYxLCAweGYxLCAweGY4LCAweDA4LCAweDgwLCAweDAwLCAweDAwLCAweDAzLCAweDAwLCAweDgwLCAweDAwLCAweDAwLCAweDE5LCAweDA3LCAweDg5LCAweDEyLCAweGNiLCAvLyBTZXF1ZW5jZSBwYXJhbWV0ZXIgc2V0XG4gICAgICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMHg2OCwgMHhlYiwgMHhlMywgMHhjNCwgMHg0OCwgMHg0NCwgLy8gUGljdHVyZSBwYXJhbXRlciBzZXRcbiAgICAgIC8qICovIDB4MDAsIDB4MDAsIDB4MDEsIDB4NjUsIDB4ODgsIDB4ODIsIDB4MDAsIDB4M2YsIDB4NzAsIDB4MjMsIDB4ODYsIDB4ZTYsIDB4ZDEsIDB4ODAsIDB4MDksIDB4YWYsIDB4MGEsIDB4NDEsIDB4NjYsIDB4NmIsIDB4NTQsIDB4NDYsIDB4ZmIsIDB4NzEsIDB4ZDksIDB4N2YsIDB4ZmYsIDB4ZmYsIDB4ZjldKSwgLy8gU2xpY2UgbGF5ZXI6IGlkciBkYXRhXG4gICAgVlA4OiBuZXcgVWludDhBcnJheShbMHhiMCwgMHgwMiwgMHgwMCwgMHg5ZCwgMHgwMSwgMHgyYSwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzOSwgMHg2YiwgMHgwMCwgMHgyNywgMHgxYywgMHgyNCwgMHgwYywgMHgyYywgMHgyYywgMHg0NCwgMHhjYywgMHgyNCwgMHg0MSwgMHhhOCwgMHgwMCwgMHgxMywgMHhhNywgMHhhMywgMHg3YSwgMHg1MCwgMHgwMCwgMHhmZSwgMHhlYiwgMHhkZSwgMHgyZiwgMHg4YSwgMHgxZSwgMHg2YiwgMHg3YiwgMHgwNywgMHg3MiwgMHg2MywgMHgwOSwgMHhhNCwgMHg4ZSwgMHhjMF0pLFxuICAgIFZQOTogbmV3IFVpbnQ4QXJyYXkoWzB4ODIsIDB4NDksIDB4ODMsIDB4NDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4NzYsIDB4MzgsIDB4MjQsIDB4MWMsIDB4MTksIDB4YTAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4NDAsIDB4MDAsIDB4MTEsIDB4YmYsIDB4ZGQsIDB4NzcsIDB4ZmYsIDB4NDAsIDB4N2YsIDB4YjEsIDB4MDBdKVxuICB9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjID0ge1xuICAgIEgyNjQ6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDQxLCAweDlhLCAweDY4LCAweDQ5LCAweGE4LCAweDQxLCAweDY4LCAweDk5LCAweDRjLCAweDBmLCAweGZmLCAweDkyLCAweDgxXSksIC8vIFNsaWNlIGxheWVyOiBub24gaWRyIGRhdGFcbiAgICBWUDg6IG5ldyBVaW50OEFycmF5KFsweDMxLCAweDAzLCAweDAwLCAweGU0LCAweGUwLCAweGE4LCAweDliLCAweDM3LCAweGFmLCAweDEwLCAweDRmLCAweDRmLCAweGIxLCAweDBhLCAweDJmLCAweGU0LCAweDkyLCAweGMwLCAweDFmLCAweGU3LCAweDRmLCAweDQ2LCAweGZmLCAweGVlLCAweDUxLCAweGMxLCAweDVkLCAweDAwLCAweGZlLCAweGViLCAweGRlLCAweDJmLCAweDhhLCAweDFlLCAweDZiLCAweDdiLCAweDA3LCAweDcyLCAweDYzLCAweDA5LCAweGE0LCAweDhlLCAweGMwXSksXG4gICAgVlA5OiBuZXcgVWludDhBcnJheShbMHg4NiwgMHgwMCwgMHg0MCwgMHg5MiwgMHg5YywgMHgyNCwgMHg0OCwgMHgwMCwgMHgwMCwgMHgwMywgMHg3MCwgMHgwMCwgMHgwMCwgMHg0YiwgMHg0MF0pXG4gIH07XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGUyOHgxNkgyNjRJRnJhbWUgPSBzdXJyb2dhdGVIMjY0Mjh4MTZJRnJhbWU7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGUyOHgxNkgyNjRQRnJhbWUgPSBzdXJyb2dhdGVIMjY0Mjh4MTZQRnJhbWU7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQgPSAxO1xuICBwcml2YXRlIHN0YXRpYyBfc3Vycm9nYXRlMjh4MTZQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXJSZXNldDtcblxuICBzdGF0aWMgZ2V0U3Vycm9nYXRlQXVkaW9TaWxlbnRQZXJDb2RlYyhjb2RlYzogQXVkaW9Db2RlYyk6IEFycmF5QnVmZmVyIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKGNvZGVjKSB7XG4gICAgICBjYXNlIEF1ZGlvQ29kZWMuT1BVUzpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYy5PUFVTLmJ1ZmZlcjtcblxuICAgICAgLy8gVE9ETyAoQVopOiBBZGQgYSBkdW1teSBBQUMgc2lsZW50IGZyYW1lIHdoZW4gQUFDIHN1cHBvcnQgaXMgYWRkZWRcbiAgICAgIGNhc2UgQXVkaW9Db2RlYy5BQUM6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGNvZGVjKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0SW52YWxpZFN1cnJvZ2F0ZUF1ZGlvRGF0YSgpOiBBcnJheUJ1ZmZlciB7XG4gICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3NpbmdsZVplcm9CeXRlLmJ1ZmZlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRTdXJyb2dhdGVWaWRlb0lGcmFtZVBlckNvZGVjKGNvZGVjOiBWaWRlb0NvZGVjKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMpIHtcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5IMjY0OlxuICAgICAgICBpZiAoU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5faXNTYWZhcmkpIHtcbiAgICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlMjh4MTZIMjY0SUZyYW1lLmJ1ZmZlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMuSDI2NC5idWZmZXI7XG5cbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5WUDg6XG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMuVlA4LmJ1ZmZlcjtcblxuICAgICAgY2FzZSBWaWRlb0NvZGVjLlZQOTpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYy5WUDkuYnVmZmVyO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShjb2RlYyk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldEludmFsaWRTdXJyb2dhdGVWaWRlb0lGcmFtZShjb2RlYzogVmlkZW9Db2RlYyk6IFN1cnJvZ2F0ZUZyYW1lVHlwZSB7XG4gICAgaWYgKChjb2RlYyA9PT0gVmlkZW9Db2RlYy5IMjY0KSAmJiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9pc0FuZHJvaWRDaHJvbWUpIHtcbiAgICAgIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXIgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQ7XG5cbiAgICAgIHJldHVybiBTa2lwRnJhbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3NpbmdsZVplcm9CeXRlLmJ1ZmZlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRTdXJyb2dhdGVWaWRlb1BGcmFtZVBlckNvZGVjKGNvZGVjOiBWaWRlb0NvZGVjKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMpIHtcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5IMjY0OiB7XG4gICAgICAgIGlmIChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9pc1NhZmFyaSkge1xuICAgICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGUyOHgxNkgyNjRQRnJhbWUuYnVmZmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYy5IMjY0LmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgY2FzZSBWaWRlb0NvZGVjLlZQODpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYy5WUDguYnVmZmVyO1xuXG4gICAgICBjYXNlIFZpZGVvQ29kZWMuVlA5OlxuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjLlZQOS5idWZmZXI7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGNvZGVjKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lKCk6IFN1cnJvZ2F0ZUZyYW1lVHlwZSB7XG4gICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3NpbmdsZVplcm9CeXRlLmJ1ZmZlcjtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgYW5uZXhCRm91ckJ5dGVTdGFydENvZGUgZnJvbSAnLi4vLi4vLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9oMjY0L25hbFVuaXQvQW5uZXhCRm91ckJ5dGVTdGFydENvZGUnO1xuXG5leHBvcnQgZGVmYXVsdCBuZXcgVWludDhBcnJheShbXG4gIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAxMDMsIDY2LCAxOTIsIDQyLCAyMTgsIDQsIDQsIDIzMiwgNjQsIDAsIDAsIDMsIDAsIDY0LCAwLCAwLCAxNSwgMzUsIDE5OCwgMTIsIDE2OCxcbiAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDEwNCwgMjA2LCA2MCwgMTI4LFxuICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgNiwgMywgMTY3LCAuLi5uZXcgVWludDhBcnJheSgxNTApLmZpbGwoMjU1KSwgMTI4LFxuICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMTAxLCAxMzYsIDEzMiwgNiwgMTkxLCAyNTUsIDI1NSwgMTUsIDY5LCAwLCAxLCA4NywgMTU5LCAuLi5uZXcgVWludDhBcnJheSgxNSkuZmlsbCgzOSksIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCAxMjhcbl0pOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IGFubmV4QkZvdXJCeXRlU3RhcnRDb2RlIGZyb20gJy4uLy4uLy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvaDI2NC9uYWxVbml0L0FubmV4QkZvdXJCeXRlU3RhcnRDb2RlJztcblxuZXhwb3J0IGRlZmF1bHQgbmV3IFVpbnQ4QXJyYXkoW1xuICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgNiwgMywgMjU1LCA2MSwgLi4ubmV3IFVpbnQ4QXJyYXkoMzE2KS5maWxsKDI1NSksIDEyOCxcbiAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDY1LCAxNTQsIDMyLCAyNiwgMjQwLCAxOCwgNDhcbl0pOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uLy4uLy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCB7VHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLCBUcmFuc2Zvcm1NZXNzYWdlLCBUcmFuc2Zvcm1NZXNzYWdlUGF5bG9hZCwgVHJhbnNmb3JtTWVzc2FnZVR5cGV9IGZyb20gJy4vVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVHJhbnNmb3JtUGlwZWxpbmVNZXNzYWdlUm91dGVyIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXNzYWdlUm91dGVzOiBNYXA8VHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLCA8VD4obWVzc2FnZTogVCkgPT4gdm9pZD4gPSBuZXcgTWFwKCk7XG5cbiAgY29uc3RydWN0b3Iod29ya2VyOiBXb3JrZXIpIHtcbiAgICB0aGlzLmluaXRpYWxpemUod29ya2VyKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlclJvdXRlPFQ+KG1lc3NhZ2VUeXBlOiBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUsIHJvdXRlTWVzc2FnZTogKG1lc3NhZ2U6IFQpID0+IHZvaWQpOiBEaXNwb3NhYmxlIHtcbiAgICB0aGlzLl9tZXNzYWdlUm91dGVzLnNldChtZXNzYWdlVHlwZSwgcm91dGVNZXNzYWdlIGFzIDxUPihtZXNzYWdlOiBUKSA9PiB2b2lkKTtcblxuICAgIHJldHVybiBuZXcgRGlzcG9zYWJsZSgoKSA9PiB0aGlzLl9tZXNzYWdlUm91dGVzLmRlbGV0ZShtZXNzYWdlVHlwZSkpO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fbWVzc2FnZVJvdXRlcy5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKHdvcmtlcjogV29ya2VyKTogdm9pZCB7XG4gICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoe2RhdGE6IG1lc3NhZ2V9OiBNZXNzYWdlRXZlbnQ8VHJhbnNmb3JtTWVzc2FnZT4pID0+IHtcbiAgICAgIGNvbnN0IHJvdXRlTWVzc2FnZURhdGEgPSA8VD4oe3R5cGUsIGRhdGF9OiBUcmFuc2Zvcm1NZXNzYWdlUGF5bG9hZDxUPikgPT4ge1xuICAgICAgICBjb25zdCByb3V0ZU1lc3NhZ2UgPSB0aGlzLl9tZXNzYWdlUm91dGVzLmdldCh0eXBlKTtcblxuICAgICAgICBpZiAoIXJvdXRlTWVzc2FnZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJvdXRlTWVzc2FnZShkYXRhKTtcbiAgICAgIH07XG5cbiAgICAgIHN3aXRjaCAobWVzc2FnZS50eXBlKSB7XG4gICAgICAgIGNhc2UgVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ2h1bms6XG4gICAgICAgIGNhc2UgVHJhbnNmb3JtTWVzc2FnZVR5cGUuTWV0YWRhdGE6XG4gICAgICAgICAgcm91dGVNZXNzYWdlRGF0YShtZXNzYWdlLmRhdGEpO1xuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgIH1cbiAgICB9LCB7b25jZTogZmFsc2V9KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgQ2h1bmsgZnJvbSAnLi4vQ2h1bmsnO1xuaW1wb3J0IHtSdHBUaW1lc3RhbXB9IGZyb20gJy4uLy4uL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb24nO1xuaW1wb3J0IHtEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblBheWxvYWR9IGZyb20gJy4vdHJhbnNmb3Jtcy9mcmFtZVRpbWluZ0luZm9ybWF0aW9uJztcblxuZXhwb3J0IGVudW0gVHJhbnNmb3JtTWVzc2FnZVR5cGUge1xuICBFcnJvciA9IC0xLFxuICBBZGRUcmFuc2Zvcm0gPSAwLFxuICBDb25maWd1cmVQaXBlbGluZSA9IDEsXG4gIE1ldGFkYXRhID0gMixcbiAgQ2h1bmsgPSAzLFxuICBQaXBlbGluZUNvbmZpZ3VyZWQgPSA0XG59XG5cbmV4cG9ydCBlbnVtIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSB7XG4gIEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSAwLFxuICBFbmNvZGVkVmlkZW9DaHVuayA9IDEsXG4gIEVuY29kZWRBdWRpb0NodW5rID0gMixcbiAgU3Vycm9nYXRlVmlkZW9DaHVuayA9IDMsXG4gIFN1cnJvZ2F0ZUF1ZGlvQ2h1bmsgPSA0XG59XG5cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybU1lc3NhZ2VQYXlsb2FkPFQ+ID0ge1xuICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGU7XG4gIGRhdGE6IFQ7XG59O1xuXG50eXBlIFdlYlJUQ0luc2VydGFibGVTdHJlYW1zID0ge1xuICBzb3VyY2U6IFJlYWRhYmxlU3RyZWFtO1xuICBzaW5rOiBXcml0YWJsZVN0cmVhbTtcbn07XG5cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybVN0cmVhbU1ldGFkYXRhID0gRGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25QYXlsb2FkO1xuZXhwb3J0IHR5cGUgTWV0YWRhdGFNZXNzYWdlUGF5bG9hZCA9IHtbdGltZXN0YW1wOiBSdHBUaW1lc3RhbXBdOiB7ZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb246IFRyYW5zZm9ybVN0cmVhbU1ldGFkYXRhfX07XG5cbnR5cGUgVHJhbnNmb3JtTmFtZSA9IHN0cmluZztcbmV4cG9ydCB0eXBlIFRyYW5zZm9ybU1lc3NhZ2UgPVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkFkZFRyYW5zZm9ybTtcbiAgICAgIGRhdGE6IFRyYW5zZm9ybU5hbWU7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNvbmZpZ3VyZVBpcGVsaW5lO1xuICAgICAgZGF0YTogV2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXM7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLk1ldGFkYXRhO1xuICAgICAgZGF0YTogVHJhbnNmb3JtTWVzc2FnZVBheWxvYWQ8TWV0YWRhdGFNZXNzYWdlUGF5bG9hZD47XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNodW5rO1xuICAgICAgZGF0YTogVHJhbnNmb3JtTWVzc2FnZVBheWxvYWQ8Q2h1bms+O1xuICAgIH07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmRlY2xhcmUgY29uc3QgX19CVUlMRF9WRVJTSU9OX186IHN0cmluZztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVyc2lvbk1hbmFnZXIge1xuICBwcml2YXRlIHN0YXRpYyBfZGVmYXVsdFZlcnNpb24gPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG5cbiAgc3RhdGljIGdldCBzZGtWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBfX0JVSUxEX1ZFUlNJT05fXztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFZlcnNpb247XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBUZWxlbWV0cnlTZXJ2aWNlIGZyb20gJy4vVGVsZW1ldHJ5U2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4uL2xvZ2dlci9JQXBwZW5kZXInO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlBcHBlbmRlciBpbXBsZW1lbnRzIElBcHBlbmRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbGVtZXRyeVNlcnZpY2U6IFRlbGVtZXRyeVNlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbmFuY3k6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5O1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkO1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGhyZXNob2xkO1xuICAgIHRoaXMuX3RlbGVtZXRyeVNlcnZpY2UgPSBuZXcgVGVsZW1ldHJ5U2VydmljZSh0ZWxlbWV0cnlDb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIGxvZyhsb2dMZXZlbDogTG9nZ2luZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNhdGVnb3J5OiBzdHJpbmcsIGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAobG9nTGV2ZWwgPCB0aGlzLl90aHJlc2hvbGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90ZWxlbWV0cnlTZXJ2aWNlLnB1c2gobG9nTGV2ZWwsIG1lc3NhZ2UsIGNhdGVnb3J5LCBkYXRlKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ge1xuICBwcml2YXRlIF91cmwgPSAnaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnkvbG9ncyc7XG4gIHByaXZhdGUgX3RlbmFuY3k6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfc2Vzc2lvbklkOiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX2Vudmlyb25tZW50OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3BhZ2VMb2FkVGltZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfdGhyZXNob2xkID0gTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbDtcblxuICBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VybDtcbiAgfVxuXG4gIHNldCB1cmwodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0ZWxlbWV0cnlVcmwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG5cbiAgICB0ZWxlbWV0cnlVcmwucGF0aG5hbWUgPSB0ZWxlbWV0cnlVcmwucGF0aG5hbWUgKyAnL2xvZ3MnO1xuXG4gICAgdGhpcy5fdXJsID0gdGVsZW1ldHJ5VXJsLnRvU3RyaW5nKCk7XG4gIH1cblxuICBnZXQgZW52aXJvbm1lbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnQ7XG4gIH1cblxuICBzZXQgZW52aXJvbm1lbnQoZW52aXJvbm1lbnQ6IHN0cmluZykge1xuICAgIHRoaXMuX2Vudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90ZW5hbmN5O1xuICB9XG5cbiAgc2V0IHRlbmFuY3kodGVuYW5jeTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGVuYW5jeSA9IHRlbmFuY3k7XG4gIH1cblxuICBnZXQgc2Vzc2lvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25JZDtcbiAgfVxuXG4gIHNldCBzZXNzaW9uSWQoc2Vzc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXNzaW9uSWQgPSBzZXNzaW9uSWQ7XG4gIH1cblxuICBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHNldCBwYWdlTG9hZFRpbWUocGFnZUxvYWRUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldCB0aHJlc2hvbGQodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBOdW1iZXJzIGZyb20gJy4uL2xhbmcvTnVtYmVycyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcblxuY29uc3QgcmVxdWVzdFNpemVMaW1pdCA9IDgxOTI7XG5cbmludGVyZmFjZSBJTG9nSXRlbSB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG4gIGxldmVsOiBzdHJpbmc7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgZnVsbFF1YWxpZmllZE5hbWU6IHN0cmluZztcbiAgcnVudGltZTogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcblxuICBwcml2YXRlIF9sb2dzOiBBcnJheTxJTG9nSXRlbT4gPSBbXTtcbiAgcHJpdmF0ZSBfaXNTZW5kaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2RvbWFpbiA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcbiAgICB0aGlzLmdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKS50aGVuKGxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgdGhpcy5fZG9tYWluID0gbG9jYXRpb25Ib3N0bmFtZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1c2gobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCB0aW1lc3RhbXA6IERhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBydW50aW1lID0gKHRpbWVzdGFtcC52YWx1ZU9mKCkgLSB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnBhZ2VMb2FkVGltZSkgLyAxMDAwO1xuICAgIGNvbnN0IGxvZ1JlY29yZCA9IHtcbiAgICAgIHRpbWVzdGFtcDogdGltZXN0YW1wLnRvSVNPU3RyaW5nKCksXG4gICAgICB0ZW5hbmN5OiB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3ksXG4gICAgICBsZXZlbDogTG9nZ2luZ0xldmVsW2xvZ0xldmVsXSxcbiAgICAgIGNhdGVnb3J5LFxuICAgICAgbWVzc2FnZSxcbiAgICAgIHNlc3Npb25JZDogdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQsXG4gICAgICB2ZXJzaW9uOiBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQsXG4gICAgICBmdWxsUXVhbGlmaWVkTmFtZTogdGhpcy5fZG9tYWluLFxuICAgICAgcnVudGltZVxuICAgIH07XG5cbiAgICBpZiAobG9nTGV2ZWwgPCBMb2dnaW5nTGV2ZWwuRXJyb3IpIHtcbiAgICAgIHRoaXMuX2xvZ3MucHVzaChsb2dSZWNvcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9sb2dzLnVuc2hpZnQobG9nUmVjb3JkKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4ocmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUoZ2xvYmFsU2NvcGUubG9jYXRpb25Ib3N0bmFtZSk7XG4gICAgICAgIGdsb2JhbFNjb3BlLnNldFRpbWVvdXQoKCkgPT4gZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpLCAwKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9ncyhsb2dNZXNzYWdlczogQXJyYXk8SUxvZ0l0ZW0+KTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHtyZWNvcmRzOiBsb2dNZXNzYWdlc30pKTtcblxuICAgIHJldHVybiBhd2FpdCBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9nc0lmQWJsZSgpOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGlmICh0aGlzLl9sb2dzLmxlbmd0aCA8PSAwIHx8IHRoaXMuX2lzU2VuZGluZyB8fCAhR2xvYmFsU2NvcGUudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbnVtYmVyT2ZMb2dzVG9TZW5kID0gMDtcbiAgICBsZXQgc2l6ZU9mTG9nc1RvU2VuZCA9IDA7XG5cbiAgICB0aGlzLl9pc1NlbmRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgZ2V0SXRlbVNpemUgPSAoaXRlbTogbnVtYmVyIHwgc3RyaW5nKSA9PiB0eXBlb2YgaXRlbSA9PT0gJ251bWJlcicgPyBOdW1iZXJzLmNvdW50TnVtYmVyTGVuZ3RoKGl0ZW0pIDogaXRlbS5sZW5ndGg7XG4gICAgY29uc3QgZ2V0TG9nU2l6ZSA9IChsb2c6IElMb2dJdGVtKTogbnVtYmVyID0+IE9iamVjdC52YWx1ZXMobG9nKVxuICAgICAgLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyAoaXRlbSA/IGdldEl0ZW1TaXplKGl0ZW0pIDogMCksIDApO1xuXG4gICAgd2hpbGUgKHRoaXMuX2xvZ3MubGVuZ3RoID4gbnVtYmVyT2ZMb2dzVG9TZW5kICYmIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSArIHNpemVPZkxvZ3NUb1NlbmQgPCByZXF1ZXN0U2l6ZUxpbWl0KSB7XG4gICAgICBzaXplT2ZMb2dzVG9TZW5kICs9IGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKTtcbiAgICAgIG51bWJlck9mTG9nc1RvU2VuZCsrO1xuICAgIH1cblxuICAgIGlmICghbnVtYmVyT2ZMb2dzVG9TZW5kKSB7XG4gICAgICB0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0ubWVzc2FnZSA9IHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXS5tZXNzYWdlLnN1YnN0cmluZygwLFxuICAgICAgICBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkgKyAocmVxdWVzdFNpemVMaW1pdCAtIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSkpO1xuICAgICAgbnVtYmVyT2ZMb2dzVG9TZW5kID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2dNZXNzYWdlcyA9IHRoaXMuX2xvZ3Muc2xpY2UoMCwgbnVtYmVyT2ZMb2dzVG9TZW5kKTtcblxuICAgIHRoaXMuX2xvZ3MgPSB0aGlzLl9sb2dzLnNsaWNlKG51bWJlck9mTG9nc1RvU2VuZCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZW5kTG9ncyhsb2dNZXNzYWdlcykudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIER1cmF0aW9ucyB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2R1cmF0aW9uOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoZHVyYXRpb24gPSAwKSB7XG4gICAgdGhpcy5fZHVyYXRpb24gPSBkdXJhdGlvbjtcbiAgfVxuXG4gIHRvSXNvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX2R1cmF0aW9uID09PSAwKSB7XG4gICAgICByZXR1cm4gJ1AwUyc7XG4gICAgfVxuXG4gICAgY29uc3QgaXNOZWdhdGl2ZSA9IHRoaXMuX2R1cmF0aW9uIDwgMDtcbiAgICBjb25zdCBkdXJhdGlvbiA9IGlzTmVnYXRpdmUgPyBNYXRoLmFicyh0aGlzLl9kdXJhdGlvbikgOiB0aGlzLl9kdXJhdGlvbjtcbiAgICBsZXQgb2Zmc2V0ID0gTWF0aC5mbG9vcihkdXJhdGlvbik7XG4gICAgY29uc3QgbWlsbGlzZWNvbmRzID0gb2Zmc2V0ICUgMTAwMDtcblxuICAgIG9mZnNldCA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gMTAwMCk7XG5cbiAgICBjb25zdCBzZWNvbmRzID0gb2Zmc2V0ICUgNjA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDYwKTtcblxuICAgIGNvbnN0IG1pbnV0ZXMgPSBvZmZzZXQgJSA2MDtcblxuICAgIG9mZnNldCA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gNjApO1xuXG4gICAgY29uc3QgaG91cnMgPSBvZmZzZXQgJSAyNDtcbiAgICBjb25zdCBwYXJ0cyA9IFsnUFQnXTtcblxuICAgIGlmIChpc05lZ2F0aXZlKSB7XG4gICAgICBwYXJ0cy51bnNoaWZ0KCctJyk7XG4gICAgfVxuXG4gICAgaWYgKGhvdXJzKSB7XG4gICAgICBwYXJ0cy5wdXNoKGhvdXJzICsgJ0gnKTtcbiAgICB9XG5cbiAgICBpZiAobWludXRlcykge1xuICAgICAgcGFydHMucHVzaChtaW51dGVzICsgJ00nKTtcbiAgICB9XG5cbiAgICBpZiAoc2Vjb25kcyB8fCBtaWxsaXNlY29uZHMpIHtcbiAgICAgIHBhcnRzLnB1c2goU3RyaW5nKHNlY29uZHMpKTtcblxuICAgICAgaWYgKG1pbGxpc2Vjb25kcykge1xuICAgICAgICBwYXJ0cy5wdXNoKCcuJyArIHRoaXMucGFkU3RhcnQobWlsbGlzZWNvbmRzLnRvU3RyaW5nKCksIDMsICcwJykpO1xuICAgICAgfVxuXG4gICAgICBwYXJ0cy5wdXNoKCdTJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oJycpO1xuICB9XG5cbiAgcGFkU3RhcnQoaXRlbTogc3RyaW5nLCB0YXJnZXRMZW5ndGg6IG51bWJlciwgcGFkU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRhcmdldExlbmd0aCA9IHRhcmdldExlbmd0aCA+PiAwO1xuICAgIHBhZFN0cmluZyA9IFN0cmluZygodHlwZW9mIHBhZFN0cmluZyAhPT0gJ3VuZGVmaW5lZCcgPyBwYWRTdHJpbmcgOiAnICcpKTtcblxuICAgIGlmIChpdGVtLmxlbmd0aCA+IHRhcmdldExlbmd0aCkge1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgdGFyZ2V0TGVuZ3RoID0gdGFyZ2V0TGVuZ3RoIC0gaXRlbS5sZW5ndGg7XG5cbiAgICBpZiAodGFyZ2V0TGVuZ3RoID4gcGFkU3RyaW5nLmxlbmd0aCkge1xuICAgICAgcGFkU3RyaW5nICs9IHBhZFN0cmluZy5yZXBlYXQodGFyZ2V0TGVuZ3RoIC8gcGFkU3RyaW5nLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhZFN0cmluZy5zbGljZSgwLCB0YXJnZXRMZW5ndGgpICsgaXRlbTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5jb25zdCBkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDIwMDA7XG5jb25zdCBkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDE7XG5jb25zdCBkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDMwMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXhwb25lbnRpYWxCYWNrb2ZmIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBiYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCxcbiAgICBtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCxcbiAgICBtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZFxuICApIHtcbiAgICB0aGlzLl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgICB0aGlzLl9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgICB0aGlzLl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgfVxuXG4gIGdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQoZmFpbHVyZUNvdW50OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IGJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcyA9IHRoaXMuX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgLyAxMDAwO1xuICAgIGNvbnN0IHJhbmRvbWl6YXRpb24gPSAwLjUgKyAoMC41ICogTWF0aC5yYW5kb20oKSk7IC8vIFswLjUsIDEpXG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmID0gTWF0aC5wb3coYmFja29mZkludGVydmFsSW5TZWNvbmRzLCBmYWlsdXJlQ291bnQgLSAyKTsgLy8gIFsxLzQgMS8yIDEgMiA0IDggLi4uLl1cbiAgICBjb25zdCBleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiA9IE1hdGguZmxvb3IoZXhwb25lbnRpYWxCYWNrb2ZmKSAqIHJhbmRvbWl6YXRpb247XG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kID0gTWF0aC5jZWlsKE1hdGgubWF4KGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uICogMTAwMCwgdGhpcy5fbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCkpO1xuXG4gICAgcmV0dXJuIE1hdGgubWluKGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCwgdGhpcy5fbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElDb21wYXJhYmxlIGZyb20gJy4uL2xhbmcvSUNvbXBhcmFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaW1lbnNpb24gaW1wbGVtZW50cyBJQ29tcGFyYWJsZTxEaW1lbnNpb24+IHtcbiAgcmVhZG9ubHkgd2lkdGg6IG51bWJlcjtcbiAgcmVhZG9ubHkgaGVpZ2h0OiBudW1iZXI7XG5cbiAgc3RhdGljIGdldCBlbXB0eSgpOiBEaW1lbnNpb24ge1xuICAgIHJldHVybiBuZXcgRGltZW5zaW9uKDAsIDApO1xuICB9XG5cbiAgY29uc3RydWN0b3Iod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG4gIH1cblxuICBlcXVhbHMob3RoZXI6IERpbWVuc2lvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvdGhlciAmJiB0aGlzLndpZHRoID09PSBvdGhlci53aWR0aCAmJiB0aGlzLmhlaWdodCA9PT0gb3RoZXIuaGVpZ2h0O1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy53aWR0aH14JHt0aGlzLmhlaWdodH1gO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7U3RyZWFtU2V0dXBMaXN0ZW5lcn0gZnJvbSAnLi4vZG9tL1N0cmVhbVNldHVwTGlzdGVuZXInO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBOZXR3b3JrTW9uaXRvciBmcm9tICcuLi9kb20vTmV0d29ya01vbml0b3InO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5cbmludGVyZmFjZSBJTmV0d29ya1N0YXRpc3RpY3Mge1xuICBydHQ/OiBudW1iZXI7XG4gIGVmZmVjdGl2ZVR5cGU/OiBzdHJpbmc7XG4gIGRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXNzaW9uVGVsZW1ldHJ5IGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU2Vzc2lvblRlbGVtZXRyeScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gU0RLLmFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uZXR3b3JrTW9uaXRvcjogTmV0d29ya01vbml0b3IgPSBuZXcgTmV0d29ya01vbml0b3IoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIF9sYXN0TmV0d29ya1N0YXRpc3RpY3M6IElOZXR3b3JrU3RhdGlzdGljcyA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2VMb2FkVGltZTogbnVtYmVyLCBtZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2UpIHtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yKTtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IG1ldHJpY3NTZXJ2aWNlO1xuXG4gICAgaWYgKCF0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZXNzaW9uVGVsZW1ldHJ5IEZhaWxlZDogTm8gYXBwbGljYXRpb24gbW9uaXRvciBpbml0aWFsaXplZC4nKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX25ldHdvcmtNb25pdG9yLmlzU3VwcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yLmlzRm9yZWdyb3VuZC5zdWJzY3JpYmUoaXNGb3JlZ3JvdW5kID0+IHtcbiAgICAgIHRoaXMucmVjb3JkRm9yZWdyb3VuZENoYW5nZShpc0ZvcmVncm91bmQpO1xuICAgIH0pKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IucnR0LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrUlRUVXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLmVmZmVjdGl2ZVR5cGUuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLmRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHlVcGRhdGUodmFsdWUpO1xuICAgIH0pKTtcbiAgfVxuXG4gIGxpc3Rlbk9uU3RyZWFtU2V0dXAoKTogU3RyZWFtU2V0dXBMaXN0ZW5lciB7XG4gICAgcmV0dXJuIG5ldyBTdHJlYW1TZXR1cExpc3RlbmVyKHRoaXMuX3BhZ2VMb2FkVGltZSk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkRm9yZWdyb3VuZENoYW5nZShpc0ZvcmVncm91bmQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHRpbWVTaW5jZUxhc3RDaGFuZ2UgPSB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcj8uZ2V0VGltZVNpbmNlTGFzdENoYW5nZSgpO1xuXG4gICAgaWYgKCF0aW1lU2luY2VMYXN0Q2hhbmdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBpc0ZvcmVncm91bmQgPyBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkZvcmVncm91bmQgOiBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkJhY2tncm91bmQsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGltZVNpbmNlTGFzdENoYW5nZX1cbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ0FwcGxpY2F0aW9uIGhhcyBnb25lIGludG8gdGhlIFslc10gYWZ0ZXIgWyVzXSBtcycsXG4gICAgICBpc0ZvcmVncm91bmQgPyAnZm9yZWdyb3VuZCcgOiAnYmFja2dyb3VuZCcsXG4gICAgICBuZXcgRHVyYXRpb25zKHRpbWVTaW5jZUxhc3RDaGFuZ2UpLnRvSXNvU3RyaW5nKCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkTmV0d29ya1JUVFVwZGF0ZShuZXdSVFQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgb2xkUnR0ID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLnJ0dDtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5ydHQgPSBuZXdSVFQ7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogbmV3UlRUfSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZFJ0dCA/IHt1aW50NjQ6IG9sZFJ0dH0gOiB1bmRlZmluZWQsXG4gICAgICByZXNvdXJjZTogJ25hdmlnYXRvcidcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBSVFQgY2hhbmdlZCB0byBbJXNdIGZyb20gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIG5ld1JUVCxcbiAgICAgIG9sZFJ0dFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlKG5ld05ldHdvcmtUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG9sZE5ldHdvcmtUeXBlID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmVmZmVjdGl2ZVR5cGU7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZWZmZWN0aXZlVHlwZSA9IG5ld05ldHdvcmtUeXBlO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5OZXR3b3JrVHlwZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7c3RyaW5nOiBuZXdOZXR3b3JrVHlwZX0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGROZXR3b3JrVHlwZSA/IHtzdHJpbmc6IG9sZE5ldHdvcmtUeXBlfSA6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBOZXR3b3JrIGVmZmVjdGl2ZSB0eXBlIGhhcyBjaGFuZ2VkIHRvIFslc10gZnJvbSBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgbmV3TmV0d29ya1R5cGUsXG4gICAgICBvbGROZXR3b3JrVHlwZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZShuZXdDYXBhY2l0eTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBvbGRDYXBhY2l0eSA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSA9IG5ld0NhcGFjaXR5O1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Eb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7ZmxvYXQ6IG5ld0NhcGFjaXR5fSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZENhcGFjaXR5ID8ge2Zsb2F0OiBvbGRDYXBhY2l0eX0gOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBkb3dubGluayB0aHJvdWdocHV0IGNhcGFjaXR5IGNoYW5nZWQgdG8gWyVzXSBmcm9tIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBuZXdDYXBhY2l0eSxcbiAgICAgIG9sZENhcGFjaXR5XG4gICAgKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5cbnR5cGUgQ29udGludWF0aW9uRXZlbnQgPSBIVE1MVmlkZW9FbGVtZW50RXZlbnRNYXBbJ3BsYXknIHwgJ3BsYXlpbmcnIHwgJ3Byb2dyZXNzJyB8ICd0aW1ldXBkYXRlJ107XG5jb25zdCBub29wID0gKCk6IHZvaWQgPT4gdW5kZWZpbmVkO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWaWRlb1RlbGVtZXRyeSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxTdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1N0cmVhbVRlbGVtZXRyeScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RyZWFtSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIF9saXN0ZW5Ub0ZpcnN0VGltZTogKCkgPT4gdm9pZCA9IG5vb3A7XG4gIHByaXZhdGUgX2xpc3RlbkZvclN0YWxsOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfbGlzdGVuRm9yQ29udGludWF0aW9uOiAoZXZlbnQ6IENvbnRpbnVhdGlvbkV2ZW50KSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfdGltZVRvRmlyc3RGcmFtZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfY2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfc3RhcnRSZWNvcmRpbmdGaXJzdEZyYW1lOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF92aWRlb1N0YWxsZWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9sYXN0UHJvZ3Jlc3M6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX3ZpZGVvUmVzb2x1dGlvbjogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyOiBEaXNwb3NhYmxlID0gbmV3IERpc3Bvc2FibGUoKCkgPT4gbnVsbCk7XG4gIHByaXZhdGUgX2NsZWFyUmVidWZmZXJpbmdMaXN0ZW5lcjogRGlzcG9zYWJsZSA9IG5ldyBEaXNwb3NhYmxlKCgpID0+IG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKHN0cmVhbUlkOiBzdHJpbmcsIHBhZ2VMb2FkVGltZTogbnVtYmVyLCBjaGFubmVsU3RhcnRUaW1lOiBudW1iZXIsIG1ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZSkge1xuICAgIHRoaXMuX3N0cmVhbUlkID0gc3RyZWFtSWQ7XG4gICAgdGhpcy5fcGFnZUxvYWRUaW1lID0gcGFnZUxvYWRUaW1lO1xuICAgIHRoaXMuX2NoYW5uZWxTdGFydFRpbWUgPSBjaGFubmVsU3RhcnRUaW1lO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBtZXRyaWNzU2VydmljZTtcbiAgfVxuXG4gIHNldHVwTGlzdGVuZXJGb3JUaW1lVG9GaXJzdFRpbWUodmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGFydFJlY29yZGluZ0ZpcnN0RnJhbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUgPSAoKTogdm9pZCA9PiB0aGlzLmNhbGxUaW1lVG9GaXJzdEZyYW1lKCk7XG5cbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdsb2FkZWRkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuXG4gICAgdGhpcy5fY2xlYXJUaW1lVG9GaXJzdEZyYW1lTGlzdGVuZXIgPSBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkZWRkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSk7XG4gICAgfSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyKTtcbiAgfVxuXG4gIHNldHVwTGlzdGVuZXJGb3JSZWJ1ZmZlcmluZyh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3RlbkZvclN0YWxsID0gKCk6IHZvaWQgPT4gdGhpcy5vblN0YWxsKCk7XG5cbiAgICB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24gPSAoZXZlbnQ6IENvbnRpbnVhdGlvbkV2ZW50KTogdm9pZCA9PiB0aGlzLm9uQ29udGludWF0aW9uKGV2ZW50LCB2aWRlbyk7XG5cbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdzdGFsbGVkJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3N1c3BlbmQnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheScsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3RpbWV1cGRhdGUnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuXG4gICAgdGhpcy5fY2xlYXJSZWJ1ZmZlcmluZ0xpc3RlbmVyID0gbmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3RhbGxlZCcsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3VzcGVuZCcsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXknLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCd0aW1ldXBkYXRlJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9jbGVhclJlYnVmZmVyaW5nTGlzdGVuZXIpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBkdXJhdGlvblNpbmNlUGFnZUxvYWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgcmV0dXJuIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxsVGltZVRvRmlyc3RGcmFtZSgpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5wdXNoVGltZVRvRmlyc3RGcmFtZShub3cpO1xuICAgIHRoaXMucHVzaENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUobm93KTtcblxuICAgIHRoaXMuX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcHVzaFRpbWVUb0ZpcnN0RnJhbWUobm93OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl90aW1lVG9GaXJzdEZyYW1lID0gbm93IC0gdGhpcy5fc3RhcnRSZWNvcmRpbmdGaXJzdEZyYW1lO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5UaW1lVG9GaXJzdEZyYW1lLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IHRoaXMuX3RpbWVUb0ZpcnN0RnJhbWV9LFxuICAgICAgc3RyZWFtSWQ6IHRoaXMuX3N0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gRmlyc3QgZnJhbWUgWyVzXScsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aGlzLl90aW1lVG9GaXJzdEZyYW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcHVzaENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUobm93OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lID0gbm93IC0gdGhpcy5fY2hhbm5lbFN0YXJ0VGltZTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiB0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lfSxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBbJXNdIENoYW5uZWwgY3JlYXRpb24gdG8gZmlyc3QgZnJhbWUgWyVzXScsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb25TdGFsbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdmlkZW9TdGFsbGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5TdGFsbGVkLFxuICAgICAgcnVudGltZTogKERhdGUubm93KCkgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fdmlkZW9TdGFsbGVkID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBbYnVmZmVyaW5nXSBTdHJlYW0gaGFzIHN0YWxsZWQnLFxuICAgICAgdGhpcy5kdXJhdGlvblNpbmNlUGFnZUxvYWQsXG4gICAgICB0aGlzLl9zdHJlYW1JZFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uQ29udGludWF0aW9uKGV2ZW50OiBDb250aW51YXRpb25FdmVudCwgdmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoIXZpZGVvLmJ1ZmZlcmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyTGVuZ3RoID0gdmlkZW8uYnVmZmVyZWQubGVuZ3RoO1xuICAgIGNvbnN0IGhhc05vdFByb2dyZXNzZWRTaW5jZUxhc3RQcm9ncmVzc0V2ZW50ID0gZXZlbnQudHlwZSA9PT0gJ3BsYXlpbmcnXG4gICAgfHwgYnVmZmVyTGVuZ3RoID4gMCA/IChldmVudC50eXBlID09PSAncHJvZ3Jlc3MnXG4gICAgICB8fCBldmVudC50eXBlID09PSAndGltZXVwZGF0ZScpXG4gICAgICAmJiB2aWRlby5idWZmZXJlZC5lbmQoYnVmZmVyTGVuZ3RoIC0gMSkgPT09IHRoaXMuX2xhc3RQcm9ncmVzcyA6IHRydWU7XG5cbiAgICBpZiAoIXRoaXMuX3ZpZGVvU3RhbGxlZCB8fCBoYXNOb3RQcm9ncmVzc2VkU2luY2VMYXN0UHJvZ3Jlc3NFdmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudC50eXBlID09PSAncHJvZ3Jlc3MnKSB7XG4gICAgICB0aGlzLl9sYXN0UHJvZ3Jlc3MgPSB2aWRlby5idWZmZXJlZC5lbmQoYnVmZmVyTGVuZ3RoIC0gMSk7XG4gICAgfVxuXG4gICAgY29uc3QgdGltZVNpbmNlU3RvcCA9IERhdGUubm93KCkgLSB0aGlzLl92aWRlb1N0YWxsZWQ7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLkJ1ZmZlcmluZyxcbiAgICAgIHJ1bnRpbWU6IChEYXRlLm5vdygpIC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGltZVNpbmNlU3RvcH0sXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBbYnVmZmVyaW5nXSBTdHJlYW0gaGFzIHJlY292ZXJlZCBmcm9tIHN0YWxsIGFmdGVyIFslc10nLFxuICAgICAgdGhpcy5kdXJhdGlvblNpbmNlUGFnZUxvYWQsXG4gICAgICB0aGlzLl9zdHJlYW1JZCxcbiAgICAgIG5ldyBEdXJhdGlvbnModGltZVNpbmNlU3RvcCkudG9Jc29TdHJpbmcoKVxuICAgICk7XG4gICAgdGhpcy5fdmlkZW9TdGFsbGVkID0gbnVsbDtcbiAgfVxuXG4gIG9uVmlkZW9SZXNvbHV0aW9uQ2hhbmdlcyhuZXdSZXNvbHV0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJlc29sdXRpb25DaGFuZ2VkLFxuICAgICAgcnVudGltZTogKERhdGUubm93KCkgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7c3RyaW5nOiBuZXdSZXNvbHV0aW9ufSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IHRoaXMuX3ZpZGVvUmVzb2x1dGlvbiA/IHtzdHJpbmc6IHRoaXMuX3ZpZGVvUmVzb2x1dGlvbn0gOiB1bmRlZmluZWQsXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX3ZpZGVvUmVzb2x1dGlvbiA9IG5ld1Jlc29sdXRpb247XG4gIH1cbn0iLCJcbmltcG9ydCB3b3JrZXIgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3dvcmtlci1sb2FkZXIvZGlzdC9ydW50aW1lL2lubGluZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBXb3JrZXJfZm4oKSB7XG4gIHJldHVybiB3b3JrZXIoXCIvKioqKioqLyAoKCkgPT4geyAvLyB3ZWJwYWNrQm9vdHN0cmFwXFxuLyoqKioqKi8gXFx0dmFyIF9fd2VicGFja19tb2R1bGVzX18gPSAoe1xcblxcbi8qKiovIFxcXCIuL3NyYy9sYW5nL2Fzc2VydFVucmVhY2hhYmxlLnRzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9zcmMvbGFuZy9hc3NlcnRVbnJlYWNoYWJsZS50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgoX191bnVzZWRfd2VicGFja19tb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHtcXG5cXG5cXFwidXNlIHN0cmljdFxcXCI7XFxuLyogdW51c2VkIGhhcm1vbnkgZXhwb3J0IGFzc2VydFVucmVhY2hhYmxlICovXFxuLyoqXFxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cXG4gKi9cXG5cXG5mdW5jdGlvbiBhc3NlcnRVbnJlYWNoYWJsZSh4KSB7XFxuICB0aHJvdyBuZXcgRXJyb3IoXFxcIlVuZXhwZWN0ZWQgdmFsdWUgW1xcXCIuY29uY2F0KHgsIFxcXCJdLiBUaGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkXFxcIikpO1xcbn1cXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXFxcImRlZmF1bHRcXFwiXSA9IChhc3NlcnRVbnJlYWNoYWJsZSk7XFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vc3JjL3Byb21pc2UvUHJvbWlzZS50c1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9zcmMvcHJvbWlzZS9Qcm9taXNlLnRzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7XFxuXFxuXFxcInVzZSBzdHJpY3RcXFwiO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX3R5cGVvZl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mLmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfdHlwZW9mX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc190eXBlb2ZfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9Qcm9taXNlSGFuZGxlcl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9Qcm9taXNlSGFuZGxlciAqLyBcXFwiLi9zcmMvcHJvbWlzZS9Qcm9taXNlSGFuZGxlci50c1xcXCIpO1xcblxcblxcblxcblxcbi8qKlxcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXFxuICovXFxuLy8gTm90ZTogVGhpcyBQcm9taXNlIHBvbHlmaWxsIGlzIGluY2x1ZGVkIGZvciBicm93c2VyIGJ1aWxkcyBvbmx5IHRvIGFkZHJlc3MgY29tcGF0aWJpbGl0eSBpc3N1ZXNcXG4vLyB3aXRoIG9sZGVyIGJyb3dzZXJzIHdob3NlIG5hdGl2ZSBQcm9taXNlPFQ+aW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCAuZmluYWxseS5cXG5cXG5cXG52YXIgUHJvbWlzZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XFxuICBmdW5jdGlvbiBQcm9taXNlKGNhbGxiYWNrKSB7XFxuICAgIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX19kZWZhdWx0KCkodGhpcywgUHJvbWlzZSk7XFxuICAgIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX19kZWZhdWx0KCkodGhpcywgXFxcIl9zdGF0ZVxcXCIsIHZvaWQgMCk7XFxuICAgIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX19kZWZhdWx0KCkodGhpcywgXFxcIl9oYW5kbGVkXFxcIiwgdm9pZCAwKTtcXG4gICAgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQoKSh0aGlzLCBcXFwiX3ZhbHVlXFxcIiwgdm9pZCAwKTtcXG4gICAgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQoKSh0aGlzLCBcXFwiX2RlZmVycmVkc1xcXCIsIHZvaWQgMCk7XFxuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBQcm9taXNlKSkge1xcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb21pc2VzIG11c3QgYmUgY29uc3RydWN0ZWQgdmlhIG5ldycpO1xcbiAgICB9XFxuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdub3QgYSBmdW5jdGlvbicpO1xcbiAgICB9XFxuICAgIHRoaXMuX3N0YXRlID0gMDtcXG4gICAgdGhpcy5faGFuZGxlZCA9IGZhbHNlO1xcbiAgICB0aGlzLl92YWx1ZSA9IG51bGw7XFxuICAgIHRoaXMuX2RlZmVycmVkcyA9IFtdO1xcbiAgICB0aGlzLmRvUmVzb2x2ZShjYWxsYmFjayk7XFxuICB9XFxuICByZXR1cm4gX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQoKShQcm9taXNlLCBbe1xcbiAgICBrZXk6IFxcXCJkb1Jlc29sdmVcXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZG9SZXNvbHZlKGNhbGxiYWNrKSB7XFxuICAgICAgdmFyIF90aGlzID0gdGhpcztcXG4gICAgICB2YXIgZG9uZSA9IGZhbHNlO1xcbiAgICAgIHRyeSB7XFxuICAgICAgICBjYWxsYmFjayhmdW5jdGlvbiAodmFsdWUpIHtcXG4gICAgICAgICAgaWYgKGRvbmUpIHtcXG4gICAgICAgICAgICByZXR1cm47XFxuICAgICAgICAgIH1cXG4gICAgICAgICAgZG9uZSA9IHRydWU7XFxuICAgICAgICAgIF90aGlzLnByb21pc2VSZXNvbHZlKHZhbHVlKTtcXG4gICAgICAgIH0sIGZ1bmN0aW9uIChyZWFzb24pIHtcXG4gICAgICAgICAgaWYgKGRvbmUpIHtcXG4gICAgICAgICAgICByZXR1cm47XFxuICAgICAgICAgIH1cXG4gICAgICAgICAgZG9uZSA9IHRydWU7XFxuICAgICAgICAgIF90aGlzLnByb21pc2VSZWplY3QocmVhc29uKTtcXG4gICAgICAgIH0pO1xcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XFxuICAgICAgICBpZiAoZG9uZSkge1xcbiAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICBkb25lID0gdHJ1ZTtcXG4gICAgICAgIHRoaXMucHJvbWlzZVJlamVjdChlcnJvcik7XFxuICAgICAgfVxcbiAgICB9XFxuICB9LCB7XFxuICAgIGtleTogXFxcInByb21pc2VSZXNvbHZlXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHByb21pc2VSZXNvbHZlKG5ld1ZhbHVlKSB7XFxuICAgICAgdmFyIHByb21pc2UgPSB0aGlzO1xcbiAgICAgIHRyeSB7XFxuICAgICAgICAvLyBQcm9taXNlPFQ+UmVzb2x1dGlvbiBQcm9jZWR1cmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9Qcm9taXNlcy1hcGx1cy9Qcm9taXNlcy1zcGVjI3RoZS1Qcm9taXNlLXJlc29sdXRpb24tcHJvY2VkdXJlXFxuICAgICAgICBpZiAobmV3VmFsdWUgPT09IHByb21pc2UpIHtcXG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQSBQcm9taXNlIGNhbm5vdCBiZSByZXNvbHZlZCB3aXRoIGl0IHNlbGYuJyk7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAobmV3VmFsdWUgJiYgKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfdHlwZW9mX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19fZGVmYXVsdCgpKG5ld1ZhbHVlKSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIG5ld1ZhbHVlID09PSAnZnVuY3Rpb24nKSkge1xcbiAgICAgICAgICAvLyBEaXNhYmxpbmcgYSBUUyBjb21waWxlciBjaGVjayBmb3IgbmV4dCBsaW5lIHRvIG5vdCBkbyBleHRyYSBpZiBzdGF0ZW1lbnRzXFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxcbiAgICAgICAgICB2YXIgX3RoZW4gPSBuZXdWYWx1ZS50aGVuO1xcbiAgICAgICAgICBpZiAobmV3VmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XFxuICAgICAgICAgICAgcHJvbWlzZS5fc3RhdGUgPSAzO1xcbiAgICAgICAgICAgIHByb21pc2UuX3ZhbHVlID0gbmV3VmFsdWU7XFxuICAgICAgICAgICAgcHJvbWlzZS5maW5hbGUoKTtcXG4gICAgICAgICAgICByZXR1cm47XFxuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIF90aGVuID09PSAnZnVuY3Rpb24nKSB7XFxuICAgICAgICAgICAgcHJvbWlzZS5kb1Jlc29sdmUoZnVuY3Rpb24gKCkge1xcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1yZXN0LXBhcmFtc1xcbiAgICAgICAgICAgICAgX3RoZW4uYXBwbHkobmV3VmFsdWUsIGFyZ3VtZW50cyk7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBwcm9taXNlLl9zdGF0ZSA9IDE7XFxuICAgICAgICBwcm9taXNlLl92YWx1ZSA9IG5ld1ZhbHVlO1xcbiAgICAgICAgcHJvbWlzZS5maW5hbGUoKTtcXG4gICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICBwcm9taXNlLnByb21pc2VSZWplY3QoZSk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9LCB7XFxuICAgIGtleTogXFxcInByb21pc2VSZWplY3RcXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHJvbWlzZVJlamVjdChuZXdWYWx1ZSkge1xcbiAgICAgIHRoaXMuX3N0YXRlID0gMjtcXG4gICAgICB0aGlzLl92YWx1ZSA9IG5ld1ZhbHVlO1xcbiAgICAgIHRoaXMuZmluYWxlKCk7XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiZmluYWxlXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZpbmFsZSgpIHtcXG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcXG4gICAgICBpZiAodGhpcy5fc3RhdGUgPT09IDIgJiYgdGhpcy5fZGVmZXJyZWRzLmxlbmd0aCA9PT0gMCkge1xcbiAgICAgICAgUHJvbWlzZS5faW1tZWRpYXRlKGZ1bmN0aW9uICgpIHtcXG4gICAgICAgICAgaWYgKCFfdGhpczIuX2hhbmRsZWQpIHtcXG4gICAgICAgICAgICBQcm9taXNlLl91bmhhbmRsZWRSZWplY3Rpb24oX3RoaXMyLl92YWx1ZSk7XFxuICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgIH1cXG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5fZGVmZXJyZWRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XFxuICAgICAgICB0aGlzLmhhbmRsZSh0aGlzLl9kZWZlcnJlZHNbaV0pO1xcbiAgICAgIH1cXG4gICAgICB0aGlzLl9kZWZlcnJlZHMgPSBbXTtcXG4gICAgfVxcbiAgfSwge1xcbiAgICBrZXk6IFxcXCJoYW5kbGVcXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlKGRlZmVycmVkKSB7XFxuICAgICAgdmFyIHByb21pc2UgPSB0aGlzO1xcbiAgICAgIHdoaWxlIChwcm9taXNlLl9zdGF0ZSA9PT0gMykge1xcbiAgICAgICAgcHJvbWlzZSA9IHByb21pc2UuX3ZhbHVlO1xcbiAgICAgIH1cXG4gICAgICBpZiAocHJvbWlzZS5fc3RhdGUgPT09IDApIHtcXG4gICAgICAgIHByb21pc2UuX2RlZmVycmVkcy5wdXNoKGRlZmVycmVkKTtcXG4gICAgICAgIHJldHVybjtcXG4gICAgICB9XFxuICAgICAgcHJvbWlzZS5faGFuZGxlZCA9IHRydWU7XFxuICAgICAgUHJvbWlzZS5faW1tZWRpYXRlKGZ1bmN0aW9uICgpIHtcXG4gICAgICAgIHZhciBjYWxsYmFjayA9IHByb21pc2UuX3N0YXRlID09PSAxID8gZGVmZXJyZWQub25GdWxmaWxsZWQgOiBkZWZlcnJlZC5vblJlamVjdGVkO1xcbiAgICAgICAgaWYgKGNhbGxiYWNrID09PSBudWxsKSB7XFxuICAgICAgICAgIGlmIChwcm9taXNlLl9zdGF0ZSA9PT0gMSkge1xcbiAgICAgICAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlc29sdmUocHJvbWlzZS5fdmFsdWUpO1xcbiAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlamVjdChwcm9taXNlLl92YWx1ZSk7XFxuICAgICAgICAgIH1cXG4gICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIHJlc3VsdDtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKHByb21pc2UuX3ZhbHVlKTtcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgZGVmZXJyZWQucHJvbWlzZS5wcm9taXNlUmVqZWN0KGUpO1xcbiAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZXNvbHZlKHJlc3VsdCk7XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH1dLCBbe1xcbiAgICBrZXk6IFxcXCJhbGxcXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWxsKGFycikge1xcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XFxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyKSkge1xcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ1Byb21pc2UuYWxsIGFjY2VwdHMgYW4gYXJyYXknKSk7XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycik7XFxuICAgICAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcXG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoW10pO1xcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIHJlbWFpbmluZyA9IGFyZ3MubGVuZ3RoO1xcbiAgICAgICAgdmFyIF9tYW5hZ2VSZXNwb25zZSA9IGZ1bmN0aW9uIG1hbmFnZVJlc3BvbnNlKGksIHZhbHVlKSB7XFxuICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgaWYgKHZhbHVlICYmIChfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX3R5cGVvZl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQoKSh2YWx1ZSkgPT09ICdvYmplY3QnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykpIHtcXG4gICAgICAgICAgICAgIHZhciBfdGhlbjIgPSB2YWx1ZS50aGVuO1xcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBfdGhlbjIgPT09ICdmdW5jdGlvbicpIHtcXG4gICAgICAgICAgICAgICAgX3RoZW4yLmNhbGwodmFsdWUsIGZ1bmN0aW9uICh2YWx1ZSkge1xcbiAgICAgICAgICAgICAgICAgIHJldHVybiBfbWFuYWdlUmVzcG9uc2UoaSwgdmFsdWUpO1xcbiAgICAgICAgICAgICAgICB9LCByZWplY3QpO1xcbiAgICAgICAgICAgICAgICByZXR1cm47XFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGFyZ3NbaV0gPSB2YWx1ZTtcXG4gICAgICAgICAgICBpZiAoLS1yZW1haW5pbmcgPT09IDApIHtcXG4gICAgICAgICAgICAgIHJlc29sdmUoYXJncyk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XFxuICAgICAgICAgIH1cXG4gICAgICAgIH07XFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgX21hbmFnZVJlc3BvbnNlKGksIGFyZ3NbaV0pO1xcbiAgICAgICAgfVxcbiAgICAgIH0pO1xcbiAgICB9XFxuICB9LCB7XFxuICAgIGtleTogXFxcInJlc29sdmVcXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVzb2x2ZSh2YWx1ZSkge1xcbiAgICAgIGlmICh2YWx1ZSAmJiBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX3R5cGVvZl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQoKSh2YWx1ZSkgPT09ICdvYmplY3QnICYmIHZhbHVlLmNvbnN0cnVjdG9yID09PSBQcm9taXNlKSB7XFxuICAgICAgICByZXR1cm4gdmFsdWU7XFxuICAgICAgfVxcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xcbiAgICAgICAgcmV0dXJuIHJlc29sdmUodmFsdWUpO1xcbiAgICAgIH0pO1xcbiAgICB9XFxuICB9LCB7XFxuICAgIGtleTogXFxcInJlamVjdFxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWplY3QodmFsdWUpIHtcXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKF8sIHJlamVjdCkge1xcbiAgICAgICAgcmV0dXJuIHJlamVjdCh2YWx1ZSk7XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwicmFjZVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiByYWNlKGFycikge1xcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XFxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyKSkge1xcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ1Byb21pc2UucmFjZSBhY2NlcHRzIGFuIGFycmF5JykpO1xcbiAgICAgICAgfVxcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGFyci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xcbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUoYXJyW2ldKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XFxuICAgICAgICB9XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiX2ltbWVkaWF0ZVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfaW1tZWRpYXRlKGNhbGxiYWNrKSB7XFxuICAgICAgdmFyIGlnbm9yZWQgPSB3aW5kb3cuc2V0VGltZW91dChjYWxsYmFjaywgMCk7XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiX3VuaGFuZGxlZFJlamVjdGlvblxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfdW5oYW5kbGVkUmVqZWN0aW9uKGVycm9yKSB7XFxuICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiBjb25zb2xlKSB7XFxuICAgICAgICBjb25zb2xlLndhcm4oJ1Bvc3NpYmxlIFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjonLCBlcnJvcik7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxcbiAgICAgIH1cXG4gICAgfVxcbiAgfV0pO1xcbn0oKTsgLy8gRGlzYWJsaW5nIGEgVFMgY29tcGlsZXIgY2hlY2sgZm9yIHVuc3VwcG9ydGVkIHByb3RvdHlwZSBjaGFuZ2VcXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XFxuLy8gQHRzLWlnbm9yZVxcblByb21pc2UucHJvdG90eXBlWydjYXRjaCddID0gZnVuY3Rpb24gKG9uUmVqZWN0ZWQpIHtcXG4gIHJldHVybiB0aGlzLnRoZW4obnVsbCwgb25SZWplY3RlZCk7XFxufTtcXG4vLyBEaXNhYmxpbmcgYSBUUyBjb21waWxlciBjaGVjayBmb3IgdW5zdXBwb3J0ZWQgcHJvdG90eXBlIGNoYW5nZVxcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcXG4vLyBAdHMtaWdub3JlXFxuUHJvbWlzZS5wcm90b3R5cGVbJ3RoZW4nXSA9IGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xcbiAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAoKSB7XFxuICAgIHJldHVybiBudWxsO1xcbiAgfSk7XFxuICB0aGlzLmhhbmRsZShuZXcgX1Byb21pc2VIYW5kbGVyX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19bXFxcImRlZmF1bHRcXFwiXShvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgcHJvbWlzZSkpO1xcbiAgcmV0dXJuIHByb21pc2U7XFxufTtcXG4vLyBEaXNhYmxpbmcgYSBUUyBjb21waWxlciBjaGVjayBmb3IgdW5zdXBwb3J0ZWQgcHJvdG90eXBlIGNoYW5nZVxcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcXG4vLyBAdHMtaWdub3JlXFxuUHJvbWlzZS5wcm90b3R5cGVbJ2ZpbmFsbHknXSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xcbiAgcmV0dXJuIHRoaXMudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjYWxsYmFjaygpKS50aGVuKGZ1bmN0aW9uICgpIHtcXG4gICAgICByZXR1cm4gdmFsdWU7XFxuICAgIH0sIGZ1bmN0aW9uICgpIHtcXG4gICAgICByZXR1cm4gbnVsbDtcXG4gICAgfSk7XFxuICB9LCBmdW5jdGlvbiAocmVhc29uKSB7XFxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoY2FsbGJhY2soKSkudGhlbihmdW5jdGlvbiAoKSB7XFxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlYXNvbik7XFxuICAgIH0sIGZ1bmN0aW9uICgpIHtcXG4gICAgICByZXR1cm4gbnVsbDtcXG4gICAgfSk7XFxuICB9KTtcXG59O1xcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcXFwiZGVmYXVsdFxcXCJdID0gKFByb21pc2UpO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL3NyYy9wcm9taXNlL1Byb21pc2VIYW5kbGVyLnRzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9zcmMvcHJvbWlzZS9Qcm9taXNlSGFuZGxlci50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgoX191bnVzZWRfd2VicGFja19tb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHtcXG5cXG5cXFwidXNlIHN0cmljdFxcXCI7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHtcXG4vKiBoYXJtb255IGV4cG9ydCAqLyAgIFxcXCJkZWZhdWx0XFxcIjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gUHJvbWlzZUhhbmRsZXIpXFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyk7XFxuXFxuXFxuXFxuLyoqXFxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cXG4gKi9cXG52YXIgUHJvbWlzZUhhbmRsZXIgPSAvKiNfX1BVUkVfXyovX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQoKShmdW5jdGlvbiBQcm9taXNlSGFuZGxlcihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgcHJvbWlzZSkge1xcbiAgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fX2RlZmF1bHQoKSh0aGlzLCBQcm9taXNlSGFuZGxlcik7XFxuICBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19fZGVmYXVsdCgpKHRoaXMsIFxcXCJvbkZ1bGZpbGxlZFxcXCIsIHZvaWQgMCk7XFxuICBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19fZGVmYXVsdCgpKHRoaXMsIFxcXCJvblJlamVjdGVkXFxcIiwgdm9pZCAwKTtcXG4gIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX19kZWZhdWx0KCkodGhpcywgXFxcInByb21pc2VcXFwiLCB2b2lkIDApO1xcbiAgdGhpcy5vbkZ1bGZpbGxlZCA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogbnVsbDtcXG4gIHRoaXMub25SZWplY3RlZCA9IHR5cGVvZiBvblJlamVjdGVkID09PSAnZnVuY3Rpb24nID8gb25SZWplY3RlZCA6IG51bGw7XFxuICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xcbn0pO1xcblxcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50c1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7XFxuXFxuXFxcInVzZSBzdHJpY3RcXFwiO1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGU6ICgpID0+ICgvKiBiaW5kaW5nICovIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSksXFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBUcmFuc2Zvcm1NZXNzYWdlVHlwZTogKCkgPT4gKC8qIGJpbmRpbmcgKi8gVHJhbnNmb3JtTWVzc2FnZVR5cGUpXFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuLyoqXFxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cXG4gKi9cXG5cXG52YXIgVHJhbnNmb3JtTWVzc2FnZVR5cGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKFRyYW5zZm9ybU1lc3NhZ2VUeXBlKSB7XFxuICBUcmFuc2Zvcm1NZXNzYWdlVHlwZVtUcmFuc2Zvcm1NZXNzYWdlVHlwZVtcXFwiRXJyb3JcXFwiXSA9IC0xXSA9IFxcXCJFcnJvclxcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlVHlwZVtUcmFuc2Zvcm1NZXNzYWdlVHlwZVtcXFwiQWRkVHJhbnNmb3JtXFxcIl0gPSAwXSA9IFxcXCJBZGRUcmFuc2Zvcm1cXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZVR5cGVbVHJhbnNmb3JtTWVzc2FnZVR5cGVbXFxcIkNvbmZpZ3VyZVBpcGVsaW5lXFxcIl0gPSAxXSA9IFxcXCJDb25maWd1cmVQaXBlbGluZVxcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlVHlwZVtUcmFuc2Zvcm1NZXNzYWdlVHlwZVtcXFwiTWV0YWRhdGFcXFwiXSA9IDJdID0gXFxcIk1ldGFkYXRhXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VUeXBlW1RyYW5zZm9ybU1lc3NhZ2VUeXBlW1xcXCJDaHVua1xcXCJdID0gM10gPSBcXFwiQ2h1bmtcXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZVR5cGVbVHJhbnNmb3JtTWVzc2FnZVR5cGVbXFxcIlBpcGVsaW5lQ29uZmlndXJlZFxcXCJdID0gNF0gPSBcXFwiUGlwZWxpbmVDb25maWd1cmVkXFxcIjtcXG4gIHJldHVybiBUcmFuc2Zvcm1NZXNzYWdlVHlwZTtcXG59KHt9KTtcXG52YXIgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUpIHtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbXFxcIkZyYW1lVGltaW5nSW5mb3JtYXRpb25cXFwiXSA9IDBdID0gXFxcIkZyYW1lVGltaW5nSW5mb3JtYXRpb25cXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtcXFwiRW5jb2RlZFZpZGVvQ2h1bmtcXFwiXSA9IDFdID0gXFxcIkVuY29kZWRWaWRlb0NodW5rXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbXFxcIkVuY29kZWRBdWRpb0NodW5rXFxcIl0gPSAyXSA9IFxcXCJFbmNvZGVkQXVkaW9DaHVua1xcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1xcXCJTdXJyb2dhdGVWaWRlb0NodW5rXFxcIl0gPSAzXSA9IFxcXCJTdXJyb2dhdGVWaWRlb0NodW5rXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbXFxcIlN1cnJvZ2F0ZUF1ZGlvQ2h1bmtcXFwiXSA9IDRdID0gXFxcIlN1cnJvZ2F0ZUF1ZGlvQ2h1bmtcXFwiO1xcbiAgcmV0dXJuIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZTtcXG59KHt9KTtcXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL1dvcmtlclRyYW5zZm9ybXMudHNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL1dvcmtlclRyYW5zZm9ybXMudHMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykgPT4ge1xcblxcblxcXCJ1c2Ugc3RyaWN0XFxcIjtcXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgXFxcImRlZmF1bHRcXFwiOiAoKSA9PiAoLyogYmluZGluZyAqLyBXb3JrZXJUcmFuc2Zvcm1zKVxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIH0pO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18pO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18pO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UgKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlLnRzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9mcmFtZVRpbWluZ0luZm9ybWF0aW9uX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL2ZyYW1lVGltaW5nSW5mb3JtYXRpb24gKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvdHJhbnNmb3Jtcy9mcmFtZVRpbWluZ0luZm9ybWF0aW9uLnRzXFxcIik7XFxuXFxuXFxuLyoqXFxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cXG4gKi9cXG5cXG5cXG5cXG52YXIgV29ya2VyVHJhbnNmb3JtcyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XFxuICBmdW5jdGlvbiBXb3JrZXJUcmFuc2Zvcm1zKCkge1xcbiAgICBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19fZGVmYXVsdCgpKHRoaXMsIFdvcmtlclRyYW5zZm9ybXMpO1xcbiAgfVxcbiAgcmV0dXJuIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX19kZWZhdWx0KCkoV29ya2VyVHJhbnNmb3JtcywgbnVsbCwgW3tcXG4gICAga2V5OiBcXFwiY3JlYXRlRnJhbWVUaW1pbmdJbmZvcm1hdGlvblRyYW5zZm9ybVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVGcmFtZVRpbWluZ0luZm9ybWF0aW9uVHJhbnNmb3JtKCkge1xcbiAgICAgIHJldHVybiBuZXcgVHJhbnNmb3JtU3RyZWFtKHtcXG4gICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24gdHJhbnNmb3JtKGNodW5rLCBjb250cm9sbGVyKSB7XFxuICAgICAgICAgICgwLF9mcmFtZVRpbWluZ0luZm9ybWF0aW9uX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19bXFxcImRlZmF1bHRcXFwiXSkoY2h1bmspO1xcbiAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xcbiAgICAgICAgfVxcbiAgICAgIH0pO1xcbiAgICB9XFxuICB9LCB7XFxuICAgIGtleTogXFxcImNyZWF0ZUVuY29kZWRWaWRlb1N0cmVhbVRyYW5zZm9ybVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVFbmNvZGVkVmlkZW9TdHJlYW1UcmFuc2Zvcm0od29ya2VyKSB7XFxuICAgICAgdmFyIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAgPSBuZXcgTWFwKCk7XFxuICAgICAgdmFyIHN1cnJvZ2F0ZUZyYW1lTWVzc2FnZUhhbmRsZXIgPSBmdW5jdGlvbiBzdXJyb2dhdGVGcmFtZU1lc3NhZ2VIYW5kbGVyKGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAsIGNvbnRyb2xsZXIsIF9yZWYpIHtcXG4gICAgICAgIHZhciBtZXNzYWdlID0gX3JlZi5kYXRhO1xcbiAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSAhPT0gX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNodW5rIHx8IG1lc3NhZ2UuZGF0YS50eXBlICE9PSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLlN1cnJvZ2F0ZVZpZGVvQ2h1bmspIHtcXG4gICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5kYXRhO1xcbiAgICAgICAgdmFyIF9tZXNzYWdlRGF0YSRkYXRhID0gbWVzc2FnZURhdGEuZGF0YSxcXG4gICAgICAgICAgc3Vycm9nYXRlID0gX21lc3NhZ2VEYXRhJGRhdGEuc3Vycm9nYXRlLFxcbiAgICAgICAgICB0aW1lc3RhbXAgPSBfbWVzc2FnZURhdGEkZGF0YS50aW1lc3RhbXA7XFxuICAgICAgICB2YXIgY2h1bmtQZW5kaW5nRW5xdWV1ZSA9IGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAuZ2V0KHRpbWVzdGFtcCk7XFxuICAgICAgICBpZiAoIWNodW5rUGVuZGluZ0VucXVldWUpIHtcXG4gICAgICAgICAgY29uc29sZS53YXJuKCdbV29ya2VyVHJhbnNmb3Jtc10gU3Vycm9nYXRlIHZpZGVvIGNodW5rIG5vdCBmb3VuZCBmb3IgdGltZXN0YW1wJywgdGltZXN0YW1wKTtcXG4gICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgfVxcbiAgICAgICAgY2h1bmtQZW5kaW5nRW5xdWV1ZS5kYXRhID0gc3Vycm9nYXRlO1xcbiAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rUGVuZGluZ0VucXVldWUpO1xcbiAgICAgICAgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcC5kZWxldGUodGltZXN0YW1wKTtcXG4gICAgICB9O1xcbiAgICAgIHJldHVybiBuZXcgVHJhbnNmb3JtU3RyZWFtKHtcXG4gICAgICAgIHN0YXJ0OiBmdW5jdGlvbiBzdGFydChjb250cm9sbGVyKSB7XFxuICAgICAgICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgc3Vycm9nYXRlRnJhbWVNZXNzYWdlSGFuZGxlci5iaW5kKG51bGwsIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAsIGNvbnRyb2xsZXIpLCB7XFxuICAgICAgICAgICAgb25jZTogZmFsc2VcXG4gICAgICAgICAgfSk7XFxuICAgICAgICB9LFxcbiAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbiB0cmFuc2Zvcm0oY2h1bmspIHtcXG4gICAgICAgICAgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcC5zZXQoY2h1bmsudGltZXN0YW1wLCBjaHVuayk7XFxuICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2Uoe1xcbiAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5NZXRhZGF0YSxcXG4gICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICB0eXBlOiBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLkVuY29kZWRWaWRlb0NodW5rLFxcbiAgICAgICAgICAgICAgZGF0YToge1xcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IGNodW5rLnRpbWVzdGFtcCxcXG4gICAgICAgICAgICAgICAgZGF0YTogbmV3IFVpbnQ4QXJyYXkoY2h1bmsuZGF0YSksXFxuICAgICAgICAgICAgICAgIHR5cGU6IGNodW5rLnR5cGVcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0cmFuc2ZlcjogW2NodW5rLmRhdGFdXFxuICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgIH0pO1xcbiAgICB9XFxuICB9LCB7XFxuICAgIGtleTogXFxcImNyZWF0ZUVuY29kZWRBdWRpb1N0cmVhbVRyYW5zZm9ybVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVFbmNvZGVkQXVkaW9TdHJlYW1UcmFuc2Zvcm0od29ya2VyKSB7XFxuICAgICAgdmFyIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAgPSBuZXcgTWFwKCk7XFxuICAgICAgdmFyIHN1cnJvZ2F0ZUZyYW1lTWVzc2FnZUhhbmRsZXIgPSBmdW5jdGlvbiBzdXJyb2dhdGVGcmFtZU1lc3NhZ2VIYW5kbGVyKGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAsIGNvbnRyb2xsZXIsIF9yZWYyKSB7XFxuICAgICAgICB2YXIgbWVzc2FnZSA9IF9yZWYyLmRhdGE7XFxuICAgICAgICBpZiAobWVzc2FnZS50eXBlICE9PSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ2h1bmsgfHwgbWVzc2FnZS5kYXRhLnR5cGUgIT09IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuU3Vycm9nYXRlQXVkaW9DaHVuaykge1xcbiAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgbWVzc2FnZURhdGEgPSBtZXNzYWdlLmRhdGE7XFxuICAgICAgICB2YXIgX21lc3NhZ2VEYXRhJGRhdGEyID0gbWVzc2FnZURhdGEuZGF0YSxcXG4gICAgICAgICAgc3Vycm9nYXRlID0gX21lc3NhZ2VEYXRhJGRhdGEyLnN1cnJvZ2F0ZSxcXG4gICAgICAgICAgdGltZXN0YW1wID0gX21lc3NhZ2VEYXRhJGRhdGEyLnRpbWVzdGFtcDtcXG4gICAgICAgIHZhciBjaHVua1BlbmRpbmdFbnF1ZXVlID0gY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcC5nZXQodGltZXN0YW1wKTtcXG4gICAgICAgIGlmICghY2h1bmtQZW5kaW5nRW5xdWV1ZSkge1xcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1tXb3JrZXJUcmFuc2Zvcm1zXSBTdXJyb2dhdGUgYXVkaW8gY2h1bmsgbm90IGZvdW5kIGZvciB0aW1lc3RhbXAnLCB0aW1lc3RhbXApO1xcbiAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICBjaHVua1BlbmRpbmdFbnF1ZXVlLmRhdGEgPSBzdXJyb2dhdGU7XFxuICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmtQZW5kaW5nRW5xdWV1ZSk7XFxuICAgICAgICBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLmRlbGV0ZSh0aW1lc3RhbXApO1xcbiAgICAgIH07XFxuICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xcbiAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uIHN0YXJ0KGNvbnRyb2xsZXIpIHtcXG4gICAgICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBzdXJyb2dhdGVGcmFtZU1lc3NhZ2VIYW5kbGVyLmJpbmQobnVsbCwgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCwgY29udHJvbGxlciksIHtcXG4gICAgICAgICAgICBvbmNlOiBmYWxzZVxcbiAgICAgICAgICB9KTtcXG4gICAgICAgIH0sXFxuICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShjaHVuaykge1xcbiAgICAgICAgICBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLnNldChjaHVuay50aW1lc3RhbXAsIGNodW5rKTtcXG4gICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7XFxuICAgICAgICAgICAgdHlwZTogX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLk1ldGFkYXRhLFxcbiAgICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRW5jb2RlZEF1ZGlvQ2h1bmssXFxuICAgICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogY2h1bmsudGltZXN0YW1wLFxcbiAgICAgICAgICAgICAgICBkYXRhOiBuZXcgVWludDhBcnJheShjaHVuay5kYXRhKSxcXG4gICAgICAgICAgICAgICAgdHlwZTogY2h1bmsudHlwZVxcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRyYW5zZmVyOiBbY2h1bmsuZGF0YV1cXG4gICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiY3JlYXRlUGFzc1Rocm91Z2hUcmFuc2Zvcm1cXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlUGFzc1Rocm91Z2hUcmFuc2Zvcm0oKSB7XFxuICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xcbiAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbiB0cmFuc2Zvcm0oY2h1bmssIGNvbnRyb2xsZXIpIHtcXG4gICAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XFxuICAgICAgICB9XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH1dKTtcXG59KCk7XFxuXFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvdHJhbnNmb3Jtcy9mcmFtZVRpbWluZ0luZm9ybWF0aW9uLnRzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvdHJhbnNmb3Jtcy9mcmFtZVRpbWluZ0luZm9ybWF0aW9uLnRzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgoX191bnVzZWRfd2VicGFja19tb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHtcXG5cXG5cXFwidXNlIHN0cmljdFxcXCI7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZSAqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UudHNcXFwiKTtcXG5cXG5mdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihyLCBlKSB7IHZhciB0ID0gXFxcInVuZGVmaW5lZFxcXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcXFwiQEBpdGVyYXRvclxcXCJdOyBpZiAoIXQpIHsgaWYgKEFycmF5LmlzQXJyYXkocikgfHwgKHQgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkocikpIHx8IGUgJiYgciAmJiBcXFwibnVtYmVyXFxcIiA9PSB0eXBlb2Ygci5sZW5ndGgpIHsgdCAmJiAociA9IHQpOyB2YXIgX24gPSAwLCBGID0gZnVuY3Rpb24gRigpIHt9OyByZXR1cm4geyBzOiBGLCBuOiBmdW5jdGlvbiBuKCkgeyByZXR1cm4gX24gPj0gci5sZW5ndGggPyB7IGRvbmU6ICEwIH0gOiB7IGRvbmU6ICExLCB2YWx1ZTogcltfbisrXSB9OyB9LCBlOiBmdW5jdGlvbiBlKHIpIHsgdGhyb3cgcjsgfSwgZjogRiB9OyB9IHRocm93IG5ldyBUeXBlRXJyb3IoXFxcIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cXFwiKTsgfSB2YXIgbywgYSA9ICEwLCB1ID0gITE7IHJldHVybiB7IHM6IGZ1bmN0aW9uIHMoKSB7IHQgPSB0LmNhbGwocik7IH0sIG46IGZ1bmN0aW9uIG4oKSB7IHZhciByID0gdC5uZXh0KCk7IHJldHVybiBhID0gci5kb25lLCByOyB9LCBlOiBmdW5jdGlvbiBlKHIpIHsgdSA9ICEwLCBvID0gcjsgfSwgZjogZnVuY3Rpb24gZigpIHsgdHJ5IHsgYSB8fCBudWxsID09IHQucmV0dXJuIHx8IHQucmV0dXJuKCk7IH0gZmluYWxseSB7IGlmICh1KSB0aHJvdyBvOyB9IH0gfTsgfVxcbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBhKSB7IGlmIChyKSB7IGlmIChcXFwic3RyaW5nXFxcIiA9PSB0eXBlb2YgcikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KHIsIGEpOyB2YXIgdCA9IHt9LnRvU3RyaW5nLmNhbGwocikuc2xpY2UoOCwgLTEpOyByZXR1cm4gXFxcIk9iamVjdFxcXCIgPT09IHQgJiYgci5jb25zdHJ1Y3RvciAmJiAodCA9IHIuY29uc3RydWN0b3IubmFtZSksIFxcXCJNYXBcXFwiID09PSB0IHx8IFxcXCJTZXRcXFwiID09PSB0ID8gQXJyYXkuZnJvbShyKSA6IFxcXCJBcmd1bWVudHNcXFwiID09PSB0IHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpID8gX2FycmF5TGlrZVRvQXJyYXkociwgYSkgOiB2b2lkIDA7IH0gfVxcbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KHIsIGEpIHsgKG51bGwgPT0gYSB8fCBhID4gci5sZW5ndGgpICYmIChhID0gci5sZW5ndGgpOyBmb3IgKHZhciBlID0gMCwgbiA9IEFycmF5KGEpOyBlIDwgYTsgZSsrKSBuW2VdID0gcltlXTsgcmV0dXJuIG47IH1cXG4vKipcXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxcbiAqL1xcblxcblxcbnZhciBIMjY0X0NPTlNUQU5UUyA9IHtcXG4gIE5BTF9VTklUX1RZUEVfU0VJOiA2LFxcbiAgTkFMX1VOSVRfSEVBREVSX1NJWkU6IDEsXFxuICBTRUlfUEFZTE9BRF9UWVBFX1BJQ19USU1JTkc6IDEsXFxuICBFTVVMQVRJT05fUFJFVkVOVElPTl9CWVRFOiAweDAzLFxcbiAgU1RBUlRfQ09ERV9QUkVGSVhfM0I6IFsweDAwLCAweDAwLCAweDAxXSxcXG4gIFNUQVJUX0NPREVfUFJFRklYXzRCOiBbMHgwMCwgMHgwMCwgMHgwMCwgMHgwMV1cXG59O1xcbnZhciBCSVRTVFJFQU1fQ09OU1RBTlRTID0ge1xcbiAgTUlOX0JJVFNfRk9SX0NMT0NLX1RJTUVTVEFNUDogMTAsXFxuICBNSU5fQklUU19GT1JfRlVMTF9USU1FU1RBTVA6IDE3LFxcbiAgTUlOX0JJVFNfRk9SX1RJTUVfT0ZGU0VUOiAyNFxcbn07XFxuZnVuY3Rpb24gZmluZE5leHROYWxTdGFydChkYXRhLCBwb3NpdGlvbikge1xcbiAgdmFyIGRhdGFMZW5ndGggPSBkYXRhLmxlbmd0aDtcXG4gIGZvciAodmFyIGkgPSBwb3NpdGlvbjsgaSA8IGRhdGFMZW5ndGggLSAzOyBpKyspIHtcXG4gICAgaWYgKGRhdGFbaV0gPT09IDB4MDAgJiYgZGF0YVtpICsgMV0gPT09IDB4MDApIHtcXG4gICAgICBpZiAoZGF0YVtpICsgMl0gPT09IDB4MDEpIHtcXG4gICAgICAgIHJldHVybiBpO1xcbiAgICAgIH1cXG4gICAgICBpZiAoaSArIDMgPCBkYXRhTGVuZ3RoICYmIGRhdGFbaSArIDJdID09PSAweDAwICYmIGRhdGFbaSArIDNdID09PSAweDAxKSB7XFxuICAgICAgICByZXR1cm4gaTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG4gIHJldHVybiAtMTtcXG59XFxuZnVuY3Rpb24gZXh0cmFjdFNlaVBheWxvYWQoZGF0YSwgc3RhcnRJbmRleCkge1xcbiAgdmFyIGluZGV4ID0gc3RhcnRJbmRleDtcXG4gIHZhciBmZkNvdW50ID0gMDtcXG4gIHdoaWxlIChkYXRhW2luZGV4XSA9PT0gMHhmZikge1xcbiAgICBmZkNvdW50Kys7XFxuICAgIGluZGV4Kys7XFxuICB9XFxuICB2YXIgcGF5bG9hZFR5cGUgPSBmZkNvdW50ICogMjU1ICsgZGF0YVtpbmRleCsrXTtcXG5cXG4gIC8vIFBhcnNlIHBheWxvYWQgc2l6ZVxcbiAgZmZDb3VudCA9IDA7XFxuICB3aGlsZSAoZGF0YVtpbmRleF0gPT09IDB4ZmYpIHtcXG4gICAgZmZDb3VudCsrO1xcbiAgICBpbmRleCsrO1xcbiAgfVxcbiAgdmFyIHBheWxvYWRTaXplID0gZmZDb3VudCAqIDI1NSArIGRhdGFbaW5kZXgrK107XFxuICByZXR1cm4ge1xcbiAgICB0eXBlOiBwYXlsb2FkVHlwZSxcXG4gICAgcGF5bG9hZDogZGF0YS5zdWJhcnJheShpbmRleCwgaW5kZXggKyBwYXlsb2FkU2l6ZSksXFxuICAgIGxlbmd0aDogaW5kZXggKyBwYXlsb2FkU2l6ZSAtIHN0YXJ0SW5kZXhcXG4gIH07XFxufVxcbmZ1bmN0aW9uIHJlbW92ZUVtdWxhdGlvblByZXZlbnRpb25CeXRlcyhkYXRhKSB7XFxuICB2YXIgcmVzdWx0ID0gW107XFxuICB2YXIgemVyb0NvdW50ID0gMDtcXG4gIHZhciBfaXRlcmF0b3IgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihkYXRhKSxcXG4gICAgX3N0ZXA7XFxuICB0cnkge1xcbiAgICBmb3IgKF9pdGVyYXRvci5zKCk7ICEoX3N0ZXAgPSBfaXRlcmF0b3IubigpKS5kb25lOykge1xcbiAgICAgIHZhciBieXRlID0gX3N0ZXAudmFsdWU7XFxuICAgICAgaWYgKHplcm9Db3VudCA9PT0gMiAmJiBieXRlID09PSBIMjY0X0NPTlNUQU5UUy5FTVVMQVRJT05fUFJFVkVOVElPTl9CWVRFKSB7XFxuICAgICAgICB6ZXJvQ291bnQgPSAwOyAvLyBSZXNldCBhZnRlciBmaW5kaW5nIGVtdWxhdGlvbiBwcmV2ZW50aW9uIGJ5dGUuXFxuICAgICAgfSBlbHNlIHtcXG4gICAgICAgIGlmIChieXRlID09PSAweDAwKSB7XFxuICAgICAgICAgIHplcm9Db3VudCsrO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgemVyb0NvdW50ID0gMDtcXG4gICAgICAgIH1cXG4gICAgICAgIHJlc3VsdC5wdXNoKGJ5dGUpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfSBjYXRjaCAoZXJyKSB7XFxuICAgIF9pdGVyYXRvci5lKGVycik7XFxuICB9IGZpbmFsbHkge1xcbiAgICBfaXRlcmF0b3IuZigpO1xcbiAgfVxcbiAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHJlc3VsdCk7XFxufVxcbmZ1bmN0aW9uIGNvbnZlcnRQaWNTdHJ1Y3RUb051bUNsb2NrVFMocGljU3RydWN0KSB7XFxuICBzd2l0Y2ggKHBpY1N0cnVjdCkge1xcbiAgICBjYXNlIDA6XFxuICAgIGNhc2UgMTpcXG4gICAgY2FzZSAyOlxcbiAgICAgIHJldHVybiAxO1xcbiAgICBjYXNlIDM6XFxuICAgIGNhc2UgNDpcXG4gICAgY2FzZSA3OlxcbiAgICAgIHJldHVybiAyO1xcbiAgICBjYXNlIDU6XFxuICAgIGNhc2UgNjpcXG4gICAgY2FzZSA4OlxcbiAgICAgIHJldHVybiAzO1xcbiAgICBkZWZhdWx0OlxcbiAgICAgIHJldHVybiAwO1xcbiAgfVxcbn1cXG5mdW5jdGlvbiBjcmVhdGVCaXRzdHJlYW1SZWFkZXIoYnVmZmVyKSB7XFxuICB2YXIgYml0T2Zmc2V0ID0gMDtcXG4gIGZ1bmN0aW9uIHJlYWRCaXRzKGJpdHNUb1JlYWQpIHtcXG4gICAgaWYgKGJpdE9mZnNldCArIGJpdHNUb1JlYWQgPiBidWZmZXIubGVuZ3RoICogOCkge1xcbiAgICAgIHRocm93IG5ldyBFcnJvcihcXFwiQ2Fubm90IHJlYWQgW1xcXCIuY29uY2F0KGJpdHNUb1JlYWQsIFxcXCJdIGJpdHMgLSBvdXQgb2YgYm91bmRzXFxcIikpO1xcbiAgICB9XFxuICAgIHZhciB2YWx1ZSA9IDA7XFxuICAgIHZhciBiaXRzUmVtYWluaW5nID0gYml0c1RvUmVhZDtcXG4gICAgd2hpbGUgKGJpdHNSZW1haW5pbmcgPiAwKSB7XFxuICAgICAgdmFyIGJ5dGVPZmZzZXQgPSBNYXRoLmZsb29yKGJpdE9mZnNldCAvIDgpO1xcbiAgICAgIHZhciBiaXRJbkJ5dGUgPSBiaXRPZmZzZXQgJSA4O1xcbiAgICAgIHZhciBiaXRzTGVmdEluQnl0ZSA9IDggLSBiaXRJbkJ5dGU7XFxuICAgICAgdmFyIHJlYWROb3cgPSBNYXRoLm1pbihiaXRzUmVtYWluaW5nLCBiaXRzTGVmdEluQnl0ZSk7XFxuICAgICAgdmFyIG1hc2sgPSAoMSA8PCByZWFkTm93KSAtIDE7XFxuICAgICAgdmFyIGJ5dGVWYWwgPSBidWZmZXJbYnl0ZU9mZnNldF0gPj4gYml0c0xlZnRJbkJ5dGUgLSByZWFkTm93O1xcbiAgICAgIHZhciBiaXRzID0gYnl0ZVZhbCAmIG1hc2s7XFxuICAgICAgdmFsdWUgPSB2YWx1ZSA8PCByZWFkTm93IHwgYml0cztcXG4gICAgICBiaXRPZmZzZXQgKz0gcmVhZE5vdztcXG4gICAgICBiaXRzUmVtYWluaW5nIC09IHJlYWROb3c7XFxuICAgIH1cXG4gICAgcmV0dXJuIHZhbHVlO1xcbiAgfVxcbiAgZnVuY3Rpb24gc2tpcEJpdHMobikge1xcbiAgICBpZiAoYml0T2Zmc2V0ICsgbiA+IGJ1ZmZlci5sZW5ndGggKiA4KSB7XFxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJDYW5ub3Qgc2tpcCBbXFxcIi5jb25jYXQobiwgXFxcIl0gYml0cyAtIG91dCBvZiBib3VuZHNcXFwiKSk7XFxuICAgIH1cXG4gICAgYml0T2Zmc2V0ICs9IG47XFxuICB9XFxuICBmdW5jdGlvbiBnZXRSZW1haW5pbmdCaXRzKCkge1xcbiAgICByZXR1cm4gYnVmZmVyLmxlbmd0aCAqIDggLSBiaXRPZmZzZXQ7XFxuICB9XFxuICByZXR1cm4ge1xcbiAgICByZWFkQml0czogcmVhZEJpdHMsXFxuICAgIHNraXBCaXRzOiBza2lwQml0cyxcXG4gICAgZ2V0UmVtYWluaW5nQml0czogZ2V0UmVtYWluaW5nQml0c1xcbiAgfTtcXG59XFxuZnVuY3Rpb24gcmVhZE9wdGlvbmFsVGltZXN0YW1wRmllbGRzKHJlYWRlciwgdHMpIHtcXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgMSB8fCByZWFkZXIucmVhZEJpdHMoMSkgPT09IDApIHtcXG4gICAgcmV0dXJuIHRydWU7IC8vIE5vIHNlY29uZHNfZmxhZywgd2UgYXJlIGRvbmUuXFxuICB9XFxuICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IDYpIHtcXG4gICAgcmV0dXJuIGZhbHNlO1xcbiAgfVxcbiAgdHMuc2Vjb25kcyA9IHJlYWRlci5yZWFkQml0cyg2KTtcXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgMSB8fCByZWFkZXIucmVhZEJpdHMoMSkgPT09IDApIHtcXG4gICAgcmV0dXJuIHRydWU7IC8vIE5vIG1pbnV0ZXNfZmxhZywgd2UgYXJlIGRvbmUuXFxuICB9XFxuICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IDYpIHtcXG4gICAgcmV0dXJuIGZhbHNlO1xcbiAgfVxcbiAgdHMubWludXRlcyA9IHJlYWRlci5yZWFkQml0cyg2KTtcXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgMSB8fCByZWFkZXIucmVhZEJpdHMoMSkgPT09IDApIHtcXG4gICAgcmV0dXJuIHRydWU7IC8vIE5vIGhvdXJzX2ZsYWcsIHdlIGFyZSBkb25lLlxcbiAgfVxcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCA1KSB7XFxuICAgIHJldHVybiBmYWxzZTtcXG4gIH1cXG4gIHRzLmhvdXJzID0gcmVhZGVyLnJlYWRCaXRzKDUpO1xcbiAgcmV0dXJuIHRydWU7XFxufVxcbmZ1bmN0aW9uIHBhcnNlQ2xvY2tUaW1lc3RhbXAocmVhZGVyKSB7XFxuICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IEJJVFNUUkVBTV9DT05TVEFOVFMuTUlOX0JJVFNfRk9SX0NMT0NLX1RJTUVTVEFNUCkge1xcbiAgICByZXR1cm4gbnVsbDtcXG4gIH1cXG4gIHZhciB0cyA9IHtcXG4gICAgY3RUeXBlOiByZWFkZXIucmVhZEJpdHMoMiksXFxuICAgIG51aXRGaWVsZEJhc2VkRmxhZzogcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxLFxcbiAgICBjb3VudGluZ1R5cGU6IHJlYWRlci5yZWFkQml0cyg1KSxcXG4gICAgZnVsbFRpbWVzdGFtcEZsYWc6IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMSxcXG4gICAgZGlzY29udGludWl0eUZsYWc6IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMSxcXG4gICAgY250RHJvcHBlZEZsYWc6IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMSxcXG4gICAgbkZyYW1lczogcmVhZGVyLnJlYWRCaXRzKDgpXFxuICB9O1xcbiAgaWYgKHRzLmZ1bGxUaW1lc3RhbXBGbGFnKSB7XFxuICAgIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgQklUU1RSRUFNX0NPTlNUQU5UUy5NSU5fQklUU19GT1JfRlVMTF9USU1FU1RBTVApIHtcXG4gICAgICByZXR1cm4gbnVsbDtcXG4gICAgfVxcbiAgICB0cy5zZWNvbmRzID0gcmVhZGVyLnJlYWRCaXRzKDYpO1xcbiAgICB0cy5taW51dGVzID0gcmVhZGVyLnJlYWRCaXRzKDYpO1xcbiAgICB0cy5ob3VycyA9IHJlYWRlci5yZWFkQml0cyg1KTtcXG4gIH0gZWxzZSB7XFxuICAgIGlmICghcmVhZE9wdGlvbmFsVGltZXN0YW1wRmllbGRzKHJlYWRlciwgdHMpKSB7XFxuICAgICAgcmV0dXJuIG51bGw7XFxuICAgIH1cXG4gIH1cXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgQklUU1RSRUFNX0NPTlNUQU5UUy5NSU5fQklUU19GT1JfVElNRV9PRkZTRVQpIHtcXG4gICAgcmV0dXJuIG51bGw7XFxuICB9XFxuICB0cy50aW1lT2Zmc2V0ID0gcmVhZGVyLnJlYWRCaXRzKDI0KTtcXG4gIHJldHVybiB0cztcXG59XFxuZnVuY3Rpb24gcGFyc2VQaWN0dXJlVGltaW5nKGRhdGEsIGNvbmZpZykge1xcbiAgdmFyIHJlYWRlciA9IGNyZWF0ZUJpdHN0cmVhbVJlYWRlcihyZW1vdmVFbXVsYXRpb25QcmV2ZW50aW9uQnl0ZXMoZGF0YSkpO1xcbiAgdmFyIHJlc3VsdCA9IHtcXG4gICAgcGljU3RydWN0OiB1bmRlZmluZWRcXG4gIH07XFxuICBpZiAoY29uZmlnLmNwYkRwYkRlbGF5c1ByZXNlbnRGbGFnICYmIGNvbmZpZy5jcGJSZW1vdmFsRGVsYXlMZW5ndGhNaW51czEgIT09IHVuZGVmaW5lZCAmJiBjb25maWcuZHBiT3V0cHV0RGVsYXlMZW5ndGhNaW51czEgIT09IHVuZGVmaW5lZCkge1xcbiAgICByZWFkZXIuc2tpcEJpdHMoY29uZmlnLmNwYlJlbW92YWxEZWxheUxlbmd0aE1pbnVzMSArIDEpO1xcbiAgICByZWFkZXIuc2tpcEJpdHMoY29uZmlnLmRwYk91dHB1dERlbGF5TGVuZ3RoTWludXMxICsgMSk7XFxuICB9XFxuICBpZiAoY29uZmlnLnBpY1N0cnVjdFByZXNlbnRGbGFnKSB7XFxuICAgIHZhciBwaWNTdHJ1Y3QgPSByZWFkZXIucmVhZEJpdHMoNCk7XFxuICAgIHZhciBudW1DbG9ja1RTID0gY29udmVydFBpY1N0cnVjdFRvTnVtQ2xvY2tUUyhwaWNTdHJ1Y3QpO1xcbiAgICB2YXIgY2xvY2tUaW1lc3RhbXBzID0gW107XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ2xvY2tUUzsgaSsrKSB7XFxuICAgICAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCAxKSB7XFxuICAgICAgICBicmVhaztcXG4gICAgICB9XFxuICAgICAgdmFyIGNsb2NrVGltZXN0YW1wRmxhZyA9IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMTtcXG4gICAgICBpZiAoIWNsb2NrVGltZXN0YW1wRmxhZykge1xcbiAgICAgICAgY2xvY2tUaW1lc3RhbXBzLnB1c2goe1xcbiAgICAgICAgICBjbG9ja1RpbWVzdGFtcEZsYWc6IGZhbHNlXFxuICAgICAgICB9KTtcXG4gICAgICAgIGNvbnRpbnVlO1xcbiAgICAgIH1cXG4gICAgICB2YXIgdHMgPSBwYXJzZUNsb2NrVGltZXN0YW1wKHJlYWRlcik7XFxuICAgICAgaWYgKHRzKSB7XFxuICAgICAgICBjbG9ja1RpbWVzdGFtcHMucHVzaCh7XFxuICAgICAgICAgIGNsb2NrVGltZXN0YW1wRmxhZzogdHJ1ZSxcXG4gICAgICAgICAgY2xvY2tUaW1lc3RhbXA6IHRzXFxuICAgICAgICB9KTtcXG4gICAgICB9IGVsc2Uge1xcbiAgICAgICAgLy8gTm90IGVub3VnaCBiaXRzLCBzdG9wIHByb2Nlc3NpbmcgU0VJXFxuICAgICAgICBicmVhaztcXG4gICAgICB9XFxuICAgIH1cXG4gICAgcmVzdWx0LnBpY1N0cnVjdCA9IHtcXG4gICAgICBudW1DbG9ja1RTOiBudW1DbG9ja1RTLFxcbiAgICAgIGNsb2NrVGltZXN0YW1wczogY2xvY2tUaW1lc3RhbXBzXFxuICAgIH07XFxuICB9XFxuICByZXR1cm4gcmVzdWx0O1xcbn1cXG5mdW5jdGlvbiBkZWNvZGVGcmFtZVRpbWluZ1RpbWVjb2RlKGNodW5rKSB7XFxuICB2YXIgcmVjZWl2ZVRpbWVzdGFtcCA9IG5ldyBEYXRlKCk7XFxuICB2YXIgY2h1bmtEYXRhID0gbmV3IFVpbnQ4QXJyYXkoY2h1bmsuZGF0YSk7XFxuICB2YXIgY3VycmVudEluZGV4ID0gZmluZE5leHROYWxTdGFydChjaHVua0RhdGEsIDApO1xcbiAgd2hpbGUgKGN1cnJlbnRJbmRleCAhPT0gLTEpIHtcXG4gICAgdmFyIG5leHROYWxTdGFydCA9IGZpbmROZXh0TmFsU3RhcnQoY2h1bmtEYXRhLCBjdXJyZW50SW5kZXggKyAxKTtcXG4gICAgdmFyIG5hbFVuaXRFbmQgPSBuZXh0TmFsU3RhcnQgPT09IC0xID8gY2h1bmtEYXRhLmxlbmd0aCA6IG5leHROYWxTdGFydDtcXG4gICAgdmFyIHN0YXJ0Q29kZUxlbmd0aCA9IGNodW5rRGF0YVtjdXJyZW50SW5kZXggKyAyXSA9PT0gMHgwMSA/IDMgOiA0O1xcbiAgICB2YXIgbmFsVW5pdEhlYWRlckluZGV4ID0gY3VycmVudEluZGV4ICsgc3RhcnRDb2RlTGVuZ3RoO1xcbiAgICB2YXIgbmFsVW5pdFR5cGUgPSBjaHVua0RhdGFbbmFsVW5pdEhlYWRlckluZGV4XSAmIDB4MWY7XFxuICAgIGlmIChuYWxVbml0VHlwZSA9PT0gSDI2NF9DT05TVEFOVFMuTkFMX1VOSVRfVFlQRV9TRUkpIHtcXG4gICAgICB2YXIgc2VpSW5kZXggPSBuYWxVbml0SGVhZGVySW5kZXggKyBIMjY0X0NPTlNUQU5UUy5OQUxfVU5JVF9IRUFERVJfU0laRTtcXG4gICAgICB2YXIgbmFsVW5pdERhdGEgPSBjaHVua0RhdGEuc3ViYXJyYXkoc2VpSW5kZXgsIG5hbFVuaXRFbmQpO1xcbiAgICAgIHZhciBzZWlPZmZzZXQgPSAwO1xcblxcbiAgICAgIC8vIFByb2Nlc3MgU0VJIG1lc3NhZ2VzIHVudGlsIGVuZCBvZiBOQUwgdW5pdFxcbiAgICAgIHdoaWxlIChzZWlPZmZzZXQgPCBuYWxVbml0RGF0YS5sZW5ndGgpIHtcXG4gICAgICAgIC8vIFN0b3AgaWYgcmVtYWluaW5nIGRhdGEgaXMgdG9vIHNob3J0IHRvIGJlIGEgdmFsaWQgU0VJIG1lc3NhZ2VcXG4gICAgICAgIGlmIChzZWlPZmZzZXQgKyAyID4gbmFsVW5pdERhdGEubGVuZ3RoKSB7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIHNlaVBheWxvYWQgPSBleHRyYWN0U2VpUGF5bG9hZChuYWxVbml0RGF0YSwgc2VpT2Zmc2V0KTtcXG4gICAgICAgIGlmIChzZWlQYXlsb2FkLnR5cGUgPT09IEgyNjRfQ09OU1RBTlRTLlNFSV9QQVlMT0FEX1RZUEVfUElDX1RJTUlORykge1xcbiAgICAgICAgICB2YXIgX3BhcnNlZFBpY3R1cmVUaW1pbmckO1xcbiAgICAgICAgICB2YXIgcGFyc2VkUGljdHVyZVRpbWluZyA9IHBhcnNlUGljdHVyZVRpbWluZyhzZWlQYXlsb2FkLnBheWxvYWQsIHtcXG4gICAgICAgICAgICBjcGJEcGJEZWxheXNQcmVzZW50RmxhZzogZmFsc2UsXFxuICAgICAgICAgICAgcGljU3RydWN0UHJlc2VudEZsYWc6IHRydWVcXG4gICAgICAgICAgfSk7XFxuICAgICAgICAgIHZhciBmaXJzdENsb2NrVGltZXN0YW1wID0gKF9wYXJzZWRQaWN0dXJlVGltaW5nJCA9IHBhcnNlZFBpY3R1cmVUaW1pbmcucGljU3RydWN0KSA9PT0gbnVsbCB8fCBfcGFyc2VkUGljdHVyZVRpbWluZyQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9wYXJzZWRQaWN0dXJlVGltaW5nJC5jbG9ja1RpbWVzdGFtcHNbMF07XFxuICAgICAgICAgIGlmIChmaXJzdENsb2NrVGltZXN0YW1wICE9PSBudWxsICYmIGZpcnN0Q2xvY2tUaW1lc3RhbXAgIT09IHZvaWQgMCAmJiBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wRmxhZykge1xcbiAgICAgICAgICAgIHZhciBfZmlyc3RDbG9ja1RpbWVzdGFtcCQsIF9maXJzdENsb2NrVGltZXN0YW1wJDIsIF9maXJzdENsb2NrVGltZXN0YW1wJDMsIF9maXJzdENsb2NrVGltZXN0YW1wJDQ7XFxuICAgICAgICAgICAgdmFyIHJ0cFRpbWVzdGFtcCA9IGNodW5rLnRpbWVzdGFtcDtcXG4gICAgICAgICAgICB2YXIgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSB7XFxuICAgICAgICAgICAgICB0aW1lY29kZTogZmlyc3RDbG9ja1RpbWVzdGFtcC5jbG9ja1RpbWVzdGFtcCA/IHtcXG4gICAgICAgICAgICAgICAgaG91cnM6IChfZmlyc3RDbG9ja1RpbWVzdGFtcCQgPSBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wLmhvdXJzKSAhPT0gbnVsbCAmJiBfZmlyc3RDbG9ja1RpbWVzdGFtcCQgIT09IHZvaWQgMCA/IF9maXJzdENsb2NrVGltZXN0YW1wJCA6IG51bGwsXFxuICAgICAgICAgICAgICAgIG1pbnV0ZXM6IChfZmlyc3RDbG9ja1RpbWVzdGFtcCQyID0gZmlyc3RDbG9ja1RpbWVzdGFtcC5jbG9ja1RpbWVzdGFtcC5taW51dGVzKSAhPT0gbnVsbCAmJiBfZmlyc3RDbG9ja1RpbWVzdGFtcCQyICE9PSB2b2lkIDAgPyBfZmlyc3RDbG9ja1RpbWVzdGFtcCQyIDogbnVsbCxcXG4gICAgICAgICAgICAgICAgc2Vjb25kczogKF9maXJzdENsb2NrVGltZXN0YW1wJDMgPSBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wLnNlY29uZHMpICE9PSBudWxsICYmIF9maXJzdENsb2NrVGltZXN0YW1wJDMgIT09IHZvaWQgMCA/IF9maXJzdENsb2NrVGltZXN0YW1wJDMgOiBudWxsLFxcbiAgICAgICAgICAgICAgICBmcmFtZXM6IChfZmlyc3RDbG9ja1RpbWVzdGFtcCQ0ID0gZmlyc3RDbG9ja1RpbWVzdGFtcC5jbG9ja1RpbWVzdGFtcC5uRnJhbWVzKSAhPT0gbnVsbCAmJiBfZmlyc3RDbG9ja1RpbWVzdGFtcCQ0ICE9PSB2b2lkIDAgPyBfZmlyc3RDbG9ja1RpbWVzdGFtcCQ0IDogbnVsbCxcXG4gICAgICAgICAgICAgICAgaXNGcmFtZURyb3A6IGZpcnN0Q2xvY2tUaW1lc3RhbXAuY2xvY2tUaW1lc3RhbXAuY250RHJvcHBlZEZsYWdcXG4gICAgICAgICAgICAgIH0gOiBudWxsLFxcbiAgICAgICAgICAgICAgcmVjZWl2ZVRpbWVzdGFtcDogcmVjZWl2ZVRpbWVzdGFtcFxcbiAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7XFxuICAgICAgICAgICAgICB0eXBlOiBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuTWV0YWRhdGEsXFxuICAgICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5UcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRnJhbWVUaW1pbmdJbmZvcm1hdGlvbixcXG4gICAgICAgICAgICAgICAgZGF0YTogX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQoKSh7fSwgcnRwVGltZXN0YW1wLCB7XFxuICAgICAgICAgICAgICAgICAgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb246IGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIHNlaU9mZnNldCArPSBzZWlQYXlsb2FkLmxlbmd0aDtcXG5cXG4gICAgICAgIC8vIFN0b3AgaWYgYW4gaW52YWxpZCBwYXlsb2FkIGxlbmd0aCB3YXMgZGV0ZWN0ZWQuXFxuICAgICAgICBpZiAoc2VpUGF5bG9hZC5sZW5ndGggPT09IDApIHtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICB9XFxuICAgIGN1cnJlbnRJbmRleCA9IG5leHROYWxTdGFydDtcXG4gIH1cXG59XFxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1xcXCJkZWZhdWx0XFxcIl0gPSAoZGVjb2RlRnJhbWVUaW1pbmdUaW1lY29kZSk7XFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvci5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoKG1vZHVsZSwgX191bnVzZWRfd2VicGFja19leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7XFxuXFxuLyogcHJvdmlkZWQgZGVwZW5kZW5jeSAqLyB2YXIgUHJvbWlzZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vc3JjL3Byb21pc2UvUHJvbWlzZSAqLyBcXFwiLi9zcmMvcHJvbWlzZS9Qcm9taXNlLnRzXFxcIilbXFxcImRlZmF1bHRcXFwiXTtcXG5mdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAobiwgdCwgZSwgciwgbywgYSwgYykge1xcbiAgdHJ5IHtcXG4gICAgdmFyIGkgPSBuW2FdKGMpLFxcbiAgICAgIHUgPSBpLnZhbHVlO1xcbiAgfSBjYXRjaCAobikge1xcbiAgICByZXR1cm4gdm9pZCBlKG4pO1xcbiAgfVxcbiAgaS5kb25lID8gdCh1KSA6IFByb21pc2UucmVzb2x2ZSh1KS50aGVuKHIsIG8pO1xcbn1cXG5mdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihuKSB7XFxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xcbiAgICB2YXIgdCA9IHRoaXMsXFxuICAgICAgZSA9IGFyZ3VtZW50cztcXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyLCBvKSB7XFxuICAgICAgdmFyIGEgPSBuLmFwcGx5KHQsIGUpO1xcbiAgICAgIGZ1bmN0aW9uIF9uZXh0KG4pIHtcXG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChhLCByLCBvLCBfbmV4dCwgX3Rocm93LCBcXFwibmV4dFxcXCIsIG4pO1xcbiAgICAgIH1cXG4gICAgICBmdW5jdGlvbiBfdGhyb3cobikge1xcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGEsIHIsIG8sIF9uZXh0LCBfdGhyb3csIFxcXCJ0aHJvd1xcXCIsIG4pO1xcbiAgICAgIH1cXG4gICAgICBfbmV4dCh2b2lkIDApO1xcbiAgICB9KTtcXG4gIH07XFxufVxcbm1vZHVsZS5leHBvcnRzID0gX2FzeW5jVG9HZW5lcmF0b3IsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcXFwiZGVmYXVsdFxcXCJdID0gbW9kdWxlLmV4cG9ydHM7XFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKChtb2R1bGUpID0+IHtcXG5cXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soYSwgbikge1xcbiAgaWYgKCEoYSBpbnN0YW5jZW9mIG4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKFxcXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cXFwiKTtcXG59XFxubW9kdWxlLmV4cG9ydHMgPSBfY2xhc3NDYWxsQ2hlY2ssIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcXFwiZGVmYXVsdFxcXCJdID0gbW9kdWxlLmV4cG9ydHM7XFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKChtb2R1bGUsIF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgPT4ge1xcblxcbnZhciB0b1Byb3BlcnR5S2V5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi90b1Byb3BlcnR5S2V5LmpzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJvcGVydHlLZXkuanNcXFwiKTtcXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyhlLCByKSB7XFxuICBmb3IgKHZhciB0ID0gMDsgdCA8IHIubGVuZ3RoOyB0KyspIHtcXG4gICAgdmFyIG8gPSByW3RdO1xcbiAgICBvLmVudW1lcmFibGUgPSBvLmVudW1lcmFibGUgfHwgITEsIG8uY29uZmlndXJhYmxlID0gITAsIFxcXCJ2YWx1ZVxcXCIgaW4gbyAmJiAoby53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHRvUHJvcGVydHlLZXkoby5rZXkpLCBvKTtcXG4gIH1cXG59XFxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKGUsIHIsIHQpIHtcXG4gIHJldHVybiByICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLCByKSwgdCAmJiBfZGVmaW5lUHJvcGVydGllcyhlLCB0KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFxcXCJwcm90b3R5cGVcXFwiLCB7XFxuICAgIHdyaXRhYmxlOiAhMVxcbiAgfSksIGU7XFxufVxcbm1vZHVsZS5leHBvcnRzID0gX2NyZWF0ZUNsYXNzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXFxcImRlZmF1bHRcXFwiXSA9IG1vZHVsZS5leHBvcnRzO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5LmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgobW9kdWxlLCBfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pID0+IHtcXG5cXG52YXIgdG9Qcm9wZXJ0eUtleSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdG9Qcm9wZXJ0eUtleS5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1Byb3BlcnR5S2V5LmpzXFxcIik7XFxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KGUsIHIsIHQpIHtcXG4gIHJldHVybiAociA9IHRvUHJvcGVydHlLZXkocikpIGluIGUgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwge1xcbiAgICB2YWx1ZTogdCxcXG4gICAgZW51bWVyYWJsZTogITAsXFxuICAgIGNvbmZpZ3VyYWJsZTogITAsXFxuICAgIHdyaXRhYmxlOiAhMFxcbiAgfSkgOiBlW3JdID0gdCwgZTtcXG59XFxubW9kdWxlLmV4cG9ydHMgPSBfZGVmaW5lUHJvcGVydHksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcXFwiZGVmYXVsdFxcXCJdID0gbW9kdWxlLmV4cG9ydHM7XFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9QcmltaXRpdmUuanNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJpbWl0aXZlLmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKChtb2R1bGUsIF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgPT4ge1xcblxcbnZhciBfdHlwZW9mID0gKF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdHlwZW9mLmpzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qc1xcXCIpW1xcXCJkZWZhdWx0XFxcIl0pO1xcbmZ1bmN0aW9uIHRvUHJpbWl0aXZlKHQsIHIpIHtcXG4gIGlmIChcXFwib2JqZWN0XFxcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDtcXG4gIHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xcbiAgaWYgKHZvaWQgMCAhPT0gZSkge1xcbiAgICB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFxcXCJkZWZhdWx0XFxcIik7XFxuICAgIGlmIChcXFwib2JqZWN0XFxcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTtcXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcXFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cXFwiKTtcXG4gIH1cXG4gIHJldHVybiAoXFxcInN0cmluZ1xcXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xcbn1cXG5tb2R1bGUuZXhwb3J0cyA9IHRvUHJpbWl0aXZlLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXFxcImRlZmF1bHRcXFwiXSA9IG1vZHVsZS5leHBvcnRzO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJvcGVydHlLZXkuanNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Qcm9wZXJ0eUtleS5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKChtb2R1bGUsIF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgPT4ge1xcblxcbnZhciBfdHlwZW9mID0gKF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdHlwZW9mLmpzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qc1xcXCIpW1xcXCJkZWZhdWx0XFxcIl0pO1xcbnZhciB0b1ByaW1pdGl2ZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdG9QcmltaXRpdmUuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9QcmltaXRpdmUuanNcXFwiKTtcXG5mdW5jdGlvbiB0b1Byb3BlcnR5S2V5KHQpIHtcXG4gIHZhciBpID0gdG9QcmltaXRpdmUodCwgXFxcInN0cmluZ1xcXCIpO1xcbiAgcmV0dXJuIFxcXCJzeW1ib2xcXFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFxcXCJcXFwiO1xcbn1cXG5tb2R1bGUuZXhwb3J0cyA9IHRvUHJvcGVydHlLZXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcXFwiZGVmYXVsdFxcXCJdID0gbW9kdWxlLmV4cG9ydHM7XFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mLmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mLmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgobW9kdWxlKSA9PiB7XFxuXFxuZnVuY3Rpb24gX3R5cGVvZihvKSB7XFxuICBcXFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcXFwiO1xcblxcbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YgPSBcXFwiZnVuY3Rpb25cXFwiID09IHR5cGVvZiBTeW1ib2wgJiYgXFxcInN5bWJvbFxcXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7XFxuICAgIHJldHVybiB0eXBlb2YgbztcXG4gIH0gOiBmdW5jdGlvbiAobykge1xcbiAgICByZXR1cm4gbyAmJiBcXFwiZnVuY3Rpb25cXFwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcXFwic3ltYm9sXFxcIiA6IHR5cGVvZiBvO1xcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1xcXCJkZWZhdWx0XFxcIl0gPSBtb2R1bGUuZXhwb3J0cyksIF90eXBlb2Yobyk7XFxufVxcbm1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1xcXCJkZWZhdWx0XFxcIl0gPSBtb2R1bGUuZXhwb3J0cztcXG5cXG4vKioqLyB9KVxcblxcbi8qKioqKiovIFxcdH0pO1xcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKioqKi8gXFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxcbi8qKioqKiovIFxcdHZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqLyBcXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxcbi8qKioqKiovIFxcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcXG4vKioqKioqLyBcXHRcXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcXG4vKioqKioqLyBcXHRcXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcXG4vKioqKioqLyBcXHRcXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcXG4vKioqKioqLyBcXHRcXHRcXHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XFxuLyoqKioqKi8gXFx0XFx0fVxcbi8qKioqKiovIFxcdFxcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXFxuLyoqKioqKi8gXFx0XFx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XFxuLyoqKioqKi8gXFx0XFx0XFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxcbi8qKioqKiovIFxcdFxcdFxcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXFxuLyoqKioqKi8gXFx0XFx0XFx0ZXhwb3J0czoge31cXG4vKioqKioqLyBcXHRcXHR9O1xcbi8qKioqKiovIFxcdFxcbi8qKioqKiovIFxcdFxcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxcbi8qKioqKiovIFxcdFxcdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xcbi8qKioqKiovIFxcdFxcbi8qKioqKiovIFxcdFxcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXFxuLyoqKioqKi8gXFx0XFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xcbi8qKioqKiovIFxcdH1cXG4vKioqKioqLyBcXHRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKioqKiovIFxcdC8qIHdlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0ICovXFxuLyoqKioqKi8gXFx0KCgpID0+IHtcXG4vKioqKioqLyBcXHRcXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xcbi8qKioqKiovIFxcdFxcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcXG4vKioqKioqLyBcXHRcXHRcXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cXG4vKioqKioqLyBcXHRcXHRcXHRcXHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcXG4vKioqKioqLyBcXHRcXHRcXHRcXHQoKSA9PiAobW9kdWxlKTtcXG4vKioqKioqLyBcXHRcXHRcXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcXG4vKioqKioqLyBcXHRcXHRcXHRyZXR1cm4gZ2V0dGVyO1xcbi8qKioqKiovIFxcdFxcdH07XFxuLyoqKioqKi8gXFx0fSkoKTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqLyBcXHQvKiB3ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMgKi9cXG4vKioqKioqLyBcXHQoKCkgPT4ge1xcbi8qKioqKiovIFxcdFxcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcXG4vKioqKioqLyBcXHRcXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xcbi8qKioqKiovIFxcdFxcdFxcdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcXG4vKioqKioqLyBcXHRcXHRcXHRcXHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcXG4vKioqKioqLyBcXHRcXHRcXHRcXHRcXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xcbi8qKioqKiovIFxcdFxcdFxcdFxcdH1cXG4vKioqKioqLyBcXHRcXHRcXHR9XFxuLyoqKioqKi8gXFx0XFx0fTtcXG4vKioqKioqLyBcXHR9KSgpO1xcbi8qKioqKiovIFxcdFxcbi8qKioqKiovIFxcdC8qIHdlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQgKi9cXG4vKioqKioqLyBcXHQoKCkgPT4ge1xcbi8qKioqKiovIFxcdFxcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSlcXG4vKioqKioqLyBcXHR9KSgpO1xcbi8qKioqKiovIFxcdFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSB7fTtcXG4vLyBUaGlzIGVudHJ5IG5lZWQgdG8gYmUgd3JhcHBlZCBpbiBhbiBJSUZFIGJlY2F1c2UgaXQgbmVlZCB0byBiZSBpbiBzdHJpY3QgbW9kZS5cXG4oKCkgPT4ge1xcblxcXCJ1c2Ugc3RyaWN0XFxcIjtcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P3J1bGVTZXRbMV0ucnVsZXNbMV0udXNlIS4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmUud29ya2VyLnRzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2FzeW5jVG9HZW5lcmF0b3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvci5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfYXN5bmNUb0dlbmVyYXRvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfYXN5bmNUb0dlbmVyYXRvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qc1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qc1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qc1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2xhbmdfYXNzZXJ0VW5yZWFjaGFibGVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uLy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUgKi8gXFxcIi4vc3JjL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUudHNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UgKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlLnRzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF90cmFuc2Zvcm1zX1dvcmtlclRyYW5zZm9ybXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdHJhbnNmb3Jtcy9Xb3JrZXJUcmFuc2Zvcm1zICovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL3RyYW5zZm9ybXMvV29ya2VyVHJhbnNmb3Jtcy50c1xcXCIpO1xcblxcblxcblxcblxcbnZhciBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXI7XFxuZnVuY3Rpb24gX3JlZ2VuZXJhdG9yKCkgeyAvKiEgcmVnZW5lcmF0b3ItcnVudGltZSAtLSBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4gLS0gbGljZW5zZSAoTUlUKTogaHR0cHM6Ly9naXRodWIuY29tL2JhYmVsL2JhYmVsL2Jsb2IvbWFpbi9wYWNrYWdlcy9iYWJlbC1oZWxwZXJzL0xJQ0VOU0UgKi8gdmFyIGUsIHQsIHIgPSBcXFwiZnVuY3Rpb25cXFwiID09IHR5cGVvZiBTeW1ib2wgPyBTeW1ib2wgOiB7fSwgbiA9IHIuaXRlcmF0b3IgfHwgXFxcIkBAaXRlcmF0b3JcXFwiLCBvID0gci50b1N0cmluZ1RhZyB8fCBcXFwiQEB0b1N0cmluZ1RhZ1xcXCI7IGZ1bmN0aW9uIGkociwgbiwgbywgaSkgeyB2YXIgYyA9IG4gJiYgbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBuIDogR2VuZXJhdG9yLCB1ID0gT2JqZWN0LmNyZWF0ZShjLnByb3RvdHlwZSk7IHJldHVybiBfcmVnZW5lcmF0b3JEZWZpbmUyKHUsIFxcXCJfaW52b2tlXFxcIiwgZnVuY3Rpb24gKHIsIG4sIG8pIHsgdmFyIGksIGMsIHUsIGYgPSAwLCBwID0gbyB8fCBbXSwgeSA9ICExLCBHID0geyBwOiAwLCBuOiAwLCB2OiBlLCBhOiBkLCBmOiBkLmJpbmQoZSwgNCksIGQ6IGZ1bmN0aW9uIGQodCwgcikgeyByZXR1cm4gaSA9IHQsIGMgPSAwLCB1ID0gZSwgRy5uID0gciwgYTsgfSB9OyBmdW5jdGlvbiBkKHIsIG4pIHsgZm9yIChjID0gciwgdSA9IG4sIHQgPSAwOyAheSAmJiBmICYmICFvICYmIHQgPCBwLmxlbmd0aDsgdCsrKSB7IHZhciBvLCBpID0gcFt0XSwgZCA9IEcucCwgbCA9IGlbMl07IHIgPiAzID8gKG8gPSBsID09PSBuKSAmJiAodSA9IGlbKGMgPSBpWzRdKSA/IDUgOiAoYyA9IDMsIDMpXSwgaVs0XSA9IGlbNV0gPSBlKSA6IGlbMF0gPD0gZCAmJiAoKG8gPSByIDwgMiAmJiBkIDwgaVsxXSkgPyAoYyA9IDAsIEcudiA9IG4sIEcubiA9IGlbMV0pIDogZCA8IGwgJiYgKG8gPSByIDwgMyB8fCBpWzBdID4gbiB8fCBuID4gbCkgJiYgKGlbNF0gPSByLCBpWzVdID0gbiwgRy5uID0gbCwgYyA9IDApKTsgfSBpZiAobyB8fCByID4gMSkgcmV0dXJuIGE7IHRocm93IHkgPSAhMCwgbjsgfSByZXR1cm4gZnVuY3Rpb24gKG8sIHAsIGwpIHsgaWYgKGYgPiAxKSB0aHJvdyBUeXBlRXJyb3IoXFxcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcXFwiKTsgZm9yICh5ICYmIDEgPT09IHAgJiYgZChwLCBsKSwgYyA9IHAsIHUgPSBsOyAodCA9IGMgPCAyID8gZSA6IHUpIHx8ICF5OykgeyBpIHx8IChjID8gYyA8IDMgPyAoYyA+IDEgJiYgKEcubiA9IC0xKSwgZChjLCB1KSkgOiBHLm4gPSB1IDogRy52ID0gdSk7IHRyeSB7IGlmIChmID0gMiwgaSkgeyBpZiAoYyB8fCAobyA9IFxcXCJuZXh0XFxcIiksIHQgPSBpW29dKSB7IGlmICghKHQgPSB0LmNhbGwoaSwgdSkpKSB0aHJvdyBUeXBlRXJyb3IoXFxcIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0XFxcIik7IGlmICghdC5kb25lKSByZXR1cm4gdDsgdSA9IHQudmFsdWUsIGMgPCAyICYmIChjID0gMCk7IH0gZWxzZSAxID09PSBjICYmICh0ID0gaS5yZXR1cm4pICYmIHQuY2FsbChpKSwgYyA8IDIgJiYgKHUgPSBUeXBlRXJyb3IoXFxcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ1xcXCIgKyBvICsgXFxcIicgbWV0aG9kXFxcIiksIGMgPSAxKTsgaSA9IGU7IH0gZWxzZSBpZiAoKHQgPSAoeSA9IEcubiA8IDApID8gdSA6IHIuY2FsbChuLCBHKSkgIT09IGEpIGJyZWFrOyB9IGNhdGNoICh0KSB7IGkgPSBlLCBjID0gMSwgdSA9IHQ7IH0gZmluYWxseSB7IGYgPSAxOyB9IH0gcmV0dXJuIHsgdmFsdWU6IHQsIGRvbmU6IHkgfTsgfTsgfShyLCBvLCBpKSwgITApLCB1OyB9IHZhciBhID0ge307IGZ1bmN0aW9uIEdlbmVyYXRvcigpIHt9IGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uKCkge30gZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSB7fSB0ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mOyB2YXIgYyA9IFtdW25dID8gdCh0KFtdW25dKCkpKSA6IChfcmVnZW5lcmF0b3JEZWZpbmUyKHQgPSB7fSwgbiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSksIHQpLCB1ID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlID0gR2VuZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoYyk7IGZ1bmN0aW9uIGYoZSkgeyByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKSA6IChlLl9fcHJvdG9fXyA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBfcmVnZW5lcmF0b3JEZWZpbmUyKGUsIG8sIFxcXCJHZW5lcmF0b3JGdW5jdGlvblxcXCIpKSwgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHUpLCBlOyB9IHJldHVybiBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgX3JlZ2VuZXJhdG9yRGVmaW5lMih1LCBcXFwiY29uc3RydWN0b3JcXFwiLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSksIF9yZWdlbmVyYXRvckRlZmluZTIoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIFxcXCJjb25zdHJ1Y3RvclxcXCIsIEdlbmVyYXRvckZ1bmN0aW9uKSwgR2VuZXJhdG9yRnVuY3Rpb24uZGlzcGxheU5hbWUgPSBcXFwiR2VuZXJhdG9yRnVuY3Rpb25cXFwiLCBfcmVnZW5lcmF0b3JEZWZpbmUyKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBvLCBcXFwiR2VuZXJhdG9yRnVuY3Rpb25cXFwiKSwgX3JlZ2VuZXJhdG9yRGVmaW5lMih1KSwgX3JlZ2VuZXJhdG9yRGVmaW5lMih1LCBvLCBcXFwiR2VuZXJhdG9yXFxcIiksIF9yZWdlbmVyYXRvckRlZmluZTIodSwgbiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSksIF9yZWdlbmVyYXRvckRlZmluZTIodSwgXFxcInRvU3RyaW5nXFxcIiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gXFxcIltvYmplY3QgR2VuZXJhdG9yXVxcXCI7IH0pLCAoX3JlZ2VuZXJhdG9yID0gZnVuY3Rpb24gX3JlZ2VuZXJhdG9yKCkgeyByZXR1cm4geyB3OiBpLCBtOiBmIH07IH0pKCk7IH1cXG5mdW5jdGlvbiBfcmVnZW5lcmF0b3JEZWZpbmUyKGUsIHIsIG4sIHQpIHsgdmFyIGkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7IHRyeSB7IGkoe30sIFxcXCJcXFwiLCB7fSk7IH0gY2F0Y2ggKGUpIHsgaSA9IDA7IH0gX3JlZ2VuZXJhdG9yRGVmaW5lMiA9IGZ1bmN0aW9uIF9yZWdlbmVyYXRvckRlZmluZShlLCByLCBuLCB0KSB7IGZ1bmN0aW9uIG8ociwgbikgeyBfcmVnZW5lcmF0b3JEZWZpbmUyKGUsIHIsIGZ1bmN0aW9uIChlKSB7IHJldHVybiB0aGlzLl9pbnZva2UociwgbiwgZSk7IH0pOyB9IHIgPyBpID8gaShlLCByLCB7IHZhbHVlOiBuLCBlbnVtZXJhYmxlOiAhdCwgY29uZmlndXJhYmxlOiAhdCwgd3JpdGFibGU6ICF0IH0pIDogZVtyXSA9IG4gOiAobyhcXFwibmV4dFxcXCIsIDApLCBvKFxcXCJ0aHJvd1xcXCIsIDEpLCBvKFxcXCJyZXR1cm5cXFwiLCAyKSk7IH0sIF9yZWdlbmVyYXRvckRlZmluZTIoZSwgciwgbiwgdCk7IH1cXG4vKipcXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxcbiAqL1xcblxcblxcblxcbnZhciB3b3JrZXIgPSBzZWxmO1xcbi8vIFRoaXMgaXMgaG93IHRoZSBkb2N1bWVudGF0aW9uIGluc3RydWN0cyB0byBkbyBpdCAtIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3dvcmtlci1sb2FkZXJcXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXFxudmFyIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcXG4gIGZ1bmN0aW9uIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyKCkge1xcbiAgICBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19fZGVmYXVsdCgpKHRoaXMsIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyKTtcXG4gIH1cXG4gIHJldHVybiBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19fZGVmYXVsdCgpKFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLCBudWxsLCBbe1xcbiAgICBrZXk6IFxcXCJoYW5kbGVBZGRUcmFuc2Zvcm1cXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlQWRkVHJhbnNmb3JtKHR5cGUpIHtcXG4gICAgICBpZiAoVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX2lzUGlwZWxpbmVDb25maWd1cmVkKSB7XFxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yOiBQaXBlbGluZSBpcyBsb2NrZWQuIEEgdHJhbnNmb3JtIGNhbm5vdCBiZSBhZGRlZCBvbmNlIHRoZSBwaXBlbGluZSBoYXMgYmVlbiBjb25maWd1cmVkJyk7XFxuICAgICAgfVxcbiAgICAgIHN3aXRjaCAodHlwZSkge1xcbiAgICAgICAgY2FzZSAnZnJhbWUtdGltaW5nLWluZm9ybWF0aW9uJzpcXG4gICAgICAgICAgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3RyYW5zZm9ybXMucHVzaChfdHJhbnNmb3Jtc19Xb3JrZXJUcmFuc2Zvcm1zX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19bXFxcImRlZmF1bHRcXFwiXS5jcmVhdGVGcmFtZVRpbWluZ0luZm9ybWF0aW9uVHJhbnNmb3JtKCkpO1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgJ3Byb3RlY3RlZC12aWRlbyc6XFxuICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLnB1c2goX3RyYW5zZm9ybXNfV29ya2VyVHJhbnNmb3Jtc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fW1xcXCJkZWZhdWx0XFxcIl0uY3JlYXRlRW5jb2RlZFZpZGVvU3RyZWFtVHJhbnNmb3JtKHdvcmtlcikpO1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgJ3Byb3RlY3RlZC1hdWRpbyc6XFxuICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLnB1c2goX3RyYW5zZm9ybXNfV29ya2VyVHJhbnNmb3Jtc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fW1xcXCJkZWZhdWx0XFxcIl0uY3JlYXRlRW5jb2RlZEF1ZGlvU3RyZWFtVHJhbnNmb3JtKHdvcmtlcikpO1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgJ3Bhc3MtdGhyb3VnaCc6XFxuICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLnB1c2goX3RyYW5zZm9ybXNfV29ya2VyVHJhbnNmb3Jtc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fW1xcXCJkZWZhdWx0XFxcIl0uY3JlYXRlUGFzc1Rocm91Z2hUcmFuc2Zvcm0oKSk7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJFcnJvcjogVW5rbm93biB0cmFuc2Zvcm0gdHlwZSBbXFxcIi5jb25jYXQodHlwZSwgXFxcIl1cXFwiKSk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9LCB7XFxuICAgIGtleTogXFxcImNvbmZpZ3VyZVBpcGVsaW5lXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcXG4gICAgICB2YXIgX2NvbmZpZ3VyZVBpcGVsaW5lID0gX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19hc3luY1RvR2VuZXJhdG9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19fZGVmYXVsdCgpKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IoKS5tKGZ1bmN0aW9uIF9jYWxsZWUoc291cmNlLCBzaW5rKSB7XFxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yKCkudyhmdW5jdGlvbiAoX2NvbnRleHQpIHtcXG4gICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQubikge1xcbiAgICAgICAgICAgIGNhc2UgMDpcXG4gICAgICAgICAgICAgIGlmIChzb3VyY2UgJiYgc2luaykge1xcbiAgICAgICAgICAgICAgICBfY29udGV4dC5uID0gMTtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yOiBDb25maWd1cmF0aW9uIG9mIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lIHJlcXVpcmVzIGJvdGggYSByZWFkYmFsZSBzb3VyY2UgYW5kIHdyaXRhYmxlIHNpbmsnKTtcXG4gICAgICAgICAgICBjYXNlIDE6XFxuICAgICAgICAgICAgICBpZiAoVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3RyYW5zZm9ybXMubGVuZ3RoID09PSAwKSB7XFxuICAgICAgICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLnB1c2goKTtcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgIF9jb250ZXh0Lm4gPSAyO1xcbiAgICAgICAgICAgICAgcmV0dXJuIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLnJlZHVjZVJpZ2h0KGZ1bmN0aW9uIChwaXBlbGluZSwgdHJhbnNmb3JtKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBwaXBlbGluZS5waXBlVGhyb3VnaCh0cmFuc2Zvcm0pO1xcbiAgICAgICAgICAgICAgfSwgc291cmNlKS5waXBlVG8oc2luayk7XFxuICAgICAgICAgICAgY2FzZSAyOlxcbiAgICAgICAgICAgICAgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX2lzUGlwZWxpbmVDb25maWd1cmVkID0gdHJ1ZTtcXG4gICAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7XFxuICAgICAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5QaXBlbGluZUNvbmZpZ3VyZWQsXFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICAgICAgICBuYW1lOiBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fd29ya2VyTmFtZVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBjYXNlIDM6XFxuICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYSgyKTtcXG4gICAgICAgICAgfVxcbiAgICAgICAgfSwgX2NhbGxlZSk7XFxuICAgICAgfSkpO1xcbiAgICAgIGZ1bmN0aW9uIGNvbmZpZ3VyZVBpcGVsaW5lKF94LCBfeDIpIHtcXG4gICAgICAgIHJldHVybiBfY29uZmlndXJlUGlwZWxpbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcXG4gICAgICB9XFxuICAgICAgcmV0dXJuIGNvbmZpZ3VyZVBpcGVsaW5lO1xcbiAgICB9KClcXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiaGFuZGxlTWVzc2FnZVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVNZXNzYWdlKF9yZWYpIHtcXG4gICAgICB2YXIgbWVzc2FnZSA9IF9yZWYuZGF0YTtcXG4gICAgICB2YXIgdHlwZSA9IG1lc3NhZ2UudHlwZTtcXG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcXG4gICAgICAgIGNhc2UgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLkFkZFRyYW5zZm9ybTpcXG4gICAgICAgICAgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuaGFuZGxlQWRkVHJhbnNmb3JtKG1lc3NhZ2UuZGF0YSk7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ29uZmlndXJlUGlwZWxpbmU6XFxuICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLmNvbmZpZ3VyZVBpcGVsaW5lKG1lc3NhZ2UuZGF0YS5zb3VyY2UsIG1lc3NhZ2UuZGF0YS5zaW5rKTtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5NZXRhZGF0YTpcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5DaHVuazpcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAoMCxfbGFuZ19hc3NlcnRVbnJlYWNoYWJsZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fW1xcXCJkZWZhdWx0XFxcIl0pKHR5cGUpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfV0pO1xcbn0oKTtcXG5fVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIgPSBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlcjtcXG5faG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19fZGVmYXVsdCgpKFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLCBcXFwiX3RyYW5zZm9ybXNcXFwiLCBbXSk7XFxuX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQoKShUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciwgXFxcIl9pc1BpcGVsaW5lQ29uZmlndXJlZFxcXCIsIGZhbHNlKTtcXG5faG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19fZGVmYXVsdCgpKFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLCBcXFwiX3dvcmtlck5hbWVcXFwiLCB2b2lkIDApO1xcbihmdW5jdGlvbiAoKSB7XFxuICB3b3JrZXIub25lcnJvciA9IGZ1bmN0aW9uIChlcnJvcikge1xcbiAgICByZXR1cm4gY29uc29sZS5lcnJvcignW1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyXSBFcnJvcjogWyVzXScsIGVycm9yKTtcXG4gIH07XFxuICB3b3JrZXIub25tZXNzYWdlID0gX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLmhhbmRsZU1lc3NhZ2UuYmluZChfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIpO1xcbiAgaWYgKHdvcmtlci5SVENUcmFuc2Zvcm1FdmVudCkge1xcbiAgICB3b3JrZXIub25ydGN0cmFuc2Zvcm0gPSBmdW5jdGlvbiAoX3JlZjIpIHtcXG4gICAgICB2YXIgdHJhbnNmb3JtZXIgPSBfcmVmMi50cmFuc2Zvcm1lcjtcXG4gICAgICBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3dvcmtlck5hbWUgPSB0cmFuc2Zvcm1lci5vcHRpb25zLm5hbWU7XFxuICAgICAgdmFyIHNvdXJjZSA9IHRyYW5zZm9ybWVyLnJlYWRhYmxlO1xcbiAgICAgIHZhciBzaW5rID0gdHJhbnNmb3JtZXIud3JpdGFibGU7XFxuICAgICAgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLmNvbmZpZ3VyZVBpcGVsaW5lKHNvdXJjZSwgc2luayk7XFxuICAgIH07XFxuICB9XFxufSkoKTtcXG4vKiB1bnVzZWQgaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgX19XRUJQQUNLX0RFRkFVTFRfRVhQT1JUX18gPSAobnVsbCk7XFxufSkoKTtcXG5cXG4vKioqKioqLyB9KSgpXFxuO1xcblwiLCBcIldvcmtlclwiLCB1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLyogZXNsaW50LWVudiBicm93c2VyICovXG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmLCBuby11c2UtYmVmb3JlLWRlZmluZSwgbmV3LWNhcCAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY29udGVudCwgd29ya2VyQ29uc3RydWN0b3IsIHdvcmtlck9wdGlvbnMsIHVybCkge1xuICB2YXIgZ2xvYmFsU2NvcGUgPSBzZWxmIHx8IHdpbmRvdztcblxuICB0cnkge1xuICAgIHRyeSB7XG4gICAgICB2YXIgYmxvYjtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gTmV3IEFQSVxuICAgICAgICBibG9iID0gbmV3IGdsb2JhbFNjb3BlLkJsb2IoW2NvbnRlbnRdKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gQmxvYkJ1aWxkZXIgPSBEZXByZWNhdGVkLCBidXQgd2lkZWx5IGltcGxlbWVudGVkXG4gICAgICAgIHZhciBCbG9iQnVpbGRlciA9IGdsb2JhbFNjb3BlLkJsb2JCdWlsZGVyIHx8IGdsb2JhbFNjb3BlLldlYktpdEJsb2JCdWlsZGVyIHx8IGdsb2JhbFNjb3BlLk1vekJsb2JCdWlsZGVyIHx8IGdsb2JhbFNjb3BlLk1TQmxvYkJ1aWxkZXI7XG4gICAgICAgIGJsb2IgPSBuZXcgQmxvYkJ1aWxkZXIoKTtcbiAgICAgICAgYmxvYi5hcHBlbmQoY29udGVudCk7XG4gICAgICAgIGJsb2IgPSBibG9iLmdldEJsb2IoKTtcbiAgICAgIH1cblxuICAgICAgdmFyIFVSTCA9IGdsb2JhbFNjb3BlLlVSTCB8fCBnbG9iYWxTY29wZS53ZWJraXRVUkw7XG4gICAgICB2YXIgb2JqZWN0VVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgIHZhciB3b3JrZXIgPSBuZXcgZ2xvYmFsU2NvcGVbd29ya2VyQ29uc3RydWN0b3JdKG9iamVjdFVSTCwgd29ya2VyT3B0aW9ucyk7XG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKG9iamVjdFVSTCk7XG4gICAgICByZXR1cm4gd29ya2VyO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBuZXcgZ2xvYmFsU2NvcGVbd29ya2VyQ29uc3RydWN0b3JdKFwiZGF0YTphcHBsaWNhdGlvbi9qYXZhc2NyaXB0LFwiLmNvbmNhdChlbmNvZGVVUklDb21wb25lbnQoY29udGVudCkpLCB3b3JrZXJPcHRpb25zKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIXVybCkge1xuICAgICAgdGhyb3cgRXJyb3IoXCJJbmxpbmUgd29ya2VyIGlzIG5vdCBzdXBwb3J0ZWRcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBnbG9iYWxTY29wZVt3b3JrZXJDb25zdHJ1Y3Rvcl0odXJsLCB3b3JrZXJPcHRpb25zKTtcbiAgfVxufTsiLCJmdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShyLCBhKSB7XG4gIChudWxsID09IGEgfHwgYSA+IHIubGVuZ3RoKSAmJiAoYSA9IHIubGVuZ3RoKTtcbiAgZm9yICh2YXIgZSA9IDAsIG4gPSBBcnJheShhKTsgZSA8IGE7IGUrKykgbltlXSA9IHJbZV07XG4gIHJldHVybiBuO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlMaWtlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHIpKSByZXR1cm4gcjtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FycmF5V2l0aEhvbGVzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5TGlrZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCIpO1xuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRob3V0SG9sZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKGUpIHtcbiAgaWYgKHZvaWQgMCA9PT0gZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICByZXR1cm4gZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2Fzc2VydFRoaXNJbml0aWFsaXplZCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChuLCB0LCBlLCByLCBvLCBhLCBjKSB7XG4gIHRyeSB7XG4gICAgdmFyIGkgPSBuW2FdKGMpLFxuICAgICAgdSA9IGkudmFsdWU7XG4gIH0gY2F0Y2ggKG4pIHtcbiAgICByZXR1cm4gdm9pZCBlKG4pO1xuICB9XG4gIGkuZG9uZSA/IHQodSkgOiBQcm9taXNlLnJlc29sdmUodSkudGhlbihyLCBvKTtcbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdCA9IHRoaXMsXG4gICAgICBlID0gYXJndW1lbnRzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAociwgbykge1xuICAgICAgdmFyIGEgPSBuLmFwcGx5KHQsIGUpO1xuICAgICAgZnVuY3Rpb24gX25leHQobikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoYSwgciwgbywgX25leHQsIF90aHJvdywgXCJuZXh0XCIsIG4pO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX3Rocm93KG4pIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGEsIHIsIG8sIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgbik7XG4gICAgICB9XG4gICAgICBfbmV4dCh2b2lkIDApO1xuICAgIH0pO1xuICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXN5bmNUb0dlbmVyYXRvciwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhhLCBuKSB7XG4gIGlmICghKGEgaW5zdGFuY2VvZiBuKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2NsYXNzQ2FsbENoZWNrLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKFwiLi90b1Byb3BlcnR5S2V5LmpzXCIpO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXMoZSwgcikge1xuICBmb3IgKHZhciB0ID0gMDsgdCA8IHIubGVuZ3RoOyB0KyspIHtcbiAgICB2YXIgbyA9IHJbdF07XG4gICAgby5lbnVtZXJhYmxlID0gby5lbnVtZXJhYmxlIHx8ICExLCBvLmNvbmZpZ3VyYWJsZSA9ICEwLCBcInZhbHVlXCIgaW4gbyAmJiAoby53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHRvUHJvcGVydHlLZXkoby5rZXkpLCBvKTtcbiAgfVxufVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKGUsIHIsIHQpIHtcbiAgcmV0dXJuIHIgJiYgX2RlZmluZVByb3BlcnRpZXMoZS5wcm90b3R5cGUsIHIpLCB0ICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHQpLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2NyZWF0ZUNsYXNzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKFwiLi90b1Byb3BlcnR5S2V5LmpzXCIpO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KGUsIHIsIHQpIHtcbiAgcmV0dXJuIChyID0gdG9Qcm9wZXJ0eUtleShyKSkgaW4gZSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCB7XG4gICAgdmFsdWU6IHQsXG4gICAgZW51bWVyYWJsZTogITAsXG4gICAgY29uZmlndXJhYmxlOiAhMCxcbiAgICB3cml0YWJsZTogITBcbiAgfSkgOiBlW3JdID0gdCwgZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2RlZmluZVByb3BlcnR5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKHQpIHtcbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiAodCkge1xuICAgIHJldHVybiB0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cyksIF9nZXRQcm90b3R5cGVPZih0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2dldFByb3RvdHlwZU9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4vc2V0UHJvdG90eXBlT2YuanNcIik7XG5mdW5jdGlvbiBfaW5oZXJpdHModCwgZSkge1xuICBpZiAoXCJmdW5jdGlvblwiICE9IHR5cGVvZiBlICYmIG51bGwgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGUgJiYgZS5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHQsXG4gICAgICB3cml0YWJsZTogITAsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfVxuICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogITFcbiAgfSksIGUgJiYgc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pbmhlcml0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkocikge1xuICBpZiAoXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIG51bGwgIT0gcltTeW1ib2wuaXRlcmF0b3JdIHx8IG51bGwgIT0gcltcIkBAaXRlcmF0b3JcIl0pIHJldHVybiBBcnJheS5mcm9tKHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfaXRlcmFibGVUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHtcbiAgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTtcbiAgaWYgKG51bGwgIT0gdCkge1xuICAgIHZhciBlLFxuICAgICAgbixcbiAgICAgIGksXG4gICAgICB1LFxuICAgICAgYSA9IFtdLFxuICAgICAgZiA9ICEwLFxuICAgICAgbyA9ICExO1xuICAgIHRyeSB7XG4gICAgICBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7XG4gICAgICAgIGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjtcbiAgICAgICAgZiA9ICExO1xuICAgICAgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApO1xuICAgIH0gY2F0Y2ggKHIpIHtcbiAgICAgIG8gPSAhMCwgbiA9IHI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghZiAmJiBudWxsICE9IHRbXCJyZXR1cm5cIl0gJiYgKHUgPSB0W1wicmV0dXJuXCJdKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChvKSB0aHJvdyBuO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfaXRlcmFibGVUb0FycmF5TGltaXQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVSZXN0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX25vbkl0ZXJhYmxlU3ByZWFkLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgPSByZXF1aXJlKFwiLi9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzXCIpO1xuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKGUsIHQpIHtcbiAgaWYgKG51bGwgPT0gZSkgcmV0dXJuIHt9O1xuICB2YXIgbyxcbiAgICByLFxuICAgIGkgPSBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKGUsIHQpO1xuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBuID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtcbiAgICBmb3IgKHIgPSAwOyByIDwgbi5sZW5ndGg7IHIrKykgbyA9IG5bcl0sIHQuaW5kZXhPZihvKSA+PSAwIHx8IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSwgbykgJiYgKGlbb10gPSBlW29dKTtcbiAgfVxuICByZXR1cm4gaTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UociwgZSkge1xuICBpZiAobnVsbCA9PSByKSByZXR1cm4ge307XG4gIHZhciB0ID0ge307XG4gIGZvciAodmFyIG4gaW4gcikgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwociwgbikpIHtcbiAgICBpZiAoZS5pbmRleE9mKG4pID49IDApIGNvbnRpbnVlO1xuICAgIHRbbl0gPSByW25dO1xuICB9XG4gIHJldHVybiB0O1xufVxubW9kdWxlLmV4cG9ydHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbnZhciBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQgPSByZXF1aXJlKFwiLi9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanNcIik7XG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBlKSB7XG4gIGlmIChlICYmIChcIm9iamVjdFwiID09IF90eXBlb2YoZSkgfHwgXCJmdW5jdGlvblwiID09IHR5cGVvZiBlKSkgcmV0dXJuIGU7XG4gIGlmICh2b2lkIDAgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTtcbiAgcmV0dXJuIGFzc2VydFRoaXNJbml0aWFsaXplZCh0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YodCwgZSkge1xuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fID0gZSwgdDtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX3NldFByb3RvdHlwZU9mKHQsIGUpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfc2V0UHJvdG90eXBlT2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlXaXRoSG9sZXMgPSByZXF1aXJlKFwiLi9hcnJheVdpdGhIb2xlcy5qc1wiKTtcbnZhciBpdGVyYWJsZVRvQXJyYXlMaW1pdCA9IHJlcXVpcmUoXCIuL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzXCIpO1xudmFyIHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgbm9uSXRlcmFibGVSZXN0ID0gcmVxdWlyZShcIi4vbm9uSXRlcmFibGVSZXN0LmpzXCIpO1xuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkociwgZSkge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMocikgfHwgaXRlcmFibGVUb0FycmF5TGltaXQociwgZSkgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgZSkgfHwgbm9uSXRlcmFibGVSZXN0KCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9zbGljZWRUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5V2l0aG91dEhvbGVzID0gcmVxdWlyZShcIi4vYXJyYXlXaXRob3V0SG9sZXMuanNcIik7XG52YXIgaXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vaXRlcmFibGVUb0FycmF5LmpzXCIpO1xudmFyIHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgbm9uSXRlcmFibGVTcHJlYWQgPSByZXF1aXJlKFwiLi9ub25JdGVyYWJsZVNwcmVhZC5qc1wiKTtcbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShyKSB7XG4gIHJldHVybiBhcnJheVdpdGhvdXRIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXkocikgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkocikgfHwgbm9uSXRlcmFibGVTcHJlYWQoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3RvQ29uc3VtYWJsZUFycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xuZnVuY3Rpb24gdG9QcmltaXRpdmUodCwgcikge1xuICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDtcbiAgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XG4gIGlmICh2b2lkIDAgIT09IGUpIHtcbiAgICB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTtcbiAgICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7XG4gIH1cbiAgcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gdG9QcmltaXRpdmUsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCIuL3R5cGVvZi5qc1wiKVtcImRlZmF1bHRcIl07XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKFwiLi90b1ByaW1pdGl2ZS5qc1wiKTtcbmZ1bmN0aW9uIHRvUHJvcGVydHlLZXkodCkge1xuICB2YXIgaSA9IHRvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpO1xuICByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiO1xufVxubW9kdWxlLmV4cG9ydHMgPSB0b1Byb3BlcnR5S2V5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX3R5cGVvZihvKSB7XG4gIFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjtcblxuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvO1xuICB9IDogZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbztcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX3R5cGVvZihvKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheUxpa2VUb0FycmF5ID0gcmVxdWlyZShcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiKTtcbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBhKSB7XG4gIGlmIChyKSB7XG4gICAgaWYgKFwic3RyaW5nXCIgPT0gdHlwZW9mIHIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIsIGEpO1xuICAgIHZhciB0ID0ge30udG9TdHJpbmcuY2FsbChyKS5zbGljZSg4LCAtMSk7XG4gICAgcmV0dXJuIFwiT2JqZWN0XCIgPT09IHQgJiYgci5jb25zdHJ1Y3RvciAmJiAodCA9IHIuY29uc3RydWN0b3IubmFtZSksIFwiTWFwXCIgPT09IHQgfHwgXCJTZXRcIiA9PT0gdCA/IEFycmF5LmZyb20ocikgOiBcIkFyZ3VtZW50c1wiID09PSB0IHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpID8gYXJyYXlMaWtlVG9BcnJheShyLCBhKSA6IHZvaWQgMDtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBDaGFubmVscyBmcm9tICcuL0NoYW5uZWxzJztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi9DaGFubmVsU3RhdGUnO1xuXG5leHBvcnQge1xuICBTREssXG4gIENoYW5uZWxzLFxuICBDaGFubmVsU3RhdGVcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgU0RLLFxuICBDaGFubmVscyxcbiAgQ2hhbm5lbFN0YXRlXG59OyJdLCJuYW1lcyI6WyJHbG9iYWxTY29wZSIsIkRpc3Bvc2FibGUiLCJEaXNwb3NhYmxlTGlzdCIsIlN1YmplY3QiLCJSZWFkT25seVN1YmplY3QiLCJ2aXNpYmlsaXR5Q2hhbmdlRXZlbnQiLCJBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsIl9jbGFzc0NhbGxDaGVjayIsIl9kZWZpbmVQcm9wZXJ0eSIsIkRhdGUiLCJub3ciLCJfaXNGb3JlZ3JvdW5kIiwiX3JlYWRPbmx5SXNGb3JlZ3JvdW5kIiwiaW5pdGlhbGl6ZSIsIl9jcmVhdGVDbGFzcyIsImtleSIsImdldCIsInZhbHVlIiwiZ2V0VGltZVNpbmNlTGFzdENoYW5nZSIsIl90aW1lT2ZMYXN0VGFiRm9jdXNDaGFuZ2UiLCJkaXNwb3NlIiwiX2Rpc3Bvc2FibGVzIiwiX3RoaXMiLCJoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlIiwiZG9jdW1lbnRJc0hpZGRlbiIsInVzZUV2ZW50Q2FwdHVyZVBoYXNlIiwiYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyIiwiYWRkIiwicmVtb3ZlRG9jdW1lbnRFdmVudExpc3RlbmVyIiwiZGVmYXVsdCIsIkJyb3dzZXJEZXRlY3RvciIsIl9icm93c2VyTmFtZUFuZFZlcnNpb24iLCJfYnJvd3Nlck5hbWUiLCJfYnJvd3Nlck1ham9yVmVyc2lvbiIsIl9pc0FuZHJvaWQiLCJfaXNDaHJvbWU2OSIsIl9pc0Nocm9tZTcwIiwiX2lzQ2hyb21lNzEiLCJfaXNDaHJvbWU3MiIsIl9pc0Nocm9tZTc0IiwiX2lzQ2hyb21lNzUiLCJfaXNDaHJvbWU3NiIsIl9pc0Nocm9tZTc3IiwiaXNNb2JpbGUiLCJfaXNNb2JpbGUiLCJwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsImJyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIm1hdGNoIiwiX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4IiwicGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSIsInBhcnNlQnJvd3Nlck5hbWUiLCJicm93c2VyTmFtZUxpc3QiLCJzcGxpdCIsInBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbiIsImJyb3dzZXJWZXJzaW9uTGlzdCIsImZ1bGxWZXJzaW9uIiwiTnVtYmVyIiwibXNpZSIsImluZGV4T2YiLCJjb25jYXQiLCJwYXJzZUludCIsInN1YnN0cmluZyIsInRyaWRlbnQiLCJ2ZXJzaW9uIiwiX0Jyb3dzZXJEZXRlY3RvciIsInRlc3QiLCJfbmF2aWdhdG9yIiwiX25hdmlnYXRvcjIiLCJpbmNsdWRlcyIsIlRlbGVtZXRyeUxldmVsTWFwcGluZyIsIlRlbGVtZXRyeURlZmF1bHQiLCJMb2dnaW5nTGV2ZWxNYXBwaW5nIiwiTG9nZ2VyRGVmYXVsdHMiLCJQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIiLCJnZXRTdHJpbmdWYWx1ZSIsIm5hbWUiLCJkZWZhdWx0U3RyaW5nVmFsdWUiLCJnZXRCb29sZWFuVmFsdWUiLCJkZWZhdWx0Qm9vbGVhblZhbHVlIiwiY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUiLCJkZWZhdWx0VGVsZW1ldHJ5TGV2ZWwiLCJjb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlIiwiZGVmYXVsdExvZ2dpbmdMZXZlbCIsImRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsIiwiZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbCIsIkZlYXR1cmVFbmFibGVtZW50IiwiR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIiLCJFcnJvciIsImZvcmNlR2FyYmFnZUNvbGxlY3Rpb24iLCJpc0ZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb25TdXBwb3J0ZWQiLCJmb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uIiwiaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCIsInF1ZXVlTWljcm90YXNrIiwib3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uIiwiYmluZCIsInNldFRpbWVvdXQiLCJpbWciLCJkb2N1bWVudENyZWF0ZUVsZW1lbnQiLCJzcmMiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJCbG9iIiwiQXJyYXlCdWZmZXIiLCJvbmVycm9yIiwicmV2b2tlT2JqZWN0VVJMIiwiTmV0d29ya01vbml0b3IiLCJuYXZpZ2F0b3JDb25uZWN0aW9uIiwidW5kZWZpbmVkIiwiaXNTdXBwb3J0ZWQiLCJzZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMiLCJ1cGRhdGVTdGF0aXN0aWNzIiwiX2lzU3VwcG9ydGVkIiwiX3J0dCIsIl9lZmZlY3RpdmVUeXBlIiwiX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJfcmVmIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hMiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTMiLCJkb3dubGluayIsImRvd25saW5rTWF4IiwiZ2V0RWZmZWN0aXZlVHlwZSIsIl9yZWYyIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNCIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTUiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE2IiwiZWZmZWN0aXZlVHlwZSIsInR5cGUiLCJnZXRSb3VuZFRyaXBUaW1lIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNyIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTgiLCJydHQiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE5IiwibGlzdGVuZXIiLCJhZGRFdmVudExpc3RlbmVyIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hMCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJNZXRyaWNzVHlwZSIsIk1ldHJpY1R5cGUiLCJEdXJhdGlvbnMiLCJTREsiLCJMb2dnZXJGYWN0b3J5IiwiU3RyZWFtU2V0dXBMaXN0ZW5lciIsInBhZ2VMb2FkVGltZSIsImdldExvZ2dlciIsIm1ldHJpY3NTZXJ2aWNlIiwiX3N0YXJ0VGltZSIsIl9wYWdlTG9hZFRpbWUiLCJzdWNjZXNzIiwic3RyZWFtSWQiLCJyZWNvcmRTdHJlYW1NZXRyaWMiLCJTZXR1cENvbXBsZXRlZCIsImZhaWwiLCJTZXR1cEZhaWxlZCIsIm1ldHJpY1R5cGUiLCJfbWV0cmljU3VibWl0dGVkIiwic2V0dXBUaW1lIiwibWV0cmljTmFtZSIsImdldE5hbWUiLCJwdXNoIiwicnVudGltZSIsInVpbnQ2NCIsIl9sb2dnZXIiLCJpbmZvIiwidG9Jc29TdHJpbmciLCJFZGdlVG9rZW4iLCJlZGdlQXV0aFRva2VuUHJlZml4IiwiRWRnZUF1dGhQYXJzZXIiLCJwYXJzZVRva2VuIiwidG9rZW4iLCJpc0VuY29kZWRFZGdlVG9rZW5WYWxpZCIsImVycm9yIiwiZGVjb2RlZFRva2VuIiwiYXRvYiIsInN1YnN0ciIsImxlbmd0aCIsImVkZ2VUb2tlbiIsIkpTT04iLCJwYXJzZSIsImUiLCJzdGFydHNXaXRoIiwiX2VkZ2VUb2tlbiR0b2tlbiIsIl9lZGdlVG9rZW4kdG9rZW4yIiwiX2FwcGxpY2F0aW9uSWQiLCJhcHBsaWNhdGlvbklkIiwiX3Rva2VuIiwidXJpIiwiY2FwYWJpbGl0aWVzIiwiQnVpbGRGZWF0dXJlcyIsIl9zZW5kTG9jYWxDYW5kaWRhdGVzIiwiX3NlbmRMb2dzIiwiX3NlbmRNZXRyaWNzIiwiX2xvZ1RvQ29uc29sZSIsImFwcGx5RmVhdHVyZXMiLCJmZWF0dXJlcyIsIl9fRkVBVFVSRVNfXyIsInNlbmRMb2NhbENhbmRpZGF0ZXMiLCJzZW5kTG9ncyIsInNlbmRNZXRyaWNzIiwibG9nVG9Db25zb2xlIiwiaXNDaHJvbWU3NCIsImlzQ2hyb21lNzUiLCJpc0Nocm9tZTc2IiwiaXNDaHJvbWU3NyIsImFkZFRyYW5jZWl2ZXJEaXNhYmxlZCIsImlzQ2hyb21lNjkiLCJpc0Nocm9tZTcwIiwiaXNDaHJvbWU3MSIsImlzQ2hyb21lNzIiLCJicm93c2VyTmFtZSIsImJyb3dzZXJNYWpvclZlcnNpb24iLCJfR2xvYmFsU2NvcGUkdmFsdWUiLCJNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yIiwiTWVkaWFTdHJlYW1UcmFja0dlbmVyYXRvciIsIlJUQ1J0cFJlY2VpdmVyIiwicHJvdG90eXBlIiwiY3JlYXRlRW5jb2RlZFN0cmVhbXMiLCJSVENSdHBTY3JpcHRUcmFuc2Zvcm0iLCJfR2xvYmFsU2NvcGUkdmFsdWUyIiwiSFRNTFZpZGVvRWxlbWVudCIsInJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2siLCJpc1JlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2tTdXBwb3J0ZWQiLCJpc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCIsImlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkIiwiUGFyYW1ldGVycyIsIl9kaXNjb3ZlcnlQYXJhbWV0ZXJzIiwiYXBwbHlQYXJhbWV0ZXJzIiwicGFyYW1ldGVycyIsIl9fUEFSQU1FVEVSU19fIiwiZGlzY292ZXJ5IiwiaW50ZW50aW9ucyIsImJyb3dzZXJHbG9iYWxTY29wZSIsImRvY3VtZW50IiwibG9jYXRpb24iLCJ3aW5kb3ciLCJnbG9iYWxTY29wZSIsIl9kb2N1bWVudCIsIl9sb2NhdGlvbiIsIl93aW5kb3ciLCJGb3JtRGF0YSIsIk1lZGlhU3RyZWFtIiwiTWVkaWFTdHJlYW1UcmFjayIsIk1lZGlhU291cmNlIiwiUlRDUGVlckNvbm5lY3Rpb24iLCJSVENTZXNzaW9uRGVzY3JpcHRpb24iLCJSVENJY2VDYW5kaWRhdGUiLCJVUkxTZWFyY2hQYXJhbXMiLCJjbGVhckludGVydmFsIiwiY2xlYXJUaW1lb3V0IiwiY3JlYXRlRWxlbWVudCIsImhhc0ZvY3VzIiwiaGlkZGVuIiwicXVlcnlTZWxlY3RvciIsImZldGNoIiwiaG9zdG5hbWUiLCJzZWFyY2giLCJjb25uZWN0aW9uIiwib25MaW5lIiwic2V0SW50ZXJ2YWwiLCJzZXRJbnN0YW5jZSIsInByb3ZpZGVkR2xvYmFsU2NvcGUiLCJnZXRJbnN0YW5jZSIsIl9yZWFkT25seUluc3RhbmNlIiwic3Vic2NyaWJlIiwiY2FsbGJhY2siLCJfR2xvYmFsU2NvcGUiLCJfaW5zdGFuY2UiLCJkaXNwb3NhYmxlIiwiX2Rpc3Bvc2VkIiwiX2Rpc3Bvc2FibGUiLCJjYWxsIiwiX2xpc3QiLCJmb3JFYWNoIiwidG9TdHJpbmciLCJtYXhEaWdpdHNJbkZsb2F0QWZ0ZXJEb3QiLCJOdW1iZXJzIiwiY291bnROdW1iZXJMZW5ndGgiLCJpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlIiwibnVtYmVyIiwiY291bnREaWdpdHNCZWZvcmVEZWNpbWFsIiwiTWF0aCIsImZsb29yIiwiY291bnREaWdpdHNBZnRlckRlY2ltYWwiLCJmaXhSb3VuZGluZyIsInByZWNpc2lvbiIsInBvd2VyIiwicG93Iiwicm91bmQiLCJkaWdpdHNCZWZvcmVEZWNpbWFsIiwib3JpZ2luYWxWYWx1ZSIsIm1vZGlmaWVkVmFsdWUiLCJjb3VudCIsIlN0cmluZ3MiLCJyYW5kb20iLCJyYW5kb20xM0NoYXJhY3RlcnMiLCJsb29wcyIsImNlaWwiLCJBcnJheSIsImZpbGwiLCJyZWR1Y2UiLCJzdHJpbmciLCJmdW5jIiwiYXNzZXJ0VW5yZWFjaGFibGUiLCJ4IiwiQXBwZW5kZXJzIiwiX2FwcGVuZGVycyIsImFwcGVuZGVyIiwicmVtb3ZlIiwiaXRlbXMiLCJpdGVtIiwiTG9nZ2luZ0xldmVsIiwiQ29uc29sZUFwcGVuZGVyIiwidGhyZXNob2xkIiwiX3RocmVzaG9sZCIsImxvZyIsImxvZ0xldmVsIiwibWVzc2FnZSIsImNhdGVnb3J5IiwiZGF0ZSIsImZ1bGxNZXNzYWdlIiwidG9JU09TdHJpbmciLCJXYXJuIiwiY29uc29sZSIsIkxvZ2dlciIsImFwcGVuZGVycyIsIl9jYXRlZ29yeSIsInRyYWNlIiwiVHJhY2UiLCJfbGVuIiwiYXJndW1lbnRzIiwiYXJncyIsIl9rZXkiLCJkZWJ1ZyIsIkRlYnVnIiwiX2xlbjIiLCJfa2V5MiIsIkluZm8iLCJfbGVuMyIsIl9rZXkzIiwid2FybiIsIl9sZW40IiwiX2tleTQiLCJfbGVuNSIsIl9rZXk1IiwiZmF0YWwiLCJGYXRhbCIsIl9sZW42IiwiX2tleTYiLCJsZXZlbCIsInJlcGxhY2VQbGFjZWhvbGRlcnMiLCJfdGhpczIiLCJyZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nIiwiaW5kZXgiLCJyZXBsYWNlQXJndW1lbnQiLCJzcGxpY2UiLCJzdHJpbmdpZnkiLCJhY2N1bXVsYXRvciIsImN1cnJlbnRWYWx1ZSIsImFycmF5IiwiZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UiLCJzdGFjayIsImFyZyIsImNhY2hlIiwiXyIsIk9iamVjdCIsImFyZ3VtZW50IiwiZGF0YSIsInRvU3RyaW5nU3RyIiwiTG9nZ2luZ1RocmVzaG9sZCIsIlRlbGVtZXRyeUFwcGVuZGVyIiwiVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsIkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIiLCJfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsImxvZ2dlciIsIl9sb2dnZXJzIiwiYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5TG9nZ2luZ0xldmVsIiwiYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbCIsImFwcGx5Q29uc29sZUxvZ2dlciIsImFwcGx5VGVsZW1ldHJ5TG9nZ2VyIiwicGFyYW1ldGVyVmFsdWUiLCJzZXRUaHJlc2hvbGQiLCJhcHBseUFwcGVuZGVyIiwibG9nZ2luZ0xldmVsIiwiT2ZmIiwiQWxsIiwiY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbCIsImxvZ2dpbmdMZXZlbFR5cGUiLCJUZWxlbWV0cnlMZXZlbCIsIm1ldHJpY3MiLCJfbWV0cmljcyIsImdldFRlbGVtZXRyeUxldmVsIiwiVGltZVRvRmlyc3RGcmFtZSIsIkVzc2VudGlhbCIsIkNoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUiLCJTdGFsbGVkIiwiQnVmZmVyaW5nIiwiUm91bmRUcmlwVGltZSIsIkRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiTmV0d29ya1R5cGUiLCJSZXNvbHV0aW9uQ2hhbmdlZCIsIkFwcGxpY2F0aW9uRm9yZWdyb3VuZCIsIkFwcGxpY2F0aW9uQmFja2dyb3VuZCIsIk1ldHJpY3NDb25maWd1cmF0aW9uIiwiX3VybCIsInNldCIsInVybCIsIm1ldHJpY3NVcmwiLCJwYXRobmFtZSIsIl9lbnZpcm9ubWVudCIsImVudmlyb25tZW50IiwiX3RlbmFuY3kiLCJ0ZW5hbmN5IiwiX3Nlc3Npb25JZCIsInNlc3Npb25JZCIsIk1ldHJpY3NTZXJ2aWNlIiwiVGVsZW1ldHJ5VXJsIiwiRW52aXJvbm1lbnQiLCJNZXRyaWNzRmFjdG9yeSIsImdldE1ldHJpY3NTZXJ2aWNlIiwiX3R5cGVvZiIsIm1ldHJpY3NTZXJ2aWNlcyIsIl9tZXRyaWNzU2VydmljZXMiLCJtZXRyaWNzQ29uZmlndXJhdGlvbiIsImNsaWVudFNlc3Npb25JZCIsImdldFRlbGVtZXRyeVVybCIsImdldEVudmlyb25tZW50RnJvbVVybCIsImNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsIiwidGVsZW1ldHJ5TGV2ZWwiLCJzZXRUZWxlbWV0cnlMZXZlbCIsInZhbHVlcyIsInQiLCJyIiwiU3ltYm9sIiwibiIsIml0ZXJhdG9yIiwibyIsInRvU3RyaW5nVGFnIiwiaSIsImMiLCJHZW5lcmF0b3IiLCJ1IiwiY3JlYXRlIiwiX3JlZ2VuZXJhdG9yRGVmaW5lMiIsImYiLCJwIiwieSIsIkciLCJ2IiwiYSIsImQiLCJsIiwiVHlwZUVycm9yIiwiZG9uZSIsInJldHVybiIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJnZXRQcm90b3R5cGVPZiIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiZGlzcGxheU5hbWUiLCJfcmVnZW5lcmF0b3IiLCJ3IiwibSIsImRlZmluZVByb3BlcnR5IiwiX3JlZ2VuZXJhdG9yRGVmaW5lIiwiX2ludm9rZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIkV4cG9uZW50aWFsQmFja29mZiIsIlZlcnNpb25NYW5hZ2VyIiwicmVxdWVzdFNpemVMaW1pdCIsIm1heEJ1ZmZlcmVkUmVjb3JkcyIsIl9tZXRyaWNzQ29uZmlndXJhdGlvbiIsIl9leHBvbmVudGlhbEJhY2tvZmYiLCJnZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlIiwidGhlbiIsImxvY2F0aW9uSG9zdG5hbWUiLCJfZG9tYWluIiwibWV0cmljIiwicHJldmlvdXNWYWx1ZSIsInJlc291cmNlIiwia2luZCIsIm1ldHJpY1JlY29yZCIsInRpbWVzdGFtcCIsImZ1bGxRdWFsaWZpZWROYW1lIiwic2RrVmVyc2lvbiIsImlnbm9yZWQiLCJzZW5kTWV0cmljc0lmQWJsZSIsIlByb21pc2UiLCJyZXNvbHZlTG9jYXRpb25Ib3N0bmFtZSIsImdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfY2FsbGVlIiwibWV0cmljc01lc3NhZ2VzIiwiZm9ybURhdGEiLCJfY29udGV4dCIsImFwcGVuZCIsInJlY29yZHMiLCJtZXRob2QiLCJib2R5IiwiX3giLCJhcHBseSIsIl9zZW5kTWV0cmljc0lmQWJsZSIsIl9jYWxsZWUyIiwiX2NvbnRleHQyIiwiX2lzU2VuZGluZyIsInNsaWNlIiwicmVzcG9uc2UiLCJpc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZSIsIl9mYWlsdXJlQ291bnQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJnZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50IiwiY2F0Y2giLCJzdGF0dXMiLCJ0ZWxlbWV0cnlMZXZlbFR5cGUiLCJQcm9taXNlSGFuZGxlciIsIl9zdGF0ZSIsIl9oYW5kbGVkIiwiX3ZhbHVlIiwiX2RlZmVycmVkcyIsImRvUmVzb2x2ZSIsInByb21pc2VSZXNvbHZlIiwicmVhc29uIiwicHJvbWlzZVJlamVjdCIsIm5ld1ZhbHVlIiwicHJvbWlzZSIsImZpbmFsZSIsIl9pbW1lZGlhdGUiLCJfdW5oYW5kbGVkUmVqZWN0aW9uIiwibGVuIiwiaGFuZGxlIiwiZGVmZXJyZWQiLCJvbkZ1bGZpbGxlZCIsIm9uUmVqZWN0ZWQiLCJyZXN1bHQiLCJhbGwiLCJhcnIiLCJyZXNvbHZlIiwicmVqZWN0IiwiaXNBcnJheSIsInJlbWFpbmluZyIsIm1hbmFnZVJlc3BvbnNlIiwiY29uc3RydWN0b3IiLCJyYWNlIiwiVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSIsIkVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsImRlZmF1bHRUcmFja0tpbmRzIiwiUGVlckNvbm5lY3Rpb25TZXJ2aWNlIiwiX3BlZXJDb25uZWN0aW9uRmFjdG9yeSIsImluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmciLCJpc1ByZWNhY2hpbmdFbmFibGVkIiwicHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX3ByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jYWNoZWQiLCJkaXJlY3Rpb24iLCJwZWVyQ29ubmVjdGlvbiIsImNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jYWxsZWUzIiwidHJhY2tLaW5kcyIsImVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsImNvbmZpZ3VyYXRpb24iLCJfYXJnczMiLCJfY29udGV4dDMiLCJEaXNhYmxlZCIsImlzVHJhY2tzS2luZHNFcXVpdmFsZW50VG9EZWZhdWx0IiwiRW5hYmxlZCIsImNyZWF0ZVBlZXJDb25uZWN0aW9uIiwic3VwcG9ydHNBZGRUcmFuc2NlaXZlciIsImF1ZGlvVHJhbnNjZWl2ZXJzIiwidmlkZW9UcmFuc2NlaXZlcnMiLCJvcHRpb25zIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJfdDUiLCJfdDYiLCJhZGRUcmFuc2NlaXZlciIsImNyZWF0ZU9mZmVyIiwibG9jYWxPZmZlciIsIm9mZmVyVG9SZWNlaXZlQXVkaW8iLCJvZmZlclRvUmVjZWl2ZVZpZGVvIiwidHJhY2tzS2luZHMiLCJjb3VudFRyYWNrS2luZHMiLCJ0cmFja0tpbmRDb3VudCIsImF1ZGlvIiwidmlkZW8iLCJjb3VudGVkVHJhY2tLaW5kcyIsImNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcyIsIlJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIiwidHJ1bmNhdGVJY2VTZXJ2ZXJzIiwiaWNlU2VydmVycyIsInVybHMiLCJ1c2VybmFtZSIsImNyZWRlbnRpYWwiLCJTZHBQYXJzZXIiLCJ1cGRhdGVTdGF0aXN0aWNUaW1lb3V0IiwiUnRjQ29ubmVjdGlvbk1vbml0b3IiLCJtZWRpYVN0cmVhbSIsImVzdGltYXRlZFJvdW5kVHJpcFRpbWUiLCJfcGVlckNvbm5lY3Rpb24iLCJfZXN0aW1hdGVkUm91bmRUcmlwVGltZSIsIl90cmFja3NUb01vbml0b3IiLCJnZXRUcmFja3MiLCJtYXAiLCJ0cmFjayIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjIiLCJnZXRDdXJyZW50T2ZmZXJEaXNhYmxlZCIsImN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiIsInNkcCIsInBhcnNlZFNEUCIsIl9lc3RpbWF0ZWRBdWRpb0NvZGVjIiwiYXVkaW9Db2RlYyIsIl9lc3RpbWF0ZWRWaWRlb0NvZGVjIiwidmlkZW9Db2RlYyIsInVwZGF0ZVN0YXRpc3RpYyIsIl9ydGNTdGF0aXN0aWMiLCJfaXNNb25pdG9yUnVubmluZyIsIl91cGRhdGVUaW1lb3V0IiwiX3VwZGF0ZVN0YXRpc3RpYyIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjMiLCJfaWdub3JlZCIsImdldEtpbmRGb3JTYWZhcmkxMSIsImdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQiLCJ1cGRhdGVTdGF0aXN0aWNMZWdhY3kiLCJpZCIsImdldFN0YXRzIiwic3RhdHMiLCJydGNTdGF0aXN0aWNzIiwicm91bmRUcmlwVGltZSIsImxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCIsInJlcG9ydCIsImN1cnJlbnRSb3VuZFRyaXBUaW1lIiwibWVkaWFUeXBlIiwiY29kZWMiLCJjb2RlY0lkIiwibWltZVR5cGUiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHYiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHYyIiwiX3RoaXMkX3J0Y1N0YXRpc3RpYyR2MyIsIl90aGlzJF9ydGNTdGF0aXN0aWMkdjQiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHY1IiwiX3RoaXMkX3J0Y1N0YXRpc3RpYyR2NiIsIl90aGlzJF9ydGNTdGF0aXN0aWMkdjciLCJieXRlcyIsImJ5dGVzUmVjZWl2ZWQiLCJwcmV2aW91c0J5dGVzUmVjZWl2ZWQiLCJieXRlc0RlbHRhIiwidGltZURlbHRhIiwiYml0cmF0ZSIsInNzcmMiLCJwYWNrZXRzTG9zdCIsInBhY2tldHNSZWNlaXZlZCIsImdldENvZGVjQnlUeXBlIiwiZnJhbWVzRGVjb2RlZCIsImZwcyIsIl91cGRhdGVTdGF0aXN0aWNMZWdhY3kiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb240IiwiZ2V0U3RhdHNMZWdhY3kiLCJuYW1lcyIsInN0YXQiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQyIiwiX3NkcCIsInNkcFNwbGl0QnlMaW5lcyIsInNkcFNwbGl0QnlUcmFja3MiLCJfYXVkaW9Db2RlYyIsImFwcGx5Q29kZWMiLCJfdmlkZW9Db2RlYyIsIl9pc0F1ZGlvVHJhY2tFbmFibGVkIiwiaXNUcmFja0J5VHlwZUVuYWJsZWQiLCJfaXNWaWRlb1RyYWNrRW5hYmxlZCIsInNkcFNlY3Rpb25Gb3JUeXBlIiwiZmluZCIsInNkcFRyYWNrIiwiX3NkcFNwbGl0QnlMaW5lcyRmaW5kIiwicnRtYXAiLCJzZHBMaW5lIiwidXNlZENvZGVjTGluZSIsInVzZWRDb2RlYyIsImNvZGVjTmFtZSIsIlZhbmlsbGFQZWVyQ29ubmVjdGlvbiIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uIiwiY3VycmVudExvY2FsRGVzY3JpcHRpb24iLCJjb25uZWN0aW9uU3RhdGUiLCJpY2VDb25uZWN0aW9uU3RhdGUiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb241IiwiZ2V0Q29uZmlndXJhdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjYiLCJzZXRDb25maWd1cmF0aW9uIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNyIsImdldFRyYW5zY2VpdmVyc0Rpc2FibGVkIiwiZ2V0VHJhbnNjZWl2ZXJzIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uOCIsIl9jcmVhdGVPZmZlciIsInByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkIiwiX2NyZWF0ZUFuc3dlciIsImNyZWF0ZUFuc3dlciIsIl94MiIsIl9zZXRMb2NhbERlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb24iLCJzZXRMb2NhbERlc2NyaXB0aW9uIiwiX3gzIiwiX3NldFJlbW90ZURlc2NyaXB0aW9uIiwiX2NhbGxlZTQiLCJfZGVzY3JpcHRpb24kc2RwIiwiaGFzQ3J5cHRvIiwiX2NvbnRleHQ0Iiwic2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfeDQiLCJnZXRTZW5kZXJzIiwiZ2V0UmVjZWl2ZXJzIiwic2VsZWN0b3IiLCJfdGhpczMiLCJhZGRTdHJlYW0iLCJfdGhpczQiLCJhZGRUcmFjayIsIm9udHJhY2siLCJoYW5kbGVyIiwib25pY2VjYW5kaWRhdGUiLCJvbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSIsIm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlIiwiY2xvc2UiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb245IiwiX2NyZWF0ZVBlZXJDb25uZWN0aW9uIiwicmVzb2x2ZVBlZXJDb25uZWN0aW9uUHJvbWlzZSIsInN1YmplY3QiLCJfc3ViamVjdCIsIkRpc3Bvc2FibGVMaXN0ZW5lciIsIl9EaXNwb3NhYmxlIiwibGlzdGVuZXJzIiwiX2NhbGxTdXBlciIsImlkeCIsIl9pbmhlcml0cyIsIl9saXN0ZW5lcnMiLCJjaGFuZ2VkIiwiY29tcGFyYWJsZSIsImVxdWFscyIsIl9pIiwiX2FyciIsImJhc2VVUkwiLCJvcmlnaW4iLCJEaXNjb3ZlcnlVcmkiLCJfR2xvYmFsU2NvcGUkZ2V0SW5zdGEiLCJfY2xpZW50U2Vzc2lvbklkIiwiX2xvYWRlZFRpbWVzdGFtcCIsIl9yZWFkT25seUluaXRpYWxpemVkIiwiX3JlYWRPbmx5RGlzY292ZXJ5VXJpIiwiX3JlYWRPbmx5UGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSIsIl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24iLCJfYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSIsIl9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSIsIl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0IiwiX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyIsIl93ZWJQbGF5ZXJMb2FkZXIiLCJfc2hha2FQbGF5ZXJMb2FkZXIiLCJfaGxzSnNMb2FkZXIiLCJfbWV0cmljc1NlcnZpY2UiLCJfYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJfdGVsZW1ldHJ5VXJsIiwiX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJyZXRyaWVzQW1vdW50IiwiX3RlbGVtZXRyeUxldmVsIiwiYXBwbHlUZWxlbWV0cnlDb25maWd1cmF0aW9uIiwidGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsImlnbm9yZWRFbnZpcm9ubWVudCIsImlnbm9yZWREaXNjb3ZlcnlVcmkiLCJ0ZWxlbWV0cnlVcmwiLCJ0ZWxlbWV0cnlBcHBlbmRlciIsImlnbm9yZWRUZW5hbmN5IiwiYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbiIsImlnbm9yZWRUZWxlbWV0cnlMZXZlbCIsImFwcGx5QXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseUF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbkZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlGb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseVNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlc0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlEaXNjb3ZlcnlVcmlEZWZhdWx0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJkaXNjb3ZlcnlVcmkiLCJjaGFubmVsVG9rZW4iLCJ1cmlWYWx1ZSIsImJhc2VVUklWYWx1ZSIsIm9uTG9hZCIsIl9pbml0aWFsaXplZCIsImFkZFdpbmRvd0V2ZW50TGlzdGVuZXIiLCJpbml0Iiwib3B0aW9uc1dpdGhPcHRpb25hbGdsb2JhbFNjb3BlIiwicGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiY29uc29sZUxvZ2dpbmdMZXZlbCIsImNvbnNvbGVBcHBlbmRlciIsImF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0iLCJhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSIsIndlYlBsYXllckxvYWRlciIsInNoYWthUGxheWVyTG9hZGVyIiwiaGxzSnNMb2FkZXIiLCJfdGhpcyRfYXBwbGljYXRpb25BY3QiLCJfU0RLIiwic2VnbWVudHMiLCJwcm90b2NvbCIsInVuc2hpZnQiLCJlbmRzV2l0aCIsImpvaW4iLCJCaXRyYXRlU3RhdGUiLCJCaXRyYXRlTW9kZSIsIkRpbWVuc2lvbiIsIkNoYW5uZWxTdGF0ZSIsIlZpZGVvVGVsZW1ldHJ5IiwiU2Vzc2lvblRlbGVtZXRyeSIsIlRva2VuQ29udGV4dCIsIkNoYW5uZWxDb250ZXh0IiwiRW5jb2RlZFN0cmVhbVNpbmsiLCJTdHJlYW1UcmFja1RyYW5zZm9ybSIsIlN0cmVhbVRyYW5zZm9ybUNvbnRleHQiLCJQZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJTdGF0ZUNvbnRleHQiLCJGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCIsIlN0cmVhbUZhY3RvcnkiLCJEaXNjb3ZlcnkiLCJkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24iLCJmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsInN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsIkNoYW5uZWwiLCJ2aWRlb0VsZW1lbnQiLCJjaGFubmVsQ29udGV4dE9wdGlvbnMiLCJ0YXJnZXRMYWciLCJvblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrIiwib25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2siLCJzdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9ucyIsImhhc0luc2VydGFibGVTdHJlYW1zIiwiaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zIiwidmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayIsImF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2siLCJlbmNvZGVkVmlkZW9TdHJlYW1TaW5rIiwiZW5jb2RlZEF1ZGlvU3RyZWFtU2luayIsIl90b2tlbkNvbnRleHQiLCJfY2hhbm5lbENvbnRleHQiLCJfcGVlckNvbm5lY3Rpb25Db250ZXh0IiwiX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQiLCJfc3RhdGVDb250ZXh0IiwiX2NoYW5uZWxTdGFydFRpbWUiLCJfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbiIsIl9yZWFkT25seVN0YXRlIiwic3RhdGUiLCJfcmVhZE9ubHlFeGlzdHMiLCJleGlzdHMiLCJfcmVhZE9ubHlBdXRvTXV0ZWQiLCJhdXRvTXV0ZWQiLCJfcmVhZE9ubHlBdXRvUGF1c2VkIiwiYXV0b1BhdXNlZCIsIl9yZWFkT25seVRva2VuRXhwaXJpbmciLCJ0b2tlbkV4cGlyaW5nIiwiX3JlYWRPbmx5QXV0aG9yaXplZCIsImF1dGhvcml6ZWQiLCJfcmVhZE9ubHlPbmxpbmUiLCJvbmxpbmUiLCJfcmVhZE9ubHlMb2FkaW5nIiwibG9hZGluZyIsIl9yZWFkT25seVBsYXlpbmciLCJwbGF5aW5nIiwiX3JlYWRPbmx5U3RhbmRieSIsInN0YW5kYnkiLCJfcmVhZE9ubHlTdG9wcGVkIiwic3RvcHBlZCIsIl9yZWFkT25seVRhcmdldExhZyIsIl9yZWFkT25seUxhZyIsImxhZyIsIl9yZWFkT25seUJpdHJhdGVMaW1pdCIsImJpdHJhdGVMaW1pdCIsIl9yZWFkT25seVJlc29sdXRpb24iLCJyZXNvbHV0aW9uIiwiX3JlYWRPbmx5RmFpbHVyZUNvdW50IiwiZmFpbHVyZUNvdW50IiwiX3JlYWRPbmx5RW5kUG9pbnQiLCJlbmRQb2ludCIsIl9yZWFkT25seVN0cmVhbSIsInN0cmVhbSIsIl9yZWFkT25seVJ0Y1N0YXRpc3RpY3MiLCJfcmVhZE9ubHlNZWRpYVN0cmVhbSIsIl9zZXNzaW9uVGVsZW1ldHJ5IiwiY2hhbm5lbERpc3Bvc2FibGVzIiwiX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlciIsImhhbmRsZVZpZGVvTWV0YURhdGFDaGFuZ2VkIiwiX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0IiwiY29uZmlndXJlRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsIl9yZWFkT25seUlzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkVuYWJsZWQiLCJpc0VuYWJsZWQiLCJfcmVhZE9ubHlEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsImRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwiX3JlYWRPbmx5UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwicmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwicmVuZGVyZXJEaXNwb3NhYmxlcyIsInZpZGVvVGVsZW1ldHJ5IiwiZGF0YXNldCIsInNldHVwTGlzdGVuZXJGb3JUaW1lVG9GaXJzdFRpbWUiLCJzZXR1cExpc3RlbmVyRm9yUmVidWZmZXJpbmciLCJTdG9wcGVkIiwicmVzdGFydEFmdGVyU3RvcCIsImNsZWFyRmFpbHVyZUNvdW50VGltZW91dCIsIlBsYXlpbmciLCJvblZpZGVvUmVzb2x1dGlvbkNoYW5nZXMiLCJlbGFwc2VkSW5NaWxsaXNlY29uZHMiLCJjaGFubmVsSW5pdGlhbGl6YXRpb24iLCJnZXRUaW1lIiwibGltaXRCaXRyYXRlIiwiS2VlcCIsIk5vcm1hbCIsImRlc3Ryb3lTdHJlYW1PblVubW91bnQiLCJyZW1vdmVXaW5kb3dFdmVudExpc3RlbmVyIiwic3RhcnQiLCJwYXVzZSIsInNyY09iamVjdCIsIkluaXRpYWxpemluZyIsIndpZHRoIiwidmlkZW9XaWR0aCIsImhlaWdodCIsInZpZGVvSGVpZ2h0IiwiZW1wdHkiLCJkaXNwb3NhYmxlcyIsInNldEJpdHJhdGVMaW1pdCIsImNsZWFyQml0cmF0ZUxpbWl0IiwiYml0cmF0ZUluQml0c1BlclNlY29uZCIsIlJlc2V0IiwidXBkYXRlVGFyZ2V0TGFnIiwiX3N0b3AiLCJpc1N0YXJ0aW5nIiwicHJvY2Vzc1N0b3AiLCJzdG9wIiwiY2xlYW5VcFJlc291cmNlcyIsIl9yZXN1bWUiLCJwbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudCIsInJlc3VtZSIsIm11dGUiLCJtdXRlZCIsInVubXV0ZSIsIl9kaXNwb3NlIiwiaXNEaXNwb3NlZCIsImdldFVyaSIsIl9zdGFydCIsInByb2Nlc3NTdGFydCIsIl9wcm9jZXNzU3RhcnQiLCJfY2FsbGVlNSIsIl90aGlzNSIsImxpc3Rlbk9uU3RyZWFtU2V0dXAiLCJfU3RyZWFtVHJhY2tUcmFuc2Zvcm0iLCJ2YWxpZCIsInZhbGlkYXRpb25SZXN1bHQiLCJfU3RyZWFtVHJhY2tUcmFuc2Zvcm0yIiwiX3ZhbGlkIiwiX3ZhbGlkYXRpb25SZXN1bHQiLCJfRW5jb2RlZFN0cmVhbVNpbmskdmEiLCJfdmFsaWQyIiwiX3ZhbGlkYXRpb25SZXN1bHQyIiwiX0VuY29kZWRTdHJlYW1TaW5rJHZhMiIsIl92YWxpZDMiLCJfdmFsaWRhdGlvblJlc3VsdDMiLCJoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjayIsImhhc0VuY29kZWRTdHJlYW1TaW5rIiwiaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrIiwic3RyZWFtUGxheWVyIiwiX2NvbnRleHQ1IiwiU3RhcnRpbmciLCJVbmF1dGhvcml6ZWQiLCJ2YWxpZGF0ZU1lZGlhU3RyZWFtVHJhY2tUcmFuc2Zvcm0iLCJDb25maWd1cmF0aW9uRXJyb3IiLCJ2YWxpZGF0ZUVuY29kZWRTdHJlYW1TaW5rIiwiaXNJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCIsIlVuc3VwcG9ydGVkRmVhdHVyZSIsIlJlY292ZXJpbmciLCJjbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCIsImhhbmRsZVN0cmVhbUZhaWx1cmUiLCJDbGllbnRTdGFydEVycm9yIiwiZmluYWxseSIsImF1dG9tYXRpY1JldHJ5T25GYWlsdXJlIiwidGltZW91dElkIiwiZ2V0UmV0cnlJbnRlcnZhbCIsIl9yZXN0YXJ0QWZ0ZXJTdG9wIiwiX2NhbGxlZTYiLCJfY29udGV4dDYiLCJfcGxheSIsIl9jYWxsZWU3IiwiX2NvbnRleHQ3IiwicGxheSIsIlN0YW5kQnkiLCJPZmZsaW5lIiwiR2VvUmVzdHJpY3RlZCIsIkdlb0Jsb2NrZWQiLCJQYXVzZWQiLCJSZWNvbm5lY3RpbmciLCJUcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3IiLCJDb25uZWN0aW9uRXJyb3IiLCJfaGFuZGxlU3RyZWFtRmFpbHVyZSIsIl9jYWxsZWU4IiwiX2NvbnRleHQ4IiwiX3RoaXM2IiwiZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCIsInNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyIsImRlc3Ryb3lTdHJlYW0iLCJwZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwiX3RoaXM3IiwiZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNhcGFiaWxpdHkiLCJjYXBhYmlsaXR5Iiwic2hvdWxkRXh0cmFjdFRpbWVjb2RlIiwic2hvdWxkRXh0cmFjdFRpbWVzdGFtcHMiLCJpc0NoYW5uZWxGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3VwcG9ydGVkIiwib3B0aW9uIiwidHJpbSIsIl9wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudCIsIl9jYWxsZWU5IiwiX3RoaXM4IiwicGxheVByb21pc2UiLCJfY29udGV4dDkiLCJoYXNBdWRpb1RyYWNrIiwiZmlsdGVyIiwiYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmVPZmYiLCJDaGFubmVscyIsImNyZWF0ZUNoYW5uZWwiLCJpbml0aWFsaXplZCIsImNoYW5uZWxPcHRpb25zIiwib3B0aW9uc1dpdGhSZWFsVGltZVN1YnNjcmliZUNhbGxiYWNrcyIsImRlZmF1bHRUYXJnZXRMYWciLCJfb3B0aW9ucyR0YXJnZXRMYWciLCJfb3B0aW9ucyRvblJlYWxUaW1lU3UiLCJfb3B0aW9ucyRvblJlYWxUaW1lU3UyIiwicnRjQXVkaW9TdGF0aXN0aWMiLCJydGNWaWRlb1N0YXRpc3RpYyIsImFwcGx5U3RhdHVzIiwiYXBwbHlTZXNzaW9uQW5kU3RyZWFtUHJvcGVydGllc1RvVmlkZW9FbGVtZW50IiwibWFwU3Vic2NyaWJlU3RhdHVzVG9DaGFubmVsU3RhdHVzIiwibWFwU3Vic2NyaWJlU3RhdHVzVG9FeGlzdHMiLCJhdWRpb1RyYWNrIiwibWVkaWFTdHJlYW1UcmFjayIsInJlY2VpdmVyIiwibWlkIiwidHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIiLCJ0cmFuc2Zvcm1NZXNzYWdlUm91dGVyIiwidHJhbnNmb3JtRnVuY3Rpb25OYW1lcyIsInZpZGVvVHJhY2siLCJBdWRpb0NvZGVjIiwiQXVkaW9Db2RlY01hcHBpbmciLCJjb252ZXJ0QXVkaW9Db2RlY1RvQXVkaW9Db2RlY1R5cGUiLCJPUFVTIiwiQUFDIiwiY29udmVydEF1ZGlvQ29kZWNUeXBlVG9BdWRpb0NvZGVjIiwiYXVkaW9Db2RlY1R5cGUiLCJhdWRpb0NvZGVjU3RyaW5nIiwidG9VcHBlckNhc2UiLCJWaWRlb0NvZGVjIiwiVmlkZW9Db2RlY01hcHBpbmciLCJjb252ZXJ0VmlkZW9Db2RlY1RvVmlkZW9Db2RlY1R5cGUiLCJIMjY0IiwiVlA4IiwiVlA5IiwiY29udmVydFZpZGVvQ29kZWNUeXBlVG9WaWRlb0NvZGVjIiwidmlkZW9Db2RlY1R5cGUiLCJ2aWRlb0NvZGVjU3RyaW5nIiwiVWludDhBcnJheSIsImRlZmF1bHREaXNjb3ZlcnlVcmkiLCJCaXRyYXRlTW9kZU1hcHBpbmciLCJjb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZSIsImJpdHJhdGVNb2RlIiwiRm9yY2UiLCJCaXRyYXRlU3RhdGVNYXBwaW5nIiwiY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZSIsImJpdHJhdGVTdGF0ZSIsIkRpc2NvdmVyeVNlcnZpY2UiLCJkaXNjb3ZlcnlDYWNoZUludGVydmFsIiwiX3ByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5IiwicmVzb2x2ZUVuZFBvaW50UHJvbWlzZSIsImRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmciLCJwcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSIsIl9kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nIiwiZGlzY292ZXJ5U2VydmljZSIsImNhY2hlZFZhbHVlIiwiX2NhY2hlIiwiZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQiLCJFbmRQb2ludCIsImRlZmF1bHRUaW1lb3V0IiwiX3VyaSIsIl9kaXNjb3Zlck5lYXJieUVuZFBvaW50cyIsInRpbWVvdXQiLCJhc1N0cmluZyIsImVuZFBvaW50cyIsIm9rIiwidGV4dCIsImRpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzIiwiX2Rpc2NvdmVyQ2xvc2VzdEVuZFBvaW50IiwiZmFpbGVkUmVxdWVzdHMiLCJwcm9wYWdhdGVGYWlsdXJlSWZBbGxSZXF1ZXN0c0ZhaWxlZCIsIl9hcmdzMiIsImJ1aWxkRGlzY292ZXJ5VXJsIiwicGluZyIsInRpbWUiLCJfZGlzY292ZXJ5VXJpIiwiZGlzY292ZXJ5UGFyYW1ldGVycyIsInNlYXJjaFBhcmFtcyIsImFwaVZlcnNpb24iLCJfdGltZW91dCIsIl9yb3VuZFRyaXBUaW1lIiwiX3BpbmciLCJmaW5pc2hlZCIsImJ1aWxkUGluZ1VybCIsIl9zdWJzY3JpYmUiLCJsb2NhbFNlc3Npb25EZXNjcmlwdGlvbiIsIl9vcHRpb25zJG9uU3Vic2NyaWJlUiIsIl9vcHRpb25zJG9uU3Vic2NyaWJlUjMiLCJjbGllbnRWZXJzaW9uIiwicmVxdWVzdEJvZHkiLCJodHRwUmVzcG9uc2UiLCJfb3B0aW9ucyRvblN1YnNjcmliZVIyIiwiX3Jlc3BvbnNlIiwic3Vic2NyaWJlUmVzcG9uc2UiLCJidWlsZFVybCIsImJlYXJlclRva2VuIiwiaHR0cFJvdW5kVHJpcFRpbWUiLCJzZXNzaW9uRGVzY3JpcHRpb24iLCJjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvbiIsImNyZWF0ZU9mZmVyRGVzY3JpcHRpb24iLCJvblN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayIsIm1hcEh0dHBTdGF0dXNUb1N1YnNjcmliZVN0YXR1cyIsIm9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb1N1YnNjcmliZVJlc3BvbnNlIiwiX3B1Ymxpc2giLCJib2R5V2l0aE9mZmVyIiwiYm9keVdpdGhvdXRPZmZlciIsIm1hcEh0dHBTdGF0dXNUb1B1Ymxpc2hTdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9QdWJsaXNoUmVzcG9uc2UiLCJwdWJsaXNoIiwiX3g1IiwiX3g2IiwiX3g3Iiwic2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSIsInNoYXJlZFNlY3JldCIsIm1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSIsIl94OCIsIl94OSIsIl9saW1pdEJpdHJhdGUiLCJtYXBIdHRwU3RhdHVzVG9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyIsIl94MCIsIl94MSIsIl94MTAiLCJfeDExIiwiX3gxMiIsIl9hZGRJY2VDYW5kaWRhdGVzIiwiY2FuZGlkYXRlcyIsImRpc2NvdmVyeUNvbXBsZXRlZCIsImFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSIsIl9hcmdzNiIsIm1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UiLCJhZGRJY2VDYW5kaWRhdGVzIiwiX3gxMyIsIl94MTQiLCJfeDE1IiwiX2Rlc3Ryb3lTdHJlYW0iLCJkZXN0cm95U3RyZWFtUmVzcG9uc2UiLCJtYXBIdHRwU3RhdHVzVG9TZXREZXN0cm95U3RyZWFtU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbVJlc3BvbnNlIiwiX3gxNiIsIl94MTciLCJfZGVzdHJveVN0cmVhbU9uVW5tb3VudCIsInNlbmRCZWFjb24iLCJfeDE4IiwiX3gxOSIsInBhdGgiLCJwYXRoQXNBcnJheSIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9TdWJzY3JpYmVSZXNwb25zZSIsInJ0Y0NvbmZpZ3VyYXRpb24iLCJjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlIiwiY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlIiwib3RoZXJQcm9wZXJ0aWVzIiwianNvbiIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIl9vYmplY3RTcHJlYWQiLCJjb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24iLCJfeDIwIiwiX3gyMSIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9QdWJsaXNoUmVzcG9uc2UiLCJfY2FsbGVlMCIsInB1Ymxpc2hSZXNwb25zZSIsIl9jb250ZXh0MCIsIl94MjIiLCJfeDIzIiwiYnVuZGxlUG9saWN5IiwiaWNlQ2FuZGlkYXRlUG9vbFNpemUiLCJpY2VUcmFuc3BvcnRQb2xpY3kiLCJydGNwTXV4UG9saWN5IiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UiLCJfY2FsbGVlMSIsIl9jb250ZXh0MSIsIl94MjQiLCJfY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlIiwiX2NhbGxlZTEwIiwiX2NvbnRleHQxMCIsIl94MjUiLCJfY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbVJlc3BvbnNlIiwiX2NhbGxlZTExIiwiX2NvbnRleHQxMSIsIl94MjYiLCJUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUiLCJGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlciIsImNvbnRleHQiLCJNYXAiLCJjYW5Qcm9jZXNzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsInNldHVwVmlkZW9FbGVtZW50SGFuZGxpbmciLCJyZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0Iiwic2V0dXBGcmFtZVRpbWluZ0luZm9ybWF0aW9uVHJhbnNmb3JtIiwidHJhY2tJZCIsImRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCIsImlzRW5hYmxlZFN1YmplY3QiLCJyZWdpc3RlclJvdXRlIiwiRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsImhhbmRsZUZyYW1lVGltaW5nTWVzc2FnZSIsIl90cmFuc2Zvcm1OYW1lIiwiX09iamVjdCRlbnRyaWVzIiwiZW50cmllcyIsIl9PYmplY3QkZW50cmllcyRfaSIsIl9zbGljZWRUb0FycmF5IiwicnRwVGltZXN0YW1wIiwibWV0YWRhdGEiLCJydHBUaW1lc3RhbXBOdW1iZXIiLCJfZGVjb2RlZEZyYW1lVGltaW5nSW4iLCJfZGVjb2RlZEZyYW1lVGltaW5nSW4yIiwiZnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsInRpbWVjb2RlIiwicmVjZWl2ZVRpbWVzdGFtcCIsInNvdXJjZVRpbWVzdGFtcCIsImluZ2VzdFRpbWVzdGFtcCIsImVuY29kZVRpbWVzdGFtcCIsInRyYW5zY29kZVRpbWVzdGFtcCIsInBsYXliYWNrU3RhdGUiLCJfY3VycmVudFBsYXliYWNrU3RhdGUiLCJfZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25CeVJ0cFRpbWVzdGFtcCIsInZpZGVvRWxlbWVudFN1YmplY3QiLCJjbGVhciIsIl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcyIsInNldHVwVmlkZW9FdmVudExpc3RlbmVycyIsImhhbmRsZVZpZGVvRnJhbWVDYWxsYmFjayIsIl9hcm1WaWRlb0ZyYW1lQ2FsbGJhY2siLCJ0aW1lc3RhbXBzVG9EZWxldGUiLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwicyIsIl9zdGVwJHZhbHVlIiwiZnJhbWVUaW1pbmciLCJyZW5kZXJUaW1lc3RhbXAiLCJwZXJmb3JtYW5jZSIsInRpbWVPcmlnaW4iLCJlcnIiLCJfaTIiLCJfdGltZXN0YW1wc1RvRGVsZXRlIiwiZGVsZXRlIiwib25QbGF5aW5nIiwib25QYXVzZSIsIm9uU3RhbGxlZCIsIm9uV2FpdGluZyIsIm9uRW5kZWQiLCJvbkVycm9yIiwiX2FybWVkVmlkZW9GcmFtZUNhbGxiYWNrSWQiLCJjYW5jZWxWaWRlb0ZyYW1lQ2FsbGJhY2siLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiSW5zZXJ0YWJsZVN0cmVhbXMiLCJFbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyIiwiaWNlQ2FuZGlkYXRlQWNjdW11bGF0aW9uSW50ZXJ2YWwiLCJkZWZhdWx0U3RyZWFtU2V0dXBUaW1lb3V0IiwiUmVhbFRpbWVTdHJlYW0iLCJjaGFubmVsQ29udGV4dCIsInBlZXJDb25uZWN0aW9uQ29udGV4dCIsInN0cmVhbVRyYW5zZm9ybUNvbnRleHQiLCJmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCIsInJlcXVpcmVzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zIiwiX3JlZjMiLCJfcmVmMyQiLCJzdWJzY3JpYmVPcHRpb25zIiwiY2xpZW50T2ZmZXJEaXNhYmxlZCIsInN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiIsInN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbiIsImFwcGx5UnRjQ29uZmlndXJhdGlvbiIsInN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0IiwiY2FuY2VsRGlzY292ZXJ5IiwiY2FuZGlkYXRlIiwiX3RoaXMkX2NoYW5uZWxDb250ZXh0IiwiX3JlZjQiLCJyZXRyeUNhbGxiYWNrIiwibmF2aWdhdG9ySXNPbkxpbmUiLCJyZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsIm1lZGlhU3RyZWFtUHJvbWlzZSIsIm9uVHJhY2tEaXNhYmxlZCIsInN0cmVhbXMiLCJ0cmFja0xpc3RlbmVyIiwiYW5zd2VyIiwiX3JlZjUiLCJtYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvQ2hhbm5lbFN0YXR1cyIsIl9wZWVyQ29ubmVjdGlvbiRjdXJyZSIsIl90aGlzJF9jaGFubmVsQ29udGV4dDIiLCJfcGVlckNvbm5lY3Rpb24kZ2V0VHIiLCJfcGVlckNvbm5lY3Rpb24kZ2V0VHIyIiwicGFyc2VkUmVtb3RlRGVzY3JpcHRpb24iLCJyZWNlaXZlcnMiLCJnZXRWaWRlb1RyYWNrcyIsInZpZGVvVHJhY2tSZWNlaXZlciIsInN1cHBvcnRzR2V0VHJhbnNjZWl2ZXJzIiwidHJhbnNjZWl2ZXIiLCJnZXRBdWRpb1RyYWNrcyIsImF1ZGlvVHJhY2tSZWNlaXZlciIsImNyZWF0ZUVuY29kZWRTdHJlYW1QaXBlbGluZSIsInJlcXVpcmVzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsImZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dCIsInJlcXVpcmVzRW5jb2RlZE1lZGlhVHJhbnNmb3JtIiwiZW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQiLCJjb25maWd1cmVFbmNvZGVkU3RyZWFtUGlwZWxpbmUiLCJfSW5zZXJ0YWJsZVN0cmVhbXMkY28iLCJjb25maWd1cmVJbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtYXRpb24iLCJ0cmFuc2Zvcm1lZFN0cmVhbSIsInJ0Y0Nvbm5lY3Rpb25Nb25pdG9yIiwicnRjQ29ubmVjdGlvbk1vbml0b3JTdGF0aXN0aWNTdWJzY3JpcHRpb24iLCJydGNTdGF0aXN0aWMiLCJzdGF0aXN0aWNzIiwiYXVkaW9UcmFja0ZhaWxlZCIsInZpZGVvVHJhY2tGYWlsZWQiLCJfYXBwbHlSdGNDb25maWd1cmF0aW9uIiwib3B0aW9uYWxQZWVyQ29ubmVjdGlvbiIsIm5ld1J0Y0NvbmZpZ3VyYXRpb24iLCJtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwiYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwiX3BlZXJDb25uZWN0aW9uJGN1cnJlMiIsImlzQ2xpZW50T2ZmZXJGbG93IiwiaWNlUmVzdGFydCIsIm9mZmVyIiwiUmVhbFRpbWVTdHJlYW1GYWN0b3J5IiwidG9rZW5DYXBhYmlsaXRpZXMiLCJTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIiwiU2tpcEZyYW1lIiwiRW5jb2RlZFZpZGVvQ2h1bmsiLCJjaHVuayIsImVuY29kZWRWaWRlb1N0cmVhbUNhbGxiYWNrIiwiRW5jb2RlZEF1ZGlvQ2h1bmsiLCJlbmNvZGVkQXVkaW9TdHJlYW1DYWxsYmFjayIsIl9lbmNvZGVkQXVkaW9TdHJlYW1DYWxsYmFjayIsImdldEludmFsaWRTdXJyb2dhdGVBdWRpb0RhdGEiLCJnZXRTdXJyb2dhdGVBdWRpb1NpbGVudFBlckNvZGVjIiwiX2VuY29kZWRWaWRlb1N0cmVhbUNhbGxiYWNrIiwic3Vycm9nYXRlIiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvSUZyYW1lIiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lIiwiZ2V0U3Vycm9nYXRlVmlkZW9JRnJhbWVQZXJDb2RlYyIsImdldFN1cnJvZ2F0ZVZpZGVvUEZyYW1lUGVyQ29kZWMiLCJtb2RlIiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX24iLCJGIiwibmV4dCIsIl9hcnJheUxpa2VUb0FycmF5IiwiZnJvbSIsIlRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyIiwiVHJhbnNmb3JtTWVzc2FnZVR5cGUiLCJUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIiwiY3JlYXRlVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJGb3JUcmFjayIsIndvcmtlciIsInRlcm1pbmF0ZSIsInZpZGVvVHJhY2tNZWRpYVN0cmVhbVRyYWNrIiwiYXVkaW9UcmFja01lZGlhU3RyZWFtVHJhY2siLCJfY29uZmlndXJlRW5jb2RlZFN0cmVhbVBpcGVsaW5lIiwiYWRkVHJhY2tUcmFuc2Zvcm1zIiwiY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtIiwiY29uZmlndXJlRW5jb2RlZFN0cmVhbXMiLCJ0cmFuc2Zvcm1GdW5jdGlvbk5hbWUiLCJwb3N0TWVzc2FnZSIsIkFkZFRyYW5zZm9ybSIsImNvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybUZvclRyYWNrIiwidHJhY2tSZWNlaXZlciIsInRyYWNrTWVkaWFTdHJlYW1UcmFjayIsInRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIiLCJ0cmFuc2Zvcm0iLCJQaXBlbGluZUNvbmZpZ3VyZWQiLCJvbmNlIiwiY29uZmlndXJlRW5jb2RlZFN0cmVhbXNGb3JUcmFjayIsImFjdGlvbnMiLCJlbmNvZGVkUmVjZWl2ZXJTdHJlYW1zIiwiQ29uZmlndXJlUGlwZWxpbmUiLCJzb3VyY2UiLCJyZWFkYWJsZSIsInNpbmsiLCJ0cmFuc2ZlciIsImluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayIsImNvbnRyb2xsZXIiLCJ0cmFuc2Zvcm1lciIsIlRyYW5zZm9ybVN0cmVhbSIsInByb2Nlc3NvciIsImdlbmVyYXRvciIsInBpcGVUaHJvdWdoIiwicGlwZVRvIiwicmVtb3ZlVHJhY2siLCJhdWRpb1B1bXBlciIsIkF1ZGlvIiwiYXBwZW5kQ2hpbGQiLCJyZW1vdmVDaGlsZCIsImFubmV4QkZvdXJCeXRlU3RhcnRDb2RlIiwic3Vycm9nYXRlSDI2NDI4eDE2SUZyYW1lIiwic3Vycm9nYXRlSDI2NDI4eDE2UEZyYW1lIiwiX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYyIsImJ1ZmZlciIsIl9zaW5nbGVaZXJvQnl0ZSIsIl9pc1NhZmFyaSIsIl9zdXJyb2dhdGUyOHgxNkgyNjRJRnJhbWUiLCJfZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjIiwiX2lzQW5kcm9pZENocm9tZSIsIl9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyIiwiX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXJSZXNldCIsIl9zdXJyb2dhdGUyOHgxNkgyNjRQRnJhbWUiLCJfZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjIiwiX1N1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIiLCJpc0FuZHJvaWQiLCJUcmFuc2Zvcm1QaXBlbGluZU1lc3NhZ2VSb3V0ZXIiLCJtZXNzYWdlVHlwZSIsInJvdXRlTWVzc2FnZSIsIl9tZXNzYWdlUm91dGVzIiwicm91dGVNZXNzYWdlRGF0YSIsIkNodW5rIiwiTWV0YWRhdGEiLCJfX0JVSUxEX1ZFUlNJT05fXyIsIl9kZWZhdWx0VmVyc2lvbiIsIlRlbGVtZXRyeVNlcnZpY2UiLCJfdGVsZW1ldHJ5U2VydmljZSIsInZhbHVlT2YiLCJsb2dSZWNvcmQiLCJfbG9ncyIsInNlbmRMb2dzSWZBYmxlIiwibG9nTWVzc2FnZXMiLCJfc2VuZExvZ3NJZkFibGUiLCJudW1iZXJPZkxvZ3NUb1NlbmQiLCJzaXplT2ZMb2dzVG9TZW5kIiwiZ2V0SXRlbVNpemUiLCJnZXRMb2dTaXplIiwic3VtIiwiZHVyYXRpb24iLCJfZHVyYXRpb24iLCJpc05lZ2F0aXZlIiwiYWJzIiwib2Zmc2V0IiwibWlsbGlzZWNvbmRzIiwic2Vjb25kcyIsIm1pbnV0ZXMiLCJob3VycyIsInBhcnRzIiwiU3RyaW5nIiwicGFkU3RhcnQiLCJ0YXJnZXRMZW5ndGgiLCJwYWRTdHJpbmciLCJyZXBlYXQiLCJkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImRlZmF1bHRNaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiZGVmYXVsdE1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJiYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwibWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIm1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJiYWNrb2ZmSW50ZXJ2YWxJblNlY29uZHMiLCJyYW5kb21pemF0aW9uIiwiZXhwb25lbnRpYWxCYWNrb2ZmIiwiZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb24iLCJleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbkluTWlsbGlzZWNvbmQiLCJtYXgiLCJtaW4iLCJvdGhlciIsImFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIiwiX25ldHdvcmtNb25pdG9yIiwiaXNGb3JlZ3JvdW5kIiwicmVjb3JkRm9yZWdyb3VuZENoYW5nZSIsInJlY29yZE5ldHdvcmtSVFRVcGRhdGUiLCJyZWNvcmROZXR3b3JrVHlwZUNoYW5nZVVwZGF0ZSIsImRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwicmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlIiwidGltZVNpbmNlTGFzdENoYW5nZSIsIm5ld1JUVCIsIm9sZFJ0dCIsIl9sYXN0TmV0d29ya1N0YXRpc3RpY3MiLCJuZXdOZXR3b3JrVHlwZSIsIm9sZE5ldHdvcmtUeXBlIiwibmV3Q2FwYWNpdHkiLCJvbGRDYXBhY2l0eSIsImZsb2F0Iiwibm9vcCIsImNoYW5uZWxTdGFydFRpbWUiLCJfc3RyZWFtSWQiLCJfc3RhcnRSZWNvcmRpbmdGaXJzdEZyYW1lIiwiX2xpc3RlblRvRmlyc3RUaW1lIiwiY2FsbFRpbWVUb0ZpcnN0RnJhbWUiLCJfY2xlYXJUaW1lVG9GaXJzdEZyYW1lTGlzdGVuZXIiLCJfbGlzdGVuRm9yU3RhbGwiLCJvblN0YWxsIiwiX2xpc3RlbkZvckNvbnRpbnVhdGlvbiIsImV2ZW50Iiwib25Db250aW51YXRpb24iLCJfY2xlYXJSZWJ1ZmZlcmluZ0xpc3RlbmVyIiwicHVzaFRpbWVUb0ZpcnN0RnJhbWUiLCJwdXNoQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSIsIl90aW1lVG9GaXJzdEZyYW1lIiwiZHVyYXRpb25TaW5jZVBhZ2VMb2FkIiwiX2NoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUiLCJfdmlkZW9TdGFsbGVkIiwiYnVmZmVyZWQiLCJidWZmZXJMZW5ndGgiLCJoYXNOb3RQcm9ncmVzc2VkU2luY2VMYXN0UHJvZ3Jlc3NFdmVudCIsImVuZCIsIl9sYXN0UHJvZ3Jlc3MiLCJ0aW1lU2luY2VTdG9wIiwibmV3UmVzb2x1dGlvbiIsIl92aWRlb1Jlc29sdXRpb24iXSwic291cmNlUm9vdCI6IiJ9
|