From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jakub Jelinek To: git-commits@fedoraproject.org Subject: [rpms/gcc] rhel-f41-base: 4.3.0-4 Date: Mon, 29 Jun 2026 12:23:44 GMT Message-ID: <178273582438.1.14715969139119634433.rpms-gcc-63fa8769dba0@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: 63fa8769dba0ee46951399dfd9cb6ef75b212590 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogNjNmYTg3NjlkYmEwZWU0Njk1MTM5OWRmZDljYjZlZjc1 YjIxMjU5MApBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkBmZWRvcmFwcm9qZWN0Lm9yZz4K RGF0ZSAgIDogMjAwOC0wMy0yNlQxOTo1Njo1NyswMDowMApTdGF0cyAgOiArMjg3NS8tNCBpbiA2 IGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9nY2Mv Yy82M2ZhODc2OWRiYTBlZTQ2OTUxMzk5ZGZkOWNiNmVmNzViMjEyNTkwP2JyYW5jaD1yaGVsLWY0 MS1iYXNlCgpMb2c6CjQuMy4wLTQKCi0tLQpkaWZmIC0tZ2l0IGEvLmN2c2lnbm9yZSBiLy5jdnNp Z25vcmUKaW5kZXggMzE0OGY5YS4uMjMyYjVmYiAxMDA2NDQKLS0tIGEvLmN2c2lnbm9yZQorKysg Yi8uY3ZzaWdub3JlCkBAIC0xLDIgKzEsMiBAQAotZ2NjLTQuMy4wLTIwMDgwMzE0LnRhci5iejIK K2djYy00LjMuMC0yMDA4MDMyNi50YXIuYnoyCiBmYXN0amFyLTAuOTUudGFyLmd6CgpkaWZmIC0t Z2l0IGEvZ2NjNDMtbGliZ29tcC1zcGVlZHVwLnBhdGNoIGIvZ2NjNDMtbGliZ29tcC1zcGVlZHVw LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NzEyNjYKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2M0My1saWJnb21wLXNwZWVkdXAucGF0Y2gKQEAgLTAsMCArMSwyNzMy IEBACisyMDA4LTAzLTI2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KKworCSog bG9vcC5jIChnb21wX2xvb3BfaW5pdCk6IEZpeCBHRlNfRFlOQU1JQyB3cy0+bW9kZSBzZXR0aW5n LgorCSogdGVzdHN1aXRlL2xpYmdvbXAuYy9sb29wLTQuYzogTmV3IHRlc3QuCisKKwkqIGxpYmdv bXAuaCAoc3RydWN0IGdvbXBfdGVhbV9zdGF0ZSk6IEFkZCBzaW5nbGVfY291bnQgZmllbGQuCisJ KHN0cnVjdCBnb21wX3RlYW0pOiBMaWtld2lzZS4KKwkqIHRlYW0uYyAoZ29tcF9uZXdfdGVhbSk6 IENsZWFyIHNpbmdsZV9jb3VudC4KKwkoZ29tcF90ZWFtX3N0YXJ0KTogTGlrZXdpc2UuCisJKiBz aW5nbGUuYyAoR09NUF9zaW5nbGVfc3RhcnQpOiBSZXdyaXR0ZW4gaWYgSEFWRV9TWU5DX0JVSUxU SU5TLgorCisyMDA4LTAzLTI1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KKwor CSogdGVhbS5jIChnb21wX3RocmVhZF9zdGFydCk6IERvbid0IGNsZWFyIHRzLnN0YXRpY190cmlw IGhlcmUuCisJKiBsb29wLmMgKGdvbXBfbG9vcF9zdGF0aWNfc3RhcnQsIGdvbXBfbG9vcF9keW5h bWljX3N0YXJ0KTogQ2xlYXIKKwl0cy5zdGF0aWNfdHJpcCBoZXJlLgorCSogd29yay5jIChnb21w X3dvcmtfc2hhcmVfc3RhcnQpOiBEb24ndCBjbGVhciB0cy5zdGF0aWNfdHJpcCBoZXJlLgorCisy MDA4LTAzLTIxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KKworCSogbGliZ29t cC5oOiBJbmNsdWRlIHB0cmxvY2suaC4KKwkoc3RydWN0IGdvbXBfd29ya19zaGFyZSk6IFJlc2h1 ZmZsZSBmaWVsZHMuICBBZGQgbmV4dF9hbGxvYywKKwluZXh0X3dzLCBuZXh0X2ZyZWUgYW5kIGlu bGluZV9vcmRlcmVkX3RlYW1faWRzIGZpZWxkcywgY2hhbmdlCisJb3JkZXJlZF90ZWFtX2lkcyBp bnRvIHBvaW50ZXIgZnJvbSBmbGV4aWJsZSBhcnJheSBtZW1iZXIuCisJKHN0cnVjdCBnb21wX3Rl YW1fc3RhdGUpOiBBZGQgbGFzdF93b3JrX3NoYXJlIGZpZWxkLCByZW1vdmUKKwl3b3JrX3NoYXJl X2dlbmVyYXRpb24uCisJKHN0cnVjdCBnb21wX3RlYW0pOiBSZW1vdmUgd29ya19zaGFyZV9sb2Nr LCBnZW5lcmF0aW9uX21hc2ssCisJb2xkZXN0X2xpdmVfZ2VuLCBudW1fbGl2ZV9nZW4gYW5kIGlu aXRfd29ya19zaGFyZXMgZmllbGRzLCBhZGQKKwl3b3JrIHdvcmtfc2hhcmVfbGlzdF9hbGxvYywg d29ya19zaGFyZV9saXN0X2ZyZWUgYW5kIHdvcmtfc2hhcmVfY2h1bmsKKwlmaWVsZHMuICBDaGFu Z2Ugd29ya19zaGFyZXMgZnJvbSBwb2ludGVyIHRvIHBvaW50ZXJzIGludG8gYW4gYXJyYXkuCisJ KGdvbXBfbmV3X3RlYW0pOiBOZXcgcHJvdG90eXBlLgorCShnb21wX3RlYW1fc3RhcnQpOiBDaGFu Z2UgdHlwZSBvZiBsYXN0IGFyZ3VtZW50LgorCShnb21wX25ld193b3JrX3NoYXJlKTogUmVtb3Zl ZC4KKwkoZ29tcF9pbml0X3dvcmtfc2hhcmUsIGdvbXBfZmluaV93b3JrX3NoYXJlKTogTmV3IHBy b3RvdHlwZXMuCisJKGdvbXBfd29ya19zaGFyZV9pbml0X2RvbmUpOiBOZXcgc3RhdGljIGlubGlu ZS4KKwkqIHRlYW0uYyAoZ29tcF90aHJlYWRfc3RhcnQpOiBDbGVhciB0cy5sYXN0X3dvcmtfc2hh cmUsIGRvbid0IGNsZWFyCisJdHMud29ya19zaGFyZV9nZW5lcmF0aW9uLgorCShuZXdfdGVhbSk6 IFJlbW92ZWQuCisJKGdvbXBfbmV3X3RlYW0pOiBOZXcgZnVuY3Rpb24uCisJKGZyZWVfdGVhbSk6 IEZyZWUgZ29tcF93b3JrX3NoYXJlIGJsb2NrcyBjaGFpbmVkIHRocm91Z2ggbmV4dF9hbGxvYywK KwlpbnN0ZWFkIG9mIGZyZWVpbmcgd29ya19zaGFyZXMgYW5kIGRlc3Ryb3lpbmcgd29ya19zaGFy ZV9sb2NrLgorCShnb21wX3RlYW1fc3RhcnQpOiBDaGFuZ2UgbGFzdCBhcmd1bWVudCBmcm9tIHdz IHRvIHRlYW0sIGRvbid0IGNyZWF0ZQorCW5ldyB0ZWFtLCBzZXQgdHMud29ya19zaGFyZSB0byAm dGVhbS0+d29ya19zaGFyZXNbMF0gYW5kIGNsZWFyCisJdHMubGFzdF93b3JrX3NoYXJlLiAgRG9u J3QgY2xlYXIgdHMud29ya19zaGFyZV9nZW5lcmF0aW9uLgorCShnb21wX3RlYW1fZW5kKTogQ2Fs bCBnb21wX2Zpbmlfd29ya19zaGFyZS4KKwkqIHdvcmsuYyAoZ29tcF9uZXdfd29ya19zaGFyZSk6 IFJlbW92ZWQuCisJKGFsbG9jX3dvcmtfc2hhcmUsIGdvbXBfaW5pdF93b3JrX3NoYXJlLCBnb21w X2Zpbmlfd29ya19zaGFyZSk6IE5ldworCWZ1bmN0aW9ucy4KKwkoZnJlZV93b3JrX3NoYXJlKTog QWRkIHRlYW0gYXJndW1lbnQuICBDYWxsIGdvbXBfZmluaV93b3JrX3NoYXJlCisJYW5kIHRoZW4g ZWl0aGVyIGZyZWUgd3MgaWYgb3JwaGFuZWQsIG9yIHB1dCBpdCBpbnRvCisJd29ya19zaGFyZV9s aXN0X2ZyZWUgbGlzdCBvZiB0aGUgY3VycmVudCB0ZWFtLgorCShnb21wX3dvcmtfc2hhcmVfc3Rh cnQsIGdvbXBfd29ya19zaGFyZV9lbmQsCisJZ29tcF93b3JrX3NoYXJlX2VuZF9ub3dhaXQpOiBS ZXdyaXR0ZW4uCisJKiBzZWN0aW9ucy5jIChHT01QX3NlY3Rpb25zX3N0YXJ0KTogQ2FsbCBnb21w X3dvcmtfc2hhcmVfaW5pdF9kb25lCisJYWZ0ZXIgZ29tcF9zZWN0aW9uc19pbml0LiAgSWYgSEFW RV9TWU5DX0JVSUxUSU5TLCBjYWxsCisJZ29tcF9pdGVyX2R5bmFtaWNfbmV4dCBpbnN0ZWFkIG9m IHRoZSBfbG9ja2VkIHZhcmlhbnQgYW5kIGRvbid0IHRha2UKKwlsb2NrIGFyb3VuZCBpdCwgb3Ro ZXJ3aXNlIGFjcXVpcmUgaXQgYmVmb3JlIGNhbGxpbmcKKwlnb21wX2l0ZXJfZHluYW1pY19uZXh0 X2xvY2tlZC4KKwkoR09NUF9zZWN0aW9uc19uZXh0KTogSWYgSEFWRV9TWU5DX0JVSUxUSU5TLCBj YWxsCisJZ29tcF9pdGVyX2R5bmFtaWNfbmV4dCBpbnN0ZWFkIG9mIHRoZSBfbG9ja2VkIHZhcmlh bnQgYW5kIGRvbid0IHRha2UKKwlsb2NrIGFyb3VuZCBpdC4KKwkoR09NUF9wYXJhbGxlbF9zZWN0 aW9uc19zdGFydCk6IENhbGwgZ29tcF9uZXdfdGVhbSBpbnN0ZWFkIG9mCisJZ29tcF9uZXdfd29y a19zaGFyZS4gIENhbGwgZ29tcF9zZWN0aW9uc19pbml0IG9uICZ0ZWFtLT53b3JrX3NoYXJlc1sw XS4KKwlBZGp1c3QgZ29tcF90ZWFtX3N0YXJ0IGNhbGxlci4KKwkqIGxvb3AuYyAoZ29tcF9sb29w X3N0YXRpY19zdGFydCwgZ29tcF9sb29wX29yZGVyZWRfc3RhdGljX3N0YXJ0KTogQ2FsbAorCWdv bXBfd29ya19zaGFyZV9pbml0X2RvbmUgYWZ0ZXIgZ29tcF9sb29wX2luaXQuICBEb24ndCB1bmxv Y2sgd3MtPmxvY2suCisJKGdvbXBfbG9vcF9keW5hbWljX3N0YXJ0LCBnb21wX2xvb3BfZ3VpZGVk X3N0YXJ0KTogQ2FsbAorCWdvbXBfd29ya19zaGFyZV9pbml0X2RvbmUgYWZ0ZXIgZ29tcF9sb29w X2luaXQuICBJZiBIQVZFX1NZTkNfQlVJTFRJTlMsCisJZG9uJ3QgdW5sb2NrIHdzLT5sb2NrLCBv dGhlcndpc2UgbG9jayBpdC4KKwkoZ29tcF9sb29wX29yZGVyZWRfZHluYW1pY19zdGFydCwgZ29t cF9sb29wX29yZGVyZWRfZ3VpZGVkX3N0YXJ0KTogQ2FsbAorCWdvbXBfd29ya19zaGFyZV9pbml0 X2RvbmUgYWZ0ZXIgZ29tcF9sb29wX2luaXQuICBMb2NrIHdzLT5sb2NrLgorCShnb21wX3BhcmFs bGVsX2xvb3Bfc3RhcnQpOiBDYWxsIGdvbXBfbmV3X3RlYW0gaW5zdGVhZCBvZgorCWdvbXBfbmV3 X3dvcmtfc2hhcmUuICBDYWxsIGdvbXBfbG9vcF9pbml0IG9uICZ0ZWFtLT53b3JrX3NoYXJlc1sw XS4KKwlBZGp1c3QgZ29tcF90ZWFtX3N0YXJ0IGNhbGxlci4KKwkqIHNpbmdsZS5jIChHT01QX3Np bmdsZV9zdGFydCwgR09NUF9zaW5nbGVfY29weV9zdGFydCk6IENhbGwKKwlnb21wX3dvcmtfc2hh cmVfaW5pdF9kb25lIGlmIGdvbXBfd29ya19zaGFyZV9zdGFydCByZXR1cm5lZCB0cnVlLgorCURv bid0IHVubG9jayB3cy0+bG9jay4KKwkqIHBhcmFsbGVsLmMgKEdPTVBfcGFyYWxsZWxfc3RhcnQp OiBDYWxsIGdvbXBfbmV3X3RlYW0gYW5kIHBhc3MgdGhhdAorCWFzIGxhc3QgYXJndW1lbnQgdG8g Z29tcF90ZWFtX3N0YXJ0LgorCSogY29uZmlnL2xpbnV4L3B0cmxvY2suYzogTmV3IGZpbGUuCisJ KiBjb25maWcvbGludXgvcHRybG9jay5oOiBOZXcgZmlsZS4KKwkqIGNvbmZpZy9wb3NpeC9wdHJs b2NrLmM6IE5ldyBmaWxlLgorCSogY29uZmlnL3Bvc2l4L3B0cmxvY2suaDogTmV3IGZpbGUuCisJ KiBNYWtlZmlsZS5hbSAobGliZ29tcF9sYV9TT1VSQ0VTKTogQWRkIHB0cmxvY2suYy4KKwkqIE1h a2VmaWxlLmluOiBSZWdlbmVyYXRlZC4KKwkqIHRlc3RzdWl0ZS9NYWtlZmlsZS5pbjogUmVnZW5l cmF0ZWQuCisKKzIwMDgtMDMtMTkgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgor CisJKiBsaWJnb21wLmggKGdvbXBfYWN0aXZlX3dhaXRfcG9saWN5KTogUmVtb3ZlIGRlY2wuCisJ KGdvbXBfdGhyb3R0bGVkX3NwaW5fY291bnRfdmFyLCBnb21wX2F2YWlsYWJsZV9jcHVzLAorCWdv bXBfbWFuYWdlZF90aHJlYWRzKTogTmV3IGV4dGVybiBkZWNscy4KKwkqIHRlYW0uYyAoZ29tcF90 ZWFtX3N0YXJ0LCBnb21wX3RlYW1fZW5kKTogSWYgbnVtYmVyIG9mIHRocmVhZHMKKwljaGFuZ2Vk LCBhZGp1c3QgYXRvbWljYWxseSBnb21wX21hbmFnZWRfdGhyZWFkcy4KKwkqIGVudi5jIChnb21w X2FjdGl2ZV93YWl0X3BvbGljeSwgZ29tcF9ibG9ja190aW1lX3Zhcik6IFJlbW92ZS4KKwkoZ29t cF90aHJvdHRsZWRfc3Bpbl9jb3VudF92YXIsIGdvbXBfYXZhaWxhYmxlX2NwdXMsCisJZ29tcF9t YW5hZ2VkX3RocmVhZHMpOiBOZXcgdmFyaWFibGVzLgorCShwYXJzZV9taWxsaXMpOiBSZW1vdmVk LgorCShwYXJzZV9zcGluY291bnQpOiBOZXcgZnVuY3Rpb24uCisJKHBhcnNlX3dhaXRfcG9saWN5 KTogUmV0dXJuIC0xLzAvMSBpbnN0ZWFkIG9mIHNldHRpbmcKKwlnb21wX2FjdGl2ZV93YWl0X3Bv bGljeS4KKwkoaW5pdGlhbGl6ZV9lbnYpOiBDYWxsIGdvbXBfaW5pdF9udW1fdGhyZWFkcyB1bmNv bmRpdGlvbmFsbHkuCisJSW5pdGlhbGl6ZSBnb21wX2F2YWlsYWJsZV9jcHVzLiAgQ2FsbCBwYXJz ZV9zcGluY291bnQgaW5zdGVhZAorCW9mIHBhcnNlX21pbGxpcywgaW5pdGlhbGl6ZSBnb21wX3ss dGhyb3R0bGVkX31zcGluX2NvdW50X3ZhcgorCWRlcGVuZGluZyBvbiBwcmVzZW5jZSBhbmQgdmFs dWUgb2YgT01QX1dBSVRfUE9MSUNZIGFuZAorCUdPTVBfU1BJTkNPVU5UIGVudiB2YXJzLgorCSog Y29uZmlnL2xpbnV4L3dhaXQuaCAoZG9fd2FpdCk6IFVzZSBnb21wX3Rocm90dGxlZF9zcGluX2Nv dW50X3ZhcgorCWluc3RlYWQgb2YgZ29tcF9zcGluX2NvdW50X3ZhciBpZiBnb21wX21hbmFnZWRf dGhyZWFkcyA+CisJZ29tcF9hdmFpbGFibGVfY3B1cy4KKworCSogY29uZmlnL2xpbnV4L3dhaXQu aDogSW5jbHVkZSBlcnJuby5oLgorCShGVVRFWF9XQUlULCBGVVRFWF9XQUtFLCBGVVRFWF9QUklW QVRFX0ZMQUcpOiBEZWZpbmUuCisJKGdvbXBfZnV0ZXhfd2FrZSwgZ29tcF9mdXRleF93YWl0KTog TmV3IGV4dGVybiBkZWNscy4KKwkqIGNvbmZpZy9saW51eC9tdXRleC5jIChnb21wX2Z1dGV4X3dh a2UsIGdvbXBfZnV0ZXhfd2FpdCk6IE5ldworCXZhcmlhYmxlcy4KKwkqIGNvbmZpZy9saW51eC9w b3dlcnBjL2Z1dGV4LmggKEZVVEVYX1dBSVQsIEZVVEVYX1dBS0UpOiBSZW1vdmUuCisJKHN5c19m dXRleDApOiBSZXR1cm4gZXJyb3IgY29kZS4KKwkoZnV0ZXhfd2FrZSwgZnV0ZXhfd2FpdCk6IElm IEVOT1NZUyB3YXMgcmV0dXJuZWQsIGNsZWFyCisJRlVURVhfUFJJVkFURV9GTEFHIGluIGdvbXBf ZnV0ZXhfd2F7a2UsaXR9IGFuZCByZXRyeS4KKwkqIGNvbmZpZy9saW51eC9hbHBoYS9mdXRleC5o IChGVVRFWF9XQUlULCBGVVRFWF9XQUtFKTogUmVtb3ZlLgorCShmdXRleF93YWtlLCBmdXRleF93 YWl0KTogSWYgRU5PU1lTIHdhcyByZXR1cm5lZCwgY2xlYXIKKwlGVVRFWF9QUklWQVRFX0ZMQUcg aW4gZ29tcF9mdXRleF93YXtrZSxpdH0gYW5kIHJldHJ5LgorCSogY29uZmlnL2xpbnV4L3g4Ni9m dXRleC5oIChGVVRFWF9XQUlULCBGVVRFWF9XQUtFKTogUmVtb3ZlLgorCShzeXNfZnV0ZXgwKTog UmV0dXJuIGVycm9yIGNvZGUuCisJKGZ1dGV4X3dha2UsIGZ1dGV4X3dhaXQpOiBJZiBFTk9TWVMg d2FzIHJldHVybmVkLCBjbGVhcgorCUZVVEVYX1BSSVZBVEVfRkxBRyBpbiBnb21wX2Z1dGV4X3dh e2tlLGl0fSBhbmQgcmV0cnkuCisJKiBjb25maWcvbGludXgvczM5MC9mdXRleC5oIChGVVRFWF9X QUlULCBGVVRFWF9XQUtFKTogUmVtb3ZlLgorCShzeXNfZnV0ZXgwKTogUmV0dXJuIGVycm9yIGNv ZGUuCisJKGZ1dGV4X3dha2UsIGZ1dGV4X3dhaXQpOiBJZiBFTk9TWVMgd2FzIHJldHVybmVkLCBj bGVhcgorCUZVVEVYX1BSSVZBVEVfRkxBRyBpbiBnb21wX2Z1dGV4X3dhe2tlLGl0fSBhbmQgcmV0 cnkuCisJKiBjb25maWcvbGludXgvaWE2NC9mdXRleC5oIChGVVRFWF9XQUlULCBGVVRFWF9XQUtF KTogUmVtb3ZlLgorCShzeXNfZnV0ZXgwKTogUmV0dXJuIGVycm9yIGNvZGUuCisJKGZ1dGV4X3dh a2UsIGZ1dGV4X3dhaXQpOiBJZiBFTk9TWVMgd2FzIHJldHVybmVkLCBjbGVhcgorCUZVVEVYX1BS SVZBVEVfRkxBRyBpbiBnb21wX2Z1dGV4X3dhe2tlLGl0fSBhbmQgcmV0cnkuCisJKiBjb25maWcv bGludXgvc3BhcmMvZnV0ZXguaCAoRlVURVhfV0FJVCwgRlVURVhfV0FLRSk6IFJlbW92ZS4KKwko c3lzX2Z1dGV4MCk6IFJldHVybiBlcnJvciBjb2RlLgorCShmdXRleF93YWtlLCBmdXRleF93YWl0 KTogSWYgRU5PU1lTIHdhcyByZXR1cm5lZCwgY2xlYXIKKwlGVVRFWF9QUklWQVRFX0ZMQUcgaW4g Z29tcF9mdXRleF93YXtrZSxpdH0gYW5kIHJldHJ5LgorCisyMDA4LTAzLTE4ICBKYWt1YiBKZWxp bmVrICA8amFrdWJAcmVkaGF0LmNvbT4KKworCSogbGliZ29tcC5oIChzdHJ1Y3QgZ29tcF93b3Jr X3NoYXJlKTogQWRkIG1vZGUgZmllbGQuICBQdXQgbG9jayBhbmQKKwluZXh0IGludG8gYSBkaWZm ZXJlbnQgY2FjaGUgbGluZSBmcm9tIG1vc3Qgb2YgdGhlIHdyaXRlLW9uY2UgZmllbGRzLgorCSog bG9vcC5jOiBJbmNsdWRlIGxpbWl0cy5oLgorCShnb21wX2xvb3BfaW5pdCk6IEZvciBHRlNfRFlO QU1JQywgbXVsdGlwbHkgd3MtPmNodW5rX3NpemUgYnkgaW5jci4KKwlJZiBhZGRpbmcgd3MtPmNo dW5rX3NpemUgbnRocmVhZHMgKyAxIHRpbWVzIGFmdGVyIGVuZCB3b24ndAorCW92ZXJmbG93LCBz ZXQgd3MtPm1vZGUgdG8gMS4KKwkqIGl0ZXIuYyAoZ29tcF9pdGVyX2R5bmFtaWNfbmV4dF9sb2Nr ZWQpOiBEb24ndCBtdWx0aXBseQorCXdzLT5jaHVua19zaXplIGJ5IGluY3IuCisJKGdvbXBfaXRl cl9keW5hbWljX25leHQpOiBMaWtld2lzZS4gIElmIHdzLT5tb2RlLCB1c2UgbW9yZSBlZmZpY2ll bnQKKwljb2RlLgorCSogd29yay5jOiBJbmNsdWRlIHN0ZGRlZi5oLgorCShnb21wX25ld193b3Jr X3NoYXJlKTogVXNlIG9mZnNldG9mIHJhdGhlciB0aGFuIHNpemVvZi4KKworMjAwOC0wMy0xNyAg SmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CisKKwkqIGxpYmdvbXAuaCAoc3RydWN0 IGdvbXBfdGVhbSk6IENoYW5nZSBvcmRlcmVkX3JlbGVhc2UgZmllbGQKKwlpbnRvIGdvbXBfc2Vt X3QgKiogZnJvbSBmbGV4aWJsZSBhcnJheSBtZW1iZXIuICBBZGQgaW1wbGljaXRfdGFzaworCWFu ZCBpbml0aWFsX3dvcmtfc2hhcmVzIGZpZWxkcy4KKwkoZ29tcF9uZXdfdGFzayk6IFJlbW92ZWQu CisJKGdvbXBfaW5pdF90YXNrKTogTmV3IHByb3RvdHlwZS4KKwkqIHRlYW0uYyAobmV3X3RlYW0p OiBBbGxvY2F0ZSBpbXBsaWNpdF90YXNrIGZvciBlYWNoIHRocmVhZAorCWFuZCBpbml0aWFsIHdv cmtfc2hhcmVzIHRvZ2V0aGVyIHdpdGggZ29tcF90ZWFtIGFsbG9jYXRpb24uCisJKGZyZWVfdGVh bSk6IE9ubHkgZnJlZSB3b3JrX3NoYXJlcyBpZiBpdCBpcyBub3QgaW5pdF93b3JrX3NoYXJlcy4K KwkoZ29tcF90ZWFtX3N0YXJ0KTogVXNlIGdvbXBfaW5pdF90YXNrIGluc3RlYWQgb2YgZ29tcF9u ZXdfdGFzaywKKwlzZXQgdGhyLT50YXNrIHRvIHRoZSBjb3JyZXNwb25kaW5nIGltcGxpY2l0X3Rh c2sgYXJyYXkgZW50cnkuCisJKiB0YXNrLmMgKGdvbXBfbmV3X3Rhc2spOiBSZW1vdmVkLgorCShn b21wX2luaXRfdGFzayk6IE5ldyBmdW5jdGlvbi4KKwkoZ29tcF9lbmRfdGFzayk6IERvbid0IGZy ZWUgdGhlIHRhc2suCisJKEdPTVBfdGFzayk6IEFsbG9jYXRlIHN0cnVjdCBnb21wX3Rhc2sgb24g dGhlIHN0YWNrLCBjYWxsCisJZ29tcF9pbml0X3Rhc2sgcmF0aGVyIHRoYW4gZ29tcF9uZXdfdGFz ay4KKwkqIHdvcmsuYyAoZ29tcF93b3JrX3NoYXJlX3N0YXJ0KTogSWYgd29ya19zaGFyZXMgPT0K Kwlpbml0X3dvcmtfc2hhcmVzLCBnb21wX21hbGxvYyArIG1lbWNweSByYXRoZXIgdGhhbiBnb21w X3JlYWxsb2MuCisKKzIwMDgtMDMtMTUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29t PgorCSAgICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAcmVkaGF0LmNvbT4KKworCSogY29uZmln L2xpbnV4L2Jhci5oIChnb21wX2JhcnJpZXJfc3RhdGVfdCk6IFJld3JpdHRlbi4KKwkoZ29tcF9i YXJyaWVyX3N0YXRlX3QpOiBDaGFuZ2UgdG8gdW5zaWduZWQgaW50LgorCShnb21wX2JhcnJpZXJf aW5pdCwgZ29tcF9iYXJyaWVyX3JlaW5pdCwgZ29tcF9iYXJyaWVyX2Rlc3Ryb3ksCisJZ29tcF9i YXJyaWVyX3dhaXRfc3RhcnQsIGdvbXBfYmFycmllcl9sYXN0X3RocmVhZCk6IFJld3JpdHRlbi4K KwkoZ29tcF9iYXJyaWVyX3dhaXRfbGFzdCk6IFByb3RvdHlwZSByYXRoZXIgdGhhbiBpbmxpbmUu CisJKiBjb25maWcvbGludXgvYmFyLmMgKGdvbXBfYmFycmllcl93YWl0X2VuZCk6IFJld3JpdHRl bi4KKwkoZ29tcF9iYXJyaWVyX3dhaXRfbGFzdCk6IE5ldyBmdW5jdGlvbi4KKworMjAwOC0wMy0x NSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CisKKwkqIHRlYW0uYyAoZ29tcF90 aHJlYWRfc3RhcnQpOiBVc2UgZ29tcF9iYXJyaWVyX3dhaXRfbGFzdCBpbnN0ZWFkCisJb2YgZ29t cF9iYXJyaWVyX3dhaXQuCisJKiBlbnYuYyAoZ29tcF9ibG9ja190aW1lX3ZhciwgZ29tcF9zcGlu X2NvdW50X3Zhcik6IE5ldyB2YXJpYWJsZXMuCisJKHBhcnNlX21pbGxpcyk6IE5ldyBmdW5jdGlv bi4KKwkoaW5pdGlhbGl6ZV9lbnYpOiBIYW5kbGUgR09NUF9CTE9DS1RJTUUgZW52IHZhci4KKwkq IGxpYmdvbXAuaCAoc3RydWN0IGdvbXBfdGVhbSk6IE1vdmUgY2xvc2UgdG8gdGhlIGVuZCBvZiB0 aGUgc3RydWN0LgorCShnb21wX3NwaW5fY291bnRfdmFyKTogTmV3IGV4dGVybiB2YXIgZGVjbC4K KwkqIHdvcmsuYyAoZ29tcF93b3JrX3NoYXJlX2VuZCk6IFVzZSBnb21wX2JhcnJpZXJfc3RhdGVf dCBic3RhdGUKKwl2YXIgaW5zdGVhZCBvZiBib29sIGxhc3QsIGNhbGwgZ29tcF9iYXJyaWVyX2xh c3RfdGhyZWFkIHRvIGNoZWNrCisJZm9yIGxhc3QgdGhyZWFkLCBwYXNzIGJzdGF0ZSB0byBnb21w X2JhcnJpZXJfd2FpdF9lbmQuCisJKiBjb25maWcvbGludXgvd2FpdC5oOiBOZXcgZmlsZS4KKwkq IGNvbmZpZy9saW51eC9tdXRleC5jOiBJbmNsdWRlIHdhaXQuaCBpbnN0ZWFkIG9mIGxpYmdvbXAu aCBhbmQKKwlmdXRleC5oLgorCShnb21wX211dGV4X2xvY2tfc2xvdyk6IENhbGwgZG9fd2FpdCBp bnN0ZWFkIG9mIGZ1dGV4X3dhaXQuCisJKiBjb25maWcvbGludXgvYmFyLmM6IEluY2x1ZGUgd2Fp dC5oIGluc3RlYWQgb2YgbGliZ29tcC5oIGFuZAorCWZ1dGV4LmguCisJKGdvbXBfYmFycmllcl93 YWl0X2VuZCk6IENoYW5nZSBzZWNvbmQgYXJndW1lbnQgdG8KKwlnb21wX2JhcnJpZXJfc3RhdGVf dC4gIENhbGwgZG9fd2FpdCBpbnN0ZWFkIG9mIGZ1dGV4X3dhaXQuCisJKiBjb25maWcvbGludXgv c2VtLmM6IEluY2x1ZGUgd2FpdC5oIGluc3RlYWQgb2YgbGliZ29tcC5oIGFuZAorCWZ1dGV4Lmgu CisJKGdvbXBfc2VtX3dhaXRfc2xvdyk6IENhbGwgZG9fd2FpdCBpbnN0ZWFkIG9mIGZ1dGV4X3dh aXQuCisJKiBjb25maWcvbGludXgvbG9jay5jOiBJbmNsdWRlIHdhaXQuaCBpbnN0ZWFkIG9mIGxp YmdvbXAuaCBhbmQKKwlmdXRleC5oLgorCShnb21wX3NldF9uZXN0X2xvY2tfMjUpOiBDYWxsIGRv X3dhaXQgaW5zdGVhZCBvZiBmdXRleF93YWl0LgorCSogY29uZmlnL2xpbnV4L2FmZmluaXR5LmM6 IEFzc3VtZSBIQVZFX1NZTkNfQlVJTFRJTlMuCisJKiBjb25maWcvbGludXgvYmFyLmggKGdvbXBf YmFycmllcl9zdGF0ZV90KTogTmV3IHR5cGVkZWYuCisJKGdvbXBfYmFycmllcl93YWl0X2VuZCk6 IENoYW5nZSBzZWNvbmQgYXJndW1lbnQgdG8KKwlnb21wX2JhcnJpZXJfc3RhdGVfdC4KKwkoZ29t cF9iYXJyaWVyX3dhaXRfc3RhcnQpOiBSZXR1cm4gZ29tcF9iYXJyaWVyX3N0YXRlX3QuCisJKGdv bXBfYmFycmllcl9sYXN0X3RocmVhZCwgZ29tcF9iYXJyaWVyX3dhaXRfbGFzdCk6IE5ldyBzdGF0 aWMKKwlpbmxpbmVzLgorCSogY29uZmlnL2xpbnV4L3Bvd2VycGMvZnV0ZXguaCAoY3B1X3JlbGF4 LCBhdG9taWNfd3JpdGVfYmFycmllcik6IE5ldworCXN0YXRpYyBpbmxpbmVzLgorCSogY29uZmln L2xpbnV4L2FscGhhL2Z1dGV4LmggKGNwdV9yZWxheCwgYXRvbWljX3dyaXRlX2JhcnJpZXIpOgor CUxpa2V3aXNlLgorCSogY29uZmlnL2xpbnV4L3g4Ni9mdXRleC5oIChjcHVfcmVsYXgsIGF0b21p Y193cml0ZV9iYXJyaWVyKToKKwlMaWtld2lzZS4KKwkqIGNvbmZpZy9saW51eC9zMzkwL2Z1dGV4 LmggKGNwdV9yZWxheCwgYXRvbWljX3dyaXRlX2JhcnJpZXIpOgorCUxpa2V3aXNlLgorCSogY29u ZmlnL2xpbnV4L2lhNjQvZnV0ZXguaCAoY3B1X3JlbGF4LCBhdG9taWNfd3JpdGVfYmFycmllcik6 CisJTGlrZXdpc2UuCisJKiBjb25maWcvbGludXgvc3BhcmMvZnV0ZXguaCAoY3B1X3JlbGF4LCBh dG9taWNfd3JpdGVfYmFycmllcik6CisJTGlrZXdpc2UuCisJKiBjb25maWcvcG9zaXgvYmFyLmMg KGdvbXBfYmFycmllcl93YWl0X2VuZCk6IENoYW5nZSBzZWNvbmQgYXJndW1lbnQKKwl0byBnb21w X2JhcnJpZXJfc3RhdGVfdC4KKwkqIGNvbmZpZy9wb3NpeC9iYXIuaCAoZ29tcF9iYXJyaWVyX3N0 YXRlX3QpOiBOZXcgdHlwZWRlZi4KKwkoZ29tcF9iYXJyaWVyX3dhaXRfZW5kKTogQ2hhbmdlIHNl Y29uZCBhcmd1bWVudCB0bworCWdvbXBfYmFycmllcl9zdGF0ZV90LgorCShnb21wX2JhcnJpZXJf d2FpdF9zdGFydCk6IFJldHVybiBnb21wX2JhcnJpZXJfc3RhdGVfdC4KKwkoZ29tcF9iYXJyaWVy X2xhc3RfdGhyZWFkLCBnb21wX2JhcnJpZXJfd2FpdF9sYXN0KTogTmV3IHN0YXRpYworCWlubGlu ZXMuCisKKy0tLSBsaWJnb21wL3BhcmFsbGVsLmMuamoJMjAwNy0xMi0wNyAxNDo0MTowMS4wMDAw MDAwMDAgKzAxMDAKKysrKyBsaWJnb21wL3BhcmFsbGVsLmMJMjAwOC0wMy0yNiAxNTozMjowNi4w MDAwMDAwMDAgKzAxMDAKK0BAIC02OCw3ICs2OCw3IEBAIHZvaWQKKyBHT01QX3BhcmFsbGVsX3N0 YXJ0ICh2b2lkICgqZm4pICh2b2lkICopLCB2b2lkICpkYXRhLCB1bnNpZ25lZCBudW1fdGhyZWFk cykKKyB7CisgICBudW1fdGhyZWFkcyA9IGdvbXBfcmVzb2x2ZV9udW1fdGhyZWFkcyAobnVtX3Ro cmVhZHMpOworLSAgZ29tcF90ZWFtX3N0YXJ0IChmbiwgZGF0YSwgbnVtX3RocmVhZHMsIE5VTEwp OworKyAgZ29tcF90ZWFtX3N0YXJ0IChmbiwgZGF0YSwgbnVtX3RocmVhZHMsIGdvbXBfbmV3X3Rl YW0gKG51bV90aHJlYWRzKSk7CisgfQorIAorIHZvaWQKKy0tLSBsaWJnb21wL3NlY3Rpb25zLmMu amoJMjAwNy0xMi0wNyAxNDo0MTowMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBsaWJnb21wL3NlY3Rp b25zLmMJMjAwOC0wMy0yNiAxNTozMzowNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC01OSwxNCArNTks MjQgQEAgR09NUF9zZWN0aW9uc19zdGFydCAodW5zaWduZWQgY291bnQpCisgICBsb25nIHMsIGUs IHJldDsKKyAKKyAgIGlmIChnb21wX3dvcmtfc2hhcmVfc3RhcnQgKGZhbHNlKSkKKy0gICAgZ29t cF9zZWN0aW9uc19pbml0ICh0aHItPnRzLndvcmtfc2hhcmUsIGNvdW50KTsKKysgICAgeworKyAg ICAgIGdvbXBfc2VjdGlvbnNfaW5pdCAodGhyLT50cy53b3JrX3NoYXJlLCBjb3VudCk7CisrICAg ICAgZ29tcF93b3JrX3NoYXJlX2luaXRfZG9uZSAoKTsKKysgICAgfQorIAorKyNpZmRlZiBIQVZF X1NZTkNfQlVJTFRJTlMKKysgIGlmIChnb21wX2l0ZXJfZHluYW1pY19uZXh0ICgmcywgJmUpKQor KyAgICByZXQgPSBzOworKyAgZWxzZQorKyAgICByZXQgPSAwOworKyNlbHNlCisrICBnb21wX211 dGV4X2xvY2sgKCZ0aHItPnRzLndvcmtfc2hhcmUtPmxvY2spOworICAgaWYgKGdvbXBfaXRlcl9k eW5hbWljX25leHRfbG9ja2VkICgmcywgJmUpKQorICAgICByZXQgPSBzOworICAgZWxzZQorICAg ICByZXQgPSAwOworLQorICAgZ29tcF9tdXRleF91bmxvY2sgKCZ0aHItPnRzLndvcmtfc2hhcmUt PmxvY2spOworKyNlbmRpZgorIAorICAgcmV0dXJuIHJldDsKKyB9CitAQCAtODMsMTUgKzkzLDIz IEBAIEdPTVBfc2VjdGlvbnNfc3RhcnQgKHVuc2lnbmVkIGNvdW50KQorIHVuc2lnbmVkCisgR09N UF9zZWN0aW9uc19uZXh0ICh2b2lkKQorIHsKKy0gIHN0cnVjdCBnb21wX3RocmVhZCAqdGhyID0g Z29tcF90aHJlYWQgKCk7CisgICBsb25nIHMsIGUsIHJldDsKKyAKKysjaWZkZWYgSEFWRV9TWU5D X0JVSUxUSU5TCisrICBpZiAoZ29tcF9pdGVyX2R5bmFtaWNfbmV4dCAoJnMsICZlKSkKKysgICAg cmV0ID0gczsKKysgIGVsc2UKKysgICAgcmV0ID0gMDsKKysjZWxzZQorKyAgc3RydWN0IGdvbXBf dGhyZWFkICp0aHIgPSBnb21wX3RocmVhZCAoKTsKKysKKyAgIGdvbXBfbXV0ZXhfbG9jayAoJnRo ci0+dHMud29ya19zaGFyZS0+bG9jayk7CisgICBpZiAoZ29tcF9pdGVyX2R5bmFtaWNfbmV4dF9s b2NrZWQgKCZzLCAmZSkpCisgICAgIHJldCA9IHM7CisgICBlbHNlCisgICAgIHJldCA9IDA7Cisg ICBnb21wX211dGV4X3VubG9jayAoJnRoci0+dHMud29ya19zaGFyZS0+bG9jayk7CisrI2VuZGlm CisgCisgICByZXR1cm4gcmV0OworIH0KK0BAIC0xMDMsMTUgKzEyMSwxNSBAQCB2b2lkCisgR09N UF9wYXJhbGxlbF9zZWN0aW9uc19zdGFydCAodm9pZCAoKmZuKSAodm9pZCAqKSwgdm9pZCAqZGF0 YSwKKyAJCQkgICAgICB1bnNpZ25lZCBudW1fdGhyZWFkcywgdW5zaWduZWQgY291bnQpCisgewor LSAgc3RydWN0IGdvbXBfd29ya19zaGFyZSAqd3M7CisrICBzdHJ1Y3QgZ29tcF90ZWFtICp0ZWFt OworIAorICAgbnVtX3RocmVhZHMgPSBnb21wX3Jlc29sdmVfbnVtX3RocmVhZHMgKG51bV90aHJl YWRzKTsKKyAgIGlmIChnb21wX2R5bl92YXIgJiYgbnVtX3RocmVhZHMgPiBjb3VudCkKKyAgICAg bnVtX3RocmVhZHMgPSBjb3VudDsKKyAKKy0gIHdzID0gZ29tcF9uZXdfd29ya19zaGFyZSAoZmFs c2UsIG51bV90aHJlYWRzKTsKKy0gIGdvbXBfc2VjdGlvbnNfaW5pdCAod3MsIGNvdW50KTsKKy0g IGdvbXBfdGVhbV9zdGFydCAoZm4sIGRhdGEsIG51bV90aHJlYWRzLCB3cyk7CisrICB0ZWFtID0g Z29tcF9uZXdfdGVhbSAobnVtX3RocmVhZHMpOworKyAgZ29tcF9zZWN0aW9uc19pbml0ICgmdGVh bS0+d29ya19zaGFyZXNbMF0sIGNvdW50KTsKKysgIGdvbXBfdGVhbV9zdGFydCAoZm4sIGRhdGEs IG51bV90aHJlYWRzLCB0ZWFtKTsKKyB9CisgCisgLyogVGhlIEdPTVBfc2VjdGlvbl9lbmQqIHJv dXRpbmVzIGFyZSBjYWxsZWQgYWZ0ZXIgdGhlIHRocmVhZCBpcyB0b2xkCistLS0gbGliZ29tcC9l bnYuYy5qagkyMDA3LTEyLTA3IDE0OjQxOjAxLjAwMDAwMDAwMCArMDEwMAorKysrIGxpYmdvbXAv ZW52LmMJMjAwOC0wMy0yNiAxNjo0MDoyNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC00NCw2ICs0NCwx MSBAQCBlbnVtIGdvbXBfc2NoZWR1bGVfdHlwZSBnb21wX3J1bl9zY2hlZF92CisgdW5zaWduZWQg bG9uZyBnb21wX3J1bl9zY2hlZF9jaHVuayA9IDE7CisgdW5zaWduZWQgc2hvcnQgKmdvbXBfY3B1 X2FmZmluaXR5OworIHNpemVfdCBnb21wX2NwdV9hZmZpbml0eV9sZW47CisrI2lmbmRlZiBIQVZF X1NZTkNfQlVJTFRJTlMKKytnb21wX211dGV4X3QgZ29tcF9yZW1haW5pbmdfdGhyZWFkc19sb2Nr OworKyNlbmRpZgorK3Vuc2lnbmVkIGxvbmcgZ29tcF9hdmFpbGFibGVfY3B1cyA9IDEsIGdvbXBf bWFuYWdlZF90aHJlYWRzID0gMTsKKyt1bnNpZ25lZCBsb25nIGxvbmcgZ29tcF9zcGluX2NvdW50 X3ZhciwgZ29tcF90aHJvdHRsZWRfc3Bpbl9jb3VudF92YXI7CisgCisgLyogUGFyc2UgdGhlIE9N UF9TQ0hFRFVMRSBlbnZpcm9ubWVudCB2YXJpYWJsZS4gICovCisgCitAQCAtMTQ3LDYgKzE1Miw3 OSBAQCBwYXJzZV91bnNpZ25lZF9sb25nIChjb25zdCBjaGFyICpuYW1lLCB1CisgICByZXR1cm4g ZmFsc2U7CisgfQorIAorKy8qIFBhcnNlIHRoZSBHT01QX1NQSU5DT1VOVCBlbnZpcm9ubWVudCB2 YXJpYmxlLiAgUmV0dXJuIHRydWUgaWYgb25lIHdhcworKyAgIHByZXNlbnQgYW5kIGl0IHdhcyBz dWNjZXNzZnVsbHkgcGFyc2VkLiAgKi8KKysKKytzdGF0aWMgYm9vbAorK3BhcnNlX3NwaW5jb3Vu dCAoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgbG9uZyBsb25nICpwdmFsdWUpCisreworKyAg Y2hhciAqZW52LCAqZW5kOworKyAgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlLCBtdWx0ID0gMTsK KysKKysgIGVudiA9IGdldGVudiAobmFtZSk7CisrICBpZiAoZW52ID09IE5VTEwpCisrICAgIHJl dHVybiBmYWxzZTsKKysKKysgIHdoaWxlIChpc3NwYWNlICgodW5zaWduZWQgY2hhcikgKmVudikp CisrICAgICsrZW52OworKyAgaWYgKCplbnYgPT0gJ1wwJykKKysgICAgZ290byBpbnZhbGlkOwor KworKyAgaWYgKHN0cm5jYXNlY21wIChlbnYsICJpbmZpbml0ZSIsIDgpID09IDAKKysgICAgICB8 fCBzdHJuY2FzZWNtcCAoZW52LCAiaW5maW5pdHkiLCA4KSA9PSAwKQorKyAgICB7CisrICAgICAg dmFsdWUgPSB+MFVMTDsKKysgICAgICBlbmQgPSBlbnYgKyA4OworKyAgICAgIGdvdG8gY2hlY2tf dGFpbDsKKysgICAgfQorKworKyAgZXJybm8gPSAwOworKyAgdmFsdWUgPSBzdHJ0b3VsbCAoZW52 LCAmZW5kLCAxMCk7CisrICBpZiAoZXJybm8pCisrICAgIGdvdG8gaW52YWxpZDsKKysKKysgIHdo aWxlIChpc3NwYWNlICgodW5zaWduZWQgY2hhcikgKmVuZCkpCisrICAgICsrZW5kOworKyAgaWYg KCplbmQgIT0gJ1wwJykKKysgICAgeworKyAgICAgIHN3aXRjaCAodG9sb3dlciAoKmVuZCkpCisr CXsKKysJY2FzZSAnayc6CisrCSAgbXVsdCA9IDEwMDBMTDsKKysJICBicmVhazsKKysJY2FzZSAn bSc6CisrCSAgbXVsdCA9IDEwMDBMTCAqIDEwMDBMTDsKKysJICBicmVhazsKKysJY2FzZSAnZyc6 CisrCSAgbXVsdCA9IDEwMDBMTCAqIDEwMDBMTCAqIDEwMDBMTDsKKysJICBicmVhazsKKysJY2Fz ZSAndCc6CisrCSAgbXVsdCA9IDEwMDBMTCAqIDEwMDBMTCAqIDEwMDBMTCAqIDEwMDBMTDsKKysJ ICBicmVhazsKKysJZGVmYXVsdDoKKysJICBnb3RvIGludmFsaWQ7CisrCX0KKysgICAgICArK2Vu ZDsKKysgICAgIGNoZWNrX3RhaWw6CisrICAgICAgd2hpbGUgKGlzc3BhY2UgKCh1bnNpZ25lZCBj aGFyKSAqZW5kKSkKKysJKytlbmQ7CisrICAgICAgaWYgKCplbmQgIT0gJ1wwJykKKysJZ290byBp bnZhbGlkOworKyAgICB9CisrCisrICBpZiAodmFsdWUgPiB+MFVMTCAvIG11bHQpCisrICAgIHZh bHVlID0gfjBVTEw7CisrICBlbHNlCisrICAgIHZhbHVlICo9IG11bHQ7CisrCisrICAqcHZhbHVl ID0gdmFsdWU7CisrICByZXR1cm4gdHJ1ZTsKKysKKysgaW52YWxpZDoKKysgIGdvbXBfZXJyb3Ig KCJJbnZhbGlkIHZhbHVlIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZSAlcyIsIG5hbWUpOworKyAg cmV0dXJuIGZhbHNlOworK30KKysKKyAvKiBQYXJzZSBhIGJvb2xlYW4gdmFsdWUgZm9yIGVudmly b25tZW50IHZhcmlhYmxlIE5BTUUgYW5kIHN0b3JlIHRoZSAKKyAgICByZXN1bHQgaW4gVkFMVUUu ICAqLworIAorQEAgLTI4MSwxMCArMzU5LDI1IEBAIGluaXRpYWxpemVfZW52ICh2b2lkKQorICAg cGFyc2Vfc2NoZWR1bGUgKCk7CisgICBwYXJzZV9ib29sZWFuICgiT01QX0RZTkFNSUMiLCAmZ29t cF9keW5fdmFyKTsKKyAgIHBhcnNlX2Jvb2xlYW4gKCJPTVBfTkVTVEVEIiwgJmdvbXBfbmVzdF92 YXIpOworKyAgZ29tcF9pbml0X251bV90aHJlYWRzICgpOworKyAgZ29tcF9hdmFpbGFibGVfY3B1 cyA9IGdvbXBfbnRocmVhZHNfdmFyOworICAgaWYgKCFwYXJzZV91bnNpZ25lZF9sb25nICgiT01Q X05VTV9USFJFQURTIiwgJmdvbXBfbnRocmVhZHNfdmFyKSkKKy0gICAgZ29tcF9pbml0X251bV90 aHJlYWRzICgpOworKyAgICBnb21wX250aHJlYWRzX3ZhciA9IGdvbXBfYXZhaWxhYmxlX2NwdXM7 CisgICBpZiAocGFyc2VfYWZmaW5pdHkgKCkpCisgICAgIGdvbXBfaW5pdF9hZmZpbml0eSAoKTsK KysgIGlmICghcGFyc2Vfc3BpbmNvdW50ICgiR09NUF9TUElOQ09VTlQiLCAmZ29tcF9zcGluX2Nv dW50X3ZhcikpCisrICAgIHsKKysgICAgICAvKiBVc2luZyBhIHJvdWdoIGVzdGltYXRpb24gb2Yg MTAwMDAwIHNwaW5zIHBlciBtc2VjLAorKwkgdXNlIDIwMCBtc2VjIGJsb2NraW5nLgorKwkgRGVw ZW5kaW5nIG9uIHRoZSBDUFUgc3BlZWQsIHRoaXMgY2FuIGJlIGUuZy4gNSB0aW1lcyBsb25nZXIK KysJIG9yIDUgdGltZXMgc2hvcnRlci4gICovCisrICAgICAgZ29tcF9zcGluX2NvdW50X3ZhciA9 IDIwMDAwMDAwTEw7CisrICAgIH0KKysgIC8qIGdvbXBfdGhyb3R0bGVkX3NwaW5fY291bnRfdmFy IGlzIHVzZWQgd2hlbiB0aGVyZSBhcmUgbW9yZSBsaWJnb21wCisrICAgICBtYW5hZ2VkIHRocmVh ZHMgdGhhbiBhdmFpbGFibGUgQ1BVcy4gIFVzZSB2ZXJ5IHNob3J0IHNwaW5uaW5nLiAgKi8KKysg IGdvbXBfdGhyb3R0bGVkX3NwaW5fY291bnRfdmFyID0gMTAwTEw7CisrICBpZiAoZ29tcF90aHJv dHRsZWRfc3Bpbl9jb3VudF92YXIgPiBnb21wX3NwaW5fY291bnRfdmFyKQorKyAgICBnb21wX3Ro cm90dGxlZF9zcGluX2NvdW50X3ZhciA9IGdvbXBfc3Bpbl9jb3VudF92YXI7CisgCisgICAvKiBO b3Qgc3RyaWN0bHkgZW52aXJvbm1lbnQgcmVsYXRlZCwgYnV0IG9yZGVyaW5nIGNvbnN0cnVjdG9y cyBpcyB0cmlja3kuICAqLworICAgcHRocmVhZF9hdHRyX2luaXQgKCZnb21wX3RocmVhZF9hdHRy KTsKKy0tLSBsaWJnb21wL2xpYmdvbXAuaC5qagkyMDA3LTEyLTA3IDE0OjQxOjAxLjAwMDAwMDAw MCArMDEwMAorKysrIGxpYmdvbXAvbGliZ29tcC5oCTIwMDgtMDMtMjYgMTY6MzM6NTcuMDAwMDAw MDAwICswMTAwCitAQCAtNTAsNiArNTAsNyBAQAorICNpbmNsdWRlICJzZW0uaCIKKyAjaW5jbHVk ZSAibXV0ZXguaCIKKyAjaW5jbHVkZSAiYmFyLmgiCisrI2luY2x1ZGUgInB0cmxvY2suaCIKKyAK KyAKKyAvKiBUaGlzIHN0cnVjdHVyZSBjb250YWlucyB0aGUgZGF0YSB0byBjb250cm9sIG9uZSB3 b3JrLXNoYXJpbmcgY29uc3RydWN0LAorQEAgLTcwLDYgKzcxLDggQEAgc3RydWN0IGdvbXBfd29y a19zaGFyZQorICAgICAgSWYgdGhpcyBpcyBhIFNFQ1RJT05TIGNvbnN0cnVjdCwgdGhpcyB2YWx1 ZSB3aWxsIGFsd2F5cyBiZSBEWU5BTUlDLiAgKi8KKyAgIGVudW0gZ29tcF9zY2hlZHVsZV90eXBl IHNjaGVkOworIAorKyAgaW50IG1vZGU7CisrCisgICAvKiBUaGlzIGlzIHRoZSBjaHVua19zaXpl IGFyZ3VtZW50IHRvIHRoZSBTQ0hFRFVMRSBjbGF1c2UuICAqLworICAgbG9uZyBjaHVua19zaXpl OworIAorQEAgLTgxLDE3ICs4NCwzOCBAQCBzdHJ1Y3QgZ29tcF93b3JrX3NoYXJlCisgICAgICBp cyBhbHdheXMgMS4gICovCisgICBsb25nIGluY3I7CisgCistICAvKiBUaGlzIGxvY2sgcHJvdGVj dHMgdGhlIHVwZGF0ZSBvZiB0aGUgZm9sbG93aW5nIG1lbWJlcnMuICAqLworLSAgZ29tcF9tdXRl eF90IGxvY2s7CisrICAvKiBUaGlzIGlzIGEgY2lyY3VsYXIgcXVldWUgdGhhdCBkZXRhaWxzIHdo aWNoIHRocmVhZHMgd2lsbCBiZSBhbGxvd2VkCisrICAgICBpbnRvIHRoZSBvcmRlcmVkIHJlZ2lv biBhbmQgaW4gd2hpY2ggb3JkZXIuICBXaGVuIGEgdGhyZWFkIGFsbG9jYXRlcworKyAgICAgaXRl cmF0aW9ucyBvbiB3aGljaCBpdCBpcyBnb2luZyB0byB3b3JrLCBpdCBhbHNvIHJlZ2lzdGVycyBp dHNlbGYgYXQKKysgICAgIHRoZSBlbmQgb2YgdGhlIGFycmF5LiAgV2hlbiBhIHRocmVhZCByZWFj aGVzIHRoZSBvcmRlcmVkIHJlZ2lvbiwgaXQKKysgICAgIGNoZWNrcyB0byBzZWUgaWYgaXQgaXMg dGhlIG9uZSBhdCB0aGUgaGVhZCBvZiB0aGUgcXVldWUuICBJZiBub3QsIGl0CisrICAgICBibG9j a3Mgb24gaXRzIFJFTEVBU0Ugc2VtYXBob3JlLiAgKi8KKysgIHVuc2lnbmVkICpvcmRlcmVkX3Rl YW1faWRzOworIAorLSAgdW5pb24geworLSAgICAvKiBUaGlzIGlzIHRoZSBuZXh0IGl0ZXJhdGlv biB2YWx1ZSB0byBiZSBhbGxvY2F0ZWQuICBJbiB0aGUgY2FzZSBvZgorLSAgICAgICBHRlNfU1RB VElDIGxvb3BzLCB0aGlzIHRoZSBpdGVyYXRpb24gc3RhcnQgcG9pbnQgYW5kIG5ldmVyIGNoYW5n ZXMuICAqLworLSAgICBsb25nIG5leHQ7CisrICAvKiBUaGlzIGlzIHRoZSBudW1iZXIgb2YgdGhy ZWFkcyB0aGF0IGhhdmUgcmVnaXN0ZXJlZCB0aGVtc2VsdmVzIGluCisrICAgICB0aGUgY2lyY3Vs YXIgcXVldWUgb3JkZXJlZF90ZWFtX2lkcy4gICovCisrICB1bnNpZ25lZCBvcmRlcmVkX251bV91 c2VkOworIAorLSAgICAvKiBUaGlzIGlzIHRoZSByZXR1cm5lZCBkYXRhIHN0cnVjdHVyZSBmb3Ig U0lOR0xFIENPUFlQUklWQVRFLiAgKi8KKy0gICAgdm9pZCAqY29weXByaXZhdGU7CistICB9Owor KyAgLyogVGhpcyBpcyB0aGUgdGVhbV9pZCBvZiB0aGUgY3VycmVudGx5IGFja25vd2xlZGdlZCBv d25lciBvZiB0aGUgb3JkZXJlZAorKyAgICAgc2VjdGlvbiwgb3IgLTF1IGlmIHRoZSBvcmRlcmVk IHNlY3Rpb24gaGFzIG5vdCBiZWVuIGFja25vd2xlZGdlZCBieQorKyAgICAgYW55IHRocmVhZC4g IFRoaXMgaXMgZGlzdGluZ3Vpc2hlZCBmcm9tIHRoZSB0aHJlYWQgdGhhdCBpcyAqYWxsb3dlZCoK KysgICAgIHRvIHRha2UgdGhlIHNlY3Rpb24gbmV4dC4gICovCisrICB1bnNpZ25lZCBvcmRlcmVk X293bmVyOworKworKyAgLyogVGhpcyBpcyB0aGUgaW5kZXggaW50byB0aGUgY2lyY3VsYXIgcXVl dWUgb3JkZXJlZF90ZWFtX2lkcyBvZiB0aGUKKysgICAgIGN1cnJlbnQgdGhyZWFkIHRoYXQncyBh bGxvd2VkIGludG8gdGhlIG9yZGVyZWQgcmVhc29uLiAgKi8KKysgIHVuc2lnbmVkIG9yZGVyZWRf Y3VyOworKworKyAgLyogVGhpcyBpcyBhIGNoYWluIG9mIGFsbG9jYXRlZCBnb21wX3dvcmtfc2hh cmUgYmxvY2tzLCB2YWxpZCBvbmx5CisrICAgICBpbiB0aGUgZmlyc3QgZ29tcF93b3JrX3NoYXJl IHN0cnVjdCBpbiB0aGUgYmxvY2suICAqLworKyAgc3RydWN0IGdvbXBfd29ya19zaGFyZSAqbmV4 dF9hbGxvYzsKKysKKysgIC8qIFRoZSBhYm92ZSBmaWVsZHMgYXJlIHdyaXR0ZW4gb25jZSBkdXJp bmcgd29ya3NoYXJlIGluaXRpYWxpemF0aW9uLAorKyAgICAgb3IgcmVsYXRlZCB0byBvcmRlcmVk IHdvcmtzaGFyaW5nLiAgTWFrZSBzdXJlIHRoZSBmb2xsb3dpbmcgZmllbGRzCisrICAgICBhcmUg aW4gYSBkaWZmZXJlbnQgY2FjaGUgbGluZS4gICovCisrCisrICAvKiBUaGlzIGxvY2sgcHJvdGVj dHMgdGhlIHVwZGF0ZSBvZiB0aGUgZm9sbG93aW5nIG1lbWJlcnMuICAqLworKyAgZ29tcF9tdXRl eF90IGxvY2sgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCAoNjQpKSk7CisgCisgICAvKiBUaGlzIGlz IHRoZSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIHRocmVhZHMgdGhhdCBoYXZlIGV4aXRlZCB0aGUg d29yaworICAgICAgc2hhcmUgY29uc3RydWN0LiAgSWYgdGhlIGNvbnN0cnVjdCB3YXMgbWFya2Vk IG5vd2FpdCwgdGhleSBoYXZlIG1vdmVkIG9uCitAQCAtOTksMjcgKzEyMywyOCBAQCBzdHJ1Y3Qg Z29tcF93b3JrX3NoYXJlCisgICAgICBvZiB0aGUgdGVhbSB0byBleGl0IHRoZSB3b3JrIHNoYXJl IGNvbnN0cnVjdCBtdXN0IGRlYWxsb2NhdGUgaXQuICAqLworICAgdW5zaWduZWQgdGhyZWFkc19j b21wbGV0ZWQ7CisgCistICAvKiBUaGlzIGlzIHRoZSBpbmRleCBpbnRvIHRoZSBjaXJjdWxhciBx dWV1ZSBvcmRlcmVkX3RlYW1faWRzIG9mIHRoZSAKKy0gICAgIGN1cnJlbnQgdGhyZWFkIHRoYXQn cyBhbGxvd2VkIGludG8gdGhlIG9yZGVyZWQgcmVhc29uLiAgKi8KKy0gIHVuc2lnbmVkIG9yZGVy ZWRfY3VyOworKyAgdW5pb24geworKyAgICAvKiBUaGlzIGlzIHRoZSBuZXh0IGl0ZXJhdGlvbiB2 YWx1ZSB0byBiZSBhbGxvY2F0ZWQuICBJbiB0aGUgY2FzZSBvZgorKyAgICAgICBHRlNfU1RBVElD IGxvb3BzLCB0aGlzIHRoZSBpdGVyYXRpb24gc3RhcnQgcG9pbnQgYW5kIG5ldmVyIGNoYW5nZXMu ICAqLworKyAgICBsb25nIG5leHQ7CisgCistICAvKiBUaGlzIGlzIHRoZSBudW1iZXIgb2YgdGhy ZWFkcyB0aGF0IGhhdmUgcmVnaXN0ZXJlZCB0aGVtc2VsdmVzIGluCistICAgICB0aGUgY2lyY3Vs YXIgcXVldWUgb3JkZXJlZF90ZWFtX2lkcy4gICovCistICB1bnNpZ25lZCBvcmRlcmVkX251bV91 c2VkOworKyAgICAvKiBUaGlzIGlzIHRoZSByZXR1cm5lZCBkYXRhIHN0cnVjdHVyZSBmb3IgU0lO R0xFIENPUFlQUklWQVRFLiAgKi8KKysgICAgdm9pZCAqY29weXByaXZhdGU7CisrICB9OworIAor LSAgLyogVGhpcyBpcyB0aGUgdGVhbV9pZCBvZiB0aGUgY3VycmVudGx5IGFja25vbGVkZ2VkIG93 bmVyIG9mIHRoZSBvcmRlcmVkCistICAgICBzZWN0aW9uLCBvciAtMXUgaWYgdGhlIG9yZGVyZWQg c2VjdGlvbiBoYXMgbm90IGJlZW4gYWNrbm93bGVkZ2VkIGJ5CistICAgICBhbnkgdGhyZWFkLiAg VGhpcyBpcyBkaXN0aW5ndWlzaGVkIGZyb20gdGhlIHRocmVhZCB0aGF0IGlzICphbGxvd2VkKgor LSAgICAgdG8gdGFrZSB0aGUgc2VjdGlvbiBuZXh0LiAgKi8KKy0gIHVuc2lnbmVkIG9yZGVyZWRf b3duZXI7CisrICB1bmlvbiB7CisrICAgIC8qIExpbmsgdG8gZ29tcF93b3JrX3NoYXJlIHN0cnVj dCBmb3IgbmV4dCB3b3JrIHNoYXJpbmcgY29uc3RydWN0CisrICAgICAgIGVuY291bnRlcmVkIGFm dGVyIHRoaXMgb25lLiAgKi8KKysgICAgZ29tcF9wdHJsb2NrX3QgbmV4dF93czsKKysKKysgICAg LyogZ29tcF93b3JrX3NoYXJlIHN0cnVjdHMgYXJlIGNoYWluZWQgaW4gdGhlIGZyZWUgd29yayBz aGFyZSBjYWNoZQorKyAgICAgICB0aHJvdWdoIHRoaXMuICAqLworKyAgICBzdHJ1Y3QgZ29tcF93 b3JrX3NoYXJlICpuZXh0X2ZyZWU7CisrICB9OworIAorLSAgLyogVGhpcyBpcyBhIGNpcmN1bGFy IHF1ZXVlIHRoYXQgZGV0YWlscyB3aGljaCB0aHJlYWRzIHdpbGwgYmUgYWxsb3dlZAorLSAgICAg aW50byB0aGUgb3JkZXJlZCByZWdpb24gYW5kIGluIHdoaWNoIG9yZGVyLiAgV2hlbiBhIHRocmVh ZCBhbGxvY2F0ZXMKKy0gICAgIGl0ZXJhdGlvbnMgb24gd2hpY2ggaXQgaXMgZ29pbmcgdG8gd29y aywgaXQgYWxzbyByZWdpc3RlcnMgaXRzZWxmIGF0CistICAgICB0aGUgZW5kIG9mIHRoZSBhcnJh eS4gIFdoZW4gYSB0aHJlYWQgcmVhY2hlcyB0aGUgb3JkZXJlZCByZWdpb24sIGl0CistICAgICBj aGVja3MgdG8gc2VlIGlmIGl0IGlzIHRoZSBvbmUgYXQgdGhlIGhlYWQgb2YgdGhlIHF1ZXVlLiAg SWYgbm90LCBpdAorLSAgICAgYmxvY2tzIG9uIGl0cyBSRUxFQVNFIHNlbWFwaG9yZS4gICovCist ICB1bnNpZ25lZCBvcmRlcmVkX3RlYW1faWRzW107CisrICAvKiBJZiBvbmx5IGZldyB0aHJlYWRz IGFyZSBpbiB0aGUgdGVhbSwgb3JkZXJlZF90ZWFtX2lkcyBjYW4gcG9pbnQKKysgICAgIHRvIHRo aXMgYXJyYXkgd2hpY2ggZmlsbHMgdGhlIHBhZGRpbmcgYXQgdGhlIGVuZCBvZiB0aGlzIHN0cnVj dC4gICovCisrICB1bnNpZ25lZCBpbmxpbmVfb3JkZXJlZF90ZWFtX2lkc1swXTsKKyB9OworIAor IC8qIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIGFsbCBvZiB0aGUgdGhyZWFkLWxvY2FsIGRhdGEg YXNzb2NpYXRlZCB3aXRoIAorQEAgLTEzMywyMSArMTU4LDIyIEBAIHN0cnVjdCBnb21wX3RlYW1f c3RhdGUKKyAKKyAgIC8qIFRoaXMgaXMgdGhlIHdvcmsgc2hhcmUgY29uc3RydWN0IHdoaWNoIHRo aXMgdGhyZWFkIGlzIGN1cnJlbnRseQorICAgICAgcHJvY2Vzc2luZy4gIFJlY2FsbCB0aGF0IHdp dGggTk9XQUlULCBub3QgYWxsIHRocmVhZHMgbWF5IGJlIAorLSAgICAgcHJvY2Vzc2luZyB0aGUg c2FtZSBjb25zdHJ1Y3QuICBUaGlzIHZhbHVlIGlzIE5VTEwgd2hlbiB0aGVyZQorLSAgICAgaXMg bm8gY29uc3RydWN0IGJlaW5nIHByb2Nlc3NlZC4gICovCisrICAgICBwcm9jZXNzaW5nIHRoZSBz YW1lIGNvbnN0cnVjdC4gICovCisgICBzdHJ1Y3QgZ29tcF93b3JrX3NoYXJlICp3b3JrX3NoYXJl OworIAorKyAgLyogVGhpcyBpcyB0aGUgcHJldmlvdXMgd29yayBzaGFyZSBjb25zdHJ1Y3Qgb3Ig TlVMTCBpZiB0aGVyZSB3YXNuJ3QgYW55LgorKyAgICAgV2hlbiBhbGwgdGhyZWFkcyBhcmUgZG9u ZSB3aXRoIHRoZSBjdXJyZW50IHdvcmsgc2hhcmluZyBjb25zdHJ1Y3QsCisrICAgICB0aGUgcHJl dmlvdXMgb25lIGNhbiBiZSBmcmVlZC4gIFRoZSBjdXJyZW50IG9uZSBjYW4ndCwgYXMgaXRzCisr ICAgICBuZXh0X3dzIGZpZWxkIGlzIHVzZWQuICAqLworKyAgc3RydWN0IGdvbXBfd29ya19zaGFy ZSAqbGFzdF93b3JrX3NoYXJlOworKworICAgLyogVGhpcyBpcyB0aGUgSUQgb2YgdGhpcyB0aHJl YWQgd2l0aGluIHRoZSB0ZWFtLiAgVGhpcyB2YWx1ZSBpcworICAgICAgZ3VhcmFudGVlZCB0byBi ZSBiZXR3ZWVuIDAgYW5kIE4tMSwgd2hlcmUgTiBpcyB0aGUgbnVtYmVyIG9mCisgICAgICB0aHJl YWRzIGluIHRoZSB0ZWFtLiAgKi8KKyAgIHVuc2lnbmVkIHRlYW1faWQ7CisgCistICAvKiBUaGUg d29yayBzaGFyZSAiZ2VuZXJhdGlvbiIgaXMgYSBudW1iZXIgdGhhdCBpbmNyZWFzZXMgYnkgb25l IGZvcgorLSAgICAgZWFjaCB3b3JrIHNoYXJlIGNvbnN0cnVjdCBlbmNvdW50ZXJlZCBpbiB0aGUg ZHluYW1pYyBmbG93IG9mIHRoZQorLSAgICAgcHJvZ3JhbS4gIEl0IGlzIHVzZWQgdG8gZmluZCB0 aGUgY29udHJvbCBkYXRhIGZvciB0aGUgd29yayBzaGFyZQorLSAgICAgd2hlbiBlbmNvdW50ZXJp bmcgaXQgZm9yIHRoZSBmaXJzdCB0aW1lLiAgVGhpcyBwYXJ0aWN1bGFyIG51bWJlcgorLSAgICAg cmVmbGVjdHMgdGhlIGdlbmVyYXRpb24gb2YgdGhlIHdvcmtfc2hhcmUgbWVtYmVyIG9mIHRoaXMg c3RydWN0LiAgKi8KKy0gIHVuc2lnbmVkIHdvcmtfc2hhcmVfZ2VuZXJhdGlvbjsKKysgIC8qIE51 bWJlciBvZiBzaW5nbGUgc3RtdHMgZW5jb3VudGVyZWQuICAqLworKyAgdW5zaWduZWQgbG9uZyBz aW5nbGVfY291bnQ7CisgCisgICAvKiBGb3IgR0ZTX1JVTlRJTUUgbG9vcHMgdGhhdCByZXNvbHZl ZCB0byBHRlNfU1RBVElDLCB0aGlzIGlzIHRoZQorICAgICAgdHJpcCBudW1iZXIgdGhyb3VnaCB0 aGUgbG9vcC4gIFNvIGZpcnN0IHRpbWUgYSBwYXJ0aWN1bGFyIGxvb3AKK0BAIC0xNjMsNDEgKzE4 OSw0OCBAQCBzdHJ1Y3QgZ29tcF90ZWFtX3N0YXRlCisgCisgc3RydWN0IGdvbXBfdGVhbQorIHsK Ky0gIC8qIFRoaXMgbG9jayBwcm90ZWN0cyBhY2Nlc3MgdG8gdGhlIGZvbGxvd2luZyB3b3JrIHNo YXJlcyBkYXRhIHN0cnVjdHVyZXMuICAqLworLSAgZ29tcF9tdXRleF90IHdvcmtfc2hhcmVfbG9j azsKKy0KKy0gIC8qIFRoaXMgaXMgYSBkeW5hbWljYWxseSBzaXplZCBhcnJheSBjb250YWluaW5n IHBvaW50ZXJzIHRvIHRoZSBjb250cm9sCistICAgICBzdHJ1Y3RzIGZvciBhbGwgImxpdmUiIHdv cmsgc2hhcmUgY29uc3RydWN0cy4gIEhlcmUgImxpdmUiIG1lYW5zIHRoYXQKKy0gICAgIHRoZSBj b25zdHJ1Y3QgaGFzIGJlZW4gZW5jb3VudGVyZWQgYnkgYXQgbGVhc3Qgb25lIHRocmVhZCwgYW5k IG5vdAorLSAgICAgY29tcGxldGVkIGJ5IGFsbCB0aHJlYWRzLiAgKi8KKy0gIHN0cnVjdCBnb21w X3dvcmtfc2hhcmUgKip3b3JrX3NoYXJlczsKKy0KKy0gIC8qIFRoZSB3b3JrX3NoYXJlcyBhcnJh eSBpcyBpbmRleGVkIGJ5ICJnZW5lcmF0aW9uICYgZ2VuZXJhdGlvbl9tYXNrIi4KKy0gICAgIFRo ZSBtYXNrIHdpbGwgYmUgMioqTiAtIDEsIHdoZXJlIDIqKk4gaXMgdGhlIHNpemUgb2YgdGhlIGFy cmF5LiAgKi8KKy0gIHVuc2lnbmVkIGdlbmVyYXRpb25fbWFzazsKKy0KKy0gIC8qIFRoZXNlIHR3 byB2YWx1ZXMgZGVmaW5lIHRoZSBib3VuZHMgb2YgdGhlIGVsZW1lbnRzIG9mIHRoZSB3b3JrX3No YXJlcworLSAgICAgYXJyYXkgdGhhdCBhcmUgY3VycmVudGx5IGluIHVzZS4gICovCistICB1bnNp Z25lZCBvbGRlc3RfbGl2ZV9nZW47CistICB1bnNpZ25lZCBudW1fbGl2ZV9nZW47CistCisgICAv KiBUaGlzIGlzIHRoZSBudW1iZXIgb2YgdGhyZWFkcyBpbiB0aGUgY3VycmVudCB0ZWFtLiAgKi8K KyAgIHVuc2lnbmVkIG50aHJlYWRzOworIAorKyAgLyogVGhpcyBpcyBudW1iZXIgb2YgZ29tcF93 b3JrX3NoYXJlIHN0cnVjdHMgdGhhdCBoYXZlIGJlZW4gYWxsb2NhdGVkCisrICAgICBhcyBhIGJs b2NrIGxhc3QgdGltZS4gICovCisrICB1bnNpZ25lZCB3b3JrX3NoYXJlX2NodW5rOworKworICAg LyogVGhpcyBpcyB0aGUgc2F2ZWQgdGVhbSBzdGF0ZSB0aGF0IGFwcGxpZWQgdG8gYSBtYXN0ZXIg dGhyZWFkIGJlZm9yZQorICAgICAgdGhlIGN1cnJlbnQgdGhyZWFkIHdhcyBjcmVhdGVkLiAgKi8K KyAgIHN0cnVjdCBnb21wX3RlYW1fc3RhdGUgcHJldl90czsKKyAKKy0gIC8qIFRoaXMgYmFycmll ciBpcyB1c2VkIGZvciBtb3N0IHN5bmNocm9uaXphdGlvbiBvZiB0aGUgdGVhbS4gICovCistICBn b21wX2JhcnJpZXJfdCBiYXJyaWVyOworLQorICAgLyogVGhpcyBzZW1hcGhvcmUgc2hvdWxkIGJl IHVzZWQgYnkgdGhlIG1hc3RlciB0aHJlYWQgaW5zdGVhZCBvZiBpdHMKKyAgICAgICJuYXRpdmUi IHNlbWFwaG9yZSBpbiB0aGUgdGhyZWFkIHN0cnVjdHVyZS4gIFJlcXVpcmVkIGZvciBuZXN0ZWQK KyAgICAgIHBhcmFsbGVscywgYXMgdGhlIG1hc3RlciBpcyBhIG1lbWJlciBvZiB0d28gdGVhbXMu ICAqLworICAgZ29tcF9zZW1fdCBtYXN0ZXJfcmVsZWFzZTsKKyAKKy0gIC8qIFRoaXMgYXJyYXkg Y29udGFpbnMgcG9pbnRlcnMgdG8gdGhlIHJlbGVhc2Ugc2VtYXBob3JlIG9mIHRoZSB0aHJlYWRz CistICAgICBpbiB0aGUgdGVhbS4gICovCisrICAvKiBMaXN0IG9mIGdvbXBfd29ya19zaGFyZSBz dHJ1Y3RzIGNoYWluZWQgdGhyb3VnaCBuZXh0X2ZyZWUgZmllbGRzLgorKyAgICAgVGhpcyBpcyBw b3B1bGF0ZWQgYW5kIHRha2VuIG9mZiBvbmx5IGJ5IHRoZSBmaXJzdCB0aHJlYWQgaW4gdGhlCisr ICAgICB0ZWFtIGVuY291bnRlcmluZyBhIG5ldyB3b3JrIHNoYXJpbmcgY29uc3RydWN0LCBpbiBh IGNyaXRpY2FsCisrICAgICBzZWN0aW9uLiAgKi8KKysgIHN0cnVjdCBnb21wX3dvcmtfc2hhcmUg Kndvcmtfc2hhcmVfbGlzdF9hbGxvYzsKKysKKysgIC8qIExpc3Qgb2YgZ29tcF93b3JrX3NoYXJl IHN0cnVjdHMgZnJlZWQgYnkgZnJlZV93b3JrX3NoYXJlLiAgTmV3CisrICAgICBlbnRyaWVzIGFy ZSBhdG9taWNhbGx5IGFkZGVkIHRvIHRoZSBzdGFydCBvZiB0aGUgbGlzdCwgYW5kCisrICAgICBh bGxvY193b3JrX3NoYXJlIGNhbiBzYWZlbHkgb25seSBtb3ZlIGFsbCBidXQgdGhlIGZpcnN0IGVu dHJ5CisrICAgICB0byB3b3JrX3NoYXJlX2xpc3QgYWxsb2MsIGFzIGZyZWVfd29ya19zaGFyZSBj YW4gaGFwcGVuIGNvbmN1cnJlbnRseQorKyAgICAgd2l0aCBhbGxvY193b3JrX3NoYXJlLiAgKi8K KysgIHN0cnVjdCBnb21wX3dvcmtfc2hhcmUgKndvcmtfc2hhcmVfbGlzdF9mcmVlOworKworKyAg LyogTnVtYmVyIG9mIHNpbXBsZSBzaW5nbGUgcmVnaW9ucyBlbmNvdW50ZXJlZCBieSB0aHJlYWRz IGluIHRoaXMKKysgICAgIHRlYW0uICAqLworKyAgdW5zaWduZWQgbG9uZyBzaW5nbGVfY291bnQ7 CisrCisrICAvKiBUaGlzIGJhcnJpZXIgaXMgdXNlZCBmb3IgbW9zdCBzeW5jaHJvbml6YXRpb24g b2YgdGhlIHRlYW0uICAqLworKyAgZ29tcF9iYXJyaWVyX3QgYmFycmllcjsKKysKKysgIC8qIElu aXRpYWwgd29yayBzaGFyZXMsIHRvIGF2b2lkIGFsbG9jYXRpbmcgYW55IGdvbXBfd29ya19zaGFy ZQorKyAgICAgc3RydWN0cyBpbiB0aGUgY29tbW9uIGNhc2UuICAqLworKyAgc3RydWN0IGdvbXBf d29ya19zaGFyZSB3b3JrX3NoYXJlc1s4XTsKKysKKysgIC8qIFRoaXMgaXMgYW4gYXJyYXkgd2l0 aCBwb2ludGVycyB0byB0aGUgcmVsZWFzZSBzZW1hcGhvcmUKKysgICAgIG9mIHRoZSB0aHJlYWRz IGluIHRoZSB0ZWFtLiAgKi8KKyAgIGdvbXBfc2VtX3QgKm9yZGVyZWRfcmVsZWFzZVtdOworIH07 CisgCitAQCAtMjQyLDYgKzI3NSwxMSBAQCBleHRlcm4gYm9vbCBnb21wX2R5bl92YXI7CisgZXh0 ZXJuIGJvb2wgZ29tcF9uZXN0X3ZhcjsKKyBleHRlcm4gZW51bSBnb21wX3NjaGVkdWxlX3R5cGUg Z29tcF9ydW5fc2NoZWRfdmFyOworIGV4dGVybiB1bnNpZ25lZCBsb25nIGdvbXBfcnVuX3NjaGVk X2NodW5rOworKyNpZm5kZWYgSEFWRV9TWU5DX0JVSUxUSU5TCisrZXh0ZXJuIGdvbXBfbXV0ZXhf dCBnb21wX3JlbWFpbmluZ190aHJlYWRzX2xvY2s7CisrI2VuZGlmCisrZXh0ZXJuIHVuc2lnbmVk IGxvbmcgbG9uZyBnb21wX3NwaW5fY291bnRfdmFyLCBnb21wX3Rocm90dGxlZF9zcGluX2NvdW50 X3ZhcjsKKytleHRlcm4gdW5zaWduZWQgbG9uZyBnb21wX2F2YWlsYWJsZV9jcHVzLCBnb21wX21h bmFnZWRfdGhyZWFkczsKKyAKKyAvKiBUaGUgYXR0cmlidXRlcyB0byBiZSB1c2VkIGR1cmluZyB0 aHJlYWQgY3JlYXRpb24uICAqLworIGV4dGVybiBwdGhyZWFkX2F0dHJfdCBnb21wX3RocmVhZF9h dHRyOworQEAgLTMwNiwxNyArMzQ0LDI3IEBAIGV4dGVybiB1bnNpZ25lZCBnb21wX2R5bmFtaWNf bWF4X3RocmVhZHMKKyAKKyAvKiB0ZWFtLmMgKi8KKyAKKytleHRlcm4gc3RydWN0IGdvbXBfdGVh bSAqZ29tcF9uZXdfdGVhbSAodW5zaWduZWQpOworIGV4dGVybiB2b2lkIGdvbXBfdGVhbV9zdGFy dCAodm9pZCAoKikgKHZvaWQgKiksIHZvaWQgKiwgdW5zaWduZWQsCistCQkJICAgICBzdHJ1Y3Qg Z29tcF93b3JrX3NoYXJlICopOworKwkJCSAgICAgc3RydWN0IGdvbXBfdGVhbSAqKTsKKyBleHRl cm4gdm9pZCBnb21wX3RlYW1fZW5kICh2b2lkKTsKKyAKKyAvKiB3b3JrLmMgKi8KKyAKKy1leHRl cm4gc3RydWN0IGdvbXBfd29ya19zaGFyZSAqIGdvbXBfbmV3X3dvcmtfc2hhcmUgKGJvb2wsIHVu c2lnbmVkKTsKKytleHRlcm4gdm9pZCBnb21wX2luaXRfd29ya19zaGFyZSAoc3RydWN0IGdvbXBf d29ya19zaGFyZSAqLCBib29sLCB1bnNpZ25lZCk7CisrZXh0ZXJuIHZvaWQgZ29tcF9maW5pX3dv cmtfc2hhcmUgKHN0cnVjdCBnb21wX3dvcmtfc2hhcmUgKik7CisgZXh0ZXJuIGJvb2wgZ29tcF93 b3JrX3NoYXJlX3N0YXJ0IChib29sKTsKKyBleHRlcm4gdm9pZCBnb21wX3dvcmtfc2hhcmVfZW5k ICh2b2lkKTsKKyBleHRlcm4gdm9pZCBnb21wX3dvcmtfc2hhcmVfZW5kX25vd2FpdCAodm9pZCk7 CisgCisrc3RhdGljIGlubGluZSB2b2lkCisrZ29tcF93b3JrX3NoYXJlX2luaXRfZG9uZSAodm9p ZCkKKyt7CisrICBzdHJ1Y3QgZ29tcF90aHJlYWQgKnRociA9IGdvbXBfdGhyZWFkICgpOworKyAg aWYgKF9fYnVpbHRpbl9leHBlY3QgKHRoci0+dHMubGFzdF93b3JrX3NoYXJlICE9IE5VTEwsIDEp KQorKyAgICBnb21wX3B0cmxvY2tfc2V0ICgmdGhyLT50cy5sYXN0X3dvcmtfc2hhcmUtPm5leHRf d3MsIHRoci0+dHMud29ya19zaGFyZSk7CisrfQorKworICNpZmRlZiBIQVZFX0FUVFJJQlVURV9W SVNJQklMSVRZCisgIyBwcmFnbWEgR0NDIHZpc2liaWxpdHkgcG9wCisgI2VuZGlmCistLS0gbGli Z29tcC9pdGVyLmMuamoJMjAwOC0wMy0yNiAxNDo0ODozNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBs aWJnb21wL2l0ZXIuYwkyMDA4LTAzLTI2IDE1OjExOjIzLjAwMDAwMDAwMCArMDEwMAorQEAgLTEs NCArMSw0IEBACistLyogQ29weXJpZ2h0IChDKSAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorKy8qIENvcHlyaWdodCAoQykgMjAwNSwgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKyAgICBDb250cmlidXRlZCBieSBSaWNoYXJkIEhlbmRlcnNvbiA8cnRoQHJl ZGhhdC5jb20+LgorIAorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT3Blbk1QIExp YnJhcnkgKGxpYmdvbXApLgorQEAgLTE1NCw3ICsxNTQsNyBAQCBnb21wX2l0ZXJfZHluYW1pY19u ZXh0X2xvY2tlZCAobG9uZyAqcHN0CisgICBpZiAoc3RhcnQgPT0gd3MtPmVuZCkKKyAgICAgcmV0 dXJuIGZhbHNlOworIAorLSAgY2h1bmsgPSB3cy0+Y2h1bmtfc2l6ZSAqIHdzLT5pbmNyOworKyAg Y2h1bmsgPSB3cy0+Y2h1bmtfc2l6ZTsKKyAgIGxlZnQgPSB3cy0+ZW5kIC0gc3RhcnQ7CisgICBp ZiAod3MtPmluY3IgPCAwKQorICAgICB7CitAQCAtMTg2LDExICsxODYsMzggQEAgZ29tcF9pdGVy X2R5bmFtaWNfbmV4dCAobG9uZyAqcHN0YXJ0LCBsbworICAgc3RydWN0IGdvbXBfd29ya19zaGFy ZSAqd3MgPSB0aHItPnRzLndvcmtfc2hhcmU7CisgICBsb25nIHN0YXJ0LCBlbmQsIG5lbmQsIGNo dW5rLCBpbmNyOworIAorLSAgc3RhcnQgPSB3cy0+bmV4dDsKKyAgIGVuZCA9IHdzLT5lbmQ7Cisg ICBpbmNyID0gd3MtPmluY3I7CistICBjaHVuayA9IHdzLT5jaHVua19zaXplICogaW5jcjsKKysg IGNodW5rID0gd3MtPmNodW5rX3NpemU7CisrCisrICBpZiAoX19idWlsdGluX2V4cGVjdCAod3Mt Pm1vZGUsIDEpKQorKyAgICB7CisrICAgICAgbG9uZyB0bXAgPSBfX3N5bmNfZmV0Y2hfYW5kX2Fk ZCAoJndzLT5uZXh0LCBjaHVuayk7CisrICAgICAgaWYgKGluY3IgPiAwKQorKwl7CisrCSAgaWYg KHRtcCA+PSBlbmQpCisrCSAgICByZXR1cm4gZmFsc2U7CisrCSAgbmVuZCA9IHRtcCArIGNodW5r OworKwkgIGlmIChuZW5kID4gZW5kKQorKwkgICAgbmVuZCA9IGVuZDsKKysJICAqcHN0YXJ0ID0g dG1wOworKwkgICpwZW5kID0gbmVuZDsKKysJICByZXR1cm4gdHJ1ZTsKKysJfQorKyAgICAgIGVs c2UKKysJeworKwkgIGlmICh0bXAgPD0gZW5kKQorKwkgICAgcmV0dXJuIGZhbHNlOworKwkgIG5l bmQgPSB0bXAgKyBjaHVuazsKKysJICBpZiAobmVuZCA8IGVuZCkKKysJICAgIG5lbmQgPSBlbmQ7 CisrCSAgKnBzdGFydCA9IHRtcDsKKysJICAqcGVuZCA9IG5lbmQ7CisrCSAgcmV0dXJuIHRydWU7 CisrCX0KKysgICAgfQorIAorKyAgc3RhcnQgPSB3cy0+bmV4dDsKKyAgIHdoaWxlICgxKQorICAg ICB7CisgICAgICAgbG9uZyBsZWZ0ID0gZW5kIC0gc3RhcnQ7CistLS0gbGliZ29tcC93b3JrLmMu amoJMjAwNy0xMi0wNyAxNDo0MTowMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBsaWJnb21wL3dvcmsu YwkyMDA4LTAzLTI2IDE1OjExOjMyLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsNCArMSw0IEBACist LyogQ29weXJpZ2h0IChDKSAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8q IENvcHlyaWdodCAoQykgMjAwNSwgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KyAgICBDb250cmlidXRlZCBieSBSaWNoYXJkIEhlbmRlcnNvbiA8cnRoQHJlZGhhdC5jb20+Lgor IAorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT3Blbk1QIExpYnJhcnkgKGxpYmdv bXApLgorQEAgLTI5LDM5ICsyOSwxMTcgQEAKKyAgICBvZiB0aHJlYWRzLiAgKi8KKyAKKyAjaW5j bHVkZSAibGliZ29tcC5oIgorKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyAjaW5jbHVkZSA8c3RkbGli Lmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorIAorIAorLS8qIENyZWF0ZSBhIG5ldyB3b3JrIHNo YXJlIHN0cnVjdHVyZS4gICovCisrLyogQWxsb2NhdGUgYSBuZXcgd29yayBzaGFyZSBzdHJ1Y3R1 cmUsIHByZWZlcmFibHkgZnJvbSBjdXJyZW50IHRlYW0ncworKyAgIGZyZWUgZ29tcF93b3JrX3No YXJlIGNhY2hlLiAgKi8KKyAKKy1zdHJ1Y3QgZ29tcF93b3JrX3NoYXJlICoKKy1nb21wX25ld193 b3JrX3NoYXJlIChib29sIG9yZGVyZWQsIHVuc2lnbmVkIG50aHJlYWRzKQorK3N0YXRpYyBzdHJ1 Y3QgZ29tcF93b3JrX3NoYXJlICoKKythbGxvY193b3JrX3NoYXJlIChzdHJ1Y3QgZ29tcF90ZWFt ICp0ZWFtKQorIHsKKyAgIHN0cnVjdCBnb21wX3dvcmtfc2hhcmUgKndzOworLSAgc2l6ZV90IHNp emU7CisrICB1bnNpZ25lZCBpbnQgaTsKKyAKKy0gIHNpemUgPSBzaXplb2YgKCp3cyk7CistICBp ZiAob3JkZXJlZCkKKy0gICAgc2l6ZSArPSBudGhyZWFkcyAqIHNpemVvZiAod3MtPm9yZGVyZWRf dGVhbV9pZHNbMF0pOworKyAgLyogVGhpcyBpcyBjYWxsZWQgaW4gYSBjcml0aWNhbCBzZWN0aW9u LiAgKi8KKysgIGlmICh0ZWFtLT53b3JrX3NoYXJlX2xpc3RfYWxsb2MgIT0gTlVMTCkKKysgICAg eworKyAgICAgIHdzID0gdGVhbS0+d29ya19zaGFyZV9saXN0X2FsbG9jOworKyAgICAgIHRlYW0t Pndvcmtfc2hhcmVfbGlzdF9hbGxvYyA9IHdzLT5uZXh0X2ZyZWU7CisrICAgICAgcmV0dXJuIHdz OworKyAgICB9CisgCistICB3cyA9IGdvbXBfbWFsbG9jX2NsZWFyZWQgKHNpemUpOworLSAgZ29t cF9tdXRleF9pbml0ICgmd3MtPmxvY2spOworLSAgd3MtPm9yZGVyZWRfb3duZXIgPSAtMTsKKysg IHdzID0gdGVhbS0+d29ya19zaGFyZV9saXN0X2ZyZWU7CisrICAvKiBXZSBuZWVkIGF0b21pYyBy ZWFkIGZyb20gd29ya19zaGFyZV9saXN0X2ZyZWUsCisrICAgICBhcyBmcmVlX3dvcmtfc2hhcmUg Y2FuIGJlIGNhbGxlZCBjb25jdXJyZW50bHkuICAqLworKyAgX19hc20gKCIiIDogIityIiAod3Mp KTsKKysKKysgIGlmICh3cyAmJiB3cy0+bmV4dF9mcmVlKQorKyAgICB7CisrICAgICAgc3RydWN0 IGdvbXBfd29ya19zaGFyZSAqbmV4dCA9IHdzLT5uZXh0X2ZyZWU7CisrICAgICAgd3MtPm5leHRf ZnJlZSA9IE5VTEw7CisrICAgICAgdGVhbS0+d29ya19zaGFyZV9saXN0X2FsbG9jID0gbmV4dC0+ bmV4dF9mcmVlOworKyAgICAgIHJldHVybiBuZXh0OworKyAgICB9CisgCisrICB0ZWFtLT53b3Jr X3NoYXJlX2NodW5rICo9IDI7CisrICB3cyA9IGdvbXBfbWFsbG9jICh0ZWFtLT53b3JrX3NoYXJl X2NodW5rICogc2l6ZW9mIChzdHJ1Y3QgZ29tcF93b3JrX3NoYXJlKSk7CisrICB3cy0+bmV4dF9h bGxvYyA9IHRlYW0tPndvcmtfc2hhcmVzWzBdLm5leHRfYWxsb2M7CisrICB0ZWFtLT53b3JrX3No YXJlc1swXS5uZXh0X2FsbG9jID0gd3M7CisrICB0ZWFtLT53b3JrX3NoYXJlX2xpc3RfYWxsb2Mg PSAmd3NbMV07CisrICBmb3IgKGkgPSAxOyBpIDwgdGVhbS0+d29ya19zaGFyZV9jaHVuayAtIDE7 IGkrKykKKysgICAgd3NbaV0ubmV4dF9mcmVlID0gJndzW2kgKyAxXTsKKysgIHdzW2ldLm5leHRf ZnJlZSA9IE5VTEw7CisgICByZXR1cm4gd3M7CisgfQorIAorKy8qIEluaXRpYWxpemUgYW4gYWxy ZWFkeSBhbGxvY2F0ZWQgc3RydWN0IGdvbXBfd29ya19zaGFyZS4KKysgICBUaGlzIHNob3VsZG4n dCB0b3VjaCB0aGUgbmV4dF9hbGxvYyBmaWVsZC4gICovCisrCisrdm9pZAorK2dvbXBfaW5pdF93 b3JrX3NoYXJlIChzdHJ1Y3QgZ29tcF93b3JrX3NoYXJlICp3cywgYm9vbCBvcmRlcmVkLAorKwkJ ICAgICAgdW5zaWduZWQgbnRocmVhZHMpCisreworKyAgZ29tcF9tdXRleF9pbml0ICgmd3MtPmxv Y2spOworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKG9yZGVyZWQsIDApKQorKyAgICB7CisrI2Rl ZmluZSBJTkxJTkVfT1JERVJFRF9URUFNX0lEU19DTlQgXAorKyAgKChzaXplb2YgKHN0cnVjdCBn b21wX3dvcmtfc2hhcmUpIFwKKysgICAgLSBvZmZzZXRvZiAoc3RydWN0IGdvbXBfd29ya19zaGFy ZSwgaW5saW5lX29yZGVyZWRfdGVhbV9pZHMpKSBcCisrICAgLyBzaXplb2YgKCgoc3RydWN0IGdv bXBfd29ya19zaGFyZSAqKSAwKS0+aW5saW5lX29yZGVyZWRfdGVhbV9pZHNbMF0pKQorKworKyAg ICAgIGlmIChudGhyZWFkcyA+IElOTElORV9PUkRFUkVEX1RFQU1fSURTX0NOVCkKKysJd3MtPm9y ZGVyZWRfdGVhbV9pZHMKKysJICA9IGdvbXBfbWFsbG9jIChudGhyZWFkcyAqIHNpemVvZiAoKndz LT5vcmRlcmVkX3RlYW1faWRzKSk7CisrICAgICAgZWxzZQorKwl3cy0+b3JkZXJlZF90ZWFtX2lk cyA9IHdzLT5pbmxpbmVfb3JkZXJlZF90ZWFtX2lkczsKKysgICAgICBtZW1zZXQgKHdzLT5vcmRl cmVkX3RlYW1faWRzLCAnXDAnLAorKwkgICAgICBudGhyZWFkcyAqIHNpemVvZiAoKndzLT5vcmRl cmVkX3RlYW1faWRzKSk7CisrICAgICAgd3MtPm9yZGVyZWRfbnVtX3VzZWQgPSAwOworKyAgICAg IHdzLT5vcmRlcmVkX293bmVyID0gLTE7CisrICAgICAgd3MtPm9yZGVyZWRfY3VyID0gMDsKKysg ICAgfQorKyAgZWxzZQorKyAgICB3cy0+b3JkZXJlZF90ZWFtX2lkcyA9IE5VTEw7CisrICBnb21w X3B0cmxvY2tfaW5pdCAoJndzLT5uZXh0X3dzLCBOVUxMKTsKKysgIHdzLT50aHJlYWRzX2NvbXBs ZXRlZCA9IDA7CisrfQorIAorLS8qIEZyZWUgYSB3b3JrIHNoYXJlIHN0cnVjdHVyZS4gICovCisr LyogRG8gYW55IG5lZWRlZCBkZXN0cnVjdGlvbiBvZiBnb21wX3dvcmtfc2hhcmUgZmllbGRzIGJl Zm9yZSBpdAorKyAgIGlzIHB1dCBiYWNrIGludG8gZnJlZSBnb21wX3dvcmtfc2hhcmUgY2FjaGUg b3IgZnJlZWQuICAqLworIAorLXN0YXRpYyB2b2lkCistZnJlZV93b3JrX3NoYXJlIChzdHJ1Y3Qg Z29tcF93b3JrX3NoYXJlICp3cykKKyt2b2lkCisrZ29tcF9maW5pX3dvcmtfc2hhcmUgKHN0cnVj dCBnb21wX3dvcmtfc2hhcmUgKndzKQorIHsKKyAgIGdvbXBfbXV0ZXhfZGVzdHJveSAoJndzLT5s b2NrKTsKKy0gIGZyZWUgKHdzKTsKKysgIGlmICh3cy0+b3JkZXJlZF90ZWFtX2lkcyAhPSB3cy0+ aW5saW5lX29yZGVyZWRfdGVhbV9pZHMpCisrICAgIGZyZWUgKHdzLT5vcmRlcmVkX3RlYW1faWRz KTsKKysgIGdvbXBfcHRybG9ja19kZXN0cm95ICgmd3MtPm5leHRfd3MpOworIH0KKyAKKysvKiBG cmVlIGEgd29yayBzaGFyZSBzdHJ1Y3QsIGlmIG5vdCBvcnBoYW5lZCwgcHV0IGl0IGludG8gY3Vy cmVudAorKyAgIHRlYW0ncyBmcmVlIGdvbXBfd29ya19zaGFyZSBjYWNoZS4gICovCisrCisrc3Rh dGljIGlubGluZSB2b2lkCisrZnJlZV93b3JrX3NoYXJlIChzdHJ1Y3QgZ29tcF90ZWFtICp0ZWFt LCBzdHJ1Y3QgZ29tcF93b3JrX3NoYXJlICp3cykKKyt7CisrICBnb21wX2Zpbmlfd29ya19zaGFy ZSAod3MpOworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHRlYW0gPT0gTlVMTCwgMCkpCisrICAg IGZyZWUgKHdzKTsKKysgIGVsc2UKKysgICAgeworKyAgICAgIHN0cnVjdCBnb21wX3dvcmtfc2hh cmUgKm5leHRfd3M7CisrICAgICAgZG8KKysJeworKwkgIG5leHRfd3MgPSB0ZWFtLT53b3JrX3No YXJlX2xpc3RfZnJlZTsKKysJICB3cy0+bmV4dF9mcmVlID0gbmV4dF93czsKKysJfQorKyAgICAg IHdoaWxlICghX19zeW5jX2Jvb2xfY29tcGFyZV9hbmRfc3dhcCAoJnRlYW0tPndvcmtfc2hhcmVf bGlzdF9mcmVlLAorKwkJCQkJICAgIG5leHRfd3MsIHdzKSk7CisrICAgIH0KKyt9CisgCisgLyog VGhlIGN1cnJlbnQgdGhyZWFkIGlzIHJlYWR5IHRvIGJlZ2luIHRoZSBuZXh0IHdvcmsgc2hhcmlu ZyBjb25zdHJ1Y3QuCisgICAgSW4gYWxsIGNhc2VzLCB0aHItPnRzLndvcmtfc2hhcmUgaXMgdXBk YXRlZCB0byBwb2ludCB0byB0aGUgbmV3CitAQCAtNzQsNzEgKzE1MiwzNCBAQCBnb21wX3dvcmtf c2hhcmVfc3RhcnQgKGJvb2wgb3JkZXJlZCkKKyAgIHN0cnVjdCBnb21wX3RocmVhZCAqdGhyID0g Z29tcF90aHJlYWQgKCk7CisgICBzdHJ1Y3QgZ29tcF90ZWFtICp0ZWFtID0gdGhyLT50cy50ZWFt OworICAgc3RydWN0IGdvbXBfd29ya19zaGFyZSAqd3M7CistICB1bnNpZ25lZCB3c19pbmRleCwg d3NfZ2VuOworIAorICAgLyogV29yayBzaGFyaW5nIGNvbnN0cnVjdHMgY2FuIGJlIG9ycGhhbmVk LiAgKi8KKyAgIGlmICh0ZWFtID09IE5VTEwpCisgICAgIHsKKy0gICAgICB3cyA9IGdvbXBfbmV3 X3dvcmtfc2hhcmUgKG9yZGVyZWQsIDEpOworKyAgICAgIHdzID0gZ29tcF9tYWxsb2MgKHNpemVv ZiAoKndzKSk7CisrICAgICAgZ29tcF9pbml0X3dvcmtfc2hhcmUgKHdzLCBvcmRlcmVkLCAxKTsK KyAgICAgICB0aHItPnRzLndvcmtfc2hhcmUgPSB3czsKKy0gICAgICB0aHItPnRzLnN0YXRpY190 cmlwID0gMDsKKy0gICAgICBnb21wX211dGV4X2xvY2sgKCZ3cy0+bG9jayk7CistICAgICAgcmV0 dXJuIHRydWU7CisrICAgICAgcmV0dXJuIHdzOworICAgICB9CisgCistICBnb21wX211dGV4X2xv Y2sgKCZ0ZWFtLT53b3JrX3NoYXJlX2xvY2spOworLQorLSAgLyogVGhpcyB0aHJlYWQgaXMgYmVn aW5uaW5nIGl0cyBuZXh0IGdlbmVyYXRpb24uICAqLworLSAgd3NfZ2VuID0gKyt0aHItPnRzLndv cmtfc2hhcmVfZ2VuZXJhdGlvbjsKKy0KKy0gIC8qIElmIHRoaXMgbmV4dCBnZW5lcmF0aW9uIGlz IG5vdCBuZXdlciB0aGFuIGFueSBvdGhlciBnZW5lcmF0aW9uIGluCistICAgICB0aGUgdGVhbSwg dGhlbiBzaW1wbHkgcmVmZXJlbmNlIHRoZSBleGlzdGluZyBjb25zdHJ1Y3QuICAqLworLSAgaWYg KHdzX2dlbiAtIHRlYW0tPm9sZGVzdF9saXZlX2dlbiA8IHRlYW0tPm51bV9saXZlX2dlbikKKysg IHdzID0gdGhyLT50cy53b3JrX3NoYXJlOworKyAgdGhyLT50cy5sYXN0X3dvcmtfc2hhcmUgPSB3 czsKKysgIHdzID0gZ29tcF9wdHJsb2NrX2dldCAoJndzLT5uZXh0X3dzKTsKKysgIGlmICh3cyA9 PSBOVUxMKQorICAgICB7CistICAgICAgd3NfaW5kZXggPSB3c19nZW4gJiB0ZWFtLT5nZW5lcmF0 aW9uX21hc2s7CistICAgICAgd3MgPSB0ZWFtLT53b3JrX3NoYXJlc1t3c19pbmRleF07CisrICAg ICAgLyogVGhpcyB0aHJlYWQgZW5jb3VudGVyZWQgYSBuZXcgd3MgZmlyc3QuICAqLworKyAgICAg IHN0cnVjdCBnb21wX3dvcmtfc2hhcmUgKndzID0gYWxsb2Nfd29ya19zaGFyZSAodGVhbSk7Cisr ICAgICAgZ29tcF9pbml0X3dvcmtfc2hhcmUgKHdzLCBvcmRlcmVkLCB0ZWFtLT5udGhyZWFkcyk7 CisgICAgICAgdGhyLT50cy53b3JrX3NoYXJlID0gd3M7CistICAgICAgdGhyLT50cy5zdGF0aWNf dHJpcCA9IDA7CistCistICAgICAgZ29tcF9tdXRleF9sb2NrICgmd3MtPmxvY2spOworLSAgICAg IGdvbXBfbXV0ZXhfdW5sb2NrICgmdGVhbS0+d29ya19zaGFyZV9sb2NrKTsKKy0KKy0gICAgICBy ZXR1cm4gZmFsc2U7CisrICAgICAgcmV0dXJuIHRydWU7CisgICAgIH0KKy0KKy0gIC8qIFJlc2l6 ZSB0aGUgd29yayBzaGFyZXMgcXVldWUgaWYgd2UndmUgcnVuIG91dCBvZiBzcGFjZS4gICovCist ICBpZiAodGVhbS0+bnVtX2xpdmVfZ2VuKysgPT0gdGVhbS0+Z2VuZXJhdGlvbl9tYXNrKQorKyAg ZWxzZQorICAgICB7CistICAgICAgdGVhbS0+d29ya19zaGFyZXMgPSBnb21wX3JlYWxsb2MgKHRl YW0tPndvcmtfc2hhcmVzLAorLQkJCQkJMiAqIHRlYW0tPm51bV9saXZlX2dlbgorLQkJCQkJKiBz aXplb2YgKCp0ZWFtLT53b3JrX3NoYXJlcykpOworLQorLSAgICAgIC8qIFVubGVzcyBvbGRlc3Rf bGl2ZV9nZW4gaXMgemVybywgdGhlIHNlcXVlbmNlIG9mIGxpdmUgZWxlbWVudHMKKy0JIHdyYXBz IGFyb3VuZCB0aGUgZW5kIG9mIHRoZSBhcnJheS4gIElmIHdlIGRvIG5vdGhpbmcsIHdlIGJyZWFr CistCSBsb29rdXAgb2YgdGhlIGV4aXN0aW5nIGVsZW1lbnRzLiAgRml4IHRoYXQgYnkgdW53cmFw cGluZyB0aGUKKy0JIGRhdGEgZnJvbSB0aGUgZnJvbnQgdG8gdGhlIGVuZC4gICovCistICAgICAg aWYgKHRlYW0tPm9sZGVzdF9saXZlX2dlbiA+IDApCistCW1lbWNweSAodGVhbS0+d29ya19zaGFy ZXMgKyB0ZWFtLT5udW1fbGl2ZV9nZW4sCistCQl0ZWFtLT53b3JrX3NoYXJlcywKKy0JCSh0ZWFt LT5vbGRlc3RfbGl2ZV9nZW4gJiB0ZWFtLT5nZW5lcmF0aW9uX21hc2spCistCQkqIHNpemVvZiAo KnRlYW0tPndvcmtfc2hhcmVzKSk7CistCistICAgICAgdGVhbS0+Z2VuZXJhdGlvbl9tYXNrID0g dGVhbS0+Z2VuZXJhdGlvbl9tYXNrICogMiArIDE7CistICAgIH0KKy0KKy0gIHdzX2luZGV4ID0g d3NfZ2VuICYgdGVhbS0+Z2VuZXJhdGlvbl9tYXNrOworLSAgd3MgPSBnb21wX25ld193b3JrX3No YXJlIChvcmRlcmVkLCB0ZWFtLT5udGhyZWFkcyk7CistICB0aHItPnRzLndvcmtfc2hhcmUgPSB3 czsKKy0gIHRoci0+dHMuc3RhdGljX3RyaXAgPSAwOworLSAgdGVhbS0+d29ya19zaGFyZXNbd3Nf aW5kZXhdID0gd3M7CistCistICBnb21wX211dGV4X2xvY2sgKCZ3cy0+bG9jayk7CistICBnb21w X211dGV4X3VubG9jayAoJnRlYW0tPndvcmtfc2hhcmVfbG9jayk7CistCistICByZXR1cm4gdHJ1 ZTsKKysgICAgICB0aHItPnRzLndvcmtfc2hhcmUgPSB3czsKKysgICAgICByZXR1cm4gZmFsc2U7 CisrICAgIH0KKyB9CisgCistCisgLyogVGhlIGN1cnJlbnQgdGhyZWFkIGlzIGRvbmUgd2l0aCBp dHMgY3VycmVudCB3b3JrIHNoYXJpbmcgY29uc3RydWN0LgorICAgIFRoaXMgdmVyc2lvbiBkb2Vz IGltcGx5IGEgYmFycmllciBhdCB0aGUgZW5kIG9mIHRoZSB3b3JrLXNoYXJlLiAgKi8KKyAKK0BA IC0xNDcsMzYgKzE4OCwyOCBAQCBnb21wX3dvcmtfc2hhcmVfZW5kICh2b2lkKQorIHsKKyAgIHN0 cnVjdCBnb21wX3RocmVhZCAqdGhyID0gZ29tcF90aHJlYWQgKCk7CisgICBzdHJ1Y3QgZ29tcF90 ZWFtICp0ZWFtID0gdGhyLT50cy50ZWFtOworLSAgc3RydWN0IGdvbXBfd29ya19zaGFyZSAqd3Mg PSB0aHItPnRzLndvcmtfc2hhcmU7CistICBib29sIGxhc3Q7CistCistICB0aHItPnRzLndvcmtf c2hhcmUgPSBOVUxMOworKyAgZ29tcF9iYXJyaWVyX3N0YXRlX3QgYnN0YXRlOworIAorICAgLyog V29yayBzaGFyaW5nIGNvbnN0cnVjdHMgY2FuIGJlIG9ycGhhbmVkLiAgKi8KKyAgIGlmICh0ZWFt ID09IE5VTEwpCisgICAgIHsKKy0gICAgICBmcmVlX3dvcmtfc2hhcmUgKHdzKTsKKysgICAgICBm cmVlX3dvcmtfc2hhcmUgKE5VTEwsIHRoci0+dHMud29ya19zaGFyZSk7CisrICAgICAgdGhyLT50 cy53b3JrX3NoYXJlID0gTlVMTDsKKyAgICAgICByZXR1cm47CisgICAgIH0KKyAKKy0gIGxhc3Qg PSBnb21wX2JhcnJpZXJfd2FpdF9zdGFydCAoJnRlYW0tPmJhcnJpZXIpOworKyAgYnN0YXRlID0g Z29tcF9iYXJyaWVyX3dhaXRfc3RhcnQgKCZ0ZWFtLT5iYXJyaWVyKTsKKyAKKy0gIGlmIChsYXN0 KQorKyAgaWYgKGdvbXBfYmFycmllcl9sYXN0X3RocmVhZCAoYnN0YXRlKSkKKyAgICAgeworLSAg ICAgIHVuc2lnbmVkIHdzX2luZGV4OworLQorLSAgICAgIHdzX2luZGV4ID0gdGhyLT50cy53b3Jr X3NoYXJlX2dlbmVyYXRpb24gJiB0ZWFtLT5nZW5lcmF0aW9uX21hc2s7CistICAgICAgdGVhbS0+ d29ya19zaGFyZXNbd3NfaW5kZXhdID0gTlVMTDsKKy0gICAgICB0ZWFtLT5vbGRlc3RfbGl2ZV9n ZW4rKzsKKy0gICAgICB0ZWFtLT5udW1fbGl2ZV9nZW4gPSAwOworLQorLSAgICAgIGZyZWVfd29y a19zaGFyZSAod3MpOworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICh0aHItPnRzLmxhc3Rf d29ya19zaGFyZSAhPSBOVUxMLCAxKSkKKysJZnJlZV93b3JrX3NoYXJlICh0ZWFtLCB0aHItPnRz Lmxhc3Rfd29ya19zaGFyZSk7CisgICAgIH0KKyAKKy0gIGdvbXBfYmFycmllcl93YWl0X2VuZCAo JnRlYW0tPmJhcnJpZXIsIGxhc3QpOworKyAgZ29tcF9iYXJyaWVyX3dhaXRfZW5kICgmdGVhbS0+ YmFycmllciwgYnN0YXRlKTsKKysgIHRoci0+dHMubGFzdF93b3JrX3NoYXJlID0gTlVMTDsKKyB9 CisgCistCisgLyogVGhlIGN1cnJlbnQgdGhyZWFkIGlzIGRvbmUgd2l0aCBpdHMgY3VycmVudCB3 b3JrIHNoYXJpbmcgY29uc3RydWN0LgorICAgIFRoaXMgdmVyc2lvbiBkb2VzIE5PVCBpbXBseSBh IGJhcnJpZXIgYXQgdGhlIGVuZCBvZiB0aGUgd29yay1zaGFyZS4gICovCisgCitAQCAtMTg4LDE1 ICsyMjEsMTcgQEAgZ29tcF93b3JrX3NoYXJlX2VuZF9ub3dhaXQgKHZvaWQpCisgICBzdHJ1Y3Qg Z29tcF93b3JrX3NoYXJlICp3cyA9IHRoci0+dHMud29ya19zaGFyZTsKKyAgIHVuc2lnbmVkIGNv bXBsZXRlZDsKKyAKKy0gIHRoci0+dHMud29ya19zaGFyZSA9IE5VTEw7CistCisgICAvKiBXb3Jr IHNoYXJpbmcgY29uc3RydWN0cyBjYW4gYmUgb3JwaGFuZWQuICAqLworICAgaWYgKHRlYW0gPT0g TlVMTCkKKyAgICAgeworLSAgICAgIGZyZWVfd29ya19zaGFyZSAod3MpOworKyAgICAgIGZyZWVf d29ya19zaGFyZSAoTlVMTCwgd3MpOworKyAgICAgIHRoci0+dHMud29ya19zaGFyZSA9IE5VTEw7 CisgICAgICAgcmV0dXJuOworICAgICB9CisgCisrICBpZiAoX19idWlsdGluX2V4cGVjdCAodGhy LT50cy5sYXN0X3dvcmtfc2hhcmUgPT0gTlVMTCwgMCkpCisrICAgIHJldHVybjsKKysKKyAjaWZk ZWYgSEFWRV9TWU5DX0JVSUxUSU5TCisgICBjb21wbGV0ZWQgPSBfX3N5bmNfYWRkX2FuZF9mZXRj aCAoJndzLT50aHJlYWRzX2NvbXBsZXRlZCwgMSk7CisgI2Vsc2UKK0BAIC0yMDYsMTggKzI0MSw2 IEBAIGdvbXBfd29ya19zaGFyZV9lbmRfbm93YWl0ICh2b2lkKQorICNlbmRpZgorIAorICAgaWYg KGNvbXBsZXRlZCA9PSB0ZWFtLT5udGhyZWFkcykKKy0gICAgeworLSAgICAgIHVuc2lnbmVkIHdz X2luZGV4OworLQorLSAgICAgIGdvbXBfbXV0ZXhfbG9jayAoJnRlYW0tPndvcmtfc2hhcmVfbG9j ayk7CistCistICAgICAgd3NfaW5kZXggPSB0aHItPnRzLndvcmtfc2hhcmVfZ2VuZXJhdGlvbiAm IHRlYW0tPmdlbmVyYXRpb25fbWFzazsKKy0gICAgICB0ZWFtLT53b3JrX3NoYXJlc1t3c19pbmRl eF0gPSBOVUxMOworLSAgICAgIHRlYW0tPm9sZGVzdF9saXZlX2dlbisrOworLSAgICAgIHRlYW0t Pm51bV9saXZlX2dlbi0tOworLQorLSAgICAgIGdvbXBfbXV0ZXhfdW5sb2NrICgmdGVhbS0+d29y a19zaGFyZV9sb2NrKTsKKy0KKy0gICAgICBmcmVlX3dvcmtfc2hhcmUgKHdzKTsKKy0gICAgfQor KyAgICBmcmVlX3dvcmtfc2hhcmUgKHRlYW0sIHRoci0+dHMubGFzdF93b3JrX3NoYXJlKTsKKysg IHRoci0+dHMubGFzdF93b3JrX3NoYXJlID0gTlVMTDsKKyB9CistLS0gbGliZ29tcC9zaW5nbGUu Yy5qagkyMDA3LTEyLTA3IDE0OjQxOjAxLjAwMDAwMDAwMCArMDEwMAorKysrIGxpYmdvbXAvc2lu Z2xlLmMJMjAwOC0wMy0yNiAxNToxMTozMi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDQgKzEsNCBA QAorLS8qIENvcHlyaWdodCAoQykgMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KysvKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisgICAgQ29udHJpYnV0ZWQgYnkgUmljaGFyZCBIZW5kZXJzb24gPHJ0aEByZWRoYXQuY29t Pi4KKyAKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIE9wZW5NUCBMaWJyYXJ5IChs aWJnb21wKS4KK0BAIC0zNywxMCArMzcsMjQgQEAKKyBib29sCisgR09NUF9zaW5nbGVfc3RhcnQg KHZvaWQpCisgeworKyNpZmRlZiBIQVZFX1NZTkNfQlVJTFRJTlMKKysgIHN0cnVjdCBnb21wX3Ro cmVhZCAqdGhyID0gZ29tcF90aHJlYWQgKCk7CisrICBzdHJ1Y3QgZ29tcF90ZWFtICp0ZWFtID0g dGhyLT50cy50ZWFtOworKyAgdW5zaWduZWQgbG9uZyBzaW5nbGVfY291bnQ7CisrCisrICBpZiAo X19idWlsdGluX2V4cGVjdCAodGVhbSA9PSBOVUxMLCAwKSkKKysgICAgcmV0dXJuIHRydWU7Cisr CisrICBzaW5nbGVfY291bnQgPSB0aHItPnRzLnNpbmdsZV9jb3VudCsrOworKyAgcmV0dXJuIF9f c3luY19ib29sX2NvbXBhcmVfYW5kX3N3YXAgKCZ0ZWFtLT5zaW5nbGVfY291bnQsIHNpbmdsZV9j b3VudCwKKysJCQkJICAgICAgIHNpbmdsZV9jb3VudCArIDFMKTsKKysjZWxzZQorICAgYm9vbCBy ZXQgPSBnb21wX3dvcmtfc2hhcmVfc3RhcnQgKGZhbHNlKTsKKy0gIGdvbXBfbXV0ZXhfdW5sb2Nr ICgmZ29tcF90aHJlYWQgKCktPnRzLndvcmtfc2hhcmUtPmxvY2spOworKyAgaWYgKHJldCkKKysg ICAgZ29tcF93b3JrX3NoYXJlX2luaXRfZG9uZSAoKTsKKyAgIGdvbXBfd29ya19zaGFyZV9lbmRf bm93YWl0ICgpOworICAgcmV0dXJuIHJldDsKKysjZW5kaWYKKyB9CisgCisgLyogVGhpcyByb3V0 aW5lIGlzIGNhbGxlZCB3aGVuIGZpcnN0IGVuY291bnRlcmluZyBhIFNJTkdMRSBjb25zdHJ1Y3Qg dGhhdAorQEAgLTU3LDEwICs3MSwxMiBAQCBHT01QX3NpbmdsZV9jb3B5X3N0YXJ0ICh2b2lkKQor ICAgdm9pZCAqcmV0OworIAorICAgZmlyc3QgPSBnb21wX3dvcmtfc2hhcmVfc3RhcnQgKGZhbHNl KTsKKy0gIGdvbXBfbXV0ZXhfdW5sb2NrICgmdGhyLT50cy53b3JrX3NoYXJlLT5sb2NrKTsKKyAg IAorICAgaWYgKGZpcnN0KQorLSAgICByZXQgPSBOVUxMOworKyAgICB7CisrICAgICAgZ29tcF93 b3JrX3NoYXJlX2luaXRfZG9uZSAoKTsKKysgICAgICByZXQgPSBOVUxMOworKyAgICB9CisgICBl bHNlCisgICAgIHsKKyAgICAgICBnb21wX2JhcnJpZXJfd2FpdCAoJnRoci0+dHMudGVhbS0+YmFy cmllcik7CistLS0gbGliZ29tcC9sb29wLmMuamoJMjAwNy0xMi0wNyAxNDo0MTowMS4wMDAwMDAw MDAgKzAxMDAKKysrKyBsaWJnb21wL2xvb3AuYwkyMDA4LTAzLTI2IDE4OjQ3OjA0LjAwMDAwMDAw MCArMDEwMAorQEAgLTI3LDggKzI3LDkgQEAKKyAKKyAvKiBUaGlzIGZpbGUgaGFuZGxlcyB0aGUg TE9PUCAoRk9SL0RPKSBjb25zdHJ1Y3QuICAqLworIAorLSNpbmNsdWRlICJsaWJnb21wLmgiCisr I2luY2x1ZGUgPGxpbWl0cy5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaW5jbHVkZSAibGli Z29tcC5oIgorIAorIAorIC8qIEluaXRpYWxpemUgdGhlIGdpdmVuIHdvcmsgc2hhcmUgY29uc3Ry dWN0IGZyb20gdGhlIGdpdmVuIGFyZ3VtZW50cy4gICovCitAQCAtNDQsNiArNDUsMzkgQEAgZ29t cF9sb29wX2luaXQgKHN0cnVjdCBnb21wX3dvcmtfc2hhcmUgKgorIAkgICAgPyBzdGFydCA6IGVu ZDsKKyAgIHdzLT5pbmNyID0gaW5jcjsKKyAgIHdzLT5uZXh0ID0gc3RhcnQ7CisrICBpZiAoc2No ZWQgPT0gR0ZTX0RZTkFNSUMpCisrICAgIHsKKysgICAgICB3cy0+Y2h1bmtfc2l6ZSAqPSBpbmNy OworKworKyNpZmRlZiBIQVZFX1NZTkNfQlVJTFRJTlMKKysgICAgICB7CisrCS8qIEZvciBkeW5h bWljIHNjaGVkdWxpbmcgcHJlcGFyZSB0aGluZ3MgdG8gbWFrZSBlYWNoIGl0ZXJhdGlvbgorKwkg ICBmYXN0ZXIuICAqLworKwlzdHJ1Y3QgZ29tcF90aHJlYWQgKnRociA9IGdvbXBfdGhyZWFkICgp OworKwlzdHJ1Y3QgZ29tcF90ZWFtICp0ZWFtID0gdGhyLT50cy50ZWFtOworKwlsb25nIG50aHJl YWRzID0gdGVhbSA/IHRlYW0tPm50aHJlYWRzIDogMTsKKysKKysJaWYgKF9fYnVpbHRpbl9leHBl Y3QgKGluY3IgPiAwLCAxKSkKKysJICB7CisrCSAgICAvKiBDaGVhcCBvdmVyZmxvdyBwcm90ZWN0 aW9uLiAgKi8KKysJICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgobnRocmVhZHMgfCB3cy0+Y2h1 bmtfc2l6ZSkKKysJCQkJICA+PSAxVUwgPDwgKHNpemVvZiAobG9uZykKKysJCQkJCSAgICAgKiBf X0NIQVJfQklUX18gLyAyIC0gMSksIDApKQorKwkgICAgICB3cy0+bW9kZSA9IDA7CisrCSAgICBl bHNlCisrCSAgICAgIHdzLT5tb2RlID0gd3MtPmVuZCA8IChMT05HX01BWAorKwkJCQkgICAgLSAo bnRocmVhZHMgKyAxKSAqIHdzLT5jaHVua19zaXplKTsKKysJICB9CisrCS8qIENoZWFwIG92ZXJm bG93IHByb3RlY3Rpb24uICAqLworKwllbHNlIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgobnRocmVh ZHMgfCAtd3MtPmNodW5rX3NpemUpCisrCQkJCSAgID49IDFVTCA8PCAoc2l6ZW9mIChsb25nKQor KwkJCQkJICAgICAgKiBfX0NIQVJfQklUX18gLyAyIC0gMSksIDApKQorKwkgIHdzLT5tb2RlID0g MDsKKysJZWxzZQorKwkgIHdzLT5tb2RlID0gd3MtPmVuZCA+IChudGhyZWFkcyArIDEpICogLXdz LT5jaHVua19zaXplIC0gTE9OR19NQVg7CisrICAgICAgfQorKyNlbmRpZgorKyAgICB9CisgfQor IAorIC8qIFRoZSAqX3N0YXJ0IHJvdXRpbmVzIGFyZSBjYWxsZWQgd2hlbiBmaXJzdCBlbmNvdW50 ZXJpbmcgYSBsb29wIGNvbnN0cnVjdAorQEAgLTY4LDEwICsxMDIsMTMgQEAgZ29tcF9sb29wX3N0 YXRpY19zdGFydCAobG9uZyBzdGFydCwgbG9uZworIHsKKyAgIHN0cnVjdCBnb21wX3RocmVhZCAq dGhyID0gZ29tcF90aHJlYWQgKCk7CisgCisrICB0aHItPnRzLnN0YXRpY190cmlwID0gMDsKKyAg IGlmIChnb21wX3dvcmtfc2hhcmVfc3RhcnQgKGZhbHNlKSkKKy0gICAgZ29tcF9sb29wX2luaXQg KHRoci0+dHMud29ya19zaGFyZSwgc3RhcnQsIGVuZCwgaW5jciwKKy0JCSAgICBHRlNfU1RBVElD LCBjaHVua19zaXplKTsKKy0gIGdvbXBfbXV0ZXhfdW5sb2NrICgmdGhyLT50cy53b3JrX3NoYXJl LT5sb2NrKTsKKysgICAgeworKyAgICAgIGdvbXBfbG9vcF9pbml0ICh0aHItPnRzLndvcmtfc2hh cmUsIHN0YXJ0LCBlbmQsIGluY3IsCisrCQkgICAgICBHRlNfU1RBVElDLCBjaHVua19zaXplKTsK KysgICAgICBnb21wX3dvcmtfc2hhcmVfaW5pdF9kb25lICgpOworKyAgICB9CisgCisgICByZXR1 cm4gIWdvbXBfaXRlcl9zdGF0aWNfbmV4dCAoaXN0YXJ0LCBpZW5kKTsKKyB9CitAQCAtODQsMTMg KzEyMSwxNiBAQCBnb21wX2xvb3BfZHluYW1pY19zdGFydCAobG9uZyBzdGFydCwgbG9uCisgICBi b29sIHJldDsKKyAKKyAgIGlmIChnb21wX3dvcmtfc2hhcmVfc3RhcnQgKGZhbHNlKSkKKy0gICAg Z29tcF9sb29wX2luaXQgKHRoci0+dHMud29ya19zaGFyZSwgc3RhcnQsIGVuZCwgaW5jciwKKy0J CSAgICBHRlNfRFlOQU1JQywgY2h1bmtfc2l6ZSk7CisrICAgIHsKKysgICAgICBnb21wX2xvb3Bf aW5pdCAodGhyLT50cy53b3JrX3NoYXJlLCBzdGFydCwgZW5kLCBpbmNyLAorKwkJICAgICAgR0ZT X0RZTkFNSUMsIGNodW5rX3NpemUpOworKyAgICAgIGdvbXBfd29ya19zaGFyZV9pbml0X2RvbmUg KCk7CisrICAgIH0KKyAKKyAjaWZkZWYgSEFWRV9TWU5DX0JVSUxUSU5TCistICBnb21wX211dGV4 X3VubG9jayAoJnRoci0+dHMud29ya19zaGFyZS0+bG9jayk7CisgICByZXQgPSBnb21wX2l0ZXJf ZHluYW1pY19uZXh0IChpc3RhcnQsIGllbmQpOworICNlbHNlCisrICBnb21wX211dGV4X2xvY2sg KCZ0aHItPnRzLndvcmtfc2hhcmUtPmxvY2spOworICAgcmV0ID0gZ29tcF9pdGVyX2R5bmFtaWNf bmV4dF9sb2NrZWQgKGlzdGFydCwgaWVuZCk7CisgICBnb21wX211dGV4X3VubG9jayAoJnRoci0+ dHMud29ya19zaGFyZS0+bG9jayk7CisgI2VuZGlmCitAQCAtMTA2LDEzICsxNDYsMTYgQEAgZ29t cF9sb29wX2d1aWRlZF9zdGFydCAobG9uZyBzdGFydCwgbG9uZworICAgYm9vbCByZXQ7CisgCisg ICBpZiAoZ29tcF93b3JrX3NoYXJlX3N0YXJ0IChmYWxzZSkpCistICAgIGdvbXBfbG9vcF9pbml0 ICh0aHItPnRzLndvcmtfc2hhcmUsIHN0YXJ0LCBlbmQsIGluY3IsCistCQkgICAgR0ZTX0dVSURF RCwgY2h1bmtfc2l6ZSk7CisrICAgIHsKKysgICAgICBnb21wX2xvb3BfaW5pdCAodGhyLT50cy53 b3JrX3NoYXJlLCBzdGFydCwgZW5kLCBpbmNyLAorKwkJICAgICAgR0ZTX0dVSURFRCwgY2h1bmtf c2l6ZSk7CisrICAgICAgZ29tcF93b3JrX3NoYXJlX2luaXRfZG9uZSAoKTsKKysgICAgfQorIAor ICNpZmRlZiBIQVZFX1NZTkNfQlVJTFRJTlMKKy0gIGdvbXBfbXV0ZXhfdW5sb2NrICgmdGhyLT50 cy53b3JrX3NoYXJlLT5sb2NrKTsKKyAgIHJldCA9IGdvbXBfaXRlcl9ndWlkZWRfbmV4dCAoaXN0 YXJ0LCBpZW5kKTsKKyAjZWxzZQorKyAgZ29tcF9tdXRleF9sb2NrICgmdGhyLT50cy53b3JrX3No YXJlLT5sb2NrKTsKKyAgIHJldCA9IGdvbXBfaXRlcl9ndWlkZWRfbmV4dF9sb2NrZWQgKGlzdGFy dCwgaWVuZCk7CisgICBnb21wX211dGV4X3VubG9jayAoJnRoci0+dHMud29ya19zaGFyZS0+bG9j ayk7CisgI2VuZGlmCitAQCAtMTQ5LDEzICsxOTIsMTQgQEAgZ29tcF9sb29wX29yZGVyZWRfc3Rh dGljX3N0YXJ0IChsb25nIHN0YQorIHsKKyAgIHN0cnVjdCBnb21wX3RocmVhZCAqdGhyID0gZ29t cF90aHJlYWQgKCk7CisgCisrICB0aHItPnRzLnN0YXRpY190cmlwID0gMDsKKyAgIGlmIChnb21w X3dvcmtfc2hhcmVfc3RhcnQgKHRydWUpKQorICAgICB7CisgICAgICAgZ29tcF9sb29wX2luaXQg KHRoci0+dHMud29ya19zaGFyZSwgc3RhcnQsIGVuZCwgaW5jciwKKyAJCSAgICAgIEdGU19TVEFU SUMsIGNodW5rX3NpemUpOworICAgICAgIGdvbXBfb3JkZXJlZF9zdGF0aWNfaW5pdCAoKTsKKysg ICAgICBnb21wX3dvcmtfc2hhcmVfaW5pdF9kb25lICgpOworICAgICB9CistICBnb21wX211dGV4 X3VubG9jayAoJnRoci0+dHMud29ya19zaGFyZS0+bG9jayk7CisgCisgICByZXR1cm4gIWdvbXBf aXRlcl9zdGF0aWNfbmV4dCAoaXN0YXJ0LCBpZW5kKTsKKyB9CitAQCAtMTY4LDggKzIxMiwxNCBA QCBnb21wX2xvb3Bfb3JkZXJlZF9keW5hbWljX3N0YXJ0IChsb25nIHN0CisgICBib29sIHJldDsK KyAKKyAgIGlmIChnb21wX3dvcmtfc2hhcmVfc3RhcnQgKHRydWUpKQorLSAgICBnb21wX2xvb3Bf aW5pdCAodGhyLT50cy53b3JrX3NoYXJlLCBzdGFydCwgZW5kLCBpbmNyLAorLQkJICAgIEdGU19E WU5BTUlDLCBjaHVua19zaXplKTsKKysgICAgeworKyAgICAgIGdvbXBfbG9vcF9pbml0ICh0aHIt PnRzLndvcmtfc2hhcmUsIHN0YXJ0LCBlbmQsIGluY3IsCisrCQkgICAgICBHRlNfRFlOQU1JQywg Y2h1bmtfc2l6ZSk7CisrICAgICAgZ29tcF9tdXRleF9sb2NrICgmdGhyLT50cy53b3JrX3NoYXJl LT5sb2NrKTsKKysgICAgICBnb21wX3dvcmtfc2hhcmVfaW5pdF9kb25lICgpOworKyAgICB9Cisr ICBlbHNlCisrICAgIGdvbXBfbXV0ZXhfbG9jayAoJnRoci0+dHMud29ya19zaGFyZS0+bG9jayk7 CisgCisgICByZXQgPSBnb21wX2l0ZXJfZHluYW1pY19uZXh0X2xvY2tlZCAoaXN0YXJ0LCBpZW5k KTsKKyAgIGlmIChyZXQpCitAQCAtMTg3LDggKzIzNywxNCBAQCBnb21wX2xvb3Bfb3JkZXJlZF9n dWlkZWRfc3RhcnQgKGxvbmcgc3RhCisgICBib29sIHJldDsKKyAKKyAgIGlmIChnb21wX3dvcmtf c2hhcmVfc3RhcnQgKHRydWUpKQorLSAgICBnb21wX2xvb3BfaW5pdCAodGhyLT50cy53b3JrX3No YXJlLCBzdGFydCwgZW5kLCBpbmNyLAorLQkJICAgIEdGU19HVUlERUQsIGNodW5rX3NpemUpOwor KyAgICB7CisrICAgICAgZ29tcF9sb29wX2luaXQgKHRoci0+dHMud29ya19zaGFyZSwgc3RhcnQs IGVuZCwgaW5jciwKKysJCSAgICAgIEdGU19HVUlERUQsIGNodW5rX3NpemUpOworKyAgICAgIGdv bXBfbXV0ZXhfbG9jayAoJnRoci0+dHMud29ya19zaGFyZS0+bG9jayk7CisrICAgICAgZ29tcF93 b3JrX3NoYXJlX2luaXRfZG9uZSAoKTsKKysgICAgfQorKyAgZWxzZQorKyAgICBnb21wX211dGV4 X2xvY2sgKCZ0aHItPnRzLndvcmtfc2hhcmUtPmxvY2spOworIAorICAgcmV0ID0gZ29tcF9pdGVy X2d1aWRlZF9uZXh0X2xvY2tlZCAoaXN0YXJ0LCBpZW5kKTsKKyAgIGlmIChyZXQpCitAQCAtMzc1 LDEyICs0MzEsMTIgQEAgZ29tcF9wYXJhbGxlbF9sb29wX3N0YXJ0ICh2b2lkICgqZm4pICh2bwor IAkJCSAgbG9uZyBpbmNyLCBlbnVtIGdvbXBfc2NoZWR1bGVfdHlwZSBzY2hlZCwKKyAJCQkgIGxv bmcgY2h1bmtfc2l6ZSkKKyB7CistICBzdHJ1Y3QgZ29tcF93b3JrX3NoYXJlICp3czsKKysgIHN0 cnVjdCBnb21wX3RlYW0gKnRlYW07CisgCisgICBudW1fdGhyZWFkcyA9IGdvbXBfcmVzb2x2ZV9u dW1fdGhyZWFkcyAobnVtX3RocmVhZHMpOworLSAgd3MgPSBnb21wX25ld193b3JrX3NoYXJlIChm YWxzZSwgbnVtX3RocmVhZHMpOworLSAgZ29tcF9sb29wX2luaXQgKHdzLCBzdGFydCwgZW5kLCBp bmNyLCBzY2hlZCwgY2h1bmtfc2l6ZSk7CistICBnb21wX3RlYW1fc3RhcnQgKGZuLCBkYXRhLCBu dW1fdGhyZWFkcywgd3MpOworKyAgdGVhbSA9IGdvbXBfbmV3X3RlYW0gKG51bV90aHJlYWRzKTsK KysgIGdvbXBfbG9vcF9pbml0ICgmdGVhbS0+d29ya19zaGFyZXNbMF0sIHN0YXJ0LCBlbmQsIGlu Y3IsIHNjaGVkLCBjaHVua19zaXplKTsKKysgIGdvbXBfdGVhbV9zdGFydCAoZm4sIGRhdGEsIG51 bV90aHJlYWRzLCB0ZWFtKTsKKyB9CisgCisgdm9pZAorLS0tIGxpYmdvbXAvTWFrZWZpbGUuaW4u amoJMjAwOC0wMS0xMCAyMDo1Mzo0Ny4wMDAwMDAwMDAgKzAxMDAKKysrKyBsaWJnb21wL01ha2Vm aWxlLmluCTIwMDgtMDMtMjYgMTg6NTE6MDEuMDAwMDAwMDAwICswMTAwCitAQCAtODMsNyArODMs NyBAQCBsaWJnb21wX2xhX0xJQkFERCA9CisgYW1fbGliZ29tcF9sYV9PQkpFQ1RTID0gYWxsb2Mu bG8gYmFycmllci5sbyBjcml0aWNhbC5sbyBlbnYubG8gXAorIAllcnJvci5sbyBpdGVyLmxvIGxv b3AubG8gb3JkZXJlZC5sbyBwYXJhbGxlbC5sbyBzZWN0aW9ucy5sbyBcCisgCXNpbmdsZS5sbyB0 ZWFtLmxvIHdvcmsubG8gbG9jay5sbyBtdXRleC5sbyBwcm9jLmxvIHNlbS5sbyBcCistCWJhci5s byB0aW1lLmxvIGZvcnRyYW4ubG8gYWZmaW5pdHkubG8KKysJYmFyLmxvIHB0cmxvY2subG8gdGlt ZS5sbyBmb3J0cmFuLmxvIGFmZmluaXR5LmxvCisgbGliZ29tcF9sYV9PQkpFQ1RTID0gJChhbV9s aWJnb21wX2xhX09CSkVDVFMpCisgREVGQVVMVF9JTkNMVURFUyA9IC1JLiAtSSQoc3JjZGlyKSAt SS4KKyBkZXBjb21wID0gJChTSEVMTCkgJCh0b3Bfc3JjZGlyKS8uLi9kZXBjb21wCitAQCAtMjky LDcgKzI5Miw3IEBAIGxpYmdvbXBfdmVyc2lvbl9pbmZvID0gLXZlcnNpb24taW5mbyAkKGwKKyBs aWJnb21wX2xhX0xERkxBR1MgPSAkKGxpYmdvbXBfdmVyc2lvbl9pbmZvKSAkKGxpYmdvbXBfdmVy c2lvbl9zY3JpcHQpCisgbGliZ29tcF9sYV9TT1VSQ0VTID0gYWxsb2MuYyBiYXJyaWVyLmMgY3Jp dGljYWwuYyBlbnYuYyBlcnJvci5jIGl0ZXIuYyBcCisgCWxvb3AuYyBvcmRlcmVkLmMgcGFyYWxs ZWwuYyBzZWN0aW9ucy5jIHNpbmdsZS5jIHRlYW0uYyB3b3JrLmMgXAorLQlsb2NrLmMgbXV0ZXgu YyBwcm9jLmMgc2VtLmMgYmFyLmMgdGltZS5jIGZvcnRyYW4uYyBhZmZpbml0eS5jCisrCWxvY2su YyBtdXRleC5jIHByb2MuYyBzZW0uYyBiYXIuYyBwdHJsb2NrLmMgdGltZS5jIGZvcnRyYW4uYyBh ZmZpbml0eS5jCisgCisgbm9kaXN0X25vaW5zdF9IRUFERVJTID0gbGliZ29tcF9mLmgKKyBub2Rp c3RfbGlic3ViaW5jbHVkZV9IRUFERVJTID0gb21wLmgKK0BAIC00MzQsNiArNDM0LDcgQEAgZGlz dGNsZWFuLWNvbXBpbGU6CisgQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4v JChERVBESVIpL29yZGVyZWQuUGxvQGFtX19xdW90ZUAKKyBAQU1ERVBfVFJVRUBAYW1fX2luY2x1 ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvcGFyYWxsZWwuUGxvQGFtX19xdW90ZUAKKyBAQU1E RVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvcHJvYy5QbG9AYW1f X3F1b3RlQAorK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElS KS9wdHJsb2NrLlBsb0BhbV9fcXVvdGVACisgQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1f X3F1b3RlQC4vJChERVBESVIpL3NlY3Rpb25zLlBsb0BhbV9fcXVvdGVACisgQEFNREVQX1RSVUVA QGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL3NlbS5QbG9AYW1fX3F1b3RlQAor IEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9zaW5nbGUu UGxvQGFtX19xdW90ZUAKKy0tLSBsaWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvbG9vcC00LmMu amoJMjAwOC0wMy0yNiAxODo0NzowNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBsaWJnb21wL3Rlc3Rz dWl0ZS9saWJnb21wLmMvbG9vcC00LmMJMjAwOC0wMy0yNiAxODo0NzowNC4wMDAwMDAwMDAgKzAx MDAKK0BAIC0wLDAgKzEsMjggQEAKKysvKiB7IGRnLWRvIHJ1biB9ICovCisrCisrZXh0ZXJuIHZv aWQgYWJvcnQgKHZvaWQpOworKworK2ludAorK21haW4gKHZvaWQpCisreworKyAgaW50IGUgPSAw OworKyNwcmFnbWEgb21wIHBhcmFsbGVsIG51bV90aHJlYWRzICg0KSByZWR1Y3Rpb24oKzplKQor KyAgeworKyAgICBsb25nIGk7CisrICAgICNwcmFnbWEgb21wIGZvciBzY2hlZHVsZShkeW5hbWlj LDEpCisrICAgIGZvciAoaSA9IF9fTE9OR19NQVhfXyAtIDMwMDAxOyBpIDw9IF9fTE9OR19NQVhf XyAtIDEwMDAxOyBpICs9IDEwMDAwKQorKyAgICAgIGlmIChpICE9IF9fTE9OR19NQVhfXyAtIDMw MDAxCisrCSAgJiYgaSAhPSBfX0xPTkdfTUFYX18gLSAyMDAwMQorKwkgICYmIGkgIT0gX19MT05H X01BWF9fIC0gMTAwMDEpCisrCWUgPSAxOworKyAgICAjcHJhZ21hIG9tcCBmb3Igc2NoZWR1bGUo ZHluYW1pYywxKQorKyAgICBmb3IgKGkgPSAtX19MT05HX01BWF9fICsgMzAwMDA7IGkgPj0gLV9f TE9OR19NQVhfXyArIDEwMDAwOyBpIC09IDEwMDAwKQorKyAgICAgIGlmIChpICE9IC1fX0xPTkdf TUFYX18gKyAzMDAwMAorKwkgICYmIGkgIT0gLV9fTE9OR19NQVhfXyArIDIwMDAwCisrCSAgJiYg aSAhPSAtX19MT05HX01BWF9fICsgMTAwMDApCisrCWUgPSAxOworKyAgfQorKyAgaWYgKGUpCisr ICAgIGFib3J0ICgpOworKyAgcmV0dXJuIDA7CisrfQorLS0tIGxpYmdvbXAvTWFrZWZpbGUuYW0u amoJMjAwNy0xMi0wNyAxNDo0MTowMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBsaWJnb21wL01ha2Vm aWxlLmFtCTIwMDgtMDMtMjYgMTU6MTU6MTkuMDAwMDAwMDAwICswMTAwCitAQCAtMzEsNyArMzEs NyBAQCBsaWJnb21wX2xhX0xERkxBR1MgPSAkKGxpYmdvbXBfdmVyc2lvbl9pCisgCisgbGliZ29t cF9sYV9TT1VSQ0VTID0gYWxsb2MuYyBiYXJyaWVyLmMgY3JpdGljYWwuYyBlbnYuYyBlcnJvci5j IGl0ZXIuYyBcCisgCWxvb3AuYyBvcmRlcmVkLmMgcGFyYWxsZWwuYyBzZWN0aW9ucy5jIHNpbmds ZS5jIHRlYW0uYyB3b3JrLmMgXAorLQlsb2NrLmMgbXV0ZXguYyBwcm9jLmMgc2VtLmMgYmFyLmMg dGltZS5jIGZvcnRyYW4uYyBhZmZpbml0eS5jCisrCWxvY2suYyBtdXRleC5jIHByb2MuYyBzZW0u YyBiYXIuYyBwdHJsb2NrLmMgdGltZS5jIGZvcnRyYW4uYyBhZmZpbml0eS5jCisgCisgbm9kaXN0 X25vaW5zdF9IRUFERVJTID0gbGliZ29tcF9mLmgKKyBub2Rpc3RfbGlic3ViaW5jbHVkZV9IRUFE RVJTID0gb21wLmgKKy0tLSBsaWJnb21wL3RlYW0uYy5qagkyMDA3LTEyLTA3IDE0OjQxOjAxLjAw MDAwMDAwMCArMDEwMAorKysrIGxpYmdvbXAvdGVhbS5jCTIwMDgtMDMtMjYgMTY6MjE6MzcuMDAw MDAwMDAwICswMTAwCitAQCAtOTQsNyArOTQsNyBAQCBnb21wX3RocmVhZF9zdGFydCAodm9pZCAq eGRhdGEpCisgICAgIHsKKyAgICAgICBnb21wX2JhcnJpZXJfd2FpdCAoJnRoci0+dHMudGVhbS0+ YmFycmllcik7CisgICAgICAgbG9jYWxfZm4gKGxvY2FsX2RhdGEpOworLSAgICAgIGdvbXBfYmFy cmllcl93YWl0ICgmdGhyLT50cy50ZWFtLT5iYXJyaWVyKTsKKysgICAgICBnb21wX2JhcnJpZXJf d2FpdF9sYXN0ICgmdGhyLT50cy50ZWFtLT5iYXJyaWVyKTsKKyAgICAgfQorICAgZWxzZQorICAg ICB7CitAQCAtMTE0LDExICsxMTQsMTAgQEAgZ29tcF90aHJlYWRfc3RhcnQgKHZvaWQgKnhkYXRh KQorIAkgIHRoci0+ZGF0YSA9IE5VTEw7CisgCSAgdGhyLT50cy50ZWFtID0gTlVMTDsKKyAJICB0 aHItPnRzLndvcmtfc2hhcmUgPSBOVUxMOworKwkgIHRoci0+dHMubGFzdF93b3JrX3NoYXJlID0g TlVMTDsKKyAJICB0aHItPnRzLnRlYW1faWQgPSAwOworLQkgIHRoci0+dHMud29ya19zaGFyZV9n ZW5lcmF0aW9uID0gMDsKKy0JICB0aHItPnRzLnN0YXRpY190cmlwID0gMDsKKyAKKy0JICBnb21w X2JhcnJpZXJfd2FpdCAoJnRlYW0tPmJhcnJpZXIpOworKwkgIGdvbXBfYmFycmllcl93YWl0X2xh c3QgKCZ0ZWFtLT5iYXJyaWVyKTsKKyAJICBnb21wX2JhcnJpZXJfd2FpdCAoJmdvbXBfdGhyZWFk c19kb2NrKTsKKyAKKyAJICBsb2NhbF9mbiA9IHRoci0+Zm47CitAQCAtMTMzLDIxICsxMzIsMjUg QEAgZ29tcF90aHJlYWRfc3RhcnQgKHZvaWQgKnhkYXRhKQorIAorIC8qIENyZWF0ZSBhIG5ldyB0 ZWFtIGRhdGEgc3RydWN0dXJlLiAgKi8KKyAKKy1zdGF0aWMgc3RydWN0IGdvbXBfdGVhbSAqCist bmV3X3RlYW0gKHVuc2lnbmVkIG50aHJlYWRzLCBzdHJ1Y3QgZ29tcF93b3JrX3NoYXJlICp3b3Jr X3NoYXJlKQorK3N0cnVjdCBnb21wX3RlYW0gKgorK2dvbXBfbmV3X3RlYW0gKHVuc2lnbmVkIG50 aHJlYWRzKQorIHsKKyAgIHN0cnVjdCBnb21wX3RlYW0gKnRlYW07CisgICBzaXplX3Qgc2l6ZTsK KysgIGludCBpOworIAorICAgc2l6ZSA9IHNpemVvZiAoKnRlYW0pICsgbnRocmVhZHMgKiBzaXpl b2YgKHRlYW0tPm9yZGVyZWRfcmVsZWFzZVswXSk7CisgICB0ZWFtID0gZ29tcF9tYWxsb2MgKHNp emUpOworLSAgZ29tcF9tdXRleF9pbml0ICgmdGVhbS0+d29ya19zaGFyZV9sb2NrKTsKKyAKKy0g IHRlYW0tPndvcmtfc2hhcmVzID0gZ29tcF9tYWxsb2MgKDQgKiBzaXplb2YgKHN0cnVjdCBnb21w X3dvcmtfc2hhcmUgKikpOworLSAgdGVhbS0+Z2VuZXJhdGlvbl9tYXNrID0gMzsKKy0gIHRlYW0t Pm9sZGVzdF9saXZlX2dlbiA9IHdvcmtfc2hhcmUgPT0gTlVMTDsKKy0gIHRlYW0tPm51bV9saXZl X2dlbiA9IHdvcmtfc2hhcmUgIT0gTlVMTDsKKy0gIHRlYW0tPndvcmtfc2hhcmVzWzBdID0gd29y a19zaGFyZTsKKysgIHRlYW0tPndvcmtfc2hhcmVfY2h1bmsgPSA4OworKyAgdGVhbS0+c2luZ2xl X2NvdW50ID0gMDsKKysgIGdvbXBfaW5pdF93b3JrX3NoYXJlICgmdGVhbS0+d29ya19zaGFyZXNb MF0sIGZhbHNlLCBudGhyZWFkcyk7CisrICB0ZWFtLT53b3JrX3NoYXJlc1swXS5uZXh0X2FsbG9j ID0gTlVMTDsKKysgIHRlYW0tPndvcmtfc2hhcmVfbGlzdF9mcmVlID0gTlVMTDsKKysgIHRlYW0t Pndvcmtfc2hhcmVfbGlzdF9hbGxvYyA9ICZ0ZWFtLT53b3JrX3NoYXJlc1sxXTsKKysgIGZvciAo aSA9IDE7IGkgPCA3OyBpKyspCisrICAgIHRlYW0tPndvcmtfc2hhcmVzW2ldLm5leHRfZnJlZSA9 ICZ0ZWFtLT53b3JrX3NoYXJlc1tpICsgMV07CisrICB0ZWFtLT53b3JrX3NoYXJlc1tpXS5uZXh0 X2ZyZWUgPSBOVUxMOworIAorICAgdGVhbS0+bnRocmVhZHMgPSBudGhyZWFkczsKKyAgIGdvbXBf YmFycmllcl9pbml0ICgmdGVhbS0+YmFycmllciwgbnRocmVhZHMpOworQEAgLTE2NCw4ICsxNjcs MTcgQEAgbmV3X3RlYW0gKHVuc2lnbmVkIG50aHJlYWRzLCBzdHJ1Y3QgZ29tcAorIHN0YXRpYyB2 b2lkCisgZnJlZV90ZWFtIChzdHJ1Y3QgZ29tcF90ZWFtICp0ZWFtKQorIHsKKy0gIGZyZWUgKHRl YW0tPndvcmtfc2hhcmVzKTsKKy0gIGdvbXBfbXV0ZXhfZGVzdHJveSAoJnRlYW0tPndvcmtfc2hh cmVfbG9jayk7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAodGVhbS0+d29ya19zaGFyZXNbMF0u bmV4dF9hbGxvYyAhPSBOVUxMLCAwKSkKKysgICAgeworKyAgICAgIHN0cnVjdCBnb21wX3dvcmtf c2hhcmUgKndzID0gdGVhbS0+d29ya19zaGFyZXNbMF0ubmV4dF9hbGxvYzsKKysgICAgICBkbwor Kwl7CisrCSAgc3RydWN0IGdvbXBfd29ya19zaGFyZSAqbmV4dF93cyA9IHdzLT5uZXh0X2FsbG9j OworKwkgIGZyZWUgKHdzKTsKKysJICB3cyA9IG5leHRfd3M7CisrCX0KKysgICAgICB3aGlsZSAo d3MgIT0gTlVMTCk7CisrICAgIH0KKyAgIGdvbXBfYmFycmllcl9kZXN0cm95ICgmdGVhbS0+YmFy cmllcik7CisgICBnb21wX3NlbV9kZXN0cm95ICgmdGVhbS0+bWFzdGVyX3JlbGVhc2UpOworICAg ZnJlZSAodGVhbSk7CitAQCAtMTc2LDExICsxODgsMTAgQEAgZnJlZV90ZWFtIChzdHJ1Y3QgZ29t cF90ZWFtICp0ZWFtKQorIAorIHZvaWQKKyBnb21wX3RlYW1fc3RhcnQgKHZvaWQgKCpmbikgKHZv aWQgKiksIHZvaWQgKmRhdGEsIHVuc2lnbmVkIG50aHJlYWRzLAorLQkJIHN0cnVjdCBnb21wX3dv cmtfc2hhcmUgKndvcmtfc2hhcmUpCisrCQkgc3RydWN0IGdvbXBfdGVhbSAqdGVhbSkKKyB7Cisg ICBzdHJ1Y3QgZ29tcF90aHJlYWRfc3RhcnRfZGF0YSAqc3RhcnRfZGF0YTsKKyAgIHN0cnVjdCBn b21wX3RocmVhZCAqdGhyLCAqbnRocjsKKy0gIHN0cnVjdCBnb21wX3RlYW0gKnRlYW07CisgICBi b29sIG5lc3RlZDsKKyAgIHVuc2lnbmVkIGksIG4sIG9sZF90aHJlYWRzX3VzZWQgPSAwOworICAg cHRocmVhZF9hdHRyX3QgdGhyZWFkX2F0dHIsICphdHRyOworQEAgLTE4OCwxNyArMTk5LDE2IEBA IGdvbXBfdGVhbV9zdGFydCAodm9pZCAoKmZuKSAodm9pZCAqKSwgdm8KKyAgIHRociA9IGdvbXBf dGhyZWFkICgpOworICAgbmVzdGVkID0gdGhyLT50cy50ZWFtICE9IE5VTEw7CisgCistICB0ZWFt ID0gbmV3X3RlYW0gKG50aHJlYWRzLCB3b3JrX3NoYXJlKTsKKy0KKyAgIC8qIEFsd2F5cyBzYXZl IHRoZSBwcmV2aW91cyBzdGF0ZSwgZXZlbiBpZiB0aGlzIGlzbid0IGEgbmVzdGVkIHRlYW0uCisg ICAgICBJbiBwYXJ0aWN1bGFyLCB3ZSBzaG91bGQgc2F2ZSBhbnkgd29yayBzaGFyZSBzdGF0ZSBm cm9tIGFuIG91dGVyCisgICAgICBvcnBoYW5lZCB3b3JrIHNoYXJlIGNvbnN0cnVjdC4gICovCisg ICB0ZWFtLT5wcmV2X3RzID0gdGhyLT50czsKKyAKKyAgIHRoci0+dHMudGVhbSA9IHRlYW07Cist ICB0aHItPnRzLndvcmtfc2hhcmUgPSB3b3JrX3NoYXJlOworICAgdGhyLT50cy50ZWFtX2lkID0g MDsKKy0gIHRoci0+dHMud29ya19zaGFyZV9nZW5lcmF0aW9uID0gMDsKKysgIHRoci0+dHMud29y a19zaGFyZSA9ICZ0ZWFtLT53b3JrX3NoYXJlc1swXTsKKysgIHRoci0+dHMubGFzdF93b3JrX3No YXJlID0gTlVMTDsKKysgIHRoci0+dHMuc2luZ2xlX2NvdW50ID0gMDsKKyAgIHRoci0+dHMuc3Rh dGljX3RyaXAgPSAwOworIAorICAgaWYgKG50aHJlYWRzID09IDEpCitAQCAtMjQxLDkgKzI1MSwx MCBAQCBnb21wX3RlYW1fc3RhcnQgKHZvaWQgKCpmbikgKHZvaWQgKiksIHZvCisgCXsKKyAJICBu dGhyID0gZ29tcF90aHJlYWRzW2ldOworIAkgIG50aHItPnRzLnRlYW0gPSB0ZWFtOworLQkgIG50 aHItPnRzLndvcmtfc2hhcmUgPSB3b3JrX3NoYXJlOworKwkgIG50aHItPnRzLndvcmtfc2hhcmUg PSAmdGVhbS0+d29ya19zaGFyZXNbMF07CisrCSAgbnRoci0+dHMubGFzdF93b3JrX3NoYXJlID0g TlVMTDsKKyAJICBudGhyLT50cy50ZWFtX2lkID0gaTsKKy0JICBudGhyLT50cy53b3JrX3NoYXJl X2dlbmVyYXRpb24gPSAwOworKwkgIG50aHItPnRzLnNpbmdsZV9jb3VudCA9IDA7CisgCSAgbnRo ci0+dHMuc3RhdGljX3RyaXAgPSAwOworIAkgIG50aHItPmZuID0gZm47CisgCSAgbnRoci0+ZGF0 YSA9IGRhdGE7CitAQCAtMjY2LDggKzI3NywyNCBAQCBnb21wX3RlYW1fc3RhcnQgKHZvaWQgKCpm bikgKHZvaWQgKiksIHZvCisgCX0KKyAgICAgfQorIAorKyAgaWYgKF9fYnVpbHRpbl9leHBlY3Qg KG50aHJlYWRzID4gb2xkX3RocmVhZHNfdXNlZCwgMCkpCisrICAgIHsKKysgICAgICBsb25nIGRp ZmYgPSAobG9uZykgbnRocmVhZHMgLSAobG9uZykgb2xkX3RocmVhZHNfdXNlZDsKKysKKysgICAg ICBpZiAob2xkX3RocmVhZHNfdXNlZCA9PSAwKQorKwktLWRpZmY7CisrCisrI2lmZGVmIEhBVkVf U1lOQ19CVUlMVElOUworKyAgICAgIF9fc3luY19mZXRjaF9hbmRfYWRkICgmZ29tcF9tYW5hZ2Vk X3RocmVhZHMsIGRpZmYpOworKyNlbHNlCisrICAgICAgZ29tcF9tdXRleF9sb2NrICgmZ29tcF9y ZW1haW5pbmdfdGhyZWFkc19sb2NrKTsKKysgICAgICBnb21wX21hbmFnZWRfdGhyZWFkcyArPSBk aWZmOworKyAgICAgIGdvbXBfbXV0ZXhfdW5sb2NrICgmZ29tcF9yZW1haW5pbmdfdGhyZWFkc19s b2NrKTsKKysjZW5kaWYKKysgICAgfQorKworICAgYXR0ciA9ICZnb21wX3RocmVhZF9hdHRyOwor LSAgaWYgKGdvbXBfY3B1X2FmZmluaXR5ICE9IE5VTEwpCisrICBpZiAoX19idWlsdGluX2V4cGVj dCAoZ29tcF9jcHVfYWZmaW5pdHkgIT0gTlVMTCwgMCkpCisgICAgIHsKKyAgICAgICBzaXplX3Qg c3RhY2tzaXplOworICAgICAgIHB0aHJlYWRfYXR0cl9pbml0ICgmdGhyZWFkX2F0dHIpOworQEAg LTI4Nyw5ICszMTQsMTAgQEAgZ29tcF90ZWFtX3N0YXJ0ICh2b2lkICgqZm4pICh2b2lkICopLCB2 bworICAgICAgIGludCBlcnI7CisgCisgICAgICAgc3RhcnRfZGF0YS0+dHMudGVhbSA9IHRlYW07 CistICAgICAgc3RhcnRfZGF0YS0+dHMud29ya19zaGFyZSA9IHdvcmtfc2hhcmU7CisrICAgICAg c3RhcnRfZGF0YS0+dHMud29ya19zaGFyZSA9ICZ0ZWFtLT53b3JrX3NoYXJlc1swXTsKKysgICAg ICBzdGFydF9kYXRhLT50cy5sYXN0X3dvcmtfc2hhcmUgPSBOVUxMOworICAgICAgIHN0YXJ0X2Rh dGEtPnRzLnRlYW1faWQgPSBpOworLSAgICAgIHN0YXJ0X2RhdGEtPnRzLndvcmtfc2hhcmVfZ2Vu ZXJhdGlvbiA9IDA7CisrICAgICAgc3RhcnRfZGF0YS0+dHMuc2luZ2xlX2NvdW50ID0gMDsKKyAg ICAgICBzdGFydF9kYXRhLT50cy5zdGF0aWNfdHJpcCA9IDA7CisgICAgICAgc3RhcnRfZGF0YS0+ Zm4gPSBmbjsKKyAgICAgICBzdGFydF9kYXRhLT5mbl9kYXRhID0gZGF0YTsKK0BAIC0zMDMsNyAr MzMxLDcgQEAgZ29tcF90ZWFtX3N0YXJ0ICh2b2lkICgqZm4pICh2b2lkICopLCB2bworIAlnb21w X2ZhdGFsICgiVGhyZWFkIGNyZWF0aW9uIGZhaWxlZDogJXMiLCBzdHJlcnJvciAoZXJyKSk7Cisg ICAgIH0KKyAKKy0gIGlmIChnb21wX2NwdV9hZmZpbml0eSAhPSBOVUxMKQorKyAgaWYgKF9fYnVp bHRpbl9leHBlY3QgKGdvbXBfY3B1X2FmZmluaXR5ICE9IE5VTEwsIDApKQorICAgICBwdGhyZWFk X2F0dHJfZGVzdHJveSAoJnRocmVhZF9hdHRyKTsKKyAKKyAgZG9fcmVsZWFzZToKK0BAIC0zMTMs OCArMzQxLDIwIEBAIGdvbXBfdGVhbV9zdGFydCAodm9pZCAoKmZuKSAodm9pZCAqKSwgdm8KKyAg ICAgIHRoYXQgc2hvdWxkIGFycml2ZSBiYWNrIGF0IHRoZSBlbmQgb2YgdGhpcyB0ZWFtLiAgVGhl IGV4dHJhCisgICAgICB0aHJlYWRzIHNob3VsZCBiZSBleGl0aW5nLiAgTm90ZSB0aGF0IHdlIGFy cmFuZ2UgZm9yIHRoaXMgdGVzdAorICAgICAgdG8gbmV2ZXIgYmUgdHJ1ZSBmb3IgbmVzdGVkIHRl YW1zLiAgKi8KKy0gIGlmIChudGhyZWFkcyA8IG9sZF90aHJlYWRzX3VzZWQpCistICAgIGdvbXBf YmFycmllcl9yZWluaXQgKCZnb21wX3RocmVhZHNfZG9jaywgbnRocmVhZHMpOworKyAgaWYgKF9f YnVpbHRpbl9leHBlY3QgKG50aHJlYWRzIDwgb2xkX3RocmVhZHNfdXNlZCwgMCkpCisrICAgIHsK KysgICAgICBsb25nIGRpZmYgPSAobG9uZykgbnRocmVhZHMgLSAobG9uZykgb2xkX3RocmVhZHNf dXNlZDsKKysKKysgICAgICBnb21wX2JhcnJpZXJfcmVpbml0ICgmZ29tcF90aHJlYWRzX2RvY2ss IG50aHJlYWRzKTsKKysKKysjaWZkZWYgSEFWRV9TWU5DX0JVSUxUSU5TCisrICAgICAgX19zeW5j X2ZldGNoX2FuZF9hZGQgKCZnb21wX21hbmFnZWRfdGhyZWFkcywgZGlmZik7CisrI2Vsc2UKKysg ICAgICBnb21wX211dGV4X2xvY2sgKCZnb21wX3JlbWFpbmluZ190aHJlYWRzX2xvY2spOworKyAg ICAgIGdvbXBfbWFuYWdlZF90aHJlYWRzICs9IGRpZmY7CisrICAgICAgZ29tcF9tdXRleF91bmxv Y2sgKCZnb21wX3JlbWFpbmluZ190aHJlYWRzX2xvY2spOworKyNlbmRpZgorKyAgICB9CisgfQor IAorIAorQEAgLTMyOSw4ICszNjksMjEgQEAgZ29tcF90ZWFtX2VuZCAodm9pZCkKKyAKKyAgIGdv bXBfYmFycmllcl93YWl0ICgmdGVhbS0+YmFycmllcik7CisgCisrICBnb21wX2Zpbmlfd29ya19z aGFyZSAodGhyLT50cy53b3JrX3NoYXJlKTsKKysKKyAgIHRoci0+dHMgPSB0ZWFtLT5wcmV2X3Rz OworIAorKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHRoci0+dHMudGVhbSAhPSBOVUxMLCAwKSkK KysgICAgeworKyNpZmRlZiBIQVZFX1NZTkNfQlVJTFRJTlMKKysgICAgICBfX3N5bmNfZmV0Y2hf YW5kX2FkZCAoJmdvbXBfbWFuYWdlZF90aHJlYWRzLCAxTCAtIHRlYW0tPm50aHJlYWRzKTsKKysj ZWxzZQorKyAgICAgIGdvbXBfbXV0ZXhfbG9jayAoJmdvbXBfcmVtYWluaW5nX3RocmVhZHNfbG9j ayk7CisrICAgICAgZ29tcF9tYW5hZ2VkX3RocmVhZHMgLT0gdGVhbS0+bnRocmVhZHMgLSAxTDsK KysgICAgICBnb21wX211dGV4X3VubG9jayAoJmdvbXBfcmVtYWluaW5nX3RocmVhZHNfbG9jayk7 CisrI2VuZGlmCisrICAgIH0KKysKKyAgIGZyZWVfdGVhbSAodGVhbSk7CisgfQorIAorLS0tIGxp YmdvbXAvY29uZmlnL3Bvc2l4L2Jhci5oLmpqCTIwMDctMTItMDcgMTQ6NDE6MDEuMDAwMDAwMDAw ICswMTAwCisrKysgbGliZ29tcC9jb25maWcvcG9zaXgvYmFyLmgJMjAwOC0wMy0yNiAxNToxMToz Mi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDQgKzEsNCBAQAorLS8qIENvcHlyaWdodCAoQykgMjAw NSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvKiBDb3B5cmlnaHQgKEMpIDIwMDUs IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICAgQ29udHJpYnV0ZWQgYnkg UmljaGFyZCBIZW5kZXJzb24gPHJ0aEByZWRoYXQuY29tPi4KKyAKKyAgICBUaGlzIGZpbGUgaXMg cGFydCBvZiB0aGUgR05VIE9wZW5NUCBMaWJyYXJ5IChsaWJnb21wKS4KK0BAIC00NiwxOCArNDYs MzIgQEAgdHlwZWRlZiBzdHJ1Y3QKKyAgIHVuc2lnbmVkIHRvdGFsOworICAgdW5zaWduZWQgYXJy aXZlZDsKKyB9IGdvbXBfYmFycmllcl90OworK3R5cGVkZWYgYm9vbCBnb21wX2JhcnJpZXJfc3Rh dGVfdDsKKyAKKyBleHRlcm4gdm9pZCBnb21wX2JhcnJpZXJfaW5pdCAoZ29tcF9iYXJyaWVyX3Qg KiwgdW5zaWduZWQpOworIGV4dGVybiB2b2lkIGdvbXBfYmFycmllcl9yZWluaXQgKGdvbXBfYmFy cmllcl90ICosIHVuc2lnbmVkKTsKKyBleHRlcm4gdm9pZCBnb21wX2JhcnJpZXJfZGVzdHJveSAo Z29tcF9iYXJyaWVyX3QgKik7CisgCisgZXh0ZXJuIHZvaWQgZ29tcF9iYXJyaWVyX3dhaXQgKGdv bXBfYmFycmllcl90ICopOworLWV4dGVybiB2b2lkIGdvbXBfYmFycmllcl93YWl0X2VuZCAoZ29t cF9iYXJyaWVyX3QgKiwgYm9vbCk7CisrZXh0ZXJuIHZvaWQgZ29tcF9iYXJyaWVyX3dhaXRfZW5k IChnb21wX2JhcnJpZXJfdCAqLCBnb21wX2JhcnJpZXJfc3RhdGVfdCk7CisgCistc3RhdGljIGlu bGluZSBib29sIGdvbXBfYmFycmllcl93YWl0X3N0YXJ0IChnb21wX2JhcnJpZXJfdCAqYmFyKQor K3N0YXRpYyBpbmxpbmUgZ29tcF9iYXJyaWVyX3N0YXRlX3QKKytnb21wX2JhcnJpZXJfd2FpdF9z dGFydCAoZ29tcF9iYXJyaWVyX3QgKmJhcikKKyB7CisgICBnb21wX211dGV4X2xvY2sgKCZiYXIt Pm11dGV4MSk7CisgICByZXR1cm4gKytiYXItPmFycml2ZWQgPT0gYmFyLT50b3RhbDsKKyB9Cisg Cisrc3RhdGljIGlubGluZSBib29sCisrZ29tcF9iYXJyaWVyX2xhc3RfdGhyZWFkIChnb21wX2Jh cnJpZXJfc3RhdGVfdCBzdGF0ZSkKKyt7CisrICByZXR1cm4gc3RhdGU7CisrfQorKworK3N0YXRp YyBpbmxpbmUgdm9pZAorK2dvbXBfYmFycmllcl93YWl0X2xhc3QgKGdvbXBfYmFycmllcl90ICpi YXIpCisreworKyAgZ29tcF9iYXJyaWVyX3dhaXQgKGJhcik7CisrfQorKworICNlbmRpZiAvKiBH T01QX0JBUlJJRVJfSCAqLworLS0tIGxpYmdvbXAvY29uZmlnL3Bvc2l4L3B0cmxvY2suaC5qagky MDA4LTAzLTI2IDE1OjExOjMyLjAwMDAwMDAwMCArMDEwMAorKysrIGxpYmdvbXAvY29uZmlnL3Bv c2l4L3B0cmxvY2suaAkyMDA4LTAzLTI2IDE1OjExOjMyLjAwMDAwMDAwMCArMDEwMAorQEAgLTAs MCArMSw2OSBAQAorKy8qIENvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKysgICBDb250cmlidXRlZCBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQu Y29tPi4KKysKKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIE9wZW5NUCBMaWJyYXJ5 IChsaWJnb21wKS4KKysKKysgICBMaWJnb21wIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKysgICB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExp Y2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysg ICBMaWJnb21wIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsIGJ1dCBXSVRIT1VUIEFOWQorKyAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKKysgICBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IKKysgICBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIAorKyAgIGFs b25nIHdpdGggbGliZ29tcDsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0 ZSB0byB0aGUKKysgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwKKysgICBNQSAwMjExMC0xMzAxLCBVU0EuICAq LworKworKy8qIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIGlmIHlvdSBsaW5rIHRoaXMgbGlicmFy eSB3aXRoIG90aGVyIGZpbGVzLCBzb21lCisrICAgb2Ygd2hpY2ggYXJlIGNvbXBpbGVkIHdpdGgg R0NDLCB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMgbGlicmFyeQorKyAgIGRvZXMgbm90 IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBi eSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRv ZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZQorKyAgIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUg ZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkgdGhlIEdOVQorKyAgIEdlbmVyYWwg UHVibGljIExpY2Vuc2UuICAqLworKworKy8qIFRoaXMgaXMgYSBMaW51eCBzcGVjaWZpYyBpbXBs ZW1lbnRhdGlvbiBvZiBhIG11dGV4IHN5bmNocm9uaXphdGlvbgorKyAgIG1lY2hhbmlzbSBmb3Ig bGliZ29tcC4gIFRoaXMgdHlwZSBpcyBwcml2YXRlIHRvIHRoZSBsaWJyYXJ5LiAgVGhpcworKyAg IGltcGxlbWVudGF0aW9uIHVzZXMgYXRvbWljIGluc3RydWN0aW9ucyBhbmQgdGhlIGZ1dGV4IHN5 c2NhbGwuICAqLworKworKyNpZm5kZWYgR09NUF9QVFJMT0NLX0gKKysjZGVmaW5lIEdPTVBfUFRS TE9DS19IIDEKKysKKyt0eXBlZGVmIHN0cnVjdCB7IHZvaWQgKnB0cjsgZ29tcF9tdXRleF90IGxv Y2s7IH0gZ29tcF9wdHJsb2NrX3Q7CisrCisrc3RhdGljIGlubGluZSB2b2lkIGdvbXBfcHRybG9j a19pbml0IChnb21wX3B0cmxvY2tfdCAqcHRybG9jaywgdm9pZCAqcHRyKQorK3sKKysgIHB0cmxv Y2stPnB0ciA9IHB0cjsKKysgIGdvbXBfbXV0ZXhfaW5pdCAoJnB0cmxvY2stPmxvY2spOworK30K KysKKytzdGF0aWMgaW5saW5lIHZvaWQgKmdvbXBfcHRybG9ja19nZXQgKGdvbXBfcHRybG9ja190 ICpwdHJsb2NrKQorK3sKKysgIGlmIChwdHJsb2NrLT5wdHIgIT0gTlVMTCkKKysgICAgcmV0dXJu IHB0cmxvY2stPnB0cjsKKysKKysgIGdvbXBfbXV0ZXhfbG9jayAoJnB0cmxvY2stPmxvY2spOwor KyAgaWYgKHB0cmxvY2stPnB0ciAhPSBOVUxMKQorKyAgICB7CisrICAgICAgZ29tcF9tdXRleF91 bmxvY2sgKCZwdHJsb2NrLT5sb2NrKTsKKysgICAgICByZXR1cm4gcHRybG9jay0+cHRyOworKyAg ICB9CisrCisrICByZXR1cm4gTlVMTDsKKyt9CisrCisrc3RhdGljIGlubGluZSB2b2lkIGdvbXBf cHRybG9ja19zZXQgKGdvbXBfcHRybG9ja190ICpwdHJsb2NrLCB2b2lkICpwdHIpCisreworKyAg cHRybG9jay0+cHRyID0gcHRyOworKyAgZ29tcF9tdXRleF91bmxvY2sgKCZwdHJsb2NrLT5sb2Nr KTsKKyt9CisrCisrc3RhdGljIGlubGluZSB2b2lkIGdvbXBfcHRybG9ja19kZXN0cm95IChnb21w X3B0cmxvY2tfdCAqcHRybG9jaykKKyt7CisrICBnb21wX211dGV4X2Rlc3Ryb3kgKCZwdHJsb2Nr LT5sb2NrKTsKKyt9CisrCisrI2VuZGlmIC8qIEdPTVBfUFRSTE9DS19IICovCistLS0gbGliZ29t cC9jb25maWcvcG9zaXgvcHRybG9jay5jLmpqCTIwMDgtMDMtMjYgMTU6MTE6MzIuMDAwMDAwMDAw ICswMTAwCisrKysgbGliZ29tcC9jb25maWcvcG9zaXgvcHRybG9jay5jCTIwMDgtMDMtMjYgMTU6 MTE6MzIuMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxIEBACisrLyogRXZlcnl0aGluZyBpcyBp biB0aGUgaGVhZGVyLiAgKi8KKy0tLSBsaWJnb21wL2NvbmZpZy9wb3NpeC9iYXIuYy5qagkyMDA3 LTEyLTA3IDE0OjQxOjAxLjAwMDAwMDAwMCArMDEwMAorKysrIGxpYmdvbXAvY29uZmlnL3Bvc2l4 L2Jhci5jCTIwMDgtMDMtMjYgMTU6MTE6MzIuMDAwMDAwMDAwICswMTAwCitAQCAtMSw0ICsxLDQg QEAKKy0vKiBDb3B5cmlnaHQgKEMpIDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisrLyogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorICAgIENvbnRyaWJ1dGVkIGJ5IFJpY2hhcmQgSGVuZGVyc29uIDxydGhAcmVkaGF0LmNv bT4uCisgCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBPcGVuTVAgTGlicmFyeSAo bGliZ29tcCkuCitAQCAtNzAsNyArNzAsNyBAQCBnb21wX2JhcnJpZXJfcmVpbml0IChnb21wX2Jh cnJpZXJfdCAqYmFyCisgfQorIAorIHZvaWQKKy1nb21wX2JhcnJpZXJfd2FpdF9lbmQgKGdvbXBf YmFycmllcl90ICpiYXIsIGJvb2wgbGFzdCkKKytnb21wX2JhcnJpZXJfd2FpdF9lbmQgKGdvbXBf YmFycmllcl90ICpiYXIsIGdvbXBfYmFycmllcl9zdGF0ZV90IGxhc3QpCisgeworICAgdW5zaWdu ZWQgaW50IG47CisgCistLS0gbGliZ29tcC9jb25maWcvbGludXgvYWxwaGEvZnV0ZXguaC5qagky MDA3LTEyLTA3IDE0OjQxOjAwLjAwMDAwMDAwMCArMDEwMAorKysrIGxpYmdvbXAvY29uZmlnL2xp bnV4L2FscGhhL2Z1dGV4LmgJMjAwOC0wMy0yNiAxNToxMTozMi4wMDAwMDAwMDAgKzAxMDAKK0BA IC0xLDQgKzEsNCBAQAorLS8qIENvcHlyaWdodCAoQykgMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKysvKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDggRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisgICAgQ29udHJpYnV0ZWQgYnkgUmljaGFyZCBIZW5kZXJzb24gPHJ0 aEByZWRoYXQuY29tPi4KKyAKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIE9wZW5N UCBMaWJyYXJ5IChsaWJnb21wKS4KK0BAIC0zMCw4ICszMCw2IEBACisgI2lmbmRlZiBTWVNfZnV0 ZXgKKyAjZGVmaW5lIFNZU19mdXRleCAgICAgICAgICAgICAgIDM5NAorICNlbmRpZgorLSNkZWZp bmUgRlVURVhfV0FJVCAgICAgICAgICAgICAgMAorLSNkZWZpbmUgRlVURVhfV0FLRSAgICAgICAg ICAgICAgMQorIAorIAorIHN0YXRpYyBpbmxpbmUgdm9pZAorQEAgLTQ1LDcgKzQzLDcgQEAgZnV0 ZXhfd2FpdCAoaW50ICphZGRyLCBpbnQgdmFsKQorIAorICAgc2NfMCA9IFNZU19mdXRleDsKKyAg IHNjXzE2ID0gKGxvbmcpIGFkZHI7CistICBzY18xNyA9IEZVVEVYX1dBSVQ7CisrICBzY18xNyA9 IGdvbXBfZnV0ZXhfd2FpdDsKKyAgIHNjXzE4ID0gdmFsOworICAgc2NfMTkgPSAwOworICAgX19h c20gdm9sYXRpbGUgKCJjYWxsc3lzIgorQEAgLTUzLDYgKzUxLDIwIEBAIGZ1dGV4X3dhaXQgKGlu dCAqYWRkciwgaW50IHZhbCkKKyAJCSAgOiAiMCIoc2NfMCksICJyIiAoc2NfMTYpLCAiciIoc2Nf MTcpLCAiciIoc2NfMTgpLCAiMSIoc2NfMTkpCisgCQkgIDogIiQxIiwgIiQyIiwgIiQzIiwgIiQ0 IiwgIiQ1IiwgIiQ2IiwgIiQ3IiwgIiQ4IiwKKyAJCSAgICAiJDIyIiwgIiQyMyIsICIkMjQiLCAi JDI1IiwgIiQyNyIsICIkMjgiLCAibWVtb3J5Iik7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAo c2NfMTksIDApICYmIHNjXzAgPT0gRU5PU1lTKQorKyAgICB7CisrICAgICAgZ29tcF9mdXRleF93 YWl0ICY9IH5GVVRFWF9QUklWQVRFX0ZMQUc7CisrICAgICAgZ29tcF9mdXRleF93YWtlICY9IH5G VVRFWF9QUklWQVRFX0ZMQUc7CisrICAgICAgc2NfMCA9IFNZU19mdXRleDsKKysgICAgICBzY18x NyAmPSB+RlVURVhfUFJJVkFURV9GTEFHOworKyAgICAgIHNjXzE5ID0gMDsKKysgICAgICBfX2Fz bSB2b2xhdGlsZSAoImNhbGxzeXMiCisrCQkgICAgICA6ICI9ciIgKHNjXzApLCAiPXIiKHNjXzE5 KQorKwkJICAgICAgOiAiMCIoc2NfMCksICJyIiAoc2NfMTYpLCAiciIoc2NfMTcpLCAiciIoc2Nf MTgpLAorKwkJCSIxIihzY18xOSkKKysJCSAgICAgIDogIiQxIiwgIiQyIiwgIiQzIiwgIiQ0Iiwg IiQ1IiwgIiQ2IiwgIiQ3IiwgIiQ4IiwKKysJCQkiJDIyIiwgIiQyMyIsICIkMjQiLCAiJDI1Iiwg IiQyNyIsICIkMjgiLCAibWVtb3J5Iik7CisrICAgIH0KKyB9CisgCisgc3RhdGljIGlubGluZSB2 b2lkCitAQCAtNjYsMTEgKzc4LDM1IEBAIGZ1dGV4X3dha2UgKGludCAqYWRkciwgaW50IGNvdW50 KQorIAorICAgc2NfMCA9IFNZU19mdXRleDsKKyAgIHNjXzE2ID0gKGxvbmcpIGFkZHI7CistICBz Y18xNyA9IEZVVEVYX1dBS0U7CisrICBzY18xNyA9IGdvbXBfZnV0ZXhfd2FrZTsKKyAgIHNjXzE4 ID0gY291bnQ7CisgICBfX2FzbSB2b2xhdGlsZSAoImNhbGxzeXMiCisgCQkgIDogIj1yIiAoc2Nf MCksICI9ciIoc2NfMTkpCisgCQkgIDogIjAiKHNjXzApLCAiciIgKHNjXzE2KSwgInIiKHNjXzE3 KSwgInIiKHNjXzE4KQorIAkJICA6ICIkMSIsICIkMiIsICIkMyIsICIkNCIsICIkNSIsICIkNiIs ICIkNyIsICIkOCIsCisgCQkgICAgIiQyMiIsICIkMjMiLCAiJDI0IiwgIiQyNSIsICIkMjciLCAi JDI4IiwgIm1lbW9yeSIpOworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHNjXzE5LCAwKSAmJiBz Y18wID09IEVOT1NZUykKKysgICAgeworKyAgICAgIGdvbXBfZnV0ZXhfd2FpdCAmPSB+RlVURVhf UFJJVkFURV9GTEFHOworKyAgICAgIGdvbXBfZnV0ZXhfd2FrZSAmPSB+RlVURVhfUFJJVkFURV9G TEFHOworKyAgICAgIHNjXzAgPSBTWVNfZnV0ZXg7CisrICAgICAgc2NfMTcgJj0gfkZVVEVYX1BS SVZBVEVfRkxBRzsKKysgICAgICBfX2FzbSB2b2xhdGlsZSAoImNhbGxzeXMiCisrCQkgICAgICA6 ICI9ciIgKHNjXzApLCAiPXIiKHNjXzE5KQorKwkJICAgICAgOiAiMCIoc2NfMCksICJyIiAoc2Nf MTYpLCAiciIoc2NfMTcpLCAiciIoc2NfMTgpCisrCQkgICAgICA6ICIkMSIsICIkMiIsICIkMyIs ICIkNCIsICIkNSIsICIkNiIsICIkNyIsICIkOCIsCisrCQkJIiQyMiIsICIkMjMiLCAiJDI0Iiwg IiQyNSIsICIkMjciLCAiJDI4IiwgIm1lbW9yeSIpOworKyAgICB9CisrfQorKworK3N0YXRpYyBp bmxpbmUgdm9pZAorK2NwdV9yZWxheCAodm9pZCkKKyt7CisrICBfX2FzbSB2b2xhdGlsZSAoIiIg OiA6IDogIm1lbW9yeSIpOworK30KKysKKytzdGF0aWMgaW5saW5lIHZvaWQKKythdG9taWNfd3Jp dGVfYmFycmllciAodm9pZCkKKyt7CisrICBfX2FzbSB2b2xhdGlsZSAoIndtYiIgOiA6IDogIm1l bW9yeSIpOworIH0KKy0tLSBsaWJnb21wL2NvbmZpZy9saW51eC9hZmZpbml0eS5jLmpqCTIwMDct MTItMDcgMTQ6NDE6MDAuMDAwMDAwMDAwICswMTAwCisrKysgbGliZ29tcC9jb25maWcvbGludXgv YWZmaW5pdHkuYwkyMDA4LTAzLTI2IDE1OjExOjMyLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsNCAr MSw0IEBACistLyogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgICBDb250cmlidXRlZCBieSBKYWt1YiBKZWxpbmVrIDxq YWt1YkByZWRoYXQuY29tPi4KKyAKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIE9w ZW5NUCBMaWJyYXJ5IChsaWJnb21wKS4KK0BAIC0zOCw5ICszOCw2IEBACisgI2lmZGVmIEhBVkVf UFRIUkVBRF9BRkZJTklUWV9OUAorIAorIHN0YXRpYyB1bnNpZ25lZCBpbnQgYWZmaW5pdHlfY291 bnRlcjsKKy0jaWZuZGVmIEhBVkVfU1lOQ19CVUlMVElOUworLXN0YXRpYyBnb21wX211dGV4X3Qg YWZmaW5pdHlfbG9jazsKKy0jZW5kaWYKKyAKKyB2b2lkCisgZ29tcF9pbml0X2FmZmluaXR5ICh2 b2lkKQorQEAgLTc2LDkgKzczLDYgQEAgZ29tcF9pbml0X2FmZmluaXR5ICh2b2lkKQorICAgQ1BV X1NFVCAoZ29tcF9jcHVfYWZmaW5pdHlbMF0sICZjcHVzZXQpOworICAgcHRocmVhZF9zZXRhZmZp bml0eV9ucCAocHRocmVhZF9zZWxmICgpLCBzaXplb2YgKGNwdXNldCksICZjcHVzZXQpOworICAg YWZmaW5pdHlfY291bnRlciA9IDE7CistI2lmbmRlZiBIQVZFX1NZTkNfQlVJTFRJTlMKKy0gIGdv bXBfbXV0ZXhfaW5pdCAoJmFmZmluaXR5X2xvY2spOworLSNlbmRpZgorIH0KKyAKKyB2b2lkCitA QCAtODcsMTMgKzgxLDcgQEAgZ29tcF9pbml0X3RocmVhZF9hZmZpbml0eSAocHRocmVhZF9hdHRy XworICAgdW5zaWduZWQgaW50IGNwdTsKKyAgIGNwdV9zZXRfdCBjcHVzZXQ7CisgCistI2lmZGVm IEhBVkVfU1lOQ19CVUlMVElOUworICAgY3B1ID0gX19zeW5jX2ZldGNoX2FuZF9hZGQgKCZhZmZp bml0eV9jb3VudGVyLCAxKTsKKy0jZWxzZQorLSAgZ29tcF9tdXRleF9sb2NrICgmYWZmaW5pdHlf bG9jayk7CistICBjcHUgPSBhZmZpbml0eV9jb3VudGVyKys7CistICBnb21wX211dGV4X3VubG9j ayAoJmFmZmluaXR5X2xvY2spOworLSNlbmRpZgorICAgY3B1ICU9IGdvbXBfY3B1X2FmZmluaXR5 X2xlbjsKKyAgIENQVV9aRVJPICgmY3B1c2V0KTsKKyAgIENQVV9TRVQgKGdvbXBfY3B1X2FmZmlu aXR5W2NwdV0sICZjcHVzZXQpOworLS0tIGxpYmdvbXAvY29uZmlnL2xpbnV4L2Jhci5oLmpqCTIw MDctMTItMDcgMTQ6NDE6MDAuMDAwMDAwMDAwICswMTAwCisrKysgbGliZ29tcC9jb25maWcvbGlu dXgvYmFyLmgJMjAwOC0wMy0yNiAxNToxMTozMi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDQgKzEs NCBAQAorLS8qIENvcHlyaWdodCAoQykgMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKysvKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisgICAgQ29udHJpYnV0ZWQgYnkgUmljaGFyZCBIZW5kZXJzb24gPHJ0aEByZWRoYXQu Y29tPi4KKyAKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIE9wZW5NUCBMaWJyYXJ5 IChsaWJnb21wKS4KK0BAIC0zNiw0MCArMzYsNDkgQEAKKyAKKyB0eXBlZGVmIHN0cnVjdAorIHsK Ky0gIGdvbXBfbXV0ZXhfdCBtdXRleDsKKy0gIHVuc2lnbmVkIHRvdGFsOworLSAgdW5zaWduZWQg YXJyaXZlZDsKKy0gIGludCBnZW5lcmF0aW9uOworKyAgLyogTWFrZSBzdXJlIHRvdGFsL2dlbmVy YXRpb24gaXMgaW4gYSBtb3N0bHkgcmVhZCBjYWNoZWxpbmUsIHdoaWxlCisrICAgICBhd2FpdGVk IGluIGEgc2VwYXJhdGUgY2FjaGVsaW5lLiAgKi8KKysgIHVuc2lnbmVkIHRvdGFsIF9fYXR0cmli dXRlX18oKGFsaWduZWQgKDY0KSkpOworKyAgdW5zaWduZWQgZ2VuZXJhdGlvbjsKKysgIHVuc2ln bmVkIGF3YWl0ZWQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCAoNjQpKSk7CisgfSBnb21wX2JhcnJp ZXJfdDsKKyt0eXBlZGVmIHVuc2lnbmVkIGludCBnb21wX2JhcnJpZXJfc3RhdGVfdDsKKyAKKyBz dGF0aWMgaW5saW5lIHZvaWQgZ29tcF9iYXJyaWVyX2luaXQgKGdvbXBfYmFycmllcl90ICpiYXIs IHVuc2lnbmVkIGNvdW50KQorIHsKKy0gIGdvbXBfbXV0ZXhfaW5pdCAoJmJhci0+bXV0ZXgpOwor ICAgYmFyLT50b3RhbCA9IGNvdW50OworLSAgYmFyLT5hcnJpdmVkID0gMDsKKysgIGJhci0+YXdh aXRlZCA9IGNvdW50OworICAgYmFyLT5nZW5lcmF0aW9uID0gMDsKKyB9CisgCisgc3RhdGljIGlu bGluZSB2b2lkIGdvbXBfYmFycmllcl9yZWluaXQgKGdvbXBfYmFycmllcl90ICpiYXIsIHVuc2ln bmVkIGNvdW50KQorIHsKKy0gIGdvbXBfbXV0ZXhfbG9jayAoJmJhci0+bXV0ZXgpOworKyAgX19z eW5jX2ZldGNoX2FuZF9hZGQgKCZiYXItPmF3YWl0ZWQsIGNvdW50IC0gYmFyLT50b3RhbCk7Cisg ICBiYXItPnRvdGFsID0gY291bnQ7CistICBnb21wX211dGV4X3VubG9jayAoJmJhci0+bXV0ZXgp OworIH0KKyAKKyBzdGF0aWMgaW5saW5lIHZvaWQgZ29tcF9iYXJyaWVyX2Rlc3Ryb3kgKGdvbXBf YmFycmllcl90ICpiYXIpCisgeworLSAgLyogQmVmb3JlIGRlc3Ryb3lpbmcsIG1ha2Ugc3VyZSBh bGwgdGhyZWFkcyBoYXZlIGxlZnQgdGhlIGJhcnJpZXIuICAqLworLSAgZ29tcF9tdXRleF9sb2Nr ICgmYmFyLT5tdXRleCk7CisgfQorIAorIGV4dGVybiB2b2lkIGdvbXBfYmFycmllcl93YWl0IChn b21wX2JhcnJpZXJfdCAqKTsKKy1leHRlcm4gdm9pZCBnb21wX2JhcnJpZXJfd2FpdF9lbmQgKGdv bXBfYmFycmllcl90ICosIGJvb2wpOworK2V4dGVybiB2b2lkIGdvbXBfYmFycmllcl93YWl0X2xh c3QgKGdvbXBfYmFycmllcl90ICopOworK2V4dGVybiB2b2lkIGdvbXBfYmFycmllcl93YWl0X2Vu ZCAoZ29tcF9iYXJyaWVyX3QgKiwgZ29tcF9iYXJyaWVyX3N0YXRlX3QpOworIAorLXN0YXRpYyBp bmxpbmUgYm9vbCBnb21wX2JhcnJpZXJfd2FpdF9zdGFydCAoZ29tcF9iYXJyaWVyX3QgKmJhcikK KytzdGF0aWMgaW5saW5lIGdvbXBfYmFycmllcl9zdGF0ZV90CisrZ29tcF9iYXJyaWVyX3dhaXRf c3RhcnQgKGdvbXBfYmFycmllcl90ICpiYXIpCisgeworLSAgZ29tcF9tdXRleF9sb2NrICgmYmFy LT5tdXRleCk7CistICByZXR1cm4gKytiYXItPmFycml2ZWQgPT0gYmFyLT50b3RhbDsKKysgIHVu c2lnbmVkIGludCByZXQgPSBiYXItPmdlbmVyYXRpb247CisrICAvKiBEbyB3ZSBuZWVkIGFueSBi YXJyaWVyIGhlcmUgb3IgaXMgX19zeW5jX2FkZF9hbmRfZmV0Y2ggYWN0aW5nCisrICAgICBhcyB0 aGUgbmVlZGVkIExvYWRMb2FkIGJhcnJpZXIgYWxyZWFkeT8gICovCisrICByZXQgKz0gX19zeW5j X2FkZF9hbmRfZmV0Y2ggKCZiYXItPmF3YWl0ZWQsIC0xKSA9PSAwOworKyAgcmV0dXJuIHJldDsK Kyt9CisrCisrc3RhdGljIGlubGluZSBib29sCisrZ29tcF9iYXJyaWVyX2xhc3RfdGhyZWFkIChn b21wX2JhcnJpZXJfc3RhdGVfdCBzdGF0ZSkKKyt7CisrICByZXR1cm4gc3RhdGUgJiAxOworIH0K KyAKKyAjZW5kaWYgLyogR09NUF9CQVJSSUVSX0ggKi8KKy0tLSBsaWJnb21wL2NvbmZpZy9saW51 eC9wdHJsb2NrLmguamoJMjAwOC0wMy0yNiAxNToxMTozMi4wMDAwMDAwMDAgKzAxMDAKKysrKyBs aWJnb21wL2NvbmZpZy9saW51eC9wdHJsb2NrLmgJMjAwOC0wMy0yNiAxNToxMTozMi4wMDAwMDAw MDAgKzAxMDAKK0BAIC0wLDAgKzEsNjUgQEAKKysvKiBDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgQ29udHJpYnV0ZWQgYnkgSmFrdWIgSmVsaW5l ayA8amFrdWJAcmVkaGF0LmNvbT4uCisrCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdO VSBPcGVuTVAgTGlicmFyeSAobGliZ29tcCkuCisrCisrICAgTGliZ29tcCBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisrICAgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisrCisrICAgTGliZ29tcCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkKKysgICBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT CisrICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yCisrICAgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSAKKysgICBhbG9uZyB3aXRoIGxpYmdvbXA7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ Qi4gIElmIG5vdCwgd3JpdGUgdG8gdGhlCisrICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sCisrICAgTUEgMDIx MTAtMTMwMSwgVVNBLiAgKi8KKysKKysvKiBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBpZiB5b3Ug bGluayB0aGlzIGxpYnJhcnkgd2l0aCBvdGhlciBmaWxlcywgc29tZQorKyAgIG9mIHdoaWNoIGFy ZSBjb21waWxlZCB3aXRoIEdDQywgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzIGxpYnJh cnkKKysgICBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxl IHRvIGJlIGNvdmVyZWQgYnkgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBU aGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyIGludmFsaWRhdGUKKysgICBhbnkgb3RoZXIg cmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSBH TlUKKysgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgKi8KKysKKysvKiBUaGlzIGlzIGEgTGlu dXggc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgYSBtdXRleCBzeW5jaHJvbml6YXRpb24KKysg ICBtZWNoYW5pc20gZm9yIGxpYmdvbXAuICBUaGlzIHR5cGUgaXMgcHJpdmF0ZSB0byB0aGUgbGli cmFyeS4gIFRoaXMKKysgICBpbXBsZW1lbnRhdGlvbiB1c2VzIGF0b21pYyBpbnN0cnVjdGlvbnMg YW5kIHRoZSBmdXRleCBzeXNjYWxsLiAgKi8KKysKKysjaWZuZGVmIEdPTVBfUFRSTE9DS19ICisr I2RlZmluZSBHT01QX1BUUkxPQ0tfSCAxCisrCisrdHlwZWRlZiB2b2lkICpnb21wX3B0cmxvY2tf dDsKKysKKytzdGF0aWMgaW5saW5lIHZvaWQgZ29tcF9wdHJsb2NrX2luaXQgKGdvbXBfcHRybG9j a190ICpwdHJsb2NrLCB2b2lkICpwdHIpCisreworKyAgKnB0cmxvY2sgPSBwdHI7CisrfQorKwor K2V4dGVybiB2b2lkICpnb21wX3B0cmxvY2tfZ2V0X3Nsb3cgKGdvbXBfcHRybG9ja190ICpwdHJs b2NrKTsKKytzdGF0aWMgaW5saW5lIHZvaWQgKmdvbXBfcHRybG9ja19nZXQgKGdvbXBfcHRybG9j a190ICpwdHJsb2NrKQorK3sKKysgIGlmICgodWludHB0cl90KSAqcHRybG9jayA+IDIpCisrICAg IHJldHVybiAqcHRybG9jazsKKysKKysgIGlmIChfX3N5bmNfYm9vbF9jb21wYXJlX2FuZF9zd2Fw IChwdHJsb2NrLCBOVUxMLCAodWludHB0cl90KSAxKSkKKysgICAgcmV0dXJuIE5VTEw7CisrCisr ICByZXR1cm4gZ29tcF9wdHJsb2NrX2dldF9zbG93IChwdHJsb2NrKTsKKyt9CisrCisrZXh0ZXJu IHZvaWQgZ29tcF9wdHJsb2NrX3NldF9zbG93IChnb21wX3B0cmxvY2tfdCAqcHRybG9jaywgdm9p ZCAqcHRyKTsKKytzdGF0aWMgaW5saW5lIHZvaWQgZ29tcF9wdHJsb2NrX3NldCAoZ29tcF9wdHJs b2NrX3QgKnB0cmxvY2ssIHZvaWQgKnB0cikKKyt7CisrICBpZiAoIV9fc3luY19ib29sX2NvbXBh cmVfYW5kX3N3YXAgKHB0cmxvY2ssICh1aW50cHRyX3QpIDEsIHB0cikpCisrICAgIGdvbXBfcHRy bG9ja19zZXRfc2xvdyAocHRybG9jaywgcHRyKTsKKyt9CisrCisrc3RhdGljIGlubGluZSB2b2lk IGdvbXBfcHRybG9ja19kZXN0cm95IChnb21wX3B0cmxvY2tfdCAqcHRybG9jaykKKyt7CisrfQor KworKyNlbmRpZiAvKiBHT01QX1BUUkxPQ0tfSCAqLworLS0tIGxpYmdvbXAvY29uZmlnL2xpbnV4 L2xvY2suYy5qagkyMDA3LTEyLTA3IDE0OjQxOjAwLjAwMDAwMDAwMCArMDEwMAorKysrIGxpYmdv bXAvY29uZmlnL2xpbnV4L2xvY2suYwkyMDA4LTAzLTI2IDE1OjExOjMyLjAwMDAwMDAwMCArMDEw MAorQEAgLTI5LDExICsyOSwxMCBAQAorICAgIHByaW1pdGl2ZXMuICBUaGlzIGltcGxlbWVudGF0 aW9uIHVzZXMgYXRvbWljIGluc3RydWN0aW9ucyBhbmQgdGhlIGZ1dGV4CisgICAgc3lzY2FsbC4g ICovCisgCistI2luY2x1ZGUgImxpYmdvbXAuaCIKKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2lu Y2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorLSNpbmNsdWRlICJm dXRleC5oIgorKyNpbmNsdWRlICJ3YWl0LmgiCisgCisgCisgLyogVGhlIGludGVybmFsIGdvbXBf bXV0ZXhfdCBhbmQgdGhlIGV4dGVybmFsIG5vbi1yZWN1cnNpdmUgb21wX2xvY2tfdAorQEAgLTEz Nyw3ICsxMzYsNyBAQCBvbXBfc2V0X25lc3RfbG9jayAob21wX25lc3RfbG9ja190ICpsb2NrCisg CSAgcmV0dXJuOworIAl9CisgCistICAgICAgZnV0ZXhfd2FpdCAoJmxvY2stPm93bmVyLCBvdGlk KTsKKysgICAgICBkb193YWl0ICgmbG9jay0+b3duZXIsIG90aWQpOworICAgICB9CisgfQorIAor LS0tIGxpYmdvbXAvY29uZmlnL2xpbnV4L3B0cmxvY2suYy5qagkyMDA4LTAzLTI2IDE1OjExOjMy LjAwMDAwMDAwMCArMDEwMAorKysrIGxpYmdvbXAvY29uZmlnL2xpbnV4L3B0cmxvY2suYwkyMDA4 LTAzLTI2IDE1OjExOjMyLjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSw3MCBAQAorKy8qIENv cHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBDb250 cmlidXRlZCBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPi4KKysKKysgICBUaGlz IGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIE9wZW5NUCBMaWJyYXJ5IChsaWJnb21wKS4KKysKKysg ICBMaWJnb21wIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkgaXQKKysgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBMaWJnb21wIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFO WQorKyAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKKysgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKysgICBtb3JlIGRl dGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIAorKyAgIGFsb25nIHdpdGggbGliZ29tcDsg c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0byB0aGUKKysgICBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv b3IsIEJvc3RvbiwKKysgICBNQSAwMjExMC0xMzAxLCBVU0EuICAqLworKworKy8qIEFzIGEgc3Bl Y2lhbCBleGNlcHRpb24sIGlmIHlvdSBsaW5rIHRoaXMgbGlicmFyeSB3aXRoIG90aGVyIGZpbGVz LCBzb21lCisrICAgb2Ygd2hpY2ggYXJlIGNvbXBpbGVkIHdpdGggR0NDLCB0byBwcm9kdWNlIGFu IGV4ZWN1dGFibGUsIHRoaXMgbGlicmFyeQorKyAgIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0 aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUKKysgICBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52 YWxpZGF0ZQorKyAgIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1p Z2h0IGJlIGNvdmVyZWQgYnkgdGhlIEdOVQorKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICAq LworKworKy8qIFRoaXMgaXMgYSBMaW51eCBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiBhIG11 dGV4IHN5bmNocm9uaXphdGlvbgorKyAgIG1lY2hhbmlzbSBmb3IgbGliZ29tcC4gIFRoaXMgdHlw ZSBpcyBwcml2YXRlIHRvIHRoZSBsaWJyYXJ5LiAgVGhpcworKyAgIGltcGxlbWVudGF0aW9uIHVz ZXMgYXRvbWljIGluc3RydWN0aW9ucyBhbmQgdGhlIGZ1dGV4IHN5c2NhbGwuICAqLworKworKyNp bmNsdWRlIDxlbmRpYW4uaD4KKysjaW5jbHVkZSA8bGltaXRzLmg+CisrI2luY2x1ZGUgIndhaXQu aCIKKysKKyt2b2lkICoKKytnb21wX3B0cmxvY2tfZ2V0X3Nsb3cgKGdvbXBfcHRybG9ja190ICpw dHJsb2NrKQorK3sKKysgIGludCAqaW50cHRyOworKyAgX19zeW5jX2Jvb2xfY29tcGFyZV9hbmRf c3dhcCAocHRybG9jaywgMSwgMik7CisrCisrICAvKiBmdXRleCB3b3JrcyBvbiBpbnRzLCBub3Qg cG9pbnRlcnMuCisrICAgICBCdXQgYSB2YWxpZCB3b3JrIHNoYXJlIHBvaW50ZXIgd2lsbCBiZSBh dCBsZWFzdAorKyAgICAgOCBieXRlIGFsaWduZWQsIHNvIGl0IGlzIHNhZmUgdG8gYXNzdW1lIHRo ZSBsb3cKKysgICAgIDMyLWJpdHMgb2YgdGhlIHBvaW50ZXIgd29uJ3QgY29udGFpbiB2YWx1ZXMg MSBvciAyLiAgKi8KKysgIF9fYXNtIHZvbGF0aWxlICgiIiA6ICI9ciIgKGludHB0cikgOiAiMCIg KHB0cmxvY2spKTsKKysjaWYgX19CWVRFX09SREVSID09IF9fQklHX0VORElBTgorKyAgaWYgKHNp emVvZiAoKnB0cmxvY2spID4gc2l6ZW9mIChpbnQpKQorKyAgICBpbnRwdHIgKz0gKHNpemVvZiAo KnB0cmxvY2spIC8gc2l6ZW9mIChpbnQpKSAtIDE7CisrI2VuZGlmCisrICBkbworKyAgICBkb193 YWl0IChpbnRwdHIsIDIpOworKyAgd2hpbGUgKCppbnRwdHIgPT0gMik7CisrICBfX2FzbSB2b2xh dGlsZSAoIiIgOiA6IDogIm1lbW9yeSIpOworKyAgcmV0dXJuICpwdHJsb2NrOworK30KKysKKyt2 b2lkCisrZ29tcF9wdHJsb2NrX3NldF9zbG93IChnb21wX3B0cmxvY2tfdCAqcHRybG9jaywgdm9p ZCAqcHRyKQorK3sKKysgIGludCAqaW50cHRyOworKworKyAgKnB0cmxvY2sgPSBwdHI7CisrICBf X2FzbSB2b2xhdGlsZSAoIiIgOiAiPXIiIChpbnRwdHIpIDogIjAiIChwdHJsb2NrKSk7CisrI2lm IF9fQllURV9PUkRFUiA9PSBfX0JJR19FTkRJQU4KKysgIGlmIChzaXplb2YgKCpwdHJsb2NrKSA+ IHNpemVvZiAoaW50KSkKKysgICAgaW50cHRyICs9IChzaXplb2YgKCpwdHJsb2NrKSAvIHNpemVv ZiAoaW50KSkgLSAxOworKyNlbmRpZgorKyAgZnV0ZXhfd2FrZSAoaW50cHRyLCBJTlRfTUFYKTsK Kyt9CistLS0gbGliZ29tcC9jb25maWcvbGludXgveDg2L2Z1dGV4LmguamoJMjAwNy0xMi0wNyAx NDo0MTowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBsaWJnb21wL2NvbmZpZy9saW51eC94ODYvZnV0 ZXguaAkyMDA4LTAzLTI2IDE1OjExOjMyLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsNCArMSw0IEBA CistLyogQ29weXJpZ2h0IChDKSAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor Ky8qIENvcHlyaWdodCAoQykgMjAwNSwgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKyAgICBDb250cmlidXRlZCBieSBSaWNoYXJkIEhlbmRlcnNvbiA8cnRoQHJlZGhhdC5jb20+ LgorIAorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT3Blbk1QIExpYnJhcnkgKGxp YmdvbXApLgorQEAgLTI3LDkgKzI3LDYgQEAKKyAKKyAvKiBQcm92aWRlIHRhcmdldC1zcGVjaWZp YyBhY2Nlc3MgdG8gdGhlIGZ1dGV4IHN5c3RlbSBjYWxsLiAgKi8KKyAKKy0jZGVmaW5lIEZVVEVY X1dBSVQJMAorLSNkZWZpbmUgRlVURVhfV0FLRQkxCistCisgI2lmZGVmIF9fTFA2NF9fCisgIyBp Zm5kZWYgU1lTX2Z1dGV4CisgIyAgZGVmaW5lIFNZU19mdXRleAkyMDIKK0BAIC0zOCwxNCArMzUs MjYgQEAKKyBzdGF0aWMgaW5saW5lIHZvaWQKKyBmdXRleF93YWl0IChpbnQgKmFkZHIsIGludCB2 YWwpCisgeworLSAgcmVnaXN0ZXIgbG9uZyByMTAgX19hc21fXygiJXIxMCIpID0gMDsKKysgIHJl Z2lzdGVyIGxvbmcgcjEwIF9fYXNtX18oIiVyMTAiKTsKKyAgIGxvbmcgcmVzOworIAorKyAgcjEw ID0gMDsKKyAgIF9fYXNtIHZvbGF0aWxlICgic3lzY2FsbCIKKyAJCSAgOiAiPWEiIChyZXMpCist CQkgIDogIjAiKFNZU19mdXRleCksICJEIiAoYWRkciksICJTIihGVVRFWF9XQUlUKSwKKy0JCSAg ICAiZCIodmFsKSwgInIiKHIxMCkKKysJCSAgOiAiMCIgKFNZU19mdXRleCksICJEIiAoYWRkciks ICJTIiAoZ29tcF9mdXRleF93YWl0KSwKKysJCSAgICAiZCIgKHZhbCksICJyIiAocjEwKQorIAkJ ICA6ICJyMTEiLCAicmN4IiwgIm1lbW9yeSIpOworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHJl cyA9PSAtRU5PU1lTLCAwKSkKKysgICAgeworKyAgICAgIGdvbXBfZnV0ZXhfd2FpdCAmPSB+RlVU RVhfUFJJVkFURV9GTEFHOworKyAgICAgIGdvbXBfZnV0ZXhfd2FrZSAmPSB+RlVURVhfUFJJVkFU RV9GTEFHOworKyAgICAgIHIxMCA9IDA7CisrICAgICAgX19hc20gdm9sYXRpbGUgKCJzeXNjYWxs IgorKwkJICAgICAgOiAiPWEiIChyZXMpCisrCQkgICAgICA6ICIwIiAoU1lTX2Z1dGV4KSwgIkQi IChhZGRyKSwgIlMiIChnb21wX2Z1dGV4X3dhaXQpLAorKwkJCSJkIiAodmFsKSwgInIiIChyMTAp CisrCQkgICAgICA6ICJyMTEiLCAicmN4IiwgIm1lbW9yeSIpOworKyAgICB9CisgfQorIAorIHN0 YXRpYyBpbmxpbmUgdm9pZAorQEAgLTU1LDggKzY0LDE5IEBAIGZ1dGV4X3dha2UgKGludCAqYWRk ciwgaW50IGNvdW50KQorIAorICAgX19hc20gdm9sYXRpbGUgKCJzeXNjYWxsIgorIAkJICA6ICI9 YSIgKHJlcykKKy0JCSAgOiAiMCIoU1lTX2Z1dGV4KSwgIkQiIChhZGRyKSwgIlMiKEZVVEVYX1dB S0UpLCAiZCIoY291bnQpCisrCQkgIDogIjAiIChTWVNfZnV0ZXgpLCAiRCIgKGFkZHIpLCAiUyIg KGdvbXBfZnV0ZXhfd2FrZSksCisrCQkgICAgImQiIChjb3VudCkKKyAJCSAgOiAicjExIiwgInJj eCIsICJtZW1vcnkiKTsKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChyZXMgPT0gLUVOT1NZUywg MCkpCisrICAgIHsKKysgICAgICBnb21wX2Z1dGV4X3dhaXQgJj0gfkZVVEVYX1BSSVZBVEVfRkxB RzsKKysgICAgICBnb21wX2Z1dGV4X3dha2UgJj0gfkZVVEVYX1BSSVZBVEVfRkxBRzsKKysgICAg ICBfX2FzbSB2b2xhdGlsZSAoInN5c2NhbGwiCisrCQkgICAgICA6ICI9YSIgKHJlcykKKysJCSAg ICAgIDogIjAiIChTWVNfZnV0ZXgpLCAiRCIgKGFkZHIpLCAiUyIgKGdvbXBfZnV0ZXhfd2FrZSks CisrCQkJImQiIChjb3VudCkKKysJCSAgICAgIDogInIxMSIsICJyY3giLCAibWVtb3J5Iik7Cisr ICAgIH0KKyB9CisgI2Vsc2UKKyAjIGlmbmRlZiBTWVNfZnV0ZXgKK0BAIC02NSw3ICs4NSw3IEBA IGZ1dGV4X3dha2UgKGludCAqYWRkciwgaW50IGNvdW50KQorIAorICMgaWZkZWYgX19QSUNfXwor IAorLXN0YXRpYyBpbmxpbmUgdm9pZAorK3N0YXRpYyBpbmxpbmUgbG9uZworIHN5c19mdXRleDAg KGludCAqYWRkciwgaW50IG9wLCBpbnQgdmFsKQorIHsKKyAgIGxvbmcgcmVzOworQEAgLTc3LDEx ICs5NywxMiBAQCBzeXNfZnV0ZXgwIChpbnQgKmFkZHIsIGludCBvcCwgaW50IHZhbCkKKyAJCSAg OiAiMCIoU1lTX2Z1dGV4KSwgInIiIChhZGRyKSwgImMiKG9wKSwKKyAJCSAgICAiZCIodmFsKSwg IlMiKDApCisgCQkgIDogIm1lbW9yeSIpOworKyAgcmV0dXJuIHJlczsKKyB9CisgCisgIyBlbHNl CisgCistc3RhdGljIGlubGluZSB2b2lkCisrc3RhdGljIGlubGluZSBsb25nCisgc3lzX2Z1dGV4 MCAoaW50ICphZGRyLCBpbnQgb3AsIGludCB2YWwpCisgeworICAgbG9uZyByZXM7CitAQCAtOTEs NiArMTEyLDcgQEAgc3lzX2Z1dGV4MCAoaW50ICphZGRyLCBpbnQgb3AsIGludCB2YWwpCisgCQkg IDogIjAiKFNZU19mdXRleCksICJiIiAoYWRkciksICJjIihvcCksCisgCQkgICAgImQiKHZhbCks ICJTIigwKQorIAkJICA6ICJtZW1vcnkiKTsKKysgIHJldHVybiByZXM7CisgfQorIAorICMgZW5k aWYgLyogX19QSUNfXyAqLworQEAgLTk4LDEzICsxMjAsMzcgQEAgc3lzX2Z1dGV4MCAoaW50ICph ZGRyLCBpbnQgb3AsIGludCB2YWwpCisgc3RhdGljIGlubGluZSB2b2lkCisgZnV0ZXhfd2FpdCAo aW50ICphZGRyLCBpbnQgdmFsKQorIHsKKy0gIHN5c19mdXRleDAgKGFkZHIsIEZVVEVYX1dBSVQs IHZhbCk7CisrICBsb25nIHJlcyA9IHN5c19mdXRleDAgKGFkZHIsIGdvbXBfZnV0ZXhfd2FpdCwg dmFsKTsKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChyZXMgPT0gLUVOT1NZUywgMCkpCisrICAg IHsKKysgICAgICBnb21wX2Z1dGV4X3dhaXQgJj0gfkZVVEVYX1BSSVZBVEVfRkxBRzsKKysgICAg ICBnb21wX2Z1dGV4X3dha2UgJj0gfkZVVEVYX1BSSVZBVEVfRkxBRzsKKysgICAgICBzeXNfZnV0 ZXgwIChhZGRyLCBnb21wX2Z1dGV4X3dhaXQsIHZhbCk7CisrICAgIH0KKyB9CisgCisgc3RhdGlj IGlubGluZSB2b2lkCisgZnV0ZXhfd2FrZSAoaW50ICphZGRyLCBpbnQgY291bnQpCisgeworLSAg c3lzX2Z1dGV4MCAoYWRkciwgRlVURVhfV0FLRSwgY291bnQpOworKyAgbG9uZyByZXMgPSBzeXNf ZnV0ZXgwIChhZGRyLCBnb21wX2Z1dGV4X3dha2UsIGNvdW50KTsKKysgIGlmIChfX2J1aWx0aW5f ZXhwZWN0IChyZXMgPT0gLUVOT1NZUywgMCkpCisrICAgIHsKKysgICAgICBnb21wX2Z1dGV4X3dh aXQgJj0gfkZVVEVYX1BSSVZBVEVfRkxBRzsKKysgICAgICBnb21wX2Z1dGV4X3dha2UgJj0gfkZV VEVYX1BSSVZBVEVfRkxBRzsKKysgICAgICBzeXNfZnV0ZXgwIChhZGRyLCBnb21wX2Z1dGV4X3dh a2UsIGNvdW50KTsKKysgICAgfQorIH0KKyAKKyAjZW5kaWYgLyogX19MUDY0X18gKi8KKysKKytz dGF0aWMgaW5saW5lIHZvaWQKKytjcHVfcmVsYXggKHZvaWQpCisreworKyAgX19hc20gdm9sYXRp bGUgKCJyZXA7IG5vcCIgOiA6IDogIm1lbW9yeSIpOworK30KKysKKytzdGF0aWMgaW5saW5lIHZv aWQKKythdG9taWNfd3JpdGVfYmFycmllciAodm9pZCkKKyt7CisrICBfX3N5bmNfc3luY2hyb25p emUgKCk7CisrfQorLS0tIGxpYmdvbXAvY29uZmlnL2xpbnV4L3dhaXQuaC5qagkyMDA4LTAzLTI2 IDE1OjExOjMyLjAwMDAwMDAwMCArMDEwMAorKysrIGxpYmdvbXAvY29uZmlnL2xpbnV4L3dhaXQu aAkyMDA4LTAzLTI2IDE1OjExOjMyLjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSw2OCBAQAor Ky8qIENvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysg ICBDb250cmlidXRlZCBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPi4KKysKKysg ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIE9wZW5NUCBMaWJyYXJ5IChsaWJnb21wKS4K KysKKysgICBMaWJnb21wIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkgaXQKKysgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yCisr ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBMaWJnb21wIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRI T1VUIEFOWQorKyAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKKysgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKysgICBt b3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIAorKyAgIGFsb25nIHdpdGggbGli Z29tcDsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0byB0aGUKKysg ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm dGggRmxvb3IsIEJvc3RvbiwKKysgICBNQSAwMjExMC0xMzAxLCBVU0EuICAqLworKworKy8qIEFz IGEgc3BlY2lhbCBleGNlcHRpb24sIGlmIHlvdSBsaW5rIHRoaXMgbGlicmFyeSB3aXRoIG90aGVy IGZpbGVzLCBzb21lCisrICAgb2Ygd2hpY2ggYXJlIGNvbXBpbGVkIHdpdGggR0NDLCB0byBwcm9k dWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMgbGlicmFyeQorKyAgIGRvZXMgbm90IGJ5IGl0c2VsZiBj YXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUKKysgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2 ZXIgaW52YWxpZGF0ZQorKyAgIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBm aWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkgdGhlIEdOVQorKyAgIEdlbmVyYWwgUHVibGljIExpY2Vu c2UuICAqLworKworKy8qIFRoaXMgaXMgYSBMaW51eCBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBv ZiBhIG11dGV4IHN5bmNocm9uaXphdGlvbgorKyAgIG1lY2hhbmlzbSBmb3IgbGliZ29tcC4gIFRo aXMgdHlwZSBpcyBwcml2YXRlIHRvIHRoZSBsaWJyYXJ5LiAgVGhpcworKyAgIGltcGxlbWVudGF0 aW9uIHVzZXMgYXRvbWljIGluc3RydWN0aW9ucyBhbmQgdGhlIGZ1dGV4IHN5c2NhbGwuICAqLwor KworKyNpZm5kZWYgR09NUF9XQUlUX0gKKysjZGVmaW5lIEdPTVBfV0FJVF9IIDEKKysKKysjaW5j bHVkZSAibGliZ29tcC5oIgorKyNpbmNsdWRlIDxlcnJuby5oPgorKworKyNkZWZpbmUgRlVURVhf V0FJVAkwCisrI2RlZmluZSBGVVRFWF9XQUtFCTEKKysjZGVmaW5lIEZVVEVYX1BSSVZBVEVfRkxB RwkxMjhMCisrCisrI2lmZGVmIEhBVkVfQVRUUklCVVRFX1ZJU0lCSUxJVFkKKysjIHByYWdtYSBH Q0MgdmlzaWJpbGl0eSBwdXNoKGhpZGRlbikKKysjZW5kaWYKKysKKytleHRlcm4gbG9uZyBpbnQg Z29tcF9mdXRleF93YWl0LCBnb21wX2Z1dGV4X3dha2U7CisrCisrI2luY2x1ZGUgImZ1dGV4Lmgi CisrCisrc3RhdGljIGlubGluZSB2b2lkIGRvX3dhaXQgKGludCAqYWRkciwgaW50IHZhbCkKKyt7 CisrICB1bnNpZ25lZCBsb25nIGxvbmcgaSwgY291bnQgPSBnb21wX3NwaW5fY291bnRfdmFyOwor KworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGdvbXBfbWFuYWdlZF90aHJlYWRzID4gZ29tcF9h dmFpbGFibGVfY3B1cywgMCkpCisrICAgIGNvdW50ID0gZ29tcF90aHJvdHRsZWRfc3Bpbl9jb3Vu dF92YXI7CisrICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKysgICAgaWYgKF9fYnVpbHRp bl9leHBlY3QgKCphZGRyICE9IHZhbCwgMCkpCisrICAgICAgcmV0dXJuOworKyAgICBlbHNlCisr ICAgICAgY3B1X3JlbGF4ICgpOworKyAgZnV0ZXhfd2FpdCAoYWRkciwgdmFsKTsKKyt9CisrCisr I2lmZGVmIEhBVkVfQVRUUklCVVRFX1ZJU0lCSUxJVFkKKysjIHByYWdtYSBHQ0MgdmlzaWJpbGl0 eSBwb3AKKysjZW5kaWYKKysKKysjZW5kaWYgLyogR09NUF9XQUlUX0ggKi8KKy0tLSBsaWJnb21w L2NvbmZpZy9saW51eC9zcGFyYy9mdXRleC5oLmpqCTIwMDctMTItMDcgMTQ6NDE6MDAuMDAwMDAw MDAwICswMTAwCisrKysgbGliZ29tcC9jb25maWcvbGludXgvc3BhcmMvZnV0ZXguaAkyMDA4LTAz LTI2IDE1OjExOjMyLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsNCArMSw0IEBACistLyogQ29weXJp Z2h0IChDKSAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdo dCAoQykgMjAwNSwgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgICBDb250 cmlidXRlZCBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPi4KKyAKKyAgICBUaGlz IGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIE9wZW5NUCBMaWJyYXJ5IChsaWJnb21wKS4KK0BAIC0y OCwxMCArMjgsOCBAQAorIC8qIFByb3ZpZGUgdGFyZ2V0LXNwZWNpZmljIGFjY2VzcyB0byB0aGUg ZnV0ZXggc3lzdGVtIGNhbGwuICAqLworIAorICNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorLSNk ZWZpbmUgRlVURVhfV0FJVAkwCistI2RlZmluZSBGVVRFWF9XQUtFCTEKKyAKKy1zdGF0aWMgaW5s aW5lIHZvaWQKKytzdGF0aWMgaW5saW5lIGxvbmcKKyBzeXNfZnV0ZXgwIChpbnQgKmFkZHIsIGlu dCBvcCwgaW50IHZhbCkKKyB7CisgICByZWdpc3RlciBsb25nIGludCBnMSAgX19hc21fXyAoImcx Iik7CitAQCAtNDcsOSArNDUsOSBAQCBzeXNfZnV0ZXgwIChpbnQgKmFkZHIsIGludCBvcCwgaW50 IHZhbCkKKyAgIG8zID0gMDsKKyAKKyAjaWZkZWYgX19hcmNoNjRfXworLSMgZGVmaW5lIFNZU0NB TExfU1RSSU5HICJ0YVx0MHg2ZCIKKysjIGRlZmluZSBTWVNDQUxMX1NUUklORyAidGFcdDB4NmQ7 IGJjcyxhLHB0ICUleGNjLCAxZjsgc3ViICUlZzAsICUlbzAsICUlbzA7IDE6IgorICNlbHNlCist IyBkZWZpbmUgU1lTQ0FMTF9TVFJJTkcgInRhXHQweDEwIgorKyMgZGVmaW5lIFNZU0NBTExfU1RS SU5HICJ0YVx0MHgxMDsgYmNzLGEgMWY7IHN1YiAlJWcwLCAlJW8wLCAlJW8wOyAxOiIKKyAjZW5k aWYKKyAKKyAgIF9fYXNtIHZvbGF0aWxlIChTWVNDQUxMX1NUUklORworQEAgLTY1LDE2ICs2Myw0 OSBAQCBzeXNfZnV0ZXgwIChpbnQgKmFkZHIsIGludCBvcCwgaW50IHZhbCkKKyAJCSAgICAiZjQ4 IiwgImY1MCIsICJmNTIiLCAiZjU0IiwgImY1NiIsICJmNTgiLCAiZjYwIiwgImY2MiIsCisgI2Vu ZGlmCisgCQkgICAgImNjIiwgIm1lbW9yeSIpOworKyAgcmV0dXJuIG8wOworIH0KKyAKKyBzdGF0 aWMgaW5saW5lIHZvaWQKKyBmdXRleF93YWl0IChpbnQgKmFkZHIsIGludCB2YWwpCisgeworLSAg c3lzX2Z1dGV4MCAoYWRkciwgRlVURVhfV0FJVCwgdmFsKTsKKysgIGxvbmcgZXJyID0gc3lzX2Z1 dGV4MCAoYWRkciwgZ29tcF9mdXRleF93YWl0LCB2YWwpOworKyAgaWYgKF9fYnVpbHRpbl9leHBl Y3QgKGVyciA9PSBFTk9TWVMsIDApKQorKyAgICB7CisrICAgICAgZ29tcF9mdXRleF93YWl0ICY9 IH5GVVRFWF9QUklWQVRFX0ZMQUc7CisrICAgICAgZ29tcF9mdXRleF93YWtlICY9IH5GVVRFWF9Q UklWQVRFX0ZMQUc7CisrICAgICAgc3lzX2Z1dGV4MCAoYWRkciwgZ29tcF9mdXRleF93YWl0LCB2 YWwpOworKyAgICB9CisgfQorIAorIHN0YXRpYyBpbmxpbmUgdm9pZAorIGZ1dGV4X3dha2UgKGlu dCAqYWRkciwgaW50IGNvdW50KQorIHsKKy0gIHN5c19mdXRleDAgKGFkZHIsIEZVVEVYX1dBS0Us IGNvdW50KTsKKysgIGxvbmcgZXJyID0gc3lzX2Z1dGV4MCAoYWRkciwgZ29tcF9mdXRleF93YWtl LCBjb3VudCk7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoZXJyID09IEVOT1NZUywgMCkpCisr ICAgIHsKKysgICAgICBnb21wX2Z1dGV4X3dhaXQgJj0gfkZVVEVYX1BSSVZBVEVfRkxBRzsKKysg ICAgICBnb21wX2Z1dGV4X3dha2UgJj0gfkZVVEVYX1BSSVZBVEVfRkxBRzsKKysgICAgICBzeXNf ZnV0ZXgwIChhZGRyLCBnb21wX2Z1dGV4X3dha2UsIGNvdW50KTsKKysgICAgfQorK30KKysKKytz dGF0aWMgaW5saW5lIHZvaWQKKytjcHVfcmVsYXggKHZvaWQpCisreworKyNpZiBkZWZpbmVkIF9f YXJjaDY0X18gfHwgZGVmaW5lZCAgX19zcGFyY192OV9fCisrICBfX2FzbSB2b2xhdGlsZSAoIm1l bWJhciAjTG9hZExvYWQiIDogOiA6ICJtZW1vcnkiKTsKKysjZWxzZQorKyAgX19hc20gdm9sYXRp bGUgKCIiIDogOiA6ICJtZW1vcnkiKTsKKysjZW5kaWYKKyt9CisrCisrc3RhdGljIGlubGluZSB2 b2lkCisrYXRvbWljX3dyaXRlX2JhcnJpZXIgKHZvaWQpCisreworKyNpZiBkZWZpbmVkIF9fYXJj aDY0X18gfHwgZGVmaW5lZCBfX3NwYXJjX3Y5X18KKysgIF9fYXNtIHZvbGF0aWxlICgibWVtYmFy ICNXcml0ZVdyaXRlIiA6IDogOiAibWVtb3J5Iik7CisrI2Vsc2UKKysgIF9fc3luY19zeW5jaHJv bml6ZSAoKTsKKysjZW5kaWYKKyB9CistLS0gbGliZ29tcC9jb25maWcvbGludXgvaWE2NC9mdXRl eC5oLmpqCTIwMDctMTItMDcgMTQ6NDE6MDAuMDAwMDAwMDAwICswMTAwCisrKysgbGliZ29tcC9j b25maWcvbGludXgvaWE2NC9mdXRleC5oCTIwMDgtMDMtMjYgMTU6MTE6MzIuMDAwMDAwMDAwICsw MTAwCitAQCAtMSw0ICsxLDQgQEAKKy0vKiBDb3B5cmlnaHQgKEMpIDIwMDUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA4IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgIENvbnRyaWJ1dGVkIGJ5IFJpY2hhcmQgSGVuZGVy c29uIDxydGhAcmVkaGF0LmNvbT4uCisgCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdO VSBPcGVuTVAgTGlicmFyeSAobGliZ29tcCkuCitAQCAtMjksMjMgKzI5LDI0IEBACisgCisgI2lu Y2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisgCistI2RlZmluZSBGVVRFWF9XQUlUCTAKKy0jZGVmaW5l IEZVVEVYX1dBS0UJMQorIAorIAorLXN0YXRpYyBpbmxpbmUgdm9pZAorLXN5c19mdXRleDAoaW50 ICphZGRyLCBpbnQgb3AsIGludCB2YWwpCisrc3RhdGljIGlubGluZSBsb25nCisrc3lzX2Z1dGV4 MChpbnQgKmFkZHIsIGxvbmcgb3AsIGludCB2YWwpCisgeworICAgcmVnaXN0ZXIgbG9uZyBvdXQw IGFzbSAoIm91dDAiKSA9IChsb25nKSBhZGRyOworICAgcmVnaXN0ZXIgbG9uZyBvdXQxIGFzbSAo Im91dDEiKSA9IG9wOworICAgcmVnaXN0ZXIgbG9uZyBvdXQyIGFzbSAoIm91dDIiKSA9IHZhbDsK KyAgIHJlZ2lzdGVyIGxvbmcgb3V0MyBhc20gKCJvdXQzIikgPSAwOworKyAgcmVnaXN0ZXIgbG9u ZyByOCBhc20gKCJyOCIpOworKyAgcmVnaXN0ZXIgbG9uZyByMTAgYXNtICgicjEwIik7CisgICBy ZWdpc3RlciBsb25nIHIxNSBhc20gKCJyMTUiKSA9IFNZU19mdXRleDsKKyAKKyAgIF9fYXNtIF9f dm9sYXRpbGUgKCJicmVhayAweDEwMDAwMCIKKy0JOiAiPXIiKHIxNSksICI9ciIob3V0MCksICI9 ciIob3V0MSksICI9ciIob3V0MiksICI9ciIob3V0MykKKysJOiAiPXIiKHIxNSksICI9ciIob3V0 MCksICI9ciIob3V0MSksICI9ciIob3V0MiksICI9ciIob3V0MyksCisrCSAgIj1yIihyOCksICI9 ciIocjEwKQorIAk6ICJyIihyMTUpLCAiciIob3V0MCksICJyIihvdXQxKSwgInIiKG91dDIpLCAi ciIob3V0MykKKy0gICAgICAgIDogIm1lbW9yeSIsICJyOCIsICJyMTAiLCAib3V0NCIsICJvdXQ1 IiwgIm91dDYiLCAib3V0NyIsCisrCTogIm1lbW9yeSIsICJvdXQ0IiwgIm91dDUiLCAib3V0NiIs ICJvdXQ3IiwKKyAJICAvKiBOb24tc3RhY2tlZCBpbnRlZ2VyIHJlZ2lzdGVycywgbWludXMgcjgs IHIxMCwgcjE1LiAgKi8KKyAJICAicjIiLCAicjMiLCAicjkiLCAicjExIiwgInIxMiIsICJyMTMi LCAicjE0IiwgInIxNiIsICJyMTciLCAicjE4IiwKKyAJICAicjE5IiwgInIyMCIsICJyMjEiLCAi cjIyIiwgInIyMyIsICJyMjQiLCAicjI1IiwgInIyNiIsICJyMjciLAorQEAgLTU2LDE2ICs1Nyw0 MSBAQCBzeXNfZnV0ZXgwKGludCAqYWRkciwgaW50IG9wLCBpbnQgdmFsKQorIAkgICJmNiIsICJm NyIsICJmOCIsICJmOSIsICJmMTAiLCAiZjExIiwgImYxMiIsICJmMTMiLCAiZjE0IiwgImYxNSIs CisgCSAgLyogQnJhbmNoIHJlZ2lzdGVycy4gICovCisgCSAgImI2Iik7CisrICByZXR1cm4gcjgg JiByMTA7CisgfQorIAorIHN0YXRpYyBpbmxpbmUgdm9pZAorIGZ1dGV4X3dhaXQgKGludCAqYWRk ciwgaW50IHZhbCkKKyB7CistICBzeXNfZnV0ZXgwIChhZGRyLCBGVVRFWF9XQUlULCB2YWwpOwor KyAgbG9uZyBlcnIgPSBzeXNfZnV0ZXgwIChhZGRyLCBnb21wX2Z1dGV4X3dhaXQsIHZhbCk7Cisr ICBpZiAoX19idWlsdGluX2V4cGVjdCAoZXJyID09IEVOT1NZUywgMCkpCisrICAgIHsKKysgICAg ICBnb21wX2Z1dGV4X3dhaXQgJj0gfkZVVEVYX1BSSVZBVEVfRkxBRzsKKysgICAgICBnb21wX2Z1 dGV4X3dha2UgJj0gfkZVVEVYX1BSSVZBVEVfRkxBRzsKKysgICAgICBzeXNfZnV0ZXgwIChhZGRy LCBnb21wX2Z1dGV4X3dhaXQsIHZhbCk7CisrICAgIH0KKyB9CisgCisgc3RhdGljIGlubGluZSB2 b2lkCisgZnV0ZXhfd2FrZSAoaW50ICphZGRyLCBpbnQgY291bnQpCisgeworLSAgc3lzX2Z1dGV4 MCAoYWRkciwgRlVURVhfV0FLRSwgY291bnQpOworKyAgbG9uZyBlcnIgPSBzeXNfZnV0ZXgwIChh ZGRyLCBnb21wX2Z1dGV4X3dha2UsIGNvdW50KTsKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChl cnIgPT0gRU5PU1lTLCAwKSkKKysgICAgeworKyAgICAgIGdvbXBfZnV0ZXhfd2FpdCAmPSB+RlVU RVhfUFJJVkFURV9GTEFHOworKyAgICAgIGdvbXBfZnV0ZXhfd2FrZSAmPSB+RlVURVhfUFJJVkFU RV9GTEFHOworKyAgICAgIHN5c19mdXRleDAgKGFkZHIsIGdvbXBfZnV0ZXhfd2FrZSwgY291bnQp OworKyAgICB9CisrfQorKworK3N0YXRpYyBpbmxpbmUgdm9pZAorK2NwdV9yZWxheCAodm9pZCkK Kyt7CisrICBfX2FzbSB2b2xhdGlsZSAoImhpbnQgQHBhdXNlIiA6IDogOiAibWVtb3J5Iik7Cisr fQorKworK3N0YXRpYyBpbmxpbmUgdm9pZAorK2F0b21pY193cml0ZV9iYXJyaWVyICh2b2lkKQor K3sKKysgIF9fc3luY19zeW5jaHJvbml6ZSAoKTsKKyB9CistLS0gbGliZ29tcC9jb25maWcvbGlu dXgvczM5MC9mdXRleC5oLmpqCTIwMDctMTItMDcgMTQ6NDE6MDAuMDAwMDAwMDAwICswMTAwCisr KysgbGliZ29tcC9jb25maWcvbGludXgvczM5MC9mdXRleC5oCTIwMDgtMDMtMjYgMTU6MTE6MzIu MDAwMDAwMDAwICswMTAwCitAQCAtMSw0ICsxLDQgQEAKKy0vKiBDb3B5cmlnaHQgKEMpIDIwMDUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAyMDA1LCAy MDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgIENvbnRyaWJ1dGVkIGJ5IEph a3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgorIAorICAgIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIHRoZSBHTlUgT3Blbk1QIExpYnJhcnkgKGxpYmdvbXApLgorQEAgLTI4LDEwICsyOCw4IEBA CisgLyogUHJvdmlkZSB0YXJnZXQtc3BlY2lmaWMgYWNjZXNzIHRvIHRoZSBmdXRleCBzeXN0ZW0g Y2FsbC4gICovCisgCisgI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CistI2RlZmluZSBGVVRFWF9X QUlUCTAKKy0jZGVmaW5lIEZVVEVYX1dBS0UJMQorIAorLXN0YXRpYyBpbmxpbmUgdm9pZAorK3N0 YXRpYyBpbmxpbmUgbG9uZworIHN5c19mdXRleDAgKGludCAqYWRkciwgaW50IG9wLCBpbnQgdmFs KQorIHsKKyAgIHJlZ2lzdGVyIGxvbmcgaW50IGdwcjIgIF9fYXNtX18gKCIyIik7CitAQCAtNDks MTYgKzQ3LDQxIEBAIHN5c19mdXRleDAgKGludCAqYWRkciwgaW50IG9wLCBpbnQgdmFsKQorIAkJ ICA6ICJpIiAoU1lTX2Z1dGV4KSwKKyAJCSAgICAiMCIgKGdwcjIpLCAiZCIgKGdwcjMpLCAiZCIg KGdwcjQpLCAiZCIgKGdwcjUpCisgCQkgIDogIm1lbW9yeSIpOworKyAgcmV0dXJuIGdwcjI7Cisg fQorIAorIHN0YXRpYyBpbmxpbmUgdm9pZAorIGZ1dGV4X3dhaXQgKGludCAqYWRkciwgaW50IHZh bCkKKyB7CistICBzeXNfZnV0ZXgwIChhZGRyLCBGVVRFWF9XQUlULCB2YWwpOworKyAgbG9uZyBl cnIgPSBzeXNfZnV0ZXgwIChhZGRyLCBnb21wX2Z1dGV4X3dhaXQsIHZhbCk7CisrICBpZiAoX19i dWlsdGluX2V4cGVjdCAoZXJyID09IC1FTk9TWVMsIDApKQorKyAgICB7CisrICAgICAgZ29tcF9m dXRleF93YWl0ICY9IH5GVVRFWF9QUklWQVRFX0ZMQUc7CisrICAgICAgZ29tcF9mdXRleF93YWtl ICY9IH5GVVRFWF9QUklWQVRFX0ZMQUc7CisrICAgICAgc3lzX2Z1dGV4MCAoYWRkciwgZ29tcF9m dXRleF93YWl0LCB2YWwpOworKyAgICB9CisgfQorIAorIHN0YXRpYyBpbmxpbmUgdm9pZAorIGZ1 dGV4X3dha2UgKGludCAqYWRkciwgaW50IGNvdW50KQorIHsKKy0gIHN5c19mdXRleDAgKGFkZHIs IEZVVEVYX1dBS0UsIGNvdW50KTsKKysgIGxvbmcgZXJyID0gc3lzX2Z1dGV4MCAoYWRkciwgZ29t cF9mdXRleF93YWtlLCBjb3VudCk7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoZXJyID09IC1F Tk9TWVMsIDApKQorKyAgICB7CisrICAgICAgZ29tcF9mdXRleF93YWl0ICY9IH5GVVRFWF9QUklW QVRFX0ZMQUc7CisrICAgICAgZ29tcF9mdXRleF93YWtlICY9IH5GVVRFWF9QUklWQVRFX0ZMQUc7 CisrICAgICAgc3lzX2Z1dGV4MCAoYWRkciwgZ29tcF9mdXRleF93YWtlLCBjb3VudCk7CisrICAg IH0KKyt9CisrCisrc3RhdGljIGlubGluZSB2b2lkCisrY3B1X3JlbGF4ICh2b2lkKQorK3sKKysg IF9fYXNtIHZvbGF0aWxlICgiIiA6IDogOiAibWVtb3J5Iik7CisrfQorKworK3N0YXRpYyBpbmxp bmUgdm9pZAorK2F0b21pY193cml0ZV9iYXJyaWVyICh2b2lkKQorK3sKKysgIF9fc3luY19zeW5j aHJvbml6ZSAoKTsKKyB9CistLS0gbGliZ29tcC9jb25maWcvbGludXgvbXV0ZXguYy5qagkyMDA3 LTEyLTA3IDE0OjQxOjAwLjAwMDAwMDAwMCArMDEwMAorKysrIGxpYmdvbXAvY29uZmlnL2xpbnV4 L211dGV4LmMJMjAwOC0wMy0yNiAxNToxMTozMi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDQgKzEs NCBAQAorLS8qIENvcHlyaWdodCAoQykgMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKysvKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisgICAgQ29udHJpYnV0ZWQgYnkgUmljaGFyZCBIZW5kZXJzb24gPHJ0aEByZWRoYXQu Y29tPi4KKyAKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIE9wZW5NUCBMaWJyYXJ5 IChsaWJnb21wKS4KK0BAIC0yOSw5ICsyOSwxMCBAQAorICAgIG1lY2hhbmlzbSBmb3IgbGliZ29t cC4gIFRoaXMgdHlwZSBpcyBwcml2YXRlIHRvIHRoZSBsaWJyYXJ5LiAgVGhpcworICAgIGltcGxl bWVudGF0aW9uIHVzZXMgYXRvbWljIGluc3RydWN0aW9ucyBhbmQgdGhlIGZ1dGV4IHN5c2NhbGwu ICAqLworIAorLSNpbmNsdWRlICJsaWJnb21wLmgiCistI2luY2x1ZGUgImZ1dGV4LmgiCisrI2lu Y2x1ZGUgIndhaXQuaCIKKyAKKytsb25nIGludCBnb21wX2Z1dGV4X3dha2UgPSBGVVRFWF9XQUtF IHwgRlVURVhfUFJJVkFURV9GTEFHOworK2xvbmcgaW50IGdvbXBfZnV0ZXhfd2FpdCA9IEZVVEVY X1dBSVQgfCBGVVRFWF9QUklWQVRFX0ZMQUc7CisgCisgdm9pZAorIGdvbXBfbXV0ZXhfbG9ja19z bG93IChnb21wX211dGV4X3QgKm11dGV4KQorQEAgLTQwLDcgKzQxLDcgQEAgZ29tcF9tdXRleF9s b2NrX3Nsb3cgKGdvbXBfbXV0ZXhfdCAqbXV0ZQorICAgICB7CisgICAgICAgaW50IG9sZHZhbCA9 IF9fc3luY192YWxfY29tcGFyZV9hbmRfc3dhcCAobXV0ZXgsIDEsIDIpOworICAgICAgIGlmIChv bGR2YWwgIT0gMCkKKy0gICAgICAgIGZ1dGV4X3dhaXQgKG11dGV4LCAyKTsKKysJZG9fd2FpdCAo bXV0ZXgsIDIpOworICAgICB9CisgICB3aGlsZSAoIV9fc3luY19ib29sX2NvbXBhcmVfYW5kX3N3 YXAgKG11dGV4LCAwLCAyKSk7CisgfQorLS0tIGxpYmdvbXAvY29uZmlnL2xpbnV4L3NlbS5jLmpq CTIwMDctMTItMDcgMTQ6NDE6MDAuMDAwMDAwMDAwICswMTAwCisrKysgbGliZ29tcC9jb25maWcv bGludXgvc2VtLmMJMjAwOC0wMy0yNiAxNToxMTozMi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDQg KzEsNCBAQAorLS8qIENvcHlyaWdodCAoQykgMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKysvKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisgICAgQ29udHJpYnV0ZWQgYnkgUmljaGFyZCBIZW5kZXJzb24gPHJ0aEByZWRo YXQuY29tPi4KKyAKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIE9wZW5NUCBMaWJy YXJ5IChsaWJnb21wKS4KK0BAIC0yOSw4ICsyOSw3IEBACisgICAgbWVjaGFuaXNtIGZvciBsaWJn b21wLiAgVGhpcyB0eXBlIGlzIHByaXZhdGUgdG8gdGhlIGxpYnJhcnkuICBUaGlzIAorICAgIGlt cGxlbWVudGF0aW9uIHVzZXMgYXRvbWljIGluc3RydWN0aW9ucyBhbmQgdGhlIGZ1dGV4IHN5c2Nh bGwuICAqLworIAorLSNpbmNsdWRlICJsaWJnb21wLmgiCistI2luY2x1ZGUgImZ1dGV4LmgiCisr I2luY2x1ZGUgIndhaXQuaCIKKyAKKyAKKyB2b2lkCitAQCAtNDQsNyArNDMsNyBAQCBnb21wX3Nl bV93YWl0X3Nsb3cgKGdvbXBfc2VtX3QgKnNlbSkKKyAJICBpZiAoX19zeW5jX2Jvb2xfY29tcGFy ZV9hbmRfc3dhcCAoc2VtLCB2YWwsIHZhbCAtIDEpKQorIAkgICAgcmV0dXJuOworIAl9CistICAg ICAgZnV0ZXhfd2FpdCAoc2VtLCAtMSk7CisrICAgICAgZG9fd2FpdCAoc2VtLCAtMSk7CisgICAg IH0KKyB9CisgCistLS0gbGliZ29tcC9jb25maWcvbGludXgvcG93ZXJwYy9mdXRleC5oLmpqCTIw MDctMTItMDcgMTQ6NDE6MDAuMDAwMDAwMDAwICswMTAwCisrKysgbGliZ29tcC9jb25maWcvbGlu dXgvcG93ZXJwYy9mdXRleC5oCTIwMDgtMDMtMjYgMTU6MTE6MzIuMDAwMDAwMDAwICswMTAwCitA QCAtMSw0ICsxLDQgQEAKKy0vKiBDb3B5cmlnaHQgKEMpIDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA4IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorICAgIENvbnRyaWJ1dGVkIGJ5IFJpY2hhcmQgSGVuZGVyc29uIDxy dGhAcmVkaGF0LmNvbT4uCisgCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBPcGVu TVAgTGlicmFyeSAobGliZ29tcCkuCitAQCAtMjgsMTAgKzI4LDggQEAKKyAvKiBQcm92aWRlIHRh cmdldC1zcGVjaWZpYyBhY2Nlc3MgdG8gdGhlIGZ1dGV4IHN5c3RlbSBjYWxsLiAgKi8KKyAKKyAj aW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKy0jZGVmaW5lIEZVVEVYX1dBSVQJMAorLSNkZWZpbmUg RlVURVhfV0FLRQkxCisgCistc3RhdGljIGlubGluZSB2b2lkCisrc3RhdGljIGlubGluZSBsb25n Cisgc3lzX2Z1dGV4MCAoaW50ICphZGRyLCBpbnQgb3AsIGludCB2YWwpCisgeworICAgcmVnaXN0 ZXIgbG9uZyBpbnQgcjAgIF9fYXNtX18gKCJyMCIpOworQEAgLTUwLDIxICs0OCw0OCBAQCBzeXNf ZnV0ZXgwIChpbnQgKmFkZHIsIGludCBvcCwgaW50IHZhbCkKKyAgICAgIGRvZXNuJ3QuICBJdCBk b2Vzbid0IG11Y2ggbWF0dGVyIGZvciB1cy4gIEluIHRoZSBpbnRlcmVzdCBvZiB1bml0eSwKKyAg ICAgIGdvIGFoZWFkIGFuZCBjbG9iYmVyIGl0IGFsd2F5cy4gICovCisgCistICBfX2FzbSB2b2xh dGlsZSAoInNjIgorKyAgX19hc20gdm9sYXRpbGUgKCJzYzsgbWZjciAlMCIKKyAJCSAgOiAiPXIi KHIwKSwgIj1yIihyMyksICI9ciIocjQpLCAiPXIiKHI1KSwgIj1yIihyNikKKyAJCSAgOiAiciIo cjApLCAiciIocjMpLCAiciIocjQpLCAiciIocjUpLCAiciIocjYpCisgCQkgIDogInI3IiwgInI4 IiwgInI5IiwgInIxMCIsICJyMTEiLCAicjEyIiwKKyAJCSAgICAiY3IwIiwgImN0ciIsICJtZW1v cnkiKTsKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChyMCAmICgxIDw8IDI4KSwgMCkpCisrICAg IHJldHVybiByMzsKKysgIHJldHVybiAwOworIH0KKyAKKyBzdGF0aWMgaW5saW5lIHZvaWQKKyBm dXRleF93YWl0IChpbnQgKmFkZHIsIGludCB2YWwpCisgeworLSAgc3lzX2Z1dGV4MCAoYWRkciwg RlVURVhfV0FJVCwgdmFsKTsKKysgIGxvbmcgZXJyID0gc3lzX2Z1dGV4MCAoYWRkciwgZ29tcF9m dXRleF93YWl0LCB2YWwpOworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGVyciA9PSBFTk9TWVMs IDApKQorKyAgICB7CisrICAgICAgZ29tcF9mdXRleF93YWl0ICY9IH5GVVRFWF9QUklWQVRFX0ZM QUc7CisrICAgICAgZ29tcF9mdXRleF93YWtlICY9IH5GVVRFWF9QUklWQVRFX0ZMQUc7CisrICAg ICAgc3lzX2Z1dGV4MCAoYWRkciwgZ29tcF9mdXRleF93YWl0LCB2YWwpOworKyAgICB9CisgfQor IAorIHN0YXRpYyBpbmxpbmUgdm9pZAorIGZ1dGV4X3dha2UgKGludCAqYWRkciwgaW50IGNvdW50 KQorIHsKKy0gIHN5c19mdXRleDAgKGFkZHIsIEZVVEVYX1dBS0UsIGNvdW50KTsKKysgIGxvbmcg ZXJyID0gc3lzX2Z1dGV4MCAoYWRkciwgZ29tcF9mdXRleF93YWtlLCBjb3VudCk7CisrICBpZiAo X19idWlsdGluX2V4cGVjdCAoZXJyID09IEVOT1NZUywgMCkpCisrICAgIHsKKysgICAgICBnb21w X2Z1dGV4X3dhaXQgJj0gfkZVVEVYX1BSSVZBVEVfRkxBRzsKKysgICAgICBnb21wX2Z1dGV4X3dh a2UgJj0gfkZVVEVYX1BSSVZBVEVfRkxBRzsKKysgICAgICBzeXNfZnV0ZXgwIChhZGRyLCBnb21w X2Z1dGV4X3dha2UsIGNvdW50KTsKKysgICAgfQorK30KKysKKytzdGF0aWMgaW5saW5lIHZvaWQK KytjcHVfcmVsYXggKHZvaWQpCisreworKyAgX19hc20gdm9sYXRpbGUgKCIiIDogOiA6ICJtZW1v cnkiKTsKKyt9CisrCisrc3RhdGljIGlubGluZSB2b2lkCisrYXRvbWljX3dyaXRlX2JhcnJpZXIg KHZvaWQpCisreworKyAgX19hc20gdm9sYXRpbGUgKCJlaWVpbyIgOiA6IDogIm1lbW9yeSIpOwor IH0KKy0tLSBsaWJnb21wL2NvbmZpZy9saW51eC9iYXIuYy5qagkyMDA3LTEyLTA3IDE0OjQxOjAw LjAwMDAwMDAwMCArMDEwMAorKysrIGxpYmdvbXAvY29uZmlnL2xpbnV4L2Jhci5jCTIwMDgtMDMt MjYgMTU6MTE6MzIuMDAwMDAwMDAwICswMTAwCitAQCAtMSw0ICsxLDQgQEAKKy0vKiBDb3B5cmln aHQgKEMpIDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJpZ2h0 IChDKSAyMDA1LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgIENvbnRy aWJ1dGVkIGJ5IFJpY2hhcmQgSGVuZGVyc29uIDxydGhAcmVkaGF0LmNvbT4uCisgCisgICAgVGhp cyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBPcGVuTVAgTGlicmFyeSAobGliZ29tcCkuCitAQCAt MjksMzIgKzI5LDI5IEBACisgICAgbWVjaGFuaXNtIGZvciBsaWJnb21wLiAgVGhpcyB0eXBlIGlz IHByaXZhdGUgdG8gdGhlIGxpYnJhcnkuICBUaGlzIAorICAgIGltcGxlbWVudGF0aW9uIHVzZXMg YXRvbWljIGluc3RydWN0aW9ucyBhbmQgdGhlIGZ1dGV4IHN5c2NhbGwuICAqLworIAorLSNpbmNs dWRlICJsaWJnb21wLmgiCistI2luY2x1ZGUgImZ1dGV4LmgiCisgI2luY2x1ZGUgPGxpbWl0cy5o PgorKyNpbmNsdWRlICJ3YWl0LmgiCisgCisgCisgdm9pZAorLWdvbXBfYmFycmllcl93YWl0X2Vu ZCAoZ29tcF9iYXJyaWVyX3QgKmJhciwgYm9vbCBsYXN0KQorK2dvbXBfYmFycmllcl93YWl0X2Vu ZCAoZ29tcF9iYXJyaWVyX3QgKmJhciwgZ29tcF9iYXJyaWVyX3N0YXRlX3Qgc3RhdGUpCisgewor LSAgaWYgKGxhc3QpCisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHN0YXRlICYgMSkgIT0gMCwg MCkpCisgICAgIHsKKy0gICAgICBiYXItPmdlbmVyYXRpb24rKzsKKy0gICAgICBmdXRleF93YWtl ICgmYmFyLT5nZW5lcmF0aW9uLCBJTlRfTUFYKTsKKysgICAgICAvKiBOZXh0IHRpbWUgd2UnbGwg YmUgYXdhaXRpbmcgVE9UQUwgdGhyZWFkcyBhZ2Fpbi4gICovCisrICAgICAgYmFyLT5hd2FpdGVk ID0gYmFyLT50b3RhbDsKKysgICAgICBhdG9taWNfd3JpdGVfYmFycmllciAoKTsKKysgICAgICBi YXItPmdlbmVyYXRpb24gKz0gMjsKKysgICAgICBmdXRleF93YWtlICgoaW50ICopICZiYXItPmdl bmVyYXRpb24sIElOVF9NQVgpOworICAgICB9CisgICBlbHNlCisgICAgIHsKKy0gICAgICB1bnNp Z25lZCBpbnQgZ2VuZXJhdGlvbiA9IGJhci0+Z2VuZXJhdGlvbjsKKy0KKy0gICAgICBnb21wX211 dGV4X3VubG9jayAoJmJhci0+bXV0ZXgpOworKyAgICAgIHVuc2lnbmVkIGludCBnZW5lcmF0aW9u ID0gc3RhdGU7CisgCisgICAgICAgZG8KKy0JZnV0ZXhfd2FpdCAoJmJhci0+Z2VuZXJhdGlvbiwg Z2VuZXJhdGlvbik7CisrCWRvX3dhaXQgKChpbnQgKikgJmJhci0+Z2VuZXJhdGlvbiwgZ2VuZXJh dGlvbik7CisgICAgICAgd2hpbGUgKGJhci0+Z2VuZXJhdGlvbiA9PSBnZW5lcmF0aW9uKTsKKyAg ICAgfQorLQorLSAgaWYgKF9fc3luY19hZGRfYW5kX2ZldGNoICgmYmFyLT5hcnJpdmVkLCAtMSkg PT0gMCkKKy0gICAgZ29tcF9tdXRleF91bmxvY2sgKCZiYXItPm11dGV4KTsKKyB9CisgCisgdm9p ZAorQEAgLTYyLDMgKzU5LDE4IEBAIGdvbXBfYmFycmllcl93YWl0IChnb21wX2JhcnJpZXJfdCAq YmFycmkKKyB7CisgICBnb21wX2JhcnJpZXJfd2FpdF9lbmQgKGJhcnJpZXIsIGdvbXBfYmFycmll cl93YWl0X3N0YXJ0IChiYXJyaWVyKSk7CisgfQorKworKy8qIExpa2UgZ29tcF9iYXJyaWVyX3dh aXQsIGV4Y2VwdCB0aGF0IGlmIHRoZSBlbmNvdW50ZXJpbmcgdGhyZWFkCisrICAgaXMgbm90IHRo ZSBsYXN0IG9uZSB0byBoaXQgdGhlIGJhcnJpZXIsIGl0IHJldHVybnMgaW1tZWRpYXRlbHkuCisr ICAgVGhlIGludGVuZGVkIHVzYWdlIGlzIHRoYXQgYSB0aHJlYWQgd2hpY2ggaW50ZW5kcyB0byBn b21wX2JhcnJpZXJfZGVzdHJveQorKyAgIHRoaXMgYmFycmllciBjYWxscyBnb21wX2JhcnJpZXJf d2FpdCwgd2hpbGUgYWxsIG90aGVyIHRocmVhZHMKKysgICBjYWxsIGdvbXBfYmFycmllcl93YWl0 X2xhc3QuICBXaGVuIGdvbXBfYmFycmllcl93YWl0IHJldHVybnMsCisrICAgdGhlIGJhcnJpZXIg Y2FuIGJlIHNhZmVseSBkZXN0cm95ZWQuICAqLworKworK3ZvaWQKKytnb21wX2JhcnJpZXJfd2Fp dF9sYXN0IChnb21wX2JhcnJpZXJfdCAqYmFycmllcikKKyt7CisrICBnb21wX2JhcnJpZXJfc3Rh dGVfdCBzdGF0ZSA9IGdvbXBfYmFycmllcl93YWl0X3N0YXJ0IChiYXJyaWVyKTsKKysgIGlmIChz dGF0ZSAmIDEpCisrICAgIGdvbXBfYmFycmllcl93YWl0X2VuZCAoYmFycmllciwgc3RhdGUpOwor K30KCmRpZmYgLS1naXQgYS9nY2M0My1wcjM1NDQwLnBhdGNoIGIvZ2NjNDMtcHIzNTQ0MC5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmYzZjBkCi0tLSAvZGV2L251 bGwKKysrIGIvZ2NjNDMtcHIzNTQ0MC5wYXRjaApAQCAtMCwwICsxLDU2IEBACisyMDA4LTAzLTE5 ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KKworCVBSIGMvMzU0NDAKKwkqIGMt cHJldHR5LXByaW50LmMgKHBwX2NfaW5pdGlhbGl6ZXJfbGlzdCk6IEhhbmRsZSBDT05TVFJVQ1RP UgorCWZvciBhbGwgdHlwZXMuCisKKwkqIGdjYy5kZy9wcjM1NDQwLmM6IE5ldyB0ZXN0LgorCist LS0gZ2NjL2MtcHJldHR5LXByaW50LmMuamoJMjAwOC0wMi0xMSAxNDo0ODoxMi4wMDAwMDAwMDAg KzAxMDAKKysrKyBnY2MvYy1wcmV0dHktcHJpbnQuYwkyMDA4LTAzLTE5IDE0OjUwOjA5LjAwMDAw MDAwMCArMDEwMAorQEAgLTExNzMsNiArMTE3MywxMiBAQCBwcF9jX2luaXRpYWxpemVyX2xpc3Qg KGNfcHJldHR5X3ByaW50ZXIgCisgICB0cmVlIHR5cGUgPSBUUkVFX1RZUEUgKGUpOworICAgY29u c3QgZW51bSB0cmVlX2NvZGUgY29kZSA9IFRSRUVfQ09ERSAodHlwZSk7CisgCisrICBpZiAoVFJF RV9DT0RFIChlKSA9PSBDT05TVFJVQ1RPUikKKysgICAgeworKyAgICAgIHBwX2NfY29uc3RydWN0 b3JfZWx0cyAocHAsIENPTlNUUlVDVE9SX0VMVFMgKGUpKTsKKysgICAgICByZXR1cm47CisrICAg IH0KKysKKyAgIHN3aXRjaCAoY29kZSkKKyAgICAgeworICAgICBjYXNlIFJFQ09SRF9UWVBFOgor QEAgLTEyMDcsMTYgKzEyMTMsMTIgQEAgcHBfY19pbml0aWFsaXplcl9saXN0IChjX3ByZXR0eV9w cmludGVyIAorICAgICBjYXNlIFZFQ1RPUl9UWVBFOgorICAgICAgIGlmIChUUkVFX0NPREUgKGUp ID09IFZFQ1RPUl9DU1QpCisgCXBwX2NfZXhwcmVzc2lvbl9saXN0IChwcCwgVFJFRV9WRUNUT1Jf Q1NUX0VMVFMgKGUpKTsKKy0gICAgICBlbHNlIGlmIChUUkVFX0NPREUgKGUpID09IENPTlNUUlVD VE9SKQorLQlwcF9jX2NvbnN0cnVjdG9yX2VsdHMgKHBwLCBDT05TVFJVQ1RPUl9FTFRTIChlKSk7 CisgICAgICAgZWxzZQorIAlicmVhazsKKyAgICAgICByZXR1cm47CisgCisgICAgIGNhc2UgQ09N UExFWF9UWVBFOgorLSAgICAgIGlmIChUUkVFX0NPREUgKGUpID09IENPTlNUUlVDVE9SKQorLQlw cF9jX2NvbnN0cnVjdG9yX2VsdHMgKHBwLCBDT05TVFJVQ1RPUl9FTFRTIChlKSk7CistICAgICAg ZWxzZSBpZiAoVFJFRV9DT0RFIChlKSA9PSBDT01QTEVYX0NTVCB8fCBUUkVFX0NPREUgKGUpID09 IENPTVBMRVhfRVhQUikKKysgICAgICBpZiAoVFJFRV9DT0RFIChlKSA9PSBDT01QTEVYX0NTVCB8 fCBUUkVFX0NPREUgKGUpID09IENPTVBMRVhfRVhQUikKKyAJeworIAkgIGNvbnN0IGJvb2wgY3N0 ID0gVFJFRV9DT0RFIChlKSA9PSBDT01QTEVYX0NTVDsKKyAJICBwcF9leHByZXNzaW9uIChwcCwg Y3N0ID8gVFJFRV9SRUFMUEFSVCAoZSkgOiBUUkVFX09QRVJBTkQgKGUsIDApKTsKKy0tLSBnY2Mv dGVzdHN1aXRlL2djYy5kZy9wcjM1NDQwLmMuamoJMjAwOC0wMy0xOSAxNTo1NzoxMy4wMDAwMDAw MDAgKzAxMDAKKysrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjM1NDQwLmMJMjAwOC0wMy0xOSAx NTo0NzozNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0wLDAgKzEsMTIgQEAKKysvKiBQUiBjLzM1NDQw ICovCisrLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1zdGQ9Z251 OTkiIH0gKi8KKysKKytzdHJ1Y3QgQSB7fTsKKytzdHJ1Y3QgQiB7IGludCBpOyBjaGFyIGpbMl07 IH07CisrCisrdm9pZCBmb28gKHZvaWQpCisreworKyAgKHN0cnVjdCBBKXt9KCk7CQkJLyogeyBk Zy1lcnJvciAiY2FsbGVkIG9iamVjdCIgfSAqLworKyAgKHN0cnVjdCBCKXsgLmkgPSAyLCAualsx XSA9IDEgfSgpOwkvKiB7IGRnLWVycm9yICJjYWxsZWQgb2JqZWN0IiB9ICovCisrfQoKZGlmZiAt LWdpdCBhL2djYzQzLXByMzU1NDYucGF0Y2ggYi9nY2M0My1wcjM1NTQ2LnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkNjc2MjMKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2M0My1wcjM1NTQ2LnBhdGNoCkBAIC0wLDAgKzEsNjQgQEAKKzIwMDgtMDMtMjUgIEpha3ViIEpl bGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgorCisJUFIgYysrLzM1NTQ2CisJKiBwdC5jIChhcHBs eV9sYXRlX3RlbXBsYXRlX2F0dHJpYnV0ZXMpOiBEb24ndCBjYWxsIHRzdWJzdCBvbgorCWZpcnN0 IGF0dHJpYnV0ZSBhcmd1bWVudCBpZiBpdCBpcyBJREVOVElGSUVSX05PREUuCisKKwkqIGcrKy5k Zy9leHQvYXR0cmliMzMuQzogTmV3IHRlc3QuCisKKy0tLSBnY2MvY3AvcHQuYy5qagkyMDA4LTAz LTEwIDE3OjExOjQ4LjAwMDAwMDAwMCArMDEwMAorKysrIGdjYy9jcC9wdC5jCTIwMDgtMDMtMjUg MjE6MzI6MTcuMDAwMDAwMDAwICswMTAwCitAQCAtNjcxNyw5ICs2NzE3LDI5IEBAIGFwcGx5X2xh dGVfdGVtcGxhdGVfYXR0cmlidXRlcyAodHJlZSAqZGUKKyAJICAgIHsKKyAJICAgICAgKnAgPSBU UkVFX0NIQUlOICh0KTsKKyAJICAgICAgVFJFRV9DSEFJTiAodCkgPSBOVUxMX1RSRUU7CistCSAg ICAgIFRSRUVfVkFMVUUgKHQpCistCQk9IHRzdWJzdF9leHByIChUUkVFX1ZBTFVFICh0KSwgYXJn cywgY29tcGxhaW4sIGluX2RlY2wsCistCQkJICAgICAgIC8qaW50ZWdyYWxfY29uc3RhbnRfZXhw cmVzc2lvbl9wPSovZmFsc2UpOworKwkgICAgICAvKiBJZiB0aGUgZmlyc3QgYXR0cmlidXRlIGFy Z3VtZW50IGlzIGFuIGlkZW50aWZpZXIsIGRvbid0CisrCQkgcGFzcyBpdCB0aHJvdWdoIHRzdWJz dC4gIEF0dHJpYnV0ZXMgbGlrZSBtb2RlLCBmb3JtYXQsCisrCQkgY2xlYW51cCBhbmQgc2V2ZXJh bCB0YXJnZXQgc3BlY2lmaWMgYXR0cmlidXRlcyBleHBlY3QgaXQKKysJCSB1bm1vZGlmaWVkLiAg Ki8KKysJICAgICAgaWYgKFRSRUVfVkFMVUUgKHQpCisrCQkgICYmIFRSRUVfQ09ERSAoVFJFRV9W QUxVRSAodCkpID09IFRSRUVfTElTVAorKwkJICAmJiBUUkVFX1ZBTFVFIChUUkVFX1ZBTFVFICh0 KSkKKysJCSAgJiYgKFRSRUVfQ09ERSAoVFJFRV9WQUxVRSAoVFJFRV9WQUxVRSAodCkpKQorKwkJ ICAgICAgPT0gSURFTlRJRklFUl9OT0RFKSkKKysJCXsKKysJCSAgdHJlZSBjaGFpbgorKwkJICAg ID0gdHN1YnN0X2V4cHIgKFRSRUVfQ0hBSU4gKFRSRUVfVkFMVUUgKHQpKSwgYXJncywgY29tcGxh aW4sCisrCQkJCSAgIGluX2RlY2wsCisrCQkJCSAgIC8qaW50ZWdyYWxfY29uc3RhbnRfZXhwcmVz c2lvbl9wPSovZmFsc2UpOworKwkJICBpZiAoY2hhaW4gIT0gVFJFRV9DSEFJTiAoVFJFRV9WQUxV RSAodCkpKQorKwkJICAgIFRSRUVfVkFMVUUgKHQpCisrCQkgICAgICA9IHRyZWVfY29ucyAoTlVM TF9UUkVFLCBUUkVFX1ZBTFVFIChUUkVFX1ZBTFVFICh0KSksCisrCQkJCSAgIGNoYWluKTsKKysJ CX0KKysJICAgICAgZWxzZQorKwkJVFJFRV9WQUxVRSAodCkKKysJCSAgPSB0c3Vic3RfZXhwciAo VFJFRV9WQUxVRSAodCksIGFyZ3MsIGNvbXBsYWluLCBpbl9kZWNsLAorKwkJCQkgLyppbnRlZ3Jh bF9jb25zdGFudF9leHByZXNzaW9uX3A9Ki9mYWxzZSk7CisgCSAgICAgICpxID0gdDsKKyAJICAg ICAgcSA9ICZUUkVFX0NIQUlOICh0KTsKKyAJICAgIH0KKy0tLSBnY2MvdGVzdHN1aXRlL2crKy5k Zy9leHQvYXR0cmliMzMuQy5qagkyMDA4LTAzLTI1IDIzOjA1OjUxLjAwMDAwMDAwMCArMDEwMAor KysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL2V4dC9hdHRyaWIzMy5DCTIwMDgtMDMtMjUgMjM6MDY6 MTUuMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDE4IEBACisrLy8gUFIgYysrLzM1NTQ2Cisr Ly8geyBkZy1kbyBjb21waWxlIH0KKysKKyt0ZW1wbGF0ZSA8aW50IE4+Cisrc3RydWN0IFQKKyt7 CisrICB2b2lkIGZvbyAoY2hhciBjb25zdCAqIC4uLikgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAo cHJpbnRmLDIsMykpKTsKKyt9OworKworK3RlbXBsYXRlIHN0cnVjdCBUPDM+OworKworK3RlbXBs YXRlIDx0eXBlbmFtZSBUPgorK3N0cnVjdCBVCisreworKyAgdHlwZWRlZiBUIF9fYXR0cmlidXRl X18oKG1vZGUgKFNJKSkpIFY7CisrfTsKKysKKytVPGludD46OlYgdjsKCmRpZmYgLS1naXQgYS9n Y2M0My5zcGVjIGIvZ2NjNDMuc3BlYwppbmRleCAyN2ZjMDU2Li44MzcxNjI1IDEwMDY0NAotLS0g YS9nY2M0My5zcGVjCisrKyBiL2djYzQzLnNwZWMKQEAgLTEsNiArMSw2IEBACi0lZGVmaW5lIERB VEUgMjAwODAzMTQKKyVkZWZpbmUgREFURSAyMDA4MDMyNgogJWRlZmluZSBnY2NfdmVyc2lvbiA0 LjMuMAotJWRlZmluZSBnY2NfcmVsZWFzZSAzCislZGVmaW5lIGdjY19yZWxlYXNlIDQKICVkZWZp bmUgX3VucGFja2FnZWRfZmlsZXNfdGVybWluYXRlX2J1aWxkIDAKICVkZWZpbmUgbXVsdGlsaWJf NjRfYXJjaHMgc3BhcmM2NCBwcGM2NCBzMzkweCB4ODZfNjQKICVkZWZpbmUgaW5jbHVkZV9nYXBw bGV0dmlld2VyIDEKQEAgLTE0MCw2ICsxNDAsOSBAQCBQYXRjaDEwOiBnY2M0My1yaDMzMDc3MS5w YXRjaAogUGF0Y2gxMTogZ2NjNDMtcmgzNDEyMjEucGF0Y2gKIFBhdGNoMTI6IGdjYzQzLWNwcC1w cmFnbWEucGF0Y2gKIFBhdGNoMTM6IGdjYzQzLWphdmEtZGVidWctaWZhY2UtdHlwZS5wYXRjaAor UGF0Y2gxNDogZ2NjNDMtbGliZ29tcC1zcGVlZHVwLnBhdGNoCitQYXRjaDE1OiBnY2M0My1wcjM1 NDQwLnBhdGNoCitQYXRjaDE2OiBnY2M0My1wcjM1NTQ2LnBhdGNoCiAKICMgT24gQVJNIEVBQkkg c3lzdGVtcywgd2UgZG8gd2FudCAtZ251ZWFiaSB0byBiZSBwYXJ0IG9mIHRoZQogIyB0YXJnZXQg dHJpcGxlLgpAQCAtMjcwLDYgKzI3Myw3IEBAIEZvcnRyYW4gOTUgZHluYW1pY2FsbHkgbGlua2Vk IHByb2dyYW1zLgogJXBhY2thZ2UgLW4gbGliZ29tcAogU3VtbWFyeTogR0NDIE9wZW5NUCAyLjUg c2hhcmVkIHN1cHBvcnQgbGlicmFyeQogR3JvdXA6IFN5c3RlbSBFbnZpcm9ubWVudC9MaWJyYXJp ZXMKK1ByZXJlcTogL3NiaW4vaW5zdGFsbC1pbmZvCiAKICVkZXNjcmlwdGlvbiAtbiBsaWJnb21w CiBUaGlzIHBhY2thZ2UgY29udGFpbnMgR0NDIHNoYXJlZCBzdXBwb3J0IGxpYnJhcnkgd2hpY2gg aXMgbmVlZGVkCkBAIC00MzYsNiArNDQwLDkgQEAgd2hpY2ggYXJlIHJlcXVpcmVkIHRvIHJ1biBw cm9ncmFtcyBjb21waWxlZCB3aXRoIHRoZSBHTkFULgogJXBhdGNoMTEgLXAwIC1iIC5yaDM0MTIy MX4KICVwYXRjaDEyIC1wMCAtYiAuY3BwLXByYWdtYX4KICVwYXRjaDEzIC1wMCAtYiAuamF2YS1k ZWJ1Zy1pZmFjZS10eXBlfgorJXBhdGNoMTQgLXAwIC1iIC5saWJnb21wLXNwZWVkdXB+CislcGF0 Y2gxNSAtcDAgLWIgLnByMzU0NDB+CislcGF0Y2gxNiAtcDAgLWIgLnByMzU1NDZ+CiAKIHRhciB4 emYgJXtTT1VSQ0U0fQogCkBAIC0xNjQ4LDYgKzE2NTUsMTggQEAgZmkKICVkb2MgcnBtLmRvYy9j aGFuZ2Vsb2dzL2xpYm11ZGZsYXAvQ2hhbmdlTG9nKgogCiAlY2hhbmdlbG9nCisqIFdlZCBNYXIg MjYgMjAwOCBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjMuMC00CistIHVwZGF0 ZSBmcm9tIGdjYy00XzMtYnJhbmNoCisgIC0gUFJzIGMrKy8zNTMzMiwgYysrLzM1NTQ4LCBkZWJ1 Zy8zMTUxMCwgZm9ydHJhbi8zMzI5NSwgZm9ydHJhbi8zNDgxMywKKwlsaWJmb3J0cmFuLzM1NjE3 LCBsaWJmb3J0cmFuLzM1NjI3LCBsaWJnb21wLzM1NjI1LCBsaWJzdGRjKysvMzUyNTYsCisJbGli c3RkYysrLzM1NjM3LCBtaWRkbGUtZW5kLzM1NTkzLCBtaWRkbGUtZW5kLzM1NjA5LAorCW1pZGRs ZS1lbmQvMzU2MTEsIG1pZGRsZS1lbmQvMzU2MTYsIHRhcmdldC8zNTUwNCwgdGVzdHN1aXRlLzM0 MTY4LAorCXRlc3RzdWl0ZS8zNTYyMQorLSBiYWNrcG9ydCBsaWJnb21wIHNwZWVkdXBzIGZyb20g Z29tcC0zXzAtYnJhbmNoICgjNDM3MjY4KQorLSBmaXggZGlhZ25vc3RpY3Mgd2l0aCBjb21wb3Vu ZCBsaXRlcmFscyAoUFIgYy8zNTQ0MCkKKy0gZml4IEMrKyBoYW5kbGluZyBvZiBsYXRlIHRlbXBs YXRlIGF0dHJpYnV0ZXMgKFBSIGMrKy8zNTU0NikKKy0gUHJlcmVxIGluc3RhbGwtaW5mbyBpbiBs aWJnb21wICgjNDM3NTIzKQorCiAqIEZyaSBNYXIgMTQgMjAwOCBKYWt1YiBKZWxpbmVrIDxqYWt1 YkByZWRoYXQuY29tPiA0LjMuMC0zCiAtIHVwZGF0ZSBmcm9tIGdjYy00XzMtYnJhbmNoCiAgIC0g UFJzIGMrKy8zMzg4NywgYysrLzM1MzI4LCBjKysvMzUzMzcsIGMrKy8zNTQ2OSwgYy8zNTQzOCwg Yy8zNTQzOSwKCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwppbmRleCA2ZmU1NzhlLi4y YTE2MzcxIDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMKQEAgLTEsMiArMSwyIEBA Ci1lNWZkZjRkMzNkZGU5ZDc5ODkxMDI5NjIzMDE5MmZiZCAgZ2NjLTQuMy4wLTIwMDgwMzE0LnRh ci5iejIKKzExNWNlMWI3M2NjZTEyNDY0N2U5MTBiZDVkYTdmY2ZmICBnY2MtNC4zLjAtMjAwODAz MjYudGFyLmJ6MgogOTJhNzBmOWU1NjIyM2I2NTNiY2UwZjU4ZjkwY2Y5NTAgIGZhc3RqYXItMC45 NS50YXIuZ3oK