1fY291bnR9JnBhZ2U9JHt3c3ZjX3BhZ2V9JmtleXdvcmQ9JHtlcX0ke2dlbnJlX2lkfSR7YWZmaWxpYXRlX2lkfSR7c29ydH0gSFRUUC8xLjBcclxuSG9zdDogJHtob3N0X25hbWV9XHJcblxyXG4iOwoJfSBlbHNlaWYgKCRhc3AgPT0gInJha3V0ZW5fdHJhdmVsIikgewoJCSRob3N0X25hbWUgPSAiYXBpLnJha3V0ZW4uY28uanAiOwoJCSR2ZXJzaW9uID0gIjIwMDktMTAtMjAiOwoJCSRkZXZlbG9wZXJfaWQgPSAie0FTUF9BQ0NFU1NfSUR9IjsKCQkkYWZmaWxpYXRlX2lkID0gZ2V0X3NldHRpbmcoIlJBS1VURU5fQUZGSUxJQVRFX0lEIik7CgkJaWYgKHN0cmxlbigkYWZmaWxpYXRlX2lkKSAhPSAwKSB7CgkJCSRhZmZpbGlhdGVfaWQgPSAiJmFmZmlsaWF0ZUlkPSIgLiAkYWZmaWxpYXRlX2lkOwoJCX0KCQlpZiAoc3RybGVuKCRjYXRlZ29yeSkgIT0gMCkgewoJCQkkbWlkZGxlQ2xhc3NDb2RlID0gIiZtaWRkbGVDbGFzc0NvZGU9IiAuICRjYXRlZ29yeTsKCQl9IGVsc2UgewoJCQkkbWlkZGxlQ2xhc3NDb2RlID0gIiI7CgkJfQoJCSRzb3J0ID0gZ2V0X3NldHRpbmcoIlJBS1VURU5fVFJBVkVMX1NPUlQiKTsKCQlpZiAoc3RybGVuKCRzb3J0KSAhPSAwKSB7CgkJCWlmICghaW5fYXJyYXkoJHNvcnQsICRyYWt1dGVuX3RyYXZlbF9zb3J0cykpIHsKCQkJCSRzb3J0ID0gInN0YW5kYXJkIjsKCQkJfQoJCQkkc29ydCA9ICImc29ydD0iIC4gdXJsZW5jb2RlKCRzb3J0KTsKCQl9IGVsc2UgewoJCQkkc29ydCA9ICIiOwoJCX0KCQkkcmVxdWVzdCA9ICJHRVQgL3J3cy8zLjAvcmVzdD9kZXZlbG9wZXJJZD0ke2RldmVsb3Blcl9pZH0mb3BlcmF0aW9uPUtleXdvcmRIb3RlbFNlYXJjaCZ2ZXJzaW9uPSR7dmVyc2lvbn0maGl0cz0ke3dzdmNfcGFnZV9pdGVtX2NvdW50fSZwYWdlPSR7d3N2Y19wYWdlfSZob3RlbFRodW1ibmFpbFNpemU9MiZyZXNwb25zZVR5cGU9bGFyZ2Uma2V5d29yZD0ke2VxfSR7bWlkZGxlQ2xhc3NDb2RlfSR7YWZmaWxpYXRlX2lkfSR7c29ydH0gSFRUUC8xLjBcclxuSG9zdDogJHtob3N0X25hbWV9XHJcblxyXG4iOwoJfSBlbHNlaWYgKCRhc3AgPT0gImFtYXpvbiIpIHsKCQlpZiAoJHdzdmNfcGFnZSA+IDQwMCkgewoJCQlicmVhazsKCQl9CgkJJGhvc3RfbmFtZSA9ICJlY3MuYW1hem9uYXdzLmpwIjsKCQkkc2VhcmNoX2luZGV4ID0gJGNhdGVnb3J5OwoJCWlmIChzdHJsZW4oJHNlYXJjaF9pbmRleCkgPT0gMCkgewoJCQkkc2VhcmNoX2luZGV4ID0gIkJsZW5kZWQiOwoJCX0KCQkkc29ydCA9IGdldF9zZXR0aW5nKCJBTUFaT05fU09SVF8iIC4gJHNlYXJjaF9pbmRleCk7CgkJJHNlY3JldF9hY2Nlc3Nfa2V5ID0gZ2V0X3NldHRpbmcoIkFNQVpPTl9TRUNSRVRfQUNDRVNTX0tFWSIpOwoJCSRwID0gYXJyYXkoKTsKCQkkcFsnQXNzb2NpYXRlVGFnJ10gPSBnZXRfc2V0dGluZygiQU1BWk9OX0FTU09DSUFURV9JRCIpOwoJCSRwWydBV1NBY2Nlc3NLZXlJZCddID0gZ2V0X3NldHRpbmcoIkFNQVpPTl9BQ0NFU1NfS0VZX0lEIik7CgkJJHBbJ0l0ZW1QYWdlJ10gPSAkd3N2Y19wYWdlOwoJCSRwWydLZXl3b3JkcyddID0gJHVxOwoJCSRwWydPcGVyYXRpb24nXSA9ICJJdGVtU2VhcmNoIjsKCQkkcFsnUmVzcG9uc2VHcm91cCddID0gIk1lZGl1bSxSZXZpZXdzLE9mZmVycyI7CgkJJHBbJ1NlYXJjaEluZGV4J10gPSAkc2VhcmNoX2luZGV4OwoJCSRwWydTZXJ2aWNlJ10gPSAiQVdTRUNvbW1lcmNlU2VydmljZSI7CgkJaWYgKHN0cmxlbigkc29ydCkgIT0gMCkgewoJCQkkcFsnU29ydCddID0gJHNvcnQ7CgkJfQoJCSRwWydUaW1lc3RhbXAnXSA9IGdtZGF0ZSgnWS1tLWRcVEg6aTpzXFonKTsKCQkkcFsnVmVyc2lvbiddID0gIjIwMDktMDMtMzEiOwoJCWtzb3J0KCRwKTsKCQkkY3N0ciA9ICcnOwoJCWZvcmVhY2ggKCRwIGFzICRrID0+ICR2KSB7CgkJCSRjc3RyIC49ICcmJyAuICRrIC4gJz0nIC4gdXJsZW5jb2RlX3JmYzM5ODYoJHYpOwoJCX0KCQkkY3N0ciA9IHN1YnN0cigkY3N0ciwgMSk7CgkJJHNzdHIgPSAiR0VUXG4ke2hvc3RfbmFtZX1cbi9vbmNhL3htbFxuJHtjc3RyfSI7CgkJJHNpZ25hdHVyZSA9IHVybGVuY29kZV9yZmMzOTg2KGJhc2U2NF9lbmNvZGUoaGFzaF9obWFjKCdzaGEyNTYnLCAkc3N0ciwgJHNlY3JldF9hY2Nlc3Nfa2V5LCB0cnVlKSkpOwoJCSRyZXF1ZXN0ID0gIkdFVCAvb25jYS94bWw/JHtjc3RyfSZTaWduYXR1cmU9JHtzaWduYXR1cmV9IEhUVFAvMS4wXHJcbkhvc3Q6ICR7aG9zdF9uYW1lfVxyXG5cclxuIjsKCX0gZWxzZWlmICgkYXNwID09ICJkZW5ubyIpIHsKCQkkaG9zdF9uYW1lID0gIndlYnNlcnZpY2UuZC0wNjQuY29tIjsKCQkkaGlkID0gZ2V0X3NldHRpbmcoIkRFTk5PX0hJRCIpOwoJCSRlbWFpbCA9IGdldF9zZXR0aW5nKCJERU5OT19FTUFJTCIpOwoJCWlmIChzdHJsZW4oJGNhdGVnb3J5KSAhPSAwKSB7CgkJCSRjYXRlZ29yeV9pZCA9ICImY2F0ZWdvcnlfaWQ9JHtjYXRlZ29yeX0iOwoJCX0KCQkkc29ydCA9IGdldF9zZXR0aW5nKCJERU5OT19TT1JUIik7CgkJaWYgKHN0cmxlbigkc29ydCkgIT0gMCkgewoJCQkkc29ydCA9ICImc29ydD0iIC4gJHNvcnQ7CgkJfQoJCSRyZXF1ZXN0ID0gIkdFVCAvZ2V0X3RhZy5waHA/aGlkPSR7aGlkfSZlbWFpbD0ke2VtYWlsfSZzd29yZD0ke2VxfSZ0eXBlPWhlYXZ5JnBhZ2U9JHt3c3ZjX3BhZ2V9JHtjYXRlZ29yeV9pZH0ke3NvcnR9IEhUVFAvMS4wXHJcbkhvc3Q6ICR7aG9zdF9uYW1lfVxyXG5cclxuIjsKCX0KCgkkcmVzdWx0ID0gaHR0cF9nZXQoJGhvc3RfbmFtZSwgJHJlcXVlc3QsICRyZXNwb25zZSwgJGFzcCk7CgoJaWYgKCRyZXN1bHQpIHsKCQkkZG9jID0gc3Vic3RyKCRyZXNwb25zZSwgc3RycG9zKCRyZXNwb25zZSwgIlxyXG5cclxuIikgKyA0KTsKCX0gZWxzZSB7CgkJJHVybCA9IGdldF9zZXR0aW5nKCJFUlJPUl9VUkwiKTsKCQlpZiAoc3RybGVuKCR1cmwpICE9IDApIHsKCQkJaGVhZGVyKCJMb2NhdGlvbjogJHVybCIpOwoJCX0gZWxzZSB7CgkJCXByaW50X2Vycm9yKCJFUlJPUiIpOwoJCX0KCQlleGl0OwoJfQoKCSRkb2MgPSBtYl9jb252ZXJ0X2VuY29kaW5nKCRkb2MsICJFVUMtSlAiLCAiVVRGLTgiKTsKCglpZiAoJGFzcCA9PSAicmFrdXRlbiIpIHsKCQkkdG90YWxfcGFnZXMgPSBpbnR2YWwoZ2V0X25vZGUoJGRvYywgInBhZ2VDb3VudCIpKTsKCQkkdG90YWxfcmVzdWx0cyA9IGludHZhbChnZXRfbm9kZSgkZG9jLCAiY291bnQiKSk7CgkJJEl0ZW1zXyA9IGdldF9ub2RlcygkZG9jLCAiSXRlbSIpOwoJfSBlbHNlaWYgKCRhc3AgPT0gInJha3V0ZW5fdHJhdmVsIikgewoJCSR0b3RhbF9yZXN1bHRzID0gaW50dmFsKGdldF9ub2RlKCRkb2MsICJyZWNvcmRDb3VudCIpKTsKCQkkdG90YWxfcGFnZXMgPSBjZWlsKCR0b3RhbF9yZXN1bHRzIC8gJHdzdmNfcGFnZV9pdGVtX2NvdW50KTsKCQkkSXRlbXNfID0gZ2V0X25vZGVzKCRkb2MsICJob3RlbCIpOwoJfSBlbHNlaWYgKCRhc3AgPT0gImFtYXpvbiIpIHsKCQkkdG90YWxfcGFnZXMgPSBpbnR2YWwoZ2V0X25vZGUoJGRvYywgIlRvdGFsUGFnZXMiKSk7CgkJJHRvdGFsX3BhZ2VzID0gbWluKCR0b3RhbF9wYWdlcywgMzIwMCk7CgkJJHRvdGFsX3Jlc3VsdHMgPSBpbnR2YWwoZ2V0X25vZGUoJGRvYywgIlRvdGFsUmVzdWx0cyIpKTsKCQkkSXRlbXNfID0gZ2V0X25vZGVzKCRkb2MsICJJdGVtIik7CgkJJGVycm9ycyA9IGdldF9ub2RlcygkZG9jLCAiRXJyb3IiKTsKCQlpZiAoY291bnQoJGVycm9ycykgIT0gMCkgewoJCQlmb3JlYWNoICgkZXJyb3JzIGFzICRlcnJvcikgewoJCQkJcHJpbnQgIjxmb250IGNvbG9yPXJlZD5FUlJPUjoiIC4gZ2V0X25vZGUoJGVycm9yLCAiQ29kZSIpIC4gIjwvZm9udD48YnI+IjsKCQkJfQoJCX0KCX0gZWxzZWlmICgkYXNwID09ICJkZW5ubyIpIHsKCQkkdG90YWxfcGFnZXMgPSBpbnR2YWwoZ2V0X25vZGUoJGRvYywgIlRvdGFsUGFnZXMiKSk7CgkJJHRvdGFsX3Jlc3VsdHMgPSBpbnR2YWwoZ2V0X25vZGUoJGRvYywgIlRvdGFsUmVzdWx0cyIpKTsKCQkkSXRlbXNfID0gZ2V0X25vZGVzKCRkb2MsICJEZXRhaWxzIik7Cgl9CgoJaWYgKCR0b3RhbF9yZXN1bHRzID09IDApIHsKCQkkdXJsID0gZ2V0X3NldHRpbmcoIk5PX1JFU1VMVF9VUkwiKTsKCQlpZiAoc3RybGVuKCR1cmwpICE9IDApIHsKCQkJaGVhZGVyKCJMb2NhdGlvbjogJHVybCIpOwoJCQlleGl0OwoJCX0KCX0KCQoJaWYgKCRmaXJzdF90aW1lID09IFRSVUUpIHsKCQlmb3IgKCRpID0gJHdzdmNfcGFnZV9pbmRleDsgJGkgPCBjb3VudCgkSXRlbXNfKTsgJGkrKykgewoJCQkkSXRlbXNbXSA9ICRJdGVtc19bJGldOwoJCQkkcGFnZV9pbmRleF8gPSAwOwoJCQkkcGFnZXNbXSA9ICR3c3ZjX3BhZ2U7CgkJCSRwYWdlX2luZGV4ZXNbXSA9ICRpOwoJCX0KCQkkZmlyc3RfdGltZSA9IEZBTFNFOwoJfSBlbHNlIHsKCQlmb3IgKCRpdGVtX2luZGV4ID0gMDsgJGl0ZW1faW5kZXggPCBjb3VudCgkSXRlbXNfKTsgJGl0ZW1faW5kZXgrKykgewoJCQkkSXRlbXNbXSA9ICRJdGVtc19bJGl0ZW1faW5kZXhdOwoJCQkkcGFnZXNbXSA9ICR3c3ZjX3BhZ2U7CgkJCSRwYWdlX2luZGV4ZXNbXSA9ICRpdGVtX2luZGV4OwoJCX0KCX0KCQoJaWYgKGNvdW50KCRJdGVtcykgPiAkcGFnZV9pdGVtX2NvdW50KSB7CgkJJGFycmF5X2NvdW50ID0gY291bnQoJEl0ZW1zKTsKCQlmb3IgKCRpID0gJHBhZ2VfaXRlbV9jb3VudDsgJGkgPCAkYXJyYXlfY291bnQ7ICRpKyspIHsKCQkJdW5zZXQoJEl0ZW1zWyRpXSk7CgkJfQoJCWJyZWFrOwoJfQoJCglpZiAoJHRvdGFsX3BhZ2VzIDw9ICR3c3ZjX3BhZ2UpIHsKCQlicmVhazsKCX0KCQoJdW5zZXQoJEl0ZW1zXyk7CgkKCSR3c3ZjX3BhZ2UrKzsKCQoJc2xlZXAoMSk7Cn0KCmlmIChnZXRfc2V0dGluZygiTElTVF9JVEVNX1NIVUZGTEUiKSA9PSAiMSIpIHsKCSRpdGVtX2NvdW50ID0gY291bnQoJEl0ZW1zKTsKCWZvciAoJGkgPSAwOyAkaSA8ICRpdGVtX2NvdW50OyAkaSsrKSB7CgkJJHIgPSByYW5kKDAsICRpdGVtX2NvdW50IC0gMSk7CgkJaWYgKCRpICE9ICRyKSB7CgkJCSR2YWwgPSAkSXRlbXNbJGldOwoJCQkkSXRlbXNbJGldID0gJEl0ZW1zWyRyXTsKCQkJJEl0ZW1zWyRyXSA9ICR2YWw7CgkJCSR2YWwgPSAkcGFnZXNbJGldOwoJCQkkcGFnZXNbJGldID0gJHBhZ2VzWyRyXTsKCQkJJHBhZ2VzWyRyXSA9ICR2YWw7CgkJCSR2YWwgPSAkcGFnZV9pbmRleGVzWyRpXTsKCQkJJHBhZ2VfaW5kZXhlc1skaV0gPSAkcGFnZV9pbmRleGVzWyRyXTsKCQkJJHBhZ2VfaW5kZXhlc1skcl0gPSAkdmFsOwoJCX0KCX0KfQoKaWYgKCRhc3AgPT0gInJha3V0ZW4iIHx8ICRhc3AgPT0gInJha3V0ZW5fdHJhdmVsIikgewoJJGNhbl9nZXRfY291bnQgPSBtaW4oJHRvdGFsX3Jlc3VsdHMsICR3c3ZjX3BhZ2VfaXRlbV9jb3VudCAqICR0b3RhbF9wYWdlcyk7CgkkdG90YWxfcGFnZXMgPSBjZWlsKCRjYW5fZ2V0X2NvdW50IC8gJHBhZ2VfaXRlbV9jb3VudCk7Cn0gZWxzZWlmICgkYXNwID09ICJhbWF6b24iKSB7CgkkY2FuX2dldF9jb3VudCA9IG1pbigkdG90YWxfcmVzdWx0cywgJHdzdmNfcGFnZV9pdGVtX2NvdW50ICogNDAwKTsKCSR0b3RhbF9wYWdlcyA9IGNlaWwoJGNhbl9nZXRfY291bnQgLyAkcGFnZV9pdGVtX2NvdW50KTsKfSBlbHNlIHsKCSR0b3RhbF9wYWdlcyA9IGNlaWwoJHRvdGFsX3Jlc3VsdHMgLyAkcGFnZV9pdGVtX2NvdW50KTsKfQoKaWYgKCRzdWZmaXggPT0gInhtbCIpIHsKCSRodG0gPSBmaWxlX2dldF9jb250ZW50cygicnNzLnhtbCIpOwoJJGh0bSA9IG1iX2NvbnZlcnRfZW5jb2RpbmcoJGh0bSwgIkVVQy1KUCIsICJVVEYtOCIpOwoJJGh0bSA9IHN0cl9yZXBsYWNlKCI8IS0tSVRFTV8tLT4iLCAiPCEtLUxJU1RfUk9XXy0tPjwhLS1MSVNUX0NPTF8tLT4iLCAkaHRtKTsKCSRodG0gPSBzdHJfcmVwbGFjZSgiPCEtLV9JVEVNLS0+IiwgIjwhLS1fTElTVF9DT0wtLT48IS0tX0xJU1RfUk9XLS0+IiwgJGh0bSk7CgkkY29scyA9IDE7Cgkkb3V0X2VuY29kaW5nID0gIlVURi04IjsKfSBlbHNlIHsKCWlmICgkYXNwID09ICJyYWt1dGVuX3RyYXZlbCIpIHsKCQkkaHRtID0gZmlsZV9nZXRfY29udGVudHMoImxpc3RfcmFrdXRlbl90cmF2ZWwuaHRtbCIpOwoJfSBlbHNlIHsKCQkkaHRtID0gZmlsZV9nZXRfY29udGVudHMoImxpc3QuaHRtbCIpOwoJfQoJJGh0bSA9IG1iX2NvbnZlcnRfZW5jb2RpbmcoJGh0bSwgIkVVQy1KUCIsICJTSklTIik7Cgkkb3V0X2VuY29kaW5nID0gIlNKSVMiOwp9CgokaHRtID0gZ2V0X3N0cl9zcGFuKCJMSVNUX1JPVyIsICRodG0sICRodG1fbGlzdF9yb3cpOwokaHRtX2xpc3Rfcm93ID0gZ2V0X3N0cl9zcGFuKCJMSVNUX0NPTCIsICRodG1fbGlzdF9yb3csICRodG1faXRlbV9kZXRhaWxzKTsKCiRodG0gPSBnZXRfc3RyX3NwYW4oIlBSRVZfUEFHRV9MSU5LIiwgJGh0bSwgJGh0bV9wcmV2X3BhZ2VfbGluayk7CgokaHRtID0gZ2V0X3N0cl9zcGFuKCJORVhUX1BBR0VfTElOSyIsICRodG0sICRodG1fbmV4dF9wYWdlX2xpbmspOwoKJGh0bSA9IGdldF9zdHJfc3BhbigiUFJFVl9QQUdFX0xJTksyIiwgJGh0bSwgJGh0bV9wcmV2X3BhZ2VfbGluazIpOwoKJGh0bSA9IGdldF9zdHJfc3BhbigiTkVYVF9QQUdFX0xJTksyIiwgJGh0bSwgJGh0bV9uZXh0X3BhZ2VfbGluazIpOwoKJGh0bSA9IHN0cl9yZXBsYWNlKCJ7cGFnZV90aXRsZX0iLCAkcSwgJGh0bSk7CgokaHRtID0gc3RyX3JlcGxhY2UoIntjdXJyZW50X3BhZ2V9IiwgJHBhZ2UsICRodG0pOwokaHRtID0gc3RyX3JlcGxhY2UoIntjdXJyZW50X3BhZ2VfZn0iLCBudW1iZXJfZm9ybWF0KCRwYWdlKSwgJGh0bSk7CgokaHRtID0gc3RyX3JlcGxhY2UoInt0b3RhbF9wYWdlc30iLCAkdG90YWxfcGFnZXMsICRodG0pOwokaHRtID0gc3RyX3JlcGxhY2UoInt0b3RhbF9wYWdlc19mfSIsIG51bWJlcl9mb3JtYXQoJHRvdGFsX3BhZ2VzKSwgJGh0bSk7CgokaHRtID0gc3RyX3JlcGxhY2UoInt0b3RhbF9yZXN1bHRzfSIsICR0b3RhbF9yZXN1bHRzLCAkaHRtKTsKJGh0bSA9IHN0cl9yZXBsYWNlKCJ7dG90YWxfcmVzdWx0c19mfSIsIG51bWJlcl9mb3JtYXQoJHRvdGFsX3Jlc3VsdHMpLCAkaHRtKTsKCiRodG0gPSBzdHJfcmVwbGFjZSgie3B1Yl9kYXRlfSIsIGdldF9kYXRlX3N0cmluZygpLCAkaHRtKTsKCiRodG0gPSByZXBsYWNlX2xpbmsoJGh0bSk7CgppZiAoJHBhZ2UgPiAxKSB7CglpZiAoJHBhZ2UgPT0gMikgewoJCSRodG1fcHJldl9wYWdlX2xpbmsgPSBzdHJfcmVwbGFjZSgie3ByZXZfcGFnZX0iLCAkZXEgLiAiLmh0bWwiLCAkaHRtX3ByZXZfcGFnZV9saW5rKTsKCQkkaHRtX3ByZXZfcGFnZV9saW5rMiA9IHN0cl9yZXBsYWNlKCJ7cHJldl9wYWdlfSIsICRlcSAuICIuaHRtbCIsICRodG1fcHJldl9wYWdlX2xpbmsyKTsKCX0gZWxzZSB7CgkJJGh0bV9wcmV2X3BhZ2VfbGluayA9IHN0cl9yZXBsYWNlKCJ7cHJldl9wYWdlfSIsICRlcSAuICJfIiAuIHN0cnZhbCgkcGFnZSAtIDEpIC4gIi5odG1sIiwgJGh0bV9wcmV2X3BhZ2VfbGluayk7CgkJJGh0bV9wcmV2X3BhZ2VfbGluazIgPSBzdHJfcmVwbGFjZSgie3ByZXZfcGFnZX0iLCAkZXEgLiAiXyIgLiBzdHJ2YWwoJHBhZ2UgLSAxKSAuICIuaHRtbCIsICRodG1fcHJldl9wYWdlX2xpbmsyKTsKCX0KCSRodG0gPSBzdHJfcmVwbGFjZSgie1BSRVZfUEFHRV9MSU5LfSIsICRodG1fcHJldl9wYWdlX2xpbmssICRodG0pOwoJJGh0bSA9IHN0cl9yZXBsYWNlKCJ7UFJFVl9QQUdFX0xJTksyfSIsICRodG1fcHJldl9wYWdlX2xpbmsyLCAkaHRtKTsKfSBlbHNlIHsKCSRodG0gPSBzdHJfcmVwbGFjZSgie1BSRVZfUEFHRV9MSU5LfSIsICIiLCAkaHRtKTsKCSRodG0gPSBzdHJfcmVwbGFjZSgie1BSRVZfUEFHRV9MSU5LMn0iLCAiIiwgJGh0bSk7Cn0KCmlmIChpbnR2YWwoJHBhZ2UpIDwgJHRvdGFsX3BhZ2VzKSB7CgkkaHRtX25leHRfcGFnZV9saW5rID0gc3RyX3JlcGxhY2UoIntuZXh0X3BhZ2V9IiwgJGVxIC4gIl8iIC4gc3RydmFsKCRwYWdlICsgMSkgLiAiLmh0bWwiLCAkaHRtX25leHRfcGFnZV9saW5rKTsKCSRodG1fbmV4dF9wYWdlX2xpbmsyID0gc3RyX3JlcGxhY2UoIntuZXh0X3BhZ2V9IiwgJGVxIC4gIl8iIC4gc3RydmFsKCRwYWdlICsgMSkgLiAiLmh0bWwiLCAkaHRtX25leHRfcGFnZV9saW5rMik7CgkkaHRtID0gc3RyX3JlcGxhY2UoIntORVhUX1BBR0VfTElOS30iLCAkaHRtX25leHRfcGFnZV9saW5rLCAkaHRtKTsKCSRodG0gPSBzdHJfcmVwbGFjZSgie05FWFRfUEFHRV9MSU5LMn0iLCAkaHRtX25leHRfcGFnZV9saW5rMiwgJGh0bSk7Cn0gZWxzZSB7CgkkaHRtID0gc3RyX3JlcGxhY2UoIntORVhUX1BBR0VfTElOS30iLCAiIiwgJGh0bSk7CgkkaHRtID0gc3RyX3JlcGxhY2UoIntORVhUX1BBR0VfTElOSzJ9IiwgIiIsICRodG0pOwp9CgokbmFtZXMgPSBhcnJheSgKCSJ0aXRsZSIsCgkiZGV0YWlsX3BhZ2VfdXJsIiwKCSJhZmZpbGlhdGVfdXJsIiwKCSJpbWdfdXJsIiwKCSJpbWdfc191cmwiLAoJImltZ19tX3VybCIsCgkiaW1nX2xfdXJsIiwKCSJwcmljZSIsCgkiZGV0YWlscyIsCgkiaGFuYmFpbW90byIsCgkic2hvcF91cmwiLAoJInJhdGluZyIsCgkicHViX2RhdGUiLAoJInJldmlld19jb3VudCIsCgkiaG90ZWxObyIsCgkiaG90ZWxOYW1lIiwKCSJwb3N0YWxDb2RlIiwKCSJhZGRyZXNzMSIsCgkiYWRkcmVzczIiLAoJInRlbGVwaG9uZU5vIiwKCSJmYXhObyIsCgkiY2hlY2tpblRpbWUiLAoJImxhc3RDaGVja2luVGltZSIsCgkiY2hlY2tvdXRUaW1lIiwKCSJsYXRpdHVkZSIsCgkibG9uZ2l0dWRlIiwKCSJhY2Nlc3MiLAoJInBhcmtpbmdJbmZvcm1hdGlvbiIsCgkiaG90ZWxTcGVjaWFsIiwKCSJyb29tRmFjaWxpdGllcyIsCgkiaG90ZWxGYWNpbGl0aWVzIiwKCSJwcml2aWxlZ2UiLAoJImFib3V0UG9pbnRBZGQiLAoJImFib3V0TWlsZWFnZUFkZCIsCgkiYnJlYWtmYXN0UGxhY2UiLAoJImRpbm5lclBsYWNlIiwKCSJiYXRoVHlwZSIsCgkiYmF0aFF1YWxpdHkiLAoJImJhdGhCZW5lZml0cyIsCgkiYXZhaWxhYmxlQ3JlZGl0Q2FyZCIsCgkiYWJvdXRDcmVkaXRDYXJkTm90ZSIsCgkiYWJvdXRMZWlzdXJlIiwKCSJub3RlIiwKCSJjYW5jZWxQb2xpY3kiLAoJImxpbmd1aXN0aWNMZXZlbCIsCgkiaGFuZGljYXBwZWRGYWNpbGl0aWVzIiwKCSJvdGhlckluZm9ybWF0aW9uIiwKCSJob3RlbEltYWdlVXJsIiwKCSJyb29tSW1hZ2VVcmwiLAoJImhvdGVsTWFwSW1hZ2VVcmwiLAoJImhvdGVsSW5mb3JtYXRpb25VcmwiLAoJInJlc2VydmVUZWxlcGhvbmVObyIsCgkicGxhbkxpc3RVcmwiLAoJImRwUGxhbkxpc3RVcmwiLAoJInJldmlld1VybCIsCgkiaG90ZWxLYW5hTmFtZSIsCgkibmVhcmVzdFN0YXRpb24iLAoJImhvdGVsTWluQ2hhcmdlIiwKCSJob3RlbFRodW1ibmFpbFVybCIsCgkicm9vbVRodW1ibmFpbFVybCIsCgkicmV2aWV3Q291bnQiLAoJInJldmlld0F2ZXJhZ2UiLAoJInVzZXJSZXZpZXciLAoJInNlcnZpY2VBdmVyYWdlIiwKCSJsb2NhdGlvbkF2ZXJhZ2UiLAoJInJvb21BdmVyYWdlIiwKCSJlcXVpcG1lbnRBdmVyYWdlIiwKCSJiYXRoQXZlcmFnZSIsCgkibWVhbEF2ZXJhZ2UiLAoJImFyZWFOYW1lIiwKCSJob3RlbFJvb21OdW0iLAoJImFyZWFTdW0iLAoJImhvdGVsU3BlY2lhbFN1bSIsCgkicm9vbUZpeHR1cmUiLAoJImhvdGVsRml4dHVyZSIsCgkiYWJvdXRNZWFsUGxhY2UiLAoJImFib3V0QmF0aCIsCgkiaGFuZGljYXBwZWRGaXh0dXJlIiwKCSJob3RlbEFmZmlsaWF0ZVVybCIsCgkiaG90ZWxJbWFnZVRhZyIsCgkicm9vbUltYWdlVGFnIiwKCSJob3RlbE1hcEltYWdlVGFnIiwKCSJob3RlbFRodW1ibmFpbFRhZyIsCgkicm9vbVRodW1ibmFpbFRhZyIsCgkiaG90ZWxNaW5DaGFyZ2VGIiwKCSJyZXZpZXdBdmVyYWdlSW1nIiwKCSJzZXJ2aWNlQXZlcmFnZUltZyIsCgkibG9jYXRpb25BdmVyYWdlSW1nIiwKCSJyb29tQXZlcmFnZUltZyIsCgkiZXF1aXBtZW50QXZlcmFnZUltZyIsCgkiYmF0aEF2ZXJhZ2VJbWciLAoJIm1lYWxBdmVyYWdlSW1nIgopOwoKJGh0bV9pdGVtcyA9ICIiOwppZiAoY291bnQoJEl0ZW1zKSAhPSAwKSB7Cglmb3IgKCRpID0gMDsgJGkgPCBjb3VudCgkSXRlbXMpOyAkaSs9JGNvbHMpIHsKCQkkaHRtX2l0ZW1fZGV0YWlsc19hbGwgPSAiIjsKCQlmb3IgKCRqID0gMDsgJGogPCAkY29sczsgJGorKykgewoJCQlpZiAoY291bnQoJEl0ZW1zKSA+ICRpICsgJGopIHsKCQkJCSRpdGVtID0gJEl0ZW1zWyRpICsgJGpdOwoJCQkJaWYgKCRhc3AgPT0gInJha3V0ZW4iKSB7CgkJCQkJJHRpdGxlID0gZ2V0X25vZGUoJGl0ZW0sICJpdGVtTmFtZSIpOwoJCQkJCSRpdGVtQ29kZSA9IGdldF9ub2RlKCRpdGVtLCAiaXRlbUNvZGUiKTsKCQkJCQkkZGV0YWlsX3BhZ2VfdXJsID0gIi4uL2RldGFpbHMvIiAuICRpdGVtQ29kZSAuICIuaHRtbCI7CgkJCQkJaWYgKHN0cmxlbigkY2F0ZWdvcnkpICE9IDApIHsKCQkJCQkJJGRldGFpbF9wYWdlX3VybCA9ICIuLi8iIC4gJGRldGFpbF9wYWdlX3VybDsKCQkJCQl9CgkJCQkJJGRldGFpbF9wYWdlX3VybCA9IGdldF9mdWxsX3VybCgkZGV0YWlsX3BhZ2VfdXJsKTsKCQkJCQkkaW1nX3VybCA9IGdldF9ub2RlKCRpdGVtLCAibWVkaXVtSW1hZ2VVcmwiKTsKCQkJCQkkaW1nX3NfdXJsID0gZ2V0X25vZGUoJGl0ZW0sICJzbWFsbEltYWdlVXJsIik7CgkJCQkJJGltZ19tX3VybCA9ICRpbWdfdXJsOwoJCQkJCSRpbWdfbF91cmwgPSAkaW1nX3VybDsKCQkJCQkkZGV0YWlscyA9IGdldF9ub2RlKCRpdGVtLCAiaXRlbUNhcHRpb24iKTsKCQkJCQkkZGV0YWlscyA9IGh0bWxfdG9fdGV4dCgkZGV0YWlscyk7CgkJCQkJaWYgKG1iX3N0cmxlbigkZGV0YWlscykgPiAkaXRlbV90ZXh0X2xlbikgewoJCQkJCQkkZGV0YWlscyA9IG1iX3N1YnN0cigkZGV0YWlscywgMCwgJGl0ZW1fdGV4dF9sZW4pIC4gIi4uLiI7CgkJCQkJfQoJCQkJCSRwcmljZSA9IG51bWJlcl9mb3JtYXQoZ2V0X25vZGUoJGl0ZW0sICJpdGVtUHJpY2UiKSkgLiAisd8iOwoJCQkJCSRoYW5iYWltb3RvID0gZ2V0X25vZGUoJGl0ZW0sICJzaG9wTmFtZSIpOwoJCQkJCSRzaG9wX3VybCA9IGdldF9ub2RlKCRpdGVtLCAic2hvcFVybCIpOwoJCQkJCSRyYXRpbmcgPSBnZXRfbm9kZSgkaXRlbSwgInJldmlld0F2ZXJhZ2UiKTsKCQkJCQkkYWZmaWxpYXRlX3VybCA9IGdldF9ub2RlKCRpdGVtLCAiYWZmaWxpYXRlVXJsIik7CgkJCQl9IGVsc2VpZiAoJGFzcCA9PSAicmFrdXRlbl90cmF2ZWwiKSB7CgkJCQkJJHRhZ3MgPSBhcnJheSgKCQkJCQkJImhvdGVsTm8iLAoJCQkJCQkiaG90ZWxOYW1lIiwKCQkJCQkJInBvc3RhbENvZGUiLAoJCQkJCQkiYWRkcmVzczEiLAoJCQkJCQkiYWRkcmVzczIiLAoJCQkJCQkidGVsZXBob25lTm8iLAoJCQkJCQkiZmF4Tm8iLAoJCQkJCQkiY2hlY2tpblRpbWUiLAoJCQkJCQkibGFzdENoZWNraW5UaW1lIiwKCQkJCQkJImNoZWNrb3V0VGltZSIsCgkJCQkJCSJsYXRpdHVkZSIsCgkJCQkJCSJsb25naXR1ZGUiLAoJCQkJCQkiYWNjZXNzIiwKCQkJCQkJInBhcmtpbmdJbmZvcm1hdGlvbiIsCgkJCQkJCSJob3RlbFNwZWNpYWwiLAoJCQkJCQkicm9vbUZhY2lsaXRpZXMiLAoJCQkJCQkiaG90ZWxGYWNpbGl0aWVzIiwKCQkJCQkJInByaXZpbGVnZSIsCgkJCQkJCSJhYm91dFBvaW50QWRkIiwKCQkJCQkJImFib3V0TWlsZWFnZUFkZCIsCgkJCQkJCSJicmVha2Zhc3RQbGFjZSIsCgkJCQkJCSJkaW5uZXJQbGFjZSIsCgkJCQkJCSJiYXRoVHlwZSIsCgkJCQkJCSJiYXRoUXVhbGl0eSIsCgkJCQkJCSJiYXRoQmVuZWZpdHMiLAoJCQkJCQkiYXZhaWxhYmxlQ3JlZGl0Q2FyZCIsCgkJCQkJCSJhYm91dENyZWRpdENhcmROb3RlIiwKCQkJCQkJImFib3V0TGVpc3VyZSIsCgkJCQkJCSJub3RlIiwKCQkJCQkJImNhbmNlbFBvbGljeSIsCgkJCQkJCSJsaW5ndWlzdGljTGV2ZWwiLAoJCQkJCQkiaGFuZGljYXBwZWRGYWNpbGl0aWVzIiwKCQkJCQkJIm90aGVySW5mb3JtYXRpb24iLAoJCQkJCQkiaG90ZWxJbWFnZVVybCIsCgkJCQkJCSJyb29tSW1hZ2VVcmwiLAoJCQkJCQkiaG90ZWxNYXBJbWFnZVVybCIsCgkJCQkJCSJob3RlbEluZm9ybWF0aW9uVXJsIiwKCQkJCQkJInJlc2VydmVUZWxlcGhvbmVObyIsCgkJCQkJCSJwbGFuTGlzdFVybCIsCgkJCQkJCSJkcFBsYW5MaXN0VXJsIiwKCQkJCQkJInJldmlld1VybCIsCgkJCQkJCSJob3RlbEthbmFOYW1lIiwKCQkJCQkJIm5lYXJlc3RTdGF0aW9uIiwKCQkJCQkJImhvdGVsTWluQ2hhcmdlIiwKCQkJCQkJImhvdGVsVGh1bWJuYWlsVXJsIiwKCQkJCQkJInJvb21UaHVtYm5haWxVcmwiLAoJCQkJCQkicmV2aWV3Q291bnQiLAoJCQkJCQkicmV2aWV3QXZlcmFnZSIsCgkJCQkJCSJ1c2VyUmV2aWV3IiwKCQkJCQkJInNlcnZpY2VBdmVyYWdlIiwKCQkJCQkJImxvY2F0aW9uQXZlcmFnZSIsCgkJCQkJCSJyb29tQXZlcmFnZSIsCgkJCQkJCSJlcXVpcG1lbnRBdmVyYWdlIiwKCQkJCQkJImJhdGhBdmVyYWdlIiwKCQkJCQkJIm1lYWxBdmVyYWdlIiwKCQkJCQkJImFyZWFOYW1lIiwKCQkJCQkJImhvdGVsUm9vbU51bSIKCQkJCQkpOwoJCQkJCWZvcmVhY2ggKCR0YWdzIGFzICR0YWcpIHsKCQkJCQkJZXZhbCgiXCQke3RhZ30gPSBnZXRfbm9kZShcJGl0ZW0sICcke3RhZ30nKTsiKTsKCQkJCQkJZXZhbCgiXCQke3RhZ30gPSBodG1sdW5lc2NhcGUoXCQke3RhZ30pOyIpOwoJCQkJCX0KCQkJCQkkcm9vbUZhY2lsaXRpZXMgPSBpbXBsb2RlKCKhpiIsIGdldF9ub2Rlcygkcm9vbUZhY2lsaXRpZXMsICJpdGVtIikpOwoJCQkJCSRyb29tRml4dHVyZSA9ICRyb29tRmFjaWxpdGllczsKCQkJCQkkaG90ZWxGYWNpbGl0aWVzID0gaW1wbG9kZSgioaYiLCBnZXRfbm9kZXMoJGhvdGVsRmFjaWxpdGllcywgIml0ZW0iKSk7CgkJCQkJJGhvdGVsRml4dHVyZSA9ICRob3RlbEZhY2lsaXRpZXM7CgkJCQkJJGFib3V0TWVhbFBsYWNlID0gIsSrv6mhpyIgLiAkYnJlYWtmYXN0UGxhY2UgLiAioaHNvL+poaciIC4gJGRpbm5lclBsYWNlOwoJCQkJCSRhYm91dEJhdGggPSAivO/O4KGnIiAuICRiYXRoVHlwZSAuICKhocD0vMGhpyIgLiAkYmF0aFF1YWxpdHkgLiAioaG4+se9oaciIC4gJGJhdGhCZW5lZml0czsKCQkJCQkkYXZhaWxhYmxlQ3JlZGl0Q2FyZCA9IGltcGxvZGUoIqGmIiwgZ2V0X25vZGVzKCRhdmFpbGFibGVDcmVkaXRDYXJkLCAiY2FyZCIpKTsKCQkJCQkkaGFuZGljYXBwZWRGYWNpbGl0aWVzID0gaW1wbG9kZSgioaYiLCBnZXRfbm9kZXMoJGhhbmRpY2FwcGVkRmFjaWxpdGllcywgIml0ZW0iKSk7CgkJCQkJJGhhbmRpY2FwcGVkRml4dHVyZSA9ICRoYW5kaWNhcHBlZEZhY2lsaXRpZXM7CgkJCQkJJHVzZXJSZXZpZXcgPSBodG1sZGVjb2RlKCR1c2VyUmV2aWV3KTsKCQkJCQkkaG90ZWxNaW5DaGFyZ2VGID0gbnVtYmVyX2Zvcm1hdCgkaG90ZWxNaW5DaGFyZ2UpOwoJCQkJCSRob3RlbEFmZmlsaWF0ZVVybCA9ICRob3RlbEluZm9ybWF0aW9uVXJsOwoJCQkJCSRpbWdfdXJsID0gJGhvdGVsSW1hZ2VVcmw7CgkJCQkJJGltZ19zX3VybCA9ICRpbWdfdXJsOwoJCQkJCSRpbWdfbV91cmwgPSAkaW1nX3VybDsKCQkJCQkkaW1nX2xfdXJsID0gJGltZ191cmw7CgkJCQkJJHRpdGxlID0gJGhvdGVsTmFtZTsKCQkJCQkkZGV0YWlscyA9IGh0bWxfdG9fdGV4dCgkaG90ZWxTcGVjaWFsKTsKCQkJCQkkcHJpY2UgPSBudW1iZXJfZm9ybWF0KCRob3RlbE1pbkNoYXJnZSkgLiAisd+hwSI7CgkJCQkJJGhhbmJhaW1vdG8gPSAkaG90ZWxOYW1lOwoJCQkJCSRzaG9wX3VybCA9ICIiOwoJCQkJCSRyYXRpbmcgPSAkcmV2aWV3QXZlcmFnZTsKCQkJCQkkcmV2aWV3X2NvdW50ID0gJHJldmlld0NvdW50OwoJCQkJCSRob3RlbEltYWdlVGFnID0gaW1nX3RhZygkaG90ZWxJbWFnZVVybCk7CgkJCQkJJHJvb21JbWFnZVRhZyA9IGltZ190YWcoJHJvb21JbWFnZVVybCk7CgkJCQkJJGhvdGVsTWFwSW1hZ2VUYWcgPSBpbWdfdGFnKCRob3RlbE1hcEltYWdlVXJsKTsKCQkJCQkkaG90ZWxUaHVtYm5haWxUYWcgPSBpbWdfdGFnKCRob3RlbFRodW1ibmFpbFVybCk7CgkJCQkJJHJvb21UaHVtYm5haWxUYWcgPSBpbWdfdGFnKCRyb29tVGh1bWJuYWlsVXJsKTsKCQkJCQkkYXJlYVN1bSA9ICRhcmVhTmFtZTsKCQkJCQkkaG90ZWxTcGVjaWFsU3VtID0gJGhvdGVsU3BlY2lhbDsKCQkJCQkkcmV2aWV3QXZlcmFnZUltZyA9IGdldF9yYXRpbmdfaW1nKCRyZXZpZXdBdmVyYWdlLCAkY2F0ZWdvcnkpOwoJCQkJCSRzZXJ2aWNlQXZlcmFnZUltZyA9IGdldF9yYXRpbmdfaW1nKCRzZXJ2aWNlQXZlcmFnZSwgJGNhdGVnb3J5KTsKCQkJCQkkbG9jYXRpb25BdmVyYWdlSW1nID0gZ2V0X3JhdGluZ19pbWcoJGxvY2F0aW9uQXZlcmFnZSwgJGNhdGVnb3J5KTsKCQkJCQkkcm9vbUF2ZXJhZ2VJbWcgPSBnZXRfcmF0aW5nX2ltZygkcm9vbUF2ZXJhZ2UsICRjYXRlZ29yeSk7CgkJCQkJJGVxdWlwbWVudEF2ZXJhZ2VJbWcgPSBnZXRfcmF0aW5nX2ltZygkZXF1aXBtZW50QXZlcmFnZSwgJGNhdGVnb3J5KTsKCQkJCQkkYmF0aEF2ZXJhZ2VJbWcgPSBnZXRfcmF0aW5nX2ltZygkYmF0aEF2ZXJhZ2UsICRjYXRlZ29yeSk7CgkJCQkJJG1lYWxBdmVyYWdlSW1nID0gZ2V0X3JhdGluZ19pbWcoJG1lYWxBdmVyYWdlLCAkY2F0ZWdvcnkpOwoJCQkJCSRkZXRhaWxfcGFnZV91cmwgPSAiLi4vZGV0YWlscy8iIC4gJGhvdGVsTm8gLiAiLmh0bWwiOwoJCQkJCWlmIChzdHJsZW4oJGNhdGVnb3J5KSAhPSAwKSB7CgkJCQkJCSRkZXRhaWxfcGFnZV91cmwgPSAiLi4vIiAuICRkZXRhaWxfcGFnZV91cmw7CgkJCQkJfQoJCQkJCSRkZXRhaWxfcGFnZV91cmwgPSBnZXRfZnVsbF91cmwoJGRldGFpbF9wYWdlX3VybCk7CgkJCQkJaWYgKCRpdGVtX3RleHRfbGVuICE9IDAgJiYgbWJfc3RybGVuKCRkZXRhaWxzKSA+ICRpdGVtX3RleHRfbGVuKSB7CgkJCQkJCSRkZXRhaWxzID0gbWJfc3Vic3RyKCRkZXRhaWxzLCAwLCAkaXRlbV90ZXh0X2xlbikgLiAiLi4uIjsKCQkJCQl9CgkJCQkJJGFmZmlsaWF0ZV91cmwgPSAkaG90ZWxJbmZvcm1hdGlvblVybDsKCQkJCX0gZWxzZWlmICgkYXNwID09ICJhbWF6b24iKSB7CgkJCQkJJHRpdGxlID0gZ2V0X25vZGUoJGl0ZW0sICJUaXRsZSIpOwoJCQkJCSRBU0lOID0gZ2V0X25vZGUoJGl0ZW0sICJBU0lOIik7CgkJCQkJJGRldGFpbF9wYWdlX3VybCA9ICIuLi9kZXRhaWxzLyIgLiAkQVNJTiAuICIuaHRtbCI7CgkJCQkJaWYgKHN0cmxlbigkY2F0ZWdvcnkpICE9IDApIHsKCQkJCQkJJGRldGFpbF9wYWdlX3VybCA9ICIuLi8iIC4gJGRldGFpbF9wYWdlX3VybDsKCQkJCQl9CgkJCQkJJGRldGFpbF9wYWdlX3VybCA9IGdldF9mdWxsX3VybCgkZGV0YWlsX3BhZ2VfdXJsKTsKCQkJCQkkaW1nX3VybCA9IGdldF9ub2RlKGdldF9ub2RlKCRpdGVtLCAiTWVkaXVtSW1hZ2UiKSwgIlVSTCIpOwoJCQkJCWlmIChzdHJsZW4oJGltZ191cmwpID09IDApIHsKCQkJCQkJJGltZ191cmwgPSAiLi4vLi4vaW1nL25vaW1hZ2VfbS5qcGciOwoJCQkJCQlpZiAoc3RybGVuKCRjYXRlZ29yeSkgIT0gMCkgewoJCQkJCQkJJGltZ191cmwgPSAiLi4vIiAuICRpbWdfdXJsOwoJCQkJCQl9CgkJCQkJfQoJCQkJCSRpbWdfc191cmwgPSBnZXRfbm9kZShnZXRfbm9kZSgkaXRlbSwgIlNtYWxsSW1hZ2UiKSwgIlVSTCIpOwoJCQkJCWlmIChzdHJsZW4oJGltZ19zX3VybCkgPT0gMCkgewoJCQkJCQkkaW1nX3NfdXJsID0gIi4uLy4uL2ltZy9ub2ltYWdlX3MuanBnIjsKCQkJCQkJaWYgKHN0cmxlbigkY2F0ZWdvcnkpICE9IDApIHsKCQkJCQkJCSRpbWdfc191cmwgPSAiLi4vIiAuICRpbWdfc191cmw7CgkJCQkJCX0KCQkJCQl9CgkJCQkJJGltZ19tX3VybCA9ICRpbWdfdXJsOwoJCQkJCSRpbWdfbF91cmwgPSBnZXRfbm9kZShnZXRfbm9kZSgkaXRlbSwgIkxhcmdlSW1hZ2UiKSwgIlVSTCIpOwoJCQkJCWlmIChzdHJsZW4oJGltZ19sX3VybCkgPT0gMCkgewoJCQkJCQkkaW1nX2xfdXJsID0gIi4uLy4uL2ltZy9ub2ltYWdlX2wuanBnIjsKCQkJCQkJaWYgKHN0cmxlbigkY2F0ZWdvcnkpICE9IDApIHsKCQkJCQkJCSRpbWdfbF91cmwgPSAiLi4vIiAuICRpbWdfbF91cmw7CgkJCQkJCX0KCQkJCQl9CgkJCQkJJGRldGFpbHMgPSBnZXRfbm9kZShnZXRfbm9kZSgkaXRlbSwgIkVkaXRvcmlhbFJldmlldyIpLCAiQ29udGVudCIpOwoJCQkJCWlmIChzdHJsZW4oJGRldGFpbHMpID09IDApIHsKCQkJCQkJJGZlYXR1cmVzID0gZ2V0X25vZGVzKCRpdGVtLCAiRmVhdHVyZSIpOwoJCQkJCQlmb3IgKCR6ID0gMDsgJHogPCBjb3VudCgkZmVhdHVyZXMpOyAkeisrKSB7CgkJCQkJCQkkZGV0YWlscyAuPSAkZmVhdHVyZXNbJGldIC4gIlxuIjsKCQkJCQkJfQoJCQkJCX0KCQkJCQkkZGV0YWlscyA9IGh0bWxfdG9fdGV4dCgkZGV0YWlscyk7CgkJCQkJaWYgKG1iX3N0cmxlbigkZGV0YWlscykgPiAkaXRlbV90ZXh0X2xlbikgewoJCQkJCQkkZGV0YWlscyA9IG1iX3N1YnN0cigkZGV0YWlscywgMCwgJGl0ZW1fdGV4dF9sZW4pIC4gIi4uLiI7CgkJCQkJfQoJCQkJCSRkZXRhaWxzID0gc3RyX3JlcGxhY2UoIlxuIiwgIjxicj4iLCAkZGV0YWlscyk7CgkJCQkJJHByaWNlID0gZ2V0X25vZGUoZ2V0X25vZGUoJGl0ZW0sICJMaXN0UHJpY2UiKSwgIkFtb3VudCIpOwoJCQkJCWlmIChzdHJsZW4oJHByaWNlKSA9PSAwKSB7CgkJCQkJCSRwcmljZSA9ICKlqqG8pdel86XXpemlpKW5IjsKCQkJCQl9IGVsc2UgewoJCQkJCQkkcHJpY2UgPSBudW1iZXJfZm9ybWF0KCRwcmljZSkgLiAisd8iOwoJCQkJCX0KCQkJCQkkaGFuYmFpbW90byA9IGdldF9ub2RlKCRpdGVtLCAiUHVibGlzaGVyIik7CgkJCQkJJHNob3BfdXJsID0gIiI7CgkJCQkJJHJhdGluZyA9IGdldF9ub2RlKGdldF9ub2RlKCRpdGVtLCAiQ3VzdG9tZXJSZXZpZXdzIiksICJBdmVyYWdlUmF0aW5nIik7CgkJCQkJJGFmZmlsaWF0ZV91cmwgPSBnZXRfbm9kZSgkaXRlbSwgIkRldGFpbFBhZ2VVUkwiKTsKCQkJCX0gZWxzZWlmICgkYXNwID09ICJkZW5ubyIpIHsKCQkJCQkkdGl0bGUgPSBnZXRfbm9kZSgkaXRlbSwgIlByb2R1Y3ROYW1lIik7CgkJCQkJJHByb2R1Y3RfcGhwID0gZ2V0X25vZGUoJGRvYywgIlByb2R1Y3RQSFAiKTsKCQkJCQkkaXRlbV9pZCA9IGdldF9ub2RlKCRpdGVtLCAiSXRlbUlEIik7CgkJCQkJJG9yaWQgPSBnZXRfbm9kZSgkaXRlbSwgIk9SSUQiKTsKCQkJCQkkZGV0YWlsX3BhZ2VfdXJsID0gIi4uL2RldGFpbHMvIiAuICRjYXRlZ29yeSAuICJfIiAuICRlcSAuICJfIiAgICAgLiBzdHJ2YWwoJHBhZ2VzWyRpICsgJGpdKSAuICJfIiAuIHN0cnZhbCgkcGFnZV9pbmRleGVzWyRpICsgJGpdKSAuICIuaHRtbCI7CgkJCQkJaWYgKHN0cmxlbigkY2F0ZWdvcnkpICE9IDApIHsKCQkJCQkJJGRldGFpbF9wYWdlX3VybCA9ICIuLi8iIC4gJGRldGFpbF9wYWdlX3VybDsKCQkJCQl9CgkJCQkJJGRldGFpbF9wYWdlX3VybCA9IGdldF9mdWxsX3VybCgkZGV0YWlsX3BhZ2VfdXJsKTsKCQkJCQkkYWZmaWxpYXRlX3VybCA9ICRwcm9kdWN0X3BocCAuICI/cGlkPSIgLiAkaXRlbV9pZCAuICImb2lkPSIgLiAkb3JpZDsKCQkJCQlpZiAoc3RybGVuKCRoaWQpICE9IDApIHsKCQkJCQkJJGFmZmlsaWF0ZV91cmwgLj0gIiZoaWQ9IiAuICRoaWQ7CgkJCQkJfQoJCQkJCSRpbWdfdXJsID0gZ2V0X25vZGUoJGl0ZW0sICJJbWFnZVVybE1lZGl1bSIpOwoJCQkJCSRpbWdfc191cmwgPSBnZXRfbm9kZSgkaXRlbSwgIkltYWdlVXJsU21hbGwiKTsKCQkJCQkkaW1nX21fdXJsID0gJGltZ191cjsKCQkJCQkkaW1nX2xfdXJsID0gZ2V0X25vZGUoJGl0ZW0sICJJbWFnZVVybExhcmdlIik7CgkJCQkJJGRldGFpbHMgPSBnZXRfbm9kZSgkaXRlbSwgIkl0ZW1EZXRhaWwiKTsKCQkJCQkkZGV0YWlscyA9IGh0bWxfdG9fdGV4dCgkZGV0YWlscyk7CgkJCQkJaWYgKG1iX3N0cmxlbigkZGV0YWlscykgPiAkaXRlbV90ZXh0X2xlbikgewoJCQkJCQkkZGV0YWlscyA9IG1iX3N1YnN0cigkZGV0YWlscywgMCwgJGl0ZW1fdGV4dF9sZW4pIC4gIi4uLiI7CgkJCQkJfQoJCQkJCSRwcmljZSA9IG51bWJlcl9mb3JtYXQoZ2V0X25vZGUoJGl0ZW0sICJQcmljZSIpKSAuICKx3yI7CgkJCQkJJGhhbmJhaW1vdG8gPSBnZXRfbm9kZSgkaXRlbSwgIk1hbnVmYWN0dXJlciIpOwoJCQkJCSRzaG9wX3VybCA9ICIiOwoJCQkJCSRyYXRpbmcgPSAiIjsKCQkJCX0KCQkJCSR0aXRsZSA9IGh0bWx1bmVzY2FwZSgkdGl0bGUpOwoJCQl9IGVsc2UgewoJCQkJJHRpdGxlID0gIiI7CgkJCQkkZGV0YWlsX3BhZ2VfdXJsID0gIiI7CgkJCQkkaW1nX3VybCA9ICIuLi8uLi9pbWcvbm9pbWFnZV9tLmpwZyI7CgkJCQlpZiAoc3RybGVuKCRjYXRlZ29yeSkgIT0gMCkgewoJCQkJCSRpbWdfdXJsID0gIi4uLyIgLiAkaW1nX3VybDsKCQkJCX0KCQkJCSRpbWdfc191cmwgPSAiLi4vLi4vaW1nL25vaW1hZ2Vfcy5qcGciOwoJCQkJaWYgKHN0cmxlbigkY2F0ZWdvcnkpICE9IDApIHsKCQkJCQkkaW1nX3NfdXJsIDtlbnMgPSBzcGxpdCgiXG4iLCAkY29udGVudHMpOwoJCSRpbmRleCA9IHJhbmQoMCwgY291bnQoJHRva2VucykgLSAxKTsKCQkkaHRtID0gc3RyX3JlcGxhY2UoJHRhZywgJHRva2Vuc1skaW5kZXhdLCAkaHRtKTsKCX0KCXJldHVybiAkaHRtOwp9CgpmdW5jdGlvbiByZW1vdmVfaHRtbF90YWcoJHN0cikgewoJJHBvczAgPSAwOwoJd2hpbGUgKFRSVUUpIHsKCQkkcG9zMCA9IHN0cnBvcygkc3RyLCAnPCcsICRwb3MwKTsKCQlpZiAoJHBvczAgPT09IEZBTFNFKSB7CgkJCWJyZWFrOwoJCX0KCQkkcG9zMSA9IHN0cnBvcygkc3RyLCAnPicsICRwb3MwKTsKCQlpZiAoJHBvczEgPT09IEZBTFNFKSB7CgkJCWJyZWFrOwoJCX0KCQkkc3RyID0gc3Vic3RyKCRzdHIsIDAsICRwb3MwKSAuIHN1YnN0cigkc3RyLCAkcG9zMSArIDEpOwoJfQoJcmV0dXJuICRzdHI7Cn0KCmZ1bmN0aW9uIGh0bWxfdG9fdGV4dCgkc3RyKSB7Cgkkc3RyID0gaHRtbHVuZXNjYXBlKCRzdHIpOwoJJHN0ciA9IHN0cl9yZXBsYWNlKCJcciIsICIiLCAkc3RyKTsKCSRzdHIgPSBzdHJfcmVwbGFjZSgiXG4iLCAiIiwgJHN0cik7Cgkkc3RyID0gc3RyX3JlcGxhY2UoIjxicj4iLCAiI2JyIyIsICRzdHIpOwoJJHN0ciA9IHN0cl9yZXBsYWNlKCI8QlI+IiwgIiNiciMiLCAkc3RyKTsKCSRzdHIgPSBzdHJfcmVwbGFjZSgiPEJyPiIsICIjYnIjIiwgJHN0cik7Cgkkc3RyID0gcmVtb3ZlX2h0bWxfdGFnKCRzdHIpOwoJJHN0ciA9IHN0cl9yZXBsYWNlKCIjYnIjIiwgIjxicj4iLCAkc3RyKTsKCXdoaWxlIChUUlVFKSB7CgkJJHBvcyA9IHN0cnBvcygkc3RyLCAiPGJyPjxicj4iKTsKCQlpZiAoJHBvcyA9PT0gRkFMU0UpIHsKCQkJYnJlYWs7CgkJfQoJCSRzdHIgPSBzdHJfcmVwbGFjZSgiPGJyPjxicj4iLCAiPGJyPiIsICRzdHIpOwoJfQoJcmV0dXJuICRzdHI7Cn0KCmZ1bmN0aW9uIGdldF9mdWxsX3VybCgkcmVscGF0aCkgewoJJHJlcXVlc3RfdXJpID0gJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl07CglpZiAoc3RycG9zKCRyZWxwYXRoLCAiLi4vLi4vIikgPT09IDApIHsKCQkkZGlycyA9IDI7CgkJJGZuYW1lID0gc3Vic3RyKCRyZWxwYXRoLCA2KTsKCX0gZWxzZSBpZiAoc3RycG9zKCRyZWxwYXRoLCAiLi4vIikgPT09IDApIHsKCQkkZGlycyA9IDE7CgkJJGZuYW1lID0gc3Vic3RyKCRyZWxwYXRoLCAzKTsKCX0gZWxzZSB7CgkJJGRpcnMgPSAwOwoJCSRmbmFtZSA9ICRyZWxwYXRoOwoJfQoJJHRva2VucyA9IHNwbGl0KCIvIiwgJHJlcXVlc3RfdXJpKTsKCSR0b2tlbl9jb3VudCA9IGNvdW50KCR0b2tlbnMpOwoJJHBhdGggPSAiIjsKCWZvciAoJGkgPSAwOyAkaSA8ICR0b2tlbl9jb3VudCAtICRkaXJzIC0gMTsgJGkrKykgewoJCSRwYXRoIC49ICR0b2tlbnNbJGldIC4gIi8iOwoJfQoJJH