ZGlmZiAtLWdpdCBhL3Jvb3Rmcy9zYmluL2dsb2JhbC5zaCBiL3Jvb3Rmcy9zYmluL2dsb2JhbC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wNTAzOGZkCi0tLSAvZGV2L251bGwKKysrIGIvcm9vdGZzL3NiaW4vZ2xvYmFsLnNoCkBAIC0wLDAgKzEsOTAgQEAKKyMhL2Jpbi9zaAorCisjCisjuMO9xbG+08PT2rvxyKHSu9CpzajTw7XEbnax5MG/vLC2qNLluau5srqvyv3KudPDCisjCisKKyMjIyO78cihzajTw252seTBvyMjIyMKK3BhdGhfY29uZj1gbnYgZ2V0IHBhdGhfY29uZmAKK3Rlc3RfbG9nPWBudiBnZXQgdGVsb2dfcGF0aF9jYXBgCitpZiBbICIkdGVzdF9sb2ciID09ICIiIF07IHRoZW4KKwl0ZXN0X2xvZz1gbnYgZ2V0IHBhdGhfbG9nYCJ0ZS5sb2ciCitmaQorcGF0aF90bXA9YG52IGdldCBwYXRoX3RtcGAKK3BhdGhfcm89YG52IGdldCBwYXRoX3JvYAorCisjI2dldExhbklmTmFtZQorbGFuX2lmPWBudiBnZXQgbGFuX25hbWVgCisjZWNobyAiTGFuSWZOYW1lPSRsYW5faWYiCisjI2dldExhbklmTmFtZQorbGFuX2lmX2NhcD1gbnYgZ2V0IGxhbl9uYW1lX2NhcGAKKworIyNnZXRXYW5JZk5hbWUKK3Bzd2FuX25hbWU9YG52IGdldCBwc3dhbmAKK2RlZl9jaWRfdG1wPWBudiBnZXQgZGVmYXVsdF9jaWRgCitwc3dhbl9pZj0kcHN3YW5fbmFtZSRkZWZfY2lkX3RtcAorZXRod2FuX2lmPWBudiBnZXQgZXRod2FuYAord2lmaXdhbl9pZj1gbnYgZ2V0IHdpZml3YW5gCitwc3dhbl9jYXBfbmFtZT1gbnYgZ2V0IHBzd2FuX2NhcGAKK3Bzd2FuX2NhcF9pZj0kcHN3YW5fY2FwX25hbWUkZGVmX2NpZF90bXAKKyNpcHY0CitkZWZ3YW5faWY9YG52IGdldCBkZWZhdWx0X3dhbl9uYW1lYAorZGVmd2FuX3JlbD1gbnYgZ2V0IGRlZmF1bHRfd2FuX3JlbGAKKworI2lwdjYKK2RlZndhbjZfaWY9YG52IGdldCBkZWZhdWx0X3dhbjZfbmFtZWAKK2RlZndhbjZfcmVsPWBudiBnZXQgZGVmYXVsdF93YW42X3JlbGAKKworIyMjI7mrubK6r8r9IyMjIworI7Lp1dK21NOmZGhjcGO9+LPMusWyosmxy8AKK3VkaGNwY19raWxsKCkKK3sKKwlwcyA+ICR7cGF0aF90bXB9L3VkaGNwYy5zaC4kJAorCXVkaGNwY19waWQ9YGF3ayAnQkVHSU57dGVtcDE9IiciJHt3YW5faWZ9IiciO3RlbXAyPSInJHBhdGhfc2gvdWRoY3BjLnNoJyJ9e2lmKGluZGV4KCQwLHRlbXAxKT4wICYmIGluZGV4KCQwLHRlbXAyKT4wKXtwcmludCAkMX19JyAke3BhdGhfdG1wfS91ZGhjcGMuc2guJCRgCisJcm0gLWYgJHtwYXRoX3RtcH0vdWRoY3BjLnNoLiQkCisJWyAtbiAiJHVkaGNwY19waWQiIF0gJiYgeyBraWxsIC05ICR1ZGhjcGNfcGlkOyBlY2hvICJJbmZvOiBraWxsIHVkaGNwYyAkdWRoY3BjX3BpZCAiID4+ICR0ZXN0X2xvZyA7IH0KK30KKyOy6dXSttTTpnBwcG9lvfizzLrFsqLJscvACitwcHBvZV9raWxsKCkKK3sKKwlwcyA+ICR7cGF0aF90bXB9L3BwcG9lY2QuJHt3YW5faWZ9LiQkCisJcHBwb2VfcGlkPWBhd2sgJ0JFR0lOe3RlbXAxPSInIiR7d2FuX2lmfSInIjt0ZW1wMj0icHBwb2VjZCJ9e2lmKGluZGV4KCQwLHRlbXAxKT4wICYmIGluZGV4KCQwLHRlbXAyKT4wKXtwcmludCAkMX19JyAke3BhdGhfdG1wfS9wcHBvZWNkLiR7d2FuX2lmfS4kJGAKKwlybSAtZiAke3BhdGhfdG1wfS9wcHBvZWNkLiR7d2FuX2lmfS4kJAorCVsgLW4gIiRwcHBvZV9waWQiIF0gJiYgeyBraWxsIC05ICRwcHBvZV9waWQ7IGVjaG8gIkluZm86IGtpbGwgcHBwb2VjZCAkcHBwb2VfcGlkICIgPj4gJHRlc3RfbG9nIDsgfQorfQorI7Lp1dK21NOmZGhjcDZzvfizzLrFsqLJscvACitkaGNwNnNfa2lsbCgpCit7CisJcHMgPiAke3BhdGhfdG1wfS8ke2RoY3A2c19jb25mIyMqL30uJCQKKwlkaGNwNnNfcGlkPWBhd2sgJ0JFR0lOe3RlbXAxPSInIiR7ZGhjcDZzX2NvbmZ9IiciO3RlbXAyPSJkaGNwNnMifXtpZihpbmRleCgkMCx0ZW1wMSk+MCAmJiBpbmRleCgkMCx0ZW1wMik+MCl7cHJpbnQgJDF9fScgJHtwYXRoX3RtcH0vJHtkaGNwNnNfY29uZiMjKi99LiQkYAorCXJtIC1mICR7cGF0aF90bXB9LyR7ZGhjcDZzX2NvbmYjIyovfS4kJAorICAgIFsgLW4gIiRkaGNwNnNfcGlkIiBdICYmIHsga2lsbCAtOSAkZGhjcDZzX3BpZDsgZWNobyAiSW5mbzoga2lsbCBkaGNwNnMgJGRoY3A2c19waWQgIiA+PiAkdGVzdF9sb2cgOyB9Cit9CisKKyOy6dXSttTTpnJhZHZkvfizzLrFsqLJscvACityYWR2ZF9raWxsKCkKK3sKKwlwcyA+ICR7cGF0aF90bXB9LyR7cmFkdmRfY29uZiMjKi99LiQkCisJcmFkdmRfcGlkPWBhd2sgJ0JFR0lOe3RlbXAxPSInIiR7cmFkdmRfY29uZn0iJyI7dGVtcDI9InJhZHZkIn17aWYoaW5kZXgoJDAsdGVtcDEpPjAgJiYgaW5kZXgoJDAsdGVtcDIpPjApe3ByaW50ICQxfX0nICR7cGF0aF90bXB9LyR7cmFkdmRfY29uZiMjKi99LiQkYAorCXJtIC1mICR7cGF0aF90bXB9LyR7cmFkdmRfY29uZiMjKi99LiQkCisgICAgWyAtbiAiJHJhZHZkX3BpZCIgXSAmJiB7IGtpbGwgLTkgJHJhZHZkX3BpZDsgZWNobyAiSW5mbzoga2lsbCByYWR2ZCAkcmFkdmRfcGlkICIgPj4gJHRlc3RfbG9nIDsgfQorfQorCisjsunV0rbU06ZkaGNwNmO9+LPMusWyosmxy8AKK2RoY3A2Y19raWxsKCkKK3sKKwlwcyA+ICR7cGF0aF90bXB9L2RoY3A2Yy4ke3dhbl9pZn0uJCQKKwlkaGNwNmNfcGlkPWBhd2sgJ0JFR0lOe3RlbXAxPSInIiR7d2FuX2lmfSInIjt0ZW1wMj0iZGhjcDZjIn17aWYoaW5kZXgoJDAsdGVtcDEpPjAgJiYgaW5kZXgoJDAsdGVtcDIpPjApe3ByaW50ICQxfX0nICR7cGF0aF90bXB9L2RoY3A2Yy4ke3dhbl9pZn0uJCRgCisJcm0gLWYgJHtwYXRoX3RtcH0vZGhjcDZjLiR7d2FuX2lmfS4kJAorICAgIFsgLW4gIiRkaGNwNmNfcGlkIiBdICYmIHsga2lsbCAtOSAkZGhjcDZjX3BpZDsgZWNobyAiSW5mbzoga2lsbCBkaGNwNmMgJGRoY3A2Y19waWQgIiA+PiAkdGVzdF9sb2cgOyB9Cit9CisKKyOy6dXSttTTpm5kcL34s8y6xbKiybHLwAorbmRwX2tpbGwoKQoreworCXBzID4gJHtwYXRoX3RtcH0vJHtuZHBfbG9nIyMqL30uJCQKKwluZHBfcGlkPWBhd2sgJ0JFR0lOe3RlbXAxPSInIiR7bmRwX2xvZ30iJyI7dGVtcDI9Inp0ZV9uZHAifXtpZihpbmRleCgkMCx0ZW1wMSk+MCAmJiBpbmRleCgkMCx0ZW1wMik+MCl7cHJpbnQgJDF9fScgJHtwYXRoX3RtcH0vJHtuZHBfbG9nIyMqL30uJCRgCisJcm0gLWYgJHtwYXRoX3RtcH0vJHtuZHBfbG9nIyMqL30uJCQKKyAgICBbIC1uICIkbmRwX3BpZCIgXSAmJiB7IGtpbGwgLTkgJG5kcF9waWQ7IGVjaG8gIkluZm86IGtpbGwgbmRwICRuZHBfcGlkICIgPj4gJHRlc3RfbG9nIDsgfQorfQorCg==