ZGlmZiAtLWdpdCBhL3NlY3VyZS9pbmV0ZC5jIGIvc2VjdXJlL2luZXRkLmMKaW5kZXggZDAxNTYwMi4uOTIxYTQxZSAxMDA2NDQKLS0tIGEvc2VjdXJlL2luZXRkLmMKKysrIGIvc2VjdXJlL2luZXRkLmMKQEAgLTI2MywxNyArMjYzLDEzIEBACiAgKiBEZWNvZGUgYSBzdHJpbmcgZnJvbSBhIFVEUCBwYWNrZXQuCiAgKiBSZXR1cm5zOiAgIFRoZSBhY3R1YWwgdmFsdWUgb2YgdGhlIGFyZ3VtZW50IChlaXRoZXIgaW50IG9yIHN0cmluZykKICAqLwotbWl4ZWQgZGVjb2RlKHN0cmluZyBhcmcpIHsKLQorc3RyaW5nfGludCBkZWNvZGUoc3RyaW5nIGFyZykKK3sKICAgICBpZiAoc2l6ZW9mKGFyZykgJiYgYXJnWzBdID09ICckJykKICAgICAgICAgcmV0dXJuIGFyZ1sxLi5dOwotI2lmZGVmIFJFU1RSSUNURURfQ0FTVFMKLSAgICBpZiAodG9fc3RyaW5nKHRvX2ludChhcmcpKSA9PSBhcmcpCisgICAgZWxzZSBpZiAoKGFyZyAmICIwMTIzNDU2Nzg5IikgPT0gYXJnKQogICAgICAgICByZXR1cm4gdG9faW50KGFyZyk7Ci0jZWxzZQotICAgIGlmICgoc3RyaW5nKSgoaW50KWFyZykgPT0gYXJnKQotICAgICAgICByZXR1cm4gKGludClhcmc7Ci0jZW5kaWYKKwogICAgIHJldHVybiBhcmc7CiB9CiAKQEAgLTU2OSwxNyArNTY1LDIxIEBACiAjZW5kaWYKIAogc3RyaW5nIGVuY29kZShtaXhlZCBhcmcpIHsKKyAgICAvLyBPYmpla3RuYW1lbiBtaXQgbmljaHQtQVNDSUkgaGllciBpc3QgaW4gYWxsZW4gRmFlbGxlbiBkb29mLCB3ZW5uIHNpZQorICAgIC8vIGtvZW5uZW4gYXVjaCBtaXQgVHJhbnNsaXRlcmF0aW9uIG5pY2h0IG1laHIgdmVybHVzdGZyZWkgenVydWVjaworICAgIC8vIGtvbnZlcnRpZXJ0IHdlcmRlbi4uLgogICAgIGlmIChvYmplY3RwKGFyZykpCi0gICAgICAgIHJldHVybiBvYmplY3RfbmFtZShhcmcpOwotICAgIGlmIChzdHJpbmdwKGFyZykgJiYgc2l6ZW9mKGFyZykgJiYKLSAgICAgICAgKGFyZ1swXSA9PSAnJCcgfHwKLSNpZmRlZiBSRVNUUklDVEVEX0NBU1RTCi0gICAgdG9fc3RyaW5nKHRvX2ludChhcmcpKSA9PSAoc3RyaW5nKWFyZykpCi0jZWxzZQotICAgIChzdHJpbmcpdG9faW50KGFyZykgPT0gKHN0cmluZylhcmcpKQotI2VuZGlmCi0gICAgICAgIHJldHVybiAiJCIgKyBhcmc7Ci0gICAgcmV0dXJuIHRvX3N0cmluZyhhcmcpOworICAgICAgICBhcmcgPSBvYmplY3RfbmFtZShhcmcpOworICAgIGVsc2UgaWYgKCFzdHJpbmdwKGFyZykpCisgICAgICAgIGFyZyA9IHRvX3N0cmluZyhhcmcpOworCisgICAgLy8gZmFlbmd0IGVzIG1pdCAkIGFuIG9kZXIgaXN0IGVzIG5lIHphaGwgKGFscyBzdHJpbmcsIGQuaC4gZW50aGFlbHQgbnVyCisgICAgLy8gMC05KT8gRGFubiBtdXNzIG5lbiAkIGRhdm9yLgorICAgIC8vIFRPRE86IE1obW0uIE9kZXIgdmllbGxlaWNodCBkb2NoIHBlciBSZWdFeHA/CisgICAgaWYgKCAoYXJnWzBdID09ICckJykgfHwgKChhcmcgJiAiMDEyMzQ1Njc4OSIpID09IGFyZykpCisgICAgICAgIGFyZyA9ICckJyArIGFyZzsKKworICAgIHJldHVybiBhcmc7CiB9CiAKIHN0cmluZyBlbmNvZGVfcGFja2V0KG1hcHBpbmcgZGF0YSkgewpkaWZmIC0tZ2l0IGEvc2VjdXJlL21hc3Rlci5jIGIvc2VjdXJlL21hc3Rlci5jCmluZGV4IDIyZDQ2NzUuLmE2Nzc5MDIgMTAwNjQ0Ci0tLSBhL3NlY3VyZS9tYXN0ZXIuYworKysgYi9zZWN1cmUvbWFzdGVyLmMKQEAgLTMwLDcgKzMwLDYgQEAKIC8vZm9yIGxpbWl0ZWQsIHNldF9saW1pdCgpLCBldGMuIEFicy4gUGZhZCBub2V0aWcsIGRhIG5vY2gga2VpbiBJbmNsdWRlLUhvb2sKICNpbmNsdWRlICIvc3lzL3J0bGltaXRzLmgiCiAjaW5jbHVkZSAiL3N5cy9kZWJ1Z19pbmZvLmgiCi0jaW5jbHVkZSAiL3N5cy9kZWJ1Z19tZXNzYWdlLmgiCiAjaW5jbHVkZSAiL3N5cy9jb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiL3N5cy9yZWdleHAuaCIKIApAQCAtMjIwLDExICsyMTksMTMgQEAKICAgUmVsb2FkSW5zZWN1cmVGaWxlKCk7CiAKICAgaWYgKGVmbGFnKSB7Ci0gICAgd3JpdGUoIi1lIGFuZ2VnZWJlbiAtPiBQcmVsb2FkaW5nIHVudGVyZHJ1ZWNrdCAuLi5cbiIpOworICAgIGRlYnVnX21lc3NhZ2UoCisgICAgICAgICJlcGlsb2coKTogLWUgYW5nZWdlYmVuIC0+IFByZWxvYWRpbmcgdW50ZXJkcnVlY2t0IC4uLlxuIiwKKyAgICAgICAgRE1TR19TVEFNUCk7CiAgICAgcmV0dXJuIDA7CiAgIH0KIAotICBwcmludGYoIlByZWxvYWRpbmcgZ2VzdGFydGV0OiAlc1xuXG4iLGN0aW1lKHRpbWUoKSkpOworICBkZWJ1Z19tZXNzYWdlKCJQcmVsb2FkaW5nIGdlc3RhcnRldC5cbiIsIERNU0dfU1RBTVApOwogCiAgIC8vRmlsZXMgZnVlcnMgUHJlbG9hZGluZyB1bmQgUmVnaW9uZW4gaG9sZW4KICAgZmlsZXM9ZXhwbG9kZV9maWxlcygiL3N0ZC9wcmVsb2FkX2ZpbGUiKSArIGV4cGxvZGVfZmlsZXMoIi9kL3ByZWxvYWRfZmlsZSIpOwpAQCAtMjMyLDkgKzIzMyw3IEBACiAKICAgZm9yIChpPXNpemVvZihkb21haW5zKTtpLS07KQogICAgIGZpbGVzKz1leHBsb2RlX2ZpbGVzKCIvZC8iK2RvbWFpbnNbaV0rIi9wcmVsb2FkX2ZpbGUiKTsKLSAgCi0gIHdyaXRlKCJcbiIpOwotIAorCiAgIHJldHVybiBmaWxlczsKIH0KIApAQCAtMjUwLDEzICsyNDksMTIgQEAKICAgLy8gS2VpbiBCZXNpdHplciAtPiBNZWxkdW5nIGF1c2dlYmVuLCBmZXJ0aWcKICAgaWYgKCEobmFtZT1jcmVhdG9yX2ZpbGUoZmlsZSkpKQogICB7Ci0gICAgcHJpbnRmKCJLZWluIEJlc2l0emVyIGdlZnVuZGVuIGZ1ZXIgRGF0ZWkgJXMuXG4iLGZpbGUpOworICAgIGRlYnVnX21lc3NhZ2UoCisgICAgICAgIHNwcmludGYoInByZWxvYWQ6IEtlaW4gQmVzaXR6ZXIgZ2VmdW5kZW4gZnVlciBEYXRlaSAlcy5cbiIsZmlsZSksCisgICAgICAgIERNU0dfU1RET1VUfERNU0dfU1RERVJSKTsKICAgICByZXR1cm47CiAgIH0KIAotICAvLyBEYXRlaSB1bmQgQmVzaXR6ZXIgYXVzZ2ViZW4KLSAgcHJpbnRmKCIlLTUwcyUtMTVzIixmaWxlLG5hbWUpOwotCiAgIGVmdW46OmNvbmZpZ3VyZV9vYmplY3QodGhpc19vYmplY3QoKSwgT0NfRVVJRCwgbmFtZSk7CiAKICAgLy8gRGFubiBtYWwgbGFkZW4gLi4gZGFiZWkgWmVpdCBtZXNzZW4KQEAgLTI2OSwxMSArMjY3LDE0IEBACiAgIGVyciA9IGNhdGNoKGxpbWl0ZWQoIydsb2FkX29iamVjdCwoezUwMDAwMDB9KSxmaWxlKSk7CiAKICAgaWYgKGVyciAhPSAwKQotICAgIHByaW50ZigiXG5GZWhsZXIgYmVpbSBMYWRlbiB2b24gJXM6XG4lc1xuIixmaWxlLGVycik7CisgICAgZGVidWdfbWVzc2FnZShzcHJpbnRmKCJcbkZlaGxlciBiZWltIExhZGVuIHZvbiAlczpcbiVzXG4iLGZpbGUsZXJyKSwKKyAgICAgICAgICAgICAgICAgIERNU0dfU1RET1VUfERNU0dfU1RERVJSKTsKICAgZWxzZQogICB7CisgICAgLy8gRGF0ZWksIEJlc2l0emVyIHVuZCBMYWRlemVpdCBhdXNnZWJlbgogICAgIHplaXQ9YXBwbHkoIycrLHJ1c2FnZSgpWzAuLjFdKS16ZWl0OwotICAgIHByaW50ZigiKCUyZC4lOjAyZCBzKVxuIix6ZWl0LzEwMDAsemVpdCUxMDAwKTsKKyAgICBkZWJ1Z19tZXNzYWdlKHNwcmludGYoIiUtNTBzJS0xNXMgKCUyZC4lOjAyZCBzKVxuIiwKKyAgICAgICAgICBmaWxlLCBuYW1lLCB6ZWl0LzEwMDAsemVpdCUxMDAwKSk7CiAgIH0KIAogICAvLyBOb2NoIEVVSUQgenVydWVja3NldHplbgpAQCAtMjk1LDIzICsyOTYsMjEgQEAKICAgICAtLWxvYWRpbmdfc2ltdWxfZWZ1bnM7CiAgICAgcmV0dXJuICh7U0lNVUxfRUZVTl9GSUxFfSk7CiAgIH0KLSAgCi0gIHdyaXRlKCJGYWlsZWQgdG8gbG9hZCBzaW11bCBlZnVuICIgKyBTSU1VTF9FRlVOX0ZJTEUgKyAiXG4iKTsKKwogICBkZWJ1Z19tZXNzYWdlKCJGYWlsZWQgdG8gbG9hZCBzaW11bCBlZnVuICIgKyBTSU1VTF9FRlVOX0ZJTEUgKwotICAgICAgIiAiICsgZXJyLCBETVNHX1NURE9VVCB8IERNU0dfTE9HRklMRSk7CisgICAgICAiICIgKyBlcnIsIERNU0dfU1RET1VUIHwgRE1TR19MT0dGSUxFIHwgRE1TR19TVEFNUCk7CiAKICAgaWYgKCEoZXJyPWNhdGNoKFNQQVJFX1NJTVVMX0VGVU5fRklMRS0+c3RhcnRfc2ltdWxfZWZ1bigpKSkgKSB7CiAgICAgLS1sb2FkaW5nX3NpbXVsX2VmdW5zOwogICAgIHJldHVybiAoe1NQQVJFX1NJTVVMX0VGVU5fRklMRX0pOwogICB9Ci0gIAotICB3cml0ZSgiRmFpbGVkIHRvIGxvYWQgc3BhcmUgc2ltdWwgZWZ1biIgKyBTUEFSRV9TSU1VTF9FRlVOX0ZJTEUgKyAiXG4iKTsKLSAgZGVidWdfbWVzc2FnZSgiRmFpbGVkIHRvIGxvYWQgc3BhcmUgc2ltdWwgZWZ1biAiICsgU1BBUkVfU0lNVUxfRUZVTl9GSUxFICsKLSAgICAgICIgIiArIGVyciwgRE1TR19TVERPVVQgfCBETVNHX0xPR0ZJTEUpOwogCi0gCisgIGRlYnVnX21lc3NhZ2UoIkZhaWxlZCB0byBsb2FkIHNwYXJlIHNpbXVsIGVmdW4gIiArIFNQQVJFX1NJTVVMX0VGVU5fRklMRSArCisgICAgICAiICIgKyBlcnIsIERNU0dfU1RET1VUIHwgRE1TR19MT0dGSUxFIHwgRE1TR19TVEFNUCk7CisKKwogICBlZnVuOjpzaHV0ZG93bigpOwotICAKKwogICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvc2VjdXJlL21hc3Rlci5oIGIvc2VjdXJlL21hc3Rlci5oCmluZGV4IDUxZjU3OWIuLjI0MmE2NDAgMTAwNjQ0Ci0tLSBhL3NlY3VyZS9tYXN0ZXIuaAorKysgYi9zZWN1cmUvbWFzdGVyLmgKQEAgLTIzLDcgKzIzLDExIEBACiAjZGVmaW5lIFBfREVGQVVMVF9OT1RJRllfRkFJTCAiZGVmYXVsdF9ub3RpZnlfZmFpbCIKICNlbmRpZgogCisjaW5jbHVkZSAiL3N5cy9mdW5jdGlvbmxpc3QuaCIKKyNpbmNsdWRlICIvc3lzL2RlYnVnX21lc3NhZ2UuaCIKKwogI2luY2x1ZGUgIi9zZWN1cmUvY29uZmlnLmgiCisjaW5jbHVkZSAiL3NlY3VyZS93aXpsZXZlbHMuaCIKIAogI2luY2x1ZGUgIi9zeXMvdXNlcmluZm8uaCIKICNpbmNsdWRlICIvc3lzL3BsYXllci9iYXNlLmgiCkBAIC0zMiwxMCArMzYsNiBAQAogI2luY2x1ZGUgIi9zeXMvd2l6bGlzdC5oIgogI2luY2x1ZGUgIi9zeXMvZGFlbW9uLmgiCiAjaW5jbHVkZSAiL3N5cy9tYWlsLmgiCi0jaW5jbHVkZSAiL3N5cy9kcml2ZXJfaG9vay5oIgotI2luY2x1ZGUgIi9zeXMvZnVuY3Rpb25saXN0LmgiCi0KLSNpbmNsdWRlICIvc2VjdXJlL3dpemxldmVscy5oIgogCiAvLyNkZWZpbmUgREVCVUcoeCkKICNpZm5kZWYgREVCVUcKZGlmZiAtLWdpdCBhL3NlY3VyZS9tYXN0ZXIvbWlzYy5jIGIvc2VjdXJlL21hc3Rlci9taXNjLmMKaW5kZXggOGNkYmI4Yy4uOWJiMjc0ZiAxMDA2NDQKLS0tIGEvc2VjdXJlL21hc3Rlci9taXNjLmMKKysrIGIvc2VjdXJlL21hc3Rlci9taXNjLmMKQEAgLTYxLDcgKzYxLDkgQEAKICAgICBpZiAoIXN0cmluZ3AoZXhwbG9kZWRbaV0pIHx8IGV4cGxvZGVkW2ldPT0iIiB8fCBleHBsb2RlZFtpXVswXT09JyMnKQogICAgICAgZXhwbG9kZWRbaV09MDsKICAgZXhwbG9kZWQtPSh7MH0pOwotICBwcmludGYoIiUtMzBzOiAlM2QgT2JqZWt0JXNcbiIsZmlsZSxpPXNpemVvZihleHBsb2RlZCksKGk9PTE/IiI6ImUiKSk7CisgIGRlYnVnX21lc3NhZ2UoCisgICAgICBzcHJpbnRmKCIlLTMwczogJTNkIE9iamVrdCVzXG4iLGZpbGUsaT1zaXplb2YoZXhwbG9kZWQpLChpPT0xPyIiOiJlIikpLAorICAgICAgRE1TR19TVEFNUCk7CiAgIHJldHVybiBleHBsb2RlZDsKIH0KIApkaWZmIC0tZ2l0IGEvc2VjdXJlL21hc3Rlci9wbGF5ZXJzX2RlbnkuYyBiL3NlY3VyZS9tYXN0ZXIvcGxheWVyc19kZW55LmMKaW5kZXggNjQ3MTI0My4uMjBjZjdjYiAxMDA2NDQKLS0tIGEvc2VjdXJlL21hc3Rlci9wbGF5ZXJzX2RlbnkuYworKysgYi9zZWN1cmUvbWFzdGVyL3BsYXllcnNfZGVueS5jCkBAIC04OCw3ICs4OCw3IEBACiAgIGlmICggZXh0ZXJuX2NhbGwoKSAmJiBjYWxsX3NlZnVuKCJzZWN1cmVfbGV2ZWwiKSA8IEFSQ0hfTFZMICkKICAgICByZXR1cm47CiAKLSAgd3JpdGUoIkxvYWRpbmcgUExEZW55bGlzdHNcbiIpOworICBkZWJ1Z19tZXNzYWdlKCJMb2FkaW5nIFBMRGVueWxpc3RzXG4iLCBETVNHX1NUQU1QKTsKIAogICBpZiAoc3RyaW5ncCh0bXA9cmVhZF9maWxlKFdISVRFTElTVCkpKSB7CiAgICAgLy8gc2F2ZWZpbGUgZXhpc3RzCmRpZmYgLS1naXQgYS9zZWN1cmUvbWF0ZXJpYWxkYi5jIGIvc2VjdXJlL21hdGVyaWFsZGIuYwppbmRleCAxMmRjZTA2Li4xMWQzNTU0IDEwMDY0NAotLS0gYS9zZWN1cmUvbWF0ZXJpYWxkYi5jCisrKyBiL3NlY3VyZS9tYXRlcmlhbGRiLmMKQEAgLTE5LDYgKzE5LDggQEAKICNwcmFnbWEgbm9fc2hhZG93CiAjcHJhZ21hIHBlZGFudGljCiAKKyNpbmNsdWRlIDxkZWJ1Z19tZXNzYWdlLmg+CisKIC8vIERpZSBQcm9wZXJ0eWRlZmluaXRpb24gcmVpbmhvbGVuCiAjaW5jbHVkZSA8bGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDx0aGluZy9kZXNjcmlwdGlvbi5oPgpAQCAtMjcsNiArMjksNyBAQAogI2luY2x1ZGUgPHRoaW5nL21hdGVyaWFsLmg+CiAjaW5jbHVkZSA8cGxheWVyL2Rlc2NyaXB0aW9uLmg+CiAjaW5jbHVkZSA8cnRsaW1pdHMuaD4KKyNpbmNsdWRlIDxsaXZpbmcvY29tbS5oPgogCiAvLyBCYXNpc3ZlcnplaWNobmlzIGRlciBNYXRlcmlhbGllbgogI2RlZmluZSBNQVRfRElSICIvZG9jL21hdGVyaWFscyIKQEAgLTQ3LDggKzUwLDEyIEBACiAjZGVmaW5lIFBfTUVNQkVSUyAibWVtYmVycyIKICNkZWZpbmUgUF9NR19GUkFDVElPTlMgIm1nX2ZyYWN0aW9ucyIKIAotI2RlZmluZSBMT0dfRVJST1IoeCkgaWYoZmluZF9wbGF5ZXIoInJhc2NoYXVhIikmJmZpbmRfcGxheWVyKCJyYXNjaGF1YSIpLT5RdWVyeVByb3AoIm1kYi1kZWJ1ZyIpKXRlbGxfb2JqZWN0KGZpbmRfcGxheWVyKCJyYXNjaGF1YSIpLCJNREItRXJyb3I6Iit4KQotI2RlZmluZSBMT0dfV0FSTih4KSBpZihmaW5kX3BsYXllcigicmFzY2hhdWEiKSYmZmluZF9wbGF5ZXIoInJhc2NoYXVhIiktPlF1ZXJ5UHJvcCgibWRiLWRlYnVnIikpdGVsbF9vYmplY3QoZmluZF9wbGF5ZXIoInJhc2NoYXVhIiksIk1EQi1XYXJuOiIreCkKKyNkZWZpbmUgTE9HX0VSUk9SKHgpIGlmICh0aGlzX3BsYXllcigpKSB0aGlzX3BsYXllcigpLT5SZWNlaXZlTXNnKFwKKyAgICB4LCBNVF9ERUJVR3xNU0dfRE9OVF9JR05PUkUsIE1BX1VOS05PV04sICJNREItRXJyb3I6ICIsXAorICAgICJNYXREQiIpCisjZGVmaW5lIExPR19XQVJOKHgpIGlmICh0aGlzX3BsYXllcigpKSB0aGlzX3BsYXllcigpLT5SZWNlaXZlTXNnKFwKKyAgICB4LCBNVF9ERUJVR3xNU0dfRE9OVF9JR05PUkUsIE1BX1VOS05PV04sICJNREItV2FybjogIixcCisgICAgIk1hdERCIikKIAogLy8gUHJvdG90eXBlczoKIC8vIChMaWVmZXJ0IGRlbiBBbnRlaWwgZGVyIE1hdGVyaWFsZ3J1cHBlIGdycCBhbiBtYXRzKQpAQCAtMzcwLDcgKzM3Nyw3IEBACiAgIG1hdHMgPSBBbGxNYXRlcmlhbHMoKTsKICAgdHh0ICs9IHNwcmludGYoIiVAcyIsIG1hcChncnBzLCAjJ2dlbl9tYXRlcmlhbF9oX21hdGVyaWFsc19ncnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1hdHMpKTsKLSAgLy8g3GJyaWdnZWJsaWVuZSBNYXRlcmlhbGllbiBhdXNnZWJlbgorICAvLyBVZWJyaWdnZWJsaWVuZSBNYXRlcmlhbGllbiBhdXNnZWJlbgogICB0eHQgKz0gIi8vIHNvbnN0aWdlIE1hdGVyaWFsaWVuOlxuIjsKICAgdHh0ICs9IHNwcmludGYoIiVAcyIsIG1hcChtYXRzLCAjJ2dlbl9tYXRlcmlhbF9oX21hdGVyaWFsKSk7CiAgIHJldHVybiB0eHQ7CkBAIC00MjYsNyArNDMzLDcgQEAKICAgbWF0cyA9IEFsbE1hdGVyaWFscygpOwogICB0eHQgPSBzcHJpbnRmKCIlQHMiLCBtYXAoZ3JwcywgIydnZW5fbWF0ZXJpYWxfbGlzdF9tYXRlcmlhbHNfZ3JwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1hdHMpKTsKLSAgLy8g3GJyaWdnZWJsaWVuZSBNYXRlcmlhbGllbiBhdXNnZWJlbgorICAvLyBVZWJyaWdnZWJsaWVuZSBNYXRlcmlhbGllbiBhdXNnZWJlbgogICB0eHQgKz0gInNvbnN0aWdlIE1hdGVyaWFsaWVuOlxuIjsKICAgdHh0ICs9IHNwcmludGYoIiVAcyIsIG1hcChtYXRzLCAjJ2dlbl9tYXRlcmlhbF9saXN0X21hdGVyaWFsKSk7CiAgIHdyaXRlX2ZpbGUoZm4sIHR4dCkgfHwKQEAgLTQ2NywxNSArNDc0LDIzIEBACiAgICAgaWYgKCFzdHJpbmdwKGZuKSB8fCAhc2l6ZW9mKGZuKSkKICAgICAgIGZuID0gRE9DX0RJUigibWF0ZXJpYWxsaXN0ZSIpOwogICAgIGlmIChmaWxlX3NpemUoZm4pID49IDApIHsKLSAgICAgIHByaW50ZigiRGF0ZWkgJXMgZXhpc3RpZXJ0IGJlcmVpdHMsIGxvZXNjaGUgc2llXG4iLCBmbik7CisgICAgICBkZWJ1Z19tZXNzYWdlKAorICAgICAgICAgIHNwcmludGYoIkRhdGVpICVzIGV4aXN0aWVydCBiZXJlaXRzLCBsb2VzY2hlIHNpZVxuIiwgZm4pLAorICAgICAgICAgIERNU0dfU1RBTVApOwogICAgICAgcm0oZm4pOwogICAgIH0KLSAgICBpZiAod3JpdGVfZmlsZShmbiwgIk1hdGVyaWFsIExpc3RlXG49PT09PT09PT09PT09PVxuXG4iKSkgeworICAgIGlmICh3cml0ZV9maWxlKGZuLCAiTWF0ZXJpYWwgTGlzdGVcbj09PT09PT09PT09PT09XG5cbiIpKQorICAgIHsKICAgICAgIGR1bXBfbWF0ZXJpYWwoZm4pOwogICAgICAgd3JpdGVfZmlsZShmbiwgZ2VuX2RvY19mb290KCJtYXRlcmlhbGdydXBwZW4iKSk7Ci0gICAgICBwcmludGYoIk1hdGVyaWFsbGlzdGUgZXJmb2xncmVpY2ggaW4gRGF0ZWkgJXMgZ2VzY2hyaWViZW5cbiIsIGZuKTsKLSAgICB9IGVsc2UKLSAgICAgIHByaW50ZigiS29ubnRlIExpc3RlIG5pY2h0IGluIERhdGVpICVzIHNjaHJlaWJlbiwgQWJicnVjaFxuIiwgZm4pOworICAgICAgZGVidWdfbWVzc2FnZSgKKyAgICAgICAgc3ByaW50ZigiTWF0ZXJpYWxsaXN0ZSBlcmZvbGdyZWljaCBpbiBEYXRlaSAlcyBnZXNjaHJpZWJlblxuIiwgZm4pLAorICAgICAgICBETVNHX1NUQU1QKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgZGVidWdfbWVzc2FnZSgKKyAgICAgICAgICBzcHJpbnRmKCJLb25udGUgTGlzdGUgbmljaHQgaW4gRGF0ZWkgJXMgc2NocmVpYmVuLCBBYmJydWNoXG4iLCBmbiksCisgICAgICAgICAgRE1TR19TVEFNUCk7CiAgIH0KIH0KIApAQCAtNDkwLDE1ICs1MDUsMjMgQEAKICAgICBpZiAoIXN0cmluZ3AoZm4pIHx8ICFzaXplb2YoZm4pKQogICAgICAgZm4gPSBET0NfRElSKCJtYXRlcmlhbGdydXBwZW4iKTsKICAgICBpZiAoZmlsZV9zaXplKGZuKSA+PSAwKSB7Ci0gICAgICBwcmludGYoIkRhdGVpICVzIGV4aXN0aWVydCBiZXJlaXRzLCBsb2VzY2hlIHNpZVxuIiwgZm4pOworICAgICAgZGVidWdfbWVzc2FnZSgKKyAgICAgICAgICBzcHJpbnRmKCJEYXRlaSAlcyBleGlzdGllcnQgYmVyZWl0cywgbG9lc2NoZSBzaWVcbiIsIGZuKSwKKyAgICAgICAgICBETVNHX1NUQU1QKTsKICAgICAgIHJtKGZuKTsKICAgICB9Ci0gICAgaWYgKHdyaXRlX2ZpbGUoZm4sICJNYXRlcmlhbGdydXBwZW5cbj09PT09PT09PT09PT09PVxuIikpIHsKKyAgICBpZiAod3JpdGVfZmlsZShmbiwgIk1hdGVyaWFsZ3J1cHBlblxuPT09PT09PT09PT09PT09XG4iKSkKKyAgICB7CiAgICAgICBtYXAoc29ydF9hcnJheShtX2luZGljZXMobWF0ZXJpYWxfZ3JvdXBzKSwgIyc+KSwgIydkdW1wX2dyb3VwLCBmbik7CiAgICAgICB3cml0ZV9maWxlKGZuLCBnZW5fZG9jX2Zvb3QoIm1hdGVyaWFsbGlzdGUiKSk7Ci0gICAgICBwcmludGYoIk1hdGVyaWFsbGlzdGUgZXJmb2xncmVpY2ggaW4gRGF0ZWkgJXMgZ2VzY2hyaWViZW5cbiIsIGZuKTsKLSAgICB9IGVsc2UKLSAgICAgIHByaW50ZigiS29ubnRlIExpc3RlIG5pY2h0IGluIERhdGVpICVzIHNjaHJlaWJlbiwgQWJicnVjaFxuIiwgZm4pOworICAgICAgZGVidWdfbWVzc2FnZSgKKyAgICAgICAgc3ByaW50ZigiTWF0ZXJpYWxsaXN0ZSBlcmZvbGdyZWljaCBpbiBEYXRlaSAlcyBnZXNjaHJpZWJlblxuIiwgZm4pLAorICAgICAgICBETVNHX1NUQU1QKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgZGVidWdfbWVzc2FnZSgKKyAgICAgICAgICBzcHJpbnRmKCJLb25udGUgTGlzdGUgbmljaHQgaW4gRGF0ZWkgJXMgc2NocmVpYmVuLCBBYmJydWNoXG4iLCBmbiksCisgICAgICAgICAgRE1TR19TVEFNUCk7CiAgIH0KIH0KIApAQCAtNTEzLDE0ICs1MzYsMjEgQEAKICAgICBzdHJpbmcgdHh0OwogICAgIGlmICghc3RyaW5ncChmbikgfHwgIXNpemVvZihmbikpCiAgICAgICBmbiA9IEhFQURFUkZJTEU7Ci0gICAgaWYgKGZpbGVfc2l6ZShmbikgPj0gMCkgewotICAgICAgcHJpbnRmKCJEYXRlaSAlcyBleGlzdGllcnQgYmVyZWl0cywgbG9lc2NoZSBzaWVcbiIsIGZuKTsKKyAgICBpZiAoZmlsZV9zaXplKGZuKSA+PSAwKQorICAgIHsKKyAgICAgIGRlYnVnX21lc3NhZ2UoCisgICAgICAgICAgc3ByaW50ZigiRGF0ZWkgJXMgZXhpc3RpZXJ0IGJlcmVpdHMsIGxvZXNjaGUgc2llXG4iLCBmbiksCisgICAgICAgICAgRE1TR19TVEFNUCk7CiAgICAgICBybShmbik7CiAgICAgfQogICAgIGlmIChkdW1wX21hdGVyaWFsX2goZm4pKQotICAgICAgcHJpbnRmKCJIZWFkZXJkYXRlaSBlcmZvbGdyZWljaCBpbiAlcyBnZXNjaHJpZWJlblxuIiwgZm4pOworICAgICAgZGVidWdfbWVzc2FnZSgKKyAgICAgICAgICBzcHJpbnRmKCJIZWFkZXJkYXRlaSBlcmZvbGdyZWljaCBpbiAlcyBnZXNjaHJpZWJlblxuIiwgZm4pLAorICAgICAgICAgIERNU0dfU1RBTVApOwogICAgIGVsc2UKLSAgICAgIHByaW50ZigiS29ubnRlIEhlYWRlcmRhdGVpIG5pY2h0IGluIERhdGVpICVzIHNjaHJlaWJlbiwgQWJicnVjaFxuIiwgZm4pOworICAgICAgZGVidWdfbWVzc2FnZSgKKyAgICAgICAgc3ByaW50ZigiS29ubnRlIEhlYWRlcmRhdGVpIG5pY2h0IGluIERhdGVpICVzIHNjaHJlaWJlbiwgQWJicnVjaFxuIiwKKyAgICAgICAgICAgICAgICBmbiksIERNU0dfU1RBTVApOwogICB9CiB9CiAKZGlmZiAtLWdpdCBhL3N0ZC9saXZpbmcvbGlmZS5jIGIvc3RkL2xpdmluZy9saWZlLmMKaW5kZXggNGU4NDkwYS4uMmQ4NmJiNSAxMDA2NDQKLS0tIGEvc3RkL2xpdmluZy9saWZlLmMKKysrIGIvc3RkL2xpdmluZy9saWZlLmMKQEAgLTEyODgsNyArMTI4OCw3IEBACiAgIGlmIChRdWVyeVByb3AoUF9HSE9TVCkpCiAgICAgcmV0dXJuIFF1ZXJ5KFBfQUxDT0hPTCwgRl9WQUxVRSk7CiAKLSAgLy8gbnVyIMRuZGVydW5nZW4gdW5kIFdlcnRlID49MCB3ZXJkZW4gZ2VzZXR6dC4uLgorICAvLyBudXIgQWVuZGVydW5nZW4gdW5kIFdlcnRlID49MCB3ZXJkZW4gZ2VzZXR6dC4uLgogICBuID0gbiA8IDAgPyAwIDogbjsKICAgaW50IG9sZCA9IFF1ZXJ5KFBfQUxDT0hPTCwgRl9WQUxVRSk7CiAgIGlmICggb2xkID09IG4pCkBAIC0xMzI0LDcgKzEzMjQsNyBAQAogICBpZiAoUXVlcnlQcm9wKFBfR0hPU1QpKQogICAgIHJldHVybiBRdWVyeShQX0RSSU5LLCBGX1ZBTFVFKTsKIAotICAvLyBudXIgxG5kZXJ1bmdlbiB1bmQgV2VydGUgPj0wIHdlcmRlbiBnZXNldHp0Li4uCisgIC8vIG51ciBBZW5kZXJ1bmdlbiB1bmQgV2VydGUgPj0wIHdlcmRlbiBnZXNldHp0Li4uCiAgIG4gPSBuIDwgMCA/IDAgOiBuOwogICBpbnQgb2xkID0gUXVlcnkoUF9EUklOSywgRl9WQUxVRSk7CiAgIGlmICggb2xkID09IG4pCkBAIC0xMzYwLDcgKzEzNjAsNyBAQAogICBpZiAoUXVlcnlQcm9wKFBfR0hPU1QpKQogICAgIHJldHVybiBRdWVyeShQX0ZPT0QsIEZfVkFMVUUpOwogCi0gIC8vIG51ciDEbmRlcnVuZ2VuIHVuZCBXZXJ0ZSA+PTAgd2VyZGVuIGdlc2V0enQuLi4KKyAgLy8gbnVyIEFlbmRlcnVuZ2VuIHVuZCBXZXJ0ZSA+PTAgd2VyZGVuIGdlc2V0enQuLi4KICAgbiA9IG4gPCAwID8gMCA6IG47CiAgIGludCBvbGQgPSBRdWVyeShQX0ZPT0QsIEZfVkFMVUUpOwogICBpZiAoIG9sZCA9PSBuKQpkaWZmIC0tZ2l0IGEvc3RkL3BsYXllci9jb21iYXQuYyBiL3N0ZC9wbGF5ZXIvY29tYmF0LmMKaW5kZXggYWJiNWExYi4uNjRkOTQ1YyAxMDA2NDQKLS0tIGEvc3RkL3BsYXllci9jb21iYXQuYworKysgYi9zdGQvcGxheWVyL2NvbWJhdC5jCkBAIC0yMDQsNyArMjA0LDcgQEAKICAgcmV0dXJuIHJlczsKIH0KIAotLy8gU3BpZWxlciBrb2VubmVuIGFscyBHZWlzdCBuaWNodCBr5G1wZmVuCisvLyBTcGllbGVyIGtvZW5uZW4gYWxzIEdlaXN0IG5pY2h0IGthZW1wZmVuCiAvLyBUT0RPOiBwcnVlZmVuLCBvYiBkYXMgU2V0emVuIHVuZCBMb2VzY2hlbiBkZXIgUHJvcCBpbiBzZXRfZ2hvc3QoKSBuaWNodAogLy8gYXVjaCBhdXNyZWljaGVuIHd1ZXJkZS4gSW4gZGVtIEZhbGwgbXVlc3N0ZSBtYW4gYWJlciBQX05PX0FUVEFDSyBhdWNoCiAvLyBzcGVpY2hlcm4sIGRhIFBfR0hPU1QgZ2VzcGVpY2hlcnQgd2lyZC4uLgpkaWZmIC0tZ2l0IGEvc3RkL3BsYXllci9za2lsbHMuYyBiL3N0ZC9wbGF5ZXIvc2tpbGxzLmMKaW5kZXggOGY2YjhmMC4uMDM3NTVkYSAxMDA2NDQKLS0tIGEvc3RkL3BsYXllci9za2lsbHMuYworKysgYi9zdGQvcGxheWVyL3NraWxscy5jCkBAIC0yMzYsOCArMjM2LDggQEAKICAgICBsb2dfZmlsZSgiV0VBUE9OX1NLSUxMUyIsIHNwcmludGYoIiVzOiBadSBob2hlciBTY2hhZGVuIHZvbjogIgogICAgICsiVE86ICVPLCBUSTogJU8sIFBPOiAlTywgdmFsOiAlZCwgQV9ERVg6ICVkLCBBX1NUUjogJWQsICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyJQX1dFQVBPTjogJU8sIFBfV0M6ICVkXG4iLCBkdGltZSh0aW1lKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzX29iamVjdCgpLCB0aGlzX2ludGVyYWN0aXZlKCksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c19vYmplY3QoKSwgdmFsLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc19vYmplY3QoKSwgdGhpc19pbnRlcmFjdGl2ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c19vYmplY3QoKSwgdmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVyeUF0dHJpYnV0ZShBX0RFWCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5QXR0cmlidXRlKEFfU1RSKSwgc2luZm9bUF9XRUFQT05dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5mb1tQX1dFQVBPTl0tPlF1ZXJ5UHJvcChQX1dDKSkpOwpAQCAtMjQ1LDcgKzI0NSw3IEBACiAgIH0KIAogICAvKgotICAgIERlciB6dXPkdHpsaWNoZSBTY2hhZGVuIGRlciBhbGxnZW1laW5lbiBXYWZmZW5za2lsbHMgYmVyZWNobmV0CisgICAgRGVyIHp1c2FldHpsaWNoZSBTY2hhZGVuIGRlciBhbGxnZW1laW5lbiBXYWZmZW5za2lsbHMgYmVyZWNobmV0CiAgICAgc2ljaCB3aWUgZm9sZ3Q6IAogCiAgICAgc2luZm9bU0lfU0tJTExBQklMSVRZKSogKFBfV0MgKiAoIFggKSAvIDgwMCkgLyBNQVhfQUJJTElUWQpkaWZmIC0tZ2l0IGEvc3RkL3NoZWxscy9tYWdpZXIvdXBkLmMgYi9zdGQvc2hlbGxzL21hZ2llci91cGQuYwppbmRleCBmMDllYTlhLi45YzlhZjVmIDEwMDY0NAotLS0gYS9zdGQvc2hlbGxzL21hZ2llci91cGQuYworKysgYi9zdGQvc2hlbGxzL21hZ2llci91cGQuYwpAQCAtMTE2LDggKzExNiw4IEBACiAgIHsKICAgICAvLyBTY2hyZWlicmVjaHRlIG51ciBwcnVlZmVuLCB3ZW5uIGVjaHQgYWt0dWFsaXNpZXJ0IHdlcmRlbiBzb2xsLgogICAgIGlmKCFkdW1teSAmJiAhTUFZX1dSSVRFKGZpbGUpKQotICAgICAgcmV0dXJuIChwcmludGYoInVwZDqgJXM6IEtlaW5lIFNjaHJlaWJyZWNodGUhXG4iLGZpbGUpLCAtMSk7Ci0gICAgaWYoIU1BWV9SRUFEKGZpbGUpKSAKKyAgICAgIHJldHVybiAocHJpbnRmKCJ1cGQ6ICVzOiBLZWluZSBTY2hyZWlicmVjaHRlIVxuIixmaWxlKSwgLTEpOworICAgIGlmKCFNQVlfUkVBRChmaWxlKSkKICAgICAgIHJldHVybiAocHJpbnRmKCJ1cGQ6ICVzOiBLZWluZSBMZXNlcmVjaHRlIVxuIiwgZmlsZSksIC0xKTsKICAgfQogICBpZiAoZHVtbXkpIHJldHVybiAxOwpkaWZmIC0tZ2l0IGEvc3RkL3RoaW5nL2NvbW1hbmRzLmMgYi9zdGQvdGhpbmcvY29tbWFuZHMuYwppbmRleCA4ZjkzNDQ5Li43MmY1MGNkIDEwMDY0NAotLS0gYS9zdGQvdGhpbmcvY29tbWFuZHMuYworKysgYi9zdGQvdGhpbmcvY29tbWFuZHMuYwpAQCAtMzM2LDE5ICszMzYsMTkgQEAKICAgICB3aGlsZShqLS0pIHsKICAgICAgaW50IGs7CiAgICAgIC8vIERCRyhydWxlW2pdKTsKLSAgICAJLy8gUmVnZWxuIG5pY2h0IGzDtnNjaGVuIHVuZCBSZWdlbD8KKyAgICAJLy8gUmVnZWxuIG5pY2h0IGxvZXNjaGVuIHVuZCBSZWdlbD8KICAgICAgaWYoIShkZWxfbm9ydWxlICYmIHBvaW50ZXJwKHJ1bGVbal0pKSAmJgotICAgICAgICAvLyBudXIgYmVzdGltbXRlIElEIGzDtnNjaGVuIHVuZCBJRCBwYXNzdCBuaWNodD8KKyAgICAgICAgLy8gbnVyIGJlc3RpbW10ZSBJRCBsb2VzY2hlbiB1bmQgSUQgcGFzc3QgbmljaHQ/CiAgICAgICAgICEob25seWlkICYmICghcG9pbnRlcnAoaWRzKSB8fCBzaXplb2YoaWRzKTw9aiB8fCBpZHNbal0hPW9ubHlpZCkpICYmCi0gICAgICAgIC8vIEzDtnNjaHJlZ2VsIGV4aXN0aWVydCB1bmQgcGFzc3QgbmljaHQgYXVmIFJlZ2VsPworICAgICAgICAvLyBMb2VzY2hyZWdlbCBleGlzdGllcnQgdW5kIHBhc3N0IG5pY2h0IGF1ZiBSZWdlbD8KICAgICAgICAgIShkZWxydWxlICYmIChrPXNpemVvZihydWxlW2pdKSkhPXNpemVvZihkZWxydWxlKSkpIHsKLSAgICAgIC8vIHBhcnRpZWxsZXMgVGVzdGVuIGVpbmVyIEzDtnNjaHJlZ2VsIC4uLgorICAgICAgLy8gcGFydGllbGxlcyBUZXN0ZW4gZWluZXIgTG9lc2NocmVnZWwgLi4uCiAgICAgICBpZihkZWxydWxlKSB7CiAgICAgICAgd2hpbGUoay0tKQogICAgICAgICBpZighc2l6ZW9mKHJ1bGVbal1ba10mZGVscnVsZVtrXSkpIGJyZWFrOwogICAgICAgIGlmKGs+PTApIGNvbnRpbnVlOwogICAgICAgfQotICAgICAgLy8gYWxsZXMga29ycmVrdDogTMO2c2NoZW4hCisgICAgICAvLyBhbGxlcyBrb3JyZWt0OiBMb2VzY2hlbiEKICAgICAgIC8vIChBcnJheWJlcmVpY2ggZHVyY2ggbGVlcmVzIEFycmF5IGxvZXNjaGVuKQogICAgICAgZmxhZ1tqLi5qXSAgICA9IGFsbG9jYXRlKDApOwogICAgICAgZnVuW2ouLmpdICAgICA9IGFsbG9jYXRlKDApOwpkaWZmIC0tZ2l0IGEvc3lzL2xpdmluZy9saWZlLmggYi9zeXMvbGl2aW5nL2xpZmUuaAppbmRleCA4MWJhM2RkLi4zZGMwMzExIDEwMDY0NAotLS0gYS9zeXMvbGl2aW5nL2xpZmUuaAorKysgYi9zeXMvbGl2aW5nL2xpZmUuaApAQCAtNTMsNyArNTMsNyBAQAogCiAvLyBIX0VGRkVDVFMgLSBadSBhZW5kZXJuZGUgUHJvcGVydGllcyBmdWVyIGRlbiBFZmZla3QKICNkZWZpbmUgSF9FRkZFQ1RTICJlZmZlY3RzIgotLy8gSF9DT05ESVRJT05TIC0gWnUgcHJ1ZWZlbmRlIFByb3BlcnRpZXMgZvxyIGRlbiBFZmZla3QgKFNhZXR0aWd1bmcsIC4uLikKKy8vIEhfQ09ORElUSU9OUyAtIFp1IHBydWVmZW5kZSBQcm9wZXJ0aWVzIGZ1ZXIgZGVuIEVmZmVrdCAoU2FldHRpZ3VuZywgLi4uKQogI2RlZmluZSBIX0NPTkRJVElPTlMgImNvbmRpdGlvbnMiCiAvLyBIX0RJU1RSSUJVVElPTiAtIFdpZSBkaWUgQWVuZGVydW5nIGFuIEhQL1NQIGF1c3RlaWxlbiwgc29mb3J0LCB6ZWl0bGljaAogLy8gdmVyc2V0enQsIC4uLgpkaWZmIC0tZ2l0IGEvc3lzL21hZ2llci5oIGIvc3lzL21hZ2llci5oCmluZGV4IDMzY2Q5OGYuLmY2ZWIzYTggMTAwNjQ0Ci0tLSBhL3N5cy9tYWdpZXIuaAorKysgYi9zeXMvbWFnaWVyLmgKQEAgLTEwMiw3ICsxMDIsNyBAQAogI2RlZmluZSBMU19MICAgICAgICAgICAgMiAgICAgICAgICAgIC8vIExhbmdlIEF1c2dhYmUKICNkZWZpbmUgTFNfUiAgICAgICAgICAgIDQgICAgICAgICAgICAvLyBSdWVja3dhZXJ0cyBhdXNnZWJlbgogI2RlZmluZSBMU19UICAgICAgICAgICAgOCAgICAgICAgICAgIC8vIE5hY2ggWmVpdCBvcmRuZW4KLSNkZWZpbmUgTFNfUyAgICAgICAgICAgIDE2ICAgICAgICAgICAvLyBOYWNoIEdy9t9lIG9yZG5lbgorI2RlZmluZSBMU19TICAgICAgICAgICAgMTYgICAgICAgICAgIC8vIE5hY2ggR3JvZXNzZSBvcmRuZW4KICNkZWZpbmUgTFNfVSAgICAgICAgICAgIDMyICAgICAgICAgICAvLyBVSUQgYW56ZWlnZW4KICNkZWZpbmUgTFNfRyAgICAgICAgICAgIDY0ICAgICAgICAgICAvLyBHcnVwcGUgYW56ZWlnZW4KIApkaWZmIC0tZ2l0IGEvc3lzL25vdGlmeV9mYWlsLmggYi9zeXMvbm90aWZ5X2ZhaWwuaAppbmRleCA5N2QxNzg2Li42ZjBlYWY1IDEwMDY0NAotLS0gYS9zeXMvbm90aWZ5X2ZhaWwuaAorKysgYi9zeXMvbm90aWZ5X2ZhaWwuaApAQCAtOCw3ICs4LDcgQEAKICNkZWZpbmUgX05PVElGWV9GQUlMX0hfCiAKIC8vIFByaW9yaXRhZXRlbiAvICdOaWNlIGxldmVscycgdm9uIG5vdGlmeV9mYWlsKClzOgotLy8gV2llICduaWNlJyBiaW4gaWNoPyBKZSBncm9lc3NlcmUgWmFobC9Qcmlvcml05HQsIGRlc3RvIHdlbmlnIGxpZWIuIDstKQorLy8gV2llICduaWNlJyBiaW4gaWNoPyBKZSBncm9lc3NlcmUgWmFobC9Qcmlvcml0YWV0LCBkZXN0byB3ZW5pZyBsaWViLiA7LSkKICNkZWZpbmUgTkZfTkxfTk9ORSAgIC0xICAgLy9tYXggJ25pY2VuZXNzJywgd2lyZCB2b24gYWxsZW0gdWViZXJzY2hyaWViZW4KICNkZWZpbmUgTkZfTkxfT1dOICAgIDEwMCAgLy9laWdlbmVzIE9iamVrdCAoc291bCB2ZXJiZW4pIHVlYmVyc2NocmVpYmVuIGthdW0gd2FzCiAjZGVmaW5lIE5GX05MX1RISU5HICAxMDAwMDAKZGlmZiAtLWdpdCBhL3N5cy9wbGF5ZXIvZmFvLmggYi9zeXMvcGxheWVyL2Zhby5oCmluZGV4IDNjMDE2YTQuLmM3NzNjZjEgMTAwNjQ0Ci0tLSBhL3N5cy9wbGF5ZXIvZmFvLmgKKysrIGIvc3lzL3BsYXllci9mYW8uaApAQCAtNiw5ICs2LDkgQEAKIAogI2RlZmluZSBGQU9fTUFTVEVSICAgICAgIi9kL2ViZW5lL21pcmlsL2ZyYXRlcm5pdGFzL3NlY3VyZS9mYW9tYXN0ZXIiIC8vIGRpZSB6ZW50cmFsZSBzdGVsbGUgZGVzIGZhbwogCi0vLyBkaWUgTGlzdGUgZGVyIHZlcmb8Z2JhcmVuIFBvcnRhbGUgZnVlciBkYXMgZXJzdGUgcG9ydGFsZ2VzY2hlbmsKKy8vIGRpZSBMaXN0ZSBkZXIgdmVyZnVlZ2JhcmVuIFBvcnRhbGUgZnVlciBkYXMgZXJzdGUgcG9ydGFsZ2VzY2hlbmsKICNkZWZpbmUgRkFPX1BPUlRBTFMxX0xJU1QgKHsyLDMsNCw1LDYsNyw4LDksMTAsMTMsMTQsMTUsMTYsMTksMjAsMjEsMjUsMjksMzN9KQotLy8gZGllIExpc3RlIGRlciB2ZXJm/GdiYXJlbiBQb3J0YWxlIGZ1ZXIgZGFzIHp3ZWl0ZSBwb3J0YWxnZXNjaGVuaworLy8gZGllIExpc3RlIGRlciB2ZXJmdWVnYmFyZW4gUG9ydGFsZSBmdWVyIGRhcyB6d2VpdGUgcG9ydGFsZ2VzY2hlbmsKICNkZWZpbmUgRkFPX1BPUlRBTFMyX0xJU1QgRkFPX1BPUlRBTFMxX0xJU1QrKHsxLDExLDEyLDE3LDE4LDI0LDI2LDI3LDI4LDMxLDM0LDM2LDM3LDM4fSkKIC8vIGRpZSBhbnphaGwgZGVyIHp1IHdhZWhsZW5kZW4gcG9ydGFsZSBmdWVyIGRhcyBlcnN0ZSBwb3J0YWxnZXNjaGVuawogI2RlZmluZSBGQU9fUE9SVEFMUzFfTlVNICA1Cg==