{"remainingRequest":"D:\\test\\ssi-satoken\\ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\test\\ssi-satoken\\ui\\src\\views\\sysManager\\userManager\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\test\\ssi-satoken\\ui\\src\\views\\sysManager\\userManager\\index.vue","mtime":1696909835000},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1697005520931},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\babel-loader\\lib\\index.js","mtime":1697005523218},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1697005520931},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\vue-loader\\lib\\index.js","mtime":1697005524089}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQge2RlYm91bmNlfSBmcm9tICdsb2Rhc2gnDQppbXBvcnQge3VzZXJpbmZvRGVjcnlwdH0gZnJvbSAiQC91dGlscy9zbXV0aWwiOw0KDQpleHBvcnQgZGVmYXVsdCB7DQogIG5hbWU6ICJVc2VyIiwNCiAgZGF0YSgpIHsNCiAgICByZXR1cm4gew0KICAgICAgcGlja2VyT3B0aW9uczp7DQogICAgICAgIGRpc2FibGVkRGF0ZSh0aW1lKXsNCiAgICAgICAgICByZXR1cm4gdGltZS5nZXRUaW1lKCk8RGF0ZS5ub3coKS04LjY0ZTcNCiAgICAgICAgfQ0KICAgICAgfSwNCiAgICAgIHN5c1JvbGU6JycsDQogICAgICBpZDogdW5kZWZpbmVkLA0KICAgICAgdXNlcm5hbWU6IHVuZGVmaW5lZCwNCiAgICAgIG5pY2tuYW1lOiB1bmRlZmluZWQsDQogICAgICBpZGNhcmQ6IHVuZGVmaW5lZCwNCiAgICAgIHBob25lbnVtYmVyOiB1bmRlZmluZWQsDQogICAgICBtYWlsYm94OiB1bmRlZmluZWQsDQogICAgICBzdGF0dXM6ICIwIiwNCiAgICAgIHVzZXJ0eXBlOiAiMCIsDQogICAgICByZW1hcms6IHVuZGVmaW5lZCwNCiAgICAgIGV4cERhdGU6IHVuZGVmaW5lZCwNCiAgICAgIC8vIOinkuiJsuihqOagvOaVsOaNrg0KICAgICAganN1c2VyaWQ6ICcnLA0KICAgICAgcm9sZUxpc3Q6IFtdLA0KICAgICAganN1c2VybmFtZTogJycsDQogICAgICBqc25pY2tuYW1lOiAnJywNCiAgICAgIHVzZXJSb2xlSWQ6ICcnLA0KICAgICAganN1c2VydHlwZTogJycsDQogICAgICBzdGF0dXNPcHRpb25zOiBbDQogICAgICAgIHt2YWx1ZTogJzAnLCBsYWJlbDogJ+ato+W4uCd9LA0KICAgICAgICB7dmFsdWU6ICcxJywgbGFiZWw6ICfplIHlrponfSwNCiAgICAgICAge3ZhbHVlOiAnMicsIGxhYmVsOiAn5rOo6ZSAJ30NCiAgICAgIF0sDQogICAgICB0eXBlT3B0aW9uczogWw0KICAgICAgICB7dmFsdWU6ICcwJywgbGFiZWw6ICfnrqHnkIblkZgnfSwNCiAgICAgICAge3ZhbHVlOiAnMScsIGxhYmVsOiAn5Lia5Yqh55So5oi3J30NCiAgICAgIF0sDQogICAgICAvLyDpga7nvanlsYINCiAgICAgIGxvYWRpbmc6IHRydWUsDQogICAgICBzaG93VGFibGU6IHRydWUsDQogICAgICAvLyDpgInkuK3mlbDnu4QNCiAgICAgIGlkczogW10sDQogICAgICAvLyDpnZ7ljZXkuKrnpoHnlKgNCiAgICAgIHNpbmdsZTogdHJ1ZSwNCiAgICAgIC8vIOmdnuWkmuS4quemgeeUqA0KICAgICAgbXVsdGlwbGU6IHRydWUsDQogICAgICBjdXJyZW50UGFnZTogMSwNCiAgICAgIHBhZ2VTaXplOiAxMCwNCiAgICAgIC8vIOaAu+adoeaVsA0KICAgICAgdG90YWw6IDAsDQogICAgICAvLyDnlKjmiLfooajmoLzmlbDmja4NCiAgICAgIHVzZXJMaXN0OiBbXSwNCiAgICAgIGxvY2t0aXRsZToi6Ym05Yir5pON5L2cIiwNCiAgICAgIC8vIOW8ueWHuuWxguagh+mimA0KICAgICAgdGl0bGU6ICIiLA0KICAgICAgLy8g6KeS6Imy5YiG6YWN5by55Ye65bGC5qCH6aKYDQogICAgICBqc3RpdGxlOiAiIiwNCiAgICAgIC8vIOaYr+WQpuaYvuekuuW8ueWHuuWxgg0KICAgICAgb3BlbjogZmFsc2UsDQogICAgICBsb2Nrb3BlbjpmYWxzZSwNCiAgICAgIC8vIOinkuiJsuaYr+WQpuaYvuekuuW8ueWHuuWxgg0KICAgICAganNvcGVuOiBmYWxzZSwNCiAgICAgIC8vIOm7mOiupOWvhueggQ0KICAgICAgaW5pdFBhc3N3b3JkOiB1bmRlZmluZWQsDQogICAgICAvLyDop5LoibLpgInpobkNCiAgICAgIHJvbGVPcHRpb25zOiBbXSwNCiAgICAgIC8vIOihqOWNleWPguaVsA0KICAgICAgZm9ybToge30sDQogICAgICBsb2NrZm9ybTp7fSwNCiAgICAgIC8vIOafpeivouWPguaVsA0KICAgICAgcXVlcnlQYXJhbXM6IHsNCiAgICAgICAgdXNlcm5hbWU6IHVuZGVmaW5lZCwNCiAgICAgICAgcGhvbmVudW1iZXI6IHVuZGVmaW5lZCwNCiAgICAgICAgc3RhdHVzOiB1bmRlZmluZWQNCiAgICAgIH0sDQogICAgICBtZW51RXhwYW5kOiBmYWxzZSwNCiAgICAgIC8vIOiPnOWNleWIl+ihqA0KICAgICAgbWVudU9wdGlvbnM6IFtdLA0KICAgICAgZGVmYXVsdFByb3BzOiB7DQogICAgICAgIGNoaWxkcmVuOiAiY2hpbGRyZW4iLA0KICAgICAgICBsYWJlbDogImxhYmVsIg0KICAgICAgfSwNCiAgICAgIGVkaXQ6IGZhbHNlLA0KICAgICAgLy8g6KGo5Y2V5qCh6aqMDQogICAgICBydWxlczogew0KICAgICAgICB1c2VybmFtZTogWw0KICAgICAgICAgIHtyZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIueUqOaIt+i0puWPt+S4jeiDveS4uuepuiIsIHRyaWdnZXI6ICJibHVyIn0sDQogICAgICAgICAge21pbjogNSwgbWF4OiAyMCwgbWVzc2FnZTogJ+eUqOaIt+i0puWPt+mVv+W6puW/hemhu+S7i+S6jiA1IOWSjCAyMCDkuYvpl7QnLCB0cmlnZ2VyOiAnYmx1cid9DQogICAgICAgIF0sDQogICAgICAgIG5pY2tuYW1lOiBbDQogICAgICAgICAge3JlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi55So5oi35aeT5ZCN5LiN6IO95Li656m6IiwgdHJpZ2dlcjogImJsdXIifSwNCiAgICAgICAgICB7bWluOiAyLCBtYXg6IDMwLCBtZXNzYWdlOiAn55So5oi35aeT5ZCN6ZW/5bqm5b+F6aG75LuL5LqOIDIg5ZKMIDMwIOS5i+mXtCcsIHRyaWdnZXI6ICdibHVyJ30NCiAgICAgICAgXSwNCiAgICAgICAgaWRjYXJkOiBbDQogICAgICAgICAge3JlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi6Lqr5Lu96K+B5Y+356CB5LiN6IO95Li656m6IiwgdHJpZ2dlcjogImJsdXIifSwNCiAgICAgICAgICB7bWluOiAxNSwgbWF4OiAxOCwgbWVzc2FnZTogJ+i6q+S7veivgeWPt+ivt+i+k+WFpTE15L2N5oiW6ICFMTjkvY0nLCB0cmlnZ2VyOiAnYmx1cid9DQogICAgICAgIF0sDQogICAgICAgIG1haWxib3g6IFsNCiAgICAgICAgICB7cmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLpgq7nrrHkuI3og73kuLrnqboiLCB0cmlnZ2VyOiAiYmx1ciJ9LA0KICAgICAgICAgIHt0eXBlOiAiZW1haWwiLCBtZXNzYWdlOiAi6K+36L6T5YWl5q2j56Gu55qE6YKu566x5Zyw5Z2AIiwgdHJpZ2dlcjogWyJibHVyIiwgImNoYW5nZSJdfQ0KICAgICAgICBdLA0KICAgICAgICBwaG9uZW51bWJlcjogWw0KICAgICAgICAgIHtyZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuaJi+acuuWPt+eggeS4jeiDveS4uuepuiIsIHRyaWdnZXI6ICJibHVyIn0sDQogICAgICAgICAge3BhdHRlcm46IC9eMVszfDR8NXw2fDd8OHw5XVswLTldXGR7OH0kLywgbWVzc2FnZTogIuivt+i+k+WFpeato+ehrueahOaJi+acuuWPt+eggSIsIHRyaWdnZXI6ICJibHVyIn0NCiAgICAgICAgXQ0KICAgICAgfQ0KICAgIH07DQogIH0sDQogIHdhdGNoOiB7fSwNCiAgY3JlYXRlZCgpIHsNCiAgICB0aGlzLmdldExpc3QoKQ0KICAgIHRoaXMuZ2V0VXNlckJ5Um9sZSgpDQogIH0sDQogIG1ldGhvZHM6IHsNCiAgICBhc3luYyBnZXRVc2VyQnlSb2xlKCl7DQogICAgICAvLyDojrflj5blvZPliY3nlKjmiLfnmoTop5LoibINCiAgICAgIGxldCBzeXNUaW1lMg0KICAgICAgbGV0IGxrMg0KICAgICAgYXdhaXQgdGhpcy4kYXhpb3MuZ2V0KCcvc3lzUG9saWN5Q29udHJvbGxlci9nZXRMaWNlbnNlS2V5JykudGhlbigocmVzKSA9PiB7DQogICAgICAgIHN5c1RpbWUyID0gcmVzLmRhdGEuc3lzVGltZQ0KICAgICAgICBsazIgPSByZXMuZGF0YS5saw0KICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7DQogICAgICB9KQ0KICAgICAgdmFyIHNlYXJjaFBhcmFtczIgPSB7DQogICAgICAgIHN5c1RpbWU6IHN5c1RpbWUyLA0KICAgICAgICBsazogbGsyDQogICAgICB9DQogICAgICBhd2FpdCB0aGlzLiRheGlvcy5nZXQoJy9zeXNSb2xlQ29udHJvbGxlci9nZXRVc2VyQnlSb2xlJywge3BhcmFtczogc2VhcmNoUGFyYW1zMn0pLnRoZW4oKHJlcykgPT4gew0KICAgICAgICB0aGlzLnN5c1JvbGUgPSByZXMuZGF0YQ0KICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7DQogICAgICB9KQ0KICAgIH0sDQogICAgLy8g5qCR5p2D6ZmQ77yI5bGV5byAL+aKmOWPoO+8iQ0KICAgIGhhbmRsZUNoZWNrZWRUcmVlRXhwYW5kKHZhbHVlLCB0eXBlKSB7DQogICAgICBpZiAodHlwZSA9PSAnbWVudScpIHsNCiAgICAgICAgbGV0IHRyZWVMaXN0ID0gdGhpcy5tZW51T3B0aW9uczsNCiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0cmVlTGlzdC5sZW5ndGg7IGkrKykgew0KICAgICAgICAgIHRoaXMuJHJlZnMubWVudS5zdG9yZS5ub2Rlc01hcFt0cmVlTGlzdFtpXS5pZF0uZXhwYW5kZWQgPSB2YWx1ZTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0sDQoNCiAgICBzZXRSb3dDbGFzcyh7cm93LCByb3dJbmRleH0pew0KICAgICAgaWYocm93LnNpZ25zdHIgPT09ICcxJyl7DQogICAgICAgIHJldHVybiAiYmFja2dyb3VuZDogI0ZGRUZENSI7DQogICAgICB9DQogICAgfSwNCiAgICAvLyDms6jplIDmk43kvZwNCiAgICBoYW5kbGVMb2dPZmYoKXsNCiAgICAgIGxldCBfc2VsZWN0RGF0YSA9IHRoaXMuJHJlZnMudXNlclRhYmxlLmdldFJhZGlvUmVjb3JkKHRydWUpDQogICAgICBpZiAoX3NlbGVjdERhdGEgPT0gbnVsbCkgew0KICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICB0eXBlOiAnd2FybmluZycsDQogICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqeiusOW9lSEnDQogICAgICAgIH0pOw0KICAgICAgICByZXR1cm4NCiAgICAgIH0NCiAgICAgIGlmIChfc2VsZWN0RGF0YS5pZCA9PSAxKSB7DQogICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywNCiAgICAgICAgICBtZXNzYWdlOiAn5YaF572u57O757uf566h55CG5ZGY55So5oi35LiN6IO95rOo6ZSAIScNCiAgICAgICAgfSk7DQogICAgICAgIHJldHVybg0KICAgICAgfQ0KICAgICAgaWYgKF9zZWxlY3REYXRhLmlkID09IDIpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgICAgIG1lc3NhZ2U6ICflhoXnva7lrqHorqHnrqHnkIblkZjnlKjmiLfkuI3og73ms6jplIAhJw0KICAgICAgICB9KTsNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQogICAgICBpZiAoX3NlbGVjdERhdGEuaWQgPT0gMjQpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgICAgIG1lc3NhZ2U6ICflhoXnva7lrqHmoLjnrqHnkIblkZjnlKjmiLfkuI3og73ms6jplIAhJw0KICAgICAgICB9KTsNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQogICAgICBpZiAoX3NlbGVjdERhdGEuc3RhdHVzID09IDIpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgICAgIG1lc3NhZ2U6ICflt7Lms6jplIDnmoTotKblj7fkuI3og73lho3mrKHms6jplIAhJw0KICAgICAgICB9KTsNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQogICAgICBpZiAoX3NlbGVjdERhdGEuc2lnbnN0ciA9PSAnMScpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgICAgIG1lc3NhZ2U6ICflrZjlnKjlvoXlrqHmoLjvvIzlrqHmoLjnrqHnkIblkZjlrqHmoLjlkI7or7fliLfmlrDliJfooagnDQogICAgICAgIH0pOw0KICAgICAgICByZXR1cm4NCiAgICAgIH0NCiAgICAgIHRoaXMuJHByb21wdCgn6K+36L6T5YWl55m75b2V5a+G56CBJywgJ+mJtOWIq+aTjeS9nCcsIHsNCiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLA0KICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywNCiAgICAgICAgaW5wdXRUeXBlOiAncGFzc3dvcmQnLA0KICAgICAgICAvLyBjdXN0b21DbGFzczonbm8tYXV0b2ZpbGwtcHdkJywNCiAgICAgICAgaW5wdXRWYWxpZGF0b3I6ICh2YWwpID0+IHsNCiAgICAgICAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbC5sZW5ndGggPCAxIHx8IHZhbC5sZW5ndGggPiAyMCkgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAgICAgaW5wdXRFcnJvck1lc3NhZ2U6ICfkuI3og73kuLrnqbos5pyA5aSa5Y+v5b2V5YWlMjDkuKrlrZfnrKYnLA0KICAgICAgICBiZWZvcmVDbG9zZShhY3Rpb24sIGluc3RhbmNlLCBkb25lKSB7DQogICAgICAgICAgaWYgKGFjdGlvbiA9PT0gImNvbmZpcm0iKSB7DQogICAgICAgICAgICBpbnN0YW5jZS4kcmVmc1siY29uZmlybSJdLiRlbC5vbmNsaWNrID0gKGZ1bmN0aW9uIChlKSB7DQogICAgICAgICAgICAgIGUgPSBlIHx8IHdpbmRvdy5ldmVudDsNCiAgICAgICAgICAgICAgaWYgKGUuZGV0YWlsICE9IDApIHsNCiAgICAgICAgICAgICAgICBkb25lKCk7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pKCk7DQogICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIGRvbmUoKTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0pLnRoZW4oYXN5bmMgKHt2YWx1ZX0pID0+IHsNCiAgICAgICAgdGhpcy5kb0xvZ29mZihfc2VsZWN0RGF0YSwgdmFsdWUpDQogICAgICB9KS5jYXRjaCgoZSkgPT4gew0KICAgICAgfSkNCiAgICB9LA0KICAgIC8qKg0KICAgICAqIOazqOmUgOaPkOS6pA0KICAgICAqLw0KICAgIGRvTG9nb2ZmOiBkZWJvdW5jZShhc3luYyBmdW5jdGlvbiAoX3NlbGVjdERhdGEsIGFnYWluUHdkKSB7DQogICAgICBsZXQgc3lzVGltZQ0KICAgICAgbGV0IGxrDQogICAgICBhd2FpdCB0aGlzLiRheGlvcy5nZXQoJy9zeXNQb2xpY3lDb250cm9sbGVyL2dldExpY2Vuc2VLZXknKS50aGVuKChyZXMpID0+IHsNCiAgICAgICAgc3lzVGltZSA9IHJlcy5kYXRhLnN5c1RpbWUNCiAgICAgICAgbGsgPSByZXMuZGF0YS5saw0KICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7DQogICAgICB9KQ0KDQogICAgICBjb25zdCBwYXJhbSA9IHsNCiAgICAgICAgaWQ6IF9zZWxlY3REYXRhLmlkLA0KICAgICAgICBhZ2FpblB3ZDogYWdhaW5Qd2QsDQogICAgICAgIHN5c1RpbWU6IHN5c1RpbWUsDQogICAgICAgIGxrOiBsaw0KICAgICAgfQ0KICAgICAgYXdhaXQgdGhpcy4kYXhpb3MucG9zdCgnL3N5c1VzZXJDb250cm9sbGVyL2xvZ09mZlVzZXInLCBwYXJhbSkudGhlbigocmVzKSA9PiB7DQogICAgICAgIGlmIChyZXMuY29kZSA9PSAwKSB7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsDQogICAgICAgICAgICBtZXNzYWdlOiByZXMuZGF0YQ0KICAgICAgICAgIH0pOw0KICAgICAgICAgIHRoaXMuZ2V0TGlzdCgpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgICAgdHlwZTogJ2Vycm9yJywNCiAgICAgICAgICAgIG1lc3NhZ2U6IHJlcy5kYXRhDQogICAgICAgICAgfSk7DQogICAgICAgIH0NCiAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4gew0KICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICB0eXBlOiAnZXJyb3InLA0KICAgICAgICAgIG1lc3NhZ2U6ICfliKDpmaTlpLHotKUhJw0KICAgICAgICB9KTsNCiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2UNCiAgICAgIH0pDQogICAgfSwgNTAwKSwNCiAgICAvLyDliJfooajnirbmgIHmoLzlvI/ljJYNCiAgICBzdGF0dXNGb3JtYXQoe2NlbGxWYWx1ZX0pIHsNCiAgICAgIGxldCBiZWxvbmdUbyA9ICfmnKrnn6XnmoTnsbvlnosnDQogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3RhdHVzT3B0aW9ucy5sZW5ndGg7IGkrKykgew0KICAgICAgICBpZiAoY2VsbFZhbHVlID09ICIwIikgew0KICAgICAgICAgIGJlbG9uZ1RvID0gIuato+W4uCINCiAgICAgICAgfSBlbHNlIGlmIChjZWxsVmFsdWUgPT0gIjEiKSB7DQogICAgICAgICAgYmVsb25nVG8gPSAi6ZSB5a6aIg0KICAgICAgICB9IGVsc2UgaWYgKGNlbGxWYWx1ZSA9PSAiMiIpIHsNCiAgICAgICAgICBiZWxvbmdUbyA9ICLms6jplIAiDQogICAgICAgIH0NCiAgICAgIH0NCiAgICAgIHJldHVybiBiZWxvbmdUbw0KICAgIH0sDQogICAgLy8g5YiX6KGo54q25oCB5qC85byP5YyWDQogICAgc2ZzaCh7Y2VsbFZhbHVlfSkgew0KICAgICAgbGV0IGJlbG9uZ1RvID0gJ+WQpicNCiAgICAgIGlmIChjZWxsVmFsdWUgPT0gIjEiKSB7DQogICAgICAgIGJlbG9uZ1RvID0gIuaYryINCiAgICAgIH0NCiAgICAgIHJldHVybiBiZWxvbmdUbw0KICAgIH0sDQogICAgLy8g5YiX6KGo54q25oCB5qC85byP5YyWDQogICAgdHlwZUZvcm1hdCh7Y2VsbFZhbHVlfSkgew0KICAgICAgbGV0IGJlbG9uZ1RvID0gJ+acquefpeeahOexu+WeiycNCiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50eXBlT3B0aW9ucy5sZW5ndGg7IGkrKykgew0KICAgICAgICBpZiAoY2VsbFZhbHVlID09ICIwIikgew0KICAgICAgICAgIGJlbG9uZ1RvID0gIueuoeeQhuWRmCINCiAgICAgICAgfSBlbHNlIGlmIChjZWxsVmFsdWUgPT0gIjEiKSB7DQogICAgICAgICAgYmVsb25nVG8gPSAi5Lia5Yqh55So5oi3Ig0KICAgICAgICB9DQogICAgICB9DQogICAgICByZXR1cm4gYmVsb25nVG8NCiAgICB9LA0KICAgIC8qKiDmkJzntKLmjInpkq7mk43kvZwgKi8NCiAgICBoYW5kbGVRdWVyeTogZGVib3VuY2UoZnVuY3Rpb24gKCkgew0KICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDENCiAgICAgIHRoaXMucGFnZVNpemUgPSAxMA0KICAgICAgdGhpcy5nZXRMaXN0KCkNCiAgICB9LCAxMDAwKSwNCiAgICAvKiog5p+l6K+i55So5oi35YiX6KGoICovDQogICAgYXN5bmMgZ2V0TGlzdCgpIHsNCiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7DQogICAgICBsZXQgc3lzVGltZQ0KICAgICAgbGV0IGxrDQogICAgICBhd2FpdCB0aGlzLiRheGlvcy5nZXQoJy9zeXNQb2xpY3lDb250cm9sbGVyL2dldExpY2Vuc2VLZXknKS50aGVuKChyZXMpID0+IHsNCiAgICAgICAgc3lzVGltZSA9IHJlcy5kYXRhLnN5c1RpbWUNCiAgICAgICAgbGsgPSByZXMuZGF0YS5saw0KICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7DQogICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOw0KICAgICAgfSkNCg0KICAgICAgdmFyIHNlYXJjaFBhcmFtcyA9IHsNCiAgICAgICAgY3VycmVudFBhZ2U6IHRoaXMuY3VycmVudFBhZ2UsDQogICAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLA0KICAgICAgICB1c2VybmFtZTogdGhpcy5xdWVyeVBhcmFtcy51c2VybmFtZSwNCiAgICAgICAgcGhvbmVudW1iZXI6IHRoaXMucXVlcnlQYXJhbXMucGhvbmVudW1iZXIsDQogICAgICAgIHN0YXR1czogdGhpcy5xdWVyeVBhcmFtcy5zdGF0dXMsDQogICAgICAgIHN5c1RpbWU6IHN5c1RpbWUsDQogICAgICAgIGxrOiBsaw0KICAgICAgfQ0KICAgICAgYXdhaXQgdGhpcy4kYXhpb3MuZ2V0KCcvc3lzVXNlckNvbnRyb2xsZXIvZ2V0QWxsJywNCiAgICAgICAge3BhcmFtczogc2VhcmNoUGFyYW1zfSkudGhlbigocmVzKSA9PiB7DQogICAgICAgIHRoaXMudXNlckxpc3QgPSByZXMuZGF0YQ0KICAgICAgICB0aGlzLnRvdGFsID0gcmVzLmRhdGEubGVuZ3RoDQoNCiAgICAgICAgaWYgKHJlcy5kYXRhLnJlY29yZHMgPT0gJycpIHsNCiAgICAgICAgICB0aGlzLnNob3dUYWJsZSA9IGZhbHNlDQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgdGhpcy5zaG93VGFibGUgPSB0cnVlDQogICAgICAgIH0NCiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2UNCiAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4gew0KICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsNCiAgICAgICAgLy8gdGhpcy4kbWVzc2FnZS5lcnJvcihlcnJvcikNCiAgICAgIH0pDQogICAgfSwNCiAgICAvLyDnlKjmiLfnirbmgIHkv67mlLkNCiAgICBoYW5kbGVTdGF0dXNDaGFuZ2Uocm93KSB7DQogICAgICBsZXQgdGV4dCA9IHJvdy5zdGF0dXMgPT09ICIwIiA/ICLlkK/nlKgiIDogIuWBnOeUqCI7DQogICAgICB0aGlzLiRtb2RhbC5jb25maXJtKCfnoa7orqTopoEiJyArIHRleHQgKyAnIiInICsgcm93LnVzZXJOYW1lICsgJyLnlKjmiLflkJfvvJ8nKS50aGVuKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgcmV0dXJuIGNoYW5nZVVzZXJTdGF0dXMocm93LnVzZXJJZCwgcm93LnN0YXR1cyk7DQogICAgICB9KS50aGVuKCgpID0+IHsNCiAgICAgICAgdGhpcy4kbW9kYWwubXNnU3VjY2Vzcyh0ZXh0ICsgIuaIkOWKnyIpOw0KICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCkgew0KICAgICAgICByb3cuc3RhdHVzID0gcm93LnN0YXR1cyA9PT0gIjAiID8gIjEiIDogIjAiOw0KICAgICAgfSk7DQogICAgfSwNCiAgICAvLyDlj5bmtojmjInpkq4NCiAgICBjYW5jZWwoKSB7DQogICAgICB0aGlzLmdldExpc3QoKQ0KICAgICAgdGhpcy5vcGVuID0gZmFsc2U7DQogICAgICB0aGlzLnJlc2V0KCk7DQogICAgfSwNCiAgICAvLyDop5LoibLlj5bmtojmjInpkq4NCiAgICBqc2NhbmNlbCgpIHsNCiAgICAgIHRoaXMuanNvcGVuID0gZmFsc2U7DQogICAgICB0aGlzLnVzZXJSb2xlSWQgPSAnJw0KICAgICAgdGhpcy5tZW51T3B0aW9ucz1bXQ0KICAgIH0sDQogICAgLy8g6KGo5Y2V6YeN572uDQogICAgcmVzZXQoKSB7DQogICAgICB0aGlzLmVkaXQgPSBmYWxzZTsNCiAgICAgIHRoaXMuZm9ybSA9IHsNCiAgICAgICAgaWQ6IHVuZGVmaW5lZCwNCiAgICAgICAgdXNlcm5hbWU6IHVuZGVmaW5lZCwNCiAgICAgICAgbmlja25hbWU6IHVuZGVmaW5lZCwNCiAgICAgICAgaWRjYXJkOiB1bmRlZmluZWQsDQogICAgICAgIHBob25lbnVtYmVyOiB1bmRlZmluZWQsDQogICAgICAgIG1haWxib3g6IHVuZGVmaW5lZCwNCiAgICAgICAgc3RhdHVzOiAiMCIsDQogICAgICAgIHVzZXJ0eXBlOiAiMCIsDQogICAgICAgIHJlbWFyazogdW5kZWZpbmVkLA0KICAgICAgICBleHBEYXRlOiB1bmRlZmluZWQNCiAgICAgIH07DQoNCiAgICAgIGlmICh0aGlzLiRyZWZzWyJmb3JtIl0pIHsNCiAgICAgICAgdGhpcy4kcmVmc1siZm9ybSJdLmNsZWFyVmFsaWRhdGUoKTsNCiAgICAgIH0NCiAgICB9LA0KICAgIC8qKiDph43nva7mjInpkq7mk43kvZwgKi8NCiAgICByZXNldFF1ZXJ5KCkgew0KICAgICAgdGhpcy5yZXNldEZvcm0oInF1ZXJ5Rm9ybSIpOw0KICAgIH0sDQogICAgLyoqIOaWsOWinuaMiemSruaTjeS9nCAqLw0KICAgIGhhbmRsZUFkZCgpIHsNCiAgICAgIHRoaXMucmVzZXQoKTsNCiAgICAgIHRoaXMuZWRpdCA9IGZhbHNlOw0KICAgICAgdGhpcy5vcGVuID0gdHJ1ZTsNCiAgICAgIHRoaXMudGl0bGUgPSAi5re75Yqg55So5oi3IjsNCiAgICAgIHRoaXMuZm9ybS5wYXNzd29yZCA9IHRoaXMuaW5pdFBhc3N3b3JkOw0KICAgIH0sDQogICAgLyoqIOaPkOS6pOaMiemSriAqLw0KICAgIHN1Ym1pdEZvcm06IGRlYm91bmNlKGZ1bmN0aW9uICgpIHsNCiAgICAgIHRoaXMuJHJlZnNbImZvcm0iXS52YWxpZGF0ZShhc3luYyB2YWxpZCA9PiB7DQogICAgICAgIGlmICh2YWxpZCkgew0KICAgICAgICAgIGlmICh0aGlzLmZvcm0uaWQgIT0gdW5kZWZpbmVkKSB7DQogICAgICAgICAgICB0aGlzLiRwcm9tcHQoJ+ivt+i+k+WFpeeZu+W9leWvhueggScsICfpibTliKvmk43kvZwnLCB7DQogICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJywNCiAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsDQogICAgICAgICAgICAgIGlucHV0VHlwZTogJ3Bhc3N3b3JkJywNCiAgICAgICAgICAgICAgLy8gY3VzdG9tQ2xhc3M6J25vLWF1dG9maWxsLXB3ZCcsDQogICAgICAgICAgICAgIGlucHV0VmFsaWRhdG9yOiAodmFsKSA9PiB7DQogICAgICAgICAgICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwubGVuZ3RoIDwgMSB8fCB2YWwubGVuZ3RoID4gMjApIHsNCiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgIGlucHV0RXJyb3JNZXNzYWdlOiAn5LiN6IO95Li656m6LOacgOWkmuWPr+W9leWFpTIw5Liq5a2X56ymJywNCiAgICAgICAgICAgICAgYmVmb3JlQ2xvc2UoYWN0aW9uLCBpbnN0YW5jZSwgZG9uZSkgew0KICAgICAgICAgICAgICAgIGlmIChhY3Rpb24gPT09ICJjb25maXJtIikgew0KICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuJHJlZnNbImNvbmZpcm0iXS4kZWwub25jbGljayA9IChmdW5jdGlvbiAoZSkgew0KICAgICAgICAgICAgICAgICAgICBlID0gZSB8fCB3aW5kb3cuZXZlbnQ7DQogICAgICAgICAgICAgICAgICAgIGlmIChlLmRldGFpbCAhPSAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICB9KSgpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICBkb25lKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KS50aGVuKGFzeW5jICh7dmFsdWV9KSA9PiB7DQogICAgICAgICAgICAgIGxldCBzeXNUaW1lDQogICAgICAgICAgICAgIGxldCBsaw0KICAgICAgICAgICAgICBhd2FpdCB0aGlzLiRheGlvcy5nZXQoJy9zeXNQb2xpY3lDb250cm9sbGVyL2dldExpY2Vuc2VLZXknKS50aGVuKChyZXMpID0+IHsNCiAgICAgICAgICAgICAgICBzeXNUaW1lID0gcmVzLmRhdGEuc3lzVGltZQ0KICAgICAgICAgICAgICAgIGxrID0gcmVzLmRhdGEubGsNCiAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7DQogICAgICAgICAgICAgIH0pDQogICAgICAgICAgICAgIHRoaXMuZm9ybS5zeXNUaW1lID0gc3lzVGltZQ0KICAgICAgICAgICAgICB0aGlzLmZvcm0ubGsgPSBsaw0KICAgICAgICAgICAgICB0aGlzLmZvcm0uYWdhaW5Qd2QgPSB2YWx1ZQ0KDQogICAgICAgICAgICAgIC8vIOabtOaWsOaTjeS9nA0KICAgICAgICAgICAgICBhd2FpdCB0aGlzLiRheGlvcy5wb3N0KCcvc3lzVXNlckNvbnRyb2xsZXIvdXBkYXRlVXNlcicsIHRoaXMuZm9ybSkudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgICAgICAgaWYgKHJlcy5jb2RlID09IDApIHsNCiAgICAgICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2VzcyhyZXMuZGF0YSkNCiAgICAgICAgICAgICAgICAgIHRoaXMub3BlbiA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpOw0KICAgICAgICAgICAgICAgICAgdGhpcy5nZXRMaXN0KCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmIChyZXMuY29kZSA9PSAxKSB7DQogICAgICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKHJlcy5kYXRhKQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZQ0KICAgICAgICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHsNCiAgICAgICAgICAgICAgICAvLyB0aGlzLiRtZXNzYWdlLmVycm9yKGVycm9yKQ0KICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlDQogICAgICAgICAgICAgIH0pDQogICAgICAgICAgICB9KS5jYXRjaCgoZSkgPT4gew0KICAgICAgICAgICAgfSkNCiAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgdGhpcy4kcHJvbXB0KCfor7fovpPlhaXnmbvlvZXlr4bnoIEnLCAn6Ym05Yir5pON5L2cJywgew0KICAgICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsDQogICAgICAgICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLA0KICAgICAgICAgICAgICBpbnB1dFR5cGU6ICdwYXNzd29yZCcsDQogICAgICAgICAgICAgIC8vIGN1c3RvbUNsYXNzOiduby1hdXRvZmlsbC1wd2QnLA0KICAgICAgICAgICAgICBpbnB1dFZhbGlkYXRvcjogKHZhbCkgPT4gew0KICAgICAgICAgICAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsLmxlbmd0aCA8IDEgfHwgdmFsLmxlbmd0aCA+IDIwKSB7DQogICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICBpbnB1dEVycm9yTWVzc2FnZTogJ+S4jeiDveS4uuepuizmnIDlpJrlj6/lvZXlhaUyMOS4quWtl+espicsDQogICAgICAgICAgICAgIGJlZm9yZUNsb3NlKGFjdGlvbiwgaW5zdGFuY2UsIGRvbmUpIHsNCiAgICAgICAgICAgICAgICBpZiAoYWN0aW9uID09PSAiY29uZmlybSIpIHsNCiAgICAgICAgICAgICAgICAgIGluc3RhbmNlLiRyZWZzWyJjb25maXJtIl0uJGVsLm9uY2xpY2sgPSAoZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgICAgICAgICAgICAgZSA9IGUgfHwgd2luZG93LmV2ZW50Ow0KICAgICAgICAgICAgICAgICAgICBpZiAoZS5kZXRhaWwgIT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgfSkoKTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgZG9uZSgpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSkudGhlbihhc3luYyAoe3ZhbHVlfSkgPT4gew0KICAgICAgICAgICAgICBsZXQgc3lzVGltZQ0KICAgICAgICAgICAgICBsZXQgbGsNCiAgICAgICAgICAgICAgYXdhaXQgdGhpcy4kYXhpb3MuZ2V0KCcvc3lzUG9saWN5Q29udHJvbGxlci9nZXRMaWNlbnNlS2V5JykudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgICAgICAgc3lzVGltZSA9IHJlcy5kYXRhLnN5c1RpbWUNCiAgICAgICAgICAgICAgICBsayA9IHJlcy5kYXRhLmxrDQogICAgICAgICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4gew0KICAgICAgICAgICAgICB9KQ0KICAgICAgICAgICAgICB0aGlzLmZvcm0uc3lzVGltZSA9IHN5c1RpbWUNCiAgICAgICAgICAgICAgdGhpcy5mb3JtLmxrID0gbGsNCiAgICAgICAgICAgICAgdGhpcy5mb3JtLmFnYWluUHdkID0gdmFsdWUNCg0KICAgICAgICAgICAgICAvLyDmm7TmlrDmk43kvZwNCiAgICAgICAgICAgICAgYXdhaXQgdGhpcy4kYXhpb3MucG9zdCgnL3N5c1VzZXJDb250cm9sbGVyL2FkZFVzZXInLCB0aGlzLmZvcm0pLnRoZW4oKHJlcykgPT4gew0KICAgICAgICAgICAgICAgIGlmIChyZXMuY29kZSA9PSAwKSB7DQogICAgICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MocmVzLmRhdGEpDQogICAgICAgICAgICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXQoKTsNCiAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0TGlzdCgpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAocmVzLmNvZGUgPT0gMSkgew0KICAgICAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihyZXMuZGF0YSkNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2UNCiAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7DQogICAgICAgICAgICAgICAgLy8gdGhpcy4kbWVzc2FnZS5lcnJvcihlcnJvcikNCiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZQ0KICAgICAgICAgICAgICB9KQ0KICAgICAgICAgICAgfSkuY2F0Y2goKGUpID0+IHsNCiAgICAgICAgICAgIH0pDQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9KTsNCiAgICB9LCAxMDAwKSwNCiAgICAvKiog6YeN572u5a+G56CB5oyJ6ZKu5pON5L2cICovDQogICAgaGFuZGxlUmVzZXRQd2Qocm93KSB7DQogICAgICBpZiAocm93LnNpZ25zdHIgPT0gJzEnKSB7DQogICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywNCiAgICAgICAgICBtZXNzYWdlOiAn5a2Y5Zyo5b6F5a6h5qC477yM5a6h5qC4566h55CG5ZGY5a6h5qC45ZCO6K+35Yi35paw5YiX6KGoJw0KICAgICAgICB9KTsNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQogICAgICBpZiAocm93LnN0YXR1cyA9PSAnMicpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgICAgIG1lc3NhZ2U6ICflt7Lms6jplIDnmoTotKblj7fkuI3og73liJ3lp4sv6YeN572u5a+G56CBIScNCiAgICAgICAgfSk7DQogICAgICAgIHJldHVybg0KICAgICAgfQ0KDQogICAgICB0aGlzLiRwcm9tcHQoJ+ivt+i+k+WFpeeZu+W9leWvhueggScsICfpibTliKvmk43kvZwnLCB7DQogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJywNCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsDQogICAgICAgIGlucHV0VHlwZTogJ3Bhc3N3b3JkJywNCiAgICAgICAgLy8gY3VzdG9tQ2xhc3M6J25vLWF1dG9maWxsLXB3ZCcsDQogICAgICAgIGlucHV0VmFsaWRhdG9yOiAodmFsKSA9PiB7DQogICAgICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwubGVuZ3RoIDwgMSB8fCB2YWwubGVuZ3RoID4gMjApIHsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIGlucHV0RXJyb3JNZXNzYWdlOiAn5LiN6IO95Li656m6LOacgOWkmuWPr+W9leWFpTIw5Liq5a2X56ymJywNCiAgICAgICAgYmVmb3JlQ2xvc2UoYWN0aW9uLCBpbnN0YW5jZSwgZG9uZSkgew0KICAgICAgICAgIGlmIChhY3Rpb24gPT09ICJjb25maXJtIikgew0KICAgICAgICAgICAgaW5zdGFuY2UuJHJlZnNbImNvbmZpcm0iXS4kZWwub25jbGljayA9IChmdW5jdGlvbiAoZSkgew0KICAgICAgICAgICAgICBlID0gZSB8fCB3aW5kb3cuZXZlbnQ7DQogICAgICAgICAgICAgIGlmIChlLmRldGFpbCAhPSAwKSB7DQogICAgICAgICAgICAgICAgZG9uZSgpOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KSgpOw0KICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBkb25lKCk7DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9KS50aGVuKGFzeW5jICh7dmFsdWV9KSA9PiB7DQogICAgICAgIHRoaXMuZG9SZXNldFB3ZChyb3csIHZhbHVlKQ0KICAgICAgfSkuY2F0Y2goKGUpID0+IHsNCiAgICAgIH0pDQogICAgfSwNCiAgICBkb1Jlc2V0UHdkOiBkZWJvdW5jZShhc3luYyBmdW5jdGlvbiAocm93LGFnYWluUHdkKSB7DQogICAgICBsZXQgc3lzVGltZQ0KICAgICAgbGV0IGxrDQogICAgICBhd2FpdCB0aGlzLiRheGlvcy5nZXQoJy9zeXNQb2xpY3lDb250cm9sbGVyL2dldExpY2Vuc2VLZXknKS50aGVuKChyZXMpID0+IHsNCiAgICAgICAgc3lzVGltZSA9IHJlcy5kYXRhLnN5c1RpbWUNCiAgICAgICAgbGsgPSByZXMuZGF0YS5saw0KICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7DQogICAgICB9KQ0KDQogICAgICBjb25zdCBwYXJhbSA9IHsNCiAgICAgICAgaWQ6IHJvdy5pZCwNCiAgICAgICAgYWdhaW5Qd2Q6IGFnYWluUHdkLA0KICAgICAgICBzeXNUaW1lOiBzeXNUaW1lLA0KICAgICAgICBsazogbGsNCiAgICAgIH0NCiAgICAgIGF3YWl0IHRoaXMuJGF4aW9zLnBvc3QoJy9zeXNVc2VyQ29udHJvbGxlci9yZXNldFBhc3N3b3JkJywgcGFyYW0pLnRoZW4oKHJlcykgPT4gew0KICAgICAgICBpZiAocmVzLmNvZGUgPT0gMCkgew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLA0KICAgICAgICAgICAgbWVzc2FnZTogJ+WIm+W7uuW5tuWPkemAgeaIkOWKnyEnDQogICAgICAgICAgfSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgICB0eXBlOiAnZXJyb3InLA0KICAgICAgICAgICAgbWVzc2FnZTogcmVzLmRhdGENCiAgICAgICAgICB9KTsNCiAgICAgICAgfQ0KICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7DQogICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgIHR5cGU6ICdlcnJvcicsDQogICAgICAgICAgbWVzc2FnZTogJ+WIm+W7uuWvhueggeWksei0pSEnDQogICAgICAgIH0pOw0KICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZQ0KICAgICAgfSkNCiAgICB9LCAxMDAwKSwNCg0KICAgIC8qKiDliKDpmaTmjInpkq7mk43kvZwgKi8NCiAgICBoYW5kbGVEZWxldGUoKSB7DQogICAgICBjb25zdCBfc2VsZWN0RGF0YSA9IHRoaXMuJHJlZnMudXNlclRhYmxlLmdldFJhZGlvUmVjb3JkKHRydWUpDQogICAgICBpZiAoX3NlbGVjdERhdGEgPT0gbnVsbCkgew0KICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICB0eXBlOiAnd2FybmluZycsDQogICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqeiusOW9lSEnDQogICAgICAgIH0pOw0KICAgICAgICByZXR1cm4NCiAgICAgIH0NCiAgICAgIGlmIChfc2VsZWN0RGF0YS5pZCA9PSAxKSB7DQogICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywNCiAgICAgICAgICBtZXNzYWdlOiAn5YaF572u57O757uf566h55CG5ZGY5LiN6IO95Yig6ZmkIScNCiAgICAgICAgfSk7DQogICAgICAgIHJldHVybg0KICAgICAgfQ0KICAgICAgaWYgKF9zZWxlY3REYXRhLmlkID09IDIpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgICAgIG1lc3NhZ2U6ICflhoXnva7lrqHorqHnrqHnkIblkZjkuI3og73liKDpmaQhJw0KICAgICAgICB9KTsNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQogICAgICBpZiAoX3NlbGVjdERhdGEuaWQgPT0gMjQpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgICAgIG1lc3NhZ2U6ICflhoXnva7lrqHmoLjnrqHnkIblkZjkuI3og73liKDpmaQhJw0KICAgICAgICB9KTsNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQogICAgICB0aGlzLiRwcm9tcHQoJ+ivt+i+k+WFpeWvhueggScsICfpibTliKvmk43kvZwnLCB7DQogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJywNCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsDQogICAgICAgIGlucHV0VHlwZTogJ3Bhc3N3b3JkJywNCiAgICAgICAgLy8gY3VzdG9tQ2xhc3M6J25vLWF1dG9maWxsLXB3ZCcsDQogICAgICAgIGlucHV0VmFsaWRhdG9yOiAodmFsKSA9PiB7DQogICAgICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwubGVuZ3RoIDwgMSB8fCB2YWwubGVuZ3RoID4gMjApIHsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIGlucHV0RXJyb3JNZXNzYWdlOiAn5LiN6IO95Li656m6LOacgOWkmuWPr+W9leWFpTIw5Liq5a2X56ymJywNCiAgICAgICAgYmVmb3JlQ2xvc2UoYWN0aW9uLCBpbnN0YW5jZSwgZG9uZSkgew0KICAgICAgICAgIGlmIChhY3Rpb24gPT09ICJjb25maXJtIikgew0KICAgICAgICAgICAgaW5zdGFuY2UuJHJlZnNbImNvbmZpcm0iXS4kZWwub25jbGljayA9IChmdW5jdGlvbiAoZSkgew0KICAgICAgICAgICAgICBlID0gZSB8fCB3aW5kb3cuZXZlbnQ7DQogICAgICAgICAgICAgIGlmIChlLmRldGFpbCAhPSAwKSB7DQogICAgICAgICAgICAgICAgZG9uZSgpOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KSgpOw0KICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBkb25lKCk7DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9KS50aGVuKGFzeW5jICh7dmFsdWV9KSA9PiB7DQogICAgICAgIHRoaXMuZG9EZWxldGUoX3NlbGVjdERhdGEsIHZhbHVlKQ0KICAgICAgfSkuY2F0Y2goKGUpID0+IHsNCiAgICAgIH0pDQogICAgfSwNCiAgICAvKioNCiAgICAgKiDliKDpmaTmj5DkuqQNCiAgICAgKi8NCiAgICBkb0RlbGV0ZTogZGVib3VuY2UoYXN5bmMgZnVuY3Rpb24gKF9zZWxlY3REYXRhLCBhZ2FpblB3ZCkgew0KICAgICAgbGV0IHN5c1RpbWUNCiAgICAgIGxldCBsaw0KICAgICAgYXdhaXQgdGhpcy4kYXhpb3MuZ2V0KCcvc3lzUG9saWN5Q29udHJvbGxlci9nZXRMaWNlbnNlS2V5JykudGhlbigocmVzKSA9PiB7DQogICAgICAgIHN5c1RpbWUgPSByZXMuZGF0YS5zeXNUaW1lDQogICAgICAgIGxrID0gcmVzLmRhdGEubGsNCiAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4gew0KICAgICAgfSkNCg0KICAgICAgY29uc3QgcGFyYW0gPSB7DQogICAgICAgIGlkOiBfc2VsZWN0RGF0YS5pZCwNCiAgICAgICAgYWdhaW5Qd2Q6IGFnYWluUHdkLA0KICAgICAgICBzeXNUaW1lOiBzeXNUaW1lLA0KICAgICAgICBsazogbGsNCiAgICAgIH0NCiAgICAgIGF3YWl0IHRoaXMuJGF4aW9zLnBvc3QoJy9zeXNVc2VyQ29udHJvbGxlci9kZWxVc2VyJywgcGFyYW0pLnRoZW4oKHJlcykgPT4gew0KICAgICAgICBpZiAocmVzLmNvZGUgPT0gMCkgew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLA0KICAgICAgICAgICAgbWVzc2FnZTogcmVzLmRhdGENCiAgICAgICAgICB9KTsNCiAgICAgICAgICB0aGlzLmdldExpc3QoKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsDQogICAgICAgICAgICBtZXNzYWdlOiByZXMuZGF0YQ0KICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ2Vycm9yJywNCiAgICAgICAgICBtZXNzYWdlOiAn5Yig6Zmk5aSx6LSlIScNCiAgICAgICAgfSk7DQogICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlDQogICAgICB9KQ0KICAgIH0sIDUwMCksDQogICAgLyoqIOS/ruaUueaMiemSruaTjeS9nCAqLw0KICAgIGhhbmRsZVVwZGF0ZSgpIHsNCiAgICAgIHRoaXMucmVzZXQoKTsNCiAgICAgIGxldCBfc2VsZWN0RGF0YSA9IHRoaXMuJHJlZnMudXNlclRhYmxlLmdldFJhZGlvUmVjb3JkKHRydWUpDQogICAgICBpZiAoX3NlbGVjdERhdGEgPT0gbnVsbCkgew0KICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICB0eXBlOiAnd2FybmluZycsDQogICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqeiusOW9lSEnDQogICAgICAgIH0pOw0KICAgICAgICByZXR1cm4NCiAgICAgIH0NCiAgICAgIGlmIChfc2VsZWN0RGF0YS5pZCA9PSAxKSB7DQogICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywNCiAgICAgICAgICBtZXNzYWdlOiAn5YaF572u57O757uf566h55CG5ZGY5LiN6IO95L+u5pS5IScNCiAgICAgICAgfSk7DQogICAgICAgIHJldHVybg0KICAgICAgfQ0KICAgICAgaWYgKF9zZWxlY3REYXRhLmlkID09IDIpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgICAgIG1lc3NhZ2U6ICflhoXnva7lrqHorqHnrqHnkIblkZjkuI3og73kv67mlLkhJw0KICAgICAgICB9KTsNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQogICAgICBpZiAoX3NlbGVjdERhdGEuaWQgPT0gMjQpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgICAgIG1lc3NhZ2U6ICflhoXnva7lrqHmoLjnrqHnkIblkZjkuI3og73kv67mlLkhJw0KICAgICAgICB9KTsNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQogICAgICBpZiAoX3NlbGVjdERhdGEuc3RhdHVzID09IDIpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgICAgIG1lc3NhZ2U6ICfms6jplIDnmoTotKblj7fkuI3og73mk43kvZwhJw0KICAgICAgICB9KTsNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQogICAgICBpZiAoX3NlbGVjdERhdGEuc2lnbnN0ciA9PSAnMScpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgICAgIG1lc3NhZ2U6ICflrZjlnKjlvoXlrqHmoLjvvIzlrqHmoLjnrqHnkIblkZjlrqHmoLjlkI7or7fliLfmlrDliJfooagnDQogICAgICAgIH0pOw0KICAgICAgICByZXR1cm4NCiAgICAgIH0NCiAgICAgIHRoaXMuZm9ybSA9IF9zZWxlY3REYXRhOw0KICAgICAgdGhpcy5vcGVuID0gdHJ1ZTsNCiAgICAgIHRoaXMudGl0bGUgPSAi5L+u5pS555So5oi3IjsNCiAgICAgIHRoaXMuZWRpdCA9IHRydWU7DQogICAgfSwNCg0KICAgIC8vIOWPlua2iOaMiemSrg0KICAgIGxvY2tmb3JtY2FuY2VsKCkgew0KICAgICAgdGhpcy5sb2Nrb3BlbiA9IGZhbHNlOw0KICAgICAgdGhpcy5sb2NrZm9ybSA9IHt9DQogICAgfSwNCiAgICBzdWJsb2NrZm9ybSgpew0KICAgICAgaWYgKHRoaXMubG9ja2Zvcm0uZXhwRGF0ZT09bnVsbCB8fCB0aGlzLmxvY2tmb3JtLmV4cERhdGU9PXVuZGVmaW5lZCl7DQogICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywNCiAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup5oiq5q2i5pel5pyfIScNCiAgICAgICAgfSk7DQogICAgICAgIHJldHVybg0KICAgICAgfQ0KICAgICAgaWYgKHRoaXMubG9ja2Zvcm0ucGFzc3dvcmQ9PW51bGwgfHwgdGhpcy5sb2NrZm9ybS5wYXNzd29yZD09dW5kZWZpbmVkKXsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgICAgIG1lc3NhZ2U6ICfor7fovpPlhaXnmbvlvZXlr4bnoIEhJw0KICAgICAgICB9KTsNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQogICAgICBjb25zdCBfc2VsZWN0RGF0YSA9IHRoaXMuJHJlZnMudXNlclRhYmxlLmdldFJhZGlvUmVjb3JkKHRydWUpDQogICAgICB0aGlzLmRvUmVsb2NrKF9zZWxlY3REYXRhLCB0aGlzLmxvY2tmb3JtLnBhc3N3b3JkLHRoaXMubG9ja2Zvcm0uZXhwRGF0ZSkNCiAgICB9LA0KICAgIC8qKiDop6PplIHmjInpkq7mk43kvZwgKi8NCiAgICBoYW5kbGVSZWxvY2soKSB7DQogICAgICBjb25zdCBfc2VsZWN0RGF0YSA9IHRoaXMuJHJlZnMudXNlclRhYmxlLmdldFJhZGlvUmVjb3JkKHRydWUpDQogICAgICBpZiAoX3NlbGVjdERhdGEgPT0gbnVsbCkgew0KICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICB0eXBlOiAnd2FybmluZycsDQogICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqeiusOW9lSEnDQogICAgICAgIH0pOw0KICAgICAgICByZXR1cm4NCiAgICAgIH0NCiAgICAgIGlmIChfc2VsZWN0RGF0YS5zdGF0dXMgPT0gMikgew0KICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICB0eXBlOiAnd2FybmluZycsDQogICAgICAgICAgbWVzc2FnZTogJ+azqOmUgOeahOi0puWPt+S4jeiDveaTjeS9nCEnDQogICAgICAgIH0pOw0KICAgICAgICByZXR1cm4NCiAgICAgIH0NCiAgICAgIGlmIChfc2VsZWN0RGF0YS5zdGF0dXMgIT09ICcxJykgew0KICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICB0eXBlOiAnd2FybmluZycsDQogICAgICAgICAgbWVzc2FnZTogJ+WPquiDveWvueOAkOmUgeWumuOAkeeKtuaAgeeahOi/m+ihjOino+mUgSEnDQogICAgICAgIH0pOw0KICAgICAgICByZXR1cm4NCiAgICAgIH0NCiAgICAgIGlmIChfc2VsZWN0RGF0YS5zaWduc3RyID09ICcxJykgew0KICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICB0eXBlOiAnd2FybmluZycsDQogICAgICAgICAgbWVzc2FnZTogJ+WtmOWcqOW+heWuoeaguO+8jOWuoeaguOeuoeeQhuWRmOWuoeaguOWQjuivt+WIt+aWsOWIl+ihqCcNCiAgICAgICAgfSk7DQogICAgICAgIHJldHVybg0KICAgICAgfQ0KDQogICAgICAvLyDliKTmlq3mmK/lkKbkuLTml7botKblj7cNCiAgICAgIGlmIChfc2VsZWN0RGF0YS5leHBEYXRlKXsNCiAgICAgICAgdGhpcy5sb2Nrb3BlbiA9IHRydWUNCiAgICAgIH0NCiAgICAgIGVsc2V7DQogICAgICAgIHRoaXMuJHByb21wdCgn6K+36L6T5YWl55m75b2V5a+G56CBJywgJ+mJtOWIq+aTjeS9nCcsIHsNCiAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsDQogICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsDQogICAgICAgICAgaW5wdXRUeXBlOiAncGFzc3dvcmQnLA0KICAgICAgICAgIC8vIGN1c3RvbUNsYXNzOiduby1hdXRvZmlsbC1wd2QnLA0KICAgICAgICAgIGlucHV0VmFsaWRhdG9yOiAodmFsKSA9PiB7DQogICAgICAgICAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbC5sZW5ndGggPCAxIHx8IHZhbC5sZW5ndGggPiAyMCkgew0KICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgICAgfSwNCiAgICAgICAgICBpbnB1dEVycm9yTWVzc2FnZTogJ+S4jeiDveS4uuepuizmnIDlpJrlj6/lvZXlhaUyMOS4quWtl+espicsDQogICAgICAgICAgYmVmb3JlQ2xvc2UoYWN0aW9uLCBpbnN0YW5jZSwgZG9uZSkgew0KICAgICAgICAgICAgaWYgKGFjdGlvbiA9PT0gImNvbmZpcm0iKSB7DQogICAgICAgICAgICAgIGluc3RhbmNlLiRyZWZzWyJjb25maXJtIl0uJGVsLm9uY2xpY2sgPSAoZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgICAgICAgICBlID0gZSB8fCB3aW5kb3cuZXZlbnQ7DQogICAgICAgICAgICAgICAgaWYgKGUuZGV0YWlsICE9IDApIHsNCiAgICAgICAgICAgICAgICAgIGRvbmUoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIH0pKCk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICBkb25lKCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICB9KS50aGVuKGFzeW5jICh7dmFsdWV9KSA9PiB7DQogICAgICAgICAgdGhpcy5kb1JlbG9jayhfc2VsZWN0RGF0YSwgdmFsdWUpDQogICAgICAgIH0pLmNhdGNoKChlKSA9PiB7DQogICAgICAgIH0pDQogICAgICB9DQogICAgfSwNCiAgICAvKioNCiAgICAgKiDop6PplIHmj5DkuqQNCiAgICAgKi8NCiAgICBkb1JlbG9jazogZGVib3VuY2UoYXN5bmMgZnVuY3Rpb24gKF9zZWxlY3REYXRhLCBhZ2FpblB3ZCxleHBEYXRlKSB7DQogICAgICBsZXQgc3lzVGltZQ0KICAgICAgbGV0IGxrDQogICAgICBhd2FpdCB0aGlzLiRheGlvcy5nZXQoJy9zeXNQb2xpY3lDb250cm9sbGVyL2dldExpY2Vuc2VLZXknKS50aGVuKChyZXMpID0+IHsNCiAgICAgICAgc3lzVGltZSA9IHJlcy5kYXRhLnN5c1RpbWUNCiAgICAgICAgbGsgPSByZXMuZGF0YS5saw0KICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7DQogICAgICB9KQ0KICAgICAgY29uc3QgcGFyYW0gPSB7DQogICAgICAgIGlkOiBfc2VsZWN0RGF0YS5pZCwNCiAgICAgICAgYWdhaW5Qd2Q6IGFnYWluUHdkLA0KICAgICAgICBleHBEYXRlOmV4cERhdGUsDQogICAgICAgIHN5c1RpbWU6IHN5c1RpbWUsDQogICAgICAgIGxrOiBsaw0KICAgICAgfQ0KICAgICAgYXdhaXQgdGhpcy4kYXhpb3MucG9zdCgnL3N5c1VzZXJDb250cm9sbGVyL3JlbG9ja1VzZXInLCBwYXJhbSkudGhlbigocmVzKSA9PiB7DQogICAgICAgIGlmIChyZXMuY29kZSA9PSAwKSB7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsDQogICAgICAgICAgICBtZXNzYWdlOiByZXMuZGF0YQ0KICAgICAgICAgIH0pOw0KICAgICAgICAgIHRoaXMuZ2V0TGlzdCgpOw0KICAgICAgICAgIHRoaXMubG9ja2Zvcm1jYW5jZWwoKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsDQogICAgICAgICAgICBtZXNzYWdlOiByZXMuZGF0YQ0KICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ2Vycm9yJywNCiAgICAgICAgICBtZXNzYWdlOiAn6Kej6ZSB5aSx6LSlIScNCiAgICAgICAgfSk7DQogICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlDQogICAgICB9KQ0KICAgIH0sIDEwMDApLA0KDQogICAgLyoqDQogICAgICog6KeS6Imy57G75Z6L5pS55Y+Y5pe25pu05pS55p2D6ZmQ5YiX6KGoDQogICAgICogQHBhcmFtIHJvd1JvbGVJZA0KICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHVua25vd24+fQ0KICAgICAqLw0KICAgIGdldE1lbnUocm93Um9sZUlkKXsNCiAgICAgIGNvbnN0IGEgPSB0aGlzLiRheGlvcw0KICAgICAgY29uc3QgX3RoaXMgPSB0aGlzDQogICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgew0KICAgICAgICBsZXQgc3lzVGltZQ0KICAgICAgICBsZXQgbGsNCiAgICAgICAgYXdhaXQgYS5nZXQoJy9zeXNQb2xpY3lDb250cm9sbGVyL2dldExpY2Vuc2VLZXknKS50aGVuKChyZXMpID0+IHsNCiAgICAgICAgICBzeXNUaW1lID0gcmVzLmRhdGEuc3lzVGltZQ0KICAgICAgICAgIGxrID0gcmVzLmRhdGEubGsNCiAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7DQogICAgICAgIH0pDQoNCg0KICAgICAgICB2YXIgcGFyYW0xID0gew0KICAgICAgICAgIHJvbGVJZDogcm93Um9sZUlkLA0KICAgICAgICAgIHN5c1RpbWU6IHN5c1RpbWUsDQogICAgICAgICAgbGs6IGxrDQogICAgICAgIH0NCg0KICAgICAgICBhd2FpdCBhLmdldCgnL3N5c01lbnVDb250cm9sbGVyL3JvbGVNZW51VHJlZXNlbGVjdEZvclVzZXInLA0KICAgICAgICAgIHtwYXJhbXM6IHBhcmFtMX0pLnRoZW4oKHJlcykgPT4gew0KICAgICAgICAgIF90aGlzLm1lbnVPcHRpb25zID0gcmVzLmRhdGEubWVudXM7DQogICAgICAgIH0pDQogICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHsNCiAgICAgICAgY29uc29sZS5lcnJvcign6I635Y+W55So5oi36KeS6Imy5Ye66ZSZJyArIGVycm9yKQ0KICAgICAgfSkNCiAgICB9LA0KICAgIGdldFVzZXJSb2xlKHVzZXJpZCkgew0KICAgICAgY29uc3QgYSA9IHRoaXMuJGF4aW9zDQogICAgICBjb25zdCBfdGhpcyA9IHRoaXMNCiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyBmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7DQogICAgICAgIGxldCBzeXNUaW1lDQogICAgICAgIGxldCBsaw0KICAgICAgICBhd2FpdCBhLmdldCgnL3N5c1BvbGljeUNvbnRyb2xsZXIvZ2V0TGljZW5zZUtleScpLnRoZW4oKHJlcykgPT4gew0KICAgICAgICAgIHN5c1RpbWUgPSByZXMuZGF0YS5zeXNUaW1lDQogICAgICAgICAgbGsgPSByZXMuZGF0YS5saw0KICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHsNCiAgICAgICAgfSkNCg0KICAgICAgICB2YXIgdXNlclJvbGVQYXJhbXMgPSB7DQogICAgICAgICAgdXNlcklkOiB1c2VyaWQsDQogICAgICAgICAgc3lzVGltZTogc3lzVGltZSwNCiAgICAgICAgICBsazogbGsNCiAgICAgICAgfQ0KICAgICAgICBhd2FpdCBhLmdldCgnL3N5c1VzZXJDb250cm9sbGVyL2dldFVzZXJSb2xlJywNCiAgICAgICAgICB7cGFyYW1zOiB1c2VyUm9sZVBhcmFtc30pLnRoZW4ocmVzID0+IHsNCiAgICAgICAgaWYgKHJlcy5kYXRhPT11bmRlZmluZWQpew0KICAgICAgICAgIF90aGlzLnVzZXJSb2xlSWQgPSAnJw0KICAgICAgICB9DQogICAgICAgIGVsc2V7DQogICAgICAgICAgX3RoaXMudXNlclJvbGVJZCA9IHJlcy5kYXRhLnJvbGVJZA0KICAgICAgICB9DQogICAgICAgICAgLy8g6L+U5ZuedXNlclJvbGXlr7nosaENCiAgICAgICAgICByZXNvbHZlKHJlcy5kYXRhKQ0KICAgICAgICB9KQ0KDQogICAgICAgIGxldCBzeXNUaW1lMQ0KICAgICAgICBsZXQgbGsxDQogICAgICAgIGF3YWl0ICBhLmdldCgnL3N5c1BvbGljeUNvbnRyb2xsZXIvZ2V0TGljZW5zZUtleScpLnRoZW4oKHJlcykgPT4gew0KICAgICAgICAgIHN5c1RpbWUxID0gcmVzLmRhdGEuc3lzVGltZQ0KICAgICAgICAgIGxrMSA9IHJlcy5kYXRhLmxrDQogICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4gew0KICAgICAgICB9KQ0KICAgICAgICB2YXIgcGFyYW0xID0gew0KICAgICAgICAgIHJvbGVJZDogX3RoaXMudXNlclJvbGVJZCwNCiAgICAgICAgICBzeXNUaW1lOiBzeXNUaW1lMSwNCiAgICAgICAgICBsazogbGsxDQogICAgICAgIH0NCg0KICAgICAgICBhd2FpdCBhLmdldCgnL3N5c01lbnVDb250cm9sbGVyL3JvbGVNZW51VHJlZXNlbGVjdEZvclVzZXInLA0KICAgICAgICAgIHtwYXJhbXM6IHBhcmFtMX0pLnRoZW4oKHJlcykgPT4gew0KICAgICAgICAgIF90aGlzLm1lbnVPcHRpb25zID0gcmVzLmRhdGEubWVudXM7DQogICAgICAgIH0pDQogICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHsNCiAgICAgICAgY29uc29sZS5lcnJvcign6I635Y+W55So5oi36KeS6Imy5Ye66ZSZJyArIGVycm9yKQ0KICAgICAgfSkNCiAgICB9LA0KICAgIGdldFJvbGVCeVR5cGUodXNlcnR5cGUpIHsNCiAgICAgIC8vIOagueaNrueUqOaIt+exu+Wei+iOt+WPluinkuiJsuWIl+ihqA0KICAgICAgY29uc3QgYSA9IHRoaXMuJGF4aW9zDQogICAgICBsZXQgX3RoaXMgPSB0aGlzDQogICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgew0KICAgICAgICBsZXQgc3lzVGltZQ0KICAgICAgICBsZXQgbGsNCiAgICAgICAgYXdhaXQgYS5nZXQoJy9zeXNQb2xpY3lDb250cm9sbGVyL2dldExpY2Vuc2VLZXknKS50aGVuKChyZXMpID0+IHsNCiAgICAgICAgICBzeXNUaW1lID0gcmVzLmRhdGEuc3lzVGltZQ0KICAgICAgICAgIGxrID0gcmVzLmRhdGEubGsNCiAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7DQogICAgICAgIH0pDQoNCiAgICAgICAgdmFyIHNlYXJjaFBhcmFtcyA9IHsNCiAgICAgICAgICB1c2VydHlwZTogdXNlcnR5cGUsDQogICAgICAgICAgc3lzVGltZTogc3lzVGltZSwNCiAgICAgICAgICBsazogbGsNCiAgICAgICAgfQ0KICAgICAgICBhd2FpdCBhLmdldCgnL3N5c1JvbGVDb250cm9sbGVyL2dldFJvbGVCeVR5cGUnLA0KICAgICAgICAgIHtwYXJhbXM6IHNlYXJjaFBhcmFtc30pLnRoZW4ocmVzID0+IHsNCiAgICAgICAgICBpZiAocmVzLmNvZGUgPT0gMCkgew0KICAgICAgICAgICAgLy8g6L+U5Zue6KeS6Imy5YiX6KGoDQogICAgICAgICAgICBfdGhpcy5yb2xlTGlzdCA9IHJlcy5kYXRhDQogICAgICAgICAgICByZXNvbHZlKHJlcy5kYXRhKQ0KICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAvLyDovpPlh7rlkI7nq6/ov5Tlm57kv6Hmga8NCiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLA0KICAgICAgICAgICAgICBtZXNzYWdlOiByZXMuZGF0YQ0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgfQ0KICAgICAgICB9KQ0KICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7DQogICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlDQogICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoZXJyb3IpDQogICAgICB9KQ0KICAgIH0sDQogICAgLyoqIOWIhumFjeinkuiJsuaTjeS9nCAqLw0KICAgIGhhbmRsZUF1dGhSb2xlOiBkZWJvdW5jZShmdW5jdGlvbiAocm93KSB7DQogICAgICBpZiAodGhpcy5zeXNSb2xlLnJvbGVLZXk9PSdYVEdMJyAmJiByb3cudXNlcnR5cGU9PScxJyl7DQogICAgICAgIC8vIOezu+e7n+euoeeQhuWRmOS4jeiDvee7meS4muWKoeeUqOaIt+WIhumFjeadg+mZkA0KICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICB0eXBlOiAnd2FybmluZycsDQogICAgICAgICAgbWVzc2FnZTogJ+ezu+e7n+euoeeQhuWRmOS4jeiDvee7meS4muWKoeeUqOaIt+WIhumFjeadg+mZkO+8jOivt+S4muWKoeeuoeeQhuWRmOi/m+ihjOWIhumFjSEnDQogICAgICAgIH0pOw0KICAgICAgICByZXR1cm4NCiAgICAgIH0NCiAgICAgIGlmIChyb3cuaWQgPT0gMSkgew0KICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICB0eXBlOiAnd2FybmluZycsDQogICAgICAgICAgbWVzc2FnZTogJ+WGhee9ruezu+e7n+euoeeQhuWRmOS4jeiDveWIhumFjeinkuiJsiEnDQogICAgICAgIH0pOw0KICAgICAgICByZXR1cm4NCiAgICAgIH0NCiAgICAgIGlmIChyb3cuaWQgPT0gMikgew0KICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICB0eXBlOiAnd2FybmluZycsDQogICAgICAgICAgbWVzc2FnZTogJ+WGhee9ruWuoeiuoeeuoeeQhuWRmOS4jeiDveWIhumFjeinkuiJsiEnDQogICAgICAgIH0pOw0KICAgICAgICByZXR1cm4NCiAgICAgIH0NCiAgICAgIGlmIChyb3cuaWQgPT0gMjQpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgICAgIG1lc3NhZ2U6ICflhoXnva7lrqHmoLjnrqHnkIblkZjkuI3og73liIbphY3op5LoibIhJw0KICAgICAgICB9KTsNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQogICAgICBpZiAocm93LnN0YXR1cyA9PSAnMicpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgICAgIG1lc3NhZ2U6ICfms6jplIDnmoTotKblj7fkuI3og73mk43kvZwhJw0KICAgICAgICB9KTsNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQogICAgICBpZiAocm93LnNpZ25zdHIgPT0gJzEnKSB7DQogICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywNCiAgICAgICAgICBtZXNzYWdlOiAn5a2Y5Zyo5b6F5a6h5qC477yM5a6h5qC4566h55CG5ZGY5a6h5qC45ZCO6K+35Yi35paw5YiX6KGoJw0KICAgICAgICB9KTsNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQoNCiAgICAgIHRoaXMuanN1c2VyaWQgPSByb3cuaWQNCiAgICAgIHRoaXMuanN1c2VybmFtZSA9IHJvdy51c2VybmFtZQ0KICAgICAgdGhpcy5qc25pY2tuYW1lID0gcm93Lm5pY2tuYW1lDQoNCiAgICAgIHRoaXMuZ2V0Um9sZUJ5VHlwZShyb3cudXNlcnR5cGUpDQogICAgICB0aGlzLmdldFVzZXJSb2xlKHRoaXMuanN1c2VyaWQpDQogICAgICB0aGlzLmpzb3BlbiA9IHRydWU7DQogICAgICB0aGlzLnRpdGxlID0gIuWIhumFjeinkuiJsiI7DQogICAgICAvLyBQcm9taXNlLmFsbChbdGhpcy5nZXRSb2xlQnlUeXBlKHJvdy51c2VydHlwZSksIHRoaXMuZ2V0VXNlclJvbGUodGhpcy5qc3VzZXJpZCldKS50aGVuKChyZXMpID0+IHsNCiAgICAgIC8vICAgaWYgKHJlc1sxXSAhPSAnJyAmJiByZXNbMV0gIT0gdW5kZWZpbmVkKSB7DQogICAgICAvLyAgICAgY29uc3Qgcm9sZVRhYmxlID0gdGhpcy4kcmVmcy54VGFibGUuZ2V0VGFibGVEYXRhKCkNCiAgICAgIC8vICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJvbGVUYWJsZS50YWJsZURhdGEubGVuZ3RoOyBpKyspIHsNCiAgICAgIC8vICAgICAgIGlmIChyZXNbMV0ucm9sZUlkID09IHJvbGVUYWJsZS50YWJsZURhdGFbaV0ucm9sZUlkKSB7DQogICAgICAvLyAgICAgICAgIC8vIOWwhuWOn+acieeahOinkuiJsuWLvumAieS4ig0KICAgICAgLy8gICAgICAgICB0aGlzLiRyZWZzLnhUYWJsZS5zZXRDaGVja2JveFJvdyhyb2xlVGFibGUudGFibGVEYXRhW2ldLCB0cnVlKQ0KICAgICAgLy8gICAgICAgfQ0KICAgICAgLy8gICAgIH0NCiAgICAgIC8vICAgfQ0KICAgICAgLy8gfSkuY2F0Y2goZSA9PiB7DQogICAgICAvLyAgIHRoaXMubG9hZGluZyA9IGZhbHNlDQogICAgICAvLyAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoIuiOt+WPluWIhumFjeinkuiJsuW8guW4uO+8miIgKyBlKQ0KICAgICAgLy8gfSkNCiAgICB9LCAxMDAwKSwNCg0KDQogICAgLyoqIOinkuiJsuWIhumFjeaPkOS6pOaMiemSriAqLw0KICAgIGpzc3VibWl0Rm9ybTogZGVib3VuY2UoYXN5bmMgZnVuY3Rpb24gKCkgew0KICAgICAgdGhpcy4kcHJvbXB0KCfor7fovpPlhaXnmbvlvZXlr4bnoIEnLCAn6Ym05Yir5pON5L2cJywgew0KICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsDQogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLA0KICAgICAgICBpbnB1dFR5cGU6ICdwYXNzd29yZCcsDQogICAgICAgIC8vIGN1c3RvbUNsYXNzOiduby1hdXRvZmlsbC1wd2QnLA0KICAgICAgICBpbnB1dFZhbGlkYXRvcjogKHZhbCkgPT4gew0KICAgICAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsLmxlbmd0aCA8IDEgfHwgdmFsLmxlbmd0aCA+IDIwKSB7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICBpbnB1dEVycm9yTWVzc2FnZTogJ+S4jeiDveS4uuepuizmnIDlpJrlj6/lvZXlhaUyMOS4quWtl+espicsDQogICAgICAgIGJlZm9yZUNsb3NlKGFjdGlvbiwgaW5zdGFuY2UsIGRvbmUpIHsNCiAgICAgICAgICBpZiAoYWN0aW9uID09PSAiY29uZmlybSIpIHsNCiAgICAgICAgICAgIGluc3RhbmNlLiRyZWZzWyJjb25maXJtIl0uJGVsLm9uY2xpY2sgPSAoZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgICAgICAgZSA9IGUgfHwgd2luZG93LmV2ZW50Ow0KICAgICAgICAgICAgICBpZiAoZS5kZXRhaWwgIT0gMCkgew0KICAgICAgICAgICAgICAgIGRvbmUoKTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSkoKTsNCiAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgZG9uZSgpOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfSkudGhlbihhc3luYyAoe3ZhbHVlfSkgPT4gew0KICAgICAgICBsZXQgc3lzVGltZQ0KICAgICAgICBsZXQgbGsNCiAgICAgICAgYXdhaXQgdGhpcy4kYXhpb3MuZ2V0KCcvc3lzUG9saWN5Q29udHJvbGxlci9nZXRMaWNlbnNlS2V5JykudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgc3lzVGltZSA9IHJlcy5kYXRhLnN5c1RpbWUNCiAgICAgICAgICBsayA9IHJlcy5kYXRhLmxrDQogICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4gew0KICAgICAgICB9KQ0KDQogICAgICAgIC8vIOaPkOS6pOWQjuWPsOinkuiJsuWIhumFjQ0KICAgICAgICBjb25zdCBwYXJhbSA9IHsNCiAgICAgICAgICB1c2VySWQ6IHRoaXMuanN1c2VyaWQsDQogICAgICAgICAgcm9sZUlkOiB0aGlzLnVzZXJSb2xlSWQsDQogICAgICAgICAgc3lzVGltZTogc3lzVGltZSwNCiAgICAgICAgICBsazogbGssDQogICAgICAgICAgYWdhaW5Qd2Q6IHZhbHVlDQogICAgICAgIH0NCiAgICAgICAgYXdhaXQgdGhpcy4kYXhpb3MucG9zdCgnL3N5c1VzZXJDb250cm9sbGVyL2F1dGhSb2xlJywgcGFyYW0pLnRoZW4oKHJlcykgPT4gew0KICAgICAgICAgIGlmIChyZXMuY29kZSA9PSAwKSB7DQogICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLA0KICAgICAgICAgICAgICBtZXNzYWdlOiByZXMuZGF0YQ0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB0aGlzLmpzY2FuY2VsKCkNCiAgICAgICAgICAgIHRoaXMuZ2V0TGlzdCgpDQogICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLA0KICAgICAgICAgICAgICBtZXNzYWdlOiByZXMuZGF0YQ0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgfQ0KICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsDQogICAgICAgICAgICBtZXNzYWdlOiAn6KeS6Imy5YiG6YWN5aSx6LSlIScNCiAgICAgICAgICB9KTsNCiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZQ0KICAgICAgICB9KQ0KICAgICAgfSkuY2F0Y2goKGUpID0+IHsNCiAgICAgIH0pDQogICAgfSwgMTAwMCkNCiAgfQ0KfTsNCg=="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwUA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/views/sysManager/userManager","sourcesContent":["\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"]}]}