From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 9089 invoked from network); 9 Mar 2023 20:34:12 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 9 Mar 2023 20:34:12 -0000 Content-Type: multipart/mixed; boundary="===============0096494642866006947==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_virtuoso=3A_update_to_7=2E2=2E9?= To: ml@inbox.vuxu.org From: klarasm Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Thu, 09 Mar 2023 21:34:12 +0100 List-Id: Message-ID: <20230309203412.MlVY49-r8EWxfWIXMxGV7PHBH8jgFuKEbL6mQ7_iOMA@z> GitHub notification mails are now in MIME to allow UTF8. --===============0096494642866006947== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkga2xhcmFzbSBhZ2FpbnN0IG1hc3Rl ciBvbiB0aGUgdm9pZC1wYWNrYWdlcyByZXBvc2l0b3J5CgpodHRwczovL2dpdGh1Yi5jb20va2xh cmFzbS92b2lkLXBhY2thZ2VzIHZpcnR1b3NvLXVwZGF0ZQpodHRwczovL2dpdGh1Yi5jb20vdm9p ZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvNDI2NjYKCnZpcnR1b3NvOiB1cGRhdGUgdG8gNy4y LjkKIyMjIyBUZXN0aW5nIHRoZSBjaGFuZ2VzDQotIEkgdGVzdGVkIHRoZSBjaGFuZ2VzIGluIHRo aXMgUFI6IHNvbWUgdGVzdHMgYXJlIGZhaWxpbmcsIEkgZG9uJ3QgdXNlIHRoaXMgcGFja2FnZSBk aXJlY3RseQ0KDQpUaGlzIHBhY2thZ2UgaGFzIHNvbWUgd2VpcmRuZXNzIGluIHRoZSB0ZXN0IHN1 aXRlLiBJdCBmYWlscyB3aGVuIHJ1biBmcm9tIGAuL3hicHMtc3JjIC1LIHBrZyB2aXJ0dW9zb2Ag YnV0IHN1Y2NlZWRzIGlmIEkgZG8gYC4veGJwcy1zcmMgY2hyb290YCBhZnRlcndhcmRzIGFuZDoN CmBgYA0KbWFrZSBjbGVhbg0KLi9hdXRvZ2VuLnNoDQouL2NvbmZpZ3VyZQ0KbWFrZQ0KbWFrZSBj aGVjaw0KYGBgDQoNCkkgdHJpZWQgcmVwbGFjaW5nIHByZV9jb25maWd1cmUsIGRvX2NvbmZpZ3Vy ZSwgZG9fYnVpbGQgYW5kIGRvX2NoZWNrIHRvIGRvIHRoZSBzYW1lIHRoaW5nIGJ1dCBpdCBzdGls bCBmYWlscy4gTWF5YmUgSSdtIG1pc3Npbmcgc29tZSBkZXBlbmRlbmNpZXMgb3Igc29tZXRoaW5n Lg0KDQpgdGdyYXBocWxgIGlzIHRoZSBvbmx5IHRlc3QgZmFpbGluZzogDQpbdGdyYXBocWwub3V0 cHV0LmxvZ10oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9maWxl cy8xMDkyNjQzNS90Z3JhcGhxbC5vdXRwdXQubG9nKQ0KDQo8IS0tDQojIyMjIExvY2FsIGJ1aWxk IHRlc3RpbmcNCi0gSSBidWlsdCB0aGlzIFBSIGxvY2FsbHkgZm9yIG15IG5hdGl2ZSBhcmNoaXRl Y3R1cmUsIChBUkNILUxJQkMpDQotIEkgYnVpbHQgdGhpcyBQUiBsb2NhbGx5IGZvciB0aGVzZSBh cmNoaXRlY3R1cmVzIChpZiBzdXBwb3J0ZWQuIG1hcmsgY3Jvc3NidWlsZHMpOg0KICAtIGFhcmNo NjQtbXVzbA0KICAtIGFybXY3bA0KICAtIGFybXY2bC1tdXNsDQotLT4KCkEgcGF0Y2ggZmlsZSBm cm9tIGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC80MjY2 Ni5wYXRjaCBpcyBhdHRhY2hlZA== --===============0096494642866006947== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-virtuoso-update-42666.patch" RnJvbSBiNmViOWIzZTI5ZTBiZGQwODc0Mjg0NDg5YmIyOTZkZjYwMzhhMjgzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLbGFyYSBNb2RpbiA8a2xhcmFzbW9kaW5AZ21haWwuY29tPgpE YXRlOiBXZWQsIDEgRmViIDIwMjMgMTY6NDI6NDcgKzAxMDAKU3ViamVjdDogW1BBVENIXSB2aXJ0 dW9zbzogdXBkYXRlIHRvIDcuMi45Cgp0ZXN0IHN1aXRlIHdhcyBmYWlsaW5nIG9uIHJldmJ1bXAK Ci0gcmVtb3ZlIHBhdGNoZXMgdGhhdCBubyBsb25nZXIgYXBwbHkKLSBkaXNhYmxlIHN0YXRpYyBs aWJyYXJpZXMgYXMgd2UncmUgcmVtb3ZpbmcgdGhlbSBhZnRlciBpbnN0YWxsIGFueXdheQotIGRp c2FibGUgdGdyYXBocWwgdGVzdCAoZmFpbHMgaW5zaWRlIC4veGJwcy1zcmMpCi0gYWRkIHdoaWNo IHRvIGhvc3RtYWtlZGVwZW5kcwotIGFkZCBtaXNzaW5nIGNoZWNrZGVwZW5kcwotLS0KIC4uLi92 aXJ0dW9zby9wYXRjaGVzL2Fsd2F5cy1pZWVlLWZsb2F0cy5wYXRjaCB8ICAgNDYgLQogLi4uL3Bh dGNoZXMvZGlzYWJsZS10Z3JhcGhxbC10ZXN0LnBhdGNoICAgICAgIHwgICAxMiArCiAuLi4vdmly dHVvc28vcGF0Y2hlcy9maXgtdXRmOC1iaXR0ZXN0LnBhdGNoICAgfCAgIDE1IC0KIHNyY3BrZ3Mv dmlydHVvc28vcGF0Y2hlcy9tdXNsLXBhZ2Vfc2l6ZS5wYXRjaCB8ICAgMzQgLQogLi4uL3JlbW92 ZS1vcGVuc3NsLXZlcnNpb24tY2hlY2sucGF0Y2ggICAgICAgIHwgICA0OCAtCiAuLi4vdmlydHVv c28vcGF0Y2hlcy9zc2wtY29ubmVjdC1zdGF0ZS5wYXRjaCAgfCAgIDE1IC0KIHNyY3BrZ3Mvdmly dHVvc28vcGF0Y2hlcy9zc2wxLjEucGF0Y2ggICAgICAgICB8IDE0MDAgLS0tLS0tLS0tLS0tLS0t LS0KIHNyY3BrZ3MvdmlydHVvc28vcGF0Y2hlcy9zc2wxLjFfbW9yZS5wYXRjaCAgICB8ICAgMjAg LQogc3JjcGtncy92aXJ0dW9zby9wYXRjaGVzL3VzZS1ta3N0ZW1wLnBhdGNoICAgIHwgICAxOCAt CiBzcmNwa2dzL3ZpcnR1b3NvL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgfCAgIDIzICst CiAxMCBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAxNjA5IGRlbGV0aW9ucygtKQog ZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvdmlydHVvc28vcGF0Y2hlcy9hbHdheXMtaWVlZS1m bG9hdHMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3ZpcnR1b3NvL3BhdGNoZXMv ZGlzYWJsZS10Z3JhcGhxbC10ZXN0LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy92 aXJ0dW9zby9wYXRjaGVzL2ZpeC11dGY4LWJpdHRlc3QucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL3ZpcnR1b3NvL3BhdGNoZXMvbXVzbC1wYWdlX3NpemUucGF0Y2gKIGRlbGV0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL3ZpcnR1b3NvL3BhdGNoZXMvcmVtb3ZlLW9wZW5zc2wtdmVyc2lv bi1jaGVjay5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvdmlydHVvc28vcGF0Y2hl cy9zc2wtY29ubmVjdC1zdGF0ZS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mvdmly dHVvc28vcGF0Y2hlcy9zc2wxLjEucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3Zp cnR1b3NvL3BhdGNoZXMvc3NsMS4xX21vcmUucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL3ZpcnR1b3NvL3BhdGNoZXMvdXNlLW1rc3RlbXAucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNw a2dzL3ZpcnR1b3NvL3BhdGNoZXMvYWx3YXlzLWllZWUtZmxvYXRzLnBhdGNoIGIvc3JjcGtncy92 aXJ0dW9zby9wYXRjaGVzL2Fsd2F5cy1pZWVlLWZsb2F0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggNjliNTAzNDIxNGY3Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy92 aXJ0dW9zby9wYXRjaGVzL2Fsd2F5cy1pZWVlLWZsb2F0cy5wYXRjaAorKysgL2Rldi9udWxsCkBA IC0xLDQ2ICswLDAgQEAKLUZyb20gYmM4ZTk4OTBkZThjOTg2NmU2ZTFmNDljODM1NWViZWU5MTU1 NzllNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IHE2NiA8ZGFuaWVsQG9jdGFmb3Jn ZS5vcmc+Ci1EYXRlOiBXZWQsIDI5IEphbiAyMDIwIDEyOjUwOjQ2ICswMTAwCi1TdWJqZWN0OiBb UEFUQ0ggMS8yXSBhbHdheXMgdXNlIElFRUUgZmxvYXRzCi0KLVdlIGRvbid0IGJ1aWxkIG9uIGFu eSBwbGF0Zm9ybXMgd2hlcmUgdGhpcyBpcyBub3QgdGhlIGNhc2UuCi0KLUZpeGVzIHBsYXRmb3Jt cyBmb3Igd2hpY2ggdGhpcyBpcyBub3QgY2hlY2tlZC4KLS0tLQotIGxpYnNyYy9Eay9Ea21hcnNo YWwuYyB8IDIwICstLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBsaWJzcmMvRGsvRGttYXJzaGFs LmMgbGlic3JjL0RrL0RrbWFyc2hhbC5jCi1pbmRleCBkYTE1YTIxLi5iMmI2YzcxIDEwMDY0NAot LS0tIGEvbGlic3JjL0RrL0RrbWFyc2hhbC5jCi0rKysgYi9saWJzcmMvRGsvRGttYXJzaGFsLmMK LUBAIC0zMSwyNSArMzEsNyBAQAotICMgaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgkJCSAvKiBmb3Ig bnRvaGwsIGh0b25sICovCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQgKGkzODYpIHx8IFwKLS0g ICAgZGVmaW5lZCAoX1dJTjY0KSB8fCBcCi0tICAgIGRlZmluZWQgKF9NX0lYODYpIHx8IFwKLS0g ICAgZGVmaW5lZCAoX01fQUxQSEEpIHx8IFwKLS0gICAgZGVmaW5lZCAobWM2ODAwMCkgfHwgXAot LSAgICBkZWZpbmVkIChzcGFyYykgfHwgXAotLSAgICBkZWZpbmVkIChfX3g4Nl82NCkgfHwgXAot LSAgICBkZWZpbmVkIChfX2FscGhhKSB8fCBcCi0tICAgIGRlZmluZWQgKF9fcG93ZXJwYykgfHwg XAotLSAgICBkZWZpbmVkIChtaXBzKSB8fCBcCi0tICAgIGRlZmluZWQgKF9fT1MyX18pIHx8IFwK LS0gICAgZGVmaW5lZCAoX0lCTVIyKQotLSMgZGVmaW5lIF9JRUVFX0ZMT0FUUwotLSNlbGlmIGRl ZmluZWQgKE9QTF9TT1VSQ0UpCi0tIyBpbmNsdWRlIDxsaWJycGMuaD4KLS0jZWxzZQotLSMgaW5j bHVkZSA8cnBjL3R5cGVzLmg+Ci0tIyBpbmNsdWRlIDxycGMveGRyLmg+Ci0tI2VuZGlmCi0rI2Rl ZmluZSBfSUVFRV9GTE9BVFMKLSAKLSBtYWNyb19jaGFyX2Z1bmMgcmVhZHRhYmxlWzI1Nl07Ci0g c2VzX3dyaXRlX2Z1bmMgd3JpdGV0YWJsZVsyNTZdOwotLS0gCi0yLjI0LjAKLQpkaWZmIC0tZ2l0 IGEvc3JjcGtncy92aXJ0dW9zby9wYXRjaGVzL2Rpc2FibGUtdGdyYXBocWwtdGVzdC5wYXRjaCBi L3NyY3BrZ3MvdmlydHVvc28vcGF0Y2hlcy9kaXNhYmxlLXRncmFwaHFsLXRlc3QucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kYmQyYzQ2N2ViMWEKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmNwa2dzL3ZpcnR1b3NvL3BhdGNoZXMvZGlzYWJsZS10Z3JhcGhxbC10 ZXN0LnBhdGNoCkBAIC0wLDAgKzEsMTIgQEAKKy0tLSBhL2JpbnNyYy90ZXN0cy9zdWl0ZS90ZXN0 YWxsLnNoCTIwMjMtMDItMjcgMTg6MDU6MzMuMDAwMDAwMDAwICswMTAwCisrKysgYi9iaW5zcmMv dGVzdHMvc3VpdGUvdGVzdGFsbC5zaAkyMDIzLTAzLTA5IDE0OjU1OjU2LjkxODY1NzA2MyArMDEw MAorQEAgLTEzNiw4ICsxMzYsNyBAQAorIHJ0ZXN0IFwKKyB0cmVwbF9yZGYgXAorIHRzb2FwMTIg XAorLXR2c3B4ZXggXAorLXRncmFwaHFsICIKKyt0dnNweGV4ICIKKyAKKyBRVUlDS1RFU1Q9MQor IFRQQ0RNT0RFPWxvY2FsCmRpZmYgLS1naXQgYS9zcmNwa2dzL3ZpcnR1b3NvL3BhdGNoZXMvZml4 LXV0ZjgtYml0dGVzdC5wYXRjaCBiL3NyY3BrZ3MvdmlydHVvc28vcGF0Y2hlcy9maXgtdXRmOC1i aXR0ZXN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWU4NGE2N2VmM2Mu LjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3ZpcnR1b3NvL3BhdGNoZXMvZml4LXV0ZjgtYml0 dGVzdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNvdXJjZTogQHB1bGxt b2xsCi1VcHN0cmVhbTogbm8KLVJlYXNvbjogZXhwcmVzc2lvbiByZXF1aXJlcyBiaW5hcnkgQU5E LCBub3QgbG9naWNhbAotCi0tLS0gYS9saWJzcmMvdXRpbC9wY3JlbGliL3BjcmVfc3R1ZHkuYwky MDE4LTA4LTE2IDAxOjA2OjIxLjAwMDAwMDAwMCArMDIwMAotKysrIGIvbGlic3JjL3V0aWwvcGNy ZWxpYi9wY3JlX3N0dWR5LmMJMjAyMC0wMS0yNyAxNTo0NDo1Ny43MTU4MjEzNTUgKzAxMDAKLUBA IC00MzIsNyArNDMyLDcgQEAKLSAgICAgICAgICAgZm9yIChjID0gMDsgYyA8IDE2OyBjKyspIHN0 YXJ0X2JpdHNbY10gfD0gdGNvZGVbY107Ci0gICAgICAgICAgIGZvciAoYyA9IDEyODsgYyA8IDI1 NjsgYysrKQotICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICBpZiAoKHRjb2RlW2MvOF0gJiYg KDEgPDwgKGMmNykpKSAhPSAwKQotKyAgICAgICAgICAgIGlmICgodGNvZGVbYy84XSAmICgxIDw8 IChjJjcpKSkgIT0gMCkKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGludCBkID0g KGMgPj4gNikgfCAweGMwOyAgICAgICAgICAgIC8qIFNldCBiaXQgZm9yIHRoaXMgc3RhcnRlciAq LwotICAgICAgICAgICAgICAgc3RhcnRfYml0c1tkLzhdIHw9ICgxIDw8IChkJjcpKTsgICAgLyog YW5kIHRoZW4gc2tpcCBvbiB0byB0aGUgKi8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdmlydHVvc28v cGF0Y2hlcy9tdXNsLXBhZ2Vfc2l6ZS5wYXRjaCBiL3NyY3BrZ3MvdmlydHVvc28vcGF0Y2hlcy9t dXNsLXBhZ2Vfc2l6ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNhOWFi ZGQwZjM5Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy92aXJ0dW9zby9wYXRjaGVzL211c2wt cGFnZV9zaXplLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSAxMjU2 Njk4MjFkOTVmZjk4OWJmOTQxNjFiOGUyNDk3YmZjYTlkMGFiIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQotRnJvbTogcTY2IDxkYW5pZWxAb2N0YWZvcmdlLm9yZz4KLURhdGU6IFdlZCwgMjkgSmFu IDIwMjAgMTI6NTQ6MTQgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIFVzZSBtb3JlIHBvcnRh YmxlIHBhZ2Ugc2l6ZSBjaGVjawotCi1UaGlzIGZpeGVzIG11c2wgYnVpbGRzLgotLS0tCi0gbGli c3JjL0RrL3Rsc2YuaCB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwg MSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGxpYnNyYy9Eay90bHNmLmggbGlic3JjL0RrL3Rs c2YuaAotaW5kZXggZGRjZTQ3OC4uYTk2ODdmNCAxMDA2NDQKLS0tLSBhL2xpYnNyYy9Eay90bHNm LmgKLSsrKyBiL2xpYnNyYy9Eay90bHNmLmgKLUBAIC0yMCw2ICsyMCw3IEBACi0gI2RlZmluZSBf VExTRl9IXwotIAotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+ Ci0gCi0gZXh0ZXJuIHNpemVfdCBpbml0X21lbW9yeV9wb29sKHNpemVfdCwgdm9pZCAqKTsKLSBl eHRlcm4gc2l6ZV90IGdldF91c2VkX3NpemUodm9pZCAqKTsKLUBAIC0xNTksNyArMTYwLDcgQEAg ZXh0ZXJuIHZvaWQgdGxzZl9iYXNlX2ZyZWUgKHZvaWQgKiBjLCBzaXplX3Qgc3opOwotIAotICNk ZWZpbmUgREVGQVVMVF9BUkVBX1NJWkUgKDEwMjQqMTApCi0gCi0tI2RlZmluZSBQQUdFX1NJWkUg KGdldHBhZ2VzaXplKCkpCi0rI2RlZmluZSBQQUdFX1NJWkUgKChpbnQpc3lzY29uZihfU0NfUEFH RVNJWkUpKQotIAotICNpZm5kZWYgV0lOMzIKLSAjaWZkZWYgVVNFX1BSSU5URgotLS0gCi0yLjI0 LjAKLQpkaWZmIC0tZ2l0IGEvc3JjcGtncy92aXJ0dW9zby9wYXRjaGVzL3JlbW92ZS1vcGVuc3Ns LXZlcnNpb24tY2hlY2sucGF0Y2ggYi9zcmNwa2dzL3ZpcnR1b3NvL3BhdGNoZXMvcmVtb3ZlLW9w ZW5zc2wtdmVyc2lvbi1jaGVjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MzA5NGZiYjZhYjY0Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy92aXJ0dW9zby9wYXRjaGVz L3JlbW92ZS1vcGVuc3NsLXZlcnNpb24tY2hlY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0 OCArMCwwIEBACi1Tb3VyY2U6IEBwdWxsbW9sbAotVXBzdHJlYW06IG5vCi1SZWFzb246IEVuYWJs ZSBzdWJkaXItb2JqZWN0cyBhbmQgc3RyaXAgb3BlbnNzbCB2ZXJzaW9uIGNoZWNrIHdoaWNoIGZh aWxzIGZvciBsaWJyZXNzbAotCi0tLS0gYS9jb25maWd1cmUuYWMJMjAxOC0wOC0xNiAwMTowNjoy MS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBiL2NvbmZpZ3VyZS5hYwkyMDIwLTAxLTI3IDE1OjAyOjM2 Ljk0NjkyMjY2MyArMDEwMAotQEAgLTU4LDcgKzU4LDcgQEAKLSBkbmwJQU1fSU5JVF9BVVRPTUFL RShbMS44XSkKLSBkbmwJQU1fSU5JVF9BVVRPTUFLRShbMS45IHRhci11c3Rhcl0pCi0gZG5sCi0t QU1fSU5JVF9BVVRPTUFLRShbMS45IHRhci11c3Rhcl0pCi0rQU1fSU5JVF9BVVRPTUFLRShbMS45 IHRhci11c3RhciBzdWJkaXItb2JqZWN0c10pCi0gCi0gQU1fTUFJTlRBSU5FUl9NT0RFCi0gCi1A QCAtODY3LDMyICs4NjcsNiBAQAotIAk7OwotIGVzYWMKLSAKLS1BQ19NU0dfQ0hFQ0tJTkcoW09w ZW5TU0wgdmVyc2lvbl0pCi0tQUNfVFJZX0NPTVBJTEUoWwotLSNpbmNsdWRlIDxvcGVuc3NsL29w ZW5zc2x2Lmg+Ci0tXSwgWwotLSNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgwMDkwODAx ZkwKLS0jZXJyb3IgT3BlblNTTCB2ZXJzaW9uIHRvbyBvbGQgCi0tI2VuZGlmCi0tICAgIF0sWwot LSAgICAgIEFDX01TR19SRVNVTFQoWz49IDAuOS44ZV0pCi0tICAgIF0sWwotLSAgICAgIEFDX01T R19FUlJPUihbT3BlblNTTCB2ZXJzaW9uIDAuOS44ZSBvciBncmVhdGVyIGlzIHJlcXVpcmVkLl0p Ci0tICAgIF0pCi0tCi0tQUNfTVNHX0NIRUNLSU5HKFtPcGVuU1NMIHZlcnNpb25dKQotLUFDX1RS WV9DT01QSUxFKFsKLS0jaW5jbHVkZSA8b3BlbnNzbC9vcGVuc3Nsdi5oPgotLV0sWwotLSNpZiBP UEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAxMDAwMGZMCi0tI2Vycm9yIE9wZW5TU0wgdmVy c2lvbiB0b28gbmV3Ci0tI2VuZGlmCi0tICAgIF0sWwotLSAgICAgIEFDX01TR19SRVNVTFQoWzwg MS4xLjBdKQotLSAgICBdLFsKLS0gICAgICBBQ19NU0dfRVJST1IoW09wZW5TU0wgdmVyc2lvbiAx LjEuMCBvciBncmVhdGVyIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLl0pCi0tICAgIF0pCi0t Ci0gQUNfTVNHX0NIRUNLSU5HKFt1c2FiaWxpdHkgb2YgdGhlIE9wZW5TU0wgaGVhZGVyIGZpbGVz IGFuZCBsaWJyYXJ5IGluICR7b3BlbnNzbF9kaXJ9XSkKLSBBQ19UUllfUlVOKFsKLSAjaW5jbHVk ZSA8b3BlbnNzbC9yc2EuaD4KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdmlydHVvc28vcGF0Y2hlcy9z c2wtY29ubmVjdC1zdGF0ZS5wYXRjaCBiL3NyY3BrZ3MvdmlydHVvc28vcGF0Y2hlcy9zc2wtY29u bmVjdC1zdGF0ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzk1NjZlM2I2 ZGZkLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy92aXJ0dW9zby9wYXRjaGVzL3NzbC1jb25u ZWN0LXN0YXRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU291cmNlOiBA cHVsbG1vbGwKLVVwc3RyZWFtOiBubwotUmVhc29uOiBVc2UgdGhlIHByb3BlciBpbnRlcmZhY2Ug b2YgbGlicmVzc2wgd2hpY2ggZG9lcyBub3QgZXhwb3NlIHRoZSBpbnRlcm5hbCBzdHJ1Y3R1cmUg b2YgU1NMCi0KLS0tLSBhL2xpYnNyYy9XaS9odHRwLmMJMjAxOC0wOC0xNiAwMTowNjoyMS4wMDAw MDAwMDAgKzAyMDAKLSsrKyBiL2xpYnNyYy9XaS9odHRwLmMJMjAyMC0wMS0yNyAxNTowOTo1My4y ODQ5MDUyNjUgKzAxMDAKLUBAIC05OTQ5LDcgKzk5NDksNyBAQAotIAkgIGNsaV9zc2xfZ2V0X2Vy cm9yX3N0cmluZyAoZXJyX2J1Ziwgc2l6ZW9mIChlcnJfYnVmKSk7Ci0gCSAgc3Fscl9uZXdfZXJy b3IgKCI0MjAwMCIsICIuLjAwMiIsICJTU0xfZG9faGFuZHNoYWtlIGZhaWxlZCAlcyIsIGVycl9i dWYpOwotIAl9Ci0tICAgICAgc3NsLT5zdGF0ZSA9IFNTTF9TVF9BQ0NFUFQ7Ci0rICAgICAgU1NM X3NldF9hY2NlcHRfc3RhdGUgKHNzbCk7Ci0gICAgICAgd2hpbGUgKFNTTF9yZW5lZ290aWF0ZV9w ZW5kaW5nIChzc2wpICYmIGN0ciA8IDEwMDApCi0gCXsKLSAJICB0aW1lb3V0X3QgdG8gPSB7IDAs IDEwMDAgfTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdmlydHVvc28vcGF0Y2hlcy9zc2wxLjEucGF0 Y2ggYi9zcmNwa2dzL3ZpcnR1b3NvL3BhdGNoZXMvc3NsMS4xLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCA5ODg3NDk5NDY0ODAuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dz L3ZpcnR1b3NvL3BhdGNoZXMvc3NsMS4xLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQwMCAr MCwwIEBACi1EZXNjcmlwdGlvbjogRml4IEZUQkZTIHdpdGggb3BlbnNzbCAxLjEKLUF1dGhvcjog U2ViYXN0aWFuIEFuZHJ6ZWogU2lld2lvciA8c2ViYXN0aWFuQGJyZWFrcG9pbnQuY2M+Ci1CdWct RGViaWFuOiBodHRwczovL2J1Z3MuZGViaWFuLm9yZy84Mjg1OTQKLUZvcndhcmRlZDogaHR0cHM6 Ly9naXRodWIuY29tL29wZW5saW5rL3ZpcnR1b3NvLW9wZW5zb3VyY2UvcHVsbC81ODMKLUxhc3Qt VXBkYXRlOiBNbyAxMS4gRmViIDEzOjUwOjE3IENFVCAyMDE5IChieSBBbmRyZWFzIFRpbGxlIDx0 aWxsZUBkZWJpYW4ub3JnPikKLQotLS0tCi0KLUZyb20gODIzMDkyY2NjYmQ4ZTJhYjliZmFkNmMz ZDNkZjc5MWE3ZmZhNzZmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFNlYmFzdGlh biBBbmRyemVqIFNpZXdpb3IgPHNlYmFzdGlhbkBicmVha3BvaW50LmNjPgotRGF0ZTogTW9uLCA1 IFNlcCAyMDE2IDEwOjQ5OjU0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIHZpcnR1b3NvLW9wZW5z b3VyY2U6IGJ1aWxkIGFnYWluc3Qgb3BlbnNzbCAxLjEuMAotCi1TaWduZWQtb2ZmLWJ5OiBTZWJh c3RpYW4gQW5kcnplaiBTaWV3aW9yIDxzZWJhc3RpYW5AYnJlYWtwb2ludC5jYz4KLS0tLQotIGxp YnNyYy9Eay9Ea2VybmVsLmMgICAgICB8ICAgNiArLQotIGxpYnNyYy9XaS9iaWZfY3J5cHRvLmMg ICB8IDEyMCArKysrKysrKysrLS0tLS0tLS0KLSBsaWJzcmMvV2kvaHR0cC5jICAgICAgICAgfCAg IDIgKy0KLSBsaWJzcmMvV2kveG1sZW5jLmMgICAgICAgfCAzMTkgKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBsaWJzcmMvV2kveG1sZW5jLmggICAgICAg fCAxOTMgKysrKysrKysrKysrKysrKysrKysrKysrKystLQotIGxpYnNyYy9XaS94bWxlbmNfYWxn b3MuYyB8IDEzMiArKysrKysrKysrKy0tLS0tLS0tLQotIGxpYnNyYy91dGlsL3NzbGVuZ2luZS5j ICB8ICAgNiArLQotIDcgZmlsZXMgY2hhbmdlZCwgNTI0IGluc2VydGlvbnMoKyksIDI1NCBkZWxl dGlvbnMoLSkKLQotLS0tIGEvbGlic3JjL1dpL2JpZl9jcnlwdG8uYwotKysrIGIvbGlic3JjL1dp L2JpZl9jcnlwdG8uYwotQEAgLTE4MSwyMSArMTgxLDI2IEBAIGJveF9obWFjIChjYWRkcl90IGJv eCwgY2FkZHJfdCBrZXksIGludAotICAgdW5zaWduZWQgY2hhciB0ZW1wW0VWUF9NQVhfTURfU0la RV07Ci0gICB1bnNpZ25lZCBpbnQgc2l6ZSA9IDA7Ci0gICBjYWRkcl90IHJlcyA9IE5VTEw7Ci0t ICBITUFDX0NUWCBjdHg7Ci0rICBITUFDX0NUWCAqY3R4OwotICAgY29uc3QgRVZQX01EICptZCA9 IEVWUF9zaGExICgpOwotIAotICAgaWYgKGFsZyA9PSAxKQotICAgICBtZCA9IEVWUF9yaXBlbWQx NjAgKCk7Ci0gCi0tICBITUFDX0luaXQgKCZjdHgsIGtleSwgYm94X2xlbmd0aCAoa2V5KSAtIERW X1NUUklOR1AgKGtleSkgPyAxIDogMCwgbWQpOwotLSAgYm94X2htYWNfMSAoYm94LCAmY3R4KTsK LS0gIEhNQUNfRmluYWwgKCZjdHgsIHRlbXAsICZzaXplKTsKLSsgIGN0eCA9IEhNQUNfQ1RYX25l dygpOwotKyAgaWYgKCFjdHgpCi0rCSAgcmV0dXJuIHJlczsKLSsKLSsgIEhNQUNfSW5pdF9leCAo Y3R4LCBrZXksIGJveF9sZW5ndGggKGtleSkgLSBEVl9TVFJJTkdQIChrZXkpID8gMSA6IDAsIG1k LCBOVUxMKTsKLSsgIGJveF9obWFjXzEgKGJveCwgY3R4KTsKLSsgIEhNQUNfRmluYWwgKGN0eCwg dGVtcCwgJnNpemUpOwotICAgaWYgKHNpemUpCi0gICAgIHsKLSAgICAgICByZXMgPSBka19hbGxv Y19ib3ggKHNpemUgKyAxLCBEVl9TSE9SVF9TVFJJTkcpOwotICAgICAgIG1lbWNweSAocmVzLCB0 ZW1wLCBzaXplKTsKLSAgICAgICByZXNbc2l6ZV0gPSAwOwotICAgICB9Ci0rICBITUFDX0NUWF9m cmVlKGN0eCk7Ci0gICByZXR1cm4gcmVzOwotIH0KLSAKLUBAIC0zNDcsMTQgKzM1MiwxMiBAQCBh c24xX3BhcnNlX3RvX3htbCAoQklPICogYnAsIHVuc2lnbmVkIGNoCi0gCSAgICB7Ci0gCSAgICAg IGludCBpaTsKLSAKLS0JICAgICAgb3BwID0gb3A7Ci0tCSAgICAgIGlpID0gZDJpX0FTTjFfQk9P TEVBTiAoTlVMTCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiopJm9wcCwgbGVuICsgaGwpOwotLQkg ICAgICBpZiAoaWkgPCAwKQotKwkgICAgICBpZiAobGVuICsgaGwgPCAxKQotIAkJewotIAkJICBp ZiAoQklPX3dyaXRlIChicCwgIkJhZCBib29sZWFuXG4iLCAxMikpCi0gCQkgICAgZ290byBlbmQ7 Ci0gCQl9Ci0tCSAgICAgIEJJT19wcmludGYgKGJwLCAiJWQiLCBpaSk7Ci0rCSAgICAgIEJJT19w cmludGYgKGJwLCAiJWQiLCBwWzBdKTsKLSAJICAgIH0KLSAJICBlbHNlIGlmICh0YWcgPT0gVl9B U04xX0JNUFNUUklORykKLSAJICAgIHsKLUBAIC00MTUsNyArNDE4LDcgQEAgYXNuMV9wYXJzZV90 b194bWwgKEJJTyAqIGJwLCB1bnNpZ25lZCBjaAotIAkJfQotIAkgICAgICBpZiAob3MgIT0gTlVM TCkKLSAJCXsKLS0JCSAgTV9BU04xX09DVEVUX1NUUklOR19mcmVlIChvcyk7Ci0rCQkgIEFTTjFf U1RSSU5HX2ZyZWUgKG9zKTsKLSAJCSAgb3MgPSBOVUxMOwotIAkJfQotIAkgICAgfQotQEAgLTQ0 OCw3ICs0NTEsNyBAQCBhc24xX3BhcnNlX3RvX3htbCAoQklPICogYnAsIHVuc2lnbmVkIGNoCi0g CQkgIGlmIChCSU9fd3JpdGUgKGJwLCAiQkFEIElOVEVHRVIiLCAxMSkgPD0gMCkKLSAJCSAgICBn b3RvIGVuZDsKLSAJCX0KLS0JICAgICAgTV9BU04xX0lOVEVHRVJfZnJlZSAoYnMpOwotKwkgICAg ICBBU04xX1NUUklOR19mcmVlIChicyk7Ci0gCSAgICB9Ci0gCSAgZWxzZSBpZiAodGFnID09IFZf QVNOMV9FTlVNRVJBVEVEKQotIAkgICAgewotQEAgLTQ3OSw3ICs0ODIsNyBAQCBhc24xX3BhcnNl X3RvX3htbCAoQklPICogYnAsIHVuc2lnbmVkIGNoCi0gCQkgIGlmIChCSU9fd3JpdGUgKGJwLCAi QkFEIEVOVU1FUkFURUQiLCAxMSkgPD0gMCkKLSAJCSAgICBnb3RvIGVuZDsKLSAJCX0KLS0JICAg ICAgTV9BU04xX0VOVU1FUkFURURfZnJlZSAoYnMpOwotKwkgICAgICBBU04xX1NUUklOR19mcmVl IChicyk7Ci0gCSAgICB9Ci0gCSAgZWxzZSBpZiAobGVuID4gMCAmJiBkdW1wKQotIAkgICAgewot QEAgLTUxNSw3ICs1MTgsNyBAQCBlbmQ6Ci0gICBpZiAobyAhPSBOVUxMKQotICAgICBBU04xX09C SkVDVF9mcmVlIChvKTsKLSAgIGlmIChvcyAhPSBOVUxMKQotLSAgICBNX0FTTjFfT0NURVRfU1RS SU5HX2ZyZWUgKG9zKTsKLSsgICAgQVNOMV9TVFJJTkdfZnJlZSAob3MpOwotICAgKnBwID0gcDsK LSAgIHJldHVybiAocmV0KTsKLSB9Ci1AQCAtNzIzLDcgKzcyNiw3IEBAIGJpb190b19zdHJzZXMg KEJJTyAqIG91dF9iaW8pCi0gICBpbnQgbGVuID0gQklPX2dldF9tZW1fZGF0YSAob3V0X2Jpbywg JnB0cik7Ci0gICBpbnQgdG9fcmVhZCA9IGxlbiwgcmVhZGVkID0gMDsKLSAKLS0gIHRvX2ZyZWUg PSAoKEJVRl9NRU0gKikgb3V0X2Jpby0+cHRyKS0+ZGF0YTsKLSsgIHRvX2ZyZWUgPSAoKEJVRl9N RU0gKikgQklPX2dldF9kYXRhKG91dF9iaW8pKS0+ZGF0YTsKLSAgIEJJT19zZXRfZmxhZ3MgKG91 dF9iaW8sIEJJT19GTEFHU19NRU1fUkRPTkxZKTsKLSAgIENBVENIX1dSSVRFX0ZBSUwgKHNlcykK LSAgICAgewotQEAgLTczNSw3ICs3MzgsNyBAQCBiaW9fdG9fc3Ryc2VzIChCSU8gKiBvdXRfYmlv KQotICAgICAgIH0gd2hpbGUgKHRvX3JlYWQgPiAwKTsKLSAgICAgfQotICAgRU5EX1dSSVRFX0ZB SUwgKHNlcyk7Ci0tICAoKEJVRl9NRU0gKikgb3V0X2Jpby0+cHRyKS0+ZGF0YSA9IHRvX2ZyZWU7 Ci0rICAoKEJVRl9NRU0gKikgQklPX2dldF9kYXRhKG91dF9iaW8pKS0+ZGF0YSA9IHRvX2ZyZWU7 Ci0gICBCSU9fY2xlYXJfZmxhZ3MgKG91dF9iaW8sIEJJT19GTEFHU19NRU1fUkRPTkxZKTsKLSAg IHJldHVybiBzZXM7Ci0gfQotQEAgLTc3MCw3ICs3NzMsNyBAQCBiaWZfc21pbWVfdmVyaWZ5IChj YWRkcl90ICogcXN0LCBjYWRkcl90Ci0gICBpZiAoRFZfVFlQRV9PRiAobXNnKSA9PSBEVl9TVFJJ TkdfU0VTU0lPTikKLSAgICAgewotICAgICAgIGluX2JpbyA9IHN0cnNlc190b19iaW8gKChka19z ZXNzaW9uX3QgKikgbXNnKTsKLS0gICAgICB0b19mcmVlID0gKChCVUZfTUVNICopIGluX2Jpby0+ cHRyKS0+ZGF0YTsKLSsgICAgICB0b19mcmVlID0gKChCVUZfTUVNICopIEJJT19nZXRfZGF0YShp bl9iaW8pKS0+ZGF0YTsKLSAgICAgICBCSU9fc2V0X2ZsYWdzIChpbl9iaW8sIEJJT19GTEFHU19N RU1fUkRPTkxZKTsKLSAgICAgfQotICAgZWxzZQotQEAgLTc4MCw3ICs3ODMsNyBAQCBiaWZfc21p bWVfdmVyaWZ5IChjYWRkcl90ICogcXN0LCBjYWRkcl90Ci0gICAgICAgcDcgPSBTTUlNRV9yZWFk X1BLQ1M3IChpbl9iaW8sICZkYXRhX2Jpbyk7Ci0gICAgICAgaWYgKHRvX2ZyZWUpCi0gCXsKLS0J ICAoKEJVRl9NRU0gKikgaW5fYmlvLT5wdHIpLT5kYXRhID0gdG9fZnJlZTsKLSsJICAoKEJVRl9N RU0gKikgQklPX2dldF9kYXRhKGluX2JpbykpLT5kYXRhID0gdG9fZnJlZTsKLSAJICBCSU9fY2xl YXJfZmxhZ3MgKGluX2JpbywgQklPX0ZMQUdTX01FTV9SRE9OTFkpOwotIAl9Ci0gICAgICAgQklP X2ZyZWUgKGluX2Jpbyk7Ci1AQCAtOTI0LDE2ICs5MjcsMjAgQEAgYmlmX3NtaW1lX3NpZ24gKGNh ZGRyX3QgKiBxc3QsIGNhZGRyX3QgKgotICAgICB9Ci0gCi0gICBjZXJ0cyA9IHNrX1g1MDlfbmV3 X251bGwgKCk7Ci0tICBpZiAoc3RvcmUgJiYgc3RvcmUtPm9ianMpCi0rCi0rICBpZiAoc3RvcmUg JiYgWDUwOV9TVE9SRV9nZXQwX29iamVjdHMoc3RvcmUpKQotICAgICB7Ci0tICAgICAgZm9yIChp bnggPSAwOyBpbnggPCBza19YNTA5X09CSkVDVF9udW0gKHN0b3JlLT5vYmpzKTsgaW54KyspCi0r ICAgICAgU1RBQ0tfT0YoWDUwOV9PQkpFQ1QpICpzdG9yZV9vYmpzID0gWDUwOV9TVE9SRV9nZXQw X29iamVjdHMoc3RvcmUpOwotKwotKyAgICAgIGZvciAoaW54ID0gMDsgaW54IDwgc2tfWDUwOV9P QkpFQ1RfbnVtIChzdG9yZV9vYmpzKTsgaW54KyspCi0gCXsKLS0JICBYNTA5X09CSkVDVCAqb2Jq ID0gc2tfWDUwOV9PQkpFQ1RfdmFsdWUgKHN0b3JlLT5vYmpzLCBpbngpOwotLQkgIGlmIChvYmot PnR5cGUgPT0gWDUwOV9MVV9YNTA5KQotLQkgICAgc2tfWDUwOV9wdXNoIChjZXJ0cywgWDUwOV9k dXAgKG9iai0+ZGF0YS54NTA5KSk7Ci0rCSAgWDUwOV9PQkpFQ1QgKm9iaiA9IHNrX1g1MDlfT0JK RUNUX3ZhbHVlIChzdG9yZV9vYmpzLCBpbngpOwotKwkgIGlmIChYNTA5X09CSkVDVF9nZXRfdHlw ZShvYmopID09IFg1MDlfTFVfWDUwOSkKLSsJICAgIHNrX1g1MDlfcHVzaCAoY2VydHMsIFg1MDlf ZHVwIChYNTA5X09CSkVDVF9nZXQwX1g1MDkob2JqKSkpOwotIAl9Ci0gCi0gICAgIH0KLSsKLSAg IGlmIChzdG9yZSkKLSAgICAgWDUwOV9TVE9SRV9mcmVlIChzdG9yZSk7Ci0gICBpbl9iaW8gPSBC SU9fbmV3X21lbV9idWYgKG1zZywgYm94X2xlbmd0aCAobXNnKSAtIDEpOwotQEAgLTEwMDUsMTUg KzEwMTIsMTkgQEAgYmlmX3NtaW1lX2VuY3J5cHQgKGNhZGRyX3QgKiBxc3QsIGNhZGRyXwotICAg ICBzcWxyX25ld19lcnJvciAoIjQyMDAwIiwgIkNSMDA2IiwgIk5vIHJlY2lwaWVudCBjZXJ0aWZp Y2F0ZXMiKTsKLSAKLSAgIGNlcnRzID0gc2tfWDUwOV9uZXdfbnVsbCAoKTsKLS0gIGlmIChzdG9y ZSAmJiBzdG9yZS0+b2JqcykKLSsKLSsgIGlmIChzdG9yZSAmJiBYNTA5X1NUT1JFX2dldDBfb2Jq ZWN0cyhzdG9yZSkpCi0gICAgIHsKLS0gICAgICBmb3IgKGlueCA9IDA7IGlueCA8IHNrX1g1MDlf T0JKRUNUX251bSAoc3RvcmUtPm9ianMpOyBpbngrKykKLSsgICAgICBTVEFDS19PRihYNTA5X09C SkVDVCkgKnN0b3JlX29ianMgPSBYNTA5X1NUT1JFX2dldDBfb2JqZWN0cyhzdG9yZSk7Ci0rCi0r ICAgICAgZm9yIChpbnggPSAwOyBpbnggPCBza19YNTA5X09CSkVDVF9udW0gKHN0b3JlX29ianMp OyBpbngrKykKLSAJewotLQkgIFg1MDlfT0JKRUNUICpvYmogPSBza19YNTA5X09CSkVDVF92YWx1 ZSAoc3RvcmUtPm9ianMsIGlueCk7Ci0tCSAgaWYgKG9iai0+dHlwZSA9PSBYNTA5X0xVX1g1MDkp Ci0tCSAgICBza19YNTA5X3B1c2ggKGNlcnRzLCBYNTA5X2R1cCAob2JqLT5kYXRhLng1MDkpKTsK LSsJICBYNTA5X09CSkVDVCAqb2JqID0gc2tfWDUwOV9PQkpFQ1RfdmFsdWUgKHN0b3JlX29ianMs IGlueCk7Ci0rCSAgaWYgKFg1MDlfT0JKRUNUX2dldF90eXBlKG9iaikgPT0gWDUwOV9MVV9YNTA5 KQotKwkgICAgc2tfWDUwOV9wdXNoIChjZXJ0cywgWDUwOV9kdXAgKFg1MDlfT0JKRUNUX2dldDBf WDUwOShvYmopKSk7Ci0gCX0KLSAgICAgfQotKwotICAgaWYgKHN0b3JlKQotICAgICBYNTA5X1NU T1JFX2ZyZWUgKHN0b3JlKTsKLSAgIGluX2JpbyA9IEJJT19uZXdfbWVtX2J1ZiAobXNnLCBib3hf bGVuZ3RoIChtc2cpIC0gMSk7Ci1AQCAtMTE4MSw3ICsxMTkyLDcgQEAgeDUwOV9jZXJ0aWZpY2F0 ZV92ZXJpZnlfY2IgKGludCBvaywgWDUwOQotICAgY2hhciAqb3B0cyA9IChjaGFyICopIFg1MDlf U1RPUkVfQ1RYX2dldF9hcHBfZGF0YSAoY3R4KTsKLSAgIGlmICghb2sgJiYgb3B0cykKLSAgICAg ewotLSAgICAgIHN3aXRjaCAoY3R4LT5lcnJvcikKLSsgICAgICBzd2l0Y2ggKFg1MDlfU1RPUkVf Q1RYX2dldF9lcnJvcihjdHgpKQotIAl7Ci0gCWNhc2UgWDUwOV9WX0VSUl9DRVJUX0hBU19FWFBJ UkVEOgotIAkgIGlmIChzdHJzdHIgKG9wdHMsICJleHBpcmVkIikpCi1AQCAtMTI4Nyw3ICsxMjk4 LDcgQEAgYmlmX3g1MDlfY2VydGlmaWNhdGVfdmVyaWZ5IChjYWRkcl90ICogcQotICAgaWYgKCFp KQotICAgICB7Ci0gICAgICAgY29uc3QgY2hhciAqZXJyX3N0cjsKLS0gICAgICBlcnJfc3RyID0g WDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcgKGNzYy0+ZXJyb3IpOwotKyAgICAgIGVycl9z dHIgPSBYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZyAoWDUwOV9TVE9SRV9DVFhfZ2V0X2Vy cm9yKGNzYykpOwotICAgICAgICplcnJfcmV0ID0gc3J2X21ha2VfbmV3X2Vycm9yICgiMjIwMjMi LCAiQ1IwMTUiLCAiWDUwOSBlcnJvcjogJXMiLCBlcnJfc3RyKTsKLSAgICAgfQotIAotQEAgLTEz MDgsMjAgKzEzMTksMTYgQEAgZXJyX3JldDoKLSAjZGVmaW5lIFZJUlRfQ0VSVF9FWFQgIjIuMTYu ODQwLjEuMTExMy4xIgotIAotIHN0YXRpYyBjYWRkcl90Ci0tQk5fYm94IChCSUdOVU0gKiB4KQot K0JOX2JveCAoY29uc3QgQklHTlVNICp4KQotIHsKLSAgIHNpemVfdCBidWZfbGVuLCBuOwotICAg Y2FkZHJfdCBidWY7Ci0gICBidWZfbGVuID0gKHNpemVfdCkgQk5fbnVtX2J5dGVzICh4KTsKLS0g IGlmIChidWZfbGVuIDw9IEJOX0JZVEVTKQotLSAgICBidWYgPSBib3hfbnVtICgodW5zaWduZWQg bG9uZykgeC0+ZFswXSk7Ci0tICBlbHNlCi0tICAgIHsKLS0gICAgICBidWYgPSBka19hbGxvY19i b3ggKGJ1Zl9sZW4sIERWX0JJTik7Ci0tICAgICAgbiA9IEJOX2JuMmJpbiAoeCwgKHVuc2lnbmVk IGNoYXIgKikgYnVmKTsKLS0gICAgICBpZiAobiAhPSBidWZfbGVuKQotLQlHUEZfVDsKLS0gICAg fQotKyAgLyogZGlkIG5vdCBmaWd1cmUgb3V0IHdoZXJlIGJ1ZiBpcyBmcmVlKCllZCAqLwotKyAg YnVmID0gZGtfYWxsb2NfYm94IChidWZfbGVuLCBEVl9CSU4pOwotKyAgbiA9IEJOX2JuMmJpbiAo eCwgKHVuc2lnbmVkIGNoYXIgKikgYnVmKTsKLSsgIGlmIChuICE9IGJ1Zl9sZW4pCi0rCSAgR1BG X1Q7Ci0gICByZXR1cm4gYnVmOwotIH0KLSAKLUBAIC0xNDk4LDcgKzE1MDUsNyBAQCBiaWZfZ2V0 X2NlcnRpZmljYXRlX2luZm8gKGNhZGRyX3QgKiBxc3QsCi0gCWludCBpOwotIAljaGFyIHRtcFsx MDI0XTsKLSAJY2hhciAqZXh0X29pZCA9IChjaGFyICopIChCT1hfRUxFTUVOVFMgKGFyZ3MpID4g NCA/IGJpZl9zdHJpbmdfYXJnIChxc3QsIGFyZ3MsIDQsICJnZXRfY2VydGlmaWNhdGVfaW5mbyIp IDogVklSVF9DRVJUX0VYVCk7Ci0tCVNUQUNLX09GIChYNTA5X0VYVEVOU0lPTikgKiBleHRzID0g Y2VydC0+Y2VydF9pbmZvLT5leHRlbnNpb25zOwotKwljb25zdCBTVEFDS19PRiAoWDUwOV9FWFRF TlNJT04pICogZXh0cyA9IFg1MDlfZ2V0MF9leHRlbnNpb25zKGNlcnQpOwotIAlmb3IgKGkgPSAw OyBpIDwgc2tfWDUwOV9FWFRFTlNJT05fbnVtIChleHRzKTsgaSsrKQotIAkgIHsKLSAJICAgIFg1 MDlfRVhURU5TSU9OICpleCA9IHNrX1g1MDlfRVhURU5TSU9OX3ZhbHVlIChleHRzLCBpKTsKLUBA IC0xNTEwLDcgKzE1MTcsNyBAQCBiaWZfZ2V0X2NlcnRpZmljYXRlX2luZm8gKGNhZGRyX3QgKiBx c3QsCi0gCQljaGFyICpkYXRhX3B0cjsKLSAJCUJJTyAqbWVtID0gQklPX25ldyAoQklPX3NfbWVt ICgpKTsKLSAJCWlmICghWDUwOVYzX0VYVF9wcmludCAobWVtLCBleCwgMCwgMCkpCi0tCQkgIE1f QVNOMV9PQ1RFVF9TVFJJTkdfcHJpbnQgKG1lbSwgZXgtPnZhbHVlKTsKLSsJCSAgQVNOMV9TVFJJ TkdfcHJpbnQgKG1lbSwgWDUwOV9FWFRFTlNJT05fZ2V0X2RhdGEoZXgpKTsKLSAJCWxlbiA9IEJJ T19nZXRfbWVtX2RhdGEgKG1lbSwgJmRhdGFfcHRyKTsKLSAJCWlmIChsZW4gPiAwICYmIGRhdGFf cHRyKQotIAkJICB7Ci1AQCAtMTUzNywxOCArMTU0NCwyMyBAQCBiaWZfZ2V0X2NlcnRpZmljYXRl X2luZm8gKGNhZGRyX3QgKiBxc3QsCi0gCWlmIChrKQotIAkgIHsKLSAjaWZkZWYgRVZQX1BLRVlf UlNBCi0tCSAgICBpZiAoay0+dHlwZSA9PSBFVlBfUEtFWV9SU0EpCi0rCSAgICBpZiAoRVZQX1BL RVlfaWQoaykgPT0gRVZQX1BLRVlfUlNBKQotIAkgICAgICB7Ci0tCQlSU0EgKnggPSBrLT5wa2V5 LnJzYTsKLS0JCXJldCA9IGxpc3QgKDMsIGJveF9kdl9zaG9ydF9zdHJpbmcgKCJSU0FQdWJsaWNL ZXkiKSwgQk5fYm94ICh4LT5lKSwgQk5fYm94ICh4LT5uKSk7Ci0rCQljb25zdCBCSUdOVU0gKm4s ICplOwotKwotKwkJUlNBX2dldDBfa2V5KEVWUF9QS0VZX2dldDBfUlNBKGspLCAmbiwgJmUsIE5V TEwpOwotKwotKwkJcmV0ID0gbGlzdCAoMywgYm94X2R2X3Nob3J0X3N0cmluZyAoIlJTQVB1Ymxp Y0tleSIpLCBCTl9ib3ggKGUpLCBCTl9ib3ggKG4pKTsKLSAJICAgICAgfQotIAkgICAgZWxzZQot ICNlbmRpZgotICNpZmRlZiBFVlBfUEtFWV9EU0EKLS0JICAgIGlmIChrLT50eXBlID09IEVWUF9Q S0VZX0RTQSkKLSsJICAgIGlmIChFVlBfUEtFWV9pZChrKSA9PSBFVlBfUEtFWV9EU0EpCi0gCSAg ICAgIHsKLS0JCURTQSAqeCA9IGstPnBrZXkuZHNhOwotLQkJcmV0ID0gbGlzdCAoMiwgYm94X2R2 X3Nob3J0X3N0cmluZyAoIkRTQVB1YmxpY0tleSIpLCBCTl9ib3ggKHgtPnB1Yl9rZXkpKTsKLSsJ CWNvbnN0IEJJR05VTSAqcHViX2tleTsKLSsKLSsJCURTQV9nZXQwX2tleShFVlBfUEtFWV9nZXQw X0RTQShrKSwgJnB1Yl9rZXksIE5VTEwpOwotKwkJcmV0ID0gbGlzdCAoMiwgYm94X2R2X3Nob3J0 X3N0cmluZyAoIkRTQVB1YmxpY0tleSIpLCBCTl9ib3ggKHB1Yl9rZXkpKTsKLSAJICAgICAgfQot IAkgICAgZWxzZQotICNlbmRpZgotQEAgLTE1NjcsMTMgKzE1NzksMTMgQEAgYmlmX2dldF9jZXJ0 aWZpY2F0ZV9pbmZvIChjYWRkcl90ICogcXN0LAotIAlpbnQgbiwgaSwgbGVuOwotIAljaGFyICpz LCAqZGF0YV9wdHI7Ci0gCUJJTyAqbWVtID0gQklPX25ldyAoQklPX3NfbWVtICgpKTsKLS0JZm9y IChpID0gMDsgTlVMTCAhPSBzdWJqICYmIGkgPCBza19YNTA5X05BTUVfRU5UUllfbnVtKHN1Ymot PmVudHJpZXMpOyBpKyspCi0rCWZvciAoaSA9IDA7IE5VTEwgIT0gc3ViaiAmJiBpIDwgWDUwOV9O QU1FX2VudHJ5X2NvdW50KHN1YmopOyBpKyspCi0gCSAgewotLQkgICAgbmUgPSBza19YNTA5X05B TUVfRU5UUllfdmFsdWUoc3Viai0+ZW50cmllcyxpKTsKLS0JICAgIG4gPSBPQkpfb2JqMm5pZCAo bmUtPm9iamVjdCk7Ci0rCSAgICBuZSA9IFg1MDlfTkFNRV9nZXRfZW50cnkoc3ViaiwgaSk7Ci0r CSAgICBuID0gT0JKX29iajJuaWQgKFg1MDlfTkFNRV9FTlRSWV9nZXRfb2JqZWN0KG5lKSk7Ci0g CSAgICBpZiAoKG4gPT0gTklEX3VuZGVmKSB8fCAoKHMgPSAoY2hhciAqKSBPQkpfbmlkMnNuIChu KSkgPT0gTlVMTCkpCi0gCSAgICAgIHsKLS0JCWkydF9BU04xX09CSkVDVCAoYnVmZmVyLCBzaXpl b2YgKGJ1ZmZlciksIG5lLT5vYmplY3QpOwotKwkJaTJ0X0FTTjFfT0JKRUNUIChidWZmZXIsIHNp emVvZiAoYnVmZmVyKSwgWDUwOV9OQU1FX0VOVFJZX2dldF9vYmplY3QobmUpKTsKLSAJCXMgPSBi dWZmZXI7Ci0gCSAgICAgIH0KLSAJICAgIGlmICghc3RyY21wIChzLCBhdHRyKSkKLUBAIC0xNTgy LDkgKzE1OTQsMTAgQEAgYmlmX2dldF9jZXJ0aWZpY2F0ZV9pbmZvIChjYWRkcl90ICogcXN0LAot IAkJYnJlYWs7Ci0gCSAgICAgIH0KLSAJICB9Ci0rCi0gCWlmIChuZV9yZXQpCi0gCSAgewotLQkg ICAgQVNOMV9TVFJJTkdfcHJpbnQgKG1lbSwgbmVfcmV0LT52YWx1ZSk7Ci0rCSAgICBBU04xX1NU UklOR19wcmludCAobWVtLCBYNTA5X05BTUVfRU5UUllfZ2V0X2RhdGEobmVfcmV0KSk7Ci0gCSAg ICBsZW4gPSBCSU9fZ2V0X21lbV9kYXRhIChtZW0sICZkYXRhX3B0cik7Ci0gCSAgICBpZiAobGVu ID4gMCAmJiBkYXRhX3B0cikKLSAJICAgICAgewotQEAgLTE2MDUsMTcgKzE2MTgsMTcgQEAgYmlm X2dldF9jZXJ0aWZpY2F0ZV9pbmZvIChjYWRkcl90ICogcXN0LAotIAlka19zZXRfdCBzZXQgPSBO VUxMOwotIAljYWRkcl90IHZhbDsKLSAJQklPICptZW0gPSBCSU9fbmV3IChCSU9fc19tZW0gKCkp OwotLQlmb3IgKGkgPSAwOyBOVUxMICE9IHN1YmogJiYgaSA8IHNrX1g1MDlfTkFNRV9FTlRSWV9u dW0oc3Viai0+ZW50cmllcyk7IGkrKykKLSsJZm9yIChpID0gMDsgTlVMTCAhPSBzdWJqICYmIGkg PCBYNTA5X05BTUVfZW50cnlfY291bnQoc3Viaik7IGkrKykKLSAJICB7Ci0gCSAgICB2YWwgPSBO VUxMOwotLQkgICAgbmUgPSBza19YNTA5X05BTUVfRU5UUllfdmFsdWUoc3Viai0+ZW50cmllcyxp KTsKLS0JICAgIG4gPSBPQkpfb2JqMm5pZCAobmUtPm9iamVjdCk7Ci0rCSAgICBuZSA9IFg1MDlf TkFNRV9nZXRfZW50cnkoc3ViaiwgaSk7Ci0rCSAgICBuID0gT0JKX29iajJuaWQgKFg1MDlfTkFN RV9FTlRSWV9nZXRfb2JqZWN0KG5lKSk7Ci0gCSAgICBpZiAoKG4gPT0gTklEX3VuZGVmKSB8fCAo KHMgPSAoY2hhciAqKSBPQkpfbmlkMnNuIChuKSkgPT0gTlVMTCkpCi0gCSAgICAgIHsKLS0JCWky dF9BU04xX09CSkVDVCAoYnVmZmVyLCBzaXplb2YgKGJ1ZmZlciksIG5lLT5vYmplY3QpOwotKwkJ aTJ0X0FTTjFfT0JKRUNUIChidWZmZXIsIHNpemVvZiAoYnVmZmVyKSwgWDUwOV9OQU1FX0VOVFJZ X2dldF9vYmplY3QobmUpKTsKLSAJCXMgPSBidWZmZXI7Ci0gCSAgICAgIH0KLS0JICAgIEFTTjFf U1RSSU5HX3ByaW50IChtZW0sIG5lLT52YWx1ZSk7Ci0rCSAgICBBU04xX1NUUklOR19wcmludCAo bWVtLCBYNTA5X05BTUVfRU5UUllfZ2V0X2RhdGEobmUpKTsKLSAJICAgIGxlbiA9IEJJT19nZXRf bWVtX2RhdGEgKG1lbSwgJmRhdGFfcHRyKTsKLSAJICAgIGlmIChsZW4gPiAwICYmIGRhdGFfcHRy KQotIAkgICAgICB7Ci1AQCAtMTYyOSwxOCArMTY0MiwyMiBAQCBiaWZfZ2V0X2NlcnRpZmljYXRl X2luZm8gKGNhZGRyX3QgKiBxc3QsCi0gCSAgfQotIAlCSU9fZnJlZSAobWVtKTsKLSAJcmV0ID0g bGlzdF90b19hcnJheSAoZGtfc2V0X25yZXZlcnNlIChzZXQpKTsKLSsKLSAJYnJlYWs7Ci0gICAg ICAgfQotICAgICBjYXNlIDEyOgotICAgICAgIHsKLSAJY29uc3QgdW5zaWduZWQgY2hhciAqczsK LSAJaW50IGksIG47Ci0tCWNvbnN0IEFTTjFfU1RSSU5HICpzaWcgPSBjZXJ0LT5zaWduYXR1cmU7 Ci0tCVg1MDlfQUxHT1IgKnNpZ2FsZyA9IGNlcnQtPnNpZ19hbGc7Ci0rCWNvbnN0IEFTTjFfU1RS SU5HICpzaWc7Ci0rCWNvbnN0IFg1MDlfQUxHT1IgKnNpZ2FsZzsKLSsJY29uc3QgQVNOMV9PQkpF Q1QgKnNpZ19hbGdfYWxnb3JpdGhtOwotIAljaGFyIGJ1Zls4MF07Ci0gCWNhZGRyX3QgdmFsOwot IAotLSAgICAgICAgaTJ0X0FTTjFfT0JKRUNUKGJ1ZixzaXplb2YgKGJ1ZiksIHNpZ2FsZy0+YWxn b3JpdGhtKTsKLSsJWDUwOV9nZXQwX3NpZ25hdHVyZSgmc2lnLCAmc2lnYWxnLCBjZXJ0KTsKLSsJ WDUwOV9BTEdPUl9nZXQwKCZzaWdfYWxnX2FsZ29yaXRobSwgTlVMTCwgTlVMTCwgc2lnYWxnKTsK LSsJaTJ0X0FTTjFfT0JKRUNUKGJ1ZixzaXplb2YgKGJ1ZiksIHNpZ19hbGdfYWxnb3JpdGhtKTsK LSAKLSAJbiA9IHNpZy0+bGVuZ3RoOwotIAlzID0gc2lnLT5kYXRhOwotQEAgLTE2NjAsMTEgKzE2 NzcsMTEgQEAgYmlmX2dldF9jZXJ0aWZpY2F0ZV9pbmZvIChjYWRkcl90ICogcXN0LAotIAlpZiAo aykKLSAJICB7Ci0gI2lmZGVmIEVWUF9QS0VZX1JTQQotLQkgICAgaWYgKGstPnR5cGUgPT0gRVZQ X1BLRVlfUlNBKQotKwkgICAgaWYgKEVWUF9QS0VZX2lkKGspID09IEVWUF9QS0VZX1JTQSkKLSAJ ICAgICAgewotIAkJY2hhciAqZGF0YV9wdHI7Ci0gCQlpbnQgbGVuOwotLQkJUlNBICp4ID0gay0+ cGtleS5yc2E7Ci0rCQlSU0EgKnggPSBFVlBfUEtFWV9nZXQwX1JTQShrKTsKLSAJCWIgPSBCSU9f bmV3IChCSU9fc19tZW0oKSk7Ci0gCQlpMmRfUlNBX1BVQktFWV9iaW8gKGIsIHgpOwotIAkJbGVu ID0gQklPX2dldF9tZW1fZGF0YSAoYiwgJmRhdGFfcHRyKTsKLS0tLSBhL2xpYnNyYy9XaS94bWxl bmMuYwotKysrIGIvbGlic3JjL1dpL3htbGVuYy5jCi1AQCAtMTIxNSwzNiArMTIxNSw0NSBAQCB2 b2lkIHhlbmNfa2V5X3JlbW92ZSAoeGVuY19rZXlfdCAqIGtleSwKLSB9Ci0gCi0gCi0tc3RhdGlj IHZvaWQKLS1nZW5yc2FfY2IoaW50IHAsIGludCBuLCB2b2lkICphcmcpCi0tewotLSNpZmRlZiBM SU5UCi0tICBwPW47Ci0tI2VuZGlmCi0tfQotLQotIGludAotIF9feGVuY19rZXlfcnNhX2luaXQg KGNoYXIgKm5hbWUpCi0gewotICAgUlNBICpyc2EgPSBOVUxMOwotLSAgaW50IG51bT0xMDI0Owot LSAgdW5zaWduZWQgbG9uZyBmND1SU0FfRjQ7Ci0rICBCSUdOVU0gKmJuID0gTlVMTDsKLSAgIGlu dCByOwotKwotICAgeGVuY19rZXlfdCAqIHBrZXkgPSB4ZW5jX2dldF9rZXlfYnlfbmFtZSAobmFt ZSwgMSk7Ci0gICBpZiAoTlVMTCA9PSBwa2V5KQotICAgICBTUUxSX05FV19LRVlfRVJST1IgKG5h bWUpOwotIAotLSAgcnNhPVJTQV9nZW5lcmF0ZV9rZXkobnVtLGY0LGdlbnJzYV9jYixOVUxMKTsK LSsgIHJzYSA9IFJTQV9uZXcoKTsKLSsgIGlmICghcnNhKQotKwkgIGdvdG8gb3V0OwotKyAgYm4g PSBCTl9uZXcoKTsKLSsgIGlmICghYm4pCi0rCSAgZ290byBvdXQ7Ci0rICBpZiAoIUJOX3NldF93 b3JkKGJuLCBSU0FfRjQpKQotKwkgIGdvdG8gb3V0OwotKwotKyAgaWYgKCFSU0FfZ2VuZXJhdGVf a2V5X2V4KHJzYSwgMTAyNCwgYm4sIE5VTEwpKQotKwkgIGdvdG8gb3V0OwotKwotICAgciA9IFJT QV9jaGVja19rZXkocnNhKTsKLSsgIGlmIChyICE9IDEpCi0rCSAgZ290byBvdXQ7Ci0gICBwa2V5 LT5raS5yc2EucGFkID0gUlNBX1BLQ1MxX1BBRERJTkc7Ci0tICBpZiAocnNhID09IE5VTEwpCi0t ICAgIHsKLS0gICAgICBzcWxyX25ld19lcnJvciAoIjQyMDAwIiwgIlhFTkMwNiIsCi0tCQkgICAg IlJTQSBwYXJhbWV0ZXJzIGdlbmVyYXRpb24gZXJyb3IiKTsKLS0gICAgfQotICAgcGtleS0+eGVr X3JzYSA9IHJzYTsKLSAgIHBrZXktPnhla19wcml2YXRlX3JzYSA9IHJzYTsKLSsgIEJOX2ZyZWUo Ym4pOwotICAgcmV0dXJuIDA7Ci0rb3V0OgotKyAgaWYgKGJuKQotKwkgIEJOX2ZyZWUoYm4pOwot KyAgaWYgKHJzYSkKLSsJICBSU0FfZnJlZShyc2EpOwotKyAgc3Fscl9uZXdfZXJyb3IgKCI0MjAw MCIsICJYRU5DMDYiLAotKwkJICAiUlNBIHBhcmFtZXRlcnMgZ2VuZXJhdGlvbiBlcnJvciIpOwot KyAgcmV0dXJuIC0xOwotIH0KLSAKLSAKLUBAIC0xNDU1LDE5ICsxNDY0LDE5IEBAIHhlbmNfa2V5 X3QgKiB4ZW5jX2tleV9jcmVhdGVfZnJvbV94NTA5X2MKLSAKLSAgIGlmIChwa2V5KQotICAgICB7 Ci0tICAgICAgc3dpdGNoIChFVlBfUEtFWV90eXBlIChwa2V5LT50eXBlKSkKLSsgICAgICBzd2l0 Y2ggKEVWUF9QS0VZX3R5cGUgKEVWUF9QS0VZX2lkKHBrZXkpKSkKLSAJewotIAljYXNlIEVWUF9Q S0VZX0RTQToKLSAJICBzaWduX2FsZ29uYW1lID0gRFNJR19EU0FfU0hBMV9BTEdPOwotIAkgIGVu Y19hbGdvbmFtZSA9IFhFTkNfRFNBX0FMR087Ci0tCSAgZHNhID0gcGtleS0+cGtleS5kc2E7Ci0t CSAgcHJpdmF0ZV9kc2EgPSBwcml2YXRlX2tleSA/IHByaXZhdGVfa2V5LT5wa2V5LmRzYSA6IDA7 Ci0rCSAgZHNhID0gRVZQX1BLRVlfZ2V0MF9EU0EocGtleSk7Ci0rCSAgcHJpdmF0ZV9kc2EgPSBw cml2YXRlX2tleSA/IEVWUF9QS0VZX2dldDBfRFNBKHByaXZhdGVfa2V5KSA6IDA7Ci0gCSAgYnJl YWs7Ci0gCWNhc2UgRVZQX1BLRVlfUlNBOgotIAkgIHNpZ25fYWxnb25hbWUgPSBEU0lHX1JTQV9T SEExX0FMR087Ci0gCSAgZW5jX2FsZ29uYW1lID0gWEVOQ19SU0FfQUxHTzsKLS0JICByc2EgPSBw a2V5LT5wa2V5LnJzYTsKLS0JICBwcml2YXRlX3JzYSA9IHByaXZhdGVfa2V5ID8gcHJpdmF0ZV9r ZXktPnBrZXkucnNhIDogMDsKLSsJICByc2EgPSBFVlBfUEtFWV9nZXQwX1JTQShwa2V5KTsKLSsJ ICBwcml2YXRlX3JzYSA9IHByaXZhdGVfa2V5ID8gRVZQX1BLRVlfZ2V0MF9SU0EocHJpdmF0ZV9r ZXkpIDogMDsKLSAJICBicmVhazsKLSAJZGVmYXVsdDoKLSAJICBnb3RvIGZpbmlzaDsKLUBAIC0x NTE2LDEzICsxNTI1LDYgQEAgeGVuY19rZXlfdCAqIHhlbmNfa2V5X2NyZWF0ZV9mcm9tX3g1MDlf YwotICAgcmV0dXJuIGs7Ci0gfQotIAotLXN0YXRpYyB2b2lkIGRoX2NiKGludCBwLCBpbnQgbiwg dm9pZCAqYXJnKQotLXsKLS0jaWZkZWYgTElOVAotLSAgcD1uOwotLSNlbmRpZgotLX0KLS0KLSBz dGF0aWMgLyp4ZW5jX2tleV9EU0FfY3JlYXRlICovCi0gY2FkZHJfdCBiaWZfeGVuY19rZXlfZHNh X2NyZWF0ZSAoY2FkZHJfdCAqIHFzdCwgY2FkZHJfdCAqIGVycl9yLCBzdGF0ZV9zbG90X3QgKiog YXJncykKLSB7Ci1AQCAtMTU4OCwxNSArMTU5MCwyMSBAQCBjYWRkcl90IGJpZl94ZW5jX2tleV9E SF9jcmVhdGUgKGNhZGRyX3QKLSAgICAgICBkaCA9IERIX25ldyAoKTsKLSAgICAgICBibl9wID0g Qk5fYmluMmJuICgodW5zaWduZWQgY2hhciAqKW1vZCwgcF9sZW4sIE5VTEwpOwotICAgICAgIGJu X2cgPSBCTl9iaW4yYm4gKGdfYmluLCAxLCBOVUxMKTsKLS0gICAgICBkaC0+cCA9IGJuX3A7Ci0t ICAgICAgZGgtPmcgPSBibl9nOwotKyAgICAgIGlmIChkaCkKLSsJICAgICAgREhfc2V0MF9wcWco ZGgsIGJuX3AsIE5VTEwsIGJuX2cpOwotIAotICAgICAgIGRrX2ZyZWVfYm94IChtb2RfYjY0KTsK LSAgICAgICBka19mcmVlX2JveCAobW9kKTsKLSAgICAgfQotICAgZWxzZQotICAgICB7Ci0tICAg ICAgZGggPSBESF9nZW5lcmF0ZV9wYXJhbWV0ZXJzIChudW0sIGcsIGRoX2NiLCBOVUxMKTsKLSsg ICAgICBkaCA9IERIX25ldygpOwotKyAgICAgIGlmIChkaCkgewotKwkgICAgICBpZiAoIURIX2dl bmVyYXRlX3BhcmFtZXRlcnNfZXgoZGgsIG51bSwgZywgTlVMTCkpIHsKLSsJCSAgICAgIERIX2Zy ZWUoZGgpOwotKwkJICAgICAgZGggPSBOVUxMOwotKwkgICAgICB9Ci0rICAgICAgfQotICAgICB9 Ci0gICBpZiAoIWRoKQotICAgICB7Ci1AQCAtMTYyNiw3ICsxNjM0LDcgQEAgY2FkZHJfdCBiaWZf eGVuY19ESF9nZXRfcGFyYW1zIChjYWRkcl90Ci0gICBpbnQgbiwgbGVuOwotICAgY2FkZHJfdCBi dWYgPSBOVUxMLCByZXQsIGI2NDsKLSAgIERIICpkaDsKLS0gIEJJR05VTSAqbnVtOwotKyAgY29u c3QgQklHTlVNICpudW07Ci0gCi0gICBtdXRleF9lbnRlciAoeGVuY19rZXlzX210eCk7Ci0gICBr ZXkgPSB4ZW5jX2dldF9rZXlfYnlfbmFtZSAobmFtZSwgMCk7Ci1AQCAtMTY0MSwxOSArMTY0OSwx OSBAQCBjYWRkcl90IGJpZl94ZW5jX0RIX2dldF9wYXJhbXMgKGNhZGRyX3QKLSAgIHN3aXRjaCAo cGFyYW0pCi0gICAgIHsKLSAgIAljYXNlIDE6Ci0tCSBudW0gPSBkaC0+cDsKLSsJIERIX2dldDBf cHFnKGRoLCAmbnVtLCBOVUxMLCBOVUxMKTsKLSAJIGJyZWFrOwotIAljYXNlIDI6Ci0tCSBudW0g PSBkaC0+ZzsKLSsJIERIX2dldDBfcHFnKGRoLCBOVUxMLCBOVUxMLCAmbnVtKTsKLSAJIGJyZWFr OwotIAljYXNlIDM6Ci0tCSBudW0gPSBkaC0+cHViX2tleTsKLSsJIERIX2dldDBfa2V5KGRoLCAm bnVtLCBOVUxMKTsKLSAJIGJyZWFrOwotIAljYXNlIDQ6Ci0tCSBudW0gPSBkaC0+cHJpdl9rZXk7 Ci0rCSBESF9nZXQwX2tleShkaCwgTlVMTCwgJm51bSk7Ci0gCSBicmVhazsKLSAJZGVmYXVsdDoK LS0JIG51bSA9IGRoLT5wdWJfa2V5OwotKwkgREhfZ2V0MF9rZXkoZGgsICZudW0sIE5VTEwpOwot ICAgICB9Ci0gCi0gICBidWZfbGVuID0gKHNpemVfdClCTl9udW1fYnl0ZXMobnVtKTsKLUBAIC0x ODExLDcgKzE4MTksMTUgQEAgY2FkZHJfdCBiaWZfeGVuY19rZXlfcnNhX2NyZWF0ZSAoY2FkZHJf dAotICAgeGVuY19rZXlfdCAqIGs7Ci0gICBjYWRkcl90IG5hbWUgPSBiaWZfc3RyaW5nX2FyZyAo cXN0LCBhcmdzLCAwLCAieGVuY19rZXlfUlNBX2NyZWF0ZSIpOwotICAgaW50IG51bSA9IChpbnQp IGJpZl9sb25nX2FyZyAocXN0LCBhcmdzLCAxLCAieGVuY19rZXlfUlNBX2NyZWF0ZSIpOwotLSAg UlNBICpyc2EgPSBOVUxMOwotKyAgUlNBICpyc2E7Ci0rICBCSUdOVU0gKmJuOwotKwotKyAgcnNh ID0gUlNBX25ldygpOwotKyAgYm4gPSBCTl9uZXcoKTsKLSsgIGlmICghcnNhIHx8ICFibikKLSsJ Z290byBvdXQ7Ci0rICBpZiAoIUJOX3NldF93b3JkKGJuLCBSU0FfRjQpKQotKwlnb3RvIG91dDsK LSAKLSAgIG11dGV4X2VudGVyICh4ZW5jX2tleXNfbXR4KTsKLSAgIGlmIChOVUxMID09IChrID0g eGVuY19rZXlfY3JlYXRlIChuYW1lLCBYRU5DX1JTQV9BTEdPICwgRFNJR19SU0FfU0hBMV9BTEdP LCAwKSkpCi1AQCAtMTgyMCwxMiArMTgzNiwxMSBAQCBjYWRkcl90IGJpZl94ZW5jX2tleV9yc2Ff Y3JlYXRlIChjYWRkcl90Ci0gICAgICAgU1FMUl9ORVdfS0VZX0VYSVNUX0VSUk9SIChuYW1lKTsK LSAgICAgfQotIAotLSAgcnNhID0gUlNBX2dlbmVyYXRlX2tleSAobnVtLCBSU0FfRjQsIE5VTEws IE5VTEwpOwotLQotLSAgaWYgKHJzYSA9PSBOVUxMKQotLSAgICB7Ci0tICAgICAgc3Fscl9uZXdf ZXJyb3IgKCI0MjAwMCIsICJYRU5DMDYiLCAiUlNBIGdlbmVyYXRpb24gZXJyb3IiKTsKLS0gICAg fQotKyAgaWYgKCFSU0FfZ2VuZXJhdGVfa2V5X2V4IChyc2EsIG51bSwgYm4sIE5VTEwpKSB7Ci0r CSAgbXV0ZXhfbGVhdmUgKHhlbmNfa2V5c19tdHgpOwotKwkgIGdvdG8gb3V0OwotKyAgfQotKyAg Qk5fZnJlZShibik7Ci0gCi0gICBrLT54ZWtfcnNhID0gUlNBUHVibGljS2V5X2R1cCAocnNhKTsK LSAgIGstPnhla19wcml2YXRlX3JzYSA9IHJzYTsKLUBAIC0xODM5LDYgKzE4NTQsMTMgQEAgY2Fk ZHJfdCBiaWZfeGVuY19rZXlfcnNhX2NyZWF0ZSAoY2FkZHJfdAotIAotICAgbXV0ZXhfbGVhdmUg KHhlbmNfa2V5c19tdHgpOwotICAgcmV0dXJuIE5VTEw7Ci0rb3V0OgotKyAgaWYgKGJuKQotKwkg IEJOX2ZyZWUoYm4pOwotKyAgaWYgKHJzYSkKLSsJICBSU0FfZnJlZShyc2EpOwotKyAgc3Fscl9u ZXdfZXJyb3IgKCI0MjAwMCIsICJYRU5DMDYiLCAiUlNBIGdlbmVyYXRpb24gZXJyb3IiKTsKLSsg IHJldHVybiBOVUxMOwotIH0KLSAKLSB4ZW5jX2tleV90ICoKLUBAIC0yMDM0LDcgKzIwNTYsMTMg QEAgaW50IF9feGVuY19rZXlfZHNhX2luaXQgKGNoYXIgKm5hbWUsIGludAotICAgICBTUUxSX05F V19LRVlfRVJST1IgKG5hbWUpOwotIAotICAgUkFORF9wb2xsICgpOwotLSAgZHNhID0gRFNBX2dl bmVyYXRlX3BhcmFtZXRlcnMobnVtLCBOVUxMLCAwLCBOVUxMLCBOVUxMLCBkaF9jYiwgTlVMTCk7 Ci0rICBkc2EgPSBEU0FfbmV3KCk7Ci0rICBpZiAoZHNhKSB7Ci0rCSAgaWYgKCFEU0FfZ2VuZXJh dGVfcGFyYW1ldGVyc19leChkc2EsIG51bSwgTlVMTCwgMCwgTlVMTCwgTlVMTCwgTlVMTCkpIHsK LSsJCSAgRFNBX2ZyZWUoZHNhKTsKLSsJCSAgZHNhID0gTlVMTDsKLSsJICB9Ci0rICB9Ci0gICBp ZiAoZHNhID09IE5VTEwpCi0gICAgIHsKLSAgICAgICBzcWxyX25ld19lcnJvciAoIjQyMDAwIiwg IlhFTkMxMSIsCi1AQCAtMjA1OCw3ICsyMDg2LDEzIEBAIGludCBfX3hlbmNfa2V5X2RoX2luaXQg KGNoYXIgKm5hbWUsIGludAotICAgaWYgKE5VTEwgPT0gcGtleSkKLSAgICAgU1FMUl9ORVdfS0VZ X0VSUk9SIChuYW1lKTsKLSAKLS0gIGRoID0gREhfZ2VuZXJhdGVfcGFyYW1ldGVycyAobnVtLCBn LCBkaF9jYiwgTlVMTCk7Ci0rICBkaCA9IERIX25ldygpOwotKyAgaWYgKGRoKSB7Ci0rCSAgaWYg KCFESF9nZW5lcmF0ZV9wYXJhbWV0ZXJzX2V4KGRoLCBudW0sIGcsIE5VTEwpKSB7Ci0rCQkgIERI X2ZyZWUoZGgpOwotKwkJICBkaCA9IE5VTEw7Ci0rCSAgfQotKyAgfQotICAgaWYgKCFkaCkKLSAg ICAgewotICAgICAgIHNxbHJfbmV3X2Vycm9yICgiNDIwMDAiLCAiWEVOQzExIiwKLUBAIC0yMjgw LDEyICsyMzE0LDEyIEBAIGJpZl94ZW5jX2tleV9yc2FfcmVhZCAoY2FkZHJfdCAqIHFzdCwgY2EK LSAgICAgewotICAgICAgIGluID0gQklPX25ld19tZW1fYnVmIChrZXlfYmFzZTY0LCBsZW4pOwot ICAgICAgIHBrZXkgPSBkMmlfUFVCS0VZX2JpbyAoaW4sIE5VTEwpOwotLSAgICAgIGlmIChwa2V5 ICYmIHBrZXktPnR5cGUgPT0gRVZQX1BLRVlfUlNBKQotLQlwID0gcGtleS0+cGtleS5yc2E7Ci0r ICAgICAgaWYgKHBrZXkgJiYgRVZQX1BLRVlfaWQocGtleSkgPT0gRVZQX1BLRVlfUlNBKQotKwlw ID0gRVZQX1BLRVlfZ2V0MF9SU0EocGtleSk7Ci0gICAgICAgQklPX3Jlc2V0IChpbik7Ci0gICAg ICAgcGtrZXkgPSBkMmlfUHJpdmF0ZUtleV9iaW8gKGluLCBOVUxMKTsKLS0gICAgICBpZiAocGtr ZXkgJiYgcGtrZXktPnR5cGUgPT0gRVZQX1BLRVlfUlNBKQotLQlyID0gcGtrZXktPnBrZXkucnNh OwotKyAgICAgIGlmIChwa2tleSAmJiBFVlBfUEtFWV9pZChwa2tleSkgPT0gRVZQX1BLRVlfUlNB KQotKwlyID0gRVZQX1BLRVlfZ2V0MF9SU0EocGtrZXkpOwotICAgICAgIEJJT19mcmVlIChpbik7 Ci0gICAgIH0KLSAgIGVsc2UKLUBAIC0yMzA0LDkgKzIzMzgsMTEgQEAgYmlmX3hlbmNfa2V5X3Jz YV9yZWFkIChjYWRkcl90ICogcXN0LCBjYQotIAotICAgaWYgKCFwKQotICAgICB7Ci0rICAgICAg Y29uc3QgQklHTlVNICpuLCAqZTsKLSsKLSsgICAgICBSU0FfZ2V0MF9rZXkociwgJm4sICZlLCBO VUxMKTsKLSAgICAgICBwID0gUlNBX25ldyAoKTsKLS0gICAgICBwLT5uID0gQk5fZHVwIChyLT5u KTsKLS0gICAgICBwLT5lID0gQk5fZHVwIChyLT5lKTsKLSsgICAgICBSU0Ffc2V0MF9rZXkocCwg Qk5fZHVwKG4pLCBCTl9kdXAoZSksIE5VTEwpOwotICAgICB9Ci0gCi0gICBtdXRleF9lbnRlciAo eGVuY19rZXlzX210eCk7Ci1AQCAtMjM1NSwxNCArMjM5MSwxMyBAQCBiaWZfeGVuY19rZXlfcnNh X2NvbnN0cnVjdCAoY2FkZHJfdCAqIHFzCi0gICBwID0gUlNBX25ldyAoKTsKLSAgIG4gPSBCTl9i aW4yYm4gKCh1bnNpZ25lZCBjaGFyICopIG1vZCwgYm94X2xlbmd0aCAobW9kKSAtIDEsIE5VTEwp OwotICAgZSA9IEJOX2JpbjJibiAoKHVuc2lnbmVkIGNoYXIgKikgZXhwLCBib3hfbGVuZ3RoIChl eHApIC0gMSwgTlVMTCk7Ci0tICBwLT5uID0gbjsKLS0gIHAtPmUgPSBlOwotKyAgUlNBX3NldDBf a2V5KHAsIG4sIGUsIE5VTEwpOwotICAgaWYgKHBleHApCi0gICAgIHsKLSAgICAgICBwayA9IFJT QV9uZXcgKCk7Ci0tICAgICAgcGstPmQgPSBCTl9iaW4yYm4gKCh1bnNpZ25lZCBjaGFyICopIHBl eHAsIGJveF9sZW5ndGggKHBleHApIC0gMSwgTlVMTCk7Ci0tICAgICAgcGstPm4gPSBCTl9kdXAg KG4pOwotLSAgICAgIHBrLT5lID0gQk5fZHVwIChlKTsKLSsgICAgICBSU0Ffc2V0MF9rZXkocCwg Qk5fZHVwKG4pLAotKwkJICAgICAgQk5fZHVwKGUpLAotKwkJICAgICAgQk5fYmluMmJuICgodW5z aWduZWQgY2hhciAqKSBwZXhwLCBib3hfbGVuZ3RoIChwZXhwKSAtIDEsIE5VTEwpKTsKLSAgICAg fQotICAgbXV0ZXhfZW50ZXIgKHhlbmNfa2V5c19tdHgpOwotICAgayA9IHhlbmNfa2V5X2NyZWF0 ZSAobmFtZSwgWEVOQ19SU0FfQUxHTywgRFNJR19SU0FfU0hBMV9BTEdPLCAwKTsKLUBAIC00MDg2 LDcgKzQxMjEsNyBAQCB2b2lkIHhlbmNfdGFnX2ZyZWUgKHhlbmNfdGFnX3QgKiB0KQotICNlbmRp ZgotIH0KLSAKLS14ZW5jX3RhZ190ICogeGVuY190YWdfYWRkX2NoaWxkX0JOICh4ZW5jX3RhZ190 ICogdGFnLCBCSUdOVU0gKiBibikKLStzdGF0aWMgeGVuY190YWdfdCAqIHhlbmNfdGFnX2FkZF9j aGlsZF9CTiAoeGVuY190YWdfdCAqIHRhZywgY29uc3QgQklHTlVNICogYm4pCi0gewotICBjaGFy ICogYnVmZmVyID0gZGtfYWxsb2NfYm94IChCTl9udW1fYnl0ZXMgKGJuKSwgRFZfQklOKTsKLSAg Y2hhciAqIGJ1ZmZlcl9iYXNlNjQgPSBka19hbGxvY19ib3ggKGJveF9sZW5ndGggKGJ1ZmZlcikg KiAyLCBEVl9TVFJJTkcpOwotQEAgLTQxMTEsMTIgKzQxNDYsMTUgQEAgY2FkZHJfdCAqKiB4ZW5j X2dlbmVyYXRlX2V4dF9pbmZvICh4ZW5jXwotICAgY2FkZHJfdCAqKiBhcnJheTsKLSAgIGlmIChr ZXktPnhla190eXBlID09IERTSUdfS0VZX1JTQSkKLSAgICAgewotKyAgICAgIGNvbnN0IEJJR05V TSAqcnNhX24sICpyc2FfZTsKLSsKLSsgICAgICBSU0FfZ2V0MF9rZXkoa2V5LT5raS5yc2EucnNh X3N0LCAmcnNhX24sICZyc2FfZSwgTlVMTCk7Ci0gICAgICAgeGVuY190YWdfdCAqIHJzYWtleXZh bCA9IHhlbmNfdGFnX2NyZWF0ZSAoRFNJR19VUkksICI6UlNBS2V5VmFsdWUiKTsKLSAgICAgICB4 ZW5jX3RhZ190ICogcnNhbW9kdWx1cyA9IHhlbmNfdGFnX2NyZWF0ZSAoRFNJR19VUkksICI6TW9k dWx1cyIpOwotICAgICAgIHhlbmNfdGFnX3QgKiByc2FleHBvbmVudCA9IHhlbmNfdGFnX2NyZWF0 ZSAoRFNJR19VUkksICI6RXhwb25lbnQiKTsKLSAKLS0gICAgICB4ZW5jX3RhZ19hZGRfY2hpbGRf Qk4gKHJzYW1vZHVsdXMsIGtleS0+a2kucnNhLnJzYV9zdC0+bik7Ci0tICAgICAgeGVuY190YWdf YWRkX2NoaWxkX0JOIChyc2FleHBvbmVudCwga2V5LT5raS5yc2EucnNhX3N0LT5lKTsKLSsgICAg ICB4ZW5jX3RhZ19hZGRfY2hpbGRfQk4gKHJzYW1vZHVsdXMsIHJzYV9uKTsKLSsgICAgICB4ZW5j X3RhZ19hZGRfY2hpbGRfQk4gKHJzYWV4cG9uZW50LCByc2FfZSk7Ci0gCi0gICAgICAgeGVuY190 YWdfYWRkX2NoaWxkIChyc2FrZXl2YWwsIHhlbmNfdGFnX2ZpbmFsaXplIChyc2Ftb2R1bHVzKSk7 Ci0gICAgICAgeGVuY190YWdfYWRkX2NoaWxkIChyc2FrZXl2YWwsIHhlbmNfdGFnX2ZpbmFsaXpl IChyc2FleHBvbmVudCkpOwotQEAgLTQxMzUsMTIgKzQxNzMsMTUgQEAgY2FkZHJfdCAqKiB4ZW5j X2dlbmVyYXRlX2V4dF9pbmZvICh4ZW5jXwotICAgICAgIHhlbmNfdGFnX3QgKiBnID0geGVuY190 YWdfY3JlYXRlIChEU0lHX1VSSSwgIjpHIik7Ci0gICAgICAgeGVuY190YWdfdCAqIHkgPSB4ZW5j X3RhZ19jcmVhdGUgKERTSUdfVVJJLCAiOlkiKTsKLSAgICAgICBEU0EgKiBkc2EgPSBrZXktPmtp LmRzYS5kc2Ffc3Q7Ci0rICAgICAgY29uc3QgQklHTlVNICpkc2FfcCwgKmRzYV9xLCAqZHNhX2cs ICpkc2FfcHViX2tleTsKLSAKLSsgICAgICBEU0FfZ2V0MF9wcWcoZHNhLCAmZHNhX3AsICZkc2Ff cSwgJmRzYV9nKTsKLSsgICAgICBEU0FfZ2V0MF9rZXkoZHNhLCAmZHNhX3B1Yl9rZXksIE5VTEwp OwotIAotLSAgICAgIHhlbmNfdGFnX2FkZF9jaGlsZF9CTiAocCwgZHNhLT5wKTsKLS0gICAgICB4 ZW5jX3RhZ19hZGRfY2hpbGRfQk4gKHAsIGRzYS0+cSk7Ci0tICAgICAgeGVuY190YWdfYWRkX2No aWxkX0JOIChwLCBkc2EtPmcpOwotLSAgICAgIHhlbmNfdGFnX2FkZF9jaGlsZF9CTiAocCwgZHNh LT5wdWJfa2V5KTsKLSsgICAgICB4ZW5jX3RhZ19hZGRfY2hpbGRfQk4gKHAsIGRzYV9wKTsKLSsg ICAgICB4ZW5jX3RhZ19hZGRfY2hpbGRfQk4gKHAsIGRzYV9xKTsKLSsgICAgICB4ZW5jX3RhZ19h ZGRfY2hpbGRfQk4gKHAsIGRzYV9nKTsKLSsgICAgICB4ZW5jX3RhZ19hZGRfY2hpbGRfQk4gKHAs IGRzYV9wdWJfa2V5KTsKLSAKLSAgICAgICB4ZW5jX3RhZ19hZGRfY2hpbGQgKGRzYWtleXZhbCwg eGVuY190YWdfZmluYWxpemUgKHApKTsKLSAgICAgICB4ZW5jX3RhZ19hZGRfY2hpbGQgKGRzYWtl eXZhbCwgeGVuY190YWdfZmluYWxpemUgKHEpKTsKLUBAIC02MTg3LDcgKzYyMjgsNyBAQCBjYWRk cl90IHhlbmNfeDUwOV9nZXRfa2V5X2lkZW50aWZpZXIgKFg1Ci0gCi0gICByZXQgPSBka19hbGxv Y19ib3ggKGlrZXlpZC0+bGVuZ3RoLCBEVl9CSU4pOwotICAgbWVtY3B5IChyZXQsIGlrZXlpZC0+ ZGF0YSwgaWtleWlkLT5sZW5ndGgpOwotLSAgTV9BU04xX09DVEVUX1NUUklOR19mcmVlKGlrZXlp ZCk7Ci0rICBBU04xX1NUUklOR19mcmVlKGlrZXlpZCk7Ci0gICByZXR1cm4gcmV0OwotIH0KLSAK LUBAIC02MjQ3LDcgKzYyODgsNyBAQCBiaWZfeDUwOV9nZXRfc3ViamVjdCAoY2FkZHJfdCAqIHFz dCwgY2FkCi0gCi0gICByZXQgPSBka19hbGxvY19ib3ggKGlrZXlpZC0+bGVuZ3RoLCBEVl9CSU4p OwotICAgbWVtY3B5IChyZXQsIGlrZXlpZC0+ZGF0YSwgaWtleWlkLT5sZW5ndGgpOwotLSAgTV9B U04xX09DVEVUX1NUUklOR19mcmVlKGlrZXlpZCk7Ci0rICBBU04xX1NUUklOR19mcmVlKGlrZXlp ZCk7Ci0gICByZXR1cm4gcmV0OwotIH0KLSAKLUBAIC02ODA2LDcgKzY4NDcsNyBAQCBiaWZfeGVu Y194NTA5X2Nzcl9nZW5lcmF0ZSAoY2FkZHJfdCAqIHFzCi0gCXNrX1g1MDlfRVhURU5TSU9OX3B1 c2goc3RfZXh0cywgZXgpOwotICAgICB9Ci0gICBYNTA5X1JFUV9hZGRfZXh0ZW5zaW9ucyh4LCBz dF9leHRzKTsKLS0gIGlmICghWDUwOV9SRVFfc2lnbiAoeCwgcGssIChway0+dHlwZSA9PSBFVlBf UEtFWV9SU0EgPyBFVlBfbWQ1KCkgOiBFVlBfZHNzMSgpKSkpCi0rICBpZiAoIVg1MDlfUkVRX3Np Z24gKHgsIHBrLCAoRVZQX1BLRVlfaWQocGspID09IEVWUF9QS0VZX1JTQSA/IEVWUF9tZDUoKSA6 IEVWUF9zaGExKCkpKSkKLSAgICAgewotICAgICAgIHBrID0gTlVMTDsgLyoga2VlcCBvbmUgaW4g dGhlIHhlbmNfa2V5ICovCi0gICAgICAgKmVycl9yZXQgPSBzcnZfbWFrZV9uZXdfZXJyb3IgKCI0 MjAwMCIsICJYRUNYWCIsICJDYW4gbm90IHNpZ24gY2VydGlmaWNhdGUgOiAlcyIsIGdldF9zc2xf ZXJyb3JfdGV4dCAoYnVmLCBzaXplb2YgKGJ1ZikpKTsKLUBAIC02OTQ1LDE3ICs2OTg2LDE3IEBA IGJpZl94ZW5jX3g1MDlfZnJvbV9jc3IgKGNhZGRyX3QgKiBxc3QsIGMKLSAgICAgICAqZXJyX3Jl dCA9IHNydl9tYWtlX25ld19lcnJvciAoIjQyMDAwIiwgIlhFQ1hYIiwgIkNhbiBub3Qgc2lnbiBj ZXJ0aWZpY2F0ZSIpOwotICAgICAgIGdvdG8gZXJyOwotICAgICB9Ci0tICBzd2l0Y2ggKEVWUF9Q S0VZX3R5cGUgKGNsaV9way0+dHlwZSkpCi0rICBzd2l0Y2ggKEVWUF9QS0VZX3R5cGUgKEVWUF9Q S0VZX2lkKGNsaV9waykpKQotICAgICB7Ci0gICAgICAgY2FzZSBFVlBfUEtFWV9EU0E6Ci0gCSAg c2lnbl9hbGdvbmFtZSA9IERTSUdfRFNBX1NIQTFfQUxHTzsKLSAJICBlbmNfYWxnb25hbWUgPSBY RU5DX0RTQV9BTEdPOwotLQkgIGRzYSA9IGNsaV9way0+cGtleS5kc2E7Ci0rCSAgZHNhID0gRVZQ X1BLRVlfZ2V0MF9EU0EoY2xpX3BrKTsKLSAJICBicmVhazsKLSAgICAgICBjYXNlIEVWUF9QS0VZ X1JTQToKLSAJICBzaWduX2FsZ29uYW1lID0gRFNJR19SU0FfU0hBMV9BTEdPOwotIAkgIGVuY19h bGdvbmFtZSA9IFhFTkNfUlNBX0FMR087Ci0tCSAgcnNhID0gY2xpX3BrLT5wa2V5LnJzYTsKLSsJ ICByc2EgPSBFVlBfUEtFWV9nZXQwX1JTQShjbGlfcGspOwotIAkgIGJyZWFrOwotICAgICAgIGRl ZmF1bHQ6Ci0gCSAgKmVycl9yZXQgPSBzcnZfbWFrZV9uZXdfZXJyb3IgKCI0MjAwMCIsICJYRUNY WCIsICJUaGUgdHlwZSBvZiBwdWJsaWMga2V5IGlzIG5vdCBzdXBwb3J0ZWQgbXVzIHRiZSBSU0Eg b3IgRFNBIik7Ci1AQCAtNzAzMiwxOSArNzA3MywxOSBAQCBiaWZfeGVuY19wa2NzMTJfZXhwb3J0 IChjYWRkcl90ICogcXN0LCBjCi0gICBpZiAoZXhwb3J0X2NoYWluKQotICAgICB7Ci0gICAgICAg aW50IGk7Ci0tICAgICAgWDUwOV9TVE9SRV9DVFggc3RvcmVfY3R4OwotLSAgICAgIFg1MDlfU1RP UkVfQ1RYX2luaXQgKCZzdG9yZV9jdHgsIENBX2NlcnRzLCB4LCBOVUxMKTsKLS0gICAgICBpZiAo WDUwOV92ZXJpZnlfY2VydCAoJnN0b3JlX2N0eCkgPiAwKQotLQljaGFpbiA9IFg1MDlfU1RPUkVf Q1RYX2dldDFfY2hhaW4gKCZzdG9yZV9jdHgpOwotKyAgICAgIFg1MDlfU1RPUkVfQ1RYICpjdHg7 Ci0rICAgICAgWDUwOV9TVE9SRV9DVFhfaW5pdCAoY3R4LCBDQV9jZXJ0cywgeCwgTlVMTCk7Ci0r ICAgICAgaWYgKFg1MDlfdmVyaWZ5X2NlcnQgKGN0eCkgPiAwKQotKwljaGFpbiA9IFg1MDlfU1RP UkVfQ1RYX2dldDFfY2hhaW4gKGN0eCk7Ci0gICAgICAgZWxzZQotIAl7Ci0gCSAgY29uc3QgY2hh ciAqZXJyX3N0cjsKLS0JICBlcnJfc3RyID0gWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcg KHN0b3JlX2N0eC5lcnJvcik7Ci0rCSAgZXJyX3N0ciA9IFg1MDlfdmVyaWZ5X2NlcnRfZXJyb3Jf c3RyaW5nIChYNTA5X1NUT1JFX0NUWF9nZXRfZXJyb3IoY3R4KSk7Ci0gCSAgKmVycl9yZXQgPSBz cnZfbWFrZV9uZXdfZXJyb3IgKCIyMjAyMyIsICJYRU5DWCIsICJYNTA5IGVycm9yOiAlcyIsIGVy cl9zdHIpOwotLQkgIFg1MDlfU1RPUkVfQ1RYX2NsZWFudXAgKCZzdG9yZV9jdHgpOwotKwkgIFg1 MDlfU1RPUkVfQ1RYX2NsZWFudXAgKGN0eCk7Ci0gCSAgZ290byBlcnI7Ci0gCX0KLS0gICAgICBY NTA5X1NUT1JFX0NUWF9jbGVhbnVwICgmc3RvcmVfY3R4KTsKLSsgICAgICBYNTA5X1NUT1JFX0NU WF9jbGVhbnVwIChjdHgpOwotICAgICAgIGlmIChjaGFpbikKLSAJewotIAkgIGNlcnRzID0gc2tf WDUwOV9uZXdfbnVsbCAoKTsKLUBAIC03MTUyLDE2ICs3MTkzLDE2IEBAIGJpZl94ZW5jX3B1Ymtl eV9wZW1fZXhwb3J0IChjYWRkcl90ICogcXMKLSAgICAgewotICAgICAgIGsgPSBYNTA5X2dldF9w dWJrZXkgKGtleS0+eGVrX3g1MDkpOwotICNpZmRlZiBFVlBfUEtFWV9SU0EKLS0gICAgICBpZiAo ay0+dHlwZSA9PSBFVlBfUEtFWV9SU0EpCi0rICAgICAgaWYgKEVWUF9QS0VZX2lkKGspID09IEVW UF9QS0VZX1JTQSkKLSAJewotLQkgIFJTQSAqIHggPSBrLT5wa2V5LnJzYTsKLSsJICBSU0EgKngg PSBFVlBfUEtFWV9nZXQwX1JTQShrKTsKLSAJICBQRU1fd3JpdGVfYmlvX1JTQV9QVUJLRVkgKGIs IHgpOwotIAl9Ci0gI2VuZGlmCi0gI2lmZGVmIEVWUF9QS0VZX0RTQQotLSAgICAgIGlmIChrLT50 eXBlID09IEVWUF9QS0VZX0RTQSkKLSsgICAgICBpZiAoRVZQX1BLRVlfaWQoaykgPT0gRVZQX1BL RVlfRFNBKQotIAl7Ci0tCSAgRFNBICogeCA9IGstPnBrZXkuZHNhOwotKwkgIERTQSAqIHggPSBF VlBfUEtFWV9nZXQwX0RTQShrKTsKLSAJICBQRU1fd3JpdGVfYmlvX0RTQV9QVUJLRVkgKGIsIHgp OwotIAl9Ci0gI2VuZGlmCi1AQCAtNzIwOCwxNiArNzI0OSwxNiBAQCBiaWZfeGVuY19wdWJrZXlf ZGVyX2V4cG9ydCAoY2FkZHJfdCAqIHFzCi0gICAgIHsKLSAgICAgICBrID0gWDUwOV9nZXRfcHVi a2V5IChrZXktPnhla194NTA5KTsKLSAjaWZkZWYgRVZQX1BLRVlfUlNBCi0tICAgICAgaWYgKGst PnR5cGUgPT0gRVZQX1BLRVlfUlNBKQotKyAgICAgIGlmIChFVlBfUEtFWV9pZChrKSA9PSBFVlBf UEtFWV9SU0EpCi0gCXsKLS0JICBSU0EgKiB4ID0gay0+cGtleS5yc2E7Ci0rCSAgUlNBICogeCA9 IEVWUF9QS0VZX2dldDBfUlNBKGspOwotIAkgIGkyZF9SU0FfUFVCS0VZX2JpbyAoYiwgeCk7Ci0g CX0KLSAjZW5kaWYKLSAjaWZkZWYgRVZQX1BLRVlfRFNBCi0tICAgICAgaWYgKGstPnR5cGUgPT0g RVZQX1BLRVlfRFNBKQotKyAgICAgIGlmIChFVlBfUEtFWV9pZChrKSA9PSBFVlBfUEtFWV9EU0Ep Ci0gCXsKLS0JICBEU0EgKiB4ID0gay0+cGtleS5kc2E7Ci0rCSAgRFNBICogeCA9IEVWUF9QS0VZ X2dldDBfRFNBKGspOwotIAkgIGkyZF9EU0FfUFVCS0VZX2JpbyAoYiwgeCk7Ci0gCX0KLSAjZW5k aWYKLUBAIC03MjQ1LDcgKzcyODYsNyBAQCBlcnI6Ci0gfQotIAotIHN0YXRpYyBjYWRkcl90Ci0t Qk4yYmluYm94IChCSUdOVU0gKiB4KQotK0JOMmJpbmJveCAoY29uc3QgQklHTlVNICogeCkKLSB7 Ci0gICBzaXplX3QgYnVmX2xlbiwgbjsKLSAgIGNhZGRyX3QgYnVmOwotQEAgLTcyODAsOCArNzMy MSwxNCBAQCBzdGF0aWMgY2FkZHJfdAotIHhlbmNfcnNhX3B1Yl9tYWdpYyAoUlNBICogeCkKLSB7 Ci0gICBjYWRkcl90IHJldDsKLS0gIGNhZGRyX3QgbiA9IEJOMmJpbmJveCAoeC0+bik7IC8qIG1v ZHVsdXMgKi8KLS0gIGNhZGRyX3QgZSA9IEJOMmJpbmJveCAoeC0+ZSk7IC8qIHB1YmxpYyBleHBv bmVudCAqLwotKyAgY2FkZHJfdCBuOwotKyAgY2FkZHJfdCBlOwotKyAgY29uc3QgQklHTlVNICpy c2FfbiwgKnJzYV9lOwotKwotKyAgUlNBX2dldDBfa2V5KHgsICZyc2FfbiwgJnJzYV9lLCBOVUxM KTsKLSsgIG4gPSBCTjJiaW5ib3ggKHJzYV9uKTsgLyogbW9kdWx1cyAqLwotKyAgZSA9IEJOMmJp bmJveCAocnNhX2UpOyAvKiBwdWJsaWMgZXhwb25lbnQgKi8KLSsKLSAgIG4gPSB4ZW5jX2VuY29k ZV9iYXNlNjRfYmluYm94IChuLCAxKTsKLSAgIGUgPSB4ZW5jX2VuY29kZV9iYXNlNjRfYmluYm94 IChlLCAxKTsKLSAgIHJldCA9IGRrX2FsbG9jX2JveCAoYm94X2xlbmd0aCAobikgKyBib3hfbGVu Z3RoIChlKSArIDQgLyogdHdvIGRvdHMgLSBvbmUgdHJhaWxpbmcgemVybyArIFJTQSBwcmVmaXgg Ki8sIERWX1NUUklORyk7Ci1AQCAtNzMwNiw5ICs3MzUzLDkgQEAgYmlmX3hlbmNfcHVia2V5X21h Z2ljX2V4cG9ydCAoY2FkZHJfdCAqCi0gICAgIHsKLSAgICAgICBrID0gWDUwOV9nZXRfcHVia2V5 IChrZXktPnhla194NTA5KTsKLSAjaWZkZWYgRVZQX1BLRVlfUlNBCi0tICAgICAgaWYgKGstPnR5 cGUgPT0gRVZQX1BLRVlfUlNBKQotKyAgICAgIGlmIChFVlBfUEtFWV9pZChrKSA9PSBFVlBfUEtF WV9SU0EpCi0gCXsKLS0JICBSU0EgKiB4ID0gay0+cGtleS5yc2E7Ci0rCSAgUlNBICogeCA9IEVW UF9QS0VZX2dldDBfUlNBKGspOwotIAkgIHJldCA9IHhlbmNfcnNhX3B1Yl9tYWdpYyAoeCk7Ci0g CX0KLSAjZW5kaWYKLUBAIC03MzQ5LDEwICs3Mzk2LDE2IEBAIHN0YXRpYyBjYWRkcl90Ci0geGVu Y19yc2FfcHViX3NzaF9leHBvcnQgKFJTQSAqIHgpCi0gewotICAgc3RhdGljIGNoYXIgKiBzc2hf aGVhZGVyID0gIlx4MDBceDAwXHgwMFx4MDdzc2gtcnNhIjsKLSsgIGNvbnN0IEJJR05VTSAqcnNh X24sICpyc2FfZTsKLSAgIGNhZGRyX3QgcmV0OwotICAgaW50IGxlbiwgcG9zOwotLSAgY2FkZHJf dCBuID0gQk4yYmluYm94ICh4LT5uKTsgLyogbW9kdWx1cyAqLwotLSAgY2FkZHJfdCBlID0gQk4y YmluYm94ICh4LT5lKTsgLyogcHVibGljIGV4cG9uZW50ICovCi0rICBjYWRkcl90IG47Ci0rICBj YWRkcl90IGU7Ci0rCi0rICBSU0FfZ2V0MF9rZXkoeCwgJnJzYV9uLCAmcnNhX2UsIE5VTEwpOwot KyAgbiA9IEJOMmJpbmJveCAocnNhX24pOyAvKiBtb2R1bHVzICovCi0rICBlID0gQk4yYmluYm94 IChyc2FfZSk7IC8qIHB1YmxpYyBleHBvbmVudCAqLwotKwotICAgbGVuID0gMTEgKyA4ICsgYm94 X2xlbmd0aCAobikgKyBib3hfbGVuZ3RoIChlKTsKLSAgIGlmIChuWzBdICYgMHg4MCkKLSAgICAg bGVuICsrOwotQEAgLTczODMsOSArNzQzNiw5IEBAIGJpZl94ZW5jX3B1YmtleV9zc2hfZXhwb3J0 IChjYWRkcl90ICogcXMKLSAgICAgewotICAgICAgIGsgPSBYNTA5X2dldF9wdWJrZXkgKGtleS0+ eGVrX3g1MDkpOwotICNpZmRlZiBFVlBfUEtFWV9SU0EKLS0gICAgICBpZiAoay0+dHlwZSA9PSBF VlBfUEtFWV9SU0EpCi0rICAgICAgaWYgKEVWUF9QS0VZX2lkKGspID09IEVWUF9QS0VZX1JTQSkK LSAJewotLQkgIFJTQSAqIHggPSBrLT5wa2V5LnJzYTsKLSsJICBSU0EgKiB4ID0gRVZQX1BLRVlf Z2V0MF9SU0Eoayk7Ci0gCSAgcmV0ID0geGVuY19yc2FfcHViX3NzaF9leHBvcnQgKHgpOwotIAl9 Ci0gI2VuZGlmCi1AQCAtNzQxOCw3ICs3NDcxLDcgQEAgYmlmX3hlbmNfU1BLSV9yZWFkIChjYWRk cl90ICogcXN0LCBjYWRkcgotICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gICBwayA9IE5F VFNDQVBFX1NQS0lfZ2V0X3B1YmtleSAoc3BraSk7Ci0tICBpZiAoIXBrIHx8IHBrLT50eXBlICE9 IEVWUF9QS0VZX1JTQSkKLSsgIGlmICghcGsgfHwgRVZQX1BLRVlfaWQocGspICE9IEVWUF9QS0VZ X1JTQSkKLSAgICAgewotICAgICAgIE5FVFNDQVBFX1NQS0lfZnJlZSAoc3BraSk7Ci0gICAgICAg KmVycl9yZXQgPSBzcnZfbWFrZV9uZXdfZXJyb3IgKCI0MjAwMCIsICJYRUNYWCIsICJDYW4gbm90 IHJldHJpZXZlIFJTQSBrZXkiKTsKLUBAIC03NTk1LDE0ICs3NjQ4LDE0IEBAIGJpZl94ZW5jX3g1 MDlfY2FfY2VydHNfbGlzdCAoY2FkZHJfdCAqIHEKLSAgIHNlY19jaGVja19kYmEgKChRSSopcXN0 LCBtZSk7Ci0gICBpbiA9IEJJT19uZXcgKEJJT19zX21lbSAoKSk7Ci0gICBtdXRleF9lbnRlciAo eGVuY19rZXlzX210eCk7Ci0tICBjZXJ0cyA9IENBX2NlcnRzLT5vYmpzOwotKyAgY2VydHMgPSBY NTA5X1NUT1JFX2dldDBfb2JqZWN0cyhDQV9jZXJ0cyk7Ci0gICBsZW4gPSBza19YNTA5X09CSkVD VF9udW0gKGNlcnRzKTsKLSAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLSAgICAgewotICAg ICAgIFg1MDlfT0JKRUNUICogb2JqID0gc2tfWDUwOV9PQkpFQ1RfdmFsdWUgKGNlcnRzLCBpKTsK LS0gICAgICBpZiAob2JqLT50eXBlID09IFg1MDlfTFVfWDUwOSkKLSsgICAgICBpZiAoWDUwOV9P QkpFQ1RfZ2V0X3R5cGUob2JqKSA9PSBYNTA5X0xVX1g1MDkpCi0gCXsKLS0JICBYNTA5ICp4ID0g b2JqLT5kYXRhLng1MDk7Ci0rCSAgWDUwOSAqeCA9IFg1MDlfT0JKRUNUX2dldDBfWDUwOShvYmop OwotIAkgIGNhZGRyX3QgaXRtOwotIAkgIGludCBibGVuOwotIAkgIEJJT19yZXNldCAoaW4pOwot LS0tIGEvbGlic3JjL1dpL3htbGVuYy5oCi0rKysgYi9saWJzcmMvV2kveG1sZW5jLmgKLUBAIC0z OCw2ICszOCw3IEBACi0gI2luY2x1ZGUgPG9wZW5zc2wvZHNhLmg+Ci0gI2luY2x1ZGUgPG9wZW5z c2wvcnNhLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wvZGVzLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wv aG1hYy5oPgotIAotICNpZmRlZiBBRVNfRU5DX0VOQUJMRQotICNpbmNsdWRlIDxvcGVuc3NsL2Fl cy5oPgotQEAgLTYzMSw1ICs2MzIsMTgzIEBAIGNhZGRyX3QgKiB4bWxfZmluZF9hbnlfY2hpbGQg KGNhZGRyX3QgKgotIAotIGV4dGVybiBka19tdXRleF90ICogeGVuY19rZXlzX210eDsKLSAKLSsj aWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA8IDB4MTAxMDAwMDAKLSsKLStzdGF0aWMgaW5saW5l IEhNQUNfQ1RYICpITUFDX0NUWF9uZXcodm9pZCkKLSt7Ci0rCUhNQUNfQ1RYICpwOwotKwotKwlw ID0gY2FsbG9jKDEsIHNpemVvZihITUFDX0NUWCkpOwotKwlpZiAoIXApCi0rCQlyZXR1cm4gcDsK LSsJSE1BQ19DVFhfaW5pdChwKTsKLSsJcmV0dXJuIHA7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUg dm9pZCBITUFDX0NUWF9mcmVlKEhNQUNfQ1RYICpjdHgpCi0rewotKwlITUFDX0NUWF9jbGVhbnVw KGN0eCk7Ci0rCWZyZWUoY3R4KTsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSB2b2lkIFJTQV9nZXQw X2tleShjb25zdCBSU0EgKnIsIGNvbnN0IEJJR05VTSAqKm4sCi0rCQkJCWNvbnN0IEJJR05VTSAq KmUsIGNvbnN0IEJJR05VTSAqKmQpCi0rewotKwlpZiAobiAhPSBOVUxMKQotKwkJKm4gPSByLT5u OwotKwlpZiAoZSAhPSBOVUxMKQotKwkJKmUgPSByLT5lOwotKwlpZiAoZCAhPSBOVUxMKQotKwkJ KmQgPSByLT5kOwotK30KLSsKLStzdGF0aWMgaW5saW5lIHZvaWQgUlNBX2dldDBfZmFjdG9ycyhj b25zdCBSU0EgKnIsIGNvbnN0IEJJR05VTSAqKnAsCi0rCQkJCSAgICBjb25zdCBCSUdOVU0gKipx KQotK3sKLSsJaWYgKHAgIT0gTlVMTCkKLSsJCSpwID0gci0+cDsKLSsJaWYgKHEgIT0gTlVMTCkK LSsJCSpxID0gci0+cTsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSBSU0EgKkVWUF9QS0VZX2dldDBf UlNBKEVWUF9QS0VZICpwa2V5KQotK3sKLSsJaWYgKHBrZXktPnR5cGUgIT0gRVZQX1BLRVlfUlNB KQotKwkJcmV0dXJuIE5VTEw7Ci0rCXJldHVybiBwa2V5LT5wa2V5LnJzYTsKLSt9Ci0rCi0rc3Rh dGljIGlubGluZSB2b2lkIERIX2dldDBfa2V5KGNvbnN0IERIICpkaCwgY29uc3QgQklHTlVNICoq cHViX2tleSwKLSsJCQkgICAgICAgY29uc3QgQklHTlVNICoqcHJpdl9rZXkpCi0rewotKwlpZiAo cHViX2tleSAhPSBOVUxMKQotKwkJKnB1Yl9rZXkgPSBkaC0+cHViX2tleTsKLSsJaWYgKHByaXZf a2V5ICE9IE5VTEwpCi0rCQkqcHJpdl9rZXkgPSBkaC0+cHJpdl9rZXk7Ci0rfQotKwotKwotK3N0 YXRpYyBpbmxpbmUgdm9pZCBESF9nZXQwX3BxZyhjb25zdCBESCAqZGgsIGNvbnN0IEJJR05VTSAq KnAsIGNvbnN0IEJJR05VTSAqKnEsCi0rCQkJICAgICAgIGNvbnN0IEJJR05VTSAqKmcpCi0rewot KwlpZiAocCAhPSBOVUxMKQotKwkJKnAgPSBkaC0+cDsKLSsJaWYgKHEgIT0gTlVMTCkKLSsJCSpx ID0gZGgtPnE7Ci0rCWlmIChnICE9IE5VTEwpCi0rCQkqZyA9IGRoLT5nOwotK30KLSsKLStzdGF0 aWMgaW5saW5lIERTQSAqRVZQX1BLRVlfZ2V0MF9EU0EoRVZQX1BLRVkgKnBrZXkpCi0rewotKwlp ZiAocGtleS0+dHlwZSAhPSBFVlBfUEtFWV9EU0EpCi0rCQlyZXR1cm4gTlVMTDsKLSsJcmV0dXJu IHBrZXktPnBrZXkuZHNhOwotK30KLSsKLStzdGF0aWMgaW5saW5lIGludCBESF9zZXQwX3BxZyhE SCAqZGgsIEJJR05VTSAqcCwgQklHTlVNICpxLCBCSUdOVU0gKmcpCi0rewotKwkvKiBJZiB0aGUg ZmllbGRzIHAgYW5kIGcgaW4gZCBhcmUgTlVMTCwgdGhlIGNvcnJlc3BvbmRpbmcgaW5wdXQKLSsJ ICogcGFyYW1ldGVycyBNVVNUIGJlIG5vbi1OVUxMLiAgcSBtYXkgcmVtYWluIE5VTEwuCi0rCSAq LwotKwlpZiAoKGRoLT5wID09IE5VTEwgJiYgcCA9PSBOVUxMKQotKwkgICAgfHwgKGRoLT5nID09 IE5VTEwgJiYgZyA9PSBOVUxMKSkKLSsJCXJldHVybiAwOwotKwotKwlpZiAocCAhPSBOVUxMKSB7 Ci0rCQlCTl9mcmVlKGRoLT5wKTsKLSsJCWRoLT5wID0gcDsKLSsJfQotKwlpZiAocSAhPSBOVUxM KSB7Ci0rCQlCTl9mcmVlKGRoLT5xKTsKLSsJCWRoLT5xID0gcTsKLSsJfQotKwlpZiAoZyAhPSBO VUxMKSB7Ci0rCQlCTl9mcmVlKGRoLT5nKTsKLSsJCWRoLT5nID0gZzsKLSsJfQotKwotKwlpZiAo cSAhPSBOVUxMKSB7Ci0rCQlkaC0+bGVuZ3RoID0gQk5fbnVtX2JpdHMocSk7Ci0rCX0KLSsKLSsJ cmV0dXJuIDE7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgaW50IFJTQV9zZXQwX2tleShSU0EgKnIs IEJJR05VTSAqbiwgQklHTlVNICplLCBCSUdOVU0gKmQpCi0rewotKwkvKiBJZiB0aGUgZmllbGRz IG4gYW5kIGUgaW4gciBhcmUgTlVMTCwgdGhlIGNvcnJlc3BvbmRpbmcgaW5wdXQKLSsJICogcGFy YW1ldGVycyBNVVNUIGJlIG5vbi1OVUxMIGZvciBuIGFuZCBlLiAgZCBtYXkgYmUKLSsJICogbGVm dCBOVUxMIChpbiBjYXNlIG9ubHkgdGhlIHB1YmxpYyBrZXkgaXMgdXNlZCkuCi0rCSAqLwotKwlp ZiAoKHItPm4gPT0gTlVMTCAmJiBuID09IE5VTEwpCi0rCSAgICB8fCAoci0+ZSA9PSBOVUxMICYm IGUgPT0gTlVMTCkpCi0rCQlyZXR1cm4gMDsKLSsKLSsJaWYgKG4gIT0gTlVMTCkgewotKwkJQk5f ZnJlZShyLT5uKTsKLSsJCXItPm4gPSBuOwotKwl9Ci0rCWlmIChlICE9IE5VTEwpIHsKLSsJCUJO X2ZyZWUoci0+ZSk7Ci0rCQlyLT5lID0gZTsKLSsJfQotKwlpZiAoZCAhPSBOVUxMKSB7Ci0rCQlC Tl9mcmVlKHItPmQpOwotKwkJci0+ZCA9IGQ7Ci0rCX0KLSsKLSsJcmV0dXJuIDE7Ci0rfQotKwot K3N0YXRpYyBpbmxpbmUgdm9pZCBEU0FfZ2V0MF9wcWcoY29uc3QgRFNBICpkLCBjb25zdCBCSUdO VU0gKipwLAotKwkJCQljb25zdCBCSUdOVU0gKipxLCBjb25zdCBCSUdOVU0gKipnKQotK3sKLSsJ aWYgKHAgIT0gTlVMTCkKLSsJCSpwID0gZC0+cDsKLSsJaWYgKHEgIT0gTlVMTCkKLSsJCSpxID0g ZC0+cTsKLSsJaWYgKGcgIT0gTlVMTCkKLSsJCSpnID0gZC0+ZzsKLSt9Ci0rCi0rc3RhdGljIGlu bGluZSB2b2lkIERTQV9nZXQwX2tleShjb25zdCBEU0EgKmQsIGNvbnN0IEJJR05VTSAqKnB1Yl9r ZXksCi0rCQkJCWNvbnN0IEJJR05VTSAqKnByaXZfa2V5KQotK3sKLSsJaWYgKHB1Yl9rZXkgIT0g TlVMTCkKLSsJCSpwdWJfa2V5ID0gZC0+cHViX2tleTsKLSsJaWYgKHByaXZfa2V5ICE9IE5VTEwp Ci0rCQkqcHJpdl9rZXkgPSBkLT5wcml2X2tleTsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSBjb25z dCBTVEFDS19PRihYNTA5X0VYVEVOU0lPTikgKlg1MDlfZ2V0MF9leHRlbnNpb25zKGNvbnN0IFg1 MDkgKngpCi0rewotKwlyZXR1cm4geC0+Y2VydF9pbmZvLT5leHRlbnNpb25zOwotK30KLSsKLStz dGF0aWMgaW5saW5lIGludCBYNTA5X3VwX3JlZihYNTA5ICp4KQotK3sKLSsJcmV0dXJuIENSWVBU T19hZGQoJngtPnJlZmVyZW5jZXMsIDEsIENSWVBUT19MT0NLX1g1MDkpOwotK30KLSsKLStzdGF0 aWMgaW5saW5lIFNUQUNLX09GKFg1MDlfT0JKRUNUKSAqWDUwOV9TVE9SRV9nZXQwX29iamVjdHMo WDUwOV9TVE9SRSAqdikKLSt7Ci0rCXJldHVybiB2LT5vYmpzOwotK30KLSsKLStzdGF0aWMgaW5s aW5lIGludCBYNTA5X09CSkVDVF9nZXRfdHlwZShjb25zdCBYNTA5X09CSkVDVCAqYSkKLSt7Ci0r CXJldHVybiBhLT50eXBlOwotK30KLSsKLStzdGF0aWMgaW5saW5lIFg1MDkgKlg1MDlfT0JKRUNU X2dldDBfWDUwOShjb25zdCBYNTA5X09CSkVDVCAqYSkKLSt7Ci0rCWlmIChhID09IE5VTEwgfHwg YS0+dHlwZSAhPSBYNTA5X0xVX1g1MDkpCi0rCQlyZXR1cm4gTlVMTDsKLSsJcmV0dXJuIGEtPmRh dGEueDUwOTsKLSt9Ci0rCi0rI2VuZGlmCi0rCi0gI2VuZGlmCi0gCi0tLS0gYS9saWJzcmMvV2kv eG1sZW5jX2FsZ29zLmMKLSsrKyBiL2xpYnNyYy9XaS94bWxlbmNfYWxnb3MuYwotQEAgLTExNDks NyArMTE0OSw3IEBAIGludAotIGRzaWdfaG1hY19zaGEyNTZfZGlnZXN0IChka19zZXNzaW9uX3Qg KiBzZXNfaW4sIGxvbmcgbGVuLCB4ZW5jX2tleV90ICoga2V5LCBjYWRkcl90ICogc2lnbl9vdXQp Ci0gewotICAgdW5zaWduZWQgY2hhciAqIGRhdGE7Ci0tICBITUFDX0NUWCBjdHg7Ci0rICBITUFD X0NUWCAqY3R4OwotICAgdW5zaWduZWQgY2hhciBrZXlfZGF0YVszMiAqIDhdOwotICAgdW5zaWdu ZWQgY2hhciBtZCBbU0hBMjU2X0RJR0VTVF9MRU5HVEggKyAxXTsKLSAgIHVuc2lnbmVkIGNoYXIg bWQ2NCBbU0hBMjU2X0RJR0VTVF9MRU5HVEggKiAyICsgMV07Ci1AQCAtMTE4Miw3ICsxMTgyLDkg QEAgZHNpZ19obWFjX3NoYTI1Nl9kaWdlc3QgKGRrX3Nlc3Npb25fdCAqCi0gICAgICAgZGVmYXVs dDoKLSAJICByZXR1cm4gMDsKLSAgICAgfQotLQotKyAgY3R4ID0gSE1BQ19DVFhfbmV3KCk7Ci0r ICBpZiAoIWN0eCkKLSsJICByZXR1cm4gMDsKLSAKLSAgIGRhdGEgPSAodW5zaWduZWQgY2hhciAq KSBka19hbGxvY19ib3ggKGxlbiwgRFZfQ19TVFJJTkcpOwotICAgQ0FUQ0hfUkVBRF9GQUlMIChz ZXNfaW4pCi1AQCAtMTE5MiwxNCArMTE5NCwxNSBAQCBkc2lnX2htYWNfc2hhMjU2X2RpZ2VzdCAo ZGtfc2Vzc2lvbl90ICoKLSAgIEZBSUxFRAotICAgICB7Ci0gICAgICAgZGtfZnJlZV9ib3ggKChi b3hfdCkgZGF0YSk7Ci0rICAgICAgSE1BQ19DVFhfZnJlZShjdHgpOwotICAgICAgIHJldHVybiAw OwotICAgICB9Ci0gICBFTkRfUkVBRF9GQUlMIChzZXNfaW4pOwotIAotLSAgSE1BQ19Jbml0KCZj dHgsICh2b2lkKikga2V5X2RhdGEgLCBrZXlfbGVuLCBFVlBfc2hhMjU2ICgpKTsKLS0gIEhNQUNf VXBkYXRlKCZjdHgsIGRhdGEsIGxlbik7Ci0tICBITUFDX0ZpbmFsKCZjdHgsIG1kLCAmaG1hY19s ZW4pOwotLSAgSE1BQ19jbGVhbnVwKCZjdHgpOwotKyAgSE1BQ19Jbml0X2V4KGN0eCwgKHZvaWQq KSBrZXlfZGF0YSAsIGtleV9sZW4sIEVWUF9zaGEyNTYgKCksIE5VTEwpOwotKyAgSE1BQ19VcGRh dGUoY3R4LCBkYXRhLCBsZW4pOwotKyAgSE1BQ19GaW5hbChjdHgsIG1kLCAmaG1hY19sZW4pOwot KyAgSE1BQ19DVFhfZnJlZShjdHgpOwotIAotICAgaWYgKGhtYWNfbGVuICE9IFNIQTI1Nl9ESUdF U1RfTEVOR1RIKQotICAgICBHUEZfVDsKLUBAIC0xMjIwLDcgKzEyMjMsNyBAQCBkc2lnX2htYWNf c2hhMjU2X2RpZ2VzdCAoZGtfc2Vzc2lvbl90ICoKLSBpbnQKLSBkc2lnX2htYWNfc2hhMjU2X3Zl cmlmeSAoZGtfc2Vzc2lvbl90ICogc2VzX2luLCBsb25nIGxlbiwgeGVuY19rZXlfdCAqIGtleSwg Y2FkZHJfdCBkaWdlc3QpCi0gewotLSAgSE1BQ19DVFggY3R4OwotKyAgSE1BQ19DVFggKmN0eDsK LSAgIHVuc2lnbmVkIGNoYXIgKiBkYXRhOwotICAgdW5zaWduZWQgY2hhciBrZXlfZGF0YVszICog OF07Ci0gICB1bnNpZ25lZCBjaGFyIG1kIFtTSEEyNTZfRElHRVNUX0xFTkdUSCArIDFdOwotQEAg LTEyNDksNiArMTI1Miw5IEBAIGRzaWdfaG1hY19zaGEyNTZfdmVyaWZ5IChka19zZXNzaW9uX3Qg KgotIAkgIHJldHVybiAwOwotICAgICB9Ci0gCi0rICBjdHggPSBITUFDX0NUWF9uZXcoKTsKLSsg IGlmICghY3R4KQotKwkgIHJldHVybiAwOwotIAotICAgZGF0YSA9ICh1bnNpZ25lZCBjaGFyICop IGRrX2FsbG9jX2JveCAobGVuLCBEVl9DX1NUUklORyk7Ci0gICBDQVRDSF9SRUFEX0ZBSUwgKHNl c19pbikKLUBAIC0xMjU4LDE0ICsxMjY0LDE1IEBAIGRzaWdfaG1hY19zaGEyNTZfdmVyaWZ5IChk a19zZXNzaW9uX3QgKgotICAgRkFJTEVECi0gICAgIHsKLSAgICAgICBka19mcmVlX2JveCAoKGJv eF90KSBkYXRhKTsKLSsgICAgICBITUFDX0NUWF9mcmVlKGN0eCk7Ci0gICAgICAgcmV0dXJuIDA7 Ci0gICAgIH0KLSAgIEVORF9SRUFEX0ZBSUwgKHNlc19pbik7Ci0gCi0tICBITUFDX0luaXQoJmN0 eCwgKHZvaWQqKSBrZXlfZGF0YSAsIGtleV9sZW4sIEVWUF9zaGEyNTYgKCkpOwotLSAgSE1BQ19V cGRhdGUoJmN0eCwgZGF0YSwgbGVuKTsKLS0gIEhNQUNfRmluYWwoJmN0eCwgbWQsICZobWFjX2xl bik7Ci0tICBITUFDX2NsZWFudXAoJmN0eCk7Ci0rICBITUFDX0luaXRfZXgoY3R4LCAodm9pZCop IGtleV9kYXRhICwga2V5X2xlbiwgRVZQX3NoYTI1NiAoKSwgTlVMTCk7Ci0rICBITUFDX1VwZGF0 ZShjdHgsIGRhdGEsIGxlbik7Ci0rICBITUFDX0ZpbmFsKGN0eCwgbWQsICZobWFjX2xlbik7Ci0r ICBITUFDX0NUWF9mcmVlKGN0eCk7Ci0gICBka19mcmVlX2JveCAoKGJveF90KSBkYXRhKTsKLSAK LSAgIGxlbjEgPSB4ZW5jX2VuY29kZV9iYXNlNjQgKChjaGFyICopbWQsIG1kNjQsIGhtYWNfbGVu KTsKLUBAIC0xNTg2LDcgKzE1OTMsNyBAQCBpbnQKLSBkc2lnX2htYWNfc2hhMV9kaWdlc3QgKGRr X3Nlc3Npb25fdCAqIHNlc19pbiwgbG9uZyBsZW4sIHhlbmNfa2V5X3QgKiBrZXksIGNhZGRyX3Qg KiBzaWduX291dCkKLSB7Ci0gICB1bnNpZ25lZCBjaGFyICogZGF0YTsKLS0gIEhNQUNfQ1RYIGN0 eDsKLSsgIEhNQUNfQ1RYICpjdHg7Ci0gICB1bnNpZ25lZCBjaGFyIGtleV9kYXRhWzMyICogOF07 Ci0gICB1bnNpZ25lZCBjaGFyIG1kIFtTSEFfRElHRVNUX0xFTkdUSCArIDFdOwotICAgdW5zaWdu ZWQgY2hhciBtZDY0IFtTSEFfRElHRVNUX0xFTkdUSCAqIDIgKyAxXTsKLUBAIC0xNjIwLDYgKzE2 MjcsOSBAQCBkc2lnX2htYWNfc2hhMV9kaWdlc3QgKGRrX3Nlc3Npb25fdCAqIHNlCi0gCSAgcmV0 dXJuIDA7Ci0gICAgIH0KLSAKLSsgIGN0eCA9IEhNQUNfQ1RYX25ldygpOwotKyAgaWYgKCFjdHgp Ci0rCSAgcmV0dXJuIDA7Ci0gCi0gICBkYXRhID0gKHVuc2lnbmVkIGNoYXIgKikgZGtfYWxsb2Nf Ym94IChsZW4sIERWX0NfU1RSSU5HKTsKLSAgIENBVENIX1JFQURfRkFJTCAoc2VzX2luKQotQEAg LTE2MjksMTQgKzE2MzksMTUgQEAgZHNpZ19obWFjX3NoYTFfZGlnZXN0IChka19zZXNzaW9uX3Qg KiBzZQotICAgRkFJTEVECi0gICAgIHsKLSAgICAgICBka19mcmVlX2JveCAoKGJveF90KSBkYXRh KTsKLSsgICAgICBITUFDX0NUWF9mcmVlKGN0eCk7Ci0gICAgICAgcmV0dXJuIDA7Ci0gICAgIH0K LSAgIEVORF9SRUFEX0ZBSUwgKHNlc19pbik7Ci0gCi0tICBITUFDX0luaXQoJmN0eCwgKHZvaWQq KSBrZXlfZGF0YSAsIGtleV9sZW4sIEVWUF9zaGExICgpKTsKLS0gIEhNQUNfVXBkYXRlKCZjdHgs IGRhdGEsIGxlbik7Ci0tICBITUFDX0ZpbmFsKCZjdHgsIG1kLCAmaG1hY19sZW4pOwotLSAgSE1B Q19jbGVhbnVwKCZjdHgpOwotKyAgSE1BQ19Jbml0X2V4KGN0eCwgKHZvaWQqKSBrZXlfZGF0YSAs IGtleV9sZW4sIEVWUF9zaGExICgpLCBOVUxMKTsKLSsgIEhNQUNfVXBkYXRlKGN0eCwgZGF0YSwg bGVuKTsKLSsgIEhNQUNfRmluYWwoY3R4LCBtZCwgJmhtYWNfbGVuKTsKLSsgIEhNQUNfQ1RYX2Zy ZWUoY3R4KTsKLSAKLSAgIGlmIChobWFjX2xlbiAhPSBTSEFfRElHRVNUX0xFTkdUSCkKLSAgICAg R1BGX1Q7Ci1AQCAtMTY1Nyw3ICsxNjY4LDcgQEAgZHNpZ19obWFjX3NoYTFfZGlnZXN0IChka19z ZXNzaW9uX3QgKiBzZQotIGludAotIGRzaWdfaG1hY19zaGExX3ZlcmlmeSAoZGtfc2Vzc2lvbl90 ICogc2VzX2luLCBsb25nIGxlbiwgeGVuY19rZXlfdCAqIGtleSwgY2FkZHJfdCBkaWdlc3QpCi0g ewotLSAgSE1BQ19DVFggY3R4OwotKyAgSE1BQ19DVFggKmN0eDsKLSAgIHVuc2lnbmVkIGNoYXIg KiBkYXRhOwotICAgdW5zaWduZWQgY2hhciBrZXlfZGF0YVszICogOF07Ci0gICB1bnNpZ25lZCBj aGFyIG1kIFtTSEFfRElHRVNUX0xFTkdUSCArIDFdOwotQEAgLTE2ODYsNiArMTY5Nyw5IEBAIGRz aWdfaG1hY19zaGExX3ZlcmlmeSAoZGtfc2Vzc2lvbl90ICogc2UKLSAJICByZXR1cm4gMDsKLSAg ICAgfQotIAotKyAgY3R4ID0gSE1BQ19DVFhfbmV3KCk7Ci0rICBpZiAoIWN0eCkKLSsJICByZXR1 cm4gMDsKLSAKLSAgIGRhdGEgPSAodW5zaWduZWQgY2hhciAqKSBka19hbGxvY19ib3ggKGxlbiwg RFZfQ19TVFJJTkcpOwotICAgQ0FUQ0hfUkVBRF9GQUlMIChzZXNfaW4pCi1AQCAtMTY5NSwxNCAr MTcwOSwxNSBAQCBkc2lnX2htYWNfc2hhMV92ZXJpZnkgKGRrX3Nlc3Npb25fdCAqIHNlCi0gICBG QUlMRUQKLSAgICAgewotICAgICAgIGRrX2ZyZWVfYm94ICgoYm94X3QpIGRhdGEpOwotKyAgICAg IEhNQUNfQ1RYX2ZyZWUoY3R4KTsKLSAgICAgICByZXR1cm4gMDsKLSAgICAgfQotICAgRU5EX1JF QURfRkFJTCAoc2VzX2luKTsKLSAKLS0gIEhNQUNfSW5pdCgmY3R4LCAodm9pZCopIGtleV9kYXRh ICwga2V5X2xlbiwgRVZQX3NoYTEgKCkpOwotLSAgSE1BQ19VcGRhdGUoJmN0eCwgZGF0YSwgbGVu KTsKLS0gIEhNQUNfRmluYWwoJmN0eCwgbWQsICZobWFjX2xlbik7Ci0tICBITUFDX2NsZWFudXAo JmN0eCk7Ci0rICBITUFDX0luaXRfZXgoY3R4LCAodm9pZCopIGtleV9kYXRhICwga2V5X2xlbiwg RVZQX3NoYTEgKCksIE5VTEwpOwotKyAgSE1BQ19VcGRhdGUoY3R4LCBkYXRhLCBsZW4pOwotKyAg SE1BQ19GaW5hbChjdHgsIG1kLCAmaG1hY19sZW4pOwotKyAgSE1BQ19DVFhfZnJlZShjdHgpOwot ICAgZGtfZnJlZV9ib3ggKChib3hfdCkgZGF0YSk7Ci0gCi0gICBsZW4xID0geGVuY19lbmNvZGVf YmFzZTY0ICgoY2hhciAqKW1kLCBtZDY0LCBobWFjX2xlbik7Ci1AQCAtMTc2Myw3ICsxNzc4LDcg QEAgaW50IHhlbmNfYWVzX2VuY3J5cHRvciAoZGtfc2Vzc2lvbl90ICogcwotICAgY2FkZHJfdCBv dXRidWZfYmVnOwotICAgaW50IGxlbjsKLSAgIGNhZGRyX3QgZW5jb2RlZF9vdXQ7Ci0tICBFVlBf Q0lQSEVSX0NUWCBjdHg7Ci0rICBFVlBfQ0lQSEVSX0NUWCAqY3R4OwotICAgdW5zaWduZWQgY2hh ciAqIGl2ZWMgPSAma2V5LT5raS5hZXMuaXZbMF07Ci0gCi0gICBDQVRDSF9SRUFEX0ZBSUwgKHNl c19pbikKLUBAIC0xNzc4LDcgKzE3OTMsNyBAQCBpbnQgeGVuY19hZXNfZW5jcnlwdG9yIChka19z ZXNzaW9uX3QgKiBzCi0gICBFTkRfUkVBRF9GQUlMIChzZXNfaW4pOwotIAotICNpZiAxCi0tICBF VlBfQ0lQSEVSX0NUWF9pbml0KCZjdHgpOwotKyAgY3R4ID0gRVZQX0NJUEhFUl9DVFhfbmV3KCk7 Ci0gICBvdXRidWZfYmVnID0gZGtfYWxsb2NfYm94IChib3hfbGVuZ3RoICh0ZXh0KSArIDE2LCBE Vl9CSU4pOwotICAgbWVtY3B5IChvdXRidWZfYmVnLCBpdmVjLCAxNik7Ci0gICBvdXRidWYgPSBv dXRidWZfYmVnICsgMTY7Ci1AQCAtMTc4NiwyMCArMTgwMSwxOSBAQCBpbnQgeGVuY19hZXNfZW5j cnlwdG9yIChka19zZXNzaW9uX3QgKiBzCi0gICBzd2l0Y2ggKGtleS0+a2kuYWVzLmJpdHMpCi0g ICAgIHsKLSAgICAgY2FzZSAxMjg6Ci0tICAgICAgRVZQX0VuY3J5cHRJbml0X2V4KCZjdHgsIEVW UF9hZXNfMTI4X2NiYygpLCBOVUxMLCBrZXktPmtpLmFlcy5rLCBpdmVjKTsKLSsgICAgICBFVlBf RW5jcnlwdEluaXRfZXgoY3R4LCBFVlBfYWVzXzEyOF9jYmMoKSwgTlVMTCwga2V5LT5raS5hZXMu aywgaXZlYyk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgMTkyOgotLSAgICAgIEVWUF9FbmNy eXB0SW5pdF9leCgmY3R4LCBFVlBfYWVzXzE5Ml9jYmMoKSwgTlVMTCwga2V5LT5raS5hZXMuaywg aXZlYyk7Ci0rICAgICAgRVZQX0VuY3J5cHRJbml0X2V4KGN0eCwgRVZQX2Flc18xOTJfY2JjKCks IE5VTEwsIGtleS0+a2kuYWVzLmssIGl2ZWMpOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIDI1 NjoKLS0gICAgICBFVlBfRW5jcnlwdEluaXRfZXgoJmN0eCwgRVZQX2Flc18yNTZfY2JjKCksIE5V TEwsIGtleS0+a2kuYWVzLmssIGl2ZWMpOwotKyAgICAgIEVWUF9FbmNyeXB0SW5pdF9leChjdHgs IEVWUF9hZXNfMjU2X2NiYygpLCBOVUxMLCBrZXktPmtpLmFlcy5rLCBpdmVjKTsKLSAgICAgICBi cmVhazsKLSAgICAgZGVmYXVsdDoKLSAgICAgICBHUEZfVDEgKCJVbnN1cHBvcnRlZCBrZXkgc2l6 ZSIpOwotICAgICB9Ci0tICBpZighRVZQX0VuY3J5cHRVcGRhdGUoJmN0eCwgKHVuc2lnbmVkIGNo YXIgKilvdXRidWYsICZvdXRsZW4sICh1bnNpZ25lZCBjaGFyICopdGV4dCwgYm94X2xlbmd0aCAo dGV4dCkpKQotKyAgaWYoIUVWUF9FbmNyeXB0VXBkYXRlKGN0eCwgKHVuc2lnbmVkIGNoYXIgKilv dXRidWYsICZvdXRsZW4sICh1bnNpZ25lZCBjaGFyICopdGV4dCwgYm94X2xlbmd0aCAodGV4dCkp KQotICAgICB7Ci0tICAgICAgRVZQX0NJUEhFUl9DVFhfY2xlYW51cCgmY3R4KTsKLSAgICAgICBk a19mcmVlX2JveCAodGV4dCk7Ci0gICAgICAgZGtfZnJlZV9ib3ggKG91dGJ1Zl9iZWcpOwotICAg ICAgIHhlbmNfcmVwb3J0X2Vycm9yICh0LCA1MDAsIFhFTkNfRU5DX0VSUiwgIkFFUyBlbmNyeXB0 aW9uIGludGVybmFsIGVycm9yICMyIik7Ci1AQCAtMTgxMiw3ICsxODI2LDcgQEAgaW50IHhlbmNf YWVzX2VuY3J5cHRvciAoZGtfc2Vzc2lvbl90ICogcwotICAgICAgIHhlbmNfcmVwb3J0X2Vycm9y ICh0LCA1MDAsIFhFTkNfRU5DX0VSUiwgIkFFUyBlbmNyeXB0aW9uIGludGVybmFsIGVycm9yICMz Iik7Ci0gICAgICAgfSAqLwotICAgLyogb3V0bGVuICs9IHRtcGxlbjsgKi8KLS0gIEVWUF9DSVBI RVJfQ1RYX2NsZWFudXAoJmN0eCk7Ci0rICBFVlBfQ0lQSEVSX0NUWF9mcmVlKGN0eCk7Ci0gCi0g I2Vsc2UKLSAgIG91dGJ1Zl9iZWcgPSBka19hbGxvY19ib3ggKGJveF9sZW5ndGggKHRleHQpICsg MTYgLyogaXYgKi8sIERWX0JJTik7Ci1AQCAtMjA1MCw2ICsyMDY0LDcgQEAgeGVuY19yc2FfZGVj cnlwdG9yIChka19zZXNzaW9uX3QgKiBzZXNfaQotICAgaW50IGxlbiA9IDA7Ci0gICBpbnQga2V5 c2l6ZTsKLSAgIFJTQSAqIHJzYSA9IGtleS0+eGVrX3ByaXZhdGVfcnNhOwotKyAgY29uc3QgQklH TlVNICpwLCAqcTsKLSAKLSAgIGlmICghc2VzbGVuKQotICAgICB7Ci1AQCAtMjA2Miw5ICsyMDc3 LDkgQEAgeGVuY19yc2FfZGVjcnlwdG9yIChka19zZXNzaW9uX3QgKiBzZXNfaQotICAgICAgIHhl bmNfcmVwb3J0X2Vycm9yICh0LCA1MDAgKyBzdHJsZW4gKGtleS0+eGVrX25hbWUpLCBYRU5DX0VO Q19FUlIsICJjb3VsZCBub3QgbWFrZSBSU0EgZGVjcnlwdGlvbiBba2V5ICVzIGlzIG5vdCBSU0Fd Iiwga2V5LT54ZWtfbmFtZSk7Ci0gICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLSsgIFJTQV9nZXQw X2ZhY3RvcnMocnNhLCAmcCwgJnEpOwotICAgaWYgKCFyc2EgfHwKLS0gICAgICAhcnNhLT5wIHx8 Ci0tICAgICAgIXJzYS0+cSkKLSsgICAgICAhcCB8fCAhcSkKLSAgICAgewotICAgICAgIGlmIChr ZXktPnhla194NTA5X0tJKQotIAlrZXkgPSB4ZW5jX2dldF9rZXlfYnlfa2V5aWRlbnRpZmllciAo a2V5LT54ZWtfeDUwOV9LSSwgMSk7Ci0tLS0gYS9saWJzcmMvdXRpbC9zc2xlbmdpbmUuYwotKysr IGIvbGlic3JjL3V0aWwvc3NsZW5naW5lLmMKLUBAIC0yOSw3ICsyOSwxMSBAQAotIGludAotIHNz bF9lbmdpbmVfc3RhcnR1cCAodm9pZCkKLSB7Ci0tICBDUllQVE9fbWFsbG9jX2luaXQgKCk7Ci0r I2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPCAweDEwMTAwMDAwIHx8IGRlZmluZWQgTElCUkVT U0xfVkVSU0lPTl9OVU1CRVIKLSsJQ1JZUFRPX21hbGxvY19pbml0ICgpOwotKyNlbHNlCi0rCU9Q RU5TU0xfbWFsbG9jX2luaXQoKTsKLSsjZW5kaWYKLSAgIEVSUl9sb2FkX2NyeXB0b19zdHJpbmdz KCk7Ci0gICBPcGVuU1NMX2FkZF9hbGxfYWxnb3JpdGhtcygpOwotIAotLS0tIGEvbGlic3JjL1dp L2h0dHAuYwotKysrIGIvbGlic3JjL1dpL2h0dHAuYwotQEAgLTg4ODYsNyArODg4Niw3IEBAIHNz bF9zZXJ2ZXJfc2V0X2NlcnRpZmljYXRlIChTU0xfQ1RYKiBzc2wKLSAJCSAgbG9nX2Vycm9yICgi U1NMOiBUaGUgc3RvcmVkIGNlcnRpZmljYXRlICclcycgY2FuIG5vdCBiZSB1c2VkIGFzIGV4dHJh IGNoYWluIGNlcnRpZmljYXRlIiwgdG9rKTsKLSAJCSAgYnJlYWs7Ci0gCQl9Ci0tCSAgICAgIENS WVBUT19hZGQoJmstPnhla194NTA5LT5yZWZlcmVuY2VzLCAxLCBDUllQVE9fTE9DS19YNTA5KTsK LSsJICAgICAgWDUwOV91cF9yZWYoay0+eGVrX3g1MDkpOwotICAgICAgICAgICAgICAgdG9rID0g c3RydG9rX3IgKE5VTEwsICIsIiwgJnRva19zKTsKLSAJICAgIH0KLSAJICBka19mcmVlX2JveCAo c3RyKTsKLS0tLSBhL2xpYnNyYy9Eay9Ea2VybmVsLmMKLSsrKyBiL2xpYnNyYy9Eay9Ea2VybmVs LmMKLUBAIC01MjgwLDcgKzUyODAsMTEgQEAgc3NsX3NlcnZlcl9pbml0ICgpCi0gICB9Ci0gI2Vu ZGlmCi0gCi0tICBTU0xlYXlfYWRkX2FsbF9hbGdvcml0aG1zICgpOwotKyNpZiBPUEVOU1NMX1ZF UlNJT05fTlVNQkVSIDwgMHgxMDEwMDAwMAotKyAgU1NMZWF5X2FkZF9hbGxfYWxnb3JpdGhtcygp OwotKyNlbHNlCi0rICBPcGVuU1NMX2FkZF9hbGxfYWxnb3JpdGhtcygpOwotKyNlbmRpZgotICAg UEtDUzEyX1BCRV9hZGQgKCk7CQkvKiBzdHViICovCi0gCi0gI2lmZGVmIE5PX1RIUkVBRApkaWZm IC0tZ2l0IGEvc3JjcGtncy92aXJ0dW9zby9wYXRjaGVzL3NzbDEuMV9tb3JlLnBhdGNoIGIvc3Jj cGtncy92aXJ0dW9zby9wYXRjaGVzL3NzbDEuMV9tb3JlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCA2NmU1MGVjMTI3YmEuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3Zp cnR1b3NvL3BhdGNoZXMvc3NsMS4xX21vcmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMCAr MCwwIEBACi1EZXNjcmlwdGlvbjogQ29tbWVudCB1bmtub3duIGRlZmluaXRpb24gaW4gc3NsMS4x IC0gcGxlYXNlIHJldmlldyEKLUF1dGhvcjogQW5kcmVhcyBUaWxsZSA8dGlsbGVAZGViaWFuLm9y Zz4KLUJ1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzgyODU5NAotTGFzdC1VcGRh dGU6IE1vIDExLiBGZWIgMTM6NTA6MTcgQ0VUIDIwMTkKLQotLS0tIGEvbGlic3JjL0RrL0RrZXJu ZWwuYwotKysrIGIvbGlic3JjL0RrL0RrZXJuZWwuYwotQEAgLTUxNjEsMTAgKzUxNjEsMTIgQEAg c3NsX2N0eF9zZXRfcHJvdG9jb2xfb3B0aW9ucyhTU0xfQ1RYICpjdAotICAgICAgIGVsc2UgaWYg KCFzdHJjYXNlY21wIChuYW1lLCAiVExTdjFfMiIpIHx8ICFzdHJjYXNlY21wIChuYW1lLCAiVExT djEuMiIpKQotIAlvcHQgPSBTU0xfUFJPVE9DT0xfVExTVjFfMjsKLSAjZW5kaWYKLSsvKgotICNp ZiBkZWZpbmVkIChTU0xfT1BfTk9fVExTdjFfMykKLSAgICAgICBlbHNlIGlmICghc3RyY2FzZWNt cCAobmFtZSwgIlRMU3YxXzMiKSB8fCAhc3RyY2FzZWNtcCAobmFtZSwgIlRMU3YxLjMiKSkKLSAJ b3B0ID0gU1NMX1BST1RPQ09MX1RMU1YxXzM7Ci0gI2VuZGlmCi0rKi8KLSAgICAgICBlbHNlIGlm ICghc3RyY2FzZWNtcCAobmFtZSwgIkFMTCIpKQotIAlvcHQgPSBTU0xfUFJPVE9DT0xfQUxMOwot ICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdmlydHVvc28vcGF0Y2hlcy91c2UtbWtz dGVtcC5wYXRjaCBiL3NyY3BrZ3MvdmlydHVvc28vcGF0Y2hlcy91c2UtbWtzdGVtcC5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDcxYjdlNDE3YmQ5Li4wMDAwMDAwMDAwMDAK LS0tIGEvc3JjcGtncy92aXJ0dW9zby9wYXRjaGVzL3VzZS1ta3N0ZW1wLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMTggKzAsMCBAQAotU291cmNlOiBAcHVsbG1vbGwKLVVwc3RyZWFtOiBubwot UmVhc29uOiBBdm9pZCBta3RlbXAoMykgYmVjYXVzZSAiTmV2ZXIgdXNlIHRoaXMgZnVuY3Rpb247 IHNlZSBCVUdTLiIKLQotLS0tIGEvbGlic3JjL0RrL0Rrc2Vzc3RyLmMJMjAxOC0wOC0xNiAwMTow NjoyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBiL2xpYnNyYy9Eay9Ea3Nlc3N0ci5jCTIwMjAtMDEt MjcgMTU6MjI6MDAuOTUzODc2MjUxICswMTAwCi1AQCAtMjk4LDggKzI5OCwxMCBAQAotICAgICAg IGlmICghc2VzMi0+c2VzX2ZpbGUtPnNlc19tYXhfYmxvY2tzX2luX21lbSkKLSAJewotIAkgIGNo YXIgZm5hbWVbUEFUSF9NQVggKyAxXTsKLSsgICAgICAgICAgaW50IGZkOwotIAkgIHNucHJpbnRm IChmbmFtZSwgc2l6ZW9mIChmbmFtZSksICIlcy9zZXNYWFhYWFgiLCBzZXNfdG1wX2Rpcik7Ci0t CSAgbWt0ZW1wIChmbmFtZSk7Ci0rCSAgZmQgPSBta3N0ZW1wIChmbmFtZSk7Ci0rICAgICAgICAg IGNsb3NlIChmZCk7Ci0gCi0gI2lmIGRlZmluZWQgKFdJTjMyKQotICMgZGVmaW5lIE9QRU5fRkxB R1MgIAkgIE9fQ1JFQVQgfCBPX1JEV1IgfCBPX0JJTkFSWSB8IE9fRVhDTCB8IE9fVEVNUE9SQVJZ CmRpZmYgLS1naXQgYS9zcmNwa2dzL3ZpcnR1b3NvL3RlbXBsYXRlIGIvc3JjcGtncy92aXJ0dW9z by90ZW1wbGF0ZQppbmRleCA3M2U1OTAyM2QzNWUuLjg0MjdmNTZkYzVhMCAxMDA2NDQKLS0tIGEv c3JjcGtncy92aXJ0dW9zby90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3ZpcnR1b3NvL3RlbXBsYXRl CkBAIC0xLDE4ICsxLDE5IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd2aXJ0dW9zbycKIHBrZ25h bWU9dmlydHVvc28KLXZlcnNpb249Ny4yLjUuMQotcmV2aXNpb249MwordmVyc2lvbj03LjIuOQor cmV2aXNpb249MQogYXJjaHM9Ing4Nl82NCogYWFyY2g2NCogcHBjNjRsZSoiCiBidWlsZF9zdHls ZT1nbnUtY29uZmlndXJlCi1jb25maWd1cmVfYXJncz0iLS1lbmFibGUtc3RhdGljIgotaG9zdG1h a2VkZXBlbmRzPSJhdXRvbWFrZSBsaWJ0b29sIGZsZXggZ3BlcmYgbmV0LXRvb2xzIgorY29uZmln dXJlX2FyZ3M9Ii0td2l0aG91dC1pbnRlcm5hbC16bGliIC0td2l0aC1yZWFkbGluZSAtLXdpdGgt bGF5b3V0PWRlYmlhbiIKK2hvc3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgbGlidG9vbCBmbGV4IGdw ZXJmIG5ldC10b29scyB3aGljaCIKIG1ha2VkZXBlbmRzPSJvcGVuc3NsLWRldmVsIGxpYmxkYXAt ZGV2ZWwgcmVhZGxpbmUtZGV2ZWwgbGlieG1sMi1kZXZlbCBtaXQta3JiNS1kZXZlbCIKK2NoZWNr ZGVwZW5kcz0icHJvY3BzLW5nIHVuemlwIGN1cmwgd2dldCIKIHNob3J0X2Rlc2M9IlNjYWxhYmxl IGNyb3NzLXBsYXRmb3JtIHNlcnZlciBvZiB2aXJ0dW9zbyIKIG1haW50YWluZXI9Ik9ycGhhbmVk IDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCi1saWNlbnNlPSJHUEwtMiIKK2xpY2Vuc2U9IkdQTC0y LjAtb25seSIKIGhvbWVwYWdlPSJodHRwOi8vdmlydHVvc28ub3Blbmxpbmtzdy5jb20vd2lraS9t YWluL01haW4vIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmxpbmsvdmlydHVv c28tb3BlbnNvdXJjZS9hcmNoaXZlL3Yke3ZlcnNpb259LnRhci5neiIKLWNoZWNrc3VtPTNlNDgw N2U5NDA5OGI4MjY1ZjhjZjAwODY3ZDEyMTViYjFlOWQwZDI3NDg3OGU1OWE0MjA3NDJkMmRlNDcx YzIKK2NoZWNrc3VtPTYzOWJiYWQ4NjBlYjdhMmJkYTA1YTY1MTEwOTk5Y2JlOGYxZDNmNTE3NWVk YmMzMzI3YmVmYzJjYWI0Y2NiOWYKICMgY2Fubm90IGV4ZWN1dGUgYmluYXJ5IGZpbGU6IEV4ZWMg Zm9ybWF0IGVycm9yCiBub2Nyb3NzPSJodHRwczovL2J1aWxkLnZvaWRsaW51eC5vcmcvYnVpbGRl cnMvYXJtdjZsX2J1aWxkZXIvYnVpbGRzLzI5MTg3L3N0ZXBzL3NoZWxsXzMvbG9ncy9zdGRpbyIK IApAQCAtMzEsOSArMzIsNyBAQCBwcmVfY29uZmlndXJlKCkgewogfQogCiBkb19jb25maWd1cmUo KSB7Ci0JLi9jb25maWd1cmUgJHtjb25maWd1cmVfYXJnc30gLS13aXRob3V0LWludGVybmFsLXps aWIgLS13aXRoLXJlYWRsaW5lIFwKLQkJLS13aXRoLWxheW91dD1kZWJpYW4gXAotCQktLXByb2dy YW0tdHJhbnNmb3JtLW5hbWU9J3MvaXNxbCQkL2lzcWwtdnQvO3MvaXNxbHcvaXNxbHctdnQvJwor CS4vY29uZmlndXJlICR7Y29uZmlndXJlX2FyZ3N9IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZT0n cy9pc3FsJCQvaXNxbC12dC87cy9pc3Fsdy9pc3Fsdy12dC8nCiB9CiAKIHBvc3RfaW5zdGFsbCgp IHsKQEAgLTQ1LDggKzQ0LDYgQEAgcG9zdF9pbnN0YWxsKCkgewogCXJtICR7REVTVERJUn0vdXNy L2xpYi92aXJ0b2RiY19yLnthLHNvfQogCXJtICR7REVTVERJUn0vdXNyL2xpYi92aXJ0b2RiY3Uu e2Esc299CiAJcm0gJHtERVNURElSfS91c3IvbGliL3ZpcnRvZGJjdV9yLnthLHNvfQotCSMgcmVt b3ZlIHN0YXRpYyBsaWJzLgotCXJtICR7REVTVERJUn0vdXNyL2xpYi92aXJ0dW9zby1vcGVuc291 cmNlLSR7dmVyc2lvbiUlLip9L2hvc3RpbmcvKi5hCiB9CiAKIHZpcnR1b3NvLWJhc2VfcGFja2Fn ZSgpIHsKQEAgLTYxLDcgKzU4LDcgQEAgdmlydHVvc28tYmFzZV9wYWNrYWdlKCkgewogCQkJaW5z dGFsbCAtRG03NTUgJHt3cmtzcmN9L2JpbnNyYy90ZXN0cy8kYmluIFwKIAkJCQkke1BLR0RFU1RE SVJ9L3Vzci9iaW4vJHtiaW59LXZ0CiAJCWRvbmUKLQkJIyBSZW1vdmUgc3RhdGljIGxpYnMgYW5k IGxpYnRvb2wgYXJjaGl2ZXMuCi0JCXJtIC1mICR7UEtHREVTVERJUn0vdXNyL2xpYi8qLnthLGxh fQorCQkjIFJlbW92ZSBsaWJ0b29sIGFyY2hpdmVzCisJCXJtIC1mICR7UEtHREVTVERJUn0vdXNy L2xpYi8qLmxhCiAJfQogfQo= --===============0096494642866006947==--