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.2-2 Date: Mon, 29 Jun 2026 12:23:55 GMT Message-ID: <178273583519.1.7177499469940161239.rpms-gcc-cd9cbfcd1406@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: cd9cbfcd140628213519f7975a29113ca3b43179 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogY2Q5Y2JmY2QxNDA2MjgyMTM1MTlmNzk3NWEyOTExM2Nh M2I0MzE3OQpBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkBmZWRvcmFwcm9qZWN0Lm9yZz4K RGF0ZSAgIDogMjAwOC0wOS0wNVQwODo0Mzo1NCswMDowMApTdGF0cyAgOiArNTcyLy0zNDU1IGlu IDE3IGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9n Y2MvYy9jZDljYmZjZDE0MDYyODIxMzUxOWY3OTc1YTI5MTEzY2EzYjQzMTc5P2JyYW5jaD1yaGVs LWY0MS1iYXNlCgpMb2c6CjQuMy4yLTIKCi0tLQpkaWZmIC0tZ2l0IGEvLmN2c2lnbm9yZSBiLy5j dnNpZ25vcmUKaW5kZXggMDQzNWFiMC4uOTcyMWE4OCAxMDA2NDQKLS0tIGEvLmN2c2lnbm9yZQor KysgYi8uY3ZzaWdub3JlCkBAIC0xLDIgKzEsMiBAQAotZ2NjLTQuMy4yLTIwMDgwODI5LnRhci5i ejIKK2djYy00LjMuMi0yMDA4MDkwNS50YXIuYnoyCiBmYXN0amFyLTAuOTUudGFyLmd6CgpkaWZm IC0tZ2l0IGEvZ2NjNDMtZm9ydHJhbi1kZWJ1ZzEucGF0Y2ggYi9nY2M0My1mb3J0cmFuLWRlYnVn MS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI3MThhNy4uMDAwMDAwMAot LS0gYS9nY2M0My1mb3J0cmFuLWRlYnVnMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDczOSAr MCwwIEBACi0yMDA4LTA1LTA3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLSAK LQlQUiBkZWJ1Zy8zNTg5NgotCSogZHdhcmYyb3V0LmMgKGR3X2V4cGFuZF9leHByLCBjb21tb25f Y2hlY2spOiBSZW1vdmVkLgotCShmb3J0cmFuX2NvbW1vbik6IE5ldyBmdW5jdGlvbi4KLQkoZ2Vu X3ZhcmlhYmxlX2RpZSk6IENhbGwgZm9ydHJhbl9jb21tb24gaW5zdGVhZCBvZiBjb21tb25fY2hl Y2ssCi0JYWRqdXN0IGZvciBpdCByZXR1cm5pbmcgdHJlZSBpbnN0ZWFkIG9mIHJ0eC4gIEZvcm1h dHRpbmcuCi0KLTIwMDgtMDQtMjYgIEdlb3JnZSBIZWxmZnJpY2ggIDxnZW9yZ2VAZ2NjLmdudS5v cmc+Ci0KLQlQUiBmb3J0cmFuLzM1ODkyCi0JUFIgZm9ydHJhbi8zNTE1NAotCSogdHJhbnMtY29t bW9uLmMgKGNyZWF0ZV9jb21tb24pOiAgQWRkIGRlY2wgdG8gZnVuY3Rpb24KLQljaGFpbiAoaWYg aW5zaWRlIG9uZSkgdG8gcHJlc2VydmUgaWRlbnRpZmllciBzY29wZSBpbiBkZWJ1ZyBvdXRwdXQu Ci0KLQkqIGdmb3J0cmFuLmRnL2RlYnVnL3ByMzUxNTQtc3RhYnMuZjogIE5ldyB0ZXN0IGNhc2Ug Zm9yCi0JLnN0YWJzIGZ1bmN0aW9uYWxpdHkuCi0JKiBnZm9ydHJhbi5kZy9kZWJ1Zy9wcjM1MTU0 LWR3YXJmMi5mOiAgTmV3IHRlc3QgY2FzZSBmb3IKLQlEV0FSRiBmdW5jdGlvbmFsaXR5LgotCi0y MDA4LTA0LTE4ICBKZXJyeSBEZUxpc2xlICA8anZkZWxpc2xlQGdjYy5nbnUub3JnPgotCi0JUFIg Zm9ydHJhbi8zNTcyNAotCSogdHJhbnMtY29tbW9uLmMgKGNyZWF0ZV9jb21tb24pOiBSZXZlcnQg cGF0Y2ggY2F1c2luZyByZWdyZXNzaW9uLgotCi0yMDA4LTA0LTAxICBHZW9yZ2UgSGVsZmZyaWNo ICA8Z2VvcmdlQGdjYy5nbnUub3JnPgotCi0JUFIgZm9ydHJhbi9QUjM1MTU0LCBmb3J0cmFuL1BS MjMwNTcKLQkqIGZvcnRyYW4vdHJhbnMtY29tbW9uLmMgKGNyZWF0ZV9jb21tb24pOiAgQWRkIGRl Y2wgdG8gZnVuY3Rpb24KLQljaGFpbiB0byBwcmVzZXJ2ZSBpZGVudGlmaWVyIHNjb3BlIGluIGRl YnVnIG91dHB1dC4KLQotCSogZGJ4b3V0LmM6IEVtaXQgLnN0YWJzIGRlYnVnIGluZm8gZm9yIEZv cnRyYW4gQ09NTU9OIGJsb2NrCi0JdmFyaWFibGVzIGFzIGJhc2Ugc3ltYm9sIG5hbWUgKyBvZmZz ZXQgdXNpbmcgTl9CQ09NTS9OX0VDT01NLgotCShpc19mb3J0cmFuLCBkYnhvdXRfY29tbW9uX25h bWUsIGRieG91dF9jb21tb25fY2hlY2spOiBOZXcgZnVuY3Rpb25zLgotCShkYnhvdXRfc3ltYm9s X2xvY2F0aW9uKTogVHJhbnNmb3JtIE5fTENTWU0gdG8gTl9HU1lNIGZvciBzdG9yYWdlCi0JaW4g Y29tbW9uLgotCShkYnhvdXRfc3ltcyk6IENoZWNrIGZvciBDT01NT04tYmFzZWQgc3ltYm9sIGFu ZCB3cmFwIGluCi0JTl9CQ09NTS9OX0VDT01NIHN0YWIgYnJhY2tldCwgaW5jbHVkaW5nIGFzIG1h bnkgc3ltYm9scyBhcyBwb3NzaWJsZQotCWluIGJyYWNrZXQgZm9yIGVmZmljaWVuY3kuCi0KLQkq IGR3YXJmMm91dC5jOiBFbWl0IERXQVJGIGRlYnVnIGluZm8gZm9yIEZvcnRyYW4gQ09NTU9OIGJs b2NrCi0JdXNpbmcgRFdfVEFHX2NvbW1vbl9ibG9jayArIG1lbWJlciBvZmZzZXQuCi0JKGFkZF9w dWJuYW1lX3N0cmluZyk6IE5ldyBmdW5jdGlvbi4KLQkoZHdfZXhwYW5kX2V4cHIpOiBOZXcgZnVu Y3Rpb24gdG8gZmluZCBibG9jayBuYW1lIGFuZCBvZmZzZXQgZm9yCi0JQ09NTU9OIHZhci4KLQko Y29tbW9uX2NoZWNrKTogTmV3IGZ1bmN0aW9uIHRvIGNoZWNrIHdoZXRoZXIgc3ltYm9sIGluIEZv cnRyYW4gQ09NTU9OLgotCShnZW5fdmFyaWFibGVfZGllKTogSWYgQ09NTU9OLCB1c2UgRFdfVEFH X2NvbW1vbl9ibG9jay4KLQotCSogdGVzdHN1aXRlL2djYy5kZy9kZWJ1Zy9wcjM1MTU0LmM6ICBO ZXcgdGVzdCB0byBjaGVjayB0aGF0IG5vbi1Gb3J0cmFuCi0JdXNlIG9mIGNvbW1vbiBpcyB1bmNo YW5nZWQuCi0KLQkqIHRlc3RzdWl0ZS9saWIvZ2ZvcnRyYW4tZGcuZXhwOiAgTmV3IGhhcm5lc3Mg dG8gY29tcGlsZSBGb3J0cmFuIHByb2dzCi0Jd2l0aCBhbGwgY29tYmluYXRpb25zIG9mIGRlYnVn IG9wdGlvbnMgYXZhaWxhYmxlIG9uIHRhcmdldC4KLQkqIHRlc3RzdWl0ZS9nZm9ydHJhbi5kZy9k ZWJ1Zy9kZWJ1Zy5leHA6ICBEaXR0by4KLQkqIHRlc3RzdWl0ZS9nZm9ydHJhbi5kZy9kZWJ1Zy90 cml2aWFsLmY6ICBEaXR0by4KLQotLS0tIGdjYy9kYnhvdXQuYwkocmV2aXNpb24gMTMzODAwKQot KysrIGdjYy9kYnhvdXQuYwkocmV2aXNpb24gMTMzODAxKQotQEAgLTMyMiwxMCArMzIyLDEzIEBA IHN0YXRpYyB2b2lkIGRieG91dF90eXBlX21ldGhvZHMgKHRyZWUpOwotIHN0YXRpYyB2b2lkIGRi eG91dF9yYW5nZV90eXBlICh0cmVlKTsKLSBzdGF0aWMgdm9pZCBkYnhvdXRfdHlwZSAodHJlZSwg aW50KTsKLSBzdGF0aWMgYm9vbCBwcmludF9pbnRfY3N0X2JvdW5kc19pbl9vY3RhbF9wICh0cmVl KTsKLStzdGF0aWMgYm9vbCBpc19mb3J0cmFuICh2b2lkKTsKLSBzdGF0aWMgdm9pZCBkYnhvdXRf dHlwZV9uYW1lICh0cmVlKTsKLSBzdGF0aWMgdm9pZCBkYnhvdXRfY2xhc3NfbmFtZV9xdWFsaWZp ZXJzICh0cmVlKTsKLSBzdGF0aWMgaW50IGRieG91dF9zeW1ib2xfbG9jYXRpb24gKHRyZWUsIHRy ZWUsIGNvbnN0IGNoYXIgKiwgcnR4KTsKLSBzdGF0aWMgdm9pZCBkYnhvdXRfc3ltYm9sX25hbWUg KHRyZWUsIGNvbnN0IGNoYXIgKiwgaW50KTsKLStzdGF0aWMgdm9pZCBkYnhvdXRfY29tbW9uX25h bWUgKHRyZWUsIGNvbnN0IGNoYXIgKiwgU1RBQl9DT0RFX1RZUEUpOwotK3N0YXRpYyBjb25zdCBj aGFyICpkYnhvdXRfY29tbW9uX2NoZWNrICh0cmVlLCBpbnQgKik7Ci0gc3RhdGljIHZvaWQgZGJ4 b3V0X2dsb2JhbF9kZWNsICh0cmVlKTsKLSBzdGF0aWMgdm9pZCBkYnhvdXRfdHlwZV9kZWNsICh0 cmVlLCBpbnQpOwotIHN0YXRpYyB2b2lkIGRieG91dF9oYW5kbGVfcGNoICh1bnNpZ25lZCk7Ci1A QCAtOTczLDYgKzk3NiwxNCBAQCBnZXRfbGFuZ19udW1iZXIgKHZvaWQpCi0gCi0gfQotIAotK3N0 YXRpYyBib29sCi0raXNfZm9ydHJhbiAodm9pZCkKLSt7Ci0rICAgdW5zaWduZWQgaW50IGxhbmcg PSBnZXRfbGFuZ19udW1iZXIgKCk7Ci0rCi0rICAgcmV0dXJuIChsYW5nID09IE5fU09fRk9SVFJB TikgfHwgKGxhbmcgPT0gTl9TT19GT1JUUkFOOTApOwotK30KLSsKLSAvKiBBdCB0aGUgYmVnaW5u aW5nIG9mIGNvbXBpbGF0aW9uLCBzdGFydCB3cml0aW5nIHRoZSBzeW1ib2wgdGFibGUuCi0gICAg SW5pdGlhbGl6ZSBgdHlwZXZlYycgYW5kIG91dHB1dCB0aGUgc3RhbmRhcmQgZGF0YSB0eXBlcyBv ZiBDLiAgKi8KLSAKLUBAIC0yODY4LDggKzI4NzksMTUgQEAgZGJ4b3V0X3N5bWJvbF9sb2NhdGlv biAodHJlZSBkZWNsLCB0cmVlIAotICAgICB7Ci0gICAgICAgaWYgKFRSRUVfUFVCTElDIChkZWNs KSkKLSAJewotKwkgIGludCBvZmZzOwotIAkgIGxldHRlciA9ICdHJzsKLSAJICBjb2RlID0gTl9H U1lNOwotKwkgIGlmIChOVUxMICE9IGRieG91dF9jb21tb25fY2hlY2sgKGRlY2wsICZvZmZzKSkK LSsJICAgIHsKLSsJICAgICAgbGV0dGVyID0gJ1YnOwotKwkgICAgICBhZGRyID0gMDsKLSsJICAg ICAgbnVtYmVyID0gb2ZmczsKLSsJICAgIH0KLSAJfQotICAgICAgIGVsc2UKLSAJewotQEAgLTI5 MTUsNyArMjkzMywxNyBAQCBkYnhvdXRfc3ltYm9sX2xvY2F0aW9uICh0cmVlIGRlY2wsIHRyZWUg Ci0gCSAgaWYgKERFQ0xfSU5JVElBTCAoZGVjbCkgPT0gMAotIAkgICAgICB8fCAoIXN0cmNtcCAo bGFuZ19ob29rcy5uYW1lLCAiR05VIEMrKyIpCi0gCQkgICYmIERFQ0xfSU5JVElBTCAoZGVjbCkg PT0gZXJyb3JfbWFya19ub2RlKSkKLS0JICAgIGNvZGUgPSBOX0xDU1lNOwotKwkgICAgewotKwkg ICAgICBpbnQgb2ZmczsKLSsJICAgICAgY29kZSA9IE5fTENTWU07Ci0rCSAgICAgIGlmIChOVUxM ICE9IGRieG91dF9jb21tb25fY2hlY2sgKGRlY2wsICZvZmZzKSkKLSsJICAgICAgICB7Ci0rCQkg IGFkZHIgPSAwOwotKwkJICBudW1iZXIgPSBvZmZzOwotKwkJICBsZXR0ZXIgPSAnVic7Ci0rCQkg IGNvZGUgPSBOX0dTWU07Ci0rCQl9Ci0rCSAgICB9Ci0gCSAgZWxzZSBpZiAoREVDTF9JTl9URVhU X1NFQ1RJT04gKGRlY2wpKQotIAkgICAgLyogVGhpcyBpcyBub3QgcXVpdGUgcmlnaHQsIGJ1dCBp dCdzIHRoZSBjbG9zZXN0Ci0gCSAgICAgICBvZiBhbGwgdGhlIGNvZGVzIHRoYXQgVW5peCBkZWZp bmVzLiAgKi8KLUBAIC0zMDA0LDkgKzMwMzIsMTcgQEAgZGJ4b3V0X3N5bWJvbF9sb2NhdGlvbiAo dHJlZSBkZWNsLCB0cmVlIAotIAkgdmFyaWFibGUsIHRoZXJlYnkgYXZvaWRpbmcgdGhlIG5lZWQg Zm9yIGEgcmVnaXN0ZXIuICBJbiBzdWNoCi0gCSBjYXNlcyB3ZSdyZSBmb3JjZWQgdG8gbGllIHRv IGRlYnVnZ2VycyBhbmQgdGVsbCB0aGVtIHRoYXQKLSAJIHRoaXMgdmFyaWFibGUgd2FzIGl0c2Vs ZiBgc3RhdGljJy4gICovCi0rICAgICAgaW50IG9mZnM7Ci0gICAgICAgY29kZSA9IE5fTENTWU07 Ci0gICAgICAgbGV0dGVyID0gJ1YnOwotLSAgICAgIGFkZHIgPSBYRVhQIChYRVhQIChob21lLCAw KSwgMCk7Ci0rICAgICAgaWYgKE5VTEwgPT0gZGJ4b3V0X2NvbW1vbl9jaGVjayAoZGVjbCwgJm9m ZnMpKQotKyAgICAgICAgYWRkciA9IFhFWFAgKFhFWFAgKGhvbWUsIDApLCAwKTsKLSsgICAgICBl bHNlCi0rICAgICAgICB7Ci0rCSAgYWRkciA9IDA7Ci0rCSAgbnVtYmVyID0gb2ZmczsKLSsJICBj b2RlID0gTl9HU1lNOwotKwl9Ci0gICAgIH0KLSAgIGVsc2UgaWYgKEdFVF9DT0RFIChob21lKSA9 PSBDT05DQVQpCi0gICAgIHsKLUBAIC0zMDkxLDYgKzMxMjcsMTE1IEBAIGRieG91dF9zeW1ib2xf bmFtZSAodHJlZSBkZWNsLCBjb25zdCBjaGEKLSAgICAgc3RhYnN0cl9DIChsZXR0ZXIpOwotIH0K LSAKLSsKLSsvKiBPdXRwdXQgdGhlIGNvbW1vbiBibG9jayBuYW1lIGZvciBERUNMIGluIGEgc3Rh YnMuCi0rCi0rICAgU3ltYm9scyBpbiBnbG9iYWwgY29tbW9uICguY29tbSkgZ2V0IHdyYXBwZWQg d2l0aCBhbiBOX0JDT01NL05fRUNPTU0gcGFpcgotKyAgIGFyb3VuZCBlYWNoIGdyb3VwIG9mIHN5 bWJvbHMgaW4gdGhlIHNhbWUgLmNvbW0gYXJlYS4gIFRoZSBOX0dTWU0gc3RhYnMKLSsgICB0aGF0 IGFyZSBlbWl0dGVkIG9ubHkgY29udGFpbiB0aGUgb2Zmc2V0IGluIHRoZSBjb21tb24gYXJlYS4g IFRoaXMgcm91dGluZQotKyAgIGVtaXRzIHRoZSBOX0JDT01NIGFuZCBOX0VDT01NIHN0YWJzLiAg Ki8KLSsKLStzdGF0aWMgdm9pZAotK2RieG91dF9jb21tb25fbmFtZSAodHJlZSBkZWNsLCBjb25z dCBjaGFyICpuYW1lLCBTVEFCX0NPREVfVFlQRSBvcCkKLSt7Ci0rICBkYnhvdXRfYmVnaW5fY29t cGxleF9zdGFicyAoKTsKLSsgIHN0YWJzdHJfUyAobmFtZSk7Ci0rICBkYnhvdXRfZmluaXNoX2Nv bXBsZXhfc3RhYnMgKGRlY2wsIG9wLCBOVUxMX1JUWCwgTlVMTCwgMCk7Ci0rfQotKwotKy8qIENo ZWNrIGRlY2wgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQgaXMgYSBWQVJfREVDTCBkZXN0aW5lZCBm b3Igc3RvcmFnZSBpbiBhCi0rICAgY29tbW9uIGFyZWEuICBJZiBpdCBpcywgdGhlIHJldHVybiB2 YWx1ZSB3aWxsIGJlIGEgbm9uLW51bGwgc3RyaW5nIGdpdmluZwotKyAgIHRoZSBuYW1lIG9mIHRo ZSBjb21tb24gc3RvcmFnZSBibG9jayBpdCB3aWxsIGdvIGludG8uICBJZiBub24tbnVsbCwgdGhl Ci0rICAgdmFsdWUgaXMgdGhlIG9mZnNldCBpbnRvIHRoZSBjb21tb24gYmxvY2sgZm9yIHRoYXQg c3ltYm9sJ3Mgc3RvcmFnZS4gICovCi0rCi0rc3RhdGljIGNvbnN0IGNoYXIgKgotK2RieG91dF9j b21tb25fY2hlY2sgKHRyZWUgZGVjbCwgaW50ICp2YWx1ZSkKLSt7Ci0rICBydHggaG9tZTsKLSsg IHJ0eCBzeW1fYWRkcjsKLSsgIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMOwotKyAgCi0rICAvKiBJ ZiB0aGUgZGVjbCBpc24ndCBhIFZBUl9ERUNMLCBvciBpZiBpdCBpc24ndCBwdWJsaWMgb3Igc3Rh dGljLCBvciBpZgotKyAgICAgaXQgZG9lcyBub3QgaGF2ZSBhIHZhbHVlICh0aGUgb2Zmc2V0IGlu dG8gdGhlIGNvbW1vbiBhcmVhKSwgb3IgaWYgaXQKLSsgICAgIGlzIHRocmVhZCBsb2NhbCAoYXMg b3Bwb3NlZCB0byBnbG9iYWwpIHRoZW4gaXQgaXNuJ3QgY29tbW9uLCBhbmQgc2hvdWxkbid0Ci0r ICAgICBiZSBoYW5kbGVkIGFzIHN1Y2guCi0rICAgICAKLSsgICAgID8/PyBERUNMX1RIUkVBRF9M T0NBTF9QIGNoZWNrIHByZXZlbnRzIHByb2JsZW1zIHdpdGggaW1wcm9wZXIgLnN0YWJzCi0rICAg ICBmb3IgdGhyZWFkLWxvY2FsIHN5bWJvbHMuICBDYW4gYmUgaGFuZGxlZCB2aWEgc2FtZSBtZWNo YW5pc20gYXMgdXNlZAotKyAgICAgaW4gZHdhcmYyb3V0LmMuICAqLwotKyAgaWYgKFRSRUVfQ09E RSAoZGVjbCkgIT0gVkFSX0RFQ0wKLSsgICAgICB8fCAhVFJFRV9QVUJMSUMoZGVjbCkKLSsgICAg ICB8fCAhVFJFRV9TVEFUSUMoZGVjbCkKLSsgICAgICB8fCAhREVDTF9IQVNfVkFMVUVfRVhQUl9Q KGRlY2wpCi0rICAgICAgfHwgREVDTF9USFJFQURfTE9DQUxfUCAoZGVjbCkKLSsgICAgICB8fCAh aXNfZm9ydHJhbiAoKSkKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICBob21lID0gREVDTF9SVEwg KGRlY2wpOyAKLSsgIGlmIChob21lID09IE5VTExfUlRYIHx8IEdFVF9DT0RFIChob21lKSAhPSBN RU0pCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgc3ltX2FkZHIgPSBkYnhvdXRfZXhwYW5kX2V4 cHIgKERFQ0xfVkFMVUVfRVhQUiAoZGVjbCkpOwotKyAgaWYgKHN5bV9hZGRyID09IE5VTExfUlRY IHx8IEdFVF9DT0RFIChzeW1fYWRkcikgIT0gTUVNKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsg IHN5bV9hZGRyID0gWEVYUCAoc3ltX2FkZHIsIDApOwotKyAgaWYgKEdFVF9DT0RFIChzeW1fYWRk cikgPT0gQ09OU1QpCi0rICAgIHN5bV9hZGRyID0gWEVYUCAoc3ltX2FkZHIsIDApOwotKyAgaWYg KChHRVRfQ09ERSAoc3ltX2FkZHIpID09IFNZTUJPTF9SRUYgfHwgR0VUX0NPREUgKHN5bV9hZGRy KSA9PSBQTFVTKQotKyAgICAgICYmIERFQ0xfSU5JVElBTCAoZGVjbCkgPT0gMCkKLSsgICAgewot KwotKyAgICAgIC8qIFdlIGhhdmUgYSBzeW0gdGhhdCB3aWxsIGdvIGludG8gYSBjb21tb24gYXJl YSwgbWVhbmluZyB0aGF0IGl0Ci0rICAgICAgICAgd2lsbCBnZXQgc3RvcmFnZSByZXNlcnZlZCB3 aXRoIGEgLmNvbW0vLmxjb21tIGFzc2VtYmxlciBwc2V1ZG8tb3AuCi0rCi0rICAgICAgICAgRGV0 ZXJtaW5lIG5hbWUgb2YgY29tbW9uIGFyZWEgdGhpcyBzeW1ib2wgd2lsbCBiZSBhbiBvZmZzZXQg aW50bywKLSsgICAgICAgICBhbmQgb2Zmc2V0IGludG8gdGhhdCBhcmVhLiAgQWxzbyByZXRyaWV2 ZSB0aGUgZGVjbCBmb3IgdGhlIGFyZWEKLSsgICAgICAgICB0aGF0IHRoZSBzeW1ib2wgaXMgb2Zm c2V0IGludG8uICAqLwotKyAgICAgIHRyZWUgY2RlY2wgPSBOVUxMOwotKwotKyAgICAgIHN3aXRj aCAoR0VUX0NPREUgKHN5bV9hZGRyKSkKLSsgICAgICAgIHsKLSsgICAgICAgIGNhc2UgUExVUzoK LSsgICAgICAgICAgaWYgKEdFVF9DT0RFIChYRVhQIChzeW1fYWRkciwgMCkpID09IENPTlNUX0lO VCkKLSsgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICBuYW1lID0KLSsgICAgICAgICAgICAg ICAgdGFyZ2V0bS5zdHJpcF9uYW1lX2VuY29kaW5nKFhTVFIgKFhFWFAgKHN5bV9hZGRyLCAxKSwg MCkpOwotKyAgICAgICAgICAgICAgKnZhbHVlID0gSU5UVkFMIChYRVhQIChzeW1fYWRkciwgMCkp OwotKyAgICAgICAgICAgICAgY2RlY2wgPSBTWU1CT0xfUkVGX0RFQ0wgKFhFWFAgKHN5bV9hZGRy LCAxKSk7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgewot KyAgICAgICAgICAgICAgbmFtZSA9Ci0rICAgICAgICAgICAgICAgIHRhcmdldG0uc3RyaXBfbmFt ZV9lbmNvZGluZyhYU1RSIChYRVhQIChzeW1fYWRkciwgMCksIDApKTsKLSsgICAgICAgICAgICAg ICp2YWx1ZSA9IElOVFZBTCAoWEVYUCAoc3ltX2FkZHIsIDEpKTsKLSsgICAgICAgICAgICAgIGNk ZWNsID0gU1lNQk9MX1JFRl9ERUNMIChYRVhQIChzeW1fYWRkciwgMCkpOwotKyAgICAgICAgICAg IH0KLSsgICAgICAgICAgYnJlYWs7Ci0rCi0rICAgICAgICBjYXNlIFNZTUJPTF9SRUY6Ci0rICAg ICAgICAgIG5hbWUgPSB0YXJnZXRtLnN0cmlwX25hbWVfZW5jb2RpbmcoWFNUUiAoc3ltX2FkZHIs IDApKTsKLSsgICAgICAgICAgKnZhbHVlID0gMDsKLSsgICAgICAgICAgY2RlY2wgPSBTWU1CT0xf UkVGX0RFQ0wgKHN5bV9hZGRyKTsKLSsgICAgICAgICAgYnJlYWs7Ci0rCi0rICAgICAgICBkZWZh dWx0OgotKyAgICAgICAgICBlcnJvciAoImNvbW1vbiBzeW1ib2wgZGVidWcgaW5mbyBpcyBub3Qg c3RydWN0dXJlZCBhcyAiCi0rICAgICAgICAgICAgICAgICAic3ltYm9sK29mZnNldCIpOwotKyAg ICAgICAgfQotKwotKyAgICAgIC8qIENoZWNrIGFyZWEgY29tbW9uIHN5bWJvbCBpcyBvZmZzZXQg aW50by4gIElmIHRoaXMgaXMgbm90IHB1YmxpYywgdGhlbgotKyAgICAgICAgIGl0IGlzIG5vdCBh IHN5bWJvbCBpbiBhIGNvbW1vbiBibG9jay4gIEl0IG11c3QgYmUgYSAubGNvbW0gc3ltYm9sLCBu b3QKLSsgICAgICAgICBhIC5jb21tIHN5bWJvbC4gICovCi0rICAgICAgaWYgKGNkZWNsID09IE5V TEwgfHwgIVRSRUVfUFVCTElDKGNkZWNsKSkKLSsgICAgICAgIG5hbWUgPSBOVUxMOwotKyAgICB9 Ci0rICBlbHNlCi0rICAgIG5hbWUgPSBOVUxMOwotKwotKyAgcmV0dXJuIG5hbWU7Ci0rfQotKwot IC8qIE91dHB1dCBkZWZpbml0aW9ucyBvZiBhbGwgdGhlIGRlY2xzIGluIGEgY2hhaW4uIFJldHVy biBub256ZXJvIGlmCi0gICAgYW55dGhpbmcgd2FzIG91dHB1dCAqLwotIAotQEAgLTMwOTgsMTEg KzMyNDMsMzggQEAgaW50Ci0gZGJ4b3V0X3N5bXMgKHRyZWUgc3ltcykKLSB7Ci0gICBpbnQgcmVz dWx0ID0gMDsKLSsgIGNvbnN0IGNoYXIgKmNvbW1fcHJldiA9IE5VTEw7Ci0rICB0cmVlIHN5bXNf cHJldiA9IE5VTEw7Ci0rCi0gICB3aGlsZSAoc3ltcykKLSAgICAgewotKyAgICAgIGludCB0ZW1w LCBjb3BlbiwgY2Nsb3M7Ci0rICAgICAgY29uc3QgY2hhciAqY29tbV9uZXc7Ci0rCi0rICAgICAg LyogQ2hlY2sgZm9yIGNvbW1vbiBzeW1ib2wsIGFuZCB0aGVuIHByb2dyZXNzaW9uIGludG8gYSBu ZXcvZGlmZmVyZW50Ci0rICAgICAgICAgYmxvY2sgb2YgY29tbW9uIHN5bWJvbHMuICBFbWl0IGNs b3Npbmcvb3BlbmluZyBjb21tb24gYnJhY2tldCBpZgotKyAgICAgICAgIG5lY2Vzc2FyeS4gICov Ci0rICAgICAgY29tbV9uZXcgPSBkYnhvdXRfY29tbW9uX2NoZWNrIChzeW1zLCAmdGVtcCk7Ci0r ICAgICAgY29wZW4gPSBjb21tX25ldyAhPSBOVUxMCi0rICAgICAgICAgICAgICAmJiAoY29tbV9w cmV2ID09IE5VTEwgfHwgc3RyY21wIChjb21tX25ldywgY29tbV9wcmV2KSk7Ci0rICAgICAgY2Ns b3MgPSBjb21tX3ByZXYgIT0gTlVMTAotKyAgICAgICAgICAgICAgJiYgKGNvbW1fbmV3ID09IE5V TEwgfHwgc3RyY21wIChjb21tX25ldywgY29tbV9wcmV2KSk7Ci0rICAgICAgaWYgKGNjbG9zKQot KyAgICAgICAgZGJ4b3V0X2NvbW1vbl9uYW1lIChzeW1zX3ByZXYsIGNvbW1fcHJldiwgTl9FQ09N TSk7Ci0rICAgICAgaWYgKGNvcGVuKQotKyAgICAgICAgewotKyAgICAgICAgICBkYnhvdXRfY29t bW9uX25hbWUgKHN5bXMsIGNvbW1fbmV3LCBOX0JDT01NKTsKLSsgICAgICAgICAgc3ltc19wcmV2 ID0gc3ltczsKLSsgICAgICAgIH0KLSsgICAgICBjb21tX3ByZXYgPSBjb21tX25ldzsKLSsKLSAg ICAgICByZXN1bHQgKz0gZGJ4b3V0X3N5bWJvbCAoc3ltcywgMSk7Ci0gICAgICAgc3ltcyA9IFRS RUVfQ0hBSU4gKHN5bXMpOwotICAgICB9Ci0rCi0rICBpZiAoY29tbV9wcmV2ICE9IE5VTEwpCi0r ICAgIGRieG91dF9jb21tb25fbmFtZSAoc3ltc19wcmV2LCBjb21tX3ByZXYsIE5fRUNPTU0pOwot KwotICAgcmV0dXJuIHJlc3VsdDsKLSB9Ci0gDAotLS0tIGdjYy9kd2FyZjJvdXQuYwkocmV2aXNp b24gMTMzODAwKQotKysrIGdjYy9kd2FyZjJvdXQuYwkocmV2aXNpb24gMTMzODAxKQotQEAgLTQ0 MjksNiArNDQyOSw3IEBAIHN0YXRpYyB2b2lkIG91dHB1dF9jb21waWxhdGlvbl91bml0X2hlYWQK LSBzdGF0aWMgdm9pZCBvdXRwdXRfY29tcF91bml0IChkd19kaWVfcmVmLCBpbnQpOwotIHN0YXRp YyBjb25zdCBjaGFyICpkd2FyZjJfbmFtZSAodHJlZSwgaW50KTsKLSBzdGF0aWMgdm9pZCBhZGRf cHVibmFtZSAodHJlZSwgZHdfZGllX3JlZik7Ci0rc3RhdGljIHZvaWQgYWRkX3B1Ym5hbWVfc3Ry aW5nIChjb25zdCBjaGFyICosIGR3X2RpZV9yZWYpOwotIHN0YXRpYyB2b2lkIGFkZF9wdWJ0eXBl ICh0cmVlLCBkd19kaWVfcmVmKTsKLSBzdGF0aWMgdm9pZCBvdXRwdXRfcHVibmFtZXMgKFZFQyAo cHVibmFtZV9lbnRyeSxnYykgKik7Ci0gc3RhdGljIHZvaWQgYWRkX2FyYW5nZSAodHJlZSwgZHdf ZGllX3JlZik7Ci1AQCAtNzY1OSwxOCArNzY2MCwyMyBAQCBkd2FyZjJfbmFtZSAodHJlZSBkZWNs LCBpbnQgc2NvcGUpCi0gLyogQWRkIGEgbmV3IGVudHJ5IHRvIC5kZWJ1Z19wdWJuYW1lcyBpZiBh cHByb3ByaWF0ZS4gICovCi0gCi0gc3RhdGljIHZvaWQKLS1hZGRfcHVibmFtZSAodHJlZSBkZWNs LCBkd19kaWVfcmVmIGRpZSkKLSthZGRfcHVibmFtZV9zdHJpbmcgKGNvbnN0IGNoYXIgKnN0ciwg ZHdfZGllX3JlZiBkaWUpCi0gewotICAgcHVibmFtZV9lbnRyeSBlOwotIAotLSAgaWYgKCEgVFJF RV9QVUJMSUMgKGRlY2wpKQotLSAgICByZXR1cm47Ci0tCi0gICBlLmRpZSA9IGRpZTsKLS0gIGUu bmFtZSA9IHhzdHJkdXAgKGR3YXJmMl9uYW1lIChkZWNsLCAxKSk7Ci0rICBlLm5hbWUgPSB4c3Ry ZHVwIChzdHIpOwotICAgVkVDX3NhZmVfcHVzaCAocHVibmFtZV9lbnRyeSwgZ2MsIHB1Ym5hbWVf dGFibGUsICZlKTsKLSB9Ci0gCi0rc3RhdGljIHZvaWQKLSthZGRfcHVibmFtZSAodHJlZSBkZWNs LCBkd19kaWVfcmVmIGRpZSkKLSt7Ci0rCi0rICBpZiAoVFJFRV9QVUJMSUMgKGRlY2wpKQotKyAg ICBhZGRfcHVibmFtZV9zdHJpbmcgKGR3YXJmMl9uYW1lIChkZWNsLCAxKSwgZGllKTsKLSt9Ci0r Ci0gLyogQWRkIGEgbmV3IGVudHJ5IHRvIC5kZWJ1Z19wdWJ0eXBlcyBpZiBhcHByb3ByaWF0ZS4g ICovCi0gCi0gc3RhdGljIHZvaWQKLUBAIC0xMDkxNCw2ICsxMDkyMCw1NyBAQCBzZWNuYW1lX2Zv cl9kZWNsIChjb25zdF90cmVlIGRlY2wpCi0gICByZXR1cm4gc2VjbmFtZTsKLSB9Ci0gCi0rLyog Q2hlY2sgd2hldGhlciBkZWNsIGlzIGEgRm9ydHJhbiBDT01NT04gc3ltYm9sLiAgSWYgbm90LCBO VUxMX1JUWCBpcyByZXR1cm5lZC4KLSsgICBJZiBzbywgdGhlIHJ0eCBmb3IgdGhlIFNZTUJPTF9S RUYgZm9yIHRoZSBDT01NT04gYmxvY2sgaXMgcmV0dXJuZWQsIGFuZCB0aGUKLSsgICB2YWx1ZSBp cyB0aGUgb2Zmc2V0IGludG8gdGhlIGNvbW1vbiBibG9jayBmb3IgdGhlIHN5bWJvbC4gICovCi0r Ci0rc3RhdGljIHRyZWUKLStmb3J0cmFuX2NvbW1vbiAodHJlZSBkZWNsLCBIT1NUX1dJREVfSU5U ICp2YWx1ZSkKLSt7Ci0rICB0cmVlIHZhbF9leHByLCBjdmFyOwotKyAgZW51bSBtYWNoaW5lX21v ZGUgbW9kZTsKLSsgIEhPU1RfV0lERV9JTlQgYml0c2l6ZSwgYml0cG9zOwotKyAgdHJlZSBvZmZz ZXQ7Ci0rICBpbnQgdm9sYXRpbGVwID0gMCwgdW5zaWduZWRwID0gMDsKLSsKLSsgIC8qIElmIHRo ZSBkZWNsIGlzbid0IGEgVkFSX0RFQ0wsIG9yIGlmIGl0IGlzbid0IHB1YmxpYyBvciBzdGF0aWMs IG9yIGlmCi0rICAgICBpdCBkb2VzIG5vdCBoYXZlIGEgdmFsdWUgKHRoZSBvZmZzZXQgaW50byB0 aGUgY29tbW9uIGFyZWEpLCBvciBpZiBpdAotKyAgICAgaXMgdGhyZWFkIGxvY2FsIChhcyBvcHBv c2VkIHRvIGdsb2JhbCkgdGhlbiBpdCBpc24ndCBjb21tb24sIGFuZCBzaG91bGRuJ3QKLSsgICAg IGJlIGhhbmRsZWQgYXMgc3VjaC4gICovCi0rICBpZiAoVFJFRV9DT0RFIChkZWNsKSAhPSBWQVJf REVDTAotKyAgICAgIHx8ICFUUkVFX1BVQkxJQyAoZGVjbCkKLSsgICAgICB8fCAhVFJFRV9TVEFU SUMgKGRlY2wpCi0rICAgICAgfHwgIURFQ0xfSEFTX1ZBTFVFX0VYUFJfUCAoZGVjbCkKLSsgICAg ICB8fCAhaXNfZm9ydHJhbiAoKSkKLSsgICAgcmV0dXJuIE5VTExfVFJFRTsKLSsKLSsgIHZhbF9l eHByID0gREVDTF9WQUxVRV9FWFBSIChkZWNsKTsKLSsgIGlmIChUUkVFX0NPREUgKHZhbF9leHBy KSAhPSBDT01QT05FTlRfUkVGKQotKyAgICByZXR1cm4gTlVMTF9UUkVFOwotKwotKyAgY3ZhciA9 IGdldF9pbm5lcl9yZWZlcmVuY2UgKHZhbF9leHByLCAmYml0c2l6ZSwgJmJpdHBvcywgJm9mZnNl dCwKLSsJCQkgICAgICAmbW9kZSwgJnVuc2lnbmVkcCwgJnZvbGF0aWxlcCwgdHJ1ZSk7Ci0rCi0r ICBpZiAoY3ZhciA9PSBOVUxMX1RSRUUKLSsgICAgICB8fCBUUkVFX0NPREUgKGN2YXIpICE9IFZB Ul9ERUNMCi0rICAgICAgfHwgREVDTF9BUlRJRklDSUFMIChjdmFyKQotKyAgICAgIHx8ICFUUkVF X1BVQkxJQyAoY3ZhcikpCi0rICAgIHJldHVybiBOVUxMX1RSRUU7Ci0rCi0rICAqdmFsdWUgPSAw OwotKyAgaWYgKG9mZnNldCAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgaWYgKCFob3N0X2ludGVn ZXJwIChvZmZzZXQsIDApKQotKwlyZXR1cm4gTlVMTF9UUkVFOwotKyAgICAgICp2YWx1ZSA9IHRy ZWVfbG93X2NzdCAob2Zmc2V0LCAwKTsKLSsgICAgfQotKyAgaWYgKGJpdHBvcyAhPSAwKQotKyAg ICAqdmFsdWUgKz0gYml0cG9zIC8gQklUU19QRVJfVU5JVDsKLSsKLSsgIHJldHVybiBjdmFyOwot K30KLSsKLSsKLSAvKiBHZW5lcmF0ZSAqZWl0aGVyKiBhIERXX0FUX2xvY2F0aW9uIGF0dHJpYnV0 ZSBvciBlbHNlIGEgRFdfQVRfY29uc3RfdmFsdWUKLSAgICBkYXRhIGF0dHJpYnV0ZSBmb3IgYSB2 YXJpYWJsZSBvciBhIHBhcmFtZXRlci4gIFdlIGdlbmVyYXRlIHRoZQotICAgIERXX0FUX2NvbnN0 X3ZhbHVlIGF0dHJpYnV0ZSBvbmx5IGluIHRob3NlIGNhc2VzIHdoZXJlIHRoZSBnaXZlbiB2YXJp YWJsZQotQEAgLTEyODExLDkgKzEyODY4LDEwIEBAIGdlbl9zdWJwcm9ncmFtX2RpZSAodHJlZSBk ZWNsLCBkd19kaWVfcmUKLSBzdGF0aWMgdm9pZAotIGdlbl92YXJpYWJsZV9kaWUgKHRyZWUgZGVj bCwgZHdfZGllX3JlZiBjb250ZXh0X2RpZSkKLSB7Ci0rICBIT1NUX1dJREVfSU5UIG9mZjsKLSsg IHRyZWUgY29tX2RlY2w7Ci0rICBkd19kaWVfcmVmIHZhcl9kaWU7Ci0gICB0cmVlIG9yaWdpbiA9 IGRlY2xfdWx0aW1hdGVfb3JpZ2luIChkZWNsKTsKLS0gIGR3X2RpZV9yZWYgdmFyX2RpZSA9IG5l d19kaWUgKERXX1RBR192YXJpYWJsZSwgY29udGV4dF9kaWUsIGRlY2wpOwotLQotICAgZHdfZGll X3JlZiBvbGRfZGllID0gbG9va3VwX2RlY2xfZGllIChkZWNsKTsKLSAgIGludCBkZWNsYXJhdGlv biA9IChERUNMX0VYVEVSTkFMIChkZWNsKQotIAkJICAgICAvKiBJZiBERUNMIGlzIENPTURBVCBh bmQgaGFzIG5vdCBhY3R1YWxseSBiZWVuCi1AQCAtMTI4MzcsNiArMTI4OTUsMzcgQEAgZ2VuX3Zh cmlhYmxlX2RpZSAodHJlZSBkZWNsLCBkd19kaWVfcmVmIAotIAkJCSAmJiBERUNMX0NPTURBVCAo ZGVjbCkgJiYgIVRSRUVfQVNNX1dSSVRURU4gKGRlY2wpKQotIAkJICAgICB8fCBjbGFzc19vcl9u YW1lc3BhY2Vfc2NvcGVfcCAoY29udGV4dF9kaWUpKTsKLSAKLSsgIGNvbV9kZWNsID0gZm9ydHJh bl9jb21tb24gKGRlY2wsICZvZmYpOwotKwotKyAgLyogU3ltYm9sIGluIGNvbW1vbiBnZXRzIGVt aXR0ZWQgYXMgYSBjaGlsZCBvZiB0aGUgY29tbW9uIGJsb2NrLCBpbiB0aGUgZm9ybQotKyAgICAg b2YgYSBkYXRhIG1lbWJlci4KLSsKLSsgICAgID8/PyBUaGlzIGNyZWF0ZXMgYSBuZXcgY29tbW9u IGJsb2NrIGRpZSBmb3IgZXZlcnkgY29tbW9uIGJsb2NrIHN5bWJvbC4KLSsgICAgIEJldHRlciB0 byBzaGFyZSBzYW1lIGNvbW1vbiBibG9jayBkaWUgZm9yIGFsbCBzeW1ib2xzIGluIHRoYXQgYmxv Y2suICAqLwotKyAgaWYgKGNvbV9kZWNsKQotKyAgICB7Ci0rICAgICAgdHJlZSBmaWVsZDsKLSsg ICAgICBkd19kaWVfcmVmIGNvbV9kaWU7Ci0rICAgICAgY29uc3QgY2hhciAqY25hbSA9IElERU5U SUZJRVJfUE9JTlRFUiAoREVDTF9BU1NFTUJMRVJfTkFNRSAoY29tX2RlY2wpKTsKLSsgICAgICBk d19sb2NfZGVzY3JfcmVmIGxvYyA9IGxvY19kZXNjcmlwdG9yX2Zyb21fdHJlZSAoY29tX2RlY2wp OwotKwotKyAgICAgIGZpZWxkID0gVFJFRV9PUEVSQU5EIChERUNMX1ZBTFVFX0VYUFIgKGRlY2wp LCAwKTsKLSsgICAgICB2YXJfZGllID0gbmV3X2RpZSAoRFdfVEFHX2NvbW1vbl9ibG9jaywgY29u dGV4dF9kaWUsIGRlY2wpOwotKyAgICAgIGFkZF9uYW1lX2FuZF9zcmNfY29vcmRzX2F0dHJpYnV0 ZXMgKHZhcl9kaWUsIGZpZWxkKTsKLSsgICAgICBhZGRfQVRfZmxhZyAodmFyX2RpZSwgRFdfQVRf ZXh0ZXJuYWwsIDEpOwotKyAgICAgIGFkZF9BVF9sb2MgKHZhcl9kaWUsIERXX0FUX2xvY2F0aW9u LCBsb2MpOwotKyAgICAgIGNvbV9kaWUgPSBuZXdfZGllIChEV19UQUdfbWVtYmVyLCB2YXJfZGll LCBkZWNsKTsKLSsgICAgICBhZGRfbmFtZV9hbmRfc3JjX2Nvb3Jkc19hdHRyaWJ1dGVzIChjb21f ZGllLCBkZWNsKTsKLSsgICAgICBhZGRfdHlwZV9hdHRyaWJ1dGUgKGNvbV9kaWUsIFRSRUVfVFlQ RSAoZGVjbCksIFRSRUVfUkVBRE9OTFkgKGRlY2wpLAotKwkJCSAgVFJFRV9USElTX1ZPTEFUSUxF IChkZWNsKSwgY29udGV4dF9kaWUpOwotKyAgICAgIGFkZF9BVF9sb2MgKGNvbV9kaWUsIERXX0FU X2RhdGFfbWVtYmVyX2xvY2F0aW9uLAotKwkJICBpbnRfbG9jX2Rlc2NyaXB0b3IgKG9mZikpOwot KyAgICAgIGFkZF9wdWJuYW1lX3N0cmluZyAoY25hbSwgdmFyX2RpZSk7IC8qID8/PyBuZWVkZWQ/ ICovCi0rICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0rICB2YXJfZGllID0gbmV3X2RpZSAoRFdf VEFHX3ZhcmlhYmxlLCBjb250ZXh0X2RpZSwgZGVjbCk7Ci0rCi0gICBpZiAob3JpZ2luICE9IE5V TEwpCi0gICAgIGFkZF9hYnN0cmFjdF9vcmlnaW5fYXR0cmlidXRlICh2YXJfZGllLCBvcmlnaW4p OwotIAotQEAgLTEzODEyLDggKzEzOTAxLDEzIEBAIGRlY2xzX2Zvcl9zY29wZSAodHJlZSBzdG10 LCBkd19kaWVfcmVmIGMKLSAJICAgIGFkZF9jaGlsZF9kaWUgKGNvbnRleHRfZGllLCBkaWUpOwot IAkgIC8qIERvIG5vdCBwcm9kdWNlIGRlYnVnIGluZm9ybWF0aW9uIGZvciBzdGF0aWMgdmFyaWFi bGVzIHNpbmNlCi0gCSAgICAgdGhlc2UgbWlnaHQgYmUgb3B0aW1pemVkIG91dC4gIFdlIGFyZSBj YWxsZWQgZm9yIHRoZXNlIGxhdGVyCi0tCSAgICAgaW4gdmFycG9vbF9hbmFseXplX3BlbmRpbmdf ZGVjbHMuICovCi0tCSAgaWYgKFRSRUVfQ09ERSAoZGVjbCkgPT0gVkFSX0RFQ0wgJiYgVFJFRV9T VEFUSUMgKGRlY2wpKQotKwkgICAgIGluIHZhcnBvb2xfYW5hbHl6ZV9wZW5kaW5nX2RlY2xzLgot KwotKwkgICAgIEJ1dCAqZG8qIHByb2R1Y2UgaXQgZm9yIEZvcnRyYW4gQ09NTU9OIHZhcmlhYmxl cyBiZWNhdXNlLAotKwkgICAgIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIHN0YXRpYywgdGhlaXIgbmFt ZXMgY2FuIGRpZmZlciBkZXBlbmRpbmcKLSsJICAgICBvbiB0aGUgc2NvcGUsIHdoaWNoIHdlIG5l ZWQgdG8gcHJlc2VydmUuICAqLwotKwkgIGlmIChUUkVFX0NPREUgKGRlY2wpID09IFZBUl9ERUNM ICYmIFRSRUVfU1RBVElDIChkZWNsKQotKwkgICAgICAmJiAhKGlzX2ZvcnRyYW4gKCkgJiYgVFJF RV9QVUJMSUMgKGRlY2wpKSkKLSAJICAgIDsKLSAJICBlbHNlCi0gCSAgICBnZW5fZGVjbF9kaWUg KGRlY2wsIGNvbnRleHRfZGllKTsKLUBAIC0xNDEzNyw2ICsxNDIzMSwxNiBAQCBnZW5fZGVjbF9k aWUgKHRyZWUgZGVjbCwgZHdfZGllX3JlZiBjb250Ci0gICAgICAgaWYgKGRlYnVnX2luZm9fbGV2 ZWwgPD0gRElORk9fTEVWRUxfVEVSU0UpCi0gCWJyZWFrOwotIAotKyAgICAgIC8qIElmIHRoaXMg aXMgdGhlIGdsb2JhbCBkZWZpbml0aW9uIG9mIHRoZSBGb3J0cmFuIENPTU1PTiBibG9jaywgd2Ug ZG9uJ3QKLSsgICAgICAgICBuZWVkIHRvIGRvIGFueXRoaW5nLiAgU3ludGFjdGljYWxseSwgdGhl IGJsb2NrIGl0c2VsZiBoYXMgbm8gaWRlbnRpdHksCi0rICAgICAgICAganVzdCBpdHMgY29uc3Rp dHVlbnQgaWRlbnRpZmllcnMuICAqLwotKyAgICAgIGlmIChUUkVFX0NPREUgKGRlY2wpID09IFZB Ul9ERUNMCi0rICAgICAgICAgICYmIFRSRUVfUFVCTElDIChkZWNsKQotKyAgICAgICAgICAmJiBU UkVFX1NUQVRJQyAoZGVjbCkKLSsgICAgICAgICAgJiYgaXNfZm9ydHJhbiAoKQotKyAgICAgICAg ICAmJiAhREVDTF9IQVNfVkFMVUVfRVhQUl9QIChkZWNsKSkKLSsgICAgICAgIGJyZWFrOwotKwot ICAgICAgIC8qIE91dHB1dCBhbnkgRElFcyB0aGF0IGFyZSBuZWVkZWQgdG8gc3BlY2lmeSB0aGUg dHlwZSBvZiB0aGlzIGRhdGEKLSAJIG9iamVjdC4gICovCi0gICAgICAgaWYgKFRSRUVfQ09ERSAo ZGVjbCkgPT0gUkVTVUxUX0RFQ0wgJiYgREVDTF9CWV9SRUZFUkVOQ0UgKGRlY2wpKQotQEAgLTE0 MjAzLDcgKzE0MzA3LDE1IEBAIGR3YXJmMm91dF9nbG9iYWxfZGVjbCAodHJlZSBkZWNsKQotICAg LyogT3V0cHV0IERXQVJGMiBpbmZvcm1hdGlvbiBmb3IgZmlsZS1zY29wZSB0ZW50YXRpdmUgZGF0 YSBvYmplY3QKLSAgICAgIGRlY2xhcmF0aW9ucywgZmlsZS1zY29wZSAoZXh0ZXJuKSBmdW5jdGlv biBkZWNsYXJhdGlvbnMgKHdoaWNoIGhhZCBubwotICAgICAgY29ycmVzcG9uZGluZyBib2R5KSBh bmQgZmlsZS1zY29wZSB0YWdnZWQgdHlwZSBkZWNsYXJhdGlvbnMgYW5kCi0tICAgICBkZWZpbml0 aW9ucyB3aGljaCBoYXZlIG5vdCB5ZXQgYmVlbiBmb3JjZWQgb3V0LiAgKi8KLSsgICAgIGRlZmlu aXRpb25zIHdoaWNoIGhhdmUgbm90IHlldCBiZWVuIGZvcmNlZCBvdXQuCi0rCi0rICAgICBJZ25v cmUgdGhlIGdsb2JhbCBkZWNsIG9mIGFueSBGb3J0cmFuIENPTU1PTiBibG9ja3Mgd2hpY2ggYWxz byB3aW5kIHVwIGhlcmUKLSsgICAgIHRob3VnaCB0aGV5IGhhdmUgYWxyZWFkeSBiZWVuIGRlc2Ny aWJlZCBpbiB0aGUgbG9jYWwgc2NvcGUgZm9yIHRoZSAKLSsgICAgIHByb2NlZHVyZXMgdXNpbmcg dGhlbS4gICovCi0rICBpZiAoVFJFRV9DT0RFIChkZWNsKSA9PSBWQVJfREVDTAotKyAgICAgICYm IFRSRUVfUFVCTElDIChkZWNsKSAmJiBUUkVFX1NUQVRJQyAoZGVjbCkgJiYgaXNfZm9ydHJhbiAo KSkKLSsgICAgcmV0dXJuOwotKwotICAgaWYgKFRSRUVfQ09ERSAoZGVjbCkgIT0gRlVOQ1RJT05f REVDTCB8fCAhREVDTF9JTklUSUFMIChkZWNsKSkKLSAgICAgZHdhcmYyb3V0X2RlY2wgKGRlY2wp OwotIH0KLS0tLSBnY2MvZm9ydHJhbi90cmFucy1jb21tb24uYwkocmV2aXNpb24gMTM0Njk1KQot KysrIGdjYy9mb3J0cmFuL3RyYW5zLWNvbW1vbi5jCShyZXZpc2lvbiAxMzQ2OTYpCi1AQCAtNjg3 LDcgKzY4NywxMSBAQCBjcmVhdGVfY29tbW9uIChnZmNfY29tbW9uX2hlYWQgKmNvbSwgc2VnCi0g ICAgICAgLyogVGhpcyBpcyBhIGZha2UgdmFyaWFibGUganVzdCBmb3IgZGVidWdnaW5nIHB1cnBv c2VzLiAgKi8KLSAgICAgICBUUkVFX0FTTV9XUklUVEVOICh2YXJfZGVjbCkgPSAxOwotIAotLSAg ICAgIGlmIChjb20pCi0rICAgICAgLyogVG8gcHJlc2VydmUgaWRlbnRpZmllciBuYW1lcyBpbiBD T01NT04sIGNoYWluIHRvIHByb2NlZHVyZQotKwkgc2NvcGUgdW5sZXNzIGF0IHRvcCBsZXZlbCBp biBhIG1vZHVsZSBkZWZpbml0aW9uLiAgKi8KLSsgICAgICBpZiAoY29tCi0rCSAgJiYgcy0+c3lt LT5ucy0+cHJvY19uYW1lCi0rCSAgJiYgcy0+c3ltLT5ucy0+cHJvY19uYW1lLT5hdHRyLmZsYXZv ciA9PSBGTF9NT0RVTEUpCi0gCXZhcl9kZWNsID0gcHVzaGRlY2xfdG9wX2xldmVsICh2YXJfZGVj bCk7Ci0gICAgICAgZWxzZQotIAlnZmNfYWRkX2RlY2xfdG9fZnVuY3Rpb24gKHZhcl9kZWNsKTsK LS0tLSBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2RlYnVnL3ByMzUxNTQtc3RhYnMuZgkocmV2 aXNpb24gMCkKLSsrKyBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2RlYnVnL3ByMzUxNTQtc3Rh YnMuZgkocmV2aXNpb24gMTM0Njk2KQotQEAgLTAsMCArMSwzNSBAQAotK0MgICAgIFRlc3QgcHJv Z3JhbSBmb3IgY29tbW9uIGJsb2NrIGRlYnVnZ2luZy4gIEcuIEhlbGZmcmljaCAxMSBKdWx5IDIw MDQuCi0rQyB7IGRnLWRvIGNvbXBpbGUgfQotK0MgeyBkZy1za2lwLWlmICJObyBzdGFicyIgeyBt bWl4LSotKiAqLSotbmV0d2FyZSogYWxwaGEqLSotKiBocHBhKjY0Ki0qLSogaWE2NC0qLSogKi0q LXN5c3Y1KiAqLSotdnh3b3JrcyogfSB7ICIqIiB9IHsgIiIgfSB9Ci0rQyB7IGRnLXNraXAtaWYg Ik5vIHN0YWJzIiB7Ki0qLSogfSB7ICIqIiB9IHsgIi1nc3RhYnMiIH0gfQotKyAgICAgIGNvbW1v biBpLGoKLSsgICAgICBjb21tb24gL2xhYmVsL2wsbQotKyAgICAgIGkgPSAxCi0rICAgICAgaiA9 IDIKLSsgICAgICBrID0gMwotKyAgICAgIGwgPSA0Ci0rICAgICAgbSA9IDUKLSsgICAgICBjYWxs IHN1YgotKyAgICAgIGVuZAotKyAgICAgIHN1YnJvdXRpbmUgc3ViCi0rICAgICAgY29tbW9uIC9s YWJlbC9sLG0KLSsgICAgICBsb2dpY2FsIGZpcnN0Ci0rICAgICAgc2F2ZSBuCi0rICAgICAgZGF0 YSBmaXJzdCAvLnRydWUuLwotKyAgICAgIGlmIChmaXJzdCkgdGhlbgotKyAgICAgICAgIG4gPSAw Ci0rCSBmaXJzdCA9IC5mYWxzZS4KLSsgICAgICBlbmRpZgotKyAgICAgIG4gPSBuICsgMQotKyAg ICAgIGwgPSBsICsgMQotKyAgICAgIHJldHVybgotKyAgICAgIGVuZAotKwotK0MgeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICIuc3RhYnMuKlwiX19CTE5LX19cIiwyMjYiIH0gfQotK0MgeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICIuc3RhYnMuKlwiaTpWLipcIiwuKiwwIiB9IH0KLStD IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiLnN0YWJzLipcImo6Vi4qXCIsLiosNCIgfSB9 Ci0rQyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIi5zdGFicy4qXCJfX0JMTktfX1wiLDIy OCIgfSB9Ci0rQyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIi5zdGFicy4qXCJsYWJlbF9c IiwyMjYiIH0gfQotK0MgeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICIuc3RhYnMuKlwibDpW LipcIiwuKiwwIiB9IH0KLStDIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiLnN0YWJzLipc Im06Vi4qXCIsLiosNCIgfSB9Ci0rQyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIi5zdGFi cy4qXCJsYWJlbF9cIiwyMjgiIH0gfQotLS0tIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZGVi dWcvcHIzNTE1NC1kd2FyZjIuZgkocmV2aXNpb24gMCkKLSsrKyBnY2MvdGVzdHN1aXRlL2dmb3J0 cmFuLmRnL2RlYnVnL3ByMzUxNTQtZHdhcmYyLmYJKHJldmlzaW9uIDEzNDY5NikKLUBAIC0wLDAg KzEsMzcgQEAKLStDICAgICBUZXN0IHByb2dyYW0gZm9yIGNvbW1vbiBibG9jayBkZWJ1Z2dpbmcu ICBHLiBIZWxmZnJpY2ggMTEgSnVseSAyMDA0LgotK0MgeyBkZy1kbyBjb21waWxlIH0KLStDIHsg ZGctc2tpcC1pZiAiRFdBUkYtMiBvbmx5IiB7ICIqLSotKiIgfSB7ICIqIiB9IHsgIi1nZHdhcmYt MiIgfSB9Ci0rQyB7IGRnLW9wdGlvbnMgIi1kQSIgfQotKyAgICAgIGNvbW1vbiBpLGoKLSsgICAg ICBjb21tb24gL2xhYmVsL2wsbQotKyAgICAgIGkgPSAxCi0rICAgICAgaiA9IDIKLSsgICAgICBr ID0gMwotKyAgICAgIGwgPSA0Ci0rICAgICAgbSA9IDUKLSsgICAgICBjYWxsIHN1YgotKyAgICAg IGVuZAotKyAgICAgIHN1YnJvdXRpbmUgc3ViCi0rICAgICAgY29tbW9uIC9sYWJlbC9sLG0KLSsg ICAgICBsb2dpY2FsIGZpcnN0Ci0rICAgICAgc2F2ZSBuCi0rICAgICAgZGF0YSBmaXJzdCAvLnRy dWUuLwotKyAgICAgIGlmIChmaXJzdCkgdGhlbgotKyAgICAgICAgIG4gPSAwCi0rCSBmaXJzdCA9 IC5mYWxzZS4KLSsgICAgICBlbmRpZgotKyAgICAgIG4gPSBuICsgMQotKyAgICAgIGwgPSBsICsg MQotKyAgICAgIHJldHVybgotKyAgICAgIGVuZAotKwotK0MgeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyICIoRElFLipEV19UQUdfY29tbW9uX2Jsb2NrKSIgfSB9Ci0rQyB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXIgIkRXX0FUX25hbWU6IFwiX19CTE5LX19cIiIgfSB9Ci0rQyB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXIgIihESUUuKkRXX1RBR19tZW1iZXIpIiB9IH0KLStDIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiXCJpLipcIi4qRFdfQVRfbmFtZSIgfSB9Ci0rQyB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIlwiai4qXCIuKkRXX0FUX25hbWUiIH0gfQotK0MgeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICIoRElFLipEV19UQUdfY29tbW9uX2Jsb2NrKSIgfSB9 Ci0rQyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIkRXX0FUX25hbWU6IFwibGFiZWxcIiIg fSB9Ci0rQyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIihESUUuKkRXX1RBR19tZW1iZXIp IiB9IH0KLStDIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiXCJsLipcIi4qRFdfQVRfbmFt ZSIgfSB9Ci0rQyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIlwibS4qXCIuKkRXX0FUX25h bWUiIH0gfQotLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2RlYnVnL3ByMzUxNTQuYwkocmV2aXNp b24gMCkKLSsrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9kZWJ1Zy9wcjM1MTU0LmMJKHJldmlzaW9u IDEzMzgwMSkKLUBAIC0wLDAgKzEsMzQgQEAKLSsvKiBUZXN0IHRvIG1ha2Ugc3VyZSB0aGF0IHN0 YWJzIGZvciBDIHN5bWJvbHMgdGhhdCBnbyBpbnRvIC5jb21tIGhhdmUgdGhlCi0rICAgcHJvcGVy IHN0cnVjdHVyZS4gIFRoZXNlIHNob3VsZCBiZSBsZXR0ZXJlZCBHIGZvciB0aGUgc3RydWN0IHRo YXQgZ2l2ZXMKLSsgICB0aGUgbmFtZSB0byB0aGUgLmNvbW0sIGFuZCBzaG91bGQgYmUgViBvciBT IGZvciAubGNvbW0gc3ltYm9scy4gICovCi0rCi0rc3RhdGljIGNoYXIgaV9vdXRlcjsKLStzdHJ1 Y3QgewotKyAgIGNoYXIgZjE7Ci0rICAgY2hhciBmMjsKLSt9IG9wdGE7Ci0rc3RydWN0IHsKLSsg ICBjaGFyIGYxOwotKyAgIGNoYXIgZjI7Ci0rfSBvcHRiOwotKwotK2ludAotK21haW4oKQotK3sK LSsgICBzdGF0aWMgY2hhciBpX2lubmVyWzJdOwotKyAgIGlfaW5uZXJbMF0gPSAnYSc7IGlfaW5u ZXJbMV0gPSAnYic7Ci0rICAgb3B0YS5mMSA9ICdjJzsKLSsgICBvcHRhLmYyID0gJ2QnOwotKyAg IG9wdGIuZjEgPSAnQyc7Ci0rICAgb3B0Yi5mMiA9ICdEJzsKLSsgICBpX291dGVyID0gJ2UnOwot Ky8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1za2lwLWlmICJObyBzdGFicyIgeyBt bWl4LSotKiAqLSotbmV0d2FyZSogYWxwaGEqLSotKiBocHBhKjY0Ki0qLSogaWE2NC0qLSogKi0q LXN5c3Y1KiAqLSotdnh3b3JrcyogfSB7ICIqIiB9IHsgIiIgfSB9ICovCi0rLyogeyBkZy1za2lw LWlmICJzdGFicyBvbmx5IiB7ICotKi0qIH0geyAiKiIgfSB7ICItZ3N0YWJzIiB9IH0gKi8KLSsg ICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICIuc3Rh YnMuKmlfaW5uZXI6ViIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICIu c3RhYnMuKmlfb3V0ZXI6UyIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy ICIuc3RhYnMuKm9wdGE6RyIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy ICIuc3RhYnMuKm9wdGI6RyIgfSB9ICovCi0tLS0gZ2NjL3Rlc3RzdWl0ZS9saWIvZ2ZvcnRyYW4t ZGcuZXhwCShyZXZpc2lvbiAxMzM4MDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9saWIvZ2ZvcnRyYW4t ZGcuZXhwCShyZXZpc2lvbiAxMzM4MDEpCi1AQCAtMSw0ICsxLDQgQEAKLS0jICAgQ29weXJpZ2h0 IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgotKyMgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0gIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLUBAIC0xMDcsMyArMTA3LDU3IEBAIHByb2MgZ2ZvcnRyYW4tZGctcnVudGVzdCB7IHRlc3Rj YXNlcyBkZWYKLSAJfQotICAgICB9Ci0gfQotKwotK3Byb2MgZ2ZvcnRyYW4tZGctZGVidWctcnVu dGVzdCB7IHRhcmdldF9jb21waWxlIHRyaXZpYWwgb3B0X29wdHMgdGVzdGNhc2VzIH0gewotKyAg ICBnbG9iYWwgc3JjZGlyIHN1YmRpciBERUJVR19UT1JUVVJFX09QVElPTlMKLSsKLSsgICAgaWYg IVtpbmZvIGV4aXN0cyBERUJVR19UT1JUVVJFX09QVElPTlNdIHsKLSsgICAgICAgc2V0IERFQlVH X1RPUlRVUkVfT1BUSU9OUyAiIgotKyAgICAgICBzZXQgdHlwZV9saXN0IFtsaXN0ICItZ3N0YWJz IiAiLWdzdGFicysiICItZ3hjb2ZmIiAiLWd4Y29mZisiICItZ2NvZmYiICItZ2R3YXJmLTIiIF0K LSsgICAgICAgZm9yZWFjaCB0eXBlICR0eXBlX2xpc3QgewotKyAgICAgICAgICAgc2V0IGNvbXBf b3V0cHV0IFskdGFyZ2V0X2NvbXBpbGUgXAotKyAgICAgICAgICAgICAgICAgICAiJHNyY2Rpci8k c3ViZGlyLyR0cml2aWFsIiAidHJpdmlhbC5TIiBhc3NlbWJseSBcCi0rICAgICAgICAgICAgICAg ICAgICJhZGRpdGlvbmFsX2ZsYWdzPSR0eXBlIl0KLSsgICAgICAgICAgIGlmIHsgW3N0cmluZyBt YXRjaCAiZXhpdCBzdGF0dXMgKiIgJGNvbXBfb3V0cHV0XSB9IHsKLSsgICAgICAgICAgICAgICBj b250aW51ZQotKyAgICAgICAgICAgfQotKyAgICAgICAgICAgaWYgeyBbc3RyaW5nIG1hdGNoIFwK LSsgICAgICAgICAgICAgICAgICAgICAgICIqIHRhcmdldCBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9y dCB0aGUgKiBkZWJ1ZyBmb3JtYXQqIiBcCi0rICAgICAgICAgICAgICAgICAgICAgICAkY29tcF9v dXRwdXRdCi0rICAgICAgICAgICB9IHsKLSsgICAgICAgICAgICAgICBjb250aW51ZQotKyAgICAg ICAgICAgfQotKyAgICAgICAgICAgZm9yZWFjaCBsZXZlbCB7MSAiIiAzfSB7Ci0rICAgICAgICAg ICAgICAgbGFwcGVuZCBERUJVR19UT1JUVVJFX09QVElPTlMgW2xpc3QgIiR7dHlwZX0ke2xldmVs fSJdCi0rICAgICAgICAgICAgICAgZm9yZWFjaCBvcHQgJG9wdF9vcHRzIHsKLSsgICAgICAgICAg ICAgICAgICAgbGFwcGVuZCBERUJVR19UT1JUVVJFX09QVElPTlMgW2xpc3QgIiR7dHlwZX0ke2xl dmVsfSIgXAotKyAgICAgICAgICAgICAgICAgICAgICAiJG9wdCIgXQotKyAgICAgICAgICAgICAg IH0KLSsgICAgICAgICAgIH0KLSsgICAgICAgfQotKyAgICB9Ci0rCi0rICAgIHZlcmJvc2UgLWxv ZyAiVXNpbmcgb3B0aW9ucyAkREVCVUdfVE9SVFVSRV9PUFRJT05TIgotKwotKyAgICBnbG9iYWwg cnVudGVzdHMKLSsKLSsgICAgZm9yZWFjaCB0ZXN0ICR0ZXN0Y2FzZXMgewotKyAgICAgICAjIElm IHdlJ3JlIG9ubHkgdGVzdGluZyBzcGVjaWZpYyBmaWxlcyBhbmQgdGhpcyBpc24ndCBvbmUgb2Yg Ci0rICAgICAgICMgdGhlbSwgc2tpcCBpdC4KLSsgICAgICAgaWYgIVtydW50ZXN0X2ZpbGVfcCAk cnVudGVzdHMgJHRlc3RdIHsKLSsgICAgICAgICAgIGNvbnRpbnVlCi0rICAgICAgIH0KLSsKLSsg ICAgICAgc2V0IG5zaG9ydCBbZmlsZSB0YWlsIFtmaWxlIGRpcm5hbWUgJHRlc3RdXS9bZmlsZSB0 YWlsICR0ZXN0XQotKwotKyAgICAgICBmb3JlYWNoIGZsYWdzICRERUJVR19UT1JUVVJFX09QVElP TlMgewotKyAgICAgICAgICAgc2V0IGRvaXQgMQotKyAgICAgICAgICAgIyBnY2Mtc3BlY2lmaWMg Y2hlY2tpbmcgcmVtb3ZlZCBoZXJlCi0rCi0rICAgICAgICAgICBpZiB7ICRkb2l0IH0gewotKyAg ICAgICAgICAgICAgIHZlcmJvc2UgLWxvZyAiVGVzdGluZyAkbnNob3J0LCAkZmxhZ3MiIDEKLSsg ICAgICAgICAgICAgICBkZy10ZXN0ICR0ZXN0ICRmbGFncyAiIgotKyAgICAgICAgICAgfQotKyAg ICAgICB9Ci0rICAgIH0KLSt9Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9kZWJ1Zy9k ZWJ1Zy5leHAJKHJldmlzaW9uIDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9kZWJ1 Zy9kZWJ1Zy5leHAJKHJldmlzaW9uIDEzMzgwMSkKLUBAIC0wLDAgKzEsNDEgQEAKLSsjICBDb3B5 cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyAgVGhp cyBmaWxlIGlzIHBhcnQgb2YgR0NDLgotKyMKLSsjICBHQ0MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgotKyMgIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlCi0rIyAgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIKLSsjICB2ZXJzaW9uLgotKyMKLSsjICBHQ0MgaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5Z Ci0rIyAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJD SEFOVEFCSUxJVFkgb3IKLSsjICBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjICBmb3IgbW9yZSBkZXRhaWxzLgot KyMKLSsjICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKyMgIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlO RzMuICBJZiBub3Qgc2VlCi0rIyAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwot KyMgR0NDIHRlc3RzdWl0ZSB0aGF0IHVzZXMgdGhlIGBkZy5leHAnIGRyaXZlci4KLSsKLSsjIExv YWQgc3VwcG9ydCBwcm9jcy4KLStsb2FkX2xpYiBnZm9ydHJhbi1kZy5leHAKLStsb2FkX2xpYiBn Zm9ydHJhbi5leHAKLSsKLSsjIERlYnVnZ2luZyB0ZXN0c3VpdGUgcHJvYwotK3Byb2MgZ2ZvcnRy YW4tZGVidWctZGctdGVzdCB7IHByb2cgZG9fd2hhdCBleHRyYV90b29sX2ZsYWdzIH0gewotKyAg IHJldHVybiBbZ2ZvcnRyYW4tZGctdGVzdCAkcHJvZyAkZG9fd2hhdCAkZXh0cmFfdG9vbF9mbGFn c10KLSt9Ci0rCi0rIyBJbml0aWFsaXplIGBkZycuCi0rZGctaW5pdAotKwotKyMgTWFpbiBsb29w LgotKwotK2dmb3J0cmFuX2luaXQKLSsKLStnZm9ydHJhbi1kZy1kZWJ1Zy1ydW50ZXN0IGdmb3J0 cmFuX3RhcmdldF9jb21waWxlIHRyaXZpYWwuZiAiIiBcCi0rICAgIFtsc29ydCBbZ2xvYiAtbm9j b21wbGFpbiAkc3JjZGlyLyRzdWJkaXIvKi5cW2ZTXF1dXQotKwotKyMgQWxsIGRvbmUuCi0rZGct ZmluaXNoCi0tLS0gZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9kZWJ1Zy90cml2aWFsLmYJKHJl dmlzaW9uIDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9kZWJ1Zy90cml2aWFsLmYJ KHJldmlzaW9uIDEzMzgwMSkKLUBAIC0wLDAgKzEsMiBAQAotKyAgICAgIHByb2dyYW0gdHJpdmlh bAotKyAgICAgIGVuZAoKZGlmZiAtLWdpdCBhL2djYzQzLWZvcnRyYW4tZGVidWcxMC5wYXRjaCBi L2djYzQzLWZvcnRyYW4tZGVidWcxMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggN2Y5MzY1OS4uMDAwMDAwMAotLS0gYS9nY2M0My1mb3J0cmFuLWRlYnVnMTAucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSw0NTcgKzAsMCBAQAotMjAwOC0wOC0yNiAgSmFrdWIgSmVsaW5layAg PGpha3ViQHJlZGhhdC5jb20+Ci0KLQkqIGR3YXJmMm91dC5jIChnZW5fY29uc3RfZGllKTogTmV3 IGZ1bmN0aW9uLgotCShzaXplX29mX2RpZSwgdmFsdWVfZm9ybWF0LCBvdXRwdXRfZGllKTogT3V0 cHV0IGxhcmdlcgotCWR3X3ZhbF9jbGFzc192ZWMgdXNpbmcgRFdfRk9STV9ibG9jazIgb3IgRFdf Rk9STV9ibG9jazQuCi0JKG5hdGl2ZV9lbmNvZGVfaW5pdGlhbGl6ZXIpOiBOZXcgZnVuY3Rpb24u Ci0JKHRyZWVfYWRkX2NvbnN0X3ZhbHVlX2F0dHJpYnV0ZSk6IENhbGwgaXQuCi0JKGdlbl9kZWNs X2RpZSwgZHdhcmYyb3V0X2RlY2wpOiBIYW5kbGUgQ09OU1RfREVDTHMgaWYgaXNfZm9ydHJhbiAo KS4KLQotCSogdHJhbnMtZGVjbC5jIChjaGVja19jb25zdGFudF9pbml0aWFsaXplciwKLQlnZmNf ZW1pdF9wYXJhbWV0ZXJfZGVidWdfaW5mbyk6IE5ldyBmdW5jdGlvbnMuCi0JKGdmY19nZW5lcmF0 ZV9tb2R1bGVfdmFycywgZ2ZjX2dlbmVyYXRlX2Z1bmN0aW9uX2NvZGUpOiBFbWl0Ci0JUEFSQU1F VEVScyBhbmQgdW5yZWZlcmVuY2VkIHZhcmlhYmxlcyB3aXRoIGluaXRpYWxpemVycyBpbnRvCi0J ZGVidWcgaW5mby4KLQotLS0tIGdjYy9mb3J0cmFuL3RyYW5zLWRlY2wuYy5qagkyMDA4LTA4LTI2 IDIxOjQzOjM2LjAwMDAwMDAwMCArMDIwMAotKysrIGdjYy9mb3J0cmFuL3RyYW5zLWRlY2wuYwky MDA4LTA4LTI2IDIyOjU0OjI0LjAwMDAwMDAwMCArMDIwMAotQEAgLTMyMzIsNiArMzIzMiwxMzUg QEAgZ2ZjX3RyYW5zX3VzZV9zdG10cyAoZ2ZjX25hbWVzcGFjZSAqIG5zKQotIH0KLSAKLSAKLSsv KiBSZXR1cm4gdHJ1ZSBpZiBleHByIGlzIGEgY29uc3RhbnQgaW5pdGlhbGl6ZXIgdGhhdCBnZmNf Y29udl9pbml0aWFsaXplcgotKyAgIHdpbGwgaGFuZGxlLiAgKi8KLSsKLStzdGF0aWMgYm9vbAot K2NoZWNrX2NvbnN0YW50X2luaXRpYWxpemVyIChnZmNfZXhwciAqZXhwciwgZ2ZjX3R5cGVzcGVj ICp0cywgYm9vbCBhcnJheSwKLSsJCQkgICAgYm9vbCBwb2ludGVyKQotK3sKLSsgIGdmY19jb25z dHJ1Y3RvciAqYzsKLSsgIGdmY19jb21wb25lbnQgKmNtOwotKwotKyAgaWYgKHBvaW50ZXIpCi0r ICAgIHJldHVybiB0cnVlOwotKyAgZWxzZSBpZiAoYXJyYXkpCi0rICAgIHsKLSsgICAgICBpZiAo ZXhwci0+ZXhwcl90eXBlID09IEVYUFJfQ09OU1RBTlQgfHwgZXhwci0+ZXhwcl90eXBlID09IEVY UFJfTlVMTCkKLSsJcmV0dXJuIHRydWU7Ci0rICAgICAgZWxzZSBpZiAoZXhwci0+ZXhwcl90eXBl ID09IEVYUFJfU1RSVUNUVVJFKQotKwlyZXR1cm4gY2hlY2tfY29uc3RhbnRfaW5pdGlhbGl6ZXIg KGV4cHIsIHRzLCBmYWxzZSwgZmFsc2UpOwotKyAgICAgIGVsc2UgaWYgKGV4cHItPmV4cHJfdHlw ZSAhPSBFWFBSX0FSUkFZKQotKwlyZXR1cm4gZmFsc2U7Ci0rICAgICAgZm9yIChjID0gZXhwci0+ dmFsdWUuY29uc3RydWN0b3I7IGM7IGMgPSBjLT5uZXh0KQotKwl7Ci0rCSAgaWYgKGMtPml0ZXJh dG9yKQotKwkgICAgcmV0dXJuIGZhbHNlOwotKwkgIGlmIChjLT5leHByLT5leHByX3R5cGUgPT0g RVhQUl9TVFJVQ1RVUkUpCi0rCSAgICB7Ci0rCSAgICAgIGlmICghY2hlY2tfY29uc3RhbnRfaW5p dGlhbGl6ZXIgKGMtPmV4cHIsIHRzLCBmYWxzZSwgZmFsc2UpKQotKwkJcmV0dXJuIGZhbHNlOwot KwkgICAgfQotKwkgIGVsc2UgaWYgKGMtPmV4cHItPmV4cHJfdHlwZSAhPSBFWFBSX0NPTlNUQU5U KQotKwkgICAgcmV0dXJuIGZhbHNlOwotKwl9Ci0rICAgICAgcmV0dXJuIHRydWU7Ci0rICAgIH0K LSsgIGVsc2Ugc3dpdGNoICh0cy0+dHlwZSkKLSsgICAgewotKyAgICBjYXNlIEJUX0RFUklWRUQ6 Ci0rICAgICAgaWYgKGV4cHItPmV4cHJfdHlwZSAhPSBFWFBSX1NUUlVDVFVSRSkKLSsJcmV0dXJu IGZhbHNlOwotKyAgICAgIGNtID0gZXhwci0+dHMuZGVyaXZlZC0+Y29tcG9uZW50czsKLSsgICAg ICBmb3IgKGMgPSBleHByLT52YWx1ZS5jb25zdHJ1Y3RvcjsgYzsgYyA9IGMtPm5leHQsIGNtID0g Y20tPm5leHQpCi0rCXsKLSsJICBpZiAoIWMtPmV4cHIgfHwgY20tPmFsbG9jYXRhYmxlKQotKwkg ICAgY29udGludWU7Ci0rCSAgaWYgKCFjaGVja19jb25zdGFudF9pbml0aWFsaXplciAoYy0+ZXhw ciwgJmNtLT50cywKLSsJCQkJCSAgIGNtLT5kaW1lbnNpb24sCi0rCQkJCQkgICBjbS0+cG9pbnRl cikpCi0rCSAgICByZXR1cm4gZmFsc2U7Ci0rCX0KLSsgICAgICByZXR1cm4gdHJ1ZTsKLSsgICAg ZGVmYXVsdDoKLSsgICAgICByZXR1cm4gZXhwci0+ZXhwcl90eXBlID09IEVYUFJfQ09OU1RBTlQ7 Ci0rICAgIH0KLSt9Ci0rCi0rLyogRW1pdCBkZWJ1ZyBpbmZvIGZvciBwYXJhbWV0ZXJzIGFuZCB1 bnJlZmVyZW5jZWQgdmFyaWFibGVzIHdpdGgKLSsgICBpbml0aWFsaXplcnMuICAqLwotKwotK3N0 YXRpYyB2b2lkCi0rZ2ZjX2VtaXRfcGFyYW1ldGVyX2RlYnVnX2luZm8gKGdmY19zeW1ib2wgKnN5 bSkKLSt7Ci0rICB0cmVlIGRlY2w7Ci0rCi0rICBpZiAoc3ltLT5hdHRyLmZsYXZvciAhPSBGTF9Q QVJBTUVURVIKLSsgICAgICAmJiAoc3ltLT5hdHRyLmZsYXZvciAhPSBGTF9WQVJJQUJMRSB8fCBz eW0tPmF0dHIucmVmZXJlbmNlZCkpCi0rICAgIHJldHVybjsKLSsKLSsgIGlmIChzeW0tPmJhY2tl bmRfZGVjbCAhPSBOVUxMCi0rICAgICAgfHwgc3ltLT52YWx1ZSA9PSBOVUxMCi0rICAgICAgfHwg c3ltLT5hdHRyLnVzZV9hc3NvYwotKyAgICAgIHx8IHN5bS0+YXR0ci5kdW1teQotKyAgICAgIHx8 IHN5bS0+YXR0ci5yZXN1bHQKLSsgICAgICB8fCBzeW0tPmF0dHIuZnVuY3Rpb24KLSsgICAgICB8 fCBzeW0tPmF0dHIuaW50cmluc2ljCi0rICAgICAgfHwgc3ltLT5hdHRyLnBvaW50ZXIKLSsgICAg ICB8fCBzeW0tPmF0dHIuYWxsb2NhdGFibGUKLSsgICAgICB8fCBzeW0tPmF0dHIuY3JheV9wb2lu dGVlCi0rICAgICAgfHwgc3ltLT5hdHRyLnRocmVhZHByaXZhdGUKLSsgICAgICB8fCBzeW0tPmF0 dHIuaXNfYmluZF9jCi0rICAgICAgfHwgc3ltLT5hdHRyLnN1YnJlZl9hcnJheV9wb2ludGVyCi0r ICAgICAgfHwgc3ltLT5hdHRyLmFzc2lnbikKLSsgICAgcmV0dXJuOwotKwotKyAgaWYgKHN5bS0+ dHMudHlwZSA9PSBCVF9DSEFSQUNURVIpCi0rICAgIHsKLSsgICAgICBnZmNfY29udl9jb25zdF9j aGFybGVuIChzeW0tPnRzLmNsKTsKLSsgICAgICBpZiAoc3ltLT50cy5jbC0+YmFja2VuZF9kZWNs ID09IE5VTEwKLSsJICB8fCBUUkVFX0NPREUgKHN5bS0+dHMuY2wtPmJhY2tlbmRfZGVjbCkgIT0g SU5URUdFUl9DU1QpCi0rCXJldHVybjsKLSsgICAgfQotKyAgZWxzZSBpZiAoc3ltLT50cy50eXBl ID09IEJUX0RFUklWRUQgJiYgc3ltLT50cy5kZXJpdmVkLT5hdHRyLmFsbG9jX2NvbXApCi0rICAg IHJldHVybjsKLSsKLSsgIGlmIChzeW0tPmFzKQotKyAgICB7Ci0rICAgICAgaW50IG47Ci0rCi0r ICAgICAgaWYgKHN5bS0+YXMtPnR5cGUgIT0gQVNfRVhQTElDSVQpCi0rCXJldHVybjsKLSsgICAg ICBmb3IgKG4gPSAwOyBuIDwgc3ltLT5hcy0+cmFuazsgbisrKQotKwlpZiAoc3ltLT5hcy0+bG93 ZXJbbl0tPmV4cHJfdHlwZSAhPSBFWFBSX0NPTlNUQU5UCi0rCSAgICB8fCBzeW0tPmFzLT51cHBl cltuXSA9PSBOVUxMCi0rCSAgICB8fCBzeW0tPmFzLT51cHBlcltuXS0+ZXhwcl90eXBlICE9IEVY UFJfQ09OU1RBTlQpCi0rCSAgcmV0dXJuOwotKyAgICB9Ci0rCi0rICBpZiAoIWNoZWNrX2NvbnN0 YW50X2luaXRpYWxpemVyIChzeW0tPnZhbHVlLCAmc3ltLT50cywKLSsJCQkJICAgc3ltLT5hdHRy LmRpbWVuc2lvbiwgZmFsc2UpKQotKyAgICByZXR1cm47Ci0rCi0rICAvKiBDcmVhdGUgdGhlIGRl Y2wgZm9yIHRoZSB2YXJpYWJsZSBvciBjb25zdGFudC4gICovCi0rICBkZWNsID0gYnVpbGRfZGVj bCAoc3ltLT5hdHRyLmZsYXZvciA9PSBGTF9QQVJBTUVURVIgPyBDT05TVF9ERUNMIDogVkFSX0RF Q0wsCi0rCQkgICAgIGdmY19zeW1faWRlbnRpZmllciAoc3ltKSwgZ2ZjX3N5bV90eXBlIChzeW0p KTsKLSsgIGlmIChzeW0tPmF0dHIuZmxhdm9yID09IEZMX1BBUkFNRVRFUikKLSsgICAgVFJFRV9S RUFET05MWSAoZGVjbCkgPSAxOwotKyAgZ2ZjX3NldF9kZWNsX2xvY2F0aW9uIChkZWNsLCAmc3lt LT5kZWNsYXJlZF9hdCk7Ci0rICBpZiAoc3ltLT5hdHRyLmRpbWVuc2lvbikKLSsgICAgR0ZDX0RF Q0xfUEFDS0VEX0FSUkFZIChkZWNsKSA9IDE7Ci0rICBERUNMX0NPTlRFWFQgKGRlY2wpID0gc3lt LT5ucy0+cHJvY19uYW1lLT5iYWNrZW5kX2RlY2w7Ci0rICBUUkVFX1NUQVRJQyAoZGVjbCkgPSAx OwotKyAgVFJFRV9VU0VEIChkZWNsKSA9IDE7Ci0rICBpZiAoREVDTF9DT05URVhUIChkZWNsKSAm JiBUUkVFX0NPREUgKERFQ0xfQ09OVEVYVCAoZGVjbCkpID09IE5BTUVTUEFDRV9ERUNMKQotKyAg ICBUUkVFX1BVQkxJQyAoZGVjbCkgPSAxOwotKyAgREVDTF9JTklUSUFMIChkZWNsKQotKyAgICA9 IGdmY19jb252X2luaXRpYWxpemVyIChzeW0tPnZhbHVlLCAmc3ltLT50cywgVFJFRV9UWVBFIChk ZWNsKSwKLSsJCQkgICAgc3ltLT5hdHRyLmRpbWVuc2lvbiwgMCk7Ci0rICBkZWJ1Z19ob29rcy0+ Z2xvYmFsX2RlY2wgKGRlY2wpOwotK30KLSsKLSAvKiBHZW5lcmF0ZSBhbGwgdGhlIHJlcXVpcmVk IGNvZGUgZm9yIG1vZHVsZSB2YXJpYWJsZXMuICAqLwotIAotIHZvaWQKLUBAIC0zMjUyLDYgKzMz ODEsNyBAQCBnZmNfZ2VuZXJhdGVfbW9kdWxlX3ZhcnMgKGdmY19uYW1lc3BhY2UgCi0gICBjdXJf bW9kdWxlID0gTlVMTDsKLSAKLSAgIGdmY190cmFuc191c2Vfc3RtdHMgKG5zKTsKLSsgIGdmY190 cmF2ZXJzZV9ucyAobnMsIGdmY19lbWl0X3BhcmFtZXRlcl9kZWJ1Z19pbmZvKTsKLSB9Ci0gCi0g Ci1AQCAtMzc4Nyw2ICszOTE3LDcgQEAgZ2ZjX2dlbmVyYXRlX2Z1bmN0aW9uX2NvZGUgKGdmY19u YW1lc3BhYwotICAgICB9Ci0gCi0gICBnZmNfdHJhbnNfdXNlX3N0bXRzIChucyk7Ci0rICBnZmNf dHJhdmVyc2VfbnMgKG5zLCBnZmNfZW1pdF9wYXJhbWV0ZXJfZGVidWdfaW5mbyk7Ci0gfQotIAot IHZvaWQKLS0tLSBnY2MvZHdhcmYyb3V0LmMuamoJMjAwOC0wOC0yNiAyMTo0MzozMS4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnY2MvZHdhcmYyb3V0LmMJMjAwOC0wOC0yNiAyMTo0Mzo0Mi4wMDAwMDAw MDAgKzAyMDAKLUBAIC01MDkzLDYgKzUwOTMsNyBAQCBzdGF0aWMgdm9pZCBnZW5fdW5zcGVjaWZp ZWRfcGFyYW1ldGVyc19kCi0gc3RhdGljIHZvaWQgZ2VuX2Zvcm1hbF90eXBlc19kaWUgKHRyZWUs IGR3X2RpZV9yZWYpOwotIHN0YXRpYyB2b2lkIGdlbl9zdWJwcm9ncmFtX2RpZSAodHJlZSwgZHdf ZGllX3JlZik7Ci0gc3RhdGljIHZvaWQgZ2VuX3ZhcmlhYmxlX2RpZSAodHJlZSwgZHdfZGllX3Jl Zik7Ci0rc3RhdGljIHZvaWQgZ2VuX2NvbnN0X2RpZSAodHJlZSwgZHdfZGllX3JlZik7Ci0gc3Rh dGljIHZvaWQgZ2VuX2xhYmVsX2RpZSAodHJlZSwgZHdfZGllX3JlZik7Ci0gc3RhdGljIHZvaWQg Z2VuX2xleGljYWxfYmxvY2tfZGllICh0cmVlLCBkd19kaWVfcmVmLCBpbnQpOwotIHN0YXRpYyB2 b2lkIGdlbl9pbmxpbmVkX3N1YnJvdXRpbmVfZGllICh0cmVlLCBkd19kaWVfcmVmLCBpbnQpOwot QEAgLTc1NjQsOCArNzU2NSwxMCBAQCBzaXplX29mX2RpZSAoZHdfZGllX3JlZiBkaWUpCi0gCSAg c2l6ZSArPSAxICsgMipIT1NUX0JJVFNfUEVSX0xPTkcvSE9TVF9CSVRTX1BFUl9DSEFSOyAvKiBi bG9jayAqLwotIAkgIGJyZWFrOwotIAljYXNlIGR3X3ZhbF9jbGFzc192ZWM6Ci0tCSAgc2l6ZSAr PSAxICsgKGEtPmR3X2F0dHJfdmFsLnYudmFsX3ZlYy5sZW5ndGgKLS0JCSAgICAgICAqIGEtPmR3 X2F0dHJfdmFsLnYudmFsX3ZlYy5lbHRfc2l6ZSk7IC8qIGJsb2NrICovCi0rCSAgc2l6ZSArPSBj b25zdGFudF9zaXplIChhLT5kd19hdHRyX3ZhbC52LnZhbF92ZWMubGVuZ3RoCi0rCQkJCSAqIGEt PmR3X2F0dHJfdmFsLnYudmFsX3ZlYy5lbHRfc2l6ZSkKLSsJCSAgKyBhLT5kd19hdHRyX3ZhbC52 LnZhbF92ZWMubGVuZ3RoCi0rCQkgICAgKiBhLT5kd19hdHRyX3ZhbC52LnZhbF92ZWMuZWx0X3Np emU7IC8qIGJsb2NrICovCi0gCSAgYnJlYWs7Ci0gCWNhc2UgZHdfdmFsX2NsYXNzX2ZsYWc6Ci0g CSAgc2l6ZSArPSAxOwotQEAgLTc3NjQsNyArNzc2NywxOCBAQCB2YWx1ZV9mb3JtYXQgKGR3X2F0 dHJfcmVmIGEpCi0gICAgIGNhc2UgZHdfdmFsX2NsYXNzX2xvbmdfbG9uZzoKLSAgICAgICByZXR1 cm4gRFdfRk9STV9ibG9jazE7Ci0gICAgIGNhc2UgZHdfdmFsX2NsYXNzX3ZlYzoKLS0gICAgICBy ZXR1cm4gRFdfRk9STV9ibG9jazE7Ci0rICAgICAgc3dpdGNoIChjb25zdGFudF9zaXplIChhLT5k d19hdHRyX3ZhbC52LnZhbF92ZWMubGVuZ3RoCi0rCQkJICAgICAqIGEtPmR3X2F0dHJfdmFsLnYu dmFsX3ZlYy5lbHRfc2l6ZSkpCi0rCXsKLSsJY2FzZSAxOgotKwkgIHJldHVybiBEV19GT1JNX2Js b2NrMTsKLSsJY2FzZSAyOgotKwkgIHJldHVybiBEV19GT1JNX2Jsb2NrMjsKLSsJY2FzZSA0Ogot KwkgIHJldHVybiBEV19GT1JNX2Jsb2NrNDsKLSsJZGVmYXVsdDoKLSsJICBnY2NfdW5yZWFjaGFi bGUgKCk7Ci0rCX0KLSAgICAgY2FzZSBkd192YWxfY2xhc3NfZmxhZzoKLSAgICAgICByZXR1cm4g RFdfRk9STV9mbGFnOwotICAgICBjYXNlIGR3X3ZhbF9jbGFzc19kaWVfcmVmOgotQEAgLTgwNTYs NyArODA3MCw4IEBAIG91dHB1dF9kaWUgKGR3X2RpZV9yZWYgZGllKQotIAkgICAgdW5zaWduZWQg aW50IGk7Ci0gCSAgICB1bnNpZ25lZCBjaGFyICpwOwotIAotLQkgICAgZHcyX2FzbV9vdXRwdXRf ZGF0YSAoMSwgbGVuICogZWx0X3NpemUsICIlcyIsIG5hbWUpOwotKwkgICAgZHcyX2FzbV9vdXRw dXRfZGF0YSAoY29uc3RhbnRfc2l6ZSAobGVuICogZWx0X3NpemUpLAotKwkJCQkgbGVuICogZWx0 X3NpemUsICIlcyIsIG5hbWUpOwotIAkgICAgaWYgKGVsdF9zaXplID4gc2l6ZW9mIChIT1NUX1dJ REVfSU5UKSkKLSAJICAgICAgewotIAkJZWx0X3NpemUgLz0gMjsKLUBAIC0xMTc2Miw2ICsxMTc3 NywxNTAgQEAgYWRkX2xvY2F0aW9uX29yX2NvbnN0X3ZhbHVlX2F0dHJpYnV0ZSAoZAotICAgdHJl ZV9hZGRfY29uc3RfdmFsdWVfYXR0cmlidXRlIChkaWUsIGRlY2wpOwotIH0KLSAKLSsvKiBIZWxw ZXIgZnVuY3Rpb24gZm9yIHRyZWVfYWRkX2NvbnN0X3ZhbHVlX2F0dHJpYnV0ZS4gIE5hdGl2ZWx5 IGVuY29kZQotKyAgIGluaXRpYWxpemVyIElOSVQgaW50byBhbiBhcnJheS4gIFJldHVybiB0cnVl IGlmIHN1Y2Nlc3NmdWwuICAqLwotKwotK3N0YXRpYyBib29sCi0rbmF0aXZlX2VuY29kZV9pbml0 aWFsaXplciAodHJlZSBpbml0LCB1bnNpZ25lZCBjaGFyICphcnJheSwgaW50IHNpemUpCi0rewot KyAgdHJlZSB0eXBlOwotKwotKyAgaWYgKGluaXQgPT0gTlVMTF9UUkVFKQotKyAgICByZXR1cm4g ZmFsc2U7Ci0rCi0rICBTVFJJUF9OT1BTIChpbml0KTsKLSsgIHN3aXRjaCAoVFJFRV9DT0RFIChp bml0KSkKLSsgICAgewotKyAgICBjYXNlIFNUUklOR19DU1Q6Ci0rICAgICAgdHlwZSA9IFRSRUVf VFlQRSAoaW5pdCk7Ci0rICAgICAgaWYgKFRSRUVfQ09ERSAodHlwZSkgPT0gQVJSQVlfVFlQRSkK LSsJewotKwkgIHRyZWUgZW50dHlwZSA9IFRSRUVfVFlQRSAodHlwZSk7Ci0rCSAgZW51bSBtYWNo aW5lX21vZGUgbW9kZSA9IFRZUEVfTU9ERSAoZW50dHlwZSk7Ci0rCi0rCSAgaWYgKEdFVF9NT0RF X0NMQVNTIChtb2RlKSAhPSBNT0RFX0lOVCB8fCBHRVRfTU9ERV9TSVpFIChtb2RlKSAhPSAxKQot KwkgICAgcmV0dXJuIGZhbHNlOwotKwkgIGlmIChpbnRfc2l6ZV9pbl9ieXRlcyAodHlwZSkgIT0g c2l6ZSkKLSsJICAgIHJldHVybiBmYWxzZTsKLSsJICBpZiAoc2l6ZSA+IFRSRUVfU1RSSU5HX0xF TkdUSCAoaW5pdCkpCi0rCSAgICB7Ci0rCSAgICAgIG1lbWNweSAoYXJyYXksIFRSRUVfU1RSSU5H X1BPSU5URVIgKGluaXQpLAotKwkJICAgICAgVFJFRV9TVFJJTkdfTEVOR1RIIChpbml0KSk7Ci0r CSAgICAgIG1lbXNldCAoYXJyYXkgKyBUUkVFX1NUUklOR19MRU5HVEggKGluaXQpLAotKwkJICAg ICAgJ1wwJywgc2l6ZSAtIFRSRUVfU1RSSU5HX0xFTkdUSCAoaW5pdCkpOwotKwkgICAgfQotKwkg IGVsc2UKLSsJICAgIG1lbWNweSAoYXJyYXksIFRSRUVfU1RSSU5HX1BPSU5URVIgKGluaXQpLCBz aXplKTsKLSsJICByZXR1cm4gdHJ1ZTsKLSsJfQotKyAgICAgIHJldHVybiBmYWxzZTsKLSsgICAg Y2FzZSBDT05TVFJVQ1RPUjoKLSsgICAgICB0eXBlID0gVFJFRV9UWVBFIChpbml0KTsKLSsgICAg ICBpZiAoaW50X3NpemVfaW5fYnl0ZXMgKHR5cGUpICE9IHNpemUpCi0rCXJldHVybiBmYWxzZTsK LSsgICAgICBpZiAoVFJFRV9DT0RFICh0eXBlKSA9PSBBUlJBWV9UWVBFKQotKwl7Ci0rCSAgSE9T VF9XSURFX0lOVCBtaW5faW5kZXg7Ci0rCSAgdW5zaWduZWQgSE9TVF9XSURFX0lOVCBjbnQ7Ci0r CSAgaW50IGN1cnBvcyA9IDAsIGZpZWxkc2l6ZTsKLSsJICBjb25zdHJ1Y3Rvcl9lbHQgKmNlOwot KwotKwkgIGlmIChUWVBFX0RPTUFJTiAodHlwZSkgPT0gTlVMTF9UUkVFCi0rCSAgICAgIHx8ICFo b3N0X2ludGVnZXJwIChUWVBFX01JTl9WQUxVRSAoVFlQRV9ET01BSU4gKHR5cGUpKSwgMCkpCi0r CSAgICByZXR1cm4gZmFsc2U7Ci0rCi0rCSAgZmllbGRzaXplID0gaW50X3NpemVfaW5fYnl0ZXMg KFRSRUVfVFlQRSAodHlwZSkpOwotKwkgIGlmIChmaWVsZHNpemUgPD0gMCkKLSsJICAgIHJldHVy biBmYWxzZTsKLSsKLSsJICBtaW5faW5kZXggPSB0cmVlX2xvd19jc3QgKFRZUEVfTUlOX1ZBTFVF IChUWVBFX0RPTUFJTiAodHlwZSkpLCAwKTsKLSsJICBtZW1zZXQgKGFycmF5LCAnXDAnLCBzaXpl KTsKLSsJICBmb3IgKGNudCA9IDA7Ci0rCSAgICAgICBWRUNfaXRlcmF0ZSAoY29uc3RydWN0b3Jf ZWx0LCBDT05TVFJVQ1RPUl9FTFRTIChpbml0KSwgY250LCBjZSk7Ci0rCSAgICAgICBjbnQrKykK LSsJICAgIHsKLSsJICAgICAgdHJlZSB2YWwgPSBjZS0+dmFsdWU7Ci0rCSAgICAgIHRyZWUgaW5k ZXggPSBjZS0+aW5kZXg7Ci0rCSAgICAgIGludCBwb3MgPSBjdXJwb3M7Ci0rCSAgICAgIGlmIChp bmRleCAmJiBUUkVFX0NPREUgKGluZGV4KSA9PSBSQU5HRV9FWFBSKQotKwkJcG9zID0gKHRyZWVf bG93X2NzdCAoVFJFRV9PUEVSQU5EIChpbmRleCwgMCksIDApIC0gbWluX2luZGV4KQotKwkJICAg ICAgKiBmaWVsZHNpemU7Ci0rCSAgICAgIGVsc2UgaWYgKGluZGV4KQotKwkJcG9zID0gdHJlZV9s b3dfY3N0IChpbmRleCwgMCkgKiBmaWVsZHNpemU7Ci0rCi0rCSAgICAgIGlmICh2YWwpCi0rCQl7 Ci0rCQkgIFNUUklQX05PUFMgKHZhbCk7Ci0rCQkgIGlmICghbmF0aXZlX2VuY29kZV9pbml0aWFs aXplciAodmFsLCBhcnJheSArIHBvcywgZmllbGRzaXplKSkKLSsJCSAgICByZXR1cm4gZmFsc2U7 Ci0rCQl9Ci0rCSAgICAgIGN1cnBvcyA9IHBvcyArIGZpZWxkc2l6ZTsKLSsJICAgICAgaWYgKGlu ZGV4ICYmIFRSRUVfQ09ERSAoaW5kZXgpID09IFJBTkdFX0VYUFIpCi0rCQl7Ci0rCQkgIGludCBj b3VudCA9IHRyZWVfbG93X2NzdCAoVFJFRV9PUEVSQU5EIChpbmRleCwgMSksIDApCi0rCQkJICAg ICAgLSB0cmVlX2xvd19jc3QgKFRSRUVfT1BFUkFORCAoaW5kZXgsIDApLCAwKTsKLSsJCSAgd2hp bGUgKGNvdW50ID4gMCkKLSsJCSAgICB7Ci0rCQkgICAgICBpZiAodmFsKQotKwkJCW1lbWNweSAo YXJyYXkgKyBjdXJwb3MsIGFycmF5ICsgcG9zLCBmaWVsZHNpemUpOwotKwkJICAgICAgY3VycG9z ICs9IGZpZWxkc2l6ZTsKLSsJCSAgICB9Ci0rCQl9Ci0rCSAgICAgIGdjY19hc3NlcnQgKGN1cnBv cyA8PSBzaXplKTsKLSsJICAgIH0KLSsJICByZXR1cm4gdHJ1ZTsKLSsJfQotKyAgICAgIGVsc2Ug aWYgKFRSRUVfQ09ERSAodHlwZSkgPT0gUkVDT1JEX1RZUEUKLSsJICAgICAgIHx8IFRSRUVfQ09E RSAodHlwZSkgPT0gVU5JT05fVFlQRSkKLSsJewotKwkgIHRyZWUgZmllbGQgPSBOVUxMX1RSRUU7 Ci0rCSAgdW5zaWduZWQgSE9TVF9XSURFX0lOVCBjbnQ7Ci0rCSAgY29uc3RydWN0b3JfZWx0ICpj ZTsKLSsKLSsJICBpZiAoaW50X3NpemVfaW5fYnl0ZXMgKHR5cGUpICE9IHNpemUpCi0rCSAgICBy ZXR1cm4gZmFsc2U7Ci0rCi0rCSAgaWYgKFRSRUVfQ09ERSAodHlwZSkgPT0gUkVDT1JEX1RZUEUp Ci0rCSAgICBmaWVsZCA9IFRZUEVfRklFTERTICh0eXBlKTsKLSsKLSsJICBmb3IgKGNudCA9IDA7 Ci0rCSAgICAgICBWRUNfaXRlcmF0ZSAoY29uc3RydWN0b3JfZWx0LCBDT05TVFJVQ1RPUl9FTFRT IChpbml0KSwgY250LCBjZSk7Ci0rCSAgICAgICBjbnQrKywgZmllbGQgPSBmaWVsZCA/IFRSRUVf Q0hBSU4gKGZpZWxkKSA6IDApCi0rCSAgICB7Ci0rCSAgICAgIHRyZWUgdmFsID0gY2UtPnZhbHVl OwotKwkgICAgICBpbnQgcG9zLCBmaWVsZHNpemU7Ci0rCi0rCSAgICAgIGlmIChjZS0+aW5kZXgg IT0gMCkKLSsJCWZpZWxkID0gY2UtPmluZGV4OwotKwotKwkgICAgICBpZiAodmFsKQotKwkJU1RS SVBfTk9QUyAodmFsKTsKLSsKLSsJICAgICAgaWYgKGZpZWxkID09IE5VTExfVFJFRSB8fCBERUNM X0JJVF9GSUVMRCAoZmllbGQpKQotKwkJcmV0dXJuIGZhbHNlOwotKwotKwkgICAgICBpZiAoVFJF RV9DT0RFIChUUkVFX1RZUEUgKGZpZWxkKSkgPT0gQVJSQVlfVFlQRQotKwkJICAmJiBUWVBFX0RP TUFJTiAoVFJFRV9UWVBFIChmaWVsZCkpCi0rCQkgICYmICEgVFlQRV9NQVhfVkFMVUUgKFRZUEVf RE9NQUlOIChUUkVFX1RZUEUgKGZpZWxkKSkpKQotKwkJcmV0dXJuIGZhbHNlOwotKwkgICAgICBl bHNlIGlmIChERUNMX1NJWkVfVU5JVCAoZmllbGQpID09IE5VTExfVFJFRQotKwkJICAgICAgIHx8 ICFob3N0X2ludGVnZXJwIChERUNMX1NJWkVfVU5JVCAoZmllbGQpLCAwKSkKLSsJCXJldHVybiBm YWxzZTsKLSsJICAgICAgZmllbGRzaXplID0gdHJlZV9sb3dfY3N0IChERUNMX1NJWkVfVU5JVCAo ZmllbGQpLCAwKTsKLSsJICAgICAgcG9zID0gaW50X2J5dGVfcG9zaXRpb24gKGZpZWxkKTsKLSsJ ICAgICAgZ2NjX2Fzc2VydCAocG9zICsgZmllbGRzaXplIDw9IHNpemUpOwotKwkgICAgICBpZiAo dmFsCi0rCQkgICYmICFuYXRpdmVfZW5jb2RlX2luaXRpYWxpemVyICh2YWwsIGFycmF5ICsgcG9z LCBmaWVsZHNpemUpKQotKwkJcmV0dXJuIGZhbHNlOwotKwkgICAgfQotKwkgIHJldHVybiB0cnVl OwotKwl9Ci0rICAgICAgcmV0dXJuIGZhbHNlOwotKyAgICBkZWZhdWx0OgotKyAgICAgIHJldHVy biBuYXRpdmVfZW5jb2RlX2V4cHIgKGluaXQsIGFycmF5LCBzaXplKSA9PSBzaXplOwotKyAgICB9 Ci0rfQotKwotIC8qIElmIHdlIGRvbid0IGhhdmUgYSBjb3B5IG9mIHRoaXMgdmFyaWFibGUgaW4g bWVtb3J5IGZvciBzb21lIHJlYXNvbiAoc3VjaAotICAgIGFzIGEgQysrIG1lbWJlciBjb25zdGFu dCB0aGF0IGRvZXNuJ3QgaGF2ZSBhbiBvdXQtb2YtbGluZSBkZWZpbml0aW9uKSwKLSAgICB3ZSBz aG91bGQgdGVsbCB0aGUgZGVidWdnZXIgYWJvdXQgdGhlIGNvbnN0YW50IHZhbHVlLiAgKi8KLUBA IC0xMTc4MSw2ICsxMTk0MCwxOSBAQCB0cmVlX2FkZF9jb25zdF92YWx1ZV9hdHRyaWJ1dGUgKGR3 X2RpZV9yCi0gICBydGwgPSBydGxfZm9yX2RlY2xfaW5pdCAoaW5pdCwgdHlwZSk7Ci0gICBpZiAo cnRsKQotICAgICBhZGRfY29uc3RfdmFsdWVfYXR0cmlidXRlICh2YXJfZGllLCBydGwpOwotKyAg LyogSWYgdGhlIGhvc3QgYW5kIHRhcmdldCBhcmUgc2FuZSwgdHJ5IGhhcmRlci4gICovCi0rICBl bHNlIGlmIChDSEFSX0JJVCA9PSA4ICYmIEJJVFNfUEVSX1VOSVQgPT0gOAotKwkgICAmJiBpbml0 aWFsaXplcl9jb25zdGFudF92YWxpZF9wIChpbml0LCB0eXBlKSkKLSsgICAgewotKyAgICAgIEhP U1RfV0lERV9JTlQgc2l6ZSA9IGludF9zaXplX2luX2J5dGVzIChUUkVFX1RZUEUgKGluaXQpKTsK LSsgICAgICBpZiAoc2l6ZSA+IDAgJiYgKGludCkgc2l6ZSA9PSBzaXplKQotKwl7Ci0rCSAgdW5z aWduZWQgY2hhciAqYXJyYXkgPSBHR0NfQ05FV1ZFQyAodW5zaWduZWQgY2hhciwgc2l6ZSk7Ci0r Ci0rCSAgaWYgKG5hdGl2ZV9lbmNvZGVfaW5pdGlhbGl6ZXIgKGluaXQsIGFycmF5LCBzaXplKSkK LSsJICAgIGFkZF9BVF92ZWMgKHZhcl9kaWUsIERXX0FUX2NvbnN0X3ZhbHVlLCBzaXplLCAxLCBh cnJheSk7Ci0rCX0KLSsgICAgfQotIH0KLSAKLSAvKiBDb252ZXJ0IHRoZSBDRkkgaW5zdHJ1Y3Rp b25zIGZvciB0aGUgY3VycmVudCBmdW5jdGlvbiBpbnRvIGEKLUBAIC0xMzc0Myw2ICsxMzkxNCwy NCBAQCBnZW5fdmFyaWFibGVfZGllICh0cmVlIGRlY2wsIGR3X2RpZV9yZWYgCi0gICAgIHRyZWVf YWRkX2NvbnN0X3ZhbHVlX2F0dHJpYnV0ZSAodmFyX2RpZSwgZGVjbCk7Ci0gfQotIAotKy8qIEdl bmVyYXRlIGEgRElFIHRvIHJlcHJlc2VudCBhIG5hbWVkIGNvbnN0YW50LiAgKi8KLSsKLStzdGF0 aWMgdm9pZAotK2dlbl9jb25zdF9kaWUgKHRyZWUgZGVjbCwgZHdfZGllX3JlZiBjb250ZXh0X2Rp ZSkKLSt7Ci0rICBkd19kaWVfcmVmIGNvbnN0X2RpZTsKLSsgIHRyZWUgdHlwZSA9IFRSRUVfVFlQ RSAoZGVjbCk7Ci0rCi0rICBjb25zdF9kaWUgPSBuZXdfZGllIChEV19UQUdfY29uc3RhbnQsIGNv bnRleHRfZGllLCBkZWNsKTsKLSsgIGFkZF9uYW1lX2FuZF9zcmNfY29vcmRzX2F0dHJpYnV0ZXMg KGNvbnN0X2RpZSwgZGVjbCk7Ci0rICBhZGRfdHlwZV9hdHRyaWJ1dGUgKGNvbnN0X2RpZSwgdHlw ZSwgMSwgMCwgY29udGV4dF9kaWUpOwotKyAgaWYgKFRSRUVfUFVCTElDIChkZWNsKSkKLSsgICAg YWRkX0FUX2ZsYWcgKGNvbnN0X2RpZSwgRFdfQVRfZXh0ZXJuYWwsIDEpOwotKyAgaWYgKERFQ0xf QVJUSUZJQ0lBTCAoZGVjbCkpCi0rICAgIGFkZF9BVF9mbGFnIChjb25zdF9kaWUsIERXX0FUX2Fy dGlmaWNpYWwsIDEpOwotKyAgdHJlZV9hZGRfY29uc3RfdmFsdWVfYXR0cmlidXRlIChjb25zdF9k aWUsIGRlY2wpOwotK30KLSsKLSAvKiBHZW5lcmF0ZSBhIERJRSB0byByZXByZXNlbnQgYSBsYWJl bCBpZGVudGlmaWVyLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotQEAgLTE0ODgzLDggKzE1MDcyLDIw IEBAIGdlbl9kZWNsX2RpZSAodHJlZSBkZWNsLCBkd19kaWVfcmVmIGNvbnQKLSAgICAgICBicmVh azsKLSAKLSAgICAgY2FzZSBDT05TVF9ERUNMOgotLSAgICAgIC8qIFRoZSBpbmRpdmlkdWFsIGVu dW1lcmF0b3JzIG9mIGFuIGVudW0gdHlwZSBnZXQgb3V0cHV0IHdoZW4gd2Ugb3V0cHV0Ci0tCSB0 aGUgRHdhcmYgcmVwcmVzZW50YXRpb24gb2YgdGhlIHJlbGV2YW50IGVudW0gdHlwZSBpdHNlbGYu ICAqLwotKyAgICAgIGlmICghaXNfZm9ydHJhbiAoKSkKLSsJewotKwkgIC8qIFRoZSBpbmRpdmlk dWFsIGVudW1lcmF0b3JzIG9mIGFuIGVudW0gdHlwZSBnZXQgb3V0cHV0IHdoZW4gd2Ugb3V0cHV0 Ci0rCSAgICAgdGhlIER3YXJmIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZWxldmFudCBlbnVtIHR5 cGUgaXRzZWxmLiAgKi8KLSsJICBicmVhazsKLSsJfQotKwotKyAgICAgIC8qIEVtaXQgaXRzIHR5 cGUuICAqLwotKyAgICAgIGdlbl90eXBlX2RpZSAoVFJFRV9UWVBFIChkZWNsKSwgY29udGV4dF9k aWUpOwotKwotKyAgICAgIC8qIEFuZCBpdHMgY29udGFpbmluZyBuYW1lc3BhY2UuICAqLwotKyAg ICAgIGNvbnRleHRfZGllID0gZGVjbGFyZV9pbl9uYW1lc3BhY2UgKGRlY2wsIGNvbnRleHRfZGll KTsKLSsKLSsgICAgICBnZW5fY29uc3RfZGllIChkZWNsLCBjb250ZXh0X2RpZSk7Ci0gICAgICAg YnJlYWs7Ci0gCi0gICAgIGNhc2UgRlVOQ1RJT05fREVDTDoKLUBAIC0xNTIyOSw2ICsxNTQzMCwx NSBAQCBkd2FyZjJvdXRfZGVjbCAodHJlZSBkZWNsKQotIAlyZXR1cm47Ci0gICAgICAgYnJlYWs7 Ci0gCi0rICAgIGNhc2UgQ09OU1RfREVDTDoKLSsgICAgICBpZiAoZGVidWdfaW5mb19sZXZlbCA8 PSBESU5GT19MRVZFTF9URVJTRSkKLSsJcmV0dXJuOwotKyAgICAgIGlmICghaXNfZm9ydHJhbiAo KSkKLSsJcmV0dXJuOwotKyAgICAgIGlmIChUUkVFX1NUQVRJQyAoZGVjbCkgJiYgZGVjbF9mdW5j dGlvbl9jb250ZXh0IChkZWNsKSkKLSsJY29udGV4dF9kaWUgPSBsb29rdXBfZGVjbF9kaWUgKERF Q0xfQ09OVEVYVCAoZGVjbCkpOwotKyAgICAgIGJyZWFrOwotKwotICAgICBjYXNlIE5BTUVTUEFD RV9ERUNMOgotICAgICAgIGlmIChkZWJ1Z19pbmZvX2xldmVsIDw9IERJTkZPX0xFVkVMX1RFUlNF KQotIAlyZXR1cm47CgpkaWZmIC0tZ2l0IGEvZ2NjNDMtZm9ydHJhbi1kZWJ1ZzExLnBhdGNoIGIv Z2NjNDMtZm9ydHJhbi1kZWJ1ZzExLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCA3M2VjNTdiLi4wMDAwMDAwCi0tLSBhL2djYzQzLWZvcnRyYW4tZGVidWcxMS5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLTIwMDgtMDgtMjggIEpha3ViIEplbGluZWsgIDxq YWt1YkByZWRoYXQuY29tPgotCi0JKiBkd2FyZjJvdXQuYyAoZGVzY3JfaW5mb19sb2MpOiBIYW5k bGUgVkFSX0RFQ0wuCi0KLQkqIHRyYW5zLmggKHN0cnVjdCBsYW5nX3R5cGUpOiBBZGQgc3Bhbi4K LQkoR0ZDX1RZUEVfQVJSQVlfU1BBTik6IERlZmluZS4KLQkqIHRyYW5zLWRlY2wuYyAoZ2ZjX2dl dF9zeW1ib2xfZGVjbCk6IEZvciBzdWJyZWYgYXJyYXkgcG9pbnRlcnMsCi0JY29weSBUUkVFX1NU QVRJQyBmcm9tIGRlY2wgdG8gc3BhbiBpbnN0ZWFkIG9mIHNldHRpbmcgaXQKLQl1bmNvbmRpdGlv bmFsbHksIHNldCBERUNMX0FSVElGSUNJQUwsIGZpeCB0eXBlIG9mIGluaXRpYWxpemVyCi0JYW5k IHNldCBHRkNfVFlQRV9BUlJBWV9TUEFOIG9uIGRlY2wncyB0eXBlLgotCSogdHJhbnMtdHlwZXMu YyAoZ2ZjX2dldF9hcnJheV9kZXNjcl9pbmZvKTogSWYKLQlHRkNfVFlQRV9BUlJBWV9TUEFOIGlz IG5vbi1OVUxMLCB1c2UgaXQgYXMgZWxlbWVudCBzaXplLgotCi0tLS0gZ2NjL2ZvcnRyYW4vdHJh bnMuaC5qagkyMDA4LTA4LTI2IDIxOjQzOjA0LjAwMDAwMDAwMCArMDIwMAotKysrIGdjYy9mb3J0 cmFuL3RyYW5zLmgJMjAwOC0wOC0yOCAwOTo1ODowMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC02MDUs NiArNjA1LDcgQEAgc3RydWN0IGxhbmdfdHlwZQkJR1RZKCgpKQotICAgdHJlZSBvZmZzZXQ7Ci0g ICB0cmVlIGR0eXBlOwotICAgdHJlZSBkYXRhcHRyX3R5cGU7Ci0rICB0cmVlIHNwYW47Ci0gfTsK LSAKLSBzdHJ1Y3QgbGFuZ19kZWNsCQlHVFkoKCkpCi1AQCAtNjU3LDYgKzY1OCw3IEBAIHN0cnVj dCBsYW5nX2RlY2wJCUdUWSgoKSkKLSAjZGVmaW5lIEdGQ19UWVBFX0FSUkFZX0RUWVBFKG5vZGUp IChUWVBFX0xBTkdfU1BFQ0lGSUMobm9kZSktPmR0eXBlKQotICNkZWZpbmUgR0ZDX1RZUEVfQVJS QVlfREFUQVBUUl9UWVBFKG5vZGUpIFwKLSAgIChUWVBFX0xBTkdfU1BFQ0lGSUMobm9kZSktPmRh dGFwdHJfdHlwZSkKLSsjZGVmaW5lIEdGQ19UWVBFX0FSUkFZX1NQQU4obm9kZSkgKFRZUEVfTEFO R19TUEVDSUZJQyhub2RlKS0+c3BhbikKLSAKLSAvKiBCdWlsZCBhbiBleHByZXNzaW9uIHdpdGgg dm9pZCB0eXBlLiAgKi8KLSAjZGVmaW5lIGJ1aWxkMV92KGNvZGUsIGFyZykgYnVpbGQxKGNvZGUs IHZvaWRfdHlwZV9ub2RlLCBhcmcpCi0tLS0gZ2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5jLmpqCTIw MDgtMDgtMjYgMjI6NTQ6MjQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL2ZvcnRyYW4vdHJhbnMt ZGVjbC5jCTIwMDgtMDgtMjggMTA6NTQ6MjguMDAwMDAwMDAwICswMjAwCi1AQCAtMTEwNSwxMCAr MTEwNSwxMiBAQCBnZmNfZ2V0X3N5bWJvbF9kZWNsIChnZmNfc3ltYm9sICogc3ltKQotICAgICAg IHNwYW4gPSBidWlsZF9kZWNsIChWQVJfREVDTCwgY3JlYXRlX3RtcF92YXJfbmFtZSAoInNwYW4i KSwKLSAJCQkgZ2ZjX2FycmF5X2luZGV4X3R5cGUpOwotICAgICAgIGdmY19maW5pc2hfdmFyX2Rl Y2wgKHNwYW4sIHN5bSk7Ci0tICAgICAgVFJFRV9TVEFUSUMgKHNwYW4pID0gMTsKLS0gICAgICBE RUNMX0lOSVRJQUwgKHNwYW4pID0gYnVpbGRfaW50X2NzdCAoTlVMTF9UUkVFLCAwKTsKLSsgICAg ICBUUkVFX1NUQVRJQyAoc3BhbikgPSBUUkVFX1NUQVRJQyAoZGVjbCk7Ci0rICAgICAgREVDTF9B UlRJRklDSUFMIChzcGFuKSA9IDE7Ci0rICAgICAgREVDTF9JTklUSUFMIChzcGFuKSA9IGJ1aWxk X2ludF9jc3QgKGdmY19hcnJheV9pbmRleF90eXBlLCAwKTsKLSAKLSAgICAgICBHRkNfREVDTF9T UEFOIChkZWNsKSA9IHNwYW47Ci0rICAgICAgR0ZDX1RZUEVfQVJSQVlfU1BBTiAoVFJFRV9UWVBF IChkZWNsKSkgPSBzcGFuOwotICAgICB9Ci0gCi0gICBzeW0tPmJhY2tlbmRfZGVjbCA9IGRlY2w7 Ci0tLS0gZ2NjL2ZvcnRyYW4vdHJhbnMtdHlwZXMuYy5qagkyMDA4LTA4LTI2IDIxOjQzOjA0LjAw MDAwMDAwMCArMDIwMAotKysrIGdjYy9mb3J0cmFuL3RyYW5zLXR5cGVzLmMJMjAwOC0wOC0yOCAx MDoyMzozOS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yMjg5LDcgKzIyODksMTAgQEAgZ2ZjX2dldF9h cnJheV9kZXNjcl9pbmZvIChjb25zdF90cmVlIHR5cAotICAgZWxzZQotICAgICBpbmZvLT5iYXNl X2RlY2wgPSBiYXNlX2RlY2wgPSBidWlsZF9kZWNsIChWQVJfREVDTCwgTlVMTF9UUkVFLCBwdHlw ZSk7Ci0gCi0tICBlbGVtX3NpemUgPSBmb2xkX2NvbnZlcnQgKGdmY19hcnJheV9pbmRleF90eXBl LCBUWVBFX1NJWkVfVU5JVCAoZXR5cGUpKTsKLSsgIGlmIChHRkNfVFlQRV9BUlJBWV9TUEFOICh0 eXBlKSkKLSsgICAgZWxlbV9zaXplID0gR0ZDX1RZUEVfQVJSQVlfU1BBTiAodHlwZSk7Ci0rICBl bHNlCi0rICAgIGVsZW1fc2l6ZSA9IGZvbGRfY29udmVydCAoZ2ZjX2FycmF5X2luZGV4X3R5cGUs IFRZUEVfU0laRV9VTklUIChldHlwZSkpOwotICAgZmllbGQgPSBUWVBFX0ZJRUxEUyAoVFlQRV9N QUlOX1ZBUklBTlQgKHR5cGUpKTsKLSAgIGRhdGFfb2ZmID0gYnl0ZV9wb3NpdGlvbiAoZmllbGQp OwotICAgZmllbGQgPSBUUkVFX0NIQUlOIChmaWVsZCk7Ci0tLS0gZ2NjL2R3YXJmMm91dC5jLmpq CTIwMDgtMDgtMjYgMjE6NDM6NDIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL2R3YXJmMm91dC5j CTIwMDgtMDgtMjggMTA6MzU6MzguMDAwMDAwMDAwICswMjAwCi1AQCAtMTIyMzIsNiArMTIyMzIs OCBAQCBkZXNjcl9pbmZvX2xvYyAodHJlZSB2YWwsIHRyZWUgYmFzZV9kZWNsCi0gICAgIGNhc2Ug Tk9QX0VYUFI6Ci0gICAgIGNhc2UgQ09OVkVSVF9FWFBSOgotICAgICAgIHJldHVybiBkZXNjcl9p bmZvX2xvYyAoVFJFRV9PUEVSQU5EICh2YWwsIDApLCBiYXNlX2RlY2wpOwotKyAgICBjYXNlIFZB Ul9ERUNMOgotKyAgICAgIHJldHVybiBsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWVfMSAodmFsLCAw KTsKLSAgICAgY2FzZSBJTlRFR0VSX0NTVDoKLSAgICAgICBpZiAoaG9zdF9pbnRlZ2VycCAodmFs LCAwKSkKLSAJcmV0dXJuIGludF9sb2NfZGVzY3JpcHRvciAodHJlZV9sb3dfY3N0ICh2YWwsIDAp KTsKCmRpZmYgLS1naXQgYS9nY2M0My1mb3J0cmFuLWRlYnVnMi5wYXRjaCBiL2djYzQzLWZvcnRy YW4tZGVidWcyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhN2JmMTJhLi4w MDAwMDAwCi0tLSBhL2djYzQzLWZvcnRyYW4tZGVidWcyLnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsMTAxMCArMCwwIEBACi0yMDA4LTA4LTIyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0 LmNvbT4KLQotCVBSIGZvcnRyYW4vMjk2MzUKLQlQUiBmb3J0cmFuLzIzMDU3Ci0JKiBkZWJ1Zy5o IChzdHJ1Y3QgZ2NjX2RlYnVnX2hvb2tzKTogQWRkIE5BTUUgYW5kIENISUxECi0JYXJndW1lbnRz IHRvIGltcG9ydGVkX21vZHVsZV9vcl9kZWNsLgotCShkZWJ1Z19ub3RoaW5nX3RyZWVfdHJlZSk6 IFJlbW92ZWQuCi0JKGRlYnVnX25vdGhpbmdfdHJlZV90cmVlX3RyZWVfYm9vbCk6IE5ldyBwcm90 b3R5cGUuCi0JKiBkZWJ1Zy5jIChkb19ub3RoaW5nX2RlYnVnX2hvb2tzKTogQWRqdXN0LgotCShk ZWJ1Z19ub3RoaW5nX3RyZWVfdHJlZSk6IFJlbW92ZWQuCi0JKGRlYnVnX25vdGhpbmdfdHJlZV90 cmVlX3RyZWVfYm9vbCk6IE5ldyBmdW5jdGlvbi4KLQkqIGR3YXJmMm91dC5jIChpc19zeW1ib2xf ZGllKTogSGFuZGxlIERXX1RBR19tb2R1bGUuCi0JKGdlbl92YXJpYWJsZV9kaWUpOiBQdXQgYWxs IGNvbW1vbiB2YXJzIGZvciB0aGUKLQlzYW1lIENPTU1PTiBibG9jayB1bmRlciBvbmUgRFdfVEFH X2NvbW1vbl9ibG9jay4KLQkoZGVjbGFyZV9pbl9uYW1lc3BhY2UpOiBSZXR1cm4gbmV3IGNvbnRl eHRfZGllLCBmb3IgRm9ydHJhbgotCXJldHVybiB0aGUgbW9kdWxlIERJRSBpbnN0ZWFkIG9mIGFk ZGluZyBleHRyYSBkZWNsYXJhdGlvbnMgaW50bwotCXRoZSBuYW1lc3BhY2UuCi0JKGdlbl90eXBl X2RpZV93aXRoX3VzYWdlKTogQWRqdXN0IGRlY2xhcmVfaW5fbmFtZXNwYWNlIGNhbGxlci4KLQko Z2VuX25hbWVzcGFjZV9kaWUpOiBJZiBpc19mb3J0cmFuICgpLCBnZW5lcmF0ZSBEV19UQUdfbW9k dWxlCi0JaW5zdGVhZCBvZiBEV19UQUdfbmFtZXNwYWNlLiAgSWYgREVDTF9FWFRFUk5BTCBpcyBz ZXQsIGFkZAotCURXX0FUX2RlY2xhcmF0aW9uLgotCShkd2FyZjJvdXRfZ2xvYmFsX2RlY2wpOiBE b24ndCBza2lwIEZvcnRyYW4gZ2xvYmFsIHZhcnMuCi0JKGdlbl9kZWNsX2RpZSk6IExpa2V3aXNl LiAgQWRqdXN0IGRlY2xhcmVfaW5fbmFtZXNwYWNlIGNhbGxlcnMuCi0JKGR3YXJmMm91dF9pbXBv cnRlZF9tb2R1bGVfb3JfZGVjbCk6IEFkZCBOQU1FIGFuZCBDSElMRCBhcmd1bWVudHMuCi0JSWYg TkFNRSBpcyBub24tTlVMTCwgYWRkIERXX0FUX25hbWUuICBJZiBDSElMRCBpcyBub24tTlVMTCwg cHV0Ci0JRFdfVEFHX2ltcG9ydGVkX2RlY2xhcmF0aW9uIGFzIGNoaWxkIG9mIHByZXZpb3VzCi0J RFdfVEFHX2ltcG9ydGVkX21vZHVsZS4KLQkqIGRieG91dC5jIChkYnhfZGVidWdfaG9va3MsIHhj b2ZmX2RlYnVnX2hvb2tzKTogQWRqdXN0LgotCSogc2Rib3V0LmMgKHNkYl9kZWJ1Z19ob29rcyk6 IExpa2V3aXNlLgotCSogdm1zZGJnb3V0LmMgKHZtc2RiZ19kZWJ1Z19ob29rcyk6IExpa2V3aXNl LgotCi0JKiBuYW1lLWxvb2t1cC5jIChkb191c2luZ19kaXJlY3RpdmUsIGNwX2VtaXRfZGVidWdf aW5mb19mb3JfdXNpbmcpOgotCUFkanVzdCBkZWJ1Z19ob29rcy0+aW1wb3J0ZWRfbW9kdWxlX29y X2RlY2wgY2FsbGVycy4KLQotCSogZjk1LWxhbmcuYyAoZ2ZjX2luaXRfdHMpOiBOZXcgZnVuY3Rp b24uCi0JKExBTkdfSE9PS1NfSU5JVF9UUyk6IERlZmluZS4KLQkqIGdmb3J0cmFuLmggKGdmY191 c2VfcmVuYW1lKTogTmV3IHR5cGUsIG1vdmVkIGZyb20gbW9kdWxlLmMuCi0JKGdmY19nZXRfdXNl X3JlbmFtZSk6IE5ldyBtYWNybywgbW92ZWQgZnJvbSBtb2R1bGUuYy4KLQkoZ2ZjX3VzZV9saXN0 KTogTmV3IHR5cGUuCi0JKGdmY19nZXRfdXNlX2xpc3QpOiBOZXcgbWFjcm8uCi0JKGdmY19uYW1l c3BhY2UpOiBBZGQgdXNlX3N0bXRzIGZpZWxkLgotCShnZmNfZnJlZV91c2Vfc3RtdHMpOiBOZXcg cHJvdG90eXBlLgotCSogTWFrZS1sYW5nLmluIChmb3J0cmFuL3RyYW5zLWRlY2wubyk6IERlcGVu ZCBvbiBkZWJ1Zy5oLgotCSogbW9kdWxlLmMgKGdmY191c2VfcmVuYW1lLCBnZmNfZ2V0X3VzZV9y ZW5hbWUpOiBNb3ZlZCB0bwotCWdmb3J0cmFuLmguCi0JKGdmY191c2VfbW9kdWxlKTogQ2hhaW4g dGhlIFVTRSBzdGF0ZW1lbnQgaW5mbyB0bwotCW5zLT51c2Vfc3RtdHMuCi0JKGdmY19mcmVlX3Vz ZV9zdG10cyk6IE5ldyBmdW5jdGlvbi4KLQkqIHN5bWJvbC5jIChnZmNfZnJlZV9uYW1lc3BhY2Up OiBDYWxsIGdmY19mcmVlX3VzZV9zdG10cy4KLQkqIHRyYW5zLmggKHN0cnVjdCBtb2R1bGVfaHRh Yl9lbnRyeSk6IE5ldyB0eXBlLgotCShnZmNfZmluZF9tb2R1bGUsIGdmY19tb2R1bGVfYWRkX2Rl Y2wpOiBOZXcgZnVuY3Rpb25zLgotCSogdHJhbnMuYyAoZ2ZjX2dlbmVyYXRlX21vZHVsZV9jb2Rl KTogQ3JlYXRlIE5BTUVTUEFDRV9ERUNMIGZvcgotCXRoZSBtb2R1bGUsIGFkanVzdCBERUNMX0NP TlRFWFRzIG9mIG1vZHVsZSBwcm9jZWR1cmVzIGFuZAotCWNhbGwgZ2ZjX21vZHVsZV9hZGRfZGVj bCBmb3IgdGhlbS4KLQkqIHRyYW5zLWNvbW1vbi5jIChidWlsZF9jb21tb25fZGVjbCk6IFNldCBE RUNMX0lHTk9SRURfUAotCW9uIHRoZSBjb21tb24gdmFyaWFibGUuCi0JKGNyZWF0ZV9jb21tb24p OiBTZXQgREVDTF9JR05PUkVEX1AgZm9yIHVzZSBhc3NvY2lhdGVkIHZhcnMuCi0JKiB0cmFucy1k ZWNsLmM6IEluY2x1ZGUgZGVidWcuaC4KLQkoZ2ZjX2dldF9zeW1ib2xfZGVjbCk6IFNldCBERUNM X0lHTk9SRURfUCBvbiB1c2VfYXNzb2MgdmFycyBmcm9tCi0JbW9kdWxlcy4KLQkoYnVpbGRfZnVu Y3Rpb25fZGVjbCk6IEFsbG93IGN1cnJlbnRfZnVuY3Rpb25fZGVjbCdzIGNvbnRleHQKLQl0byBi ZSBhIE5BTUVTUEFDRV9ERUNMLgotCShtb2R1bGVfaHRhYiwgY3VyX21vZHVsZSk6IE5ldyB2YXJp YWJsZXMuCi0JKG1vZHVsZV9odGFiX2RvX2hhc2gsIG1vZHVsZV9odGFiX2VxLCBtb2R1bGVfaHRh Yl9kZWNsc19oYXNoLAotCW1vZHVsZV9odGFiX2RlY2xzX2VxLCBnZmNfZmluZF9tb2R1bGUsIGdm Y19tb2R1bGVfYWRkX2RlY2wpOiBOZXcKLQlmdW5jdGlvbnMuCi0JKGdmY19jcmVhdGVfbW9kdWxl X3ZhcmlhYmxlKTogQWRqdXN0IERFQ0xfQ09OVEVYVHMgb2YgbW9kdWxlCi0JdmFyaWFibGVzIGFu ZCB0eXBlcyBhbmQgY2FsbCBnZmNfbW9kdWxlX2FkZF9kZWNsIGZvciB0aGVtLgotCShnZmNfZ2Vu ZXJhdGVfbW9kdWxlX3ZhcnMpOiBUZW1wb3JhcmlseSBzZXQgY3VyX21vZHVsZS4KLQkoZ2ZjX3Ry YW5zX3VzZV9zdG10cyk6IE5ldyBmdW5jdGlvbi4KLQkoZ2ZjX2dlbmVyYXRlX2Z1bmN0aW9uX2Nv ZGUpOiBDYWxsIGl0LgotCShnZmNfZ2VuZXJhdGVfYmxvY2tfZGF0YSk6IFNldCBERUNMX0lHTk9S RURfUCBvbiBkZWNsLgotCSogdHJhbnMtdHlwZXMuYyAoZ2ZjX2dldF9kZXJpdmVkX3R5cGUpOiBB ZGp1c3QgREVDTF9DT05URVhUCi0JYW5kIFRZUEVfQ09OVEVYVCBvZiBtb2R1bGUgZGVyaXZlZCB0 eXBlcy4KLQotLS0tIGdjYy9mb3J0cmFuL2Y5NS1sYW5nLmMuamoJMjAwOC0wOC0yMSAxMDoxOTo0 OS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvZm9ydHJhbi9mOTUtbGFuZy5jCTIwMDgtMDgtMjEg MTA6MjE6MzAuMDAwMDAwMDAwICswMjAwCi1AQCAtOTksNiArOTksNyBAQCB2b2lkIGluc2VydF9i bG9jayAodHJlZSk7Ci0gc3RhdGljIHZvaWQgZ2ZjX2NsZWFyX2JpbmRpbmdfc3RhY2sgKHZvaWQp OwotIHN0YXRpYyB2b2lkIGdmY19iZV9wYXJzZV9maWxlIChpbnQpOwotIHN0YXRpYyBhbGlhc19z ZXRfdHlwZSBnZmNfZ2V0X2FsaWFzX3NldCAodHJlZSk7Ci0rc3RhdGljIHZvaWQgZ2ZjX2luaXRf dHMgKHZvaWQpOwotIAotICN1bmRlZiBMQU5HX0hPT0tTX05BTUUKLSAjdW5kZWYgTEFOR19IT09L U19JTklUCi1AQCAtMTEzLDYgKzExNCw3IEBAIHN0YXRpYyBhbGlhc19zZXRfdHlwZSBnZmNfZ2V0 X2FsaWFzX3NldCAKLSAjdW5kZWYgTEFOR19IT09LU19UWVBFX0ZPUl9TSVpFCi0gI3VuZGVmIExB TkdfSE9PS1NfQ0xFQVJfQklORElOR19TVEFDSwotICN1bmRlZiBMQU5HX0hPT0tTX0dFVF9BTElB U19TRVQKLSsjdW5kZWYgTEFOR19IT09LU19JTklUX1RTCi0gI3VuZGVmIExBTkdfSE9PS1NfT01Q X1BSSVZBVElaRV9CWV9SRUZFUkVOQ0UKLSAjdW5kZWYgTEFOR19IT09LU19PTVBfUFJFREVURVJN SU5FRF9TSEFSSU5HCi0gI3VuZGVmIExBTkdfSE9PS1NfT01QX0NMQVVTRV9ERUZBVUxUX0NUT1IK LUBAIC0xNDAsNiArMTQyLDcgQEAgc3RhdGljIGFsaWFzX3NldF90eXBlIGdmY19nZXRfYWxpYXNf c2V0IAotICNkZWZpbmUgTEFOR19IT09LU19UWVBFX0ZPUl9TSVpFICAgICAgICAgICBnZmNfdHlw ZV9mb3Jfc2l6ZQotICNkZWZpbmUgTEFOR19IT09LU19DTEVBUl9CSU5ESU5HX1NUQUNLICAgICBn ZmNfY2xlYXJfYmluZGluZ19zdGFjawotICNkZWZpbmUgTEFOR19IT09LU19HRVRfQUxJQVNfU0VU CSAgIGdmY19nZXRfYWxpYXNfc2V0Ci0rI2RlZmluZSBMQU5HX0hPT0tTX0lOSVRfVFMJCWdmY19p bml0X3RzCi0gI2RlZmluZSBMQU5HX0hPT0tTX09NUF9QUklWQVRJWkVfQllfUkVGRVJFTkNFCWdm Y19vbXBfcHJpdmF0aXplX2J5X3JlZmVyZW5jZQotICNkZWZpbmUgTEFOR19IT09LU19PTVBfUFJF REVURVJNSU5FRF9TSEFSSU5HCWdmY19vbXBfcHJlZGV0ZXJtaW5lZF9zaGFyaW5nCi0gI2RlZmlu ZSBMQU5HX0hPT0tTX09NUF9DTEFVU0VfREVGQVVMVF9DVE9SCWdmY19vbXBfY2xhdXNlX2RlZmF1 bHRfY3RvcgotQEAgLTExODQsNSArMTE4NywxNSBAQCBnZmNfaW5pdF9idWlsdGluX2Z1bmN0aW9u cyAodm9pZCkKLSAjdW5kZWYgREVGSU5FX01BVEhfQlVJTFRJTl9DCi0gI3VuZGVmIERFRklORV9N QVRIX0JVSUxUSU4KLSAKLStzdGF0aWMgdm9pZAotK2dmY19pbml0X3RzICh2b2lkKQotK3sKLSsg IHRyZWVfY29udGFpbnNfc3RydWN0W05BTUVTUEFDRV9ERUNMXVtUU19ERUNMX05PTl9DT01NT05d ID0gMTsKLSsgIHRyZWVfY29udGFpbnNfc3RydWN0W05BTUVTUEFDRV9ERUNMXVtUU19ERUNMX1dJ VEhfVklTXSA9IDE7Ci0rICB0cmVlX2NvbnRhaW5zX3N0cnVjdFtOQU1FU1BBQ0VfREVDTF1bVFNf REVDTF9XUlRMXSA9IDE7Ci0rICB0cmVlX2NvbnRhaW5zX3N0cnVjdFtOQU1FU1BBQ0VfREVDTF1b VFNfREVDTF9DT01NT05dID0gMTsKLSsgIHRyZWVfY29udGFpbnNfc3RydWN0W05BTUVTUEFDRV9E RUNMXVtUU19ERUNMX01JTklNQUxdID0gMTsKLSt9Ci0rCi0gI2luY2x1ZGUgImd0LWZvcnRyYW4t Zjk1LWxhbmcuaCIKLSAjaW5jbHVkZSAiZ3R5cGUtZm9ydHJhbi5oIgotLS0tIGdjYy9mb3J0cmFu L3RyYW5zLmMuamoJMjAwOC0wOC0yMSAxMDoxOTo0OS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2Mv Zm9ydHJhbi90cmFucy5jCTIwMDgtMDgtMjEgMTA6MjE6MzAuMDAwMDAwMDAwICswMjAwCi1AQCAt MTIwOSw2ICsxMjA5LDE5IEBAIHZvaWQKLSBnZmNfZ2VuZXJhdGVfbW9kdWxlX2NvZGUgKGdmY19u YW1lc3BhY2UgKiBucykKLSB7Ci0gICBnZmNfbmFtZXNwYWNlICpuOwotKyAgc3RydWN0IG1vZHVs ZV9odGFiX2VudHJ5ICplbnRyeTsKLSsKLSsgIGdjY19hc3NlcnQgKG5zLT5wcm9jX25hbWUtPmJh Y2tlbmRfZGVjbCA9PSBOVUxMKTsKLSsgIG5zLT5wcm9jX25hbWUtPmJhY2tlbmRfZGVjbAotKyAg ICA9IGJ1aWxkX2RlY2wgKE5BTUVTUEFDRV9ERUNMLCBnZXRfaWRlbnRpZmllciAobnMtPnByb2Nf bmFtZS0+bmFtZSksCi0rCQkgIHZvaWRfdHlwZV9ub2RlKTsKLSsgIGdmY19zZXRfZGVjbF9sb2Nh dGlvbiAobnMtPnByb2NfbmFtZS0+YmFja2VuZF9kZWNsLAotKwkJCSAmbnMtPnByb2NfbmFtZS0+ ZGVjbGFyZWRfYXQpOwotKyAgZW50cnkgPSBnZmNfZmluZF9tb2R1bGUgKG5zLT5wcm9jX25hbWUt Pm5hbWUpOwotKyAgaWYgKGVudHJ5LT5uYW1lc3BhY2VfZGVjbCkKLSsgICAgLyogQnVnZ3kgc291 cmNlY29kZSwgdXNpbmcgYSBtb2R1bGUgYmVmb3JlIGRlZmluaW5nIGl0PyAgKi8KLSsgICAgaHRh Yl9lbXB0eSAoZW50cnktPmRlY2xzKTsKLSsgIGVudHJ5LT5uYW1lc3BhY2VfZGVjbCA9IG5zLT5w cm9jX25hbWUtPmJhY2tlbmRfZGVjbDsKLSAKLSAgIGdmY19nZW5lcmF0ZV9tb2R1bGVfdmFycyAo bnMpOwotIAotQEAgLTEyMTYsMTAgKzEyMjksMjEgQEAgZ2ZjX2dlbmVyYXRlX21vZHVsZV9jb2Rl IChnZmNfbmFtZXNwYWNlIAotICAgICAgc2libGluZyBjYWxscy4gICovCi0gICBmb3IgKG4gPSBu cy0+Y29udGFpbmVkOyBuOyBuID0gbi0+c2libGluZykKLSAgICAgewotKyAgICAgIGdmY19lbnRy eV9saXN0ICplbDsKLSsKLSAgICAgICBpZiAoIW4tPnByb2NfbmFtZSkKLSAgICAgICAgIGNvbnRp bnVlOwotIAotICAgICAgIGdmY19jcmVhdGVfZnVuY3Rpb25fZGVjbCAobik7Ci0rICAgICAgZ2Nj X2Fzc2VydCAoREVDTF9DT05URVhUIChuLT5wcm9jX25hbWUtPmJhY2tlbmRfZGVjbCkgPT0gTlVM TF9UUkVFKTsKLSsgICAgICBERUNMX0NPTlRFWFQgKG4tPnByb2NfbmFtZS0+YmFja2VuZF9kZWNs KSA9IG5zLT5wcm9jX25hbWUtPmJhY2tlbmRfZGVjbDsKLSsgICAgICBnZmNfbW9kdWxlX2FkZF9k ZWNsIChlbnRyeSwgbi0+cHJvY19uYW1lLT5iYWNrZW5kX2RlY2wpOwotKyAgICAgIGZvciAoZWwg PSBucy0+ZW50cmllczsgZWw7IGVsID0gZWwtPm5leHQpCi0rCXsKLSsJICBnY2NfYXNzZXJ0IChE RUNMX0NPTlRFWFQgKGVsLT5zeW0tPmJhY2tlbmRfZGVjbCkgPT0gTlVMTF9UUkVFKTsKLSsJICBE RUNMX0NPTlRFWFQgKGVsLT5zeW0tPmJhY2tlbmRfZGVjbCkgPSBucy0+cHJvY19uYW1lLT5iYWNr ZW5kX2RlY2w7Ci0rCSAgZ2ZjX21vZHVsZV9hZGRfZGVjbCAoZW50cnksIGVsLT5zeW0tPmJhY2tl bmRfZGVjbCk7Ci0rCX0KLSAgICAgfQotIAotICAgZm9yIChuID0gbnMtPmNvbnRhaW5lZDsgbjsg biA9IG4tPnNpYmxpbmcpCi0tLS0gZ2NjL2ZvcnRyYW4vbW9kdWxlLmMuamoJMjAwOC0wOC0yMSAx MDoxOTo0OS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvZm9ydHJhbi9tb2R1bGUuYwkyMDA4LTA4 LTIxIDEwOjIxOjMwLjAwMDAwMDAwMCArMDIwMAotQEAgLTE2MSwyMCArMTYxLDYgQEAgcG9pbnRl cl9pbmZvOwotICNkZWZpbmUgZ2ZjX2dldF9wb2ludGVyX2luZm8oKSBnZmNfZ2V0bWVtKHNpemVv Zihwb2ludGVyX2luZm8pKQotIAotIAotLS8qIExpc3RzIG9mIHJlbmFtZSBpbmZvIGZvciB0aGUg VVNFIHN0YXRlbWVudC4gICovCi0tCi0tdHlwZWRlZiBzdHJ1Y3QgZ2ZjX3VzZV9yZW5hbWUKLS17 Ci0tICBjaGFyIGxvY2FsX25hbWVbR0ZDX01BWF9TWU1CT0xfTEVOICsgMV0sIHVzZV9uYW1lW0dG Q19NQVhfU1lNQk9MX0xFTiArIDFdOwotLSAgc3RydWN0IGdmY191c2VfcmVuYW1lICpuZXh0Owot LSAgaW50IGZvdW5kOwotLSAgZ2ZjX2ludHJpbnNpY19vcCBvcGVyYXRvcjsKLS0gIGxvY3VzIHdo ZXJlOwotLX0KLS1nZmNfdXNlX3JlbmFtZTsKLS0KLS0jZGVmaW5lIGdmY19nZXRfdXNlX3JlbmFt ZSgpIGdmY19nZXRtZW0oc2l6ZW9mKGdmY191c2VfcmVuYW1lKSkKLS0KLSAvKiBMb2NhbCB2YXJp YWJsZXMgKi8KLSAKLSAvKiBUaGUgRklMRSBmb3IgdGhlIG1vZHVsZSB3ZSdyZSByZWFkaW5nIG9y IHdyaXRpbmcuICAqLwotQEAgLTQ3NDksNiArNDczNSw3IEBAIGdmY191c2VfbW9kdWxlICh2b2lk KQotICAgZ2ZjX3N0YXRlX2RhdGEgKnA7Ci0gICBpbnQgYywgbGluZSwgc3RhcnQ7Ci0gICBnZmNf c3ltdHJlZSAqbW9kX3N5bXRyZWU7Ci0rICBnZmNfdXNlX2xpc3QgKnVzZV9zdG10OwotIAotICAg ZmlsZW5hbWUgPSAoY2hhciAqKSBhbGxvY2EgKHN0cmxlbiAobW9kdWxlX25hbWUpICsgc3RybGVu IChNT0RVTEVfRVhURU5TSU9OKQotIAkJCSAgICAgICsgMSk7Ci1AQCAtNDg0MSw2ICs0ODI4LDMz IEBAIGdmY191c2VfbW9kdWxlICh2b2lkKQotICAgcGlfcm9vdCA9IE5VTEw7Ci0gCi0gICBmY2xv c2UgKG1vZHVsZV9mcCk7Ci0rCi0rICB1c2Vfc3RtdCA9IGdmY19nZXRfdXNlX2xpc3QgKCk7Ci0r ICB1c2Vfc3RtdC0+bW9kdWxlX25hbWUgPSBnZmNfZ2V0X3N0cmluZyAobW9kdWxlX25hbWUpOwot KyAgdXNlX3N0bXQtPm9ubHlfZmxhZyA9IG9ubHlfZmxhZzsKLSsgIHVzZV9zdG10LT5yZW5hbWUg PSBnZmNfcmVuYW1lX2xpc3Q7Ci0rICBnZmNfcmVuYW1lX2xpc3QgPSBOVUxMOwotKyAgdXNlX3N0 bXQtPm5leHQgPSBnZmNfY3VycmVudF9ucy0+dXNlX3N0bXRzOwotKyAgZ2ZjX2N1cnJlbnRfbnMt PnVzZV9zdG10cyA9IHVzZV9zdG10OwotK30KLSsKLSsKLSt2b2lkCi0rZ2ZjX2ZyZWVfdXNlX3N0 bXRzIChnZmNfdXNlX2xpc3QgKnVzZV9zdG10cykKLSt7Ci0rICBnZmNfdXNlX2xpc3QgKm5leHQ7 Ci0rICBmb3IgKDsgdXNlX3N0bXRzOyB1c2Vfc3RtdHMgPSBuZXh0KQotKyAgICB7Ci0rICAgICAg Z2ZjX3VzZV9yZW5hbWUgKm5leHRfcmVuYW1lOwotKwotKyAgICAgIGZvciAoOyB1c2Vfc3RtdHMt PnJlbmFtZTsgdXNlX3N0bXRzLT5yZW5hbWUgPSBuZXh0X3JlbmFtZSkKLSsJewotKwkgIG5leHRf cmVuYW1lID0gdXNlX3N0bXRzLT5yZW5hbWUtPm5leHQ7Ci0rCSAgZ2ZjX2ZyZWUgKHVzZV9zdG10 cy0+cmVuYW1lKTsKLSsJfQotKyAgICAgIG5leHQgPSB1c2Vfc3RtdHMtPm5leHQ7Ci0rICAgICAg Z2ZjX2ZyZWUgKHVzZV9zdG10cyk7Ci0rICAgIH0KLSB9Ci0gCi0gCi0tLS0gZ2NjL2ZvcnRyYW4v TWFrZS1sYW5nLmluLmpqCTIwMDgtMDgtMjEgMTA6MTk6NDkuMDAwMDAwMDAwICswMjAwCi0rKysg Z2NjL2ZvcnRyYW4vTWFrZS1sYW5nLmluCTIwMDgtMDgtMjEgMTA6MjE6MzAuMDAwMDAwMDAwICsw MjAwCi1AQCAtMzEwLDcgKzMxMCw3IEBAIGZvcnRyYW4vY29udmVydC5vOiAkKEdGT1JUUkFOX1RS QU5TX0RFUFMKLSBmb3J0cmFuL3RyYW5zLm86ICQoR0ZPUlRSQU5fVFJBTlNfREVQUykKLSBmb3J0 cmFuL3RyYW5zLWRlY2wubzogJChHRk9SVFJBTl9UUkFOU19ERVBTKSBndC1mb3J0cmFuLXRyYW5z LWRlY2wuaCBcCi0gICAkKENHUkFQSF9IKSAkKFRBUkdFVF9IKSAkKEZVTkNUSU9OX0gpICQoRkxB R1NfSCkgJChSVExfSCkgJChUUkVFX0dJTVBMRV9IKSBcCi0tICAkKFRSRUVfRFVNUF9IKQotKyAg JChUUkVFX0RVTVBfSCkgZGVidWcuaAotIGZvcnRyYW4vdHJhbnMtdHlwZXMubzogJChHRk9SVFJB Tl9UUkFOU19ERVBTKSBndC1mb3J0cmFuLXRyYW5zLXR5cGVzLmggXAotICAgJChSRUFMX0gpIHRv cGxldi5oICQoVEFSR0VUX0gpICQoRkxBR1NfSCkgZHdhcmYyb3V0LmgKLSBmb3J0cmFuL3RyYW5z LWNvbnN0Lm86ICQoR0ZPUlRSQU5fVFJBTlNfREVQUykKLS0tLSBnY2MvZm9ydHJhbi9nZm9ydHJh bi5oLmpqCTIwMDgtMDgtMjEgMTA6MTk6NDkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL2ZvcnRy YW4vZ2ZvcnRyYW4uaAkyMDA4LTA4LTIxIDEwOjIxOjMwLjAwMDAwMDAwMCArMDIwMAotQEAgLTEw OTMsNiArMTA5MywzNSBAQCBnZmNfZW50cnlfbGlzdDsKLSAjZGVmaW5lIGdmY19nZXRfZW50cnlf bGlzdCgpIFwKLSAgIChnZmNfZW50cnlfbGlzdCAqKSBnZmNfZ2V0bWVtKHNpemVvZihnZmNfZW50 cnlfbGlzdCkpCi0gCi0rLyogTGlzdHMgb2YgcmVuYW1lIGluZm8gZm9yIHRoZSBVU0Ugc3RhdGVt ZW50LiAgKi8KLSsKLSt0eXBlZGVmIHN0cnVjdCBnZmNfdXNlX3JlbmFtZQotK3sKLSsgIGNoYXIg bG9jYWxfbmFtZVtHRkNfTUFYX1NZTUJPTF9MRU4gKyAxXSwgdXNlX25hbWVbR0ZDX01BWF9TWU1C T0xfTEVOICsgMV07Ci0rICBzdHJ1Y3QgZ2ZjX3VzZV9yZW5hbWUgKm5leHQ7Ci0rICBpbnQgZm91 bmQ7Ci0rICBnZmNfaW50cmluc2ljX29wIG9wZXJhdG9yOwotKyAgbG9jdXMgd2hlcmU7Ci0rfQot K2dmY191c2VfcmVuYW1lOwotKwotKyNkZWZpbmUgZ2ZjX2dldF91c2VfcmVuYW1lKCkgWENORVcg KGdmY191c2VfcmVuYW1lKTsKLSsKLSsvKiBBIGxpc3Qgb2YgYWxsIFVTRSBzdGF0ZW1lbnRzIGlu IGEgbmFtZXNwYWNlLiAgKi8KLSsKLSt0eXBlZGVmIHN0cnVjdCBnZmNfdXNlX2xpc3QKLSt7Ci0r ICBjb25zdCBjaGFyICptb2R1bGVfbmFtZTsKLSsgIGludCBvbmx5X2ZsYWc7Ci0rICBzdHJ1Y3Qg Z2ZjX3VzZV9yZW5hbWUgKnJlbmFtZTsKLSsgIC8qIE5leHQgVVNFIHN0YXRlbWVudC4gICovCi0r ICBzdHJ1Y3QgZ2ZjX3VzZV9saXN0ICpuZXh0OwotK30KLStnZmNfdXNlX2xpc3Q7Ci0rCi0rI2Rl ZmluZSBnZmNfZ2V0X3VzZV9saXN0KCkgXAotKyAgKGdmY191c2VfbGlzdCAqKSBnZmNfZ2V0bWVt KHNpemVvZihnZmNfdXNlX2xpc3QpKQotKwotIC8qIFdpdGhpbiBhIG5hbWVzcGFjZSwgc3ltYm9s cyBhcmUgcG9pbnRlZCB0byBieSBzeW10cmVlIG5vZGVzIHRoYXQKLSAgICBhcmUgbGlua2VkIHRv Z2V0aGVyIGluIGEgYmFsYW5jZWQgYmluYXJ5IHRyZWUuICBUaGVyZSBjYW4gYmUKLSAgICBzZXZl cmFsIHN5bXRyZWVzIHBvaW50aW5nIHRvIHRoZSBzYW1lIHN5bWJvbCBub2RlIHZpYSBVU0UKLUBA IC0xMTg5LDYgKzEyMTgsOSBAQCB0eXBlZGVmIHN0cnVjdCBnZmNfbmFtZXNwYWNlCi0gICAvKiBB IGxpc3Qgb2YgYWxsIGFsdGVybmF0ZSBlbnRyeSBwb2ludHMgdG8gdGhpcyBwcm9jZWR1cmUgKG9y IE5VTEwpLiAgKi8KLSAgIGdmY19lbnRyeV9saXN0ICplbnRyaWVzOwotIAotKyAgLyogQSBsaXN0 IG9mIFVTRSBzdGF0ZW1lbnRzIGluIHRoaXMgbmFtZXNwYWNlLiAgKi8KLSsgIGdmY191c2VfbGlz dCAqdXNlX3N0bXRzOwotKwotICAgLyogU2V0IHRvIDEgaWYgbmFtZXNwYWNlIGlzIGEgQkxPQ0sg REFUQSBwcm9ncmFtIHVuaXQuICAqLwotICAgaW50IGlzX2Jsb2NrX2RhdGE7Ci0gCi1AQCAtMjM0 MCw2ICsyMzcyLDcgQEAgdm9pZCBnZmNfbW9kdWxlX2luaXRfMiAodm9pZCk7Ci0gdm9pZCBnZmNf bW9kdWxlX2RvbmVfMiAodm9pZCk7Ci0gdm9pZCBnZmNfZHVtcF9tb2R1bGUgKGNvbnN0IGNoYXIg KiwgaW50KTsKLSBib29sIGdmY19jaGVja19hY2Nlc3MgKGdmY19hY2Nlc3MsIGdmY19hY2Nlc3Mp OwotK3ZvaWQgZ2ZjX2ZyZWVfdXNlX3N0bXRzIChnZmNfdXNlX2xpc3QgKik7Ci0gCi0gLyogcHJp bWFyeS5jICovCi0gc3ltYm9sX2F0dHJpYnV0ZSBnZmNfdmFyaWFibGVfYXR0ciAoZ2ZjX2V4cHIg KiwgZ2ZjX3R5cGVzcGVjICopOwotLS0tIGdjYy9mb3J0cmFuL3N5bWJvbC5jLmpqCTIwMDgtMDgt MjEgMTA6MTk6NDkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL2ZvcnRyYW4vc3ltYm9sLmMJMjAw OC0wOC0yMSAxMDoyMTozMC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yOTAzLDYgKzI5MDMsNyBAQCBn ZmNfZnJlZV9uYW1lc3BhY2UgKGdmY19uYW1lc3BhY2UgKm5zKQotIAotICAgZ2ZjX2ZyZWVfZXF1 aXYgKG5zLT5lcXVpdik7Ci0gICBnZmNfZnJlZV9lcXVpdl9saXN0cyAobnMtPmVxdWl2X2xpc3Rz KTsKLSsgIGdmY19mcmVlX3VzZV9zdG10cyAobnMtPnVzZV9zdG10cyk7Ci0gCi0gICBmb3IgKGkg PSBHRkNfSU5UUklOU0lDX0JFR0lOOyBpICE9IEdGQ19JTlRSSU5TSUNfRU5EOyBpKyspCi0gICAg IGdmY19mcmVlX2ludGVyZmFjZSAobnMtPm9wZXJhdG9yW2ldKTsKLS0tLSBnY2MvZm9ydHJhbi90 cmFucy10eXBlcy5jLmpqCTIwMDgtMDgtMjEgMTA6MTk6NDkuMDAwMDAwMDAwICswMjAwCi0rKysg Z2NjL2ZvcnRyYW4vdHJhbnMtdHlwZXMuYwkyMDA4LTA4LTIxIDEwOjIxOjMwLjAwMDAwMDAwMCAr MDIwMAotQEAgLTE5MzQsMTIgKzE5MzQsMjMgQEAgZ2ZjX2dldF9kZXJpdmVkX3R5cGUgKGdmY19z eW1ib2wgKiBkZXJpdgotIAotICAgZ2ZjX2ZpbmlzaF90eXBlICh0eXBlbm9kZSk7Ci0gICBnZmNf c2V0X2RlY2xfbG9jYXRpb24gKFRZUEVfU1RVQl9ERUNMICh0eXBlbm9kZSksICZkZXJpdmVkLT5k ZWNsYXJlZF9hdCk7Ci0rICBpZiAoZGVyaXZlZC0+bW9kdWxlICYmIGRlcml2ZWQtPm5zLT5wcm9j X25hbWUtPmF0dHIuZmxhdm9yID09IEZMX01PRFVMRSkKLSsgICAgewotKyAgICAgIGlmIChkZXJp dmVkLT5ucy0+cHJvY19uYW1lLT5iYWNrZW5kX2RlY2wKLSsJICAmJiBUUkVFX0NPREUgKGRlcml2 ZWQtPm5zLT5wcm9jX25hbWUtPmJhY2tlbmRfZGVjbCkKLSsJICAgICA9PSBOQU1FU1BBQ0VfREVD TCkKLSsJewotKwkgIFRZUEVfQ09OVEVYVCAodHlwZW5vZGUpID0gZGVyaXZlZC0+bnMtPnByb2Nf bmFtZS0+YmFja2VuZF9kZWNsOwotKwkgIERFQ0xfQ09OVEVYVCAoVFlQRV9TVFVCX0RFQ0wgKHR5 cGVub2RlKSkKLSsJICAgID0gZGVyaXZlZC0+bnMtPnByb2NfbmFtZS0+YmFja2VuZF9kZWNsOwot Kwl9Ci0rICAgIH0KLSAKLSAgIGRlcml2ZWQtPmJhY2tlbmRfZGVjbCA9IHR5cGVub2RlOwotIAot LSAgICAvKiBBZGQgdGhpcyBiYWNrZW5kX2RlY2wgdG8gYWxsIHRoZSBvdGhlciwgZXF1YWwgZGVy aXZlZCB0eXBlcy4gICovCi0tICAgIGZvciAoZHQgPSBnZmNfZGVyaXZlZF90eXBlczsgZHQ7IGR0 ID0gZHQtPm5leHQpCi0tICAgICAgY29weV9kdF9kZWNsc19pZmVxdWFsIChkZXJpdmVkLCBkdC0+ ZGVyaXZlZCk7Ci0rICAvKiBBZGQgdGhpcyBiYWNrZW5kX2RlY2wgdG8gYWxsIHRoZSBvdGhlciwg ZXF1YWwgZGVyaXZlZCB0eXBlcy4gICovCi0rICBmb3IgKGR0ID0gZ2ZjX2Rlcml2ZWRfdHlwZXM7 IGR0OyBkdCA9IGR0LT5uZXh0KQotKyAgICBjb3B5X2R0X2RlY2xzX2lmZXF1YWwgKGRlcml2ZWQs IGR0LT5kZXJpdmVkKTsKLSAKLSAgIHJldHVybiBkZXJpdmVkLT5iYWNrZW5kX2RlY2w7Ci0gfQot LS0tIGdjYy9mb3J0cmFuL3RyYW5zLmguamoJMjAwOC0wOC0yMSAxMDoxOTo0OS4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnY2MvZm9ydHJhbi90cmFucy5oCTIwMDgtMDgtMjEgMTA6MjE6MzAuMDAwMDAw MDAwICswMjAwCi1AQCAtNDI5LDYgKzQyOSwxNiBAQCB2b2lkIGdmY19nZW5lcmF0ZV9ibG9ja19k YXRhIChnZmNfbmFtZXNwCi0gLyogT3V0cHV0IGEgZGVjbCBmb3IgYSBtb2R1bGUgdmFyaWFibGUu ICAqLwotIHZvaWQgZ2ZjX2dlbmVyYXRlX21vZHVsZV92YXJzIChnZmNfbmFtZXNwYWNlICopOwot IAotK3N0cnVjdCBtb2R1bGVfaHRhYl9lbnRyeSBHVFkoKCkpCi0rewotKyAgY29uc3QgY2hhciAq bmFtZTsKLSsgIHRyZWUgbmFtZXNwYWNlX2RlY2w7Ci0rICBodGFiX3QgR1RZICgocGFyYW1faXMg KHVuaW9uIHRyZWVfbm9kZSkpKSBkZWNsczsKLSt9OwotKwotK3N0cnVjdCBtb2R1bGVfaHRhYl9l bnRyeSAqZ2ZjX2ZpbmRfbW9kdWxlIChjb25zdCBjaGFyICopOwotK3ZvaWQgZ2ZjX21vZHVsZV9h ZGRfZGVjbCAoc3RydWN0IG1vZHVsZV9odGFiX2VudHJ5ICosIHRyZWUpOwotKwotIC8qIEdldCBh bmQgc2V0IHRoZSBjdXJyZW50IGxvY2F0aW9uLiAgKi8KLSB2b2lkIGdmY19zZXRfYmFja2VuZF9s b2N1cyAobG9jdXMgKik7Ci0gdm9pZCBnZmNfZ2V0X2JhY2tlbmRfbG9jdXMgKGxvY3VzICopOwot LS0tIGdjYy9mb3J0cmFuL3RyYW5zLWRlY2wuYwkyMDA4LTA4LTIxIDExOjU2OjA5LjAwMDAwMDAw MCArMDIwMAotKysrIGdjYy9mb3J0cmFuL3RyYW5zLWRlY2wuYwkyMDA4LTA4LTIyIDIxOjMxOjI4 LjAwMDAwMDAwMCArMDIwMAotQEAgLTM1LDYgKzM1LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0 aGUgZmlsZSBDT1BZSU5HMy4gIAotICNpbmNsdWRlICJmdW5jdGlvbi5oIgotICNpbmNsdWRlICJm bGFncy5oIgotICNpbmNsdWRlICJjZ3JhcGguaCIKLSsjaW5jbHVkZSAiZGVidWcuaCIKLSAjaW5j bHVkZSAiZ2ZvcnRyYW4uaCIKLSAjaW5jbHVkZSAidHJhbnMuaCIKLSAjaW5jbHVkZSAidHJhbnMt dHlwZXMuaCIKLUBAIC05ODIsNyArOTgzLDExIEBAIGdmY19nZXRfc3ltYm9sX2RlY2wgKGdmY19z eW1ib2wgKiBzeW0pCi0gICAgICBUaGlzIGlzIGRvbmUgaGVyZSByYXRoZXIgdGhhbiBpbiBnZmNf ZmluaXNoX3Zhcl9kZWNsIGJlY2F1c2UgaXQKLSAgICAgIGlzIGRpZmZlcmVudCBmb3Igc3RyaW5n IGxlbmd0aCB2YXJpYWJsZXMuICAqLwotICAgaWYgKHN5bS0+bW9kdWxlKQotLSAgICBTRVRfREVD TF9BU1NFTUJMRVJfTkFNRSAoZGVjbCwgZ2ZjX3N5bV9tYW5nbGVkX2lkZW50aWZpZXIgKHN5bSkp OwotKyAgICB7Ci0rICAgICAgU0VUX0RFQ0xfQVNTRU1CTEVSX05BTUUgKGRlY2wsIGdmY19zeW1f bWFuZ2xlZF9pZGVudGlmaWVyIChzeW0pKTsKLSsgICAgICBpZiAoc3ltLT5hdHRyLnVzZV9hc3Nv YykKLSsJREVDTF9JR05PUkVEX1AgKGRlY2wpID0gMTsKLSsgICAgfQotIAotICAgaWYgKHN5bS0+ YXR0ci5kaW1lbnNpb24pCi0gICAgIHsKLUBAIC0xMjQ3LDcgKzEyNTIsOSBAQCBidWlsZF9mdW5j dGlvbl9kZWNsIChnZmNfc3ltYm9sICogc3ltKQotIAotICAgLyogQWxsb3cgb25seSBvbmUgbmVz dGluZyBsZXZlbC4gIEFsbG93IHB1YmxpYyBkZWNsYXJhdGlvbnMuICAqLwotICAgZ2NjX2Fzc2Vy dCAoY3VycmVudF9mdW5jdGlvbl9kZWNsID09IE5VTExfVFJFRQotLQkgIHx8IERFQ0xfQ09OVEVY VCAoY3VycmVudF9mdW5jdGlvbl9kZWNsKSA9PSBOVUxMX1RSRUUpOwotKwkgICAgICB8fCBERUNM X0NPTlRFWFQgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCkgPT0gTlVMTF9UUkVFCi0rCSAgICAgIHx8 IFRSRUVfQ09ERSAoREVDTF9DT05URVhUIChjdXJyZW50X2Z1bmN0aW9uX2RlY2wpKQotKwkJID09 IE5BTUVTUEFDRV9ERUNMKTsKLSAKLSAgIHR5cGUgPSBnZmNfZ2V0X2Z1bmN0aW9uX3R5cGUgKHN5 bSk7Ci0gICBmbmRlY2wgPSBidWlsZF9kZWNsIChGVU5DVElPTl9ERUNMLCBnZmNfc3ltX2lkZW50 aWZpZXIgKHN5bSksIHR5cGUpOwotQEAgLTI3OTAsNiArMjc5Nyw4OCBAQCBnZmNfdHJhbnNfZGVm ZXJyZWRfdmFycyAoZ2ZjX3N5bWJvbCAqIHByCi0gICByZXR1cm4gZ2ZjX2ZpbmlzaF9ibG9jayAo JmJvZHkpOwotIH0KLSAKLStzdGF0aWMgR1RZICgocGFyYW1faXMgKHN0cnVjdCBtb2R1bGVfaHRh Yl9lbnRyeSkpKSBodGFiX3QgbW9kdWxlX2h0YWI7Ci0rCi0rLyogSGFzaCBhbmQgZXF1YWxpdHkg ZnVuY3Rpb25zIGZvciBtb2R1bGVfaHRhYi4gICovCi0rCi0rc3RhdGljIGhhc2h2YWxfdAotK21v ZHVsZV9odGFiX2RvX2hhc2ggKGNvbnN0IHZvaWQgKngpCi0rewotKyAgcmV0dXJuIGh0YWJfaGFz aF9zdHJpbmcgKCgoY29uc3Qgc3RydWN0IG1vZHVsZV9odGFiX2VudHJ5ICopeCktPm5hbWUpOwot K30KLSsKLStzdGF0aWMgaW50Ci0rbW9kdWxlX2h0YWJfZXEgKGNvbnN0IHZvaWQgKngxLCBjb25z dCB2b2lkICp4MikKLSt7Ci0rICByZXR1cm4gc3RyY21wICgoKChjb25zdCBzdHJ1Y3QgbW9kdWxl X2h0YWJfZW50cnkgKil4MSktPm5hbWUpLAotKwkJIChjb25zdCBjaGFyICopeDIpID09IDA7Ci0r fQotKwotKy8qIEhhc2ggYW5kIGVxdWFsaXR5IGZ1bmN0aW9ucyBmb3IgbW9kdWxlX2h0YWIncyBk ZWNscy4gICovCi0rCi0rc3RhdGljIGhhc2h2YWxfdAotK21vZHVsZV9odGFiX2RlY2xzX2hhc2gg KGNvbnN0IHZvaWQgKngpCi0rewotKyAgY29uc3RfdHJlZSB0ID0gKGNvbnN0X3RyZWUpIHg7Ci0r ICBjb25zdF90cmVlIG4gPSBERUNMX05BTUUgKHQpOwotKyAgaWYgKG4gPT0gTlVMTF9UUkVFKQot KyAgICBuID0gVFlQRV9OQU1FIChUUkVFX1RZUEUgKHQpKTsKLSsgIHJldHVybiBodGFiX2hhc2hf c3RyaW5nIChJREVOVElGSUVSX1BPSU5URVIgKG4pKTsKLSt9Ci0rCi0rc3RhdGljIGludAotK21v ZHVsZV9odGFiX2RlY2xzX2VxIChjb25zdCB2b2lkICp4MSwgY29uc3Qgdm9pZCAqeDIpCi0rewot KyAgY29uc3RfdHJlZSB0MSA9IChjb25zdF90cmVlKSB4MTsKLSsgIGNvbnN0X3RyZWUgbjEgPSBE RUNMX05BTUUgKHQxKTsKLSsgIGlmIChuMSA9PSBOVUxMX1RSRUUpCi0rICAgIG4xID0gVFlQRV9O QU1FIChUUkVFX1RZUEUgKHQxKSk7Ci0rICByZXR1cm4gc3RyY21wIChJREVOVElGSUVSX1BPSU5U RVIgKG4xKSwgKGNvbnN0IGNoYXIgKikgeDIpID09IDA7Ci0rfQotKwotK3N0cnVjdCBtb2R1bGVf aHRhYl9lbnRyeSAqCi0rZ2ZjX2ZpbmRfbW9kdWxlIChjb25zdCBjaGFyICpuYW1lKQotK3sKLSsg IHZvaWQgKipzbG90OwotKwotKyAgaWYgKCEgbW9kdWxlX2h0YWIpCi0rICAgIG1vZHVsZV9odGFi ID0gaHRhYl9jcmVhdGVfZ2djICgxMCwgbW9kdWxlX2h0YWJfZG9faGFzaCwKLSsJCQkJICAgbW9k dWxlX2h0YWJfZXEsIE5VTEwpOwotKwotKyAgc2xvdCA9IGh0YWJfZmluZF9zbG90X3dpdGhfaGFz aCAobW9kdWxlX2h0YWIsIG5hbWUsCi0rCQkJCSAgIGh0YWJfaGFzaF9zdHJpbmcgKG5hbWUpLCBJ TlNFUlQpOwotKyAgaWYgKCpzbG90ID09IE5VTEwpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgbW9k dWxlX2h0YWJfZW50cnkgKmVudHJ5ID0gR0dDX0NORVcgKHN0cnVjdCBtb2R1bGVfaHRhYl9lbnRy eSk7Ci0rCi0rICAgICAgZW50cnktPm5hbWUgPSBnZmNfZ2V0X3N0cmluZyAobmFtZSk7Ci0rICAg ICAgZW50cnktPmRlY2xzID0gaHRhYl9jcmVhdGVfZ2djICgxMCwgbW9kdWxlX2h0YWJfZGVjbHNf aGFzaCwKLSsJCQkJICAgICAgbW9kdWxlX2h0YWJfZGVjbHNfZXEsIE5VTEwpOwotKyAgICAgICpz bG90ID0gKHZvaWQgKikgZW50cnk7Ci0rICAgIH0KLSsgIHJldHVybiAoc3RydWN0IG1vZHVsZV9o dGFiX2VudHJ5ICopICpzbG90OwotK30KLSsKLSt2b2lkCi0rZ2ZjX21vZHVsZV9hZGRfZGVjbCAo c3RydWN0IG1vZHVsZV9odGFiX2VudHJ5ICplbnRyeSwgdHJlZSBkZWNsKQotK3sKLSsgIHZvaWQg KipzbG90OwotKyAgY29uc3QgY2hhciAqbmFtZTsKLSsKLSsgIGlmIChERUNMX05BTUUgKGRlY2wp KQotKyAgICBuYW1lID0gSURFTlRJRklFUl9QT0lOVEVSIChERUNMX05BTUUgKGRlY2wpKTsKLSsg IGVsc2UKLSsgICAgewotKyAgICAgIGdjY19hc3NlcnQgKFRSRUVfQ09ERSAoZGVjbCkgPT0gVFlQ RV9ERUNMKTsKLSsgICAgICBuYW1lID0gSURFTlRJRklFUl9QT0lOVEVSIChUWVBFX05BTUUgKFRS RUVfVFlQRSAoZGVjbCkpKTsKLSsgICAgfQotKyAgc2xvdCA9IGh0YWJfZmluZF9zbG90X3dpdGhf aGFzaCAoZW50cnktPmRlY2xzLCBuYW1lLAotKwkJCQkgICBodGFiX2hhc2hfc3RyaW5nIChuYW1l KSwgSU5TRVJUKTsKLSsgIGlmICgqc2xvdCA9PSBOVUxMKQotKyAgICAqc2xvdCA9ICh2b2lkICop IGRlY2w7Ci0rfQotKwotK3N0YXRpYyBzdHJ1Y3QgbW9kdWxlX2h0YWJfZW50cnkgKmN1cl9tb2R1 bGU7Ci0gCi0gLyogT3V0cHV0IGFuIGluaXRpYWxpemVkIGRlY2wgZm9yIGEgbW9kdWxlIHZhcmlh YmxlLiAgKi8KLSAKLUBAIC0yODA5LDYgKzI4OTgsMjIgQEAgZ2ZjX2NyZWF0ZV9tb2R1bGVfdmFy aWFibGUgKGdmY19zeW1ib2wgKgotICAgICAgICYmIHN5bS0+dHMudHlwZSA9PSBCVF9ERVJJVkVE KQotICAgICBzeW0tPmJhY2tlbmRfZGVjbCA9IGdmY190eXBlbm9kZV9mb3Jfc3BlYyAoJihzeW0t PnRzKSk7Ci0gCi0rICBpZiAoc3ltLT5hdHRyLmZsYXZvciA9PSBGTF9ERVJJVkVECi0rICAgICAg JiYgc3ltLT5iYWNrZW5kX2RlY2wKLSsgICAgICAmJiBUUkVFX0NPREUgKHN5bS0+YmFja2VuZF9k ZWNsKSA9PSBSRUNPUkRfVFlQRSkKLSsgICAgewotKyAgICAgIGRlY2wgPSBzeW0tPmJhY2tlbmRf ZGVjbDsKLSsgICAgICBnY2NfYXNzZXJ0IChzeW0tPm5zLT5wcm9jX25hbWUtPmF0dHIuZmxhdm9y ID09IEZMX01PRFVMRSk7Ci0rICAgICAgZ2NjX2Fzc2VydCAoVFlQRV9DT05URVhUIChkZWNsKSA9 PSBOVUxMX1RSRUUKLSsJCSAgfHwgVFlQRV9DT05URVhUIChkZWNsKSA9PSBzeW0tPm5zLT5wcm9j X25hbWUtPmJhY2tlbmRfZGVjbCk7Ci0rICAgICAgZ2NjX2Fzc2VydCAoREVDTF9DT05URVhUIChU WVBFX1NUVUJfREVDTCAoZGVjbCkpID09IE5VTExfVFJFRQotKwkJICB8fCBERUNMX0NPTlRFWFQg KFRZUEVfU1RVQl9ERUNMIChkZWNsKSkKLSsJCSAgICAgPT0gc3ltLT5ucy0+cHJvY19uYW1lLT5i YWNrZW5kX2RlY2wpOwotKyAgICAgIFRZUEVfQ09OVEVYVCAoZGVjbCkgPSBzeW0tPm5zLT5wcm9j X25hbWUtPmJhY2tlbmRfZGVjbDsKLSsgICAgICBERUNMX0NPTlRFWFQgKFRZUEVfU1RVQl9ERUNM IChkZWNsKSkgPSBzeW0tPm5zLT5wcm9jX25hbWUtPmJhY2tlbmRfZGVjbDsKLSsgICAgICBnZmNf bW9kdWxlX2FkZF9kZWNsIChjdXJfbW9kdWxlLCBUWVBFX1NUVUJfREVDTCAoZGVjbCkpOwotKyAg ICB9Ci0rCi0gICAvKiBPbmx5IG91dHB1dCB2YXJpYWJsZXMgYW5kIGFycmF5IHZhbHVlZCwgb3Ig ZGVyaXZlZCB0eXBlLAotICAgICAgcGFyYW1ldGVycy4gICovCi0gICBpZiAoc3ltLT5hdHRyLmZs YXZvciAhPSBGTF9WQVJJQUJMRQotQEAgLTI4MTYsNiArMjkyMSwxNSBAQCBnZmNfY3JlYXRlX21v ZHVsZV92YXJpYWJsZSAoZ2ZjX3N5bWJvbCAqCi0gCSAgICAgICAmJiAoc3ltLT5hdHRyLmRpbWVu c2lvbiB8fCBzeW0tPnRzLnR5cGUgPT0gQlRfREVSSVZFRCkpKQotICAgICByZXR1cm47Ci0gCi0r ICBpZiAoKHN5bS0+YXR0ci5pbl9jb21tb24gfHwgc3ltLT5hdHRyLmluX2VxdWl2YWxlbmNlKSAm JiBzeW0tPmJhY2tlbmRfZGVjbCkKLSsgICAgewotKyAgICAgIGRlY2wgPSBzeW0tPmJhY2tlbmRf ZGVjbDsKLSsgICAgICBnY2NfYXNzZXJ0IChERUNMX0NPTlRFWFQgKGRlY2wpID09IE5VTExfVFJF RSk7Ci0rICAgICAgZ2NjX2Fzc2VydCAoc3ltLT5ucy0+cHJvY19uYW1lLT5hdHRyLmZsYXZvciA9 PSBGTF9NT0RVTEUpOwotKyAgICAgIERFQ0xfQ09OVEVYVCAoZGVjbCkgPSBzeW0tPm5zLT5wcm9j X25hbWUtPmJhY2tlbmRfZGVjbDsKLSsgICAgICBnZmNfbW9kdWxlX2FkZF9kZWNsIChjdXJfbW9k dWxlLCBkZWNsKTsKLSsgICAgfQotKwotICAgLyogRG9uJ3QgZ2VuZXJhdGUgdmFyaWFibGVzIGZy b20gb3RoZXIgbW9kdWxlcy4gVmFyaWFibGVzIGZyb20KLSAgICAgIENPTU1PTnMgd2lsbCBhbHJl YWR5IGhhdmUgYmVlbiBnZW5lcmF0ZWQuICAqLwotICAgaWYgKHN5bS0+YXR0ci51c2VfYXNzb2Mg fHwgc3ltLT5hdHRyLmluX2NvbW1vbikKLUBAIC0yODIzLDggKzI5MzcsOCBAQCBnZmNfY3JlYXRl X21vZHVsZV92YXJpYWJsZSAoZ2ZjX3N5bWJvbCAqCi0gCi0gICAvKiBFcXVpdmFsZW5jZWQgdmFy aWFibGVzIGFycml2ZSBoZXJlIGFmdGVyIGNyZWF0aW9uLiAgKi8KLSAgIGlmIChzeW0tPmJhY2tl bmRfZGVjbAotLQkmJiAoc3ltLT5lcXVpdl9idWlsdCB8fCBzeW0tPmF0dHIuaW5fZXF1aXZhbGVu Y2UpKQotLSAgICAgIHJldHVybjsKLSsgICAgICAmJiAoc3ltLT5lcXVpdl9idWlsdCB8fCBzeW0t PmF0dHIuaW5fZXF1aXZhbGVuY2UpKQotKyAgICByZXR1cm47Ci0gCi0gICBpZiAoc3ltLT5iYWNr ZW5kX2RlY2wpCi0gICAgIGludGVybmFsX2Vycm9yICgiYmFja2VuZCBkZWNsIGZvciBtb2R1bGUg dmFyaWFibGUgJXMgYWxyZWFkeSBleGlzdHMiLAotQEAgLTI4MzcsNyArMjk1MSwxMSBAQCBnZmNf Y3JlYXRlX21vZHVsZV92YXJpYWJsZSAoZ2ZjX3N5bWJvbCAqCi0gCi0gICAvKiBDcmVhdGUgdGhl IHZhcmlhYmxlLiAgKi8KLSAgIHB1c2hkZWNsIChkZWNsKTsKLSsgIGdjY19hc3NlcnQgKERFQ0xf Q09OVEVYVCAoZGVjbCkgPT0gTlVMTF9UUkVFKTsKLSsgIGdjY19hc3NlcnQgKHN5bS0+bnMtPnBy b2NfbmFtZS0+YXR0ci5mbGF2b3IgPT0gRkxfTU9EVUxFKTsKLSsgIERFQ0xfQ09OVEVYVCAoZGVj bCkgPSBzeW0tPm5zLT5wcm9jX25hbWUtPmJhY2tlbmRfZGVjbDsKLSAgIHJlc3Rfb2ZfZGVjbF9j b21waWxhdGlvbiAoZGVjbCwgMSwgMCk7Ci0rICBnZmNfbW9kdWxlX2FkZF9kZWNsIChjdXJfbW9k dWxlLCBkZWNsKTsKLSAKLSAgIC8qIEFsc28gYWRkIGxlbmd0aCBvZiBzdHJpbmdzLiAgKi8KLSAg IGlmIChzeW0tPnRzLnR5cGUgPT0gQlRfQ0hBUkFDVEVSKQotQEAgLTI4NjAsNiArMjk3OCw3IEBA IHZvaWQKLSBnZmNfZ2VuZXJhdGVfbW9kdWxlX3ZhcnMgKGdmY19uYW1lc3BhY2UgKiBucykKLSB7 Ci0gICBtb2R1bGVfbmFtZXNwYWNlID0gbnM7Ci0rICBjdXJfbW9kdWxlID0gZ2ZjX2ZpbmRfbW9k dWxlIChucy0+cHJvY19uYW1lLT5uYW1lKTsKLSAKLSAgIC8qIENoZWNrIGlmIHRoZSBmcm9udGVu ZCBsZWZ0IHRoZSBuYW1lc3BhY2UgaW4gYSByZWFzb25hYmxlIHN0YXRlLiAgKi8KLSAgIGdjY19h c3NlcnQgKG5zLT5wcm9jX25hbWUgJiYgIW5zLT5wcm9jX25hbWUtPnRsaW5rKTsKLUBAIC0yODY5 LDYgKzI5ODgsNzkgQEAgZ2ZjX2dlbmVyYXRlX21vZHVsZV92YXJzIChnZmNfbmFtZXNwYWNlIAot IAotICAgLyogQ3JlYXRlIGRlY2xzIGZvciBhbGwgdGhlIG1vZHVsZSB2YXJpYWJsZXMuICAqLwot ICAgZ2ZjX3RyYXZlcnNlX25zIChucywgZ2ZjX2NyZWF0ZV9tb2R1bGVfdmFyaWFibGUpOwotKwot KyAgY3VyX21vZHVsZSA9IE5VTEw7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ2ZjX3RyYW5zX3Vz ZV9zdG10cyAoZ2ZjX25hbWVzcGFjZSAqIG5zKQotK3sKLSsgIGdmY191c2VfbGlzdCAqdXNlX3N0 bXQ7Ci0rICBmb3IgKHVzZV9zdG10ID0gbnMtPnVzZV9zdG10czsgdXNlX3N0bXQ7IHVzZV9zdG10 ID0gdXNlX3N0bXQtPm5leHQpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgbW9kdWxlX2h0YWJfZW50 cnkgKmVudHJ5Ci0rCT0gZ2ZjX2ZpbmRfbW9kdWxlICh1c2Vfc3RtdC0+bW9kdWxlX25hbWUpOwot KyAgICAgIGdmY191c2VfcmVuYW1lICpyZW50OwotKwotKyAgICAgIGlmIChlbnRyeS0+bmFtZXNw YWNlX2RlY2wgPT0gTlVMTCkKLSsJewotKwkgIGVudHJ5LT5uYW1lc3BhY2VfZGVjbAotKwkgICAg PSBidWlsZF9kZWNsIChOQU1FU1BBQ0VfREVDTCwKLSsJCQkgIGdldF9pZGVudGlmaWVyICh1c2Vf c3RtdC0+bW9kdWxlX25hbWUpLAotKwkJCSAgdm9pZF90eXBlX25vZGUpOwotKwkgIERFQ0xfRVhU RVJOQUwgKGVudHJ5LT5uYW1lc3BhY2VfZGVjbCkgPSAxOwotKwl9Ci0rICAgICAgaWYgKCF1c2Vf c3RtdC0+b25seV9mbGFnKQotKwkoKmRlYnVnX2hvb2tzLT5pbXBvcnRlZF9tb2R1bGVfb3JfZGVj bCkgKGVudHJ5LT5uYW1lc3BhY2VfZGVjbCwKLSsJCQkJCQkgTlVMTF9UUkVFLAotKwkJCQkJCSBu cy0+cHJvY19uYW1lLT5iYWNrZW5kX2RlY2wsCi0rCQkJCQkJIGZhbHNlKTsKLSsgICAgICBmb3Ig KHJlbnQgPSB1c2Vfc3RtdC0+cmVuYW1lOyByZW50OyByZW50ID0gcmVudC0+bmV4dCkKLSsJewot KwkgIHRyZWUgZGVjbCwgbG9jYWxfbmFtZTsKLSsJICB2b2lkICoqc2xvdDsKLSsKLSsJICBpZiAo cmVudC0+b3BlcmF0b3IgIT0gSU5UUklOU0lDX05PTkUpCi0rCSAgICBjb250aW51ZTsKLSsKLSsJ ICBzbG90ID0gaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoIChlbnRyeS0+ZGVjbHMsIHJlbnQtPnVz ZV9uYW1lLAotKwkJCQkJICAgaHRhYl9oYXNoX3N0cmluZyAocmVudC0+dXNlX25hbWUpLAotKwkJ CQkJICAgSU5TRVJUKTsKLSsJICBpZiAoKnNsb3QgPT0gTlVMTCkKLSsJICAgIHsKLSsJICAgICAg Z2ZjX3N5bXRyZWUgKnN0OwotKwotKwkgICAgICBzdCA9IGdmY19maW5kX3N5bXRyZWUgKG5zLT5z eW1fcm9vdCwKLSsJCQkJICAgICByZW50LT5sb2NhbF9uYW1lWzBdCi0rCQkJCSAgICAgPyByZW50 LT5sb2NhbF9uYW1lIDogcmVudC0+dXNlX25hbWUpOwotKwkgICAgICBnY2NfYXNzZXJ0IChzdCAm JiBzdC0+bi5zeW0tPmF0dHIudXNlX2Fzc29jKTsKLSsJICAgICAgaWYgKHN0LT5uLnN5bS0+YmFj a2VuZF9kZWNsICYmIERFQ0xfUCAoc3QtPm4uc3ltLT5iYWNrZW5kX2RlY2wpKQotKwkJewotKwkJ ICBnY2NfYXNzZXJ0IChERUNMX0VYVEVSTkFMIChlbnRyeS0+bmFtZXNwYWNlX2RlY2wpKTsKLSsJ CSAgZGVjbCA9IGNvcHlfbm9kZSAoc3QtPm4uc3ltLT5iYWNrZW5kX2RlY2wpOwotKwkJICBERUNM X0NPTlRFWFQgKGRlY2wpID0gZW50cnktPm5hbWVzcGFjZV9kZWNsOwotKwkJICBERUNMX0VYVEVS TkFMIChkZWNsKSA9IDE7Ci0rCQkgIERFQ0xfSUdOT1JFRF9QIChkZWNsKSA9IDA7Ci0rCQkgIERF Q0xfSU5JVElBTCAoZGVjbCkgPSBOVUxMX1RSRUU7Ci0rCQl9Ci0rCSAgICAgIGVsc2UKLSsJCXsK LSsJCSAgKnNsb3QgPSBlcnJvcl9tYXJrX25vZGU7Ci0rCQkgIGh0YWJfY2xlYXJfc2xvdCAoZW50 cnktPmRlY2xzLCBzbG90KTsKLSsJCSAgY29udGludWU7Ci0rCQl9Ci0rCSAgICAgICpzbG90ID0g ZGVjbDsKLSsJICAgIH0KLSsJICBkZWNsID0gKHRyZWUpICpzbG90OwotKwkgIGlmIChyZW50LT5s b2NhbF9uYW1lWzBdKQotKwkgICAgbG9jYWxfbmFtZSA9IGdldF9pZGVudGlmaWVyIChyZW50LT5s b2NhbF9uYW1lKTsKLSsJICBlbHNlCi0rCSAgICBsb2NhbF9uYW1lID0gTlVMTF9UUkVFOwotKwkg ICgqZGVidWdfaG9va3MtPmltcG9ydGVkX21vZHVsZV9vcl9kZWNsKSAoZGVjbCwgbG9jYWxfbmFt ZSwKLSsJCQkJCQkgICBucy0+cHJvY19uYW1lLT5iYWNrZW5kX2RlY2wsCi0rCQkJCQkJICAgIXVz ZV9zdG10LT5vbmx5X2ZsYWcpOwotKwl9Ci0rICAgIH0KLSB9Ci0gCi0gc3RhdGljIHZvaWQKLUBA IC0zMzczLDYgKzM1NjcsOCBAQCBnZmNfZ2VuZXJhdGVfZnVuY3Rpb25fY29kZSAoZ2ZjX25hbWVz cGFjCi0gICAgICAgZ2ZjX2dpbXBsaWZ5X2Z1bmN0aW9uIChmbmRlY2wpOwotICAgICAgIGNncmFw aF9maW5hbGl6ZV9mdW5jdGlvbiAoZm5kZWNsLCBmYWxzZSk7Ci0gICAgIH0KLSsKLSsgIGdmY190 cmFuc191c2Vfc3RtdHMgKG5zKTsKLSB9Ci0gCi0gdm9pZAotQEAgLTM0NjQsNiArMzY2MCw3IEBA IGdmY19nZW5lcmF0ZV9ibG9ja19kYXRhIChnZmNfbmFtZXNwYWNlICoKLSAgIGRlY2wgPSBidWls ZF9kZWNsIChWQVJfREVDTCwgaWQsIGdmY19hcnJheV9pbmRleF90eXBlKTsKLSAgIFRSRUVfUFVC TElDIChkZWNsKSA9IDE7Ci0gICBUUkVFX1NUQVRJQyAoZGVjbCkgPSAxOwotKyAgREVDTF9JR05P UkVEX1AgKGRlY2wpID0gMTsKLSAKLSAgIHB1c2hkZWNsIChkZWNsKTsKLSAgIHJlc3Rfb2ZfZGVj bF9jb21waWxhdGlvbiAoZGVjbCwgMSwgMCk7Ci0tLS0gZ2NjL2ZvcnRyYW4vdHJhbnMtY29tbW9u LmMuamoJMjAwOC0wOC0yMSAxMDoxOTo0OS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvZm9ydHJh bi90cmFucy1jb21tb24uYwkyMDA4LTA4LTIxIDEwOjIxOjMwLjAwMDAwMDAwMCArMDIwMAotQEAg LTQxNiw2ICs0MTYsNyBAQCBidWlsZF9jb21tb25fZGVjbCAoZ2ZjX2NvbW1vbl9oZWFkICpjb20s Ci0gICAgICAgU0VUX0RFQ0xfQVNTRU1CTEVSX05BTUUgKGRlY2wsIGdmY19zeW1fbWFuZ2xlZF9j b21tb25faWQgKGNvbSkpOwotICAgICAgIFRSRUVfUFVCTElDIChkZWNsKSA9IDE7Ci0gICAgICAg VFJFRV9TVEFUSUMgKGRlY2wpID0gMTsKLSsgICAgICBERUNMX0lHTk9SRURfUCAoZGVjbCkgPSAx OwotICAgICAgIGlmICghY29tLT5pc19iaW5kX2MpCi0gCURFQ0xfQUxJR04gKGRlY2wpID0gQklH R0VTVF9BTElHTk1FTlQ7Ci0gICAgICAgZWxzZQotQEAgLTY4MCw2ICs2ODEsOCBAQCBjcmVhdGVf Y29tbW9uIChnZmNfY29tbW9uX2hlYWQgKmNvbSwgc2VnCi0gICAgICAgVFJFRV9QVUJMSUMgKHZh cl9kZWNsKSA9IFRSRUVfUFVCTElDIChkZWNsKTsKLSAgICAgICBUUkVFX1NUQVRJQyAodmFyX2Rl Y2wpID0gVFJFRV9TVEFUSUMgKGRlY2wpOwotICAgICAgIFRSRUVfVVNFRCAodmFyX2RlY2wpID0g VFJFRV9VU0VEIChkZWNsKTsKLSsgICAgICBpZiAocy0+c3ltLT5hdHRyLnVzZV9hc3NvYykKLSsJ REVDTF9JR05PUkVEX1AgKHZhcl9kZWNsKSA9IDE7Ci0gICAgICAgaWYgKHMtPnN5bS0+YXR0ci50 YXJnZXQpCi0gCVRSRUVfQUREUkVTU0FCTEUgKHZhcl9kZWNsKSA9IDE7Ci0gICAgICAgLyogVGhp cyBpcyBhIGZha2UgdmFyaWFibGUganVzdCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLiAgKi8KLS0t LSBnY2MvY3AvbmFtZS1sb29rdXAuYy5qagkyMDA4LTA4LTIxIDEwOjE5OjUyLjAwMDAwMDAwMCAr MDIwMAotKysrIGdjYy9jcC9uYW1lLWxvb2t1cC5jCTIwMDgtMDgtMjEgMTA6MjE6MzAuMDAwMDAw MDAwICswMjAwCi1AQCAtMzQwMSw3ICszNDAxLDggQEAgZG9fdXNpbmdfZGlyZWN0aXZlICh0cmVl IG5hbWVzcGFjZSkKLSAKLSAgIC8qIEVtaXQgZGVidWdnaW5nIGluZm8uICAqLwotICAgaWYgKCFw cm9jZXNzaW5nX3RlbXBsYXRlX2RlY2wpCi0tICAgICgqZGVidWdfaG9va3MtPmltcG9ydGVkX21v ZHVsZV9vcl9kZWNsKSAobmFtZXNwYWNlLCBjb250ZXh0KTsKLSsgICAgKCpkZWJ1Z19ob29rcy0+ aW1wb3J0ZWRfbW9kdWxlX29yX2RlY2wpIChuYW1lc3BhY2UsIE5VTExfVFJFRSwKLSsJCQkJCSAg ICAgY29udGV4dCwgZmFsc2UpOwotIH0KLSAKLSAvKiBEZWFsIHdpdGggYSB1c2luZy1kaXJlY3Rp dmUgc2VlbiBieSB0aGUgcGFyc2VyLiAgQ3VycmVudGx5IHdlIG9ubHkKLUBAIC01MjM0LDcgKzUy MzUsNyBAQCBjcF9lbWl0X2RlYnVnX2luZm9fZm9yX3VzaW5nICh0cmVlIHQsIHRyCi0gICAvKiBG SVhNRTogSGFuZGxlIFRFTVBMQVRFX0RFQ0xzLiAgKi8KLSAgIGZvciAodCA9IE9WTF9DVVJSRU5U ICh0KTsgdDsgdCA9IE9WTF9ORVhUICh0KSkKLSAgICAgaWYgKFRSRUVfQ09ERSAodCkgIT0gVEVN UExBVEVfREVDTCkKLS0gICAgICAoKmRlYnVnX2hvb2tzLT5pbXBvcnRlZF9tb2R1bGVfb3JfZGVj bCkgKHQsIGNvbnRleHQpOwotKyAgICAgICgqZGVidWdfaG9va3MtPmltcG9ydGVkX21vZHVsZV9v cl9kZWNsKSAodCwgTlVMTF9UUkVFLCBjb250ZXh0LCBmYWxzZSk7Ci0gfQotIAotICNpbmNsdWRl ICJndC1jcC1uYW1lLWxvb2t1cC5oIgotLS0tIGdjYy9kZWJ1Zy5oLmpqCTIwMDgtMDgtMjEgMTA6 MTk6NDkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL2RlYnVnLmgJMjAwOC0wOC0yMSAxMDoyMToz MC4wMDAwMDAwMDAgKzAyMDAKLUBAIC05OCw3ICs5OCw4IEBAIHN0cnVjdCBnY2NfZGVidWdfaG9v a3MKLSAgIHZvaWQgKCogdHlwZV9kZWNsKSAodHJlZSBkZWNsLCBpbnQgbG9jYWwpOwotIAotICAg LyogRGVidWcgaW5mb3JtYXRpb24gZm9yIGltcG9ydGVkIG1vZHVsZXMgYW5kIGRlY2xhcmF0aW9u cy4gICovCi0tICB2b2lkICgqIGltcG9ydGVkX21vZHVsZV9vcl9kZWNsKSAodHJlZSBkZWNsLCB0 cmVlIGNvbnRleHQpOwotKyAgdm9pZCAoKiBpbXBvcnRlZF9tb2R1bGVfb3JfZGVjbCkgKHRyZWUg ZGVjbCwgdHJlZSBuYW1lLAotKwkJCQkgICAgdHJlZSBjb250ZXh0LCBib29sIGNoaWxkKTsKLSAK LSAgIC8qIERFQ0wgaXMgYW4gaW5saW5lIGZ1bmN0aW9uLCB3aG9zZSBib2R5IGlzIHByZXNlbnQs IGJ1dCB3aGljaCBpcwotICAgICAgbm90IGJlaW5nIG91dHB1dCBhdCB0aGlzIHBvaW50LiAgKi8K LUBAIC0xMzksNyArMTQwLDcgQEAgZXh0ZXJuIHZvaWQgZGVidWdfbm90aGluZ19pbnQgKHVuc2ln bmVkIAotIGV4dGVybiB2b2lkIGRlYnVnX25vdGhpbmdfaW50X2ludCAodW5zaWduZWQgaW50LCB1 bnNpZ25lZCBpbnQpOwotIGV4dGVybiB2b2lkIGRlYnVnX25vdGhpbmdfdHJlZSAodHJlZSk7Ci0g ZXh0ZXJuIHZvaWQgZGVidWdfbm90aGluZ190cmVlX2ludCAodHJlZSwgaW50KTsKLS1leHRlcm4g dm9pZCBkZWJ1Z19ub3RoaW5nX3RyZWVfdHJlZSAodHJlZSwgdHJlZSk7Ci0rZXh0ZXJuIHZvaWQg ZGVidWdfbm90aGluZ190cmVlX3RyZWVfdHJlZV9ib29sICh0cmVlLCB0cmVlLCB0cmVlLCBib29s KTsKLSBleHRlcm4gYm9vbCBkZWJ1Z190cnVlX2NvbnN0X3RyZWUgKGNvbnN0X3RyZWUpOwotIGV4 dGVybiB2b2lkIGRlYnVnX25vdGhpbmdfcnR4IChydHgpOwotIAotLS0tIGdjYy92bXNkYmdvdXQu Yy5qagkyMDA4LTA4LTIxIDEwOjE5OjQ4LjAwMDAwMDAwMCArMDIwMAotKysrIGdjYy92bXNkYmdv dXQuYwkyMDA4LTA4LTIxIDEwOjIxOjMwLjAwMDAwMDAwMCArMDIwMAotQEAgLTIwNCw3ICsyMDQs NyBAQCBjb25zdCBzdHJ1Y3QgZ2NjX2RlYnVnX2hvb2tzIHZtc2RiZ19kZWJ1Ci0gICAgdm1zZGJn b3V0X2RlY2wsCi0gICAgdm1zZGJnb3V0X2dsb2JhbF9kZWNsLAotICAgIGRlYnVnX25vdGhpbmdf dHJlZV9pbnQsCSAgLyogdHlwZV9kZWNsICovCi0tICAgZGVidWdfbm90aGluZ190cmVlX3RyZWUs ICAgICAgIC8qIGltcG9ydGVkX21vZHVsZV9vcl9kZWNsICovCi0rICAgZGVidWdfbm90aGluZ190 cmVlX3RyZWVfdHJlZV9ib29sLCAvKiBpbXBvcnRlZF9tb2R1bGVfb3JfZGVjbCAqLwotICAgIGRl YnVnX25vdGhpbmdfdHJlZSwJCSAgLyogZGVmZXJyZWRfaW5saW5lX2Z1bmN0aW9uICovCi0gICAg dm1zZGJnb3V0X2Fic3RyYWN0X2Z1bmN0aW9uLAotICAgIGRlYnVnX25vdGhpbmdfcnR4LAkJICAv KiBsYWJlbCAqLwotLS0tIGdjYy9kYnhvdXQuYy5qagkyMDA4LTA4LTIxIDEwOjE5OjQ5LjAwMDAw MDAwMCArMDIwMAotKysrIGdjYy9kYnhvdXQuYwkyMDA4LTA4LTIxIDEwOjIxOjMwLjAwMDAwMDAw MCArMDIwMAotQEAgLTM2OSw3ICszNjksNyBAQCBjb25zdCBzdHJ1Y3QgZ2NjX2RlYnVnX2hvb2tz IGRieF9kZWJ1Z19oCi0gICBkYnhvdXRfZnVuY3Rpb25fZGVjbCwKLSAgIGRieG91dF9nbG9iYWxf ZGVjbCwJCSAgICAgICAgIC8qIGdsb2JhbF9kZWNsICovCi0gICBkYnhvdXRfdHlwZV9kZWNsLAkJ CSAvKiB0eXBlX2RlY2wgKi8KLS0gIGRlYnVnX25vdGhpbmdfdHJlZV90cmVlLCAgICAgICAgICAg ICAgIC8qIGltcG9ydGVkX21vZHVsZV9vcl9kZWNsICovCi0rICBkZWJ1Z19ub3RoaW5nX3RyZWVf dHJlZV90cmVlX2Jvb2wsCSAvKiBpbXBvcnRlZF9tb2R1bGVfb3JfZGVjbCAqLwotICAgZGVidWdf bm90aGluZ190cmVlLAkJICAgICAgICAgLyogZGVmZXJyZWRfaW5saW5lX2Z1bmN0aW9uICovCi0g ICBkZWJ1Z19ub3RoaW5nX3RyZWUsCQkgICAgICAgICAvKiBvdXRsaW5pbmdfaW5saW5lX2Z1bmN0 aW9uICovCi0gICBkZWJ1Z19ub3RoaW5nX3J0eCwJCSAgICAgICAgIC8qIGxhYmVsICovCi1AQCAt NDAxLDcgKzQwMSw3IEBAIGNvbnN0IHN0cnVjdCBnY2NfZGVidWdfaG9va3MgeGNvZmZfZGVidWcK LSAgIGRlYnVnX25vdGhpbmdfdHJlZSwJCSAgICAgICAgIC8qIGZ1bmN0aW9uX2RlY2wgKi8KLSAg IGRieG91dF9nbG9iYWxfZGVjbCwJCSAgICAgICAgIC8qIGdsb2JhbF9kZWNsICovCi0gICBkYnhv dXRfdHlwZV9kZWNsLAkJCSAvKiB0eXBlX2RlY2wgKi8KLS0gIGRlYnVnX25vdGhpbmdfdHJlZV90 cmVlLCAgICAgICAgICAgICAgIC8qIGltcG9ydGVkX21vZHVsZV9vcl9kZWNsICovCi0rICBkZWJ1 Z19ub3RoaW5nX3RyZWVfdHJlZV90cmVlX2Jvb2wsCSAvKiBpbXBvcnRlZF9tb2R1bGVfb3JfZGVj bCAqLwotICAgZGVidWdfbm90aGluZ190cmVlLAkJICAgICAgICAgLyogZGVmZXJyZWRfaW5saW5l X2Z1bmN0aW9uICovCi0gICBkZWJ1Z19ub3RoaW5nX3RyZWUsCQkgICAgICAgICAvKiBvdXRsaW5p bmdfaW5saW5lX2Z1bmN0aW9uICovCi0gICBkZWJ1Z19ub3RoaW5nX3J0eCwJCSAgICAgICAgIC8q IGxhYmVsICovCi0tLS0gZ2NjL2RlYnVnLmMuamoJMjAwOC0wOC0yMSAxMDoxOTo0OS4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnY2MvZGVidWcuYwkyMDA4LTA4LTIxIDEwOjIxOjMwLjAwMDAwMDAwMCAr MDIwMAotQEAgLTQyLDcgKzQyLDcgQEAgY29uc3Qgc3RydWN0IGdjY19kZWJ1Z19ob29rcyBkb19u b3RoaW5nXwotICAgZGVidWdfbm90aGluZ190cmVlLAkJICAgICAgICAgLyogZnVuY3Rpb25fZGVj bCAqLwotICAgZGVidWdfbm90aGluZ190cmVlLAkJICAgICAgICAgLyogZ2xvYmFsX2RlY2wgKi8K LSAgIGRlYnVnX25vdGhpbmdfdHJlZV9pbnQsCQkgLyogdHlwZV9kZWNsICovCi0tICBkZWJ1Z19u b3RoaW5nX3RyZWVfdHJlZSwgICAgICAgICAgICAgICAvKiBpbXBvcnRlZF9tb2R1bGVfb3JfZGVj bCAqLwotKyAgZGVidWdfbm90aGluZ190cmVlX3RyZWVfdHJlZV9ib29sLAkgLyogaW1wb3J0ZWRf bW9kdWxlX29yX2RlY2wgKi8KLSAgIGRlYnVnX25vdGhpbmdfdHJlZSwJCSAgICAgICAgIC8qIGRl ZmVycmVkX2lubGluZV9mdW5jdGlvbiAqLwotICAgZGVidWdfbm90aGluZ190cmVlLAkJICAgICAg ICAgLyogb3V0bGluaW5nX2lubGluZV9mdW5jdGlvbiAqLwotICAgZGVidWdfbm90aGluZ19ydHgs CQkgICAgICAgICAvKiBsYWJlbCAqLwotQEAgLTY2LDggKzY2LDEwIEBAIGRlYnVnX25vdGhpbmdf dHJlZSAodHJlZSBkZWNsIEFUVFJJQlVURV8KLSB9Ci0gCi0gdm9pZAotLWRlYnVnX25vdGhpbmdf dHJlZV90cmVlICh0cmVlIHQxIEFUVFJJQlVURV9VTlVTRUQsCi0tCQkJIHRyZWUgdDIgQVRUUklC VVRFX1VOVVNFRCkKLStkZWJ1Z19ub3RoaW5nX3RyZWVfdHJlZV90cmVlX2Jvb2wgKHRyZWUgdDEg QVRUUklCVVRFX1VOVVNFRCwKLSsJCQkJICAgdHJlZSB0MiBBVFRSSUJVVEVfVU5VU0VELAotKwkJ CQkgICB0cmVlIHQzIEFUVFJJQlVURV9VTlVTRUQsCi0rCQkJCSAgIGJvb2wgYjEgQVRUUklCVVRF X1VOVVNFRCkKLSB7Ci0gfQotIAotLS0tIGdjYy9kd2FyZjJvdXQuYy5qagkyMDA4LTA4LTIxIDEw OjE5OjQ5LjAwMDAwMDAwMCArMDIwMAotKysrIGdjYy9kd2FyZjJvdXQuYwkyMDA4LTA4LTIxIDEz OjE1OjQxLjAwMDAwMDAwMCArMDIwMAotQEAgLTM5MTAsNyArMzkxMCw3IEBAIHN0YXRpYyB2b2lk IGR3YXJmMm91dF9lbmRfYmxvY2sgKHVuc2lnbmUKLSBzdGF0aWMgYm9vbCBkd2FyZjJvdXRfaWdu b3JlX2Jsb2NrIChjb25zdF90cmVlKTsKLSBzdGF0aWMgdm9pZCBkd2FyZjJvdXRfZ2xvYmFsX2Rl Y2wgKHRyZWUpOwotIHN0YXRpYyB2b2lkIGR3YXJmMm91dF90eXBlX2RlY2wgKHRyZWUsIGludCk7 Ci0tc3RhdGljIHZvaWQgZHdhcmYyb3V0X2ltcG9ydGVkX21vZHVsZV9vcl9kZWNsICh0cmVlLCB0 cmVlKTsKLStzdGF0aWMgdm9pZCBkd2FyZjJvdXRfaW1wb3J0ZWRfbW9kdWxlX29yX2RlY2wgKHRy ZWUsIHRyZWUsIHRyZWUsIGJvb2wpOwotIHN0YXRpYyB2b2lkIGR3YXJmMm91dF9hYnN0cmFjdF9m dW5jdGlvbiAodHJlZSk7Ci0gc3RhdGljIHZvaWQgZHdhcmYyb3V0X3Zhcl9sb2NhdGlvbiAocnR4 KTsKLSBzdGF0aWMgdm9pZCBkd2FyZjJvdXRfYmVnaW5fZnVuY3Rpb24gKHRyZWUpOwotQEAgLTQ1 NDEsNyArNDU0MSw3IEBAIHN0YXRpYyB2b2lkIGdlbl9kZWNsX2RpZSAodHJlZSwgZHdfZGllX3IK LSBzdGF0aWMgZHdfZGllX3JlZiBmb3JjZV9kZWNsX2RpZSAodHJlZSk7Ci0gc3RhdGljIGR3X2Rp ZV9yZWYgZm9yY2VfdHlwZV9kaWUgKHRyZWUpOwotIHN0YXRpYyBkd19kaWVfcmVmIHNldHVwX25h bWVzcGFjZV9jb250ZXh0ICh0cmVlLCBkd19kaWVfcmVmKTsKLS1zdGF0aWMgdm9pZCBkZWNsYXJl X2luX25hbWVzcGFjZSAodHJlZSwgZHdfZGllX3JlZik7Ci0rc3RhdGljIGR3X2RpZV9yZWYgZGVj bGFyZV9pbl9uYW1lc3BhY2UgKHRyZWUsIGR3X2RpZV9yZWYpOwotIHN0YXRpYyBzdHJ1Y3QgZHdh cmZfZmlsZV9kYXRhICogbG9va3VwX2ZpbGVuYW1lIChjb25zdCBjaGFyICopOwotIHN0YXRpYyB2 b2lkIHJldHJ5X2luY29tcGxldGVfdHlwZXMgKHZvaWQpOwotIHN0YXRpYyB2b2lkIGdlbl90eXBl X2RpZV9mb3JfbWVtYmVyICh0cmVlLCB0cmVlLCBkd19kaWVfcmVmKTsKLUBAIC02NjIxLDcgKzY2 MjEsOCBAQCBpc19zeW1ib2xfZGllIChkd19kaWVfcmVmIGMpCi0gICByZXR1cm4gKGlzX3R5cGVf ZGllIChjKQotIAkgIHx8IChnZXRfQVQgKGMsIERXX0FUX2RlY2xhcmF0aW9uKQotIAkgICAgICAm JiAhZ2V0X0FUIChjLCBEV19BVF9zcGVjaWZpY2F0aW9uKSkKLS0JICB8fCBjLT5kaWVfdGFnID09 IERXX1RBR19uYW1lc3BhY2UpOwotKwkgIHx8IGMtPmRpZV90YWcgPT0gRFdfVEFHX25hbWVzcGFj ZQotKwkgIHx8IGMtPmRpZV90YWcgPT0gRFdfVEFHX21vZHVsZSk7Ci0gfQotIAotIHN0YXRpYyBj aGFyICoKLUBAIC0xMjg5OCwyOSArMTI4OTksNDkgQEAgZ2VuX3ZhcmlhYmxlX2RpZSAodHJlZSBk ZWNsLCBkd19kaWVfcmVmIAotICAgY29tX2RlY2wgPSBmb3J0cmFuX2NvbW1vbiAoZGVjbCwgJm9m Zik7Ci0gCi0gICAvKiBTeW1ib2wgaW4gY29tbW9uIGdldHMgZW1pdHRlZCBhcyBhIGNoaWxkIG9m IHRoZSBjb21tb24gYmxvY2ssIGluIHRoZSBmb3JtCi0tICAgICBvZiBhIGRhdGEgbWVtYmVyLgot LQotLSAgICAgPz8/IFRoaXMgY3JlYXRlcyBhIG5ldyBjb21tb24gYmxvY2sgZGllIGZvciBldmVy eSBjb21tb24gYmxvY2sgc3ltYm9sLgotLSAgICAgQmV0dGVyIHRvIHNoYXJlIHNhbWUgY29tbW9u IGJsb2NrIGRpZSBmb3IgYWxsIHN5bWJvbHMgaW4gdGhhdCBibG9jay4gICovCi0rICAgICBvZiBh IGRhdGEgbWVtYmVyLiAgKi8KLSAgIGlmIChjb21fZGVjbCkKLSAgICAgewotICAgICAgIHRyZWUg ZmllbGQ7Ci0gICAgICAgZHdfZGllX3JlZiBjb21fZGllOwotLSAgICAgIGNvbnN0IGNoYXIgKmNu YW0gPSBJREVOVElGSUVSX1BPSU5URVIgKERFQ0xfQVNTRU1CTEVSX05BTUUgKGNvbV9kZWNsKSk7 Ci0tICAgICAgZHdfbG9jX2Rlc2NyX3JlZiBsb2MgPSBsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWUg KGNvbV9kZWNsKTsKLSAKLSsgICAgICBpZiAobG9va3VwX2RlY2xfZGllIChkZWNsKSkKLSsJcmV0 dXJuOwotICAgICAgIGZpZWxkID0gVFJFRV9PUEVSQU5EIChERUNMX1ZBTFVFX0VYUFIgKGRlY2wp LCAwKTsKLS0gICAgICB2YXJfZGllID0gbmV3X2RpZSAoRFdfVEFHX2NvbW1vbl9ibG9jaywgY29u dGV4dF9kaWUsIGRlY2wpOwotLSAgICAgIGFkZF9uYW1lX2FuZF9zcmNfY29vcmRzX2F0dHJpYnV0 ZXMgKHZhcl9kaWUsIGZpZWxkKTsKLS0gICAgICBhZGRfQVRfZmxhZyAodmFyX2RpZSwgRFdfQVRf ZXh0ZXJuYWwsIDEpOwotLSAgICAgIGFkZF9BVF9sb2MgKHZhcl9kaWUsIERXX0FUX2xvY2F0aW9u LCBsb2MpOwotKyAgICAgIHZhcl9kaWUgPSBsb29rdXBfZGVjbF9kaWUgKGNvbV9kZWNsKTsKLSsg ICAgICBpZiAodmFyX2RpZSA9PSBOVUxMKQotKwl7Ci0rCSAgY29uc3QgY2hhciAqY25hbQotKwkg ICAgPSBJREVOVElGSUVSX1BPSU5URVIgKERFQ0xfQVNTRU1CTEVSX05BTUUgKGNvbV9kZWNsKSk7 Ci0rCSAgZHdfbG9jX2Rlc2NyX3JlZiBsb2MgPSBsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWUgKGNv bV9kZWNsKTsKLSsKLSsJICB2YXJfZGllID0gbmV3X2RpZSAoRFdfVEFHX2NvbW1vbl9ibG9jaywg Y29udGV4dF9kaWUsIGRlY2wpOwotKwkgIGFkZF9uYW1lX2FuZF9zcmNfY29vcmRzX2F0dHJpYnV0 ZXMgKHZhcl9kaWUsIGNvbV9kZWNsKTsKLSsJICBhZGRfQVRfZmxhZyAodmFyX2RpZSwgRFdfQVRf ZXh0ZXJuYWwsIDEpOwotKwkgIGlmIChsb2MpCi0rCSAgICBhZGRfQVRfbG9jICh2YXJfZGllLCBE V19BVF9sb2NhdGlvbiwgbG9jKTsKLSsgICAgICAgICAgZWxzZSBpZiAoREVDTF9FWFRFUk5BTCAo ZGVjbCkpCi0rCSAgICBhZGRfQVRfZmxhZyAodmFyX2RpZSwgRFdfQVRfZGVjbGFyYXRpb24sIDEp OwotKwkgIGFkZF9wdWJuYW1lX3N0cmluZyAoY25hbSwgdmFyX2RpZSk7IC8qID8/PyBuZWVkZWQ/ ICovCi0rCSAgZXF1YXRlX2RlY2xfbnVtYmVyX3RvX2RpZSAoY29tX2RlY2wsIHZhcl9kaWUpOwot Kwl9Ci0rICAgICAgZWxzZSBpZiAoZ2V0X0FUICh2YXJfZGllLCBEV19BVF9sb2NhdGlvbikgPT0g TlVMTCkKLSsJewotKwkgIGR3X2xvY19kZXNjcl9yZWYgbG9jID0gbG9jX2Rlc2NyaXB0b3JfZnJv bV90cmVlIChjb21fZGVjbCk7Ci0rCi0rCSAgaWYgKGxvYykKLSsJICAgIHsKLSsJICAgICAgYWRk X0FUX2xvYyAodmFyX2RpZSwgRFdfQVRfbG9jYXRpb24sIGxvYyk7Ci0rCSAgICAgIHJlbW92ZV9B VCAodmFyX2RpZSwgRFdfQVRfZGVjbGFyYXRpb24pOwotKwkgICAgfQotKwl9Ci0gICAgICAgY29t X2RpZSA9IG5ld19kaWUgKERXX1RBR19tZW1iZXIsIHZhcl9kaWUsIGRlY2wpOwotICAgICAgIGFk ZF9uYW1lX2FuZF9zcmNfY29vcmRzX2F0dHJpYnV0ZXMgKGNvbV9kaWUsIGRlY2wpOwotICAgICAg IGFkZF90eXBlX2F0dHJpYnV0ZSAoY29tX2RpZSwgVFJFRV9UWVBFIChkZWNsKSwgVFJFRV9SRUFE T05MWSAoZGVjbCksCi0gCQkJICBUUkVFX1RISVNfVk9MQVRJTEUgKGRlY2wpLCBjb250ZXh0X2Rp ZSk7Ci0gICAgICAgYWRkX0FUX2xvYyAoY29tX2RpZSwgRFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRp b24sCi0gCQkgIGludF9sb2NfZGVzY3JpcHRvciAob2ZmKSk7Ci0tICAgICAgYWRkX3B1Ym5hbWVf c3RyaW5nIChjbmFtLCB2YXJfZGllKTsgLyogPz8/IG5lZWRlZD8gKi8KLSsgICAgICBlcXVhdGVf ZGVjbF9udW1iZXJfdG9fZGllIChkZWNsLCBjb21fZGllKTsKLSAgICAgICByZXR1cm47Ci0gICAg IH0KLSAKLUBAIC0xMzY4NSw3ICsxMzcwNiw3IEBAIGdlbl90eXBlX2RpZV93aXRoX3VzYWdlICh0 cmVlIHR5cGUsIGR3X2QKLSAJfQotICAgICAgIGVsc2UKLSAJewotLQkgIGRlY2xhcmVfaW5fbmFt ZXNwYWNlICh0eXBlLCBjb250ZXh0X2RpZSk7Ci0rCSAgY29udGV4dF9kaWUgPSBkZWNsYXJlX2lu X25hbWVzcGFjZSAodHlwZSwgY29udGV4dF9kaWUpOwotIAkgIG5lZWRfcG9wID0gMDsKLSAJfQot IAotQEAgLTE0MDU3LDI5ICsxNDA3OCwzMiBAQCBzZXR1cF9uYW1lc3BhY2VfY29udGV4dCAodHJl ZSB0aGluZywgZHdfCi0gICAgRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBkZWJ1Z2dlcnMs IG5hbWVzcGFjZSBESUVzIG9ubHkgY29udGFpbgotICAgIGRlY2xhcmF0aW9uczsgYWxsIGRlZmlu aXRpb25zIGFyZSBlbWl0dGVkIGF0IENVIHNjb3BlLiAgKi8KLSAKLS1zdGF0aWMgdm9pZAotK3N0 YXRpYyBkd19kaWVfcmVmCi0gZGVjbGFyZV9pbl9uYW1lc3BhY2UgKHRyZWUgdGhpbmcsIGR3X2Rp ZV9yZWYgY29udGV4dF9kaWUpCi0gewotICAgZHdfZGllX3JlZiBuc19jb250ZXh0OwotIAotICAg aWYgKGRlYnVnX2luZm9fbGV2ZWwgPD0gRElORk9fTEVWRUxfVEVSU0UpCi0tICAgIHJldHVybjsK LSsgICAgcmV0dXJuIGNvbnRleHRfZGllOwotIAotICAgLyogSWYgdGhpcyBkZWNsIGlzIGZyb20g YW4gaW5saW5lZCBmdW5jdGlvbiwgdGhlbiBkb24ndCB0cnkgdG8gZW1pdCBpdCBpbiBpdHMKLSAg ICAgIG5hbWVzcGFjZSwgYXMgd2Ugd2lsbCBnZXQgY29uZnVzZWQuICBJdCB3b3VsZCBoYXZlIGFs cmVhZHkgYmVlbiBlbWl0dGVkCi0gICAgICB3aGVuIHRoZSBhYnN0cmFjdCBpbnN0YW5jZSBvZiB0 aGUgaW5saW5lIGZ1bmN0aW9uIHdhcyBlbWl0dGVkIGFueXdheXMuICAqLwotICAgaWYgKERFQ0xf UCAodGhpbmcpICYmIERFQ0xfQUJTVFJBQ1RfT1JJR0lOICh0aGluZykpCi0tICAgIHJldHVybjsK LSsgICAgcmV0dXJuIGNvbnRleHRfZGllOwotIAotICAgbnNfY29udGV4dCA9IHNldHVwX25hbWVz cGFjZV9jb250ZXh0ICh0aGluZywgY29udGV4dF9kaWUpOwotIAotICAgaWYgKG5zX2NvbnRleHQg IT0gY29udGV4dF9kaWUpCi0gICAgIHsKLSsgICAgICBpZiAoaXNfZm9ydHJhbiAoKSkKLSsJcmV0 dXJuIG5zX2NvbnRleHQ7Ci0gICAgICAgaWYgKERFQ0xfUCAodGhpbmcpKQotIAlnZW5fZGVjbF9k aWUgKHRoaW5nLCBuc19jb250ZXh0KTsKLSAgICAgICBlbHNlCi0gCWdlbl90eXBlX2RpZSAodGhp bmcsIG5zX2NvbnRleHQpOwotICAgICB9Ci0rICByZXR1cm4gY29udGV4dF9kaWU7Ci0gfQotIAot IC8qIEdlbmVyYXRlIGEgRElFIGZvciBhIG5hbWVzcGFjZSBvciBuYW1lc3BhY2UgYWxpYXMuICAq LwotQEAgLTE0MDk1LDggKzE0MTE5LDExIEBAIGdlbl9uYW1lc3BhY2VfZGllICh0cmVlIGRlY2wp Ci0gICAgIHsKLSAgICAgICAvKiBPdXRwdXQgYSByZWFsIG5hbWVzcGFjZS4gICovCi0gICAgICAg ZHdfZGllX3JlZiBuYW1lc3BhY2VfZGllCi0tCT0gbmV3X2RpZSAoRFdfVEFHX25hbWVzcGFjZSwg Y29udGV4dF9kaWUsIGRlY2wpOwotKwk9IG5ld19kaWUgKGlzX2ZvcnRyYW4gKCkgPyBEV19UQUdf bW9kdWxlIDogRFdfVEFHX25hbWVzcGFjZSwKLSsJCSAgIGNvbnRleHRfZGllLCBkZWNsKTsKLSAg ICAgICBhZGRfbmFtZV9hbmRfc3JjX2Nvb3Jkc19hdHRyaWJ1dGVzIChuYW1lc3BhY2VfZGllLCBk ZWNsKTsKLSsgICAgICBpZiAoREVDTF9FWFRFUk5BTCAoZGVjbCkpCi0rCWFkZF9BVF9mbGFnIChu YW1lc3BhY2VfZGllLCBEV19BVF9kZWNsYXJhdGlvbiwgMSk7Ci0gICAgICAgZXF1YXRlX2RlY2xf bnVtYmVyX3RvX2RpZSAoZGVjbCwgbmFtZXNwYWNlX2RpZSk7Ci0gICAgIH0KLSAgIGVsc2UKLUBA IC0xNDE4Niw3ICsxNDIxMyw3IEBAIGdlbl9kZWNsX2RpZSAodHJlZSBkZWNsLCBkd19kaWVfcmVm IGNvbnQKLSAJICAgIGdlbl90eXBlX2RpZV9mb3JfbWVtYmVyIChvcmlnaW4sIGRlY2wsIGNvbnRl eHRfZGllKTsKLSAKLSAJICAvKiBBbmQgaXRzIGNvbnRhaW5pbmcgbmFtZXNwYWNlLiAgKi8KLS0J ICBkZWNsYXJlX2luX25hbWVzcGFjZSAoZGVjbCwgY29udGV4dF9kaWUpOwotKwkgIGNvbnRleHRf ZGllID0gZGVjbGFyZV9pbl9uYW1lc3BhY2UgKGRlY2wsIGNvbnRleHRfZGllKTsKLSAJfQotIAot ICAgICAgIC8qIE5vdyBvdXRwdXQgYSBESUUgdG8gcmVwcmVzZW50IHRoZSBmdW5jdGlvbiBpdHNl bGYuICAqLwotQEAgLTE0MjMxLDE2ICsxNDI1OCw2IEBAIGdlbl9kZWNsX2RpZSAodHJlZSBkZWNs LCBkd19kaWVfcmVmIGNvbnQKLSAgICAgICBpZiAoZGVidWdfaW5mb19sZXZlbCA8PSBESU5GT19M RVZFTF9URVJTRSkKLSAJYnJlYWs7Ci0gCi0tICAgICAgLyogSWYgdGhpcyBpcyB0aGUgZ2xvYmFs IGRlZmluaXRpb24gb2YgdGhlIEZvcnRyYW4gQ09NTU9OIGJsb2NrLCB3ZSBkb24ndAotLSAgICAg ICAgIG5lZWQgdG8gZG8gYW55dGhpbmcuICBTeW50YWN0aWNhbGx5LCB0aGUgYmxvY2sgaXRzZWxm IGhhcyBubyBpZGVudGl0eSwKLS0gICAgICAgICBqdXN0IGl0cyBjb25zdGl0dWVudCBpZGVudGlm aWVycy4gICovCi0tICAgICAgaWYgKFRSRUVfQ09ERSAoZGVjbCkgPT0gVkFSX0RFQ0wKLS0gICAg ICAgICAgJiYgVFJFRV9QVUJMSUMgKGRlY2wpCi0tICAgICAgICAgICYmIFRSRUVfU1RBVElDIChk ZWNsKQotLSAgICAgICAgICAmJiBpc19mb3J0cmFuICgpCi0tICAgICAgICAgICYmICFERUNMX0hB U19WQUxVRV9FWFBSX1AgKGRlY2wpKQotLSAgICAgICAgYnJlYWs7Ci0tCi0gICAgICAgLyogT3V0 cHV0IGFueSBESUVzIHRoYXQgYXJlIG5lZWRlZCB0byBzcGVjaWZ5IHRoZSB0eXBlIG9mIHRoaXMg ZGF0YQotIAkgb2JqZWN0LiAgKi8KLSAgICAgICBpZiAoVFJFRV9DT0RFIChkZWNsKSA9PSBSRVNV TFRfREVDTCAmJiBERUNMX0JZX1JFRkVSRU5DRSAoZGVjbCkpCi1AQCAtMTQyNTQsNyArMTQyNzEs NyBAQCBnZW5fZGVjbF9kaWUgKHRyZWUgZGVjbCwgZHdfZGllX3JlZiBjb250Ci0gCWdlbl90eXBl X2RpZV9mb3JfbWVtYmVyIChvcmlnaW4sIGRlY2wsIGNvbnRleHRfZGllKTsKLSAKLSAgICAgICAv KiBBbmQgaXRzIGNvbnRhaW5pbmcgbmFtZXNwYWNlLiAgKi8KLS0gICAgICBkZWNsYXJlX2luX25h bWVzcGFjZSAoZGVjbCwgY29udGV4dF9kaWUpOwotKyAgICAgIGNvbnRleHRfZGllID0gZGVjbGFy ZV9pbl9uYW1lc3BhY2UgKGRlY2wsIGNvbnRleHRfZGllKTsKLSAKLSAgICAgICAvKiBOb3cgb3V0 cHV0IHRoZSBESUUgdG8gcmVwcmVzZW50IHRoZSBkYXRhIG9iamVjdCBpdHNlbGYuICBUaGlzIGdl dHMKLSAJIGNvbXBsaWNhdGVkIGJlY2F1c2Ugb2YgdGhlIHBvc3NpYmlsaXR5IHRoYXQgdGhlIFZB Ul9ERUNMIHJlYWxseQotQEAgLTE0MzA3LDE1ICsxNDMyNCw3IEBAIGR3YXJmMm91dF9nbG9iYWxf ZGVjbCAodHJlZSBkZWNsKQotICAgLyogT3V0cHV0IERXQVJGMiBpbmZvcm1hdGlvbiBmb3IgZmls ZS1zY29wZSB0ZW50YXRpdmUgZGF0YSBvYmplY3QKLSAgICAgIGRlY2xhcmF0aW9ucywgZmlsZS1z Y29wZSAoZXh0ZXJuKSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgKHdoaWNoIGhhZCBubwotICAgICAg Y29ycmVzcG9uZGluZyBib2R5KSBhbmQgZmlsZS1zY29wZSB0YWdnZWQgdHlwZSBkZWNsYXJhdGlv bnMgYW5kCi0tICAgICBkZWZpbml0aW9ucyB3aGljaCBoYXZlIG5vdCB5ZXQgYmVlbiBmb3JjZWQg b3V0LgotLQotLSAgICAgSWdub3JlIHRoZSBnbG9iYWwgZGVjbCBvZiBhbnkgRm9ydHJhbiBDT01N T04gYmxvY2tzIHdoaWNoIGFsc28gd2luZCB1cCBoZXJlCi0tICAgICB0aG91Z2ggdGhleSBoYXZl IGFscmVhZHkgYmVlbiBkZXNjcmliZWQgaW4gdGhlIGxvY2FsIHNjb3BlIGZvciB0aGUgCi0tICAg ICBwcm9jZWR1cmVzIHVzaW5nIHRoZW0uICAqLwotLSAgaWYgKFRSRUVfQ09ERSAoZGVjbCkgPT0g VkFSX0RFQ0wKLS0gICAgICAmJiBUUkVFX1BVQkxJQyAoZGVjbCkgJiYgVFJFRV9TVEFUSUMgKGRl Y2wpICYmIGlzX2ZvcnRyYW4gKCkpCi0tICAgIHJldHVybjsKLS0KLSsgICAgIGRlZmluaXRpb25z IHdoaWNoIGhhdmUgbm90IHlldCBiZWVuIGZvcmNlZCBvdXQuICAqLwotICAgaWYgKFRSRUVfQ09E RSAoZGVjbCkgIT0gRlVOQ1RJT05fREVDTCB8fCAhREVDTF9JTklUSUFMIChkZWNsKSkKLSAgICAg ZHdhcmYyb3V0X2RlY2wgKGRlY2wpOwotIH0KLUBAIC0xNDMyOSwxMCArMTQzMzgsMTQgQEAgZHdh cmYyb3V0X3R5cGVfZGVjbCAodHJlZSBkZWNsLCBpbnQgbG9jYQotICAgICBkd2FyZjJvdXRfZGVj bCAoZGVjbCk7Ci0gfQotIAotLS8qIE91dHB1dCBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgaW1wb3J0 ZWQgbW9kdWxlIG9yIGRlY2wuICAqLwotKy8qIE91dHB1dCBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3Ig aW1wb3J0ZWQgbW9kdWxlIG9yIGRlY2wgREVDTC4KLSsgICBOQU1FIGlzIG5vbi1OVUxMIG5hbWUg aW4gY29udGV4dCBpZiB0aGUgZGVjbCBoYXMgYmVlbiByZW5hbWVkLgotKyAgIENISUxEIGlzIHRy dWUgaWYgZGVjbCBpcyBvbmUgb2YgdGhlIHJlbmFtZWQgZGVjbHMgYXMgcGFydCBvZgotKyAgIGlt cG9ydGluZyB3aG9sZSBtb2R1bGUuICAqLwotIAotIHN0YXRpYyB2b2lkCi0tZHdhcmYyb3V0X2lt cG9ydGVkX21vZHVsZV9vcl9kZWNsICh0cmVlIGRlY2wsIHRyZWUgY29udGV4dCkKLStkd2FyZjJv dXRfaW1wb3J0ZWRfbW9kdWxlX29yX2RlY2wgKHRyZWUgZGVjbCwgdHJlZSBuYW1lLCB0cmVlIGNv bnRleHQsCi0rCQkJCSAgIGJvb2wgY2hpbGQpCi0gewotICAgZHdfZGllX3JlZiBpbXBvcnRlZF9k aWUsIGF0X2ltcG9ydF9kaWU7Ci0gICBkd19kaWVfcmVmIHNjb3BlX2RpZTsKLUBAIC0xNDM1NSw2 ICsxNDM2OCwxNCBAQCBkd2FyZjJvdXRfaW1wb3J0ZWRfbW9kdWxlX29yX2RlY2wgKHRyZWUgCi0g ICAgIHJldHVybjsKLSAgIHNjb3BlX2RpZSA9IGdldF9jb250ZXh0X2RpZSAoY29udGV4dCk7Ci0g Ci0rICBpZiAoY2hpbGQpCi0rICAgIHsKLSsgICAgICBnY2NfYXNzZXJ0IChzY29wZV9kaWUtPmRp ZV9jaGlsZCk7Ci0rICAgICAgZ2NjX2Fzc2VydCAoc2NvcGVfZGllLT5kaWVfY2hpbGQtPmRpZV90 YWcgPT0gRFdfVEFHX2ltcG9ydGVkX21vZHVsZSk7Ci0rICAgICAgZ2NjX2Fzc2VydCAoVFJFRV9D T0RFIChkZWNsKSAhPSBOQU1FU1BBQ0VfREVDTCk7Ci0rICAgICAgc2NvcGVfZGllID0gc2NvcGVf ZGllLT5kaWVfY2hpbGQ7Ci0rICAgIH0KLSsKLSAgIC8qIEZvciBUWVBFX0RFQ0wgb3IgQ09OU1Rf REVDTCwgbG9va3VwIFRSRUVfVFlQRS4gICovCi0gICBpZiAoVFJFRV9DT0RFIChkZWNsKSA9PSBU WVBFX0RFQ0wgfHwgVFJFRV9DT0RFIChkZWNsKSA9PSBDT05TVF9ERUNMKQotICAgICB7Ci1AQCAt MTQ0MDUsNiArMTQ0MjYsOCBAQCBkd2FyZjJvdXRfaW1wb3J0ZWRfbW9kdWxlX29yX2RlY2wgKHRy ZWUgCi0gICB4bG9jID0gZXhwYW5kX2xvY2F0aW9uIChpbnB1dF9sb2NhdGlvbik7Ci0gICBhZGRf QVRfZmlsZSAoaW1wb3J0ZWRfZGllLCBEV19BVF9kZWNsX2ZpbGUsIGxvb2t1cF9maWxlbmFtZSAo eGxvYy5maWxlKSk7Ci0gICBhZGRfQVRfdW5zaWduZWQgKGltcG9ydGVkX2RpZSwgRFdfQVRfZGVj bF9saW5lLCB4bG9jLmxpbmUpOwotKyAgaWYgKG5hbWUpCi0rICAgIGFkZF9BVF9zdHJpbmcgKGlt cG9ydGVkX2RpZSwgRFdfQVRfbmFtZSwgSURFTlRJRklFUl9QT0lOVEVSIChuYW1lKSk7Ci0gICBh ZGRfQVRfZGllX3JlZiAoaW1wb3J0ZWRfZGllLCBEV19BVF9pbXBvcnQsIGF0X2ltcG9ydF9kaWUp OwotIH0KLSAKLS0tLSBnY2Mvc2Rib3V0LmMuamoJMjAwOC0wOC0yMSAxMDoxOTo0OS4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnY2Mvc2Rib3V0LmMJMjAwOC0wOC0yMSAxMDoyMTozMC4wMDAwMDAwMDAg KzAyMDAKLUBAIC0zMjksNyArMzI5LDcgQEAgY29uc3Qgc3RydWN0IGdjY19kZWJ1Z19ob29rcyBz ZGJfZGVidWdfaAotICAgZGVidWdfbm90aGluZ190cmVlLAkJICAgICAgICAgLyogZnVuY3Rpb25f ZGVjbCAqLwotICAgc2Rib3V0X2dsb2JhbF9kZWNsLAkJICAgICAgICAgLyogZ2xvYmFsX2RlY2wg Ki8KLSAgIHNkYm91dF9zeW1ib2wsCQkJIC8qIHR5cGVfZGVjbCAqLwotLSAgZGVidWdfbm90aGlu Z190cmVlX3RyZWUsICAgICAgICAgICAgICAgLyogaW1wb3J0ZWRfbW9kdWxlX29yX2RlY2wgKi8K LSsgIGRlYnVnX25vdGhpbmdfdHJlZV90cmVlX3RyZWVfYm9vbCwJIC8qIGltcG9ydGVkX21vZHVs ZV9vcl9kZWNsICovCi0gICBkZWJ1Z19ub3RoaW5nX3RyZWUsCQkgICAgICAgICAvKiBkZWZlcnJl ZF9pbmxpbmVfZnVuY3Rpb24gKi8KLSAgIGRlYnVnX25vdGhpbmdfdHJlZSwJCSAgICAgICAgIC8q IG91dGxpbmluZ19pbmxpbmVfZnVuY3Rpb24gKi8KLSAgIHNkYm91dF9sYWJlbCwJCQkgICAgICAg ICAvKiBsYWJlbCAqLwoKZGlmZiAtLWdpdCBhL2djYzQzLWZvcnRyYW4tZGVidWczLnBhdGNoIGIv Z2NjNDMtZm9ydHJhbi1kZWJ1ZzMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGVhMDFmOGEuLjAwMDAwMDAKLS0tIGEvZ2NjNDMtZm9ydHJhbi1kZWJ1ZzMucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0yMDA4LTA4LTIxICBKYWt1YiBKZWxpbmVrICA8amFr dWJAcmVkaGF0LmNvbT4KLQotCSogdHJhbnMtZGVjbC5jIChnZmNfYnVpbGRfcXVhbGlmaWVkX2Fy cmF5KTogQnVpbGQgbm9uLWZsYXQKLQlhcnJheSB0eXBlIGZvciBkZWJ1ZyBpbmZvIHB1cnBvc2Vz LgotCSogZHdhcmYyb3V0LmMgKGFkZF9ib3VuZF9pbmZvKTogSWYgbG9va3VwX2RlY2xfZGllIGZh aWxlZCwgdHJ5Ci0JbG9jX2Rlc2NyaXB0b3JfZnJvbV90cmVlXzEuCi0KLS0tLSBnY2MvZm9ydHJh bi90cmFucy1kZWNsLmMuamoJMjAwOC0wOC0yMSAxMTo1NjowOS4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnY2MvZm9ydHJhbi90cmFucy1kZWNsLmMJMjAwOC0wOC0yMSAyMzowNzowMS4wMDAwMDAwMDAg KzAyMDAKLUBAIC03MDMsNiArNzAzLDUwIEBAIGdmY19idWlsZF9xdWFsaWZpZWRfYXJyYXkgKHRy ZWUgZGVjbCwgZ2YKLSAgICAgICBUWVBFX0RPTUFJTiAodHlwZSkgPSByYW5nZTsKLSAgICAgICBs YXlvdXRfdHlwZSAodHlwZSk7Ci0gICAgIH0KLSsKLSsgIGlmIChuZXN0IHx8IHdyaXRlX3N5bWJv bHMgPT0gTk9fREVCVUcpCi0rICAgIHJldHVybjsKLSsKLSsgIGlmIChUWVBFX05BTUUgKHR5cGUp ICE9IE5VTExfVFJFRQotKyAgICAgICYmIEdGQ19UWVBFX0FSUkFZX1VCT1VORCAodHlwZSwgc3lt LT5hcy0+cmFuayAtIDEpICE9IE5VTExfVFJFRQotKyAgICAgICYmIFRSRUVfQ09ERSAoR0ZDX1RZ UEVfQVJSQVlfVUJPVU5EICh0eXBlLCBzeW0tPmFzLT5yYW5rIC0gMSkpID09IFZBUl9ERUNMKQot KyAgICB7Ci0rICAgICAgdHJlZSBndHlwZSA9IERFQ0xfT1JJR0lOQUxfVFlQRSAoVFlQRV9OQU1F ICh0eXBlKSk7Ci0rCi0rICAgICAgZm9yIChkaW0gPSAwOyBkaW0gPCBzeW0tPmFzLT5yYW5rIC0g MTsgZGltKyspCi0rCXsKLSsJICBnY2NfYXNzZXJ0IChUUkVFX0NPREUgKGd0eXBlKSA9PSBBUlJB WV9UWVBFKTsKLSsJICBndHlwZSA9IFRSRUVfVFlQRSAoZ3R5cGUpOwotKwl9Ci0rICAgICAgZ2Nj X2Fzc2VydCAoVFJFRV9DT0RFIChndHlwZSkgPT0gQVJSQVlfVFlQRSk7Ci0rICAgICAgaWYgKFRZ UEVfTUFYX1ZBTFVFIChUWVBFX0RPTUFJTiAoZ3R5cGUpKSA9PSBOVUxMKQotKwlUWVBFX05BTUUg KHR5cGUpID0gTlVMTF9UUkVFOwotKyAgICB9Ci0rCi0rICBpZiAoVFlQRV9OQU1FICh0eXBlKSA9 PSBOVUxMX1RSRUUpCi0rICAgIHsKLSsgICAgICB0cmVlIGd0eXBlID0gVFJFRV9UWVBFICh0eXBl KSwgcnR5cGUsIHR5cGVfZGVjbDsKLSsKLSsgICAgICBmb3IgKGRpbSA9IHN5bS0+YXMtPnJhbmsg LSAxOyBkaW0gPj0gMDsgZGltLS0pCi0rCXsKLSsJICBydHlwZSA9IGJ1aWxkX3JhbmdlX3R5cGUg KGdmY19hcnJheV9pbmRleF90eXBlLAotKwkJCQkgICAgR0ZDX1RZUEVfQVJSQVlfTEJPVU5EICh0 eXBlLCBkaW0pLAotKwkJCQkgICAgR0ZDX1RZUEVfQVJSQVlfVUJPVU5EICh0eXBlLCBkaW0pKTsK LSsJICBndHlwZSA9IGJ1aWxkX2FycmF5X3R5cGUgKGd0eXBlLCBydHlwZSk7Ci0rCSAgLyogRW5z dXJlIHRoZSBib3VuZCB2YXJpYWJsZXMgYXJlbid0IG9wdGltaXplZCBvdXQgYXQgLU8wLiAgKi8K LSsJICBpZiAoIW9wdGltaXplKQotKwkgICAgewotKwkgICAgICBpZiAoR0ZDX1RZUEVfQVJSQVlf TEJPVU5EICh0eXBlLCBkaW0pCi0rCQkgICYmIFRSRUVfQ09ERSAoR0ZDX1RZUEVfQVJSQVlfTEJP VU5EICh0eXBlLCBkaW0pKSA9PSBWQVJfREVDTCkKLSsJCURFQ0xfSUdOT1JFRF9QIChHRkNfVFlQ RV9BUlJBWV9MQk9VTkQgKHR5cGUsIGRpbSkpID0gMDsKLSsJICAgICAgaWYgKEdGQ19UWVBFX0FS UkFZX1VCT1VORCAodHlwZSwgZGltKQotKwkJICAmJiBUUkVFX0NPREUgKEdGQ19UWVBFX0FSUkFZ X1VCT1VORCAodHlwZSwgZGltKSkgPT0gVkFSX0RFQ0wpCi0rCQlERUNMX0lHTk9SRURfUCAoR0ZD X1RZUEVfQVJSQVlfVUJPVU5EICh0eXBlLCBkaW0pKSA9IDA7Ci0rCSAgICB9Ci0rCX0KLSsgICAg ICBUWVBFX05BTUUgKHR5cGUpID0gdHlwZV9kZWNsID0gYnVpbGRfZGVjbCAoVFlQRV9ERUNMLCBO VUxMLCBndHlwZSk7Ci0rICAgICAgREVDTF9PUklHSU5BTF9UWVBFICh0eXBlX2RlY2wpID0gZ3R5 cGU7Ci0rICAgIH0KLSB9Ci0gCi0gCi0tLS0gZ2NjL2R3YXJmMm91dC5jLmpqCTIwMDgtMDgtMjEg MTM6MTU6NDEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL2R3YXJmMm91dC5jCTIwMDgtMDgtMjEg MTg6Mjc6MzAuMDAwMDAwMDAwICswMjAwCi1AQCAtMTE5NDMsNiArMTE5NDMsNyBAQCBhZGRfYm91 bmRfaW5mbyAoZHdfZGllX3JlZiBzdWJyYW5nZV9kaWUsCi0gICAgIGNhc2UgUkVTVUxUX0RFQ0w6 Ci0gICAgICAgewotIAlkd19kaWVfcmVmIGRlY2xfZGllID0gbG9va3VwX2RlY2xfZGllIChib3Vu ZCk7Ci0rCWR3X2xvY19kZXNjcl9yZWYgbG9jOwotIAotIAkvKiA/Pz8gQ2FuIHRoaXMgaGFwcGVu LCBvciBzaG91bGQgdGhlIHZhcmlhYmxlIGhhdmUgYmVlbiBib3VuZAotIAkgICBmaXJzdD8gIFBy b2JhYmx5IGl0IGNhbiwgc2luY2UgSSBpbWFnaW5lIHRoYXQgd2UgdHJ5IHRvIGNyZWF0ZQotQEAg LTExOTUxLDYgKzExOTUyLDExIEBAIGFkZF9ib3VuZF9pbmZvIChkd19kaWVfcmVmIHN1YnJhbmdl X2RpZSwKLSAJICAgbGF0ZXIgcGFyYW1ldGVyLiAgKi8KLSAJaWYgKGRlY2xfZGllICE9IE5VTEwp Ci0gCSAgYWRkX0FUX2RpZV9yZWYgKHN1YnJhbmdlX2RpZSwgYm91bmRfYXR0ciwgZGVjbF9kaWUp OwotKwllbHNlCi0rCSAgewotKwkgICAgbG9jID0gbG9jX2Rlc2NyaXB0b3JfZnJvbV90cmVlXzEg KGJvdW5kLCAwKTsKLSsJICAgIGFkZF9BVF9sb2NhdGlvbl9kZXNjcmlwdGlvbiAoc3VicmFuZ2Vf ZGllLCBib3VuZF9hdHRyLCBsb2MpOwotKwkgIH0KLSAJYnJlYWs7Ci0gICAgICAgfQotIAoKZGlm ZiAtLWdpdCBhL2djYzQzLWZvcnRyYW4tZGVidWc0LnBhdGNoIGIvZ2NjNDMtZm9ydHJhbi1kZWJ1 ZzQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzZjgxY2YuLjAwMDAwMDAK LS0tIGEvZ2NjNDMtZm9ydHJhbi1kZWJ1ZzQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIg KzAsMCBAQAotMjAwOC0wOC0yMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+Ci0K LQlQUiBmb3J0cmFuLzIzMDU3Ci0JKiBkd2FyZjJvdXQuYyAoZ2VuX3ZhcmlhYmxlX2RpZSk6IFJl cHJlc2VudCBGb3J0cmFuIENPTU1PTiB2YXJzCi0JYXMgRFdfVEFHX3ZhcmlhYmxlIGNoaWxkcmVu IG9mIERXX1RBR19jb21tb25fYmxvY2sgcmF0aGVyIHRoYW4KLQlEV19UQUdfbWVtYmVyIGNoaWxk cmVuLiAgUHV0IERXX0FUX2V4dGVybmFsIHRvIGluZGl2aWR1YWwKLQlEV19UQUdfdmFyaWFibGUg RElFcywgbm90IHRvIERXX1RBR19jb21tb25fYmxvY2suCi0KLQkqIGdmb3J0cmFuLmRnL2RlYnVn L3ByMzUxNTQtZHdhcmYyLmY6IEFkanVzdCBmb3IgcmVwbGFjZW1lbnQKLQlvZiBEV19UQUdfbWVt YmVyIHdpdGggRFdfVEFHX3ZhcmlhYmxlLgotCi0tLS0gZ2NjL2R3YXJmMm91dC5jLmpqCTIwMDgt MDgtMjEgMTg6Mjc6MzAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL2R3YXJmMm91dC5jCTIwMDgt MDgtMjIgMTI6MTI6NTYuMDAwMDAwMDAwICswMjAwCi1AQCAtMTM1NDAsNDMgKzEzNTQwLDY2IEBA IGdlbl92YXJpYWJsZV9kaWUgKHRyZWUgZGVjbCwgZHdfZGllX3JlZiAKLSAgICAgewotICAgICAg IHRyZWUgZmllbGQ7Ci0gICAgICAgZHdfZGllX3JlZiBjb21fZGllOwotKyAgICAgIGR3X2xvY19k ZXNjcl9yZWYgbG9jOwotIAotLSAgICAgIGlmIChsb29rdXBfZGVjbF9kaWUgKGRlY2wpKQotLQly ZXR1cm47Ci0rICAgICAgY29tX2RpZSA9IGxvb2t1cF9kZWNsX2RpZSAoZGVjbCk7Ci0rICAgICAg aWYgKGNvbV9kaWUpCi0rCXsKLSsJICBpZiAoZ2V0X0FUIChjb21fZGllLCBEV19BVF9sb2NhdGlv bikgPT0gTlVMTCkKLSsJICAgIHsKLSsJICAgICAgbG9jID0gbG9jX2Rlc2NyaXB0b3JfZnJvbV90 cmVlIChjb21fZGVjbCk7Ci0rCSAgICAgIGlmIChsb2MpCi0rCQl7Ci0rCQkgIGlmIChvZmYpCi0r CQkgICAgYWRkX2xvY19kZXNjciAoJmxvYywgbmV3X2xvY19kZXNjciAoRFdfT1BfcGx1c191Y29u c3QsCi0rCQkJCQkJCW9mZiwgMCkpOwotKwkJICBhZGRfQVRfbG9jIChjb21fZGllLCBEV19BVF9s b2NhdGlvbiwgbG9jKTsKLSsJCSAgcmVtb3ZlX0FUIChjb21fZGllLCBEV19BVF9kZWNsYXJhdGlv bik7Ci0rCQl9Ci0rCSAgICB9Ci0rCSAgcmV0dXJuOwotKwl9Ci0gICAgICAgZmllbGQgPSBUUkVF X09QRVJBTkQgKERFQ0xfVkFMVUVfRVhQUiAoZGVjbCksIDApOwotICAgICAgIHZhcl9kaWUgPSBs b29rdXBfZGVjbF9kaWUgKGNvbV9kZWNsKTsKLSsgICAgICBsb2MgPSBsb2NfZGVzY3JpcHRvcl9m cm9tX3RyZWUgKGNvbV9kZWNsKTsKLSAgICAgICBpZiAodmFyX2RpZSA9PSBOVUxMKQotIAl7Ci0g CSAgY29uc3QgY2hhciAqY25hbQotIAkgICAgPSBJREVOVElGSUVSX1BPSU5URVIgKERFQ0xfQVNT RU1CTEVSX05BTUUgKGNvbV9kZWNsKSk7Ci0tCSAgZHdfbG9jX2Rlc2NyX3JlZiBsb2MgPSBsb2Nf ZGVzY3JpcHRvcl9mcm9tX3RyZWUgKGNvbV9kZWNsKTsKLSAKLSAJICB2YXJfZGllID0gbmV3X2Rp ZSAoRFdfVEFHX2NvbW1vbl9ibG9jaywgY29udGV4dF9kaWUsIGRlY2wpOwotIAkgIGFkZF9uYW1l X2FuZF9zcmNfY29vcmRzX2F0dHJpYnV0ZXMgKHZhcl9kaWUsIGNvbV9kZWNsKTsKLS0JICBhZGRf QVRfZmxhZyAodmFyX2RpZSwgRFdfQVRfZXh0ZXJuYWwsIDEpOwotIAkgIGlmIChsb2MpCi0tCSAg ICBhZGRfQVRfbG9jICh2YXJfZGllLCBEV19BVF9sb2NhdGlvbiwgbG9jKTsKLSsJICAgIHsKLSsJ ICAgICAgYWRkX0FUX2xvYyAodmFyX2RpZSwgRFdfQVRfbG9jYXRpb24sIGxvYyk7Ci0rCSAgICAg IC8qIEF2b2lkIHNoYXJpbmcgdGhlIHNhbWUgbG9jIGRlc2NyaXB0b3IgYmV0d2VlbgotKwkJIERX X1RBR19jb21tb25fYmxvY2sgYW5kIERXX1RBR192YXJpYWJsZS4gICovCi0rCSAgICAgIGxvYyA9 IGxvY19kZXNjcmlwdG9yX2Zyb21fdHJlZSAoY29tX2RlY2wpOwotKwkgICAgfQotICAgICAgICAg ICBlbHNlIGlmIChERUNMX0VYVEVSTkFMIChkZWNsKSkKLSAJICAgIGFkZF9BVF9mbGFnICh2YXJf ZGllLCBEV19BVF9kZWNsYXJhdGlvbiwgMSk7Ci0gCSAgYWRkX3B1Ym5hbWVfc3RyaW5nIChjbmFt LCB2YXJfZGllKTsgLyogPz8/IG5lZWRlZD8gKi8KLSAJICBlcXVhdGVfZGVjbF9udW1iZXJfdG9f ZGllIChjb21fZGVjbCwgdmFyX2RpZSk7Ci0gCX0KLS0gICAgICBlbHNlIGlmIChnZXRfQVQgKHZh cl9kaWUsIERXX0FUX2xvY2F0aW9uKSA9PSBOVUxMKQotKyAgICAgIGVsc2UgaWYgKGdldF9BVCAo dmFyX2RpZSwgRFdfQVRfbG9jYXRpb24pID09IE5VTEwgJiYgbG9jKQotIAl7Ci0tCSAgZHdfbG9j X2Rlc2NyX3JlZiBsb2MgPSBsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWUgKGNvbV9kZWNsKTsKLS0K LS0JICBpZiAobG9jKQotLQkgICAgewotLQkgICAgICBhZGRfQVRfbG9jICh2YXJfZGllLCBEV19B VF9sb2NhdGlvbiwgbG9jKTsKLS0JICAgICAgcmVtb3ZlX0FUICh2YXJfZGllLCBEV19BVF9kZWNs YXJhdGlvbik7Ci0tCSAgICB9Ci0rCSAgYWRkX0FUX2xvYyAodmFyX2RpZSwgRFdfQVRfbG9jYXRp b24sIGxvYyk7Ci0rCSAgbG9jID0gbG9jX2Rlc2NyaXB0b3JfZnJvbV90cmVlIChjb21fZGVjbCk7 Ci0rCSAgcmVtb3ZlX0FUICh2YXJfZGllLCBEV19BVF9kZWNsYXJhdGlvbik7Ci0gCX0KLS0gICAg ICBjb21fZGllID0gbmV3X2RpZSAoRFdfVEFHX21lbWJlciwgdmFyX2RpZSwgZGVjbCk7Ci0rICAg ICAgY29tX2RpZSA9IG5ld19kaWUgKERXX1RBR192YXJpYWJsZSwgdmFyX2RpZSwgZGVjbCk7Ci0g ICAgICAgYWRkX25hbWVfYW5kX3NyY19jb29yZHNfYXR0cmlidXRlcyAoY29tX2RpZSwgZGVjbCk7 Ci0gICAgICAgYWRkX3R5cGVfYXR0cmlidXRlIChjb21fZGllLCBUUkVFX1RZUEUgKGRlY2wpLCBU UkVFX1JFQURPTkxZIChkZWNsKSwKLSAJCQkgIFRSRUVfVEhJU19WT0xBVElMRSAoZGVjbCksIGNv bnRleHRfZGllKTsKLS0gICAgICBhZGRfQVRfbG9jIChjb21fZGllLCBEV19BVF9kYXRhX21lbWJl cl9sb2NhdGlvbiwKLS0JCSAgaW50X2xvY19kZXNjcmlwdG9yIChvZmYpKTsKLSsgICAgICBhZGRf QVRfZmxhZyAoY29tX2RpZSwgRFdfQVRfZXh0ZXJuYWwsIDEpOwotKyAgICAgIGlmIChsb2MpCi0r CXsKLSsJICBpZiAob2ZmKQotKwkgICAgYWRkX2xvY19kZXNjciAoJmxvYywgbmV3X2xvY19kZXNj ciAoRFdfT1BfcGx1c191Y29uc3QsIG9mZiwgMCkpOwotKwkgIGFkZF9BVF9sb2MgKGNvbV9kaWUs IERXX0FUX2xvY2F0aW9uLCBsb2MpOwotKwl9Ci0rICAgICAgZWxzZSBpZiAoREVDTF9FWFRFUk5B TCAoZGVjbCkpCi0rCWFkZF9BVF9mbGFnIChjb21fZGllLCBEV19BVF9kZWNsYXJhdGlvbiwgMSk7 Ci0gICAgICAgZXF1YXRlX2RlY2xfbnVtYmVyX3RvX2RpZSAoZGVjbCwgY29tX2RpZSk7Ci0gICAg ICAgcmV0dXJuOwotICAgICB9Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9kZWJ1Zy9w cjM1MTU0LWR3YXJmMi5mLmpqCTIwMDgtMDQtMjcgMTI6NDI6NDQuMDAwMDAwMDAwICswMjAwCi0r KysgZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9kZWJ1Zy9wcjM1MTU0LWR3YXJmMi5mCTIwMDgt MDgtMjIgMTA6NTY6NDQuMDAwMDAwMDAwICswMjAwCi1AQCAtMjcsMTEgKzI3LDExIEBAIEMgeyBk Zy1vcHRpb25zICItZEEiIH0KLSAKLSBDIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiKERJ RS4qRFdfVEFHX2NvbW1vbl9ibG9jaykiIH0gfQotIEMgeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJEV19BVF9uYW1lOiBcIl9fQkxOS19fXCIiIH0gfQotLUMgeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyICIoRElFLipEV19UQUdfbWVtYmVyKSIgfSB9Ci0rQyB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXIgIihESUUuKkRXX1RBR192YXJpYWJsZSkiIH0gfQotIEMgeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyICJcImkuKlwiLipEV19BVF9uYW1lIiB9IH0KLSBDIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlciAiXCJqLipcIi4qRFdfQVRfbmFtZSIgfSB9Ci0gQyB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXIgIihESUUuKkRXX1RBR19jb21tb25fYmxvY2spIiB9IH0KLSBDIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiRFdfQVRfbmFtZTogXCJsYWJlbFwiIiB9IH0KLS1D IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiKERJRS4qRFdfVEFHX21lbWJlcikiIH0gfQot K0MgeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICIoRElFLipEV19UQUdfdmFyaWFibGUpIiB9 IH0KLSBDIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiXCJsLipcIi4qRFdfQVRfbmFtZSIg fSB9Ci0gQyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIlwibS4qXCIuKkRXX0FUX25hbWUi IH0gfQoKZGlmZiAtLWdpdCBhL2djYzQzLWZvcnRyYW4tZGVidWc1LnBhdGNoIGIvZ2NjNDMtZm9y dHJhbi1kZWJ1ZzUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiZjI0ZGMu LjAwMDAwMDAKLS0tIGEvZ2NjNDMtZm9ydHJhbi1kZWJ1ZzUucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSw5MSArMCwwIEBACi0yMDA4LTA4LTIyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0 LmNvbT4KLQotCSogZHdhcmYyb3V0LmMgKGxvY19ieV9yZWZlcmVuY2UpOiBOZXcgZnVuY3Rpb24u Ci0JKGFkZF9sb2NhdGlvbl9vcl9jb25zdF92YWx1ZV9hdHRyaWJ1dGUpOiBVc2UgaXQuCi0KLS0t LSBnY2MvZHdhcmYyb3V0LmMuamoJMjAwOC0wOC0yMiAxMjoxMjo1Ni4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnY2MvZHdhcmYyb3V0LmMJMjAwOC0wOC0yMiAxMzozOToyMS4wMDAwMDAwMDAgKzAyMDAK LUBAIC0xMDk3MSw2ICsxMDk3MSwzMiBAQCBmb3J0cmFuX2NvbW1vbiAodHJlZSBkZWNsLCBIT1NU X1dJREVfSU5UCi0gICByZXR1cm4gY3ZhcjsKLSB9Ci0gCi0rLyogRGVyZWZlcmVuY2UgYSBsb2Nh dGlvbiBleHByZXNzaW9uIExPQyBpZiBERUNMIGlzIHBhc3NlZCBieSBpbnZpc2libGUKLSsgICBy ZWZlcmVuY2UuICAqLwotKwotK3N0YXRpYyBkd19sb2NfZGVzY3JfcmVmCi0rbG9jX2J5X3JlZmVy ZW5jZSAoZHdfbG9jX2Rlc2NyX3JlZiBsb2MsIHRyZWUgZGVjbCkKLSt7Ci0rICBIT1NUX1dJREVf SU5UIHNpemU7Ci0rICBlbnVtIGR3YXJmX2xvY2F0aW9uX2F0b20gb3A7Ci0rCi0rICBpZiAobG9j ID09IE5VTEwpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgaWYgKChUUkVFX0NPREUgKGRlY2wp ICE9IFBBUk1fREVDTCAmJiBUUkVFX0NPREUgKGRlY2wpICE9IFJFU1VMVF9ERUNMKQotKyAgICAg IHx8ICFERUNMX0JZX1JFRkVSRU5DRSAoZGVjbCkpCi0rICAgIHJldHVybiBsb2M7Ci0rCi0rICBz aXplID0gaW50X3NpemVfaW5fYnl0ZXMgKFRSRUVfVFlQRSAoZGVjbCkpOwotKyAgaWYgKHNpemUg PiBEV0FSRjJfQUREUl9TSVpFIHx8IHNpemUgPT0gLTEpCi0rICAgIHJldHVybiAwOwotKyAgZWxz ZSBpZiAoc2l6ZSA9PSBEV0FSRjJfQUREUl9TSVpFKQotKyAgICBvcCA9IERXX09QX2RlcmVmOwot KyAgZWxzZQotKyAgICBvcCA9IERXX09QX2RlcmVmX3NpemU7Ci0rICBhZGRfbG9jX2Rlc2NyICgm bG9jLCBuZXdfbG9jX2Rlc2NyIChvcCwgc2l6ZSwgMCkpOwotKyAgcmV0dXJuIGxvYzsKLSt9Ci0g Ci0gLyogR2VuZXJhdGUgKmVpdGhlciogYSBEV19BVF9sb2NhdGlvbiBhdHRyaWJ1dGUgb3IgZWxz ZSBhIERXX0FUX2NvbnN0X3ZhbHVlCi0gICAgZGF0YSBhdHRyaWJ1dGUgZm9yIGEgdmFyaWFibGUg b3IgYSBwYXJhbWV0ZXIuICBXZSBnZW5lcmF0ZSB0aGUKLUBAIC0xMTAyOSw4ICsxMTA1NSw4IEBA IGFkZF9sb2NhdGlvbl9vcl9jb25zdF92YWx1ZV9hdHRyaWJ1dGUgKGQKLSAgICAgICBlbHNlCi0g CWluaXRpYWxpemVkID0gVkFSX0lOSVRfU1RBVFVTX0lOSVRJQUxJWkVEOwotIAotLSAgICAgIGxp c3QgPSBuZXdfbG9jX2xpc3QgKGxvY19kZXNjcmlwdG9yICh2YXJsb2MsIGluaXRpYWxpemVkKSwK LS0JCQkgICBub2RlLT5sYWJlbCwgbm9kZS0+bmV4dC0+bGFiZWwsIHNlY25hbWUsIDEpOwotKyAg ICAgIGRlc2NyID0gbG9jX2J5X3JlZmVyZW5jZSAobG9jX2Rlc2NyaXB0b3IgKHZhcmxvYywgaW5p dGlhbGl6ZWQpLCBkZWNsKTsKLSsgICAgICBsaXN0ID0gbmV3X2xvY19saXN0IChkZXNjciwgbm9k ZS0+bGFiZWwsIG5vZGUtPm5leHQtPmxhYmVsLCBzZWNuYW1lLCAxKTsKLSAgICAgICBub2RlID0g bm9kZS0+bmV4dDsKLSAKLSAgICAgICBmb3IgKDsgbm9kZS0+bmV4dDsgbm9kZSA9IG5vZGUtPm5l eHQpCi1AQCAtMTEwNDEsOCArMTEwNjcsOSBAQCBhZGRfbG9jYXRpb25fb3JfY29uc3RfdmFsdWVf YXR0cmlidXRlIChkCi0gCSAgICBlbnVtIHZhcl9pbml0X3N0YXR1cyBpbml0aWFsaXplZCA9Ci0g CSAgICAgIE5PVEVfVkFSX0xPQ0FUSU9OX1NUQVRVUyAobm9kZS0+dmFyX2xvY19ub3RlKTsKLSAJ ICAgIHZhcmxvYyA9IE5PVEVfVkFSX0xPQ0FUSU9OIChub2RlLT52YXJfbG9jX25vdGUpOwotLQkg ICAgYWRkX2xvY19kZXNjcl90b19sb2NfbGlzdCAoJmxpc3QsIAotLQkJCQkgICAgICAgbG9jX2Rl c2NyaXB0b3IgKHZhcmxvYywgaW5pdGlhbGl6ZWQpLAotKwkgICAgZGVzY3IgPSBsb2NfYnlfcmVm ZXJlbmNlIChsb2NfZGVzY3JpcHRvciAodmFybG9jLCBpbml0aWFsaXplZCksCi0rCQkJCSAgICAg IGRlY2wpOwotKwkgICAgYWRkX2xvY19kZXNjcl90b19sb2NfbGlzdCAoJmxpc3QsIGRlc2NyLAot IAkJCQkgICAgICAgbm9kZS0+bGFiZWwsIG5vZGUtPm5leHQtPmxhYmVsLCBzZWNuYW1lKTsKLSAJ ICB9Ci0gCi1AQCAtMTEwNjMsOCArMTEwOTAsOSBAQCBhZGRfbG9jYXRpb25fb3JfY29uc3RfdmFs dWVfYXR0cmlidXRlIChkCi0gCQkJCQkgICBjdXJyZW50X2Z1bmN0aW9uX2Z1bmNkZWZfbm8pOwot IAkgICAgICBlbmRuYW1lID0gZ2djX3N0cmR1cCAobGFiZWxfaWQpOwotIAkgICAgfQotLQkgIGFk ZF9sb2NfZGVzY3JfdG9fbG9jX2xpc3QgKCZsaXN0LCAKLS0JCQkJICAgICBsb2NfZGVzY3JpcHRv ciAodmFybG9jLCBpbml0aWFsaXplZCksCi0rCSAgZGVzY3IgPSBsb2NfYnlfcmVmZXJlbmNlIChs b2NfZGVzY3JpcHRvciAodmFybG9jLCBpbml0aWFsaXplZCksCi0rCQkJCSAgICBkZWNsKTsKLSsJ ICBhZGRfbG9jX2Rlc2NyX3RvX2xvY19saXN0ICgmbGlzdCwgZGVzY3IsCi0gCQkJCSAgICAgbm9k ZS0+bGFiZWwsIGVuZG5hbWUsIHNlY25hbWUpOwotIAl9Ci0gCi1AQCAtMTEwOTQsNiArMTExMjIs NyBAQCBhZGRfbG9jYXRpb25fb3JfY29uc3RfdmFsdWVfYXR0cmlidXRlIChkCi0gICAgICAgZGVz Y3IgPSBsb2NfZGVzY3JpcHRvciAoTk9URV9WQVJfTE9DQVRJT04gKG5vZGUtPnZhcl9sb2Nfbm90 ZSksIHN0YXR1cyk7Ci0gICAgICAgaWYgKGRlc2NyKQotIAl7Ci0rCSAgZGVzY3IgPSBsb2NfYnlf cmVmZXJlbmNlIChkZXNjciwgZGVjbCk7Ci0gCSAgYWRkX0FUX2xvY2F0aW9uX2Rlc2NyaXB0aW9u IChkaWUsIGF0dHIsIGRlc2NyKTsKLSAJICByZXR1cm47Ci0gCX0KLUBAIC0xMTEwNCw2ICsxMTEz Myw3IEBAIGFkZF9sb2NhdGlvbl9vcl9jb25zdF92YWx1ZV9hdHRyaWJ1dGUgKGQKLSAgIGRlc2Ny ID0gbG9jX2Rlc2NyaXB0b3JfZnJvbV90cmVlIChkZWNsKTsKLSAgIGlmIChkZXNjcikKLSAgICAg ewotKyAgICAgIGRlc2NyID0gbG9jX2J5X3JlZmVyZW5jZSAoZGVzY3IsIGRlY2wpOwotICAgICAg IGFkZF9BVF9sb2NhdGlvbl9kZXNjcmlwdGlvbiAoZGllLCBhdHRyLCBkZXNjcik7Ci0gICAgICAg cmV0dXJuOwotICAgICB9CgpkaWZmIC0tZ2l0IGEvZ2NjNDMtZm9ydHJhbi1kZWJ1ZzYucGF0Y2gg Yi9nY2M0My1mb3J0cmFuLWRlYnVnNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMmM2NmZjMi4uMDAwMDAwMAotLS0gYS9nY2M0My1mb3J0cmFuLWRlYnVnNi5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLTIwMDgtMDgtMjIgIEpha3ViIEplbGluZWsgIDxq YWt1YkByZWRoYXQuY29tPgotCi0JUFIgZm9ydHJhbi8yNDc5MAotCSogdHJhbnMtZGVjbC5jIChj cmVhdGVfZnVuY3Rpb25fYXJnbGlzdCk6IFNldCBERUNMX0JZX1JFRkVSRU5DRSBvbgotCVBBUk1f REVDTHMgd2l0aCBwb2ludGVyIG9yIHJlZmVyZW5jZSB0eXBlLgotCi0tLS0gZ2NjL2ZvcnRyYW4v dHJhbnMtZGVjbC5jLmpqCTIwMDgtMDgtMjEgMjM6MDc6MDEuMDAwMDAwMDAwICswMjAwCi0rKysg Z2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5jCTIwMDgtMDgtMjIgMTQ6NDc6NTkuMDAwMDAwMDAwICsw MjAwCi1AQCAtMTU4OCw2ICsxNTg4LDggQEAgY3JlYXRlX2Z1bmN0aW9uX2FyZ2xpc3QgKGdmY19z eW1ib2wgKiBzeQotICAgICAgIERFQ0xfQVJHX1RZUEUgKHBhcm0pID0gVFJFRV9WQUxVRSAodHlw ZWxpc3QpOwotICAgICAgIC8qIEFsbCBpbXBsZW1lbnRhdGlvbiBhcmdzIGFyZSByZWFkLW9ubHku ICAqLwotICAgICAgIFRSRUVfUkVBRE9OTFkgKHBhcm0pID0gMTsKLSsgICAgICBpZiAoUE9JTlRF Ul9UWVBFX1AgKHR5cGUpICYmIGYtPnN5bS0+YXR0ci5mbGF2b3IgIT0gRkxfUFJPQ0VEVVJFKQot KwlERUNMX0JZX1JFRkVSRU5DRSAocGFybSkgPSAxOwotIAotICAgICAgIGdmY19maW5pc2hfZGVj bCAocGFybSk7Ci0gCgpkaWZmIC0tZ2l0IGEvZ2NjNDMtZm9ydHJhbi1kZWJ1ZzcucGF0Y2ggYi9n Y2M0My1mb3J0cmFuLWRlYnVnNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MzkyNDhmMS4uMDAwMDAwMAotLS0gYS9nY2M0My1mb3J0cmFuLWRlYnVnNy5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDgyICswLDAgQEAKLTIwMDgtMDgtMjIgIEpha3ViIEplbGluZWsgIDxqYWt1 YkByZWRoYXQuY29tPgotCi0JKiBkd2FyZjJvdXQuYyAoYWRkX3N1YnNjcmlwdF9pbmZvKTogU3Rv cCBvbiBGb3J0cmFuIFRZUEVfU1RSSU5HX0ZMQUcKLQl0eXBlcy4KLQkoZ2VuX2FycmF5X3R5cGVf ZGllKTogRW1pdCBEV19UQUdfc3RyaW5nX3R5cGUgZm9yIEZvcnRyYW4gY2hhcmFjdGVyCi0JdHlw ZXMuCi0KLS0tLSBnY2MvZHdhcmYyb3V0LmMuamoJMjAwOC0wOC0yMiAxMzozOToyMS4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnY2MvZHdhcmYyb3V0LmMJMjAwOC0wOC0yMiAxNzo0OToxMC4wMDAwMDAw MDAgKzAyMDAKLUBAIC0xMTQxOCw2ICsxMTQxOCw5IEBAIGFkZF9zdWJzY3JpcHRfaW5mbyAoZHdf ZGllX3JlZiB0eXBlX2RpZSwKLSAgICAgewotICAgICAgIHRyZWUgZG9tYWluID0gVFlQRV9ET01B SU4gKHR5cGUpOwotIAotKyAgICAgIGlmIChUWVBFX1NUUklOR19GTEFHICh0eXBlKSAmJiBpc19m b3J0cmFuICgpICYmIGRpbWVuc2lvbl9udW1iZXIgPiAwKQotKwlicmVhazsKLSsKLSAgICAgICAv KiBBcnJheXMgY29tZSBpbiB0aHJlZSBmbGF2b3JzOiBVbnNwZWNpZmllZCBib3VuZHMsIGZpeGVk IGJvdW5kcywKLSAJIGFuZCAoaW4gR05VIEMgb25seSkgdmFyaWFibGUgYm91bmRzLiAgSGFuZGxl IGFsbCB0aHJlZSBmb3JtcwotIAkgaGVyZS4gICovCi1AQCAtMTE5NDAsNiArMTE5NDMsMzkgQEAg Z2VuX2FycmF5X3R5cGVfZGllICh0cmVlIHR5cGUsIGR3X2RpZV9yZQotICAgZHdfZGllX3JlZiBh cnJheV9kaWU7Ci0gICB0cmVlIGVsZW1lbnRfdHlwZTsKLSAKLSsgIC8qIEVtaXQgRFdfVEFHX3N0 cmluZ190eXBlIGZvciBGb3J0cmFuIGNoYXJhY3RlciB0eXBlcyAod2l0aCBraW5kIDEgb25seSwg YXMKLSsgICAgIERXX1RBR19zdHJpbmdfdHlwZSBkb2Vzbid0IGhhdmUgRFdfQVRfdHlwZSBhdHRy aWJ1dGUpLiAgKi8KLSsgIGlmIChUWVBFX1NUUklOR19GTEFHICh0eXBlKQotKyAgICAgICYmIFRS RUVfQ09ERSAodHlwZSkgPT0gQVJSQVlfVFlQRQotKyAgICAgICYmIGlzX2ZvcnRyYW4gKCkKLSsg ICAgICAmJiBUWVBFX01PREUgKFRSRUVfVFlQRSAodHlwZSkpID09IFRZUEVfTU9ERSAoY2hhcl90 eXBlX25vZGUpKQotKyAgICB7Ci0rICAgICAgSE9TVF9XSURFX0lOVCBzaXplOwotKwotKyAgICAg IGFycmF5X2RpZSA9IG5ld19kaWUgKERXX1RBR19zdHJpbmdfdHlwZSwgc2NvcGVfZGllLCB0eXBl KTsKLSsgICAgICBhZGRfbmFtZV9hdHRyaWJ1dGUgKGFycmF5X2RpZSwgdHlwZV90YWcgKHR5cGUp KTsKLSsgICAgICBlcXVhdGVfdHlwZV9udW1iZXJfdG9fZGllICh0eXBlLCBhcnJheV9kaWUpOwot KyAgICAgIHNpemUgPSBpbnRfc2l6ZV9pbl9ieXRlcyAodHlwZSk7Ci0rICAgICAgaWYgKHNpemUg Pj0gMCkKLSsJYWRkX0FUX3Vuc2lnbmVkIChhcnJheV9kaWUsIERXX0FUX2J5dGVfc2l6ZSwgc2l6 ZSk7Ci0rICAgICAgZWxzZSBpZiAoVFlQRV9ET01BSU4gKHR5cGUpICE9IE5VTExfVFJFRQotKwkg ICAgICAgJiYgVFlQRV9NQVhfVkFMVUUgKFRZUEVfRE9NQUlOICh0eXBlKSkgIT0gTlVMTF9UUkVF Ci0rCSAgICAgICAmJiBERUNMX1AgKFRZUEVfTUFYX1ZBTFVFIChUWVBFX0RPTUFJTiAodHlwZSkp KSkKLSsJewotKwkgIHRyZWUgc3pkZWNsID0gVFlQRV9NQVhfVkFMVUUgKFRZUEVfRE9NQUlOICh0 eXBlKSk7Ci0rCSAgZHdfbG9jX2Rlc2NyX3JlZiBsb2MgPSBsb2NfZGVzY3JpcHRvcl9mcm9tX3Ry ZWUgKHN6ZGVjbCk7Ci0rCi0rCSAgc2l6ZSA9IGludF9zaXplX2luX2J5dGVzIChUUkVFX1RZUEUg KHN6ZGVjbCkpOwotKwkgIGlmIChsb2MgJiYgc2l6ZSA+IDApCi0rCSAgICB7Ci0rCSAgICAgIGFk ZF9BVF9sb2MgKGFycmF5X2RpZSwgRFdfQVRfc3RyaW5nX2xlbmd0aCwgbG9jKTsKLSsJICAgICAg aWYgKHNpemUgIT0gRFdBUkYyX0FERFJfU0laRSkKLSsJCWFkZF9BVF91bnNpZ25lZCAoYXJyYXlf ZGllLCBEV19BVF9ieXRlX3NpemUsIHNpemUpOwotKwkgICAgfQotKwl9Ci0rICAgICAgcmV0dXJu OwotKyAgICB9Ci0rCi0gICAvKiA/Pz8gVGhlIFNHSSBkd2FyZiByZWFkZXIgZmFpbHMgZm9yIGFy cmF5IG9mIGFycmF5IG9mIGVudW0gdHlwZXMgdW5sZXNzCi0gICAgICB0aGUgaW5uZXIgYXJyYXkg dHlwZSBjb21lcyBiZWZvcmUgdGhlIG91dGVyIGFycmF5IHR5cGUuICBUaHVzIHdlIG11c3QKLSAg ICAgIGNhbGwgZ2VuX3R5cGVfZGllIGJlZm9yZSB3ZSBjYWxsIG5ld19kaWUuICBTZWUgYmVsb3cg YWxzby4gICovCi1AQCAtMTE5NjIsNyArMTE5OTgsOCBAQCBnZW5fYXJyYXlfdHlwZV9kaWUgKHRy ZWUgdHlwZSwgZHdfZGllX3JlCi0gICAvKiBGb3IgRm9ydHJhbiBtdWx0aWRpbWVuc2lvbmFsIGFy cmF5cyB1c2UgRFdfT1JEX2NvbF9tYWpvciBvcmRlcmluZy4gICovCi0gICBpZiAoaXNfZm9ydHJh biAoKQotICAgICAgICYmIFRSRUVfQ09ERSAodHlwZSkgPT0gQVJSQVlfVFlQRQotLSAgICAgICYm IFRSRUVfQ09ERSAoVFJFRV9UWVBFICh0eXBlKSkgPT0gQVJSQVlfVFlQRSkKLSsgICAgICAmJiBU UkVFX0NPREUgKFRSRUVfVFlQRSAodHlwZSkpID09IEFSUkFZX1RZUEUKLSsgICAgICAmJiAhVFlQ RV9TVFJJTkdfRkxBRyAoVFJFRV9UWVBFICh0eXBlKSkpCi0gICAgIGFkZF9BVF91bnNpZ25lZCAo YXJyYXlfZGllLCBEV19BVF9vcmRlcmluZywgRFdfT1JEX2NvbF9tYWpvcik7Ci0gCi0gI2lmIDAK LUBAIC0xMTk5NCw3ICsxMjAzMSwxMSBAQCBnZW5fYXJyYXlfdHlwZV9kaWUgKHRyZWUgdHlwZSwg ZHdfZGllX3JlCi0gICAgICBhZGRfc3Vic2NyaXB0X2luZm8uICAqLwotICNpZm5kZWYgTUlQU19E RUJVR0dJTkdfSU5GTwotICAgd2hpbGUgKFRSRUVfQ09ERSAoZWxlbWVudF90eXBlKSA9PSBBUlJB WV9UWVBFKQotLSAgICBlbGVtZW50X3R5cGUgPSBUUkVFX1RZUEUgKGVsZW1lbnRfdHlwZSk7Ci0r ICAgIHsKLSsgICAgICBpZiAoVFlQRV9TVFJJTkdfRkxBRyAoZWxlbWVudF90eXBlKSAmJiBpc19m b3J0cmFuICgpKQotKwlicmVhazsKLSsgICAgICBlbGVtZW50X3R5cGUgPSBUUkVFX1RZUEUgKGVs ZW1lbnRfdHlwZSk7Ci0rICAgIH0KLSAKLSAgIGdlbl90eXBlX2RpZSAoZWxlbWVudF90eXBlLCBj b250ZXh0X2RpZSk7Ci0gI2VuZGlmCgpkaWZmIC0tZ2l0IGEvZ2NjNDMtZm9ydHJhbi1kZWJ1Zzgu cGF0Y2ggYi9nY2M0My1mb3J0cmFuLWRlYnVnOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggNjUxYjg1Ni4uMDAwMDAwMAotLS0gYS9nY2M0My1mb3J0cmFuLWRlYnVnOC5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLTIwMDgtMDgtMjIgIEpha3ViIEplbGlu ZWsgIDxqYWt1YkByZWRoYXQuY29tPgotCi0JKiBkd2FyZjJvdXQuYyAoZ2VuX2Zvcm1hbF9wYXJh bWV0ZXJfZGllLCBnZW5fdmFyaWFibGVfZGllKTogRm9yCi0JREVDTF9CWV9SRUZFUkVOQ0UgZGVj bHMgZG9uJ3QgcGFzcyBUUkVFX1JFQURPTkxZIGFuZAotCVRSRUVfVEhJU19WT0xBVElMRSB0byBh ZGRfdHlwZV9hdHRyaWJ1dGUuCi0KLS0tLSBnY2MvZHdhcmYyb3V0LmMuamoJMjAwOC0wOC0yMiAx Nzo0OToxMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvZHdhcmYyb3V0LmMJMjAwOC0wOC0yMiAx ODowNDoxNS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xMzAzMywxMSArMTMwMzMsMTMgQEAgZ2VuX2Zv cm1hbF9wYXJhbWV0ZXJfZGllICh0cmVlIG5vZGUsIGR3XwotIAkgIHRyZWUgdHlwZSA9IFRSRUVf VFlQRSAobm9kZSk7Ci0gCSAgYWRkX25hbWVfYW5kX3NyY19jb29yZHNfYXR0cmlidXRlcyAocGFy bV9kaWUsIG5vZGUpOwotIAkgIGlmIChERUNMX0JZX1JFRkVSRU5DRSAobm9kZSkpCi0tCSAgICB0 eXBlID0gVFJFRV9UWVBFICh0eXBlKTsKLS0JICBhZGRfdHlwZV9hdHRyaWJ1dGUgKHBhcm1fZGll LCB0eXBlLAotLQkJCSAgICAgIFRSRUVfUkVBRE9OTFkgKG5vZGUpLAotLQkJCSAgICAgIFRSRUVf VEhJU19WT0xBVElMRSAobm9kZSksCi0tCQkJICAgICAgY29udGV4dF9kaWUpOwotKwkgICAgYWRk X3R5cGVfYXR0cmlidXRlIChwYXJtX2RpZSwgVFJFRV9UWVBFICh0eXBlKSwgMCwgMCwKLSsJCQkJ Y29udGV4dF9kaWUpOwotKwkgIGVsc2UKLSsJICAgIGFkZF90eXBlX2F0dHJpYnV0ZSAocGFybV9k aWUsIHR5cGUsCi0rCQkJCVRSRUVfUkVBRE9OTFkgKG5vZGUpLAotKwkJCQlUUkVFX1RISVNfVk9M QVRJTEUgKG5vZGUpLAotKwkJCQljb250ZXh0X2RpZSk7Ci0gCSAgaWYgKERFQ0xfQVJUSUZJQ0lB TCAobm9kZSkpCi0gCSAgICBhZGRfQVRfZmxhZyAocGFybV9kaWUsIERXX0FUX2FydGlmaWNpYWws IDEpOwotIAl9Ci1AQCAtMTM3MTQsMTQgKzEzNzE2LDE1IEBAIGdlbl92YXJpYWJsZV9kaWUgKHRy ZWUgZGVjbCwgZHdfZGllX3JlZiAKLSAgIGVsc2UKLSAgICAgewotICAgICAgIHRyZWUgdHlwZSA9 IFRSRUVfVFlQRSAoZGVjbCk7Ci0rCi0rICAgICAgYWRkX25hbWVfYW5kX3NyY19jb29yZHNfYXR0 cmlidXRlcyAodmFyX2RpZSwgZGVjbCk7Ci0gICAgICAgaWYgKChUUkVFX0NPREUgKGRlY2wpID09 IFBBUk1fREVDTAotIAkgICB8fCBUUkVFX0NPREUgKGRlY2wpID09IFJFU1VMVF9ERUNMKQotIAkg ICYmIERFQ0xfQllfUkVGRVJFTkNFIChkZWNsKSkKLS0JdHlwZSA9IFRSRUVfVFlQRSAodHlwZSk7 Ci0tCi0tICAgICAgYWRkX25hbWVfYW5kX3NyY19jb29yZHNfYXR0cmlidXRlcyAodmFyX2RpZSwg ZGVjbCk7Ci0tICAgICAgYWRkX3R5cGVfYXR0cmlidXRlICh2YXJfZGllLCB0eXBlLCBUUkVFX1JF QURPTkxZIChkZWNsKSwKLS0JCQkgIFRSRUVfVEhJU19WT0xBVElMRSAoZGVjbCksIGNvbnRleHRf ZGllKTsKLSsJYWRkX3R5cGVfYXR0cmlidXRlICh2YXJfZGllLCBUUkVFX1RZUEUgKHR5cGUpLCAw LCAwLCBjb250ZXh0X2RpZSk7Ci0rICAgICAgZWxzZQotKwlhZGRfdHlwZV9hdHRyaWJ1dGUgKHZh cl9kaWUsIHR5cGUsIFRSRUVfUkVBRE9OTFkgKGRlY2wpLAotKwkJCSAgICBUUkVFX1RISVNfVk9M QVRJTEUgKGRlY2wpLCBjb250ZXh0X2RpZSk7Ci0gCi0gICAgICAgaWYgKFRSRUVfUFVCTElDIChk ZWNsKSkKLSAJYWRkX0FUX2ZsYWcgKHZhcl9kaWUsIERXX0FUX2V4dGVybmFsLCAxKTsKCmRpZmYg LS1naXQgYS9nY2M0My1mb3J0cmFuLWRlYnVnOS5wYXRjaCBiL2djYzQzLWZvcnRyYW4tZGVidWc5 LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTgxMzRmLi4wMDAwMDAwCi0t LSBhL2djYzQzLWZvcnRyYW4tZGVidWc5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQ0ICsw LDAgQEAKLTIwMDgtMDgtMjUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgotCi0J KiBnZm9ydHJhbi5oIChnZmNfdXNlX2xpc3QpOiBBZGQgd2hlcmUgZmllbGQuCi0JKiBtb2R1bGUu YyAodXNlX2xvY3VzKTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KLQkoZ2ZjX21hdGNoX3VzZSk6IFNl dCBpdC4KLQkoZ2ZjX3VzZV9tb2R1bGUpOiBDb3B5IGl0IHRvIGdmY191c2VfbGlzdCdzIHdoZXJl IGZpZWxkLgotCSogdHJhbnMtZGVjbC5jIChnZmNfZ2VuZXJhdGVfbW9kdWxlX3ZhcnMpOiBDYWxs IGdmY190cmFuc191c2Vfc3RtdHMuCi0JKGdmY190cmFuc191c2Vfc3RtdHMpOiBTZXQgYmFja2Vu ZCBsb2N1cyBiZWZvcmUgY2FsbGluZyB0aGUgZGVidWcKLQlob29rLiAgQWxsb3cgbm9uLVZBUl9E RUNMcyB0byBiZSBjcmVhdGVkIGV2ZW4gZm9yIG5vbi1leHRlcm5hbAotCW1vZHVsZS4gIERvbid0 IGVtaXQgYW55dGhpbmcgc28gZmFyIGZvciByZW5hbWVzIGZyb20gZGlmZmVyZW50Ci0JbW9kdWxl cy4KLQotLS0tIGdjYy9mb3J0cmFuL2dmb3J0cmFuLmguamoJMjAwOC0wOC0yMiAyMDoxMToyMi4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvZm9ydHJhbi9nZm9ydHJhbi5oCTIwMDgtMDgtMjUgMTM6 MDM6NDIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTEzMSw2ICsxMTMxLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgZ2ZjX3VzZV9saXN0Ci0gICBjb25zdCBjaGFyICptb2R1bGVfbmFtZTsKLSAgIGludCBvbmx5 X2ZsYWc7Ci0gICBzdHJ1Y3QgZ2ZjX3VzZV9yZW5hbWUgKnJlbmFtZTsKLSsgIGxvY3VzIHdoZXJl OwotICAgLyogTmV4dCBVU0Ugc3RhdGVtZW50LiAgKi8KLSAgIHN0cnVjdCBnZmNfdXNlX2xpc3Qg Km5leHQ7Ci0gfQotLS0tIGdjYy9mb3J0cmFuL21vZHVsZS5jLmpqCTIwMDgtMDgtMjIgMjA6MTE6 MjIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL2ZvcnRyYW4vbW9kdWxlLmMJMjAwOC0wOC0yNSAx MzoxMDo1Ny4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xODgsNiArMTg4LDggQEAgc3RhdGljIGludCBz eW1ib2xfbnVtYmVyOwkvKiBDb3VudGVyIGZvcgotIC8qIFRlbGxzIG1pb19leHByX3JlZiB0byBt YWtlIHN5bWJvbHMgZm9yIHVudXNlZCBlcXVpdmFsZW5jZSBtZW1iZXJzLiAgKi8KLSBzdGF0aWMg Ym9vbCBpbl9sb2FkX2VxdWl2OwotIAotK3N0YXRpYyBsb2N1cyB1c2VfbG9jdXM7Ci0rCi0gCi0g Ci0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLwotQEAgLTU0Niw2ICs1NDgsOCBAQCBnZmNfbWF0Y2hfdXNlICh2b2lkKQot IAl9Ci0gICAgIH0KLSAKLSsgIHVzZV9sb2N1cyA9IGdmY19jdXJyZW50X2xvY3VzOwotKwotICAg bSA9IGdmY19tYXRjaF9uYW1lIChtb2R1bGVfbmFtZSk7Ci0gICBpZiAobSAhPSBNQVRDSF9ZRVMp Ci0gICAgIHJldHVybiBtOwotQEAgLTUwNDQsNiArNTA0OCw3IEBAIGdmY191c2VfbW9kdWxlICh2 b2lkKQotICAgdXNlX3N0bXQtPm1vZHVsZV9uYW1lID0gZ2ZjX2dldF9zdHJpbmcgKG1vZHVsZV9u YW1lKTsKLSAgIHVzZV9zdG10LT5vbmx5X2ZsYWcgPSBvbmx5X2ZsYWc7Ci0gICB1c2Vfc3RtdC0+ cmVuYW1lID0gZ2ZjX3JlbmFtZV9saXN0OwotKyAgdXNlX3N0bXQtPndoZXJlID0gdXNlX2xvY3Vz OwotICAgZ2ZjX3JlbmFtZV9saXN0ID0gTlVMTDsKLSAgIHVzZV9zdG10LT5uZXh0ID0gZ2ZjX2N1 cnJlbnRfbnMtPnVzZV9zdG10czsKLSAgIGdmY19jdXJyZW50X25zLT51c2Vfc3RtdHMgPSB1c2Vf c3RtdDsKLS0tLSBnY2MvZm9ydHJhbi90cmFucy1kZWNsLmMuamoJMjAwOC0wOC0yNSAxMjo0NDow MC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvZm9ydHJhbi90cmFucy1kZWNsLmMJMjAwOC0wOC0y NSAxMzoxNjoxNy4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zMTUxLDI2ICszMTUxLDcgQEAgZ2ZjX2Ny ZWF0ZV9tb2R1bGVfdmFyaWFibGUgKGdmY19zeW1ib2wgKgotICAgICB9Ci0gfQotIAotLQotLS8q IEdlbmVyYXRlIGFsbCB0aGUgcmVxdWlyZWQgY29kZSBmb3IgbW9kdWxlIHZhcmlhYmxlcy4gICov Ci0tCi0tdm9pZAotLWdmY19nZW5lcmF0ZV9tb2R1bGVfdmFycyAoZ2ZjX25hbWVzcGFjZSAqIG5z KQotLXsKLS0gIG1vZHVsZV9uYW1lc3BhY2UgPSBuczsKLS0gIGN1cl9tb2R1bGUgPSBnZmNfZmlu ZF9tb2R1bGUgKG5zLT5wcm9jX25hbWUtPm5hbWUpOwotLQotLSAgLyogQ2hlY2sgaWYgdGhlIGZy b250ZW5kIGxlZnQgdGhlIG5hbWVzcGFjZSBpbiBhIHJlYXNvbmFibGUgc3RhdGUuICAqLwotLSAg Z2NjX2Fzc2VydCAobnMtPnByb2NfbmFtZSAmJiAhbnMtPnByb2NfbmFtZS0+dGxpbmspOwotLQot LSAgLyogR2VuZXJhdGUgQ09NTU9OIGJsb2Nrcy4gICovCi0tICBnZmNfdHJhbnNfY29tbW9uIChu cyk7Ci0tCi0tICAvKiBDcmVhdGUgZGVjbHMgZm9yIGFsbCB0aGUgbW9kdWxlIHZhcmlhYmxlcy4g ICovCi0tICBnZmNfdHJhdmVyc2VfbnMgKG5zLCBnZmNfY3JlYXRlX21vZHVsZV92YXJpYWJsZSk7 Ci0tCi0tICBjdXJfbW9kdWxlID0gTlVMTDsKLS19Ci0rLyogRW1pdCBkZWJ1ZyBpbmZvcm1hdGlv biBmb3IgVVNFIHN0YXRlbWVudHMuICAqLwotIAotIHN0YXRpYyB2b2lkCi0gZ2ZjX3RyYW5zX3Vz ZV9zdG10cyAoZ2ZjX25hbWVzcGFjZSAqIG5zKQotQEAgLTMxOTAsNiArMzE3MSw3IEBAIGdmY190 cmFuc191c2Vfc3RtdHMgKGdmY19uYW1lc3BhY2UgKiBucykKLSAJCQkgIHZvaWRfdHlwZV9ub2Rl KTsKLSAJICBERUNMX0VYVEVSTkFMIChlbnRyeS0+bmFtZXNwYWNlX2RlY2wpID0gMTsKLSAJfQot KyAgICAgIGdmY19zZXRfYmFja2VuZF9sb2N1cyAoJnVzZV9zdG10LT53aGVyZSk7Ci0gICAgICAg aWYgKCF1c2Vfc3RtdC0+b25seV9mbGFnKQotIAkoKmRlYnVnX2hvb2tzLT5pbXBvcnRlZF9tb2R1 bGVfb3JfZGVjbCkgKGVudHJ5LT5uYW1lc3BhY2VfZGVjbCwKLSAJCQkJCQkgTlVMTF9UUkVFLAot QEAgLTMyMTQsOSArMzE5NiwxNCBAQCBnZmNfdHJhbnNfdXNlX3N0bXRzIChnZmNfbmFtZXNwYWNl ICogbnMpCi0gCQkJCSAgICAgcmVudC0+bG9jYWxfbmFtZVswXQotIAkJCQkgICAgID8gcmVudC0+ bG9jYWxfbmFtZSA6IHJlbnQtPnVzZV9uYW1lKTsKLSAJICAgICAgZ2NjX2Fzc2VydCAoc3QgJiYg c3QtPm4uc3ltLT5hdHRyLnVzZV9hc3NvYyk7Ci0tCSAgICAgIGlmIChzdC0+bi5zeW0tPmJhY2tl bmRfZGVjbCAmJiBERUNMX1AgKHN0LT5uLnN5bS0+YmFja2VuZF9kZWNsKSkKLSsJICAgICAgaWYg KHN0LT5uLnN5bS0+YmFja2VuZF9kZWNsCi0rCQkgICYmIERFQ0xfUCAoc3QtPm4uc3ltLT5iYWNr ZW5kX2RlY2wpCi0rCQkgICYmIHN0LT5uLnN5bS0+bW9kdWxlCi0rCQkgICYmIHN0cmNtcCAoc3Qt Pm4uc3ltLT5tb2R1bGUsIHVzZV9zdG10LT5tb2R1bGVfbmFtZSkgPT0gMCkKLSAJCXsKLS0JCSAg Z2NjX2Fzc2VydCAoREVDTF9FWFRFUk5BTCAoZW50cnktPm5hbWVzcGFjZV9kZWNsKSk7Ci0rCQkg IGdjY19hc3NlcnQgKERFQ0xfRVhURVJOQUwgKGVudHJ5LT5uYW1lc3BhY2VfZGVjbCkKLSsJCQkg ICAgICB8fCAoVFJFRV9DT0RFIChzdC0+bi5zeW0tPmJhY2tlbmRfZGVjbCkKLSsJCQkJICAhPSBW QVJfREVDTCkpOwotIAkJICBkZWNsID0gY29weV9ub2RlIChzdC0+bi5zeW0tPmJhY2tlbmRfZGVj bCk7Ci0gCQkgIERFQ0xfQ09OVEVYVCAoZGVjbCkgPSBlbnRyeS0+bmFtZXNwYWNlX2RlY2w7Ci0g CQkgIERFQ0xfRVhURVJOQUwgKGRlY2wpID0gMTsKLUBAIC0zMjM2LDYgKzMyMjMsNyBAQCBnZmNf dHJhbnNfdXNlX3N0bXRzIChnZmNfbmFtZXNwYWNlICogbnMpCi0gCSAgICBsb2NhbF9uYW1lID0g Z2V0X2lkZW50aWZpZXIgKHJlbnQtPmxvY2FsX25hbWUpOwotIAkgIGVsc2UKLSAJICAgIGxvY2Fs X25hbWUgPSBOVUxMX1RSRUU7Ci0rCSAgZ2ZjX3NldF9iYWNrZW5kX2xvY3VzICgmcmVudC0+d2hl cmUpOwotIAkgICgqZGVidWdfaG9va3MtPmltcG9ydGVkX21vZHVsZV9vcl9kZWNsKSAoZGVjbCwg bG9jYWxfbmFtZSwKLSAJCQkJCQkgICBucy0+cHJvY19uYW1lLT5iYWNrZW5kX2RlY2wsCi0gCQkJ CQkJICAgIXVzZV9zdG10LT5vbmx5X2ZsYWcpOwotQEAgLTMyNDMsNiArMzIzMSwzMCBAQCBnZmNf dHJhbnNfdXNlX3N0bXRzIChnZmNfbmFtZXNwYWNlICogbnMpCi0gICAgIH0KLSB9Ci0gCi0rCi0r LyogR2VuZXJhdGUgYWxsIHRoZSByZXF1aXJlZCBjb2RlIGZvciBtb2R1bGUgdmFyaWFibGVzLiAg Ki8KLSsKLSt2b2lkCi0rZ2ZjX2dlbmVyYXRlX21vZHVsZV92YXJzIChnZmNfbmFtZXNwYWNlICog bnMpCi0rewotKyAgbW9kdWxlX25hbWVzcGFjZSA9IG5zOwotKyAgY3VyX21vZHVsZSA9IGdmY19m aW5kX21vZHVsZSAobnMtPnByb2NfbmFtZS0+bmFtZSk7Ci0rCi0rICAvKiBDaGVjayBpZiB0aGUg ZnJvbnRlbmQgbGVmdCB0aGUgbmFtZXNwYWNlIGluIGEgcmVhc29uYWJsZSBzdGF0ZS4gICovCi0r ICBnY2NfYXNzZXJ0IChucy0+cHJvY19uYW1lICYmICFucy0+cHJvY19uYW1lLT50bGluayk7Ci0r Ci0rICAvKiBHZW5lcmF0ZSBDT01NT04gYmxvY2tzLiAgKi8KLSsgIGdmY190cmFuc19jb21tb24g KG5zKTsKLSsKLSsgIC8qIENyZWF0ZSBkZWNscyBmb3IgYWxsIHRoZSBtb2R1bGUgdmFyaWFibGVz LiAgKi8KLSsgIGdmY190cmF2ZXJzZV9ucyAobnMsIGdmY19jcmVhdGVfbW9kdWxlX3ZhcmlhYmxl KTsKLSsKLSsgIGN1cl9tb2R1bGUgPSBOVUxMOwotKwotKyAgZ2ZjX3RyYW5zX3VzZV9zdG10cyAo bnMpOwotK30KLSsKLSsKLSBzdGF0aWMgdm9pZAotIGdmY19nZW5lcmF0ZV9jb250YWluZWRfZnVu Y3Rpb25zIChnZmNfbmFtZXNwYWNlICogcGFyZW50KQotIHsKCmRpZmYgLS1naXQgYS9nY2M0My1w cjM3MTg5LnBhdGNoIGIvZ2NjNDMtcHIzNzE4OS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4yZTYxZjNkCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjNDMtcHIzNzE4OS5w YXRjaApAQCAtMCwwICsxLDExNyBAQAorMjAwOC0wOS0wMyAgSmFrdWIgSmVsaW5layAgPGpha3Vi QHJlZGhhdC5jb20+CisKKwlQUiBjKysvMzcxODkKKwkqIGNwLXRyZWUuaCAoZGVmZXJfbWFya191 c2VkX2NhbGxzLCBkZWZlcnJlZF9tYXJrX3VzZWRfY2FsbHMpOiBOZXcKKwlleHRlcm4gZGVjbHMu CisJKiBkZWNsMi5jIChtYXJrX3VzZWQpOiBJZiBkZWZlcl9tYXJrX3VzZWRfY2FsbHMsIHB1c2gg ZGVjbCBpbnRvCisJZGVmZXJyZWRfbWFya191c2VkX2NhbGxzIHZlY3RvciBhbmQgZXhpdCBlYXJs eS4KKwkqIGRlY2wuYyAoZGVmZXJfbWFya191c2VkX2NhbGxzLCBkZWZlcnJlZF9tYXJrX3VzZWRf Y2FsbHMpOiBOZXcKKwl2YXJpYWJsZXMuCisJKGZpbmlzaF9mdW5jdGlvbik6IFNldCBkZWZlcl9t YXJrX3VzZWRfY2FsbHMgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUKKwlmdW5jdGlvbi4gIENhbGwg bWFya191c2VkIG9uIGFueSBxdWV1ZWQgZGVjbHMuCisKKwlQUiBjKysvMzcxODkKKwkqIGcrKy5k Zy9nb21wL3ByMzcxODkuQzogTmV3IHRlc3QuCisKKy0tLSBnY2MvY3AvZGVjbDIuYwkocmV2aXNp b24gMTM5OTU0KQorKysrIGdjYy9jcC9kZWNsMi5jCShyZXZpc2lvbiAxMzk5NTUpCitAQCAtMzc3 Niw2ICszNzc2LDE1IEBAIG1hcmtfdXNlZCAodHJlZSBkZWNsKQorICAgLyogSWYgd2UgZG9uJ3Qg bmVlZCBhIHZhbHVlLCB0aGVuIHdlIGRvbid0IG5lZWQgdG8gc3ludGhlc2l6ZSBERUNMLiAgKi8K KyAgIGlmIChza2lwX2V2YWx1YXRpb24pCisgICAgIHJldHVybjsKKysKKysgIC8qIElmIHdpdGhp biBmaW5pc2hfZnVuY3Rpb24sIGRlZmVyIHRoZSByZXN0IHVudGlsIHRoYXQgZnVuY3Rpb24KKysg ICAgIGZpbmlzaGVzLCBvdGhlcndpc2UgaXQgbWlnaHQgcmVjdXJzZS4gICovCisrICBpZiAoZGVm ZXJfbWFya191c2VkX2NhbGxzKQorKyAgICB7CisrICAgICAgVkVDX3NhZmVfcHVzaCAodHJlZSwg Z2MsIGRlZmVycmVkX21hcmtfdXNlZF9jYWxscywgZGVjbCk7CisrICAgICAgcmV0dXJuOworKyAg ICB9CisrCisgICAvKiBOb3JtYWxseSwgd2UgY2FuIHdhaXQgdW50aWwgaW5zdGFudGlhdGlvbi10 aW1lIHRvIHN5bnRoZXNpemUKKyAgICAgIERFQ0wuICBIb3dldmVyLCBpZiBERUNMIGlzIGEgc3Rh dGljIGRhdGEgbWVtYmVyIGluaXRpYWxpemVkIHdpdGgKKyAgICAgIGEgY29uc3RhbnQsIHdlIG5l ZWQgdGhlIHZhbHVlIHJpZ2h0IG5vdyBiZWNhdXNlIGEgcmVmZXJlbmNlIHRvCistLS0gZ2NjL2Nw L2RlY2wuYwkocmV2aXNpb24gMTM5OTU0KQorKysrIGdjYy9jcC9kZWNsLmMJKHJldmlzaW9uIDEz OTk1NSkKK0BAIC0yMjcsNiArMjI3LDExIEBAIHN0cnVjdCBuYW1lZF9sYWJlbF9lbnRyeSBHVFko KCkpCisgICAgZnVuY3Rpb24sIHR3byBpbnNpZGUgdGhlIGJvZHkgb2YgYSBmdW5jdGlvbiBpbiBh IGxvY2FsIGNsYXNzLCBldGMuKSAgKi8KKyBpbnQgZnVuY3Rpb25fZGVwdGg7CisgCisrLyogVG8g YXZvaWQgdW53YW50ZWQgcmVjdXJzaW9uLCBmaW5pc2hfZnVuY3Rpb24gZGVmZXJzIGFsbCBtYXJr X3VzZWQgY2FsbHMKKysgICBlbmNvdW50ZXJlZCBkdXJpbmcgaXRzIGV4ZWN1dGlvbiB1bnRpbCBp dCBmaW5pc2hlcy4gICovCisrYm9vbCBkZWZlcl9tYXJrX3VzZWRfY2FsbHM7CisrVkVDKHRyZWUs IGdjKSAqZGVmZXJyZWRfbWFya191c2VkX2NhbGxzOworKworIC8qIFN0YXRlcyBpbmRpY2F0aW5n IGhvdyBncm9rZGVjbGFyYXRvcigpIHNob3VsZCBoYW5kbGUgZGVjbHNwZWNzIG1hcmtlZAorICAg IHdpdGggX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpLiAgQW4gb2JqZWN0IGRlY2xhcmVkIGFz CisgICAgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpIHN1cHByZXNzZXMgd2FybmluZ3Mgb2Yg dXNlcyBvZiBvdGhlcgorQEAgLTEyMDMzLDYgKzEyMDM4LDkgQEAgZmluaXNoX2Z1bmN0aW9uIChp bnQgZmxhZ3MpCisgICBpZiAoZm5kZWNsID09IE5VTExfVFJFRSkKKyAgICAgcmV0dXJuIGVycm9y X21hcmtfbm9kZTsKKyAKKysgIGdjY19hc3NlcnQgKCFkZWZlcl9tYXJrX3VzZWRfY2FsbHMpOwor KyAgZGVmZXJfbWFya191c2VkX2NhbGxzID0gdHJ1ZTsKKysKKyAgIGlmIChERUNMX05PTlNUQVRJ Q19NRU1CRVJfRlVOQ1RJT05fUCAoZm5kZWNsKQorICAgICAgICYmIERFQ0xfVklSVFVBTF9QIChm bmRlY2wpCisgICAgICAgJiYgIXByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbCkKK0BAIC0xMjIzMiw2 ICsxMjI0MCwxNyBAQCBmaW5pc2hfZnVuY3Rpb24gKGludCBmbGFncykKKyAgICAgICAgY3h4X3Bv cF9mdW5jdGlvbl9jb250ZXh0IGFuZCB0aGVuIHJlc2V0IHZpYSBwb3BfZnVuY3Rpb25fY29udGV4 dC4gICovCisgICAgIGN1cnJlbnRfZnVuY3Rpb25fZGVjbCA9IE5VTExfVFJFRTsKKyAKKysgIGRl ZmVyX21hcmtfdXNlZF9jYWxscyA9IGZhbHNlOworKyAgaWYgKGRlZmVycmVkX21hcmtfdXNlZF9j YWxscykKKysgICAgeworKyAgICAgIHVuc2lnbmVkIGludCBpOworKyAgICAgIHRyZWUgZGVjbDsK KysKKysgICAgICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAodHJlZSwgZGVmZXJyZWRfbWFya191 c2VkX2NhbGxzLCBpLCBkZWNsKTsgaSsrKQorKwltYXJrX3VzZWQgKGRlY2wpOworKyAgICAgIFZF Q19mcmVlICh0cmVlLCBnYywgZGVmZXJyZWRfbWFya191c2VkX2NhbGxzKTsKKysgICAgfQorKwor ICAgcmV0dXJuIGZuZGVjbDsKKyB9CisgDAorLS0tIGdjYy9jcC9jcC10cmVlLmgJKHJldmlzaW9u IDEzOTk1NCkKKysrKyBnY2MvY3AvY3AtdHJlZS5oCShyZXZpc2lvbiAxMzk5NTUpCitAQCAtNDM4 MSw2ICs0MzgxLDkgQEAgZXh0ZXJuIHZvaWQgaW5pdGlhbGl6ZV9hcnRpZmljaWFsX3ZhcgkJKAor IGV4dGVybiB0cmVlIGNoZWNrX3Zhcl90eXBlCQkJKHRyZWUsIHRyZWUpOworIGV4dGVybiB0cmVl IHJlc2hhcGVfaW5pdCAodHJlZSwgdHJlZSk7CisgCisrZXh0ZXJuIGJvb2wgZGVmZXJfbWFya191 c2VkX2NhbGxzOworK2V4dGVybiBHVFkoKCkpIFZFQyh0cmVlLCBnYykgKmRlZmVycmVkX21hcmtf dXNlZF9jYWxsczsKKysKKyAvKiBpbiBkZWNsMi5jICovCisgZXh0ZXJuIGJvb2wgY2hlY2tfamF2 YV9tZXRob2QJCQkodHJlZSk7CisgZXh0ZXJuIHRyZWUgYnVpbGRfbWVtZm5fdHlwZQkJCSh0cmVl LCB0cmVlLCBjcF9jdl9xdWFscyk7CistLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZ29tcC9wcjM3 MTg5LkMJKHJldmlzaW9uIDApCisrKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZ29tcC9wcjM3MTg5 LkMJKHJldmlzaW9uIDEzOTk1NSkKK0BAIC0wLDAgKzEsMjcgQEAKKysvLyBQUiBjKysvMzcxODkK KysvLyB7IGRnLWRvIGNvbXBpbGUgfQorKy8vIHsgZGctb3B0aW9ucyAiLWZvcGVubXAiIH0KKysK KytzdHJ1Y3QgUworK3sKKysgIFMgKCkge30KKysgIFMgKFMgY29uc3QgJikge30KKyt9OworKwor K3N0cnVjdCBUCisreworKyAgUyBzOworK307CisrCisrdm9pZAorK2JhciAoVCAmKQorK3sKKyt9 CisrCisraW50CisrZm9vICgpCisreworKyAgVCB0OworKyAgI3ByYWdtYSBvbXAgdGFzaworKyAg ICBiYXIgKHQpOworK30KCmRpZmYgLS1naXQgYS9nY2M0My1wcjM3MjQ4LnBhdGNoIGIvZ2NjNDMt cHIzNzI0OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzEwZGEzNC4uMDAw MDAwMAotLS0gYS9nY2M0My1wcjM3MjQ4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIyICsw LDAgQEAKLTIwMDgtMDgtMjkgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgotCi0J UFIgbWlkZGxlLWVuZC8zNzI0OAotCVBSIG1pZGRsZS1lbmQvMzY0NDkKLQkqIGZvbGQtY29uc3Qu YyAobWFrZV9iaXRfZmllbGRfcmVmKTogQ2hhbmdlIGJpdHBvcyBhbmQgYml0c2l6ZQotCWFyZ3Vt ZW50cyB0byBIT1NUX1dJREVfSU5ULgotCShmb2xkX3RydXRob3ApOiBDaGFuZ2UgZmlyc3RfYml0 IGFuZCBlbmRfYml0IHRvIEhPU1RfV0lERV9JTlQuCi0KLQkqIGcrKy5kZy9vcHQvcHIzNjQ0OS5D OiBOZXcgdGVzdC4KLQotMjAwOC0wOC0yOSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5j b20+Ci0KLQlSZXZlcnQ6Ci0JMjAwOC0wNi0xMSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhl ckBzdXNlLmRlPgotCVBSIG1pZGRsZS1lbmQvMzY0NDkKLQkqIGZvbGQtY29uc3QuYyAoZm9sZF90 cnV0aG9wKTogUmVtb3ZlIGNvZGUgZ2VuZXJhdGluZwotCUJJVF9GSUVMRF9SRUZzIG9mIHN0cnVj dHVyZSBiYXNlcy4KLQkoZm9sZF9iaW5hcnkpOiBMaWtld2lzZS4KLQkobWFrZV9iaXRfZmllbGRf cmVmKTogUmVtb3ZlLgotCShvcHRpbWl6ZV9iaXRfZmllbGRfY29tcGFyZSk6IFJlbW92ZS4KLQko YWxsX29uZXNfbWFza19wKTogUmVtb3ZlLgotCi0tLS0gZ2NjL2ZvbGQtY29uc3QuYwkocmV2aXNp b24gMTM2NjYyKQotKysrIGdjYy9mb2xkLWNvbnN0LmMJKHJldmlzaW9uIDEzNjY2MSkKLUBAIC0x MDksOSArMTA5LDEyIEBAIHN0YXRpYyBpbnQgdHdvdmFsX2NvbXBhcmlzb25fcCAodHJlZSwgdHIK LSBzdGF0aWMgdHJlZSBldmFsX3N1YnN0ICh0cmVlLCB0cmVlLCB0cmVlLCB0cmVlLCB0cmVlKTsK LSBzdGF0aWMgdHJlZSBwZWRhbnRpY19vbWl0X29uZV9vcGVyYW5kICh0cmVlLCB0cmVlLCB0cmVl KTsKLSBzdGF0aWMgdHJlZSBkaXN0cmlidXRlX2JpdF9leHByIChlbnVtIHRyZWVfY29kZSwgdHJl ZSwgdHJlZSwgdHJlZSk7Ci0rc3RhdGljIHRyZWUgbWFrZV9iaXRfZmllbGRfcmVmICh0cmVlLCB0 cmVlLCBIT1NUX1dJREVfSU5ULCBIT1NUX1dJREVfSU5ULCBpbnQpOwotK3N0YXRpYyB0cmVlIG9w dGltaXplX2JpdF9maWVsZF9jb21wYXJlIChlbnVtIHRyZWVfY29kZSwgdHJlZSwgdHJlZSwgdHJl ZSk7Ci0gc3RhdGljIHRyZWUgZGVjb2RlX2ZpZWxkX3JlZmVyZW5jZSAodHJlZSwgSE9TVF9XSURF X0lOVCAqLCBIT1NUX1dJREVfSU5UICosCi0gCQkJCSAgICBlbnVtIG1hY2hpbmVfbW9kZSAqLCBp bnQgKiwgaW50ICosCi0gCQkJCSAgICB0cmVlICosIHRyZWUgKik7Ci0rc3RhdGljIGludCBhbGxf b25lc19tYXNrX3AgKGNvbnN0X3RyZWUsIGludCk7Ci0gc3RhdGljIHRyZWUgc2lnbl9iaXRfcCAo dHJlZSwgY29uc3RfdHJlZSk7Ci0gc3RhdGljIGludCBzaW1wbGVfb3BlcmFuZF9wIChjb25zdF90 cmVlKTsKLSBzdGF0aWMgdHJlZSByYW5nZV9iaW5vcCAoZW51bSB0cmVlX2NvZGUsIHRyZWUsIHRy ZWUsIGludCwgdHJlZSwgaW50KTsKLUBAIC0zODQ4LDYgKzM4NTEsMjAyIEBAIGRpc3RyaWJ1dGVf cmVhbF9kaXZpc2lvbiAoZW51bSB0cmVlX2NvZGUKLSAgIHJldHVybiBOVUxMX1RSRUU7Ci0gfQot IAwKLSsvKiBSZXR1cm4gYSBCSVRfRklFTERfUkVGIG9mIHR5cGUgVFlQRSB0byByZWZlciB0byBC SVRTSVpFIGJpdHMgb2YgSU5ORVIKLSsgICBzdGFydGluZyBhdCBCSVRQT1MuICBUaGUgZmllbGQg aXMgdW5zaWduZWQgaWYgVU5TSUdORURQIGlzIG5vbnplcm8uICAqLwotKwotK3N0YXRpYyB0cmVl Ci0rbWFrZV9iaXRfZmllbGRfcmVmICh0cmVlIGlubmVyLCB0cmVlIHR5cGUsIEhPU1RfV0lERV9J TlQgYml0c2l6ZSwKLSsJCSAgICBIT1NUX1dJREVfSU5UIGJpdHBvcywgaW50IHVuc2lnbmVkcCkK LSt7Ci0rICB0cmVlIHJlc3VsdDsKLSsKLSsgIGlmIChiaXRwb3MgPT0gMCkKLSsgICAgewotKyAg ICAgIHRyZWUgc2l6ZSA9IFRZUEVfU0laRSAoVFJFRV9UWVBFIChpbm5lcikpOwotKyAgICAgIGlm ICgoSU5URUdSQUxfVFlQRV9QIChUUkVFX1RZUEUgKGlubmVyKSkKLSsJICAgfHwgUE9JTlRFUl9U WVBFX1AgKFRSRUVfVFlQRSAoaW5uZXIpKSkKLSsJICAmJiBob3N0X2ludGVnZXJwIChzaXplLCAw KSAKLSsJICAmJiB0cmVlX2xvd19jc3QgKHNpemUsIDApID09IGJpdHNpemUpCi0rCXJldHVybiBm b2xkX2NvbnZlcnQgKHR5cGUsIGlubmVyKTsKLSsgICAgfQotKwotKyAgcmVzdWx0ID0gYnVpbGQz IChCSVRfRklFTERfUkVGLCB0eXBlLCBpbm5lciwKLSsJCSAgIHNpemVfaW50IChiaXRzaXplKSwg Yml0c2l6ZV9pbnQgKGJpdHBvcykpOwotKwotKyAgQklUX0ZJRUxEX1JFRl9VTlNJR05FRCAocmVz dWx0KSA9IHVuc2lnbmVkcDsKLSsKLSsgIHJldHVybiByZXN1bHQ7Ci0rfQotKwotKy8qIE9wdGlt aXplIGEgYml0LWZpZWxkIGNvbXBhcmUuCi0rCi0rICAgVGhlcmUgYXJlIHR3byBjYXNlczogIEZp cnN0IGlzIGEgY29tcGFyZSBhZ2FpbnN0IGEgY29uc3RhbnQgYW5kIHRoZQotKyAgIHNlY29uZCBp cyBhIGNvbXBhcmlzb24gb2YgdHdvIGl0ZW1zIHdoZXJlIHRoZSBmaWVsZHMgYXJlIGF0IHRoZSBz YW1lCi0rICAgYml0IHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiBhIGNodW5rIChi eXRlLCBoYWxmd29yZCwgd29yZCkKLSsgICBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiBpdC4gIElu IHRoZXNlIGNhc2VzIHdlIGNhbiBhdm9pZCB0aGUgc2hpZnQKLSsgICBpbXBsaWNpdCBpbiBiaXRm aWVsZCBleHRyYWN0aW9ucy4KLSsKLSsgICBGb3IgY29uc3RhbnRzLCB3ZSBlbWl0IGEgY29tcGFy ZSBvZiB0aGUgc2hpZnRlZCBjb25zdGFudCB3aXRoIHRoZQotKyAgIEJJVF9BTkRfRVhQUiBvZiBh IG1hc2sgYW5kIGEgYnl0ZSwgaGFsZndvcmQsIG9yIHdvcmQgb2YgdGhlIG9wZXJhbmQgYmVpbmcK LSsgICBjb21wYXJlZC4gIEZvciB0d28gZmllbGRzIGF0IHRoZSBzYW1lIHBvc2l0aW9uLCB3ZSBk byB0aGUgQU5EcyB3aXRoIHRoZQotKyAgIHNpbWlsYXIgbWFzayBhbmQgY29tcGFyZSB0aGUgcmVz dWx0IG9mIHRoZSBBTkRzLgotKwotKyAgIENPREUgaXMgdGhlIGNvbXBhcmlzb24gY29kZSwga25v d24gdG8gYmUgZWl0aGVyIE5FX0VYUFIgb3IgRVFfRVhQUi4KLSsgICBDT01QQVJFX1RZUEUgaXMg dGhlIHR5cGUgb2YgdGhlIGNvbXBhcmlzb24sIGFuZCBMSFMgYW5kIFJIUwotKyAgIGFyZSB0aGUg bGVmdCBhbmQgcmlnaHQgb3BlcmFuZHMgb2YgdGhlIGNvbXBhcmlzb24sIHJlc3BlY3RpdmVseS4K LSsKLSsgICBJZiB0aGUgb3B0aW1pemF0aW9uIGRlc2NyaWJlZCBhYm92ZSBjYW4gYmUgZG9uZSwg d2UgcmV0dXJuIHRoZSByZXN1bHRpbmcKLSsgICB0cmVlLiAgT3RoZXJ3aXNlIHdlIHJldHVybiB6 ZXJvLiAgKi8KLSsKLStzdGF0aWMgdHJlZQotK29wdGltaXplX2JpdF9maWVsZF9jb21wYXJlIChl bnVtIHRyZWVfY29kZSBjb2RlLCB0cmVlIGNvbXBhcmVfdHlwZSwKLSsJCQkgICAgdHJlZSBsaHMs IHRyZWUgcmhzKQotK3sKLSsgIEhPU1RfV0lERV9JTlQgbGJpdHBvcywgbGJpdHNpemUsIHJiaXRw b3MsIHJiaXRzaXplLCBuYml0cG9zLCBuYml0c2l6ZTsKLSsgIHRyZWUgdHlwZSA9IFRSRUVfVFlQ RSAobGhzKTsKLSsgIHRyZWUgc2lnbmVkX3R5cGUsIHVuc2lnbmVkX3R5cGU7Ci0rICBpbnQgY29u c3RfcCA9IFRSRUVfQ09ERSAocmhzKSA9PSBJTlRFR0VSX0NTVDsKLSsgIGVudW0gbWFjaGluZV9t b2RlIGxtb2RlLCBybW9kZSwgbm1vZGU7Ci0rICBpbnQgbHVuc2lnbmVkcCwgcnVuc2lnbmVkcDsK LSsgIGludCBsdm9sYXRpbGVwID0gMCwgcnZvbGF0aWxlcCA9IDA7Ci0rICB0cmVlIGxpbm5lciwg cmlubmVyID0gTlVMTF9UUkVFOwotKyAgdHJlZSBtYXNrOwotKyAgdHJlZSBvZmZzZXQ7Ci0rCi0r ICAvKiBHZXQgYWxsIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXh0cmFjdGlvbnMgYmVpbmcg ZG9uZS4gIElmIHRoZSBiaXQgc2l6ZQotKyAgICAgaWYgdGhlIHNhbWUgYXMgdGhlIHNpemUgb2Yg dGhlIHVuZGVybHlpbmcgb2JqZWN0LCB3ZSBhcmVuJ3QgZG9pbmcgYW4KLSsgICAgIGV4dHJhY3Rp b24gYXQgYWxsIGFuZCBzbyBjYW4gZG8gbm90aGluZy4gIFdlIGFsc28gZG9uJ3Qgd2FudCB0bwot KyAgICAgZG8gYW55dGhpbmcgaWYgdGhlIGlubmVyIGV4cHJlc3Npb24gaXMgYSBQTEFDRUhPTERF Ul9FWFBSIHNpbmNlIHdlCi0rICAgICB0aGVuIHdpbGwgbm8gbG9uZ2VyIGJlIGFibGUgdG8gcmVw bGFjZSBpdC4gICovCi0rICBsaW5uZXIgPSBnZXRfaW5uZXJfcmVmZXJlbmNlIChsaHMsICZsYml0 c2l6ZSwgJmxiaXRwb3MsICZvZmZzZXQsICZsbW9kZSwKLSsJCQkJJmx1bnNpZ25lZHAsICZsdm9s YXRpbGVwLCBmYWxzZSk7Ci0rICBpZiAobGlubmVyID09IGxocyB8fCBsYml0c2l6ZSA9PSBHRVRf TU9ERV9CSVRTSVpFIChsbW9kZSkgfHwgbGJpdHNpemUgPCAwCi0rICAgICAgfHwgb2Zmc2V0ICE9 IDAgfHwgVFJFRV9DT0RFIChsaW5uZXIpID09IFBMQUNFSE9MREVSX0VYUFIpCi0rICAgIHJldHVy biAwOwotKwotKyBpZiAoIWNvbnN0X3ApCi0rICAgewotKyAgICAgLyogSWYgdGhpcyBpcyBub3Qg YSBjb25zdGFudCwgd2UgY2FuIG9ubHkgZG8gc29tZXRoaW5nIGlmIGJpdCBwb3NpdGlvbnMsCi0r CXNpemVzLCBhbmQgc2lnbmVkbmVzcyBhcmUgdGhlIHNhbWUuICAqLwotKyAgICAgcmlubmVyID0g Z2V0X2lubmVyX3JlZmVyZW5jZSAocmhzLCAmcmJpdHNpemUsICZyYml0cG9zLCAmb2Zmc2V0LCAm cm1vZGUsCi0rCQkJCSAgICZydW5zaWduZWRwLCAmcnZvbGF0aWxlcCwgZmFsc2UpOwotKwotKyAg ICAgaWYgKHJpbm5lciA9PSByaHMgfHwgbGJpdHBvcyAhPSByYml0cG9zIHx8IGxiaXRzaXplICE9 IHJiaXRzaXplCi0rCSB8fCBsdW5zaWduZWRwICE9IHJ1bnNpZ25lZHAgfHwgb2Zmc2V0ICE9IDAK LSsJIHx8IFRSRUVfQ09ERSAocmlubmVyKSA9PSBQTEFDRUhPTERFUl9FWFBSKQotKyAgICAgICBy ZXR1cm4gMDsKLSsgICB9Ci0rCi0rICAvKiBTZWUgaWYgd2UgY2FuIGZpbmQgYSBtb2RlIHRvIHJl ZmVyIHRvIHRoaXMgZmllbGQuICBXZSBzaG91bGQgYmUgYWJsZSB0bywKLSsgICAgIGJ1dCBmYWls IGlmIHdlIGNhbid0LiAgKi8KLSsgIG5tb2RlID0gZ2V0X2Jlc3RfbW9kZSAobGJpdHNpemUsIGxi aXRwb3MsCi0rCQkJIGNvbnN0X3AgPyBUWVBFX0FMSUdOIChUUkVFX1RZUEUgKGxpbm5lcikpCi0r CQkJIDogTUlOIChUWVBFX0FMSUdOIChUUkVFX1RZUEUgKGxpbm5lcikpLAotKwkJCQlUWVBFX0FM SUdOIChUUkVFX1RZUEUgKHJpbm5lcikpKSwKLSsJCQkgd29yZF9tb2RlLCBsdm9sYXRpbGVwIHx8 IHJ2b2xhdGlsZXApOwotKyAgaWYgKG5tb2RlID09IFZPSURtb2RlKQotKyAgICByZXR1cm4gMDsK LSsKLSsgIC8qIFNldCBzaWduZWQgYW5kIHVuc2lnbmVkIHR5cGVzIG9mIHRoZSBwcmVjaXNpb24g b2YgdGhpcyBtb2RlIGZvciB0aGUKLSsgICAgIHNoaWZ0cyBiZWxvdy4gICovCi0rICBzaWduZWRf dHlwZSA9IGxhbmdfaG9va3MudHlwZXMudHlwZV9mb3JfbW9kZSAobm1vZGUsIDApOwotKyAgdW5z aWduZWRfdHlwZSA9IGxhbmdfaG9va3MudHlwZXMudHlwZV9mb3JfbW9kZSAobm1vZGUsIDEpOwot KwotKyAgLyogQ29tcHV0ZSB0aGUgYml0IHBvc2l0aW9uIGFuZCBzaXplIGZvciB0aGUgbmV3IHJl ZmVyZW5jZSBhbmQgb3VyIG9mZnNldAotKyAgICAgd2l0aGluIGl0LiBJZiB0aGUgbmV3IHJlZmVy ZW5jZSBpcyB0aGUgc2FtZSBzaXplIGFzIHRoZSBvcmlnaW5hbCwgd2UKLSsgICAgIHdvbid0IG9w dGltaXplIGFueXRoaW5nLCBzbyByZXR1cm4gemVyby4gICovCi0rICBuYml0c2l6ZSA9IEdFVF9N T0RFX0JJVFNJWkUgKG5tb2RlKTsKLSsgIG5iaXRwb3MgPSBsYml0cG9zICYgfiAobmJpdHNpemUg LSAxKTsKLSsgIGxiaXRwb3MgLT0gbmJpdHBvczsKLSsgIGlmIChuYml0c2l6ZSA9PSBsYml0c2l6 ZSkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICBpZiAoQllURVNfQklHX0VORElBTikKLSsgICAgbGJp dHBvcyA9IG5iaXRzaXplIC0gbGJpdHNpemUgLSBsYml0cG9zOwotKwotKyAgLyogTWFrZSB0aGUg bWFzayB0byBiZSB1c2VkIGFnYWluc3QgdGhlIGV4dHJhY3RlZCBmaWVsZC4gICovCi0rICBtYXNr ID0gYnVpbGRfaW50X2NzdF90eXBlICh1bnNpZ25lZF90eXBlLCAtMSk7Ci0rICBtYXNrID0gY29u c3RfYmlub3AgKExTSElGVF9FWFBSLCBtYXNrLCBzaXplX2ludCAobmJpdHNpemUgLSBsYml0c2l6 ZSksIDApOwotKyAgbWFzayA9IGNvbnN0X2Jpbm9wIChSU0hJRlRfRVhQUiwgbWFzaywKLSsJCSAg ICAgIHNpemVfaW50IChuYml0c2l6ZSAtIGxiaXRzaXplIC0gbGJpdHBvcyksIDApOwotKwotKyAg aWYgKCEgY29uc3RfcCkKLSsgICAgLyogSWYgbm90IGNvbXBhcmluZyB3aXRoIGNvbnN0YW50LCBq dXN0IHJld29yayB0aGUgY29tcGFyaXNvbgotKyAgICAgICBhbmQgcmV0dXJuLiAgKi8KLSsgICAg cmV0dXJuIGZvbGRfYnVpbGQyIChjb2RlLCBjb21wYXJlX3R5cGUsCi0rCQkJZm9sZF9idWlsZDIg KEJJVF9BTkRfRVhQUiwgdW5zaWduZWRfdHlwZSwKLSsJCQkJICAgICBtYWtlX2JpdF9maWVsZF9y ZWYgKGxpbm5lciwKLSsJCQkJCQkJIHVuc2lnbmVkX3R5cGUsCi0rCQkJCQkJCSBuYml0c2l6ZSwg bmJpdHBvcywKLSsJCQkJCQkJIDEpLAotKwkJCQkgICAgIG1hc2spLAotKwkJCWZvbGRfYnVpbGQy IChCSVRfQU5EX0VYUFIsIHVuc2lnbmVkX3R5cGUsCi0rCQkJCSAgICAgbWFrZV9iaXRfZmllbGRf cmVmIChyaW5uZXIsCi0rCQkJCQkJCSB1bnNpZ25lZF90eXBlLAotKwkJCQkJCQkgbmJpdHNpemUs IG5iaXRwb3MsCi0rCQkJCQkJCSAxKSwKLSsJCQkJICAgICBtYXNrKSk7Ci0rCi0rICAvKiBPdGhl cndpc2UsIHdlIGFyZSBoYW5kbGluZyB0aGUgY29uc3RhbnQgY2FzZS4gU2VlIGlmIHRoZSBjb25z dGFudCBpcyB0b28KLSsgICAgIGJpZyBmb3IgdGhlIGZpZWxkLiAgV2FybiBhbmQgcmV0dXJuIGEg dHJlZSBvZiBmb3IgMCAoZmFsc2UpIGlmIHNvLiAgV2UgZG8KLSsgICAgIHRoaXMgbm90IG9ubHkg Zm9yIGl0cyBvd24gc2FrZSwgYnV0IHRvIGF2b2lkIGhhdmluZyB0byB0ZXN0IGZvciB0aGlzCi0r ICAgICBlcnJvciBjYXNlIGJlbG93LiAgSWYgd2UgZGlkbid0LCB3ZSBtaWdodCBnZW5lcmF0ZSB3 cm9uZyBjb2RlLgotKwotKyAgICAgRm9yIHVuc2lnbmVkIGZpZWxkcywgdGhlIGNvbnN0YW50IHNo aWZ0ZWQgcmlnaHQgYnkgdGhlIGZpZWxkIGxlbmd0aCBzaG91bGQKLSsgICAgIGJlIGFsbCB6ZXJv LiAgRm9yIHNpZ25lZCBmaWVsZHMsIHRoZSBoaWdoLW9yZGVyIGJpdHMgc2hvdWxkIGFncmVlIHdp dGgKLSsgICAgIHRoZSBzaWduIGJpdC4gICovCi0rCi0rICBpZiAobHVuc2lnbmVkcCkKLSsgICAg ewotKyAgICAgIGlmICghIGludGVnZXJfemVyb3AgKGNvbnN0X2Jpbm9wIChSU0hJRlRfRVhQUiwK LSsJCQkJCWZvbGRfY29udmVydCAodW5zaWduZWRfdHlwZSwgcmhzKSwKLSsJCQkJCXNpemVfaW50 IChsYml0c2l6ZSksIDApKSkKLSsJewotKwkgIHdhcm5pbmcgKDAsICJjb21wYXJpc29uIGlzIGFs d2F5cyAlZCBkdWUgdG8gd2lkdGggb2YgYml0LWZpZWxkIiwKLSsJCSAgIGNvZGUgPT0gTkVfRVhQ Uik7Ci0rCSAgcmV0dXJuIGNvbnN0YW50X2Jvb2xlYW5fbm9kZSAoY29kZSA9PSBORV9FWFBSLCBj b21wYXJlX3R5cGUpOwotKwl9Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIHRyZWUg dGVtID0gY29uc3RfYmlub3AgKFJTSElGVF9FWFBSLCBmb2xkX2NvbnZlcnQgKHNpZ25lZF90eXBl LCByaHMpLAotKwkJCSAgICAgIHNpemVfaW50IChsYml0c2l6ZSAtIDEpLCAwKTsKLSsgICAgICBp ZiAoISBpbnRlZ2VyX3plcm9wICh0ZW0pICYmICEgaW50ZWdlcl9hbGxfb25lc3AgKHRlbSkpCi0r CXsKLSsJICB3YXJuaW5nICgwLCAiY29tcGFyaXNvbiBpcyBhbHdheXMgJWQgZHVlIHRvIHdpZHRo IG9mIGJpdC1maWVsZCIsCi0rCQkgICBjb2RlID09IE5FX0VYUFIpOwotKwkgIHJldHVybiBjb25z dGFudF9ib29sZWFuX25vZGUgKGNvZGUgPT0gTkVfRVhQUiwgY29tcGFyZV90eXBlKTsKLSsJfQot KyAgICB9Ci0rCi0rICAvKiBTaW5nbGUtYml0IGNvbXBhcmVzIHNob3VsZCBhbHdheXMgYmUgYWdh aW5zdCB6ZXJvLiAgKi8KLSsgIGlmIChsYml0c2l6ZSA9PSAxICYmICEgaW50ZWdlcl96ZXJvcCAo cmhzKSkKLSsgICAgewotKyAgICAgIGNvZGUgPSBjb2RlID09IEVRX0VYUFIgPyBORV9FWFBSIDog RVFfRVhQUjsKLSsgICAgICByaHMgPSBidWlsZF9pbnRfY3N0ICh0eXBlLCAwKTsKLSsgICAgfQot KwotKyAgLyogTWFrZSBhIG5ldyBiaXRmaWVsZCByZWZlcmVuY2UsIHNoaWZ0IHRoZSBjb25zdGFu dCBvdmVyIHRoZQotKyAgICAgYXBwcm9wcmlhdGUgbnVtYmVyIG9mIGJpdHMgYW5kIG1hc2sgaXQg d2l0aCB0aGUgY29tcHV0ZWQgbWFzawotKyAgICAgKGluIGNhc2UgdGhpcyB3YXMgYSBzaWduZWQg ZmllbGQpLiAgSWYgd2UgY2hhbmdlZCBpdCwgbWFrZSBhIG5ldyBvbmUuICAqLwotKyAgbGhzID0g bWFrZV9iaXRfZmllbGRfcmVmIChsaW5uZXIsIHVuc2lnbmVkX3R5cGUsIG5iaXRzaXplLCBuYml0 cG9zLCAxKTsKLSsgIGlmIChsdm9sYXRpbGVwKQotKyAgICB7Ci0rICAgICAgVFJFRV9TSURFX0VG RkVDVFMgKGxocykgPSAxOwotKyAgICAgIFRSRUVfVEhJU19WT0xBVElMRSAobGhzKSA9IDE7Ci0r ICAgIH0KLSsKLSsgIHJocyA9IGNvbnN0X2Jpbm9wIChCSVRfQU5EX0VYUFIsCi0rCQkgICAgIGNv bnN0X2Jpbm9wIChMU0hJRlRfRVhQUiwKLSsJCQkJICBmb2xkX2NvbnZlcnQgKHVuc2lnbmVkX3R5 cGUsIHJocyksCi0rCQkJCSAgc2l6ZV9pbnQgKGxiaXRwb3MpLCAwKSwKLSsJCSAgICAgbWFzaywg MCk7Ci0rCi0rICByZXR1cm4gYnVpbGQyIChjb2RlLCBjb21wYXJlX3R5cGUsCi0rCQkgYnVpbGQy IChCSVRfQU5EX0VYUFIsIHVuc2lnbmVkX3R5cGUsIGxocywgbWFzayksCi0rCQkgcmhzKTsKLSt9 Ci0rDAotIC8qIFN1YnJvdXRpbmUgZm9yIGZvbGRfdHJ1dGhvcDogZGVjb2RlIGEgZmllbGQgcmVm ZXJlbmNlLgotIAotICAgIElmIEVYUCBpcyBhIGNvbXBhcmlzb24gcmVmZXJlbmNlLCB3ZSByZXR1 cm4gdGhlIGlubmVybW9zdCByZWZlcmVuY2UuCi1AQCAtMzkzOSw2ICs0MTM4LDI3IEBAIGRlY29k ZV9maWVsZF9yZWZlcmVuY2UgKHRyZWUgZXhwLCBIT1NUX1cKLSAgIHJldHVybiBpbm5lcjsKLSB9 Ci0gCi0rLyogUmV0dXJuIG5vbnplcm8gaWYgTUFTSyByZXByZXNlbnRzIGEgbWFzayBvZiBTSVpF IG9uZXMgaW4gdGhlIGxvdy1vcmRlcgotKyAgIGJpdCBwb3NpdGlvbnMuICAqLwotKwotK3N0YXRp YyBpbnQKLSthbGxfb25lc19tYXNrX3AgKGNvbnN0X3RyZWUgbWFzaywgaW50IHNpemUpCi0rewot KyAgdHJlZSB0eXBlID0gVFJFRV9UWVBFIChtYXNrKTsKLSsgIHVuc2lnbmVkIGludCBwcmVjaXNp b24gPSBUWVBFX1BSRUNJU0lPTiAodHlwZSk7Ci0rICB0cmVlIHRtYXNrOwotKwotKyAgdG1hc2sg PSBidWlsZF9pbnRfY3N0X3R5cGUgKHNpZ25lZF90eXBlX2ZvciAodHlwZSksIC0xKTsKLSsKLSsg IHJldHVybgotKyAgICB0cmVlX2ludF9jc3RfZXF1YWwgKG1hc2ssCi0rCQkJY29uc3RfYmlub3Ag KFJTSElGVF9FWFBSLAotKwkJCQkgICAgIGNvbnN0X2Jpbm9wIChMU0hJRlRfRVhQUiwgdG1hc2ss Ci0rCQkJCQkJICBzaXplX2ludCAocHJlY2lzaW9uIC0gc2l6ZSksCi0rCQkJCQkJICAwKSwKLSsJ CQkJICAgICBzaXplX2ludCAocHJlY2lzaW9uIC0gc2l6ZSksIDApKTsKLSt9Ci0rCi0gLyogU3Vi cm91dGluZSBmb3IgZm9sZDogZGV0ZXJtaW5lIGlmIFZBTCBpcyB0aGUgSU5URUdFUl9DT05TVCB0 aGF0Ci0gICAgcmVwcmVzZW50cyB0aGUgc2lnbiBiaXQgb2YgRVhQJ3MgdHlwZS4gIElmIEVYUCBy ZXByZXNlbnRzIGEgc2lnbgotICAgIG9yIHplcm8gZXh0ZW5zaW9uLCBhbHNvIHRlc3QgVkFMIGFn YWluc3QgdGhlIHVuZXh0ZW5kZWQgdHlwZS4KLUBAIC01MjY0LDE2ICs1NDg0LDE2IEBAIGZvbGRf dHJ1dGhvcCAoZW51bSB0cmVlX2NvZGUgY29kZSwgdHJlZSAKLSAgIHRyZWUgbGxfaW5uZXIsIGxy X2lubmVyLCBybF9pbm5lciwgcnJfaW5uZXI7Ci0gICBIT1NUX1dJREVfSU5UIGxsX2JpdHNpemUs IGxsX2JpdHBvcywgbHJfYml0c2l6ZSwgbHJfYml0cG9zOwotICAgSE9TVF9XSURFX0lOVCBybF9i aXRzaXplLCBybF9iaXRwb3MsIHJyX2JpdHNpemUsIHJyX2JpdHBvczsKLS0gIEhPU1RfV0lERV9J TlQgeGxsX2JpdHBvcywgeHJsX2JpdHBvczsKLS0gIEhPU1RfV0lERV9JTlQgbG5iaXRzaXplLCBs bmJpdHBvczsKLSsgIEhPU1RfV0lERV9JTlQgeGxsX2JpdHBvcywgeGxyX2JpdHBvcywgeHJsX2Jp dHBvcywgeHJyX2JpdHBvczsKLSsgIEhPU1RfV0lERV9JTlQgbG5iaXRzaXplLCBsbmJpdHBvcywg cm5iaXRzaXplLCBybmJpdHBvczsKLSAgIGludCBsbF91bnNpZ25lZHAsIGxyX3Vuc2lnbmVkcCwg cmxfdW5zaWduZWRwLCBycl91bnNpZ25lZHA7Ci0gICBlbnVtIG1hY2hpbmVfbW9kZSBsbF9tb2Rl LCBscl9tb2RlLCBybF9tb2RlLCBycl9tb2RlOwotLSAgZW51bSBtYWNoaW5lX21vZGUgbG5tb2Rl OwotKyAgZW51bSBtYWNoaW5lX21vZGUgbG5tb2RlLCBybm1vZGU7Ci0gICB0cmVlIGxsX21hc2ss IGxyX21hc2ssIHJsX21hc2ssIHJyX21hc2s7Ci0gICB0cmVlIGxsX2FuZF9tYXNrLCBscl9hbmRf bWFzaywgcmxfYW5kX21hc2ssIHJyX2FuZF9tYXNrOwotICAgdHJlZSBsX2NvbnN0LCByX2NvbnN0 OwotLSAgdHJlZSBsbnR5cGUsIHJlc3VsdDsKLS0gIGludCBmaXJzdF9iaXQsIGVuZF9iaXQ7Ci0r ICB0cmVlIGxudHlwZSwgcm50eXBlLCByZXN1bHQ7Ci0rICBIT1NUX1dJREVfSU5UIGZpcnN0X2Jp dCwgZW5kX2JpdDsKLSAgIGludCB2b2xhdGlsZXA7Ci0gICB0cmVlIG9yaWdfbGhzID0gbGhzLCBv cmlnX3JocyA9IHJoczsKLSAgIGVudW0gdHJlZV9jb2RlIG9yaWdfY29kZSA9IGNvZGU7Ci1AQCAt NTUxMCw2ICs1NzMwLDExOCBAQCBmb2xkX3RydXRob3AgKGVudW0gdHJlZV9jb2RlIGNvZGUsIHRy ZWUgCi0gCX0KLSAgICAgfQotIAotKyAgLyogSWYgdGhlIHJpZ2h0IHNpZGVzIGFyZSBub3QgY29u c3RhbnQsIGRvIHRoZSBzYW1lIGZvciBpdC4gIEFsc28sCi0rICAgICBkaXNhbGxvdyB0aGlzIG9w dGltaXphdGlvbiBpZiBhIHNpemUgb3Igc2lnbmVkbmVzcyBtaXNtYXRjaCBvY2N1cnMKLSsgICAg IGJldHdlZW4gdGhlIGxlZnQgYW5kIHJpZ2h0IHNpZGVzLiAgKi8KLSsgIGlmIChsX2NvbnN0ID09 IDApCi0rICAgIHsKLSsgICAgICBpZiAobGxfYml0c2l6ZSAhPSBscl9iaXRzaXplIHx8IHJsX2Jp dHNpemUgIT0gcnJfYml0c2l6ZQotKwkgIHx8IGxsX3Vuc2lnbmVkcCAhPSBscl91bnNpZ25lZHAg fHwgcmxfdW5zaWduZWRwICE9IHJyX3Vuc2lnbmVkcAotKwkgIC8qIE1ha2Ugc3VyZSB0aGUgdHdv IGZpZWxkcyBvbiB0aGUgcmlnaHQKLSsJICAgICBjb3JyZXNwb25kIHRvIHRoZSBsZWZ0IHdpdGhv dXQgYmVpbmcgc3dhcHBlZC4gICovCi0rCSAgfHwgbGxfYml0cG9zIC0gcmxfYml0cG9zICE9IGxy X2JpdHBvcyAtIHJyX2JpdHBvcykKLSsJcmV0dXJuIDA7Ci0rCi0rICAgICAgZmlyc3RfYml0ID0g TUlOIChscl9iaXRwb3MsIHJyX2JpdHBvcyk7Ci0rICAgICAgZW5kX2JpdCA9IE1BWCAobHJfYml0 cG9zICsgbHJfYml0c2l6ZSwgcnJfYml0cG9zICsgcnJfYml0c2l6ZSk7Ci0rICAgICAgcm5tb2Rl ID0gZ2V0X2Jlc3RfbW9kZSAoZW5kX2JpdCAtIGZpcnN0X2JpdCwgZmlyc3RfYml0LAotKwkJCSAg ICAgIFRZUEVfQUxJR04gKFRSRUVfVFlQRSAobHJfaW5uZXIpKSwgd29yZF9tb2RlLAotKwkJCSAg ICAgIHZvbGF0aWxlcCk7Ci0rICAgICAgaWYgKHJubW9kZSA9PSBWT0lEbW9kZSkKLSsJcmV0dXJu IDA7Ci0rCi0rICAgICAgcm5iaXRzaXplID0gR0VUX01PREVfQklUU0laRSAocm5tb2RlKTsKLSsg ICAgICBybmJpdHBvcyA9IGZpcnN0X2JpdCAmIH4gKHJuYml0c2l6ZSAtIDEpOwotKyAgICAgIHJu dHlwZSA9IGxhbmdfaG9va3MudHlwZXMudHlwZV9mb3Jfc2l6ZSAocm5iaXRzaXplLCAxKTsKLSsg ICAgICB4bHJfYml0cG9zID0gbHJfYml0cG9zIC0gcm5iaXRwb3MsIHhycl9iaXRwb3MgPSBycl9i aXRwb3MgLSBybmJpdHBvczsKLSsKLSsgICAgICBpZiAoQllURVNfQklHX0VORElBTikKLSsJewot KwkgIHhscl9iaXRwb3MgPSBybmJpdHNpemUgLSB4bHJfYml0cG9zIC0gbHJfYml0c2l6ZTsKLSsJ ICB4cnJfYml0cG9zID0gcm5iaXRzaXplIC0geHJyX2JpdHBvcyAtIHJyX2JpdHNpemU7Ci0rCX0K LSsKLSsgICAgICBscl9tYXNrID0gY29uc3RfYmlub3AgKExTSElGVF9FWFBSLCBmb2xkX2NvbnZl cnQgKHJudHlwZSwgbHJfbWFzayksCi0rCQkJICAgICBzaXplX2ludCAoeGxyX2JpdHBvcyksIDAp OwotKyAgICAgIHJyX21hc2sgPSBjb25zdF9iaW5vcCAoTFNISUZUX0VYUFIsIGZvbGRfY29udmVy dCAocm50eXBlLCBycl9tYXNrKSwKLSsJCQkgICAgIHNpemVfaW50ICh4cnJfYml0cG9zKSwgMCk7 Ci0rCi0rICAgICAgLyogTWFrZSBhIG1hc2sgdGhhdCBjb3JyZXNwb25kcyB0byBib3RoIGZpZWxk cyBiZWluZyBjb21wYXJlZC4KLSsJIERvIHRoaXMgZm9yIGJvdGggaXRlbXMgYmVpbmcgY29tcGFy ZWQuICBJZiB0aGUgb3BlcmFuZHMgYXJlIHRoZQotKwkgc2FtZSBzaXplIGFuZCB0aGUgYml0cyBi ZWluZyBjb21wYXJlZCBhcmUgaW4gdGhlIHNhbWUgcG9zaXRpb24KLSsJIHRoZW4gd2UgY2FuIGRv IHRoaXMgYnkgbWFza2luZyBib3RoIGFuZCBjb21wYXJpbmcgdGhlIG1hc2tlZAotKwkgcmVzdWx0 cy4gICovCi0rICAgICAgbGxfbWFzayA9IGNvbnN0X2Jpbm9wIChCSVRfSU9SX0VYUFIsIGxsX21h c2ssIHJsX21hc2ssIDApOwotKyAgICAgIGxyX21hc2sgPSBjb25zdF9iaW5vcCAoQklUX0lPUl9F WFBSLCBscl9tYXNrLCBycl9tYXNrLCAwKTsKLSsgICAgICBpZiAobG5iaXRzaXplID09IHJuYml0 c2l6ZSAmJiB4bGxfYml0cG9zID09IHhscl9iaXRwb3MpCi0rCXsKLSsJICBsaHMgPSBtYWtlX2Jp dF9maWVsZF9yZWYgKGxsX2lubmVyLCBsbnR5cGUsIGxuYml0c2l6ZSwgbG5iaXRwb3MsCi0rCQkJ CSAgICBsbF91bnNpZ25lZHAgfHwgcmxfdW5zaWduZWRwKTsKLSsJICBpZiAoISBhbGxfb25lc19t YXNrX3AgKGxsX21hc2ssIGxuYml0c2l6ZSkpCi0rCSAgICBsaHMgPSBidWlsZDIgKEJJVF9BTkRf RVhQUiwgbG50eXBlLCBsaHMsIGxsX21hc2spOwotKwotKwkgIHJocyA9IG1ha2VfYml0X2ZpZWxk X3JlZiAobHJfaW5uZXIsIHJudHlwZSwgcm5iaXRzaXplLCBybmJpdHBvcywKLSsJCQkJICAgIGxy X3Vuc2lnbmVkcCB8fCBycl91bnNpZ25lZHApOwotKwkgIGlmICghIGFsbF9vbmVzX21hc2tfcCAo bHJfbWFzaywgcm5iaXRzaXplKSkKLSsJICAgIHJocyA9IGJ1aWxkMiAoQklUX0FORF9FWFBSLCBy bnR5cGUsIHJocywgbHJfbWFzayk7Ci0rCi0rCSAgcmV0dXJuIGJ1aWxkMiAod2FudGVkX2NvZGUs IHRydXRoX3R5cGUsIGxocywgcmhzKTsKLSsJfQotKwotKyAgICAgIC8qIFRoZXJlIGlzIHN0aWxs IGFub3RoZXIgd2F5IHdlIGNhbiBkbyBzb21ldGhpbmc6ICBJZiBib3RoIHBhaXJzIG9mCi0rCSBm aWVsZHMgYmVpbmcgY29tcGFyZWQgYXJlIGFkamFjZW50LCB3ZSBtYXkgYmUgYWJsZSB0byBtYWtl IGEgd2lkZXIKLSsJIGZpZWxkIGNvbnRhaW5pbmcgdGhlbSBib3RoLgotKwotKwkgTm90ZSB0aGF0 IHdlIHN0aWxsIG11c3QgbWFzayB0aGUgbGhzL3JocyBleHByZXNzaW9ucy4gIEZ1cnRoZXJtb3Jl LAotKwkgdGhlIG1hc2sgbXVzdCBiZSBzaGlmdGVkIHRvIGFjY291bnQgZm9yIHRoZSBzaGlmdCBk b25lIGJ5Ci0rCSBtYWtlX2JpdF9maWVsZF9yZWYuICAqLwotKyAgICAgIGlmICgobGxfYml0c2l6 ZSArIGxsX2JpdHBvcyA9PSBybF9iaXRwb3MKLSsJICAgJiYgbHJfYml0c2l6ZSArIGxyX2JpdHBv cyA9PSBycl9iaXRwb3MpCi0rCSAgfHwgKGxsX2JpdHBvcyA9PSBybF9iaXRwb3MgKyBybF9iaXRz aXplCi0rCSAgICAgICYmIGxyX2JpdHBvcyA9PSBycl9iaXRwb3MgKyBycl9iaXRzaXplKSkKLSsJ ewotKwkgIHRyZWUgdHlwZTsKLSsKLSsJICBsaHMgPSBtYWtlX2JpdF9maWVsZF9yZWYgKGxsX2lu bmVyLCBsbnR5cGUsIGxsX2JpdHNpemUgKyBybF9iaXRzaXplLAotKwkJCQkgICAgTUlOIChsbF9i aXRwb3MsIHJsX2JpdHBvcyksIGxsX3Vuc2lnbmVkcCk7Ci0rCSAgcmhzID0gbWFrZV9iaXRfZmll bGRfcmVmIChscl9pbm5lciwgcm50eXBlLCBscl9iaXRzaXplICsgcnJfYml0c2l6ZSwKLSsJCQkJ ICAgIE1JTiAobHJfYml0cG9zLCBycl9iaXRwb3MpLCBscl91bnNpZ25lZHApOwotKwotKwkgIGxs X21hc2sgPSBjb25zdF9iaW5vcCAoUlNISUZUX0VYUFIsIGxsX21hc2ssCi0rCQkJCSBzaXplX2lu dCAoTUlOICh4bGxfYml0cG9zLCB4cmxfYml0cG9zKSksIDApOwotKwkgIGxyX21hc2sgPSBjb25z dF9iaW5vcCAoUlNISUZUX0VYUFIsIGxyX21hc2ssCi0rCQkJCSBzaXplX2ludCAoTUlOICh4bHJf Yml0cG9zLCB4cnJfYml0cG9zKSksIDApOwotKwotKwkgIC8qIENvbnZlcnQgdG8gdGhlIHNtYWxs ZXIgdHlwZSBiZWZvcmUgbWFza2luZyBvdXQgdW53YW50ZWQgYml0cy4gICovCi0rCSAgdHlwZSA9 IGxudHlwZTsKLSsJICBpZiAobG50eXBlICE9IHJudHlwZSkKLSsJICAgIHsKLSsJICAgICAgaWYg KGxuYml0c2l6ZSA+IHJuYml0c2l6ZSkKLSsJCXsKLSsJCSAgbGhzID0gZm9sZF9jb252ZXJ0IChy bnR5cGUsIGxocyk7Ci0rCQkgIGxsX21hc2sgPSBmb2xkX2NvbnZlcnQgKHJudHlwZSwgbGxfbWFz ayk7Ci0rCQkgIHR5cGUgPSBybnR5cGU7Ci0rCQl9Ci0rCSAgICAgIGVsc2UgaWYgKGxuYml0c2l6 ZSA8IHJuYml0c2l6ZSkKLSsJCXsKLSsJCSAgcmhzID0gZm9sZF9jb252ZXJ0IChsbnR5cGUsIHJo cyk7Ci0rCQkgIGxyX21hc2sgPSBmb2xkX2NvbnZlcnQgKGxudHlwZSwgbHJfbWFzayk7Ci0rCQkg IHR5cGUgPSBsbnR5cGU7Ci0rCQl9Ci0rCSAgICB9Ci0rCi0rCSAgaWYgKCEgYWxsX29uZXNfbWFz a19wIChsbF9tYXNrLCBsbF9iaXRzaXplICsgcmxfYml0c2l6ZSkpCi0rCSAgICBsaHMgPSBidWls ZDIgKEJJVF9BTkRfRVhQUiwgdHlwZSwgbGhzLCBsbF9tYXNrKTsKLSsKLSsJICBpZiAoISBhbGxf b25lc19tYXNrX3AgKGxyX21hc2ssIGxyX2JpdHNpemUgKyBycl9iaXRzaXplKSkKLSsJICAgIHJo cyA9IGJ1aWxkMiAoQklUX0FORF9FWFBSLCB0eXBlLCByaHMsIGxyX21hc2spOwotKwotKwkgIHJl dHVybiBidWlsZDIgKHdhbnRlZF9jb2RlLCB0cnV0aF90eXBlLCBsaHMsIHJocyk7Ci0rCX0KLSsK LSsgICAgICByZXR1cm4gMDsKLSsgICAgfQotKwotICAgLyogSGFuZGxlIHRoZSBjYXNlIG9mIGNv bXBhcmlzb25zIHdpdGggY29uc3RhbnRzLiAgSWYgdGhlcmUgaXMgc29tZXRoaW5nIGluCi0gICAg ICBjb21tb24gYmV0d2VlbiB0aGUgbWFza3MsIHRob3NlIGJpdHMgb2YgdGhlIGNvbnN0YW50cyBt dXN0IGJlIHRoZSBzYW1lLgotICAgICAgSWYgbm90LCB0aGUgY29uZGl0aW9uIGlzIGFsd2F5cyBm YWxzZS4gIFRlc3QgZm9yIHRoaXMgdG8gYXZvaWQgZ2VuZXJhdGluZwotQEAgLTU1MzEsNyArNTg2 MywxOSBAQCBmb2xkX3RydXRob3AgKGVudW0gdHJlZV9jb2RlIGNvZGUsIHRyZWUgCi0gCX0KLSAg ICAgfQotIAotLSAgcmV0dXJuIE5VTExfVFJFRTsKLSsgIC8qIENvbnN0cnVjdCB0aGUgZXhwcmVz c2lvbiB3ZSB3aWxsIHJldHVybi4gIEZpcnN0IGdldCB0aGUgY29tcG9uZW50Ci0rICAgICByZWZl cmVuY2Ugd2Ugd2lsbCBtYWtlLiAgVW5sZXNzIHRoZSBtYXNrIGlzIGFsbCBvbmVzIHRoZSB3aWR0 aCBvZgotKyAgICAgdGhhdCBmaWVsZCwgcGVyZm9ybSB0aGUgbWFzayBvcGVyYXRpb24uICBUaGVu IGNvbXBhcmUgd2l0aCB0aGUKLSsgICAgIG1lcmdlZCBjb25zdGFudC4gICovCi0rICByZXN1bHQg PSBtYWtlX2JpdF9maWVsZF9yZWYgKGxsX2lubmVyLCBsbnR5cGUsIGxuYml0c2l6ZSwgbG5iaXRw b3MsCi0rCQkJICAgICAgIGxsX3Vuc2lnbmVkcCB8fCBybF91bnNpZ25lZHApOwotKwotKyAgbGxf bWFzayA9IGNvbnN0X2Jpbm9wIChCSVRfSU9SX0VYUFIsIGxsX21hc2ssIHJsX21hc2ssIDApOwot KyAgaWYgKCEgYWxsX29uZXNfbWFza19wIChsbF9tYXNrLCBsbmJpdHNpemUpKQotKyAgICByZXN1 bHQgPSBidWlsZDIgKEJJVF9BTkRfRVhQUiwgbG50eXBlLCByZXN1bHQsIGxsX21hc2spOwotKwot KyAgcmV0dXJuIGJ1aWxkMiAod2FudGVkX2NvZGUsIHRydXRoX3R5cGUsIHJlc3VsdCwKLSsJCSBj b25zdF9iaW5vcCAoQklUX0lPUl9FWFBSLCBsX2NvbnN0LCByX2NvbnN0LCAwKSk7Ci0gfQotIAwK LSAvKiBPcHRpbWl6ZSBULCB3aGljaCBpcyBhIGNvbXBhcmlzb24gb2YgYSBNSU5fRVhQUiBvciBN QVhfRVhQUiB3aXRoIGEKLUBAIC0xMTkxMiw2ICsxMjI1NiwxOCBAQCBmb2xkX2JpbmFyeSAoZW51 bSB0cmVlX2NvZGUgY29kZSwgdHJlZSB0Ci0gCSAgICByZXR1cm4gb21pdF9vbmVfb3BlcmFuZCAo dHlwZSwgcnNsdCwgYXJnMCk7Ci0gCX0KLSAKLSsgICAgICAvKiBJZiB0aGlzIGlzIGEgY29tcGFy aXNvbiBvZiBhIGZpZWxkLCB3ZSBtYXkgYmUgYWJsZSB0byBzaW1wbGlmeSBpdC4gICovCi0rICAg ICAgaWYgKChUUkVFX0NPREUgKGFyZzApID09IENPTVBPTkVOVF9SRUYKLSsJICAgfHwgVFJFRV9D T0RFIChhcmcwKSA9PSBCSVRfRklFTERfUkVGKQotKwkgIC8qIEhhbmRsZSB0aGUgY29uc3RhbnQg Y2FzZSBldmVuIHdpdGhvdXQgLU8KLSsJICAgICB0byBtYWtlIHN1cmUgdGhlIHdhcm5pbmdzIGFy ZSBnaXZlbi4gICovCi0rCSAgJiYgKG9wdGltaXplIHx8IFRSRUVfQ09ERSAoYXJnMSkgPT0gSU5U RUdFUl9DU1QpKQotKwl7Ci0rCSAgdDEgPSBvcHRpbWl6ZV9iaXRfZmllbGRfY29tcGFyZSAoY29k ZSwgdHlwZSwgYXJnMCwgYXJnMSk7Ci0rCSAgaWYgKHQxKQotKwkgICAgcmV0dXJuIHQxOwotKwl9 Ci0rCi0gICAgICAgLyogT3B0aW1pemUgY29tcGFyaXNvbnMgb2Ygc3RybGVuIHZzIHplcm8gdG8g YSBjb21wYXJlIG9mIHRoZQotIAkgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBzdHJpbmcgdnMgemVy by4gIFRvIHdpdCwKLSAJCXN0cmxlbihwdHIpID09IDAgICA9PiAgKnB0ciA9PSAwCi0tLS0gZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvb3B0L3ByMzY0NDkuQy5qagkyMDA4LTA4LTI2IDExOjAzOjI0LjAw MDAwMDAwMCArMDIwMAotKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL29wdC9wcjM2NDQ5LkMJMjAw OC0wOC0yNiAxMTowMDo1My4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsNzAgQEAKLSsvLyBQ UiBtaWRkbGUtZW5kLzM2NDQ5Ci0rLy8geyBkZy1kbyBydW4gfQotKy8vIHsgZGctb3B0aW9ucyAi LU8zIiB9Ci0rCi0rZXh0ZXJuICJDIiB2b2lkIGV4aXQgKGludCk7Ci0rZXh0ZXJuICJDIiB2b2lk IGFib3J0ICgpOwotKwotK3N0cnVjdCBSCi0rewotKyAgc2hvcnQgYTsKLSsgIHNob3J0IGI7Ci0r fTsKLSsKLStzdHJ1Y3QgUwotK3sKLSsgIFIgZTsKLSsgIGxvbmcgZjsKLSsgIGxvbmcgZzsKLSt9 OwotKwotK3N0cnVjdCBUCi0rewotKyAgc2hvcnQgYzsKLSsgIHNob3J0IGQ7Ci0rfTsKLSsKLStz dHJ1Y3QgVQotK3sKLSsgIGxvbmcgaFsweDFmZmZmZmYgKyAxXTsKLSsgIFQgaTsKLSt9OwotKwot K1UgKmo7Ci0rCi0rdm9pZCBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpCi0rYmFyICgpCi0rewot KyAgZXhpdCAoMCk7Ci0rfQotKwotK3ZvaWQgX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKQotK2Zv byAoKQotK3sKLSsgIFMgczsKLSsKLSsgIHMuZS5hID0gMzY7Ci0rICBzLmUuYiA9IDM4OwotKyAg aWYgKHMuZS5hID09IGotPmkuYyAmJiBzLmUuYiA9PSBqLT5pLmQpCi0rICAgIGJhciAoKTsKLSt9 Ci0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSsgIHRyeQotKyAgICB7Ci0rICAgICAgaiA9IG5ldyBV OwotKyAgICB9Ci0rICBjYXRjaCAoLi4uKQotKyAgICB7Ci0rICAgICAgcmV0dXJuIDA7Ci0rICAg IH0KLSsgIGotPmkuYyA9IDM2OwotKyAgai0+aS5kID0gMzg7Ci0rICBqLT5oWzBdID0gMTsKLSsg IGotPmhbMV0gPSAyOwotKyAgai0+aFsyXSA9IDM7Ci0rICBmb28gKCk7Ci0rICBhYm9ydCAoKTsK LSt9CgpkaWZmIC0tZ2l0IGEvZ2NjNDMteDg2XzY0LXZhX3N0YXJ0LnBhdGNoIGIvZ2NjNDMteDg2 XzY0LXZhX3N0YXJ0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVm YTA2YmMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2M0My14ODZfNjQtdmFfc3RhcnQucGF0Y2gKQEAg LTAsMCArMSwzNTUgQEAKKzIwMDgtMDktMDIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNv bT4KKwkgICAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CisKKwkqIGNvbmZpZy9p Mzg2L2kzODYuYyAoWDg2XzY0X1ZBUkFSR1NfU0laRSk6IFJlbW92ZWQuCisJKHNldHVwX2luY29t aW5nX3ZhcmFyZ3NfNjQpOiBTZXQvY2hlY2sgaXg4Nl92YXJhcmdzX2dwcl9zaXplIGFuZAorCWl4 ODZfdmFyYXJnc19mcHJfc2l6ZS4gIFVzZSBpeDg2X3ZhcmFyZ3NfZ3ByX3NpemUgaW5zdGVhZCBv ZgorCVJFR1BBUk1fTUFYLiAgRG9uJ3Qgc2V0IGl4ODZfc2F2ZV92YXJyYXJnc19yZWdpc3RlcnMu CisJKGl4ODZfdmFfc3RhcnQpOiBDaGVjayBpeDg2X3ZhcmFyZ3NfZ3ByX3NpemUgYW5kCisJaXg4 Nl92YXJhcmdzX2Zwcl9zaXplIGluc3RlYWQgb2YgY2Z1bi0+dmFfbGlzdF9ncHJfc2l6ZSBhbmQK KwljZnVuLT52YV9saXN0X2Zwcl9zaXplLCByZXNwZWN0aXZlbHkuICBTdWJ0cmFjdCA4KlJFR1BB Uk1fTUFYCisJZnJvbSBmcmFtZSBwb2ludGVyIGlmIGl4ODZfdmFyYXJnc19ncHJfc2l6ZSA9PSAw LgorCShpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0KTogVXBkYXRlZC4KKwkqIGNvbmZpZy9pMzg2 L2kzODYuaCAoaXg4Nl9zYXZlX3ZhcnJhcmdzX3JlZ2lzdGVycyk6IFJlbW92ZWQuCisJKGl4ODZf dmFyYXJnc19ncHJfc2l6ZSk6IERlZmluZS4KKwkoaXg4Nl92YXJhcmdzX2Zwcl9zaXplKTogTGlr ZXdpc2UuCisJKG1hY2hpbmVfZnVuY3Rpb24pOiBSZW1vdmUgc2F2ZV92YXJyYXJnc19yZWdpc3Rl cnMuCisJQWRkIHZhcmFyZ3NfZ3ByX3NpemUgYW5kIHZhcmFyZ3NfZnByX3NpemUuCisKKwkqIGdj Yy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMy5jOiBOZXcgdGVzdC4KKwkqIGdjYy50YXJnZXQvaTM4 Ni9hbWQ2NC1hYmktNC5jOiBMaWtld2lzZS4KKwkqIGdjYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmkt NS5jOiBMaWtld2lzZS4KKwkqIGdjYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktNi5jOiBMaWtld2lz ZS4KKworLS0tIGdjYy9jb25maWcvaTM4Ni9pMzg2LmgJKHJldmlzaW9uIDEzOTkwOSkKKysrKyBn Y2MvY29uZmlnL2kzODYvaTM4Ni5oCShyZXZpc2lvbiAxMzk5MTApCitAQCAtMjQ0MCw3ICsyNDQw LDggQEAgc3RydWN0IG1hY2hpbmVfZnVuY3Rpb24gR1RZKCgpKQorICAgc3RydWN0IHN0YWNrX2xv Y2FsX2VudHJ5ICpzdGFja19sb2NhbHM7CisgICBjb25zdCBjaGFyICpzb21lX2xkX25hbWU7Cisg ICBydHggZm9yY2VfYWxpZ25fYXJnX3BvaW50ZXI7CistICBpbnQgc2F2ZV92YXJyYXJnc19yZWdp c3RlcnM7CisrICBpbnQgdmFyYXJnc19ncHJfc2l6ZTsKKysgIGludCB2YXJhcmdzX2Zwcl9zaXpl OworICAgaW50IGFjY2Vzc2VzX3ByZXZfZnJhbWU7CisgICBpbnQgb3B0aW1pemVfbW9kZV9zd2l0 Y2hpbmdbTUFYXzM4Nl9FTlRJVElFU107CisgICBpbnQgbmVlZHNfY2xkOworQEAgLTI0NjMsNyAr MjQ2NCw4IEBAIHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uIEdUWSgoKSkKKyB9OworIAorICNkZWZp bmUgaXg4Nl9zdGFja19sb2NhbHMgKGNmdW4tPm1hY2hpbmUtPnN0YWNrX2xvY2FscykKKy0jZGVm aW5lIGl4ODZfc2F2ZV92YXJyYXJnc19yZWdpc3RlcnMgKGNmdW4tPm1hY2hpbmUtPnNhdmVfdmFy cmFyZ3NfcmVnaXN0ZXJzKQorKyNkZWZpbmUgaXg4Nl92YXJhcmdzX2dwcl9zaXplIChjZnVuLT5t YWNoaW5lLT52YXJhcmdzX2dwcl9zaXplKQorKyNkZWZpbmUgaXg4Nl92YXJhcmdzX2Zwcl9zaXpl IChjZnVuLT5tYWNoaW5lLT52YXJhcmdzX2Zwcl9zaXplKQorICNkZWZpbmUgaXg4Nl9vcHRpbWl6 ZV9tb2RlX3N3aXRjaGluZyAoY2Z1bi0+bWFjaGluZS0+b3B0aW1pemVfbW9kZV9zd2l0Y2hpbmcp CisgI2RlZmluZSBpeDg2X2N1cnJlbnRfZnVuY3Rpb25fbmVlZHNfY2xkIChjZnVuLT5tYWNoaW5l LT5uZWVkc19jbGQpCisgI2RlZmluZSBpeDg2X3Rsc19kZXNjcmlwdG9yX2NhbGxzX2V4cGFuZGVk X2luX2NmdW4gXAorLS0tIGdjYy9jb25maWcvaTM4Ni9pMzg2LmMJKHJldmlzaW9uIDEzOTkwOSkK KysrKyBnY2MvY29uZmlnL2kzODYvaTM4Ni5jCShyZXZpc2lvbiAxMzk5MTApCitAQCAtMTYxNiw5 ICsxNjE2LDYgQEAgcnR4IGl4ODZfY29tcGFyZV9vcDAgPSBOVUxMX1JUWDsKKyBydHggaXg4Nl9j b21wYXJlX29wMSA9IE5VTExfUlRYOworIHJ0eCBpeDg2X2NvbXBhcmVfZW1pdHRlZCA9IE5VTExf UlRYOworIAorLS8qIFNpemUgb2YgdGhlIHJlZ2lzdGVyIHNhdmUgYXJlYS4gICovCistI2RlZmlu ZSBYODZfNjRfVkFSQVJHU19TSVpFIChSRUdQQVJNX01BWCAqIFVOSVRTX1BFUl9XT1JEICsgU1NF X1JFR1BBUk1fTUFYICogMTYpCistCisgLyogRGVmaW5lIHRoZSBzdHJ1Y3R1cmUgZm9yIHRoZSBt YWNoaW5lIGZpZWxkIGluIHN0cnVjdCBmdW5jdGlvbi4gICovCisgCisgc3RydWN0IHN0YWNrX2xv Y2FsX2VudHJ5IEdUWSgoKSkKK0BAIC00OTc2LDExICs0OTczLDIyIEBAIHNldHVwX2luY29taW5n X3ZhcmFyZ3NfNjQgKENVTVVMQVRJVkVfQVIKKyAgIGFsaWFzX3NldF90eXBlIHNldDsKKyAgIGlu dCBpOworIAorLSAgaWYgKCEgY2Z1bi0+dmFfbGlzdF9ncHJfc2l6ZSAmJiAhIGNmdW4tPnZhX2xp c3RfZnByX3NpemUpCisrICAvKiBHUFIgc2l6ZSBvZiB2YXJhcmdzIHNhdmUgYXJlYS4gICovCisr ICBpZiAoY2Z1bi0+dmFfbGlzdF9ncHJfc2l6ZSkKKysgICAgaXg4Nl92YXJhcmdzX2dwcl9zaXpl ID0gUkVHUEFSTV9NQVggKiBVTklUU19QRVJfV09SRDsKKysgIGVsc2UKKysgICAgaXg4Nl92YXJh cmdzX2dwcl9zaXplID0gMDsKKysKKysgIC8qIEZQUiBzaXplIG9mIHZhcmFyZ3Mgc2F2ZSBhcmVh LiAgV2UgZG9uJ3QgbmVlZCBpdCBpZiB3ZSBkb24ndCBwYXNzCisrICAgICBhbnl0aGluZyBpbiBT U0UgcmVnaXN0ZXJzLiAgKi8KKysgIGlmIChjdW0tPnNzZV9ucmVncyAmJiBjZnVuLT52YV9saXN0 X2Zwcl9zaXplKQorKyAgICBpeDg2X3ZhcmFyZ3NfZnByX3NpemUgPSBTU0VfUkVHUEFSTV9NQVgg KiAxNjsKKysgIGVsc2UKKysgICAgaXg4Nl92YXJhcmdzX2Zwcl9zaXplID0gMDsKKysKKysgIGlm ICghIGl4ODZfdmFyYXJnc19ncHJfc2l6ZSAmJiAhIGl4ODZfdmFyYXJnc19mcHJfc2l6ZSkKKyAg ICAgcmV0dXJuOworIAorLSAgLyogSW5kaWNhdGUgdG8gYWxsb2NhdGUgc3BhY2Ugb24gdGhlIHN0 YWNrIGZvciB2YXJhcmdzIHNhdmUgYXJlYS4gICovCistICBpeDg2X3NhdmVfdmFycmFyZ3NfcmVn aXN0ZXJzID0gMTsKKyAgIC8qIFdlIG5lZWQgMTYtYnl0ZSBzdGFjayBhbGlnbm1lbnQgdG8gc2F2 ZSBTU0UgcmVnaXN0ZXJzLiAgSWYgdXNlcgorICAgICAgYXNrZWQgZm9yIGxvd2VyIHByZWZlcnJl ZF9zdGFja19ib3VuZGFyeSwgbGV0cyBqdXN0IGhvcGUgdGhhdCBoZSBrbm93cworICAgICAgd2hh dCBoZSBpcyBkb2luZyBhbmQgd29uJ3QgdmFyYXJncyBTU0UgdmFsdWVzLgorQEAgLTUwMDYsNyAr NTAxNCw3IEBAIHNldHVwX2luY29taW5nX3ZhcmFyZ3NfNjQgKENVTVVMQVRJVkVfQVIKKyAJCQkJ CXg4Nl82NF9pbnRfcGFyYW1ldGVyX3JlZ2lzdGVyc1tpXSkpOworICAgICB9CisgCistICBpZiAo Y3VtLT5zc2VfbnJlZ3MgJiYgY2Z1bi0+dmFfbGlzdF9mcHJfc2l6ZSkKKysgIGlmIChpeDg2X3Zh cmFyZ3NfZnByX3NpemUpCisgICAgIHsKKyAgICAgICAvKiBOb3cgZW1pdCBjb2RlIHRvIHNhdmUg U1NFIHJlZ2lzdGVycy4gIFRoZSBBWCBwYXJhbWV0ZXIgY29udGFpbnMgbnVtYmVyCisgCSBvZiBT U0UgcGFyYW1ldGVyIHJlZ2lzdGVycyB1c2VkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbi4gIFdlIHVz ZQorQEAgLTUwNDEsNyArNTA0OSw3IEBAIHNldHVwX2luY29taW5nX3ZhcmFyZ3NfNjQgKENVTVVM QVRJVkVfQVIKKyAgICAgICB0bXBfcmVnID0gZ2VuX3JlZ19ydHggKFBtb2RlKTsKKyAgICAgICBl bWl0X2luc24gKGdlbl9ydHhfU0VUIChWT0lEbW9kZSwgdG1wX3JlZywKKyAJCQkgICAgICBwbHVz X2NvbnN0YW50IChzYXZlX2FyZWEsCistCQkJCQkgICAgIDggKiBSRUdQQVJNX01BWCArIDEyNykp KTsKKysJCQkJCSAgICAgaXg4Nl92YXJhcmdzX2dwcl9zaXplICsgMTI3KSkpOworICAgICAgIG1l bSA9IGdlbl9ydHhfTUVNIChCTEttb2RlLCBwbHVzX2NvbnN0YW50ICh0bXBfcmVnLCAtMTI3KSk7 CisgICAgICAgTUVNX05PVFJBUF9QIChtZW0pID0gMTsKKyAgICAgICBzZXRfbWVtX2FsaWFzX3Nl dCAobWVtLCBzZXQpOworQEAgLTUxNDUsNyArNTE1Myw3IEBAIGl4ODZfdmFfc3RhcnQgKHRyZWUg dmFsaXN0LCBydHggbmV4dGFyZykKKyAgICAgICBleHBhbmRfZXhwciAodCwgY29uc3QwX3J0eCwg Vk9JRG1vZGUsIEVYUEFORF9OT1JNQUwpOworICAgICB9CisgCistICBpZiAoY2Z1bi0+dmFfbGlz dF9mcHJfc2l6ZSkKKysgIGlmIChUQVJHRVRfU1NFICYmIGNmdW4tPnZhX2xpc3RfZnByX3NpemUp CisgICAgIHsKKyAgICAgICB0eXBlID0gVFJFRV9UWVBFIChmcHIpOworICAgICAgIHQgPSBidWls ZDIgKEdJTVBMRV9NT0RJRllfU1RNVCwgdHlwZSwgZnByLAorQEAgLTUxNjQsMTIgKzUxNzIsMTUg QEAgaXg4Nl92YV9zdGFydCAodHJlZSB2YWxpc3QsIHJ0eCBuZXh0YXJnKQorICAgVFJFRV9TSURF X0VGRkVDVFMgKHQpID0gMTsKKyAgIGV4cGFuZF9leHByICh0LCBjb25zdDBfcnR4LCBWT0lEbW9k ZSwgRVhQQU5EX05PUk1BTCk7CisgCistICBpZiAoY2Z1bi0+dmFfbGlzdF9ncHJfc2l6ZSB8fCBj ZnVuLT52YV9saXN0X2Zwcl9zaXplKQorKyAgaWYgKGl4ODZfdmFyYXJnc19ncHJfc2l6ZSB8fCBp eDg2X3ZhcmFyZ3NfZnByX3NpemUpCisgICAgIHsKKyAgICAgICAvKiBGaW5kIHRoZSByZWdpc3Rl ciBzYXZlIGFyZWEuCisgCSBQcm9sb2d1ZSBvZiB0aGUgZnVuY3Rpb24gc2F2ZSBpdCByaWdodCBh Ym92ZSBzdGFjayBmcmFtZS4gICovCisgICAgICAgdHlwZSA9IFRSRUVfVFlQRSAoc2F2KTsKKyAg ICAgICB0ID0gbWFrZV90cmVlICh0eXBlLCBmcmFtZV9wb2ludGVyX3J0eCk7CisrICAgICAgaWYg KCFpeDg2X3ZhcmFyZ3NfZ3ByX3NpemUpCisrCXQgPSBidWlsZDIgKFBPSU5URVJfUExVU19FWFBS LCB0eXBlLCB0LAorKwkJICAgIHNpemVfaW50ICgtOCAqIFJFR1BBUk1fTUFYKSk7CisgICAgICAg dCA9IGJ1aWxkMiAoR0lNUExFX01PRElGWV9TVE1ULCB0eXBlLCBzYXYsIHQpOworICAgICAgIFRS RUVfU0lERV9FRkZFQ1RTICh0KSA9IDE7CisgICAgICAgZXhwYW5kX2V4cHIgKHQsIGNvbnN0MF9y dHgsIFZPSURtb2RlLCBFWFBBTkRfTk9STUFMKTsKK0BAIC02MDc5LDEzICs2MDkwLDggQEAgaXg4 Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoc3RydWN0IGl4ODZfZgorICAgb2Zmc2V0ICs9IGZyYW1l LT5ucmVncyAqIFVOSVRTX1BFUl9XT1JEOworIAorICAgLyogVmEtYXJnIGFyZWEgKi8KKy0gIGlm IChpeDg2X3NhdmVfdmFycmFyZ3NfcmVnaXN0ZXJzKQorLSAgICB7CistICAgICAgb2Zmc2V0ICs9 IFg4Nl82NF9WQVJBUkdTX1NJWkU7CistICAgICAgZnJhbWUtPnZhX2FyZ19zaXplID0gWDg2XzY0 X1ZBUkFSR1NfU0laRTsKKy0gICAgfQorLSAgZWxzZQorLSAgICBmcmFtZS0+dmFfYXJnX3NpemUg PSAwOworKyAgZnJhbWUtPnZhX2FyZ19zaXplID0gaXg4Nl92YXJhcmdzX2dwcl9zaXplICsgaXg4 Nl92YXJhcmdzX2Zwcl9zaXplOworKyAgb2Zmc2V0ICs9IGZyYW1lLT52YV9hcmdfc2l6ZTsKKyAK KyAgIC8qIEFsaWduIHN0YXJ0IG9mIGZyYW1lIGZvciBsb2NhbCBmdW5jdGlvbi4gICovCisgICBm cmFtZS0+cGFkZGluZzEgPSAoKG9mZnNldCArIHN0YWNrX2FsaWdubWVudF9uZWVkZWQgLSAxKQor LS0tIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FtZDY0LWFiaS0zLmMJKHJldmlzaW9u IDApCisrKysgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTMuYwkocmV2 aXNpb24gMTM5OTEwKQorQEAgLTAsMCArMSwxOCBAQAorKy8qIHsgZGctZG8gY29tcGlsZSB9ICov CisrLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgbHA2NCB9ICovCisrLyogeyBkZy1v cHRpb25zICItTzIgLW1uby1zc2UiIH0gKi8KKysvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXIgInN1YnFcW1xcdCBcXSpcXFwkODgsXFtcXHQgXF0qJXJzcCIgfSB9ICovCisrLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAic3VicVxbXFx0IFxdKlxcXCQyMTYsXFtcXHQgXF0q JXJzcCIgfSB9ICovCisrCisrI2luY2x1ZGUgPHN0ZGFyZy5oPgorKworK3ZvaWQgZm9vICh2YV9s aXN0IHZhX2FyZ2xpc3QpOworKworK3ZvaWQKKyt0ZXN0IChpbnQgYTEsIC4uLikKKyt7CisrICB2 YV9saXN0IHZhX2FyZ2xpc3Q7CisrICB2YV9zdGFydCAodmFfYXJnbGlzdCwgYTEpOworKyAgZm9v ICh2YV9hcmdsaXN0KTsKKysgIHZhX2VuZCAodmFfYXJnbGlzdCk7CisrfQorLS0tIGdjYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FtZDY0LWFiaS01LmMJKHJldmlzaW9uIDApCisrKysgZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTUuYwkocmV2aXNpb24gMTM5OTEw KQorQEAgLTAsMCArMSw2NCBAQAorKy8qIHsgZGctZG8gcnVuIH0gKi8KKysvKiB7IGRnLXJlcXVp cmUtZWZmZWN0aXZlLXRhcmdldCBscDY0IH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAq LworKworKyNpbmNsdWRlIDxzdGRhcmcuaD4KKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrCisraW50 IG4xID0gMzA7CisrZG91YmxlIG4yID0gMzI0OworK2RvdWJsZSBuMyA9IDM5NDk0Ljk0OworK2Rv dWJsZSBuNCA9IDQwNzsKKytkb3VibGUgbjUgPSAzMi4zMDQ7CisrZG91YmxlIG42ID0gMzk0LjE0 OworK2RvdWJsZSBuNyA9IDQuMDc7CisrZG91YmxlIG44ID0gMzIuNDsKKytkb3VibGUgbjkgPSAz MTQuMTk0OworK2RvdWJsZSBuMTAgPSAwLjE0MDc7CisrCisraW50IGUxOworK2RvdWJsZSBlMjsK Kytkb3VibGUgZTM7CisrZG91YmxlIGU0OworK2RvdWJsZSBlNTsKKytkb3VibGUgZTY7CisrZG91 YmxlIGU3OworK2RvdWJsZSBlODsKKytkb3VibGUgZTk7CisrZG91YmxlIGUxMDsKKysKKytzdGF0 aWMgdm9pZAorK19fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKKyt0ZXN0IChpbnQgYTEsIC4uLikK Kyt7CisrICBlMSA9IGExOworKyAgdmFfbGlzdCB2YV9hcmdsaXN0OworKyAgdmFfc3RhcnQgKHZh X2FyZ2xpc3QsIGExKTsKKysgIGUyID0gdmFfYXJnICh2YV9hcmdsaXN0LCBkb3VibGUpOworKyAg ZTMgPSB2YV9hcmcgKHZhX2FyZ2xpc3QsIGRvdWJsZSk7CisrICBlNCA9IHZhX2FyZyAodmFfYXJn bGlzdCwgZG91YmxlKTsKKysgIGU1ID0gdmFfYXJnICh2YV9hcmdsaXN0LCBkb3VibGUpOworKyAg ZTYgPSB2YV9hcmcgKHZhX2FyZ2xpc3QsIGRvdWJsZSk7CisrICBlNyA9IHZhX2FyZyAodmFfYXJn bGlzdCwgZG91YmxlKTsKKysgIGU4ID0gdmFfYXJnICh2YV9hcmdsaXN0LCBkb3VibGUpOworKyAg ZTkgPSB2YV9hcmcgKHZhX2FyZ2xpc3QsIGRvdWJsZSk7CisrICBlMTAgPSB2YV9hcmcgKHZhX2Fy Z2xpc3QsIGRvdWJsZSk7CisrICB2YV9lbmQgKHZhX2FyZ2xpc3QpOworK30KKysKKytpbnQKKytt YWluICgpCisreworKyAgdGVzdCAobjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwg bjEwKTsKKysgIGFzc2VydCAobjEgPT0gZTEpOworKyAgYXNzZXJ0IChuMiA9PSBlMik7CisrICBh c3NlcnQgKG4zID09IGUzKTsKKysgIGFzc2VydCAobjQgPT0gZTQpOworKyAgYXNzZXJ0IChuNSA9 PSBlNSk7CisrICBhc3NlcnQgKG42ID09IGU2KTsKKysgIGFzc2VydCAobjcgPT0gZTcpOworKyAg YXNzZXJ0IChuOCA9PSBlOCk7CisrICBhc3NlcnQgKG45ID09IGU5KTsKKysgIGFzc2VydCAobjEw ID09IGUxMCk7CisrICByZXR1cm4gMDsKKyt9CistLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2kzODYvYW1kNjQtYWJpLTQuYwkocmV2aXNpb24gMCkKKysrKyBnY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9hbWQ2NC1hYmktNC5jCShyZXZpc2lvbiAxMzk5MTApCitAQCAtMCwwICsxLDQ3 IEBACisrLyogeyBkZy1kbyBydW4gfSAqLworKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFy Z2V0IGxwNjQgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIiB9ICovCisrCisr I2luY2x1ZGUgPHN0ZGFyZy5oPgorKyNpbmNsdWRlIDxhc3NlcnQuaD4KKysKKytpbnQgbjEgPSAz MDsKKytpbnQgbjIgPSAzMjQ7Cisrdm9pZCAqbjMgPSAodm9pZCAqKSAmbjI7CisraW50IG40ID0g NDA3OworKworK2ludCBlMTsKKytpbnQgZTI7Cisrdm9pZCAqZTM7CisraW50IGU0OworKworK3N0 YXRpYyB2b2lkCisrX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKQorK2ZvbyAodmFfbGlzdCB2YV9h cmdsaXN0KQorK3sKKysgIGUyID0gdmFfYXJnICh2YV9hcmdsaXN0LCBpbnQpOworKyAgZTMgPSB2 YV9hcmcgKHZhX2FyZ2xpc3QsIHZvaWQgKik7CisrICBlNCA9IHZhX2FyZyAodmFfYXJnbGlzdCwg aW50KTsKKyt9CisrCisrc3RhdGljIHZvaWQKKytfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpCisr dGVzdCAoaW50IGExLCAuLi4pCisreworKyAgZTEgPSBhMTsKKysgIHZhX2xpc3QgdmFfYXJnbGlz dDsKKysgIHZhX3N0YXJ0ICh2YV9hcmdsaXN0LCBhMSk7CisrICBmb28gKHZhX2FyZ2xpc3QpOwor KyAgdmFfZW5kICh2YV9hcmdsaXN0KTsKKyt9CisrCisraW50CisrbWFpbiAoKQorK3sKKysgIHRl c3QgKG4xLCBuMiwgbjMsIG40KTsKKysgIGFzc2VydCAobjEgPT0gZTEpOworKyAgYXNzZXJ0IChu MiA9PSBlMik7CisrICBhc3NlcnQgKG4zID09IGUzKTsKKysgIGFzc2VydCAobjQgPT0gZTQpOwor KyAgcmV0dXJuIDA7CisrfQorLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FtZDY0 LWFiaS02LmMJKHJldmlzaW9uIDApCisrKysgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv YW1kNjQtYWJpLTYuYwkocmV2aXNpb24gMTM5OTEwKQorQEAgLTAsMCArMSw3MSBAQAorKy8qIHsg ZGctZG8gcnVuIH0gKi8KKysvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBscDY0IH0g Ki8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAqLworKworKyNpbmNsdWRlIDxzdGRhcmcuaD4K KysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrCisraW50IG4xID0gMzA7CisrZG91YmxlIG4yID0gMzI0 OworK2RvdWJsZSBuMyA9IDM5NDk0Ljk0OworK2RvdWJsZSBuNCA9IDQwNzsKKytkb3VibGUgbjUg PSAzMi4zMDQ7CisrZG91YmxlIG42ID0gMzk0LjE0OworK2RvdWJsZSBuNyA9IDQuMDc7CisrZG91 YmxlIG44ID0gMzIuNDsKKytkb3VibGUgbjkgPSAzMTQuMTk0OworK2RvdWJsZSBuMTAgPSAwLjE0 MDc7CisrCisraW50IGUxOworK2RvdWJsZSBlMjsKKytkb3VibGUgZTM7CisrZG91YmxlIGU0Owor K2RvdWJsZSBlNTsKKytkb3VibGUgZTY7CisrZG91YmxlIGU3OworK2RvdWJsZSBlODsKKytkb3Vi bGUgZTk7CisrZG91YmxlIGUxMDsKKysKKytzdGF0aWMgdm9pZAorK19fYXR0cmlidXRlX18oKG5v aW5saW5lKSkKKytmb28gKHZhX2xpc3QgdmFfYXJnbGlzdCkKKyt7CisrICBlMiA9IHZhX2FyZyAo dmFfYXJnbGlzdCwgZG91YmxlKTsKKysgIGUzID0gdmFfYXJnICh2YV9hcmdsaXN0LCBkb3VibGUp OworKyAgZTQgPSB2YV9hcmcgKHZhX2FyZ2xpc3QsIGRvdWJsZSk7CisrICBlNSA9IHZhX2FyZyAo dmFfYXJnbGlzdCwgZG91YmxlKTsKKysgIGU2ID0gdmFfYXJnICh2YV9hcmdsaXN0LCBkb3VibGUp OworKyAgZTcgPSB2YV9hcmcgKHZhX2FyZ2xpc3QsIGRvdWJsZSk7CisrICBlOCA9IHZhX2FyZyAo dmFfYXJnbGlzdCwgZG91YmxlKTsKKysgIGU5ID0gdmFfYXJnICh2YV9hcmdsaXN0LCBkb3VibGUp OworKyAgZTEwID0gdmFfYXJnICh2YV9hcmdsaXN0LCBkb3VibGUpOworK30KKysKKytzdGF0aWMg dm9pZAorK19fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKKyt0ZXN0IChpbnQgYTEsIC4uLikKKyt7 CisrICB2YV9saXN0IHZhX2FyZ2xpc3Q7CisrICBlMSA9IGExOworKyAgdmFfc3RhcnQgKHZhX2Fy Z2xpc3QsIGExKTsKKysgIGZvbyAodmFfYXJnbGlzdCk7CisrICB2YV9lbmQgKHZhX2FyZ2xpc3Qp OworK30KKysKKytpbnQKKyttYWluICgpCisreworKyAgdGVzdCAobjEsIG4yLCBuMywgbjQsIG41 LCBuNiwgbjcsIG44LCBuOSwgbjEwKTsKKysgIGFzc2VydCAobjEgPT0gZTEpOworKyAgYXNzZXJ0 IChuMiA9PSBlMik7CisrICBhc3NlcnQgKG4zID09IGUzKTsKKysgIGFzc2VydCAobjQgPT0gZTQp OworKyAgYXNzZXJ0IChuNSA9PSBlNSk7CisrICBhc3NlcnQgKG42ID09IGU2KTsKKysgIGFzc2Vy dCAobjcgPT0gZTcpOworKyAgYXNzZXJ0IChuOCA9PSBlOCk7CisrICBhc3NlcnQgKG45ID09IGU5 KTsKKysgIGFzc2VydCAobjEwID09IGUxMCk7CisrICByZXR1cm4gMDsKKyt9CgpkaWZmIC0tZ2l0 IGEvZ2NjNDMuc3BlYyBiL2djYzQzLnNwZWMKaW5kZXggOGFkYzJlZC4uZDcxYzRlNSAxMDA2NDQK LS0tIGEvZ2NjNDMuc3BlYworKysgYi9nY2M0My5zcGVjCkBAIC0xLDYgKzEsOSBAQAotJWRlZmlu ZSBEQVRFIDIwMDgwODI5CislZGVmaW5lIERBVEUgMjAwODA5MDUKKyVkZWZpbmUgU1ZOUkVWIDE0 MDAyOQogJWRlZmluZSBnY2NfdmVyc2lvbiA0LjMuMgotJWRlZmluZSBnY2NfcmVsZWFzZSAxCisj IE5vdGUsIGdjY19yZWxlYXNlIG11c3QgYmUgaW50ZWdlciwgaWYgeW91IHdhbnQgdG8gYWRkIHN1 ZmZpeGVzIHRvCisjICV7cmVsZWFzZX0sIGFwcGVuZCB0aGVtIGFmdGVyICV7Z2NjX3JlbGVhc2V9 IG9uIFJlbGVhc2U6IGxpbmUuCislZGVmaW5lIGdjY19yZWxlYXNlIDIKICVkZWZpbmUgX3VucGFj a2FnZWRfZmlsZXNfdGVybWluYXRlX2J1aWxkIDAKICVkZWZpbmUgbXVsdGlsaWJfNjRfYXJjaHMg c3BhcmM2NCBwcGM2NCBzMzkweCB4ODZfNjQKICVkZWZpbmUgaW5jbHVkZV9nYXBwbGV0dmlld2Vy IDEKQEAgLTM3LDYgKzQwLDEwIEBAIFJlbGVhc2U6ICV7Z2NjX3JlbGVhc2V9CiAjIHJlc3RyaWN0 aW9ucy4KIExpY2Vuc2U6IEdQTHYzKyBhbmQgR1BMdjIrIHdpdGggZXhjZXB0aW9ucwogR3JvdXA6 IERldmVsb3BtZW50L0xhbmd1YWdlcworIyBUaGUgc291cmNlIGZvciB0aGlzIHBhY2thZ2Ugd2Fz IHB1bGxlZCBmcm9tIHVwc3RyZWFtJ3MgdmNzLiAgVXNlIHRoZQorIyBmb2xsb3dpbmcgY29tbWFu ZHMgdG8gZ2VuZXJhdGUgdGhlIHRhcmJhbGw6CisjIHN2biBleHBvcnQgc3ZuOi8vZ2NjLmdudS5v cmcvc3ZuL2djYy9icmFuY2hlcy9yZWRoYXQvZ2NjLTRfMy1icmFuY2hAJXtTVk5SRVZ9IGdjYy0l e3ZlcnNpb259LSV7REFURX0KKyMgdGFyIGNmIC0gZ2NjLSV7dmVyc2lvbn0tJXtEQVRFfSB8IGJ6 aXAyIC05ID4gZ2NjLSV7dmVyc2lvbn0tJXtEQVRFfS50YXIuYnoyCiBTb3VyY2UwOiBnY2MtJXt2 ZXJzaW9ufS0le0RBVEV9LnRhci5iejIKIFNvdXJjZTE6IGxpYmdjY19wb3N0X3VwZ3JhZGUuYwog U291cmNlMjogUkVBRE1FLmxpYmdjandlYnBsdWdpbi5zbwpAQCAtNDQsNyArNTEsNyBAQCBTb3Vy Y2UzOiBwcm90b2l6ZS4xCiAlZGVmaW5lIGZhc3RqYXJfdmVyIDAuOTUKIFNvdXJjZTQ6IGh0dHA6 Ly9kb3dubG9hZC5zYXZhbm5haC5ub25nbnUub3JnL3JlbGVhc2VzL2Zhc3RqYXIvZmFzdGphci0l e2Zhc3RqYXJfdmVyfS50YXIuZ3oKIFVSTDogaHR0cDovL2djYy5nbnUub3JnCi1CdWlsZFJvb3Q6 ICV7X3RtcHBhdGh9LyV7bmFtZX0tJXt2ZXJzaW9ufS0le3JlbGVhc2V9LXJvb3QKK0J1aWxkUm9v dDogJXtfdG1wcGF0aH0vJXtuYW1lfS0le3ZlcnNpb259LSV7cmVsZWFzZX0tcm9vdC0lKCV7X19p ZF91fSAtbikpCiAjIE5lZWQgYmludXRpbHMgd2l0aCAtcGllIHN1cHBvcnQgPj0gMi4xNC45MC4w LjQtNAogIyBOZWVkIGJpbnV0aWxzIHdoaWNoIGNhbiBvbWl0IGRvdCBzeW1ib2xzIGFuZCBvdmVy bGFwIC5vcGQgb24gcHBjNjQgPj0gMi4xNS45MS4wLjItNAogIyBOZWVkIGJpbnV0aWxzIHdoaWNo IGhhbmRsZSAtbXNlY3VyZS1wbHQgb24gcHBjID49IDIuMTYuOTEuMC4yLTIKQEAgLTEwMywyNyAr MTEwLDI3IEBAIFJlcXVpcmVzOiBnbGliYyA+PSAyLjMuOTAtMzUKICVlbmRpZgogUmVxdWlyZXM6 IGxpYmdjYyA+PSAle3ZlcnNpb259LSV7cmVsZWFzZX0KIFJlcXVpcmVzOiBsaWJnb21wID0gJXt2 ZXJzaW9ufS0le3JlbGVhc2V9Ci1PYnNvbGV0ZXM6IGdjYzMKLU9ic29sZXRlczogZWdjcworI09i c29sZXRlczogZ2NjMworI09ic29sZXRlczogZWdjcwogJWlmYXJjaCBzcGFyYwotT2Jzb2xldGVz OiBnY2Mtc3BhcmMzMgotT2Jzb2xldGVzOiBnY2MtYysrLXNwYXJjMzIKKyNPYnNvbGV0ZXM6IGdj Yy1zcGFyYzMyCisjT2Jzb2xldGVzOiBnY2MtYysrLXNwYXJjMzIKICVlbmRpZgogJWlmYXJjaCBw cGMKLU9ic29sZXRlczogZ2NjLXBwYzMyCi1PYnNvbGV0ZXM6IGdjYy1jKystcHBjMzIKKyNPYnNv bGV0ZXM6IGdjYy1wcGMzMgorI09ic29sZXRlczogZ2NjLWMrKy1wcGMzMgogJWVuZGlmCi1PYnNv bGV0ZXM6IGdjYy1jaGlsbAorI09ic29sZXRlczogZ2NjLWNoaWxsCiAlaWYgISV7YnVpbGRfYWRh fQogT2Jzb2xldGVzOiBnY2MtZ25hdCA8ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQogT2Jzb2xldGVz OiBsaWJnbmF0IDwgJXt2ZXJzaW9ufS0le3JlbGVhc2V9CiAlZW5kaWYKICVpZmFyY2ggc3BhcmMg c3BhcmM2NAotT2Jzb2xldGVzOiBlZ2NzNjQKKyNPYnNvbGV0ZXM6IGVnY3M2NAogJWVuZGlmCi1P YnNvbGV0ZXM6IGdjYzM0Ci1PYnNvbGV0ZXM6IGdjYzM1Ci1PYnNvbGV0ZXM6IGdjYzQKKyNPYnNv bGV0ZXM6IGdjYzM0CisjT2Jzb2xldGVzOiBnY2MzNQorI09ic29sZXRlczogZ2NjNAogUHJlcmVx OiAvc2Jpbi9pbnN0YWxsLWluZm8KIEF1dG9SZXE6IHRydWUKIApAQCAtMTQzLDE4ICsxNTAsOCBA QCBQYXRjaDEzOiBnY2M0My1pMzg2LWxpYmdvbXAucGF0Y2gKIFBhdGNoMTQ6IGdjYzQzLXJoMjUx NjgyLnBhdGNoCiBQYXRjaDE1OiBnY2M0My1zcGFyYy1jb25maWctZGV0ZWN0aW9uLnBhdGNoCiBQ YXRjaDE2OiBnY2M0My1saWJnb21wLW9tcF9oLW11bHRpbGliLnBhdGNoCi1QYXRjaDE3OiBnY2M0 My1mb3J0cmFuLWRlYnVnMS5wYXRjaAotUGF0Y2gxODogZ2NjNDMtZm9ydHJhbi1kZWJ1ZzIucGF0 Y2gKLVBhdGNoMTk6IGdjYzQzLWZvcnRyYW4tZGVidWczLnBhdGNoCi1QYXRjaDIwOiBnY2M0My1m b3J0cmFuLWRlYnVnNC5wYXRjaAotUGF0Y2gyMTogZ2NjNDMtZm9ydHJhbi1kZWJ1ZzUucGF0Y2gK LVBhdGNoMjI6IGdjYzQzLWZvcnRyYW4tZGVidWc2LnBhdGNoCi1QYXRjaDIzOiBnY2M0My1mb3J0 cmFuLWRlYnVnNy5wYXRjaAotUGF0Y2gyNDogZ2NjNDMtZm9ydHJhbi1kZWJ1ZzgucGF0Y2gKLVBh dGNoMjU6IGdjYzQzLWZvcnRyYW4tZGVidWc5LnBhdGNoCi1QYXRjaDI2OiBnY2M0My1mb3J0cmFu LWRlYnVnMTAucGF0Y2gKLVBhdGNoMjc6IGdjYzQzLWZvcnRyYW4tZGVidWcxMS5wYXRjaAotUGF0 Y2gyODogZ2NjNDMtcHIzNzI0OC5wYXRjaAorUGF0Y2gxNzogZ2NjNDMteDg2XzY0LXZhX3N0YXJ0 LnBhdGNoCitQYXRjaDE4OiBnY2M0My1wcjM3MTg5LnBhdGNoCiAKICMgT24gQVJNIEVBQkkgc3lz dGVtcywgd2UgZG8gd2FudCAtZ251ZWFiaSB0byBiZSBwYXJ0IG9mIHRoZQogIyB0YXJnZXQgdHJp cGxlLgpAQCAtMTkwLDEwICsxODcsMTAgQEAgR3JvdXA6IERldmVsb3BtZW50L0xhbmd1YWdlcwog UmVxdWlyZXM6IGdjYyA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQogUmVxdWlyZXM6IGxpYnN0ZGMr KyA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQogUmVxdWlyZXM6IGxpYnN0ZGMrKy1kZXZlbCA9ICV7 dmVyc2lvbn0tJXtyZWxlYXNlfQotT2Jzb2xldGVzOiBnY2MzLWMrKwotT2Jzb2xldGVzOiBnY2Mz NC1jKysKLU9ic29sZXRlczogZ2NjMzUtYysrCi1PYnNvbGV0ZXM6IGdjYzQtYysrCisjT2Jzb2xl dGVzOiBnY2MzLWMrKworI09ic29sZXRlczogZ2NjMzQtYysrCisjT2Jzb2xldGVzOiBnY2MzNS1j KysKKyNPYnNvbGV0ZXM6IGdjYzQtYysrCiBBdXRvcmVxOiB0cnVlCiAKICVkZXNjcmlwdGlvbiBj KysKQEAgLTIwNCw4ICsyMDEsOCBAQCBpbmNsdWRpbmcgdGVtcGxhdGVzIGFuZCBleGNlcHRpb24g aGFuZGxpbmcuCiAlcGFja2FnZSAtbiBsaWJzdGRjKysKIFN1bW1hcnk6IEdOVSBTdGFuZGFyZCBD KysgTGlicmFyeQogR3JvdXA6IFN5c3RlbSBFbnZpcm9ubWVudC9MaWJyYXJpZXMKLU9ic29sZXRl czogbGlic3RkYysrMwotT2Jzb2xldGVzOiBsaWJzdGRjKyszNAorI09ic29sZXRlczogbGlic3Rk YysrMworI09ic29sZXRlczogbGlic3RkYysrMzQKIEF1dG9yZXE6IHRydWUKIAogJWRlc2NyaXB0 aW9uIC1uIGxpYnN0ZGMrKwpAQCAtMjE2LDggKzIxMyw4IEBAIEMrKyBMaWJyYXJ5LgogU3VtbWFy eTogSGVhZGVyIGZpbGVzIGFuZCBsaWJyYXJpZXMgZm9yIEMrKyBkZXZlbG9wbWVudAogR3JvdXA6 IERldmVsb3BtZW50L0xpYnJhcmllcwogUmVxdWlyZXM6IGxpYnN0ZGMrKyA9ICV7dmVyc2lvbn0t JXtyZWxlYXNlfSwgJXtfcHJlZml4fS8le19saWJ9L2xpYnN0ZGMrKy5zby42Ci1PYnNvbGV0ZXM6 IGxpYnN0ZGMrKzMtZGV2ZWwKLU9ic29sZXRlczogbGlic3RkYysrMzQtZGV2ZWwKKyNPYnNvbGV0 ZXM6IGxpYnN0ZGMrKzMtZGV2ZWwKKyNPYnNvbGV0ZXM6IGxpYnN0ZGMrKzM0LWRldmVsCiBBdXRv cmVxOiB0cnVlCiAKICVkZXNjcmlwdGlvbiAtbiBsaWJzdGRjKystZGV2ZWwKQEAgLTIzMCw3ICsy MjcsNyBAQCBTdW1tYXJ5OiBPYmplY3RpdmUtQyBzdXBwb3J0IGZvciBHQ0MKIEdyb3VwOiBEZXZl bG9wbWVudC9MYW5ndWFnZXMKIFJlcXVpcmVzOiBnY2MgPSAle3ZlcnNpb259LSV7cmVsZWFzZX0K IFJlcXVpcmVzOiBsaWJvYmpjID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9Ci1PYnNvbGV0ZXM6IGdj YzMtb2JqYworI09ic29sZXRlczogZ2NjMy1vYmpjCiBBdXRvcmVxOiB0cnVlCiAKICVkZXNjcmlw dGlvbiBvYmpjCkBAIC0yNjMsOSArMjYwLDkgQEAgUmVxdWlyZXM6IGdjYyA9ICV7dmVyc2lvbn0t JXtyZWxlYXNlfQogUmVxdWlyZXM6IGxpYmdmb3J0cmFuID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9 CiBCdWlsZFJlcXVpcmVzOiBnbXAtZGV2ZWwgPj0gNC4xLjItOCwgbXBmci1kZXZlbCA+PSAyLjIu MQogUHJlcmVxOiAvc2Jpbi9pbnN0YWxsLWluZm8KLU9ic29sZXRlczogZ2NjMy1nNzcKLU9ic29s ZXRlczogZ2NjLWc3NwotT2Jzb2xldGVzOiBnY2M0LWdmb3J0cmFuCisjT2Jzb2xldGVzOiBnY2Mz LWc3NworI09ic29sZXRlczogZ2NjLWc3NworI09ic29sZXRlczogZ2NjNC1nZm9ydHJhbgogQXV0 b3JlcTogdHJ1ZQogCiAlZGVzY3JpcHRpb24gZ2ZvcnRyYW4KQEAgLTI3NSw3ICsyNzIsNyBAQCBw cm9ncmFtcyB3aXRoIHRoZSBHTlUgQ29tcGlsZXIgQ29sbGVjdGlvbi4KICVwYWNrYWdlIC1uIGxp Ymdmb3J0cmFuCiBTdW1tYXJ5OiBGb3J0cmFuIDk1IHJ1bnRpbWUKIEdyb3VwOiBTeXN0ZW0gRW52 aXJvbm1lbnQvTGlicmFyaWVzCi1PYnNvbGV0ZXM6IGxpYmYyYworI09ic29sZXRlczogbGliZjJj CiBBdXRvcmVxOiB0cnVlCiAKICVkZXNjcmlwdGlvbiAtbiBsaWJnZm9ydHJhbgpAQCAtMzIwLDEw ICszMTcsMTAgQEAgUmVxdWlyZXM6IGdjYyA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQogUmVxdWly ZXM6IGxpYmdjaiA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQogUmVxdWlyZXM6IGxpYmdjai1kZXZl bCA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQogUmVxdWlyZXM6IC91c3Ivc2hhcmUvamF2YS9lY2xp cHNlLWVjai5qYXIKLU9ic29sZXRlczogZ2NjMy1qYXZhCi1PYnNvbGV0ZXM6IGdjYzM0LWphdmEK LU9ic29sZXRlczogZ2NjMzUtamF2YQotT2Jzb2xldGVzOiBnY2M0LWphdmEKKyNPYnNvbGV0ZXM6 IGdjYzMtamF2YQorI09ic29sZXRlczogZ2NjMzQtamF2YQorI09ic29sZXRlczogZ2NjMzUtamF2 YQorI09ic29sZXRlczogZ2NjNC1qYXZhCiBQcmVyZXE6IC9zYmluL2luc3RhbGwtaW5mbwogQXV0 b3JlcTogdHJ1ZQogCkBAIC0zNDgsMTAgKzM0NSwxMCBAQCBCdWlsZFJlcXVpcmVzOiBhbHNhLWxp Yi1kZXZlbAogQnVpbGRSZXF1aXJlczogbGliWHRzdC1kZXZlbAogQnVpbGRSZXF1aXJlczogbGli WHQtZGV2ZWwKICVlbmRpZgotT2Jzb2xldGVzOiBnY2MtbGliZ2NqCi1PYnNvbGV0ZXM6IGxpYmdj ajMKLU9ic29sZXRlczogbGliZ2NqMzQKLU9ic29sZXRlczogbGliZ2NqNAorI09ic29sZXRlczog Z2NjLWxpYmdjagorI09ic29sZXRlczogbGliZ2NqMworI09ic29sZXRlczogbGliZ2NqMzQKKyNP YnNvbGV0ZXM6IGxpYmdjajQKIEF1dG9yZXE6IHRydWUKIAogJWRlc2NyaXB0aW9uIC1uIGxpYmdj agpAQCAtMzY0LDkgKzM2MSw5IEBAIEdyb3VwOiBEZXZlbG9wbWVudC9MYW5ndWFnZXMKIFJlcXVp cmVzOiBsaWJnY2ogPSAle3ZlcnNpb259LSV7cmVsZWFzZX0sICV7X3ByZWZpeH0vJXtfbGlifS9s aWJnY2ouc28uOQogUmVxdWlyZXM6IHpsaWItZGV2ZWwsICV7X3ByZWZpeH0vJXtfbGlifS9saWJ6 LnNvCiBSZXF1aXJlczogL2Jpbi9hd2sKLU9ic29sZXRlczogbGliZ2NqMy1kZXZlbAotT2Jzb2xl dGVzOiBsaWJnY2ozNC1kZXZlbAotT2Jzb2xldGVzOiBsaWJnY2o0LWRldmVsCisjT2Jzb2xldGVz OiBsaWJnY2ozLWRldmVsCisjT2Jzb2xldGVzOiBsaWJnY2ozNC1kZXZlbAorI09ic29sZXRlczog bGliZ2NqNC1kZXZlbAogQXV0b3JlcTogZmFsc2UKIEF1dG9wcm92OiBmYWxzZQogCkBAIC0zNzgs NyArMzc1LDcgQEAgcGFja2FnZSB0byBjb21waWxlIHlvdXIgSmF2YSBwcm9ncmFtcyB1c2luZyB0 aGUgR0NDIEphdmEgY29tcGlsZXIgKGdjaikuCiBTdW1tYXJ5OiBKYXZhIGxpYnJhcnkgc291cmNl cyBmcm9tIEdDQzQgcHJldmlldwogR3JvdXA6IFN5c3RlbSBFbnZpcm9ubWVudC9MaWJyYXJpZXMK IFJlcXVpcmVzOiBsaWJnY2ogPSAle3ZlcnNpb259LSV7cmVsZWFzZX0KLU9ic29sZXRlczogbGli Z2NqNC1zcmMKKyNPYnNvbGV0ZXM6IGxpYmdjajQtc3JjCiBBdXRvcmVxOiB0cnVlCiAKICVkZXNj cmlwdGlvbiAtbiBsaWJnY2otc3JjCkBAIC0zODksNyArMzg2LDcgQEAgU3VtbWFyeTogVGhlIEMg UHJlcHJvY2Vzc29yLgogR3JvdXA6IERldmVsb3BtZW50L0xhbmd1YWdlcwogUHJlcmVxOiAvc2Jp bi9pbnN0YWxsLWluZm8KICVpZmFyY2ggaWE2NAotT2Jzb2xldGVzOiBnbnVwcm8KKyNPYnNvbGV0 ZXM6IGdudXBybwogJWVuZGlmCiBBdXRvcmVxOiB0cnVlCiAKQEAgLTQxOSw3ICs0MTYsNyBAQCBt YWNyb3MuCiBTdW1tYXJ5OiBBZGEgOTUgc3VwcG9ydCBmb3IgR0NDCiBHcm91cDogRGV2ZWxvcG1l bnQvTGFuZ3VhZ2VzCiBSZXF1aXJlczogZ2NjID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9LCBsaWJn bmF0ID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9Ci1PYnNvbGV0ZXM6IGduYXQtZGV2ZWwsIGdjYzMt Z25hdAorI09ic29sZXRlczogZ25hdC1kZXZlbCwgZ2NjMy1nbmF0CiBQcmVyZXE6IC9zYmluL2lu c3RhbGwtaW5mbwogQXV0b3JlcTogdHJ1ZQogCkBAIC00MzAsNyArNDI3LDcgQEAgdGhlIGRvY3Vt ZW50cyBhbmQgQWRhIDk1IGNvbXBpbGVyLgogJXBhY2thZ2UgLW4gbGliZ25hdAogU3VtbWFyeTog R05VIEFkYSA5NSBydW50aW1lIHNoYXJlZCBsaWJyYXJpZXMKIEdyb3VwOiBTeXN0ZW0gRW52aXJv bm1lbnQvTGlicmFyaWVzCi1PYnNvbGV0ZXM6IGduYXQgbGliZ25hdDMKKyNPYnNvbGV0ZXM6IGdu YXQgbGliZ25hdDMKIEF1dG9yZXE6IHRydWUKIAogJWRlc2NyaXB0aW9uIC1uIGxpYmduYXQKQEAg LTQ1NSwxOCArNDUyLDggQEAgd2hpY2ggYXJlIHJlcXVpcmVkIHRvIHJ1biBwcm9ncmFtcyBjb21w aWxlZCB3aXRoIHRoZSBHTkFULgogJXBhdGNoMTQgLXAwIC1iIC5yaDI1MTY4Mn4KICVwYXRjaDE1 IC1wMCAtYiAuc3BhcmMtY29uZmlnLWRldGVjdGlvbn4KICVwYXRjaDE2IC1wMCAtYiAubGliZ29t cC1vbXBfaC1tdWx0aWxpYn4KLSVwYXRjaDE3IC1wMCAtYiAuZm9ydHJhbi1kZWJ1ZzF+Ci0lcGF0 Y2gxOCAtcDAgLWIgLmZvcnRyYW4tZGVidWcyfgotJXBhdGNoMTkgLXAwIC1iIC5mb3J0cmFuLWRl YnVnM34KLSVwYXRjaDIwIC1wMCAtYiAuZm9ydHJhbi1kZWJ1ZzR+Ci0lcGF0Y2gyMSAtcDAgLWIg LmZvcnRyYW4tZGVidWc1fgotJXBhdGNoMjIgLXAwIC1iIC5mb3J0cmFuLWRlYnVnNn4KLSVwYXRj aDIzIC1wMCAtYiAuZm9ydHJhbi1kZWJ1Zzd+Ci0lcGF0Y2gyNCAtcDAgLWIgLmZvcnRyYW4tZGVi dWc4fgotJXBhdGNoMjUgLXAwIC1iIC5mb3J0cmFuLWRlYnVnOX4KLSVwYXRjaDI2IC1wMCAtYiAu Zm9ydHJhbi1kZWJ1ZzEwfgotJXBhdGNoMjcgLXAwIC1iIC5mb3J0cmFuLWRlYnVnMTF+Ci0lcGF0 Y2gyOCAtcDAgLWIgLnByMzcyNDh+CislcGF0Y2gxNyAtcDAgLWIgLng4Nl82NC12YV9zdGFydH4K KyVwYXRjaDE4IC1wMCAtYiAucHIzNzE4OX4KIAogdGFyIHh6ZiAle1NPVVJDRTR9CiAKQEAgLTQ4 OSw2ICs0NzYsMzggQEAgcGVybCAtcGkgLWUgJ3MvXmNoZWNrOiBjaGVjay1yZWN1cnNpdmUvaWZl cSAoXCQoTVVMVElTVUJESVIpLClcbmNoZWNrOiBjaGVjay1yZWMKIAogLi9jb250cmliL2djY191 cGRhdGUgLS10b3VjaAogCisjIFRvIG1ha2UgcnBtbGludCBoYXBweSAoYXJnaCksIGZpeCB1cCBu YW1lcyBpbiBDaGFuZ2VMb2cgZW50cmllcyB0byB2YWxpZCBVVEYtOAorTENfQUxMPUMgc2VkIC1p IFwKKyAgLWUgJ3MvRFwob1x8XHhmNlwpbm1lei9EXHhjM1x4YjZubWV6LycgXAorICAtZSAncy9c KEF2XHxceDgxXHhjMXZcfFx4YzF2XHxceGVmXHhiZlx4YmR2XD9cfFx4ODFceGMzXHg4MXZcfFx4 YzN2XClpbGEvXHhjM1x4ODF2aWxhLycgXAorICAtZSAncy9Fc3BcKGluXHxceDgxXHhlZG5cfFx4 ZWRuXHxceGVmXHhiZlx4YmRuXD9cfFx4ZWZceGJmXHhiZFx4YWRuXHxceDgxXHhjM1x4YWRuXClk b2xhL0VzcFx4YzNceGFkbmRvbGEvJyBcCisgIC1lICdzL1NjaGxcKHVcfFx4ZWZceGJmXHhiZFx8 XHhmY3VcP1x8XHg4MVx4ZmNcfFx4ODFceGMzXHhiY1x8XHhjM1x4YWZceGMyXHhiZlx4YzJceGJk XHxceGVmXHhiZlx4YmRceGVmXHhiZlx4YmRceGVmXHhiZlx4YmRceGMyXHhiY1wpdGVyL1NjaGxc eGMzXHhiY3Rlci8nIFwKKyAgLWUgJ3MvSHVtaVwoZVx8XHhlOFwpcmVzL0h1bWlceGMzXHhhOHJl cy8nIFwKKyAgLWUgJ3MvTFwob3dcfFx4YzNceGFmXHhjMlx4YmZceGMyXHhiZFx8b2V3XHxceGY2 d1wpaXMvTFx4YzNceGI2d2lzLycgXAorICAtZSAncy9HXHhmY3RsZWluL0dceGMzXHhiY3RsZWlu LycgXAorICAtZSAncy9HXHhlMVtiXW9yL0dceGMzXHhhMWJvci8nIFwKKyAgLWUgJ3MvTFx4ZjNr aS9MXHhjM1x4YjNraS8nIFwKKyAgLWUgJ3MvRmF1dHJceGMzIC9GYXV0clx4YzNceGE5IC8nIFwK KyAgLWUgJ3MvU1x4ZTlbYl1hc3RpYW4vU1x4YzNceGE5YmFzdGlhbi8nIFwKKyAgLWUgJ3MvVGhc eGVmXHhiZlx4YmRbZF1vcmUvVGhceGMzXHhhOW9kb3JlLycgXAorICAtZSAncy9Db3JzXHhjM1x4 YzJceGE5cGl1cy9Db3JzXHhjM1x4YTlwaXVzLycgXAorICAtZSAncy9LXHhmY2hsL0tceGMzXHhi Y2hsLycgXAorICAtZSAncy9SXHhmNm5uZXJ1cC9SXHhjM1x4YjZubmVydXAvJyBcCisgIC1lICdz L0xceGY4dnNldC9MXHhjM1x4Yjh2c2V0LycgXAorICAtZSAncy9QaFx4ODFceGZiXHg4MVx4ZjRu Zy1UaFx4ODFceGU1by9QaFx4YzNceGJiXHhjM1x4YjRuZy1UaFx4YzNceGE1by8nIFwKKyAgLWUg J3MvVlx4ODFceGY1L1ZceGMzXHhiNS8nIFwKKyAgLWUgJ3MvSlx4ZjZuc3Nvbi9KXHhjM1x4YjZu c3Nvbi8nIFwKKyAgLWUgJ3MvVlx4ZWZceGJmXHhiZGlzXHhlZlx4YmZceGJkbmVuL1ZceGMzXHhh NGlzXHhjM1x4YTRuZW4vJyBcCisgIC1lICdzL0pceGVmXHhiZlx4YmRyZy9KXHhjM1x4YjZyZy8n IFwKKyAgLWUgJ3MvTVx4ZWZceGJmXHhiZHNsaS9NXHhjM1x4YjZzbGkvJyBcCisgIC1lICdzL1Jc eGU0dHkvUlx4YzNceGE0dHkvJyBcCisgIC1lICdzLzIwMDNceGMyXHhhZC0vMjAwMy0vJyBcCisg IC1lICdzL1x4YzJceGEwLyAvZycgXAorICAtZSAncy8gXHhhMC8gIC9nJyBcCisgIC1lICdzL1x4 YTAgLy8nIFwKKyAgYGZpbmQgLiAtbmFtZSBcKkNoYW5nZUxvZ1wqYAorTENfQUxMPUMgc2VkIC1p IC1lICdzL1x4YTAvIC8nIGdjYy9kb2Mvb3B0aW9ucy50ZXhpCisKICVpZmFyY2ggcHBjCiBpZiBb IC1kIGxpYnN0ZGMrKy12My9jb25maWcvYWJpL3Bvc3QvcG93ZXJwYzY0LWxpbnV4LWdudSBdOyB0 aGVuCiAgIG1rZGlyIC1wIGxpYnN0ZGMrKy12My9jb25maWcvYWJpL3Bvc3QvcG93ZXJwYzY0LWxp bnV4LWdudS82NApAQCAtNTIzLDEyICs1NDIsNiBAQCBybSAtZnIgb2JqLSV7Z2NjX3RhcmdldF9w bGF0Zm9ybX0KIG1rZGlyIG9iai0le2djY190YXJnZXRfcGxhdGZvcm19CiBjZCBvYmotJXtnY2Nf dGFyZ2V0X3BsYXRmb3JtfQogCi1pZiBbICEgLWYgL3Vzci9saWIvbG9jYWxlL2RlX0RFL0xDX0NU WVBFIF07IHRoZW4KLSAgbWtkaXIgbG9jYWxlCi0gIGxvY2FsZWRlZiAtZiBJU08tODg1OS0xIC1p IGRlX0RFIGxvY2FsZS9kZV9ERQotICBleHBvcnQgTE9DUEFUSD1gcHdkYC9sb2NhbGU6L3Vzci9s aWIvbG9jYWxlCi1maQotCiAlaWYgJXtidWlsZF9qYXZhfQogJWlmICEle2Jvb3RzdHJhcF9qYXZh fQogIyBJZiB3ZSBkb24ndCBoYXZlIGdqYXZhaCBpbiAkUEFUSCwgdHJ5IHRvIGJ1aWxkIGl0IHdp dGggdGhlIG9sZCBnaWoKQEAgLTczOCwxMCArNzUxLDYgQEAgcGVybCAtcGkgLWUgXAogCiBjZCBv YmotJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfQogCi1pZiBbICEgLWYgL3Vzci9saWIvbG9jYWxlL2Rl X0RFL0xDX0NUWVBFIF07IHRoZW4KLSAgZXhwb3J0IExPQ1BBVEg9YHB3ZGAvbG9jYWxlOi91c3Iv bGliL2xvY2FsZQotZmkKLQogJWlmICV7YnVpbGRfamF2YX0KIGV4cG9ydCBQQVRIPWBwd2RgLy4u L2Zhc3RqYXItJXtmYXN0amFyX3Zlcn0vb2JqLSV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0ke1BBVEg6 KzokUEFUSH0KICVpZiAhJXtib290c3RyYXBfamF2YX0KQEAgLTEwNzMsNiArMTA4Miw3IEBAIHJt IC1mICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vJXtfbGlifS97bGliZmZpKixsaWJpYmVydHku YX0KIHJtIC1mICRGVUxMRVBBVEgvaW5zdGFsbC10b29scy97bWtoZWFkZXJzLGZpeGluY2x9CiBy bSAtZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2xpYi97MzIsNjR9L2xpYmliZXJ0eS5hCiBy bSAtZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9LyV7X2xpYn0vbGlic3NwKgorcm0gLWYgJFJQ TV9CVUlMRF9ST09UJXtfcHJlZml4fS9iaW4vZ25hdGl2ZTJhc2NpaQogCiAlaWZhcmNoICV7bXVs dGlsaWJfNjRfYXJjaHN9CiAjIFJlbW92ZSBsaWJyYXJpZXMgZm9yIHRoZSBvdGhlciBhcmNoIG9u IG11bHRpbGliIGFyY2hlcwpAQCAtMTY5Miw2ICsxNzAyLDE4IEBAIGZpCiAlZG9jIHJwbS5kb2Mv Y2hhbmdlbG9ncy9saWJtdWRmbGFwL0NoYW5nZUxvZyoKIAogJWNoYW5nZWxvZworKiBGcmkgU2Vw ICA1IDIwMDggSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4zLjItMgorLSB1cGRh dGUgZnJvbSBnY2MtNF8zLWJyYW5jaAorICAtIFBScyBjKysvMzczNDgsIGMvMzcyNjEsIGZvcnRy YW4vMzYzNzEsIGZvcnRyYW4vMzcxOTMsIG1pZGRsZS1lbmQvMzY0NDksCisJdGFyZ2V0LzM2MzMy LCB0YXJnZXQvMzcxNjgKKy0gbWFrZSBDaGFuZ2VMb2cgZmlsZXMgYW5kIGdjYy5pbmZvIHZhbGlk IFVURi04LCByZW1vdmUgZ25hdGl2ZTJhc2NpaSBmcm9tCisgIGdjYy1nbmF0LCBjb21tZW50IG91 dCBtb3N0IG9mIHRoZSBPYnNvbGV0ZXMgKCMyMjU3NzgpCistIG9uIHg4Nl82NCBkZWNyZWFzZSBm cmFtZSBzaXplIGluIHZhcmFyZ3MgZnVuY3Rpb25zIHRoYXQgZG9uJ3QgbmVlZCBzYXZpbmcKKyAg Z3ByIG9yIGZwciByZWdpc3RlcnMKKy0gZml4IElDRSBvbiBpbXBsaWNpdGx5IGRldGVybWluZWQg Zmlyc3Rwcml2YXRlIHdoZXJlIGNvcHkgY3RvciBvciBkdG9yCisgIG5lZWRzIHN5bnRoZXRpemF0 aW9uIChQUiBjKysvMzcxODkpCistIGRvY3VtZW50IGhvdyB0byByZWNyZWFzZSB0aGUgdGFyYmFs bAorCiAqIEZyaSBBdWcgMjkgMjAwOCBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0 LjMuMi0xCiAtIHVwZGF0ZSBmcm9tIGdjYy00XzMtYnJhbmNoCiAgIC0gNC4zLjIgcmVsZWFzZQoK ZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4IGJjYzhhMzUuLmY3NjRjZDkgMTAw NjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAtMSwyICsxLDIgQEAKLTY5ZjcwZDky MTQyNDY2MzYxMTQ2MzI2Zjg0MGE2MTg1ICBnY2MtNC4zLjItMjAwODA4MjkudGFyLmJ6MgorMzcz YmZkMThkODA0YjkzMTIzZDg5Yjc5Mzk2N2ZiM2IgIGdjYy00LjMuMi0yMDA4MDkwNS50YXIuYnoy CiA5MmE3MGY5ZTU2MjIzYjY1M2JjZTBmNThmOTBjZjk1MCAgZmFzdGphci0wLjk1LnRhci5nego=