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: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: [scl] Disable Python frame filters on scl. Date: Sat, 27 Jun 2026 23:56:15 GMT Message-ID: <178260457530.1.12221870093558419193.rpms-gdb-19d445823809@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 19d445823809e4d540df6401c1b8b7b84acc8dfc ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogMTlkNDQ1ODIzODA5ZTRkNTQwZGY2NDAxYzFiOGI3Yjg0YWNj OGRmYwogICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxMy0wNi0xMFQxNTowNDozNyswMjow MAogICAgICAgICAgICBTdGF0cyAgOiArMzE4NC8tMjkwNyBpbiAyMSBmaWxlKHMpCiAgICAgICAg ICAgIFVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvMTlk NDQ1ODIzODA5ZTRkNTQwZGY2NDAxYzFiOGI3Yjg0YWNjOGRmYz9icmFuY2g9Z2RiLTE3LjItcmVi YXNlLWY0NAoKICAgICAgICAgICAgTG9nOgogICAgICAgICAgICBbc2NsXSBEaXNhYmxlIFB5dGhv biBmcmFtZSBmaWx0ZXJzIG9uIHNjbC4KCi0gVXBkYXRlIGxpYnJhcmllcyBvcGVuaW5nIHBlcmZv cm1hbmNlIGZpeCBmcm9tIHVwc3RyZWFtLgotIEZpeCBDKysgbG9va3VwcyBwZXJmb3JtYW5jZSBy ZWdyZXNzaW9uIChEb3VnIEV2YW5zLCBCWiA5NzI2NzcpLgoKLS0tCmRpZmYgLS1naXQgYS9nZGIt Y3h4LXBlcmZvcm1hbmNlLTFvZjIucGF0Y2ggYi9nZGItY3h4LXBlcmZvcm1hbmNlLTFvZjIucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA3NzNlYwotLS0gL2Rldi9u dWxsCisrKyBiL2dkYi1jeHgtcGVyZm9ybWFuY2UtMW9mMi5wYXRjaApAQCAtMCwwICsxLDIwOSBA QAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMy0wNi9tc2cwMDAzNC5odG1s CisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEzLzA2LzA1IDIwOjQzOjUzCTEuMTU2ODkKKyMj IyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEzLzA2LzA1IDIyOjI4OjUxCTEuMTU2OTAKKyMjIC0xLDMg KzEsMTQgQEAKKysyMDEzLTA2LTA1ICBEb3VnIEV2YW5zICA8ZGplQGdvb2dsZS5jb20+CisrCSAg ICBLZWl0aCBTZWl0eiAgPGtlaXRoc0ByZWRoYXQuY29tPgorKworKwlQUiAxNTUxOQorKwkqIGNw LW5hbWVzcGFjZS5jIChmaW5kX3N5bWJvbF9pbl9iYXNlY2xhc3MpOiBDYWxsCisrCWNwX2xvb2t1 cF9zeW1ib2xfaW5fbmFtZXNwYWNlIGluc3RlYWQgb2YgY3BfbG9va3VwX3N5bWJvbF9uYW1lc3Bh Y2UuCisrCUNoZWNrIHJlc3VsdCBvZiBjYWxsIHRvIGxvb2t1cF9zeW1ib2xfc3RhdGljLgorKwlD YWxsIGxvb2t1cF9zdGF0aWNfc3ltYm9sX2F1eCB1bmNvbmRpdGlvbmFsbHkuCisrCUNhbGwgY2hl Y2tfdHlwZWRlZiBvbiBiYXNlIHR5cGVzIGJlZm9yZSBhY2Nlc3NpbmcgdGhlbS4KKysJKGNwX2xv b2t1cF9uZXN0ZWRfc3ltYm9sKTogRml4IGNvbW1lbnQuCisrCisgMjAxMy0wNi0wNSAgTHVpcyBN YWNoYWRvICA8bGd1c3Rhdm9AY29kZXNvdXJjZXJ5LmNvbT4KKyAKKyAJKiBnbnUtdjMtYWJpLmMg KGdudXYzX3NraXBfdHJhbXBvbGluZSk6IEhhbmRsZSB0aHVuaworLS0tIHNyYy9nZGIvY3AtbmFt ZXNwYWNlLmMJMjAxMy8wNS8zMCAxNzoyOTowNgkxLjY3CisrKysgc3JjL2dkYi9jcC1uYW1lc3Bh Y2UuYwkyMDEzLzA2LzA1IDIyOjI4OjUxCTEuNjgKK0BAIC03MjAsMzYgKzcyMCw0MCBAQAorICAg Zm9yIChpID0gMDsgaSA8IFRZUEVfTl9CQVNFQ0xBU1NFUyAocGFyZW50X3R5cGUpOyArK2kpCisg ICAgIHsKKyAgICAgICBzaXplX3QgbGVuOworKyAgICAgIHN0cnVjdCB0eXBlICpiYXNlX3R5cGUg PSBUWVBFX0JBU0VDTEFTUyAocGFyZW50X3R5cGUsIGkpOworICAgICAgIGNvbnN0IGNoYXIgKmJh c2VfbmFtZSA9IFRZUEVfQkFTRUNMQVNTX05BTUUgKHBhcmVudF90eXBlLCBpKTsKKyAKKyAgICAg ICBpZiAoYmFzZV9uYW1lID09IE5VTEwpCisgCWNvbnRpbnVlOworIAorICAgICAgIC8qIFNlYXJj aCB0aGlzIHBhcnRpY3VsYXIgYmFzZSBjbGFzcy4gICovCistICAgICAgc3ltID0gY3BfbG9va3Vw X3N5bWJvbF9uYW1lc3BhY2UgKGJhc2VfbmFtZSwgbmFtZSwgYmxvY2ssIFZBUl9ET01BSU4pOwor KyAgICAgIHN5bSA9IGNwX2xvb2t1cF9zeW1ib2xfaW5fbmFtZXNwYWNlIChiYXNlX25hbWUsIG5h bWUsIGJsb2NrLAorKwkJCQkJICAgVkFSX0RPTUFJTiwgMCk7CisgICAgICAgaWYgKHN5bSAhPSBO VUxMKQorIAlicmVhazsKKyAKKysgICAgICAvKiBOb3cgc2VhcmNoIGFsbCBzdGF0aWMgZmlsZS1s ZXZlbCBzeW1ib2xzLiAgV2UgaGF2ZSB0byBkbyB0aGlzIGZvcgorKwkgdGhpbmdzIGxpa2UgdHlw ZWRlZnMgaW4gdGhlIGNsYXNzLiAgRmlyc3Qgc2VhcmNoIGluIHRoaXMgc3ltdGFiLAorKwkgd2hh dCB3ZSB3YW50IGlzIHBvc3NpYmx5IHRoZXJlLiAgKi8KKyAgICAgICBsZW4gPSBzdHJsZW4gKGJh c2VfbmFtZSkgKyAyICsgc3RybGVuIChuYW1lKSArIDE7CisgICAgICAgY29uY2F0ZW5hdGVkX25h bWUgPSB4cmVhbGxvYyAoY29uY2F0ZW5hdGVkX25hbWUsIGxlbik7CisgICAgICAgeHNucHJpbnRm IChjb25jYXRlbmF0ZWRfbmFtZSwgbGVuLCAiJXM6OiVzIiwgYmFzZV9uYW1lLCBuYW1lKTsKKyAg ICAgICBzeW0gPSBsb29rdXBfc3ltYm9sX3N0YXRpYyAoY29uY2F0ZW5hdGVkX25hbWUsIGJsb2Nr LCBWQVJfRE9NQUlOKTsKKysgICAgICBpZiAoc3ltICE9IE5VTEwpCisrCWJyZWFrOworIAorLSAg ICAgIC8qIElmIHRoZXJlIGlzIGN1cnJlbnRseSBubyBCTE9DSywgZS5nLiwgdGhlIGluZmVyaW9y IGhhc24ndCB5ZXQKKy0JIGJlZW4gc3RhcnRlZCwgdGhlbiB0cnkgc2VhcmNoaW5nIGFsbCBTVEFU SUNfQkxPQ0sgc3ltYm9scyBpbgorLQkgYWxsIG9iamZpbGVzLiAgKi8KKy0gICAgICBpZiAoYmxv Y2sgPT0gTlVMTCkKKy0JeworLQkgIHN5bSA9IGxvb2t1cF9zdGF0aWNfc3ltYm9sX2F1eCAoY29u Y2F0ZW5hdGVkX25hbWUsIFZBUl9ET01BSU4pOworLQkgIGlmIChzeW0gIT0gTlVMTCkKKy0JICAg IGJyZWFrOworLQl9CisrICAgICAgLyogTm9wZS4gIFdlIG5vdyBoYXZlIHRvIHNlYXJjaCBhbGwg c3RhdGljIGJsb2NrcyBpbiBhbGwgb2JqZmlsZXMsCisrCSBldmVuIGlmIGJsb2NrICE9IE5VTEws IGJlY2F1c2UgdGhlcmUncyBubyBndWFyYW50ZWVzIGFzIHRvIHdoaWNoCisrCSBzeW10YWIgdGhl IHN5bWJvbCB3ZSB3YW50IGlzIGluLiAgKi8KKysgICAgICBzeW0gPSBsb29rdXBfc3RhdGljX3N5 bWJvbF9hdXggKGNvbmNhdGVuYXRlZF9uYW1lLCBWQVJfRE9NQUlOKTsKKysgICAgICBpZiAoc3lt ICE9IE5VTEwpCisrCWJyZWFrOworIAorICAgICAgIC8qIElmIHRoaXMgY2xhc3MgaGFzIGJhc2Ug Y2xhc3Nlcywgc2VhcmNoIHRoZW0gbmV4dC4gICovCistICAgICAgaWYgKFRZUEVfTl9CQVNFQ0xB U1NFUyAoVFlQRV9CQVNFQ0xBU1MgKHBhcmVudF90eXBlLCBpKSkgPiAwKQorKyAgICAgIENIRUNL X1RZUEVERUYgKGJhc2VfdHlwZSk7CisrICAgICAgaWYgKFRZUEVfTl9CQVNFQ0xBU1NFUyAoYmFz ZV90eXBlKSA+IDApCisgCXsKKy0JICBzeW0gPSBmaW5kX3N5bWJvbF9pbl9iYXNlY2xhc3MgKFRZ UEVfQkFTRUNMQVNTIChwYXJlbnRfdHlwZSwgaSksCistCQkJCQkgIG5hbWUsIGJsb2NrKTsKKysJ ICBzeW0gPSBmaW5kX3N5bWJvbF9pbl9iYXNlY2xhc3MgKGJhc2VfdHlwZSwgbmFtZSwgYmxvY2sp OworIAkgIGlmIChzeW0gIT0gTlVMTCkKKyAJICAgIGJyZWFrOworIAl9CitAQCAtNzk3LDggKzgw MSw4IEBACisgCWlmIChzeW0gIT0gTlVMTCkKKyAJICByZXR1cm4gc3ltOworIAorLQkvKiBOb3cg c2VhcmNoIGFsbCBzdGF0aWMgZmlsZS1sZXZlbCBzeW1ib2xzLiAgTm90IHN0cmljdGx5CistCSAg IGNvcnJlY3QsIGJ1dCBtb3JlIHVzZWZ1bCB0aGFuIGFuIGVycm9yLiAgV2UgZG8gbm90IHRyeSB0 bworKwkvKiBOb3cgc2VhcmNoIGFsbCBzdGF0aWMgZmlsZS1sZXZlbCBzeW1ib2xzLiAgV2UgaGF2 ZSB0byBkbyB0aGlzCisrCSAgIGZvciB0aGluZ3MgbGlrZSB0eXBlZGVmcyBpbiB0aGUgY2xhc3Mu ICBXZSBkbyBub3QgdHJ5IHRvCisgCSAgIGd1ZXNzIGFueSBpbXBvcnRlZCBuYW1lc3BhY2UgYXMg ZXZlbiB0aGUgZnVsbHkgc3BlY2lmaWVkCisgCSAgIG5hbWVzcGFjZSBzZWFyY2ggaXMgYWxyZWFk eSBub3QgQysrIGNvbXBsaWFudCBhbmQgbW9yZQorIAkgICBhc3N1bXB0aW9ucyBjb3VsZCBtYWtl IGl0IHRvbyBtYWdpYy4gICovCisjIyMgc3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCTIwMTMv MDYvMDUgMjA6Mzg6MzcJMS4zNjg1CisjIyMgc3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCTIw MTMvMDYvMDUgMjI6Mjg6NTEJMS4zNjg2CisjIyAtMSwzICsxLDExIEBACisrMjAxMy0wNi0wNSAg RG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgorKwkgICAgS2VpdGggU2VpdHogIDxrZWl0aHNA cmVkaGF0LmNvbT4KKysKKysJKiBnZGIuY3AvZGVyaXZhdGlvbjIuY2M6IE5ldyBmaWxlLgorKwkq IGdkYi5jcC9kZXJpdmF0aW9uLmNjIChtYWluKTogQ2FsbCBmb28yLgorKwkqIGdkYi5jcC9kZXJp dmF0aW9uLmV4cDogQWRkIHRlc3RzIGZvciB0eXBlZGVmcyBpbiBhbm90aGVyCisrCWZpbGUsIGFu ZCB3aGVuIHRoZXJlJ3MgYW4gYWN0aXZlIGJsb2NrLgorKworIDIwMTMtMDYtMDUgIEx1aXMgTWFj aGFkbyAgPGxndXN0YXZvQGNvZGVzb3VyY2VyeS5jb20+CisgCisgCSogZ2RiLmNwL3ZpcnRmdW5j LmV4cCAobWFrZV9vbmVfdnRhYmxlX3Jlc3VsdCk6IEhhbmRsZSBleHRyYSBvdXRwdXQKKy0tLSBz cmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZGVyaXZhdGlvbjIuY2MKKysrKyBzcmMvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvZGVyaXZhdGlvbjIuY2MJMjAxMy0wNi0xMCAxMjozNToxNC44ODEyNzIyNDcg KzAwMDAKK0BAIC0wLDAgKzEsNDkgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RC LCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDEzIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisr ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgorKyAgICovCisrCisrLyogQSBjb3B5IG9mIHNvbWUgY2xhc3NlcyBpbiBkZXJpdmF0aW9uLmNj IHNvIHRoYXQgd2UgY2FuIHRlc3Qgc3ltYm9sIGxvb2t1cAorKyAgIGluIG90aGVyIENVcy4gICov CisrCisrY2xhc3MgQTIgeworK3B1YmxpYzoKKysgICAgdHlwZWRlZiBpbnQgdmFsdWVfdHlwZTsK KysgICAgdmFsdWVfdHlwZSBhOworKworKyAgICBBMigpCisrICAgIHsKKysgICAgICAgIGE9MTsK KysgICAgfQorK307CisrCisrY2xhc3MgRDIgOiBwdWJsaWMgQTIgeworK3B1YmxpYzoKKysgICAg dmFsdWVfdHlwZSBkOworKworKyAgICBEMigpCisrICAgIHsKKysgICAgICAgIGQ9NzsKKysgICAg fQorK307CisrCisrdm9pZAorK2ZvbzIgKCkKKyt7CisrICBEMiBkMl9pbnN0YW5jZTsKKysgIGQy X2luc3RhbmNlLmEgPSA0MjsKKysgIGQyX2luc3RhbmNlLmQgPSA0MzsKKyt9CistLS0gc3JjL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL2Rlcml2YXRpb24uY2MJMjAxMy8wMS8wMSAwNjozMzoyNwkxLjUK KysrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZGVyaXZhdGlvbi5jYwkyMDEzLzA2LzA1IDIy OjI4OjUxCTEuNgorQEAgLTE2LDYgKzE2LDggQEAKKyAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAgICAqLwor IAorK2V4dGVybiB2b2lkIGZvbzIgKCk7IC8qIGZyb20gZGVyaXZhdGlvbjIuY2MgKi8KKysKKyBu YW1lc3BhY2UgTiB7CisgICB0eXBlZGVmIGRvdWJsZSB2YWx1ZV90eXBlOworICAgc3RydWN0IEJh c2UgeyB0eXBlZGVmIGludCB2YWx1ZV90eXBlOyB9OworQEAgLTMwNiw5ICszMDgsNyBAQAorICAg ICBOOjpEZXJpdmVkOjp2YWx1ZV90eXBlIGQgPSAxOworICAgICBOOjp2YWx1ZV90eXBlIG4gPSAz LjA7CisgICAgIGRvYmouZG9pdCAoKTsKKysgICAgZm9vMiAoKTsKKyAgICAgcmV0dXJuIDA7Cisg ICAgIAorIH0KKy0KKy0gICAgCistICAgIAorLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9k ZXJpdmF0aW9uLmV4cAkyMDEzLzAxLzAxIDA2OjMzOjI3CTEuMjQKKysrKyBzcmMvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvZGVyaXZhdGlvbi5leHAJMjAxMy8wNi8wNSAyMjoyODo1MQkxLjI1CitAQCAt MzIsMTQgKzMyLDE1IEBACisgCisgbG9hZF9saWIgImNwLXN1cHBvcnQuZXhwIgorIAorLXN0YW5k YXJkX3Rlc3RmaWxlIC5jYworK3N0YW5kYXJkX3Rlc3RmaWxlIGRlcml2YXRpb24uY2MgZGVyaXZh dGlvbjIuY2MKKyAKKy1pZiB7W3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHRlc3RmaWxlLmV4cCAkdGVz dGZpbGUgJHNyY2ZpbGUge2RlYnVnIGMrK31dfSB7CisraWYge1twcmVwYXJlX2Zvcl90ZXN0aW5n ICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxlIFwKKysJW2xpc3QgJHNyY2ZpbGUgJHNyY2ZpbGUyXSB7 ZGVidWcgYysrfV19IHsKKyAgICAgcmV0dXJuIC0xCisgfQorIAorICMgQ2hlY2sgaW5oZXJpdGFu Y2Ugb2YgdHlwZWRlZnMuCistZm9yZWFjaCBrbGFzcyB7IkEiICJEIiAiRSIgIkYifSB7CisrZm9y ZWFjaCBrbGFzcyB7IkEiICJEIiAiRSIgIkYiICJBMiIgIkQyIn0geworICAgICBnZGJfdGVzdCAi cHR5cGUgJHtrbGFzc306OnZhbHVlX3R5cGUiICJ0eXBlID0gaW50IgorICAgICBnZGJfdGVzdCAi d2hhdGlzICR7a2xhc3N9Ojp2YWx1ZV90eXBlIiAidHlwZSA9IGludCIKKyAgICAgZ2RiX3Rlc3Qg InAgKCR7a2xhc3N9Ojp2YWx1ZV90eXBlKSAwIiAiID0gMCIKK0BAIC01Nyw2ICs1OCwxMyBAQAor ICAgICBjb250aW51ZQorIH0KKyAKKysjIENoZWNrIGluaGVyaXRhbmNlIG9mIHR5cGVkZWZzIGFn YWluLCBidXQgdGhpcyB0aW1lIHdpdGggYW4gYWN0aXZlIGJsb2NrLgorK2ZvcmVhY2gga2xhc3Mg eyJBIiAiRCIgIkEyIiAiRDIifSB7CisrICAgIGdkYl90ZXN0ICJwdHlwZSAke2tsYXNzfTo6dmFs dWVfdHlwZSIgInR5cGUgPSBpbnQiCisrICAgIGdkYl90ZXN0ICJ3aGF0aXMgJHtrbGFzc306OnZh bHVlX3R5cGUiICJ0eXBlID0gaW50IgorKyAgICBnZGJfdGVzdCAicCAoJHtrbGFzc306OnZhbHVl X3R5cGUpIDAiICIgPSAwIgorK30KKysKKyBnZGJfdGVzdCAidXAiICIuKm1haW4uKiIgInVwIGZy b20gbWFya2VyMSIKKyAKKyAjIFByaW50IGNsYXNzIHR5cGVzIGFuZCB2YWx1ZXMuCgpkaWZmIC0t Z2l0IGEvZ2RiLWN4eC1wZXJmb3JtYW5jZS0yb2YyLnBhdGNoIGIvZ2RiLWN4eC1wZXJmb3JtYW5j ZS0yb2YyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNTY5OGQK LS0tIC9kZXYvbnVsbAorKysgYi9nZGItY3h4LXBlcmZvcm1hbmNlLTJvZjIucGF0Y2gKQEAgLTAs MCArMSw1OCBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMy0wNi9tc2cw MDA0NC5odG1sCisKKyMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMy8wNi8wNiAx OTowMDoxMwkxLjM2ODgKKyMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMy8wNi8w NiAxOTowMjoyNgkxLjM2ODkKKyMjIC0xLDMgKzEsNyBAQAorKzIwMTMtMDYtMDYgIERvdWcgRXZh bnMgIDxkamVAZ29vZ2xlLmNvbT4KKysKKysJKiBnZGIuY3AvZGVyaXZhdGlvbi5leHA6IE1ha2Ug dGVzdHMgaGF2ZSB1bmlxdWUgbmFtZXMuCisrCisgMjAxMy0wNi0wNiAgVG9tIFRyb21leSAgPHRy b21leUByZWRoYXQuY29tPgorIAorIAkqIGdkYi5iYXNlL2R1bXAuZXhwIChjYXB0dXJlX3ZhbHVl KTogRG9uJ3QgcHV0IGV4cHJlc3Npb24gaW50bworLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5j cC9kZXJpdmF0aW9uLmV4cAkyMDEzLzA2LzA1IDIyOjI4OjUxCTEuMjUKKysrKyBzcmMvZ2RiL3Rl c3RzdWl0ZS9nZGIuY3AvZGVyaXZhdGlvbi5leHAJMjAxMy8wNi8wNiAxOTowMjoyNwkxLjI2CitA QCAtNDAsMTUgKzQwLDE3IEBACisgfQorIAorICMgQ2hlY2sgaW5oZXJpdGFuY2Ugb2YgdHlwZWRl ZnMuCistZm9yZWFjaCBrbGFzcyB7IkEiICJEIiAiRSIgIkYiICJBMiIgIkQyIn0geworLSAgICBn ZGJfdGVzdCAicHR5cGUgJHtrbGFzc306OnZhbHVlX3R5cGUiICJ0eXBlID0gaW50IgorLSAgICBn ZGJfdGVzdCAid2hhdGlzICR7a2xhc3N9Ojp2YWx1ZV90eXBlIiAidHlwZSA9IGludCIKKy0gICAg Z2RiX3Rlc3QgInAgKCR7a2xhc3N9Ojp2YWx1ZV90eXBlKSAwIiAiID0gMCIKKy19CistZm9yZWFj aCBrbGFzcyB7IloiICJaWiJ9IHsKKy0gICAgZ2RiX3Rlc3QgInB0eXBlICR7a2xhc3N9Ojp2YWx1 ZV90eXBlIiAidHlwZSA9IGZsb2F0IgorLSAgICBnZGJfdGVzdCAid2hhdGlzICR7a2xhc3N9Ojp2 YWx1ZV90eXBlIiAidHlwZSA9IGZsb2F0IgorLSAgICBnZGJfdGVzdCAicCAoJHtrbGFzc306OnZh bHVlX3R5cGUpIDAiICIgPSAwIgorK3dpdGhfdGVzdF9wcmVmaXggImJlZm9yZSBydW4iIHsKKysg ICAgZm9yZWFjaCBrbGFzcyB7IkEiICJEIiAiRSIgIkYiICJBMiIgIkQyIn0geworKwlnZGJfdGVz dCAicHR5cGUgJHtrbGFzc306OnZhbHVlX3R5cGUiICJ0eXBlID0gaW50IgorKwlnZGJfdGVzdCAi d2hhdGlzICR7a2xhc3N9Ojp2YWx1ZV90eXBlIiAidHlwZSA9IGludCIKKysJZ2RiX3Rlc3QgInAg KCR7a2xhc3N9Ojp2YWx1ZV90eXBlKSAwIiAiID0gMCIKKysgICAgfQorKyAgICBmb3JlYWNoIGts YXNzIHsiWiIgIlpaIn0geworKwlnZGJfdGVzdCAicHR5cGUgJHtrbGFzc306OnZhbHVlX3R5cGUi ICJ0eXBlID0gZmxvYXQiCisrCWdkYl90ZXN0ICJ3aGF0aXMgJHtrbGFzc306OnZhbHVlX3R5cGUi ICJ0eXBlID0gZmxvYXQiCisrCWdkYl90ZXN0ICJwICgke2tsYXNzfTo6dmFsdWVfdHlwZSkgMCIg IiA9IDAiCisrICAgIH0KKyB9CisgCisgIyBTZXQgaXQgdXAgYXQgYSBicmVha3BvaW50IHNvIHdl IGNhbiBwbGF5IHdpdGggdGhlIHZhcmlhYmxlIHZhbHVlcy4KK0BAIC01OSwxMCArNjEsMTIgQEAK KyB9CisgCisgIyBDaGVjayBpbmhlcml0YW5jZSBvZiB0eXBlZGVmcyBhZ2FpbiwgYnV0IHRoaXMg dGltZSB3aXRoIGFuIGFjdGl2ZSBibG9jay4KKy1mb3JlYWNoIGtsYXNzIHsiQSIgIkQiICJBMiIg IkQyIn0geworLSAgICBnZGJfdGVzdCAicHR5cGUgJHtrbGFzc306OnZhbHVlX3R5cGUiICJ0eXBl ID0gaW50IgorLSAgICBnZGJfdGVzdCAid2hhdGlzICR7a2xhc3N9Ojp2YWx1ZV90eXBlIiAidHlw ZSA9IGludCIKKy0gICAgZ2RiX3Rlc3QgInAgKCR7a2xhc3N9Ojp2YWx1ZV90eXBlKSAwIiAiID0g MCIKKyt3aXRoX3Rlc3RfcHJlZml4ICJhdCBtYXJrZXIxIiB7CisrICAgIGZvcmVhY2gga2xhc3Mg eyJBIiAiRCIgIkEyIiAiRDIifSB7CisrCWdkYl90ZXN0ICJwdHlwZSAke2tsYXNzfTo6dmFsdWVf dHlwZSIgInR5cGUgPSBpbnQiCisrCWdkYl90ZXN0ICJ3aGF0aXMgJHtrbGFzc306OnZhbHVlX3R5 cGUiICJ0eXBlID0gaW50IgorKwlnZGJfdGVzdCAicCAoJHtrbGFzc306OnZhbHVlX3R5cGUpIDAi ICIgPSAwIgorKyAgICB9CisgfQorIAorIGdkYl90ZXN0ICJ1cCIgIi4qbWFpbi4qIiAidXAgZnJv bSBtYXJrZXIxIgoKZGlmZiAtLWdpdCBhL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS0xb2Y3LnBhdGNo IGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTFvZjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGNiNzQ4MDIuLjAwMDAwMDAKLS0tIGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTFv ZjcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdh cmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTMtMDUvbXNnMDA2MjUuaHRtbAotU3ViamVjdDogW1JG QSAxLzddIFByb2JlcyBBUEkgY29udmVuaWVuY2UgcGF0Y2gKLQotCi0tLXV1S1Z6QW1CK2MrelFs aHUKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQotQ29udGVudC1E aXNwb3NpdGlvbjogaW5saW5lCi0KLVRoaXMgcGF0Y2ggZXhwb3NlcyBwYXJ0IG9mIHRoZSBwcm9i ZXMgQVBJIGluIGEgbW9yZSBjb252ZW5pZW50Ci13YXkuICBJJ3ZlIGluY2x1ZGVkIGl0IGZvciBj b21wbGV0ZW5lc3MsIGJ1dCBpdCBoYXMgcHJldmlvdXNseQotYmVlbiBhcHByb3ZlZDoKLQotICBo dHRwOi8vd3d3LmN5Z3dpbi5jb20vbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNy9tc2cwMDM0MC5odG1s Ci0KLS0tdXVLVnpBbUIrYyt6UWxodQotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0 PXVzLWFzY2lpCi1Db250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0icnRs ZC1wcm9iZXMtMS1jb252ZW5pZW5jZS5wYXRjaCIKLQotMjAxMy0wNS0xNiAgR2FyeSBCZW5zb24g IDxnYmVuc29uQHJlZGhhdC5jb20+Ci0KLQkqIHByb2JlLmggKGdldF9wcm9iZV9hcmd1bWVudF9j b3VudCk6IE5ldyBkZWNsYXJhdGlvbi4KLQkoZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQpOiBMaWtl d2lzZS4KLQkqIHByb2JlLmMgKGdldF9wcm9iZV9hcmd1bWVudF9jb3VudCk6IE5ldyBmdW5jdGlv bi4KLQkoZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQpOiBMaWtld2lzZS4KLQkocHJvYmVfc2FmZV9l dmFsdWF0ZV9hdF9wYyk6IFVzZSB0aGUgYWJvdmUgbmV3IGZ1bmN0aW9ucy4KLQotZGlmZiAtLWdp dCBhL2dkYi9wcm9iZS5oIGIvZ2RiL3Byb2JlLmgKLWluZGV4IDhkNDRjYTIuLjFkMjliODcgMTAw NjQ0Ci0tLS0gYS9nZGIvcHJvYmUuaAotKysrIGIvZ2RiL3Byb2JlLmgKLUBAIC0yMTQsNiArMjE0 LDE2IEBAIGV4dGVybiB2b2lkIGluZm9fcHJvYmVzX2Zvcl9vcHMgKGNoYXIgKmFyZywgaW50IGZy b21fdHR5LAotIAotIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmluZm9fcHJvYmVz X2NtZGxpc3RfZ2V0ICh2b2lkKTsKLSAKLSsvKiBSZXR1cm4gdGhlIGFyZ3VtZW50IGNvdW50IG9m IHRoZSBzcGVjaWZpZWQgcHJvYmUuICAqLwotKwotK2V4dGVybiB1bnNpZ25lZCBnZXRfcHJvYmVf YXJndW1lbnRfY291bnQgKHN0cnVjdCBwcm9iZSAqcHJvYmUpOwotKwotKy8qIEV2YWx1YXRlIGFy Z3VtZW50IE4gb2YgdGhlIHNwZWNpZmllZCBwcm9iZS4gIE4gbXVzdCBiZSBiZXR3ZWVuIDAKLSsg ICBpbmNsdXNpdmUgYW5kIGdldF9wcm9iZV9hcmd1bWVudF9jb3VudCBleGNsdXNpdmUuICAqLwot KwotK2V4dGVybiBzdHJ1Y3QgdmFsdWUgKmV2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChzdHJ1Y3Qg cHJvYmUgKnByb2JlLAotKwkJCQkJICAgICAgdW5zaWduZWQgbik7Ci0rCi0gLyogQSBjb252ZW5p ZW5jZSBmdW5jdGlvbiB0aGF0IGZpbmRzIGEgcHJvYmUgYXQgdGhlIFBDIGluIEZSQU1FIGFuZAot ICAgIGV2YWx1YXRlcyBhcmd1bWVudCBOLCB3aXRoIDAgPD0gTiA8IG51bWJlcl9vZl9hcmdzLiAg SWYgdGhlcmUgaXMgbm8KLSAgICBwcm9iZSBhdCB0aGF0IGxvY2F0aW9uLCBvciBpZiB0aGUgcHJv YmUgZG9lcyBub3QgaGF2ZSBlbm91Z2ggYXJndW1lbnRzLAotZGlmZiAtLWdpdCBhL2dkYi9wcm9i ZS5jIGIvZ2RiL3Byb2JlLmMKLWluZGV4IDc3ZjNiMTMuLmE2MWY0ZWEgMTAwNjQ0Ci0tLS0gYS9n ZGIvcHJvYmUuYwotKysrIGIvZ2RiL3Byb2JlLmMKLUBAIC02MDgsMjggKzYwOCw1NSBAQCBpbmZv X3Byb2Jlc19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKLSAKLSAvKiBTZWUgY29t bWVudHMgaW4gcHJvYmUuaC4gICovCi0gCi0rdW5zaWduZWQKLStnZXRfcHJvYmVfYXJndW1lbnRf Y291bnQgKHN0cnVjdCBwcm9iZSAqcHJvYmUpCi0rewotKyAgY29uc3Qgc3RydWN0IHN5bV9wcm9i ZV9mbnMgKnByb2JlX2ZuczsKLSsKLSsgIGdkYl9hc3NlcnQgKHByb2JlLT5vYmpmaWxlICE9IE5V TEwpOwotKyAgZ2RiX2Fzc2VydCAocHJvYmUtPm9iamZpbGUtPnNmICE9IE5VTEwpOwotKwotKyAg cHJvYmVfZm5zID0gcHJvYmUtPm9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zOwotKwotKyAgZ2Ri X2Fzc2VydCAocHJvYmVfZm5zICE9IE5VTEwpOwotKwotKyAgcmV0dXJuIHByb2JlX2Zucy0+c3lt X2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAocHJvYmUpOwotK30KLSsKLSsvKiBTZWUgY29tbWVu dHMgaW4gcHJvYmUuaC4gICovCi0rCi0rc3RydWN0IHZhbHVlICoKLStldmFsdWF0ZV9wcm9iZV9h cmd1bWVudCAoc3RydWN0IHByb2JlICpwcm9iZSwgdW5zaWduZWQgbikKLSt7Ci0rICBjb25zdCBz dHJ1Y3Qgc3ltX3Byb2JlX2ZucyAqcHJvYmVfZm5zOwotKwotKyAgZ2RiX2Fzc2VydCAocHJvYmUt Pm9iamZpbGUgIT0gTlVMTCk7Ci0rICBnZGJfYXNzZXJ0IChwcm9iZS0+b2JqZmlsZS0+c2YgIT0g TlVMTCk7Ci0rCi0rICBwcm9iZV9mbnMgPSBwcm9iZS0+b2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9m bnM7Ci0rCi0rICBnZGJfYXNzZXJ0IChwcm9iZV9mbnMgIT0gTlVMTCk7Ci0rCi0rICByZXR1cm4g cHJvYmVfZm5zLT5zeW1fZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQgKHByb2JlLCBuKTsKLSt9Ci0r Ci0rLyogU2VlIGNvbW1lbnRzIGluIHByb2JlLmguICAqLwotKwotIHN0cnVjdCB2YWx1ZSAqCi0g cHJvYmVfc2FmZV9ldmFsdWF0ZV9hdF9wYyAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCB1bnNp Z25lZCBuKQotIHsKLSAgIHN0cnVjdCBwcm9iZSAqcHJvYmU7Ci0tICBjb25zdCBzdHJ1Y3Qgc3lt X3Byb2JlX2ZucyAqcHJvYmVfZm5zOwotICAgdW5zaWduZWQgbl9hcmdzOwotIAotICAgcHJvYmUg PSBmaW5kX3Byb2JlX2J5X3BjIChnZXRfZnJhbWVfcGMgKGZyYW1lKSk7Ci0gICBpZiAoIXByb2Jl KQotICAgICByZXR1cm4gTlVMTDsKLSAKLS0gIGdkYl9hc3NlcnQgKHByb2JlLT5vYmpmaWxlICE9 IE5VTEwpOwotLSAgZ2RiX2Fzc2VydCAocHJvYmUtPm9iamZpbGUtPnNmICE9IE5VTEwpOwotLSAg Z2RiX2Fzc2VydCAocHJvYmUtPm9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zICE9IE5VTEwpOwot LQotLSAgcHJvYmVfZm5zID0gcHJvYmUtPm9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zOwotLSAg bl9hcmdzID0gcHJvYmVfZm5zLT5zeW1fZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChwcm9iZSk7 Ci0tCi0rICBuX2FyZ3MgPSBnZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKHByb2JlKTsKLSAgIGlm IChuID49IG5fYXJncykKLSAgICAgcmV0dXJuIE5VTEw7Ci0gCi0tICByZXR1cm4gcHJvYmVfZm5z LT5zeW1fZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQgKHByb2JlLCBuKTsKLSsgIHJldHVybiBldmFs dWF0ZV9wcm9iZV9hcmd1bWVudCAocHJvYmUsIG4pOwotIH0KLSAKLSAvKiBTZWUgY29tbWVudCBp biBwcm9iZS5oLiAgKi8KLQotLS11dUtWekFtQitjK3pRbGh1LS0KLQoKZGlmZiAtLWdpdCBhL2dk Yi1kbG9wZW4tc3RhcC1wcm9iZS0xb2Y5LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTFv ZjkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQxOWRjOQotLS0g L2Rldi9udWxsCisrKyBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS0xb2Y5LnBhdGNoCkBAIC0wLDAg KzEsMTAyIEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEzLTA2L21zZzAw MDEyLmh0bWwKKworIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTMvMDYvMDQgMDI6NDQ6MzQJMS4x NTY4MAorIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTMvMDYvMDQgMTI6NTA6MjAJMS4xNTY4MQor IyMgLTEsMyArMSwxMSBAQAorKzIwMTMtMDYtMDQgIEdhcnkgQmVuc29uICA8Z2JlbnNvbkByZWRo YXQuY29tPgorKworKwkqIHByb2JlLmggKGdldF9wcm9iZV9hcmd1bWVudF9jb3VudCk6IE5ldyBk ZWNsYXJhdGlvbi4KKysJKGV2YWx1YXRlX3Byb2JlX2FyZ3VtZW50KTogTGlrZXdpc2UuCisrCSog cHJvYmUuYyAoZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50KTogTmV3IGZ1bmN0aW9uLgorKwkoZXZh bHVhdGVfcHJvYmVfYXJndW1lbnQpOiBMaWtld2lzZS4KKysJKHByb2JlX3NhZmVfZXZhbHVhdGVf YXRfcGMpOiBVc2UgdGhlIGFib3ZlIG5ldyBmdW5jdGlvbnMuCisrCisgMjAxMy0wNi0wNCAgQWxh biBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+CisgCisgCSogcHBjLXRkZXAuaCAocHBjX2luc25z X21hdGNoX3BhdHRlcm4pOiBVcGRhdGUgcHJvdG90eXBlLgorLS0tIHNyYy9nZGIvcHJvYmUuYwky MDEzLzA1LzMwIDE3OjM5OjM0CTEuOAorKysrIHNyYy9nZGIvcHJvYmUuYwkyMDEzLzA2LzA0IDEy OjUwOjIwCTEuOQorQEAgLTYxMSwyOCArNjExLDU1IEBACisgCisgLyogU2VlIGNvbW1lbnRzIGlu IHByb2JlLmguICAqLworIAorK3Vuc2lnbmVkCisrZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChz dHJ1Y3QgcHJvYmUgKnByb2JlKQorK3sKKysgIGNvbnN0IHN0cnVjdCBzeW1fcHJvYmVfZm5zICpw cm9iZV9mbnM7CisrCisrICBnZGJfYXNzZXJ0IChwcm9iZS0+b2JqZmlsZSAhPSBOVUxMKTsKKysg IGdkYl9hc3NlcnQgKHByb2JlLT5vYmpmaWxlLT5zZiAhPSBOVUxMKTsKKysKKysgIHByb2JlX2Zu cyA9IHByb2JlLT5vYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZuczsKKysKKysgIGdkYl9hc3NlcnQg KHByb2JlX2ZucyAhPSBOVUxMKTsKKysKKysgIHJldHVybiBwcm9iZV9mbnMtPnN5bV9nZXRfcHJv YmVfYXJndW1lbnRfY291bnQgKHByb2JlKTsKKyt9CisrCisrLyogU2VlIGNvbW1lbnRzIGluIHBy b2JlLmguICAqLworKworK3N0cnVjdCB2YWx1ZSAqCisrZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQg KHN0cnVjdCBwcm9iZSAqcHJvYmUsIHVuc2lnbmVkIG4pCisreworKyAgY29uc3Qgc3RydWN0IHN5 bV9wcm9iZV9mbnMgKnByb2JlX2ZuczsKKysKKysgIGdkYl9hc3NlcnQgKHByb2JlLT5vYmpmaWxl ICE9IE5VTEwpOworKyAgZ2RiX2Fzc2VydCAocHJvYmUtPm9iamZpbGUtPnNmICE9IE5VTEwpOwor KworKyAgcHJvYmVfZm5zID0gcHJvYmUtPm9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zOworKwor KyAgZ2RiX2Fzc2VydCAocHJvYmVfZm5zICE9IE5VTEwpOworKworKyAgcmV0dXJuIHByb2JlX2Zu cy0+c3ltX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChwcm9iZSwgbik7CisrfQorKworKy8qIFNl ZSBjb21tZW50cyBpbiBwcm9iZS5oLiAgKi8KKysKKyBzdHJ1Y3QgdmFsdWUgKgorIHByb2JlX3Nh ZmVfZXZhbHVhdGVfYXRfcGMgKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgdW5zaWduZWQgbikK KyB7CisgICBzdHJ1Y3QgcHJvYmUgKnByb2JlOworLSAgY29uc3Qgc3RydWN0IHN5bV9wcm9iZV9m bnMgKnByb2JlX2ZuczsKKyAgIHVuc2lnbmVkIG5fYXJnczsKKyAKKyAgIHByb2JlID0gZmluZF9w cm9iZV9ieV9wYyAoZ2V0X2ZyYW1lX3BjIChmcmFtZSkpOworICAgaWYgKCFwcm9iZSkKKyAgICAg cmV0dXJuIE5VTEw7CisgCistICBnZGJfYXNzZXJ0IChwcm9iZS0+b2JqZmlsZSAhPSBOVUxMKTsK Ky0gIGdkYl9hc3NlcnQgKHByb2JlLT5vYmpmaWxlLT5zZiAhPSBOVUxMKTsKKy0gIGdkYl9hc3Nl cnQgKHByb2JlLT5vYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZucyAhPSBOVUxMKTsKKy0KKy0gIHBy b2JlX2ZucyA9IHByb2JlLT5vYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZuczsKKy0gIG5fYXJncyA9 IHByb2JlX2Zucy0+c3ltX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAocHJvYmUpOworLQorKyAg bl9hcmdzID0gZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChwcm9iZSk7CisgICBpZiAobiA+PSBu X2FyZ3MpCisgICAgIHJldHVybiBOVUxMOworIAorLSAgcmV0dXJuIHByb2JlX2Zucy0+c3ltX2V2 YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChwcm9iZSwgbik7CisrICByZXR1cm4gZXZhbHVhdGVfcHJv YmVfYXJndW1lbnQgKHByb2JlLCBuKTsKKyB9CisgCisgLyogU2VlIGNvbW1lbnQgaW4gcHJvYmUu aC4gICovCistLS0gc3JjL2dkYi9wcm9iZS5oCTIwMTMvMDEvMDEgMDY6MzI6NDkJMS40CisrKysg c3JjL2dkYi9wcm9iZS5oCTIwMTMvMDYvMDQgMTI6NTA6MjEJMS41CitAQCAtMjE0LDYgKzIxNCwx NiBAQAorIAorIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmluZm9fcHJvYmVzX2Nt ZGxpc3RfZ2V0ICh2b2lkKTsKKyAKKysvKiBSZXR1cm4gdGhlIGFyZ3VtZW50IGNvdW50IG9mIHRo ZSBzcGVjaWZpZWQgcHJvYmUuICAqLworKworK2V4dGVybiB1bnNpZ25lZCBnZXRfcHJvYmVfYXJn dW1lbnRfY291bnQgKHN0cnVjdCBwcm9iZSAqcHJvYmUpOworKworKy8qIEV2YWx1YXRlIGFyZ3Vt ZW50IE4gb2YgdGhlIHNwZWNpZmllZCBwcm9iZS4gIE4gbXVzdCBiZSBiZXR3ZWVuIDAKKysgICBp bmNsdXNpdmUgYW5kIGdldF9wcm9iZV9hcmd1bWVudF9jb3VudCBleGNsdXNpdmUuICAqLworKwor K2V4dGVybiBzdHJ1Y3QgdmFsdWUgKmV2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChzdHJ1Y3QgcHJv YmUgKnByb2JlLAorKwkJCQkJICAgICAgdW5zaWduZWQgbik7CisrCisgLyogQSBjb252ZW5pZW5j ZSBmdW5jdGlvbiB0aGF0IGZpbmRzIGEgcHJvYmUgYXQgdGhlIFBDIGluIEZSQU1FIGFuZAorICAg IGV2YWx1YXRlcyBhcmd1bWVudCBOLCB3aXRoIDAgPD0gTiA8IG51bWJlcl9vZl9hcmdzLiAgSWYg dGhlcmUgaXMgbm8KKyAgICBwcm9iZSBhdCB0aGF0IGxvY2F0aW9uLCBvciBpZiB0aGUgcHJvYmUg ZG9lcyBub3QgaGF2ZSBlbm91Z2ggYXJndW1lbnRzLAoKZGlmZiAtLWdpdCBhL2dkYi1kbG9wZW4t c3RhcC1wcm9iZS0yb2Y3LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTJvZjcucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2MDZjZWMuLjAwMDAwMDAKLS0tIGEvZ2Ri LWRsb3Blbi1zdGFwLXByb2JlLTJvZjcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOTggKzAs MCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTMtMDUvbXNnMDA2 MjcuaHRtbAotU3ViamVjdDogW1JGQSAyLzddIEFQSSBmb3IgaW5oaWJpdGluZyBzZWN0aW9uIG1h cCB1cGRhdGVzCi0KLQotLS1iUGc5TmRwTTlFRVR4dnF0Ci1Db250ZW50LVR5cGU6IHRleHQvcGxh aW47IGNoYXJzZXQ9dXMtYXNjaWkKLUNvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZQotCi1UaGlz IHBhdGNoIGFkZHMgYSBjb3VwbGUgb2YgZnVuY3Rpb25zIHRvIGFsbG93IHNlY3Rpb24gbWFwIHVw ZGF0ZXMKLXRvIGJlIHRlbXBvcmFyaWx5IGluaGliaXRlZC4gIFdpdGhvdXQgdGhpcyBhYmlsaXR5 LCB0aGUgY2FsbHMgdG8KLWV2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IGluIHN2cjRfaGFuZGxlX3Nv bGliX2V2ZW50IHRyaWdnZXIgYSBzZWN0aW9uCi1tYXAgdXBkYXRlIGV2ZXJ5IHRpbWUgYSBncm91 cCBvZiBzaGFyZWQgb2JqZWN0cyBhcmUgbWFwcGVkLCB3aGljaAotc2lnbmlmaWNhbnRseSBhZmZl Y3RzIHBlcmZvcm1hbmNlLiAgVGhlIHVwZGF0ZXMgYXJlIHVubmVjZXNzYXJ5IGluCi10aGlzIGNh c2UgYXMgdGhlIHNlY3Rpb25zIGluIHF1ZXN0aW9uIGFyZSBpbiB0aGUgcnVudGltZSBsaW5rZXIg YW5kCi1zbyBhbHJlYWR5IGluIHRoZSBzZWN0aW9uIG1hcC4KLQotLS1iUGc5TmRwTTlFRVR4dnF0 Ci1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWkKLUNvbnRlbnQtRGlz cG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSJydGxkLXByb2Jlcy0yLWluaGliaXQtc20t dXBkYXRlcy5wYXRjaCIKLQotMjAxMy0wNS0xNiAgR2FyeSBCZW5zb24gIDxnYmVuc29uQHJlZGhh dC5jb20+Ci0KLQkqIG9iamZpbGVzLmggKGluaGliaXRfc2VjdGlvbl9tYXBfdXBkYXRlcyk6IE5l dyBmdW5jdGlvbgotCWRlY2xhcmF0aW9uLgotCShyZXN1bWVfc2VjdGlvbl9tYXBfdXBkYXRlcyk6 IExpa2V3aXNlLgotCShyZXN1bWVfc2VjdGlvbl9tYXBfdXBkYXRlc19jbGVhbnVwKTogTGlrZXdp c2UuCi0JKiBvYmpmaWxlcy5jIChvYmpmaWxlX3BzcGFjZV9pbmZvKTogUmVtb3ZlZCBmaWVsZAot CSJvYmpmaWxlc19jaGFuZ2VkX3AiLiAgTmV3IGZpZWxkcyAibmV3X29iamZpbGVzX2F2YWlsYWJs ZSIsCi0JInNlY3Rpb25fbWFwX2RpcnR5IiBhbmQgImluaGliaXRfdXBkYXRlcyIuCi0JKGFsbG9j YXRlX29iamZpbGUpOiBTZXQgbmV3X29iamZpbGVzX2F2YWlsYWJsZS4KLQkoZnJlZV9vYmpmaWxl KTogU2V0IHNlY3Rpb25fbWFwX2RpcnR5LgotCShvYmpmaWxlX3JlbG9jYXRlMSk6IExpa2V3aXNl LgotCShpbl9wbHRfc2VjdGlvbik6IExpa2V3aXNlLgotCShmaW5kX3BjX3NlY3Rpb24pOiBVcGRh dGUgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhlCi0Jc2VjdGlvbiBtYXAgd2lsbCBiZSB1 cGRhdGVkLgotCShpbmhpYml0X3NlY3Rpb25fbWFwX3VwZGF0ZXMpOiBOZXcgZnVuY3Rpb24uCi0J KHJlc3VtZV9zZWN0aW9uX21hcF91cGRhdGVzKTogTGlrZXdpc2UuCi0JKHJlc3VtZV9zZWN0aW9u X21hcF91cGRhdGVzX2NsZWFudXApOiBMaWtld2lzZS4KLQotZGlmZiAtLWdpdCBhL2dkYi9vYmpm aWxlcy5oIGIvZ2RiL29iamZpbGVzLmgKLWluZGV4IDkzMTQ5ZTIuLjBiN2VlYTkgMTAwNjQ0Ci0t LS0gYS9nZGIvb2JqZmlsZXMuaAotKysrIGIvZ2RiL29iamZpbGVzLmgKLUBAIC01MDEsNiArNTAx LDIyIEBAIGV4dGVybiBpbnQgaW5fcGx0X3NlY3Rpb24gKENPUkVfQUREUiwgY2hhciAqKTsKLSAg ICBtb2R1bGVzLiAgKi8KLSBERUNMQVJFX1JFR0lTVFJZKG9iamZpbGUpOwotIAotKy8qIEluIG5v cm1hbCB1c2UsIHRoZSBzZWN0aW9uIG1hcCB3aWxsIGJlIHJlYnVpbHQgYnkgRklORF9QQ19TRUNU SU9OCi0rICAgaWYgb2JqZmlsZXMgaGF2ZSBiZWVuIGFkZGVkLCByZW1vdmVkIG9yIHJlbG9jYXRl ZCBzaW5jZSBpdCB3YXMgbGFzdAotKyAgIGNhbGxlZC4gIENhbGxpbmcgSU5ISUJJVF9TRUNUSU9O X01BUF9VUERBVEVTIHdpbGwgaW5oaWJpdCB0aGlzCi0rICAgYmVoYXZpb3IgdW50aWwgUkVTVU1F X1NFQ1RJT05fTUFQX1VQREFURVMgaXMgY2FsbGVkLiAgSWYgeW91IGNhbGwKLSsgICBJTkhJQklU X1NFQ1RJT05fTUFQX1VQREFURVMgeW91IG11c3QgZW5zdXJlIHRoYXQgZXZlcnkgY2FsbCB0bwot KyAgIEZJTkRfUENfU0VDVElPTiBpbiB0aGUgaW5oaWJpdGVkIHJlZ2lvbiByZWxhdGVzIHRvIGEg c2VjdGlvbiB0aGF0Ci0rICAgaXMgYWxyZWFkeSBpbiB0aGUgc2VjdGlvbiBtYXAgYW5kIGhhcyBu b3Qgc2luY2UgYmVlbiByZW1vdmVkIG9yCi0rICAgcmVsb2NhdGVkLiAgKi8KLStleHRlcm4gdm9p ZCBpbmhpYml0X3NlY3Rpb25fbWFwX3VwZGF0ZXMgKHZvaWQpOwotKwotKy8qIFJlc3VtZSBhdXRv bWF0aWNhbGx5IHJlYnVpbGRpbmcgdGhlIHNlY3Rpb24gbWFwIGFzIHJlcXVpcmVkLiAgKi8KLStl eHRlcm4gdm9pZCByZXN1bWVfc2VjdGlvbl9tYXBfdXBkYXRlcyAodm9pZCk7Ci0rCi0rLyogVmVy c2lvbiBvZiB0aGUgYWJvdmUgc3VpdGFibGUgZm9yIHVzZSBhcyBhIGNsZWFudXAuICAqLwotK2V4 dGVybiB2b2lkIHJlc3VtZV9zZWN0aW9uX21hcF91cGRhdGVzX2NsZWFudXAgKHZvaWQgKmFyZyk7 Ci0rCi0gZXh0ZXJuIHZvaWQgZGVmYXVsdF9pdGVyYXRlX292ZXJfb2JqZmlsZXNfaW5fc2VhcmNo X29yZGVyCi0gICAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gICAgaXRlcmF0ZV9vdmVyX29i amZpbGVzX2luX3NlYXJjaF9vcmRlcl9jYl9mdHlwZSAqY2IsCi1kaWZmIC0tZ2l0IGEvZ2RiL29i amZpbGVzLmMgYi9nZGIvb2JqZmlsZXMuYwotaW5kZXggM2U0OWVhMi4uM2FmMTA2NCAxMDA2NDQK LS0tLSBhL2dkYi9vYmpmaWxlcy5jCi0rKysgYi9nZGIvb2JqZmlsZXMuYwotQEAgLTY3LDkgKzY3 LDE4IEBAIHN0cnVjdCBvYmpmaWxlICpydF9jb21tb25fb2JqZmlsZTsJLyogRm9yIHJ1bnRpbWUg Y29tbW9uIHN5bWJvbHMgKi8KLSAKLSBzdHJ1Y3Qgb2JqZmlsZV9wc3BhY2VfaW5mbwotIHsKLS0g IGludCBvYmpmaWxlc19jaGFuZ2VkX3A7Ci0gICBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKipzZWN0aW9u czsKLSAgIGludCBudW1fc2VjdGlvbnM7Ci0rCi0rICAvKiBOb256ZXJvIGlmIG9iamVjdCBmaWxl cyBoYXZlIGJlZW4gYWRkZWQgc2luY2UgdGhlIHNlY3Rpb24gbWFwCi0rICAgICB3YXMgbGFzdCB1 cGRhdGVkLiAgKi8KLSsgIGludCBuZXdfb2JqZmlsZXNfYXZhaWxhYmxlOwotKwotKyAgLyogTm9u emVybyBpZiB0aGUgc2VjdGlvbiBtYXAgTVVTVCBiZSB1cGRhdGVkIGJlZm9yZSB1c2UuICAqLwot KyAgaW50IHNlY3Rpb25fbWFwX2RpcnR5OwotKwotKyAgLyogTm9uemVybyBpZiBzZWN0aW9uIG1h cCB1cGRhdGVzIHNob3VsZCBiZSBpbmhpYml0ZWQgaWYgcG9zc2libGUuICAqLwotKyAgaW50IGlu aGliaXRfdXBkYXRlczsKLSB9OwotIAotIC8qIFBlci1wcm9ncmFtLXNwYWNlIGRhdGEga2V5LiAg Ki8KLUBAIC0zMTcsNyArMzI2LDcgQEAgYWxsb2NhdGVfb2JqZmlsZSAoYmZkICphYmZkLCBpbnQg ZmxhZ3MpCi0gICBvYmpmaWxlLT5mbGFncyB8PSBmbGFnczsKLSAKLSAgIC8qIFJlYnVpbGQgc2Vj dGlvbiBtYXAgbmV4dCB0aW1lIHdlIG5lZWQgaXQuICAqLwotLSAgZ2V0X29iamZpbGVfcHNwYWNl X2RhdGEgKG9iamZpbGUtPnBzcGFjZSktPm9iamZpbGVzX2NoYW5nZWRfcCA9IDE7Ci0rICBnZXRf b2JqZmlsZV9wc3BhY2VfZGF0YSAob2JqZmlsZS0+cHNwYWNlKS0+bmV3X29iamZpbGVzX2F2YWls YWJsZSA9IDE7Ci0gCi0gICByZXR1cm4gb2JqZmlsZTsKLSB9Ci1AQCAtNjQ2LDcgKzY1NSw3IEBA IGZyZWVfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gICBvYnN0YWNrX2ZyZWUg KCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIDApOwotIAotICAgLyogUmVidWlsZCBzZWN0aW9u IG1hcCBuZXh0IHRpbWUgd2UgbmVlZCBpdC4gICovCi0tICBnZXRfb2JqZmlsZV9wc3BhY2VfZGF0 YSAob2JqZmlsZS0+cHNwYWNlKS0+b2JqZmlsZXNfY2hhbmdlZF9wID0gMTsKLSsgIGdldF9vYmpm aWxlX3BzcGFjZV9kYXRhIChvYmpmaWxlLT5wc3BhY2UpLT5zZWN0aW9uX21hcF9kaXJ0eSA9IDE7 Ci0gCi0gICB4ZnJlZSAob2JqZmlsZSk7Ci0gfQotQEAgLTgyNiw3ICs4MzUsNyBAQCBvYmpmaWxl X3JlbG9jYXRlMSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0gICB9Ci0gCi0gICAvKiBSZWJ1 aWxkIHNlY3Rpb24gbWFwIG5leHQgdGltZSB3ZSBuZWVkIGl0LiAgKi8KLS0gIGdldF9vYmpmaWxl X3BzcGFjZV9kYXRhIChvYmpmaWxlLT5wc3BhY2UpLT5vYmpmaWxlc19jaGFuZ2VkX3AgPSAxOwot KyAgZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKG9iamZpbGUtPnBzcGFjZSktPnNlY3Rpb25fbWFw X2RpcnR5ID0gMTsKLSAKLSAgIC8qIFVwZGF0ZSB0aGUgdGFibGUgaW4gZXhlY19vcHMsIHVzZWQg dG8gcmVhZCBtZW1vcnkuICAqLwotICAgQUxMX09CSkZJTEVfT1NFQ1RJT05TIChvYmpmaWxlLCBz KQotQEAgLTEyOTEsMTEgKzEzMDAsMTQgQEAgc3RhdGljIHZvaWQKLSB1cGRhdGVfc2VjdGlvbl9t YXAgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UsCi0gCQkgICAgc3RydWN0IG9ial9zZWN0 aW9uICoqKnBtYXAsIGludCAqcG1hcF9zaXplKQotIHsKLSsgIHN0cnVjdCBvYmpmaWxlX3BzcGFj ZV9pbmZvICpwc3BhY2VfaW5mbzsKLSAgIGludCBhbGxvY19zaXplLCBtYXBfc2l6ZSwgaTsKLSAg IHN0cnVjdCBvYmpfc2VjdGlvbiAqcywgKiptYXA7Ci0gICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZTsKLSAKLS0gIGdkYl9hc3NlcnQgKGdldF9vYmpmaWxlX3BzcGFjZV9kYXRhIChwc3BhY2UpLT5v YmpmaWxlc19jaGFuZ2VkX3AgIT0gMCk7Ci0rICBwc3BhY2VfaW5mbyA9IGdldF9vYmpmaWxlX3Bz cGFjZV9kYXRhIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOwotKyAgZ2RiX2Fzc2VydCAocHNwYWNl X2luZm8tPnNlY3Rpb25fbWFwX2RpcnR5ICE9IDAKLSsJICAgICAgfHwgcHNwYWNlX2luZm8tPm5l d19vYmpmaWxlc19hdmFpbGFibGUgIT0gMCk7Ci0gCi0gICBtYXAgPSAqcG1hcDsKLSAgIHhmcmVl IChtYXApOwotQEAgLTEzNjUsNyArMTM3Nyw5IEBAIGZpbmRfcGNfc2VjdGlvbiAoQ09SRV9BRERS IHBjKQotICAgICByZXR1cm4gczsKLSAKLSAgIHBzcGFjZV9pbmZvID0gZ2V0X29iamZpbGVfcHNw YWNlX2RhdGEgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7Ci0tICBpZiAocHNwYWNlX2luZm8tPm9i amZpbGVzX2NoYW5nZWRfcCAhPSAwKQotKyAgaWYgKHBzcGFjZV9pbmZvLT5zZWN0aW9uX21hcF9k aXJ0eQotKyAgICAgIHx8IChwc3BhY2VfaW5mby0+bmV3X29iamZpbGVzX2F2YWlsYWJsZQotKwkg ICYmICFwc3BhY2VfaW5mby0+aW5oaWJpdF91cGRhdGVzKSkKLSAgICAgewotICAgICAgIHVwZGF0 ZV9zZWN0aW9uX21hcCAoY3VycmVudF9wcm9ncmFtX3NwYWNlLAotIAkJCSAgJnBzcGFjZV9pbmZv LT5zZWN0aW9ucywKLUBAIC0xMzczLDcgKzEzODcsOCBAQCBmaW5kX3BjX3NlY3Rpb24gKENPUkVf QUREUiBwYykKLSAKLSAgICAgICAvKiBEb24ndCBuZWVkIHVwZGF0ZXMgdG8gc2VjdGlvbiBtYXAg dW50aWwgb2JqZmlsZXMgYXJlIGFkZGVkLAotICAgICAgICAgIHJlbW92ZWQgb3IgcmVsb2NhdGVk LiAgKi8KLS0gICAgICBwc3BhY2VfaW5mby0+b2JqZmlsZXNfY2hhbmdlZF9wID0gMDsKLSsgICAg ICBwc3BhY2VfaW5mby0+bmV3X29iamZpbGVzX2F2YWlsYWJsZSA9IDA7Ci0rICAgICAgcHNwYWNl X2luZm8tPnNlY3Rpb25fbWFwX2RpcnR5ID0gMDsKLSAgICAgfQotIAotICAgLyogVGhlIEMgc3Rh bmRhcmQgKElTTy9JRUMgOTg5OTpUQzIpIHJlcXVpcmVzIHRoZSBCQVNFIGFyZ3VtZW50IHRvCi1A QCAtMTQxNCwxNCArMTQyOSwzOCBAQCBpbl9wbHRfc2VjdGlvbiAoQ09SRV9BRERSIHBjLCBjaGFy ICpuYW1lKQotIH0KLSAMCi0gCi0tLyogU2V0IG9iamZpbGVzX2NoYW5nZWRfcCBzbyBzZWN0aW9u IG1hcCB3aWxsIGJlIHJlYnVpbHQgbmV4dCB0aW1lIGl0Ci0rLyogU2V0IHNlY3Rpb25fbWFwX2Rp cnR5IHNvIHNlY3Rpb24gbWFwIHdpbGwgYmUgcmVidWlsdCBuZXh0IHRpbWUgaXQKLSAgICBpcyB1 c2VkLiAgQ2FsbGVkIGJ5IHJlcmVhZF9zeW1ib2xzLiAgKi8KLSAKLSB2b2lkCi0gb2JqZmlsZXNf Y2hhbmdlZCAodm9pZCkKLSB7Ci0gICAvKiBSZWJ1aWxkIHNlY3Rpb24gbWFwIG5leHQgdGltZSB3 ZSBuZWVkIGl0LiAgKi8KLS0gIGdldF9vYmpmaWxlX3BzcGFjZV9kYXRhIChjdXJyZW50X3Byb2dy YW1fc3BhY2UpLT5vYmpmaWxlc19jaGFuZ2VkX3AgPSAxOwotKyAgZ2V0X29iamZpbGVfcHNwYWNl X2RhdGEgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSktPnNlY3Rpb25fbWFwX2RpcnR5ID0gMTsKLSt9 Ci0rCi0rLyogU2VlIGNvbW1lbnRzIGluIG9iamZpbGVzLmguICAqLwotKwotK3ZvaWQKLStpbmhp Yml0X3NlY3Rpb25fbWFwX3VwZGF0ZXMgKHZvaWQpCi0rewotKyAgZ2V0X29iamZpbGVfcHNwYWNl X2RhdGEgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSktPmluaGliaXRfdXBkYXRlcyA9IDE7Ci0rfQot KwotKy8qIFNlZSBjb21tZW50cyBpbiBvYmpmaWxlcy5oLiAgKi8KLSsKLSt2b2lkCi0rcmVzdW1l X3NlY3Rpb25fbWFwX3VwZGF0ZXMgKHZvaWQpCi0rewotKyAgZ2V0X29iamZpbGVfcHNwYWNlX2Rh dGEgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSktPmluaGliaXRfdXBkYXRlcyA9IDA7Ci0rfQotKwot Ky8qIFNlZSBjb21tZW50cyBpbiBvYmpmaWxlcy5oLiAgKi8KLSsKLSt2b2lkCi0rcmVzdW1lX3Nl Y3Rpb25fbWFwX3VwZGF0ZXNfY2xlYW51cCAodm9pZCAqYXJnKQotK3sKLSsgIHJlc3VtZV9zZWN0 aW9uX21hcF91cGRhdGVzICgpOwotIH0KLSAKLSAvKiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlv biBmb3IgdGhlICJpdGVyYXRlX292ZXJfb2JqZmlsZXNfaW5fc2VhcmNoX29yZGVyIgotCi0tLWJQ ZzlOZHBNOUVFVHh2cXQtLQotCgpkaWZmIC0tZ2l0IGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTJv ZjkucGF0Y2ggYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUtMm9mOS5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzFhNzlhCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWRs b3Blbi1zdGFwLXByb2JlLTJvZjkucGF0Y2gKQEAgLTAsMCArMSwxODEgQEAKK2h0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDYvbXNnMDAwMTMuaHRtbAorCisjIyMgc3JjL2dk Yi9DaGFuZ2VMb2cJMjAxMy8wNi8wNCAxMjo1MDoyMAkxLjE1NjgxCisjIyMgc3JjL2dkYi9DaGFu Z2VMb2cJMjAxMy8wNi8wNCAxMjo1MzozMwkxLjE1NjgyCisjIyAtMSw1ICsxLDI0IEBACisgMjAx My0wNi0wNCAgR2FyeSBCZW5zb24gIDxnYmVuc29uQHJlZGhhdC5jb20+CisgCisrCSogb2JqZmls ZXMuaCAoaW5oaWJpdF9zZWN0aW9uX21hcF91cGRhdGVzKTogTmV3IGZ1bmN0aW9uCisrCWRlY2xh cmF0aW9uLgorKwkocmVzdW1lX3NlY3Rpb25fbWFwX3VwZGF0ZXMpOiBMaWtld2lzZS4KKysJKHJl c3VtZV9zZWN0aW9uX21hcF91cGRhdGVzX2NsZWFudXApOiBMaWtld2lzZS4KKysJKiBvYmpmaWxl cy5jIChvYmpmaWxlX3BzcGFjZV9pbmZvKTogUmVtb3ZlZCBmaWVsZAorKwkib2JqZmlsZXNfY2hh bmdlZF9wIi4gIE5ldyBmaWVsZHMgIm5ld19vYmpmaWxlc19hdmFpbGFibGUiLAorKwkic2VjdGlv bl9tYXBfZGlydHkiIGFuZCAiaW5oaWJpdF91cGRhdGVzIi4KKysJKGFsbG9jYXRlX29iamZpbGUp OiBTZXQgbmV3X29iamZpbGVzX2F2YWlsYWJsZS4KKysJKGZyZWVfb2JqZmlsZSk6IFNldCBzZWN0 aW9uX21hcF9kaXJ0eS4KKysJKG9iamZpbGVfcmVsb2NhdGUxKTogTGlrZXdpc2UuCisrCShpbl9w bHRfc2VjdGlvbik6IExpa2V3aXNlLgorKwkoZmluZF9wY19zZWN0aW9uKTogVXBkYXRlIHRoZSBj b25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZQorKwlzZWN0aW9uIG1hcCB3aWxsIGJlIHVwZGF0ZWQu CisrCShpbmhpYml0X3NlY3Rpb25fbWFwX3VwZGF0ZXMpOiBOZXcgZnVuY3Rpb24uCisrCShyZXN1 bWVfc2VjdGlvbl9tYXBfdXBkYXRlcyk6IExpa2V3aXNlLgorKwkocmVzdW1lX3NlY3Rpb25fbWFw X3VwZGF0ZXNfY2xlYW51cCk6IExpa2V3aXNlLgorKworKzIwMTMtMDYtMDQgIEdhcnkgQmVuc29u ICA8Z2JlbnNvbkByZWRoYXQuY29tPgorKworIAkqIHByb2JlLmggKGdldF9wcm9iZV9hcmd1bWVu dF9jb3VudCk6IE5ldyBkZWNsYXJhdGlvbi4KKyAJKGV2YWx1YXRlX3Byb2JlX2FyZ3VtZW50KTog TGlrZXdpc2UuCisgCSogcHJvYmUuYyAoZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50KTogTmV3IGZ1 bmN0aW9uLgorLS0tIHNyYy9nZGIvb2JqZmlsZXMuYwkyMDEzLzA1LzA2IDE5OjE1OjE3CTEuMTYw CisrKysgc3JjL2dkYi9vYmpmaWxlcy5jCTIwMTMvMDYvMDQgMTI6NTM6MzQJMS4xNjEKK0BAIC02 Nyw5ICs2NywxOCBAQAorIAorIHN0cnVjdCBvYmpmaWxlX3BzcGFjZV9pbmZvCisgeworLSAgaW50 IG9iamZpbGVzX2NoYW5nZWRfcDsKKyAgIHN0cnVjdCBvYmpfc2VjdGlvbiAqKnNlY3Rpb25zOwor ICAgaW50IG51bV9zZWN0aW9uczsKKysKKysgIC8qIE5vbnplcm8gaWYgb2JqZWN0IGZpbGVzIGhh dmUgYmVlbiBhZGRlZCBzaW5jZSB0aGUgc2VjdGlvbiBtYXAKKysgICAgIHdhcyBsYXN0IHVwZGF0 ZWQuICAqLworKyAgaW50IG5ld19vYmpmaWxlc19hdmFpbGFibGU7CisrCisrICAvKiBOb256ZXJv IGlmIHRoZSBzZWN0aW9uIG1hcCBNVVNUIGJlIHVwZGF0ZWQgYmVmb3JlIHVzZS4gICovCisrICBp bnQgc2VjdGlvbl9tYXBfZGlydHk7CisrCisrICAvKiBOb256ZXJvIGlmIHNlY3Rpb24gbWFwIHVw ZGF0ZXMgc2hvdWxkIGJlIGluaGliaXRlZCBpZiBwb3NzaWJsZS4gICovCisrICBpbnQgaW5oaWJp dF91cGRhdGVzOworIH07CisgCisgLyogUGVyLXByb2dyYW0tc3BhY2UgZGF0YSBrZXkuICAqLwor QEAgLTMxNyw3ICszMjYsNyBAQAorICAgb2JqZmlsZS0+ZmxhZ3MgfD0gZmxhZ3M7CisgCisgICAv KiBSZWJ1aWxkIHNlY3Rpb24gbWFwIG5leHQgdGltZSB3ZSBuZWVkIGl0LiAgKi8KKy0gIGdldF9v YmpmaWxlX3BzcGFjZV9kYXRhIChvYmpmaWxlLT5wc3BhY2UpLT5vYmpmaWxlc19jaGFuZ2VkX3Ag PSAxOworKyAgZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKG9iamZpbGUtPnBzcGFjZSktPm5ld19v YmpmaWxlc19hdmFpbGFibGUgPSAxOworIAorICAgcmV0dXJuIG9iamZpbGU7CisgfQorQEAgLTY0 Niw3ICs2NTUsNyBAQAorICAgb2JzdGFja19mcmVlICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNr LCAwKTsKKyAKKyAgIC8qIFJlYnVpbGQgc2VjdGlvbiBtYXAgbmV4dCB0aW1lIHdlIG5lZWQgaXQu ICAqLworLSAgZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKG9iamZpbGUtPnBzcGFjZSktPm9iamZp bGVzX2NoYW5nZWRfcCA9IDE7CisrICBnZXRfb2JqZmlsZV9wc3BhY2VfZGF0YSAob2JqZmlsZS0+ cHNwYWNlKS0+c2VjdGlvbl9tYXBfZGlydHkgPSAxOworIAorICAgeGZyZWUgKG9iamZpbGUpOwor IH0KK0BAIC04MjYsNyArODM1LDcgQEAKKyAgIH0KKyAKKyAgIC8qIFJlYnVpbGQgc2VjdGlvbiBt YXAgbmV4dCB0aW1lIHdlIG5lZWQgaXQuICAqLworLSAgZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEg KG9iamZpbGUtPnBzcGFjZSktPm9iamZpbGVzX2NoYW5nZWRfcCA9IDE7CisrICBnZXRfb2JqZmls ZV9wc3BhY2VfZGF0YSAob2JqZmlsZS0+cHNwYWNlKS0+c2VjdGlvbl9tYXBfZGlydHkgPSAxOwor IAorICAgLyogVXBkYXRlIHRoZSB0YWJsZSBpbiBleGVjX29wcywgdXNlZCB0byByZWFkIG1lbW9y eS4gICovCisgICBBTExfT0JKRklMRV9PU0VDVElPTlMgKG9iamZpbGUsIHMpCitAQCAtMTI5MSwx MSArMTMwMCwxNCBAQAorIHVwZGF0ZV9zZWN0aW9uX21hcCAoc3RydWN0IHByb2dyYW1fc3BhY2Ug KnBzcGFjZSwKKyAJCSAgICBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKioqcG1hcCwgaW50ICpwbWFwX3Np emUpCisgeworKyAgc3RydWN0IG9iamZpbGVfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOworICAg aW50IGFsbG9jX3NpemUsIG1hcF9zaXplLCBpOworICAgc3RydWN0IG9ial9zZWN0aW9uICpzLCAq Km1hcDsKKyAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOworIAorLSAgZ2RiX2Fzc2VydCAoZ2V0 X29iamZpbGVfcHNwYWNlX2RhdGEgKHBzcGFjZSktPm9iamZpbGVzX2NoYW5nZWRfcCAhPSAwKTsK KysgIHBzcGFjZV9pbmZvID0gZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKHBzcGFjZSk7CisrICBn ZGJfYXNzZXJ0IChwc3BhY2VfaW5mby0+c2VjdGlvbl9tYXBfZGlydHkgIT0gMAorKwkgICAgICB8 fCBwc3BhY2VfaW5mby0+bmV3X29iamZpbGVzX2F2YWlsYWJsZSAhPSAwKTsKKyAKKyAgIG1hcCA9 ICpwbWFwOworICAgeGZyZWUgKG1hcCk7CitAQCAtMTM2NSw3ICsxMzc3LDkgQEAKKyAgICAgcmV0 dXJuIHM7CisgCisgICBwc3BhY2VfaW5mbyA9IGdldF9vYmpmaWxlX3BzcGFjZV9kYXRhIChjdXJy ZW50X3Byb2dyYW1fc3BhY2UpOworLSAgaWYgKHBzcGFjZV9pbmZvLT5vYmpmaWxlc19jaGFuZ2Vk X3AgIT0gMCkKKysgIGlmIChwc3BhY2VfaW5mby0+c2VjdGlvbl9tYXBfZGlydHkKKysgICAgICB8 fCAocHNwYWNlX2luZm8tPm5ld19vYmpmaWxlc19hdmFpbGFibGUKKysJICAmJiAhcHNwYWNlX2lu Zm8tPmluaGliaXRfdXBkYXRlcykpCisgICAgIHsKKyAgICAgICB1cGRhdGVfc2VjdGlvbl9tYXAg KGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSwKKyAJCQkgICZwc3BhY2VfaW5mby0+c2VjdGlvbnMsCitA QCAtMTM3Myw3ICsxMzg3LDggQEAKKyAKKyAgICAgICAvKiBEb24ndCBuZWVkIHVwZGF0ZXMgdG8g c2VjdGlvbiBtYXAgdW50aWwgb2JqZmlsZXMgYXJlIGFkZGVkLAorICAgICAgICAgIHJlbW92ZWQg b3IgcmVsb2NhdGVkLiAgKi8KKy0gICAgICBwc3BhY2VfaW5mby0+b2JqZmlsZXNfY2hhbmdlZF9w ID0gMDsKKysgICAgICBwc3BhY2VfaW5mby0+bmV3X29iamZpbGVzX2F2YWlsYWJsZSA9IDA7Cisr ICAgICAgcHNwYWNlX2luZm8tPnNlY3Rpb25fbWFwX2RpcnR5ID0gMDsKKyAgICAgfQorIAorICAg LyogVGhlIEMgc3RhbmRhcmQgKElTTy9JRUMgOTg5OTpUQzIpIHJlcXVpcmVzIHRoZSBCQVNFIGFy Z3VtZW50IHRvCitAQCAtMTQxNCwxNCArMTQyOSwzOCBAQAorIH0KKyAMCisgCistLyogU2V0IG9i amZpbGVzX2NoYW5nZWRfcCBzbyBzZWN0aW9uIG1hcCB3aWxsIGJlIHJlYnVpbHQgbmV4dCB0aW1l IGl0CisrLyogU2V0IHNlY3Rpb25fbWFwX2RpcnR5IHNvIHNlY3Rpb24gbWFwIHdpbGwgYmUgcmVi dWlsdCBuZXh0IHRpbWUgaXQKKyAgICBpcyB1c2VkLiAgQ2FsbGVkIGJ5IHJlcmVhZF9zeW1ib2xz LiAgKi8KKyAKKyB2b2lkCisgb2JqZmlsZXNfY2hhbmdlZCAodm9pZCkKKyB7CisgICAvKiBSZWJ1 aWxkIHNlY3Rpb24gbWFwIG5leHQgdGltZSB3ZSBuZWVkIGl0LiAgKi8KKy0gIGdldF9vYmpmaWxl X3BzcGFjZV9kYXRhIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpLT5vYmpmaWxlc19jaGFuZ2VkX3Ag PSAxOworKyAgZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSkt PnNlY3Rpb25fbWFwX2RpcnR5ID0gMTsKKyt9CisrCisrLyogU2VlIGNvbW1lbnRzIGluIG9iamZp bGVzLmguICAqLworKworK3ZvaWQKKytpbmhpYml0X3NlY3Rpb25fbWFwX3VwZGF0ZXMgKHN0cnVj dCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpCisreworKyAgZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEg KHBzcGFjZSktPmluaGliaXRfdXBkYXRlcyA9IDE7CisrfQorKworKy8qIFNlZSBjb21tZW50cyBp biBvYmpmaWxlcy5oLiAgKi8KKysKKyt2b2lkCisrcmVzdW1lX3NlY3Rpb25fbWFwX3VwZGF0ZXMg KHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpCisreworKyAgZ2V0X29iamZpbGVfcHNwYWNl X2RhdGEgKHBzcGFjZSktPmluaGliaXRfdXBkYXRlcyA9IDA7CisrfQorKworKy8qIFNlZSBjb21t ZW50cyBpbiBvYmpmaWxlcy5oLiAgKi8KKysKKyt2b2lkCisrcmVzdW1lX3NlY3Rpb25fbWFwX3Vw ZGF0ZXNfY2xlYW51cCAodm9pZCAqYXJnKQorK3sKKysgIHJlc3VtZV9zZWN0aW9uX21hcF91cGRh dGVzIChhcmcpOworIH0KKyAKKyAvKiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhl ICJpdGVyYXRlX292ZXJfb2JqZmlsZXNfaW5fc2VhcmNoX29yZGVyIgorLS0tIHNyYy9nZGIvb2Jq ZmlsZXMuaAkyMDEzLzA1LzA2IDE5OjE1OjE3CTEuMTA2CisrKysgc3JjL2dkYi9vYmpmaWxlcy5o CTIwMTMvMDYvMDQgMTI6NTM6MzQJMS4xMDcKK0BAIC01MDEsNiArNTAxLDIyIEBACisgICAgbW9k dWxlcy4gICovCisgREVDTEFSRV9SRUdJU1RSWShvYmpmaWxlKTsKKyAKKysvKiBJbiBub3JtYWwg dXNlLCB0aGUgc2VjdGlvbiBtYXAgd2lsbCBiZSByZWJ1aWx0IGJ5IGZpbmRfcGNfc2VjdGlvbgor KyAgIGlmIG9iamZpbGVzIGhhdmUgYmVlbiBhZGRlZCwgcmVtb3ZlZCBvciByZWxvY2F0ZWQgc2lu Y2UgaXQgd2FzIGxhc3QKKysgICBjYWxsZWQuICBDYWxsaW5nIGluaGliaXRfc2VjdGlvbl9tYXBf dXBkYXRlcyB3aWxsIGluaGliaXQgdGhpcworKyAgIGJlaGF2aW9yIHVudGlsIHJlc3VtZV9zZWN0 aW9uX21hcF91cGRhdGVzIGlzIGNhbGxlZC4gIElmIHlvdSBjYWxsCisrICAgaW5oaWJpdF9zZWN0 aW9uX21hcF91cGRhdGVzIHlvdSBtdXN0IGVuc3VyZSB0aGF0IGV2ZXJ5IGNhbGwgdG8KKysgICBm aW5kX3BjX3NlY3Rpb24gaW4gdGhlIGluaGliaXRlZCByZWdpb24gcmVsYXRlcyB0byBhIHNlY3Rp b24gdGhhdAorKyAgIGlzIGFscmVhZHkgaW4gdGhlIHNlY3Rpb24gbWFwIGFuZCBoYXMgbm90IHNp bmNlIGJlZW4gcmVtb3ZlZCBvcgorKyAgIHJlbG9jYXRlZC4gICovCisrZXh0ZXJuIHZvaWQgaW5o aWJpdF9zZWN0aW9uX21hcF91cGRhdGVzIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKTsK KysKKysvKiBSZXN1bWUgYXV0b21hdGljYWxseSByZWJ1aWxkaW5nIHRoZSBzZWN0aW9uIG1hcCBh cyByZXF1aXJlZC4gICovCisrZXh0ZXJuIHZvaWQgcmVzdW1lX3NlY3Rpb25fbWFwX3VwZGF0ZXMg KHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpOworKworKy8qIFZlcnNpb24gb2YgdGhlIGFi b3ZlIHN1aXRhYmxlIGZvciB1c2UgYXMgYSBjbGVhbnVwLiAgKi8KKytleHRlcm4gdm9pZCByZXN1 bWVfc2VjdGlvbl9tYXBfdXBkYXRlc19jbGVhbnVwICh2b2lkICphcmcpOworKworIGV4dGVybiB2 b2lkIGRlZmF1bHRfaXRlcmF0ZV9vdmVyX29iamZpbGVzX2luX3NlYXJjaF9vcmRlcgorICAgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorICAgIGl0ZXJhdGVfb3Zlcl9vYmpmaWxlc19pbl9zZWFy Y2hfb3JkZXJfY2JfZnR5cGUgKmNiLAoKZGlmZiAtLWdpdCBhL2dkYi1kbG9wZW4tc3RhcC1wcm9i ZS0zb2Y3LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTNvZjcucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzMjUxY2EuLjAwMDAwMDAKLS0tIGEvZ2RiLWRsb3Blbi1z dGFwLXByb2JlLTNvZjcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMTQgKzAsMCBAQAotaHR0 cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTMtMDUvbXNnMDA2MjYuaHRtbAot U3ViamVjdDogW1JGQSAzLzddIE5ldyBnZGJzZXJ2ZXIgZnVuY3Rpb25hbGl0eQotCi0KLS0tS2M5 SE5qcHpPWFZjN0ZGVQotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lp Ci1Db250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmUKLQotVGhpcyBwYXRjaCB1cGRhdGVzIGdkYnNl cnZlciB0byBhbGxvdyBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIGluIHRoZQotYW5uZXggb2YgcVhm ZXI6bGlicmFyaWVzLXN2cjQ6cmVhZCB0byBhbGxvdyB0aGF0IGZ1bmN0aW9uIHRvIHRyYW5zZmVy Ci1wYXJ0aWFsIGxpc3RzIG9mIGxpYnJhcmllcy4gIFRoZSBhYmlsaXR5IG9mIGdkYnNlcnZlciB0 byBzdXBwb3J0Ci10aGVzZSBhcmd1bWVudHMgaXMgaW5kaWNhdGVkIGJ5IGEgcVN1cHBvcnRlZCBy ZXNwb25zZSBjb250YWluaW5nCi0iYXVnbWVudGVkLWxpYnJhcmllcy1zdnI0LXJlYWQrIi4KLQot LS1LYzlITmpwek9YVmM3RkZVCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXMt YXNjaWkKLUNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSJydGxkLXBy b2Jlcy0zLWdkYnNlcnZlci5wYXRjaCIKLQotMjAxMy0wNS0xNiAgR2FyeSBCZW5zb24gIDxnYmVu c29uQHJlZGhhdC5jb20+Ci0KLQkqIHNlcnZlci5jIChoYW5kbGVfcXVlcnkpOiBBZGQgImF1Z21l bnRlZC1saWJyYXJpZXMtc3ZyNC1yZWFkKyIKLQl0byBxU3VwcG9ydGVkIHJlc3BvbnNlIHdoZW4g YXBwcm9wcmlhdGUuCi0JKGhhbmRsZV9xeGZlcl9saWJyYXJpZXNfc3ZyNCk6IEFsbG93IHFYZmVy OmxpYnJhcmllcy1zdnI0OnJlYWQKLQl3aXRoIG5vbnplcm8tbGVuZ3RoIGFubmV4LgotCSogbGlu dXgtbG93LmMgKGxpbnV4X3F4ZmVyX2xpYnJhcmllc19zdnI0KTogUGFyc2UgYW5kIGhhbmRsZQot CWFyZ3VtZW50cyBzdXBwbGllZCBpbiBhbm5leC4KLQotZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2 ZXIvc2VydmVyLmMgYi9nZGIvZ2Ric2VydmVyL3NlcnZlci5jCi1pbmRleCA2YmIzNmQ4Li4wYThm NjhiIDEwMDY0NAotLS0tIGEvZ2RiL2dkYnNlcnZlci9zZXJ2ZXIuYwotKysrIGIvZ2RiL2dkYnNl cnZlci9zZXJ2ZXIuYwotQEAgLTExMTUsOCArMTExNSw3IEBAIGhhbmRsZV9xeGZlcl9saWJyYXJp ZXNfc3ZyNCAoY29uc3QgY2hhciAqYW5uZXgsCi0gICBpZiAod3JpdGVidWYgIT0gTlVMTCkKLSAg ICAgcmV0dXJuIC0yOwotIAotLSAgaWYgKGFubmV4WzBdICE9ICdcMCcgfHwgIXRhcmdldF9ydW5u aW5nICgpCi0tICAgICAgfHwgdGhlX3RhcmdldC0+cXhmZXJfbGlicmFyaWVzX3N2cjQgPT0gTlVM TCkKLSsgIGlmICghdGFyZ2V0X3J1bm5pbmcgKCkgfHwgdGhlX3RhcmdldC0+cXhmZXJfbGlicmFy aWVzX3N2cjQgPT0gTlVMTCkKLSAgICAgcmV0dXJuIC0xOwotIAotICAgcmV0dXJuIHRoZV90YXJn ZXQtPnF4ZmVyX2xpYnJhcmllc19zdnI0IChhbm5leCwgcmVhZGJ1Ziwgd3JpdGVidWYsIG9mZnNl dCwgbGVuKTsKLUBAIC0xNzQzLDcgKzE3NDIsOCBAQCBoYW5kbGVfcXVlcnkgKGNoYXIgKm93bl9i dWYsIGludCBwYWNrZXRfbGVuLCBpbnQgKm5ld19wYWNrZXRfbGVuX3ApCi0gCSAgICAgICBQQlVG U0laIC0gMSk7Ci0gCi0gICAgICAgaWYgKHRoZV90YXJnZXQtPnF4ZmVyX2xpYnJhcmllc19zdnI0 ICE9IE5VTEwpCi0tCXN0cmNhdCAob3duX2J1ZiwgIjtxWGZlcjpsaWJyYXJpZXMtc3ZyNDpyZWFk KyIpOwotKwlzdHJjYXQgKG93bl9idWYsICI7cVhmZXI6bGlicmFyaWVzLXN2cjQ6cmVhZCsiCi0r CQkiO2F1Z21lbnRlZC1saWJyYXJpZXMtc3ZyNC1yZWFkKyIpOwotICAgICAgIGVsc2UKLSAJewot IAkgIC8qIFdlIGRvIG5vdCBoYXZlIGFueSBob29rIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIG5v bi1TVlI0IHRhcmdldAotZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMgYi9n ZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCi1pbmRleCA3MmM1MWUwLi5iZWIzYjhmIDEwMDY0NAot LS0tIGEvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwotKysrIGIvZ2RiL2dkYnNlcnZlci9saW51 eC1sb3cuYwotQEAgLTU2NzcsNiArNTY3NywxMiBAQCBsaW51eF9xeGZlcl9saWJyYXJpZXNfc3Zy NCAoY29uc3QgY2hhciAqYW5uZXgsIHVuc2lnbmVkIGNoYXIgKnJlYWRidWYsCi0gICAgIH07Ci0g ICBjb25zdCBzdHJ1Y3QgbGlua19tYXBfb2Zmc2V0cyAqbG1vOwotICAgdW5zaWduZWQgaW50IG1h Y2hpbmU7Ci0rICBpbnQgcHRyX3NpemU7Ci0rICBDT1JFX0FERFIgbG1fYWRkciA9IDAsIGxtX3By ZXYgPSAwOwotKyAgaW50IGFsbG9jYXRlZCA9IDEwMjQ7Ci0rICBjaGFyICpwOwotKyAgQ09SRV9B RERSIGxfbmFtZSwgbF9hZGRyLCBsX2xkLCBsX25leHQsIGxfcHJldjsKLSsgIGludCBoZWFkZXJf ZG9uZSA9IDA7Ci0gCi0gICBpZiAod3JpdGVidWYgIT0gTlVMTCkKLSAgICAgcmV0dXJuIC0yOwot QEAgLTU2ODcsMTI4ICs1NjkzLDE0NiBAQCBsaW51eF9xeGZlcl9saWJyYXJpZXNfc3ZyNCAoY29u c3QgY2hhciAqYW5uZXgsIHVuc2lnbmVkIGNoYXIgKnJlYWRidWYsCi0gICB4c25wcmludGYgKGZp bGVuYW1lLCBzaXplb2YgZmlsZW5hbWUsICIvcHJvYy8lZC9leGUiLCBwaWQpOwotICAgaXNfZWxm NjQgPSBlbGZfNjRfZmlsZV9wIChmaWxlbmFtZSwgJm1hY2hpbmUpOwotICAgbG1vID0gaXNfZWxm NjQgPyAmbG1vXzY0Yml0X29mZnNldHMgOiAmbG1vXzMyYml0X29mZnNldHM7Ci0rICBwdHJfc2l6 ZSA9IGlzX2VsZjY0ID8gOCA6IDQ7Ci0gCi0tICBpZiAocHJpdi0+cl9kZWJ1ZyA9PSAwKQotLSAg ICBwcml2LT5yX2RlYnVnID0gZ2V0X3JfZGVidWcgKHBpZCwgaXNfZWxmNjQpOwotKyAgaWYgKGFu bmV4WzBdID09ICdcMCcpCi0rICAgIHsKLSsgICAgICBpbnQgcl92ZXJzaW9uID0gMDsKLSAKLS0g IC8qIFdlIGZhaWxlZCB0byBmaW5kIERUX0RFQlVHLiAgU3VjaCBzaXR1YXRpb24gd2lsbCBub3Qg Y2hhbmdlIGZvciB0aGlzCi0tICAgICBpbmZlcmlvciAtIGRvIG5vdCByZXRyeSBpdC4gIFJlcG9y dCBpdCB0byBHREIgYXMgRTAxLCBzZWUgZm9yIHRoZSByZWFzb25zCi0tICAgICBhdCB0aGUgR0RC IHNvbGliLXN2cjQuYyBzaWRlLiAgKi8KLS0gIGlmIChwcml2LT5yX2RlYnVnID09IChDT1JFX0FE RFIpIC0xKQotLSAgICByZXR1cm4gLTE7Ci0rICAgICAgaWYgKHByaXYtPnJfZGVidWcgPT0gMCkK LSsJcHJpdi0+cl9kZWJ1ZyA9IGdldF9yX2RlYnVnIChwaWQsIGlzX2VsZjY0KTsKLSAKLS0gIGlm IChwcml2LT5yX2RlYnVnID09IDApCi0tICAgIHsKLS0gICAgICBkb2N1bWVudCA9IHhzdHJkdXAg KCI8bGlicmFyeS1saXN0LXN2cjQgdmVyc2lvbj1cIjEuMFwiLz5cbiIpOwotKyAgICAgIC8qIFdl IGZhaWxlZCB0byBmaW5kIERUX0RFQlVHLiAgU3VjaCBzaXR1YXRpb24gd2lsbCBub3QgY2hhbmdl Ci0rCSBmb3IgdGhpcyBpbmZlcmlvciAtIGRvIG5vdCByZXRyeSBpdC4gIFJlcG9ydCBpdCB0byBH REIgYXMKLSsJIEUwMSwgc2VlIGZvciB0aGUgcmVhc29ucyBhdCB0aGUgR0RCIHNvbGliLXN2cjQu YyBzaWRlLiAgKi8KLSsgICAgICBpZiAocHJpdi0+cl9kZWJ1ZyA9PSAoQ09SRV9BRERSKSAtMSkK LSsJcmV0dXJuIC0xOwotKwotKyAgICAgIGlmIChwcml2LT5yX2RlYnVnICE9IDApCi0rCXsKLSsJ ICBpZiAobGludXhfcmVhZF9tZW1vcnkgKHByaXYtPnJfZGVidWcgKyBsbW8tPnJfdmVyc2lvbl9v ZmZzZXQsCi0rCQkJCSAodW5zaWduZWQgY2hhciAqKSAmcl92ZXJzaW9uLAotKwkJCQkgc2l6ZW9m IChyX3ZlcnNpb24pKSAhPSAwCi0rCSAgICAgIHx8IHJfdmVyc2lvbiAhPSAxKQotKwkgICAgewot KwkgICAgICB3YXJuaW5nICgidW5leHBlY3RlZCByX2RlYnVnIHZlcnNpb24gJWQiLCByX3ZlcnNp b24pOwotKwkgICAgfQotKwkgIGVsc2UgaWYgKHJlYWRfb25lX3B0ciAocHJpdi0+cl9kZWJ1ZyAr IGxtby0+cl9tYXBfb2Zmc2V0LAotKwkJCQkgJmxtX2FkZHIsIHB0cl9zaXplKSAhPSAwKQotKwkg ICAgewotKwkgICAgICB3YXJuaW5nICgidW5hYmxlIHRvIHJlYWQgcl9tYXAgZnJvbSAweCVseCIs Ci0rCQkgICAgICAgKGxvbmcpIHByaXYtPnJfZGVidWcgKyBsbW8tPnJfbWFwX29mZnNldCk7Ci0r CSAgICB9Ci0rCX0KLSAgICAgfQotICAgZWxzZQotICAgICB7Ci0tICAgICAgaW50IGFsbG9jYXRl ZCA9IDEwMjQ7Ci0tICAgICAgY2hhciAqcDsKLS0gICAgICBjb25zdCBpbnQgcHRyX3NpemUgPSBp c19lbGY2NCA/IDggOiA0OwotLSAgICAgIENPUkVfQUREUiBsbV9hZGRyLCBsbV9wcmV2LCBsX25h bWUsIGxfYWRkciwgbF9sZCwgbF9uZXh0LCBsX3ByZXY7Ci0tICAgICAgaW50IHJfdmVyc2lvbiwg aGVhZGVyX2RvbmUgPSAwOwotLQotLSAgICAgIGRvY3VtZW50ID0geG1hbGxvYyAoYWxsb2NhdGVk KTsKLS0gICAgICBzdHJjcHkgKGRvY3VtZW50LCAiPGxpYnJhcnktbGlzdC1zdnI0IHZlcnNpb249 XCIxLjBcIiIpOwotLSAgICAgIHAgPSBkb2N1bWVudCArIHN0cmxlbiAoZG9jdW1lbnQpOwotLQot LSAgICAgIHJfdmVyc2lvbiA9IDA7Ci0tICAgICAgaWYgKGxpbnV4X3JlYWRfbWVtb3J5IChwcml2 LT5yX2RlYnVnICsgbG1vLT5yX3ZlcnNpb25fb2Zmc2V0LAotLQkJCSAgICAgKHVuc2lnbmVkIGNo YXIgKikgJnJfdmVyc2lvbiwKLS0JCQkgICAgIHNpemVvZiAocl92ZXJzaW9uKSkgIT0gMAotLQkg IHx8IHJfdmVyc2lvbiAhPSAxKQotKyAgICAgIHdoaWxlIChhbm5leFswXSAhPSAnXDAnKQotIAl7 Ci0tCSAgd2FybmluZyAoInVuZXhwZWN0ZWQgcl9kZWJ1ZyB2ZXJzaW9uICVkIiwgcl92ZXJzaW9u KTsKLS0JICBnb3RvIGRvbmU7Ci0rCSAgY29uc3QgY2hhciAqc2VwOwotKwkgIENPUkVfQUREUiAq YWRkcnA7Ci0rCSAgaW50IGxlbjsKLSsKLSsJICBzZXAgPSBzdHJjaHIgKGFubmV4LCAnPScpOwot KwkgIGlmICghc2VwKQotKwkgICAgYnJlYWs7Ci0rCi0rCSAgbGVuID0gc2VwIC0gYW5uZXg7Ci0r CSAgaWYgKGxlbiA9PSA1ICYmICFzdHJuY21wIChhbm5leCwgInN0YXJ0IiwgNSkpCi0rCSAgICBh ZGRycCA9ICZsbV9hZGRyOwotKwkgIGVsc2UgaWYgKGxlbiA9PSA0ICYmICFzdHJuY21wIChhbm5l eCwgInByZXYiLCA0KSkKLSsJICAgIGFkZHJwID0gJmxtX3ByZXY7Ci0rCSAgZWxzZQotKwkgICAg ewotKwkgICAgICBhbm5leCA9IHN0cmNociAoc2VwLCAnOycpOwotKwkgICAgICBpZiAoIWFubmV4 KQotKwkJYnJlYWs7Ci0rCSAgICAgIGFubmV4Kys7Ci0rCSAgICAgIGNvbnRpbnVlOwotKwkgICAg fQotKwotKwkgIGFubmV4ID0gZGVjb2RlX2FkZHJlc3NfdG9fc2VtaWNvbG9uIChhZGRycCwgc2Vw ICsgMSk7Ci0gCX0KLSsgICAgfQotIAotLSAgICAgIGlmIChyZWFkX29uZV9wdHIgKHByaXYtPnJf ZGVidWcgKyBsbW8tPnJfbWFwX29mZnNldCwKLS0JCQkmbG1fYWRkciwgcHRyX3NpemUpICE9IDAp Ci0rICBkb2N1bWVudCA9IHhtYWxsb2MgKGFsbG9jYXRlZCk7Ci0rICBzdHJjcHkgKGRvY3VtZW50 LCAiPGxpYnJhcnktbGlzdC1zdnI0IHZlcnNpb249XCIxLjBcIiIpOwotKyAgcCA9IGRvY3VtZW50 ICsgc3RybGVuIChkb2N1bWVudCk7Ci0rCi0rICB3aGlsZSAobG1fYWRkcgotKwkgJiYgcmVhZF9v bmVfcHRyIChsbV9hZGRyICsgbG1vLT5sX25hbWVfb2Zmc2V0LAotKwkJCSAgJmxfbmFtZSwgcHRy X3NpemUpID09IDAKLSsJICYmIHJlYWRfb25lX3B0ciAobG1fYWRkciArIGxtby0+bF9hZGRyX29m ZnNldCwKLSsJCQkgICZsX2FkZHIsIHB0cl9zaXplKSA9PSAwCi0rCSAmJiByZWFkX29uZV9wdHIg KGxtX2FkZHIgKyBsbW8tPmxfbGRfb2Zmc2V0LAotKwkJCSAgJmxfbGQsIHB0cl9zaXplKSA9PSAw Ci0rCSAmJiByZWFkX29uZV9wdHIgKGxtX2FkZHIgKyBsbW8tPmxfcHJldl9vZmZzZXQsCi0rCQkJ ICAmbF9wcmV2LCBwdHJfc2l6ZSkgPT0gMAotKwkgJiYgcmVhZF9vbmVfcHRyIChsbV9hZGRyICsg bG1vLT5sX25leHRfb2Zmc2V0LAotKwkJCSAgJmxfbmV4dCwgcHRyX3NpemUpID09IDApCi0rICAg IHsKLSsgICAgICB1bnNpZ25lZCBjaGFyIGxpYm5hbWVbUEFUSF9NQVhdOwotKwotKyAgICAgIGlm IChsbV9wcmV2ICE9IGxfcHJldikKLSAJewotLQkgIHdhcm5pbmcgKCJ1bmFibGUgdG8gcmVhZCBy X21hcCBmcm9tIDB4JWx4IiwKLS0JCSAgIChsb25nKSBwcml2LT5yX2RlYnVnICsgbG1vLT5yX21h cF9vZmZzZXQpOwotLQkgIGdvdG8gZG9uZTsKLSsJICB3YXJuaW5nICgiQ29ycnVwdGVkIHNoYXJl ZCBsaWJyYXJ5IGxpc3Q6IDB4JWx4ICE9IDB4JWx4IiwKLSsJCSAgIChsb25nKSBsbV9wcmV2LCAo bG9uZykgbF9wcmV2KTsKLSsJICBicmVhazsKLSAJfQotIAotLSAgICAgIGxtX3ByZXYgPSAwOwot LSAgICAgIHdoaWxlIChyZWFkX29uZV9wdHIgKGxtX2FkZHIgKyBsbW8tPmxfbmFtZV9vZmZzZXQs Ci0tCQkJICAgJmxfbmFtZSwgcHRyX3NpemUpID09IDAKLS0JICAgICAmJiByZWFkX29uZV9wdHIg KGxtX2FkZHIgKyBsbW8tPmxfYWRkcl9vZmZzZXQsCi0tCQkJICAgICAgJmxfYWRkciwgcHRyX3Np emUpID09IDAKLS0JICAgICAmJiByZWFkX29uZV9wdHIgKGxtX2FkZHIgKyBsbW8tPmxfbGRfb2Zm c2V0LAotLQkJCSAgICAgICZsX2xkLCBwdHJfc2l6ZSkgPT0gMAotLQkgICAgICYmIHJlYWRfb25l X3B0ciAobG1fYWRkciArIGxtby0+bF9wcmV2X29mZnNldCwKLS0JCQkgICAgICAmbF9wcmV2LCBw dHJfc2l6ZSkgPT0gMAotLQkgICAgICYmIHJlYWRfb25lX3B0ciAobG1fYWRkciArIGxtby0+bF9u ZXh0X29mZnNldCwKLS0JCQkgICAgICAmbF9uZXh0LCBwdHJfc2l6ZSkgPT0gMCkKLSsgICAgICAv KiBOb3QgY2hlY2tpbmcgZm9yIGVycm9yIGJlY2F1c2UgcmVhZGluZyBtYXkgc3RvcCBiZWZvcmUK LSsJIHdlJ3ZlIGdvdCBQQVRIX01BWCB3b3J0aCBvZiBjaGFyYWN0ZXJzLiAgKi8KLSsgICAgICBs aWJuYW1lWzBdID0gJ1wwJzsKLSsgICAgICBsaW51eF9yZWFkX21lbW9yeSAobF9uYW1lLCBsaWJu YW1lLCBzaXplb2YgKGxpYm5hbWUpIC0gMSk7Ci0rICAgICAgbGlibmFtZVtzaXplb2YgKGxpYm5h bWUpIC0gMV0gPSAnXDAnOwotKyAgICAgIGlmIChsaWJuYW1lWzBdICE9ICdcMCcpCi0gCXsKLS0J ICB1bnNpZ25lZCBjaGFyIGxpYm5hbWVbUEFUSF9NQVhdOwotKwkgIC8qIDZ4IHRoZSBzaXplIGZv ciB4bWxfZXNjYXBlX3RleHQgYmVsb3cuICAqLwotKwkgIHNpemVfdCBsZW4gPSA2ICogc3RybGVu ICgoY2hhciAqKSBsaWJuYW1lKTsKLSsJICBjaGFyICpuYW1lOwotIAotLQkgIGlmIChsbV9wcmV2 ICE9IGxfcHJldikKLSsJICBpZiAoIWhlYWRlcl9kb25lKQotIAkgICAgewotLQkgICAgICB3YXJu aW5nICgiQ29ycnVwdGVkIHNoYXJlZCBsaWJyYXJ5IGxpc3Q6IDB4JWx4ICE9IDB4JWx4IiwKLS0J CSAgICAgICAobG9uZykgbG1fcHJldiwgKGxvbmcpIGxfcHJldik7Ci0tCSAgICAgIGJyZWFrOwot KwkgICAgICAvKiBUZXJtaW5hdGUgYDxsaWJyYXJ5LWxpc3Qtc3ZyNCcuICAqLwotKwkgICAgICAq cCsrID0gJz4nOwotKwkgICAgICBoZWFkZXJfZG9uZSA9IDE7Ci0gCSAgICB9Ci0gCi0tCSAgLyog Tm90IGNoZWNraW5nIGZvciBlcnJvciBiZWNhdXNlIHJlYWRpbmcgbWF5IHN0b3AgYmVmb3JlCi0t CSAgICAgd2UndmUgZ290IFBBVEhfTUFYIHdvcnRoIG9mIGNoYXJhY3RlcnMuICAqLwotLQkgIGxp Ym5hbWVbMF0gPSAnXDAnOwotLQkgIGxpbnV4X3JlYWRfbWVtb3J5IChsX25hbWUsIGxpYm5hbWUs IHNpemVvZiAobGlibmFtZSkgLSAxKTsKLS0JICBsaWJuYW1lW3NpemVvZiAobGlibmFtZSkgLSAx XSA9ICdcMCc7Ci0tCSAgaWYgKGxpYm5hbWVbMF0gIT0gJ1wwJykKLSsJICB3aGlsZSAoYWxsb2Nh dGVkIDwgcCAtIGRvY3VtZW50ICsgbGVuICsgMjAwKQotIAkgICAgewotLQkgICAgICAvKiA2eCB0 aGUgc2l6ZSBmb3IgeG1sX2VzY2FwZV90ZXh0IGJlbG93LiAgKi8KLS0JICAgICAgc2l6ZV90IGxl biA9IDYgKiBzdHJsZW4gKChjaGFyICopIGxpYm5hbWUpOwotLQkgICAgICBjaGFyICpuYW1lOwot LQotLQkgICAgICBpZiAoIWhlYWRlcl9kb25lKQotLQkJewotLQkJICAvKiBUZXJtaW5hdGUgYDxs aWJyYXJ5LWxpc3Qtc3ZyNCcuICAqLwotLQkJICAqcCsrID0gJz4nOwotLQkJICBoZWFkZXJfZG9u ZSA9IDE7Ci0tCQl9Ci0tCi0tCSAgICAgIHdoaWxlIChhbGxvY2F0ZWQgPCBwIC0gZG9jdW1lbnQg KyBsZW4gKyAyMDApCi0tCQl7Ci0tCQkgIC8qIEV4cGFuZCB0byBndWFyYW50ZWUgc3VmZmljaWVu dCBzdG9yYWdlLiAgKi8KLS0JCSAgdWludHB0cl90IGRvY3VtZW50X2xlbiA9IHAgLSBkb2N1bWVu dDsKLS0KLS0JCSAgZG9jdW1lbnQgPSB4cmVhbGxvYyAoZG9jdW1lbnQsIDIgKiBhbGxvY2F0ZWQp OwotLQkJICBhbGxvY2F0ZWQgKj0gMjsKLS0JCSAgcCA9IGRvY3VtZW50ICsgZG9jdW1lbnRfbGVu OwotLQkJfQotKwkgICAgICAvKiBFeHBhbmQgdG8gZ3VhcmFudGVlIHN1ZmZpY2llbnQgc3RvcmFn ZS4gICovCi0rCSAgICAgIHVpbnRwdHJfdCBkb2N1bWVudF9sZW4gPSBwIC0gZG9jdW1lbnQ7Ci0g Ci0tCSAgICAgIG5hbWUgPSB4bWxfZXNjYXBlX3RleHQgKChjaGFyICopIGxpYm5hbWUpOwotLQkg ICAgICBwICs9IHNwcmludGYgKHAsICI8bGlicmFyeSBuYW1lPVwiJXNcIiBsbT1cIjB4JWx4XCIg IgotLQkJCSAgICAgICAibF9hZGRyPVwiMHglbHhcIiBsX2xkPVwiMHglbHhcIi8+IiwKLS0JCQkg ICAgbmFtZSwgKHVuc2lnbmVkIGxvbmcpIGxtX2FkZHIsCi0tCQkJICAgICh1bnNpZ25lZCBsb25n KSBsX2FkZHIsICh1bnNpZ25lZCBsb25nKSBsX2xkKTsKLS0JICAgICAgZnJlZSAobmFtZSk7Ci0t CSAgICB9Ci0tCSAgZWxzZSBpZiAobG1fcHJldiA9PSAwKQotLQkgICAgewotLQkgICAgICBzcHJp bnRmIChwLCAiIG1haW4tbG09XCIweCVseFwiIiwgKHVuc2lnbmVkIGxvbmcpIGxtX2FkZHIpOwot LQkgICAgICBwID0gcCArIHN0cmxlbiAocCk7Ci0rCSAgICAgIGRvY3VtZW50ID0geHJlYWxsb2Mg KGRvY3VtZW50LCAyICogYWxsb2NhdGVkKTsKLSsJICAgICAgYWxsb2NhdGVkICo9IDI7Ci0rCSAg ICAgIHAgPSBkb2N1bWVudCArIGRvY3VtZW50X2xlbjsKLSAJICAgIH0KLSAKLS0JICBpZiAobF9u ZXh0ID09IDApCi0tCSAgICBicmVhazsKLS0KLS0JICBsbV9wcmV2ID0gbG1fYWRkcjsKLS0JICBs bV9hZGRyID0gbF9uZXh0OwotKwkgIG5hbWUgPSB4bWxfZXNjYXBlX3RleHQgKChjaGFyICopIGxp Ym5hbWUpOwotKwkgIHAgKz0gc3ByaW50ZiAocCwgIjxsaWJyYXJ5IG5hbWU9XCIlc1wiIGxtPVwi MHglbHhcIiAiCi0rCQkJImxfYWRkcj1cIjB4JWx4XCIgbF9sZD1cIjB4JWx4XCIvPiIsCi0rCQkJ bmFtZSwgKHVuc2lnbmVkIGxvbmcpIGxtX2FkZHIsCi0rCQkJKHVuc2lnbmVkIGxvbmcpIGxfYWRk ciwgKHVuc2lnbmVkIGxvbmcpIGxfbGQpOwotKwkgIGZyZWUgKG5hbWUpOwotIAl9Ci0tICAgIGRv bmU6Ci0tICAgICAgaWYgKCFoZWFkZXJfZG9uZSkKLSsgICAgICBlbHNlIGlmIChsbV9wcmV2ID09 IDApCi0gCXsKLS0JICAvKiBFbXB0eSBsaXN0OyB0ZXJtaW5hdGUgYDxsaWJyYXJ5LWxpc3Qtc3Zy NCcuICAqLwotLQkgIHN0cmNweSAocCwgIi8+Iik7Ci0rCSAgc3ByaW50ZiAocCwgIiBtYWluLWxt PVwiMHglbHhcIiIsICh1bnNpZ25lZCBsb25nKSBsbV9hZGRyKTsKLSsJICBwID0gcCArIHN0cmxl biAocCk7Ci0gCX0KLS0gICAgICBlbHNlCi0tCXN0cmNweSAocCwgIjwvbGlicmFyeS1saXN0LXN2 cjQ+Iik7Ci0rCi0rICAgICAgbG1fcHJldiA9IGxtX2FkZHI7Ci0rICAgICAgbG1fYWRkciA9IGxf bmV4dDsKLSAgICAgfQotIAotKyAgaWYgKCFoZWFkZXJfZG9uZSkKLSsgICAgewotKyAgICAgIC8q IEVtcHR5IGxpc3Q7IHRlcm1pbmF0ZSBgPGxpYnJhcnktbGlzdC1zdnI0Jy4gICovCi0rICAgICAg c3RyY3B5IChwLCAiLz4iKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICBzdHJjcHkgKHAsICI8L2xp YnJhcnktbGlzdC1zdnI0PiIpOwotKwotICAgZG9jdW1lbnRfbGVuID0gc3RybGVuIChkb2N1bWVu dCk7Ci0gICBpZiAob2Zmc2V0IDwgZG9jdW1lbnRfbGVuKQotICAgICBkb2N1bWVudF9sZW4gLT0g b2Zmc2V0OwotCi0tLUtjOUhOanB6T1hWYzdGRlUtLQotCgpkaWZmIC0tZ2l0IGEvZ2RiLWRsb3Bl bi1zdGFwLXByb2JlLTNvZjkucGF0Y2ggYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUtM29mOS5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTFmNGJkCi0tLSAvZGV2L251 bGwKKysrIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTNvZjkucGF0Y2gKQEAgLTAsMCArMSwyOTgg QEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDYvbXNnMDAwMTQuaHRt bAorCisjIyMgc3JjL2dkYi9nZGJzZXJ2ZXIvQ2hhbmdlTG9nCTIwMTMvMDUvMzEgMTk6MTQ6MzMJ MS43MjAKKyMjIyBzcmMvZ2RiL2dkYnNlcnZlci9DaGFuZ2VMb2cJMjAxMy8wNi8wNCAxMjo1OToy MAkxLjcyMQorIyMgLTEsMyArMSwxMiBAQAorKzIwMTMtMDYtMDQgIEdhcnkgQmVuc29uICA8Z2Jl bnNvbkByZWRoYXQuY29tPgorKworKwkqIHNlcnZlci5jIChoYW5kbGVfcXVlcnkpOiBBZGQgImF1 Z21lbnRlZC1saWJyYXJpZXMtc3ZyNC1yZWFkKyIKKysJdG8gcVN1cHBvcnRlZCByZXNwb25zZSB3 aGVuIGFwcHJvcHJpYXRlLgorKwkoaGFuZGxlX3F4ZmVyX2xpYnJhcmllc19zdnI0KTogQWxsb3cg cVhmZXI6bGlicmFyaWVzLXN2cjQ6cmVhZAorKwl3aXRoIG5vbnplcm8tbGVuZ3RoIGFubmV4Lgor KwkqIGxpbnV4LWxvdy5jIChsaW51eF9xeGZlcl9saWJyYXJpZXNfc3ZyNCk6IFBhcnNlIGFuZCBo YW5kbGUKKysJYXJndW1lbnRzIHN1cHBsaWVkIGluIGFubmV4LgorKworIDIwMTMtMDUtMzEgIERv dWcgRXZhbnMgIDxkamVAZ29vZ2xlLmNvbT4KKyAKKyAJKiBsaW51eC14ODYtbG93LmMgKHBzX2dl dF90aHJlYWRfYXJlYSk6IFByb3Blcmx5IGV4dGVuZCBhZGRyZXNzIHRvCistLS0gc3JjL2dkYi9n ZGJzZXJ2ZXIvbGludXgtbG93LmMJMjAxMy8wNS8yMyAxNzoxNzo1MAkxLjIzNworKysrIHNyYy9n ZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCTIwMTMvMDYvMDQgMTI6NTk6MjEJMS4yMzgKK0BAIC01 NzI4LDYgKzU3MjgsMTIgQEAKKyAgICAgfTsKKyAgIGNvbnN0IHN0cnVjdCBsaW5rX21hcF9vZmZz ZXRzICpsbW87CisgICB1bnNpZ25lZCBpbnQgbWFjaGluZTsKKysgIGludCBwdHJfc2l6ZTsKKysg IENPUkVfQUREUiBsbV9hZGRyID0gMCwgbG1fcHJldiA9IDA7CisrICBpbnQgYWxsb2NhdGVkID0g MTAyNDsKKysgIGNoYXIgKnA7CisrICBDT1JFX0FERFIgbF9uYW1lLCBsX2FkZHIsIGxfbGQsIGxf bmV4dCwgbF9wcmV2OworKyAgaW50IGhlYWRlcl9kb25lID0gMDsKKyAKKyAgIGlmICh3cml0ZWJ1 ZiAhPSBOVUxMKQorICAgICByZXR1cm4gLTI7CitAQCAtNTczOCwxMjggKzU3NDQsMTQ0IEBACisg ICB4c25wcmludGYgKGZpbGVuYW1lLCBzaXplb2YgZmlsZW5hbWUsICIvcHJvYy8lZC9leGUiLCBw aWQpOworICAgaXNfZWxmNjQgPSBlbGZfNjRfZmlsZV9wIChmaWxlbmFtZSwgJm1hY2hpbmUpOwor ICAgbG1vID0gaXNfZWxmNjQgPyAmbG1vXzY0Yml0X29mZnNldHMgOiAmbG1vXzMyYml0X29mZnNl dHM7CisrICBwdHJfc2l6ZSA9IGlzX2VsZjY0ID8gOCA6IDQ7CisgCistICBpZiAocHJpdi0+cl9k ZWJ1ZyA9PSAwKQorLSAgICBwcml2LT5yX2RlYnVnID0gZ2V0X3JfZGVidWcgKHBpZCwgaXNfZWxm NjQpOworLQorLSAgLyogV2UgZmFpbGVkIHRvIGZpbmQgRFRfREVCVUcuICBTdWNoIHNpdHVhdGlv biB3aWxsIG5vdCBjaGFuZ2UgZm9yIHRoaXMKKy0gICAgIGluZmVyaW9yIC0gZG8gbm90IHJldHJ5 IGl0LiAgUmVwb3J0IGl0IHRvIEdEQiBhcyBFMDEsIHNlZSBmb3IgdGhlIHJlYXNvbnMKKy0gICAg IGF0IHRoZSBHREIgc29saWItc3ZyNC5jIHNpZGUuICAqLworLSAgaWYgKHByaXYtPnJfZGVidWcg PT0gKENPUkVfQUREUikgLTEpCistICAgIHJldHVybiAtMTsKKy0KKy0gIGlmIChwcml2LT5yX2Rl YnVnID09IDApCisrICB3aGlsZSAoYW5uZXhbMF0gIT0gJ1wwJykKKyAgICAgeworLSAgICAgIGRv Y3VtZW50ID0geHN0cmR1cCAoIjxsaWJyYXJ5LWxpc3Qtc3ZyNCB2ZXJzaW9uPVwiMS4wXCIvPlxu Iik7CisrICAgICAgY29uc3QgY2hhciAqc2VwOworKyAgICAgIENPUkVfQUREUiAqYWRkcnA7Cisr ICAgICAgaW50IGxlbjsKKysKKysgICAgICBzZXAgPSBzdHJjaHIgKGFubmV4LCAnPScpOworKyAg ICAgIGlmIChzZXAgPT0gTlVMTCkKKysJYnJlYWs7CisrCisrICAgICAgbGVuID0gc2VwIC0gYW5u ZXg7CisrICAgICAgaWYgKGxlbiA9PSA1ICYmIHN0cm5jbXAgKGFubmV4LCAic3RhcnQiLCA1KSA9 PSAwKQorKwlhZGRycCA9ICZsbV9hZGRyOworKyAgICAgIGVsc2UgaWYgKGxlbiA9PSA0ICYmIHN0 cm5jbXAgKGFubmV4LCAicHJldiIsIDQpID09IDApCisrCWFkZHJwID0gJmxtX3ByZXY7CisrICAg ICAgZWxzZQorKwl7CisrCSAgYW5uZXggPSBzdHJjaHIgKHNlcCwgJzsnKTsKKysJICBpZiAoYW5u ZXggPT0gTlVMTCkKKysJICAgIGJyZWFrOworKwkgIGFubmV4Kys7CisrCSAgY29udGludWU7Cisr CX0KKysKKysgICAgICBhbm5leCA9IGRlY29kZV9hZGRyZXNzX3RvX3NlbWljb2xvbiAoYWRkcnAs IHNlcCArIDEpOworICAgICB9CistICBlbHNlCisrCisrICBpZiAobG1fYWRkciA9PSAwKQorICAg ICB7CistICAgICAgaW50IGFsbG9jYXRlZCA9IDEwMjQ7CistICAgICAgY2hhciAqcDsKKy0gICAg ICBjb25zdCBpbnQgcHRyX3NpemUgPSBpc19lbGY2NCA/IDggOiA0OworLSAgICAgIENPUkVfQURE UiBsbV9hZGRyLCBsbV9wcmV2LCBsX25hbWUsIGxfYWRkciwgbF9sZCwgbF9uZXh0LCBsX3ByZXY7 CistICAgICAgaW50IHJfdmVyc2lvbiwgaGVhZGVyX2RvbmUgPSAwOworLQorLSAgICAgIGRvY3Vt ZW50ID0geG1hbGxvYyAoYWxsb2NhdGVkKTsKKy0gICAgICBzdHJjcHkgKGRvY3VtZW50LCAiPGxp YnJhcnktbGlzdC1zdnI0IHZlcnNpb249XCIxLjBcIiIpOworLSAgICAgIHAgPSBkb2N1bWVudCAr IHN0cmxlbiAoZG9jdW1lbnQpOworLQorLSAgICAgIHJfdmVyc2lvbiA9IDA7CistICAgICAgaWYg KGxpbnV4X3JlYWRfbWVtb3J5IChwcml2LT5yX2RlYnVnICsgbG1vLT5yX3ZlcnNpb25fb2Zmc2V0 LAorLQkJCSAgICAgKHVuc2lnbmVkIGNoYXIgKikgJnJfdmVyc2lvbiwKKy0JCQkgICAgIHNpemVv ZiAocl92ZXJzaW9uKSkgIT0gMAorLQkgIHx8IHJfdmVyc2lvbiAhPSAxKQorKyAgICAgIGludCBy X3ZlcnNpb24gPSAwOworKworKyAgICAgIGlmIChwcml2LT5yX2RlYnVnID09IDApCisrCXByaXYt PnJfZGVidWcgPSBnZXRfcl9kZWJ1ZyAocGlkLCBpc19lbGY2NCk7CisrCisrICAgICAgLyogV2Ug ZmFpbGVkIHRvIGZpbmQgRFRfREVCVUcuICBTdWNoIHNpdHVhdGlvbiB3aWxsIG5vdCBjaGFuZ2UK KysJIGZvciB0aGlzIGluZmVyaW9yIC0gZG8gbm90IHJldHJ5IGl0LiAgUmVwb3J0IGl0IHRvIEdE QiBhcworKwkgRTAxLCBzZWUgZm9yIHRoZSByZWFzb25zIGF0IHRoZSBHREIgc29saWItc3ZyNC5j IHNpZGUuICAqLworKyAgICAgIGlmIChwcml2LT5yX2RlYnVnID09IChDT1JFX0FERFIpIC0xKQor KwlyZXR1cm4gLTE7CisrCisrICAgICAgaWYgKHByaXYtPnJfZGVidWcgIT0gMCkKKyAJeworLQkg IHdhcm5pbmcgKCJ1bmV4cGVjdGVkIHJfZGVidWcgdmVyc2lvbiAlZCIsIHJfdmVyc2lvbik7Cist CSAgZ290byBkb25lOworKwkgIGlmIChsaW51eF9yZWFkX21lbW9yeSAocHJpdi0+cl9kZWJ1ZyAr IGxtby0+cl92ZXJzaW9uX29mZnNldCwKKysJCQkJICh1bnNpZ25lZCBjaGFyICopICZyX3ZlcnNp b24sCisrCQkJCSBzaXplb2YgKHJfdmVyc2lvbikpICE9IDAKKysJICAgICAgfHwgcl92ZXJzaW9u ICE9IDEpCisrCSAgICB7CisrCSAgICAgIHdhcm5pbmcgKCJ1bmV4cGVjdGVkIHJfZGVidWcgdmVy c2lvbiAlZCIsIHJfdmVyc2lvbik7CisrCSAgICB9CisrCSAgZWxzZSBpZiAocmVhZF9vbmVfcHRy IChwcml2LT5yX2RlYnVnICsgbG1vLT5yX21hcF9vZmZzZXQsCisrCQkJCSAmbG1fYWRkciwgcHRy X3NpemUpICE9IDApCisrCSAgICB7CisrCSAgICAgIHdhcm5pbmcgKCJ1bmFibGUgdG8gcmVhZCBy X21hcCBmcm9tIDB4JWx4IiwKKysJCSAgICAgICAobG9uZykgcHJpdi0+cl9kZWJ1ZyArIGxtby0+ cl9tYXBfb2Zmc2V0KTsKKysJICAgIH0KKyAJfQorKyAgICB9CisrCisrICBkb2N1bWVudCA9IHht YWxsb2MgKGFsbG9jYXRlZCk7CisrICBzdHJjcHkgKGRvY3VtZW50LCAiPGxpYnJhcnktbGlzdC1z dnI0IHZlcnNpb249XCIxLjBcIiIpOworKyAgcCA9IGRvY3VtZW50ICsgc3RybGVuIChkb2N1bWVu dCk7CisrCisrICB3aGlsZSAobG1fYWRkcgorKwkgJiYgcmVhZF9vbmVfcHRyIChsbV9hZGRyICsg bG1vLT5sX25hbWVfb2Zmc2V0LAorKwkJCSAgJmxfbmFtZSwgcHRyX3NpemUpID09IDAKKysJICYm IHJlYWRfb25lX3B0ciAobG1fYWRkciArIGxtby0+bF9hZGRyX29mZnNldCwKKysJCQkgICZsX2Fk ZHIsIHB0cl9zaXplKSA9PSAwCisrCSAmJiByZWFkX29uZV9wdHIgKGxtX2FkZHIgKyBsbW8tPmxf bGRfb2Zmc2V0LAorKwkJCSAgJmxfbGQsIHB0cl9zaXplKSA9PSAwCisrCSAmJiByZWFkX29uZV9w dHIgKGxtX2FkZHIgKyBsbW8tPmxfcHJldl9vZmZzZXQsCisrCQkJICAmbF9wcmV2LCBwdHJfc2l6 ZSkgPT0gMAorKwkgJiYgcmVhZF9vbmVfcHRyIChsbV9hZGRyICsgbG1vLT5sX25leHRfb2Zmc2V0 LAorKwkJCSAgJmxfbmV4dCwgcHRyX3NpemUpID09IDApCisrICAgIHsKKysgICAgICB1bnNpZ25l ZCBjaGFyIGxpYm5hbWVbUEFUSF9NQVhdOworIAorLSAgICAgIGlmIChyZWFkX29uZV9wdHIgKHBy aXYtPnJfZGVidWcgKyBsbW8tPnJfbWFwX29mZnNldCwKKy0JCQkmbG1fYWRkciwgcHRyX3NpemUp ICE9IDApCisrICAgICAgaWYgKGxtX3ByZXYgIT0gbF9wcmV2KQorIAl7CistCSAgd2FybmluZyAo InVuYWJsZSB0byByZWFkIHJfbWFwIGZyb20gMHglbHgiLAorLQkJICAgKGxvbmcpIHByaXYtPnJf ZGVidWcgKyBsbW8tPnJfbWFwX29mZnNldCk7CistCSAgZ290byBkb25lOworKwkgIHdhcm5pbmcg KCJDb3JydXB0ZWQgc2hhcmVkIGxpYnJhcnkgbGlzdDogMHglbHggIT0gMHglbHgiLAorKwkJICAg KGxvbmcpIGxtX3ByZXYsIChsb25nKSBsX3ByZXYpOworKwkgIGJyZWFrOworIAl9CisgCistICAg ICAgbG1fcHJldiA9IDA7CistICAgICAgd2hpbGUgKHJlYWRfb25lX3B0ciAobG1fYWRkciArIGxt by0+bF9uYW1lX29mZnNldCwKKy0JCQkgICAmbF9uYW1lLCBwdHJfc2l6ZSkgPT0gMAorLQkgICAg ICYmIHJlYWRfb25lX3B0ciAobG1fYWRkciArIGxtby0+bF9hZGRyX29mZnNldCwKKy0JCQkgICAg ICAmbF9hZGRyLCBwdHJfc2l6ZSkgPT0gMAorLQkgICAgICYmIHJlYWRfb25lX3B0ciAobG1fYWRk ciArIGxtby0+bF9sZF9vZmZzZXQsCistCQkJICAgICAgJmxfbGQsIHB0cl9zaXplKSA9PSAwCist CSAgICAgJiYgcmVhZF9vbmVfcHRyIChsbV9hZGRyICsgbG1vLT5sX3ByZXZfb2Zmc2V0LAorLQkJ CSAgICAgICZsX3ByZXYsIHB0cl9zaXplKSA9PSAwCistCSAgICAgJiYgcmVhZF9vbmVfcHRyIChs bV9hZGRyICsgbG1vLT5sX25leHRfb2Zmc2V0LAorLQkJCSAgICAgICZsX25leHQsIHB0cl9zaXpl KSA9PSAwKQorKyAgICAgIC8qIE5vdCBjaGVja2luZyBmb3IgZXJyb3IgYmVjYXVzZSByZWFkaW5n IG1heSBzdG9wIGJlZm9yZQorKwkgd2UndmUgZ290IFBBVEhfTUFYIHdvcnRoIG9mIGNoYXJhY3Rl cnMuICAqLworKyAgICAgIGxpYm5hbWVbMF0gPSAnXDAnOworKyAgICAgIGxpbnV4X3JlYWRfbWVt b3J5IChsX25hbWUsIGxpYm5hbWUsIHNpemVvZiAobGlibmFtZSkgLSAxKTsKKysgICAgICBsaWJu YW1lW3NpemVvZiAobGlibmFtZSkgLSAxXSA9ICdcMCc7CisrICAgICAgaWYgKGxpYm5hbWVbMF0g IT0gJ1wwJykKKyAJeworLQkgIHVuc2lnbmVkIGNoYXIgbGlibmFtZVtQQVRIX01BWF07CisrCSAg LyogNnggdGhlIHNpemUgZm9yIHhtbF9lc2NhcGVfdGV4dCBiZWxvdy4gICovCisrCSAgc2l6ZV90 IGxlbiA9IDYgKiBzdHJsZW4gKChjaGFyICopIGxpYm5hbWUpOworKwkgIGNoYXIgKm5hbWU7Cisg CistCSAgaWYgKGxtX3ByZXYgIT0gbF9wcmV2KQorKwkgIGlmICghaGVhZGVyX2RvbmUpCisgCSAg ICB7CistCSAgICAgIHdhcm5pbmcgKCJDb3JydXB0ZWQgc2hhcmVkIGxpYnJhcnkgbGlzdDogMHgl bHggIT0gMHglbHgiLAorLQkJICAgICAgIChsb25nKSBsbV9wcmV2LCAobG9uZykgbF9wcmV2KTsK Ky0JICAgICAgYnJlYWs7CisrCSAgICAgIC8qIFRlcm1pbmF0ZSBgPGxpYnJhcnktbGlzdC1zdnI0 Jy4gICovCisrCSAgICAgICpwKysgPSAnPic7CisrCSAgICAgIGhlYWRlcl9kb25lID0gMTsKKyAJ ICAgIH0KKyAKKy0JICAvKiBOb3QgY2hlY2tpbmcgZm9yIGVycm9yIGJlY2F1c2UgcmVhZGluZyBt YXkgc3RvcCBiZWZvcmUKKy0JICAgICB3ZSd2ZSBnb3QgUEFUSF9NQVggd29ydGggb2YgY2hhcmFj dGVycy4gICovCistCSAgbGlibmFtZVswXSA9ICdcMCc7CistCSAgbGludXhfcmVhZF9tZW1vcnkg KGxfbmFtZSwgbGlibmFtZSwgc2l6ZW9mIChsaWJuYW1lKSAtIDEpOworLQkgIGxpYm5hbWVbc2l6 ZW9mIChsaWJuYW1lKSAtIDFdID0gJ1wwJzsKKy0JICBpZiAobGlibmFtZVswXSAhPSAnXDAnKQor KwkgIHdoaWxlIChhbGxvY2F0ZWQgPCBwIC0gZG9jdW1lbnQgKyBsZW4gKyAyMDApCisgCSAgICB7 CistCSAgICAgIC8qIDZ4IHRoZSBzaXplIGZvciB4bWxfZXNjYXBlX3RleHQgYmVsb3cuICAqLwor LQkgICAgICBzaXplX3QgbGVuID0gNiAqIHN0cmxlbiAoKGNoYXIgKikgbGlibmFtZSk7CistCSAg ICAgIGNoYXIgKm5hbWU7CistCistCSAgICAgIGlmICghaGVhZGVyX2RvbmUpCistCQl7CistCQkg IC8qIFRlcm1pbmF0ZSBgPGxpYnJhcnktbGlzdC1zdnI0Jy4gICovCistCQkgICpwKysgPSAnPic7 CistCQkgIGhlYWRlcl9kb25lID0gMTsKKy0JCX0KKy0KKy0JICAgICAgd2hpbGUgKGFsbG9jYXRl ZCA8IHAgLSBkb2N1bWVudCArIGxlbiArIDIwMCkKKy0JCXsKKy0JCSAgLyogRXhwYW5kIHRvIGd1 YXJhbnRlZSBzdWZmaWNpZW50IHN0b3JhZ2UuICAqLworLQkJICB1aW50cHRyX3QgZG9jdW1lbnRf bGVuID0gcCAtIGRvY3VtZW50OworLQorLQkJICBkb2N1bWVudCA9IHhyZWFsbG9jIChkb2N1bWVu dCwgMiAqIGFsbG9jYXRlZCk7CistCQkgIGFsbG9jYXRlZCAqPSAyOworLQkJICBwID0gZG9jdW1l bnQgKyBkb2N1bWVudF9sZW47CistCQl9CistCistCSAgICAgIG5hbWUgPSB4bWxfZXNjYXBlX3Rl eHQgKChjaGFyICopIGxpYm5hbWUpOworLQkgICAgICBwICs9IHNwcmludGYgKHAsICI8bGlicmFy eSBuYW1lPVwiJXNcIiBsbT1cIjB4JWx4XCIgIgorLQkJCSAgICAgICAibF9hZGRyPVwiMHglbHhc IiBsX2xkPVwiMHglbHhcIi8+IiwKKy0JCQkgICAgbmFtZSwgKHVuc2lnbmVkIGxvbmcpIGxtX2Fk ZHIsCistCQkJICAgICh1bnNpZ25lZCBsb25nKSBsX2FkZHIsICh1bnNpZ25lZCBsb25nKSBsX2xk KTsKKy0JICAgICAgZnJlZSAobmFtZSk7CistCSAgICB9CistCSAgZWxzZSBpZiAobG1fcHJldiA9 PSAwKQorLQkgICAgeworLQkgICAgICBzcHJpbnRmIChwLCAiIG1haW4tbG09XCIweCVseFwiIiwg KHVuc2lnbmVkIGxvbmcpIGxtX2FkZHIpOworLQkgICAgICBwID0gcCArIHN0cmxlbiAocCk7Cist CSAgICB9CisrCSAgICAgIC8qIEV4cGFuZCB0byBndWFyYW50ZWUgc3VmZmljaWVudCBzdG9yYWdl LiAgKi8KKysJICAgICAgdWludHB0cl90IGRvY3VtZW50X2xlbiA9IHAgLSBkb2N1bWVudDsKKyAK Ky0JICBpZiAobF9uZXh0ID09IDApCistCSAgICBicmVhazsKKysJICAgICAgZG9jdW1lbnQgPSB4 cmVhbGxvYyAoZG9jdW1lbnQsIDIgKiBhbGxvY2F0ZWQpOworKwkgICAgICBhbGxvY2F0ZWQgKj0g MjsKKysJICAgICAgcCA9IGRvY3VtZW50ICsgZG9jdW1lbnRfbGVuOworKwkgICAgfQorIAorLQkg IGxtX3ByZXYgPSBsbV9hZGRyOworLQkgIGxtX2FkZHIgPSBsX25leHQ7CisrCSAgbmFtZSA9IHht bF9lc2NhcGVfdGV4dCAoKGNoYXIgKikgbGlibmFtZSk7CisrCSAgcCArPSBzcHJpbnRmIChwLCAi PGxpYnJhcnkgbmFtZT1cIiVzXCIgbG09XCIweCVseFwiICIKKysJCQkibF9hZGRyPVwiMHglbHhc IiBsX2xkPVwiMHglbHhcIi8+IiwKKysJCQluYW1lLCAodW5zaWduZWQgbG9uZykgbG1fYWRkciwK KysJCQkodW5zaWduZWQgbG9uZykgbF9hZGRyLCAodW5zaWduZWQgbG9uZykgbF9sZCk7CisrCSAg ZnJlZSAobmFtZSk7CisgCX0KKy0gICAgZG9uZToKKy0gICAgICBpZiAoIWhlYWRlcl9kb25lKQor KyAgICAgIGVsc2UgaWYgKGxtX3ByZXYgPT0gMCkKKyAJeworLQkgIC8qIEVtcHR5IGxpc3Q7IHRl cm1pbmF0ZSBgPGxpYnJhcnktbGlzdC1zdnI0Jy4gICovCistCSAgc3RyY3B5IChwLCAiLz4iKTsK KysJICBzcHJpbnRmIChwLCAiIG1haW4tbG09XCIweCVseFwiIiwgKHVuc2lnbmVkIGxvbmcpIGxt X2FkZHIpOworKwkgIHAgPSBwICsgc3RybGVuIChwKTsKKyAJfQorLSAgICAgIGVsc2UKKy0Jc3Ry Y3B5IChwLCAiPC9saWJyYXJ5LWxpc3Qtc3ZyND4iKTsKKysKKysgICAgICBsbV9wcmV2ID0gbG1f YWRkcjsKKysgICAgICBsbV9hZGRyID0gbF9uZXh0OworICAgICB9CisgCisrICBpZiAoIWhlYWRl cl9kb25lKQorKyAgICB7CisrICAgICAgLyogRW1wdHkgbGlzdDsgdGVybWluYXRlIGA8bGlicmFy eS1saXN0LXN2cjQnLiAgKi8KKysgICAgICBzdHJjcHkgKHAsICIvPiIpOworKyAgICB9CisrICBl bHNlCisrICAgIHN0cmNweSAocCwgIjwvbGlicmFyeS1saXN0LXN2cjQ+Iik7CisrCisgICBkb2N1 bWVudF9sZW4gPSBzdHJsZW4gKGRvY3VtZW50KTsKKyAgIGlmIChvZmZzZXQgPCBkb2N1bWVudF9s ZW4pCisgICAgIGRvY3VtZW50X2xlbiAtPSBvZmZzZXQ7CistLS0gc3JjL2dkYi9nZGJzZXJ2ZXIv c2VydmVyLmMJMjAxMy8wNS8yNCAxMToyODowNgkxLjE5MQorKysrIHNyYy9nZGIvZ2Ric2VydmVy L3NlcnZlci5jCTIwMTMvMDYvMDQgMTI6NTk6MjEJMS4xOTIKK0BAIC0xMTE1LDggKzExMTUsNyBA QAorICAgaWYgKHdyaXRlYnVmICE9IE5VTEwpCisgICAgIHJldHVybiAtMjsKKyAKKy0gIGlmIChh bm5leFswXSAhPSAnXDAnIHx8ICF0YXJnZXRfcnVubmluZyAoKQorLSAgICAgIHx8IHRoZV90YXJn ZXQtPnF4ZmVyX2xpYnJhcmllc19zdnI0ID09IE5VTEwpCisrICBpZiAoIXRhcmdldF9ydW5uaW5n ICgpIHx8IHRoZV90YXJnZXQtPnF4ZmVyX2xpYnJhcmllc19zdnI0ID09IE5VTEwpCisgICAgIHJl dHVybiAtMTsKKyAKKyAgIHJldHVybiB0aGVfdGFyZ2V0LT5xeGZlcl9saWJyYXJpZXNfc3ZyNCAo YW5uZXgsIHJlYWRidWYsIHdyaXRlYnVmLCBvZmZzZXQsIGxlbik7CitAQCAtMTc0Myw3ICsxNzQy LDggQEAKKyAJICAgICAgIFBCVUZTSVogLSAxKTsKKyAKKyAgICAgICBpZiAodGhlX3RhcmdldC0+ cXhmZXJfbGlicmFyaWVzX3N2cjQgIT0gTlVMTCkKKy0Jc3RyY2F0IChvd25fYnVmLCAiO3FYZmVy OmxpYnJhcmllcy1zdnI0OnJlYWQrIik7CisrCXN0cmNhdCAob3duX2J1ZiwgIjtxWGZlcjpsaWJy YXJpZXMtc3ZyNDpyZWFkKyIKKysJCSI7YXVnbWVudGVkLWxpYnJhcmllcy1zdnI0LXJlYWQrIik7 CisgICAgICAgZWxzZQorIAl7CisgCSAgLyogV2UgZG8gbm90IGhhdmUgYW55IGhvb2sgdG8gaW5k aWNhdGUgd2hldGhlciB0aGUgbm9uLVNWUjQgdGFyZ2V0CgpkaWZmIC0tZ2l0IGEvZ2RiLWRsb3Bl bi1zdGFwLXByb2JlLTRvZjcucGF0Y2ggYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUtNG9mNy5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjI0YzM2Ni4uMDAwMDAwMAotLS0gYS9n ZGItZGxvcGVuLXN0YXAtcHJvYmUtNG9mNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiAr MCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMy0wNS9tc2cw MDYyOC5odG1sCi1TdWJqZWN0OiBbUkZBIDQvN10gR0RCIHN1cHBvcnQgZm9yIG5ldyBnZGJzZXJ2 ZXIgZnVuY3Rpb25hbGl0eQotCi0KLS0tQ2FQS2doM1hIcHEzckVVVgotQ29udGVudC1UeXBlOiB0 ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpCi1Db250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmUK LQotVGhpcyBwYXRjaCBhZGRzIGNsaWVudCBzdXBwb3J0IGZvciB0aGUgbmV3IGdkYnNlcnZlciBm dW5jdGlvbmFsaXR5Ci1wcm92aWRlZCBieSBwYXRjaCAzIG9mIHRoaXMgc2VyaWVzLgotCi0tLUNh UEtnaDNYSHBxM3JFVVYKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2Np aQotQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9InJ0bGQtcHJvYmVz LTQtcmVtb3RlLnBhdGNoIgotCi0yMDEzLTA1LTE2ICBHYXJ5IEJlbnNvbiAgPGdiZW5zb25AcmVk aGF0LmNvbT4KLQotCSogdGFyZ2V0LmggKHRhcmdldF9vcHMpOiBOZXcgZmllbGQKLQkidG9fYXVn bWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQiLgotCSh0YXJnZXRfYXVnbWVudGVkX2xpYnJhcmll c19zdnI0X3JlYWQpOiBOZXcgbWFjcm8uCi0JKiB0YXJnZXQuYyAodXBkYXRlX2N1cnJlbnRfdGFy Z2V0KTogSGFuZGxlCi0JdG9fYXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQuCi0JKiByZW1v dGUuYyAocmVtb3RlX3N0YXRlKTogTmV3IGZpZWxkCi0JImF1Z21lbnRlZF9saWJyYXJpZXNfc3Zy NF9yZWFkIi4KLQkocmVtb3RlX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkX2ZlYXR1cmUp OiBOZXcgZnVuY3Rpb24uCi0JKHJlbW90ZV9wcm90b2NvbF9mZWF0dXJlcyk6IEFkZCBlbnRyeSBm b3IKLQkiYXVnbWVudGVkLWxpYnJhcmllcy1zdnI0LXJlYWQiLgotCShyZW1vdGVfYXVnbWVudGVk X2xpYnJhcmllc19zdnI0X3JlYWQpOiBOZXcgZnVuY3Rpb24uCi0JKGluaXRfcmVtb3RlX29wcyk6 IEluaXRpYWxpemUKLQlyZW1vdGVfb3BzLnRvX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFk LgotCi1kaWZmIC0tZ2l0IGEvZ2RiL3RhcmdldC5oIGIvZ2RiL3RhcmdldC5oCi1pbmRleCBlOTM3 ZDM5Li5hODU4N2U4IDEwMDY0NAotLS0tIGEvZ2RiL3RhcmdldC5oCi0rKysgYi9nZGIvdGFyZ2V0 LmgKLUBAIC05NDEsNiArOTQxLDEwIEBAIHN0cnVjdCB0YXJnZXRfb3BzCi0gICAgICAgIChpbmNs dXNpdmUpIHRvIGZ1bmN0aW9uIEVORCAoZXhjbHVzaXZlKS4gICovCi0gICAgIHZvaWQgKCp0b19j YWxsX2hpc3RvcnlfcmFuZ2UpIChVTE9OR0VTVCBiZWdpbiwgVUxPTkdFU1QgZW5kLCBpbnQgZmxh Z3MpOwotIAotKyAgICAvKiBOb256ZXJvIGlmIFRBUkdFVF9PQkpFQ1RfTElCUkFSSUVTX1NWUjQg bWF5IGJlIHJlYWQgd2l0aCBhCi0rICAgICAgIG5vbi1lbXB0eSBhbm5leC4gICovCi0rICAgIGlu dCAoKnRvX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkKSAodm9pZCk7Ci0rCi0gICAgIGlu dCB0b19tYWdpYzsKLSAgICAgLyogTmVlZCBzdWItc3RydWN0dXJlIGZvciB0YXJnZXQgbWFjaGlu ZSByZWxhdGVkIHJhdGhlciB0aGFuIGNvbW0gcmVsYXRlZD8KLSAgICAgICovCi1AQCAtMTgwOSw2 ICsxODEzLDkgQEAgZXh0ZXJuIGNoYXIgKnRhcmdldF9maWxlaW9fcmVhZF9zdHJhbGxvYyAoY29u c3QgY2hhciAqZmlsZW5hbWUpOwotICNkZWZpbmUgdGFyZ2V0X2Nhbl91c2VfYWdlbnQoKSBcCi0g ICAoKmN1cnJlbnRfdGFyZ2V0LnRvX2Nhbl91c2VfYWdlbnQpICgpCi0gCi0rI2RlZmluZSB0YXJn ZXRfYXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQoKSBcCi0rICAoKmN1cnJlbnRfdGFyZ2V0 LnRvX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkKSAoKQotKwotIC8qIENvbW1hbmQgbG9n Z2luZyBmYWNpbGl0eS4gICovCi0gCi0gI2RlZmluZSB0YXJnZXRfbG9nX2NvbW1hbmQocCkJCQkJ CQlcCi1kaWZmIC0tZ2l0IGEvZ2RiL3RhcmdldC5jIGIvZ2RiL3RhcmdldC5jCi1pbmRleCA4NjUz ZGFjLi41MTliOTdmIDEwMDY0NAotLS0tIGEvZ2RiL3RhcmdldC5jCi0rKysgYi9nZGIvdGFyZ2V0 LmMKLUBAIC03MzEsNiArNzMxLDcgQEAgdXBkYXRlX2N1cnJlbnRfdGFyZ2V0ICh2b2lkKQotICAg ICAgIElOSEVSSVQgKHRvX3RyYWNlZnJhbWVfaW5mbywgdCk7Ci0gICAgICAgSU5IRVJJVCAodG9f dXNlX2FnZW50LCB0KTsKLSAgICAgICBJTkhFUklUICh0b19jYW5fdXNlX2FnZW50LCB0KTsKLSsg ICAgICBJTkhFUklUICh0b19hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVhZCwgdCk7Ci0gICAg ICAgSU5IRVJJVCAodG9fbWFnaWMsIHQpOwotICAgICAgIElOSEVSSVQgKHRvX3N1cHBvcnRzX2V2 YWx1YXRpb25fb2ZfYnJlYWtwb2ludF9jb25kaXRpb25zLCB0KTsKLSAgICAgICBJTkhFUklUICh0 b19jYW5fcnVuX2JyZWFrcG9pbnRfY29tbWFuZHMsIHQpOwotQEAgLTk3NSw2ICs5NzYsOSBAQCB1 cGRhdGVfY3VycmVudF90YXJnZXQgKHZvaWQpCi0gICBkZV9mYXVsdCAodG9fY2FuX3VzZV9hZ2Vu dCwKLSAJICAgIChpbnQgKCopICh2b2lkKSkKLSAJICAgIHJldHVybl96ZXJvKTsKLSsgIGRlX2Zh dWx0ICh0b19hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVhZCwKLSsJICAgIChpbnQgKCopICh2 b2lkKSkKLSsJICAgIHJldHVybl96ZXJvKTsKLSAgIGRlX2ZhdWx0ICh0b19leGVjdXRpb25fZGly ZWN0aW9uLCBkZWZhdWx0X2V4ZWN1dGlvbl9kaXJlY3Rpb24pOwotIAotICN1bmRlZiBkZV9mYXVs dAotZGlmZiAtLWdpdCBhL2dkYi9yZW1vdGUuYyBiL2dkYi9yZW1vdGUuYwotaW5kZXggNTFiZjAy NS4uZTFjZjhhNCAxMDA2NDQKLS0tLSBhL2dkYi9yZW1vdGUuYwotKysrIGIvZ2RiL3JlbW90ZS5j Ci1AQCAtMzQzLDYgKzM0MywxMCBAQCBzdHJ1Y3QgcmVtb3RlX3N0YXRlCi0gICAvKiBUcnVlIGlm IHRoZSBzdHViIGNhbiBjb2xsZWN0IHN0cmluZ3MgdXNpbmcgdHJhY2VueiBieXRlY29kZS4gICov Ci0gICBpbnQgc3RyaW5nX3RyYWNpbmc7Ci0gCi0rICAvKiBUcnVlIGlmIHRoZSBzdHViIHN1cHBv cnRzIHFYZmVyOmxpYnJhcmllcy1zdnI0OnJlYWQgd2l0aCBhCi0rICAgICBub24tZW1wdHkgYW5u ZXguICAqLwotKyAgaW50IGF1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkOwotKwotICAgLyog Tm9uemVybyBpZiB0aGUgdXNlciBoYXMgcHJlc3NlZCBDdHJsLUMsIGJ1dCB0aGUgdGFyZ2V0IGhh c24ndAotICAgICAgcmVzcG9uZGVkIHRvIHRoYXQuICAqLwotICAgaW50IGN0cmxjX3BlbmRpbmdf cDsKLUBAIC0zOTMxLDYgKzM5MzUsMTYgQEAgcmVtb3RlX3N0cmluZ190cmFjaW5nX2ZlYXR1cmUg KGNvbnN0IHN0cnVjdCBwcm90b2NvbF9mZWF0dXJlICpmZWF0dXJlLAotICAgcnMtPnN0cmluZ190 cmFjaW5nID0gKHN1cHBvcnQgPT0gUEFDS0VUX0VOQUJMRSk7Ci0gfQotIAotK3N0YXRpYyB2b2lk Ci0rcmVtb3RlX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkX2ZlYXR1cmUKLSsgIChjb25z dCBzdHJ1Y3QgcHJvdG9jb2xfZmVhdHVyZSAqZmVhdHVyZSwKLSsgICBlbnVtIHBhY2tldF9zdXBw b3J0IHN1cHBvcnQsIGNvbnN0IGNoYXIgKnZhbHVlKQotK3sKLSsgIHN0cnVjdCByZW1vdGVfc3Rh dGUgKnJzID0gZ2V0X3JlbW90ZV9zdGF0ZSAoKTsKLSsKLSsgIHJzLT5hdWdtZW50ZWRfbGlicmFy aWVzX3N2cjRfcmVhZCA9IChzdXBwb3J0ID09IFBBQ0tFVF9FTkFCTEUpOwotK30KLSsKLSBzdGF0 aWMgc3RydWN0IHByb3RvY29sX2ZlYXR1cmUgcmVtb3RlX3Byb3RvY29sX2ZlYXR1cmVzW10gPSB7 Ci0gICB7ICJQYWNrZXRTaXplIiwgUEFDS0VUX0RJU0FCTEUsIHJlbW90ZV9wYWNrZXRfc2l6ZSwg LTEgfSwKLSAgIHsgInFYZmVyOmF1eHY6cmVhZCIsIFBBQ0tFVF9ESVNBQkxFLCByZW1vdGVfc3Vw cG9ydGVkX3BhY2tldCwKLUBAIC0zOTQxLDYgKzM5NTUsOCBAQCBzdGF0aWMgc3RydWN0IHByb3Rv Y29sX2ZlYXR1cmUgcmVtb3RlX3Byb3RvY29sX2ZlYXR1cmVzW10gPSB7Ci0gICAgIFBBQ0tFVF9x WGZlcl9saWJyYXJpZXMgfSwKLSAgIHsgInFYZmVyOmxpYnJhcmllcy1zdnI0OnJlYWQiLCBQQUNL RVRfRElTQUJMRSwgcmVtb3RlX3N1cHBvcnRlZF9wYWNrZXQsCi0gICAgIFBBQ0tFVF9xWGZlcl9s aWJyYXJpZXNfc3ZyNCB9LAotKyAgeyAiYXVnbWVudGVkLWxpYnJhcmllcy1zdnI0LXJlYWQiLCBQ QUNLRVRfRElTQUJMRSwKLSsgICAgcmVtb3RlX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFk X2ZlYXR1cmUsIC0xIH0sCi0gICB7ICJxWGZlcjptZW1vcnktbWFwOnJlYWQiLCBQQUNLRVRfRElT QUJMRSwgcmVtb3RlX3N1cHBvcnRlZF9wYWNrZXQsCi0gICAgIFBBQ0tFVF9xWGZlcl9tZW1vcnlf bWFwIH0sCi0gICB7ICJxWGZlcjpzcHU6cmVhZCIsIFBBQ0tFVF9ESVNBQkxFLCByZW1vdGVfc3Vw cG9ydGVkX3BhY2tldCwKLUBAIC0xMTM0Myw2ICsxMTM1OSwxNCBAQCByZW1vdGVfcmVhZF9idHJh Y2UgKHN0cnVjdCBidHJhY2VfdGFyZ2V0X2luZm8gKnRpbmZvLAotICAgcmV0dXJuIGJ0cmFjZTsK LSB9Ci0gCi0rc3RhdGljIGludAotK3JlbW90ZV9hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVh ZCAodm9pZCkKLSt7Ci0rICBzdHJ1Y3QgcmVtb3RlX3N0YXRlICpycyA9IGdldF9yZW1vdGVfc3Rh dGUgKCk7Ci0rCi0rICByZXR1cm4gcnMtPmF1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkOwot K30KLSsKLSBzdGF0aWMgdm9pZAotIGluaXRfcmVtb3RlX29wcyAodm9pZCkKLSB7Ci1AQCAtMTE0 NjUsNiArMTE0ODksOCBAQCBTcGVjaWZ5IHRoZSBzZXJpYWwgZGV2aWNlIGl0IGlzIGNvbm5lY3Rl ZCB0b1xuXAotICAgcmVtb3RlX29wcy50b19kaXNhYmxlX2J0cmFjZSA9IHJlbW90ZV9kaXNhYmxl X2J0cmFjZTsKLSAgIHJlbW90ZV9vcHMudG9fdGVhcmRvd25fYnRyYWNlID0gcmVtb3RlX3RlYXJk b3duX2J0cmFjZTsKLSAgIHJlbW90ZV9vcHMudG9fcmVhZF9idHJhY2UgPSByZW1vdGVfcmVhZF9i dHJhY2U7Ci0rICByZW1vdGVfb3BzLnRvX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkID0K LSsgICAgcmVtb3RlX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkOwotIH0KLSAKLSAvKiBT ZXQgdXAgdGhlIGV4dGVuZGVkIHJlbW90ZSB2ZWN0b3IgYnkgbWFraW5nIGEgY29weSBvZiB0aGUg c3RhbmRhcmQKLQotLS1DYVBLZ2gzWEhwcTNyRVVWLS0KLQoKZGlmZiAtLWdpdCBhL2dkYi1kbG9w ZW4tc3RhcC1wcm9iZS00b2Y5LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTRvZjkucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU5YzU4MQotLS0gL2Rldi9u dWxsCisrKyBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS00b2Y5LnBhdGNoCkBAIC0wLDAgKzEsMzUg QEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDYvbXNnMDAwMTUuaHRt bAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNi8wNCAxMjo1MzozMwkxLjE1NjgyCisj IyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNi8wNCAxMzowMjoxNQkxLjE1NjgzCisjIyAtMSw1 ICsxLDkgQEAKKyAyMDEzLTA2LTA0ICBHYXJ5IEJlbnNvbiAgPGdiZW5zb25AcmVkaGF0LmNvbT4K KyAKKysJKiBORVdTOiBVcGRhdGUuCisrCisrMjAxMy0wNi0wNCAgR2FyeSBCZW5zb24gIDxnYmVu c29uQHJlZGhhdC5jb20+CisrCisgCSogb2JqZmlsZXMuaCAoaW5oaWJpdF9zZWN0aW9uX21hcF91 cGRhdGVzKTogTmV3IGZ1bmN0aW9uCisgCWRlY2xhcmF0aW9uLgorIAkocmVzdW1lX3NlY3Rpb25f bWFwX3VwZGF0ZXMpOiBMaWtld2lzZS4KK0luZGV4OiBnZGItNy42L2dkYi9ORVdTCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLS0gZ2RiLTcuNi5vcmlnL2dkYi9ORVdTCTIwMTMtMDYtMTAgMTQ6Mjc6MDIuMDcxMTg0 MTUzICswMjAwCisrKysgZ2RiLTcuNi9nZGIvTkVXUwkyMDEzLTA2LTEwIDE0OjI4OjM0LjM5MTE0 NTMzOSArMDIwMAorQEAgLTQsNiArNCwxNiBAQAorICogTmV3bHkgaW5zdGFsbGVkICRwcmVmaXgv YmluL2djb3JlIGFjdHMgYXMgYSBzaGVsbCBpbnRlcmZhY2UgZm9yIHRoZQorICAgR0RCIGNvbW1h bmQgZ2NvcmUuCisgCisrKiBOZXcgcmVtb3RlIHBhY2tldHMKKysKKytxWGZlcjpsaWJyYXJpZXMt c3ZyNDpyZWFkJ3MgYW5uZXgKKysgIFRoZSBwcmV2aW91c2x5IHVudXNlZCBhbm5leCBvZiB0aGUg cVhmZXI6bGlicmFyaWVzLXN2cjQ6cmVhZCBwYWNrZXQKKysgIGlzIG5vdyB1c2VkIHRvIHN1cHBv cnQgcGFzc2luZyBhbiBhcmd1bWVudCBsaXN0LiAgVGhlIHJlbW90ZSBzdHViCisrICByZXBvcnRz IHN1cHBvcnQgZm9yIHRoaXMgYXJndW1lbnQgbGlzdCB0byBHREIncyBxU3VwcG9ydGVkIHF1ZXJ5 LgorKyAgVGhlIGRlZmluZWQgYXJndW1lbnRzIGFyZSAic3RhcnQiIGFuZCAicHJldiIsIHVzZWQg dG8gcmVkdWNlIHdvcmsKKysgIG5lY2Vzc2FyeSBmb3IgbGlicmFyeSBsaXN0IHVwZGF0aW5nLCBy ZXN1bHRpbmcgaW4gc2lnbmlmaWNhbnQKKysgIHNwZWVkdXAuCisrCisgKioqIENoYW5nZXMgaW4g R0RCIDcuNgorIAorICogVGFyZ2V0IHJlY29yZCBoYXMgYmVlbiByZW5hbWVkIHRvIHJlY29yZC1m dWxsLgoKZGlmZiAtLWdpdCBhL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS01b2Y3LnBhdGNoIGIvZ2Ri LWRsb3Blbi1zdGFwLXByb2JlLTVvZjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDJlYTg3M2QuLjAwMDAwMDAKLS0tIGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTVvZjcucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDg5ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItcGF0Y2hlcy8yMDEzLTA1L21zZzAwNjMyLmh0bWwKLVN1YmplY3Q6IFtSRkEgNS83 XSBJbXByb3ZlZCBsaW5rZXItZGVidWdnZXIgaW50ZXJmYWNlCi0KLQotLS1xc2UrV0JINGd1ZXNp cForCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWkKLUNvbnRlbnQt RGlzcG9zaXRpb246IGlubGluZQotCi1UaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIHByb2Jlcy1i YXNlZCBydW50aW1lIGxpbmtlciBpbnRlcmZhY2UuCi1JdCB3b3JrcyBhcyBmb2xsb3dzOgotCi0g LSBPbiBpbmZlcmlvciBzdGFydHVwLCBHREIgc2VhcmNoZXMgdGhlIGR5bmFtaWMgbGlua2VyIGZv ciBhCi0gICBudW1iZXIgb2YgbmFtZWQgcHJvYmVzLgotCi0gLSBJZiBhbGwgcHJvYmVzIGFyZSBm b3VuZCwgR0RCIHNldHMgYSBicmVha3BvaW50IG9uIGVhY2ggb25lLgotICAgT3RoZXJ3aXNlLCB0 aGUgc3RhbmRhcmQgZnVuY3Rpb24gX2RsX2RlYnVnX3N0YXRlIGlzIHVzZWQuCi0KLSAtIFdoZW4g dXNpbmcgcHJvYmVzLCBhIHBlci1wc3BhY2UgbGlzdCBpcyBtYWludGFpbmVkIG9mIGFsbAotICAg bGlicmFyaWVzIGN1cnJlbnRseSBsb2FkZWQgYnkgdGhlIGluZmVyaW9yLiAgSXQncyB1cGRhdGVk Ci0gICBhcyBuZWNlc3NhcnkgZXZlcnkgdGltZSBhIHNvbGliIGV2ZW50IHN0b3Agb2NjdXJzLgot Ci0gLSBXaGVuIHVzaW5nIHByb2Jlcywgc3ZyNF9jdXJyZW50X3NvcyB3aWxsIHJldHVybiBhIGNv cHkgb2YKLSAgIHRoZSBjYWNoZWQgbGlzdC4gIFdoZW4gbm90IHVzaW5nIHByb2JlcyB0aGUgZW50 aXJlIGxpc3QKLSAgIHdpbGwgYmUgZmV0Y2hlZCBmcm9tIHRoZSBpbmZlcmlvciBhcyBiZWZvcmUu Ci0KLSAtIElmIGFueSBlcnJvciBvY2N1cnMsIEdEQiB3aWxsIHByaW50IGEgd2FybmluZyBhbmQg cmV2ZXJ0IHRvCi0gICB0aGUgc3RhbmRhcmQgaW50ZXJmYWNlLgotCi0tLXFzZStXQkg0Z3Vlc2lw WisKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQotQ29udGVudC1E aXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9InJ0bGQtcHJvYmVzLTUtbWFpbi1jaGFu Z2VzLnBhdGNoIgotCi0yMDEzLTA1LTE2ICBHYXJ5IEJlbnNvbiAgPGdiZW5zb25AcmVkaGF0LmNv bT4KLQotCSogYnJlYWtwb2ludC5oIChoYW5kbGVfc29saWJfZXZlbnQpOiBNb3ZlZCBmdW5jdGlv biBkZWNsYXJhdGlvbgotCXRvIHNvbGliLmguCi0JKiBicmVha3BvaW50LmMgKGhhbmRsZV9zb2xp Yl9ldmVudCk6IE1vdmVkIGZ1bmN0aW9uIHRvIHNvbGliLmMuCi0JKGJwc3RhdF9zdG9wX3N0YXR1 cyk6IFBhc3MgbmV3IGFyZ3VtZW50IHRvIGhhbmRsZV9zb2xpYl9ldmVudC4KLQkqIHNvbGliLmgg KHVwZGF0ZV9zb2xpYl9icmVha3BvaW50cyk6IE5ldyBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KLQko aGFuZGxlX3NvbGliX2V2ZW50KTogTW92ZWQgZnVuY3Rpb24gZGVjbGFyYXRpb24gZnJvbQotCWJy ZWFrcG9pbnQuaC4KLQkqIHNvbGliLmMgKHVwZGF0ZV9zb2xpYl9icmVha3BvaW50cyk6IE5ldyBm dW5jdGlvbi4KLQkoaGFuZGxlX3NvbGliX2V2ZW50KTogTW92ZWQgZnVuY3Rpb24gZnJvbSBicmVh a3BvaW50LmMuCi0JVXBkYXRlZCB0byBjYWxsIHNvbGliX29wcy0+aGFuZGxlX2V2ZW50IGlmIG5v dCBOVUxMLgotCSogc29saXN0LmggKHRhcmdldF9zb19vcHMpOiBOZXcgZmllbGRzICJ1cGRhdGVf YnJlYWtwb2ludHMiIGFuZAotCSJoYW5kbGVfZXZlbnQiLgotCSogaW5mcnVuLmMgKHNldF9zdG9w X29uX3NvbGliX2V2ZW50cyk6IE5ldyBmdW5jdGlvbi4KLQkoX2luaXRpYWxpemVfaW5mcnVuKTog VXNlIHRoZSBhYm92ZSBmb3IgInNldAotCXN0b3Atb24tc29saWItZXZlbnRzIi4KLQkoaGFuZGxl X2luZmVyaW9yX2V2ZW50KTogUGFzcyBuZXcgYXJndW1lbnQgdG8gaGFuZGxlX3NvbGliX2V2ZW50 LgotCSogc29saWItc3ZyNC5jIChwcm9iZS5oKTogTmV3IGluY2x1ZGUuCi0JKHN2cjRfZnJlZV9s aWJyYXJ5X2xpc3QpOiBOZXcgZm9yd2FyZCBkZWNsYXJhdGlvbi4KLQkocHJvYmVfYWN0aW9uKTog TmV3IGVudW0uCi0JKHByb2JlX2luZm8pOiBOZXcgc3RydWN0LgotCShwcm9iZV9pbmZvKTogTmV3 IHN0YXRpYyB2YXJpYWJsZS4KLQkoTlVNX1BST0JFUyk6IE5ldyBkZWZpbml0aW9uLgotCShzdnI0 X2luZm8pOiBOZXcgZmllbGRzICJ1c2luZ194ZmVyIiwgInByb2Jlc190YWJsZSIgYW5kCi0JInNv bGliX2xpc3QiLgotCShmcmVlX3Byb2Jlc190YWJsZSk6IE5ldyBmdW5jdGlvbi4KLQkoZnJlZV9z b2xpYl9saXN0KTogTmV3IGZ1bmN0aW9uLgotCShzdnI0X3BzcGFjZV9kYXRhX2NsZWFudXApOiBG cmVlIHByb2JlcyB0YWJsZSBhbmQgc29saWIgbGlzdC4KLQkoc3ZyNF9jb3B5X2xpYnJhcnlfbGlz dCk6IE5ldyBmdW5jdGlvbi4KLQkoc3ZyNF9jdXJyZW50X3Nvc192aWFfeGZlcl9saWJyYXJpZXMp OiBOZXcgcGFyYW1ldGVyICJhbm5leCIuCi0JKHN2cjRfcmVhZF9zb19saXN0KTogTmV3IHBhcmFt ZXRlciAicHJldl9sbSIuCi0JKHN2cjRfY3VycmVudF9zb3NfZGlyZWN0KTogUmVuYW1lZCBmcm9t ICJzdnI0X2N1cnJlbnRfc29zIi4KLQkoc3ZyNF9jdXJyZW50X3Nvcyk6IE5ldyBmdW5jdGlvbi4K LQkocHJvYmVfYW5kX2FjdGlvbik6IE5ldyBzdHJ1Y3QuCi0JKGhhc2hfcHJvYmVfYW5kX2FjdGlv bik6IE5ldyBmdW5jdGlvbi4KLQkoZXF1YWxfcHJvYmVfYW5kX2FjdGlvbik6IExpa2V3aXNlLgot CShyZWdpc3Rlcl9zb2xpYl9ldmVudF9wcm9iZSk6IExpa2V3aXNlLgotCShzb2xpYl9ldmVudF9w cm9iZV9hdCk6IExpa2V3aXNlLgotCShzb2xpYl9ldmVudF9wcm9iZV9hY3Rpb24pOiBMaWtld2lz ZS4KLQkoc29saXN0X3VwZGF0ZV9mdWxsKTogTGlrZXdpc2UuCi0JKHNvbGlzdF91cGRhdGVfaW5j cmVtZW50YWwpOiBMaWtld2lzZS4KLQkoZGlzYWJsZV9wcm9iZXNfaW50ZXJmYWNlX2NsZWFudXAp OiBMaWtld2lzZS4KLQkoc3ZyNF9oYW5kbGVfc29saWJfZXZlbnQpOiBMaWtld2lzZS4KLQkoc3Zy NF91cGRhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludCk6IExpa2V3aXNlLgotCShzdnI0X3VwZGF0 ZV9zb2xpYl9ldmVudF9icmVha3BvaW50cyk6IExpa2V3aXNlLgotCShzdnI0X2NyZWF0ZV9zb2xp Yl9ldmVudF9icmVha3BvaW50cyk6IExpa2V3aXNlLgotCShlbmFibGVfYnJlYWspOiBGcmVlIHBy b2JlcyB0YWJsZSBiZWZvcmUgY3JlYXRpbmcgYnJlYWtwb2ludHMuCi0JVXNlIHN2cjRfY3JlYXRl X3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzIHRvIGNyZWF0ZSBicmVha3BvaW50cy4KLQkoc3ZyNF9z b2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayk6IEZyZWUgdGhlIHNvbGliIGxpc3QuCi0JKF9pbml0 aWFsaXplX3N2cjRfc29saWIpOiBJbml0aWFsaXNlCi0Jc3ZyNF9zb19vcHMuaGFuZGxlX3NvbGli X2V2ZW50IGFuZCBzdnI0X3NvX29wcy51cGRhdGVfYnJlYWtwb2ludHMuCi0KLUluZGV4OiBnZGIt Ny42L2dkYi9icmVha3BvaW50LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL2Jy ZWFrcG9pbnQuaAkyMDEzLTA1LTE5IDE2OjE2OjIwLjU1MTA4NzI3MCArMDIwMAotKysrIGdkYi03 LjYvZ2RiL2JyZWFrcG9pbnQuaAkyMDEzLTA1LTE5IDE2OjE2OjIwLjgzNzA4Njk0OCArMDIwMAot QEAgLTE1NTIsOCArMTU1Miw2IEBAIGV4dGVybiBpbnQgdXNlcl9icmVha3BvaW50X3AgKHN0cnVj dCBicmUKLSAvKiBBdHRlbXB0IHRvIGRldGVybWluZSBhcmNoaXRlY3R1cmUgb2YgbG9jYXRpb24g aWRlbnRpZmllZCBieSBTQUwuICAqLwotIGV4dGVybiBzdHJ1Y3QgZ2RiYXJjaCAqZ2V0X3NhbF9h cmNoIChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbCk7Ci0gCi0tZXh0ZXJuIHZvaWQgaGFuZGxl X3NvbGliX2V2ZW50ICh2b2lkKTsKLS0KLSBleHRlcm4gdm9pZCBicmVha3BvaW50X2ZyZWVfb2Jq ZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwotIAotIGV4dGVybiB2b2lkIGJyZWFrcG9p bnRzX3JlbG9jYXRlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLUluZGV4OiBnZGItNy42L2dk Yi9zb2xpYi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9zb2xpYi5oCTIwMTMt MDEtMDEgMDc6MzI6NTEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNi9nZGIvc29saWIuaAky MDEzLTA1LTE5IDE2OjE2OjIwLjgzODA4Njk0NiArMDIwMAotQEAgLTkwLDQgKzkwLDEyIEBAIGV4 dGVybiBDT1JFX0FERFIgZ2RiX2JmZF9sb29rdXBfc3ltYm9sX2YKLSAJCQkJCQkJCSAgICAgIHZv aWQgKiksCi0gCQkJCQkJICAgIHZvaWQgKmRhdGEpOwotIAotKy8qIEVuYWJsZSBvciBkaXNhYmxl IG9wdGlvbmFsIHNvbGliIGV2ZW50IGJyZWFrcG9pbnRzIGFzIGFwcHJvcHJpYXRlLiAgKi8KLSsK LStleHRlcm4gdm9pZCB1cGRhdGVfc29saWJfYnJlYWtwb2ludHMgKHZvaWQpOwotKwotKy8qIEhh bmRsZSBhbiBzb2xpYiBldmVudCBieSBjYWxsaW5nIHNvbGliX2FkZC4gICovCi0rCi0rZXh0ZXJu IHZvaWQgaGFuZGxlX3NvbGliX2V2ZW50ICh2b2lkKTsKLSsKLSAjZW5kaWYgLyogU09MSUJfSCAq LwotSW5kZXg6IGdkYi03LjYvZ2RiL3NvbGliLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9y aWcvZ2RiL3NvbGliLmMJMjAxMy0wNS0xOSAxNjoxNjoyMC40NjgwODczNjMgKzAyMDAKLSsrKyBn ZGItNy42L2dkYi9zb2xpYi5jCTIwMTMtMDUtMTkgMTY6MTY6MjAuODM4MDg2OTQ2ICswMjAwCi1A QCAtMTIyMSw2ICsxMjIxLDM4IEBAIG5vX3NoYXJlZF9saWJyYXJpZXMgKGNoYXIgKmlnbm9yZWQs IGludAotICAgb2JqZmlsZV9wdXJnZV9zb2xpYnMgKCk7Ci0gfQotIAotKy8qIFNlZSBzb2xpYi5o LiAgKi8KLSsKLSt2b2lkCi0rdXBkYXRlX3NvbGliX2JyZWFrcG9pbnRzICh2b2lkKQotK3sKLSsg IHN0cnVjdCB0YXJnZXRfc29fb3BzICpvcHMgPSBzb2xpYl9vcHMgKHRhcmdldF9nZGJhcmNoICgp KTsKLSsKLSsgIGlmIChvcHMtPnVwZGF0ZV9icmVha3BvaW50cyAhPSBOVUxMKQotKyAgICBvcHMt PnVwZGF0ZV9icmVha3BvaW50cyAoKTsKLSt9Ci0rCi0rLyogU2VlIHNvbGliLmguICAqLwotKwot K3ZvaWQKLStoYW5kbGVfc29saWJfZXZlbnQgKHZvaWQpCi0rewotKyAgc3RydWN0IHRhcmdldF9z b19vcHMgKm9wcyA9IHNvbGliX29wcyAodGFyZ2V0X2dkYmFyY2ggKCkpOwotKwotKyAgaWYgKG9w cy0+aGFuZGxlX2V2ZW50ICE9IE5VTEwpCi0rICAgIG9wcy0+aGFuZGxlX2V2ZW50ICgpOwotKwot KyAgY2xlYXJfcHJvZ3JhbV9zcGFjZV9zb2xpYl9jYWNoZSAoY3VycmVudF9pbmZlcmlvciAoKS0+ cHNwYWNlKTsKLSsKLSsgIC8qIENoZWNrIGZvciBhbnkgbmV3bHkgYWRkZWQgc2hhcmVkIGxpYnJh cmllcyBpZiB3ZSdyZSBzdXBwb3NlZCB0bwotKyAgICAgYmUgYWRkaW5nIHRoZW0gYXV0b21hdGlj YWxseS4gIFN3aXRjaCB0ZXJtaW5hbCBmb3IgYW55IG1lc3NhZ2VzCi0rICAgICBwcm9kdWNlZCBi eSBicmVha3BvaW50X3JlX3NldC4gICovCi0rICB0YXJnZXRfdGVybWluYWxfb3Vyc19mb3Jfb3V0 cHV0ICgpOwotKyAgc29saWJfYWRkIChOVUxMLCAwLCAmY3VycmVudF90YXJnZXQsIGF1dG9fc29s aWJfYWRkKTsKLSsgIHRhcmdldF90ZXJtaW5hbF9pbmZlcmlvciAoKTsKLSt9Ci0rCi0rCi0gLyog UmVsb2FkIHNoYXJlZCBsaWJyYXJpZXMsIGJ1dCBhdm9pZCByZWxvYWRpbmcgdGhlIHNhbWUgc3lt Ym9sIGZpbGUKLSAgICB3ZSBhbHJlYWR5IGhhdmUgbG9hZGVkLiAgKi8KLSAKLUluZGV4OiBnZGIt Ny42L2dkYi9zb2xpc3QuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvc29saXN0 LmgJMjAxMy0wMS0wMSAwNzozMjo1MS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy42L2dkYi9z b2xpc3QuaAkyMDEzLTA1LTE5IDE2OjE2OjIwLjgzODA4Njk0NiArMDIwMAotQEAgLTE0OCw2ICsx NDgsMTkgQEAgc3RydWN0IHRhcmdldF9zb19vcHMKLSAgICAgICAgY29yZSBmaWxlIChpbiBwYXJ0 aWN1bGFyLCBmb3IgcmVhZG9ubHkgc2VjdGlvbnMpLiAgKi8KLSAgICAgaW50ICgqa2VlcF9kYXRh X2luX2NvcmUpIChDT1JFX0FERFIgdmFkZHIsCi0gCQkJICAgICAgdW5zaWduZWQgbG9uZyBzaXpl KTsKLSsKLSsgICAgLyogRW5hYmxlIG9yIGRpc2FibGUgb3B0aW9uYWwgc29saWIgZXZlbnQgYnJl YWtwb2ludHMgYXMKLSsgICAgICAgYXBwcm9wcmlhdGUuICBUaGlzIHNob3VsZCBiZSBjYWxsZWQg d2hlbmV2ZXIKLSsgICAgICAgc3RvcF9vbl9zb2xpYl9ldmVudHMgaXMgY2hhbmdlZC4gIFRoaXMg cG9pbnRlciBjYW4gYmUKLSsgICAgICAgTlVMTCwgaW4gd2hpY2ggY2FzZSBubyBlbmFibGluZyBv ciBkaXNhYmxpbmcgaXMgbmVjZXNzYXJ5Ci0rICAgICAgIGZvciB0aGlzIHRhcmdldC4gICovCi0r ICAgIHZvaWQgKCp1cGRhdGVfYnJlYWtwb2ludHMpICh2b2lkKTsKLSsKLSsgICAgLyogVGFyZ2V0 LXNwZWNpZmljIHByb2Nlc3Npbmcgb2Ygc29saWIgZXZlbnRzIHRoYXQgd2lsbCBiZQotKyAgICAg ICBwZXJmb3JtZWQgYmVmb3JlIHNvbGliX2FkZCBpcyBjYWxsZWQuICBUaGlzIHBvaW50ZXIgY2Fu IGJlCi0rICAgICAgIE5VTEwsIGluIHdoaWNoIGNhc2Ugbm8gc3BlY2lmaWMgcHJlcHJvY2Vzc2lu ZyBpcyBuZWNlc3NhcnkKLSsgICAgICAgZm9yIHRoaXMgdGFyZ2V0LiAgKi8KLSsgICAgdm9pZCAo KmhhbmRsZV9ldmVudCkgKHZvaWQpOwotICAgfTsKLSAKLSAvKiBGcmVlIHRoZSBtZW1vcnkgYXNz b2NpYXRlZCB3aXRoIGEgKHNvX2xpc3QgKikuICAqLwotSW5kZXg6IGdkYi03LjYvZ2RiL2luZnJ1 bi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9pbmZydW4uYwkyMDEzLTA1LTE5 IDE2OjE2OjIwLjUwODA4NzMxOCArMDIwMAotKysrIGdkYi03LjYvZ2RiL2luZnJ1bi5jCTIwMTMt MDUtMTkgMTY6MTY6MjAuODQwMDg2OTQ0ICswMjAwCi1AQCAtMzcwLDYgKzM3MCwxNiBAQCBzdGF0 aWMgc3RydWN0IHN5bWJvbCAqc3RlcF9zdGFydF9mdW5jdGlvCi0gLyogTm9uemVybyBpZiB3ZSB3 YW50IHRvIGdpdmUgY29udHJvbCB0byB0aGUgdXNlciB3aGVuIHdlJ3JlIG5vdGlmaWVkCi0gICAg b2Ygc2hhcmVkIGxpYnJhcnkgZXZlbnRzIGJ5IHRoZSBkeW5hbWljIGxpbmtlci4gICovCi0gaW50 IHN0b3Bfb25fc29saWJfZXZlbnRzOwotKwotKy8qIEVuYWJsZSBvciBkaXNhYmxlIG9wdGlvbmFs IHNoYXJlZCBsaWJyYXJ5IGV2ZW50IGJyZWFrcG9pbnRzCi0rICAgYXMgYXBwcm9wcmlhdGUgd2hl biB0aGUgYWJvdmUgZmxhZyBpcyBjaGFuZ2VkLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3NldF9z dG9wX29uX3NvbGliX2V2ZW50cyAoY2hhciAqYXJncywgaW50IGZyb21fdHR5LCBzdHJ1Y3QgY21k X2xpc3RfZWxlbWVudCAqYykKLSt7Ci0rICB1cGRhdGVfc29saWJfYnJlYWtwb2ludHMgKCk7Ci0r fQotKwotIHN0YXRpYyB2b2lkCi0gc2hvd19zdG9wX29uX3NvbGliX2V2ZW50cyAoc3RydWN0IHVp X2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLSAJCQkgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVu dCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi1AQCAtNzMzNSw3ICs3MzQ1LDcgQEAgU2hvdyBzdG9w cGluZyBmb3Igc2hhcmVkIGxpYnJhcnkgZXZlbnRzLgotIElmIG5vbnplcm8sIGdkYiB3aWxsIGdp dmUgY29udHJvbCB0byB0aGUgdXNlciB3aGVuIHRoZSBkeW5hbWljIGxpbmtlclxuXAotIG5vdGlm aWVzIGdkYiBvZiBzaGFyZWQgbGlicmFyeSBldmVudHMuICBUaGUgbW9zdCBjb21tb24gZXZlbnQg b2YgaW50ZXJlc3RcblwKLSB0byB0aGUgdXNlciB3b3VsZCBiZSBsb2FkaW5nL3VubG9hZGluZyBv ZiBhIG5ldyBsaWJyYXJ5LiIpLAotLQkJCSAgICBOVUxMLAotKwkJCSAgICBzZXRfc3RvcF9vbl9z b2xpYl9ldmVudHMsCi0gCQkJICAgIHNob3dfc3RvcF9vbl9zb2xpYl9ldmVudHMsCi0gCQkJICAg ICZzZXRsaXN0LCAmc2hvd2xpc3QpOwotIAotSW5kZXg6IGdkYi03LjYvZ2RiL3NvbGliLXN2cjQu YwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMTMtMDUt MTkgMTY6MTY6MjAuNDY4MDg3MzYzICswMjAwCi0rKysgZ2RiLTcuNi9nZGIvc29saWItc3ZyNC5j CTIwMTMtMDUtMTkgMTY6MjE6NDAuMjg1ODE2MDg0ICswMjAwCi1AQCAtNDcsOSArNDcsMTIgQEAK LSAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgotICNpbmNsdWRlICJnZGJfYmZkLmgiCi0gCi0rI2lu Y2x1ZGUgInByb2JlLmgiCi0rCi0gc3RhdGljIHN0cnVjdCBsaW5rX21hcF9vZmZzZXRzICpzdnI0 X2ZldGNoX2xpbmtfbWFwX29mZnNldHMgKHZvaWQpOwotIHN0YXRpYyBpbnQgc3ZyNF9oYXZlX2xp bmtfbWFwX29mZnNldHMgKHZvaWQpOwotIHN0YXRpYyB2b2lkIHN2cjRfcmVsb2NhdGVfbWFpbl9l eGVjdXRhYmxlICh2b2lkKTsKLStzdGF0aWMgdm9pZCBzdnI0X2ZyZWVfbGlicmFyeV9saXN0ICh2 b2lkICpwX2xpc3QpOwotIAotIC8qIExpbmsgbWFwIGluZm8gdG8gaW5jbHVkZSBpbiBhbiBhbGxv Y2F0ZWQgc29fbGlzdCBlbnRyeS4gICovCi0gCi1AQCAtMTA2LDYgKzEwOSw1NSBAQCBzdGF0aWMg Y29uc3QgIGNoYXIgKiBjb25zdCBtYWluX25hbWVfbGlzCi0gICBOVUxMCi0gfTsKLSAKLSsvKiBX aGF0IHRvIGRvIHdoZW4gYSBwcm9iZSBzdG9wIG9jY3Vycy4gICovCi0rCi0rZW51bSBwcm9iZV9h Y3Rpb24KLSsgIHsKLSsgICAgLyogU29tZXRoaW5nIHdlbnQgc2VyaW91c2x5IHdyb25nLiAgU3Rv cCB1c2luZyBwcm9iZXMgYW5kCi0rICAgICAgIHJldmVydCB0byB1c2luZyB0aGUgb2xkZXIgaW50 ZXJmYWNlLiAgKi8KLSsgICAgUFJPQkVTX0lOVEVSRkFDRV9GQUlMRUQsCi0rCi0rICAgIC8qIE5v IGFjdGlvbiBpcyByZXF1aXJlZC4gIFRoZSBzaGFyZWQgb2JqZWN0IGxpc3QgaXMgc3RpbGwKLSsg ICAgICAgdmFsaWQuICAqLwotKyAgICBET19OT1RISU5HLAotKwotKyAgICAvKiBUaGUgc2hhcmVk IG9iamVjdCBsaXN0IHNob3VsZCBiZSByZWxvYWRlZCBlbnRpcmVseS4gICovCi0rICAgIEZVTExf UkVMT0FELAotKwotKyAgICAvKiBBdHRlbXB0IHRvIGluY3JlbWVudGFsbHkgdXBkYXRlIHRoZSBz aGFyZWQgb2JqZWN0IGxpc3QuIElmCi0rICAgICAgIHRoZSB1cGRhdGUgZmFpbHMgb3IgaXMgbm90 IHBvc3NpYmxlLCBmYWxsIGJhY2sgdG8gcmVsb2FkaW5nCi0rICAgICAgIHRoZSBsaXN0IGluIGZ1 bGwuICAqLwotKyAgICBVUERBVEVfT1JfUkVMT0FELAotKyAgfTsKLSsKLSsvKiBBIHByb2JlJ3Mg bmFtZSBhbmQgaXRzIGFzc29jaWF0ZWQgYWN0aW9uLiAgKi8KLSsKLStzdHJ1Y3QgcHJvYmVfaW5m bwotK3sKLSsgIC8qIFRoZSBuYW1lIG9mIHRoZSBwcm9iZS4gICovCi0rICBjb25zdCBjaGFyICpu YW1lOwotKwotKyAgLyogV2hhdCB0byBkbyB3aGVuIGEgcHJvYmUgc3RvcCBvY2N1cnMuICAqLwot KyAgZW51bSBwcm9iZV9hY3Rpb24gYWN0aW9uOwotK307Ci0rCi0rLyogQSBsaXN0IG9mIG5hbWVk IHByb2JlcyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBhY3Rpb25zLiAgSWYgYWxsCi0rICAgcHJvYmVz IGFyZSBwcmVzZW50IGluIHRoZSBkeW5hbWljIGxpbmtlciB0aGVuIHRoZSBwcm9iZXMtYmFzZWQK LSsgICBpbnRlcmZhY2Ugd2lsbCBiZSB1c2VkLiAgKi8KLSsKLStzdGF0aWMgY29uc3Qgc3RydWN0 IHByb2JlX2luZm8gcHJvYmVfaW5mb1tdID0KLSt7Ci0rICB7ICJpbml0X3N0YXJ0IiwgRE9fTk9U SElORyB9LAotKyAgeyAiaW5pdF9jb21wbGV0ZSIsIEZVTExfUkVMT0FEIH0sCi0rICB7ICJtYXBf c3RhcnQiLCBET19OT1RISU5HIH0sCi0rICB7ICJtYXBfZmFpbGVkIiwgRE9fTk9USElORyB9LAot KyAgeyAicmVsb2NfY29tcGxldGUiLCBVUERBVEVfT1JfUkVMT0FEIH0sCi0rICB7ICJ1bm1hcF9z dGFydCIsIERPX05PVEhJTkcgfSwKLSsgIHsgInVubWFwX2NvbXBsZXRlIiwgRlVMTF9SRUxPQUQg fSwKLSt9OwotKwotKyNkZWZpbmUgTlVNX1BST0JFUyBBUlJBWV9TSVpFIChwcm9iZV9pbmZvKQot KwotIC8qIFJldHVybiBub24temVybyBpZiBHREJfU09fTkFNRSBhbmQgSU5GRVJJT1JfU09fTkFN RSByZXByZXNlbnQKLSAgICB0aGUgc2FtZSBzaGFyZWQgbGlicmFyeS4gICovCi0gCi1AQCAtMzEz LDE3ICszNjUsNTYgQEAgc3RydWN0IHN2cjRfaW5mbwotICAgQ09SRV9BRERSIGludGVycF90ZXh0 X3NlY3RfaGlnaDsKLSAgIENPUkVfQUREUiBpbnRlcnBfcGx0X3NlY3RfbG93OwotICAgQ09SRV9B RERSIGludGVycF9wbHRfc2VjdF9oaWdoOwotKwotKyAgLyogTm9uemVybyBpZiB0aGUgbGlzdCBv ZiBvYmplY3RzIHdhcyBsYXN0IG9idGFpbmVkIGZyb20gdGhlIHRhcmdldAotKyAgICAgdmlhIHFY ZmVyOmxpYnJhcmllcy1zdnI0OnJlYWQuICAqLwotKyAgaW50IHVzaW5nX3hmZXI7Ci0rCi0rICAv KiBUYWJsZSBtYXBwaW5nIGJyZWFrcG9pbnQgYWRkcmVzc2VzIHRvIHByb2JlcyBhbmQgYWN0aW9u cywgdXNlZAotKyAgICAgYnkgdGhlIHByb2Jlcy1iYXNlZCBpbnRlcmZhY2UuICAqLwotKyAgaHRh Yl90IHByb2Jlc190YWJsZTsKLSsKLSsgIC8qIExpc3Qgb2Ygb2JqZWN0cyBsb2FkZWQgaW50byB0 aGUgaW5mZXJpb3IsIHVzZWQgYnkgdGhlIHByb2Jlcy0KLSsgICAgIGJhc2VkIGludGVyZmFjZS4g ICovCi0rICBzdHJ1Y3Qgc29fbGlzdCAqc29saWJfbGlzdDsKLSB9OwotIAotIC8qIFBlci1wcm9n cmFtLXNwYWNlIGRhdGEga2V5LiAgKi8KLSBzdGF0aWMgY29uc3Qgc3RydWN0IHByb2dyYW1fc3Bh Y2VfZGF0YSAqc29saWJfc3ZyNF9wc3BhY2VfZGF0YTsKLSAKLSsvKiBGcmVlIHRoZSBwcm9iZXMg dGFibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rZnJlZV9wcm9iZXNfdGFibGUgKHN0cnVjdCBz dnI0X2luZm8gKmluZm8pCi0rewotKyAgaWYgKGluZm8tPnByb2Jlc190YWJsZSA9PSBOVUxMKQot KyAgICByZXR1cm47Ci0rCi0rICBodGFiX2RlbGV0ZSAoaW5mby0+cHJvYmVzX3RhYmxlKTsKLSsg IGluZm8tPnByb2Jlc190YWJsZSA9IE5VTEw7Ci0rfQotKwotKy8qIEZyZWUgdGhlIHNvbGliIGxp c3QuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rZnJlZV9zb2xpYl9saXN0IChzdHJ1Y3Qgc3ZyNF9p bmZvICppbmZvKQotK3sKLSsgIHN2cjRfZnJlZV9saWJyYXJ5X2xpc3QgKCZpbmZvLT5zb2xpYl9s aXN0KTsKLSsgIGluZm8tPnNvbGliX2xpc3QgPSBOVUxMOwotK30KLSsKLSBzdGF0aWMgdm9pZAot IHN2cjRfcHNwYWNlX2RhdGFfY2xlYW51cCAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSwg dm9pZCAqYXJnKQotIHsKLSAgIHN0cnVjdCBzdnI0X2luZm8gKmluZm87Ci0gCi0gICBpbmZvID0g cHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIHNvbGliX3N2cjRfcHNwYWNlX2RhdGEpOwotKyAg aWYgKGluZm8gPT0gTlVMTCkKLSsgICAgcmV0dXJuOwotKwotKyAgZnJlZV9wcm9iZXNfdGFibGUg KGluZm8pOwotKyAgZnJlZV9zb2xpYl9saXN0IChpbmZvKTsKLSsKLSAgIHhmcmVlIChpbmZvKTsK LSB9Ci0gCi1AQCAtOTgyLDYgKzEwNzMsMzYgQEAgc3ZyNF9mcmVlX2xpYnJhcnlfbGlzdCAodm9p ZCAqcF9saXN0KQotICAgICB9Ci0gfQotIAotKy8qIENvcHkgbGlicmFyeSBsaXN0LiAgKi8KLSsK LStzdGF0aWMgc3RydWN0IHNvX2xpc3QgKgotK3N2cjRfY29weV9saWJyYXJ5X2xpc3QgKHN0cnVj dCBzb19saXN0ICpzcmMpCi0rewotKyAgc3RydWN0IGxpbmtfbWFwX29mZnNldHMgKmxtbyA9IHN2 cjRfZmV0Y2hfbGlua19tYXBfb2Zmc2V0cyAoKTsKLSsgIHN0cnVjdCBzb19saXN0ICpkc3QgPSBO VUxMOwotKyAgc3RydWN0IHNvX2xpc3QgKipsaW5rID0gJmRzdDsKLSsKLSsgIHdoaWxlIChzcmMg IT0gTlVMTCkKLSsgICAgewotKyAgICAgIHN0cnVjdCBzb19saXN0ICpuZXc7Ci0rCi0rICAgICAg bmV3ID0gWFpBTExPQyAoc3RydWN0IHNvX2xpc3QpOwotKwotKyAgICAgIG1lbWNweSAobmV3LCBz cmMsIHNpemVvZiAoc3RydWN0IHNvX2xpc3QpKTsKLSsKLSsgICAgICBuZXctPmxtX2luZm8gPSB4 bWFsbG9jIChsbW8tPmxpbmtfbWFwX3NpemUpOwotKyAgICAgIG1lbWNweSAobmV3LT5sbV9pbmZv LCBzcmMtPmxtX2luZm8sIGxtby0+bGlua19tYXBfc2l6ZSk7Ci0rCi0rICAgICAgbmV3LT5uZXh0 ID0gTlVMTDsKLSsgICAgICAqbGluayA9IG5ldzsKLSsgICAgICBsaW5rID0gJm5ldy0+bmV4dDsK LSsKLSsgICAgICBzcmMgPSBzcmMtPm5leHQ7Ci0rICAgIH0KLSsKLSsgIHJldHVybiBkc3Q7Ci0r fQotKwotICNpZmRlZiBIQVZFX0xJQkVYUEFUCi0gCi0gI2luY2x1ZGUgInhtbC1zdXBwb3J0Lmgi Ci1AQCAtMTA5NywxNCArMTIxOCwxOSBAQCBzdnI0X3BhcnNlX2xpYnJhcmllcyAoY29uc3QgY2hh ciAqZG9jdW1lCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogQXR0ZW1wdCB0byBnZXQgc29fbGlz dCBmcm9tIHRhcmdldCB2aWEgcVhmZXI6bGlicmFyaWVzOnJlYWQgcGFja2V0LgotKy8qIEF0dGVt cHQgdG8gZ2V0IHNvX2xpc3QgZnJvbSB0YXJnZXQgdmlhIHFYZmVyOmxpYnJhcmllcy1zdnI0OnJl YWQgcGFja2V0LgotIAotICAgIFJldHVybiAwIGlmIHBhY2tldCBub3Qgc3VwcG9ydGVkLCAqU09f TElTVF9SRVRVUk4gaXMgbm90IG1vZGlmaWVkIGluIHN1Y2gKLSAgICBjYXNlLiAgUmV0dXJuIDEg aWYgKlNPX0xJU1RfUkVUVVJOIGNvbnRhaW5zIHRoZSBsaWJyYXJ5IGxpc3QsIGl0IG1heSBiZQot LSAgIGVtcHR5LCBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgYWxsIGl0cyBlbnRy aWVzLiAgKi8KLSsgICBlbXB0eSwgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIGFs bCBpdHMgZW50cmllcy4KLSsKLSsgICBOb3RlIHRoYXQgQU5ORVggbXVzdCBiZSBOVUxMIGlmIHRo ZSByZW1vdGUgZG9lcyBub3QgZXhwbGljaXRseSBhbGxvdwotKyAgIHFYZmVyOmxpYnJhcmllcy1z dnI0OnJlYWQgcGFja2V0cyB3aXRoIG5vbi1lbXB0eSBhbm5leGVzLiAgU3VwcG9ydCBmb3IKLSsg ICB0aGlzIGNhbiBiZSBjaGVja2VkIHVzaW5nIHRhcmdldF9hdWdtZW50ZWRfbGlicmFyaWVzX3N2 cjRfcmVhZCAoKS4gICovCi0gCi0gc3RhdGljIGludAotLXN2cjRfY3VycmVudF9zb3NfdmlhX3hm ZXJfbGlicmFyaWVzIChzdHJ1Y3Qgc3ZyNF9saWJyYXJ5X2xpc3QgKmxpc3QpCi0rc3ZyNF9jdXJy ZW50X3Nvc192aWFfeGZlcl9saWJyYXJpZXMgKHN0cnVjdCBzdnI0X2xpYnJhcnlfbGlzdCAqbGlz dCwKLSsJCQkJICAgICBjb25zdCBjaGFyICphbm5leCkKLSB7Ci0gICBjaGFyICpzdnI0X2xpYnJh cnlfZG9jdW1lbnQ7Ci0gICBpbnQgcmVzdWx0OwotQEAgLTExMTMsNyArMTIzOSw3IEBAIHN2cjRf Y3VycmVudF9zb3NfdmlhX3hmZXJfbGlicmFyaWVzIChzdHIKLSAgIC8qIEZldGNoIHRoZSBsaXN0 IG9mIHNoYXJlZCBsaWJyYXJpZXMuICAqLwotICAgc3ZyNF9saWJyYXJ5X2RvY3VtZW50ID0gdGFy Z2V0X3JlYWRfc3RyYWxsb2MgKCZjdXJyZW50X3RhcmdldCwKLSAJCQkJCQlUQVJHRVRfT0JKRUNU X0xJQlJBUklFU19TVlI0LAotLQkJCQkJCU5VTEwpOwotKwkJCQkJCWFubmV4KTsKLSAgIGlmIChz dnI0X2xpYnJhcnlfZG9jdW1lbnQgPT0gTlVMTCkKLSAgICAgcmV0dXJuIDA7Ci0gCi1AQCAtMTEy Nyw3ICsxMjUzLDggQEAgc3ZyNF9jdXJyZW50X3Nvc192aWFfeGZlcl9saWJyYXJpZXMgKHN0cgot ICNlbHNlCi0gCi0gc3RhdGljIGludAotLXN2cjRfY3VycmVudF9zb3NfdmlhX3hmZXJfbGlicmFy aWVzIChzdHJ1Y3Qgc3ZyNF9saWJyYXJ5X2xpc3QgKmxpc3QpCi0rc3ZyNF9jdXJyZW50X3Nvc192 aWFfeGZlcl9saWJyYXJpZXMgKHN0cnVjdCBzdnI0X2xpYnJhcnlfbGlzdCAqbGlzdCwKLSsJCQkJ ICAgICBjb25zdCBjaGFyICphbm5leCkKLSB7Ci0gICByZXR1cm4gMDsKLSB9Ci1AQCAtMTE2MSwx NSArMTI4OCwxNyBAQCBzdnI0X2RlZmF1bHRfc29zICh2b2lkKQotICAgcmV0dXJuIG5ldzsKLSB9 Ci0gCi0tLyogUmVhZCB0aGUgd2hvbGUgaW5mZXJpb3IgbGlicmFyaWVzIGNoYWluIHN0YXJ0aW5n IGF0IGFkZHJlc3MgTE0uICBBZGQgdGhlCi0tICAgZW50cmllcyB0byB0aGUgdGFpbCByZWZlcmVu Y2VkIGJ5IExJTktfUFRSX1BUUi4gIElnbm9yZSB0aGUgZmlyc3QgZW50cnkgaWYKLS0gICBJR05P UkVfRklSU1QgYW5kIHNldCBnbG9iYWwgTUFJTl9MTV9BRERSIGFjY29yZGluZyB0byBpdC4gICov Ci0rLyogUmVhZCB0aGUgd2hvbGUgaW5mZXJpb3IgbGlicmFyaWVzIGNoYWluIHN0YXJ0aW5nIGF0 IGFkZHJlc3MgTE0uCi0rICAgRXhwZWN0IHRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgY2hhaW4ncyBw cmV2aW91cyBlbnRyeSB0byBiZSBQUkVWX0xNLgotKyAgIEFkZCB0aGUgZW50cmllcyB0byB0aGUg dGFpbCByZWZlcmVuY2VkIGJ5IExJTktfUFRSX1BUUi4gIElnbm9yZSB0aGUKLSsgICBmaXJzdCBl bnRyeSBpZiBJR05PUkVfRklSU1QgYW5kIHNldCBnbG9iYWwgTUFJTl9MTV9BRERSIGFjY29yZGlu ZwotKyAgIHRvIGl0LiAgUmV0dXJucyBub256ZXJvIHVwb24gc3VjY2Vzcy4gICovCi0gCi0tc3Rh dGljIHZvaWQKLS1zdnI0X3JlYWRfc29fbGlzdCAoQ09SRV9BRERSIGxtLCBzdHJ1Y3Qgc29fbGlz dCAqKipsaW5rX3B0cl9wdHIsCi0tCQkgICBpbnQgaWdub3JlX2ZpcnN0KQotK3N0YXRpYyBpbnQK LStzdnI0X3JlYWRfc29fbGlzdCAoQ09SRV9BRERSIGxtLCBDT1JFX0FERFIgcHJldl9sbSwKLSsJ CSAgIHN0cnVjdCBzb19saXN0ICoqKmxpbmtfcHRyX3B0ciwgaW50IGlnbm9yZV9maXJzdCkKLSB7 Ci0tICBDT1JFX0FERFIgcHJldl9sbSA9IDAsIG5leHRfbG07Ci0rICBDT1JFX0FERFIgbmV4dF9s bTsKLSAKLSAgIGZvciAoOyBsbSAhPSAwOyBwcmV2X2xtID0gbG0sIGxtID0gbmV4dF9sbSkKLSAg ICAgewotQEAgLTExODUsNyArMTMxNCw3IEBAIHN2cjRfcmVhZF9zb19saXN0IChDT1JFX0FERFIg bG0sIHN0cnVjdAotICAgICAgIGlmIChuZXctPmxtX2luZm8gPT0gTlVMTCkKLSAJewotIAkgIGRv X2NsZWFudXBzIChvbGRfY2hhaW4pOwotLQkgIGJyZWFrOwotKwkgIHJldHVybiAwOwotIAl9Ci0g Ci0gICAgICAgbmV4dF9sbSA9IG5ldy0+bG1faW5mby0+bF9uZXh0OwotQEAgLTExOTYsNyArMTMy NSw3IEBAIHN2cjRfcmVhZF9zb19saXN0IChDT1JFX0FERFIgbG0sIHN0cnVjdAotIAkJICAgcGFk ZHJlc3MgKHRhcmdldF9nZGJhcmNoICgpLCBwcmV2X2xtKSwKLSAJCSAgIHBhZGRyZXNzICh0YXJn ZXRfZ2RiYXJjaCAoKSwgbmV3LT5sbV9pbmZvLT5sX3ByZXYpKTsKLSAJICBkb19jbGVhbnVwcyAo b2xkX2NoYWluKTsKLS0JICBicmVhazsKLSsJICByZXR1cm4gMDsKLSAJfQotIAotICAgICAgIC8q IEZvciBTVlI0IHZlcnNpb25zLCB0aGUgZmlyc3QgZW50cnkgaW4gdGhlIGxpbmsgbWFwIGlzIGZv ciB0aGUKLUBAIC0xMjkxLDE3ICsxNDIwLDE5IEBAIHN2cjRfcmVhZF9zb19saXN0IChDT1JFX0FE RFIgbG0sIHN0cnVjdAotICAgICAgICoqbGlua19wdHJfcHRyID0gbmV3OwotICAgICAgICpsaW5r X3B0cl9wdHIgPSAmbmV3LT5uZXh0OwotICAgICB9Ci0rCi0rICByZXR1cm4gMTsKLSB9Ci0gCi0t LyogSW1wbGVtZW50IHRoZSAiY3VycmVudF9zb3MiIHRhcmdldF9zb19vcHMgbWV0aG9kLiAgKi8K LSsvKiBSZWFkIHRoZSBmdWxsIGxpc3Qgb2YgY3VycmVudGx5IGxvYWRlZCBzaGFyZWQgb2JqZWN0 cyBkaXJlY3RseSBmcm9tCi0rICAgdGhlIGluZmVyaW9yLiAgKi8KLSAKLSBzdGF0aWMgc3RydWN0 IHNvX2xpc3QgKgotLXN2cjRfY3VycmVudF9zb3MgKHZvaWQpCi0rc3ZyNF9jdXJyZW50X3Nvc19k aXJlY3QgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8pCi0gewotICAgQ09SRV9BRERSIGxtOwotICAg c3RydWN0IHNvX2xpc3QgKmhlYWQgPSBOVUxMOwotICAgc3RydWN0IHNvX2xpc3QgKipsaW5rX3B0 ciA9ICZoZWFkOwotLSAgc3RydWN0IHN2cjRfaW5mbyAqaW5mbzsKLSAgIHN0cnVjdCBjbGVhbnVw ICpiYWNrX3RvOwotICAgaW50IGlnbm9yZV9maXJzdDsKLSAgIHN0cnVjdCBzdnI0X2xpYnJhcnlf bGlzdCBsaWJyYXJ5X2xpc3Q7Ci1AQCAtMTMxNCwxOSArMTQ0NSwxNiBAQCBzdnI0X2N1cnJlbnRf c29zICh2b2lkKQotICAgICAgVW5mb3J0dW5hdGVseSBzdGF0aWNhbGx5IGxpbmtlZCBpbmZlcmlv cnMgd2lsbCBhbHNvIGZhbGwgYmFjayB0aHJvdWdoIHRoaXMKLSAgICAgIHN1Ym9wdGltYWwgY29k ZSBwYXRoLiAgKi8KLSAKLS0gIGlmIChzdnI0X2N1cnJlbnRfc29zX3ZpYV94ZmVyX2xpYnJhcmll cyAoJmxpYnJhcnlfbGlzdCkpCi0rICBpbmZvLT51c2luZ194ZmVyID0gc3ZyNF9jdXJyZW50X3Nv c192aWFfeGZlcl9saWJyYXJpZXMgKCZsaWJyYXJ5X2xpc3QsCi0rCQkJCQkJCSAgTlVMTCk7Ci0r ICBpZiAoaW5mby0+dXNpbmdfeGZlcikKLSAgICAgewotICAgICAgIGlmIChsaWJyYXJ5X2xpc3Qu bWFpbl9sbSkKLS0JewotLQkgIGluZm8gPSBnZXRfc3ZyNF9pbmZvICgpOwotLQkgIGluZm8tPm1h aW5fbG1fYWRkciA9IGxpYnJhcnlfbGlzdC5tYWluX2xtOwotLQl9Ci0rCWluZm8tPm1haW5fbG1f YWRkciA9IGxpYnJhcnlfbGlzdC5tYWluX2xtOwotIAotICAgICAgIHJldHVybiBsaWJyYXJ5X2xp c3QuaGVhZCA/IGxpYnJhcnlfbGlzdC5oZWFkIDogc3ZyNF9kZWZhdWx0X3NvcyAoKTsKLSAgICAg fQotIAotLSAgaW5mbyA9IGdldF9zdnI0X2luZm8gKCk7Ci0tCi0gICAvKiBBbHdheXMgbG9jYXRl IHRoZSBkZWJ1ZyBzdHJ1Y3QsIGluIGNhc2UgaXQgaGFzIG1vdmVkLiAgKi8KLSAgIGluZm8tPmRl YnVnX2Jhc2UgPSAwOwotICAgbG9jYXRlX2Jhc2UgKGluZm8pOwotQEAgLTEzNDksNyArMTQ3Nyw3 IEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCi0gICAgICBgc3RydWN0IHNvX2xpc3QnIG5vZGVz LiAgKi8KLSAgIGxtID0gc29saWJfc3ZyNF9yX21hcCAoaW5mbyk7Ci0gICBpZiAobG0pCi0tICAg IHN2cjRfcmVhZF9zb19saXN0IChsbSwgJmxpbmtfcHRyLCBpZ25vcmVfZmlyc3QpOwotKyAgICBz dnI0X3JlYWRfc29fbGlzdCAobG0sIDAsICZsaW5rX3B0ciwgaWdub3JlX2ZpcnN0KTsKLSAKLSAg IC8qIE9uIFNvbGFyaXMsIHRoZSBkeW5hbWljIGxpbmtlciBpcyBub3QgaW4gdGhlIG5vcm1hbCBs aXN0IG9mCi0gICAgICBzaGFyZWQgb2JqZWN0cywgc28gbWFrZSBzdXJlIHdlIHBpY2sgaXQgdXAg dG9vLiAgSGF2aW5nCi1AQCAtMTM1Nyw3ICsxNDg1LDcgQEAgc3ZyNF9jdXJyZW50X3NvcyAodm9p ZCkKLSAgICAgIGZvciBza2lwcGluZyBkeW5hbWljIGxpbmtlciByZXNvbHZlciBjb2RlLiAgKi8K LSAgIGxtID0gc29saWJfc3ZyNF9yX2xkc29tYXAgKGluZm8pOwotICAgaWYgKGxtKQotLSAgICBz dnI0X3JlYWRfc29fbGlzdCAobG0sICZsaW5rX3B0ciwgMCk7Ci0rICAgIHN2cjRfcmVhZF9zb19s aXN0IChsbSwgMCwgJmxpbmtfcHRyLCAwKTsKLSAKLSAgIGRpc2NhcmRfY2xlYW51cHMgKGJhY2tf dG8pOwotIAotQEAgLTEzNjcsNiArMTQ5NSwyMiBAQCBzdnI0X2N1cnJlbnRfc29zICh2b2lkKQot ICAgcmV0dXJuIGhlYWQ7Ci0gfQotIAotKy8qIEltcGxlbWVudCB0aGUgImN1cnJlbnRfc29zIiB0 YXJnZXRfc29fb3BzIG1ldGhvZC4gICovCi0rCi0rc3RhdGljIHN0cnVjdCBzb19saXN0ICoKLStz dnI0X2N1cnJlbnRfc29zICh2b2lkKQotK3sKLSsgIHN0cnVjdCBzdnI0X2luZm8gKmluZm8gPSBn ZXRfc3ZyNF9pbmZvICgpOwotKwotKyAgLyogSWYgd2UgYXJlIHVzaW5nIHRoZSBwcm9iZXMgaW50 ZXJmYWNlIGFuZCB0aGUgc29saWIgbGlzdCBoYXMKLSsgICAgIGJlZW4gY2FjaGVkIHRoZW4gd2Ug c2ltcGx5IHJldHVybiB0aGF0LiAgKi8KLSsgIGlmIChpbmZvLT5zb2xpYl9saXN0ICE9IE5VTEwp Ci0rICAgIHJldHVybiBzdnI0X2NvcHlfbGlicmFyeV9saXN0IChpbmZvLT5zb2xpYl9saXN0KTsK LSsKLSsgIC8qIE90aGVyd2lzZSBvYnRhaW4gdGhlIHNvbGliIGxpc3QgZGlyZWN0bHkgZnJvbSB0 aGUgaW5mZXJpb3IuICAqLwotKyAgcmV0dXJuIHN2cjRfY3VycmVudF9zb3NfZGlyZWN0IChpbmZv KTsKLSt9Ci0rCi0gLyogR2V0IHRoZSBhZGRyZXNzIG9mIHRoZSBsaW5rX21hcCBmb3IgYSBnaXZl biBPQkpGSUxFLiAgKi8KLSAKLSBDT1JFX0FERFIKLUBAIC0xNDQ5LDYgKzE1OTMsNDM0IEBAIGV4 ZWNfZW50cnlfcG9pbnQgKHN0cnVjdCBiZmQgKmFiZmQsIHN0cnUKLSAgIHJldHVybiBnZGJhcmNo X2FkZHJfYml0c19yZW1vdmUgKHRhcmdldF9nZGJhcmNoICgpLCBhZGRyKTsKLSB9Ci0gCi0rLyog QSBwcm9iZSBhbmQgaXRzIGFzc29jaWF0ZWQgYWN0aW9uLiAgKi8KLSsKLStzdHJ1Y3QgcHJvYmVf YW5kX2FjdGlvbgotK3sKLSsgIC8qIFRoZSBwcm9iZS4gICovCi0rICBzdHJ1Y3QgcHJvYmUgKnBy b2JlOwotKwotKyAgLyogVGhlIGFjdGlvbi4gICovCi0rICBlbnVtIHByb2JlX2FjdGlvbiBhY3Rp b247Ci0rfTsKLSsKLSsvKiBSZXR1cm5zIGEgaGFzaCBjb2RlIGZvciB0aGUgcHJvYmVfYW5kX2Fj dGlvbiByZWZlcmVuY2VkIGJ5IHAuICAqLwotKwotK3N0YXRpYyBoYXNodmFsX3QKLStoYXNoX3By b2JlX2FuZF9hY3Rpb24gKGNvbnN0IHZvaWQgKnApCi0rewotKyAgY29uc3Qgc3RydWN0IHByb2Jl X2FuZF9hY3Rpb24gKnBhID0gcDsKLSsKLSsgIHJldHVybiAoaGFzaHZhbF90KSBwYS0+cHJvYmUt PmFkZHJlc3M7Ci0rfQotKwotKy8qIFJldHVybnMgbm9uLXplcm8gaWYgdGhlIHByb2JlX2FuZF9h Y3Rpb25zIHJlZmVyZW5jZWQgYnkgcDEgYW5kIHAyCi0rICAgYXJlIGVxdWFsLiAgKi8KLSsKLStz dGF0aWMgaW50Ci0rZXF1YWxfcHJvYmVfYW5kX2FjdGlvbiAoY29uc3Qgdm9pZCAqcDEsIGNvbnN0 IHZvaWQgKnAyKQotK3sKLSsgIGNvbnN0IHN0cnVjdCBwcm9iZV9hbmRfYWN0aW9uICpwYTEgPSBw MTsKLSsgIGNvbnN0IHN0cnVjdCBwcm9iZV9hbmRfYWN0aW9uICpwYTIgPSBwMjsKLSsKLSsgIHJl dHVybiBwYTEtPnByb2JlLT5hZGRyZXNzID09IHBhMi0+cHJvYmUtPmFkZHJlc3M7Ci0rfQotKwot Ky8qIFJlZ2lzdGVyIGEgc29saWIgZXZlbnQgcHJvYmUgYW5kIGl0cyBhc3NvY2lhdGVkIGFjdGlv biBpbiB0aGUKLSsgICBwcm9iZXMgdGFibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rcmVnaXN0 ZXJfc29saWJfZXZlbnRfcHJvYmUgKHN0cnVjdCBwcm9iZSAqcHJvYmUsIGVudW0gcHJvYmVfYWN0 aW9uIGFjdGlvbikKLSt7Ci0rICBzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvID0gZ2V0X3N2cjRfaW5m byAoKTsKLSsgIHN0cnVjdCBwcm9iZV9hbmRfYWN0aW9uIGxvb2t1cCwgKnBhOwotKyAgdm9pZCAq KnNsb3Q7Ci0rCi0rICAvKiBDcmVhdGUgdGhlIHByb2JlcyB0YWJsZSwgaWYgbmVjZXNzYXJ5LiAg Ki8KLSsgIGlmIChpbmZvLT5wcm9iZXNfdGFibGUgPT0gTlVMTCkKLSsgICAgewotKyAgICAgIGlu Zm8tPnByb2Jlc190YWJsZSA9IGh0YWJfY3JlYXRlX2FsbG9jICgxLCBoYXNoX3Byb2JlX2FuZF9h Y3Rpb24sCi0rCQkJCQkgICAgICBlcXVhbF9wcm9iZV9hbmRfYWN0aW9uLAotKwkJCQkJICAgICAg eGZyZWUsIHhjYWxsb2MsIHhmcmVlKTsKLSsgICAgfQotKwotKyAgbG9va3VwLnByb2JlID0gcHJv YmU7Ci0rICBzbG90ID0gaHRhYl9maW5kX3Nsb3QgKGluZm8tPnByb2Jlc190YWJsZSwgJmxvb2t1 cCwgSU5TRVJUKTsKLSsgIGdkYl9hc3NlcnQgKCpzbG90ID09IEhUQUJfRU1QVFlfRU5UUlkpOwot KwotKyAgcGEgPSBYQ05FVyAoc3RydWN0IHByb2JlX2FuZF9hY3Rpb24pOwotKyAgcGEtPnByb2Jl ID0gcHJvYmU7Ci0rICBwYS0+YWN0aW9uID0gYWN0aW9uOwotKwotKyAgKnNsb3QgPSBwYTsKLSt9 Ci0rCi0rLyogR2V0IHRoZSBzb2xpYiBldmVudCBwcm9iZSBhdCB0aGUgc3BlY2lmaWVkIGxvY2F0 aW9uLCBhbmQgdGhlCi0rICAgYWN0aW9uIGFzc29jaWF0ZWQgd2l0aCBpdC4gIFJldHVybnMgTlVM TCBpZiBubyBzb2xpYiBldmVudCBwcm9iZQotKyAgIHdhcyBmb3VuZC4gICovCi0rCi0rc3RhdGlj IHN0cnVjdCBwcm9iZV9hbmRfYWN0aW9uICoKLStzb2xpYl9ldmVudF9wcm9iZV9hdCAoc3RydWN0 IHN2cjRfaW5mbyAqaW5mbywgQ09SRV9BRERSIGFkZHJlc3MpCi0rewotKyAgc3RydWN0IHByb2Jl IGxvb2t1cF9wcm9iZTsKLSsgIHN0cnVjdCBwcm9iZV9hbmRfYWN0aW9uIGxvb2t1cDsKLSsgIHZv aWQgKipzbG90OwotKwotKyAgbG9va3VwX3Byb2JlLmFkZHJlc3MgPSBhZGRyZXNzOwotKyAgbG9v a3VwLnByb2JlID0gJmxvb2t1cF9wcm9iZTsKLSsgIHNsb3QgPSBodGFiX2ZpbmRfc2xvdCAoaW5m by0+cHJvYmVzX3RhYmxlLCAmbG9va3VwLCBOT19JTlNFUlQpOwotKwotKyAgaWYgKHNsb3QgPT0g TlVMTCkKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICByZXR1cm4gKHN0cnVjdCBwcm9iZV9hbmRf YWN0aW9uICopICpzbG90OwotK30KLSsKLSsvKiBEZWNpZGUgd2hhdCBhY3Rpb24gdG8gdGFrZSB3 aGVuIHRoZSBzcGVjaWZpZWQgc29saWIgZXZlbnQgcHJvYmUgaXMKLSsgICBoaXQuICAqLwotKwot K3N0YXRpYyBlbnVtIHByb2JlX2FjdGlvbgotK3NvbGliX2V2ZW50X3Byb2JlX2FjdGlvbiAoc3Ry dWN0IHByb2JlX2FuZF9hY3Rpb24gKnBhKQotK3sKLSsgIGVudW0gcHJvYmVfYWN0aW9uIGFjdGlv bjsKLSsgIHVuc2lnbmVkIHByb2JlX2FyZ2M7Ci0rCi0rICBhY3Rpb24gPSBwYS0+YWN0aW9uOwot KyAgaWYgKGFjdGlvbiA9PSBET19OT1RISU5HIHx8IGFjdGlvbiA9PSBQUk9CRVNfSU5URVJGQUNF X0ZBSUxFRCkKLSsgICAgcmV0dXJuIGFjdGlvbjsKLSsKLSsgIGdkYl9hc3NlcnQgKGFjdGlvbiA9 PSBGVUxMX1JFTE9BRCB8fCBhY3Rpb24gPT0gVVBEQVRFX09SX1JFTE9BRCk7Ci0rCi0rICAvKiBD aGVjayB0aGF0IGFuIGFwcHJvcHJpYXRlIG51bWJlciBvZiBhcmd1bWVudHMgaGFzIGJlZW4gc3Vw cGxpZWQuCi0rICAgICBXZSBleHBlY3Q6Ci0rICAgICAgIGFyZzA6IExtaWRfdCBsbWlkIChtYW5k YXRvcnkpCi0rICAgICAgIGFyZzE6IHN0cnVjdCByX2RlYnVnICpkZWJ1Z19iYXNlIChtYW5kYXRv cnkpCi0rICAgICAgIGFyZzI6IHN0cnVjdCBsaW5rX21hcCAqbmV3IChvcHRpb25hbCwgZm9yIGlu Y3JlbWVudGFsIHVwZGF0ZXMpICAqLwotKyAgcHJvYmVfYXJnYyA9IGdldF9wcm9iZV9hcmd1bWVu dF9jb3VudCAocGEtPnByb2JlKTsKLSsgIGlmIChwcm9iZV9hcmdjID09IDIpCi0rICAgIGFjdGlv biA9IEZVTExfUkVMT0FEOwotKyAgZWxzZSBpZiAocHJvYmVfYXJnYyA8IDIpCi0rICAgIGFjdGlv biA9IFBST0JFU19JTlRFUkZBQ0VfRkFJTEVEOwotKwotKyAgcmV0dXJuIGFjdGlvbjsKLSt9Ci0r Ci0rLyogUG9wdWxhdGUgdGhlIHNoYXJlZCBvYmplY3QgbGlzdCBieSByZWFkaW5nIHRoZSBlbnRp cmUgbGlzdCBvZgotKyAgIHNoYXJlZCBvYmplY3RzIGZyb20gdGhlIGluZmVyaW9yLiAgUmV0dXJu cyBub256ZXJvIG9uIHN1Y2Nlc3MuICAqLwotKwotK3N0YXRpYyBpbnQKLStzb2xpc3RfdXBkYXRl X2Z1bGwgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8pCi0rewotKyAgc3ZyNF9mcmVlX2xpYnJhcnlf bGlzdCAoJmluZm8tPnNvbGliX2xpc3QpOwotKyAgaW5mby0+c29saWJfbGlzdCA9IHN2cjRfY3Vy cmVudF9zb3NfZGlyZWN0IChpbmZvKTsKLSsKLSsgIHJldHVybiAxOwotK30KLSsKLSsvKiBVcGRh dGUgdGhlIHNoYXJlZCBvYmplY3QgbGlzdCBzdGFydGluZyBmcm9tIHRoZSBsaW5rLW1hcCBlbnRy eQotKyAgIHBhc3NlZCBieSB0aGUgbGlua2VyIGluIHRoZSBwcm9iZSdzIHRoaXJkIGFyZ3VtZW50 LiAgUmV0dXJucwotKyAgIG5vbnplcm8gaWYgdGhlIGxpc3Qgd2FzIHN1Y2Nlc3NmdWxseSB1cGRh dGVkLCBvciB6ZXJvIHRvIGluZGljYXRlCi0rICAgZmFpbHVyZS4gICovCi0rCi0rc3RhdGljIGlu dAotK3NvbGlzdF91cGRhdGVfaW5jcmVtZW50YWwgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8sIENP UkVfQUREUiBsbSkKLSt7Ci0rICBzdHJ1Y3Qgc29fbGlzdCAqdGFpbDsKLSsgIENPUkVfQUREUiBw cmV2X2xtOwotKwotKyAgLyogRmFsbCBiYWNrIHRvIGEgZnVsbCB1cGRhdGUgaWYgd2UgaGF2ZW4n dCByZWFkIGFueXRoaW5nIHlldC4gICovCi0rICBpZiAoaW5mby0+c29saWJfbGlzdCA9PSBOVUxM KQotKyAgICByZXR1cm4gMDsKLSsKLSsgIC8qIEZhbGwgYmFjayB0byBhIGZ1bGwgdXBkYXRlIGlm IHdlIGFyZSB1c2luZyBhIHJlbW90ZSB0YXJnZXQKLSsgICAgIHRoYXQgZG9lcyBub3Qgc3VwcG9y dCBpbmNyZW1lbnRhbCB0cmFuc2ZlcnMuICAqLwotKyAgaWYgKGluZm8tPnVzaW5nX3hmZXIgJiYg IXRhcmdldF9hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVhZCgpKQotKyAgICByZXR1cm4gMDsK LSsKLSsgIC8qIFdhbGsgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC4gICovCi0rICBmb3IgKHRhaWwg PSBpbmZvLT5zb2xpYl9saXN0OyB0YWlsLT5uZXh0OyB0YWlsID0gdGFpbC0+bmV4dCk7Ci0rICBw cmV2X2xtID0gdGFpbC0+bG1faW5mby0+bG1fYWRkcjsKLSsKLSsgIC8qIFJlYWQgdGhlIG5ldyBv YmplY3RzLiAgKi8KLSsgIGlmIChpbmZvLT51c2luZ194ZmVyKQotKyAgICB7Ci0rICAgICAgc3Ry dWN0IHN2cjRfbGlicmFyeV9saXN0IGxpYnJhcnlfbGlzdDsKLSsgICAgICBjaGFyIGFubmV4WzY0 XTsKLSsKLSsgICAgICB4c25wcmludGYgKGFubmV4LCBzaXplb2YgKGFubmV4KSwgInN0YXJ0PSVs eDtwcmV2PSVseCIsIGxtLCBwcmV2X2xtKTsKLSsgICAgICBpZiAoIXN2cjRfY3VycmVudF9zb3Nf dmlhX3hmZXJfbGlicmFyaWVzICgmbGlicmFyeV9saXN0LCBhbm5leCkpCi0rCXJldHVybiAwOwot KwotKyAgICAgIHRhaWwtPm5leHQgPSBsaWJyYXJ5X2xpc3QuaGVhZDsKLSsgICAgfQotKyAgZWxz ZQotKyAgICB7Ci0rICAgICAgc3RydWN0IHNvX2xpc3QgKipsaW5rID0gJnRhaWwtPm5leHQ7Ci0r Ci0rICAgICAgaWYgKCFzdnI0X3JlYWRfc29fbGlzdCAobG0sIHByZXZfbG0sICZsaW5rLCAwKSkK LSsJcmV0dXJuIDA7Ci0rICAgIH0KLSsKLSsgIHJldHVybiAxOwotK30KLSsKLSsvKiBEaXNhYmxl IHRoZSBwcm9iZXMtYmFzZWQgbGlua2VyIGludGVyZmFjZSBhbmQgcmV2ZXJ0IHRvIHRoZQotKyAg IG9yaWdpbmFsIGludGVyZmFjZS4gIFdlIGRvbid0IHJlc2V0IHRoZSBicmVha3BvaW50cyBhcyB0 aGUKLSsgICBvbmVzIHNldCB1cCBmb3IgdGhlIHByb2Jlcy1iYXNlZCBpbnRlcmZhY2UgYXJlIGFk ZXF1YXRlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2Rpc2FibGVfcHJvYmVzX2ludGVyZmFjZV9j bGVhbnVwICh2b2lkICphcmcpCi0rewotKyAgc3RydWN0IHN2cjRfaW5mbyAqaW5mbyA9IGdldF9z dnI0X2luZm8gKCk7Ci0rCi0rICB3YXJuaW5nIChfKCJQcm9iZXMtYmFzZWQgZHluYW1pYyBsaW5r ZXIgaW50ZXJmYWNlIGZhaWxlZC5cbiIKLSsJICAgICAiUmV2ZXJ0aW5nIHRvIG9yaWdpbmFsIGlu dGVyZmFjZS5cbiIpKTsKLSsKLSsgIGZyZWVfcHJvYmVzX3RhYmxlIChpbmZvKTsKLSsgIGZyZWVf c29saWJfbGlzdCAoaW5mbyk7Ci0rfQotKwotKy8qIFVwZGF0ZSB0aGUgc29saWIgbGlzdCBhcyBh cHByb3ByaWF0ZSB3aGVuIHVzaW5nIHRoZQotKyAgIHByb2Jlcy1iYXNlZCBsaW5rZXIgaW50ZXJm YWNlLiAgRG8gbm90aGluZyBpZiB1c2luZyB0aGUKLSsgICBzdGFuZGFyZCBpbnRlcmZhY2UuICAq LwotKwotK3N0YXRpYyB2b2lkCi0rc3ZyNF9oYW5kbGVfc29saWJfZXZlbnQgKHZvaWQpCi0rewot KyAgc3RydWN0IHN2cjRfaW5mbyAqaW5mbyA9IGdldF9zdnI0X2luZm8gKCk7Ci0rICBzdHJ1Y3Qg cHJvYmVfYW5kX2FjdGlvbiAqcGE7Ci0rICBlbnVtIHByb2JlX2FjdGlvbiBhY3Rpb247Ci0rICBz dHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluLCAqdXNtX2NoYWluOwotKyAgc3RydWN0IHZhbHVlICp2 YWw7Ci0rICBDT1JFX0FERFIgcGMsIGRlYnVnX2Jhc2UsIGxtID0gMDsKLSsgIGludCBpc19pbml0 aWFsX25zOwotKwotKyAgLyogRG8gbm90aGluZyBpZiBub3QgdXNpbmcgdGhlIHByb2JlcyBpbnRl cmZhY2UuICAqLwotKyAgaWYgKGluZm8tPnByb2Jlc190YWJsZSA9PSBOVUxMKQotKyAgICByZXR1 cm47Ci0rCi0rICAvKiBJZiBhbnl0aGluZyBnb2VzIHdyb25nIHdlIHJldmVydCB0byB0aGUgb3Jp Z2luYWwgbGlua2VyCi0rICAgICBpbnRlcmZhY2UuICAqLwotKyAgb2xkX2NoYWluID0gbWFrZV9j bGVhbnVwIChkaXNhYmxlX3Byb2Jlc19pbnRlcmZhY2VfY2xlYW51cCwgTlVMTCk7Ci0rCi0rICBw YyA9IHJlZ2NhY2hlX3JlYWRfcGMgKGdldF9jdXJyZW50X3JlZ2NhY2hlICgpKTsKLSsgIHBhID0g c29saWJfZXZlbnRfcHJvYmVfYXQgKGluZm8sIHBjKTsKLSsgIGlmIChwYSA9PSBOVUxMKQotKyAg ICBnb3RvIGVycm9yOwotKwotKyAgYWN0aW9uID0gc29saWJfZXZlbnRfcHJvYmVfYWN0aW9uIChw YSk7Ci0rICBpZiAoYWN0aW9uID09IFBST0JFU19JTlRFUkZBQ0VfRkFJTEVEKQotKyAgICBnb3Rv IGVycm9yOwotKwotKyAgaWYgKGFjdGlvbiA9PSBET19OT1RISU5HKQotKyAgICByZXR1cm47Ci0r Ci0rICAvKiBFVkFMVUFURV9QUk9CRV9BUkdVTUVOVCBsb29rcyB1cCBzeW1ib2xzIGluIHRoZSBk eW5hbWljIGxpbmtlcgotKyAgICAgdXNpbmcgRklORF9QQ19TRUNUSU9OLiAgRklORF9QQ19TRUNU SU9OIGlzIGFjY2VsZXJhdGVkIGJ5IGEgY2FjaGUKLSsgICAgIGNhbGxlZCB0aGUgc2VjdGlvbiBt YXAuICBUaGUgc2VjdGlvbiBtYXAgaXMgaW52YWxpZGF0ZWQgZXZlcnkKLSsgICAgIHRpbWUgYSBz aGFyZWQgbGlicmFyeSBpcyBsb2FkZWQgb3IgdW5sb2FkZWQsIGFuZCBpZiB0aGUgaW5mZXJpb3IK LSsgICAgIGlzIGdlbmVyYXRpbmcgYSBsb3Qgb2Ygc2hhcmVkIGxpYnJhcnkgZXZlbnRzIHRoZW4g dGhlIHNlY3Rpb24gbWFwCi0rICAgICB3aWxsIGJlIHVwZGF0ZWQgZXZlcnkgdGltZSBTVlI0X0hB TkRMRV9TT0xJQl9FVkVOVCBpcyBjYWxsZWQuCi0rICAgICBXZSBjYWxsZWQgRklORF9QQ19TRUNU SU9OIGluIFNWUjRfQ1JFQVRFX1NPTElCX0VWRU5UX0JSRUFLUE9JTlRTLAotKyAgICAgc28gd2Ug Y2FuIGd1YXJhbnRlZSB0aGF0IHRoZSBkeW5hbWljIGxpbmtlcidzIHNlY3Rpb25zIGFyZSBpbiB0 aGUKLSsgICAgIHNlY3Rpb24gbWFwLiAgV2UgY2FuIHRoZXJlZm9yZSBpbmhpYml0IHNlY3Rpb24g bWFwIHVwZGF0ZXMgYWNyb3NzCi0rICAgICB0aGVzZSBjYWxscyB0byBFVkFMVUFURV9QUk9CRV9B UkdVTUVOVCBhbmQgc2F2ZSBhIGxvdCBvZiB0aW1lLiAgKi8KLSsgIGluaGliaXRfc2VjdGlvbl9t YXBfdXBkYXRlcyAoKTsKLSsgIHVzbV9jaGFpbiA9IG1ha2VfY2xlYW51cCAocmVzdW1lX3NlY3Rp b25fbWFwX3VwZGF0ZXNfY2xlYW51cCwgTlVMTCk7Ci0rCi0rICB2YWwgPSBldmFsdWF0ZV9wcm9i ZV9hcmd1bWVudCAocGEtPnByb2JlLCAxKTsKLSsgIGlmICh2YWwgPT0gTlVMTCkKLSsgICAgZ290 byBlcnJvcjsKLSsKLSsgIGRlYnVnX2Jhc2UgPSB2YWx1ZV9hc19hZGRyZXNzICh2YWwpOwotKyAg aWYgKGRlYnVnX2Jhc2UgPT0gMCkKLSsgICAgZ290byBlcnJvcjsKLSsKLSsgIC8qIEFsd2F5cyBs b2NhdGUgdGhlIGRlYnVnIHN0cnVjdCwgaW4gY2FzZSBpdCBtb3ZlZC4gICovCi0rICBpbmZvLT5k ZWJ1Z19iYXNlID0gMDsKLSsgIGlmIChsb2NhdGVfYmFzZSAoaW5mbykgPT0gMCkKLSsgICAgZ290 byBlcnJvcjsKLSsKLSsgIC8qIERvIG5vdCBwcm9jZXNzIG5hbWVzcGFjZXMgb3RoZXIgdGhhbiB0 aGUgaW5pdGlhbCBvbmUuICAqLwotKyAgaWYgKGRlYnVnX2Jhc2UgIT0gaW5mby0+ZGVidWdfYmFz ZSkKLSsgICAgYWN0aW9uID0gRE9fTk9USElORzsKLSsKLSsgIGlmIChhY3Rpb24gPT0gVVBEQVRF X09SX1JFTE9BRCkKLSsgICAgewotKyAgICAgIHZhbCA9IGV2YWx1YXRlX3Byb2JlX2FyZ3VtZW50 IChwYS0+cHJvYmUsIDIpOwotKyAgICAgIGlmICh2YWwgIT0gTlVMTCkKLSsJbG0gPSB2YWx1ZV9h c19hZGRyZXNzICh2YWwpOwotKwotKyAgICAgIGlmIChsbSA9PSAwKQotKwlhY3Rpb24gPSBGVUxM X1JFTE9BRDsKLSsgICAgfQotKwotKyAgLyogUmVzdW1lIHNlY3Rpb24gbWFwIHVwZGF0ZXMuICAq LwotKyAgZG9fY2xlYW51cHMgKHVzbV9jaGFpbik7Ci0rCi0rICBpZiAoYWN0aW9uID09IFVQREFU RV9PUl9SRUxPQUQpCi0rICAgIHsKLSsgICAgICBpZiAoIXNvbGlzdF91cGRhdGVfaW5jcmVtZW50 YWwgKGluZm8sIGxtKSkKLSsJYWN0aW9uID0gRlVMTF9SRUxPQUQ7Ci0rICAgIH0KLSsKLSsgIGlm IChhY3Rpb24gPT0gRlVMTF9SRUxPQUQpCi0rICAgIHsKLSsgICAgICBpZiAoIXNvbGlzdF91cGRh dGVfZnVsbCAoaW5mbykpCi0rCWdvdG8gZXJyb3I7Ci0rICAgIH0KLSsKLSsgIGRpc2NhcmRfY2xl YW51cHMgKG9sZF9jaGFpbik7Ci0rICByZXR1cm47Ci0rCi0rIGVycm9yOgotKyAgLyogV2Ugc2hv dWxkIG5ldmVyIHJlYWNoIGhlcmUsIGJ1dCBpZiB3ZSBkbyB3ZSBkaXNhYmxlIHRoZQotKyAgICAg cHJvYmVzIGludGVyZmFjZSBhbmQgcmV2ZXJ0IHRvIHRoZSBvcmlnaW5hbCBpbnRlcmZhY2UuICAq LwotKwotKyAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0rfQotKwotKy8qIEhlbHBlciBmdW5j dGlvbiBmb3Igc3ZyNF91cGRhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMuICAqLwotKwotK3N0 YXRpYyBpbnQKLStzdnI0X3VwZGF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50IChzdHJ1Y3QgYnJl YWtwb2ludCAqYiwgdm9pZCAqYXJnKQotK3sKLSsgIHN0cnVjdCBzdnI0X2luZm8gKmluZm8gPSBn ZXRfc3ZyNF9pbmZvICgpOwotKyAgc3RydWN0IGJwX2xvY2F0aW9uICpsb2M7Ci0rCi0rICBpZiAo Yi0+dHlwZSAhPSBicF9zaGxpYl9ldmVudCkKLSsgICAgcmV0dXJuIDA7IC8qIENvbnRpbnVlIGl0 ZXJhdGluZy4gICovCi0rCi0rICBmb3IgKGxvYyA9IGItPmxvYzsgbG9jOyBsb2MgPSBsb2MtPm5l eHQpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgcHJvYmVfYW5kX2FjdGlvbiAqcGEgPSBzb2xpYl9l dmVudF9wcm9iZV9hdCAoaW5mbywgbG9jLT5hZGRyZXNzKTsKLSsKLSsgICAgICBpZiAocGEgIT0g TlVMTCkKLSsJewotKwkgIGlmIChwYS0+YWN0aW9uID09IERPX05PVEhJTkcpCi0rCSAgICBiLT5l bmFibGVfc3RhdGUgPSAoc3RvcF9vbl9zb2xpYl9ldmVudHMKLSsJCQkgICAgICAgPyBicF9lbmFi bGVkIDogYnBfZGlzYWJsZWQpOwotKwotKwkgIHJldHVybiAwOyAvKiBDb250aW51ZSBpdGVyYXRp bmcuICAqLwotKwl9Ci0rICAgIH0KLSsKLSsgIHJldHVybiAwOyAvKiBDb250aW51ZSBpdGVyYXRp bmcuICAqLwotK30KLSsKLSsvKiBFbmFibGUgb3IgZGlzYWJsZSBvcHRpb25hbCBzb2xpYiBldmVu dCBicmVha3BvaW50cyBhcyBhcHByb3ByaWF0ZS4KLSsgICBDYWxsZWQgd2hlbmV2ZXIgc3RvcF9v bl9zb2xpYl9ldmVudHMgaXMgY2hhbmdlZC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStzdnI0X3Vw ZGF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50cyAodm9pZCkKLSt7Ci0rICBzdHJ1Y3Qgc3ZyNF9p bmZvICppbmZvID0gZ2V0X3N2cjRfaW5mbyAoKTsKLSsKLSsgIGlmIChpbmZvLT5wcm9iZXNfdGFi bGUpCi0rICAgIGl0ZXJhdGVfb3Zlcl9icmVha3BvaW50cyAoc3ZyNF91cGRhdGVfc29saWJfZXZl bnRfYnJlYWtwb2ludCwgTlVMTCk7Ci0rfQotKwotKy8qIENyZWF0ZSBhbmQgcmVnaXN0ZXIgc29s aWIgZXZlbnQgYnJlYWtwb2ludHMuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc3ZyNF9jcmVhdGVf cHJvYmVfYnJlYWtwb2ludHMgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKwkJCSAgICAgICBW RUMgKHByb2JlX3ApICoqcHJvYmVzKQotK3sKLSsgIGludCBpOwotKwotKyAgZm9yIChpID0gMDsg aSA8IE5VTV9QUk9CRVM7IGkrKykKLSsgICAgewotKyAgICAgIGVudW0gcHJvYmVfYWN0aW9uIGFj dGlvbiA9IHByb2JlX2luZm9baV0uYWN0aW9uOwotKyAgICAgIHN0cnVjdCBwcm9iZSAqcHJvYmU7 Ci0rICAgICAgaW50IGl4OwotKwotKyAgICAgIGZvciAoaXggPSAwOwotKwkgICBWRUNfaXRlcmF0 ZSAocHJvYmVfcCwgcHJvYmVzW2ldLCBpeCwgcHJvYmUpOwotKwkgICArK2l4KQotKwl7Ci0rCSAg Y3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnQgKGdkYmFyY2gsIHByb2JlLT5hZGRyZXNzKTsK LSsJICByZWdpc3Rlcl9zb2xpYl9ldmVudF9wcm9iZSAocHJvYmUsIGFjdGlvbik7Ci0rCX0KLSsg ICAgfQotKwotKyAgc3ZyNF91cGRhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMgKCk7Ci0rfQot KwotKy8qIEJvdGggdGhlIFN1bk9TIGFuZCB0aGUgU1ZSNCBkeW5hbWljIGxpbmtlcnMgY2FsbCBh IG1hcmtlciBmdW5jdGlvbgotKyAgIGJlZm9yZSBhbmQgYWZ0ZXIgbWFwcGluZyBhbmQgdW5tYXBw aW5nIHNoYXJlZCBsaWJyYXJpZXMuICBUaGUgc29sZQotKyAgIHB1cnBvc2Ugb2YgdGhpcyBtZXRo b2QgaXMgdG8gYWxsb3cgZGVidWdnZXJzIHRvIHNldCBhIGJyZWFrcG9pbnQgc28KLSsgICB0aGV5 IGNhbiB0cmFjayB0aGVzZSBjaGFuZ2VzLgotKwotKyAgIFNvbWUgdmVyc2lvbnMgb2YgdGhlIGds aWJjIGR5bmFtaWMgbGlua2VyIGNvbnRhaW4gbmFtZWQgcHJvYmVzCi0rICAgdG8gYWxsb3cgbW9y ZSBmaW5lIGdyYWluZWQgc3RvcHBpbmcuICBHaXZlbiB0aGUgYWRkcmVzcyBvZiB0aGUKLSsgICBv cmlnaW5hbCBtYXJrZXIgZnVuY3Rpb24sIHRoaXMgZnVuY3Rpb24gYXR0ZW1wdHMgdG8gZmluZCB0 aGVzZQotKyAgIHByb2JlcywgYW5kIGlmIGZvdW5kLCBzZXRzIGJyZWFrcG9pbnRzIG9uIHRob3Nl IGluc3RlYWQuICBJZiB0aGUKLSsgICBwcm9iZXMgYXJlbid0IGZvdW5kLCBhIHNpbmdsZSBicmVh a3BvaW50IGlzIHNldCBvbiB0aGUgb3JpZ2luYWwKLSsgICBtYXJrZXIgZnVuY3Rpb24uICAqLwot KwotK3N0YXRpYyB2b2lkCi0rc3ZyNF9jcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKwkJCQkgICAgIENPUkVfQUREUiBhZGRyZXNzKQotK3sK LSsgIHN0cnVjdCBzdnI0X2luZm8gKmluZm8gPSBnZXRfc3ZyNF9pbmZvICgpOwotKyAgc3RydWN0 IG9ial9zZWN0aW9uICpvczsKLSsKLSsgIG9zID0gZmluZF9wY19zZWN0aW9uIChhZGRyZXNzKTsK LSsgIGlmIChvcyAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgaW50IHdpdGhfcHJlZml4OwotKwot KyAgICAgIGZvciAod2l0aF9wcmVmaXggPSAwOyB3aXRoX3ByZWZpeCA8PSAxOyB3aXRoX3ByZWZp eCsrKQotKwl7Ci0rCSAgVkVDIChwcm9iZV9wKSAqcHJvYmVzW05VTV9QUk9CRVNdOwotKwkgIGlu dCBhbGxfcHJvYmVzX2ZvdW5kID0gMTsKLSsJICBpbnQgaTsKLSsKLSsJICBtZW1zZXQgKHByb2Jl cywgMCwgc2l6ZW9mIChwcm9iZXMpKTsKLSsJICBmb3IgKGkgPSAwOyBpIDwgTlVNX1BST0JFUzsg aSsrKQotKwkgICAgewotKwkgICAgICBjaGFyIG5hbWVbMzJdID0geyAnXDAnIH07Ci0rCi0rCSAg ICAgIC8qIEZlZG9yYSAxNywgUkhFTCA2LjIsIGFuZCBSSEVMIDYuMyBzaGlwcGVkIHdpdGggYW4K LSsJCSBlYXJseSB2ZXJzaW9uIG9mIHRoZSBwcm9iZXMgY29kZSBpbiB3aGljaCB0aGUgcHJvYmVz JwotKwkJIG5hbWVzIHdlcmUgcHJlZml4ZWQgd2l0aCAicnRsZF8iIGFuZCB0aGUgIm1hcF9mYWls ZWQiCi0rCQkgcHJvYmUgZGlkIG5vdCBleGlzdC4gIFRoZSBsb2NhdGlvbnMgb2YgdGhlIHByb2Jl cyBhcmUKLSsJCSBvdGhlcndpc2UgdGhlIHNhbWUsIHNvIHdlIGNoZWNrIGZvciBwcm9iZXMgd2l0 aAotKwkJIHByZWZpeGVkIG5hbWVzIGlmIHByb2JlcyB3aXRoIHVucHJlZml4ZWQgbmFtZXMgYXJl Ci0rCQkgbm90IHByZXNlbnQuICAqLwotKwotKwkgICAgICBpZiAod2l0aF9wcmVmaXgpCi0rCQlz dHJuY2F0IChuYW1lLCAicnRsZF8iLCBzaXplb2YgKG5hbWUpIC0gc3RybGVuIChuYW1lKSAtIDEp OwotKwotKwkgICAgICBzdHJuY2F0IChuYW1lLCBwcm9iZV9pbmZvW2ldLm5hbWUsCi0rCQkgICAg ICAgc2l6ZW9mIChuYW1lKSAtIHN0cmxlbiAobmFtZSkgLSAxKTsKLSsKLSsJICAgICAgcHJvYmVz W2ldID0gZmluZF9wcm9iZXNfaW5fb2JqZmlsZSAob3MtPm9iamZpbGUsICJydGxkIiwgbmFtZSk7 Ci0rCi0rCSAgICAgIGlmICghc3RyY21wIChuYW1lLCAicnRsZF9tYXBfZmFpbGVkIikpCi0rCQlj b250aW51ZTsKLSsKLSsJICAgICAgaWYgKCFWRUNfbGVuZ3RoIChwcm9iZV9wLCBwcm9iZXNbaV0p KQotKwkJewotKwkJICBhbGxfcHJvYmVzX2ZvdW5kID0gMDsKLSsJCSAgYnJlYWs7Ci0rCQl9Ci0r CSAgICB9Ci0rCi0rCSAgaWYgKGFsbF9wcm9iZXNfZm91bmQpCi0rCSAgICBzdnI0X2NyZWF0ZV9w cm9iZV9icmVha3BvaW50cyAoZ2RiYXJjaCwgcHJvYmVzKTsKLSsKLSsJICBmb3IgKGkgPSAwOyBp IDwgTlVNX1BST0JFUzsgaSsrKQotKwkgICAgVkVDX2ZyZWUgKHByb2JlX3AsIHByb2Jlc1tpXSk7 Ci0rCi0rCSAgaWYgKGFsbF9wcm9iZXNfZm91bmQpCi0rCSAgICByZXR1cm47Ci0rCX0KLSsgICAg fQotKwotKyAgY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnQgKGdkYmFyY2gsIGFkZHJlc3Mp OwotK30KLSsKLSAvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGdkYl9iZmRfbG9va3VwX3N5bWJvbC4g ICovCi0gCi0gc3RhdGljIGludAotQEAgLTE1MDEsNiArMjA3Myw4IEBAIGVuYWJsZV9icmVhayAo c3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW4KLSAgIGluZm8tPmludGVycF90ZXh0X3NlY3RfbG93 ID0gaW5mby0+aW50ZXJwX3RleHRfc2VjdF9oaWdoID0gMDsKLSAgIGluZm8tPmludGVycF9wbHRf c2VjdF9sb3cgPSBpbmZvLT5pbnRlcnBfcGx0X3NlY3RfaGlnaCA9IDA7Ci0gCi0rICBmcmVlX3By b2Jlc190YWJsZSAoaW5mbyk7Ci0rCi0gICAvKiBJZiB3ZSBhbHJlYWR5IGhhdmUgYSBzaGFyZWQg bGlicmFyeSBsaXN0IGluIHRoZSB0YXJnZXQsIGFuZAotICAgICAgcl9kZWJ1ZyBjb250YWlucyBy X2Jyaywgc2V0IHRoZSBicmVha3BvaW50IHRoZXJlIC0gdGhpcyBzaG91bGQKLSAgICAgIG1lYW4g cl9icmsgaGFzIGFscmVhZHkgYmVlbiByZWxvY2F0ZWQuICBBc3N1bWUgdGhlIGR5bmFtaWMgbGlu a2VyCi1AQCAtMTUzMiw3ICsyMTA2LDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZv ICppbmZvLCBpbgotIAkgVGhhdCBrbm93bGVkZ2UgaXMgZW5jb2RlZCBpbiB0aGUgYWRkcmVzcywg aWYgaXQncyBUaHVtYiB0aGUgbG93IGJpdAotIAkgaXMgMS4gIEhvd2V2ZXIsIHdlJ3ZlIHN0cmlw cGVkIHRoYXQgaW5mbyBhYm92ZSBhbmQgaXQncyBub3QgY2xlYXIKLSAJIHdoYXQgYWxsIHRoZSBj b25zZXF1ZW5jZXMgYXJlIG9mIHBhc3NpbmcgYSBub24tYWRkcl9iaXRzX3JlbW92ZSdkCi0tCSBh ZGRyZXNzIHRvIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50LiAgVGhlIGNhbGwgdG8KLSsJ IGFkZHJlc3MgdG8gc3ZyNF9jcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMuICBUaGUgY2Fs bCB0bwotIAkgZmluZF9wY19zZWN0aW9uIHZlcmlmaWVzIHdlIGtub3cgYWJvdXQgdGhlIGFkZHJl c3MgYW5kIGhhdmUgc29tZQotIAkgaG9wZSBvZiBjb21wdXRpbmcgdGhlIHJpZ2h0IGtpbmQgb2Yg YnJlYWtwb2ludCB0byB1c2UgKHZpYQotIAkgc3ltYm9sIGluZm8pLiAgSXQgZG9lcyBtZWFuIHRo YXQgR0RCIG5lZWRzIHRvIGJlIHBvaW50ZWQgYXQgYQotQEAgLTE1NzAsNyArMjE0NCw3IEBAIGVu YWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW4KLSAJCSsgYmZkX3NlY3Rpb25f c2l6ZSAodG1wX2JmZCwgaW50ZXJwX3NlY3QpOwotIAkgICAgfQotIAotLQkgIGNyZWF0ZV9zb2xp Yl9ldmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2RiYXJjaCAoKSwgc3ltX2FkZHIpOwotKwkgIHN2 cjRfY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzICh0YXJnZXRfZ2RiYXJjaCAoKSwgc3lt X2FkZHIpOwotIAkgIHJldHVybiAxOwotIAl9Ci0gICAgIH0KLUBAIC0xNzI4LDcgKzIzMDIsOCBA QCBlbmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8sIGluCi0gCi0gICAgICAgaWYg KHN5bV9hZGRyICE9IDApCi0gCXsKLS0JICBjcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludCAo dGFyZ2V0X2dkYmFyY2ggKCksIGxvYWRfYWRkciArIHN5bV9hZGRyKTsKLSsJICBzdnI0X2NyZWF0 ZV9zb2xpYl9ldmVudF9icmVha3BvaW50cyAodGFyZ2V0X2dkYmFyY2ggKCksCi0rCQkJCQkgICAg ICAgbG9hZF9hZGRyICsgc3ltX2FkZHIpOwotIAkgIHhmcmVlIChpbnRlcnBfbmFtZSk7Ci0gCSAg cmV0dXJuIDE7Ci0gCX0KLUBAIC0xNzU0LDcgKzIzMjksNyBAQCBlbmFibGVfYnJlYWsgKHN0cnVj dCBzdnI0X2luZm8gKmluZm8sIGluCi0gCSAgc3ltX2FkZHIgPSBnZGJhcmNoX2NvbnZlcnRfZnJv bV9mdW5jX3B0cl9hZGRyICh0YXJnZXRfZ2RiYXJjaCAoKSwKLSAJCQkJCQkJIHN5bV9hZGRyLAot IAkJCQkJCQkgJmN1cnJlbnRfdGFyZ2V0KTsKLS0JICBjcmVhdGVfc29saWJfZXZlbnRfYnJlYWtw b2ludCAodGFyZ2V0X2dkYmFyY2ggKCksIHN5bV9hZGRyKTsKLSsJICBzdnI0X2NyZWF0ZV9zb2xp Yl9ldmVudF9icmVha3BvaW50cyAodGFyZ2V0X2dkYmFyY2ggKCksIHN5bV9hZGRyKTsKLSAJICBy ZXR1cm4gMTsKLSAJfQotICAgICB9Ci1AQCAtMTc3MCw3ICsyMzQ1LDcgQEAgZW5hYmxlX2JyZWFr IChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBpbgotIAkgICAgICBzeW1fYWRkciA9IGdkYmFyY2hf Y29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHRhcmdldF9nZGJhcmNoICgpLAotIAkJCQkJCQkg ICAgIHN5bV9hZGRyLAotIAkJCQkJCQkgICAgICZjdXJyZW50X3RhcmdldCk7Ci0tCSAgICAgIGNy ZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2RiYXJjaCAoKSwgc3ltX2FkZHIp OwotKwkgICAgICBzdnI0X2NyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50cyAodGFyZ2V0X2dk YmFyY2ggKCksIHN5bV9hZGRyKTsKLSAJICAgICAgcmV0dXJuIDE7Ci0gCSAgICB9Ci0gCX0KLUBA IC0yMjY2LDYgKzI4NDEsOSBAQCBzdnI0X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChpbnQg ZnJvCi0gCi0gICBpbmZvID0gZ2V0X3N2cjRfaW5mbyAoKTsKLSAKLSsgIC8qIEZyZWUgdGhlIHBy b2Jlcy1iYXNlZCBpbnRlcmZhY2UncyBzb2xpYiBsaXN0LiAgKi8KLSsgIGZyZWVfc29saWJfbGlz dCAoaW5mbyk7Ci0rCi0gICAvKiBSZWxvY2F0ZSB0aGUgbWFpbiBleGVjdXRhYmxlIGlmIG5lY2Vz c2FyeS4gICovCi0gICBzdnI0X3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSAoKTsKLSAKLUBAIC0y NTA3LDQgKzMwODUsNiBAQCBfaW5pdGlhbGl6ZV9zdnI0X3NvbGliICh2b2lkKQotICAgc3ZyNF9z b19vcHMubG9va3VwX2xpYl9nbG9iYWxfc3ltYm9sID0gZWxmX2xvb2t1cF9saWJfc3ltYm9sOwot ICAgc3ZyNF9zb19vcHMuc2FtZSA9IHN2cjRfc2FtZTsKLSAgIHN2cjRfc29fb3BzLmtlZXBfZGF0 YV9pbl9jb3JlID0gc3ZyNF9rZWVwX2RhdGFfaW5fY29yZTsKLSsgIHN2cjRfc29fb3BzLnVwZGF0 ZV9icmVha3BvaW50cyA9IHN2cjRfdXBkYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzOwotKyAg c3ZyNF9zb19vcHMuaGFuZGxlX2V2ZW50ID0gc3ZyNF9oYW5kbGVfc29saWJfZXZlbnQ7Ci0gfQot SW5kZXg6IGdkYi03LjYvZ2RiL2JyZWFrcG9pbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYu b3JpZy9nZGIvYnJlYWtwb2ludC5jCTIwMTMtMDUtMTkgMTY6MTY6MjAuNjA2MDg3MjA4ICswMjAw Ci0rKysgZ2RiLTcuNi9nZGIvYnJlYWtwb2ludC5jCTIwMTMtMDUtMTkgMTY6MjE6NTUuMjg4ODA1 MjY5ICswMjAwCi1AQCAtNTM2MSwyNSArNTM2MSw2IEBAIGhhbmRsZV9qaXRfZXZlbnQgKHZvaWQp Ci0gICB0YXJnZXRfdGVybWluYWxfaW5mZXJpb3IgKCk7Ci0gfQotIAotLS8qIEhhbmRsZSBhbiBz b2xpYiBldmVudCBieSBjYWxsaW5nIHNvbGliX2FkZC4gICovCi0tCi0tdm9pZAotLWhhbmRsZV9z b2xpYl9ldmVudCAodm9pZCkKLS17Ci0tICBjbGVhcl9wcm9ncmFtX3NwYWNlX3NvbGliX2NhY2hl IChjdXJyZW50X2luZmVyaW9yICgpLT5wc3BhY2UpOwotLQotLSAgLyogQ2hlY2sgZm9yIGFueSBu ZXdseSBhZGRlZCBzaGFyZWQgbGlicmFyaWVzIGlmIHdlJ3JlIHN1cHBvc2VkIHRvCi0tICAgICBi ZSBhZGRpbmcgdGhlbSBhdXRvbWF0aWNhbGx5LiAgU3dpdGNoIHRlcm1pbmFsIGZvciBhbnkgbWVz c2FnZXMKLS0gICAgIHByb2R1Y2VkIGJ5IGJyZWFrcG9pbnRfcmVfc2V0LiAgKi8KLS0gIHRhcmdl dF90ZXJtaW5hbF9vdXJzX2Zvcl9vdXRwdXQgKCk7Ci0tI2lmZGVmIFNPTElCX0FERAotLSAgU09M SUJfQUREIChOVUxMLCAwLCAmY3VycmVudF90YXJnZXQsIGF1dG9fc29saWJfYWRkKTsKLS0jZWxz ZQotLSAgc29saWJfYWRkIChOVUxMLCAwLCAmY3VycmVudF90YXJnZXQsIGF1dG9fc29saWJfYWRk KTsKLS0jZW5kaWYKLS0gIHRhcmdldF90ZXJtaW5hbF9pbmZlcmlvciAoKTsKLS19Ci0tCi0gLyog UHJlcGFyZSBXSEFUIGZpbmFsIGRlY2lzaW9uIGZvciBpbmZydW4uICAqLwotIAotIC8qIERlY2lk ZSB3aGF0IGluZnJ1biBuZWVkcyB0byBkbyB3aXRoIHRoaXMgYnBzdGF0LiAgKi8KCmRpZmYgLS1n aXQgYS9nZGItZGxvcGVuLXN0YXAtcHJvYmUtNW9mOS5wYXRjaCBiL2dkYi1kbG9wZW4tc3RhcC1w cm9iZS01b2Y5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhYjU5 OGYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUtNW9mOS5wYXRjaApA QCAtMCwwICsxLDkxIEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEzLTA2 L21zZzAwMDE2Lmh0bWwKKworIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEzLzA1LzI0IDA0 OjUwOjI2CTEuMTQ2MworIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEzLzA2LzA0IDEzOjA3 OjQ1CTEuMTQ2NAorIyMgLTEsMyArMSwxMiBAQAorKzIwMTMtMDYtMDQgR2FyeSBCZW5zb24gIDxn YmVuc29uQHJlZGhhdC5jb20+CisrCisrCSogZ2RiLnRleGluZm8gKEdlbmVyYWwgUXVlcnkgUGFj a2V0cy9xU3VwcG9ydGVkKTogQWRkZWQKKysJInFYZmVyOmxpYnJhcmllcy1zdnI0OnJlYWQiIGFu ZCAiYXVnbWVudGVkLWxpYnJhcmllcy1zdnI0LXJlYWQiLgorKwl0byB0aGUgdGFibGUgb2YgY3Vy cmVudGx5IGRlZmluZWQgc3R1YiBmZWF0dXJlcy4KKysJQWRkZWQgYSBtb3JlIGRldGFpbGVkIGVu dHJ5IGZvciAiYXVnbWVudGVkLWxpYnJhcmllcy1zdnI0LXJlYWQiLgorKwkoR2VuZXJhbCBRdWVy eSBQYWNrZXRzL3FYZmVyOmxpYnJhcmllcy1zdnI0OnJlYWQpOiBEb2N1bWVudGVkCisrCXRoZSBh dWdtZW50ZWQgZm9ybSBvZiB0aGlzIHBhY2tldC4KKysKKyAyMDEzLTA1LTIzICBKb2VsIEJyb2Jl Y2tlciAgPGJyb2JlY2tlckBhZGFjb3JlLmNvbT4KKyAKKyAJKiBnZGIudGV4aW5mbyAoU3lzdGVt LXdpZGUgQ29uZmlndXJhdGlvbiBTY3JpcHRzKTogUmVuYW1lcworLS0tIHNyYy9nZGIvZG9jL2dk Yi50ZXhpbmZvCTIwMTMvMDUvMjQgMDQ6NTA6MjYJMS4xMDkzCisrKysgc3JjL2dkYi9kb2MvZ2Ri LnRleGluZm8JMjAxMy8wNi8wNCAxMzowNzo0NQkxLjEwOTQKK0BAIC0zODU5NCw2ICszODU5NCwx NiBAQAorIEB0YWIgQHNhbXB7LX0KKyBAdGFiIFllcworIAorK0BpdGVtIEBzYW1we3FYZmVyOmxp YnJhcmllcy1zdnI0OnJlYWR9CisrQHRhYiBObworK0B0YWIgQHNhbXB7LX0KKytAdGFiIFllcwor KworK0BpdGVtIEBzYW1we2F1Z21lbnRlZC1saWJyYXJpZXMtc3ZyNC1yZWFkfQorK0B0YWIgTm8K KytAdGFiIEBzYW1wey19CisrQHRhYiBObworKworIEBpdGVtIEBzYW1we3FYZmVyOm1lbW9yeS1t YXA6cmVhZH0KKyBAdGFiIE5vCisgQHRhYiBAc2FtcHstfQorQEAgLTM4NzcwLDYgKzM4NzgwLDEx IEBACisgVGhlIHJlbW90ZSBzdHViIHVuZGVyc3RhbmRzIHRoZSBAc2FtcHtxWGZlcjpsaWJyYXJp ZXMtc3ZyNDpyZWFkfSBwYWNrZXQKKyAoQHB4cmVme3FYZmVyIHN2cjQgbGlicmFyeSBsaXN0IHJl YWR9KS4KKyAKKytAaXRlbSBhdWdtZW50ZWQtbGlicmFyaWVzLXN2cjQtcmVhZAorK1RoZSByZW1v dGUgc3R1YiB1bmRlcnN0YW5kcyB0aGUgYXVnbWVudGVkIGZvcm0gb2YgdGhlCisrQHNhbXB7cVhm ZXI6bGlicmFyaWVzLXN2cjQ6cmVhZH0gcGFja2V0CisrKEBweHJlZntxWGZlciBzdnI0IGxpYnJh cnkgbGlzdCByZWFkfSkuCisrCisgQGl0ZW0gcVhmZXI6bWVtb3J5LW1hcDpyZWFkCisgVGhlIHJl bW90ZSBzdHViIHVuZGVyc3RhbmRzIHRoZSBAc2FtcHtxWGZlcjptZW1vcnktbWFwOnJlYWR9IHBh Y2tldAorIChAcHhyZWZ7cVhmZXIgbWVtb3J5IG1hcCByZWFkfSkuCitAQCAtMzkwNjUsNyArMzkw ODAsMTAgQEAKKyBAYW5jaG9ye3FYZmVyIHN2cjQgbGlicmFyeSBsaXN0IHJlYWR9CisgQWNjZXNz IHRoZSB0YXJnZXQncyBsaXN0IG9mIGxvYWRlZCBsaWJyYXJpZXMgd2hlbiB0aGUgdGFyZ2V0IGlz IGFuIFNWUjQKKyBwbGF0Zm9ybS4gIEB4cmVme0xpYnJhcnkgTGlzdCBGb3JtYXQgZm9yIFNWUjQg VGFyZ2V0c30uICBUaGUgYW5uZXggcGFydAorLW9mIHRoZSBnZW5lcmljIEBzYW1we3FYZmVyfSBw YWNrZXQgbXVzdCBiZSBlbXB0eSAoQHB4cmVme3FYZmVyIHJlYWR9KS4KKytvZiB0aGUgZ2VuZXJp YyBAc2FtcHtxWGZlcn0gcGFja2V0IG11c3QgYmUgZW1wdHkgdW5sZXNzIHRoZSByZW1vdGUKKytz dHViIGluZGljYXRlZCBpdCBzdXBwb3J0cyB0aGUgYXVnbWVudGVkIGZvcm0gb2YgdGhpcyBwYWNr ZXQKKytieSBzdXBwbHlpbmcgYW4gYXBwcm9wcmlhdGUgQHNhbXB7cVN1cHBvcnRlZH0gcmVzcG9u c2UKKysoQHB4cmVme3FYZmVyIHJlYWR9LCBAcmVme3FTdXBwb3J0ZWR9KS4KKyAKKyBUaGlzIHBh Y2tldCBpcyBvcHRpb25hbCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlIG9uIFNWUjQgdGFyZ2V0cy4g IAorIEB2YWx1ZXtHREJOfSB1c2VzIG1lbW9yeSByZWFkIHBhY2tldHMgdG8gcmVhZCB0aGUgU1ZS NCBsaWJyYXJ5IGxpc3Qgb3RoZXJ3aXNlLgorQEAgLTM5MDczLDYgKzM5MDkxLDMwIEBACisgVGhp cyBwYWNrZXQgaXMgbm90IHByb2JlZCBieSBkZWZhdWx0OyB0aGUgcmVtb3RlIHN0dWIgbXVzdCBy ZXF1ZXN0IGl0LAorIGJ5IHN1cHBseWluZyBhbiBhcHByb3ByaWF0ZSBAc2FtcHtxU3VwcG9ydGVk fSByZXNwb25zZSAoQHB4cmVme3FTdXBwb3J0ZWR9KS4KKyAKKytJZiB0aGUgcmVtb3RlIHN0dWIg aW5kaWNhdGVzIGl0IHN1cHBvcnRzIHRoZSBhdWdtZW50ZWQgZm9ybSBvZiB0aGlzCisrcGFja2V0 IHRoZW4gdGhlIGFubmV4IHBhcnQgb2YgdGhlIGdlbmVyaWMgQHNhbXB7cVhmZXJ9IHBhY2tldCBt YXkKKytjb250YWluIGEgc2VtaWNvbG9uLXNlcGFyYXRlZCBsaXN0IG9mIEBzYW1we0B2YXJ7bmFt ZX09QHZhcnt2YWx1ZX19CisrYXJndW1lbnRzLiAgVGhlIGN1cnJlbnRseSBzdXBwb3J0ZWQgYXJn dW1lbnRzIGFyZToKKysKKytAdGFibGUgQGNvZGUKKytAaXRlbSBzdGFydD1AdmFye2FkZHJlc3N9 CisrQSBoZXhhZGVjaW1hbCBudW1iZXIgc3BlY2lmeWluZyB0aGUgYWRkcmVzcyBvZiB0aGUgQHNh bXB7c3RydWN0CisrbGlua19tYXB9IHRvIHN0YXJ0IHJlYWRpbmcgdGhlIGxpYnJhcnkgbGlzdCBm cm9tLiAgSWYgdW5zZXQgb3IgemVybworK3RoZW4gdGhlIGZpcnN0IEBzYW1we3N0cnVjdCBsaW5r X21hcH0gaW4gdGhlIGxpYnJhcnkgbGlzdCB3aWxsIGJlCisrY2hvc2VuIGFzIHRoZSBzdGFydGlu ZyBwb2ludC4KKysKKytAaXRlbSBwcmV2PUB2YXJ7YWRkcmVzc30KKytBIGhleGFkZWNpbWFsIG51 bWJlciBzcGVjaWZ5aW5nIHRoZSBhZGRyZXNzIG9mIHRoZSBAc2FtcHtzdHJ1Y3QKKytsaW5rX21h cH0gaW1tZWRpYXRlbHkgcHJlY2VkaW5nIHRoZSBAc2FtcHtzdHJ1Y3QgbGlua19tYXB9Cisrc3Bl Y2lmaWVkIGJ5IHRoZSBAc2FtcHtzdGFydH0gYXJndW1lbnQuICBJZiB1bnNldCBvciB6ZXJvIHRo ZW4KKyt0aGUgcmVtb3RlIHN0dWIgd2lsbCBleHBlY3QgdGhhdCBubyBAc2FtcHtzdHJ1Y3QgbGlu a19tYXB9CisrZXhpc3RzIHByaW9yIHRvIHRoZSBzdGFydGluZyBwb2ludC4KKysKKytAZW5kIHRh YmxlCisrCisrQXJndW1lbnRzIHRoYXQgYXJlIG5vdCB1bmRlcnN0b29kIGJ5IHRoZSByZW1vdGUg c3R1YiB3aWxsIGJlIHNpbGVudGx5CisraWdub3JlZC4KKysKKyBAaXRlbSBxWGZlcjptZW1vcnkt bWFwOnJlYWQ6OkB2YXJ7b2Zmc2V0fSxAdmFye2xlbmd0aH0KKyBAYW5jaG9ye3FYZmVyIG1lbW9y eSBtYXAgcmVhZH0KKyBBY2Nlc3MgdGhlIHRhcmdldCdzIEBkZm57bWVtb3J5LW1hcH0uICBAeHJl ZntNZW1vcnkgTWFwIEZvcm1hdH0uICBUaGUKCmRpZmYgLS1naXQgYS9nZGItZGxvcGVuLXN0YXAt cHJvYmUtNm9mNy5wYXRjaCBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS02b2Y3LnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDBhYjM0Li4wMDAwMDAwCi0tLSBhL2dkYi1kbG9w ZW4tc3RhcC1wcm9iZS02b2Y3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcwICswLDAgQEAK LWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEzLTA1L21zZzAwNjMxLmh0 bWwKLVN1YmplY3Q6IFtSRkEgNi83XSBMaW5rZXItZGVidWdnZXIgaW50ZXJmYWNlIHRlc3RzIGJ5 IEphbgotCi0KLS0tSVlWOWNScjJ1NnJqY1A0QgotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBj aGFyc2V0PXVzLWFzY2lpCi1Db250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmUKLQotVGhpcyBwYXRj aCB1cGRhdGVzIHRoZSB0ZXN0c3VpdGUgdG8gY29wZSB3aXRoIHNvbWUgY2hhbmdlcyByZXN1bHRp bmcKLWZyb20gdGhlIHByb2Jlcy1iYXNlZCBpbnRlcmZhY2UsIGFuZCBhZGRzIGEgbmV3IHRlc3Qu ICBUaGlzIHBhdGNoIGlzCi1wcmluY2lwYWxseSB0aGUgd29yayBvZiBKYW4gS3JhdG9jaHZpbC4K LQotLS1JWVY5Y1JyMnU2cmpjUDRCCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9 dXMtYXNjaWkKLUNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSJydGxk LXByb2Jlcy02LXRlc3RzLWprLnBhdGNoIgotCi0yMDEzLTA1LTE2ICBKYW4gS3JhdG9jaHZpbCAg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0JICAgIEdhcnkgQmVuc29uICA8Z2JlbnNvbkBy ZWRoYXQuY29tPgotCi0JKiBsaWIvZ2RiLmV4cCAoYnVpbGRfZXhlY3V0YWJsZV9mcm9tX3NwZWNz KTogVXNlIGdkYl9jb21waWxlX3B0aHJlYWQsCi0JZ2RiX2NvbXBpbGVfc2hsaWIgb3IgZ2RiX2Nv bXBpbGVfc2hsaWJfcHRocmVhZHMgd2hlcmUgYXBwcm9wcmlhdGUuCi0JKiBsaWIvcHJlbGluay1z dXBwb3J0LmV4cCAoYnVpbGRfZXhlY3V0YWJsZV9vd25fbGlicyk6IEFsbG93IElOVEVSUAotCXRv IGJlIHNldCB0byAibm8iIHRvIGluZGljYXRlIHRoYXQgbm8gbGQuc28gY29weSBzaG91bGQgYmUg bWFkZS4KLQkqIGdkYi5iYXNlL2JyZWFrLWludGVycC5leHAgKHNvbGliX2JwKTogTmV3IGNvbnN0 YW50LgotCShyZWFjaF8xKTogVXNlIHRoZSBhYm92ZSBpbnN0ZWFkIG9mICJfZGxfZGVidWdfc3Rh dGUiLgotCSh0ZXN0X2F0dGFjaCk6IExpa2V3aXNlLgotCSh0ZXN0X2xkKTogTGlrZXdpc2UuCi0J KiBnZGIudGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC5leHA6IE5ldyBmaWxlLgotCSogZ2RiLnRo cmVhZHMvZGxvcGVuLWxpYnB0aHJlYWQuYzogTGlrZXdpc2UuCi0JKiBnZGIudGhyZWFkcy9kbG9w ZW4tbGlicHRocmVhZC1saWIuYzogTGlrZXdpc2UuCi0JKiBnZGIuYmFzZS9zb2xpYi1jb3JydXB0 ZWQuZXhwOiBEaXNhYmxlIHRlc3QgaWYgR0RCIGlzIHVzaW5nIHByb2Jlcy4KLQotSW5kZXg6IGdk Yi03LjYvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYu b3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTMtMDUtMTkgMTY6MDU6MzcuODgxODQw NjQ2ICswMjAwCi0rKysgZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTMtMDUt MTkgMTY6MDY6MTAuNDM2ODIyOTY0ICswMjAwCi1AQCAtNDAxMSwyMiArNDAxMSw2IEBAIHByb2Mg YnVpbGRfZXhlY3V0YWJsZV9mcm9tX3NwZWNzIHt0ZXN0bmEKLSAKLSAgICAgc2V0IGJpbmZpbGUg W3N0YW5kYXJkX291dHB1dF9maWxlICRleGVjdXRhYmxlXQotIAotLSAgICBzZXQgb2JqZWN0cyB7 fQotLSAgICBzZXQgaSAwCi0tICAgIGZvcmVhY2gge3MgbG9jYWxfb3B0aW9uc30gJGFyZ3Mgewot LSAgICAgICAgaWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c30iICIk e2JpbmZpbGV9JHtpfS5vIiBvYmplY3QgJGxvY2FsX29wdGlvbnNdICE9ICIiIH0gewotLSAgICAg ICAgICAgIHVudGVzdGVkICR0ZXN0bmFtZQotLSAgICAgICAgICAgIHJldHVybiAtMQotLSAgICAg ICAgfQotLSAgICAgICAgbGFwcGVuZCBvYmplY3RzICIke2JpbmZpbGV9JHtpfS5vIgotLQlpbmNy IGkKLS0gICAgfQotLSAgICAKLS0gICAgaWYgIHsgW2dkYl9jb21waWxlICRvYmplY3RzICIke2Jp bmZpbGV9IiBleGVjdXRhYmxlICRvcHRpb25zXSAhPSAiIiB9IHsKLS0gICAgICAgIHVudGVzdGVk ICR0ZXN0bmFtZQotLSAgICAgICAgcmV0dXJuIC0xCi0tICAgIH0KLS0KLSAgICAgc2V0IGluZm9f b3B0aW9ucyAiIgotICAgICBpZiB7IFtsc2VhcmNoIC1leGFjdCAkb3B0aW9ucyAiYysrIl0gPj0g MCB9IHsKLSAJc2V0IGluZm9fb3B0aW9ucyAiYysrIgotQEAgLTQwMzQsNiArNDAxOCw0MiBAQCBw cm9jIGJ1aWxkX2V4ZWN1dGFibGVfZnJvbV9zcGVjcyB7dGVzdG5hCi0gICAgIGlmIFtnZXRfY29t cGlsZXJfaW5mbyAke2luZm9fb3B0aW9uc31dIHsKLSAgICAgICAgIHJldHVybiAtMQotICAgICB9 Ci0rCi0rICAgIHNldCBiaW5maWxlIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAkZXhlY3V0YWJsZV0K LSsKLSsgICAgc2V0IGZ1bmMgZ2RiX2NvbXBpbGUKLSsgICAgc2V0IGZ1bmNfaW5kZXggW2xzZWFy Y2ggLXJlZ2V4cCAkb3B0aW9ucyB7XihwdGhyZWFkc3xzaGxpYnxzaGxpYl9wdGhyZWFkcykkfV0K LSsgICAgaWYgeyRmdW5jX2luZGV4ICE9IC0xfSB7Ci0rCXNldCBmdW5jICIke2Z1bmN9X1tsaW5k ZXggJG9wdGlvbnMgJGZ1bmNfaW5kZXhdIgotKyAgICB9Ci0rCi0rICAgICMgZ2RiX2NvbXBpbGVf c2hsaWIgYW5kIGdkYl9jb21waWxlX3NobGliX3B0aHJlYWRzIGRvIG5vdCB1c2UgdGhlIDNyZAot KyAgICAjIHBhcmFtZXRlci4gIFRoZXkgYWxzbyByZXF1aXJlcyAkc291cmNlcyB3aGlsZSBnZGJf Y29tcGlsZSBhbmQKLSsgICAgIyBnZGJfY29tcGlsZV9wdGhyZWFkcyByZXF1aXJlICRvYmplY3Rz LiAgTW9yZW92ZXIgdGhleSBpZ25vcmUgYW55IG9wdGlvbnMuCi0rICAgIGlmIFtzdHJpbmcgbWF0 Y2ggZ2RiX2NvbXBpbGVfc2hsaWIqICRmdW5jXSB7Ci0rCXNldCBzb3VyY2VzX3BhdGgge30KLSsJ Zm9yZWFjaCB7cyBsb2NhbF9vcHRpb25zfSAkYXJncyB7Ci0rCSAgICBsYXBwZW5kIHNvdXJjZXNf cGF0aCAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3N9IgotKwl9Ci0rCXNldCByZXQgWyRmdW5jICRz b3VyY2VzX3BhdGggIiR7YmluZmlsZX0iICRvcHRpb25zXQotKyAgICB9IGVsc2UgewotKwlzZXQg b2JqZWN0cyB7fQotKwlzZXQgaSAwCi0rCWZvcmVhY2gge3MgbG9jYWxfb3B0aW9uc30gJGFyZ3Mg ewotKwkgICAgaWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c30iICIk e2JpbmZpbGV9JHtpfS5vIiBvYmplY3QgJGxvY2FsX29wdGlvbnNdICE9ICIiIH0gewotKwkJdW50 ZXN0ZWQgJHRlc3RuYW1lCi0rCQlyZXR1cm4gLTEKLSsJICAgIH0KLSsJICAgIGxhcHBlbmQgb2Jq ZWN0cyAiJHtiaW5maWxlfSR7aX0ubyIKLSsJICAgIGluY3IgaQotKwl9Ci0rCXNldCByZXQgWyRm dW5jICRvYmplY3RzICIke2JpbmZpbGV9IiBleGVjdXRhYmxlICRvcHRpb25zXQotKyAgICB9Ci0r ICAgIGlmICB7ICRyZXQgIT0gIiIgfSB7Ci0rICAgICAgICB1bnRlc3RlZCAkdGVzdG5hbWUKLSsg ICAgICAgIHJldHVybiAtMQotKyAgICB9Ci0rCi0gICAgIHJldHVybiAwCi0gfQotIAotSW5kZXg6 IGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9saWIvcHJlbGluay1zdXBwb3J0LmV4cAotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjYub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBvcnQuZXhw CTIwMTMtMDUtMTkgMTY6MDU6MzcuODgxODQwNjQ2ICswMjAwCi0rKysgZ2RiLTcuNi9nZGIvdGVz dHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBvcnQuZXhwCTIwMTMtMDUtMTkgMTY6MDU6MzkuMTAwODM5 OTgwICswMjAwCi1AQCAtOTUsOCArOTUsOSBAQCBwcm9jIGZpbGVfY29weSB7c3JjIGRlc3R9IHsK LSAjIFdyYXAgZnVuY3Rpb24gYnVpbGRfZXhlY3V0YWJsZSBzbyB0aGF0IHRoZSByZXN1bHRpbmcg ZXhlY3V0YWJsZSBpcyBmdWxseQotICMgc2VsZi1zdWZmaWNpZW50ICh3aXRob3V0IGRlcGVuZGVu Y2llcyBvbiBzeXN0ZW0gbGlicmFyaWVzKS4gIFBhcmFtZXRlcgotICMgSU5URVJQIG1heSBiZSB1 c2VkIHRvIHNwZWNpZnkgYSBsb2FkZXIgKGxkLnNvKSB0byBiZSB1c2VkIHRoYXQgaXMKLS0jIGRp ZmZlcmVudCBmcm9tIHRoZSBkZWZhdWx0IHN5c3RlbSBvbmUuICBMaWJyYXJpZXMgb24gd2hpY2gg dGhlIGV4ZWN1dGFibGUKLS0jIGRlcGVuZHMgYXJlIGNvcGllZCBpbnRvIGRpcmVjdG9yeSBESVIu ICBEZWZhdWx0IERJUiB2YWx1ZSB0bwotKyMgZGlmZmVyZW50IGZyb20gdGhlIGRlZmF1bHQgc3lz dGVtIG9uZS4gIElOVEVSUCBjYW4gYmUgc2V0IHRvICJubyIgaWYgbm8gbGQuc28KLSsjIGNvcHkg c2hvdWxkIGJlIG1hZGUuICBMaWJyYXJpZXMgb24gd2hpY2ggdGhlIGV4ZWN1dGFibGUgZGVwZW5k cyBhcmUgY29waWVkCi0rIyBpbnRvIGRpcmVjdG9yeSBESVIuICBEZWZhdWx0IERJUiB2YWx1ZSB0 bwotICMgYCR7b2JqZGlyfS8ke3N1YmRpcn0vJHtFWEVDVVRBQkxFfS5kJy4KLSAjCi0gIyBJbiBj YXNlIG9mIHN1Y2Nlc3MsIHJldHVybiBhIHN0cmluZyBjb250YWluaW5nIHRoZSBhcmd1bWVudHMg dG8gYmUgdXNlZAotQEAgLTE1MSw4ICsxNTIsMTUgQEAgcHJvYyBidWlsZF9leGVjdXRhYmxlX293 bl9saWJzIHt0ZXN0bmFtZQotIAotICAgICBpZiB7JGludGVycCA9PSAiIn0gewotIAlzZXQgaW50 ZXJwX3N5c3RlbSBbc2VjdGlvbl9nZXQgJGJpbmZpbGUgLmludGVycF0KLS0Jc2V0IGludGVycCAk e2Rpcn0vW2ZpbGUgdGFpbCAkaW50ZXJwX3N5c3RlbV0KLS0JZmlsZV9jb3B5ICRpbnRlcnBfc3lz dGVtICRpbnRlcnAKLSsJaWYgeyRpbnRlcnBfc3lzdGVtID09ICIifSB7Ci0rCSAgICBmYWlsICIk dGVzdCBjb3VsZCBub3QgZmluZCAuaW50ZXJwIgotKwl9IGVsc2UgewotKwkgICAgc2V0IGludGVy cCAke2Rpcn0vW2ZpbGUgdGFpbCAkaW50ZXJwX3N5c3RlbV0KLSsJICAgIGZpbGVfY29weSAkaW50 ZXJwX3N5c3RlbSAkaW50ZXJwCi0rCX0KLSsgICAgfQotKyAgICBpZiB7JGludGVycCA9PSAibm8i fSB7Ci0rCXNldCBpbnRlcnAgIiIKLSAgICAgfQotIAotICAgICBzZXQgZGVzdHMge30KLUBAIC0x NjQsMTMgKzE3MiwxOSBAQCBwcm9jIGJ1aWxkX2V4ZWN1dGFibGVfb3duX2xpYnMge3Rlc3RuYW1l Ci0gCi0gICAgICMgRG8gbm90IGxhcHBlbmQgaXQgc28gdGhhdCAiLXJwYXRoICRkaXIiIG92ZXJy aWRlcyBhbnkgcG9zc2libGUgIi1ycGF0aCJzCi0gICAgICMgc3BlY2lmaWVkIGJ5IHRoZSBjYWxs ZXIgdG8gYmUgYWJsZSB0byBsaW5rIGl0IGZvciBsZGQiIGFib3ZlLgotLSAgICBzZXQgb3B0aW9u cyBbbGluc2VydCAkb3B0aW9ucyAwICJsZGZsYWdzPS1XbCwtLWR5bmFtaWMtbGlua2VyLCRpbnRl cnAsLXJwYXRoLCRkaXIiXQotKyAgICBzZXQgb3B0aW9ucyBbbGluc2VydCAkb3B0aW9ucyAwICJs ZGZsYWdzPS1XbCwtcnBhdGgsJGRpciJdCi0rICAgIGlmIHskaW50ZXJwICE9ICIifSB7Ci0rCXNl dCBvcHRpb25zIFtsaW5zZXJ0ICRvcHRpb25zIDAgImxkZmxhZ3M9LVdsLC0tZHluYW1pYy1saW5r ZXIsJGludGVycCJdCi0rICAgIH0KLSAKLSAgICAgaWYge1tidWlsZF9leGVjdXRhYmxlICR0ZXN0 bmFtZSAkZXhlY3V0YWJsZSAkc291cmNlcyAkb3B0aW9uc10gPT0gLTF9IHsKLSAJcmV0dXJuICIi Ci0gICAgIH0KLSAKLS0gICAgc2V0IHByZWxpbmtfYXJncyAiLS1keW5hbWljLWxpbmtlcj0kaW50 ZXJwIC0tbGQtbGlicmFyeS1wYXRoPSRkaXIgJGJpbmZpbGUgJGludGVycCBbY29uY2F0ICRkZXN0 c10iCi0rICAgIHNldCBwcmVsaW5rX2FyZ3MgIi0tbGQtbGlicmFyeS1wYXRoPSRkaXIgJGJpbmZp bGUgW2NvbmNhdCAkZGVzdHNdIgotKyAgICBpZiB7JGludGVycCAhPSAiIn0gewotKwlzZXQgcHJl bGlua19hcmdzICItLWR5bmFtaWMtbGlua2VyPSRpbnRlcnAgJHByZWxpbmtfYXJncyAkaW50ZXJw IgotKyAgICB9Ci0gICAgIHJldHVybiAkcHJlbGlua19hcmdzCi0gfQotIAotSW5kZXg6IGdkYi03 LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAky MDEzLTA1LTE5IDE2OjA1OjM3Ljg4Mjg0MDY0NiArMDIwMAotKysrIGdkYi03LjYvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCTIwMTMtMDUtMTkgMTY6MDU6MzkuMTAxODM5 OTc5ICswMjAwCi1AQCAtMTA5LDEyICsxMDksMTkgQEAgcHJvYyBzdHJpcF9kZWJ1ZyB7ZGVzdH0g ewotICAgICB9Ci0gfQotIAotKyMgVGhlIG1hcmtlciBmdW5jdGlvbiBmb3IgdGhlIHN0YW5kYXJk IHJ1bnRpbWUgbGlua2VyIGludGVyZmFjZSBpcwotKyMgX2RsX2RlYnVnX3N0YXRlLiAgVGhlIHBy b2Jlcy1iYXNlZCBpbnRlcmZhY2UgaGFzIG5vIHNwZWNpZmljIG1hcmtlcgotKyMgZnVuY3Rpb247 IHRoZSBwcm9iZSB3ZSB3aWxsIHN0b3Agb24gKGluaXRfc3RhcnQpIGlzIGluIGRsX21haW4gc28g d2UKLSsjIGNoZWNrIGZvciB0aGF0LgotKwotK3NldCBzb2xpYl9icCB7KF9kbF9kZWJ1Z19zdGF0 ZXxkbF9tYWluKX0KLSsKLSAjIEltcGxlbWVudGF0aW9uIG9mIHJlYWNoLgotIAotIHByb2MgcmVh Y2hfMSB7ZnVuYyBjb21tYW5kIGRpc3BsYWNlbWVudH0gewotLSAgICBnbG9iYWwgZ2RiX3Byb21w dCBleHBlY3Rfb3V0Ci0rICAgIGdsb2JhbCBnZGJfcHJvbXB0IGV4cGVjdF9vdXQgc29saWJfYnAK LSAKLS0gICAgaWYgeyRmdW5jID09ICJfZGxfZGVidWdfc3RhdGUifSB7Ci0rICAgIGlmIHskZnVu YyA9PSAkc29saWJfYnB9IHsKLSAJIyBCcmVha3BvaW50IG9uIF9kbF9kZWJ1Z19zdGF0ZSBjYW4g aGF2ZSBwcm9ibGVtcyBkdWUgdG8gaXRzIG92ZXJsYXAKLSAJIyB3aXRoIHRoZSBleGlzdGluZyBp bnRlcm5hbCBicmVha3BvaW50IGZyb20gR0RCLgotIAlnZGJfdGVzdF9ub19vdXRwdXQgInNldCBz dG9wLW9uLXNvbGliLWV2ZW50cyAxIgotQEAgLTE0MiwyMSArMTQ5LDIxIEBAIHByb2MgcmVhY2hf MSB7ZnVuYyBjb21tYW5kIGRpc3BsYWNlbWVudH0KLSAJICAgIGV4cF9jb250aW51ZQotIAl9Ci0g CS1yZSAiQnJlYWtwb2ludCBcWzAtOVxdKywgXFwuPyhfX0dJXyk/JGZ1bmMgXFwoLipcXCkgYXQg Lio6XFswLTlcXStcclxuLiokZ2RiX3Byb21wdCAkIiB7Ci0tCSAgICBpZiB7JGZ1bmMgPT0gIl9k bF9kZWJ1Z19zdGF0ZSJ9IHsKLSsJICAgIGlmIHskZnVuYyA9PSAkc29saWJfYnB9IHsKLSAJCWZh aWwgJHRlc3QKLSAJICAgIH0gZWxzZSB7Ci0gCQlwYXNzICR0ZXN0Ci0gCSAgICB9Ci0gCX0KLSAJ LXJlICJCcmVha3BvaW50IFxbMC05XF0rLCBcWzAtOXhhLWZcXSsgaW4gXFwuPyhfX0dJXyk/JGZ1 bmMgXFwoXFwpLipcclxuJGdkYl9wcm9tcHQgJCIgewotLQkgICAgaWYgeyRmdW5jID09ICJfZGxf ZGVidWdfc3RhdGUifSB7Ci0rCSAgICBpZiB7JGZ1bmMgPT0gJHNvbGliX2JwfSB7Ci0gCQlmYWls ICR0ZXN0Ci0gCSAgICB9IGVsc2UgewotIAkJcGFzcyAkdGVzdAotIAkgICAgfQotIAl9Ci0gCS1y ZSAiU3RvcHBlZCBkdWUgdG8gKHNwdXJpb3VzICk/c2hhcmVkIGxpYnJhcnkgZXZlbnQuKlxyXG4k Z2RiX3Byb21wdCAkIiB7Ci0tCSAgICBpZiB7JGZ1bmMgPT0gIl9kbF9kZWJ1Z19zdGF0ZSJ9IHsK LSsJICAgIGlmIHskZnVuYyA9PSAkc29saWJfYnB9IHsKLSAJCWlmIHskZGVidWdfc3RhdGVfY291 bnQgPT0gMH0gewotIAkJICAgICMgRmlyc3Qgc3RvcCBkb2VzIG5vdCB5ZXQgcmVsb2NhdGUgdGhl IF9zdGFydCBmdW5jdGlvbgotIAkJICAgICMgZGVzY3JpcHRvciBvbiBwcGM2NC4KLUBAIC0xNzUs NyArMTgyLDcgQEAgcHJvYyByZWFjaF8xIHtmdW5jIGNvbW1hbmQgZGlzcGxhY2VtZW50fQotIAlm YWlsICR0ZXN0X2Rpc3BsYWNlbWVudAotICAgICB9Ci0gCi0tICAgIGlmIHskZnVuYyA9PSAiX2Rs X2RlYnVnX3N0YXRlIn0gewotKyAgICBpZiB7JGZ1bmMgPT0gJHNvbGliX2JwfSB7Ci0gCWdkYl90 ZXN0X25vX291dHB1dCAic2V0IHN0b3Atb24tc29saWItZXZlbnRzIDAiCi0gICAgIH0KLSB9Ci1A QCAtMzU3LDcgKzM2NCw3IEBAIHByb2MgdGVzdF9hdHRhY2gge2ZpbGUgZGlzcGxhY2VtZW50IHty ZWwKLSB9Ci0gCi0gcHJvYyB0ZXN0X2xkIHtmaWxlIGlmbWFpbiB0cnlub3N5bSBkaXNwbGFjZW1l bnR9IHsKLS0gICAgZ2xvYmFsIHNyY2RpciBzdWJkaXIgZ2RiX3Byb21wdCBleHBlY3Rfb3V0IGlu ZmVyaW9yX2V4aXRlZF9yZQotKyAgICBnbG9iYWwgc3JjZGlyIHN1YmRpciBnZGJfcHJvbXB0IGV4 cGVjdF9vdXQgaW5mZXJpb3JfZXhpdGVkX3JlIHNvbGliX2JwCi0gCi0gICAgICMgRmlyc3QgdGVz dCBub3JtYWwgYGZpbGUnLWNvbW1hbmQgbG9hZGVkICRGSUxFIHdpdGggc3ltYm9scy4KLSAKLUBA IC0zODUsOSArMzkyLDkgQEAgcHJvYyB0ZXN0X2xkIHtmaWxlIGlmbWFpbiB0cnlub3N5bSBkaXNw bAotIAlnZGJfdGVzdF9ub19vdXRwdXQgInNldCBhcmdzICR7b2JqZGlyfS8ke3N1YmRpcn0vJGJp bmZpbGVfdGVzdCIgInNldCBhcmdzIE9CSkRJUi8ke3N1YmRpcn0vJGJpbmZpbGVfdGVzdCIKLSAg ICAgfQotIAotLSAgICByZWFjaCAiX2RsX2RlYnVnX3N0YXRlIiAicnVuIiAkZGlzcGxhY2VtZW50 Ci0rICAgIHJlYWNoICRzb2xpYl9icCAicnVuIiAkZGlzcGxhY2VtZW50Ci0gCi0tICAgIGdkYl90 ZXN0ICJidCIgIiMwICtcW15cclxuXF0qXFxtKF9fR0lfKT9fZGxfZGVidWdfc3RhdGVcXE0uKiIg ImRsIGJ0IgotKyAgICBnZGJfdGVzdCAiYnQiICIjMCArXFteXHJcblxdKlxcbShfX0dJXyk/JHNv bGliX2JwXFxNLioiICJkbCBidCIKLSAKLSAgICAgaWYgJGlmbWFpbiB7Ci0gCXJlYWNoICJtYWlu IiBjb250aW51ZSAiTk9ORSIKLUBAIC0zOTksNyArNDA2LDcgQEAgcHJvYyB0ZXN0X2xkIHtmaWxl IGlmbWFpbiB0cnlub3N5bSBkaXNwbAotIAotICAgICAjIFRyeSByZS1ydW4gaWYgdGhlIG5ldyBQ SUUgZGlzcGxhY2VtZW50IHRha2VzIGVmZmVjdC4KLSAgICAgZ2RiX3Rlc3QgImtpbGwiICIiICJr aWxsIiB7S2lsbCB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZFw/IFwoeSBvciBuXCkgfSAieSIK LS0gICAgcmVhY2ggIl9kbF9kZWJ1Z19zdGF0ZSIgInJ1biIgJGRpc3BsYWNlbWVudAotKyAgICBy ZWFjaCAkc29saWJfYnAgInJ1biIgJGRpc3BsYWNlbWVudAotIAotICAgICBpZiAkaWZtYWluIHsK LSAJdGVzdF9jb3JlICRmaWxlICRkaXNwbGFjZW1lbnQKLUBAIC00MzEsNyArNDM4LDcgQEAgcHJv YyB0ZXN0X2xkIHtmaWxlIGlmbWFpbiB0cnlub3N5bSBkaXNwbAotIAlnZGJfdGVzdCAiZXhlYy1m aWxlICRmaWxlIiAiZXhlYy1maWxlICRlc2NhcGVkZmlsZSIgImxvYWQiCi0gCi0gCWlmICRpZm1h aW4gewotLQkgICAgcmVhY2ggIl9kbF9kZWJ1Z19zdGF0ZSIgcnVuICRkaXNwbGFjZW1lbnQKLSsJ ICAgIHJlYWNoICRzb2xpYl9icCBydW4gJGRpc3BsYWNlbWVudAotIAotIAkgICAgIyBVc2UgdHdv IHNlcGFyYXRlIGdkYl90ZXN0X211bHRpcGxlIHN0YXRlbWVudHMgdG8gYXZvaWQgdGltZW91dHMg ZHVlCi0gCSAgICAjIHRvIHNsb3cgcHJvY2Vzc2luZyBvZiB3aWxkY2FyZCBjYXB0dXJpbmcgbG9u ZyBvdXRwdXQKLUluZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvZGxvcGVu LWxpYnB0aHJlYWQuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2dkYi50aHJl YWRzL2Rsb3Blbi1saWJwdGhyZWFkLmV4cAkyMDEzLTA1LTE5IDE2OjA1OjM5LjEwMTgzOTk3OSAr MDIwMAotQEAgLTAsMCArMSw3NCBAQAotKyMgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStp ZiB7IVtpc3RhcmdldCAqLWxpbnV4Kl0gfHwgW3NraXBfc2hsaWJfdGVzdHNdfSB7Ci0rICAgIHJl dHVybiAwCi0rfQotKwotK2xvYWRfbGliIHByZWxpbmstc3VwcG9ydC5leHAKLSsKLStzZXQgdGVz dGZpbGUgImRsb3Blbi1saWJwdGhyZWFkIgotK3NldCBzcmNtYWluZmlsZSAke3Rlc3RmaWxlfS5j Ci0rc2V0IHNyY2xpYmZpbGUgJHt0ZXN0ZmlsZX0tbGliLmMKLStzZXQgZXhlY3V0YWJsZSAke3Rl c3RmaWxlfQotK3NldCBiaW5maWxlX2xpYiAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJs ZX0uc28KLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJsZX0KLStz ZXQgbGliX2Rsb3BlbiBbc2hsaWJfdGFyZ2V0X2ZpbGUgJHtleGVjdXRhYmxlfS5zb10KLSsKLSsj IFVzZSBidWlsZF9leGVjdXRhYmxlX293bl9saWJzIGFzIHByZWxpbmtlZCBsaWJwdGhyZWFkLnNv IGNhbiBwcm9kdWNlIGZhbHNlCi0rIyBQQVNTIC0gaXQgaXMgT0sgaWYgR0RCIHByb2Nlc3NlcyBp dCBzdGlsbCBiZWZvcmUgcmVsb2NhdGlvbi4KLSsKLStzZXQgcmVsaW5rX2FyZ3MgW2J1aWxkX2V4 ZWN1dGFibGVfb3duX2xpYnMgJHt0ZXN0ZmlsZX0uZXhwICR7ZXhlY3V0YWJsZX0uc28gJHNyY2xp YmZpbGUge2RlYnVnIHNobGliX3B0aHJlYWRzfSBub10KLStpZiB7JHJlbGlua19hcmdzID09ICIi IHx8ICFbcHJlbGlua19ubyAkcmVsaW5rX2FyZ3NdCi0rICAgIHx8IFtwcmVwYXJlX2Zvcl90ZXN0 aW5nICR7dGVzdGZpbGV9LmV4cCAke2V4ZWN1dGFibGV9ICR7c3JjbWFpbmZpbGV9IHtkZWJ1ZyBz aGxpYl9sb2FkfV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLStnZGJfbG9hZF9zaGxpYnMgJGJp bmZpbGVfbGliCi0rCi0raWYgeyAhW3J1bnRvX21haW5dIH0gewotKyAgICByZXR1cm4gLTEKLSt9 Ci0rCi0rc2V0IHRlc3QgImluZm8gcHJvYmVzIGFsbCBydGxkIHJ0bGRfbWFwX2NvbXBsZXRlIgot K2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJlICJcWyBcdFxdcnRsZF9t YXBfY29tcGxldGVcWyBcdFxdKzB4XFswLTlhLWZcXSsuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0r CXBhc3MgJHRlc3QKLSsgICAgfQotKyAgICAtcmUgIk5vIHByb2JlcyBtYXRjaGVkXFwuXHJcbiRn ZGJfcHJvbXB0ICQiIHsKLSsJeGZhaWwgJHRlc3QKLSsJdW50ZXN0ZWQgJHt0ZXN0ZmlsZX0uZXhw Ci0rCXJldHVybgotKyAgICB9Ci0rfQotKwotK3NldCB0ZXN0ICJsaWJwdGhyZWFkLnNvIG5vdCBm b3VuZCIKLStnZGJfdGVzdF9tdWx0aXBsZSAiaW5mbyBzaGFyZWRsaWJyYXJ5IiAkdGVzdCB7Ci0r ICAgIC1yZSAiL2xpYnB0aHJlYWRcXC5zby4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJZmFpbCAk dGVzdAotKyAgICB9Ci0rICAgIC1yZSAiL2xpYmNcXC5zby4qXHJcbiRnZGJfcHJvbXB0ICQiIHsK LSsJcGFzcyAkdGVzdAotKyAgICB9Ci0rfQotKwotK2dkYl90ZXN0ICJzZXQgdmFyaWFibGUgZmls ZW5hbWU9XCIkbGliX2Rsb3BlblwiIgotKwotK2dkYl9icmVha3BvaW50ICJub3RpZnkiCi0rCi0r IyBUaGUgZXJyb3Igd2FzOgotKyMgQ2Fubm90IGZpbmQgbmV3IHRocmVhZHM6IGdlbmVyaWMgZXJy b3IKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibm90aWZ5IiAiLiogbm90aWZ5LWhlcmUg LioiCi0rCi0rZ2RiX3Rlc3QgImluZm8gc2hhcmVkbGlicmFyeSIgey9saWJwdGhyZWFkXC5zby4q fSAibGlicHRocmVhZC5zbyBmb3VuZCIKLUluZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2Ri LnRocmVhZHMvZGxvcGVuLWxpYnB0aHJlYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkx OTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjYvZ2RiL3Rlc3Rz dWl0ZS9nZGIudGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC5jCTIwMTMtMDUtMTkgMTY6MDU6Mzku MTAxODM5OTc5ICswMjAwCi1AQCAtMCwwICsxLDQ2IEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBw YXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAxMSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUgPGRsZmNuLmg+Ci0rI2luY2x1ZGUgPHN0ZGRl Zi5oPgotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsKLStzdGF0aWMgY29uc3QgY2hhciAqdm9sYXRp bGUgZmlsZW5hbWU7Ci0rCi0rc3RhdGljIHZvaWQKLStub3RpZnkgKHZvaWQpCi0rewotKyAgZmls ZW5hbWUgPSBOVUxMOyAvKiBub3RpZnktaGVyZSAqLwotK30KLSsKLStpbnQKLSttYWluICh2b2lk KQotK3sKLSsgIHZvaWQgKmg7Ci0rICB2b2lkICgqZnApICh2b2lkICgqKSAodm9pZCkpOwotKwot KyAgYXNzZXJ0IChmaWxlbmFtZSAhPSBOVUxMKTsKLSsgIGggPSBkbG9wZW4gKGZpbGVuYW1lLCBS VExEX0xBWlkpOwotKyAgYXNzZXJ0IChoICE9IE5VTEwpOwotKwotKyAgZnAgPSBkbHN5bSAoaCwg ImYiKTsKLSsgIGFzc2VydCAoZnAgIT0gTlVMTCk7Ci0rCi0rICBmcCAobm90aWZ5KTsKLSsKLSsg IHJldHVybiAwOwotK30KLUluZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMv ZGxvcGVuLWxpYnB0aHJlYWQtbGliLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0aHJlYWQtbGliLmMJMjAxMy0wNS0xOSAxNjowNTozOS4x MDE4Mzk5NzkgKzAyMDAKLUBAIC0wLDAgKzEsNDAgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBh cnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDExIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8cHRocmVhZC5oPgotKyNpbmNsdWRlIDxhc3Nl cnQuaD4KLSsKLStzdGF0aWMgdm9pZCAqCi0rdGZ1bmMgKHZvaWQgKmFyZykKLSt7Ci0rICB2b2lk ICgqbm90aWZ5cCkgKHZvaWQpID0gYXJnOwotKwotKyAgbm90aWZ5cCAoKTsKLSt9Ci0rCi0rdm9p ZAotK2YgKHZvaWQgKCpub3RpZnlwKSAodm9pZCkpCi0rewotKyAgcHRocmVhZF90IHQ7Ci0rICBp bnQgaTsKLSsKLSsgIGkgPSBwdGhyZWFkX2NyZWF0ZSAoJnQsIE5VTEwsIHRmdW5jLCBub3RpZnlw KTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSsKLSsgIGkgPSBwdGhyZWFkX2pvaW4gKHQsIE5VTEwp OwotKyAgYXNzZXJ0IChpID09IDApOwotK30KLUluZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2Uvc29saWItY29ycnVwdGVkLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLWNvcnJ1cHRlZC5leHAJMjAxMy0wNS0xOSAx NjowNTozNy44ODM4NDA2NDUgKzAyMDAKLSsrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2Uvc29saWItY29ycnVwdGVkLmV4cAkyMDEzLTA1LTE5IDE2OjA1OjM5LjEwMjgzOTk3OCArMDIw MAotQEAgLTM2LDYgKzM2LDMzIEBAIGlmICFbcnVudG9fbWFpbl0gewotICAgICByZXR1cm4KLSB9 Ci0gCi0rIyBXaXRoIHByb2JlcyBpbnRlcmZhY2UgR0RCIG5vIGxvbmdlciBzY2FucyB0aGUgaW5m ZXJpb3IgbGlicmFyeSBsaXN0IHNvIGl0cwotKyMgY29ycnVwdGlvbiBjYW5ub3QgYmUgdGVzdGVk LiAgVGhlcmUgaXMgbm8gd2F5IHRvIGRpc2FibGUgdGhlIHByb2JlcwotKyMgaW50ZXJmYWNlLgot KwotK3NldCBwcm9iZXMgeyBpbml0X3N0YXJ0IGluaXRfY29tcGxldGUgbWFwX3N0YXJ0IHJlbG9j X2NvbXBsZXRlIHVubWFwX3N0YXJ0Ci0rCSAgICAgdW5tYXBfY29tcGxldGUgfQotK3NldCB0ZXN0 ICJpbmZvIHByb2JlcyIKLStnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7Ci0rICAgIC1y ZSAiXnJ0bGRcWyBcdFxdKyg/OnJ0bGRfKT8oXFthLXpfXF0rKVxbIFx0XF0iIHsKLSsJc2V0IGlk eCBbbHNlYXJjaCAtZXhhY3QgJHByb2JlcyAkZXhwZWN0X291dCgxLHN0cmluZyldCi0rCWlmIHsg JGlkeCA+PSAwIH0gewotKwkgICAgc2V0IHByb2JlcyBbbHJlcGxhY2UgJHByb2JlcyAkaWR4ICRp ZHhdCi0rCX0KLSsJZXhwX2NvbnRpbnVlCi0rICAgIH0KLSsgICAgLXJlICJeXFteXHJcblxdKlxy XG4iIHsKLSsJZXhwX2NvbnRpbnVlCi0rICAgIH0KLSsgICAgLXJlICJeJGdkYl9wcm9tcHQgJCIg ewotKyAgICB9Ci0rfQotK2lmIHsgW2xsZW5ndGggJHByb2Jlc10gPT0gMCB9IHsKLSsgICAgeGZh aWwgJHRlc3QKLSsgICAgdW50ZXN0ZWQgIkdEQiBpcyB1c2luZyBwcm9iZXMiCi0rICAgIHJldHVy bgotK30KLSsKLSBnZGJfdGVzdCAiaW5mbyBzaGFyZWRsaWJyYXJ5IiAiRnJvbSAqIFRvIC4qIiAi bm9ybWFsIGxpc3QiCi0gCi0gIyBHREIgY2hlY2tzIHRoZXJlIGZvciBtYXRjaGluZyBMX1BSRVYu CgpkaWZmIC0tZ2l0IGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTZvZjkucGF0Y2ggYi9nZGItZGxv cGVuLXN0YXAtcHJvYmUtNm9mOS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4xYTFjMzM4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTZv ZjkucGF0Y2gKQEAgLTAsMCArMSwxMzIgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIt Y3ZzLzIwMTMtMDYvbXNnMDAwMTcuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8w Ni8wNCAxMzowMjoxNQkxLjE1NjgzCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNi8wNCAx MzoxMDo1MwkxLjE1Njg0CisjIyAtMSw1ICsxLDIxIEBACisgMjAxMy0wNi0wNCAgR2FyeSBCZW5z b24gIDxnYmVuc29uQHJlZGhhdC5jb20+CisgCisrCSogdGFyZ2V0LmggKHRhcmdldF9vcHMpOiBO ZXcgZmllbGQKKysJInRvX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkIi4KKysJKHRhcmdl dF9hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVhZCk6IE5ldyBtYWNyby4KKysJKiB0YXJnZXQu YyAodXBkYXRlX2N1cnJlbnRfdGFyZ2V0KTogSGFuZGxlCisrCXRvX2F1Z21lbnRlZF9saWJyYXJp ZXNfc3ZyNF9yZWFkLgorKwkqIHJlbW90ZS5jIChyZW1vdGVfc3RhdGUpOiBOZXcgZmllbGQKKysJ ImF1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkIi4KKysJKHJlbW90ZV9hdWdtZW50ZWRfbGli cmFyaWVzX3N2cjRfcmVhZF9mZWF0dXJlKTogTmV3IGZ1bmN0aW9uLgorKwkocmVtb3RlX3Byb3Rv Y29sX2ZlYXR1cmVzKTogQWRkIGVudHJ5IGZvcgorKwkiYXVnbWVudGVkLWxpYnJhcmllcy1zdnI0 LXJlYWQiLgorKwkocmVtb3RlX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkKTogTmV3IGZ1 bmN0aW9uLgorKwkoaW5pdF9yZW1vdGVfb3BzKTogSW5pdGlhbGl6ZQorKwlyZW1vdGVfb3BzLnRv X2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkLgorKworKzIwMTMtMDYtMDQgIEdhcnkgQmVu c29uICA8Z2JlbnNvbkByZWRoYXQuY29tPgorKworIAkqIE5FV1M6IFVwZGF0ZS4KKyAKKyAyMDEz LTA2LTA0ICBHYXJ5IEJlbnNvbiAgPGdiZW5zb25AcmVkaGF0LmNvbT4KKy0tLSBzcmMvZ2RiL3Jl bW90ZS5jCTIwMTMvMDUvMzAgMDk6Mjk6MTgJMS41NTIKKysrKyBzcmMvZ2RiL3JlbW90ZS5jCTIw MTMvMDYvMDQgMTM6MTA6NTMJMS41NTMKK0BAIC0zNjEsNiArMzYxLDEwIEBACisgICAvKiBUcnVl IGlmIHRoZSBzdHViIGNhbiBjb2xsZWN0IHN0cmluZ3MgdXNpbmcgdHJhY2VueiBieXRlY29kZS4g ICovCisgICBpbnQgc3RyaW5nX3RyYWNpbmc7CisgCisrICAvKiBUcnVlIGlmIHRoZSBzdHViIHN1 cHBvcnRzIHFYZmVyOmxpYnJhcmllcy1zdnI0OnJlYWQgd2l0aCBhCisrICAgICBub24tZW1wdHkg YW5uZXguICAqLworKyAgaW50IGF1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkOworKworICAg LyogTm9uemVybyBpZiB0aGUgdXNlciBoYXMgcHJlc3NlZCBDdHJsLUMsIGJ1dCB0aGUgdGFyZ2V0 IGhhc24ndAorICAgICAgcmVzcG9uZGVkIHRvIHRoYXQuICAqLworICAgaW50IGN0cmxjX3BlbmRp bmdfcDsKK0BAIC0zOTQ5LDYgKzM5NTMsMTYgQEAKKyAgIHJzLT5zdHJpbmdfdHJhY2luZyA9IChz dXBwb3J0ID09IFBBQ0tFVF9FTkFCTEUpOworIH0KKyAKKytzdGF0aWMgdm9pZAorK3JlbW90ZV9h dWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVhZF9mZWF0dXJlCisrICAoY29uc3Qgc3RydWN0IHBy b3RvY29sX2ZlYXR1cmUgKmZlYXR1cmUsCisrICAgZW51bSBwYWNrZXRfc3VwcG9ydCBzdXBwb3J0 LCBjb25zdCBjaGFyICp2YWx1ZSkKKyt7CisrICBzdHJ1Y3QgcmVtb3RlX3N0YXRlICpycyA9IGdl dF9yZW1vdGVfc3RhdGUgKCk7CisrCisrICBycy0+YXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3Jl YWQgPSAoc3VwcG9ydCA9PSBQQUNLRVRfRU5BQkxFKTsKKyt9CisrCisgc3RhdGljIHN0cnVjdCBw cm90b2NvbF9mZWF0dXJlIHJlbW90ZV9wcm90b2NvbF9mZWF0dXJlc1tdID0geworICAgeyAiUGFj a2V0U2l6ZSIsIFBBQ0tFVF9ESVNBQkxFLCByZW1vdGVfcGFja2V0X3NpemUsIC0xIH0sCisgICB7 ICJxWGZlcjphdXh2OnJlYWQiLCBQQUNLRVRfRElTQUJMRSwgcmVtb3RlX3N1cHBvcnRlZF9wYWNr ZXQsCitAQCAtMzk1OSw2ICszOTczLDggQEAKKyAgICAgUEFDS0VUX3FYZmVyX2xpYnJhcmllcyB9 LAorICAgeyAicVhmZXI6bGlicmFyaWVzLXN2cjQ6cmVhZCIsIFBBQ0tFVF9ESVNBQkxFLCByZW1v dGVfc3VwcG9ydGVkX3BhY2tldCwKKyAgICAgUEFDS0VUX3FYZmVyX2xpYnJhcmllc19zdnI0IH0s CisrICB7ICJhdWdtZW50ZWQtbGlicmFyaWVzLXN2cjQtcmVhZCIsIFBBQ0tFVF9ESVNBQkxFLAor KyAgICByZW1vdGVfYXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWRfZmVhdHVyZSwgLTEgfSwK KyAgIHsgInFYZmVyOm1lbW9yeS1tYXA6cmVhZCIsIFBBQ0tFVF9ESVNBQkxFLCByZW1vdGVfc3Vw cG9ydGVkX3BhY2tldCwKKyAgICAgUEFDS0VUX3FYZmVyX21lbW9yeV9tYXAgfSwKKyAgIHsgInFY ZmVyOnNwdTpyZWFkIiwgUEFDS0VUX0RJU0FCTEUsIHJlbW90ZV9zdXBwb3J0ZWRfcGFja2V0LAor QEAgLTExNDM5LDYgKzExNDU1LDE0IEBACisgICByZXR1cm4gYnRyYWNlOworIH0KKyAKKytzdGF0 aWMgaW50CisrcmVtb3RlX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkICh2b2lkKQorK3sK KysgIHN0cnVjdCByZW1vdGVfc3RhdGUgKnJzID0gZ2V0X3JlbW90ZV9zdGF0ZSAoKTsKKysKKysg IHJldHVybiBycy0+YXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQ7CisrfQorKworIHN0YXRp YyB2b2lkCisgaW5pdF9yZW1vdGVfb3BzICh2b2lkKQorIHsKK0BAIC0xMTU2MSw2ICsxMTU4NSw4 IEBACisgICByZW1vdGVfb3BzLnRvX2Rpc2FibGVfYnRyYWNlID0gcmVtb3RlX2Rpc2FibGVfYnRy YWNlOworICAgcmVtb3RlX29wcy50b190ZWFyZG93bl9idHJhY2UgPSByZW1vdGVfdGVhcmRvd25f YnRyYWNlOworICAgcmVtb3RlX29wcy50b19yZWFkX2J0cmFjZSA9IHJlbW90ZV9yZWFkX2J0cmFj ZTsKKysgIHJlbW90ZV9vcHMudG9fYXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQgPQorKyAg ICByZW1vdGVfYXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQ7CisgfQorIAorIC8qIFNldCB1 cCB0aGUgZXh0ZW5kZWQgcmVtb3RlIHZlY3RvciBieSBtYWtpbmcgYSBjb3B5IG9mIHRoZSBzdGFu ZGFyZAorLS0tIHNyYy9nZGIvdGFyZ2V0LmMJMjAxMy8wNS8xNCAyMDozMzozNgkxLjMzNQorKysr IHNyYy9nZGIvdGFyZ2V0LmMJMjAxMy8wNi8wNCAxMzoxMDo1MwkxLjMzNgorQEAgLTczMSw2ICs3 MzEsNyBAQAorICAgICAgIElOSEVSSVQgKHRvX3RyYWNlZnJhbWVfaW5mbywgdCk7CisgICAgICAg SU5IRVJJVCAodG9fdXNlX2FnZW50LCB0KTsKKyAgICAgICBJTkhFUklUICh0b19jYW5fdXNlX2Fn ZW50LCB0KTsKKysgICAgICBJTkhFUklUICh0b19hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVh ZCwgdCk7CisgICAgICAgSU5IRVJJVCAodG9fbWFnaWMsIHQpOworICAgICAgIElOSEVSSVQgKHRv X3N1cHBvcnRzX2V2YWx1YXRpb25fb2ZfYnJlYWtwb2ludF9jb25kaXRpb25zLCB0KTsKKyAgICAg ICBJTkhFUklUICh0b19jYW5fcnVuX2JyZWFrcG9pbnRfY29tbWFuZHMsIHQpOworQEAgLTk3NSw2 ICs5NzYsOSBAQAorICAgZGVfZmF1bHQgKHRvX2Nhbl91c2VfYWdlbnQsCisgCSAgICAoaW50ICgq KSAodm9pZCkpCisgCSAgICByZXR1cm5femVybyk7CisrICBkZV9mYXVsdCAodG9fYXVnbWVudGVk X2xpYnJhcmllc19zdnI0X3JlYWQsCisrCSAgICAoaW50ICgqKSAodm9pZCkpCisrCSAgICByZXR1 cm5femVybyk7CisgICBkZV9mYXVsdCAodG9fZXhlY3V0aW9uX2RpcmVjdGlvbiwgZGVmYXVsdF9l eGVjdXRpb25fZGlyZWN0aW9uKTsKKyAKKyAjdW5kZWYgZGVfZmF1bHQKKy0tLSBzcmMvZ2RiL3Rh cmdldC5oCTIwMTMvMDUvMTQgMjA6MzM6MzYJMS4yNjIKKysrKyBzcmMvZ2RiL3RhcmdldC5oCTIw MTMvMDYvMDQgMTM6MTA6NTMJMS4yNjMKK0BAIC05NDEsNiArOTQxLDEwIEBACisgICAgICAgIChp bmNsdXNpdmUpIHRvIGZ1bmN0aW9uIEVORCAoZXhjbHVzaXZlKS4gICovCisgICAgIHZvaWQgKCp0 b19jYWxsX2hpc3RvcnlfcmFuZ2UpIChVTE9OR0VTVCBiZWdpbiwgVUxPTkdFU1QgZW5kLCBpbnQg ZmxhZ3MpOworIAorKyAgICAvKiBOb256ZXJvIGlmIFRBUkdFVF9PQkpFQ1RfTElCUkFSSUVTX1NW UjQgbWF5IGJlIHJlYWQgd2l0aCBhCisrICAgICAgIG5vbi1lbXB0eSBhbm5leC4gICovCisrICAg IGludCAoKnRvX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkKSAodm9pZCk7CisrCisgICAg IGludCB0b19tYWdpYzsKKyAgICAgLyogTmVlZCBzdWItc3RydWN0dXJlIGZvciB0YXJnZXQgbWFj aGluZSByZWxhdGVkIHJhdGhlciB0aGFuIGNvbW0gcmVsYXRlZD8KKyAgICAgICovCitAQCAtMTgw OSw2ICsxODEzLDkgQEAKKyAjZGVmaW5lIHRhcmdldF9jYW5fdXNlX2FnZW50KCkgXAorICAgKCpj dXJyZW50X3RhcmdldC50b19jYW5fdXNlX2FnZW50KSAoKQorIAorKyNkZWZpbmUgdGFyZ2V0X2F1 Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkKCkgXAorKyAgKCpjdXJyZW50X3RhcmdldC50b19h dWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVhZCkgKCkKKysKKyAvKiBDb21tYW5kIGxvZ2dpbmcg ZmFjaWxpdHkuICAqLworIAorICNkZWZpbmUgdGFyZ2V0X2xvZ19jb21tYW5kKHApCQkJCQkJXAoK ZGlmZiAtLWdpdCBhL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS03b2Y3LnBhdGNoIGIvZ2RiLWRsb3Bl bi1zdGFwLXByb2JlLTdvZjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMw MzU3ZTkuLjAwMDAwMDAKLS0tIGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTdvZjcucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSw0MzUgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dk Yi1wYXRjaGVzLzIwMTMtMDUvbXNnMDA2MzAuaHRtbAotU3ViamVjdDogW1JGQSA3LzddIExpbmtl ci1kZWJ1Z2dlciBpbnRlcmZhY2UgdGVzdHMKLQotCi0tLURDQS9DOVdTbkR0bDUwenUKLUNvbnRl bnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQotQ29udGVudC1EaXNwb3NpdGlv bjogaW5saW5lCi0KLVRoaXMgcGF0Y2ggYWRkcyBzb21lIHRlc3RjYXNlcyBmb3IgdGhlIGxpbmtl ci1kZWJ1Z2dlciBpbnRlcmZhY2UuCi0KLS0tRENBL0M5V1NuRHRsNTB6dQotQ29udGVudC1UeXBl OiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpCi1Db250ZW50LURpc3Bvc2l0aW9uOiBhdHRh Y2htZW50OyBmaWxlbmFtZT0icnRsZC1wcm9iZXMtNy10ZXN0cy1nYi5wYXRjaCIKLQotMjAxMy0w NS0xNiAgR2FyeSBCZW5zb24gIDxnYmVuc29uQHJlZGhhdC5jb20+Ci0KLQkqIGdkYi5iYXNlL2Jy ZWFrLXByb2Jlcy5leHA6IE5ldyBmaWxlLgotCSogZ2RiLmJhc2UvYnJlYWstcHJvYmVzLmM6IExp a2V3aXNlLgotCSogZ2RiLmJhc2UvYnJlYWstcHJvYmVzLXNvbGliLmM6IExpa2V3aXNlLgotCSog Z2RiLmJhc2UvaW5mby1zaGFyZWQuZXhwOiBOZXcgZmlsZS4KLQkqIGdkYi5iYXNlL2luZm8tc2hh cmVkLmM6IExpa2V3aXNlLgotCSogZ2RiLmJhc2UvaW5mby1zaGFyZWQtc29saWIxLmM6IExpa2V3 aXNlLgotCSogZ2RiLmJhc2UvaW5mby1zaGFyZWQtc29saWIyLmM6IExpa2V3aXNlLgotCi1kaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1wcm9iZXMuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9icmVhay1wcm9iZXMuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggMDAwMDAwMC4uODM3MjYzNgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9icmVhay1wcm9iZXMuZXhwCi1AQCAtMCwwICsxLDc3IEBACi0rIyBDb3B5cmln aHQgMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCi0rCi0raWYgeyBbc2tpcF9zaGxpYl90ZXN0c10gfSB7Ci0rICAgIHJl dHVybiAwCi0rfQotKwotK3N0YW5kYXJkX3Rlc3RmaWxlCi0rCi0rc2V0IGxpYm5hbWUgJHRlc3Rm aWxlLXNvbGliCi0rc2V0IHNyY2ZpbGVfbGliICRzcmNkaXIvJHN1YmRpci8kbGlibmFtZS5jCi0r c2V0IGJpbmZpbGVfbGliIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAkbGlibmFtZS5zb10KLSsKLStz ZXQgbm9ybWFsX2JwICJfZGxfZGVidWdfc3RhdGUiCi0rc2V0IHByb2Jlc19icCAiZGxfbWFpbiIK LSsKLStpZiB7IFtnZGJfY29tcGlsZV9zaGxpYiAkc3JjZmlsZV9saWIgJGJpbmZpbGVfbGliIFwK LSsJICBbbGlzdCBhZGRpdGlvbmFsX2ZsYWdzPS1mUElDXV0gIT0gIiIgfSB7Ci0rICAgIHVudGVz dGVkICJDb3VsZCBub3QgY29tcGlsZSAkYmluZmlsZV9saWIuIgotKyAgICByZXR1cm4gLTEKLSt9 Ci0rCi0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAkdGVzdGZpbGUuZXhwICR0ZXN0ZmlsZSAk c3JjZmlsZSBcCi0rCSAgW2xpc3QgYWRkaXRpb25hbF9mbGFncz0tRFNITElCX05BTUVcPVwiJGJp bmZpbGVfbGliXCIgbGlicz0tbGRsXV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIEVu YWJsZSBzdG9wLW9uLXNvbGliLWV2ZW50cwotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IHN0b3At b24tc29saWItZXZlbnRzIDEiCi0rCi0rIyBTdGFydCB0aGUgaW5mZXJpb3IgYW5kIHJ1biB0byB0 aGUgZmlyc3Qgc3RvcAotK2dkYl9ydW5fY21kCi0rZ2RiX3Rlc3QgIiIgIi4qU3RvcHBlZCBkdWUg dG8gc2hhcmVkIGxpYnJhcnkgZXZlbnQuKiIKLSsKLSsjIFhGQUlMIGlmIHdlIGFyZSBub3QgdXNp bmcgcHJvYmVzCi0rc2V0IHRlc3QgImVuc3VyZSB1c2luZyBwcm9iZXMiCi0rc2V0IHVzaW5nX3By b2JlcyAwCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgImJ0IiAkdGVzdCB7Ci0rICAgIC1yZSAiIzAgK1xb XlxyXG5cXSpcXG0oX19HSV8pPyRub3JtYWxfYnBcXE0uKiRnZGJfcHJvbXB0ICQiIHsKLSsJeGZh aWwgJHRlc3QKLSsgICAgfQotKyAgICAtcmUgIiMwICtcW15cclxuXF0qXFxtKF9fR0lfKT8kcHJv YmVzX2JwXFxNLiokZ2RiX3Byb21wdCAkIiB7Ci0rCXBhc3MgJHRlc3QKLSsJc2V0IHVzaW5nX3By b2JlcyAxCi0rICAgIH0KLSt9Ci0rCi0raWYgeyAkdXNpbmdfcHJvYmVzIH0gewotKyAgICAjIFJ1 biB0aWwgaXQgbG9hZHMgb3VyIGxpYnJhcnkKLSsgICAgc2V0IHRlc3QgInJ1biB0aWwgb3VyIGxp YnJhcnkgbG9hZHMiCi0rICAgIHNldCBsb2FkZWRfbGlicmFyeSAwCi0rICAgIHdoaWxlIHsgISRs b2FkZWRfbGlicmFyeSB9IHsKLSsJZ2RiX3Rlc3RfbXVsdGlwbGUgImMiICR0ZXN0IHsKLSsJICAg IC1yZSAiSW5mZXJpb3IgbG9hZGVkICRiaW5maWxlX2xpYlxcTS4qJGdkYl9wcm9tcHQgJCIgewot KwkJcGFzcyAkdGVzdAotKwkJc2V0IGxvYWRlZF9saWJyYXJ5IDEKLSsJICAgIH0KLSsJICAgIC1y ZSAiU3RvcHBlZCBkdWUgdG8gc2hhcmVkIGxpYnJhcnkgZXZlbnRcXE0uKiRnZGJfcHJvbXB0ICQi IHsKLSsJICAgIH0KLSsJfQotKyAgICB9Ci0rCi0rICAgICMgQ2FsbCBzb21ldGhpbmcgdG8gZW5z dXJlIHRoYXQgcmVsb2NhdGlvbiBvY2N1cnJlZAotKyAgICBnZGJfdGVzdCAiY2FsbCBmb28oMjMp IiAiXFxcJC4qID0gMzEuKlxcXE0uKiIKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9icmVhay1wcm9iZXMuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstcHJv YmVzLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hNzc4MDk5Ci0tLS0g L2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLXByb2Jlcy5jCi1A QCAtMCwwICsxLDI2IEBACi0rLyogQ29weXJpZ2h0IDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwot KwotKyNpbmNsdWRlIDxkbGZjbi5oPgotKwotK2ludAotK21haW4gKCkKLSt7Ci0rICB2b2lkICpo YW5kbGUgPSBkbG9wZW4gKFNITElCX05BTUUsIFJUTERfTEFaWSk7Ci0rCi0rICBkbGNsb3NlICho YW5kbGUpOwotKwotKyAgcmV0dXJuIDA7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvYnJlYWstcHJvYmVzLXNvbGliLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Jy ZWFrLXByb2Jlcy1zb2xpYi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4u YmRkZTJkYgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVh ay1wcm9iZXMtc29saWIuYwotQEAgLTAsMCArMSwyMiBAQAotKy8qIENvcHlyaWdodCAyMDEzIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsKLStpbnQKLStmb28g KGludCBuKQotK3sKLSsgIHJldHVybiBuICogbiAvIDE3OwotK30KLWRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2luZm8tc2hhcmVkLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvaW5mby1zaGFyZWQuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4u MWRhYmI5ZgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZv LXNoYXJlZC5leHAKLUBAIC0wLDAgKzEsMTQ1IEBACi0rIyBDb3B5cmlnaHQgMjAxMyBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0r IwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u Ci0rCi0raWYgeyBbc2tpcF9zaGxpYl90ZXN0c10gfSB7Ci0rICAgIHJldHVybiAwCi0rfQotKwot K3N0YW5kYXJkX3Rlc3RmaWxlCi0rCi0rc2V0IGxpYjFuYW1lICR0ZXN0ZmlsZS1zb2xpYjEKLStz ZXQgc3JjZmlsZV9saWIxICRzcmNkaXIvJHN1YmRpci8kbGliMW5hbWUuYwotK3NldCBiaW5maWxl X2xpYjEgW3N0YW5kYXJkX291dHB1dF9maWxlICRsaWIxbmFtZS5zb10KLStzZXQgZGVmaW5lMSAt RFNITElCMV9OQU1FXD1cIiRiaW5maWxlX2xpYjFcIgotKwotK3NldCBsaWIybmFtZSAkdGVzdGZp bGUtc29saWIyCi0rc2V0IHNyY2ZpbGVfbGliMiAkc3JjZGlyLyRzdWJkaXIvJGxpYjJuYW1lLmMK LStzZXQgYmluZmlsZV9saWIyIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAkbGliMm5hbWUuc29dCi0r c2V0IGRlZmluZTIgLURTSExJQjJfTkFNRVw9XCIkYmluZmlsZV9saWIyXCIKLSsKLStpZiB7IFtn ZGJfY29tcGlsZV9zaGxpYiAkc3JjZmlsZV9saWIxICRiaW5maWxlX2xpYjEgXAotKwkgIFtsaXN0 IGFkZGl0aW9uYWxfZmxhZ3M9LWZQSUNdXSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxk IG5vdCBjb21waWxlICRiaW5maWxlX2xpYjEuIgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYg eyBbZ2RiX2NvbXBpbGVfc2hsaWIgJHNyY2ZpbGVfbGliMiAkYmluZmlsZV9saWIyIFwKLSsJICBb bGlzdCBhZGRpdGlvbmFsX2ZsYWdzPS1mUElDXV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJD b3VsZCBub3QgY29tcGlsZSAkYmluZmlsZV9saWIyLiIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwot K3NldCBjZmxhZ3MgIiRkZWZpbmUxICRkZWZpbmUyIgotK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3Rp bmcgJHRlc3RmaWxlLmV4cCAkdGVzdGZpbGUgJHNyY2ZpbGUgXAotKwkgIFtsaXN0IGFkZGl0aW9u YWxfZmxhZ3M9JGNmbGFncyBsaWJzPS1sZGxdXSB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwot KyMgUnVuICJpbmZvIHNoYXJlZGxpYnJhcnkiIGFuZCBjaGVjayBmb3IgdGhlIHByZXNlbmNlIG9y IGFic2VuY2Ugb2YKLSsjIG91ciBsaWJyYXJpZXMuCi0rcHJvYyBjaGVja19pbmZvX3NoYXJlZCB7 IHRlc3QgZXhwZWN0MSBleHBlY3QyIH0gewotKyAgICBnbG9iYWwgbGliMW5hbWUKLSsgICAgZ2xv YmFsIGxpYjJuYW1lCi0rICAgIGdsb2JhbCBnZGJfcHJvbXB0Ci0rCi0rICAgIHNldCBhY3R1YWwx IDAKLSsgICAgc2V0IGFjdHVhbDIgMAotKwotKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAiaW5mbyBz aGFyZWRsaWJyYXJ5IiAkdGVzdCB7Ci0rCS1yZSAkbGliMW5hbWUgewotKwkgICAgc2V0IGFjdHVh bDEgMQotKwkgICAgZXhwX2NvbnRpbnVlCi0rCX0KLSsJLXJlICRsaWIybmFtZSB7Ci0rCSAgICBz ZXQgYWN0dWFsMiAxCi0rCSAgICBleHBfY29udGludWUKLSsJfQotKwktcmUgIlxyXG4kZ2RiX3By b21wdCAkIiB7Ci0rCSAgICBpZiB7ICRhY3R1YWwxID09ICRleHBlY3QxICYmICRhY3R1YWwyID09 ICRleHBlY3QyIH0gewotKwkJcGFzcyAkdGVzdAotKwkgICAgfSBlbHNlIHsKLSsJCWZhaWwgJHRl c3QKLSsJICAgIH0KLSsJfQotKyAgICB9Ci0rfQotKwotKyMgU3RhcnQgdGhlIGluZmVyaW9yLCBh bmQgY2hlY2sgbmVpdGhlciBvZiB0aGUgbGlicmFyaWVzIGFyZSBsb2FkZWQgYXQKLSsjIHRoZSBz dGFydC4KLStydW50b19tYWluCi0rY2hlY2tfaW5mb19zaGFyZWQgImluZm8gc2hhcmVkbGlicmFy eSAjMSIgMCAwCi0rCi0rIyBTZXQgdXAgYnJlYWtwb2ludHMuCi0rZ2RiX3Rlc3QgImJyZWFrIHN0 b3AiIHtCcmVha3BvaW50IFswLTldKyBhdCAuKn0KLStnZGJfdGVzdF9ub19vdXRwdXQgInNldCBi cmVha3BvaW50IHBlbmRpbmcgb24iCi0rZ2RiX3Rlc3QgImJyZWFrIGZvbyIge0JyZWFrcG9pbnQg WzAtOV0rIFwoZm9vXCkgcGVuZGluZ1wufQotK2dkYl90ZXN0ICJicmVhayBiYXIiIHtCcmVha3Bv aW50IFswLTldKyBcKGJhclwpIHBlbmRpbmdcLn0KLSsKLSsjIFJ1biB0byB0aGUgZmlyc3Qgc3Rv cCBhbmQgY2hlY2sgdGhhdCBvbmx5IHRoZSBmaXJzdCBsaWJyYXJ5IGlzIGxvYWRlZC4KLStnZGJf dGVzdCAiYyIge0JyZWFrcG9pbnQgWzAtOV0rLCAuKiBpbiBzdG9wIFwoXCl9Ci0rY2hlY2tfaW5m b19zaGFyZWQgImluZm8gc2hhcmVkbGlicmFyeSAjMiIgMSAwCi0rCi0rIyBSdW4gdG8gdGhlIHNl Y29uZCBzdG9wIGFuZCBjaGVjayB0aGF0IGJvdGggbGlicmFyaWVzIGFyZSBsb2FkZWQuCi0rZ2Ri X3Rlc3QgImMiIHtCcmVha3BvaW50IFswLTldKywgLiogaW4gc3RvcCBcKFwpfQotK2NoZWNrX2lu Zm9fc2hhcmVkICJpbmZvIHNoYXJlZGxpYnJhcnkgIzMiIDEgMQotKwotKyMgQ2hlY2sgdGhhdCB0 aGUgbmV4dCBzdG9wIGlzIGluIGZvby4KLStnZGJfdGVzdCAiYyIge0JyZWFrcG9pbnQgWzAtOV0r LCAuKiBpbiBmb28gXChcKSBmcm9tIC4qfQotKwotKyMgQ2hlY2sgdGhhdCB0aGUgbmV4dCBzdG9w IGlzIGluIGJhci4KLStnZGJfdGVzdCAiYyIge0JyZWFrcG9pbnQgWzAtOV0rLCAuKiBpbiBiYXIg XChcKSBmcm9tIC4qfQotKwotKyMgUmVzdGFydCB0aGUgaW5mZXJpb3IgYW5kIG1ha2Ugc3VyZSB0 aGVyZSBhcmUgbm8gYnJlYWtwb2ludCByZXNldAotKyMgZXJyb3JzLiAgVGhlc2UgY2FuIGhhcHBl biB3aXRoIHRoZSBwcm9iZXMtYmFzZWQgcnVudGltZSBsaW5rZXIKLSsjIGludGVyZmFjZSBpZiB0 aGUgY2FjaGUgaXMgbm90IGNsZWFyZWQgY29ycmVjdGx5LgotK3NldCB0ZXN0ICJyZXN0YXJ0Igot K2dkYl9ydW5fY21kCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgIiIgJHRlc3QgewotKyAgICAtcmUge1N0 YXJ0IGl0IGZyb20gdGhlIGJlZ2lubmluZ1w/IFwoeSBvciBuXCkgfSB7Ci0rCXNlbmRfZ2RiICJ5 XG4iCi0rCWV4cF9jb250aW51ZQotKyAgICB9Ci0rICAgIC1yZSB7RXJyb3IgaW4gcmUtc2V0dGlu ZyBicmVha3BvaW50fSB7Ci0rCWZhaWwgJHRlc3QKLSsgICAgfQotKyAgICAtcmUgIlxyXG4kZ2Ri X3Byb21wdCAkIiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotK30KLSsKLSsjIENoZWNrIHRoYXQg bmVpdGhlciBsaWJyYXJ5IGlzIGxvYWRlZC4KLStjaGVja19pbmZvX3NoYXJlZCAiaW5mbyBzaGFy ZWRsaWJyYXJ5ICM0IiAwIDAKLSsKLSsjIFJ1biB0byB0aGUgZmlyc3Qgc3RvcCBhbmQgY2hlY2sg dGhhdCBvbmx5IHRoZSBmaXJzdCBsaWJyYXJ5IGlzIGxvYWRlZC4KLStnZGJfdGVzdCAiYyIge0Jy ZWFrcG9pbnQgWzAtOV0rLCAuKiBpbiBzdG9wIFwoXCl9Ci0rY2hlY2tfaW5mb19zaGFyZWQgImlu Zm8gc2hhcmVkbGlicmFyeSAjNSIgMSAwCi0rCi0rIyBSdW4gdG8gdGhlIHNlY29uZCBzdG9wIGFu ZCBjaGVjayB0aGF0IGJvdGggbGlicmFyaWVzIGFyZSBsb2FkZWQuCi0rZ2RiX3Rlc3QgImMiIHtC cmVha3BvaW50IFswLTldKywgLiogaW4gc3RvcCBcKFwpfQotK2NoZWNrX2luZm9fc2hhcmVkICJp bmZvIHNoYXJlZGxpYnJhcnkgIzYiIDEgMQotKwotKyMgQ2hlY2sgdGhhdCB0aGUgbmV4dCBzdG9w IGlzIGluIGZvby4KLStnZGJfdGVzdCAiYyIge0JyZWFrcG9pbnQgWzAtOV0rLCAuKiBpbiBmb28g XChcKSBmcm9tIC4qfQotKwotKyMgQ2hlY2sgdGhhdCB0aGUgbmV4dCBzdG9wIGlzIGluIGJhci4K LStnZGJfdGVzdCAiYyIge0JyZWFrcG9pbnQgWzAtOV0rLCAuKiBpbiBiYXIgXChcKSBmcm9tIC4q fQotKwotKyMgUnVuIHRvIHRoZSBuZXh0IHN0b3AgYW5kIGNoZWNrIHRoYXQgdGhlIGZpcnN0IGxp YnJhcnkgaGFzIGJlZW4gdW5sb2FkZWQuCi0rZ2RiX3Rlc3QgImMiIHtCcmVha3BvaW50IFswLTld KywgLiogaW4gc3RvcCBcKFwpfQotK2NoZWNrX2luZm9fc2hhcmVkICJpbmZvIHNoYXJlZGxpYnJh cnkgIzciIDAgMQotKwotKyMgUnVuIHRvIHRoZSBsYXN0IHN0b3AgYW5kIGNoZWNrIHRoYXQgYm90 aCBsaWJyYXJpZXMgYXJlIGdvbmUuCi0rZ2RiX3Rlc3QgImMiIHtCcmVha3BvaW50IFswLTldKywg LiogaW4gc3RvcCBcKFwpfQotK2NoZWNrX2luZm9fc2hhcmVkICJpbmZvIHNoYXJlZGxpYnJhcnkg IzgiIDAgMAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQu YyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQuYwotbmV3IGZpbGUgbW9kZSAx MDA2NDQKLWluZGV4IDAwMDAwMDAuLmQ2OTlhMTEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQuYwotQEAgLTAsMCArMSw0OCBAQAotKy8qIENv cHlyaWdodCAyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Ci0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8ZGxmY24uaD4K LSsKLSt2b2lkCi0rc3RvcCAoKQotK3sKLSt9Ci0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSsgIHZv aWQgKmhhbmRsZTEsICpoYW5kbGUyOwotKyAgdm9pZCAoKmZ1bmMpKGludCk7Ci0rCi0rICBoYW5k bGUxID0gZGxvcGVuIChTSExJQjFfTkFNRSwgUlRMRF9MQVpZKTsKLSsgIHN0b3AgKCk7Ci0rCi0r ICBoYW5kbGUyID0gZGxvcGVuIChTSExJQjJfTkFNRSwgUlRMRF9MQVpZKTsKLSsgIHN0b3AgKCk7 Ci0rCi0rICBmdW5jID0gKHZvaWQgKCopKGludCkpIGRsc3ltIChoYW5kbGUxLCAiZm9vIik7Ci0r ICBmdW5jICgxKTsKLSsKLSsgIGZ1bmMgPSAodm9pZCAoKikoaW50KSkgZGxzeW0gKGhhbmRsZTIs ICJiYXIiKTsKLSsgIGZ1bmMgKDIpOwotKwotKyAgZGxjbG9zZSAoaGFuZGxlMSk7Ci0rICBzdG9w ICgpOwotKwotKyAgZGxjbG9zZSAoaGFuZGxlMik7Ci0rICBzdG9wICgpOwotKwotKyAgcmV0dXJu IDA7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQt c29saWIxLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2luZm8tc2hhcmVkLXNvbGliMS5jCi1u ZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOTk3OWVlNwotLS0tIC9kZXYvbnVs bAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJlZC1zb2xpYjEuYwotQEAg LTAsMCArMSwyNCBAQAotKy8qIENvcHlyaWdodCAyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsK LSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsKLStpbnQKLStmb28gKGludCBuKQotK3sKLSsgIHByaW50 ZiAoImZvbyAlZFxuIiwgbik7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJlZC1zb2xpYjIuYyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvaW5mby1zaGFyZWQtc29saWIyLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRl eCAwMDAwMDAwLi5kNGVkMWU2Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2luZm8tc2hhcmVkLXNvbGliMi5jCi1AQCAtMCwwICsxLDI0IEBACi0rLyogQ29weXJp Z2h0IDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsg ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlIDxzdGRpby5oPgotKwot K2ludAotK2JhciAoaW50IG4pCi0rewotKyAgcHJpbnRmICgiYmFyICVkXG4iLCBuKTsKLSsKLSsg IHJldHVybiAwOwotK30KLQotLS1EQ0EvQzlXU25EdGw1MHp1LS0KLQoKZGlmZiAtLWdpdCBhL2dk Yi1kbG9wZW4tc3RhcC1wcm9iZS03b2Y5LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTdv ZjkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNkNWY1NgotLS0g L2Rldi9udWxsCisrKyBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS03b2Y5LnBhdGNoCkBAIC0wLDAg KzEsMTEwNyBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMy0wNi9tc2cw MDAxOC5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEzLzA2LzA0IDEzOjEwOjUzCTEu MTU2ODQKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEzLzA2LzA0IDEzOjE3OjA1CTEuMTU2ODUK KyMjIC0xLDUgKzEsNTggQEAKKyAyMDEzLTA2LTA0ICBHYXJ5IEJlbnNvbiAgPGdiZW5zb25AcmVk aGF0LmNvbT4KKyAKKysJKiBicmVha3BvaW50LmggKGhhbmRsZV9zb2xpYl9ldmVudCk6IE1vdmVk IGZ1bmN0aW9uIGRlY2xhcmF0aW9uCisrCXRvIHNvbGliLmguCisrCSogYnJlYWtwb2ludC5jICho YW5kbGVfc29saWJfZXZlbnQpOiBNb3ZlZCBmdW5jdGlvbiB0byBzb2xpYi5jLgorKwkoYnBzdGF0 X3N0b3Bfc3RhdHVzKTogUGFzcyBuZXcgYXJndW1lbnQgdG8gaGFuZGxlX3NvbGliX2V2ZW50Lgor KwkqIHNvbGliLmggKHVwZGF0ZV9zb2xpYl9icmVha3BvaW50cyk6IE5ldyBmdW5jdGlvbiBkZWNs YXJhdGlvbi4KKysJKGhhbmRsZV9zb2xpYl9ldmVudCk6IE1vdmVkIGZ1bmN0aW9uIGRlY2xhcmF0 aW9uIGZyb20KKysJYnJlYWtwb2ludC5oLgorKwkqIHNvbGliLmMgKHVwZGF0ZV9zb2xpYl9icmVh a3BvaW50cyk6IE5ldyBmdW5jdGlvbi4KKysJKGhhbmRsZV9zb2xpYl9ldmVudCk6IE1vdmVkIGZ1 bmN0aW9uIGZyb20gYnJlYWtwb2ludC5jLgorKwlVcGRhdGVkIHRvIGNhbGwgc29saWJfb3BzLT5o YW5kbGVfZXZlbnQgaWYgbm90IE5VTEwuCisrCSogc29saXN0LmggKHRhcmdldF9zb19vcHMpOiBO ZXcgZmllbGRzICJ1cGRhdGVfYnJlYWtwb2ludHMiIGFuZAorKwkiaGFuZGxlX2V2ZW50Ii4KKysJ KiBpbmZydW4uYyAoc2V0X3N0b3Bfb25fc29saWJfZXZlbnRzKTogTmV3IGZ1bmN0aW9uLgorKwko X2luaXRpYWxpemVfaW5mcnVuKTogVXNlIHRoZSBhYm92ZSBmb3IgInNldAorKwlzdG9wLW9uLXNv bGliLWV2ZW50cyIuCisrCShoYW5kbGVfaW5mZXJpb3JfZXZlbnQpOiBQYXNzIG5ldyBhcmd1bWVu dCB0byBoYW5kbGVfc29saWJfZXZlbnQuCisrCSogc29saWItc3ZyNC5jIChwcm9iZS5oKTogTmV3 IGluY2x1ZGUuCisrCShzdnI0X2ZyZWVfbGlicmFyeV9saXN0KTogTmV3IGZvcndhcmQgZGVjbGFy YXRpb24uCisrCShwcm9iZV9hY3Rpb24pOiBOZXcgZW51bS4KKysJKHByb2JlX2luZm8pOiBOZXcg c3RydWN0LgorKwkocHJvYmVfaW5mbyk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCisrCShOVU1fUFJP QkVTKTogTmV3IGRlZmluaXRpb24uCisrCShzdnI0X2luZm8pOiBOZXcgZmllbGRzICJ1c2luZ194 ZmVyIiwgInByb2Jlc190YWJsZSIgYW5kCisrCSJzb2xpYl9saXN0Ii4KKysJKGZyZWVfcHJvYmVz X3RhYmxlKTogTmV3IGZ1bmN0aW9uLgorKwkoZnJlZV9zb2xpYl9saXN0KTogTmV3IGZ1bmN0aW9u LgorKwkoc3ZyNF9wc3BhY2VfZGF0YV9jbGVhbnVwKTogRnJlZSBwcm9iZXMgdGFibGUgYW5kIHNv bGliIGxpc3QuCisrCShzdnI0X2NvcHlfbGlicmFyeV9saXN0KTogTmV3IGZ1bmN0aW9uLgorKwko c3ZyNF9jdXJyZW50X3Nvc192aWFfeGZlcl9saWJyYXJpZXMpOiBOZXcgcGFyYW1ldGVyICJhbm5l eCIuCisrCShzdnI0X3JlYWRfc29fbGlzdCk6IE5ldyBwYXJhbWV0ZXIgInByZXZfbG0iLgorKwko c3ZyNF9jdXJyZW50X3Nvc19kaXJlY3QpOiBSZW5hbWVkIGZyb20gInN2cjRfY3VycmVudF9zb3Mi LgorKwkoc3ZyNF9jdXJyZW50X3Nvcyk6IE5ldyBmdW5jdGlvbi4KKysJKHByb2JlX2FuZF9hY3Rp b24pOiBOZXcgc3RydWN0LgorKwkoaGFzaF9wcm9iZV9hbmRfYWN0aW9uKTogTmV3IGZ1bmN0aW9u LgorKwkoZXF1YWxfcHJvYmVfYW5kX2FjdGlvbik6IExpa2V3aXNlLgorKwkocmVnaXN0ZXJfc29s aWJfZXZlbnRfcHJvYmUpOiBMaWtld2lzZS4KKysJKHNvbGliX2V2ZW50X3Byb2JlX2F0KTogTGlr ZXdpc2UuCisrCShzb2xpYl9ldmVudF9wcm9iZV9hY3Rpb24pOiBMaWtld2lzZS4KKysJKHNvbGlz dF91cGRhdGVfZnVsbCk6IExpa2V3aXNlLgorKwkoc29saXN0X3VwZGF0ZV9pbmNyZW1lbnRhbCk6 IExpa2V3aXNlLgorKwkoZGlzYWJsZV9wcm9iZXNfaW50ZXJmYWNlX2NsZWFudXApOiBMaWtld2lz ZS4KKysJKHN2cjRfaGFuZGxlX3NvbGliX2V2ZW50KTogTGlrZXdpc2UuCisrCShzdnI0X3VwZGF0 ZV9zb2xpYl9ldmVudF9icmVha3BvaW50KTogTGlrZXdpc2UuCisrCShzdnI0X3VwZGF0ZV9zb2xp Yl9ldmVudF9icmVha3BvaW50cyk6IExpa2V3aXNlLgorKwkoc3ZyNF9jcmVhdGVfc29saWJfZXZl bnRfYnJlYWtwb2ludHMpOiBMaWtld2lzZS4KKysJKGVuYWJsZV9icmVhayk6IEZyZWUgcHJvYmVz IHRhYmxlIGJlZm9yZSBjcmVhdGluZyBicmVha3BvaW50cy4KKysJVXNlIHN2cjRfY3JlYXRlX3Nv bGliX2V2ZW50X2JyZWFrcG9pbnRzIHRvIGNyZWF0ZSBicmVha3BvaW50cy4KKysJKHN2cjRfc29s aWJfY3JlYXRlX2luZmVyaW9yX2hvb2spOiBGcmVlIHRoZSBzb2xpYiBsaXN0LgorKwkoX2luaXRp YWxpemVfc3ZyNF9zb2xpYik6IEluaXRpYWxpc2UKKysJc3ZyNF9zb19vcHMuaGFuZGxlX3NvbGli X2V2ZW50IGFuZCBzdnI0X3NvX29wcy51cGRhdGVfYnJlYWtwb2ludHMuCisrCisrMjAxMy0wNi0w NCAgR2FyeSBCZW5zb24gIDxnYmVuc29uQHJlZGhhdC5jb20+CisrCisgCSogdGFyZ2V0LmggKHRh cmdldF9vcHMpOiBOZXcgZmllbGQKKyAJInRvX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFk Ii4KKyAJKHRhcmdldF9hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVhZCk6IE5ldyBtYWNyby4K K0luZGV4OiBnZGItNy42L2dkYi9icmVha3BvaW50LmgKKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy42 Lm9yaWcvZ2RiL2JyZWFrcG9pbnQuaAkyMDEzLTA2LTEwIDE0OjQ0OjM3LjQ1NTgxMjY1NiArMDIw MAorKysrIGdkYi03LjYvZ2RiL2JyZWFrcG9pbnQuaAkyMDEzLTA2LTEwIDE0OjQ0OjM3LjcwOTgx MjU3OSArMDIwMAorQEAgLTE1NTIsOCArMTU1Miw2IEBAIGV4dGVybiBpbnQgdXNlcl9icmVha3Bv aW50X3AgKHN0cnVjdCBicmUKKyAvKiBBdHRlbXB0IHRvIGRldGVybWluZSBhcmNoaXRlY3R1cmUg b2YgbG9jYXRpb24gaWRlbnRpZmllZCBieSBTQUwuICAqLworIGV4dGVybiBzdHJ1Y3QgZ2RiYXJj aCAqZ2V0X3NhbF9hcmNoIChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbCk7CisgCistZXh0ZXJu IHZvaWQgaGFuZGxlX3NvbGliX2V2ZW50ICh2b2lkKTsKKy0KKyBleHRlcm4gdm9pZCBicmVha3Bv aW50X2ZyZWVfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOworIAorIGV4dGVybiB2 b2lkIGJyZWFrcG9pbnRzX3JlbG9jYXRlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0luZGV4 OiBnZGItNy42L2dkYi9pbmZydW4uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjYub3JpZy9nZGIv aW5mcnVuLmMJMjAxMy0wNi0xMCAxNDo0NDozNy40Mjc4MTI2NjQgKzAyMDAKKysrKyBnZGItNy42 L2dkYi9pbmZydW4uYwkyMDEzLTA2LTEwIDE0OjQ0OjM3LjcxMTgxMjU3OSArMDIwMAorQEAgLTM3 MCw2ICszNzAsMTYgQEAgc3RhdGljIHN0cnVjdCBzeW1ib2wgKnN0ZXBfc3RhcnRfZnVuY3Rpbwor IC8qIE5vbnplcm8gaWYgd2Ugd2FudCB0byBnaXZlIGNvbnRyb2wgdG8gdGhlIHVzZXIgd2hlbiB3 ZSdyZSBub3RpZmllZAorICAgIG9mIHNoYXJlZCBsaWJyYXJ5IGV2ZW50cyBieSB0aGUgZHluYW1p YyBsaW5rZXIuICAqLworIGludCBzdG9wX29uX3NvbGliX2V2ZW50czsKKysKKysvKiBFbmFibGUg b3IgZGlzYWJsZSBvcHRpb25hbCBzaGFyZWQgbGlicmFyeSBldmVudCBicmVha3BvaW50cworKyAg IGFzIGFwcHJvcHJpYXRlIHdoZW4gdGhlIGFib3ZlIGZsYWcgaXMgY2hhbmdlZC4gICovCisrCisr c3RhdGljIHZvaWQKKytzZXRfc3RvcF9vbl9zb2xpYl9ldmVudHMgKGNoYXIgKmFyZ3MsIGludCBm cm9tX3R0eSwgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCisreworKyAgdXBkYXRlX3NvbGli X2JyZWFrcG9pbnRzICgpOworK30KKysKKyBzdGF0aWMgdm9pZAorIHNob3dfc3RvcF9vbl9zb2xp Yl9ldmVudHMgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCisgCQkJICAgc3Ry dWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQorQEAgLTczMzUsNyAr NzM0NSw3IEBAIFNob3cgc3RvcHBpbmcgZm9yIHNoYXJlZCBsaWJyYXJ5IGV2ZW50cy4KKyBJZiBu b256ZXJvLCBnZGIgd2lsbCBnaXZlIGNvbnRyb2wgdG8gdGhlIHVzZXIgd2hlbiB0aGUgZHluYW1p YyBsaW5rZXJcblwKKyBub3RpZmllcyBnZGIgb2Ygc2hhcmVkIGxpYnJhcnkgZXZlbnRzLiAgVGhl IG1vc3QgY29tbW9uIGV2ZW50IG9mIGludGVyZXN0XG5cCisgdG8gdGhlIHVzZXIgd291bGQgYmUg bG9hZGluZy91bmxvYWRpbmcgb2YgYSBuZXcgbGlicmFyeS4iKSwKKy0JCQkgICAgTlVMTCwKKysJ CQkgICAgc2V0X3N0b3Bfb25fc29saWJfZXZlbnRzLAorIAkJCSAgICBzaG93X3N0b3Bfb25fc29s aWJfZXZlbnRzLAorIAkJCSAgICAmc2V0bGlzdCwgJnNob3dsaXN0KTsKKyAKK0luZGV4OiBnZGIt Ny42L2dkYi9zb2xpYi1zdnI0LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy42Lm9yaWcvZ2RiL3Nv bGliLXN2cjQuYwkyMDEzLTA2LTEwIDE0OjQ0OjM3LjM5MjgxMjY3NSArMDIwMAorKysrIGdkYi03 LjYvZ2RiL3NvbGliLXN2cjQuYwkyMDEzLTA2LTEwIDE0OjQ0OjM3LjcxMjgxMjU3OCArMDIwMAor QEAgLTQ2LDEwICs0NiwxMiBAQAorICNpbmNsdWRlICJhdXh2LmgiCisgI2luY2x1ZGUgImV4Y2Vw dGlvbnMuaCIKKyAjaW5jbHVkZSAiZ2RiX2JmZC5oIgorKyNpbmNsdWRlICJwcm9iZS5oIgorIAor IHN0YXRpYyBzdHJ1Y3QgbGlua19tYXBfb2Zmc2V0cyAqc3ZyNF9mZXRjaF9saW5rX21hcF9vZmZz ZXRzICh2b2lkKTsKKyBzdGF0aWMgaW50IHN2cjRfaGF2ZV9saW5rX21hcF9vZmZzZXRzICh2b2lk KTsKKyBzdGF0aWMgdm9pZCBzdnI0X3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSAodm9pZCk7Cisr c3RhdGljIHZvaWQgc3ZyNF9mcmVlX2xpYnJhcnlfbGlzdCAodm9pZCAqcF9saXN0KTsKKyAKKyAv KiBMaW5rIG1hcCBpbmZvIHRvIGluY2x1ZGUgaW4gYW4gYWxsb2NhdGVkIHNvX2xpc3QgZW50cnku ICAqLworIAorQEAgLTEwNiw2ICsxMDgsNTUgQEAgc3RhdGljIGNvbnN0ICBjaGFyICogY29uc3Qg bWFpbl9uYW1lX2xpcworICAgTlVMTAorIH07CisgCisrLyogV2hhdCB0byBkbyB3aGVuIGEgcHJv YmUgc3RvcCBvY2N1cnMuICAqLworKworK2VudW0gcHJvYmVfYWN0aW9uCisreworKyAgLyogU29t ZXRoaW5nIHdlbnQgc2VyaW91c2x5IHdyb25nLiAgU3RvcCB1c2luZyBwcm9iZXMgYW5kCisrICAg ICByZXZlcnQgdG8gdXNpbmcgdGhlIG9sZGVyIGludGVyZmFjZS4gICovCisrICBQUk9CRVNfSU5U RVJGQUNFX0ZBSUxFRCwKKysKKysgIC8qIE5vIGFjdGlvbiBpcyByZXF1aXJlZC4gIFRoZSBzaGFy ZWQgb2JqZWN0IGxpc3QgaXMgc3RpbGwKKysgICAgIHZhbGlkLiAgKi8KKysgIERPX05PVEhJTkcs CisrCisrICAvKiBUaGUgc2hhcmVkIG9iamVjdCBsaXN0IHNob3VsZCBiZSByZWxvYWRlZCBlbnRp cmVseS4gICovCisrICBGVUxMX1JFTE9BRCwKKysKKysgIC8qIEF0dGVtcHQgdG8gaW5jcmVtZW50 YWxseSB1cGRhdGUgdGhlIHNoYXJlZCBvYmplY3QgbGlzdC4gSWYKKysgICAgIHRoZSB1cGRhdGUg ZmFpbHMgb3IgaXMgbm90IHBvc3NpYmxlLCBmYWxsIGJhY2sgdG8gcmVsb2FkaW5nCisrICAgICB0 aGUgbGlzdCBpbiBmdWxsLiAgKi8KKysgIFVQREFURV9PUl9SRUxPQUQsCisrfTsKKysKKysvKiBB IHByb2JlJ3MgbmFtZSBhbmQgaXRzIGFzc29jaWF0ZWQgYWN0aW9uLiAgKi8KKysKKytzdHJ1Y3Qg cHJvYmVfaW5mbworK3sKKysgIC8qIFRoZSBuYW1lIG9mIHRoZSBwcm9iZS4gICovCisrICBjb25z dCBjaGFyICpuYW1lOworKworKyAgLyogV2hhdCB0byBkbyB3aGVuIGEgcHJvYmUgc3RvcCBvY2N1 cnMuICAqLworKyAgZW51bSBwcm9iZV9hY3Rpb24gYWN0aW9uOworK307CisrCisrLyogQSBsaXN0 IG9mIG5hbWVkIHByb2JlcyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBhY3Rpb25zLiAgSWYgYWxsCisr ICAgcHJvYmVzIGFyZSBwcmVzZW50IGluIHRoZSBkeW5hbWljIGxpbmtlciB0aGVuIHRoZSBwcm9i ZXMtYmFzZWQKKysgICBpbnRlcmZhY2Ugd2lsbCBiZSB1c2VkLiAgKi8KKysKKytzdGF0aWMgY29u c3Qgc3RydWN0IHByb2JlX2luZm8gcHJvYmVfaW5mb1tdID0KKyt7CisrICB7ICJpbml0X3N0YXJ0 IiwgRE9fTk9USElORyB9LAorKyAgeyAiaW5pdF9jb21wbGV0ZSIsIEZVTExfUkVMT0FEIH0sCisr ICB7ICJtYXBfc3RhcnQiLCBET19OT1RISU5HIH0sCisrICB7ICJtYXBfZmFpbGVkIiwgRE9fTk9U SElORyB9LAorKyAgeyAicmVsb2NfY29tcGxldGUiLCBVUERBVEVfT1JfUkVMT0FEIH0sCisrICB7 ICJ1bm1hcF9zdGFydCIsIERPX05PVEhJTkcgfSwKKysgIHsgInVubWFwX2NvbXBsZXRlIiwgRlVM TF9SRUxPQUQgfSwKKyt9OworKworKyNkZWZpbmUgTlVNX1BST0JFUyBBUlJBWV9TSVpFIChwcm9i ZV9pbmZvKQorKworIC8qIFJldHVybiBub24temVybyBpZiBHREJfU09fTkFNRSBhbmQgSU5GRVJJ T1JfU09fTkFNRSByZXByZXNlbnQKKyAgICB0aGUgc2FtZSBzaGFyZWQgbGlicmFyeS4gICovCisg CitAQCAtMzEzLDE3ICszNjQsNTggQEAgc3RydWN0IHN2cjRfaW5mbworICAgQ09SRV9BRERSIGlu dGVycF90ZXh0X3NlY3RfaGlnaDsKKyAgIENPUkVfQUREUiBpbnRlcnBfcGx0X3NlY3RfbG93Owor ICAgQ09SRV9BRERSIGludGVycF9wbHRfc2VjdF9oaWdoOworKworKyAgLyogTm9uemVybyBpZiB0 aGUgbGlzdCBvZiBvYmplY3RzIHdhcyBsYXN0IG9idGFpbmVkIGZyb20gdGhlIHRhcmdldAorKyAg ICAgdmlhIHFYZmVyOmxpYnJhcmllcy1zdnI0OnJlYWQuICAqLworKyAgaW50IHVzaW5nX3hmZXI7 CisrCisrICAvKiBUYWJsZSBvZiBzdHJ1Y3QgcHJvYmVfYW5kX2FjdGlvbiBpbnN0YW5jZXMsIHVz ZWQgYnkgdGhlCisrICAgICBwcm9iZXMtYmFzZWQgaW50ZXJmYWNlIHRvIG1hcCBicmVha3BvaW50 IGFkZHJlc3NlcyB0byBwcm9iZXMKKysgICAgIGFuZCB0aGVpciBhc3NvY2lhdGVkIGFjdGlvbnMu ICBMb29rdXAgaXMgcGVyZm9ybWVkIHVzaW5nCisrICAgICBwcm9iZV9hbmRfYWN0aW9uLT5wcm9i ZS0+YWRkcmVzcy4gICovCisrICBodGFiX3QgcHJvYmVzX3RhYmxlOworKworKyAgLyogTGlzdCBv ZiBvYmplY3RzIGxvYWRlZCBpbnRvIHRoZSBpbmZlcmlvciwgdXNlZCBieSB0aGUgcHJvYmVzLQor KyAgICAgYmFzZWQgaW50ZXJmYWNlLiAgKi8KKysgIHN0cnVjdCBzb19saXN0ICpzb2xpYl9saXN0 OworIH07CisgCisgLyogUGVyLXByb2dyYW0tc3BhY2UgZGF0YSBrZXkuICAqLworIHN0YXRpYyBj b25zdCBzdHJ1Y3QgcHJvZ3JhbV9zcGFjZV9kYXRhICpzb2xpYl9zdnI0X3BzcGFjZV9kYXRhOwor IAorKy8qIEZyZWUgdGhlIHByb2JlcyB0YWJsZS4gICovCisrCisrc3RhdGljIHZvaWQKKytmcmVl X3Byb2Jlc190YWJsZSAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbykKKyt7CisrICBpZiAoaW5mby0+ cHJvYmVzX3RhYmxlID09IE5VTEwpCisrICAgIHJldHVybjsKKysKKysgIGh0YWJfZGVsZXRlIChp bmZvLT5wcm9iZXNfdGFibGUpOworKyAgaW5mby0+cHJvYmVzX3RhYmxlID0gTlVMTDsKKyt9Cisr CisrLyogRnJlZSB0aGUgc29saWIgbGlzdC4gICovCisrCisrc3RhdGljIHZvaWQKKytmcmVlX3Nv bGliX2xpc3QgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8pCisreworKyAgc3ZyNF9mcmVlX2xpYnJh cnlfbGlzdCAoJmluZm8tPnNvbGliX2xpc3QpOworKyAgaW5mby0+c29saWJfbGlzdCA9IE5VTEw7 CisrfQorKworIHN0YXRpYyB2b2lkCisgc3ZyNF9wc3BhY2VfZGF0YV9jbGVhbnVwIChzdHJ1Y3Qg cHJvZ3JhbV9zcGFjZSAqcHNwYWNlLCB2b2lkICphcmcpCisgeworICAgc3RydWN0IHN2cjRfaW5m byAqaW5mbzsKKyAKKyAgIGluZm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgc29saWJf c3ZyNF9wc3BhY2VfZGF0YSk7CisrICBpZiAoaW5mbyA9PSBOVUxMKQorKyAgICByZXR1cm47Cisr CisrICBmcmVlX3Byb2Jlc190YWJsZSAoaW5mbyk7CisrICBmcmVlX3NvbGliX2xpc3QgKGluZm8p OworKworICAgeGZyZWUgKGluZm8pOworIH0KKyAKK0BAIC05ODIsNiArMTA3NCwzNCBAQCBzdnI0 X2ZyZWVfbGlicmFyeV9saXN0ICh2b2lkICpwX2xpc3QpCisgICAgIH0KKyB9CisgCisrLyogQ29w eSBsaWJyYXJ5IGxpc3QuICAqLworKworK3N0YXRpYyBzdHJ1Y3Qgc29fbGlzdCAqCisrc3ZyNF9j b3B5X2xpYnJhcnlfbGlzdCAoc3RydWN0IHNvX2xpc3QgKnNyYykKKyt7CisrICBzdHJ1Y3Qgc29f bGlzdCAqZHN0ID0gTlVMTDsKKysgIHN0cnVjdCBzb19saXN0ICoqbGluayA9ICZkc3Q7CisrCisr ICB3aGlsZSAoc3JjICE9IE5VTEwpCisrICAgIHsKKysgICAgICBzdHJ1Y3Qgc29fbGlzdCAqbmV3 OworKworKyAgICAgIG5ldyA9IHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IHNvX2xpc3QpKTsKKysg ICAgICBtZW1jcHkgKG5ldywgc3JjLCBzaXplb2YgKHN0cnVjdCBzb19saXN0KSk7CisrCisrICAg ICAgbmV3LT5sbV9pbmZvID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgbG1faW5mbykpOworKyAg ICAgIG1lbWNweSAobmV3LT5sbV9pbmZvLCBzcmMtPmxtX2luZm8sIHNpemVvZiAoc3RydWN0IGxt X2luZm8pKTsKKysKKysgICAgICBuZXctPm5leHQgPSBOVUxMOworKyAgICAgICpsaW5rID0gbmV3 OworKyAgICAgIGxpbmsgPSAmbmV3LT5uZXh0OworKworKyAgICAgIHNyYyA9IHNyYy0+bmV4dDsK KysgICAgfQorKworKyAgcmV0dXJuIGRzdDsKKyt9CisrCisgI2lmZGVmIEhBVkVfTElCRVhQQVQK KyAKKyAjaW5jbHVkZSAieG1sLXN1cHBvcnQuaCIKK0BAIC0xMDk3LDIzICsxMjE3LDMwIEBAIHN2 cjRfcGFyc2VfbGlicmFyaWVzIChjb25zdCBjaGFyICpkb2N1bWUKKyAgIHJldHVybiAwOworIH0K KyAKKy0vKiBBdHRlbXB0IHRvIGdldCBzb19saXN0IGZyb20gdGFyZ2V0IHZpYSBxWGZlcjpsaWJy YXJpZXM6cmVhZCBwYWNrZXQuCisrLyogQXR0ZW1wdCB0byBnZXQgc29fbGlzdCBmcm9tIHRhcmdl dCB2aWEgcVhmZXI6bGlicmFyaWVzLXN2cjQ6cmVhZCBwYWNrZXQuCisgCisgICAgUmV0dXJuIDAg aWYgcGFja2V0IG5vdCBzdXBwb3J0ZWQsICpTT19MSVNUX1JFVFVSTiBpcyBub3QgbW9kaWZpZWQg aW4gc3VjaAorICAgIGNhc2UuICBSZXR1cm4gMSBpZiAqU09fTElTVF9SRVRVUk4gY29udGFpbnMg dGhlIGxpYnJhcnkgbGlzdCwgaXQgbWF5IGJlCistICAgZW1wdHksIGNhbGxlciBpcyByZXNwb25z aWJsZSBmb3IgZnJlZWluZyBhbGwgaXRzIGVudHJpZXMuICAqLworKyAgIGVtcHR5LCBjYWxsZXIg aXMgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgYWxsIGl0cyBlbnRyaWVzLgorKworKyAgIE5vdGUg dGhhdCBBTk5FWCBtdXN0IGJlIE5VTEwgaWYgdGhlIHJlbW90ZSBkb2VzIG5vdCBleHBsaWNpdGx5 IGFsbG93CisrICAgcVhmZXI6bGlicmFyaWVzLXN2cjQ6cmVhZCBwYWNrZXRzIHdpdGggbm9uLWVt cHR5IGFubmV4ZXMuICBTdXBwb3J0IGZvcgorKyAgIHRoaXMgY2FuIGJlIGNoZWNrZWQgdXNpbmcg dGFyZ2V0X2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkICgpLiAgKi8KKyAKKyBzdGF0aWMg aW50Cistc3ZyNF9jdXJyZW50X3Nvc192aWFfeGZlcl9saWJyYXJpZXMgKHN0cnVjdCBzdnI0X2xp YnJhcnlfbGlzdCAqbGlzdCkKKytzdnI0X2N1cnJlbnRfc29zX3ZpYV94ZmVyX2xpYnJhcmllcyAo c3RydWN0IHN2cjRfbGlicmFyeV9saXN0ICpsaXN0LAorKwkJCQkgICAgIGNvbnN0IGNoYXIgKmFu bmV4KQorIHsKKyAgIGNoYXIgKnN2cjRfbGlicmFyeV9kb2N1bWVudDsKKyAgIGludCByZXN1bHQ7 CisgICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKKyAKKysgIGdkYl9hc3NlcnQgKGFubmV4ID09 IE5VTEwgfHwgdGFyZ2V0X2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkICgpKTsKKysKKyAg IC8qIEZldGNoIHRoZSBsaXN0IG9mIHNoYXJlZCBsaWJyYXJpZXMuICAqLworICAgc3ZyNF9saWJy YXJ5X2RvY3VtZW50ID0gdGFyZ2V0X3JlYWRfc3RyYWxsb2MgKCZjdXJyZW50X3RhcmdldCwKKyAJ CQkJCQlUQVJHRVRfT0JKRUNUX0xJQlJBUklFU19TVlI0LAorLQkJCQkJCU5VTEwpOworKwkJCQkJ CWFubmV4KTsKKyAgIGlmIChzdnI0X2xpYnJhcnlfZG9jdW1lbnQgPT0gTlVMTCkKKyAgICAgcmV0 dXJuIDA7CisgCitAQCAtMTEyNyw3ICsxMjU0LDggQEAgc3ZyNF9jdXJyZW50X3Nvc192aWFfeGZl cl9saWJyYXJpZXMgKHN0cgorICNlbHNlCisgCisgc3RhdGljIGludAorLXN2cjRfY3VycmVudF9z b3NfdmlhX3hmZXJfbGlicmFyaWVzIChzdHJ1Y3Qgc3ZyNF9saWJyYXJ5X2xpc3QgKmxpc3QpCisr c3ZyNF9jdXJyZW50X3Nvc192aWFfeGZlcl9saWJyYXJpZXMgKHN0cnVjdCBzdnI0X2xpYnJhcnlf bGlzdCAqbGlzdCwKKysJCQkJICAgICBjb25zdCBjaGFyICphbm5leCkKKyB7CisgICByZXR1cm4g MDsKKyB9CitAQCAtMTE2MSwxNSArMTI4OSwxOSBAQCBzdnI0X2RlZmF1bHRfc29zICh2b2lkKQor ICAgcmV0dXJuIG5ldzsKKyB9CisgCistLyogUmVhZCB0aGUgd2hvbGUgaW5mZXJpb3IgbGlicmFy aWVzIGNoYWluIHN0YXJ0aW5nIGF0IGFkZHJlc3MgTE0uICBBZGQgdGhlCistICAgZW50cmllcyB0 byB0aGUgdGFpbCByZWZlcmVuY2VkIGJ5IExJTktfUFRSX1BUUi4gIElnbm9yZSB0aGUgZmlyc3Qg ZW50cnkgaWYKKy0gICBJR05PUkVfRklSU1QgYW5kIHNldCBnbG9iYWwgTUFJTl9MTV9BRERSIGFj Y29yZGluZyB0byBpdC4gICovCisrLyogUmVhZCB0aGUgd2hvbGUgaW5mZXJpb3IgbGlicmFyaWVz IGNoYWluIHN0YXJ0aW5nIGF0IGFkZHJlc3MgTE0uCisrICAgRXhwZWN0IHRoZSBmaXJzdCBlbnRy eSBpbiB0aGUgY2hhaW4ncyBwcmV2aW91cyBlbnRyeSB0byBiZSBQUkVWX0xNLgorKyAgIEFkZCB0 aGUgZW50cmllcyB0byB0aGUgdGFpbCByZWZlcmVuY2VkIGJ5IExJTktfUFRSX1BUUi4gIElnbm9y ZSB0aGUKKysgICBmaXJzdCBlbnRyeSBpZiBJR05PUkVfRklSU1QgYW5kIHNldCBnbG9iYWwgTUFJ Tl9MTV9BRERSIGFjY29yZGluZworKyAgIHRvIGl0LiAgUmV0dXJucyBub256ZXJvIHVwb24gc3Vj Y2Vzcy4gIElmIHplcm8gaXMgcmV0dXJuZWQgdGhlCisrICAgZW50cmllcyBzdG9yZWQgdG8gTElO S19QVFJfUFRSIGFyZSBzdGlsbCB2YWxpZCBhbHRob3VnaCB0aGV5IG1heQorKyAgIHJlcHJlc2Vu dCBvbmx5IHBhcnQgb2YgdGhlIGluZmVyaW9yIGxpYnJhcnkgbGlzdC4gICovCisgCistc3RhdGlj IHZvaWQKKy1zdnI0X3JlYWRfc29fbGlzdCAoQ09SRV9BRERSIGxtLCBzdHJ1Y3Qgc29fbGlzdCAq KipsaW5rX3B0cl9wdHIsCistCQkgICBpbnQgaWdub3JlX2ZpcnN0KQorK3N0YXRpYyBpbnQKKytz dnI0X3JlYWRfc29fbGlzdCAoQ09SRV9BRERSIGxtLCBDT1JFX0FERFIgcHJldl9sbSwKKysJCSAg IHN0cnVjdCBzb19saXN0ICoqKmxpbmtfcHRyX3B0ciwgaW50IGlnbm9yZV9maXJzdCkKKyB7Cist ICBDT1JFX0FERFIgcHJldl9sbSA9IDAsIG5leHRfbG07CisrICBDT1JFX0FERFIgbmV4dF9sbTsK KyAKKyAgIGZvciAoOyBsbSAhPSAwOyBwcmV2X2xtID0gbG0sIGxtID0gbmV4dF9sbSkKKyAgICAg eworQEAgLTExODUsNyArMTMxNyw3IEBAIHN2cjRfcmVhZF9zb19saXN0IChDT1JFX0FERFIgbG0s IHN0cnVjdAorICAgICAgIGlmIChuZXctPmxtX2luZm8gPT0gTlVMTCkKKyAJeworIAkgIGRvX2Ns ZWFudXBzIChvbGRfY2hhaW4pOworLQkgIGJyZWFrOworKwkgIHJldHVybiAwOworIAl9CisgCisg ICAgICAgbmV4dF9sbSA9IG5ldy0+bG1faW5mby0+bF9uZXh0OworQEAgLTExOTYsNyArMTMyOCw3 IEBAIHN2cjRfcmVhZF9zb19saXN0IChDT1JFX0FERFIgbG0sIHN0cnVjdAorIAkJICAgcGFkZHJl c3MgKHRhcmdldF9nZGJhcmNoICgpLCBwcmV2X2xtKSwKKyAJCSAgIHBhZGRyZXNzICh0YXJnZXRf Z2RiYXJjaCAoKSwgbmV3LT5sbV9pbmZvLT5sX3ByZXYpKTsKKyAJICBkb19jbGVhbnVwcyAob2xk X2NoYWluKTsKKy0JICBicmVhazsKKysJICByZXR1cm4gMDsKKyAJfQorIAorICAgICAgIC8qIEZv ciBTVlI0IHZlcnNpb25zLCB0aGUgZmlyc3QgZW50cnkgaW4gdGhlIGxpbmsgbWFwIGlzIGZvciB0 aGUKK0BAIC0xMjkxLDE3ICsxNDIzLDIxIEBAIHN2cjRfcmVhZF9zb19saXN0IChDT1JFX0FERFIg bG0sIHN0cnVjdAorICAgICAgICoqbGlua19wdHJfcHRyID0gbmV3OworICAgICAgICpsaW5rX3B0 cl9wdHIgPSAmbmV3LT5uZXh0OworICAgICB9CisrCisrICByZXR1cm4gMTsKKyB9CisgCistLyog SW1wbGVtZW50IHRoZSAiY3VycmVudF9zb3MiIHRhcmdldF9zb19vcHMgbWV0aG9kLiAgKi8KKysv KiBSZWFkIHRoZSBmdWxsIGxpc3Qgb2YgY3VycmVudGx5IGxvYWRlZCBzaGFyZWQgb2JqZWN0cyBk aXJlY3RseQorKyAgIGZyb20gdGhlIGluZmVyaW9yLCB3aXRob3V0IHJlZmVycmluZyB0byBhbnkg bGlicmFyaWVzIHJlYWQgYW5kCisrICAgc3RvcmVkIGJ5IHRoZSBwcm9iZXMgaW50ZXJmYWNlLiAg SGFuZGxlIHNwZWNpYWwgY2FzZXMgcmVsYXRpbmcKKysgICB0byB0aGUgZmlyc3QgZWxlbWVudHMg b2YgdGhlIGxpc3QuICAqLworIAorIHN0YXRpYyBzdHJ1Y3Qgc29fbGlzdCAqCistc3ZyNF9jdXJy ZW50X3NvcyAodm9pZCkKKytzdnI0X2N1cnJlbnRfc29zX2RpcmVjdCAoc3RydWN0IHN2cjRfaW5m byAqaW5mbykKKyB7CisgICBDT1JFX0FERFIgbG07CisgICBzdHJ1Y3Qgc29fbGlzdCAqaGVhZCA9 IE5VTEw7CisgICBzdHJ1Y3Qgc29fbGlzdCAqKmxpbmtfcHRyID0gJmhlYWQ7CistICBzdHJ1Y3Qg c3ZyNF9pbmZvICppbmZvOworICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CisgICBpbnQgaWdu b3JlX2ZpcnN0OworICAgc3RydWN0IHN2cjRfbGlicmFyeV9saXN0IGxpYnJhcnlfbGlzdDsKK0BA IC0xMzE0LDE5ICsxNDUwLDE2IEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCisgICAgICBVbmZv cnR1bmF0ZWx5IHN0YXRpY2FsbHkgbGlua2VkIGluZmVyaW9ycyB3aWxsIGFsc28gZmFsbCBiYWNr IHRocm91Z2ggdGhpcworICAgICAgc3Vib3B0aW1hbCBjb2RlIHBhdGguICAqLworIAorLSAgaWYg KHN2cjRfY3VycmVudF9zb3NfdmlhX3hmZXJfbGlicmFyaWVzICgmbGlicmFyeV9saXN0KSkKKysg IGluZm8tPnVzaW5nX3hmZXIgPSBzdnI0X2N1cnJlbnRfc29zX3ZpYV94ZmVyX2xpYnJhcmllcyAo JmxpYnJhcnlfbGlzdCwKKysJCQkJCQkJICBOVUxMKTsKKysgIGlmIChpbmZvLT51c2luZ194ZmVy KQorICAgICB7CisgICAgICAgaWYgKGxpYnJhcnlfbGlzdC5tYWluX2xtKQorLQl7CistCSAgaW5m byA9IGdldF9zdnI0X2luZm8gKCk7CistCSAgaW5mby0+bWFpbl9sbV9hZGRyID0gbGlicmFyeV9s aXN0Lm1haW5fbG07CistCX0KKysJaW5mby0+bWFpbl9sbV9hZGRyID0gbGlicmFyeV9saXN0Lm1h aW5fbG07CisgCisgICAgICAgcmV0dXJuIGxpYnJhcnlfbGlzdC5oZWFkID8gbGlicmFyeV9saXN0 LmhlYWQgOiBzdnI0X2RlZmF1bHRfc29zICgpOworICAgICB9CisgCistICBpbmZvID0gZ2V0X3N2 cjRfaW5mbyAoKTsKKy0KKyAgIC8qIEFsd2F5cyBsb2NhdGUgdGhlIGRlYnVnIHN0cnVjdCwgaW4g Y2FzZSBpdCBoYXMgbW92ZWQuICAqLworICAgaW5mby0+ZGVidWdfYmFzZSA9IDA7CisgICBsb2Nh dGVfYmFzZSAoaW5mbyk7CitAQCAtMTM0OSw3ICsxNDgyLDcgQEAgc3ZyNF9jdXJyZW50X3NvcyAo dm9pZCkKKyAgICAgIGBzdHJ1Y3Qgc29fbGlzdCcgbm9kZXMuICAqLworICAgbG0gPSBzb2xpYl9z dnI0X3JfbWFwIChpbmZvKTsKKyAgIGlmIChsbSkKKy0gICAgc3ZyNF9yZWFkX3NvX2xpc3QgKGxt LCAmbGlua19wdHIsIGlnbm9yZV9maXJzdCk7CisrICAgIHN2cjRfcmVhZF9zb19saXN0IChsbSwg MCwgJmxpbmtfcHRyLCBpZ25vcmVfZmlyc3QpOworIAorICAgLyogT24gU29sYXJpcywgdGhlIGR5 bmFtaWMgbGlua2VyIGlzIG5vdCBpbiB0aGUgbm9ybWFsIGxpc3Qgb2YKKyAgICAgIHNoYXJlZCBv YmplY3RzLCBzbyBtYWtlIHN1cmUgd2UgcGljayBpdCB1cCB0b28uICBIYXZpbmcKK0BAIC0xMzU3 LDcgKzE0OTAsNyBAQCBzdnI0X2N1cnJlbnRfc29zICh2b2lkKQorICAgICAgZm9yIHNraXBwaW5n IGR5bmFtaWMgbGlua2VyIHJlc29sdmVyIGNvZGUuICAqLworICAgbG0gPSBzb2xpYl9zdnI0X3Jf bGRzb21hcCAoaW5mbyk7CisgICBpZiAobG0pCistICAgIHN2cjRfcmVhZF9zb19saXN0IChsbSwg JmxpbmtfcHRyLCAwKTsKKysgICAgc3ZyNF9yZWFkX3NvX2xpc3QgKGxtLCAwLCAmbGlua19wdHIs IDApOworIAorICAgZGlzY2FyZF9jbGVhbnVwcyAoYmFja190byk7CisgCitAQCAtMTM2Nyw2ICsx NTAwLDIyIEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCisgICByZXR1cm4gaGVhZDsKKyB9Cisg CisrLyogSW1wbGVtZW50IHRoZSAiY3VycmVudF9zb3MiIHRhcmdldF9zb19vcHMgbWV0aG9kLiAg Ki8KKysKKytzdGF0aWMgc3RydWN0IHNvX2xpc3QgKgorK3N2cjRfY3VycmVudF9zb3MgKHZvaWQp CisreworKyAgc3RydWN0IHN2cjRfaW5mbyAqaW5mbyA9IGdldF9zdnI0X2luZm8gKCk7CisrCisr ICAvKiBJZiB0aGUgc29saWIgbGlzdCBoYXMgYmVlbiByZWFkIGFuZCBzdG9yZWQgYnkgdGhlIHBy b2JlcworKyAgICAgaW50ZXJmYWNlIHRoZW4gd2UgcmV0dXJuIGEgY29weSBvZiB0aGUgc3RvcmVk IGxpc3QuICAqLworKyAgaWYgKGluZm8tPnNvbGliX2xpc3QgIT0gTlVMTCkKKysgICAgcmV0dXJu IHN2cjRfY29weV9saWJyYXJ5X2xpc3QgKGluZm8tPnNvbGliX2xpc3QpOworKworKyAgLyogT3Ro ZXJ3aXNlIG9idGFpbiB0aGUgc29saWIgbGlzdCBkaXJlY3RseSBmcm9tIHRoZSBpbmZlcmlvci4g ICovCisrICByZXR1cm4gc3ZyNF9jdXJyZW50X3Nvc19kaXJlY3QgKGluZm8pOworK30KKysKKyAv KiBHZXQgdGhlIGFkZHJlc3Mgb2YgdGhlIGxpbmtfbWFwIGZvciBhIGdpdmVuIE9CSkZJTEUuICAq LworIAorIENPUkVfQUREUgorQEAgLTE0NDksNiArMTU5OCw0NzYgQEAgZXhlY19lbnRyeV9wb2lu dCAoc3RydWN0IGJmZCAqYWJmZCwgc3RydQorICAgcmV0dXJuIGdkYmFyY2hfYWRkcl9iaXRzX3Jl bW92ZSAodGFyZ2V0X2dkYmFyY2ggKCksIGFkZHIpOworIH0KKyAKKysvKiBBIHByb2JlIGFuZCBp dHMgYXNzb2NpYXRlZCBhY3Rpb24uICAqLworKworK3N0cnVjdCBwcm9iZV9hbmRfYWN0aW9uCisr eworKyAgLyogVGhlIHByb2JlLiAgKi8KKysgIHN0cnVjdCBwcm9iZSAqcHJvYmU7CisrCisrICAv KiBUaGUgYWN0aW9uLiAgKi8KKysgIGVudW0gcHJvYmVfYWN0aW9uIGFjdGlvbjsKKyt9OworKwor Ky8qIFJldHVybnMgYSBoYXNoIGNvZGUgZm9yIHRoZSBwcm9iZV9hbmRfYWN0aW9uIHJlZmVyZW5j ZWQgYnkgcC4gICovCisrCisrc3RhdGljIGhhc2h2YWxfdAorK2hhc2hfcHJvYmVfYW5kX2FjdGlv biAoY29uc3Qgdm9pZCAqcCkKKyt7CisrICBjb25zdCBzdHJ1Y3QgcHJvYmVfYW5kX2FjdGlvbiAq cGEgPSBwOworKworKyAgcmV0dXJuIChoYXNodmFsX3QpIHBhLT5wcm9iZS0+YWRkcmVzczsKKyt9 CisrCisrLyogUmV0dXJucyBub24temVybyBpZiB0aGUgcHJvYmVfYW5kX2FjdGlvbnMgcmVmZXJl bmNlZCBieSBwMSBhbmQgcDIKKysgICBhcmUgZXF1YWwuICAqLworKworK3N0YXRpYyBpbnQKKytl cXVhbF9wcm9iZV9hbmRfYWN0aW9uIChjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpCisr eworKyAgY29uc3Qgc3RydWN0IHByb2JlX2FuZF9hY3Rpb24gKnBhMSA9IHAxOworKyAgY29uc3Qg c3RydWN0IHByb2JlX2FuZF9hY3Rpb24gKnBhMiA9IHAyOworKworKyAgcmV0dXJuIHBhMS0+cHJv YmUtPmFkZHJlc3MgPT0gcGEyLT5wcm9iZS0+YWRkcmVzczsKKyt9CisrCisrLyogUmVnaXN0ZXIg YSBzb2xpYiBldmVudCBwcm9iZSBhbmQgaXRzIGFzc29jaWF0ZWQgYWN0aW9uIGluIHRoZQorKyAg IHByb2JlcyB0YWJsZS4gICovCisrCisrc3RhdGljIHZvaWQKKytyZWdpc3Rlcl9zb2xpYl9ldmVu dF9wcm9iZSAoc3RydWN0IHByb2JlICpwcm9iZSwgZW51bSBwcm9iZV9hY3Rpb24gYWN0aW9uKQor K3sKKysgIHN0cnVjdCBzdnI0X2luZm8gKmluZm8gPSBnZXRfc3ZyNF9pbmZvICgpOworKyAgc3Ry dWN0IHByb2JlX2FuZF9hY3Rpb24gbG9va3VwLCAqcGE7CisrICB2b2lkICoqc2xvdDsKKysKKysg IC8qIENyZWF0ZSB0aGUgcHJvYmVzIHRhYmxlLCBpZiBuZWNlc3NhcnkuICAqLworKyAgaWYgKGlu Zm8tPnByb2Jlc190YWJsZSA9PSBOVUxMKQorKyAgICBpbmZvLT5wcm9iZXNfdGFibGUgPSBodGFi X2NyZWF0ZV9hbGxvYyAoMSwgaGFzaF9wcm9iZV9hbmRfYWN0aW9uLAorKwkJCQkJICAgIGVxdWFs X3Byb2JlX2FuZF9hY3Rpb24sCisrCQkJCQkgICAgeGZyZWUsIHhjYWxsb2MsIHhmcmVlKTsKKysK KysgIGxvb2t1cC5wcm9iZSA9IHByb2JlOworKyAgc2xvdCA9IGh0YWJfZmluZF9zbG90IChpbmZv LT5wcm9iZXNfdGFibGUsICZsb29rdXAsIElOU0VSVCk7CisrICBnZGJfYXNzZXJ0ICgqc2xvdCA9 PSBIVEFCX0VNUFRZX0VOVFJZKTsKKysKKysgIHBhID0gWENORVcgKHN0cnVjdCBwcm9iZV9hbmRf YWN0aW9uKTsKKysgIHBhLT5wcm9iZSA9IHByb2JlOworKyAgcGEtPmFjdGlvbiA9IGFjdGlvbjsK KysKKysgICpzbG90ID0gcGE7CisrfQorKworKy8qIEdldCB0aGUgc29saWIgZXZlbnQgcHJvYmUg YXQgdGhlIHNwZWNpZmllZCBsb2NhdGlvbiwgYW5kIHRoZQorKyAgIGFjdGlvbiBhc3NvY2lhdGVk IHdpdGggaXQuICBSZXR1cm5zIE5VTEwgaWYgbm8gc29saWIgZXZlbnQgcHJvYmUKKysgICB3YXMg Zm91bmQuICAqLworKworK3N0YXRpYyBzdHJ1Y3QgcHJvYmVfYW5kX2FjdGlvbiAqCisrc29saWJf ZXZlbnRfcHJvYmVfYXQgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8sIENPUkVfQUREUiBhZGRyZXNz KQorK3sKKysgIHN0cnVjdCBwcm9iZSBsb29rdXBfcHJvYmU7CisrICBzdHJ1Y3QgcHJvYmVfYW5k X2FjdGlvbiBsb29rdXA7CisrICB2b2lkICoqc2xvdDsKKysKKysgIGxvb2t1cF9wcm9iZS5hZGRy ZXNzID0gYWRkcmVzczsKKysgIGxvb2t1cC5wcm9iZSA9ICZsb29rdXBfcHJvYmU7CisrICBzbG90 ID0gaHRhYl9maW5kX3Nsb3QgKGluZm8tPnByb2Jlc190YWJsZSwgJmxvb2t1cCwgTk9fSU5TRVJU KTsKKysKKysgIGlmIChzbG90ID09IE5VTEwpCisrICAgIHJldHVybiBOVUxMOworKworKyAgcmV0 dXJuIChzdHJ1Y3QgcHJvYmVfYW5kX2FjdGlvbiAqKSAqc2xvdDsKKyt9CisrCisrLyogRGVjaWRl IHdoYXQgYWN0aW9uIHRvIHRha2Ugd2hlbiB0aGUgc3BlY2lmaWVkIHNvbGliIGV2ZW50IHByb2Jl IGlzCisrICAgaGl0LiAgKi8KKysKKytzdGF0aWMgZW51bSBwcm9iZV9hY3Rpb24KKytzb2xpYl9l dmVudF9wcm9iZV9hY3Rpb24gKHN0cnVjdCBwcm9iZV9hbmRfYWN0aW9uICpwYSkKKyt7CisrICBl bnVtIHByb2JlX2FjdGlvbiBhY3Rpb247CisrICB1bnNpZ25lZCBwcm9iZV9hcmdjOworKworKyAg YWN0aW9uID0gcGEtPmFjdGlvbjsKKysgIGlmIChhY3Rpb24gPT0gRE9fTk9USElORyB8fCBhY3Rp b24gPT0gUFJPQkVTX0lOVEVSRkFDRV9GQUlMRUQpCisrICAgIHJldHVybiBhY3Rpb247CisrCisr ICBnZGJfYXNzZXJ0IChhY3Rpb24gPT0gRlVMTF9SRUxPQUQgfHwgYWN0aW9uID09IFVQREFURV9P Ul9SRUxPQUQpOworKworKyAgLyogQ2hlY2sgdGhhdCBhbiBhcHByb3ByaWF0ZSBudW1iZXIgb2Yg YXJndW1lbnRzIGhhcyBiZWVuIHN1cHBsaWVkLgorKyAgICAgV2UgZXhwZWN0OgorKyAgICAgICBh cmcwOiBMbWlkX3QgbG1pZCAobWFuZGF0b3J5KQorKyAgICAgICBhcmcxOiBzdHJ1Y3Qgcl9kZWJ1 ZyAqZGVidWdfYmFzZSAobWFuZGF0b3J5KQorKyAgICAgICBhcmcyOiBzdHJ1Y3QgbGlua19tYXAg Km5ldyAob3B0aW9uYWwsIGZvciBpbmNyZW1lbnRhbCB1cGRhdGVzKSAgKi8KKysgIHByb2JlX2Fy Z2MgPSBnZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKHBhLT5wcm9iZSk7CisrICBpZiAocHJvYmVf YXJnYyA9PSAyKQorKyAgICBhY3Rpb24gPSBGVUxMX1JFTE9BRDsKKysgIGVsc2UgaWYgKHByb2Jl X2FyZ2MgPCAyKQorKyAgICBhY3Rpb24gPSBQUk9CRVNfSU5URVJGQUNFX0ZBSUxFRDsKKysKKysg IHJldHVybiBhY3Rpb247CisrfQorKworKy8qIFBvcHVsYXRlIHRoZSBzaGFyZWQgb2JqZWN0IGxp c3QgYnkgcmVhZGluZyB0aGUgZW50aXJlIGxpc3Qgb2YKKysgICBzaGFyZWQgb2JqZWN0cyBmcm9t IHRoZSBpbmZlcmlvci4gIEhhbmRsZSBzcGVjaWFsIGNhc2VzIHJlbGF0aW5nCisrICAgdG8gdGhl IGZpcnN0IGVsZW1lbnRzIG9mIHRoZSBsaXN0LiAgUmV0dXJucyBub256ZXJvIG9uIHN1Y2Nlc3Mu ICAqLworKworK3N0YXRpYyBpbnQKKytzb2xpc3RfdXBkYXRlX2Z1bGwgKHN0cnVjdCBzdnI0X2lu Zm8gKmluZm8pCisreworKyAgZnJlZV9zb2xpYl9saXN0IChpbmZvKTsKKysgIGluZm8tPnNvbGli X2xpc3QgPSBzdnI0X2N1cnJlbnRfc29zX2RpcmVjdCAoaW5mbyk7CisrCisrICByZXR1cm4gMTsK Kyt9CisrCisrLyogVXBkYXRlIHRoZSBzaGFyZWQgb2JqZWN0IGxpc3Qgc3RhcnRpbmcgZnJvbSB0 aGUgbGluay1tYXAgZW50cnkKKysgICBwYXNzZWQgYnkgdGhlIGxpbmtlciBpbiB0aGUgcHJvYmUn cyB0aGlyZCBhcmd1bWVudC4gIFJldHVybnMKKysgICBub256ZXJvIGlmIHRoZSBsaXN0IHdhcyBz dWNjZXNzZnVsbHkgdXBkYXRlZCwgb3IgemVybyB0byBpbmRpY2F0ZQorKyAgIGZhaWx1cmUuICAq LworKworK3N0YXRpYyBpbnQKKytzb2xpc3RfdXBkYXRlX2luY3JlbWVudGFsIChzdHJ1Y3Qgc3Zy NF9pbmZvICppbmZvLCBDT1JFX0FERFIgbG0pCisreworKyAgc3RydWN0IHNvX2xpc3QgKnRhaWw7 CisrICBDT1JFX0FERFIgcHJldl9sbTsKKysKKysgIC8qIHN2cjRfY3VycmVudF9zb3NfZGlyZWN0 IGNvbnRhaW5zIGxvZ2ljIHRvIGhhbmRsZSBhIG51bWJlciBvZgorKyAgICAgc3BlY2lhbCBjYXNl cyByZWxhdGluZyB0byB0aGUgZmlyc3QgZWxlbWVudHMgb2YgdGhlIGxpc3QuICBUbworKyAgICAg YXZvaWQgZHVwbGljYXRpbmcgdGhpcyBsb2dpYyB3ZSBkZWZlciB0byBzb2xpc3RfdXBkYXRlX2Z1 bGwKKysgICAgIGlmIHRoZSBsaXN0IGlzIGVtcHR5LiAgKi8KKysgIGlmIChpbmZvLT5zb2xpYl9s aXN0ID09IE5VTEwpCisrICAgIHJldHVybiAwOworKworKyAgLyogRmFsbCBiYWNrIHRvIGEgZnVs bCB1cGRhdGUgaWYgd2UgYXJlIHVzaW5nIGEgcmVtb3RlIHRhcmdldAorKyAgICAgdGhhdCBkb2Vz IG5vdCBzdXBwb3J0IGluY3JlbWVudGFsIHRyYW5zZmVycy4gICovCisrICBpZiAoaW5mby0+dXNp bmdfeGZlciAmJiAhdGFyZ2V0X2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkICgpKQorKyAg ICByZXR1cm4gMDsKKysKKysgIC8qIFdhbGsgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC4gICovCisr ICBmb3IgKHRhaWwgPSBpbmZvLT5zb2xpYl9saXN0OyB0YWlsLT5uZXh0ICE9IE5VTEw7IHRhaWwg PSB0YWlsLT5uZXh0KQorKyAgICAvKiBOb3RoaW5nLiAgKi87CisrICBwcmV2X2xtID0gdGFpbC0+ bG1faW5mby0+bG1fYWRkcjsKKysKKysgIC8qIFJlYWQgdGhlIG5ldyBvYmplY3RzLiAgKi8KKysg IGlmIChpbmZvLT51c2luZ194ZmVyKQorKyAgICB7CisrICAgICAgc3RydWN0IHN2cjRfbGlicmFy eV9saXN0IGxpYnJhcnlfbGlzdDsKKysgICAgICBjaGFyIGFubmV4WzY0XTsKKysKKysgICAgICB4 c25wcmludGYgKGFubmV4LCBzaXplb2YgKGFubmV4KSwgInN0YXJ0PSVzO3ByZXY9JXMiLAorKwkJ IHBoZXhfbnogKGxtLCBzaXplb2YgKGxtKSksCisrCQkgcGhleF9ueiAocHJldl9sbSwgc2l6ZW9m IChwcmV2X2xtKSkpOworKyAgICAgIGlmICghc3ZyNF9jdXJyZW50X3Nvc192aWFfeGZlcl9saWJy YXJpZXMgKCZsaWJyYXJ5X2xpc3QsIGFubmV4KSkKKysJcmV0dXJuIDA7CisrCisrICAgICAgdGFp bC0+bmV4dCA9IGxpYnJhcnlfbGlzdC5oZWFkOworKyAgICB9CisrICBlbHNlCisrICAgIHsKKysg ICAgICBzdHJ1Y3Qgc29fbGlzdCAqKmxpbmsgPSAmdGFpbC0+bmV4dDsKKysKKysgICAgICAvKiBJ R05PUkVfRklSU1QgbWF5IHNhZmVseSBiZSBzZXQgdG8gemVybyBoZXJlIGJlY2F1c2UgdGhlCisr CSBhYm92ZSBjaGVjayBhbmQgZGVmZXJyYWwgdG8gc29saXN0X3VwZGF0ZV9mdWxsIGVuc3VyZXMK KysJIHRoYXQgdGhpcyBjYWxsIHRvIHN2cjRfcmVhZF9zb19saXN0IHdpbGwgbmV2ZXIgc2VlIHRo ZQorKwkgZmlyc3QgZWxlbWVudC4gICovCisrICAgICAgaWYgKCFzdnI0X3JlYWRfc29fbGlzdCAo bG0sIHByZXZfbG0sICZsaW5rLCAwKSkKKysJcmV0dXJuIDA7CisrICAgIH0KKysKKysgIHJldHVy biAxOworK30KKysKKysvKiBEaXNhYmxlIHRoZSBwcm9iZXMtYmFzZWQgbGlua2VyIGludGVyZmFj ZSBhbmQgcmV2ZXJ0IHRvIHRoZQorKyAgIG9yaWdpbmFsIGludGVyZmFjZS4gIFdlIGRvbid0IHJl c2V0IHRoZSBicmVha3BvaW50cyBhcyB0aGUKKysgICBvbmVzIHNldCB1cCBmb3IgdGhlIHByb2Jl cy1iYXNlZCBpbnRlcmZhY2UgYXJlIGFkZXF1YXRlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2Rp c2FibGVfcHJvYmVzX2ludGVyZmFjZV9jbGVhbnVwICh2b2lkICphcmcpCisreworKyAgc3RydWN0 IHN2cjRfaW5mbyAqaW5mbyA9IGdldF9zdnI0X2luZm8gKCk7CisrCisrICB3YXJuaW5nIChfKCJQ cm9iZXMtYmFzZWQgZHluYW1pYyBsaW5rZXIgaW50ZXJmYWNlIGZhaWxlZC5cbiIKKysJICAgICAi UmV2ZXJ0aW5nIHRvIG9yaWdpbmFsIGludGVyZmFjZS5cbiIpKTsKKysKKysgIGZyZWVfcHJvYmVz X3RhYmxlIChpbmZvKTsKKysgIGZyZWVfc29saWJfbGlzdCAoaW5mbyk7CisrfQorKworKy8qIFVw ZGF0ZSB0aGUgc29saWIgbGlzdCBhcyBhcHByb3ByaWF0ZSB3aGVuIHVzaW5nIHRoZQorKyAgIHBy b2Jlcy1iYXNlZCBsaW5rZXIgaW50ZXJmYWNlLiAgRG8gbm90aGluZyBpZiB1c2luZyB0aGUKKysg ICBzdGFuZGFyZCBpbnRlcmZhY2UuICAqLworKworK3N0YXRpYyB2b2lkCisrc3ZyNF9oYW5kbGVf c29saWJfZXZlbnQgKHZvaWQpCisreworKyAgc3RydWN0IHN2cjRfaW5mbyAqaW5mbyA9IGdldF9z dnI0X2luZm8gKCk7CisrICBzdHJ1Y3QgcHJvYmVfYW5kX2FjdGlvbiAqcGE7CisrICBlbnVtIHBy b2JlX2FjdGlvbiBhY3Rpb247CisrICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluLCAqdXNtX2No YWluOworKyAgc3RydWN0IHZhbHVlICp2YWw7CisrICBDT1JFX0FERFIgcGMsIGRlYnVnX2Jhc2Us IGxtID0gMDsKKysgIGludCBpc19pbml0aWFsX25zOworKworKyAgLyogRG8gbm90aGluZyBpZiBu b3QgdXNpbmcgdGhlIHByb2JlcyBpbnRlcmZhY2UuICAqLworKyAgaWYgKGluZm8tPnByb2Jlc190 YWJsZSA9PSBOVUxMKQorKyAgICByZXR1cm47CisrCisrICAvKiBJZiBhbnl0aGluZyBnb2VzIHdy b25nIHdlIHJldmVydCB0byB0aGUgb3JpZ2luYWwgbGlua2VyCisrICAgICBpbnRlcmZhY2UuICAq LworKyAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChkaXNhYmxlX3Byb2Jlc19pbnRlcmZhY2Vf Y2xlYW51cCwgTlVMTCk7CisrCisrICBwYyA9IHJlZ2NhY2hlX3JlYWRfcGMgKGdldF9jdXJyZW50 X3JlZ2NhY2hlICgpKTsKKysgIHBhID0gc29saWJfZXZlbnRfcHJvYmVfYXQgKGluZm8sIHBjKTsK KysgIGlmIChwYSA9PSBOVUxMKQorKyAgICB7CisrICAgICAgZG9fY2xlYW51cHMgKG9sZF9jaGFp bik7CisrICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICBhY3Rpb24gPSBzb2xpYl9ldmVudF9w cm9iZV9hY3Rpb24gKHBhKTsKKysgIGlmIChhY3Rpb24gPT0gUFJPQkVTX0lOVEVSRkFDRV9GQUlM RUQpCisrICAgIHsKKysgICAgICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKKysgICAgICByZXR1 cm47CisrICAgIH0KKysKKysgIGlmIChhY3Rpb24gPT0gRE9fTk9USElORykKKysgICAgeworKyAg ICAgIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jaGFpbik7CisrICAgICAgcmV0dXJuOworKyAgICB9 CisrCisrICAvKiBldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCBsb29rcyB1cCBzeW1ib2xzIGluIHRo ZSBkeW5hbWljIGxpbmtlcgorKyAgICAgdXNpbmcgZmluZF9wY19zZWN0aW9uLiAgZmluZF9wY19z ZWN0aW9uIGlzIGFjY2VsZXJhdGVkIGJ5IGEgY2FjaGUKKysgICAgIGNhbGxlZCB0aGUgc2VjdGlv biBtYXAuICBUaGUgc2VjdGlvbiBtYXAgaXMgaW52YWxpZGF0ZWQgZXZlcnkKKysgICAgIHRpbWUg YSBzaGFyZWQgbGlicmFyeSBpcyBsb2FkZWQgb3IgdW5sb2FkZWQsIGFuZCBpZiB0aGUgaW5mZXJp b3IKKysgICAgIGlzIGdlbmVyYXRpbmcgYSBsb3Qgb2Ygc2hhcmVkIGxpYnJhcnkgZXZlbnRzIHRo ZW4gdGhlIHNlY3Rpb24gbWFwCisrICAgICB3aWxsIGJlIHVwZGF0ZWQgZXZlcnkgdGltZSBzdnI0 X2hhbmRsZV9zb2xpYl9ldmVudCBpcyBjYWxsZWQuCisrICAgICBXZSBjYWxsZWQgZmluZF9wY19z ZWN0aW9uIGluIHN2cjRfY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzLAorKyAgICAgc28g d2UgY2FuIGd1YXJhbnRlZSB0aGF0IHRoZSBkeW5hbWljIGxpbmtlcidzIHNlY3Rpb25zIGFyZSBp biB0aGUKKysgICAgIHNlY3Rpb24gbWFwLiAgV2UgY2FuIHRoZXJlZm9yZSBpbmhpYml0IHNlY3Rp b24gbWFwIHVwZGF0ZXMgYWNyb3NzCisrICAgICB0aGVzZSBjYWxscyB0byBldmFsdWF0ZV9wcm9i ZV9hcmd1bWVudCBhbmQgc2F2ZSBhIGxvdCBvZiB0aW1lLiAgKi8KKysgIGluaGliaXRfc2VjdGlv bl9tYXBfdXBkYXRlcyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKKysgIHVzbV9jaGFpbiA9IG1h a2VfY2xlYW51cCAocmVzdW1lX3NlY3Rpb25fbWFwX3VwZGF0ZXNfY2xlYW51cCwKKysJCQkgICAg Y3VycmVudF9wcm9ncmFtX3NwYWNlKTsKKysKKysgIHZhbCA9IGV2YWx1YXRlX3Byb2JlX2FyZ3Vt ZW50IChwYS0+cHJvYmUsIDEpOworKyAgaWYgKHZhbCA9PSBOVUxMKQorKyAgICB7CisrICAgICAg ZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CisrICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICBk ZWJ1Z19iYXNlID0gdmFsdWVfYXNfYWRkcmVzcyAodmFsKTsKKysgIGlmIChkZWJ1Z19iYXNlID09 IDApCisrICAgIHsKKysgICAgICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKKysgICAgICByZXR1 cm47CisrICAgIH0KKysKKysgIC8qIEFsd2F5cyBsb2NhdGUgdGhlIGRlYnVnIHN0cnVjdCwgaW4g Y2FzZSBpdCBtb3ZlZC4gICovCisrICBpbmZvLT5kZWJ1Z19iYXNlID0gMDsKKysgIGlmIChsb2Nh dGVfYmFzZSAoaW5mbykgPT0gMCkKKysgICAgeworKyAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hh aW4pOworKyAgICAgIHJldHVybjsKKysgICAgfQorKworKyAgLyogR0RCIGRvZXMgbm90IGN1cnJl bnRseSBzdXBwb3J0IGxpYnJhcmllcyBsb2FkZWQgdmlhIGRsbW9wZW4KKysgICAgIGludG8gbmFt ZXNwYWNlcyBvdGhlciB0aGFuIHRoZSBpbml0aWFsIG9uZS4gIFdlIG11c3QgaWdub3JlCisrICAg ICBhbnkgbmFtZXNwYWNlIG90aGVyIHRoYW4gdGhlIGluaXRpYWwgbmFtZXNwYWNlIGhlcmUgdW50 aWwKKysgICAgIHN1cHBvcnQgZm9yIHRoaXMgaXMgYWRkZWQgdG8gR0RCLiAgKi8KKysgIGlmIChk ZWJ1Z19iYXNlICE9IGluZm8tPmRlYnVnX2Jhc2UpCisrICAgIGFjdGlvbiA9IERPX05PVEhJTkc7 CisrCisrICBpZiAoYWN0aW9uID09IFVQREFURV9PUl9SRUxPQUQpCisrICAgIHsKKysgICAgICB2 YWwgPSBldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAocGEtPnByb2JlLCAyKTsKKysgICAgICBpZiAo dmFsICE9IE5VTEwpCisrCWxtID0gdmFsdWVfYXNfYWRkcmVzcyAodmFsKTsKKysKKysgICAgICBp ZiAobG0gPT0gMCkKKysJYWN0aW9uID0gRlVMTF9SRUxPQUQ7CisrICAgIH0KKysKKysgIC8qIFJl c3VtZSBzZWN0aW9uIG1hcCB1cGRhdGVzLiAgKi8KKysgIGRvX2NsZWFudXBzICh1c21fY2hhaW4p OworKworKyAgaWYgKGFjdGlvbiA9PSBVUERBVEVfT1JfUkVMT0FEKQorKyAgICB7CisrICAgICAg aWYgKCFzb2xpc3RfdXBkYXRlX2luY3JlbWVudGFsIChpbmZvLCBsbSkpCisrCWFjdGlvbiA9IEZV TExfUkVMT0FEOworKyAgICB9CisrCisrICBpZiAoYWN0aW9uID09IEZVTExfUkVMT0FEKQorKyAg ICB7CisrICAgICAgaWYgKCFzb2xpc3RfdXBkYXRlX2Z1bGwgKGluZm8pKQorKwl7CisrCSAgZG9f Y2xlYW51cHMgKG9sZF9jaGFpbik7CisrCSAgcmV0dXJuOworKwl9CisrICAgIH0KKysKKysgIGRp c2NhcmRfY2xlYW51cHMgKG9sZF9jaGFpbik7CisrfQorKworKy8qIEhlbHBlciBmdW5jdGlvbiBm b3Igc3ZyNF91cGRhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMuICAqLworKworK3N0YXRpYyBp bnQKKytzdnI0X3VwZGF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2lu dCAqYiwgdm9pZCAqYXJnKQorK3sKKysgIHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jOworKworKyAg aWYgKGItPnR5cGUgIT0gYnBfc2hsaWJfZXZlbnQpCisrICAgIHsKKysgICAgICAvKiBDb250aW51 ZSBpdGVyYXRpbmcuICAqLworKyAgICAgIHJldHVybiAwOworKyAgICB9CisrCisrICBmb3IgKGxv YyA9IGItPmxvYzsgbG9jICE9IE5VTEw7IGxvYyA9IGxvYy0+bmV4dCkKKysgICAgeworKyAgICAg IHN0cnVjdCBzdnI0X2luZm8gKmluZm87CisrICAgICAgc3RydWN0IHByb2JlX2FuZF9hY3Rpb24g KnBhOworKworKyAgICAgIGluZm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKGxvYy0+cHNwYWNlLCBz b2xpYl9zdnI0X3BzcGFjZV9kYXRhKTsKKysgICAgICBpZiAoaW5mbyA9PSBOVUxMIHx8IGluZm8t PnByb2Jlc190YWJsZSA9PSBOVUxMKQorKwljb250aW51ZTsKKysKKysgICAgICBwYSA9IHNvbGli X2V2ZW50X3Byb2JlX2F0IChpbmZvLCBsb2MtPmFkZHJlc3MpOworKyAgICAgIGlmIChwYSA9PSBO VUxMKQorKwljb250aW51ZTsKKysKKysgICAgICBpZiAocGEtPmFjdGlvbiA9PSBET19OT1RISU5H KQorKwl7CisrCSAgaWYgKGItPmVuYWJsZV9zdGF0ZSA9PSBicF9kaXNhYmxlZCAmJiBzdG9wX29u X3NvbGliX2V2ZW50cykKKysJICAgIGVuYWJsZV9icmVha3BvaW50IChiKTsKKysJICBlbHNlIGlm IChiLT5lbmFibGVfc3RhdGUgPT0gYnBfZW5hYmxlZCAmJiAhc3RvcF9vbl9zb2xpYl9ldmVudHMp CisrCSAgICBkaXNhYmxlX2JyZWFrcG9pbnQgKGIpOworKwl9CisrCisrICAgICAgYnJlYWs7Cisr ICAgIH0KKysKKysgIC8qIENvbnRpbnVlIGl0ZXJhdGluZy4gICovCisrICByZXR1cm4gMDsKKyt9 CisrCisrLyogRW5hYmxlIG9yIGRpc2FibGUgb3B0aW9uYWwgc29saWIgZXZlbnQgYnJlYWtwb2lu dHMgYXMgYXBwcm9wcmlhdGUuCisrICAgQ2FsbGVkIHdoZW5ldmVyIHN0b3Bfb25fc29saWJfZXZl bnRzIGlzIGNoYW5nZWQuICAqLworKworK3N0YXRpYyB2b2lkCisrc3ZyNF91cGRhdGVfc29saWJf ZXZlbnRfYnJlYWtwb2ludHMgKHZvaWQpCisreworKyAgaXRlcmF0ZV9vdmVyX2JyZWFrcG9pbnRz IChzdnI0X3VwZGF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50LCBOVUxMKTsKKyt9CisrCisrLyog Q3JlYXRlIGFuZCByZWdpc3RlciBzb2xpYiBldmVudCBicmVha3BvaW50cy4gIFBST0JFUyBpcyBh biBhcnJheQorKyAgIG9mIE5VTV9QUk9CRVMgZWxlbWVudHMsIGVhY2ggb2Ygd2hpY2ggaXMgdmVj dG9yIG9mIHByb2Jlcy4gIEEKKysgICBzb2xpYiBldmVudCBicmVha3BvaW50IHdpbGwgYmUgY3Jl YXRlZCBhbmQgcmVnaXN0ZXJlZCBmb3IgZWFjaAorKyAgIHByb2JlLiAgKi8KKysKKytzdGF0aWMg dm9pZAorK3N2cjRfY3JlYXRlX3Byb2JlX2JyZWFrcG9pbnRzIChzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaCwKKysJCQkgICAgICAgVkVDIChwcm9iZV9wKSAqKnByb2JlcykKKyt7CisrICBpbnQgaTsK KysKKysgIGZvciAoaSA9IDA7IGkgPCBOVU1fUFJPQkVTOyBpKyspCisrICAgIHsKKysgICAgICBl bnVtIHByb2JlX2FjdGlvbiBhY3Rpb24gPSBwcm9iZV9pbmZvW2ldLmFjdGlvbjsKKysgICAgICBz dHJ1Y3QgcHJvYmUgKnByb2JlOworKyAgICAgIGludCBpeDsKKysKKysgICAgICBmb3IgKGl4ID0g MDsKKysJICAgVkVDX2l0ZXJhdGUgKHByb2JlX3AsIHByb2Jlc1tpXSwgaXgsIHByb2JlKTsKKysJ ICAgKytpeCkKKysJeworKwkgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50IChnZGJhcmNo LCBwcm9iZS0+YWRkcmVzcyk7CisrCSAgcmVnaXN0ZXJfc29saWJfZXZlbnRfcHJvYmUgKHByb2Jl LCBhY3Rpb24pOworKwl9CisrICAgIH0KKysKKysgIHN2cjRfdXBkYXRlX3NvbGliX2V2ZW50X2Jy ZWFrcG9pbnRzICgpOworK30KKysKKysvKiBCb3RoIHRoZSBTdW5PUyBhbmQgdGhlIFNWUjQgZHlu YW1pYyBsaW5rZXJzIGNhbGwgYSBtYXJrZXIgZnVuY3Rpb24KKysgICBiZWZvcmUgYW5kIGFmdGVy IG1hcHBpbmcgYW5kIHVubWFwcGluZyBzaGFyZWQgbGlicmFyaWVzLiAgVGhlIHNvbGUKKysgICBw dXJwb3NlIG9mIHRoaXMgbWV0aG9kIGlzIHRvIGFsbG93IGRlYnVnZ2VycyB0byBzZXQgYSBicmVh a3BvaW50IHNvCisrICAgdGhleSBjYW4gdHJhY2sgdGhlc2UgY2hhbmdlcy4KKysKKysgICBTb21l IHZlcnNpb25zIG9mIHRoZSBnbGliYyBkeW5hbWljIGxpbmtlciBjb250YWluIG5hbWVkIHByb2Jl cworKyAgIHRvIGFsbG93IG1vcmUgZmluZSBncmFpbmVkIHN0b3BwaW5nLiAgR2l2ZW4gdGhlIGFk ZHJlc3Mgb2YgdGhlCisrICAgb3JpZ2luYWwgbWFya2VyIGZ1bmN0aW9uLCB0aGlzIGZ1bmN0aW9u IGF0dGVtcHRzIHRvIGZpbmQgdGhlc2UKKysgICBwcm9iZXMsIGFuZCBpZiBmb3VuZCwgc2V0cyBi cmVha3BvaW50cyBvbiB0aG9zZSBpbnN0ZWFkLiAgSWYgdGhlCisrICAgcHJvYmVzIGFyZW4ndCBm b3VuZCwgYSBzaW5nbGUgYnJlYWtwb2ludCBpcyBzZXQgb24gdGhlIG9yaWdpbmFsCisrICAgbWFy a2VyIGZ1bmN0aW9uLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3N2cjRfY3JlYXRlX3NvbGliX2V2 ZW50X2JyZWFrcG9pbnRzIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysJCQkJICAgICBDT1JF X0FERFIgYWRkcmVzcykKKyt7CisrICBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKm9zOworKworKyAgb3Mg PSBmaW5kX3BjX3NlY3Rpb24gKGFkZHJlc3MpOworKyAgaWYgKG9zICE9IE5VTEwpCisrICAgIHsK KysgICAgICBpbnQgd2l0aF9wcmVmaXg7CisrCisrICAgICAgZm9yICh3aXRoX3ByZWZpeCA9IDA7 IHdpdGhfcHJlZml4IDw9IDE7IHdpdGhfcHJlZml4KyspCisrCXsKKysJICBWRUMgKHByb2JlX3Ap ICpwcm9iZXNbTlVNX1BST0JFU107CisrCSAgaW50IGFsbF9wcm9iZXNfZm91bmQgPSAxOworKwkg IGludCBpOworKworKwkgIG1lbXNldCAocHJvYmVzLCAwLCBzaXplb2YgKHByb2JlcykpOworKwkg IGZvciAoaSA9IDA7IGkgPCBOVU1fUFJPQkVTOyBpKyspCisrCSAgICB7CisrCSAgICAgIGNvbnN0 IGNoYXIgKm5hbWUgPSBwcm9iZV9pbmZvW2ldLm5hbWU7CisrCSAgICAgIGNoYXIgYnVmWzMyXTsK KysKKysJICAgICAgLyogRmVkb3JhIDE3IGFuZCBSZWQgSGF0IEVudGVycHJpc2UgTGludXggNi4y LTYuNAorKwkJIHNoaXBwZWQgd2l0aCBhbiBlYXJseSB2ZXJzaW9uIG9mIHRoZSBwcm9iZXMgY29k ZSBpbgorKwkJIHdoaWNoIHRoZSBwcm9iZXMnIG5hbWVzIHdlcmUgcHJlZml4ZWQgd2l0aCAicnRs ZF8iCisrCQkgYW5kIHRoZSAibWFwX2ZhaWxlZCIgcHJvYmUgZGlkIG5vdCBleGlzdC4gIFRoZQor KwkJIGxvY2F0aW9ucyBvZiB0aGUgcHJvYmVzIGFyZSBvdGhlcndpc2UgdGhlIHNhbWUsIHNvCisr CQkgd2UgY2hlY2sgZm9yIHByb2JlcyB3aXRoIHByZWZpeGVkIG5hbWVzIGlmIHByb2JlcworKwkJ IHdpdGggdW5wcmVmaXhlZCBuYW1lcyBhcmUgbm90IHByZXNlbnQuICAqLworKwkgICAgICBpZiAo d2l0aF9wcmVmaXgpCisrCQl7CisrCQkgIHhzbnByaW50ZiAoYnVmLCBzaXplb2YgKGJ1ZiksICJy dGxkXyVzIiwgbmFtZSk7CisrCQkgIG5hbWUgPSBidWY7CisrCQl9CisrCisrCSAgICAgIHByb2Jl c1tpXSA9IGZpbmRfcHJvYmVzX2luX29iamZpbGUgKG9zLT5vYmpmaWxlLCAicnRsZCIsIG5hbWUp OworKworKwkgICAgICAvKiBUaGUgIm1hcF9mYWlsZWQiIHByb2JlIGRpZCBub3QgZXhpc3QgaW4g ZWFybHkKKysJCSB2ZXJzaW9ucyBvZiB0aGUgcHJvYmVzIGNvZGUgaW4gd2hpY2ggdGhlIHByb2Jl cycKKysJCSBuYW1lcyB3ZXJlIHByZWZpeGVkIHdpdGggInJ0bGRfIi4gICovCisrCSAgICAgIGlm IChzdHJjbXAgKG5hbWUsICJydGxkX21hcF9mYWlsZWQiKSA9PSAwKQorKwkJY29udGludWU7Cisr CisrCSAgICAgIGlmIChWRUNfZW1wdHkgKHByb2JlX3AsIHByb2Jlc1tpXSkpCisrCQl7CisrCQkg IGFsbF9wcm9iZXNfZm91bmQgPSAwOworKwkJICBicmVhazsKKysJCX0KKysJICAgIH0KKysKKysJ ICBpZiAoYWxsX3Byb2Jlc19mb3VuZCkKKysJICAgIHN2cjRfY3JlYXRlX3Byb2JlX2JyZWFrcG9p bnRzIChnZGJhcmNoLCBwcm9iZXMpOworKworKwkgIGZvciAoaSA9IDA7IGkgPCBOVU1fUFJPQkVT OyBpKyspCisrCSAgICBWRUNfZnJlZSAocHJvYmVfcCwgcHJvYmVzW2ldKTsKKysKKysJICBpZiAo YWxsX3Byb2Jlc19mb3VuZCkKKysJICAgIHJldHVybjsKKysJfQorKyAgICB9CisrCisrICBjcmVh dGVfc29saWJfZXZlbnRfYnJlYWtwb2ludCAoZ2RiYXJjaCwgYWRkcmVzcyk7CisrfQorKworIC8q IEhlbHBlciBmdW5jdGlvbiBmb3IgZ2RiX2JmZF9sb29rdXBfc3ltYm9sLiAgKi8KKyAKKyBzdGF0 aWMgaW50CitAQCAtMTUzMiw3ICsyMTUxLDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9p bmZvICppbmZvLCBpbgorIAkgVGhhdCBrbm93bGVkZ2UgaXMgZW5jb2RlZCBpbiB0aGUgYWRkcmVz cywgaWYgaXQncyBUaHVtYiB0aGUgbG93IGJpdAorIAkgaXMgMS4gIEhvd2V2ZXIsIHdlJ3ZlIHN0 cmlwcGVkIHRoYXQgaW5mbyBhYm92ZSBhbmQgaXQncyBub3QgY2xlYXIKKyAJIHdoYXQgYWxsIHRo ZSBjb25zZXF1ZW5jZXMgYXJlIG9mIHBhc3NpbmcgYSBub24tYWRkcl9iaXRzX3JlbW92ZSdkCist CSBhZGRyZXNzIHRvIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50LiAgVGhlIGNhbGwgdG8K KysJIGFkZHJlc3MgdG8gc3ZyNF9jcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMuICBUaGUg Y2FsbCB0bworIAkgZmluZF9wY19zZWN0aW9uIHZlcmlmaWVzIHdlIGtub3cgYWJvdXQgdGhlIGFk ZHJlc3MgYW5kIGhhdmUgc29tZQorIAkgaG9wZSBvZiBjb21wdXRpbmcgdGhlIHJpZ2h0IGtpbmQg b2YgYnJlYWtwb2ludCB0byB1c2UgKHZpYQorIAkgc3ltYm9sIGluZm8pLiAgSXQgZG9lcyBtZWFu IHRoYXQgR0RCIG5lZWRzIHRvIGJlIHBvaW50ZWQgYXQgYQorQEAgLTE1NzAsNyArMjE4OSw3IEBA IGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW4KKyAJCSsgYmZkX3NlY3Rp b25fc2l6ZSAodG1wX2JmZCwgaW50ZXJwX3NlY3QpOworIAkgICAgfQorIAorLQkgIGNyZWF0ZV9z b2xpYl9ldmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2RiYXJjaCAoKSwgc3ltX2FkZHIpOworKwkg IHN2cjRfY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzICh0YXJnZXRfZ2RiYXJjaCAoKSwg c3ltX2FkZHIpOworIAkgIHJldHVybiAxOworIAl9CisgICAgIH0KK0BAIC0xNzI4LDcgKzIzNDcs OCBAQCBlbmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8sIGluCisgCisgICAgICAg aWYgKHN5bV9hZGRyICE9IDApCisgCXsKKy0JICBjcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2lu dCAodGFyZ2V0X2dkYmFyY2ggKCksIGxvYWRfYWRkciArIHN5bV9hZGRyKTsKKysJICBzdnI0X2Ny ZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50cyAodGFyZ2V0X2dkYmFyY2ggKCksCisrCQkJCQkg ICAgICAgbG9hZF9hZGRyICsgc3ltX2FkZHIpOworIAkgIHhmcmVlIChpbnRlcnBfbmFtZSk7Cisg CSAgcmV0dXJuIDE7CisgCX0KK0BAIC0xNzU0LDcgKzIzNzQsNyBAQCBlbmFibGVfYnJlYWsgKHN0 cnVjdCBzdnI0X2luZm8gKmluZm8sIGluCisgCSAgc3ltX2FkZHIgPSBnZGJhcmNoX2NvbnZlcnRf ZnJvbV9mdW5jX3B0cl9hZGRyICh0YXJnZXRfZ2RiYXJjaCAoKSwKKyAJCQkJCQkJIHN5bV9hZGRy LAorIAkJCQkJCQkgJmN1cnJlbnRfdGFyZ2V0KTsKKy0JICBjcmVhdGVfc29saWJfZXZlbnRfYnJl YWtwb2ludCAodGFyZ2V0X2dkYmFyY2ggKCksIHN5bV9hZGRyKTsKKysJICBzdnI0X2NyZWF0ZV9z b2xpYl9ldmVudF9icmVha3BvaW50cyAodGFyZ2V0X2dkYmFyY2ggKCksIHN5bV9hZGRyKTsKKyAJ ICByZXR1cm4gMTsKKyAJfQorICAgICB9CitAQCAtMTc3MCw3ICsyMzkwLDcgQEAgZW5hYmxlX2Jy ZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBpbgorIAkgICAgICBzeW1fYWRkciA9IGdkYmFy Y2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHRhcmdldF9nZGJhcmNoICgpLAorIAkJCQkJ CQkgICAgIHN5bV9hZGRyLAorIAkJCQkJCQkgICAgICZjdXJyZW50X3RhcmdldCk7CistCSAgICAg IGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2RiYXJjaCAoKSwgc3ltX2Fk ZHIpOworKwkgICAgICBzdnI0X2NyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50cyAodGFyZ2V0 X2dkYmFyY2ggKCksIHN5bV9hZGRyKTsKKyAJICAgICAgcmV0dXJuIDE7CisgCSAgICB9CisgCX0K K0BAIC0yMjY2LDYgKzI4ODYsMTAgQEAgc3ZyNF9zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAo aW50IGZybworIAorICAgaW5mbyA9IGdldF9zdnI0X2luZm8gKCk7CisgCisrICAvKiBDbGVhciB0 aGUgcHJvYmVzLWJhc2VkIGludGVyZmFjZSdzIHN0YXRlLiAgKi8KKysgIGZyZWVfcHJvYmVzX3Rh YmxlIChpbmZvKTsKKysgIGZyZWVfc29saWJfbGlzdCAoaW5mbyk7CisrCisgICAvKiBSZWxvY2F0 ZSB0aGUgbWFpbiBleGVjdXRhYmxlIGlmIG5lY2Vzc2FyeS4gICovCisgICBzdnI0X3JlbG9jYXRl X21haW5fZXhlY3V0YWJsZSAoKTsKKyAKK0BAIC0yNTA3LDQgKzMxMzEsNiBAQCBfaW5pdGlhbGl6 ZV9zdnI0X3NvbGliICh2b2lkKQorICAgc3ZyNF9zb19vcHMubG9va3VwX2xpYl9nbG9iYWxfc3lt Ym9sID0gZWxmX2xvb2t1cF9saWJfc3ltYm9sOworICAgc3ZyNF9zb19vcHMuc2FtZSA9IHN2cjRf c2FtZTsKKyAgIHN2cjRfc29fb3BzLmtlZXBfZGF0YV9pbl9jb3JlID0gc3ZyNF9rZWVwX2RhdGFf aW5fY29yZTsKKysgIHN2cjRfc29fb3BzLnVwZGF0ZV9icmVha3BvaW50cyA9IHN2cjRfdXBkYXRl X3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzOworKyAgc3ZyNF9zb19vcHMuaGFuZGxlX2V2ZW50ID0g c3ZyNF9oYW5kbGVfc29saWJfZXZlbnQ7CisgfQorSW5kZXg6IGdkYi03LjYvZ2RiL3NvbGliLmMK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy42Lm9yaWcvZ2RiL3NvbGliLmMJMjAxMy0wNi0xMCAxNDo0 NDozNy4zOTI4MTI2NzUgKzAyMDAKKysrKyBnZGItNy42L2dkYi9zb2xpYi5jCTIwMTMtMDYtMTAg MTQ6NDQ6MzcuNzEzODEyNTc4ICswMjAwCitAQCAtMTIyMSw2ICsxMjIxLDM3IEBAIG5vX3NoYXJl ZF9saWJyYXJpZXMgKGNoYXIgKmlnbm9yZWQsIGludAorICAgb2JqZmlsZV9wdXJnZV9zb2xpYnMg KCk7CisgfQorIAorKy8qIFNlZSBzb2xpYi5oLiAgKi8KKysKKyt2b2lkCisrdXBkYXRlX3NvbGli X2JyZWFrcG9pbnRzICh2b2lkKQorK3sKKysgIGNvbnN0IHN0cnVjdCB0YXJnZXRfc29fb3BzICpv cHMgPSBzb2xpYl9vcHMgKHRhcmdldF9nZGJhcmNoICgpKTsKKysKKysgIGlmIChvcHMtPnVwZGF0 ZV9icmVha3BvaW50cyAhPSBOVUxMKQorKyAgICBvcHMtPnVwZGF0ZV9icmVha3BvaW50cyAoKTsK Kyt9CisrCisrLyogU2VlIHNvbGliLmguICAqLworKworK3ZvaWQKKytoYW5kbGVfc29saWJfZXZl bnQgKHZvaWQpCisreworKyAgY29uc3Qgc3RydWN0IHRhcmdldF9zb19vcHMgKm9wcyA9IHNvbGli X29wcyAodGFyZ2V0X2dkYmFyY2ggKCkpOworKworKyAgaWYgKG9wcy0+aGFuZGxlX2V2ZW50ICE9 IE5VTEwpCisrICAgIG9wcy0+aGFuZGxlX2V2ZW50ICgpOworKworKyAgY2xlYXJfcHJvZ3JhbV9z cGFjZV9zb2xpYl9jYWNoZSAoY3VycmVudF9pbmZlcmlvciAoKS0+cHNwYWNlKTsKKysKKysgIC8q IENoZWNrIGZvciBhbnkgbmV3bHkgYWRkZWQgc2hhcmVkIGxpYnJhcmllcyBpZiB3ZSdyZSBzdXBw b3NlZCB0bworKyAgICAgYmUgYWRkaW5nIHRoZW0gYXV0b21hdGljYWxseS4gIFN3aXRjaCB0ZXJt aW5hbCBmb3IgYW55IG1lc3NhZ2VzCisrICAgICBwcm9kdWNlZCBieSBicmVha3BvaW50X3JlX3Nl dC4gICovCisrICB0YXJnZXRfdGVybWluYWxfb3Vyc19mb3Jfb3V0cHV0ICgpOworKyAgc29saWJf YWRkIChOVUxMLCAwLCAmY3VycmVudF90YXJnZXQsIGF1dG9fc29saWJfYWRkKTsKKysgIHRhcmdl dF90ZXJtaW5hbF9pbmZlcmlvciAoKTsKKyt9CisrCisgLyogUmVsb2FkIHNoYXJlZCBsaWJyYXJp ZXMsIGJ1dCBhdm9pZCByZWxvYWRpbmcgdGhlIHNhbWUgc3ltYm9sIGZpbGUKKyAgICB3ZSBhbHJl YWR5IGhhdmUgbG9hZGVkLiAgKi8KKyAKK0luZGV4OiBnZGItNy42L2dkYi9zb2xpYi5oCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gZ2RiLTcuNi5vcmlnL2dkYi9zb2xpYi5oCTIwMTMtMDEtMDEgMDc6MzI6NTEu MDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNi9nZGIvc29saWIuaAkyMDEzLTA2LTEwIDE0OjQ0 OjM3LjcxMzgxMjU3OCArMDIwMAorQEAgLTkwLDQgKzkwLDEyIEBAIGV4dGVybiBDT1JFX0FERFIg Z2RiX2JmZF9sb29rdXBfc3ltYm9sX2YKKyAJCQkJCQkJCSAgICAgIHZvaWQgKiksCisgCQkJCQkJ ICAgIHZvaWQgKmRhdGEpOworIAorKy8qIEVuYWJsZSBvciBkaXNhYmxlIG9wdGlvbmFsIHNvbGli IGV2ZW50IGJyZWFrcG9pbnRzIGFzIGFwcHJvcHJpYXRlLiAgKi8KKysKKytleHRlcm4gdm9pZCB1 cGRhdGVfc29saWJfYnJlYWtwb2ludHMgKHZvaWQpOworKworKy8qIEhhbmRsZSBhbiBzb2xpYiBl dmVudCBieSBjYWxsaW5nIHNvbGliX2FkZC4gICovCisrCisrZXh0ZXJuIHZvaWQgaGFuZGxlX3Nv bGliX2V2ZW50ICh2b2lkKTsKKysKKyAjZW5kaWYgLyogU09MSUJfSCAqLworSW5kZXg6IGdkYi03 LjYvZ2RiL3NvbGlzdC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNi5vcmlnL2dkYi9zb2xpc3Qu aAkyMDEzLTAxLTAxIDA3OjMyOjUxLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjYvZ2RiL3Nv bGlzdC5oCTIwMTMtMDYtMTAgMTQ6NDQ6MzcuNzEzODEyNTc4ICswMjAwCitAQCAtMTQ4LDYgKzE0 OCwxOSBAQCBzdHJ1Y3QgdGFyZ2V0X3NvX29wcworICAgICAgICBjb3JlIGZpbGUgKGluIHBhcnRp Y3VsYXIsIGZvciByZWFkb25seSBzZWN0aW9ucykuICAqLworICAgICBpbnQgKCprZWVwX2RhdGFf aW5fY29yZSkgKENPUkVfQUREUiB2YWRkciwKKyAJCQkgICAgICB1bnNpZ25lZCBsb25nIHNpemUp OworKworKyAgICAvKiBFbmFibGUgb3IgZGlzYWJsZSBvcHRpb25hbCBzb2xpYiBldmVudCBicmVh a3BvaW50cyBhcworKyAgICAgICBhcHByb3ByaWF0ZS4gIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCB3 aGVuZXZlcgorKyAgICAgICBzdG9wX29uX3NvbGliX2V2ZW50cyBpcyBjaGFuZ2VkLiAgVGhpcyBw b2ludGVyIGNhbiBiZQorKyAgICAgICBOVUxMLCBpbiB3aGljaCBjYXNlIG5vIGVuYWJsaW5nIG9y IGRpc2FibGluZyBpcyBuZWNlc3NhcnkKKysgICAgICAgZm9yIHRoaXMgdGFyZ2V0LiAgKi8KKysg ICAgdm9pZCAoKnVwZGF0ZV9icmVha3BvaW50cykgKHZvaWQpOworKworKyAgICAvKiBUYXJnZXQt c3BlY2lmaWMgcHJvY2Vzc2luZyBvZiBzb2xpYiBldmVudHMgdGhhdCB3aWxsIGJlCisrICAgICAg IHBlcmZvcm1lZCBiZWZvcmUgc29saWJfYWRkIGlzIGNhbGxlZC4gIFRoaXMgcG9pbnRlciBjYW4g YmUKKysgICAgICAgTlVMTCwgaW4gd2hpY2ggY2FzZSBubyBzcGVjaWZpYyBwcmVwcm9jZXNzaW5n IGlzIG5lY2Vzc2FyeQorKyAgICAgICBmb3IgdGhpcyB0YXJnZXQuICAqLworKyAgICB2b2lkICgq aGFuZGxlX2V2ZW50KSAodm9pZCk7CisgICB9OworIAorIC8qIEZyZWUgdGhlIG1lbW9yeSBhc3Nv Y2lhdGVkIHdpdGggYSAoc29fbGlzdCAqKS4gICovCitJbmRleDogZ2RiLTcuNi9nZGIvYnJlYWtw b2ludC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNi5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAx My0wNi0xMCAxNDo0NDozNy41MDA4MTI2NDIgKzAyMDAKKysrKyBnZGItNy42L2dkYi9icmVha3Bv aW50LmMJMjAxMy0wNi0xMCAxNDo0NDo1Ny4zMDE4MDY3MDggKzAyMDAKK0BAIC01MzQ4LDI1ICs1 MzQ4LDYgQEAgaGFuZGxlX2ppdF9ldmVudCAodm9pZCkKKyAgIHRhcmdldF90ZXJtaW5hbF9pbmZl cmlvciAoKTsKKyB9CisgCistLyogSGFuZGxlIGFuIHNvbGliIGV2ZW50IGJ5IGNhbGxpbmcgc29s aWJfYWRkLiAgKi8KKy0KKy12b2lkCistaGFuZGxlX3NvbGliX2V2ZW50ICh2b2lkKQorLXsKKy0g IGNsZWFyX3Byb2dyYW1fc3BhY2Vfc29saWJfY2FjaGUgKGN1cnJlbnRfaW5mZXJpb3IgKCktPnBz cGFjZSk7CistCistICAvKiBDaGVjayBmb3IgYW55IG5ld2x5IGFkZGVkIHNoYXJlZCBsaWJyYXJp ZXMgaWYgd2UncmUgc3VwcG9zZWQgdG8KKy0gICAgIGJlIGFkZGluZyB0aGVtIGF1dG9tYXRpY2Fs bHkuICBTd2l0Y2ggdGVybWluYWwgZm9yIGFueSBtZXNzYWdlcworLSAgICAgcHJvZHVjZWQgYnkg YnJlYWtwb2ludF9yZV9zZXQuICAqLworLSAgdGFyZ2V0X3Rlcm1pbmFsX291cnNfZm9yX291dHB1 dCAoKTsKKy0jaWZkZWYgU09MSUJfQURECistICBTT0xJQl9BREQgKE5VTEwsIDAsICZjdXJyZW50 X3RhcmdldCwgYXV0b19zb2xpYl9hZGQpOworLSNlbHNlCistICBzb2xpYl9hZGQgKE5VTEwsIDAs ICZjdXJyZW50X3RhcmdldCwgYXV0b19zb2xpYl9hZGQpOworLSNlbmRpZgorLSAgdGFyZ2V0X3Rl cm1pbmFsX2luZmVyaW9yICgpOworLX0KKy0KKyAvKiBQcmVwYXJlIFdIQVQgZmluYWwgZGVjaXNp b24gZm9yIGluZnJ1bi4gICovCisgCisgLyogRGVjaWRlIHdoYXQgaW5mcnVuIG5lZWRzIHRvIGRv IHdpdGggdGhpcyBicHN0YXQuICAqLwoKZGlmZiAtLWdpdCBhL2dkYi1kbG9wZW4tc3RhcC1wcm9i ZS04b2Y5LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLThvZjkucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I2NjM4YQotLS0gL2Rldi9udWxsCisrKyBiL2dk Yi1kbG9wZW4tc3RhcC1wcm9iZS04b2Y5LnBhdGNoCkBAIC0wLDAgKzEsNDYyIEBACitodHRwOi8v c291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEzLTA2L21zZzAwMDE5Lmh0bWwKKworIyMjIHNy Yy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEzLzA1LzMwIDAwOjI1OjE2CTEuMzY4MgorIyMj IHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEzLzA2LzA0IDEzOjIzOjMxCTEuMzY4Mwor IyMgLTEsMyArMSwxOSBAQAorKzIwMTMtMDYtMDQgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KKysJICAgIEdhcnkgQmVuc29uICA8Z2JlbnNvbkByZWRoYXQuY29t PgorKworKwkqIGxpYi9nZGIuZXhwIChidWlsZF9leGVjdXRhYmxlX2Zyb21fc3BlY3MpOiBVc2Ug Z2RiX2NvbXBpbGVfcHRocmVhZCwKKysJZ2RiX2NvbXBpbGVfc2hsaWIgb3IgZ2RiX2NvbXBpbGVf c2hsaWJfcHRocmVhZHMgd2hlcmUgYXBwcm9wcmlhdGUuCisrCSogbGliL3ByZWxpbmstc3VwcG9y dC5leHAgKGJ1aWxkX2V4ZWN1dGFibGVfb3duX2xpYnMpOiBBbGxvdyBJTlRFUlAKKysJdG8gYmUg c2V0IHRvICJubyIgdG8gaW5kaWNhdGUgdGhhdCBubyBsZC5zbyBjb3B5IHNob3VsZCBiZSBtYWRl LgorKwkqIGdkYi5iYXNlL2JyZWFrLWludGVycC5leHAgKHNvbGliX2JwKTogTmV3IGNvbnN0YW50 LgorKwkocmVhY2hfMSk6IFVzZSB0aGUgYWJvdmUgaW5zdGVhZCBvZiAiX2RsX2RlYnVnX3N0YXRl Ii4KKysJKHRlc3RfYXR0YWNoKTogTGlrZXdpc2UuCisrCSh0ZXN0X2xkKTogTGlrZXdpc2UuCisr CSogZ2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0aHJlYWQuZXhwOiBOZXcgZmlsZS4KKysJKiBnZGIu dGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC5jOiBMaWtld2lzZS4KKysJKiBnZGIudGhyZWFkcy9k bG9wZW4tbGlicHRocmVhZC1saWIuYzogTGlrZXdpc2UuCisrCSogZ2RiLmJhc2Uvc29saWItY29y cnVwdGVkLmV4cDogRGlzYWJsZSB0ZXN0IGlmIEdEQiBpcyB1c2luZyBwcm9iZXMuCisrCisgMjAx My0wNS0zMCAgWWFvIFFpICA8eWFvQGNvZGVzb3VyY2VyeS5jb20+CisgCisgCSogZ2RiLm1pL21p LWNtZC1wYXJhbS1jaGFuZ2VkLmV4cCAodGVzdF9jb21tYW5kX3BhcmFtX2NoYW5nZWQpOgorSW5k ZXg6IGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gZ2RiLTcuNi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50 ZXJwLmV4cAkyMDEzLTA2LTEwIDE0OjI5OjI0LjgxNTEyMzk0MSArMDIwMAorKysrIGdkYi03LjYv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCTIwMTMtMDYtMTAgMTQ6MzA6 MTguMDg2MTAyMzc1ICswMjAwCitAQCAtMTA5LDEyICsxMDksMTkgQEAgcHJvYyBzdHJpcF9kZWJ1 ZyB7ZGVzdH0geworICAgICB9CisgfQorIAorKyMgVGhlIG1hcmtlciBmdW5jdGlvbiBmb3IgdGhl IHN0YW5kYXJkIHJ1bnRpbWUgbGlua2VyIGludGVyZmFjZSBpcworKyMgX2RsX2RlYnVnX3N0YXRl LiAgVGhlIHByb2Jlcy1iYXNlZCBpbnRlcmZhY2UgaGFzIG5vIHNwZWNpZmljIG1hcmtlcgorKyMg ZnVuY3Rpb247IHRoZSBwcm9iZSB3ZSB3aWxsIHN0b3Agb24gKGluaXRfc3RhcnQpIGlzIGluIGRs X21haW4gc28gd2UKKysjIGNoZWNrIGZvciB0aGF0LgorKworK3NldCBzb2xpYl9icCB7KF9kbF9k ZWJ1Z19zdGF0ZXxkbF9tYWluKX0KKysKKyAjIEltcGxlbWVudGF0aW9uIG9mIHJlYWNoLgorIAor IHByb2MgcmVhY2hfMSB7ZnVuYyBjb21tYW5kIGRpc3BsYWNlbWVudH0geworLSAgICBnbG9iYWwg Z2RiX3Byb21wdCBleHBlY3Rfb3V0CisrICAgIGdsb2JhbCBnZGJfcHJvbXB0IGV4cGVjdF9vdXQg c29saWJfYnAKKyAKKy0gICAgaWYgeyRmdW5jID09ICJfZGxfZGVidWdfc3RhdGUifSB7CisrICAg IGlmIHskZnVuYyA9PSAkc29saWJfYnB9IHsKKyAJIyBCcmVha3BvaW50IG9uIF9kbF9kZWJ1Z19z dGF0ZSBjYW4gaGF2ZSBwcm9ibGVtcyBkdWUgdG8gaXRzIG92ZXJsYXAKKyAJIyB3aXRoIHRoZSBl eGlzdGluZyBpbnRlcm5hbCBicmVha3BvaW50IGZyb20gR0RCLgorIAlnZGJfdGVzdF9ub19vdXRw dXQgInNldCBzdG9wLW9uLXNvbGliLWV2ZW50cyAxIgorQEAgLTE0MiwyMSArMTQ5LDIxIEBAIHBy b2MgcmVhY2hfMSB7ZnVuYyBjb21tYW5kIGRpc3BsYWNlbWVudH0KKyAJICAgIGV4cF9jb250aW51 ZQorIAl9CisgCS1yZSAiQnJlYWtwb2ludCBcWzAtOVxdKywgXFwuPyhfX0dJXyk/JGZ1bmMgXFwo LipcXCkgYXQgLio6XFswLTlcXStcclxuLiokZ2RiX3Byb21wdCAkIiB7CistCSAgICBpZiB7JGZ1 bmMgPT0gIl9kbF9kZWJ1Z19zdGF0ZSJ9IHsKKysJICAgIGlmIHskZnVuYyA9PSAkc29saWJfYnB9 IHsKKyAJCWZhaWwgJHRlc3QKKyAJICAgIH0gZWxzZSB7CisgCQlwYXNzICR0ZXN0CisgCSAgICB9 CisgCX0KKyAJLXJlICJCcmVha3BvaW50IFxbMC05XF0rLCBcWzAtOXhhLWZcXSsgaW4gXFwuPyhf X0dJXyk/JGZ1bmMgXFwoXFwpLipcclxuJGdkYl9wcm9tcHQgJCIgeworLQkgICAgaWYgeyRmdW5j ID09ICJfZGxfZGVidWdfc3RhdGUifSB7CisrCSAgICBpZiB7JGZ1bmMgPT0gJHNvbGliX2JwfSB7 CisgCQlmYWlsICR0ZXN0CisgCSAgICB9IGVsc2UgeworIAkJcGFzcyAkdGVzdAorIAkgICAgfQor IAl9CisgCS1yZSAiU3RvcHBlZCBkdWUgdG8gKHNwdXJpb3VzICk/c2hhcmVkIGxpYnJhcnkgZXZl bnQuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CistCSAgICBpZiB7JGZ1bmMgPT0gIl9kbF9kZWJ1Z19z dGF0ZSJ9IHsKKysJICAgIGlmIHskZnVuYyA9PSAkc29saWJfYnB9IHsKKyAJCWlmIHskZGVidWdf c3RhdGVfY291bnQgPT0gMH0geworIAkJICAgICMgRmlyc3Qgc3RvcCBkb2VzIG5vdCB5ZXQgcmVs b2NhdGUgdGhlIF9zdGFydCBmdW5jdGlvbgorIAkJICAgICMgZGVzY3JpcHRvciBvbiBwcGM2NC4K K0BAIC0xNzUsNyArMTgyLDcgQEAgcHJvYyByZWFjaF8xIHtmdW5jIGNvbW1hbmQgZGlzcGxhY2Vt ZW50fQorIAlmYWlsICR0ZXN0X2Rpc3BsYWNlbWVudAorICAgICB9CisgCistICAgIGlmIHskZnVu YyA9PSAiX2RsX2RlYnVnX3N0YXRlIn0geworKyAgICBpZiB7JGZ1bmMgPT0gJHNvbGliX2JwfSB7 CisgCWdkYl90ZXN0X25vX291dHB1dCAic2V0IHN0b3Atb24tc29saWItZXZlbnRzIDAiCisgICAg IH0KKyB9CitAQCAtMzU3LDcgKzM2NCw3IEBAIHByb2MgdGVzdF9hdHRhY2gge2ZpbGUgZGlzcGxh Y2VtZW50IHtyZWwKKyB9CisgCisgcHJvYyB0ZXN0X2xkIHtmaWxlIGlmbWFpbiB0cnlub3N5bSBk aXNwbGFjZW1lbnR9IHsKKy0gICAgZ2xvYmFsIHNyY2RpciBzdWJkaXIgZ2RiX3Byb21wdCBleHBl Y3Rfb3V0IGluZmVyaW9yX2V4aXRlZF9yZQorKyAgICBnbG9iYWwgc3JjZGlyIHN1YmRpciBnZGJf cHJvbXB0IGV4cGVjdF9vdXQgaW5mZXJpb3JfZXhpdGVkX3JlIHNvbGliX2JwCisgCisgICAgICMg Rmlyc3QgdGVzdCBub3JtYWwgYGZpbGUnLWNvbW1hbmQgbG9hZGVkICRGSUxFIHdpdGggc3ltYm9s cy4KKyAKK0BAIC0zODUsOSArMzkyLDkgQEAgcHJvYyB0ZXN0X2xkIHtmaWxlIGlmbWFpbiB0cnlu b3N5bSBkaXNwbAorIAlnZGJfdGVzdF9ub19vdXRwdXQgInNldCBhcmdzICR7b2JqZGlyfS8ke3N1 YmRpcn0vJGJpbmZpbGVfdGVzdCIgInNldCBhcmdzIE9CSkRJUi8ke3N1YmRpcn0vJGJpbmZpbGVf dGVzdCIKKyAgICAgfQorIAorLSAgICByZWFjaCAiX2RsX2RlYnVnX3N0YXRlIiAicnVuIiAkZGlz cGxhY2VtZW50CisrICAgIHJlYWNoICRzb2xpYl9icCAicnVuIiAkZGlzcGxhY2VtZW50CisgCist ICAgIGdkYl90ZXN0ICJidCIgIiMwICtcW15cclxuXF0qXFxtKF9fR0lfKT9fZGxfZGVidWdfc3Rh dGVcXE0uKiIgImRsIGJ0IgorKyAgICBnZGJfdGVzdCAiYnQiICIjMCArXFteXHJcblxdKlxcbShf X0dJXyk/JHNvbGliX2JwXFxNLioiICJkbCBidCIKKyAKKyAgICAgaWYgJGlmbWFpbiB7CisgCXJl YWNoICJtYWluIiBjb250aW51ZSAiTk9ORSIKK0BAIC0zOTksNyArNDA2LDcgQEAgcHJvYyB0ZXN0 X2xkIHtmaWxlIGlmbWFpbiB0cnlub3N5bSBkaXNwbAorIAorICAgICAjIFRyeSByZS1ydW4gaWYg dGhlIG5ldyBQSUUgZGlzcGxhY2VtZW50IHRha2VzIGVmZmVjdC4KKyAgICAgZ2RiX3Rlc3QgImtp bGwiICIiICJraWxsIiB7S2lsbCB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZFw/IFwoeSBvciBu XCkgfSAieSIKKy0gICAgcmVhY2ggIl9kbF9kZWJ1Z19zdGF0ZSIgInJ1biIgJGRpc3BsYWNlbWVu dAorKyAgICByZWFjaCAkc29saWJfYnAgInJ1biIgJGRpc3BsYWNlbWVudAorIAorICAgICBpZiAk aWZtYWluIHsKKyAJdGVzdF9jb3JlICRmaWxlICRkaXNwbGFjZW1lbnQKK0BAIC00MzEsNyArNDM4 LDcgQEAgcHJvYyB0ZXN0X2xkIHtmaWxlIGlmbWFpbiB0cnlub3N5bSBkaXNwbAorIAlnZGJfdGVz dCAiZXhlYy1maWxlICRmaWxlIiAiZXhlYy1maWxlICRlc2NhcGVkZmlsZSIgImxvYWQiCisgCisg CWlmICRpZm1haW4geworLQkgICAgcmVhY2ggIl9kbF9kZWJ1Z19zdGF0ZSIgcnVuICRkaXNwbGFj ZW1lbnQKKysJICAgIHJlYWNoICRzb2xpYl9icCBydW4gJGRpc3BsYWNlbWVudAorIAorIAkgICAg IyBVc2UgdHdvIHNlcGFyYXRlIGdkYl90ZXN0X211bHRpcGxlIHN0YXRlbWVudHMgdG8gYXZvaWQg dGltZW91dHMgZHVlCisgCSAgICAjIHRvIHNsb3cgcHJvY2Vzc2luZyBvZiB3aWxkY2FyZCBjYXB0 dXJpbmcgbG9uZyBvdXRwdXQKK0luZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv c29saWItY29ycnVwdGVkLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjYub3JpZy9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3NvbGliLWNvcnJ1cHRlZC5leHAJMjAxMy0wNi0xMCAxNDoyOToyNC44 MTYxMjM5NDEgKzAyMDAKKysrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc29saWIt Y29ycnVwdGVkLmV4cAkyMDEzLTA2LTEwIDE0OjMwOjE4LjA4NjEwMjM3NSArMDIwMAorQEAgLTM2 LDYgKzM2LDMzIEBAIGlmICFbcnVudG9fbWFpbl0geworICAgICByZXR1cm4KKyB9CisgCisrIyBX aXRoIHByb2JlcyBpbnRlcmZhY2UgR0RCIG5vIGxvbmdlciBzY2FucyB0aGUgaW5mZXJpb3IgbGli cmFyeSBsaXN0IHNvIGl0cworKyMgY29ycnVwdGlvbiBjYW5ub3QgYmUgdGVzdGVkLiAgVGhlcmUg aXMgbm8gd2F5IHRvIGRpc2FibGUgdGhlIHByb2JlcworKyMgaW50ZXJmYWNlLgorKworK3NldCBw cm9iZXMgeyBpbml0X3N0YXJ0IGluaXRfY29tcGxldGUgbWFwX3N0YXJ0IHJlbG9jX2NvbXBsZXRl IHVubWFwX3N0YXJ0CisrCSAgICAgdW5tYXBfY29tcGxldGUgfQorK3NldCB0ZXN0ICJpbmZvIHBy b2JlcyIKKytnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7CisrICAgIC1yZSAiXnJ0bGRc WyBcdFxdKyg/OnJ0bGRfKT8oXFthLXpfXF0rKVxbIFx0XF0iIHsKKysJc2V0IGlkeCBbbHNlYXJj aCAtZXhhY3QgJHByb2JlcyAkZXhwZWN0X291dCgxLHN0cmluZyldCisrCWlmIHsgJGlkeCA+PSAw IH0geworKwkgICAgc2V0IHByb2JlcyBbbHJlcGxhY2UgJHByb2JlcyAkaWR4ICRpZHhdCisrCX0K KysJZXhwX2NvbnRpbnVlCisrICAgIH0KKysgICAgLXJlICJeXFteXHJcblxdKlxyXG4iIHsKKysJ ZXhwX2NvbnRpbnVlCisrICAgIH0KKysgICAgLXJlICJeJGdkYl9wcm9tcHQgJCIgeworKyAgICB9 CisrfQorK2lmIHsgW2xsZW5ndGggJHByb2Jlc10gPT0gMCB9IHsKKysgICAgeGZhaWwgJHRlc3QK KysgICAgdW50ZXN0ZWQgIkdEQiBpcyB1c2luZyBwcm9iZXMiCisrICAgIHJldHVybgorK30KKysK KyBnZGJfdGVzdCAiaW5mbyBzaGFyZWRsaWJyYXJ5IiAiRnJvbSAqIFRvIC4qIiAibm9ybWFsIGxp c3QiCisgCisgIyBHREIgY2hlY2tzIHRoZXJlIGZvciBtYXRjaGluZyBMX1BSRVYuCitJbmRleDog Z2RiLTcuNi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLWxpYi5j Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAw ICswMDAwCisrKysgZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1saWJw dGhyZWFkLWxpYi5jCTIwMTMtMDYtMTAgMTQ6MzA6MTguMDg2MTAyMzc1ICswMjAwCitAQCAtMCww ICsxLDQwIEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1 Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAxMS0yMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysK KysjaW5jbHVkZSA8cHRocmVhZC5oPgorKyNpbmNsdWRlIDxhc3NlcnQuaD4KKysKKytzdGF0aWMg dm9pZCAqCisrdGZ1bmMgKHZvaWQgKmFyZykKKyt7CisrICB2b2lkICgqbm90aWZ5cCkgKHZvaWQp ID0gYXJnOworKworKyAgbm90aWZ5cCAoKTsKKyt9CisrCisrdm9pZAorK2YgKHZvaWQgKCpub3Rp ZnlwKSAodm9pZCkpCisreworKyAgcHRocmVhZF90IHQ7CisrICBpbnQgaTsKKysKKysgIGkgPSBw dGhyZWFkX2NyZWF0ZSAoJnQsIE5VTEwsIHRmdW5jLCBub3RpZnlwKTsKKysgIGFzc2VydCAoaSA9 PSAwKTsKKysKKysgIGkgPSBwdGhyZWFkX2pvaW4gKHQsIE5VTEwpOworKyAgYXNzZXJ0IChpID09 IDApOworK30KK0luZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvZGxvcGVu LWxpYnB0aHJlYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAw OjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFk cy9kbG9wZW4tbGlicHRocmVhZC5jCTIwMTMtMDYtMTAgMTQ6MzA6MTguMDg3MTAyMzc1ICswMjAw CitAQCAtMCwwICsxLDQ2IEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAxMS0yMDEzIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisr ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LiAgKi8KKysKKysjaW5jbHVkZSA8ZGxmY24uaD4KKysjaW5jbHVkZSA8c3RkZGVmLmg+CisrI2lu Y2x1ZGUgPGFzc2VydC5oPgorKworK3N0YXRpYyBjb25zdCBjaGFyICp2b2xhdGlsZSBmaWxlbmFt ZTsKKysKKytzdGF0aWMgdm9pZAorK25vdGlmeSAodm9pZCkKKyt7CisrICBmaWxlbmFtZSA9IE5V TEw7IC8qIG5vdGlmeS1oZXJlICovCisrfQorKworK2ludAorK21haW4gKHZvaWQpCisreworKyAg dm9pZCAqaDsKKysgIHZvaWQgKCpmcCkgKHZvaWQgKCopICh2b2lkKSk7CisrCisrICBhc3NlcnQg KGZpbGVuYW1lICE9IE5VTEwpOworKyAgaCA9IGRsb3BlbiAoZmlsZW5hbWUsIFJUTERfTEFaWSk7 CisrICBhc3NlcnQgKGggIT0gTlVMTCk7CisrCisrICBmcCA9IGRsc3ltIChoLCAiZiIpOworKyAg YXNzZXJ0IChmcCAhPSBOVUxMKTsKKysKKysgIGZwIChub3RpZnkpOworKworKyAgcmV0dXJuIDA7 CisrfQorSW5kZXg6IGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9kbG9wZW4tbGli cHRocmVhZC5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDow MC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMv ZGxvcGVuLWxpYnB0aHJlYWQuZXhwCTIwMTMtMDYtMTAgMTQ6MzA6MTguMDg3MTAyMzc1ICswMjAw CitAQCAtMCwwICsxLDc0IEBACisrIyBDb3B5cmlnaHQgMjAxMS0yMDEzIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisr aWYgeyFbaXN0YXJnZXQgKi1saW51eCpdIHx8IFtza2lwX3NobGliX3Rlc3RzXX0geworKyAgICBy ZXR1cm4gMAorK30KKysKKytsb2FkX2xpYiBwcmVsaW5rLXN1cHBvcnQuZXhwCisrCisrc2V0IHRl c3RmaWxlICJkbG9wZW4tbGlicHRocmVhZCIKKytzZXQgc3JjbWFpbmZpbGUgJHt0ZXN0ZmlsZX0u YworK3NldCBzcmNsaWJmaWxlICR7dGVzdGZpbGV9LWxpYi5jCisrc2V0IGV4ZWN1dGFibGUgJHt0 ZXN0ZmlsZX0KKytzZXQgYmluZmlsZV9saWIgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2V4ZWN1dGFi bGV9LnNvCisrc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2V4ZWN1dGFibGV9Cisr c2V0IGxpYl9kbG9wZW4gW3NobGliX3RhcmdldF9maWxlICR7ZXhlY3V0YWJsZX0uc29dCisrCisr IyBVc2UgYnVpbGRfZXhlY3V0YWJsZV9vd25fbGlicyBhcyBwcmVsaW5rZWQgbGlicHRocmVhZC5z byBjYW4gcHJvZHVjZSBmYWxzZQorKyMgUEFTUyAtIGl0IGlzIE9LIGlmIEdEQiBwcm9jZXNzZXMg aXQgc3RpbGwgYmVmb3JlIHJlbG9jYXRpb24uCisrCisrc2V0IHJlbGlua19hcmdzIFtidWlsZF9l eGVjdXRhYmxlX293bl9saWJzICR7dGVzdGZpbGV9LmV4cCAke2V4ZWN1dGFibGV9LnNvICRzcmNs aWJmaWxlIHtkZWJ1ZyBzaGxpYl9wdGhyZWFkc30gbm9dCisraWYgeyRyZWxpbmtfYXJncyA9PSAi IiB8fCAhW3ByZWxpbmtfbm8gJHJlbGlua19hcmdzXQorKyAgICB8fCBbcHJlcGFyZV9mb3JfdGVz dGluZyAke3Rlc3RmaWxlfS5leHAgJHtleGVjdXRhYmxlfSAke3NyY21haW5maWxlfSB7ZGVidWcg c2hsaWJfbG9hZH1dIH0geworKyAgICByZXR1cm4gLTEKKyt9CisrZ2RiX2xvYWRfc2hsaWJzICRi aW5maWxlX2xpYgorKworK2lmIHsgIVtydW50b19tYWluXSB9IHsKKysgICAgcmV0dXJuIC0xCisr fQorKworK3NldCB0ZXN0ICJpbmZvIHByb2JlcyBhbGwgcnRsZCBydGxkX21hcF9jb21wbGV0ZSIK KytnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7CisrICAgIC1yZSAiXFsgXHRcXXJ0bGRf bWFwX2NvbXBsZXRlXFsgXHRcXSsweFxbMC05YS1mXF0rLipcclxuJGdkYl9wcm9tcHQgJCIgewor KwlwYXNzICR0ZXN0CisrICAgIH0KKysgICAgLXJlICJObyBwcm9iZXMgbWF0Y2hlZFxcLlxyXG4k Z2RiX3Byb21wdCAkIiB7CisrCXhmYWlsICR0ZXN0CisrCXVudGVzdGVkICR7dGVzdGZpbGV9LmV4 cAorKwlyZXR1cm4KKysgICAgfQorK30KKysKKytzZXQgdGVzdCAibGlicHRocmVhZC5zbyBub3Qg Zm91bmQiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgImluZm8gc2hhcmVkbGlicmFyeSIgJHRlc3Qgewor KyAgICAtcmUgIi9saWJwdGhyZWFkXFwuc28uKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCWZhaWwg JHRlc3QKKysgICAgfQorKyAgICAtcmUgIi9saWJjXFwuc28uKlxyXG4kZ2RiX3Byb21wdCAkIiB7 CisrCXBhc3MgJHRlc3QKKysgICAgfQorK30KKysKKytnZGJfdGVzdCAic2V0IHZhcmlhYmxlIGZp bGVuYW1lPVwiJGxpYl9kbG9wZW5cIiIKKysKKytnZGJfYnJlYWtwb2ludCAibm90aWZ5IgorKwor KyMgVGhlIGVycm9yIHdhczoKKysjIENhbm5vdCBmaW5kIG5ldyB0aHJlYWRzOiBnZW5lcmljIGVy cm9yCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm5vdGlmeSIgIi4qIG5vdGlmeS1oZXJl IC4qIgorKworK2dkYl90ZXN0ICJpbmZvIHNoYXJlZGxpYnJhcnkiIHsvbGlicHRocmVhZFwuc28u Kn0gImxpYnB0aHJlYWQuc28gZm91bmQiCitJbmRleDogZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2xp Yi9nZGIuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNi5vcmlnL2dkYi90ZXN0c3VpdGUvbGli L2dkYi5leHAJMjAxMy0wNi0xMCAxNDoyOToyNC44MTkxMjM5NDAgKzAyMDAKKysrKyBnZGItNy42 L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMy0wNi0xMCAxNDozMDo0NC42NTQwOTIxNDAg KzAyMDAKK0BAIC00MDExLDIyICs0MDExLDYgQEAgcHJvYyBidWlsZF9leGVjdXRhYmxlX2Zyb21f c3BlY3Mge3Rlc3RuYQorIAorICAgICBzZXQgYmluZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUg JGV4ZWN1dGFibGVdCisgCistICAgIHNldCBvYmplY3RzIHt9CistICAgIHNldCBpIDAKKy0gICAg Zm9yZWFjaCB7cyBsb2NhbF9vcHRpb25zfSAkYXJncyB7CistICAgICAgICBpZiAgeyBbZ2RiX2Nv bXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzfSIgIiR7YmluZmlsZX0ke2l9Lm8iIG9iamVj dCAkbG9jYWxfb3B0aW9uc10gIT0gIiIgfSB7CistICAgICAgICAgICAgdW50ZXN0ZWQgJHRlc3Ru YW1lCistICAgICAgICAgICAgcmV0dXJuIC0xCistICAgICAgICB9CistICAgICAgICBsYXBwZW5k IG9iamVjdHMgIiR7YmluZmlsZX0ke2l9Lm8iCistCWluY3IgaQorLSAgICB9CistICAgIAorLSAg ICBpZiAgeyBbZ2RiX2NvbXBpbGUgJG9iamVjdHMgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUgJG9w dGlvbnNdICE9ICIiIH0geworLSAgICAgICAgdW50ZXN0ZWQgJHRlc3RuYW1lCistICAgICAgICBy ZXR1cm4gLTEKKy0gICAgfQorLQorICAgICBzZXQgaW5mb19vcHRpb25zICIiCisgICAgIGlmIHsg W2xzZWFyY2ggLWV4YWN0ICRvcHRpb25zICJjKysiXSA+PSAwIH0geworIAlzZXQgaW5mb19vcHRp b25zICJjKysiCitAQCAtNDAzNCw2ICs0MDE4LDQyIEBAIHByb2MgYnVpbGRfZXhlY3V0YWJsZV9m cm9tX3NwZWNzIHt0ZXN0bmEKKyAgICAgaWYgW2dldF9jb21waWxlcl9pbmZvICR7aW5mb19vcHRp b25zfV0geworICAgICAgICAgcmV0dXJuIC0xCisgICAgIH0KKysKKysgICAgc2V0IGJpbmZpbGUg W3N0YW5kYXJkX291dHB1dF9maWxlICRleGVjdXRhYmxlXQorKworKyAgICBzZXQgZnVuYyBnZGJf Y29tcGlsZQorKyAgICBzZXQgZnVuY19pbmRleCBbbHNlYXJjaCAtcmVnZXhwICRvcHRpb25zIHte KHB0aHJlYWRzfHNobGlifHNobGliX3B0aHJlYWRzKSR9XQorKyAgICBpZiB7JGZ1bmNfaW5kZXgg IT0gLTF9IHsKKysJc2V0IGZ1bmMgIiR7ZnVuY31fW2xpbmRleCAkb3B0aW9ucyAkZnVuY19pbmRl eF0iCisrICAgIH0KKysKKysgICAgIyBnZGJfY29tcGlsZV9zaGxpYiBhbmQgZ2RiX2NvbXBpbGVf c2hsaWJfcHRocmVhZHMgZG8gbm90IHVzZSB0aGUgM3JkCisrICAgICMgcGFyYW1ldGVyLiAgVGhl eSBhbHNvIHJlcXVpcmVzICRzb3VyY2VzIHdoaWxlIGdkYl9jb21waWxlIGFuZAorKyAgICAjIGdk Yl9jb21waWxlX3B0aHJlYWRzIHJlcXVpcmUgJG9iamVjdHMuICBNb3Jlb3ZlciB0aGV5IGlnbm9y ZSBhbnkgb3B0aW9ucy4KKysgICAgaWYgW3N0cmluZyBtYXRjaCBnZGJfY29tcGlsZV9zaGxpYiog JGZ1bmNdIHsKKysJc2V0IHNvdXJjZXNfcGF0aCB7fQorKwlmb3JlYWNoIHtzIGxvY2FsX29wdGlv bnN9ICRhcmdzIHsKKysJICAgIGxhcHBlbmQgc291cmNlc19wYXRoICIke3NyY2Rpcn0vJHtzdWJk aXJ9LyR7c30iCisrCX0KKysJc2V0IHJldCBbJGZ1bmMgJHNvdXJjZXNfcGF0aCAiJHtiaW5maWxl fSIgJG9wdGlvbnNdCisrICAgIH0gZWxzZSB7CisrCXNldCBvYmplY3RzIHt9CisrCXNldCBpIDAK KysJZm9yZWFjaCB7cyBsb2NhbF9vcHRpb25zfSAkYXJncyB7CisrCSAgICBpZiAgeyBbZ2RiX2Nv bXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzfSIgIiR7YmluZmlsZX0ke2l9Lm8iIG9iamVj dCAkbG9jYWxfb3B0aW9uc10gIT0gIiIgfSB7CisrCQl1bnRlc3RlZCAkdGVzdG5hbWUKKysJCXJl dHVybiAtMQorKwkgICAgfQorKwkgICAgbGFwcGVuZCBvYmplY3RzICIke2JpbmZpbGV9JHtpfS5v IgorKwkgICAgaW5jciBpCisrCX0KKysJc2V0IHJldCBbJGZ1bmMgJG9iamVjdHMgIiR7YmluZmls ZX0iIGV4ZWN1dGFibGUgJG9wdGlvbnNdCisrICAgIH0KKysgICAgaWYgIHsgJHJldCAhPSAiIiB9 IHsKKysgICAgICAgIHVudGVzdGVkICR0ZXN0bmFtZQorKyAgICAgICAgcmV0dXJuIC0xCisrICAg IH0KKysKKyAgICAgcmV0dXJuIDAKKyB9CisgCitJbmRleDogZ2RiLTcuNi9nZGIvdGVzdHN1aXRl L2xpYi9wcmVsaW5rLXN1cHBvcnQuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNi5vcmlnL2dk Yi90ZXN0c3VpdGUvbGliL3ByZWxpbmstc3VwcG9ydC5leHAJMjAxMy0wNi0xMCAxNDoyOToyNC44 MTkxMjM5NDAgKzAyMDAKKysrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvbGliL3ByZWxpbmstc3Vw cG9ydC5leHAJMjAxMy0wNi0xMCAxNDozMDoxOC4wODkxMDIzNzQgKzAyMDAKK0BAIC05NSw4ICs5 NSw5IEBAIHByb2MgZmlsZV9jb3B5IHtzcmMgZGVzdH0geworICMgV3JhcCBmdW5jdGlvbiBidWls ZF9leGVjdXRhYmxlIHNvIHRoYXQgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIGlzIGZ1bGx5Cisg IyBzZWxmLXN1ZmZpY2llbnQgKHdpdGhvdXQgZGVwZW5kZW5jaWVzIG9uIHN5c3RlbSBsaWJyYXJp ZXMpLiAgUGFyYW1ldGVyCisgIyBJTlRFUlAgbWF5IGJlIHVzZWQgdG8gc3BlY2lmeSBhIGxvYWRl ciAobGQuc28pIHRvIGJlIHVzZWQgdGhhdCBpcworLSMgZGlmZmVyZW50IGZyb20gdGhlIGRlZmF1 bHQgc3lzdGVtIG9uZS4gIExpYnJhcmllcyBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZQorLSMgZGVw ZW5kcyBhcmUgY29waWVkIGludG8gZGlyZWN0b3J5IERJUi4gIERlZmF1bHQgRElSIHZhbHVlIHRv CisrIyBkaWZmZXJlbnQgZnJvbSB0aGUgZGVmYXVsdCBzeXN0ZW0gb25lLiAgSU5URVJQIGNhbiBi ZSBzZXQgdG8gIm5vIiBpZiBubyBsZC5zbworKyMgY29weSBzaG91bGQgYmUgbWFkZS4gIExpYnJh cmllcyBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSBkZXBlbmRzIGFyZSBjb3BpZWQKKysjIGludG8g ZGlyZWN0b3J5IERJUi4gIERlZmF1bHQgRElSIHZhbHVlIHRvCisgIyBgJHtvYmpkaXJ9LyR7c3Vi ZGlyfS8ke0VYRUNVVEFCTEV9LmQnLgorICMKKyAjIEluIGNhc2Ugb2Ygc3VjY2VzcywgcmV0dXJu IGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGFyZ3VtZW50cyB0byBiZSB1c2VkCitAQCAtMTUxLDgg KzE1MiwxNSBAQCBwcm9jIGJ1aWxkX2V4ZWN1dGFibGVfb3duX2xpYnMge3Rlc3RuYW1lCisgCisg ICAgIGlmIHskaW50ZXJwID09ICIifSB7CisgCXNldCBpbnRlcnBfc3lzdGVtIFtzZWN0aW9uX2dl dCAkYmluZmlsZSAuaW50ZXJwXQorLQlzZXQgaW50ZXJwICR7ZGlyfS9bZmlsZSB0YWlsICRpbnRl cnBfc3lzdGVtXQorLQlmaWxlX2NvcHkgJGludGVycF9zeXN0ZW0gJGludGVycAorKwlpZiB7JGlu dGVycF9zeXN0ZW0gPT0gIiJ9IHsKKysJICAgIGZhaWwgIiR0ZXN0IGNvdWxkIG5vdCBmaW5kIC5p bnRlcnAiCisrCX0gZWxzZSB7CisrCSAgICBzZXQgaW50ZXJwICR7ZGlyfS9bZmlsZSB0YWlsICRp bnRlcnBfc3lzdGVtXQorKwkgICAgZmlsZV9jb3B5ICRpbnRlcnBfc3lzdGVtICRpbnRlcnAKKysJ fQorKyAgICB9CisrICAgIGlmIHskaW50ZXJwID09ICJubyJ9IHsKKysJc2V0IGludGVycCAiIgor ICAgICB9CisgCisgICAgIHNldCBkZXN0cyB7fQorQEAgLTE2NCwxMyArMTcyLDE5IEBAIHByb2Mg YnVpbGRfZXhlY3V0YWJsZV9vd25fbGlicyB7dGVzdG5hbWUKKyAKKyAgICAgIyBEbyBub3QgbGFw cGVuZCBpdCBzbyB0aGF0ICItcnBhdGggJGRpciIgb3ZlcnJpZGVzIGFueSBwb3NzaWJsZSAiLXJw YXRoInMKKyAgICAgIyBzcGVjaWZpZWQgYnkgdGhlIGNhbGxlciB0byBiZSBhYmxlIHRvIGxpbmsg aXQgZm9yIGxkZCIgYWJvdmUuCistICAgIHNldCBvcHRpb25zIFtsaW5zZXJ0ICRvcHRpb25zIDAg ImxkZmxhZ3M9LVdsLC0tZHluYW1pYy1saW5rZXIsJGludGVycCwtcnBhdGgsJGRpciJdCisrICAg IHNldCBvcHRpb25zIFtsaW5zZXJ0ICRvcHRpb25zIDAgImxkZmxhZ3M9LVdsLC1ycGF0aCwkZGly Il0KKysgICAgaWYgeyRpbnRlcnAgIT0gIiJ9IHsKKysJc2V0IG9wdGlvbnMgW2xpbnNlcnQgJG9w dGlvbnMgMCAibGRmbGFncz0tV2wsLS1keW5hbWljLWxpbmtlciwkaW50ZXJwIl0KKysgICAgfQor IAorICAgICBpZiB7W2J1aWxkX2V4ZWN1dGFibGUgJHRlc3RuYW1lICRleGVjdXRhYmxlICRzb3Vy Y2VzICRvcHRpb25zXSA9PSAtMX0geworIAlyZXR1cm4gIiIKKyAgICAgfQorIAorLSAgICBzZXQg cHJlbGlua19hcmdzICItLWR5bmFtaWMtbGlua2VyPSRpbnRlcnAgLS1sZC1saWJyYXJ5LXBhdGg9 JGRpciAkYmluZmlsZSAkaW50ZXJwIFtjb25jYXQgJGRlc3RzXSIKKysgICAgc2V0IHByZWxpbmtf YXJncyAiLS1sZC1saWJyYXJ5LXBhdGg9JGRpciAkYmluZmlsZSBbY29uY2F0ICRkZXN0c10iCisr ICAgIGlmIHskaW50ZXJwICE9ICIifSB7CisrCXNldCBwcmVsaW5rX2FyZ3MgIi0tZHluYW1pYy1s aW5rZXI9JGludGVycCAkcHJlbGlua19hcmdzICRpbnRlcnAiCisrICAgIH0KKyAgICAgcmV0dXJu ICRwcmVsaW5rX2FyZ3MKKyB9CisgCgpkaWZmIC0tZ2l0IGEvZ2RiLWRsb3Blbi1zdGFwLXByb2Jl LTlvZjkucGF0Y2ggYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUtOW9mOS5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmJiODk3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2Ri LWRsb3Blbi1zdGFwLXByb2JlLTlvZjkucGF0Y2gKQEAgLTAsMCArMSw0MTUgQEAKK2h0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDYvbXNnMDAwMjAuaHRtbAorCisjIyMgc3Jj L2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCTIwMTMvMDYvMDQgMTM6MjM6MzEJMS4zNjgzCisjIyMg c3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCTIwMTMvMDYvMDQgMTM6MzE6MDAJMS4zNjg0Cisj IyAtMSwzICsxLDEzIEBACisrMjAxMy0wNi0wNCAgR2FyeSBCZW5zb24gIDxnYmVuc29uQHJlZGhh dC5jb20+CisrCisrCSogZ2RiLmJhc2UvYnJlYWstcHJvYmVzLmV4cDogTmV3IGZpbGUuCisrCSog Z2RiLmJhc2UvYnJlYWstcHJvYmVzLmM6IExpa2V3aXNlLgorKwkqIGdkYi5iYXNlL2JyZWFrLXBy b2Jlcy1zb2xpYi5jOiBMaWtld2lzZS4KKysJKiBnZGIuYmFzZS9pbmZvLXNoYXJlZC5leHA6IE5l dyBmaWxlLgorKwkqIGdkYi5iYXNlL2luZm8tc2hhcmVkLmM6IExpa2V3aXNlLgorKwkqIGdkYi5i YXNlL2luZm8tc2hhcmVkLXNvbGliMS5jOiBMaWtld2lzZS4KKysJKiBnZGIuYmFzZS9pbmZvLXNo YXJlZC1zb2xpYjIuYzogTGlrZXdpc2UuCisrCisgMjAxMy0wNi0wNCAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorIAkgICAgR2FyeSBCZW5zb24gIDxnYmVuc29u QHJlZGhhdC5jb20+CisgCistLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstcHJv YmVzLXNvbGliLmMKKysrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1wcm9iZXMt c29saWIuYwkyMDEzLTA2LTEwIDEyOjE1OjExLjU0ODkzNTQxMyArMDAwMAorQEAgLTAsMCArMSwy MiBAQAorKy8qIENvcHlyaWdodCAyMDEyLTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisr ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysg ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNp bmNsdWRlIDxzdGRpby5oPgorKworK2ludAorK2ZvbyAoaW50IG4pCisreworKyAgcmV0dXJuIG4g KiBuIC8gMTc7CisrfQorLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLXByb2Jl cy5jCisrKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstcHJvYmVzLmMJMjAxMy0w Ni0xMCAxMjoxNToxMi4wNDc3MTczODMgKzAwMDAKK0BAIC0wLDAgKzEsMzAgQEAKKysvKiBDb3B5 cmlnaHQgMjAxMi0yMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysK KysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSA8ZGxmY24u aD4KKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrI2luY2x1ZGUgPHN0ZGRlZi5oPgorKworK2ludAor K21haW4gKHZvaWQpCisreworKyAgdm9pZCAqaGFuZGxlID0gZGxvcGVuIChTSExJQl9OQU1FLCBS VExEX0xBWlkpOworKworKyAgYXNzZXJ0IChoYW5kbGUgIT0gTlVMTCk7CisrCisrICBkbGNsb3Nl IChoYW5kbGUpOworKworKyAgcmV0dXJuIDA7CisrfQorLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2JyZWFrLXByb2Jlcy5leHAKKysrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9i cmVhay1wcm9iZXMuZXhwCTIwMTMtMDYtMTAgMTI6MTU6MTIuNjIwMzY4MDQwICswMDAwCitAQCAt MCwwICsxLDc4IEBACisrIyBDb3B5cmlnaHQgMjAxMi0yMDEzIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytpZiB7IFtz a2lwX3NobGliX3Rlc3RzXSB9IHsKKysgICAgcmV0dXJuIDAKKyt9CisrCisrc3RhbmRhcmRfdGVz dGZpbGUKKysKKytzZXQgbGlibmFtZSAkdGVzdGZpbGUtc29saWIKKytzZXQgc3JjZmlsZV9saWIg JHNyY2Rpci8kc3ViZGlyLyRsaWJuYW1lLmMKKytzZXQgYmluZmlsZV9saWIgW3N0YW5kYXJkX291 dHB1dF9maWxlICRsaWJuYW1lLnNvXQorKworK3NldCBub3JtYWxfYnAgIl9kbF9kZWJ1Z19zdGF0 ZSIKKytzZXQgcHJvYmVzX2JwICJkbF9tYWluIgorKworK2lmIHsgW2dkYl9jb21waWxlX3NobGli ICRzcmNmaWxlX2xpYiAkYmluZmlsZV9saWIgXAorKwkgIFtsaXN0IGFkZGl0aW9uYWxfZmxhZ3M9 LWZQSUNdXSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxkIG5vdCBjb21waWxlICRiaW5m aWxlX2xpYi4iCisrICAgIHJldHVybiAtMQorK30KKysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0 aW5nICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxlICRzcmNmaWxlIFwKKysJICBbbGlzdCBhZGRpdGlv bmFsX2ZsYWdzPS1EU0hMSUJfTkFNRT1cIiRiaW5maWxlX2xpYlwiIGxpYnM9LWxkbF1dIH0gewor KyAgICByZXR1cm4gLTEKKyt9CisrCisrIyBFbmFibGUgc3RvcC1vbi1zb2xpYi1ldmVudHMKKytn ZGJfdGVzdF9ub19vdXRwdXQgInNldCBzdG9wLW9uLXNvbGliLWV2ZW50cyAxIgorKworKyMgU3Rh cnQgdGhlIGluZmVyaW9yIGFuZCBydW4gdG8gdGhlIGZpcnN0IHN0b3AKKytnZGJfcnVuX2NtZAor K2dkYl90ZXN0ICIiICIuKlN0b3BwZWQgZHVlIHRvIHNoYXJlZCBsaWJyYXJ5IGV2ZW50LioiCisr CisrIyBYRkFJTCBpZiB3ZSBhcmUgbm90IHVzaW5nIHByb2JlcworK3NldCB0ZXN0ICJlbnN1cmUg dXNpbmcgcHJvYmVzIgorK3NldCB1c2luZ19wcm9iZXMgMAorK2dkYl90ZXN0X211bHRpcGxlICJi dCIgJHRlc3QgeworKyAgICAtcmUgIiMwICtcW15cclxuXF0qXFxtKF9fR0lfKT8kbm9ybWFsX2Jw XFxNLiokZ2RiX3Byb21wdCAkIiB7CisrCXVudGVzdGVkICJwcm9iZXMgbm90IHByZXNlbnQgb24g dGhpcyBzeXN0ZW0iCisrICAgIH0KKysgICAgLXJlICIjMCArXFteXHJcblxdKlxcbShfX0dJXyk/ JHByb2Jlc19icFxcTS4qJGdkYl9wcm9tcHQgJCIgeworKwlwYXNzICR0ZXN0CisrCXNldCB1c2lu Z19wcm9iZXMgMQorKyAgICB9CisrfQorKworK2lmIHsgJHVzaW5nX3Byb2JlcyB9IHsKKysgICAg IyBSdW4gdGlsIGl0IGxvYWRzIG91ciBsaWJyYXJ5CisrICAgIHNldCB0ZXN0ICJydW4gdGlsIG91 ciBsaWJyYXJ5IGxvYWRzIgorKyAgICBzZXQgbm90X2xvYWRlZF9saWJyYXJ5IDEKKysgICAgd2hp bGUgeyAkbm90X2xvYWRlZF9saWJyYXJ5IH0geworKwlzZXQgbm90X2xvYWRlZF9saWJyYXJ5IDAK KysJZ2RiX3Rlc3RfbXVsdGlwbGUgImMiICR0ZXN0IHsKKysJICAgIC1yZSAiSW5mZXJpb3IgbG9h ZGVkICRiaW5maWxlX2xpYlxcTS4qJGdkYl9wcm9tcHQgJCIgeworKwkJcGFzcyAkdGVzdAorKwkg ICAgfQorKwkgICAgLXJlICJTdG9wcGVkIGR1ZSB0byBzaGFyZWQgbGlicmFyeSBldmVudFxcTS4q JGdkYl9wcm9tcHQgJCIgeworKwkJc2V0IG5vdF9sb2FkZWRfbGlicmFyeSAxCisrCSAgICB9Cisr CX0KKysgICAgfQorKworKyAgICAjIENhbGwgc29tZXRoaW5nIHRvIGVuc3VyZSB0aGF0IHJlbG9j YXRpb24gb2NjdXJyZWQKKysgICAgZ2RiX3Rlc3QgImNhbGwgZm9vKDIzKSIgIlxcXCQuKiA9IDMx LipcXFxNLioiCisrfQorLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2luZm8tc2hhcmVk LXNvbGliMS5jCisrKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQtc29s aWIxLmMJMjAxMy0wNi0xMCAxMjoxNToxNC4zOTkxMjkyODggKzAwMDAKK0BAIC0wLDAgKzEsMjQg QEAKKysvKiBDb3B5cmlnaHQgMjAxMi0yMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAg IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaW5j bHVkZSA8c3RkaW8uaD4KKysKKytpbnQKKytmb28gKGludCBuKQorK3sKKysgIHByaW50ZiAoImZv byAlZFxuIiwgbik7CisrCisrICByZXR1cm4gMDsKKyt9CistLS0gc3JjL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvaW5mby1zaGFyZWQtc29saWIyLmMKKysrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9pbmZvLXNoYXJlZC1zb2xpYjIuYwkyMDEzLTA2LTEwIDEyOjE1OjE0LjkzMDEzNTc0MiAr MDAwMAorQEAgLTAsMCArMSwyNCBAQAorKy8qIENvcHlyaWdodCAyMDEyLTIwMTMgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uICAqLworKworKyNpbmNsdWRlIDxzdGRpby5oPgorKworK2ludAorK2JhciAoaW50IG4p CisreworKyAgcHJpbnRmICgiYmFyICVkXG4iLCBuKTsKKysKKysgIHJldHVybiAwOworK30KKy0t LSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJlZC5jCisrKysgc3JjL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQuYwkyMDEzLTA2LTEwIDEyOjE1OjE1LjM5NTQ3 NDgxOSArMDAwMAorQEAgLTAsMCArMSw1MiBAQAorKy8qIENvcHlyaWdodCAyMDEyLTIwMTMgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLworKworKyNpbmNsdWRlIDxkbGZjbi5oPgorKyNpbmNsdWRlIDxhc3Nl cnQuaD4KKysjaW5jbHVkZSA8c3RkZGVmLmg+CisrCisrdm9pZAorK3N0b3AgKHZvaWQpCisrewor K30KKysKKytpbnQKKyttYWluICh2b2lkKQorK3sKKysgIHZvaWQgKmhhbmRsZTEsICpoYW5kbGUy OworKyAgdm9pZCAoKmZ1bmMpKGludCk7CisrCisrICBoYW5kbGUxID0gZGxvcGVuIChTSExJQjFf TkFNRSwgUlRMRF9MQVpZKTsKKysgIGFzc2VydCAoaGFuZGxlMSAhPSBOVUxMKTsKKysgIHN0b3Ag KCk7CisrCisrICBoYW5kbGUyID0gZGxvcGVuIChTSExJQjJfTkFNRSwgUlRMRF9MQVpZKTsKKysg IGFzc2VydCAoaGFuZGxlMiAhPSBOVUxMKTsKKysgIHN0b3AgKCk7CisrCisrICBmdW5jID0gKHZv aWQgKCopKGludCkpIGRsc3ltIChoYW5kbGUxLCAiZm9vIik7CisrICBmdW5jICgxKTsKKysKKysg IGZ1bmMgPSAodm9pZCAoKikoaW50KSkgZGxzeW0gKGhhbmRsZTIsICJiYXIiKTsKKysgIGZ1bmMg KDIpOworKworKyAgZGxjbG9zZSAoaGFuZGxlMSk7CisrICBzdG9wICgpOworKworKyAgZGxjbG9z ZSAoaGFuZGxlMik7CisrICBzdG9wICgpOworKworKyAgcmV0dXJuIDA7CisrfQorLS0tIHNyYy9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2luZm8tc2hhcmVkLmV4cAorKysrIHNyYy9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2luZm8tc2hhcmVkLmV4cAkyMDEzLTA2LTEwIDEyOjE1OjE1Ljg5MTQ1MDI4 NSArMDAwMAorQEAgLTAsMCArMSwxNDYgQEAKKysjIENvcHlyaWdodCAyMDEyLTIwMTMgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor KyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgorKworK2lmIHsgW3NraXBfc2hsaWJfdGVzdHNdIH0geworKyAgICByZXR1cm4gMAorK30KKysK KytzdGFuZGFyZF90ZXN0ZmlsZQorKworK3NldCBsaWIxbmFtZSAkdGVzdGZpbGUtc29saWIxCisr c2V0IHNyY2ZpbGVfbGliMSAkc3JjZGlyLyRzdWJkaXIvJGxpYjFuYW1lLmMKKytzZXQgYmluZmls ZV9saWIxIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAkbGliMW5hbWUuc29dCisrc2V0IGRlZmluZTEg LURTSExJQjFfTkFNRT1cIiRiaW5maWxlX2xpYjFcIgorKworK3NldCBsaWIybmFtZSAkdGVzdGZp bGUtc29saWIyCisrc2V0IHNyY2ZpbGVfbGliMiAkc3JjZGlyLyRzdWJkaXIvJGxpYjJuYW1lLmMK KytzZXQgYmluZmlsZV9saWIyIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAkbGliMm5hbWUuc29dCisr c2V0IGRlZmluZTIgLURTSExJQjJfTkFNRT1cIiRiaW5maWxlX2xpYjJcIgorKworK2lmIHsgW2dk Yl9jb21waWxlX3NobGliICRzcmNmaWxlX2xpYjEgJGJpbmZpbGVfbGliMSBcCisrCSAgW2xpc3Qg YWRkaXRpb25hbF9mbGFncz0tZlBJQ11dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGQg bm90IGNvbXBpbGUgJGJpbmZpbGVfbGliMS4iCisrICAgIHJldHVybiAtMQorK30KKysKKytpZiB7 IFtnZGJfY29tcGlsZV9zaGxpYiAkc3JjZmlsZV9saWIyICRiaW5maWxlX2xpYjIgXAorKwkgIFts aXN0IGFkZGl0aW9uYWxfZmxhZ3M9LWZQSUNdXSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgIkNv dWxkIG5vdCBjb21waWxlICRiaW5maWxlX2xpYjIuIgorKyAgICByZXR1cm4gLTEKKyt9CisrCisr c2V0IGNmbGFncyAiJGRlZmluZTEgJGRlZmluZTIiCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGlu ZyAkdGVzdGZpbGUuZXhwICR0ZXN0ZmlsZSAkc3JjZmlsZSBcCisrCSAgW2xpc3QgYWRkaXRpb25h bF9mbGFncz0kY2ZsYWdzIGxpYnM9LWxkbF1dIH0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisr IyBSdW4gImluZm8gc2hhcmVkbGlicmFyeSIgYW5kIGNoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb3Ig YWJzZW5jZSBvZgorKyMgb3VyIGxpYnJhcmllcy4KKytwcm9jIGNoZWNrX2luZm9fc2hhcmVkIHsg dGVzdCBleHBlY3QxIGV4cGVjdDIgfSB7CisrICAgIGdsb2JhbCBsaWIxbmFtZQorKyAgICBnbG9i YWwgbGliMm5hbWUKKysgICAgZ2xvYmFsIGdkYl9wcm9tcHQKKysKKysgICAgc2V0IGFjdHVhbDEg MAorKyAgICBzZXQgYWN0dWFsMiAwCisrCisrICAgIGdkYl90ZXN0X211bHRpcGxlICJpbmZvIHNo YXJlZGxpYnJhcnkiICR0ZXN0IHsKKysJLXJlICRsaWIxbmFtZSB7CisrCSAgICBzZXQgYWN0dWFs MSAxCisrCSAgICBleHBfY29udGludWUKKysJfQorKwktcmUgJGxpYjJuYW1lIHsKKysJICAgIHNl dCBhY3R1YWwyIDEKKysJICAgIGV4cF9jb250aW51ZQorKwl9CisrCS1yZSAiXHJcbiRnZGJfcHJv bXB0ICQiIHsKKysJICAgIGlmIHsgJGFjdHVhbDEgPT0gJGV4cGVjdDEgJiYgJGFjdHVhbDIgPT0g JGV4cGVjdDIgfSB7CisrCQlwYXNzICR0ZXN0CisrCSAgICB9IGVsc2UgeworKwkJZmFpbCAkdGVz dAorKwkgICAgfQorKwl9CisrICAgIH0KKyt9CisrCisrIyBTdGFydCB0aGUgaW5mZXJpb3IsIGFu ZCBjaGVjayBuZWl0aGVyIG9mIHRoZSBsaWJyYXJpZXMgYXJlIGxvYWRlZCBhdAorKyMgdGhlIHN0 YXJ0LgorK2lmICFbcnVudG9fbWFpbl0geworKyAgICByZXR1cm4gMAorK30KKytjaGVja19pbmZv X3NoYXJlZCAiaW5mbyBzaGFyZWRsaWJyYXJ5ICMxIiAwIDAKKysKKysjIFNldCB1cCBicmVha3Bv aW50cy4KKytnZGJfYnJlYWtwb2ludCAic3RvcCIKKytnZGJfYnJlYWtwb2ludCAiZm9vIiBhbGxv dy1wZW5kaW5nCisrZ2RiX2JyZWFrcG9pbnQgImJhciIgYWxsb3ctcGVuZGluZworKworKyMgUnVu IHRvIHRoZSBmaXJzdCBzdG9wIGFuZCBjaGVjayB0aGF0IG9ubHkgdGhlIGZpcnN0IGxpYnJhcnkg aXMgbG9hZGVkLgorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJsaWJyYXJ5IGxvYWQgIzEi ICJzdG9wIC4qIgorK2NoZWNrX2luZm9fc2hhcmVkICJpbmZvIHNoYXJlZGxpYnJhcnkgIzIiIDEg MAorKworKyMgUnVuIHRvIHRoZSBzZWNvbmQgc3RvcCBhbmQgY2hlY2sgdGhhdCBib3RoIGxpYnJh cmllcyBhcmUgbG9hZGVkLgorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJsaWJyYXJ5IGxv YWQgIzIiICJzdG9wIC4qIgorK2NoZWNrX2luZm9fc2hhcmVkICJpbmZvIHNoYXJlZGxpYnJhcnkg IzMiIDEgMQorKworKyMgQ2hlY2sgdGhhdCB0aGUgbmV4dCBzdG9wIGlzIGluIGZvby4KKytnZGJf Y29udGludWVfdG9fYnJlYWtwb2ludCAibGlicmFyeSBmdW5jdGlvbiAjMSIgImZvbyAuKiIKKysK KysjIENoZWNrIHRoYXQgdGhlIG5leHQgc3RvcCBpcyBpbiBiYXIuCisrZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgImxpYnJhcnkgZnVuY3Rpb24gIzIiICJiYXIgLioiCisrCisrIyBSZXN0YXJ0 IHRoZSBpbmZlcmlvciBhbmQgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBicmVha3BvaW50IHJlc2V0 CisrIyBlcnJvcnMuICBUaGVzZSBjYW4gaGFwcGVuIHdpdGggdGhlIHByb2Jlcy1iYXNlZCBydW50 aW1lIGxpbmtlcgorKyMgaW50ZXJmYWNlIGlmIHRoZSBjYWNoZSBpcyBub3QgY2xlYXJlZCBjb3Jy ZWN0bHkuCisrc2V0IHRlc3QgInJlc3RhcnQiCisrZ2RiX3J1bl9jbWQKKytnZGJfdGVzdF9tdWx0 aXBsZSAiIiAkdGVzdCB7CisrICAgIC1yZSB7U3RhcnQgaXQgZnJvbSB0aGUgYmVnaW5uaW5nXD8g XCh5IG9yIG5cKSAkfSB7CisrCXNlbmRfZ2RiICJ5XG4iCisrCWV4cF9jb250aW51ZQorKyAgICB9 CisrICAgIC1yZSB7RXJyb3IgaW4gcmUtc2V0dGluZyBicmVha3BvaW50fSB7CisrCWZhaWwgJHRl c3QKKysgICAgfQorKyAgICAtcmUgIlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXBhc3MgJHRlc3QK KysgICAgfQorK30KKysKKysjIENoZWNrIHRoYXQgbmVpdGhlciBsaWJyYXJ5IGlzIGxvYWRlZC4K KytjaGVja19pbmZvX3NoYXJlZCAiaW5mbyBzaGFyZWRsaWJyYXJ5ICM0IiAwIDAKKysKKysjIFJ1 biB0byB0aGUgZmlyc3Qgc3RvcCBhbmQgY2hlY2sgdGhhdCBvbmx5IHRoZSBmaXJzdCBsaWJyYXJ5 IGlzIGxvYWRlZC4KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibGlicmFyeSBsb2FkICMz IiAic3RvcCAuKiIKKytjaGVja19pbmZvX3NoYXJlZCAiaW5mbyBzaGFyZWRsaWJyYXJ5ICM1IiAx IDAKKysKKysjIFJ1biB0byB0aGUgc2Vjb25kIHN0b3AgYW5kIGNoZWNrIHRoYXQgYm90aCBsaWJy YXJpZXMgYXJlIGxvYWRlZC4KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibGlicmFyeSBs b2FkICM0IiAic3RvcCAuKiIKKytjaGVja19pbmZvX3NoYXJlZCAiaW5mbyBzaGFyZWRsaWJyYXJ5 ICM2IiAxIDEKKysKKysjIENoZWNrIHRoYXQgdGhlIG5leHQgc3RvcCBpcyBpbiBmb28uCisrZ2Ri X2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImxpYnJhcnkgZnVuY3Rpb24gIzMiICJmb28gLioiCisr CisrIyBDaGVjayB0aGF0IHRoZSBuZXh0IHN0b3AgaXMgaW4gYmFyLgorK2dkYl9jb250aW51ZV90 b19icmVha3BvaW50ICJsaWJyYXJ5IGZ1bmN0aW9uICM0IiAiYmFyIC4qIgorKworKyMgUnVuIHRv IHRoZSBuZXh0IHN0b3AgYW5kIGNoZWNrIHRoYXQgdGhlIGZpcnN0IGxpYnJhcnkgaGFzIGJlZW4g dW5sb2FkZWQuCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImxpYnJhcnkgdW5sb2FkICMx IiAic3RvcCAuKiIKKytjaGVja19pbmZvX3NoYXJlZCAiaW5mbyBzaGFyZWRsaWJyYXJ5ICM3IiAw IDEKKysKKysjIFJ1biB0byB0aGUgbGFzdCBzdG9wIGFuZCBjaGVjayB0aGF0IGJvdGggbGlicmFy aWVzIGFyZSBnb25lLgorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJsaWJyYXJ5IHVubG9h ZCAjMiIgInN0b3AgLioiCisrY2hlY2tfaW5mb19zaGFyZWQgImluZm8gc2hhcmVkbGlicmFyeSAj OCIgMCAwCgpkaWZmIC0tZ2l0IGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLWZpeHVwLnBhdGNoIGIv Z2RiLWRsb3Blbi1zdGFwLXByb2JlLWZpeHVwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAzMGUxOGMxLi4wMDAwMDAwCi0tLSBhL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS1maXh1 cC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS0tLSBnZGItNy42LXgvZ2Ri L3NvbGliLXN2cjQuYwkyMDEzLTA1LTE5IDE2OjA0OjM2LjgzODg3NDU5NSArMDIwMAotKysrIGdk Yi03LjYvZ2RiL3NvbGliLXN2cjQuYwkyMDEzLTA1LTE5IDE2OjEyOjM1LjExMjUxNDk3OCArMDIw MAotQEAgLTEwNzgsNyArMTA3OCw2IEBAIHN2cjRfZnJlZV9saWJyYXJ5X2xpc3QgKHZvaWQgKnBf bGlzdCkKLSBzdGF0aWMgc3RydWN0IHNvX2xpc3QgKgotIHN2cjRfY29weV9saWJyYXJ5X2xpc3Qg KHN0cnVjdCBzb19saXN0ICpzcmMpCi0gewotLSAgc3RydWN0IGxpbmtfbWFwX29mZnNldHMgKmxt byA9IHN2cjRfZmV0Y2hfbGlua19tYXBfb2Zmc2V0cyAoKTsKLSAgIHN0cnVjdCBzb19saXN0ICpk c3QgPSBOVUxMOwotICAgc3RydWN0IHNvX2xpc3QgKipsaW5rID0gJmRzdDsKLSAKLUBAIC0xMDkw LDggKzEwODksOCBAQCBzdnI0X2NvcHlfbGlicmFyeV9saXN0IChzdHJ1Y3Qgc29fbGlzdCAqCi0g Ci0gICAgICAgbWVtY3B5IChuZXcsIHNyYywgc2l6ZW9mIChzdHJ1Y3Qgc29fbGlzdCkpOwotIAot LSAgICAgIG5ldy0+bG1faW5mbyA9IHhtYWxsb2MgKGxtby0+bGlua19tYXBfc2l6ZSk7Ci0tICAg ICAgbWVtY3B5IChuZXctPmxtX2luZm8sIHNyYy0+bG1faW5mbywgbG1vLT5saW5rX21hcF9zaXpl KTsKLSsgICAgICBuZXctPmxtX2luZm8gPSB4bWFsbG9jIChzaXplb2YgKCpuZXctPmxtX2luZm8p KTsKLSsgICAgICBtZW1jcHkgKG5ldy0+bG1faW5mbywgc3JjLT5sbV9pbmZvLCBzaXplb2YgKCpu ZXctPmxtX2luZm8pKTsKLSAKLSAgICAgICBuZXctPm5leHQgPSBOVUxMOwotICAgICAgICpsaW5r ID0gbmV3OwotQEAgLTE3NDcsNyArMTc0Niw3IEBAIHNvbGlzdF91cGRhdGVfaW5jcmVtZW50YWwg KHN0cnVjdCBzdnI0X2kKLSAgICAgICBzdHJ1Y3Qgc3ZyNF9saWJyYXJ5X2xpc3QgbGlicmFyeV9s aXN0OwotICAgICAgIGNoYXIgYW5uZXhbNjRdOwotIAotLSAgICAgIHhzbnByaW50ZiAoYW5uZXgs IHNpemVvZiAoYW5uZXgpLCAic3RhcnQ9JWx4O3ByZXY9JWx4IiwgbG0sIHByZXZfbG0pOwotKyAg ICAgIHhzbnByaW50ZiAoYW5uZXgsIHNpemVvZiAoYW5uZXgpLCAic3RhcnQ9JWx4O3ByZXY9JWx4 IiwgKHVuc2lnbmVkIGxvbmcpIGxtLCAodW5zaWduZWQgbG9uZykgcHJldl9sbSk7Ci0gICAgICAg aWYgKCFzdnI0X2N1cnJlbnRfc29zX3ZpYV94ZmVyX2xpYnJhcmllcyAoJmxpYnJhcnlfbGlzdCwg YW5uZXgpKQotIAlyZXR1cm4gMDsKLSAKLUBAIC0xODEzLDcgKzE4MTIsMTAgQEAgc3ZyNF9oYW5k bGVfc29saWJfZXZlbnQgKHZvaWQpCi0gICAgIGdvdG8gZXJyb3I7Ci0gCi0gICBpZiAoYWN0aW9u ID09IERPX05PVEhJTkcpCi0rewotK2RvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotICAgICByZXR1 cm47Ci0rfQotIAotICAgLyogRVZBTFVBVEVfUFJPQkVfQVJHVU1FTlQgbG9va3MgdXAgc3ltYm9s cyBpbiB0aGUgZHluYW1pYyBsaW5rZXIKLSAgICAgIHVzaW5nIEZJTkRfUENfU0VDVElPTi4gIEZJ TkRfUENfU0VDVElPTiBpcyBhY2NlbGVyYXRlZCBieSBhIGNhY2hlCi0tLS0gZ2RiLTcuNi14L2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstcHJvYmVzLmV4cAkyMDEzLTA1LTE5IDE2OjA2OjE5 LjQ1MjgxODA5MCArMDIwMAotKysrIGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVh ay1wcm9iZXMuZXhwCTIwMTMtMDUtMTkgMTY6MDc6NDkuNzMwNzcwMTM1ICswMjAwCi1AQCAtNjAs MTQgKzYwLDE1IEBAIGdkYl90ZXN0X211bHRpcGxlICJidCIgJHRlc3QgewotIGlmIHsgJHVzaW5n X3Byb2JlcyB9IHsKLSAgICAgIyBSdW4gdGlsIGl0IGxvYWRzIG91ciBsaWJyYXJ5Ci0gICAgIHNl dCB0ZXN0ICJydW4gdGlsIG91ciBsaWJyYXJ5IGxvYWRzIgotLSAgICBzZXQgbG9hZGVkX2xpYnJh cnkgMAotLSAgICB3aGlsZSB7ICEkbG9hZGVkX2xpYnJhcnkgfSB7Ci0rICAgIHNldCBub3RfbG9h ZGVkX2xpYnJhcnkgMQotKyAgICB3aGlsZSB7ICRub3RfbG9hZGVkX2xpYnJhcnkgfSB7Ci0rCXNl dCBub3RfbG9hZGVkX2xpYnJhcnkgMAotIAlnZGJfdGVzdF9tdWx0aXBsZSAiYyIgJHRlc3Qgewot IAkgICAgLXJlICJJbmZlcmlvciBsb2FkZWQgJGJpbmZpbGVfbGliXFxNLiokZ2RiX3Byb21wdCAk IiB7Ci0gCQlwYXNzICR0ZXN0Ci0tCQlzZXQgbG9hZGVkX2xpYnJhcnkgMQotIAkgICAgfQotIAkg ICAgLXJlICJTdG9wcGVkIGR1ZSB0byBzaGFyZWQgbGlicmFyeSBldmVudFxcTS4qJGdkYl9wcm9t cHQgJCIgewotKwkJc2V0IG5vdF9sb2FkZWRfbGlicmFyeSAxCi0gCSAgICB9Ci0gCX0KLSAgICAg fQoKZGlmZiAtLWdpdCBhL2dkYi11cHN0cmVhbS1mcmFtZWZpbHRlcnMtMW9mMi5wYXRjaCBiL2dk Yi11cHN0cmVhbS1mcmFtZWZpbHRlcnMtMW9mMi5wYXRjaAppbmRleCBkMGFiMTg4Li44MGEwZDQz IDEwMDY0NAotLS0gYS9nZGItdXBzdHJlYW0tZnJhbWVmaWx0ZXJzLTFvZjIucGF0Y2gKKysrIGIv Z2RiLXVwc3RyZWFtLWZyYW1lZmlsdGVycy0xb2YyLnBhdGNoCkBAIC01Nyw4ICs1Nyw4IEBAIGh0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDUvbXNnMDAwODQuaHRtbAogIAkq IHN5bWZpbGUuYyAoc3ltc19mcm9tX29iamZpbGVfMSk6IERlbGV0ZSBhcmdzIG9mZnNldHMsIG51 bV9vZmZzZXRzLgogSW5kZXg6IGdkYi03LjYvZ2RiL01ha2VmaWxlLmluCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNi5vcmlnL2dkYi9NYWtlZmlsZS5pbgkyMDEzLTA1LTIwIDIyOjIzOjM2Ljc0ODIx NTE0NiArMDIwMAotKysrIGdkYi03LjYvZ2RiL01ha2VmaWxlLmluCTIwMTMtMDUtMjAgMjI6MjU6 NTIuMDk2MTY1NzczICswMjAwCistLS0gZ2RiLTcuNi5vcmlnL2dkYi9NYWtlZmlsZS5pbgkyMDEz LTA2LTEwIDE0OjMxOjAyLjcwNDA4NDY2MyArMDIwMAorKysrIGdkYi03LjYvZ2RiL01ha2VmaWxl LmluCTIwMTMtMDYtMTAgMTQ6MzE6MDguMzUxMDgyNDQzICswMjAwCiBAQCAtMjg0LDYgKzI4NCw3 IEBAIFNVQkRJUl9QWVRIT05fT0JTID0gXAogIAlweS1leGl0ZWRldmVudC5vIFwKICAJcHktZmlu aXNoYnJlYWtwb2ludC5vIFwKQEAgLTc1LDcgKzc1LDcgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL01h a2VmaWxlLmluCiAgCXB5dGhvbi9weS1mdW5jdGlvbi5jIFwKICAJcHl0aG9uL3B5LWdkYi1yZWFk bGluZS5jIFwKICAJcHl0aG9uL3B5LWluZmVyaW9yLmMgXAotQEAgLTIxMzUsNiArMjEzNywxMCBA QCBweS1mcmFtZS5vOiAkKHNyY2RpcikvcHl0aG9uL3B5LWZyYW1lLmMKK0BAIC0yMTc0LDYgKzIx NzYsMTAgQEAgcHktZnJhbWUubzogJChzcmNkaXIpL3B5dGhvbi9weS1mcmFtZS5jCiAgCSQoQ09N UElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LWZyYW1lLmMKICAJJChQ T1NUQ09NUElMRSkKICAKQEAgLTg4LDggKzg4LDggQEAgSW5kZXg6IGdkYi03LjYvZ2RiL01ha2Vm aWxlLmluCiAgCSQoUE9TVENPTVBJTEUpCiBJbmRleDogZ2RiLTcuNi9nZGIvTkVXUwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvTkVXUwkyMDEzLTA1LTIwIDIyOjIzOjM2Ljc0ODIx NTE0NiArMDIwMAotKysrIGdkYi03LjYvZ2RiL05FV1MJMjAxMy0wNS0yMCAyMjoyNTo1Mi4wOTcx NjU3NzIgKzAyMDAKKy0tLSBnZGItNy42Lm9yaWcvZ2RiL05FV1MJMjAxMy0wNi0xMCAxNDozMTow OC4zNTMwODI0NDIgKzAyMDAKKysrKyBnZGItNy42L2dkYi9ORVdTCTIwMTMtMDYtMTAgMTQ6MzE6 MjEuMjMwMDc3MzE5ICswMjAwCiBAQCAtNCw2ICs0LDEwIEBACiAgKiBOZXdseSBpbnN0YWxsZWQg JHByZWZpeC9iaW4vZ2NvcmUgYWN0cyBhcyBhIHNoZWxsIGludGVyZmFjZSBmb3IgdGhlCiAgICBH REIgY29tbWFuZCBnY29yZS4KQEAgLTk4LDEzICs5OCwxMyBAQCBJbmRleDogZ2RiLTcuNi9nZGIv TkVXUwogKwogKyAgKiogRnJhbWUgZmlsdGVycyBhbmQgZnJhbWUgZGVjb3JhdG9ycyBoYXZlIGJl ZW4gYWRkZWQuCiArCi0gKioqIENoYW5nZXMgaW4gR0RCIDcuNgorICogTmV3IHJlbW90ZSBwYWNr ZXRzCiAgCi0gKiBUYXJnZXQgcmVjb3JkIGhhcyBiZWVuIHJlbmFtZWQgdG8gcmVjb3JkLWZ1bGwu CisgcVhmZXI6bGlicmFyaWVzLXN2cjQ6cmVhZCdzIGFubmV4CiBJbmRleDogZ2RiLTcuNi9nZGIv c3RhY2suYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvc3RhY2suYwkyMDEzLTA1 LTIwIDIyOjIzOjM2Ljc0ODIxNTE0NiArMDIwMAotKysrIGdkYi03LjYvZ2RiL3N0YWNrLmMJMjAx My0wNS0yMCAyMjoyNTo1Mi4wOTgxNjU3NzIgKzAyMDAKKy0tLSBnZGItNy42Lm9yaWcvZ2RiL3N0 YWNrLmMJMjAxMy0wNi0xMCAxNDozMTowMi43MDkwODQ2NjEgKzAyMDAKKysrKyBnZGItNy42L2dk Yi9zdGFjay5jCTIwMTMtMDYtMTAgMTQ6MzE6MDguMzU0MDgyNDQxICswMjAwCiBAQCAtNTQsNiAr NTQsNyBAQAogIAogICNpbmNsdWRlICJwc3ltdGFiLmgiCkBAIC0zMjksOCArMzI5LDggQEAgSW5k ZXg6IGdkYi03LjYvZ2RiL3N0YWNrLmMKICAgICAgewogSW5kZXg6IGdkYi03LjYvZ2RiL2RhdGEt ZGlyZWN0b3J5L01ha2VmaWxlLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9k YXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgkyMDEzLTA1LTIwIDIyOjIzOjM2Ljc0ODIxNTE0NiAr MDIwMAotKysrIGdkYi03LjYvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCTIwMTMtMDUt MjAgMjI6MjU6NTIuMDk4MTY1NzcyICswMjAwCistLS0gZ2RiLTcuNi5vcmlnL2dkYi9kYXRhLWRp cmVjdG9yeS9NYWtlZmlsZS5pbgkyMDEzLTA2LTEwIDE0OjMxOjAyLjcxMDA4NDY2MCArMDIwMAor KysrIGdkYi03LjYvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCTIwMTMtMDYtMTAgMTQ6 MzE6MDguMzU1MDgyNDQxICswMjAwCiBAQCAtNTMsNyArNTMsMTEgQEAgUFlUSE9OX0RJUiA9IHB5 dGhvbgogIFBZVEhPTl9JTlNUQUxMX0RJUiA9ICQoREVTVERJUikkKEdEQl9EQVRBRElSKS8kKFBZ VEhPTl9ESVIpCiAgUFlUSE9OX0ZJTEVTID0gXApAQCAtMzQ1LDkgKzM0NSw5IEBAIEluZGV4OiBn ZGItNy42L2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgogIAlnZGIvY29tbWFuZC90eXBl X3ByaW50ZXJzLnB5IFwKIEluZGV4OiBnZGItNy42L2dkYi9kb2MvZ2RiLnRleGluZm8KID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEzLTA1LTIwIDIy OjIzOjM2Ljc0ODIxNTE0NiArMDIwMAotKysrIGdkYi03LjYvZ2RiL2RvYy9nZGIudGV4aW5mbwky MDEzLTA1LTIwIDIyOjI1OjUyLjExMDE2NTc2NyArMDIwMAotQEAgLTY0NTMsNiArNjQ1Myw3IEBA IGN1cnJlbnRseSBleGVjdXRpbmcgZnJhbWUgYW5kIGRlc2NyaWJlcworLS0tIGdkYi03LjYub3Jp Zy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTMtMDYtMTAgMTQ6MzE6MDIuNzI3MDg0NjU0ICswMjAw CisrKysgZ2RiLTcuNi9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTMtMDYtMTAgMTQ6MzE6MDguMzY0 MDgyNDM4ICswMjAwCitAQCAtNjQ1OSw2ICs2NDU5LDcgQEAgY3VycmVudGx5IGV4ZWN1dGluZyBm cmFtZSBhbmQgZGVzY3JpYmVzCiAgQG1lbnUKICAqIEZyYW1lczo6ICAgICAgICAgICAgICAgICAg ICAgIFN0YWNrIGZyYW1lcwogICogQmFja3RyYWNlOjogICAgICAgICAgICAgICAgICAgQmFja3Ry YWNlcwpAQCAtMzU1LDcgKzM1NSw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9kb2MvZ2RiLnRleGlu Zm8KICAqIFNlbGVjdGlvbjo6ICAgICAgICAgICAgICAgICAgIFNlbGVjdGluZyBhIGZyYW1lCiAg KiBGcmFtZSBJbmZvOjogICAgICAgICAgICAgICAgICBJbmZvcm1hdGlvbiBvbiBhIGZyYW1lCiAg Ci1AQCAtNjU0MCw2ICs2NTQxLDcgQEAgbGluZSBwZXIgZnJhbWUsIGZvciBtYW55IGZyYW1lcywg c3RhcnRpbgorQEAgLTY1NDYsNiArNjU0Nyw3IEBAIGxpbmUgcGVyIGZyYW1lLCBmb3IgbWFueSBm cmFtZXMsIHN0YXJ0aW4KICBmcmFtZSAoZnJhbWUgemVybyksIGZvbGxvd2VkIGJ5IGl0cyBjYWxs ZXIgKGZyYW1lIG9uZSksIGFuZCBvbiB1cCB0aGUKICBzdGFjay4KICAKQEAgLTM2Myw3ICszNjMs NyBAQCBJbmRleDogZ2RiLTcuNi9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQHRhYmxlIEBjb2RlCiAg QGtpbmRleCBiYWNrdHJhY2UKICBAa2luZGV4IGJ0IEByeyhAY29kZXtiYWNrdHJhY2V9KX0KLUBA IC02NTY1LDYgKzY1NjcsMTkgQEAgU2ltaWxhciwgYnV0IHByaW50IG9ubHkgdGhlIG91dGVybW9z dCBAdgorQEAgLTY1NzEsNiArNjU3MywxOSBAQCBTaW1pbGFyLCBidXQgcHJpbnQgb25seSB0aGUg b3V0ZXJtb3N0IEB2CiAgQGl0ZW14IGJ0IGZ1bGwgLUB2YXJ7bn0KICBQcmludCB0aGUgdmFsdWVz IG9mIHRoZSBsb2NhbCB2YXJpYWJsZXMgYWxzby4gIEB2YXJ7bn0gc3BlY2lmaWVzIHRoZQogIG51 bWJlciBvZiBmcmFtZXMgdG8gcHJpbnQsIGFzIGRlc2NyaWJlZCBhYm92ZS4KQEAgLTM4Myw3ICsz ODMsNyBAQCBJbmRleDogZ2RiLTcuNi9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGVuZCB0YWJsZQog IAogIEBraW5kZXggd2hlcmUKLUBAIC02NzE0LDYgKzY3MjksMTQ5IEBAIERpc3BsYXkgYW4gYWJz b2x1dGUgZmlsZW5hbWUuCitAQCAtNjcyMCw2ICs2NzM1LDE0OSBAQCBEaXNwbGF5IGFuIGFic29s dXRlIGZpbGVuYW1lLgogIFNob3cgdGhlIGN1cnJlbnQgd2F5IHRvIGRpc3BsYXkgZmlsZW5hbWVz LgogIEBlbmQgdGFibGUKICAKQEAgLTUzMyw3ICs1MzMsNyBAQCBJbmRleDogZ2RiLTcuNi9nZGIv ZG9jL2dkYi50ZXhpbmZvCiAgQG5vZGUgU2VsZWN0aW9uCiAgQHNlY3Rpb24gU2VsZWN0aW5nIGEg RnJhbWUKICAKLUBAIC0yMzA2NSw2ICsyMzIyMyw5IEBAIHNpdHVhdGlvbiwgYSBQeXRob24gQGNv ZGV7S2V5Ym9hcmRJbnRlcnIKK0BAIC0yMzEwMCw2ICsyMzI1OCw5IEBAIHNpdHVhdGlvbiwgYSBQ eXRob24gQGNvZGV7S2V5Ym9hcmRJbnRlcnIKICAqIFNlbGVjdGluZyBQcmV0dHktUHJpbnRlcnM6 OiAgIEhvdyBHREIgY2hvb3NlcyBhIHByZXR0eS1wcmludGVyLgogICogV3JpdGluZyBhIFByZXR0 eS1QcmludGVyOjogICAgV3JpdGluZyBhIFByZXR0eS1QcmludGVyLgogICogVHlwZSBQcmludGlu ZyBBUEk6OgkJUHJldHR5LXByaW50aW5nIHR5cGVzLgpAQCAtNTQzLDcgKzU0Myw3IEBAIEluZGV4 OiBnZGItNy42L2dkYi9kb2MvZ2RiLnRleGluZm8KICAqIEluZmVyaW9ycyBJbiBQeXRob246OiAg ICAgICAgIFB5dGhvbiByZXByZXNlbnRhdGlvbiBvZiBpbmZlcmlvcnMgKHByb2Nlc3NlcykKICAq IEV2ZW50cyBJbiBQeXRob246OiAgICAgICAgICAgIExpc3RlbmluZyBmb3IgZXZlbnRzIGZyb20g QHZhbHVle0dEQk59LgogICogVGhyZWFkcyBJbiBQeXRob246OiAgICAgICAgICAgQWNjZXNzaW5n IGluZmVyaW9yIHRocmVhZHMgZnJvbSBQeXRob24uCi1AQCAtMjQ0MTUsNiArMjQ1NzYsNjM2IEBA IGRvbmUgdGhlbiB0eXBlIHByaW50ZXJzIHdvdWxkIGhhdmUgdG8gbWEKK0BAIC0yNDQ1MCw2ICsy NDYxMSw2MzYgQEAgZG9uZSB0aGVuIHR5cGUgcHJpbnRlcnMgd291bGQgaGF2ZSB0byBtYQogIG9y ZGVyIHRvIGF2b2lkIGhvbGRpbmcgaW5mb3JtYXRpb24gdGhhdCBjb3VsZCBiZWNvbWUgc3RhbGUg YXMgdGhlCiAgaW5mZXJpb3IgY2hhbmdlZC4KICAKQEAgLTExODAsNyArMTE4MCw3IEBAIEluZGV4 OiBnZGItNy42L2dkYi9kb2MvZ2RiLnRleGluZm8KICBAbm9kZSBJbmZlcmlvcnMgSW4gUHl0aG9u CiAgQHN1YnN1YnNlY3Rpb24gSW5mZXJpb3JzIEluIFB5dGhvbgogIEBjaW5kZXggaW5mZXJpb3Jz IGluIFB5dGhvbgotQEAgLTI1MjQ1LDYgKzI2MDM2LDExIEBAIFRoZSBAY29kZXt0eXBlX3ByaW50 ZXJzfSBhdHRyaWJ1dGUgaXMgYQorQEAgLTI1MjgwLDYgKzI2MDcxLDExIEBAIFRoZSBAY29kZXt0 eXBlX3ByaW50ZXJzfSBhdHRyaWJ1dGUgaXMgYQogIEB4cmVme1R5cGUgUHJpbnRpbmcgQVBJfSwg Zm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgQGVuZCBkZWZ2YXIKICAKQEAgLTExOTIsNyArMTE5Miw3 IEBAIEluZGV4OiBnZGItNy42L2dkYi9kb2MvZ2RiLnRleGluZm8KICBAbm9kZSBPYmpmaWxlcyBJ biBQeXRob24KICBAc3Vic3Vic2VjdGlvbiBPYmpmaWxlcyBJbiBQeXRob24KICAKLUBAIC0yNTI5 NSw2ICsyNjA5MSwxMSBAQCBUaGUgQGNvZGV7dHlwZV9wcmludGVyc30gYXR0cmlidXRlIGlzIGEK K0BAIC0yNTMzMCw2ICsyNjEyNiwxMSBAQCBUaGUgQGNvZGV7dHlwZV9wcmludGVyc30gYXR0cmli dXRlIGlzIGEKICBAeHJlZntUeXBlIFByaW50aW5nIEFQSX0sIGZvciBtb3JlIGluZm9ybWF0aW9u LgogIEBlbmQgZGVmdmFyCiAgCkBAIC0xMjA0LDcgKzEyMDQsNyBAQCBJbmRleDogZ2RiLTcuNi9n ZGIvZG9jL2dkYi50ZXhpbmZvCiAgQSBAY29kZXtnZGIuT2JqZmlsZX0gb2JqZWN0IGhhcyB0aGUg Zm9sbG93aW5nIG1ldGhvZHM6CiAgCiAgQGRlZnVuIE9iamZpbGUuaXNfdmFsaWQgKCkKLUBAIC0y NjMxMyw3ICsyNzExNCw3IEBAIE5vICAgICBteS1mb28tcHJldHR5LXByaW50ZXJzLnB5CitAQCAt MjYzNDgsNyArMjcxNDksNyBAQCBObyAgICAgbXktZm9vLXByZXR0eS1wcmludGVycy5weQogIFdo ZW4gcmVhZGluZyBhbiBhdXRvLWxvYWRlZCBmaWxlLCBAdmFsdWV7R0RCTn0gc2V0cyB0aGUKICBA ZGZue2N1cnJlbnQgb2JqZmlsZX0uICBUaGlzIGlzIGF2YWlsYWJsZSB2aWEgdGhlIEBjb2Rle2dk Yi5jdXJyZW50X29iamZpbGV9CiAgZnVuY3Rpb24gKEBweHJlZntPYmpmaWxlcyBJbiBQeXRob259 KS4gIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IKQEAgLTEyMTMsNyArMTIxMyw3IEBAIEluZGV4OiBn ZGItNy42L2dkYi9kb2MvZ2RiLnRleGluZm8KICAKICBAbWVudQogICogb2JqZmlsZS1nZGIucHkg ZmlsZTo6ICAgICAgICAgIFRoZSBAZmlsZXtAdmFye29iamZpbGV9LWdkYi5weX0gZmlsZQotQEAg LTMwMTg0LDYgKzMwOTg1LDIyIEBAIElzIHRoaXMgZ29pbmcgYXdheT8/Pz8KK0BAIC0zMDIxOSw2 ICszMTAyMCwyMiBAQCBJcyB0aGlzIGdvaW5nIGF3YXk/Pz8/CiAgQG5vZGUgR0RCL01JIFN0YWNr IE1hbmlwdWxhdGlvbgogIEBzZWN0aW9uIEBzY3tnZGIvbWl9IFN0YWNrIE1hbmlwdWxhdGlvbiBD b21tYW5kcwogIApAQCAtMTIzNiw3ICsxMjM2LDcgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL2RvYy9n ZGIudGV4aW5mbwogIAogIEBzdWJoZWFkaW5nIFRoZSBAY29kZXstc3RhY2staW5mby1mcmFtZX0g Q29tbWFuZAogIEBmaW5kZXggLXN0YWNrLWluZm8tZnJhbWUKLUBAIC0zMDI1MSwxMyArMzEwNjgs MTQgQEAgRm9yIGEgc3RhY2sgd2l0aCBmcmFtZSBsZXZlbHMgMCB0aHJvdWdoCitAQCAtMzAyODYs MTMgKzMxMTAzLDE0IEBAIEZvciBhIHN0YWNrIHdpdGggZnJhbWUgbGV2ZWxzIDAgdGhyb3VnaAog IChnZGIpCiAgQGVuZCBzbWFsbGV4YW1wbGUKICAKQEAgLTEyNTIsNyArMTI1Miw3IEBAIEluZGV4 OiBnZGItNy42L2dkYi9kb2MvZ2RiLnRleGluZm8KICAgICAgWyBAdmFye2xvdy1mcmFtZX0gQHZh cntoaWdoLWZyYW1lfSBdCiAgQGVuZCBzbWFsbGV4YW1wbGUKICAKLUBAIC0zMDI3NCw3ICszMTA5 Miw5IEBAIElmIEB2YXJ7cHJpbnQtdmFsdWVzfSBpcyAwIG9yIEBjb2Rley0tbm8KK0BAIC0zMDMw OSw3ICszMTEyNyw5IEBAIElmIEB2YXJ7cHJpbnQtdmFsdWVzfSBpcyAwIG9yIEBjb2Rley0tbm8K ICB0aGUgdmFyaWFibGVzOyBpZiBpdCBpcyAxIG9yIEBjb2Rley0tYWxsLXZhbHVlc30sIHByaW50 IGFsc28gdGhlaXIKICB2YWx1ZXM7IGFuZCBpZiBpdCBpcyAyIG9yIEBjb2Rley0tc2ltcGxlLXZh bHVlc30sIHByaW50IHRoZSBuYW1lLAogIHR5cGUgYW5kIHZhbHVlIGZvciBzaW1wbGUgZGF0YSB0 eXBlcywgYW5kIHRoZSBuYW1lIGFuZCB0eXBlIGZvciBhcnJheXMsCkBAIC0xMjYzLDcgKzEyNjMs NyBAQCBJbmRleDogZ2RiLTcuNi9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgCiAgVXNlIG9mIHRoaXMg Y29tbWFuZCB0byBvYnRhaW4gYXJndW1lbnRzIGluIGEgc2luZ2xlIGZyYW1lIGlzCiAgZGVwcmVj YXRlZCBpbiBmYXZvciBvZiB0aGUgQHNhbXB7LXN0YWNrLWxpc3QtdmFyaWFibGVzfSBjb21tYW5k LgotQEAgLTMwMzQ1LDEzICszMTE2NSwxNCBAQCBhcmdzPVtAe25hbWU9ImludGFyZyIsdmFsdWU9 IjIiQH0sCitAQCAtMzAzODAsMTMgKzMxMjAwLDE0IEBAIGFyZ3M9W0B7bmFtZT0iaW50YXJnIix2 YWx1ZT0iMiJAfSwKICBAYyBAc3ViaGVhZGluZyAtc3RhY2stbGlzdC1leGNlcHRpb24taGFuZGxl cnMKICAKICAKQEAgLTEyNzksNyArMTI3OSw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9kb2MvZ2Ri LnRleGluZm8KICBAZW5kIHNtYWxsZXhhbXBsZQogIAogIExpc3QgdGhlIGZyYW1lcyBjdXJyZW50 bHkgb24gdGhlIHN0YWNrLiAgRm9yIGVhY2ggZnJhbWUgaXQgZGlzcGxheXMgdGhlCi1AQCAtMzAz ODEsNyArMzEyMDIsOSBAQCBsZXZlbHMgYXJlIGJldHdlZW4gdGhlIHR3byBhcmd1bWVudHMgKGlu CitAQCAtMzA0MTYsNyArMzEyMzcsOSBAQCBsZXZlbHMgYXJlIGJldHdlZW4gdGhlIHR3byBhcmd1 bWVudHMgKGluCiAgYXJlIGVxdWFsLCBpdCBzaG93cyB0aGUgc2luZ2xlIGZyYW1lIGF0IHRoZSBj b3JyZXNwb25kaW5nIGxldmVsLiAgSXQgaXMKICBhbiBlcnJvciBpZiBAdmFye2xvdy1mcmFtZX0g aXMgbGFyZ2VyIHRoYW4gdGhlIGFjdHVhbCBudW1iZXIgb2YKICBmcmFtZXMuICBPbiB0aGUgb3Ro ZXIgaGFuZCwgQHZhcntoaWdoLWZyYW1lfSBtYXkgYmUgbGFyZ2VyIHRoYW4gdGhlCkBAIC0xMjkw LDcgKzEyOTAsNyBAQCBJbmRleDogZ2RiLTcuNi9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgCiAgQHN1 YnN1YmhlYWRpbmcgQHZhbHVle0dEQk59IENvbW1hbmQKICAKLUBAIC0zMDQ1MSwxMSArMzEyNzQs MTIgQEAgU2hvdyBhIHNpbmdsZSBmcmFtZToKK0BAIC0zMDQ4NiwxMSArMzEzMDksMTIgQEAgU2hv dyBhIHNpbmdsZSBmcmFtZToKICAKICBAc3ViaGVhZGluZyBUaGUgQGNvZGV7LXN0YWNrLWxpc3Qt bG9jYWxzfSBDb21tYW5kCiAgQGZpbmRleCAtc3RhY2stbGlzdC1sb2NhbHMKQEAgLTEzMDQsNyAr MTMwNCw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9kb2MvZ2RiLnRleGluZm8KICBAZW5kIHNtYWxs ZXhhbXBsZQogIAogIERpc3BsYXkgdGhlIGxvY2FsIHZhcmlhYmxlIG5hbWVzIGZvciB0aGUgc2Vs ZWN0ZWQgZnJhbWUuICBJZgotQEAgLTMwNDY2LDcgKzMxMjkwLDggQEAgdHlwZSBhbmQgdmFsdWUg Zm9yIHNpbXBsZSBkYXRhIHR5cGVzLCBhbgorQEAgLTMwNTAxLDcgKzMxMzI1LDggQEAgdHlwZSBh bmQgdmFsdWUgZm9yIHNpbXBsZSBkYXRhIHR5cGVzLCBhbgogIHN0cnVjdHVyZXMgYW5kIHVuaW9u cy4gIEluIHRoaXMgbGFzdCBjYXNlLCBhIGZyb250ZW5kIGNhbiBpbW1lZGlhdGVseQogIGRpc3Bs YXkgdGhlIHZhbHVlIG9mIHNpbXBsZSBkYXRhIHR5cGVzIGFuZCBjcmVhdGUgdmFyaWFibGUgb2Jq ZWN0cyBmb3IKICBvdGhlciBkYXRhIHR5cGVzIHdoZW4gdGhlIHVzZXIgd2lzaGVzIHRvIGV4cGxv cmUgdGhlaXIgdmFsdWVzIGluCkBAIC0xMzE0LDcgKzEzMTQsNyBAQCBJbmRleDogZ2RiLTcuNi9n ZGIvZG9jL2dkYi50ZXhpbmZvCiAgCiAgVGhpcyBjb21tYW5kIGlzIGRlcHJlY2F0ZWQgaW4gZmF2 b3Igb2YgdGhlCiAgQHNhbXB7LXN0YWNrLWxpc3QtdmFyaWFibGVzfSBjb21tYW5kLgotQEAgLTMw NDkxLDEzICszMTMxNiwxNCBAQCBUaGlzIGNvbW1hbmQgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBv ZiB0CitAQCAtMzA1MjYsMTMgKzMxMzUxLDE0IEBAIFRoaXMgY29tbWFuZCBpcyBkZXByZWNhdGVk IGluIGZhdm9yIG9mIHQKICAoZ2RiKQogIEBlbmQgc21hbGxleGFtcGxlCiAgCkBAIC0xMzMwLDcg KzEzMzAsNyBAQCBJbmRleDogZ2RiLTcuNi9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGVuZCBzbWFs bGV4YW1wbGUKICAKICBEaXNwbGF5IHRoZSBuYW1lcyBvZiBsb2NhbCB2YXJpYWJsZXMgYW5kIGZ1 bmN0aW9uIGFyZ3VtZW50cyBmb3IgdGhlIHNlbGVjdGVkIGZyYW1lLiAgSWYKLUBAIC0zMDUwNSw3 ICszMTMzMSw4IEBAIERpc3BsYXkgdGhlIG5hbWVzIG9mIGxvY2FsIHZhcmlhYmxlcyBhbmQKK0BA IC0zMDU0MCw3ICszMTM2Niw4IEBAIERpc3BsYXkgdGhlIG5hbWVzIG9mIGxvY2FsIHZhcmlhYmxl cyBhbmQKICB0aGUgdmFyaWFibGVzOyBpZiBpdCBpcyAxIG9yIEBjb2Rley0tYWxsLXZhbHVlc30s IHByaW50IGFsc28gdGhlaXIKICB2YWx1ZXM7IGFuZCBpZiBpdCBpcyAyIG9yIEBjb2Rley0tc2lt cGxlLXZhbHVlc30sIHByaW50IHRoZSBuYW1lLAogIHR5cGUgYW5kIHZhbHVlIGZvciBzaW1wbGUg ZGF0YSB0eXBlcywgYW5kIHRoZSBuYW1lIGFuZCB0eXBlIGZvciBhcnJheXMsCkBAIC0xMzQyLDgg KzEzNDIsOCBAQCBJbmRleDogZ2RiLTcuNi9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgCiBJbmRleDog Z2RiLTcuNi9nZGIvbWkvbWktY21kLXN0YWNrLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9y aWcvZ2RiL21pL21pLWNtZC1zdGFjay5jCTIwMTMtMDUtMjAgMjI6MjM6MzYuNzQ4MjE1MTQ2ICsw MjAwCi0rKysgZ2RiLTcuNi9nZGIvbWkvbWktY21kLXN0YWNrLmMJMjAxMy0wNS0yMCAyMjoyNTo1 Mi4xMTExNjU3NjcgKzAyMDAKKy0tLSBnZGItNy42Lm9yaWcvZ2RiL21pL21pLWNtZC1zdGFjay5j CTIwMTMtMDYtMTAgMTQ6MzE6MDIuNzMwMDg0NjUyICswMjAwCisrKysgZ2RiLTcuNi9nZGIvbWkv bWktY21kLXN0YWNrLmMJMjAxMy0wNi0xMCAxNDozMTowOC4zNjUwODI0MzcgKzAyMDAKIEBAIC0z MSw2ICszMSwxMCBAQAogICNpbmNsdWRlICJsYW5ndWFnZS5oIgogICNpbmNsdWRlICJ2YWxwcmlu dC5oIgpAQCAtMTY1NSw4ICsxNjU1LDggQEAgSW5kZXg6IGdkYi03LjYvZ2RiL21pL21pLWNtZC1z dGFjay5jCiAgLyogUHJpbnQgc2luZ2xlIGxvY2FsIG9yIGFyZ3VtZW50LiAgQVJHIG11c3QgYmUg YWxyZWFkeSByZWFkIGluLiAgRm9yCiBJbmRleDogZ2RiLTcuNi9nZGIvbWkvbWktY21kcy5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9taS9taS1jbWRzLmMJMjAxMy0wNS0yMCAy MjoyMzozNi43NDgyMTUxNDYgKzAyMDAKLSsrKyBnZGItNy42L2dkYi9taS9taS1jbWRzLmMJMjAx My0wNS0yMCAyMjoyNTo1Mi4xMTExNjU3NjcgKzAyMDAKKy0tLSBnZGItNy42Lm9yaWcvZ2RiL21p L21pLWNtZHMuYwkyMDEzLTA2LTEwIDE0OjMxOjAyLjczMDA4NDY1MiArMDIwMAorKysrIGdkYi03 LjYvZ2RiL21pL21pLWNtZHMuYwkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2NTA4MjQzNyArMDIwMAog QEAgLTg2LDYgKzg2LDcgQEAgc3RhdGljIHN0cnVjdCBtaV9jbWQgbWlfY21kc1tdID0KICAJCSBt aV9jbWRfZGF0YV93cml0ZV9yZWdpc3Rlcl92YWx1ZXMpLAogICAgREVGX01JX0NNRF9NSSAoImVu YWJsZS10aW1pbmdzIiwgbWlfY21kX2VuYWJsZV90aW1pbmdzKSwKQEAgLTE2NjcsOCArMTY2Nyw4 IEBAIEluZGV4OiBnZGItNy42L2dkYi9taS9taS1jbWRzLmMKICAgIERFRl9NSV9DTURfTUkgKCJl bnZpcm9ubWVudC1wYXRoIiwgbWlfY21kX2Vudl9wYXRoKSwKIEluZGV4OiBnZGItNy42L2dkYi9t aS9taS1jbWRzLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL21pL21pLWNtZHMu aAkyMDEzLTA1LTIwIDIyOjIzOjM2Ljc0ODIxNTE0NiArMDIwMAotKysrIGdkYi03LjYvZ2RiL21p L21pLWNtZHMuaAkyMDEzLTA1LTIwIDIyOjI1OjUyLjExMTE2NTc2NyArMDIwMAorLS0tIGdkYi03 LjYub3JpZy9nZGIvbWkvbWktY21kcy5oCTIwMTMtMDYtMTAgMTQ6MzE6MDIuNzMwMDg0NjUyICsw MjAwCisrKysgZ2RiLTcuNi9nZGIvbWkvbWktY21kcy5oCTIwMTMtMDYtMTAgMTQ6MzE6MDguMzY1 MDgyNDM3ICswMjAwCiBAQCAtMTE4LDYgKzExOCw3IEBAIGV4dGVybiBtaV9jbWRfYXJndl9mdHlw ZSBtaV9jbWRfdmFyX3Nob3cKICBleHRlcm4gbWlfY21kX2FyZ3ZfZnR5cGUgbWlfY21kX3Zhcl9z aG93X2Zvcm1hdDsKICBleHRlcm4gbWlfY21kX2FyZ3ZfZnR5cGUgbWlfY21kX3Zhcl91cGRhdGU7 CkBAIC0xNjgwLDcgKzE2ODAsNyBAQCBJbmRleDogZ2RiLTcuNi9nZGIvbWkvbWktY21kcy5oCiBJ bmRleDogZ2RiLTcuNi9nZGIvcHl0aG9uL3B5LWZyYW1lZmlsdGVyLmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGIt Ny42L2dkYi9weXRob24vcHktZnJhbWVmaWx0ZXIuYwkyMDEzLTA1LTIwIDIyOjI2OjUzLjAyOTE0 MzA2OCArMDIwMAorKysrIGdkYi03LjYvZ2RiL3B5dGhvbi9weS1mcmFtZWZpbHRlci5jCTIwMTMt MDYtMTAgMTQ6MzE6MDguMzY2MDgyNDM3ICswMjAwCiBAQCAtMCwwICsxLDE1MjggQEAKICsvKiBQ eXRob24gZnJhbWUgZmlsdGVycwogKwpAQCAtMzIxMiw4ICszMjEyLDggQEAgSW5kZXg6IGdkYi03 LjYvZ2RiL3B5dGhvbi9weS1mcmFtZWZpbHRlci5jCiArfQogSW5kZXg6IGdkYi03LjYvZ2RiL3B5 dGhvbi9weS1vYmpmaWxlLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL3B5dGhv bi9weS1vYmpmaWxlLmMJMjAxMy0wNS0yMCAyMjoyMzozNi43NDgyMTUxNDYgKzAyMDAKLSsrKyBn ZGItNy42L2dkYi9weXRob24vcHktb2JqZmlsZS5jCTIwMTMtMDUtMjAgMjI6MjU6NTIuMTEyMTY1 NzY3ICswMjAwCistLS0gZ2RiLTcuNi5vcmlnL2dkYi9weXRob24vcHktb2JqZmlsZS5jCTIwMTMt MDYtMTAgMTQ6MzE6MDIuNzMxMDg0NjUyICswMjAwCisrKysgZ2RiLTcuNi9nZGIvcHl0aG9uL3B5 LW9iamZpbGUuYwkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2NjA4MjQzNyArMDIwMAogQEAgLTMzLDYg KzMzLDggQEAgdHlwZWRlZiBzdHJ1Y3QKICAgIC8qIFRoZSBwcmV0dHktcHJpbnRlciBsaXN0IG9m IGZ1bmN0aW9ucy4gICovCiAgICBQeU9iamVjdCAqcHJpbnRlcnM7CkBAIC0zMzE4LDggKzMzMTgs OCBAQCBJbmRleDogZ2RiLTcuNi9nZGIvcHl0aG9uL3B5LW9iamZpbGUuYwogICAgeyBOVUxMIH0K IEluZGV4OiBnZGItNy42L2dkYi9weXRob24vcHktcHJvZ3NwYWNlLmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy42Lm9yaWcvZ2RiL3B5dGhvbi9weS1wcm9nc3BhY2UuYwkyMDEzLTA1LTIwIDIyOjIz OjM2Ljc0ODIxNTE0NiArMDIwMAotKysrIGdkYi03LjYvZ2RiL3B5dGhvbi9weS1wcm9nc3BhY2Uu YwkyMDEzLTA1LTIwIDIyOjI1OjUyLjExMjE2NTc2NyArMDIwMAorLS0tIGdkYi03LjYub3JpZy9n ZGIvcHl0aG9uL3B5LXByb2dzcGFjZS5jCTIwMTMtMDYtMTAgMTQ6MzE6MDIuNzMxMDg0NjUyICsw MjAwCisrKysgZ2RiLTcuNi9nZGIvcHl0aG9uL3B5LXByb2dzcGFjZS5jCTIwMTMtMDYtMTAgMTQ6 MzE6MDguMzY2MDgyNDM3ICswMjAwCiBAQCAtMzUsNiArMzUsOCBAQCB0eXBlZGVmIHN0cnVjdAog ICAgLyogVGhlIHByZXR0eS1wcmludGVyIGxpc3Qgb2YgZnVuY3Rpb25zLiAgKi8KICAgIFB5T2Jq ZWN0ICpwcmludGVyczsKQEAgLTM0MjQsOCArMzQyNCw4IEBAIEluZGV4OiBnZGItNy42L2dkYi9w eXRob24vcHktcHJvZ3NwYWNlLmMKICAgIHsgTlVMTCB9CiBJbmRleDogZ2RiLTcuNi9nZGIvcHl0 aG9uL3B5LXV0aWxzLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL3B5dGhvbi9w eS11dGlscy5jCTIwMTMtMDUtMjAgMjI6MjM6MzYuNzQ4MjE1MTQ2ICswMjAwCi0rKysgZ2RiLTcu Ni9nZGIvcHl0aG9uL3B5LXV0aWxzLmMJMjAxMy0wNS0yMCAyMjoyNTo1Mi4xMTMxNjU3NjYgKzAy MDAKKy0tLSBnZGItNy42Lm9yaWcvZ2RiL3B5dGhvbi9weS11dGlscy5jCTIwMTMtMDYtMTAgMTQ6 MzE6MDIuNzMyMDg0NjUyICswMjAwCisrKysgZ2RiLTcuNi9nZGIvcHl0aG9uL3B5LXV0aWxzLmMJ MjAxMy0wNi0xMCAxNDozMTowOC4zNjYwODI0MzcgKzAyMDAKIEBAIC00OCw2ICs0OCwyOCBAQCBt YWtlX2NsZWFudXBfcHlfZGVjcmVmIChQeU9iamVjdCAqcHkpCiAgICByZXR1cm4gbWFrZV9jbGVh bnVwIChweV9kZWNyZWYsICh2b2lkICopIHB5KTsKICB9CkBAIC0zNDU3LDggKzM0NTcsOCBAQCBJ bmRleDogZ2RiLTcuNi9nZGIvcHl0aG9uL3B5LXV0aWxzLmMKICAgICByZXR1cm5zIE5VTEwgd2l0 aCBhIHB5dGhvbiBleGNlcHRpb24gc2V0LgogSW5kZXg6IGdkYi03LjYvZ2RiL3B5dGhvbi9weXRo b24taW50ZXJuYWwuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvcHl0aG9uL3B5 dGhvbi1pbnRlcm5hbC5oCTIwMTMtMDUtMjAgMjI6MjM6MzYuNzQ4MjE1MTQ2ICswMjAwCi0rKysg Z2RiLTcuNi9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oCTIwMTMtMDUtMjAgMjI6MjU6NTIu MTEzMTY1NzY2ICswMjAwCistLS0gZ2RiLTcuNi5vcmlnL2dkYi9weXRob24vcHl0aG9uLWludGVy bmFsLmgJMjAxMy0wNi0xMCAxNDozMTowMi43MzIwODQ2NTIgKzAyMDAKKysrKyBnZGItNy42L2dk Yi9weXRob24vcHl0aG9uLWludGVybmFsLmgJMjAxMy0wNi0xMCAxNDozMTowOC4zNjcwODI0MzYg KzAyMDAKIEBAIC0yNTEsOSArMjUxLDExIEBAIFB5T2JqZWN0ICpmcmFtZV9pbmZvX3RvX2ZyYW1l X29iamVjdCAoc3QKICAKICBQeU9iamVjdCAqcHNwYWNlX3RvX3BzcGFjZV9vYmplY3QgKHN0cnVj dCBwcm9ncmFtX3NwYWNlICopOwpAQCAtMzQ4MSw4ICszNDgxLDggQEAgSW5kZXg6IGdkYi03LjYv Z2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAogIAkJCQkgICBjb25zdCBzdHJ1Y3QgbGFuZ3Vh Z2VfZGVmbiAqbGFuZ3VhZ2UpOwogSW5kZXg6IGdkYi03LjYvZ2RiL3B5dGhvbi9weXRob24uYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvcHl0aG9uL3B5dGhvbi5jCTIwMTMtMDUt MjAgMjI6MjM6MzYuNzQ4MjE1MTQ2ICswMjAwCi0rKysgZ2RiLTcuNi9nZGIvcHl0aG9uL3B5dGhv bi5jCTIwMTMtMDUtMjAgMjI6MjU6NTIuMTEzMTY1NzY2ICswMjAwCistLS0gZ2RiLTcuNi5vcmln L2dkYi9weXRob24vcHl0aG9uLmMJMjAxMy0wNi0xMCAxNDozMTowMi43MzIwODQ2NTIgKzAyMDAK KysrKyBnZGItNy42L2dkYi9weXRob24vcHl0aG9uLmMJMjAxMy0wNi0xMCAxNDozMTowOC4zNjcw ODI0MzYgKzAyMDAKIEBAIC0xNDQyLDYgKzE0NDIsMTUgQEAgZnJlZV90eXBlX3ByaW50ZXJzICh2 b2lkICphcmcpCiAgewogIH0KQEAgLTM1MDEsOCArMzUwMSw4IEBAIEluZGV4OiBnZGItNy42L2dk Yi9weXRob24vcHl0aG9uLmMKICAMCiBJbmRleDogZ2RiLTcuNi9nZGIvcHl0aG9uL3B5dGhvbi5o CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9weXRob24vcHl0aG9uLmgJMjAxMy0w NS0yMCAyMjoyMzozNi43NDgyMTUxNDYgKzAyMDAKLSsrKyBnZGItNy42L2dkYi9weXRob24vcHl0 aG9uLmgJMjAxMy0wNS0yMCAyMjoyNTo1Mi4xMTMxNjU3NjYgKzAyMDAKKy0tLSBnZGItNy42Lm9y aWcvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEzLTA2LTEwIDE0OjMxOjAyLjczMjA4NDY1MiArMDIw MAorKysrIGdkYi03LjYvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2 NzA4MjQzNiArMDIwMAogQEAgLTIxLDYgKzIxLDcgQEAKICAjZGVmaW5lIEdEQl9QWVRIT05fSAog IApAQCAtMzU5Myw3ICszNTkzLDcgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL3B5dGhvbi9weXRob24u aAogSW5kZXg6IGdkYi03LjYvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lRGVjb3JhdG9yLnB5CiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICsw MDAwCi0rKysgZ2RiLTcuNi9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVEZWNvcmF0b3IucHkJMjAx My0wNS0yMCAyMjoyNTo1Mi4xMTMxNjU3NjYgKzAyMDAKKysrKyBnZGItNy42L2dkYi9weXRob24v bGliL2dkYi9GcmFtZURlY29yYXRvci5weQkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2NzA4MjQzNiAr MDIwMAogQEAgLTAsMCArMSwyODUgQEAKICsjIENvcHlyaWdodCAoQykgMjAxMyBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTM4ODMsNyArMzg4Myw3IEBAIEluZGV4OiBnZGIt Ny42L2dkYi9weXRob24vbGliL2dkYi9GcmFtZURlY29yYXRvci5weQogSW5kZXg6IGdkYi03LjYv Z2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lSXRlcmF0b3IucHkKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy42L2dk Yi9weXRob24vbGliL2dkYi9GcmFtZUl0ZXJhdG9yLnB5CTIwMTMtMDUtMjAgMjI6MjU6NTIuMTE0 MTY1NzY2ICswMjAwCisrKysgZ2RiLTcuNi9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVJdGVyYXRv ci5weQkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2NzA4MjQzNiArMDIwMAogQEAgLTAsMCArMSw0NSBA QAogKyMgQ29weXJpZ2h0IChDKSAyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgog KwpAQCAtMzkzMyw3ICszOTMzLDcgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL3B5dGhvbi9saWIvZ2Ri L0ZyYW1lSXRlcmF0b3IucHkKIEluZGV4OiBnZGItNy42L2dkYi9weXRob24vbGliL2dkYi9mcmFt ZXMucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAw MDAwMDAgKzAwMDAKLSsrKyBnZGItNy42L2dkYi9weXRob24vbGliL2dkYi9mcmFtZXMucHkJMjAx My0wNS0yMCAyMjoyNTo1Mi4xMTQxNjU3NjYgKzAyMDAKKysrKyBnZGItNy42L2dkYi9weXRob24v bGliL2dkYi9mcmFtZXMucHkJMjAxMy0wNi0xMCAxNDozMTowOC4zNjgwODI0MzYgKzAyMDAKIEBA IC0wLDAgKzEsMjI5IEBACiArIyBGcmFtZS1maWx0ZXIgY29tbWFuZHMuCiArIyBDb3B5cmlnaHQg KEMpIDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC00MTY2LDggKzQxNjYs OCBAQCBJbmRleDogZ2RiLTcuNi9nZGIvcHl0aG9uL2xpYi9nZGIvZnJhbWVzLnB5CiArICAgIHJl dHVybiBzbGljZWQKIEluZGV4OiBnZGItNy42L2dkYi9weXRob24vbGliL2dkYi9fX2luaXRfXy5w eQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvcHl0aG9uL2xpYi9nZGIvX19pbml0 X18ucHkJMjAxMy0wNS0yMCAyMjoyMzozNi43NDgyMTUxNDYgKzAyMDAKLSsrKyBnZGItNy42L2dk Yi9weXRob24vbGliL2dkYi9fX2luaXRfXy5weQkyMDEzLTA1LTIwIDIyOjI1OjUyLjExNDE2NTc2 NiArMDIwMAorLS0tIGdkYi03LjYub3JpZy9nZGIvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkJ MjAxMy0wNi0xMCAxNDozMTowMi43MzMwODQ2NTEgKzAyMDAKKysrKyBnZGItNy42L2dkYi9weXRo b24vbGliL2dkYi9fX2luaXRfXy5weQkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2ODA4MjQzNiArMDIw MAogQEAgLTY3LDYgKzY3LDggQEAgcHJldHR5X3ByaW50ZXJzID0gW10KICAKICAjIEluaXRpYWwg dHlwZSBwcmludGVycy4KQEAgLTQxODAsNyArNDE4MCw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9w eXRob24vbGliL2dkYi9fX2luaXRfXy5weQogSW5kZXg6IGdkYi03LjYvZ2RiL3B5dGhvbi9saWIv Z2RiL2NvbW1hbmQvZnJhbWVfZmlsdGVycy5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkx OTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjYvZ2RiL3B5dGhv bi9saWIvZ2RiL2NvbW1hbmQvZnJhbWVfZmlsdGVycy5weQkyMDEzLTA1LTIwIDIyOjI1OjUyLjEx NDE2NTc2NiArMDIwMAorKysrIGdkYi03LjYvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvZnJh bWVfZmlsdGVycy5weQkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2ODA4MjQzNiArMDIwMAogQEAgLTAs MCArMSw0NjEgQEAKICsjIEZyYW1lLWZpbHRlciBjb21tYW5kcy4KICsjIENvcHlyaWdodCAoQykg MjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KQEAgLTQ2NDYsNyArNDY0Niw3IEBA IEluZGV4OiBnZGItNy42L2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2ZyYW1lX2ZpbHRlcnMu cHkKIEluZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZWZpbHRl ci1nZGIucHkuaW4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDow MC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS1mcmFtZWZpbHRlci1nZGIucHkuaW4JMjAxMy0wNS0yMCAyMjoyNTo1Mi4xMTQxNjU3NjYgKzAy MDAKKysrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZWZpbHRlci1n ZGIucHkuaW4JMjAxMy0wNi0xMCAxNDozMTowOC4zNjgwODI0MzYgKzAyMDAKIEBAIC0wLDAgKzEs NDggQEAKICsjIENvcHlyaWdodCAoQykgMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KICsKQEAgLTQ2OTksNyArNDY5OSw3IEBAIEluZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS1mcmFtZWZpbHRlci1nZGIucHkuaW4KIEluZGV4OiBnZGItNy42L2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZWZpbHRlci1taS5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0g L2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcu Ni9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWVmaWx0ZXItbWkuYwkyMDEzLTA1LTIw IDIyOjI1OjUyLjExNDE2NTc2NiArMDIwMAorKysrIGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LWZyYW1lZmlsdGVyLW1pLmMJMjAxMy0wNi0xMCAxNDozMTowOC4zNjgwODI0MzYg KzAyMDAKIEBAIC0wLDAgKzEsMTM4IEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdE QiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKQEAgLTQ4NDIsNyArNDg0Miw3IEBAIEluZGV4OiBnZGIt Ny42L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZWZpbHRlci1taS5jCiBJbmRleDog Z2RiLTcuNi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWVmaWx0ZXItbWkuZXhwCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICsw MDAwCi0rKysgZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWVmaWx0ZXIt bWkuZXhwCTIwMTMtMDUtMjAgMjI6MjU6NTIuMTE1MTY1NzY2ICswMjAwCisrKysgZ2RiLTcuNi9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWVmaWx0ZXItbWkuZXhwCTIwMTMtMDYtMTAg MTQ6MzE6MDguMzY4MDgyNDM2ICswMjAwCiBAQCAtMCwwICsxLDE3OSBAQAogKyMgQ29weXJpZ2h0 IChDKSAyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtNTAyNiw3ICs1 MDI2LDcgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1l ZmlsdGVyLW1pLmV4cAogSW5kZXg6IGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LWZyYW1lZmlsdGVyLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhv bi9weS1mcmFtZWZpbHRlci5jCTIwMTMtMDUtMjAgMjI6MjU6NTIuMTE1MTY1NzY2ICswMjAwCisr KysgZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWVmaWx0ZXIuYwkyMDEz LTA2LTEwIDE0OjMxOjA4LjM2OTA4MjQzNiArMDIwMAogQEAgLTAsMCArMSwxNTUgQEAKICsvKiBU aGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtNTE4 Niw3ICs1MTg2LDcgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LWZyYW1lZmlsdGVyLmMKIEluZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS1mcmFtZWZpbHRlci5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAw MDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1mcmFtZWZpbHRlci5leHAJMjAxMy0wNS0yMCAyMjoyNTo1Mi4xMTUxNjU3NjYgKzAy MDAKKysrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZWZpbHRlci5l eHAJMjAxMy0wNi0xMCAxNDozMTowOC4zNjkwODI0MzYgKzAyMDAKIEBAIC0wLDAgKzEsMjM5IEBA CiArIyBDb3B5cmlnaHQgKEMpIDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAr CkBAIC01NDMwLDcgKzU0MzAsNyBAQCBJbmRleDogZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktZnJhbWVmaWx0ZXIuZXhwCiBJbmRleDogZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2dk Yi5weXRob24vcHktZnJhbWVmaWx0ZXIucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3 MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy42L2dkYi90ZXN0c3Vp dGUvZ2RiLnB5dGhvbi9weS1mcmFtZWZpbHRlci5weQkyMDEzLTA1LTIwIDIyOjI1OjUyLjExNTE2 NTc2NiArMDIwMAorKysrIGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1l ZmlsdGVyLnB5CTIwMTMtMDYtMTAgMTQ6MzE6MDguMzY5MDgyNDM2ICswMjAwCiBAQCAtMCwwICsx LDExNyBAQAogKyMgQ29weXJpZ2h0IChDKSAyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgogKwoKZGlmZiAtLWdpdCBhL2dkYi5zcGVjIGIvZ2RiLnNwZWMKaW5kZXggOGExZDM4OC4u NWUyN2NhMiAxMDA2NDQKLS0tIGEvZ2RiLnNwZWMKKysrIGIvZ2RiLnNwZWMKQEAgLTM2LDcgKzM2 LDcgQEAgVmVyc2lvbjogNy42CiAKICMgVGhlIHJlbGVhc2UgYWx3YXlzIGNvbnRhaW5zIGEgbGVh ZGluZyByZXNlcnZlZCBudW1iZXIsIHN0YXJ0IGl0IGF0IDEuCiAjIGB1cHN0cmVhbScgaXMgbm90 IGEgcGFydCBvZiBgbmFtZScgdG8gc3RheSBmdWxseSBycG0gZGVwZW5kZW5jaWVzIGNvbXBhdGli bGUgZm9yIHRoZSB0ZXN0aW5nLgotUmVsZWFzZTogMzElez9kaXN0fQorUmVsZWFzZTogMzIlez9k aXN0fQogCiBMaWNlbnNlOiBHUEx2MysgYW5kIEdQTHYzKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQ THYyKyBhbmQgR1BMdjIrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMKyBhbmQgTEdQTHYyKyBhbmQg QlNEIGFuZCBQdWJsaWMgRG9tYWluCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVidWdnZXJzCkBAIC01 MDgsMTUgKzUwOCwxNiBAQCBQYXRjaDU3OTogZ2RiLTcuMi41MC1zcGFyYy1hZGQtd29ya2Fyb3Vu ZC10by1icm9rZW4tZGVidWctZmlsZXMucGF0Y2gKICMgRml4IGRsb3BlbiBvZiBsaWJwdGhyZWFk LnNvLCBwYXRjaGVkIGdsaWJjIHJlcXVpcmVkIChHYXJ5IEJlbnNvbiwgQlogNjY5NDMyKS4KICMg Rml4IGNyYXNoIHJlZ3Jlc3Npb24gZnJvbSB0aGUgZGxvcGVuIG9mIGxpYnB0aHJlYWQuc28gZml4 IChCWiA5MTE3MTIpLgogIyBGaXggcGVyZm9ybWFuY2UgcmVncmVzc2lvbiB3aGVuIGluZmVyaW9y IG9wZW5zIG1hbnkgbGlicmFyaWVzIChHYXJ5IEJlbnNvbikuCi0jPXB1c2gKLVBhdGNoNzE4OiBn ZGItZGxvcGVuLXN0YXAtcHJvYmUtMW9mNy5wYXRjaAotUGF0Y2g3MTk6IGdkYi1kbG9wZW4tc3Rh cC1wcm9iZS0yb2Y3LnBhdGNoCi1QYXRjaDcyMDogZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTNvZjcu cGF0Y2gKLVBhdGNoNzIxOiBnZGItZGxvcGVuLXN0YXAtcHJvYmUtNG9mNy5wYXRjaAotUGF0Y2g3 MjI6IGdkYi1kbG9wZW4tc3RhcC1wcm9iZS01b2Y3LnBhdGNoCi1QYXRjaDcyMzogZ2RiLWRsb3Bl bi1zdGFwLXByb2JlLTZvZjcucGF0Y2gKLVBhdGNoODIyOiBnZGItZGxvcGVuLXN0YXAtcHJvYmUt N29mNy5wYXRjaAotUGF0Y2g4Mjc6IGdkYi1kbG9wZW4tc3RhcC1wcm9iZS1maXh1cC5wYXRjaAor Iz1kcm9wCitQYXRjaDcxODogZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTFvZjkucGF0Y2gKK1BhdGNo NzE5OiBnZGItZGxvcGVuLXN0YXAtcHJvYmUtMm9mOS5wYXRjaAorUGF0Y2g3MjA6IGdkYi1kbG9w ZW4tc3RhcC1wcm9iZS0zb2Y5LnBhdGNoCitQYXRjaDcyMTogZ2RiLWRsb3Blbi1zdGFwLXByb2Jl LTRvZjkucGF0Y2gKK1BhdGNoNzIyOiBnZGItZGxvcGVuLXN0YXAtcHJvYmUtNW9mOS5wYXRjaAor UGF0Y2g3MjM6IGdkYi1kbG9wZW4tc3RhcC1wcm9iZS02b2Y5LnBhdGNoCitQYXRjaDgyMjogZ2Ri LWRsb3Blbi1zdGFwLXByb2JlLTdvZjkucGF0Y2gKK1BhdGNoODI3OiBnZGItZGxvcGVuLXN0YXAt cHJvYmUtOG9mOS5wYXRjaAorUGF0Y2g2MTk6IGdkYi1kbG9wZW4tc3RhcC1wcm9iZS05b2Y5LnBh dGNoCiAKICMgV29yayBhcm91bmQgUFIgbGliYy8xMzA5NyAibGludXgtdmRzby5zby4xIiB3YXJu aW5nIG1lc3NhZ2UuCiAjPXB1c2gKQEAgLTU3MCwxMSArNTcxLDE4IEBAIFBhdGNoODE4OiBnZGIt cmhiejc5NTQyNC1iaXRwb3MtbGF6eXZhbHVlLnBhdGNoCiBQYXRjaDgzMjogZ2RiLXJoYno5NDc1 NjQtZmluZHZhci1hc3NlcnRpb24tZnJhbWUtZmFpbGVkLXRlc3RjYXNlLnBhdGNoCiAKICMgRml4 IGdjb3JlIGZvciB2RFNPIChvbiBwcGM2NCkuCisjPWRyb3AKIFBhdGNoODM0OiBnZGItdmRzby1n Y29yZS5wYXRjaAogCiAjIEZpeCBuZWVkbGVzcyBleHBhbnNpb24gb2Ygbm9uLWdkYmluZGV4IHN5 bXRhYnMgKERvdWcgRXZhbnMpLgorIz1kcm9wCiBQYXRjaDgzNTogZ2RiLXBzeW10YWItZXhwYW5k LnBhdGNoCiAKKyMgRml4IEMrKyBsb29rdXBzIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gKERvdWcg RXZhbnMsIEJaIDk3MjY3NykuCisjPWRyb3AKK1BhdGNoODM4OiBnZGItY3h4LXBlcmZvcm1hbmNl LTFvZjIucGF0Y2gKK1BhdGNoODM5OiBnZGItY3h4LXBlcmZvcm1hbmNlLTJvZjIucGF0Y2gKKwog JWlmIDAleyE/cmhlbDoxfSB8fCAwJXs/cmhlbH0gPiA2CiAjIFJMX1NUQVRFX0ZFRE9SQV9HREIg d291bGQgbm90IGJlIGZvdW5kIGZvcjoKICMgUGF0Y2g2NDI6IGdkYi1yZWFkbGluZTYyLWFzay1t b3JlLXJoLnBhdGNoCkBAIC03ODMsOCArNzkxLDYgQEAgZmluZCAtbmFtZSAiKi5pbmZvKiJ8eGFy Z3Mgcm0gLWYKICVwYXRjaDIzMiAtcDEKICVwYXRjaDgyOCAtcDEKICVwYXRjaDgyOSAtcDEKLSVw YXRjaDgzNiAtcDEKLSVwYXRjaDgzNyAtcDEKICVwYXRjaDEgLXAxCiAlcGF0Y2gzIC1wMQogCkBA IC04ODEsNiArODg3LDcgQEAgZmluZCAtbmFtZSAiKi5pbmZvKiJ8eGFyZ3Mgcm0gLWYKICVwYXRj aDcyMyAtcDEKICVwYXRjaDgyMiAtcDEKICVwYXRjaDgyNyAtcDEKKyVwYXRjaDYxOSAtcDEKICVw YXRjaDYyNyAtcDEKICVwYXRjaDYzNCAtcDEKICVwYXRjaDY1MyAtcDEKQEAgLTg5OSw3ICs5MDYs MTUgQEAgZmluZCAtbmFtZSAiKi5pbmZvKiJ8eGFyZ3Mgcm0gLWYKICVwYXRjaDgzMiAtcDEKICVw YXRjaDgzNCAtcDEKICVwYXRjaDgzNSAtcDEKKyVwYXRjaDgzOCAtcDEKKyVwYXRjaDgzOSAtcDEK IAorJXBhdGNoODM2IC1wMQorJXBhdGNoODM3IC1wMQorJWlmIDAlez9zY2w6MX0KKyVwYXRjaDgz NiAtcDEgLVIKKyVwYXRjaDgzNyAtcDEgLVIKKyVlbmRpZgogJXBhdGNoMzkzIC1wMQogJWlmIDAl eyE/ZWw1OjF9IHx8IDAlez9zY2w6MX0KICVwYXRjaDM5MyAtcDEgLVIKQEAgLTE0MDIsNiArMTQx NywxMSBAQCBmaQogJWVuZGlmICMgMCV7IT9lbDU6MX0gfHwgIiV7X3RhcmdldF9jcHV9IiA9PSAi bm9hcmNoIgogCiAlY2hhbmdlbG9nCisqIE1vbiBKdW4gMTAgMjAxMyBKYW4gS3JhdG9jaHZpbCA8 amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjYtMzIuZmMxOQorLSBbc2NsXSBEaXNhYmxl IFB5dGhvbiBmcmFtZSBmaWx0ZXJzIG9uIHNjbC4KKy0gVXBkYXRlIGxpYnJhcmllcyBvcGVuaW5n IHBlcmZvcm1hbmNlIGZpeCBmcm9tIHVwc3RyZWFtLgorLSBGaXggQysrIGxvb2t1cHMgcGVyZm9y bWFuY2UgcmVncmVzc2lvbiAoRG91ZyBFdmFucywgQlogOTcyNjc3KS4KKwogKiBUdWUgTWF5IDI4 IDIwMTMgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy42LTMx LmZjMTkKIC0gW3BwY10gQmFja3BvcnQgaGFyZHdhcmUgd2F0Y2hwb2ludHMgZml4IChFZGp1bmlv ciBNYWNoYWRvLCBCWiA5Njc5MTUpLgogCg==