3NAxHUEaM6RAG7rVDPL9L6DFZWkrqFtY98t · data · 2.7c767379.chunk.js_40
{
"2.7c767379.chunk.js_40": "base64:KS5jb25jYXQoQXJyYXkuZnJvbShpKSkpfX0sYWRhcHRlcjoic2lnblJlcXVlc3QifSxuW28uTUFUQ0hFUl9PUkRFUlNdPXtnZXRCeXRlczp7MTpmdW5jdGlvbihlKXt2YXIgdD1lLnRpbWVzdGFtcCxyPWUuc2VuZGVyUHVibGljS2V5LG49ZyhyKSxpPXkodCk7cmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShBcnJheS5mcm9tKG4pLmNvbmNhdChBcnJheS5mcm9tKGkpKSl9fSxhZGFwdGVyOiJzaWduUmVxdWVzdCJ9LG5bby5DUkVBVEVfT1JERVJdPXtnZXRCeXRlczp7MDp2LnNlcmlhbGl6ZU9yZGVyLDE6di5zZXJpYWxpemVPcmRlciwyOnYuc2VyaWFsaXplT3JkZXIsMzp2LnNlcmlhbGl6ZU9yZGVyfSx0b05vZGU6ZnVuY3Rpb24oZSl7dmFyIHQ9Yy50b09yZGVyUHJpY2UoZSk7cmV0dXJuIGU9aSh7fSxlLHtwcmljZTpmLk1vbmV5LmZyb21Db2lucyh0LGUucHJpY2UuYXNzZXQpfSksbShlLHMub3JkZXIpfSxhZGFwdGVyOiJzaWduT3JkZXIifSxuW28uQ0FOQ0VMX09SREVSXT17Z2V0Qnl0ZXM6ezA6XywxOl99LGFkYXB0ZXI6InNpZ25SZXF1ZXN0Iix0b05vZGU6ZnVuY3Rpb24oZSl7cmV0dXJue29yZGVySWQ6ZS5vcmRlcklkLHNlbmRlcjplLnNlbmRlclB1YmxpY0tleSxzZW5kZXJQdWJsaWNLZXk6ZS5zZW5kZXJQdWJsaWNLZXksc2lnbmF0dXJlOmUucHJvb2ZzJiZlLnByb29mc1swXX19fSxuW28uVFJBTlNGRVJdPXtnZXRCeXRlczp7Mjp2LnNlcmlhbGl6ZVR4fSx0b05vZGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbShpKHt9LGUse3JlY2lwaWVudDpjLnJlY2lwaWVudChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKShlLnJlY2lwaWVudCksYXR0YWNobWVudDpjLmF0dGFjaG1lbnQoZS5hdHRhY2htZW50KX0pLHMudHJhbnNmZXIpfSxhZGFwdGVyOiJzaWduVHJhbnNhY3Rpb24ifSxuW28uSVNTVUVdPXtnZXRCeXRlczp7Mjp2LnNlcmlhbGl6ZVR4fSx0b05vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG0oaSh7fSxlLHtxdWFudGl0eTplLmFtb3VudHx8ZS5xdWFudGl0eSxzY3JpcHQ6YihlLnNjcmlwdCl9KSxzLmlzc3VlKX0sYWRhcHRlcjoic2lnblRyYW5zYWN0aW9uIn0sbltvLlJFSVNTVUVdPXtnZXRCeXRlczp7Mjp2LnNlcmlhbGl6ZVR4fSx0b05vZGU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5hbW91bnR8fGUucXVhbnRpdHk7cmV0dXJuIG0oaSh7fSxlLHtxdWFudGl0eTp0fSkscy5yZWlzc3VlKX0sYWRhcHRlcjoic2lnblRyYW5zYWN0aW9uIn0sbltvLkJVUk5dPXtnZXRCeXRlczp7Mjp2LnNlcmlhbGl6ZVR4fSx0b05vZGU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5hbW91bnR8fGUucXVhbnRpdHk7cmV0dXJuIG0oaSh7fSxlLHtxdWFudGl0eTp0fSkscy5idXJuKX0sYWRhcHRlcjoic2lnblRyYW5zYWN0aW9uIn0sbltvLkVYQ0hBTkdFXT17Z2V0Qnl0ZXM6ezA6di5zZXJpYWxpemVUeCwyOnYuc2VyaWFsaXplVHh9LHRvTm9kZTpmdW5jdGlvbihlKXt2YXIgdD1tKGUpLHI9ZS5idXlPcmRlci5zaWduYXR1cmV8fGUuYnV5T3JkZXIucHJvb2ZzWzBdLG49ZS5idXlPcmRlci5wcm9vZnM/ZS5idXlPcmRlci5wcm9vZnM6ZS5idXlPcmRlci5zaWduYXR1cmUsbz1pKHt9LHQuYnV5T3JkZXIse3NpZ25hdHVyZTpyLHByb29mczpufSksYT1lLnNlbGxPcmRlci5zaWduYXR1cmV8fGUuc2VsbE9yZGVyLnByb29mc1swXSx1PWUuc2VsbE9yZGVyLnByb29mcz9lLnNlbGxPcmRlci5wcm9vZnM6ZS5zZWxsT3JkZXIuc2lnbmF0dXJlLGM9aSh7fSx0LnNlbGxPcmRlcix7c2lnbmF0dXJlOmEscHJvb2ZzOnV9KTtyZXR1cm4gcy5leGNoYW5nZShpKHt9LHQse29yZGVyMTpvLG9yZGVyMjpjfSkpfSxhZGFwdGVyOiJzaWduVHJhbnNhY3Rpb24ifSxuW28uTEVBU0VdPXtnZXRCeXRlczp7Mjp2LnNlcmlhbGl6ZVR4fSx0b05vZGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbShpKHt9LGUse3JlY2lwaWVudDpjLnJlY2lwaWVudChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKShlLnJlY2lwaWVudCl9KSxzLmxlYXNlKX0sYWRhcHRlcjoic2lnblRyYW5zYWN0aW9uIn0sbltvLkNBTkNFTF9MRUFTSU5HXT17Z2V0Qnl0ZXM6ezI6di5zZXJpYWxpemVUeH0sdG9Ob2RlOmZ1bmN0aW9uKGUpe3JldHVybiBtKGUscy5jYW5jZWxMZWFzZSl9LGFkYXB0ZXI6InNpZ25UcmFuc2FjdGlvbiJ9LG5bby5DUkVBVEVfQUxJQVNdPXtnZXRCeXRlczp7Mjp2LnNlcmlhbGl6ZVR4fSx0b05vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGkoe30sbShlLHMuYWxpYXMpLHtjaGFpbklkOmUuY2hhaW5JZH0pfSxhZGFwdGVyOiJzaWduVHJhbnNhY3Rpb24ifSxuW28uTUFTU19UUkFOU0ZFUl09e2dldEJ5dGVzOnswOnYuc2VyaWFsaXplVHgsMTp2LnNlcmlhbGl6ZVR4fSx0b05vZGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbShpKHt9LGUse2Fzc2V0SWQ6ZS5hc3NldElkfHxlLnRyYW5zZmVyc1swXS5hbW91bnQuYXNzZXQuaWQsdHJhbnNmZXJzOmUudHJhbnNmZXJzLm1hcChmdW5jdGlvbihlKXt2YXIgcj1jLnJlY2lwaWVudChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKShlLm5hbWV8fGUucmVjaXBpZW50KTtyZXR1cm4gaSh7fSxlLHtyZWNpcGllbnQ6cn0pfSksYXR0YWNobWVudDpjLmF0dGFjaG1lbnQoZS5hdHRhY2htZW50KX0pLHMubWFzc1RyYW5zZmVyKX0sYWRhcHRlcjoic2lnblRyYW5zYWN0aW9uIn0sbltvLkRBVEFdPXtnZXRCeXRlczp7MDp2LnNlcmlhbGl6ZVR4LDE6di5zZXJpYWxpemVUeH0sdG9Ob2RlOmZ1bmN0aW9uKGUpe3JldHVybiBtKGUscy5kYXRhKX0sYWRhcHRlcjoic2lnblRyYW5zYWN0aW9uIn0sbltvLlNFVF9TQ1JJUFRdPXtnZXRCeXRlczp7MDp2LnNlcmlhbGl6ZVR4LDE6di5zZXJpYWxpemVUeH0sdG9Ob2RlOmZ1bmN0aW9uKGUpe3JldHVybiBtKGkoe30sZSx7c2NyaXB0OmIoZS5zY3JpcHQpfSkscy5zZXRTY3JpcHQpfSxhZGFwdGVyOiJzaWduVHJhbnNhY3Rpb24ifSxuW28uU1BPTlNPUlNISVBdPXtnZXRCeXRlczp7MDp2LnNlcmlhbGl6ZVR4LDE6di5zZXJpYWxpemVUeH0sdG9Ob2RlOmZ1bmN0aW9uKGUpe3JldHVybiBtKGUscy5zcG9uc29yc2hpcCl9LGFkYXB0ZXI6InNpZ25UcmFuc2FjdGlvbiJ9LG5bby5TRVRfQVNTRVRfU0NSSVBUXT17Z2V0Qnl0ZXM6ezA6di5zZXJpYWxpemVUeCwxOnYuc2VyaWFsaXplVHh9LHRvTm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gbShpKHt9LGUse3NjcmlwdDpiKGUuc2NyaXB0KX0pLHMuc2V0QXNzZXRTY3JpcHQpfSxhZGFwdGVyOiJzaWduVHJhbnNhY3Rpb24ifSxuW28uU0NSSVBUX0lOVk9DQVRJT05dPXtnZXRCeXRlczp7MDp2LnNlcmlhbGl6ZVR4LDE6di5zZXJpYWxpemVUeH0sdG9Ob2RlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG0oaSh7fSxlLHtkQXBwOmMucmVjaXBpZW50KFN0cmluZy5mcm9tQ2hhckNvZGUodCkpKGUuZEFwcCl9KSxzLmludm9rZVNjcmlwdCl9LGFkYXB0ZXI6InNpZ25UcmFuc2FjdGlvbiJ9LG4pfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1yKDY4Nyk7dC5jb252ZXJ0PW4uY29udmVydDt2YXIgaT1yKDY4OSk7dC50b05vZGU9aS50b05vZGV9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuaXNCYXNlNjQ9ZnVuY3Rpb24oZSl7cmV0dXJuL14oW0EtWmEtejAtOStcL117NH0pKihbQS1aYS16MC05K1wvXXs0fXxbQS1aYS16MC05K1wvXXszfT18W0EtWmEtejAtOStcL117Mn09PSkkLy50ZXN0KGUpfSx0LmlzU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGV9LHQucmVxdWlyZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWV9LHQuY2hhcnNJbkRpY3Rpb25hcnk9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0LnNwbGl0KCIiKS5ldmVyeShmdW5jdGlvbih0KXtyZXR1cm4gZS5pbmNsdWRlcyh0KX0pfX0sdC5jcmVhdGVWYWxpZGF0b3I9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIGUocik/bnVsbDp0fX0sdC5yZXF1aXJlZFZhbGlkYXRvcj1mdW5jdGlvbihlKXtyZXR1cm4gdC5jcmVhdGVWYWxpZGF0b3IodC5yZXF1aXJlZCwnUHJvcGVydHkgIicrZSsnIiBpcyByZXF1aXJlZCEnKX0sdC52YWxpZGF0ZT1mdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI9ZS5yZWR1Y2UoZnVuY3Rpb24oZSxyKXt2YXIgbj1yKHQpO3JldHVybiBuJiZlLnB1c2gobiksZX0sW10pO2lmKHIubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiVmFsaWRhdGlvbiBlcnJvciEgRGV0YWlsczogIitKU09OLnN0cmluZ2lmeShyLG51bGwsNCkpO3JldHVybiB0fX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPXIoMTY4KSxpPXIoMzkyKSxvPXIoNzEwKSxhPW4ucHJlcGFyZS5wcm9jZXNzb3JzO3QuZ2V0VmFsaWRhdGVTY2hlbWE9ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuKHQ9e30pW2kuU0lHTl9UWVBFLk1BVENIRVJfT1JERVJTXT1bby5zdHJpbmcoKSgic2VuZGVyUHVibGljS2V5IixudWxsLG51bGwsITApLG8udGltZXN0YW1wKCkoInRpbWVzdGFtcCIsbnVsbCxhLnRpbWVzdGFtcCldLHRbaS5TSUdOX1RZUEUuQVVUSF09W28uc3RyaW5nKCkoInByZWZpeCIsbnVsbCxhLmFkZFZhbHVlKCJXYXZlc1dhbGxldEF1dGhlbnRpY2F0aW9uIiksITApLG8uc3RyaW5nKCkoImhvc3QiKSxvLnN0cmluZygpKCJkYXRhIildLHRbaS5TSUdOX1RZUEUuQ09JTk9NQVRfQ09ORklSTUFUSU9OXT1bby5zdHJpbmcoKSgicHJlZml4IixudWxsLGEuYWRkVmFsdWUoIkNvaW5vbWF0IiksITApLG8udGltZXN0YW1wKCkoInRpbWVzdGFtcCIsbnVsbCxhLnRpbWVzdGFtcCldLHRbaS5TSUdOX1RZUEUuQ1JFQVRFX09SREVSXT1bby5zdHJpbmcoKSgic2VuZGVyUHVibGljS2V5IixudWxsLG51bGwsITApLG8uc3RyaW5nKCkoIm1hdGNoZXJQdWJsaWNLZXkiKSxvLm1vbmV5KCkoImFtb3VudCIsImFtb3VudEFzc2V0IixhLm1vbmV5VG9Bc3NldElkKSxvLm1vbmV5KCkoInByaWNlIiwicHJpY2VBc3NldCIsYS5tb25leVRvQXNzZXRJZCksby5vcmRlclR5cGUoKSgib3JkZXJUeXBlIiksby5tb25leSgpKCJhbW91bnQiLCJhbW91bnQiLGEudG9CaWdOdW1iZXIpLG8uZnJvbURhdGEoKShudWxsLCJwcmljZSIsYS50b09yZGVyUHJpY2UpLG8ubW9uZXkoKSgibWF0Y2hlckZlZSIsbnVsbCxhLnRvQmlnTnVtYmVyKSxvLnRpbWVzdGFtcCgpKCJleHBpcmF0aW9uIixudWxsLGEuZXhwaXJhdGlvbiksby50aW1lc3RhbXAoKSgidGltZXN0YW1wIixudWxsLGEudGltZXN0YW1wKV0sdFtpLlNJR05fVFlQRS5DQU5DRUxfT1JERVJdPVtvLnN0cmluZygpKCJzZW5kZXJQdWJsaWNLZXkiLG51bGwsbnVsbCwhMCksby5zdHJpbmcoKSgiaWQiLCJvcmRlcklkIildLHRbaS5TSUdOX1RZUEUuSVNTVUVdPVtvLnN0cmluZygpKCJzZW5kZXJQdWJsaWNLZXkiLG51bGwsbnVsbCwhMCksby5hc3NldE5hbWUoKSgibmFtZSIpLG8uYXNzZXREZXNjcmlwdGlvbigpKCJkZXNjcmlwdGlvbiIpLG8ubnVtYmVyKCkoImNoYWluSWQiLG51bGwsYS5hZGRWYWx1ZShmdW5jdGlvbigpe3JldHVybiBlfSksITApLG8ubnVtYmVyTGlrZSgpKCJxdWFudGl0eSIsbnVsbCxhLnRvQmlnTnVtYmVyKSxvLnByZWNpc2lvbigpKCJwcmVjaXNpb24iKSxvLmJvb2xlYW4oKSgicmVpc3N1YWJsZSIpLG8uc2NyaXB0KCkoInNjcmlwdCIsbnVsbCxhLm9yU3RyaW5nLCEwKSxvLm51bWJlckxpa2UoKSgiZmVlIixudWxsLGEudG9CaWdOdW1iZXIpLG8udGltZXN0YW1wKCkoInRpbWVzdGFtcCIsbnVsbCxhLnRpbWVzdGFtcCldLHRbaS5TSUdOX1RZUEUuUkVJU1NVRV09W28uc3RyaW5nKCkoInNlbmRlclB1YmxpY0tleSIsbnVsbCxudWxsLCEwKSxvLm51bWJlcigpKCJjaGFpbklkIixudWxsLGEuYWRkVmFsdWUoZnVuY3Rpb24oKXtyZXR1cm4gZX0pLCEwKSxvLmFzc2V0KCkoImFzc2V0SWQiKSxvLm51bWJlckxpa2UoKSgicXVhbnRpdHkiLG51bGwsYS50b0JpZ051bWJlciksby5ib29sZWFuKCkoInJlaXNzdWFibGUiKSxvLm51bWJlckxpa2UoKSgiZmVlIixudWxsLGEudG9CaWdOdW1iZXIpLG8udGltZXN0YW1wKCkoInRpbWVzdGFtcCIsbnVsbCxhLnRpbWVzdGFtcCldLHRbaS5TSUdOX1RZUEUuRVhDSEFOR0VdPVtvLnN0cmluZygpKCJzZW5kZXJQdWJsaWNLZXkiLG51bGwsbnVsbCwhMCksby50aW1lc3RhbXAoKSgidGltZXN0YW1wIixudWxsLGEudGltZXN0YW1wKSxvLm51bWJlckxpa2UoKSgiZmVlIixudWxsLGEudG9CaWdOdW1iZXIpLG8uZnJvbURhdGEoKSgiYnV5T3JkZXIiKSxvLmZyb21EYXRhKCkoInNlbGxPcmRlciIpLG8ubnVtYmVyTGlrZSgpKCJhbW91bnQiLCJhbW91bnQiLGEudG9CaWdOdW1iZXIpLG8ubnVtYmVyTGlrZSgpKCJwcmljZSIsInByaWNlIixhLnRvQmlnTnVtYmVyKSxvLm51bWJlckxpa2UoKSgiYnV5TWF0Y2hlckZlZSIsImJ1eU1hdGNoZXJGZWUiLGEudG9CaWdOdW1iZXIpLG8ubnVtYmVyTGlrZSgpKCJzZWxsTWF0Y2hlckZlZSIsInNlbGxNYXRjaGVyRmVlIixhLnRvQmlnTnVtYmVyKV0sdFtpLlNJR05fVFlQRS5CVVJOXT1bby5zdHJpbmcoKSgic2VuZGVyUHVibGljS2V5IixudWxsLG51bGwsITApLG8ubnVtYmVyKCkoImNoYWluSWQiLG51bGwsYS5hZGRWYWx1ZShmdW5jdGlvbigpe3JldHVybiBlfSksITApLG8uYXNzZXQoKSgiYXNzZXRJZCIpLG8ubnVtYmVyTGlrZSgpKCJhbW91bnQiLCJxdWFudGl0eSIsYS50b0JpZ051bWJlciksby5udW1iZXJMaWtlKCkoImZlZSIsbnVsbCxhLnRvQmlnTnVtYmVyKSxvLnRpbWVzdGFtcCgpKCJ0aW1lc3RhbXAiLG51bGwsYS50aW1lc3RhbXApXSx0W2kuU0lHTl9UWVBFLlNQT05TT1JTSElQXT1bby5zdHJpbmcoKSgic2VuZGVyUHVibGljS2V5IixudWxsLG51bGwsITApLG8ubW9uZXkoKSgibWluU3BvbnNvcmVkQXNzZXRGZWUiLCJhc3NldElkIixhLm1vbmV5VG9Bc3NldElkKSxvLm51bWJlckxpa2UoKSgibWluU3BvbnNvcmVkQXNzZXRGZWUiLG51bGwsYS50b0JpZ051bWJlciksby5udW1iZXJMaWtlKCkoImZlZSIsbnVsbCxhLnRvQmlnTnVtYmVyKSxvLnRpbWVzdGFtcCgpKCJ0aW1lc3RhbXAiLG51bGwsYS50aW1lc3RhbXApXSx0W2kuU0lHTl9UWVBFLlRSQU5TRkVSXT1bby5zdHJpbmcoKSgic2VuZGVyUHVibGljS2V5IixudWxsLG51bGwsITApLG8ubW9uZXkoKSgiYW1vdW50IiwiYXNzZXRJZCIsYS5tb25leVRvQXNzZXRJZCksby5yZXF1aXJlZCgpKCJhbW91bnQiLG51bGwsYS50b0JpZ051bWJlciksby5tb25leSgpKCJmZWUiLCJmZWVBc3NldElkIixhLm1vbmV5VG9Bc3NldElkKSxvLnJlcXVpcmVkKCkoImZlZSIsImZlZSIsYS50b0JpZ051bWJlciksby50aW1lc3RhbXAoKSgidGltZXN0YW1wIixudWxsLGEudGltZXN0YW1wKSxvLmFsaWFzT3JBZGRyZXNzKGUpKCJyZWNpcGllbnQiKSxvLmF0dGFjaG1lbnQoKSgiYXR0YWNobWVudCIsbnVsbCxhLm9yU3RyaW5nLCEwKV0sdFtpLlNJR05fVFlQRS5MRUFTRV09W28uc3RyaW5nKCkoInNlbmRlclB1YmxpY0tleSIsbnVsbCxudWxsLCEwKSxvLm51bWJlcigpKCJjaGFpbklkIixudWxsLGEuYWRkVmFsdWUoZnVuY3Rpb24oKXtyZXR1cm4gZX0pLCEwKSxvLmFsaWFzT3JBZGRyZXNzKGUpKCJyZWNpcGllbnQiKSxvLm51bWJlckxpa2UoKSgiYW1vdW50IixudWxsLGEudG9CaWdOdW1iZXIpLG8ubnVtYmVyTGlrZSgpKCJmZWUiLG51bGwsYS50b0JpZ051bWJlciksby50aW1lc3RhbXAoKSgidGltZXN0YW1wIixudWxsLGEudGltZXN0YW1wKV0sdFtpLlNJR05fVFlQRS5DQU5DRUxfTEVBU0lOR109W28uc3RyaW5nKCkoInNlbmRlclB1YmxpY0tleSIsbnVsbCxudWxsLCEwKSxvLm51bWJlcigpKCJjaGFpbklkIixudWxsLGEuYWRkVmFsdWUoZnVuY3Rpb24oKXtyZXR1cm4gZX0pLCEwKSxvLnN0cmluZygpKCJsZWFzZUlkIiwidHJhbnNhY3Rpb25JZCIpLG8ubnVtYmVyTGlrZSgpKCJmZWUiLG51bGwsYS50b0JpZ051bWJlciksby50aW1lc3RhbXAoKSgidGltZXN0YW1wIixudWxsLGEudGltZXN0YW1wKV0sdFtpLlNJR05fVFlQRS5DUkVBVEVfQUxJQVNdPVtvLnN0cmluZygpKCJzZW5kZXJQdWJsaWNLZXkiLG51bGwsbnVsbCwhMCksby5udW1iZXIoKSgiY2hhaW5JZCIsbnVsbCxhLmFkZFZhbHVlKGZ1bmN0aW9uKCl7cmV0dXJuIGV9KSwhMCksby5hbGlhc05hbWUoZSkoImFsaWFzIiksby5udW1iZXJMaWtlKCkoImZlZSIsbnVsbCxhLnRvQmlnTnVtYmVyKSxvLnRpbWVzdGFtcCgpKCJ0aW1lc3RhbXAiLG51bGwsYS50aW1lc3RhbXApXSx0W2kuU0lHTl9UWVBFLk1BU1NfVFJBTlNGRVJdPVtvLnN0cmluZygpKCJzZW5kZXJQdWJsaWNLZXkiLG51bGwsbnVsbCwhMCksby5tb25leSgpKCJ0b3RhbEFtb3VudCIsImFzc2V0SWQiLGEubW9uZXlUb0Fzc2V0SWQpLG8udHJhbnNmZXJzKGUpKCJ0cmFuc2ZlcnMiLG51bGwsYS50cmFuc2ZlcnMoYS5ub1Byb2Nlc3MsYS50b0JpZ051bWJlcikpLG8ubnVtYmVyTGlrZSgpKCJmZWUiLG51bGwsYS50b0JpZ051bWJlciksby5hdHRhY2htZW50KCkoImF0dGFjaG1lbnQiLG51bGwsYS5vclN0cmluZywhMCksby50aW1lc3RhbXAoKSgidGltZXN0YW1wIixudWxsLGEudGltZXN0YW1wKV0sdFtpLlNJR05fVFlQRS5EQVRBXT1bby5zdHJpbmcoKSgic2VuZGVyUHVibGljS2V5IixudWxsLG51bGwsITApLG8ubnVtYmVyTGlrZSgpKCJmZWUiLG51bGwsYS50b0JpZ051bWJlciksby50aW1lc3RhbXAoKSgidGltZXN0YW1wIixudWxsLGEudGltZXN0YW1wKSxvLmRhdGEoKSgiZGF0YSIpXSx0W2kuU0lHTl9UWVBFLlNFVF9TQ1JJUFRdPVtvLnN0cmluZygpKCJzZW5kZXJQdWJsaWNLZXkiLG51bGwsbnVsbCwhMCksby5udW1iZXJMaWtlKCkoImZlZSIsbnVsbCxhLnRvQmlnTnVtYmVyKSxvLnRpbWVzdGFtcCgpKCJ0aW1lc3RhbXAiLG51bGwsYS50aW1lc3RhbXApLG8ubnVtYmVyKCkoImNoYWluSWQiLG51bGwsYS5hZGRWYWx1ZShmdW5jdGlvbigpe3JldHVybiBlfSksITApLG8uc2NyaXB0KCkoInNjcmlwdCIpXSx0W2kuU0lHTl9UWVBFLlNFVF9BU1NFVF9TQ1JJUFRdPVtvLnN0cmluZygpKCJzZW5kZXJQdWJsaWNLZXkiLG51bGwsbnVsbCwhMCksby5hc3NldCgpKCJhc3NldElkIiksby5udW1iZXJMaWtlKCkoImZlZSIsbnVsbCxhLnRvQmlnTnVtYmVyKSxvLnRpbWVzdGFtcCgpKCJ0aW1lc3RhbXAiLG51bGwsYS50aW1lc3RhbXApLG8ubnVtYmVyKCkoImNoYWluSWQiLG51bGwsYS5hZGRWYWx1ZShmdW5jdGlvbigpe3JldHVybiBlfSksITApLG8uYXNzZXRfc2NyaXB0KCkoInNjcmlwdCIpXSx0W2kuU0lHTl9UWVBFLlNDUklQVF9JTlZPQ0FUSU9OXT1bby5udW1iZXIoKSgidHlwZSIsbnVsbCxhLmFkZFZhbHVlKGZ1bmN0aW9uKCl7cmV0dXJuIGkuU0lHTl9UWVBFLlNDUklQVF9JTlZPQ0FUSU9OfSksITApLG8ubnVtYmVyKCkoInZlcnNpb24iLG51bGwsYS5hZGRWYWx1ZShmdW5jdGlvbigpe3JldHVybiAxfSksITApLG8uc3RyaW5nKCkoInNlbmRlclB1YmxpY0tleSIsbnVsbCxudWxsLCEwKSxvLmFsaWFzT3JBZGRyZXNzKGUpKCJkQXBwIiksby5jYWxsKCkoImNhbGwiLCJjYWxsIixhLmNhbGxGdW5jLCEwKSxvLnBheW1lbnQoKSgicGF5bWVudCIsbnVsbCxhLnBheW1lbnRzLCEwKSxvLm51bWJlckxpa2UoKSgiZmVlIixudWxsLGEudG9OdW1iZXJTdHJpbmcpLG8ubnVtYmVyTGlrZSgpKCJmZWUiLCJhc3NldElkIixhLm1vbmV5VG9Bc3NldElkKSxvLnRpbWVzdGFtcCgpKCJ0aW1lc3RhbXAiLG51bGwsYS50aW1lc3RhbXApLG8ubnVtYmVyKCkoImNoYWluSWQiLG51bGwsYS5hZGRWYWx1ZShlKSwhMCldLHR9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7Zm9yKHZhciByIGluIGUpdC5oYXNPd25Qcm9wZXJ0eShyKXx8KHRbcl09ZVtyXSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG4ocigxNzApKSxuKHIoMzk5KSksbihyKDQ1NSkpLG4ocig5NDEpKX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10aGlzJiZ0aGlzLl9fYXNzaWdufHxmdW5jdGlvbigpe3JldHVybihuPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTEsbj1hcmd1bWVudHMubGVuZ3RoO3I8bjtyKyspZm9yKHZhciBpIGluIHQ9YXJndW1lbnRzW3JdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGkpJiYoZVtpXT10W2ldKTtyZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0saT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIG5ldyhyfHwocj1Qcm9taXNlKSkoZnVuY3Rpb24oaSxvKXtmdW5jdGlvbiBhKGUpe3RyeXt1KG4ubmV4dChlKSl9Y2F0Y2godCl7byh0KX19ZnVuY3Rpb24gcyhlKXt0cnl7dShuLnRocm93KGUpKX1jYXRjaCh0KXtvKHQpfX1mdW5jdGlvbiB1KGUpe2UuZG9uZT9pKGUudmFsdWUpOm5ldyByKGZ1bmN0aW9uKHQpe3QoZS52YWx1ZSl9KS50aGVuKGEscyl9dSgobj1uLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSl9LG89dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGksbyxhPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmlbMF0pdGhyb3cgaVsxXTtyZXR1cm4gaVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBvPXtuZXh0OnMoMCksdGhyb3c6cygxKSxyZXR1cm46cygyKX0sImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJihvW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLG87ZnVuY3Rpb24gcyhvKXtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuIGZ1bmN0aW9uKG8pe2lmKHIpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7YTspdHJ5e2lmKHI9MSxuJiYoaT0yJm9bMF0/bi5yZXR1cm46b1swXT9uLnRocm93fHwoKGk9bi5yZXR1cm4pJiZpLmNhbGwobiksMCk6bi5uZXh0KSYmIShpPWkuY2FsbChuLG9bMV0pKS5kb25lKXJldHVybiBpO3N3aXRjaChuPTAsaSYmKG89WzImb1swXSxpLnZhbHVlXSksb1swXSl7Y2FzZSAwOmNhc2UgMTppPW87YnJlYWs7Y2FzZSA0OnJldHVybiBhLmxhYmVsKysse3ZhbHVlOm9bMV0sZG9uZTohMX07Y2FzZSA1OmEubGFiZWwrKyxuPW9bMV0sbz1bMF07Y29udGludWU7Y2FzZSA3Om89YS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShpPShpPWEudHJ5cykubGVuZ3RoPjAmJmlbaS5sZW5ndGgtMV0pJiYoNj09PW9bMF18fDI9PT1vWzBdKSl7YT0wO2NvbnRpbnVlfWlmKDM9PT1vWzBdJiYoIWl8fG9bMV0+aVswXSYmb1sxXTxpWzNdKSl7YS5sYWJlbD1vWzFdO2JyZWFrfWlmKDY9PT1vWzBdJiZhLmxhYmVsPGlbMV0pe2EubGFiZWw9aVsxXSxpPW87YnJlYWt9aWYoaSYmYS5sYWJlbDxpWzJdKXthLmxhYmVsPWlbMl0sYS5vcHMucHVzaChvKTticmVha31pWzJdJiZhLm9wcy5wb3AoKSxhLnRyeXMucG9wKCk7Y29udGludWV9bz10LmNhbGwoZSxhKX1jYXRjaChzKXtvPVs2LHNdLG49MH1maW5hbGx5e3I9aT0wfWlmKDUmb1swXSl0aHJvdyBvWzFdO3JldHVybnt2YWx1ZTpvWzBdP29bMV06dm9pZCAwLGRvbmU6ITB9fShbbyxzXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBhPXIoODApLHM9cigyMzMpLHU9cigzOTgpLGM9cig3MTIpLGY9cigzMSksbD1yKDM5MyksaD1yKDkxKSxwPXIoODApLGQ9Zi5saWJzLmNyeXB0byx5PWQuYmFzZTU4RW5jb2RlLGc9ZC5ibGFrZTJiLHY9ZC52ZXJpZnlTaWduYXR1cmUsbT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLl9zaWduTWV0aG9kPSJzaWduUmVxdWVzdCIsdGhpcy5fcHJvb2ZzPVtdO3ZhciByPXQuZ2V0TmV0d29ya0J5dGUoKTt0aGlzLl9mb3JTaWduPW4oe30sZSksdGhpcy50eXBlPWUudHlwZSx0aGlzLl9hZGFwdGVyPXQ7dmFyIGk9YS5nZXRWYWxpZGF0ZVNjaGVtYShyKVtlLnR5cGVdO2lmKCFpKXRocm93IG5ldyBjLlNpZ25FcnJvcigiQ2FuJ3QgZmluZCBwcmVwYXJlIGFwaSBmb3IgdHggdHlwZSBcIiIrZS50eXBlKyciIScsdS5FUlJPUlMuVU5LTk9XTl9TSUdOX1RZUEUpO3RoaXMuX2ZvclNpZ24uZGF0YS50aW1lc3RhbXA9bmV3IERhdGUodGhpcy5fZm9yU2lnbi5kYXRhLnRpbWVzdGFtcHx8RGF0ZS5ub3coKSkuZ2V0VGltZSgpLHRoaXMuX2ZvclNpZ24uZGF0YS5wcm9vZnMmJih0aGlzLl9wcm9vZnM9dGhpcy5fZm9yU2lnbi5kYXRhLnByb29mcy5zbGljZSgpKTt2YXIgbz10LmdldFNpZ25WZXJzaW9ucygpW2UudHlwZV07aWYoMD09PW8ubGVuZ3RoKXRocm93IG5ldyBjLlNpZ25FcnJvcigiQ2FuJ3Qgc2lnbiBkYXRhIHdpdGggdHlwZSAiK3RoaXMudHlwZSx1LkVSUk9SUy5OT19TVVBQT1JURURfVkVSU0lPTlMpO3MuaXNFbXB0eSh0aGlzLl9mb3JTaWduLmRhdGEudmVyc2lvbikmJih0aGlzLl9mb3JTaWduLmRhdGEudmVyc2lvbj1zLmxhc3QobykpO3ZhciBmPXRoaXMuX2ZvclNpZ24uZGF0YS52ZXJzaW9uO2lmKCFvLmluY2x1ZGVzKGYpKXRocm93IG5ldyBjLlNpZ25FcnJvcigiQ2FuJ3Qgc2lnbiBkYXRhIHdpdGggdHlwZSBcIiIrdGhpcy50eXBlKyciIGFuZCB2ZXJzaW9uICInK2YrJyInLHUuRVJST1JTLlZFUlNJT05fSVNfTk9UX1NVUFBPUlRFRCk7aWYoIWEuU0lHTl9UWVBFU1tlLnR5cGVdLmdldEJ5dGVzW2ZdKXRocm93IG5ldyBjLlNpZ25FcnJvcigiQ2FuJ3QgZmluZCBwcmVwYXJlIGFwaSBmb3IgdHggdHlwZSBcIiIrZS50eXBlKyciIHdpdGggdmVyc2lvbiAnK2YrIiEiLHUuRVJST1JTLlZFUlNJT05fSVNfTk9UX1NVUFBPUlRFRCk7dGhpcy5fc2lnbk1ldGhvZD1hLlNJR05fVFlQRVNbZS50eXBlXS5hZGFwdGVyO3RyeXt0aGlzLl9wcmVwYXJlZERhdGE9YS5wcmVwYXJlLnNpZ25TY2hlbWEoaSkodGhpcy5fZm9yU2lnbi5kYXRhLCEwKX1jYXRjaChsKXt0aHJvdyBuZXcgYy5TaWduRXJyb3IobC5tZXNzYWdlLHUuRVJST1JTLlZBTElEQVRJT05fRkFJTEVEKX10aGlzLl9ieXRlUHJvbWlzZT10aGlzLmdldFNpZ25EYXRhKCkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gYS5TSUdOX1RZUEVTW2UudHlwZV0uZ2V0Qnl0ZXNbZl0odCl9KX1yZXR1cm4gZS5wcm90b3R5cGUuZ2V0T3JkZXJGZWU9ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIGkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGksdTtyZXR1cm4gbyh0aGlzLGZ1bmN0aW9uKG8pe3N3aXRjaChvLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuX2ZvclNpZ24udHlwZSE9PWEuU0lHTl9UWVBFLkNSRUFURV9PUkRFUj9bMywyXTooaT1zLmN1cnJlbnRDcmVhdGVPcmRlckZhY3RvcnkoZSx0KSx1PWksWzQsdGhpcy5nZXREYXRhRm9yQXBpKCldKTtjYXNlIDE6cmV0dXJuWzIsdS5hcHBseSh2b2lkIDAsW28uc2VudCgpLHIsbl0pXTtjYXNlIDI6cmV0dXJuWzJdfX0pfSl9LGUucHJvdG90eXBlLmdldEZlZT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG4saSxhO3JldHVybiBvKHRoaXMsZnVuY3Rpb24obyl7c3dpdGNoKG8ubGFiZWwpe2Nhc2UgMDpyZXR1cm4gbj1zLmN1cnJlbnRGZWVGYWN0b3J5KGUpLFs0LHRoaXMuZ2V0U2lnbkRhdGEoKV07Y2FzZSAxOnJldHVybiBpPW8uc2VudCgpLFs0LHRoaXMuZ2V0Qnl0ZXMoKV07Y2FzZSAyOnJldHVybiBhPW8uc2VudCgpLFsyLG4oaSxhLHQscildfX0pfSl9LGUucHJvdG90eXBlLmdldFR4RGF0YT1mdW5jdGlvbigpe3JldHVybiBuKHt9LHRoaXMuX2ZvclNpZ24uZGF0YSl9LGUucHJvdG90eXBlLmdldFNpZ25EYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIGkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGUsdCxyLGk7cmV0dXJuIG8odGhpcyxmdW5jdGlvbihvKXtzd2l0Y2goby5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuX2FkYXB0ZXIuZ2V0UHVibGljS2V5KCldO2Nhc2UgMTpyZXR1cm4gZT1vLnNlbnQoKSxbNCx0aGlzLl9hZGFwdGVyLmdldEFkZHJlc3MoKV07Y2FzZSAyOnJldHVybiB0PW8uc2VudCgpLHI9bih7fSx0aGlzLl9wcmVwYXJlZERhdGEse3NlbmRlclB1YmxpY0tleTplLHNlbmRlcjp0fSx0aGlzLl9mb3JTaWduLmRhdGEse3R5cGU6dGhpcy5fZm9yU2lnbi50eXBlfSksaT1hLlNJR05fVFlQRVNbdGhpcy5fZm9yU2lnbi50eXBlXS50b05vZGV8fG51bGwsWzIsaSYmaShyLHRoaXMuX2FkYXB0ZXIuZ2V0TmV0d29ya0J5dGUoKSl8fHJdfX0pfSl9LGUucHJvdG90eXBlLmdldEFzc2V0SWRzPWZ1bmN0aW9uKCl7cmV0dXJuIGkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGUsdDtyZXR1cm4gbyh0aGlzLGZ1bmN0aW9uKHIpe3N3aXRjaChyLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5nZXRTaWduRGF0YSgpXTtjYXNlIDE6c3dpdGNoKGU9ci5zZW50KCksKHQ9T2JqZWN0LmNyZWF0ZShudWxsKSlbYS5XQVZFU19JRF09ITAsdFtzLm5vcm1hbGl6ZUFzc2V0SWQoZS5mZWVBc3NldElkKV09ITAsZS50eXBlKXtjYXNlIGEuU0lHTl9UWVBFLkNSRUFURV9PUkRFUjp0W3Mubm9ybWFsaXplQXNzZXRJZChlLm1hdGNoZXJGZWVBc3NldElkKV09ITAsdFtzLm5vcm1hbGl6ZUFzc2V0SWQoZS5hc3NldFBhaXIuYW1vdW50QXNzZXQpXT0hMCx0W3Mubm9ybWFsaXplQXNzZXRJZChlLmFzc2V0UGFpci5wcmljZUFzc2V0KV09ITA7YnJlYWs7Y2FzZSBwLlRSQU5TQUNUSU9OX1RZUEVfTlVNQkVSLlJFSVNTVUU6Y2FzZSBwLlRSQU5TQUNUSU9OX1RZUEVfTlVNQkVSLkJVUk46Y2FzZSBwLlRSQU5TQUNUSU9OX1RZUEVfTlVNQkVSLk1BU1NfVFJBTlNGRVI6Y2FzZSBwLlRSQU5TQUNUSU9OX1RZUEVfTlVNQkVSLlNQT05TT1JTSElQOmNhc2UgcC5UUkFOU0FDVElPTl9UWVBFX05VTUJFUi5UUkFOU0ZFUjp0W3Mubm9ybWFsaXplQXNzZXRJZChlLmFzc2V0SWQpXT0hMDticmVhaztjYXNlIHAuVFJBTlNBQ1RJT05fVFlQRV9OVU1CRVIuRVhDSEFOR0U6dFtzLm5vcm1hbGl6ZUFzc2V0SWQoZS5vcmRlcjEuYXNzZXRQYWlyLmFtb3VudEFzc2V0KV09ITAsdFtzLm5vcm1hbGl6ZUFzc2V0SWQoZS5vcmRlcjEuYXNzZXRQYWlyLnByaWNlQXNzZXQpXT0hMCx0W3Mubm9ybWFsaXplQXNzZXRJZChlLm9yZGVyMS5tYXRjaGVyRmVlQXNzZXRJZCldPSEwLHRbcy5ub3JtYWxpemVBc3NldElkKGUub3JkZXIyLm1hdGNoZXJGZWVBc3NldElkKV09ITA7YnJlYWs7Y2FzZSBwLlRSQU5TQUNUSU9OX1RZUEVfTlVNQkVSLlNDUklQVF9JTlZPQ0FUSU9OOmUucGF5bWVudC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3Rbcy5ub3JtYWxpemVBc3NldElkKGUuYXNzZXRJZCldPSEwfSl9cmV0dXJuWzIsT2JqZWN0LmtleXModCldfX0pfSl9LGUucHJvdG90eXBlLnNpZ24yZmE9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxyPWUuY29kZTtyZXR1cm4gdGhpcy5fYWRhcHRlci5nZXRBZGRyZXNzKCkudGhlbihmdW5jdGlvbihuKXtyZXR1cm4gZS5yZXF1ZXN0KHthZGRyZXNzOm4sY29kZTpyLHNpZ25EYXRhOnQuX2ZvclNpZ259KX0pLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIHQuX3Byb29mcy5wdXNoKGUpLHR9KX0sZS5wcm90b3R5cGUuYWRkUHJvb2Y9ZnVuY3Rpb24oZSl7cmV0dXJuLTEhPT10aGlzLl9wcm9vZnMuaW5kZXhPZihlKSYmdGhpcy5fcHJvb2ZzLnB1c2goZSksdGhpc30sZS5wcm90b3R5cGUuZ2V0SGFzaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9ieXRlUHJvbWlzZS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiB5KGcoZSkpfSl9LGUucHJvdG90eXBlLmdldElkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2J5dGVQcm9taXNlLnRoZW4oZnVuY3Rpb24oZSl7dmFyIHQ9QXJyYXkuZnJvbShlKTtyZXR1cm4gMTA9PT1lWzBdJiYoZT1uZXcgVWludDhBcnJheShbdFswXV0uY29uY2F0KHQuc2xpY2UoMzYsLTE2KSkpKSx5KGcoZSkpfSl9LGUucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiB0aGlzLl9tYWtlU2lnblByb21pc2UoKSx0aGlzLl9zaWduUHJvbWlzZS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGV9KX0sZS5wcm90b3R5cGUuZ2V0U2lnbmF0dXJlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21ha2VTaWduUHJvbWlzZSgpLHRoaXMuX3NpZ25Qcm9taXNlfSxlLnByb3RvdHlwZS5nZXRCeXRlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9ieXRlUHJvbWlzZX0sZS5wcm90b3R5cGUuZ2V0TXlQcm9vZnM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBQcm9taXNlLmFsbChbdGhpcy5nZXRCeXRlcygpLHRoaXMuX2FkYXB0ZXIuZ2V0UHVibGljS2V5KCldKS50aGVuKGZ1bmN0aW9uKHQpe3ZhciByPXRbMF0sbj10WzFdO3JldHVybiBlLl9wcm9vZnMuZmlsdGVyKGZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gdihuLHIsZSl9Y2F0Y2godCl7cmV0dXJuITF9fSl9KX0sZS5wcm90b3R5cGUuaGFzTXlTaWduYXR1cmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRNeVByb29mcygpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuISFlLmxlbmd0aH0pfSxlLnByb3RvdHlwZS5hZGRNeVByb29mPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5oYXNNeVNpZ25hdHVyZSgpLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIHQ/ZS5nZXRNeVByb29mcygpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGVbZS5sZW5ndGgtMV19KTplLmdldFNpZ25hdHVyZSgpLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIGUuX3Byb29mcy5wdXNoKHQpLHR9KX0pfSxlLnByb3RvdHlwZS5nZXREYXRhRm9yQXBpPWZ1bmN0aW9uKCl7cmV0dXJuIGkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGUsdDtyZXR1cm4gbyh0aGlzLGZ1bmN0aW9uKHIpe3N3aXRjaChyLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5nZXRTaWduRGF0YSgpXTtjYXNlIDE6cmV0dXJuIGU9ci5zZW50KCksWzQsdGhpcy5hZGRNeVByb29mKCldO2Nhc2UgMjpyLnNlbnQoKSx0PSh0aGlzLl9wcm9vZnN8fFtdKS5zbGljZSgpO3RyeXtyZXR1cm5bMixsLmNvbnZlcnQobih7fSxlLHtwcm9vZnM6dH0pLGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgaC5CaWdOdW1iZXIoZSl9KV19Y2F0Y2goaSl7cmV0dXJuWzIsbih7fSxlLHtwcm9vZnM6dCxzaWduYXR1cmU6dFswXX0pXX1yZXR1cm5bMl19fSl9KX0sZS5wcm90b3R5cGUuX21ha2VTaWduUHJvbWlzZT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHRoaXMuX3NpZ25Qcm9taXNlfHwodGhpcy5fc2lnblByb21pc2U9dGhpcy5fYnl0ZVByb21pc2UudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gZS5fYWRhcHRlcltlLl9zaWduTWV0aG9kXSh0LGUuX2dldEFtb3VudFByZWNpc2lvbigpLGUuX2ZvclNpZ24pfSksdGhpcy5fc2lnblByb21pc2UuY2F0Y2goZnVuY3Rpb24oKXtlLl9zaWduUHJvbWlzZT12b2lkIDB9KSksdGhpc30sZS5wcm90b3R5cGUuX2dldEFtb3VudFByZWNpc2lvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2ZvclNpZ24uZGF0YTtyZXR1cm4gZS5hbW91bnQmJmUuYW1vdW50LmFzc2V0JiZlLmFtb3VudC5hc3NldC5wcmVjaXNpb24/ZS5hbW91bnQuYXNzZXQucHJlY2lzaW9uOjB9LGV9KCk7dC5TaWduYWJsZT1tfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxmdW5jdGlvbihlKXtlW2UuVU5LTk9XTl9TSUdOX1RZUEU9MF09IlVOS05PV05fU0lHTl9UWVBFIixlW2UuTk9fU1VQUE9SVEVEX1ZFUlNJT05TPTFdPSJOT19TVVBQT1JURURfVkVSU0lPTlMiLGVbZS5WRVJTSU9OX0lTX05PVF9TVVBQT1JURUQ9Ml09IlZFUlNJT05fSVNfTk9UX1NVUFBPUlRFRCIsZVtlLlZBTElEQVRJT05fRkFJTEVEPTNdPSJWQUxJREFUSU9OX0ZBSUxFRCJ9KHQuRVJST1JTfHwodC5FUlJPUlM9e30pKX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbih0LHIpe3JldHVybihlPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KXQuaGFzT3duUHJvcGVydHkocikmJihlW3JdPXRbcl0pfSkodCxyKX07cmV0dXJuIGZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1lKHQsciksdC5wcm90b3R5cGU9bnVsbD09PXI/T2JqZWN0LmNyZWF0ZShyKToobi5wcm90b3R5cGU9ci5wcm90b3R5cGUsbmV3IG4pfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9cigxNzApLG89cig3MTMpLGE9cig4MCkscz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQpe3ZhciByPWUuY2FsbCh0aGlzKXx8dGhpcztpZihyLl9jdXJyZW50VXNlcj10LCFyLl9jdXJyZW50VXNlcil0aHJvdyJObyBzZWxlY3RlZCB1c2VyIjtyZXR1cm4gcn1yZXR1cm4gbih0LGUpLHQucHJvdG90eXBlLmlzQXZhaWxhYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzTXlMZWRnZXIoKX0sdC5wcm90b3R5cGUuZ2V0UHVibGljS2V5PWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9jdXJyZW50VXNlci5wdWJsaWNLZXkpfSx0LnByb3RvdHlwZS5nZXRBZGRyZXNzPWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9jdXJyZW50VXNlci5hZGRyZXNzKX0sdC5wcm90b3R5cGUuZ2V0U2VlZD1mdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlamVjdChFcnJvcignTWV0aG9kICJnZXRTZWVkIiBpcyBub3QgYXZhaWxhYmxlIScpKX0sdC5wcm90b3R5cGUuZ2V0QWRhcHRlclZlcnNpb249ZnVuY3Rpb24oKXtyZXR1cm4gdC5fbGVkZ2VyLmdldFZlcnNpb24oKX0sdC5wcm90b3R5cGUuc2lnblJlcXVlc3Q9ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcztyZXR1cm4gdGhpcy5faXNNeUxlZGdlcigpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdC5fbGVkZ2VyLnNpZ25SZXF1ZXN0KHIuX2N1cnJlbnRVc2VyLmlkLGUpfSl9LHQucHJvdG90eXBlLnNpZ25UcmFuc2FjdGlvbj1mdW5jdGlvbihlLHIpe3ZhciBuPXRoaXM7cmV0dXJuIDE1PT09ZVswXT90aGlzLnNpZ25EYXRhKGUpOnRoaXMuX2lzTXlMZWRnZXIoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHQuX2xlZGdlci5zaWduVHJhbnNhY3Rpb24obi5fY3VycmVudFVzZXIuaWQse3ByZWNpc2lvbjpyfSxlKX0pfSx0LnByb3RvdHlwZS5zaWduT3JkZXI9ZnVuY3Rpb24oZSxyKXt2YXIgbj10aGlzO3JldHVybiB0aGlzLl9pc015TGVkZ2VyKCkudGhlbihmdW5jdGlvbigpe3JldHVybiB0Ll9sZWRnZXIuc2lnbk9yZGVyKG4uX2N1cnJlbnRVc2VyLmlkLHtwcmVjaXNpb246cn0sZSl9KX0sdC5wcm90b3R5cGUuc2lnbkRhdGE9ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcztyZXR1cm4gdGhpcy5faXNNeUxlZGdlcigpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdC5fbGVkZ2VyLnNpZ25Tb21lRGF0YShyLl9jdXJyZW50VXNlci5pZCxlKX0pfSx0LnByb3RvdHlwZS5nZXRQcml2YXRlS2V5PWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVqZWN0KCJObyBwcml2YXRlIGtleSIpfSx0LnByb3RvdHlwZS5nZXRTaWduVmVyc2lvbnM9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4oZT17fSlbYS5TSUdOX1RZUEUuQVVUSF09WzFdLGVbYS5TSUdOX1RZUEUuTUFUQ0hFUl9PUkRFUlNdPVsxXSxlW2EuU0lHTl9UWVBFLkNSRUFURV9PUkRFUl09WzEsMiwzXSxlW2EuU0lHTl9UWVBFLkNBTkNFTF9PUkRFUl09WzFdLGVbYS5TSUdOX1RZUEUuQ09JTk9NQVRfQ09ORklSTUFUSU9OXT1bMV0sZVthLlNJR05fVFlQRS5JU1NVRV09WzJdLGVbYS5TSUdOX1RZUEUuVFJBTlNGRVJdPVsyXSxlW2EuU0lHTl9UWVBFLlJFSVNTVUVdPVsyXSxlW2EuU0lHTl9UWVBFLkJVUk5dPVsyXSxlW2EuU0lHTl9UWVBFLkVYQ0hBTkdFXT1bXSxlW2EuU0lHTl9UWVBFLkxFQVNFXT1bMl0sZVthLlNJR05fVFlQRS5DQU5DRUxfTEVBU0lOR109WzJdLGVbYS5TSUdOX1RZUEUuQ1JFQVRFX0FMSUFTXT1bMl0sZVthLlNJR05fVFlQRS5NQVNTX1RSQU5TRkVSXT1bMV0sZVthLlNJR05fVFlQRS5EQVRBXT1bMV0sZVthLlNJR05fVFlQRS5TRVRfU0NSSVBUXT1bMV0sZVthLlNJR05fVFlQRS5TUE9OU09SU0hJUF09WzFdLGVbYS5TSUdOX1RZUEUuU0VUX0FTU0VUX1NDUklQVF09WzFdLGVbYS5TSUdOX1RZUEUuU0NSSVBUX0lOVk9DQVRJT05dPVsxXSxlfSx0LnByb3RvdHlwZS5faXNNeUxlZGdlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHQuX2xlZGdlci5nZXRVc2VyRGF0YUJ5SWQodGhpcy5fY3VycmVudFVzZXIuaWQpLnRoZW4oZnVuY3Rpb24odCl7aWYodC5hZGRyZXNzIT09ZS5fY3VycmVudFVzZXIuYWRkcmVzcyl0aHJvd3tlcnJvcjoiSW52YWxpZCBsZWRnZXIifX0pfSx0LmdldFVzZXJMaXN0PWZ1bmN0aW9uKGUscil7cmV0dXJuIHZvaWQgMD09PWUmJihlPTEpLHZvaWQgMD09PXImJihyPTEpLHQuX2xlZGdlci5nZXRQYWdpbmF0aW9uVXNlcnNEYXRhKGUscil9LHQuaW5pdE9wdGlvbnM9ZnVuY3Rpb24oZSl7aS5BZGFwdGVyLmluaXRPcHRpb25zKGUpLHRoaXMuX2xlZGdlcj1uZXcgby5XYXZlc0xlZGdlcihlKX0sdC5pc0F2YWlsYWJsZT1mdW5jdGlvbigpe3JldHVybiB0Ll9oYXNDb25uZWN0aW9uUHJvbWlzZXx8KHQuX2hhc0Nvbm5lY3Rpb25Qcm9taXNlPXQuX2xlZGdlci5wcm9iZURldmljZSgpKSx0Ll9oYXNDb25uZWN0aW9uUHJvbWlzZS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHQuX2hhc0Nvbm5lY3Rpb25Qcm9taXNlPW51bGwsITB9LGZ1bmN0aW9uKGUpe3JldHVybiB0Ll9oYXNDb25uZWN0aW9uUHJvbWlzZT1udWxsLCExfSl9LHQudHlwZT0ibGVkZ2VyIix0fShpLkFkYXB0ZXIpO3QuTGVkZ2VyQWRhcHRlcj1zfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17Q1NTUnVsZUxpc3Q6MCxDU1NTdHlsZURlY2xhcmF0aW9uOjAsQ1NTVmFsdWVMaXN0OjAsQ2xpZW50UmVjdExpc3Q6MCxET01SZWN0TGlzdDowLERPTVN0cmluZ0xpc3Q6MCxET01Ub2tlbkxpc3Q6MSxEYXRhVHJhbnNmZXJJdGVtTGlzdDowLEZpbGVMaXN0OjAsSFRNTEFsbENvbGxlY3Rpb246MCxIVE1MQ29sbGVjdGlvbjowLEhUTUxGb3JtRWxlbWVudDowLEhUTUxTZWxlY3RFbGVtZW50OjAsTWVkaWFMaXN0OjAsTWltZVR5cGVBcnJheTowLE5hbWVkTm9kZU1hcDowLE5vZGVMaXN0OjEsUGFpbnRSZXF1ZXN0TGlzdDowLFBsdWdpbjowLFBsdWdpbkFycmF5OjAsU1ZHTGVuZ3RoTGlzdDowLFNWR051bWJlckxpc3Q6MCxTVkdQYXRoU2VnTGlzdDowLFNWR1BvaW50TGlzdDowLFNWR1N0cmluZ0xpc3Q6MCxTVkdUcmFuc2Zvcm1MaXN0OjAsU291cmNlQnVmZmVyTGlzdDowLFN0eWxlU2hlZXRMaXN0OjAsVGV4dFRyYWNrQ3VlTGlzdDowLFRleHRUcmFja0xpc3Q6MCxUb3VjaExpc3Q6MH19LGZ1bmN0aW9uKGUsdCxyKXtlLmV4cG9ydHM9IXIoMTA4KSYmIXIoNjgpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShyKDI0MykoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSxmdW5jdGlvbihlLHQpe3ZhciByPTAsbj1NYXRoLnJhbmRvbSgpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4iU3ltYm9sKCIuY29uY2F0KHZvaWQgMD09PWU/IiI6ZSwiKV8iLCgrK3IrbikudG9TdHJpbmcoMzYpKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigxNzYpLGk9cig3MjUpLG89cigxNDEpLGE9cigxNDIpLHM9cig0MTApLHU9YS5zZXQsYz1hLmdldHRlckZvcigiQXJyYXkgSXRlcmF0b3IiKTtlLmV4cG9ydHM9cyhBcnJheSwiQXJyYXkiLGZ1bmN0aW9uKGUsdCl7dSh0aGlzLHt0eXBlOiJBcnJheSBJdGVyYXRvciIsdGFyZ2V0Om4oZSksaW5kZXg6MCxraW5kOnR9KX0sZnVuY3Rpb24oKXt2YXIgZT1jKHRoaXMpLHQ9ZS50YXJnZXQscj1lLmtpbmQsbj1lLmluZGV4Kys7cmV0dXJuIQ=="
}
Changelog:
{
"2020.01.10 16:24": "base64:KS5jb25jYXQoQXJyYXkuZnJvbShpKSkpfX0sYWRhcHRlcjoic2lnblJlcXVlc3QifSxuW28uTUFUQ0hFUl9PUkRFUlNdPXtnZXRCeXRlczp7MTpmdW5jdGlvbihlKXt2YXIgdD1lLnRpbWVzdGFtcCxyPWUuc2VuZGVyUHVibGljS2V5LG49ZyhyKSxpPXkodCk7cmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShBcnJheS5mcm9tKG4pLmNvbmNhdChBcnJheS5mcm9tKGkpKSl9fSxhZGFwdGVyOiJzaWduUmVxdWVzdCJ9LG5bby5DUkVBVEVfT1JERVJdPXtnZXRCeXRlczp7MDp2LnNlcmlhbGl6ZU9yZGVyLDE6di5zZXJpYWxpemVPcmRlciwyOnYuc2VyaWFsaXplT3JkZXIsMzp2LnNlcmlhbGl6ZU9yZGVyfSx0b05vZGU6ZnVuY3Rpb24oZSl7dmFyIHQ9Yy50b09yZGVyUHJpY2UoZSk7cmV0dXJuIGU9aSh7fSxlLHtwcmljZTpmLk1vbmV5LmZyb21Db2lucyh0LGUucHJpY2UuYXNzZXQpfSksbShlLHMub3JkZXIpfSxhZGFwdGVyOiJzaWduT3JkZXIifSxuW28uQ0FOQ0VMX09SREVSXT17Z2V0Qnl0ZXM6ezA6XywxOl99LGFkYXB0ZXI6InNpZ25SZXF1ZXN0Iix0b05vZGU6ZnVuY3Rpb24oZSl7cmV0dXJue29yZGVySWQ6ZS5vcmRlcklkLHNlbmRlcjplLnNlbmRlclB1YmxpY0tleSxzZW5kZXJQdWJsaWNLZXk6ZS5zZW5kZXJQdWJsaWNLZXksc2lnbmF0dXJlOmUucHJvb2ZzJiZlLnByb29mc1swXX19fSxuW28uVFJBTlNGRVJdPXtnZXRCeXRlczp7Mjp2LnNlcmlhbGl6ZVR4fSx0b05vZGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbShpKHt9LGUse3JlY2lwaWVudDpjLnJlY2lwaWVudChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKShlLnJlY2lwaWVudCksYXR0YWNobWVudDpjLmF0dGFjaG1lbnQoZS5hdHRhY2htZW50KX0pLHMudHJhbnNmZXIpfSxhZGFwdGVyOiJzaWduVHJhbnNhY3Rpb24ifSxuW28uSVNTVUVdPXtnZXRCeXRlczp7Mjp2LnNlcmlhbGl6ZVR4fSx0b05vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG0oaSh7fSxlLHtxdWFudGl0eTplLmFtb3VudHx8ZS5xdWFudGl0eSxzY3JpcHQ6YihlLnNjcmlwdCl9KSxzLmlzc3VlKX0sYWRhcHRlcjoic2lnblRyYW5zYWN0aW9uIn0sbltvLlJFSVNTVUVdPXtnZXRCeXRlczp7Mjp2LnNlcmlhbGl6ZVR4fSx0b05vZGU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5hbW91bnR8fGUucXVhbnRpdHk7cmV0dXJuIG0oaSh7fSxlLHtxdWFudGl0eTp0fSkscy5yZWlzc3VlKX0sYWRhcHRlcjoic2lnblRyYW5zYWN0aW9uIn0sbltvLkJVUk5dPXtnZXRCeXRlczp7Mjp2LnNlcmlhbGl6ZVR4fSx0b05vZGU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5hbW91bnR8fGUucXVhbnRpdHk7cmV0dXJuIG0oaSh7fSxlLHtxdWFudGl0eTp0fSkscy5idXJuKX0sYWRhcHRlcjoic2lnblRyYW5zYWN0aW9uIn0sbltvLkVYQ0hBTkdFXT17Z2V0Qnl0ZXM6ezA6di5zZXJpYWxpemVUeCwyOnYuc2VyaWFsaXplVHh9LHRvTm9kZTpmdW5jdGlvbihlKXt2YXIgdD1tKGUpLHI9ZS5idXlPcmRlci5zaWduYXR1cmV8fGUuYnV5T3JkZXIucHJvb2ZzWzBdLG49ZS5idXlPcmRlci5wcm9vZnM/ZS5idXlPcmRlci5wcm9vZnM6ZS5idXlPcmRlci5zaWduYXR1cmUsbz1pKHt9LHQuYnV5T3JkZXIse3NpZ25hdHVyZTpyLHByb29mczpufSksYT1lLnNlbGxPcmRlci5zaWduYXR1cmV8fGUuc2VsbE9yZGVyLnByb29mc1swXSx1PWUuc2VsbE9yZGVyLnByb29mcz9lLnNlbGxPcmRlci5wcm9vZnM6ZS5zZWxsT3JkZXIuc2lnbmF0dXJlLGM9aSh7fSx0LnNlbGxPcmRlcix7c2lnbmF0dXJlOmEscHJvb2ZzOnV9KTtyZXR1cm4gcy5leGNoYW5nZShpKHt9LHQse29yZGVyMTpvLG9yZGVyMjpjfSkpfSxhZGFwdGVyOiJzaWduVHJhbnNhY3Rpb24ifSxuW28uTEVBU0VdPXtnZXRCeXRlczp7Mjp2LnNlcmlhbGl6ZVR4fSx0b05vZGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbShpKHt9LGUse3JlY2lwaWVudDpjLnJlY2lwaWVudChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKShlLnJlY2lwaWVudCl9KSxzLmxlYXNlKX0sYWRhcHRlcjoic2lnblRyYW5zYWN0aW9uIn0sbltvLkNBTkNFTF9MRUFTSU5HXT17Z2V0Qnl0ZXM6ezI6di5zZXJpYWxpemVUeH0sdG9Ob2RlOmZ1bmN0aW9uKGUpe3JldHVybiBtKGUscy5jYW5jZWxMZWFzZSl9LGFkYXB0ZXI6InNpZ25UcmFuc2FjdGlvbiJ9LG5bby5DUkVBVEVfQUxJQVNdPXtnZXRCeXRlczp7Mjp2LnNlcmlhbGl6ZVR4fSx0b05vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGkoe30sbShlLHMuYWxpYXMpLHtjaGFpbklkOmUuY2hhaW5JZH0pfSxhZGFwdGVyOiJzaWduVHJhbnNhY3Rpb24ifSxuW28uTUFTU19UUkFOU0ZFUl09e2dldEJ5dGVzOnswOnYuc2VyaWFsaXplVHgsMTp2LnNlcmlhbGl6ZVR4fSx0b05vZGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbShpKHt9LGUse2Fzc2V0SWQ6ZS5hc3NldElkfHxlLnRyYW5zZmVyc1swXS5hbW91bnQuYXNzZXQuaWQsdHJhbnNmZXJzOmUudHJhbnNmZXJzLm1hcChmdW5jdGlvbihlKXt2YXIgcj1jLnJlY2lwaWVudChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKShlLm5hbWV8fGUucmVjaXBpZW50KTtyZXR1cm4gaSh7fSxlLHtyZWNpcGllbnQ6cn0pfSksYXR0YWNobWVudDpjLmF0dGFjaG1lbnQoZS5hdHRhY2htZW50KX0pLHMubWFzc1RyYW5zZmVyKX0sYWRhcHRlcjoic2lnblRyYW5zYWN0aW9uIn0sbltvLkRBVEFdPXtnZXRCeXRlczp7MDp2LnNlcmlhbGl6ZVR4LDE6di5zZXJpYWxpemVUeH0sdG9Ob2RlOmZ1bmN0aW9uKGUpe3JldHVybiBtKGUscy5kYXRhKX0sYWRhcHRlcjoic2lnblRyYW5zYWN0aW9uIn0sbltvLlNFVF9TQ1JJUFRdPXtnZXRCeXRlczp7MDp2LnNlcmlhbGl6ZVR4LDE6di5zZXJpYWxpemVUeH0sdG9Ob2RlOmZ1bmN0aW9uKGUpe3JldHVybiBtKGkoe30sZSx7c2NyaXB0OmIoZS5zY3JpcHQpfSkscy5zZXRTY3JpcHQpfSxhZGFwdGVyOiJzaWduVHJhbnNhY3Rpb24ifSxuW28uU1BPTlNPUlNISVBdPXtnZXRCeXRlczp7MDp2LnNlcmlhbGl6ZVR4LDE6di5zZXJpYWxpemVUeH0sdG9Ob2RlOmZ1bmN0aW9uKGUpe3JldHVybiBtKGUscy5zcG9uc29yc2hpcCl9LGFkYXB0ZXI6InNpZ25UcmFuc2FjdGlvbiJ9LG5bby5TRVRfQVNTRVRfU0NSSVBUXT17Z2V0Qnl0ZXM6ezA6di5zZXJpYWxpemVUeCwxOnYuc2VyaWFsaXplVHh9LHRvTm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gbShpKHt9LGUse3NjcmlwdDpiKGUuc2NyaXB0KX0pLHMuc2V0QXNzZXRTY3JpcHQpfSxhZGFwdGVyOiJzaWduVHJhbnNhY3Rpb24ifSxuW28uU0NSSVBUX0lOVk9DQVRJT05dPXtnZXRCeXRlczp7MDp2LnNlcmlhbGl6ZVR4LDE6di5zZXJpYWxpemVUeH0sdG9Ob2RlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG0oaSh7fSxlLHtkQXBwOmMucmVjaXBpZW50KFN0cmluZy5mcm9tQ2hhckNvZGUodCkpKGUuZEFwcCl9KSxzLmludm9rZVNjcmlwdCl9LGFkYXB0ZXI6InNpZ25UcmFuc2FjdGlvbiJ9LG4pfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1yKDY4Nyk7dC5jb252ZXJ0PW4uY29udmVydDt2YXIgaT1yKDY4OSk7dC50b05vZGU9aS50b05vZGV9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuaXNCYXNlNjQ9ZnVuY3Rpb24oZSl7cmV0dXJuL14oW0EtWmEtejAtOStcL117NH0pKihbQS1aYS16MC05K1wvXXs0fXxbQS1aYS16MC05K1wvXXszfT18W0EtWmEtejAtOStcL117Mn09PSkkLy50ZXN0KGUpfSx0LmlzU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGV9LHQucmVxdWlyZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWV9LHQuY2hhcnNJbkRpY3Rpb25hcnk9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0LnNwbGl0KCIiKS5ldmVyeShmdW5jdGlvbih0KXtyZXR1cm4gZS5pbmNsdWRlcyh0KX0pfX0sdC5jcmVhdGVWYWxpZGF0b3I9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIGUocik/bnVsbDp0fX0sdC5yZXF1aXJlZFZhbGlkYXRvcj1mdW5jdGlvbihlKXtyZXR1cm4gdC5jcmVhdGVWYWxpZGF0b3IodC5yZXF1aXJlZCwnUHJvcGVydHkgIicrZSsnIiBpcyByZXF1aXJlZCEnKX0sdC52YWxpZGF0ZT1mdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI9ZS5yZWR1Y2UoZnVuY3Rpb24oZSxyKXt2YXIgbj1yKHQpO3JldHVybiBuJiZlLnB1c2gobiksZX0sW10pO2lmKHIubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiVmFsaWRhdGlvbiBlcnJvciEgRGV0YWlsczogIitKU09OLnN0cmluZ2lmeShyLG51bGwsNCkpO3JldHVybiB0fX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPXIoMTY4KSxpPXIoMzkyKSxvPXIoNzEwKSxhPW4ucHJlcGFyZS5wcm9jZXNzb3JzO3QuZ2V0VmFsaWRhdGVTY2hlbWE9ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuKHQ9e30pW2kuU0lHTl9UWVBFLk1BVENIRVJfT1JERVJTXT1bby5zdHJpbmcoKSgic2VuZGVyUHVibGljS2V5IixudWxsLG51bGwsITApLG8udGltZXN0YW1wKCkoInRpbWVzdGFtcCIsbnVsbCxhLnRpbWVzdGFtcCldLHRbaS5TSUdOX1RZUEUuQVVUSF09W28uc3RyaW5nKCkoInByZWZpeCIsbnVsbCxhLmFkZFZhbHVlKCJXYXZlc1dhbGxldEF1dGhlbnRpY2F0aW9uIiksITApLG8uc3RyaW5nKCkoImhvc3QiKSxvLnN0cmluZygpKCJkYXRhIildLHRbaS5TSUdOX1RZUEUuQ09JTk9NQVRfQ09ORklSTUFUSU9OXT1bby5zdHJpbmcoKSgicHJlZml4IixudWxsLGEuYWRkVmFsdWUoIkNvaW5vbWF0IiksITApLG8udGltZXN0YW1wKCkoInRpbWVzdGFtcCIsbnVsbCxhLnRpbWVzdGFtcCldLHRbaS5TSUdOX1RZUEUuQ1JFQVRFX09SREVSXT1bby5zdHJpbmcoKSgic2VuZGVyUHVibGljS2V5IixudWxsLG51bGwsITApLG8uc3RyaW5nKCkoIm1hdGNoZXJQdWJsaWNLZXkiKSxvLm1vbmV5KCkoImFtb3VudCIsImFtb3VudEFzc2V0IixhLm1vbmV5VG9Bc3NldElkKSxvLm1vbmV5KCkoInByaWNlIiwicHJpY2VBc3NldCIsYS5tb25leVRvQXNzZXRJZCksby5vcmRlclR5cGUoKSgib3JkZXJUeXBlIiksby5tb25leSgpKCJhbW91bnQiLCJhbW91bnQiLGEudG9CaWdOdW1iZXIpLG8uZnJvbURhdGEoKShudWxsLCJwcmljZSIsYS50b09yZGVyUHJpY2UpLG8ubW9uZXkoKSgibWF0Y2hlckZlZSIsbnVsbCxhLnRvQmlnTnVtYmVyKSxvLnRpbWVzdGFtcCgpKCJleHBpcmF0aW9uIixudWxsLGEuZXhwaXJhdGlvbiksby50aW1lc3RhbXAoKSgidGltZXN0YW1wIixudWxsLGEudGltZXN0YW1wKV0sdFtpLlNJR05fVFlQRS5DQU5DRUxfT1JERVJdPVtvLnN0cmluZygpKCJzZW5kZXJQdWJsaWNLZXkiLG51bGwsbnVsbCwhMCksby5zdHJpbmcoKSgiaWQiLCJvcmRlcklkIildLHRbaS5TSUdOX1RZUEUuSVNTVUVdPVtvLnN0cmluZygpKCJzZW5kZXJQdWJsaWNLZXkiLG51bGwsbnVsbCwhMCksby5hc3NldE5hbWUoKSgibmFtZSIpLG8uYXNzZXREZXNjcmlwdGlvbigpKCJkZXNjcmlwdGlvbiIpLG8ubnVtYmVyKCkoImNoYWluSWQiLG51bGwsYS5hZGRWYWx1ZShmdW5jdGlvbigpe3JldHVybiBlfSksITApLG8ubnVtYmVyTGlrZSgpKCJxdWFudGl0eSIsbnVsbCxhLnRvQmlnTnVtYmVyKSxvLnByZWNpc2lvbigpKCJwcmVjaXNpb24iKSxvLmJvb2xlYW4oKSgicmVpc3N1YWJsZSIpLG8uc2NyaXB0KCkoInNjcmlwdCIsbnVsbCxhLm9yU3RyaW5nLCEwKSxvLm51bWJlckxpa2UoKSgiZmVlIixudWxsLGEudG9CaWdOdW1iZXIpLG8udGltZXN0YW1wKCkoInRpbWVzdGFtcCIsbnVsbCxhLnRpbWVzdGFtcCldLHRbaS5TSUdOX1RZUEUuUkVJU1NVRV09W28uc3RyaW5nKCkoInNlbmRlclB1YmxpY0tleSIsbnVsbCxudWxsLCEwKSxvLm51bWJlcigpKCJjaGFpbklkIixudWxsLGEuYWRkVmFsdWUoZnVuY3Rpb24oKXtyZXR1cm4gZX0pLCEwKSxvLmFzc2V0KCkoImFzc2V0SWQiKSxvLm51bWJlckxpa2UoKSgicXVhbnRpdHkiLG51bGwsYS50b0JpZ051bWJlciksby5ib29sZWFuKCkoInJlaXNzdWFibGUiKSxvLm51bWJlckxpa2UoKSgiZmVlIixudWxsLGEudG9CaWdOdW1iZXIpLG8udGltZXN0YW1wKCkoInRpbWVzdGFtcCIsbnVsbCxhLnRpbWVzdGFtcCldLHRbaS5TSUdOX1RZUEUuRVhDSEFOR0VdPVtvLnN0cmluZygpKCJzZW5kZXJQdWJsaWNLZXkiLG51bGwsbnVsbCwhMCksby50aW1lc3RhbXAoKSgidGltZXN0YW1wIixudWxsLGEudGltZXN0YW1wKSxvLm51bWJlckxpa2UoKSgiZmVlIixudWxsLGEudG9CaWdOdW1iZXIpLG8uZnJvbURhdGEoKSgiYnV5T3JkZXIiKSxvLmZyb21EYXRhKCkoInNlbGxPcmRlciIpLG8ubnVtYmVyTGlrZSgpKCJhbW91bnQiLCJhbW91bnQiLGEudG9CaWdOdW1iZXIpLG8ubnVtYmVyTGlrZSgpKCJwcmljZSIsInByaWNlIixhLnRvQmlnTnVtYmVyKSxvLm51bWJlckxpa2UoKSgiYnV5TWF0Y2hlckZlZSIsImJ1eU1hdGNoZXJGZWUiLGEudG9CaWdOdW1iZXIpLG8ubnVtYmVyTGlrZSgpKCJzZWxsTWF0Y2hlckZlZSIsInNlbGxNYXRjaGVyRmVlIixhLnRvQmlnTnVtYmVyKV0sdFtpLlNJR05fVFlQRS5CVVJOXT1bby5zdHJpbmcoKSgic2VuZGVyUHVibGljS2V5IixudWxsLG51bGwsITApLG8ubnVtYmVyKCkoImNoYWluSWQiLG51bGwsYS5hZGRWYWx1ZShmdW5jdGlvbigpe3JldHVybiBlfSksITApLG8uYXNzZXQoKSgiYXNzZXRJZCIpLG8ubnVtYmVyTGlrZSgpKCJhbW91bnQiLCJxdWFudGl0eSIsYS50b0JpZ051bWJlciksby5udW1iZXJMaWtlKCkoImZlZSIsbnVsbCxhLnRvQmlnTnVtYmVyKSxvLnRpbWVzdGFtcCgpKCJ0aW1lc3RhbXAiLG51bGwsYS50aW1lc3RhbXApXSx0W2kuU0lHTl9UWVBFLlNQT05TT1JTSElQXT1bby5zdHJpbmcoKSgic2VuZGVyUHVibGljS2V5IixudWxsLG51bGwsITApLG8ubW9uZXkoKSgibWluU3BvbnNvcmVkQXNzZXRGZWUiLCJhc3NldElkIixhLm1vbmV5VG9Bc3NldElkKSxvLm51bWJlckxpa2UoKSgibWluU3BvbnNvcmVkQXNzZXRGZWUiLG51bGwsYS50b0JpZ051bWJlciksby5udW1iZXJMaWtlKCkoImZlZSIsbnVsbCxhLnRvQmlnTnVtYmVyKSxvLnRpbWVzdGFtcCgpKCJ0aW1lc3RhbXAiLG51bGwsYS50aW1lc3RhbXApXSx0W2kuU0lHTl9UWVBFLlRSQU5TRkVSXT1bby5zdHJpbmcoKSgic2VuZGVyUHVibGljS2V5IixudWxsLG51bGwsITApLG8ubW9uZXkoKSgiYW1vdW50IiwiYXNzZXRJZCIsYS5tb25leVRvQXNzZXRJZCksby5yZXF1aXJlZCgpKCJhbW91bnQiLG51bGwsYS50b0JpZ051bWJlciksby5tb25leSgpKCJmZWUiLCJmZWVBc3NldElkIixhLm1vbmV5VG9Bc3NldElkKSxvLnJlcXVpcmVkKCkoImZlZSIsImZlZSIsYS50b0JpZ051bWJlciksby50aW1lc3RhbXAoKSgidGltZXN0YW1wIixudWxsLGEudGltZXN0YW1wKSxvLmFsaWFzT3JBZGRyZXNzKGUpKCJyZWNpcGllbnQiKSxvLmF0dGFjaG1lbnQoKSgiYXR0YWNobWVudCIsbnVsbCxhLm9yU3RyaW5nLCEwKV0sdFtpLlNJR05fVFlQRS5MRUFTRV09W28uc3RyaW5nKCkoInNlbmRlclB1YmxpY0tleSIsbnVsbCxudWxsLCEwKSxvLm51bWJlcigpKCJjaGFpbklkIixudWxsLGEuYWRkVmFsdWUoZnVuY3Rpb24oKXtyZXR1cm4gZX0pLCEwKSxvLmFsaWFzT3JBZGRyZXNzKGUpKCJyZWNpcGllbnQiKSxvLm51bWJlckxpa2UoKSgiYW1vdW50IixudWxsLGEudG9CaWdOdW1iZXIpLG8ubnVtYmVyTGlrZSgpKCJmZWUiLG51bGwsYS50b0JpZ051bWJlciksby50aW1lc3RhbXAoKSgidGltZXN0YW1wIixudWxsLGEudGltZXN0YW1wKV0sdFtpLlNJR05fVFlQRS5DQU5DRUxfTEVBU0lOR109W28uc3RyaW5nKCkoInNlbmRlclB1YmxpY0tleSIsbnVsbCxudWxsLCEwKSxvLm51bWJlcigpKCJjaGFpbklkIixudWxsLGEuYWRkVmFsdWUoZnVuY3Rpb24oKXtyZXR1cm4gZX0pLCEwKSxvLnN0cmluZygpKCJsZWFzZUlkIiwidHJhbnNhY3Rpb25JZCIpLG8ubnVtYmVyTGlrZSgpKCJmZWUiLG51bGwsYS50b0JpZ051bWJlciksby50aW1lc3RhbXAoKSgidGltZXN0YW1wIixudWxsLGEudGltZXN0YW1wKV0sdFtpLlNJR05fVFlQRS5DUkVBVEVfQUxJQVNdPVtvLnN0cmluZygpKCJzZW5kZXJQdWJsaWNLZXkiLG51bGwsbnVsbCwhMCksby5udW1iZXIoKSgiY2hhaW5JZCIsbnVsbCxhLmFkZFZhbHVlKGZ1bmN0aW9uKCl7cmV0dXJuIGV9KSwhMCksby5hbGlhc05hbWUoZSkoImFsaWFzIiksby5udW1iZXJMaWtlKCkoImZlZSIsbnVsbCxhLnRvQmlnTnVtYmVyKSxvLnRpbWVzdGFtcCgpKCJ0aW1lc3RhbXAiLG51bGwsYS50aW1lc3RhbXApXSx0W2kuU0lHTl9UWVBFLk1BU1NfVFJBTlNGRVJdPVtvLnN0cmluZygpKCJzZW5kZXJQdWJsaWNLZXkiLG51bGwsbnVsbCwhMCksby5tb25leSgpKCJ0b3RhbEFtb3VudCIsImFzc2V0SWQiLGEubW9uZXlUb0Fzc2V0SWQpLG8udHJhbnNmZXJzKGUpKCJ0cmFuc2ZlcnMiLG51bGwsYS50cmFuc2ZlcnMoYS5ub1Byb2Nlc3MsYS50b0JpZ051bWJlcikpLG8ubnVtYmVyTGlrZSgpKCJmZWUiLG51bGwsYS50b0JpZ051bWJlciksby5hdHRhY2htZW50KCkoImF0dGFjaG1lbnQiLG51bGwsYS5vclN0cmluZywhMCksby50aW1lc3RhbXAoKSgidGltZXN0YW1wIixudWxsLGEudGltZXN0YW1wKV0sdFtpLlNJR05fVFlQRS5EQVRBXT1bby5zdHJpbmcoKSgic2VuZGVyUHVibGljS2V5IixudWxsLG51bGwsITApLG8ubnVtYmVyTGlrZSgpKCJmZWUiLG51bGwsYS50b0JpZ051bWJlciksby50aW1lc3RhbXAoKSgidGltZXN0YW1wIixudWxsLGEudGltZXN0YW1wKSxvLmRhdGEoKSgiZGF0YSIpXSx0W2kuU0lHTl9UWVBFLlNFVF9TQ1JJUFRdPVtvLnN0cmluZygpKCJzZW5kZXJQdWJsaWNLZXkiLG51bGwsbnVsbCwhMCksby5udW1iZXJMaWtlKCkoImZlZSIsbnVsbCxhLnRvQmlnTnVtYmVyKSxvLnRpbWVzdGFtcCgpKCJ0aW1lc3RhbXAiLG51bGwsYS50aW1lc3RhbXApLG8ubnVtYmVyKCkoImNoYWluSWQiLG51bGwsYS5hZGRWYWx1ZShmdW5jdGlvbigpe3JldHVybiBlfSksITApLG8uc2NyaXB0KCkoInNjcmlwdCIpXSx0W2kuU0lHTl9UWVBFLlNFVF9BU1NFVF9TQ1JJUFRdPVtvLnN0cmluZygpKCJzZW5kZXJQdWJsaWNLZXkiLG51bGwsbnVsbCwhMCksby5hc3NldCgpKCJhc3NldElkIiksby5udW1iZXJMaWtlKCkoImZlZSIsbnVsbCxhLnRvQmlnTnVtYmVyKSxvLnRpbWVzdGFtcCgpKCJ0aW1lc3RhbXAiLG51bGwsYS50aW1lc3RhbXApLG8ubnVtYmVyKCkoImNoYWluSWQiLG51bGwsYS5hZGRWYWx1ZShmdW5jdGlvbigpe3JldHVybiBlfSksITApLG8uYXNzZXRfc2NyaXB0KCkoInNjcmlwdCIpXSx0W2kuU0lHTl9UWVBFLlNDUklQVF9JTlZPQ0FUSU9OXT1bby5udW1iZXIoKSgidHlwZSIsbnVsbCxhLmFkZFZhbHVlKGZ1bmN0aW9uKCl7cmV0dXJuIGkuU0lHTl9UWVBFLlNDUklQVF9JTlZPQ0FUSU9OfSksITApLG8ubnVtYmVyKCkoInZlcnNpb24iLG51bGwsYS5hZGRWYWx1ZShmdW5jdGlvbigpe3JldHVybiAxfSksITApLG8uc3RyaW5nKCkoInNlbmRlclB1YmxpY0tleSIsbnVsbCxudWxsLCEwKSxvLmFsaWFzT3JBZGRyZXNzKGUpKCJkQXBwIiksby5jYWxsKCkoImNhbGwiLCJjYWxsIixhLmNhbGxGdW5jLCEwKSxvLnBheW1lbnQoKSgicGF5bWVudCIsbnVsbCxhLnBheW1lbnRzLCEwKSxvLm51bWJlckxpa2UoKSgiZmVlIixudWxsLGEudG9OdW1iZXJTdHJpbmcpLG8ubnVtYmVyTGlrZSgpKCJmZWUiLCJhc3NldElkIixhLm1vbmV5VG9Bc3NldElkKSxvLnRpbWVzdGFtcCgpKCJ0aW1lc3RhbXAiLG51bGwsYS50aW1lc3RhbXApLG8ubnVtYmVyKCkoImNoYWluSWQiLG51bGwsYS5hZGRWYWx1ZShlKSwhMCldLHR9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7Zm9yKHZhciByIGluIGUpdC5oYXNPd25Qcm9wZXJ0eShyKXx8KHRbcl09ZVtyXSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG4ocigxNzApKSxuKHIoMzk5KSksbihyKDQ1NSkpLG4ocig5NDEpKX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10aGlzJiZ0aGlzLl9fYXNzaWdufHxmdW5jdGlvbigpe3JldHVybihuPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTEsbj1hcmd1bWVudHMubGVuZ3RoO3I8bjtyKyspZm9yKHZhciBpIGluIHQ9YXJndW1lbnRzW3JdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGkpJiYoZVtpXT10W2ldKTtyZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0saT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIG5ldyhyfHwocj1Qcm9taXNlKSkoZnVuY3Rpb24oaSxvKXtmdW5jdGlvbiBhKGUpe3RyeXt1KG4ubmV4dChlKSl9Y2F0Y2godCl7byh0KX19ZnVuY3Rpb24gcyhlKXt0cnl7dShuLnRocm93KGUpKX1jYXRjaCh0KXtvKHQpfX1mdW5jdGlvbiB1KGUpe2UuZG9uZT9pKGUudmFsdWUpOm5ldyByKGZ1bmN0aW9uKHQpe3QoZS52YWx1ZSl9KS50aGVuKGEscyl9dSgobj1uLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSl9LG89dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGksbyxhPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmlbMF0pdGhyb3cgaVsxXTtyZXR1cm4gaVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBvPXtuZXh0OnMoMCksdGhyb3c6cygxKSxyZXR1cm46cygyKX0sImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJihvW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLG87ZnVuY3Rpb24gcyhvKXtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuIGZ1bmN0aW9uKG8pe2lmKHIpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7YTspdHJ5e2lmKHI9MSxuJiYoaT0yJm9bMF0/bi5yZXR1cm46b1swXT9uLnRocm93fHwoKGk9bi5yZXR1cm4pJiZpLmNhbGwobiksMCk6bi5uZXh0KSYmIShpPWkuY2FsbChuLG9bMV0pKS5kb25lKXJldHVybiBpO3N3aXRjaChuPTAsaSYmKG89WzImb1swXSxpLnZhbHVlXSksb1swXSl7Y2FzZSAwOmNhc2UgMTppPW87YnJlYWs7Y2FzZSA0OnJldHVybiBhLmxhYmVsKysse3ZhbHVlOm9bMV0sZG9uZTohMX07Y2FzZSA1OmEubGFiZWwrKyxuPW9bMV0sbz1bMF07Y29udGludWU7Y2FzZSA3Om89YS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShpPShpPWEudHJ5cykubGVuZ3RoPjAmJmlbaS5sZW5ndGgtMV0pJiYoNj09PW9bMF18fDI9PT1vWzBdKSl7YT0wO2NvbnRpbnVlfWlmKDM9PT1vWzBdJiYoIWl8fG9bMV0+aVswXSYmb1sxXTxpWzNdKSl7YS5sYWJlbD1vWzFdO2JyZWFrfWlmKDY9PT1vWzBdJiZhLmxhYmVsPGlbMV0pe2EubGFiZWw9aVsxXSxpPW87YnJlYWt9aWYoaSYmYS5sYWJlbDxpWzJdKXthLmxhYmVsPWlbMl0sYS5vcHMucHVzaChvKTticmVha31pWzJdJiZhLm9wcy5wb3AoKSxhLnRyeXMucG9wKCk7Y29udGludWV9bz10LmNhbGwoZSxhKX1jYXRjaChzKXtvPVs2LHNdLG49MH1maW5hbGx5e3I9aT0wfWlmKDUmb1swXSl0aHJvdyBvWzFdO3JldHVybnt2YWx1ZTpvWzBdP29bMV06dm9pZCAwLGRvbmU6ITB9fShbbyxzXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBhPXIoODApLHM9cigyMzMpLHU9cigzOTgpLGM9cig3MTIpLGY9cigzMSksbD1yKDM5MyksaD1yKDkxKSxwPXIoODApLGQ9Zi5saWJzLmNyeXB0byx5PWQuYmFzZTU4RW5jb2RlLGc9ZC5ibGFrZTJiLHY9ZC52ZXJpZnlTaWduYXR1cmUsbT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLl9zaWduTWV0aG9kPSJzaWduUmVxdWVzdCIsdGhpcy5fcHJvb2ZzPVtdO3ZhciByPXQuZ2V0TmV0d29ya0J5dGUoKTt0aGlzLl9mb3JTaWduPW4oe30sZSksdGhpcy50eXBlPWUudHlwZSx0aGlzLl9hZGFwdGVyPXQ7dmFyIGk9YS5nZXRWYWxpZGF0ZVNjaGVtYShyKVtlLnR5cGVdO2lmKCFpKXRocm93IG5ldyBjLlNpZ25FcnJvcigiQ2FuJ3QgZmluZCBwcmVwYXJlIGFwaSBmb3IgdHggdHlwZSBcIiIrZS50eXBlKyciIScsdS5FUlJPUlMuVU5LTk9XTl9TSUdOX1RZUEUpO3RoaXMuX2ZvclNpZ24uZGF0YS50aW1lc3RhbXA9bmV3IERhdGUodGhpcy5fZm9yU2lnbi5kYXRhLnRpbWVzdGFtcHx8RGF0ZS5ub3coKSkuZ2V0VGltZSgpLHRoaXMuX2ZvclNpZ24uZGF0YS5wcm9vZnMmJih0aGlzLl9wcm9vZnM9dGhpcy5fZm9yU2lnbi5kYXRhLnByb29mcy5zbGljZSgpKTt2YXIgbz10LmdldFNpZ25WZXJzaW9ucygpW2UudHlwZV07aWYoMD09PW8ubGVuZ3RoKXRocm93IG5ldyBjLlNpZ25FcnJvcigiQ2FuJ3Qgc2lnbiBkYXRhIHdpdGggdHlwZSAiK3RoaXMudHlwZSx1LkVSUk9SUy5OT19TVVBQT1JURURfVkVSU0lPTlMpO3MuaXNFbXB0eSh0aGlzLl9mb3JTaWduLmRhdGEudmVyc2lvbikmJih0aGlzLl9mb3JTaWduLmRhdGEudmVyc2lvbj1zLmxhc3QobykpO3ZhciBmPXRoaXMuX2ZvclNpZ24uZGF0YS52ZXJzaW9uO2lmKCFvLmluY2x1ZGVzKGYpKXRocm93IG5ldyBjLlNpZ25FcnJvcigiQ2FuJ3Qgc2lnbiBkYXRhIHdpdGggdHlwZSBcIiIrdGhpcy50eXBlKyciIGFuZCB2ZXJzaW9uICInK2YrJyInLHUuRVJST1JTLlZFUlNJT05fSVNfTk9UX1NVUFBPUlRFRCk7aWYoIWEuU0lHTl9UWVBFU1tlLnR5cGVdLmdldEJ5dGVzW2ZdKXRocm93IG5ldyBjLlNpZ25FcnJvcigiQ2FuJ3QgZmluZCBwcmVwYXJlIGFwaSBmb3IgdHggdHlwZSBcIiIrZS50eXBlKyciIHdpdGggdmVyc2lvbiAnK2YrIiEiLHUuRVJST1JTLlZFUlNJT05fSVNfTk9UX1NVUFBPUlRFRCk7dGhpcy5fc2lnbk1ldGhvZD1hLlNJR05fVFlQRVNbZS50eXBlXS5hZGFwdGVyO3RyeXt0aGlzLl9wcmVwYXJlZERhdGE9YS5wcmVwYXJlLnNpZ25TY2hlbWEoaSkodGhpcy5fZm9yU2lnbi5kYXRhLCEwKX1jYXRjaChsKXt0aHJvdyBuZXcgYy5TaWduRXJyb3IobC5tZXNzYWdlLHUuRVJST1JTLlZBTElEQVRJT05fRkFJTEVEKX10aGlzLl9ieXRlUHJvbWlzZT10aGlzLmdldFNpZ25EYXRhKCkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gYS5TSUdOX1RZUEVTW2UudHlwZV0uZ2V0Qnl0ZXNbZl0odCl9KX1yZXR1cm4gZS5wcm90b3R5cGUuZ2V0T3JkZXJGZWU9ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIGkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGksdTtyZXR1cm4gbyh0aGlzLGZ1bmN0aW9uKG8pe3N3aXRjaChvLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuX2ZvclNpZ24udHlwZSE9PWEuU0lHTl9UWVBFLkNSRUFURV9PUkRFUj9bMywyXTooaT1zLmN1cnJlbnRDcmVhdGVPcmRlckZhY3RvcnkoZSx0KSx1PWksWzQsdGhpcy5nZXREYXRhRm9yQXBpKCldKTtjYXNlIDE6cmV0dXJuWzIsdS5hcHBseSh2b2lkIDAsW28uc2VudCgpLHIsbl0pXTtjYXNlIDI6cmV0dXJuWzJdfX0pfSl9LGUucHJvdG90eXBlLmdldEZlZT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG4saSxhO3JldHVybiBvKHRoaXMsZnVuY3Rpb24obyl7c3dpdGNoKG8ubGFiZWwpe2Nhc2UgMDpyZXR1cm4gbj1zLmN1cnJlbnRGZWVGYWN0b3J5KGUpLFs0LHRoaXMuZ2V0U2lnbkRhdGEoKV07Y2FzZSAxOnJldHVybiBpPW8uc2VudCgpLFs0LHRoaXMuZ2V0Qnl0ZXMoKV07Y2FzZSAyOnJldHVybiBhPW8uc2VudCgpLFsyLG4oaSxhLHQscildfX0pfSl9LGUucHJvdG90eXBlLmdldFR4RGF0YT1mdW5jdGlvbigpe3JldHVybiBuKHt9LHRoaXMuX2ZvclNpZ24uZGF0YSl9LGUucHJvdG90eXBlLmdldFNpZ25EYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIGkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGUsdCxyLGk7cmV0dXJuIG8odGhpcyxmdW5jdGlvbihvKXtzd2l0Y2goby5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuX2FkYXB0ZXIuZ2V0UHVibGljS2V5KCldO2Nhc2UgMTpyZXR1cm4gZT1vLnNlbnQoKSxbNCx0aGlzLl9hZGFwdGVyLmdldEFkZHJlc3MoKV07Y2FzZSAyOnJldHVybiB0PW8uc2VudCgpLHI9bih7fSx0aGlzLl9wcmVwYXJlZERhdGEse3NlbmRlclB1YmxpY0tleTplLHNlbmRlcjp0fSx0aGlzLl9mb3JTaWduLmRhdGEse3R5cGU6dGhpcy5fZm9yU2lnbi50eXBlfSksaT1hLlNJR05fVFlQRVNbdGhpcy5fZm9yU2lnbi50eXBlXS50b05vZGV8fG51bGwsWzIsaSYmaShyLHRoaXMuX2FkYXB0ZXIuZ2V0TmV0d29ya0J5dGUoKSl8fHJdfX0pfSl9LGUucHJvdG90eXBlLmdldEFzc2V0SWRzPWZ1bmN0aW9uKCl7cmV0dXJuIGkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGUsdDtyZXR1cm4gbyh0aGlzLGZ1bmN0aW9uKHIpe3N3aXRjaChyLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5nZXRTaWduRGF0YSgpXTtjYXNlIDE6c3dpdGNoKGU9ci5zZW50KCksKHQ9T2JqZWN0LmNyZWF0ZShudWxsKSlbYS5XQVZFU19JRF09ITAsdFtzLm5vcm1hbGl6ZUFzc2V0SWQoZS5mZWVBc3NldElkKV09ITAsZS50eXBlKXtjYXNlIGEuU0lHTl9UWVBFLkNSRUFURV9PUkRFUjp0W3Mubm9ybWFsaXplQXNzZXRJZChlLm1hdGNoZXJGZWVBc3NldElkKV09ITAsdFtzLm5vcm1hbGl6ZUFzc2V0SWQoZS5hc3NldFBhaXIuYW1vdW50QXNzZXQpXT0hMCx0W3Mubm9ybWFsaXplQXNzZXRJZChlLmFzc2V0UGFpci5wcmljZUFzc2V0KV09ITA7YnJlYWs7Y2FzZSBwLlRSQU5TQUNUSU9OX1RZUEVfTlVNQkVSLlJFSVNTVUU6Y2FzZSBwLlRSQU5TQUNUSU9OX1RZUEVfTlVNQkVSLkJVUk46Y2FzZSBwLlRSQU5TQUNUSU9OX1RZUEVfTlVNQkVSLk1BU1NfVFJBTlNGRVI6Y2FzZSBwLlRSQU5TQUNUSU9OX1RZUEVfTlVNQkVSLlNQT05TT1JTSElQOmNhc2UgcC5UUkFOU0FDVElPTl9UWVBFX05VTUJFUi5UUkFOU0ZFUjp0W3Mubm9ybWFsaXplQXNzZXRJZChlLmFzc2V0SWQpXT0hMDticmVhaztjYXNlIHAuVFJBTlNBQ1RJT05fVFlQRV9OVU1CRVIuRVhDSEFOR0U6dFtzLm5vcm1hbGl6ZUFzc2V0SWQoZS5vcmRlcjEuYXNzZXRQYWlyLmFtb3VudEFzc2V0KV09ITAsdFtzLm5vcm1hbGl6ZUFzc2V0SWQoZS5vcmRlcjEuYXNzZXRQYWlyLnByaWNlQXNzZXQpXT0hMCx0W3Mubm9ybWFsaXplQXNzZXRJZChlLm9yZGVyMS5tYXRjaGVyRmVlQXNzZXRJZCldPSEwLHRbcy5ub3JtYWxpemVBc3NldElkKGUub3JkZXIyLm1hdGNoZXJGZWVBc3NldElkKV09ITA7YnJlYWs7Y2FzZSBwLlRSQU5TQUNUSU9OX1RZUEVfTlVNQkVSLlNDUklQVF9JTlZPQ0FUSU9OOmUucGF5bWVudC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3Rbcy5ub3JtYWxpemVBc3NldElkKGUuYXNzZXRJZCldPSEwfSl9cmV0dXJuWzIsT2JqZWN0LmtleXModCldfX0pfSl9LGUucHJvdG90eXBlLnNpZ24yZmE9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxyPWUuY29kZTtyZXR1cm4gdGhpcy5fYWRhcHRlci5nZXRBZGRyZXNzKCkudGhlbihmdW5jdGlvbihuKXtyZXR1cm4gZS5yZXF1ZXN0KHthZGRyZXNzOm4sY29kZTpyLHNpZ25EYXRhOnQuX2ZvclNpZ259KX0pLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIHQuX3Byb29mcy5wdXNoKGUpLHR9KX0sZS5wcm90b3R5cGUuYWRkUHJvb2Y9ZnVuY3Rpb24oZSl7cmV0dXJuLTEhPT10aGlzLl9wcm9vZnMuaW5kZXhPZihlKSYmdGhpcy5fcHJvb2ZzLnB1c2goZSksdGhpc30sZS5wcm90b3R5cGUuZ2V0SGFzaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9ieXRlUHJvbWlzZS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiB5KGcoZSkpfSl9LGUucHJvdG90eXBlLmdldElkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2J5dGVQcm9taXNlLnRoZW4oZnVuY3Rpb24oZSl7dmFyIHQ9QXJyYXkuZnJvbShlKTtyZXR1cm4gMTA9PT1lWzBdJiYoZT1uZXcgVWludDhBcnJheShbdFswXV0uY29uY2F0KHQuc2xpY2UoMzYsLTE2KSkpKSx5KGcoZSkpfSl9LGUucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiB0aGlzLl9tYWtlU2lnblByb21pc2UoKSx0aGlzLl9zaWduUHJvbWlzZS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGV9KX0sZS5wcm90b3R5cGUuZ2V0U2lnbmF0dXJlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21ha2VTaWduUHJvbWlzZSgpLHRoaXMuX3NpZ25Qcm9taXNlfSxlLnByb3RvdHlwZS5nZXRCeXRlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9ieXRlUHJvbWlzZX0sZS5wcm90b3R5cGUuZ2V0TXlQcm9vZnM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBQcm9taXNlLmFsbChbdGhpcy5nZXRCeXRlcygpLHRoaXMuX2FkYXB0ZXIuZ2V0UHVibGljS2V5KCldKS50aGVuKGZ1bmN0aW9uKHQpe3ZhciByPXRbMF0sbj10WzFdO3JldHVybiBlLl9wcm9vZnMuZmlsdGVyKGZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gdihuLHIsZSl9Y2F0Y2godCl7cmV0dXJuITF9fSl9KX0sZS5wcm90b3R5cGUuaGFzTXlTaWduYXR1cmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRNeVByb29mcygpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuISFlLmxlbmd0aH0pfSxlLnByb3RvdHlwZS5hZGRNeVByb29mPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5oYXNNeVNpZ25hdHVyZSgpLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIHQ/ZS5nZXRNeVByb29mcygpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGVbZS5sZW5ndGgtMV19KTplLmdldFNpZ25hdHVyZSgpLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIGUuX3Byb29mcy5wdXNoKHQpLHR9KX0pfSxlLnByb3RvdHlwZS5nZXREYXRhRm9yQXBpPWZ1bmN0aW9uKCl7cmV0dXJuIGkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGUsdDtyZXR1cm4gbyh0aGlzLGZ1bmN0aW9uKHIpe3N3aXRjaChyLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5nZXRTaWduRGF0YSgpXTtjYXNlIDE6cmV0dXJuIGU9ci5zZW50KCksWzQsdGhpcy5hZGRNeVByb29mKCldO2Nhc2UgMjpyLnNlbnQoKSx0PSh0aGlzLl9wcm9vZnN8fFtdKS5zbGljZSgpO3RyeXtyZXR1cm5bMixsLmNvbnZlcnQobih7fSxlLHtwcm9vZnM6dH0pLGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgaC5CaWdOdW1iZXIoZSl9KV19Y2F0Y2goaSl7cmV0dXJuWzIsbih7fSxlLHtwcm9vZnM6dCxzaWduYXR1cmU6dFswXX0pXX1yZXR1cm5bMl19fSl9KX0sZS5wcm90b3R5cGUuX21ha2VTaWduUHJvbWlzZT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHRoaXMuX3NpZ25Qcm9taXNlfHwodGhpcy5fc2lnblByb21pc2U9dGhpcy5fYnl0ZVByb21pc2UudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gZS5fYWRhcHRlcltlLl9zaWduTWV0aG9kXSh0LGUuX2dldEFtb3VudFByZWNpc2lvbigpLGUuX2ZvclNpZ24pfSksdGhpcy5fc2lnblByb21pc2UuY2F0Y2goZnVuY3Rpb24oKXtlLl9zaWduUHJvbWlzZT12b2lkIDB9KSksdGhpc30sZS5wcm90b3R5cGUuX2dldEFtb3VudFByZWNpc2lvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2ZvclNpZ24uZGF0YTtyZXR1cm4gZS5hbW91bnQmJmUuYW1vdW50LmFzc2V0JiZlLmFtb3VudC5hc3NldC5wcmVjaXNpb24/ZS5hbW91bnQuYXNzZXQucHJlY2lzaW9uOjB9LGV9KCk7dC5TaWduYWJsZT1tfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxmdW5jdGlvbihlKXtlW2UuVU5LTk9XTl9TSUdOX1RZUEU9MF09IlVOS05PV05fU0lHTl9UWVBFIixlW2UuTk9fU1VQUE9SVEVEX1ZFUlNJT05TPTFdPSJOT19TVVBQT1JURURfVkVSU0lPTlMiLGVbZS5WRVJTSU9OX0lTX05PVF9TVVBQT1JURUQ9Ml09IlZFUlNJT05fSVNfTk9UX1NVUFBPUlRFRCIsZVtlLlZBTElEQVRJT05fRkFJTEVEPTNdPSJWQUxJREFUSU9OX0ZBSUxFRCJ9KHQuRVJST1JTfHwodC5FUlJPUlM9e30pKX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbih0LHIpe3JldHVybihlPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KXQuaGFzT3duUHJvcGVydHkocikmJihlW3JdPXRbcl0pfSkodCxyKX07cmV0dXJuIGZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1lKHQsciksdC5wcm90b3R5cGU9bnVsbD09PXI/T2JqZWN0LmNyZWF0ZShyKToobi5wcm90b3R5cGU9ci5wcm90b3R5cGUsbmV3IG4pfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9cigxNzApLG89cig3MTMpLGE9cig4MCkscz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQpe3ZhciByPWUuY2FsbCh0aGlzKXx8dGhpcztpZihyLl9jdXJyZW50VXNlcj10LCFyLl9jdXJyZW50VXNlcil0aHJvdyJObyBzZWxlY3RlZCB1c2VyIjtyZXR1cm4gcn1yZXR1cm4gbih0LGUpLHQucHJvdG90eXBlLmlzQXZhaWxhYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzTXlMZWRnZXIoKX0sdC5wcm90b3R5cGUuZ2V0UHVibGljS2V5PWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9jdXJyZW50VXNlci5wdWJsaWNLZXkpfSx0LnByb3RvdHlwZS5nZXRBZGRyZXNzPWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9jdXJyZW50VXNlci5hZGRyZXNzKX0sdC5wcm90b3R5cGUuZ2V0U2VlZD1mdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlamVjdChFcnJvcignTWV0aG9kICJnZXRTZWVkIiBpcyBub3QgYXZhaWxhYmxlIScpKX0sdC5wcm90b3R5cGUuZ2V0QWRhcHRlclZlcnNpb249ZnVuY3Rpb24oKXtyZXR1cm4gdC5fbGVkZ2VyLmdldFZlcnNpb24oKX0sdC5wcm90b3R5cGUuc2lnblJlcXVlc3Q9ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcztyZXR1cm4gdGhpcy5faXNNeUxlZGdlcigpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdC5fbGVkZ2VyLnNpZ25SZXF1ZXN0KHIuX2N1cnJlbnRVc2VyLmlkLGUpfSl9LHQucHJvdG90eXBlLnNpZ25UcmFuc2FjdGlvbj1mdW5jdGlvbihlLHIpe3ZhciBuPXRoaXM7cmV0dXJuIDE1PT09ZVswXT90aGlzLnNpZ25EYXRhKGUpOnRoaXMuX2lzTXlMZWRnZXIoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHQuX2xlZGdlci5zaWduVHJhbnNhY3Rpb24obi5fY3VycmVudFVzZXIuaWQse3ByZWNpc2lvbjpyfSxlKX0pfSx0LnByb3RvdHlwZS5zaWduT3JkZXI9ZnVuY3Rpb24oZSxyKXt2YXIgbj10aGlzO3JldHVybiB0aGlzLl9pc015TGVkZ2VyKCkudGhlbihmdW5jdGlvbigpe3JldHVybiB0Ll9sZWRnZXIuc2lnbk9yZGVyKG4uX2N1cnJlbnRVc2VyLmlkLHtwcmVjaXNpb246cn0sZSl9KX0sdC5wcm90b3R5cGUuc2lnbkRhdGE9ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcztyZXR1cm4gdGhpcy5faXNNeUxlZGdlcigpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdC5fbGVkZ2VyLnNpZ25Tb21lRGF0YShyLl9jdXJyZW50VXNlci5pZCxlKX0pfSx0LnByb3RvdHlwZS5nZXRQcml2YXRlS2V5PWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVqZWN0KCJObyBwcml2YXRlIGtleSIpfSx0LnByb3RvdHlwZS5nZXRTaWduVmVyc2lvbnM9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4oZT17fSlbYS5TSUdOX1RZUEUuQVVUSF09WzFdLGVbYS5TSUdOX1RZUEUuTUFUQ0hFUl9PUkRFUlNdPVsxXSxlW2EuU0lHTl9UWVBFLkNSRUFURV9PUkRFUl09WzEsMiwzXSxlW2EuU0lHTl9UWVBFLkNBTkNFTF9PUkRFUl09WzFdLGVbYS5TSUdOX1RZUEUuQ09JTk9NQVRfQ09ORklSTUFUSU9OXT1bMV0sZVthLlNJR05fVFlQRS5JU1NVRV09WzJdLGVbYS5TSUdOX1RZUEUuVFJBTlNGRVJdPVsyXSxlW2EuU0lHTl9UWVBFLlJFSVNTVUVdPVsyXSxlW2EuU0lHTl9UWVBFLkJVUk5dPVsyXSxlW2EuU0lHTl9UWVBFLkVYQ0hBTkdFXT1bXSxlW2EuU0lHTl9UWVBFLkxFQVNFXT1bMl0sZVthLlNJR05fVFlQRS5DQU5DRUxfTEVBU0lOR109WzJdLGVbYS5TSUdOX1RZUEUuQ1JFQVRFX0FMSUFTXT1bMl0sZVthLlNJR05fVFlQRS5NQVNTX1RSQU5TRkVSXT1bMV0sZVthLlNJR05fVFlQRS5EQVRBXT1bMV0sZVthLlNJR05fVFlQRS5TRVRfU0NSSVBUXT1bMV0sZVthLlNJR05fVFlQRS5TUE9OU09SU0hJUF09WzFdLGVbYS5TSUdOX1RZUEUuU0VUX0FTU0VUX1NDUklQVF09WzFdLGVbYS5TSUdOX1RZUEUuU0NSSVBUX0lOVk9DQVRJT05dPVsxXSxlfSx0LnByb3RvdHlwZS5faXNNeUxlZGdlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHQuX2xlZGdlci5nZXRVc2VyRGF0YUJ5SWQodGhpcy5fY3VycmVudFVzZXIuaWQpLnRoZW4oZnVuY3Rpb24odCl7aWYodC5hZGRyZXNzIT09ZS5fY3VycmVudFVzZXIuYWRkcmVzcyl0aHJvd3tlcnJvcjoiSW52YWxpZCBsZWRnZXIifX0pfSx0LmdldFVzZXJMaXN0PWZ1bmN0aW9uKGUscil7cmV0dXJuIHZvaWQgMD09PWUmJihlPTEpLHZvaWQgMD09PXImJihyPTEpLHQuX2xlZGdlci5nZXRQYWdpbmF0aW9uVXNlcnNEYXRhKGUscil9LHQuaW5pdE9wdGlvbnM9ZnVuY3Rpb24oZSl7aS5BZGFwdGVyLmluaXRPcHRpb25zKGUpLHRoaXMuX2xlZGdlcj1uZXcgby5XYXZlc0xlZGdlcihlKX0sdC5pc0F2YWlsYWJsZT1mdW5jdGlvbigpe3JldHVybiB0Ll9oYXNDb25uZWN0aW9uUHJvbWlzZXx8KHQuX2hhc0Nvbm5lY3Rpb25Qcm9taXNlPXQuX2xlZGdlci5wcm9iZURldmljZSgpKSx0Ll9oYXNDb25uZWN0aW9uUHJvbWlzZS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHQuX2hhc0Nvbm5lY3Rpb25Qcm9taXNlPW51bGwsITB9LGZ1bmN0aW9uKGUpe3JldHVybiB0Ll9oYXNDb25uZWN0aW9uUHJvbWlzZT1udWxsLCExfSl9LHQudHlwZT0ibGVkZ2VyIix0fShpLkFkYXB0ZXIpO3QuTGVkZ2VyQWRhcHRlcj1zfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17Q1NTUnVsZUxpc3Q6MCxDU1NTdHlsZURlY2xhcmF0aW9uOjAsQ1NTVmFsdWVMaXN0OjAsQ2xpZW50UmVjdExpc3Q6MCxET01SZWN0TGlzdDowLERPTVN0cmluZ0xpc3Q6MCxET01Ub2tlbkxpc3Q6MSxEYXRhVHJhbnNmZXJJdGVtTGlzdDowLEZpbGVMaXN0OjAsSFRNTEFsbENvbGxlY3Rpb246MCxIVE1MQ29sbGVjdGlvbjowLEhUTUxGb3JtRWxlbWVudDowLEhUTUxTZWxlY3RFbGVtZW50OjAsTWVkaWFMaXN0OjAsTWltZVR5cGVBcnJheTowLE5hbWVkTm9kZU1hcDowLE5vZGVMaXN0OjEsUGFpbnRSZXF1ZXN0TGlzdDowLFBsdWdpbjowLFBsdWdpbkFycmF5OjAsU1ZHTGVuZ3RoTGlzdDowLFNWR051bWJlckxpc3Q6MCxTVkdQYXRoU2VnTGlzdDowLFNWR1BvaW50TGlzdDowLFNWR1N0cmluZ0xpc3Q6MCxTVkdUcmFuc2Zvcm1MaXN0OjAsU291cmNlQnVmZmVyTGlzdDowLFN0eWxlU2hlZXRMaXN0OjAsVGV4dFRyYWNrQ3VlTGlzdDowLFRleHRUcmFja0xpc3Q6MCxUb3VjaExpc3Q6MH19LGZ1bmN0aW9uKGUsdCxyKXtlLmV4cG9ydHM9IXIoMTA4KSYmIXIoNjgpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShyKDI0MykoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSxmdW5jdGlvbihlLHQpe3ZhciByPTAsbj1NYXRoLnJhbmRvbSgpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4iU3ltYm9sKCIuY29uY2F0KHZvaWQgMD09PWU/IiI6ZSwiKV8iLCgrK3IrbikudG9TdHJpbmcoMzYpKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigxNzYpLGk9cig3MjUpLG89cigxNDEpLGE9cigxNDIpLHM9cig0MTApLHU9YS5zZXQsYz1hLmdldHRlckZvcigiQXJyYXkgSXRlcmF0b3IiKTtlLmV4cG9ydHM9cyhBcnJheSwiQXJyYXkiLGZ1bmN0aW9uKGUsdCl7dSh0aGlzLHt0eXBlOiJBcnJheSBJdGVyYXRvciIsdGFyZ2V0Om4oZSksaW5kZXg6MCxraW5kOnR9KX0sZnVuY3Rpb24oKXt2YXIgZT1jKHRoaXMpLHQ9ZS50YXJnZXQscj1lLmtpbmQsbj1lLmluZGV4Kys7cmV0dXJuIQ==",
"2020.01.10 15:21": "base64:KS5jb25jYXQoQXJyYXkuZnJvbShpKSkpfX0sYWRhcHRlcjoic2lnblJlcXVlc3QifSxuW28uTUFUQ0hFUl9PUkRFUlNdPXtnZXRCeXRlczp7MTpmdW5jdGlvbihlKXt2YXIgdD1lLnRpbWVzdGFtcCxyPWUuc2VuZGVyUHVibGljS2V5LG49ZyhyKSxpPXkodCk7cmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShBcnJheS5mcm9tKG4pLmNvbmNhdChBcnJheS5mcm9tKGkpKSl9fSxhZGFwdGVyOiJzaWduUmVxdWVzdCJ9LG5bby5DUkVBVEVfT1JERVJdPXtnZXRCeXRlczp7MDp2LnNlcmlhbGl6ZU9yZGVyLDE6di5zZXJpYWxpemVPcmRlciwyOnYuc2VyaWFsaXplT3JkZXIsMzp2LnNlcmlhbGl6ZU9yZGVyfSx0b05vZGU6ZnVuY3Rpb24oZSl7dmFyIHQ9Yy50b09yZGVyUHJpY2UoZSk7cmV0dXJuIGU9aSh7fSxlLHtwcmljZTpmLk1vbmV5LmZyb21Db2lucyh0LGUucHJpY2UuYXNzZXQpfSksbShlLHMub3JkZXIpfSxhZGFwdGVyOiJzaWduT3JkZXIifSxuW28uQ0FOQ0VMX09SREVSXT17Z2V0Qnl0ZXM6ezA6XywxOl99LGFkYXB0ZXI6InNpZ25SZXF1ZXN0Iix0b05vZGU6ZnVuY3Rpb24oZSl7cmV0dXJue29yZGVySWQ6ZS5vcmRlcklkLHNlbmRlcjplLnNlbmRlclB1YmxpY0tleSxzZW5kZXJQdWJsaWNLZXk6ZS5zZW5kZXJQdWJsaWNLZXksc2lnbmF0dXJlOmUucHJvb2ZzJiZlLnByb29mc1swXX19fSxuW28uVFJBTlNGRVJdPXtnZXRCeXRlczp7Mjp2LnNlcmlhbGl6ZVR4fSx0b05vZGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbShpKHt9LGUse3JlY2lwaWVudDpjLnJlY2lwaWVudChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKShlLnJlY2lwaWVudCksYXR0YWNobWVudDpjLmF0dGFjaG1lbnQoZS5hdHRhY2htZW50KX0pLHMudHJhbnNmZXIpfSxhZGFwdGVyOiJzaWduVHJhbnNhY3Rpb24ifSxuW28uSVNTVUVdPXtnZXRCeXRlczp7Mjp2LnNlcmlhbGl6ZVR4fSx0b05vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG0oaSh7fSxlLHtxdWFudGl0eTplLmFtb3VudHx8ZS5xdWFudGl0eSxzY3JpcHQ6YihlLnNjcmlwdCl9KSxzLmlzc3VlKX0sYWRhcHRlcjoic2lnblRyYW5zYWN0aW9uIn0sbltvLlJFSVNTVUVdPXtnZXRCeXRlczp7Mjp2LnNlcmlhbGl6ZVR4fSx0b05vZGU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5hbW91bnR8fGUucXVhbnRpdHk7cmV0dXJuIG0oaSh7fSxlLHtxdWFudGl0eTp0fSkscy5yZWlzc3VlKX0sYWRhcHRlcjoic2lnblRyYW5zYWN0aW9uIn0sbltvLkJVUk5dPXtnZXRCeXRlczp7Mjp2LnNlcmlhbGl6ZVR4fSx0b05vZGU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5hbW91bnR8fGUucXVhbnRpdHk7cmV0dXJuIG0oaSh7fSxlLHtxdWFudGl0eTp0fSkscy5idXJuKX0sYWRhcHRlcjoic2lnblRyYW5zYWN0aW9uIn0sbltvLkVYQ0hBTkdFXT17Z2V0Qnl0ZXM6ezA6di5zZXJpYWxpemVUeCwyOnYuc2VyaWFsaXplVHh9LHRvTm9kZTpmdW5jdGlvbihlKXt2YXIgdD1tKGUpLHI9ZS5idXlPcmRlci5zaWduYXR1cmV8fGUuYnV5T3JkZXIucHJvb2ZzWzBdLG49ZS5idXlPcmRlci5wcm9vZnM/ZS5idXlPcmRlci5wcm9vZnM6ZS5idXlPcmRlci5zaWduYXR1cmUsbz1pKHt9LHQuYnV5T3JkZXIse3NpZ25hdHVyZTpyLHByb29mczpufSksYT1lLnNlbGxPcmRlci5zaWduYXR1cmV8fGUuc2VsbE9yZGVyLnByb29mc1swXSx1PWUuc2VsbE9yZGVyLnByb29mcz9lLnNlbGxPcmRlci5wcm9vZnM6ZS5zZWxsT3JkZXIuc2lnbmF0dXJlLGM9aSh7fSx0LnNlbGxPcmRlcix7c2lnbmF0dXJlOmEscHJvb2ZzOnV9KTtyZXR1cm4gcy5leGNoYW5nZShpKHt9LHQse29yZGVyMTpvLG9yZGVyMjpjfSkpfSxhZGFwdGVyOiJzaWduVHJhbnNhY3Rpb24ifSxuW28uTEVBU0VdPXtnZXRCeXRlczp7Mjp2LnNlcmlhbGl6ZVR4fSx0b05vZGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbShpKHt9LGUse3JlY2lwaWVudDpjLnJlY2lwaWVudChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKShlLnJlY2lwaWVudCl9KSxzLmxlYXNlKX0sYWRhcHRlcjoic2lnblRyYW5zYWN0aW9uIn0sbltvLkNBTkNFTF9MRUFTSU5HXT17Z2V0Qnl0ZXM6ezI6di5zZXJpYWxpemVUeH0sdG9Ob2RlOmZ1bmN0aW9uKGUpe3JldHVybiBtKGUscy5jYW5jZWxMZWFzZSl9LGFkYXB0ZXI6InNpZ25UcmFuc2FjdGlvbiJ9LG5bby5DUkVBVEVfQUxJQVNdPXtnZXRCeXRlczp7Mjp2LnNlcmlhbGl6ZVR4fSx0b05vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGkoe30sbShlLHMuYWxpYXMpLHtjaGFpbklkOmUuY2hhaW5JZH0pfSxhZGFwdGVyOiJzaWduVHJhbnNhY3Rpb24ifSxuW28uTUFTU19UUkFOU0ZFUl09e2dldEJ5dGVzOnswOnYuc2VyaWFsaXplVHgsMTp2LnNlcmlhbGl6ZVR4fSx0b05vZGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbShpKHt9LGUse2Fzc2V0SWQ6ZS5hc3NldElkfHxlLnRyYW5zZmVyc1swXS5hbW91bnQuYXNzZXQuaWQsdHJhbnNmZXJzOmUudHJhbnNmZXJzLm1hcChmdW5jdGlvbihlKXt2YXIgcj1jLnJlY2lwaWVudChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKShlLm5hbWV8fGUucmVjaXBpZW50KTtyZXR1cm4gaSh7fSxlLHtyZWNpcGllbnQ6cn0pfSksYXR0YWNobWVudDpjLmF0dGFjaG1lbnQoZS5hdHRhY2htZW50KX0pLHMubWFzc1RyYW5zZmVyKX0sYWRhcHRlcjoic2lnblRyYW5zYWN0aW9uIn0sbltvLkRBVEFdPXtnZXRCeXRlczp7MDp2LnNlcmlhbGl6ZVR4LDE6di5zZXJpYWxpemVUeH0sdG9Ob2RlOmZ1bmN0aW9uKGUpe3JldHVybiBtKGUscy5kYXRhKX0sYWRhcHRlcjoic2lnblRyYW5zYWN0aW9uIn0sbltvLlNFVF9TQ1JJUFRdPXtnZXRCeXRlczp7MDp2LnNlcmlhbGl6ZVR4LDE6di5zZXJpYWxpemVUeH0sdG9Ob2RlOmZ1bmN0aW9uKGUpe3JldHVybiBtKGkoe30sZSx7c2NyaXB0OmIoZS5zY3JpcHQpfSkscy5zZXRTY3JpcHQpfSxhZGFwdGVyOiJzaWduVHJhbnNhY3Rpb24ifSxuW28uU1BPTlNPUlNISVBdPXtnZXRCeXRlczp7MDp2LnNlcmlhbGl6ZVR4LDE6di5zZXJpYWxpemVUeH0sdG9Ob2RlOmZ1bmN0aW9uKGUpe3JldHVybiBtKGUscy5zcG9uc29yc2hpcCl9LGFkYXB0ZXI6InNpZ25UcmFuc2FjdGlvbiJ9LG5bby5TRVRfQVNTRVRfU0NSSVBUXT17Z2V0Qnl0ZXM6ezA6di5zZXJpYWxpemVUeCwxOnYuc2VyaWFsaXplVHh9LHRvTm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gbShpKHt9LGUse3NjcmlwdDpiKGUuc2NyaXB0KX0pLHMuc2V0QXNzZXRTY3JpcHQpfSxhZGFwdGVyOiJzaWduVHJhbnNhY3Rpb24ifSxuW28uU0NSSVBUX0lOVk9DQVRJT05dPXtnZXRCeXRlczp7MDp2LnNlcmlhbGl6ZVR4LDE6di5zZXJpYWxpemVUeH0sdG9Ob2RlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG0oaSh7fSxlLHtkQXBwOmMucmVjaXBpZW50KFN0cmluZy5mcm9tQ2hhckNvZGUodCkpKGUuZEFwcCl9KSxzLmludm9rZVNjcmlwdCl9LGFkYXB0ZXI6InNpZ25UcmFuc2FjdGlvbiJ9LG4pfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1yKDY4Nyk7dC5jb252ZXJ0PW4uY29udmVydDt2YXIgaT1yKDY4OSk7dC50b05vZGU9aS50b05vZGV9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuaXNCYXNlNjQ9ZnVuY3Rpb24oZSl7cmV0dXJuL14oW0EtWmEtejAtOStcL117NH0pKihbQS1aYS16MC05K1wvXXs0fXxbQS1aYS16MC05K1wvXXszfT18W0EtWmEtejAtOStcL117Mn09PSkkLy50ZXN0KGUpfSx0LmlzU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGV9LHQucmVxdWlyZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWV9LHQuY2hhcnNJbkRpY3Rpb25hcnk9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0LnNwbGl0KCIiKS5ldmVyeShmdW5jdGlvbih0KXtyZXR1cm4gZS5pbmNsdWRlcyh0KX0pfX0sdC5jcmVhdGVWYWxpZGF0b3I9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIGUocik/bnVsbDp0fX0sdC5yZXF1aXJlZFZhbGlkYXRvcj1mdW5jdGlvbihlKXtyZXR1cm4gdC5jcmVhdGVWYWxpZGF0b3IodC5yZXF1aXJlZCwnUHJvcGVydHkgIicrZSsnIiBpcyByZXF1aXJlZCEnKX0sdC52YWxpZGF0ZT1mdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI9ZS5yZWR1Y2UoZnVuY3Rpb24oZSxyKXt2YXIgbj1yKHQpO3JldHVybiBuJiZlLnB1c2gobiksZX0sW10pO2lmKHIubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiVmFsaWRhdGlvbiBlcnJvciEgRGV0YWlsczogIitKU09OLnN0cmluZ2lmeShyLG51bGwsNCkpO3JldHVybiB0fX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPXIoMTY4KSxpPXIoMzkyKSxvPXIoNzEwKSxhPW4ucHJlcGFyZS5wcm9jZXNzb3JzO3QuZ2V0VmFsaWRhdGVTY2hlbWE9ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuKHQ9e30pW2kuU0lHTl9UWVBFLk1BVENIRVJfT1JERVJTXT1bby5zdHJpbmcoKSgic2VuZGVyUHVibGljS2V5IixudWxsLG51bGwsITApLG8udGltZXN0YW1wKCkoInRpbWVzdGFtcCIsbnVsbCxhLnRpbWVzdGFtcCldLHRbaS5TSUdOX1RZUEUuQVVUSF09W28uc3RyaW5nKCkoInByZWZpeCIsbnVsbCxhLmFkZFZhbHVlKCJXYXZlc1dhbGxldEF1dGhlbnRpY2F0aW9uIiksITApLG8uc3RyaW5nKCkoImhvc3QiKSxvLnN0cmluZygpKCJkYXRhIildLHRbaS5TSUdOX1RZUEUuQ09JTk9NQVRfQ09ORklSTUFUSU9OXT1bby5zdHJpbmcoKSgicHJlZml4IixudWxsLGEuYWRkVmFsdWUoIkNvaW5vbWF0IiksITApLG8udGltZXN0YW1wKCkoInRpbWVzdGFtcCIsbnVsbCxhLnRpbWVzdGFtcCldLHRbaS5TSUdOX1RZUEUuQ1JFQVRFX09SREVSXT1bby5zdHJpbmcoKSgic2VuZGVyUHVibGljS2V5IixudWxsLG51bGwsITApLG8uc3RyaW5nKCkoIm1hdGNoZXJQdWJsaWNLZXkiKSxvLm1vbmV5KCkoImFtb3VudCIsImFtb3VudEFzc2V0IixhLm1vbmV5VG9Bc3NldElkKSxvLm1vbmV5KCkoInByaWNlIiwicHJpY2VBc3NldCIsYS5tb25leVRvQXNzZXRJZCksby5vcmRlclR5cGUoKSgib3JkZXJUeXBlIiksby5tb25leSgpKCJhbW91bnQiLCJhbW91bnQiLGEudG9CaWdOdW1iZXIpLG8uZnJvbURhdGEoKShudWxsLCJwcmljZSIsYS50b09yZGVyUHJpY2UpLG8ubW9uZXkoKSgibWF0Y2hlckZlZSIsbnVsbCxhLnRvQmlnTnVtYmVyKSxvLnRpbWVzdGFtcCgpKCJleHBpcmF0aW9uIixudWxsLGEuZXhwaXJhdGlvbiksby50aW1lc3RhbXAoKSgidGltZXN0YW1wIixudWxsLGEudGltZXN0YW1wKV0sdFtpLlNJR05fVFlQRS5DQU5DRUxfT1JERVJdPVtvLnN0cmluZygpKCJzZW5kZXJQdWJsaWNLZXkiLG51bGwsbnVsbCwhMCksby5zdHJpbmcoKSgiaWQiLCJvcmRlcklkIildLHRbaS5TSUdOX1RZUEUuSVNTVUVdPVtvLnN0cmluZygpKCJzZW5kZXJQdWJsaWNLZXkiLG51bGwsbnVsbCwhMCksby5hc3NldE5hbWUoKSgibmFtZSIpLG8uYXNzZXREZXNjcmlwdGlvbigpKCJkZXNjcmlwdGlvbiIpLG8ubnVtYmVyKCkoImNoYWluSWQiLG51bGwsYS5hZGRWYWx1ZShmdW5jdGlvbigpe3JldHVybiBlfSksITApLG8ubnVtYmVyTGlrZSgpKCJxdWFudGl0eSIsbnVsbCxhLnRvQmlnTnVtYmVyKSxvLnByZWNpc2lvbigpKCJwcmVjaXNpb24iKSxvLmJvb2xlYW4oKSgicmVpc3N1YWJsZSIpLG8uc2NyaXB0KCkoInNjcmlwdCIsbnVsbCxhLm9yU3RyaW5nLCEwKSxvLm51bWJlckxpa2UoKSgiZmVlIixudWxsLGEudG9CaWdOdW1iZXIpLG8udGltZXN0YW1wKCkoInRpbWVzdGFtcCIsbnVsbCxhLnRpbWVzdGFtcCldLHRbaS5TSUdOX1RZUEUuUkVJU1NVRV09W28uc3RyaW5nKCkoInNlbmRlclB1YmxpY0tleSIsbnVsbCxudWxsLCEwKSxvLm51bWJlcigpKCJjaGFpbklkIixudWxsLGEuYWRkVmFsdWUoZnVuY3Rpb24oKXtyZXR1cm4gZX0pLCEwKSxvLmFzc2V0KCkoImFzc2V0SWQiKSxvLm51bWJlckxpa2UoKSgicXVhbnRpdHkiLG51bGwsYS50b0JpZ051bWJlciksby5ib29sZWFuKCkoInJlaXNzdWFibGUiKSxvLm51bWJlckxpa2UoKSgiZmVlIixudWxsLGEudG9CaWdOdW1iZXIpLG8udGltZXN0YW1wKCkoInRpbWVzdGFtcCIsbnVsbCxhLnRpbWVzdGFtcCldLHRbaS5TSUdOX1RZUEUuRVhDSEFOR0VdPVtvLnN0cmluZygpKCJzZW5kZXJQdWJsaWNLZXkiLG51bGwsbnVsbCwhMCksby50aW1lc3RhbXAoKSgidGltZXN0YW1wIixudWxsLGEudGltZXN0YW1wKSxvLm51bWJlckxpa2UoKSgiZmVlIixudWxsLGEudG9CaWdOdW1iZXIpLG8uZnJvbURhdGEoKSgiYnV5T3JkZXIiKSxvLmZyb21EYXRhKCkoInNlbGxPcmRlciIpLG8ubnVtYmVyTGlrZSgpKCJhbW91bnQiLCJhbW91bnQiLGEudG9CaWdOdW1iZXIpLG8ubnVtYmVyTGlrZSgpKCJwcmljZSIsInByaWNlIixhLnRvQmlnTnVtYmVyKSxvLm51bWJlckxpa2UoKSgiYnV5TWF0Y2hlckZlZSIsImJ1eU1hdGNoZXJGZWUiLGEudG9CaWdOdW1iZXIpLG8ubnVtYmVyTGlrZSgpKCJzZWxsTWF0Y2hlckZlZSIsInNlbGxNYXRjaGVyRmVlIixhLnRvQmlnTnVtYmVyKV0sdFtpLlNJR05fVFlQRS5CVVJOXT1bby5zdHJpbmcoKSgic2VuZGVyUHVibGljS2V5IixudWxsLG51bGwsITApLG8ubnVtYmVyKCkoImNoYWluSWQiLG51bGwsYS5hZGRWYWx1ZShmdW5jdGlvbigpe3JldHVybiBlfSksITApLG8uYXNzZXQoKSgiYXNzZXRJZCIpLG8ubnVtYmVyTGlrZSgpKCJhbW91bnQiLCJxdWFudGl0eSIsYS50b0JpZ051bWJlciksby5udW1iZXJMaWtlKCkoImZlZSIsbnVsbCxhLnRvQmlnTnVtYmVyKSxvLnRpbWVzdGFtcCgpKCJ0aW1lc3RhbXAiLG51bGwsYS50aW1lc3RhbXApXSx0W2kuU0lHTl9UWVBFLlNQT05TT1JTSElQXT1bby5zdHJpbmcoKSgic2VuZGVyUHVibGljS2V5IixudWxsLG51bGwsITApLG8ubW9uZXkoKSgibWluU3BvbnNvcmVkQXNzZXRGZWUiLCJhc3NldElkIixhLm1vbmV5VG9Bc3NldElkKSxvLm51bWJlckxpa2UoKSgibWluU3BvbnNvcmVkQXNzZXRGZWUiLG51bGwsYS50b0JpZ051bWJlciksby5udW1iZXJMaWtlKCkoImZlZSIsbnVsbCxhLnRvQmlnTnVtYmVyKSxvLnRpbWVzdGFtcCgpKCJ0aW1lc3RhbXAiLG51bGwsYS50aW1lc3RhbXApXSx0W2kuU0lHTl9UWVBFLlRSQU5TRkVSXT1bby5zdHJpbmcoKSgic2VuZGVyUHVibGljS2V5IixudWxsLG51bGwsITApLG8ubW9uZXkoKSgiYW1vdW50IiwiYXNzZXRJZCIsYS5tb25leVRvQXNzZXRJZCksby5yZXF1aXJlZCgpKCJhbW91bnQiLG51bGwsYS50b0JpZ051bWJlciksby5tb25leSgpKCJmZWUiLCJmZWVBc3NldElkIixhLm1vbmV5VG9Bc3NldElkKSxvLnJlcXVpcmVkKCkoImZlZSIsImZlZSIsYS50b0JpZ051bWJlciksby50aW1lc3RhbXAoKSgidGltZXN0YW1wIixudWxsLGEudGltZXN0YW1wKSxvLmFsaWFzT3JBZGRyZXNzKGUpKCJyZWNpcGllbnQiKSxvLmF0dGFjaG1lbnQoKSgiYXR0YWNobWVudCIsbnVsbCxhLm9yU3RyaW5nLCEwKV0sdFtpLlNJR05fVFlQRS5MRUFTRV09W28uc3RyaW5nKCkoInNlbmRlclB1YmxpY0tleSIsbnVsbCxudWxsLCEwKSxvLm51bWJlcigpKCJjaGFpbklkIixudWxsLGEuYWRkVmFsdWUoZnVuY3Rpb24oKXtyZXR1cm4gZX0pLCEwKSxvLmFsaWFzT3JBZGRyZXNzKGUpKCJyZWNpcGllbnQiKSxvLm51bWJlckxpa2UoKSgiYW1vdW50IixudWxsLGEudG9CaWdOdW1iZXIpLG8ubnVtYmVyTGlrZSgpKCJmZWUiLG51bGwsYS50b0JpZ051bWJlciksby50aW1lc3RhbXAoKSgidGltZXN0YW1wIixudWxsLGEudGltZXN0YW1wKV0sdFtpLlNJR05fVFlQRS5DQU5DRUxfTEVBU0lOR109W28uc3RyaW5nKCkoInNlbmRlclB1YmxpY0tleSIsbnVsbCxudWxsLCEwKSxvLm51bWJlcigpKCJjaGFpbklkIixudWxsLGEuYWRkVmFsdWUoZnVuY3Rpb24oKXtyZXR1cm4gZX0pLCEwKSxvLnN0cmluZygpKCJsZWFzZUlkIiwidHJhbnNhY3Rpb25JZCIpLG8ubnVtYmVyTGlrZSgpKCJmZWUiLG51bGwsYS50b0JpZ051bWJlciksby50aW1lc3RhbXAoKSgidGltZXN0YW1wIixudWxsLGEudGltZXN0YW1wKV0sdFtpLlNJR05fVFlQRS5DUkVBVEVfQUxJQVNdPVtvLnN0cmluZygpKCJzZW5kZXJQdWJsaWNLZXkiLG51bGwsbnVsbCwhMCksby5udW1iZXIoKSgiY2hhaW5JZCIsbnVsbCxhLmFkZFZhbHVlKGZ1bmN0aW9uKCl7cmV0dXJuIGV9KSwhMCksby5hbGlhc05hbWUoZSkoImFsaWFzIiksby5udW1iZXJMaWtlKCkoImZlZSIsbnVsbCxhLnRvQmlnTnVtYmVyKSxvLnRpbWVzdGFtcCgpKCJ0aW1lc3RhbXAiLG51bGwsYS50aW1lc3RhbXApXSx0W2kuU0lHTl9UWVBFLk1BU1NfVFJBTlNGRVJdPVtvLnN0cmluZygpKCJzZW5kZXJQdWJsaWNLZXkiLG51bGwsbnVsbCwhMCksby5tb25leSgpKCJ0b3RhbEFtb3VudCIsImFzc2V0SWQiLGEubW9uZXlUb0Fzc2V0SWQpLG8udHJhbnNmZXJzKGUpKCJ0cmFuc2ZlcnMiLG51bGwsYS50cmFuc2ZlcnMoYS5ub1Byb2Nlc3MsYS50b0JpZ051bWJlcikpLG8ubnVtYmVyTGlrZSgpKCJmZWUiLG51bGwsYS50b0JpZ051bWJlciksby5hdHRhY2htZW50KCkoImF0dGFjaG1lbnQiLG51bGwsYS5vclN0cmluZywhMCksby50aW1lc3RhbXAoKSgidGltZXN0YW1wIixudWxsLGEudGltZXN0YW1wKV0sdFtpLlNJR05fVFlQRS5EQVRBXT1bby5zdHJpbmcoKSgic2VuZGVyUHVibGljS2V5IixudWxsLG51bGwsITApLG8ubnVtYmVyTGlrZSgpKCJmZWUiLG51bGwsYS50b0JpZ051bWJlciksby50aW1lc3RhbXAoKSgidGltZXN0YW1wIixudWxsLGEudGltZXN0YW1wKSxvLmRhdGEoKSgiZGF0YSIpXSx0W2kuU0lHTl9UWVBFLlNFVF9TQ1JJUFRdPVtvLnN0cmluZygpKCJzZW5kZXJQdWJsaWNLZXkiLG51bGwsbnVsbCwhMCksby5udW1iZXJMaWtlKCkoImZlZSIsbnVsbCxhLnRvQmlnTnVtYmVyKSxvLnRpbWVzdGFtcCgpKCJ0aW1lc3RhbXAiLG51bGwsYS50aW1lc3RhbXApLG8ubnVtYmVyKCkoImNoYWluSWQiLG51bGwsYS5hZGRWYWx1ZShmdW5jdGlvbigpe3JldHVybiBlfSksITApLG8uc2NyaXB0KCkoInNjcmlwdCIpXSx0W2kuU0lHTl9UWVBFLlNFVF9BU1NFVF9TQ1JJUFRdPVtvLnN0cmluZygpKCJzZW5kZXJQdWJsaWNLZXkiLG51bGwsbnVsbCwhMCksby5hc3NldCgpKCJhc3NldElkIiksby5udW1iZXJMaWtlKCkoImZlZSIsbnVsbCxhLnRvQmlnTnVtYmVyKSxvLnRpbWVzdGFtcCgpKCJ0aW1lc3RhbXAiLG51bGwsYS50aW1lc3RhbXApLG8ubnVtYmVyKCkoImNoYWluSWQiLG51bGwsYS5hZGRWYWx1ZShmdW5jdGlvbigpe3JldHVybiBlfSksITApLG8uYXNzZXRfc2NyaXB0KCkoInNjcmlwdCIpXSx0W2kuU0lHTl9UWVBFLlNDUklQVF9JTlZPQ0FUSU9OXT1bby5udW1iZXIoKSgidHlwZSIsbnVsbCxhLmFkZFZhbHVlKGZ1bmN0aW9uKCl7cmV0dXJuIGkuU0lHTl9UWVBFLlNDUklQVF9JTlZPQ0FUSU9OfSksITApLG8ubnVtYmVyKCkoInZlcnNpb24iLG51bGwsYS5hZGRWYWx1ZShmdW5jdGlvbigpe3JldHVybiAxfSksITApLG8uc3RyaW5nKCkoInNlbmRlclB1YmxpY0tleSIsbnVsbCxudWxsLCEwKSxvLmFsaWFzT3JBZGRyZXNzKGUpKCJkQXBwIiksby5jYWxsKCkoImNhbGwiLCJjYWxsIixhLmNhbGxGdW5jLCEwKSxvLnBheW1lbnQoKSgicGF5bWVudCIsbnVsbCxhLnBheW1lbnRzLCEwKSxvLm51bWJlckxpa2UoKSgiZmVlIixudWxsLGEudG9OdW1iZXJTdHJpbmcpLG8ubnVtYmVyTGlrZSgpKCJmZWUiLCJhc3NldElkIixhLm1vbmV5VG9Bc3NldElkKSxvLnRpbWVzdGFtcCgpKCJ0aW1lc3RhbXAiLG51bGwsYS50aW1lc3RhbXApLG8ubnVtYmVyKCkoImNoYWluSWQiLG51bGwsYS5hZGRWYWx1ZShlKSwhMCldLHR9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7Zm9yKHZhciByIGluIGUpdC5oYXNPd25Qcm9wZXJ0eShyKXx8KHRbcl09ZVtyXSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG4ocigxNzApKSxuKHIoMzk5KSksbihyKDQ1NSkpLG4ocig5NDEpKX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10aGlzJiZ0aGlzLl9fYXNzaWdufHxmdW5jdGlvbigpe3JldHVybihuPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTEsbj1hcmd1bWVudHMubGVuZ3RoO3I8bjtyKyspZm9yKHZhciBpIGluIHQ9YXJndW1lbnRzW3JdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGkpJiYoZVtpXT10W2ldKTtyZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0saT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIG5ldyhyfHwocj1Qcm9taXNlKSkoZnVuY3Rpb24oaSxvKXtmdW5jdGlvbiBhKGUpe3RyeXt1KG4ubmV4dChlKSl9Y2F0Y2godCl7byh0KX19ZnVuY3Rpb24gcyhlKXt0cnl7dShuLnRocm93KGUpKX1jYXRjaCh0KXtvKHQpfX1mdW5jdGlvbiB1KGUpe2UuZG9uZT9pKGUudmFsdWUpOm5ldyByKGZ1bmN0aW9uKHQpe3QoZS52YWx1ZSl9KS50aGVuKGEscyl9dSgobj1uLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSl9LG89dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGksbyxhPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmlbMF0pdGhyb3cgaVsxXTtyZXR1cm4gaVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBvPXtuZXh0OnMoMCksdGhyb3c6cygxKSxyZXR1cm46cygyKX0sImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJihvW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLG87ZnVuY3Rpb24gcyhvKXtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuIGZ1bmN0aW9uKG8pe2lmKHIpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7YTspdHJ5e2lmKHI9MSxuJiYoaT0yJm9bMF0/bi5yZXR1cm46b1swXT9uLnRocm93fHwoKGk9bi5yZXR1cm4pJiZpLmNhbGwobiksMCk6bi5uZXh0KSYmIShpPWkuY2FsbChuLG9bMV0pKS5kb25lKXJldHVybiBpO3N3aXRjaChuPTAsaSYmKG89WzImb1swXSxpLnZhbHVlXSksb1swXSl7Y2FzZSAwOmNhc2UgMTppPW87YnJlYWs7Y2FzZSA0OnJldHVybiBhLmxhYmVsKysse3ZhbHVlOm9bMV0sZG9uZTohMX07Y2FzZSA1OmEubGFiZWwrKyxuPW9bMV0sbz1bMF07Y29udGludWU7Y2FzZSA3Om89YS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShpPShpPWEudHJ5cykubGVuZ3RoPjAmJmlbaS5sZW5ndGgtMV0pJiYoNj09PW9bMF18fDI9PT1vWzBdKSl7YT0wO2NvbnRpbnVlfWlmKDM9PT1vWzBdJiYoIWl8fG9bMV0+aVswXSYmb1sxXTxpWzNdKSl7YS5sYWJlbD1vWzFdO2JyZWFrfWlmKDY9PT1vWzBdJiZhLmxhYmVsPGlbMV0pe2EubGFiZWw9aVsxXSxpPW87YnJlYWt9aWYoaSYmYS5sYWJlbDxpWzJdKXthLmxhYmVsPWlbMl0sYS5vcHMucHVzaChvKTticmVha31pWzJdJiZhLm9wcy5wb3AoKSxhLnRyeXMucG9wKCk7Y29udGludWV9bz10LmNhbGwoZSxhKX1jYXRjaChzKXtvPVs2LHNdLG49MH1maW5hbGx5e3I9aT0wfWlmKDUmb1swXSl0aHJvdyBvWzFdO3JldHVybnt2YWx1ZTpvWzBdP29bMV06dm9pZCAwLGRvbmU6ITB9fShbbyxzXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBhPXIoODApLHM9cigyMzMpLHU9cigzOTgpLGM9cig3MTIpLGY9cigzMSksbD1yKDM5MyksaD1yKDkxKSxwPXIoODApLGQ9Zi5saWJzLmNyeXB0byx5PWQuYmFzZTU4RW5jb2RlLGc9ZC5ibGFrZTJiLHY9ZC52ZXJpZnlTaWduYXR1cmUsbT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLl9zaWduTWV0aG9kPSJzaWduUmVxdWVzdCIsdGhpcy5fcHJvb2ZzPVtdO3ZhciByPXQuZ2V0TmV0d29ya0J5dGUoKTt0aGlzLl9mb3JTaWduPW4oe30sZSksdGhpcy50eXBlPWUudHlwZSx0aGlzLl9hZGFwdGVyPXQ7dmFyIGk9YS5nZXRWYWxpZGF0ZVNjaGVtYShyKVtlLnR5cGVdO2lmKCFpKXRocm93IG5ldyBjLlNpZ25FcnJvcigiQ2FuJ3QgZmluZCBwcmVwYXJlIGFwaSBmb3IgdHggdHlwZSBcIiIrZS50eXBlKyciIScsdS5FUlJPUlMuVU5LTk9XTl9TSUdOX1RZUEUpO3RoaXMuX2ZvclNpZ24uZGF0YS50aW1lc3RhbXA9bmV3IERhdGUodGhpcy5fZm9yU2lnbi5kYXRhLnRpbWVzdGFtcHx8RGF0ZS5ub3coKSkuZ2V0VGltZSgpLHRoaXMuX2ZvclNpZ24uZGF0YS5wcm9vZnMmJih0aGlzLl9wcm9vZnM9dGhpcy5fZm9yU2lnbi5kYXRhLnByb29mcy5zbGljZSgpKTt2YXIgbz10LmdldFNpZ25WZXJzaW9ucygpW2UudHlwZV07aWYoMD09PW8ubGVuZ3RoKXRocm93IG5ldyBjLlNpZ25FcnJvcigiQ2FuJ3Qgc2lnbiBkYXRhIHdpdGggdHlwZSAiK3RoaXMudHlwZSx1LkVSUk9SUy5OT19TVVBQT1JURURfVkVSU0lPTlMpO3MuaXNFbXB0eSh0aGlzLl9mb3JTaWduLmRhdGEudmVyc2lvbikmJih0aGlzLl9mb3JTaWduLmRhdGEudmVyc2lvbj1zLmxhc3QobykpO3ZhciBmPXRoaXMuX2ZvclNpZ24uZGF0YS52ZXJzaW9uO2lmKCFvLmluY2x1ZGVzKGYpKXRocm93IG5ldyBjLlNpZ25FcnJvcigiQ2FuJ3Qgc2lnbiBkYXRhIHdpdGggdHlwZSBcIiIrdGhpcy50eXBlKyciIGFuZCB2ZXJzaW9uICInK2YrJyInLHUuRVJST1JTLlZFUlNJT05fSVNfTk9UX1NVUFBPUlRFRCk7aWYoIWEuU0lHTl9UWVBFU1tlLnR5cGVdLmdldEJ5dGVzW2ZdKXRocm93IG5ldyBjLlNpZ25FcnJvcigiQ2FuJ3QgZmluZCBwcmVwYXJlIGFwaSBmb3IgdHggdHlwZSBcIiIrZS50eXBlKyciIHdpdGggdmVyc2lvbiAnK2YrIiEiLHUuRVJST1JTLlZFUlNJT05fSVNfTk9UX1NVUFBPUlRFRCk7dGhpcy5fc2lnbk1ldGhvZD1hLlNJR05fVFlQRVNbZS50eXBlXS5hZGFwdGVyO3RyeXt0aGlzLl9wcmVwYXJlZERhdGE9YS5wcmVwYXJlLnNpZ25TY2hlbWEoaSkodGhpcy5fZm9yU2lnbi5kYXRhLCEwKX1jYXRjaChsKXt0aHJvdyBuZXcgYy5TaWduRXJyb3IobC5tZXNzYWdlLHUuRVJST1JTLlZBTElEQVRJT05fRkFJTEVEKX10aGlzLl9ieXRlUHJvbWlzZT10aGlzLmdldFNpZ25EYXRhKCkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gYS5TSUdOX1RZUEVTW2UudHlwZV0uZ2V0Qnl0ZXNbZl0odCl9KX1yZXR1cm4gZS5wcm90b3R5cGUuZ2V0T3JkZXJGZWU9ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIGkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGksdTtyZXR1cm4gbyh0aGlzLGZ1bmN0aW9uKG8pe3N3aXRjaChvLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuX2ZvclNpZ24udHlwZSE9PWEuU0lHTl9UWVBFLkNSRUFURV9PUkRFUj9bMywyXTooaT1zLmN1cnJlbnRDcmVhdGVPcmRlckZhY3RvcnkoZSx0KSx1PWksWzQsdGhpcy5nZXREYXRhRm9yQXBpKCldKTtjYXNlIDE6cmV0dXJuWzIsdS5hcHBseSh2b2lkIDAsW28uc2VudCgpLHIsbl0pXTtjYXNlIDI6cmV0dXJuWzJdfX0pfSl9LGUucHJvdG90eXBlLmdldEZlZT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG4saSxhO3JldHVybiBvKHRoaXMsZnVuY3Rpb24obyl7c3dpdGNoKG8ubGFiZWwpe2Nhc2UgMDpyZXR1cm4gbj1zLmN1cnJlbnRGZWVGYWN0b3J5KGUpLFs0LHRoaXMuZ2V0U2lnbkRhdGEoKV07Y2FzZSAxOnJldHVybiBpPW8uc2VudCgpLFs0LHRoaXMuZ2V0Qnl0ZXMoKV07Y2FzZSAyOnJldHVybiBhPW8uc2VudCgpLFsyLG4oaSxhLHQscildfX0pfSl9LGUucHJvdG90eXBlLmdldFR4RGF0YT1mdW5jdGlvbigpe3JldHVybiBuKHt9LHRoaXMuX2ZvclNpZ24uZGF0YSl9LGUucHJvdG90eXBlLmdldFNpZ25EYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIGkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGUsdCxyLGk7cmV0dXJuIG8odGhpcyxmdW5jdGlvbihvKXtzd2l0Y2goby5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuX2FkYXB0ZXIuZ2V0UHVibGljS2V5KCldO2Nhc2UgMTpyZXR1cm4gZT1vLnNlbnQoKSxbNCx0aGlzLl9hZGFwdGVyLmdldEFkZHJlc3MoKV07Y2FzZSAyOnJldHVybiB0PW8uc2VudCgpLHI9bih7fSx0aGlzLl9wcmVwYXJlZERhdGEse3NlbmRlclB1YmxpY0tleTplLHNlbmRlcjp0fSx0aGlzLl9mb3JTaWduLmRhdGEse3R5cGU6dGhpcy5fZm9yU2lnbi50eXBlfSksaT1hLlNJR05fVFlQRVNbdGhpcy5fZm9yU2lnbi50eXBlXS50b05vZGV8fG51bGwsWzIsaSYmaShyLHRoaXMuX2FkYXB0ZXIuZ2V0TmV0d29ya0J5dGUoKSl8fHJdfX0pfSl9LGUucHJvdG90eXBlLmdldEFzc2V0SWRzPWZ1bmN0aW9uKCl7cmV0dXJuIGkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGUsdDtyZXR1cm4gbyh0aGlzLGZ1bmN0aW9uKHIpe3N3aXRjaChyLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5nZXRTaWduRGF0YSgpXTtjYXNlIDE6c3dpdGNoKGU9ci5zZW50KCksKHQ9T2JqZWN0LmNyZWF0ZShudWxsKSlbYS5XQVZFU19JRF09ITAsdFtzLm5vcm1hbGl6ZUFzc2V0SWQoZS5mZWVBc3NldElkKV09ITAsZS50eXBlKXtjYXNlIGEuU0lHTl9UWVBFLkNSRUFURV9PUkRFUjp0W3Mubm9ybWFsaXplQXNzZXRJZChlLm1hdGNoZXJGZWVBc3NldElkKV09ITAsdFtzLm5vcm1hbGl6ZUFzc2V0SWQoZS5hc3NldFBhaXIuYW1vdW50QXNzZXQpXT0hMCx0W3Mubm9ybWFsaXplQXNzZXRJZChlLmFzc2V0UGFpci5wcmljZUFzc2V0KV09ITA7YnJlYWs7Y2FzZSBwLlRSQU5TQUNUSU9OX1RZUEVfTlVNQkVSLlJFSVNTVUU6Y2FzZSBwLlRSQU5TQUNUSU9OX1RZUEVfTlVNQkVSLkJVUk46Y2FzZSBwLlRSQU5TQUNUSU9OX1RZUEVfTlVNQkVSLk1BU1NfVFJBTlNGRVI6Y2FzZSBwLlRSQU5TQUNUSU9OX1RZUEVfTlVNQkVSLlNQT05TT1JTSElQOmNhc2UgcC5UUkFOU0FDVElPTl9UWVBFX05VTUJFUi5UUkFOU0ZFUjp0W3Mubm9ybWFsaXplQXNzZXRJZChlLmFzc2V0SWQpXT0hMDticmVhaztjYXNlIHAuVFJBTlNBQ1RJT05fVFlQRV9OVU1CRVIuRVhDSEFOR0U6dFtzLm5vcm1hbGl6ZUFzc2V0SWQoZS5vcmRlcjEuYXNzZXRQYWlyLmFtb3VudEFzc2V0KV09ITAsdFtzLm5vcm1hbGl6ZUFzc2V0SWQoZS5vcmRlcjEuYXNzZXRQYWlyLnByaWNlQXNzZXQpXT0hMCx0W3Mubm9ybWFsaXplQXNzZXRJZChlLm9yZGVyMS5tYXRjaGVyRmVlQXNzZXRJZCldPSEwLHRbcy5ub3JtYWxpemVBc3NldElkKGUub3JkZXIyLm1hdGNoZXJGZWVBc3NldElkKV09ITA7YnJlYWs7Y2FzZSBwLlRSQU5TQUNUSU9OX1RZUEVfTlVNQkVSLlNDUklQVF9JTlZPQ0FUSU9OOmUucGF5bWVudC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3Rbcy5ub3JtYWxpemVBc3NldElkKGUuYXNzZXRJZCldPSEwfSl9cmV0dXJuWzIsT2JqZWN0LmtleXModCldfX0pfSl9LGUucHJvdG90eXBlLnNpZ24yZmE9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxyPWUuY29kZTtyZXR1cm4gdGhpcy5fYWRhcHRlci5nZXRBZGRyZXNzKCkudGhlbihmdW5jdGlvbihuKXtyZXR1cm4gZS5yZXF1ZXN0KHthZGRyZXNzOm4sY29kZTpyLHNpZ25EYXRhOnQuX2ZvclNpZ259KX0pLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIHQuX3Byb29mcy5wdXNoKGUpLHR9KX0sZS5wcm90b3R5cGUuYWRkUHJvb2Y9ZnVuY3Rpb24oZSl7cmV0dXJuLTEhPT10aGlzLl9wcm9vZnMuaW5kZXhPZihlKSYmdGhpcy5fcHJvb2ZzLnB1c2goZSksdGhpc30sZS5wcm90b3R5cGUuZ2V0SGFzaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9ieXRlUHJvbWlzZS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiB5KGcoZSkpfSl9LGUucHJvdG90eXBlLmdldElkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2J5dGVQcm9taXNlLnRoZW4oZnVuY3Rpb24oZSl7dmFyIHQ9QXJyYXkuZnJvbShlKTtyZXR1cm4gMTA9PT1lWzBdJiYoZT1uZXcgVWludDhBcnJheShbdFswXV0uY29uY2F0KHQuc2xpY2UoMzYsLTE2KSkpKSx5KGcoZSkpfSl9LGUucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiB0aGlzLl9tYWtlU2lnblByb21pc2UoKSx0aGlzLl9zaWduUHJvbWlzZS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGV9KX0sZS5wcm90b3R5cGUuZ2V0U2lnbmF0dXJlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21ha2VTaWduUHJvbWlzZSgpLHRoaXMuX3NpZ25Qcm9taXNlfSxlLnByb3RvdHlwZS5nZXRCeXRlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9ieXRlUHJvbWlzZX0sZS5wcm90b3R5cGUuZ2V0TXlQcm9vZnM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBQcm9taXNlLmFsbChbdGhpcy5nZXRCeXRlcygpLHRoaXMuX2FkYXB0ZXIuZ2V0UHVibGljS2V5KCldKS50aGVuKGZ1bmN0aW9uKHQpe3ZhciByPXRbMF0sbj10WzFdO3JldHVybiBlLl9wcm9vZnMuZmlsdGVyKGZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gdihuLHIsZSl9Y2F0Y2godCl7cmV0dXJuITF9fSl9KX0sZS5wcm90b3R5cGUuaGFzTXlTaWduYXR1cmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRNeVByb29mcygpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuISFlLmxlbmd0aH0pfSxlLnByb3RvdHlwZS5hZGRNeVByb29mPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5oYXNNeVNpZ25hdHVyZSgpLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIHQ/ZS5nZXRNeVByb29mcygpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGVbZS5sZW5ndGgtMV19KTplLmdldFNpZ25hdHVyZSgpLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIGUuX3Byb29mcy5wdXNoKHQpLHR9KX0pfSxlLnByb3RvdHlwZS5nZXREYXRhRm9yQXBpPWZ1bmN0aW9uKCl7cmV0dXJuIGkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGUsdDtyZXR1cm4gbyh0aGlzLGZ1bmN0aW9uKHIpe3N3aXRjaChyLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5nZXRTaWduRGF0YSgpXTtjYXNlIDE6cmV0dXJuIGU9ci5zZW50KCksWzQsdGhpcy5hZGRNeVByb29mKCldO2Nhc2UgMjpyLnNlbnQoKSx0PSh0aGlzLl9wcm9vZnN8fFtdKS5zbGljZSgpO3RyeXtyZXR1cm5bMixsLmNvbnZlcnQobih7fSxlLHtwcm9vZnM6dH0pLGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgaC5CaWdOdW1iZXIoZSl9KV19Y2F0Y2goaSl7cmV0dXJuWzIsbih7fSxlLHtwcm9vZnM6dCxzaWduYXR1cmU6dFswXX0pXX1yZXR1cm5bMl19fSl9KX0sZS5wcm90b3R5cGUuX21ha2VTaWduUHJvbWlzZT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHRoaXMuX3NpZ25Qcm9taXNlfHwodGhpcy5fc2lnblByb21pc2U9dGhpcy5fYnl0ZVByb21pc2UudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gZS5fYWRhcHRlcltlLl9zaWduTWV0aG9kXSh0LGUuX2dldEFtb3VudFByZWNpc2lvbigpLGUuX2ZvclNpZ24pfSksdGhpcy5fc2lnblByb21pc2UuY2F0Y2goZnVuY3Rpb24oKXtlLl9zaWduUHJvbWlzZT12b2lkIDB9KSksdGhpc30sZS5wcm90b3R5cGUuX2dldEFtb3VudFByZWNpc2lvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2ZvclNpZ24uZGF0YTtyZXR1cm4gZS5hbW91bnQmJmUuYW1vdW50LmFzc2V0JiZlLmFtb3VudC5hc3NldC5wcmVjaXNpb24/ZS5hbW91bnQuYXNzZXQucHJlY2lzaW9uOjB9LGV9KCk7dC5TaWduYWJsZT1tfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxmdW5jdGlvbihlKXtlW2UuVU5LTk9XTl9TSUdOX1RZUEU9MF09IlVOS05PV05fU0lHTl9UWVBFIixlW2UuTk9fU1VQUE9SVEVEX1ZFUlNJT05TPTFdPSJOT19TVVBQT1JURURfVkVSU0lPTlMiLGVbZS5WRVJTSU9OX0lTX05PVF9TVVBQT1JURUQ9Ml09IlZFUlNJT05fSVNfTk9UX1NVUFBPUlRFRCIsZVtlLlZBTElEQVRJT05fRkFJTEVEPTNdPSJWQUxJREFUSU9OX0ZBSUxFRCJ9KHQuRVJST1JTfHwodC5FUlJPUlM9e30pKX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbih0LHIpe3JldHVybihlPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KXQuaGFzT3duUHJvcGVydHkocikmJihlW3JdPXRbcl0pfSkodCxyKX07cmV0dXJuIGZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1lKHQsciksdC5wcm90b3R5cGU9bnVsbD09PXI/T2JqZWN0LmNyZWF0ZShyKToobi5wcm90b3R5cGU9ci5wcm90b3R5cGUsbmV3IG4pfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9cigxNzApLG89cig3MTMpLGE9cig4MCkscz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQpe3ZhciByPWUuY2FsbCh0aGlzKXx8dGhpcztpZihyLl9jdXJyZW50VXNlcj10LCFyLl9jdXJyZW50VXNlcil0aHJvdyJObyBzZWxlY3RlZCB1c2VyIjtyZXR1cm4gcn1yZXR1cm4gbih0LGUpLHQucHJvdG90eXBlLmlzQXZhaWxhYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzTXlMZWRnZXIoKX0sdC5wcm90b3R5cGUuZ2V0UHVibGljS2V5PWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9jdXJyZW50VXNlci5wdWJsaWNLZXkpfSx0LnByb3RvdHlwZS5nZXRBZGRyZXNzPWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9jdXJyZW50VXNlci5hZGRyZXNzKX0sdC5wcm90b3R5cGUuZ2V0U2VlZD1mdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlamVjdChFcnJvcignTWV0aG9kICJnZXRTZWVkIiBpcyBub3QgYXZhaWxhYmxlIScpKX0sdC5wcm90b3R5cGUuZ2V0QWRhcHRlclZlcnNpb249ZnVuY3Rpb24oKXtyZXR1cm4gdC5fbGVkZ2VyLmdldFZlcnNpb24oKX0sdC5wcm90b3R5cGUuc2lnblJlcXVlc3Q9ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcztyZXR1cm4gdGhpcy5faXNNeUxlZGdlcigpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdC5fbGVkZ2VyLnNpZ25SZXF1ZXN0KHIuX2N1cnJlbnRVc2VyLmlkLGUpfSl9LHQucHJvdG90eXBlLnNpZ25UcmFuc2FjdGlvbj1mdW5jdGlvbihlLHIpe3ZhciBuPXRoaXM7cmV0dXJuIDE1PT09ZVswXT90aGlzLnNpZ25EYXRhKGUpOnRoaXMuX2lzTXlMZWRnZXIoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHQuX2xlZGdlci5zaWduVHJhbnNhY3Rpb24obi5fY3VycmVudFVzZXIuaWQse3ByZWNpc2lvbjpyfSxlKX0pfSx0LnByb3RvdHlwZS5zaWduT3JkZXI9ZnVuY3Rpb24oZSxyKXt2YXIgbj10aGlzO3JldHVybiB0aGlzLl9pc015TGVkZ2VyKCkudGhlbihmdW5jdGlvbigpe3JldHVybiB0Ll9sZWRnZXIuc2lnbk9yZGVyKG4uX2N1cnJlbnRVc2VyLmlkLHtwcmVjaXNpb246cn0sZSl9KX0sdC5wcm90b3R5cGUuc2lnbkRhdGE9ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcztyZXR1cm4gdGhpcy5faXNNeUxlZGdlcigpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdC5fbGVkZ2VyLnNpZ25Tb21lRGF0YShyLl9jdXJyZW50VXNlci5pZCxlKX0pfSx0LnByb3RvdHlwZS5nZXRQcml2YXRlS2V5PWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVqZWN0KCJObyBwcml2YXRlIGtleSIpfSx0LnByb3RvdHlwZS5nZXRTaWduVmVyc2lvbnM9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4oZT17fSlbYS5TSUdOX1RZUEUuQVVUSF09WzFdLGVbYS5TSUdOX1RZUEUuTUFUQ0hFUl9PUkRFUlNdPVsxXSxlW2EuU0lHTl9UWVBFLkNSRUFURV9PUkRFUl09WzEsMiwzXSxlW2EuU0lHTl9UWVBFLkNBTkNFTF9PUkRFUl09WzFdLGVbYS5TSUdOX1RZUEUuQ09JTk9NQVRfQ09ORklSTUFUSU9OXT1bMV0sZVthLlNJR05fVFlQRS5JU1NVRV09WzJdLGVbYS5TSUdOX1RZUEUuVFJBTlNGRVJdPVsyXSxlW2EuU0lHTl9UWVBFLlJFSVNTVUVdPVsyXSxlW2EuU0lHTl9UWVBFLkJVUk5dPVsyXSxlW2EuU0lHTl9UWVBFLkVYQ0hBTkdFXT1bXSxlW2EuU0lHTl9UWVBFLkxFQVNFXT1bMl0sZVthLlNJR05fVFlQRS5DQU5DRUxfTEVBU0lOR109WzJdLGVbYS5TSUdOX1RZUEUuQ1JFQVRFX0FMSUFTXT1bMl0sZVthLlNJR05fVFlQRS5NQVNTX1RSQU5TRkVSXT1bMV0sZVthLlNJR05fVFlQRS5EQVRBXT1bMV0sZVthLlNJR05fVFlQRS5TRVRfU0NSSVBUXT1bMV0sZVthLlNJR05fVFlQRS5TUE9OU09SU0hJUF09WzFdLGVbYS5TSUdOX1RZUEUuU0VUX0FTU0VUX1NDUklQVF09WzFdLGVbYS5TSUdOX1RZUEUuU0NSSVBUX0lOVk9DQVRJT05dPVsxXSxlfSx0LnByb3RvdHlwZS5faXNNeUxlZGdlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHQuX2xlZGdlci5nZXRVc2VyRGF0YUJ5SWQodGhpcy5fY3VycmVudFVzZXIuaWQpLnRoZW4oZnVuY3Rpb24odCl7aWYodC5hZGRyZXNzIT09ZS5fY3VycmVudFVzZXIuYWRkcmVzcyl0aHJvd3tlcnJvcjoiSW52YWxpZCBsZWRnZXIifX0pfSx0LmdldFVzZXJMaXN0PWZ1bmN0aW9uKGUscil7cmV0dXJuIHZvaWQgMD09PWUmJihlPTEpLHZvaWQgMD09PXImJihyPTEpLHQuX2xlZGdlci5nZXRQYWdpbmF0aW9uVXNlcnNEYXRhKGUscil9LHQuaW5pdE9wdGlvbnM9ZnVuY3Rpb24oZSl7aS5BZGFwdGVyLmluaXRPcHRpb25zKGUpLHRoaXMuX2xlZGdlcj1uZXcgby5XYXZlc0xlZGdlcihlKX0sdC5pc0F2YWlsYWJsZT1mdW5jdGlvbigpe3JldHVybiB0Ll9oYXNDb25uZWN0aW9uUHJvbWlzZXx8KHQuX2hhc0Nvbm5lY3Rpb25Qcm9taXNlPXQuX2xlZGdlci5wcm9iZURldmljZSgpKSx0Ll9oYXNDb25uZWN0aW9uUHJvbWlzZS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHQuX2hhc0Nvbm5lY3Rpb25Qcm9taXNlPW51bGwsITB9LGZ1bmN0aW9uKGUpe3JldHVybiB0Ll9oYXNDb25uZWN0aW9uUHJvbWlzZT1udWxsLCExfSl9LHQudHlwZT0ibGVkZ2VyIix0fShpLkFkYXB0ZXIpO3QuTGVkZ2VyQWRhcHRlcj1zfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17Q1NTUnVsZUxpc3Q6MCxDU1NTdHlsZURlY2xhcmF0aW9uOjAsQ1NTVmFsdWVMaXN0OjAsQ2xpZW50UmVjdExpc3Q6MCxET01SZWN0TGlzdDowLERPTVN0cmluZ0xpc3Q6MCxET01Ub2tlbkxpc3Q6MSxEYXRhVHJhbnNmZXJJdGVtTGlzdDowLEZpbGVMaXN0OjAsSFRNTEFsbENvbGxlY3Rpb246MCxIVE1MQ29sbGVjdGlvbjowLEhUTUxGb3JtRWxlbWVudDowLEhUTUxTZWxlY3RFbGVtZW50OjAsTWVkaWFMaXN0OjAsTWltZVR5cGVBcnJheTowLE5hbWVkTm9kZU1hcDowLE5vZGVMaXN0OjEsUGFpbnRSZXF1ZXN0TGlzdDowLFBsdWdpbjowLFBsdWdpbkFycmF5OjAsU1ZHTGVuZ3RoTGlzdDowLFNWR051bWJlckxpc3Q6MCxTVkdQYXRoU2VnTGlzdDowLFNWR1BvaW50TGlzdDowLFNWR1N0cmluZ0xpc3Q6MCxTVkdUcmFuc2Zvcm1MaXN0OjAsU291cmNlQnVmZmVyTGlzdDowLFN0eWxlU2hlZXRMaXN0OjAsVGV4dFRyYWNrQ3VlTGlzdDowLFRleHRUcmFja0xpc3Q6MCxUb3VjaExpc3Q6MH19LGZ1bmN0aW9uKGUsdCxyKXtlLmV4cG9ydHM9IXIoMTA4KSYmIXIoNjgpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShyKDI0MykoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSxmdW5jdGlvbihlLHQpe3ZhciByPTAsbj1NYXRoLnJhbmRvbSgpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4iU3ltYm9sKCIuY29uY2F0KHZvaWQgMD09PWU/IiI6ZSwiKV8iLCgrK3IrbikudG9TdHJpbmcoMzYpKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigxNzYpLGk9cig3MjUpLG89cigxNDEpLGE9cigxNDIpLHM9cig0MTApLHU9YS5zZXQsYz1hLmdldHRlckZvcigiQXJyYXkgSXRlcmF0b3IiKTtlLmV4cG9ydHM9cyhBcnJheSwiQXJyYXkiLGZ1bmN0aW9uKGUsdCl7dSh0aGlzLHt0eXBlOiJBcnJheSBJdGVyYXRvciIsdGFyZ2V0Om4oZSksaW5kZXg6MCxraW5kOnR9KX0sZnVuY3Rpb24oKXt2YXIgZT1jKHRoaXMpLHQ9ZS50YXJnZXQscj1lLmtpbmQsbj1lLmluZGV4Kys7cmV0dXJuIQ=="
}