{"remainingRequest":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\infoMgmtPatrolsRescues\\infoMgmtPatrolsManage\\components\\EditAddPage\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\infoMgmtPatrolsRescues\\infoMgmtPatrolsManage\\components\\EditAddPage\\index.vue","mtime":1742291051279},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\babel.config.js","mtime":1741314102158},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5maW5kLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IubWFwLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuanNvbi5zdHJpbmdpZnkuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwoKaW1wb3J0IFB1YlN1YiBmcm9tICdwdWJzdWItanMnOwppbXBvcnQgeyBnZXRUcmVlLCB0YWJsZUFkZCwgdGFibGVEZXRhaWwsIHRhYmxlRWRpdCB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL2luZm9NZ210UGF0cm9sc01hbmFnZSc7CmltcG9ydCB7IGdldERpY3Rpb25hcnlCeUNvZGUgfSBmcm9tICdAL3V0aWxzL2RpY3Rpb25hcnknOwppbXBvcnQgeyBsbmdBbmRMYXRUb1BpZSB9IGZyb20gJ0AvdXRpbHMvcG9pbnRDb252ZXJzaW9uJzsKaW1wb3J0IFJvYWRDaG9pY2VEaWFsb2cgZnJvbSAnLi9jb21wb25lbnRzL1JvYWRDaG9pY2VEaWFsb2cnOwppbXBvcnQgTWluZU1hcCBmcm9tICdAL2NvbXBvbmVudHMvTWluZU1hcC9pbmRleC52dWUnOwppbXBvcnQgeyByZWZpbmVSZXF1ZXN0Qm9keSB9IGZyb20gJ0AvdXRpbHMvcmVxdWVzdFdyYXBwZXJzJzsKaW1wb3J0IHsgdGFibGVEYXRhIGFzIHJvYWRTZWN0aW9uSW5mb0ludGVyIH0gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL2luZm9NZ210UGF0cm9sc1Jlc2N1ZXMvcm9hZFNlY3Rpb25JbmZvJzsKaW1wb3J0IHsgdGFibGVEYXRhIGFzIHRlYW1EYXRhIH0gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL2luZm9NZ210UGF0cm9sc1Jlc2N1ZXMvcGF0cm9sQW5kUmVzY3VlVGVhbXNNZ210JzsKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICdFZGl0QWRkUGFnZScsCiAgY29tcG9uZW50czogewogICAgTWluZU1hcDogTWluZU1hcCwKICAgIFJvYWRDaG9pY2VEaWFsb2c6IFJvYWRDaG9pY2VEaWFsb2cKICB9LAogIHByb3BzOiB7CiAgICBjb21wb25lbnROYW1lOiB7CiAgICAgIGRlZmF1bHQ6ICdFZGl0QWRkUGFnZScsCiAgICAgIHR5cGU6IFN0cmluZwogICAgfQogIH0sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIHJlc291cmNlTGlzdDogW3sKICAgICAgICB2YWx1ZTogMSwKICAgICAgICBuYW1lOiAn5beh5p+l6am754K5JwogICAgICB9XSwKICAgICAgYWRkRWRpdEZvcm06IHsKICAgICAgICB0eXBlOiAxLAogICAgICAgIGxuZzogJycsCiAgICAgICAgbGF0OiAnJywKICAgICAgICAvLyB0eXBlOiAxLAogICAgICAgIGRpcmVjdGlvbjogJzEnLAogICAgICAgIHJvYWROYW1lOiAnJwogICAgICB9LAogICAgICBhZGRFZGl0UnVsZXM6IHsKICAgICAgICBuYW1lOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5beh5p+l54K55ZCN56ew5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJywgJ2JsdXInXQogICAgICAgIH1dLAogICAgICAgIC8vIGR1dHlOdW06IFsKICAgICAgICAvLyAgIHsKICAgICAgICAvLyAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgLy8gICAgIG1lc3NhZ2U6ICflgLznj63kurrmlbDkuI3og73kuLrnqbonLAogICAgICAgIC8vICAgICB0cmlnZ2VyOiBbJ2NoYW5nZScsICdibHVyJ10KICAgICAgICAvLyAgIH0KICAgICAgICAvLyBdLAogICAgICAgIC8vIGR1dHlUZWw6IFsKICAgICAgICAvLyAgIHsKICAgICAgICAvLyAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgLy8gICAgIG1lc3NhZ2U6ICflgLznj63nlLXor53kuI3og73kuLrnqbonLAogICAgICAgIC8vICAgICB0cmlnZ2VyOiBbJ2NoYW5nZScsICdibHVyJ10KICAgICAgICAvLyAgIH0sCiAgICAgICAgLy8gICB7CiAgICAgICAgLy8gICAgIHBhdHRlcm46IC9cZHszfS1cZHs4fXxcZHs0fS1cZHs3fXxeMSgzWzAtOV18NFs1N118NVswLTM1LTldfDdbMDY3OF18OFswLTldKVxkezh9JC8sIG1lc3NhZ2U6ICflgLznj63nlLXor53ovpPlhaXmnInor68nLCB0cmlnZ2VyOiAnYmx1cicKICAgICAgICAvLyAgIH0KICAgICAgICAvLyBdLAogICAgICAgIC8vIHR1cm5OdW06IFsKICAgICAgICAvLyAgIHsKICAgICAgICAvLyAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgLy8gICAgIG1lc3NhZ2U6ICfova7nj63kurrmlbDkuI3og73kuLrnqbonLAogICAgICAgIC8vICAgICB0cmlnZ2VyOiBbJ2NoYW5nZScsICdibHVyJ10KICAgICAgICAvLyAgIH0KICAgICAgICAvLyBdLAogICAgICAgIC8vIGxpbmtOYW1lOiBbCiAgICAgICAgLy8gICB7CiAgICAgICAgLy8gICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgIC8vICAgICBtZXNzYWdlOiAn6LSf6LSj5Lq65LiN6IO95Li656m6JywKICAgICAgICAvLyAgICAgdHJpZ2dlcjogWydjaGFuZ2UnLCAnYmx1ciddCiAgICAgICAgLy8gICB9CiAgICAgICAgLy8gXSwKICAgICAgICAvLyBsaW5rVGVsOiBbCiAgICAgICAgLy8gICB7CiAgICAgICAgLy8gICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgIC8vICAgICBtZXNzYWdlOiAn6LSf6LSj5Lq66IGU57O755S16K+d5LiN6IO95Li656m6JywKICAgICAgICAvLyAgICAgdHJpZ2dlcjogWydjaGFuZ2UnLCAnYmx1ciddCiAgICAgICAgLy8gICB9LAogICAgICAgIC8vICAgewogICAgICAgIC8vICAgICBwYXR0ZXJuOiAvXjEoM1swLTldfDRbNTddfDVbMC0zNS05XXw3WzA2NzhdfDhbMC05XSlcZHs4fSQvLCBtZXNzYWdlOiAn6LSf6LSj5Lq66IGU57O755S16K+d6L6T5YWl5pyJ6K+vJywgdHJpZ2dlcjogJ2JsdXInCiAgICAgICAgLy8gICB9CiAgICAgICAgLy8gXSwKCiAgICAgICAgdGVhbUlkOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5omA5bGe5beh5p+l5pWR5o+06Zif5LyN5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJywgJ2JsdXInXQogICAgICAgIH1dLAogICAgICAgIC8vIG1vbml0b3JUZWw6IFsKICAgICAgICAvLyAgIHsKICAgICAgICAvLyAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgLy8gICAgIG1lc3NhZ2U6ICfmiYDlsZ7nm5HmjqfkuK3lv4PnlLXor53kuI3og73kuLrnqbonLAogICAgICAgIC8vICAgICB0cmlnZ2VyOiBbJ2NoYW5nZScsICdibHVyJ10KICAgICAgICAvLyAgIH0sCiAgICAgICAgLy8gICB7CiAgICAgICAgLy8gICAgIHBhdHRlcm46IC9cZHszfS1cZHs4fXxcZHs0fS1cZHs3fS8sIG1lc3NhZ2U6ICfmiYDlsZ7nm5HmjqfkuK3lv4PnlLXor53ovpPlhaXmoLzlvI/mnInor68nLCB0cmlnZ2VyOiAnYmx1cicKICAgICAgICAvLyAgIH0KICAgICAgICAvLyBdLAogICAgICAgIC8vIG1hbmFnZW1lbnREOiBbCiAgICAgICAgLy8gICB7CiAgICAgICAgLy8gICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgIC8vICAgICBtZXNzYWdlOiAn5omA566h6L6W5Yy65Lqk6YCa57u85ZCI5omn5rOV5aSn6Zif5LiN6IO95Li656m6JywKICAgICAgICAvLyAgICAgdHJpZ2dlcjogWydjaGFuZ2UnLCAnYmx1ciddCiAgICAgICAgLy8gICB9CiAgICAgICAgLy8gXSwKCiAgICAgICAgLy8gbG5nOiBbCiAgICAgICAgLy8gICB7CiAgICAgICAgLy8gICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgIC8vICAgICBtZXNzYWdlOiAn57uP5bqm5LiN6IO95Li656m6JywKICAgICAgICAvLyAgICAgdHJpZ2dlcjogWydjaGFuZ2UnLCAnYmx1ciddCiAgICAgICAgLy8gICB9CiAgICAgICAgLy8gXSwKICAgICAgICAvLyBsYXQ6IFsKICAgICAgICAvLyAgIHsKICAgICAgICAvLyAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgLy8gICAgIG1lc3NhZ2U6ICfnuqzluqbkuI3og73kuLrnqbonLAogICAgICAgIC8vICAgICB0cmlnZ2VyOiBbJ2NoYW5nZScsICdibHVyJ10KICAgICAgICAvLyAgIH0KICAgICAgICAvLyBdLAogICAgICAgIHR5cGU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICflnLrmiYDnsbvlnosnLAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnLCAnYmx1ciddCiAgICAgICAgfV0sCiAgICAgICAgcGVnOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn54K55L2N5qGp5Y+3JywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJywgJ2JsdXInXQogICAgICAgIH1dLAogICAgICAgIHBlZ0FkZDogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+eCueS9jeahqeWPt+mZhOWKoCcsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZScsICdibHVyJ10KICAgICAgICB9XSwKICAgICAgICBwZWdWYWw6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfngrnkvY3moanlj7flhajlgLzkuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnLCAnYmx1ciddCiAgICAgICAgfV0KICAgICAgICAvLyByZXNjdXNUZWw6IFsKICAgICAgICAvLyAgIHsKICAgICAgICAvLyAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgLy8gICAgIG1lc3NhZ2U6ICfmlZHmj7TmnI3liqHnlLXor53kuI3og73kuLrnqbonLAogICAgICAgIC8vICAgICB0cmlnZ2VyOiBbJ2NoYW5nZScsICdibHVyJ10KICAgICAgICAvLyAgIH0sCiAgICAgICAgLy8gICB7CiAgICAgICAgLy8gICAgIHBhdHRlcm46IC9cZHszfS1cZHs4fXxcZHs0fS1cZHs3fS8sIG1lc3NhZ2U6ICfmlZHmj7TmnI3liqHnlLXor53ovpPlhaXmoLzlvI/mnInor68nLCB0cmlnZ2VyOiAnYmx1cicKICAgICAgICAvLyAgIH0KICAgICAgICAvLyBdCiAgICAgIH0sCiAgICAgIHNhdmVMb2FkaW5nOiBmYWxzZSwKICAgICAgLy8g5LiK5LygbG9hZGluZwogICAgICBpZDogJycsCiAgICAgIC8vIGlk5qCH6K+G56ymCiAgICAgIHdoZXRoZXJUb0NhbmNlbDogZmFsc2UsCiAgICAgIHJvYWRDaG9pY2VEaWFsb2c6IGZhbHNlLAogICAgICAvLyDmmK/lkKblsZXnpLrpgInmi6not6/mrrXlvLnlsYIKICAgICAgcm91dGVyRGF0YTogW10sCiAgICAgIC8vIOi3r+e6v+aVsOaNrgogICAgICBwdWJTdWI6IG51bGwsCiAgICAgIC8vIG1hcExvYWRpbmc6IHRydWUsIC8vIOWcsOWbvuWKoOi9vWxvYWRpbmcKICAgICAgbWFwOiBudWxsLAogICAgICBtYXBEZWZhdWx0T3B0aW9uczogewogICAgICAgIGNlbnRlcjogWzEwNi41NTA3LCAyOS41NjQ3XSAvKuWcsOWbvuS4reW/g+eCuSovLAogICAgICAgIHpvb206IDkgLyrlnLDlm77pu5jorqTnvKnmlL7nrYnnuqcqLwogICAgICB9LAogICAgICBtYXJrZXJzOiBbXSwKICAgICAgdGVhbVRyZWVEYXRhOiBbXSwKICAgICAgLy8g5pWR5o+06Zif5LyN57uE57uH5qCRCiAgICAgIG1vbml0b3JUcmVlRGF0YTogW10sCiAgICAgIC8vIOebkeaOp+S4reW/g+e7hOe7h+agkQogICAgICByb2FkT3B0aW9uczogW10sCiAgICAgIHRlYW1PcHRpb25zOiBbXQogICAgfTsKICB9LAogIHdhdGNoOiB7CiAgICBjb21wb25lbnROYW1lOiB7CiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIobmV3VmFsKSB7CiAgICAgICAgaWYgKG5ld1ZhbCA9PT0gdGhpcy4kb3B0aW9ucy5uYW1lKSB7CiAgICAgICAgICB0aGlzLm9wZW5QYWdlKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuY2xvc2VQYWdlKCk7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkgewogICAgdGhpcy5nZXRPcmdUcmVlRGF0YSgpOwogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICB0aGlzLnB1YlN1YiA9IFB1YlN1Yi5zdWJzY3JpYmUoJ0VkaXRBZGRQYWdlJywgZnVuY3Rpb24gKF8sIGRhdGEpIHsKICAgICAgY29uc29sZS5sb2coZGF0YSwgJy8vLy8vLy8vJyk7CiAgICAgIGlmIChkYXRhLnJvYWROYW1lICE9PSAnJykgewogICAgICAgIF90aGlzLmFkZEVkaXRGb3JtLnJvYWROYW1lID0gKGRhdGEgPT09IG51bGwgfHwgZGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGF0YS5yb2FkTmFtZSkgfHwgJyc7CiAgICAgICAgX3RoaXMuYWRkRWRpdEZvcm0ucm9hZElkID0gKGRhdGEgPT09IG51bGwgfHwgZGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGF0YS5jYXRhbG9nSWQpIHx8ICcnOwogICAgICAgIF90aGlzLmFkZEVkaXRGb3JtLnJvYWRGdWxsSWQgPSAoZGF0YSA9PT0gbnVsbCB8fCBkYXRhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkYXRhLnBhdGgpIHx8ICcnOwogICAgICB9CiAgICAgIGlmIChkYXRhLmlkKSB7CiAgICAgICAgX3RoaXMuaWQgPSBkYXRhLmlkOwogICAgICAgIF90aGlzLmdldERldGFpbChkYXRhLmlkKTsKICAgICAgfSBlbHNlIHt9CiAgICAgIGlmIChkYXRhLmNsZWFyRm9ybSkgewogICAgICAgIF90aGlzLnJlc2V0Rm9ybURhdGEoZGF0YSk7IC8vIOaWsOWinuaXtumHjee9ruihqOWNlQogICAgICB9IGVsc2UgaWYgKGRhdGEuaWQpIHsKICAgICAgICBfdGhpcy5pZCA9IGRhdGEuaWQ7CiAgICAgICAgX3RoaXMuZ2V0RGV0YWlsKGRhdGEuaWQpOwogICAgICB9CiAgICAgIF90aGlzLmdldFJvYWREYXRhKCk7CiAgICB9KTsKICB9LAogIG1ldGhvZHM6IHsKICAgIC8vIOmHjee9ruihqOWNleaVsOaNrgogICAgcmVzZXRGb3JtRGF0YTogZnVuY3Rpb24gcmVzZXRGb3JtRGF0YSh0cmVlRGF0YSkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgY29uc29sZS5sb2codHJlZURhdGEsICdzZGFkYWRhZGFkYXdkJyk7CiAgICAgIHRoaXMuYWRkRWRpdEZvcm0gPSB7CiAgICAgICAgdHlwZTogMSwKICAgICAgICBsbmc6ICcnLAogICAgICAgIGxhdDogJycsCiAgICAgICAgZGlyZWN0aW9uOiAnMScsCiAgICAgICAgcm9hZE5hbWU6IHRyZWVEYXRhLnJvYWROYW1lIHx8ICcnLAogICAgICAgIHJvYWRJZDogdHJlZURhdGEuY2F0YWxvZ0lkIHx8ICcnLAogICAgICAgIHJvYWRGdWxsSWQ6IHRyZWVEYXRhLnBhdGggfHwgJycsCiAgICAgICAgcGVnOiAnJywKICAgICAgICBwZWdBZGQ6ICcnCiAgICAgICAgLy8g5YW25LuW5a2X5q615Yid5aeL5YC8Li4uCiAgICAgIH07CiAgICAgIHRoaXMuaWQgPSAnJzsgLy8g5riF56m6SUQKICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkgewogICAgICAgIF90aGlzMi4kcmVmcy5hZGRFZGl0Rm9ybS5jbGVhclZhbGlkYXRlKCk7IC8vIOa4hemZpOihqOWNlemqjOivgeeKtuaAgQogICAgICB9KTsKICAgIH0sCiAgICBnZXREaWN0aW9uYXJ5QnlDb2RlOiBnZXREaWN0aW9uYXJ5QnlDb2RlLAogICAgLy8g5qC55o2u57uP57qs5bqm6L2s5qGp5Y+35YWo5YC8CiAgICB0b1BpbGU6IGZ1bmN0aW9uIHRvUGlsZSgpIHsKICAgICAgdmFyIGRhdGEgPSB7CiAgICAgICAgbG9uOiAxMDYuMzQwNDI4MTI1NDY0ODMsCiAgICAgICAgbGF0OiAyOS42NjUyMzgyMjI2MTExMSwKICAgICAgICBwb2ludFR5cGU6ICcwMicsCiAgICAgICAgcm91dGVDb2RlOiAnRzkzJywKICAgICAgICB1cERvd246ICcyJwogICAgICB9OwogICAgICBsbmdBbmRMYXRUb1BpZShkYXRhKTsKICAgIH0sCiAgICAvL+iOt+WPluaJgOWcqOi3r+auteWIl+ihqOaVsOaNrgogICAgZ2V0Um9hZERhdGE6IGZ1bmN0aW9uIGdldFJvYWREYXRhKCkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBfeWllbGQkcm9hZFNlY3Rpb25JbmYsIF95aWVsZCRyb2FkU2VjdGlvbkluZjIsIHJvd3M7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuIHJvYWRTZWN0aW9uSW5mb0ludGVyKHsKICAgICAgICAgICAgICAgIHBhZ2VCZWFuOiB7CiAgICAgICAgICAgICAgICAgIHBhZ2VTaXplOiAtMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgX3lpZWxkJHJvYWRTZWN0aW9uSW5mID0gX2NvbnRleHQuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkcm9hZFNlY3Rpb25JbmYyID0gX3lpZWxkJHJvYWRTZWN0aW9uSW5mLnJvd3M7CiAgICAgICAgICAgICAgcm93cyA9IF95aWVsZCRyb2FkU2VjdGlvbkluZjIgPT09IHZvaWQgMCA/IFtdIDogX3lpZWxkJHJvYWRTZWN0aW9uSW5mMjsKICAgICAgICAgICAgICBfdGhpczMucm9hZE9wdGlvbnMgPSByb3dzLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgaXRlbS5yb2FkTmFtZSA9IGl0ZW0ubmFtZSArICcgJyArIGl0ZW0uY29kZTsKICAgICAgICAgICAgICAgIHJldHVybiBpdGVtOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIGlmICghX3RoaXMzLmlkKSB7CiAgICAgICAgICAgICAgICAvLyB0aGlzLiRzZXQodGhpcy5hZGRFZGl0Rm9ybSwgJ3JvYWRJZCcsIHRoaXMucm9hZE9wdGlvbnNbMF0uaWQpCiAgICAgICAgICAgICAgICBfdGhpczMucm9hZENoYW5nZShfdGhpczMuYWRkRWRpdEZvcm0ucm9hZElkKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDpgJrov4fot6/mrrXkv6Hmga/ojrflj5blt6Hmn6XmlZHmj7TpmJ/kvI3kv6Hmga8KICAgIGdldFRlYW1EYXRhOiBmdW5jdGlvbiBnZXRUZWFtRGF0YSh2YWx1ZSkgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMigpIHsKICAgICAgICB2YXIgX3lpZWxkJHRlYW1EYXRhLCBfeWllbGQkdGVhbURhdGEkcm93cywgcm93czsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiB0ZWFtRGF0YShyZWZpbmVSZXF1ZXN0Qm9keSh7CiAgICAgICAgICAgICAgICBxdWVyeXM6IFt7CiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogJ0lOJywKICAgICAgICAgICAgICAgICAgcHJvcGVydHk6ICdyLmlkXycsCiAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZQogICAgICAgICAgICAgICAgfV0KICAgICAgICAgICAgICB9KSwgJ2FkZEVkaXQnKTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIF95aWVsZCR0ZWFtRGF0YSA9IF9jb250ZXh0Mi5zZW50OwogICAgICAgICAgICAgIF95aWVsZCR0ZWFtRGF0YSRyb3dzID0gX3lpZWxkJHRlYW1EYXRhLnJvd3M7CiAgICAgICAgICAgICAgcm93cyA9IF95aWVsZCR0ZWFtRGF0YSRyb3dzID09PSB2b2lkIDAgPyBbXSA6IF95aWVsZCR0ZWFtRGF0YSRyb3dzOwogICAgICAgICAgICAgIF90aGlzNC50ZWFtT3B0aW9ucyA9IHJvd3M7CiAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMik7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIHJvYWRDaGFuZ2U6IGZ1bmN0aW9uIHJvYWRDaGFuZ2UodmFsdWUpIHsKICAgICAgaWYgKHRoaXMuYWRkRWRpdEZvcm0udGVhbUlkKSB7CiAgICAgICAgdGhpcy4kc2V0KHRoaXMuYWRkRWRpdEZvcm0sICd0ZWFtSWQnLCAnJyk7CiAgICAgIH0KICAgICAgaWYgKHRoaXMuYWRkRWRpdEZvcm0udGVhbU5hbWUpIHsKICAgICAgICB0aGlzLiRzZXQodGhpcy5hZGRFZGl0Rm9ybSwgJ3RlYW1OYW1lJywgJycpOwogICAgICB9CiAgICAgIHRoaXMuZ2V0VGVhbURhdGEodmFsdWUpOwogICAgfSwKICAgIC8vIOaJgOWxnuaVkeaPtOmYn+S8jemAieaLqQogICAgdGVhbUlkQ2hhbmdlOiBmdW5jdGlvbiB0ZWFtSWRDaGFuZ2UodmFsdWUpIHsKICAgICAgdmFyIHRlYW1JbmZvID0gdGhpcy50ZWFtT3B0aW9ucy5maW5kKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgcmV0dXJuIGl0ZW0uaWQgPT09IHZhbHVlOwogICAgICB9KTsKICAgICAgdGhpcy5hZGRFZGl0Rm9ybS50ZWFtTmFtZSA9IHRlYW1JbmZvLm5hbWU7CiAgICAgIGNvbnNvbGUubG9nKHRoaXMuYWRkRWRpdEZvcm0udGVhbU5hbWUsICc9PT09PT09PT09Jyk7CiAgICB9LAogICAgLy8g55uR5o6n5Lit5b+D6YCJ5oupCiAgICAvLyBtb25pdG9ySWRDaGFuZ2UoKSB7CiAgICAvLyAgIHRoaXMuYWRkRWRpdEZvcm0ubW9uaXRvcklkID0gdGhpcy4kcmVmcy5tb25pdG9ySWRDYXNjYWRlcj8uZ2V0Q2hlY2tlZE5vZGVzKClbMF0/LnZhbHVlIHx8ICcnCiAgICAvLyAgIHRoaXMuYWRkRWRpdEZvcm0ubW9uaXRvck5hbWUgPSB0aGlzLiRyZWZzLm1vbml0b3JJZENhc2NhZGVyPy5nZXRDaGVja2VkTm9kZXMoKVswXT8ubGFiZWwgfHwgJycKICAgIC8vIH0sCiAgICAvLyDojrflj5blhazlj7jmoJEKICAgIGdldE9yZ1RyZWVEYXRhOiBmdW5jdGlvbiBnZXRPcmdUcmVlRGF0YSgpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoKSB7CiAgICAgICAgdmFyIGRhdGE7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gMjsKICAgICAgICAgICAgICByZXR1cm4gZ2V0VHJlZSgpOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgZGF0YSA9IF9jb250ZXh0My5zZW50OwogICAgICAgICAgICAgIF90aGlzNS50ZWFtVHJlZURhdGEgPSBkYXRhOwogICAgICAgICAgICAgIF90aGlzNS5tb25pdG9yVHJlZURhdGEgPSBkYXRhOwogICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTMpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDoh6rlrprkuYnmoIforrDngrkKICAgIGN1c3RvbVRhZ1BvaW50czogZnVuY3Rpb24gY3VzdG9tVGFnUG9pbnRzKCkgewogICAgICB2YXIgX3RoaXMkbWFya2VycywKICAgICAgICBfdGhpczYgPSB0aGlzOwogICAgICB2YXIgbG5nbGF0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBbXTsKICAgICAgKF90aGlzJG1hcmtlcnMgPSB0aGlzLm1hcmtlcnNbdGhpcy5tYXJrZXJzLmxlbmd0aCAtIDFdKSA9PT0gbnVsbCB8fCBfdGhpcyRtYXJrZXJzID09PSB2b2lkIDAgfHwgX3RoaXMkbWFya2Vycy5yZW1vdmUoKTsKICAgICAgLy8g6Ieq5a6a5LmJ54K55qCH6K6w55qE5YaF6YOoRE9N5YWD57SgCiAgICAgIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICBlbC5jbGFzc05hbWUgPSAnbWFya2VyLXRpcCc7CiAgICAgIC8vIE1hcmtlcuaehOmAoOWHveaVsOaOpeaUtuS4pOS4quWPguaVsO+8jOS4gOS4quS4uuiHquWumuS5ieeahERPTeWFg+e0oO+8jOS4gOS4quaYr09iamVjdOWPguaVsO+8jOWFtuS4reWMheaLrOWBj+enu+mHj+etiQogICAgICB2YXIgbWFya2VyID0gbmV3IHRoaXMuJHJlZnMubWluZU1hcC5taW5lTWFwLk1hcmtlcihlbCwgewogICAgICAgIGRyYWdnYWJsZTogdHJ1ZSwKICAgICAgICBhbmNob3I6ICdjZW50ZXInLAogICAgICAgIG9mZnNldDogWzAsIDBdIC8vIG9mZnNldOWPguaVsOS4uuagh+azqOeCueebuOWvueS6juWFtuW3puS4iuinkuWBj+enu+WDj+e0oOWkp+WwjwogICAgICB9KQogICAgICAvLyDosIPnlKhzZXRMbmdMYXTmlrnms5XmjIflrppNYXJrZXLnmoTlnZDmoIfkvY3nva4KICAgICAgLnNldExuZ0xhdChsbmdsYXQpLmFkZFRvKHRoaXMuJHJlZnMubWluZU1hcC5tYXApLm9uKCdkcmFnZW5kJywgZnVuY3Rpb24gKF9yZWYpIHsKICAgICAgICB2YXIgdGFyZ2V0ID0gX3JlZi50YXJnZXQ7CiAgICAgICAgdmFyIF90YXJnZXQkZ2V0TG5nTGF0ID0gdGFyZ2V0LmdldExuZ0xhdCgpLAogICAgICAgICAgbG5nID0gX3RhcmdldCRnZXRMbmdMYXQubG5nLAogICAgICAgICAgbGF0ID0gX3RhcmdldCRnZXRMbmdMYXQubGF0OwogICAgICAgIF90aGlzNi5hZGRFZGl0Rm9ybSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgX3RoaXM2LmFkZEVkaXRGb3JtKSwge30sIHsKICAgICAgICAgIGxuZzogbG5nLAogICAgICAgICAgbGF0OiBsYXQKICAgICAgICB9KTsKICAgICAgfSk7CiAgICAgIHRoaXMuJHJlZnMubWluZU1hcC5tYXAuc2V0Q2VudGVyKGxuZ2xhdCk7CiAgICAgIHRoaXMubWFya2Vycy5wdXNoKG1hcmtlcik7CiAgICB9LAogICAgLy8g5L+u5pS557uP57qs5bqm5pu05paw5Zyw5Zu+5qCH54K5CiAgICB1cGRhdGVQb2ludDogZnVuY3Rpb24gdXBkYXRlUG9pbnQoZSkgewogICAgICB2YXIgX3RoaXMkYWRkRWRpdEZvcm0gPSB0aGlzLmFkZEVkaXRGb3JtLAogICAgICAgIF90aGlzJGFkZEVkaXRGb3JtJGxuZyA9IF90aGlzJGFkZEVkaXRGb3JtLmxuZywKICAgICAgICBsbmcgPSBfdGhpcyRhZGRFZGl0Rm9ybSRsbmcgPT09IHZvaWQgMCA/ICcnIDogX3RoaXMkYWRkRWRpdEZvcm0kbG5nLAogICAgICAgIF90aGlzJGFkZEVkaXRGb3JtJGxhdCA9IF90aGlzJGFkZEVkaXRGb3JtLmxhdCwKICAgICAgICBsYXQgPSBfdGhpcyRhZGRFZGl0Rm9ybSRsYXQgPT09IHZvaWQgMCA/ICcnIDogX3RoaXMkYWRkRWRpdEZvcm0kbGF0OwogICAgICBpZiAobG5nICYmIGxhdCkgewogICAgICAgIHRoaXMuY3VzdG9tVGFnUG9pbnRzKFtsbmcsIGxhdF0pOwogICAgICB9CiAgICB9LAogICAgLy8g5omT5byA6aG16Z2i5omn6KGMCiAgICBvcGVuUGFnZTogZnVuY3Rpb24gb3BlblBhZ2UoKSB7CiAgICAgIHRoaXMudG9QaWxlKCk7CiAgICAgIC8vIHRoaXMuJHJlZnMubWluZU1hcD8ubWFwPy5yZXNpemUoKQogICAgfSwKICAgIC8vIOWxleekuuW8ueWxggogICAgc2hvd0RpYWxvZzogZnVuY3Rpb24gc2hvd0RpYWxvZyhkaWFsb2dOYW1lKSB7CiAgICAgIGlmICghZGlhbG9nTmFtZSkgcmV0dXJuOwogICAgICB0aGlzW2RpYWxvZ05hbWUgKyAnRGlhbG9nJ10gPSB0cnVlOwogICAgfSwKICAgIC8vIOWFs+mXremhtemdouaJp+ihjAogICAgY2xvc2VQYWdlOiBmdW5jdGlvbiBjbG9zZVBhZ2UoKSB7CiAgICAgIHZhciBfdGhpczcgPSB0aGlzOwogICAgICB2YXIgcHViU3ViID0gdGhpcy5wdWJTdWIsCiAgICAgICAgYWRkRWRpdFJ1bGVzID0gdGhpcy5hZGRFZGl0UnVsZXM7CiAgICAgIC8vIOmHjee9rue7hOS7tuaVsOaNrgogICAgICBPYmplY3QuYXNzaWduKHRoaXMuJGRhdGEsIHRoaXMuJG9wdGlvbnMuZGF0YS5jYWxsKHRoaXMpLCB7CiAgICAgICAgcHViU3ViOiBwdWJTdWIsCiAgICAgICAgYWRkRWRpdFJ1bGVzOiBhZGRFZGl0UnVsZXMKICAgICAgfSk7CiAgICAgIC8vIHRoaXMuJHJlZnMubWluZU1hcD8ucmVzZXRNYXAoXyA9PiB0aGlzLm1hcExvYWRpbmcgPSBmYWxzZSkgLy8g6YeN572u5Zyw5Zu+CiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgX3RoaXM3LiRyZWZzLmFkZEVkaXRGb3JtLiRlbC5zY3JvbGxUb3AgPSAwOwogICAgICAgIF90aGlzNy4kcmVmcy5hZGRFZGl0Rm9ybS5jbGVhclZhbGlkYXRlKCk7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOiOt+WPluivpuaDhQogICAgZ2V0RGV0YWlsOiBmdW5jdGlvbiBnZXREZXRhaWwoaWQpIHsKICAgICAgdmFyIF90aGlzOCA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTQoKSB7CiAgICAgICAgdmFyIHJlc3BvbnNlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNCQoX2NvbnRleHQ0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDQucHJldiA9IF9jb250ZXh0NC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlRGV0YWlsKGlkKTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIHJlc3BvbnNlID0gX2NvbnRleHQ0LnNlbnQ7CiAgICAgICAgICAgICAgX3RoaXM4LmFkZEVkaXRGb3JtID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXNwb25zZSksIHt9LCB7CiAgICAgICAgICAgICAgICByb2FkTmFtZTogcmVzcG9uc2Uucm9hZE5hbWUgfHwgX3RoaXM4LmFkZEVkaXRGb3JtLnJvYWROYW1lIC8vIOWmguaenOaOpeWPo+i/lOWbnueahCBvcmdOYW1lIOS4uuepuu+8jOS9v+eUqOW9k+WJjeihqOWNleeahCBvcmdOYW1lCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgY29uc29sZS5sb2coX3RoaXM4LmFkZEVkaXRGb3JtLCAn6K+m5oOF5pWw5o2uJyk7CiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNCk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOS/neWtmAogICAgaGFuZGxlU2F2ZTogZnVuY3Rpb24gaGFuZGxlU2F2ZSgpIHsKICAgICAgdmFyIF90aGlzOSA9IHRoaXM7CiAgICAgIHRoaXMuJHJlZnMuYWRkRWRpdEZvcm0udmFsaWRhdGUoLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgICB2YXIgX3JlZjIgPSBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTUodmFsaWQsIG9iamVjdCkgewogICAgICAgICAgdmFyIGRhdGEsIG15SW50ZXJGYWNlLCBfeWllbGQkbXlJbnRlckZhY2UsIHN0YXRlLCBtZXNzYWdlLCB2YWx1ZTsKICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNSQoX2NvbnRleHQ1KSB7CiAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NS5wcmV2ID0gX2NvbnRleHQ1Lm5leHQpIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhfdGhpczkuYWRkRWRpdEZvcm0udHlwZSwgJ3R5cGXnmoTlgLwnKTsKICAgICAgICAgICAgICAgIGlmICh2YWxpZCkgewogICAgICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDU7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX3RoaXM5LiRtZXNzYWdlLndhcm5pbmcoIlx1NjcwOSIuY29uY2F0KE9iamVjdC5rZXlzKG9iamVjdCkubGVuZ3RoLCAiXHU0RTJBXHU1QjU3XHU2QkI1XHU2NzJBXHU5MDFBXHU4RkM3XHU2ODIxXHU5QThDXHVGRjBDXHU4QkY3XHU2QjYzXHU3ODZFXHU1ODZCXHU1MTk5XHU4ODY4XHU1MzU1XHU1MTg1XHU1QkI5XHUzMDAyIikpOwogICAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAyMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgIF90aGlzOS5zYXZlTG9hZGluZyA9IHRydWU7CiAgICAgICAgICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShfdGhpczkuYWRkRWRpdEZvcm0pKTsKICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEsICctLS0tLS0tLS0tLS0tLScpOwogICAgICAgICAgICAgICAgZGF0YS5wZWdWYWwgPSAnaycgKyBkYXRhLnBlZyArICcrJyArIGRhdGEucGVnOwogICAgICAgICAgICAgICAgbXlJbnRlckZhY2UgPSBfdGhpczkuaWQgPyB0YWJsZUVkaXQgOiB0YWJsZUFkZDsKICAgICAgICAgICAgICAgIF9jb250ZXh0NS5wcmV2ID0gMTA7CiAgICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDEzOwogICAgICAgICAgICAgICAgcmV0dXJuIG15SW50ZXJGYWNlKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBkYXRhKSwgZGF0YS5yb2FkKSwge30sIHsKICAgICAgICAgICAgICAgICAgdHlwZTogX3RoaXM5LmFkZEVkaXRGb3JtLnR5cGUKICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICBjYXNlIDEzOgogICAgICAgICAgICAgICAgX3lpZWxkJG15SW50ZXJGYWNlID0gX2NvbnRleHQ1LnNlbnQ7CiAgICAgICAgICAgICAgICBzdGF0ZSA9IF95aWVsZCRteUludGVyRmFjZS5zdGF0ZTsKICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBfeWllbGQkbXlJbnRlckZhY2UubWVzc2FnZTsKICAgICAgICAgICAgICAgIHZhbHVlID0gX3lpZWxkJG15SW50ZXJGYWNlLnZhbHVlOwogICAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBfdGhpczkuaWQgPyAn57yW6L6RJyA6ICfmlrDlop4nOwogICAgICAgICAgICAgICAgICBfdGhpczkuJG1lc3NhZ2Uuc3VjY2VzcygiXHU2NTUxXHU2M0Y0XHU3MEI5Ii5jb25jYXQobWVzc2FnZSwgIlx1NjIxMFx1NTI5RiIpKTsKICAgICAgICAgICAgICAgICAgUHViU3ViLnB1Ymxpc2goJ1RhYmxlUGFnZScsIHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYWRkJwogICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgLy8g5omL5Yqo5bCGIG9yZ05hbWUg5re75Yqg5Yiw6L+U5Zue55qE5pWw5o2u5LitCiAgICAgICAgICAgICAgICAgIGRhdGEucm9hZE5hbWUgPSBfdGhpczkuYWRkRWRpdEZvcm0ucm9hZE5hbWU7CiAgICAgICAgICAgICAgICAgIC8vIOS/neWtmOaIkOWKn+WQjumHjee9ruihqOWNlQogICAgICAgICAgICAgICAgICBfdGhpczkucmVzZXRGb3JtRGF0YSh7CiAgICAgICAgICAgICAgICAgICAgcm9hZE5hbWU6IF90aGlzOS5hZGRFZGl0Rm9ybS5yb2FkTmFtZSwKICAgICAgICAgICAgICAgICAgICBjYXRhbG9nSWQ6IF90aGlzOS5hZGRFZGl0Rm9ybS5yb2FkSWQsCiAgICAgICAgICAgICAgICAgICAgcGF0aDogX3RoaXM5LmFkZEVkaXRGb3JtLnJvYWRGdWxsSWQKICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgIF90aGlzOS5jaGFuZ2VQYWdlKCdUYWJsZVBhZ2UnLCBfdGhpczkuaWQgPyAnZWRpdCcgOiAnYWRkJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgY2FzZSAxODoKICAgICAgICAgICAgICAgIF9jb250ZXh0NS5wcmV2ID0gMTg7CiAgICAgICAgICAgICAgICBfdGhpczkuc2F2ZUxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuZmluaXNoKDE4KTsKICAgICAgICAgICAgICBjYXNlIDIxOgogICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ1LnN0b3AoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwgX2NhbGxlZTUsIG51bGwsIFtbMTAsLCAxOCwgMjFdXSk7CiAgICAgICAgfSkpOwogICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gsIF94MikgewogICAgICAgICAgcmV0dXJuIF9yZWYyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfSgpKTsKICAgIH0sCiAgICAvLyDmlLnlj5jpobXpnaIKICAgIGNoYW5nZVBhZ2U6IGZ1bmN0aW9uIGNoYW5nZVBhZ2UoKSB7CiAgICAgIHZhciBwYWdlTmFtZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogJyc7CiAgICAgIHZhciB0eXBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAnJzsKICAgICAgaWYgKCFwYWdlTmFtZSkgcmV0dXJuOwogICAgICB0aGlzLiRlbWl0KCdjaGFuZ2VQYWdlJywgcGFnZU5hbWUsIGZ1bmN0aW9uIChfKSB7CiAgICAgICAgUHViU3ViLnB1Ymxpc2gocGFnZU5hbWUsIHsKICAgICAgICAgIHR5cGU6IHR5cGUKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9CiAgfSwKICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkgewogICAgLy8g5Zyo57uE5Lu26ZSA5q+B5LmL5YmNIOa4hemZpOiuoumYhea2iOaBrwogICAgUHViU3ViLnVuc3Vic2NyaWJlKHRoaXMucHViU3ViKTsKICB9Cn07"},null]}