{"remainingRequest":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!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\\babel.config.js","mtime":1733906004399},{"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:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvZGF0YVNoYXJlLWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yUnVudGltZS5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9kYXRhU2hhcmUtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL2RhdGFTaGFyZS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaW5jbHVkZXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmNvbnN0cnVjdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5qc29uLnN0cmluZ2lmeS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5pbmNsdWRlcy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy50cmltLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7Ci8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCgppbXBvcnQgQVBJIGZyb20gJ0AvYXBpL2J1c2luZXNzL3NoYXJlQXBpJzsKaW1wb3J0IGRpYWxvZ01peGluIGZyb20gJ0AvbWl4aW5zL2RpYWxvZy5qcyc7CmltcG9ydCBjb2RlRWRpdG9yIGZyb20gJ0AvY29tcG9uZW50cy9jb2RlRWRpdG9yL2luZGV4LnZ1ZSc7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnRGV0YWlsRGlhbG9nJywKICBjb21wb25lbnRzOiB7CiAgICBjb2RlRWRpdG9yOiBjb2RlRWRpdG9yCiAgfSwKICBtaXhpbnM6IFtkaWFsb2dNaXhpbl0sCiAgcHJvcHM6IHsKICAgIHNlbGVjdGVkUm93czogewogICAgICB0eXBlOiBBcnJheSwKICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7CiAgICAgICAgcmV0dXJuIFtdOwogICAgICB9CiAgICB9LAogICAgcmVsYXRlZElkOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogJycKICAgIH0KICB9LAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICBhZGRKc29uTXVsdGlwbGVSZXF1ZXN0UGFyYW1zOiBbXSwKICAgICAgYWRkSnNvbk11bHRpcGxlUmVxdWVzdEhlYWRlcjogW10sCiAgICAgIGFkZEpzb25NdWx0aXBsZVJlc3BvbnNlUGFyYW1zOiBbXSwKICAgICAgYWRkSnNvbk11bHRpcGxlUmVzcG9uc2VTdGF0dXM6IFtdLAogICAgICB0YWJJdGVtSWQ6IDEsCiAgICAgIC8vIOihqOagvOaVsOaNrueahCBpZAogICAgICBsYWJlbFBvc2l0aW9uOiAnbGVmdCcsCiAgICAgIHRpbWVWYWx1ZTogJycsCiAgICAgIHF1cmV5OiAnJywKICAgICAgbW9kZTogJycsCiAgICAgIHNxbG9wdGlvbnM6IFtdLAogICAgICBvcHRpb25zOiBbewogICAgICAgIGxhYmVsOiAn5YiG6aG1JywKICAgICAgICB2YWx1ZTogMQogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICfkuI3liIbpobUnLAogICAgICAgIHZhbHVlOiAwCiAgICAgIH1dLAogICAgICBmb3JtOiB7CiAgICAgICAgc291cmNlVHlwZTogJzEnLAogICAgICAgIHNxbDogJycsCiAgICAgICAgYXBpUXVyZXlUeXBlOiAnJwogICAgICB9LAogICAgICB0eXBlb3B0aW9uczogW3sKICAgICAgICB2YWx1ZTogJ1N0cmluZycsCiAgICAgICAgbGFiZWw6ICflrZfnrKbkuLInCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJ0ludGVnZXInLAogICAgICAgIGxhYmVsOiAn5pWw5a2X5Z6LJwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICdEYXRlJywKICAgICAgICBsYWJlbDogJ+aXpeacnycKICAgICAgfQogICAgICAvLyB7dmFsdWU6ICc0JywgbGFiZWw6ICfml7bpl7QnfQogICAgICBdLAogICAgICB0YWJsZU5hbWVMaXN0OiBbJ0dFVCcsICdQT1NUJ10sCiAgICAgIHJ1bGVzOiB7CiAgICAgICAgYXBpTmFtZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+aOpeWPo+WQjeensOS4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9XSwKICAgICAgICBhcGlVcmw6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfmjqXlj6PlnLDlnYDkuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogJ2JsdXInCiAgICAgICAgfV0sCiAgICAgICAgYXBpUXVyZXlUeXBlOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5o6l5Y+j5p+l6K+i5pa55byP5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6ICdjaGFuZ2UnCiAgICAgICAgfV0sCiAgICAgICAgYXBpTW9kZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+axguaWueW8j+S4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiAnY2hhbmdlJwogICAgICAgIH1dLAogICAgICAgIGFwaVNxbDogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ1NRTOafpeivouivreWPpeS4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9XSwKICAgICAgICBkYkFsaWFzOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup5pWw5o2u5rqQJywKICAgICAgICAgIHRyaWdnZXI6ICdjaGFuZ2UnCiAgICAgICAgfV0KICAgICAgfSwKICAgICAgbG9hZGluZzogZmFsc2UKICAgIH07CiAgfSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkgewogICAgdGhpcy5vbkNvbmZpcm0oKTsKICB9LAogIG1ldGhvZHM6IHsKICAgIC8qKg0KICAgICAqIEBkZXNjcmlwdGlvbjogZGlhbG9n5q+P5qyh5pi+56S65pe26Kem5Y+R55qEaW5pdOaWueazlQ0KICAgICAqIEBwYXJhbSB7Kn0gZGF0YSDkvKDlhaVkYXRhDQogICAgICogQHJldHVybiB7Kn0NCiAgICAgKi8KICAgIGluaXREYXRhOiBmdW5jdGlvbiBpbml0RGF0YShkYXRhKSB7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAgIC8vIGNvbnNvbGUubG9nKCdpZGlkaWRpJywgZGF0YSk7IC8vIOi/m+mhtemdouaJk+WNsGlkCiAgICAgIC8vIGNvbnNvbGUubG9nKCdpZGlkaWRpJywgZGF0YS5yZXF1ZXN0UGFyYW1zKTsgLy8g6L+b6aG16Z2i5omT5Y2waWQKICAgICAgdmFyIG9yZ0Zvcm0gPSB0aGlzLiRvcHRpb25zLmRhdGEoKS5mb3JtOwogICAgICB0aGlzLmZvcm0gPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG9yZ0Zvcm0pLCBkYXRhKTsKICAgICAgLy8g6YeN54K55L+u5pS56L+Z6YeM77yM56Gu5L+d5q2j56Gu6LWL5YC8IHJlcXVlc3RQYXJhbXMg5pWw5o2uCiAgICAgIC8vIOivt+axguWPguaVsOivtOaYjgogICAgICBpZiAoZGF0YS5yZXF1ZXN0UGFyYW1zICYmIHR5cGVvZiBkYXRhLnJlcXVlc3RQYXJhbXMgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHZhciBwYXJzZWRQYXJhbXMgPSBKU09OLnBhcnNlKGRhdGEucmVxdWVzdFBhcmFtcyk7CiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXJzZWRQYXJhbXMpKSB7CiAgICAgICAgICAgIHRoaXMuZm9ybS5yZXF1ZXN0UGFyYW1zID0gcGFyc2VkUGFyYW1zLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBwYXJhbTogaXRlbS5wYXJhbSB8fCAnJywKICAgICAgICAgICAgICAgIGNvbW1lbnQ6IGl0ZW0uY29tbWVudCB8fCAnJywKICAgICAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSB8fCAnJywKICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBpdGVtLnJlcXVpcmVkID09PSAndHJ1ZScgfHwgaXRlbS5yZXF1aXJlZCA9PT0gdHJ1ZSAvLyDkv67mraPluIPlsJTlgLzovazmjaIKICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgY29uc29sZS5lcnJvcign6Kej5p6QIHJlcXVlc3RQYXJhbXMg5pWw5o2u5Ye66ZSZOicsIGVycm9yKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgLy8g6K+35rGC5aS06K+05piOCiAgICAgIGlmIChkYXRhLnJlcXVlc3RIZWFkZXIgJiYgdHlwZW9mIGRhdGEucmVxdWVzdEhlYWRlciA9PT0gJ3N0cmluZycpIHsKICAgICAgICB0cnkgewogICAgICAgICAgdmFyIF9wYXJzZWRQYXJhbXMgPSBKU09OLnBhcnNlKGRhdGEucmVxdWVzdEhlYWRlcik7CiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfcGFyc2VkUGFyYW1zKSkgewogICAgICAgICAgICB0aGlzLmZvcm0ucmVxdWVzdEhlYWRlciA9IF9wYXJzZWRQYXJhbXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhcmFtOiBpdGVtLnBhcmFtIHx8ICcnLAogICAgICAgICAgICAgICAgY29tbWVudDogaXRlbS5jb21tZW50IHx8ICcnLAogICAgICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlIHx8ICcnLAogICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGl0ZW0ucmVxdWlyZWQgPT09ICd0cnVlJyB8fCBpdGVtLnJlcXVpcmVkID09PSB0cnVlIC8vIOS/ruato+W4g+WwlOWAvOi9rOaNogogICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICBjb25zb2xlLmVycm9yKCfop6PmnpAgcmVxdWVzdEhlYWRlciDmlbDmja7lh7rplJk6JywgZXJyb3IpOwogICAgICAgIH0KICAgICAgfQogICAgICAvLyDov5Tlm57lj4LmlbDor7TmmI4KICAgICAgaWYgKGRhdGEucmVzcG9uc2VQYXJhbXMgJiYgdHlwZW9mIGRhdGEucmVzcG9uc2VQYXJhbXMgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHZhciBfcGFyc2VkUGFyYW1zMiA9IEpTT04ucGFyc2UoZGF0YS5yZXNwb25zZVBhcmFtcyk7CiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfcGFyc2VkUGFyYW1zMikpIHsKICAgICAgICAgICAgdGhpcy5mb3JtLnJlc3BvbnNlUGFyYW1zID0gX3BhcnNlZFBhcmFtczIubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhcmFtOiBpdGVtLnBhcmFtIHx8ICcnLAogICAgICAgICAgICAgICAgY29tbWVudDogaXRlbS5jb21tZW50IHx8ICcnLAogICAgICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlIHx8ICcnCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+ino+aekCByZXNwb25zZVBhcmFtcyDmlbDmja7lh7rplJk6JywgZXJyb3IpOwogICAgICAgIH0KICAgICAgfQogICAgICAvLyDlk43lupTnirbmgIHnoIHkv6Hmga8KICAgICAgaWYgKGRhdGEucmVzcG9uc2VTdGF0dXMgJiYgdHlwZW9mIGRhdGEucmVzcG9uc2VTdGF0dXMgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHZhciBfcGFyc2VkUGFyYW1zMyA9IEpTT04ucGFyc2UoZGF0YS5yZXNwb25zZVN0YXR1cyk7CiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfcGFyc2VkUGFyYW1zMykpIHsKICAgICAgICAgICAgdGhpcy5mb3JtLnJlc3BvbnNlU3RhdHVzID0gX3BhcnNlZFBhcmFtczMubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhcmFtOiBpdGVtLnBhcmFtIHx8ICcnLAogICAgICAgICAgICAgICAgY29tbWVudDogaXRlbS5jb21tZW50IHx8ICcnCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+ino+aekCByZXNwb25zZVN0YXR1cyDmlbDmja7lh7rplJk6JywgZXJyb3IpOwogICAgICAgIH0KICAgICAgfQogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgX3RoaXMuJHJlZnMuZm9ybS5jbGVhclZhbGlkYXRlKCk7CiAgICAgIH0pOwogICAgICB0aGlzLnNlbGVjdFNxbCgpOwogICAgfSwKICAgIC8vIOaVsOaNrua6kOaOpeWPo+iwg+eUqAogICAgc2VsZWN0U3FsOiBmdW5jdGlvbiBzZWxlY3RTcWwoKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgICByZXR1cm4gQVBJLmFkZFNvdXJjZURhdGEoKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBjb25zb2xlLmxvZygnY2FjYWNhY3MnLCByZXMpOyAvLyDmlbDmja7lupMKICAgICAgICBfdGhpczIuc3Fsb3B0aW9ucyA9IHJlcy5kYXRhLm1hcChmdW5jdGlvbiAoZGF0YSkgewogICAgICAgICAgdmFyIGZvcm0gPSB7CiAgICAgICAgICAgIC8vIGxhYmVsOiBkYXRhLmFsaWFzLAogICAgICAgICAgICAvLyB2YWx1ZTogZGF0YS5pZCwKICAgICAgICAgICAgbGFiZWw6IGRhdGEubmFtZSwKICAgICAgICAgICAgdmFsdWU6IGRhdGEuYWxpYXMKICAgICAgICAgIH07CiAgICAgICAgICByZXR1cm4gZm9ybTsKICAgICAgICB9KTsKICAgICAgICAvLyBjb25zb2xlLmxvZyhyZXMucm93cyk7CiAgICAgICAgY29uc29sZS5sb2coJ+aVsOaNrua6kCcsIF90aGlzMi5zcWxvcHRpb25zKTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgY29uc29sZS5lcnJvcign6I635Y+W5pWw5o2u5rqQ5aSx6LSlJywgZXJyb3IpOwogICAgICB9KTsKICAgIH0sCiAgICBSbmROdW06IGZ1bmN0aW9uIFJuZE51bShuKSB7CiAgICAgIC8vIOeUn+aIkOmaj+acuuaVsAogICAgICB2YXIgcmRtTnVtID0gJyc7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgcmRtTnVtICs9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwKTsgLy8gWzAsMTAp55qE5pW05pWwCiAgICAgIH0KICAgICAgcmV0dXJuIHJkbU51bTsKICAgIH0sCiAgICAvLyDor7fmsYLlj4LmlbDor7TmmI4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBhZGRKc29uUmVxdWVzdFBhcmFtczogZnVuY3Rpb24gYWRkSnNvblJlcXVlc3RQYXJhbXModmFsKSB7CiAgICAgIHRoaXMuYWRkSnNvbk11bHRpcGxlUmVxdWVzdFBhcmFtcyA9IHZhbDsKICAgIH0sCiAgICAvLyDmt7vliqAKICAgIGFkZFRhYmxlUmVxdWVzdFBhcmFtczogZnVuY3Rpb24gYWRkVGFibGVSZXF1ZXN0UGFyYW1zKCkgewogICAgICB0aGlzLnRhYkl0ZW1JZCA9ICJUIi5jb25jYXQodGhpcy5SbmROdW0oNikpOyAvLyDnlJ/miJDku6VU5byA5aS055qE5LiD5L2N6ZqP5py65pWwCiAgICAgIHRoaXMuZm9ybS5yZXF1ZXN0UGFyYW1zLnB1c2goewogICAgICAgIG5hbWU6ICcnLAogICAgICAgIHZhbHVlOiAnJywKICAgICAgICB0YWJJdGVtSWQ6IHRoaXMudGFiSXRlbUlkCiAgICAgIH0pOwogICAgfSwKICAgIC8vIOWIoOmZpAogICAgZGVsVGFibGVSZXF1ZXN0UGFyYW1zOiBmdW5jdGlvbiBkZWxUYWJsZVJlcXVlc3RQYXJhbXMoKSB7CiAgICAgIC8vIOehruiupOWIoOmZpAogICAgICBpZiAodGhpcy5hZGRKc29uTXVsdGlwbGVSZXF1ZXN0UGFyYW1zLmxlbmd0aCA+IDApIHsKICAgICAgICB2YXIgYXJycyA9IFtdOwogICAgICAgIHZhciBpZHMgPSB0aGlzLmFkZEpzb25NdWx0aXBsZVJlcXVlc3RQYXJhbXMubWFwKGZ1bmN0aW9uICh2YWwpIHsKICAgICAgICAgIHJldHVybiB2YWwudGFiSXRlbUlkOwogICAgICAgIH0pOyAvLyDmi7/liLDpgInkuK3nmoTmlbDmja5pZCwKICAgICAgICB0aGlzLmZvcm0ucmVxdWVzdFBhcmFtcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICBpZiAoIWlkcy5pbmNsdWRlcyhpdGVtLnRhYkl0ZW1JZCkpIHsKICAgICAgICAgICAgLy8g5b2TaWTlnKhwYXJhbXPkuK3vvIzooajnpLrmlbDmja7ooqvpgInkuK3vvIzor6XlsIblhbbliKDpmaTvvIzljbPlsIbkuI3ooqvpgInkuK3nmoTkv53nlZkKICAgICAgICAgICAgYXJycy5wdXNoKGl0ZW0pOwogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHRoaXMuZm9ybS5yZXF1ZXN0UGFyYW1zID0gYXJyczsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+mAieaLqeimgeWIoOmZpOeahOaVsOaNricpOwogICAgICB9CiAgICB9LAogICAgLy8g6K+35rGC5aS06K+05piOLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBhZGRKc29uUmVxdWVzdEhlYWRlcjogZnVuY3Rpb24gYWRkSnNvblJlcXVlc3RIZWFkZXIodmFsKSB7CiAgICAgIHRoaXMuYWRkSnNvbk11bHRpcGxlUmVxdWVzdEhlYWRlciA9IHZhbDsKICAgIH0sCiAgICAvLyDmt7vliqAKICAgIGFkZFRhYmxlUmVxdWVzdEhlYWRlcjogZnVuY3Rpb24gYWRkVGFibGVSZXF1ZXN0SGVhZGVyKCkgewogICAgICB0aGlzLnRhYkl0ZW1JZCA9ICJUIi5jb25jYXQodGhpcy5SbmROdW0oNikpOyAvLyDnlJ/miJDku6VU5byA5aS055qE5LiD5L2N6ZqP5py65pWwCiAgICAgIHRoaXMuZm9ybS5yZXF1ZXN0SGVhZGVyLnB1c2goewogICAgICAgIG5hbWU6ICcnLAogICAgICAgIHZhbHVlOiAnJywKICAgICAgICB0YWJJdGVtSWQ6IHRoaXMudGFiSXRlbUlkCiAgICAgIH0pOwogICAgfSwKICAgIC8vIOWIoOmZpAogICAgZGVsVGFibGVSZXF1ZXN0SGVhZGVyOiBmdW5jdGlvbiBkZWxUYWJsZVJlcXVlc3RIZWFkZXIoKSB7CiAgICAgIC8vIOehruiupOWIoOmZpAogICAgICBpZiAodGhpcy5hZGRKc29uTXVsdGlwbGVSZXF1ZXN0SGVhZGVyLmxlbmd0aCA+IDApIHsKICAgICAgICB2YXIgYXJycyA9IFtdOwogICAgICAgIHZhciBpZHMgPSB0aGlzLmFkZEpzb25NdWx0aXBsZVJlcXVlc3RIZWFkZXIubWFwKGZ1bmN0aW9uICh2YWwpIHsKICAgICAgICAgIHJldHVybiB2YWwudGFiSXRlbUlkOwogICAgICAgIH0pOyAvLyDmi7/liLDpgInkuK3nmoTmlbDmja5pZCwKICAgICAgICB0aGlzLmZvcm0ucmVxdWVzdEhlYWRlci5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICBpZiAoIWlkcy5pbmNsdWRlcyhpdGVtLnRhYkl0ZW1JZCkpIHsKICAgICAgICAgICAgLy8g5b2TaWTlnKhwYXJhbXPkuK3vvIzooajnpLrmlbDmja7ooqvpgInkuK3vvIzor6XlsIblhbbliKDpmaTvvIzljbPlsIbkuI3ooqvpgInkuK3nmoTkv53nlZkKICAgICAgICAgICAgYXJycy5wdXNoKGl0ZW0pOwogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHRoaXMuZm9ybS5yZXF1ZXN0SGVhZGVyID0gYXJyczsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+mAieaLqeimgeWIoOmZpOeahOaVsOaNricpOwogICAgICB9CiAgICB9LAogICAgLy8g6L+U5Zue5Y+C5pWw6K+05piOLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgYWRkSnNvblJlc3BvbnNlU3RhdHVzOiBmdW5jdGlvbiBhZGRKc29uUmVzcG9uc2VTdGF0dXModmFsKSB7CiAgICAgIHRoaXMuYWRkSnNvbk11bHRpcGxlUmVzcG9uc2VQYXJhbXMgPSB2YWw7CiAgICB9LAogICAgLy8g5re75YqgCiAgICBhZGRUYWJsZVJlc3BvbnNlUGFyYW1zOiBmdW5jdGlvbiBhZGRUYWJsZVJlc3BvbnNlUGFyYW1zKCkgewogICAgICB0aGlzLnRhYkl0ZW1JZCA9ICJUIi5jb25jYXQodGhpcy5SbmROdW0oNikpOyAvLyDnlJ/miJDku6VU5byA5aS055qE5LiD5L2N6ZqP5py65pWwCiAgICAgIHRoaXMuZm9ybS5yZXNwb25zZVBhcmFtcy5wdXNoKHsKICAgICAgICBuYW1lOiAnJywKICAgICAgICB2YWx1ZTogJycsCiAgICAgICAgdGFiSXRlbUlkOiB0aGlzLnRhYkl0ZW1JZAogICAgICB9KTsKICAgIH0sCiAgICAvLyDliKDpmaQKICAgIGRlbFRhYmxlUmVzcG9uc2VQYXJhbXM6IGZ1bmN0aW9uIGRlbFRhYmxlUmVzcG9uc2VQYXJhbXMoKSB7CiAgICAgIC8vIOehruiupOWIoOmZpAogICAgICBpZiAodGhpcy5hZGRKc29uTXVsdGlwbGVSZXNwb25zZVBhcmFtcy5sZW5ndGggPiAwKSB7CiAgICAgICAgdmFyIGFycnMgPSBbXTsKICAgICAgICB2YXIgaWRzID0gdGhpcy5hZGRKc29uTXVsdGlwbGVSZXNwb25zZVBhcmFtcy5tYXAoZnVuY3Rpb24gKHZhbCkgewogICAgICAgICAgcmV0dXJuIHZhbC50YWJJdGVtSWQ7CiAgICAgICAgfSk7IC8vIOaLv+WIsOmAieS4reeahOaVsOaNrmlkLAogICAgICAgIHRoaXMuZm9ybS5yZXNwb25zZVBhcmFtcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICBpZiAoIWlkcy5pbmNsdWRlcyhpdGVtLnRhYkl0ZW1JZCkpIHsKICAgICAgICAgICAgLy8g5b2TaWTlnKhwYXJhbXPkuK3vvIzooajnpLrmlbDmja7ooqvpgInkuK3vvIzor6XlsIblhbbliKDpmaTvvIzljbPlsIbkuI3ooqvpgInkuK3nmoTkv53nlZkKICAgICAgICAgICAgYXJycy5wdXNoKGl0ZW0pOwogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHRoaXMuZm9ybS5yZXNwb25zZVBhcmFtcyA9IGFycnM7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCfor7fpgInmi6nopoHliKDpmaTnmoTmlbDmja4nKTsKICAgICAgfQogICAgfSwKICAgIC8vIOWTjeW6lOeKtuaAgeeggeS/oeaBry0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgYWRkSnNvblJlc3BvbnNlUGFyYW1zOiBmdW5jdGlvbiBhZGRKc29uUmVzcG9uc2VQYXJhbXModmFsKSB7CiAgICAgIHRoaXMuYWRkSnNvbk11bHRpcGxlUmVzcG9uc2VTdGF0dXMgPSB2YWw7CiAgICB9LAogICAgLy8g5re75YqgCiAgICBhZGRUYWJsZVJlc3BvbnNlU3RhdHVzOiBmdW5jdGlvbiBhZGRUYWJsZVJlc3BvbnNlU3RhdHVzKCkgewogICAgICB0aGlzLnRhYkl0ZW1JZCA9ICJUIi5jb25jYXQodGhpcy5SbmROdW0oNikpOyAvLyDnlJ/miJDku6VU5byA5aS055qE5LiD5L2N6ZqP5py65pWwCiAgICAgIHRoaXMuZm9ybS5yZXNwb25zZVN0YXR1cy5wdXNoKHsKICAgICAgICBjb2RlOiAnJywKICAgICAgICBjb21tZW50OiAnJywKICAgICAgICB0YWJJdGVtSWQ6IHRoaXMudGFiSXRlbUlkCiAgICAgIH0pOwogICAgfSwKICAgIC8vIOWIoOmZpAogICAgZGVsVGFibGVSZXNwb25zZVN0YXR1czogZnVuY3Rpb24gZGVsVGFibGVSZXNwb25zZVN0YXR1cygpIHsKICAgICAgLy8g56Gu6K6k5Yig6ZmkCiAgICAgIGlmICh0aGlzLmFkZEpzb25NdWx0aXBsZVJlc3BvbnNlU3RhdHVzLmxlbmd0aCA+IDApIHsKICAgICAgICB2YXIgYXJycyA9IFtdOwogICAgICAgIHZhciBpZHMgPSB0aGlzLmFkZEpzb25NdWx0aXBsZVJlc3BvbnNlU3RhdHVzLm1hcChmdW5jdGlvbiAodmFsKSB7CiAgICAgICAgICByZXR1cm4gdmFsLnRhYkl0ZW1JZDsKICAgICAgICB9KTsgLy8g5ou/5Yiw6YCJ5Lit55qE5pWw5o2uaWQsCiAgICAgICAgdGhpcy5mb3JtLnJlc3BvbnNlU3RhdHVzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIGlmICghaWRzLmluY2x1ZGVzKGl0ZW0udGFiSXRlbUlkKSkgewogICAgICAgICAgICAvLyDlvZNpZOWcqHBhcmFtc+S4re+8jOihqOekuuaVsOaNruiiq+mAieS4re+8jOivpeWwhuWFtuWIoOmZpO+8jOWNs+WwhuS4jeiiq+mAieS4reeahOS/neeVmQogICAgICAgICAgICBhcnJzLnB1c2goaXRlbSk7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgdGhpcy5mb3JtLnJlc3BvbnNlU3RhdHVzID0gYXJyczsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+mAieaLqeimgeWIoOmZpOeahOaVsOaNricpOwogICAgICB9CiAgICB9LAogICAgLy8g5Y+W5raI5oyJ6ZKuCiAgICBvbkNhbmNlbDogZnVuY3Rpb24gb25DYW5jZWwoKSB7CiAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlOwogICAgICB0aGlzLmZvcm0gPSB0aGlzLiRvcHRpb25zLmRhdGEoKS5mb3JtOwogICAgfSwKICAgIC8vIOehruWumuaMiemSri3mlrDlop7lkI7mjqXlj6PosIPnlKjvvIzlsZXnpLrlnKjliJfooagKICAgIC8vIG9uQ29uZmlybSgpIHsKICAgIC8vICAgdGhpcy4kcmVmcy5mb3JtLnZhbGlkYXRlKGFzeW5jICh2YWxpZCkgPT4gewogICAgLy8gICAgIGlmICh2YWxpZCkgewogICAgLy8gICAgICAgY29uc3QgZm9ybURhdGEgPSB7CiAgICAvLyAgICAgICAgIC4uLnRoaXMuZm9ybSwKICAgIC8vICAgICAgICAgdGFibGVJZDogdGhpcy5yZWxhdGVkSWQsCiAgICAvLyAgICAgICB9OwogICAgLy8gICAgICAgLy8gdGhpcy5mb3JtLmNhdGFsb2dJZCA9IHRoaXMuYWRkSWQ7CiAgICAvLyAgICAgICBmb3JtRGF0YS5yZXF1ZXN0UGFyYW1zID0gSlNPTi5zdHJpbmdpZnkoZm9ybURhdGEucmVxdWVzdFBhcmFtcyk7IC8vIOivt+axguWPguaVsOivtOaYjgogICAgLy8gICAgICAgZm9ybURhdGEucmVxdWVzdEhlYWRlciA9IEpTT04uc3RyaW5naWZ5KGZvcm1EYXRhLnJlcXVlc3RIZWFkZXIpOyAvLyDor7fmsYLlpLTor7TmmI4KICAgIC8vICAgICAgIGZvcm1EYXRhLnJlc3BvbnNlUGFyYW1zID0gSlNPTi5zdHJpbmdpZnkoZm9ybURhdGEucmVzcG9uc2VQYXJhbXMpOyAvLyDov5Tlm57lj4LmlbDor7TmmI4KICAgIC8vICAgICAgIGZvcm1EYXRhLnJlc3BvbnNlU3RhdHVzID0gSlNPTi5zdHJpbmdpZnkoZm9ybURhdGEucmVzcG9uc2VTdGF0dXMpOyAvLyDlk43lupTnirbmgIHnoIHkv6Hmga8KICAgIC8vICAgICAgIEFQSS5kZWxBY3Rpb24oZm9ybURhdGEsIGZhbHNlKQogICAgLy8gICAgICAgICAudGhlbigocmVzKSA9PiB7CiAgICAvLyAgICAgICAgICAgY29uc29sZS5sb2cocmVzKTsKICAgIC8vICAgICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+aOpeWPo+e8lui+keaIkOWKn++8gScpOwogICAgLy8gICAgICAgICAgIC8vIOaWsOWinuaIkOWKn+WQju+8jOmAmui/hyAkZW1pdCDop6blj5Hoh6rlrprkuYnkuovku7bvvIzkvKDpgJLmlrDlop7miJDlip/nmoTkv6Hlj7fku6Xlj4rlj6/og73nm7jlhbPnmoTmlbDmja7vvIjniLbnu4Tku7blj6/ku6Xnm5HlkKzov5nkuKrkuovku7bmnaXlgZrlh7rnm7jlupTnmoTlpITnkIbvvIkKICAgIC8vICAgICAgICAgICB0aGlzLiRlbWl0KCdjb25maXJtJyk7CiAgICAvLyAgICAgICAgIH0pCiAgICAvLyAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHsKICAgIC8vICAgICAgICAgICBjb25zb2xlLmVycm9yKCfojrflj5bmlbDmja7lpLHotKUnLCBlcnJvcik7CiAgICAvLyAgICAgICAgIH0pOwogICAgLy8gICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7CiAgICAvLyAgICAgICAvLyB9CiAgICAvLyAgICAgfSBlbHNlIHsKICAgIC8vICAgICAgIGNvbnNvbGUubG9nKCfooajljZXpqozor4HlpLHotKXvvIzor7fmo4Dmn6XmiYDmnInlv4XloavpobknKTsKICAgIC8vICAgICAgIHJldHVybiBmYWxzZTsKICAgIC8vICAgICB9CiAgICAvLyAgIH0pOwogICAgLy8gICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsKICAgIC8vICAgdGhpcy52aXNpYmxlID0gZmFsc2U7CiAgICAvLyB9LAogICAgb25Db25maXJtOiBmdW5jdGlvbiBvbkNvbmZpcm0oKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICAvLyB0aGlzLiRyZWZzLmZvcm0udmFsaWRhdGUoYXN5bmMgKHZhbGlkKSA9PiB7CiAgICAgIC8vICAgaWYgKHZhbGlkKSB7CiAgICAgIC8vICAgICB0aGlzLmZvcm0uY2F0YWxvZ0lkID0gdGhpcy5yZWxhdGVkSWQKICAgICAgLy8gICAgIHRoaXMuZm9ybS5yZXF1ZXN0UGFyYW1zID0gSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLnJlcXVlc3RQYXJhbXMpIC8vIOivt+axguWPguaVsOivtOaYjgogICAgICAvLyAgICAgdGhpcy5mb3JtLnJlcXVlc3RIZWFkZXIgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm0ucmVxdWVzdEhlYWRlcikgLy8g6K+35rGC5aS06K+05piOCiAgICAgIC8vICAgICB0aGlzLmZvcm0ucmVzcG9uc2VQYXJhbXMgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm0ucmVzcG9uc2VQYXJhbXMpIC8vIOi/lOWbnuWPguaVsOivtOaYjgogICAgICAvLyAgICAgdGhpcy5mb3JtLnJlc3BvbnNlU3RhdHVzID0gSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLnJlc3BvbnNlU3RhdHVzKSAvLyDlk43lupTnirbmgIHnoIHkv6Hmga8KICAgICAgLy8gICAgIEFQSS5kZWxBY3Rpb25zKHRoaXMuZm9ybSwgZmFsc2UpCiAgICAgIC8vICAgICAgIC50aGVuKChyZXMpID0+IHsKICAgICAgLy8gICAgICAgICBjb25zb2xlLmxvZyhyZXMpCiAgICAgIC8vICAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCfmjqXlj6PnvJbovpHmiJDlip/vvIEnKQogICAgICAvLyAgICAgICAgIC8vIOaWsOWinuaIkOWKn+WQju+8jOmAmui/hyAkZW1pdCDop6blj5Hoh6rlrprkuYnkuovku7bvvIzkvKDpgJLmlrDlop7miJDlip/nmoTkv6Hlj7fku6Xlj4rlj6/og73nm7jlhbPnmoTmlbDmja7vvIjniLbnu4Tku7blj6/ku6Xnm5HlkKzov5nkuKrkuovku7bmnaXlgZrlh7rnm7jlupTnmoTlpITnkIbvvIkKICAgICAgLy8gICAgICAgICB0aGlzLiRlbWl0KCdjb25maXJtJykKICAgICAgLy8gICAgICAgfSkKICAgICAgLy8gICAgICAgLmNhdGNoKChlcnJvcikgPT4gewogICAgICAvLyAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+iOt+WPluaVsOaNruWksei0pScsIGVycm9yKQogICAgICAvLyAgICAgICB9KQogICAgICAvLyAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2UKICAgICAgLy8gICAgIC8vIH0KICAgICAgLy8gICB9IGVsc2UgewogICAgICAvLyAgICAgY29uc29sZS5sb2coJ+ihqOWNlemqjOivgeWksei0pe+8jOivt+ajgOafpeaJgOacieW/heWhq+mhuScpCiAgICAgIC8vICAgICByZXR1cm4gZmFsc2UKICAgICAgLy8gICB9CiAgICAgIC8vIH0pCiAgICAgIC8vIHRoaXMubG9hZGluZyA9IGZhbHNlCiAgICAgIC8vIHRoaXMudmlzaWJsZSA9IGZhbHNlCiAgICAgIHRoaXMuJHJlZnMuZm9ybS52YWxpZGF0ZSgvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBfcmVmID0gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUodmFsaWQpIHsKICAgICAgICAgIHZhciBmb3JtRGF0YSwgcmVxdWVzdERhdGE7CiAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHsKICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBpZiAodmFsaWQpIHsKICAgICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDM7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+ihqOWNlemqjOivgeWksei0pe+8jOivt+ajgOafpeaJgOacieW/heWhq+mhuScpOwogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdCgicmV0dXJuIiwgZmFsc2UpOwogICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgIC8vIOW8gOWni+aPkOS6pO+8jOemgeeUqOaMiemSrgogICAgICAgICAgICAgICAgX3RoaXMzLmlzU3VibWl0dGluZyA9IHRydWU7CiAgICAgICAgICAgICAgICBfdGhpczMubG9hZGluZyA9IHRydWU7CiAgICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gNTsKICAgICAgICAgICAgICAgIC8vIOagvOW8j+WMluaVsOaNrgogICAgICAgICAgICAgICAgLy8gdGhpcy5mb3JtLmNhdGFsb2dJZCA9IHRoaXMuYWRkSWQKICAgICAgICAgICAgICAgIC8vIHRoaXMuZm9ybS5yZXF1ZXN0UGFyYW1zID0gSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLnJlcXVlc3RQYXJhbXMpCiAgICAgICAgICAgICAgICAvLyB0aGlzLmZvcm0ucmVxdWVzdEhlYWRlciA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5yZXF1ZXN0SGVhZGVyKQogICAgICAgICAgICAgICAgLy8gdGhpcy5mb3JtLnJlc3BvbnNlUGFyYW1zID0gSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLnJlc3BvbnNlUGFyYW1zKQogICAgICAgICAgICAgICAgLy8gdGhpcy5mb3JtLnJlc3BvbnNlU3RhdHVzID0gSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLnJlc3BvbnNlU3RhdHVzKQogICAgICAgICAgICAgICAgLy8g5qC85byP5YyW5pWw5o2u5YmN5aSE55CG56m65Y+C5pWwCiAgICAgICAgICAgICAgICBmb3JtRGF0YSA9IF9vYmplY3RTcHJlYWQoe30sIF90aGlzMy5mb3JtKTsKICAgICAgICAgICAgICAgIGZvcm1EYXRhLnRhYmxlSWQgPSBfdGhpczMucmVsYXRlZElkOwogICAgICAgICAgICAgICAgZm9ybURhdGEuY2F0YWxvZ0lkID0gX3RoaXMzLmNhdGFsb2dJZDsKCiAgICAgICAgICAgICAgICAvLyDlpITnkIbor7fmsYLlj4LmlbDor7TmmI4gLSDkv53nlZnnu5PmnoTkvYbmuIXnqbrnqbrlj4LmlbDnmoTpu5jorqTlgLwKICAgICAgICAgICAgICAgIGZvcm1EYXRhLnJlcXVlc3RQYXJhbXMgPSBfdGhpczMuZm9ybS5yZXF1ZXN0UGFyYW1zLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgICBpZiAoaXRlbS5wYXJhbS50cmltKCkgPT09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgLy8g5Y+C5pWw5ZCN5Li656m65pe277yM5riF56m65omA5pyJ5a2X5q615YC8CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgIHBhcmFtOiAnJywKICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQ6ICcnLAogICAgICAgICAgICAgICAgICAgICAgdHlwZTogJycsCiAgICAgICAgICAgICAgICAgICAgICAvLyDmuIXnqbrpu5jorqTnsbvlnosKICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnJwogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBwYXJhbTogaXRlbS5wYXJhbSwKICAgICAgICAgICAgICAgICAgICBjb21tZW50OiBpdGVtLmNvbW1lbnQsCiAgICAgICAgICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLAogICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBpdGVtLnJlcXVpcmVkCiAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAvLyDlkIzmoLflpITnkIblhbbku5blj4LmlbDor7TmmI4KICAgICAgICAgICAgICAgIGZvcm1EYXRhLnJlcXVlc3RIZWFkZXIgPSBfdGhpczMuZm9ybS5yZXF1ZXN0SGVhZGVyLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgICBpZiAoaXRlbS5wYXJhbS50cmltKCkgPT09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgIHBhcmFtOiAnJywKICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQ6ICcnLAogICAgICAgICAgICAgICAgICAgICAgdHlwZTogJycsCiAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogJycKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgcGFyYW06IGl0ZW0ucGFyYW0sCiAgICAgICAgICAgICAgICAgICAgY29tbWVudDogaXRlbS5jb21tZW50LAogICAgICAgICAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSwKICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogaXRlbS5yZXF1aXJlZAogICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBmb3JtRGF0YS5yZXNwb25zZVBhcmFtcyA9IF90aGlzMy5mb3JtLnJlc3BvbnNlUGFyYW1zLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgICBpZiAoaXRlbS5wYXJhbS50cmltKCkgPT09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgIHBhcmFtOiAnJywKICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQ6ICcnLAogICAgICAgICAgICAgICAgICAgICAgdHlwZTogJycKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgcGFyYW06IGl0ZW0ucGFyYW0sCiAgICAgICAgICAgICAgICAgICAgY29tbWVudDogaXRlbS5jb21tZW50LAogICAgICAgICAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZQogICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBmb3JtRGF0YS5yZXNwb25zZVN0YXR1cyA9IF90aGlzMy5mb3JtLnJlc3BvbnNlU3RhdHVzLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgICBpZiAoaXRlbS5wYXJhbS50cmltKCkgPT09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgIHBhcmFtOiAnJywKICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQ6ICcnCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhcmFtOiBpdGVtLnBhcmFtLAogICAgICAgICAgICAgICAgICAgIGNvbW1lbnQ6IGl0ZW0uY29tbWVudAogICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy8g6L2s5o2i5Li6SlNPTuWtl+espuS4sgogICAgICAgICAgICAgICAgcmVxdWVzdERhdGEgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGZvcm1EYXRhKSwge30sIHsKICAgICAgICAgICAgICAgICAgcmVxdWVzdFBhcmFtczogSlNPTi5zdHJpbmdpZnkoZm9ybURhdGEucmVxdWVzdFBhcmFtcyksCiAgICAgICAgICAgICAgICAgIHJlcXVlc3RIZWFkZXI6IEpTT04uc3RyaW5naWZ5KGZvcm1EYXRhLnJlcXVlc3RIZWFkZXIpLAogICAgICAgICAgICAgICAgICByZXNwb25zZVBhcmFtczogSlNPTi5zdHJpbmdpZnkoZm9ybURhdGEucmVzcG9uc2VQYXJhbXMpLAogICAgICAgICAgICAgICAgICByZXNwb25zZVN0YXR1czogSlNPTi5zdHJpbmdpZnkoZm9ybURhdGEucmVzcG9uc2VTdGF0dXMpCiAgICAgICAgICAgICAgICB9KTsgLy8g6LCD55So5o6l5Y+jCiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTY7CiAgICAgICAgICAgICAgICByZXR1cm4gQVBJLmRlbEFjdGlvbnMocmVxdWVzdERhdGEsIGZhbHNlKTsKICAgICAgICAgICAgICBjYXNlIDE2OgogICAgICAgICAgICAgICAgX3RoaXMzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+aOpeWPo+e8lui+keaIkOWKn++8gScpOwogICAgICAgICAgICAgICAgX3RoaXMzLiRlbWl0KCdjb25maXJtJyk7CgogICAgICAgICAgICAgICAgLy8g5oiQ5Yqf5ZCO5YWz6Zet5by55bGCCiAgICAgICAgICAgICAgICBfdGhpczMudmlzaWJsZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDI1OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSAyMToKICAgICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAyMTsKICAgICAgICAgICAgICAgIF9jb250ZXh0LnQwID0gX2NvbnRleHRbImNhdGNoIl0oNSk7CiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfmj5DkuqTlpLHotKU6JywgX2NvbnRleHQudDApOwogICAgICAgICAgICAgICAgX3RoaXMzLiRtZXNzYWdlLmVycm9yKCfmjqXlj6PmlrDlop7lpLHotKXvvIzor7fph43or5UnKTsKICAgICAgICAgICAgICBjYXNlIDI1OgogICAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDI1OwogICAgICAgICAgICAgICAgLy8g5peg6K665oiQ5Yqf5aSx6LSl77yM5oGi5aSN5oyJ6ZKu54q25oCBCiAgICAgICAgICAgICAgICBfdGhpczMuaXNTdWJtaXR0aW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICBfdGhpczMubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmZpbmlzaCgyNSk7CiAgICAgICAgICAgICAgY2FzZSAyOToKICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwgX2NhbGxlZSwgbnVsbCwgW1s1LCAyMSwgMjUsIDI5XV0pOwogICAgICAgIH0pKTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94KSB7CiAgICAgICAgICByZXR1cm4gX3JlZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICAgIH0oKSk7CiAgICB9CiAgfQp9Ow=="},null]}