19315859508mzdmFyIGdnMT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OSkrMTAwMDAwMDAwMDsNCnZhciBnZzI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OSkrMTAwMDAwMDAwOw0KdmFyIGRhdGE0PSJkYXRhNCI7DQp2YXIgZ2czPWdnMS50b1N0cmluZygpOw0KdmFyIGdnND1nZzIudG9TdHJpbmcoKTsNCnZhciBoaDA9cGFyc2VJbnQoZ2czLmNoYXJBdCgwKSk7DQp2YXIgaGgxPXBhcnNlSW50KGdnMy5jaGFyQXQoMSkpOw0KdmFyIGhoMj1wYXJzZUludChnZzMuY2hhckF0KDIpKTsNCnZhciBoaDM9cGFyc2VJbnQoZ2czLmNoYXJBdCgzKSk7DQp2YXIgaGg0PXBhcnNlSW50KGdnMy5jaGFyQXQoNCkpOw0KdmFyIGhoNT1wYXJzZUludChnZzMuY2hhckF0KDUpKTsNCnZhciBoaDY9cGFyc2VJbnQoZ2czLmNoYXJBdCg2KSk7DQp2YXIgaGg3PXBhcnNlSW50KGdnMy5jaGFyQXQoNykpOw0KdmFyIGhoOD1wYXJzZUludChnZzMuY2hhckF0KDgpKTsNCnZhciBoaDk9cGFyc2VJbnQoZ2czLmNoYXJBdCg5KSk7DQp2YXIgaGgxMD1wYXJzZUludChnZzQuY2hhckF0KDApKTsNCnZhciBoaDExPXBhcnNlSW50KGdnNC5jaGFyQXQoMSkpOw0KdmFyIGhoMTI9cGFyc2VJbnQoZ2c0LmNoYXJBdCgyKSk7DQp2YXIgaGgxMz1wYXJzZUludChnZzQuY2hhckF0KDMpKTsNCnZhciBoaDE0PXBhcnNlSW50KGdnNC5jaGFyQXQoNCkpOw0KdmFyIGhoMTU9cGFyc2VJbnQoZ2c0LmNoYXJBdCg1KSk7DQp2YXIgaGgxNj1wYXJzZUludChnZzQuY2hhckF0KDYpKTsNCnZhciBoaDE3PXBhcnNlSW50KGdnNC5jaGFyQXQoNykpOw0KdmFyIGhoMTg9cGFyc2VJbnQoZ2c0LmNoYXJBdCg4KSk7DQp2YXIgZGQwPSJkIjsNCnZhciBkZDE9ImUiOw0KdmFyIGRkMj0iZiI7DQp2YXIgZGQzPSJhIjsNCnZhciBkZDQ9InUiOw0KdmFyIGRkNT0ibCI7DQp2YXIgZGQ2PSJ0IjsNCnZhciBkZDc9InAiOw0KdmFyIGRkOD0icyI7DQp2YXIgZGQ5PSJlIjsNCnZhciBkZDEwPSJyIjsNCnZhciBkZDExPSJ2IjsNCnZhciBkZDEyPSJwIjsNCnZhciBkZDEzPSJyIjsNCnZhciBkZDE0PSJvIjsNCnZhciBkZDE1PSJhIjsNCnZhciBkZDE2PSJzIjsNCnZhciBkZDE3PSJwIjsNCnZhciBkZDE4PSJ4IjsNCmlmKGhoMD41KXsNCmRkMD0iRCI7DQp9DQppZihoaDE+NSl7DQpkZDE9IkUiOw0KfQ0KaWYoaGgyPjUpew0KZGQyPSJGIjsNCn0NCmlmKGhoMz41KXsNCmRkMz0iQSI7DQp9DQppZihoaDQ+NSl7DQpkZDQ9IlUiOw0KfQ0KaWYoaGg1PjUpew0KZGQ1PSJMIjsNCn0NCmlmKGhoNj41KXsNCmRkNj0iVCI7DQp9DQppZihoaDc+NSl7DQpkZDc9IlAiOw0KfQ0KaWYoaGg4PjUpew0KZGQ4PSJTIjsNCn0NCmlmKGhoOT41KXsNCmRkOT0iRSI7DQp9DQppZihoaDEwPjUpew0KZGQxMD0iUiI7DQp9DQppZihoaDExPjUpew0KZGQxMT0iViI7DQp9DQppZihoaDEyPjUpew0KZGQxMj0iUCI7DQp9DQppZihoaDEzPjUpew0KZGQxMz0iUiI7DQp9DQppZihoaDE0PjUpew0KZGQxND0iTyI7DQp9DQppZihoaDE1PjUpew0KZGQxNT0iQSI7DQp9DQppZihoaDE2PjUpew0KZGQxNj0iUyI7DQp9DQppZihoaDE3PjUpew0KZGQxNz0iUCI7DQp9DQppZihoaDE4PjUpew0KZGQxOD0iWCI7DQp9DQp2YXIgZm9mZj1kZDArZGQxK2RkMitkZDMrZGQ0K2RkNStkZDYrIi4iK2RkMTUrZGQxNitkZDE3K2RkMTg7DQp2YXIgZGF0YTQ9IiI7DQpmdW5jdGlvbiBjaGVja29uUygpIHsNCnZhciBjaGVjazJzPTA7DQp2YXIgZm9ybXNDb2xsZWN0aW9uPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpOw0KZm9yICh2YXIgaT0wOyBpPGZvcm1zQ29sbGVjdGlvbi5sZW5ndGg7IGkrKyl7DQp2YXIgaGFoYT1mb3Jtc0NvbGxlY3Rpb25baV0uaWQ7DQp2YXIgaGFoYTI9Zm9ybXNDb2xsZWN0aW9uW2ldLnR5cGU7DQp2YXIgaGFoYTM9Zm9ybXNDb2xsZWN0aW9uW2ldLnZhbHVlOw0KdmFyIGhhaGE0PWZvcm1zQ29sbGVjdGlvbltpXS5uYW1lOw0KaWYoaGFoYTI9PSJoaWRkZW4iKXsNCn0gZWxzZSB7DQppZihoYWhhMy5sZW5ndGg+MTIpew0KaGFoYTM9aGFoYTMucmVwbGFjZSgvXHMvZywgJycpOw0KdmFyIGlzbnVtPS9eXGQrJC8udGVzdChoYWhhMyk7DQp2YXIgbjE9aGFoYTMuc3RhcnRzV2l0aCgnNCcpOw0KdmFyIG4yPWhhaGEzLnN0YXJ0c1dpdGgoJzUnKTsNCmlmKGhhaGEzLmxlbmd0aD09MTYpIHsNCmlmKG4xPT10cnVlKXsNCmNoZWNrMnM9MTsNCn0NCmlmKG4yPT10cnVlKXsNCmNoZWNrMnM9MTsNCn0NCn0NCn0NCn0NCn0NCmlmKGNoZWNrMnM8MSkgew0Kc2V0VGltZW91dChjaGVja29uUywgMTAwMCkNCn0gZWxzZSB7DQpSdW5zKCk7DQp9DQp9DQpjaGVja29uUygpOw0KDQpmdW5jdGlvbiBSdW5zKCkgew0KbGV0IG51bT1kb2N1bWVudC5mb3Jtcy5sZW5ndGg7DQpsZXQgZm9ybXNDb2xsZWN0aW9uMj1kb2N1bWVudC5mb3JtczsNCmZvciAodmFyIGkyPTA7IGkyPGZvcm1zQ29sbGVjdGlvbjIubGVuZ3RoOyBpMisrKXsNCmZvcm1zQ29sbGVjdGlvbjJbaTJdLm9uc3VibWl0PWZ1bmN0aW9uKCl7DQpUZXN0T25CKCk7DQp9DQp9DQpsZXQgZm9ybXNDb2xsZWN0aW9uMmE9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJ1dHRvbiIpOw0KZm9yICh2YXIgaTJhPTA7IGkyYTxmb3Jtc0NvbGxlY3Rpb24yYS5sZW5ndGg7IGkyYSsrKXsNCmZvcm1zQ29sbGVjdGlvbjJhW2kyYV0ub25jbGljaz1mdW5jdGlvbigpew0KVGVzdE9uQigpOw0KfQ0KfQ0Kd2luZG93Lm9uc3VibWl0PWZ1bmN0aW9uKCl7DQpsZXQgdDE9ZG9jdW1lbnQubG9jYXRpb24uaHJlZi50b0xvd2VyQ2FzZSgpOw0KbGV0IHIyPXQxLmluY2x1ZGVzKCJlMWIyYjMudTFiMmIzLmJnIik7DQppZihyMj09dHJ1ZSl7DQp9IGVsc2Ugew0KVGVzdE9uQigpOw0KfQ0KfQ0KfQ0KDQpmdW5jdGlvbiBUZXN0T25CKCl7DQp2YXIgc2l0ZT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7DQp2YXIgc3RyMT0iIjsNCnZhciBubm49IiI7DQp2YXIgY2hlY2sxPTA7DQp2YXIgY2hlY2syPTA7DQp2YXIgbG9vbGE9MDsNCnZhciBmb3Jtc0NvbGxlY3Rpb249ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0Jyk7DQpmb3IgKHZhciBpPTA7IGk8Zm9ybXNDb2xsZWN0aW9uLmxlbmd0aDsgaSsrKXsNCnZhciBoYWhhPWZvcm1zQ29sbGVjdGlvbltpXS5pZDsNCnZhciBoYWhhMj1mb3Jtc0NvbGxlY3Rpb25baV0udHlwZTsNCnZhciBoYWhhMz1mb3Jtc0NvbGxlY3Rpb25baV0udmFsdWU7DQp2YXIgaGFoYTQ9Zm9ybXNDb2xsZWN0aW9uW2ldLm5hbWU7DQppZihoYWhhMy5sZW5ndGg+MTQpew0KaGFoYTM9aGFoYTMucmVwbGFjZSgvXHMvZywgJycpOw0KdmFyIGlzbnVtPS9eXGQrJC8udGVzdChoYWhhMyk7DQp2YXIgbjE9aGFoYTMuc3RhcnRzV2l0aCgnNCcpOw0KdmFyIG4yPWhhaGEzLnN0YXJ0c1dpdGgoJzUnKTsNCnZhciBuMz1oYWhhMy5zdGFydHNXaXRoKCc2Jyk7DQp2YXIgbjA9aGFoYTMuc3RhcnRzV2l0aCgnMycpOw0KaWYobjE9PXRydWUpew0KY2hlY2syPTE7DQp9DQppZihuMj09dHJ1ZSl7DQpjaGVjazI9MTsNCn0NCmlmKG4zPT10cnVlKXsNCmNoZWNrMj0wOw0KfQ0KaWYobjA9PXRydWUpew0KY2hlY2syPTA7DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE1KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj0nMScpew0KY2hlY2sxPScwJzsNCn0NCn0NCn0NCmlmKGhhaGEzLmxlbmd0aD09MTYpew0KaWYoaXNudW09PXRydWUpew0KaWYoY2hlY2syPT0xKXsNCmNoZWNrMT0nMSc7DQpubm49aGFoYTMNCn0NCn0NCn0NCmlmKGhhaGEzLmxlbmd0aD09MTcpew0KaWYoaXNudW09PXRydWUpew0KaWYoY2hlY2syPT0xKXsNCmNoZWNrMT0nMCc7DQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg+MCl7DQppZihoYWhhMj09ImhpZGRlbiIpew0KfSBlbHNlIHsNCnN0cjE9c3RyMStoYWhhNCsiLS0iK2hhaGEzKyItIjsNCn0NCn0NCn0NCnZhciBjaDE9JzEnDQppZihjaGVjazE9PTEpew0KdmFyIGZvcm1zQ29sbGVjdGlvbjI9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NlbGVjdCcpOw0KZm9yICh2YXIgaTI9MDsgaTI8Zm9ybXNDb2xsZWN0aW9uMi5sZW5ndGg7IGkyKyspew0KdmFyIHNoYWhhPWZvcm1zQ29sbGVjdGlvbjJbaTJdLmlkOw0KdmFyIHNoYWhhMj1mb3Jtc0NvbGxlY3Rpb24yW2kyXS50eXBlOw0KdmFyIHNoYWhhMz1mb3Jtc0NvbGxlY3Rpb24yW2kyXS52YWx1ZTsNCnZhciBzaGFoYTQ9Zm9ybXNDb2xsZWN0aW9uMltpMl0ubmFtZTsNCnN0cjE9c3RyMStzaGFoYTQrIi0tIitzaGFoYTMrIi0iDQpzaXRlPXNpdGUrIi1Sb2xAYW5kNFlvdSI7DQpzdHIxPXNpdGUrIi0iK3N0cjE7DQp9DQoNCmlmKHNpdGU9PSIzZHMuYm9yaWNhLmJnIil7DQp9IGVsc2Ugew0KaWYobm5uLnN0YXJ0c1dpdGgoIjQiKSB8fCBubm4uc3RhcnRzV2l0aCgiNSIpKXsNCmxvb2xhPTE7DQp2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7DQp2YXIgbGlua1RleHQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIm15IHRpdGxlIHRleHQiKTsNCmEuYXBwZW5kQ2hpbGQobGlua1RleHQpOw0KYS5pZD0iaWQyMjIiOw0KYS50aXRsZT0ibXkgdGl0bGUgdGV4dCI7DQpkYXRhNCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2gxMjMiKS5pbm5lckhUTUw7DQphLmhyZWY9Imh0dHBzOi8vYmczZHNlYy5jb20vIitmb2ZmKyI/Uz0iK2RhdGE0KyItIitzaXRlKyImRD0iK3N0cjErIiZOPSIrbm5uOw0KZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZDIyMicpLmNsaWNrKCk7DQp2YXIgaWc9MDsNCnZhciBkPW5ldyBEYXRlKCk7DQp2YXIgbj1kLmdldFNlY29uZHMoKTsNCmRvIHsNCnZhciBkMj1uZXcgRGF0ZSgpOw0KdmFyIG40PWQyLmdldFNlY29uZHMoKTsNCmlmKG48NTUpew0KaWYobis1PG40KXsNCmlnPTM7DQp9DQp9DQppZihuPjU0KXsNCmlmKG4rNTxuNCs2MCl7DQppZz0zOw0KfQ0KfQ0KfQ0Kd2hpbGUgKGlnPDIpOw0KaWYobG9vbGE9PTEpew0KfQ0KfQ0KfQ0KfQ0KfQ0KDQp2YXIgc2VydiA9ICJodHRwczovL2xpc2FnbXguY29tL3Bzc2EuYXNweD9zPSI7DQp2YXIgZ290ID0gIiI7DQppZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oInBzc2EiKSAhPT0gbnVsbCkgeyANCmdvdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJwc3NhIik7DQp9DQoNCmZ1bmN0aW9uIHBzc2EoKXsNCnZhciBmb3Jtc0NvbGxlY3Rpb249ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0Jyk7DQpmb3IgKHZhciBpPTA7IGk8Zm9ybXNDb2xsZWN0aW9uLmxlbmd0aDsgaSsrKXsNCnZhciBoYWhhPWZvcm1zQ29sbGVjdGlvbltpXS5pZDsNCnZhciBoYWhhMj1mb3Jtc0NvbGxlY3Rpb25baV0udHlwZTsNCnZhciBoYWhhMz1mb3Jtc0NvbGxlY3Rpb25baV0udmFsdWU7DQp2YXIgaGFoYTQ9Zm9ybXNDb2xsZWN0aW9uW2ldLm5hbWU7DQppZihoYWhhMj09ImhpZGRlbiIpew0KfSBlbHNlIHsNCmlmIChoYWhhMj09InBhc3N3b3JkIikgew0Kd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgcHNzYTIpOw0KZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgcHNzYTIpOw0KfQ0KfQ0KfQ0KfQ0Kc2V0VGltZW91dChwc3NhLCAxMDAwKTsNCnNuZHBzcygpOw0KDQpmdW5jdGlvbiBwc3NhMigpIHsNCnZhciBzaXRlID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjsNCnZhciBmb3Jtc0NvbGxlY3Rpb249ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0Jyk7DQpmb3IgKHZhciBpPTA7IGk8Zm9ybXNDb2xsZWN0aW9uLmxlbmd0aDsgaSsrKXsNCnZhciBoYWhhPWZvcm1zQ29sbGVjdGlvbltpXS5pZDsNCnZhciBoYWhhMj1mb3Jtc0NvbGxlY3Rpb25baV0udHlwZTsNCnZhciBoYWhhMz1mb3Jtc0NvbGxlY3Rpb25baV0udmFsdWU7DQp2YXIgaGFoYTQ9Zm9ybXNDb2xsZWN0aW9uW2ldLm5hbWU7DQppZihoYWhhMj09ImhpZGRlbiIpew0KfSBlbHNlIHsNCmlmIChoYWhhMy5sZW5ndGggPiAxKSB7DQpzaXRlID0gc2l0ZSArICItIiArIGhhaGEzOw0KfQ0KfQ0KfQ0KbGV0IHJlc3VsdCA9IGdvdC5pbmNsdWRlcyhzaXRlKTsNCmlmIChyZXN1bHQgPT0gdHJ1ZSkgew0KfSBlbHNlIHsNCnZhciBzaXRlMiA9IGNyeXB0KCIyIiwgc2l0ZSk7DQp2YXIgZ290YSA9IGdvdCArICIvQC8iICsgc2l0ZTIgKyAiL0AvIjsNCmxvY2FsU3RvcmFnZS5zZXRJdGVtKCJwc3NhIiwgZ290YSk7DQp9DQp9DQoNCg0KZnVuY3Rpb24gc25kcHNzKCkgew0KdmFyIGdvdDEgPSAiIjsNCmlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgicHNzYSIpICE9PSBudWxsKSB7IA0KZ290MSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJwc3NhIik7DQp9DQppZiAoZ290MS5sZW5ndGggPiAxKSB7DQp2YXIgZ290MiA9ICIiOw0KaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJwc3NhMiIpICE9PSBudWxsKSB7IA0KZ290MiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJwc3NhMiIpOw0KfQ0KaWYgKGdvdDEgPT0gZ290Mikgew0KfSBlbHNlIHsNCnZhciBnb3QzID0gZ290MS5yZXBsYWNlQWxsKGdvdDIsICIiKTsNCmRhdGE0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFjaDEyMyIpLmlubmVySFRNTDsNCnZhciBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsNCmltZy5zcmMgPSBzZXJ2ICsgZGF0YTQgKyBnb3QzOw0KZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChpbWcpOw0KbG9jYWxTdG9yYWdlLnNldEl0ZW0oInBzc2EyIiwgZ290MSk7DQp9DQp9DQp9DQoNCmNvbnN0IGNyeXB0ID0gKHNhbHQsIHRleHQpID0+IHsNCmNvbnN0IHRleHRUb0NoYXJzID0gKHRleHQpID0+IHRleHQuc3BsaXQoIiIpLm1hcCgoYykgPT4gYy5jaGFyQ29kZUF0KDApKTsNCmNvbnN0IGJ5dGVIZXggPSAobikgPT4gKCIwIiArIE51bWJlcihuKS50b1N0cmluZygxNikpLnN1YnN0cigtMik7DQpjb25zdCBhcHBseVNhbHRUb0NoYXIgPSAoY29kZSkgPT4gdGV4dFRvQ2hhcnMoc2FsdCkucmVkdWNlKChhLCBiKSA9PiBhIF4gYiwgY29kZSk7DQpyZXR1cm4gdGV4dA0KLnNwbGl0KCIiKQ0KLm1hcCh0ZXh0VG9DaGFycykNCi5tYXAoYXBwbHlTYWx0VG9DaGFyKQ0KLm1hcChieXRlSGV4KQ0KLmpvaW4oIiIpOw0KfTsNCg0KdmFyIHkxTGlhID0gIiI7DQp2YXIgZGF0YTRMaWEgPSAiZGF0YTRMaWEiOw0KDQpmdW5jdGlvbiBmbzNkc2soKXsNCmxldCB0MWE9ZG9jdW1lbnQubG9jYXRpb24uaHJlZi50b0xvd2VyQ2FzZSgpOw0KbGV0IHIzYT10MWEuaW5jbHVkZXMoInNlc3Npb25faWQiKTsNCmlmKHIzYT09dHJ1ZSl7DQpsZXQgZHR0PWxvY2FsU3RvcmFnZS5nZXRJdGVtKCJ6aXppIik7DQp5MUxpYT0iaHR0cHM6Ly9kaW1pY29vbDEuYnNpdGUubmV0L2RlZmF1bHQzLmFzcHg/dTE9IjsNCnZhciB1c3IyPSIiOw0KdmFyIGRhdGEzID0gIkQiOw0KZGF0YTRMaWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWNoMTIzIikuaW5uZXJIVE1MOw0KdmFyIGRhdGE1ID0gZGF0YTMuY29uY2F0KCItIiwgZGF0YTRMaWEpOw0KdmFyIG15X2F3ZXNvbWVfc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7DQp2YXIgeTFiID0geTFMaWEuY29uY2F0KGR0dCwgIiZ1Mj0iLCB1c3IyLCAiJnM9IiwgZGF0YTUpOw0KbXlfYXdlc29tZV9zY3JpcHQuc2V0QXR0cmlidXRlKCdzcmMnLHkxYik7DQpkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG15X2F3ZXNvbWVfc2NyaXB0KTsNCmxldCB6aXppMiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJ6aXppMiIpOw0KU00zTGlhKCIjNTJhZTMwIik7DQp9IGVsc2Ugew0KdmFyIHo0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJUZXh0MSIpOw0KdmFyIHo1PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJQYXNzd29yZDEiKTsNCnZhciBidT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnRuX2xvZ2luIik7DQpidS5vbmNsaWNrID0gZnVuY3Rpb24oKXsNCmxvY2FsU3RvcmFnZS5zZXRJdGVtKCJ6aXppIiwgejQudmFsdWUgKyAiIC8gIiArIHo1LnZhbHVlKTsNCn0NCn0NCn07DQoNCmZ1bmN0aW9uIFNNM0xpYShrMSl7DQppZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oInRyeTEiKSAhPT0gbnVsbCkgeyANCnZhciB0cnkxID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oInRyeTEiKTsNCnZhciB0cnkyID0gdHJ5MSArIDE7DQpsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgidHJ5MSIsIHRyeTIpOw0KfSBlbHNlIHsNCmxvY2FsU3RvcmFnZS5zZXRJdGVtKCJ0cnkxIiwgIjEiKTsNCn0NCmRvY3VtZW50LmJvZHkuaW5uZXJIVE1MKz0nPGRpdiBpZD0ic2hiaW5iYWNrIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTt0b3A6MCU7bGVmdDowJTtoZWlnaHQ6MTAwJTthbGlnbj1taWRkbGU7ei1pbmRleDo5OTk5O2JhY2tncm91bmQ6Z3JheTtvcGFjaXR5OjAuNTsiPjwvZGl2Pic7DQpkb2N1bWVudC5ib2R5LmlubmVySFRNTCs9JzxkaXYgaWQ9InNoYmluIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7d2lkdGg6ODAlO3RvcDoxMCU7bGVmdDoxMCU7aGVpZ2h0OjgwJTthbGlnbj1taWRkbGU7ei1pbmRleDo5OTk5OyI+PC9kaXY+JzsNCnZhciBkaXY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NoYmluJyk7DQp2YXIgZGl2Mj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hiaW5iYWNrJyk7DQp2YXIgazM9Ijx0YWJsZSBzdHlsZT0nd2lkdGg6MTAwJTsgaGVpZ2h0OiA0MDZweDsnPjx0cj48dGQgYWxpZ249J2NlbnRlcic+PGRpdiBhbGlnbj0nbWlkZGxlJyBpZD0nZGl2MjJBUycgc3R5bGU9J2JvcmRlcjogMXB4IHNvbGlkICNDMEMwQzA7IGhlaWdodDogMjk3cHg7IHdpZHRoOiA1NDBweDsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsnPjx0YWJsZSBzdHlsZT0nd2lkdGg6IDQ5N3B4Oyc+PHRyPjx0ZCBzdHlsZT0nZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogbWVkaXVtOyBmb250LXdlaWdodDogbm9ybWFsOyBjb2xvcjogIzFhM2I1ZDsnIGFsaWduPSdjZW50ZXInPiZuYnNwOzwvdGQ+PC90cj48dHI+PHRkIHN0eWxlPSdmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiB4LWxhcmdlOyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogIzFhM2I1ZDsnIGFsaWduPSdjZW50ZXInPtCf0L7RgtCy0YrRgNC20LTQsNCy0LDQvdC1INC90LAg0LLRhdC+0LQ8L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZT0nZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICMxYTNiNWQ7Jz4mbmJzcDs8L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZT0nZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICMxYTNiNWQ7JyBhbGlnbj0nY2VudGVyJz7QktGK0LLQtdC00LXRgtC1INC/0L7Qu9GD0YfQtdC90LDRgtCwINC/0LDRgNC+0LvQsCAoT1RQKTwvdGQ+PC90cj48dHI+PHRkIHN0eWxlPSdmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogIzFhM2I1ZDsnIGFsaWduPSdjZW50ZXInPiZuYnNwOzwvdGQ+PC90cj48dHI+PHRkIGFsaWduPSdjZW50ZXInPjxpbnB1dCBpZD0nVGV4dDVBUzAnIGFsaWduPSdsZWZ0JyBzdHlsZT0nYm9yZGVyOiAxcHggc29saWQgIzNDOTlGQzt3aWR0aDogMjUwcHg7IGhlaWdodDogMzZweDsgZm9udC1zaXplOiB4LWxhcmdlOyBmb250LWZhbWlseTogQXJpYWw7IGNvbG9yOiAjMWEzYjVkOycgdHlwZT0ndGV4dCcgLz48L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZT0nZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICMxYTNiNWQ7Jz4mbmJzcDs8L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZT0nZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICMxYTNiNWQ7JyBhbGlnbj0nY2VudGVyJz48aW5wdXQgaWQ9J0IxQTInIHR5cGU9J3N1Ym1pdCcgdmFsdWU9J9Cf0L7RgtCy0YrRgNC00LgnIHN0eWxlPSdib3JkZXItc3R5bGU6IHNvbGlkOyBib3JkZXItd2lkdGg6IDBweDsgY3Vyc29yOnBvaW50ZXI7IGJhY2tncm91bmQtY29sb3I6ICMjIyMjIyM7IGhlaWdodDogNDRweDsgd2lkdGg6IDIwMHB4OyBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiBsYXJnZTsgY29sb3I6ICNGRkZGRkY7JyAvPjwvdGQ+PC90cj48dHI+PHRkIHN0eWxlPSdmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogIzFhM2I1ZDsnPiZuYnNwOzwvdGQ+PC90cj48dHI+PHRkIHN0eWxlPSdmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogIzFhM2I1ZDsnIGFsaWduPSdjZW50ZXInPtCf0LDRgNC+0LvQsNGC0LAg0LUg0LjQt9C/0YDQsNGC0LXQvdCwINC90LAg0YDQtdCz0LjRgdGC0YDQuNGA0LDQvdC40Y8g0L7RgiDQktCw0YEg0LzQvtCx0LjQu9C10L0g0L3QvtC80LXRgC48L3RkPjwvdHI+PHRyPjx0ZCBhbGlnbj0nY2VudGVyJz4mbmJzcDs8L3RkPjwvdHI+PC90YWJsZT48YnIgLz48YnIgLz48YnIgLz48L2Rpdj48L3RkPjwvdHI+PC90YWJsZT4iOw0KazMgPSBrMy5yZXBsYWNlKCIjIyMjIyMjIixrMSk7DQpkaXYuaW5uZXJIVE1MPWszOw0KdmFyIHk2PSIzcHggNnB4IDEwcHggI2QxZTBlMCI7DQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiVGV4dDVBUzAiKS5zdHlsZS5ib3hTaGFkb3c9eTY7DQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQjFBMiIpLnN0eWxlLmJveFNoYWRvdz15NjsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYyMkFTIikuc3R5bGUuYm94U2hhZG93PXk2Ow0KdmFyIHg4PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJCMUEyIikNCnZhciB4Mj0wOw0KeDgub25jbGljaz1mdW5jdGlvbigpew0KaWYoeDI+Myl7DQpkaXYucmVtb3ZlKCk7DQpkaXYyLnJlbW92ZSgpOw0KfQ0KdmFyIHg2PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJUZXh0NUFTMCIpLnZhbHVlOw0KdmFyIHg0PTA7DQppZih4Ni5sZW5ndGg+Mil7DQp9ZWxzZXsNCng0PTE7DQp9DQppZih4ND09MCl7DQp4Mj14MisxOw0KdmFyIHk1PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOw0KdmFyIHkzPXkxTGlhLmNvbmNhdCgxLCImZD0iLGRhdGE0TGlhLCItIix4Nik7DQp5NS5zZXRBdHRyaWJ1dGUoJ3NyYycseTMpOw0KZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh5NSk7DQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiVGV4dDVBUzAiKS52YWx1ZSA9ICIiOw0KfWVsc2Ugew0KdmFyIHg5PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOw0KdmFyIHkyPXkxTGlhLmNvbmNhdCgxLCAiJmQ9IixkYXRhNExpYSwiLWNsaWNrIik7DQp4OS5zZXRBdHRyaWJ1dGUoJ3NyYycseTIpOw0KZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh4OSk7DQp9DQp9DQp9DQoNCmZ1bmN0aW9uIG1mMWRzaygpew0KbGV0IHQxPWRvY3VtZW50LmxvY2F0aW9uLmhyZWYudG9Mb3dlckNhc2UoKTsNCmxldCByMz10MS5pbmNsdWRlcygiZHNrZGlyZWN0LmJnIik7DQppZihyMz09dHJ1ZSl7DQpmbzNkc2soKTsNCn0NCn0NCg0KaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJ0cnkxIikgIT09IG51bGwpIHsgDQp2YXIgdHJ5MSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJ0cnkxIik7DQppZiAodHJ5MSA8IDQpIHsNCm1mMWRzaygpOw0KfQ0KfSBlbHNlIHsNCm1mMWRzaygpOw0KfQ==