{"remainingRequest":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\bzzgj-fvue\\src\\components\\eipControl\\EipTreeselect.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\src\\components\\eipControl\\EipTreeselect.vue","mtime":1705895419251},{"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:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgdXRpbHMgZnJvbSAnQC91dGlscy5qcycNCmltcG9ydCBob3RlbnRVdGlscyBmcm9tICdAL2hvdGVudC11aS11dGlsLmpzJw0KaW1wb3J0IHN1Yl9waW9fbWl4aW4gZnJvbSAnQC9zdWItcGVybWlzc2lvbi1taXhpbi5qcycNCmltcG9ydCByZXEgZnJvbSAnQC9yZXF1ZXN0LmpzJw0KDQpleHBvcnQgZGVmYXVsdCB7DQogIG5hbWU6ICdlaXAtdHJlZXNlbGVjdCcsDQogIHByb3BzOiBbDQogICAgJ3ZhbGlkYXRlJywNCiAgICAndmFsdWUnLA0KICAgICduYW1lJywNCiAgICAncGVybWlzc2lvbicsDQogICAgJ211bHRpcGxlJywNCiAgICAnc2VsZWN0bGlzdCcsDQogICAgJ2dhbmdlZCcsDQogICAgJ2ZpbHRlcmFibGUnLA0KICAgICdhbGxvd0NyZWF0ZScsDQogICAgJ3N0eWxlcycsDQogICAgJ2N1c3RvbVF1ZXJ5Jw0KICBdLA0KICBtaXhpbnM6IFtzdWJfcGlvX21peGluXSwvL+a3t+WFpeaWueW8j+W8leWFpeihqOWNlee7hOS7tuS4reWFrOWFseWxnuaAp++8jOWkhOeQhuWtkOihqOOAgeWtmeihqOihjOWGheiBlOWKqO+8iOWIh+mdouS/ruaUuXBlcm1pc3Npb25fc3ViX3N1Yu+8iQ0KICBkYXRhKCkgew0KICAgIHJldHVybiB7DQogICAgICBjb25maWc6IHt9LA0KICAgICAgdG90YWw6IDEwLA0KICAgICAgcGFnZVNpemU6IDUsDQogICAgICBjdXJyZW50UGFnZTogMSwNCiAgICAgIG9wdGlvbnM6IFtdLA0KICAgICAgdGVtcG9wdGlvbnM6IFtdLA0KICAgICAgdmFsdWVEZXNjOiAnJywNCiAgICAgIHRhZ0Zvcm1hdFZhbHVlOiBbXSwNCiAgICAgIGRlZmF1bHRQcm9wczogew0KICAgICAgICBjaGlsZHJlbjogJ2NoaWxkcmVuJywNCiAgICAgICAgbGFiZWw6ICd2YWx1ZScNCiAgICAgIH0sDQogICAgICBuZXdWYWxpZGF0ZTogbnVsbCwNCiAgICAgIGN1clN1YkluZGV4OiBudWxsDQogICAgfQ0KICB9LA0KICB3YXRjaDogew0KICAgIHZhbHVlRGVzYzogZnVuY3Rpb24obmV3VmFsLCBvbGRWYWwpIHsNCiAgICAgIGlmIChuZXdWYWwgJiYgbmV3VmFsICE9IG9sZFZhbCkgew0KICAgICAgICB0aGlzLnRhZ0Zvcm1hdFZhbHVlID0gbmV3VmFsLnNwbGl0KCcsJykNCiAgICAgIH0NCiAgICB9DQogIH0sDQogIGNvbXB1dGVkOiB7DQogICAgaW5wdXRWYWw6IHsNCiAgICAgIGdldCgpIHsNCiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHsNCiAgICAgICAgICBpZiAodGhpcy52YWx1ZSkgew0KICAgICAgICAgICAgaWYgKHRoaXMuJHJlZnMudHJlZXNlbGVjdEVsVHJlZSkgew0KICAgICAgICAgICAgICBsZXQgY2hlY2tlZE5vZGVzID0gdGhpcy4kcmVmcy50cmVlc2VsZWN0RWxUcmVlLmdldENoZWNrZWROb2RlcygpDQogICAgICAgICAgICAgIGZvciAobGV0IGRhdGEgb2YgY2hlY2tlZE5vZGVzKSB7DQogICAgICAgICAgICAgICAgaWYgKCF0aGlzLnZhbHVlLnNwbGl0KCcsJykuaW5jbHVkZXMoZGF0YS5rZXkpKSB7DQogICAgICAgICAgICAgICAgICB0aGlzLiRyZWZzLnRyZWVzZWxlY3RFbFRyZWUuc2V0Q2hlY2tlZChkYXRhLCBmYWxzZSkNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlLnNwbGl0KCcsJykNCiAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgaWYgKHRoaXMuJHJlZnMudHJlZXNlbGVjdEVsVHJlZSkgew0KICAgICAgICAgICAgICBsZXQgY2hlY2tlZE5vZGVzID0gdGhpcy4kcmVmcy50cmVlc2VsZWN0RWxUcmVlLmdldENoZWNrZWROb2RlcygpDQogICAgICAgICAgICAgIGZvciAobGV0IGRhdGEgb2YgY2hlY2tlZE5vZGVzKSB7DQogICAgICAgICAgICAgICAgdGhpcy4kcmVmcy50cmVlc2VsZWN0RWxUcmVlLnNldENoZWNrZWQoZGF0YSwgZmFsc2UpDQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiBbXQ0KICAgICAgICAgIH0NCiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZhbHVlIHx8IHRoaXMudmFsdWUgPT09IDApIHsNCiAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSArICcnDQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUNCiAgICAgICAgfQ0KICAgICAgfSwNCiAgICAgIHNldCh2YWwpIHsNCiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHsNCiAgICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHZhbC5qb2luKCcsJykpDQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB2YWwpDQogICAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlICYmIHZhbCkgew0KICAgICAgICAgICAgLy/liKTmlq3lr7nor53moYbmmK/lkKbnu5HlrprkuoblhbPogZTmn6Xor6INCiAgICAgICAgICAgIGlmICh0aGlzLmN1c3RvbVF1ZXJ5ICYmIHRoaXMuY3VzdG9tUXVlcnkuY3VzdFF1ZXJ5SnNvbiAmJiB0aGlzLmN1c3RvbVF1ZXJ5LmN1c3RRdWVyeUpzb24ubGVuZ3RoID4gMCkgew0KICAgICAgICAgICAgICBsZXQgY3VzdFF1ZXJ5SnNvbiA9IHRoaXMuY3VzdG9tUXVlcnkuY3VzdFF1ZXJ5SnNvbg0KICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGN1c3RRdWVyeUpzb24ubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgICAgICBpZiAoY3VzdFF1ZXJ5SnNvbltpXS5jb25kaXRpb25maWVsZC5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAgICAgICB0aGlzLmRvUXVlcnkoY3VzdFF1ZXJ5SnNvbltpXSkNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignWycgKyBjdXN0UXVlcnlKc29uW2ldLmNvbW1lbnQgKyAnXeWFs+iBlOafpeivouWPluWAvOWPguaVsOacque7keWumuihqOWNleWtl+autScpDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9DQogICAgfSwNCiAgICBpbnB1dFdyaXRlYWJsZTogZnVuY3Rpb24oKSB7DQogICAgICByZXR1cm4gdXRpbHMuZ2V0V3JpdGVhYmxlKHRoaXMucGVybWlzc2lvbl9zdWIpDQogICAgfSwNCiAgICBpbnB1dFZhbGlkYXRlOiBmdW5jdGlvbigpIHsNCiAgICAgIGlmICh0aGlzLm5ld1ZhbGlkYXRlKSB7DQogICAgICAgIHJldHVybiB0aGlzLm5ld1ZhbGlkYXRlDQogICAgICB9DQogICAgICB2YXIgdmFsaWRhdGVPYmogPSB0aGlzLiRzdG9yZS5zdGF0ZS5pbmRleC52YWxpZGF0ZQ0KICAgICAgcmV0dXJuIHV0aWxzLmFkZFJlcXVpcmVkT3JOb3QoDQogICAgICAgIHRoaXMucGVybWlzc2lvbl9zdWIsDQogICAgICAgIHRoaXMudmFsaWRhdGUsDQogICAgICAgIHZhbGlkYXRlT2JqLA0KICAgICAgICB0aGlzDQogICAgICApDQogICAgfSwNCiAgICBpbnB1dE5hbWU6IGZ1bmN0aW9uKCkgew0KICAgICAgbGV0IGxhYmVsZGVzYyA9ICcnDQogICAgICBpZiAoDQogICAgICAgIHRoaXMuJHNsb3RzICYmDQogICAgICAgIHRoaXMuJHNsb3RzLmxhYmVsZGVzYyAmJg0KICAgICAgICB0aGlzLiRzbG90cy5sYWJlbGRlc2NbMF0uY2hpbGRyZW4gJiYNCiAgICAgICAgdGhpcy4kc2xvdHMubGFiZWxkZXNjWzBdLmNoaWxkcmVuWzBdLnRleHQNCiAgICAgICkgew0KICAgICAgICBsYWJlbGRlc2MgPSB0aGlzLiRzbG90cy5sYWJlbGRlc2NbMF0uY2hpbGRyZW5bMF0udGV4dA0KICAgICAgICByZXR1cm4gdGhpcy5uYW1lID8gdGhpcy5uYW1lIDogdXRpbHMuZ2V0TmFtZSgpICsgJy0nICsgbGFiZWxkZXNjDQogICAgICB9IGVsc2Ugew0KICAgICAgICByZXR1cm4gdGhpcy5uYW1lID8gdGhpcy5uYW1lIDogdXRpbHMuZ2V0TmFtZSgpDQogICAgICB9DQogICAgfQ0KICB9LA0KICBtb3VudGVkKCkgew0KICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuc2VsZWN0bGlzdCA/IHRoaXMuc2VsZWN0bGlzdCA6IFtdDQogICAgY29uc3QgX21lID0gdGhpcw0KICAgIGxldCB7c3ViU2NvcGVFbH0gPSBob3RlbnRVdGlscy5nZXRTdWJTY29wZUVsQW5kSW5kZXgoX21lLiRlbCkNCiAgICBpZiAoc3ViU2NvcGVFbCkgew0KICAgICAgdGhpcy5jdXJTdWJJbmRleCA9IHN1YlNjb3BlRWwuZGF0YXNldFsnaW5kZXgnXQ0KICAgIH0NCiAgICBjb25zdCBnYW5nZWQgPSB0aGlzLmdhbmdlZA0KICAgIC8v5Yik5pat5piv5ZCm5pyJ5Y+C5pWw57uR5a6aDQogICAgaWYgKA0KICAgICAgZ2FuZ2VkICYmDQogICAgICBnYW5nZWQuYmluZCAmJg0KICAgICAgSlNPTi5zdHJpbmdpZnkoZ2FuZ2VkLmJpbmQpICE9ICd7fScgJiYNCiAgICAgIHRoaXMuY29uZmlnDQogICAgKSB7DQogICAgICBjb25zdCBiaW5kID0gZ2FuZ2VkLmJpbmQNCiAgICAgIGNvbnN0IGZvcm1WbSA9IHV0aWxzLmdldE9ubGluZUZvcm1JbnN0YW5jZShfbWUpDQogICAgICBmb3IgKHZhciBrZXkgaW4gYmluZCkgew0KICAgICAgICBsZXQgcGFyYW1Eb20gPSBudWxsDQogICAgICAgIGlmICh0aGlzLmN1clN1YkluZGV4ID09IG51bGwpIHsNCiAgICAgICAgICBwYXJhbURvbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1ttb2RlbC1uYW1lPSInICsgYmluZFtrZXldICsgJyJdJykNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICBsZXQgc3ViRmlsZWROYW1lID0gYmluZFtrZXldLnNwbGl0KCcuJylbM10NCiAgICAgICAgICBwYXJhbURvbSA9IHN1YlNjb3BlRWwucXVlcnlTZWxlY3RvcigNCiAgICAgICAgICAgICdbbW9kZWwtbmFtZT0iaXRlbS4nICsgc3ViRmlsZWROYW1lICsgJyJdJw0KICAgICAgICAgICkNCiAgICAgICAgfQ0KICAgICAgICBpZiAocGFyYW1Eb20gJiYgcGFyYW1Eb20uX192dWVfXykgew0KICAgICAgICAgIHBhcmFtRG9tLl9fdnVlX18uJHdhdGNoKCd2YWx1ZScsIGZ1bmN0aW9uKG5ld1ZhbCwgb2xkVmFsKSB7DQogICAgICAgICAgICBpZiAobmV3VmFsICE9IG9sZFZhbCkgew0KICAgICAgICAgICAgICBfbWUuc2VhcmNoKGZhbHNlLCBuZXdWYWwsIHRydWUpDQogICAgICAgICAgICB9DQogICAgICAgICAgfSkNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCiAgfSwNCiAgY3JlYXRlZCgpIHsNCiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLnNlbGVjdGxpc3QgPyB0aGlzLnNlbGVjdGxpc3QgOiBbXQ0KICAgIC8v5Yqo5oCB5Lyg5YWlDQogICAgaWYgKA0KICAgICAgdGhpcy5nYW5nZWQgJiYNCiAgICAgIHRoaXMuZ2FuZ2VkLmFsaWFzICYmDQogICAgICB0aGlzLm9wdGlvbnMubGVuZ3RoIDwgMSAmJg0KICAgICAgdGhpcy5nYW5nZWQNCiAgICApIHsNCiAgICAgIGNvbnN0IHRoaXNfID0gdGhpcw0KICAgICAgdGhpc18uJHN0b3JlLmRpc3BhdGNoKCdmb3JtL2dldEJ5QWxpYXNDcScsIHRoaXNfLmdhbmdlZC5hbGlhcykudGhlbihyZXMgPT4gew0KICAgICAgICB0aGlzXy5jb25maWcgPSByZXMNCiAgICAgICAgbGV0IG9iaklzRW1wdHkgPSB0aGlzXy5vYmpJc0VtcHR5KHRoaXNfLmdhbmdlZC5iaW5kKQ0KICAgICAgICBpZiAodGhpc18uZ2FuZ2VkICYmICFvYmpJc0VtcHR5KSB7DQogICAgICAgICAgdGhpc18uaGFuZGVsSW5pdEdhbmdlZHNlYXJjaCgpDQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgdGhpc18uc2VhcmNoKGZhbHNlLCAnJykNCiAgICAgICAgfQ0KICAgICAgfSkNCiAgICB9DQogICAgdGhpcy4kdmFsaWRhdG9yID0gdGhpcy4kcm9vdC4kdmFsaWRhdG9yDQogIH0sDQogIG1ldGhvZHM6IHsNCiAgICAvL+WIpOaWreWvueixoemHjOmdoueahOWAvOaYr+WQpuS4uuepug0KICAgIG9iaklzRW1wdHkob2JqKSB7DQogICAgICBmb3IgKGxldCBrZXkgaW4gb2JqKSB7DQogICAgICAgIGlmIChvYmpba2V5XSkgew0KICAgICAgICAgIHJldHVybiBmYWxzZQ0KICAgICAgICB9DQogICAgICB9DQogICAgICByZXR1cm4gdHJ1ZQ0KICAgIH0sDQogICAgYXN5bmMgZG9RdWVyeShwYXJhbSkgew0KICAgICAgbGV0IHBhcmFtTG9hZERhdGEgPSBbXQ0KICAgICAgY29uc3QgcEluc3QgPSB1dGlscy5nZXRPbmxpbmVGb3JtSW5zdGFuY2UodGhpcykNCiAgICAgIC8v6I635Y+W5YWz6IGU5p+l6K+i57uR5a6a55qE6KGo5Y2V5Y+C5pWwDQogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFtLmNvbmRpdGlvbmZpZWxkLmxlbmd0aDsgaSsrKSB7DQogICAgICAgIGlmIChwYXJhbS5jb25kaXRpb25maWVsZFtpXS5maWVsZFBhdGggIT0gJycpIHsNCiAgICAgICAgICBsZXQgYmluZFZhbCA9IHV0aWxzLmdldFZhbHVlQnlQYXRoKHBJbnN0LCBwYXJhbS5jb25kaXRpb25maWVsZFtpXS5maWVsZFBhdGgsIG51bGwpDQogICAgICAgICAgbGV0IG9iaiA9IHtrZXk6IHBhcmFtLmNvbmRpdGlvbmZpZWxkW2ldLmZpZWxkLCB2YWx1ZTogYmluZFZhbH0NCiAgICAgICAgICBwYXJhbUxvYWREYXRhLnB1c2gob2JqKQ0KICAgICAgICB9DQogICAgICB9DQoNCiAgICAgIGxldCBxdWVyeVVybCA9IHBhcmFtLmRzVHlwZSA9PSAnZGF0YVNvdXJjZScgPyAnJHtmb3JtfS9mb3JtL2N1c3RvbVF1ZXJ5L3YxL2RvUXVlcnk/YWxpYXM9JyArIHBhcmFtLmFsaWFzICsgJyZwYWdlPTEnIDogcGFyYW0udXJsDQogICAgICBsZXQgcmVxdWVzdE1ldGhvZCA9ICdQT1NUJw0KICAgICAgLy/lpoLmnpzlhbPogZTmlbDmja7liJfooajmn6Xor6LmlbDmja7kuI3mmK/mlbDmja7mupDliJnor7fmsYLmlrnms5XkuLpyZXN0ZnVs6YWN572u55qE6K+35rGC5pa55byPDQogICAgICBpZiAocGFyYW0uZHNUeXBlICE9ICdkYXRhU291cmNlJykgew0KICAgICAgICByZXF1ZXN0TWV0aG9kID0gcGFyYW0ucmVxdWVzdFR5cGUNCiAgICAgIH0NCiAgICAgIC8v5p+l6K+i5pWw5o2uDQogICAgICByZXEucmVxdWVzdCh7dXJsOiBxdWVyeVVybCwgbWV0aG9kOiByZXF1ZXN0TWV0aG9kLCBkYXRhOiBwYXJhbUxvYWREYXRhfSkudGhlbihyZXMgPT4gew0KICAgICAgICAvL+WIpOaWreaYr+WQpuacieWFs+iBlOafpeivouaVsOaNrui/lOWbng0KICAgICAgICBpZiAocmVzLmRhdGEucm93cy5sZW5ndGggPiAwKSB7DQogICAgICAgICAgLy/ojrflj5blhbPogZTmn6Xor6Lov5Tlm57nmoTooajljZXlj4LmlbANCiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFtLnJlc3VsdGZpZWxkLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICBpZiAocGFyYW0ucmVzdWx0ZmllbGRbaV0uZmllbGRQYXRoICE9ICcnKSB7DQogICAgICAgICAgICAgIGxldCB2YWwgPSAnJw0KICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHJlcy5kYXRhLnJvd3MubGVuZ3RoOyBqKyspIHsNCiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEucm93c1tqXVtwYXJhbS5yZXN1bHRmaWVsZFtpXS5jb21tZW50XSkgew0KICAgICAgICAgICAgICAgICAgdmFsID0gdmFsICsgcmVzLmRhdGEucm93c1tqXVtwYXJhbS5yZXN1bHRmaWVsZFtpXS5jb21tZW50XSArICcsJw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB2YWwgPSB2YWwuc3Vic3RyaW5nKDAsIHZhbC5sZW5ndGggLSAxKQ0KICAgICAgICAgICAgICAvL+i1i+WAvOe7mee7keWumueahOWtl+autQ0KICAgICAgICAgICAgICB1dGlscy5zZXRWYWx1ZUJ5UGF0aChwSW5zdCwgcGFyYW0ucmVzdWx0ZmllbGRbaV0uZmllbGRQYXRoLCB2YWwsIG51bGwpDQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIC8v6I635Y+W5YWz6IGU5p+l6K+i6L+U5Zue55qE6KGo5Y2V5Y+C5pWwDQogICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJhbS5yZXN1bHRmaWVsZC5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgaWYgKHBhcmFtLnJlc3VsdGZpZWxkW2ldLmZpZWxkUGF0aCAhPSAnJykgew0KICAgICAgICAgICAgICAvL+i1i+WAvOe7mee7keWumueahOWtl+autQ0KICAgICAgICAgICAgICB1dGlscy5zZXRWYWx1ZUJ5UGF0aChwSW5zdCwgcGFyYW0ucmVzdWx0ZmllbGRbaV0uZmllbGRQYXRoLCAnJywgbnVsbCkNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0pDQogICAgfSwNCiAgICBoYW5kZWxJbml0R2FuZ2Vkc2VhcmNoOiBmdW5jdGlvbigpIHsNCiAgICAgIGNvbnN0IF9tZSA9IHRoaXMNCiAgICAgIGxldCB7c3ViU2NvcGVFbH0gPSBob3RlbnRVdGlscy5nZXRTdWJTY29wZUVsQW5kSW5kZXgoX21lLiRlbCkNCiAgICAgIGlmIChzdWJTY29wZUVsKSB7DQogICAgICAgIHRoaXMuY3VyU3ViSW5kZXggPSBzdWJTY29wZUVsLmRhdGFzZXRbJ2luZGV4J10NCiAgICAgIH0NCiAgICAgIGNvbnN0IGdhbmdlZCA9IHRoaXMuZ2FuZ2VkDQogICAgICAvL+WIpOaWreaYr+WQpuacieWPguaVsOe7keWumg0KICAgICAgaWYgKGdhbmdlZCAmJiBKU09OLnN0cmluZ2lmeShnYW5nZWQuYmluZCkgIT0gJ3t9JyAmJiB0aGlzLmNvbmZpZykgew0KICAgICAgICBjb25zdCBiaW5kID0gZ2FuZ2VkLmJpbmQNCiAgICAgICAgY29uc3QgZm9ybVZtID0gdXRpbHMuZ2V0T25saW5lRm9ybUluc3RhbmNlKF9tZSkNCiAgICAgICAgaWYgKHRoaXMuY3VyU3ViSW5kZXggPT0gbnVsbCkgew0KICAgICAgICAgIGZvciAodmFyIGtleSBpbiBiaW5kKSB7DQogICAgICAgICAgICBjb25zdCBwSW5zdCA9IHV0aWxzLmdldE9ubGluZUZvcm1JbnN0YW5jZShfbWUpDQogICAgICAgICAgICBjb25zdCB2YWwgPSB1dGlscy5nZXRWYWx1ZUJ5UGF0aChwSW5zdCwgYmluZFtrZXldKQ0KICAgICAgICAgICAgX21lLnNlYXJjaChmYWxzZSwgdmFsKQ0KICAgICAgICAgIH0NCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gYmluZCkgew0KICAgICAgICAgICAgbGV0IHN1YkZpbGVkTmFtZSA9IGJpbmRba2V5XS5zcGxpdCgnLicpWzNdDQogICAgICAgICAgICBsZXQgcGFyYW1Eb20gPSBzdWJTY29wZUVsLnF1ZXJ5U2VsZWN0b3IoDQogICAgICAgICAgICAgICdbbW9kZWwtbmFtZT0iaXRlbS4nICsgc3ViRmlsZWROYW1lICsgJyJdJw0KICAgICAgICAgICAgKQ0KICAgICAgICAgICAgaWYgKHBhcmFtRG9tICYmIHBhcmFtRG9tLl9fdnVlX18gJiYgcGFyYW1Eb20uX192dWVfXy52YWx1ZSkgew0KICAgICAgICAgICAgICBsZXQgbmV3VmFsID0gcGFyYW1Eb20uX192dWVfXy52YWx1ZSArICcnDQogICAgICAgICAgICAgIF9tZS5zZWFyY2goZmFsc2UsIG5ld1ZhbCkNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0NCiAgICB9LA0KICAgIGNsZWFyKCkgew0KICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHsNCiAgICAgICAgdGhpcy50ZW1wb3B0aW9ucyA9IFtdDQogICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uKCkgew0KICAgICAgICAgIHRoaXMuJHJlZnMudHJlZXNlbGVjdEVsVHJlZS5zZXRDaGVja2VkS2V5cyhbXSwgdHJ1ZSkNCiAgICAgICAgfSkNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIHRoaXMuJHJlZnMudHJlZXNlbGVjdEVsVHJlZS5zZXRDdXJyZW50Tm9kZSh7fSkNCiAgICAgIH0NCiAgICB9LA0KICAgIGNsaWNrTmF0aXZlOiBmdW5jdGlvbigpIHsNCiAgICAgIC8v5Yqo5oCB5Lyg5YWlDQogICAgICBpZiAodGhpcy5nYW5nZWQgJiYgdGhpcy5nYW5nZWQuYWxpYXMgJiYgdGhpcy5vcHRpb25zLmxlbmd0aCA8IDEpIHsNCiAgICAgICAgdGhpcy4kc3RvcmUNCiAgICAgICAgICAuZGlzcGF0Y2goJ2Zvcm0vZ2V0QnlBbGlhc0NxJywgdGhpcy5nYW5nZWQuYWxpYXMpDQogICAgICAgICAgLnRoZW4ocmVzID0+IHsNCiAgICAgICAgICAgIHRoaXMuY29uZmlnID0gcmVzDQogICAgICAgICAgICB0aGlzLnNlYXJjaCgpDQogICAgICAgICAgfSkNCiAgICAgIH0NCiAgICB9LA0KICAgIHNlbGVjdEJsdXI6IGZ1bmN0aW9uKHZhbCkgew0KICAgICAgdGhpcy5zZWFyY2goKQ0KICAgIH0sDQogICAgaGFuZGxlQ2hlY2tDaGFuZ2UoZGF0YSkgew0KICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHsNCiAgICAgICAgbGV0IGNoZWNrZWROb2RlcyA9IHRoaXMuJHJlZnMudHJlZXNlbGVjdEVsVHJlZS5nZXRDaGVja2VkTm9kZXMoKQ0KICAgICAgICBsZXQgbW9kZWxWYWx1ZSA9IFtdDQogICAgICAgIHRoaXMudGVtcG9wdGlvbnMgPSBjaGVja2VkTm9kZXMNCiAgICAgICAgZm9yIChsZXQgZGF0YSBvZiBjaGVja2VkTm9kZXMpIHsNCiAgICAgICAgICBtb2RlbFZhbHVlLnB1c2goZGF0YS5rZXkpDQogICAgICAgIH0NCiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCBtb2RlbFZhbHVlLmpvaW4oJywnKSkNCiAgICAgIH0NCiAgICB9LA0KICAgIGhhbmRsZU5vZGVDbGljayhkYXRhKSB7DQogICAgICB0aGlzLiRyZWZzLnRyZWVzZWxlY3RFbFRyZWUuc2V0Q2hlY2tlZChkYXRhLCB0cnVlKQ0KICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7DQogICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgZGF0YS5rZXkpDQogICAgICAgIGlmIChkYXRhLmtleSkgew0KICAgICAgICAgIC8v5Yik5pat5a+56K+d5qGG5piv5ZCm57uR5a6a5LqG5YWz6IGU5p+l6K+iDQogICAgICAgICAgaWYgKHRoaXMuY3VzdG9tUXVlcnkgJiYgdGhpcy5jdXN0b21RdWVyeS5jdXN0UXVlcnlKc29uICYmIHRoaXMuY3VzdG9tUXVlcnkuY3VzdFF1ZXJ5SnNvbi5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICBsZXQgY3VzdFF1ZXJ5SnNvbiA9IHRoaXMuY3VzdG9tUXVlcnkuY3VzdFF1ZXJ5SnNvbg0KICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjdXN0UXVlcnlKc29uLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgIGlmIChjdXN0UXVlcnlKc29uW2ldLmNvbmRpdGlvbmZpZWxkLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgICB0aGlzLmRvUXVlcnkoY3VzdFF1ZXJ5SnNvbltpXSkNCiAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbJyArIGN1c3RRdWVyeUpzb25baV0uY29tbWVudCArICdd5YWz6IGU5p+l6K+i5Y+W5YC85Y+C5pWw5pyq57uR5a6a6KGo5Y2V5a2X5q61JykNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICB0aGlzLiRyZWZzLnRyZWVzZWxlY3QuYmx1cigpDQogICAgICAgIHNldFRpbWVvdXQoKCkgPT4gew0KICAgICAgICAgIHRoaXMuJHZhbGlkYXRvci52YWxpZGF0ZSgpDQogICAgICAgIH0pDQogICAgICB9IGVsc2UgaWYgKHRoaXMubXVsdGlwbGUpIHsNCiAgICAgICAgbGV0IGNoZWNrZWROb2RlcyA9IHRoaXMuJHJlZnMudHJlZXNlbGVjdEVsVHJlZS5nZXRDaGVja2VkTm9kZXMoKQ0KICAgICAgICBsZXQgbW9kZWxWYWx1ZSA9IFtdDQogICAgICAgIHRoaXMudGVtcG9wdGlvbnMgPSBjaGVja2VkTm9kZXMNCiAgICAgICAgZm9yIChsZXQgZGF0YSBvZiBjaGVja2VkTm9kZXMpIHsNCiAgICAgICAgICBtb2RlbFZhbHVlLnB1c2goZGF0YS5rZXkpDQogICAgICAgIH0NCiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCBtb2RlbFZhbHVlLmpvaW4oJywnKSkNCiAgICAgIH0NCiAgICB9LA0KICAgIGZpbHRlck5vZGUodmFsdWUsIGRhdGEpIHsNCiAgICAgIGlmICghdmFsdWUpIHJldHVybiB0cnVlDQogICAgICByZXR1cm4gZGF0YS52YWx1ZS5pbmRleE9mKHZhbHVlKSAhPT0gLTENCiAgICB9LA0KICAgIGZpbHRlck1ldGhvZChxdWVyeSkgew0KICAgICAgdGhpcy4kcmVmcy50cmVlc2VsZWN0RWxUcmVlLmZpbHRlcihxdWVyeSkNCiAgICB9LA0KICAgIHJlbW90ZU1ldGhvZDogZnVuY3Rpb24odmFsKSB7DQogICAgICBpZiAodmFsKSB7DQogICAgICAgIHRoaXMuc2VhcmNoKGZhbHNlLCB2YWwpDQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLnBhcmFtID0gJycNCiAgICAgICAgdGhpcy5zZWFyY2goKQ0KICAgICAgfQ0KICAgIH0sDQogICAgaGFuZGxlQ3VycmVudENoYW5nZTogZnVuY3Rpb24oY3VycmVudFBhZ2UpIHsNCiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBjdXJyZW50UGFnZQ0KICAgICAgdGhpcy5zZWFyY2goY3VycmVudFBhZ2UpDQogICAgfSwNCiAgICBzZWFyY2goY3VycmVudFBhZ2UsIHBhcmFtLCBnYW5nZWRDaGFuZ2UpIHsNCiAgICAgIHRoaXMub3B0aW9ucyA9IFtdDQogICAgICBpZiAoZ2FuZ2VkQ2hhbmdlKSB7DQogICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgJycpDQogICAgICB9DQogICAgICBsZXQgb2JqSXNFbXB0eSA9IHRoaXMub2JqSXNFbXB0eSh0aGlzLmdhbmdlZC5iaW5kKQ0KICAgICAgaWYgKA0KICAgICAgICAhdGhpcy5jb25maWcgfHwNCiAgICAgICAgKHRoaXMuZ2FuZ2VkLmJpbmQgJiYgIW9iaklzRW1wdHkgJiYgIXBhcmFtKQ0KICAgICAgKQ0KICAgICAgICByZXR1cm4NCiAgICAgIHZhciBzdHIgPSB0aGlzLmNvbmZpZw0KICAgICAgY29uc3QgX3RoaXMgPSB0aGlzDQogICAgICB2YXIgZ2FuZ2VkID0gdGhpcy5nYW5nZWQNCiAgICAgIHRoaXMucGFnZVNpemUgPSBzdHIucGFnZVNpemUNCiAgICAgIC8vIGlmKHN0ci5uZWVkUGFnZSA9PT0gMSl7DQogICAgICB2YXIgcGFnZUJlYW4gPSB7DQogICAgICAgIHBhZ2VCZWFuOiB7DQogICAgICAgICAgcGFnZTogY3VycmVudFBhZ2UgPyBjdXJyZW50UGFnZSA6IDEsDQogICAgICAgICAgcGFnZVNpemU6IHN0ci5wYWdlU2l6ZSwNCiAgICAgICAgICBzaG93VG90YWw6ICd0cnVlJw0KICAgICAgICB9DQogICAgICB9DQogICAgICBpZiAocGFyYW0pIHsNCiAgICAgICAgaWYgKHN0ci5kc1R5cGUgPT0gJ2RhdGFTb3VyY2UnKSB7DQogICAgICAgICAgbGV0IEJhc2U2NCA9IHJlcXVpcmUoJ2pzLWJhc2U2NCcpLkJhc2U2NA0KICAgICAgICAgIHN0ci5jdXJyZW50UGFnZSA9IGN1cnJlbnRQYWdlID8gY3VycmVudFBhZ2UgOiAxDQogICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGdhbmdlZC5iaW5kKSA9PT0gJ3t9Jykgew0KICAgICAgICAgICAgc3RyLnF1ZXJ5RGF0YSA9IEJhc2U2NC5lbmNvZGUoDQogICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KFt7a2V5OiBnYW5nZWQudmFsdWVCaW5kLCB2YWx1ZTogcGFyYW19XSkNCiAgICAgICAgICAgICkNCiAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgdmFyIHF1ZXJ5RGF0YSA9IFtdDQogICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZ2FuZ2VkLmJpbmQpIHsNCiAgICAgICAgICAgICAgY29uc3QgcEluc3QgPSB1dGlscy5nZXRPbmxpbmVGb3JtSW5zdGFuY2UoX3RoaXMpDQogICAgICAgICAgICAgIGNvbnN0IHZhbCA9IHV0aWxzLmdldFZhbHVlQnlQYXRoKA0KICAgICAgICAgICAgICAgIHBJbnN0LA0KICAgICAgICAgICAgICAgIGdhbmdlZC5iaW5kW2tleV0sDQogICAgICAgICAgICAgICAgdGhpcy5jdXJTdWJJbmRleA0KICAgICAgICAgICAgICApDQogICAgICAgICAgICAgIGlmICh2YWwpIHsNCiAgICAgICAgICAgICAgICBxdWVyeURhdGEucHVzaCh7a2V5OiBrZXksIHZhbHVlOiB2YWx9KQ0KICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHF1ZXJ5RGF0YS5wdXNoKHtrZXk6IGtleSwgdmFsdWU6IHBhcmFtfSkNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgc3RyLnF1ZXJ5RGF0YSA9IEJhc2U2NC5lbmNvZGUoSlNPTi5zdHJpbmdpZnkocXVlcnlEYXRhKSkNCiAgICAgICAgICB9DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgdmFyIHRlbXBsYXRlUGEgPSB0aGlzLmNvbmZpZy5kYXRhUGFyYW0NCiAgICAgICAgICBpZiAodGhpcy5jb25maWcucmVxdWVzdFR5cGUgPT0gJ1BPU1QnICYmIHRlbXBsYXRlUGEpIHsNCiAgICAgICAgICAgIHZhciBjb25kaXRpb25maWVsZCA9IEpTT04ucGFyc2Uoc3RyLmNvbmRpdGlvbmZpZWxkKQ0KICAgICAgICAgICAgY29uZGl0aW9uZmllbGQuZm9yRWFjaChlbGUgPT4gew0KICAgICAgICAgICAgICBjb25zdCBwSW5zdCA9IHV0aWxzLmdldE9ubGluZUZvcm1JbnN0YW5jZShfdGhpcykNCiAgICAgICAgICAgICAgY29uc3QgdmFsID0gdXRpbHMuZ2V0VmFsdWVCeVBhdGgocEluc3QsIGdhbmdlZC5iaW5kW2VsZS5maWVsZF0pDQogICAgICAgICAgICAgIGlmICh2YWwpIHsNCiAgICAgICAgICAgICAgICB0ZW1wbGF0ZVBhID0gdGVtcGxhdGVQYS5yZXBsYWNlKA0KICAgICAgICAgICAgICAgICAgbmV3IFJlZ0V4cCgnXFx7JyArIGVsZS5maWVsZCArICdcXH0nLCAnZycpLA0KICAgICAgICAgICAgICAgICAgdmFsDQogICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHRlbXBsYXRlUGEgPSB0ZW1wbGF0ZVBhLnJlcGxhY2UoDQogICAgICAgICAgICAgICAgICBuZXcgUmVnRXhwKCdcXHsnICsgZWxlLmZpZWxkICsgJ1xcfScsICdnJyksDQogICAgICAgICAgICAgICAgICBwYXJhbQ0KICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIH0NCiAgICAgICAgICBzdHIucGFnZUJlYW4gPSB1dGlscy5wYXJzZVRvSnNvbih0ZW1wbGF0ZVBhKQ0KICAgICAgICB9DQogICAgICB9IGVsc2Ugew0KICAgICAgICBzdHIucGFnZUJlYW4gPSBwYWdlQmVhbg0KICAgICAgICBzdHIuY3VycmVudFBhZ2UgPSBjdXJyZW50UGFnZSA/IGN1cnJlbnRQYWdlIDogMQ0KICAgICAgICBzdHIucXVlcnlEYXRhID0gJycNCiAgICAgIH0NCiAgICAgIC8vfQ0KICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2Zvcm0vc2VsZWN0UXVlcnknLCBzdHIpLnRoZW4ocmVzID0+IHsNCiAgICAgICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmRzVHlwZSA9PT0gJ3Jlc3RmdWwnKSB7DQogICAgICAgICAgX3RoaXMub3B0aW9ucyA9IHJlcy5yb3dzDQogICAgICAgICAgLy90cmVl5pWw57uE6L2sbGlzdA0KICAgICAgICAgIHRoaXMuYWRkU2VsZWN0TGlzdChfdGhpcy5vcHRpb25zKQ0KICAgICAgICAgIC8v5aSE55CG5Y+q6K+75Zue5aGr5pi+56S6DQogICAgICAgICAgaWYgKA0KICAgICAgICAgICAgX3RoaXMuaW5wdXRWYWwgJiYNCiAgICAgICAgICAgIF90aGlzLmlucHV0VmFsLmNvbnN0cnVjdG9yID09IEFycmF5ICYmDQogICAgICAgICAgICBfdGhpcy5pbnB1dFZhbC5sZW5ndGggPiAwDQogICAgICAgICAgKSB7DQogICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IF90aGlzLmlucHV0VmFsLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgIHRoaXMuZmluZERlc2MoX3RoaXMub3B0aW9ucywgX3RoaXMuaW5wdXRWYWxbaV0pDQogICAgICAgICAgICB9DQogICAgICAgICAgICAvL+m7mOiupOmAieS4reagkeiKgueCuQ0KICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRXcml0ZWFibGUpIHsNCiAgICAgICAgICAgICAgdGhpcy4kcmVmcy50cmVlc2VsZWN0RWxUcmVlLnNldENoZWNrZWRLZXlzKF90aGlzLmlucHV0VmFsKQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB0aGlzLmZpbmREZXNjKF90aGlzLm9wdGlvbnMsIF90aGlzLmlucHV0VmFsKQ0KICAgICAgICAgIH0NCiAgICAgICAgICBpZiAodGhpcy52YWx1ZURlc2MgIT0gJycpIHsNCiAgICAgICAgICAgIHRoaXMudmFsdWVEZXNjID0gdGhpcy52YWx1ZURlc2Muc3Vic3RyaW5nKA0KICAgICAgICAgICAgICAwLA0KICAgICAgICAgICAgICB0aGlzLnZhbHVlRGVzYy5sZW5ndGggLSAxDQogICAgICAgICAgICApDQogICAgICAgICAgfQ0KDQogICAgICAgICAgcmV0dXJuDQogICAgICAgIH0NCiAgICAgICAgX3RoaXMudG90YWwgPSByZXMudG90YWwNCiAgICAgICAgX3RoaXMub3B0aW9ucyA9IFtdDQogICAgICAgIHJlcy5yb3dzLmZvckVhY2gobSA9PiB7DQogICAgICAgICAgdmFyIG9wdGlvbiA9IHt9DQogICAgICAgICAgaWYgKF90aGlzLmdhbmdlZC52YWx1ZUJpbmQpIHsNCiAgICAgICAgICAgIG9wdGlvbi5rZXkgPSBtW2dhbmdlZC52YWx1ZUJpbmRdICsgJycNCiAgICAgICAgICB9DQogICAgICAgICAgaWYgKF90aGlzLmdhbmdlZC5sYWJlbEJpbmQpIHsNCiAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9IG1bZ2FuZ2VkLmxhYmVsQmluZF0NCiAgICAgICAgICB9DQogICAgICAgICAgX3RoaXMub3B0aW9ucy5wdXNoKG9wdGlvbikNCiAgICAgICAgfSkNCg0KICAgICAgICAvL3RyZWXmlbDnu4TovaxsaXN0DQogICAgICAgIHRoaXMuYWRkU2VsZWN0TGlzdChfdGhpcy5vcHRpb25zKQ0KICAgICAgICBpZiAoDQogICAgICAgICAgX3RoaXMuaW5wdXRWYWwgJiYNCiAgICAgICAgICBfdGhpcy5pbnB1dFZhbC5jb25zdHJ1Y3RvciA9PSBBcnJheSAmJg0KICAgICAgICAgIF90aGlzLmlucHV0VmFsLmxlbmd0aCA+IDANCiAgICAgICAgKSB7DQogICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBfdGhpcy5pbnB1dFZhbC5sZW5ndGg7IGorKykgew0KICAgICAgICAgICAgdGhpcy5maW5kRGVzYyhfdGhpcy5vcHRpb25zLCBfdGhpcy5pbnB1dFZhbFtqXSkNCiAgICAgICAgICB9DQogICAgICAgICAgLy/pu5jorqTpgInkuK3moJHoioLngrkNCiAgICAgICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7DQogICAgICAgICAgICBfdGhpcy4kcmVmcy50cmVlc2VsZWN0RWxUcmVlICYmIF90aGlzLiRyZWZzLnRyZWVzZWxlY3RFbFRyZWUuc2V0Q2hlY2tlZEtleXMoX3RoaXMuaW5wdXRWYWwpDQogICAgICAgICAgfSkNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICB0aGlzLmZpbmREZXNjKF90aGlzLm9wdGlvbnMsIF90aGlzLmlucHV0VmFsKQ0KICAgICAgICB9DQogICAgICAgIGlmICh0aGlzLnZhbHVlRGVzYyAhPSAnJykgew0KICAgICAgICAgIHRoaXMudmFsdWVEZXNjID0gdGhpcy52YWx1ZURlc2Muc3Vic3RyaW5nKA0KICAgICAgICAgICAgMCwNCiAgICAgICAgICAgIHRoaXMudmFsdWVEZXNjLmxlbmd0aCAtIDENCiAgICAgICAgICApDQogICAgICAgIH0NCiAgICAgIH0pDQogICAgfSwNCiAgICBmaW5kRGVzYyhsaXN0LCBrZXkpIHsNCiAgICAgIGlmIChsaXN0ICYmIGxpc3QubGVuZ3RoID4gMCkgew0KICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICBpZiAobGlzdFtpXS5rZXkgPT0ga2V5KSB7DQogICAgICAgICAgICB0aGlzLnZhbHVlRGVzYyArPSBsaXN0W2ldLnZhbHVlICsgJywnDQogICAgICAgICAgICByZXR1cm4NCiAgICAgICAgICB9DQogICAgICAgICAgaWYgKGxpc3RbaV0uY2hpbGRyZW4pIHsNCiAgICAgICAgICAgIHRoaXMuZmluZERlc2MobGlzdFtpXS5jaGlsZHJlbiwga2V5KQ0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0sDQogICAgYWRkU2VsZWN0TGlzdChsaXN0KSB7DQogICAgICBpZiAobGlzdCAmJiBsaXN0Lmxlbmd0aCA+IDApIHsNCiAgICAgICAgbGlzdC5mb3JFYWNoKGwgPT4gew0KICAgICAgICAgIHRoaXMudGVtcG9wdGlvbnMucHVzaChsKQ0KICAgICAgICAgIGlmIChsLmNoaWxkcmVuKSB7DQogICAgICAgICAgICB0aGlzLmFkZFNlbGVjdExpc3QobC5jaGlsZHJlbikNCiAgICAgICAgICB9DQogICAgICAgIH0pDQogICAgICB9DQogICAgfQ0KICB9DQp9DQo="},null]}