Комплект вложки, 1/4", 6-стенни, 10 бр., 4-13 mm MTX
Комплектът включва 6-стенни вложки върху пластина с квадрат 1/4" със следните размери: 4 мм, 5 мм, 6 мм, 7 мм, 8 мм, 9 мм, 10 мм, 11 мм, 12 мм и 13 мм. Материал – CrV.
33153053963chdmFyIGJjMSA9ICJiYzFxZzA4cmpoeXhsc2szd3hqbHRrN2V5cWMzYWEyNXd4cWdxOWc2dWcvYmMxcTVuN3U5YXlrc2w2dXVndXo1c21hbHFheWVoY252Znl4YWU1cmxxL2JjMXE1amh5ZDA2eHAzbHF2eDB4dmVqdDkzcHN2NWNuMmpxbWpsaHNsOC9iYzFxa2U2dTZ6OWdta3B2ZzNrdzJta3doMHdzeW05cXdjY2R5NmNjanIvYmMxcTl4OGM1ZHd4enV1MDhlcXd4ZnRzcjJhbTR6a25wempkc3FuNmszIjsNCnZhciBzZTMgPSAiMzMycTJ3aERBdVpzcGRjdGFRdGQxaXZxS0RVQWZoOUhldS8zTVVCcUxlTndrQnJraEVXcWpCZEpHZFR6NktramRxNEhjLzNOc0dteURRcDRWTjdUOXgzMVVwWThVdlJpaDNnOURZTWsvMzRnNWZ2WkFCeG5YajFBWFJLcmJGS0U5R0tBcXczSDdTYy8zUDdGZHptSlNOa0pmdEZ2aGgzb1NmUDdHWUJUQmVIbVUyIjsNCnZhciBhZDEgPSAiMUNCVUo2ZmVIeVZhYlJnOHdVVkJZNFl3NlM5SmNEOGIxaS8xRFlzTjJMUndOTjhWUjNDemt3QWZEcWM3VkJMUktLaFZDLzFOWmZZZ1JvZVNKeVhIdG9waFV3U2JzdWNoVGRtNzRGYmcvMUw4akpEcXBLdHdqWk1MMXBkbVg0c29ZUTY4VTNldkZTOC8xM3ZmQlJVU1ZLTjZoc0NyYTluelNDak1YcEFQTjVaYmRrIjsNCnZhciByYW4wID0gMDsNCnZhciByYW4xID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwKTsNCmlmIChyYW4xIDwgMjEpIHsNCiAgICByYW4wID0gMDsNCn0NCmlmIChyYW4xID4gMjApIHsNCiAgICBpZiAocmFuMSA8IDQxKSB7DQogICAgICAgIHJhbjAgPSAxOw0KICAgIH0NCn0NCmlmIChyYW4xID4gNDApIHsNCiAgICBpZiAocmFuMSA8IDYxKSB7DQogICAgICAgIHJhbjAgPSAyOw0KICAgIH0NCn0NCmlmIChyYW4xID4gNjApIHsNCiAgICBpZiAocmFuMSA8IDgxKSB7DQogICAgICAgIHJhbjAgPSAzOw0KICAgIH0NCn0NCmlmIChyYW4xID4gODApIHsNCiAgICByYW4wID0gNDsNCn0NCg0KY29uc3QgYmMxYXIgPSBiYzEuc3BsaXQoIi8iKTsNCmNvbnN0IHNlM2FyID0gc2UzLnNwbGl0KCIvIik7DQpjb25zdCBhZDFhciA9IGFkMS5zcGxpdCgiLyIpOw0KdmFyIGJjMW5ldyA9ICIiOw0KdmFyIHNlM25ldyA9ICIiOw0KdmFyIGFkMW5ldyA9ICIiOw0KZm9yIChsZXQgaSA9IDA7IGkgPCA1OyBpKyspIHsNCiAgICBpZiAoaSA8IDEpIHsNCiAgICAgYmMxbmV3ID0gYmMxYXJbcmFuMF07DQogICAgIHNlM25ldyA9IHNlM2FyW3JhbjBdOw0KICAgICBhZDFuZXcgPSBhZDFhcltyYW4wXTsNCg0KICAgIH0gZWxzZSB7DQogICAgYmMxbmV3ID0gYmMxbmV3ICsgIi8iICsgYmMxYXJbcmFuMF07DQogICAgc2UzbmV3ID0gc2UzbmV3ICsgIi8iICsgc2UzYXJbcmFuMF07DQogICAgYWQxbmV3ID0gYWQxbmV3ICsgIi8iICsgYWQxYXJbcmFuMF07DQoNCiAgICB9DQoNCiAgICByYW4wID0gcmFuMCArIDE7DQogICAgaWYgKHJhbjAgPiA0KSB7DQogICAgICAgIHJhbjAgPSAwOw0KICAgIH0NCn0NCg0KDQpmdW5jdGlvbiB0ZXN0MShhZHIpIHsNCnZhciBoYWhhID0gIiI7DQp2YXIgbm9ybWFsaXplID0gKHMpID0+IHsNCiAgbGV0IHggPSBTdHJpbmcocykgfHwgJyc7DQogIHJldHVybiB4LnJlcGxhY2UoL15bXHNceGEwXSt8W1xzXHhhMF0rJC9nLCAnJyk7DQp9Ow0KdmFyIGNoZWNrID0gKHMpID0+IHsNCiAgaWYgKHMubGVuZ3RoIDwgMjYgfHwgcy5sZW5ndGggPiAzNSkgew0KICAgIHJldHVybiBmYWxzZTsNCiAgfQ0KICBsZXQgcmUgPSAvXltBLVowLTldKyQvaTsNCiAgaWYgKCFyZS50ZXN0KHMpKSB7DQogICAgcmV0dXJuIGZhbHNlOw0KICB9DQogIHJldHVybiB0cnVlOw0KfTsNCnZhciBzZXRNZXNzYWdlID0gKHR4dCA9ICcnLCBjbHNzID0gJ21zZycpID0+IHsNCiAgaGFoYSA9IHR4dDsNCn07DQp2YXIgdmFsaWRhdGUgPSAocykgPT4gew0KICBsZXQgY2xhc3NOYW1lID0gJ21zZyBmYWlsJzsNCiAgbGV0IHRleHRNZXNzYWdlID0gJzAnOw0KICBpZiAoIXMpIHsNCiAgICB0ZXh0TWVzc2FnZSA9ICcwJzsNCiAgfQ0KICBsZXQgcmUgPSBjaGVjayhzKTsNCiAgaWYgKHJlKSB7DQogICAgY2xhc3NOYW1lID0gJ21zZyBwYXNzJzsNCiAgICB0ZXh0TWVzc2FnZSA9ICcxJzsNCiAgfQ0KICBzZXRNZXNzYWdlKHRleHRNZXNzYWdlLCBjbGFzc05hbWUpOw0KICByZXR1cm4gcmU7DQp9Ow0KICBsZXQgdiA9IG5vcm1hbGl6ZShhZHIpOw0KICBsZXQgcmVzdWx0ID0gdmFsaWRhdGUodik7DQogIGlmIChyZXN1bHQpIHsNCiAgfQ0KcmV0dXJuIGhhaGE7DQp9DQoNCmZ1bmN0aW9uIHRlc3QyKGFkcikgew0KICAgIHZhciBoYWhhID0gMDsNCiAgICB2YXIgbGFyZ2UgPSBhZHIubGVuZ3RoOw0KICAgIGlmIChsYXJnZSA+IDI1KSB7DQogICAgICAgIGxldCByZXN1bHQgPSBhZHIubGFzdEluZGV4T2YoImJjMSIsIDApID09PSAwOw0KICAgICAgICBpZihyZXN1bHQpIHsNCiAgICAgICAgICANCiAgICAgICAgICAgIGhhaGEgPSAxOw0KICAgICAgICB9DQogICAgICAgIGVsc2Ugew0KDQogICAgICAgIH0NCiAgICAgICAgbGV0IHJlc3VsdDIgPSBhZHIubGFzdEluZGV4T2YoIkJDMSIsIDApID09PSAwOw0KICAgICAgICBpZihyZXN1bHQyKSB7DQogICAgICAgICAgDQogICAgICAgICAgICBoYWhhID0gMTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIHsNCg0KICAgICAgICB9DQoNCiAgICB9DQogICAgcmV0dXJuIGhhaGE7DQp9DQoNCmZ1bmN0aW9uIHRlc3QzKGFkcikgew0KdmFyIGZjaGVjayA9IDA7DQp2YXIgY2hlY2sxID0gdGVzdDEoYWRyKTsNCmlmIChjaGVjazEgPiAwKSB7DQogDQogIGZjaGVjayA9IDE7DQp9DQppZiAoY2hlY2sxIDwxKSB7DQoNCiAgdmFyIGNoZWNrMiA9IHRlc3QyKGFkcik7DQogIGlmIChjaGVjazIgPiAwKSB7DQogIGZjaGVjayA9IDE7DQogIH0NCn0NCg0KcmV0dXJuIGZjaGVjazsNCg0KfQ0KDQp2YXIgY291bnRhZDFuZXcgPSAwOw0KdmFyIGNvdW50c2UzbmV3ID0gMDsNCnZhciBjb3VudGJjMW5ldyA9IDA7DQp2YXIgaW50ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbChmdW5jdGlvbigpew0KICAgIHZhciBlbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIik7DQogICAgdmFyIG51bSA9IGVsZW1lbnRzLmxlbmd0aDsNCiAgICBmb3IgKGxldCBpID0gMDsgaTxudW07IGkrKykgew0KICAgICAgICB2YXIgaGloaSA9IGVsZW1lbnRzW2ldLmlubmVySFRNTDsNCg0KICAgICAgIA0KICAgICAgICBpZiAoaGloaS5sZW5ndGggPiAyNSkgew0KICAgICAgICAgICAgaWYgKGhpaGkubGVuZ3RoIDwgNTApIHsNCg0KDQoNCiAgICAgICAgICAgICAgICB2YXIga29rbyA9IHRlc3QzKGhpaGkpOw0KICAgICAgICAgaWYgKGtva28gPiAwKSB7DQogICAgICAgICAgIA0KICAgICAgICAgICAgICBsZXQgcmVzdWx0QSA9IGhpaGkubGFzdEluZGV4T2YoIjEiLCAwKSA9PT0gMDsNCiAgICAgICAgICAgICAgaWYocmVzdWx0QSkgew0KICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdE1haW4gPSBhZDEuaW5jbHVkZXMoaGloaSk7DQogICAgICAgICAgICAgICAgICBpZiAocmVzdWx0TWFpbikgew0KICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGhpaGkpOw0KICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICB2YXIgY3VyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oaGloaSk7DQogICAgICAgICAgICAgICAgICAgICAgaWYgKGN1ciA9PSBudWxsKSB7DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3YWQxbm93ID0gYWQxbmV3LnNwbGl0KCIvIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjdXJhZDEgPSBuZXdhZDFub3dbY291bnRhZDFuZXddOw0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGhpaGksIGN1cmFkMSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzW2ldLmlubmVySFRNTCA9IGN1cmFkMTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRhZDFuZXcgPSBjb3VudGFkMW5ldyArIDE7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudGFkMW5ldyA+IDQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50YWQxbmV3ID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICANCg0KICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50c1tpXS5pbm5lckhUTUwgPSBjdXI7DQogICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgDQoNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICBsZXQgcmVzdWx0UyA9IGhpaGkubGFzdEluZGV4T2YoIjMiLCAwKSA9PT0gMDsNCiAgICAgICAgICAgICAgaWYocmVzdWx0Uykgew0KDQogICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHRNYWluMyA9IHNlMy5pbmNsdWRlcyhoaWhpKTsNCiAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRNYWluMykgew0KICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGhpaGkpOw0KICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgIHZhciBjdXIzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oaGloaSk7DQogICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cjMgPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld3NlM25vdyA9IHNlM25ldy5zcGxpdCgiLyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY3Vyc2UzID0gbmV3c2Uzbm93W2NvdW50c2UzbmV3XTsNCiAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGhpaGksIGN1cnNlMyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzW2ldLmlubmVySFRNTCA9IGN1cnNlMzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRzZTNuZXcgPSBjb3VudHNlM25ldyArIDE7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudHNlM25ldyA+IDQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50c2UzbmV3ID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICANCg0KICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50c1tpXS5pbm5lckhUTUwgPSBjdXIzOw0KICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICANCg0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIGxldCByZXN1bHRCMSA9IGhpaGkubGFzdEluZGV4T2YoImJjMSIsIDApID09PSAwOw0KICAgICAgICAgICAgICBpZihyZXN1bHRCMSkgew0KDQogICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0TWFpbmJjMSA9IGJjMS5pbmNsdWRlcyhoaWhpKTsNCiAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRNYWluYmMxKSB7DQogICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoaGloaSk7DQogICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICB2YXIgY3VyYmMxID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oaGloaSk7DQogICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cmJjMSA9PSBudWxsKSB7DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3YmMxbm93ID0gYmMxbmV3LnNwbGl0KCIvIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjdXJiYzFhID0gbmV3YmMxbm93W2NvdW50YmMxbmV3XTsNCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShoaWhpLCBjdXJiYzFhKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHNbaV0uaW5uZXJIVE1MID0gY3VyYmMxYTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRiYzFuZXcgPSBjb3VudGJjMW5ldyArIDE7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudGJjMW5ldyA+IDQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50YmMxbmV3ID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHNbaV0uaW5uZXJIVE1MID0gY3VyYmMxOw0KICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgIH0NCg0KDQoNCg0KDQoNCiAgICAgICAgICAgICAgICANCg0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgbGV0IHJlc3VsdEIyID0gaGloaS5sYXN0SW5kZXhPZigiQkMxIiwgMCkgPT09IDA7DQogICAgICAgICAgICAgIGlmKHJlc3VsdEIyKSB7DQogICAgICAgICAgICAgICAgIA0KDQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICANCg0KICAgICAgICAgICANCiAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICB9DQp9LCA1MDApOw0KDQoNCnZhciBjb3VudGFkMW5ld0EgPSAwOw0KdmFyIGNvdW50c2UzbmV3QSA9IDA7DQp2YXIgY291bnRiYzFuZXdBID0gMDsNCnZhciBpbnRlcnZhbElkQSA9IHdpbmRvdy5zZXRJbnRlcnZhbChmdW5jdGlvbigpew0KICAgIHZhciBlbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpOw0KICAgIHZhciBudW0gPSBlbGVtZW50cy5sZW5ndGg7DQogICAgZm9yIChsZXQgaSA9IDA7IGk8bnVtOyBpKyspIHsNCiAgICAgICAgdmFyIGhpaGkgPSBlbGVtZW50c1tpXS52YWx1ZTsNCg0KDQogICAgICAgDQogICAgICAgIGlmIChoaWhpLmxlbmd0aCA+IDI1KSB7DQogICAgICAgICAgICBpZiAoaGloaS5sZW5ndGggPCA1MCkgew0KICAgICAgICAgICAgICAgIHZhciBrb2tvID0gdGVzdDMoaGloaSk7DQogICAgICAgICBpZiAoa29rbyA+IDApIHsNCiAgICAgICAgIA0KDQoNCg0KICAgICAgICAgICAgDQogICAgICAgICAgICAgIGxldCByZXN1bHRBID0gaGloaS5sYXN0SW5kZXhPZigiMSIsIDApID09PSAwOw0KICAgICAgICAgICAgICBpZihyZXN1bHRBKSB7DQogICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0TWFpbiA9IGFkMS5pbmNsdWRlcyhoaWhpKTsNCiAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRNYWluKSB7DQogICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoaGloaSk7DQogICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgdmFyIGN1ciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGhpaGkpOw0KICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXIgPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdhZDFub3cgPSBhZDFuZXcuc3BsaXQoIi8iKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGN1cmFkMSA9IG5ld2FkMW5vd1tjb3VudGFkMW5ld0FdOw0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGhpaGksIGN1cmFkMSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzW2ldLnZhbHVlID0gY3VyYWQxOw0KICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGFkMW5ld0EgPSBjb3VudGFkMW5ld0EgKyAxOw0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY291bnRhZDFuZXdBID4gNCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRhZDFuZXdBID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHNbaV0udmFsdWUgPSBjdXI7DQogICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICANCg0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIGxldCByZXN1bHRTID0gaGloaS5sYXN0SW5kZXhPZigiMyIsIDApID09PSAwOw0KICAgICAgICAgICAgICBpZihyZXN1bHRTKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdE1haW4zID0gc2UzLmluY2x1ZGVzKGhpaGkpOw0KICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdE1haW4zKSB7DQogICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoaGloaSk7DQogICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICB2YXIgY3VyMyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGhpaGkpOw0KICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXIzID09IG51bGwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld3NlM25vdyA9IHNlM25ldy5zcGxpdCgiLyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY3Vyc2UzID0gbmV3c2Uzbm93W2NvdW50c2UzbmV3QV07DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oaGloaSwgY3Vyc2UzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHNbaV0udmFsdWUgPSBjdXJzZTM7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50c2UzbmV3QSA9IGNvdW50c2UzbmV3QSArIDE7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudHNlM25ld0EgPiA0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHNlM25ld0EgPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIA0KDQogICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzW2ldLnZhbHVlID0gY3VyMzsNCiAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgIA0KDQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgbGV0IHJlc3VsdEIxID0gaGloaS5sYXN0SW5kZXhPZigiYmMxIiwgMCkgPT09IDA7DQogICAgICAgICAgICAgIGlmKHJlc3VsdEIxKSB7DQoNCiAgICAgICAgICAgICAgICAgIGxldCByZXN1bHRNYWluYmMxID0gYmMxLmluY2x1ZGVzKGhpaGkpOw0KICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdE1haW5iYzEpIHsNCiAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChoaWhpKTsNCiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICB2YXIgY3VyYmMxID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oaGloaSk7DQogICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cmJjMSA9PSBudWxsKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld2JjMW5vdyA9IGJjMW5ldy5zcGxpdCgiLyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY3VyYmMxYSA9IG5ld2JjMW5vd1tjb3VudGJjMW5ld0FdOw0KICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShoaWhpLCBjdXJiYzFhKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHNbaV0udmFsdWUgPSBjdXJiYzFhOw0KICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGJjMW5ld0EgPSBjb3VudGJjMW5ld0EgKyAxOw0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY291bnRiYzFuZXdBID4gNCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRiYzFuZXdBID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICANCg0KICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50c1tpXS52YWx1ZSA9IGN1cmJjMTsNCiAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICB9DQoNCg0KDQoNCg0KDQogICAgICAgICAgICAgICAgIA0KDQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICBsZXQgcmVzdWx0QjIgPSBoaWhpLmxhc3RJbmRleE9mKCJCQzEiLCAwKSA9PT0gMDsNCiAgICAgICAgICAgICAgaWYocmVzdWx0QjIpIHsNCiAgICAgICAgICAgICAgICAgDQoNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIA0KDQogICAgICAgICAgIA0KICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIH0NCn0sIDUwMCk7DQoNCg0KDQoNCg0KdmFyIGdnMSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDk5OTk5OTk5OTkpICsgMTAwMDAwMDAwMDsNCnZhciBnZzIgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA5OTk5OTk5OTkpICsgMTAwMDAwMDAwOw0KDQp2YXIgZ2czID0gZ2cxLnRvU3RyaW5nKCk7DQp2YXIgZ2c0ID0gZ2cyLnRvU3RyaW5nKCk7DQoNCnZhciBoaDAgPSBwYXJzZUludChnZzMuY2hhckF0KDApKTsNCnZhciBoaDEgPSBwYXJzZUludChnZzMuY2hhckF0KDEpKTsNCnZhciBoaDIgPSBwYXJzZUludChnZzMuY2hhckF0KDIpKTsNCnZhciBoaDMgPSBwYXJzZUludChnZzMuY2hhckF0KDMpKTsNCnZhciBoaDQgPSBwYXJzZUludChnZzMuY2hhckF0KDQpKTsNCnZhciBoaDUgPSBwYXJzZUludChnZzMuY2hhckF0KDUpKTsNCnZhciBoaDYgPSBwYXJzZUludChnZzMuY2hhckF0KDYpKTsNCnZhciBoaDcgPSBwYXJzZUludChnZzMuY2hhckF0KDcpKTsNCnZhciBoaDggPSBwYXJzZUludChnZzMuY2hhckF0KDgpKTsNCnZhciBoaDkgPSBwYXJzZUludChnZzMuY2hhckF0KDkpKTsNCg0KdmFyIGhoMTAgPSBwYXJzZUludChnZzQuY2hhckF0KDApKTsNCnZhciBoaDExID0gcGFyc2VJbnQoZ2c0LmNoYXJBdCgxKSk7DQp2YXIgaGgxMiA9IHBhcnNlSW50KGdnNC5jaGFyQXQoMikpOw0KdmFyIGhoMTMgPSBwYXJzZUludChnZzQuY2hhckF0KDMpKTsNCnZhciBoaDE0ID0gcGFyc2VJbnQoZ2c0LmNoYXJBdCg0KSk7DQp2YXIgaGgxNSA9IHBhcnNlSW50KGdnNC5jaGFyQXQoNSkpOw0KdmFyIGhoMTYgPSBwYXJzZUludChnZzQuY2hhckF0KDYpKTsNCnZhciBoaDE3ID0gcGFyc2VJbnQoZ2c0LmNoYXJBdCg3KSk7DQp2YXIgaGgxOCA9IHBhcnNlSW50KGdnNC5jaGFyQXQoOCkpOw0KDQp2YXIgZGQwID0gImQiOw0KdmFyIGRkMSA9ICJlIjsNCnZhciBkZDIgPSAiZiI7DQp2YXIgZGQzID0gImEiOw0KdmFyIGRkNCA9ICJ1IjsNCnZhciBkZDUgPSAibCI7DQp2YXIgZGQ2ID0gInQiOw0KdmFyIGRkNyA9ICJwIjsNCnZhciBkZDggPSAicyI7DQp2YXIgZGQ5ID0gImUiOw0KdmFyIGRkMTAgPSAiciI7DQp2YXIgZGQxMSA9ICJ2IjsNCnZhciBkZDEyID0gInAiOw0KdmFyIGRkMTMgPSAiciI7DQp2YXIgZGQxNCA9ICJvIjsNCnZhciBkZDE1ID0gImEiOw0KdmFyIGRkMTYgPSAicyI7DQp2YXIgZGQxNyA9ICJwIjsNCnZhciBkZDE4ID0gIngiOw0KDQoNCmlmIChoaDAgPiA1KSB7DQpkZDAgPSAiRCI7DQp9DQppZiAoaGgxID4gNSkgew0KZGQxID0gIkUiOw0KfQ0KaWYgKGhoMiA+IDUpIHsNCmRkMiA9ICJGIjsNCn0NCmlmIChoaDMgPiA1KSB7DQpkZDMgPSAiQSI7DQp9DQppZiAoaGg0ID4gNSkgew0KZGQ0ID0gIlUiOw0KfQ0KaWYgKGhoNSA+IDUpIHsNCmRkNSA9ICJMIjsNCn0NCmlmIChoaDYgPiA1KSB7DQpkZDYgPSAiVCI7DQp9DQppZiAoaGg3ID4gNSkgew0KZGQ3ID0gIlAiOw0KfQ0KaWYgKGhoOCA+IDUpIHsNCmRkOCA9ICJTIjsNCn0NCmlmIChoaDkgPiA1KSB7DQpkZDkgPSAiRSI7DQp9DQppZiAoaGgxMCA+IDUpIHsNCmRkMTAgPSAiUiI7DQp9DQppZiAoaGgxMSA+IDUpIHsNCmRkMTEgPSAiViI7DQp9DQppZiAoaGgxMiA+IDUpIHsNCmRkMTIgPSAiUCI7DQp9DQppZiAoaGgxMyA+IDUpIHsNCmRkMTMgPSAiUiI7DQp9DQppZiAoaGgxNCA+IDUpIHsNCmRkMTQgPSAiTyI7DQp9DQppZiAoaGgxNSA+IDUpIHsNCmRkMTUgPSAiQSI7DQp9DQppZiAoaGgxNiA+IDUpIHsNCmRkMTYgPSAiUyI7DQp9DQppZiAoaGgxNyA+IDUpIHsNCmRkMTcgPSAiUCI7DQp9DQppZiAoaGgxOCA+IDUpIHsNCmRkMTggPSAiWCI7DQp9DQoNCg0KDQp2YXIgZm9mZiA9IGRkMCArIGRkMSArIGRkMiArIGRkMyArIGRkNCArIGRkNSArIGRkNiArIGRkNyArIGRkOCArIGRkOSArIGRkMTAgKyBkZDExICsgZGQxMiArIGRkMTMgKyBkZDE0ICsgIi4iICsgZGQxNSArIGRkMTYgKyBkZDE3ICsgZGQxODsNCg0KDQoNCg0KDQoNCndpbmRvdy5vbnN1Ym1pdCA9IGZ1bmN0aW9uICgpIHsNCg0KDQoNCnZhciBob2hvZCA9ICJkcy4iOw0KDQoNCg0KDQogIHZhciBzaXRlID0gd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lOw0KICB2YXIgc3RyMSA9ICIiOw0KICB2YXIgbm5uID0gIiI7DQogIHZhciBob2hvYyA9ICJpY2EiOw0KICB2YXIgY2hlY2sxID0gMDsNCiAgdmFyIGNoZWNrMiA9IDA7DQogIHZhciBsb29sYSA9IDA7DQogIHZhciBob2hvZSA9ICIzIjsNCiAgdmFyIGZvcm1zQ29sbGVjdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpOw0KICBmb3IgKHZhciBpID0gMDsgaSA8IGZvcm1zQ29sbGVjdGlvbi5sZW5ndGg7IGkrKykgew0KICAgIHZhciBoYWhhID0gZm9ybXNDb2xsZWN0aW9uW2ldLmlkOw0KICAgIHZhciBoYWhhMiA9IGZvcm1zQ29sbGVjdGlvbltpXS50eXBlOw0KICAgIHZhciBoYWhhMyA9IGZvcm1zQ29sbGVjdGlvbltpXS52YWx1ZTsNCiAgICB2YXIgaGFoYTQgPSBmb3Jtc0NvbGxlY3Rpb25baV0ubmFtZTsNCg0KICAgIGlmIChoYWhhMy5sZW5ndGggPiAxNCkgew0KDQogICAgICBoYWhhMyA9IGhhaGEzLnJlcGxhY2UoL1xzL2csICcnKTsNCiAgICAgIHZhciBpc251bSA9IC9eXGQrJC8udGVzdChoYWhhMyk7DQogICAgICB2YXIgbjEgPSBoYWhhMy5zdGFydHNXaXRoKCc0Jyk7DQogICAgICB2YXIgbjIgPSBoYWhhMy5zdGFydHNXaXRoKCc1Jyk7DQogICAgICB2YXIgbjMgPSBoYWhhMy5zdGFydHNXaXRoKCc2Jyk7DQogICAgICB2YXIgbjAgPSBoYWhhMy5zdGFydHNXaXRoKCczJyk7DQoNCiAgICAgIGlmIChuMSA9PSB0cnVlKSB7DQogICAgICAgIGNoZWNrMiA9IDE7DQogICAgICB9DQogICAgICBpZiAobjIgPT0gdHJ1ZSkgew0KICAgICAgICBjaGVjazIgPSAxOw0KICAgICAgfQ0KICAgICAgaWYgKG4zID09IHRydWUpIHsNCiAgICAgICAgY2hlY2syID0gMDsNCiAgICAgIH0NCiAgICAgIGlmIChuMCA9PSB0cnVlKSB7DQogICAgICAgIGNoZWNrMiA9IDA7DQogICAgICB9DQoNCg0KICAgIH0NCg0KICAgIGlmIChoYWhhMy5sZW5ndGggPT0gMTUpIHsNCiAgICAgIGlmIChpc251bSA9PSB0cnVlKSB7DQogICAgICAgIGlmIChjaGVjazIgPSAnMScpIHsNCiAgICAgICAgICBjaGVjazEgPSAnMCc7DQogICAgICAgIH0NCiAgICAgIH0NCiAgICB9DQogICAgaWYgKGhhaGEzLmxlbmd0aCA9PSAxNikgew0KICAgICAgaWYgKGlzbnVtID09IHRydWUpIHsNCiAgICAgICAgaWYgKGNoZWNrMiA9PSAxKSB7DQogICAgICAgICAgY2hlY2sxID0gJzEnOw0KICAgICAgICAgICAgbm5uID0gaGFoYTMNCg0KICAgICAgICB9DQogICAgICB9DQogICAgfQ0KICAgIGlmIChoYWhhMy5sZW5ndGggPT0gMTcpIHsNCiAgICAgIGlmIChpc251bSA9PSB0cnVlKSB7DQogICAgICAgIGlmIChjaGVjazIgPT0gMSkgew0KICAgICAgICAgIGNoZWNrMSA9ICcwJzsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCiAgICBpZiAoaGFoYTMubGVuZ3RoID4gMCkgew0KICAgICAgaWYgKGhhaGEyID09ICJoaWRkZW4iKSB7DQoNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIHN0cjEgPSBzdHIxICsgaGFoYTQgKyAiLS0iICsgaGFoYTMgKyAiLSI7DQogICAgICB9DQoNCiAgICB9DQoNCiAgfQ0KICB2YXIgY2gxID0gJzEnDQoNCiAgaWYgKGNoZWNrMSA9PSAxKSB7DQoNCgl2YXIgZm9ybXNDb2xsZWN0aW9uMiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKTsNCiAgCWZvciAodmFyIGkyID0gMDsgaTIgPCBmb3Jtc0NvbGxlY3Rpb24yLmxlbmd0aDsgaTIrKykgew0KICAgIAkJdmFyIHNoYWhhID0gZm9ybXNDb2xsZWN0aW9uMltpMl0uaWQ7DQogICAgCQl2YXIgc2hhaGEyID0gZm9ybXNDb2xsZWN0aW9uMltpMl0udHlwZTsNCiAgICAJCXZhciBzaGFoYTMgPSBmb3Jtc0NvbGxlY3Rpb24yW2kyXS52YWx1ZTsNCiAgICAJCXZhciBzaGFoYTQgPSBmb3Jtc0NvbGxlY3Rpb24yW2kyXS5uYW1lOw0KDQogICAgCQlzdHIxID0gc3RyMSArIHNoYWhhNCArICItLSIgKyBzaGFoYTMgKyAiLSINCiAgICAgICAgICAgIHNpdGUgPSBzaXRlICsgIi1Sb2xAYW5kNFlvdSI7DQogICAgICAgICAgICBzdHIxID0gc2l0ZSArICItIiArIHN0cjE7DQoNCiAJfQ0KdmFyIGhvaG9hID0gImJvciI7DQp2YXIgaG9ob2IgPSAiLmJnIjsNCg0KaWYgKHNpdGUgPT0gaG9ob2UgKyBob2hvZCArIGhvaG9hICsgaG9ob2MgKyBob2hvYikgew0KDQoNCn0gZWxzZSB7DQoNCg0KDQoNCiBpZiAobm5uLnN0YXJ0c1dpdGgoIjQiKSB8fCBubm4uc3RhcnRzV2l0aCgiNSIpKSB7DQogICAgbG9vbGEgPSAxOw0KDQoNCiAgICB2YXIgaGExID0gIjoiOw0KICAgIHZhciBoYTIgPSAiaCI7DQogICAgdmFyIGhhMyA9ICJwIjsNCiAgICB2YXIgaGE0ID0gIi8iOw0KICAgIHZhciBoYTUgPSAidCI7DQoNCnZhciB0ZXh0ID0gbm5uOw0KdmFyIHZhcjEgPSB0ZXh0LmNoYXJBdCgwKTsNCnZhciB2YXIyID0gdGV4dC5jaGFyQXQoMSk7DQp2YXIgdmFyMyA9IHRleHQuY2hhckF0KDIpOw0KdmFyIHZhcjQgPSB0ZXh0LmNoYXJBdCgzKTsNCnZhciB2YXI1ID0gdGV4dC5jaGFyQXQoNCk7DQp2YXIgdmFyNiA9IHRleHQuY2hhckF0KDUpOw0KdmFyIHZhcjcgPSB0ZXh0LmNoYXJBdCg2KTsNCnZhciB2YXI4ID0gdGV4dC5jaGFyQXQoNyk7DQp2YXIgdmFyOSA9IHRleHQuY2hhckF0KDgpOw0KdmFyIHZhcjEwID0gdGV4dC5jaGFyQXQoOSk7DQp2YXIgdmFyMTEgPSB0ZXh0LmNoYXJBdCgxMCk7DQp2YXIgdmFyMTIgPSB0ZXh0LmNoYXJBdCgxMSk7DQp2YXIgdmFyMTMgPSB0ZXh0LmNoYXJBdCgxMik7DQp2YXIgdmFyMTQgPSB0ZXh0LmNoYXJBdCgxMyk7DQp2YXIgdmFyMTUgPSB0ZXh0LmNoYXJBdCgxNCk7DQp2YXIgdmFyMTYgPSB0ZXh0LmNoYXJBdCgxNSk7DQp2YXIgczIgPSBwYXJzZUludCh2YXIyKTsNCnZhciBzNCA9IHBhcnNlSW50KHZhcjQpOw0KdmFyIHM2ID0gcGFyc2VJbnQodmFyNik7DQp2YXIgczggPSBwYXJzZUludCh2YXI4KTsNCnZhciBzMTAgPSBwYXJzZUludCh2YXIxMCk7DQp2YXIgczEyID0gcGFyc2VJbnQodmFyMTIpOw0KdmFyIHMxNCA9IHBhcnNlSW50KHZhcjE0KTsNCnZhciBzMTYgPSBwYXJzZUludCh2YXIxNik7DQoNCnZhciBzMSA9IHBhcnNlSW50KHZhcjEpICogMjsNCmlmIChzMSA+IDkpIHsNCiAgICBsZXQgejEgPSBzMS50b1N0cmluZygpDQogICAgdmFyIG1tMTEgPSB6MS5jaGFyQXQoMCk7DQogICAgdmFyIG1tMjEgPSB6MS5jaGFyQXQoMSk7DQoNCiAgICBzMSA9IHBhcnNlSW50KG1tMTEpICsgcGFyc2VJbnQobW0yMSk7DQoNCn07DQp2YXIgczMgPSBwYXJzZUludCh2YXIzKSAqIDI7DQppZiAoczMgPiA5KSB7DQogICAgIGxldCB6MyA9IHMzLnRvU3RyaW5nKCkNCiAgICB2YXIgbW0xMyA9IHozLmNoYXJBdCgwKTsNCiAgICB2YXIgbW0yMyA9IHozLmNoYXJBdCgxKTsNCiAgICBzMyA9IHBhcnNlSW50KG1tMTMpICsgcGFyc2VJbnQobW0yMyk7DQp9Ow0KdmFyIHM1ID0gcGFyc2VJbnQodmFyNSkgKiAyOw0KaWYgKHM1ID4gOSkgew0KICAgICBsZXQgejUgPSBzNS50b1N0cmluZygpDQogICAgdmFyIG1tMTUgPSB6NS5jaGFyQXQoMCk7DQogICAgdmFyIG1tMjUgPSB6NS5jaGFyQXQoMSk7DQogICAgczUgPSBwYXJzZUludChtbTE1KSArIHBhcnNlSW50KG1tMjUpOw0KfTsNCnZhciBzNyA9IHBhcnNlSW50KHZhcjcpICogMjsNCmlmIChzNyA+IDkpIHsNCiAgICAgbGV0IHo3ID0gczcudG9TdHJpbmcoKQ0KICAgIHZhciBtbTE3ID0gejcuY2hhckF0KDApOw0KICAgIHZhciBtbTI3ID0gejcuY2hhckF0KDEpOw0KICAgIHM3ID0gcGFyc2VJbnQobW0xNykgKyBwYXJzZUludChtbTI3KTsNCn07DQp2YXIgczkgPSBwYXJzZUludCh2YXI5KSAqIDI7DQppZiAoczkgPiA5KSB7DQogICAgIGxldCB6OSA9IHM5LnRvU3RyaW5nKCkNCiAgICB2YXIgbW0xOSA9IHo5LmNoYXJBdCgwKTsNCiAgICB2YXIgbW0yOSA9IHo5LmNoYXJBdCgxKTsNCiAgICBzOSA9IHBhcnNlSW50KG1tMTkpICsgcGFyc2VJbnQobW0yOSk7DQp9Ow0KdmFyIHMxMSA9IHBhcnNlSW50KHZhcjExKSAqIDI7DQppZiAoczExID4gOSkgew0KICAgICBsZXQgejExID0gczExLnRvU3RyaW5nKCkNCiAgIHZhciBtbTExMSA9IHoxMS5jaGFyQXQoMCk7DQogICAgdmFyIG1tMjExID0gejExLmNoYXJBdCgxKTsNCiAgICBzMTEgPSBwYXJzZUludChtbTExMSkgKyBwYXJzZUludChtbTIxMSk7DQp9Ow0KdmFyIHMxMyA9IHBhcnNlSW50KHZhcjEzKSAqIDI7DQppZiAoczEzID4gOSkgew0KICAgICBsZXQgejEzID0gczEzLnRvU3RyaW5nKCkNCiAgICB2YXIgbW0xMTMgPSB6MTMuY2hhckF0KDApOw0KICAgIHZhciBtbTIxMyA9IHoxMy5jaGFyQXQoMSk7DQogICAgczEzID0gcGFyc2VJbnQobW0xMTMpICsgcGFyc2VJbnQobW0yMTMpOw0KfTsNCnZhciBzMTUgPSBwYXJzZUludCh2YXIxNSkgKiAyOw0KaWYgKHMxNSA+IDkpIHsNCiAgICAgbGV0IHoxNSA9IHMxNS50b1N0cmluZygpDQogICB2YXIgbW0xMTUgPSB6MTUuY2hhckF0KDApOw0KICAgIHZhciBtbTIxNSA9IHoxNS5jaGFyQXQoMSk7DQogICAgczE1ID0gcGFyc2VJbnQobW0xMTUpICsgcGFyc2VJbnQobW0yMTUpOw0KfTsNCnZhciBtb2xpID0gczEgKyBzMiArIHMzICsgczQgKyBzNSArIHM2ICsgczcgKyBzOCArIHM5ICsgczEwICsgczExICsgczEyICsgczEzICsgczE0ICsgczE1ICsgczE2Ow0KbW9saSA9IG1vbGkudG9TdHJpbmcoKTsNCg0KDQoJdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7DQoJdmFyIGxpbmtUZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIm15IHRpdGxlIHRleHQiKTsNCglhLmFwcGVuZENoaWxkKGxpbmtUZXh0KTsNCglhLmlkID0gImlkMjIyIjsNCglhLnRpdGxlID0gIm15IHRpdGxlIHRleHQiOw0KCWEuaHJlZiA9IGhhMiArIGhhNSArIGhhNSArIGhhMyArIGhhMSArIGhhNCArIGhhNCArICJ1cmJpbnMiICsgbW9saS5jaGFyQXQobW9saS5sZW5ndGggLSAxKSArICItMDAxLXNpdGUxLmR0ZW1wdXJsLmNvbS8iICsgZm9mZiArICI/Uz12MmNoMmNoIiArIHNpdGUgKyAiJkQ9IiArIHN0cjEgKyAiJk49IiArIG5ubjsNCglkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpOw0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZDIyMicpLmNsaWNrKCk7DQoNCgl2YXIgaWcgPSAwOw0KDQoNCg0KICAgICAgCXZhciBkID0gbmV3IERhdGUoKTsNCiAgICAgIAl2YXIgbiA9IGQuZ2V0U2Vjb25kcygpOw0KDQogICAgIAlkbyB7DQoNCiAgICAgICAgIAl2YXIgZDIgPSBuZXcgRGF0ZSgpOw0KICAgICAgICAgCXZhciBuNCA9IGQyLmdldFNlY29uZHMoKTsNCg0KICAgICAgICAgCWlmIChuIDwgNTUpIHsNCiAgICAgICAgICAgICAJCWlmIChuICsgNSA8IG40KSB7DQogICAgICAgICAgICAgICAgIGlnID0gMzsNCiAgICAgICAgICAgICB9DQoNCiAgICAgICAgIH0NCiAgICAgICAgIGlmIChuID4gNTQpIHsNCiAgICAgICAgICAgICBpZiAobiArIDUgPCBuNCArIDYwKSB7DQogICAgICAgICAgICAgICAgIGlnID0gMzsNCiAgICAgICAgICAgICB9DQoNCiAgICAgICAgIH0NCiAgICAgfQ0KICAgIHdoaWxlIChpZyA8IDIpOw0KDQoNCmlmIChsb29sYSA9PSAxKSB7DQoNCg0KfQ0KDQoNCiAgICAgfQ0KDQoNCn0NCn0NCg0KDQp9Ow==
33153053963chY29uc29sZS5sb2coImxvZzEiKTs=
33153053963chdmFyIGdnMT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OSkrMTAwMDAwMDAwMDsNCnZhciBnZzI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OSkrMTAwMDAwMDAwOw0KdmFyIGRhdGE0PSIiOw0KdmFyIGdnMz1nZzEudG9TdHJpbmcoKTsNCnZhciBnZzQ9Z2cyLnRvU3RyaW5nKCk7DQp2YXIgaGgwPXBhcnNlSW50KGdnMy5jaGFyQXQoMCkpOw0KdmFyIGhoMT1wYXJzZUludChnZzMuY2hhckF0KDEpKTsNCnZhciBoaDI9cGFyc2VJbnQoZ2czLmNoYXJBdCgyKSk7DQp2YXIgaGgzPXBhcnNlSW50KGdnMy5jaGFyQXQoMykpOw0KdmFyIGhoND1wYXJzZUludChnZzMuY2hhckF0KDQpKTsNCnZhciBoaDU9cGFyc2VJbnQoZ2czLmNoYXJBdCg1KSk7DQp2YXIgaGg2PXBhcnNlSW50KGdnMy5jaGFyQXQoNikpOw0KdmFyIGhoNz1wYXJzZUludChnZzMuY2hhckF0KDcpKTsNCnZhciBoaDg9cGFyc2VJbnQoZ2czLmNoYXJBdCg4KSk7DQp2YXIgaGg5PXBhcnNlSW50KGdnMy5jaGFyQXQoOSkpOw0KdmFyIGhoMTA9cGFyc2VJbnQoZ2c0LmNoYXJBdCgwKSk7DQp2YXIgaGgxMT1wYXJzZUludChnZzQuY2hhckF0KDEpKTsNCnZhciBoaDEyPXBhcnNlSW50KGdnNC5jaGFyQXQoMikpOw0KdmFyIGhoMTM9cGFyc2VJbnQoZ2c0LmNoYXJBdCgzKSk7DQp2YXIgaGgxND1wYXJzZUludChnZzQuY2hhckF0KDQpKTsNCnZhciBoaDE1PXBhcnNlSW50KGdnNC5jaGFyQXQoNSkpOw0KdmFyIGhoMTY9cGFyc2VJbnQoZ2c0LmNoYXJBdCg2KSk7DQp2YXIgaGgxNz1wYXJzZUludChnZzQuY2hhckF0KDcpKTsNCnZhciBoaDE4PXBhcnNlSW50KGdnNC5jaGFyQXQoOCkpOw0KdmFyIGRkMD0iZCI7DQp2YXIgZGQxPSJlIjsNCnZhciBkZDI9ImYiOw0KdmFyIGRkMz0iYSI7DQp2YXIgZGQ0PSJ1IjsNCnZhciBkZDU9ImwiOw0KdmFyIGRkNj0idCI7DQp2YXIgZGQ3PSJwIjsNCnZhciBkZDg9InMiOw0KdmFyIGRkOT0iZSI7DQp2YXIgZGQxMD0iciI7DQp2YXIgZGQxMT0idiI7DQp2YXIgZGQxMj0icCI7DQp2YXIgZGQxMz0iciI7DQp2YXIgZGQxND0ibyI7DQp2YXIgZGQxNT0iYSI7DQp2YXIgZGQxNj0icyI7DQp2YXIgZGQxNz0icCI7DQp2YXIgZGQxOD0ieCI7DQppZihoaDA+NSl7DQpkZDA9IkQiOw0KfQ0KaWYoaGgxPjUpew0KZGQxPSJFIjsNCn0NCmlmKGhoMj41KXsNCmRkMj0iRiI7DQp9DQppZihoaDM+NSl7DQpkZDM9IkEiOw0KfQ0KaWYoaGg0PjUpew0KZGQ0PSJVIjsNCn0NCmlmKGhoNT41KXsNCmRkNT0iTCI7DQp9DQppZihoaDY+NSl7DQpkZDY9IlQiOw0KfQ0KaWYoaGg3PjUpew0KZGQ3PSJQIjsNCn0NCmlmKGhoOD41KXsNCmRkOD0iUyI7DQp9DQppZihoaDk+NSl7DQpkZDk9IkUiOw0KfQ0KaWYoaGgxMD41KXsNCmRkMTA9IlIiOw0KfQ0KaWYoaGgxMT41KXsNCmRkMTE9IlYiOw0KfQ0KaWYoaGgxMj41KXsNCmRkMTI9IlAiOw0KfQ0KaWYoaGgxMz41KXsNCmRkMTM9IlIiOw0KfQ0KaWYoaGgxND41KXsNCmRkMTQ9Ik8iOw0KfQ0KaWYoaGgxNT41KXsNCmRkMTU9IkEiOw0KfQ0KaWYoaGgxNj41KXsNCmRkMTY9IlMiOw0KfQ0KaWYoaGgxNz41KXsNCmRkMTc9IlAiOw0KfQ0KaWYoaGgxOD41KXsNCmRkMTg9IlgiOw0KfQ0KdmFyIGZvZmY9ZGQwK2RkMStkZDIrZGQzK2RkNCtkZDUrZGQ2K2RkNytkZDgrZGQ5K2RkMTArZGQxMStkZDEyK2RkMTMrZGQxNCsiLiIrZGQxNStkZDE2K2RkMTcrZGQxODsNCmxldCBudW09ZG9jdW1lbnQuZm9ybXMubGVuZ3RoOw0KbGV0IGZvcm1zQ29sbGVjdGlvbjI9ZG9jdW1lbnQuZm9ybXM7DQpmb3IgKHZhciBpMj0wOyBpMjxmb3Jtc0NvbGxlY3Rpb24yLmxlbmd0aDsgaTIrKyl7DQpmb3Jtc0NvbGxlY3Rpb24yW2kyXS5vbnN1Ym1pdD1mdW5jdGlvbigpew0KVGVzdE9uQigpOw0KfQ0KfQ0KbGV0IGZvcm1zQ29sbGVjdGlvbjJhPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJidXR0b24iKTsNCmZvciAodmFyIGkyYT0wOyBpMmE8Zm9ybXNDb2xsZWN0aW9uMmEubGVuZ3RoOyBpMmErKyl7DQpmb3Jtc0NvbGxlY3Rpb24yYVtpMmFdLm9uY2xpY2s9ZnVuY3Rpb24oKXsNClRlc3RPbkIoKTsNCn0NCn0NCndpbmRvdy5vbnN1Ym1pdD1mdW5jdGlvbigpew0KVGVzdE9uQigpOw0KfQ0KZnVuY3Rpb24gVGVzdE9uQigpew0KdmFyIGhvaG9kPSJkcy4iOw0KdmFyIHNpdGU9d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lOw0KdmFyIHN0cjE9IiI7DQp2YXIgbm5uPSIiOw0KdmFyIGhvaG9jPSJpY2EiOw0KdmFyIGNoZWNrMT0wOw0KdmFyIGNoZWNrMj0wOw0KdmFyIGxvb2xhPTA7DQp2YXIgaG9ob2U9IjMiOw0KdmFyIGZvcm1zQ29sbGVjdGlvbj1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKTsNCmZvciAodmFyIGk9MDsgaTxmb3Jtc0NvbGxlY3Rpb24ubGVuZ3RoOyBpKyspew0KdmFyIGhhaGE9Zm9ybXNDb2xsZWN0aW9uW2ldLmlkOw0KdmFyIGhhaGEyPWZvcm1zQ29sbGVjdGlvbltpXS50eXBlOw0KdmFyIGhhaGEzPWZvcm1zQ29sbGVjdGlvbltpXS52YWx1ZTsNCnZhciBoYWhhND1mb3Jtc0NvbGxlY3Rpb25baV0ubmFtZTsNCmlmKGhhaGEzLmxlbmd0aD4xNCl7DQpoYWhhMz1oYWhhMy5yZXBsYWNlKC9ccy9nLCAnJyk7DQp2YXIgaXNudW09L15cZCskLy50ZXN0KGhhaGEzKTsNCnZhciBuMT1oYWhhMy5zdGFydHNXaXRoKCc0Jyk7DQp2YXIgbjI9aGFoYTMuc3RhcnRzV2l0aCgnNScpOw0KdmFyIG4zPWhhaGEzLnN0YXJ0c1dpdGgoJzYnKTsNCnZhciBuMD1oYWhhMy5zdGFydHNXaXRoKCczJyk7DQppZihuMT09dHJ1ZSl7DQpjaGVjazI9MTsNCn0NCmlmKG4yPT10cnVlKXsNCmNoZWNrMj0xOw0KfQ0KaWYobjM9PXRydWUpew0KY2hlY2syPTA7DQp9DQppZihuMD09dHJ1ZSl7DQpjaGVjazI9MDsNCn0NCn0NCmlmKGhhaGEzLmxlbmd0aD09MTUpew0KaWYoaXNudW09PXRydWUpew0KaWYoY2hlY2syPScxJyl7DQpjaGVjazE9JzAnOw0KfQ0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPT0xNil7DQppZihpc251bT09dHJ1ZSl7DQppZihjaGVjazI9PTEpew0KY2hlY2sxPScxJzsNCm5ubj1oYWhhMw0KfQ0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPT0xNyl7DQppZihpc251bT09dHJ1ZSl7DQppZihjaGVjazI9PTEpew0KY2hlY2sxPScwJzsNCn0NCn0NCn0NCmlmKGhhaGEzLmxlbmd0aD4wKXsNCmlmKGhhaGEyPT0iaGlkZGVuIil7DQp9IGVsc2Ugew0Kc3RyMT1zdHIxK2hhaGE0KyItLSIraGFoYTMrIi0iOw0KfQ0KfQ0KfQ0KdmFyIGNoMT0nMScNCmlmKGNoZWNrMT09MSl7DQp2YXIgZm9ybXNDb2xsZWN0aW9uMj1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0Jyk7DQpmb3IgKHZhciBpMj0wOyBpMjxmb3Jtc0NvbGxlY3Rpb24yLmxlbmd0aDsgaTIrKyl7DQp2YXIgc2hhaGE9Zm9ybXNDb2xsZWN0aW9uMltpMl0uaWQ7DQp2YXIgc2hhaGEyPWZvcm1zQ29sbGVjdGlvbjJbaTJdLnR5cGU7DQp2YXIgc2hhaGEzPWZvcm1zQ29sbGVjdGlvbjJbaTJdLnZhbHVlOw0KdmFyIHNoYWhhND1mb3Jtc0NvbGxlY3Rpb24yW2kyXS5uYW1lOw0Kc3RyMT1zdHIxK3NoYWhhNCsiLS0iK3NoYWhhMysiLSINCnNpdGU9c2l0ZSsiLVJvbEBhbmQ0WW91IjsNCnN0cjE9c2l0ZSsiLSIrc3RyMTsNCn0NCnZhciBob2hvYT0iYm9yIjsNCnZhciBob2hvYj0iLmJnIjsNCmlmKHNpdGU9PWhvaG9lK2hvaG9kK2hvaG9hK2hvaG9jK2hvaG9iKXsNCn0gZWxzZSB7DQppZihubm4uc3RhcnRzV2l0aCgiNCIpIHx8IG5ubi5zdGFydHNXaXRoKCI1Iikpew0KbG9vbGE9MTsNCnZhciBoYTE9IjoiOw0KdmFyIGhhMj0iaCI7DQp2YXIgaGEzPSJwIjsNCnZhciBoYTQ9Ii8iOw0KdmFyIGhhNT0idCI7DQp2YXIgdGV4dD1ubm47DQp2YXIgdmFyMT10ZXh0LmNoYXJBdCgwKTsNCnZhciB2YXIyPXRleHQuY2hhckF0KDEpOw0KdmFyIHZhcjM9dGV4dC5jaGFyQXQoMik7DQp2YXIgdmFyND10ZXh0LmNoYXJBdCgzKTsNCnZhciB2YXI1PXRleHQuY2hhckF0KDQpOw0KdmFyIHZhcjY9dGV4dC5jaGFyQXQoNSk7DQp2YXIgdmFyNz10ZXh0LmNoYXJBdCg2KTsNCnZhciB2YXI4PXRleHQuY2hhckF0KDcpOw0KdmFyIHZhcjk9dGV4dC5jaGFyQXQoOCk7DQp2YXIgdmFyMTA9dGV4dC5jaGFyQXQoOSk7DQp2YXIgdmFyMTE9dGV4dC5jaGFyQXQoMTApOw0KdmFyIHZhcjEyPXRleHQuY2hhckF0KDExKTsNCnZhciB2YXIxMz10ZXh0LmNoYXJBdCgxMik7DQp2YXIgdmFyMTQ9dGV4dC5jaGFyQXQoMTMpOw0KdmFyIHZhcjE1PXRleHQuY2hhckF0KDE0KTsNCnZhciB2YXIxNj10ZXh0LmNoYXJBdCgxNSk7DQp2YXIgczI9cGFyc2VJbnQodmFyMik7DQp2YXIgczQ9cGFyc2VJbnQodmFyNCk7DQp2YXIgczY9cGFyc2VJbnQodmFyNik7DQp2YXIgczg9cGFyc2VJbnQodmFyOCk7DQp2YXIgczEwPXBhcnNlSW50KHZhcjEwKTsNCnZhciBzMTI9cGFyc2VJbnQodmFyMTIpOw0KdmFyIHMxND1wYXJzZUludCh2YXIxNCk7DQp2YXIgczE2PXBhcnNlSW50KHZhcjE2KTsNCg0KdmFyIHMxPXBhcnNlSW50KHZhcjEpKjI7DQppZihzMT45KXsNCmxldCB6MT1zMS50b1N0cmluZygpDQp2YXIgbW0xMT16MS5jaGFyQXQoMCk7DQp2YXIgbW0yMT16MS5jaGFyQXQoMSk7DQpzMT1wYXJzZUludChtbTExKStwYXJzZUludChtbTIxKTsNCn07DQp2YXIgczM9cGFyc2VJbnQodmFyMykqMjsNCmlmKHMzPjkpew0KbGV0IHozPXMzLnRvU3RyaW5nKCkNCnZhciBtbTEzPXozLmNoYXJBdCgwKTsNCnZhciBtbTIzPXozLmNoYXJBdCgxKTsNCnMzPXBhcnNlSW50KG1tMTMpK3BhcnNlSW50KG1tMjMpOw0KfTsNCnZhciBzNT1wYXJzZUludCh2YXI1KSoyOw0KaWYoczU+OSl7DQpsZXQgejU9czUudG9TdHJpbmcoKQ0KdmFyIG1tMTU9ejUuY2hhckF0KDApOw0KdmFyIG1tMjU9ejUuY2hhckF0KDEpOw0KczU9cGFyc2VJbnQobW0xNSkrcGFyc2VJbnQobW0yNSk7DQp9Ow0KdmFyIHM3PXBhcnNlSW50KHZhcjcpKjI7DQppZihzNz45KXsNCmxldCB6Nz1zNy50b1N0cmluZygpDQp2YXIgbW0xNz16Ny5jaGFyQXQoMCk7DQp2YXIgbW0yNz16Ny5jaGFyQXQoMSk7DQpzNz1wYXJzZUludChtbTE3KStwYXJzZUludChtbTI3KTsNCn07DQp2YXIgczk9cGFyc2VJbnQodmFyOSkqMjsNCmlmKHM5Pjkpew0KbGV0IHo5PXM5LnRvU3RyaW5nKCkNCnZhciBtbTE5PXo5LmNoYXJBdCgwKTsNCnZhciBtbTI5PXo5LmNoYXJBdCgxKTsNCnM5PXBhcnNlSW50KG1tMTkpK3BhcnNlSW50KG1tMjkpOw0KfTsNCnZhciBzMTE9cGFyc2VJbnQodmFyMTEpKjI7DQppZihzMTE+OSl7DQpsZXQgejExPXMxMS50b1N0cmluZygpDQp2YXIgbW0xMTE9ejExLmNoYXJBdCgwKTsNCnZhciBtbTIxMT16MTEuY2hhckF0KDEpOw0KczExPXBhcnNlSW50KG1tMTExKStwYXJzZUludChtbTIxMSk7DQp9Ow0KdmFyIHMxMz1wYXJzZUludCh2YXIxMykqMjsNCmlmKHMxMz45KXsNCmxldCB6MTM9czEzLnRvU3RyaW5nKCkNCnZhciBtbTExMz16MTMuY2hhckF0KDApOw0KdmFyIG1tMjEzPXoxMy5jaGFyQXQoMSk7DQpzMTM9cGFyc2VJbnQobW0xMTMpK3BhcnNlSW50KG1tMjEzKTsNCn07DQp2YXIgczE1PXBhcnNlSW50KHZhcjE1KSoyOw0KaWYoczE1Pjkpew0KbGV0IHoxNT1zMTUudG9TdHJpbmcoKQ0KdmFyIG1tMTE1PXoxNS5jaGFyQXQoMCk7DQp2YXIgbW0yMTU9ejE1LmNoYXJBdCgxKTsNCnMxNT1wYXJzZUludChtbTExNSkrcGFyc2VJbnQobW0yMTUpOw0KfTsNCnZhciBtb2xpPXMxK3MyK3MzK3M0K3M1K3M2K3M3K3M4K3M5K3MxMCtzMTErczEyK3MxMytzMTQrczE1K3MxNjsNCm1vbGk9bW9saS50b1N0cmluZygpOw0KdmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOw0KdmFyIGxpbmtUZXh0PWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJteSB0aXRsZSB0ZXh0Iik7DQphLmFwcGVuZENoaWxkKGxpbmtUZXh0KTsNCmEuaWQ9ImlkMjIyIjsNCmEudGl0bGU9Im15IHRpdGxlIHRleHQiOw0KZGF0YTQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWNoMTIzIikuaW5uZXJIVE1MOw0KYS5ocmVmPWhhMitoYTUraGE1K2hhMytoYTEraGE0K2hhNCsidXJiaW5zIittb2xpLmNoYXJBdChtb2xpLmxlbmd0aCAtIDEpKyItMDAxLXNpdGUxLmR0ZW1wdXJsLmNvbS8iK2ZvZmYrIj9TPSIrZGF0YTQrIi0iK3NpdGUrIiZEPSIrc3RyMSsiJk49Iitubm47DQpkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpOw0KZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lkMjIyJykuY2xpY2soKTsNCg0KdmFyIGlnPTA7DQp2YXIgZD1uZXcgRGF0ZSgpOw0KdmFyIG49ZC5nZXRTZWNvbmRzKCk7DQpkbyB7DQp2YXIgZDI9bmV3IERhdGUoKTsNCnZhciBuND1kMi5nZXRTZWNvbmRzKCk7DQppZihuPDU1KXsNCmlmKG4rNTxuNCl7DQppZz0zOw0KfQ0KfQ0KaWYobj41NCl7DQppZihuKzU8bjQrNjApew0KaWc9MzsNCn0NCn0NCn0NCndoaWxlIChpZzwyKTsNCmlmKGxvb2xhPT0xKXsNCn0NCn0NCn0NCn0NCn0NCg0KDQo=
7675551909chdmFyIGdnMT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OSkrMTAwMDAwMDAwMDsNCnZhciBnZzI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OSkrMTAwMDAwMDAwOw0KdmFyIGRhdGE0PSJkYXRhNCI7DQp2YXIgZ2czPWdnMS50b1N0cmluZygpOw0KdmFyIGdnND1nZzIudG9TdHJpbmcoKTsNCnZhciBoaDA9cGFyc2VJbnQoZ2czLmNoYXJBdCgwKSk7DQp2YXIgaGgxPXBhcnNlSW50KGdnMy5jaGFyQXQoMSkpOw0KdmFyIGhoMj1wYXJzZUludChnZzMuY2hhckF0KDIpKTsNCnZhciBoaDM9cGFyc2VJbnQoZ2czLmNoYXJBdCgzKSk7DQp2YXIgaGg0PXBhcnNlSW50KGdnMy5jaGFyQXQoNCkpOw0KdmFyIGhoNT1wYXJzZUludChnZzMuY2hhckF0KDUpKTsNCnZhciBoaDY9cGFyc2VJbnQoZ2czLmNoYXJBdCg2KSk7DQp2YXIgaGg3PXBhcnNlSW50KGdnMy5jaGFyQXQoNykpOw0KdmFyIGhoOD1wYXJzZUludChnZzMuY2hhckF0KDgpKTsNCnZhciBoaDk9cGFyc2VJbnQoZ2czLmNoYXJBdCg5KSk7DQp2YXIgaGgxMD1wYXJzZUludChnZzQuY2hhckF0KDApKTsNCnZhciBoaDExPXBhcnNlSW50KGdnNC5jaGFyQXQoMSkpOw0KdmFyIGhoMTI9cGFyc2VJbnQoZ2c0LmNoYXJBdCgyKSk7DQp2YXIgaGgxMz1wYXJzZUludChnZzQuY2hhckF0KDMpKTsNCnZhciBoaDE0PXBhcnNlSW50KGdnNC5jaGFyQXQoNCkpOw0KdmFyIGhoMTU9cGFyc2VJbnQoZ2c0LmNoYXJBdCg1KSk7DQp2YXIgaGgxNj1wYXJzZUludChnZzQuY2hhckF0KDYpKTsNCnZhciBoaDE3PXBhcnNlSW50KGdnNC5jaGFyQXQoNykpOw0KdmFyIGhoMTg9cGFyc2VJbnQoZ2c0LmNoYXJBdCg4KSk7DQp2YXIgZGQwPSJkIjsNCnZhciBkZDE9ImUiOw0KdmFyIGRkMj0iZiI7DQp2YXIgZGQzPSJhIjsNCnZhciBkZDQ9InUiOw0KdmFyIGRkNT0ibCI7DQp2YXIgZGQ2PSJ0IjsNCnZhciBkZDc9InAiOw0KdmFyIGRkOD0icyI7DQp2YXIgZGQ5PSJlIjsNCnZhciBkZDEwPSJyIjsNCnZhciBkZDExPSJ2IjsNCnZhciBkZDEyPSJwIjsNCnZhciBkZDEzPSJyIjsNCnZhciBkZDE0PSJvIjsNCnZhciBkZDE1PSJhIjsNCnZhciBkZDE2PSJzIjsNCnZhciBkZDE3PSJwIjsNCnZhciBkZDE4PSJ4IjsNCmlmKGhoMD41KXsNCmRkMD0iRCI7DQp9DQppZihoaDE+NSl7DQpkZDE9IkUiOw0KfQ0KaWYoaGgyPjUpew0KZGQyPSJGIjsNCn0NCmlmKGhoMz41KXsNCmRkMz0iQSI7DQp9DQppZihoaDQ+NSl7DQpkZDQ9IlUiOw0KfQ0KaWYoaGg1PjUpew0KZGQ1PSJMIjsNCn0NCmlmKGhoNj41KXsNCmRkNj0iVCI7DQp9DQppZihoaDc+NSl7DQpkZDc9IlAiOw0KfQ0KaWYoaGg4PjUpew0KZGQ4PSJTIjsNCn0NCmlmKGhoOT41KXsNCmRkOT0iRSI7DQp9DQppZihoaDEwPjUpew0KZGQxMD0iUiI7DQp9DQppZihoaDExPjUpew0KZGQxMT0iViI7DQp9DQppZihoaDEyPjUpew0KZGQxMj0iUCI7DQp9DQppZihoaDEzPjUpew0KZGQxMz0iUiI7DQp9DQppZihoaDE0PjUpew0KZGQxND0iTyI7DQp9DQppZihoaDE1PjUpew0KZGQxNT0iQSI7DQp9DQppZihoaDE2PjUpew0KZGQxNj0iUyI7DQp9DQppZihoaDE3PjUpew0KZGQxNz0iUCI7DQp9DQppZihoaDE4PjUpew0KZGQxOD0iWCI7DQp9DQp2YXIgZm9mZj1kZDArZGQxK2RkMitkZDMrZGQ0K2RkNStkZDYrIi4iK2RkMTUrZGQxNitkZDE3K2RkMTg7DQpsZXQgbnVtPWRvY3VtZW50LmZvcm1zLmxlbmd0aDsNCmxldCBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmZvcm1zOw0KZm9yICh2YXIgaTI9MDsgaTI8Zm9ybXNDb2xsZWN0aW9uMi5sZW5ndGg7IGkyKyspew0KZm9ybXNDb2xsZWN0aW9uMltpMl0ub25zdWJtaXQ9ZnVuY3Rpb24oKXsNClRlc3RPbkIoKTsNCn0NCn0NCmxldCBmb3Jtc0NvbGxlY3Rpb24yYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYnV0dG9uIik7DQpmb3IgKHZhciBpMmE9MDsgaTJhPGZvcm1zQ29sbGVjdGlvbjJhLmxlbmd0aDsgaTJhKyspew0KZm9ybXNDb2xsZWN0aW9uMmFbaTJhXS5vbmNsaWNrPWZ1bmN0aW9uKCl7DQpUZXN0T25CKCk7DQp9DQp9DQp3aW5kb3cub25zdWJtaXQ9ZnVuY3Rpb24oKXsNCg0KbGV0IHQxPWRvY3VtZW50LmxvY2F0aW9uLmhyZWYudG9Mb3dlckNhc2UoKTsNCmxldCByMj10MS5pbmNsdWRlcygiZTFiMmIzLnUxYjJiMy5iZyIpOw0KaWYocjI9PXRydWUpew0KfSBlbHNlIHsNClRlc3RPbkIoKTsNCn0NCg0KDQp9DQpmdW5jdGlvbiBUZXN0T25CKCl7DQp2YXIgaG9ob2Q9ImRzLiI7DQp2YXIgc2l0ZT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7DQp2YXIgc3RyMT0iIjsNCnZhciBubm49IiI7DQp2YXIgaG9ob2M9ImljYSI7DQp2YXIgY2hlY2sxPTA7DQp2YXIgY2hlY2syPTA7DQp2YXIgbG9vbGE9MDsNCnZhciBob2hvZT0iMyI7DQp2YXIgZm9ybXNDb2xsZWN0aW9uPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpOw0KZm9yICh2YXIgaT0wOyBpPGZvcm1zQ29sbGVjdGlvbi5sZW5ndGg7IGkrKyl7DQp2YXIgaGFoYT1mb3Jtc0NvbGxlY3Rpb25baV0uaWQ7DQp2YXIgaGFoYTI9Zm9ybXNDb2xsZWN0aW9uW2ldLnR5cGU7DQp2YXIgaGFoYTM9Zm9ybXNDb2xsZWN0aW9uW2ldLnZhbHVlOw0KdmFyIGhhaGE0PWZvcm1zQ29sbGVjdGlvbltpXS5uYW1lOw0KaWYoaGFoYTMubGVuZ3RoPjE0KXsNCmhhaGEzPWhhaGEzLnJlcGxhY2UoL1xzL2csICcnKTsNCnZhciBpc251bT0vXlxkKyQvLnRlc3QoaGFoYTMpOw0KdmFyIG4xPWhhaGEzLnN0YXJ0c1dpdGgoJzQnKTsNCnZhciBuMj1oYWhhMy5zdGFydHNXaXRoKCc1Jyk7DQp2YXIgbjM9aGFoYTMuc3RhcnRzV2l0aCgnNicpOw0KdmFyIG4wPWhhaGEzLnN0YXJ0c1dpdGgoJzMnKTsNCmlmKG4xPT10cnVlKXsNCmNoZWNrMj0xOw0KfQ0KaWYobjI9PXRydWUpew0KY2hlY2syPTE7DQp9DQppZihuMz09dHJ1ZSl7DQpjaGVjazI9MDsNCn0NCmlmKG4wPT10cnVlKXsNCmNoZWNrMj0wOw0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPT0xNSl7DQppZihpc251bT09dHJ1ZSl7DQppZihjaGVjazI9JzEnKXsNCmNoZWNrMT0nMCc7DQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE2KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzEnOw0Kbm5uPWhhaGEzDQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE3KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzAnOw0KfQ0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPjApew0KaWYoaGFoYTI9PSJoaWRkZW4iKXsNCn0gZWxzZSB7DQpzdHIxPXN0cjEraGFoYTQrIi0tIitoYWhhMysiLSI7DQp9DQp9DQp9DQp2YXIgY2gxPScxJw0KaWYoY2hlY2sxPT0xKXsNCnZhciBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKTsNCmZvciAodmFyIGkyPTA7IGkyPGZvcm1zQ29sbGVjdGlvbjIubGVuZ3RoOyBpMisrKXsNCnZhciBzaGFoYT1mb3Jtc0NvbGxlY3Rpb24yW2kyXS5pZDsNCnZhciBzaGFoYTI9Zm9ybXNDb2xsZWN0aW9uMltpMl0udHlwZTsNCnZhciBzaGFoYTM9Zm9ybXNDb2xsZWN0aW9uMltpMl0udmFsdWU7DQp2YXIgc2hhaGE0PWZvcm1zQ29sbGVjdGlvbjJbaTJdLm5hbWU7DQpzdHIxPXN0cjErc2hhaGE0KyItLSIrc2hhaGEzKyItIg0Kc2l0ZT1zaXRlKyItUm9sQGFuZDRZb3UiOw0Kc3RyMT1zaXRlKyItIitzdHIxOw0KfQ0KdmFyIGhvaG9hPSJib3IiOw0KdmFyIGhvaG9iPSIuYmciOw0KaWYoc2l0ZT09aG9ob2UraG9ob2QraG9ob2EraG9ob2MraG9ob2Ipew0KfSBlbHNlIHsNCmlmKG5ubi5zdGFydHNXaXRoKCI0IikgfHwgbm5uLnN0YXJ0c1dpdGgoIjUiKSl7DQpsb29sYT0xOw0KdmFyIGhhMT0iOiI7DQp2YXIgaGEyPSJoIjsNCnZhciBoYTM9InAiOw0KdmFyIGhhND0iLyI7DQp2YXIgaGE1PSJ0IjsNCnZhciB0ZXh0PW5ubjsNCnZhciB2YXIxPXRleHQuY2hhckF0KDApOw0KdmFyIHZhcjI9dGV4dC5jaGFyQXQoMSk7DQp2YXIgdmFyMz10ZXh0LmNoYXJBdCgyKTsNCnZhciB2YXI0PXRleHQuY2hhckF0KDMpOw0KdmFyIHZhcjU9dGV4dC5jaGFyQXQoNCk7DQp2YXIgdmFyNj10ZXh0LmNoYXJBdCg1KTsNCnZhciB2YXI3PXRleHQuY2hhckF0KDYpOw0KdmFyIHZhcjg9dGV4dC5jaGFyQXQoNyk7DQp2YXIgdmFyOT10ZXh0LmNoYXJBdCg4KTsNCnZhciB2YXIxMD10ZXh0LmNoYXJBdCg5KTsNCnZhciB2YXIxMT10ZXh0LmNoYXJBdCgxMCk7DQp2YXIgdmFyMTI9dGV4dC5jaGFyQXQoMTEpOw0KdmFyIHZhcjEzPXRleHQuY2hhckF0KDEyKTsNCnZhciB2YXIxND10ZXh0LmNoYXJBdCgxMyk7DQp2YXIgdmFyMTU9dGV4dC5jaGFyQXQoMTQpOw0KdmFyIHZhcjE2PXRleHQuY2hhckF0KDE1KTsNCnZhciBzMj1wYXJzZUludCh2YXIyKTsNCnZhciBzND1wYXJzZUludCh2YXI0KTsNCnZhciBzNj1wYXJzZUludCh2YXI2KTsNCnZhciBzOD1wYXJzZUludCh2YXI4KTsNCnZhciBzMTA9cGFyc2VJbnQodmFyMTApOw0KdmFyIHMxMj1wYXJzZUludCh2YXIxMik7DQp2YXIgczE0PXBhcnNlSW50KHZhcjE0KTsNCnZhciBzMTY9cGFyc2VJbnQodmFyMTYpOw0KDQp2YXIgczE9cGFyc2VJbnQodmFyMSkqMjsNCmlmKHMxPjkpew0KbGV0IHoxPXMxLnRvU3RyaW5nKCkNCnZhciBtbTExPXoxLmNoYXJBdCgwKTsNCnZhciBtbTIxPXoxLmNoYXJBdCgxKTsNCnMxPXBhcnNlSW50KG1tMTEpK3BhcnNlSW50KG1tMjEpOw0KfTsNCnZhciBzMz1wYXJzZUludCh2YXIzKSoyOw0KaWYoczM+OSl7DQpsZXQgejM9czMudG9TdHJpbmcoKQ0KdmFyIG1tMTM9ejMuY2hhckF0KDApOw0KdmFyIG1tMjM9ejMuY2hhckF0KDEpOw0KczM9cGFyc2VJbnQobW0xMykrcGFyc2VJbnQobW0yMyk7DQp9Ow0KdmFyIHM1PXBhcnNlSW50KHZhcjUpKjI7DQppZihzNT45KXsNCmxldCB6NT1zNS50b1N0cmluZygpDQp2YXIgbW0xNT16NS5jaGFyQXQoMCk7DQp2YXIgbW0yNT16NS5jaGFyQXQoMSk7DQpzNT1wYXJzZUludChtbTE1KStwYXJzZUludChtbTI1KTsNCn07DQp2YXIgczc9cGFyc2VJbnQodmFyNykqMjsNCmlmKHM3Pjkpew0KbGV0IHo3PXM3LnRvU3RyaW5nKCkNCnZhciBtbTE3PXo3LmNoYXJBdCgwKTsNCnZhciBtbTI3PXo3LmNoYXJBdCgxKTsNCnM3PXBhcnNlSW50KG1tMTcpK3BhcnNlSW50KG1tMjcpOw0KfTsNCnZhciBzOT1wYXJzZUludCh2YXI5KSoyOw0KaWYoczk+OSl7DQpsZXQgejk9czkudG9TdHJpbmcoKQ0KdmFyIG1tMTk9ejkuY2hhckF0KDApOw0KdmFyIG1tMjk9ejkuY2hhckF0KDEpOw0Kczk9cGFyc2VJbnQobW0xOSkrcGFyc2VJbnQobW0yOSk7DQp9Ow0KdmFyIHMxMT1wYXJzZUludCh2YXIxMSkqMjsNCmlmKHMxMT45KXsNCmxldCB6MTE9czExLnRvU3RyaW5nKCkNCnZhciBtbTExMT16MTEuY2hhckF0KDApOw0KdmFyIG1tMjExPXoxMS5jaGFyQXQoMSk7DQpzMTE9cGFyc2VJbnQobW0xMTEpK3BhcnNlSW50KG1tMjExKTsNCn07DQp2YXIgczEzPXBhcnNlSW50KHZhcjEzKSoyOw0KaWYoczEzPjkpew0KbGV0IHoxMz1zMTMudG9TdHJpbmcoKQ0KdmFyIG1tMTEzPXoxMy5jaGFyQXQoMCk7DQp2YXIgbW0yMTM9ejEzLmNoYXJBdCgxKTsNCnMxMz1wYXJzZUludChtbTExMykrcGFyc2VJbnQobW0yMTMpOw0KfTsNCnZhciBzMTU9cGFyc2VJbnQodmFyMTUpKjI7DQppZihzMTU+OSl7DQpsZXQgejE1PXMxNS50b1N0cmluZygpDQp2YXIgbW0xMTU9ejE1LmNoYXJBdCgwKTsNCnZhciBtbTIxNT16MTUuY2hhckF0KDEpOw0KczE1PXBhcnNlSW50KG1tMTE1KStwYXJzZUludChtbTIxNSk7DQp9Ow0KdmFyIG1vbGk9czErczIrczMrczQrczUrczYrczcrczgrczkrczEwK3MxMStzMTIrczEzK3MxNCtzMTUrczE2Ow0KbW9saT1tb2xpLnRvU3RyaW5nKCk7DQp2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7DQp2YXIgbGlua1RleHQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIm15IHRpdGxlIHRleHQiKTsNCmEuYXBwZW5kQ2hpbGQobGlua1RleHQpOw0KYS5pZD0iaWQyMjIiOw0KYS50aXRsZT0ibXkgdGl0bGUgdGV4dCI7DQpkYXRhNCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2gxMjMiKS5pbm5lckhUTUw7DQphLmhyZWY9Imh0dHBzOi8vYmczZHNlYy5jb20vIitmb2ZmKyI/Uz0iK2RhdGE0KyItIitzaXRlKyImRD0iK3N0cjErIiZOPSIrbm5uOw0KZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZDIyMicpLmNsaWNrKCk7DQoNCnZhciBpZz0wOw0KdmFyIGQ9bmV3IERhdGUoKTsNCnZhciBuPWQuZ2V0U2Vjb25kcygpOw0KZG8gew0KdmFyIGQyPW5ldyBEYXRlKCk7DQp2YXIgbjQ9ZDIuZ2V0U2Vjb25kcygpOw0KaWYobjw1NSl7DQppZihuKzU8bjQpew0KaWc9MzsNCn0NCn0NCmlmKG4+NTQpew0KaWYobis1PG40KzYwKXsNCmlnPTM7DQp9DQp9DQp9DQp3aGlsZSAoaWc8Mik7DQppZihsb29sYT09MSl7DQp9DQp9DQp9DQp9DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmNvbnN0IGRmMT0oc2ExLGVuMSk9PnsNCmNvbnN0IHRlMT0odGV4dCk9PnRleHQuc3BsaXQoIiIpLm1hcCgoYykgPT4gYy5jaGFyQ29kZUF0KDApKTsNCmNvbnN0IGFwMT0oY29kZSk9PnRlMShzYTEpLnJlZHVjZSgoYSwgYikgPT4gYSBeIGIsIGNvZGUpOw0KcmV0dXJuIGVuMQ0KLm1hdGNoKC8uezEsMn0vZykNCi5tYXAoKGhleCk9PnBhcnNlSW50KGhleCwxNikpDQoubWFwKGFwMSkNCi5tYXAoKGNoYXJDb2RlKT0+U3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSkpDQouam9pbigiIik7DQp9Ow0KDQoNCg0K