{"remainingRequest":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataResource\\dataShare\\shareApi\\apiInterface\\DetailDialog.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataResource\\dataShare\\shareApi\\apiInterface\\DetailDialog.vue","mtime":1749063336055},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgQVBJIGZyb20gJ0AvYXBpL2J1c2luZXNzL3NoYXJlQXBpJw0KaW1wb3J0IGRpYWxvZ01peGluIGZyb20gJ0AvbWl4aW5zL2RpYWxvZy5qcycNCmltcG9ydCBjb2RlRWRpdG9yIGZyb20gJ0AvY29tcG9uZW50cy9jb2RlRWRpdG9yL2luZGV4LnZ1ZScNCg0KZXhwb3J0IGRlZmF1bHQgew0KICBuYW1lOiAnRGV0YWlsRGlhbG9nJywNCiAgY29tcG9uZW50czoge2NvZGVFZGl0b3J9LA0KICBtaXhpbnM6IFtkaWFsb2dNaXhpbl0sDQogIHByb3BzOiB7DQogICAgc2VsZWN0ZWRSb3dzOiB7DQogICAgICB0eXBlOiBBcnJheSwNCiAgICAgIGRlZmF1bHQ6ICgpID0+IFtdDQogICAgfSwNCiAgICByZWxhdGVkSWQ6IHsNCiAgICAgIHR5cGU6IFN0cmluZywNCiAgICAgIGRlZmF1bHQ6ICcnDQogICAgfQ0KICB9LA0KICBkYXRhKCkgew0KICAgIHJldHVybiB7DQogICAgICBhZGRKc29uTXVsdGlwbGVSZXF1ZXN0UGFyYW1zOiBbXSwNCiAgICAgIGFkZEpzb25NdWx0aXBsZVJlcXVlc3RIZWFkZXI6IFtdLA0KICAgICAgYWRkSnNvbk11bHRpcGxlUmVzcG9uc2VQYXJhbXM6IFtdLA0KICAgICAgYWRkSnNvbk11bHRpcGxlUmVzcG9uc2VTdGF0dXM6IFtdLA0KICAgICAgdGFiSXRlbUlkOiAxLCAvLyDooajmoLzmlbDmja7nmoQgaWQNCiAgICAgIGxhYmVsUG9zaXRpb246ICdsZWZ0JywNCiAgICAgIHRpbWVWYWx1ZTogJycsDQogICAgICBxdXJleTogJycsDQogICAgICBtb2RlOiAnJywNCiAgICAgIHNxbG9wdGlvbnM6IFtdLA0KICAgICAgb3B0aW9uczogWw0KICAgICAgICB7bGFiZWw6ICfliIbpobUnLCB2YWx1ZTogMX0sDQogICAgICAgIHtsYWJlbDogJ+S4jeWIhumhtScsIHZhbHVlOiAwfQ0KICAgICAgXSwNCiAgICAgIGZvcm06IHsNCiAgICAgICAgc291cmNlVHlwZTogJzEnLA0KICAgICAgICBzcWw6ICcnLA0KICAgICAgICBhcGlRdXJleVR5cGU6ICcnDQogICAgICB9LA0KICAgICAgdHlwZW9wdGlvbnM6IFsNCiAgICAgICAge3ZhbHVlOiAnU3RyaW5nJywgbGFiZWw6ICflrZfnrKbkuLInfSwNCiAgICAgICAge3ZhbHVlOiAnSW50ZWdlcicsIGxhYmVsOiAn5pWw5a2X5Z6LJ30sDQogICAgICAgIHt2YWx1ZTogJ0RhdGUnLCBsYWJlbDogJ+aXpeacnyd9DQogICAgICAgIC8vIHt2YWx1ZTogJzQnLCBsYWJlbDogJ+aXtumXtCd9DQogICAgICBdLA0KICAgICAgdGFibGVOYW1lTGlzdDogWydHRVQnLCAnUE9TVCddLA0KICAgICAgcnVsZXM6IHsNCiAgICAgICAgYXBpTmFtZTogW3tyZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogJ+aOpeWPo+WQjeensOS4jeiDveS4uuepuicsIHRyaWdnZXI6ICdibHVyJ31dLA0KICAgICAgICBhcGlVcmw6IFt7cmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICfmjqXlj6PlnLDlnYDkuI3og73kuLrnqbonLCB0cmlnZ2VyOiAnYmx1cid9XSwNCiAgICAgICAgYXBpUXVyZXlUeXBlOiBbe3JlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAn5o6l5Y+j5p+l6K+i5pa55byP5LiN6IO95Li656m6JywgdHJpZ2dlcjogJ2NoYW5nZSd9XSwNCiAgICAgICAgYXBpTW9kZTogW3tyZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogJ+ivt+axguaWueW8j+S4jeiDveS4uuepuicsIHRyaWdnZXI6ICdjaGFuZ2UnfV0sDQogICAgICAgIGFwaVNxbDogW3tyZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogJ1NRTOafpeivouivreWPpeS4jeiDveS4uuepuicsIHRyaWdnZXI6ICdibHVyJ31dLA0KICAgICAgICBkYkFsaWFzOiBbe3JlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAn6K+36YCJ5oup5pWw5o2u5rqQJywgdHJpZ2dlcjogJ2NoYW5nZSd9XQ0KICAgICAgfSwNCiAgICAgIGxvYWRpbmc6IGZhbHNlDQogICAgfQ0KICB9LA0KICBjcmVhdGVkKCkgew0KICAgIHRoaXMub25Db25maXJtKCkNCiAgfSwNCg0KICBtZXRob2RzOiB7DQogICAgLyoqDQogICAgICogQGRlc2NyaXB0aW9uOiBkaWFsb2fmr4/mrKHmmL7npLrml7bop6blj5HnmoRpbml05pa55rOVDQogICAgICogQHBhcmFtIHsqfSBkYXRhIOS8oOWFpWRhdGENCiAgICAgKiBAcmV0dXJuIHsqfQ0KICAgICAqLw0KICAgIGluaXREYXRhKGRhdGEpIHsNCiAgICAgIC8vIGNvbnNvbGUubG9nKCdpZGlkaWRpJywgZGF0YSk7IC8vIOi/m+mhtemdouaJk+WNsGlkDQogICAgICAvLyBjb25zb2xlLmxvZygnaWRpZGlkaScsIGRhdGEucmVxdWVzdFBhcmFtcyk7IC8vIOi/m+mhtemdouaJk+WNsGlkDQogICAgICBjb25zdCBvcmdGb3JtID0gdGhpcy4kb3B0aW9ucy5kYXRhKCkuZm9ybQ0KICAgICAgdGhpcy5mb3JtID0gey4uLm9yZ0Zvcm0sIC4uLmRhdGF9DQogICAgICAvLyDph43ngrnkv67mlLnov5nph4zvvIznoa7kv53mraPnoa7otYvlgLwgcmVxdWVzdFBhcmFtcyDmlbDmja4NCiAgICAgIC8vIOivt+axguWPguaVsOivtOaYjg0KICAgICAgaWYgKGRhdGEucmVxdWVzdFBhcmFtcyAmJiB0eXBlb2YgZGF0YS5yZXF1ZXN0UGFyYW1zID09PSAnc3RyaW5nJykgew0KICAgICAgICB0cnkgew0KICAgICAgICAgIGNvbnN0IHBhcnNlZFBhcmFtcyA9IEpTT04ucGFyc2UoZGF0YS5yZXF1ZXN0UGFyYW1zKQ0KICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHBhcnNlZFBhcmFtcykpIHsNCiAgICAgICAgICAgIHRoaXMuZm9ybS5yZXF1ZXN0UGFyYW1zID0gcGFyc2VkUGFyYW1zLm1hcCgoaXRlbSkgPT4gKHsNCiAgICAgICAgICAgICAgcGFyYW06IGl0ZW0ucGFyYW0gfHwgJycsDQogICAgICAgICAgICAgIGNvbW1lbnQ6IGl0ZW0uY29tbWVudCB8fCAnJywNCiAgICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlIHx8ICcnLA0KICAgICAgICAgICAgICByZXF1aXJlZDogaXRlbS5yZXF1aXJlZCA9PT0gJ3RydWUnIHx8IGl0ZW0ucmVxdWlyZWQgPT09IHRydWUgLy8g5L+u5q2j5biD5bCU5YC86L2s5o2iDQogICAgICAgICAgICB9KSkNCiAgICAgICAgICB9DQogICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7DQogICAgICAgICAgY29uc29sZS5lcnJvcign6Kej5p6QIHJlcXVlc3RQYXJhbXMg5pWw5o2u5Ye66ZSZOicsIGVycm9yKQ0KICAgICAgICB9DQogICAgICB9DQogICAgICAvLyDor7fmsYLlpLTor7TmmI4NCiAgICAgIGlmIChkYXRhLnJlcXVlc3RIZWFkZXIgJiYgdHlwZW9mIGRhdGEucmVxdWVzdEhlYWRlciA9PT0gJ3N0cmluZycpIHsNCiAgICAgICAgdHJ5IHsNCiAgICAgICAgICBjb25zdCBwYXJzZWRQYXJhbXMgPSBKU09OLnBhcnNlKGRhdGEucmVxdWVzdEhlYWRlcikNCiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXJzZWRQYXJhbXMpKSB7DQogICAgICAgICAgICB0aGlzLmZvcm0ucmVxdWVzdEhlYWRlciA9IHBhcnNlZFBhcmFtcy5tYXAoKGl0ZW0pID0+ICh7DQogICAgICAgICAgICAgIHBhcmFtOiBpdGVtLnBhcmFtIHx8ICcnLA0KICAgICAgICAgICAgICBjb21tZW50OiBpdGVtLmNvbW1lbnQgfHwgJycsDQogICAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSB8fCAnJywNCiAgICAgICAgICAgICAgcmVxdWlyZWQ6IGl0ZW0ucmVxdWlyZWQgPT09ICd0cnVlJyB8fCBpdGVtLnJlcXVpcmVkID09PSB0cnVlIC8vIOS/ruato+W4g+WwlOWAvOi9rOaNog0KICAgICAgICAgICAgfSkpDQogICAgICAgICAgfQ0KICAgICAgICB9IGNhdGNoIChlcnJvcikgew0KICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+ino+aekCByZXF1ZXN0SGVhZGVyIOaVsOaNruWHuumUmTonLCBlcnJvcikNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgLy8g6L+U5Zue5Y+C5pWw6K+05piODQogICAgICBpZiAoZGF0YS5yZXNwb25zZVBhcmFtcyAmJiB0eXBlb2YgZGF0YS5yZXNwb25zZVBhcmFtcyA9PT0gJ3N0cmluZycpIHsNCiAgICAgICAgdHJ5IHsNCiAgICAgICAgICBjb25zdCBwYXJzZWRQYXJhbXMgPSBKU09OLnBhcnNlKGRhdGEucmVzcG9uc2VQYXJhbXMpDQogICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGFyc2VkUGFyYW1zKSkgew0KICAgICAgICAgICAgdGhpcy5mb3JtLnJlc3BvbnNlUGFyYW1zID0gcGFyc2VkUGFyYW1zLm1hcCgoaXRlbSkgPT4gKHsNCiAgICAgICAgICAgICAgcGFyYW06IGl0ZW0ucGFyYW0gfHwgJycsDQogICAgICAgICAgICAgIGNvbW1lbnQ6IGl0ZW0uY29tbWVudCB8fCAnJywNCiAgICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlIHx8ICcnDQogICAgICAgICAgICB9KSkNCiAgICAgICAgICB9DQogICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7DQogICAgICAgICAgY29uc29sZS5lcnJvcign6Kej5p6QIHJlc3BvbnNlUGFyYW1zIOaVsOaNruWHuumUmTonLCBlcnJvcikNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgLy8g5ZON5bqU54q25oCB56CB5L+h5oGvDQogICAgICBpZiAoZGF0YS5yZXNwb25zZVN0YXR1cyAmJiB0eXBlb2YgZGF0YS5yZXNwb25zZVN0YXR1cyA9PT0gJ3N0cmluZycpIHsNCiAgICAgICAgdHJ5IHsNCiAgICAgICAgICBjb25zdCBwYXJzZWRQYXJhbXMgPSBKU09OLnBhcnNlKGRhdGEucmVzcG9uc2VTdGF0dXMpDQogICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGFyc2VkUGFyYW1zKSkgew0KICAgICAgICAgICAgdGhpcy5mb3JtLnJlc3BvbnNlU3RhdHVzID0gcGFyc2VkUGFyYW1zLm1hcCgoaXRlbSkgPT4gKHsNCiAgICAgICAgICAgICAgcGFyYW06IGl0ZW0ucGFyYW0gfHwgJycsDQogICAgICAgICAgICAgIGNvbW1lbnQ6IGl0ZW0uY29tbWVudCB8fCAnJw0KICAgICAgICAgICAgfSkpDQogICAgICAgICAgfQ0KICAgICAgICB9IGNhdGNoIChlcnJvcikgew0KICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+ino+aekCByZXNwb25zZVN0YXR1cyDmlbDmja7lh7rplJk6JywgZXJyb3IpDQogICAgICAgIH0NCiAgICAgIH0NCiAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHsNCiAgICAgICAgdGhpcy4kcmVmcy5mb3JtLmNsZWFyVmFsaWRhdGUoKQ0KICAgICAgfSkNCiAgICAgIHRoaXMuc2VsZWN0U3FsKCkNCiAgICB9LA0KICAgIC8vIOaVsOaNrua6kOaOpeWPo+iwg+eUqA0KICAgIHNlbGVjdFNxbCgpIHsNCiAgICAgIHJldHVybiBBUEkuYWRkU291cmNlRGF0YSgpDQogICAgICAgIC50aGVuKChyZXMpID0+IHsNCiAgICAgICAgICBjb25zb2xlLmxvZygnY2FjYWNhY3MnLCByZXMpIC8vIOaVsOaNruW6kw0KICAgICAgICAgIHRoaXMuc3Fsb3B0aW9ucyA9IHJlcy5kYXRhLm1hcCgoZGF0YSkgPT4gew0KICAgICAgICAgICAgY29uc3QgZm9ybSA9IHsNCiAgICAgICAgICAgICAgLy8gbGFiZWw6IGRhdGEuYWxpYXMsDQogICAgICAgICAgICAgIC8vIHZhbHVlOiBkYXRhLmlkLA0KICAgICAgICAgICAgICBsYWJlbDogZGF0YS5uYW1lLA0KICAgICAgICAgICAgICB2YWx1ZTogZGF0YS5hbGlhcw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIGZvcm0NCiAgICAgICAgICB9KQ0KICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHJlcy5yb3dzKTsNCiAgICAgICAgICBjb25zb2xlLmxvZygn5pWw5o2u5rqQJywgdGhpcy5zcWxvcHRpb25zKQ0KICAgICAgICB9KQ0KICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7DQogICAgICAgICAgY29uc29sZS5lcnJvcign6I635Y+W5pWw5o2u5rqQ5aSx6LSlJywgZXJyb3IpDQogICAgICAgIH0pDQogICAgfSwNCiAgICBSbmROdW0obikgew0KICAgICAgLy8g55Sf5oiQ6ZqP5py65pWwDQogICAgICBsZXQgcmRtTnVtID0gJycNCiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7DQogICAgICAgIHJkbU51bSArPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMCkgLy8gWzAsMTAp55qE5pW05pWwDQogICAgICB9DQogICAgICByZXR1cm4gcmRtTnVtDQogICAgfSwNCiAgICAvLyDor7fmsYLlj4LmlbDor7TmmI4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgYWRkSnNvblJlcXVlc3RQYXJhbXModmFsKSB7DQogICAgICB0aGlzLmFkZEpzb25NdWx0aXBsZVJlcXVlc3RQYXJhbXMgPSB2YWwNCiAgICB9LA0KICAgIC8vIOa3u+WKoA0KICAgIGFkZFRhYmxlUmVxdWVzdFBhcmFtcygpIHsNCiAgICAgIHRoaXMudGFiSXRlbUlkID0gYFQke3RoaXMuUm5kTnVtKDYpfWAgLy8g55Sf5oiQ5LulVOW8gOWktOeahOS4g+S9jemaj+acuuaVsA0KICAgICAgdGhpcy5mb3JtLnJlcXVlc3RQYXJhbXMucHVzaCh7DQogICAgICAgIG5hbWU6ICcnLA0KICAgICAgICB2YWx1ZTogJycsDQogICAgICAgIHRhYkl0ZW1JZDogdGhpcy50YWJJdGVtSWQNCiAgICAgIH0pDQogICAgfSwNCiAgICAvLyDliKDpmaQNCiAgICBkZWxUYWJsZVJlcXVlc3RQYXJhbXMoKSB7DQogICAgICAvLyDnoa7orqTliKDpmaQNCiAgICAgIGlmICh0aGlzLmFkZEpzb25NdWx0aXBsZVJlcXVlc3RQYXJhbXMubGVuZ3RoID4gMCkgew0KICAgICAgICBjb25zdCBhcnJzID0gW10NCiAgICAgICAgY29uc3QgaWRzID0gdGhpcy5hZGRKc29uTXVsdGlwbGVSZXF1ZXN0UGFyYW1zLm1hcCgodmFsKSA9PiB2YWwudGFiSXRlbUlkKSAvLyDmi7/liLDpgInkuK3nmoTmlbDmja5pZCwNCiAgICAgICAgdGhpcy5mb3JtLnJlcXVlc3RQYXJhbXMuZm9yRWFjaCgoaXRlbSkgPT4gew0KICAgICAgICAgIGlmICghaWRzLmluY2x1ZGVzKGl0ZW0udGFiSXRlbUlkKSkgew0KICAgICAgICAgICAgLy8g5b2TaWTlnKhwYXJhbXPkuK3vvIzooajnpLrmlbDmja7ooqvpgInkuK3vvIzor6XlsIblhbbliKDpmaTvvIzljbPlsIbkuI3ooqvpgInkuK3nmoTkv53nlZkNCiAgICAgICAgICAgIGFycnMucHVzaChpdGVtKQ0KICAgICAgICAgIH0NCiAgICAgICAgfSkNCiAgICAgICAgdGhpcy5mb3JtLnJlcXVlc3RQYXJhbXMgPSBhcnJzDQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+mAieaLqeimgeWIoOmZpOeahOaVsOaNricpDQogICAgICB9DQogICAgfSwNCiAgICAvLyDor7fmsYLlpLTor7TmmI4tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICBhZGRKc29uUmVxdWVzdEhlYWRlcih2YWwpIHsNCiAgICAgIHRoaXMuYWRkSnNvbk11bHRpcGxlUmVxdWVzdEhlYWRlciA9IHZhbA0KICAgIH0sDQogICAgLy8g5re75YqgDQogICAgYWRkVGFibGVSZXF1ZXN0SGVhZGVyKCkgew0KICAgICAgdGhpcy50YWJJdGVtSWQgPSBgVCR7dGhpcy5SbmROdW0oNil9YCAvLyDnlJ/miJDku6VU5byA5aS055qE5LiD5L2N6ZqP5py65pWwDQogICAgICB0aGlzLmZvcm0ucmVxdWVzdEhlYWRlci5wdXNoKHsNCiAgICAgICAgbmFtZTogJycsDQogICAgICAgIHZhbHVlOiAnJywNCiAgICAgICAgdGFiSXRlbUlkOiB0aGlzLnRhYkl0ZW1JZA0KICAgICAgfSkNCiAgICB9LA0KICAgIC8vIOWIoOmZpA0KICAgIGRlbFRhYmxlUmVxdWVzdEhlYWRlcigpIHsNCiAgICAgIC8vIOehruiupOWIoOmZpA0KICAgICAgaWYgKHRoaXMuYWRkSnNvbk11bHRpcGxlUmVxdWVzdEhlYWRlci5sZW5ndGggPiAwKSB7DQogICAgICAgIGNvbnN0IGFycnMgPSBbXQ0KICAgICAgICBjb25zdCBpZHMgPSB0aGlzLmFkZEpzb25NdWx0aXBsZVJlcXVlc3RIZWFkZXIubWFwKCh2YWwpID0+IHZhbC50YWJJdGVtSWQpIC8vIOaLv+WIsOmAieS4reeahOaVsOaNrmlkLA0KICAgICAgICB0aGlzLmZvcm0ucmVxdWVzdEhlYWRlci5mb3JFYWNoKChpdGVtKSA9PiB7DQogICAgICAgICAgaWYgKCFpZHMuaW5jbHVkZXMoaXRlbS50YWJJdGVtSWQpKSB7DQogICAgICAgICAgICAvLyDlvZNpZOWcqHBhcmFtc+S4re+8jOihqOekuuaVsOaNruiiq+mAieS4re+8jOivpeWwhuWFtuWIoOmZpO+8jOWNs+WwhuS4jeiiq+mAieS4reeahOS/neeVmQ0KICAgICAgICAgICAgYXJycy5wdXNoKGl0ZW0pDQogICAgICAgICAgfQ0KICAgICAgICB9KQ0KICAgICAgICB0aGlzLmZvcm0ucmVxdWVzdEhlYWRlciA9IGFycnMNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygn6K+36YCJ5oup6KaB5Yig6Zmk55qE5pWw5o2uJykNCiAgICAgIH0NCiAgICB9LA0KICAgIC8vIOi/lOWbnuWPguaVsOivtOaYji0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICBhZGRKc29uUmVzcG9uc2VTdGF0dXModmFsKSB7DQogICAgICB0aGlzLmFkZEpzb25NdWx0aXBsZVJlc3BvbnNlUGFyYW1zID0gdmFsDQogICAgfSwNCiAgICAvLyDmt7vliqANCiAgICBhZGRUYWJsZVJlc3BvbnNlUGFyYW1zKCkgew0KICAgICAgdGhpcy50YWJJdGVtSWQgPSBgVCR7dGhpcy5SbmROdW0oNil9YCAvLyDnlJ/miJDku6VU5byA5aS055qE5LiD5L2N6ZqP5py65pWwDQogICAgICB0aGlzLmZvcm0ucmVzcG9uc2VQYXJhbXMucHVzaCh7DQogICAgICAgIG5hbWU6ICcnLA0KICAgICAgICB2YWx1ZTogJycsDQogICAgICAgIHRhYkl0ZW1JZDogdGhpcy50YWJJdGVtSWQNCiAgICAgIH0pDQogICAgfSwNCiAgICAvLyDliKDpmaQNCiAgICBkZWxUYWJsZVJlc3BvbnNlUGFyYW1zKCkgew0KICAgICAgLy8g56Gu6K6k5Yig6ZmkDQogICAgICBpZiAodGhpcy5hZGRKc29uTXVsdGlwbGVSZXNwb25zZVBhcmFtcy5sZW5ndGggPiAwKSB7DQogICAgICAgIGNvbnN0IGFycnMgPSBbXQ0KICAgICAgICBjb25zdCBpZHMgPSB0aGlzLmFkZEpzb25NdWx0aXBsZVJlc3BvbnNlUGFyYW1zLm1hcCgodmFsKSA9PiB2YWwudGFiSXRlbUlkKSAvLyDmi7/liLDpgInkuK3nmoTmlbDmja5pZCwNCiAgICAgICAgdGhpcy5mb3JtLnJlc3BvbnNlUGFyYW1zLmZvckVhY2goKGl0ZW0pID0+IHsNCiAgICAgICAgICBpZiAoIWlkcy5pbmNsdWRlcyhpdGVtLnRhYkl0ZW1JZCkpIHsNCiAgICAgICAgICAgIC8vIOW9k2lk5ZyocGFyYW1z5Lit77yM6KGo56S65pWw5o2u6KKr6YCJ5Lit77yM6K+l5bCG5YW25Yig6Zmk77yM5Y2z5bCG5LiN6KKr6YCJ5Lit55qE5L+d55WZDQogICAgICAgICAgICBhcnJzLnB1c2goaXRlbSkNCiAgICAgICAgICB9DQogICAgICAgIH0pDQogICAgICAgIHRoaXMuZm9ybS5yZXNwb25zZVBhcmFtcyA9IGFycnMNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygn6K+36YCJ5oup6KaB5Yig6Zmk55qE5pWw5o2uJykNCiAgICAgIH0NCiAgICB9LA0KICAgIC8vIOWTjeW6lOeKtuaAgeeggeS/oeaBry0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgIGFkZEpzb25SZXNwb25zZVBhcmFtcyh2YWwpIHsNCiAgICAgIHRoaXMuYWRkSnNvbk11bHRpcGxlUmVzcG9uc2VTdGF0dXMgPSB2YWwNCiAgICB9LA0KICAgIC8vIOa3u+WKoA0KICAgIGFkZFRhYmxlUmVzcG9uc2VTdGF0dXMoKSB7DQogICAgICB0aGlzLnRhYkl0ZW1JZCA9IGBUJHt0aGlzLlJuZE51bSg2KX1gIC8vIOeUn+aIkOS7pVTlvIDlpLTnmoTkuIPkvY3pmo/mnLrmlbANCiAgICAgIHRoaXMuZm9ybS5yZXNwb25zZVN0YXR1cy5wdXNoKHsNCiAgICAgICAgY29kZTogJycsDQogICAgICAgIGNvbW1lbnQ6ICcnLA0KICAgICAgICB0YWJJdGVtSWQ6IHRoaXMudGFiSXRlbUlkDQogICAgICB9KQ0KICAgIH0sDQogICAgLy8g5Yig6ZmkDQogICAgZGVsVGFibGVSZXNwb25zZVN0YXR1cygpIHsNCiAgICAgIC8vIOehruiupOWIoOmZpA0KICAgICAgaWYgKHRoaXMuYWRkSnNvbk11bHRpcGxlUmVzcG9uc2VTdGF0dXMubGVuZ3RoID4gMCkgew0KICAgICAgICBjb25zdCBhcnJzID0gW10NCiAgICAgICAgY29uc3QgaWRzID0gdGhpcy5hZGRKc29uTXVsdGlwbGVSZXNwb25zZVN0YXR1cy5tYXAoKHZhbCkgPT4gdmFsLnRhYkl0ZW1JZCkgLy8g5ou/5Yiw6YCJ5Lit55qE5pWw5o2uaWQsDQogICAgICAgIHRoaXMuZm9ybS5yZXNwb25zZVN0YXR1cy5mb3JFYWNoKChpdGVtKSA9PiB7DQogICAgICAgICAgaWYgKCFpZHMuaW5jbHVkZXMoaXRlbS50YWJJdGVtSWQpKSB7DQogICAgICAgICAgICAvLyDlvZNpZOWcqHBhcmFtc+S4re+8jOihqOekuuaVsOaNruiiq+mAieS4re+8jOivpeWwhuWFtuWIoOmZpO+8jOWNs+WwhuS4jeiiq+mAieS4reeahOS/neeVmQ0KICAgICAgICAgICAgYXJycy5wdXNoKGl0ZW0pDQogICAgICAgICAgfQ0KICAgICAgICB9KQ0KICAgICAgICB0aGlzLmZvcm0ucmVzcG9uc2VTdGF0dXMgPSBhcnJzDQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+mAieaLqeimgeWIoOmZpOeahOaVsOaNricpDQogICAgICB9DQogICAgfSwNCg0KICAgIC8vIOWPlua2iOaMiemSrg0KICAgIG9uQ2FuY2VsKCkgew0KICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2UNCiAgICAgIHRoaXMuZm9ybSA9IHRoaXMuJG9wdGlvbnMuZGF0YSgpLmZvcm0NCiAgICB9LA0KICAgIC8vIOehruWumuaMiemSri3mlrDlop7lkI7mjqXlj6PosIPnlKjvvIzlsZXnpLrlnKjliJfooagNCiAgICAvLyBvbkNvbmZpcm0oKSB7DQogICAgLy8gICB0aGlzLiRyZWZzLmZvcm0udmFsaWRhdGUoYXN5bmMgKHZhbGlkKSA9PiB7DQogICAgLy8gICAgIGlmICh2YWxpZCkgew0KICAgIC8vICAgICAgIGNvbnN0IGZvcm1EYXRhID0gew0KICAgIC8vICAgICAgICAgLi4udGhpcy5mb3JtLA0KICAgIC8vICAgICAgICAgdGFibGVJZDogdGhpcy5yZWxhdGVkSWQsDQogICAgLy8gICAgICAgfTsNCiAgICAvLyAgICAgICAvLyB0aGlzLmZvcm0uY2F0YWxvZ0lkID0gdGhpcy5hZGRJZDsNCiAgICAvLyAgICAgICBmb3JtRGF0YS5yZXF1ZXN0UGFyYW1zID0gSlNPTi5zdHJpbmdpZnkoZm9ybURhdGEucmVxdWVzdFBhcmFtcyk7IC8vIOivt+axguWPguaVsOivtOaYjg0KICAgIC8vICAgICAgIGZvcm1EYXRhLnJlcXVlc3RIZWFkZXIgPSBKU09OLnN0cmluZ2lmeShmb3JtRGF0YS5yZXF1ZXN0SGVhZGVyKTsgLy8g6K+35rGC5aS06K+05piODQogICAgLy8gICAgICAgZm9ybURhdGEucmVzcG9uc2VQYXJhbXMgPSBKU09OLnN0cmluZ2lmeShmb3JtRGF0YS5yZXNwb25zZVBhcmFtcyk7IC8vIOi/lOWbnuWPguaVsOivtOaYjg0KICAgIC8vICAgICAgIGZvcm1EYXRhLnJlc3BvbnNlU3RhdHVzID0gSlNPTi5zdHJpbmdpZnkoZm9ybURhdGEucmVzcG9uc2VTdGF0dXMpOyAvLyDlk43lupTnirbmgIHnoIHkv6Hmga8NCiAgICAvLyAgICAgICBBUEkuZGVsQWN0aW9uKGZvcm1EYXRhLCBmYWxzZSkNCiAgICAvLyAgICAgICAgIC50aGVuKChyZXMpID0+IHsNCiAgICAvLyAgICAgICAgICAgY29uc29sZS5sb2cocmVzKTsNCiAgICAvLyAgICAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCfmjqXlj6PnvJbovpHmiJDlip/vvIEnKTsNCiAgICAvLyAgICAgICAgICAgLy8g5paw5aKe5oiQ5Yqf5ZCO77yM6YCa6L+HICRlbWl0IOinpuWPkeiHquWumuS5ieS6i+S7tu+8jOS8oOmAkuaWsOWinuaIkOWKn+eahOS/oeWPt+S7peWPiuWPr+iDveebuOWFs+eahOaVsOaNru+8iOeItue7hOS7tuWPr+S7peebkeWQrOi/meS4quS6i+S7tuadpeWBmuWHuuebuOW6lOeahOWkhOeQhu+8iQ0KICAgIC8vICAgICAgICAgICB0aGlzLiRlbWl0KCdjb25maXJtJyk7DQogICAgLy8gICAgICAgICB9KQ0KICAgIC8vICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gew0KICAgIC8vICAgICAgICAgICBjb25zb2xlLmVycm9yKCfojrflj5bmlbDmja7lpLHotKUnLCBlcnJvcik7DQogICAgLy8gICAgICAgICB9KTsNCiAgICAvLyAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsNCiAgICAvLyAgICAgICAvLyB9DQogICAgLy8gICAgIH0gZWxzZSB7DQogICAgLy8gICAgICAgY29uc29sZS5sb2coJ+ihqOWNlemqjOivgeWksei0pe+8jOivt+ajgOafpeaJgOacieW/heWhq+mhuScpOw0KICAgIC8vICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAvLyAgICAgfQ0KICAgIC8vICAgfSk7DQogICAgLy8gICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsNCiAgICAvLyAgIHRoaXMudmlzaWJsZSA9IGZhbHNlOw0KICAgIC8vIH0sDQogICAgb25Db25maXJtKCkgew0KICAgICAgLy8gdGhpcy4kcmVmcy5mb3JtLnZhbGlkYXRlKGFzeW5jICh2YWxpZCkgPT4gew0KICAgICAgLy8gICBpZiAodmFsaWQpIHsNCiAgICAgIC8vICAgICB0aGlzLmZvcm0uY2F0YWxvZ0lkID0gdGhpcy5yZWxhdGVkSWQNCiAgICAgIC8vICAgICB0aGlzLmZvcm0ucmVxdWVzdFBhcmFtcyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5yZXF1ZXN0UGFyYW1zKSAvLyDor7fmsYLlj4LmlbDor7TmmI4NCiAgICAgIC8vICAgICB0aGlzLmZvcm0ucmVxdWVzdEhlYWRlciA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5yZXF1ZXN0SGVhZGVyKSAvLyDor7fmsYLlpLTor7TmmI4NCiAgICAgIC8vICAgICB0aGlzLmZvcm0ucmVzcG9uc2VQYXJhbXMgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm0ucmVzcG9uc2VQYXJhbXMpIC8vIOi/lOWbnuWPguaVsOivtOaYjg0KICAgICAgLy8gICAgIHRoaXMuZm9ybS5yZXNwb25zZVN0YXR1cyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5yZXNwb25zZVN0YXR1cykgLy8g5ZON5bqU54q25oCB56CB5L+h5oGvDQogICAgICAvLyAgICAgQVBJLmRlbEFjdGlvbnModGhpcy5mb3JtLCBmYWxzZSkNCiAgICAgIC8vICAgICAgIC50aGVuKChyZXMpID0+IHsNCiAgICAgIC8vICAgICAgICAgY29uc29sZS5sb2cocmVzKQ0KICAgICAgLy8gICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+aOpeWPo+e8lui+keaIkOWKn++8gScpDQogICAgICAvLyAgICAgICAgIC8vIOaWsOWinuaIkOWKn+WQju+8jOmAmui/hyAkZW1pdCDop6blj5Hoh6rlrprkuYnkuovku7bvvIzkvKDpgJLmlrDlop7miJDlip/nmoTkv6Hlj7fku6Xlj4rlj6/og73nm7jlhbPnmoTmlbDmja7vvIjniLbnu4Tku7blj6/ku6Xnm5HlkKzov5nkuKrkuovku7bmnaXlgZrlh7rnm7jlupTnmoTlpITnkIbvvIkNCiAgICAgIC8vICAgICAgICAgdGhpcy4kZW1pdCgnY29uZmlybScpDQogICAgICAvLyAgICAgICB9KQ0KICAgICAgLy8gICAgICAgLmNhdGNoKChlcnJvcikgPT4gew0KICAgICAgLy8gICAgICAgICBjb25zb2xlLmVycm9yKCfojrflj5bmlbDmja7lpLHotKUnLCBlcnJvcikNCiAgICAgIC8vICAgICAgIH0pDQogICAgICAvLyAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2UNCiAgICAgIC8vICAgICAvLyB9DQogICAgICAvLyAgIH0gZWxzZSB7DQogICAgICAvLyAgICAgY29uc29sZS5sb2coJ+ihqOWNlemqjOivgeWksei0pe+8jOivt+ajgOafpeaJgOacieW/heWhq+mhuScpDQogICAgICAvLyAgICAgcmV0dXJuIGZhbHNlDQogICAgICAvLyAgIH0NCiAgICAgIC8vIH0pDQogICAgICAvLyB0aGlzLmxvYWRpbmcgPSBmYWxzZQ0KICAgICAgLy8gdGhpcy52aXNpYmxlID0gZmFsc2UNCiAgICAgIHRoaXMuJHJlZnMuZm9ybS52YWxpZGF0ZShhc3luYyAodmFsaWQpID0+IHsNCiAgICAgICAgaWYgKCF2YWxpZCkgew0KICAgICAgICAgIGNvbnNvbGUubG9nKCfooajljZXpqozor4HlpLHotKXvvIzor7fmo4Dmn6XmiYDmnInlv4XloavpobknKQ0KICAgICAgICAgIHJldHVybiBmYWxzZSAvLyDmoKHpqozlpLHotKXml7bpmLvmraLlhbPpl63lvLnlsYINCiAgICAgICAgfQ0KDQogICAgICAgIC8vIOW8gOWni+aPkOS6pO+8jOemgeeUqOaMiemSrg0KICAgICAgICB0aGlzLmlzU3VibWl0dGluZyA9IHRydWUNCiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZQ0KDQogICAgICAgIHRyeSB7DQogICAgICAgICAgLy8g5qC85byP5YyW5pWw5o2uDQogICAgICAgICAgLy8gdGhpcy5mb3JtLmNhdGFsb2dJZCA9IHRoaXMuYWRkSWQNCiAgICAgICAgICAvLyB0aGlzLmZvcm0ucmVxdWVzdFBhcmFtcyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5yZXF1ZXN0UGFyYW1zKQ0KICAgICAgICAgIC8vIHRoaXMuZm9ybS5yZXF1ZXN0SGVhZGVyID0gSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLnJlcXVlc3RIZWFkZXIpDQogICAgICAgICAgLy8gdGhpcy5mb3JtLnJlc3BvbnNlUGFyYW1zID0gSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLnJlc3BvbnNlUGFyYW1zKQ0KICAgICAgICAgIC8vIHRoaXMuZm9ybS5yZXNwb25zZVN0YXR1cyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5yZXNwb25zZVN0YXR1cykNCiAgICAgICAgICAvLyDmoLzlvI/ljJbmlbDmja7liY3lpITnkIbnqbrlj4LmlbANCiAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IHsuLi50aGlzLmZvcm19DQogICAgICAgICAgZm9ybURhdGEudGFibGVJZCA9IHRoaXMucmVsYXRlZElkDQogICAgICAgICAgZm9ybURhdGEuY2F0YWxvZ0lkID0gdGhpcy5jYXRhbG9nSWQNCg0KICAgICAgICAgIC8vIOWkhOeQhuivt+axguWPguaVsOivtOaYjiAtIOS/neeVmee7k+aehOS9hua4heepuuepuuWPguaVsOeahOm7mOiupOWAvA0KICAgICAgICAgIGZvcm1EYXRhLnJlcXVlc3RQYXJhbXMgPSB0aGlzLmZvcm0ucmVxdWVzdFBhcmFtcy5tYXAoaXRlbSA9PiB7DQogICAgICAgICAgICBpZiAoaXRlbS5wYXJhbS50cmltKCkgPT09ICcnKSB7DQogICAgICAgICAgICAgIC8vIOWPguaVsOWQjeS4uuepuuaXtu+8jOa4heepuuaJgOacieWtl+auteWAvA0KICAgICAgICAgICAgICByZXR1cm4gew0KICAgICAgICAgICAgICAgIHBhcmFtOiAnJywNCiAgICAgICAgICAgICAgICBjb21tZW50OiAnJywNCiAgICAgICAgICAgICAgICB0eXBlOiAnJywgLy8g5riF56m66buY6K6k57G75Z6LDQogICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICcnDQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiB7DQogICAgICAgICAgICAgIHBhcmFtOiBpdGVtLnBhcmFtLA0KICAgICAgICAgICAgICBjb21tZW50OiBpdGVtLmNvbW1lbnQsDQogICAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSwNCiAgICAgICAgICAgICAgcmVxdWlyZWQ6IGl0ZW0ucmVxdWlyZWQNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9KQ0KDQogICAgICAgICAgLy8g5ZCM5qC35aSE55CG5YW25LuW5Y+C5pWw6K+05piODQogICAgICAgICAgZm9ybURhdGEucmVxdWVzdEhlYWRlciA9IHRoaXMuZm9ybS5yZXF1ZXN0SGVhZGVyLm1hcChpdGVtID0+IHsNCiAgICAgICAgICAgIGlmIChpdGVtLnBhcmFtLnRyaW0oKSA9PT0gJycpIHsNCiAgICAgICAgICAgICAgcmV0dXJuIHsNCiAgICAgICAgICAgICAgICBwYXJhbTogJycsDQogICAgICAgICAgICAgICAgY29tbWVudDogJycsDQogICAgICAgICAgICAgICAgdHlwZTogJycsDQogICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICcnDQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiB7DQogICAgICAgICAgICAgIHBhcmFtOiBpdGVtLnBhcmFtLA0KICAgICAgICAgICAgICBjb21tZW50OiBpdGVtLmNvbW1lbnQsDQogICAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSwNCiAgICAgICAgICAgICAgcmVxdWlyZWQ6IGl0ZW0ucmVxdWlyZWQNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9KQ0KDQogICAgICAgICAgZm9ybURhdGEucmVzcG9uc2VQYXJhbXMgPSB0aGlzLmZvcm0ucmVzcG9uc2VQYXJhbXMubWFwKGl0ZW0gPT4gew0KICAgICAgICAgICAgaWYgKGl0ZW0ucGFyYW0udHJpbSgpID09PSAnJykgew0KICAgICAgICAgICAgICByZXR1cm4gew0KICAgICAgICAgICAgICAgIHBhcmFtOiAnJywNCiAgICAgICAgICAgICAgICBjb21tZW50OiAnJywNCiAgICAgICAgICAgICAgICB0eXBlOiAnJw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gew0KICAgICAgICAgICAgICBwYXJhbTogaXRlbS5wYXJhbSwNCiAgICAgICAgICAgICAgY29tbWVudDogaXRlbS5jb21tZW50LA0KICAgICAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9KQ0KDQogICAgICAgICAgZm9ybURhdGEucmVzcG9uc2VTdGF0dXMgPSB0aGlzLmZvcm0ucmVzcG9uc2VTdGF0dXMubWFwKGl0ZW0gPT4gew0KICAgICAgICAgICAgaWYgKGl0ZW0ucGFyYW0udHJpbSgpID09PSAnJykgew0KICAgICAgICAgICAgICByZXR1cm4gew0KICAgICAgICAgICAgICAgIHBhcmFtOiAnJywNCiAgICAgICAgICAgICAgICBjb21tZW50OiAnJw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gew0KICAgICAgICAgICAgICBwYXJhbTogaXRlbS5wYXJhbSwNCiAgICAgICAgICAgICAgY29tbWVudDogaXRlbS5jb21tZW50DQogICAgICAgICAgICB9DQogICAgICAgICAgfSkNCg0KICAgICAgICAgIC8vIOi9rOaNouS4ukpTT07lrZfnrKbkuLINCiAgICAgICAgICBjb25zdCByZXF1ZXN0RGF0YSA9IHsNCiAgICAgICAgICAgIC4uLmZvcm1EYXRhLA0KICAgICAgICAgICAgcmVxdWVzdFBhcmFtczogSlNPTi5zdHJpbmdpZnkoZm9ybURhdGEucmVxdWVzdFBhcmFtcyksDQogICAgICAgICAgICByZXF1ZXN0SGVhZGVyOiBKU09OLnN0cmluZ2lmeShmb3JtRGF0YS5yZXF1ZXN0SGVhZGVyKSwNCiAgICAgICAgICAgIHJlc3BvbnNlUGFyYW1zOiBKU09OLnN0cmluZ2lmeShmb3JtRGF0YS5yZXNwb25zZVBhcmFtcyksDQogICAgICAgICAgICByZXNwb25zZVN0YXR1czogSlNPTi5zdHJpbmdpZnkoZm9ybURhdGEucmVzcG9uc2VTdGF0dXMpDQogICAgICAgICAgfQ0KICAgICAgICAgIC8vIOiwg+eUqOaOpeWPow0KICAgICAgICAgIGF3YWl0IEFQSS5kZWxBY3Rpb25zKHJlcXVlc3REYXRhLCBmYWxzZSkNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+aOpeWPo+e8lui+keaIkOWKn++8gScpDQogICAgICAgICAgdGhpcy4kZW1pdCgnY29uZmlybScpDQoNCiAgICAgICAgICAvLyDmiJDlip/lkI7lhbPpl63lvLnlsYINCiAgICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZQ0KICAgICAgICB9IGNhdGNoIChlcnJvcikgew0KICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+aPkOS6pOWksei0pTonLCBlcnJvcikNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKCfmjqXlj6PmlrDlop7lpLHotKXvvIzor7fph43or5UnKQ0KICAgICAgICB9IGZpbmFsbHkgew0KICAgICAgICAgIC8vIOaXoOiuuuaIkOWKn+Wksei0pe+8jOaBouWkjeaMiemSrueKtuaAgQ0KICAgICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2UNCiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZQ0KICAgICAgICB9DQogICAgICB9KQ0KICAgIH0NCiAgfQ0KfQ0K"},null]}