ZGlmZiAtLWdpdCBhL2F1dG8vaW5zdGFsbCBiL2F1dG8vaW5zdGFsbAppbmRleCA1NThmNjQ2Li41NWY4NjhhIDEwMDY0NAotLS0gYS9hdXRvL2luc3RhbGwKKysrIGIvYXV0by9pbnN0YWxsCkBAIC01LDQwICs1LDQwIEBACiBjYXQgPDwgRU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4+ICROR1hfTUFLRUZJTEUKIAogaW5zdGFsbDoJJE5HWF9PQkpTJHtuZ3hfZGlyc2VwfW5naW54JHtuZ3hfYmluZXh0fQotCXRlc3QgLWQgIiROR1hfUFJFRklYIiB8fCBta2RpciAtcCAiJE5HWF9QUkVGSVgiCisJdGVzdCAtZCAnJE5HWF9QUkVGSVgnIHx8IG1rZGlyIC1wICckTkdYX1BSRUZJWCcKIAotCXRlc3QgLWQgImBkaXJuYW1lIFwiJE5HWF9TQklOX1BBVEhcImAiIFwKLQkJfHwgbWtkaXIgLXAgImBkaXJuYW1lIFwiJE5HWF9TQklOX1BBVEhcImAiCi0JdGVzdCAhIC1mICIkTkdYX1NCSU5fUEFUSCIgfHwgbXYgIiROR1hfU0JJTl9QQVRIIiAiJE5HWF9TQklOX1BBVEgub2xkIgotCWNwICROR1hfT0JKUy9uZ2lueCAiJE5HWF9TQklOX1BBVEgiCisJdGVzdCAtZCAnYGRpcm5hbWUgIiROR1hfU0JJTl9QQVRIImAnIFwKKwkJfHwgbWtkaXIgLXAgJ2BkaXJuYW1lICIkTkdYX1NCSU5fUEFUSCJgJworCXRlc3QgISAtZiAnJE5HWF9TQklOX1BBVEgnIHx8IG12ICckTkdYX1NCSU5fUEFUSCcgJyROR1hfU0JJTl9QQVRILm9sZCcKKwljcCAkTkdYX09CSlMvbmdpbnggJyROR1hfU0JJTl9QQVRIJwogCi0JdGVzdCAtZCAiYGRpcm5hbWUgXCIkTkdYX0NPTkZfUEFUSFwiYCIgXAotCQl8fCBta2RpciAtcCAiYGRpcm5hbWUgXCIkTkdYX0NPTkZfUEFUSFwiYCIKKwl0ZXN0IC1kICdgZGlybmFtZSAiJE5HWF9DT05GX1BBVEgiYCcgXAorCQl8fCBta2RpciAtcCAnYGRpcm5hbWUgIiROR1hfQ09ORl9QQVRIImAnCiAKLQljcCBjb25mL2tvaS13aW4gImBkaXJuYW1lIFwiJE5HWF9DT05GX1BBVEhcImAiCisJY3AgY29uZi9rb2ktd2luICdgZGlybmFtZSAiJE5HWF9DT05GX1BBVEgiYCcKIAotCXRlc3QgLWYgImBkaXJuYW1lIFwiJE5HWF9DT05GX1BBVEhcImAvbWltZS50eXBlcyIgfHwgXAotCQljcCBjb25mL21pbWUudHlwZXMgImBkaXJuYW1lIFwiJE5HWF9DT05GX1BBVEhcImAvbWltZS50eXBlcyIKLQljcCBjb25mL21pbWUudHlwZXMgImBkaXJuYW1lIFwiJE5HWF9DT05GX1BBVEhcImAvbWltZS50eXBlcy5kZWZhdWx0IgorCXRlc3QgLWYgJ2BkaXJuYW1lICIkTkdYX0NPTkZfUEFUSCJgL21pbWUudHlwZXMnIHx8IFwKKwkJY3AgY29uZi9taW1lLnR5cGVzICdgZGlybmFtZSAiJE5HWF9DT05GX1BBVEgiYC9taW1lLnR5cGVzJworCWNwIGNvbmYvbWltZS50eXBlcyAnYGRpcm5hbWUgIiROR1hfQ09ORl9QQVRIImAvbWltZS50eXBlcy5kZWZhdWx0JwogCi0JdGVzdCAtZiAiJE5HWF9DT05GX1BBVEgiIHx8IGNwIGNvbmYvbmdpbnguY29uZiAiJE5HWF9DT05GX1BBVEgiCi0JY3AgY29uZi9uZ2lueC5jb25mICJgZGlybmFtZSBcIiROR1hfQ09ORl9QQVRIXCJgL25naW54LmNvbmYuZGVmYXVsdCIKKwl0ZXN0IC1mICckTkdYX0NPTkZfUEFUSCcgfHwgY3AgY29uZi9uZ2lueC5jb25mICckTkdYX0NPTkZfUEFUSCcKKwljcCBjb25mL25naW54LmNvbmYgJ2BkaXJuYW1lICIkTkdYX0NPTkZfUEFUSCJgL25naW54LmNvbmYuZGVmYXVsdCcKIAotCXRlc3QgLWQgImBkaXJuYW1lIFwiJE5HWF9QSURfUEFUSFwiYCIgXAotCQl8fCBta2RpciAtcCAiYGRpcm5hbWUgXCIkTkdYX1BJRF9QQVRIXCJgIgorCXRlc3QgLWQgJ2BkaXJuYW1lICIkTkdYX1BJRF9QQVRIImAnIFwKKwkJfHwgbWtkaXIgLXAgJ2BkaXJuYW1lICIkTkdYX1BJRF9QQVRIImAnCiAKLQl0ZXN0IC1kICJgZGlybmFtZSBcIiROR1hfSFRUUF9MT0dfUEFUSFwiYCIgfHwgXAotCQlta2RpciAtcCAiYGRpcm5hbWUgXCIkTkdYX0hUVFBfTE9HX1BBVEhcImAiCisJdGVzdCAtZCAnYGRpcm5hbWUgIiROR1hfSFRUUF9MT0dfUEFUSCJgJyB8fCBcCisJCW1rZGlyIC1wICdgZGlybmFtZSAiJE5HWF9IVFRQX0xPR19QQVRIImAnCiAKLQl0ZXN0IC1kICIkTkdYX1BSRUZJWC9odG1sIiB8fCBjcCAtciBodG1sICIkTkdYX1BSRUZJWCIKKwl0ZXN0IC1kICckTkdYX1BSRUZJWC9odG1sJyB8fCBjcCAtciBodG1sICckTkdYX1BSRUZJWCcKIEVORAogCiAKIGlmIHRlc3QgLW4gIiROR1hfRVJST1JfTE9HX1BBVEgiOyB0aGVuCiAgICAgY2F0IDw8IEVORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4+ICROR1hfTUFLRUZJTEUKIAotCXRlc3QgLWQgImBkaXJuYW1lIFwiJE5HWF9FUlJPUl9MT0dfUEFUSFwiYCIgfHwgXAotCQlta2RpciAtcCAiYGRpcm5hbWUgXCIkTkdYX0VSUk9SX0xPR19QQVRIXCJgIgorCXRlc3QgLWQgJ2BkaXJuYW1lICIkTkdYX0VSUk9SX0xPR19QQVRIImAnIHx8IFwKKwkJbWtkaXIgLXAgJ2BkaXJuYW1lICIkTkdYX0VSUk9SX0xPR19QQVRIImAnCiBFTkQKIAogZmkKZGlmZiAtLWdpdCBhL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKaW5kZXggZjY3MTZjMS4uZjkwNjhjOCAxMDA2NDQKLS0tIGEvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKKysrIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKQEAgLTksNiArOSwzNCBAQAogPHRpdGxlIGxhbmc9ImVuIj5uZ2lueCBjaGFuZ2Vsb2c8L3RpdGxlPgogCiAKKzxjaGFuZ2VzIHZlcj0iMC4xLjIyIiBkYXRlPSIyMi4wMi4yMDA1Ij4KKworPGNoYW5nZSB0eXBlPSJidWdmaXgiPgorPHBhcmEgbGFuZz0icnUiPgorzc/E1czYIG5neF9odHRwX3N0dWJfc3RhdHVzX21vZHVsZSDQz8vB2tnXwcwgzsXXxdLO1cAg09TB1MnT1MnL1QorxMzRIM/C0sHCz9TBzs7ZyCDTz8XEyc7FzsnKLCDF08zJIMnT0M/M2NrP18HMz9PYINDSz8vTydLP18HOycUKK8nMySBGYXN0Q0dJLdPF0tfF0i4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK3RoZSBuZ3hfaHR0cF9zdHViX3N0YXR1c19tb2R1bGUgc2hvd2VkIGluY29ycmVjdCBoYW5kbGVkIGNvbm5lY3Rpb25zCitzdGF0aWN0aWNzIGlmIHRoZSBwcm94aW5nIG9yIEZhc3RDR0kgc2VydmVyIHdlcmUgdXNlZC4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+Cis8cGFyYSBsYW5nPSJydSI+CivOwSBMaW51eCDJIFNvbGFyaXMg1dPUwc7P18/eztnFINDV1MkgwtnMySDOxdfF0s7PINrBy8zA3sXO2SDXIMvB19ney8k7CivP28nCy8Eg0M/R18nMwdPYINcgMC4xLjIxLgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgordGhlIGluc3RhbGxhdGlvbiBwYXRoZXMgd2VyZSBpbmNvcnJlY3RseSBxdW90ZWQgb24gTGludXggYW5kIFNvbGFyaXM7CitidWcgYXBwZWFyZWQgaW4gMC4xLjIxLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzwvY2hhbmdlcz4KKworCiA8Y2hhbmdlcyB2ZXI9IjAuMS4yMSIgZGF0ZT0iMjIuMDIuMjAwNSI+CiAKIDxjaGFuZ2UgdHlwZT0iYnVnZml4Ij4KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL25naW54LmggYi9zcmMvY29yZS9uZ2lueC5oCmluZGV4IDVjNDEyMDcuLjA3M2Q2ODIgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL25naW54LmgKKysrIGIvc3JjL2NvcmUvbmdpbnguaApAQCAtOCw3ICs4LDcgQEAKICNkZWZpbmUgX05HSU5YX0hfSU5DTFVERURfCiAKIAotI2RlZmluZSBOR0lOWF9WRVIgICAgICAgICAgIm5naW54LzAuMS4yMSIKKyNkZWZpbmUgTkdJTlhfVkVSICAgICAgICAgICJuZ2lueC8wLjEuMjIiCiAKICNkZWZpbmUgTkdJTlhfVkFSICAgICAgICAgICJOR0lOWCIKICNkZWZpbmUgTkdYX05FV1BJRF9FWFQgICAgICIubmV3YmluIgpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbmd4X2Nvbm5lY3Rpb24uaCBiL3NyYy9jb3JlL25neF9jb25uZWN0aW9uLmgKaW5kZXggNGQ1ZDBjOC4uZWVkOTU1YSAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbmd4X2Nvbm5lY3Rpb24uaAorKysgYi9zcmMvY29yZS9uZ3hfY29ubmVjdGlvbi5oCkBAIC0xMTQsNyArMTE0LDcgQEAKIAogICAgIG5neF9idWZfdCAgICAgICAgICAqYnVmZmVyOwogCi0gICAgbmd4X2F0b21pY19pbnRfdCAgICBudW1iZXI7CisgICAgbmd4X2F0b21pY191aW50X3QgICBudW1iZXI7CiAKICAgICB1bnNpZ25lZCAgICAgICAgICAgIGxvZ19lcnJvcjoyOyAgICAgLyogbmd4X2Nvbm5lY3Rpb25fbG9nX2Vycm9yX2UgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbmd4X2ZpbGUuYyBiL3NyYy9jb3JlL25neF9maWxlLmMKaW5kZXggZTA2YjhjYS4uNTE0NDc5YyAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbmd4X2ZpbGUuYworKysgYi9zcmMvY29yZS9uZ3hfZmlsZS5jCkBAIC04LDggKzgsOCBAQAogI2luY2x1ZGUgPG5neF9jb3JlLmg+CiAKIAotc3RhdGljIG5neF9hdG9taWNfaW50X3QgIG5neF90ZW1wX251bWJlcjsKLXN0YXRpYyBuZ3hfYXRvbWljX2ludF90ICBuZ3hfcmFuZG9tOworc3RhdGljIG5neF9hdG9taWNfdWludF90ICBuZ3hfdGVtcF9udW1iZXI7CitzdGF0aWMgbmd4X2F0b21pY191aW50X3QgIG5neF9yYW5kb207CiAKIAogc3NpemVfdApAQCAtMzgsOCArMzgsOCBAQAogbmd4X2NyZWF0ZV90ZW1wX2ZpbGUobmd4X2ZpbGVfdCAqZmlsZSwgbmd4X3BhdGhfdCAqcGF0aCwgbmd4X3Bvb2xfdCAqcG9vbCwKICAgICBpbnQgcGVyc2lzdGVudCkKIHsKLSAgICBuZ3hfZXJyX3QgICAgICAgICAgZXJyOwotICAgIG5neF9hdG9taWNfaW50X3QgICBuOworICAgIG5neF9lcnJfdCAgICAgICAgICAgZXJyOworICAgIG5neF9hdG9taWNfdWludF90ICAgbjsKIAogICAgIGZpbGUtPm5hbWUubGVuID0gcGF0aC0+bmFtZS5sZW4gKyAxICsgcGF0aC0+bGVuICsgTkdYX0FUT01JQ19UX0xFTjsKIApAQCAtMTc2LDcgKzE3Niw3IEBACiB9CiAKIAotbmd4X2F0b21pY19pbnRfdAorbmd4X2F0b21pY191aW50X3QKIG5neF9uZXh0X3RlbXBfbnVtYmVyKG5neF91aW50X3QgY29sbGlzaW9uKQogewogICAgIGlmIChjb2xsaXNpb24pIHsKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL25neF9maWxlLmggYi9zcmMvY29yZS9uZ3hfZmlsZS5oCmluZGV4IGE3NmE2NDguLmY3ODMyZDcgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL25neF9maWxlLmgKKysrIGIvc3JjL2NvcmUvbmd4X2ZpbGUuaApAQCAtNjIsNyArNjIsNyBAQAogbmd4X2ludF90IG5neF9jcmVhdGVfcGF0aGVzKG5neF9jeWNsZV90ICpjeWNsZSwgbmd4X3VpZF90IHVzZXIpOwogCiB2b2lkIG5neF9pbml0X3RlbXBfbnVtYmVyKCk7Ci1uZ3hfYXRvbWljX2ludF90IG5neF9uZXh0X3RlbXBfbnVtYmVyKG5neF91aW50X3QgY29sbGlzaW9uKTsKK25neF9hdG9taWNfdWludF90IG5neF9uZXh0X3RlbXBfbnVtYmVyKG5neF91aW50X3QgY29sbGlzaW9uKTsKIAogY2hhciAqbmd4X2NvbmZfc2V0X3BhdGhfc2xvdChuZ3hfY29uZl90ICpjZiwgbmd4X2NvbW1hbmRfdCAqY21kLCB2b2lkICpjb25mKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbmd4X2xvZy5oIGIvc3JjL2NvcmUvbmd4X2xvZy5oCmluZGV4IDk1ZGZlNDEuLjQ4NDQ5YTcgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL25neF9sb2cuaAorKysgYi9zcmMvY29yZS9uZ3hfbG9nLmgKQEAgLTQ3LDcgKzQ3LDcgQEAKICAgICBuZ3hfdWludF90ICAgICAgICAgICBsb2dfbGV2ZWw7CiAgICAgbmd4X29wZW5fZmlsZV90ICAgICAqZmlsZTsKIAotICAgIG5neF9hdG9taWNfaW50X3QgICAgIGNvbm5lY3Rpb247CisgICAgbmd4X2F0b21pY191aW50X3QgICAgY29ubmVjdGlvbjsKIAogICAgIG5neF9sb2dfaGFuZGxlcl9wdCAgIGhhbmRsZXI7CiAgICAgdm9pZCAgICAgICAgICAgICAgICAqZGF0YTsKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL25neF9zdHJpbmcuYyBiL3NyYy9jb3JlL25neF9zdHJpbmcuYwppbmRleCBjYTlkNjY5Li5mZGI1OWZkIDEwMDY0NAotLS0gYS9zcmMvY29yZS9uZ3hfc3RyaW5nLmMKKysrIGIvc3JjL2NvcmUvbmd4X3N0cmluZy5jCkBAIC01NCw3ICs1NCw3IEBACiAgKiAgICAlWzBdW3dpZHRofG1dW3VdW3h8WF1pICAgIG5neF9pbnRfdC9uZ3hfdWludF90CiAgKiAgICAlWzBdW3dpZHRoXVt1XVt4fFhdRCAgICAgIGludDMyX3QvdWludDMyX3QKICAqICAgICVbMF1bd2lkdGhdW3VdW3h8WF1MICAgICAgaW50NjRfdC91aW50NjRfdAotICogICAgJVswXVt3aWR0aHxtXVt1XVt4fFhdQSAgICBuZ3hfYXRvbWljX2ludF90CisgKiAgICAlWzBdW3dpZHRofG1dW3VdW3h8WF1BICAgIG5neF9hdG9taWNfaW50X3Qvbmd4X2F0b21pY191aW50X3QKICAqICAgICVQICAgICAgICAgICAgICAgICAgICAgICAgbmd4X3BpZF90CiAgKiAgICAlciAgICAgICAgICAgICAgICAgICAgICAgIHJsaW1fdAogICogICAgJXAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyCkBAIC0yNzcsNyArMjc3LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoc2lnbikgewogICAgICAgICAgICAgICAgICAgICBpNjQgPSAoaW50NjRfdCkgdmFfYXJnKGFyZ3MsIG5neF9hdG9taWNfaW50X3QpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHVpNjQgPSAodWludDY0X3QpIHZhX2FyZyhhcmdzLCBuZ3hfYXRvbWljX2ludF90KTsKKyAgICAgICAgICAgICAgICAgICAgdWk2NCA9ICh1aW50NjRfdCkgdmFfYXJnKGFyZ3MsIG5neF9hdG9taWNfdWludF90KTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAobWF4X3dpZHRoKSB7CmRpZmYgLS1naXQgYS9zcmMvZXZlbnQvbmd4X2V2ZW50LmMgYi9zcmMvZXZlbnQvbmd4X2V2ZW50LmMKaW5kZXggNzgwZGJlYi4uMzhlZmNhMCAxMDA2NDQKLS0tIGEvc3JjL2V2ZW50L25neF9ldmVudC5jCisrKyBiL3NyYy9ldmVudC9uZ3hfZXZlbnQuYwpAQCAtMzQsMjcgKzM0LDI5IEBACiBzdGF0aWMgY2hhciAqbmd4X2FjY2VwdF9tdXRleF9jaGVjayhuZ3hfY29uZl90ICpjZiwgdm9pZCAqcG9zdCwgdm9pZCAqZGF0YSk7CiAKIAotc3RhdGljIG5neF91aW50X3QgICAgbmd4X2V2ZW50X21heF9tb2R1bGU7CitzdGF0aWMgbmd4X3VpbnRfdCAgICAgbmd4X2V2ZW50X21heF9tb2R1bGU7CiAKLW5neF91aW50X3QgICAgICAgICAgIG5neF9ldmVudF9mbGFnczsKLW5neF9ldmVudF9hY3Rpb25zX3QgIG5neF9ldmVudF9hY3Rpb25zOworbmd4X3VpbnRfdCAgICAgICAgICAgIG5neF9ldmVudF9mbGFnczsKK25neF9ldmVudF9hY3Rpb25zX3QgICBuZ3hfZXZlbnRfYWN0aW9uczsKIAogCi1uZ3hfYXRvbWljX3QgICAgICAgICBjb25uZWN0aW9uX2NvdW50ZXI7CituZ3hfYXRvbWljX3QgICAgICAgICAgY29ubmVjdGlvbl9jb3VudGVyOwogbmd4X2F0b21pY190ICAgICAgICAgKm5neF9jb25uZWN0aW9uX2NvdW50ZXIgPSAmY29ubmVjdGlvbl9jb3VudGVyOwogCiAKIG5neF9hdG9taWNfdCAgICAgICAgICpuZ3hfYWNjZXB0X211dGV4X3B0cjsKIG5neF9hdG9taWNfdCAgICAgICAgICpuZ3hfYWNjZXB0X211dGV4Owotbmd4X3VpbnRfdCAgICAgICAgICAgbmd4X2FjY2VwdF9tdXRleF9oZWxkOwotbmd4X21zZWNfdCAgICAgICAgICAgbmd4X2FjY2VwdF9tdXRleF9kZWxheTsKLW5neF9pbnRfdCAgICAgICAgICAgIG5neF9hY2NlcHRfZGlzYWJsZWQ7CituZ3hfdWludF90ICAgICAgICAgICAgbmd4X2FjY2VwdF9tdXRleF9oZWxkOworbmd4X21zZWNfdCAgICAgICAgICAgIG5neF9hY2NlcHRfbXV0ZXhfZGVsYXk7CituZ3hfaW50X3QgICAgICAgICAgICAgbmd4X2FjY2VwdF9kaXNhYmxlZDsKIAogCiAjaWYgKE5HWF9TVEFUX1NUVUIpCiAKIG5neF9hdG9taWNfdCAgIG5neF9zdGF0X2FjY2VwdGVkMDsKIG5neF9hdG9taWNfdCAgKm5neF9zdGF0X2FjY2VwdGVkID0gJm5neF9zdGF0X2FjY2VwdGVkMDsKK25neF9hdG9taWNfdCAgIG5neF9zdGF0X2hhbmRsZWQwOworbmd4X2F0b21pY190ICAqbmd4X3N0YXRfaGFuZGxlZCA9ICZuZ3hfc3RhdF9oYW5kbGVkMDsKIG5neF9hdG9taWNfdCAgIG5neF9zdGF0X3JlcXVlc3RzMDsKIG5neF9hdG9taWNfdCAgKm5neF9zdGF0X3JlcXVlc3RzID0gJm5neF9zdGF0X3JlcXVlc3RzMDsKIG5neF9hdG9taWNfdCAgIG5neF9zdGF0X2FjdGl2ZTA7CkBAIC02Miw3ICs2NCw3IEBACiBuZ3hfYXRvbWljX3QgICBuZ3hfc3RhdF9yZWFkaW5nMDsKIG5neF9hdG9taWNfdCAgKm5neF9zdGF0X3JlYWRpbmcgPSAmbmd4X3N0YXRfcmVhZGluZzA7CiBuZ3hfYXRvbWljX3QgICBuZ3hfc3RhdF93cml0aW5nMDsKLW5neF9hdG9taWNfdCAgKm5neF9zdGF0X3dyaXRpbmcgPSAmbmd4X3N0YXRfcmVhZGluZzA7CituZ3hfYXRvbWljX3QgICpuZ3hfc3RhdF93cml0aW5nID0gJm5neF9zdGF0X3dyaXRpbmcwOwogCiAjZW5kaWYKIApAQCAtMjA5LDYgKzIxMSw3IEBACiAjaWYgKE5HWF9TVEFUX1NUVUIpCiAKICAgICBzaXplICs9IDEyOCAgICAgICAgICAgLyogbmd4X3N0YXRfYWNjZXB0ZWQgKi8KKyAgICAgICAgICAgKyAxMjggICAgICAgICAgLyogbmd4X3N0YXRfaGFuZGxlZCAqLwogICAgICAgICAgICArIDEyOCAgICAgICAgICAvKiBuZ3hfc3RhdF9yZXF1ZXN0cyAqLwogICAgICAgICAgICArIDEyOCAgICAgICAgICAvKiBuZ3hfc3RhdF9hY3RpdmUgKi8KICAgICAgICAgICAgKyAxMjggICAgICAgICAgLyogbmd4X3N0YXRfcmVhZGluZyAqLwpAQCAtMjI2LDEwICsyMjksMTEgQEAKICNpZiAoTkdYX1NUQVRfU1RVQikKIAogICAgIG5neF9zdGF0X2FjY2VwdGVkID0gKG5neF9hdG9taWNfdCAqKSAoc2hhcmVkICsgMiAqIDEyOCk7Ci0gICAgbmd4X3N0YXRfcmVxdWVzdHMgPSAobmd4X2F0b21pY190ICopIChzaGFyZWQgKyAzICogMTI4KTsKLSAgICBuZ3hfc3RhdF9hY3RpdmUgPSAobmd4X2F0b21pY190ICopIChzaGFyZWQgKyA0ICogMTI4KTsKLSAgICBuZ3hfc3RhdF9yZWFkaW5nID0gKG5neF9hdG9taWNfdCAqKSAoc2hhcmVkICsgNSAqIDEyOCk7Ci0gICAgbmd4X3N0YXRfd3JpdGluZyA9IChuZ3hfYXRvbWljX3QgKikgKHNoYXJlZCArIDYgKiAxMjgpOworICAgIG5neF9zdGF0X2hhbmRsZWQgPSAobmd4X2F0b21pY190ICopIChzaGFyZWQgKyAzICogMTI4KTsKKyAgICBuZ3hfc3RhdF9yZXF1ZXN0cyA9IChuZ3hfYXRvbWljX3QgKikgKHNoYXJlZCArIDQgKiAxMjgpOworICAgIG5neF9zdGF0X2FjdGl2ZSA9IChuZ3hfYXRvbWljX3QgKikgKHNoYXJlZCArIDUgKiAxMjgpOworICAgIG5neF9zdGF0X3JlYWRpbmcgPSAobmd4X2F0b21pY190ICopIChzaGFyZWQgKyA2ICogMTI4KTsKKyAgICBuZ3hfc3RhdF93cml0aW5nID0gKG5neF9hdG9taWNfdCAqKSAoc2hhcmVkICsgNyAqIDEyOCk7CiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9zcmMvZXZlbnQvbmd4X2V2ZW50LmggYi9zcmMvZXZlbnQvbmd4X2V2ZW50LmgKaW5kZXggZDE1NmE2My4uNmRmZDcwOSAxMDA2NDQKLS0tIGEvc3JjL2V2ZW50L25neF9ldmVudC5oCisrKyBiL3NyYy9ldmVudC9uZ3hfZXZlbnQuaApAQCAtNDQyLDYgKzQ0Miw3IEBACiAjaWYgKE5HWF9TVEFUX1NUVUIpCiAKIGV4dGVybiBuZ3hfYXRvbWljX3QgICpuZ3hfc3RhdF9hY2NlcHRlZDsKK2V4dGVybiBuZ3hfYXRvbWljX3QgICpuZ3hfc3RhdF9oYW5kbGVkOwogZXh0ZXJuIG5neF9hdG9taWNfdCAgKm5neF9zdGF0X3JlcXVlc3RzOwogZXh0ZXJuIG5neF9hdG9taWNfdCAgKm5neF9zdGF0X2FjdGl2ZTsKIGV4dGVybiBuZ3hfYXRvbWljX3QgICpuZ3hfc3RhdF9yZWFkaW5nOwpkaWZmIC0tZ2l0IGEvc3JjL2V2ZW50L25neF9ldmVudF9hY2NlcHQuYyBiL3NyYy9ldmVudC9uZ3hfZXZlbnRfYWNjZXB0LmMKaW5kZXggZmIyZDk4NC4uZjMwZTFmYyAxMDA2NDQKLS0tIGEvc3JjL2V2ZW50L25neF9ldmVudF9hY2NlcHQuYworKysgYi9zcmMvZXZlbnQvbmd4X2V2ZW50X2FjY2VwdC5jCkBAIC0xMTgsNiArMTE4LDcgQEAKIAogI2lmIChOR1hfU1RBVF9TVFVCKQogICAgICAgICBuZ3hfYXRvbWljX2luYyhuZ3hfc3RhdF9hY2NlcHRlZCk7CisgICAgICAgIG5neF9hdG9taWNfaW5jKG5neF9zdGF0X2FjdGl2ZSk7CiAjZW5kaWYKIAogICAgICAgICBuZ3hfYWNjZXB0X2Rpc2FibGVkID0gKG5neF91aW50X3QpIHMgKyBOR1hfQUNDRVBUX1RIUkVTSE9MRApAQCAtMTM4LDEwICsxMzksNiBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSNpZiAoTkdYX1NUQVRfU1RVQikKLSAgICAgICAgbmd4X2F0b21pY19pbmMobmd4X3N0YXRfYWN0aXZlKTsKLSNlbmRpZgotCiAgICAgICAgIC8qIHNldCBhIGJsb2NraW5nIG1vZGUgZm9yIGFpbyBhbmQgbm9uLWJsb2NraW5nIG1vZGUgZm9yIG90aGVycyAqLwogCiAgICAgICAgIGlmIChuZ3hfaW5oZXJpdGVkX25vbmJsb2NraW5nKSB7CkBAIC0yNjMsNiArMjYwLDEwIEBACiAKICAgICAgICAgYy0+bnVtYmVyID0gbmd4X2F0b21pY19pbmMobmd4X2Nvbm5lY3Rpb25fY291bnRlcik7CiAKKyNpZiAoTkdYX1NUQVRfU1RVQikKKyAgICAgICAgbmd4X2F0b21pY19pbmMobmd4X3N0YXRfaGFuZGxlZCk7CisjZW5kaWYKKwogI2lmIChOR1hfVEhSRUFEUykKICAgICAgICAgcmV2LT5sb2NrID0gJmMtPmxvY2s7CiAgICAgICAgIHdldi0+bG9jayA9ICZjLT5sb2NrOwpAQCAtNDUyLDYgKzQ1MywxMCBAQAogICAgICAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfQUxFUlQsIGxvZywgbmd4X3NvY2tldF9lcnJubywKICAgICAgICAgICAgICAgICAgICAgICBuZ3hfY2xvc2Vfc29ja2V0X24gIiBmYWlsZWQiKTsKICAgICB9CisKKyNpZiAoTkdYX1NUQVRfU1RVQikKKyAgICBuZ3hfYXRvbWljX2RlYyhuZ3hfc3RhdF9hY3RpdmUpOworI2VuZGlmCiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9yYW5nZV9maWx0ZXIuYyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfcmFuZ2VfZmlsdGVyLmMKaW5kZXggMWViNGNjNi4uMDA0OWFmNiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9yYW5nZV9maWx0ZXIuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3JhbmdlX2ZpbHRlci5jCkBAIC0xMTMsNyArMTEzLDcgQEAKICAgICBvZmZfdCAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kOwogICAgIG5neF9pbnRfdCAgICAgICAgICAgICAgICAgICAgIHJjOwogICAgIG5neF91aW50X3QgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCwgaTsKLSAgICBuZ3hfYXRvbWljX2ludF90ICAgICAgICAgICAgICBib3VuZGFyeTsKKyAgICBuZ3hfYXRvbWljX3VpbnRfdCAgICAgICAgICAgICBib3VuZGFyeTsKICAgICBuZ3hfdGFibGVfZWx0X3QgICAgICAgICAgICAgICpjb250ZW50X3JhbmdlOwogICAgIG5neF9odHRwX3JhbmdlX3QgICAgICAgICAgICAgKnJhbmdlOwogICAgIG5neF9odHRwX3JhbmdlX2ZpbHRlcl9jdHhfdCAgKmN0eDsKZGlmZiAtLWdpdCBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfc3R1Yl9zdGF0dXNfbW9kdWxlLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3N0dWJfc3RhdHVzX21vZHVsZS5jCmluZGV4IDgzNGJlYWEuLjdlZWVmNTkgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfc3R1Yl9zdGF0dXNfbW9kdWxlLmMKKysrIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9zdHViX3N0YXR1c19tb2R1bGUuYwpAQCAtNDcsMTEgKzQ3LDExIEBACiAKIHN0YXRpYyBuZ3hfaW50X3Qgbmd4X2h0dHBfc3RhdHVzX2hhbmRsZXIobmd4X2h0dHBfcmVxdWVzdF90ICpyKQogewotICAgIHNpemVfdCAgICAgICAgc2l6ZTsKLSAgICBuZ3hfaW50X3QgICAgIHJjOwotICAgIHVpbnQzMl90ICAgICAgYXAsIGhuLCBhYywgcnEsIHJkLCB3cjsKLSAgICBuZ3hfYnVmX3QgICAgKmI7Ci0gICAgbmd4X2NoYWluX3QgICBvdXQ7CisgICAgc2l6ZV90ICAgICAgICAgICAgIHNpemU7CisgICAgbmd4X2ludF90ICAgICAgICAgIHJjOworICAgIG5neF9idWZfdCAgICAgICAgICpiOworICAgIG5neF9jaGFpbl90ICAgICAgICBvdXQ7CisgICAgbmd4X2F0b21pY19pbnRfdCAgIGFwLCBobiwgYWMsIHJxLCByZCwgd3I7CiAgICAgCiAgICAgaWYgKHItPm1ldGhvZCAhPSBOR1hfSFRUUF9HRVQgJiYgci0+bWV0aG9kICE9IE5HWF9IVFRQX0hFQUQpIHsKICAgICAgICAgcmV0dXJuIE5HWF9IVFRQX05PVF9BTExPV0VEOwpAQCAtODMsMTAgKzgzLDEwIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzaXplID0gc2l6ZW9mKCJBY3RpdmUgY29ubmVjdGlvbnM6ICBcbiIpICsgTkdYX0lOVDMyX0xFTgorICAgIHNpemUgPSBzaXplb2YoIkFjdGl2ZSBjb25uZWN0aW9uczogIFxuIikgKyBOR1hfQVRPTUlDX1RfTEVOCiAgICAgICAgICAgICsgc2l6ZW9mKCJzZXJ2ZXIgYWNjZXB0cyBoYW5kbGVkIHJlcXVlc3RzXG4iKSAtIDEKLSAgICAgICAgICAgKyA2ICsgMyAqIE5HWF9JTlQzMl9MRU4KLSAgICAgICAgICAgKyBzaXplb2YoIlJlYWRpbmc6ICBXcml0aW5nOiAgV2FpdGluZzogIFxuIikgKyAzICogTkdYX0lOVDMyX0xFTjsKKyAgICAgICAgICAgKyA2ICsgMyAqIE5HWF9BVE9NSUNfVF9MRU4KKyAgICAgICAgICAgKyBzaXplb2YoIlJlYWRpbmc6ICBXcml0aW5nOiAgV2FpdGluZzogIFxuIikgKyAzICogTkdYX0FUT01JQ19UX0xFTjsKIAogICAgIGlmICghKGIgPSBuZ3hfY3JlYXRlX3RlbXBfYnVmKHItPnBvb2wsIHNpemUpKSkgewogICAgICAgICByZXR1cm4gTkdYX0hUVFBfSU5URVJOQUxfU0VSVkVSX0VSUk9SOwpAQCAtOTYsMjAgKzk2LDIwIEBACiAgICAgb3V0Lm5leHQgPSBOVUxMOwogCiAgICAgYXAgPSAqbmd4X3N0YXRfYWNjZXB0ZWQ7Ci0gICAgaG4gPSAqbmd4X2Nvbm5lY3Rpb25fY291bnRlcjsKKyAgICBobiA9ICpuZ3hfc3RhdF9oYW5kbGVkOwogICAgIGFjID0gKm5neF9zdGF0X2FjdGl2ZTsKICAgICBycSA9ICpuZ3hfc3RhdF9yZXF1ZXN0czsKICAgICByZCA9ICpuZ3hfc3RhdF9yZWFkaW5nOwogICAgIHdyID0gKm5neF9zdGF0X3dyaXRpbmc7CiAKLSAgICBiLT5sYXN0ID0gbmd4X3NwcmludGYoYi0+bGFzdCwgIkFjdGl2ZSBjb25uZWN0aW9uczogJUQgXG4iLCBhYyk7CisgICAgYi0+bGFzdCA9IG5neF9zcHJpbnRmKGItPmxhc3QsICJBY3RpdmUgY29ubmVjdGlvbnM6ICVBIFxuIiwgYWMpOwogCiAgICAgYi0+bGFzdCA9IG5neF9jcHltZW0oYi0+bGFzdCwgInNlcnZlciBhY2NlcHRzIGhhbmRsZWQgcmVxdWVzdHNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCJzZXJ2ZXIgYWNjZXB0cyBoYW5kbGVkIHJlcXVlc3RzXG4iKSAtIDEpOwogCi0gICAgYi0+bGFzdCA9IG5neF9zcHJpbnRmKGItPmxhc3QsICIgJUQgJUQgJUQgXG4iLCBhcCwgaG4sIHJxKTsKKyAgICBiLT5sYXN0ID0gbmd4X3NwcmludGYoYi0+bGFzdCwgIiAlQSAlQSAlQSBcbiIsIGFwLCBobiwgcnEpOwogCi0gICAgYi0+bGFzdCA9IG5neF9zcHJpbnRmKGItPmxhc3QsICJSZWFkaW5nOiAlRCBXcml0aW5nOiAlRCBXYWl0aW5nOiAlZCBcbiIsCisgICAgYi0+bGFzdCA9IG5neF9zcHJpbnRmKGItPmxhc3QsICJSZWFkaW5nOiAlQSBXcml0aW5nOiAlQSBXYWl0aW5nOiAlQSBcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJkLCB3ciwgYWMgLSAocmQgKyB3cikpOwogCiAgICAgci0+aGVhZGVyc19vdXQuc3RhdHVzID0gTkdYX0hUVFBfT0s7CmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmMgYi9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmMKaW5kZXggZjQ5MDg0Ny4uYjdlNTNmZiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuYwpAQCAtMTQ4LDcgKzE0OCw3IEBACiAgICAgICAgICAgICBuZ3hfbXV0ZXhfdW5sb2NrKG5neF9wb3N0ZWRfZXZlbnRzX211dGV4KTsKIAogI2lmIChOR1hfU1RBVF9TVFVCKQotICAgICAgICBuZ3hfYXRvbWljX2luYyhuZ3hfc3RhdF9yZWFkaW5nKTsKKyAgICAgICAgICAgIG5neF9hdG9taWNfaW5jKG5neF9zdGF0X3JlYWRpbmcpOwogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF9hdG9taWMuaCBiL3NyYy9vcy91bml4L25neF9hdG9taWMuaAppbmRleCBjMzEzOTY0Li5kODgyYTAyIDEwMDY0NAotLS0gYS9zcmMvb3MvdW5peC9uZ3hfYXRvbWljLmgKKysrIGIvc3JjL29zL3VuaXgvbmd4X2F0b21pYy5oCkBAIC0xNiw4ICsxNiw5IEBACiAKICNkZWZpbmUgTkdYX0hBVkVfQVRPTUlDX09QUyAgMQogCi10eXBlZGVmIHVpbnQzMl90ICBuZ3hfYXRvbWljX2ludF90OwotdHlwZWRlZiB2b2xhdGlsZSBuZ3hfYXRvbWljX2ludF90ICBuZ3hfYXRvbWljX3Q7Cit0eXBlZGVmIGludDMyX3QgIG5neF9hdG9taWNfaW50X3Q7Cit0eXBlZGVmIHVpbnQzMl90ICBuZ3hfYXRvbWljX3VpbnRfdDsKK3R5cGVkZWYgdm9sYXRpbGUgbmd4X2F0b21pY191aW50X3QgIG5neF9hdG9taWNfdDsKICNkZWZpbmUgTkdYX0FUT01JQ19UX0xFTiAgc2l6ZW9mKCItMjE0NzQ4MzY0OCIpIC0gMQogCiAKQEAgLTMxLDEyICszMiwxOCBAQAogICogdGhlICI9cSIgaXMgYW55IG9mIHRoZSAlZWF4LCAlZWJ4LCAlZWN4LCBvciAlZWR4IHJlZ2lzdGVycy4KICAqIHRoZSAnIjAiICgxKScgcGFyYW1ldGVyIHByZWxvYWRzIDEgaW50byAlMC4KICAqIHRoZSAiY2MiIG1lYW5zIHRoYXQgZmxhZ3Mgd2VyZSBjaGFuZ2VkLgorICoKKyAqICJ4YWRkICByLCBbbV0iOgorICoKKyAqICAgICB0ZW1wID0gW21dOworICogICAgIFttXSArPSByOworICogICAgIHIgPSB0ZW1wOwogICovCiAKLXN0YXRpYyBuZ3hfaW5saW5lIG5neF9hdG9taWNfaW50X3QKK3N0YXRpYyBuZ3hfaW5saW5lIG5neF9hdG9taWNfdWludF90CiBuZ3hfYXRvbWljX2luYyhuZ3hfYXRvbWljX3QgKnZhbHVlKQogewotICAgIG5neF9hdG9taWNfaW50X3QgIG9sZDsKKyAgICBuZ3hfYXRvbWljX3VpbnRfdCAgb2xkOwogCiAgICAgX19hc21fXyB2b2xhdGlsZSAoCiAKQEAgLTUwLDEwICs1NywxMCBAQAogfQogCiAKLXN0YXRpYyBuZ3hfaW5saW5lIG5neF9hdG9taWNfaW50X3QKK3N0YXRpYyBuZ3hfaW5saW5lIG5neF9hdG9taWNfdWludF90CiBuZ3hfYXRvbWljX2RlYyhuZ3hfYXRvbWljX3QgKnZhbHVlKQogewotICAgIG5neF9hdG9taWNfaW50X3QgIG9sZDsKKyAgICBuZ3hfYXRvbWljX3VpbnRfdCAgb2xkOwogCiAgICAgX19hc21fXyB2b2xhdGlsZSAoCiAKQEAgLTc0LDIwICs4MSwyMCBAQAogICoKICAqICJjbXB4Y2hnICByLCBbbV0iOgogICoKLSAqICAgaWYgKGVheCA9PSBbbV0pIHsKLSAqICAgICAgIHpmID0gMTsKLSAqICAgICAgIFttXSA9IHI7Ci0gKiAgIH0gZWxzZSB7Ci0gKiAgICAgICB6ZiA9IDA7Ci0gKiAgICAgICBlYXggPSBbbV07Ci0gKiAgIH0KKyAqICAgICBpZiAoZWF4ID09IFttXSkgeworICogICAgICAgICB6ZiA9IDE7CisgKiAgICAgICAgIFttXSA9IHI7CisgKiAgICAgfSBlbHNlIHsKKyAqICAgICAgICAgemYgPSAwOworICogICAgICAgICBlYXggPSBbbV07CisgKiAgICAgfQogICovCiAKLXN0YXRpYyBuZ3hfaW5saW5lIG5neF9hdG9taWNfaW50X3QKLW5neF9hdG9taWNfY21wX3NldChuZ3hfYXRvbWljX3QgKmxvY2ssIG5neF9hdG9taWNfaW50X3Qgb2xkLAotICAgIG5neF9hdG9taWNfaW50X3Qgc2V0KQorc3RhdGljIG5neF9pbmxpbmUgbmd4X2F0b21pY191aW50X3QKK25neF9hdG9taWNfY21wX3NldChuZ3hfYXRvbWljX3QgKmxvY2ssIG5neF9hdG9taWNfdWludF90IG9sZCwKKyAgICBuZ3hfYXRvbWljX3VpbnRfdCBzZXQpCiB7Ci0gICAgbmd4X2F0b21pY19pbnRfdCAgcmVzOworICAgIG5neF9hdG9taWNfdWludF90ICByZXM7CiAKICAgICBfX2FzbV9fIHZvbGF0aWxlICgKIApAQCAtMTA3LDcgKzExNCw4IEBACiAjZGVmaW5lIE5HWF9IQVZFX0FUT01JQ19PUFMgIDEKIAogdHlwZWRlZiBpbnQ2NF90ICBuZ3hfYXRvbWljX2ludF90OwotdHlwZWRlZiB2b2xhdGlsZSBuZ3hfYXRvbWljX2ludF90ICBuZ3hfYXRvbWljX3Q7Cit0eXBlZGVmIHVpbnQ2NF90ICBuZ3hfYXRvbWljX3VpbnRfdDsKK3R5cGVkZWYgdm9sYXRpbGUgbmd4X2F0b21pY191aW50X3QgIG5neF9hdG9taWNfdDsKICNkZWZpbmUgTkdYX0FUT01JQ19UX0xFTiAgc2l6ZW9mKCItOTIyMzM3MjAzNjg1NDc3NTgwOCIpIC0gMQogCiAKQEAgLTExOCwxMCArMTI2LDEwIEBACiAjZW5kaWYKIAogCi1zdGF0aWMgbmd4X2lubGluZSBuZ3hfYXRvbWljX2ludF90CitzdGF0aWMgbmd4X2lubGluZSBuZ3hfYXRvbWljX3VpbnRfdAogbmd4X2F0b21pY19pbmMobmd4X2F0b21pY190ICp2YWx1ZSkKIHsKLSAgICBuZ3hfYXRvbWljX2ludF90ICBvbGQ7CisgICAgbmd4X2F0b21pY191aW50X3QgIG9sZDsKIAogICAgIF9fYXNtX18gdm9sYXRpbGUgKAogCkBAIC0xMzcsMTAgKzE0NSwxMCBAQAogCiAvKiB0aGUgJyIwIiAoLTFMTCknIHBhcmFtZXRlciBwcmVsb2FkcyAtMSBpbnRvIHRoZSA2NC1iaXQgJTAgcmVnaXN0ZXIgKi8KIAotc3RhdGljIG5neF9pbmxpbmUgbmd4X2F0b21pY19pbnRfdAorc3RhdGljIG5neF9pbmxpbmUgbmd4X2F0b21pY191aW50X3QKIG5neF9hdG9taWNfZGVjKG5neF9hdG9taWNfdCAqdmFsdWUpCiB7Ci0gICAgbmd4X2F0b21pY19pbnRfdCAgb2xkOworICAgIG5neF9hdG9taWNfdWludF90ICBvbGQ7CiAKICAgICBfX2FzbV9fIHZvbGF0aWxlICgKIApAQCAtMTU2LDExICsxNjQsMTEgQEAKIAogLyogdGhlICI9YSIgYW5kICJhIiBhcmUgdGhlICVyYXggcmVnaXN0ZXIuICovCiAKLXN0YXRpYyBuZ3hfaW5saW5lIG5neF9hdG9taWNfaW50X3QKLW5neF9hdG9taWNfY21wX3NldChuZ3hfYXRvbWljX3QgKmxvY2ssIG5neF9hdG9taWNfaW50X3Qgb2xkLAotICAgIG5neF9hdG9taWNfaW50X3Qgc2V0KQorc3RhdGljIG5neF9pbmxpbmUgbmd4X2F0b21pY191aW50X3QKK25neF9hdG9taWNfY21wX3NldChuZ3hfYXRvbWljX3QgKmxvY2ssIG5neF9hdG9taWNfdWludF90IG9sZCwKKyAgICBuZ3hfYXRvbWljX3VpbnRfdCBzZXQpCiB7Ci0gICAgbmd4X2F0b21pY19pbnRfdCAgcmVzOworICAgIG5neF9hdG9taWNfdWludF90ICByZXM7CiAKICAgICBfX2FzbV9fIHZvbGF0aWxlICgKIApAQCAtMTgwLDE2ICsxODgsMTggQEAKICNkZWZpbmUgTkdYX0hBVkVfQVRPTUlDX09QUyAgMQogCiAjaWYgKE5HWF9QVFJfU0laRSA9PSA4KQotdHlwZWRlZiB1aW50NjRfdCAgbmd4X2F0b21pY19pbnRfdDsKK3R5cGVkZWYgaW50NjRfdCAgbmd4X2F0b21pY19pbnRfdDsKK3R5cGVkZWYgdWludDY0X3QgIG5neF9hdG9taWNfdWludF90OwogI2RlZmluZSBOR1hfQVRPTUlDX1RfTEVOICBzaXplb2YoIi05MjIzMzcyMDM2ODU0Nzc1ODA4IikgLSAxCiAjZGVmaW5lIE5HWF9DQVNYQSAgICAgICAgICJjYXN4YSIKICNlbHNlCi10eXBlZGVmIHVpbnQzMl90ICBuZ3hfYXRvbWljX2ludF90OwordHlwZWRlZiBpbnQzMl90ICBuZ3hfYXRvbWljX2ludF90OwordHlwZWRlZiB1aW50MzJfdCAgbmd4X2F0b21pY191aW50X3Q7CiAjZGVmaW5lIE5HWF9BVE9NSUNfVF9MRU4gIHNpemVvZigiLTIxNDc0ODM2NDgiKSAtIDEKICNkZWZpbmUgTkdYX0NBU1hBICAgICAgICAgImNhc2EiCiAjZW5kaWYKIAotdHlwZWRlZiB2b2xhdGlsZSBuZ3hfYXRvbWljX2ludF90ICBuZ3hfYXRvbWljX3Q7Cit0eXBlZGVmIHZvbGF0aWxlIG5neF9hdG9taWNfdWludF90ICBuZ3hfYXRvbWljX3Q7CiAKIAogLyoKQEAgLTIwNywxMCArMjE3LDEwIEBACiAgKiBzbyAicjAgPT0gcjIiIG1lYW5zIHRoYXQgdGhlIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bGwuCiAgKi8KIAotc3RhdGljIG5neF9pbmxpbmUgbmd4X2F0b21pY19pbnRfdAorc3RhdGljIG5neF9pbmxpbmUgbmd4X2F0b21pY191aW50X3QKIG5neF9hdG9taWNfaW5jKG5neF9hdG9taWNfdCAqdmFsdWUpCiB7Ci0gICAgbmd4X2F0b21pY19pbnRfdCAgb2xkLCBuZXcsIHJlczsKKyAgICBuZ3hfYXRvbWljX3VpbnRfdCAgb2xkLCBuZXcsIHJlczsKIAogICAgIG9sZCA9ICp2YWx1ZTsKIApAQCAtMjM0LDEwICsyNDQsMTAgQEAKIH0KIAogCi1zdGF0aWMgbmd4X2lubGluZSBuZ3hfYXRvbWljX2ludF90CitzdGF0aWMgbmd4X2lubGluZSBuZ3hfYXRvbWljX3VpbnRfdAogbmd4X2F0b21pY19kZWMobmd4X2F0b21pY190ICp2YWx1ZSkKIHsKLSAgICBuZ3hfYXRvbWljX2ludF90ICBvbGQsIG5ldywgcmVzOworICAgIG5neF9hdG9taWNfdWludF90ICBvbGQsIG5ldywgcmVzOwogCiAgICAgb2xkID0gKnZhbHVlOwogCkBAIC0yNjEsOCArMjcxLDkgQEAKIH0KIAogCi1zdGF0aWMgbmd4X2lubGluZSBuZ3hfYXRvbWljX2ludF90Ci1uZ3hfYXRvbWljX2NtcF9zZXQobmd4X2F0b21pY190ICpsb2NrLCBuZ3hfYXRvbWljX2ludF90IG9sZCwgbmd4X2F0b21pY19pbnRfdCBzZXQpCitzdGF0aWMgbmd4X2lubGluZSBuZ3hfYXRvbWljX3VpbnRfdAorbmd4X2F0b21pY19jbXBfc2V0KG5neF9hdG9taWNfdCAqbG9jaywgbmd4X2F0b21pY191aW50X3Qgb2xkLAorICAgIG5neF9hdG9taWNfdWludF90IHNldCkKIHsKICAgICBfX2FzbV9fIHZvbGF0aWxlICgKIApAQCAtMjc5LDE0ICsyOTAsMTYgQEAKICNkZWZpbmUgTkdYX0hBVkVfQVRPTUlDX09QUyAgMQogCiAjaWYgKE5HWF9QVFJfU0laRSA9PSA4KQotdHlwZWRlZiB1aW50NjRfdCAgbmd4X2F0b21pY19pbnRfdDsKK3R5cGVkZWYgaW50NjRfdCAgbmd4X2F0b21pY19pbnRfdDsKK3R5cGVkZWYgdWludDY0X3QgIG5neF9hdG9taWNfdWludF90OwogI2RlZmluZSBOR1hfQVRPTUlDX1RfTEVOICBzaXplb2YoIi05MjIzMzcyMDM2ODU0Nzc1ODA4IikgLSAxCiAjZWxzZQordHlwZWRlZiBpbnQzMl90ICBuZ3hfYXRvbWljX2ludF90OwordHlwZWRlZiB1aW50MzJfdCAgbmd4X2F0b21pY191aW50X3Q7CiAjZGVmaW5lIE5HWF9BVE9NSUNfVF9MRU4gIHNpemVvZigiLTIxNDc0ODM2NDgiKSAtIDEKLXR5cGVkZWYgdWludDMyX3QgIG5neF9hdG9taWNfaW50X3Q7CiAjZW5kaWYKIAotdHlwZWRlZiB2b2xhdGlsZSBuZ3hfYXRvbWljX2ludF90ICBuZ3hfYXRvbWljX3Q7Cit0eXBlZGVmIHZvbGF0aWxlIG5neF9hdG9taWNfdWludF90ICBuZ3hfYXRvbWljX3Q7CiAKIAogLyoKQEAgLTMwMSwxMCArMzE0LDEwIEBACiAgKiB0aGUgbmVhcmVzdCBmb3J3YXJkIGxhYmVsICIxIi4KICAqLwogCi1zdGF0aWMgbmd4X2lubGluZSBuZ3hfYXRvbWljX2ludF90CitzdGF0aWMgbmd4X2lubGluZSBuZ3hfYXRvbWljX3VpbnRfdAogbmd4X2F0b21pY19pbmMobmd4X2F0b21pY190ICp2YWx1ZSkKIHsKLSAgICBuZ3hfYXRvbWljX2ludF90ICByZXM7CisgICAgbmd4X2F0b21pY191aW50X3QgIHJlczsKIAogICAgIF9fYXNtX18gdm9sYXRpbGUgKAogCkBAIC0zMjEsMTAgKzMzNCwxMCBAQAogfQogCiAKLXN0YXRpYyBuZ3hfaW5saW5lIG5neF9hdG9taWNfaW50X3QKK3N0YXRpYyBuZ3hfaW5saW5lIG5neF9hdG9taWNfdWludF90CiBuZ3hfYXRvbWljX2RlYyhuZ3hfYXRvbWljX3QgKnZhbHVlKQogewotICAgIG5neF9hdG9taWNfaW50X3QgIHJlczsKKyAgICBuZ3hfYXRvbWljX3VpbnRfdCAgcmVzOwogCiAgICAgX19hc21fXyB2b2xhdGlsZSAoCiAKQEAgLTM0MSwxMSArMzU0LDExIEBACiB9CiAKIAotc3RhdGljIG5neF9pbmxpbmUgbmd4X2F0b21pY19pbnRfdAotbmd4X2F0b21pY19jbXBfc2V0KG5neF9hdG9taWNfdCAqbG9jaywgbmd4X2F0b21pY19pbnRfdCBvbGQsCi0gICAgbmd4X2F0b21pY19pbnRfdCBzZXQpCitzdGF0aWMgbmd4X2lubGluZSBuZ3hfYXRvbWljX3VpbnRfdAorbmd4X2F0b21pY19jbXBfc2V0KG5neF9hdG9taWNfdCAqbG9jaywgbmd4X2F0b21pY191aW50X3Qgb2xkLAorICAgIG5neF9hdG9taWNfdWludF90IHNldCkKIHsKLSAgICBuZ3hfYXRvbWljX2ludF90ICByZXMsIHRlbXA7CisgICAgbmd4X2F0b21pY191aW50X3QgIHJlcywgdGVtcDsKIAogICAgIF9fYXNtX18gdm9sYXRpbGUgKAogCkBAIC0zNzIsMTUgKzM4NSwxNiBAQAogCiAjZGVmaW5lIE5HWF9IQVZFX0FUT01JQ19PUFMgIDAKIAotdHlwZWRlZiB1aW50MzJfdCAgbmd4X2F0b21pY19pbnRfdDsKLXR5cGVkZWYgdm9sYXRpbGUgbmd4X2F0b21pY19pbnRfdCAgbmd4X2F0b21pY190OwordHlwZWRlZiBpbnQzMl90ICBuZ3hfYXRvbWljX2ludF90OwordHlwZWRlZiB1aW50MzJfdCAgbmd4X2F0b21pY191aW50X3Q7Cit0eXBlZGVmIHZvbGF0aWxlIG5neF9hdG9taWNfdWludF90ICBuZ3hfYXRvbWljX3Q7CiAKICNkZWZpbmUgbmd4X2F0b21pY19pbmMoeCkgICsrKCooeCkpCiAjZGVmaW5lIG5neF9hdG9taWNfZGVjKHgpICAtLSgqKHgpKQogCi1zdGF0aWMgbmd4X2lubGluZSBuZ3hfYXRvbWljX2ludF90Ci1uZ3hfYXRvbWljX2NtcF9zZXQobmd4X2F0b21pY190ICpsb2NrLCBuZ3hfYXRvbWljX2ludF90IG9sZCwKLSAgICAgbmd4X2F0b21pY19pbnRfdCBzZXQpCitzdGF0aWMgbmd4X2lubGluZSBuZ3hfYXRvbWljX3VpbnRfdAorbmd4X2F0b21pY19jbXBfc2V0KG5neF9hdG9taWNfdCAqbG9jaywgbmd4X2F0b21pY191aW50X3Qgb2xkLAorICAgICBuZ3hfYXRvbWljX3VpbnRfdCBzZXQpCiB7CiAgICAgICpsb2NrID0gc2V0OwogICAgICByZXR1cm4gMTsK