{"remainingRequest":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\bzzgj-fvue\\src\\views\\Device\\deviceManage\\VideoFacilities.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\src\\views\\Device\\deviceManage\\VideoFacilities.vue","mtime":1731062408753},{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgeyBtYXBTdGF0ZSB9IGZyb20gJ3Z1ZXgnDQppbXBvcnQgZGljdFV0aWxzIGZyb20gJ0AvY29tcG9uZW50cy9kaWN0L0RpY3RTZWxlY3RVdGlscy5qcycNCmltcG9ydCBlcXVpcG1lbnRNYW5hZ2UgZnJvbSAnQC9hcGkvZGV2aWNlL2VxdWlwbWVudE1hbmFnZS5qcycNCmltcG9ydCBWaWRlb0ZhY2lsaXRpZXMgZnJvbSAnQC9hcGkvZGV2aWNlL1ZpZGVvRmFjaWxpdGllcy5qcycNCmltcG9ydCB7IGRyYWdDb250cm9sbGVyRGl2IH0gZnJvbSAnQC9taXhpbnMvZHJhZ0NvbnRyb2xsZXJEaXYnDQppbXBvcnQgdmlkZW9Nb25pdG9yIGZyb20gJ0AvYXBpL3ZpZGVvTW9uaXRvcmFwaS5qcycNCmltcG9ydCByZXEgZnJvbSAnQC9yZXF1ZXN0LmpzJw0KaW1wb3J0IHsgVGFibGVNaXhpbiB9IGZyb20gJ0AvbWl4aW5zL3RhYmxlTWl4aW4nDQppbXBvcnQgdmlkZW9Gb3JtRGlhbG9nIGZyb20gJ0Avdmlld3MvRGV2aWNlL2RldmljZU1hbmFnZS9jb21wb25lbnRzL3ZpZGVvRm9ybURpYWxvZycNCg0KZXhwb3J0IGRlZmF1bHQgew0KICAgIG5hbWU6ICdWaWRlb0ZhY2lsaXRpZXMnLA0KICAgIGNvbXBvbmVudHM6IHsNCiAgICAgICAgdmlkZW9Gb3JtRGlhbG9nLA0KICAgIH0sDQogICAgbWl4aW5zOiBbVGFibGVNaXhpbl0sDQogICAgZGF0YSgpIHsNCiAgICAgICAgcmV0dXJuIHsNCiAgICAgICAgICAgIC8v5pC65bim5Y+C5pWwDQogICAgICAgICAgICB1cGxvYWREYXRhOiB7DQogICAgICAgICAgICAgICAgem9uZUNvZGU6ICcnLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHJldmlzZURhdDogJycsDQogICAgICAgICAgICByZXZpc2VWaXNpYmxlOiBmYWxzZSwNCiAgICAgICAgICAgIHJldmlzZVN0YXJ0OiAnJywNCiAgICAgICAgICAgIGNhdGFsb2dzOiBbXSwgLy/op4bpopHnm67lvZUNCiAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLA0KICAgICAgICAgICAgZnVsbElkOiAnJywgLy/nm67lvZXmoJHnvJbnoIENCiAgICAgICAgICAgIGNhdGFsb2dDb2RlOiAnJywgLy/nm67lvZXnvJbnoIENCiAgICAgICAgICAgIGNhdGFsb2dQbGF0Zm9ybTogJycsDQogICAgICAgICAgICBtdWx0aXBsZVNlbGVjdGlvbjogW10sIC8vIOWkjemAieahhg0KICAgICAgICAgICAgcGFyYW1zOiB7DQogICAgICAgICAgICAgICAgbmFtZTogJycsDQogICAgICAgICAgICAgICAgaW1wb3J0YW50OiAnJywNCiAgICAgICAgICAgICAgICBzdGF0dXM6ICcnLA0KICAgICAgICAgICAgICAgIHpvbmVDb2RlOiAnJywNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBxdWVyeXM6IFsNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGdyb3VwOiAnbWFpbicsDQogICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogJ0xJS0UnLA0KICAgICAgICAgICAgICAgICAgICBwYXJlbnRHcm91cDogJycsDQogICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiAnci5uYW1lXycsDQogICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uOiAnQU5EJywNCiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLA0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgLy8gew0KICAgICAgICAgICAgICAgIC8vICAgZ3JvdXA6ICdtYWluJywNCiAgICAgICAgICAgICAgICAvLyAgIG9wZXJhdGlvbjogJ1JJR0hUX0xJS0UnLA0KICAgICAgICAgICAgICAgIC8vICAgcGFyZW50R3JvdXA6ICcnLA0KICAgICAgICAgICAgICAgIC8vICAgcHJvcGVydHk6ICd6LmZ1bGxfaWRfJywNCiAgICAgICAgICAgICAgICAvLyAgIHJlbGF0aW9uOiAnQU5EJywNCiAgICAgICAgICAgICAgICAvLyAgIHZhbHVlOiAnJw0KICAgICAgICAgICAgICAgIC8vIH0sDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBncm91cDogJ21haW4nLA0KICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb246ICdFUVVBTCcsDQogICAgICAgICAgICAgICAgICAgIHBhcmVudEdyb3VwOiAnJywNCiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6ICdyLmNhdGFsb2dfY29kZV8nLA0KICAgICAgICAgICAgICAgICAgICByZWxhdGlvbjogJ0FORCcsDQogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJywNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZ3JvdXA6ICdtYWluJywNCiAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uOiAnRVFVQUwnLA0KICAgICAgICAgICAgICAgICAgICBwYXJlbnRHcm91cDogJycsDQogICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiAnZS5pbXBvcnRhbnRfJywNCiAgICAgICAgICAgICAgICAgICAgcmVsYXRpb246ICdBTkQnLA0KICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJycsDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICByZWdpb25JbmRleENvZGU6ICcnLA0KICAgICAgICAgICAgdG90YWw6IDAsDQogICAgICAgICAgICB0YWJsZURhdGE6IFtdLA0KICAgICAgICAgICAgdmlkZW9UcmVlOiBbXSwNCiAgICAgICAgICAgIGRlZmF1bHRQcm9wczogew0KICAgICAgICAgICAgICAgIHZhbHVlOiAnY29kZScsDQogICAgICAgICAgICAgICAgbGFiZWw6ICduYW1lJywNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBkYXRhOiBbXSwNCiAgICAgICAgICAgIGZpbHRlclRleHQ6ICcnLA0KICAgICAgICAgICAgc2hvdzogZmFsc2UsDQogICAgICAgICAgICBydWxlczogew0KICAgICAgICAgICAgICAgIG5hbWU6IFsNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsDQogICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAn6K+36L6T5YWl5Yy65Z+f5ZCN56ewJywNCiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXI6ICdjaGFuZ2UnLA0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIF0sDQogICAgICAgICAgICAgICAgY29kZTogWw0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICfor7fovpPlhaXljLrln5/nvJbnoIEnLA0KICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcjogJ2NoYW5nZScsDQogICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICB0aXRsZXM6ICcnLA0KICAgICAgICAgICAgYXJlYTogew0KICAgICAgICAgICAgICAgIGNvZGU6ICcnLA0KICAgICAgICAgICAgICAgIG5hbWU6ICcnLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHBBcmVhOiBudWxsLA0KICAgICAgICAgICAgYWN0aXZlQ29sbGFwc2VEaWE6ICcxJywNCiAgICAgICAgICAgIHNob3dUcmVlTm9kZTogZmFsc2UsDQogICAgICAgICAgICB1cmw6IHsNCiAgICAgICAgICAgICAgICBkZWxldGU6ICcvYml6L2NhdGFsb2cvYmFzZS9wb2ludC8nLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHNienRMaXN0OiBbXSwNCg0KICAgICAgICAgICAgdHJlZUtleTogJycsDQogICAgICAgICAgICBvcHRpb25zOiBbXSwNCiAgICAgICAgICAgIHNwZHd6dExpc3Q6IFtdLA0KICAgICAgICAgICAgc3Bkd3NzcHRMaXN0OiBbXSwNCiAgICAgICAgICAgIGFjdGlvblVybDogd2luZG93LmNvbnRleHQucG9ydGFsLA0KICAgICAgICB9DQogICAgfSwNCg0KICAgIHdhdGNoOiB7DQogICAgICAgIGZpbHRlclRleHQodmFsKSB7DQogICAgICAgICAgICB0aGlzLiRyZWZzLnRyZWUuZmlsdGVyKHZhbCkNCiAgICAgICAgfSwNCiAgICB9LA0KICAgIG1vdW50ZWQoKSB7DQogICAgICAgIGRyYWdDb250cm9sbGVyRGl2KCkNCiAgICB9LA0KICAgIC8v6I635Y+WdG9rZW4NCiAgICBjb21wdXRlZDogew0KICAgICAgICAuLi5tYXBTdGF0ZSh7DQogICAgICAgICAgICBoZWFkZXI6IChzdGF0ZSkgPT4gew0KICAgICAgICAgICAgICAgIHJldHVybiB7DQogICAgICAgICAgICAgICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtzdGF0ZS5sb2dpbi5jdXJyZW50VXNlci50b2tlbn1gLA0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0sDQogICAgICAgIH0pLA0KICAgICAgICAvLyBhY3Rpb25Vcmw6IHdpbmRvdy5jb250ZXh0LnBvcnRhbA0KICAgIH0sDQogICAgY3JlYXRlZCgpIHsNCiAgICAgICAgLy/lnKhjcmVhdGVk6YeM6Z2i5Yy66I635Y+WYWN0aW9uVXJsDQogICAgICAgIHRoaXMuc2J6dExpc3QgPSBkaWN0VXRpbHMuZ2V0RGljdEl0ZW1zRnJvbUNhY2hlKCdzYnp0JykNCiAgICAgICAgdGhpcy5zcGR3enRMaXN0ID0gZGljdFV0aWxzLmdldERpY3RJdGVtc0Zyb21DYWNoZSgnc3Bkd3p0JykNCiAgICAgICAgdGhpcy5zcGR3c3NwdExpc3QgPSBkaWN0VXRpbHMuZ2V0RGljdEl0ZW1zRnJvbUNhY2hlKCdzcGR3c3NwdCcpDQoNCiAgICAgICAgdGhpcy5nZXRCdXNpbmVzc1RyZWVuKCkNCiAgICB9LA0KDQogICAgbWV0aG9kczogew0KICAgICAgICBjaGFuZ2VWZWRlb0YodmFsKSB7DQogICAgICAgICAgICBpZiAodmFsKSB7DQogICAgICAgICAgICAgICAgdGhpcy50cmVlS2V5ID0gdmFsDQogICAgICAgICAgICAgICAgdGhpcy5jYXRhbG9nQ29kZSA9IHZhbA0KICAgICAgICAgICAgICAgIHRoaXMucXVlcnkgPSB7DQogICAgICAgICAgICAgICAgICAgIHpvbmVDb2RlOiB0aGlzLnRyZWVLZXksDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHRoaXMuZ2V0VHJlZSgpDQogICAgICAgICAgICAgICAgLy8gdGhpcy5xdWVyeSA9IHsNCiAgICAgICAgICAgICAgICAvLyAJem9uZUNvZGU6IHZhbCwNCiAgICAgICAgICAgICAgICAvLyB9DQogICAgICAgICAgICAgICAgLy8gdmlkZW9Nb25pdG9yLmdldFZpZGVvVHJlZVNpdGUodGhpcy5xdWVyeSwgKHJlcykgPT4gew0KICAgICAgICAgICAgICAgIC8vIAl0aGlzLmRhdGEgPSByZXMudmFsdWUNCiAgICAgICAgICAgICAgICAvLyB9KQ0KICAgICAgICAgICAgICAgIC8vIGxldCBvYmogPSB0aGlzLm9wdGlvbnMuZmluZCgoaXRlbSkgPT4gaXRlbS5jb2RlID09IHZhbCkNCiAgICAgICAgICAgICAgICAvLyBpZiAob2JqICYmIG9iai5wbGF0Zm9ybSkgew0KICAgICAgICAgICAgICAgIC8vIAl0aGlzLnBsYXRmb3JtID0gb2JqLnBsYXRmb3JtDQogICAgICAgICAgICAgICAgLy8gfQ0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSBbXQ0KICAgICAgICAgICAgICAgIHRoaXMuJHNldCh0aGlzLmRhdGEsIHRoaXMuZGF0YSwgcmVzLnZhbHVlKQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICBnZXRCdXNpbmVzc1RyZWVuKCkgew0KICAgICAgICAgICAgdmlkZW9Nb25pdG9yLmdldFZpZGVvRih7fSwgKHJlcykgPT4gew0KICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHJlcy52YWx1ZQ0KICAgICAgICAgICAgICAgIHRoaXMudHJlZUtleSA9IHRoaXMub3B0aW9uc1swXS5jb2RlDQogICAgICAgICAgICAgICAgdGhpcy5jYXRhbG9nQ29kZSA9IHRoaXMub3B0aW9uc1swXS5jb2RlDQogICAgICAgICAgICAgICAgdGhpcy5xdWVyeSA9IHsNCiAgICAgICAgICAgICAgICAgICAgem9uZUNvZGU6IHRoaXMudHJlZUtleSwNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgdGhpcy5nZXRUcmVlKCkNCiAgICAgICAgICAgICAgICAvLyB2aWRlb01vbml0b3IuZ2V0VmlkZW9UcmVlU2l0ZSh0aGlzLnF1ZXJ5LCAocmVzKSA9PiB7DQogICAgICAgICAgICAgICAgLy8gCXRoaXMuZGF0YSA9IHJlcy52YWx1ZQ0KICAgICAgICAgICAgICAgIC8vIAl0aGlzLnF1ZXJ5UGFyYW0ucGFyYW1zLnRyZWVLZXkgPSB0aGlzLmRhdGFbMF0uY29kZQ0KICAgICAgICAgICAgICAgIC8vIH0pDQogICAgICAgICAgICAgICAgLy8gdmlkZW9Nb25pdG9yLmdldFZpZGVvVHJlZSh0aGlzLnF1ZXJ5LCAocmVzKSA9PiB7DQogICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuZGF0YSA9IHJlcy52YWx1ZQ0KICAgICAgICAgICAgICAgIC8vICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnZpZGVvVHJlZSw2NjYpDQogICAgICAgICAgICAgICAgLy8gICAgIHRoaXMucXVlcnlQYXJhbS5wYXJhbXMudHJlZUtleSA9IHRoaXMuZGF0YVswXS5jb2RlDQogICAgICAgICAgICAgICAgLy8gfSkNCiAgICAgICAgICAgIH0pDQogICAgICAgIH0sDQogICAgICAgIGhhbmRsZURiQ2xpY2sodmFsKSB7DQogICAgICAgICAgICBjb25zb2xlLmxvZyh2YWwpDQogICAgICAgICAgICB0aGlzLiRyZWZzLmZvcm1Nb2RhbC5lZGl0QmFzaWModmFsKQ0KICAgICAgICB9LA0KICAgICAgICAvL+S4iuS8oOaIkOWKnw0KICAgICAgICBoYW5kbGVBdmF0YXJTdWNjZXNzKHJlcywgZmlsZSkgew0KICAgICAgICAgICAgLy/mj5DnpLoNCiAgICAgICAgICAgIHRoaXMuJG5vdGlmeSh7DQogICAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLA0KICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMuJHQoJ2RvbWVzdGljLnN1Y2Nlc3MnKSwNCiAgICAgICAgICAgICAgICBkdXJhdGlvbjogMjAwMCwNCiAgICAgICAgICAgIH0pDQogICAgICAgICAgICB0aGlzLmxvYWREYXRhKCkgLy/osIPnlKjnlKjpobXpnaLmn6Xor6LmjqXlj6PvvIzliLfmlrDmlbDmja4NCiAgICAgICAgfSwNCiAgICAgICAgLy/kuIrkvKDlpLHotKUNCiAgICAgICAgaGFuZGxlQXZhdGFyRXJyb3IoZXJyLCBmaWxlLCBmaWxlTGlzdCkgew0KICAgICAgICAgICAgbGV0IGRhdGEgPSBKU09OLnBhcnNlKGVyci5tZXNzYWdlKQ0KICAgICAgICAgICAgbGV0IG1zZyA9IGRhdGEubWVzc2FnZSA/IGRhdGEubWVzc2FnZSA6ICflr7zlhaXlpLHotKXvvIEnDQogICAgICAgICAgICAvL+aPkOekug0KICAgICAgICAgICAgdGhpcy4kbm90aWZ5KHsNCiAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLA0KICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMuJHQobXNnKSwNCiAgICAgICAgICAgICAgICBkdXJhdGlvbjogMjAwMCwNCiAgICAgICAgICAgIH0pDQogICAgICAgIH0sDQoNCiAgICAgICAgLy/mlbDmja7lr7zlhaUNCiAgICAgICAgaW1wb3J0RGF0YSgpIHsgfSwNCiAgICAgICAgLy/mlbDmja7lr7zlh7oNCiAgICAgICAgZXhwb3J0RGF0YSgpIHsNCiAgICAgICAgICAgIGxldCBleHBvcnRQYXJhbSA9IHsNCiAgICAgICAgICAgICAgICAuLi50aGlzLnF1ZXJ5UGFyYW0sDQogICAgICAgICAgICB9DQogICAgICAgICAgICBleHBvcnRQYXJhbS5wYWdlQmVhbiA9IHsNCiAgICAgICAgICAgICAgICBwYWdlOiAxLA0KICAgICAgICAgICAgICAgIHBhZ2VTaXplOiAtMSwNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGNvbnNvbGUubG9nKGV4cG9ydFBhcmFtKQ0KICAgICAgICAgICAgZXF1aXBtZW50TWFuYWdlLmV4cG9ydFBvaW50QmFzZShleHBvcnRQYXJhbSwgKHJlcykgPT4geyB9KQ0KICAgICAgICAgICAgLy8gICB0aGlzLmxvYWREYXRhKCkNCiAgICAgICAgfSwNCiAgICAgICAgLy8NCiAgICAgICAgaGFuZGxlQ2xvc2UoKSB7DQogICAgICAgICAgICB0aGlzLnJldmlzZVZpc2libGUgPSBmYWxzZQ0KICAgICAgICB9LA0KICAgICAgICAvLw0KICAgICAgICByZXZpc2UodmFsKSB7DQogICAgICAgICAgICB0aGlzLnJldmlzZVZpc2libGUgPSB0cnVlDQogICAgICAgICAgICB0aGlzLnJldmlzZVN0YXJ0ID0gdmFsLnN0YXR1cyArICcnDQogICAgICAgICAgICB0aGlzLnJldmlzZURhdCA9IHZhbA0KICAgICAgICB9LA0KICAgICAgICByZXZpc2VCdG4oKSB7DQogICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnJldmlzZURhdCkNCiAgICAgICAgICAgIGVxdWlwbWVudE1hbmFnZS51cGRhdGVTdGF0dXMoDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZDogdGhpcy5yZXZpc2VEYXQuaWQsDQogICAgICAgICAgICAgICAgICAgIHByb2R1Y3RDb2RlOiAndmlkZW8nLA0KICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHRoaXMucmV2aXNlU3RhcnQsDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAocmVzKSA9PiB7DQogICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZERhdGEoKQ0KICAgICAgICAgICAgICAgICAgICB0aGlzLnJldmlzZVZpc2libGUgPSBmYWxzZQ0KICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChyZXMuc3RhdGUpIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgICAgICAgICAgICAvLyAgICAgICBtZXNzYWdlOiByZXMubWVzc2FnZSwNCiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgdHlwZTogJ3N1Y2Nlc3MnDQogICAgICAgICAgICAgICAgICAgIC8vICAgICB9KQ0KICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5sb2FkRGF0YSgpDQogICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLnJldmlzZVZpc2libGUgPSBmYWxzZQ0KICAgICAgICAgICAgICAgICAgICAvLyAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICApDQogICAgICAgIH0sDQogICAgICAgIGVxdWlwbWVudCh2YWwpIHsNCiAgICAgICAgICAgIGNvbnNvbGUubG9nKHZhbCkNCiAgICAgICAgICAgIGxldCBpbXBvcnRhbnREYXRhID0gMA0KICAgICAgICAgICAgaWYgKHZhbC5pbXBvcnRhbnQgPT0gMSAmJiB2YWwuaW1wb3J0YW50KSB7DQogICAgICAgICAgICAgICAgaW1wb3J0YW50RGF0YSA9IDANCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgaW1wb3J0YW50RGF0YSA9IDENCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVxdWlwbWVudE1hbmFnZS51cGRhdGVJbXBvcnRhbnRQb2ludCgNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlkOiB2YWwuaWQsDQogICAgICAgICAgICAgICAgICAgIGltcG9ydGFudDogaW1wb3J0YW50RGF0YSwNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIChyZXMpID0+IHsNCiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2cocmVzKQ0KICAgICAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXRlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXMubWVzc2FnZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsDQogICAgICAgICAgICAgICAgICAgICAgICB9KQ0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkRGF0YSgpDQogICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLnJldmlzZVZpc2libGUgPSBmYWxzZQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgKQ0KICAgICAgICB9LA0KICAgICAgICBoYW5kbGVEZWxldGVTaXRlKHJvdykgew0KICAgICAgICAgICAgVmlkZW9GYWNpbGl0aWVzLmRlbGV0ZVZpZGVvU2l0ZShyb3cuaWQsIChyZXMpID0+IHsNCiAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXRlKSB7DQogICAgICAgICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcygn5Yig6Zmk5oiQ5YqfJykNCiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkRGF0YSgpDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgfSwNCiAgICAgICAgc2VsZWN0YWJsZShyb3cpIHsNCiAgICAgICAgICAgIGlmIChyb3cuZGF0YVR5cGUgPT0gMikgew0KICAgICAgICAgICAgICAgIHJldHVybiB0cnVlDQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICBoYW5kbGVBZGQoKSB7DQogICAgICAgICAgICBpZiAoIXRoaXMucmVnaW9uSW5kZXhDb2RlKSB7DQogICAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCfor7fpgInmi6nmlrDlop7op4bpopHngrnkvY3miYDlsZ7ljLrln5/vvIEnKQ0KICAgICAgICAgICAgICAgIHJldHVybg0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBsZXQgcERhdGEgPSB7DQogICAgICAgICAgICAgICAgICAgIGNhdGFsb2dDb2RlOiB0aGlzLmNhdGFsb2dDb2RlLA0KICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybTogdGhpcy5jYXRhbG9nUGxhdGZvcm0sDQogICAgICAgICAgICAgICAgICAgIHpvbmVDb2RlOiB0aGlzLnJlZ2lvbkluZGV4Q29kZSwNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgdGhpcy4kcmVmcy5mb3JtTW9kYWwuYWRkKHBEYXRhKQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICByZWxvYWQoKSB7IH0sDQogICAgICAgIGhhbmRsZUNsb3NlRGlhKCkgew0KICAgICAgICAgICAgdGhpcy5zaG93VHJlZU5vZGUgPSBmYWxzZQ0KICAgICAgICAgICAgdGhpcy5hcmVhID0gew0KICAgICAgICAgICAgICAgIGNvZGU6ICcnLA0KICAgICAgICAgICAgICAgIG5hbWU6ICcnLA0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdGhpcy5wQXJlYSA9IG51bGwNCiAgICAgICAgfSwNCiAgICAgICAgaGFuZGxlU2F2ZURpYSgpIHsNCiAgICAgICAgICAgIHRoaXMuJHJlZnMuZm9ybUluZm8udmFsaWRhdGUoKHZhbGlkKSA9PiB7DQogICAgICAgICAgICAgICAgaWYgKHZhbGlkKSB7DQogICAgICAgICAgICAgICAgICAgIGxldCBBUEkgPSBWaWRlb0ZhY2lsaXRpZXMudXBkYXRlVmlkZW9BcmVhDQogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRpdGxlcyA9PSAn5paw5aKeJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcmVhLmJhc2VDb2RlID0gdGhpcy5wQXJlYS5iYXNlQ29kZQ0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcmVhLnBhcmVudElkID0gdGhpcy5wQXJlYS5pZA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcmVhLnBsYXRmb3JtID0gdGhpcy5wQXJlYS5wbGF0Zm9ybQ0KICAgICAgICAgICAgICAgICAgICAgICAgQVBJID0gVmlkZW9GYWNpbGl0aWVzLmFkZFZpZGVvQXJlYQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuYXJlYSkNCiAgICAgICAgICAgICAgICAgICAgQVBJKHRoaXMuYXJlYSwgKHJlcykgPT4gew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0ZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJG5vdGlmeSh7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50aXRsZXMgKyAn6KeG6aKR5Yy65Z+f5oiQ5Yqf77yBJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDIwMDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFRyZWUoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2xvc2VEaWEoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRub3RpZnkoew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXMubWVzc2FnZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDIwMDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogODAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KQ0KICAgICAgICB9LA0KICAgICAgICBhcHBlbmQoZGF0YSwgdHlwZSkgew0KICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YSwgdHlwZSwgJ2RhdGEsIHR5cGUnKQ0KICAgICAgICAgICAgdGhpcy5hY3RpdmVDb2xsYXBzZURpYSA9ICcxJw0KICAgICAgICAgICAgdGhpcy50aXRsZXMgPSAn5paw5aKeJw0KICAgICAgICAgICAgdGhpcy5zaG93VHJlZU5vZGUgPSB0cnVlDQogICAgICAgICAgICB0aGlzLnBBcmVhID0gZGF0YQ0KICAgICAgICB9LA0KICAgICAgICB1cERhdGVpbmZvKGRhdGEsIHR5cGUpIHsNCiAgICAgICAgICAgIHRoaXMudGl0bGVzID0gJ+S/ruaUuScNCiAgICAgICAgICAgIHRoaXMuYXJlYSA9IGRhdGENCiAgICAgICAgICAgIHRoaXMuc2hvd1RyZWVOb2RlID0gdHJ1ZQ0KICAgICAgICB9LA0KICAgICAgICAvLyDliKDpmaTop4bpopHnm67lvZUNCiAgICAgICAgcmVtb3ZlKGRhdGEpIHsNCiAgICAgICAgICAgIHRoaXMuJGNvbmZpcm0oJ+ehruWumuWIoOmZpOmAieS4reaVsOaNru+8nycsICfmj5DnpLonLCB7DQogICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa4g5a6aJywNCiAgICAgICAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+WIOa2iCcsDQogICAgICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgICAgICAgfSkNCiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7DQogICAgICAgICAgICAgICAgICAgIFZpZGVvRmFjaWxpdGllcy5kZWxldGVWaWRlb0FyZWEoZGF0YS5pZCwgKHJlcykgPT4gew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0ZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJG5vdGlmeSh7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ+WIoOmZpOaIkOWKnycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAyMDAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRUcmVlKCkNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kbm90aWZ5KHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Vycm9yJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzLm1lc3NhZ2UsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAyMDAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDgwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pDQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0pDQogICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgICAgICAuY2F0Y2goKCkgPT4geyB9KQ0KICAgICAgICB9LA0KICAgICAgICByZW5kZXJDb250ZW50KGgsIHsgbm9kZSwgZGF0YSwgc3RvcmUgfSkgew0KICAgICAgICAgICAgcmV0dXJuICgNCiAgICAgICAgICAgICAgICA8c3Bhbg0KICAgICAgICAgICAgICAgICAgICBjbGFzcz0iY3VzdG9tLXRyZWUtbm9kZSINCiAgICAgICAgICAgICAgICAgICAgb24tbW91c2VvdmVyPXsoKSA9PiB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3cgPSB0cnVlDQogICAgICAgICAgICAgICAgICAgIH19DQogICAgICAgICAgICAgICAgICAgIG9uLW1vdXNlb3V0PXsoKSA9PiB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3cgPSBmYWxzZQ0KICAgICAgICAgICAgICAgICAgICB9fQ0KICAgICAgICAgICAgICAgID4NCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImN1c3RvbS10cmVlLW5vZGVuYW1lIiB0aXRsZT17YCR7ZGF0YS5uYW1lfWB9Pg0KICAgICAgICAgICAgICAgICAgICAgICAge2RhdGEubmFtZX0NCiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8c3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxlbC1wb3BvdmVyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PSJib3R0b20iDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjU1Ig0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXI9ImhvdmVyIg0KICAgICAgICAgICAgICAgICAgICAgICAgPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbC1idXR0b24NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IndpZHRoOjEwMCU7Ym9yZGVyOjA7bWFyZ2luOjA7Y29sb3I6IzYwNjI2NjsiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9Im1pbmkiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InRleHQiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249ImVsLWljb24tcGx1cyINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24tY2xpY2s9eygpID0+IHRoaXMuYXBwZW5kKGRhdGEsICdzb24nKX0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOaWsOWing0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZWwtYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbC1idXR0b24NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1zaG93PXtkYXRhLmlkICE9PSAnMCcgJiYgZGF0YS5kYXRhVHlwZSA9PSAyfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0id2lkdGg6MTAwJTtib3JkZXI6MDttYXJnaW46MDtjb2xvcjojNjA2MjY2OyINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT0ibWluaSINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0idGV4dCINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj0iZWwtaWNvbi1lZGl0Ig0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbi1jbGljaz17KCkgPT4gdGhpcy51cERhdGVpbmZvKGRhdGEsICcnKX0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOS/ruaUuQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZWwtYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbC1idXR0b24NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1zaG93PXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuaWQgIT09ICcwJyAmJg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5kYXRhVHlwZSA9PSAyICYmDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmhhc0NoaWxkcmVuID09IDANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0id2lkdGg6MTAwJTtib3JkZXI6MDttYXJnaW46MDtjb2xvcjojNjA2MjY2OyINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT0ibWluaSINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj0iZWwtaWNvbi1kZWxldGUiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InRleHQiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uLWNsaWNrPXsoKSA9PiB0aGlzLnJlbW92ZShkYXRhKX0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOWIoOmZpA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZWwtYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3Q9InJlZmVyZW5jZSINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImVsLWljb24tbW9yZS1vdXRsaW5lIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxNXB4OyINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9lbC1wb3BvdmVyPg0KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+DQogICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgKQ0KICAgICAgICB9LA0KICAgICAgICAvLyDojrflj5bnm67lvZUNCiAgICAgICAgZ2V0VHJlZURpY3QoKSB7DQogICAgICAgICAgICBWaWRlb0ZhY2lsaXRpZXMuZ2V0VmlkZW9GKHt9LCAocmVzKSA9PiB7DQogICAgICAgICAgICAgICAgdGhpcy5jYXRhbG9ncyA9IHJlcy52YWx1ZQ0KICAgICAgICAgICAgICAgIHRoaXMuY2F0YWxvZ0NvZGUgPSB0aGlzLmNhdGFsb2dzWzBdLmNvZGUNCiAgICAgICAgICAgICAgICB0aGlzLmNhdGFsb2dQbGF0Zm9ybSA9IHRoaXMuY2F0YWxvZ3NbMF0ucGxhdGZvcm0NCiAgICAgICAgICAgICAgICB0aGlzLmdldFRyZWUoKQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgfSwNCiAgICAgICAgLy8g6I635Y+W55uu5b2V5qCRDQogICAgICAgIGdldFRyZWUoKSB7DQogICAgICAgICAgICBsZXQgcXVlcnkgPSB7DQogICAgICAgICAgICAgICAgem9uZUNvZGU6IHRoaXMuY2F0YWxvZ0NvZGUsDQogICAgICAgICAgICB9DQogICAgICAgICAgICBWaWRlb0ZhY2lsaXRpZXMuZ2V0VmlkZW9UcmVlKHF1ZXJ5LCAocmVzKSA9PiB7DQogICAgICAgICAgICAgICAgdGhpcy52aWRlb1RyZWUgPSByZXMudmFsdWUNCiAgICAgICAgICAgICAgICB0aGlzLmZ1bGxJZCA9IHRoaXMudmlkZW9UcmVlLmxlbmd0aA0KICAgICAgICAgICAgICAgICAgICA/IHRoaXMudmlkZW9UcmVlWzBdLmZ1bGxJZA0KICAgICAgICAgICAgICAgICAgICA6ICcnDQogICAgICAgICAgICAgICAgaWYgKHRoaXMudmlkZW9UcmVlLmxlbmd0aCkgew0KICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWREYXRhKCkNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZGVvVHJlZSA9IFtdDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgfSwNCiAgICAgICAgLy8g5YiH5o2i55uu5b2VDQogICAgICAgIGNoYW5nZUNhdGFsb2codmFsKSB7DQogICAgICAgICAgICB0aGlzLiRyZWZzLm11bHRpcGxlU2VsZWN0aW9uLmNsZWFyU2VsZWN0aW9uKCkgLy/liIfmjaLvvIzpgInkuK3lsLHlvZLpm7YNCiAgICAgICAgICAgIGlmICh2YWwpIHsNCiAgICAgICAgICAgICAgICB0aGlzLmNhdGFsb2dDb2RlID0gdmFsDQogICAgICAgICAgICAgICAgdGhpcy5jYXRhbG9nUGxhdGZvcm0gPSB2YWwNCiAgICAgICAgICAgICAgICBsZXQgcGxhdGZvcm0gPSB0aGlzLmNhdGFsb2dzLmZpbHRlcigNCiAgICAgICAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0uY29kZSA9PSB2YWwNCiAgICAgICAgICAgICAgICApWzBdLnBsYXRmb3JtDQogICAgICAgICAgICAgICAgdGhpcy5jYXRhbG9nUGxhdGZvcm0gPSBwbGF0Zm9ybQ0KICAgICAgICAgICAgICAgIHRoaXMuZ2V0VHJlZSgpDQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHRoaXMuY2F0YWxvZ0NvZGUgPSAnJw0KICAgICAgICAgICAgICAgIHRoaXMuY2F0YWxvZ1BsYXRmb3JtID0gJycNCiAgICAgICAgICAgICAgICB0aGlzLnZpZGVvVHJlZSA9IFtdDQogICAgICAgICAgICAgICAgdGhpcy4kc2V0KHRoaXMudmlkZW9UcmVlLCB0aGlzLnZpZGVvVHJlZSwgcmVzLnZhbHVlKQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICBoYW5kbGVVcGRhdGUodmFsKSB7DQogICAgICAgICAgICBWaWRlb0ZhY2lsaXRpZXMuZ2V0RGV0YWlscyh2YWwuY29kZSwgKHJlcykgPT4gew0KICAgICAgICAgICAgICAgIGlmIChyZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgbGV0IHBhdGggPSB0aGlzLiRyb3V0ZS5wYXRoDQogICAgICAgICAgICAgICAgICAgIGlmIChwYXRoLmluZGV4T2YoJ2Zyb250UGxhdCcpICE9PSAtMSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kcm91dGVyLnB1c2goew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdWaWRlb0RldGFpbHMnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiByZXMsDQogICAgICAgICAgICAgICAgICAgICAgICB9KQ0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kcm91dGVyLnB1c2goew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdWaWRlb0RldGFpbHNMaW5rJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeTogcmVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pDQogICAgICAgIH0sDQogICAgICAgIGNoYW5nZU5vZGUoZGF0YSkgew0KICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YSkNCiAgICAgICAgICAgIGlmIChkYXRhKSB7DQogICAgICAgICAgICAgICAgdGhpcy5yZWdpb25JbmRleENvZGUgPSBkYXRhLmNvZGUNCiAgICAgICAgICAgICAgICB0aGlzLmZ1bGxJZCA9IGRhdGEuZnVsbElkDQogICAgICAgICAgICAgICAgdGhpcy5wYXJhbXMuem9uZUNvZGUgPSBkYXRhLmNvZGUNCiAgICAgICAgICAgICAgICAvL+WmguaenOeCueWHu+agke+8jOmAieS4reeKtuaAgeW9kjANCiAgICAgICAgICAgICAgICB0aGlzLiRyZWZzLm11bHRpcGxlU2VsZWN0aW9uLmNsZWFyU2VsZWN0aW9uKCkNCiAgICAgICAgICAgICAgICB0aGlzLmxvYWREYXRhKCkNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAgICAgbG9hZERhdGEoKSB7DQogICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZQ0KICAgICAgICAgICAgdGhpcy50YWJsZURhdGEgPSBbXQ0KICAgICAgICAgICAgdGhpcy5xdWVyeVBhcmFtLnF1ZXJ5cyA9IFtdDQogICAgICAgICAgICAvLyAgIHRoaXMucXVlcnlzWzFdLnZhbHVlID0gdGhpcy5mdWxsSWQNCiAgICAgICAgICAgIC8vIHRoaXMucXVlcnlzWzFdLnZhbHVlID0gdGhpcy5jYXRhbG9nQ29kZQ0KICAgICAgICAgICAgdGhpcy5xdWVyeVBhcmFtLnBhcmFtcyA9IHRoaXMucGFyYW1zDQogICAgICAgICAgICAvLyB0aGlzLnVwbG9hZERhdGEuY2F0YWxvZ0NvZGUgPSB0aGlzLmNhdGFsb2dDb2RlDQogICAgICAgICAgICB0aGlzLnVwbG9hZERhdGEuem9uZUNvZGUgPSB0aGlzLnBhcmFtcy56b25lQ29kZQ0KICAgICAgICAgICAgLy8gaWYgKHRoaXMucXVlcnlzWzBdLnZhbHVlKSB7DQogICAgICAgICAgICAvLyAJdGhpcy5xdWVyeVBhcmFtLnF1ZXJ5cy5wdXNoKHRoaXMucXVlcnlzWzBdKQ0KICAgICAgICAgICAgLy8gfQ0KICAgICAgICAgICAgLy8gaWYgKHRoaXMucXVlcnlzWzFdLnZhbHVlKSB7DQogICAgICAgICAgICAvLyAJdGhpcy5xdWVyeVBhcmFtLnF1ZXJ5cy5wdXNoKHRoaXMucXVlcnlzWzFdKQ0KICAgICAgICAgICAgLy8gfQ0KICAgICAgICAgICAgLy8gaWYgKHRoaXMucXVlcnlzWzJdLnZhbHVlKSB7DQogICAgICAgICAgICAvLyAJdGhpcy5xdWVyeVBhcmFtLnF1ZXJ5cy5wdXNoKHRoaXMucXVlcnlzWzJdKQ0KICAgICAgICAgICAgLy8gfQ0KICAgICAgICAgICAgVmlkZW9GYWNpbGl0aWVzLmdldExpc3QodGhpcy5xdWVyeVBhcmFtLCAocmVzKSA9PiB7DQogICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzLCA5OTkpDQogICAgICAgICAgICAgICAgaWYgKHJlcykgew0KICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHJlcy5yb3dzDQogICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVEYXRhLmZvckVhY2goKGl0ZW0pID0+IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3Bkd3NzcHRMaXN0LmZvckVhY2goKHZhbCkgPT4gew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLnBsYXRmb3JtID09IHZhbC52YWx1ZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtWydwbGF0Zm9ybU5hbWUnXSA9IHZhbC5uYW1lDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbCA9IHJlcy50b3RhbA0KICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZQ0KICAgICAgICAgICAgICAgICAgICAvLyDlvZLnqboNCiAgICAgICAgICAgICAgICAgICAgLy8gICB0aGlzLnF1ZXJ5c1sxXS52YWx1ZSA9ICcnDQogICAgICAgICAgICAgICAgICAgIC8vICAgdGhpcy5xdWVyeXNbMl0udmFsdWUgPSAnJw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pDQogICAgICAgIH0sDQogICAgICAgIC8v5ZCM5q2l5pWw5o2uDQogICAgICAgIHN5bmNocm9UcmVlKCkgew0KICAgICAgICAgICAgVmlkZW9GYWNpbGl0aWVzLmFzeWNDYXRhTG9nKChyZXMpID0+IHsNCiAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXRlKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChyZXMuc3RhdGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcygn55uu5b2V5ZCM5q2l5oiQ5YqfJykNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VHJlZURpY3QoKQ0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcign5ZCM5q2l5aSx6LSlJykNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pDQogICAgICAgIH0sDQogICAgICAgIHN5bmNocm8obm9kZSwgZGF0YSkgew0KICAgICAgICAgICAgVmlkZW9GYWNpbGl0aWVzLmFzeWNDYXRhTG9nWm9uZSgNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHRyZWVDb2RlOiB0aGlzLmNhdGFsb2dDb2RlLA0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgKHJlcykgPT4gew0KICAgICAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXRlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+WMuuWfn+WQjOatpeaIkOWKnycpDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFRyZWVuKCkNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoJ+WQjOatpeWksei0pScpDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICApDQogICAgICAgIH0sDQogICAgICAgIG9uQ2xpY2tTeW5jaCgpIHsNCiAgICAgICAgICAgIFZpZGVvRmFjaWxpdGllcy5nZXRTeW5jaCh7fSwgKHJlcykgPT4gew0KICAgICAgICAgICAgICAgIGlmIChyZXMuc3RhdGUpIHsNCiAgICAgICAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCflkIzmraXmiJDlip8nKQ0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoJ+WQjOatpeWksei0pScpDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgfSwNCiAgICAgICAgZmlsdGVyTm9kZSh2YWx1ZSwgZGF0YSkgew0KICAgICAgICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuIHRydWUNCiAgICAgICAgICAgIHJldHVybiBkYXRhLm5hbWUuaW5kZXhPZih2YWx1ZSkgIT09IC0xDQogICAgICAgIH0sDQogICAgICAgIGhhbmRsZVNpemVDaGFuZ2UodmFsKSB7DQogICAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW0ucGFnZUJlYW4ucGFnZVNpemUgPSB2YWwNCiAgICAgICAgICAgIHRoaXMubG9hZERhdGEoKQ0KICAgICAgICB9LA0KICAgICAgICBoYW5kbGVDdXJyZW50Q2hhbmdlKHZhbCkgew0KICAgICAgICAgICAgdGhpcy5xdWVyeVBhcmFtLnBhZ2VCZWFuLnBhZ2UgPSB2YWwNCiAgICAgICAgICAgIHRoaXMubG9hZERhdGEoKQ0KICAgICAgICB9LA0KICAgICAgICAvLyBoYW5kbGVTZWxlY3Rpb25DaGFuZ2UodmFsKSB7DQogICAgICAgIC8vICAgICB0aGlzLm11bHRpcGxlU2VsZWN0aW9uID0gdmFsLm1hcCgoaXRlbSkgPT4gew0KICAgICAgICAvLyAgICAgICAgIHJldHVybiBpdGVtLmlkDQogICAgICAgIC8vICAgICB9KQ0KICAgICAgICAvLyB9LA0KICAgICAgICAvLyAvLyDmjIflrprkuIDkuKprZXnmoIfor4bov5nkuIDooYznmoTmlbDmja4NCiAgICAgICAgZ2V0Um93S2V5KHJvdykgew0KICAgICAgICAgICAgcmV0dXJuIHJvdy5pZA0KICAgICAgICB9LA0KICAgICAgICAvLyAvLyDngrnlh7vmn6Xor6INCiAgICAgICAgb25DbGlja1NlYXJjaCgpIHsNCiAgICAgICAgICAgIHRoaXMucXVlcnlQYXJhbS5wYWdlQmVhbi5wYWdlID0gMQ0KICAgICAgICAgICAgdGhpcy5sb2FkRGF0YSgpDQogICAgICAgIH0sDQogICAgfSwNCn0NCg=="},null]}