3MxZ2rcGgPFmkECT6NA35zhtoMzRNv2jLTk · data · 2.7c767379.chunk.js_34
{
"2.7c767379.chunk.js_34": "base64:dD0xNTM2MCxjLkNvbm5lY3Rpb25FbmQ9e3NlcnZlcjowLGNsaWVudDoxfSxjLlBSRkFsZ29yaXRobT17dGxzX3ByZl9zaGEyNTY6MH0sYy5CdWxrQ2lwaGVyQWxnb3JpdGhtPXtub25lOm51bGwscmM0OjAsZGVzMzoxLGFlczoyfSxjLkNpcGhlclR5cGU9e3N0cmVhbTowLGJsb2NrOjEsYWVhZDoyfSxjLk1BQ0FsZ29yaXRobT17bm9uZTpudWxsLGhtYWNfbWQ1OjAsaG1hY19zaGExOjEsaG1hY19zaGEyNTY6MixobWFjX3NoYTM4NDozLGhtYWNfc2hhNTEyOjR9LGMuQ29tcHJlc3Npb25NZXRob2Q9e25vbmU6MCxkZWZsYXRlOjF9LGMuQ29udGVudFR5cGU9e2NoYW5nZV9jaXBoZXJfc3BlYzoyMCxhbGVydDoyMSxoYW5kc2hha2U6MjIsYXBwbGljYXRpb25fZGF0YToyMyxoZWFydGJlYXQ6MjR9LGMuSGFuZHNoYWtlVHlwZT17aGVsbG9fcmVxdWVzdDowLGNsaWVudF9oZWxsbzoxLHNlcnZlcl9oZWxsbzoyLGNlcnRpZmljYXRlOjExLHNlcnZlcl9rZXlfZXhjaGFuZ2U6MTIsY2VydGlmaWNhdGVfcmVxdWVzdDoxMyxzZXJ2ZXJfaGVsbG9fZG9uZToxNCxjZXJ0aWZpY2F0ZV92ZXJpZnk6MTUsY2xpZW50X2tleV9leGNoYW5nZToxNixmaW5pc2hlZDoyMH0sYy5BbGVydD17fSxjLkFsZXJ0LkxldmVsPXt3YXJuaW5nOjEsZmF0YWw6Mn0sYy5BbGVydC5EZXNjcmlwdGlvbj17Y2xvc2Vfbm90aWZ5OjAsdW5leHBlY3RlZF9tZXNzYWdlOjEwLGJhZF9yZWNvcmRfbWFjOjIwLGRlY3J5cHRpb25fZmFpbGVkOjIxLHJlY29yZF9vdmVyZmxvdzoyMixkZWNvbXByZXNzaW9uX2ZhaWx1cmU6MzAsaGFuZHNoYWtlX2ZhaWx1cmU6NDAsYmFkX2NlcnRpZmljYXRlOjQyLHVuc3VwcG9ydGVkX2NlcnRpZmljYXRlOjQzLGNlcnRpZmljYXRlX3Jldm9rZWQ6NDQsY2VydGlmaWNhdGVfZXhwaXJlZDo0NSxjZXJ0aWZpY2F0ZV91bmtub3duOjQ2LGlsbGVnYWxfcGFyYW1ldGVyOjQ3LHVua25vd25fY2E6NDgsYWNjZXNzX2RlbmllZDo0OSxkZWNvZGVfZXJyb3I6NTAsZGVjcnlwdF9lcnJvcjo1MSxleHBvcnRfcmVzdHJpY3Rpb246NjAscHJvdG9jb2xfdmVyc2lvbjo3MCxpbnN1ZmZpY2llbnRfc2VjdXJpdHk6NzEsaW50ZXJuYWxfZXJyb3I6ODAsdXNlcl9jYW5jZWxlZDo5MCxub19yZW5lZ290aWF0aW9uOjEwMH0sYy5IZWFydGJlYXRNZXNzYWdlVHlwZT17aGVhcnRiZWF0X3JlcXVlc3Q6MSxoZWFydGJlYXRfcmVzcG9uc2U6Mn0sYy5DaXBoZXJTdWl0ZXM9e30sYy5nZXRDaXBoZXJTdWl0ZT1mdW5jdGlvbihlKXt2YXIgdD1udWxsO2Zvcih2YXIgciBpbiBjLkNpcGhlclN1aXRlcyl7dmFyIG49Yy5DaXBoZXJTdWl0ZXNbcl07aWYobi5pZFswXT09PWUuY2hhckNvZGVBdCgwKSYmbi5pZFsxXT09PWUuY2hhckNvZGVBdCgxKSl7dD1uO2JyZWFrfX1yZXR1cm4gdH0sYy5oYW5kbGVVbmV4cGVjdGVkPWZ1bmN0aW9uKGUsdCl7IWUub3BlbiYmZS5lbnRpdHk9PT1jLkNvbm5lY3Rpb25FbmQuY2xpZW50fHxlLmVycm9yKGUse21lc3NhZ2U6IlVuZXhwZWN0ZWQgbWVzc2FnZS4gUmVjZWl2ZWQgVExTIHJlY29yZCBvdXQgb2Ygb3JkZXIuIixzZW5kOiEwLGFsZXJ0OntsZXZlbDpjLkFsZXJ0LkxldmVsLmZhdGFsLGRlc2NyaXB0aW9uOmMuQWxlcnQuRGVzY3JpcHRpb24udW5leHBlY3RlZF9tZXNzYWdlfX0pfSxjLmhhbmRsZUhlbGxvUmVxdWVzdD1mdW5jdGlvbihlLHQscil7IWUuaGFuZHNoYWtpbmcmJmUuaGFuZHNoYWtlcz4wJiYoYy5xdWV1ZShlLGMuY3JlYXRlQWxlcnQoZSx7bGV2ZWw6Yy5BbGVydC5MZXZlbC53YXJuaW5nLGRlc2NyaXB0aW9uOmMuQWxlcnQuRGVzY3JpcHRpb24ubm9fcmVuZWdvdGlhdGlvbn0pKSxjLmZsdXNoKGUpKSxlLnByb2Nlc3MoKX0sYy5wYXJzZUhlbGxvTWVzc2FnZT1mdW5jdGlvbihlLHQscil7dmFyIGk9bnVsbCxvPWUuZW50aXR5PT09Yy5Db25uZWN0aW9uRW5kLmNsaWVudDtpZihyPDM4KWUuZXJyb3IoZSx7bWVzc2FnZTpvPyJJbnZhbGlkIFNlcnZlckhlbGxvIG1lc3NhZ2UuIE1lc3NhZ2UgdG9vIHNob3J0LiI6IkludmFsaWQgQ2xpZW50SGVsbG8gbWVzc2FnZS4gTWVzc2FnZSB0b28gc2hvcnQuIixzZW5kOiEwLGFsZXJ0OntsZXZlbDpjLkFsZXJ0LkxldmVsLmZhdGFsLGRlc2NyaXB0aW9uOmMuQWxlcnQuRGVzY3JpcHRpb24uaWxsZWdhbF9wYXJhbWV0ZXJ9fSk7ZWxzZXt2YXIgYT10LmZyYWdtZW50LHU9YS5sZW5ndGgoKTtpZihpPXt2ZXJzaW9uOnttYWpvcjphLmdldEJ5dGUoKSxtaW5vcjphLmdldEJ5dGUoKX0scmFuZG9tOm4udXRpbC5jcmVhdGVCdWZmZXIoYS5nZXRCeXRlcygzMikpLHNlc3Npb25faWQ6cyhhLDEpLGV4dGVuc2lvbnM6W119LG8/KGkuY2lwaGVyX3N1aXRlPWEuZ2V0Qnl0ZXMoMiksaS5jb21wcmVzc2lvbl9tZXRob2Q9YS5nZXRCeXRlKCkpOihpLmNpcGhlcl9zdWl0ZXM9cyhhLDIpLGkuY29tcHJlc3Npb25fbWV0aG9kcz1zKGEsMSkpLCh1PXItKHUtYS5sZW5ndGgoKSkpPjApe2Zvcih2YXIgZj1zKGEsMik7Zi5sZW5ndGgoKT4wOylpLmV4dGVuc2lvbnMucHVzaCh7dHlwZTpbZi5nZXRCeXRlKCksZi5nZXRCeXRlKCldLGRhdGE6cyhmLDIpfSk7aWYoIW8pZm9yKHZhciBsPTA7bDxpLmV4dGVuc2lvbnMubGVuZ3RoOysrbCl7dmFyIGg9aS5leHRlbnNpb25zW2xdO2lmKDA9PT1oLnR5cGVbMF0mJjA9PT1oLnR5cGVbMV0pZm9yKHZhciBwPXMoaC5kYXRhLDIpO3AubGVuZ3RoKCk+MDspe2lmKDAhPT1wLmdldEJ5dGUoKSlicmVhaztlLnNlc3Npb24uZXh0ZW5zaW9ucy5zZXJ2ZXJfbmFtZS5zZXJ2ZXJOYW1lTGlzdC5wdXNoKHMocCwyKS5nZXRCeXRlcygpKX19fWlmKGUuc2Vzc2lvbi52ZXJzaW9uJiYoaS52ZXJzaW9uLm1ham9yIT09ZS5zZXNzaW9uLnZlcnNpb24ubWFqb3J8fGkudmVyc2lvbi5taW5vciE9PWUuc2Vzc2lvbi52ZXJzaW9uLm1pbm9yKSlyZXR1cm4gZS5lcnJvcihlLHttZXNzYWdlOiJUTFMgdmVyc2lvbiBjaGFuZ2UgaXMgZGlzYWxsb3dlZCBkdXJpbmcgcmVuZWdvdGlhdGlvbi4iLHNlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi5wcm90b2NvbF92ZXJzaW9ufX0pO2lmKG8pZS5zZXNzaW9uLmNpcGhlclN1aXRlPWMuZ2V0Q2lwaGVyU3VpdGUoaS5jaXBoZXJfc3VpdGUpO2Vsc2UgZm9yKHZhciBkPW4udXRpbC5jcmVhdGVCdWZmZXIoaS5jaXBoZXJfc3VpdGVzLmJ5dGVzKCkpO2QubGVuZ3RoKCk+MCYmKGUuc2Vzc2lvbi5jaXBoZXJTdWl0ZT1jLmdldENpcGhlclN1aXRlKGQuZ2V0Qnl0ZXMoMikpLG51bGw9PT1lLnNlc3Npb24uY2lwaGVyU3VpdGUpOyk7aWYobnVsbD09PWUuc2Vzc2lvbi5jaXBoZXJTdWl0ZSlyZXR1cm4gZS5lcnJvcihlLHttZXNzYWdlOiJObyBjaXBoZXIgc3VpdGVzIGluIGNvbW1vbi4iLHNlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi5oYW5kc2hha2VfZmFpbHVyZX0sY2lwaGVyU3VpdGU6bi51dGlsLmJ5dGVzVG9IZXgoaS5jaXBoZXJfc3VpdGUpfSk7ZS5zZXNzaW9uLmNvbXByZXNzaW9uTWV0aG9kPW8/aS5jb21wcmVzc2lvbl9tZXRob2Q6Yy5Db21wcmVzc2lvbk1ldGhvZC5ub25lfXJldHVybiBpfSxjLmNyZWF0ZVNlY3VyaXR5UGFyYW1ldGVycz1mdW5jdGlvbihlLHQpe3ZhciByPWUuZW50aXR5PT09Yy5Db25uZWN0aW9uRW5kLmNsaWVudCxuPXQucmFuZG9tLmJ5dGVzKCksaT1yP2Uuc2Vzc2lvbi5zcC5jbGllbnRfcmFuZG9tOm4sbz1yP246Yy5jcmVhdGVSYW5kb20oKS5nZXRCeXRlcygpO2Uuc2Vzc2lvbi5zcD17ZW50aXR5OmUuZW50aXR5LHByZl9hbGdvcml0aG06Yy5QUkZBbGdvcml0aG0udGxzX3ByZl9zaGEyNTYsYnVsa19jaXBoZXJfYWxnb3JpdGhtOm51bGwsY2lwaGVyX3R5cGU6bnVsbCxlbmNfa2V5X2xlbmd0aDpudWxsLGJsb2NrX2xlbmd0aDpudWxsLGZpeGVkX2l2X2xlbmd0aDpudWxsLHJlY29yZF9pdl9sZW5ndGg6bnVsbCxtYWNfYWxnb3JpdGhtOm51bGwsbWFjX2xlbmd0aDpudWxsLG1hY19rZXlfbGVuZ3RoOm51bGwsY29tcHJlc3Npb25fYWxnb3JpdGhtOmUuc2Vzc2lvbi5jb21wcmVzc2lvbk1ldGhvZCxwcmVfbWFzdGVyX3NlY3JldDpudWxsLG1hc3Rlcl9zZWNyZXQ6bnVsbCxjbGllbnRfcmFuZG9tOmksc2VydmVyX3JhbmRvbTpvfX0sYy5oYW5kbGVTZXJ2ZXJIZWxsbz1mdW5jdGlvbihlLHQscil7dmFyIG49Yy5wYXJzZUhlbGxvTWVzc2FnZShlLHQscik7aWYoIWUuZmFpbCl7aWYoIShuLnZlcnNpb24ubWlub3I8PWUudmVyc2lvbi5taW5vcikpcmV0dXJuIGUuZXJyb3IoZSx7bWVzc2FnZToiSW5jb21wYXRpYmxlIFRMUyB2ZXJzaW9uLiIsc2VuZDohMCxhbGVydDp7bGV2ZWw6Yy5BbGVydC5MZXZlbC5mYXRhbCxkZXNjcmlwdGlvbjpjLkFsZXJ0LkRlc2NyaXB0aW9uLnByb3RvY29sX3ZlcnNpb259fSk7ZS52ZXJzaW9uLm1pbm9yPW4udmVyc2lvbi5taW5vcixlLnNlc3Npb24udmVyc2lvbj1lLnZlcnNpb247dmFyIGk9bi5zZXNzaW9uX2lkLmJ5dGVzKCk7aS5sZW5ndGg+MCYmaT09PWUuc2Vzc2lvbi5pZD8oZS5leHBlY3Q9ZCxlLnNlc3Npb24ucmVzdW1pbmc9ITAsZS5zZXNzaW9uLnNwLnNlcnZlcl9yYW5kb209bi5yYW5kb20uYnl0ZXMoKSk6KGUuZXhwZWN0PWYsZS5zZXNzaW9uLnJlc3VtaW5nPSExLGMuY3JlYXRlU2VjdXJpdHlQYXJhbWV0ZXJzKGUsbikpLGUuc2Vzc2lvbi5pZD1pLGUucHJvY2VzcygpfX0sYy5oYW5kbGVDbGllbnRIZWxsbz1mdW5jdGlvbihlLHQscil7dmFyIGk9Yy5wYXJzZUhlbGxvTWVzc2FnZShlLHQscik7aWYoIWUuZmFpbCl7dmFyIG89aS5zZXNzaW9uX2lkLmJ5dGVzKCksYT1udWxsO2lmKGUuc2Vzc2lvbkNhY2hlJiYobnVsbD09PShhPWUuc2Vzc2lvbkNhY2hlLmdldFNlc3Npb24obykpP289IiI6KGEudmVyc2lvbi5tYWpvciE9PWkudmVyc2lvbi5tYWpvcnx8YS52ZXJzaW9uLm1pbm9yPmkudmVyc2lvbi5taW5vcikmJihhPW51bGwsbz0iIikpLDA9PT1vLmxlbmd0aCYmKG89bi5yYW5kb20uZ2V0Qnl0ZXMoMzIpKSxlLnNlc3Npb24uaWQ9byxlLnNlc3Npb24uY2xpZW50SGVsbG9WZXJzaW9uPWkudmVyc2lvbixlLnNlc3Npb24uc3A9e30sYSllLnZlcnNpb249ZS5zZXNzaW9uLnZlcnNpb249YS52ZXJzaW9uLGUuc2Vzc2lvbi5zcD1hLnNwO2Vsc2V7Zm9yKHZhciBzLHU9MTt1PGMuU3VwcG9ydGVkVmVyc2lvbnMubGVuZ3RoJiYhKChzPWMuU3VwcG9ydGVkVmVyc2lvbnNbdV0pLm1pbm9yPD1pLnZlcnNpb24ubWlub3IpOysrdSk7ZS52ZXJzaW9uPXttYWpvcjpzLm1ham9yLG1pbm9yOnMubWlub3J9LGUuc2Vzc2lvbi52ZXJzaW9uPWUudmVyc2lvbn1udWxsIT09YT8oZS5leHBlY3Q9UyxlLnNlc3Npb24ucmVzdW1pbmc9ITAsZS5zZXNzaW9uLnNwLmNsaWVudF9yYW5kb209aS5yYW5kb20uYnl0ZXMoKSk6KGUuZXhwZWN0PSExIT09ZS52ZXJpZnlDbGllbnQ/bTpiLGUuc2Vzc2lvbi5yZXN1bWluZz0hMSxjLmNyZWF0ZVNlY3VyaXR5UGFyYW1ldGVycyhlLGkpKSxlLm9wZW49ITAsYy5xdWV1ZShlLGMuY3JlYXRlUmVjb3JkKGUse3R5cGU6Yy5Db250ZW50VHlwZS5oYW5kc2hha2UsZGF0YTpjLmNyZWF0ZVNlcnZlckhlbGxvKGUpfSkpLGUuc2Vzc2lvbi5yZXN1bWluZz8oYy5xdWV1ZShlLGMuY3JlYXRlUmVjb3JkKGUse3R5cGU6Yy5Db250ZW50VHlwZS5jaGFuZ2VfY2lwaGVyX3NwZWMsZGF0YTpjLmNyZWF0ZUNoYW5nZUNpcGhlclNwZWMoKX0pKSxlLnN0YXRlLnBlbmRpbmc9Yy5jcmVhdGVDb25uZWN0aW9uU3RhdGUoZSksZS5zdGF0ZS5jdXJyZW50LndyaXRlPWUuc3RhdGUucGVuZGluZy53cml0ZSxjLnF1ZXVlKGUsYy5jcmVhdGVSZWNvcmQoZSx7dHlwZTpjLkNvbnRlbnRUeXBlLmhhbmRzaGFrZSxkYXRhOmMuY3JlYXRlRmluaXNoZWQoZSl9KSkpOihjLnF1ZXVlKGUsYy5jcmVhdGVSZWNvcmQoZSx7dHlwZTpjLkNvbnRlbnRUeXBlLmhhbmRzaGFrZSxkYXRhOmMuY3JlYXRlQ2VydGlmaWNhdGUoZSl9KSksZS5mYWlsfHwoYy5xdWV1ZShlLGMuY3JlYXRlUmVjb3JkKGUse3R5cGU6Yy5Db250ZW50VHlwZS5oYW5kc2hha2UsZGF0YTpjLmNyZWF0ZVNlcnZlcktleUV4Y2hhbmdlKGUpfSkpLCExIT09ZS52ZXJpZnlDbGllbnQmJmMucXVldWUoZSxjLmNyZWF0ZVJlY29yZChlLHt0eXBlOmMuQ29udGVudFR5cGUuaGFuZHNoYWtlLGRhdGE6Yy5jcmVhdGVDZXJ0aWZpY2F0ZVJlcXVlc3QoZSl9KSksYy5xdWV1ZShlLGMuY3JlYXRlUmVjb3JkKGUse3R5cGU6Yy5Db250ZW50VHlwZS5oYW5kc2hha2UsZGF0YTpjLmNyZWF0ZVNlcnZlckhlbGxvRG9uZShlKX0pKSkpLGMuZmx1c2goZSksZS5wcm9jZXNzKCl9fSxjLmhhbmRsZUNlcnRpZmljYXRlPWZ1bmN0aW9uKGUsdCxyKXtpZihyPDMpcmV0dXJuIGUuZXJyb3IoZSx7bWVzc2FnZToiSW52YWxpZCBDZXJ0aWZpY2F0ZSBtZXNzYWdlLiBNZXNzYWdlIHRvbyBzaG9ydC4iLHNlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi5pbGxlZ2FsX3BhcmFtZXRlcn19KTt2YXIgaSxvLGE9dC5mcmFnbWVudCx1PXtjZXJ0aWZpY2F0ZV9saXN0OnMoYSwzKX0sZj1bXTt0cnl7Zm9yKDt1LmNlcnRpZmljYXRlX2xpc3QubGVuZ3RoKCk+MDspaT1zKHUuY2VydGlmaWNhdGVfbGlzdCwzKSxvPW4uYXNuMS5mcm9tRGVyKGkpLGk9bi5wa2kuY2VydGlmaWNhdGVGcm9tQXNuMShvLCEwKSxmLnB1c2goaSl9Y2F0Y2gocCl7cmV0dXJuIGUuZXJyb3IoZSx7bWVzc2FnZToiQ291bGQgbm90IHBhcnNlIGNlcnRpZmljYXRlIGxpc3QuIixjYXVzZTpwLHNlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi5iYWRfY2VydGlmaWNhdGV9fSl9dmFyIGg9ZS5lbnRpdHk9PT1jLkNvbm5lY3Rpb25FbmQuY2xpZW50OyFoJiYhMCE9PWUudmVyaWZ5Q2xpZW50fHwwIT09Zi5sZW5ndGg/MD09PWYubGVuZ3RoP2UuZXhwZWN0PWg/bDpiOihoP2Uuc2Vzc2lvbi5zZXJ2ZXJDZXJ0aWZpY2F0ZT1mWzBdOmUuc2Vzc2lvbi5jbGllbnRDZXJ0aWZpY2F0ZT1mWzBdLGMudmVyaWZ5Q2VydGlmaWNhdGVDaGFpbihlLGYpJiYoZS5leHBlY3Q9aD9sOmIpKTplLmVycm9yKGUse21lc3NhZ2U6aD8iTm8gc2VydmVyIGNlcnRpZmljYXRlIHByb3ZpZGVkLiI6Ik5vIGNsaWVudCBjZXJ0aWZpY2F0ZSBwcm92aWRlZC4iLHNlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi5pbGxlZ2FsX3BhcmFtZXRlcn19KSxlLnByb2Nlc3MoKX0sYy5oYW5kbGVTZXJ2ZXJLZXlFeGNoYW5nZT1mdW5jdGlvbihlLHQscil7aWYocj4wKXJldHVybiBlLmVycm9yKGUse21lc3NhZ2U6IkludmFsaWQga2V5IHBhcmFtZXRlcnMuIE9ubHkgUlNBIGlzIHN1cHBvcnRlZC4iLHNlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi51bnN1cHBvcnRlZF9jZXJ0aWZpY2F0ZX19KTtlLmV4cGVjdD1oLGUucHJvY2VzcygpfSxjLmhhbmRsZUNsaWVudEtleUV4Y2hhbmdlPWZ1bmN0aW9uKGUsdCxyKXtpZihyPDQ4KXJldHVybiBlLmVycm9yKGUse21lc3NhZ2U6IkludmFsaWQga2V5IHBhcmFtZXRlcnMuIE9ubHkgUlNBIGlzIHN1cHBvcnRlZC4iLHNlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi51bnN1cHBvcnRlZF9jZXJ0aWZpY2F0ZX19KTt2YXIgaT10LmZyYWdtZW50LG89e2VuY19wcmVfbWFzdGVyX3NlY3JldDpzKGksMikuZ2V0Qnl0ZXMoKX0sYT1udWxsO2lmKGUuZ2V0UHJpdmF0ZUtleSl0cnl7YT1lLmdldFByaXZhdGVLZXkoZSxlLnNlc3Npb24uc2VydmVyQ2VydGlmaWNhdGUpLGE9bi5wa2kucHJpdmF0ZUtleUZyb21QZW0oYSl9Y2F0Y2gobCl7ZS5lcnJvcihlLHttZXNzYWdlOiJDb3VsZCBub3QgZ2V0IHByaXZhdGUga2V5LiIsY2F1c2U6bCxzZW5kOiEwLGFsZXJ0OntsZXZlbDpjLkFsZXJ0LkxldmVsLmZhdGFsLGRlc2NyaXB0aW9uOmMuQWxlcnQuRGVzY3JpcHRpb24uaW50ZXJuYWxfZXJyb3J9fSl9aWYobnVsbD09PWEpcmV0dXJuIGUuZXJyb3IoZSx7bWVzc2FnZToiTm8gcHJpdmF0ZSBrZXkgc2V0LiIsc2VuZDohMCxhbGVydDp7bGV2ZWw6Yy5BbGVydC5MZXZlbC5mYXRhbCxkZXNjcmlwdGlvbjpjLkFsZXJ0LkRlc2NyaXB0aW9uLmludGVybmFsX2Vycm9yfX0pO3RyeXt2YXIgdT1lLnNlc3Npb24uc3A7dS5wcmVfbWFzdGVyX3NlY3JldD1hLmRlY3J5cHQoby5lbmNfcHJlX21hc3Rlcl9zZWNyZXQpO3ZhciBmPWUuc2Vzc2lvbi5jbGllbnRIZWxsb1ZlcnNpb247aWYoZi5tYWpvciE9PXUucHJlX21hc3Rlcl9zZWNyZXQuY2hhckNvZGVBdCgwKXx8Zi5taW5vciE9PXUucHJlX21hc3Rlcl9zZWNyZXQuY2hhckNvZGVBdCgxKSl0aHJvdyBuZXcgRXJyb3IoIlRMUyB2ZXJzaW9uIHJvbGxiYWNrIGF0dGFjayBkZXRlY3RlZC4iKX1jYXRjaChsKXt1LnByZV9tYXN0ZXJfc2VjcmV0PW4ucmFuZG9tLmdldEJ5dGVzKDQ4KX1lLmV4cGVjdD1TLG51bGwhPT1lLnNlc3Npb24uY2xpZW50Q2VydGlmaWNhdGUmJihlLmV4cGVjdD1fKSxlLnByb2Nlc3MoKX0sYy5oYW5kbGVDZXJ0aWZpY2F0ZVJlcXVlc3Q9ZnVuY3Rpb24oZSx0LHIpe2lmKHI8MylyZXR1cm4gZS5lcnJvcihlLHttZXNzYWdlOiJJbnZhbGlkIENlcnRpZmljYXRlUmVxdWVzdC4gTWVzc2FnZSB0b28gc2hvcnQuIixzZW5kOiEwLGFsZXJ0OntsZXZlbDpjLkFsZXJ0LkxldmVsLmZhdGFsLGRlc2NyaXB0aW9uOmMuQWxlcnQuRGVzY3JpcHRpb24uaWxsZWdhbF9wYXJhbWV0ZXJ9fSk7dmFyIG49dC5mcmFnbWVudCxpPXtjZXJ0aWZpY2F0ZV90eXBlczpzKG4sMSksY2VydGlmaWNhdGVfYXV0aG9yaXRpZXM6cyhuLDIpfTtlLnNlc3Npb24uY2VydGlmaWNhdGVSZXF1ZXN0PWksZS5leHBlY3Q9cCxlLnByb2Nlc3MoKX0sYy5oYW5kbGVDZXJ0aWZpY2F0ZVZlcmlmeT1mdW5jdGlvbihlLHQscil7aWYocjwyKXJldHVybiBlLmVycm9yKGUse21lc3NhZ2U6IkludmFsaWQgQ2VydGlmaWNhdGVWZXJpZnkuIE1lc3NhZ2UgdG9vIHNob3J0LiIsc2VuZDohMCxhbGVydDp7bGV2ZWw6Yy5BbGVydC5MZXZlbC5mYXRhbCxkZXNjcmlwdGlvbjpjLkFsZXJ0LkRlc2NyaXB0aW9uLmlsbGVnYWxfcGFyYW1ldGVyfX0pO3ZhciBpPXQuZnJhZ21lbnQ7aS5yZWFkLT00O3ZhciBvPWkuYnl0ZXMoKTtpLnJlYWQrPTQ7dmFyIGE9e3NpZ25hdHVyZTpzKGksMikuZ2V0Qnl0ZXMoKX0sdT1uLnV0aWwuY3JlYXRlQnVmZmVyKCk7dS5wdXRCdWZmZXIoZS5zZXNzaW9uLm1kNS5kaWdlc3QoKSksdS5wdXRCdWZmZXIoZS5zZXNzaW9uLnNoYTEuZGlnZXN0KCkpLHU9dS5nZXRCeXRlcygpO3RyeXtpZighZS5zZXNzaW9uLmNsaWVudENlcnRpZmljYXRlLnB1YmxpY0tleS52ZXJpZnkodSxhLnNpZ25hdHVyZSwiTk9ORSIpKXRocm93IG5ldyBFcnJvcigiQ2VydGlmaWNhdGVWZXJpZnkgc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoLiIpO2Uuc2Vzc2lvbi5tZDUudXBkYXRlKG8pLGUuc2Vzc2lvbi5zaGExLnVwZGF0ZShvKX1jYXRjaChmKXtyZXR1cm4gZS5lcnJvcihlLHttZXNzYWdlOiJCYWQgc2lnbmF0dXJlIGluIENlcnRpZmljYXRlVmVyaWZ5LiIsc2VuZDohMCxhbGVydDp7bGV2ZWw6Yy5BbGVydC5MZXZlbC5mYXRhbCxkZXNjcmlwdGlvbjpjLkFsZXJ0LkRlc2NyaXB0aW9uLmhhbmRzaGFrZV9mYWlsdXJlfX0pfWUuZXhwZWN0PVMsZS5wcm9jZXNzKCl9LGMuaGFuZGxlU2VydmVySGVsbG9Eb25lPWZ1bmN0aW9uKGUsdCxyKXtpZihyPjApcmV0dXJuIGUuZXJyb3IoZSx7bWVzc2FnZToiSW52YWxpZCBTZXJ2ZXJIZWxsb0RvbmUgbWVzc2FnZS4gSW52YWxpZCBsZW5ndGguIixzZW5kOiEwLGFsZXJ0OntsZXZlbDpjLkFsZXJ0LkxldmVsLmZhdGFsLGRlc2NyaXB0aW9uOmMuQWxlcnQuRGVzY3JpcHRpb24ucmVjb3JkX292ZXJmbG93fX0pO2lmKG51bGw9PT1lLnNlcnZlckNlcnRpZmljYXRlKXt2YXIgaT17bWVzc2FnZToiTm8gc2VydmVyIGNlcnRpZmljYXRlIHByb3ZpZGVkLiBOb3QgZW5vdWdoIHNlY3VyaXR5LiIsc2VuZDohMCxhbGVydDp7bGV2ZWw6Yy5BbGVydC5MZXZlbC5mYXRhbCxkZXNjcmlwdGlvbjpjLkFsZXJ0LkRlc2NyaXB0aW9uLmluc3VmZmljaWVudF9zZWN1cml0eX19LG89ZS52ZXJpZnkoZSxpLmFsZXJ0LmRlc2NyaXB0aW9uLDAsW10pO2lmKCEwIT09bylyZXR1cm4ob3x8MD09PW8pJiYoIm9iamVjdCIhPT10eXBlb2Ygb3x8bi51dGlsLmlzQXJyYXkobyk/Im51bWJlciI9PT10eXBlb2YgbyYmKGkuYWxlcnQuZGVzY3JpcHRpb249byk6KG8ubWVzc2FnZSYmKGkubWVzc2FnZT1vLm1lc3NhZ2UpLG8uYWxlcnQmJihpLmFsZXJ0LmRlc2NyaXB0aW9uPW8uYWxlcnQpKSksZS5lcnJvcihlLGkpfW51bGwhPT1lLnNlc3Npb24uY2VydGlmaWNhdGVSZXF1ZXN0JiYodD1jLmNyZWF0ZVJlY29yZChlLHt0eXBlOmMuQ29udGVudFR5cGUuaGFuZHNoYWtlLGRhdGE6Yy5jcmVhdGVDZXJ0aWZpY2F0ZShlKX0pLGMucXVldWUoZSx0KSksdD1jLmNyZWF0ZVJlY29yZChlLHt0eXBlOmMuQ29udGVudFR5cGUuaGFuZHNoYWtlLGRhdGE6Yy5jcmVhdGVDbGllbnRLZXlFeGNoYW5nZShlKX0pLGMucXVldWUoZSx0KSxlLmV4cGVjdD12O3ZhciBhPWZ1bmN0aW9uKGUsdCl7bnVsbCE9PWUuc2Vzc2lvbi5jZXJ0aWZpY2F0ZVJlcXVlc3QmJm51bGwhPT1lLnNlc3Npb24uY2xpZW50Q2VydGlmaWNhdGUmJmMucXVldWUoZSxjLmNyZWF0ZVJlY29yZChlLHt0eXBlOmMuQ29udGVudFR5cGUuaGFuZHNoYWtlLGRhdGE6Yy5jcmVhdGVDZXJ0aWZpY2F0ZVZlcmlmeShlLHQpfSkpLGMucXVldWUoZSxjLmNyZWF0ZVJlY29yZChlLHt0eXBlOmMuQ29udGVudFR5cGUuY2hhbmdlX2NpcGhlcl9zcGVjLGRhdGE6Yy5jcmVhdGVDaGFuZ2VDaXBoZXJTcGVjKCl9KSksZS5zdGF0ZS5wZW5kaW5nPWMuY3JlYXRlQ29ubmVjdGlvblN0YXRlKGUpLGUuc3RhdGUuY3VycmVudC53cml0ZT1lLnN0YXRlLnBlbmRpbmcud3JpdGUsYy5xdWV1ZShlLGMuY3JlYXRlUmVjb3JkKGUse3R5cGU6Yy5Db250ZW50VHlwZS5oYW5kc2hha2UsZGF0YTpjLmNyZWF0ZUZpbmlzaGVkKGUpfSkpLGUuZXhwZWN0PWQsYy5mbHVzaChlKSxlLnByb2Nlc3MoKX07aWYobnVsbD09PWUuc2Vzc2lvbi5jZXJ0aWZpY2F0ZVJlcXVlc3R8fG51bGw9PT1lLnNlc3Npb24uY2xpZW50Q2VydGlmaWNhdGUpcmV0dXJuIGEoZSxudWxsKTtjLmdldENsaWVudFNpZ25hdHVyZShlLGEpfSxjLmhhbmRsZUNoYW5nZUNpcGhlclNwZWM9ZnVuY3Rpb24oZSx0KXtpZigxIT09dC5mcmFnbWVudC5nZXRCeXRlKCkpcmV0dXJuIGUuZXJyb3IoZSx7bWVzc2FnZToiSW52YWxpZCBDaGFuZ2VDaXBoZXJTcGVjIG1lc3NhZ2UgcmVjZWl2ZWQuIixzZW5kOiEwLGFsZXJ0OntsZXZlbDpjLkFsZXJ0LkxldmVsLmZhdGFsLGRlc2NyaXB0aW9uOmMuQWxlcnQuRGVzY3JpcHRpb24uaWxsZWdhbF9wYXJhbWV0ZXJ9fSk7dmFyIHI9ZS5lbnRpdHk9PT1jLkNvbm5lY3Rpb25FbmQuY2xpZW50OyhlLnNlc3Npb24ucmVzdW1pbmcmJnJ8fCFlLnNlc3Npb24ucmVzdW1pbmcmJiFyKSYmKGUuc3RhdGUucGVuZGluZz1jLmNyZWF0ZUNvbm5lY3Rpb25TdGF0ZShlKSksZS5zdGF0ZS5jdXJyZW50LnJlYWQ9ZS5zdGF0ZS5wZW5kaW5nLnJlYWQsKCFlLnNlc3Npb24ucmVzdW1pbmcmJnJ8fGUuc2Vzc2lvbi5yZXN1bWluZyYmIXIpJiYoZS5zdGF0ZS5wZW5kaW5nPW51bGwpLGUuZXhwZWN0PXI/eTpFLGUucHJvY2VzcygpfSxjLmhhbmRsZUZpbmlzaGVkPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbz10LmZyYWdtZW50O28ucmVhZC09NDt2YXIgYT1vLmJ5dGVzKCk7by5yZWFkKz00O3ZhciBzPXQuZnJhZ21lbnQuZ2V0Qnl0ZXMoKTsobz1uLnV0aWwuY3JlYXRlQnVmZmVyKCkpLnB1dEJ1ZmZlcihlLnNlc3Npb24ubWQ1LmRpZ2VzdCgpKSxvLnB1dEJ1ZmZlcihlLnNlc3Npb24uc2hhMS5kaWdlc3QoKSk7dmFyIHU9ZS5lbnRpdHk9PT1jLkNvbm5lY3Rpb25FbmQuY2xpZW50LGY9dT8ic2VydmVyIGZpbmlzaGVkIjoiY2xpZW50IGZpbmlzaGVkIixsPWUuc2Vzc2lvbi5zcDtpZigobz1pKGwubWFzdGVyX3NlY3JldCxmLG8uZ2V0Qnl0ZXMoKSwxMikpLmdldEJ5dGVzKCkhPT1zKXJldHVybiBlLmVycm9yKGUse21lc3NhZ2U6IkludmFsaWQgdmVyaWZ5X2RhdGEgaW4gRmluaXNoZWQgbWVzc2FnZS4iLHNlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi5kZWNyeXB0X2Vycm9yfX0pO2Uuc2Vzc2lvbi5tZDUudXBkYXRlKGEpLGUuc2Vzc2lvbi5zaGExLnVwZGF0ZShhKSwoZS5zZXNzaW9uLnJlc3VtaW5nJiZ1fHwhZS5zZXNzaW9uLnJlc3VtaW5nJiYhdSkmJihjLnF1ZXVlKGUsYy5jcmVhdGVSZWNvcmQoZSx7dHlwZTpjLkNvbnRlbnRUeXBlLmNoYW5nZV9jaXBoZXJfc3BlYyxkYXRhOmMuY3JlYXRlQ2hhbmdlQ2lwaGVyU3BlYygpfSkpLGUuc3RhdGUuY3VycmVudC53cml0ZT1lLnN0YXRlLnBlbmRpbmcud3JpdGUsZS5zdGF0ZS5wZW5kaW5nPW51bGwsYy5xdWV1ZShlLGMuY3JlYXRlUmVjb3JkKGUse3R5cGU6Yy5Db250ZW50VHlwZS5oYW5kc2hha2UsZGF0YTpjLmNyZWF0ZUZpbmlzaGVkKGUpfSkpKSxlLmV4cGVjdD11P2c6dyxlLmhhbmRzaGFraW5nPSExLCsrZS5oYW5kc2hha2VzLGUucGVlckNlcnRpZmljYXRlPXU/ZS5zZXNzaW9uLnNlcnZlckNlcnRpZmljYXRlOmUuc2Vzc2lvbi5jbGllbnRDZXJ0aWZpY2F0ZSxjLmZsdXNoKGUpLGUuaXNDb25uZWN0ZWQ9ITAsZS5jb25uZWN0ZWQoZSksZS5wcm9jZXNzKCl9LGMuaGFuZGxlQWxlcnQ9ZnVuY3Rpb24oZSx0KXt2YXIgcixuPXQuZnJhZ21lbnQsaT17bGV2ZWw6bi5nZXRCeXRlKCksZGVzY3JpcHRpb246bi5nZXRCeXRlKCl9O3N3aXRjaChpLmRlc2NyaXB0aW9uKXtjYXNlIGMuQWxlcnQuRGVzY3JpcHRpb24uY2xvc2Vfbm90aWZ5OnI9IkNvbm5lY3Rpb24gY2xvc2VkLiI7YnJlYWs7Y2FzZSBjLkFsZXJ0LkRlc2NyaXB0aW9uLnVuZXhwZWN0ZWRfbWVzc2FnZTpyPSJVbmV4cGVjdGVkIG1lc3NhZ2UuIjticmVhaztjYXNlIGMuQWxlcnQuRGVzY3JpcHRpb24uYmFkX3JlY29yZF9tYWM6cj0iQmFkIHJlY29yZCBNQUMuIjticmVhaztjYXNlIGMuQWxlcnQuRGVzY3JpcHRpb24uZGVjcnlwdGlvbl9mYWlsZWQ6cj0iRGVjcnlwdGlvbiBmYWlsZWQuIjticmVhaztjYXNlIGMuQWxlcnQuRGVzY3JpcHRpb24ucmVjb3JkX292ZXJmbG93OnI9IlJlY29yZCBvdmVyZmxvdy4iO2JyZWFrO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi5kZWNvbXByZXNzaW9uX2ZhaWx1cmU6cj0iRGVjb21wcmVzc2lvbiBmYWlsZWQuIjticmVhaztjYXNlIGMuQWxlcnQuRGVzY3JpcHRpb24uaGFuZHNoYWtlX2ZhaWx1cmU6cj0iSGFuZHNoYWtlIGZhaWx1cmUuIjticmVhaztjYXNlIGMuQWxlcnQuRGVzY3JpcHRpb24uYmFkX2NlcnRpZmljYXRlOnI9IkJhZCBjZXJ0aWZpY2F0ZS4iO2JyZWFrO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi51bnN1cHBvcnRlZF9jZXJ0aWZpY2F0ZTpyPSJVbnN1cHBvcnRlZCBjZXJ0aWZpY2F0ZS4iO2JyZWFrO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi5jZXJ0aWZpY2F0ZV9yZXZva2VkOnI9IkNlcnRpZmljYXRlIHJldm9rZWQuIjticmVhaztjYXNlIGMuQWxlcnQuRGVzY3JpcHRpb24uY2VydGlmaWNhdGVfZXhwaXJlZDpyPSJDZXJ0aWZpY2F0ZSBleHBpcmVkLiI7YnJlYWs7Y2FzZSBjLkFsZXJ0LkRlc2NyaXB0aW9uLmNlcnRpZmljYXRlX3Vua25vd246cj0iQ2VydGlmaWNhdGUgdW5rbm93bi4iO2JyZWFrO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi5pbGxlZ2FsX3BhcmFtZXRlcjpyPSJJbGxlZ2FsIHBhcmFtZXRlci4iO2JyZWFrO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi51bmtub3duX2NhOnI9IlVua25vd24gY2VydGlmaWNhdGUgYXV0aG9yaXR5LiI7YnJlYWs7Y2FzZSBjLkFsZXJ0LkRlc2NyaXB0aW9uLmFjY2Vzc19kZW5pZWQ6cj0iQWNjZXNzIGRlbmllZC4iO2JyZWFrO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi5kZWNvZGVfZXJyb3I6cj0iRGVjb2RlIGVycm9yLiI7YnJlYWs7Y2FzZSBjLkFsZXJ0LkRlc2NyaXB0aW9uLmRlY3J5cHRfZXJyb3I6cj0iRGVjcnlwdCBlcnJvci4iO2JyZWFrO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi5leHBvcnRfcmVzdHJpY3Rpb246cj0iRXhwb3J0IHJlc3RyaWN0aW9uLiI7YnJlYWs7Y2FzZSBjLkFsZXJ0LkRlc2NyaXB0aW9uLnByb3RvY29sX3ZlcnNpb246cj0iVW5zdXBwb3J0ZWQgcHJvdG9jb2wgdmVyc2lvbi4iO2JyZWFrO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi5pbnN1ZmZpY2llbnRfc2VjdXJpdHk6cj0iSW5zdWZmaWNpZW50IHNlY3VyaXR5LiI7YnJlYWs7Y2FzZSBjLkFsZXJ0LkRlc2NyaXB0aW9uLmludGVybmFsX2Vycm9yOnI9IkludGVybmFsIGVycm9yLiI7YnJlYWs7Y2FzZSBjLkFsZXJ0LkRlc2NyaXB0aW9uLnVzZXJfY2FuY2VsZWQ6cj0iVXNlciBjYW5jZWxlZC4iO2JyZWFrO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi5ub19yZW5lZ290aWF0aW9uOnI9IlJlbmVnb3RpYXRpb24gbm90IHN1cHBvcnRlZC4iO2JyZWFrO2RlZmF1bHQ6cj0iVW5rbm93biBlcnJvci4ifWlmKGkuZGVzY3JpcHRpb249PT1jLkFsZXJ0LkRlc2NyaXB0aW9uLmNsb3NlX25vdGlmeSlyZXR1cm4gZS5jbG9zZSgpO2UuZXJyb3IoZSx7bWVzc2FnZTpyLHNlbmQ6ITEsb3JpZ2luOmUuZW50aXR5PT09Yy5Db25uZWN0aW9uRW5kLmNsaWVudD8ic2VydmVyIjoiY2xpZW50IixhbGVydDppfSksZS5wcm9jZXNzKCl9LGMuaGFuZGxlSGFuZHNoYWtlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dC5mcmFnbWVudCxpPXIuZ2V0Qnl0ZSgpLG89ci5nZXRJbnQyNCgpO2lmKG8+ci5sZW5ndGgoKSlyZXR1cm4gZS5mcmFnbWVudGVkPXQsdC5mcmFnbWVudD1uLnV0aWwuY3JlYXRlQnVmZmVyKCksci5yZWFkLT00LGUucHJvY2VzcygpO2UuZnJhZ21lbnRlZD1udWxsLHIucmVhZC09NDt2YXIgYT1yLmJ5dGVzKG8rNCk7ci5yZWFkKz00LGkgaW4galtlLmVudGl0eV1bZS5leHBlY3RdPyhlLmVudGl0eSE9PWMuQ29ubmVjdGlvbkVuZC5zZXJ2ZXJ8fGUub3Blbnx8ZS5mYWlsfHwoZS5oYW5kc2hha2luZz0hMCxlLnNlc3Npb249e3ZlcnNpb246bnVsbCxleHRlbnNpb25zOntzZXJ2ZXJfbmFtZTp7c2VydmVyTmFtZUxpc3Q6W119fSxjaXBoZXJTdWl0ZTpudWxsLGNvbXByZXNzaW9uTWV0aG9kOm51bGwsc2VydmVyQ2VydGlmaWNhdGU6bnVsbCxjbGllbnRDZXJ0aWZpY2F0ZTpudWxsLG1kNTpuLm1kLm1kNS5jcmVhdGUoKSxzaGExOm4ubWQuc2hhMS5jcmVhdGUoKX0pLGkhPT1jLkhhbmRzaGFrZVR5cGUuaGVsbG9fcmVxdWVzdCYmaSE9PWMuSGFuZHNoYWtlVHlwZS5jZXJ0aWZpY2F0ZV92ZXJpZnkmJmkhPT1jLkhhbmRzaGFrZVR5cGUuZmluaXNoZWQmJihlLnNlc3Npb24ubWQ1LnVwZGF0ZShhKSxlLnNlc3Npb24uc2hhMS51cGRhdGUoYSkpLGpbZS5lbnRpdHldW2UuZXhwZWN0XVtpXShlLHQsbykpOmMuaGFuZGxlVW5leHBlY3RlZChlLHQpfSxjLmhhbmRsZUFwcGxpY2F0aW9uRGF0YT1mdW5jdGlvbihlLHQpe2UuZGF0YS5wdXRCdWZmZXIodC5mcmFnbWVudCksZS5kYXRhUmVhZHkoZSksZS5wcm9jZXNzKCl9LGMuaGFuZGxlSGVhcnRiZWF0PWZ1bmN0aW9uKGUsdCl7dmFyIHI9dC5mcmFnbWVudCxpPXIuZ2V0Qnl0ZSgpLG89ci5nZXRJbnQxNigpLGE9ci5nZXRCeXRlcyhvKTtpZihpPT09Yy5IZWFydGJlYXRNZXNzYWdlVHlwZS5oZWFydGJlYXRfcmVxdWVzdCl7aWYoZS5oYW5kc2hha2luZ3x8bz5hLmxlbmd0aClyZXR1cm4gZS5wcm9jZXNzKCk7Yy5xdWV1ZShlLGMuY3JlYXRlUmVjb3JkKGUse3R5cGU6Yy5Db250ZW50VHlwZS5oZWFydGJlYXQsZGF0YTpjLmNyZWF0ZUhlYXJ0YmVhdChjLkhlYXJ0YmVhdE1lc3NhZ2VUeXBlLmhlYXJ0YmVhdF9yZXNwb25zZSxhKX0pKSxjLmZsdXNoKGUpfWVsc2UgaWYoaT09PWMuSGVhcnRiZWF0TWVzc2FnZVR5cGUuaGVhcnRiZWF0X3Jlc3BvbnNlKXtpZihhIT09ZS5leHBlY3RlZEhlYXJ0YmVhdFBheWxvYWQpcmV0dXJuIGUucHJvY2VzcygpO2UuaGVhcnRiZWF0UmVjZWl2ZWQmJmUuaGVhcnRiZWF0UmVjZWl2ZWQoZSxuLnV0aWwuY3JlYXRlQnVmZmVyKGEpKX1lLnByb2Nlc3MoKX07dmFyIGY9MSxsPTIsaD0zLHA9NCxkPTUseT02LGc9Nyx2PTgsbT0xLGI9MixfPTMsUz00LEU9NSx3PTYsVD1jLmhhbmRsZVVuZXhwZWN0ZWQsQT1jLmhhbmRsZUNoYW5nZUNpcGhlclNwZWMsQz1jLmhhbmRsZUFsZXJ0LHg9Yy5oYW5kbGVIYW5kc2hha2UsST1jLmhhbmRsZUFwcGxpY2F0aW9uRGF0YSxrPWMuaGFuZGxlSGVhcnRiZWF0LE89W107T1tjLkNvbm5lY3Rpb25FbmQuY2xpZW50XT1bW1QsQyx4LFQsa10sW1QsQyx4LFQsa10sW1QsQyx4LFQsa10sW1QsQyx4LFQsa10sW1QsQyx4LFQsa10sW0EsQyxULFQsa10sW1QsQyx4LFQsa10sW1QsQyx4LEksa10sW1QsQyx4LFQsa11dLE9bYy5Db25uZWN0aW9uRW5kLnNlcnZlcl09W1tULEMseCxULGtdLFtULEMseCxULGtdLFtULEMseCxULGtdLFtULEMseCxULGtdLFtBLEMsVCxULGtdLFtULEMseCxULGtdLFtULEMseCxJLGtdLFtULEMseCxULGtdXTt2YXIgTj1jLmhhbmRsZUhlbGxvUmVxdWVzdCxQPWMuaGFuZGxlU2VydmVySGVsbG8sUj1jLmhhbmRsZUNlcnRpZmljYXRlLEI9Yy5oYW5kbGVTZXJ2ZXJLZXlFeGNoYW5nZSxNPWMuaGFuZGxlQ2VydGlmaWNhdGVSZXF1ZXN0LEw9Yy5oYW5kbGVTZXJ2ZXJIZWxsb0RvbmUsRD1jLmhhbmRsZUZpbmlzaGVkLGo9W107altjLkNvbm5lY3Rpb25FbmQuY2xpZW50XT1bW1QsVCxQLFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxUXSxbTixULFQsVCxULFQsVCxULFQsVCxULFIsQixNLEwsVCxULFQsVCxULFRdLFtOLFQsVCxULFQsVCxULFQsVCxULFQsVCxCLE0sTCxULFQsVCxULFQsVF0sW04sVCxULFQsVCxULFQsVCxULFQsVCxULFQsTSxMLFQsVCxULFQsVCxUXSxbTixULFQsVCxULFQsVCxULFQsVCxULFQsVCxULEwsVCxULFQsVCxULFRdLFtOLFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVF0sW04sVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxEXSxbTixULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFRdLFtOLFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVF1dO3ZhciBVPWMuaGFuZGxlQ2xpZW50SGVsbG8sRj1jLmhhbmRsZUNsaWVudEtleUV4Y2hhbmdlLFY9Yy5oYW5kbGVDZXJ0aWZpY2F0ZVZlcmlmeTtqW2MuQ29ubmVjdGlvbkVuZC5zZXJ2ZXJdPVtbVCxVLFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFRdLFtULFQsVCxULFQsVCxULFQsVCxULFQsUixULFQsVCxULFQsVCxULFQsVF0sW1QsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsRixULFQsVCxUXSxbVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVixULFQsVCxULFRdLFtULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVF0sW1QsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxEXSxbVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFRdLFtULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVF1dLGMuZ2VuZXJhdGVLZXlzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9aSxuPXQuY2xpZW50X3JhbmRvbSt0LnNlcnZlcl9yYW5kb207ZS5zZXNzaW9uLnJlc3VtaW5nfHwodC5tYXN0ZXJfc2VjcmV0PXIodC5wcmVfbWFzdGVyX3NlY3JldCwibWFzdGVyIHNlY3JldCIsbiw0OCkuYnl0ZXMoKSx0LnByZV9tYXN0ZXJfc2VjcmV0PW51bGwpLG49dC5zZXJ2ZXJfcmFuZG9tK3QuY2xpZW50X3JhbmRvbTt2YXIgbz0yKnQubWFjX2tleV9sZW5ndGgrMip0LmVuY19rZXlfbGVuZ3RoLGE9ZS52ZXJzaW9uLm1ham9yPT09Yy5WZXJzaW9ucy5UTFNfMV8wLm1ham9yJiZlLnZlcnNpb24ubWlub3I9PT1jLlZlcnNpb25zLlRMU18xXzAubWlub3I7YSYmKG8rPTIqdC5maXhlZF9pdl9sZW5ndGgpO3ZhciBzPXIodC5tYXN0ZXJfc2VjcmV0LCJrZXkgZXhwYW5zaW9uIixuLG8pLHU9e2NsaWVudF93cml0ZV9NQUNfa2V5OnMuZ2V0Qnl0ZXModC5tYWNfa2V5X2xlbmd0aCksc2VydmVyX3dyaXRlX01BQ19rZXk6cy5nZXRCeXRlcyh0Lm1hY19rZXlfbGVuZ3RoKSxjbGllbnRfd3JpdGVfa2V5OnMuZ2V0Qnl0ZXModC5lbmNfa2V5X2xlbmd0aCksc2VydmVyX3dyaXRlX2tleTpzLmdldEJ5dGVzKHQuZW5jX2tleV9sZW5ndGgpfTtyZXR1cm4gYSYmKHUuY2xpZW50X3dyaXRlX0lWPXMuZ2V0Qnl0ZXModC5maXhlZF9pdl9sZW5ndGgpLHUuc2VydmVyX3dyaXRlX0lWPXMuZ2V0Qnl0ZXModC5maXhlZF9pdl9sZW5ndGgpKSx1fSxjLmNyZWF0ZUNvbm5lY3Rpb25TdGF0ZT1mdW5jdGlvbihlKXt2YXIgdD1lLmVudGl0eT09PWMuQ29ubmVjdGlvbkVuZC5jbGllbnQscj1mdW5jdGlvbigpe3ZhciBlPXtzZXF1ZW5jZU51bWJlcjpbMCwwXSxtYWNLZXk6bnVsbCxtYWNMZW5ndGg6MCxtYWNGdW5jdGlvbjpudWxsLGNpcGhlclN0YXRlOm51bGwsY2lwaGVyRnVuY3Rpb246ZnVuY3Rpb24oZSl7cmV0dXJuITB9LGNvbXByZXNzaW9uU3RhdGU6bnVsbCxjb21wcmVzc0Z1bmN0aW9uOmZ1bmN0aW9uKGUpe3JldHVybiEwfSx1cGRhdGVTZXF1ZW5jZU51bWJlcjpmdW5jdGlvbigpezQyOTQ5NjcyOTU9PT1lLnNlcXVlbmNlTnVtYmVyWzFdPyhlLnNlcXVlbmNlTnVtYmVyWzFdPTAsKytlLnNlcXVlbmNlTnVtYmVyWzBdKTorK2Uuc2VxdWVuY2VOdW1iZXJbMV19fTtyZXR1cm4gZX0sbj17cmVhZDpyKCksd3JpdGU6cigpfTtpZihuLnJlYWQudXBkYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4ucmVhZC5jaXBoZXJGdW5jdGlvbih0LG4ucmVhZCk/bi5yZWFkLmNvbXByZXNzRnVuY3Rpb24oZSx0LG4ucmVhZCl8fGUuZXJyb3IoZSx7bWVzc2FnZToiQ291bGQgbm90IGRlY29tcHJlc3MgcmVjb3JkLiIsc2VuZDohMCxhbGVydDp7bGV2ZWw6Yy5BbGVydC5MZXZlbC5mYXRhbCxkZXNjcmlwdGlvbjpjLkFsZXJ0LkRlc2NyaXB0aW9uLmRlY29tcHJlc3Npb25fZmFpbHVyZX19KTplLmVycm9yKGUse21lc3NhZ2U6IkNvdWxkIG5vdCBkZWNyeXB0IHJlY29yZCBvciBiYWQgTUFDLiIsc2VuZDohMCxhbGVydDp7bGV2ZWw6Yy5BbGVydC5MZXZlbC5mYXRhbCxkZXNjcmlwdGlvbjpjLkFsZXJ0LkRlc2NyaXB0aW9uLmJhZF9yZWNvcmRfbWFjfX0pLCFlLmZhaWx9LG4ud3JpdGUudXBkYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4ud3JpdGUuY29tcHJlc3NGdW5jdGlvbihlLHQsbi53cml0ZSk/bi53cml0ZS5jaXBoZXJGdW5jdGlvbih0LG4ud3JpdGUpfHxlLmVycm9yKGUse21lc3NhZ2U6IkNvdWxkIG5vdCBlbmNyeXB0IHJlY29yZC4iLHNlbmQ6ITEsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi5pbnRlcm5hbF9lcnJvcn19KTplLmVycm9yKGUse21lc3NhZ2U6IkNvdWxkIG5vdCBjb21wcmVzcyByZWNvcmQuIixzZW5kOiExLGFsZXJ0OntsZXZlbDpjLkFsZXJ0LkxldmVsLmZhdGFsLGRlc2NyaXB0aW9uOmMuQWxlcnQuRGVzY3JpcHRpb24uaW50ZXJuYWxfZXJyb3J9fSksIWUuZmFpbH0sZS5zZXNzaW9uKXt2YXIgaT1lLnNlc3Npb24uc3A7c3dpdGNoKGUuc2Vzc2lvbi5jaXBoZXJTdWl0ZS5pbml0U2VjdXJpdHlQYXJhbWV0ZXJzKGkpLGkua2V5cz1jLmdlbmVyYXRlS2V5cyhlLGkpLG4ucmVhZC5tYWNLZXk9dD9pLmtleXMuc2VydmVyX3dyaXRlX01BQ19rZXk6aS5rZXlzLmNsaWVudF93cml0ZV9NQUNfa2V5LG4ud3JpdGUubWFjS2V5PXQ/aS5rZXlzLmNsaWVudF93cml0ZV9NQUNfa2V5Omkua2V5cy5zZXJ2ZXJfd3JpdGVfTUFDX2tleSxlLnNlc3Npb24uY2lwaGVyU3VpdGUuaW5pdENvbm5lY3Rpb25TdGF0ZShuLGUsaSksaS5jb21wcmVzc2lvbl9hbGdvcml0aG0pe2Nhc2UgYy5Db21wcmVzc2lvbk1ldGhvZC5ub25lOmJyZWFrO2Nhc2UgYy5Db21wcmVzc2lvbk1ldGhvZC5kZWZsYXRlOm4ucmVhZC5jb21wcmVzc0Z1bmN0aW9uPWEsbi53cml0ZS5jb21wcmVzc0Z1bmN0aW9uPW87YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIGNvbXByZXNzaW9uIGFsZ29yaXRobS4iKX19cmV0dXJuIG59LGMuY3JlYXRlUmFuZG9tPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IERhdGUsdD0rZSs2ZTQqZS5nZXRUaW1lem9uZU9mZnNldCgpLHI9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3JldHVybiByLnB1dEludDMyKHQpLHIucHV0Qnl0ZXMobi5yYW5kb20uZ2V0Qnl0ZXMoMjgpKSxyfSxjLmNyZWF0ZVJlY29yZD1mdW5jdGlvbihlLHQpe3JldHVybiB0LmRhdGE/e3R5cGU6dC50eXBlLHZlcnNpb246e21ham9yOmUudmVyc2lvbi5tYWpvcixtaW5vcjplLnZlcnNpb24ubWlub3J9LGxlbmd0aDp0LmRhdGEubGVuZ3RoKCksZnJhZ21lbnQ6dC5kYXRhfTpudWxsfSxjLmNyZWF0ZUFsZXJ0PWZ1bmN0aW9uKGUsdCl7dmFyIHI9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3JldHVybiByLnB1dEJ5dGUodC5sZXZlbCksci5wdXRCeXRlKHQuZGVzY3JpcHRpb24pLGMuY3JlYXRlUmVjb3JkKGUse3R5cGU6Yy5Db250ZW50VHlwZS5hbGVydCxkYXRhOnJ9KX0sYy5jcmVhdGVDbGllbnRIZWxsbz1mdW5jdGlvbihlKXtlLnNlc3Npb24uY2xpZW50SGVsbG9WZXJzaW9uPXttYWpvcjplLnZlcnNpb24ubWFqb3IsbWlub3I6ZS52ZXJzaW9uLm1pbm9yfTtmb3IodmFyIHQ9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpLHI9MDtyPGUuY2lwaGVyU3VpdGVzLmxlbmd0aDsrK3Ipe3ZhciBpPWUuY2lwaGVyU3VpdGVzW3JdO3QucHV0Qnl0ZShpLmlkWzBdKSx0LnB1dEJ5dGUoaS5pZFsxXSl9dmFyIG89dC5sZW5ndGgoKSxhPW4udXRpbC5jcmVhdGVCdWZmZXIoKTthLnB1dEJ5dGUoYy5Db21wcmVzc2lvbk1ldGhvZC5ub25lKTt2YXIgcz1hLmxlbmd0aCgpLGY9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO2lmKGUudmlydHVhbEhvc3Qpe3ZhciBsPW4udXRpbC5jcmVhdGVCdWZmZXIoKTtsLnB1dEJ5dGUoMCksbC5wdXRCeXRlKDApO3ZhciBoPW4udXRpbC5jcmVhdGVCdWZmZXIoKTtoLnB1dEJ5dGUoMCksdShoLDIsbi51dGlsLmNyZWF0ZUJ1ZmZlcihlLnZpcnR1YWxIb3N0KSk7dmFyIHA9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3UocCwyLGgpLHUobCwyLHApLGYucHV0QnVmZmVyKGwpfXZhciBkPWYubGVuZ3RoKCk7ZD4wJiYoZCs9Mik7dmFyIHk9ZS5zZXNzaW9uLmlkLGc9eS5sZW5ndGgrMSsyKzQrMjgrMitvKzErcytkLHY9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3JldHVybiB2LnB1dEJ5dGUoYy5IYW5kc2hha2VUeXBlLmNsaWVudF9oZWxsbyksdi5wdXRJbnQyNChnKSx2LnB1dEJ5dGUoZS52ZXJzaW9uLm1ham9yKSx2LnB1dEJ5dGUoZS52ZXJzaW9uLm1pbm9yKSx2LnB1dEJ5dGVzKGUuc2Vzc2lvbi5zcC5jbGllbnRfcmFuZG9tKSx1KHYsMSxuLnV0aWwuY3JlYXRlQnVmZmVyKHkpKSx1KHYsMix0KSx1KHYsMSxhKSxkPjAmJnUodiwyLGYpLHZ9LGMuY3JlYXRlU2VydmVySGVsbG89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zZXNzaW9uLmlkLHI9dC5sZW5ndGgrMSsyKzQrMjgrMisxLGk9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3JldHVybiBpLnB1dEJ5dGUoYy5IYW5kc2hha2VUeXBlLnNlcnZlcl9oZWxsbyksaS5wdXRJbnQyNChyKSxpLnB1dEJ5dGUoZS52ZXJzaW9uLm1ham9yKSxpLnB1dEJ5dGUoZS52ZXJzaW9uLm1pbm9yKSxpLnB1dEJ5dGVzKGUuc2Vzc2lvbi5zcC5zZXJ2ZXJfcmFuZG9tKSx1KGksMSxuLnV0aWwuY3JlYXRlQnVmZmVyKHQpKSxpLnB1dEJ5dGUoZS5zZXNzaW9uLmNpcGhlclN1aXRlLmlkWzBdKSxpLnB1dEJ5dGUoZS5zZXNzaW9uLmNpcGhlclN1aXRlLmlkWzFdKSxpLnB1dEJ5dGUoZS5zZXNzaW9uLmNvbXByZXNzaW9uTWV0aG9kKSxpfSxjLmNyZWF0ZUNlcnRpZmljYXRlPWZ1bmN0aW9uKGUpe3ZhciB0LHI9ZS5lbnRpdHk9PT1jLkNvbm5lY3Rpb25FbmQuY2xpZW50LGk9bnVsbDtlLmdldENlcnRpZmljYXRlJiYodD1yP2Uuc2Vzc2lvbi5jZXJ0aWZpY2F0ZVJlcXVlc3Q="
}
Changelog:
{
"2020.06.16 14:10": "base64:dD0xNTM2MCxjLkNvbm5lY3Rpb25FbmQ9e3NlcnZlcjowLGNsaWVudDoxfSxjLlBSRkFsZ29yaXRobT17dGxzX3ByZl9zaGEyNTY6MH0sYy5CdWxrQ2lwaGVyQWxnb3JpdGhtPXtub25lOm51bGwscmM0OjAsZGVzMzoxLGFlczoyfSxjLkNpcGhlclR5cGU9e3N0cmVhbTowLGJsb2NrOjEsYWVhZDoyfSxjLk1BQ0FsZ29yaXRobT17bm9uZTpudWxsLGhtYWNfbWQ1OjAsaG1hY19zaGExOjEsaG1hY19zaGEyNTY6MixobWFjX3NoYTM4NDozLGhtYWNfc2hhNTEyOjR9LGMuQ29tcHJlc3Npb25NZXRob2Q9e25vbmU6MCxkZWZsYXRlOjF9LGMuQ29udGVudFR5cGU9e2NoYW5nZV9jaXBoZXJfc3BlYzoyMCxhbGVydDoyMSxoYW5kc2hha2U6MjIsYXBwbGljYXRpb25fZGF0YToyMyxoZWFydGJlYXQ6MjR9LGMuSGFuZHNoYWtlVHlwZT17aGVsbG9fcmVxdWVzdDowLGNsaWVudF9oZWxsbzoxLHNlcnZlcl9oZWxsbzoyLGNlcnRpZmljYXRlOjExLHNlcnZlcl9rZXlfZXhjaGFuZ2U6MTIsY2VydGlmaWNhdGVfcmVxdWVzdDoxMyxzZXJ2ZXJfaGVsbG9fZG9uZToxNCxjZXJ0aWZpY2F0ZV92ZXJpZnk6MTUsY2xpZW50X2tleV9leGNoYW5nZToxNixmaW5pc2hlZDoyMH0sYy5BbGVydD17fSxjLkFsZXJ0LkxldmVsPXt3YXJuaW5nOjEsZmF0YWw6Mn0sYy5BbGVydC5EZXNjcmlwdGlvbj17Y2xvc2Vfbm90aWZ5OjAsdW5leHBlY3RlZF9tZXNzYWdlOjEwLGJhZF9yZWNvcmRfbWFjOjIwLGRlY3J5cHRpb25fZmFpbGVkOjIxLHJlY29yZF9vdmVyZmxvdzoyMixkZWNvbXByZXNzaW9uX2ZhaWx1cmU6MzAsaGFuZHNoYWtlX2ZhaWx1cmU6NDAsYmFkX2NlcnRpZmljYXRlOjQyLHVuc3VwcG9ydGVkX2NlcnRpZmljYXRlOjQzLGNlcnRpZmljYXRlX3Jldm9rZWQ6NDQsY2VydGlmaWNhdGVfZXhwaXJlZDo0NSxjZXJ0aWZpY2F0ZV91bmtub3duOjQ2LGlsbGVnYWxfcGFyYW1ldGVyOjQ3LHVua25vd25fY2E6NDgsYWNjZXNzX2RlbmllZDo0OSxkZWNvZGVfZXJyb3I6NTAsZGVjcnlwdF9lcnJvcjo1MSxleHBvcnRfcmVzdHJpY3Rpb246NjAscHJvdG9jb2xfdmVyc2lvbjo3MCxpbnN1ZmZpY2llbnRfc2VjdXJpdHk6NzEsaW50ZXJuYWxfZXJyb3I6ODAsdXNlcl9jYW5jZWxlZDo5MCxub19yZW5lZ290aWF0aW9uOjEwMH0sYy5IZWFydGJlYXRNZXNzYWdlVHlwZT17aGVhcnRiZWF0X3JlcXVlc3Q6MSxoZWFydGJlYXRfcmVzcG9uc2U6Mn0sYy5DaXBoZXJTdWl0ZXM9e30sYy5nZXRDaXBoZXJTdWl0ZT1mdW5jdGlvbihlKXt2YXIgdD1udWxsO2Zvcih2YXIgciBpbiBjLkNpcGhlclN1aXRlcyl7dmFyIG49Yy5DaXBoZXJTdWl0ZXNbcl07aWYobi5pZFswXT09PWUuY2hhckNvZGVBdCgwKSYmbi5pZFsxXT09PWUuY2hhckNvZGVBdCgxKSl7dD1uO2JyZWFrfX1yZXR1cm4gdH0sYy5oYW5kbGVVbmV4cGVjdGVkPWZ1bmN0aW9uKGUsdCl7IWUub3BlbiYmZS5lbnRpdHk9PT1jLkNvbm5lY3Rpb25FbmQuY2xpZW50fHxlLmVycm9yKGUse21lc3NhZ2U6IlVuZXhwZWN0ZWQgbWVzc2FnZS4gUmVjZWl2ZWQgVExTIHJlY29yZCBvdXQgb2Ygb3JkZXIuIixzZW5kOiEwLGFsZXJ0OntsZXZlbDpjLkFsZXJ0LkxldmVsLmZhdGFsLGRlc2NyaXB0aW9uOmMuQWxlcnQuRGVzY3JpcHRpb24udW5leHBlY3RlZF9tZXNzYWdlfX0pfSxjLmhhbmRsZUhlbGxvUmVxdWVzdD1mdW5jdGlvbihlLHQscil7IWUuaGFuZHNoYWtpbmcmJmUuaGFuZHNoYWtlcz4wJiYoYy5xdWV1ZShlLGMuY3JlYXRlQWxlcnQoZSx7bGV2ZWw6Yy5BbGVydC5MZXZlbC53YXJuaW5nLGRlc2NyaXB0aW9uOmMuQWxlcnQuRGVzY3JpcHRpb24ubm9fcmVuZWdvdGlhdGlvbn0pKSxjLmZsdXNoKGUpKSxlLnByb2Nlc3MoKX0sYy5wYXJzZUhlbGxvTWVzc2FnZT1mdW5jdGlvbihlLHQscil7dmFyIGk9bnVsbCxvPWUuZW50aXR5PT09Yy5Db25uZWN0aW9uRW5kLmNsaWVudDtpZihyPDM4KWUuZXJyb3IoZSx7bWVzc2FnZTpvPyJJbnZhbGlkIFNlcnZlckhlbGxvIG1lc3NhZ2UuIE1lc3NhZ2UgdG9vIHNob3J0LiI6IkludmFsaWQgQ2xpZW50SGVsbG8gbWVzc2FnZS4gTWVzc2FnZSB0b28gc2hvcnQuIixzZW5kOiEwLGFsZXJ0OntsZXZlbDpjLkFsZXJ0LkxldmVsLmZhdGFsLGRlc2NyaXB0aW9uOmMuQWxlcnQuRGVzY3JpcHRpb24uaWxsZWdhbF9wYXJhbWV0ZXJ9fSk7ZWxzZXt2YXIgYT10LmZyYWdtZW50LHU9YS5sZW5ndGgoKTtpZihpPXt2ZXJzaW9uOnttYWpvcjphLmdldEJ5dGUoKSxtaW5vcjphLmdldEJ5dGUoKX0scmFuZG9tOm4udXRpbC5jcmVhdGVCdWZmZXIoYS5nZXRCeXRlcygzMikpLHNlc3Npb25faWQ6cyhhLDEpLGV4dGVuc2lvbnM6W119LG8/KGkuY2lwaGVyX3N1aXRlPWEuZ2V0Qnl0ZXMoMiksaS5jb21wcmVzc2lvbl9tZXRob2Q9YS5nZXRCeXRlKCkpOihpLmNpcGhlcl9zdWl0ZXM9cyhhLDIpLGkuY29tcHJlc3Npb25fbWV0aG9kcz1zKGEsMSkpLCh1PXItKHUtYS5sZW5ndGgoKSkpPjApe2Zvcih2YXIgZj1zKGEsMik7Zi5sZW5ndGgoKT4wOylpLmV4dGVuc2lvbnMucHVzaCh7dHlwZTpbZi5nZXRCeXRlKCksZi5nZXRCeXRlKCldLGRhdGE6cyhmLDIpfSk7aWYoIW8pZm9yKHZhciBsPTA7bDxpLmV4dGVuc2lvbnMubGVuZ3RoOysrbCl7dmFyIGg9aS5leHRlbnNpb25zW2xdO2lmKDA9PT1oLnR5cGVbMF0mJjA9PT1oLnR5cGVbMV0pZm9yKHZhciBwPXMoaC5kYXRhLDIpO3AubGVuZ3RoKCk+MDspe2lmKDAhPT1wLmdldEJ5dGUoKSlicmVhaztlLnNlc3Npb24uZXh0ZW5zaW9ucy5zZXJ2ZXJfbmFtZS5zZXJ2ZXJOYW1lTGlzdC5wdXNoKHMocCwyKS5nZXRCeXRlcygpKX19fWlmKGUuc2Vzc2lvbi52ZXJzaW9uJiYoaS52ZXJzaW9uLm1ham9yIT09ZS5zZXNzaW9uLnZlcnNpb24ubWFqb3J8fGkudmVyc2lvbi5taW5vciE9PWUuc2Vzc2lvbi52ZXJzaW9uLm1pbm9yKSlyZXR1cm4gZS5lcnJvcihlLHttZXNzYWdlOiJUTFMgdmVyc2lvbiBjaGFuZ2UgaXMgZGlzYWxsb3dlZCBkdXJpbmcgcmVuZWdvdGlhdGlvbi4iLHNlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi5wcm90b2NvbF92ZXJzaW9ufX0pO2lmKG8pZS5zZXNzaW9uLmNpcGhlclN1aXRlPWMuZ2V0Q2lwaGVyU3VpdGUoaS5jaXBoZXJfc3VpdGUpO2Vsc2UgZm9yKHZhciBkPW4udXRpbC5jcmVhdGVCdWZmZXIoaS5jaXBoZXJfc3VpdGVzLmJ5dGVzKCkpO2QubGVuZ3RoKCk+MCYmKGUuc2Vzc2lvbi5jaXBoZXJTdWl0ZT1jLmdldENpcGhlclN1aXRlKGQuZ2V0Qnl0ZXMoMikpLG51bGw9PT1lLnNlc3Npb24uY2lwaGVyU3VpdGUpOyk7aWYobnVsbD09PWUuc2Vzc2lvbi5jaXBoZXJTdWl0ZSlyZXR1cm4gZS5lcnJvcihlLHttZXNzYWdlOiJObyBjaXBoZXIgc3VpdGVzIGluIGNvbW1vbi4iLHNlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi5oYW5kc2hha2VfZmFpbHVyZX0sY2lwaGVyU3VpdGU6bi51dGlsLmJ5dGVzVG9IZXgoaS5jaXBoZXJfc3VpdGUpfSk7ZS5zZXNzaW9uLmNvbXByZXNzaW9uTWV0aG9kPW8/aS5jb21wcmVzc2lvbl9tZXRob2Q6Yy5Db21wcmVzc2lvbk1ldGhvZC5ub25lfXJldHVybiBpfSxjLmNyZWF0ZVNlY3VyaXR5UGFyYW1ldGVycz1mdW5jdGlvbihlLHQpe3ZhciByPWUuZW50aXR5PT09Yy5Db25uZWN0aW9uRW5kLmNsaWVudCxuPXQucmFuZG9tLmJ5dGVzKCksaT1yP2Uuc2Vzc2lvbi5zcC5jbGllbnRfcmFuZG9tOm4sbz1yP246Yy5jcmVhdGVSYW5kb20oKS5nZXRCeXRlcygpO2Uuc2Vzc2lvbi5zcD17ZW50aXR5OmUuZW50aXR5LHByZl9hbGdvcml0aG06Yy5QUkZBbGdvcml0aG0udGxzX3ByZl9zaGEyNTYsYnVsa19jaXBoZXJfYWxnb3JpdGhtOm51bGwsY2lwaGVyX3R5cGU6bnVsbCxlbmNfa2V5X2xlbmd0aDpudWxsLGJsb2NrX2xlbmd0aDpudWxsLGZpeGVkX2l2X2xlbmd0aDpudWxsLHJlY29yZF9pdl9sZW5ndGg6bnVsbCxtYWNfYWxnb3JpdGhtOm51bGwsbWFjX2xlbmd0aDpudWxsLG1hY19rZXlfbGVuZ3RoOm51bGwsY29tcHJlc3Npb25fYWxnb3JpdGhtOmUuc2Vzc2lvbi5jb21wcmVzc2lvbk1ldGhvZCxwcmVfbWFzdGVyX3NlY3JldDpudWxsLG1hc3Rlcl9zZWNyZXQ6bnVsbCxjbGllbnRfcmFuZG9tOmksc2VydmVyX3JhbmRvbTpvfX0sYy5oYW5kbGVTZXJ2ZXJIZWxsbz1mdW5jdGlvbihlLHQscil7dmFyIG49Yy5wYXJzZUhlbGxvTWVzc2FnZShlLHQscik7aWYoIWUuZmFpbCl7aWYoIShuLnZlcnNpb24ubWlub3I8PWUudmVyc2lvbi5taW5vcikpcmV0dXJuIGUuZXJyb3IoZSx7bWVzc2FnZToiSW5jb21wYXRpYmxlIFRMUyB2ZXJzaW9uLiIsc2VuZDohMCxhbGVydDp7bGV2ZWw6Yy5BbGVydC5MZXZlbC5mYXRhbCxkZXNjcmlwdGlvbjpjLkFsZXJ0LkRlc2NyaXB0aW9uLnByb3RvY29sX3ZlcnNpb259fSk7ZS52ZXJzaW9uLm1pbm9yPW4udmVyc2lvbi5taW5vcixlLnNlc3Npb24udmVyc2lvbj1lLnZlcnNpb247dmFyIGk9bi5zZXNzaW9uX2lkLmJ5dGVzKCk7aS5sZW5ndGg+MCYmaT09PWUuc2Vzc2lvbi5pZD8oZS5leHBlY3Q9ZCxlLnNlc3Npb24ucmVzdW1pbmc9ITAsZS5zZXNzaW9uLnNwLnNlcnZlcl9yYW5kb209bi5yYW5kb20uYnl0ZXMoKSk6KGUuZXhwZWN0PWYsZS5zZXNzaW9uLnJlc3VtaW5nPSExLGMuY3JlYXRlU2VjdXJpdHlQYXJhbWV0ZXJzKGUsbikpLGUuc2Vzc2lvbi5pZD1pLGUucHJvY2VzcygpfX0sYy5oYW5kbGVDbGllbnRIZWxsbz1mdW5jdGlvbihlLHQscil7dmFyIGk9Yy5wYXJzZUhlbGxvTWVzc2FnZShlLHQscik7aWYoIWUuZmFpbCl7dmFyIG89aS5zZXNzaW9uX2lkLmJ5dGVzKCksYT1udWxsO2lmKGUuc2Vzc2lvbkNhY2hlJiYobnVsbD09PShhPWUuc2Vzc2lvbkNhY2hlLmdldFNlc3Npb24obykpP289IiI6KGEudmVyc2lvbi5tYWpvciE9PWkudmVyc2lvbi5tYWpvcnx8YS52ZXJzaW9uLm1pbm9yPmkudmVyc2lvbi5taW5vcikmJihhPW51bGwsbz0iIikpLDA9PT1vLmxlbmd0aCYmKG89bi5yYW5kb20uZ2V0Qnl0ZXMoMzIpKSxlLnNlc3Npb24uaWQ9byxlLnNlc3Npb24uY2xpZW50SGVsbG9WZXJzaW9uPWkudmVyc2lvbixlLnNlc3Npb24uc3A9e30sYSllLnZlcnNpb249ZS5zZXNzaW9uLnZlcnNpb249YS52ZXJzaW9uLGUuc2Vzc2lvbi5zcD1hLnNwO2Vsc2V7Zm9yKHZhciBzLHU9MTt1PGMuU3VwcG9ydGVkVmVyc2lvbnMubGVuZ3RoJiYhKChzPWMuU3VwcG9ydGVkVmVyc2lvbnNbdV0pLm1pbm9yPD1pLnZlcnNpb24ubWlub3IpOysrdSk7ZS52ZXJzaW9uPXttYWpvcjpzLm1ham9yLG1pbm9yOnMubWlub3J9LGUuc2Vzc2lvbi52ZXJzaW9uPWUudmVyc2lvbn1udWxsIT09YT8oZS5leHBlY3Q9UyxlLnNlc3Npb24ucmVzdW1pbmc9ITAsZS5zZXNzaW9uLnNwLmNsaWVudF9yYW5kb209aS5yYW5kb20uYnl0ZXMoKSk6KGUuZXhwZWN0PSExIT09ZS52ZXJpZnlDbGllbnQ/bTpiLGUuc2Vzc2lvbi5yZXN1bWluZz0hMSxjLmNyZWF0ZVNlY3VyaXR5UGFyYW1ldGVycyhlLGkpKSxlLm9wZW49ITAsYy5xdWV1ZShlLGMuY3JlYXRlUmVjb3JkKGUse3R5cGU6Yy5Db250ZW50VHlwZS5oYW5kc2hha2UsZGF0YTpjLmNyZWF0ZVNlcnZlckhlbGxvKGUpfSkpLGUuc2Vzc2lvbi5yZXN1bWluZz8oYy5xdWV1ZShlLGMuY3JlYXRlUmVjb3JkKGUse3R5cGU6Yy5Db250ZW50VHlwZS5jaGFuZ2VfY2lwaGVyX3NwZWMsZGF0YTpjLmNyZWF0ZUNoYW5nZUNpcGhlclNwZWMoKX0pKSxlLnN0YXRlLnBlbmRpbmc9Yy5jcmVhdGVDb25uZWN0aW9uU3RhdGUoZSksZS5zdGF0ZS5jdXJyZW50LndyaXRlPWUuc3RhdGUucGVuZGluZy53cml0ZSxjLnF1ZXVlKGUsYy5jcmVhdGVSZWNvcmQoZSx7dHlwZTpjLkNvbnRlbnRUeXBlLmhhbmRzaGFrZSxkYXRhOmMuY3JlYXRlRmluaXNoZWQoZSl9KSkpOihjLnF1ZXVlKGUsYy5jcmVhdGVSZWNvcmQoZSx7dHlwZTpjLkNvbnRlbnRUeXBlLmhhbmRzaGFrZSxkYXRhOmMuY3JlYXRlQ2VydGlmaWNhdGUoZSl9KSksZS5mYWlsfHwoYy5xdWV1ZShlLGMuY3JlYXRlUmVjb3JkKGUse3R5cGU6Yy5Db250ZW50VHlwZS5oYW5kc2hha2UsZGF0YTpjLmNyZWF0ZVNlcnZlcktleUV4Y2hhbmdlKGUpfSkpLCExIT09ZS52ZXJpZnlDbGllbnQmJmMucXVldWUoZSxjLmNyZWF0ZVJlY29yZChlLHt0eXBlOmMuQ29udGVudFR5cGUuaGFuZHNoYWtlLGRhdGE6Yy5jcmVhdGVDZXJ0aWZpY2F0ZVJlcXVlc3QoZSl9KSksYy5xdWV1ZShlLGMuY3JlYXRlUmVjb3JkKGUse3R5cGU6Yy5Db250ZW50VHlwZS5oYW5kc2hha2UsZGF0YTpjLmNyZWF0ZVNlcnZlckhlbGxvRG9uZShlKX0pKSkpLGMuZmx1c2goZSksZS5wcm9jZXNzKCl9fSxjLmhhbmRsZUNlcnRpZmljYXRlPWZ1bmN0aW9uKGUsdCxyKXtpZihyPDMpcmV0dXJuIGUuZXJyb3IoZSx7bWVzc2FnZToiSW52YWxpZCBDZXJ0aWZpY2F0ZSBtZXNzYWdlLiBNZXNzYWdlIHRvbyBzaG9ydC4iLHNlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi5pbGxlZ2FsX3BhcmFtZXRlcn19KTt2YXIgaSxvLGE9dC5mcmFnbWVudCx1PXtjZXJ0aWZpY2F0ZV9saXN0OnMoYSwzKX0sZj1bXTt0cnl7Zm9yKDt1LmNlcnRpZmljYXRlX2xpc3QubGVuZ3RoKCk+MDspaT1zKHUuY2VydGlmaWNhdGVfbGlzdCwzKSxvPW4uYXNuMS5mcm9tRGVyKGkpLGk9bi5wa2kuY2VydGlmaWNhdGVGcm9tQXNuMShvLCEwKSxmLnB1c2goaSl9Y2F0Y2gocCl7cmV0dXJuIGUuZXJyb3IoZSx7bWVzc2FnZToiQ291bGQgbm90IHBhcnNlIGNlcnRpZmljYXRlIGxpc3QuIixjYXVzZTpwLHNlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi5iYWRfY2VydGlmaWNhdGV9fSl9dmFyIGg9ZS5lbnRpdHk9PT1jLkNvbm5lY3Rpb25FbmQuY2xpZW50OyFoJiYhMCE9PWUudmVyaWZ5Q2xpZW50fHwwIT09Zi5sZW5ndGg/MD09PWYubGVuZ3RoP2UuZXhwZWN0PWg/bDpiOihoP2Uuc2Vzc2lvbi5zZXJ2ZXJDZXJ0aWZpY2F0ZT1mWzBdOmUuc2Vzc2lvbi5jbGllbnRDZXJ0aWZpY2F0ZT1mWzBdLGMudmVyaWZ5Q2VydGlmaWNhdGVDaGFpbihlLGYpJiYoZS5leHBlY3Q9aD9sOmIpKTplLmVycm9yKGUse21lc3NhZ2U6aD8iTm8gc2VydmVyIGNlcnRpZmljYXRlIHByb3ZpZGVkLiI6Ik5vIGNsaWVudCBjZXJ0aWZpY2F0ZSBwcm92aWRlZC4iLHNlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi5pbGxlZ2FsX3BhcmFtZXRlcn19KSxlLnByb2Nlc3MoKX0sYy5oYW5kbGVTZXJ2ZXJLZXlFeGNoYW5nZT1mdW5jdGlvbihlLHQscil7aWYocj4wKXJldHVybiBlLmVycm9yKGUse21lc3NhZ2U6IkludmFsaWQga2V5IHBhcmFtZXRlcnMuIE9ubHkgUlNBIGlzIHN1cHBvcnRlZC4iLHNlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi51bnN1cHBvcnRlZF9jZXJ0aWZpY2F0ZX19KTtlLmV4cGVjdD1oLGUucHJvY2VzcygpfSxjLmhhbmRsZUNsaWVudEtleUV4Y2hhbmdlPWZ1bmN0aW9uKGUsdCxyKXtpZihyPDQ4KXJldHVybiBlLmVycm9yKGUse21lc3NhZ2U6IkludmFsaWQga2V5IHBhcmFtZXRlcnMuIE9ubHkgUlNBIGlzIHN1cHBvcnRlZC4iLHNlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi51bnN1cHBvcnRlZF9jZXJ0aWZpY2F0ZX19KTt2YXIgaT10LmZyYWdtZW50LG89e2VuY19wcmVfbWFzdGVyX3NlY3JldDpzKGksMikuZ2V0Qnl0ZXMoKX0sYT1udWxsO2lmKGUuZ2V0UHJpdmF0ZUtleSl0cnl7YT1lLmdldFByaXZhdGVLZXkoZSxlLnNlc3Npb24uc2VydmVyQ2VydGlmaWNhdGUpLGE9bi5wa2kucHJpdmF0ZUtleUZyb21QZW0oYSl9Y2F0Y2gobCl7ZS5lcnJvcihlLHttZXNzYWdlOiJDb3VsZCBub3QgZ2V0IHByaXZhdGUga2V5LiIsY2F1c2U6bCxzZW5kOiEwLGFsZXJ0OntsZXZlbDpjLkFsZXJ0LkxldmVsLmZhdGFsLGRlc2NyaXB0aW9uOmMuQWxlcnQuRGVzY3JpcHRpb24uaW50ZXJuYWxfZXJyb3J9fSl9aWYobnVsbD09PWEpcmV0dXJuIGUuZXJyb3IoZSx7bWVzc2FnZToiTm8gcHJpdmF0ZSBrZXkgc2V0LiIsc2VuZDohMCxhbGVydDp7bGV2ZWw6Yy5BbGVydC5MZXZlbC5mYXRhbCxkZXNjcmlwdGlvbjpjLkFsZXJ0LkRlc2NyaXB0aW9uLmludGVybmFsX2Vycm9yfX0pO3RyeXt2YXIgdT1lLnNlc3Npb24uc3A7dS5wcmVfbWFzdGVyX3NlY3JldD1hLmRlY3J5cHQoby5lbmNfcHJlX21hc3Rlcl9zZWNyZXQpO3ZhciBmPWUuc2Vzc2lvbi5jbGllbnRIZWxsb1ZlcnNpb247aWYoZi5tYWpvciE9PXUucHJlX21hc3Rlcl9zZWNyZXQuY2hhckNvZGVBdCgwKXx8Zi5taW5vciE9PXUucHJlX21hc3Rlcl9zZWNyZXQuY2hhckNvZGVBdCgxKSl0aHJvdyBuZXcgRXJyb3IoIlRMUyB2ZXJzaW9uIHJvbGxiYWNrIGF0dGFjayBkZXRlY3RlZC4iKX1jYXRjaChsKXt1LnByZV9tYXN0ZXJfc2VjcmV0PW4ucmFuZG9tLmdldEJ5dGVzKDQ4KX1lLmV4cGVjdD1TLG51bGwhPT1lLnNlc3Npb24uY2xpZW50Q2VydGlmaWNhdGUmJihlLmV4cGVjdD1fKSxlLnByb2Nlc3MoKX0sYy5oYW5kbGVDZXJ0aWZpY2F0ZVJlcXVlc3Q9ZnVuY3Rpb24oZSx0LHIpe2lmKHI8MylyZXR1cm4gZS5lcnJvcihlLHttZXNzYWdlOiJJbnZhbGlkIENlcnRpZmljYXRlUmVxdWVzdC4gTWVzc2FnZSB0b28gc2hvcnQuIixzZW5kOiEwLGFsZXJ0OntsZXZlbDpjLkFsZXJ0LkxldmVsLmZhdGFsLGRlc2NyaXB0aW9uOmMuQWxlcnQuRGVzY3JpcHRpb24uaWxsZWdhbF9wYXJhbWV0ZXJ9fSk7dmFyIG49dC5mcmFnbWVudCxpPXtjZXJ0aWZpY2F0ZV90eXBlczpzKG4sMSksY2VydGlmaWNhdGVfYXV0aG9yaXRpZXM6cyhuLDIpfTtlLnNlc3Npb24uY2VydGlmaWNhdGVSZXF1ZXN0PWksZS5leHBlY3Q9cCxlLnByb2Nlc3MoKX0sYy5oYW5kbGVDZXJ0aWZpY2F0ZVZlcmlmeT1mdW5jdGlvbihlLHQscil7aWYocjwyKXJldHVybiBlLmVycm9yKGUse21lc3NhZ2U6IkludmFsaWQgQ2VydGlmaWNhdGVWZXJpZnkuIE1lc3NhZ2UgdG9vIHNob3J0LiIsc2VuZDohMCxhbGVydDp7bGV2ZWw6Yy5BbGVydC5MZXZlbC5mYXRhbCxkZXNjcmlwdGlvbjpjLkFsZXJ0LkRlc2NyaXB0aW9uLmlsbGVnYWxfcGFyYW1ldGVyfX0pO3ZhciBpPXQuZnJhZ21lbnQ7aS5yZWFkLT00O3ZhciBvPWkuYnl0ZXMoKTtpLnJlYWQrPTQ7dmFyIGE9e3NpZ25hdHVyZTpzKGksMikuZ2V0Qnl0ZXMoKX0sdT1uLnV0aWwuY3JlYXRlQnVmZmVyKCk7dS5wdXRCdWZmZXIoZS5zZXNzaW9uLm1kNS5kaWdlc3QoKSksdS5wdXRCdWZmZXIoZS5zZXNzaW9uLnNoYTEuZGlnZXN0KCkpLHU9dS5nZXRCeXRlcygpO3RyeXtpZighZS5zZXNzaW9uLmNsaWVudENlcnRpZmljYXRlLnB1YmxpY0tleS52ZXJpZnkodSxhLnNpZ25hdHVyZSwiTk9ORSIpKXRocm93IG5ldyBFcnJvcigiQ2VydGlmaWNhdGVWZXJpZnkgc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoLiIpO2Uuc2Vzc2lvbi5tZDUudXBkYXRlKG8pLGUuc2Vzc2lvbi5zaGExLnVwZGF0ZShvKX1jYXRjaChmKXtyZXR1cm4gZS5lcnJvcihlLHttZXNzYWdlOiJCYWQgc2lnbmF0dXJlIGluIENlcnRpZmljYXRlVmVyaWZ5LiIsc2VuZDohMCxhbGVydDp7bGV2ZWw6Yy5BbGVydC5MZXZlbC5mYXRhbCxkZXNjcmlwdGlvbjpjLkFsZXJ0LkRlc2NyaXB0aW9uLmhhbmRzaGFrZV9mYWlsdXJlfX0pfWUuZXhwZWN0PVMsZS5wcm9jZXNzKCl9LGMuaGFuZGxlU2VydmVySGVsbG9Eb25lPWZ1bmN0aW9uKGUsdCxyKXtpZihyPjApcmV0dXJuIGUuZXJyb3IoZSx7bWVzc2FnZToiSW52YWxpZCBTZXJ2ZXJIZWxsb0RvbmUgbWVzc2FnZS4gSW52YWxpZCBsZW5ndGguIixzZW5kOiEwLGFsZXJ0OntsZXZlbDpjLkFsZXJ0LkxldmVsLmZhdGFsLGRlc2NyaXB0aW9uOmMuQWxlcnQuRGVzY3JpcHRpb24ucmVjb3JkX292ZXJmbG93fX0pO2lmKG51bGw9PT1lLnNlcnZlckNlcnRpZmljYXRlKXt2YXIgaT17bWVzc2FnZToiTm8gc2VydmVyIGNlcnRpZmljYXRlIHByb3ZpZGVkLiBOb3QgZW5vdWdoIHNlY3VyaXR5LiIsc2VuZDohMCxhbGVydDp7bGV2ZWw6Yy5BbGVydC5MZXZlbC5mYXRhbCxkZXNjcmlwdGlvbjpjLkFsZXJ0LkRlc2NyaXB0aW9uLmluc3VmZmljaWVudF9zZWN1cml0eX19LG89ZS52ZXJpZnkoZSxpLmFsZXJ0LmRlc2NyaXB0aW9uLDAsW10pO2lmKCEwIT09bylyZXR1cm4ob3x8MD09PW8pJiYoIm9iamVjdCIhPT10eXBlb2Ygb3x8bi51dGlsLmlzQXJyYXkobyk/Im51bWJlciI9PT10eXBlb2YgbyYmKGkuYWxlcnQuZGVzY3JpcHRpb249byk6KG8ubWVzc2FnZSYmKGkubWVzc2FnZT1vLm1lc3NhZ2UpLG8uYWxlcnQmJihpLmFsZXJ0LmRlc2NyaXB0aW9uPW8uYWxlcnQpKSksZS5lcnJvcihlLGkpfW51bGwhPT1lLnNlc3Npb24uY2VydGlmaWNhdGVSZXF1ZXN0JiYodD1jLmNyZWF0ZVJlY29yZChlLHt0eXBlOmMuQ29udGVudFR5cGUuaGFuZHNoYWtlLGRhdGE6Yy5jcmVhdGVDZXJ0aWZpY2F0ZShlKX0pLGMucXVldWUoZSx0KSksdD1jLmNyZWF0ZVJlY29yZChlLHt0eXBlOmMuQ29udGVudFR5cGUuaGFuZHNoYWtlLGRhdGE6Yy5jcmVhdGVDbGllbnRLZXlFeGNoYW5nZShlKX0pLGMucXVldWUoZSx0KSxlLmV4cGVjdD12O3ZhciBhPWZ1bmN0aW9uKGUsdCl7bnVsbCE9PWUuc2Vzc2lvbi5jZXJ0aWZpY2F0ZVJlcXVlc3QmJm51bGwhPT1lLnNlc3Npb24uY2xpZW50Q2VydGlmaWNhdGUmJmMucXVldWUoZSxjLmNyZWF0ZVJlY29yZChlLHt0eXBlOmMuQ29udGVudFR5cGUuaGFuZHNoYWtlLGRhdGE6Yy5jcmVhdGVDZXJ0aWZpY2F0ZVZlcmlmeShlLHQpfSkpLGMucXVldWUoZSxjLmNyZWF0ZVJlY29yZChlLHt0eXBlOmMuQ29udGVudFR5cGUuY2hhbmdlX2NpcGhlcl9zcGVjLGRhdGE6Yy5jcmVhdGVDaGFuZ2VDaXBoZXJTcGVjKCl9KSksZS5zdGF0ZS5wZW5kaW5nPWMuY3JlYXRlQ29ubmVjdGlvblN0YXRlKGUpLGUuc3RhdGUuY3VycmVudC53cml0ZT1lLnN0YXRlLnBlbmRpbmcud3JpdGUsYy5xdWV1ZShlLGMuY3JlYXRlUmVjb3JkKGUse3R5cGU6Yy5Db250ZW50VHlwZS5oYW5kc2hha2UsZGF0YTpjLmNyZWF0ZUZpbmlzaGVkKGUpfSkpLGUuZXhwZWN0PWQsYy5mbHVzaChlKSxlLnByb2Nlc3MoKX07aWYobnVsbD09PWUuc2Vzc2lvbi5jZXJ0aWZpY2F0ZVJlcXVlc3R8fG51bGw9PT1lLnNlc3Npb24uY2xpZW50Q2VydGlmaWNhdGUpcmV0dXJuIGEoZSxudWxsKTtjLmdldENsaWVudFNpZ25hdHVyZShlLGEpfSxjLmhhbmRsZUNoYW5nZUNpcGhlclNwZWM9ZnVuY3Rpb24oZSx0KXtpZigxIT09dC5mcmFnbWVudC5nZXRCeXRlKCkpcmV0dXJuIGUuZXJyb3IoZSx7bWVzc2FnZToiSW52YWxpZCBDaGFuZ2VDaXBoZXJTcGVjIG1lc3NhZ2UgcmVjZWl2ZWQuIixzZW5kOiEwLGFsZXJ0OntsZXZlbDpjLkFsZXJ0LkxldmVsLmZhdGFsLGRlc2NyaXB0aW9uOmMuQWxlcnQuRGVzY3JpcHRpb24uaWxsZWdhbF9wYXJhbWV0ZXJ9fSk7dmFyIHI9ZS5lbnRpdHk9PT1jLkNvbm5lY3Rpb25FbmQuY2xpZW50OyhlLnNlc3Npb24ucmVzdW1pbmcmJnJ8fCFlLnNlc3Npb24ucmVzdW1pbmcmJiFyKSYmKGUuc3RhdGUucGVuZGluZz1jLmNyZWF0ZUNvbm5lY3Rpb25TdGF0ZShlKSksZS5zdGF0ZS5jdXJyZW50LnJlYWQ9ZS5zdGF0ZS5wZW5kaW5nLnJlYWQsKCFlLnNlc3Npb24ucmVzdW1pbmcmJnJ8fGUuc2Vzc2lvbi5yZXN1bWluZyYmIXIpJiYoZS5zdGF0ZS5wZW5kaW5nPW51bGwpLGUuZXhwZWN0PXI/eTpFLGUucHJvY2VzcygpfSxjLmhhbmRsZUZpbmlzaGVkPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbz10LmZyYWdtZW50O28ucmVhZC09NDt2YXIgYT1vLmJ5dGVzKCk7by5yZWFkKz00O3ZhciBzPXQuZnJhZ21lbnQuZ2V0Qnl0ZXMoKTsobz1uLnV0aWwuY3JlYXRlQnVmZmVyKCkpLnB1dEJ1ZmZlcihlLnNlc3Npb24ubWQ1LmRpZ2VzdCgpKSxvLnB1dEJ1ZmZlcihlLnNlc3Npb24uc2hhMS5kaWdlc3QoKSk7dmFyIHU9ZS5lbnRpdHk9PT1jLkNvbm5lY3Rpb25FbmQuY2xpZW50LGY9dT8ic2VydmVyIGZpbmlzaGVkIjoiY2xpZW50IGZpbmlzaGVkIixsPWUuc2Vzc2lvbi5zcDtpZigobz1pKGwubWFzdGVyX3NlY3JldCxmLG8uZ2V0Qnl0ZXMoKSwxMikpLmdldEJ5dGVzKCkhPT1zKXJldHVybiBlLmVycm9yKGUse21lc3NhZ2U6IkludmFsaWQgdmVyaWZ5X2RhdGEgaW4gRmluaXNoZWQgbWVzc2FnZS4iLHNlbmQ6ITAsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi5kZWNyeXB0X2Vycm9yfX0pO2Uuc2Vzc2lvbi5tZDUudXBkYXRlKGEpLGUuc2Vzc2lvbi5zaGExLnVwZGF0ZShhKSwoZS5zZXNzaW9uLnJlc3VtaW5nJiZ1fHwhZS5zZXNzaW9uLnJlc3VtaW5nJiYhdSkmJihjLnF1ZXVlKGUsYy5jcmVhdGVSZWNvcmQoZSx7dHlwZTpjLkNvbnRlbnRUeXBlLmNoYW5nZV9jaXBoZXJfc3BlYyxkYXRhOmMuY3JlYXRlQ2hhbmdlQ2lwaGVyU3BlYygpfSkpLGUuc3RhdGUuY3VycmVudC53cml0ZT1lLnN0YXRlLnBlbmRpbmcud3JpdGUsZS5zdGF0ZS5wZW5kaW5nPW51bGwsYy5xdWV1ZShlLGMuY3JlYXRlUmVjb3JkKGUse3R5cGU6Yy5Db250ZW50VHlwZS5oYW5kc2hha2UsZGF0YTpjLmNyZWF0ZUZpbmlzaGVkKGUpfSkpKSxlLmV4cGVjdD11P2c6dyxlLmhhbmRzaGFraW5nPSExLCsrZS5oYW5kc2hha2VzLGUucGVlckNlcnRpZmljYXRlPXU/ZS5zZXNzaW9uLnNlcnZlckNlcnRpZmljYXRlOmUuc2Vzc2lvbi5jbGllbnRDZXJ0aWZpY2F0ZSxjLmZsdXNoKGUpLGUuaXNDb25uZWN0ZWQ9ITAsZS5jb25uZWN0ZWQoZSksZS5wcm9jZXNzKCl9LGMuaGFuZGxlQWxlcnQ9ZnVuY3Rpb24oZSx0KXt2YXIgcixuPXQuZnJhZ21lbnQsaT17bGV2ZWw6bi5nZXRCeXRlKCksZGVzY3JpcHRpb246bi5nZXRCeXRlKCl9O3N3aXRjaChpLmRlc2NyaXB0aW9uKXtjYXNlIGMuQWxlcnQuRGVzY3JpcHRpb24uY2xvc2Vfbm90aWZ5OnI9IkNvbm5lY3Rpb24gY2xvc2VkLiI7YnJlYWs7Y2FzZSBjLkFsZXJ0LkRlc2NyaXB0aW9uLnVuZXhwZWN0ZWRfbWVzc2FnZTpyPSJVbmV4cGVjdGVkIG1lc3NhZ2UuIjticmVhaztjYXNlIGMuQWxlcnQuRGVzY3JpcHRpb24uYmFkX3JlY29yZF9tYWM6cj0iQmFkIHJlY29yZCBNQUMuIjticmVhaztjYXNlIGMuQWxlcnQuRGVzY3JpcHRpb24uZGVjcnlwdGlvbl9mYWlsZWQ6cj0iRGVjcnlwdGlvbiBmYWlsZWQuIjticmVhaztjYXNlIGMuQWxlcnQuRGVzY3JpcHRpb24ucmVjb3JkX292ZXJmbG93OnI9IlJlY29yZCBvdmVyZmxvdy4iO2JyZWFrO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi5kZWNvbXByZXNzaW9uX2ZhaWx1cmU6cj0iRGVjb21wcmVzc2lvbiBmYWlsZWQuIjticmVhaztjYXNlIGMuQWxlcnQuRGVzY3JpcHRpb24uaGFuZHNoYWtlX2ZhaWx1cmU6cj0iSGFuZHNoYWtlIGZhaWx1cmUuIjticmVhaztjYXNlIGMuQWxlcnQuRGVzY3JpcHRpb24uYmFkX2NlcnRpZmljYXRlOnI9IkJhZCBjZXJ0aWZpY2F0ZS4iO2JyZWFrO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi51bnN1cHBvcnRlZF9jZXJ0aWZpY2F0ZTpyPSJVbnN1cHBvcnRlZCBjZXJ0aWZpY2F0ZS4iO2JyZWFrO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi5jZXJ0aWZpY2F0ZV9yZXZva2VkOnI9IkNlcnRpZmljYXRlIHJldm9rZWQuIjticmVhaztjYXNlIGMuQWxlcnQuRGVzY3JpcHRpb24uY2VydGlmaWNhdGVfZXhwaXJlZDpyPSJDZXJ0aWZpY2F0ZSBleHBpcmVkLiI7YnJlYWs7Y2FzZSBjLkFsZXJ0LkRlc2NyaXB0aW9uLmNlcnRpZmljYXRlX3Vua25vd246cj0iQ2VydGlmaWNhdGUgdW5rbm93bi4iO2JyZWFrO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi5pbGxlZ2FsX3BhcmFtZXRlcjpyPSJJbGxlZ2FsIHBhcmFtZXRlci4iO2JyZWFrO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi51bmtub3duX2NhOnI9IlVua25vd24gY2VydGlmaWNhdGUgYXV0aG9yaXR5LiI7YnJlYWs7Y2FzZSBjLkFsZXJ0LkRlc2NyaXB0aW9uLmFjY2Vzc19kZW5pZWQ6cj0iQWNjZXNzIGRlbmllZC4iO2JyZWFrO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi5kZWNvZGVfZXJyb3I6cj0iRGVjb2RlIGVycm9yLiI7YnJlYWs7Y2FzZSBjLkFsZXJ0LkRlc2NyaXB0aW9uLmRlY3J5cHRfZXJyb3I6cj0iRGVjcnlwdCBlcnJvci4iO2JyZWFrO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi5leHBvcnRfcmVzdHJpY3Rpb246cj0iRXhwb3J0IHJlc3RyaWN0aW9uLiI7YnJlYWs7Y2FzZSBjLkFsZXJ0LkRlc2NyaXB0aW9uLnByb3RvY29sX3ZlcnNpb246cj0iVW5zdXBwb3J0ZWQgcHJvdG9jb2wgdmVyc2lvbi4iO2JyZWFrO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi5pbnN1ZmZpY2llbnRfc2VjdXJpdHk6cj0iSW5zdWZmaWNpZW50IHNlY3VyaXR5LiI7YnJlYWs7Y2FzZSBjLkFsZXJ0LkRlc2NyaXB0aW9uLmludGVybmFsX2Vycm9yOnI9IkludGVybmFsIGVycm9yLiI7YnJlYWs7Y2FzZSBjLkFsZXJ0LkRlc2NyaXB0aW9uLnVzZXJfY2FuY2VsZWQ6cj0iVXNlciBjYW5jZWxlZC4iO2JyZWFrO2Nhc2UgYy5BbGVydC5EZXNjcmlwdGlvbi5ub19yZW5lZ290aWF0aW9uOnI9IlJlbmVnb3RpYXRpb24gbm90IHN1cHBvcnRlZC4iO2JyZWFrO2RlZmF1bHQ6cj0iVW5rbm93biBlcnJvci4ifWlmKGkuZGVzY3JpcHRpb249PT1jLkFsZXJ0LkRlc2NyaXB0aW9uLmNsb3NlX25vdGlmeSlyZXR1cm4gZS5jbG9zZSgpO2UuZXJyb3IoZSx7bWVzc2FnZTpyLHNlbmQ6ITEsb3JpZ2luOmUuZW50aXR5PT09Yy5Db25uZWN0aW9uRW5kLmNsaWVudD8ic2VydmVyIjoiY2xpZW50IixhbGVydDppfSksZS5wcm9jZXNzKCl9LGMuaGFuZGxlSGFuZHNoYWtlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dC5mcmFnbWVudCxpPXIuZ2V0Qnl0ZSgpLG89ci5nZXRJbnQyNCgpO2lmKG8+ci5sZW5ndGgoKSlyZXR1cm4gZS5mcmFnbWVudGVkPXQsdC5mcmFnbWVudD1uLnV0aWwuY3JlYXRlQnVmZmVyKCksci5yZWFkLT00LGUucHJvY2VzcygpO2UuZnJhZ21lbnRlZD1udWxsLHIucmVhZC09NDt2YXIgYT1yLmJ5dGVzKG8rNCk7ci5yZWFkKz00LGkgaW4galtlLmVudGl0eV1bZS5leHBlY3RdPyhlLmVudGl0eSE9PWMuQ29ubmVjdGlvbkVuZC5zZXJ2ZXJ8fGUub3Blbnx8ZS5mYWlsfHwoZS5oYW5kc2hha2luZz0hMCxlLnNlc3Npb249e3ZlcnNpb246bnVsbCxleHRlbnNpb25zOntzZXJ2ZXJfbmFtZTp7c2VydmVyTmFtZUxpc3Q6W119fSxjaXBoZXJTdWl0ZTpudWxsLGNvbXByZXNzaW9uTWV0aG9kOm51bGwsc2VydmVyQ2VydGlmaWNhdGU6bnVsbCxjbGllbnRDZXJ0aWZpY2F0ZTpudWxsLG1kNTpuLm1kLm1kNS5jcmVhdGUoKSxzaGExOm4ubWQuc2hhMS5jcmVhdGUoKX0pLGkhPT1jLkhhbmRzaGFrZVR5cGUuaGVsbG9fcmVxdWVzdCYmaSE9PWMuSGFuZHNoYWtlVHlwZS5jZXJ0aWZpY2F0ZV92ZXJpZnkmJmkhPT1jLkhhbmRzaGFrZVR5cGUuZmluaXNoZWQmJihlLnNlc3Npb24ubWQ1LnVwZGF0ZShhKSxlLnNlc3Npb24uc2hhMS51cGRhdGUoYSkpLGpbZS5lbnRpdHldW2UuZXhwZWN0XVtpXShlLHQsbykpOmMuaGFuZGxlVW5leHBlY3RlZChlLHQpfSxjLmhhbmRsZUFwcGxpY2F0aW9uRGF0YT1mdW5jdGlvbihlLHQpe2UuZGF0YS5wdXRCdWZmZXIodC5mcmFnbWVudCksZS5kYXRhUmVhZHkoZSksZS5wcm9jZXNzKCl9LGMuaGFuZGxlSGVhcnRiZWF0PWZ1bmN0aW9uKGUsdCl7dmFyIHI9dC5mcmFnbWVudCxpPXIuZ2V0Qnl0ZSgpLG89ci5nZXRJbnQxNigpLGE9ci5nZXRCeXRlcyhvKTtpZihpPT09Yy5IZWFydGJlYXRNZXNzYWdlVHlwZS5oZWFydGJlYXRfcmVxdWVzdCl7aWYoZS5oYW5kc2hha2luZ3x8bz5hLmxlbmd0aClyZXR1cm4gZS5wcm9jZXNzKCk7Yy5xdWV1ZShlLGMuY3JlYXRlUmVjb3JkKGUse3R5cGU6Yy5Db250ZW50VHlwZS5oZWFydGJlYXQsZGF0YTpjLmNyZWF0ZUhlYXJ0YmVhdChjLkhlYXJ0YmVhdE1lc3NhZ2VUeXBlLmhlYXJ0YmVhdF9yZXNwb25zZSxhKX0pKSxjLmZsdXNoKGUpfWVsc2UgaWYoaT09PWMuSGVhcnRiZWF0TWVzc2FnZVR5cGUuaGVhcnRiZWF0X3Jlc3BvbnNlKXtpZihhIT09ZS5leHBlY3RlZEhlYXJ0YmVhdFBheWxvYWQpcmV0dXJuIGUucHJvY2VzcygpO2UuaGVhcnRiZWF0UmVjZWl2ZWQmJmUuaGVhcnRiZWF0UmVjZWl2ZWQoZSxuLnV0aWwuY3JlYXRlQnVmZmVyKGEpKX1lLnByb2Nlc3MoKX07dmFyIGY9MSxsPTIsaD0zLHA9NCxkPTUseT02LGc9Nyx2PTgsbT0xLGI9MixfPTMsUz00LEU9NSx3PTYsVD1jLmhhbmRsZVVuZXhwZWN0ZWQsQT1jLmhhbmRsZUNoYW5nZUNpcGhlclNwZWMsQz1jLmhhbmRsZUFsZXJ0LHg9Yy5oYW5kbGVIYW5kc2hha2UsST1jLmhhbmRsZUFwcGxpY2F0aW9uRGF0YSxrPWMuaGFuZGxlSGVhcnRiZWF0LE89W107T1tjLkNvbm5lY3Rpb25FbmQuY2xpZW50XT1bW1QsQyx4LFQsa10sW1QsQyx4LFQsa10sW1QsQyx4LFQsa10sW1QsQyx4LFQsa10sW1QsQyx4LFQsa10sW0EsQyxULFQsa10sW1QsQyx4LFQsa10sW1QsQyx4LEksa10sW1QsQyx4LFQsa11dLE9bYy5Db25uZWN0aW9uRW5kLnNlcnZlcl09W1tULEMseCxULGtdLFtULEMseCxULGtdLFtULEMseCxULGtdLFtULEMseCxULGtdLFtBLEMsVCxULGtdLFtULEMseCxULGtdLFtULEMseCxJLGtdLFtULEMseCxULGtdXTt2YXIgTj1jLmhhbmRsZUhlbGxvUmVxdWVzdCxQPWMuaGFuZGxlU2VydmVySGVsbG8sUj1jLmhhbmRsZUNlcnRpZmljYXRlLEI9Yy5oYW5kbGVTZXJ2ZXJLZXlFeGNoYW5nZSxNPWMuaGFuZGxlQ2VydGlmaWNhdGVSZXF1ZXN0LEw9Yy5oYW5kbGVTZXJ2ZXJIZWxsb0RvbmUsRD1jLmhhbmRsZUZpbmlzaGVkLGo9W107altjLkNvbm5lY3Rpb25FbmQuY2xpZW50XT1bW1QsVCxQLFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxUXSxbTixULFQsVCxULFQsVCxULFQsVCxULFIsQixNLEwsVCxULFQsVCxULFRdLFtOLFQsVCxULFQsVCxULFQsVCxULFQsVCxCLE0sTCxULFQsVCxULFQsVF0sW04sVCxULFQsVCxULFQsVCxULFQsVCxULFQsTSxMLFQsVCxULFQsVCxUXSxbTixULFQsVCxULFQsVCxULFQsVCxULFQsVCxULEwsVCxULFQsVCxULFRdLFtOLFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVF0sW04sVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxEXSxbTixULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFRdLFtOLFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVF1dO3ZhciBVPWMuaGFuZGxlQ2xpZW50SGVsbG8sRj1jLmhhbmRsZUNsaWVudEtleUV4Y2hhbmdlLFY9Yy5oYW5kbGVDZXJ0aWZpY2F0ZVZlcmlmeTtqW2MuQ29ubmVjdGlvbkVuZC5zZXJ2ZXJdPVtbVCxVLFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFRdLFtULFQsVCxULFQsVCxULFQsVCxULFQsUixULFQsVCxULFQsVCxULFQsVF0sW1QsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsRixULFQsVCxUXSxbVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVixULFQsVCxULFRdLFtULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVF0sW1QsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxEXSxbVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFRdLFtULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVCxULFQsVF1dLGMuZ2VuZXJhdGVLZXlzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9aSxuPXQuY2xpZW50X3JhbmRvbSt0LnNlcnZlcl9yYW5kb207ZS5zZXNzaW9uLnJlc3VtaW5nfHwodC5tYXN0ZXJfc2VjcmV0PXIodC5wcmVfbWFzdGVyX3NlY3JldCwibWFzdGVyIHNlY3JldCIsbiw0OCkuYnl0ZXMoKSx0LnByZV9tYXN0ZXJfc2VjcmV0PW51bGwpLG49dC5zZXJ2ZXJfcmFuZG9tK3QuY2xpZW50X3JhbmRvbTt2YXIgbz0yKnQubWFjX2tleV9sZW5ndGgrMip0LmVuY19rZXlfbGVuZ3RoLGE9ZS52ZXJzaW9uLm1ham9yPT09Yy5WZXJzaW9ucy5UTFNfMV8wLm1ham9yJiZlLnZlcnNpb24ubWlub3I9PT1jLlZlcnNpb25zLlRMU18xXzAubWlub3I7YSYmKG8rPTIqdC5maXhlZF9pdl9sZW5ndGgpO3ZhciBzPXIodC5tYXN0ZXJfc2VjcmV0LCJrZXkgZXhwYW5zaW9uIixuLG8pLHU9e2NsaWVudF93cml0ZV9NQUNfa2V5OnMuZ2V0Qnl0ZXModC5tYWNfa2V5X2xlbmd0aCksc2VydmVyX3dyaXRlX01BQ19rZXk6cy5nZXRCeXRlcyh0Lm1hY19rZXlfbGVuZ3RoKSxjbGllbnRfd3JpdGVfa2V5OnMuZ2V0Qnl0ZXModC5lbmNfa2V5X2xlbmd0aCksc2VydmVyX3dyaXRlX2tleTpzLmdldEJ5dGVzKHQuZW5jX2tleV9sZW5ndGgpfTtyZXR1cm4gYSYmKHUuY2xpZW50X3dyaXRlX0lWPXMuZ2V0Qnl0ZXModC5maXhlZF9pdl9sZW5ndGgpLHUuc2VydmVyX3dyaXRlX0lWPXMuZ2V0Qnl0ZXModC5maXhlZF9pdl9sZW5ndGgpKSx1fSxjLmNyZWF0ZUNvbm5lY3Rpb25TdGF0ZT1mdW5jdGlvbihlKXt2YXIgdD1lLmVudGl0eT09PWMuQ29ubmVjdGlvbkVuZC5jbGllbnQscj1mdW5jdGlvbigpe3ZhciBlPXtzZXF1ZW5jZU51bWJlcjpbMCwwXSxtYWNLZXk6bnVsbCxtYWNMZW5ndGg6MCxtYWNGdW5jdGlvbjpudWxsLGNpcGhlclN0YXRlOm51bGwsY2lwaGVyRnVuY3Rpb246ZnVuY3Rpb24oZSl7cmV0dXJuITB9LGNvbXByZXNzaW9uU3RhdGU6bnVsbCxjb21wcmVzc0Z1bmN0aW9uOmZ1bmN0aW9uKGUpe3JldHVybiEwfSx1cGRhdGVTZXF1ZW5jZU51bWJlcjpmdW5jdGlvbigpezQyOTQ5NjcyOTU9PT1lLnNlcXVlbmNlTnVtYmVyWzFdPyhlLnNlcXVlbmNlTnVtYmVyWzFdPTAsKytlLnNlcXVlbmNlTnVtYmVyWzBdKTorK2Uuc2VxdWVuY2VOdW1iZXJbMV19fTtyZXR1cm4gZX0sbj17cmVhZDpyKCksd3JpdGU6cigpfTtpZihuLnJlYWQudXBkYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4ucmVhZC5jaXBoZXJGdW5jdGlvbih0LG4ucmVhZCk/bi5yZWFkLmNvbXByZXNzRnVuY3Rpb24oZSx0LG4ucmVhZCl8fGUuZXJyb3IoZSx7bWVzc2FnZToiQ291bGQgbm90IGRlY29tcHJlc3MgcmVjb3JkLiIsc2VuZDohMCxhbGVydDp7bGV2ZWw6Yy5BbGVydC5MZXZlbC5mYXRhbCxkZXNjcmlwdGlvbjpjLkFsZXJ0LkRlc2NyaXB0aW9uLmRlY29tcHJlc3Npb25fZmFpbHVyZX19KTplLmVycm9yKGUse21lc3NhZ2U6IkNvdWxkIG5vdCBkZWNyeXB0IHJlY29yZCBvciBiYWQgTUFDLiIsc2VuZDohMCxhbGVydDp7bGV2ZWw6Yy5BbGVydC5MZXZlbC5mYXRhbCxkZXNjcmlwdGlvbjpjLkFsZXJ0LkRlc2NyaXB0aW9uLmJhZF9yZWNvcmRfbWFjfX0pLCFlLmZhaWx9LG4ud3JpdGUudXBkYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4ud3JpdGUuY29tcHJlc3NGdW5jdGlvbihlLHQsbi53cml0ZSk/bi53cml0ZS5jaXBoZXJGdW5jdGlvbih0LG4ud3JpdGUpfHxlLmVycm9yKGUse21lc3NhZ2U6IkNvdWxkIG5vdCBlbmNyeXB0IHJlY29yZC4iLHNlbmQ6ITEsYWxlcnQ6e2xldmVsOmMuQWxlcnQuTGV2ZWwuZmF0YWwsZGVzY3JpcHRpb246Yy5BbGVydC5EZXNjcmlwdGlvbi5pbnRlcm5hbF9lcnJvcn19KTplLmVycm9yKGUse21lc3NhZ2U6IkNvdWxkIG5vdCBjb21wcmVzcyByZWNvcmQuIixzZW5kOiExLGFsZXJ0OntsZXZlbDpjLkFsZXJ0LkxldmVsLmZhdGFsLGRlc2NyaXB0aW9uOmMuQWxlcnQuRGVzY3JpcHRpb24uaW50ZXJuYWxfZXJyb3J9fSksIWUuZmFpbH0sZS5zZXNzaW9uKXt2YXIgaT1lLnNlc3Npb24uc3A7c3dpdGNoKGUuc2Vzc2lvbi5jaXBoZXJTdWl0ZS5pbml0U2VjdXJpdHlQYXJhbWV0ZXJzKGkpLGkua2V5cz1jLmdlbmVyYXRlS2V5cyhlLGkpLG4ucmVhZC5tYWNLZXk9dD9pLmtleXMuc2VydmVyX3dyaXRlX01BQ19rZXk6aS5rZXlzLmNsaWVudF93cml0ZV9NQUNfa2V5LG4ud3JpdGUubWFjS2V5PXQ/aS5rZXlzLmNsaWVudF93cml0ZV9NQUNfa2V5Omkua2V5cy5zZXJ2ZXJfd3JpdGVfTUFDX2tleSxlLnNlc3Npb24uY2lwaGVyU3VpdGUuaW5pdENvbm5lY3Rpb25TdGF0ZShuLGUsaSksaS5jb21wcmVzc2lvbl9hbGdvcml0aG0pe2Nhc2UgYy5Db21wcmVzc2lvbk1ldGhvZC5ub25lOmJyZWFrO2Nhc2UgYy5Db21wcmVzc2lvbk1ldGhvZC5kZWZsYXRlOm4ucmVhZC5jb21wcmVzc0Z1bmN0aW9uPWEsbi53cml0ZS5jb21wcmVzc0Z1bmN0aW9uPW87YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIGNvbXByZXNzaW9uIGFsZ29yaXRobS4iKX19cmV0dXJuIG59LGMuY3JlYXRlUmFuZG9tPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IERhdGUsdD0rZSs2ZTQqZS5nZXRUaW1lem9uZU9mZnNldCgpLHI9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3JldHVybiByLnB1dEludDMyKHQpLHIucHV0Qnl0ZXMobi5yYW5kb20uZ2V0Qnl0ZXMoMjgpKSxyfSxjLmNyZWF0ZVJlY29yZD1mdW5jdGlvbihlLHQpe3JldHVybiB0LmRhdGE/e3R5cGU6dC50eXBlLHZlcnNpb246e21ham9yOmUudmVyc2lvbi5tYWpvcixtaW5vcjplLnZlcnNpb24ubWlub3J9LGxlbmd0aDp0LmRhdGEubGVuZ3RoKCksZnJhZ21lbnQ6dC5kYXRhfTpudWxsfSxjLmNyZWF0ZUFsZXJ0PWZ1bmN0aW9uKGUsdCl7dmFyIHI9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3JldHVybiByLnB1dEJ5dGUodC5sZXZlbCksci5wdXRCeXRlKHQuZGVzY3JpcHRpb24pLGMuY3JlYXRlUmVjb3JkKGUse3R5cGU6Yy5Db250ZW50VHlwZS5hbGVydCxkYXRhOnJ9KX0sYy5jcmVhdGVDbGllbnRIZWxsbz1mdW5jdGlvbihlKXtlLnNlc3Npb24uY2xpZW50SGVsbG9WZXJzaW9uPXttYWpvcjplLnZlcnNpb24ubWFqb3IsbWlub3I6ZS52ZXJzaW9uLm1pbm9yfTtmb3IodmFyIHQ9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpLHI9MDtyPGUuY2lwaGVyU3VpdGVzLmxlbmd0aDsrK3Ipe3ZhciBpPWUuY2lwaGVyU3VpdGVzW3JdO3QucHV0Qnl0ZShpLmlkWzBdKSx0LnB1dEJ5dGUoaS5pZFsxXSl9dmFyIG89dC5sZW5ndGgoKSxhPW4udXRpbC5jcmVhdGVCdWZmZXIoKTthLnB1dEJ5dGUoYy5Db21wcmVzc2lvbk1ldGhvZC5ub25lKTt2YXIgcz1hLmxlbmd0aCgpLGY9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO2lmKGUudmlydHVhbEhvc3Qpe3ZhciBsPW4udXRpbC5jcmVhdGVCdWZmZXIoKTtsLnB1dEJ5dGUoMCksbC5wdXRCeXRlKDApO3ZhciBoPW4udXRpbC5jcmVhdGVCdWZmZXIoKTtoLnB1dEJ5dGUoMCksdShoLDIsbi51dGlsLmNyZWF0ZUJ1ZmZlcihlLnZpcnR1YWxIb3N0KSk7dmFyIHA9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3UocCwyLGgpLHUobCwyLHApLGYucHV0QnVmZmVyKGwpfXZhciBkPWYubGVuZ3RoKCk7ZD4wJiYoZCs9Mik7dmFyIHk9ZS5zZXNzaW9uLmlkLGc9eS5sZW5ndGgrMSsyKzQrMjgrMitvKzErcytkLHY9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3JldHVybiB2LnB1dEJ5dGUoYy5IYW5kc2hha2VUeXBlLmNsaWVudF9oZWxsbyksdi5wdXRJbnQyNChnKSx2LnB1dEJ5dGUoZS52ZXJzaW9uLm1ham9yKSx2LnB1dEJ5dGUoZS52ZXJzaW9uLm1pbm9yKSx2LnB1dEJ5dGVzKGUuc2Vzc2lvbi5zcC5jbGllbnRfcmFuZG9tKSx1KHYsMSxuLnV0aWwuY3JlYXRlQnVmZmVyKHkpKSx1KHYsMix0KSx1KHYsMSxhKSxkPjAmJnUodiwyLGYpLHZ9LGMuY3JlYXRlU2VydmVySGVsbG89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zZXNzaW9uLmlkLHI9dC5sZW5ndGgrMSsyKzQrMjgrMisxLGk9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3JldHVybiBpLnB1dEJ5dGUoYy5IYW5kc2hha2VUeXBlLnNlcnZlcl9oZWxsbyksaS5wdXRJbnQyNChyKSxpLnB1dEJ5dGUoZS52ZXJzaW9uLm1ham9yKSxpLnB1dEJ5dGUoZS52ZXJzaW9uLm1pbm9yKSxpLnB1dEJ5dGVzKGUuc2Vzc2lvbi5zcC5zZXJ2ZXJfcmFuZG9tKSx1KGksMSxuLnV0aWwuY3JlYXRlQnVmZmVyKHQpKSxpLnB1dEJ5dGUoZS5zZXNzaW9uLmNpcGhlclN1aXRlLmlkWzBdKSxpLnB1dEJ5dGUoZS5zZXNzaW9uLmNpcGhlclN1aXRlLmlkWzFdKSxpLnB1dEJ5dGUoZS5zZXNzaW9uLmNvbXByZXNzaW9uTWV0aG9kKSxpfSxjLmNyZWF0ZUNlcnRpZmljYXRlPWZ1bmN0aW9uKGUpe3ZhciB0LHI9ZS5lbnRpdHk9PT1jLkNvbm5lY3Rpb25FbmQuY2xpZW50LGk9bnVsbDtlLmdldENlcnRpZmljYXRlJiYodD1yP2Uuc2Vzc2lvbi5jZXJ0aWZpY2F0ZVJlcXVlc3Q="
}