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] fix-dup-patch: - Import archer-tromey-python. Date: Thu, 23 Jul 2026 18:29:32 GMT Message-ID: <178483137256.1.5566543093603477891.rpms-gdb-20f9f675affd@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 20f9f675affd5b40bff9c4c6b53067bf1dfd99a4 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogMjBmOWY2NzVhZmZkNWI0MGJmZjljNGM2YjUzMDY3YmYxZGZkOTlhNAog ICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amtyYXRvY2hAZmVkb3JhcHJvamVj dC5vcmc+CiAgICAgICAgICAgIERhdGUgICA6IDIwMTAtMDctMjJUMTA6NDk6NTgrMDA6MDAKICAg ICAgICAgICAgU3RhdHMgIDogKzg4NjQvLTM1OTEgaW4gNiBmaWxlKHMpCiAgICAgICAgICAgIFVS TCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvMjBmOWY2NzVh ZmZkNWI0MGJmZjljNGM2YjUzMDY3YmYxZGZkOTlhND9icmFuY2g9Zml4LWR1cC1wYXRjaAoKICAg ICAgICAgICAgTG9nOgogICAgICAgICAgICAtIEltcG9ydCBhcmNoZXItdHJvbWV5LXB5dGhvbi4K LSBJbXBvcnQgYXJjaGVyLXRyb21leS1vcHRpb25hbC1wc3ltdGFiIChhcyBwcmVzZW50IGluIEZT RiBHREIgcG9zdC03LjIpLgotIFByb3ZpZGUgL3Vzci9iaW4vZ2RiLWFkZC1pbmRleCBmb3IgcnBt LWJ1aWxkIChUb20gVHJvbWV5KS4KCi0tLQpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1yZWFkbmV2ZXIt MjAwNTA5MDcucGF0Y2ggYi9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaAppbmRleCBj MmYwZWE4Li4wYmRmOTQ4IDEwMDY0NAotLS0gYS9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5w YXRjaAorKysgYi9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaApAQCAtMTEsMTAgKzEx LDEwIEBACiAKICAgICAgICAgKiBnZGIudGV4aW5mbyAoRmlsZSBPcHRpb25zKTogRG9jdW1lbnQg LS1yZWFkbmV2ZXIuCiAKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kb2MvZ2RiLnRl eGluZm8KK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9kb2MvZ2RiLnRleGluZm8KID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5m bwkyMDEwLTA3LTAxIDE5OjQwOjA0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAx MDA3MTEvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEwLTA3LTEyIDEwOjQxOjExLjAwMDAwMDAwMCAr MDIwMAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MjEub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIw MTAtMDctMjIgMTE6NTc6MDkuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcy MS9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTAtMDctMjIgMTE6NTc6MzQuMDAwMDAwMDAwICswMjAw CiBAQCAtOTk4LDYgKzk5OCwxMiBAQCBSZWFkIGVhY2ggc3ltYm9sIGZpbGUncyBlbnRpcmUgc3lt Ym9sIHRhCiAgdGhlIGRlZmF1bHQsIHdoaWNoIGlzIHRvIHJlYWQgaXQgaW5jcmVtZW50YWxseSBh cyBpdCBpcyBuZWVkZWQuCiAgVGhpcyBtYWtlcyBzdGFydHVwIHNsb3dlciwgYnV0IG1ha2VzIGZ1 dHVyZSBvcGVyYXRpb25zIGZhc3Rlci4KQEAgLTI4LDExICsyOCwxMSBAQCBJbmRleDogZ2RiLTcu MS45MC4yMDEwMDcxMS9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGVuZCB0YWJsZQogIAogIEBub2Rl IE1vZGUgT3B0aW9ucwotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL21haW4uYworSW5k ZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL21haW4uYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvbWFpbi5jCTIwMTAtMDctMTIgMTA6MTc6MjYuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvbWFpbi5jCTIwMTAtMDctMTIg MTA6NDE6MzQuMDAwMDAwMDAwICswMjAwCi1AQCAtMzg4LDYgKzM4OCw3IEBAIGNhcHR1cmVkX21h aW4gKHZvaWQgKmRhdGEpCistLS0gZ2RiLTcuMS45MC4yMDEwMDcyMS5vcmlnL2dkYi9tYWluLmMJ MjAxMC0wNy0yMiAxMTo1NzoxMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAw NzIxL2dkYi9tYWluLmMJMjAxMC0wNy0yMiAxMTo1Nzo0OS4wMDAwMDAwMDAgKzAyMDAKK0BAIC0z OTEsNiArMzkxLDcgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAgICAgICB7InhkYiIs IG5vX2FyZ3VtZW50LCAmeGRiX2NvbW1hbmRzLCAxfSwKICAgICAgICB7ImRieCIsIG5vX2FyZ3Vt ZW50LCAmZGJ4X2NvbW1hbmRzLCAxfSwKICAgICAgICB7InJlYWRub3ciLCBub19hcmd1bWVudCwg JnJlYWRub3dfc3ltYm9sX2ZpbGVzLCAxfSwKQEAgLTQwLDE4ICs0MCwxOCBAQCBJbmRleDogZ2Ri LTcuMS45MC4yMDEwMDcxMS9nZGIvbWFpbi5jCiAgICAgICAgeyJyIiwgbm9fYXJndW1lbnQsICZy ZWFkbm93X3N5bWJvbF9maWxlcywgMX0sCiAgICAgICAgeyJxdWlldCIsIG5vX2FyZ3VtZW50LCAm cXVpZXQsIDF9LAogICAgICAgIHsicSIsIG5vX2FyZ3VtZW50LCAmcXVpZXQsIDF9LAotQEAgLTk4 MCw2ICs5ODEsNyBAQCBPcHRpb25zOlxuXG5cCi0gICBmcHV0c191bmZpbHRlcmVkIChfKCIgZmls ZS5cblwKK0BAIC0xMDM4LDYgKzEwMzksNyBAQCBPcHRpb25zOlxuXG5cCisgICBmcHV0c191bmZp bHRlcmVkIChfKCJcCiAgICAtLXF1aWV0ICAgICAgICAgICAgRG8gbm90IHByaW50IHZlcnNpb24g bnVtYmVyIG9uIHN0YXJ0dXAuXG5cCiAgICAtLXJlYWRub3cgICAgICAgICAgRnVsbHkgcmVhZCBz eW1ib2wgZmlsZXMgb24gZmlyc3QgYWNjZXNzLlxuXAogKyAgLS1yZWFkbmV2ZXIgICAgICAgIERv IG5vdCByZWFkIHN5bWJvbCBmaWxlcy5cblwKICAiKSwgc3RyZWFtKTsKICAgIGZwdXRzX3VuZmls dGVyZWQgKF8oIlwKICAgIC0tc2U9RklMRSAgICAgICAgICBVc2UgRklMRSBhcyBzeW1ib2wgZmls ZSBhbmQgZXhlY3V0YWJsZSBmaWxlLlxuXAotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2Ri L3N5bWZpbGUuYworSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL3N5bWZpbGUuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvc3ltZmlsZS5jCTIwMTAt MDYtMDMgMDE6MDE6MDAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9n ZGIvc3ltZmlsZS5jCTIwMTAtMDctMTIgMTA6NDE6MTEuMDAwMDAwMDAwICswMjAwCistLS0gZ2Ri LTcuMS45MC4yMDEwMDcyMS5vcmlnL2dkYi9zeW1maWxlLmMJMjAxMC0wNy0yMiAxMTo1NzowOS4w MDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9zeW1maWxlLmMJMjAx MC0wNy0yMiAxMTo1NzozNC4wMDAwMDAwMDAgKzAyMDAKIEBAIC04MCw2ICs4MCw3IEBAIHN0YXRp YyB2b2lkIGNsZWFyX3N5bXRhYl91c2Vyc19jbGVhbnVwICgKICAKICAvKiBHbG9iYWwgdmFyaWFi bGVzIG93bmVkIGJ5IHRoaXMgZmlsZSAqLwpAQCAtNjAsMTkgKzYwLDE5IEBAIEluZGV4OiBnZGIt Ny4xLjkwLjIwMTAwNzExL2dkYi9zeW1maWxlLmMKICAKICAvKiBFeHRlcm5hbCB2YXJpYWJsZXMg YW5kIGZ1bmN0aW9ucyByZWZlcmVuY2VkLiAqLwogIAotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3 MTEvZ2RiL2R3YXJmMnJlYWQuYworSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL2R3YXJm MnJlYWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvZHdh cmYycmVhZC5jCTIwMTAtMDctMTIgMTA6MDA6NTYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu MS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDctMTIgMTA6NDM6NTMuMDAwMDAw MDAwICswMjAwCi1AQCAtNTEsNiArNTEsNyBAQAotICNpbmNsdWRlICJ0eXBlcHJpbnQuaCIKLSAj aW5jbHVkZSAianYtbGFuZy5oIgorLS0tIGdkYi03LjEuOTAuMjAxMDA3MjEub3JpZy9nZGIvZHdh cmYycmVhZC5jCTIwMTAtMDctMjIgMTE6NTc6MTAuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu MS45MC4yMDEwMDcyMS9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDctMjIgMTE6NTg6MDUuMDAwMDAw MDAwICswMjAwCitAQCAtNTMsNiArNTMsNyBAQAogICNpbmNsdWRlICJwc3ltcHJpdi5oIgorICNp bmNsdWRlICJleGNlcHRpb25zLmgiCisgI2luY2x1ZGUgImdkYl9zdGF0LmgiCiArI2luY2x1ZGUg InRvcC5oIgogIAogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlICJnZGJfc3RyaW5nLmgi Ci1AQCAtMTE2MSw4ICsxMTYyLDkgQEAgZHdhcmYyX2hhc19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZQorQEAgLTEyODIsOCArMTI4Myw5IEBAIGR3YXJmMl9oYXNfaW5mbyAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUKICAgICAgICBiZmRfbWFwX292ZXJfc2VjdGlvbnMgKG9iamZpbGUtPm9i ZmQsIGR3YXJmMl9sb2NhdGVfc2VjdGlvbnMsIE5VTEwpOwogICAgICAgIGR3YXJmMl9wZXJfb2Jq ZmlsZS0+b2JqZmlsZSA9IG9iamZpbGU7CiAgICAgIH0KQEAgLTg0LDEwICs4NCwxMCBAQCBJbmRl eDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVhZC5jCiAgfQogIAogIC8qIFdoZW4g bG9hZGluZyBzZWN0aW9ucywgd2UgY2FuIGVpdGhlciBsb29rIGZvciAiLjxuYW1lPiIsIG9yIGZv cgotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3RvcC5oCitJbmRleDogZ2RiLTcuMS45 MC4yMDEwMDcyMS9nZGIvdG9wLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzEx Lm9yaWcvZ2RiL3RvcC5oCTIwMTAtMDQtMDcgMTg6NTQ6MzkuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdG9wLmgJMjAxMC0wNy0xMiAxMDo0MToxMS4wMDAwMDAw MDAgKzAyMDAKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzIxLm9yaWcvZ2RiL3RvcC5oCTIwMTAtMDQt MDcgMTg6NTQ6MzkuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIv dG9wLmgJMjAxMC0wNy0yMiAxMTo1NzozNC4wMDAwMDAwMDAgKzAyMDAKIEBAIC02MSw2ICs2MSw3 IEBAIGV4dGVybiB2b2lkIHNldF9wcm9tcHQgKGNoYXIgKik7CiAgCiAgLyogRnJvbSByYW5kb20g cGxhY2VzLiAgKi8KCmRpZmYgLS1naXQgYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRj aCBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoCmluZGV4IDgyNzE5OTIuLmUxMWZi M2MgMTAwNjQ0Ci0tLSBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoCisrKyBiL2dk Yi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotSW5kZXg6IGdk Yi03LjEuOTAuMjAxMDA3MTEvZ2RiL2V2ZW50LXRvcC5jCitJbmRleDogZ2RiLTcuMS45MC4yMDEw MDcyMS9nZGIvZXZlbnQtdG9wLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzEx Lm9yaWcvZ2RiL2V2ZW50LXRvcC5jCTIwMTAtMDYtMjYgMDg6NDQ6NDcuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZXZlbnQtdG9wLmMJMjAxMC0wNy0xMiAxMToz NzowNC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzIxLm9yaWcvZ2RiL2V2 ZW50LXRvcC5jCTIwMTAtMDYtMjYgMDg6NDQ6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu MS45MC4yMDEwMDcyMS9nZGIvZXZlbnQtdG9wLmMJMjAxMC0wNy0yMiAxMTo1ODoyNC4wMDAwMDAw MDAgKzAyMDAKIEBAIC0zMyw2ICszMyw3IEBACiAgI2luY2x1ZGUgImNsaS9jbGktc2NyaXB0Lmgi ICAgICAvKiBmb3IgcmVzZXRfY29tbWFuZF9uZXN0X2RlcHRoICovCiAgI2luY2x1ZGUgIm1haW4u aCIKQEAgLTI4LDEwICsyOCwxMCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZXZl bnQtdG9wLmMKICAgIC8qIEVhY2ggaW50ZXJwcmV0ZXIgaGFzIGl0cyBvd24gcnVsZXMgb24gZGlz cGxheWluZyB0aGUgY29tbWFuZAogICAgICAgcHJvbXB0LiAgKi8KICAgIGlmICghY3VycmVudF9p bnRlcnBfZGlzcGxheV9wcm9tcHRfcCAoKSkKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dk Yi9lbGZyZWFkLmMKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9lbGZyZWFkLmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEw LTA3LTEyIDExOjMwOjMwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEv Z2RiL2VsZnJlYWQuYwkyMDEwLTA3LTEyIDExOjM3OjA0LjAwMDAwMDAwMCArMDIwMAorLS0tIGdk Yi03LjEuOTAuMjAxMDA3MjEub3JpZy9nZGIvZWxmcmVhZC5jCTIwMTAtMDctMjIgMTE6NTg6MTQu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvZWxmcmVhZC5jCTIw MTAtMDctMjIgMTE6NTg6MjQuMDAwMDAwMDAwICswMjAwCiBAQCAtNDIsNiArNDIsNyBAQAogICNp bmNsdWRlICJnZGJjb3JlLmgiCiAgI2luY2x1ZGUgImdkYmNtZC5oIgpAQCAtNDAsNyArNDAsNyBA QCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZWxmcmVhZC5jCiAgCiAgZXh0ZXJuIHZv aWQgX2luaXRpYWxpemVfZWxmcmVhZCAodm9pZCk7CiAgCi1AQCAtMTM2OCw4ICsxMzY5LDM1MyBA QCBidWlsZF9pZF90b19maWxlbmFtZSAoc3RydWN0IGJ1aWxkX2lkICpiCitAQCAtMTM3MSw4ICsx MzcyLDM1MyBAQCBidWlsZF9pZF90b19maWxlbmFtZSAoc3RydWN0IGJ1aWxkX2lkICpiCiAgICBy ZXR1cm4gcmV0dmFsOwogIH0KICAKQEAgLTM5NSw3ICszOTUsNyBAQCBJbmRleDogZ2RiLTcuMS45 MC4yMDEwMDcxMS9nZGIvZWxmcmVhZC5jCiAgICAgYXZvaWRhbmNlLiAgKi8KICAKICBzdHJ1Y3Qg bWlzc2luZ19maWxlcGFpcgotQEAgLTE0MjMsMTEgKzE3NjksMTcgQEAgbWlzc2luZ19maWxlcGFp cl9jaGFuZ2UgKHZvaWQpCitAQCAtMTQyNiwxMSArMTc3MiwxNyBAQCBtaXNzaW5nX2ZpbGVwYWly X2NoYW5nZSAodm9pZCkKICAgICAgICAvKiBBbGwgdGhlaXIgbWVtb3J5IGNhbWUganVzdCBmcm9t IG1pc3NpbmdfZmlsZXBhaXJfT0JTVEFDSy4gICovCiAgICAgICAgbWlzc2luZ19maWxlcGFpcl9o YXNoID0gTlVMTDsKICAgICAgfQpAQCAtNDEzLDcgKzQxMyw3IEBAIEluZGV4OiBnZGItNy4xLjkw LjIwMTAwNzExL2dkYi9lbGZyZWFkLmMKICAgIG1pc3NpbmdfZmlsZXBhaXJfY2hhbmdlICgpOwog IH0KICAKLUBAIC0xNDk0LDE0ICsxODQ2LDM0IEBAIGRlYnVnX3ByaW50X21pc3NpbmcgKGNvbnN0 IGNoYXIgKmJpbmFyeSwKK0BAIC0xNDk3LDE0ICsxODQ5LDM0IEBAIGRlYnVnX3ByaW50X21pc3Np bmcgKGNvbnN0IGNoYXIgKmJpbmFyeSwKICAKICAgICpzbG90ID0gbWlzc2luZ19maWxlcGFpcjsK ICAKQEAgLTQ1NSwxMSArNDU1LDExIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9l bGZyZWFkLmMKICB9CiAgCiAgc3RhdGljIGNoYXIgKgotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3 MTEvZ2RiL3N5bWZpbGUuaAorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL3N5bWZpbGUu aAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvc3ltZmlsZS5o CTIwMTAtMDctMTIgMTE6MDY6MTguMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEw MDcxMS9nZGIvc3ltZmlsZS5oCTIwMTAtMDctMTIgMTE6Mzc6MDQuMDAwMDAwMDAwICswMjAwCi1A QCAtNTY4LDYgKzU2OCw3IEBAIGV4dGVybiBzdHJ1Y3QgYnVpbGRfaWQgKmJ1aWxkX2lkX2FkZHJf Z2UKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzIxLm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDEwLTA3LTIy IDExOjU4OjE0LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL3N5 bWZpbGUuaAkyMDEwLTA3LTIyIDExOjU4OjI0LjAwMDAwMDAwMCArMDIwMAorQEAgLTU3Nyw2ICs1 NzcsNyBAQCBleHRlcm4gc3RydWN0IGJ1aWxkX2lkICpidWlsZF9pZF9hZGRyX2dlCiAgZXh0ZXJu IGNoYXIgKmJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGRfaWQgKmJ1aWxkX2lkLAog IAkJCQkgICBjaGFyICoqbGlua19yZXR1cm4sIGludCBhZGRfZGVidWdfc3VmZml4KTsKICBleHRl cm4gdm9pZCBkZWJ1Z19wcmludF9taXNzaW5nIChjb25zdCBjaGFyICpiaW5hcnksIGNvbnN0IGNo YXIgKmRlYnVnKTsKQEAgLTQ2NywxMSArNDY3LDExIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAw NzExL2dkYi9zeW1maWxlLmgKICAKICAvKiBGcm9tIGR3YXJmMnJlYWQuYyAqLwogIAotSW5kZXg6 IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAorSW5kZXg6IGdk Yi03LjEuOTAuMjAxMDA3MjEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIw MTAtMDctMTIgMTE6MDU6NTcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcx MS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTAtMDctMTIgMTE6Mzc6MDQuMDAwMDAwMDAw ICswMjAwCi1AQCAtMTM1Myw3ICsxMzUzLDcgQEAgcHJvYyBkZWZhdWx0X2dkYl9zdGFydCB7IH0g eworLS0tIGdkYi03LjEuOTAuMjAxMDA3MjEub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhw CTIwMTAtMDctMjIgMTE6NTg6MTQuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEw MDcyMS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTAtMDctMjIgMTE6NTg6MjQuMDAwMDAw MDAwICswMjAwCitAQCAtMTM1OSw3ICsxMzU5LDcgQEAgcHJvYyBkZWZhdWx0X2dkYl9zdGFydCB7 IH0gewogIAkgICAgd2FybmluZyAiQ291bGRuJ3Qgc2V0IHRoZSB3aWR0aCB0byAwLiIKICAJfQog ICAgICB9CkBAIC00ODAsMTAgKzQ4MCwxMCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9n ZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiAgICAgIHNlbmRfZ2RiICJzZXQgYnVpbGQtaWQtdmVy Ym9zZSAwXG4iCiAgICAgIGdkYl9leHBlY3QgMTAgewogIAktcmUgIiRnZGJfcHJvbXB0ICQiIHsK LUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQu ZXhwCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBw b3J0LmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvdGVz dHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDEwLTA3LTEyIDExOjA1OjU3LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9y dC5leHAJMjAxMC0wNy0xMiAxMTozNzowNC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4xLjkw LjIwMTAwNzIxLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMC0wNy0y MiAxMTo1ODoxNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi90 ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTAtMDctMjIgMTE6NTg6MjQuMDAwMDAwMDAw ICswMjAwCiBAQCAtMjIxLDcgKzIyMSw3IEBAIHByb2MgZGVmYXVsdF9taV9nZGJfc3RhcnQgeyBh cmdzIH0gewogIAkgICAgfQogICAgICAJfQpAQCAtNDkzLDEwICs0OTMsMTAgQEAgSW5kZXg6IGdk Yi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKICAgICAg c2VuZF9nZGIgIjE5MC1nZGItc2V0IGJ1aWxkLWlkLXZlcmJvc2UgMFxuIgogICAgICBnZGJfZXhw ZWN0IDEwIHsKICAJLXJlICIuKjE5MC1nZGItc2V0IGJ1aWxkLWlkLXZlcmJvc2UgMFxyXG4xOTBc XFxeZG9uZVxyXG4kbWlfZ2RiX3Byb21wdCQiIHsKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzEx L2dkYi90dWkvdHVpLWludGVycC5jCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvdHVp L3R1aS1pbnRlcnAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9n ZGIvdHVpL3R1aS1pbnRlcnAuYwkyMDEwLTA1LTE4IDAwOjIxOjQzLjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3R1aS90dWktaW50ZXJwLmMJMjAxMC0wNy0xMiAx MTozNzowNC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzIxLm9yaWcvZ2Ri L3R1aS90dWktaW50ZXJwLmMJMjAxMC0wNS0xOCAwMDoyMTo0My4wMDAwMDAwMDAgKzAyMDAKKysr KyBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi90dWkvdHVpLWludGVycC5jCTIwMTAtMDctMjIgMTE6 NTg6MjQuMDAwMDAwMDAwICswMjAwCiBAQCAtMzAsNiArMzAsNyBAQAogICNpbmNsdWRlICJ0dWkv dHVpLmgiCiAgI2luY2x1ZGUgInR1aS90dWktaW8uaCIKQEAgLTUxNCwxMCArNTE0LDEwIEBAIElu ZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90dWkvdHVpLWludGVycC5jCiAgICAgICAgLyog VGVsbCByZWFkbGluZSB3aGF0IHRoZSBwcm9tcHQgdG8gZGlzcGxheSBpcyBhbmQgd2hhdCBmdW5j dGlvbgogICAgICAgICAgIGl0IHdpbGwgbmVlZCB0byBjYWxsIGFmdGVyIGEgd2hvbGUgbGluZSBp cyByZWFkLiBUaGlzIGFsc28KICAgICAgICAgICBkaXNwbGF5cyB0aGUgZmlyc3QgcHJvbXB0LiAg Ki8KLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9hY2xvY2FsLm00CitJbmRleDogZ2Ri LTcuMS45MC4yMDEwMDcyMS9nZGIvYWNsb2NhbC5tNAogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEu OTAuMjAxMDA3MTEub3JpZy9nZGIvYWNsb2NhbC5tNAkyMDEwLTA1LTIzIDAyOjU2OjU5LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2FjbG9jYWwubTQJMjAxMC0w Ny0xMiAxMTozNzowNC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzIxLm9y aWcvZ2RiL2FjbG9jYWwubTQJMjAxMC0wNS0yMyAwMjo1Njo1OS4wMDAwMDAwMDAgKzAyMDAKKysr KyBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9hY2xvY2FsLm00CTIwMTAtMDctMjIgMTE6NTg6MjQu MDAwMDAwMDAwICswMjAwCiBAQCAtMTksNiArMTksMTYyIEBAIFlvdSBoYXZlIGFub3RoZXIgdmVy c2lvbiBvZiBhdXRvY29uZi4gIEkKICBJZiB5b3UgaGF2ZSBwcm9ibGVtcywgeW91IG1heSBuZWVk IHRvIHJlZ2VuZXJhdGUgdGhlIGJ1aWxkIHN5c3RlbSBlbnRpcmVseS4KICBUbyBkbyBzbywgdXNl IHRoZSBwcm9jZWR1cmUgZG9jdW1lbnRlZCBieSB0aGUgcGFja2FnZSwgdHlwaWNhbGx5IGBhdXRv cmVjb25mJy5dKV0pCkBAIC02ODEsMTAgKzY4MSwxMCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEw MDcxMS9nZGIvYWNsb2NhbC5tNAogICMgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzLCAyMDA1LCAy MDA2LCAyMDA3LCAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAjCiAgIyBU aGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgot SW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2NvbmZpZy5pbgorSW5kZXg6IGdkYi03LjEu OTAuMjAxMDA3MjEvZ2RiL2NvbmZpZy5pbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAx MDA3MTEub3JpZy9nZGIvY29uZmlnLmluCTIwMTAtMDctMDYgMjE6MDM6MTEuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvY29uZmlnLmluCTIwMTAtMDctMTIgMTE6 Mzg6MzAuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMS45MC4yMDEwMDcyMS5vcmlnL2dkYi9j b25maWcuaW4JMjAxMC0wNy0yMiAxMTo1NzowOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4x LjkwLjIwMTAwNzIxL2dkYi9jb25maWcuaW4JMjAxMC0wNy0yMiAxMTo1ODoyNC4wMDAwMDAwMDAg KzAyMDAKIEBAIC00Niw2ICs0Niw5IEBACiAgLyogRGVmaW5lIHRvIEJGRCdzIGRlZmF1bHQgdGFy Z2V0IHZlY3Rvci4gKi8KICAjdW5kZWYgREVGQVVMVF9CRkRfVkVDCkBAIC02OTUsNyArNjk1LDcg QEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2NvbmZpZy5pbgogIC8qIERlZmluZSB0 byAxIGlmIHRyYW5zbGF0aW9uIG9mIHByb2dyYW0gbWVzc2FnZXMgdG8gdGhlIHVzZXIncyBuYXRp dmUKICAgICBsYW5ndWFnZSBpcyByZXF1ZXN0ZWQuICovCiAgI3VuZGVmIEVOQUJMRV9OTFMKLUBA IC0yMzIsNiArMjM1LDkgQEAKK0BAIC0yMzEsNiArMjM0LDkgQEAKICAvKiBEZWZpbmUgaWYgUHl0 aG9uIDIuNyBpcyBiZWluZyB1c2VkLiAqLwogICN1bmRlZiBIQVZFX0xJQlBZVEhPTjJfNwogIApA QCAtNzA1LDEwICs3MDUsMTAgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2NvbmZp Zy5pbgogIC8qIERlZmluZSBpZiBsaWJ1bndpbmQgbGlicmFyeSBpcyBiZWluZyB1c2VkLiAqLwog ICN1bmRlZiBIQVZFX0xJQlVOV0lORAogIAotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2Ri L2NvbmZpZ3VyZQorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL2NvbmZpZ3VyZQogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvY29uZmlndXJlCTIwMTAt MDctMDcgMTk6MzY6MzkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9n ZGIvY29uZmlndXJlCTIwMTAtMDctMTIgMTE6Mzg6MTUuMDAwMDAwMDAwICswMjAwCistLS0gZ2Ri LTcuMS45MC4yMDEwMDcyMS5vcmlnL2dkYi9jb25maWd1cmUJMjAxMC0wNy0yMiAxMTo1NzowOS4w MDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9jb25maWd1cmUJMjAx MC0wNy0yMiAxMTo1OToxMy4wMDAwMDAwMDAgKzAyMDAKIEBAIC02NzksNiArNjc5LDkgQEAgUkVQ T1JUX0JVR1NfVE8KICBQS0dWRVJTSU9OCiAgVEFSR0VUX09CUwpAQCAtNzE2LDE4ICs3MTYsMTgg QEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2NvbmZpZ3VyZQogK1JQTV9MSUJTCiAr UlBNX0NGTEFHUwogK1BLR19DT05GSUcKKyBweXRob25kaXIKKyBHREJfREFUQURJUl9QQVRICiAg R0RCX0RBVEFESVIKLSBERUJVR0RJUgotIGFtX19mYXN0ZGVwQ0NfRkFMU0UKLUBAIC05NDUsNiAr OTQ4LDcgQEAgZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmcKLSB3aXRoX3NlcGFyYXRlX2RlYnVn X2RpcgorQEAgLTk0OCw2ICs5NTEsNyBAQCB3aXRoX3NlcGFyYXRlX2RlYnVnX2RpcgogIHdpdGhf Z2RiX2RhdGFkaXIKICB3aXRoX3JlbG9jYXRlZF9zb3VyY2VzCisgd2l0aF9weXRob25kaXIKICt3 aXRoX3JwbQogIGVuYWJsZV90YXJnZXRzCiAgZW5hYmxlXzY0X2JpdF9iZmQKICBlbmFibGVfZ2Ri Y2xpCi1AQCAtOTg1LDYgKzk4OSw5IEBAIExERkxBR1MKK0BAIC05ODgsNiArOTkyLDkgQEAgTERG TEFHUwogIExJQlMKICBDUFBGTEFHUwogIENQUApAQCAtNzM3LDE2ICs3MzcsMTYgQEAgSW5kZXg6 IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2NvbmZpZ3VyZQogIFlBQ0MKICBZRkxBR1MKICBYTUtN RicKLUBAIC0xNjQ2LDYgKzE2NTMsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKK0BAIC0xNjUzLDYg KzE2NjAsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKICAgICAgICAgICAgICAgICAgICAgICAgICAg IFtEQVRBRElSL2dkYl0KLSAgIC0td2l0aC1yZWxvY2F0ZWQtc291cmNlcz1QQVRICi0gICAgICAg ICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHJlbG9jYXRlIHRoaXMgcGF0aCBmb3Ig c291cmNlIGZpbGVzCisgICAtLXdpdGgtcHl0aG9uZGlyICAgICAgICBpbnN0YWxsIFB5dGhvbiBk YXRhIGZpbGVzIGluIHRoaXMgcGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RBVEFE SVIvZ2RiL3B5dGhvbl0KICsgIC0td2l0aC1ycG0gICAgICAgICAgICAgIHF1ZXJ5IHJwbSBkYXRh YmFzZSBmb3IgbWlzc2luZyBkZWJ1Z2luZm9zICh5ZXMvbm8sCiArICAgICAgICAgICAgICAgICAg ICAgICAgICBkZWYuIGF1dG89bGlicnBtLnNvKQogICAgLS13aXRoLWxpYnVud2luZCAgICAgICAg dXNlIGxpYnVud2luZCBmcmFtZSB1bndpbmRpbmcgc3VwcG9ydAogICAgLS13aXRoLWN1cnNlcyAg ICAgICAgICAgdXNlIHRoZSBjdXJzZXMgbGlicmFyeSBpbnN0ZWFkIG9mIHRoZSB0ZXJtY2FwCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5Ci1AQCAtMTY4MSw2ICsxNjkwLDkgQEAg U29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CitAQCAtMTY4OCw2ICsxNjk3 LDkgQEAgU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CiAgICBDUFBGTEFH UyAgICBDL0MrKy9PYmplY3RpdmUgQyBwcmVwcm9jZXNzb3IgZmxhZ3MsIGUuZy4gLUk8aW5jbHVk ZSBkaXI+IGlmCiAgICAgICAgICAgICAgICB5b3UgaGF2ZSBoZWFkZXJzIGluIGEgbm9uc3RhbmRh cmQgZGlyZWN0b3J5IDxpbmNsdWRlIGRpcj4KICAgIENQUCAgICAgICAgIEMgcHJlcHJvY2Vzc29y CkBAIC03NTYsNyArNzU2LDcgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2NvbmZp Z3VyZQogICAgWUFDQyAgICAgICAgVGhlIGBZZXQgQW5vdGhlciBDIENvbXBpbGVyJyBpbXBsZW1l bnRhdGlvbiB0byB1c2UuIERlZmF1bHRzIHRvCiAgICAgICAgICAgICAgICB0aGUgZmlyc3QgcHJv Z3JhbSBmb3VuZCBvdXQgb2Y6IGBiaXNvbiAteScsIGBieWFjYycsIGB5YWNjJy4KICAgIFlGTEFH UyAgICAgIFRoZSBsaXN0IG9mIGFyZ3VtZW50cyB0aGF0IHdpbGwgYmUgcGFzc2VkIGJ5IGRlZmF1 bHQgdG8gJFlBQ0MuCi1AQCAtNzg3OCw2ICs3ODkwLDQ4NiBAQCBfQUNFT0YKK0BAIC03OTUxLDYg Kzc5NjMsNDg1IEBAIF9BQ0VPRgogIGZpCiAgCiAgCkBAIC0xMjM5LDE3ICsxMjM5LDE2IEBAIElu ZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9jb25maWd1cmUKICsgICAgZmkKICsgIGZpCiAr ZmkKLSsKICAKICAKLSBzdWJkaXJzPSIkc3ViZGlycyBkb2MgdGVzdHN1aXRlIgotSW5kZXg6IGdk Yi03LjEuOTAuMjAxMDA3MTEvZ2RiL2NvbmZpZ3VyZS5hYworIAorSW5kZXg6IGdkYi03LjEuOTAu MjAxMDA3MjEvZ2RiL2NvbmZpZ3VyZS5hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAx MDA3MTEub3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTAtMDctMDcgMTk6MzY6MzkuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvY29uZmlndXJlLmFjCTIwMTAtMDct MTIgMTE6Mzg6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTA4LDYgKzEwOCwxOTkgQEAgQVNfSEVM UF9TVFJJTkcoWy0td2l0aC1yZWxvY2F0ZWQtc291cmNlcwotICAgICAgICAgICAgICAgW1JlbG9j YXRlZCBkaXJlY3RvcnkgZm9yIHNvdXJjZSBmaWxlcy4gXSkKLSBdKQorLS0tIGdkYi03LjEuOTAu MjAxMDA3MjEub3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTAtMDctMjIgMTE6NTc6MDkuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvY29uZmlndXJlLmFjCTIwMTAt MDctMjIgMTE6NTk6MDQuMDAwMDAwMDAwICswMjAwCitAQCAtMTUyLDYgKzE1MiwxOTggQEAgZWxz ZQorIGZpCisgQUNfU1VCU1QocHl0aG9uZGlyKQogIAogKyMgSW50ZWdyYXRpb24gd2l0aCBycG0g bGlicmFyeSB0byBzdXBwb3J0IG1pc3NpbmcgZGVidWdpbmZvIHN1Z2dlc3Rpb25zLgogKyMgLS13 aXRob3V0LXJwbTogRGlzYWJsZSBhbnkgcnBtIHN1cHBvcnQuCkBAIC0xNDQzLDE0ICsxNDQyLDEz IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9jb25maWd1cmUuYWMKICsgICAgZmkK ICsgIGZpCiArZmkKLSsKKyAKICBBQ19DT05GSUdfU1VCRElSUyhkb2MgdGVzdHN1aXRlKQogIAot ICMgQ2hlY2sgd2hldGhlciB0byBzdXBwb3J0IGFsdGVybmF0aXZlIHRhcmdldCBjb25maWd1cmF0 aW9ucwotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2FjaW5jbHVkZS5tNAorSW5kZXg6 IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL2FjaW5jbHVkZS5tNAogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvYWNpbmNsdWRlLm00CTIwMTAtMDUtMjcgMDU6NDA6 NDUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvYWNpbmNsdWRl Lm00CTIwMTAtMDctMTIgMTE6Mzc6MDQuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMS45MC4y MDEwMDcyMS5vcmlnL2dkYi9hY2luY2x1ZGUubTQJMjAxMC0wNS0yNyAwNTo0MDo0NS4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9hY2luY2x1ZGUubTQJMjAxMC0w Ny0yMiAxMTo1ODoyNC4wMDAwMDAwMDAgKzAyMDAKIEBAIC0xLDMgKzEsNSBAQAogKyMgc2VyaWFs IDEKICsKCmRpZmYgLS1naXQgYS9nZGItYXJjaGVyLnBhdGNoIGIvZ2RiLWFyY2hlci5wYXRjaApp bmRleCBjMTRhNGJlLi42YzhjZDU2IDEwMDY0NAotLS0gYS9nZGItYXJjaGVyLnBhdGNoCisrKyBi L2dkYi1hcmNoZXIucGF0Y2gKQEAgLTIsMTggKzIsMTIyIEBAIGh0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9nZGIvd2lraS9Qcm9qZWN0QXJjaGVyCiBodHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kv QXJjaGVyQnJhbmNoTWFuYWdlbWVudAogCiBHSVQgc25hcHNob3Q6Ci1jb21taXQgMGJjOWE5Mzcy NWQ3YTdiY2YxZTMwZjA3MmExMmNjNTE4NmU0MWRjMgorY29tbWl0IDIwMmY0ZDBlM2FmOGQ4YThk N2MwYjQwOGQ5ZTBhOGNiNjlmOTEyYjYKIAogYnJhbmNoIGBhcmNoZXInIC0gdGhlIG1lcmdlIG9m IGJyYW5jaGVzOgogYXJjaGVyLWphbmtyYXRvY2h2aWwtdmxhCiBhcmNoZXItamFua3JhdG9jaHZp bC13YXRjaHBvaW50MwogYXJjaGVyLWphbmtyYXRvY2h2aWwtaWZ1bmMKIGFyY2hlci1wbXVsZG9v bi1uZXh0LW92ZXItdGhyb3cyCi0jVE9ETzphcmNoZXItdHJvbWV5LXB5dGhvbiAocG9zc2libHkg b25seSBleHRyYWN0ZWQgcGFydHMpCi0jVE9ETzphcmNoZXItdHJvbWV5LW9wdGlvbmFsLXBzeW10 YWIgKG1vcmUgZnJlc2ggcGF0Y2hlcyBhcmUgYXQgZ2RiLXBhdGNoZXNAKQorYXJjaGVyLXRyb21l eS1weXRob24gKG5vdCBhIG1lcmdlKQorYXJjaGVyLXRyb21leS1vcHRpb25hbC1wc3ltdGFiIChj aGVycnktcGlja2VkIGZyb20gcG9zdC03LjIgbWFzdGVyKQogI1RPRE86YXJjaGVyLXRyb21leS10 aHJlYWRlZC1kd2FyZgogCiAKK2RpZmYgLS1naXQgYS9nZGIvTWFrZWZpbGUuaW4gYi9nZGIvTWFr ZWZpbGUuaW4KK2luZGV4IDZkYmIyODQuLjYxMzNkYTMgMTAwNjQ0CistLS0gYS9nZGIvTWFrZWZp bGUuaW4KKysrKyBiL2dkYi9NYWtlZmlsZS5pbgorQEAgLTE2OSw2ICsxNjksMTIgQEAgVEFSR0VU X1NZU1RFTV9ST09UID0gQFRBUkdFVF9TWVNURU1fUk9PVEAKKyBUQVJHRVRfU1lTVEVNX1JPT1Rf REVGSU5FID0gQFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkVACisgCisgIyBEaWQgdGhlIHVzZXIg Z2l2ZSB1cyBhIC0td2l0aC1nZGItZGF0YWRpciBvcHRpb24/CisrR0RCX0RBVEFESVJfUEFUSCA9 IEBHREJfREFUQURJUl9QQVRIQAorKworKyMgVGhlIGFyZ3VtZW50IHRvIC0td2l0aC1weXRob25k aXIuICBJZiBub3QgZ2l2ZW4sIHRoaXMgaXMKKysjIEdEQl9EQVRBRElSX1BBVEgvcHl0aG9uLgor K3B5dGhvbmRpciA9IEBweXRob25kaXJACisrCisgR0RCX0RBVEFESVIgPSBAR0RCX0RBVEFESVJA CisgCisgIyBIZWxwZXIgY29kZSBmcm9tIGdudWxpYi4KK0BAIC0yOTUsMTMgKzMwMSwxMyBAQCBT VUJESVJfUFlUSE9OX1NSQ1MgPSBcCisgCXB5dGhvbi9weS1jbWQuYyBcCisgCXB5dGhvbi9weS1m cmFtZS5jIFwKKyAJcHl0aG9uL3B5LWZ1bmN0aW9uLmMgXAorKwlweXRob24vcHktaG9va3MuYyBc CisgCXB5dGhvbi9weS1pbmZlcmlvci5jIFwKKyAJcHl0aG9uL3B5LWluZnRocmVhZC5jIFwKKyAJ cHl0aG9uL3B5LWxhenktc3RyaW5nLmMgXAorIAlweXRob24vcHktb2JqZmlsZS5jIFwKKyAJcHl0 aG9uL3B5LXBhcmFtLmMgXAorIAlweXRob24vcHktcHJldHR5cHJpbnQuYyBcCistCXB5dGhvbi9w eS1wcm9nc3BhY2UuYyBcCisgCXB5dGhvbi9weS1zeW1ib2wuYyBcCisgCXB5dGhvbi9weS1zeW10 YWIuYyBcCisgCXB5dGhvbi9weS10eXBlLmMgXAorQEAgLTc4MCw4ICs3ODYsOCBAQCBjb25maWcv cnM2MDAwL25tLXJzNjAwMC5oIHRvcC5oIGJzZC1rdm0uaCBnZGItc3RhYnMuaCByZWdncm91cHMu aCBcCisgYW5ub3RhdGUuaCBzaW0tcmVnbm8uaCBkaWN0aW9uYXJ5LmggZGZwLmggbWFpbi5oIGZy YW1lLXVud2luZC5oCVwKKyByZW1vdGUtZmlsZWlvLmggaTM4Ni1saW51eC10ZGVwLmggdmF4LXRk ZXAuaCBvYmpjLWxhbmcuaCBcCisgc2VudGluZWwtZnJhbWUuaCBiY2FjaGUuaCBzeW1maWxlLmgg d2luZG93cy10ZGVwLmggbGludXgtdGRlcC5oIFwKKy1nZGJfdXNsZWVwLmggaml0LmggeG1sLXN5 c2NhbGwuaCBhZGEtb3BlcmF0b3IuaW5jIG1pY3JvYmxhemUtdGRlcC5oIFwKKy1wc3ltdGFiLmgg cHN5bXByaXYuaAorK2dkYl91c2xlZXAuaCBqaXQuaCBweXRob24vcHl0aG9uLmggcHl0aG9uL3B5 dGhvbi1pbnRlcm5hbC5oIFwKKyt4bWwtc3lzY2FsbC5oIGFkYS1vcGVyYXRvci5pbmMgbWljcm9i bGF6ZS10ZGVwLmgKKyAKKyAjIEhlYWRlciBmaWxlcyB0aGF0IGFscmVhZHkgaGF2ZSBzcmNkaXIg aW4gdGhlbSwgb3Igd2hpY2ggYXJlIGluIG9iamRpci4KKyAKK0BAIC0xMjk5LDYgKzEzMDUsMTIg QEAgc3RhbXAtaDogJChzcmNkaXIpL2NvbmZpZy5pbiBjb25maWcuc3RhdHVzCisgCSAgQ09ORklH X0xJTktTPSBcCisgCSAgJChTSEVMTCkgY29uZmlnLnN0YXR1cworIAorKy5nZGJpbml0OiAkKHNy Y2RpcikvZ2RiaW5pdC5pbiBjb25maWcuc3RhdHVzCisrCUNPTkZJR19GSUxFUz0iLmdkYmluaXQ6 Z2RiaW5pdC5pbiIgXAorKwkgIENPTkZJR19DT01NQU5EUz0gXAorKwkgIENPTkZJR19IRUFERVJT PSBcCisrCSAgJChTSEVMTCkgY29uZmlnLnN0YXR1cworKworIGNvbmZpZy5zdGF0dXM6ICQoc3Jj ZGlyKS9jb25maWd1cmUgY29uZmlndXJlLnRndCBjb25maWd1cmUuaG9zdAorIAkkKFNIRUxMKSBj b25maWcuc3RhdHVzIC0tcmVjaGVjaworIAorQEAgLTIwMjIsNiArMjAzNCwxMCBAQCBweS1mdW5j dGlvbi5vOiAkKHNyY2RpcikvcHl0aG9uL3B5LWZ1bmN0aW9uLmMKKyAJJChDT01QSUxFKSAkKFBZ VEhPTl9DRkxBR1MpICQoc3JjZGlyKS9weXRob24vcHktZnVuY3Rpb24uYworIAkkKFBPU1RDT01Q SUxFKQorIAorK3B5LWhvb2tzLm86ICQoc3JjZGlyKS9weXRob24vcHktaG9va3MuYworKwkkKENP TVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS1ob29rcy5jCisrCSQo UE9TVENPTVBJTEUpCisrCisgcHktaW5mZXJpb3IubzogJChzcmNkaXIpL3B5dGhvbi9weS1pbmZl cmlvci5jCisgCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5 LWluZmVyaW9yLmMKKyAJJChQT1NUQ09NUElMRSkKK0BAIC0yMDcwLDYgKzIwODYsMzYgQEAgcHkt dmFsdWUubzogJChzcmNkaXIpL3B5dGhvbi9weS12YWx1ZS5jCisgCSQoQ09NUElMRSkgJChQWVRI T05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LXZhbHVlLmMKKyAJJChQT1NUQ09NUElMRSkK KyAKKysjIEFsbCBweXRob24gbGlicmFyeSBmaWxlcywgd2l0aCB0aGUgInB5dGhvbi9saWIiIHN0 cmlwcGVkIG9mZi4KKysjIE5vdGUgdGhhdCB3ZSBzaG91bGQgb25seSBpbnN0YWxsIGZpbGVzIGlu IHRoZSAiZ2RiIiBtb2R1bGUuCisrUFlfRklMRVMgPSBnZGIvRnJhbWVJdGVyYXRvci5weSBnZGIv RnJhbWVXcmFwcGVyLnB5IGdkYi9jb21tYW5kL2FsaWFzLnB5IFwKKysgICAgZ2RiL2NvbW1hbmQv YmFja3RyYWNlLnB5IGdkYi9jb21tYW5kL3JlcXVpcmUucHkgXAorKyAgICBnZGIvY29tbWFuZC9w YWhvbGUucHkgZ2RiL2NvbW1hbmQvdXB0by5weSBnZGIvY29tbWFuZC9fX2luaXRfXy5weSBcCisr ICAgIGdkYi9jb21tYW5kL2lnbm9yZV9lcnJvcnMucHkgZ2RiL2NvbW1hbmQvc2F2ZV9icmVha3Bv aW50cy5weSBcCisrICAgIGdkYi9mdW5jdGlvbi9jYWxsZXJfaXMucHkgZ2RiL2Z1bmN0aW9uL2lu X3Njb3BlLnB5IFwKKysgICAgZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5IGdkYi9iYWNrdHJhY2Uu cHkgZ2RiL19faW5pdF9fLnB5CisrCisrIyBJbnN0YWxsIHRoZSBQeXRob24gbGlicmFyeS4gIFB5 dGhvbiBsaWJyYXJ5IGZpbGVzIGdvIHVuZGVyCisrIyAkKHB5dGhvbmRpcikuCisraW5zdGFsbC1w eXRob246CisrCWZpbGVzPSckKFBZX0ZJTEVTKSc7IGZvciBmaWxlIGluICQkZmlsZXM7IGRvIFwK KysJICBkaXI9YGVjaG8gIiQkZmlsZSIgfCBzZWQgJ3MsL1teL10qJCQsLCdgOyBcCisrCSAgJChT SEVMTCkgJChzcmNkaXIpLy4uL21raW5zdGFsbGRpcnMgJChERVNURElSKSQocHl0aG9uZGlyKS8k JGRpcjsgXAorKwkgICQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvcHl0aG9uL2xpYi8kJGZpbGUg JChERVNURElSKSQocHl0aG9uZGlyKS8kJGZpbGU7IFwKKysJZG9uZQorKworKyMgT3RoZXIgcGFj a2FnZXMgbWF5IGhhdmUgdGhlaXIgZmlsZXMgaW5zdGFsbGVkIGluICQocHl0aG9uZGlyKS4KKyt1 bmluc3RhbGwtcHl0aG9uOgorKwlmaWxlcz0nJChQWV9GSUxFUyknOyBmb3IgZmlsZSBpbiAkJGZp bGVzOyBkbyBcCisrCSAgc2xhc2hkaXI9YGVjaG8gIi8kJGZpbGUiIHwgc2VkICdzLC9bXi9dKiQk LCwnYDsgXAorKwkgIHJtIC1mICQoREVTVERJUikkKHB5dGhvbmRpcikvJCRmaWxlOyBcCisrCSAg d2hpbGUgdGVzdCAieCQkZmlsZSIgIT0gIngkJHNsYXNoZGlyIjsgZG8gXAorKwkgICAgcm1kaXIg Mj4vZGV2L251bGwgIiQoREVTVERJUikkKHB5dGhvbmRpcikkJHNsYXNoZGlyIjsgXAorKwkgICAg ZmlsZT0iJCRzbGFzaGRpciI7IFwKKysJICAgIHNsYXNoZGlyPWBlY2hvICIkJGZpbGUiIHwgc2Vk ICdzLC9bXi9dKiQkLCwnYDsgXAorKwkgIGRvbmUgXAorKwlkb25lCisrCisgIworICMgRGVwZW5k ZW5jeSB0cmFja2luZy4gIE1vc3Qgb2YgdGhpcyBpcyBjb25kaXRpb25hbCBvbiBHTlUgTWFrZSBi ZWluZworICMgZm91bmQgYnkgY29uZmlndXJlOyBpZiBHTlUgTWFrZSBpcyBub3QgZm91bmQsIHdl IGZhbGwgYmFjayB0byBhCiBkaWZmIC0tZ2l0IGEvZ2RiL2FkYS1sYW5nLmMgYi9nZGIvYWRhLWxh bmcuYwogaW5kZXggMWQ0YzM4Yi4uY2FmYjg4ZSAxMDA2NDQKIC0tLSBhL2dkYi9hZGEtbGFuZy5j CkBAIC0xODUsNyArMjg5LDcgQEAgaW5kZXggMDM0OGJmNC4uZjAxZDBlZSAxMDA2NDQKICAKICAv KiBSZXR1cm4gdGhlIGlubmVybW9zdCBzdGFjayBmcmFtZSBleGVjdXRpbmcgaW5zaWRlIG9mIEJM T0NLLAogZGlmZiAtLWdpdCBhL2dkYi9icmVha3BvaW50LmMgYi9nZGIvYnJlYWtwb2ludC5jCi1p bmRleCA0YWZmZTBhLi41MjEwNWI1IDEwMDY0NAoraW5kZXggNGFmZmUwYS4uNTg0YzY4ZSAxMDA2 NDQKIC0tLSBhL2dkYi9icmVha3BvaW50LmMKICsrKyBiL2dkYi9icmVha3BvaW50LmMKIEBAIC02 Miw2ICs2Miw3IEBACkBAIC0yMjcsNiArMzMxLDE1IEBAIGluZGV4IDRhZmZlMGEuLjUyMTA1YjUg MTAwNjQ0CiAgLyogQXNzdW1pbmcgd2UncmUgY3JlYXRpbmcgYSBzdGF0aWMgdHJhY2Vwb2ludCwg ZG9lcyBTIGxvb2sgbGlrZSBhCiAgICAgc3RhdGljIHRyYWNlcG9pbnQgbWFya2VyIHNwZWMgKCIt bSBNQVJLRVJfSUQiKT8gICovCiAgI2RlZmluZSBpc19tYXJrZXJfc3BlYyhzKQkJCQkJCVwKK0BA IC00MzAsNyArNDQxLDcgQEAgc3RhdGljIGludCB0cmFjZXBvaW50X2NvdW50OworIAorIHN0YXRp YyBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYnJlYWtwb2ludF9zZXRfY21kbGlzdDsKKyBzdGF0 aWMgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmJyZWFrcG9pbnRfc2hvd19jbWRsaXN0OworLXN0 YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqc2F2ZV9jbWRsaXN0OworK3N0cnVjdCBjbWRf bGlzdF9lbGVtZW50ICpzYXZlX2NtZGxpc3Q7CisgCisgLyogUmV0dXJuIHdoZXRoZXIgYSBicmVh a3BvaW50IGlzIGFuIGFjdGl2ZSBlbmFibGVkIGJyZWFrcG9pbnQuICAqLworIHN0YXRpYyBpbnQK IEBAIC0xMjUyLDYgKzEyNjMsMjIgQEAgd2F0Y2hwb2ludF9pbl90aHJlYWRfc2NvcGUgKHN0cnVj dCBicmVha3BvaW50ICpiKQogIAkgICAgICAmJiAhaXNfZXhlY3V0aW5nIChpbmZlcmlvcl9wdGlk KSkpOwogIH0KQEAgLTEyMDcsNiArMTMyMCwzOTUgQEAgaW5kZXggOTI2YWUyZi4uYTU5Yjk2NSAx MDA2NDQKICAJJiYgIVRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEICh0eXBlKSkK ICAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJWQiLAogIAkJCSAgKFRZUEVfTEVOR1RIICh0 eXBlKQorZGlmZiAtLWdpdCBhL2dkYi9jb25maWcuaW4gYi9nZGIvY29uZmlnLmluCitpbmRleCAx ZmM0NTdkLi5mNGM4NDZhIDEwMDY0NAorLS0tIGEvZ2RiL2NvbmZpZy5pbgorKysrIGIvZ2RiL2Nv bmZpZy5pbgorQEAgLTUwLDExICs1MCwxMCBAQAorICAgIGxhbmd1YWdlIGlzIHJlcXVlc3RlZC4g Ki8KKyAjdW5kZWYgRU5BQkxFX05MUworIAorLS8qIGxvb2sgZm9yIGdsb2JhbCBzZXBhcmF0ZSBk YXRhIGZpbGVzIGluIHRoaXMgcGF0aCBbREFUQURJUi9nZGJdICovCisrLyogR2xvYmFsIGRpcmVj dG9yeSBmb3IgR0RCIGRhdGEgZmlsZXMuICovCisgI3VuZGVmIEdEQl9EQVRBRElSCisgCistLyog RGVmaW5lIGlmIHRoZSBnZGItZGF0YWRpciBkaXJlY3Rvcnkgc2hvdWxkIGJlIHJlbG9jYXRlZCB3 aGVuIEdEQiBpcyBtb3ZlZC4KKy0gICAqLworKy8qIERlZmluZSBpZiBHREIgZGF0YWRpciBzaG91 bGQgYmUgcmVsb2NhdGVkIHdoZW4gR0RCIGlzIG1vdmVkLiAqLworICN1bmRlZiBHREJfREFUQURJ Ul9SRUxPQ0FUQUJMRQorIAorIC8qIERlZmluZSB0byBiZSBhIHN0cmluZyBuYW1pbmcgdGhlIGRl ZmF1bHQgaG9zdCBjaGFyYWN0ZXIgc2V0LiAqLworQEAgLTc2OSw2ICs3NjgsOSBAQAorICAgICdw dHJkaWZmX3QnLiAqLworICN1bmRlZiBQVFJESUZGX1RfU1VGRklYCisgCisrLyogRGVmaW5lIHRv IGluc3RhbGwgcGF0aCBmb3IgUHl0aG9uIHNvdXJjZXMgKi8KKysjdW5kZWYgUFlUSE9ORElSCisr CisgLyogRGVmaW5lIGlmIHRoZSBweXRob24gZGlyZWN0b3J5IHNob3VsZCBiZSByZWxvY2F0ZWQg d2hlbiBHREIgaXMgbW92ZWQuICovCisgI3VuZGVmIFBZVEhPTl9QQVRIX1JFTE9DQVRBQkxFCisg CitkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZSBiL2dkYi9jb25maWd1cmUKK2luZGV4IDk0ZWI5 YjkuLmU0OWRhMDggMTAwNzU1CistLS0gYS9nZGIvY29uZmlndXJlCisrKysgYi9nZGIvY29uZmln dXJlCitAQCAtNjc5LDYgKzY3OSw4IEBAIFJFUE9SVF9CVUdTX1RPCisgUEtHVkVSU0lPTgorIFRB UkdFVF9PQlMKKyBzdWJkaXJzCisrcHl0aG9uZGlyCisrR0RCX0RBVEFESVJfUEFUSAorIEdEQl9E QVRBRElSCisgREVCVUdESVIKKyBhbV9fZmFzdGRlcENDX0ZBTFNFCitAQCAtOTQ1LDYgKzk0Nyw3 IEBAIGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nCisgd2l0aF9zZXBhcmF0ZV9kZWJ1Z19kaXIK KyB3aXRoX2dkYl9kYXRhZGlyCisgd2l0aF9yZWxvY2F0ZWRfc291cmNlcworK3dpdGhfcHl0aG9u ZGlyCisgZW5hYmxlX3RhcmdldHMKKyBlbmFibGVfNjRfYml0X2JmZAorIGVuYWJsZV9nZGJjbGkK K0BAIC0xNjQ2LDYgKzE2NDksMTAgQEAgT3B0aW9uYWwgUGFja2FnZXM6CisgICAgICAgICAgICAg ICAgICAgICAgICAgICBbREFUQURJUi9nZGJdCisgICAtLXdpdGgtcmVsb2NhdGVkLXNvdXJjZXM9 UEFUSAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSByZWxvY2F0ZSB0 aGlzIHBhdGggZm9yIHNvdXJjZSBmaWxlcworKyAgLS13aXRoLWdkYi1kYXRhZGlyICAgICAgbG9v ayBmb3IgZ2xvYmFsIHNlcGFyYXRlIGRhdGEgZmlsZXMgaW4gdGhpcyBwYXRoCisrICAgICAgICAg ICAgICAgICAgICAgICAgICBbREFUQURJUi9nZGJdCisrICAtLXdpdGgtcHl0aG9uZGlyICAgICAg ICBpbnN0YWxsIFB5dGhvbiBkYXRhIGZpbGVzIGluIHRoaXMgcGF0aAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgW0RBVEFESVIvZ2RiL3B5dGhvbl0KKyAgIC0td2l0aC1saWJ1bndpbmQgICAg ICAgIHVzZSBsaWJ1bndpbmQgZnJhbWUgdW53aW5kaW5nIHN1cHBvcnQKKyAgIC0td2l0aC1jdXJz ZXMgICAgICAgICAgIHVzZSB0aGUgY3Vyc2VzIGxpYnJhcnkgaW5zdGVhZCBvZiB0aGUgdGVybWNh cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeQorQEAgLTc4NzgsNiArNzg4NSw3 MyBAQCBfQUNFT0YKKyBmaQorIAorIAorKyMgR0RCJ3MgZGF0YWRpciByZWxvY2F0aW9uCisrCisr Z2RiZGF0YWRpcj0ke2RhdGFkaXJ9L2dkYgorKworKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgt Z2RiLWRhdGFkaXIgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9nZGJfZGF0YWRpcitzZXR9 IiA9IHNldDsgdGhlbiA6CisrICB3aXRodmFsPSR3aXRoX2dkYl9kYXRhZGlyOyBnZGJkYXRhZGly PSIke3dpdGh2YWx9IgorK2ZpCisrCisrCisrCisrICB0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORSAm JiBwcmVmaXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKKysgIHRlc3QgIngkZXhlY19wcmVmaXgiID0g eE5PTkUgJiYgZXhlY19wcmVmaXg9JyR7cHJlZml4fScKKysgIGFjX2RlZmluZV9kaXI9YGV2YWwg ZWNobyAkZ2RiZGF0YWRpcmAKKysgIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNobyAkYWNfZGVmaW5l X2RpcmAKKysKKytjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisrI2RlZmluZSBHREJfREFUQURJ UiAiJGFjX2RlZmluZV9kaXIiCisrX0FDRU9GCisrCisrCisrCisraWYgdGVzdCAieCRleGVjX3By ZWZpeCIgPSB4Tk9ORSB8fCB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9ICd4JHtwcmVmaXh9JzsgdGhl bgorKyAgaWYgdGVzdCAieCRwcmVmaXgiID0geE5PTkU7IHRoZW4KKysgICAgdGVzdF9wcmVmaXg9 L3Vzci9sb2NhbAorKyAgZWxzZQorKyAgICB0ZXN0X3ByZWZpeD0kcHJlZml4CisrICBmaQorK2Vs c2UKKysgIHRlc3RfcHJlZml4PSRleGVjX3ByZWZpeAorK2ZpCisrCisrY2FzZSAke2dkYmRhdGFk aXJ9IGluCisrICAiJHt0ZXN0X3ByZWZpeH0ifCIke3Rlc3RfcHJlZml4fS8iKnxcCisrICAnJHtl eGVjX3ByZWZpeH0nfCcke2V4ZWNfcHJlZml4fS8nKikKKysKKyskYXNfZWNobyAiI2RlZmluZSBH REJfREFUQURJUl9SRUxPQ0FUQUJMRSAxIiA+PmNvbmZkZWZzLmgKKysKKysgIDs7CisrZXNhYwor K0dEQl9EQVRBRElSX1BBVEg9JHtnZGJkYXRhZGlyfQorKworKworKworKyMgQ2hlY2sgd2hldGhl ciAtLXdpdGgtcHl0aG9uZGlyIHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfcHl0aG9uZGly K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfcHl0aG9uZGlyOyBweXRob25k aXI9IiR7d2l0aHZhbH0iCisrZWxzZQorKyAgcHl0aG9uZGlyPW5vCisrZmkKKysKKysKKysjIElm IHRoZSB1c2VyIHBhc3NlZCBpbiBhIHBhdGgsIGRlZmluZSBpdC4gIE90aGVyd2lzZSwgY29tcHV0 ZSBpdCBhdAorKyMgcnVudGltZSBiYXNlZCBvbiB0aGUgcG9zc2libHktcmVsb2NhdGFibGUgZGF0 YWRpci4KKytpZiB0ZXN0ICIkcHl0aG9uZGlyIiA9ICJubyI7IHRoZW4KKysgIHB5dGhvbmRpcj0n JChHREJfREFUQURJUl9QQVRIKS9weXRob24nCisrZWxzZQorKworK2NhdCA+PmNvbmZkZWZzLmgg PDxfQUNFT0YKKysjZGVmaW5lIFBZVEhPTkRJUiAiJHB5dGhvbmRpciIKKytfQUNFT0YKKysKKytm aQorKworKworKworIAorIAorIHN1YmRpcnM9IiRzdWJkaXJzIGRvYyB0ZXN0c3VpdGUiCitAQCAt MTA4ODEsNiArMTA5NTUsOCBAQCAkYXNfZWNobyAiI2RlZmluZSBIQVZFX1BZVEhPTiAxIiA+PmNv bmZkZWZzLmgKKyAgIENPTkZJR19PQlM9IiRDT05GSUdfT0JTIFwkKFNVQkRJUl9QWVRIT05fT0JT KSIKKyAgIENPTkZJR19ERVBTPSIkQ09ORklHX0RFUFMgXCQoU1VCRElSX1BZVEhPTl9ERVBTKSIK KyAgIENPTkZJR19TUkNTPSIkQ09ORklHX1NSQ1MgXCQoU1VCRElSX1BZVEhPTl9TUkNTKSIKKysg IENPTkZJR19JTlNUQUxMPSIkQ09ORklHX0lOU1RBTEwgaW5zdGFsbC1weXRob24iCisrICBDT05G SUdfVU5JTlNUQUxMPSIkQ09ORklHX1VOSU5TVEFMTCB1bmluc3RhbGwtcHl0aG9uIgorICAgRU5B QkxFX0NGTEFHUz0iJEVOQUJMRV9DRkxBR1MgXCQoU1VCRElSX1BZVEhPTl9DRkxBR1MpIgorIAor ICAgIyBGbGFncyBuZWVkZWQgdG8gY29tcGlsZSBQeXRob24gY29kZSAodGFrZW4gZnJvbSBweXRo b24tY29uZmlnIC0tY2ZsYWdzKS4KK2RpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlLmFjIGIvZ2Ri L2NvbmZpZ3VyZS5hYworaW5kZXggOTMwMDU0NC4uMzgwNDczYSAxMDA2NDQKKy0tLSBhL2dkYi9j b25maWd1cmUuYWMKKysrKyBiL2dkYi9jb25maWd1cmUuYWMKK0BAIC0xMDgsNiArMTA4LDUxIEBA IEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtcmVsb2NhdGVkLXNvdXJjZXM9UEFUSF0sIFthdXRvbWF0 aWNhbGx5IHJlbG9jYXRlIHRoaXMgcGF0CisgICAgICAgICAgICAgICBbUmVsb2NhdGVkIGRpcmVj dG9yeSBmb3Igc291cmNlIGZpbGVzLiBdKQorIF0pCisgCisrIyBHREIncyBkYXRhZGlyIHJlbG9j YXRpb24KKysKKytnZGJkYXRhZGlyPSR7ZGF0YWRpcn0vZ2RiCisrCisrQUNfQVJHX1dJVEgoW2dk Yi1kYXRhZGlyXSwKKysgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWdkYi1kYXRhZGlyXSwKKysg ICAgICAgICAgICAgICAgICBbbG9vayBmb3IgZ2xvYmFsIHNlcGFyYXRlIGRhdGEgZmlsZXMgaW4g dGhpcyBwYXRoIFtEQVRBRElSL2dkYl1dKV0sIFtnZGJkYXRhZGlyPSIke3dpdGh2YWx9Il0pCisr CisrQUNfREVGSU5FX0RJUihHREJfREFUQURJUiwgZ2RiZGF0YWRpciwKKysgICAgICAgICAgICAg IFtHbG9iYWwgZGlyZWN0b3J5IGZvciBHREIgZGF0YSBmaWxlcy4gXSkKKysKKytpZiB0ZXN0ICJ4 JGV4ZWNfcHJlZml4IiA9IHhOT05FIHx8IHRlc3QgIngkZXhlY19wcmVmaXgiID0gJ3gke3ByZWZp eH0nOyB0aGVuCisrICBpZiB0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORTsgdGhlbgorKyAgICB0ZXN0 X3ByZWZpeD0vdXNyL2xvY2FsCisrICBlbHNlCisrICAgIHRlc3RfcHJlZml4PSRwcmVmaXgKKysg IGZpCisrZWxzZQorKyAgdGVzdF9wcmVmaXg9JGV4ZWNfcHJlZml4CisrZmkKKysKKytjYXNlICR7 Z2RiZGF0YWRpcn0gaW4KKysgICIke3Rlc3RfcHJlZml4fSJ8IiR7dGVzdF9wcmVmaXh9LyIqfFwK KysgICcke2V4ZWNfcHJlZml4fSd8JyR7ZXhlY19wcmVmaXh9LycqKQorKyAgICBBQ19ERUZJTkUo R0RCX0RBVEFESVJfUkVMT0NBVEFCTEUsIDEsIFtEZWZpbmUgaWYgR0RCIGRhdGFkaXIgc2hvdWxk IGJlIHJlbG9jYXRlZCB3aGVuIEdEQiBpcyBtb3ZlZC5dKQorKyAgOzsKKytlc2FjCisrR0RCX0RB VEFESVJfUEFUSD0ke2dkYmRhdGFkaXJ9CisrQUNfU1VCU1QoR0RCX0RBVEFESVJfUEFUSCkKKysK KytBQ19BUkdfV0lUSChbcHl0aG9uZGlyXSwKKysgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLXB5 dGhvbmRpcl0sCisrICAgICAgICAgICAgICAgICAgW2luc3RhbGwgUHl0aG9uIGRhdGEgZmlsZXMg aW4gdGhpcyBwYXRoIFtEQVRBRElSL2dkYi9weXRob25dXSldLCBbcHl0aG9uZGlyPSIke3dpdGh2 YWx9Il0sIFtweXRob25kaXI9bm9dKQorKworKyMgSWYgdGhlIHVzZXIgcGFzc2VkIGluIGEgcGF0 aCwgZGVmaW5lIGl0LiAgT3RoZXJ3aXNlLCBjb21wdXRlIGl0IGF0CisrIyBydW50aW1lIGJhc2Vk IG9uIHRoZSBwb3NzaWJseS1yZWxvY2F0YWJsZSBkYXRhZGlyLgorK2lmIHRlc3QgIiRweXRob25k aXIiID0gIm5vIjsgdGhlbgorKyAgcHl0aG9uZGlyPSckKEdEQl9EQVRBRElSX1BBVEgpL3B5dGhv bicKKytlbHNlCisrICBBQ19ERUZJTkVfVU5RVU9URUQoUFlUSE9ORElSLCAiJHB5dGhvbmRpciIs CisrICAgICAgW0RlZmluZSB0byBpbnN0YWxsIHBhdGggZm9yIFB5dGhvbiBzb3VyY2VzXSkKKytm aQorK0FDX1NVQlNUKHB5dGhvbmRpcikKKysKKysKKyBBQ19DT05GSUdfU1VCRElSUyhkb2MgdGVz dHN1aXRlKQorIAorICMgQ2hlY2sgd2hldGhlciB0byBzdXBwb3J0IGFsdGVybmF0aXZlIHRhcmdl dCBjb25maWd1cmF0aW9ucworQEAgLTgyOCw2ICs4NzMsOCBAQCBpZiB0ZXN0ICIke2hhdmVfbGli cHl0aG9ufSIgIT0gbm87IHRoZW4KKyAgIENPTkZJR19PQlM9IiRDT05GSUdfT0JTIFwkKFNVQkRJ Ul9QWVRIT05fT0JTKSIKKyAgIENPTkZJR19ERVBTPSIkQ09ORklHX0RFUFMgXCQoU1VCRElSX1BZ VEhPTl9ERVBTKSIKKyAgIENPTkZJR19TUkNTPSIkQ09ORklHX1NSQ1MgXCQoU1VCRElSX1BZVEhP Tl9TUkNTKSIKKysgIENPTkZJR19JTlNUQUxMPSIkQ09ORklHX0lOU1RBTEwgaW5zdGFsbC1weXRo b24iCisrICBDT05GSUdfVU5JTlNUQUxMPSIkQ09ORklHX1VOSU5TVEFMTCB1bmluc3RhbGwtcHl0 aG9uIgorICAgRU5BQkxFX0NGTEFHUz0iJEVOQUJMRV9DRkxBR1MgXCQoU1VCRElSX1BZVEhPTl9D RkxBR1MpIgorIAorICAgIyBGbGFncyBuZWVkZWQgdG8gY29tcGlsZSBQeXRob24gY29kZSAodGFr ZW4gZnJvbSBweXRob24tY29uZmlnIC0tY2ZsYWdzKS4KK2RpZmYgLS1naXQgYS9nZGIvZG9jL0No YW5nZUxvZyBiL2dkYi9kb2MvQ2hhbmdlTG9nCitpbmRleCAwNGYxNjgzLi5hMmE2ZTMwIDEwMDY0 NAorLS0tIGEvZ2RiL2RvYy9DaGFuZ2VMb2cKKysrKyBiL2dkYi9kb2MvQ2hhbmdlTG9nCitAQCAt MSw1ICsxLDkgQEAKKyAyMDEwLTA3LTEzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+ CisgCisrCSogZ2RiLnRleGluZm8gKEluZGV4IEZpbGVzKTogTmV3IG5vZGUuCisrCisrMjAxMC0w Ny0xMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgorKworIAkqIGdkYi50ZXhpbmZv IChHREIvTUkgVmFyaWFibGUgT2JqZWN0cyk6IFJlbW92ZSBleHRyYSAnZm9yJy4KKyAKKyAyMDEw LTA3LTAxICBQZWRybyBBbHZlcyAgPHBlZHJvQGNvZGVzb3VyY2VyeS5jb20+CitkaWZmIC0tZ2l0 IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KK2luZGV4IDEyOTcx NzUuLmMwMzBiNjUgMTAwNjQ0CistLS0gYS9nZGIvZG9jL2dkYi50ZXhpbmZvCisrKysgYi9nZGIv ZG9jL2dkYi50ZXhpbmZvCitAQCAtMTE2Miw2ICsxMTYyLDE2IEBAIGZvciByZW1vdGUgZGVidWdn aW5nLgorIFJ1biB1c2luZyBAdmFye2RldmljZX0gZm9yIHlvdXIgcHJvZ3JhbSdzIHN0YW5kYXJk IGlucHV0IGFuZCBvdXRwdXQuCisgQGMgRklYTUU6IGtpbmdkb24gdGhpbmtzIHRoZXJlIGlzIG1v cmUgdG8gLXR0eS4gIEludmVzdGlnYXRlLgorIAorK0BpdGVtIC1QCisrQGNpbmRleCBAY29kZXst UH0KKytAaXRlbXggLS1weXRob24KKytAY2luZGV4IEBjb2Rley0tcHl0aG9ufQorK0NoYW5nZSBp bnRlcnByZXRhdGlvbiBvZiBjb21tYW5kIGxpbmUgc28gdGhhdCB0aGUgYXJndW1lbnQgaW1tZWRp YXRlbHkKKytmb2xsb3dpbmcgdGhpcyBzd2l0Y2ggaXMgdGFrZW4gdG8gYmUgdGhlIG5hbWUgb2Yg YSBQeXRob24gc2NyaXB0IGZpbGUuCisrVGhpcyBvcHRpb24gc3RvcHMgb3B0aW9uIHByb2Nlc3Np bmc7IHN1YnNlcXVlbnQgb3B0aW9ucyBhcmUgcGFzc2VkIHRvCisrUHl0aG9uIGFzIEBjb2Rle3N5 cy5hcmd2fS4gIFRoaXMgb3B0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIGlmIFB5dGhvbgorK3Njcmlw dGluZyBzdXBwb3J0IHdhcyBlbmFibGVkIHdoZW4gQHZhbHVle0dEQk59IHdhcyBjb25maWd1cmVk LgorKworIEBjIHJlc29sdmUgdGhlIHNpdHVhdGlvbiBvZiB0aGVzZSBldmVudHVhbGx5CisgQGl0 ZW0gLXR1aQorIEBjaW5kZXggQGNvZGV7LS10dWl9CitAQCAtMTQyODIsNiArMTQyOTIsNyBAQCBw cm9ncmFtLiAgVG8gZGVidWcgYSBjb3JlIGR1bXAgb2YgYSBwcmV2aW91cyBydW4sIHlvdSBtdXN0 IGFsc28gdGVsbAorIEBtZW51CisgKiBGaWxlczo6ICAgICAgICAgICAgICAgICAgICAgICBDb21t YW5kcyB0byBzcGVjaWZ5IGZpbGVzCisgKiBTZXBhcmF0ZSBEZWJ1ZyBGaWxlczo6ICAgICAgICBE ZWJ1Z2dpbmcgaW5mb3JtYXRpb24gaW4gc2VwYXJhdGUgZmlsZXMKKysqIEluZGV4IEZpbGVzOjog ICAgICAgICAgICAgICAgIEluZGV4IGZpbGVzIHNwZWVkIHVwIEdEQgorICogU3ltYm9sIEVycm9y czo6ICAgICAgICAgICAgICAgRXJyb3JzIHJlYWRpbmcgc3ltYm9sIGZpbGVzCisgKiBEYXRhIEZp bGVzOjogICAgICAgICAgICAgICAgICBHREIgZGF0YSBmaWxlcworIEBlbmQgbWVudQorQEAgLTE1 MTcxLDYgKzE1MTgyLDQ2IEBAIGdudV9kZWJ1Z2xpbmtfY3JjMzIgKHVuc2lnbmVkIGxvbmcgY3Jj LAorIFRoaXMgY29tcHV0YXRpb24gZG9lcyBub3QgYXBwbHkgdG8gdGhlIGBgYnVpbGQgSUQnJyBt ZXRob2QuCisgCisgCisrQG5vZGUgSW5kZXggRmlsZXMKKytAc2VjdGlvbiBJbmRleCBGaWxlcyBT cGVlZCBVcCBAdmFsdWV7R0RCTn0KKytAY2luZGV4IGluZGV4IGZpbGVzCisrQGNpbmRleCBAc2Ft cHsuZ2RiX2luZGV4fSBzZWN0aW9uCisrCisrV2hlbiBAdmFsdWV7R0RCTn0gZmluZHMgYSBzeW1i b2wgZmlsZSwgaXQgc2NhbnMgdGhlIHN5bWJvbHMgaW4gdGhlCisrZmlsZSBpbiBvcmRlciB0byBj b25zdHJ1Y3QgYW4gaW50ZXJuYWwgc3ltYm9sIHRhYmxlLiAgVGhpcyBsZXRzIG1vc3QKKytAdmFs dWV7R0RCTn0gb3BlcmF0aW9ucyB3b3JrIHF1aWNrbHktLS1hdCB0aGUgY29zdCBvZiBhIGRlbGF5 IGVhcmx5Cisrb24uICBGb3IgbGFyZ2UgcHJvZ3JhbXMsIHRoaXMgZGVsYXkgY2FuIGJlIHF1aXRl IGxlbmd0aHksIHNvCisrQHZhbHVle0dEQk59IHByb3ZpZGVzIGEgd2F5IHRvIGJ1aWxkIGFuIGlu ZGV4LCB3aGljaCBzcGVlZHMgdXAKKytzdGFydHVwLgorKworK1RoZSBpbmRleCBpcyBzdG9yZWQg YXMgYSBzZWN0aW9uIGluIHRoZSBzeW1ib2wgZmlsZS4gIEB2YWx1ZXtHREJOfSBjYW4KKyt3cml0 ZSB0aGUgaW5kZXggdG8gYSBmaWxlLCB0aGVuIHlvdSBjYW4gcHV0IGl0IGludG8gdGhlIHN5bWJv bCBmaWxlCisrdXNpbmcgQGNvbW1hbmR7b2JqY29weX0uCisrCisrVG8gY3JlYXRlIGFuIGluZGV4 IGZpbGUsIHVzZSB0aGUgQGNvZGV7c2F2ZSBnZGItaW5kZXh9IGNvbW1hbmQ6CisrCisrQHRhYmxl IEBjb2RlCisrQGl0ZW0gc2F2ZSBnZGItaW5kZXggQHZhcntkaXJlY3Rvcnl9CisrQGtpbmRleCBz YXZlIGdkYi1pbmRleAorK0NyZWF0ZSBhbiBpbmRleCBmaWxlIGZvciBlYWNoIHN5bWJvbCBmaWxl IGN1cnJlbnRseSBrbm93biBieQorK0B2YWx1ZXtHREJOfS4gIEVhY2ggZmlsZSBpcyBuYW1lZCBh ZnRlciBpdHMgY29ycmVzcG9uZGluZyBzeW1ib2wgZmlsZSwKKyt3aXRoIEBzYW1wey5nZGItaW5k ZXh9IGFwcGVuZGVkLCBhbmQgaXMgd3JpdHRlbiBpbnRvIHRoZSBnaXZlbgorK0B2YXJ7ZGlyZWN0 b3J5fS4KKytAZW5kIHRhYmxlCisrCisrT25jZSB5b3UgaGF2ZSBjcmVhdGVkIGFuIGluZGV4IGZp bGUgeW91IGNhbiBtZXJnZSBpdCBpbnRvIHlvdXIgc3ltYm9sCisrZmlsZSwgaGVyZSBuYW1lZCBA ZmlsZXtzeW1maWxlfSwgdXNpbmcgQGNvbW1hbmR7b2JqY29weX06CisrCisrQHNtYWxsZXhhbXBs ZQorKyQgb2JqY29weSAtLWFkZC1zZWN0aW9uIC5nZGJfaW5kZXg9c3ltZmlsZS5nZGItaW5kZXgg XAorKyAgICAtLXNldC1zZWN0aW9uLWZsYWdzIC5nZGJfaW5kZXg9cmVhZG9ubHkgc3ltZmlsZSBz eW1maWxlCisrQGVuZCBzbWFsbGV4YW1wbGUKKysKKytUaGVyZSBhcmUgY3VycmVudGx5IHNvbWUg bGltaXRhdGlvbiBvbiBpbmRpY2VzLiAgVGhleSBvbmx5IHdvcmsgd2hlbgorK2ZvciBEV0FSRiBk ZWJ1Z2dpbmcgaW5mb3JtYXRpb24sIG5vdCBzdGFicy4gIEFuZCwgdGhleSBkbyBub3QKKytjdXJy ZW50bHkgd29yayBmb3IgcHJvZ3JhbXMgdXNpbmcgQWRhLgorKworKworIEBub2RlIFN5bWJvbCBF cnJvcnMKKyBAc2VjdGlvbiBFcnJvcnMgUmVhZGluZyBTeW1ib2wgRmlsZXMKKyAKK0BAIC0yMDMx MCw4ICsyMDM2MSw2IEBAIGNvbnRhaW5pbmcgQGNvZGV7ZW5kfS4gIEZvciBleGFtcGxlOgorIAor IEBzbWFsbGV4YW1wbGUKKyAoQHZhbHVle0dEQlB9KSBweXRob24KKy1UeXBlIHB5dGhvbiBzY3Jp cHQKKy1FbmQgd2l0aCBhIGxpbmUgc2F5aW5nIGp1c3QgImVuZCIuCisgPnByaW50IDIzCisgPmVu ZAorIDIzCitAQCAtMjAzMjQsNiArMjAzNzMsMTQgQEAgaW4gYSBQeXRob24gc2NyaXB0LiAgVGhp cyBjYW4gYmUgY29udHJvbGxlZCB1c2luZyBAY29kZXttYWludCBzZXQKKyBweXRob24gcHJpbnQt c3RhY2t9OiBpZiBAY29kZXtvbn0sIHRoZSBkZWZhdWx0LCB0aGVuIFB5dGhvbiBzdGFjaworIHBy aW50aW5nIGlzIGVuYWJsZWQ7IGlmIEBjb2Rle29mZn0sIHRoZW4gUHl0aG9uIHN0YWNrIHByaW50 aW5nIGlzCisgZGlzYWJsZWQuCisrCisrQGtpbmRleCBtYWludCBzZXQgcHl0aG9uIGF1dG8tbG9h ZAorK0BpdGVtIG1haW50IHNldCBweXRob24gYXV0by1sb2FkCisrQnkgZGVmYXVsdCwgQHZhbHVl e0dEQk59IHdpbGwgYXR0ZW1wdCB0byBhdXRvbWF0aWNhbGx5IGxvYWQgUHl0aG9uCisrY29kZSB3 aGVuIGFuIG9iamVjdCBmaWxlIGlzIG9wZW5lZC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgdXNp bmcKKytAY29kZXttYWludCBzZXQgcHl0aG9uIGF1dG8tbG9hZH06IGlmIEBjb2Rle29ufSwgdGhl IGRlZmF1bHQsIHRoZW4KKytQeXRob24gYXV0by1sb2FkaW5nIGlzIGVuYWJsZWQ7IGlmIEBjb2Rl e29mZn0sIHRoZW4gUHl0aG9uCisrYXV0by1sb2FkaW5nIGlzIGRpc2FibGVkLgorIEBlbmQgdGFi bGUKKyAKKyBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGV4ZWN1dGUgYSBQeXRob24gc2NyaXB0IGZy b20gdGhlIEB2YWx1ZXtHREJOfQorQEAgLTIwMzQ1LDYgKzIwNDAyLDE0IEBAIGFuZCB0aHVzIGlz IGFsd2F5cyBhdmFpbGFibGUuCisgQGNpbmRleCBweXRob24gYXBpCisgQGNpbmRleCBwcm9ncmFt bWluZyBpbiBweXRob24KKyAKKytZb3UgY2FuIGdldCBxdWljayBvbmxpbmUgaGVscCBmb3IgQHZh bHVle0dEQk59J3MgUHl0aG9uIEFQSSBieSBpc3N1aW5nCisrdGhlIGNvbW1hbmQgQHd7QGtiZHtw eXRob24gaGVscCAoZ2RiKX19LgorKworK0Z1bmN0aW9ucyBhbmQgbWV0aG9kcyB3aGljaCBoYXZl IHR3byBvciBtb3JlIG9wdGlvbmFsIGFyZ3VtZW50cyBhbGxvdworK3RoZW0gdG8gYmUgc3BlY2lm aWVkIHVzaW5nIGtleXdvcmQgc3ludGF4LiAgVGhpcyBhbGxvd3MgcGFzc2luZyBzb21lCisrb3B0 aW9uYWwgYXJndW1lbnRzIHdoaWxlIHNraXBwaW5nIG90aGVycy4gIEV4YW1wbGU6CisrQHd7QGNv ZGV7Z2RiLnNvbWVfZnVuY3Rpb24gKCdmb28nLCBiYXIgPSAxLCBiYXogPSAyKX19LgorKworIEBj aW5kZXggcHl0aG9uIHN0ZG91dAorIEBjaW5kZXggcHl0aG9uIHBhZ2luYXRpb24KKyBBdCBzdGFy dHVwLCBAdmFsdWV7R0RCTn0gb3ZlcnJpZGVzIFB5dGhvbidzIEBjb2Rle3N5cy5zdGRvdXR9IGFu ZAorQEAgLTIwMzU2LDcgKzIwNDIxLDcgQEAgc2l0dWF0aW9uLCBhIFB5dGhvbiBAY29kZXtLZXli b2FyZEludGVycnVwdH0gZXhjZXB0aW9uIGlzIHRocm93bi4KKyBAbWVudQorICogQmFzaWMgUHl0 aG9uOjogICAgICAgICAgICAgICAgQmFzaWMgUHl0aG9uIEZ1bmN0aW9ucy4KKyAqIEV4Y2VwdGlv biBIYW5kbGluZzo6CistKiBWYWx1ZXMgRnJvbSBJbmZlcmlvcjo6CisrKiBWYWx1ZXMgRnJvbSBJ bmZlcmlvcjo6CVB5dGhvbiByZXByZXNlbnRhdGlvbiBvZiB2YWx1ZXMuCisgKiBUeXBlcyBJbiBQ eXRob246OiAgICAgICAgICAgICBQeXRob24gcmVwcmVzZW50YXRpb24gb2YgdHlwZXMuCisgKiBQ cmV0dHkgUHJpbnRpbmcgQVBJOjogICAgICAgICBQcmV0dHktcHJpbnRpbmcgdmFsdWVzLgorICog U2VsZWN0aW5nIFByZXR0eS1QcmludGVyczo6ICAgSG93IEdEQiBjaG9vc2VzIGEgcHJldHR5LXBy aW50ZXIuCitAQCAtMjA0MTUsNiArMjA0ODAsMTIgQEAgUmV0dXJuIGEgc2VxdWVuY2UgaG9sZGlu ZyBhbGwgb2YgQHZhbHVle0dEQk59J3MgYnJlYWtwb2ludHMuCisgQHhyZWZ7QnJlYWtwb2ludHMg SW4gUHl0aG9ufSwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgQGVuZCBkZWZ1bgorIAorK0BmaW5k ZXggZ2RiLmJyZWFrcG9pbnRzCisrQGRlZnVuIGJyZWFrcG9pbnRzCisrUmV0dXJuIGEgc2VxdWVu Y2UgaG9sZGluZyBhbGwgb2YgQHZhbHVle0dEQk59J3MgYnJlYWtwb2ludHMuCisrQHhyZWZ7QnJl YWtwb2ludHMgSW4gUHl0aG9ufSwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisrQGVuZCBkZWZ1bgor KworIEBmaW5kZXggZ2RiLnBhcmFtZXRlcgorIEBkZWZ1biBwYXJhbWV0ZXIgcGFyYW1ldGVyCisg UmV0dXJuIHRoZSB2YWx1ZSBvZiBhIEB2YWx1ZXtHREJOfSBwYXJhbWV0ZXIuICBAdmFye3BhcmFt ZXRlcn0gaXMgYQorQEAgLTIwNDMxLDYgKzIwNTAyLDcgQEAgYSBQeXRob24gdmFsdWUgb2YgdGhl IGFwcHJvcHJpYXRlIHR5cGUsIGFuZCByZXR1cm5lZC4KKyBAZGVmdW4gaGlzdG9yeSBudW1iZXIK KyBSZXR1cm4gYSB2YWx1ZSBmcm9tIEB2YWx1ZXtHREJOfSdzIHZhbHVlIGhpc3RvcnkgKEBweHJl ZntWYWx1ZQorIEhpc3Rvcnl9KS4gIEB2YXJ7bnVtYmVyfSBpbmRpY2F0ZXMgd2hpY2ggaGlzdG9y eSBlbGVtZW50IHRvIHJldHVybi4KKysKKyBJZiBAdmFye251bWJlcn0gaXMgbmVnYXRpdmUsIHRo ZW4gQHZhbHVle0dEQk59IHdpbGwgdGFrZSBpdHMgYWJzb2x1dGUgdmFsdWUKKyBhbmQgY291bnQg YmFja3dhcmQgZnJvbSB0aGUgbGFzdCBlbGVtZW50IChpLmUuLCB0aGUgbW9zdCByZWNlbnQgZWxl bWVudCkgdG8KKyBmaW5kIHRoZSB2YWx1ZSB0byByZXR1cm4uICBJZiBAdmFye251bWJlcn0gaXMg emVybywgdGhlbiBAdmFsdWV7R0RCTn0gd2lsbAorQEAgLTIwNDU1LDYgKzIwNTI3LDIxIEBAIGNv bXB1dGUgdmFsdWVzLCBmb3IgZXhhbXBsZSwgaXQgaXMgdGhlIG9ubHkgd2F5IHRvIGdldCB0aGUg dmFsdWUgb2YgYQorIGNvbnZlbmllbmNlIHZhcmlhYmxlIChAcHhyZWZ7Q29udmVuaWVuY2UgVmFy c30pIGFzIGEgQGNvZGV7Z2RiLlZhbHVlfS4KKyBAZW5kIGRlZnVuCisgCisrQGZpbmRleCBnZGIu cG9zdF9ldmVudAorK0BkZWZ1biBwb3N0X2V2ZW50IGV2ZW50CisrUHV0IEB2YXJ7ZXZlbnR9LCBh IGNhbGxhYmxlIG9iamVjdCB0YWtpbmcgbm8gYXJndW1lbnRzLCBpbnRvCisrQHZhbHVle0dEQk59 J3MgaW50ZXJuYWwgZXZlbnQgcXVldWUuICBUaGlzIGNhbGxhYmxlIHdpbGwgYmUgaW52b2tlZCBh dAorK3NvbWUgbGF0ZXIgcG9pbnQsIGR1cmluZyBAdmFsdWV7R0RCTn0ncyBldmVudCBwcm9jZXNz aW5nLiAgRXZlbnRzCisrcG9zdGVkIHVzaW5nIEBjb2Rle3Bvc3RfZXZlbnR9IHdpbGwgYmUgcnVu IGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5Cisrd2VyZSBwb3N0ZWQ7IGhvd2V2ZXIsIHRoZXJl IGlzIG5vIHdheSB0byBrbm93IHdoZW4gdGhleSB3aWxsIGJlCisrcHJvY2Vzc2VkIHJlbGF0aXZl IHRvIG90aGVyIGV2ZW50cyBpbnNpZGUgQHZhbHVle0dEQk59LgorKworK0B2YWx1ZXtHREJOfSBp cyBub3QgdGhyZWFkLXNhZmUuICBJZiB5b3VyIFB5dGhvbiBwcm9ncmFtIHVzZXMgbXVsdGlwbGUK Kyt0aHJlYWRzLCB5b3UgbXVzdCBiZSBjYXJlZnVsIHRvIG9ubHkgY2FsbCBAdmFsdWV7R0RCTn0t c3BlY2lmaWMKKytmdW5jdGlvbnMgaW4gdGhlIG1haW4gQHZhbHVle0dEQk59IHRocmVhZC4gIEBj b2Rle3Bvc3RfZXZlbnR9IGVuc3VyZXMKKyt0aGlzLgorK0BlbmQgZGVmdW4KKysKKyBAZmluZGV4 IGdkYi53cml0ZQorIEBkZWZ1biB3cml0ZSBzdHJpbmcKKyBQcmludCBhIHN0cmluZyB0byBAdmFs dWV7R0RCTn0ncyBwYWdpbmF0ZWQgc3RhbmRhcmQgb3V0cHV0IHN0cmVhbS4KIGRpZmYgLS1naXQg YS9nZGIvZG9jL2dkYmludC50ZXhpbmZvIGIvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbwogaW5kZXgg NTQxODdkZC4uMzIwYjUwMSAxMDA2NDQKIC0tLSBhL2dkYi9kb2MvZ2RiaW50LnRleGluZm8KQEAg LTE3NDQsMTAgKzIyNDYsMTQxIEBAIGluZGV4IDgyNmJjNDUuLjFlN2Q4ZGMgMTAwNjQ0CiAgCiAg I2VuZGlmIC8qIGR3YXJmMmxvYy5oICovCiBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMnJlYWQuYyBi L2dkYi9kd2FyZjJyZWFkLmMKLWluZGV4IDE2MzgxZGUuLmVjMzFjZjEgMTAwNjQ0CitpbmRleCAx NjM4MWRlLi4zMWE3ZDgzIDEwMDY0NAogLS0tIGEvZ2RiL2R3YXJmMnJlYWQuYwogKysrIGIvZ2Ri L2R3YXJmMnJlYWQuYwotQEAgLTEwODMsNiArMTA4Myw5IEBAIHN0YXRpYyBpbnQgYXR0cl9mb3Jt X2lzX3NlY3Rpb25fb2Zmc2V0IChzdHJ1Y3QgYXR0cmlidXRlICopOworQEAgLTUxLDYgKzUxLDgg QEAKKyAjaW5jbHVkZSAidHlwZXByaW50LmgiCisgI2luY2x1ZGUgImp2LWxhbmcuaCIKKyAjaW5j bHVkZSAicHN5bXByaXYuaCIKKysjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgorKyNpbmNsdWRlICJn ZGJfc3RhdC5oIgorIAorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlICJnZGJfc3RyaW5n LmgiCitAQCAtMTI5LDYgKzEzMSwzMyBAQCBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbworICAg aW50IHJlYWRpbjsKKyB9OworIAorKy8qIEFsbCBvZmZzZXRzIGluIHRoZSBpbmRleCBhcmUgb2Yg dGhpcyB0eXBlLiAgSXQgbXVzdCBiZQorKyAgIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudC4gICov CisrdHlwZWRlZiB1aW50MzJfdCBvZmZzZXRfdHlwZTsKKysKKytERUZfVkVDX0kgKG9mZnNldF90 eXBlKTsKKysKKysvKiBBIGRlc2NyaXB0aW9uIG9mIHRoZSBtYXBwZWQgaW5kZXguICBUaGUgZmls ZSBmb3JtYXQgaXMgZGVzY3JpYmVkIGluCisrICAgYSBjb21tZW50IGJ5IHRoZSBjb2RlIHRoYXQg d3JpdGVzIHRoZSBpbmRleC4gICovCisrc3RydWN0IG1hcHBlZF9pbmRleAorK3sKKysgIC8qIFRo ZSB0b3RhbCBsZW5ndGggb2YgdGhlIGJ1ZmZlci4gICovCisrICBvZmZfdCB0b3RhbF9zaXplOwor KyAgLyogQSBwb2ludGVyIHRvIHRoZSBhZGRyZXNzIHRhYmxlIGRhdGEuICAqLworKyAgY29uc3Qg Z2RiX2J5dGUgKmFkZHJlc3NfdGFibGU7CisrICAvKiBTaXplIG9mIHRoZSBhZGRyZXNzIHRhYmxl IGRhdGEgaW4gYnl0ZXMuICAqLworKyAgb2Zmc2V0X3R5cGUgYWRkcmVzc190YWJsZV9zaXplOwor KyAgLyogVGhlIGhhc2ggdGFibGUuICAqLworKyAgY29uc3Qgb2Zmc2V0X3R5cGUgKmluZGV4X3Rh YmxlOworKyAgLyogU2l6ZSBpbiBzbG90cywgZWFjaCBzbG90IGlzIDIgb2Zmc2V0X3R5cGVzLiAg Ki8KKysgIG9mZnNldF90eXBlIGluZGV4X3RhYmxlX3Nsb3RzOworKyAgLyogQSBwb2ludGVyIHRv IHRoZSBjb25zdGFudCBwb29sLiAgKi8KKysgIGNvbnN0IGNoYXIgKmNvbnN0YW50X3Bvb2w7Cisr fTsKKysKKyt0eXBlZGVmIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmR3YXJmMl9wZXJfY3Vf ZGF0YV9wdHI7CisrREVGX1ZFQ19QIChkd2FyZjJfcGVyX2N1X2RhdGFfcHRyKTsKKysKKyBzdHJ1 Y3QgZHdhcmYyX3Blcl9vYmpmaWxlCisgeworICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8g aW5mbzsKK0BAIC0xNDEsNiArMTcwLDcgQEAgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZQorICAg c3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gdHlwZXM7CisgICBzdHJ1Y3QgZHdhcmYyX3NlY3Rp b25faW5mbyBmcmFtZTsKKyAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIGVoX2ZyYW1lOwor KyAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gZ2RiX2luZGV4OworIAorICAgLyogQmFjayBs aW5rLiAgKi8KKyAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOworQEAgLTE2Myw2ICsxOTMsMTIg QEAgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZQorICAgLyogQSBmbGFnIGluZGljYXRpbmcgd2V0 aGVyIHRoaXMgb2JqZmlsZSBoYXMgYSBzZWN0aW9uIGxvYWRlZCBhdCBhCisgICAgICBWTUEgb2Yg MC4gICovCisgICBpbnQgaGFzX3NlY3Rpb25fYXRfemVybzsKKysKKysgIC8qIFRydWUgaWYgd2Ug YXJlIHVzaW5nIHRoZSBtYXBwZWQgaW5kZXguICAqLworKyAgdW5zaWduZWQgY2hhciB1c2luZ19p bmRleDsKKysKKysgIC8qIFRoZSBtYXBwZWQgaW5kZXguICAqLworKyAgc3RydWN0IG1hcHBlZF9p bmRleCAqaW5kZXhfdGFibGU7CisgfTsKKyAKKyBzdGF0aWMgc3RydWN0IGR3YXJmMl9wZXJfb2Jq ZmlsZSAqZHdhcmYyX3Blcl9vYmpmaWxlOworQEAgLTE4Miw2ICsyMTgsNyBAQCBzdGF0aWMgc3Ry dWN0IGR3YXJmMl9wZXJfb2JqZmlsZSAqZHdhcmYyX3Blcl9vYmpmaWxlOworICNkZWZpbmUgVFlQ RVNfU0VDVElPTiAgICAiZGVidWdfdHlwZXMiCisgI2RlZmluZSBGUkFNRV9TRUNUSU9OICAgICJk ZWJ1Z19mcmFtZSIKKyAjZGVmaW5lIEVIX0ZSQU1FX1NFQ1RJT04gImVoX2ZyYW1lIgorKyNkZWZp bmUgR0RCX0lOREVYX1NFQ1RJT04gImdkYl9pbmRleCIKKyAKKyAvKiBsb2NhbCBkYXRhIHR5cGVz ICovCisgCitAQCAtMzA3LDYgKzM0NCwzMiBAQCBzdHJ1Y3QgZHdhcmYyX2N1CisgICB1bnNpZ25l ZCBpbnQgaGFzX25hbWVzcGFjZV9pbmZvIDogMTsKKyB9OworIAorKy8qIFdoZW4gdXNpbmcgdGhl IGluZGV4IChhbmQgdGh1cyBub3QgdXNpbmcgcHN5bXRhYnMpLCBlYWNoIENVIGhhcyBhbgorKyAg IG9iamVjdCBvZiB0aGlzIHR5cGUuICBUaGlzIGlzIHVzZWQgdG8gaG9sZCBpbmZvcm1hdGlvbiBu ZWVkZWQgYnkKKysgICB0aGUgdmFyaW91cyAicXVpY2siIG1ldGhvZHMuICAqLworK3N0cnVjdCBk d2FyZjJfcGVyX2N1X3F1aWNrX2RhdGEKKyt7CisrICAvKiBUaGUgbGluZSB0YWJsZS4gIFRoaXMg Y2FuIGJlIE5VTEwgaWYgdGhlcmUgd2FzIG5vIGxpbmUgdGFibGUuICAqLworKyAgc3RydWN0IGxp bmVfaGVhZGVyICpsaW5lczsKKysKKysgIC8qIFRoZSBmaWxlIG5hbWVzIGZyb20gdGhlIGxpbmUg dGFibGUuICAqLworKyAgY29uc3QgY2hhciAqKmZpbGVfbmFtZXM7CisrICAvKiBUaGUgZmlsZSBu YW1lcyBmcm9tIHRoZSBsaW5lIHRhYmxlIGFmdGVyIGJlaW5nIHJ1biB0aHJvdWdoCisrICAgICBn ZGJfcmVhbHBhdGguICAqLworKyAgY29uc3QgY2hhciAqKmZ1bGxfbmFtZXM7CisrCisrICAvKiBU aGUgY29ycmVzcG9uZGluZyBzeW1ib2wgdGFibGUuICBUaGlzIGlzIE5VTEwgaWYgc3ltYm9scyBm b3IgdGhpcworKyAgICAgQ1UgaGF2ZSBub3QgeWV0IGJlZW4gcmVhZC4gICovCisrICBzdHJ1Y3Qg c3ltdGFiICpzeW10YWI7CisrCisrICAvKiBBIHRlbXBvcmFyeSBtYXJrIGJpdCB1c2VkIHdoZW4g aXRlcmF0aW5nIG92ZXIgYWxsIENVcyBpbgorKyAgICAgZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmcu ICAqLworKyAgdW5zaWduZWQgaW50IG1hcmsgOiAxOworKworKyAgLyogVHJ1ZSBpZiB3ZSd2ZSB0 cmllZCB0byByZWFkIHRoZSBsaW5lIHRhYmxlLiAgKi8KKysgIHVuc2lnbmVkIGludCByZWFkX2xp bmVzIDogMTsKKyt9OworKworIC8qIFBlcnNpc3RlbnQgZGF0YSBoZWxkIGZvciBhIGNvbXBpbGF0 aW9uIHVuaXQsIGV2ZW4gd2hlbiBub3QKKyAgICBwcm9jZXNzaW5nIGl0LiAgV2UgcHV0IGEgcG9p bnRlciB0byB0aGlzIHN0cnVjdHVyZSBpbiB0aGUKKyAgICByZWFkX3N5bXRhYl9wcml2YXRlIGZp ZWxkIG9mIHRoZSBwc3ltdGFiLiAgSWYgd2UgZW5jb3VudGVyCitAQCAtMzQ3LDEwICs0MTAsMjEg QEAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YQorICAgICAgaXQuICAqLworICAgaHRhYl90IHR5 cGVfaGFzaDsKKyAKKy0gIC8qIFRoZSBwYXJ0aWFsIHN5bWJvbCB0YWJsZSBhc3NvY2lhdGVkIHdp dGggdGhpcyBjb21waWxhdGlvbiB1bml0LAorLSAgICAgb3IgTlVMTCBmb3IgcGFydGlhbCB1bml0 cyAod2hpY2ggZG8gbm90IGhhdmUgYW4gYXNzb2NpYXRlZAorLSAgICAgc3ltdGFiKS4gICovCist ICBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzeW10YWI7CisrICAvKiBUaGUgY29ycmVzcG9uZGlu ZyBvYmpmaWxlLiAgKi8KKysgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOworKworKyAgLyogV2hl biB1c2luZyBwYXJ0aWFsIHN5bWJvbCB0YWJsZXMsIHRoZSAncHN5bXRhYicgZmllbGQgaXMgYWN0 aXZlLgorKyAgICAgT3RoZXJ3aXNlIHRoZSAncXVpY2snIGZpZWxkIGlzIGFjdGl2ZS4gICovCisr ICB1bmlvbgorKyAgeworKyAgICAvKiBUaGUgcGFydGlhbCBzeW1ib2wgdGFibGUgYXNzb2NpYXRl ZCB3aXRoIHRoaXMgY29tcGlsYXRpb24gdW5pdCwKKysgICAgICAgb3IgTlVMTCBmb3IgcGFydGlh bCB1bml0cyAod2hpY2ggZG8gbm90IGhhdmUgYW4gYXNzb2NpYXRlZAorKyAgICAgICBzeW10YWIp LiAgKi8KKysgICAgc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3ltdGFiOworKworKyAgICAvKiBE YXRhIG5lZWRlZCBieSB0aGUgInF1aWNrIiBmdW5jdGlvbnMuICAqLworKyAgICBzdHJ1Y3QgZHdh cmYyX3Blcl9jdV9xdWlja19kYXRhICpxdWljazsKKysgIH0gdjsKKyB9OworIAorIC8qIEVudHJ5 IGluIHRoZSBzaWduYXR1cmVkX3R5cGVzIGhhc2ggdGFibGUuICAqLworQEAgLTEwODMsNiArMTE1 Nyw5IEBAIHN0YXRpYyBpbnQgYXR0cl9mb3JtX2lzX3NlY3Rpb25fb2Zmc2V0IChzdHJ1Y3QgYXR0 cmlidXRlICopOwogIAogIHN0YXRpYyBpbnQgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChzdHJ1Y3Qg YXR0cmlidXRlICopOwogIApAQCAtMTc1Nyw3ICsyMzkwLDcgQEAgaW5kZXggMTYzODFkZS4uZWMz MWNmMSAxMDA2NDQKICBzdGF0aWMgdm9pZCBkd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQgKHN0 cnVjdCBhdHRyaWJ1dGUgKmF0dHIsCiAgCQkJCQkgc3RydWN0IHN5bWJvbCAqc3ltLAogIAkJCQkJ IHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKLUBAIC0xMTEzLDYgKzExMTYsOSBAQCBzdGF0aWMgdm9p ZCBhZ2VfY2FjaGVkX2NvbXBfdW5pdHMgKHZvaWQpOworQEAgLTExMTMsNiArMTE5MCw5IEBAIHN0 YXRpYyB2b2lkIGFnZV9jYWNoZWRfY29tcF91bml0cyAodm9pZCk7CiAgCiAgc3RhdGljIHZvaWQg ZnJlZV9vbmVfY2FjaGVkX2NvbXBfdW5pdCAodm9pZCAqKTsKICAKQEAgLTE3NjcsMzk3MSArMjQw MCw3NjQ0IEBAIGluZGV4IDE2MzgxZGUuLmVjMzFjZjEgMTAwNjQ0CiAgc3RhdGljIHN0cnVjdCB0 eXBlICpzZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3QgdHlwZSAqLAogIAkJ CQkgIHN0cnVjdCBkd2FyZjJfY3UgKik7CiAgCi1AQCAtMTEzMiw2ICsxMTM4LDkgQEAgc3RhdGlj IHZvaWQgZHdhcmYyX2NsZWFyX21hcmtzIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICopOwor QEAgLTExMzIsNiArMTIxMiw1NiBAQCBzdGF0aWMgdm9pZCBkd2FyZjJfY2xlYXJfbWFya3MgKHN0 cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKik7CiAgCiAgc3RhdGljIHN0cnVjdCB0eXBlICpnZXRf ZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7CiAg CiArc3RhdGljIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqZHdhcmYyX2F0dHJfdG9fbG9j ZXhwcl9iYXRvbgogKyAgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KTsKICsKLSAvKiBUcnkgdG8gbG9jYXRlIHRoZSBzZWN0aW9ucyB3ZSBuZWVkIGZvciBEV0FS RiAyIGRlYnVnZ2luZwotICAgIGluZm9ybWF0aW9uIGFuZCByZXR1cm4gdHJ1ZSBpZiB3ZSBoYXZl IGVub3VnaCB0byBkbyBzb21ldGhpbmcuICAqLwotIAotQEAgLTU1MzEsNiArNTU0MCwyOSBAQCBw cm9jZXNzX2VudW1lcmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3 YXJmMl9jdSAqY3UpCi0gICBuZXdfc3ltYm9sIChkaWUsIHRoaXNfdHlwZSwgY3UpOwotIH0KLSAK LSsvKiBDcmVhdGUgYSBuZXcgYXJyYXkgZGltZW5zaW9uIHJlZmVyZW5jaW5nIGl0cyB0YXJnZXQg dHlwZSBUWVBFLgorK3N0YXRpYyB2b2lkIGR3YXJmMl9yZWxlYXNlX3F1ZXVlICh2b2lkICpkdW1t eSk7CiArCi0rICAgTXVsdGlkaW1lbnNpb25hbCBhcnJheXMgYXJlIGludGVybmFsbHkgcmVwcmVz ZW50ZWQgYXMgYSBzdGFjayBvZgotKyAgIHNpbmdsZWRpbWVuc2lvbmFsIGFycmF5cyBiZWluZyBy ZWZlcmVuY2VkIGJ5IHRoZWlyIFRZUEVfVEFSR0VUX1RZUEUuICAqLworK3N0YXRpYyB2b2lkIHF1 ZXVlX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1LAorKwkJCSAg ICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwogKwotK3N0YXRpYyBzdHJ1Y3QgdHlwZSAqCi0r Y3JlYXRlX3NpbmdsZV9hcnJheV9kaW1lbnNpb24gKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3Qg dHlwZSAqcmFuZ2VfdHlwZSwKLSsJCQkgICAgICAgc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQotK3sKLSsgIHR5cGUgPSBjcmVhdGVfYXJyYXlfdHlwZSAoTlVMTCwg dHlwZSwgcmFuZ2VfdHlwZSk7Cisrc3RhdGljIHZvaWQgcHJvY2Vzc19xdWV1ZSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUpOwogKwotKyAgLyogVGhlc2UgZ2VuZXJpYyB0eXBlIGF0dHJpYnV0ZXMg bmVlZCB0byBiZSBmZXRjaGVkIGJ5Ci0rICAgICBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgPG11 bHRpX2Y3N19zdWJzY3JpcHQ+J3MgY2FsbCBvZgotKyAgICAgdmFsdWVfc3Vic2NyaXB0ZWRfcnZh bHVlIG9ubHkgZm9yIHRoZSBpbm5lcm1vc3QgYXJyYXkgdHlwZS4gICovCi0rICBmZXRjaF9kaWVf dHlwZV9hdHRycyAoZGllLCB0eXBlLCBjdSk7Cisrc3RhdGljIHZvaWQgZmluZF9maWxlX2FuZF9k aXJlY3RvcnkgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAorKwkJCQkgICAgIHN0cnVjdCBkd2FyZjJf Y3UgKmN1LAorKwkJCQkgICAgIGNoYXIgKipuYW1lLCBjaGFyICoqY29tcF9kaXIpOwogKwotKyAg LyogVGhlc2UgZ2VuZXJpYyB0eXBlIGF0dHJpYnV0ZXMgYXJlIGNoZWNrZWQgZm9yIGFsbG9jYXRl ZC9hc3NvY2lhdGVkCi0rICAgICB2YWxpZGl0eSB3aGlsZSBhY2Nlc3NpbmcgRklFTERfTE9DX0tJ TkRfRFdBUkZfQkxPQ0suICAqLwotKyAgZmV0Y2hfZGllX3R5cGVfYXR0cnMgKGRpZSwgcmFuZ2Vf dHlwZSwgY3UpOworK3N0YXRpYyBjaGFyICpmaWxlX2Z1bGxfbmFtZSAoaW50IGZpbGUsIHN0cnVj dCBsaW5lX2hlYWRlciAqbGgsCisrCQkJICAgICBjb25zdCBjaGFyICpjb21wX2Rpcik7CiArCi0r ICByZXR1cm4gdHlwZTsKKytzdGF0aWMgZ2RiX2J5dGUgKnBhcnRpYWxfcmVhZF9jb21wX3VuaXRf aGVhZCAoc3RydWN0IGNvbXBfdW5pdF9oZWFkICpoZWFkZXIsCisrCQkJCQkgICAgICBnZGJfYnl0 ZSAqaW5mb19wdHIsCisrCQkJCQkgICAgICBnZGJfYnl0ZSAqYnVmZmVyLAorKwkJCQkJICAgICAg dW5zaWduZWQgaW50IGJ1ZmZlcl9zaXplLAorKwkJCQkJICAgICAgYmZkICphYmZkKTsKKysKKytz dGF0aWMgdm9pZCBpbml0X2N1X2RpZV9yZWFkZXIgKHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpy ZWFkZXIsCisrCQkJCXN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKKysKKysjaWYgV09SRFNfQklHRU5E SUFOCisrCisrLyogQ29udmVydCBWQUxVRSBiZXR3ZWVuIGJpZy0gYW5kIGxpdHRsZS1lbmRpYW4u ICAqLworK3N0YXRpYyBvZmZzZXRfdHlwZQorK2J5dGVfc3dhcCAob2Zmc2V0X3R5cGUgdmFsdWUp CisreworKyAgb2Zmc2V0X3R5cGUgcmVzdWx0OworKworKyAgcmVzdWx0ID0gKHZhbHVlICYgMHhm ZikgPDwgMjQ7CisrICByZXN1bHQgfD0gKHZhbHVlICYgMHhmZjAwKSA8PCA4OworKyAgcmVzdWx0 IHw9ICh2YWx1ZSAmIDB4ZmYwMDAwKSA+PiA4OworKyAgcmVzdWx0IHw9ICh2YWx1ZSAmIDB4ZmYw MDAwMDApID4+IDI0OworKyAgcmV0dXJuIHJlc3VsdDsKICt9CiArCi0gLyogRXh0cmFjdCBhbGwg aW5mb3JtYXRpb24gZnJvbSBhIERXX1RBR19hcnJheV90eXBlIERJRSBhbmQgcHV0IGl0IGluCi0g ICAgdGhlIERJRSdzIHR5cGUgZmllbGQuICBGb3Igbm93LCB0aGlzIG9ubHkgaGFuZGxlcyBvbmUg ZGltZW5zaW9uYWwKLSAgICBhcnJheXMuICAqLwotQEAgLTU1NDQsNyArNTU3Niw3IEBAIHJlYWRf YXJyYXlfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQot ICAgc3RydWN0IHR5cGUgKmVsZW1lbnRfdHlwZSwgKnJhbmdlX3R5cGUsICppbmRleF90eXBlOwot ICAgc3RydWN0IHR5cGUgKipyYW5nZV90eXBlcyA9IE5VTEw7Ci0gICBzdHJ1Y3QgYXR0cmlidXRl ICphdHRyOwotLSAgaW50IG5kaW0gPSAwOwotKyAgaW50IG5kaW0gPSAwLCBpOwotICAgc3RydWN0 IGNsZWFudXAgKmJhY2tfdG87Ci0gICBjaGFyICpuYW1lOworKyNkZWZpbmUgTUFZQkVfU1dBUChW KSAgYnl0ZV9zd2FwIChWKQorKworKyNlbHNlCisrI2RlZmluZSBNQVlCRV9TV0FQKFYpIChWKQor KyNlbmRpZiAvKiBXT1JEU19CSUdFTkRJQU4gKi8KKysKKysvKiBUaGUgc3VmZml4IGZvciBhbiBp bmRleCBmaWxlLiAgKi8KKysjZGVmaW5lIElOREVYX1NVRkZJWCAiLmdkYi1pbmRleCIKKysKKyAv KiBUcnkgdG8gbG9jYXRlIHRoZSBzZWN0aW9ucyB3ZSBuZWVkIGZvciBEV0FSRiAyIGRlYnVnZ2lu ZworICAgIGluZm9ybWF0aW9uIGFuZCByZXR1cm4gdHJ1ZSBpZiB3ZSBoYXZlIGVub3VnaCB0byBk byBzb21ldGhpbmcuICAqLwogIAotQEAgLTU1OTcsMTcgKzU2MjksMTEgQEAgcmVhZF9hcnJheV90 eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICB0eXBl ID0gZWxlbWVudF90eXBlOworQEAgLTEyMzAsNiArMTM2MCwxMSBAQCBkd2FyZjJfbG9jYXRlX3Nl Y3Rpb25zIChiZmQgKmFiZmQsIGFzZWN0aW9uICpzZWN0cCwgdm9pZCAqaWdub3JlX3B0cikKKyAg ICAgICBkd2FyZjJfcGVyX29iamZpbGUtPnR5cGVzLmFzZWN0aW9uID0gc2VjdHA7CisgICAgICAg ZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBlcy5zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNl Y3RwKTsKKyAgICAgfQorKyAgZWxzZSBpZiAoc2VjdGlvbl9pc19wIChzZWN0cC0+bmFtZSwgR0RC X0lOREVYX1NFQ1RJT04pKQorKyAgICB7CisrICAgICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5nZGJf aW5kZXguYXNlY3Rpb24gPSBzZWN0cDsKKysgICAgICBkd2FyZjJfcGVyX29iamZpbGUtPmdkYl9p bmRleC5zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKKysgICAgfQogIAotICAg aWYgKHJlYWRfYXJyYXlfb3JkZXIgKGRpZSwgY3UpID09IERXX09SRF9jb2xfbWFqb3IpCi0tICAg IHsKLS0gICAgICBpbnQgaSA9IDA7Ci0tCi0tICAgICAgd2hpbGUgKGkgPCBuZGltKQotLQl0eXBl ID0gY3JlYXRlX2FycmF5X3R5cGUgKE5VTEwsIHR5cGUsIHJhbmdlX3R5cGVzW2krK10pOwotLSAg ICB9Ci0tICBlbHNlCi0tICAgIHsKLS0gICAgICB3aGlsZSAobmRpbS0tID4gMCkKLS0JdHlwZSA9 IGNyZWF0ZV9hcnJheV90eXBlIChOVUxMLCB0eXBlLCByYW5nZV90eXBlc1tuZGltXSk7Ci0tICAg IH0KLSsgICAgZm9yIChpID0gMDsgaSA8IG5kaW07IGkrKykKLSsgICAgICB0eXBlID0gY3JlYXRl X3NpbmdsZV9hcnJheV9kaW1lbnNpb24gKHR5cGUsIHJhbmdlX3R5cGVzW2ldLCBkaWUsIGN1KTsK LSsgIGVsc2UgLyogKHJlYWRfYXJyYXlfb3JkZXIgKGRpZSwgY3UpID09IERXX09SRF9yb3dfbWFq b3IpICovCi0rICAgIGZvciAoaSA9IG5kaW0gLSAxOyBpID49IDA7IGktLSkKLSsgICAgICB0eXBl ID0gY3JlYXRlX3NpbmdsZV9hcnJheV9kaW1lbnNpb24gKHR5cGUsIHJhbmdlX3R5cGVzW2ldLCBk aWUsIGN1KTsKKyAgIGlmICgoYmZkX2dldF9zZWN0aW9uX2ZsYWdzIChhYmZkLCBzZWN0cCkgJiBT RUNfTE9BRCkKKyAgICAgICAmJiBiZmRfc2VjdGlvbl92bWEgKGFiZmQsIHNlY3RwKSA9PSAwKQor QEAgLTEzNDksOTEgKzE0ODQsOTQ0IEBAIGR3YXJmMl9yZWFkX3NlY3Rpb24gKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLCBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5mbykKKyAgICAgICAg IH0KKyAgICAgfQogIAotICAgLyogVW5kZXJzdGFuZCBEd2FyZjIgc3VwcG9ydCBmb3IgdmVjdG9y IHR5cGVzIChsaWtlIHRoZXkgb2NjdXIgb24KLSAgICAgIHRoZSBQb3dlclBDIHcvIEFsdGlWZWMp LiAgR2NjIGp1c3QgYWRkcyBhbm90aGVyIGF0dHJpYnV0ZSB0byB0aGUKLUBAIC02MDYxLDI5ICs2 MDg3LDExNCBAQCByZWFkX3RhZ19zdHJpbmdfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0 cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfb2Jq ZmlsZV9hcmNoIChvYmpmaWxlKTsKLSAgIHN0cnVjdCB0eXBlICp0eXBlLCAqcmFuZ2VfdHlwZSwg KmluZGV4X3R5cGUsICpjaGFyX3R5cGU7Ci0gICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwotLSAg dW5zaWduZWQgaW50IGxlbmd0aDsKLSsgIGludCBsZW5ndGg7CistI2lmZGVmIEhBVkVfTU1BUAor LSAgaWYgKHBhZ2VzaXplID09IDApCistICAgIHBhZ2VzaXplID0gZ2V0cGFnZXNpemUgKCk7Cisr I2lmZGVmIEhBVkVfTU1BUAorKyAgaWYgKHBhZ2VzaXplID09IDApCisrICAgIHBhZ2VzaXplID0g Z2V0cGFnZXNpemUgKCk7CiArCi0rICBpbmRleF90eXBlID0gb2JqZmlsZV90eXBlIChvYmpmaWxl KS0+YnVpbHRpbl9pbnQ7Ci0rICAvKiBSQU5HRV9UWVBFIGlzIGFsbG9jYXRlZCBmcm9tIE9CSkZJ TEUsIG5vdCBhcyBhIHBlcm1hbmVudCB0eXBlLiAgKi8KLSsgIHJhbmdlX3R5cGUgPSBhbGxvY190 eXBlIChvYmpmaWxlKTsKLSsgIC8qIExPV19CT1VORCBhbmQgSElHSF9CT1VORCBhcmUgc2V0IGZv ciByZWFsIGJlbG93LiAgKi8KLSsgIHJhbmdlX3R5cGUgPSBjcmVhdGVfcmFuZ2VfdHlwZSAocmFu Z2VfdHlwZSwgaW5kZXhfdHlwZSwgMCwgLTEpOworKyAgLyogT25seSB0cnkgdG8gbW1hcCBzZWN0 aW9ucyB3aGljaCBhcmUgbGFyZ2UgZW5vdWdoOiB3ZSBkb24ndCB3YW50IHRvCisrICAgICB3YXN0 ZSBzcGFjZSBkdWUgdG8gZnJhZ21lbnRhdGlvbi4gIEFsc28sIG9ubHkgdHJ5IG1tYXAgZm9yIHNl Y3Rpb25zCisrICAgICB3aXRob3V0IHJlbG9jYXRpb25zLiAgKi8KICsKLSsgIC8qIEMvQysrIHNo b3VsZCBwcm9iYWJseSBoYXZlIHRoZSBsb3cgYm91bmQgMCBidXQgQy9DKysgZG9lcyBub3QgdXNl Ci0rICAgICBEV19UQUdfc3RyaW5nX3R5cGUuICAqLwotKyAgVFlQRV9MT1dfQk9VTkQgKHJhbmdl X3R5cGUpID0gMTsKLSAKLSAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9zdHJpbmdf bGVuZ3RoLCBjdSk7Ci0tICBpZiAoYXR0cikKLS0gICAgewotLSAgICAgIGxlbmd0aCA9IERXX1VO U05EIChhdHRyKTsKLSsgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCisr ICBpZiAoaW5mby0+c2l6ZSA+IDQgKiBwYWdlc2l6ZSAmJiAoc2VjdHAtPmZsYWdzICYgU0VDX1JF TE9DKSA9PSAwKQogKyAgICB7Ci0rICAgICAgLyogU2VjdXJpdHkgY2hlY2sgZm9yIGEgc2l6ZSBv dmVyZmxvdy4gICovCi0rICAgICAgaWYgKERXX0JMT0NLIChhdHRyKS0+c2l6ZSArIDIgPCBEV19C TE9DSyAoYXR0ciktPnNpemUpCi0rCVRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkgPSAxOwot KyAgICAgIC8qIEV4dGVuZCB0aGUgRFdBUkYgYmxvY2sgYnkgYSBuZXcgRFdfT1BfZGVyZWYvRFdf T1BfZGVyZWZfc2l6ZQotKwkgaW5zdHJ1Y3Rpb24gYXMgRFdfQVRfc3RyaW5nX2xlbmd0aCBzcGVj aWZpZXMgdGhlIGxlbmd0aCBsb2NhdGlvbiwgbm90Ci0rCSBpdHMgdmFsdWUuICAqLwotKyAgICAg IGVsc2UKKysgICAgICBvZmZfdCBwZ19vZmZzZXQgPSBzZWN0cC0+ZmlsZXBvcyAmIH4ocGFnZXNp emUgLSAxKTsKKysgICAgICBzaXplX3QgbWFwX2xlbmd0aCA9IGluZm8tPnNpemUgKyBzZWN0cC0+ ZmlsZXBvcyAtIHBnX29mZnNldDsKKysgICAgICBjYWRkcl90IHJldGJ1ZiA9IGJmZF9tbWFwIChh YmZkLCAwLCBtYXBfbGVuZ3RoLCBQUk9UX1JFQUQsCisrCQkJCSBNQVBfUFJJVkFURSwgcGdfb2Zm c2V0KTsKKysKKysgICAgICBpZiAocmV0YnVmICE9IE1BUF9GQUlMRUQpCiArCXsKLSsJICBzdHJ1 Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmxlbmd0aF9iYXRvbiA9IE5VTEw7Ci0rCSAgc3RydWN0 IGR3YXJmX2Jsb2NrICpibGsgPSBEV19CTE9DSyAoYXR0cik7CisrCSAgaW5mby0+d2FzX21tYXBw ZWQgPSAxOworKwkgIGluZm8tPmJ1ZmZlciA9IHJldGJ1ZiArIChzZWN0cC0+ZmlsZXBvcyAmIChw YWdlc2l6ZSAtIDEpKSA7CisrI2lmIEhBVkVfUE9TSVhfTUFEVklTRQorKwkgIHBvc2l4X21hZHZp c2UgKHJldGJ1ZiwgbWFwX2xlbmd0aCwgUE9TSVhfTUFEVl9XSUxMTkVFRCk7CisrI2VuZGlmCisr CSAgcmV0dXJuOworKwl9CisrICAgIH0KKysjZW5kaWYKICsKLSsJICAvKiBUdXJuIGFueSBzaW5n bGUgRFdfT1BfcmVnKiBpbnRvIERXX09QX2JyZWcqKDApIGJ1dCBjbGVhcmluZwotKwkgICAgIERX X09QX2RlcmVmKiBpbiBzdWNoIGNhc2UuICAqLworKyAgLyogSWYgd2UgZ2V0IGhlcmUsIHdlIGFy ZSBhIG5vcm1hbCwgbm90LWNvbXByZXNzZWQgc2VjdGlvbi4gICovCisrICBpbmZvLT5idWZmZXIg PSBidWYKKysgICAgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBp bmZvLT5zaXplKTsKICsKLSsJICBpZiAoYmxrLT5zaXplID09IDEgJiYgYmxrLT5kYXRhWzBdID49 IERXX09QX3JlZzAKLSsJICAgICAgJiYgYmxrLT5kYXRhWzBdIDw9IERXX09QX3JlZzMxKQotKwkg ICAgbGVuZ3RoX2JhdG9uID0gZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3Up OwotKwkgIGVsc2UgaWYgKGJsay0+c2l6ZSA+IDEgJiYgYmxrLT5kYXRhWzBdID09IERXX09QX3Jl Z3gpCi0rCSAgICB7Ci0rCSAgICAgIFVMT05HRVNUIHVsb25nZXN0OwotKwkgICAgICBjb25zdCBn ZGJfYnl0ZSAqZW5kOworKyAgLyogV2hlbiBkZWJ1Z2dpbmcgLm8gZmlsZXMsIHdlIG1heSBuZWVk IHRvIGFwcGx5IHJlbG9jYXRpb25zOyBzZWUKKysgICAgIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItcGF0Y2hlcy8yMDAyLTA0L21zZzAwMTM2Lmh0bWwgLgorKyAgICAgV2UgbmV2ZXIgY29t cHJlc3Mgc2VjdGlvbnMgaW4gLm8gZmlsZXMsIHNvIHdlIG9ubHkgbmVlZCB0bworKyAgICAgdHJ5 IHRoaXMgd2hlbiB0aGUgc2VjdGlvbiBpcyBub3QgY29tcHJlc3NlZC4gICovCisrICByZXRidWYg PSBzeW1maWxlX3JlbG9jYXRlX2RlYnVnX3NlY3Rpb24gKG9iamZpbGUsIHNlY3RwLCBidWYpOwor KyAgaWYgKHJldGJ1ZiAhPSBOVUxMKQorKyAgICB7CisrICAgICAgaW5mby0+YnVmZmVyID0gcmV0 YnVmOworKyAgICAgIHJldHVybjsKKysgICAgfQogKwotKwkgICAgICBlbmQgPSByZWFkX3VsZWIx MjggKCZibGstPmRhdGFbMV0sICZibGstPmRhdGFbYmxrLT5zaXplXSwKLSsJCQkJICAmdWxvbmdl c3QpOwotKwkgICAgICBpZiAoZW5kID09ICZibGstPmRhdGFbYmxrLT5zaXplXSkKLSsJCWxlbmd0 aF9iYXRvbiA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsJICAg IH0KKysgIGlmIChiZmRfc2VlayAoYWJmZCwgc2VjdHAtPmZpbGVwb3MsIFNFRUtfU0VUKSAhPSAw CisrICAgICAgfHwgYmZkX2JyZWFkIChidWYsIGluZm8tPnNpemUsIGFiZmQpICE9IGluZm8tPnNp emUpCisrICAgIGVycm9yIChfKCJEd2FyZiBFcnJvcjogQ2FuJ3QgcmVhZCBEV0FSRiBkYXRhIGZy b20gJyVzJyIpLAorKwkgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7CisrfQogKwotKwkgIGlm IChsZW5ndGhfYmF0b24gPT0gTlVMTCkKLSsJICAgIHsKLSsJICAgICAgc3RydWN0IGF0dHJpYnV0 ZSAqc2l6ZV9hdHRyOwotKwkgICAgICBnZGJfYnl0ZSAqZGF0YTsKKysvKiBGaWxsIGluIFNFQ1RQ LCBCVUZQIGFuZCBTSVpFUCB3aXRoIHNlY3Rpb24gaW5mbywgZ2l2ZW4gT0JKRklMRSBhbmQKKysg ICBTRUNUSU9OX05BTUUuICovCiArCi0rCSAgICAgIGxlbmd0aF9iYXRvbiA9IG9ic3RhY2tfYWxs b2MgKCZjdS0+Y29tcF91bml0X29ic3RhY2ssCi0rCQkJCQkgICAgc2l6ZW9mICgqbGVuZ3RoX2Jh dG9uKSk7Ci0rCSAgICAgIGxlbmd0aF9iYXRvbi0+cGVyX2N1ID0gY3UtPnBlcl9jdTsKLSsJICAg ICAgbGVuZ3RoX2JhdG9uLT5zaXplID0gRFdfQkxPQ0sgKGF0dHIpLT5zaXplICsgMjsKLSsJICAg ICAgZGF0YSA9IG9ic3RhY2tfYWxsb2MgKCZjdS0+Y29tcF91bml0X29ic3RhY2ssCi0rCQkJCSAg ICBsZW5ndGhfYmF0b24tPnNpemUpOwotKwkgICAgICBsZW5ndGhfYmF0b24tPmRhdGEgPSBkYXRh OwotKwkgICAgICBtZW1jcHkgKGRhdGEsIERXX0JMT0NLIChhdHRyKS0+ZGF0YSwgRFdfQkxPQ0sg KGF0dHIpLT5zaXplKTsKKyt2b2lkCisrZHdhcmYyX2dldF9zZWN0aW9uX2luZm8gKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpzZWN0aW9uX25hbWUsCisrICAgICAgICAgICAg ICAgICAgICAgICAgIGFzZWN0aW9uICoqc2VjdHAsIGdkYl9ieXRlICoqYnVmcCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgYmZkX3NpemVfdHlwZSAqc2l6ZXApCisreworKyAgc3RydWN0IGR3 YXJmMl9wZXJfb2JqZmlsZSAqZGF0YQorKyAgICA9IG9iamZpbGVfZGF0YSAob2JqZmlsZSwgZHdh cmYyX29iamZpbGVfZGF0YV9rZXkpOworKyAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKmlu Zm87CiArCi0rCSAgICAgIC8qIERXX0FUX0JZVEVfU0laRSBleGlzdGluZyB0b2dldGhlciB3aXRo IERXX0FUX1NUUklOR19MRU5HVEgKLSsJCSBzcGVjaWZpZXMgdGhlIHNpemUgb2YgYW4gaW50ZWdl ciB0byBmZXRjaC4gICovCi0rCSAgICAgIHNpemVfYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERX X0FUX2J5dGVfc2l6ZSwgY3UpOwotKwkgICAgICBpZiAoc2l6ZV9hdHRyKQotKwkJewotKwkJICBk YXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZV0gPSBEV19PUF9kZXJlZl9zaXplOwotKwkJICBkYXRh W0RXX0JMT0NLIChhdHRyKS0+c2l6ZSArIDFdID0gRFdfVU5TTkQgKHNpemVfYXR0cik7Ci0rCQkg IGlmIChkYXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZSArIDFdICE9IERXX1VOU05EIChzaXplX2F0 dHIpKQotKwkJICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKLSsJCQkgICAgICAg XygiRFdfQVRfc3RyaW5nX2xlbmd0aCdzIERXX0FUX2J5dGVfc2l6ZSAiCi0rCQkJCSAiaW50ZWdl ciBleGNlZWRzIHRoZSBieXRlIHNpemUgc3RvcmFnZSIpKTsKLSsJCX0KLSsJICAgICAgZWxzZQot KwkJewotKwkJICBkYXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZV0gPSBEV19PUF9kZXJlZjsKLSsJ CSAgZGF0YVtEV19CTE9DSyAoYXR0ciktPnNpemUgKyAxXSA9IERXX09QX25vcDsKLSsJCX0KLSsJ ICAgIH0KKysgIC8qIFdlIG1heSBzZWUgYW4gb2JqZmlsZSB3aXRob3V0IGFueSBEV0FSRiwgaW4g d2hpY2ggY2FzZSB3ZSBqdXN0CisrICAgICByZXR1cm4gbm90aGluZy4gICovCisrICBpZiAoZGF0 YSA9PSBOVUxMKQorKyAgICB7CisrICAgICAgKnNlY3RwID0gTlVMTDsKKysgICAgICAqYnVmcCA9 IE5VTEw7CisrICAgICAgKnNpemVwID0gMDsKKysgICAgICByZXR1cm47CisrICAgIH0KKysgIGlm IChzZWN0aW9uX2lzX3AgKHNlY3Rpb25fbmFtZSwgRUhfRlJBTUVfU0VDVElPTikpCisrICAgIGlu Zm8gPSAmZGF0YS0+ZWhfZnJhbWU7CisrICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNlY3Rpb25f bmFtZSwgRlJBTUVfU0VDVElPTikpCisrICAgIGluZm8gPSAmZGF0YS0+ZnJhbWU7CisrICBlbHNl CisrICAgIGdkYl9hc3NlcnQgKDApOwogKwotKwkgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlw ZSktPmhpZ2gua2luZAotKwkgICAgPSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0JMT0NLOwotKwkg IFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gudS5kd2FyZl9ibG9jayA9IGxlbmd0 aF9iYXRvbjsKLSsJICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKLSsJfQotICAgICB9 Ci0gICBlbHNlCi0gICAgIHsKLS0gICAgICAvKiBjaGVjayBmb3IgdGhlIERXX0FUX2J5dGVfc2l6 ZSBhdHRyaWJ1dGUgKi8KLSsgICAgICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfY29uc3RhbnQg KGF0dHIpKQotKwl7Ci0rCSAgLyogV2UgY3VycmVudGx5IGRvIG5vdCBzdXBwb3J0IGEgY29uc3Rh bnQgYWRkcmVzcyB3aGVyZSB0aGUgbG9jYXRpb24KLSsJICAgICBzaG91bGQgYmUgcmVhZCBmcm9t IC0gYXR0cl9mb3JtX2lzX2Jsb2NrIGlzIGV4cGVjdGVkIGluc3RlYWQuICBTZWUKLSsJICAgICBE V0FSRiBmb3IgdGhlIERXX0FUX1NUUklOR19MRU5HVEggdnMuIERXX0FUX0JZVEVfU0laRSBkaWZm ZXJlbmNlLgotKwkgICAgICovCi0rCSAgLyogUEFTU1RIUlUgKi8KLSsJfQorKyAgaWYgKGluZm8t PmFzZWN0aW9uICE9IE5VTEwgJiYgaW5mby0+c2l6ZSAhPSAwICYmIGluZm8tPmJ1ZmZlciA9PSBO VUxMKQorKyAgICAvKiBXZSBoYXZlbid0IHJlYWQgdGhpcyBzZWN0aW9uIGluIHlldC4gIERvIGl0 IG5vdy4gICovCisrICAgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKG9iamZpbGUsIGluZm8pOwogKwot ICAgICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3NpemUsIGN1KTsKLS0g ICAgICBpZiAoYXR0cikKLS0gICAgICAgIHsKLS0gICAgICAgICAgbGVuZ3RoID0gRFdfVU5TTkQg KGF0dHIpOwotLSAgICAgICAgfQotKyAgICAgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9j ayAoYXR0cikpCi0rCXsKLSsJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtp bmQKLSsJICAgID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSzsKLSsJICBUWVBFX1JBTkdF X0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2sgPQotKwkJCQkJZHdhcmYyX2F0 dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOwotKwkgIFRZUEVfRFlOQU1JQyAocmFuZ2Vf dHlwZSkgPSAxOwotKwl9Ci0rICAgICAgZWxzZSBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfY29u c3RhbnQgKGF0dHIpKQotKwlUWVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUpID0gZHdhcmYyX2dl dF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsKLSAgICAgICBlbHNlCi0tICAgICAgICB7 Ci0tICAgICAgICAgIGxlbmd0aCA9IDE7Ci0tICAgICAgICB9Ci0rCVRZUEVfSElHSF9CT1VORCAo cmFuZ2VfdHlwZSkgPSAxOwotICAgICB9Ci0gCi0tICBpbmRleF90eXBlID0gb2JqZmlsZV90eXBl IChvYmpmaWxlKS0+YnVpbHRpbl9pbnQ7Ci0tICByYW5nZV90eXBlID0gY3JlYXRlX3JhbmdlX3R5 cGUgKE5VTEwsIGluZGV4X3R5cGUsIDEsIGxlbmd0aCk7Ci0gICBjaGFyX3R5cGUgPSBsYW5ndWFn ZV9zdHJpbmdfY2hhcl90eXBlIChjdS0+bGFuZ3VhZ2VfZGVmbiwgZ2RiYXJjaCk7Ci0gICB0eXBl ID0gY3JlYXRlX3N0cmluZ190eXBlIChOVUxMLCBjaGFyX3R5cGUsIHJhbmdlX3R5cGUpOwotIAot QEAgLTYzMjYsNjAgKzY0MzcsMTM2IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgc3RydWN0IHR5cGUgKmJhc2VfdHlw ZTsKLSAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOwotICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0 cjsKLS0gIExPTkdFU1QgbG93ID0gMDsKLS0gIExPTkdFU1QgaGlnaCA9IC0xOwotKyAgTE9OR0VT VCBsb3c7Ci0gICBjaGFyICpuYW1lOwotICAgTE9OR0VTVCBuZWdhdGl2ZV9tYXNrOwotIAotICAg YmFzZV90eXBlID0gZGllX3R5cGUgKGRpZSwgY3UpOwotKyAgLyogUHJlc2VydmUgQkFTRV9UWVBF J3Mgb3JpZ2luYWwgdHlwZSwganVzdCBzZXQgaXRzIExFTkdUSC4gICovCi0rICBjaGVja190eXBl ZGVmIChiYXNlX3R5cGUpOwotIAotICAgLyogVGhlIGRpZV90eXBlIGNhbGwgYWJvdmUgbWF5IGhh dmUgYWxyZWFkeSBzZXQgdGhlIHR5cGUgZm9yIHRoaXMgRElFLiAgKi8KLSAgIHJhbmdlX3R5cGUg PSBnZXRfZGllX3R5cGUgKGRpZSwgY3UpOwotICAgaWYgKHJhbmdlX3R5cGUpCi0gICAgIHJldHVy biByYW5nZV90eXBlOwotIAotLSAgaWYgKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9mb3J0cmFu KQotLSAgICB7Ci0tICAgICAgLyogRk9SVFJBTiBpbXBsaWVzIGEgbG93ZXIgYm91bmQgb2YgMSwg aWYgbm90IGdpdmVuLiAgKi8KLS0gICAgICBsb3cgPSAxOwotLSAgICB9Ci0rICAvKiBMT1dfQk9V TkQgYW5kIEhJR0hfQk9VTkQgYXJlIHNldCBmb3IgcmVhbCBiZWxvdy4gICovCi0rICByYW5nZV90 eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUgKE5VTEwsIGJhc2VfdHlwZSwgMCwgLTEpOworKyAgKnNl Y3RwID0gaW5mby0+YXNlY3Rpb247CisrICAqYnVmcCA9IGluZm8tPmJ1ZmZlcjsKKysgICpzaXpl cCA9IGluZm8tPnNpemU7CisrfQogKwotKyAgbmVnYXRpdmVfbWFzayA9IAotKyAgICAoTE9OR0VT VCkgLTEgPDwgKFRZUEVfTEVOR1RIIChiYXNlX3R5cGUpICogVEFSR0VUX0NIQVJfQklUIC0gMSk7 CisrDAogKwotKyAgLyogRXhjbHVkZSBsYW5ndWFnZV9hZGEgZnJvbSBhbnkgVFlQRV9EWU5BTUlD IGNvbnN0cnVjdHMgYmVsb3cuICBHREIgQWRhCi0rICAgICBzdXBwb3J0cyBpbXBsZW1lbnRzIHRo ZSBkeW5hbWljIGJvdW5kcyBpbiBhIG5vbi1EV0FSRiB3YXkgYW5kIHRoZQotKyAgICAgZXhpc3Rp bmcgRFdBUkYgZHluYW1pYyBib3VuZHMgYXJlIGludmFsaWQsIGxlYWRpbmcgdG8gbWVtb3J5IGFj Y2VzcwotKyAgICAgZXJyb3JzLiAgKi8KLSAKLS0gIC8qIEZJWE1FOiBGb3IgdmFyaWFibGUgc2l6 ZWQgYXJyYXlzIGVpdGhlciBvZiB0aGVzZSBjb3VsZCBiZQotLSAgICAgYSB2YXJpYWJsZSByYXRo ZXIgdGhhbiBhIGNvbnN0YW50IHZhbHVlLiAgV2UnbGwgYWxsb3cgaXQsCi0tICAgICBidXQgd2Ug ZG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGl0LiAgKi8KLSAgIGF0dHIgPSBkd2FyZjJfYXR0ciAo ZGllLCBEV19BVF9sb3dlcl9ib3VuZCwgY3UpOwotLSAgaWYgKGF0dHIpCi0tICAgIGxvdyA9IGR3 YXJmMl9nZXRfYXR0cl9jb25zdGFudF92YWx1ZSAoYXR0ciwgMCk7Ci0rICBpZiAoYXR0ciAmJiBh dHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpICYmIGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9hZGEp CisrLyogUmVhZCBpbiB0aGUgc3ltYm9scyBmb3IgUEVSX0NVLiAgT0JKRklMRSBpcyB0aGUgb2Jq ZmlsZSBmcm9tIHdoaWNoCisrICAgdGhpcyBDVSBjYW1lLiAgKi8KKytzdGF0aWMgdm9pZAorK2R3 Ml9kb19pbnN0YW50aWF0ZV9zeW10YWIgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorKwkJCSAg IHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKKyt7CisrICBzdHJ1Y3QgY2xlYW51 cCAqYmFja190bzsKKysKKysgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKGR3YXJmMl9yZWxlYXNl X3F1ZXVlLCBOVUxMKTsKKysKKysgIHF1ZXVlX2NvbXBfdW5pdCAocGVyX2N1LCBvYmpmaWxlKTsK KysKKysgIGlmIChwZXJfY3UtPmZyb21fZGVidWdfdHlwZXMpCisrICAgIHJlYWRfc2lnbmF0dXJl ZF90eXBlX2F0X29mZnNldCAob2JqZmlsZSwgcGVyX2N1LT5vZmZzZXQpOworKyAgZWxzZQorKyAg ICBsb2FkX2Z1bGxfY29tcF91bml0IChwZXJfY3UsIG9iamZpbGUpOworKworKyAgcHJvY2Vzc19x dWV1ZSAob2JqZmlsZSk7CisrCisrICAvKiBBZ2UgdGhlIGNhY2hlLCByZWxlYXNpbmcgY29tcGls YXRpb24gdW5pdHMgdGhhdCBoYXZlIG5vdAorKyAgICAgYmVlbiB1c2VkIHJlY2VudGx5LiAgKi8K KysgIGFnZV9jYWNoZWRfY29tcF91bml0cyAoKTsKKysKKysgIGRvX2NsZWFudXBzIChiYWNrX3Rv KTsKKyt9CisrCisrLyogRW5zdXJlIHRoYXQgdGhlIHN5bWJvbHMgZm9yIFBFUl9DVSBoYXZlIGJl ZW4gcmVhZCBpbi4gIE9CSkZJTEUgaXMKKysgICB0aGUgb2JqZmlsZSBmcm9tIHdoaWNoIHRoaXMg Q1UgY2FtZS4gIFJldHVybnMgdGhlIHJlc3VsdGluZyBzeW1ib2wKKysgICB0YWJsZS4gICovCisr c3RhdGljIHN0cnVjdCBzeW10YWIgKgorK2R3Ml9pbnN0YW50aWF0ZV9zeW10YWIgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLAorKwkJCXN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkK Kyt7CisrICBpZiAoIXBlcl9jdS0+di5xdWljay0+c3ltdGFiKQogKyAgICB7Ci0rICAgICAgVFlQ RV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93LmtpbmQgPSBSQU5HRV9CT1VORF9LSU5EX0RX QVJGX0JMT0NLOwotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy51LmR3 YXJmX2Jsb2NrID0KLSsJCQkJCWR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1 KTsKLSsgICAgICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKLSsgICAgICAvKiBGb3Ig c2V0dGluZyBhIGRlZmF1bHQgaWYgRFdfQVRfVVBQRVJfQk9VTkQgd291bGQgYmUgbWlzc2luZy4g ICovCi0rICAgICAgbG93ID0gMDsKKysgICAgICBzdHJ1Y3QgY2xlYW51cCAqYmFja190byA9IG1h a2VfY2xlYW51cCAoZnJlZV9jYWNoZWRfY29tcF91bml0cywgTlVMTCk7CisrICAgICAgaW5jcmVt ZW50X3JlYWRpbmdfc3ltdGFiICgpOworKyAgICAgIGR3Ml9kb19pbnN0YW50aWF0ZV9zeW10YWIg KG9iamZpbGUsIHBlcl9jdSk7CisrICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwogKyAgICB9 Ci0rICBlbHNlIGlmIChhdHRyICYmIGlzX3JlZl9hdHRyIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2Ug IT0gbGFuZ3VhZ2VfYWRhKQorKyAgcmV0dXJuIHBlcl9jdS0+di5xdWljay0+c3ltdGFiOworK30K KysKKysvKiBBIGhlbHBlciBmdW5jdGlvbiB0aGF0IGtub3dzIGhvdyB0byByZWFkIGEgNjQtYml0 IHZhbHVlIGluIGEgd2F5CisrICAgdGhhdCBkb2Vzbid0IG1ha2UgZ2RiIGRpZS4gIFJldHVybnMg MSBpZiB0aGUgY29udmVyc2lvbiB3ZW50IG9rLCAwCisrICAgb3RoZXJ3aXNlLiAgKi8KKytzdGF0 aWMgaW50CisrZXh0cmFjdF9jdV92YWx1ZSAoY29uc3QgY2hhciAqYnl0ZXMsIFVMT05HRVNUICpy ZXN1bHQpCisreworKyAgaWYgKHNpemVvZiAoVUxPTkdFU1QpIDwgOCkKICsgICAgewotKyAgICAg IHN0cnVjdCBkaWVfaW5mbyAqdGFyZ2V0X2RpZTsKLSsgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICp0 YXJnZXRfY3UgPSBjdTsKLSsgICAgICBzdHJ1Y3QgYXR0cmlidXRlICp0YXJnZXRfbG9jX2F0dHI7 CisrICAgICAgaW50IGk7CiArCi0rICAgICAgdGFyZ2V0X2RpZSA9IGZvbGxvd19kaWVfcmVmX29y X3NpZyAoZGllLCBhdHRyLCAmdGFyZ2V0X2N1KTsKLSsgICAgICBnZGJfYXNzZXJ0ICh0YXJnZXRf Y3UtPm9iamZpbGUgPT0gY3UtPm9iamZpbGUpOwotKyAgICAgIHRhcmdldF9sb2NfYXR0ciA9IGR3 YXJmMl9hdHRyICh0YXJnZXRfZGllLCBEV19BVF9sb2NhdGlvbiwgdGFyZ2V0X2N1KTsKKysgICAg ICAvKiBJZ25vcmUgdGhlIHVwcGVyIDQgYnl0ZXMgaWYgdGhleSBhcmUgYWxsIHplcm8uICAqLwor KyAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyArK2kpCisrCWlmIChieXRlc1tpICsgNF0gIT0gMCkK KysJICByZXR1cm4gMDsKICsKLSsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5s b3cua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVDsKLSsgICAgICBUWVBFX1JB TkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5sb3cudS5kd2FyZl9sb2NsaXN0LmxvY2xpc3QKLSsgICAg ICAgID0gZHdhcmYyX2F0dHJfdG9fbG9jbGlzdF9iYXRvbiAodGFyZ2V0X2xvY19hdHRyLCB0YXJn ZXRfY3UpOwotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy51LmR3YXJm X2xvY2xpc3QudHlwZQotKyAgICAgICAgPSBkaWVfdHlwZSAodGFyZ2V0X2RpZSwgdGFyZ2V0X2N1 KTsKLSsgICAgICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKLSsgICAgICAvKiBGb3Ig c2V0dGluZyBhIGRlZmF1bHQgaWYgRFdfQVRfVVBQRVJfQk9VTkQgd291bGQgYmUgbWlzc2luZy4g ICovCi0rICAgICAgbG93ID0gMDsKKysgICAgICAqcmVzdWx0ID0gZXh0cmFjdF91bnNpZ25lZF9p bnRlZ2VyIChieXRlcywgNCwgQkZEX0VORElBTl9MSVRUTEUpOwogKyAgICB9CiArICBlbHNlCisr ICAgICpyZXN1bHQgPSBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKGJ5dGVzLCA4LCBCRkRfRU5E SUFOX0xJVFRMRSk7CisrICByZXR1cm4gMTsKKyt9CisrCisrLyogUmVhZCB0aGUgQ1UgbGlzdCBm cm9tIHRoZSBtYXBwZWQgaW5kZXgsIGFuZCB1c2UgaXQgdG8gY3JlYXRlIGFsbAorKyAgIHRoZSBD VSBvYmplY3RzIGZvciB0aGlzIG9iamZpbGUuICBSZXR1cm4gMCBpZiBzb21ldGhpbmcgd2VudCB3 cm9uZywKKysgICAxIGlmIGV2ZXJ5dGhpbmcgd2VudCBvay4gICovCisrc3RhdGljIGludAorK2Ny ZWF0ZV9jdXNfZnJvbV9pbmRleCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBtYXBw ZWRfaW5kZXggKmluZGV4LAorKwkJICAgICAgIGNvbnN0IGdkYl9ieXRlICpjdV9saXN0LCBvZmZz ZXRfdHlwZSBjdV9saXN0X2VsZW1lbnRzKQorK3sKKysgIG9mZnNldF90eXBlIGk7CisrICBjb25z dCBjaGFyICplbnRyeTsKKysKKysgIGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzID0g Y3VfbGlzdF9lbGVtZW50cyAvIDI7CisrICBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3Vu aXRzCisrICAgID0gb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKKysJ CSAgICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHMKKysJCSAgICAgKiBzaXplb2Yg KHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKikpOworKworKyAgZm9yIChpID0gMDsgaSA8IGN1 X2xpc3RfZWxlbWVudHM7IGkgKz0gMikKICsgICAgewotKyAgICAgIGlmIChhdHRyICYmIGF0dHJf Zm9ybV9pc19jb25zdGFudCAoYXR0cikpCi0rCWxvdyA9IGR3YXJmMl9nZXRfYXR0cl9jb25zdGFu dF92YWx1ZSAoYXR0ciwgMCk7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgaWYgKGN1LT5sYW5ndWFn ZSA9PSBsYW5ndWFnZV9mb3J0cmFuKQotKwkgICAgewotKwkgICAgICAvKiBGT1JUUkFOIGltcGxp ZXMgYSBsb3dlciBib3VuZCBvZiAxLCBpZiBub3QgZ2l2ZW4uICAqLwotKwkgICAgICBsb3cgPSAx OwotKwkgICAgfQotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgLyogQWNjb3JkaW5nIHRvIERX QVJGIHdlIHNob3VsZCBhc3N1bWUgdGhlIHZhbHVlIDAgb25seSBmb3IKLSsJCSBMQU5HVUFHRV9D IGFuZCBMQU5HVUFHRV9DUExVUy4gICovCi0rCSAgICAgIGxvdyA9IDA7Ci0rCSAgICB9Ci0rCX0K LSsgICAgICBpZiAoIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlwZSkgJiYgKGxvdyAmIG5lZ2F0aXZl X21hc2spKQotKwlsb3cgfD0gbmVnYXRpdmVfbWFzazsKLSsgICAgICBUWVBFX0xPV19CT1VORCAo cmFuZ2VfdHlwZSkgPSBsb3c7Ci0rICAgICAgaWYgKGxvdyA+PSAwKQotKwlUWVBFX1VOU0lHTkVE IChyYW5nZV90eXBlKSA9IDE7CisrICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqdGhl X2N1OworKyAgICAgIFVMT05HRVNUIG9mZnNldCwgbGVuZ3RoOworKworKyAgICAgIGlmICghZXh0 cmFjdF9jdV92YWx1ZSAoY3VfbGlzdCwgJm9mZnNldCkKKysJICB8fCAhZXh0cmFjdF9jdV92YWx1 ZSAoY3VfbGlzdCArIDgsICZsZW5ndGgpKQorKwlyZXR1cm4gMDsKKysgICAgICBjdV9saXN0ICs9 IDIgKiA4OworKworKyAgICAgIHRoZV9jdSA9IE9CU1RBQ0tfWkFMTE9DICgmb2JqZmlsZS0+b2Jq ZmlsZV9vYnN0YWNrLAorKwkJCSAgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhKTsKKysg ICAgICB0aGVfY3UtPm9mZnNldCA9IG9mZnNldDsKKysgICAgICB0aGVfY3UtPmxlbmd0aCA9IGxl bmd0aDsKKysgICAgICB0aGVfY3UtPm9iamZpbGUgPSBvYmpmaWxlOworKyAgICAgIHRoZV9jdS0+ di5xdWljayA9IE9CU1RBQ0tfWkFMTE9DICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorKwkJ CQkJc3RydWN0IGR3YXJmMl9wZXJfY3VfcXVpY2tfZGF0YSk7CisrICAgICAgZHdhcmYyX3Blcl9v YmpmaWxlLT5hbGxfY29tcF91bml0c1tpIC8gMl0gPSB0aGVfY3U7CiArICAgIH0KLSAKLSAgIGF0 dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF91cHBlcl9ib3VuZCwgY3UpOwotLSAgaWYgKGF0 dHIpCi0rICBpZiAoIWF0dHIgfHwgKCFhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpICYmICFhdHRy X2Zvcm1faXNfY29uc3RhbnQgKGF0dHIpCi0rCQkmJiAhaXNfcmVmX2F0dHIgKGF0dHIpKSkKLSAg ICAgewotLSAgICAgIGlmIChhdHRyLT5mb3JtID09IERXX0ZPUk1fYmxvY2sxIHx8IGlzX3JlZl9h dHRyIChhdHRyKSkKLS0gICAgICAgIHsKLS0gICAgICAgICAgLyogR0NDIGVuY29kZXMgYXJyYXlz IHdpdGggdW5zcGVjaWZpZWQgb3IgZHluYW1pYyBsZW5ndGgKLS0gICAgICAgICAgICAgd2l0aCBh IERXX0ZPUk1fYmxvY2sxIGF0dHJpYnV0ZSBvciBhIHJlZmVyZW5jZSBhdHRyaWJ1dGUuCi0tICAg ICAgICAgICAgIEZJWE1FOiBHREIgZG9lcyBub3QgeWV0IGtub3cgaG93IHRvIGhhbmRsZSBkeW5h bWljCi0tICAgICAgICAgICAgIGFycmF5cyBwcm9wZXJseSwgdHJlYXQgdGhlbSBhcyBhcnJheXMg d2l0aCB1bnNwZWNpZmllZAotLSAgICAgICAgICAgICBsZW5ndGggZm9yIG5vdy4KLS0KLS0gICAg ICAgICAgICAgRklYTUU6IGppbWIvMjAwMy0wOS0yMjogR0RCIGRvZXMgbm90IHJlYWxseSBrbm93 Ci0tICAgICAgICAgICAgIGhvdyB0byBoYW5kbGUgYXJyYXlzIG9mIHVuc3BlY2lmaWVkIGxlbmd0 aAotLSAgICAgICAgICAgICBlaXRoZXI7IHdlIGp1c3QgcmVwcmVzZW50IHRoZW0gYXMgemVyby1s ZW5ndGgKLS0gICAgICAgICAgICAgYXJyYXlzLiAgQ2hvb3NlIGFuIGFwcHJvcHJpYXRlIHVwcGVy IGJvdW5kIGdpdmVuCi0tICAgICAgICAgICAgIHRoZSBsb3dlciBib3VuZCB3ZSd2ZSBjb21wdXRl ZCBhYm92ZS4gICovCi0tICAgICAgICAgIGhpZ2ggPSBsb3cgLSAxOwotLSAgICAgICAgfQotLSAg ICAgIGVsc2UKLS0gICAgICAgIGhpZ2ggPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUg KGF0dHIsIDEpOwotKyAgICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9jb3VudCwg Y3UpOwotKyAgICAgIC8qIEl0IGRvZXMgbm90IGh1cnQgYnV0IGl0IGlzIG5lZWRsZXNzbHkgaW5l ZmZlY3RpdmUgaW4gY2hlY2tfdHlwZWRlZi4gICovCi0rICAgICAgaWYgKGF0dHIgJiYgKGF0dHJf Zm9ybV9pc19ibG9jayAoYXR0cikgfHwgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkpCi0r ICAgICAgCXsKLSsJICBUWVBFX1JBTkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQgKHJhbmdlX3R5cGUp ID0gMTsKLSsJICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKKysKKysgIHJldHVybiAx OworK30KKysKKysvKiBSZWFkIHRoZSBhZGRyZXNzIG1hcCBkYXRhIGZyb20gdGhlIG1hcHBlZCBp bmRleCwgYW5kIHVzZSBpdCB0bworKyAgIHBvcHVsYXRlIHRoZSBvYmpmaWxlJ3MgcHN5bXRhYnNf YWRkcm1hcC4gICovCisrc3RhdGljIHZvaWQKKytjcmVhdGVfYWRkcm1hcF9mcm9tX2luZGV4IChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IG1hcHBlZF9pbmRleCAqaW5kZXgpCisrewor KyAgY29uc3QgZ2RiX2J5dGUgKml0ZXIsICplbmQ7CisrICBzdHJ1Y3Qgb2JzdGFjayB0ZW1wX29i c3RhY2s7CisrICBzdHJ1Y3QgYWRkcm1hcCAqbXV0YWJsZV9tYXA7CisrICBzdHJ1Y3QgY2xlYW51 cCAqY2xlYW51cDsKKysgIENPUkVfQUREUiBiYXNlYWRkcjsKKysKKysgIG9ic3RhY2tfaW5pdCAo JnRlbXBfb2JzdGFjayk7CisrICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwX29ic3RhY2tfZnJlZSAo JnRlbXBfb2JzdGFjayk7CisrICBtdXRhYmxlX21hcCA9IGFkZHJtYXBfY3JlYXRlX211dGFibGUg KCZ0ZW1wX29ic3RhY2spOworKworKyAgaXRlciA9IGluZGV4LT5hZGRyZXNzX3RhYmxlOworKyAg ZW5kID0gaXRlciArIGluZGV4LT5hZGRyZXNzX3RhYmxlX3NpemU7CisrCisrICBiYXNlYWRkciA9 IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZGX1RFWFQgKG9iamZp bGUpKTsKKysKKysgIHdoaWxlIChpdGVyIDwgZW5kKQorKyAgICB7CisrICAgICAgVUxPTkdFU1Qg aGksIGxvLCBjdV9pbmRleDsKKysgICAgICBsbyA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAo aXRlciwgOCwgQkZEX0VORElBTl9MSVRUTEUpOworKyAgICAgIGl0ZXIgKz0gODsKKysgICAgICBo aSA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAoaXRlciwgOCwgQkZEX0VORElBTl9MSVRUTEUp OworKyAgICAgIGl0ZXIgKz0gODsKKysgICAgICBjdV9pbmRleCA9IGV4dHJhY3RfdW5zaWduZWRf aW50ZWdlciAoaXRlciwgNCwgQkZEX0VORElBTl9MSVRUTEUpOworKyAgICAgIGl0ZXIgKz0gNDsK KysgICAgICAKKysgICAgICBhZGRybWFwX3NldF9lbXB0eSAobXV0YWJsZV9tYXAsIGxvICsgYmFz ZWFkZHIsIGhpICsgYmFzZWFkZHIgLSAxLAorKwkJCSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9j b21wX3VuaXRzW2N1X2luZGV4XSk7CisrICAgIH0KKysKKysgIG9iamZpbGUtPnBzeW10YWJzX2Fk ZHJtYXAgPSBhZGRybWFwX2NyZWF0ZV9maXhlZCAobXV0YWJsZV9tYXAsCisrCQkJCQkJICAgICZv YmpmaWxlLT5vYmpmaWxlX29ic3RhY2spOworKyAgZG9fY2xlYW51cHMgKGNsZWFudXApOworK30K KysKKysvKiBUaGUgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncyBpbiB0aGUgbWFwcGVkIGluZGV4 LiAgVGhpcyBpcyB0aGUKKysgICBzYW1lIGFzIHRoZSBoYXNodGFiLmMgaGFzaCBmdW5jdGlvbiwg YnV0IHdlIGtlZXAgYSBzZXBhcmF0ZSBjb3B5IHRvCisrICAgbWFpbnRhaW4gY29udHJvbCBvdmVy IHRoZSBpbXBsZW1lbnRhdGlvbi4gIFRoaXMgaXMgbmVjZXNzYXJ5CisrICAgYmVjYXVzZSB0aGUg aGFzaCBmdW5jdGlvbiBpcyB0aWVkIHRvIHRoZSBmb3JtYXQgb2YgdGhlIG1hcHBlZCBpbmRleAor KyAgIGZpbGUuICAqLworK3N0YXRpYyBoYXNodmFsX3QKKyttYXBwZWRfaW5kZXhfc3RyaW5nX2hh c2ggKGNvbnN0IHZvaWQgKnApCisreworKyAgY29uc3QgdW5zaWduZWQgY2hhciAqc3RyID0gKGNv bnN0IHVuc2lnbmVkIGNoYXIgKikgcDsKKysgIGhhc2h2YWxfdCByID0gMDsKKysgIHVuc2lnbmVk IGNoYXIgYzsKKysKKysgIHdoaWxlICgoYyA9ICpzdHIrKykgIT0gMCkKKysgICAgciA9IHIgKiA2 NyArIGMgLSAxMTM7CisrCisrICByZXR1cm4gcjsKKyt9CisrCisrLyogRmluZCBhIHNsb3QgaW4g dGhlIG1hcHBlZCBpbmRleCBJTkRFWCBmb3IgdGhlIG9iamVjdCBuYW1lZCBOQU1FLgorKyAgIElm IE5BTUUgaXMgZm91bmQsIHNldCAqVkVDX09VVCB0byBwb2ludCB0byB0aGUgQ1UgdmVjdG9yIGlu IHRoZQorKyAgIGNvbnN0YW50IHBvb2wgYW5kIHJldHVybiAxLiAgSWYgTkFNRSBjYW5ub3QgYmUg Zm91bmQsIHJldHVybiAwLiAgKi8KKytzdGF0aWMgaW50CisrZmluZF9zbG90X2luX21hcHBlZF9o YXNoIChzdHJ1Y3QgbWFwcGVkX2luZGV4ICppbmRleCwgY29uc3QgY2hhciAqbmFtZSwKKysJCQkg IG9mZnNldF90eXBlICoqdmVjX291dCkKKyt7CisrICBvZmZzZXRfdHlwZSBoYXNoID0gbWFwcGVk X2luZGV4X3N0cmluZ19oYXNoIChuYW1lKTsKKysgIG9mZnNldF90eXBlIHNsb3QsIHN0ZXA7Cisr CisrICBzbG90ID0gaGFzaCAmIChpbmRleC0+aW5kZXhfdGFibGVfc2xvdHMgLSAxKTsKKysgIHN0 ZXAgPSAoKGhhc2ggKiAxNykgJiAoaW5kZXgtPmluZGV4X3RhYmxlX3Nsb3RzIC0gMSkpIHwgMTsK KysKKysgIGZvciAoOzspCisrICAgIHsKKysgICAgICAvKiBDb252ZXJ0IGEgc2xvdCBudW1iZXIg dG8gYW4gb2Zmc2V0IGludG8gdGhlIHRhYmxlLiAgKi8KKysgICAgICBvZmZzZXRfdHlwZSBpID0g MiAqIHNsb3Q7CisrICAgICAgY29uc3QgY2hhciAqc3RyOworKyAgICAgIGlmIChpbmRleC0+aW5k ZXhfdGFibGVbaV0gPT0gMCAmJiBpbmRleC0+aW5kZXhfdGFibGVbaSArIDFdID09IDApCisrCXJl dHVybiAwOworKworKyAgICAgIHN0ciA9IGluZGV4LT5jb25zdGFudF9wb29sICsgTUFZQkVfU1dB UCAoaW5kZXgtPmluZGV4X3RhYmxlW2ldKTsKKysgICAgICBpZiAoIXN0cmNtcCAobmFtZSwgc3Ry KSkKKysJeworKwkgICp2ZWNfb3V0ID0gKG9mZnNldF90eXBlICopIChpbmRleC0+Y29uc3RhbnRf cG9vbAorKwkJCQkgICAgICArIE1BWUJFX1NXQVAgKGluZGV4LT5pbmRleF90YWJsZVtpICsgMV0p KTsKKysJICByZXR1cm4gMTsKICsJfQotKyAgICAgIC8qIFBhc3MgaXQgbm93IGFzIHRoZSByZWd1 bGFyIERXX0FUX3VwcGVyX2JvdW5kLiAgKi8KKysKKysgICAgICBzbG90ID0gKHNsb3QgKyBzdGVw KSAmIChpbmRleC0+aW5kZXhfdGFibGVfc2xvdHMgLSAxKTsKICsgICAgfQorK30KICsKLSsgIGlm IChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikgJiYgY3UtPmxhbmd1YWdlICE9IGxh bmd1YWdlX2FkYSkKKysvKiBSZWFkIHRoZSBpbmRleCBmaWxlLiAgSWYgZXZlcnl0aGluZyB3ZW50 IG9rLCBpbml0aWFsaXplIHRoZSAicXVpY2siCisrICAgZWxlbWVudHMgb2YgYWxsIHRoZSBDVXMg YW5kIHJldHVybiAxLiAgT3RoZXJ3aXNlLCByZXR1cm4gMC4gICovCisrc3RhdGljIGludAorK2R3 YXJmMl9yZWFkX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyt7CisrICBjaGFyICph ZGRyOworKyAgc3RydWN0IG1hcHBlZF9pbmRleCAqbWFwOworKyAgb2Zmc2V0X3R5cGUgKm1ldGFk YXRhOworKyAgY29uc3QgZ2RiX2J5dGUgKmN1X2xpc3Q7CisrICBvZmZzZXRfdHlwZSBjdV9saXN0 X2VsZW1lbnRzOworKworKyAgaWYgKGR3YXJmMl9wZXJfb2JqZmlsZS0+Z2RiX2luZGV4LmFzZWN0 aW9uID09IE5VTEwKKysgICAgICB8fCBkd2FyZjJfcGVyX29iamZpbGUtPmdkYl9pbmRleC5zaXpl ID09IDApCisrICAgIHJldHVybiAwOworKyAgZHdhcmYyX3JlYWRfc2VjdGlvbiAob2JqZmlsZSwg JmR3YXJmMl9wZXJfb2JqZmlsZS0+Z2RiX2luZGV4KTsKKysKKysgIGFkZHIgPSBkd2FyZjJfcGVy X29iamZpbGUtPmdkYl9pbmRleC5idWZmZXI7CisrICAvKiBWZXJzaW9uIGNoZWNrLiAgKi8KKysg IGlmIChNQVlCRV9TV0FQICgqKG9mZnNldF90eXBlICopIGFkZHIpICE9IDEpCisrICAgIHJldHVy biAwOworKworKyAgbWFwID0gT0JTVEFDS19aQUxMT0MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3Rh Y2ssIHN0cnVjdCBtYXBwZWRfaW5kZXgpOworKyAgbWFwLT50b3RhbF9zaXplID0gZHdhcmYyX3Bl cl9vYmpmaWxlLT5nZGJfaW5kZXguc2l6ZTsKKysKKysgIG1ldGFkYXRhID0gKG9mZnNldF90eXBl ICopIChhZGRyICsgc2l6ZW9mIChvZmZzZXRfdHlwZSkpOworKyAgY3VfbGlzdCA9IGFkZHIgKyBN QVlCRV9TV0FQIChtZXRhZGF0YVswXSk7CisrICBjdV9saXN0X2VsZW1lbnRzID0gKChNQVlCRV9T V0FQIChtZXRhZGF0YVsxXSkgLSBNQVlCRV9TV0FQIChtZXRhZGF0YVswXSkpCisrCQkgICAgICAv IDgpOworKyAgbWFwLT5hZGRyZXNzX3RhYmxlID0gYWRkciArIE1BWUJFX1NXQVAgKG1ldGFkYXRh WzFdKTsKKysgIG1hcC0+YWRkcmVzc190YWJsZV9zaXplID0gKE1BWUJFX1NXQVAgKG1ldGFkYXRh WzJdKQorKwkJCSAgICAgLSBNQVlCRV9TV0FQIChtZXRhZGF0YVsxXSkpOworKyAgbWFwLT5pbmRl eF90YWJsZSA9IChvZmZzZXRfdHlwZSAqKSAoYWRkciArIE1BWUJFX1NXQVAgKG1ldGFkYXRhWzJd KSk7CisrICBtYXAtPmluZGV4X3RhYmxlX3Nsb3RzID0gKChNQVlCRV9TV0FQIChtZXRhZGF0YVsz XSkKKysJCQkgICAgIC0gTUFZQkVfU1dBUCAobWV0YWRhdGFbMl0pKQorKwkJCSAgICAvICgyICog c2l6ZW9mIChvZmZzZXRfdHlwZSkpKTsKKysgIG1hcC0+Y29uc3RhbnRfcG9vbCA9IGFkZHIgKyBN QVlCRV9TV0FQIChtZXRhZGF0YVszXSk7CisrCisrICBpZiAoIWNyZWF0ZV9jdXNfZnJvbV9pbmRl eCAob2JqZmlsZSwgbWFwLCBjdV9saXN0LCBjdV9saXN0X2VsZW1lbnRzKSkKKysgICAgcmV0dXJu IDA7CisrCisrICBjcmVhdGVfYWRkcm1hcF9mcm9tX2luZGV4IChvYmpmaWxlLCBtYXApOworKwor KyAgZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZSA9IG1hcDsKKysgIGR3YXJmMl9wZXJf b2JqZmlsZS0+dXNpbmdfaW5kZXggPSAxOworKworKyAgcmV0dXJuIDE7CisrfQorKworKy8qIEEg aGVscGVyIGZvciB0aGUgInF1aWNrIiBmdW5jdGlvbnMgd2hpY2ggc2V0cyB0aGUgZ2xvYmFsCisr ICAgZHdhcmYyX3Blcl9vYmpmaWxlIGFjY29yZGluZyB0byBPQkpGSUxFLiAgKi8KKytzdGF0aWMg dm9pZAorK2R3Ml9zZXR1cCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisreworKyAgZHdhcmYy X3Blcl9vYmpmaWxlID0gb2JqZmlsZV9kYXRhIChvYmpmaWxlLCBkd2FyZjJfb2JqZmlsZV9kYXRh X2tleSk7CisrICBnZGJfYXNzZXJ0IChkd2FyZjJfcGVyX29iamZpbGUpOworK30KKysKKysvKiBB IGhlbHBlciBmb3IgdGhlICJxdWljayIgZnVuY3Rpb25zIHdoaWNoIGF0dGVtcHRzIHRvIHJlYWQg dGhlIGxpbmUKKysgICB0YWJsZSBmb3IgVEhJU19DVS4gICovCisrc3RhdGljIHZvaWQKKytkdzJf cmVxdWlyZV9saW5lX2hlYWRlciAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisrCQkJIHN0cnVj dCBkd2FyZjJfcGVyX2N1X2RhdGEgKnRoaXNfY3UpCisreworKyAgYmZkICphYmZkID0gb2JqZmls ZS0+b2JmZDsKKysgIHN0cnVjdCBsaW5lX2hlYWRlciAqbGggPSBOVUxMOworKyAgc3RydWN0IGF0 dHJpYnV0ZSAqYXR0cjsKKysgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwczsKKysgIHN0cnVjdCBk aWVfaW5mbyAqY29tcF91bml0X2RpZTsKKysgIGdkYl9ieXRlICpiZWdfb2ZfY29tcF91bml0LCAq aW5mb19wdHIsICpidWZmZXI7CisrICBpbnQgaGFzX2NoaWxkcmVuLCBpOworKyAgc3RydWN0IGR3 YXJmMl9jdSBjdTsKKysgIHVuc2lnbmVkIGludCBieXRlc19yZWFkLCBidWZmZXJfc2l6ZTsKKysg IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzIHJlYWRlcl9zcGVjczsKKysgIGNoYXIgKm5hbWUsICpj b21wX2RpcjsKKysKKysgIGlmICh0aGlzX2N1LT52LnF1aWNrLT5yZWFkX2xpbmVzKQorKyAgICBy ZXR1cm47CisrICB0aGlzX2N1LT52LnF1aWNrLT5yZWFkX2xpbmVzID0gMTsKKysKKysgIG1lbXNl dCAoJmN1LCAwLCBzaXplb2YgKGN1KSk7CisrICBjdS5vYmpmaWxlID0gb2JqZmlsZTsKKysgIG9i c3RhY2tfaW5pdCAoJmN1LmNvbXBfdW5pdF9vYnN0YWNrKTsKKysKKysgIGNsZWFudXBzID0gbWFr ZV9jbGVhbnVwIChmcmVlX3N0YWNrX2NvbXBfdW5pdCwgJmN1KTsKKysKKysgIGR3YXJmMl9yZWFk X3NlY3Rpb24gKG9iamZpbGUsICZkd2FyZjJfcGVyX29iamZpbGUtPmluZm8pOworKyAgYnVmZmVy X3NpemUgPSBkd2FyZjJfcGVyX29iamZpbGUtPmluZm8uc2l6ZTsKKysgIGJ1ZmZlciA9IGR3YXJm Ml9wZXJfb2JqZmlsZS0+aW5mby5idWZmZXI7CisrICBpbmZvX3B0ciA9IGJ1ZmZlciArIHRoaXNf Y3UtPm9mZnNldDsKKysgIGJlZ19vZl9jb21wX3VuaXQgPSBpbmZvX3B0cjsKKysKKysgIGluZm9f cHRyID0gcGFydGlhbF9yZWFkX2NvbXBfdW5pdF9oZWFkICgmY3UuaGVhZGVyLCBpbmZvX3B0ciwK KysJCQkJCSAgYnVmZmVyLCBidWZmZXJfc2l6ZSwKKysJCQkJCSAgYWJmZCk7CisrCisrICAvKiBD b21wbGV0ZSB0aGUgY3VfaGVhZGVyLiAgKi8KKysgIGN1LmhlYWRlci5vZmZzZXQgPSBiZWdfb2Zf Y29tcF91bml0IC0gYnVmZmVyOworKyAgY3UuaGVhZGVyLmZpcnN0X2RpZV9vZmZzZXQgPSBpbmZv X3B0ciAtIGJlZ19vZl9jb21wX3VuaXQ7CisrCisrICB0aGlzX2N1LT5jdSA9ICZjdTsKKysgIGN1 LnBlcl9jdSA9IHRoaXNfY3U7CisrCisrICBkd2FyZjJfcmVhZF9hYmJyZXZzIChhYmZkLCAmY3Up OworKyAgbWFrZV9jbGVhbnVwIChkd2FyZjJfZnJlZV9hYmJyZXZfdGFibGUsICZjdSk7CisrCisr ICBpZiAodGhpc19jdS0+ZnJvbV9kZWJ1Z190eXBlcykKKysgICAgaW5mb19wdHIgKz0gOCAvKnNp Z25hdHVyZSovICsgY3UuaGVhZGVyLm9mZnNldF9zaXplOworKyAgaW5pdF9jdV9kaWVfcmVhZGVy ICgmcmVhZGVyX3NwZWNzLCAmY3UpOworKyAgaW5mb19wdHIgPSByZWFkX2Z1bGxfZGllICgmcmVh ZGVyX3NwZWNzLCAmY29tcF91bml0X2RpZSwgaW5mb19wdHIsCisrCQkJICAgICZoYXNfY2hpbGRy ZW4pOworKworKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChjb21wX3VuaXRfZGllLCBEV19BVF9zdG10 X2xpc3QsICZjdSk7CisrICBpZiAoYXR0cikKICsgICAgewotKyAgICAgIFRZUEVfUkFOR0VfREFU QSAocmFuZ2VfdHlwZSktPmhpZ2gua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfQkxPQ0s7 Ci0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+aGlnaC51LmR3YXJmX2Jsb2Nr ID0KLSsJCQkJCWR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsgICAg ICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKKysgICAgICB1bnNpZ25lZCBpbnQgbGlu ZV9vZmZzZXQgPSBEV19VTlNORCAoYXR0cik7CisrICAgICAgbGggPSBkd2FyZl9kZWNvZGVfbGlu ZV9oZWFkZXIgKGxpbmVfb2Zmc2V0LCBhYmZkLCAmY3UpOwogKyAgICB9Ci0rICBlbHNlIGlmIChh dHRyICYmIGlzX3JlZl9hdHRyIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRh KQorKyAgaWYgKGxoID09IE5VTEwpCiArICAgIHsKLSsgICAgICBzdHJ1Y3QgZGllX2luZm8gKnRh cmdldF9kaWU7Ci0rICAgICAgc3RydWN0IGR3YXJmMl9jdSAqdGFyZ2V0X2N1ID0gY3U7Ci0rICAg ICAgc3RydWN0IGF0dHJpYnV0ZSAqdGFyZ2V0X2xvY19hdHRyOworKyAgICAgIGRvX2NsZWFudXBz IChjbGVhbnVwcyk7CisrICAgICAgcmV0dXJuOworKyAgICB9CiArCi0rICAgICAgdGFyZ2V0X2Rp ZSA9IGZvbGxvd19kaWVfcmVmX29yX3NpZyAoZGllLCBhdHRyLCAmdGFyZ2V0X2N1KTsKLSsgICAg ICBnZGJfYXNzZXJ0ICh0YXJnZXRfY3UtPm9iamZpbGUgPT0gY3UtPm9iamZpbGUpOwotKyAgICAg IHRhcmdldF9sb2NfYXR0ciA9IGR3YXJmMl9hdHRyICh0YXJnZXRfZGllLCBEV19BVF9sb2NhdGlv biwgdGFyZ2V0X2N1KTsKKysgIGZpbmRfZmlsZV9hbmRfZGlyZWN0b3J5IChjb21wX3VuaXRfZGll LCAmY3UsICZuYW1lLCAmY29tcF9kaXIpOwogKwotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFu Z2VfdHlwZSktPmhpZ2gua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVDsKLSsg ICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLnUuZHdhcmZfbG9jbGlzdC5s b2NsaXN0Ci0rICAgICAgICA9IGR3YXJmMl9hdHRyX3RvX2xvY2xpc3RfYmF0b24gKHRhcmdldF9s b2NfYXR0ciwgdGFyZ2V0X2N1KTsKLSsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUp LT5oaWdoLnUuZHdhcmZfbG9jbGlzdC50eXBlCi0rICAgICAgICA9IGRpZV90eXBlICh0YXJnZXRf ZGllLCB0YXJnZXRfY3UpOwotKyAgICAgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOwot ICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLS0gICAgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwg RFdfQVRfY291bnQsIGN1KTsKLS0gICAgICBpZiAoYXR0cikKLSsgICAgICBMT05HRVNUIGhpZ2g7 CisrICB0aGlzX2N1LT52LnF1aWNrLT5saW5lcyA9IGxoOwogKwotKyAgICAgIGlmIChhdHRyICYm IGF0dHJfZm9ybV9pc19jb25zdGFudCAoYXR0cikpCi0rCWhpZ2ggPSBkd2FyZjJfZ2V0X2F0dHJf Y29uc3RhbnRfdmFsdWUgKGF0dHIsIDApOwotKyAgICAgIGVsc2UKLSAJewotLQkgIGludCBjb3Vu dCA9IGR3YXJmMl9nZXRfYXR0cl9jb25zdGFudF92YWx1ZSAoYXR0ciwgMSk7Ci0tCSAgaGlnaCA9 IGxvdyArIGNvdW50IC0gMTsKLSsJICBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90 eXBlKSA9IDE7Ci0rCSAgaGlnaCA9IGxvdyAtIDE7Ci0gCX0KLSsgICAgICBpZiAoIVRZUEVfVU5T SUdORUQgKGJhc2VfdHlwZSkgJiYgKGhpZ2ggJiBuZWdhdGl2ZV9tYXNrKSkKLSsJaGlnaCB8PSBu ZWdhdGl2ZV9tYXNrOwotKyAgICAgIFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkgPSBoaWdo OwotICAgICB9Ci0gCi0gICAvKiBEd2FyZi0yIHNwZWNpZmljYXRpb25zIGV4cGxpY2l0bHkgYWxs b3dzIHRvIGNyZWF0ZSBzdWJyYW5nZSB0eXBlcwotQEAgLTY0MjEsMjAgKzY2MDgsNDEgQEAgcmVh ZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCi0gCX0KLSAgICAgfQotIAotLSAgbmVnYXRpdmVfbWFzayA9Ci0tICAgIChMT05HRVNUKSAt MSA8PCAoVFlQRV9MRU5HVEggKGJhc2VfdHlwZSkgKiBUQVJHRVRfQ0hBUl9CSVQgLSAxKTsKLS0g IGlmICghVFlQRV9VTlNJR05FRCAoYmFzZV90eXBlKSAmJiAobG93ICYgbmVnYXRpdmVfbWFzaykp Ci0tICAgIGxvdyB8PSBuZWdhdGl2ZV9tYXNrOwotLSAgaWYgKCFUWVBFX1VOU0lHTkVEIChiYXNl X3R5cGUpICYmIChoaWdoICYgbmVnYXRpdmVfbWFzaykpCi0tICAgIGhpZ2ggfD0gbmVnYXRpdmVf bWFzazsKLSsgIC8qIERXX0FUX2JpdF9zdHJpZGUgaXMgY3VycmVudGx5IHVuc3VwcG9ydGVkIGFz IHdlIGNvdW50IGluIGJ5dGVzLiAgKi8KLSsgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19B VF9ieXRlX3N0cmlkZSwgY3UpOwotKyAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2Jsb2NrIChh dHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQorKyAgdGhpc19jdS0+di5xdWlj ay0+ZmlsZV9uYW1lcworKyAgICA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29i c3RhY2ssCisrCQkgICAgIGxoLT5udW1fZmlsZV9uYW1lcyAqIHNpemVvZiAoY2hhciAqKSk7Cisr ICBmb3IgKGkgPSAwOyBpIDwgbGgtPm51bV9maWxlX25hbWVzOyArK2kpCisrICAgIHRoaXNfY3Ut PnYucXVpY2stPmZpbGVfbmFtZXNbaV0gPSBmaWxlX2Z1bGxfbmFtZSAoaSArIDEsIGxoLCBjb21w X2Rpcik7CisrCisrICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworK30KKysKKysvKiBBIGhlbHBl ciBmb3IgdGhlICJxdWljayIgZnVuY3Rpb25zIHdoaWNoIGNvbXB1dGVzIGFuZCBjYWNoZXMgdGhl CisrICAgcmVhbCBwYXRoIGZvciBhIGdpdmVuIGZpbGUgbmFtZSBmcm9tIHRoZSBsaW5lIHRhYmxl LgorKyAgIGR3Ml9yZXF1aXJlX2xpbmVfaGVhZGVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZv cmUgdGhpcyBpcworKyAgIGludm9rZWQuICAqLworK3N0YXRpYyBjb25zdCBjaGFyICoKKytkdzJf cmVxdWlyZV9mdWxsX3BhdGggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorKwkJICAgICAgIHN0 cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1LAorKwkJICAgICAgIGludCBpbmRleCkKKyt7Cisr ICBpZiAoIWN1LT52LnF1aWNrLT5mdWxsX25hbWVzKQorKyAgICBjdS0+di5xdWljay0+ZnVsbF9u YW1lcworKyAgICAgID0gT0JTVEFDS19DQUxMT0MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ss CisrCQkJY3UtPnYucXVpY2stPmxpbmVzLT5udW1fZmlsZV9uYW1lcywKKysJCQlzaXplb2YgKGNo YXIgKikpOworKworKyAgaWYgKCFjdS0+di5xdWljay0+ZnVsbF9uYW1lc1tpbmRleF0pCisrICAg IGN1LT52LnF1aWNrLT5mdWxsX25hbWVzW2luZGV4XQorKyAgICAgID0gZ2RiX3JlYWxwYXRoIChj dS0+di5xdWljay0+ZmlsZV9uYW1lc1tpbmRleF0pOworKworKyAgcmV0dXJuIGN1LT52LnF1aWNr LT5mdWxsX25hbWVzW2luZGV4XTsKKyt9CisrCisrc3RhdGljIHN0cnVjdCBzeW10YWIgKgorK2R3 Ml9maW5kX2xhc3Rfc291cmNlX3N5bXRhYiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisrewor KyAgaW50IGluZGV4OworKyAgZHcyX3NldHVwIChvYmpmaWxlKTsKKysgIGluZGV4ID0gZHdhcmYy X3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHMgLSAxOworKyAgcmV0dXJuIGR3Ml9pbnN0YW50aWF0 ZV9zeW10YWIgKG9iamZpbGUsCisrCQkJCSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3Vu aXRzW2luZGV4XSk7CisrfQorKworK3N0YXRpYyB2b2lkCisrZHcyX2ZvcmdldF9jYWNoZWRfc291 cmNlX2luZm8gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorK3sKKysgIGludCBpOworKworKyAg ZHcyX3NldHVwIChvYmpmaWxlKTsKKysgIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVyX29iamZp bGUtPm5fY29tcF91bml0czsgKytpKQogKyAgICB7Ci0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChy YW5nZV90eXBlKS0+Ynl0ZV9zdHJpZGUua2luZAotKyAgICAgICAgPSBSQU5HRV9CT1VORF9LSU5E X0RXQVJGX0JMT0NLOwotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmJ5dGVf c3RyaWRlLnUuZHdhcmZfYmxvY2sgPQotKwkJCQkJZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRv biAoYXR0ciwgY3UpOwotKyAgICAgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOworKyAg ICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5h bGxfY29tcF91bml0c1tpXTsKKysKKysgICAgICBpZiAoY3UtPnYucXVpY2stPmZ1bGxfbmFtZXMp CisrCXsKKysJICBpbnQgajsKKysKKysJICBmb3IgKGogPSAwOyBqIDwgY3UtPnYucXVpY2stPmxp bmVzLT5udW1fZmlsZV9uYW1lczsgKytqKQorKwkgICAgeGZyZWUgKCh2b2lkICopIGN1LT52LnF1 aWNrLT5mdWxsX25hbWVzW2pdKTsKKysJfQogKyAgICB9Ci0rICBlbHNlIGlmIChhdHRyICYmIGlz X3JlZl9hdHRyIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQorK30KKysK KytzdGF0aWMgaW50CisrZHcyX2xvb2t1cF9zeW10YWIgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LCBjb25zdCBjaGFyICpuYW1lLAorKwkJICAgY29uc3QgY2hhciAqZnVsbF9wYXRoLCBjb25zdCBj aGFyICpyZWFsX3BhdGgsCisrCQkgICBzdHJ1Y3Qgc3ltdGFiICoqcmVzdWx0KQorK3sKKysgIGlu dCBpOworKyAgaW50IGNoZWNrX2Jhc2VuYW1lID0gbGJhc2VuYW1lIChuYW1lKSA9PSBuYW1lOwor KyAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqYmFzZV9jdSA9IE5VTEw7CisrCisrICBkdzJf c2V0dXAgKG9iamZpbGUpOworKyAgZm9yIChpID0gMDsgaSA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+ bl9jb21wX3VuaXRzOyArK2kpCiArICAgIHsKLSsgICAgICBzdHJ1Y3QgZGllX2luZm8gKnRhcmdl dF9kaWU7Ci0rICAgICAgc3RydWN0IGR3YXJmMl9jdSAqdGFyZ2V0X2N1ID0gY3U7Ci0rICAgICAg c3RydWN0IGF0dHJpYnV0ZSAqdGFyZ2V0X2xvY19hdHRyOwotIAotLSAgcmFuZ2VfdHlwZSA9IGNy ZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBiYXNlX3R5cGUsIGxvdywgaGlnaCk7Ci0rICAgICAgdGFy Z2V0X2RpZSA9IGZvbGxvd19kaWVfcmVmX29yX3NpZyAoZGllLCBhdHRyLCAmdGFyZ2V0X2N1KTsK LSsgICAgICBnZGJfYXNzZXJ0ICh0YXJnZXRfY3UtPm9iamZpbGUgPT0gY3UtPm9iamZpbGUpOwot KyAgICAgIHRhcmdldF9sb2NfYXR0ciA9IGR3YXJmMl9hdHRyICh0YXJnZXRfZGllLCBEV19BVF9s b2NhdGlvbiwgdGFyZ2V0X2N1KTsKLSAKLS0gIC8qIE1hcmsgYXJyYXlzIHdpdGggZHluYW1pYyBs ZW5ndGggYXQgbGVhc3QgYXMgYW4gYXJyYXkgb2YgdW5zcGVjaWZpZWQKLS0gICAgIGxlbmd0aC4g IEdEQiBjb3VsZCBjaGVjayB0aGUgYm91bmRhcnkgYnV0IGJlZm9yZSBpdCBnZXRzIGltcGxlbWVu dGVkIGF0Ci0tICAgICBsZWFzdCBhbGxvdyBhY2Nlc3NpbmcgdGhlIGFycmF5IGVsZW1lbnRzLiAg Ki8KLS0gIGlmIChhdHRyICYmIGF0dHItPmZvcm0gPT0gRFdfRk9STV9ibG9jazEpCi0tICAgIFRZ UEVfSElHSF9CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUpID0gMTsKLSsgICAgICBUWVBFX1JB TkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS5raW5kCi0rICAgICAgICA9IFJBTkdF X0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVDsKLSsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdl X3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJmX2xvY2xpc3QubG9jbGlzdAotKyAgICAgICAgPSBk d2FyZjJfYXR0cl90b19sb2NsaXN0X2JhdG9uICh0YXJnZXRfbG9jX2F0dHIsIHRhcmdldF9jdSk7 Ci0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2Fy Zl9sb2NsaXN0LnR5cGUKLSsgICAgICAgID0gZGllX3R5cGUgKHRhcmdldF9kaWUsIHRhcmdldF9j dSk7Ci0rICAgICAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7CisrICAgICAgaW50IGo7 CisrICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkd2FyZjJfcGVyX29iamZp bGUtPmFsbF9jb21wX3VuaXRzW2ldOworKworKyAgICAgIGlmIChjdS0+di5xdWljay0+c3ltdGFi KQorKwljb250aW51ZTsKKysKKysgICAgICBkdzJfcmVxdWlyZV9saW5lX2hlYWRlciAob2JqZmls ZSwgY3UpOworKyAgICAgIGlmICghY3UtPnYucXVpY2stPmxpbmVzKQorKwljb250aW51ZTsKKysK KysgICAgICBmb3IgKGogPSAwOyBqIDwgY3UtPnYucXVpY2stPmxpbmVzLT5udW1fZmlsZV9uYW1l czsgKytqKQorKwl7CisrCSAgY29uc3QgY2hhciAqdGhpc19uYW1lID0gY3UtPnYucXVpY2stPmZp bGVfbmFtZXNbal07CisrCisrCSAgaWYgKEZJTEVOQU1FX0NNUCAobmFtZSwgdGhpc19uYW1lKSA9 PSAwKQorKwkgICAgeworKwkgICAgICAqcmVzdWx0ID0gZHcyX2luc3RhbnRpYXRlX3N5bXRhYiAo b2JqZmlsZSwgY3UpOworKwkgICAgICByZXR1cm4gMTsKKysJICAgIH0KKysKKysJICBpZiAoY2hl Y2tfYmFzZW5hbWUgJiYgISBiYXNlX2N1CisrCSAgICAgICYmIEZJTEVOQU1FX0NNUCAobGJhc2Vu YW1lICh0aGlzX25hbWUpLCBuYW1lKSA9PSAwKQorKwkgICAgYmFzZV9jdSA9IGN1OworKworKwkg IGlmIChmdWxsX3BhdGggIT0gTlVMTCkKKysJICAgIHsKKysJICAgICAgY29uc3QgY2hhciAqdGhp c19mdWxsX25hbWUgPSBkdzJfcmVxdWlyZV9mdWxsX3BhdGggKG9iamZpbGUsCisrCQkJCQkJCQkg IGN1LCBqKTsKKysKKysJICAgICAgaWYgKHRoaXNfZnVsbF9uYW1lCisrCQkgICYmIEZJTEVOQU1F X0NNUCAoZnVsbF9wYXRoLCB0aGlzX2Z1bGxfbmFtZSkgPT0gMCkKKysJCXsKKysJCSAgKnJlc3Vs dCA9IGR3Ml9pbnN0YW50aWF0ZV9zeW10YWIgKG9iamZpbGUsIGN1KTsKKysJCSAgcmV0dXJuIDE7 CisrCQl9CisrCSAgICB9CisrCisrCSAgaWYgKHJlYWxfcGF0aCAhPSBOVUxMKQorKwkgICAgewor KwkgICAgICBjb25zdCBjaGFyICp0aGlzX2Z1bGxfbmFtZSA9IGR3Ml9yZXF1aXJlX2Z1bGxfcGF0 aCAob2JqZmlsZSwKKysJCQkJCQkJCSAgY3UsIGopOworKworKwkgICAgICBpZiAodGhpc19mdWxs X25hbWUgIT0gTlVMTCkKKysJCXsKKysJCSAgY2hhciAqcnAgPSBnZGJfcmVhbHBhdGggKHRoaXNf ZnVsbF9uYW1lKTsKKysJCSAgaWYgKHJwICE9IE5VTEwgJiYgRklMRU5BTUVfQ01QIChyZWFsX3Bh dGgsIHJwKSA9PSAwKQorKwkJICAgIHsKKysJCSAgICAgIHhmcmVlIChycCk7CisrCQkgICAgICAq cmVzdWx0ID0gZHcyX2luc3RhbnRpYXRlX3N5bXRhYiAob2JqZmlsZSwgY3UpOworKwkJICAgICAg cmV0dXJuIDE7CisrCQkgICAgfQorKwkJICB4ZnJlZSAocnApOworKwkJfQorKwkgICAgfQorKwl9 CiArICAgIH0KLSsgIGVsc2UgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRy KSkKKysKKysgIGlmIChiYXNlX2N1KQogKyAgICB7Ci0rICAgICAgVFlQRV9CWVRFX1NUUklERSAo cmFuZ2VfdHlwZSkgPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDApOwot KyAgICAgIGlmIChUWVBFX0JZVEVfU1RSSURFIChyYW5nZV90eXBlKSA9PSAwKQotKwljb21wbGFp bnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0rCQkgICBfKCJGb3VuZCBEV19BVF9ieXRlX3N0cmlk ZSB3aXRoIHVuc3VwcG9ydGVkIHZhbHVlIDAiKSk7CisrICAgICAgKnJlc3VsdCA9IGR3Ml9pbnN0 YW50aWF0ZV9zeW10YWIgKG9iamZpbGUsIGJhc2VfY3UpOworKyAgICAgIHJldHVybiAxOwogKyAg ICB9Ci0gCi0gICBuYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOwotICAgaWYgKG5hbWUpCi1A QCAtODcxNCwxMCArODkyMiwxMiBAQCB2YXJfZGVjb2RlX2xvY2F0aW9uIChzdHJ1Y3QgYXR0cmli dXRlICphdHRyLCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCi0gICAgICAoaS5lLiB3aGVuIHRoZSB2YWx1 ZSBvZiBhIHJlZ2lzdGVyIG9yIG1lbW9yeSBsb2NhdGlvbiBpcwotICAgICAgcmVmZXJlbmNlZCwg b3IgYSB0aHJlYWQtbG9jYWwgYmxvY2ssIGV0Yy4pLiAgVGhlbiBhZ2FpbiwgaXQgbWlnaHQKLSAg ICAgIG5vdCBiZSB3b3J0aHdoaWxlLiAgSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXNuJ3QgdW5sZXNz IHBlcmZvcm1hbmNlCi0tICAgICBvciBtZW1vcnkgbnVtYmVycyBzaG93IG1lIG90aGVyd2lzZS4g ICovCi0rICAgICBvciBtZW1vcnkgbnVtYmVycyBzaG93IG1lIG90aGVyd2lzZS4KLSsgICAgIAot KyAgICAgU1lNQk9MX0NMQVNTIG1heSBnZXQgb3ZlcnJpZGVuIGJ5IGR3YXJmMl9zeW1ib2xfbWFy a19jb21wdXRlZC4gICovCi0gCi0tICBkd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQgKGF0dHIs IHN5bSwgY3UpOwotICAgU1lNQk9MX0NMQVNTIChzeW0pID0gTE9DX0NPTVBVVEVEOwotKyAgZHdh cmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkIChhdHRyLCBzeW0sIGN1KTsKLSB9Ci0gCi0gLyogR2l2 ZW4gYSBwb2ludGVyIHRvIGEgRFdBUkYgaW5mb3JtYXRpb24gZW50cnksIGZpZ3VyZSBvdXQgaWYg d2UgbmVlZAotQEAgLTg3NDgsNiArODk1OCw4IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gCQkJCQkg ICAgIHNpemVvZiAoc3RydWN0IHN5bWJvbCkpOwotICAgICAgIE9CSlNUQVQgKG9iamZpbGUsIG5f c3ltcysrKTsKLSAgICAgICBtZW1zZXQgKHN5bSwgMCwgc2l6ZW9mIChzdHJ1Y3Qgc3ltYm9sKSk7 Ci0rICAgICAgLyogU29tZSBtZXRob2RzIGFyZSBjYWxsZWQgdy9vIGNoZWNraW5nIFNZTUJPTF9D T01QVVRFRF9PUFMgdmFsaWRpdHkuICAqLwotKyAgICAgIFNZTUJPTF9DT01QVVRFRF9PUFMgKHN5 bSkgPSAmZHdhcmYyX21pc3NpbmdfZnVuY3M7Ci0gCi0gICAgICAgLyogQ2FjaGUgdGhpcyBzeW1i b2wncyBuYW1lIGFuZCB0aGUgbmFtZSdzIGRlbWFuZ2xlZCBmb3JtIChpZiBhbnkpLiAgKi8KLSAg ICAgICBTWU1CT0xfTEFOR1VBR0UgKHN5bSkgPSBjdS0+bGFuZ3VhZ2U7Ci1AQCAtOTM3OSw2ICs5 NTkxLDkgQEAgcmVhZF90eXBlX2RpZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KQotICAgICAgIGJyZWFrOwotICAgICB9Ci0gCi0rICBpZiAodGhpc190eXBlKQot KyAgICBmaW5hbGl6ZV90eXBlICh0aGlzX3R5cGUpOwotKwotICAgcmV0dXJuIHRoaXNfdHlwZTsK LSB9Ci0gCi1AQCAtMTE5ODMsNjcgKzEyMTk4LDEwMiBAQCBhdHRyX2Zvcm1faXNfY29uc3RhbnQg KHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIpCi0gICAgIH0KLSB9Ci0gCi0tc3RhdGljIHZvaWQKLS1k d2FyZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVj dCBzeW1ib2wgKnN5bSwKLS0JCQkgICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotKy8qIENvbnZl cnQgRFdfQkxPQ0sgaW50byBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24uICBBVFRSIG11c3Qg YmUgYSBEV19CTE9DSwotKyAgIGF0dHJpYnV0ZSB0eXBlLiAgKi8KICsKLStzdGF0aWMgc3RydWN0 IGR3YXJmMl9sb2NleHByX2JhdG9uICoKLStkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChz dHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSB7Ci0tICBpZiAo YXR0cl9mb3JtX2lzX3NlY3Rpb25fb2Zmc2V0IChhdHRyKQotLSAgICAgIC8qICIuZGVidWdfbG9j IiBtYXkgbm90IGV4aXN0IGF0IGFsbCwgb3IgdGhlIG9mZnNldCBtYXkgYmUgb3V0c2lkZQotLQkg dGhlIHNlY3Rpb24uICBJZiBzbywgZmFsbCB0aHJvdWdoIHRvIHRoZSBjb21wbGFpbnQgaW4gdGhl Ci0tCSBvdGhlciBicmFuY2guICAqLwotLSAgICAgICYmIERXX1VOU05EIChhdHRyKSA8IGR3YXJm Ml9wZXJfb2JqZmlsZS0+bG9jLnNpemUpCi0tICAgIHsKLS0gICAgICBzdHJ1Y3QgZHdhcmYyX2xv Y2xpc3RfYmF0b24gKmJhdG9uOwotKyAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpiYXRv bjsKLSAKLS0gICAgICBiYXRvbiA9IG9ic3RhY2tfYWxsb2MgKCZjdS0+b2JqZmlsZS0+b2JqZmls ZV9vYnN0YWNrLAotLQkJCSAgICAgc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24p KTsKLS0gICAgICBiYXRvbi0+cGVyX2N1ID0gY3UtPnBlcl9jdTsKLS0gICAgICBnZGJfYXNzZXJ0 IChiYXRvbi0+cGVyX2N1KTsKLSsgIGdkYl9hc3NlcnQgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0 cikpOwotIAotLSAgICAgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKGR3YXJmMl9wZXJfb2JqZmlsZS0+ b2JqZmlsZSwKLS0JCQkgICAmZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2MpOwotKyAgYmF0b24gPSBv YnN0YWNrX2FsbG9jICgmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgc2l6ZW9mICgqYmF0 b24pKTsKLSsgIGJhdG9uLT5wZXJfY3UgPSBjdS0+cGVyX2N1OwotKyAgZ2RiX2Fzc2VydCAoYmF0 b24tPnBlcl9jdSk7Ci0gCi0tICAgICAgLyogV2UgZG9uJ3Qga25vdyBob3cgbG9uZyB0aGUgbG9j YXRpb24gbGlzdCBpcywgYnV0IG1ha2Ugc3VyZSB3ZQotLQkgZG9uJ3QgcnVuIG9mZiB0aGUgZWRn ZSBvZiB0aGUgc2VjdGlvbi4gICovCi0tICAgICAgYmF0b24tPnNpemUgPSBkd2FyZjJfcGVyX29i amZpbGUtPmxvYy5zaXplIC0gRFdfVU5TTkQgKGF0dHIpOwotLSAgICAgIGJhdG9uLT5kYXRhID0g ZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2MuYnVmZmVyICsgRFdfVU5TTkQgKGF0dHIpOwotLSAgICAg IGJhdG9uLT5iYXNlX2FkZHJlc3MgPSBjdS0+YmFzZV9hZGRyZXNzOwotLSAgICAgIGlmIChjdS0+ YmFzZV9rbm93biA9PSAwKQotLQljb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0tCQkg ICBfKCJMb2NhdGlvbiBsaXN0IHVzZWQgd2l0aG91dCBzcGVjaWZ5aW5nIHRoZSBDVSBiYXNlIGFk ZHJlc3MuIikpOwotKyAgLyogTm90ZSB0aGF0IHdlJ3JlIGp1c3QgY29weWluZyB0aGUgYmxvY2sn cyBkYXRhIHBvaW50ZXIKLSsgICAgIGhlcmUsIG5vdCB0aGUgYWN0dWFsIGRhdGEuICBXZSdyZSBz dGlsbCBwb2ludGluZyBpbnRvIHRoZQotKyAgICAgaW5mb19idWZmZXIgZm9yIFNZTSdzIG9iamZp bGU7IHJpZ2h0IG5vdyB3ZSBuZXZlciByZWxlYXNlCi0rICAgICB0aGF0IGJ1ZmZlciwgYnV0IHdo ZW4gd2UgZG8gY2xlYW4gdXAgcHJvcGVybHkgdGhpcyBtYXkKLSsgICAgIG5lZWQgdG8gY2hhbmdl LiAgKi8KLSsgIGJhdG9uLT5zaXplID0gRFdfQkxPQ0sgKGF0dHIpLT5zaXplOwotKyAgYmF0b24t PmRhdGEgPSBEV19CTE9DSyAoYXR0ciktPmRhdGE7Ci0rICBnZGJfYXNzZXJ0IChiYXRvbi0+c2l6 ZSA9PSAwIHx8IGJhdG9uLT5kYXRhICE9IE5VTEwpOworKyAgcmV0dXJuIDA7CisrfQogKwotKyAg cmV0dXJuIGJhdG9uOworK3N0YXRpYyBzdHJ1Y3Qgc3ltdGFiICoKKytkdzJfbG9va3VwX3N5bWJv bCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBibG9ja19pbmRleCwKKysJCSAgIGNvbnN0 IGNoYXIgKm5hbWUsIGRvbWFpbl9lbnVtIGRvbWFpbikKKyt7CisrICAvKiBXZSBkbyBhbGwgdGhl IHdvcmsgaW4gdGhlIHByZV9leHBhbmRfc3ltdGFic19tYXRjaGluZyBob29rCisrICAgICBpbnN0 ZWFkLiAgKi8KKysgIHJldHVybiBOVUxMOwogK30KLSAKLStzdGF0aWMgc3RydWN0IGR3YXJmMl9s b2NsaXN0X2JhdG9uICoKLStkd2FyZjJfYXR0cl90b19sb2NsaXN0X2JhdG9uIChzdHJ1Y3QgYXR0 cmlidXRlICphdHRyLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKysKKysvKiBBIGhlbHBlciBmdW5j dGlvbiB0aGF0IGV4cGFuZHMgYWxsIHN5bXRhYnMgdGhhdCBob2xkIGFuIG9iamVjdAorKyAgIG5h bWVkIE5BTUUuICAqLworK3N0YXRpYyB2b2lkCisrZHcyX2RvX2V4cGFuZF9zeW10YWJzX21hdGNo aW5nIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqbmFtZSkKICt7Ci0rICBz dHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmJhdG9uOworKyAgZHcyX3NldHVwIChvYmpmaWxl KTsKICsKLSsgIC8qIERXX0FUX2xvY2F0aW9uIG9mIHRoZSByZWZlcmVuY2VkIERJRSBtYXkgYmUg bWlzc2luZyBpZiB0aGUgcmVmZXJlbmNlZAotKyAgICAgdmFyaWFibGUgaGFzIGJlZW4gb3B0aW1p emVkIG91dC4gICovCi0rICBpZiAoIWF0dHIpCi0rICAgIHJldHVybiBOVUxMOworKyAgaWYgKGR3 YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUpCisrICAgIHsKKysgICAgICBvZmZzZXRfdHlw ZSAqdmVjOwogKwotKyAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5v YmpmaWxlLAotKwkJICAgICAgICZkd2FyZjJfcGVyX29iamZpbGUtPmxvYyk7CisrICAgICAgaWYg KGZpbmRfc2xvdF9pbl9tYXBwZWRfaGFzaCAoZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJs ZSwKKysJCQkJICAgIG5hbWUsICZ2ZWMpKQorKwl7CisrCSAgb2Zmc2V0X3R5cGUgaSwgbGVuID0g TUFZQkVfU1dBUCAoKnZlYyk7CisrCSAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKQorKwkgICAg eworKwkgICAgICBvZmZzZXRfdHlwZSBjdV9pbmRleCA9IE1BWUJFX1NXQVAgKHZlY1tpICsgMV0p OworKwkgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdTsKKysJICAgICAgY3UgPSBk d2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2N1X2luZGV4XTsKKysJICAgICAgZHcy X2luc3RhbnRpYXRlX3N5bXRhYiAob2JqZmlsZSwgY3UpOworKwkgICAgfQorKwl9CisrICAgIH0K Kyt9CiArCi0rICBpZiAoIShhdHRyX2Zvcm1faXNfc2VjdGlvbl9vZmZzZXQgKGF0dHIpCi0rCS8q ICIuZGVidWdfbG9jIiBtYXkgbm90IGV4aXN0IGF0IGFsbCwgb3IgdGhlIG9mZnNldCBtYXkgYmUg b3V0c2lkZQotKwkgICB0aGUgc2VjdGlvbi4gIElmIHNvLCBmYWxsIHRocm91Z2ggdG8gdGhlIGNv bXBsYWludCBpbiB0aGUKLSsJICAgb3RoZXIgYnJhbmNoLiAgKi8KLSsJJiYgRFdfVU5TTkQgKGF0 dHIpIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2Muc2l6ZSkpCi0rICAgIHJldHVybiBOVUxMOwor K3N0YXRpYyB2b2lkCisrZHcyX3ByZV9leHBhbmRfc3ltdGFic19tYXRjaGluZyAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsCisrCQkJCSBpbnQga2luZCwgY29uc3QgY2hhciAqbmFtZSwKKysJCQkJ IGRvbWFpbl9lbnVtIGRvbWFpbikKKyt7CisrICBkdzJfZG9fZXhwYW5kX3N5bXRhYnNfbWF0Y2hp bmcgKG9iamZpbGUsIG5hbWUpOworK30KICsKLSsgIGJhdG9uID0gb2JzdGFja19hbGxvYyAoJmN1 LT5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCi0rCQkJIHNpemVvZiAoc3RydWN0IGR3YXJmMl9s b2NsaXN0X2JhdG9uKSk7Ci0rICBiYXRvbi0+cGVyX2N1ID0gY3UtPnBlcl9jdTsKLSsgIGdkYl9h c3NlcnQgKGJhdG9uLT5wZXJfY3UpOworK3N0YXRpYyB2b2lkCisrZHcyX3ByaW50X3N0YXRzIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyt7CisrICBpbnQgaSwgY291bnQ7CiArCi0rICAvKiBX ZSBkb24ndCBrbm93IGhvdyBsb25nIHRoZSBsb2NhdGlvbiBsaXN0IGlzLCBidXQgbWFrZSBzdXJl IHdlCi0rICAgICBkb24ndCBydW4gb2ZmIHRoZSBlZGdlIG9mIHRoZSBzZWN0aW9uLiAgKi8KLSsg IGJhdG9uLT5zaXplID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2Muc2l6ZSAtIERXX1VOU05EIChh dHRyKTsKLSsgIGJhdG9uLT5kYXRhID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2MuYnVmZmVyICsg RFdfVU5TTkQgKGF0dHIpOwotKyAgYmF0b24tPmJhc2VfYWRkcmVzcyA9IGN1LT5iYXNlX2FkZHJl c3M7Ci0rICBpZiAoY3UtPmJhc2Vfa25vd24gPT0gMCkKLSsgICAgY29tcGxhaW50ICgmc3ltZmls ZV9jb21wbGFpbnRzLAotKwkgICAgICAgXygiTG9jYXRpb24gbGlzdCB1c2VkIHdpdGhvdXQgc3Bl Y2lmeWluZyB0aGUgQ1UgYmFzZSBhZGRyZXNzLiIpKTsKKysgIGR3Ml9zZXR1cCAob2JqZmlsZSk7 CisrICBjb3VudCA9IDA7CisrICBmb3IgKGkgPSAwOyBpIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5u X2NvbXBfdW5pdHM7ICsraSkKKysgICAgeworKyAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2Rh dGEgKmN1ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5hbGxfY29tcF91bml0c1tpXTsKICsKLSsgIHJl dHVybiBiYXRvbjsKKysgICAgICBpZiAoIWN1LT52LnF1aWNrLT5zeW10YWIpCisrCSsrY291bnQ7 CisrICAgIH0KKysgIHByaW50Zl9maWx0ZXJlZCAoXygiICBOdW1iZXIgb2YgdW5yZWFkIENVczog JWRcbiIpLCBjb3VudCk7CiArfQogKwotKy8qIFNZTSBtYXkgZ2V0IGl0cyBTWU1CT0xfQ0xBU1Mg b3ZlcnJpZGVuIG9uIGludmFsaWQgQVRUUiBjb250ZW50LiAgKi8KKytzdGF0aWMgdm9pZAorK2R3 Ml9kdW1wIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyt7CisrICAvKiBOb3RoaW5nIHdvcnRo IHByaW50aW5nLiAgKi8KKyt9CiArCiArc3RhdGljIHZvaWQKLStkd2FyZjJfc3ltYm9sX21hcmtf Y29tcHV0ZWQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKLSsJ CQkgICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorK2R3Ml9yZWxvY2F0ZSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKm5ld19vZmZzZXRzLAorKwkgICAg ICBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpkZWx0YSkKICt7Ci0rICBzdHJ1Y3QgZHdhcmYyX2xv Y2xpc3RfYmF0b24gKmxvY2xpc3RfYmF0b247CisrICAvKiBUaGVyZSdzIG5vdGhpbmcgdG8gcmVs b2NhdGUgaGVyZS4gICovCisrfQogKwotKyAgbG9jbGlzdF9iYXRvbiA9IGR3YXJmMl9hdHRyX3Rv X2xvY2xpc3RfYmF0b24gKGF0dHIsIGN1KTsKLSsgIGlmIChsb2NsaXN0X2JhdG9uKQorK3N0YXRp YyB2b2lkCisrZHcyX2V4cGFuZF9zeW10YWJzX2Zvcl9mdW5jdGlvbiAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsCisrCQkJCSBjb25zdCBjaGFyICpmdW5jX25hbWUpCisreworKyAgZHcyX2RvX2V4 cGFuZF9zeW10YWJzX21hdGNoaW5nIChvYmpmaWxlLCBmdW5jX25hbWUpOworK30KKysKKytzdGF0 aWMgdm9pZAorK2R3Ml9leHBhbmRfYWxsX3N5bXRhYnMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl KQorK3sKKysgIGludCBpOworKworKyAgZHcyX3NldHVwIChvYmpmaWxlKTsKKysgIGZvciAoaSA9 IDA7IGkgPCBkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0czsgKytpKQogKyAgICB7Ci0g ICAgICAgU1lNQk9MX0NPTVBVVEVEX09QUyAoc3ltKSA9ICZkd2FyZjJfbG9jbGlzdF9mdW5jczsK LS0gICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBiYXRvbjsKLSsgICAgICBTWU1C T0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBsb2NsaXN0X2JhdG9uOworKyAgICAgIHN0cnVjdCBk d2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5hbGxfY29tcF91bml0 c1tpXTsKKysKKysgICAgICBkdzJfaW5zdGFudGlhdGVfc3ltdGFiIChvYmpmaWxlLCBjdSk7CiAr ICAgIH0KLSsgIGVsc2UgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCisrfQorKworK3N0 YXRpYyB2b2lkCisrZHcyX2V4cGFuZF9zeW10YWJzX3dpdGhfZmlsZW5hbWUgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLAorKwkJCQkgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorK3sKKysgIGludCBp OworKworKyAgZHcyX3NldHVwIChvYmpmaWxlKTsKKysgIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJf cGVyX29iamZpbGUtPm5fY29tcF91bml0czsgKytpKQogKyAgICB7Ci0rICAgICAgU1lNQk9MX0NP TVBVVEVEX09QUyAoc3ltKSA9ICZkd2FyZjJfbG9jZXhwcl9mdW5jczsKLSsgICAgICBTWU1CT0xf TE9DQVRJT05fQkFUT04gKHN5bSkgPSBkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChhdHRy LCBjdSk7Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAgewotLSAgICAgIHN0cnVjdCBkd2FyZjJfbG9j ZXhwcl9iYXRvbiAqYmF0b247Ci0rICAgICAgZHdhcmYyX2ludmFsaWRfYXR0cmliX2NsYXNzX2Nv bXBsYWludCAoImxvY2F0aW9uIGRlc2NyaXB0aW9uIiwKLSsJCQkJCSAgICAgU1lNQk9MX05BVFVS QUxfTkFNRSAoc3ltKSk7Ci0gCi0tICAgICAgYmF0b24gPSBvYnN0YWNrX2FsbG9jICgmY3UtPm9i amZpbGUtPm9iamZpbGVfb2JzdGFjaywKLS0JCQkgICAgIHNpemVvZiAoc3RydWN0IGR3YXJmMl9s b2NleHByX2JhdG9uKSk7Ci0tICAgICAgYmF0b24tPnBlcl9jdSA9IGN1LT5wZXJfY3U7Ci0tICAg ICAgZ2RiX2Fzc2VydCAoYmF0b24tPnBlcl9jdSk7Ci0rICAgICAgLyogU29tZSBtZXRob2RzIGFy ZSBjYWxsZWQgdy9vIGNoZWNraW5nIFNZTUJPTF9DT01QVVRFRF9PUFMgdmFsaWRpdHkuICAqLwot IAotLSAgICAgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQotLQl7Ci0tCSAgLyogTm90 ZSB0aGF0IHdlJ3JlIGp1c3QgY29weWluZyB0aGUgYmxvY2sncyBkYXRhIHBvaW50ZXIKLS0JICAg ICBoZXJlLCBub3QgdGhlIGFjdHVhbCBkYXRhLiAgV2UncmUgc3RpbGwgcG9pbnRpbmcgaW50byB0 aGUKLS0JICAgICBpbmZvX2J1ZmZlciBmb3IgU1lNJ3Mgb2JqZmlsZTsgcmlnaHQgbm93IHdlIG5l dmVyIHJlbGVhc2UKLS0JICAgICB0aGF0IGJ1ZmZlciwgYnV0IHdoZW4gd2UgZG8gY2xlYW4gdXAg cHJvcGVybHkgdGhpcyBtYXkKLS0JICAgICBuZWVkIHRvIGNoYW5nZS4gICovCi0tCSAgYmF0b24t PnNpemUgPSBEV19CTE9DSyAoYXR0ciktPnNpemU7Ci0tCSAgYmF0b24tPmRhdGEgPSBEV19CTE9D SyAoYXR0ciktPmRhdGE7Ci0tCX0KLS0gICAgICBlbHNlCi0tCXsKLS0JICBkd2FyZjJfaW52YWxp ZF9hdHRyaWJfY2xhc3NfY29tcGxhaW50ICgibG9jYXRpb24gZGVzY3JpcHRpb24iLAotLQkJCQkJ CSBTWU1CT0xfTkFUVVJBTF9OQU1FIChzeW0pKTsKLS0JICBiYXRvbi0+c2l6ZSA9IDA7Ci0tCSAg YmF0b24tPmRhdGEgPSBOVUxMOwotLQl9Ci0rICAgICAgU1lNQk9MX0NPTVBVVEVEX09QUyAoc3lt KSA9ICZkd2FyZjJfbWlzc2luZ19mdW5jczsKLSsgICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04g KHN5bSkgPSBOVUxMOwotIAotLSAgICAgIFNZTUJPTF9DT01QVVRFRF9PUFMgKHN5bSkgPSAmZHdh cmYyX2xvY2V4cHJfZnVuY3M7Ci0tICAgICAgU1lNQk9MX0xPQ0FUSU9OX0JBVE9OIChzeW0pID0g YmF0b247Ci0rICAgICAgLyogRm9yIGZ1bmN0aW9ucyBhIG1pc3NpbmcgRFdfQVRfZnJhbWVfYmFz ZSBkb2VzIG5vdCBvcHRpbWl6ZSBvdXQgdGhlCi0rCSB3aG9sZSBmdW5jdGlvbiBkZWZpbml0aW9u LCBvbmx5IGl0cyBmcmFtZSBiYXNlIHJlc29sdmluZy4gICovCi0rICAgICAgaWYgKGF0dHItPm5h bWUgPT0gRFdfQVRfbG9jYXRpb24pCi0rCVNZTUJPTF9DTEFTUyAoc3ltKSA9IExPQ19PUFRJTUla RURfT1VUOwotICAgICB9Ci0gfQotIAotQEAgLTEyMzcyLDYgKzEyNjIyLDMxIEBAIG9mZnNldF9h bmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKQot ICAgcmV0dXJuIG9mc19saHMtPm9mZnNldCA9PSBvZnNfcmhzLT5vZmZzZXQ7Ci0gfQotIAotKy8q IEZpbGwgaW4gZ2VuZXJpYyBhdHRyaWJ1dGVzIGFwcGxpY2FibGUgZm9yIHR5cGUgRElFcy4gICov CisrICAgICAgaW50IGo7CisrICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBk d2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2ldOwogKwotK3N0YXRpYyB2b2lkCi0r ZmV0Y2hfZGllX3R5cGVfYXR0cnMgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAq dHlwZSwKLSsJCSAgICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorKyAgICAgIGlmIChjdS0+di5x dWljay0+c3ltdGFiKQorKwljb250aW51ZTsKKysKKysgICAgICBkdzJfcmVxdWlyZV9saW5lX2hl YWRlciAob2JqZmlsZSwgY3UpOworKyAgICAgIGlmICghY3UtPnYucXVpY2stPmxpbmVzKQorKwlj b250aW51ZTsKKysKKysgICAgICBmb3IgKGogPSAwOyBqIDwgY3UtPnYucXVpY2stPmxpbmVzLT5u dW1fZmlsZV9uYW1lczsgKytqKQorKwl7CisrCSAgY29uc3QgY2hhciAqdGhpc19uYW1lID0gY3Ut PnYucXVpY2stPmZpbGVfbmFtZXNbal07CisrCSAgaWYgKHN0cmNtcCAodGhpc19uYW1lLCBmaWxl bmFtZSkgPT0gMCkKKysJICAgIHsKKysJICAgICAgZHcyX2luc3RhbnRpYXRlX3N5bXRhYiAob2Jq ZmlsZSwgY3UpOworKwkgICAgICBicmVhazsKKysJICAgIH0KKysJfQorKyAgICB9CisrfQorKwor K3N0YXRpYyBjb25zdCBjaGFyICoKKytkdzJfZmluZF9zeW1ib2xfZmlsZSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKm5hbWUpCiArewotKyAgc3RydWN0IGF0dHJpYnV0ZSAq YXR0cjsKKysgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1OworKyAgb2Zmc2V0X3R5cGUg KnZlYzsKICsKLSsgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9kYXRhX2xvY2F0aW9u LCBjdSk7Ci0rICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKLSsgICAgVFlQRV9EQVRB X0xPQ0FUSU9OX0RXQVJGX0JMT0NLICh0eXBlKSA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0 b24gKGF0dHIsCi0rCQkJCQkJCQkJICBjdSk7Ci0rICBnZGJfYXNzZXJ0ICghVFlQRV9EQVRBX0xP Q0FUSU9OX0lTX0FERFIgKHR5cGUpKTsKKysgIGR3Ml9zZXR1cCAob2JqZmlsZSk7CiArCi0rICBh dHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfYWxsb2NhdGVkLCBjdSk7Ci0rICBpZiAoYXR0 cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKLSsgICAgVFlQRV9BTExPQ0FURUQgKHR5cGUpID0gZHdh cmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOwotKyAgZ2RiX2Fzc2VydCAoIVRZ UEVfTk9UX0FMTE9DQVRFRCAodHlwZSkpOworKyAgaWYgKCFkd2FyZjJfcGVyX29iamZpbGUtPmlu ZGV4X3RhYmxlKQorKyAgICByZXR1cm4gTlVMTDsKICsKLSsgIGF0dHIgPSBkd2FyZjJfYXR0ciAo ZGllLCBEV19BVF9hc3NvY2lhdGVkLCBjdSk7Ci0rICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChh dHRyKSkKLSsgICAgVFlQRV9BU1NPQ0lBVEVEICh0eXBlKSA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4 cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsgIGdkYl9hc3NlcnQgKCFUWVBFX05PVF9BU1NPQ0lBVEVE ICh0eXBlKSk7Ci0rfQorKyAgaWYgKCFmaW5kX3Nsb3RfaW5fbWFwcGVkX2hhc2ggKGR3YXJmMl9w ZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUsCisrCQkJCSBuYW1lLCAmdmVjKSkKKysgICAgcmV0dXJu IE5VTEw7CiArCi0gLyogU2V0IHRoZSB0eXBlIGFzc29jaWF0ZWQgd2l0aCBESUUgdG8gVFlQRS4g IFNhdmUgaXQgaW4gQ1UncyBoYXNoCi0gICAgdGFibGUgaWYgbmVjZXNzYXJ5LiAgRm9yIGNvbnZl bmllbmNlLCByZXR1cm4gVFlQRS4KLSAKLUBAIC0xMjM5NSw2ICsxMjY3MCw4IEBAIHNldF9kaWVf dHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKLSB7Ci0gICBzdHJ1Y3QgZHdhcmYyX29mZnNldF9hbmRfdHlwZSAqKnNsb3Qs IG9mczsKLSAKLSsgIGZldGNoX2RpZV90eXBlX2F0dHJzIChkaWUsIHR5cGUsIGN1KTsKKysgIC8q IE5vdGUgdGhhdCB0aGlzIGp1c3QgbG9va3MgYXQgdGhlIHZlcnkgZmlyc3Qgb25lIG5hbWVkIE5B TUUgLS0gYnV0CisrICAgICBhY3R1YWxseSB3ZSBhcmUgbG9va2luZyBmb3IgYSBmdW5jdGlvbi4g IGZpbmRfbWFpbl9maWxlbmFtZQorKyAgICAgc2hvdWxkIGJlIHJld3JpdHRlbiBzbyB0aGF0IGl0 IGRvZXNuJ3QgcmVxdWlyZSBhIGN1c3RvbSBob29rLiAgSXQKKysgICAgIGNvdWxkIGp1c3QgdXNl IHRoZSBvcmRpbmFyeSBzeW1ib2wgdGFibGVzLiAgKi8KKysgIC8qIHZlY1swXSBpcyB0aGUgbGVu Z3RoLCB3aGljaCBtdXN0IGFsd2F5cyBiZSA+MC4gICovCisrICBjdSA9IGR3YXJmMl9wZXJfb2Jq ZmlsZS0+YWxsX2NvbXBfdW5pdHNbTUFZQkVfU1dBUCAodmVjWzFdKV07CiArCi0gICAvKiBGb3Ig QWRhIHR5cGVzLCBtYWtlIHN1cmUgdGhhdCB0aGUgZ25hdC1zcGVjaWZpYyBkYXRhIGlzIGFsd2F5 cwotICAgICAgaW5pdGlhbGl6ZWQgKGlmIG5vdCBhbHJlYWR5IHNldCkuICBUaGVyZSBhcmUgYSBm ZXcgdHlwZXMgd2hlcmUKLSAgICAgIHdlIHNob3VsZCBub3QgYmUgZG9pbmcgc28sIGJlY2F1c2Ug dGhlIHR5cGUtc3BlY2lmaWMgYXJlYSBpcwotZGlmZiAtLWdpdCBhL2dkYi9lbGZyZWFkLmMgYi9n ZGIvZWxmcmVhZC5jCi1pbmRleCA4YzAwOTM4Li40YWExZjNmIDEwMDY0NAotLS0tIGEvZ2RiL2Vs ZnJlYWQuYwotKysrIGIvZ2RiL2VsZnJlYWQuYwotQEAgLTM3LDYgKzM3LDcgQEAKLSAjaW5jbHVk ZSAiY29tcGxhaW50cy5oIgotICNpbmNsdWRlICJkZW1hbmdsZS5oIgotICNpbmNsdWRlICJwc3lt cHJpdi5oIgotKyNpbmNsdWRlICJnZGJ0eXBlcy5oIgotIAotIGV4dGVybiB2b2lkIF9pbml0aWFs aXplX2VsZnJlYWQgKHZvaWQpOwotIAotQEAgLTE4MCw3ICsxODEsOCBAQCByZWNvcmRfbWluaW1h bF9zeW1ib2wgKGNvbnN0IGNoYXIgKm5hbWUsIGludCBuYW1lX2xlbiwgaW50IGNvcHlfbmFtZSwK LSB7Ci0gICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZp bGUpOwotIAotLSAgaWYgKG1zX3R5cGUgPT0gbXN0X3RleHQgfHwgbXNfdHlwZSA9PSBtc3RfZmls ZV90ZXh0KQotKyAgaWYgKG1zX3R5cGUgPT0gbXN0X3RleHQgfHwgbXNfdHlwZSA9PSBtc3RfZmls ZV90ZXh0Ci0rICAgICAgfHwgbXNfdHlwZSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmMpCi0gICAgIGFk ZHJlc3MgPSBnZGJhcmNoX3NtYXNoX3RleHRfYWRkcmVzcyAoZ2RiYXJjaCwgYWRkcmVzcyk7Ci0g Ci0gICByZXR1cm4gcHJpbV9yZWNvcmRfbWluaW1hbF9zeW1ib2xfZnVsbCAobmFtZSwgbmFtZV9s ZW4sIGNvcHlfbmFtZSwgYWRkcmVzcywKLUBAIC0zODgsNyArMzkwLDEwIEBAIGVsZl9zeW10YWJf cmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCB0eXBlLAotIAkgICAgewotIAkgICAg ICBpZiAoc3ltLT5mbGFncyAmIChCU0ZfR0xPQkFMIHwgQlNGX1dFQUspKQotIAkJewotLQkJICBt c190eXBlID0gbXN0X3RleHQ7Ci0rCQkgIGlmIChzeW0tPmZsYWdzICYgQlNGX0dOVV9JTkRJUkVD VF9GVU5DVElPTikKLSsJCSAgICBtc190eXBlID0gbXN0X3RleHRfZ251X2lmdW5jOwotKwkJICBl bHNlCi0rCQkgICAgbXNfdHlwZSA9IG1zdF90ZXh0OwotIAkJfQotIAkgICAgICBlbHNlIGlmICgo c3ltLT5uYW1lWzBdID09ICcuJyAmJiBzeW0tPm5hbWVbMV0gPT0gJ0wnKQotIAkJICAgICAgIHx8 ICgoc3ltLT5mbGFncyAmIEJTRl9MT0NBTCkKLUBAIC01NjksNiArNTc0LDI1MCBAQCBlbGZfc3lt dGFiX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgdHlwZSwKLSAgICAgfQotIH0K LSAKLSsvKiBGSVhNRTogRGVsYXkgaXQgdGhyb3VnaCBlbGZfc3ltX2Zucy4gICovCisrICBkdzJf cmVxdWlyZV9saW5lX2hlYWRlciAob2JqZmlsZSwgY3UpOworKyAgaWYgKCFjdS0+di5xdWljay0+ bGluZXMpCisrICAgIHJldHVybiBOVUxMOworKworKyAgcmV0dXJuIGN1LT52LnF1aWNrLT5maWxl X25hbWVzW2N1LT52LnF1aWNrLT5saW5lcy0+bnVtX2ZpbGVfbmFtZXMgLSAxXTsKKyt9CiArCiAr c3RhdGljIHZvaWQKLStlbGZfcmVsX3BsdF9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg YXN5bWJvbCAqKmR5bl9zeW1ib2xfdGFibGUpCisrZHcyX21hcF9hZGFfc3ltdGFicyAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUsCisrCQkgICAgIGludCAoKndpbGRfbWF0Y2gpIChjb25zdCBjaGFy ICosIGludCwgY29uc3QgY2hhciAqKSwKKysJCSAgICAgaW50ICgqaXNfbmFtZV9zdWZmaXgpIChj b25zdCBjaGFyICopLAorKwkJICAgICB2b2lkICgqY2FsbGJhY2spIChzdHJ1Y3Qgb2JqZmlsZSAq LAorKwkJCQkgICAgICAgc3RydWN0IHN5bXRhYiAqLCB2b2lkICopLAorKwkJICAgICBjb25zdCBj aGFyICpuYW1lLCBpbnQgZ2xvYmFsLAorKwkJICAgICBkb21haW5fZW51bSBuYW1lc3BhY2UsIGlu dCB3aWxkLAorKwkJICAgICB2b2lkICpkYXRhKQogK3sKLSsgIGJmZCAqb2JmZCA9IG9iamZpbGUt Pm9iZmQ7Ci0rICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVkID0gZ2V0X2VsZl9i YWNrZW5kX2RhdGEgKG9iZmQpOwotKyAgYXNlY3Rpb24gKnBsdCwgKnJlbHBsdCwgKmdvdF9wbHQ7 Ci0rICB1bnNpZ25lZCB1OwotKyAgaW50IHBsdF9lbGZfaWR4OwotKyAgYmZkX3NpemVfdHlwZSBy ZWxvY19jb3VudCwgcmVsb2M7Ci0rICBjaGFyICpzdHJpbmdfYnVmZmVyID0gTlVMTDsKLSsgIHNp emVfdCBzdHJpbmdfYnVmZmVyX3NpemUgPSAwOwotKyAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87 Ci0rICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IG9iamZpbGUtPmdkYmFyY2g7Ci0rICBzdHJ1 Y3QgdHlwZSAqcHRyX3R5cGUgPSBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2RhdGFf cHRyOwotKyAgc2l6ZV90IHB0cl9zaXplID0gVFlQRV9MRU5HVEggKHB0cl90eXBlKTsKKysgIC8q IEZvciBub3csIHdlIGRvbid0IHN1cHBvcnQgQWRhLCBzbyB0aGlzIGZ1bmN0aW9uIGNhbid0IGJl CisrICAgICByZWFjaGVkLiAgKi8KKysgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5F X18sCisrCQkgIF8oIm1hcF9hZGFfc3ltdGFicyBjYWxsZWQgdmlhIGluZGV4IG1ldGhvZCIpKTsK Kyt9CiArCi0rICBpZiAob2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZV9iYWNrbGluaykK LSsgICAgcmV0dXJuOworK3N0YXRpYyB2b2lkCisrZHcyX2V4cGFuZF9zeW10YWJzX21hdGNoaW5n IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKysJCQkgICAgIGludCAoKmZpbGVfbWF0Y2hlcikg KGNvbnN0IGNoYXIgKiwgdm9pZCAqKSwKKysJCQkgICAgIGludCAoKm5hbWVfbWF0Y2hlcikgKGNv bnN0IGNoYXIgKiwgdm9pZCAqKSwKKysJCQkgICAgIGRvbWFpbl9lbnVtIGtpbmQsCisrCQkJICAg ICB2b2lkICpkYXRhKQorK3sKKysgIGludCBpOworKyAgb2Zmc2V0X3R5cGUgaXRlcjsKICsKLSsg IHBsdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChvYmZkLCAiLnBsdCIpOwotKyAgaWYgKHBs dCA9PSBOVUxMKQorKyAgZHcyX3NldHVwIChvYmpmaWxlKTsKKysgIGlmICghZHdhcmYyX3Blcl9v YmpmaWxlLT5pbmRleF90YWJsZSkKICsgICAgcmV0dXJuOwotKyAgcGx0X2VsZl9pZHggPSBlbGZf c2VjdGlvbl9kYXRhIChwbHQpLT50aGlzX2lkeDsKICsKLSsgIGdvdF9wbHQgPSBiZmRfZ2V0X3Nl Y3Rpb25fYnlfbmFtZSAob2JmZCwgIi5nb3QucGx0Iik7Ci0rICBpZiAoZ290X3BsdCA9PSBOVUxM KQotKyAgICByZXR1cm47CisrICBmb3IgKGkgPSAwOyBpIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5u X2NvbXBfdW5pdHM7ICsraSkKKysgICAgeworKyAgICAgIGludCBqOworKyAgICAgIHN0cnVjdCBk d2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5hbGxfY29tcF91bml0 c1tpXTsKICsKLSsgIC8qIFRoaXMgc2VhcmNoIGFsZ29yaXRobSBpcyBmcm9tIF9iZmRfZWxmX2Nh bm9uaWNhbGl6ZV9keW5hbWljX3JlbG9jLiAgKi8KLSsgIGZvciAocmVscGx0ID0gb2JmZC0+c2Vj dGlvbnM7IHJlbHBsdCAhPSBOVUxMOyByZWxwbHQgPSByZWxwbHQtPm5leHQpCi0rICAgIGlmIChl bGZfc2VjdGlvbl9kYXRhIChyZWxwbHQpLT50aGlzX2hkci5zaF9pbmZvID09IHBsdF9lbGZfaWR4 Ci0rCSYmIChlbGZfc2VjdGlvbl9kYXRhIChyZWxwbHQpLT50aGlzX2hkci5zaF90eXBlID09IFNI VF9SRUwKLSsJICAgIHx8IGVsZl9zZWN0aW9uX2RhdGEgKHJlbHBsdCktPnRoaXNfaGRyLnNoX3R5 cGUgPT0gU0hUX1JFTEEpKQotKyAgICAgIGJyZWFrOwotKyAgaWYgKHJlbHBsdCA9PSBOVUxMKQot KyAgICByZXR1cm47CisrICAgICAgY3UtPnYucXVpY2stPm1hcmsgPSAwOworKyAgICAgIGlmIChj dS0+di5xdWljay0+c3ltdGFiKQorKwljb250aW51ZTsKICsKLSsgIGlmICghIGJlZC0+cy0+c2x1 cnBfcmVsb2NfdGFibGUgKG9iZmQsIHJlbHBsdCwgZHluX3N5bWJvbF90YWJsZSwgVFJVRSkpCi0r ICAgIHJldHVybjsKKysgICAgICBkdzJfcmVxdWlyZV9saW5lX2hlYWRlciAob2JqZmlsZSwgY3Up OworKyAgICAgIGlmICghY3UtPnYucXVpY2stPmxpbmVzKQorKwljb250aW51ZTsKICsKLSsgIGJh Y2tfdG8gPSBtYWtlX2NsZWFudXAgKGZyZWVfY3VycmVudF9jb250ZW50cywgJnN0cmluZ19idWZm ZXIpOworKyAgICAgIGZvciAoaiA9IDA7IGogPCBjdS0+di5xdWljay0+bGluZXMtPm51bV9maWxl X25hbWVzOyArK2opCisrCXsKKysJICBpZiAoZmlsZV9tYXRjaGVyIChjdS0+di5xdWljay0+Zmls ZV9uYW1lc1tqXSwgZGF0YSkpCisrCSAgICB7CisrCSAgICAgIGN1LT52LnF1aWNrLT5tYXJrID0g MTsKKysJICAgICAgYnJlYWs7CisrCSAgICB9CisrCX0KKysgICAgfQogKwotKyAgcmVsb2NfY291 bnQgPSByZWxwbHQtPnNpemUgLyBlbGZfc2VjdGlvbl9kYXRhIChyZWxwbHQpLT50aGlzX2hkci5z aF9lbnRzaXplOwotKyAgZm9yIChyZWxvYyA9IDA7IHJlbG9jIDwgcmVsb2NfY291bnQ7IHJlbG9j KyspCisrICBmb3IgKGl0ZXIgPSAwOworKyAgICAgICBpdGVyIDwgZHdhcmYyX3Blcl9vYmpmaWxl LT5pbmRleF90YWJsZS0+aW5kZXhfdGFibGVfc2xvdHM7CisrICAgICAgICsraXRlcikKICsgICAg ewotKyAgICAgIGNvbnN0IGNoYXIgKm5hbWUsICpuYW1lX2dvdF9wbHQ7Ci0rICAgICAgc3RydWN0 IG1pbmltYWxfc3ltYm9sICptc3ltOwotKyAgICAgIENPUkVfQUREUiBhZGRyZXNzOwotKyAgICAg IGNvbnN0IGNoYXIgKnN1ZmZpeCA9ICJAZ290LnBsdCI7Ci0rICAgICAgc2l6ZV90IHN1ZmZpeF9s ZW4gPSBzdHJsZW4gKHN1ZmZpeCk7Ci0rICAgICAgc2l6ZV90IG5hbWVfbGVuOworKyAgICAgIG9m ZnNldF90eXBlIGlkeCA9IDIgKiBpdGVyOworKyAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CisrICAg ICAgb2Zmc2V0X3R5cGUgKnZlYywgdmVjX2xlbiwgdmVjX2lkeDsKICsKLSsgICAgICBuYW1lID0g YmZkX2FzeW1ib2xfbmFtZSAoKnJlbHBsdC0+cmVsb2NhdGlvbltyZWxvY10uc3ltX3B0cl9wdHIp OwotKyAgICAgIG5hbWVfbGVuID0gc3RybGVuIChuYW1lKTsKLSsgICAgICBhZGRyZXNzID0gcmVs cGx0LT5yZWxvY2F0aW9uW3JlbG9jXS5hZGRyZXNzOwotKwotKyAgICAgIC8qIERvZXMgdGhlIHBv aW50ZXIgcmVzaWRlIGluIHRoZSAuZ290LnBsdCBzZWN0aW9uPyAgKi8KLSsgICAgICBpZiAoIShi ZmRfZ2V0X3NlY3Rpb25fdm1hIChvYmZkLCBnb3RfcGx0KSA8PSBhZGRyZXNzCi0rICAgICAgICAg ICAgJiYgYWRkcmVzcyA8IGJmZF9nZXRfc2VjdGlvbl92bWEgKG9iZmQsIGdvdF9wbHQpCi0rCQkJ ICsgYmZkX2dldF9zZWN0aW9uX3NpemUgKGdvdF9wbHQpKSkKKysgICAgICBpZiAoZHdhcmYyX3Bl cl9vYmpmaWxlLT5pbmRleF90YWJsZS0+aW5kZXhfdGFibGVbaWR4XSA9PSAwCisrCSAgJiYgZHdh cmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZS0+aW5kZXhfdGFibGVbaWR4ICsgMV0gPT0gMCkK ICsJY29udGludWU7CiArCi0rICAgICAgLyogV2UgY2Fubm90IGNoZWNrIGlmIE5BTUUgaXMgYSBy ZWZlcmVuY2UgdG8gbXN0X3RleHRfZ251X2lmdW5jIGFzIGluCi0rCSBPQkpGSUxFIHRoZSBzeW1i b2wgaXMgdW5kZWZpbmVkIGFuZCB0aGUgb2JqZmlsZSBoYXZpbmcgTkFNRSBkZWZpbmVkCi0rCSBt YXkgbm90IHlldCBoYXZlIGJlZW4gbG9hZGVkLiAgKi8KKysgICAgICBuYW1lID0gKGR3YXJmMl9w ZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUtPmNvbnN0YW50X3Bvb2wKKysJICAgICAgKyBkd2FyZjJf cGVyX29iamZpbGUtPmluZGV4X3RhYmxlLT5pbmRleF90YWJsZVtpZHhdKTsKICsKLSsgICAgICBp ZiAoc3RyaW5nX2J1ZmZlcl9zaXplIDwgbmFtZV9sZW4gKyBzdWZmaXhfbGVuKQorKyAgICAgIGlm ICghICgqbmFtZV9tYXRjaGVyKSAobmFtZSwgZGF0YSkpCisrCWNvbnRpbnVlOworKworKyAgICAg IC8qIFRoZSBuYW1lIHdhcyBtYXRjaGVkLCBub3cgZXhwYW5kIGNvcnJlc3BvbmRpbmcgQ1VzIHRo YXQgd2VyZQorKwkgbWFya2VkLiAgKi8KKysgICAgICB2ZWMgPSAob2Zmc2V0X3R5cGUgKikgKGR3 YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUtPmNvbnN0YW50X3Bvb2wKKysJCQkgICAgICsg ZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZS0+aW5kZXhfdGFibGVbaWR4ICsgMV0pOwor KyAgICAgIHZlY19sZW4gPSBNQVlCRV9TV0FQICh2ZWNbMF0pOworKyAgICAgIGZvciAodmVjX2lk eCA9IDA7IHZlY19pZHggPCB2ZWNfbGVuOyArK3ZlY19pZHgpCiArCXsKLSsJICBzdHJpbmdfYnVm ZmVyX3NpemUgPSAyICogKG5hbWVfbGVuICsgc3VmZml4X2xlbik7Ci0rCSAgc3RyaW5nX2J1ZmZl ciA9IHhyZWFsbG9jIChzdHJpbmdfYnVmZmVyLCBzdHJpbmdfYnVmZmVyX3NpemUpOworKwkgIHN0 cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1CisrCSAgICA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+ YWxsX2NvbXBfdW5pdHNbTUFZQkVfU1dBUCAodmVjW3ZlY19pZHggKyAxXSldOworKwkgIGlmIChj dS0+di5xdWljay0+bWFyaykKKysJICAgIGR3Ml9pbnN0YW50aWF0ZV9zeW10YWIgKG9iamZpbGUs IGN1KTsKICsJfQotKyAgICAgIG1lbWNweSAoc3RyaW5nX2J1ZmZlciwgbmFtZSwgbmFtZV9sZW4p OwotKyAgICAgIG1lbWNweSAoJnN0cmluZ19idWZmZXJbbmFtZV9sZW5dLCBzdWZmaXgsIHN1ZmZp eF9sZW4pOwotKwotKyAgICAgIG1zeW0gPSByZWNvcmRfbWluaW1hbF9zeW1ib2wgKHN0cmluZ19i dWZmZXIsIG5hbWVfbGVuICsgc3VmZml4X2xlbiwgMSwKLSsJCQkJICAgIGFkZHJlc3MsIG1zdF9z bG90X2dvdF9wbHQsIGdvdF9wbHQsCi0rCQkJCSAgICBvYmpmaWxlKTsKLSsgICAgICBpZiAobXN5 bSkKLSsJTVNZTUJPTF9TSVpFIChtc3ltKSA9IHB0cl9zaXplOwogKyAgICB9Ci0rCi0rICBkb19j bGVhbnVwcyAoYmFja190byk7CiArfQogKwotKy8qIEZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIGZv ciBwb3NzaWJseSBjcmVhdGVkIGR1cGxpY2l0aWVzIGluIHRoZSBjYWNoZS4KLSsgICBDaGVjayBp dCBieSByZXNvbHZlX2dudV9pZnVuY19ieV9jYWNoZSBmaXJzdC4gICovCi0rCi0rc3RhdGljIHN0 cnVjdCBtaW5pbWFsX3N5bWJvbCAqCi0rZ251X2lmdW5jX3JlY29yZF9jYWNoZV91bmNoZWNrZWQg KGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsCi0rCQkJCSAgQ09SRV9BRERSIGZ1bmN0aW9uX2Fk ZHJlc3MpCisrc3RhdGljIHN0cnVjdCBzeW10YWIgKgorK2R3Ml9maW5kX3BjX3NlY3Rfc3ltdGFi IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKysJCQkgc3RydWN0IG1pbmltYWxfc3ltYm9sICpt c3ltYm9sLAorKwkJCSBDT1JFX0FERFIgcGMsCisrCQkJIHN0cnVjdCBvYmpfc2VjdGlvbiAqc2Vj dGlvbiwKKysJCQkgaW50IHdhcm5faWZfcmVhZGluKQogK3sKLSsgIHN0cnVjdCBtaW5pbWFsX3N5 bWJvbCAqbXN5bSwgKm1zeW1fbmV3OwotKyAgYXNlY3Rpb24gKnNlY3Q7Ci0rICBzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZTsKLSsgIGNoYXIgKmZ1bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndDsKKysg IHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmRhdGE7CiArCi0rICBtc3ltID0gbG9va3VwX21p bmltYWxfc3ltYm9sX2J5X3BjIChmdW5jdGlvbl9hZGRyZXNzKTsKLSsgIGlmIChtc3ltID09IE5V TEwpCi0rICAgIHJldHVybiBOVUxMOwotKyAgaWYgKFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3lt KSAhPSBmdW5jdGlvbl9hZGRyZXNzKQotKyAgICByZXR1cm4gTlVMTDsKLSsgIC8qIG1pbmltYWwg c3ltYm9scyBoYXZlIGFsd2F5cyBTWU1CT0xfT0JKX1NFQ1RJT04gbm9uLU5VTEwuICAqLwotKyAg c2VjdCA9IFNZTUJPTF9PQkpfU0VDVElPTiAobXN5bSktPnRoZV9iZmRfc2VjdGlvbjsKLSsgIG9i amZpbGUgPSBTWU1CT0xfT0JKX1NFQ1RJT04gKG1zeW0pLT5vYmpmaWxlOworKyAgZHcyX3NldHVw IChvYmpmaWxlKTsKICsKLSsgIC8qIElmIC5wbHQganVtcHMgYmFjayB0byAucGx0IHRoZSBzeW1i b2wgaXMgc3RpbGwgZGVmZXJyZWQgZm9yIGxhdGVyCi0rICAgICByZXNvbHV0aW9uIGFuZCBpdCBo YXMgbm8gdXNlIGZvciBHREIuICBCZXNpZGVzICIudGV4dCIgdGhpcyBzeW1ib2wgY2FuCi0rICAg ICByZXNpZGUgYWxzbyBpbiAiLm9wZCIgZm9yIHBwYzY0IGZ1bmN0aW9uIGRlc2NyaXB0b3IuICAq LwotKyAgaWYgKHN0cmNtcCAoYmZkX2dldF9zZWN0aW9uX25hbWUgKG9iamZpbGUtPm9iZmQsIHNl Y3QpLCAiLnBsdCIpID09IDApCisrICBpZiAoIW9iamZpbGUtPnBzeW10YWJzX2FkZHJtYXApCiAr ICAgIHJldHVybiBOVUxMOwogKwotKyAgZnVuY3Rpb25fbmFtZV9nbnVfaWZ1bmNfdGd0ID0gYWxs b2NhIChzdHJsZW4gKGZ1bmN0aW9uX25hbWUpCi0rCQkJCQkrIHN0cmxlbiAoIkBnbnUtaWZ1bmMt dGd0IikgKyAxKTsKLSsgIHNwcmludGYgKGZ1bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndCwgIiVz QGdudS1pZnVuYy10Z3QiLCBmdW5jdGlvbl9uYW1lKTsKKysgIGRhdGEgPSBhZGRybWFwX2ZpbmQg KG9iamZpbGUtPnBzeW10YWJzX2FkZHJtYXAsIHBjKTsKKysgIGlmICghZGF0YSkKKysgICAgcmV0 dXJuIE5VTEw7CiArCi0rICAvKiBDcmVhdGUgbmV3IGFsaWFzICJAZ251LWlmdW5jLXRndCIgZm9y IE1TWU0uICAqLwotKyAgbXN5bV9uZXcgPSByZWNvcmRfbWluaW1hbF9zeW1ib2wgKGZ1bmN0aW9u X25hbWVfZ251X2lmdW5jX3RndCwKLSsJCQkJICAgIHN0cmxlbiAoZnVuY3Rpb25fbmFtZV9nbnVf aWZ1bmNfdGd0KSwgMSwKLSsJCQkJICAgIFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3ltKSwKLSsJ CQkJICAgIE1TWU1CT0xfVFlQRSAobXN5bSksIHNlY3QsIG9iamZpbGUpOwotKyAgLyogU2hvdWxk IG5vdCBoYXBwZW4uICAqLwotKyAgaWYgKG1zeW1fbmV3ID09IE5VTEwpCi0rICAgIHJldHVybiAw OworKyAgaWYgKHdhcm5faWZfcmVhZGluICYmIGRhdGEtPnYucXVpY2stPnN5bXRhYikKKysgICAg d2FybmluZyAoXygiKEludGVybmFsIGVycm9yOiBwYyAlcyBpbiByZWFkIGluIENVLCBidXQgbm90 IGluIHN5bXRhYi4pXG4iKSwKKysJICAgICBwYWRkcmVzcyAoZ2V0X29iamZpbGVfYXJjaCAob2Jq ZmlsZSksIHBjKSk7CiArCi0rICAvKiBvYmpmaWxlLT5tc3ltYm9scyBhcnJheSBpcyBhbHJlYWR5 IGFsbG9jYXRlZCBvbiBvYnN0YWNrIGFuZCBpdCBjYW5ub3QgYmUKLSsgICAgIGVhc2lseSBleHRl bmRlZC4gIFRoZXJlZm9yZSA8dGFiPi1jb21wbGV0aW9uIG9uIHN5bWJvbCBuYW1lcyB3aWxsIG5l dmVyCi0rICAgICBzaG93IHRoZSBAZ251LWlmdW5jLXRndCBzeW1ib2wuICBMaW5rIGl0IGF0IGxl YXN0IHRvIHRoZSBoYXNoIHRhYmxlIHNvCi0rICAgICB0aGF0IHJlc29sdmVfZ251X2lmdW5jX2J5 X2NhY2hlIGNhbiBmaW5kIGl0LiAgKi8KLSsgIGFkZF9taW5zeW1fdG9faGFzaF90YWJsZSAobXN5 bV9uZXcsIG9iamZpbGUtPm1zeW1ib2xfaGFzaCk7Ci0rICAgIAotKyAgTVNZTUJPTF9TSVpFICht c3ltX25ldykgPSBNU1lNQk9MX1NJWkUgKG1zeW0pOwotKyAgcmV0dXJuIG1zeW1fbmV3OworKyAg cmV0dXJuIGR3Ml9pbnN0YW50aWF0ZV9zeW10YWIgKG9iamZpbGUsIGRhdGEpOwogK30KICsKLSsv KiBDaGVjayBmaXJzdCB0aGUgY2FjaGUgaWYgaXQgLSB1bmxpa2VseSAtIGhhcyBub3QgYmVlbiBw b3B1bGF0ZWQgc2luY2UKLSsgICBicF9nbnVfaWZ1bmNfcmVzb2x2ZXIgaGFzIGJlZW4gY3JlYXRl ZC4gIGdudV9pZnVuY19yZWNvcmRfY2FjaGVfdW5jaGVja2VkCi0rICAgY291bGQgY3JlYXRlIGEg ZHVwbGljYXRlIHN5bWJvbCBvdGhlcndpc2UuICAqLwotKwotK3ZvaWQKLStnbnVfaWZ1bmNfcmVj b3JkX2NhY2hlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgY29uc3QgY2hhciAqZnVuY3Rpb25f bmFtZSwKLSsJCQlDT1JFX0FERFIgZnVuY3Rpb25fYWRkcmVzcykKKytzdGF0aWMgdm9pZAorK2R3 Ml9tYXBfc3ltYm9sX25hbWVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKysJCSAgICAgIHZv aWQgKCpmdW4pIChjb25zdCBjaGFyICosIHZvaWQgKiksCisrCQkgICAgICB2b2lkICpkYXRhKQog K3sKLSsgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bTsKKysgIG9mZnNldF90eXBlIGl0ZXI7 CisrICBkdzJfc2V0dXAgKG9iamZpbGUpOworIAorLSAgLyogT25seSB0cnkgdG8gbW1hcCBzZWN0 aW9ucyB3aGljaCBhcmUgbGFyZ2UgZW5vdWdoOiB3ZSBkb24ndCB3YW50IHRvCistICAgICB3YXN0 ZSBzcGFjZSBkdWUgdG8gZnJhZ21lbnRhdGlvbi4gIEFsc28sIG9ubHkgdHJ5IG1tYXAgZm9yIHNl Y3Rpb25zCistICAgICB3aXRob3V0IHJlbG9jYXRpb25zLiAgKi8KKysgIGlmICghZHdhcmYyX3Bl cl9vYmpmaWxlLT5pbmRleF90YWJsZSkKKysgICAgcmV0dXJuOworIAorLSAgaWYgKGluZm8tPnNp emUgPiA0ICogcGFnZXNpemUgJiYgKHNlY3RwLT5mbGFncyAmIFNFQ19SRUxPQykgPT0gMCkKKysg IGZvciAoaXRlciA9IDA7CisrICAgICAgIGl0ZXIgPCBkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4 X3RhYmxlLT5pbmRleF90YWJsZV9zbG90czsKKysgICAgICAgKytpdGVyKQorICAgICB7CistICAg ICAgb2ZmX3QgcGdfb2Zmc2V0ID0gc2VjdHAtPmZpbGVwb3MgJiB+KHBhZ2VzaXplIC0gMSk7Cist ICAgICAgc2l6ZV90IG1hcF9sZW5ndGggPSBpbmZvLT5zaXplICsgc2VjdHAtPmZpbGVwb3MgLSBw Z19vZmZzZXQ7CistICAgICAgY2FkZHJfdCByZXRidWYgPSBiZmRfbW1hcCAoYWJmZCwgMCwgbWFw X2xlbmd0aCwgUFJPVF9SRUFELAorLQkJCQkgTUFQX1BSSVZBVEUsIHBnX29mZnNldCk7CisrICAg ICAgb2Zmc2V0X3R5cGUgaWR4ID0gMiAqIGl0ZXI7CisrICAgICAgY29uc3QgY2hhciAqbmFtZTsK KysgICAgICBvZmZzZXRfdHlwZSAqdmVjLCB2ZWNfbGVuLCB2ZWNfaWR4OworIAorLSAgICAgIGlm IChyZXRidWYgIT0gTUFQX0ZBSUxFRCkKKy0JeworLQkgIGluZm8tPndhc19tbWFwcGVkID0gMTsK Ky0JICBpbmZvLT5idWZmZXIgPSByZXRidWYgKyAoc2VjdHAtPmZpbGVwb3MgJiAocGFnZXNpemUg LSAxKSkgOworLSNpZiBIQVZFX1BPU0lYX01BRFZJU0UKKy0JICBwb3NpeF9tYWR2aXNlIChyZXRi dWYsIG1hcF9sZW5ndGgsIFBPU0lYX01BRFZfV0lMTE5FRUQpOworLSNlbmRpZgorLQkgIHJldHVy bjsKKy0JfQorKyAgICAgIGlmIChkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxlLT5pbmRl eF90YWJsZVtpZHhdID09IDAKKysJICAmJiBkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxl LT5pbmRleF90YWJsZVtpZHggKyAxXSA9PSAwKQorKwljb250aW51ZTsKICsKLSsgIG1zeW0gPSBy ZXNvbHZlX2dudV9pZnVuY19ieV9jYWNoZSAoZnVuY3Rpb25fbmFtZSk7Ci0rICBpZiAobXN5bSA9 PSBOVUxMKQotKyAgICBnbnVfaWZ1bmNfcmVjb3JkX2NhY2hlX3VuY2hlY2tlZCAoZnVuY3Rpb25f bmFtZSwgZnVuY3Rpb25fYWRkcmVzcyk7Ci0rICBlbHNlIGlmIChTWU1CT0xfVkFMVUVfQUREUkVT UyAobXN5bSkgIT0gZnVuY3Rpb25fYWRkcmVzcykKLSsgICAgewotKyAgICAgIC8qIFRoaXMgY2Fz ZSBpbmRpY2F0ZXMgYnVnZ3kgaW5mZXJpb3IgcHJvZ3JhbS4gIEdEQiB3b3VsZCBuZWVkIHRvIHVw ZGF0ZQotKwkgaXRzIE1TWU0gY2FjaGUgc3ltYm9sIGZvciBmdW5jdGlvbl9hZGRyZXNzLiAgQW55 d2F5IEZVTkNUSU9OX05BTUUgaXMKLSsJIG5ldmVyIG5vcm1hbGx5IGZvdW5kIGluIHRoZSBjYXNl IGFzIGluIHN1Y2ggY2FzZSBubwotKwkgYnBfZ251X2lmdW5jX3Jlc29sdmVyIHdvdWxkIGJlIGNy ZWF0ZWQgaW4gdGhlIGZpcnN0IHBsYWNlLiAgKi8KKysgICAgICBuYW1lID0gKGR3YXJmMl9wZXJf b2JqZmlsZS0+aW5kZXhfdGFibGUtPmNvbnN0YW50X3Bvb2wKKysJICAgICAgKyBkd2FyZjJfcGVy X29iamZpbGUtPmluZGV4X3RhYmxlLT5pbmRleF90YWJsZVtpZHhdKTsKICsKLSsgICAgICB3YXJu aW5nIChfKCJnbnUtaW5kaXJlY3QtZnVuY3Rpb24gXCIlc1wiIGhhcyBjaGFuZ2VkIGl0cyByZXNv bHZlZCAiCi0rCQkgImZ1bmN0aW9uX2FkZHJlc3MgZnJvbSAlcyB0byAlczsgR0RCIGlzIHVzaW5n IHRoZSBmb3JtZXIgb25lIiksCi0rCSAgICAgICBmdW5jdGlvbl9uYW1lLCBwYWRkcmVzcyAoZ2Ri YXJjaCwgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pKSwKLSsJICAgICAgIHBhZGRyZXNzIChn ZGJhcmNoLCBmdW5jdGlvbl9hZGRyZXNzKSk7Ci0rICAgIH0KKysgICAgICAoKmZ1bikgKG5hbWUs IGRhdGEpOworICAgICB9CistI2VuZGlmCiArfQotKwotK3N0YXRpYyBzdHJ1Y3QgbWluaW1hbF9z eW1ib2wgKgotK3Jlc29sdmVfZ251X2lmdW5jX2J5X2dvdCAoY29uc3QgY2hhciAqZnVuY3Rpb25f bmFtZSkKKyAKKy0gIC8qIElmIHdlIGdldCBoZXJlLCB3ZSBhcmUgYSBub3JtYWwsIG5vdC1jb21w cmVzc2VkIHNlY3Rpb24uICAqLworLSAgaW5mby0+YnVmZmVyID0gYnVmCistICAgID0gb2JzdGFj a19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgaW5mby0+c2l6ZSk7Cisrc3RhdGlj IHZvaWQKKytkdzJfbWFwX3N5bWJvbF9maWxlbmFtZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LAorKwkJCSAgdm9pZCAoKmZ1bikgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCB2b2lkICop LAorKwkJCSAgdm9pZCAqZGF0YSkKICt7Ci0rICBjaGFyICpmdW5jdGlvbl9uYW1lX2dvdF9wbHQ7 Ci0rICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLSsKLSsgIGZ1bmN0aW9uX25hbWVfZ290X3Bs dCA9IGFsbG9jYSAoc3RybGVuIChmdW5jdGlvbl9uYW1lKSArIHN0cmxlbiAoIkBnb3QucGx0IikK LSsJCQkJICArIDEpOwotKyAgc3ByaW50ZiAoZnVuY3Rpb25fbmFtZV9nb3RfcGx0LCAiJXNAZ290 LnBsdCIsIGZ1bmN0aW9uX25hbWUpOwotKwotKyAgQUxMX1BTUEFDRV9PQkpGSUxFUyAoY3VycmVu dF9wcm9ncmFtX3NwYWNlLCBvYmpmaWxlKQotKyAgICB7Ci0rICAgICAgYmZkICpvYmZkID0gb2Jq ZmlsZS0+b2JmZDsKLSsgICAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IG9iamZpbGUtPmdk YmFyY2g7Ci0rICAgICAgc3RydWN0IHR5cGUgKnB0cl90eXBlID0gYnVpbHRpbl90eXBlIChnZGJh cmNoKS0+YnVpbHRpbl9kYXRhX3B0cjsKLSsgICAgICBzaXplX3QgcHRyX3NpemUgPSBUWVBFX0xF TkdUSCAocHRyX3R5cGUpOwotKyAgICAgIENPUkVfQUREUiBwb2ludGVyX2FkZHJlc3MsIGZ1bmN0 aW9uX2FkZHJlc3M7Ci0rICAgICAgYXNlY3Rpb24gKnBsdDsKLSsgICAgICBnZGJfYnl0ZSAqYnVm ID0gYWxsb2NhIChwdHJfc2l6ZSk7Ci0rICAgICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3lt OwotKwotKyAgICAgIG1zeW0gPSBsb29rdXBfbWluaW1hbF9zeW1ib2wgKGZ1bmN0aW9uX25hbWVf Z290X3BsdCwgTlVMTCwgb2JqZmlsZSk7Ci0rICAgICAgaWYgKG1zeW0gPT0gTlVMTCkKLSsJY29u dGludWU7Ci0rICAgICAgaWYgKE1TWU1CT0xfVFlQRSAobXN5bSkgIT0gbXN0X3Nsb3RfZ290X3Bs dCkKLSsJY29udGludWU7Ci0rICAgICAgcG9pbnRlcl9hZGRyZXNzID0gU1lNQk9MX1ZBTFVFX0FE RFJFU1MgKG1zeW0pOwotKwotKyAgICAgIHBsdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChv YmZkLCAiLnBsdCIpOwotKyAgICAgIGlmIChwbHQgPT0gTlVMTCkKLSsJY29udGludWU7CisrICBp bnQgaTsKKyAKKy0gIC8qIFdoZW4gZGVidWdnaW5nIC5vIGZpbGVzLCB3ZSBtYXkgbmVlZCB0byBh cHBseSByZWxvY2F0aW9uczsgc2VlCistICAgICBodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2Ri LXBhdGNoZXMvMjAwMi0wNC9tc2cwMDEzNi5odG1sIC4KKy0gICAgIFdlIG5ldmVyIGNvbXByZXNz IHNlY3Rpb25zIGluIC5vIGZpbGVzLCBzbyB3ZSBvbmx5IG5lZWQgdG8KKy0gICAgIHRyeSB0aGlz IHdoZW4gdGhlIHNlY3Rpb24gaXMgbm90IGNvbXByZXNzZWQuICAqLworLSAgcmV0YnVmID0gc3lt ZmlsZV9yZWxvY2F0ZV9kZWJ1Z19zZWN0aW9uIChvYmpmaWxlLCBzZWN0cCwgYnVmKTsKKy0gIGlm IChyZXRidWYgIT0gTlVMTCkKKysgIGR3Ml9zZXR1cCAob2JqZmlsZSk7CisrICBmb3IgKGkgPSAw OyBpIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraSkKKyAgICAgeworLSAg ICAgIGluZm8tPmJ1ZmZlciA9IHJldGJ1ZjsKKy0gICAgICByZXR1cm47CisrICAgICAgaW50IGo7 CisrICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkd2FyZjJfcGVyX29iamZp bGUtPmFsbF9jb21wX3VuaXRzW2ldOwogKwotKyAgICAgIGlmIChNU1lNQk9MX1NJWkUgKG1zeW0p ICE9IHB0cl9zaXplKQotKwljb250aW51ZTsKLSsgICAgICBpZiAodGFyZ2V0X3JlYWRfbWVtb3J5 IChwb2ludGVyX2FkZHJlc3MsIGJ1ZiwgcHRyX3NpemUpICE9IDApCisrICAgICAgaWYgKGN1LT52 LnF1aWNrLT5zeW10YWIpCiArCWNvbnRpbnVlOwotKyAgICAgIGZ1bmN0aW9uX2FkZHJlc3MgPSBl eHRyYWN0X3R5cGVkX2FkZHJlc3MgKGJ1ZiwgcHRyX3R5cGUpOwogKwotKyAgICAgIG1zeW0gPSBn bnVfaWZ1bmNfcmVjb3JkX2NhY2hlX3VuY2hlY2tlZCAoZnVuY3Rpb25fbmFtZSwgZnVuY3Rpb25f YWRkcmVzcyk7Ci0rICAgICAgaWYgKG1zeW0gPT0gTlVMTCkKKysgICAgICBkdzJfcmVxdWlyZV9s aW5lX2hlYWRlciAob2JqZmlsZSwgY3UpOworKyAgICAgIGlmICghY3UtPnYucXVpY2stPmxpbmVz KQogKwljb250aW51ZTsKLSsgICAgICByZXR1cm4gbXN5bTsKLSsgICAgfQogKwotKyAgcmV0dXJu IE5VTEw7CisrICAgICAgZm9yIChqID0gMDsgaiA8IGN1LT52LnF1aWNrLT5saW5lcy0+bnVtX2Zp bGVfbmFtZXM7ICsraikKKysJeworKwkgIGNvbnN0IGNoYXIgKnRoaXNfZnVsbF9uYW1lID0gZHcy X3JlcXVpcmVfZnVsbF9wYXRoIChvYmpmaWxlLCBjdSwgaik7CisrCSAgKCpmdW4pIChjdS0+di5x dWljay0+ZmlsZV9uYW1lc1tqXSwgdGhpc19mdWxsX25hbWUsIGRhdGEpOworKwl9CisgICAgIH0K ICt9Ci0rCi0rc3RydWN0IG1pbmltYWxfc3ltYm9sICoKLStyZXNvbHZlX2dudV9pZnVuY19ieV9j YWNoZSAoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSkKKyAKKy0gIGlmIChiZmRfc2VlayAoYWJm ZCwgc2VjdHAtPmZpbGVwb3MsIFNFRUtfU0VUKSAhPSAwCistICAgICAgfHwgYmZkX2JyZWFkIChi dWYsIGluZm8tPnNpemUsIGFiZmQpICE9IGluZm8tPnNpemUpCistICAgIGVycm9yIChfKCJEd2Fy ZiBFcnJvcjogQ2FuJ3QgcmVhZCBEV0FSRiBkYXRhIGZyb20gJyVzJyIpLAorLQkgICBiZmRfZ2V0 X2ZpbGVuYW1lIChhYmZkKSk7Cisrc3RhdGljIGludAorK2R3Ml9oYXNfc3ltYm9scyAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUpCiArewotKyAgY2hhciAqZnVuY3Rpb25fbmFtZV9nbnVfaWZ1bmNf dGd0OwotKwotKyAgZnVuY3Rpb25fbmFtZV9nbnVfaWZ1bmNfdGd0ID0gYWxsb2NhIChzdHJsZW4g KGZ1bmN0aW9uX25hbWUpCi0rCQkJCQkrIHN0cmxlbiAoIkBnbnUtaWZ1bmMtdGd0IikgKyAxKTsK LSsgIHNwcmludGYgKGZ1bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndCwgIiVzQGdudS1pZnVuYy10 Z3QiLCBmdW5jdGlvbl9uYW1lKTsKLSsKLSsgIHJldHVybiBsb29rdXBfbWluaW1hbF9zeW1ib2wg KGZ1bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndCwgTlVMTCwgTlVMTCk7Ci0rfQotKworKyAgcmV0 dXJuIDE7CisgfQorIAorLS8qIEZpbGwgaW4gU0VDVFAsIEJVRlAgYW5kIFNJWkVQIHdpdGggc2Vj dGlvbiBpbmZvLCBnaXZlbiBPQkpGSUxFIGFuZAorLSAgIFNFQ1RJT05fTkFNRS4gKi8KKytjb25z dCBzdHJ1Y3QgcXVpY2tfc3ltYm9sX2Z1bmN0aW9ucyBkd2FyZjJfZ2RiX2luZGV4X2Z1bmN0aW9u cyA9CisreworKyAgZHcyX2hhc19zeW1ib2xzLAorKyAgZHcyX2ZpbmRfbGFzdF9zb3VyY2Vfc3lt dGFiLAorKyAgZHcyX2ZvcmdldF9jYWNoZWRfc291cmNlX2luZm8sCisrICBkdzJfbG9va3VwX3N5 bXRhYiwKKysgIGR3Ml9sb29rdXBfc3ltYm9sLAorKyAgZHcyX3ByZV9leHBhbmRfc3ltdGFic19t YXRjaGluZywKKysgIGR3Ml9wcmludF9zdGF0cywKKysgIGR3Ml9kdW1wLAorKyAgZHcyX3JlbG9j YXRlLAorKyAgZHcyX2V4cGFuZF9zeW10YWJzX2Zvcl9mdW5jdGlvbiwKKysgIGR3Ml9leHBhbmRf YWxsX3N5bXRhYnMsCisrICBkdzJfZXhwYW5kX3N5bXRhYnNfd2l0aF9maWxlbmFtZSwKKysgIGR3 Ml9maW5kX3N5bWJvbF9maWxlLAorKyAgZHcyX21hcF9hZGFfc3ltdGFicywKKysgIGR3Ml9leHBh bmRfc3ltdGFic19tYXRjaGluZywKKysgIGR3Ml9maW5kX3BjX3NlY3Rfc3ltdGFiLAorKyAgZHcy X21hcF9zeW1ib2xfbmFtZXMsCisrICBkdzJfbWFwX3N5bWJvbF9maWxlbmFtZXMKKyt9OworIAor LXZvaWQKKy1kd2FyZjJfZ2V0X3NlY3Rpb25faW5mbyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs IGNvbnN0IGNoYXIgKnNlY3Rpb25fbmFtZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgYXNl Y3Rpb24gKipzZWN0cCwgZ2RiX2J5dGUgKipidWZwLAorLSAgICAgICAgICAgICAgICAgICAgICAg ICBiZmRfc2l6ZV90eXBlICpzaXplcCkKKy17CistICBzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxl ICpkYXRhCistICAgID0gb2JqZmlsZV9kYXRhIChvYmpmaWxlLCBkd2FyZjJfb2JqZmlsZV9kYXRh X2tleSk7CistICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5mbzsKKysvKiBJbml0aWFs aXplIGZvciByZWFkaW5nIERXQVJGIGZvciB0aGlzIG9iamZpbGUuICBSZXR1cm4gMCBpZiB0aGlz CisrICAgZmlsZSB3aWxsIHVzZSBwc3ltdGFicywgb3IgMSBpZiB1c2luZyB0aGUgR05VIGluZGV4 LiAgKi8KKyAKKy0gIC8qIFdlIG1heSBzZWUgYW4gb2JqZmlsZSB3aXRob3V0IGFueSBEV0FSRiwg aW4gd2hpY2ggY2FzZSB3ZSBqdXN0CistICAgICByZXR1cm4gbm90aGluZy4gICovCistICBpZiAo ZGF0YSA9PSBOVUxMKQogK2ludAotK3Jlc29sdmVfZ251X2lmdW5jIChjb25zdCBjaGFyICpmdW5j dGlvbl9uYW1lLCBDT1JFX0FERFIgKmZ1bmN0aW9uX2FkZHJlc3NwKQorK2R3YXJmMl9pbml0aWFs aXplX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQogK3sKLSsgIHN0cnVjdCBtaW5p bWFsX3N5bWJvbCAqbXN5bTsKLSsKLSsgIG1zeW0gPSByZXNvbHZlX2dudV9pZnVuY19ieV9jYWNo ZSAoZnVuY3Rpb25fbmFtZSk7Ci0rICBpZiAobXN5bSAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAg KmZ1bmN0aW9uX2FkZHJlc3NwID0gU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pOwotKyAgICAg IHJldHVybiAxOwotKyAgICB9CisrICAvKiBJZiB3ZSdyZSBhYm91dCB0byByZWFkIGZ1bGwgc3lt Ym9scywgZG9uJ3QgYm90aGVyIHdpdGggdGhlCisrICAgICBpbmRpY2VzLiAgSW4gdGhpcyBjYXNl IHdlIGFsc28gZG9uJ3QgY2FyZSBpZiBzb21lIG90aGVyIGRlYnVnCisrICAgICBmb3JtYXQgaXMg bWFraW5nIHBzeW10YWJzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBhYm91dCB0byBiZQorKyAgICAg ZXhwYW5kZWQgYW55d2F5LiAgKi8KKysgIGlmICgob2JqZmlsZS0+ZmxhZ3MgJiBPQkpGX1JFQURO T1cpKQorICAgICB7CistICAgICAgKnNlY3RwID0gTlVMTDsKKy0gICAgICAqYnVmcCA9IE5VTEw7 CistICAgICAgKnNpemVwID0gMDsKKy0gICAgICByZXR1cm47CisrICAgICAgaW50IGk7CiArCi0r ICBtc3ltID0gcmVzb2x2ZV9nbnVfaWZ1bmNfYnlfZ290IChmdW5jdGlvbl9uYW1lKTsKLSsgIGlm IChtc3ltICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICAqZnVuY3Rpb25fYWRkcmVzc3AgPSBTWU1C T0xfVkFMVUVfQUREUkVTUyAobXN5bSk7Ci0rICAgICAgcmV0dXJuIDE7Ci0rICAgIH0KKysgICAg ICBkd2FyZjJfcGVyX29iamZpbGUtPnVzaW5nX2luZGV4ID0gMTsKKysgICAgICBjcmVhdGVfYWxs X2NvbXBfdW5pdHMgKG9iamZpbGUpOwogKwotKyAgcmV0dXJuIDA7Ci0rfQorKyAgICAgIGZvciAo aSA9IDA7IGkgPCBkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0czsgKytpKQorKwl7Cisr CSAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFs bF9jb21wX3VuaXRzW2ldOwogKwotIHN0cnVjdCBidWlsZF9pZAotICAgewotICAgICBzaXplX3Qg c2l6ZTsKLUBAIC03OTcsNiArMTA0Niw4IEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLCBpbnQgc3ltZmlsZV9mbGFncykKLSAJICAgICAgIGJmZF9lcnJtc2cgKGJm ZF9nZXRfZXJyb3IgKCkpKTsKLSAKLSAgICAgICBlbGZfc3ltdGFiX3JlYWQgKG9iamZpbGUsIFNU X0RZTkFNSUMsIGR5bnN5bWNvdW50LCBkeW5fc3ltYm9sX3RhYmxlLCAwKTsKKysJICBjdS0+di5x dWljayA9IE9CU1RBQ0tfWkFMTE9DICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorKwkJCQkJ c3RydWN0IGR3YXJmMl9wZXJfY3VfcXVpY2tfZGF0YSk7CisrCX0KICsKLSsgICAgICBlbGZfcmVs X3BsdF9yZWFkIChvYmpmaWxlLCBkeW5fc3ltYm9sX3RhYmxlKTsKKysgICAgICAvKiBSZXR1cm4g MSBzbyB0aGF0IGdkYiBzZWVzIHRoZSAicXVpY2siIGZ1bmN0aW9ucy4gIEhvd2V2ZXIsCisrCSB0 aGVzZSBmdW5jdGlvbnMgd2lsbCBiZSBuby1vcHMgYmVjYXVzZSB3ZSB3aWxsIGhhdmUgZXhwYW5k ZWQKKysJIGFsbCBzeW10YWJzLiAgKi8KKysgICAgICByZXR1cm4gMTsKICAgICAgfQorLSAgaWYg KHNlY3Rpb25faXNfcCAoc2VjdGlvbl9uYW1lLCBFSF9GUkFNRV9TRUNUSU9OKSkKKy0gICAgaW5m byA9ICZkYXRhLT5laF9mcmFtZTsKKy0gIGVsc2UgaWYgKHNlY3Rpb25faXNfcCAoc2VjdGlvbl9u YW1lLCBGUkFNRV9TRUNUSU9OKSkKKy0gICAgaW5mbyA9ICZkYXRhLT5mcmFtZTsKKy0gIGVsc2UK Ky0gICAgZ2RiX2Fzc2VydCAoMCk7CiAgCi0gICAvKiBBZGQgc3ludGhldGljIHN5bWJvbHMgLSBm b3IgaW5zdGFuY2UsIG5hbWVzIGZvciBhbnkgUExUIGVudHJpZXMuICAqLwotZGlmZiAtLWdpdCBh L2dkYi9ldmFsLmMgYi9nZGIvZXZhbC5jCi1pbmRleCBmZjE3YzM0Li43YjllODcxIDEwMDY0NAot LS0tIGEvZ2RiL2V2YWwuYwotKysrIGIvZ2RiL2V2YWwuYwotQEAgLTQ0LDYgKzQ0LDcgQEAKLSAj aW5jbHVkZSAib2JqZmlsZXMuaCIKLSAjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgotICNpbmNs dWRlICJ3cmFwcGVyLmgiCi0rI2luY2x1ZGUgImR3YXJmMmxvYy5oIgorLSAgaWYgKGluZm8tPmFz ZWN0aW9uICE9IE5VTEwgJiYgaW5mby0+c2l6ZSAhPSAwICYmIGluZm8tPmJ1ZmZlciA9PSBOVUxM KQorLSAgICAvKiBXZSBoYXZlbid0IHJlYWQgdGhpcyBzZWN0aW9uIGluIHlldC4gIERvIGl0IG5v dy4gICovCistICAgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKG9iamZpbGUsIGluZm8pOworKyAgaWYg KGR3YXJmMl9yZWFkX2luZGV4IChvYmpmaWxlKSkKKysgICAgcmV0dXJuIDE7CiAgCi0gI2luY2x1 ZGUgImdkYl9hc3NlcnQuaCIKKy0gICpzZWN0cCA9IGluZm8tPmFzZWN0aW9uOworLSAgKmJ1ZnAg PSBpbmZvLT5idWZmZXI7CistICAqc2l6ZXAgPSBpbmZvLT5zaXplOworKyAgZHdhcmYyX2J1aWxk X3BzeW10YWJzIChvYmpmaWxlKTsKKysgIHJldHVybiAwOworIH0KICAKLUBAIC03ODgsNiArNzg5 LDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUs Ci0gICBpbnQgc2F2ZV9wb3MxOwotICAgc3RydWN0IHN5bWJvbCAqZnVuY3Rpb24gPSBOVUxMOwot ICAgY2hhciAqZnVuY3Rpb25fbmFtZSA9IE5VTEw7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2No YWluOworKwwKKysKKyAvKiBCdWlsZCBhIHBhcnRpYWwgc3ltYm9sIHRhYmxlLiAgKi8KICAKLSAg IHBjID0gKCpwb3MpKys7Ci0gICBvcCA9IGV4cC0+ZWx0c1twY10ub3Bjb2RlOwotQEAgLTE3NzIs NiArMTc3NCw4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVj dF90eXBlLAotIAkgICAgICByZXR1cm4gdmFsdWVfemVybyAoYnVpbHRpbl90eXBlIChleHAtPmdk YmFyY2gpLT5idWlsdGluX2ludCwKLSAJCQkJIG5vdF9sdmFsKTsKLSAJICAgIH0KLSsJICBlbHNl IGlmIChUWVBFX0dOVV9JRlVOQyAoZnR5cGUpKQotKwkgICAgcmV0dXJuIGFsbG9jYXRlX3ZhbHVl IChUWVBFX1RBUkdFVF9UWVBFIChUWVBFX1RBUkdFVF9UWVBFIChmdHlwZSkpKTsKLSAJICBlbHNl IGlmIChUWVBFX1RBUkdFVF9UWVBFIChmdHlwZSkpCi0gCSAgICByZXR1cm4gYWxsb2NhdGVfdmFs dWUgKFRZUEVfVEFSR0VUX1RZUEUgKGZ0eXBlKSk7Ci0gCSAgZWxzZQotQEAgLTE3OTgsNiArMTgw Miw4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBl LAorIHZvaWQKK0BAIC0xODk3LDcgKzI4ODUsNyBAQCBwcm9jZXNzX3BzeW10YWJfY29tcF91bml0 IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKyAgIC8qIFN0b3JlIHRoZSBmdW5jdGlvbiB0aGF0 IHJlYWRzIGluIHRoZSByZXN0IG9mIHRoZSBzeW1ib2wgdGFibGUgKi8KKyAgIHBzdC0+cmVhZF9z eW10YWIgPSBkd2FyZjJfcHN5bXRhYl90b19zeW10YWI7CiAgCi0gICAgICAgLyogRmlyc3QgZGV0 ZXJtaW5lIHRoZSB0eXBlIGNvZGUgd2UgYXJlIGRlYWxpbmcgd2l0aC4gICovCi0gICAgICAgYXJn MSA9IGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAsIHBvcywgbm9zaWRlKTsKLSsgICAg ICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgMCk7Ci0rICAgICAgb2Jq ZWN0X2FkZHJlc3Nfc2V0ICh2YWx1ZV9yYXdfYWRkcmVzcyAoYXJnMSkpOwotICAgICAgIHR5cGUg PSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7Ci0gICAgICAgY29kZSA9IFRZUEVf Q09ERSAodHlwZSk7CistICB0aGlzX2N1LT5wc3ltdGFiID0gcHN0OworKyAgdGhpc19jdS0+di5w c3ltdGFiID0gcHN0OwogIAotQEAgLTE4MTgsNiArMTgyNCw3IEBAIGV2YWx1YXRlX3N1YmV4cF9z dGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAkgICAgICBjb2RlID0gVFlQRV9D T0RFICh0eXBlKTsKLSAJICAgIH0KLSAJfSAKLSsgICAgICBkb19jbGVhbnVwcyAob2xkX2NoYWlu KTsKKyAgIGR3YXJmMl9maW5kX2Jhc2VfYWRkcmVzcyAoY29tcF91bml0X2RpZSwgJmN1KTsKICAK LSAgICAgICBzd2l0Y2ggKGNvZGUpCitAQCAtMjE4Miw2ICszMTcwLDcgQEAgY3JlYXRlX2FsbF9j b21wX3VuaXRzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyAgICAgICBtZW1zZXQgKHRoaXNf Y3UsIDAsIHNpemVvZiAoKnRoaXNfY3UpKTsKKyAgICAgICB0aGlzX2N1LT5vZmZzZXQgPSBvZmZz ZXQ7CisgICAgICAgdGhpc19jdS0+bGVuZ3RoID0gbGVuZ3RoICsgaW5pdGlhbF9sZW5ndGhfc2l6 ZTsKKysgICAgICB0aGlzX2N1LT5vYmpmaWxlID0gb2JqZmlsZTsKKyAKKyAgICAgICBpZiAobl9j b21wX3VuaXRzID09IG5fYWxsb2NhdGVkKQogIAl7Ci1AQCAtMjI1NCwxMyArMjI2MSwxOSBAQCBl dmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKLSAgICAg ICB7Ci0gCWludCBzdWJzY3JpcHRfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107Ci0gCWludCBhcnJh eV9zaXplX2FycmF5W01BWF9GT1JUUkFOX0RJTVNdOwotKwlpbnQgYnl0ZV9zdHJpZGVfYXJyYXlb TUFYX0ZPUlRSQU5fRElNU107Ci0gCWludCBuZGltZW5zaW9ucyA9IDEsIGk7Ci0gCXN0cnVjdCB0 eXBlICp0bXBfdHlwZTsKLSAJaW50IG9mZnNldF9pdGVtOwkvKiBUaGUgYXJyYXkgb2Zmc2V0IHdo ZXJlIHRoZSBpdGVtIGxpdmVzICovCi0rCUNPUkVfQUREUiBvZmZzZXRfYnl0ZTsJLyogYnl0ZV9z dHJpZGUgYmFzZWQgb2Zmc2V0ICAqLwotKwl1bnNpZ25lZCBlbGVtZW50X3NpemU7CitAQCAtMjYx Myw3ICszNjAyLDcgQEAgYWRkX3BhcnRpYWxfc3VicHJvZ3JhbSAoc3RydWN0IHBhcnRpYWxfZGll X2luZm8gKnBkaSwKKyAJICAgICAgYWRkcm1hcF9zZXRfZW1wdHkgKG9iamZpbGUtPnBzeW10YWJz X2FkZHJtYXAsCisgCQkJCSBwZGktPmxvd3BjICsgYmFzZWFkZHIsCisgCQkJCSBwZGktPmhpZ2hw YyAtIDEgKyBiYXNlYWRkciwKKy0JCQkJIGN1LT5wZXJfY3UtPnBzeW10YWIpOworKwkJCQkgY3Ut PnBlcl9jdS0+di5wc3ltdGFiKTsKKyAJICAgIH0KKyAgICAgICAgICAgaWYgKCFwZGktPmlzX2Rl Y2xhcmF0aW9uKQorIAkgICAgLyogSWdub3JlIHN1YnByb2dyYW0gRElFcyB0aGF0IGRvIG5vdCBo YXZlIGEgbmFtZSwgdGhleSBhcmUKK0BAIC0yODg1LDcgKzM4NzQsNiBAQCBsb2NhdGVfcGRpX3Np YmxpbmcgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpvcmlnX3BkaSwKKyBzdGF0aWMgdm9pZAor IGR3YXJmMl9wc3ltdGFiX3RvX3N5bXRhYiAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3QpCisg eworLSAgLyogRklYTUU6IFRoaXMgaXMgYmFyZWx5IG1vcmUgdGhhbiBhIHN0dWIuICAqLworICAg aWYgKHBzdCAhPSBOVUxMKQorICAgICB7CisgICAgICAgaWYgKHBzdC0+cmVhZGluKQorQEAgLTI5 NTgsNyArMzk0Niw5IEBAIHByb2Nlc3NfcXVldWUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQor ICAgICAgbWF5IGxvYWQgYSBuZXcgQ1UsIGFkZGluZyBpdCB0byB0aGUgZW5kIG9mIHRoZSBxdWV1 ZS4gICovCisgICBmb3IgKGl0ZW0gPSBkd2FyZjJfcXVldWU7IGl0ZW0gIT0gTlVMTDsgZHdhcmYy X3F1ZXVlID0gaXRlbSA9IG5leHRfaXRlbSkKKyAgICAgeworLSAgICAgIGlmIChpdGVtLT5wZXJf Y3UtPnBzeW10YWIgJiYgIWl0ZW0tPnBlcl9jdS0+cHN5bXRhYi0+cmVhZGluKQorKyAgICAgIGlm IChkd2FyZjJfcGVyX29iamZpbGUtPnVzaW5nX2luZGV4CisrCSAgPyAhaXRlbS0+cGVyX2N1LT52 LnF1aWNrLT5zeW10YWIKKysJICA6IChpdGVtLT5wZXJfY3UtPnYucHN5bXRhYiAmJiAhaXRlbS0+ cGVyX2N1LT52LnBzeW10YWItPnJlYWRpbikpCisgCXByb2Nlc3NfZnVsbF9jb21wX3VuaXQgKGl0 ZW0tPnBlcl9jdSk7CisgCisgICAgICAgaXRlbS0+cGVyX2N1LT5xdWV1ZWQgPSAwOworQEAgLTMw MzUsMjIgKzQwMjUsNyBAQCBwc3ltdGFiX3RvX3N5bXRhYl8xIChzdHJ1Y3QgcGFydGlhbF9zeW10 YWIgKnBzdCkKKyAgICAgICByZXR1cm47CisgICAgIH0KICAKLSAJaWYgKG5hcmdzID4gTUFYX0ZP UlRSQU5fRElNUykKLSAJICBlcnJvciAoXygiVG9vIG1hbnkgc3Vic2NyaXB0cyBmb3IgRjc3ICgl ZCBNYXgpIiksIE1BWF9GT1JUUkFOX0RJTVMpOworLSAgYmFja190byA9IG1ha2VfY2xlYW51cCAo ZHdhcmYyX3JlbGVhc2VfcXVldWUsIE5VTEwpOworLQorLSAgcXVldWVfY29tcF91bml0IChwZXJf Y3UsIHBzdC0+b2JqZmlsZSk7CistCistICBpZiAocGVyX2N1LT5mcm9tX2RlYnVnX3R5cGVzKQor LSAgICByZWFkX3NpZ25hdHVyZWRfdHlwZV9hdF9vZmZzZXQgKHBzdC0+b2JqZmlsZSwgcGVyX2N1 LT5vZmZzZXQpOworLSAgZWxzZQorLSAgICBsb2FkX2Z1bGxfY29tcF91bml0IChwZXJfY3UsIHBz dC0+b2JqZmlsZSk7CistCistICBwcm9jZXNzX3F1ZXVlIChwc3QtPm9iamZpbGUpOworLQorLSAg LyogQWdlIHRoZSBjYWNoZSwgcmVsZWFzaW5nIGNvbXBpbGF0aW9uIHVuaXRzIHRoYXQgaGF2ZSBu b3QKKy0gICAgIGJlZW4gdXNlZCByZWNlbnRseS4gICovCistICBhZ2VfY2FjaGVkX2NvbXBfdW5p dHMgKCk7CistCistICBkb19jbGVhbnVwcyAoYmFja190byk7CisrICBkdzJfZG9faW5zdGFudGlh dGVfc3ltdGFiIChwc3QtPm9iamZpbGUsIHBlcl9jdSk7CisgfQogIAotKwlvbGRfY2hhaW4gPSBt YWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgMCk7Ci0rCW9iamVjdF9hZGRyZXNzX3NldCAodmFs dWVfcmF3X2FkZHJlc3MgKGFyZzEpKTsKKyAvKiBMb2FkIHRoZSBESUVzIGFzc29jaWF0ZWQgd2l0 aCBQRVJfQ1UgaW50byBtZW1vcnkuICAqLworQEAgLTMxMzAsOSArNDEwNSw4IEBAIGxvYWRfZnVs bF9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSwgc3RydWN0IG9i amZpbGUgKm9iamZpbGUpCisgc3RhdGljIHZvaWQKKyBwcm9jZXNzX2Z1bGxfY29tcF91bml0IChz dHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpCisgeworLSAgc3RydWN0IHBhcnRpYWxf c3ltdGFiICpwc3QgPSBwZXJfY3UtPnBzeW10YWI7CisgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSA9 IHBlcl9jdS0+Y3U7CistICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IHBzdC0+b2JqZmlsZTsK KysgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gcGVyX2N1LT5vYmpmaWxlOworICAgQ09SRV9B RERSIGxvd3BjLCBoaWdocGM7CisgICBzdHJ1Y3Qgc3ltdGFiICpzeW10YWI7CisgICBzdHJ1Y3Qg Y2xlYW51cCAqYmFja190bzsKK0BAIC0zMTY1LDggKzQxMzksMTUgQEAgcHJvY2Vzc19mdWxsX2Nv bXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQorICAgICB7CisgICAg ICAgc3ltdGFiLT5sYW5ndWFnZSA9IGN1LT5sYW5ndWFnZTsKKyAgICAgfQorLSAgcHN0LT5zeW10 YWIgPSBzeW10YWI7CistICBwc3QtPnJlYWRpbiA9IDE7CiArCi0gCXRtcF90eXBlID0gY2hlY2tf dHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwotIAluZGltZW5zaW9ucyA9IGNhbGNfZjc3X2Fy cmF5X2RpbXMgKHR5cGUpOworKyAgaWYgKGR3YXJmMl9wZXJfb2JqZmlsZS0+dXNpbmdfaW5kZXgp CisrICAgIHBlcl9jdS0+di5xdWljay0+c3ltdGFiID0gc3ltdGFiOworKyAgZWxzZQorKyAgICB7 CisrICAgICAgc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3QgPSBwZXJfY3UtPnYucHN5bXRhYjsK KysgICAgICBwc3QtPnN5bXRhYiA9IHN5bXRhYjsKKysgICAgICBwc3QtPnJlYWRpbiA9IDE7Cisr ICAgIH0KICAKLUBAIC0yMjkwLDYgKzIzMDMsOSBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQg KHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKLSAJICAgIHVwcGVyID0gZjc3X2dldF91cHBlcmJv dW5kICh0bXBfdHlwZSk7Ci0gCSAgICBsb3dlciA9IGY3N19nZXRfbG93ZXJib3VuZCAodG1wX3R5 cGUpOworICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworIH0KK0BAIC0zNTU5LDYgKzQ1NDAsNDYg QEAgZnJlZV9jdV9saW5lX2hlYWRlciAodm9pZCAqYXJnKQorIH0KICAKLSsJICAgIGJ5dGVfc3Ry aWRlX2FycmF5W25hcmdzIC0gaSAtIDFdID0KLSsJCQkJCVRZUEVfQVJSQVlfQllURV9TVFJJREVf VkFMVUUgKHRtcF90eXBlKTsKKyBzdGF0aWMgdm9pZAorK2ZpbmRfZmlsZV9hbmRfZGlyZWN0b3J5 IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCisrCQkJIGNoYXIg KipuYW1lLCBjaGFyICoqY29tcF9kaXIpCisreworKyAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsK ICsKLSAJICAgIGFycmF5X3NpemVfYXJyYXlbbmFyZ3MgLSBpIC0gMV0gPSB1cHBlciAtIGxvd2Vy ICsgMTsKLSAKLSAJICAgIC8qIFplcm8tbm9ybWFsaXplIHN1YnNjcmlwdHMgc28gdGhhdCBvZmZz ZXR0aW5nIHdpbGwgd29yay4gKi8KLUBAIC0yMzA4LDEzICsyMzI0LDI1IEBAIGV2YWx1YXRlX3N1 YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAkgICAgICB0bXBfdHlw ZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHRtcF90eXBlKSk7Ci0gCSAgfQot IAotKwkvKiBLZXB0IGZvciB0aGUgZjc3X2dldF91cHBlcmJvdW5kIC8gZjc3X2dldF9sb3dlcmJv dW5kIGNhbGxzIGFib3ZlLiAgKi8KLSsJZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CisrICAqbmFt ZSA9IE5VTEw7CisrICAqY29tcF9kaXIgPSBOVUxMOwogKwotIAkvKiBOb3cgbGV0IHVzIGNhbGN1 bGF0ZSB0aGUgb2Zmc2V0IGZvciB0aGlzIGl0ZW0gKi8KLSAKLS0Jb2Zmc2V0X2l0ZW0gPSBzdWJz Y3JpcHRfYXJyYXlbbmRpbWVuc2lvbnMgLSAxXTsKLSsJb2Zmc2V0X2l0ZW0gPSAwOwotKwlvZmZz ZXRfYnl0ZSA9IDA7CisrICAvKiBGaW5kIHRoZSBmaWxlbmFtZS4gIERvIG5vdCB1c2UgZHdhcmYy X25hbWUgaGVyZSwgc2luY2UgdGhlIGZpbGVuYW1lCisrICAgICBpcyBub3QgYSBzb3VyY2UgbGFu Z3VhZ2UgaWRlbnRpZmllci4gICovCisrICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRf bmFtZSwgY3UpOworKyAgaWYgKGF0dHIpCisrICAgIHsKKysgICAgICAqbmFtZSA9IERXX1NUUklO RyAoYXR0cik7CisrICAgIH0KICsKLSsJZm9yIChpID0gbmRpbWVuc2lvbnMgLSAxOyBpID49IDA7 IC0taSkKLSsJICB7Ci0rCSAgICBvZmZzZXRfaXRlbSAqPSBhcnJheV9zaXplX2FycmF5W2ldOwot KwkgICAgaWYgKGJ5dGVfc3RyaWRlX2FycmF5W2ldID09IDApCi0rCSAgICAgIG9mZnNldF9pdGVt ICs9IHN1YnNjcmlwdF9hcnJheVtpXTsKLSsJICAgIGVsc2UKLSsJICAgICAgb2Zmc2V0X2J5dGUg Kz0gc3Vic2NyaXB0X2FycmF5W2ldICogYnl0ZV9zdHJpZGVfYXJyYXlbaV07Ci0rCSAgfQorKyAg YXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2NvbXBfZGlyLCBjdSk7CisrICBpZiAoYXR0 cikKKysgICAgKmNvbXBfZGlyID0gRFdfU1RSSU5HIChhdHRyKTsKKysgIGVsc2UgaWYgKCpuYW1l ICE9IE5VTEwgJiYgSVNfQUJTT0xVVEVfUEFUSCAoKm5hbWUpKQorKyAgICB7CisrICAgICAgKmNv bXBfZGlyID0gbGRpcm5hbWUgKCpuYW1lKTsKKysgICAgICBpZiAoKmNvbXBfZGlyICE9IE5VTEwp CisrCW1ha2VfY2xlYW51cCAoeGZyZWUsICpjb21wX2Rpcik7CisrICAgIH0KKysgIGlmICgqY29t cF9kaXIgIT0gTlVMTCkKKysgICAgeworKyAgICAgIC8qIElyaXggNi4yIG5hdGl2ZSBjYyBwcmVw ZW5kcyA8bWFjaGluZT4uOiB0byB0aGUgY29tcGlsYXRpb24KKysJIGRpcmVjdG9yeSwgZ2V0IHJp ZCBvZiBpdC4gICovCisrICAgICAgY2hhciAqY3AgPSBzdHJjaHIgKCpjb21wX2RpciwgJzonKTsK KysKKysgICAgICBpZiAoY3AgJiYgY3AgIT0gKmNvbXBfZGlyICYmIGNwWy0xXSA9PSAnLicgJiYg Y3BbMV0gPT0gJy8nKQorKwkqY29tcF9kaXIgPSBjcCArIDE7CisrICAgIH0KKysKKysgIGlmICgq bmFtZSA9PSBOVUxMKQorKyAgICAqbmFtZSA9ICI8dW5rbm93bj4iOworK30KKysKKytzdGF0aWMg dm9pZAorIHJlYWRfZmlsZV9zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KQorIHsKKyAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gY3UtPm9iamZpbGU7 CitAQCAtMzU4NCwzNSArNDYwNSw3IEBAIHJlYWRfZmlsZV9zY29wZSAoc3RydWN0IGRpZV9pbmZv ICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorICAgbG93cGMgKz0gYmFzZWFkZHI7CisgICBo aWdocGMgKz0gYmFzZWFkZHI7CisgCistICAvKiBGaW5kIHRoZSBmaWxlbmFtZS4gIERvIG5vdCB1 c2UgZHdhcmYyX25hbWUgaGVyZSwgc2luY2UgdGhlIGZpbGVuYW1lCistICAgICBpcyBub3QgYSBz b3VyY2UgbGFuZ3VhZ2UgaWRlbnRpZmllci4gICovCistICBhdHRyID0gZHdhcmYyX2F0dHIgKGRp ZSwgRFdfQVRfbmFtZSwgY3UpOworLSAgaWYgKGF0dHIpCistICAgIHsKKy0gICAgICBuYW1lID0g RFdfU1RSSU5HIChhdHRyKTsKKy0gICAgfQorLQorLSAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUs IERXX0FUX2NvbXBfZGlyLCBjdSk7CistICBpZiAoYXR0cikKKy0gICAgY29tcF9kaXIgPSBEV19T VFJJTkcgKGF0dHIpOworLSAgZWxzZSBpZiAobmFtZSAhPSBOVUxMICYmIElTX0FCU09MVVRFX1BB VEggKG5hbWUpKQorLSAgICB7CistICAgICAgY29tcF9kaXIgPSBsZGlybmFtZSAobmFtZSk7Cist ICAgICAgaWYgKGNvbXBfZGlyICE9IE5VTEwpCistCW1ha2VfY2xlYW51cCAoeGZyZWUsIGNvbXBf ZGlyKTsKKy0gICAgfQorLSAgaWYgKGNvbXBfZGlyICE9IE5VTEwpCistICAgIHsKKy0gICAgICAv KiBJcml4IDYuMiBuYXRpdmUgY2MgcHJlcGVuZHMgPG1hY2hpbmU+LjogdG8gdGhlIGNvbXBpbGF0 aW9uCistCSBkaXJlY3RvcnksIGdldCByaWQgb2YgaXQuICAqLworLSAgICAgIGNoYXIgKmNwID0g c3RyY2hyIChjb21wX2RpciwgJzonKTsKKy0KKy0gICAgICBpZiAoY3AgJiYgY3AgIT0gY29tcF9k aXIgJiYgY3BbLTFdID09ICcuJyAmJiBjcFsxXSA9PSAnLycpCistCWNvbXBfZGlyID0gY3AgKyAx OworLSAgICB9CistCistICBpZiAobmFtZSA9PSBOVUxMKQorLSAgICBuYW1lID0gIjx1bmtub3du PiI7CisrICBmaW5kX2ZpbGVfYW5kX2RpcmVjdG9yeSAoZGllLCBjdSwgJm5hbWUsICZjb21wX2Rp cik7CiAgCi0tCWZvciAoaSA9IG5kaW1lbnNpb25zIC0gMTsgaSA+IDA7IC0taSkKLS0JICBvZmZz ZXRfaXRlbSA9Ci0tCSAgICBhcnJheV9zaXplX2FycmF5W2kgLSAxXSAqIG9mZnNldF9pdGVtICsg c3Vic2NyaXB0X2FycmF5W2kgLSAxXTsKLSsJZWxlbWVudF9zaXplID0gVFlQRV9MRU5HVEggKFRZ UEVfVEFSR0VUX1RZUEUgKHRtcF90eXBlKSk7Ci0rCW9mZnNldF9ieXRlICs9IG9mZnNldF9pdGVt ICogZWxlbWVudF9zaXplOworICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2xhbmd1 YWdlLCBjdSk7CisgICBpZiAoYXR0cikKK0BAIC01NTMxLDYgKzY1MjQsMjkgQEAgcHJvY2Vzc19l bnVtZXJhdGlvbl9zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQorICAgbmV3X3N5bWJvbCAoZGllLCB0aGlzX3R5cGUsIGN1KTsKKyB9CiAgCi0gCS8qIExl dCB1cyBub3cgcGxheSBhIGRpcnR5IHRyaWNrOiB3ZSB3aWxsIHRha2UgYXJnMSAKLSAJICAgd2hp Y2ggaXMgYSB2YWx1ZSBub2RlIHBvaW50aW5nIHRvIHRoZSB0b3Btb3N0IGxldmVsCi1AQCAtMjMy NCw3ICsyMzUyLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhw ZWN0X3R5cGUsCi0gCSAgIHJldHVybnMgdGhlIGNvcnJlY3QgdHlwZSB2YWx1ZSAqLwotIAotIAlk ZXByZWNhdGVkX3NldF92YWx1ZV90eXBlIChhcmcxLCB0bXBfdHlwZSk7Ci0tCXJldHVybiB2YWx1 ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKGFyZzEsIG9mZnNldF9pdGVtLCAwKTsKLSsJcmV0dXJuIHZh bHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAoYXJnMSwgb2Zmc2V0X2J5dGUpOwotICAgICAgIH0KLSAK LSAgICAgY2FzZSBCSU5PUF9MT0dJQ0FMX0FORDoKLUBAIC0yNTU4LDE0ICsyNTg2LDIyIEBAIGV2 YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotICAgICAg IGlmIChleHBlY3RfdHlwZSAmJiBUWVBFX0NPREUgKGV4cGVjdF90eXBlKSA9PSBUWVBFX0NPREVf UFRSKQotIAlleHBlY3RfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGNoZWNrX3R5cGVkZWYgKGV4 cGVjdF90eXBlKSk7Ci0gICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoZXhwZWN0X3R5cGUs IGV4cCwgcG9zLCBub3NpZGUpOwotKyAgICAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAobnVs bF9jbGVhbnVwLCAwKTsKLSsgICAgICBvYmplY3RfYWRkcmVzc19zZXQgKHZhbHVlX3Jhd19hZGRy ZXNzIChhcmcxKSk7Ci0gICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFy ZzEpKTsKLSAgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfTUVUSE9EUFRS Ci0gCSAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfTUVNQkVSUFRSKQotIAllcnJv ciAoXygiQXR0ZW1wdCB0byBkZXJlZmVyZW5jZSBwb2ludGVyIHRvIG1lbWJlciB3aXRob3V0IGFu IG9iamVjdCIpKTsKLSAgICAgICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKLS0JZ290byBub3Np ZGVyZXQ7Ci0rCXsKLSsJICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSsJICBnb3RvIG5vc2lk ZXJldDsKLSsJfQotICAgICAgIGlmICh1bm9wX3VzZXJfZGVmaW5lZF9wIChvcCwgYXJnMSkpCi0t CXJldHVybiB2YWx1ZV94X3Vub3AgKGFyZzEsIG9wLCBub3NpZGUpOwotKwl7Ci0rCSAgZG9fY2xl YW51cHMgKG9sZF9jaGFpbik7Ci0rCSAgcmV0dXJuIHZhbHVlX3hfdW5vcCAoYXJnMSwgb3AsIG5v c2lkZSk7Ci0rCX0KLSAgICAgICBlbHNlIGlmIChub3NpZGUgPT0gRVZBTF9BVk9JRF9TSURFX0VG RkVDVFMpCi0gCXsKLSAJICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkp OwotQEAgLTI1NzQsMTIgKzI2MTAsMTggQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1 Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gCSAgLyogSW4gQyB5b3UgY2FuIGRlcmVmZXJlbmNlIGFu IGFycmF5IHRvIGdldCB0aGUgMXN0IGVsdC4gICovCi0gCSAgICAgIHx8IFRZUEVfQ09ERSAodHlw ZSkgPT0gVFlQRV9DT0RFX0FSUkFZCi0gCSAgICApCi0tCSAgICByZXR1cm4gdmFsdWVfemVybyAo VFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCi0tCQkJICAgICAgIGx2YWxfbWVtb3J5KTsKLSsJICAg IHsKLSsJICAgICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0rCSAgICAgIHJldHVybiB2YWx1 ZV96ZXJvIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwKLSsJCQkJIGx2YWxfbWVtb3J5KTsKLSsJ ICAgIH0KLSAJICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9JTlQpCi0t CSAgICAvKiBHREIgYWxsb3dzIGRlcmVmZXJlbmNpbmcgYW4gaW50LiAgKi8KLS0JICAgIHJldHVy biB2YWx1ZV96ZXJvIChidWlsdGluX3R5cGUgKGV4cC0+Z2RiYXJjaCktPmJ1aWx0aW5faW50LAot LQkJCSAgICAgICBsdmFsX21lbW9yeSk7Ci0rCSAgICB7Ci0rCSAgICAgIGRvX2NsZWFudXBzIChv bGRfY2hhaW4pOwotKwkgICAgICAvKiBHREIgYWxsb3dzIGRlcmVmZXJlbmNpbmcgYW4gaW50LiAg Ki8KLSsJICAgICAgcmV0dXJuIHZhbHVlX3plcm8gKGJ1aWx0aW5fdHlwZSAoZXhwLT5nZGJhcmNo KS0+YnVpbHRpbl9pbnQsCi0rCQkJCSBsdmFsX21lbW9yeSk7Ci0rCSAgICB9Ci0gCSAgZWxzZQot IAkgICAgZXJyb3IgKF8oIkF0dGVtcHQgdG8gdGFrZSBjb250ZW50cyBvZiBhIG5vbi1wb2ludGVy IHZhbHVlLiIpKTsKLSAJfQotQEAgLTI1ODksOSArMjYzMSwxNCBAQCBldmFsdWF0ZV9zdWJleHBf c3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKLSAJIGRvLiAgImxvbmcgbG9uZyIg dmFyaWFibGVzIGFyZSByYXJlIGVub3VnaCB0aGF0Ci0gCSBCVUlMVElOX1RZUEVfTE9OR0VTVCB3 b3VsZCBzZWVtIHRvIGJlIGEgbWlzdGFrZS4gICovCi0gICAgICAgaWYgKFRZUEVfQ09ERSAodHlw ZSkgPT0gVFlQRV9DT0RFX0lOVCkKLS0JcmV0dXJuIHZhbHVlX2F0X2xhenkgKGJ1aWx0aW5fdHlw ZSAoZXhwLT5nZGJhcmNoKS0+YnVpbHRpbl9pbnQsCi0tCQkJICAgICAgKENPUkVfQUREUikgdmFs dWVfYXNfYWRkcmVzcyAoYXJnMSkpOwotLSAgICAgIHJldHVybiB2YWx1ZV9pbmQgKGFyZzEpOwot Kwl7Ci0rCSAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0rCSAgcmV0dXJuIHZhbHVlX2F0X2xh enkgKGJ1aWx0aW5fdHlwZSAoZXhwLT5nZGJhcmNoKS0+YnVpbHRpbl9pbnQsCi0rCQkJCShDT1JF X0FERFIpIHZhbHVlX2FzX2FkZHJlc3MgKGFyZzEpKTsKLSsJfQotKyAgICAgIGFyZzEgPSB2YWx1 ZV9pbmQgKGFyZzEpOwotKyAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotKyAgICAgIHJl dHVybiBhcmcxOwotIAotICAgICBjYXNlIFVOT1BfQUREUjoKLSAgICAgICAvKiBDKys6IGNoZWNr IGZvciBhbmQgaGFuZGxlIHBvaW50ZXIgdG8gbWVtYmVycy4gICovCi1AQCAtMjkzMyw3ICsyOTgw LDcgQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpl eHAsCi0gewotICAgZW51bSBleHBfb3Bjb2RlIG9wOwotICAgaW50IHBjOwotLSAgc3RydWN0IHZh bHVlICp2YWw7Ci0rICBzdHJ1Y3QgdmFsdWUgKnZhbCA9IE5VTEw7Ci0gICBzdHJ1Y3Qgc3ltYm9s ICp2YXI7Ci0gICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLSAKLUBAIC0yOTQ0LDEyICsyOTkxLDE3IEBA IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAot ICAgICB7Ci0gICAgIGNhc2UgT1BfVkFSX1ZBTFVFOgotICAgICAgIHZhciA9IGV4cC0+ZWx0c1tw YyArIDJdLnN5bWJvbDsKLSsgICAgICAvKiBhZGRyZXNzX29mX3ZhcmlhYmxlIHdpbGwgY2FsbCBv YmplY3RfYWRkcmVzc19zZXQgZm9yIGNoZWNrX3R5cGVkZWYuCi0rCSBDYWxsIGl0IG9ubHkgaWYg cmVxdWlyZWQgYXMgaXQgY2FuIGVycm9yLW91dCBvbiBWQVIgaW4gcmVnaXN0ZXIuICAqLwotKyAg ICAgIGlmIChUWVBFX0RZTkFNSUMgKFNZTUJPTF9UWVBFICh2YXIpKSkKLSsJdmFsID0gYWRkcmVz c19vZl92YXJpYWJsZSAodmFyLCBleHAtPmVsdHNbcGMgKyAxXS5ibG9jayk7Ci0gICAgICAgdHlw ZSA9IGNoZWNrX3R5cGVkZWYgKFNZTUJPTF9UWVBFICh2YXIpKTsKLSAgICAgICBpZiAoVFlQRV9D T0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkKLSAJICAmJiBDQVNUX0lTX0NPTlZFUlNJT04g KGV4cC0+bGFuZ3VhZ2VfZGVmbikpCi0gCXsKLSAJICAoKnBvcykgKz0gNDsKLS0JICB2YWwgPSBh ZGRyZXNzX29mX3ZhcmlhYmxlICh2YXIsIGV4cC0+ZWx0c1twYyArIDFdLmJsb2NrKTsKLSsJICBp ZiAoIXZhbCkKLSsJICAgIHZhbCA9IGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHZhciwgZXhwLT5lbHRz W3BjICsgMV0uYmxvY2spOwotIAkgIHJldHVybiB2YWx1ZV9jYXN0IChsb29rdXBfcG9pbnRlcl90 eXBlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSksCi0gCQkJICAgICB2YWwpOwotIAl9Ci1AQCAt MzAwMSw5ICszMDUzLDEzIEBAIGV2YWx1YXRlX3N1YmV4cF9mb3Jfc2l6ZW9mIChzdHJ1Y3QgZXhw cmVzc2lvbiAqZXhwLCBpbnQgKnBvcykKLSAKLSAgICAgY2FzZSBPUF9WQVJfVkFMVUU6Ci0gICAg ICAgKCpwb3MpICs9IDQ7Ci0tICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFNZTUJPTF9UWVBF IChleHAtPmVsdHNbcGMgKyAyXS5zeW1ib2wpKTsKLS0gICAgICByZXR1cm4KLS0JdmFsdWVfZnJv bV9sb25nZXN0IChzaXplX3R5cGUsIChMT05HRVNUKSBUWVBFX0xFTkdUSCAodHlwZSkpOwotKyAg ICAgIC8qIFdlIGRvIG5vdCBuZWVkIHRvIGNhbGwgcmVhZF92YXJfdmFsdWUgYnV0IHRoZSBvYmpl Y3QgZXZhbHVhdGlvbiBtYXkKLSsJIG5lZWQgdG8gaGF2ZSBleGVjdXRlZCBvYmplY3RfYWRkcmVz c19zZXQgd2hpY2ggbmVlZHMgdmFsaWQKLSsJIFNZTUJPTF9WQUxVRV9BRERSRVNTIG9mIHRoZSBz eW1ib2wuICBTdGlsbCBWQUxVRSByZXR1cm5lZCBieQotKwkgcmVhZF92YXJfdmFsdWUgd2UgbGVm dCBhcyBsYXp5LiAgKi8KLSsgICAgICB0eXBlID0gdmFsdWVfdHlwZSAocmVhZF92YXJfdmFsdWUg KGV4cC0+ZWx0c1twYyArIDJdLnN5bWJvbCwKLSsJCQkJCWRlcHJlY2F0ZWRfc2FmZV9nZXRfc2Vs ZWN0ZWRfZnJhbWUgKCkpKTsKLSsgICAgICByZXR1cm4gdmFsdWVfZnJvbV9sb25nZXN0IChzaXpl X3R5cGUsIChMT05HRVNUKSBUWVBFX0xFTkdUSCAodHlwZSkpOwotIAotICAgICBkZWZhdWx0Ogot ICAgICAgIHZhbCA9IGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAsIHBvcywgRVZBTF9B Vk9JRF9TSURFX0VGRkVDVFMpOwotZGlmZiAtLWdpdCBhL2dkYi9mLWxhbmcuaCBiL2dkYi9mLWxh bmcuaAotaW5kZXggZjViYjgyZC4uMjljZjViYSAxMDA2NDQKLS0tLSBhL2dkYi9mLWxhbmcuaAot KysrIGIvZ2RiL2YtbGFuZy5oCi1AQCAtMjgsNiArMjgsMTAgQEAgZXh0ZXJuIHZvaWQgZl9lcnJv ciAoY2hhciAqKTsJLyogRGVmaW5lZCBpbiBmLWV4cC55ICovCi0gZXh0ZXJuIHZvaWQgZl9wcmlu dF90eXBlIChzdHJ1Y3QgdHlwZSAqLCBjb25zdCBjaGFyICosIHN0cnVjdCB1aV9maWxlICosIGlu dCwKLSAJCQkgIGludCk7Ci0gCi0rZXh0ZXJuIGNvbnN0IGNoYXIgKmZfb2JqZWN0X2FkZHJlc3Nf ZGF0YV92YWxpZF9wcmludF90b19zdHJlYW0KLSsgIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0 IHVpX2ZpbGUgKnN0cmVhbSk7Ci0rZXh0ZXJuIHZvaWQgZl9vYmplY3RfYWRkcmVzc19kYXRhX3Zh bGlkX29yX2Vycm9yIChzdHJ1Y3QgdHlwZSAqdHlwZSk7CisrLyogQ3JlYXRlIGEgbmV3IGFycmF5 IGRpbWVuc2lvbiByZWZlcmVuY2luZyBpdHMgdGFyZ2V0IHR5cGUgVFlQRS4KICsKLSBleHRlcm4g aW50IGZfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqLCBjb25zdCBnZGJfYnl0ZSAqLCBpbnQsIENP UkVfQUREUiwKLSAJCQlzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCi0gCQkJY29uc3Qgc3RydWN0IHZh bHVlICosCi1kaWZmIC0tZ2l0IGEvZ2RiL2YtdHlwZXByaW50LmMgYi9nZGIvZi10eXBlcHJpbnQu YwotaW5kZXggZDM1YTI1NS4uZGVjODFkNSAxMDA2NDQKLS0tLSBhL2dkYi9mLXR5cGVwcmludC5j Ci0rKysgYi9nZGIvZi10eXBlcHJpbnQuYwotQEAgLTMyLDcgKzMyLDcgQEAKLSAjaW5jbHVkZSAi Z2RiY29yZS5oIgotICNpbmNsdWRlICJ0YXJnZXQuaCIKLSAjaW5jbHVkZSAiZi1sYW5nLmgiCi0t Ci0rI2luY2x1ZGUgImR3YXJmMmxvYy5oIgotICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi0gI2lu Y2x1ZGUgPGVycm5vLmg+Ci0gCi1AQCAtNDksNiArNDksMzQgQEAgdm9pZCBmX3R5cGVfcHJpbnRf dmFyc3BlY19wcmVmaXggKHN0cnVjdCB0eXBlICosIHN0cnVjdCB1aV9maWxlICosCi0gdm9pZCBm X3R5cGVfcHJpbnRfYmFzZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHVpX2ZpbGUgKiwgaW50LCBp bnQpOwotIAwKLSAKLStjb25zdCBjaGFyICoKLStmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFsaWRf cHJpbnRfdG9fc3RyZWFtIChzdHJ1Y3QgdHlwZSAqdHlwZSwKLSsJCQkJCSAgICAgc3RydWN0IHVp X2ZpbGUgKnN0cmVhbSkKLSt7Ci0rICBjb25zdCBjaGFyICptc2c7CisrICAgTXVsdGlkaW1lbnNp b25hbCBhcnJheXMgYXJlIGludGVybmFsbHkgcmVwcmVzZW50ZWQgYXMgYSBzdGFjayBvZgorKyAg IHNpbmdsZWRpbWVuc2lvbmFsIGFycmF5cyBiZWluZyByZWZlcmVuY2VkIGJ5IHRoZWlyIFRZUEVf VEFSR0VUX1RZUEUuICAqLwogKwotKyAgbXNnID0gb2JqZWN0X2FkZHJlc3NfZGF0YV9ub3RfdmFs aWQgKHR5cGUpOwotKyAgaWYgKG1zZyAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgLyogQXNzdW1p bmcgdGhlIGNvbnRlbnQgcHJpbnRlZCB0byBTVFJFQU0gc2hvdWxkIG5vdCBiZSBsb2NhbGl6ZWQu ICAqLwotKyAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIjwlcz4iLCBtc2cpOwotKyAg ICB9Cisrc3RhdGljIHN0cnVjdCB0eXBlICoKKytjcmVhdGVfc2luZ2xlX2FycmF5X2RpbWVuc2lv biAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlLAorKwkJCSAgICAg ICBzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisreworKyAgdHlw ZSA9IGNyZWF0ZV9hcnJheV90eXBlIChOVUxMLCB0eXBlLCByYW5nZV90eXBlKTsKICsKLSsgIHJl dHVybiBtc2c7Ci0rfQorKyAgLyogVGhlc2UgZ2VuZXJpYyB0eXBlIGF0dHJpYnV0ZXMgbmVlZCB0 byBiZSBmZXRjaGVkIGJ5CisrICAgICBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgPG11bHRpX2Y3 N19zdWJzY3JpcHQ+J3MgY2FsbCBvZgorKyAgICAgdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIG9u bHkgZm9yIHRoZSBpbm5lcm1vc3QgYXJyYXkgdHlwZS4gICovCisrICBmZXRjaF9kaWVfdHlwZV9h dHRycyAoZGllLCB0eXBlLCBjdSk7CiArCi0rdm9pZAotK2Zfb2JqZWN0X2FkZHJlc3NfZGF0YV92 YWxpZF9vcl9lcnJvciAoc3RydWN0IHR5cGUgKnR5cGUpCi0rewotKyAgY29uc3QgY2hhciAqbXNn OworKyAgLyogVGhlc2UgZ2VuZXJpYyB0eXBlIGF0dHJpYnV0ZXMgYXJlIGNoZWNrZWQgZm9yIGFs bG9jYXRlZC9hc3NvY2lhdGVkCisrICAgICB2YWxpZGl0eSB3aGlsZSBhY2Nlc3NpbmcgRklFTERf TE9DX0tJTkRfRFdBUkZfQkxPQ0suICAqLworKyAgZmV0Y2hfZGllX3R5cGVfYXR0cnMgKGRpZSwg cmFuZ2VfdHlwZSwgY3UpOwogKwotKyAgbXNnID0gb2JqZWN0X2FkZHJlc3NfZGF0YV9ub3RfdmFs aWQgKHR5cGUpOwotKyAgaWYgKG1zZyAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgZXJyb3IgKF8o IkNhbm5vdCBhY2Nlc3MgaXQgYmVjYXVzZSB0aGUgJXMuIiksIF8obXNnKSk7Ci0rICAgIH0KKysg IHJldHVybiB0eXBlOwogK30KICsKLSAvKiBMRVZFTCBpcyB0aGUgZGVwdGggdG8gaW5kZW50IGxp bmVzIGJ5LiAgKi8KLSAKLSB2b2lkCi1AQCAtNTgsNiArODYsOSBAQCBmX3ByaW50X3R5cGUgKHN0 cnVjdCB0eXBlICp0eXBlLCBjb25zdCBjaGFyICp2YXJzdHJpbmcsIHN0cnVjdCB1aV9maWxlICpz dHJlYW0sCi0gICBlbnVtIHR5cGVfY29kZSBjb2RlOwotICAgaW50IGRlbWFuZ2xlZF9hcmdzOwor IC8qIEV4dHJhY3QgYWxsIGluZm9ybWF0aW9uIGZyb20gYSBEV19UQUdfYXJyYXlfdHlwZSBESUUg YW5kIHB1dCBpdCBpbgorICAgIHRoZSBESUUncyB0eXBlIGZpZWxkLiAgRm9yIG5vdywgdGhpcyBv bmx5IGhhbmRsZXMgb25lIGRpbWVuc2lvbmFsCisgICAgYXJyYXlzLiAgKi8KK0BAIC01NTQ0LDcg KzY1NjAsNyBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSkKKyAgIHN0cnVjdCB0eXBlICplbGVtZW50X3R5cGUsICpyYW5nZV90eXBl LCAqaW5kZXhfdHlwZTsKKyAgIHN0cnVjdCB0eXBlICoqcmFuZ2VfdHlwZXMgPSBOVUxMOworICAg c3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKKy0gIGludCBuZGltID0gMDsKKysgIGludCBuZGltID0g MCwgaTsKKyAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOworICAgY2hhciAqbmFtZTsKICAKLSsg IGlmIChmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFsaWRfcHJpbnRfdG9fc3RyZWFtICh0eXBlLCBz dHJlYW0pICE9IE5VTEwpCi0rICAgIHJldHVybjsKLSsKLSAgIGZfdHlwZV9wcmludF9iYXNlICh0 eXBlLCBzdHJlYW0sIHNob3csIGxldmVsKTsKLSAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOwot ICAgaWYgKCh2YXJzdHJpbmcgIT0gTlVMTCAmJiAqdmFyc3RyaW5nICE9ICdcMCcpCi1AQCAtMTY1 LDYgKzE5Niw5IEBAIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUgKnR5 cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCitAQCAtNTU5NywxNyArNjYxMywxMSBAQCByZWFk X2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK KyAgIHR5cGUgPSBlbGVtZW50X3R5cGU7CiAgCi0gICBRVUlUOworICAgaWYgKHJlYWRfYXJyYXlf b3JkZXIgKGRpZSwgY3UpID09IERXX09SRF9jb2xfbWFqb3IpCistICAgIHsKKy0gICAgICBpbnQg aSA9IDA7CistCistICAgICAgd2hpbGUgKGkgPCBuZGltKQorLQl0eXBlID0gY3JlYXRlX2FycmF5 X3R5cGUgKE5VTEwsIHR5cGUsIHJhbmdlX3R5cGVzW2krK10pOworLSAgICB9CistICBlbHNlCist ICAgIHsKKy0gICAgICB3aGlsZSAobmRpbS0tID4gMCkKKy0JdHlwZSA9IGNyZWF0ZV9hcnJheV90 eXBlIChOVUxMLCB0eXBlLCByYW5nZV90eXBlc1tuZGltXSk7CistICAgIH0KKysgICAgZm9yIChp ID0gMDsgaSA8IG5kaW07IGkrKykKKysgICAgICB0eXBlID0gY3JlYXRlX3NpbmdsZV9hcnJheV9k aW1lbnNpb24gKHR5cGUsIHJhbmdlX3R5cGVzW2ldLCBkaWUsIGN1KTsKKysgIGVsc2UgLyogKHJl YWRfYXJyYXlfb3JkZXIgKGRpZSwgY3UpID09IERXX09SRF9yb3dfbWFqb3IpICovCisrICAgIGZv ciAoaSA9IG5kaW0gLSAxOyBpID49IDA7IGktLSkKKysgICAgICB0eXBlID0gY3JlYXRlX3Npbmds ZV9hcnJheV9kaW1lbnNpb24gKHR5cGUsIHJhbmdlX3R5cGVzW2ldLCBkaWUsIGN1KTsKICAKLSsg IGlmIChUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9UWVBFREVGKQotKyAgICBDSEVDS19U WVBFREVGICh0eXBlKTsKKyAgIC8qIFVuZGVyc3RhbmQgRHdhcmYyIHN1cHBvcnQgZm9yIHZlY3Rv ciB0eXBlcyAobGlrZSB0aGV5IG9jY3VyIG9uCisgICAgICB0aGUgUG93ZXJQQyB3LyBBbHRpVmVj KS4gIEdjYyBqdXN0IGFkZHMgYW5vdGhlciBhdHRyaWJ1dGUgdG8gdGhlCitAQCAtNjA2MSwyOSAr NzA3MSwxMTQgQEAgcmVhZF90YWdfc3RyaW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29i amZpbGVfYXJjaCAob2JqZmlsZSk7CisgICBzdHJ1Y3QgdHlwZSAqdHlwZSwgKnJhbmdlX3R5cGUs ICppbmRleF90eXBlLCAqY2hhcl90eXBlOworICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKKy0g IHVuc2lnbmVkIGludCBsZW5ndGg7CisrICBpbnQgbGVuZ3RoOwogKwotICAgc3dpdGNoIChUWVBF X0NPREUgKHR5cGUpKQotICAgICB7Ci0gICAgIGNhc2UgVFlQRV9DT0RFX0FSUkFZOgotZGlmZiAt LWdpdCBhL2dkYi9mLXZhbHByaW50LmMgYi9nZGIvZi12YWxwcmludC5jCi1pbmRleCA4NWY2OThk Li4yZjcyYjk3IDEwMDY0NAotLS0tIGEvZ2RiL2YtdmFscHJpbnQuYwotKysrIGIvZ2RiL2YtdmFs cHJpbnQuYwotQEAgLTU0LDE1ICs1NCwxNyBAQCBpbnQgZjc3X2FycmF5X29mZnNldF90YmxbTUFY X0ZPUlRSQU5fRElNUyArIDFdWzJdOwotIC8qIFRoZSBmb2xsb3dpbmcgbWFjcm8gZ2l2ZXMgdXMg dGhlIHNpemUgb2YgdGhlIG50aCBkaW1lbnNpb24sIFdoZXJlIAotICAgIG4gaXMgMSBiYXNlZC4g Ki8KLSAKLS0jZGVmaW5lIEY3N19ESU1fU0laRShuKSAoZjc3X2FycmF5X29mZnNldF90Ymxbbl1b MV0pCi0rI2RlZmluZSBGNzdfRElNX0NPVU5UKG4pIChmNzdfYXJyYXlfb2Zmc2V0X3RibFtuXVsx XSkKLSAKLS0vKiBUaGUgZm9sbG93aW5nIGdpdmVzIHVzIHRoZSBvZmZzZXQgZm9yIHJvdyBuIHdo ZXJlIG4gaXMgMS1iYXNlZC4gKi8KLSsvKiBUaGUgZm9sbG93aW5nIGdpdmVzIHVzIHRoZSBlbGVt ZW50IHNpemUgZm9yIHJvdyBuIHdoZXJlIG4gaXMgMS1iYXNlZC4gKi8KLSAKLS0jZGVmaW5lIEY3 N19ESU1fT0ZGU0VUKG4pIChmNzdfYXJyYXlfb2Zmc2V0X3RibFtuXVswXSkKLSsjZGVmaW5lIEY3 N19ESU1fQllURV9TVFJJREUobikgKGY3N19hcnJheV9vZmZzZXRfdGJsW25dWzBdKQotIAotIGlu dAotIGY3N19nZXRfbG93ZXJib3VuZCAoc3RydWN0IHR5cGUgKnR5cGUpCi0gewotKyAgZl9vYmpl Y3RfYWRkcmVzc19kYXRhX3ZhbGlkX29yX2Vycm9yICh0eXBlKTsKKysgIGluZGV4X3R5cGUgPSBv YmpmaWxlX3R5cGUgKG9iamZpbGUpLT5idWlsdGluX2ludDsKKysgIC8qIFJBTkdFX1RZUEUgaXMg YWxsb2NhdGVkIGZyb20gT0JKRklMRSwgbm90IGFzIGEgcGVybWFuZW50IHR5cGUuICAqLworKyAg cmFuZ2VfdHlwZSA9IGFsbG9jX3R5cGUgKG9iamZpbGUpOworKyAgLyogTE9XX0JPVU5EIGFuZCBI SUdIX0JPVU5EIGFyZSBzZXQgZm9yIHJlYWwgYmVsb3cuICAqLworKyAgcmFuZ2VfdHlwZSA9IGNy ZWF0ZV9yYW5nZV90eXBlIChyYW5nZV90eXBlLCBpbmRleF90eXBlLCAwLCAtMSk7CiArCi0gICBp ZiAoVFlQRV9BUlJBWV9MT1dFUl9CT1VORF9JU19VTkRFRklORUQgKHR5cGUpKQotICAgICBlcnJv ciAoXygiTG93ZXIgYm91bmQgbWF5IG5vdCBiZSAnKicgaW4gRjc3IikpOworKyAgLyogQy9DKysg c2hvdWxkIHByb2JhYmx5IGhhdmUgdGhlIGxvdyBib3VuZCAwIGJ1dCBDL0MrKyBkb2VzIG5vdCB1 c2UKKysgICAgIERXX1RBR19zdHJpbmdfdHlwZS4gICovCisrICBUWVBFX0xPV19CT1VORCAocmFu Z2VfdHlwZSkgPSAxOwogIAotQEAgLTcyLDE0ICs3NCwxNyBAQCBmNzdfZ2V0X2xvd2VyYm91bmQg KHN0cnVjdCB0eXBlICp0eXBlKQotIGludAotIGY3N19nZXRfdXBwZXJib3VuZCAoc3RydWN0IHR5 cGUgKnR5cGUpCi0gewotKyAgZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX29yX2Vycm9yICh0 eXBlKTsKKyAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9zdHJpbmdfbGVuZ3RoLCBj dSk7CistICBpZiAoYXR0cikKKy0gICAgeworLSAgICAgIGxlbmd0aCA9IERXX1VOU05EIChhdHRy KTsKKysgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCisrICAgIHsKKysg ICAgICAvKiBTZWN1cml0eSBjaGVjayBmb3IgYSBzaXplIG92ZXJmbG93LiAgKi8KKysgICAgICBp ZiAoRFdfQkxPQ0sgKGF0dHIpLT5zaXplICsgMiA8IERXX0JMT0NLIChhdHRyKS0+c2l6ZSkKKysJ VFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSA9IDE7CisrICAgICAgLyogRXh0ZW5kIHRoZSBE V0FSRiBibG9jayBieSBhIG5ldyBEV19PUF9kZXJlZi9EV19PUF9kZXJlZl9zaXplCisrCSBpbnN0 cnVjdGlvbiBhcyBEV19BVF9zdHJpbmdfbGVuZ3RoIHNwZWNpZmllcyB0aGUgbGVuZ3RoIGxvY2F0 aW9uLCBub3QKKysJIGl0cyB2YWx1ZS4gICovCisrICAgICAgZWxzZQorKwl7CisrCSAgc3RydWN0 IGR3YXJmMl9sb2NleHByX2JhdG9uICpsZW5ndGhfYmF0b24gPSBOVUxMOworKwkgIHN0cnVjdCBk d2FyZl9ibG9jayAqYmxrID0gRFdfQkxPQ0sgKGF0dHIpOwogKwotICAgaWYgKFRZUEVfQVJSQVlf VVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEICh0eXBlKSkKLSAgICAgewotLSAgICAgIC8qIFdlIGhh dmUgYW4gYXNzdW1lZCBzaXplIGFycmF5IG9uIG91ciBoYW5kcy4gIEFzc3VtZSB0aGF0Ci0tCSB1 cHBlcl9ib3VuZCA9PSBsb3dlcl9ib3VuZCBzbyB0aGF0IHdlIHNob3cgYXQgbGVhc3QgMSBlbGVt ZW50LgotLQkgSWYgdGhlIHVzZXIgd2FudHMgdG8gc2VlIG1vcmUgZWxlbWVudHMsIGxldCBoaW0g bWFudWFsbHkgYXNrIGZvciAnZW0KLS0JIGFuZCB3ZSdsbCBzdWJzY3JpcHQgdGhlIGFycmF5IGFu ZCBzaG93IGhpbS4gICovCi0rICAgICAgLyogV2UgaGF2ZSBhbiBhc3N1bWVkIHNpemUgYXJyYXkg b24gb3VyIGhhbmRzLiAgQXMgdHlwZV9sZW5ndGhfZ2V0Ci0rCSBhbHJlYWR5IGFzc3VtZXMgYSBs ZW5ndGggemVybyBvZiBhcnJheXMgd2l0aCB1bmRlcmZpbmVkIGJvdW5kcyBWQUxBRERSCi0rCSBw YXNzZWQgdG8gdGhlIEZvcnRyYW4gZnVuY3Rpb25zIGRvZXMgbm90IGNvbnRhaW5lZCB0aGUgcmVh bCBpbmZlcmlvcgotKwkgbWVtb3J5IGNvbnRlbnQuICBVc2VyIHNob3VsZCByZXF1ZXN0IHByaW50 aW5nIG9mIHNwZWNpZmljIGFycmF5Ci0rCSBlbGVtZW50cyBpbnN0ZWFkLiAgKi8KLSAKLS0gICAg ICByZXR1cm4gZjc3X2dldF9sb3dlcmJvdW5kICh0eXBlKTsKLSsgICAgICByZXR1cm4gZjc3X2dl dF9sb3dlcmJvdW5kICh0eXBlKSAtIDE7Ci0gICAgIH0KLSAKLSAgIHJldHVybiBUWVBFX0FSUkFZ X1VQUEVSX0JPVU5EX1ZBTFVFICh0eXBlKTsKLUBAIC0xMzQsMjQgKzEzOSwyOSBAQCBmNzdfY3Jl YXRlX2FycmF5cHJpbnRfb2Zmc2V0X3RibCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9m aWxlICpzdHJlYW0pCi0gICAgICAgdXBwZXIgPSBmNzdfZ2V0X3VwcGVyYm91bmQgKHRtcF90eXBl KTsKLSAgICAgICBsb3dlciA9IGY3N19nZXRfbG93ZXJib3VuZCAodG1wX3R5cGUpOwotIAotLSAg ICAgIEY3N19ESU1fU0laRSAobmRpbWVuKSA9IHVwcGVyIC0gbG93ZXIgKyAxOwotKyAgICAgIEY3 N19ESU1fQ09VTlQgKG5kaW1lbikgPSB1cHBlciAtIGxvd2VyICsgMTsKKysJICAvKiBUdXJuIGFu eSBzaW5nbGUgRFdfT1BfcmVnKiBpbnRvIERXX09QX2JyZWcqKDApIGJ1dCBjbGVhcmluZworKwkg ICAgIERXX09QX2RlcmVmKiBpbiBzdWNoIGNhc2UuICAqLwogKwotKyAgICAgIEY3N19ESU1fQllU RV9TVFJJREUgKG5kaW1lbikgPQotKyAgICAgICAgVFlQRV9BUlJBWV9CWVRFX1NUUklERV9WQUxV RSAodG1wX3R5cGUpOwotIAotICAgICAgIHRtcF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAodG1w X3R5cGUpOwotICAgICAgIG5kaW1lbisrOworKwkgIGlmIChibGstPnNpemUgPT0gMSAmJiBibGst PmRhdGFbMF0gPj0gRFdfT1BfcmVnMAorKwkgICAgICAmJiBibGstPmRhdGFbMF0gPD0gRFdfT1Bf cmVnMzEpCisrCSAgICBsZW5ndGhfYmF0b24gPSBkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9u IChhdHRyLCBjdSk7CisrCSAgZWxzZSBpZiAoYmxrLT5zaXplID4gMSAmJiBibGstPmRhdGFbMF0g PT0gRFdfT1BfcmVneCkKKysJICAgIHsKKysJICAgICAgVUxPTkdFU1QgdWxvbmdlc3Q7CisrCSAg ICAgIGNvbnN0IGdkYl9ieXRlICplbmQ7CisrCisrCSAgICAgIGVuZCA9IHJlYWRfdWxlYjEyOCAo JmJsay0+ZGF0YVsxXSwgJmJsay0+ZGF0YVtibGstPnNpemVdLAorKwkJCQkgICZ1bG9uZ2VzdCk7 CisrCSAgICAgIGlmIChlbmQgPT0gJmJsay0+ZGF0YVtibGstPnNpemVdKQorKwkJbGVuZ3RoX2Jh dG9uID0gZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOworKwkgICAgfQor KworKwkgIGlmIChsZW5ndGhfYmF0b24gPT0gTlVMTCkKKysJICAgIHsKKysJICAgICAgc3RydWN0 IGF0dHJpYnV0ZSAqc2l6ZV9hdHRyOworKwkgICAgICBnZGJfYnl0ZSAqZGF0YTsKKysKKysJICAg ICAgbGVuZ3RoX2JhdG9uID0gb2JzdGFja19hbGxvYyAoJmN1LT5jb21wX3VuaXRfb2JzdGFjaywK KysJCQkJCSAgICBzaXplb2YgKCpsZW5ndGhfYmF0b24pKTsKKysJICAgICAgbGVuZ3RoX2JhdG9u LT5wZXJfY3UgPSBjdS0+cGVyX2N1OworKwkgICAgICBsZW5ndGhfYmF0b24tPnNpemUgPSBEV19C TE9DSyAoYXR0ciktPnNpemUgKyAyOworKwkgICAgICBkYXRhID0gb2JzdGFja19hbGxvYyAoJmN1 LT5jb21wX3VuaXRfb2JzdGFjaywKKysJCQkJICAgIGxlbmd0aF9iYXRvbi0+c2l6ZSk7CisrCSAg ICAgIGxlbmd0aF9iYXRvbi0+ZGF0YSA9IGRhdGE7CisrCSAgICAgIG1lbWNweSAoZGF0YSwgRFdf QkxPQ0sgKGF0dHIpLT5kYXRhLCBEV19CTE9DSyAoYXR0ciktPnNpemUpOworKworKwkgICAgICAv KiBEV19BVF9CWVRFX1NJWkUgZXhpc3RpbmcgdG9nZXRoZXIgd2l0aCBEV19BVF9TVFJJTkdfTEVO R1RICisrCQkgc3BlY2lmaWVzIHRoZSBzaXplIG9mIGFuIGludGVnZXIgdG8gZmV0Y2guICAqLwor KwkgICAgICBzaXplX2F0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3NpemUsIGN1 KTsKKysJICAgICAgaWYgKHNpemVfYXR0cikKKysJCXsKKysJCSAgZGF0YVtEV19CTE9DSyAoYXR0 ciktPnNpemVdID0gRFdfT1BfZGVyZWZfc2l6ZTsKKysJCSAgZGF0YVtEV19CTE9DSyAoYXR0cikt PnNpemUgKyAxXSA9IERXX1VOU05EIChzaXplX2F0dHIpOworKwkJICBpZiAoZGF0YVtEV19CTE9D SyAoYXR0ciktPnNpemUgKyAxXSAhPSBEV19VTlNORCAoc2l6ZV9hdHRyKSkKKysJCSAgICBjb21w bGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCisrCQkJICAgICAgIF8oIkRXX0FUX3N0cmluZ19s ZW5ndGgncyBEV19BVF9ieXRlX3NpemUgIgorKwkJCQkgImludGVnZXIgZXhjZWVkcyB0aGUgYnl0 ZSBzaXplIHN0b3JhZ2UiKSk7CisrCQl9CisrCSAgICAgIGVsc2UKKysJCXsKKysJCSAgZGF0YVtE V19CTE9DSyAoYXR0ciktPnNpemVdID0gRFdfT1BfZGVyZWY7CisrCQkgIGRhdGFbRFdfQkxPQ0sg KGF0dHIpLT5zaXplICsgMV0gPSBEV19PUF9ub3A7CisrCQl9CisrCSAgICB9CisrCisrCSAgVFlQ RV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+aGlnaC5raW5kCisrCSAgICA9IFJBTkdFX0JPVU5E X0tJTkRfRFdBUkZfQkxPQ0s7CisrCSAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+aGln aC51LmR3YXJmX2Jsb2NrID0gbGVuZ3RoX2JhdG9uOworKwkgIFRZUEVfRFlOQU1JQyAocmFuZ2Vf dHlwZSkgPSAxOworKwl9CiAgICAgIH0KLSAKLS0gIC8qIE5vdyB3ZSBtdWx0aXBseSBlbHRsZW4g YnkgYWxsIHRoZSBvZmZzZXRzLCBzbyB0aGF0IGxhdGVyIHdlIAotKyAgLyogTm93IHdlIG11bHRp cGx5IGVsdGxlbiBieSBhbGwgdGhlIEJZVEVfU1RSSURFcywgc28gdGhhdCBsYXRlciB3ZQotICAg ICAgY2FuIHByaW50IG91dCBhcnJheSBlbGVtZW50cyBjb3JyZWN0bHkuICBVcCB0aWxsIG5vdyB3 ZSAKLS0gICAgIGtub3cgYW4gb2Zmc2V0IHRvIGFwcGx5IHRvIGdldCB0aGUgaXRlbSBidXQgd2Ug YWxzbyAKLSsgICAgIGtub3cgYW4gZWx0bGVuIHRvIGFwcGx5IHRvIGdldCB0aGUgaXRlbSBidXQg d2UgYWxzbwotICAgICAgaGF2ZSB0byBrbm93IGhvdyBtdWNoIHRvIGFkZCB0byBnZXQgdG8gdGhl IG5leHQgaXRlbSAqLwotIAotICAgbmRpbWVuLS07Ci0gICBlbHRsZW4gPSBUWVBFX0xFTkdUSCAo dG1wX3R5cGUpOwotLSAgRjc3X0RJTV9PRkZTRVQgKG5kaW1lbikgPSBlbHRsZW47Ci0rICBpZiAo Rjc3X0RJTV9CWVRFX1NUUklERSAobmRpbWVuKSA9PSAwKQotKyAgICBGNzdfRElNX0JZVEVfU1RS SURFIChuZGltZW4pID0gZWx0bGVuOwotICAgd2hpbGUgKC0tbmRpbWVuID4gMCkKKyAgIGVsc2UK ICAgICAgewotLSAgICAgIGVsdGxlbiAqPSBGNzdfRElNX1NJWkUgKG5kaW1lbiArIDEpOwotLSAg ICAgIEY3N19ESU1fT0ZGU0VUIChuZGltZW4pID0gZWx0bGVuOwotKyAgICAgIGVsdGxlbiAqPSBG NzdfRElNX0NPVU5UIChuZGltZW4gKyAxKTsKLSsgICAgICBpZiAoRjc3X0RJTV9CWVRFX1NUUklE RSAobmRpbWVuKSA9PSAwKQotKwlGNzdfRElNX0JZVEVfU1RSSURFIChuZGltZW4pID0gZWx0bGVu OworLSAgICAgIC8qIGNoZWNrIGZvciB0aGUgRFdfQVRfYnl0ZV9zaXplIGF0dHJpYnV0ZSAqLwor KyAgICAgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19jb25zdGFudCAoYXR0cikpCisrCXsKKysJ ICAvKiBXZSBjdXJyZW50bHkgZG8gbm90IHN1cHBvcnQgYSBjb25zdGFudCBhZGRyZXNzIHdoZXJl IHRoZSBsb2NhdGlvbgorKwkgICAgIHNob3VsZCBiZSByZWFkIGZyb20gLSBhdHRyX2Zvcm1faXNf YmxvY2sgaXMgZXhwZWN0ZWQgaW5zdGVhZC4gIFNlZQorKwkgICAgIERXQVJGIGZvciB0aGUgRFdf QVRfU1RSSU5HX0xFTkdUSCB2cy4gRFdfQVRfQllURV9TSVpFIGRpZmZlcmVuY2UuCisrCSAgICAg Ki8KKysJICAvKiBQQVNTVEhSVSAqLworKwl9CisrCisgICAgICAgYXR0ciA9IGR3YXJmMl9hdHRy IChkaWUsIERXX0FUX2J5dGVfc2l6ZSwgY3UpOworLSAgICAgIGlmIChhdHRyKQorLSAgICAgICAg eworLSAgICAgICAgICBsZW5ndGggPSBEV19VTlNORCAoYXR0cik7CistICAgICAgICB9CisrICAg ICAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKKysJeworKwkgIFRZUEVf UkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gua2luZAorKwkgICAgPSBSQU5HRV9CT1VORF9L SU5EX0RXQVJGX0JMT0NLOworKwkgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gu dS5kd2FyZl9ibG9jayA9CisrCQkJCQlkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChhdHRy LCBjdSk7CisrCSAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7CisrCX0KKysgICAgICBl bHNlIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19jb25zdGFudCAoYXR0cikpCisrCVRZUEVfSElH SF9CT1VORCAocmFuZ2VfdHlwZSkgPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0 dHIsIDApOworICAgICAgIGVsc2UKKy0gICAgICAgIHsKKy0gICAgICAgICAgbGVuZ3RoID0gMTsK Ky0gICAgICAgIH0KKysJVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSA9IDE7CiAgICAgIH0K LSB9CiAgCi1AQCAtMTcyLDM0ICsxODIsMzQgQEAgZjc3X3ByaW50X2FycmF5XzEgKGludCBuc3Ms IGludCBuZGltZW5zaW9ucywgc3RydWN0IHR5cGUgKnR5cGUsCistICBpbmRleF90eXBlID0gb2Jq ZmlsZV90eXBlIChvYmpmaWxlKS0+YnVpbHRpbl9pbnQ7CistICByYW5nZV90eXBlID0gY3JlYXRl X3JhbmdlX3R5cGUgKE5VTEwsIGluZGV4X3R5cGUsIDEsIGxlbmd0aCk7CisgICBjaGFyX3R5cGUg PSBsYW5ndWFnZV9zdHJpbmdfY2hhcl90eXBlIChjdS0+bGFuZ3VhZ2VfZGVmbiwgZ2RiYXJjaCk7 CisgICB0eXBlID0gY3JlYXRlX3N0cmluZ190eXBlIChOVUxMLCBjaGFyX3R5cGUsIHJhbmdlX3R5 cGUpOwogIAotICAgaWYgKG5zcyAhPSBuZGltZW5zaW9ucykKLSAgICAgewotLSAgICAgIGZvciAo aSA9IDA7IChpIDwgRjc3X0RJTV9TSVpFIChuc3MpICYmICgqZWx0cykgPCBvcHRpb25zLT5wcmlu dF9tYXgpOyBpKyspCi0rICAgICAgZm9yIChpID0gMDsgKGkgPCBGNzdfRElNX0NPVU5UIChuc3Mp ICYmICgqZWx0cykgPCBvcHRpb25zLT5wcmludF9tYXgpOyBpKyspCi0gCXsKLSAJICBmcHJpbnRm X2ZpbHRlcmVkIChzdHJlYW0sICIoICIpOwotIAkgIGY3N19wcmludF9hcnJheV8xIChuc3MgKyAx LCBuZGltZW5zaW9ucywgVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCi0tCQkJICAgICB2YWxhZGRy ICsgaSAqIEY3N19ESU1fT0ZGU0VUIChuc3MpLAotLQkJCSAgICAgYWRkcmVzcyArIGkgKiBGNzdf RElNX09GRlNFVCAobnNzKSwKLSsJCQkgICAgIHZhbGFkZHIgKyBpICogRjc3X0RJTV9CWVRFX1NU UklERSAobnNzKSwKLSsJCQkgICAgIGFkZHJlc3MgKyBpICogRjc3X0RJTV9CWVRFX1NUUklERSAo bnNzKSwKLSAJCQkgICAgIHN0cmVhbSwgcmVjdXJzZSwgdmFsLCBvcHRpb25zLCBlbHRzKTsKLSAJ ICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpICIpOwotIAl9Ci0tICAgICAgaWYgKCplbHRz ID49IG9wdGlvbnMtPnByaW50X21heCAmJiBpIDwgRjc3X0RJTV9TSVpFIChuc3MpKSAKLSsgICAg ICBpZiAoKmVsdHMgPj0gb3B0aW9ucy0+cHJpbnRfbWF4ICYmIGkgPCBGNzdfRElNX0NPVU5UIChu c3MpKQotIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4iKTsKLSAgICAgfQotICAgZWxz ZQotICAgICB7Ci0tICAgICAgZm9yIChpID0gMDsgaSA8IEY3N19ESU1fU0laRSAobnNzKSAmJiAo KmVsdHMpIDwgb3B0aW9ucy0+cHJpbnRfbWF4OwotKyAgICAgIGZvciAoaSA9IDA7IGkgPCBGNzdf RElNX0NPVU5UIChuc3MpICYmICgqZWx0cykgPCBvcHRpb25zLT5wcmludF9tYXg7Ci0gCSAgIGkr KywgKCplbHRzKSsrKQotIAl7Ci0gCSAgdmFsX3ByaW50IChUWVBFX1RBUkdFVF9UWVBFICh0eXBl KSwKLS0JCSAgICAgdmFsYWRkciArIGkgKiBGNzdfRElNX09GRlNFVCAobmRpbWVuc2lvbnMpLAot KwkJICAgICB2YWxhZGRyICsgaSAqIEY3N19ESU1fQllURV9TVFJJREUgKG5kaW1lbnNpb25zKSwK LSAJCSAgICAgMCwKLS0JCSAgICAgYWRkcmVzcyArIGkgKiBGNzdfRElNX09GRlNFVCAobmRpbWVu c2lvbnMpLAotKwkJICAgICBhZGRyZXNzICsgaSAqIEY3N19ESU1fQllURV9TVFJJREUgKG5kaW1l bnNpb25zKSwKLSAJCSAgICAgc3RyZWFtLCByZWN1cnNlLCB2YWwsIG9wdGlvbnMsIGN1cnJlbnRf bGFuZ3VhZ2UpOworQEAgLTYzMjYsNjAgKzc0MjEsMTM2IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorICAgc3RydWN0IHR5 cGUgKmJhc2VfdHlwZTsKKyAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOworICAgc3RydWN0IGF0 dHJpYnV0ZSAqYXR0cjsKKy0gIExPTkdFU1QgbG93ID0gMDsKKy0gIExPTkdFU1QgaGlnaCA9IC0x OworKyAgTE9OR0VTVCBsb3c7CisgICBjaGFyICpuYW1lOworICAgTE9OR0VTVCBuZWdhdGl2ZV9t YXNrOwogIAotLQkgIGlmIChpICE9IChGNzdfRElNX1NJWkUgKG5zcykgLSAxKSkKLSsJICBpZiAo aSAhPSAoRjc3X0RJTV9DT1VOVCAobnNzKSAtIDEpKQotIAkgICAgZnByaW50Zl9maWx0ZXJlZCAo c3RyZWFtLCAiLCAiKTsKKyAgIGJhc2VfdHlwZSA9IGRpZV90eXBlIChkaWUsIGN1KTsKKysgIC8q IFByZXNlcnZlIEJBU0VfVFlQRSdzIG9yaWdpbmFsIHR5cGUsIGp1c3Qgc2V0IGl0cyBMRU5HVEgu ICAqLworKyAgY2hlY2tfdHlwZWRlZiAoYmFzZV90eXBlKTsKICAKLSAJICBpZiAoKCplbHRzID09 IG9wdGlvbnMtPnByaW50X21heCAtIDEpCi0tCSAgICAgICYmIChpICE9IChGNzdfRElNX1NJWkUg KG5zcykgLSAxKSkpCi0rCSAgICAgICYmIChpICE9IChGNzdfRElNX0NPVU5UIChuc3MpIC0gMSkp KQotIAkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLi4uIik7Ci0gCX0KLSAgICAgfQot QEAgLTI1Niw2ICsyNjYsOSBAQCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0 IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAotICAgQ09SRV9BRERSIGFk ZHI7Ci0gICBpbnQgaW5kZXg7CisgICAvKiBUaGUgZGllX3R5cGUgY2FsbCBhYm92ZSBtYXkgaGF2 ZSBhbHJlYWR5IHNldCB0aGUgdHlwZSBmb3IgdGhpcyBESUUuICAqLworICAgcmFuZ2VfdHlwZSA9 IGdldF9kaWVfdHlwZSAoZGllLCBjdSk7CisgICBpZiAocmFuZ2VfdHlwZSkKKyAgICAgcmV0dXJu IHJhbmdlX3R5cGU7CiAgCi0rICBpZiAoZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX3ByaW50 X3RvX3N0cmVhbSAodHlwZSwgc3RyZWFtKSAhPSBOVUxMKQotKyAgICByZXR1cm4gMDsKKy0gIGlm IChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfZm9ydHJhbikKKy0gICAgeworLSAgICAgIC8qIEZP UlRSQU4gaW1wbGllcyBhIGxvd2VyIGJvdW5kIG9mIDEsIGlmIG5vdCBnaXZlbi4gICovCistICAg ICAgbG93ID0gMTsKKy0gICAgfQorKyAgLyogTE9XX0JPVU5EIGFuZCBISUdIX0JPVU5EIGFyZSBz ZXQgZm9yIHJlYWwgYmVsb3cuICAqLworKyAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBl IChOVUxMLCBiYXNlX3R5cGUsIDAsIC0xKTsKICsKLSAgIENIRUNLX1RZUEVERUYgKHR5cGUpOwot ICAgc3dpdGNoIChUWVBFX0NPREUgKHR5cGUpKQotICAgICB7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2Zp bmR2YXIuYyBiL2dkYi9maW5kdmFyLmMKLWluZGV4IGUwY2ExMmMuLmRlNjMxMWEgMTAwNjQ0Ci0t LS0gYS9nZGIvZmluZHZhci5jCi0rKysgYi9nZGIvZmluZHZhci5jCi1AQCAtMzUsNiArMzUsNyBA QAotICNpbmNsdWRlICJ1c2VyLXJlZ3MuaCIKKysgIG5lZ2F0aXZlX21hc2sgPSAKKysgICAgKExP TkdFU1QpIC0xIDw8IChUWVBFX0xFTkdUSCAoYmFzZV90eXBlKSAqIFRBUkdFVF9DSEFSX0JJVCAt IDEpOworKworKyAgLyogRXhjbHVkZSBsYW5ndWFnZV9hZGEgZnJvbSBhbnkgVFlQRV9EWU5BTUlD IGNvbnN0cnVjdHMgYmVsb3cuICBHREIgQWRhCisrICAgICBzdXBwb3J0cyBpbXBsZW1lbnRzIHRo ZSBkeW5hbWljIGJvdW5kcyBpbiBhIG5vbi1EV0FSRiB3YXkgYW5kIHRoZQorKyAgICAgZXhpc3Rp bmcgRFdBUkYgZHluYW1pYyBib3VuZHMgYXJlIGludmFsaWQsIGxlYWRpbmcgdG8gbWVtb3J5IGFj Y2VzcworKyAgICAgZXJyb3JzLiAgKi8KKyAKKy0gIC8qIEZJWE1FOiBGb3IgdmFyaWFibGUgc2l6 ZWQgYXJyYXlzIGVpdGhlciBvZiB0aGVzZSBjb3VsZCBiZQorLSAgICAgYSB2YXJpYWJsZSByYXRo ZXIgdGhhbiBhIGNvbnN0YW50IHZhbHVlLiAgV2UnbGwgYWxsb3cgaXQsCistICAgICBidXQgd2Ug ZG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGl0LiAgKi8KKyAgIGF0dHIgPSBkd2FyZjJfYXR0ciAo ZGllLCBEV19BVF9sb3dlcl9ib3VuZCwgY3UpOworLSAgaWYgKGF0dHIpCistICAgIGxvdyA9IGR3 YXJmMl9nZXRfYXR0cl9jb25zdGFudF92YWx1ZSAoYXR0ciwgMCk7CisrICBpZiAoYXR0ciAmJiBh dHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpICYmIGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9hZGEp CisrICAgIHsKKysgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5sb3cua2luZCA9 IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfQkxPQ0s7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChy YW5nZV90eXBlKS0+bG93LnUuZHdhcmZfYmxvY2sgPQorKwkJCQkJZHdhcmYyX2F0dHJfdG9fbG9j ZXhwcl9iYXRvbiAoYXR0ciwgY3UpOworKyAgICAgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkg PSAxOworKyAgICAgIC8qIEZvciBzZXR0aW5nIGEgZGVmYXVsdCBpZiBEV19BVF9VUFBFUl9CT1VO RCB3b3VsZCBiZSBtaXNzaW5nLiAgKi8KKysgICAgICBsb3cgPSAwOworKyAgICB9CisrICBlbHNl IGlmIChhdHRyICYmIGlzX3JlZl9hdHRyIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3Vh Z2VfYWRhKQorKyAgICB7CisrICAgICAgc3RydWN0IGRpZV9pbmZvICp0YXJnZXRfZGllOworKyAg ICAgIHN0cnVjdCBkd2FyZjJfY3UgKnRhcmdldF9jdSA9IGN1OworKyAgICAgIHN0cnVjdCBhdHRy aWJ1dGUgKnRhcmdldF9sb2NfYXR0cjsKKysKKysgICAgICB0YXJnZXRfZGllID0gZm9sbG93X2Rp ZV9yZWZfb3Jfc2lnIChkaWUsIGF0dHIsICZ0YXJnZXRfY3UpOworKyAgICAgIGdkYl9hc3NlcnQg KHRhcmdldF9jdS0+b2JqZmlsZSA9PSBjdS0+b2JqZmlsZSk7CisrICAgICAgdGFyZ2V0X2xvY19h dHRyID0gZHdhcmYyX2F0dHIgKHRhcmdldF9kaWUsIERXX0FUX2xvY2F0aW9uLCB0YXJnZXRfY3Up OworKworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy5raW5kID0gUkFO R0VfQk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUOworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFu Z2VfdHlwZSktPmxvdy51LmR3YXJmX2xvY2xpc3QubG9jbGlzdAorKyAgICAgICAgPSBkd2FyZjJf YXR0cl90b19sb2NsaXN0X2JhdG9uICh0YXJnZXRfbG9jX2F0dHIsIHRhcmdldF9jdSk7CisrICAg ICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93LnUuZHdhcmZfbG9jbGlzdC50eXBl CisrICAgICAgICA9IGRpZV90eXBlICh0YXJnZXRfZGllLCB0YXJnZXRfY3UpOworKyAgICAgIFRZ UEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOworKyAgICAgIC8qIEZvciBzZXR0aW5nIGEgZGVm YXVsdCBpZiBEV19BVF9VUFBFUl9CT1VORCB3b3VsZCBiZSBtaXNzaW5nLiAgKi8KKysgICAgICBs b3cgPSAwOworKyAgICB9CisrICBlbHNlCisrICAgIHsKKysgICAgICBpZiAoYXR0ciAmJiBhdHRy X2Zvcm1faXNfY29uc3RhbnQgKGF0dHIpKQorKwlsb3cgPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3Rh bnRfdmFsdWUgKGF0dHIsIDApOworKyAgICAgIGVsc2UKKysJeworKwkgIGlmIChjdS0+bGFuZ3Vh Z2UgPT0gbGFuZ3VhZ2VfZm9ydHJhbikKKysJICAgIHsKKysJICAgICAgLyogRk9SVFJBTiBpbXBs aWVzIGEgbG93ZXIgYm91bmQgb2YgMSwgaWYgbm90IGdpdmVuLiAgKi8KKysJICAgICAgbG93ID0g MTsKKysJICAgIH0KKysJICBlbHNlCisrCSAgICB7CisrCSAgICAgIC8qIEFjY29yZGluZyB0byBE V0FSRiB3ZSBzaG91bGQgYXNzdW1lIHRoZSB2YWx1ZSAwIG9ubHkgZm9yCisrCQkgTEFOR1VBR0Vf QyBhbmQgTEFOR1VBR0VfQ1BMVVMuICAqLworKwkgICAgICBsb3cgPSAwOworKwkgICAgfQorKwl9 CisrICAgICAgaWYgKCFUWVBFX1VOU0lHTkVEIChiYXNlX3R5cGUpICYmIChsb3cgJiBuZWdhdGl2 ZV9tYXNrKSkKKysJbG93IHw9IG5lZ2F0aXZlX21hc2s7CisrICAgICAgVFlQRV9MT1dfQk9VTkQg KHJhbmdlX3R5cGUpID0gbG93OworKyAgICAgIGlmIChsb3cgPj0gMCkKKysJVFlQRV9VTlNJR05F RCAocmFuZ2VfdHlwZSkgPSAxOworKyAgICB9CisgCisgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRp ZSwgRFdfQVRfdXBwZXJfYm91bmQsIGN1KTsKKy0gIGlmIChhdHRyKQorKyAgaWYgKCFhdHRyIHx8 ICghYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSAmJiAhYXR0cl9mb3JtX2lzX2NvbnN0YW50IChh dHRyKQorKwkJJiYgIWlzX3JlZl9hdHRyIChhdHRyKSkpCisgICAgIHsKKy0gICAgICBpZiAoYXR0 ci0+Zm9ybSA9PSBEV19GT1JNX2Jsb2NrMSB8fCBpc19yZWZfYXR0ciAoYXR0cikpCistICAgICAg ICB7CistICAgICAgICAgIC8qIEdDQyBlbmNvZGVzIGFycmF5cyB3aXRoIHVuc3BlY2lmaWVkIG9y IGR5bmFtaWMgbGVuZ3RoCistICAgICAgICAgICAgIHdpdGggYSBEV19GT1JNX2Jsb2NrMSBhdHRy aWJ1dGUgb3IgYSByZWZlcmVuY2UgYXR0cmlidXRlLgorLSAgICAgICAgICAgICBGSVhNRTogR0RC IGRvZXMgbm90IHlldCBrbm93IGhvdyB0byBoYW5kbGUgZHluYW1pYworLSAgICAgICAgICAgICBh cnJheXMgcHJvcGVybHksIHRyZWF0IHRoZW0gYXMgYXJyYXlzIHdpdGggdW5zcGVjaWZpZWQKKy0g ICAgICAgICAgICAgbGVuZ3RoIGZvciBub3cuCistCistICAgICAgICAgICAgIEZJWE1FOiBqaW1i LzIwMDMtMDktMjI6IEdEQiBkb2VzIG5vdCByZWFsbHkga25vdworLSAgICAgICAgICAgICBob3cg dG8gaGFuZGxlIGFycmF5cyBvZiB1bnNwZWNpZmllZCBsZW5ndGgKKy0gICAgICAgICAgICAgZWl0 aGVyOyB3ZSBqdXN0IHJlcHJlc2VudCB0aGVtIGFzIHplcm8tbGVuZ3RoCistICAgICAgICAgICAg IGFycmF5cy4gIENob29zZSBhbiBhcHByb3ByaWF0ZSB1cHBlciBib3VuZCBnaXZlbgorLSAgICAg ICAgICAgICB0aGUgbG93ZXIgYm91bmQgd2UndmUgY29tcHV0ZWQgYWJvdmUuICAqLworLSAgICAg ICAgICBoaWdoID0gbG93IC0gMTsKKy0gICAgICAgIH0KKy0gICAgICBlbHNlCistICAgICAgICBo aWdoID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAxKTsKKysgICAgICBh dHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfY291bnQsIGN1KTsKKysgICAgICAvKiBJdCBk b2VzIG5vdCBodXJ0IGJ1dCBpdCBpcyBuZWVkbGVzc2x5IGluZWZmZWN0aXZlIGluIGNoZWNrX3R5 cGVkZWYuICAqLworKyAgICAgIGlmIChhdHRyICYmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIp IHx8IGF0dHJfZm9ybV9pc19jb25zdGFudCAoYXR0cikpKQorKyAgICAgIAl7CisrCSAgVFlQRV9S QU5HRV9ISUdIX0JPVU5EX0lTX0NPVU5UIChyYW5nZV90eXBlKSA9IDE7CisrCSAgVFlQRV9EWU5B TUlDIChyYW5nZV90eXBlKSA9IDE7CisrCX0KKysgICAgICAvKiBQYXNzIGl0IG5vdyBhcyB0aGUg cmVndWxhciBEV19BVF91cHBlcl9ib3VuZC4gICovCisrICAgIH0KKysKKysgIGlmIChhdHRyICYm IGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikgJiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2Fk YSkKKysgICAgeworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gua2lu ZCA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfQkxPQ0s7CisrICAgICAgVFlQRV9SQU5HRV9EQVRB IChyYW5nZV90eXBlKS0+aGlnaC51LmR3YXJmX2Jsb2NrID0KKysJCQkJCWR3YXJmMl9hdHRyX3Rv X2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKKysgICAgICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5 cGUpID0gMTsKKysgICAgfQorKyAgZWxzZSBpZiAoYXR0ciAmJiBpc19yZWZfYXR0ciAoYXR0cikg JiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2FkYSkKKysgICAgeworKyAgICAgIHN0cnVjdCBk aWVfaW5mbyAqdGFyZ2V0X2RpZTsKKysgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICp0YXJnZXRfY3Ug PSBjdTsKKysgICAgICBzdHJ1Y3QgYXR0cmlidXRlICp0YXJnZXRfbG9jX2F0dHI7CisrCisrICAg ICAgdGFyZ2V0X2RpZSA9IGZvbGxvd19kaWVfcmVmX29yX3NpZyAoZGllLCBhdHRyLCAmdGFyZ2V0 X2N1KTsKKysgICAgICBnZGJfYXNzZXJ0ICh0YXJnZXRfY3UtPm9iamZpbGUgPT0gY3UtPm9iamZp bGUpOworKyAgICAgIHRhcmdldF9sb2NfYXR0ciA9IGR3YXJmMl9hdHRyICh0YXJnZXRfZGllLCBE V19BVF9sb2NhdGlvbiwgdGFyZ2V0X2N1KTsKKysKKysgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJh bmdlX3R5cGUpLT5oaWdoLmtpbmQgPSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0xPQ0xJU1Q7Cisr ICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+aGlnaC51LmR3YXJmX2xvY2xpc3Qu bG9jbGlzdAorKyAgICAgICAgPSBkd2FyZjJfYXR0cl90b19sb2NsaXN0X2JhdG9uICh0YXJnZXRf bG9jX2F0dHIsIHRhcmdldF9jdSk7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBl KS0+aGlnaC51LmR3YXJmX2xvY2xpc3QudHlwZQorKyAgICAgICAgPSBkaWVfdHlwZSAodGFyZ2V0 X2RpZSwgdGFyZ2V0X2N1KTsKKysgICAgICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsK KyAgICAgfQorICAgZWxzZQorICAgICB7CistICAgICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUs IERXX0FUX2NvdW50LCBjdSk7CistICAgICAgaWYgKGF0dHIpCisrICAgICAgTE9OR0VTVCBoaWdo OworKworKyAgICAgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19jb25zdGFudCAoYXR0cikpCisr CWhpZ2ggPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDApOworKyAgICAg IGVsc2UKKyAJeworLQkgIGludCBjb3VudCA9IGR3YXJmMl9nZXRfYXR0cl9jb25zdGFudF92YWx1 ZSAoYXR0ciwgMSk7CistCSAgaGlnaCA9IGxvdyArIGNvdW50IC0gMTsKKysJICBUWVBFX0hJR0hf Qk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSA9IDE7CisrCSAgaGlnaCA9IGxvdyAtIDE7Cisg CX0KKysgICAgICBpZiAoIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlwZSkgJiYgKGhpZ2ggJiBuZWdh dGl2ZV9tYXNrKSkKKysJaGlnaCB8PSBuZWdhdGl2ZV9tYXNrOworKyAgICAgIFRZUEVfSElHSF9C T1VORCAocmFuZ2VfdHlwZSkgPSBoaWdoOworICAgICB9CisgCisgICAvKiBEd2FyZi0yIHNwZWNp ZmljYXRpb25zIGV4cGxpY2l0bHkgYWxsb3dzIHRvIGNyZWF0ZSBzdWJyYW5nZSB0eXBlcworQEAg LTY0MjEsMjAgKzc1OTIsNDEgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgCX0KKyAgICAgfQorIAorLSAgbmVnYXRpdmVf bWFzayA9CistICAgIChMT05HRVNUKSAtMSA8PCAoVFlQRV9MRU5HVEggKGJhc2VfdHlwZSkgKiBU QVJHRVRfQ0hBUl9CSVQgLSAxKTsKKy0gIGlmICghVFlQRV9VTlNJR05FRCAoYmFzZV90eXBlKSAm JiAobG93ICYgbmVnYXRpdmVfbWFzaykpCistICAgIGxvdyB8PSBuZWdhdGl2ZV9tYXNrOworLSAg aWYgKCFUWVBFX1VOU0lHTkVEIChiYXNlX3R5cGUpICYmIChoaWdoICYgbmVnYXRpdmVfbWFzaykp CistICAgIGhpZ2ggfD0gbmVnYXRpdmVfbWFzazsKKysgIC8qIERXX0FUX2JpdF9zdHJpZGUgaXMg Y3VycmVudGx5IHVuc3VwcG9ydGVkIGFzIHdlIGNvdW50IGluIGJ5dGVzLiAgKi8KKysgIGF0dHIg PSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3N0cmlkZSwgY3UpOworKyAgaWYgKGF0dHIg JiYgYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2Vf YWRhKQorKyAgICB7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+Ynl0ZV9z dHJpZGUua2luZAorKyAgICAgICAgPSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0JMT0NLOworKyAg ICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmJ5dGVfc3RyaWRlLnUuZHdhcmZfYmxv Y2sgPQorKwkJCQkJZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOworKyAg ICAgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOworKyAgICB9CisrICBlbHNlIGlmIChh dHRyICYmIGlzX3JlZl9hdHRyIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRh KQorKyAgICB7CisrICAgICAgc3RydWN0IGRpZV9pbmZvICp0YXJnZXRfZGllOworKyAgICAgIHN0 cnVjdCBkd2FyZjJfY3UgKnRhcmdldF9jdSA9IGN1OworKyAgICAgIHN0cnVjdCBhdHRyaWJ1dGUg KnRhcmdldF9sb2NfYXR0cjsKKyAKKy0gIHJhbmdlX3R5cGUgPSBjcmVhdGVfcmFuZ2VfdHlwZSAo TlVMTCwgYmFzZV90eXBlLCBsb3csIGhpZ2gpOworKyAgICAgIHRhcmdldF9kaWUgPSBmb2xsb3df ZGllX3JlZl9vcl9zaWcgKGRpZSwgYXR0ciwgJnRhcmdldF9jdSk7CisrICAgICAgZ2RiX2Fzc2Vy dCAodGFyZ2V0X2N1LT5vYmpmaWxlID09IGN1LT5vYmpmaWxlKTsKKysgICAgICB0YXJnZXRfbG9j X2F0dHIgPSBkd2FyZjJfYXR0ciAodGFyZ2V0X2RpZSwgRFdfQVRfbG9jYXRpb24sIHRhcmdldF9j dSk7CisgCistICAvKiBNYXJrIGFycmF5cyB3aXRoIGR5bmFtaWMgbGVuZ3RoIGF0IGxlYXN0IGFz IGFuIGFycmF5IG9mIHVuc3BlY2lmaWVkCistICAgICBsZW5ndGguICBHREIgY291bGQgY2hlY2sg dGhlIGJvdW5kYXJ5IGJ1dCBiZWZvcmUgaXQgZ2V0cyBpbXBsZW1lbnRlZCBhdAorLSAgICAgbGVh c3QgYWxsb3cgYWNjZXNzaW5nIHRoZSBhcnJheSBlbGVtZW50cy4gICovCistICBpZiAoYXR0ciAm JiBhdHRyLT5mb3JtID09IERXX0ZPUk1fYmxvY2sxKQorLSAgICBUWVBFX0hJR0hfQk9VTkRfVU5E RUZJTkVEIChyYW5nZV90eXBlKSA9IDE7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90 eXBlKS0+Ynl0ZV9zdHJpZGUua2luZAorKyAgICAgICAgPSBSQU5HRV9CT1VORF9LSU5EX0RXQVJG X0xPQ0xJU1Q7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+Ynl0ZV9zdHJp ZGUudS5kd2FyZl9sb2NsaXN0LmxvY2xpc3QKKysgICAgICAgID0gZHdhcmYyX2F0dHJfdG9fbG9j bGlzdF9iYXRvbiAodGFyZ2V0X2xvY19hdHRyLCB0YXJnZXRfY3UpOworKyAgICAgIFRZUEVfUkFO R0VfREFUQSAocmFuZ2VfdHlwZSktPmJ5dGVfc3RyaWRlLnUuZHdhcmZfbG9jbGlzdC50eXBlCisr ICAgICAgICA9IGRpZV90eXBlICh0YXJnZXRfZGllLCB0YXJnZXRfY3UpOworKyAgICAgIFRZUEVf RFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOworKyAgICB9CisrICBlbHNlIGlmIChhdHRyICYmIGF0 dHJfZm9ybV9pc19jb25zdGFudCAoYXR0cikpCisrICAgIHsKKysgICAgICBUWVBFX0JZVEVfU1RS SURFIChyYW5nZV90eXBlKSA9IGR3YXJmMl9nZXRfYXR0cl9jb25zdGFudF92YWx1ZSAoYXR0ciwg MCk7CisrICAgICAgaWYgKFRZUEVfQllURV9TVFJJREUgKHJhbmdlX3R5cGUpID09IDApCisrCWNv bXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKKysJCSAgIF8oIkZvdW5kIERXX0FUX2J5dGVf c3RyaWRlIHdpdGggdW5zdXBwb3J0ZWQgdmFsdWUgMCIpKTsKKysgICAgfQorIAorICAgbmFtZSA9 IGR3YXJmMl9uYW1lIChkaWUsIGN1KTsKKyAgIGlmIChuYW1lKQorQEAgLTg3MTQsMTAgKzk5MDYs MTIgQEAgdmFyX2RlY29kZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0 IHN5bWJvbCAqc3ltLAorICAgICAgKGkuZS4gd2hlbiB0aGUgdmFsdWUgb2YgYSByZWdpc3RlciBv ciBtZW1vcnkgbG9jYXRpb24gaXMKKyAgICAgIHJlZmVyZW5jZWQsIG9yIGEgdGhyZWFkLWxvY2Fs IGJsb2NrLCBldGMuKS4gIFRoZW4gYWdhaW4sIGl0IG1pZ2h0CisgICAgICBub3QgYmUgd29ydGh3 aGlsZS4gIEknbSBhc3N1bWluZyB0aGF0IGl0IGlzbid0IHVubGVzcyBwZXJmb3JtYW5jZQorLSAg ICAgb3IgbWVtb3J5IG51bWJlcnMgc2hvdyBtZSBvdGhlcndpc2UuICAqLworKyAgICAgb3IgbWVt b3J5IG51bWJlcnMgc2hvdyBtZSBvdGhlcndpc2UuCisrICAgICAKKysgICAgIFNZTUJPTF9DTEFT UyBtYXkgZ2V0IG92ZXJyaWRlbiBieSBkd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQuICAqLwor IAorLSAgZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkIChhdHRyLCBzeW0sIGN1KTsKKyAgIFNZ TUJPTF9DTEFTUyAoc3ltKSA9IExPQ19DT01QVVRFRDsKKysgIGR3YXJmMl9zeW1ib2xfbWFya19j b21wdXRlZCAoYXR0ciwgc3ltLCBjdSk7CisgfQorIAorIC8qIEdpdmVuIGEgcG9pbnRlciB0byBh IERXQVJGIGluZm9ybWF0aW9uIGVudHJ5LCBmaWd1cmUgb3V0IGlmIHdlIG5lZWQKK0BAIC04NzQ4 LDYgKzk5NDIsOCBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5 cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorIAkJCQkJICAgICBzaXplb2YgKHN0cnVj dCBzeW1ib2wpKTsKKyAgICAgICBPQkpTVEFUIChvYmpmaWxlLCBuX3N5bXMrKyk7CisgICAgICAg bWVtc2V0IChzeW0sIDAsIHNpemVvZiAoc3RydWN0IHN5bWJvbCkpOworKyAgICAgIC8qIFNvbWUg bWV0aG9kcyBhcmUgY2FsbGVkIHcvbyBjaGVja2luZyBTWU1CT0xfQ09NUFVURURfT1BTIHZhbGlk aXR5LiAgKi8KKysgICAgICBTWU1CT0xfQ09NUFVURURfT1BTIChzeW0pID0gJmR3YXJmMl9taXNz aW5nX2Z1bmNzOworIAorICAgICAgIC8qIENhY2hlIHRoaXMgc3ltYm9sJ3MgbmFtZSBhbmQgdGhl IG5hbWUncyBkZW1hbmdsZWQgZm9ybSAoaWYgYW55KS4gICovCisgICAgICAgU1lNQk9MX0xBTkdV QUdFIChzeW0pID0gY3UtPmxhbmd1YWdlOworQEAgLTkzNzksNiArMTA1NzUsOSBAQCByZWFkX3R5 cGVfZGllIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICAg ICAgYnJlYWs7CisgICAgIH0KKyAKKysgIGlmICh0aGlzX3R5cGUpCisrICAgIGZpbmFsaXplX3R5 cGUgKHRoaXNfdHlwZSk7CisrCisgICByZXR1cm4gdGhpc190eXBlOworIH0KKyAKK0BAIC0xMTk4 Myw2NyArMTMxODIsMTAyIEBAIGF0dHJfZm9ybV9pc19jb25zdGFudCAoc3RydWN0IGF0dHJpYnV0 ZSAqYXR0cikKKyAgICAgfQorIH0KKyAKKy1zdGF0aWMgdm9pZAorLWR3YXJmMl9zeW1ib2xfbWFy a19jb21wdXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAor LQkJCSAgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisrLyogQ29udmVydCBEV19CTE9DSyBpbnRv IHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbi4gIEFUVFIgbXVzdCBiZSBhIERXX0JMT0NLCisr ICAgYXR0cmlidXRlIHR5cGUuICAqLworKworK3N0YXRpYyBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJf YmF0b24gKgorK2R3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKHN0cnVjdCBhdHRyaWJ1dGUg KmF0dHIsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorIHsKKy0gIGlmIChhdHRyX2Zvcm1faXNfc2Vj dGlvbl9vZmZzZXQgKGF0dHIpCistICAgICAgLyogIi5kZWJ1Z19sb2MiIG1heSBub3QgZXhpc3Qg YXQgYWxsLCBvciB0aGUgb2Zmc2V0IG1heSBiZSBvdXRzaWRlCistCSB0aGUgc2VjdGlvbi4gIElm IHNvLCBmYWxsIHRocm91Z2ggdG8gdGhlIGNvbXBsYWludCBpbiB0aGUKKy0JIG90aGVyIGJyYW5j aC4gICovCistICAgICAgJiYgRFdfVU5TTkQgKGF0dHIpIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5s b2Muc2l6ZSkKKy0gICAgeworLSAgICAgIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqYmF0 b247CisrICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmJhdG9uOworIAorLSAgICAgIGJh dG9uID0gb2JzdGFja19hbGxvYyAoJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCistCQkJ ICAgICBzaXplb2YgKHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbikpOworLSAgICAgIGJhdG9u LT5wZXJfY3UgPSBjdS0+cGVyX2N1OworLSAgICAgIGdkYl9hc3NlcnQgKGJhdG9uLT5wZXJfY3Up OworKyAgZ2RiX2Fzc2VydCAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSk7CisgCistICAgICAg ZHdhcmYyX3JlYWRfc2VjdGlvbiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlLAorLQkJCSAg ICZkd2FyZjJfcGVyX29iamZpbGUtPmxvYyk7CisrICBiYXRvbiA9IG9ic3RhY2tfYWxsb2MgKCZj dS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzaXplb2YgKCpiYXRvbikpOworKyAgYmF0b24t PnBlcl9jdSA9IGN1LT5wZXJfY3U7CisrICBnZGJfYXNzZXJ0IChiYXRvbi0+cGVyX2N1KTsKKyAK Ky0gICAgICAvKiBXZSBkb24ndCBrbm93IGhvdyBsb25nIHRoZSBsb2NhdGlvbiBsaXN0IGlzLCBi dXQgbWFrZSBzdXJlIHdlCistCSBkb24ndCBydW4gb2ZmIHRoZSBlZGdlIG9mIHRoZSBzZWN0aW9u LiAgKi8KKy0gICAgICBiYXRvbi0+c2l6ZSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jLnNpemUg LSBEV19VTlNORCAoYXR0cik7CistICAgICAgYmF0b24tPmRhdGEgPSBkd2FyZjJfcGVyX29iamZp bGUtPmxvYy5idWZmZXIgKyBEV19VTlNORCAoYXR0cik7CistICAgICAgYmF0b24tPmJhc2VfYWRk cmVzcyA9IGN1LT5iYXNlX2FkZHJlc3M7CistICAgICAgaWYgKGN1LT5iYXNlX2tub3duID09IDAp CistCWNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKKy0JCSAgIF8oIkxvY2F0aW9uIGxp c3QgdXNlZCB3aXRob3V0IHNwZWNpZnlpbmcgdGhlIENVIGJhc2UgYWRkcmVzcy4iKSk7CisrICAv KiBOb3RlIHRoYXQgd2UncmUganVzdCBjb3B5aW5nIHRoZSBibG9jaydzIGRhdGEgcG9pbnRlcgor KyAgICAgaGVyZSwgbm90IHRoZSBhY3R1YWwgZGF0YS4gIFdlJ3JlIHN0aWxsIHBvaW50aW5nIGlu dG8gdGhlCisrICAgICBpbmZvX2J1ZmZlciBmb3IgU1lNJ3Mgb2JqZmlsZTsgcmlnaHQgbm93IHdl IG5ldmVyIHJlbGVhc2UKKysgICAgIHRoYXQgYnVmZmVyLCBidXQgd2hlbiB3ZSBkbyBjbGVhbiB1 cCBwcm9wZXJseSB0aGlzIG1heQorKyAgICAgbmVlZCB0byBjaGFuZ2UuICAqLworKyAgYmF0b24t PnNpemUgPSBEV19CTE9DSyAoYXR0ciktPnNpemU7CisrICBiYXRvbi0+ZGF0YSA9IERXX0JMT0NL IChhdHRyKS0+ZGF0YTsKKysgIGdkYl9hc3NlcnQgKGJhdG9uLT5zaXplID09IDAgfHwgYmF0b24t PmRhdGEgIT0gTlVMTCk7CisrCisrICByZXR1cm4gYmF0b247CisrfQorKworK3N0YXRpYyBzdHJ1 Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKgorK2R3YXJmMl9hdHRyX3RvX2xvY2xpc3RfYmF0b24g KHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorK3sKKysgIHN0 cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqYmF0b247CisrCisrICAvKiBEV19BVF9sb2NhdGlv biBvZiB0aGUgcmVmZXJlbmNlZCBESUUgbWF5IGJlIG1pc3NpbmcgaWYgdGhlIHJlZmVyZW5jZWQK KysgICAgIHZhcmlhYmxlIGhhcyBiZWVuIG9wdGltaXplZCBvdXQuICAqLworKyAgaWYgKCFhdHRy KQorKyAgICByZXR1cm4gTlVMTDsKKysKKysgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKGR3YXJmMl9w ZXJfb2JqZmlsZS0+b2JqZmlsZSwKKysJCSAgICAgICAmZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2Mp OworKworKyAgaWYgKCEoYXR0cl9mb3JtX2lzX3NlY3Rpb25fb2Zmc2V0IChhdHRyKQorKwkvKiAi LmRlYnVnX2xvYyIgbWF5IG5vdCBleGlzdCBhdCBhbGwsIG9yIHRoZSBvZmZzZXQgbWF5IGJlIG91 dHNpZGUKKysJICAgdGhlIHNlY3Rpb24uICBJZiBzbywgZmFsbCB0aHJvdWdoIHRvIHRoZSBjb21w bGFpbnQgaW4gdGhlCisrCSAgIG90aGVyIGJyYW5jaC4gICovCisrCSYmIERXX1VOU05EIChhdHRy KSA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jLnNpemUpKQorKyAgICByZXR1cm4gTlVMTDsKKysK KysgIGJhdG9uID0gb2JzdGFja19hbGxvYyAoJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ss CisrCQkJIHNpemVvZiAoc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uKSk7CisrICBiYXRvbi0+ cGVyX2N1ID0gY3UtPnBlcl9jdTsKKysgIGdkYl9hc3NlcnQgKGJhdG9uLT5wZXJfY3UpOworKwor KyAgLyogV2UgZG9uJ3Qga25vdyBob3cgbG9uZyB0aGUgbG9jYXRpb24gbGlzdCBpcywgYnV0IG1h a2Ugc3VyZSB3ZQorKyAgICAgZG9uJ3QgcnVuIG9mZiB0aGUgZWRnZSBvZiB0aGUgc2VjdGlvbi4g ICovCisrICBiYXRvbi0+c2l6ZSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jLnNpemUgLSBEV19V TlNORCAoYXR0cik7CisrICBiYXRvbi0+ZGF0YSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jLmJ1 ZmZlciArIERXX1VOU05EIChhdHRyKTsKKysgIGJhdG9uLT5iYXNlX2FkZHJlc3MgPSBjdS0+YmFz ZV9hZGRyZXNzOworKyAgaWYgKGN1LT5iYXNlX2tub3duID09IDApCisrICAgIGNvbXBsYWludCAo JnN5bWZpbGVfY29tcGxhaW50cywKKysJICAgICAgIF8oIkxvY2F0aW9uIGxpc3QgdXNlZCB3aXRo b3V0IHNwZWNpZnlpbmcgdGhlIENVIGJhc2UgYWRkcmVzcy4iKSk7CisrCisrICByZXR1cm4gYmF0 b247CisrfQorKworKy8qIFNZTSBtYXkgZ2V0IGl0cyBTWU1CT0xfQ0xBU1Mgb3ZlcnJpZGVuIG9u IGludmFsaWQgQVRUUiBjb250ZW50LiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2R3YXJmMl9zeW1i b2xfbWFya19jb21wdXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAq c3ltLAorKwkJCSAgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisreworKyAgc3RydWN0IGR3YXJm Ml9sb2NsaXN0X2JhdG9uICpsb2NsaXN0X2JhdG9uOworIAorKyAgbG9jbGlzdF9iYXRvbiA9IGR3 YXJmMl9hdHRyX3RvX2xvY2xpc3RfYmF0b24gKGF0dHIsIGN1KTsKKysgIGlmIChsb2NsaXN0X2Jh dG9uKQorKyAgICB7CisgICAgICAgU1lNQk9MX0NPTVBVVEVEX09QUyAoc3ltKSA9ICZkd2FyZjJf bG9jbGlzdF9mdW5jczsKKy0gICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBiYXRv bjsKKysgICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBsb2NsaXN0X2JhdG9uOwor KyAgICB9CisrICBlbHNlIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQorKyAgICB7Cisr ICAgICAgU1lNQk9MX0NPTVBVVEVEX09QUyAoc3ltKSA9ICZkd2FyZjJfbG9jZXhwcl9mdW5jczsK KysgICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBkd2FyZjJfYXR0cl90b19sb2Nl eHByX2JhdG9uIChhdHRyLCBjdSk7CisgICAgIH0KKyAgIGVsc2UKKyAgICAgeworLSAgICAgIHN0 cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqYmF0b247CisrICAgICAgZHdhcmYyX2ludmFsaWRf YXR0cmliX2NsYXNzX2NvbXBsYWludCAoImxvY2F0aW9uIGRlc2NyaXB0aW9uIiwKKysJCQkJCSAg ICAgU1lNQk9MX05BVFVSQUxfTkFNRSAoc3ltKSk7CisgCistICAgICAgYmF0b24gPSBvYnN0YWNr X2FsbG9jICgmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKKy0JCQkgICAgIHNpemVvZiAo c3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uKSk7CistICAgICAgYmF0b24tPnBlcl9jdSA9IGN1 LT5wZXJfY3U7CistICAgICAgZ2RiX2Fzc2VydCAoYmF0b24tPnBlcl9jdSk7CisrICAgICAgLyog U29tZSBtZXRob2RzIGFyZSBjYWxsZWQgdy9vIGNoZWNraW5nIFNZTUJPTF9DT01QVVRFRF9PUFMg dmFsaWRpdHkuICAqLworIAorLSAgICAgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQor LQl7CistCSAgLyogTm90ZSB0aGF0IHdlJ3JlIGp1c3QgY29weWluZyB0aGUgYmxvY2sncyBkYXRh IHBvaW50ZXIKKy0JICAgICBoZXJlLCBub3QgdGhlIGFjdHVhbCBkYXRhLiAgV2UncmUgc3RpbGwg cG9pbnRpbmcgaW50byB0aGUKKy0JICAgICBpbmZvX2J1ZmZlciBmb3IgU1lNJ3Mgb2JqZmlsZTsg cmlnaHQgbm93IHdlIG5ldmVyIHJlbGVhc2UKKy0JICAgICB0aGF0IGJ1ZmZlciwgYnV0IHdoZW4g d2UgZG8gY2xlYW4gdXAgcHJvcGVybHkgdGhpcyBtYXkKKy0JICAgICBuZWVkIHRvIGNoYW5nZS4g ICovCistCSAgYmF0b24tPnNpemUgPSBEV19CTE9DSyAoYXR0ciktPnNpemU7CistCSAgYmF0b24t PmRhdGEgPSBEV19CTE9DSyAoYXR0ciktPmRhdGE7CistCX0KKy0gICAgICBlbHNlCistCXsKKy0J ICBkd2FyZjJfaW52YWxpZF9hdHRyaWJfY2xhc3NfY29tcGxhaW50ICgibG9jYXRpb24gZGVzY3Jp cHRpb24iLAorLQkJCQkJCSBTWU1CT0xfTkFUVVJBTF9OQU1FIChzeW0pKTsKKy0JICBiYXRvbi0+ c2l6ZSA9IDA7CistCSAgYmF0b24tPmRhdGEgPSBOVUxMOworLQl9CisrICAgICAgU1lNQk9MX0NP TVBVVEVEX09QUyAoc3ltKSA9ICZkd2FyZjJfbWlzc2luZ19mdW5jczsKKysgICAgICBTWU1CT0xf TE9DQVRJT05fQkFUT04gKHN5bSkgPSBOVUxMOworIAorLSAgICAgIFNZTUJPTF9DT01QVVRFRF9P UFMgKHN5bSkgPSAmZHdhcmYyX2xvY2V4cHJfZnVuY3M7CistICAgICAgU1lNQk9MX0xPQ0FUSU9O X0JBVE9OIChzeW0pID0gYmF0b247CisrICAgICAgLyogRm9yIGZ1bmN0aW9ucyBhIG1pc3Npbmcg RFdfQVRfZnJhbWVfYmFzZSBkb2VzIG5vdCBvcHRpbWl6ZSBvdXQgdGhlCisrCSB3aG9sZSBmdW5j dGlvbiBkZWZpbml0aW9uLCBvbmx5IGl0cyBmcmFtZSBiYXNlIHJlc29sdmluZy4gICovCisrICAg ICAgaWYgKGF0dHItPm5hbWUgPT0gRFdfQVRfbG9jYXRpb24pCisrCVNZTUJPTF9DTEFTUyAoc3lt KSA9IExPQ19PUFRJTUlaRURfT1VUOworICAgICB9CisgfQorIAorQEAgLTEyMDU0LDcgKzEzMjg4 LDcgQEAgZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkIChzdHJ1Y3QgYXR0cmlidXRlICphdHRy LCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCisgc3RydWN0IG9iamZpbGUgKgorIGR3YXJmMl9wZXJfY3Vf b2JqZmlsZSAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQorIHsKKy0gIHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlID0gcGVyX2N1LT5wc3ltdGFiLT5vYmpmaWxlOworKyAgc3RydWN0 IG9iamZpbGUgKm9iamZpbGUgPSBwZXJfY3UtPm9iamZpbGU7CisgCisgICAvKiBSZXR1cm4gdGhl IG1hc3RlciBvYmpmaWxlLCBzbyB0aGF0IHdlIGNhbiByZXBvcnQgYW5kIGxvb2sgdXAgdGhlCisg ICAgICBjb3JyZWN0IGZpbGUgY29udGFpbmluZyB0aGlzIHZhcmlhYmxlLiAgKi8KK0BAIC0xMjA3 NCw3ICsxMzMwOCw3IEBAIGR3YXJmMl9wZXJfY3VfYWRkcl9zaXplIChzdHJ1Y3QgZHdhcmYyX3Bl cl9jdV9kYXRhICpwZXJfY3UpCisgICBlbHNlCisgICAgIHsKKyAgICAgICAvKiBJZiB0aGUgQ1Ug aXMgbm90IGN1cnJlbnRseSByZWFkIGluLCB3ZSByZS1yZWFkIGl0cyBoZWFkZXIuICAqLworLSAg ICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gcGVyX2N1LT5wc3ltdGFiLT5vYmpmaWxlOwor KyAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gcGVyX2N1LT5vYmpmaWxlOworICAgICAg IHN0cnVjdCBkd2FyZjJfcGVyX29iamZpbGUgKnBlcl9vYmpmaWxlCisgCT0gb2JqZmlsZV9kYXRh IChvYmpmaWxlLCBkd2FyZjJfb2JqZmlsZV9kYXRhX2tleSk7CisgICAgICAgZ2RiX2J5dGUgKmlu Zm9fcHRyID0gcGVyX29iamZpbGUtPmluZm8uYnVmZmVyICsgcGVyX2N1LT5vZmZzZXQ7CitAQCAt MTIwOTYsNyArMTMzMzAsNyBAQCBkd2FyZjJfcGVyX2N1X29mZnNldF9zaXplIChzdHJ1Y3QgZHdh cmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpCisgICBlbHNlCisgICAgIHsKKyAgICAgICAvKiBJZiB0 aGUgQ1UgaXMgbm90IGN1cnJlbnRseSByZWFkIGluLCB3ZSByZS1yZWFkIGl0cyBoZWFkZXIuICAq LworLSAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gcGVyX2N1LT5wc3ltdGFiLT5vYmpm aWxlOworKyAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gcGVyX2N1LT5vYmpmaWxlOwor ICAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX29iamZpbGUgKnBlcl9vYmpmaWxlCisgCT0gb2JqZmls ZV9kYXRhIChvYmpmaWxlLCBkd2FyZjJfb2JqZmlsZV9kYXRhX2tleSk7CisgICAgICAgZ2RiX2J5 dGUgKmluZm9fcHRyID0gcGVyX29iamZpbGUtPmluZm8uYnVmZmVyICsgcGVyX2N1LT5vZmZzZXQ7 CitAQCAtMTIxMTYsNyArMTMzNTAsNyBAQCBkd2FyZjJfcGVyX2N1X29mZnNldF9zaXplIChzdHJ1 Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpCisgQ09SRV9BRERSCisgZHdhcmYyX3Blcl9j dV90ZXh0X29mZnNldCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQorIHsKKy0g IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gcGVyX2N1LT5wc3ltdGFiLT5vYmpmaWxlOworKyAg c3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBwZXJfY3UtPm9iamZpbGU7CisgCisgICByZXR1cm4g QU5PRkZTRVQgKG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgU0VDVF9PRkZfVEVYVCAob2JqZmls ZSkpOworIH0KK0BAIC0xMjMzOCw2ICsxMzU3MiwzMCBAQCBkd2FyZjJfZnJlZV9vYmpmaWxlIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyAgIC8qIENhY2hlZCBESUUgdHJlZXMgdXNlIHhtYWxs b2MgYW5kIHRoZSBjb21wX3VuaXRfb2JzdGFjay4gICovCisgICBmcmVlX2NhY2hlZF9jb21wX3Vu aXRzIChOVUxMKTsKKyAKKysgIGlmIChkd2FyZjJfcGVyX29iamZpbGUtPnVzaW5nX2luZGV4KQor KyAgICB7CisrICAgICAgaW50IGk7CisrCisrICAgICAgZm9yIChpID0gMDsgaSA8IGR3YXJmMl9w ZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzOyArK2kpCisrCXsKKysJICBpbnQgajsKKysJICBzdHJ1 Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBf dW5pdHNbaV07CisrCisrCSAgaWYgKCFjdS0+di5xdWljay0+bGluZXMpCisrCSAgICBjb250aW51 ZTsKKysKKysJICBmb3IgKGogPSAwOyBqIDwgY3UtPnYucXVpY2stPmxpbmVzLT5udW1fZmlsZV9u YW1lczsgKytqKQorKwkgICAgeworKwkgICAgICBpZiAoY3UtPnYucXVpY2stPmZpbGVfbmFtZXMp CisrCQl4ZnJlZSAoKHZvaWQgKikgY3UtPnYucXVpY2stPmZpbGVfbmFtZXNbal0pOworKwkgICAg ICBpZiAoY3UtPnYucXVpY2stPmZ1bGxfbmFtZXMpCisrCQl4ZnJlZSAoKHZvaWQgKikgY3UtPnYu cXVpY2stPmZ1bGxfbmFtZXNbal0pOworKwkgICAgfQorKworKwkgIGZyZWVfbGluZV9oZWFkZXIg KGN1LT52LnF1aWNrLT5saW5lcyk7CisrCX0KKysgICAgfQorKworICAgLyogRXZlcnl0aGluZyBl bHNlIHNob3VsZCBiZSBvbiB0aGUgb2JqZmlsZSBvYnN0YWNrLiAgKi8KKyB9CisgCitAQCAtMTIz NzIsNiArMTM2MzAsMzEgQEAgb2Zmc2V0X2FuZF90eXBlX2VxIChjb25zdCB2b2lkICppdGVtX2xo cywgY29uc3Qgdm9pZCAqaXRlbV9yaHMpCisgICByZXR1cm4gb2ZzX2xocy0+b2Zmc2V0ID09IG9m c19yaHMtPm9mZnNldDsKKyB9CisgCisrLyogRmlsbCBpbiBnZW5lcmljIGF0dHJpYnV0ZXMgYXBw bGljYWJsZSBmb3IgdHlwZSBESUVzLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2ZldGNoX2RpZV90 eXBlX2F0dHJzIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsCisrCQkg ICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyt7CisrICBzdHJ1Y3QgYXR0cmlidXRlICphdHRy OworKworKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2RhdGFfbG9jYXRpb24sIGN1 KTsKKysgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQorKyAgICBUWVBFX0RBVEFfTE9D QVRJT05fRFdBUkZfQkxPQ0sgKHR5cGUpID0gZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAo YXR0ciwKKysJCQkJCQkJCQkgIGN1KTsKKysgIGdkYl9hc3NlcnQgKCFUWVBFX0RBVEFfTE9DQVRJ T05fSVNfQUREUiAodHlwZSkpOworKworKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FU X2FsbG9jYXRlZCwgY3UpOworKyAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCisrICAg IFRZUEVfQUxMT0NBVEVEICh0eXBlKSA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0 dHIsIGN1KTsKKysgIGdkYl9hc3NlcnQgKCFUWVBFX05PVF9BTExPQ0FURUQgKHR5cGUpKTsKKysK KysgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9hc3NvY2lhdGVkLCBjdSk7CisrICBp ZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKKysgICAgVFlQRV9BU1NPQ0lBVEVEICh0eXBl KSA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKKysgIGdkYl9hc3Nl cnQgKCFUWVBFX05PVF9BU1NPQ0lBVEVEICh0eXBlKSk7CisrfQorKworIC8qIFNldCB0aGUgdHlw ZSBhc3NvY2lhdGVkIHdpdGggRElFIHRvIFRZUEUuICBTYXZlIGl0IGluIENVJ3MgaGFzaAorICAg IHRhYmxlIGlmIG5lY2Vzc2FyeS4gIEZvciBjb252ZW5pZW5jZSwgcmV0dXJuIFRZUEUuCisgCitA QCAtMTIzOTUsNiArMTM2NzgsOCBAQCBzZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGll LCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgeworICAgc3RydWN0 IGR3YXJmMl9vZmZzZXRfYW5kX3R5cGUgKipzbG90LCBvZnM7CisgCisrICBmZXRjaF9kaWVfdHlw ZV9hdHRycyAoZGllLCB0eXBlLCBjdSk7CisrCisgICAvKiBGb3IgQWRhIHR5cGVzLCBtYWtlIHN1 cmUgdGhhdCB0aGUgZ25hdC1zcGVjaWZpYyBkYXRhIGlzIGFsd2F5cworICAgICAgaW5pdGlhbGl6 ZWQgKGlmIG5vdCBhbHJlYWR5IHNldCkuICBUaGVyZSBhcmUgYSBmZXcgdHlwZXMgd2hlcmUKKyAg ICAgIHdlIHNob3VsZCBub3QgYmUgZG9pbmcgc28sIGJlY2F1c2UgdGhlIHR5cGUtc3BlY2lmaWMg YXJlYSBpcworQEAgLTEyNTkyLDggKzEzODc3LDU2NyBAQCBkd2FyZjJfcGVyX29iamZpbGVfZnJl ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmQpCisgICBtdW5tYXBfc2VjdGlvbl9i dWZmZXIgKCZkYXRhLT5sb2MpOworICAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0YS0+ZnJh bWUpOworICAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0YS0+ZWhfZnJhbWUpOworKyAgbXVu bWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0YS0+Z2RiX2luZGV4KTsKKyt9CisrCisrDAorKworKy8q IFRoZSBjb250ZW50cyBvZiB0aGUgaGFzaCB0YWJsZSB3ZSBjcmVhdGUgd2hlbiBidWlsZGluZyB0 aGUgc3RyaW5nCisrICAgdGFibGUuICAqLworK3N0cnVjdCBzdHJ0YWJfZW50cnkKKyt7CisrICBv ZmZzZXRfdHlwZSBvZmZzZXQ7CisrICBjb25zdCBjaGFyICpzdHI7CisrfTsKKysKKysvKiBIYXNo IGZ1bmN0aW9uIGZvciBhIHN0cnRhYl9lbnRyeS4gICovCisrc3RhdGljIGhhc2h2YWxfdAorK2hh c2hfc3RydGFiX2VudHJ5IChjb25zdCB2b2lkICplKQorK3sKKysgIGNvbnN0IHN0cnVjdCBzdHJ0 YWJfZW50cnkgKmVudHJ5ID0gZTsKKysgIHJldHVybiBtYXBwZWRfaW5kZXhfc3RyaW5nX2hhc2gg KGVudHJ5LT5zdHIpOworK30KKysKKysvKiBFcXVhbGl0eSBmdW5jdGlvbiBmb3IgYSBzdHJ0YWJf ZW50cnkuICAqLworK3N0YXRpYyBpbnQKKytlcV9zdHJ0YWJfZW50cnkgKGNvbnN0IHZvaWQgKmEs IGNvbnN0IHZvaWQgKmIpCisreworKyAgY29uc3Qgc3RydWN0IHN0cnRhYl9lbnRyeSAqZWEgPSBh OworKyAgY29uc3Qgc3RydWN0IHN0cnRhYl9lbnRyeSAqZWIgPSBiOworKyAgcmV0dXJuICFzdHJj bXAgKGVhLT5zdHIsIGViLT5zdHIpOworK30KKysKKysvKiBDcmVhdGUgYSBzdHJ0YWJfZW50cnkg aGFzaCB0YWJsZS4gICovCisrc3RhdGljIGh0YWJfdAorK2NyZWF0ZV9zdHJ0YWIgKHZvaWQpCisr eworKyAgcmV0dXJuIGh0YWJfY3JlYXRlX2FsbG9jICgxMDAsIGhhc2hfc3RydGFiX2VudHJ5LCBl cV9zdHJ0YWJfZW50cnksCisrCQkJICAgIHhmcmVlLCB4Y2FsbG9jLCB4ZnJlZSk7CisrfQorKwor Ky8qIEFkZCBhIHN0cmluZyB0byB0aGUgY29uc3RhbnQgcG9vbC4gIFJldHVybiB0aGUgc3RyaW5n J3Mgb2Zmc2V0IGluCisrICAgaG9zdCBvcmRlci4gICovCisrc3RhdGljIG9mZnNldF90eXBlCisr YWRkX3N0cmluZyAoaHRhYl90IHRhYmxlLCBzdHJ1Y3Qgb2JzdGFjayAqY3Bvb2wsIGNvbnN0IGNo YXIgKnN0cikKKyt7CisrICB2b2lkICoqc2xvdDsKKysgIHN0cnVjdCBzdHJ0YWJfZW50cnkgZW50 cnk7CisrICBzdHJ1Y3Qgc3RydGFiX2VudHJ5ICpyZXN1bHQ7CisrCisrICBlbnRyeS5zdHIgPSBz dHI7CisrICBzbG90ID0gaHRhYl9maW5kX3Nsb3QgKHRhYmxlLCAmZW50cnksIElOU0VSVCk7Cisr ICBpZiAoKnNsb3QpCisrICAgIHJlc3VsdCA9ICpzbG90OworKyAgZWxzZQorKyAgICB7CisrICAg ICAgcmVzdWx0ID0gWE5FVyAoc3RydWN0IHN0cnRhYl9lbnRyeSk7CisrICAgICAgcmVzdWx0LT5v ZmZzZXQgPSBvYnN0YWNrX29iamVjdF9zaXplIChjcG9vbCk7CisrICAgICAgcmVzdWx0LT5zdHIg PSBzdHI7CisrICAgICAgb2JzdGFja19ncm93X3N0cjAgKGNwb29sLCBzdHIpOworKyAgICAgICpz bG90ID0gcmVzdWx0OworKyAgICB9CisrICByZXR1cm4gcmVzdWx0LT5vZmZzZXQ7CisrfQorKwor Ky8qIEFuIGVudHJ5IGluIHRoZSBzeW1ib2wgdGFibGUuICAqLworK3N0cnVjdCBzeW10YWJfaW5k ZXhfZW50cnkKKyt7CisrICAvKiBUaGUgbmFtZSBvZiB0aGUgc3ltYm9sLiAgKi8KKysgIGNvbnN0 IGNoYXIgKm5hbWU7CisrICAvKiBUaGUgb2Zmc2V0IG9mIHRoZSBuYW1lIGluIHRoZSBjb25zdGFu dCBwb29sLiAgKi8KKysgIG9mZnNldF90eXBlIGluZGV4X29mZnNldDsKKysgIC8qIEEgc29ydGVk IHZlY3RvciBvZiB0aGUgaW5kaWNlcyBvZiBhbGwgdGhlIENVcyB0aGF0IGhvbGQgYW4gb2JqZWN0 CisrICAgICBvZiB0aGlzIG5hbWUuICAqLworKyAgVkVDIChvZmZzZXRfdHlwZSkgKmN1X2luZGlj ZXM7CisrfTsKKysKKysvKiBUaGUgc3ltYm9sIHRhYmxlLiAgVGhpcyBpcyBhIHBvd2VyLW9mLTIt c2l6ZWQgaGFzaCB0YWJsZS4gICovCisrc3RydWN0IG1hcHBlZF9zeW10YWIKKyt7CisrICBvZmZz ZXRfdHlwZSBuX2VsZW1lbnRzOworKyAgb2Zmc2V0X3R5cGUgc2l6ZTsKKysgIHN0cnVjdCBzeW10 YWJfaW5kZXhfZW50cnkgKipkYXRhOworK307CisrCisrLyogSGFzaCBmdW5jdGlvbiBmb3IgYSBz eW10YWJfaW5kZXhfZW50cnkuICAqLworK3N0YXRpYyBoYXNodmFsX3QKKytoYXNoX3N5bXRhYl9l bnRyeSAoY29uc3Qgdm9pZCAqZSkKKyt7CisrICBjb25zdCBzdHJ1Y3Qgc3ltdGFiX2luZGV4X2Vu dHJ5ICplbnRyeSA9IGU7CisrICByZXR1cm4gaXRlcmF0aXZlX2hhc2ggKFZFQ19hZGRyZXNzIChv ZmZzZXRfdHlwZSwgZW50cnktPmN1X2luZGljZXMpLAorKwkJCSBzaXplb2YgKG9mZnNldF90eXBl KSAqIFZFQ19sZW5ndGggKG9mZnNldF90eXBlLAorKwkJCQkJCQkgICAgZW50cnktPmN1X2luZGlj ZXMpLAorKwkJCSAwKTsKKyt9CisrCisrLyogRXF1YWxpdHkgZnVuY3Rpb24gZm9yIGEgc3ltdGFi X2luZGV4X2VudHJ5LiAgKi8KKytzdGF0aWMgaW50CisrZXFfc3ltdGFiX2VudHJ5IChjb25zdCB2 b2lkICphLCBjb25zdCB2b2lkICpiKQorK3sKKysgIGNvbnN0IHN0cnVjdCBzeW10YWJfaW5kZXhf ZW50cnkgKmVhID0gYTsKKysgIGNvbnN0IHN0cnVjdCBzeW10YWJfaW5kZXhfZW50cnkgKmViID0g YjsKKysgIGludCBsZW4gPSBWRUNfbGVuZ3RoIChvZmZzZXRfdHlwZSwgZWEtPmN1X2luZGljZXMp OworKyAgaWYgKGxlbiAhPSBWRUNfbGVuZ3RoIChvZmZzZXRfdHlwZSwgZWItPmN1X2luZGljZXMp KQorKyAgICByZXR1cm4gMDsKKysgIHJldHVybiAhbWVtY21wIChWRUNfYWRkcmVzcyAob2Zmc2V0 X3R5cGUsIGVhLT5jdV9pbmRpY2VzKSwKKysJCSAgVkVDX2FkZHJlc3MgKG9mZnNldF90eXBlLCBl Yi0+Y3VfaW5kaWNlcyksCisrCQkgIHNpemVvZiAob2Zmc2V0X3R5cGUpICogbGVuKTsKKyt9Cisr CisrLyogRGVzdHJveSBhIHN5bXRhYl9pbmRleF9lbnRyeS4gICovCisrc3RhdGljIHZvaWQKKytk ZWxldGVfc3ltdGFiX2VudHJ5ICh2b2lkICpwKQorK3sKKysgIHN0cnVjdCBzeW10YWJfaW5kZXhf ZW50cnkgKmVudHJ5ID0gcDsKKysgIFZFQ19mcmVlIChvZmZzZXRfdHlwZSwgZW50cnktPmN1X2lu ZGljZXMpOworKyAgeGZyZWUgKGVudHJ5KTsKKyt9CisrCisrLyogQ3JlYXRlIGEgaGFzaCB0YWJs ZSBob2xkaW5nIHN5bXRhYl9pbmRleF9lbnRyeSBvYmplY3RzLiAgKi8KKytzdGF0aWMgaHRhYl90 CisrY3JlYXRlX2luZGV4X3RhYmxlICh2b2lkKQorK3sKKysgIHJldHVybiBodGFiX2NyZWF0ZV9h bGxvYyAoMTAwLCBoYXNoX3N5bXRhYl9lbnRyeSwgZXFfc3ltdGFiX2VudHJ5LAorKwkJCSAgICBk ZWxldGVfc3ltdGFiX2VudHJ5LCB4Y2FsbG9jLCB4ZnJlZSk7CisrfQorKworKy8qIENyZWF0ZSBh IG5ldyBtYXBwZWQgc3ltdGFiIG9iamVjdC4gICovCisrc3RhdGljIHN0cnVjdCBtYXBwZWRfc3lt dGFiICoKKytjcmVhdGVfbWFwcGVkX3N5bXRhYiAodm9pZCkKKyt7CisrICBzdHJ1Y3QgbWFwcGVk X3N5bXRhYiAqc3ltdGFiID0gWE5FVyAoc3RydWN0IG1hcHBlZF9zeW10YWIpOworKyAgc3ltdGFi LT5uX2VsZW1lbnRzID0gMDsKKysgIHN5bXRhYi0+c2l6ZSA9IDEwMjQ7CisrICBzeW10YWItPmRh dGEgPSBYQ05FV1ZFQyAoc3RydWN0IHN5bXRhYl9pbmRleF9lbnRyeSAqLCBzeW10YWItPnNpemUp OworKyAgcmV0dXJuIHN5bXRhYjsKKyt9CisrCisrLyogRGVzdHJveSBhIG1hcHBlZF9zeW10YWIu ICAqLworK3N0YXRpYyB2b2lkCisrY2xlYW51cF9tYXBwZWRfc3ltdGFiICh2b2lkICpwKQorK3sK KysgIHN0cnVjdCBtYXBwZWRfc3ltdGFiICpzeW10YWIgPSBwOworKyAgLyogVGhlIGNvbnRlbnRz IG9mIHRoZSBhcnJheSBhcmUgZnJlZWQgd2hlbiB0aGUgb3RoZXIgaGFzaCB0YWJsZSBpcworKyAg ICAgZGVzdHJveWVkLiAgKi8KKysgIHhmcmVlIChzeW10YWItPmRhdGEpOworKyAgeGZyZWUgKHN5 bXRhYik7CisrfQorKworKy8qIEZpbmQgYSBzbG90IGluIFNZTVRBQiBmb3IgdGhlIHN5bWJvbCBO QU1FLiAgUmV0dXJucyBhIHBvaW50ZXIgdG8KKysgICB0aGUgc2xvdC4gICovCisrc3RhdGljIHN0 cnVjdCBzeW10YWJfaW5kZXhfZW50cnkgKioKKytmaW5kX3Nsb3QgKHN0cnVjdCBtYXBwZWRfc3lt dGFiICpzeW10YWIsIGNvbnN0IGNoYXIgKm5hbWUpCisreworKyAgb2Zmc2V0X3R5cGUgaW5kZXgs IHN0ZXAsIGhhc2ggPSBtYXBwZWRfaW5kZXhfc3RyaW5nX2hhc2ggKG5hbWUpOworKworKyAgaW5k ZXggPSBoYXNoICYgKHN5bXRhYi0+c2l6ZSAtIDEpOworKyAgc3RlcCA9ICgoaGFzaCAqIDE3KSAm IChzeW10YWItPnNpemUgLSAxKSkgfCAxOworKworKyAgZm9yICg7OykKKysgICAgeworKyAgICAg IGlmICghc3ltdGFiLT5kYXRhW2luZGV4XSB8fCAhc3RyY21wIChuYW1lLCBzeW10YWItPmRhdGFb aW5kZXhdLT5uYW1lKSkKKysJcmV0dXJuICZzeW10YWItPmRhdGFbaW5kZXhdOworKyAgICAgIGlu ZGV4ID0gKGluZGV4ICsgc3RlcCkgJiAoc3ltdGFiLT5zaXplIC0gMSk7CisrICAgIH0KKyt9Cisr CisrLyogRXhwYW5kIFNZTVRBQidzIGhhc2ggdGFibGUuICAqLworK3N0YXRpYyB2b2lkCisraGFz aF9leHBhbmQgKHN0cnVjdCBtYXBwZWRfc3ltdGFiICpzeW10YWIpCisreworKyAgb2Zmc2V0X3R5 cGUgb2xkX3NpemUgPSBzeW10YWItPnNpemU7CisrICBvZmZzZXRfdHlwZSBpOworKyAgc3RydWN0 IHN5bXRhYl9pbmRleF9lbnRyeSAqKm9sZF9lbnRyaWVzID0gc3ltdGFiLT5kYXRhOworKworKyAg c3ltdGFiLT5zaXplICo9IDI7CisrICBzeW10YWItPmRhdGEgPSBYQ05FV1ZFQyAoc3RydWN0IHN5 bXRhYl9pbmRleF9lbnRyeSAqLCBzeW10YWItPnNpemUpOworKworKyAgZm9yIChpID0gMDsgaSA8 IG9sZF9zaXplOyArK2kpCisrICAgIHsKKysgICAgICBpZiAob2xkX2VudHJpZXNbaV0pCisrCXsK KysJICBzdHJ1Y3Qgc3ltdGFiX2luZGV4X2VudHJ5ICoqc2xvdCA9IGZpbmRfc2xvdCAoc3ltdGFi LAorKwkJCQkJCQlvbGRfZW50cmllc1tpXS0+bmFtZSk7CisrCSAgKnNsb3QgPSBvbGRfZW50cmll c1tpXTsKKysJfQorKyAgICB9CisrCisrICB4ZnJlZSAob2xkX2VudHJpZXMpOworK30KKysKKysv KiBBZGQgYW4gZW50cnkgdG8gU1lNVEFCLiAgTkFNRSBpcyB0aGUgbmFtZSBvZiB0aGUgc3ltYm9s LiAgQ1VfSU5ERVgKKysgICBpcyB0aGUgaW5kZXggb2YgdGhlIENVIGluIHdoaWNoIHRoZSBzeW1i b2wgYXBwZWFycy4gICovCisrc3RhdGljIHZvaWQKKythZGRfaW5kZXhfZW50cnkgKHN0cnVjdCBt YXBwZWRfc3ltdGFiICpzeW10YWIsIGNvbnN0IGNoYXIgKm5hbWUsCisrCQkgb2Zmc2V0X3R5cGUg Y3VfaW5kZXgpCisreworKyAgc3RydWN0IHN5bXRhYl9pbmRleF9lbnRyeSAqKnNsb3Q7CisrCisr ICArK3N5bXRhYi0+bl9lbGVtZW50czsKKysgIGlmICg0ICogc3ltdGFiLT5uX2VsZW1lbnRzIC8g MyA+PSBzeW10YWItPnNpemUpCisrICAgIGhhc2hfZXhwYW5kIChzeW10YWIpOworKworKyAgc2xv dCA9IGZpbmRfc2xvdCAoc3ltdGFiLCBuYW1lKTsKKysgIGlmICghKnNsb3QpCisrICAgIHsKKysg ICAgICAqc2xvdCA9IFhORVcgKHN0cnVjdCBzeW10YWJfaW5kZXhfZW50cnkpOworKyAgICAgICgq c2xvdCktPm5hbWUgPSBuYW1lOworKyAgICAgICgqc2xvdCktPmN1X2luZGljZXMgPSBOVUxMOwor KyAgICB9CisrICAvKiBEb24ndCBwdXNoIGFuIGluZGV4IHR3aWNlLiAgRHVlIHRvIGhvdyB3ZSBh ZGQgZW50cmllcyB3ZSBvbmx5CisrICAgICBoYXZlIHRvIGNoZWNrIHRoZSBsYXN0IG9uZS4gICov IAorKyAgaWYgKFZFQ19lbXB0eSAob2Zmc2V0X3R5cGUsICgqc2xvdCktPmN1X2luZGljZXMpCisr ICAgICAgfHwgVkVDX2xlbmd0aCAob2Zmc2V0X3R5cGUsICgqc2xvdCktPmN1X2luZGljZXMpICE9 IGN1X2luZGV4KQorKyAgICBWRUNfc2FmZV9wdXNoIChvZmZzZXRfdHlwZSwgKCpzbG90KS0+Y3Vf aW5kaWNlcywgY3VfaW5kZXgpOworK30KKysKKysvKiBBZGQgYSB2ZWN0b3Igb2YgaW5kaWNlcyB0 byB0aGUgY29uc3RhbnQgcG9vbC4gICovCisrc3RhdGljIG9mZnNldF90eXBlCisrYWRkX2luZGlj ZXNfdG9fY3Bvb2wgKGh0YWJfdCBpbmRleF90YWJsZSwgc3RydWN0IG9ic3RhY2sgKmNwb29sLAor KwkJICAgICAgc3RydWN0IHN5bXRhYl9pbmRleF9lbnRyeSAqZW50cnkpCisreworKyAgdm9pZCAq KnNsb3Q7CisrCisrICBzbG90ID0gaHRhYl9maW5kX3Nsb3QgKGluZGV4X3RhYmxlLCBlbnRyeSwg SU5TRVJUKTsKKysgIGlmICghKnNsb3QpCisrICAgIHsKKysgICAgICBvZmZzZXRfdHlwZSBsZW4g PSBWRUNfbGVuZ3RoIChvZmZzZXRfdHlwZSwgZW50cnktPmN1X2luZGljZXMpOworKyAgICAgIG9m ZnNldF90eXBlIHZhbCA9IE1BWUJFX1NXQVAgKGxlbik7CisrICAgICAgb2Zmc2V0X3R5cGUgaXRl cjsKKysgICAgICBpbnQgaTsKKysKKysgICAgICAqc2xvdCA9IGVudHJ5OworKyAgICAgIGVudHJ5 LT5pbmRleF9vZmZzZXQgPSBvYnN0YWNrX29iamVjdF9zaXplIChjcG9vbCk7CisrCisrICAgICAg b2JzdGFja19ncm93IChjcG9vbCwgJnZhbCwgc2l6ZW9mICh2YWwpKTsKKysgICAgICBmb3IgKGkg PSAwOworKwkgICBWRUNfaXRlcmF0ZSAob2Zmc2V0X3R5cGUsIGVudHJ5LT5jdV9pbmRpY2VzLCBp LCBpdGVyKTsKKysJICAgKytpKQorKwl7CisrCSAgdmFsID0gTUFZQkVfU1dBUCAoaXRlcik7Cisr CSAgb2JzdGFja19ncm93IChjcG9vbCwgJnZhbCwgc2l6ZW9mICh2YWwpKTsKKysJfQorKyAgICB9 CisrICBlbHNlCisrICAgIHsKKysgICAgICBzdHJ1Y3Qgc3ltdGFiX2luZGV4X2VudHJ5ICpvbGRf ZW50cnkgPSAqc2xvdDsKKysgICAgICBlbnRyeS0+aW5kZXhfb2Zmc2V0ID0gb2xkX2VudHJ5LT5p bmRleF9vZmZzZXQ7CisrICAgICAgZW50cnkgPSBvbGRfZW50cnk7CisrICAgIH0KKysgIHJldHVy biBlbnRyeS0+aW5kZXhfb2Zmc2V0OworK30KKysKKysvKiBXcml0ZSB0aGUgbWFwcGVkIGhhc2gg dGFibGUgU1lNVEFCIHRvIHRoZSBvYnN0YWNrIE9VVFBVVCwgd2l0aAorKyAgIGNvbnN0YW50IHBv b2wgZW50cmllcyBnb2luZyBpbnRvIHRoZSBvYnN0YWNrIENQT09MLiAgKi8KKytzdGF0aWMgdm9p ZAorK3dyaXRlX2hhc2hfdGFibGUgKHN0cnVjdCBtYXBwZWRfc3ltdGFiICpzeW10YWIsCisrCQkg IHN0cnVjdCBvYnN0YWNrICpvdXRwdXQsIHN0cnVjdCBvYnN0YWNrICpjcG9vbCkKKyt7CisrICBv ZmZzZXRfdHlwZSBpOworKyAgaHRhYl90IGluZGV4X3RhYmxlOworKyAgaHRhYl90IHN0cl90YWJs ZTsKKysKKysgIGluZGV4X3RhYmxlID0gY3JlYXRlX2luZGV4X3RhYmxlICgpOworKyAgc3RyX3Rh YmxlID0gY3JlYXRlX3N0cnRhYiAoKTsKKysgIC8qIFdlIGFkZCBhbGwgdGhlIGluZGV4IHZlY3Rv cnMgdG8gdGhlIGNvbnN0YW50IHBvb2wgZmlyc3QsIHRvCisrICAgICBlbnN1cmUgYWxpZ25tZW50 IGlzIG9rLiAgKi8KKysgIGZvciAoaSA9IDA7IGkgPCBzeW10YWItPnNpemU7ICsraSkKKysgICAg eworKyAgICAgIGlmIChzeW10YWItPmRhdGFbaV0pCisrCWFkZF9pbmRpY2VzX3RvX2Nwb29sIChp bmRleF90YWJsZSwgY3Bvb2wsIHN5bXRhYi0+ZGF0YVtpXSk7CisrICAgIH0KKysKKysgIC8qIE5v dyB3cml0ZSBvdXQgdGhlIGhhc2ggdGFibGUuICAqLworKyAgZm9yIChpID0gMDsgaSA8IHN5bXRh Yi0+c2l6ZTsgKytpKQorKyAgICB7CisrICAgICAgb2Zmc2V0X3R5cGUgc3RyX29mZiwgdmVjX29m ZjsKKysKKysgICAgICBpZiAoc3ltdGFiLT5kYXRhW2ldKQorKwl7CisrCSAgc3RyX29mZiA9IGFk ZF9zdHJpbmcgKHN0cl90YWJsZSwgY3Bvb2wsIHN5bXRhYi0+ZGF0YVtpXS0+bmFtZSk7CisrCSAg dmVjX29mZiA9IHN5bXRhYi0+ZGF0YVtpXS0+aW5kZXhfb2Zmc2V0OworKwl9CisrICAgICAgZWxz ZQorKwl7CisrCSAgLyogV2hpbGUgMCBpcyBhIHZhbGlkIGNvbnN0YW50IHBvb2wgaW5kZXgsIGl0 IGlzIG5vdCB2YWxpZAorKwkgICAgIHRvIGhhdmUgMCBmb3IgYm90aCBvZmZzZXRzLiAgKi8KKysJ ICBzdHJfb2ZmID0gMDsKKysJICB2ZWNfb2ZmID0gMDsKKysJfQorKworKyAgICAgIHN0cl9vZmYg PSBNQVlCRV9TV0FQIChzdHJfb2ZmKTsKKysgICAgICB2ZWNfb2ZmID0gTUFZQkVfU1dBUCAodmVj X29mZik7CisrCisrICAgICAgb2JzdGFja19ncm93IChvdXRwdXQsICZzdHJfb2ZmLCBzaXplb2Yg KHN0cl9vZmYpKTsKKysgICAgICBvYnN0YWNrX2dyb3cgKG91dHB1dCwgJnZlY19vZmYsIHNpemVv ZiAodmVjX29mZikpOworKyAgICB9CisrCisrICBodGFiX2RlbGV0ZSAoc3RyX3RhYmxlKTsKKysg IGh0YWJfZGVsZXRlIChpbmRleF90YWJsZSk7CisrfQorKworKy8qIFdyaXRlIGFuIGFkZHJlc3Mg ZW50cnkgdG8gQUREUl9PQlNUQUNLLiAgVGhlIGFkZHJlc3NlcyBhcmUgdGFrZW4KKysgICBmcm9t IFBTVDsgQ1VfSU5ERVggaXMgdGhlIGluZGV4IG9mIHRoZSBDVSBpbiB0aGUgdmVjdG9yIG9mIGFs bAorKyAgIENVcy4gICovCisrc3RhdGljIHZvaWQKKythZGRfYWRkcmVzc19lbnRyeSAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUsCisrCQkgICBzdHJ1Y3Qgb2JzdGFjayAqYWRkcl9vYnN0YWNrLCBz dHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdCwKKysJCSAgIHVuc2lnbmVkIGludCBjdV9pbmRleCkK Kyt7CisrICBvZmZzZXRfdHlwZSBvZmZzZXQ7CisrICBjaGFyIGFkZHJbOF07CisrICBDT1JFX0FE RFIgYmFzZWFkZHI7CisrCisrICBiYXNlYWRkciA9IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9u X29mZnNldHMsIFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUpKTsKKysKKysgIHN0b3JlX3Vuc2lnbmVk X2ludGVnZXIgKGFkZHIsIDgsIEJGRF9FTkRJQU5fTElUVExFLCBwc3QtPnRleHRsb3cgLSBiYXNl YWRkcik7CisrICBvYnN0YWNrX2dyb3cgKGFkZHJfb2JzdGFjaywgYWRkciwgOCk7CisrICBzdG9y ZV91bnNpZ25lZF9pbnRlZ2VyIChhZGRyLCA4LCBCRkRfRU5ESUFOX0xJVFRMRSwgcHN0LT50ZXh0 aGlnaCAtIGJhc2VhZGRyKTsKKysgIG9ic3RhY2tfZ3JvdyAoYWRkcl9vYnN0YWNrLCBhZGRyLCA4 KTsKKysgIG9mZnNldCA9IE1BWUJFX1NXQVAgKGN1X2luZGV4KTsKKysgIG9ic3RhY2tfZ3JvdyAo YWRkcl9vYnN0YWNrLCAmb2Zmc2V0LCBzaXplb2YgKG9mZnNldF90eXBlKSk7CisrfQorKworKy8q IEFkZCBhIGxpc3Qgb2YgcGFydGlhbCBzeW1ib2xzIHRvIFNZTVRBQi4gICovCisrc3RhdGljIHZv aWQKKyt3cml0ZV9wc3ltYm9scyAoc3RydWN0IG1hcHBlZF9zeW10YWIgKnN5bXRhYiwKKysJCXN0 cnVjdCBwYXJ0aWFsX3N5bWJvbCAqKnBzeW1wLAorKwkJaW50IGNvdW50LAorKwkJb2Zmc2V0X3R5 cGUgY3VfaW5kZXgpCisreworKyAgZm9yICg7IGNvdW50LS0gPiAwOyArK3BzeW1wKQorKyAgICB7 CisrICAgICAgaWYgKFNZTUJPTF9MQU5HVUFHRSAoKnBzeW1wKSA9PSBsYW5ndWFnZV9hZGEpCisr CWVycm9yIChfKCJBZGEgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkgdGhlIGluZGV4Iikp OworKyAgICAgIGFkZF9pbmRleF9lbnRyeSAoc3ltdGFiLCBTWU1CT0xfTkFUVVJBTF9OQU1FICgq cHN5bXApLCBjdV9pbmRleCk7CisrICAgIH0KKyt9CisrCisrLyogV3JpdGUgdGhlIGNvbnRlbnRz IG9mIGFuICgidW5maW5pc2hlZCIpIG9ic3RhY2sgdG8gRklMRS4gIFRocm93IGFuCisrICAgZXhj ZXB0aW9uIGlmIHRoZXJlIGlzIGFuIGVycm9yLiAgKi8KKytzdGF0aWMgdm9pZAorK3dyaXRlX29i c3RhY2sgKEZJTEUgKmZpbGUsIHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrKQorK3sKKysgIGlmIChm d3JpdGUgKG9ic3RhY2tfYmFzZSAob2JzdGFjayksIDEsIG9ic3RhY2tfb2JqZWN0X3NpemUgKG9i c3RhY2spLAorKwkgICAgICBmaWxlKQorKyAgICAgICE9IG9ic3RhY2tfb2JqZWN0X3NpemUgKG9i c3RhY2spKQorKyAgICBlcnJvciAoXygiY291bGRuJ3QgZGF0YSB3cml0ZSB0byBmaWxlIikpOwor K30KKysKKysvKiBVbmxpbmsgYSBmaWxlIGlmIHRoZSBhcmd1bWVudCBpcyBub3QgTlVMTC4gICov Cisrc3RhdGljIHZvaWQKKyt1bmxpbmtfaWZfc2V0ICh2b2lkICpwKQorK3sKKysgIGNoYXIgKipm aWxlbmFtZSA9IHA7CisrICBpZiAoKmZpbGVuYW1lKQorKyAgICB1bmxpbmsgKCpmaWxlbmFtZSk7 CisrfQorKworKy8qIENyZWF0ZSBhbiBpbmRleCBmaWxlIGZvciBPQkpGSUxFIGluIHRoZSBkaXJl Y3RvcnkgRElSLiAgKi8KKytzdGF0aWMgdm9pZAorK3dyaXRlX3BzeW10YWJzX3RvX2luZGV4IChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqZGlyKQorK3sKKysgIHN0cnVjdCBj bGVhbnVwICpjbGVhbnVwOworKyAgY2hhciAqZmlsZW5hbWUsICpjbGVhbnVwX2ZpbGVuYW1lOwor KyAgc3RydWN0IG9ic3RhY2sgY29udGVudHMsIGFkZHJfb2JzdGFjaywgY29uc3RhbnRfcG9vbCwg c3ltdGFiX29ic3RhY2ssIGN1X2xpc3Q7CisrICBpbnQgaTsKKysgIEZJTEUgKm91dF9maWxlOwor KyAgc3RydWN0IG1hcHBlZF9zeW10YWIgKnN5bXRhYjsKKysgIG9mZnNldF90eXBlIHZhbCwgc2l6 ZV9vZl9jb250ZW50cywgdG90YWxfbGVuOworKyAgc3RydWN0IHN0YXQgc3Q7CisrICBjaGFyIGJ1 Zls4XTsKKysKKysgIGlmICghb2JqZmlsZS0+cHN5bXRhYnMpCisrICAgIHJldHVybjsKKysgIGlm IChkd2FyZjJfcGVyX29iamZpbGUtPnVzaW5nX2luZGV4KQorKyAgICBlcnJvciAoXygiQ2Fubm90 IHVzZSBhbiBpbmRleCB0byBjcmVhdGUgdGhlIGluZGV4IikpOworKworKyAgaWYgKHN0YXQgKG9i amZpbGUtPm5hbWUsICZzdCkgPCAwKQorKyAgICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJDb3VsZCBu b3Qgc3RhdCIpKTsKKysKKysgIGZpbGVuYW1lID0gY29uY2F0IChkaXIsIFNMQVNIX1NUUklORywg bGJhc2VuYW1lIChvYmpmaWxlLT5uYW1lKSwKKysJCSAgICAgSU5ERVhfU1VGRklYLCAoY2hhciAq KSBOVUxMKTsKKysgIGNsZWFudXAgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBmaWxlbmFtZSk7Cisr CisrICBvdXRfZmlsZSA9IGZvcGVuIChmaWxlbmFtZSwgIndiIik7CisrICBpZiAoIW91dF9maWxl KQorKyAgICBlcnJvciAoXygiQ2FuJ3Qgb3BlbiBgJXMnIGZvciB3cml0aW5nIiksIGZpbGVuYW1l KTsKKysKKysgIGNsZWFudXBfZmlsZW5hbWUgPSBmaWxlbmFtZTsKKysgIG1ha2VfY2xlYW51cCAo dW5saW5rX2lmX3NldCwgJmNsZWFudXBfZmlsZW5hbWUpOworKworKyAgc3ltdGFiID0gY3JlYXRl X21hcHBlZF9zeW10YWIgKCk7CisrICBtYWtlX2NsZWFudXAgKGNsZWFudXBfbWFwcGVkX3N5bXRh Yiwgc3ltdGFiKTsKKysKKysgIG9ic3RhY2tfaW5pdCAoJmFkZHJfb2JzdGFjayk7CisrICBtYWtl X2NsZWFudXBfb2JzdGFja19mcmVlICgmYWRkcl9vYnN0YWNrKTsKKysKKysgIG9ic3RhY2tfaW5p dCAoJmN1X2xpc3QpOworKyAgbWFrZV9jbGVhbnVwX29ic3RhY2tfZnJlZSAoJmN1X2xpc3QpOwor KworKyAgZm9yIChpID0gMDsgaSA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzOyAr K2kpCisrICAgIHsKKysgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdSA9IGR3YXJm Ml9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNbaV07CisrICAgICAgc3RydWN0IHBhcnRpYWxf c3ltdGFiICpwc3ltdGFiID0gY3UtPnYucHN5bXRhYjsKKysgICAgICBnZGJfYnl0ZSB2YWxbOF07 CisrCisrICAgICAgd3JpdGVfcHN5bWJvbHMgKHN5bXRhYiwKKysJCSAgICAgIG9iamZpbGUtPmds b2JhbF9wc3ltYm9scy5saXN0ICsgcHN5bXRhYi0+Z2xvYmFsc19vZmZzZXQsCisrCQkgICAgICBw c3ltdGFiLT5uX2dsb2JhbF9zeW1zLCBpKTsKKysgICAgICB3cml0ZV9wc3ltYm9scyAoc3ltdGFi LAorKwkJICAgICAgb2JqZmlsZS0+c3RhdGljX3BzeW1ib2xzLmxpc3QgKyBwc3ltdGFiLT5zdGF0 aWNzX29mZnNldCwKKysJCSAgICAgIHBzeW10YWItPm5fc3RhdGljX3N5bXMsIGkpOworKworKyAg ICAgIGFkZF9hZGRyZXNzX2VudHJ5IChvYmpmaWxlLCAmYWRkcl9vYnN0YWNrLCBwc3ltdGFiLCBp KTsKKysKKysgICAgICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyICh2YWwsIDgsIEJGRF9FTkRJQU5f TElUVExFLCBjdS0+b2Zmc2V0KTsKKysgICAgICBvYnN0YWNrX2dyb3cgKCZjdV9saXN0LCB2YWws IDgpOworKyAgICAgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKHZhbCwgOCwgQkZEX0VORElBTl9M SVRUTEUsIGN1LT5sZW5ndGgpOworKyAgICAgIG9ic3RhY2tfZ3JvdyAoJmN1X2xpc3QsIHZhbCwg OCk7CisrICAgIH0KKysKKysgIG9ic3RhY2tfaW5pdCAoJmNvbnN0YW50X3Bvb2wpOworKyAgbWFr ZV9jbGVhbnVwX29ic3RhY2tfZnJlZSAoJmNvbnN0YW50X3Bvb2wpOworKyAgb2JzdGFja19pbml0 ICgmc3ltdGFiX29ic3RhY2spOworKyAgbWFrZV9jbGVhbnVwX29ic3RhY2tfZnJlZSAoJnN5bXRh Yl9vYnN0YWNrKTsKKysgIHdyaXRlX2hhc2hfdGFibGUgKHN5bXRhYiwgJnN5bXRhYl9vYnN0YWNr LCAmY29uc3RhbnRfcG9vbCk7CisrCisrICBvYnN0YWNrX2luaXQgKCZjb250ZW50cyk7CisrICBt YWtlX2NsZWFudXBfb2JzdGFja19mcmVlICgmY29udGVudHMpOworKyAgc2l6ZV9vZl9jb250ZW50 cyA9IDUgKiBzaXplb2YgKG9mZnNldF90eXBlKTsKKysgIHRvdGFsX2xlbiA9IHNpemVfb2ZfY29u dGVudHM7CisrCisrICAvKiBUaGUgdmVyc2lvbiBudW1iZXIuICAqLworKyAgdmFsID0gTUFZQkVf U1dBUCAoMSk7CisrICBvYnN0YWNrX2dyb3cgKCZjb250ZW50cywgJnZhbCwgc2l6ZW9mICh2YWwp KTsKKysKKysgIC8qIFRoZSBvZmZzZXQgb2YgdGhlIENVIGxpc3QgZnJvbSB0aGUgc3RhcnQgb2Yg dGhlIGZpbGUuICAqLworKyAgdmFsID0gTUFZQkVfU1dBUCAodG90YWxfbGVuKTsKKysgIG9ic3Rh Y2tfZ3JvdyAoJmNvbnRlbnRzLCAmdmFsLCBzaXplb2YgKHZhbCkpOworKyAgdG90YWxfbGVuICs9 IG9ic3RhY2tfb2JqZWN0X3NpemUgKCZjdV9saXN0KTsKKysKKysgIC8qIFRoZSBvZmZzZXQgb2Yg dGhlIGFkZHJlc3MgdGFibGUgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUuICAqLworKyAgdmFs ID0gTUFZQkVfU1dBUCAodG90YWxfbGVuKTsKKysgIG9ic3RhY2tfZ3JvdyAoJmNvbnRlbnRzLCAm dmFsLCBzaXplb2YgKHZhbCkpOworKyAgdG90YWxfbGVuICs9IG9ic3RhY2tfb2JqZWN0X3NpemUg KCZhZGRyX29ic3RhY2spOworKworKyAgLyogVGhlIG9mZnNldCBvZiB0aGUgc3ltYm9sIHRhYmxl IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLiAgKi8KKysgIHZhbCA9IE1BWUJFX1NXQVAgKHRv dGFsX2xlbik7CisrICBvYnN0YWNrX2dyb3cgKCZjb250ZW50cywgJnZhbCwgc2l6ZW9mICh2YWwp KTsKKysgIHRvdGFsX2xlbiArPSBvYnN0YWNrX29iamVjdF9zaXplICgmc3ltdGFiX29ic3RhY2sp OworKworKyAgLyogVGhlIG9mZnNldCBvZiB0aGUgY29uc3RhbnQgcG9vbCBmcm9tIHRoZSBzdGFy dCBvZiB0aGUgZmlsZS4gICovCisrICB2YWwgPSBNQVlCRV9TV0FQICh0b3RhbF9sZW4pOworKyAg b2JzdGFja19ncm93ICgmY29udGVudHMsICZ2YWwsIHNpemVvZiAodmFsKSk7CisrICB0b3RhbF9s ZW4gKz0gb2JzdGFja19vYmplY3Rfc2l6ZSAoJmNvbnN0YW50X3Bvb2wpOworKworKyAgZ2RiX2Fz c2VydCAob2JzdGFja19vYmplY3Rfc2l6ZSAoJmNvbnRlbnRzKSA9PSBzaXplX29mX2NvbnRlbnRz KTsKKysKKysgIHdyaXRlX29ic3RhY2sgKG91dF9maWxlLCAmY29udGVudHMpOworKyAgd3JpdGVf b2JzdGFjayAob3V0X2ZpbGUsICZjdV9saXN0KTsKKysgIHdyaXRlX29ic3RhY2sgKG91dF9maWxl LCAmYWRkcl9vYnN0YWNrKTsKKysgIHdyaXRlX29ic3RhY2sgKG91dF9maWxlLCAmc3ltdGFiX29i c3RhY2spOworKyAgd3JpdGVfb2JzdGFjayAob3V0X2ZpbGUsICZjb25zdGFudF9wb29sKTsKKysK KysgIGZjbG9zZSAob3V0X2ZpbGUpOworKworKyAgLyogV2Ugd2FudCB0byBrZWVwIHRoZSBmaWxl LCBzbyB3ZSBzZXQgY2xlYW51cF9maWxlbmFtZSB0byBOVUxMCisrICAgICBoZXJlLiAgU2VlIHVu bGlua19pZl9zZXQuICAqLworKyAgY2xlYW51cF9maWxlbmFtZSA9IE5VTEw7CisrCisrICBkb19j bGVhbnVwcyAoY2xlYW51cCk7CisrfQorKworKy8qIFRoZSBtYXBwZWQgaW5kZXggZmlsZSBmb3Jt YXQgaXMgZGVzaWduZWQgdG8gYmUgZGlyZWN0bHkgbW1hcCgpYWJsZQorKyAgIG9uIGFueSBhcmNo aXRlY3R1cmUuICBJbiBtb3N0IGNhc2VzLCBhIGRhdHVtIGlzIHJlcHJlc2VudGVkIHVzaW5nIGEK KysgICBsaXR0bGUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyIHZhbHVlLCBjYWxsZWQgYW4gb2Zmc2V0 X3R5cGUuICBCaWcKKysgICBlbmRpYW4gbWFjaGluZXMgbXVzdCBieXRlLXN3YXAgdGhlIHZhbHVl cyBiZWZvcmUgdXNpbmcgdGhlbS4KKysgICBFeGNlcHRpb25zIHRvIHRoaXMgcnVsZSBhcmUgbm90 ZWQuICBUaGUgZGF0YSBpcyBsYWlkIG91dCBzdWNoIHRoYXQKKysgICBhbGlnbm1lbnQgaXMgYWx3 YXlzIHJlc3BlY3RlZC4KKysKKysgICBBIG1hcHBlZCBpbmRleCBjb25zaXN0cyBvZiBzZXZlcmFs IHNlY3Rpb25zLgorKworKyAgIDEuIFRoZSBmaWxlIGhlYWRlci4gIFRoaXMgaXMgYSBzZXF1ZW5j ZSBvZiB2YWx1ZXMsIG9mIG9mZnNldF90eXBlCisrICAgdW5sZXNzIG90aGVyd2lzZSBub3RlZDoK KysgICBbMF0gVGhlIHZlcnNpb24gbnVtYmVyLiAgQ3VycmVudGx5IDEuCisrICAgWzFdIFRoZSBv ZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLCBvZiB0aGUgQ1UgbGlzdC4KKysgICBb Ml0gVGhlIG9mZnNldCwgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUsIG9mIHRoZSBhZGRyZXNz IHNlY3Rpb24uCisrICAgWzNdIFRoZSBvZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxl LCBvZiB0aGUgc3ltYm9sIHRhYmxlLgorKyAgIFs0XSBUaGUgb2Zmc2V0LCBmcm9tIHRoZSBzdGFy dCBvZiB0aGUgZmlsZSwgb2YgdGhlIGNvbnN0YW50IHBvb2wuCisrCisrICAgMi4gVGhlIENVIGxp c3QuICBUaGlzIGlzIGEgc2VxdWVuY2Ugb2YgcGFpcnMgb2YgNjQtYml0CisrICAgbGl0dGxlLWVu ZGlhbiB2YWx1ZXMuICBUaGUgZmlyc3QgZWxlbWVudCBpbiBlYWNoIHBhaXIgaXMgdGhlIG9mZnNl dAorKyAgIG9mIGEgQ1UgaW4gdGhlIC5kZWJ1Z19pbmZvIHNlY3Rpb24uICBUaGUgc2Vjb25kIGVs ZW1lbnQgaW4gZWFjaAorKyAgIHBhaXIgaXMgdGhlIGxlbmd0aCBvZiB0aGF0IENVLiAgUmVmZXJl bmNlcyB0byBhIENVIGVsc2V3aGVyZSBpbiB0aGUKKysgICBtYXAgYXJlIGRvbmUgdXNpbmcgYSBD VSBpbmRleCwgd2hpY2ggaXMganVzdCB0aGUgMC1iYXNlZCBpbmRleCBpbnRvCisrICAgdGhpcyB0 YWJsZS4KKysKKysgICAzLiBUaGUgYWRkcmVzcyBzZWN0aW9uLiAgVGhlIGFkZHJlc3Mgc2VjdGlv biBjb25zaXN0cyBvZiBhIHNlcXVlbmNlCisrICAgb2YgYWRkcmVzcyBlbnRyaWVzLiAgRWFjaCBh ZGRyZXNzIGVudHJ5IGhhcyB0aHJlZSBlbGVtZW50cy4KKysgICBbMF0gVGhlIGxvdyBhZGRyZXNz LiAgVGhpcyBpcyBhIDY0LWJpdCBsaXR0bGUtZW5kaWFuIHZhbHVlLgorKyAgIFsxXSBUaGUgaGln aCBhZGRyZXNzLiAgVGhpcyBpcyBhIDY0LWJpdCBsaXR0bGUtZW5kaWFuIHZhbHVlLgorKyAgIFsy XSBUaGUgQ1UgaW5kZXguICBUaGlzIGlzIGFuIG9mZnNldF90eXBlIHZhbHVlLgorKworKyAgIDQu IFRoZSBzeW1ib2wgdGFibGUuICBUaGlzIGlzIGEgaGFzaCB0YWJsZS4gIFRoZSBzaXplIG9mIHRo ZSBoYXNoCisrICAgdGFibGUgaXMgYWx3YXlzIGEgcG93ZXIgb2YgMi4gIFRoZSBpbml0aWFsIGhh c2ggYW5kIHRoZSBzdGVwIGFyZQorKyAgIGN1cnJlbnRseSBkZWZpbmVkIGJ5IHRoZSBgZmluZF9z bG90JyBmdW5jdGlvbi4KKysKKysgICBFYWNoIHNsb3QgaW4gdGhlIGhhc2ggdGFibGUgY29uc2lz dHMgb2YgYSBwYWlyIG9mIG9mZnNldF90eXBlCisrICAgdmFsdWVzLiAgVGhlIGZpcnN0IHZhbHVl IGlzIHRoZSBvZmZzZXQgb2YgdGhlIHN5bWJvbCdzIG5hbWUgaW4gdGhlCisrICAgY29uc3RhbnQg cG9vbC4gIFRoZSBzZWNvbmQgdmFsdWUgaXMgdGhlIG9mZnNldCBvZiB0aGUgQ1UgdmVjdG9yIGlu CisrICAgdGhlIGNvbnN0YW50IHBvb2wuCisrCisrICAgSWYgYm90aCB2YWx1ZXMgYXJlIDAsIHRo ZW4gdGhpcyBzbG90IGluIHRoZSBoYXNoIHRhYmxlIGlzIGVtcHR5LgorKyAgIFRoaXMgaXMgb2sg YmVjYXVzZSB3aGlsZSAwIGlzIGEgdmFsaWQgY29uc3RhbnQgcG9vbCBpbmRleCwgaXQKKysgICBj YW5ub3QgYmUgYSB2YWxpZCBpbmRleCBmb3IgYm90aCBhIHN0cmluZyBhbmQgYSBDVSB2ZWN0b3Iu CisrCisrICAgQSBzdHJpbmcgaW4gdGhlIGNvbnN0YW50IHBvb2wgaXMgc3RvcmVkIGFzIGEgXDAt dGVybWluYXRlZCBzdHJpbmcsCisrICAgYXMgeW91J2QgZXhwZWN0LgorKworKyAgIEEgQ1UgdmVj dG9yIGluIHRoZSBjb25zdGFudCBwb29sIGlzIGEgc2VxdWVuY2Ugb2Ygb2Zmc2V0X3R5cGUKKysg ICB2YWx1ZXMuICBUaGUgZmlyc3QgdmFsdWUgaXMgdGhlIG51bWJlciBvZiBDVSBpbmRpY2VzIGlu IHRoZSB2ZWN0b3IuCisrICAgRWFjaCBzdWJzZXF1ZW50IHZhbHVlIGlzIHRoZSBpbmRleCBvZiBh IENVIGluIHRoZSBDVSBsaXN0LiAgVGhpcworKyAgIGVsZW1lbnQgaW4gdGhlIGhhc2ggdGFibGUg aXMgdXNlZCB0byBpbmRpY2F0ZSB3aGljaCBDVXMgZGVmaW5lIHRoZQorKyAgIHN5bWJvbC4KKysK KysgICA1LiBUaGUgY29uc3RhbnQgcG9vbC4gIFRoaXMgaXMgc2ltcGx5IGEgYnVuY2ggb2YgYnl0 ZXMuICBJdCBpcworKyAgIG9yZ2FuaXplZCBzbyB0aGF0IGFsaWdubWVudCBpcyBjb3JyZWN0OiBD VSB2ZWN0b3JzIGFyZSBzdG9yZWQKKysgICBmaXJzdCwgZm9sbG93ZWQgYnkgc3RyaW5ncy4gICov Cisrc3RhdGljIHZvaWQKKytzYXZlX2dkYl9pbmRleF9jb21tYW5kIChjaGFyICphcmcsIGludCBm cm9tX3R0eSkKKyt7CisrICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKKysKKysgIGlmICghYXJn IHx8ICEqYXJnKQorKyAgICBlcnJvciAoXygidXNhZ2U6IG1haW50ZW5hbmNlIHNhdmUtZ2RiLWlu ZGV4IERJUkVDVE9SWSIpKTsKKysKKysgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKKysgIHsKKysg ICAgc3RydWN0IHN0YXQgc3Q7CisrCisrICAgIC8qIElmIHRoZSBvYmpmaWxlIGRvZXMgbm90IGNv cnJlc3BvbmQgdG8gYW4gYWN0dWFsIGZpbGUsIHNraXAgaXQuICAqLworKyAgICBpZiAoc3RhdCAo b2JqZmlsZS0+bmFtZSwgJnN0KSA8IDApCisrICAgICAgY29udGludWU7CisrCisrICAgIGR3YXJm Ml9wZXJfb2JqZmlsZSA9IG9iamZpbGVfZGF0YSAob2JqZmlsZSwgZHdhcmYyX29iamZpbGVfZGF0 YV9rZXkpOworKyAgICBpZiAoZHdhcmYyX3Blcl9vYmpmaWxlKQorKyAgICAgIHsKKysJdm9sYXRp bGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXhjZXB0OworKworKwlUUllfQ0FUQ0ggKGV4Y2VwdCwg UkVUVVJOX01BU0tfRVJST1IpCisrCSAgeworKwkgICAgd3JpdGVfcHN5bXRhYnNfdG9faW5kZXgg KG9iamZpbGUsIGFyZyk7CisrCSAgfQorKwlpZiAoZXhjZXB0LnJlYXNvbiA8IDApCisrCSAgZXhj ZXB0aW9uX2ZwcmludGYgKGdkYl9zdGRlcnIsIGV4Y2VwdCwKKysJCQkgICAgIF8oIkVycm9yIHdo aWxlIHdyaXRpbmcgaW5kZXggZm9yIGAlcyc6ICIpLAorKwkJCSAgICAgb2JqZmlsZS0+bmFtZSk7 CisrICAgICAgfQorKyAgfQorIH0KKyAKKysMCisrCisgaW50IGR3YXJmMl9hbHdheXNfZGlzYXNz ZW1ibGU7CisgCisgc3RhdGljIHZvaWQKK0BAIC0xMjY1Nyw0ICsxNDUwMSw4IEBAIFRoZSB2YWx1 ZSBpcyB0aGUgbWF4aW11bSBkZXB0aCB0byBwcmludC4iKSwKKyAJCQkgICAgTlVMTCwKKyAJCQkg ICAgTlVMTCwKKyAJCQkgICAgJnNldGRlYnVnbGlzdCwgJnNob3dkZWJ1Z2xpc3QpOworKworKyAg YWRkX2NtZCAoImdkYi1pbmRleCIsIGNsYXNzX2ZpbGVzLCBzYXZlX2dkYl9pbmRleF9jb21tYW5k LAorKwkgICBfKCJTYXZlIGEgLmdkYi1pbmRleCBmaWxlIiksCisrCSAgICZzYXZlX2NtZGxpc3Qp OworIH0KK2RpZmYgLS1naXQgYS9nZGIvZWxmcmVhZC5jIGIvZ2RiL2VsZnJlYWQuYworaW5kZXgg OGMwMDkzOC4uYTI1MGM1OCAxMDA2NDQKKy0tLSBhL2dkYi9lbGZyZWFkLmMKKysrKyBiL2dkYi9l bGZyZWFkLmMKK0BAIC0zNyw5ICszNywxMyBAQAorICNpbmNsdWRlICJjb21wbGFpbnRzLmgiCisg I2luY2x1ZGUgImRlbWFuZ2xlLmgiCisgI2luY2x1ZGUgInBzeW1wcml2LmgiCisrI2luY2x1ZGUg ImdkYnR5cGVzLmgiCisgCisgZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfZWxmcmVhZCAodm9pZCk7 CisgCisrLyogRm9yd2FyZCBkZWNsYXJhdGlvbi4gICovCisrc3RhdGljIHN0cnVjdCBzeW1fZm5z IGVsZl9zeW1fZm5zX2dkYl9pbmRleDsKKysKKyAvKiBUaGUgc3RydWN0IGVsZmluZm8gaXMgYXZh aWxhYmxlIG9ubHkgZHVyaW5nIEVMRiBzeW1ib2wgdGFibGUgYW5kCisgICAgcHN5bXRhYiByZWFk aW5nLiAgSXQgaXMgZGVzdHJveWVkIGF0IHRoZSBjb21wbGV0aW9uIG9mIHBzeW10YWItcmVhZGlu Zy4KKyAgICBJdCdzIGxvY2FsIHRvIGVsZl9zeW1maWxlX3JlYWQuICAqLworQEAgLTE4MCw3ICsx ODQsOCBAQCByZWNvcmRfbWluaW1hbF9zeW1ib2wgKGNvbnN0IGNoYXIgKm5hbWUsIGludCBuYW1l X2xlbiwgaW50IGNvcHlfbmFtZSwKKyB7CisgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdl dF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOworIAorLSAgaWYgKG1zX3R5cGUgPT0gbXN0X3RleHQg fHwgbXNfdHlwZSA9PSBtc3RfZmlsZV90ZXh0KQorKyAgaWYgKG1zX3R5cGUgPT0gbXN0X3RleHQg fHwgbXNfdHlwZSA9PSBtc3RfZmlsZV90ZXh0CisrICAgICAgfHwgbXNfdHlwZSA9PSBtc3RfdGV4 dF9nbnVfaWZ1bmMpCisgICAgIGFkZHJlc3MgPSBnZGJhcmNoX3NtYXNoX3RleHRfYWRkcmVzcyAo Z2RiYXJjaCwgYWRkcmVzcyk7CisgCisgICByZXR1cm4gcHJpbV9yZWNvcmRfbWluaW1hbF9zeW1i b2xfZnVsbCAobmFtZSwgbmFtZV9sZW4sIGNvcHlfbmFtZSwgYWRkcmVzcywKK0BAIC0zODgsNyAr MzkzLDEwIEBAIGVsZl9zeW10YWJfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCB0 eXBlLAorIAkgICAgeworIAkgICAgICBpZiAoc3ltLT5mbGFncyAmIChCU0ZfR0xPQkFMIHwgQlNG X1dFQUspKQorIAkJeworLQkJICBtc190eXBlID0gbXN0X3RleHQ7CisrCQkgIGlmIChzeW0tPmZs YWdzICYgQlNGX0dOVV9JTkRJUkVDVF9GVU5DVElPTikKKysJCSAgICBtc190eXBlID0gbXN0X3Rl eHRfZ251X2lmdW5jOworKwkJICBlbHNlCisrCQkgICAgbXNfdHlwZSA9IG1zdF90ZXh0OworIAkJ fQorIAkgICAgICBlbHNlIGlmICgoc3ltLT5uYW1lWzBdID09ICcuJyAmJiBzeW0tPm5hbWVbMV0g PT0gJ0wnKQorIAkJICAgICAgIHx8ICgoc3ltLT5mbGFncyAmIEJTRl9MT0NBTCkKK0BAIC01Njks NiArNTc3LDI1MCBAQCBlbGZfc3ltdGFiX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBp bnQgdHlwZSwKKyAgICAgfQorIH0KKyAKKysvKiBGSVhNRTogRGVsYXkgaXQgdGhyb3VnaCBlbGZf c3ltX2Zucy4gICovCisrCisrc3RhdGljIHZvaWQKKytlbGZfcmVsX3BsdF9yZWFkIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwgYXN5bWJvbCAqKmR5bl9zeW1ib2xfdGFibGUpCisreworKyAgYmZk ICpvYmZkID0gb2JqZmlsZS0+b2JmZDsKKysgIGNvbnN0IHN0cnVjdCBlbGZfYmFja2VuZF9kYXRh ICpiZWQgPSBnZXRfZWxmX2JhY2tlbmRfZGF0YSAob2JmZCk7CisrICBhc2VjdGlvbiAqcGx0LCAq cmVscGx0LCAqZ290X3BsdDsKKysgIHVuc2lnbmVkIHU7CisrICBpbnQgcGx0X2VsZl9pZHg7Cisr ICBiZmRfc2l6ZV90eXBlIHJlbG9jX2NvdW50LCByZWxvYzsKKysgIGNoYXIgKnN0cmluZ19idWZm ZXIgPSBOVUxMOworKyAgc2l6ZV90IHN0cmluZ19idWZmZXJfc2l6ZSA9IDA7CisrICBzdHJ1Y3Qg Y2xlYW51cCAqYmFja190bzsKKysgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gb2JqZmlsZS0+ Z2RiYXJjaDsKKysgIHN0cnVjdCB0eXBlICpwdHJfdHlwZSA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJj aCktPmJ1aWx0aW5fZGF0YV9wdHI7CisrICBzaXplX3QgcHRyX3NpemUgPSBUWVBFX0xFTkdUSCAo cHRyX3R5cGUpOworKworKyAgaWYgKG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFj a2xpbmspCisrICAgIHJldHVybjsKKysKKysgIHBsdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1l IChvYmZkLCAiLnBsdCIpOworKyAgaWYgKHBsdCA9PSBOVUxMKQorKyAgICByZXR1cm47CisrICBw bHRfZWxmX2lkeCA9IGVsZl9zZWN0aW9uX2RhdGEgKHBsdCktPnRoaXNfaWR4OworKworKyAgZ290 X3BsdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChvYmZkLCAiLmdvdC5wbHQiKTsKKysgIGlm IChnb3RfcGx0ID09IE5VTEwpCisrICAgIHJldHVybjsKKysKKysgIC8qIFRoaXMgc2VhcmNoIGFs Z29yaXRobSBpcyBmcm9tIF9iZmRfZWxmX2Nhbm9uaWNhbGl6ZV9keW5hbWljX3JlbG9jLiAgKi8K KysgIGZvciAocmVscGx0ID0gb2JmZC0+c2VjdGlvbnM7IHJlbHBsdCAhPSBOVUxMOyByZWxwbHQg PSByZWxwbHQtPm5leHQpCisrICAgIGlmIChlbGZfc2VjdGlvbl9kYXRhIChyZWxwbHQpLT50aGlz X2hkci5zaF9pbmZvID09IHBsdF9lbGZfaWR4CisrCSYmIChlbGZfc2VjdGlvbl9kYXRhIChyZWxw bHQpLT50aGlzX2hkci5zaF90eXBlID09IFNIVF9SRUwKKysJICAgIHx8IGVsZl9zZWN0aW9uX2Rh dGEgKHJlbHBsdCktPnRoaXNfaGRyLnNoX3R5cGUgPT0gU0hUX1JFTEEpKQorKyAgICAgIGJyZWFr OworKyAgaWYgKHJlbHBsdCA9PSBOVUxMKQorKyAgICByZXR1cm47CisrCisrICBpZiAoISBiZWQt PnMtPnNsdXJwX3JlbG9jX3RhYmxlIChvYmZkLCByZWxwbHQsIGR5bl9zeW1ib2xfdGFibGUsIFRS VUUpKQorKyAgICByZXR1cm47CisrCisrICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChmcmVlX2N1 cnJlbnRfY29udGVudHMsICZzdHJpbmdfYnVmZmVyKTsKKysKKysgIHJlbG9jX2NvdW50ID0gcmVs cGx0LT5zaXplIC8gZWxmX3NlY3Rpb25fZGF0YSAocmVscGx0KS0+dGhpc19oZHIuc2hfZW50c2l6 ZTsKKysgIGZvciAocmVsb2MgPSAwOyByZWxvYyA8IHJlbG9jX2NvdW50OyByZWxvYysrKQorKyAg ICB7CisrICAgICAgY29uc3QgY2hhciAqbmFtZSwgKm5hbWVfZ290X3BsdDsKKysgICAgICBzdHJ1 Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW07CisrICAgICAgQ09SRV9BRERSIGFkZHJlc3M7CisrICAg ICAgY29uc3QgY2hhciAqc3VmZml4ID0gIkBnb3QucGx0IjsKKysgICAgICBzaXplX3Qgc3VmZml4 X2xlbiA9IHN0cmxlbiAoc3VmZml4KTsKKysgICAgICBzaXplX3QgbmFtZV9sZW47CisrCisrICAg ICAgbmFtZSA9IGJmZF9hc3ltYm9sX25hbWUgKCpyZWxwbHQtPnJlbG9jYXRpb25bcmVsb2NdLnN5 bV9wdHJfcHRyKTsKKysgICAgICBuYW1lX2xlbiA9IHN0cmxlbiAobmFtZSk7CisrICAgICAgYWRk cmVzcyA9IHJlbHBsdC0+cmVsb2NhdGlvbltyZWxvY10uYWRkcmVzczsKKysKKysgICAgICAvKiBE b2VzIHRoZSBwb2ludGVyIHJlc2lkZSBpbiB0aGUgLmdvdC5wbHQgc2VjdGlvbj8gICovCisrICAg ICAgaWYgKCEoYmZkX2dldF9zZWN0aW9uX3ZtYSAob2JmZCwgZ290X3BsdCkgPD0gYWRkcmVzcwor KyAgICAgICAgICAgICYmIGFkZHJlc3MgPCBiZmRfZ2V0X3NlY3Rpb25fdm1hIChvYmZkLCBnb3Rf cGx0KQorKwkJCSArIGJmZF9nZXRfc2VjdGlvbl9zaXplIChnb3RfcGx0KSkpCisrCWNvbnRpbnVl OworKworKyAgICAgIC8qIFdlIGNhbm5vdCBjaGVjayBpZiBOQU1FIGlzIGEgcmVmZXJlbmNlIHRv IG1zdF90ZXh0X2dudV9pZnVuYyBhcyBpbgorKwkgT0JKRklMRSB0aGUgc3ltYm9sIGlzIHVuZGVm aW5lZCBhbmQgdGhlIG9iamZpbGUgaGF2aW5nIE5BTUUgZGVmaW5lZAorKwkgbWF5IG5vdCB5ZXQg aGF2ZSBiZWVuIGxvYWRlZC4gICovCisrCisrICAgICAgaWYgKHN0cmluZ19idWZmZXJfc2l6ZSA8 IG5hbWVfbGVuICsgc3VmZml4X2xlbikKKysJeworKwkgIHN0cmluZ19idWZmZXJfc2l6ZSA9IDIg KiAobmFtZV9sZW4gKyBzdWZmaXhfbGVuKTsKKysJICBzdHJpbmdfYnVmZmVyID0geHJlYWxsb2Mg KHN0cmluZ19idWZmZXIsIHN0cmluZ19idWZmZXJfc2l6ZSk7CisrCX0KKysgICAgICBtZW1jcHkg KHN0cmluZ19idWZmZXIsIG5hbWUsIG5hbWVfbGVuKTsKKysgICAgICBtZW1jcHkgKCZzdHJpbmdf YnVmZmVyW25hbWVfbGVuXSwgc3VmZml4LCBzdWZmaXhfbGVuKTsKKysKKysgICAgICBtc3ltID0g cmVjb3JkX21pbmltYWxfc3ltYm9sIChzdHJpbmdfYnVmZmVyLCBuYW1lX2xlbiArIHN1ZmZpeF9s ZW4sIDEsCisrCQkJCSAgICBhZGRyZXNzLCBtc3Rfc2xvdF9nb3RfcGx0LCBnb3RfcGx0LAorKwkJ CQkgICAgb2JqZmlsZSk7CisrICAgICAgaWYgKG1zeW0pCisrCU1TWU1CT0xfU0laRSAobXN5bSkg PSBwdHJfc2l6ZTsKKysgICAgfQorKworKyAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworK30KKysK KysvKiBGdW5jdGlvbiBkb2VzIG5vdCBjaGVjayBmb3IgcG9zc2libHkgY3JlYXRlZCBkdXBsaWNp dGllcyBpbiB0aGUgY2FjaGUuCisrICAgQ2hlY2sgaXQgYnkgcmVzb2x2ZV9nbnVfaWZ1bmNfYnlf Y2FjaGUgZmlyc3QuICAqLworKworK3N0YXRpYyBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKgorK2du dV9pZnVuY19yZWNvcmRfY2FjaGVfdW5jaGVja2VkIChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1l LAorKwkJCQkgIENPUkVfQUREUiBmdW5jdGlvbl9hZGRyZXNzKQorK3sKKysgIHN0cnVjdCBtaW5p bWFsX3N5bWJvbCAqbXN5bSwgKm1zeW1fbmV3OworKyAgYXNlY3Rpb24gKnNlY3Q7CisrICBzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKKysgIGNoYXIgKmZ1bmN0aW9uX25hbWVfZ251X2lmdW5jX3Rn dDsKKysKKysgIG1zeW0gPSBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKGZ1bmN0aW9uX2Fk ZHJlc3MpOworKyAgaWYgKG1zeW0gPT0gTlVMTCkKKysgICAgcmV0dXJuIE5VTEw7CisrICBpZiAo U1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pICE9IGZ1bmN0aW9uX2FkZHJlc3MpCisrICAgIHJl dHVybiBOVUxMOworKyAgLyogbWluaW1hbCBzeW1ib2xzIGhhdmUgYWx3YXlzIFNZTUJPTF9PQkpf U0VDVElPTiBub24tTlVMTC4gICovCisrICBzZWN0ID0gU1lNQk9MX09CSl9TRUNUSU9OIChtc3lt KS0+dGhlX2JmZF9zZWN0aW9uOworKyAgb2JqZmlsZSA9IFNZTUJPTF9PQkpfU0VDVElPTiAobXN5 bSktPm9iamZpbGU7CisrCisrICAvKiBJZiAucGx0IGp1bXBzIGJhY2sgdG8gLnBsdCB0aGUgc3lt Ym9sIGlzIHN0aWxsIGRlZmVycmVkIGZvciBsYXRlcgorKyAgICAgcmVzb2x1dGlvbiBhbmQgaXQg aGFzIG5vIHVzZSBmb3IgR0RCLiAgQmVzaWRlcyAiLnRleHQiIHRoaXMgc3ltYm9sIGNhbgorKyAg ICAgcmVzaWRlIGFsc28gaW4gIi5vcGQiIGZvciBwcGM2NCBmdW5jdGlvbiBkZXNjcmlwdG9yLiAg Ki8KKysgIGlmIChzdHJjbXAgKGJmZF9nZXRfc2VjdGlvbl9uYW1lIChvYmpmaWxlLT5vYmZkLCBz ZWN0KSwgIi5wbHQiKSA9PSAwKQorKyAgICByZXR1cm4gTlVMTDsKKysKKysgIGZ1bmN0aW9uX25h bWVfZ251X2lmdW5jX3RndCA9IGFsbG9jYSAoc3RybGVuIChmdW5jdGlvbl9uYW1lKQorKwkJCQkJ KyBzdHJsZW4gKCJAZ251LWlmdW5jLXRndCIpICsgMSk7CisrICBzcHJpbnRmIChmdW5jdGlvbl9u YW1lX2dudV9pZnVuY190Z3QsICIlc0BnbnUtaWZ1bmMtdGd0IiwgZnVuY3Rpb25fbmFtZSk7Cisr CisrICAvKiBDcmVhdGUgbmV3IGFsaWFzICJAZ251LWlmdW5jLXRndCIgZm9yIE1TWU0uICAqLwor KyAgbXN5bV9uZXcgPSByZWNvcmRfbWluaW1hbF9zeW1ib2wgKGZ1bmN0aW9uX25hbWVfZ251X2lm dW5jX3RndCwKKysJCQkJICAgIHN0cmxlbiAoZnVuY3Rpb25fbmFtZV9nbnVfaWZ1bmNfdGd0KSwg MSwKKysJCQkJICAgIFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3ltKSwKKysJCQkJICAgIE1TWU1C T0xfVFlQRSAobXN5bSksIHNlY3QsIG9iamZpbGUpOworKyAgLyogU2hvdWxkIG5vdCBoYXBwZW4u ICAqLworKyAgaWYgKG1zeW1fbmV3ID09IE5VTEwpCisrICAgIHJldHVybiAwOworKworKyAgLyog b2JqZmlsZS0+bXN5bWJvbHMgYXJyYXkgaXMgYWxyZWFkeSBhbGxvY2F0ZWQgb24gb2JzdGFjayBh bmQgaXQgY2Fubm90IGJlCisrICAgICBlYXNpbHkgZXh0ZW5kZWQuICBUaGVyZWZvcmUgPHRhYj4t Y29tcGxldGlvbiBvbiBzeW1ib2wgbmFtZXMgd2lsbCBuZXZlcgorKyAgICAgc2hvdyB0aGUgQGdu dS1pZnVuYy10Z3Qgc3ltYm9sLiAgTGluayBpdCBhdCBsZWFzdCB0byB0aGUgaGFzaCB0YWJsZSBz bworKyAgICAgdGhhdCByZXNvbHZlX2dudV9pZnVuY19ieV9jYWNoZSBjYW4gZmluZCBpdC4gICov CisrICBhZGRfbWluc3ltX3RvX2hhc2hfdGFibGUgKG1zeW1fbmV3LCBvYmpmaWxlLT5tc3ltYm9s X2hhc2gpOworKyAgICAKKysgIE1TWU1CT0xfU0laRSAobXN5bV9uZXcpID0gTVNZTUJPTF9TSVpF IChtc3ltKTsKKysgIHJldHVybiBtc3ltX25ldzsKKyt9CisrCisrLyogQ2hlY2sgZmlyc3QgdGhl IGNhY2hlIGlmIGl0IC0gdW5saWtlbHkgLSBoYXMgbm90IGJlZW4gcG9wdWxhdGVkIHNpbmNlCisr ICAgYnBfZ251X2lmdW5jX3Jlc29sdmVyIGhhcyBiZWVuIGNyZWF0ZWQuICBnbnVfaWZ1bmNfcmVj b3JkX2NhY2hlX3VuY2hlY2tlZAorKyAgIGNvdWxkIGNyZWF0ZSBhIGR1cGxpY2F0ZSBzeW1ib2wg b3RoZXJ3aXNlLiAgKi8KKysKKyt2b2lkCisrZ251X2lmdW5jX3JlY29yZF9jYWNoZSAoc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2gsIGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsCisrCQkJQ09SRV9B RERSIGZ1bmN0aW9uX2FkZHJlc3MpCisreworKyAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3lt OworKworKyAgbXN5bSA9IHJlc29sdmVfZ251X2lmdW5jX2J5X2NhY2hlIChmdW5jdGlvbl9uYW1l KTsKKysgIGlmIChtc3ltID09IE5VTEwpCisrICAgIGdudV9pZnVuY19yZWNvcmRfY2FjaGVfdW5j aGVja2VkIChmdW5jdGlvbl9uYW1lLCBmdW5jdGlvbl9hZGRyZXNzKTsKKysgIGVsc2UgaWYgKFNZ TUJPTF9WQUxVRV9BRERSRVNTIChtc3ltKSAhPSBmdW5jdGlvbl9hZGRyZXNzKQorKyAgICB7Cisr ICAgICAgLyogVGhpcyBjYXNlIGluZGljYXRlcyBidWdneSBpbmZlcmlvciBwcm9ncmFtLiAgR0RC IHdvdWxkIG5lZWQgdG8gdXBkYXRlCisrCSBpdHMgTVNZTSBjYWNoZSBzeW1ib2wgZm9yIGZ1bmN0 aW9uX2FkZHJlc3MuICBBbnl3YXkgRlVOQ1RJT05fTkFNRSBpcworKwkgbmV2ZXIgbm9ybWFsbHkg Zm91bmQgaW4gdGhlIGNhc2UgYXMgaW4gc3VjaCBjYXNlIG5vCisrCSBicF9nbnVfaWZ1bmNfcmVz b2x2ZXIgd291bGQgYmUgY3JlYXRlZCBpbiB0aGUgZmlyc3QgcGxhY2UuICAqLworKworKyAgICAg IHdhcm5pbmcgKF8oImdudS1pbmRpcmVjdC1mdW5jdGlvbiBcIiVzXCIgaGFzIGNoYW5nZWQgaXRz IHJlc29sdmVkICIKKysJCSAiZnVuY3Rpb25fYWRkcmVzcyBmcm9tICVzIHRvICVzOyBHREIgaXMg dXNpbmcgdGhlIGZvcm1lciBvbmUiKSwKKysJICAgICAgIGZ1bmN0aW9uX25hbWUsIHBhZGRyZXNz IChnZGJhcmNoLCBTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bSkpLAorKwkgICAgICAgcGFkZHJl c3MgKGdkYmFyY2gsIGZ1bmN0aW9uX2FkZHJlc3MpKTsKKysgICAgfQorK30KKysKKytzdGF0aWMg c3RydWN0IG1pbmltYWxfc3ltYm9sICoKKytyZXNvbHZlX2dudV9pZnVuY19ieV9nb3QgKGNvbnN0 IGNoYXIgKmZ1bmN0aW9uX25hbWUpCisreworKyAgY2hhciAqZnVuY3Rpb25fbmFtZV9nb3RfcGx0 OworKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7CisrCisrICBmdW5jdGlvbl9uYW1lX2dvdF9w bHQgPSBhbGxvY2EgKHN0cmxlbiAoZnVuY3Rpb25fbmFtZSkgKyBzdHJsZW4gKCJAZ290LnBsdCIp CisrCQkJCSAgKyAxKTsKKysgIHNwcmludGYgKGZ1bmN0aW9uX25hbWVfZ290X3BsdCwgIiVzQGdv dC5wbHQiLCBmdW5jdGlvbl9uYW1lKTsKKysKKysgIEFMTF9QU1BBQ0VfT0JKRklMRVMgKGN1cnJl bnRfcHJvZ3JhbV9zcGFjZSwgb2JqZmlsZSkKKysgICAgeworKyAgICAgIGJmZCAqb2JmZCA9IG9i amZpbGUtPm9iZmQ7CisrICAgICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBvYmpmaWxlLT5n ZGJhcmNoOworKyAgICAgIHN0cnVjdCB0eXBlICpwdHJfdHlwZSA9IGJ1aWx0aW5fdHlwZSAoZ2Ri YXJjaCktPmJ1aWx0aW5fZGF0YV9wdHI7CisrICAgICAgc2l6ZV90IHB0cl9zaXplID0gVFlQRV9M RU5HVEggKHB0cl90eXBlKTsKKysgICAgICBDT1JFX0FERFIgcG9pbnRlcl9hZGRyZXNzLCBmdW5j dGlvbl9hZGRyZXNzOworKyAgICAgIGFzZWN0aW9uICpwbHQ7CisrICAgICAgZ2RiX2J5dGUgKmJ1 ZiA9IGFsbG9jYSAocHRyX3NpemUpOworKyAgICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5 bTsKKysKKysgICAgICBtc3ltID0gbG9va3VwX21pbmltYWxfc3ltYm9sIChmdW5jdGlvbl9uYW1l X2dvdF9wbHQsIE5VTEwsIG9iamZpbGUpOworKyAgICAgIGlmIChtc3ltID09IE5VTEwpCisrCWNv bnRpbnVlOworKyAgICAgIGlmIChNU1lNQk9MX1RZUEUgKG1zeW0pICE9IG1zdF9zbG90X2dvdF9w bHQpCisrCWNvbnRpbnVlOworKyAgICAgIHBvaW50ZXJfYWRkcmVzcyA9IFNZTUJPTF9WQUxVRV9B RERSRVNTIChtc3ltKTsKKysKKysgICAgICBwbHQgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAo b2JmZCwgIi5wbHQiKTsKKysgICAgICBpZiAocGx0ID09IE5VTEwpCisrCWNvbnRpbnVlOworKwor KyAgICAgIGlmIChNU1lNQk9MX1NJWkUgKG1zeW0pICE9IHB0cl9zaXplKQorKwljb250aW51ZTsK KysgICAgICBpZiAodGFyZ2V0X3JlYWRfbWVtb3J5IChwb2ludGVyX2FkZHJlc3MsIGJ1ZiwgcHRy X3NpemUpICE9IDApCisrCWNvbnRpbnVlOworKyAgICAgIGZ1bmN0aW9uX2FkZHJlc3MgPSBleHRy YWN0X3R5cGVkX2FkZHJlc3MgKGJ1ZiwgcHRyX3R5cGUpOworKworKyAgICAgIG1zeW0gPSBnbnVf aWZ1bmNfcmVjb3JkX2NhY2hlX3VuY2hlY2tlZCAoZnVuY3Rpb25fbmFtZSwgZnVuY3Rpb25fYWRk cmVzcyk7CisrICAgICAgaWYgKG1zeW0gPT0gTlVMTCkKKysJY29udGludWU7CisrICAgICAgcmV0 dXJuIG1zeW07CisrICAgIH0KKysKKysgIHJldHVybiBOVUxMOworK30KKysKKytzdHJ1Y3QgbWlu aW1hbF9zeW1ib2wgKgorK3Jlc29sdmVfZ251X2lmdW5jX2J5X2NhY2hlIChjb25zdCBjaGFyICpm dW5jdGlvbl9uYW1lKQorK3sKKysgIGNoYXIgKmZ1bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndDsK KysKKysgIGZ1bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndCA9IGFsbG9jYSAoc3RybGVuIChmdW5j dGlvbl9uYW1lKQorKwkJCQkJKyBzdHJsZW4gKCJAZ251LWlmdW5jLXRndCIpICsgMSk7CisrICBz cHJpbnRmIChmdW5jdGlvbl9uYW1lX2dudV9pZnVuY190Z3QsICIlc0BnbnUtaWZ1bmMtdGd0Iiwg ZnVuY3Rpb25fbmFtZSk7CisrCisrICByZXR1cm4gbG9va3VwX21pbmltYWxfc3ltYm9sIChmdW5j dGlvbl9uYW1lX2dudV9pZnVuY190Z3QsIE5VTEwsIE5VTEwpOworK30KKysKKytpbnQKKytyZXNv bHZlX2dudV9pZnVuYyAoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgQ09SRV9BRERSICpmdW5j dGlvbl9hZGRyZXNzcCkKKyt7CisrICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW07CisrCisr ICBtc3ltID0gcmVzb2x2ZV9nbnVfaWZ1bmNfYnlfY2FjaGUgKGZ1bmN0aW9uX25hbWUpOworKyAg aWYgKG1zeW0gIT0gTlVMTCkKKysgICAgeworKyAgICAgICpmdW5jdGlvbl9hZGRyZXNzcCA9IFNZ TUJPTF9WQUxVRV9BRERSRVNTIChtc3ltKTsKKysgICAgICByZXR1cm4gMTsKKysgICAgfQorKwor KyAgbXN5bSA9IHJlc29sdmVfZ251X2lmdW5jX2J5X2dvdCAoZnVuY3Rpb25fbmFtZSk7CisrICBp ZiAobXN5bSAhPSBOVUxMKQorKyAgICB7CisrICAgICAgKmZ1bmN0aW9uX2FkZHJlc3NwID0gU1lN Qk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pOworKyAgICAgIHJldHVybiAxOworKyAgICB9CisrCisr ICByZXR1cm4gMDsKKyt9CisrCisgc3RydWN0IGJ1aWxkX2lkCisgICB7CisgICAgIHNpemVfdCBz aXplOworQEAgLTc5Nyw2ICsxMDQ5LDggQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIGludCBzeW1maWxlX2ZsYWdzKQorIAkgICAgICAgYmZkX2Vycm1zZyAoYmZk X2dldF9lcnJvciAoKSkpOworIAorICAgICAgIGVsZl9zeW10YWJfcmVhZCAob2JqZmlsZSwgU1Rf RFlOQU1JQywgZHluc3ltY291bnQsIGR5bl9zeW1ib2xfdGFibGUsIDApOworKworKyAgICAgIGVs Zl9yZWxfcGx0X3JlYWQgKG9iamZpbGUsIGR5bl9zeW1ib2xfdGFibGUpOworICAgICB9CisgCisg ICAvKiBBZGQgc3ludGhldGljIHN5bWJvbHMgLSBmb3IgaW5zdGFuY2UsIG5hbWVzIGZvciBhbnkg UExUIGVudHJpZXMuICAqLworQEAgLTg2OSwxMSArMTEyMyw5IEBAIGVsZl9zeW1maWxlX3JlYWQg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgc3ltZmlsZV9mbGFncykKKyAJCQkJc3RyX3Nl Y3QtPmZpbGVwb3MsCisgCQkJCWJmZF9zZWN0aW9uX3NpemUgKGFiZmQsIHN0cl9zZWN0KSk7Cisg ICAgIH0KKy0gIGlmIChkd2FyZjJfaGFzX2luZm8gKG9iamZpbGUpKQorLSAgICB7CistICAgICAg LyogRFdBUkYgMiBzZWN0aW9ucyAqLworLSAgICAgIGR3YXJmMl9idWlsZF9wc3ltdGFicyAob2Jq ZmlsZSk7CistICAgIH0KKysKKysgIGlmIChkd2FyZjJfaGFzX2luZm8gKG9iamZpbGUpICYmIGR3 YXJmMl9pbml0aWFsaXplX29iamZpbGUgKG9iamZpbGUpKQorKyAgICBvYmpmaWxlLT5zZiA9ICZl bGZfc3ltX2Zuc19nZGJfaW5kZXg7CisgCisgICAvKiBJZiB0aGUgZmlsZSBoYXMgaXRzIG93biBz eW1ib2wgdGFibGVzIGl0IGhhcyBubyBzZXBhcmF0ZSBkZWJ1ZyBpbmZvLgorICAgICAgYC5keW5z eW0nL2Auc3ltdGFiJyBnbyB0byBNU1lNQk9MUywgYC5kZWJ1Z19pbmZvJyBnb2VzIHRvIFNZTVRB QlMvUFNZTVRBQlMuCitAQCAtMTA0OSw2ICsxMzAxLDI0IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltX2Zu cyBlbGZfc3ltX2ZucyA9CisgICBOVUxMCQkJCS8qIG5leHQ6IHBvaW50ZXIgdG8gbmV4dCBzdHJ1 Y3Qgc3ltX2ZucyAqLworIH07CisgCisrLyogVGhlIHNhbWUgYXMgZWxmX3N5bV9mbnMsIGJ1dCBu b3QgcmVnaXN0ZXJlZCBhbmQgdXNlcyB0aGUKKysgICBEV0FSRi1zcGVjaWZpYyBHTlUgaW5kZXgg cmF0aGVyIHRoYW4gcHN5bXRhYi4gICovCisrc3RhdGljIHN0cnVjdCBzeW1fZm5zIGVsZl9zeW1f Zm5zX2dkYl9pbmRleCA9CisreworKyAgYmZkX3RhcmdldF9lbGZfZmxhdm91ciwKKysgIGVsZl9u ZXdfaW5pdCwJCQkvKiBzeW1fbmV3X2luaXQ6IGluaXQgYW55dGhpbmcgZ2JsIHRvIGVudGlyZSBz eW1hYiAqLworKyAgZWxmX3N5bWZpbGVfaW5pdCwJCS8qIHN5bV9pbml0OiByZWFkIGluaXRpYWwg aW5mbywgc2V0dXAgZm9yIHN5bV9yZWQoKSAqLworKyAgZWxmX3N5bWZpbGVfcmVhZCwJCS8qIHN5 bV9yZWFkOiByZWFkIGEgc3ltYm9sIGZpbGUgaW50byBzeW10YWIgKi8KKysgIGVsZl9zeW1maWxl X2ZpbmlzaCwJCS8qIHN5bV9maW5pc2g6IGZpbmlzaGVkIHdpdGggZmlsZSwgY2xlYW51cCAqLwor KyAgZGVmYXVsdF9zeW1maWxlX29mZnNldHMsCS8qIHN5bV9vZmZzZXRzOiAgVHJhbnNsYXRlIGV4 dC4gdG8gaW50LiByZWxvY2F0aW4gKi8KKysgIGVsZl9zeW1maWxlX3NlZ21lbnRzLAkJLyogc3lt X3NlZ21lbnRzOiBHZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBmcm9tCisrCQkJCSAgIGEgZmlsZS4g ICovCisrICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzeW1fcmVhZF9saW5ldGFi bGUgKi8KKysgIGRlZmF1bHRfc3ltZmlsZV9yZWxvY2F0ZSwJLyogc3ltX3JlbG9jYXRlOiBSZWxv Y2F0ZSBhIGRlYnVnIHNlY3Rpb24uICAqLworKyAgJmR3YXJmMl9nZGJfaW5kZXhfZnVuY3Rpb25z LAorKyAgTlVMTAkJCQkvKiBuZXh0OiBwb2ludGVyIHRvIG5leHQgc3RydWN0IHN5bV9mbnMgKi8K Kyt9OworKworIHZvaWQKKyBfaW5pdGlhbGl6ZV9lbGZyZWFkICh2b2lkKQorIHsKK2RpZmYgLS1n aXQgYS9nZGIvZXZhbC5jIGIvZ2RiL2V2YWwuYworaW5kZXggZmYxN2MzNC4uN2I5ZTg3MSAxMDA2 NDQKKy0tLSBhL2dkYi9ldmFsLmMKKysrKyBiL2dkYi9ldmFsLmMKK0BAIC00NCw2ICs0NCw3IEBA CisgI2luY2x1ZGUgIm9iamZpbGVzLmgiCisgI2luY2x1ZGUgInB5dGhvbi9weXRob24uaCIKKyAj aW5jbHVkZSAid3JhcHBlci5oIgorKyNpbmNsdWRlICJkd2FyZjJsb2MuaCIKKyAKKyAjaW5jbHVk ZSAiZ2RiX2Fzc2VydC5oIgorIAorQEAgLTc4OCw2ICs3ODksNyBAQCBldmFsdWF0ZV9zdWJleHBf c3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKKyAgIGludCBzYXZlX3BvczE7Cisg ICBzdHJ1Y3Qgc3ltYm9sICpmdW5jdGlvbiA9IE5VTEw7CisgICBjaGFyICpmdW5jdGlvbl9uYW1l ID0gTlVMTDsKKysgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47CisgCisgICBwYyA9ICgqcG9z KSsrOworICAgb3AgPSBleHAtPmVsdHNbcGNdLm9wY29kZTsKK0BAIC0xNzcyLDYgKzE3NzQsOCBA QCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKKyAJ ICAgICAgcmV0dXJuIHZhbHVlX3plcm8gKGJ1aWx0aW5fdHlwZSAoZXhwLT5nZGJhcmNoKS0+YnVp bHRpbl9pbnQsCisgCQkJCSBub3RfbHZhbCk7CisgCSAgICB9CisrCSAgZWxzZSBpZiAoVFlQRV9H TlVfSUZVTkMgKGZ0eXBlKSkKKysJICAgIHJldHVybiBhbGxvY2F0ZV92YWx1ZSAoVFlQRV9UQVJH RVRfVFlQRSAoVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpKSk7CisgCSAgZWxzZSBpZiAoVFlQRV9U QVJHRVRfVFlQRSAoZnR5cGUpKQorIAkgICAgcmV0dXJuIGFsbG9jYXRlX3ZhbHVlIChUWVBFX1RB UkdFVF9UWVBFIChmdHlwZSkpOworIAkgIGVsc2UKK0BAIC0xNzk4LDYgKzE4MDIsOCBAQCBldmFs dWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKKyAKKyAgICAg ICAvKiBGaXJzdCBkZXRlcm1pbmUgdGhlIHR5cGUgY29kZSB3ZSBhcmUgZGVhbGluZyB3aXRoLiAg Ki8KKyAgICAgICBhcmcxID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBu b3NpZGUpOworKyAgICAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCAw KTsKKysgICAgICBvYmplY3RfYWRkcmVzc19zZXQgKHZhbHVlX3Jhd19hZGRyZXNzIChhcmcxKSk7 CisgICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZzEpKTsKKyAgICAg ICBjb2RlID0gVFlQRV9DT0RFICh0eXBlKTsKKyAKK0BAIC0xODE4LDYgKzE4MjQsNyBAQCBldmFs dWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKKyAJICAgICAg Y29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CisgCSAgICB9CisgCX0gCisrICAgICAgZG9fY2xlYW51 cHMgKG9sZF9jaGFpbik7CisgCisgICAgICAgc3dpdGNoIChjb2RlKQorIAl7CitAQCAtMjI1NCwx MyArMjI2MSwxOSBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBl Y3RfdHlwZSwKKyAgICAgICB7CisgCWludCBzdWJzY3JpcHRfYXJyYXlbTUFYX0ZPUlRSQU5fRElN U107CisgCWludCBhcnJheV9zaXplX2FycmF5W01BWF9GT1JUUkFOX0RJTVNdOworKwlpbnQgYnl0 ZV9zdHJpZGVfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107CisgCWludCBuZGltZW5zaW9ucyA9IDEs IGk7CisgCXN0cnVjdCB0eXBlICp0bXBfdHlwZTsKKyAJaW50IG9mZnNldF9pdGVtOwkvKiBUaGUg YXJyYXkgb2Zmc2V0IHdoZXJlIHRoZSBpdGVtIGxpdmVzICovCisrCUNPUkVfQUREUiBvZmZzZXRf Ynl0ZTsJLyogYnl0ZV9zdHJpZGUgYmFzZWQgb2Zmc2V0ICAqLworKwl1bnNpZ25lZCBlbGVtZW50 X3NpemU7CisgCisgCWlmIChuYXJncyA+IE1BWF9GT1JUUkFOX0RJTVMpCisgCSAgZXJyb3IgKF8o IlRvbyBtYW55IHN1YnNjcmlwdHMgZm9yIEY3NyAoJWQgTWF4KSIpLCBNQVhfRk9SVFJBTl9ESU1T KTsKKyAKKysJb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOworKwlv YmplY3RfYWRkcmVzc19zZXQgKHZhbHVlX3Jhd19hZGRyZXNzIChhcmcxKSk7CisrCisgCXRtcF90 eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOworIAluZGltZW5zaW9ucyA9 IGNhbGNfZjc3X2FycmF5X2RpbXMgKHR5cGUpOworIAorQEAgLTIyOTAsNiArMjMwMyw5IEBAIGV2 YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorIAkgICAg dXBwZXIgPSBmNzdfZ2V0X3VwcGVyYm91bmQgKHRtcF90eXBlKTsKKyAJICAgIGxvd2VyID0gZjc3 X2dldF9sb3dlcmJvdW5kICh0bXBfdHlwZSk7CisgCisrCSAgICBieXRlX3N0cmlkZV9hcnJheVtu YXJncyAtIGkgLSAxXSA9CisrCQkJCQlUWVBFX0FSUkFZX0JZVEVfU1RSSURFX1ZBTFVFICh0bXBf dHlwZSk7CisrCisgCSAgICBhcnJheV9zaXplX2FycmF5W25hcmdzIC0gaSAtIDFdID0gdXBwZXIg LSBsb3dlciArIDE7CisgCisgCSAgICAvKiBaZXJvLW5vcm1hbGl6ZSBzdWJzY3JpcHRzIHNvIHRo YXQgb2Zmc2V0dGluZyB3aWxsIHdvcmsuICovCitAQCAtMjMwOCwxMyArMjMyNCwyNSBAQCBldmFs dWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKKyAJICAgICAg dG1wX3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0bXBfdHlwZSkpOwor IAkgIH0KKyAKKysJLyogS2VwdCBmb3IgdGhlIGY3N19nZXRfdXBwZXJib3VuZCAvIGY3N19nZXRf bG93ZXJib3VuZCBjYWxscyBhYm92ZS4gICovCisrCWRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwor KworIAkvKiBOb3cgbGV0IHVzIGNhbGN1bGF0ZSB0aGUgb2Zmc2V0IGZvciB0aGlzIGl0ZW0gKi8K KyAKKy0Jb2Zmc2V0X2l0ZW0gPSBzdWJzY3JpcHRfYXJyYXlbbmRpbWVuc2lvbnMgLSAxXTsKKysJ b2Zmc2V0X2l0ZW0gPSAwOworKwlvZmZzZXRfYnl0ZSA9IDA7CisrCisrCWZvciAoaSA9IG5kaW1l bnNpb25zIC0gMTsgaSA+PSAwOyAtLWkpCisrCSAgeworKwkgICAgb2Zmc2V0X2l0ZW0gKj0gYXJy YXlfc2l6ZV9hcnJheVtpXTsKKysJICAgIGlmIChieXRlX3N0cmlkZV9hcnJheVtpXSA9PSAwKQor KwkgICAgICBvZmZzZXRfaXRlbSArPSBzdWJzY3JpcHRfYXJyYXlbaV07CisrCSAgICBlbHNlCisr CSAgICAgIG9mZnNldF9ieXRlICs9IHN1YnNjcmlwdF9hcnJheVtpXSAqIGJ5dGVfc3RyaWRlX2Fy cmF5W2ldOworKwkgIH0KKyAKKy0JZm9yIChpID0gbmRpbWVuc2lvbnMgLSAxOyBpID4gMDsgLS1p KQorLQkgIG9mZnNldF9pdGVtID0KKy0JICAgIGFycmF5X3NpemVfYXJyYXlbaSAtIDFdICogb2Zm c2V0X2l0ZW0gKyBzdWJzY3JpcHRfYXJyYXlbaSAtIDFdOworKwllbGVtZW50X3NpemUgPSBUWVBF X0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAodG1wX3R5cGUpKTsKKysJb2Zmc2V0X2J5dGUgKz0g b2Zmc2V0X2l0ZW0gKiBlbGVtZW50X3NpemU7CisgCisgCS8qIExldCB1cyBub3cgcGxheSBhIGRp cnR5IHRyaWNrOiB3ZSB3aWxsIHRha2UgYXJnMSAKKyAJICAgd2hpY2ggaXMgYSB2YWx1ZSBub2Rl IHBvaW50aW5nIHRvIHRoZSB0b3Btb3N0IGxldmVsCitAQCAtMjMyNCw3ICsyMzUyLDcgQEAgZXZh bHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCisgCSAgIHJl dHVybnMgdGhlIGNvcnJlY3QgdHlwZSB2YWx1ZSAqLworIAorIAlkZXByZWNhdGVkX3NldF92YWx1 ZV90eXBlIChhcmcxLCB0bXBfdHlwZSk7CistCXJldHVybiB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFs dWUgKGFyZzEsIG9mZnNldF9pdGVtLCAwKTsKKysJcmV0dXJuIHZhbHVlX3N1YnNjcmlwdGVkX3J2 YWx1ZSAoYXJnMSwgb2Zmc2V0X2J5dGUpOworICAgICAgIH0KKyAKKyAgICAgY2FzZSBCSU5PUF9M T0dJQ0FMX0FORDoKK0BAIC0yNTU4LDE0ICsyNTg2LDIyIEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFu ZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorICAgICAgIGlmIChleHBlY3RfdHlwZSAm JiBUWVBFX0NPREUgKGV4cGVjdF90eXBlKSA9PSBUWVBFX0NPREVfUFRSKQorIAlleHBlY3RfdHlw ZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGNoZWNrX3R5cGVkZWYgKGV4cGVjdF90eXBlKSk7CisgICAg ICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoZXhwZWN0X3R5cGUsIGV4cCwgcG9zLCBub3NpZGUp OworKyAgICAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCAwKTsKKysg ICAgICBvYmplY3RfYWRkcmVzc19zZXQgKHZhbHVlX3Jhd19hZGRyZXNzIChhcmcxKSk7CisgICAg ICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZzEpKTsKKyAgICAgICBpZiAo VFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfTUVUSE9EUFRSCisgCSAgfHwgVFlQRV9DT0RF ICh0eXBlKSA9PSBUWVBFX0NPREVfTUVNQkVSUFRSKQorIAllcnJvciAoXygiQXR0ZW1wdCB0byBk ZXJlZmVyZW5jZSBwb2ludGVyIHRvIG1lbWJlciB3aXRob3V0IGFuIG9iamVjdCIpKTsKKyAgICAg ICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKKy0JZ290byBub3NpZGVyZXQ7CisrCXsKKysJICBk b19jbGVhbnVwcyAob2xkX2NoYWluKTsKKysJICBnb3RvIG5vc2lkZXJldDsKKysJfQorICAgICAg IGlmICh1bm9wX3VzZXJfZGVmaW5lZF9wIChvcCwgYXJnMSkpCistCXJldHVybiB2YWx1ZV94X3Vu b3AgKGFyZzEsIG9wLCBub3NpZGUpOworKwl7CisrCSAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7 CisrCSAgcmV0dXJuIHZhbHVlX3hfdW5vcCAoYXJnMSwgb3AsIG5vc2lkZSk7CisrCX0KKyAgICAg ICBlbHNlIGlmIChub3NpZGUgPT0gRVZBTF9BVk9JRF9TSURFX0VGRkVDVFMpCisgCXsKKyAJICB0 eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOworQEAgLTI1NzQsMTIgKzI2 MTAsMTggQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5 cGUsCisgCSAgLyogSW4gQyB5b3UgY2FuIGRlcmVmZXJlbmNlIGFuIGFycmF5IHRvIGdldCB0aGUg MXN0IGVsdC4gICovCisgCSAgICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FS UkFZCisgCSAgICApCistCSAgICByZXR1cm4gdmFsdWVfemVybyAoVFlQRV9UQVJHRVRfVFlQRSAo dHlwZSksCistCQkJICAgICAgIGx2YWxfbWVtb3J5KTsKKysJICAgIHsKKysJICAgICAgZG9fY2xl YW51cHMgKG9sZF9jaGFpbik7CisrCSAgICAgIHJldHVybiB2YWx1ZV96ZXJvIChUWVBFX1RBUkdF VF9UWVBFICh0eXBlKSwKKysJCQkJIGx2YWxfbWVtb3J5KTsKKysJICAgIH0KKyAJICBlbHNlIGlm IChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9JTlQpCistCSAgICAvKiBHREIgYWxsb3dz IGRlcmVmZXJlbmNpbmcgYW4gaW50LiAgKi8KKy0JICAgIHJldHVybiB2YWx1ZV96ZXJvIChidWls dGluX3R5cGUgKGV4cC0+Z2RiYXJjaCktPmJ1aWx0aW5faW50LAorLQkJCSAgICAgICBsdmFsX21l bW9yeSk7CisrCSAgICB7CisrCSAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOworKwkgICAg ICAvKiBHREIgYWxsb3dzIGRlcmVmZXJlbmNpbmcgYW4gaW50LiAgKi8KKysJICAgICAgcmV0dXJu IHZhbHVlX3plcm8gKGJ1aWx0aW5fdHlwZSAoZXhwLT5nZGJhcmNoKS0+YnVpbHRpbl9pbnQsCisr CQkJCSBsdmFsX21lbW9yeSk7CisrCSAgICB9CisgCSAgZWxzZQorIAkgICAgZXJyb3IgKF8oIkF0 dGVtcHQgdG8gdGFrZSBjb250ZW50cyBvZiBhIG5vbi1wb2ludGVyIHZhbHVlLiIpKTsKKyAJfQor QEAgLTI1ODksOSArMjYzMSwxNCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0 eXBlICpleHBlY3RfdHlwZSwKKyAJIGRvLiAgImxvbmcgbG9uZyIgdmFyaWFibGVzIGFyZSByYXJl IGVub3VnaCB0aGF0CisgCSBCVUlMVElOX1RZUEVfTE9OR0VTVCB3b3VsZCBzZWVtIHRvIGJlIGEg bWlzdGFrZS4gICovCisgICAgICAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0lO VCkKKy0JcmV0dXJuIHZhbHVlX2F0X2xhenkgKGJ1aWx0aW5fdHlwZSAoZXhwLT5nZGJhcmNoKS0+ YnVpbHRpbl9pbnQsCistCQkJICAgICAgKENPUkVfQUREUikgdmFsdWVfYXNfYWRkcmVzcyAoYXJn MSkpOworLSAgICAgIHJldHVybiB2YWx1ZV9pbmQgKGFyZzEpOworKwl7CisrCSAgZG9fY2xlYW51 cHMgKG9sZF9jaGFpbik7CisrCSAgcmV0dXJuIHZhbHVlX2F0X2xhenkgKGJ1aWx0aW5fdHlwZSAo ZXhwLT5nZGJhcmNoKS0+YnVpbHRpbl9pbnQsCisrCQkJCShDT1JFX0FERFIpIHZhbHVlX2FzX2Fk ZHJlc3MgKGFyZzEpKTsKKysJfQorKyAgICAgIGFyZzEgPSB2YWx1ZV9pbmQgKGFyZzEpOworKyAg ICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOworKyAgICAgIHJldHVybiBhcmcxOworIAorICAg ICBjYXNlIFVOT1BfQUREUjoKKyAgICAgICAvKiBDKys6IGNoZWNrIGZvciBhbmQgaGFuZGxlIHBv aW50ZXIgdG8gbWVtYmVycy4gICovCitAQCAtMjkzMyw3ICsyOTgwLDcgQEAgZXZhbHVhdGVfc3Vi ZXhwX3dpdGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpleHAsCisgeworICAgZW51bSBl eHBfb3Bjb2RlIG9wOworICAgaW50IHBjOworLSAgc3RydWN0IHZhbHVlICp2YWw7CisrICBzdHJ1 Y3QgdmFsdWUgKnZhbCA9IE5VTEw7CisgICBzdHJ1Y3Qgc3ltYm9sICp2YXI7CisgICBzdHJ1Y3Qg dHlwZSAqdHlwZTsKKyAKK0BAIC0yOTQ0LDEyICsyOTkxLDE3IEBAIGV2YWx1YXRlX3N1YmV4cF93 aXRoX2NvZXJjaW9uIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorICAgICB7CisgICAgIGNhc2Ug T1BfVkFSX1ZBTFVFOgorICAgICAgIHZhciA9IGV4cC0+ZWx0c1twYyArIDJdLnN5bWJvbDsKKysg ICAgICAvKiBhZGRyZXNzX29mX3ZhcmlhYmxlIHdpbGwgY2FsbCBvYmplY3RfYWRkcmVzc19zZXQg Zm9yIGNoZWNrX3R5cGVkZWYuCisrCSBDYWxsIGl0IG9ubHkgaWYgcmVxdWlyZWQgYXMgaXQgY2Fu IGVycm9yLW91dCBvbiBWQVIgaW4gcmVnaXN0ZXIuICAqLworKyAgICAgIGlmIChUWVBFX0RZTkFN SUMgKFNZTUJPTF9UWVBFICh2YXIpKSkKKysJdmFsID0gYWRkcmVzc19vZl92YXJpYWJsZSAodmFy LCBleHAtPmVsdHNbcGMgKyAxXS5ibG9jayk7CisgICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYg KFNZTUJPTF9UWVBFICh2YXIpKTsKKyAgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBF X0NPREVfQVJSQVkKKyAJICAmJiBDQVNUX0lTX0NPTlZFUlNJT04gKGV4cC0+bGFuZ3VhZ2VfZGVm bikpCisgCXsKKyAJICAoKnBvcykgKz0gNDsKKy0JICB2YWwgPSBhZGRyZXNzX29mX3ZhcmlhYmxl ICh2YXIsIGV4cC0+ZWx0c1twYyArIDFdLmJsb2NrKTsKKysJICBpZiAoIXZhbCkKKysJICAgIHZh bCA9IGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHZhciwgZXhwLT5lbHRzW3BjICsgMV0uYmxvY2spOwor IAkgIHJldHVybiB2YWx1ZV9jYXN0IChsb29rdXBfcG9pbnRlcl90eXBlIChUWVBFX1RBUkdFVF9U WVBFICh0eXBlKSksCisgCQkJICAgICB2YWwpOworIAl9CitAQCAtMzAwMSw5ICszMDUzLDEzIEBA IGV2YWx1YXRlX3N1YmV4cF9mb3Jfc2l6ZW9mIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQg KnBvcykKKyAKKyAgICAgY2FzZSBPUF9WQVJfVkFMVUU6CisgICAgICAgKCpwb3MpICs9IDQ7Cist ICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFNZTUJPTF9UWVBFIChleHAtPmVsdHNbcGMgKyAy XS5zeW1ib2wpKTsKKy0gICAgICByZXR1cm4KKy0JdmFsdWVfZnJvbV9sb25nZXN0IChzaXplX3R5 cGUsIChMT05HRVNUKSBUWVBFX0xFTkdUSCAodHlwZSkpOworKyAgICAgIC8qIFdlIGRvIG5vdCBu ZWVkIHRvIGNhbGwgcmVhZF92YXJfdmFsdWUgYnV0IHRoZSBvYmplY3QgZXZhbHVhdGlvbiBtYXkK KysJIG5lZWQgdG8gaGF2ZSBleGVjdXRlZCBvYmplY3RfYWRkcmVzc19zZXQgd2hpY2ggbmVlZHMg dmFsaWQKKysJIFNZTUJPTF9WQUxVRV9BRERSRVNTIG9mIHRoZSBzeW1ib2wuICBTdGlsbCBWQUxV RSByZXR1cm5lZCBieQorKwkgcmVhZF92YXJfdmFsdWUgd2UgbGVmdCBhcyBsYXp5LiAgKi8KKysg ICAgICB0eXBlID0gdmFsdWVfdHlwZSAocmVhZF92YXJfdmFsdWUgKGV4cC0+ZWx0c1twYyArIDJd LnN5bWJvbCwKKysJCQkJCWRlcHJlY2F0ZWRfc2FmZV9nZXRfc2VsZWN0ZWRfZnJhbWUgKCkpKTsK KysgICAgICByZXR1cm4gdmFsdWVfZnJvbV9sb25nZXN0IChzaXplX3R5cGUsIChMT05HRVNUKSBU WVBFX0xFTkdUSCAodHlwZSkpOworIAorICAgICBkZWZhdWx0OgorICAgICAgIHZhbCA9IGV2YWx1 YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAsIHBvcywgRVZBTF9BVk9JRF9TSURFX0VGRkVDVFMp OworZGlmZiAtLWdpdCBhL2dkYi9mLWxhbmcuaCBiL2dkYi9mLWxhbmcuaAoraW5kZXggZjViYjgy ZC4uMjljZjViYSAxMDA2NDQKKy0tLSBhL2dkYi9mLWxhbmcuaAorKysrIGIvZ2RiL2YtbGFuZy5o CitAQCAtMjgsNiArMjgsMTAgQEAgZXh0ZXJuIHZvaWQgZl9lcnJvciAoY2hhciAqKTsJLyogRGVm aW5lZCBpbiBmLWV4cC55ICovCisgZXh0ZXJuIHZvaWQgZl9wcmludF90eXBlIChzdHJ1Y3QgdHlw ZSAqLCBjb25zdCBjaGFyICosIHN0cnVjdCB1aV9maWxlICosIGludCwKKyAJCQkgIGludCk7Cisg CisrZXh0ZXJuIGNvbnN0IGNoYXIgKmZfb2JqZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9wcmludF90 b19zdHJlYW0KKysgIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSk7 CisrZXh0ZXJuIHZvaWQgZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX29yX2Vycm9yIChzdHJ1 Y3QgdHlwZSAqdHlwZSk7CisrCisgZXh0ZXJuIGludCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUg KiwgY29uc3QgZ2RiX2J5dGUgKiwgaW50LCBDT1JFX0FERFIsCisgCQkJc3RydWN0IHVpX2ZpbGUg KiwgaW50LAorIAkJCWNvbnN0IHN0cnVjdCB2YWx1ZSAqLAorZGlmZiAtLWdpdCBhL2dkYi9mLXR5 cGVwcmludC5jIGIvZ2RiL2YtdHlwZXByaW50LmMKK2luZGV4IGQzNWEyNTUuLmRlYzgxZDUgMTAw NjQ0CistLS0gYS9nZGIvZi10eXBlcHJpbnQuYworKysrIGIvZ2RiL2YtdHlwZXByaW50LmMKK0BA IC0zMiw3ICszMiw3IEBACisgI2luY2x1ZGUgImdkYmNvcmUuaCIKKyAjaW5jbHVkZSAidGFyZ2V0 LmgiCisgI2luY2x1ZGUgImYtbGFuZy5oIgorLQorKyNpbmNsdWRlICJkd2FyZjJsb2MuaCIKKyAj aW5jbHVkZSAiZ2RiX3N0cmluZy5oIgorICNpbmNsdWRlIDxlcnJuby5oPgorIAorQEAgLTQ5LDYg KzQ5LDM0IEBAIHZvaWQgZl90eXBlX3ByaW50X3ZhcnNwZWNfcHJlZml4IChzdHJ1Y3QgdHlwZSAq LCBzdHJ1Y3QgdWlfZmlsZSAqLAorIHZvaWQgZl90eXBlX3ByaW50X2Jhc2UgKHN0cnVjdCB0eXBl ICosIHN0cnVjdCB1aV9maWxlICosIGludCwgaW50KTsKKyAMCisgCisrY29uc3QgY2hhciAqCisr Zl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX3ByaW50X3RvX3N0cmVhbSAoc3RydWN0IHR5cGUg KnR5cGUsCisrCQkJCQkgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCisreworKyAgY29uc3Qg Y2hhciAqbXNnOworKworKyAgbXNnID0gb2JqZWN0X2FkZHJlc3NfZGF0YV9ub3RfdmFsaWQgKHR5 cGUpOworKyAgaWYgKG1zZyAhPSBOVUxMKQorKyAgICB7CisrICAgICAgLyogQXNzdW1pbmcgdGhl IGNvbnRlbnQgcHJpbnRlZCB0byBTVFJFQU0gc2hvdWxkIG5vdCBiZSBsb2NhbGl6ZWQuICAqLwor KyAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIjwlcz4iLCBtc2cpOworKyAgICB9Cisr CisrICByZXR1cm4gbXNnOworK30KKysKKyt2b2lkCisrZl9vYmplY3RfYWRkcmVzc19kYXRhX3Zh bGlkX29yX2Vycm9yIChzdHJ1Y3QgdHlwZSAqdHlwZSkKKyt7CisrICBjb25zdCBjaGFyICptc2c7 CisrCisrICBtc2cgPSBvYmplY3RfYWRkcmVzc19kYXRhX25vdF92YWxpZCAodHlwZSk7CisrICBp ZiAobXNnICE9IE5VTEwpCisrICAgIHsKKysgICAgICBlcnJvciAoXygiQ2Fubm90IGFjY2VzcyBp dCBiZWNhdXNlIHRoZSAlcy4iKSwgXyhtc2cpKTsKKysgICAgfQorK30KKysKKyAvKiBMRVZFTCBp cyB0aGUgZGVwdGggdG8gaW5kZW50IGxpbmVzIGJ5LiAgKi8KKyAKKyB2b2lkCitAQCAtNTgsNiAr ODYsOSBAQCBmX3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBjaGFyICp2YXJz dHJpbmcsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCisgICBlbnVtIHR5cGVfY29kZSBjb2RlOwor ICAgaW50IGRlbWFuZ2xlZF9hcmdzOworIAorKyAgaWYgKGZfb2JqZWN0X2FkZHJlc3NfZGF0YV92 YWxpZF9wcmludF90b19zdHJlYW0gKHR5cGUsIHN0cmVhbSkgIT0gTlVMTCkKKysgICAgcmV0dXJu OworKworICAgZl90eXBlX3ByaW50X2Jhc2UgKHR5cGUsIHN0cmVhbSwgc2hvdywgbGV2ZWwpOwor ICAgY29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CisgICBpZiAoKHZhcnN0cmluZyAhPSBOVUxMICYm ICp2YXJzdHJpbmcgIT0gJ1wwJykKK0BAIC0xNjUsNiArMTk2LDkgQEAgZl90eXBlX3ByaW50X3Zh cnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwK KyAKKyAgIFFVSVQ7CisgCisrICBpZiAoVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfVFlQ RURFRikKKysgICAgQ0hFQ0tfVFlQRURFRiAodHlwZSk7CisrCisgICBzd2l0Y2ggKFRZUEVfQ09E RSAodHlwZSkpCisgICAgIHsKKyAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6CitkaWZmIC0tZ2l0 IGEvZ2RiL2YtdmFscHJpbnQuYyBiL2dkYi9mLXZhbHByaW50LmMKK2luZGV4IDg1ZjY5OGQuLjJm NzJiOTcgMTAwNjQ0CistLS0gYS9nZGIvZi12YWxwcmludC5jCisrKysgYi9nZGIvZi12YWxwcmlu dC5jCitAQCAtNTQsMTUgKzU0LDE3IEBAIGludCBmNzdfYXJyYXlfb2Zmc2V0X3RibFtNQVhfRk9S VFJBTl9ESU1TICsgMV1bMl07CisgLyogVGhlIGZvbGxvd2luZyBtYWNybyBnaXZlcyB1cyB0aGUg c2l6ZSBvZiB0aGUgbnRoIGRpbWVuc2lvbiwgV2hlcmUgCisgICAgbiBpcyAxIGJhc2VkLiAqLwor IAorLSNkZWZpbmUgRjc3X0RJTV9TSVpFKG4pIChmNzdfYXJyYXlfb2Zmc2V0X3RibFtuXVsxXSkK KysjZGVmaW5lIEY3N19ESU1fQ09VTlQobikgKGY3N19hcnJheV9vZmZzZXRfdGJsW25dWzFdKQor IAorLS8qIFRoZSBmb2xsb3dpbmcgZ2l2ZXMgdXMgdGhlIG9mZnNldCBmb3Igcm93IG4gd2hlcmUg biBpcyAxLWJhc2VkLiAqLworKy8qIFRoZSBmb2xsb3dpbmcgZ2l2ZXMgdXMgdGhlIGVsZW1lbnQg c2l6ZSBmb3Igcm93IG4gd2hlcmUgbiBpcyAxLWJhc2VkLiAqLworIAorLSNkZWZpbmUgRjc3X0RJ TV9PRkZTRVQobikgKGY3N19hcnJheV9vZmZzZXRfdGJsW25dWzBdKQorKyNkZWZpbmUgRjc3X0RJ TV9CWVRFX1NUUklERShuKSAoZjc3X2FycmF5X29mZnNldF90Ymxbbl1bMF0pCisgCisgaW50Cisg Zjc3X2dldF9sb3dlcmJvdW5kIChzdHJ1Y3QgdHlwZSAqdHlwZSkKKyB7CisrICBmX29iamVjdF9h ZGRyZXNzX2RhdGFfdmFsaWRfb3JfZXJyb3IgKHR5cGUpOworKworICAgaWYgKFRZUEVfQVJSQVlf TE9XRVJfQk9VTkRfSVNfVU5ERUZJTkVEICh0eXBlKSkKKyAgICAgZXJyb3IgKF8oIkxvd2VyIGJv dW5kIG1heSBub3QgYmUgJyonIGluIEY3NyIpKTsKKyAKK0BAIC03MiwxNCArNzQsMTcgQEAgZjc3 X2dldF9sb3dlcmJvdW5kIChzdHJ1Y3QgdHlwZSAqdHlwZSkKKyBpbnQKKyBmNzdfZ2V0X3VwcGVy Ym91bmQgKHN0cnVjdCB0eXBlICp0eXBlKQorIHsKKysgIGZfb2JqZWN0X2FkZHJlc3NfZGF0YV92 YWxpZF9vcl9lcnJvciAodHlwZSk7CisrCisgICBpZiAoVFlQRV9BUlJBWV9VUFBFUl9CT1VORF9J U19VTkRFRklORUQgKHR5cGUpKQorICAgICB7CistICAgICAgLyogV2UgaGF2ZSBhbiBhc3N1bWVk IHNpemUgYXJyYXkgb24gb3VyIGhhbmRzLiAgQXNzdW1lIHRoYXQKKy0JIHVwcGVyX2JvdW5kID09 IGxvd2VyX2JvdW5kIHNvIHRoYXQgd2Ugc2hvdyBhdCBsZWFzdCAxIGVsZW1lbnQuCistCSBJZiB0 aGUgdXNlciB3YW50cyB0byBzZWUgbW9yZSBlbGVtZW50cywgbGV0IGhpbSBtYW51YWxseSBhc2sg Zm9yICdlbQorLQkgYW5kIHdlJ2xsIHN1YnNjcmlwdCB0aGUgYXJyYXkgYW5kIHNob3cgaGltLiAg Ki8KKysgICAgICAvKiBXZSBoYXZlIGFuIGFzc3VtZWQgc2l6ZSBhcnJheSBvbiBvdXIgaGFuZHMu ICBBcyB0eXBlX2xlbmd0aF9nZXQKKysJIGFscmVhZHkgYXNzdW1lcyBhIGxlbmd0aCB6ZXJvIG9m IGFycmF5cyB3aXRoIHVuZGVyZmluZWQgYm91bmRzIFZBTEFERFIKKysJIHBhc3NlZCB0byB0aGUg Rm9ydHJhbiBmdW5jdGlvbnMgZG9lcyBub3QgY29udGFpbmVkIHRoZSByZWFsIGluZmVyaW9yCisr CSBtZW1vcnkgY29udGVudC4gIFVzZXIgc2hvdWxkIHJlcXVlc3QgcHJpbnRpbmcgb2Ygc3BlY2lm aWMgYXJyYXkKKysJIGVsZW1lbnRzIGluc3RlYWQuICAqLworIAorLSAgICAgIHJldHVybiBmNzdf Z2V0X2xvd2VyYm91bmQgKHR5cGUpOworKyAgICAgIHJldHVybiBmNzdfZ2V0X2xvd2VyYm91bmQg KHR5cGUpIC0gMTsKKyAgICAgfQorIAorICAgcmV0dXJuIFRZUEVfQVJSQVlfVVBQRVJfQk9VTkRf VkFMVUUgKHR5cGUpOworQEAgLTEzNCwyNCArMTM5LDI5IEBAIGY3N19jcmVhdGVfYXJyYXlwcmlu dF9vZmZzZXRfdGJsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkK KyAgICAgICB1cHBlciA9IGY3N19nZXRfdXBwZXJib3VuZCAodG1wX3R5cGUpOworICAgICAgIGxv d2VyID0gZjc3X2dldF9sb3dlcmJvdW5kICh0bXBfdHlwZSk7CisgCistICAgICAgRjc3X0RJTV9T SVpFIChuZGltZW4pID0gdXBwZXIgLSBsb3dlciArIDE7CisrICAgICAgRjc3X0RJTV9DT1VOVCAo bmRpbWVuKSA9IHVwcGVyIC0gbG93ZXIgKyAxOworKworKyAgICAgIEY3N19ESU1fQllURV9TVFJJ REUgKG5kaW1lbikgPQorKyAgICAgICAgVFlQRV9BUlJBWV9CWVRFX1NUUklERV9WQUxVRSAodG1w X3R5cGUpOworIAorICAgICAgIHRtcF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAodG1wX3R5cGUp OworICAgICAgIG5kaW1lbisrOworICAgICB9CisgCistICAvKiBOb3cgd2UgbXVsdGlwbHkgZWx0 bGVuIGJ5IGFsbCB0aGUgb2Zmc2V0cywgc28gdGhhdCBsYXRlciB3ZSAKKysgIC8qIE5vdyB3ZSBt dWx0aXBseSBlbHRsZW4gYnkgYWxsIHRoZSBCWVRFX1NUUklERXMsIHNvIHRoYXQgbGF0ZXIgd2UK KyAgICAgIGNhbiBwcmludCBvdXQgYXJyYXkgZWxlbWVudHMgY29ycmVjdGx5LiAgVXAgdGlsbCBu b3cgd2UgCistICAgICBrbm93IGFuIG9mZnNldCB0byBhcHBseSB0byBnZXQgdGhlIGl0ZW0gYnV0 IHdlIGFsc28gCisrICAgICBrbm93IGFuIGVsdGxlbiB0byBhcHBseSB0byBnZXQgdGhlIGl0ZW0g YnV0IHdlIGFsc28KKyAgICAgIGhhdmUgdG8ga25vdyBob3cgbXVjaCB0byBhZGQgdG8gZ2V0IHRv IHRoZSBuZXh0IGl0ZW0gKi8KKyAKKyAgIG5kaW1lbi0tOworICAgZWx0bGVuID0gVFlQRV9MRU5H VEggKHRtcF90eXBlKTsKKy0gIEY3N19ESU1fT0ZGU0VUIChuZGltZW4pID0gZWx0bGVuOworKyAg aWYgKEY3N19ESU1fQllURV9TVFJJREUgKG5kaW1lbikgPT0gMCkKKysgICAgRjc3X0RJTV9CWVRF X1NUUklERSAobmRpbWVuKSA9IGVsdGxlbjsKKyAgIHdoaWxlICgtLW5kaW1lbiA+IDApCisgICAg IHsKKy0gICAgICBlbHRsZW4gKj0gRjc3X0RJTV9TSVpFIChuZGltZW4gKyAxKTsKKy0gICAgICBG NzdfRElNX09GRlNFVCAobmRpbWVuKSA9IGVsdGxlbjsKKysgICAgICBlbHRsZW4gKj0gRjc3X0RJ TV9DT1VOVCAobmRpbWVuICsgMSk7CisrICAgICAgaWYgKEY3N19ESU1fQllURV9TVFJJREUgKG5k aW1lbikgPT0gMCkKKysJRjc3X0RJTV9CWVRFX1NUUklERSAobmRpbWVuKSA9IGVsdGxlbjsKKyAg ICAgfQorIH0KKyAKK0BAIC0xNzIsMzQgKzE4MiwzNCBAQCBmNzdfcHJpbnRfYXJyYXlfMSAoaW50 IG5zcywgaW50IG5kaW1lbnNpb25zLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKKyAKKyAgIGlmIChuc3Mg IT0gbmRpbWVuc2lvbnMpCisgICAgIHsKKy0gICAgICBmb3IgKGkgPSAwOyAoaSA8IEY3N19ESU1f U0laRSAobnNzKSAmJiAoKmVsdHMpIDwgb3B0aW9ucy0+cHJpbnRfbWF4KTsgaSsrKQorKyAgICAg IGZvciAoaSA9IDA7IChpIDwgRjc3X0RJTV9DT1VOVCAobnNzKSAmJiAoKmVsdHMpIDwgb3B0aW9u cy0+cHJpbnRfbWF4KTsgaSsrKQorIAl7CisgCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAi KCAiKTsKKyAJICBmNzdfcHJpbnRfYXJyYXlfMSAobnNzICsgMSwgbmRpbWVuc2lvbnMsIFRZUEVf VEFSR0VUX1RZUEUgKHR5cGUpLAorLQkJCSAgICAgdmFsYWRkciArIGkgKiBGNzdfRElNX09GRlNF VCAobnNzKSwKKy0JCQkgICAgIGFkZHJlc3MgKyBpICogRjc3X0RJTV9PRkZTRVQgKG5zcyksCisr CQkJICAgICB2YWxhZGRyICsgaSAqIEY3N19ESU1fQllURV9TVFJJREUgKG5zcyksCisrCQkJICAg ICBhZGRyZXNzICsgaSAqIEY3N19ESU1fQllURV9TVFJJREUgKG5zcyksCisgCQkJICAgICBzdHJl YW0sIHJlY3Vyc2UsIHZhbCwgb3B0aW9ucywgZWx0cyk7CisgCSAgZnByaW50Zl9maWx0ZXJlZCAo c3RyZWFtLCAiKSAiKTsKKyAJfQorLSAgICAgIGlmICgqZWx0cyA+PSBvcHRpb25zLT5wcmludF9t YXggJiYgaSA8IEY3N19ESU1fU0laRSAobnNzKSkgCisrICAgICAgaWYgKCplbHRzID49IG9wdGlv bnMtPnByaW50X21heCAmJiBpIDwgRjc3X0RJTV9DT1VOVCAobnNzKSkKKyAJZnByaW50Zl9maWx0 ZXJlZCAoc3RyZWFtLCAiLi4uIik7CisgICAgIH0KKyAgIGVsc2UKKyAgICAgeworLSAgICAgIGZv ciAoaSA9IDA7IGkgPCBGNzdfRElNX1NJWkUgKG5zcykgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnBy aW50X21heDsKKysgICAgICBmb3IgKGkgPSAwOyBpIDwgRjc3X0RJTV9DT1VOVCAobnNzKSAmJiAo KmVsdHMpIDwgb3B0aW9ucy0+cHJpbnRfbWF4OworIAkgICBpKyssICgqZWx0cykrKykKKyAJewor IAkgIHZhbF9wcmludCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCistCQkgICAgIHZhbGFkZHIg KyBpICogRjc3X0RJTV9PRkZTRVQgKG5kaW1lbnNpb25zKSwKKysJCSAgICAgdmFsYWRkciArIGkg KiBGNzdfRElNX0JZVEVfU1RSSURFIChuZGltZW5zaW9ucyksCisgCQkgICAgIDAsCistCQkgICAg IGFkZHJlc3MgKyBpICogRjc3X0RJTV9PRkZTRVQgKG5kaW1lbnNpb25zKSwKKysJCSAgICAgYWRk cmVzcyArIGkgKiBGNzdfRElNX0JZVEVfU1RSSURFIChuZGltZW5zaW9ucyksCisgCQkgICAgIHN0 cmVhbSwgcmVjdXJzZSwgdmFsLCBvcHRpb25zLCBjdXJyZW50X2xhbmd1YWdlKTsKKyAKKy0JICBp ZiAoaSAhPSAoRjc3X0RJTV9TSVpFIChuc3MpIC0gMSkpCisrCSAgaWYgKGkgIT0gKEY3N19ESU1f Q09VTlQgKG5zcykgLSAxKSkKKyAJICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiwgIik7 CisgCisgCSAgaWYgKCgqZWx0cyA9PSBvcHRpb25zLT5wcmludF9tYXggLSAxKQorLQkgICAgICAm JiAoaSAhPSAoRjc3X0RJTV9TSVpFIChuc3MpIC0gMSkpKQorKwkgICAgICAmJiAoaSAhPSAoRjc3 X0RJTV9DT1VOVCAobnNzKSAtIDEpKSkKKyAJICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwg Ii4uLiIpOworIAl9CisgICAgIH0KK0BAIC0yNTYsNiArMjY2LDkgQEAgZl92YWxfcHJpbnQgKHN0 cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29m ZnNldCwKKyAgIENPUkVfQUREUiBhZGRyOworICAgaW50IGluZGV4OworIAorKyAgaWYgKGZfb2Jq ZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9wcmludF90b19zdHJlYW0gKHR5cGUsIHN0cmVhbSkgIT0g TlVMTCkKKysgICAgcmV0dXJuIDA7CisrCisgICBDSEVDS19UWVBFREVGICh0eXBlKTsKKyAgIHN3 aXRjaCAoVFlQRV9DT0RFICh0eXBlKSkKKyAgICAgeworZGlmZiAtLWdpdCBhL2dkYi9maW5kY21k LmMgYi9nZGIvZmluZGNtZC5jCitpbmRleCBhYzYzYTllLi5lOWJhNDVjIDEwMDY0NAorLS0tIGEv Z2RiL2ZpbmRjbWQuYworKysrIGIvZ2RiL2ZpbmRjbWQuYworQEAgLTQ1LDYgKzQ1LDQxIEBAIHB1 dF9iaXRzIChiZmRfdWludDY0X3QgZGF0YSwgY2hhciAqYnVmLCBpbnQgYml0cywgYmZkX2Jvb2xl YW4gYmlnX3ApCisgICAgIH0KKyB9CisgCisrLyogQWxsb2NhdGVzIGEgYnVmZmVyIGluICpQQVRU RVJOX0JVRiwgd2l0aCBhIGhhcmQtY29kZWQgaW5pdGlhbCBzaXplIHdoaWNoCisrICAgd2lsbCBi ZSByZXR1cm5lZCBpbiAqUEFUVEVSTl9CVUZfU0laRS4gKlBBVFRFUk5fQlVGX0VORCBwb2ludHMg dG8gdGhlIHNhbWUKKysgICBwbGFjZSBhcyAqUEFUVEVSTl9CVUYsIGluZGljYXRpbmcgdGhhdCB0 aGUgYnVmZmVyIGlzIGluaXRpYWxseSBlbXB0eS4gICovCisrCisrdm9pZAorK2FsbG9jYXRlX3Bh dHRlcm5fYnVmZmVyIChjaGFyICoqcGF0dGVybl9idWYsIGNoYXIgKipwYXR0ZXJuX2J1Zl9lbmQs CisrCQkJIFVMT05HRVNUICpwYXR0ZXJuX2J1Zl9zaXplKQorK3sKKysjZGVmaW5lIElOSVRJQUxf UEFUVEVSTl9CVUZfU0laRSAxMDAKKysgICpwYXR0ZXJuX2J1Zl9zaXplID0gSU5JVElBTF9QQVRU RVJOX0JVRl9TSVpFOworKyAgKnBhdHRlcm5fYnVmID0geG1hbGxvYyAoKnBhdHRlcm5fYnVmX3Np emUpOworKyAgKnBhdHRlcm5fYnVmX2VuZCA9ICpwYXR0ZXJuX2J1ZjsKKyt9CisrCisrLyogR3Jv d3MgKlBBVFRFUk5fQlVGIGJ5IGEgZmFjdG9yIG9mIHR3byBpZiBpdCdzIG5vdCBsYXJnZSBlbm91 Z2ggdG8gaG9sZAorKyAgIFZBTF9CWVRFUyBtb3JlIGJ5dGVzICBvciBhIDY0LWJpdCB2YWx1ZSwg d2hpY2hldmVyIGlzIGxhcmdlci4KKysgICAqUEFUVEVSTl9CVUZfRU5EIGlzIHVwZGF0ZWQgYXMg bmVjZXNzYXJ5LiAgKi8KKysKKyt2b2lkCisraW5jcmVhc2VfcGF0dGVybl9idWZmZXIgKGNoYXIg KipwYXR0ZXJuX2J1ZiwgY2hhciAqKnBhdHRlcm5fYnVmX2VuZCwKKysJCQkgVUxPTkdFU1QgKnBh dHRlcm5fYnVmX3NpemUsIGludCB2YWxfYnl0ZXMpCisreworKyAgICAvKiBLZWVwIGl0IHNpbXBs ZSBhbmQgYXNzdW1lIHNpemUgPT0gJ2cnIHdoZW4gd2F0Y2hpbmcgZm9yIHdoZW4gd2UKKysgICAg ICAgbmVlZCB0byBncm93IHRoZSBwYXR0ZXJuIGJ1Zi4gICovCisrICAgIGlmICgoKnBhdHRlcm5f YnVmX2VuZCAtICpwYXR0ZXJuX2J1ZiArIG1heCAodmFsX2J5dGVzLCBzaXplb2YgKGludDY0X3Qp KSkKKysJPiAqcGF0dGVybl9idWZfc2l6ZSkKKysgICAgICB7CisrCXNpemVfdCBjdXJyZW50X29m ZnNldCA9ICpwYXR0ZXJuX2J1Zl9lbmQgLSAqcGF0dGVybl9idWY7CisrCisrCSpwYXR0ZXJuX2J1 Zl9zaXplICo9IDI7CisrCSpwYXR0ZXJuX2J1ZiA9IHhyZWFsbG9jICgqcGF0dGVybl9idWYsICpw YXR0ZXJuX2J1Zl9zaXplKTsKKysJKnBhdHRlcm5fYnVmX2VuZCA9ICpwYXR0ZXJuX2J1ZiArIGN1 cnJlbnRfb2Zmc2V0OworKyAgICAgIH0KKyt9CisrCisgLyogU3Vicm91dGluZSBvZiBmaW5kX2Nv bW1hbmQgdG8gc2ltcGxpZnkgaXQuCisgICAgUGFyc2UgdGhlIGFyZ3VtZW50cyBvZiB0aGUgImZp bmQiIGNvbW1hbmQuICAqLworIAorQEAgLTYxLDggKzk2LDcgQEAgcGFyc2VfZmluZF9hcmdzIChj aGFyICphcmdzLCBVTE9OR0VTVCAqbWF4X2NvdW50cCwKKyAgIGNoYXIgKnBhdHRlcm5fYnVmOwor ICAgLyogQ3VycmVudCBzaXplIG9mIHNlYXJjaCBwYXR0ZXJuIGJ1ZmZlci4KKyAgICAgIFdlIHJl YWxsb2Mgc3BhY2UgYXMgbmVlZGVkLiAgKi8KKy0jZGVmaW5lIElOSVRJQUxfUEFUVEVSTl9CVUZf U0laRSAxMDAKKy0gIFVMT05HRVNUIHBhdHRlcm5fYnVmX3NpemUgPSBJTklUSUFMX1BBVFRFUk5f QlVGX1NJWkU7CisrICBVTE9OR0VTVCBwYXR0ZXJuX2J1Zl9zaXplOworICAgLyogUG9pbnRlciB0 byBvbmUgcGFzdCB0aGUgbGFzdCBpbi11c2UgcGFydCBvZiBwYXR0ZXJuX2J1Zi4gICovCisgICBj aGFyICpwYXR0ZXJuX2J1Zl9lbmQ7CisgICBVTE9OR0VTVCBwYXR0ZXJuX2xlbjsKK0BAIC03NSw4 ICsxMDksNyBAQCBwYXJzZV9maW5kX2FyZ3MgKGNoYXIgKmFyZ3MsIFVMT05HRVNUICptYXhfY291 bnRwLAorICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICAgZXJyb3IgKF8oIk1pc3Npbmcgc2VhcmNo IHBhcmFtZXRlcnMuIikpOworIAorLSAgcGF0dGVybl9idWYgPSB4bWFsbG9jIChwYXR0ZXJuX2J1 Zl9zaXplKTsKKy0gIHBhdHRlcm5fYnVmX2VuZCA9IHBhdHRlcm5fYnVmOworKyAgYWxsb2NhdGVf cGF0dGVybl9idWZmZXIgKCZwYXR0ZXJuX2J1ZiwgJnBhdHRlcm5fYnVmX2VuZCwgJnBhdHRlcm5f YnVmX3NpemUpOworICAgb2xkX2NsZWFudXBzID0gbWFrZV9jbGVhbnVwIChmcmVlX2N1cnJlbnRf Y29udGVudHMsICZwYXR0ZXJuX2J1Zik7CisgCisgICAvKiBHZXQgc2VhcmNoIGdyYW51bGFyaXR5 IGFuZC9vciBtYXggY291bnQgaWYgc3BlY2lmaWVkLgorQEAgLTE3NSwxNyArMjA4LDkgQEAgcGFy c2VfZmluZF9hcmdzIChjaGFyICphcmdzLCBVTE9OR0VTVCAqbWF4X2NvdW50cCwKKyAgICAgICB2 ID0gcGFyc2VfdG9fY29tbWFfYW5kX2V2YWwgKCZzKTsKKyAgICAgICB2YWxfYnl0ZXMgPSBUWVBF X0xFTkdUSCAodmFsdWVfdHlwZSAodikpOworIAorLSAgICAgIC8qIEtlZXAgaXQgc2ltcGxlIGFu ZCBhc3N1bWUgc2l6ZSA9PSAnZycgd2hlbiB3YXRjaGluZyBmb3Igd2hlbiB3ZQorLQkgbmVlZCB0 byBncm93IHRoZSBwYXR0ZXJuIGJ1Zi4gICovCistICAgICAgaWYgKChwYXR0ZXJuX2J1Zl9lbmQg LSBwYXR0ZXJuX2J1ZiArIG1heCAodmFsX2J5dGVzLCBzaXplb2YgKGludDY0X3QpKSkKKy0JICA+ IHBhdHRlcm5fYnVmX3NpemUpCistCXsKKy0JICBzaXplX3QgY3VycmVudF9vZmZzZXQgPSBwYXR0 ZXJuX2J1Zl9lbmQgLSBwYXR0ZXJuX2J1ZjsKKysgICAgICBpbmNyZWFzZV9wYXR0ZXJuX2J1ZmZl ciAoJnBhdHRlcm5fYnVmLCAmcGF0dGVybl9idWZfZW5kLAorKwkJCSAgICAgICAmcGF0dGVybl9i dWZfc2l6ZSwgdmFsX2J5dGVzKTsKKyAKKy0JICBwYXR0ZXJuX2J1Zl9zaXplICo9IDI7CistCSAg cGF0dGVybl9idWYgPSB4cmVhbGxvYyAocGF0dGVybl9idWYsIHBhdHRlcm5fYnVmX3NpemUpOwor LQkgIHBhdHRlcm5fYnVmX2VuZCA9IHBhdHRlcm5fYnVmICsgY3VycmVudF9vZmZzZXQ7CistCX0K KyAKKyAgICAgICBpZiAoc2l6ZSAhPSAnXDAnKQorIAl7CitAQCAtMjQwLDYgKzI2NSw0NSBAQCBw YXJzZV9maW5kX2FyZ3MgKGNoYXIgKmFyZ3MsIFVMT05HRVNUICptYXhfY291bnRwLAorICAgZGlz Y2FyZF9jbGVhbnVwcyAob2xkX2NsZWFudXBzKTsKKyB9CisgCisrLyogRHJpdmVzIHRhcmdldF9z ZWFyY2hfbWVtb3J5IHRvIHN3ZWVwIHRocm91Z2ggdGhlIHNwZWNpZmllZCBzZWFyY2ggc3BhY2Us CisrICAgcG9zc2libHkgaW4gc2V2ZXJhbCBpdGVyYXRpb25zICh3aXRoIG9uZSBjYWxsIHRvIHRo aXMgZnVuY3Rpb24gZm9yIGVhY2gKKysgICBpdGVyYXRpb24pLiAgKlNUQVJUX0FERFIgaXMgdGhl IGFkZHJlc3Mgd2hlcmUgdGhlIHNlYXJjaCBzdGFydHMsIGFuZCBpcworKyAgIHVwZGF0ZWQgdG8g dGhlIG5leHQgc3RhcnRpbmcgYWRkcmVzcyB0byBjb250aW51ZSB0aGUgc2VhcmNoLgorKyAgICpT RUFSQ0hfU1BBQ0VfTEVOIGlzIHRoZSBhbW91bnQgb2YgYnl0ZXMgd2hpY2ggd2lsbCBiZSBzZWFy Y2hlZCwgYW5kIGlzCisrICAgdXBkYXRlZCBmb3IgdGhlIG5leHQgaXRlcmF0aW9uLiBQQVRURVJO X0JVRiBob2xkcyB0aGUgcGF0dGVybiB0byBiZSBzZWFyY2hlZAorKyAgIGZvciwgUEFUVEVSTl9M RU4gaXMgdGhlIHNpemUgb2YgdGhlIHBhdHRlcm4gaW4gYnl0ZXMuICBJZiBhIG1hdGNoIGlzIGZv dW5kLAorKyAgIGl0J3MgYWRkcmVzcyBpcyBwdXQgaW4gKkZPVU5EX0FERFIuCisrCisrICAgUmV0 dXJucyAxIGlmIGZvdW5kLCAwIGlmIG5vdCBmb3VuZCwgYW5kIC0xIGlmIHRoZXJlIHdhcyBhbiBl cnJvciByZXF1aXJpbmcKKysgICBoYWx0aW5nIG9mIHRoZSBzZWFyY2ggKGUuZy4gbWVtb3J5IHJl YWQgZXJyb3IpLiAgKi8KKysKKytpbnQKKytzZWFyY2hfbWVtb3J5IChDT1JFX0FERFIgKnN0YXJ0 X2FkZHIsIFVMT05HRVNUICpzZWFyY2hfc3BhY2VfbGVuLAorKwkgICAgICAgY29uc3QgY2hhciAq cGF0dGVybl9idWYsIFVMT05HRVNUIHBhdHRlcm5fbGVuLAorKwkgICAgICAgQ09SRV9BRERSICpm b3VuZF9hZGRyKQorK3sKKysgIC8qIE9mZnNldCBmcm9tIHN0YXJ0IG9mIHRoaXMgaXRlcmF0aW9u IHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4gICovCisrICBVTE9OR0VTVCBuZXh0X2l0ZXJfaW5jcjsK KysgIGludCBmb3VuZDsKKysgICAgCisrICBmb3VuZCA9IHRhcmdldF9zZWFyY2hfbWVtb3J5ICgq c3RhcnRfYWRkciwgKnNlYXJjaF9zcGFjZV9sZW4sCisrCQkJCXBhdHRlcm5fYnVmLCBwYXR0ZXJu X2xlbiwgZm91bmRfYWRkcik7CisrICBpZiAoZm91bmQgPD0gMCkKKysgICAgcmV0dXJuIGZvdW5k OworKworKyAgLyogQmVnaW4gbmV4dCBpdGVyYXRpb24gYXQgb25lIGJ5dGUgcGFzdCB0aGlzIG1h dGNoLiAgKi8KKysgIG5leHRfaXRlcl9pbmNyID0gKCpmb3VuZF9hZGRyIC0gKnN0YXJ0X2FkZHIp ICsgMTsKKysKKysgIC8qIEZvciByb2J1c3RuZXNzLCB3ZSBkb24ndCBsZXQgc2VhcmNoX3NwYWNl X2xlbiBnbyAtdmUgaGVyZS4gICovCisrICBpZiAoKnNlYXJjaF9zcGFjZV9sZW4gPj0gbmV4dF9p dGVyX2luY3IpCisrICAgICpzZWFyY2hfc3BhY2VfbGVuIC09IG5leHRfaXRlcl9pbmNyOworKyAg ZWxzZQorKyAgICAqc2VhcmNoX3NwYWNlX2xlbiA9IDA7CisrICAqc3RhcnRfYWRkciArPSBuZXh0 X2l0ZXJfaW5jcjsKKysKKysgIHJldHVybiBmb3VuZDsKKyt9CisrCisgc3RhdGljIHZvaWQKKyBm aW5kX2NvbW1hbmQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKKyB7CitAQCAtMjcwLDEyICsz MzQsMTEgQEAgZmluZF9jb21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisgICB3aGls ZSAoc2VhcmNoX3NwYWNlX2xlbiA+PSBwYXR0ZXJuX2xlbgorIAkgJiYgZm91bmRfY291bnQgPCBt YXhfY291bnQpCisgICAgIHsKKy0gICAgICAvKiBPZmZzZXQgZnJvbSBzdGFydCBvZiB0aGlzIGl0 ZXJhdGlvbiB0byB0aGUgbmV4dCBpdGVyYXRpb24uICAqLworLSAgICAgIFVMT05HRVNUIG5leHRf aXRlcl9pbmNyOworICAgICAgIENPUkVfQUREUiBmb3VuZF9hZGRyOworLSAgICAgIGludCBmb3Vu ZCA9IHRhcmdldF9zZWFyY2hfbWVtb3J5IChzdGFydF9hZGRyLCBzZWFyY2hfc3BhY2VfbGVuLAor LQkJCQkJcGF0dGVybl9idWYsIHBhdHRlcm5fbGVuLCAmZm91bmRfYWRkcik7CisrICAgICAgaW50 IGZvdW5kOworIAorKyAgICAgIGZvdW5kID0gc2VhcmNoX21lbW9yeSAoJnN0YXJ0X2FkZHIsICZz ZWFyY2hfc3BhY2VfbGVuLCBwYXR0ZXJuX2J1ZiwKKysJCQkgICAgIHBhdHRlcm5fbGVuLCAmZm91 bmRfYWRkcik7CisgICAgICAgaWYgKGZvdW5kIDw9IDApCisgCWJyZWFrOworIAorQEAgLTI4Mywx NiArMzQ2LDYgQEAgZmluZF9jb21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisgICAg ICAgcHJpbnRmX2ZpbHRlcmVkICgiXG4iKTsKKyAgICAgICArK2ZvdW5kX2NvdW50OworICAgICAg IGxhc3RfZm91bmRfYWRkciA9IGZvdW5kX2FkZHI7CistCistICAgICAgLyogQmVnaW4gbmV4dCBp dGVyYXRpb24gYXQgb25lIGJ5dGUgcGFzdCB0aGlzIG1hdGNoLiAgKi8KKy0gICAgICBuZXh0X2l0 ZXJfaW5jciA9IChmb3VuZF9hZGRyIC0gc3RhcnRfYWRkcikgKyAxOworLQorLSAgICAgIC8qIEZv ciByb2J1c3RuZXNzLCB3ZSBkb24ndCBsZXQgc2VhcmNoX3NwYWNlX2xlbiBnbyAtdmUgaGVyZS4g ICovCistICAgICAgaWYgKHNlYXJjaF9zcGFjZV9sZW4gPj0gbmV4dF9pdGVyX2luY3IpCistCXNl YXJjaF9zcGFjZV9sZW4gLT0gbmV4dF9pdGVyX2luY3I7CistICAgICAgZWxzZQorLQlzZWFyY2hf c3BhY2VfbGVuID0gMDsKKy0gICAgICBzdGFydF9hZGRyICs9IG5leHRfaXRlcl9pbmNyOworICAg ICB9CisgCisgICAvKiBSZWNvcmQgYW5kIHByaW50IHRoZSByZXN1bHRzLiAgKi8KK2RpZmYgLS1n aXQgYS9nZGIvZmluZHZhci5jIGIvZ2RiL2ZpbmR2YXIuYworaW5kZXggZTBjYTEyYy4uZGU2MzEx YSAxMDA2NDQKKy0tLSBhL2dkYi9maW5kdmFyLmMKKysrKyBiL2dkYi9maW5kdmFyLmMKK0BAIC0z NSw2ICszNSw3IEBACisgI2luY2x1ZGUgInVzZXItcmVncy5oIgogICNpbmNsdWRlICJibG9jay5o IgogICNpbmNsdWRlICJvYmpmaWxlcy5oIgogKyNpbmNsdWRlICJkd2FyZjJsb2MuaCIKICAKLSAv KiBCYXNpYyBieXRlLXN3YXBwaW5nIHJvdXRpbmVzLiAgQWxsICdleHRyYWN0JyBmdW5jdGlvbnMg cmV0dXJuIGEKLSAgICBob3N0LWZvcm1hdCBpbnRlZ2VyIGZyb20gYSB0YXJnZXQtZm9ybWF0IGlu dGVnZXIgYXQgQUREUiB3aGljaCBpcwotQEAgLTQwMSwyNyArNDAyLDE2IEBAIHN5bWJvbF9yZWFk X25lZWRzX2ZyYW1lIChzdHJ1Y3Qgc3ltYm9sICpzeW0pCi0gLyogR2l2ZW4gYSBzdHJ1Y3Qgc3lt Ym9sIGZvciBhIHZhcmlhYmxlLAotICAgIGFuZCBhIHN0YWNrIGZyYW1lIGlkLCByZWFkIHRoZSB2 YWx1ZSBvZiB0aGUgdmFyaWFibGUKLSAgICBhbmQgcmV0dXJuIGEgKHBvaW50ZXIgdG8gYSkgc3Ry dWN0IHZhbHVlIGNvbnRhaW5pbmcgdGhlIHZhbHVlLiAKLS0gICBJZiB0aGUgdmFyaWFibGUgY2Fu bm90IGJlIGZvdW5kLCByZXR1cm4gYSB6ZXJvIHBvaW50ZXIuICAqLwotKyAgIElmIHRoZSB2YXJp YWJsZSBjYW5ub3QgYmUgZm91bmQsIHJldHVybiBhIHplcm8gcG9pbnRlci4KLSsgICBXZSBoYXZl IHRvIGZpcnN0IGZpbmQgdGhlIGFkZHJlc3Mgb2YgdGhlIHZhcmlhYmxlIGJlZm9yZSBhbGxvY2F0 aW5nIHN0cnVjdAotKyAgIHZhbHVlIHRvIHJldHVybiBhcyBpdHMgc2l6ZSBtYXkgZGVwZW5kIG9u IERXX09QX1BVU0hfT0JKRUNUX0FERFJFU1MgcG9zc2libHkKLSsgICB1c2VkIGJ5IGl0cyB0eXBl LiAgKi8KKyAvKiBCYXNpYyBieXRlLXN3YXBwaW5nIHJvdXRpbmVzLiAgQWxsICdleHRyYWN0JyBm dW5jdGlvbnMgcmV0dXJuIGEKKyAgICBob3N0LWZvcm1hdCBpbnRlZ2VyIGZyb20gYSB0YXJnZXQt Zm9ybWF0IGludGVnZXIgYXQgQUREUiB3aGljaCBpcworQEAgLTQwMSwyNyArNDAyLDE2IEBAIHN5 bWJvbF9yZWFkX25lZWRzX2ZyYW1lIChzdHJ1Y3Qgc3ltYm9sICpzeW0pCisgLyogR2l2ZW4gYSBz dHJ1Y3Qgc3ltYm9sIGZvciBhIHZhcmlhYmxlLAorICAgIGFuZCBhIHN0YWNrIGZyYW1lIGlkLCBy ZWFkIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUKKyAgICBhbmQgcmV0dXJuIGEgKHBvaW50ZXIg dG8gYSkgc3RydWN0IHZhbHVlIGNvbnRhaW5pbmcgdGhlIHZhbHVlLiAKKy0gICBJZiB0aGUgdmFy aWFibGUgY2Fubm90IGJlIGZvdW5kLCByZXR1cm4gYSB6ZXJvIHBvaW50ZXIuICAqLworKyAgIElm IHRoZSB2YXJpYWJsZSBjYW5ub3QgYmUgZm91bmQsIHJldHVybiBhIHplcm8gcG9pbnRlci4KKysg ICBXZSBoYXZlIHRvIGZpcnN0IGZpbmQgdGhlIGFkZHJlc3Mgb2YgdGhlIHZhcmlhYmxlIGJlZm9y ZSBhbGxvY2F0aW5nIHN0cnVjdAorKyAgIHZhbHVlIHRvIHJldHVybiBhcyBpdHMgc2l6ZSBtYXkg ZGVwZW5kIG9uIERXX09QX1BVU0hfT0JKRUNUX0FERFJFU1MgcG9zc2libHkKKysgICB1c2VkIGJ5 IGl0cyB0eXBlLiAgKi8KKyAKKyBzdHJ1Y3QgdmFsdWUgKgorIHJlYWRfdmFyX3ZhbHVlIChzdHJ1 Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyB7CistICBzdHJ1Y3Qg dmFsdWUgKnY7CisgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IFNZTUJPTF9UWVBFICh2YXIpOworICAg Q09SRV9BRERSIGFkZHI7CistICBpbnQgbGVuOworLQorLSAgaWYgKFNZTUJPTF9DTEFTUyAodmFy KSA9PSBMT0NfQ09NUFVURUQKKy0gICAgICB8fCBTWU1CT0xfQ0xBU1MgKHZhcikgPT0gTE9DX1JF R0lTVEVSKQorLSAgICAvKiBUaGVzZSBjYXNlcyBkbyBub3QgdXNlIFYuICAqLworLSAgICB2ID0g TlVMTDsKKy0gIGVsc2UKKy0gICAgeworLSAgICAgIHYgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7 CistICAgICAgVkFMVUVfTFZBTCAodikgPSBsdmFsX21lbW9yeTsJLyogVGhlIG1vc3QgbGlrZWx5 IHBvc3NpYmlsaXR5LiAgKi8KKy0gICAgfQorLQorLSAgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUp OworIAorICAgaWYgKHN5bWJvbF9yZWFkX25lZWRzX2ZyYW1lICh2YXIpKQorICAgICBnZGJfYXNz ZXJ0IChmcmFtZSk7CitAQCAtNDI5LDMzICs0MTksNDMgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVj dCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorICAgc3dpdGNoIChTWU1C T0xfQ0xBU1MgKHZhcikpCisgICAgIHsKKyAgICAgY2FzZSBMT0NfQ09OU1Q6CistICAgICAgLyog UHV0IHRoZSBjb25zdGFudCBiYWNrIGluIHRhcmdldCBmb3JtYXQuICAqLworLSAgICAgIHN0b3Jl X3NpZ25lZF9pbnRlZ2VyICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCBsZW4sCistCQkJICAgIGdk YmFyY2hfYnl0ZV9vcmRlciAoZ2V0X3R5cGVfYXJjaCAodHlwZSkpLAorLQkJCSAgICAoTE9OR0VT VCkgU1lNQk9MX1ZBTFVFICh2YXIpKTsKKy0gICAgICBWQUxVRV9MVkFMICh2KSA9IG5vdF9sdmFs OworLSAgICAgIHJldHVybiB2OworKyAgICAgIHsKKysJLyogUHV0IHRoZSBjb25zdGFudCBiYWNr IGluIHRhcmdldCBmb3JtYXQuICAqLworKwlzdHJ1Y3QgdmFsdWUgKnYgPSBhbGxvY2F0ZV92YWx1 ZSAodHlwZSk7CisrCVZBTFVFX0xWQUwgKHYpID0gbm90X2x2YWw7CisrCXN0b3JlX3NpZ25lZF9p bnRlZ2VyICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCBUWVBFX0xFTkdUSCAodHlwZSksCisrCQkJ ICAgICAgZ2RiYXJjaF9ieXRlX29yZGVyIChnZXRfdHlwZV9hcmNoICh0eXBlKSksCisrCQkJICAg ICAgKExPTkdFU1QpIFNZTUJPTF9WQUxVRSAodmFyKSk7CisrCXJldHVybiB2OworKyAgICAgIH0K KyAKKyAgICAgY2FzZSBMT0NfTEFCRUw6CistICAgICAgLyogUHV0IHRoZSBjb25zdGFudCBiYWNr IGluIHRhcmdldCBmb3JtYXQuICAqLworLSAgICAgIGlmIChvdmVybGF5X2RlYnVnZ2luZykKKy0J eworLQkgIENPUkVfQUREUiBhZGRyCistCSAgICA9IHN5bWJvbF9vdmVybGF5ZWRfYWRkcmVzcyAo U1lNQk9MX1ZBTFVFX0FERFJFU1MgKHZhciksCistCQkJCQlTWU1CT0xfT0JKX1NFQ1RJT04gKHZh cikpOworKyAgICAgIHsKKysJLyogUHV0IHRoZSBjb25zdGFudCBiYWNrIGluIHRhcmdldCBmb3Jt YXQuICAqLworKwlzdHJ1Y3QgdmFsdWUgKnYgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7CisrCVZB TFVFX0xWQUwgKHYpID0gbm90X2x2YWw7CisrCWlmIChvdmVybGF5X2RlYnVnZ2luZykKKysJICB7 CisrCSAgICBDT1JFX0FERFIgYWRkcgorKwkgICAgICA9IHN5bWJvbF9vdmVybGF5ZWRfYWRkcmVz cyAoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKHZhciksCisrCQkJCQkgIFNZTUJPTF9PQkpfU0VDVElP TiAodmFyKSk7CisgCistCSAgc3RvcmVfdHlwZWRfYWRkcmVzcyAodmFsdWVfY29udGVudHNfcmF3 ICh2KSwgdHlwZSwgYWRkcik7CistCX0KKy0gICAgICBlbHNlCistCXN0b3JlX3R5cGVkX2FkZHJl c3MgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIHR5cGUsCistCQkJICAgICAgU1lNQk9MX1ZBTFVF X0FERFJFU1MgKHZhcikpOworLSAgICAgIFZBTFVFX0xWQUwgKHYpID0gbm90X2x2YWw7CistICAg ICAgcmV0dXJuIHY7CisrCSAgICBzdG9yZV90eXBlZF9hZGRyZXNzICh2YWx1ZV9jb250ZW50c19y YXcgKHYpLCB0eXBlLCBhZGRyKTsKKysJICB9CisrCWVsc2UKKysJICBzdG9yZV90eXBlZF9hZGRy ZXNzICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCB0eXBlLAorKwkJCQlTWU1CT0xfVkFMVUVfQURE UkVTUyAodmFyKSk7CisrCXJldHVybiB2OworKyAgICAgIH0KKyAKKyAgICAgY2FzZSBMT0NfQ09O U1RfQllURVM6CistICAgICAgbWVtY3B5ICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCBTWU1CT0xf VkFMVUVfQllURVMgKHZhciksIGxlbik7CistICAgICAgVkFMVUVfTFZBTCAodikgPSBub3RfbHZh bDsKKy0gICAgICByZXR1cm4gdjsKKysgICAgICB7CisrCXN0cnVjdCB2YWx1ZSAqdiA9IGFsbG9j YXRlX3ZhbHVlICh0eXBlKTsKKysJVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKKysJbWVtY3B5 ICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCBTWU1CT0xfVkFMVUVfQllURVMgKHZhciksCisrCQlU WVBFX0xFTkdUSCAodHlwZSkpOworKwlyZXR1cm4gdjsKKysgICAgICB9CisgCisgICAgIGNhc2Ug TE9DX1NUQVRJQzoKKyAgICAgICBpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCitAQCAtNDk2LDEyICs0 OTYsMjMgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1l X2luZm8gKmZyYW1lKQorICAgICAgIGJyZWFrOworIAorICAgICBjYXNlIExPQ19CTE9DSzoKKy0g ICAgICBpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCistCXNldF92YWx1ZV9hZGRyZXNzICh2LCBzeW1i b2xfb3ZlcmxheWVkX2FkZHJlc3MKKy0JICAoQkxPQ0tfU1RBUlQgKFNZTUJPTF9CTE9DS19WQUxV RSAodmFyKSksIFNZTUJPTF9PQkpfU0VDVElPTiAodmFyKSkpOworLSAgICAgIGVsc2UKKy0Jc2V0 X3ZhbHVlX2FkZHJlc3MgKHYsIEJMT0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tfVkFMVUUgKHZhcikp KTsKKy0gICAgICByZXR1cm4gdjsKKysgICAgICB7CisrICAgICAgICBDT1JFX0FERFIgYWRkcjsK KysJc3RydWN0IHZhbHVlICp2OworKworKwlpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCisrCSAgYWRk ciA9IHN5bWJvbF9vdmVybGF5ZWRfYWRkcmVzcworKwkgICAgKEJMT0NLX1NUQVJUIChTWU1CT0xf QkxPQ0tfVkFMVUUgKHZhcikpLCBTWU1CT0xfT0JKX1NFQ1RJT04gKHZhcikpOworKwllbHNlCisr CSAgYWRkciA9IEJMT0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tfVkFMVUUgKHZhcikpOworKwkvKiBB RERSIGlzIHNldCBoZXJlIGZvciBBTExPQ0FURV9WQUxVRSdzIENIRUNLX1RZUEVERUYgZm9yCisr CSAgIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MuICAqLworKwlvYmplY3RfYWRkcmVzc19zZXQg KGFkZHIpOworKwl2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOworKwlWQUxVRV9MVkFMICh2KSA9 IGx2YWxfbWVtb3J5OworKwlzZXRfdmFsdWVfYWRkcmVzcyAodiwgYWRkcik7CisrCXJldHVybiB2 OworKyAgICAgIH0KKyAKKyAgICAgY2FzZSBMT0NfUkVHSVNURVI6CisgICAgIGNhc2UgTE9DX1JF R1BBUk1fQUREUjoKK0BAIC01MjAsNyArNTMxLDYgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBz eW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorIAkgICAgICBlcnJvciAoXygi VmFsdWUgb2YgcmVnaXN0ZXIgdmFyaWFibGUgbm90IGF2YWlsYWJsZS4iKSk7CisgCisgCSAgICBh ZGRyID0gdmFsdWVfYXNfYWRkcmVzcyAocmVndmFsKTsKKy0JICAgIFZBTFVFX0xWQUwgKHYpID0g bHZhbF9tZW1vcnk7CisgCSAgfQorIAllbHNlCisgCSAgeworQEAgLTU2MywxOCArNTczLDMzIEBA IHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSkKKyAgICAgICBicmVhazsKKyAKKyAgICAgY2FzZSBMT0NfT1BUSU1JWkVEX09VVDoKKy0g ICAgICBWQUxVRV9MVkFMICh2KSA9IG5vdF9sdmFsOworLSAgICAgIHNldF92YWx1ZV9vcHRpbWl6 ZWRfb3V0ICh2LCAxKTsKKy0gICAgICByZXR1cm4gdjsKKysgICAgICB7CisrICAgICAgICBzdHJ1 Y3QgdmFsdWUgKnYgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7CisrCisrCVZBTFVFX0xWQUwgKHYp ID0gbm90X2x2YWw7CisrCXNldF92YWx1ZV9vcHRpbWl6ZWRfb3V0ICh2LCAxKTsKKysJcmV0dXJu IHY7CisrICAgICAgfQorIAorICAgICBkZWZhdWx0OgorICAgICAgIGVycm9yIChfKCJDYW5ub3Qg bG9vayB1cCB2YWx1ZSBvZiBhIGJvdGNoZWQgc3ltYm9sLiIpKTsKKyAgICAgICBicmVhazsKKyAg ICAgfQorIAorLSAgc2V0X3ZhbHVlX2FkZHJlc3MgKHYsIGFkZHIpOworLSAgc2V0X3ZhbHVlX2xh enkgKHYsIDEpOworLSAgcmV0dXJuIHY7CisrICB7CisrICAgIHN0cnVjdCB2YWx1ZSAqdjsKKysK KysgICAgLyogQUREUiBpcyBzZXQgaGVyZSBmb3IgQUxMT0NBVEVfVkFMVUUncyBDSEVDS19UWVBF REVGIGZvcgorKyAgICAgICBEV19PUF9QVVNIX09CSkVDVF9BRERSRVNTLiAgKi8KKysgICAgb2Jq ZWN0X2FkZHJlc3Nfc2V0IChhZGRyKTsKKysgICAgdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsK KysgICAgVkFMVUVfTFZBTCAodikgPSBsdmFsX21lbW9yeTsKKysgICAgc2V0X3ZhbHVlX2FkZHJl c3MgKHYsIGFkZHIpOworKworKyAgICBzZXRfdmFsdWVfbGF6eSAodiwgMSk7CisrCisrICAgIHJl dHVybiB2OworKyAgfQorIH0KKyAKKyAvKiBJbnN0YWxsIGRlZmF1bHQgYXR0cmlidXRlcyBmb3Ig cmVnaXN0ZXIgdmFsdWVzLiAgKi8KK0BAIC02MTEsMTAgKzYzNiwxMSBAQCBzdHJ1Y3QgdmFsdWUg KgorIHZhbHVlX2Zyb21fcmVnaXN0ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBpbnQgcmVnbnVtLCBz dHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCisgeworICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gg PSBnZXRfZnJhbWVfYXJjaCAoZnJhbWUpOworLSAgc3RydWN0IHR5cGUgKnR5cGUxID0gY2hlY2tf dHlwZWRlZiAodHlwZSk7CisgICBzdHJ1Y3QgdmFsdWUgKnY7CisgCistICBpZiAoZ2RiYXJjaF9j b252ZXJ0X3JlZ2lzdGVyX3AgKGdkYmFyY2gsIHJlZ251bSwgdHlwZTEpKQorKyAgdHlwZSA9IGNo ZWNrX3R5cGVkZWYgKHR5cGUpOworKworKyAgaWYgKGdkYmFyY2hfY29udmVydF9yZWdpc3Rlcl9w IChnZGJhcmNoLCByZWdudW0sIHR5cGUpKQorICAgICB7CisgICAgICAgLyogVGhlIElTQS9BQkkg bmVlZCB0byBzb21ldGhpbmcgd2VpcmQgd2hlbiBvYnRhaW5pbmcgdGhlCisgICAgICAgICAgc3Bl Y2lmaWVkIHZhbHVlIGZyb20gdGhpcyByZWdpc3Rlci4gIEl0IG1pZ2h0IG5lZWQgdG8KK0BAIC02 MjgsNyArNjU0LDcgQEAgdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUgKnR5cGUsIGlu dCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyAgICAgICBWQUxVRV9GUkFNRV9J RCAodikgPSBnZXRfZnJhbWVfaWQgKGZyYW1lKTsKKyAgICAgICBWQUxVRV9SRUdOVU0gKHYpID0g cmVnbnVtOworICAgICAgIGdkYmFyY2hfcmVnaXN0ZXJfdG9fdmFsdWUgKGdkYmFyY2gsCistCQkJ CSBmcmFtZSwgcmVnbnVtLCB0eXBlMSwgdmFsdWVfY29udGVudHNfcmF3ICh2KSk7CisrCQkJCSBm cmFtZSwgcmVnbnVtLCB0eXBlLCB2YWx1ZV9jb250ZW50c19yYXcgKHYpKTsKKyAgICAgfQorICAg ZWxzZQorICAgICB7CitkaWZmIC0tZ2l0IGEvZ2RiL2dkYmNtZC5oIGIvZ2RiL2dkYmNtZC5oCitp bmRleCA2YTIzMGMwLi5kODdhODEzIDEwMDY0NAorLS0tIGEvZ2RiL2dkYmNtZC5oCisrKysgYi9n ZGIvZ2RiY21kLmgKK0BAIC0xMjQsNiArMTI0LDEwIEBAIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3Rf ZWxlbWVudCAqc2V0Y2hlY2tsaXN0OworIAorIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVu dCAqc2hvd2NoZWNrbGlzdDsKKyAKKysvKiBDaGFpbiBjb250YWluaW5nIGFsbCBkZWZpbmVkICJz YXZlIiBzdWJjb21tYW5kcy4gICovCisrCisrZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50 ICpzYXZlX2NtZGxpc3Q7CisrCisgZXh0ZXJuIHZvaWQgZXhlY3V0ZV9jb21tYW5kIChjaGFyICos IGludCk7CisgCisgZW51bSBjb21tYW5kX2NvbnRyb2xfdHlwZSBleGVjdXRlX2NvbnRyb2xfY29t bWFuZCAoc3RydWN0IGNvbW1hbmRfbGluZSAqKTsKK2RpZmYgLS1naXQgYS9nZGIvZ2RiaW5pdC5p biBiL2dkYi9nZGJpbml0LmluCitpbmRleCBmZmI3ZjUzLi5hMmU3ZTk0IDEwMDY0NAorLS0tIGEv Z2RiL2dkYmluaXQuaW4KKysrKyBiL2dkYi9nZGJpbml0LmluCitAQCAtMSw1ICsxLDE1IEBACisg ZWNobyBTZXR0aW5nIHVwIHRoZSBlbnZpcm9ubWVudCBmb3IgZGVidWdnaW5nIGdkYi5cbgorIAor KyMgU2V0IHVwIHRoZSBQeXRob24gbGlicmFyeSBhbmQgInJlcXVpcmUiIGNvbW1hbmQuCisrcHl0 aG9uCisrZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNwYXRoCisrZ2RiLmRhdGFkaXIgPSBhYnNwYXRo ICgnQHNyY2RpckAvcHl0aG9uL2xpYicpCisrZ2RiLnB5dGhvbmxpYmRpciA9IGdkYi5kYXRhZGly CisrZ2RiLl9fcGF0aF9fID0gW2dkYi5kYXRhZGlyICsgJy9nZGInXQorK3N5cy5wYXRoLmluc2Vy dCgwLCBnZGIuZGF0YWRpcikKKytlbmQKKytzb3VyY2UgQHNyY2RpckAvcHl0aG9uL2xpYi9nZGIv X19pbml0X18ucHkKKysKKyBzZXQgY29tcGxhaW50cyAxCisgCisgYiBpbnRlcm5hbF9lcnJvcgor ZGlmZiAtLWdpdCBhL2dkYi9nZGJ0aHJlYWQuaCBiL2dkYi9nZGJ0aHJlYWQuaAoraW5kZXggY2Qy NGVhZi4uOTYzODM2OCAxMDA2NDQKKy0tLSBhL2dkYi9nZGJ0aHJlYWQuaAorKysrIGIvZ2RiL2dk YnRocmVhZC5oCitAQCAtNjYsNiArNjYsOSBAQCBzdHJ1Y3QgdGhyZWFkX2luZm8KKyAgIC8qIFN0 ZXAtcmVzdW1lIG9yIGxvbmdqbXAtcmVzdW1lIGJyZWFrcG9pbnQuICAqLworICAgc3RydWN0IGJy ZWFrcG9pbnQgKnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQ7CisgCisrICAvKiBFeGNlcHRpb24tcmVz dW1lIGJyZWFrcG9pbnQuICAqLworKyAgc3RydWN0IGJyZWFrcG9pbnQgKmV4Y2VwdGlvbl9yZXN1 bWVfYnJlYWtwb2ludDsKKysKKyAgIC8qIFJhbmdlIHRvIHNpbmdsZSBzdGVwIHdpdGhpbi4KKyAK KyAgICAgIElmIHRoaXMgaXMgbm9uemVybywgcmVzcG9uZCB0byBhIHNpbmdsZS1zdGVwIHNpZ25h bCBieSBjb250aW51aW5nCitAQCAtMTg1LDYgKzE4OCwxMCBAQCBzdHJ1Y3QgdGhyZWFkX2luZm8K KyAgIC8qIFRydWUgaWYgdGhpcyB0aHJlYWQgaGFzIGJlZW4gZXhwbGljaXRseSByZXF1ZXN0ZWQg dG8gc3RvcC4gICovCisgICBpbnQgc3RvcF9yZXF1ZXN0ZWQ7CisgCisrICAvKiBUaGUgaW5pdGlh dGluZyBmcmFtZSBvZiBhIG5leHRpbmcgb3BlcmF0aW9uLCB1c2VkIGZvciBkZWNpZGluZworKyAg ICAgd2hpY2ggZXhjZXB0aW9ucyB0byBpbnRlcmNlcHQuICAqLworKyAgc3RydWN0IGZyYW1lX2lk IGluaXRpYXRpbmdfZnJhbWU7CisrCisgICAvKiBQcml2YXRlIGRhdGEgdXNlZCBieSB0aGUgdGFy Z2V0IHZlY3RvciBpbXBsZW1lbnRhdGlvbi4gICovCisgICBzdHJ1Y3QgcHJpdmF0ZV90aHJlYWRf aW5mbyAqcHJpdmF0ZTsKKyAKK0BAIC0yMjEsNiArMjI4LDkgQEAgZXh0ZXJuIHZvaWQgZGVsZXRl X3RocmVhZF9zaWxlbnQgKHB0aWRfdCk7CisgLyogRGVsZXRlIGEgc3RlcF9yZXN1bWVfYnJlYWtw b2ludCBmcm9tIHRoZSB0aHJlYWQgZGF0YWJhc2UuICovCisgZXh0ZXJuIHZvaWQgZGVsZXRlX3N0 ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVjdCB0aHJlYWRfaW5mbyAqKTsKKyAKKysvKiBEZWxl dGUgYW4gZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IGZyb20gdGhlIHRocmVhZCBkYXRhYmFz ZS4gKi8KKytleHRlcm4gdm9pZCBkZWxldGVfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChz dHJ1Y3QgdGhyZWFkX2luZm8gKik7CisrCisgLyogVHJhbnNsYXRlIHRoZSBpbnRlZ2VyIHRocmVh ZCBpZCAoR0RCJ3MgaG9tZWdyb3duIGlkLCBub3QgdGhlIHN5c3RlbSdzKQorICAgIGludG8gYSAi cGlkIiAod2hpY2ggbWF5IGJlIG92ZXJsb2FkZWQgd2l0aCBleHRyYSB0aHJlYWQgaW5mb3JtYXRp b24pLiAgKi8KKyBleHRlcm4gcHRpZF90IHRocmVhZF9pZF90b19waWQgKGludCk7CitkaWZmIC0t Z2l0IGEvZ2RiL2dkYnR5cGVzLmMgYi9nZGIvZ2RidHlwZXMuYworaW5kZXggNDQzZjZmNy4uZDg1 MmExNCAxMDA2NDQKKy0tLSBhL2dkYi9nZGJ0eXBlcy5jCisrKysgYi9nZGIvZ2RidHlwZXMuYwor QEAgLTM5LDYgKzM5LDkgQEAKKyAjaW5jbHVkZSAiY3AtYWJpLmgiCisgI2luY2x1ZGUgImdkYl9h c3NlcnQuaCIKKyAjaW5jbHVkZSAiaGFzaHRhYi5oIgorKyNpbmNsdWRlICJvYnNlcnZlci5oIgor KyNpbmNsdWRlICJkd2FyZjJleHByLmgiCisrI2luY2x1ZGUgImR3YXJmMmxvYy5oIgorIAorIAor IC8qIEZsb2F0Zm9ybWF0IHBhaXJzLiAgKi8KK0BAIC0xMjMsNiArMTI2LDExIEBAIHN0YXRpYyB2 b2lkIHByaW50X2FyZ190eXBlcyAoc3RydWN0IGZpZWxkICosIGludCwgaW50KTsKKyBzdGF0aWMg dm9pZCBkdW1wX2ZuX2ZpZWxkbGlzdHMgKHN0cnVjdCB0eXBlICosIGludCk7Cisgc3RhdGljIHZv aWQgcHJpbnRfY3BsdXNfc3R1ZmYgKHN0cnVjdCB0eXBlICosIGludCk7CisgCisrLyogVGhlIGhh c2ggdGFibGUgaG9sZGluZyBhbGwgZGlzY2FyZGFibGUgYHN0cnVjdCB0eXBlIConIHJlZmVyZW5j ZXMuICAqLworK3N0YXRpYyBodGFiX3QgdHlwZV9kaXNjYXJkYWJsZV90YWJsZTsKKysKKysvKiBD dXJyZW50IHR5cGVfZGlzY2FyZGFibGVfY2hlY2sgcGFzcyB1c2VkIGZvciBUWVBFX0RJU0NBUkRB QkxFX0FHRS4gICovCisrc3RhdGljIGludCB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50Owor IAorIC8qIEFsbG9jYXRlIGEgbmV3IE9CSkZJTEUtYXNzb2NpYXRlZCB0eXBlIHN0cnVjdHVyZSBh bmQgZmlsbCBpdAorICAgIHdpdGggc29tZSBkZWZhdWx0cy4gIFNwYWNlIGZvciB0aGUgdHlwZSBz dHJ1Y3R1cmUgaXMgYWxsb2NhdGVkCitAQCAtMTUzLDYgKzE2MSwzOSBAQCBhbGxvY190eXBlIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyAgIHJldHVybiB0eXBlOworIH0KKyAKKysvKiBEZWNs YXJlIFRZUEUgYXMgZGlzY2FyZGFibGUgb24gbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gYnkgZnJl ZV9hbGxfdHlwZXMuCisrICAgWW91IG11c3QgY2FsbCB0eXBlX21hcmtfdXNlZCBkdXJpbmcgZWFj aCBmcmVlX2FsbF90eXBlcyB0byBwcm90ZWN0IFRZUEUgZnJvbQorKyAgIGJlaW5nIGRlYWxsb2Nh dGVkLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3NldF90eXBlX2FzX2Rpc2NhcmRhYmxlIChzdHJ1 Y3QgdHlwZSAqdHlwZSkKKyt7CisrICB2b2lkICoqc2xvdDsKKysKKysgIGdkYl9hc3NlcnQgKCFU WVBFX0RJU0NBUkRBQkxFICh0eXBlKSk7CisrCisrICBUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSA9 IDE7CisrICBUWVBFX0RJU0NBUkRBQkxFX0FHRSAodHlwZSkgPSB0eXBlX2Rpc2NhcmRhYmxlX2Fn ZV9jdXJyZW50OworKworKyAgc2xvdCA9IGh0YWJfZmluZF9zbG90ICh0eXBlX2Rpc2NhcmRhYmxl X3RhYmxlLCB0eXBlLCBJTlNFUlQpOworKyAgZ2RiX2Fzc2VydCAoISpzbG90KTsKKysgICpzbG90 ID0gdHlwZTsKKyt9CisrCisrLyogQWxsb2NhdGUgYSBuZXcgdHlwZSBsaWtlIGFsbG9jX3R5cGUg YnV0IHByZXNlcnZlIGZvciBpdCB0aGUgZGlzY2FyZGFiaWxpdHkKKysgICBzdGF0ZSBvZiBQQVJF TlRfVFlQRS4gICovCisrCisrc3RhdGljIHN0cnVjdCB0eXBlICoKKythbGxvY190eXBlX2FzX3Bh cmVudCAoc3RydWN0IHR5cGUgKnBhcmVudF90eXBlKQorK3sKKysgIHN0cnVjdCB0eXBlICpuZXdf dHlwZSA9IGFsbG9jX3R5cGVfY29weSAocGFyZW50X3R5cGUpOworKworKyAgaWYgKFRZUEVfRElT Q0FSREFCTEUgKHBhcmVudF90eXBlKSkKKysgICAgc2V0X3R5cGVfYXNfZGlzY2FyZGFibGUgKG5l d190eXBlKTsKKysKKysgIHJldHVybiBuZXdfdHlwZTsKKyt9CisrCisgLyogQWxsb2NhdGUgYSBu ZXcgR0RCQVJDSC1hc3NvY2lhdGVkIHR5cGUgc3RydWN0dXJlIGFuZCBmaWxsIGl0CisgICAgd2l0 aCBzb21lIGRlZmF1bHRzLiAgU3BhY2UgZm9yIHRoZSB0eXBlIHN0cnVjdHVyZSBpcyBhbGxvY2F0 ZWQKKyAgICBvbiB0aGUgaGVhcC4gICovCitAQCAtMjc4LDcgKzMxOSw3IEBAIG1ha2VfcG9pbnRl cl90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKip0eXBlcHRyKQorIAorICAg aWYgKHR5cGVwdHIgPT0gMCB8fCAqdHlwZXB0ciA9PSAwKQkvKiBXZSdsbCBuZWVkIHRvIGFsbG9j YXRlIG9uZS4gICovCisgICAgIHsKKy0gICAgICBudHlwZSA9IGFsbG9jX3R5cGVfY29weSAodHlw ZSk7CisrICAgICAgbnR5cGUgPSBhbGxvY190eXBlX2FzX3BhcmVudCAodHlwZSk7CisgICAgICAg aWYgKHR5cGVwdHIpCisgCSp0eXBlcHRyID0gbnR5cGU7CisgICAgIH0KK0BAIC0zNTUsNyArMzk2 LDcgQEAgbWFrZV9yZWZlcmVuY2VfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBl ICoqdHlwZXB0cikKKyAKKyAgIGlmICh0eXBlcHRyID09IDAgfHwgKnR5cGVwdHIgPT0gMCkJLyog V2UnbGwgbmVlZCB0byBhbGxvY2F0ZSBvbmUuICAqLworICAgICB7CistICAgICAgbnR5cGUgPSBh bGxvY190eXBlX2NvcHkgKHR5cGUpOworKyAgICAgIG50eXBlID0gYWxsb2NfdHlwZV9hc19wYXJl bnQgKHR5cGUpOworICAgICAgIGlmICh0eXBlcHRyKQorIAkqdHlwZXB0ciA9IG50eXBlOworICAg ICB9CitAQCAtNzI2LDYgKzc2Nyw3IEBAIGNyZWF0ZV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAq cmVzdWx0X3R5cGUsIHN0cnVjdCB0eXBlICppbmRleF90eXBlLAorICAgICBUWVBFX1pBTExPQyAo cmVzdWx0X3R5cGUsIHNpemVvZiAoc3RydWN0IHJhbmdlX2JvdW5kcykpOworICAgVFlQRV9MT1df Qk9VTkQgKHJlc3VsdF90eXBlKSA9IGxvd19ib3VuZDsKKyAgIFRZUEVfSElHSF9CT1VORCAocmVz dWx0X3R5cGUpID0gaGlnaF9ib3VuZDsKKysgIFRZUEVfQllURV9TVFJJREUgKHJlc3VsdF90eXBl KSA9IDA7CisgCisgICBpZiAobG93X2JvdW5kID49IDApCisgICAgIFRZUEVfVU5TSUdORUQgKHJl c3VsdF90eXBlKSA9IDE7CitAQCAtODI1LDI2ICs4NjcsNDUgQEAgY3JlYXRlX2FycmF5X3R5cGUg KHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwKKyAKKyAgIFRZUEVfQ09ERSAocmVzdWx0X3R5cGUp ID0gVFlQRV9DT0RFX0FSUkFZOworICAgVFlQRV9UQVJHRVRfVFlQRSAocmVzdWx0X3R5cGUpID0g ZWxlbWVudF90eXBlOworLSAgaWYgKGdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZs b3dfYm91bmQsICZoaWdoX2JvdW5kKSA8IDApCistICAgIGxvd19ib3VuZCA9IGhpZ2hfYm91bmQg PSAwOworLSAgQ0hFQ0tfVFlQRURFRiAoZWxlbWVudF90eXBlKTsKKy0gIC8qIEJlIGNhcmVmdWwg d2hlbiBzZXR0aW5nIHRoZSBhcnJheSBsZW5ndGguICBBZGEgYXJyYXlzIGNhbiBiZQorLSAgICAg ZW1wdHkgYXJyYXlzIHdpdGggdGhlIGhpZ2hfYm91bmQgYmVpbmcgc21hbGxlciB0aGFuIHRoZSBs b3dfYm91bmQuCistICAgICBJbiBzdWNoIGNhc2VzLCB0aGUgYXJyYXkgbGVuZ3RoIHNob3VsZCBi ZSB6ZXJvLiAgKi8KKy0gIGlmIChoaWdoX2JvdW5kIDwgbG93X2JvdW5kKQorLSAgICBUWVBFX0xF TkdUSCAocmVzdWx0X3R5cGUpID0gMDsKKy0gIGVsc2UKKy0gICAgVFlQRV9MRU5HVEggKHJlc3Vs dF90eXBlKSA9CistICAgICAgVFlQRV9MRU5HVEggKGVsZW1lbnRfdHlwZSkgKiAoaGlnaF9ib3Vu ZCAtIGxvd19ib3VuZCArIDEpOworICAgVFlQRV9ORklFTERTIChyZXN1bHRfdHlwZSkgPSAxOwor ICAgVFlQRV9GSUVMRFMgKHJlc3VsdF90eXBlKSA9CisgICAgIChzdHJ1Y3QgZmllbGQgKikgVFlQ RV9aQUxMT0MgKHJlc3VsdF90eXBlLCBzaXplb2YgKHN0cnVjdCBmaWVsZCkpOworICAgVFlQRV9J TkRFWF9UWVBFIChyZXN1bHRfdHlwZSkgPSByYW5nZV90eXBlOworICAgVFlQRV9WUFRSX0ZJRUxE Tk8gKHJlc3VsdF90eXBlKSA9IC0xOworIAorLSAgLyogVFlQRV9GTEFHX1RBUkdFVF9TVFVCIHdp bGwgdGFrZSBjYXJlIG9mIHplcm8gbGVuZ3RoIGFycmF5cyAqLworKyAgLyogRFdBUkYgYmxvY2tz IG1heSBkZXBlbmQgb24gcnVudGltZSBpbmZvcm1hdGlvbiBsaWtlCisrICAgICBEV19PUF9QVVNI X09CSkVDVF9BRERSRVNTIG5vdCBiZWluZyBhdmFpbGFibGUgZHVyaW5nIHRoZQorKyAgICAgQ1JF QVRFX0FSUkFZX1RZUEUgdGltZS4gICovCisrICBpZiAoVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90 eXBlKS0+bG93LmtpbmQgIT0gUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVAorKyAgICAgIHx8IFRZ UEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gua2luZCAhPSBSQU5HRV9CT1VORF9LSU5E X0NPTlNUQU5UCisrICAgICAgfHwgVFlQRV9MT1dfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBl KSAKKysgICAgICB8fCBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSAKKysg ICAgICB8fCBnZXRfZGlzY3JldGVfYm91bmRzIChyYW5nZV90eXBlLCAmbG93X2JvdW5kLCAmaGln aF9ib3VuZCkgPCAwKQorKyAgICB7CisrICAgICAgbG93X2JvdW5kID0gMDsKKysgICAgICBoaWdo X2JvdW5kID0gLTE7CisrICAgIH0KKysKKysgIC8qIEJlIGNhcmVmdWwgd2hlbiBzZXR0aW5nIHRo ZSBhcnJheSBsZW5ndGguICBBZGEgYXJyYXlzIGNhbiBiZQorKyAgICAgZW1wdHkgYXJyYXlzIHdp dGggdGhlIGhpZ2hfYm91bmQgYmVpbmcgc21hbGxlciB0aGFuIHRoZSBsb3dfYm91bmQuCisrICAg ICBJbiBzdWNoIGNhc2VzLCB0aGUgYXJyYXkgbGVuZ3RoIHNob3VsZCBiZSB6ZXJvLiAgVFlQRV9U QVJHRVRfU1RVQiBuZWVkcyB0bworKyAgICAgYmUgY2hlY2tlZCBhcyBpdCBtYXkgaGF2ZSBkZXBl bmRlbmNpZXMgb24gRFdBUkYgYmxvY2tzIGRlcGVuZGluZyBvbgorKyAgICAgcnVudGltZSBpbmZv cm1hdGlvbiBub3QgYXZhaWxhYmxlIGR1cmluZyB0aGUgQ1JFQVRFX0FSUkFZX1RZUEUgdGltZS4g ICovCisrICBpZiAoaGlnaF9ib3VuZCA8IGxvd19ib3VuZCB8fCBUWVBFX1RBUkdFVF9TVFVCIChl bGVtZW50X3R5cGUpKQorKyAgICBUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUpID0gMDsKKysgIGVs c2UKKysgICAgeworKyAgICAgIENIRUNLX1RZUEVERUYgKGVsZW1lbnRfdHlwZSk7CisrICAgICAg VFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9CisrCVRZUEVfTEVOR1RIIChlbGVtZW50X3R5cGUp ICogKGhpZ2hfYm91bmQgLSBsb3dfYm91bmQgKyAxKTsKKysgICAgfQorKworICAgaWYgKFRZUEVf TEVOR1RIIChyZXN1bHRfdHlwZSkgPT0gMCkKKy0gICAgVFlQRV9UQVJHRVRfU1RVQiAocmVzdWx0 X3R5cGUpID0gMTsKKysgICAgeworKyAgICAgIC8qIFRoZSByZWFsIHNpemUgd2lsbCBiZSBjb21w dXRlZCBmb3Igc3BlY2lmaWMgaW5zdGFuY2VzIGJ5CisrCSBDSEVDS19UWVBFREVGLiAgKi8KKysg ICAgICBUWVBFX1RBUkdFVF9TVFVCIChyZXN1bHRfdHlwZSkgPSAxOworKyAgICB9CisgCisgICBy ZXR1cm4gcmVzdWx0X3R5cGU7CisgfQorQEAgLTEzNTMsNiArMTQxNCwxMDUgQEAgc3R1Yl9ub25h bWVfY29tcGxhaW50ICh2b2lkKQorICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBf KCJzdHViIHR5cGUgaGFzIE5VTEwgbmFtZSIpKTsKKyB9CisgCisrLyogQ2FsY3VsYXRlIHRoZSBt ZW1vcnkgbGVuZ3RoIG9mIGFycmF5IFRZUEUuCisrCisrICAgVEFSR0VUX1RZUEUgc2hvdWxkIGJl IHNldCB0byBgY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpJyBhcworKyAg IGEgcGVyZm9ybWFuY2UgaGludC4gIEZlZWwgZnJlZSB0byBwYXNzIE5VTEwuICBTZXQgRlVMTF9T UEFOIHRvIHJldHVybiB0aGUKKysgICBzaXplIGluY2wuIHRoZSBwb3NzaWJsZSBwYWRkaW5nIG9m IHRoZSBsYXN0IGVsZW1lbnQgLSBpdCBtYXkgZGlmZmVyIGZyb20gdGhlCisrICAgY2xlYXJlZCBG VUxMX1NQQU4gcmV0dXJuIHZhbHVlICh0aGUgZXhwZWN0ZWQgU0laRU9GKSBmb3Igbm9uLXplcm8K KysgICBUWVBFX0JZVEVfU1RSSURFIHZhbHVlcy4gICovCisrCisrc3RhdGljIExPTkdFU1QKKyt0 eXBlX2xlbmd0aF9nZXQgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5 cGUsIGludCBmdWxsX3NwYW4pCisreworKyAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGU7CisrICBM T05HRVNUIGJ5dGVfc3RyaWRlID0gMDsJLyogYD0gMCcgZm9yIGEgZmFsc2UgR0NDIHdhcm5pbmcu ICAqLworKyAgTE9OR0VTVCBjb3VudCwgZWxlbWVudF9zaXplLCByZXR2YWw7CisrCisrICBpZiAo VFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfQVJSQVkKKysgICAgICAmJiBUWVBFX0NPREUg KHR5cGUpICE9IFRZUEVfQ09ERV9TVFJJTkcpCisrICAgIHJldHVybiBUWVBFX0xFTkdUSCAodHlw ZSk7CisrCisrICAvKiBBdm9pZCBleGVjdXRpbmcgVFlQRV9ISUdIX0JPVU5EIGZvciBpbnZhbGlk ICh1bmFsbG9jYXRlZC91bmFzc29jaWF0ZWQpCisrICAgICBGb3J0cmFuIGFycmF5cy4gIFRoZSBh bGxvY2F0ZWQgZGF0YSB3aWxsIG5ldmVyIGJlIHVzZWQgc28gdGhleSBjYW4gYmUKKysgICAgIHpl cm8tbGVuZ3RoLiAgKi8KKysgIGlmIChvYmplY3RfYWRkcmVzc19kYXRhX25vdF92YWxpZCAodHlw ZSkpCisrICAgIHJldHVybiAwOworKworKyAgcmFuZ2VfdHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAo dHlwZSk7CisrICBpZiAoVFlQRV9MT1dfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKQorKyAg ICAgIHx8IFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUpKQorKyAgICByZXR1 cm4gMDsKKysgIGNvdW50ID0gVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSAtIFRZUEVfTE9X X0JPVU5EIChyYW5nZV90eXBlKSArIDE7CisrICAvKiBJdCBtYXkgaGFwcGVuIGZvciB3cm9uZyBE V0FSRiBhbm5vdGF0aW9ucyByZXR1cm5pbmcgZ2FyYmFnZSBkYXRhLiAgKi8KKysgIGlmIChjb3Vu dCA8IDApCisrICAgIHdhcm5pbmcgKF8oIlJhbmdlIGZvciB0eXBlICVzIGhhcyBpbnZhbGlkIGJv dW5kcyAlcy4uJXMiKSwKKysJICAgICBUWVBFX05BTUUgKHR5cGUpLCBwbG9uZ2VzdCAoVFlQRV9M T1dfQk9VTkQgKHJhbmdlX3R5cGUpKSwKKysJICAgICBwbG9uZ2VzdCAoVFlQRV9ISUdIX0JPVU5E IChyYW5nZV90eXBlKSkpOworKyAgLyogVGhlIGNvZGUgYmVsb3cgZG9lcyBub3QgaGFuZGxlIGNv dW50ID09IDAgcmlnaHQuICAqLworKyAgaWYgKGNvdW50IDw9IDApCisrICAgIHJldHVybiAwOwor KyAgaWYgKGZ1bGxfc3BhbiB8fCBjb3VudCA+IDEpCisrICAgIHsKKysgICAgICAvKiBXZSBkbyBu b3QgdXNlIFRZUEVfQVJSQVlfQllURV9TVFJJREVfVkFMVUUgKHR5cGUpIGhlcmUgYXMgd2Ugd2Fu dCB0bworKyAgICAgICAgIGZvcmNlIEZVTExfU1BBTiB0byAxLiAgKi8KKysgICAgICBieXRlX3N0 cmlkZSA9IFRZUEVfQllURV9TVFJJREUgKHJhbmdlX3R5cGUpOworKyAgICAgIGlmIChieXRlX3N0 cmlkZSA9PSAwKQorKyAgICAgICAgeworKwkgIGlmICh0YXJnZXRfdHlwZSA9PSBOVUxMKQorKwkg ICAgdGFyZ2V0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7 CisrCSAgYnl0ZV9zdHJpZGUgPSB0eXBlX2xlbmd0aF9nZXQgKHRhcmdldF90eXBlLCBOVUxMLCAx KTsKKysJfQorKyAgICB9CisrCisrICAvKiBGb3Igbm93LCB3ZSBjb25zZXJ2YXRpdmVseSB0YWtl IHRoZSBhcnJheSBsZW5ndGggdG8gYmUgMCBpZiBpdHMgbGVuZ3RoCisrICAgICBleGNlZWRzIFVJ TlRfTUFYLiAgVGhlIGNvZGUgYmVsb3cgYXNzdW1lcyB0aGF0IGZvciB4IDwgMCwKKysgICAgIChV TE9OR0VTVCkgeCA9PSAteCArIFVMT05HRVNUX01BWCArIDEsIHdoaWNoIGlzIHRlY2huaWNhbGx5 IG5vdCBndWFyYW50ZWVkCisrICAgICBieSBDLCBidXQgaXMgdXN1YWxseSB0cnVlIChiZWNhdXNl IGl0IHdvdWxkIGJlIHRydWUgaWYgeCB3ZXJlIHVuc2lnbmVkCisrICAgICB3aXRoIGl0cyBoaWdo LW9yZGVyIGJpdCBvbikuIEl0IHVzZXMgdGhlIGZhY3QgdGhhdCBoaWdoX2JvdW5kLWxvd19ib3Vu ZCBpcworKyAgICAgYWx3YXlzIHJlcHJlc2VudGFibGUgaW4gVUxPTkdFU1QgYW5kIHRoYXQgaWYg aGlnaF9ib3VuZC1sb3dfYm91bmQrMQorKyAgICAgb3ZlcmZsb3dzLCBpdCBvdmVyZmxvd3MgdG8g MC4gIFdlIG11c3QgY2hhbmdlIHRoZXNlIHRlc3RzIGlmIHdlIGRlY2lkZSB0bworKyAgICAgaW5j cmVhc2UgdGhlIHJlcHJlc2VudGF0aW9uIG9mIFRZUEVfTEVOR1RIIGZyb20gdW5zaWduZWQgaW50 IHRvIFVMT05HRVNULgorKyAgICAgKi8KKysKKysgIGlmIChmdWxsX3NwYW4pCisrICAgIHsKKysg ICAgICByZXR2YWwgPSBjb3VudCAqIGJ5dGVfc3RyaWRlOworKyAgICAgIGlmIChjb3VudCA9PSAw IHx8IHJldHZhbCAvIGNvdW50ICE9IGJ5dGVfc3RyaWRlIHx8IHJldHZhbCA+IFVJTlRfTUFYKQor KwlyZXR2YWwgPSAwOworKyAgICAgIHJldHVybiByZXR2YWw7CisrICAgIH0KKysgIGlmICh0YXJn ZXRfdHlwZSA9PSBOVUxMKQorKyAgICB0YXJnZXRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVf VEFSR0VUX1RZUEUgKHR5cGUpKTsKKysgIGVsZW1lbnRfc2l6ZSA9IHR5cGVfbGVuZ3RoX2dldCAo dGFyZ2V0X3R5cGUsIE5VTEwsIDEpOworKyAgcmV0dmFsID0gKGNvdW50IC0gMSkgKiBieXRlX3N0 cmlkZSArIGVsZW1lbnRfc2l6ZTsKKysgIGlmIChyZXR2YWwgPCBlbGVtZW50X3NpemUKKysgICAg ICB8fCAoYnl0ZV9zdHJpZGUgIT0gMAorKyAgICAgICAgICAmJiAocmV0dmFsIC0gZWxlbWVudF9z aXplKSAvIGJ5dGVfc3RyaWRlICE9IGNvdW50IC0gMSkKKysgICAgICB8fCByZXR2YWwgPiBVSU5U X01BWCkKKysgICAgcmV0dmFsID0gMDsKKysgIHJldHVybiByZXR2YWw7CisrfQorKworKy8qIFBy ZXBhcmUgVFlQRSBhZnRlciBiZWluZyByZWFkIGluIGJ5IHRoZSBiYWNrZW5kLiAgQ3VycmVudGx5 IHRoaXMgZnVuY3Rpb24KKysgICBvbmx5IHByb3BhZ2F0ZXMgdGhlIFRZUEVfRFlOQU1JQyBmbGFn LiAgKi8KKysKKyt2b2lkCisrZmluYWxpemVfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUpCisrewor KyAgaW50IGk7CisrCisrICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9ORklFTERTICh0eXBlKTsgKytp KQorKyAgICBpZiAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSAmJiBUWVBFX0RZTkFNSUMgKFRZ UEVfRklFTERfVFlQRSAodHlwZSwgaSkpKQorKyAgICAgIGJyZWFrOworKworKyAgLyogRklYTUU6 IGNwbHVzX3N0dWZmIGlzIGlnbm9yZWQgaGVyZS4gICovCisrICBpZiAoaSA8IFRZUEVfTkZJRUxE UyAodHlwZSkKKysgICAgICB8fCAoVFlQRV9WUFRSX0JBU0VUWVBFICh0eXBlKSAmJiBUWVBFX0RZ TkFNSUMgKFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSkpKQorKyAgICAgIHx8IChUWVBFX1RBUkdF VF9UWVBFICh0eXBlKSAmJiBUWVBFX0RZTkFNSUMgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSkp CisrICAgIFRZUEVfRFlOQU1JQyAodHlwZSkgPSAxOworK30KKysKKyAvKiBBZGRlZCBieSBCcnlh biBCb3JlaGFtLCBLZXdpbGwsIFN1biBTZXAgMTcgMTg6MDc6MTcgMTk4OS4KKyAKKyAgICBJZiB0 aGlzIGlzIGEgc3R1YmJlZCBzdHJ1Y3QgKGkuZS4gZGVjbGFyZWQgYXMgc3RydWN0IGZvbyAqKSwg c2VlIGlmCitAQCAtMTQ4Niw1MiArMTY0NiwzNiBAQCBjaGVja190eXBlZGVmIChzdHJ1Y3QgdHlw ZSAqdHlwZSkKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgaWYgKFRZUEVfVEFSR0VUX1NUVUIg KHR5cGUpKQorKyAgLyogY29weV90eXBlX3JlY3Vyc2l2ZSBhdXRvbWF0aWNhbGx5IG1ha2VzIHRo ZSByZXN1bHRpbmcgdHlwZSBjb250YWluaW5nIG9ubHkKKysgICAgIGNvbnN0YW50IHZhbHVlcyBl eHBlY3RlZCBieSB0aGUgY2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9uLiAgKi8KKysgIGlmIChUWVBF X0RZTkFNSUMgKHR5cGUpKQorKyAgICB7CisrICAgICAgaHRhYl90IGNvcGllZF90eXBlczsKKysg ICAgICBzdHJ1Y3QgdHlwZSAqdHlwZV9vbGQgPSB0eXBlOworKworKyAgICAgIGNvcGllZF90eXBl cyA9IGNyZWF0ZV9jb3BpZWRfdHlwZXNfaGFzaCAoTlVMTCk7CisrICAgICAgdHlwZSA9IGNvcHlf dHlwZV9yZWN1cnNpdmUgKHR5cGUsIGNvcGllZF90eXBlcyk7CisrICAgICAgaHRhYl9kZWxldGUg KGNvcGllZF90eXBlcyk7CisrCisrICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9EWU5BTUlDICh0eXBl KSA9PSAwKTsKKysgICAgfQorKworKyAgaWYgKFRZUEVfVEFSR0VUX1NUVUIgKHR5cGUpIHx8IFRZ UEVfRFlOQU1JQyAodHlwZSkpCisgICAgIHsKKy0gICAgICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlw ZTsKKyAgICAgICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBF X1RBUkdFVF9UWVBFICh0eXBlKSk7CiAgCi0gc3RydWN0IHZhbHVlICoKLSByZWFkX3Zhcl92YWx1 ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gewotLSAg c3RydWN0IHZhbHVlICp2OwotICAgc3RydWN0IHR5cGUgKnR5cGUgPSBTWU1CT0xfVFlQRSAodmFy KTsKLSAgIENPUkVfQUREUiBhZGRyOwotLSAgaW50IGxlbjsKKysgICAgICBpZiAoVFlQRV9EWU5B TUlDICh0eXBlKSkKKysJVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkgPSB0YXJnZXRfdHlwZTsKKyAg ICAgICBpZiAoVFlQRV9TVFVCICh0YXJnZXRfdHlwZSkgfHwgVFlQRV9UQVJHRVRfU1RVQiAodGFy Z2V0X3R5cGUpKQorIAl7CisgCSAgLyogRW1wdHkuICAqLworIAl9CisgICAgICAgZWxzZSBpZiAo VFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkKKy0JICAgICAgICYmIFRZUEVfTkZJ RUxEUyAodHlwZSkgPT0gMQorLQkgICAgICAgJiYgKFRZUEVfQ09ERSAocmFuZ2VfdHlwZSA9IFRZ UEVfSU5ERVhfVFlQRSAodHlwZSkpCistCQkgICA9PSBUWVBFX0NPREVfUkFOR0UpKQorKwkgICAg ICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfU1RSSU5HKQorIAl7CisgCSAgLyog Tm93IHJlY29tcHV0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheSB0eXBlLCBiYXNlZCBvbiBpdHMK Ky0JICAgICBudW1iZXIgb2YgZWxlbWVudHMgYW5kIHRoZSB0YXJnZXQgdHlwZSdzIGxlbmd0aC4K Ky0JICAgICBXYXRjaCBvdXQgZm9yIEFkYSBudWxsIEFkYSBhcnJheXMgd2hlcmUgdGhlIGhpZ2gg Ym91bmQKKy0JICAgICBpcyBzbWFsbGVyIHRoYW4gdGhlIGxvdyBib3VuZC4gKi8KKy0JICBjb25z dCBMT05HRVNUIGxvd19ib3VuZCA9IFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKTsKKy0JICBj b25zdCBMT05HRVNUIGhpZ2hfYm91bmQgPSBUWVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUpOwor LQkgIFVMT05HRVNUIGxlbjsKIC0KLS0gIGlmIChTWU1CT0xfQ0xBU1MgKHZhcikgPT0gTE9DX0NP TVBVVEVECi0tICAgICAgfHwgU1lNQk9MX0NMQVNTICh2YXIpID09IExPQ19SRUdJU1RFUikKLS0g ICAgLyogVGhlc2UgY2FzZXMgZG8gbm90IHVzZSBWLiAgKi8KLS0gICAgdiA9IE5VTEw7Ci0tICBl bHNlCi0tICAgIHsKLS0gICAgICB2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwotLSAgICAgIFZB TFVFX0xWQUwgKHYpID0gbHZhbF9tZW1vcnk7CS8qIFRoZSBtb3N0IGxpa2VseSBwb3NzaWJpbGl0 eS4gICovCi0tICAgIH0KKy0JICBpZiAoaGlnaF9ib3VuZCA8IGxvd19ib3VuZCkKKy0JICAgIGxl biA9IDA7CistCSAgZWxzZQorLQkgICAgeworLQkgICAgICAvKiBGb3Igbm93LCB3ZSBjb25zZXJ2 YXRpdmVseSB0YWtlIHRoZSBhcnJheSBsZW5ndGggdG8gYmUgMAorLQkJIGlmIGl0cyBsZW5ndGgg ZXhjZWVkcyBVSU5UX01BWC4gIFRoZSBjb2RlIGJlbG93IGFzc3VtZXMKKy0JCSB0aGF0IGZvciB4 IDwgMCwgKFVMT05HRVNUKSB4ID09IC14ICsgVUxPTkdFU1RfTUFYICsgMSwKKy0JCSB3aGljaCBp cyB0ZWNobmljYWxseSBub3QgZ3VhcmFudGVlZCBieSBDLCBidXQgaXMgdXN1YWxseSB0cnVlCist CQkgKGJlY2F1c2UgaXQgd291bGQgYmUgdHJ1ZSBpZiB4IHdlcmUgdW5zaWduZWQgd2l0aCBpdHMK Ky0JCSBoaWdoLW9yZGVyIGJpdCBvbikuIEl0IHVzZXMgdGhlIGZhY3QgdGhhdAorLQkJIGhpZ2hf Ym91bmQtbG93X2JvdW5kIGlzIGFsd2F5cyByZXByZXNlbnRhYmxlIGluCistCQkgVUxPTkdFU1Qg YW5kIHRoYXQgaWYgaGlnaF9ib3VuZC1sb3dfYm91bmQrMSBvdmVyZmxvd3MsCistCQkgaXQgb3Zl cmZsb3dzIHRvIDAuICBXZSBtdXN0IGNoYW5nZSB0aGVzZSB0ZXN0cyBpZiB3ZSAKKy0JCSBkZWNp ZGUgdG8gaW5jcmVhc2UgdGhlIHJlcHJlc2VudGF0aW9uIG9mIFRZUEVfTEVOR1RICistCQkgZnJv bSB1bnNpZ25lZCBpbnQgdG8gVUxPTkdFU1QuICovCistCSAgICAgIFVMT05HRVNUIHVsb3cgPSBs b3dfYm91bmQsIHVoaWdoID0gaGlnaF9ib3VuZDsKKy0JICAgICAgVUxPTkdFU1QgdGxlbiA9IFRZ UEVfTEVOR1RIICh0YXJnZXRfdHlwZSk7CiAtCi0tICBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7 CistCSAgICAgIGxlbiA9IHRsZW4gKiAodWhpZ2ggLSB1bG93ICsgMSk7CistCSAgICAgIGlmICh0 bGVuID09IDAgfHwgKGxlbiAvIHRsZW4gLSAxICsgdWxvdykgIT0gdWhpZ2ggCistCQkgIHx8IGxl biA+IFVJTlRfTUFYKQorLQkJbGVuID0gMDsKKy0JICAgIH0KKy0JICBUWVBFX0xFTkdUSCAodHlw ZSkgPSBsZW47CisrCSAgICAgbnVtYmVyIG9mIGVsZW1lbnRzIGFuZCB0aGUgdGFyZ2V0IHR5cGUn cyBsZW5ndGguICAqLworKwkgIFRZUEVfTEVOR1RIICh0eXBlKSA9IHR5cGVfbGVuZ3RoX2dldCAo dHlwZSwgdGFyZ2V0X3R5cGUsIDApOworIAkgIFRZUEVfVEFSR0VUX1NUVUIgKHR5cGUpID0gMDsK KyAJfQorICAgICAgIGVsc2UgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JBTkdF KQorQEAgLTE1MzksOSArMTY4MywxMiBAQCBjaGVja190eXBlZGVmIChzdHJ1Y3QgdHlwZSAqdHlw ZSkKKyAJICBUWVBFX0xFTkdUSCAodHlwZSkgPSBUWVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUpOwor IAkgIFRZUEVfVEFSR0VUX1NUVUIgKHR5cGUpID0gMDsKKyAJfQorKyAgICAgIFRZUEVfRFlOQU1J QyAodHlwZSkgPSAwOworICAgICB9CisrCisgICAvKiBDYWNoZSBUWVBFX0xFTkdUSCBmb3IgZnV0 dXJlIHVzZS4gICovCisgICBUWVBFX0xFTkdUSCAob3JpZ190eXBlKSA9IFRZUEVfTEVOR1RIICh0 eXBlKTsKKysKKyAgIHJldHVybiB0eXBlOworIH0KICAKLSAgIGlmIChzeW1ib2xfcmVhZF9uZWVk c19mcmFtZSAodmFyKSkKLSAgICAgZ2RiX2Fzc2VydCAoZnJhbWUpOwotQEAgLTQyOSwzMyArNDE5 LDQzIEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9p bmZvICpmcmFtZSkKLSAgIHN3aXRjaCAoU1lNQk9MX0NMQVNTICh2YXIpKQotICAgICB7Ci0gICAg IGNhc2UgTE9DX0NPTlNUOgotLSAgICAgIC8qIFB1dCB0aGUgY29uc3RhbnQgYmFjayBpbiB0YXJn ZXQgZm9ybWF0LiAgKi8KLS0gICAgICBzdG9yZV9zaWduZWRfaW50ZWdlciAodmFsdWVfY29udGVu dHNfcmF3ICh2KSwgbGVuLAotLQkJCSAgICBnZGJhcmNoX2J5dGVfb3JkZXIgKGdldF90eXBlX2Fy Y2ggKHR5cGUpKSwKLS0JCQkgICAgKExPTkdFU1QpIFNZTUJPTF9WQUxVRSAodmFyKSk7Ci0tICAg ICAgVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKLS0gICAgICByZXR1cm4gdjsKLSsgICAgICB7 Ci0rCS8qIFB1dCB0aGUgY29uc3RhbnQgYmFjayBpbiB0YXJnZXQgZm9ybWF0LiAgKi8KLSsJc3Ry dWN0IHZhbHVlICp2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwotKwlWQUxVRV9MVkFMICh2KSA9 IG5vdF9sdmFsOwotKwlzdG9yZV9zaWduZWRfaW50ZWdlciAodmFsdWVfY29udGVudHNfcmF3ICh2 KSwgVFlQRV9MRU5HVEggKHR5cGUpLAotKwkJCSAgICAgIGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2V0 X3R5cGVfYXJjaCAodHlwZSkpLAotKwkJCSAgICAgIChMT05HRVNUKSBTWU1CT0xfVkFMVUUgKHZh cikpOwotKwlyZXR1cm4gdjsKLSsgICAgICB9CitAQCAtMTgxMSw2ICsxOTU4LDggQEAgaW5pdF90 eXBlIChlbnVtIHR5cGVfY29kZSBjb2RlLCBpbnQgbGVuZ3RoLCBpbnQgZmxhZ3MsCisgICAgIFRZ UEVfTk9UVEVYVCAodHlwZSkgPSAxOworICAgaWYgKGZsYWdzICYgVFlQRV9GTEFHX0ZJWEVEX0lO U1RBTkNFKQorICAgICBUWVBFX0ZJWEVEX0lOU1RBTkNFICh0eXBlKSA9IDE7CisrICBpZiAoZmxh Z3MgJiBUWVBFX0ZMQUdfR05VX0lGVU5DKQorKyAgICBUWVBFX0dOVV9JRlVOQyAodHlwZSkgPSAx OwogIAotICAgICBjYXNlIExPQ19MQUJFTDoKLS0gICAgICAvKiBQdXQgdGhlIGNvbnN0YW50IGJh Y2sgaW4gdGFyZ2V0IGZvcm1hdC4gICovCi0tICAgICAgaWYgKG92ZXJsYXlfZGVidWdnaW5nKQot LQl7Ci0tCSAgQ09SRV9BRERSIGFkZHIKLS0JICAgID0gc3ltYm9sX292ZXJsYXllZF9hZGRyZXNz IChTWU1CT0xfVkFMVUVfQUREUkVTUyAodmFyKSwKLS0JCQkJCVNZTUJPTF9PQkpfU0VDVElPTiAo dmFyKSk7Ci0rICAgICAgewotKwkvKiBQdXQgdGhlIGNvbnN0YW50IGJhY2sgaW4gdGFyZ2V0IGZv cm1hdC4gICovCi0rCXN0cnVjdCB2YWx1ZSAqdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKLSsJ VkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKLSsJaWYgKG92ZXJsYXlfZGVidWdnaW5nKQotKwkg IHsKLSsJICAgIENPUkVfQUREUiBhZGRyCi0rCSAgICAgID0gc3ltYm9sX292ZXJsYXllZF9hZGRy ZXNzIChTWU1CT0xfVkFMVUVfQUREUkVTUyAodmFyKSwKLSsJCQkJCSAgU1lNQk9MX09CSl9TRUNU SU9OICh2YXIpKTsKKyAgIGlmIChuYW1lKQorICAgICBUWVBFX05BTUUgKHR5cGUpID0gb2JzYXZl c3RyaW5nIChuYW1lLCBzdHJsZW4gKG5hbWUpLAorQEAgLTMwMDYsMzMgKzMxNTUsNDIgQEAgdHlw ZV9wYWlyX2VxIChjb25zdCB2b2lkICppdGVtX2xocywgY29uc3Qgdm9pZCAqaXRlbV9yaHMpCisg fQogIAotLQkgIHN0b3JlX3R5cGVkX2FkZHJlc3MgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIHR5 cGUsIGFkZHIpOwotLQl9Ci0tICAgICAgZWxzZQotLQlzdG9yZV90eXBlZF9hZGRyZXNzICh2YWx1 ZV9jb250ZW50c19yYXcgKHYpLCB0eXBlLAotLQkJCSAgICAgIFNZTUJPTF9WQUxVRV9BRERSRVNT ICh2YXIpKTsKLS0gICAgICBWQUxVRV9MVkFMICh2KSA9IG5vdF9sdmFsOwotLSAgICAgIHJldHVy biB2OwotKwkgICAgc3RvcmVfdHlwZWRfYWRkcmVzcyAodmFsdWVfY29udGVudHNfcmF3ICh2KSwg dHlwZSwgYWRkcik7Ci0rCSAgfQotKwllbHNlCi0rCSAgc3RvcmVfdHlwZWRfYWRkcmVzcyAodmFs dWVfY29udGVudHNfcmF3ICh2KSwgdHlwZSwKLSsJCQkJU1lNQk9MX1ZBTFVFX0FERFJFU1MgKHZh cikpOwotKwlyZXR1cm4gdjsKLSsgICAgICB9CisgLyogQWxsb2NhdGUgdGhlIGhhc2ggdGFibGUg dXNlZCBieSBjb3B5X3R5cGVfcmVjdXJzaXZlIHRvIHdhbGsKKy0gICB0eXBlcyB3aXRob3V0IGR1 cGxpY2F0ZXMuICBXZSB1c2UgT0JKRklMRSdzIG9ic3RhY2ssIGJlY2F1c2UKKy0gICBPQkpGSUxF IGlzIGFib3V0IHRvIGJlIGRlbGV0ZWQuICAqLworKyAgIHR5cGVzIHdpdGhvdXQgZHVwbGljYXRl cy4gICAqLwogIAotICAgICBjYXNlIExPQ19DT05TVF9CWVRFUzoKLS0gICAgICBtZW1jcHkgKHZh bHVlX2NvbnRlbnRzX3JhdyAodiksIFNZTUJPTF9WQUxVRV9CWVRFUyAodmFyKSwgbGVuKTsKLS0g ICAgICBWQUxVRV9MVkFMICh2KSA9IG5vdF9sdmFsOwotLSAgICAgIHJldHVybiB2OwotKyAgICAg IHsKLSsJc3RydWN0IHZhbHVlICp2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwotKwlWQUxVRV9M VkFMICh2KSA9IG5vdF9sdmFsOwotKwltZW1jcHkgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIFNZ TUJPTF9WQUxVRV9CWVRFUyAodmFyKSwKLSsJCVRZUEVfTEVOR1RIICh0eXBlKSk7Ci0rCXJldHVy biB2OwotKyAgICAgIH0KKyBodGFiX3QKKyBjcmVhdGVfY29waWVkX3R5cGVzX2hhc2ggKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlKQorIHsKKy0gIHJldHVybiBodGFiX2NyZWF0ZV9hbGxvY19leCAo MSwgdHlwZV9wYWlyX2hhc2gsIHR5cGVfcGFpcl9lcSwKKy0JCQkgICAgICAgTlVMTCwgJm9iamZp bGUtPm9iamZpbGVfb2JzdGFjaywKKy0JCQkgICAgICAgaGFzaHRhYl9vYnN0YWNrX2FsbG9jYXRl LAorLQkJCSAgICAgICBkdW1teV9vYnN0YWNrX2RlYWxsb2NhdGUpOworKyAgaWYgKG9iamZpbGUg PT0gTlVMTCkKKysgICAgeworKyAgICAgIC8qIE5VTEwgT0JKRklMRSBpcyBmb3IgVFlQRV9EWU5B TUlDIHR5cGVzIGFscmVhZHkgY29udGFpbmVkIGluCisrCSBPQkpGSUxFX01BTExPQyBtZW1vcnks IHN1Y2ggYXMgdGhvc2UgZnJvbSBWQUxVRV9ISVNUT1JZX0NIQUlOLiAgVGFibGUKKysJIGVsZW1l bnQgZW50cmllcyBnZXQgYWxsb2NhdGVkIGJ5IHhtYWxsb2MgLSBzbyB1c2UgeGZyZWUuICAqLwor KyAgICAgIHJldHVybiBodGFiX2NyZWF0ZSAoMSwgdHlwZV9wYWlyX2hhc2gsIHR5cGVfcGFpcl9l cSwgeGZyZWUpOworKyAgICB9CisrICBlbHNlCisrICAgIHsKKysgICAgICAvKiBVc2UgT0JKRklM RSdzIG9ic3RhY2ssIGJlY2F1c2UgT0JKRklMRSBpcyBhYm91dCB0byBiZSBkZWxldGVkLiAgVGFi bGUKKysJIGVsZW1lbnQgZW50cmllcyBnZXQgYWxsb2NhdGVkIGJ5IHhtYWxsb2MgLSBzbyB1c2Ug eGZyZWUuICAqLworKyAgICAgIHJldHVybiBodGFiX2NyZWF0ZV9hbGxvY19leCAoMSwgdHlwZV9w YWlyX2hhc2gsIHR5cGVfcGFpcl9lcSwKKysJCQkJICAgeGZyZWUsICZvYmpmaWxlLT5vYmpmaWxl X29ic3RhY2ssCisrCQkJCSAgIGhhc2h0YWJfb2JzdGFja19hbGxvY2F0ZSwKKysJCQkJICAgZHVt bXlfb2JzdGFja19kZWFsbG9jYXRlKTsKKysgICAgfQorIH0KICAKLSAgICAgY2FzZSBMT0NfU1RB VElDOgotICAgICAgIGlmIChvdmVybGF5X2RlYnVnZ2luZykKLUBAIC00OTYsMTIgKzQ5NiwyMyBA QCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAq ZnJhbWUpCi0gICAgICAgYnJlYWs7CistLyogUmVjdXJzaXZlbHkgY29weSAoZGVlcCBjb3B5KSBU WVBFLCBpZiBpdCBpcyBhc3NvY2lhdGVkIHdpdGgKKy0gICBPQkpGSUxFLiAgUmV0dXJuIGEgbmV3 IHR5cGUgYWxsb2NhdGVkIHVzaW5nIG1hbGxvYywgYSBzYXZlZCB0eXBlIGlmCistICAgd2UgaGF2 ZSBhbHJlYWR5IHZpc2l0ZWQgVFlQRSAodXNpbmcgQ09QSUVEX1RZUEVTKSwgb3IgVFlQRSBpZiBp dCBpcworLSAgIG5vdCBhc3NvY2lhdGVkIHdpdGggT0JKRklMRS4gICovCisrLyogQSBoZWxwZXIg Zm9yIGNvcHlfdHlwZV9yZWN1cnNpdmUuICBUaGlzIGRvZXMgYWxsIHRoZSB3b3JrLiAgT0JKRklM RSBpcyB1c2VkCisrICAgb25seSBmb3IgYW4gYXNzZXJ0aW9uIGNoZWNraW5nLiAgKi8KICAKLSAg ICAgY2FzZSBMT0NfQkxPQ0s6Ci0tICAgICAgaWYgKG92ZXJsYXlfZGVidWdnaW5nKQotLQlzZXRf dmFsdWVfYWRkcmVzcyAodiwgc3ltYm9sX292ZXJsYXllZF9hZGRyZXNzCi0tCSAgKEJMT0NLX1NU QVJUIChTWU1CT0xfQkxPQ0tfVkFMVUUgKHZhcikpLCBTWU1CT0xfT0JKX1NFQ1RJT04gKHZhcikp KTsKLS0gICAgICBlbHNlCi0tCXNldF92YWx1ZV9hZGRyZXNzICh2LCBCTE9DS19TVEFSVCAoU1lN Qk9MX0JMT0NLX1ZBTFVFICh2YXIpKSk7Ci0tICAgICAgcmV0dXJuIHY7Ci0rICAgICAgewotKyAg ICAgICAgQ09SRV9BRERSIGFkZHI7Ci0rCXN0cnVjdCB2YWx1ZSAqdjsKLSsKLSsJaWYgKG92ZXJs YXlfZGVidWdnaW5nKQotKwkgIGFkZHIgPSBzeW1ib2xfb3ZlcmxheWVkX2FkZHJlc3MKLSsJICAg IChCTE9DS19TVEFSVCAoU1lNQk9MX0JMT0NLX1ZBTFVFICh2YXIpKSwgU1lNQk9MX09CSl9TRUNU SU9OICh2YXIpKTsKLSsJZWxzZQotKwkgIGFkZHIgPSBCTE9DS19TVEFSVCAoU1lNQk9MX0JMT0NL X1ZBTFVFICh2YXIpKTsKLSsJLyogQUREUiBpcyBzZXQgaGVyZSBmb3IgQUxMT0NBVEVfVkFMVUUn cyBDSEVDS19UWVBFREVGIGZvcgotKwkgICBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzLiAgKi8K LSsJb2JqZWN0X2FkZHJlc3Nfc2V0IChhZGRyKTsKLSsJdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBl KTsKLSsJVkFMVUVfTFZBTCAodikgPSBsdmFsX21lbW9yeTsKLSsJc2V0X3ZhbHVlX2FkZHJlc3Mg KHYsIGFkZHIpOwotKwlyZXR1cm4gdjsKLSsgICAgICB9Cistc3RydWN0IHR5cGUgKgorLWNvcHlf dHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCAKKy0JCSAgICAgc3RydWN0 IHR5cGUgKnR5cGUsCistCQkgICAgIGh0YWJfdCBjb3BpZWRfdHlwZXMpCisrc3RhdGljIHN0cnVj dCB0eXBlICoKKytjb3B5X3R5cGVfcmVjdXJzaXZlXzEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LCAKKysJCSAgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSwKKysJCSAgICAgICBodGFiX3QgY29waWVk X3R5cGVzKQorIHsKKyAgIHN0cnVjdCB0eXBlX3BhaXIgKnN0b3JlZCwgcGFpcjsKKyAgIHZvaWQg KipzbG90OworICAgc3RydWN0IHR5cGUgKm5ld190eXBlOwogIAotICAgICBjYXNlIExPQ19SRUdJ U1RFUjoKLSAgICAgY2FzZSBMT0NfUkVHUEFSTV9BRERSOgotQEAgLTUyMCw3ICs1MzEsNiBAQCBy ZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJh bWUpCi0gCSAgICAgIGVycm9yIChfKCJWYWx1ZSBvZiByZWdpc3RlciB2YXJpYWJsZSBub3QgYXZh aWxhYmxlLiIpKTsKKy0gIGlmICghIFRZUEVfT0JKRklMRV9PV05FRCAodHlwZSkpCisrICBpZiAo ISBUWVBFX09CSkZJTEVfT1dORUQgKHR5cGUpICYmICFUWVBFX0RZTkFNSUMgKHR5cGUpKQorICAg ICByZXR1cm4gdHlwZTsKICAKLSAJICAgIGFkZHIgPSB2YWx1ZV9hc19hZGRyZXNzIChyZWd2YWwp OwotLQkgICAgVkFMVUVfTFZBTCAodikgPSBsdmFsX21lbW9yeTsKLSAJICB9Ci0gCWVsc2UKLSAJ ICB7Ci1AQCAtNTYzLDE4ICs1NzMsMzMgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wg KnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotICAgICAgIGJyZWFrOworICAgLyogVGhp cyB0eXBlIHNob3VsZG4ndCBiZSBwb2ludGluZyB0byBhbnkgdHlwZXMgaW4gb3RoZXIgb2JqZmls ZXM7CitAQCAtMzA0Nyw4ICszMjA1LDEwIEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLAorICAgbmV3X3R5cGUgPSBhbGxvY190eXBlX2FyY2ggKGdldF90eXBl X2FyY2ggKHR5cGUpKTsKKyAKKyAgIC8qIFdlIG11c3QgYWRkIHRoZSBuZXcgdHlwZSB0byB0aGUg aGFzaCB0YWJsZSBpbW1lZGlhdGVseSwgaW4gY2FzZQorLSAgICAgd2UgZW5jb3VudGVyIHRoaXMg dHlwZSBhZ2FpbiBkdXJpbmcgYSByZWN1cnNpdmUgY2FsbCBiZWxvdy4gICovCistICBzdG9yZWQg PSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzaXplb2YgKHN0cnVj dCB0eXBlX3BhaXIpKTsKKysgICAgIHdlIGVuY291bnRlciB0aGlzIHR5cGUgYWdhaW4gZHVyaW5n IGEgcmVjdXJzaXZlIGNhbGwgYmVsb3cuICBNZW1vcnkgY291bGQKKysgICAgIGJlIGFsbG9jYXRl ZCBmcm9tIE9CSkZJTEUgaW4gdGhlIGNhc2Ugd2Ugd2lsbCBiZSByZW1vdmluZyBPQkpGSUxFLCB0 aGlzCisrICAgICBvcHRpbWl6YXRpb24gaXMgbWlzc2VkIGFuZCB4ZnJlZSBpcyBjYWxsZWQgZm9y IGl0IGZyb20gQ09QSUVEX1RZUEVTLiAgKi8KKysgIHN0b3JlZCA9IHhtYWxsb2MgKHNpemVvZiAo KnN0b3JlZCkpOworICAgc3RvcmVkLT5vbGQgPSB0eXBlOworICAgc3RvcmVkLT5uZXcgPSBuZXdf dHlwZTsKKyAgICpzbG90ID0gc3RvcmVkOworQEAgLTMwNTksNiArMzIxOSwxOSBAQCBjb3B5X3R5 cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKyAgIFRZUEVfT0JKRklMRV9P V05FRCAobmV3X3R5cGUpID0gMDsKKyAgIFRZUEVfT1dORVIgKG5ld190eXBlKS5nZGJhcmNoID0g Z2V0X3R5cGVfYXJjaCAodHlwZSk7CiAgCi0gICAgIGNhc2UgTE9DX09QVElNSVpFRF9PVVQ6Ci0t ICAgICAgVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKLS0gICAgICBzZXRfdmFsdWVfb3B0aW1p emVkX291dCAodiwgMSk7Ci0tICAgICAgcmV0dXJuIHY7Ci0rICAgICAgewotKyAgICAgICAgc3Ry dWN0IHZhbHVlICp2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOworKyAgLyogVFlQRV9NQUlOX1RZ UEUgbWVtb3J5IGNvcHkgYWJvdmUgcmV3cm90ZSB0aGUgVFlQRV9ESVNDQVJEQUJMRSBmbGFnIHNv IHdlCisrICAgICBuZWVkIHRvIGluaXRpYWxpemUgaXQgYWdhaW4uICBBbmQgZXZlbiBpZiBUWVBF IHdhcyBhbHJlYWR5IGRpc2NhcmRhYmxlCisrICAgICBORVdfVFlQRSBzbyBmYXIgaXMgbm90IHJl Z2lzdGVyZWQgaW4gVFlQRV9ESVNDQVJEQUJMRV9UQUJMRS4gICovCisrICBUWVBFX0RJU0NBUkRB QkxFIChuZXdfdHlwZSkgPSAwOworKyAgc2V0X3R5cGVfYXNfZGlzY2FyZGFibGUgKG5ld190eXBl KTsKICsKLSsJVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKLSsJc2V0X3ZhbHVlX29wdGltaXpl ZF9vdXQgKHYsIDEpOwotKwlyZXR1cm4gdjsKLSsgICAgICB9Ci0gCi0gICAgIGRlZmF1bHQ6Ci0g ICAgICAgZXJyb3IgKF8oIkNhbm5vdCBsb29rIHVwIHZhbHVlIG9mIGEgYm90Y2hlZCBzeW1ib2wu IikpOwotICAgICAgIGJyZWFrOwotICAgICB9CisrICAvKiBQcmUtY2xlYXIgdGhlIGZpZWxkcyBw cm9jZXNzZWQgYnkgZGVsZXRlX21haW5fdHlwZS4gIElmIERXQVJGIGJsb2NrCisrICAgICBldmFs dWF0aW9ucyBiZWxvdyBjYWxsIGVycm9yIHdlIHdvdWxkIGxlYXZlIGFuIHVuZnJlZWFibGUgVFlQ RS4gICovCisrICBUWVBFX1RBUkdFVF9UWVBFIChuZXdfdHlwZSkgPSBOVUxMOworKyAgVFlQRV9W UFRSX0JBU0VUWVBFIChuZXdfdHlwZSkgPSBOVUxMOworKyAgVFlQRV9ORklFTERTIChuZXdfdHlw ZSkgPSAwOworKyAgVFlQRV9GSUVMRFMgKG5ld190eXBlKSA9IE5VTEw7CisrCisgICBpZiAoVFlQ RV9OQU1FICh0eXBlKSkKKyAgICAgVFlQRV9OQU1FIChuZXdfdHlwZSkgPSB4c3RyZHVwIChUWVBF X05BTUUgKHR5cGUpKTsKKyAgIGlmIChUWVBFX1RBR19OQU1FICh0eXBlKSkKK0BAIC0zMDY3LDEy ICszMjQwLDQ4IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LAorICAgVFlQRV9JTlNUQU5DRV9GTEFHUyAobmV3X3R5cGUpID0gVFlQRV9JTlNUQU5DRV9GTEFH UyAodHlwZSk7CisgICBUWVBFX0xFTkdUSCAobmV3X3R5cGUpID0gVFlQRV9MRU5HVEggKHR5cGUp OwogIAotLSAgc2V0X3ZhbHVlX2FkZHJlc3MgKHYsIGFkZHIpOwotLSAgc2V0X3ZhbHVlX2xhenkg KHYsIDEpOwotLSAgcmV0dXJuIHY7Ci0rICB7Ci0rICAgIHN0cnVjdCB2YWx1ZSAqdjsKKysgIGlm IChUWVBFX0FMTE9DQVRFRCAobmV3X3R5cGUpKQorKyAgICB7CisrICAgICAgZ2RiX2Fzc2VydCAo IVRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpKTsKICsKLSsgICAgLyogQUREUiBpcyBzZXQg aGVyZSBmb3IgQUxMT0NBVEVfVkFMVUUncyBDSEVDS19UWVBFREVGIGZvcgotKyAgICAgICBEV19P UF9QVVNIX09CSkVDVF9BRERSRVNTLiAgKi8KLSsgICAgb2JqZWN0X2FkZHJlc3Nfc2V0IChhZGRy KTsKLSsgICAgdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKLSsgICAgVkFMVUVfTFZBTCAodikg PSBsdmFsX21lbW9yeTsKLSsgICAgc2V0X3ZhbHVlX2FkZHJlc3MgKHYsIGFkZHIpOworKyAgICAg IGlmICghZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsIChUWVBFX0FMTE9DQVRFRCAobmV3X3R5cGUp KSkKKysgICAgICAgIFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpID0gMTsKKysgICAgICBU WVBFX0FMTE9DQVRFRCAobmV3X3R5cGUpID0gTlVMTDsKKysgICAgfQogKwotKyAgICBzZXRfdmFs dWVfbGF6eSAodiwgMSk7CisrICBpZiAoVFlQRV9BU1NPQ0lBVEVEIChuZXdfdHlwZSkpCisrICAg IHsKKysgICAgICBnZGJfYXNzZXJ0ICghVFlQRV9OT1RfQVNTT0NJQVRFRCAobmV3X3R5cGUpKTsK ICsKLSsgICAgcmV0dXJuIHY7Ci0rICB9Ci0gfQotIAotIC8qIEluc3RhbGwgZGVmYXVsdCBhdHRy aWJ1dGVzIGZvciByZWdpc3RlciB2YWx1ZXMuICAqLwotQEAgLTYxMSwxMCArNjM2LDExIEBAIHN0 cnVjdCB2YWx1ZSAqCi0gdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUgKnR5cGUsIGlu dCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSB7Ci0gICBzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7Ci0tICBzdHJ1Y3QgdHlwZSAqdHlw ZTEgPSBjaGVja190eXBlZGVmICh0eXBlKTsKLSAgIHN0cnVjdCB2YWx1ZSAqdjsKLSAKLS0gIGlm IChnZGJhcmNoX2NvbnZlcnRfcmVnaXN0ZXJfcCAoZ2RiYXJjaCwgcmVnbnVtLCB0eXBlMSkpCi0r ICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodHlwZSk7CisrICAgICAgaWYgKCFkd2FyZl9sb2NleHBy X2JhdG9uX2V2YWwgKFRZUEVfQVNTT0NJQVRFRCAobmV3X3R5cGUpKSkKKysgICAgICAgIFRZUEVf Tk9UX0FTU09DSUFURUQgKG5ld190eXBlKSA9IDE7CisrICAgICAgVFlQRV9BU1NPQ0lBVEVEIChu ZXdfdHlwZSkgPSBOVUxMOworKyAgICB9CiArCi0rICBpZiAoZ2RiYXJjaF9jb252ZXJ0X3JlZ2lz dGVyX3AgKGdkYmFyY2gsIHJlZ251bSwgdHlwZSkpCi0gICAgIHsKLSAgICAgICAvKiBUaGUgSVNB L0FCSSBuZWVkIHRvIHNvbWV0aGluZyB3ZWlyZCB3aGVuIG9idGFpbmluZyB0aGUKLSAgICAgICAg ICBzcGVjaWZpZWQgdmFsdWUgZnJvbSB0aGlzIHJlZ2lzdGVyLiAgSXQgbWlnaHQgbmVlZCB0bwot QEAgLTYyOCw3ICs2NTQsNyBAQCB2YWx1ZV9mcm9tX3JlZ2lzdGVyIChzdHJ1Y3QgdHlwZSAqdHlw ZSwgaW50IHJlZ251bSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotICAgICAgIFZBTFVFX0ZS QU1FX0lEICh2KSA9IGdldF9mcmFtZV9pZCAoZnJhbWUpOwotICAgICAgIFZBTFVFX1JFR05VTSAo dikgPSByZWdudW07Ci0gICAgICAgZ2RiYXJjaF9yZWdpc3Rlcl90b192YWx1ZSAoZ2RiYXJjaCwK LS0JCQkJIGZyYW1lLCByZWdudW0sIHR5cGUxLCB2YWx1ZV9jb250ZW50c19yYXcgKHYpKTsKLSsJ CQkJIGZyYW1lLCByZWdudW0sIHR5cGUsIHZhbHVlX2NvbnRlbnRzX3JhdyAodikpOwotICAgICB9 Ci0gICBlbHNlCisrICBpZiAoIVRZUEVfREFUQV9MT0NBVElPTl9JU19BRERSIChuZXdfdHlwZSkK KysgICAgICAmJiBUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgKG5ld190eXBlKSkKKysg ICAgeworKyAgICAgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBlKQorKyAgICAgICAg ICB8fCBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkpCisrCVRZUEVfREFUQV9MT0NBVElP Tl9EV0FSRl9CTE9DSyAobmV3X3R5cGUpID0gTlVMTDsKKysgICAgICBlbHNlCisrCXsKKysJICBU WVBFX0RBVEFfTE9DQVRJT05fSVNfQUREUiAobmV3X3R5cGUpID0gMTsKKysJICBUWVBFX0RBVEFf TE9DQVRJT05fQUREUiAobmV3X3R5cGUpID0gZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsCisrCQkJ CSAgICAoVFlQRV9EQVRBX0xPQ0FUSU9OX0RXQVJGX0JMT0NLIChuZXdfdHlwZSkpOworKwl9Cisr ICAgIH0KKysKKyAgIC8qIENvcHkgdGhlIGZpZWxkcy4gICovCisgICBpZiAoVFlQRV9ORklFTERT ICh0eXBlKSkKICAgICAgewotZGlmZiAtLWdpdCBhL2dkYi9nZGJ0aHJlYWQuaCBiL2dkYi9nZGJ0 aHJlYWQuaAotaW5kZXggY2QyNGVhZi4uOTYzODM2OCAxMDA2NDQKLS0tLSBhL2dkYi9nZGJ0aHJl YWQuaAotKysrIGIvZ2RiL2dkYnRocmVhZC5oCi1AQCAtNjYsNiArNjYsOSBAQCBzdHJ1Y3QgdGhy ZWFkX2luZm8KLSAgIC8qIFN0ZXAtcmVzdW1lIG9yIGxvbmdqbXAtcmVzdW1lIGJyZWFrcG9pbnQu ICAqLwotICAgc3RydWN0IGJyZWFrcG9pbnQgKnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQ7CisgICAg ICAgaW50IGksIG5maWVsZHM7CiAgCi0rICAvKiBFeGNlcHRpb24tcmVzdW1lIGJyZWFrcG9pbnQu ICAqLwotKyAgc3RydWN0IGJyZWFrcG9pbnQgKmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludDsK KysgICAgICAvKiBUWVBFX0NPREVfUkFOR0UgdXNlcyBUWVBFX1JBTkdFX0RBVEEgb2YgdGhlIHVu aW9uIHdpdGggVFlQRV9GSUVMRFMuICAqLworKyAgICAgIGdkYl9hc3NlcnQgKFRZUEVfQ09ERSAo dHlwZSkgIT0gVFlQRV9DT0RFX1JBTkdFKTsKICsKLSAgIC8qIFJhbmdlIHRvIHNpbmdsZSBzdGVw IHdpdGhpbi4KLSAKLSAgICAgIElmIHRoaXMgaXMgbm9uemVybywgcmVzcG9uZCB0byBhIHNpbmds ZS1zdGVwIHNpZ25hbCBieSBjb250aW51aW5nCi1AQCAtMTg1LDYgKzE4OCwxMCBAQCBzdHJ1Y3Qg dGhyZWFkX2luZm8KLSAgIC8qIFRydWUgaWYgdGhpcyB0aHJlYWQgaGFzIGJlZW4gZXhwbGljaXRs eSByZXF1ZXN0ZWQgdG8gc3RvcC4gICovCi0gICBpbnQgc3RvcF9yZXF1ZXN0ZWQ7CisgICAgICAg bmZpZWxkcyA9IFRZUEVfTkZJRUxEUyAodHlwZSk7CisrICAgICAgVFlQRV9ORklFTERTIChuZXdf dHlwZSkgPSBuZmllbGRzOworICAgICAgIFRZUEVfRklFTERTIChuZXdfdHlwZSkgPSBYQ0FMTE9D IChuZmllbGRzLCBzdHJ1Y3QgZmllbGQpOworICAgICAgIGZvciAoaSA9IDA7IGkgPCBuZmllbGRz OyBpKyspCisgCXsKK0BAIC0zMDgxLDggKzMyOTAsOCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKyAJICBUWVBFX0ZJRUxEX0JJVFNJWkUgKG5ld190eXBl LCBpKSA9IFRZUEVfRklFTERfQklUU0laRSAodHlwZSwgaSk7CisgCSAgaWYgKFRZUEVfRklFTERf VFlQRSAodHlwZSwgaSkpCisgCSAgICBUWVBFX0ZJRUxEX1RZUEUgKG5ld190eXBlLCBpKQorLQkg ICAgICA9IGNvcHlfdHlwZV9yZWN1cnNpdmUgKG9iamZpbGUsIFRZUEVfRklFTERfVFlQRSAodHlw ZSwgaSksCistCQkJCSAgICAgY29waWVkX3R5cGVzKTsKKysJICAgICAgPSBjb3B5X3R5cGVfcmVj dXJzaXZlXzEgKG9iamZpbGUsIFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSksCisrCQkJCSAgICAg ICBjb3BpZWRfdHlwZXMpOworIAkgIGlmIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkpKQorIAkg ICAgVFlQRV9GSUVMRF9OQU1FIChuZXdfdHlwZSwgaSkgPSAKKyAJICAgICAgeHN0cmR1cCAoVFlQ RV9GSUVMRF9OQU1FICh0eXBlLCBpKSk7CitAQCAtMzEwOSwyNCArMzMxOCwxNjYgQEAgY29weV90 eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgCX0KKyAgICAgfQogIAot KyAgLyogVGhlIGluaXRpYXRpbmcgZnJhbWUgb2YgYSBuZXh0aW5nIG9wZXJhdGlvbiwgdXNlZCBm b3IgZGVjaWRpbmcKLSsgICAgIHdoaWNoIGV4Y2VwdGlvbnMgdG8gaW50ZXJjZXB0LiAgKi8KLSsg IHN0cnVjdCBmcmFtZV9pZCBpbml0aWF0aW5nX2ZyYW1lOworKyAgLyogQm90aCBGSUVMRF9MT0Nf S0lORF9EV0FSRl9CTE9DSyBhbmQgVFlQRV9SQU5HRV9ISUdIX0JPVU5EX0lTX0NPVU5UIHdlcmUK KysgICAgIHBvc3NpYmx5IGNvbnZlcnRlZC4gICovCisrICBUWVBFX0RZTkFNSUMgKG5ld190eXBl KSA9IDA7CisrCisgICAvKiBGb3IgcmFuZ2UgdHlwZXMsIGNvcHkgdGhlIGJvdW5kcyBpbmZvcm1h dGlvbi4gKi8KKy0gIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9SQU5HRSkKKysg IGlmIChUWVBFX0NPREUgKG5ld190eXBlKSA9PSBUWVBFX0NPREVfUkFOR0UpCisgICAgIHsKKyAg ICAgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKSA9IHhtYWxsb2MgKHNpemVvZiAoc3RydWN0 IHJhbmdlX2JvdW5kcykpOworICAgICAgICpUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKSA9ICpU WVBFX1JBTkdFX0RBVEEgKHR5cGUpOworKworKyAgICAgIHN3aXRjaCAoVFlQRV9SQU5HRV9EQVRB IChuZXdfdHlwZSktPmxvdy5raW5kKQorKwl7CisrCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9DT05T VEFOVDoKKysJICBicmVhazsKKysJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0JMT0NLOgor KwkgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMg b2JqZmlsZSBzbworKwkgICAgIGl0IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUgY29uc3RhbnQgYnkg Q0hFQ0tfVFlQRURFRi4KKysJICAgICBUWVBFX05PVF9BTExPQ0FURUQgYW5kIFRZUEVfTk9UX0FT U09DSUFURUQgYXJlIG5vdCB2YWxpZCBmb3IgVFlQRS4KKysJICAgICAqLworKwkgIGlmIChUWVBF X05PVF9BTExPQ0FURUQgKG5ld190eXBlKSB8fCBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlw ZSkKKysJICAgICAgfHwgISBoYXNfc3RhY2tfZnJhbWVzICgpKQorKwkgICAgeworKwkgICAgICAv KiBXZSBzaG91bGQgc2V0IDEgZm9yIEZvcnRyYW4gYnV0IGhvdyB0byBmaW5kIHRoZSBsYW5ndWFn ZT8gICovCisrCSAgICAgIFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkgPSAwOworKwkgICAgICBU WVBFX0xPV19CT1VORF9VTkRFRklORUQgKG5ld190eXBlKSA9IDE7CisrCSAgICB9CisrCSAgZWxz ZQorKwkgICAgVFlQRV9MT1dfQk9VTkQgKG5ld190eXBlKSA9IGR3YXJmX2xvY2V4cHJfYmF0b25f ZXZhbAorKwkJCQkoVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmxvdy51LmR3YXJmX2Jsb2Nr KTsKKysJICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+bG93LmtpbmQgPSBSQU5HRV9CT1VO RF9LSU5EX0NPTlNUQU5UOworKwkgIGJyZWFrOworKwljYXNlIFJBTkdFX0JPVU5EX0tJTkRfRFdB UkZfTE9DTElTVDoKKysJICB7CisrCSAgICBDT1JFX0FERFIgYWRkcjsKKysKKysJICAgIC8qIGBz dHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBz bworKwkgICAgICAgaXQgaXMgZXhwZWN0ZWQgdG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19U WVBFREVGLgorKwkgICAgICAgVFlQRV9OT1RfQUxMT0NBVEVEIGFuZCBUWVBFX05PVF9BU1NPQ0lB VEVEIGFyZSBub3QgdmFsaWQgZm9yIFRZUEUuCisrCSAgICAgICAqLworKwkgICAgaWYgKCEgVFlQ RV9OT1RfQUxMT0NBVEVEIChuZXdfdHlwZSkKKysJICAgICAgICAmJiAhIFRZUEVfTk9UX0FTU09D SUFURUQgKG5ld190eXBlKSAmJiBoYXNfc3RhY2tfZnJhbWVzICgpCisrCSAgICAgICAgJiYgZHdh cmZfbG9jbGlzdF9iYXRvbl9ldmFsCisrCQkgIChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+ bG93LnUuZHdhcmZfbG9jbGlzdC5sb2NsaXN0LAorKwkJICAgVFlQRV9SQU5HRV9EQVRBIChuZXdf dHlwZSktPmxvdy51LmR3YXJmX2xvY2xpc3QudHlwZSwgJmFkZHIpKQorKwkgICAgICBUWVBFX0xP V19CT1VORCAobmV3X3R5cGUpID0gYWRkcjsKKysJICAgIGVsc2UKKysJICAgICAgeworKwkJLyog V2Ugc2hvdWxkIHNldCAxIGZvciBGb3J0cmFuIGJ1dCBob3cgdG8gZmluZCB0aGUgbGFuZ3VhZ2U/ ICAqLworKwkJVFlQRV9MT1dfQk9VTkQgKG5ld190eXBlKSA9IDA7CisrCQlUWVBFX0xPV19CT1VO RF9VTkRFRklORUQgKG5ld190eXBlKSA9IDE7CisrCSAgICAgIH0KKysJICAgIFRZUEVfUkFOR0Vf REFUQSAobmV3X3R5cGUpLT5sb3cua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQ7Cisr CSAgfQorKwkgIGJyZWFrOworKwl9CisrCisrICAgICAgc3dpdGNoIChUWVBFX1JBTkdFX0RBVEEg KG5ld190eXBlKS0+aGlnaC5raW5kKQorKwl7CisrCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9DT05T VEFOVDoKKysJICBicmVhazsKKysJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0JMT0NLOgor KwkgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMg b2JqZmlsZSBzbworKwkgICAgIGl0IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUgY29uc3RhbnQgYnkg Q0hFQ0tfVFlQRURFRi4KKysJICAgICBUWVBFX05PVF9BTExPQ0FURUQgYW5kIFRZUEVfTk9UX0FT U09DSUFURUQgYXJlIG5vdCB2YWxpZCBmb3IgVFlQRS4KKysJICAgICAqLworKwkgIGlmIChUWVBF X05PVF9BTExPQ0FURUQgKG5ld190eXBlKSB8fCBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlw ZSkKKysJICAgICAgfHwgISBoYXNfc3RhY2tfZnJhbWVzICgpKQorKwkgICAgeworKwkgICAgICBU WVBFX0hJR0hfQk9VTkQgKG5ld190eXBlKSA9IFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkgLSAx OworKwkgICAgICBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChuZXdfdHlwZSkgPSAxOworKwkg ICAgfQorKwkgIGVsc2UKKysJICAgIFRZUEVfSElHSF9CT1VORCAobmV3X3R5cGUpID0gZHdhcmZf bG9jZXhwcl9iYXRvbl9ldmFsCisrCQkJICAgICAgIChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBl KS0+aGlnaC51LmR3YXJmX2Jsb2NrKTsKKysJICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+ aGlnaC5raW5kID0gUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDsKKysJICBicmVhazsKKysJY2Fz ZSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0xPQ0xJU1Q6CisrCSAgeworKwkgICAgQ09SRV9BRERS IGFkZHI7CisrCisrCSAgICAvKiBgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uJyBpcyB0b28g Ym91bmQgdG8gaXRzIG9iamZpbGUgc28KKysJICAgICAgIGl0IGlzIGV4cGVjdGVkIHRvIGJlIG1h ZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KKysJICAgICAgIFRZUEVfTk9UX0FMTE9DQVRF RCBhbmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUgbm90IHZhbGlkIGZvciBUWVBFLgorKwkgICAg ICAgKi8KKysJICAgIGlmICghIFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpCisrCSAgICAg ICAgJiYgISBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkgJiYgaGFzX3N0YWNrX2ZyYW1l cyAoKQorKwkgICAgICAgICYmIGR3YXJmX2xvY2xpc3RfYmF0b25fZXZhbAorKwkJICAgICAgKFRZ UEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5oaWdoLnUuZHdhcmZfbG9jbGlzdC5sb2NsaXN0LAor KwkJICAgICAgIFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5oaWdoLnUuZHdhcmZfbG9jbGlz dC50eXBlLAorKwkJICAgICAgICZhZGRyKSkKKysJICAgICAgVFlQRV9ISUdIX0JPVU5EIChuZXdf dHlwZSkgPSBhZGRyOworKwkgICAgZWxzZQorKwkgICAgICB7CisrCQlUWVBFX0hJR0hfQk9VTkQg KG5ld190eXBlKSA9IFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkgLSAxOworKwkJVFlQRV9ISUdI X0JPVU5EX1VOREVGSU5FRCAobmV3X3R5cGUpID0gMTsKKysJICAgICAgfQorKwkgICAgVFlQRV9S QU5HRV9EQVRBIChuZXdfdHlwZSktPmhpZ2gua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RB TlQ7CisrCSAgfQorKwkgIGJyZWFrOworKwl9CisrCisrICAgICAgc3dpdGNoIChUWVBFX1JBTkdF X0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUua2luZCkKKysJeworKwljYXNlIFJBTkdFX0JP VU5EX0tJTkRfQ09OU1RBTlQ6CisrCSAgYnJlYWs7CisrCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9E V0FSRl9CTE9DSzoKKysJICAvKiBgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uJyBpcyB0b28g Ym91bmQgdG8gaXRzIG9iamZpbGUgc28KKysJICAgICBpdCBpcyBleHBlY3RlZCB0byBiZSBtYWRl IGNvbnN0YW50IGJ5IENIRUNLX1RZUEVERUYuCisrCSAgICAgVFlQRV9OT1RfQUxMT0NBVEVEIGFu ZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFyZSBub3QgdmFsaWQgZm9yIFRZUEUuCisrCSAgICAgKi8K KysJICBpZiAoVFlQRV9OT1RfQUxMT0NBVEVEIChuZXdfdHlwZSkgfHwgVFlQRV9OT1RfQVNTT0NJ QVRFRCAobmV3X3R5cGUpCisrCSAgICAgIHx8ICEgaGFzX3N0YWNrX2ZyYW1lcyAoKSkKKysJICAg IFRZUEVfQllURV9TVFJJREUgKG5ld190eXBlKSA9IDA7CisrCSAgZWxzZQorKwkgICAgVFlQRV9C WVRFX1NUUklERSAobmV3X3R5cGUpID0gZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsCisrCQkJKFRZ UEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJmX2Jsb2NrKTsKKysJ ICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUua2luZAorKwkgICAgPSBS QU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOworKwkgIGJyZWFrOworKwljYXNlIFJBTkdFX0JPVU5E X0tJTkRfRFdBUkZfTE9DTElTVDoKKysJICB7CisrCSAgICBDT1JFX0FERFIgYWRkciA9IDA7CiAr Ci0gICAvKiBQcml2YXRlIGRhdGEgdXNlZCBieSB0aGUgdGFyZ2V0IHZlY3RvciBpbXBsZW1lbnRh dGlvbi4gICovCi0gICBzdHJ1Y3QgcHJpdmF0ZV90aHJlYWRfaW5mbyAqcHJpdmF0ZTsKLSAKLUBA IC0yMjEsNiArMjI4LDkgQEAgZXh0ZXJuIHZvaWQgZGVsZXRlX3RocmVhZF9zaWxlbnQgKHB0aWRf dCk7Ci0gLyogRGVsZXRlIGEgc3RlcF9yZXN1bWVfYnJlYWtwb2ludCBmcm9tIHRoZSB0aHJlYWQg ZGF0YWJhc2UuICovCi0gZXh0ZXJuIHZvaWQgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQg KHN0cnVjdCB0aHJlYWRfaW5mbyAqKTsKLSAKLSsvKiBEZWxldGUgYW4gZXhjZXB0aW9uX3Jlc3Vt ZV9icmVha3BvaW50IGZyb20gdGhlIHRocmVhZCBkYXRhYmFzZS4gKi8KLStleHRlcm4gdm9pZCBk ZWxldGVfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QgdGhyZWFkX2luZm8gKik7 CisrCSAgICAvKiBgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uJyBpcyB0b28gYm91bmQgdG8g aXRzIG9iamZpbGUgc28KKysJICAgICAgIGl0IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUgY29uc3Rh bnQgYnkgQ0hFQ0tfVFlQRURFRi4KKysJICAgICAgIFRZUEVfTk9UX0FMTE9DQVRFRCBhbmQgVFlQ RV9OT1RfQVNTT0NJQVRFRCBhcmUgbm90IHZhbGlkIGZvciBUWVBFLgorKwkgICAgICAgKi8KKysJ ICAgIGlmICghIFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpCisrCQkmJiAhIFRZUEVfTk9U X0FTU09DSUFURUQgKG5ld190eXBlKSAmJiBoYXNfc3RhY2tfZnJhbWVzICgpKQorKwkgICAgICBk d2FyZl9sb2NsaXN0X2JhdG9uX2V2YWwKKysJICAgICAgIChUWVBFX1JBTkdFX0RBVEEgKG5ld190 eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9sb2NsaXN0LmxvY2xpc3QsCisrCQlUWVBFX1JBTkdF X0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9sb2NsaXN0LnR5cGUsCisrCQkm YWRkcik7CisrCSAgICBUWVBFX0JZVEVfU1RSSURFIChuZXdfdHlwZSkgPSBhZGRyOworKwkgICAg VFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmJ5dGVfc3RyaWRlLmtpbmQKKysJICAgICAgPSBS QU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOworKwkgIH0KKysJICBicmVhazsKKysJfQogKwotIC8q IFRyYW5zbGF0ZSB0aGUgaW50ZWdlciB0aHJlYWQgaWQgKEdEQidzIGhvbWVncm93biBpZCwgbm90 IHRoZSBzeXN0ZW0ncykKLSAgICBpbnRvIGEgInBpZCIgKHdoaWNoIG1heSBiZSBvdmVybG9hZGVk IHdpdGggZXh0cmEgdGhyZWFkIGluZm9ybWF0aW9uKS4gICovCi0gZXh0ZXJuIHB0aWRfdCB0aHJl YWRfaWRfdG9fcGlkIChpbnQpOwotZGlmZiAtLWdpdCBhL2dkYi9nZGJ0eXBlcy5jIGIvZ2RiL2dk YnR5cGVzLmMKLWluZGV4IDQ0M2Y2ZjcuLmQ4NTJhMTQgMTAwNjQ0Ci0tLS0gYS9nZGIvZ2RidHlw ZXMuYwotKysrIGIvZ2RiL2dkYnR5cGVzLmMKLUBAIC0zOSw2ICszOSw5IEBACi0gI2luY2x1ZGUg ImNwLWFiaS5oIgotICNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCi0gI2luY2x1ZGUgImhhc2h0YWIu aCIKLSsjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKLSsjaW5jbHVkZSAiZHdhcmYyZXhwci5oIgotKyNp bmNsdWRlICJkd2FyZjJsb2MuaCIKKysgICAgICAvKiBDb252ZXJ0IFRZUEVfUkFOR0VfSElHSF9C T1VORF9JU19DT1VOVCBpbnRvIGEgcmVndWxhciBib3VuZC4gICovCisrICAgICAgaWYgKFRZUEVf UkFOR0VfSElHSF9CT1VORF9JU19DT1VOVCAobmV3X3R5cGUpKQorKwl7CisrCSAgVFlQRV9ISUdI X0JPVU5EIChuZXdfdHlwZSkgPSBUWVBFX0xPV19CT1VORCAobmV3X3R5cGUpCisrCQkJCSAgICAg ICArIFRZUEVfSElHSF9CT1VORCAobmV3X3R5cGUpIC0gMTsKKysJICBUWVBFX1JBTkdFX0hJR0hf Qk9VTkRfSVNfQ09VTlQgKG5ld190eXBlKSA9IDA7CisrCX0KKyAgICAgfQogIAorICAgLyogQ29w eSBwb2ludGVycyB0byBvdGhlciB0eXBlcy4gICovCisgICBpZiAoVFlQRV9UQVJHRVRfVFlQRSAo dHlwZSkpCisgICAgIFRZUEVfVEFSR0VUX1RZUEUgKG5ld190eXBlKSA9IAorLSAgICAgIGNvcHlf dHlwZV9yZWN1cnNpdmUgKG9iamZpbGUsIAorLQkJCSAgIFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUp LAorLQkJCSAgIGNvcGllZF90eXBlcyk7CisrICAgICAgY29weV90eXBlX3JlY3Vyc2l2ZV8xIChv YmpmaWxlLCAKKysJCQkgICAgIFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLAorKwkJCSAgICAgY29w aWVkX3R5cGVzKTsKKyAgIGlmIChUWVBFX1ZQVFJfQkFTRVRZUEUgKHR5cGUpKQorICAgICBUWVBF X1ZQVFJfQkFTRVRZUEUgKG5ld190eXBlKSA9IAorLSAgICAgIGNvcHlfdHlwZV9yZWN1cnNpdmUg KG9iamZpbGUsCistCQkJICAgVFlQRV9WUFRSX0JBU0VUWVBFICh0eXBlKSwKKy0JCQkgICBjb3Bp ZWRfdHlwZXMpOworKyAgICAgIGNvcHlfdHlwZV9yZWN1cnNpdmVfMSAob2JqZmlsZSwKKysJCQkg ICAgIFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSksCisrCQkJICAgICBjb3BpZWRfdHlwZXMpOwor ICAgLyogTWF5YmUgY29weSB0aGUgdHlwZV9zcGVjaWZpYyBiaXRzLgogIAotIC8qIEZsb2F0Zm9y bWF0IHBhaXJzLiAgKi8KLUBAIC0xMjMsNiArMTI2LDExIEBAIHN0YXRpYyB2b2lkIHByaW50X2Fy Z190eXBlcyAoc3RydWN0IGZpZWxkICosIGludCwgaW50KTsKLSBzdGF0aWMgdm9pZCBkdW1wX2Zu X2ZpZWxkbGlzdHMgKHN0cnVjdCB0eXBlICosIGludCk7Ci0gc3RhdGljIHZvaWQgcHJpbnRfY3Bs dXNfc3R1ZmYgKHN0cnVjdCB0eXBlICosIGludCk7CisgICAgICBOT1RFIGRyb3cvMjAwNS0xMi0w OTogV2UgZG8gbm90IGNvcHkgdGhlIEMrKy1zcGVjaWZpYyBiaXRzIGxpa2UKK0BAIC0zMTQzLDYg KzM0OTQsMTcgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs CisgICByZXR1cm4gbmV3X3R5cGU7CisgfQogIAotKy8qIFRoZSBoYXNoIHRhYmxlIGhvbGRpbmcg YWxsIGRpc2NhcmRhYmxlIGBzdHJ1Y3QgdHlwZSAqJyByZWZlcmVuY2VzLiAgKi8KLStzdGF0aWMg aHRhYl90IHR5cGVfZGlzY2FyZGFibGVfdGFibGU7CisrLyogUmVjdXJzaXZlbHkgY29weSAoZGVl cCBjb3B5KSBUWVBFLiAgUmV0dXJuIGEgbmV3IHR5cGUgYWxsb2NhdGVkIHVzaW5nCisrICAgbWFs bG9jLCBhIHNhdmVkIHR5cGUgaWYgd2UgaGF2ZSBhbHJlYWR5IHZpc2l0ZWQgVFlQRSAodXNpbmcg Q09QSUVEX1RZUEVTKSwKKysgICBvciBUWVBFIGlmIGl0IGlzIG5vdCBhc3NvY2lhdGVkIHdpdGgg T0JKRklMRS4gICovCiArCi0rLyogQ3VycmVudCB0eXBlX2Rpc2NhcmRhYmxlX2NoZWNrIHBhc3Mg dXNlZCBmb3IgVFlQRV9ESVNDQVJEQUJMRV9BR0UuICAqLwotK3N0YXRpYyBpbnQgdHlwZV9kaXNj YXJkYWJsZV9hZ2VfY3VycmVudDsKLSAKLSAvKiBBbGxvY2F0ZSBhIG5ldyBPQkpGSUxFLWFzc29j aWF0ZWQgdHlwZSBzdHJ1Y3R1cmUgYW5kIGZpbGwgaXQKLSAgICB3aXRoIHNvbWUgZGVmYXVsdHMu ICBTcGFjZSBmb3IgdGhlIHR5cGUgc3RydWN0dXJlIGlzIGFsbG9jYXRlZAotQEAgLTE1Myw2ICsx NjEsMzkgQEAgYWxsb2NfdHlwZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gICByZXR1cm4g dHlwZTsKKytzdHJ1Y3QgdHlwZSAqCisrY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IHR5cGUg KnR5cGUsCisrCQkgICAgIGh0YWJfdCBjb3BpZWRfdHlwZXMpCisreworKyAgcmV0dXJuIGNvcHlf dHlwZV9yZWN1cnNpdmVfMSAoVFlQRV9PQkpGSUxFICh0eXBlKSwgdHlwZSwgY29waWVkX3R5cGVz KTsKKyt9CisrCisgLyogTWFrZSBhIGNvcHkgb2YgdGhlIGdpdmVuIFRZUEUsIGV4Y2VwdCB0aGF0 IHRoZSBwb2ludGVyICYgcmVmZXJlbmNlCisgICAgdHlwZXMgYXJlIG5vdCBwcmVzZXJ2ZWQuCisg ICAgCitAQCAtMzE2NSw2ICszNTI3LDE5OSBAQCBjb3B5X3R5cGUgKGNvbnN0IHN0cnVjdCB0eXBl ICp0eXBlKQorICAgcmV0dXJuIG5ld190eXBlOwogIH0KICAKLSsvKiBEZWNsYXJlIFRZUEUgYXMg ZGlzY2FyZGFibGUgb24gbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gYnkgZnJlZV9hbGxfdHlwZXMu Ci0rICAgWW91IG11c3QgY2FsbCB0eXBlX21hcmtfdXNlZCBkdXJpbmcgZWFjaCBmcmVlX2FsbF90 eXBlcyB0byBwcm90ZWN0IFRZUEUgZnJvbQotKyAgIGJlaW5nIGRlYWxsb2NhdGVkLiAgKi8KKysv KiBDYWxsYmFjayB0eXBlIGZvciBtYWluX3R5cGVfY3Jhd2wuICAqLworK3R5cGVkZWYgaW50ICgq bWFpbl90eXBlX2NyYXdsX2l0ZXIpIChzdHJ1Y3QgdHlwZSAqdHlwZSwgdm9pZCAqZGF0YSk7Cisr CisrLyogSXRlcmF0ZSBhbGwgbWFpbl90eXBlIHN0cnVjdHVyZXMgcmVhY2hhYmxlIHRocm91Z2gg YW55IGBzdHJ1Y3QgdHlwZSAqJyBmcm9tCisrICAgVFlQRS4gIElURVIgd2lsbCBiZSBjYWxsZWQg b25seSBmb3Igb25lIHR5cGUgb2YgZWFjaCBtYWluX3R5cGUsIHVzZQorKyAgIFRZUEVfQ0hBSU4g dHJhdmVyc2FsIHRvIGZpbmQgYWxsIHRoZSB0eXBlIGluc3RhbmNlcy4gIElURVIgaXMgYmVpbmcg Y2FsbGVkCisrICAgZm9yIGVhY2ggbWFpbl90eXBlIGZvdW5kLiAgSVRFUiByZXR1cm5zIG5vbi16 ZXJvIGlmIG1haW5fdHlwZV9jcmF3bCBzaG91bGQKKysgICBkZXB0aC1maXJzdCBlbnRlciB0aGUg c3BlY2lmaWMgdHlwZS4gIElURVIgbXVzdCBwcm92aWRlIHNvbWUgZGV0ZWN0aW9uIGZvcgorKyAg IHJlZW50ZXJpbmcgdGhlIHNhbWUgbWFpbl90eXBlIGFzIHRoaXMgZnVuY3Rpb24gd291bGQgb3Ro ZXJ3aXNlIGVuZGxlc3NseQorKyAgIGxvb3AuICAqLwogKwogK3N0YXRpYyB2b2lkCi0rc2V0X3R5 cGVfYXNfZGlzY2FyZGFibGUgKHN0cnVjdCB0eXBlICp0eXBlKQorK21haW5fdHlwZV9jcmF3bCAo c3RydWN0IHR5cGUgKnR5cGUsIG1haW5fdHlwZV9jcmF3bF9pdGVyIGl0ZXIsIHZvaWQgKmRhdGEp CiArewotKyAgdm9pZCAqKnNsb3Q7CisrICBzdHJ1Y3QgdHlwZSAqdHlwZV9pdGVyOworKyAgaW50 IGk7CiArCi0rICBnZGJfYXNzZXJ0ICghVFlQRV9ESVNDQVJEQUJMRSAodHlwZSkpOworKyAgaWYg KCF0eXBlKQorKyAgICByZXR1cm47CiArCi0rICBUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSA9IDE7 Ci0rICBUWVBFX0RJU0NBUkRBQkxFX0FHRSAodHlwZSkgPSB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9j dXJyZW50OworKyAgZ2RiX2Fzc2VydCAoVFlQRV9PQkpGSUxFICh0eXBlKSA9PSBOVUxMKTsKICsK LSsgIHNsb3QgPSBodGFiX2ZpbmRfc2xvdCAodHlwZV9kaXNjYXJkYWJsZV90YWJsZSwgdHlwZSwg SU5TRVJUKTsKLSsgIGdkYl9hc3NlcnQgKCEqc2xvdCk7Ci0rICAqc2xvdCA9IHR5cGU7Ci0rfQor KyAgLyogYHN0cnVjdCBjcGx1c19zdHJ1Y3RfdHlwZScgaGFuZGxpbmcgaXMgdW5zdXBwb3J0ZWQg YnkgdGhpcyBmdW5jdGlvbi4gICovCisrICBnZGJfYXNzZXJ0ICgoVFlQRV9DT0RFICh0eXBlKSAh PSBUWVBFX0NPREVfU1RSVUNUCisrCSAgICAgICAmJiBUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVf Q09ERV9VTklPTikKKysJICAgICAgfHwgIUhBVkVfQ1BMVVNfU1RSVUNUICh0eXBlKSk7CiArCi0r LyogQWxsb2NhdGUgYSBuZXcgdHlwZSBsaWtlIGFsbG9jX3R5cGUgYnV0IHByZXNlcnZlIGZvciBp dCB0aGUgZGlzY2FyZGFiaWxpdHkKLSsgICBzdGF0ZSBvZiBQQVJFTlRfVFlQRS4gICovCisrICBp ZiAoISgqaXRlcikgKHR5cGUsIGRhdGEpKQorKyAgICByZXR1cm47CiArCi0rc3RhdGljIHN0cnVj dCB0eXBlICoKLSthbGxvY190eXBlX2FzX3BhcmVudCAoc3RydWN0IHR5cGUgKnBhcmVudF90eXBl KQotK3sKLSsgIHN0cnVjdCB0eXBlICpuZXdfdHlwZSA9IGFsbG9jX3R5cGVfY29weSAocGFyZW50 X3R5cGUpOworKyAgLyogSXRlcmF0ZSBhbGwgdGhlIHR5cGUgaW5zdGFuY2VzIG9mIHRoaXMgbWFp bl90eXBlLiAgKi8KKysgIHR5cGVfaXRlciA9IHR5cGU7CisrICBkbworKyAgICB7CisrICAgICAg Z2RiX2Fzc2VydCAoVFlQRV9NQUlOX1RZUEUgKHR5cGVfaXRlcikgPT0gVFlQRV9NQUlOX1RZUEUg KHR5cGUpKTsKICsKLSsgIGlmIChUWVBFX0RJU0NBUkRBQkxFIChwYXJlbnRfdHlwZSkpCi0rICAg IHNldF90eXBlX2FzX2Rpc2NhcmRhYmxlIChuZXdfdHlwZSk7CisrICAgICAgbWFpbl90eXBlX2Ny YXdsIChUWVBFX1BPSU5URVJfVFlQRSAodHlwZSksIGl0ZXIsIGRhdGEpOworKyAgICAgIG1haW5f dHlwZV9jcmF3bCAoVFlQRV9SRUZFUkVOQ0VfVFlQRSAodHlwZSksIGl0ZXIsIGRhdGEpOwogKwot KyAgcmV0dXJuIG5ld190eXBlOworKyAgICAgIHR5cGVfaXRlciA9IFRZUEVfQ0hBSU4gKHR5cGVf aXRlcik7CisrICAgIH0KKysgIHdoaWxlICh0eXBlX2l0ZXIgIT0gdHlwZSk7CisrCisrICBmb3Ig KGkgPSAwOyBpIDwgVFlQRV9ORklFTERTICh0eXBlKTsgaSsrKQorKyAgICBtYWluX3R5cGVfY3Jh d2wgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSksIGl0ZXIsIGRhdGEpOworKworKyAgbWFpbl90 eXBlX2NyYXdsIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgaXRlciwgZGF0YSk7CisrICBtYWlu X3R5cGVfY3Jhd2wgKFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSksIGl0ZXIsIGRhdGEpOwogK30K ICsKLSAvKiBBbGxvY2F0ZSBhIG5ldyBHREJBUkNILWFzc29jaWF0ZWQgdHlwZSBzdHJ1Y3R1cmUg YW5kIGZpbGwgaXQKLSAgICB3aXRoIHNvbWUgZGVmYXVsdHMuICBTcGFjZSBmb3IgdGhlIHR5cGUg c3RydWN0dXJlIGlzIGFsbG9jYXRlZAotICAgIG9uIHRoZSBoZWFwLiAgKi8KLUBAIC0yNzgsNyAr MzE5LDcgQEAgbWFrZV9wb2ludGVyX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlw ZSAqKnR5cGVwdHIpCi0gCi0gICBpZiAodHlwZXB0ciA9PSAwIHx8ICp0eXBlcHRyID09IDApCS8q IFdlJ2xsIG5lZWQgdG8gYWxsb2NhdGUgb25lLiAgKi8KLSAgICAgewotLSAgICAgIG50eXBlID0g YWxsb2NfdHlwZV9jb3B5ICh0eXBlKTsKLSsgICAgICBudHlwZSA9IGFsbG9jX3R5cGVfYXNfcGFy ZW50ICh0eXBlKTsKLSAgICAgICBpZiAodHlwZXB0cikKLSAJKnR5cGVwdHIgPSBudHlwZTsKLSAg ICAgfQotQEAgLTM1NSw3ICszOTYsNyBAQCBtYWtlX3JlZmVyZW5jZV90eXBlIChzdHJ1Y3QgdHlw ZSAqdHlwZSwgc3RydWN0IHR5cGUgKip0eXBlcHRyKQotIAotICAgaWYgKHR5cGVwdHIgPT0gMCB8 fCAqdHlwZXB0ciA9PSAwKQkvKiBXZSdsbCBuZWVkIHRvIGFsbG9jYXRlIG9uZS4gICovCi0gICAg IHsKLS0gICAgICBudHlwZSA9IGFsbG9jX3R5cGVfY29weSAodHlwZSk7Ci0rICAgICAgbnR5cGUg PSBhbGxvY190eXBlX2FzX3BhcmVudCAodHlwZSk7Ci0gICAgICAgaWYgKHR5cGVwdHIpCi0gCSp0 eXBlcHRyID0gbnR5cGU7Ci0gICAgIH0KLUBAIC03MjYsNiArNzY3LDcgQEAgY3JlYXRlX3Jhbmdl X3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwgc3RydWN0IHR5cGUgKmluZGV4X3R5cGUs Ci0gICAgIFRZUEVfWkFMTE9DIChyZXN1bHRfdHlwZSwgc2l6ZW9mIChzdHJ1Y3QgcmFuZ2VfYm91 bmRzKSk7Ci0gICBUWVBFX0xPV19CT1VORCAocmVzdWx0X3R5cGUpID0gbG93X2JvdW5kOwotICAg VFlQRV9ISUdIX0JPVU5EIChyZXN1bHRfdHlwZSkgPSBoaWdoX2JvdW5kOwotKyAgVFlQRV9CWVRF X1NUUklERSAocmVzdWx0X3R5cGUpID0gMDsKLSAKLSAgIGlmIChsb3dfYm91bmQgPj0gMCkKLSAg ICAgVFlQRV9VTlNJR05FRCAocmVzdWx0X3R5cGUpID0gMTsKLUBAIC04MjUsMjYgKzg2Nyw0NSBA QCBjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKnJlc3VsdF90eXBlLAotIAotICAgVFlQ RV9DT0RFIChyZXN1bHRfdHlwZSkgPSBUWVBFX0NPREVfQVJSQVk7Ci0gICBUWVBFX1RBUkdFVF9U WVBFIChyZXN1bHRfdHlwZSkgPSBlbGVtZW50X3R5cGU7Ci0tICBpZiAoZ2V0X2Rpc2NyZXRlX2Jv dW5kcyAocmFuZ2VfdHlwZSwgJmxvd19ib3VuZCwgJmhpZ2hfYm91bmQpIDwgMCkKLS0gICAgbG93 X2JvdW5kID0gaGlnaF9ib3VuZCA9IDA7Ci0tICBDSEVDS19UWVBFREVGIChlbGVtZW50X3R5cGUp OwotLSAgLyogQmUgY2FyZWZ1bCB3aGVuIHNldHRpbmcgdGhlIGFycmF5IGxlbmd0aC4gIEFkYSBh cnJheXMgY2FuIGJlCi0tICAgICBlbXB0eSBhcnJheXMgd2l0aCB0aGUgaGlnaF9ib3VuZCBiZWlu ZyBzbWFsbGVyIHRoYW4gdGhlIGxvd19ib3VuZC4KLS0gICAgIEluIHN1Y2ggY2FzZXMsIHRoZSBh cnJheSBsZW5ndGggc2hvdWxkIGJlIHplcm8uICAqLwotLSAgaWYgKGhpZ2hfYm91bmQgPCBsb3df Ym91bmQpCi0tICAgIFRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPSAwOwotLSAgZWxzZQotLSAg ICBUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUpID0KLS0gICAgICBUWVBFX0xFTkdUSCAoZWxlbWVu dF90eXBlKSAqIChoaWdoX2JvdW5kIC0gbG93X2JvdW5kICsgMSk7Ci0gICBUWVBFX05GSUVMRFMg KHJlc3VsdF90eXBlKSA9IDE7Ci0gICBUWVBFX0ZJRUxEUyAocmVzdWx0X3R5cGUpID0KLSAgICAg KHN0cnVjdCBmaWVsZCAqKSBUWVBFX1pBTExPQyAocmVzdWx0X3R5cGUsIHNpemVvZiAoc3RydWN0 IGZpZWxkKSk7Ci0gICBUWVBFX0lOREVYX1RZUEUgKHJlc3VsdF90eXBlKSA9IHJhbmdlX3R5cGU7 Ci0gICBUWVBFX1ZQVFJfRklFTEROTyAocmVzdWx0X3R5cGUpID0gLTE7Ci0gCi0tICAvKiBUWVBF X0ZMQUdfVEFSR0VUX1NUVUIgd2lsbCB0YWtlIGNhcmUgb2YgemVybyBsZW5ndGggYXJyYXlzICov Ci0rICAvKiBEV0FSRiBibG9ja3MgbWF5IGRlcGVuZCBvbiBydW50aW1lIGluZm9ybWF0aW9uIGxp a2UKLSsgICAgIERXX09QX1BVU0hfT0JKRUNUX0FERFJFU1Mgbm90IGJlaW5nIGF2YWlsYWJsZSBk dXJpbmcgdGhlCi0rICAgICBDUkVBVEVfQVJSQVlfVFlQRSB0aW1lLiAgKi8KLSsgIGlmIChUWVBF X1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5sb3cua2luZCAhPSBSQU5HRV9CT1VORF9LSU5EX0NP TlNUQU5UCi0rICAgICAgfHwgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+aGlnaC5raW5k ICE9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQKLSsgICAgICB8fCBUWVBFX0xPV19CT1VORF9V TkRFRklORUQgKHJhbmdlX3R5cGUpIAotKyAgICAgIHx8IFRZUEVfSElHSF9CT1VORF9VTkRFRklO RUQgKHJhbmdlX3R5cGUpIAotKyAgICAgIHx8IGdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5 cGUsICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKSA8IDApCi0rICAgIHsKLSsgICAgICBsb3dfYm91 bmQgPSAwOwotKyAgICAgIGhpZ2hfYm91bmQgPSAtMTsKLSsgICAgfQorKy8qIEEgaGVscGVyIGZv ciBkZWxldGVfdHlwZSB3aGljaCBkZWxldGVzIGEgbWFpbl90eXBlIGFuZCB0aGUgdGhpbmdzIHRv IHdoaWNoCisrICAgaXQgcmVmZXJzLiAgVFlQRSBpcyBhIHR5cGUgd2hvc2UgbWFpbl90eXBlIHdl IHdpc2ggdG8gZGVzdHJveS4gICovCiArCi0rICAvKiBCZSBjYXJlZnVsIHdoZW4gc2V0dGluZyB0 aGUgYXJyYXkgbGVuZ3RoLiAgQWRhIGFycmF5cyBjYW4gYmUKLSsgICAgIGVtcHR5IGFycmF5cyB3 aXRoIHRoZSBoaWdoX2JvdW5kIGJlaW5nIHNtYWxsZXIgdGhhbiB0aGUgbG93X2JvdW5kLgotKyAg ICAgSW4gc3VjaCBjYXNlcywgdGhlIGFycmF5IGxlbmd0aCBzaG91bGQgYmUgemVyby4gIFRZUEVf VEFSR0VUX1NUVUIgbmVlZHMgdG8KLSsgICAgIGJlIGNoZWNrZWQgYXMgaXQgbWF5IGhhdmUgZGVw ZW5kZW5jaWVzIG9uIERXQVJGIGJsb2NrcyBkZXBlbmRpbmcgb24KLSsgICAgIHJ1bnRpbWUgaW5m b3JtYXRpb24gbm90IGF2YWlsYWJsZSBkdXJpbmcgdGhlIENSRUFURV9BUlJBWV9UWVBFIHRpbWUu ICAqLwotKyAgaWYgKGhpZ2hfYm91bmQgPCBsb3dfYm91bmQgfHwgVFlQRV9UQVJHRVRfU1RVQiAo ZWxlbWVudF90eXBlKSkKLSsgICAgVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9IDA7Ci0rICBl bHNlCisrc3RhdGljIHZvaWQKKytkZWxldGVfbWFpbl90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSkK Kyt7CisrICBpbnQgaTsKKysKKysgIGdkYl9hc3NlcnQgKFRZUEVfRElTQ0FSREFCTEUgKHR5cGUp KTsKKysgIGdkYl9hc3NlcnQgKFRZUEVfT0JKRklMRSAodHlwZSkgPT0gTlVMTCk7CisrCisrICB4 ZnJlZSAoVFlQRV9OQU1FICh0eXBlKSk7CisrICB4ZnJlZSAoVFlQRV9UQUdfTkFNRSAodHlwZSkp OworKworKyAgZm9yIChpID0gMDsgaSA8IFRZUEVfTkZJRUxEUyAodHlwZSk7ICsraSkKICsgICAg ewotKyAgICAgIENIRUNLX1RZUEVERUYgKGVsZW1lbnRfdHlwZSk7Ci0rICAgICAgVFlQRV9MRU5H VEggKHJlc3VsdF90eXBlKSA9Ci0rCVRZUEVfTEVOR1RIIChlbGVtZW50X3R5cGUpICogKGhpZ2hf Ym91bmQgLSBsb3dfYm91bmQgKyAxKTsKKysgICAgICB4ZnJlZSAoVFlQRV9GSUVMRF9OQU1FICh0 eXBlLCBpKSk7CisrCisrICAgICAgaWYgKFRZUEVfRklFTERfTE9DX0tJTkQgKHR5cGUsIGkpID09 IEZJRUxEX0xPQ19LSU5EX1BIWVNOQU1FKQorKwl4ZnJlZSAoVFlQRV9GSUVMRF9TVEFUSUNfUEhZ U05BTUUgKHR5cGUsIGkpKTsKICsgICAgfQorKyAgeGZyZWUgKFRZUEVfRklFTERTICh0eXBlKSk7 CiArCi0gICBpZiAoVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9PSAwKQotLSAgICBUWVBFX1RB UkdFVF9TVFVCIChyZXN1bHRfdHlwZSkgPSAxOworKyAgZ2RiX2Fzc2VydCAoIUhBVkVfQ1BMVVNf U1RSVUNUICh0eXBlKSk7CisrCisrICB4ZnJlZSAoVFlQRV9NQUlOX1RZUEUgKHR5cGUpKTsKKyt9 CisrCisrLyogRGVsZXRlIGFsbCB0aGUgaW5zdGFuY2VzIG9uIFRZUEVfQ0hBSU4gb2YgVFlQRSwg aW5jbHVkaW5nIHRoZWlyIHJlZmVyZW5jZWQKKysgICBtYWluX3R5cGUuICBUWVBFIG11c3QgYmUg YSByZWNsYWltYWJsZSB0eXBlIC0gbmVpdGhlciBwZXJtYW5lbnQgbm9yIG9iamZpbGUKKysgICBh c3NvY2lhdGVkLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2RlbGV0ZV90eXBlX2NoYWluIChzdHJ1 Y3QgdHlwZSAqdHlwZSkKKyt7CisrICBzdHJ1Y3QgdHlwZSAqdHlwZV9pdGVyLCAqdHlwZV9pdGVy X3RvX2ZyZWU7CisrCisrICBnZGJfYXNzZXJ0IChUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSk7Cisr ICBnZGJfYXNzZXJ0IChUWVBFX09CSkZJTEUgKHR5cGUpID09IE5VTEwpOworKworKyAgZGVsZXRl X21haW5fdHlwZSAodHlwZSk7CisrCisrICB0eXBlX2l0ZXIgPSB0eXBlOworKyAgZG8KICsgICAg ewotKyAgICAgIC8qIFRoZSByZWFsIHNpemUgd2lsbCBiZSBjb21wdXRlZCBmb3Igc3BlY2lmaWMg aW5zdGFuY2VzIGJ5Ci0rCSBDSEVDS19UWVBFREVGLiAgKi8KLSsgICAgICBUWVBFX1RBUkdFVF9T VFVCIChyZXN1bHRfdHlwZSkgPSAxOworKyAgICAgIHR5cGVfaXRlcl90b19mcmVlID0gdHlwZV9p dGVyOworKyAgICAgIHR5cGVfaXRlciA9IFRZUEVfQ0hBSU4gKHR5cGVfaXRlcik7CisrICAgICAg eGZyZWUgKHR5cGVfaXRlcl90b19mcmVlKTsKICsgICAgfQotIAotICAgcmV0dXJuIHJlc3VsdF90 eXBlOwotIH0KLUBAIC0xMzUzLDYgKzE0MTQsMTA1IEBAIHN0dWJfbm9uYW1lX2NvbXBsYWludCAo dm9pZCkKLSAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygic3R1YiB0eXBlIGhh cyBOVUxMIG5hbWUiKSk7Ci0gfQotIAotKy8qIENhbGN1bGF0ZSB0aGUgbWVtb3J5IGxlbmd0aCBv ZiBhcnJheSBUWVBFLgorKyAgd2hpbGUgKHR5cGVfaXRlciAhPSB0eXBlKTsKKyt9CiArCi0rICAg VEFSR0VUX1RZUEUgc2hvdWxkIGJlIHNldCB0byBgY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRf VFlQRSAodHlwZSkpJyBhcwotKyAgIGEgcGVyZm9ybWFuY2UgaGludC4gIEZlZWwgZnJlZSB0byBw YXNzIE5VTEwuICBTZXQgRlVMTF9TUEFOIHRvIHJldHVybiB0aGUKLSsgICBzaXplIGluY2wuIHRo ZSBwb3NzaWJsZSBwYWRkaW5nIG9mIHRoZSBsYXN0IGVsZW1lbnQgLSBpdCBtYXkgZGlmZmVyIGZy b20gdGhlCi0rICAgY2xlYXJlZCBGVUxMX1NQQU4gcmV0dXJuIHZhbHVlICh0aGUgZXhwZWN0ZWQg U0laRU9GKSBmb3Igbm9uLXplcm8KLSsgICBUWVBFX0JZVEVfU1RSSURFIHZhbHVlcy4gICovCisr LyogSGFzaCBmdW5jdGlvbiBmb3IgdHlwZV9kaXNjYXJkYWJsZV90YWJsZS4gICovCiArCi0rc3Rh dGljIExPTkdFU1QKLSt0eXBlX2xlbmd0aF9nZXQgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3Qg dHlwZSAqdGFyZ2V0X3R5cGUsIGludCBmdWxsX3NwYW4pCisrc3RhdGljIGhhc2h2YWxfdAorK3R5 cGVfZGlzY2FyZGFibGVfaGFzaCAoY29uc3Qgdm9pZCAqcCkKICt7Ci0rICBzdHJ1Y3QgdHlwZSAq cmFuZ2VfdHlwZTsKLSsgIExPTkdFU1QgYnl0ZV9zdHJpZGUgPSAwOwkvKiBgPSAwJyBmb3IgYSBm YWxzZSBHQ0Mgd2FybmluZy4gICovCi0rICBMT05HRVNUIGNvdW50LCBlbGVtZW50X3NpemUsIHJl dHZhbDsKKysgIGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlID0gcDsKICsKLSsgIGlmIChUWVBFX0NP REUgKHR5cGUpICE9IFRZUEVfQ09ERV9BUlJBWQotKyAgICAgICYmIFRZUEVfQ09ERSAodHlwZSkg IT0gVFlQRV9DT0RFX1NUUklORykKLSsgICAgcmV0dXJuIFRZUEVfTEVOR1RIICh0eXBlKTsKKysg IHJldHVybiBodGFiX2hhc2hfcG9pbnRlciAoVFlQRV9NQUlOX1RZUEUgKHR5cGUpKTsKKyt9CiAr Ci0rICAvKiBBdm9pZCBleGVjdXRpbmcgVFlQRV9ISUdIX0JPVU5EIGZvciBpbnZhbGlkICh1bmFs bG9jYXRlZC91bmFzc29jaWF0ZWQpCi0rICAgICBGb3J0cmFuIGFycmF5cy4gIFRoZSBhbGxvY2F0 ZWQgZGF0YSB3aWxsIG5ldmVyIGJlIHVzZWQgc28gdGhleSBjYW4gYmUKLSsgICAgIHplcm8tbGVu Z3RoLiAgKi8KLSsgIGlmIChvYmplY3RfYWRkcmVzc19kYXRhX25vdF92YWxpZCAodHlwZSkpCi0r ICAgIHJldHVybiAwOworKy8qIEVxdWFsaXR5IGZ1bmN0aW9uIGZvciB0eXBlX2Rpc2NhcmRhYmxl X3RhYmxlLiAgKi8KICsKLSsgIHJhbmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKHR5cGUpOwot KyAgaWYgKFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkKLSsgICAgICB8fCBU WVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSkKKytzdGF0aWMgaW50CisrdHlw ZV9kaXNjYXJkYWJsZV9lcXVhbCAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKKyt7Cisr ICBjb25zdCBzdHJ1Y3QgdHlwZSAqbGVmdCA9IGE7CisrICBjb25zdCBzdHJ1Y3QgdHlwZSAqcmln aHQgPSBiOworKworKyAgcmV0dXJuIFRZUEVfTUFJTl9UWVBFIChsZWZ0KSA9PSBUWVBFX01BSU5f VFlQRSAocmlnaHQpOworK30KKysKKysvKiBBIGhlbHBlciBmb3IgdHlwZV9tYXJrX3VzZWQuICAq LworKworK3N0YXRpYyBpbnQKKyt0eXBlX21hcmtfdXNlZF9jcmF3bCAoc3RydWN0IHR5cGUgKnR5 cGUsIHZvaWQgKnVudXNlZCkKKyt7CisrICBpZiAoIVRZUEVfRElTQ0FSREFCTEUgKHR5cGUpKQog KyAgICByZXR1cm4gMDsKLSsgIGNvdW50ID0gVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSAt IFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSArIDE7Ci0rICAvKiBJdCBtYXkgaGFwcGVuIGZv ciB3cm9uZyBEV0FSRiBhbm5vdGF0aW9ucyByZXR1cm5pbmcgZ2FyYmFnZSBkYXRhLiAgKi8KLSsg IGlmIChjb3VudCA8IDApCi0rICAgIHdhcm5pbmcgKF8oIlJhbmdlIGZvciB0eXBlICVzIGhhcyBp bnZhbGlkIGJvdW5kcyAlcy4uJXMiKSwKLSsJICAgICBUWVBFX05BTUUgKHR5cGUpLCBwbG9uZ2Vz dCAoVFlQRV9MT1dfQk9VTkQgKHJhbmdlX3R5cGUpKSwKLSsJICAgICBwbG9uZ2VzdCAoVFlQRV9I SUdIX0JPVU5EIChyYW5nZV90eXBlKSkpOwotKyAgLyogVGhlIGNvZGUgYmVsb3cgZG9lcyBub3Qg aGFuZGxlIGNvdW50ID09IDAgcmlnaHQuICAqLwotKyAgaWYgKGNvdW50IDw9IDApCisrCisrICBp ZiAoVFlQRV9ESVNDQVJEQUJMRV9BR0UgKHR5cGUpID09IHR5cGVfZGlzY2FyZGFibGVfYWdlX2N1 cnJlbnQpCiArICAgIHJldHVybiAwOwotKyAgaWYgKGZ1bGxfc3BhbiB8fCBjb3VudCA+IDEpCi0r ICAgIHsKLSsgICAgICAvKiBXZSBkbyBub3QgdXNlIFRZUEVfQVJSQVlfQllURV9TVFJJREVfVkFM VUUgKHR5cGUpIGhlcmUgYXMgd2Ugd2FudCB0bwotKyAgICAgICAgIGZvcmNlIEZVTExfU1BBTiB0 byAxLiAgKi8KLSsgICAgICBieXRlX3N0cmlkZSA9IFRZUEVfQllURV9TVFJJREUgKHJhbmdlX3R5 cGUpOwotKyAgICAgIGlmIChieXRlX3N0cmlkZSA9PSAwKQotKyAgICAgICAgewotKwkgIGlmICh0 YXJnZXRfdHlwZSA9PSBOVUxMKQotKwkgICAgdGFyZ2V0X3R5cGUgPSBjaGVja190eXBlZGVmIChU WVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7Ci0rCSAgYnl0ZV9zdHJpZGUgPSB0eXBlX2xlbmd0aF9n ZXQgKHRhcmdldF90eXBlLCBOVUxMLCAxKTsKLSsJfQotKyAgICB9CiArCi0rICAvKiBGb3Igbm93 LCB3ZSBjb25zZXJ2YXRpdmVseSB0YWtlIHRoZSBhcnJheSBsZW5ndGggdG8gYmUgMCBpZiBpdHMg bGVuZ3RoCi0rICAgICBleGNlZWRzIFVJTlRfTUFYLiAgVGhlIGNvZGUgYmVsb3cgYXNzdW1lcyB0 aGF0IGZvciB4IDwgMCwKLSsgICAgIChVTE9OR0VTVCkgeCA9PSAteCArIFVMT05HRVNUX01BWCAr IDEsIHdoaWNoIGlzIHRlY2huaWNhbGx5IG5vdCBndWFyYW50ZWVkCi0rICAgICBieSBDLCBidXQg aXMgdXN1YWxseSB0cnVlIChiZWNhdXNlIGl0IHdvdWxkIGJlIHRydWUgaWYgeCB3ZXJlIHVuc2ln bmVkCi0rICAgICB3aXRoIGl0cyBoaWdoLW9yZGVyIGJpdCBvbikuIEl0IHVzZXMgdGhlIGZhY3Qg dGhhdCBoaWdoX2JvdW5kLWxvd19ib3VuZCBpcwotKyAgICAgYWx3YXlzIHJlcHJlc2VudGFibGUg aW4gVUxPTkdFU1QgYW5kIHRoYXQgaWYgaGlnaF9ib3VuZC1sb3dfYm91bmQrMQotKyAgICAgb3Zl cmZsb3dzLCBpdCBvdmVyZmxvd3MgdG8gMC4gIFdlIG11c3QgY2hhbmdlIHRoZXNlIHRlc3RzIGlm IHdlIGRlY2lkZSB0bwotKyAgICAgaW5jcmVhc2UgdGhlIHJlcHJlc2VudGF0aW9uIG9mIFRZUEVf TEVOR1RIIGZyb20gdW5zaWduZWQgaW50IHRvIFVMT05HRVNULgotKyAgICAgKi8KKysgIFRZUEVf RElTQ0FSREFCTEVfQUdFICh0eXBlKSA9IHR5cGVfZGlzY2FyZGFibGVfYWdlX2N1cnJlbnQ7CiAr Ci0rICBpZiAoZnVsbF9zcGFuKQotKyAgICB7Ci0rICAgICAgcmV0dmFsID0gY291bnQgKiBieXRl X3N0cmlkZTsKLSsgICAgICBpZiAoY291bnQgPT0gMCB8fCByZXR2YWwgLyBjb3VudCAhPSBieXRl X3N0cmlkZSB8fCByZXR2YWwgPiBVSU5UX01BWCkKLSsJcmV0dmFsID0gMDsKLSsgICAgICByZXR1 cm4gcmV0dmFsOwotKyAgICB9Ci0rICBpZiAodGFyZ2V0X3R5cGUgPT0gTlVMTCkKLSsgICAgdGFy Z2V0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7Ci0rICBl bGVtZW50X3NpemUgPSB0eXBlX2xlbmd0aF9nZXQgKHRhcmdldF90eXBlLCBOVUxMLCAxKTsKLSsg IHJldHZhbCA9IChjb3VudCAtIDEpICogYnl0ZV9zdHJpZGUgKyBlbGVtZW50X3NpemU7Ci0rICBp ZiAocmV0dmFsIDwgZWxlbWVudF9zaXplCi0rICAgICAgfHwgKGJ5dGVfc3RyaWRlICE9IDAKLSsg ICAgICAgICAgJiYgKHJldHZhbCAtIGVsZW1lbnRfc2l6ZSkgLyBieXRlX3N0cmlkZSAhPSBjb3Vu dCAtIDEpCi0rICAgICAgfHwgcmV0dmFsID4gVUlOVF9NQVgpCi0rICAgIHJldHZhbCA9IDA7Ci0r ICByZXR1cm4gcmV0dmFsOworKyAgLyogQ29udGludWUgdGhlIHRyYXZlcnNhbC4gICovCisrICBy ZXR1cm4gMTsKICt9CiArCi0rLyogUHJlcGFyZSBUWVBFIGFmdGVyIGJlaW5nIHJlYWQgaW4gYnkg dGhlIGJhY2tlbmQuICBDdXJyZW50bHkgdGhpcyBmdW5jdGlvbgotKyAgIG9ubHkgcHJvcGFnYXRl cyB0aGUgVFlQRV9EWU5BTUlDIGZsYWcuICAqLworKy8qIE1hcmsgVFlQRSBhbmQgaXRzIGNvbm5l Y3RlZCB0eXBlcyBhcyB1c2VkIGluIHRoaXMgZnJlZV9hbGxfdHlwZXMgcGFzcy4gICovCiArCiAr dm9pZAotK2ZpbmFsaXplX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlKQorK3R5cGVfbWFya191c2Vk IChzdHJ1Y3QgdHlwZSAqdHlwZSkKICt7Ci0rICBpbnQgaTsKKysgIGlmICh0eXBlID09IE5VTEwp CisrICAgIHJldHVybjsKICsKLSsgIGZvciAoaSA9IDA7IGkgPCBUWVBFX05GSUVMRFMgKHR5cGUp OyArK2kpCi0rICAgIGlmIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpICYmIFRZUEVfRFlOQU1J QyAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSkpCi0rICAgICAgYnJlYWs7CisrICBpZiAoIVRZ UEVfRElTQ0FSREFCTEUgKHR5cGUpKQorKyAgICByZXR1cm47CiArCi0rICAvKiBGSVhNRTogY3Bs dXNfc3R1ZmYgaXMgaWdub3JlZCBoZXJlLiAgKi8KLSsgIGlmIChpIDwgVFlQRV9ORklFTERTICh0 eXBlKQotKyAgICAgIHx8IChUWVBFX1ZQVFJfQkFTRVRZUEUgKHR5cGUpICYmIFRZUEVfRFlOQU1J QyAoVFlQRV9WUFRSX0JBU0VUWVBFICh0eXBlKSkpCi0rICAgICAgfHwgKFRZUEVfVEFSR0VUX1RZ UEUgKHR5cGUpICYmIFRZUEVfRFlOQU1JQyAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpKSkKLSsg ICAgVFlQRV9EWU5BTUlDICh0eXBlKSA9IDE7CisrICBtYWluX3R5cGVfY3Jhd2wgKHR5cGUsIHR5 cGVfbWFya191c2VkX2NyYXdsLCBOVUxMKTsKICt9CiArCi0gLyogQWRkZWQgYnkgQnJ5YW4gQm9y ZWhhbSwgS2V3aWxsLCBTdW4gU2VwIDE3IDE4OjA3OjE3IDE5ODkuCi0gCi0gICAgSWYgdGhpcyBp cyBhIHN0dWJiZWQgc3RydWN0IChpLmUuIGRlY2xhcmVkIGFzIHN0cnVjdCBmb28gKiksIHNlZSBp ZgotQEAgLTE0ODYsNTIgKzE2NDYsMzYgQEAgY2hlY2tfdHlwZWRlZiAoc3RydWN0IHR5cGUgKnR5 cGUpCi0gICAgICAgICB9Ci0gICAgIH0KLSAKLS0gIGlmIChUWVBFX1RBUkdFVF9TVFVCICh0eXBl KSkKLSsgIC8qIGNvcHlfdHlwZV9yZWN1cnNpdmUgYXV0b21hdGljYWxseSBtYWtlcyB0aGUgcmVz dWx0aW5nIHR5cGUgY29udGFpbmluZyBvbmx5Ci0rICAgICBjb25zdGFudCB2YWx1ZXMgZXhwZWN0 ZWQgYnkgdGhlIGNhbGxlcnMgb2YgdGhpcyBmdW5jdGlvbi4gICovCi0rICBpZiAoVFlQRV9EWU5B TUlDICh0eXBlKSkKLSsgICAgewotKyAgICAgIGh0YWJfdCBjb3BpZWRfdHlwZXM7Ci0rICAgICAg c3RydWN0IHR5cGUgKnR5cGVfb2xkID0gdHlwZTsKKysvKiBBIHRyYXZlcnNlIGNhbGxiYWNrIGZv ciB0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlIHdoaWNoIHJlbW92ZXMgYW55CisrICAgdHlwZV9kaXNj YXJkYWJsZSB3aG9zZSByZWZlcmVuY2UgY291bnQgaXMgbm93IHplcm8gKHVudXNlZCBsaW5rKS4g ICovCiArCi0rICAgICAgY29waWVkX3R5cGVzID0gY3JlYXRlX2NvcGllZF90eXBlc19oYXNoIChO VUxMKTsKLSsgICAgICB0eXBlID0gY29weV90eXBlX3JlY3Vyc2l2ZSAodHlwZSwgY29waWVkX3R5 cGVzKTsKLSsgICAgICBodGFiX2RlbGV0ZSAoY29waWVkX3R5cGVzKTsKKytzdGF0aWMgaW50Cisr dHlwZV9kaXNjYXJkYWJsZV9yZW1vdmUgKHZvaWQgKipzbG90LCB2b2lkICp1bnVzZWQpCisrewor KyAgc3RydWN0IHR5cGUgKnR5cGUgPSAqc2xvdDsKICsKLSsgICAgICBnZGJfYXNzZXJ0IChUWVBF X0RZTkFNSUMgKHR5cGUpID09IDApOworKyAgZ2RiX2Fzc2VydCAoVFlQRV9ESVNDQVJEQUJMRSAo dHlwZSkpOworKworKyAgaWYgKFRZUEVfRElTQ0FSREFCTEVfQUdFICh0eXBlKSAhPSB0eXBlX2Rp c2NhcmRhYmxlX2FnZV9jdXJyZW50KQorKyAgICB7CisrICAgICAgZGVsZXRlX3R5cGVfY2hhaW4g KHR5cGUpOworKworKyAgICAgIGh0YWJfY2xlYXJfc2xvdCAodHlwZV9kaXNjYXJkYWJsZV90YWJs ZSwgc2xvdCk7CiArICAgIH0KICsKLSsgIGlmIChUWVBFX1RBUkdFVF9TVFVCICh0eXBlKSB8fCBU WVBFX0RZTkFNSUMgKHR5cGUpKQotICAgICB7Ci0tICAgICAgc3RydWN0IHR5cGUgKnJhbmdlX3R5 cGU7Ci0gICAgICAgc3RydWN0IHR5cGUgKnRhcmdldF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQ RV9UQVJHRVRfVFlQRSAodHlwZSkpOwotIAotKyAgICAgIGlmIChUWVBFX0RZTkFNSUMgKHR5cGUp KQotKwlUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSA9IHRhcmdldF90eXBlOwotICAgICAgIGlmIChU WVBFX1NUVUIgKHRhcmdldF90eXBlKSB8fCBUWVBFX1RBUkdFVF9TVFVCICh0YXJnZXRfdHlwZSkp Ci0gCXsKLSAJICAvKiBFbXB0eS4gICovCi0gCX0KLSAgICAgICBlbHNlIGlmIChUWVBFX0NPREUg KHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWQotLQkgICAgICAgJiYgVFlQRV9ORklFTERTICh0eXBl KSA9PSAxCi0tCSAgICAgICAmJiAoVFlQRV9DT0RFIChyYW5nZV90eXBlID0gVFlQRV9JTkRFWF9U WVBFICh0eXBlKSkKLS0JCSAgID09IFRZUEVfQ09ERV9SQU5HRSkpCi0rCSAgICAgICB8fCBUWVBF X0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9TVFJJTkcpCi0gCXsKLSAJICAvKiBOb3cgcmVjb21w dXRlIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5IHR5cGUsIGJhc2VkIG9uIGl0cwotLQkgICAgIG51 bWJlciBvZiBlbGVtZW50cyBhbmQgdGhlIHRhcmdldCB0eXBlJ3MgbGVuZ3RoLgotLQkgICAgIFdh dGNoIG91dCBmb3IgQWRhIG51bGwgQWRhIGFycmF5cyB3aGVyZSB0aGUgaGlnaCBib3VuZAotLQkg ICAgIGlzIHNtYWxsZXIgdGhhbiB0aGUgbG93IGJvdW5kLiAqLwotLQkgIGNvbnN0IExPTkdFU1Qg bG93X2JvdW5kID0gVFlQRV9MT1dfQk9VTkQgKHJhbmdlX3R5cGUpOwotLQkgIGNvbnN0IExPTkdF U1QgaGlnaF9ib3VuZCA9IFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSk7Ci0tCSAgVUxPTkdF U1QgbGVuOwotLQotLQkgIGlmIChoaWdoX2JvdW5kIDwgbG93X2JvdW5kKQotLQkgICAgbGVuID0g MDsKLS0JICBlbHNlCi0tCSAgICB7Ci0tCSAgICAgIC8qIEZvciBub3csIHdlIGNvbnNlcnZhdGl2 ZWx5IHRha2UgdGhlIGFycmF5IGxlbmd0aCB0byBiZSAwCi0tCQkgaWYgaXRzIGxlbmd0aCBleGNl ZWRzIFVJTlRfTUFYLiAgVGhlIGNvZGUgYmVsb3cgYXNzdW1lcwotLQkJIHRoYXQgZm9yIHggPCAw LCAoVUxPTkdFU1QpIHggPT0gLXggKyBVTE9OR0VTVF9NQVggKyAxLAotLQkJIHdoaWNoIGlzIHRl Y2huaWNhbGx5IG5vdCBndWFyYW50ZWVkIGJ5IEMsIGJ1dCBpcyB1c3VhbGx5IHRydWUKLS0JCSAo YmVjYXVzZSBpdCB3b3VsZCBiZSB0cnVlIGlmIHggd2VyZSB1bnNpZ25lZCB3aXRoIGl0cwotLQkJ IGhpZ2gtb3JkZXIgYml0IG9uKS4gSXQgdXNlcyB0aGUgZmFjdCB0aGF0Ci0tCQkgaGlnaF9ib3Vu ZC1sb3dfYm91bmQgaXMgYWx3YXlzIHJlcHJlc2VudGFibGUgaW4KLS0JCSBVTE9OR0VTVCBhbmQg dGhhdCBpZiBoaWdoX2JvdW5kLWxvd19ib3VuZCsxIG92ZXJmbG93cywKLS0JCSBpdCBvdmVyZmxv d3MgdG8gMC4gIFdlIG11c3QgY2hhbmdlIHRoZXNlIHRlc3RzIGlmIHdlIAotLQkJIGRlY2lkZSB0 byBpbmNyZWFzZSB0aGUgcmVwcmVzZW50YXRpb24gb2YgVFlQRV9MRU5HVEgKLS0JCSBmcm9tIHVu c2lnbmVkIGludCB0byBVTE9OR0VTVC4gKi8KLS0JICAgICAgVUxPTkdFU1QgdWxvdyA9IGxvd19i b3VuZCwgdWhpZ2ggPSBoaWdoX2JvdW5kOwotLQkgICAgICBVTE9OR0VTVCB0bGVuID0gVFlQRV9M RU5HVEggKHRhcmdldF90eXBlKTsKLS0KLS0JICAgICAgbGVuID0gdGxlbiAqICh1aGlnaCAtIHVs b3cgKyAxKTsKLS0JICAgICAgaWYgKHRsZW4gPT0gMCB8fCAobGVuIC8gdGxlbiAtIDEgKyB1bG93 KSAhPSB1aGlnaCAKLS0JCSAgfHwgbGVuID4gVUlOVF9NQVgpCi0tCQlsZW4gPSAwOwotLQkgICAg fQotLQkgIFRZUEVfTEVOR1RIICh0eXBlKSA9IGxlbjsKLSsJICAgICBudW1iZXIgb2YgZWxlbWVu dHMgYW5kIHRoZSB0YXJnZXQgdHlwZSdzIGxlbmd0aC4gICovCi0rCSAgVFlQRV9MRU5HVEggKHR5 cGUpID0gdHlwZV9sZW5ndGhfZ2V0ICh0eXBlLCB0YXJnZXRfdHlwZSwgMCk7Ci0gCSAgVFlQRV9U QVJHRVRfU1RVQiAodHlwZSkgPSAwOwotIAl9Ci0gICAgICAgZWxzZSBpZiAoVFlQRV9DT0RFICh0 eXBlKSA9PSBUWVBFX0NPREVfUkFOR0UpCi1AQCAtMTUzOSw5ICsxNjgzLDEyIEBAIGNoZWNrX3R5 cGVkZWYgKHN0cnVjdCB0eXBlICp0eXBlKQotIAkgIFRZUEVfTEVOR1RIICh0eXBlKSA9IFRZUEVf TEVOR1RIICh0YXJnZXRfdHlwZSk7Ci0gCSAgVFlQRV9UQVJHRVRfU1RVQiAodHlwZSkgPSAwOwot IAl9Ci0rICAgICAgVFlQRV9EWU5BTUlDICh0eXBlKSA9IDA7Ci0gICAgIH0KKysgIHJldHVybiAx OworK30KKysKKysvKiBGcmVlIGFsbCB0aGUgcmVjbGFpbWFibGUgdHlwZXMgdGhhdCBoYXZlIGJl ZW4gYWxsb2NhdGVkIGFuZCB0aGF0IGhhdmUKKysgICBjdXJyZW50bHkgemVybyByZWZlcmVuY2Ug Y291bnRlci4KKysKKysgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhZnRlciBlYWNoIGNvbW1h bmQsIHN1Y2Nlc3NmdWwgb3Igbm90LiAgVXNlIHRoaXMKKysgICBjbGVhbnVwIG9ubHkgaW4gdGhl IEdEQiBpZGxlIHN0YXRlIGFzIEdEQiBvbmx5IG1hcmtzIHRob3NlIHR5cGVzIHVzZWQgYnkKKysg ICBnbG9iYWxseSB0cmFja2VkIG9iamVjdHMgKHdpdGggbm8gYXV0b3ZhcmlhYmxlIHJlZmVyZW5j ZXMgdHJhY2tpbmcpLiAgKi8KICsKLSAgIC8qIENhY2hlIFRZUEVfTEVOR1RIIGZvciBmdXR1cmUg dXNlLiAgKi8KLSAgIFRZUEVfTEVOR1RIIChvcmlnX3R5cGUpID0gVFlQRV9MRU5HVEggKHR5cGUp OworK3ZvaWQKKytmcmVlX2FsbF90eXBlcyAodm9pZCkKKyt7CisrICAvKiBNYXJrIGEgbmV3IHBh c3MuICBBcyBHREIgY2hlY2tzIGFsbCB0aGUgZW50cmllcyB3ZXJlIHZpc2l0ZWQgYWZ0ZXIgZWFj aAorKyAgICAgcGFzcyB0aGVyZSBjYW5ub3QgYmUgYW55IHN0YWxlIGVudHJpZXMgYWxyZWFkeSBj b250YWluaW5nIHRoZSBjaGFuZ2VkCisrICAgICB2YWx1ZS4gICovCisrICB0eXBlX2Rpc2NhcmRh YmxlX2FnZV9jdXJyZW50IF49IDE7CiArCi0gICByZXR1cm4gdHlwZTsKLSB9Ci0gCi1AQCAtMTgx MSw2ICsxOTU4LDggQEAgaW5pdF90eXBlIChlbnVtIHR5cGVfY29kZSBjb2RlLCBpbnQgbGVuZ3Ro LCBpbnQgZmxhZ3MsCi0gICAgIFRZUEVfTk9UVEVYVCAodHlwZSkgPSAxOwotICAgaWYgKGZsYWdz ICYgVFlQRV9GTEFHX0ZJWEVEX0lOU1RBTkNFKQotICAgICBUWVBFX0ZJWEVEX0lOU1RBTkNFICh0 eXBlKSA9IDE7Ci0rICBpZiAoZmxhZ3MgJiBUWVBFX0ZMQUdfR05VX0lGVU5DKQotKyAgICBUWVBF X0dOVV9JRlVOQyAodHlwZSkgPSAxOworKyAgb2JzZXJ2ZXJfbm90aWZ5X21hcmtfdXNlZCAoKTsK KysKKysgIGh0YWJfdHJhdmVyc2UgKHR5cGVfZGlzY2FyZGFibGVfdGFibGUsIHR5cGVfZGlzY2Fy ZGFibGVfcmVtb3ZlLCBOVUxMKTsKKyt9CiAgCi0gICBpZiAobmFtZSkKLSAgICAgVFlQRV9OQU1F ICh0eXBlKSA9IG9ic2F2ZXN0cmluZyAobmFtZSwgc3RybGVuIChuYW1lKSwKLUBAIC0zMDA2LDMz ICszMTU1LDQyIEBAIHR5cGVfcGFpcl9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0IHZv aWQgKml0ZW1fcmhzKQotIH0KKyAvKiBIZWxwZXIgZnVuY3Rpb25zIHRvIGluaXRpYWxpemUgYXJj aGl0ZWN0dXJlLXNwZWNpZmljIHR5cGVzLiAgKi8KICAKLSAvKiBBbGxvY2F0ZSB0aGUgaGFzaCB0 YWJsZSB1c2VkIGJ5IGNvcHlfdHlwZV9yZWN1cnNpdmUgdG8gd2FsawotLSAgIHR5cGVzIHdpdGhv dXQgZHVwbGljYXRlcy4gIFdlIHVzZSBPQkpGSUxFJ3Mgb2JzdGFjaywgYmVjYXVzZQotLSAgIE9C SkZJTEUgaXMgYWJvdXQgdG8gYmUgZGVsZXRlZC4gICovCi0rICAgdHlwZXMgd2l0aG91dCBkdXBs aWNhdGVzLiAgICovCitAQCAtMzUxMSw2ICs0MDY2LDggQEAgZ2RidHlwZXNfcG9zdF9pbml0IChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKKyAgICAgPSBsb29rdXBfcG9pbnRlcl90eXBlIChidWls dGluX3R5cGUtPmJ1aWx0aW5fdm9pZCk7CisgICBidWlsdGluX3R5cGUtPmJ1aWx0aW5fZnVuY19w dHIKKyAgICAgPSBsb29rdXBfcG9pbnRlcl90eXBlIChsb29rdXBfZnVuY3Rpb25fdHlwZSAoYnVp bHRpbl90eXBlLT5idWlsdGluX3ZvaWQpKTsKKysgIGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl9mdW5j X2Z1bmMKKysgICAgPSBsb29rdXBfZnVuY3Rpb25fdHlwZSAoYnVpbHRpbl90eXBlLT5idWlsdGlu X2Z1bmNfcHRyKTsKICAKLSBodGFiX3QKLSBjcmVhdGVfY29waWVkX3R5cGVzX2hhc2ggKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlKQorICAgLyogVGhpcyB0eXBlIHJlcHJlc2VudHMgYSBHREIgaW50 ZXJuYWwgZnVuY3Rpb24uICAqLworICAgYnVpbHRpbl90eXBlLT5pbnRlcm5hbF9mbgorQEAgLTM2 MjQsNiArNDE4MSwxOCBAQCBvYmpmaWxlX3R5cGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQor IAkJICI8dGV4dCB2YXJpYWJsZSwgbm8gZGVidWcgaW5mbz4iLCBvYmpmaWxlKTsKKyAgIFRZUEVf VEFSR0VUX1RZUEUgKG9iamZpbGVfdHlwZS0+bm9kZWJ1Z190ZXh0X3N5bWJvbCkKKyAgICAgPSBv YmpmaWxlX3R5cGUtPmJ1aWx0aW5faW50OworKyAgb2JqZmlsZV90eXBlLT5ub2RlYnVnX3RleHRf Z251X2lmdW5jX3N5bWJvbAorKyAgICA9IGluaXRfdHlwZSAoVFlQRV9DT0RFX0ZVTkMsIDEsIFRZ UEVfRkxBR19HTlVfSUZVTkMsCisrCQkgIjx0ZXh0IGdudS1pbmRpcmVjdC1mdW5jdGlvbiB2YXJp YWJsZSwgbm8gZGVidWcgaW5mbz4iLAorKwkJIG9iamZpbGUpOworKyAgVFlQRV9UQVJHRVRfVFlQ RSAob2JqZmlsZV90eXBlLT5ub2RlYnVnX3RleHRfZ251X2lmdW5jX3N5bWJvbCkKKysgICAgPSBv YmpmaWxlX3R5cGUtPm5vZGVidWdfdGV4dF9zeW1ib2w7CisrICBvYmpmaWxlX3R5cGUtPm5vZGVi dWdfZ290X3BsdF9zeW1ib2wKKysgICAgPSBpbml0X3R5cGUgKFRZUEVfQ09ERV9QVFIsIGdkYmFy Y2hfYWRkcl9iaXQgKGdkYmFyY2gpIC8gOCwgMCwKKysJCSAiPHRleHQgZnJvbSBqdW1wIHNsb3Qg aW4gLmdvdC5wbHQsIG5vIGRlYnVnIGluZm8+IiwKKysJCSBvYmpmaWxlKTsKKysgIFRZUEVfVEFS R0VUX1RZUEUgKG9iamZpbGVfdHlwZS0+bm9kZWJ1Z19nb3RfcGx0X3N5bWJvbCkKKysgICAgPSBv YmpmaWxlX3R5cGUtPm5vZGVidWdfdGV4dF9zeW1ib2w7CisgICBvYmpmaWxlX3R5cGUtPm5vZGVi dWdfZGF0YV9zeW1ib2wKKyAgICAgPSBpbml0X3R5cGUgKFRZUEVfQ09ERV9JTlQsCisgCQkgZ2Ri YXJjaF9pbnRfYml0IChnZGJhcmNoKSAvIEhPU1RfQ0hBUl9CSVQsIDAsCitAQCAtMzY3OCw2ICs0 MjQ3LDExIEBAIHZvaWQKKyBfaW5pdGlhbGl6ZV9nZGJ0eXBlcyAodm9pZCkKICB7Ci0tICByZXR1 cm4gaHRhYl9jcmVhdGVfYWxsb2NfZXggKDEsIHR5cGVfcGFpcl9oYXNoLCB0eXBlX3BhaXJfZXEs Ci0tCQkJICAgICAgIE5VTEwsICZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCi0tCQkJICAgICAg IGhhc2h0YWJfb2JzdGFja19hbGxvY2F0ZSwKLS0JCQkgICAgICAgZHVtbXlfb2JzdGFja19kZWFs bG9jYXRlKTsKLSsgIGlmIChvYmpmaWxlID09IE5VTEwpCi0rICAgIHsKLSsgICAgICAvKiBOVUxM IE9CSkZJTEUgaXMgZm9yIFRZUEVfRFlOQU1JQyB0eXBlcyBhbHJlYWR5IGNvbnRhaW5lZCBpbgot KwkgT0JKRklMRV9NQUxMT0MgbWVtb3J5LCBzdWNoIGFzIHRob3NlIGZyb20gVkFMVUVfSElTVE9S WV9DSEFJTi4gIFRhYmxlCi0rCSBlbGVtZW50IGVudHJpZXMgZ2V0IGFsbG9jYXRlZCBieSB4bWFs bG9jIC0gc28gdXNlIHhmcmVlLiAgKi8KLSsgICAgICByZXR1cm4gaHRhYl9jcmVhdGUgKDEsIHR5 cGVfcGFpcl9oYXNoLCB0eXBlX3BhaXJfZXEsIHhmcmVlKTsKLSsgICAgfQotKyAgZWxzZQotKyAg ICB7Ci0rICAgICAgLyogVXNlIE9CSkZJTEUncyBvYnN0YWNrLCBiZWNhdXNlIE9CSkZJTEUgaXMg YWJvdXQgdG8gYmUgZGVsZXRlZC4gIFRhYmxlCi0rCSBlbGVtZW50IGVudHJpZXMgZ2V0IGFsbG9j YXRlZCBieSB4bWFsbG9jIC0gc28gdXNlIHhmcmVlLiAgKi8KLSsgICAgICByZXR1cm4gaHRhYl9j cmVhdGVfYWxsb2NfZXggKDEsIHR5cGVfcGFpcl9oYXNoLCB0eXBlX3BhaXJfZXEsCi0rCQkJCSAg IHhmcmVlLCAmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotKwkJCQkgICBoYXNodGFiX29ic3Rh Y2tfYWxsb2NhdGUsCi0rCQkJCSAgIGR1bW15X29ic3RhY2tfZGVhbGxvY2F0ZSk7Ci0rICAgIH0K LSB9CisgICBnZGJ0eXBlc19kYXRhID0gZ2RiYXJjaF9kYXRhX3JlZ2lzdGVyX3Bvc3RfaW5pdCAo Z2RidHlwZXNfcG9zdF9pbml0KTsKKysKKysgIHR5cGVfZGlzY2FyZGFibGVfdGFibGUgPSBodGFi X2NyZWF0ZV9hbGxvYyAoMjAsIHR5cGVfZGlzY2FyZGFibGVfaGFzaCwKKysJCQkJCSAgICAgdHlw ZV9kaXNjYXJkYWJsZV9lcXVhbCwgTlVMTCwKKysJCQkJCSAgICAgeGNhbGxvYywgeGZyZWUpOwor KworICAgb2JqZmlsZV90eXBlX2RhdGEgPSByZWdpc3Rlcl9vYmpmaWxlX2RhdGEgKCk7CiAgCi0t LyogUmVjdXJzaXZlbHkgY29weSAoZGVlcCBjb3B5KSBUWVBFLCBpZiBpdCBpcyBhc3NvY2lhdGVk IHdpdGgKLS0gICBPQkpGSUxFLiAgUmV0dXJuIGEgbmV3IHR5cGUgYWxsb2NhdGVkIHVzaW5nIG1h bGxvYywgYSBzYXZlZCB0eXBlIGlmCi0tICAgd2UgaGF2ZSBhbHJlYWR5IHZpc2l0ZWQgVFlQRSAo dXNpbmcgQ09QSUVEX1RZUEVTKSwgb3IgVFlQRSBpZiBpdCBpcwotLSAgIG5vdCBhc3NvY2lhdGVk IHdpdGggT0JKRklMRS4gICovCi0rLyogQSBoZWxwZXIgZm9yIGNvcHlfdHlwZV9yZWN1cnNpdmUu ICBUaGlzIGRvZXMgYWxsIHRoZSB3b3JrLiAgT0JKRklMRSBpcyB1c2VkCi0rICAgb25seSBmb3Ig YW4gYXNzZXJ0aW9uIGNoZWNraW5nLiAgKi8KKyAgIGFkZF9zZXRzaG93X3ppbnRlZ2VyX2NtZCAo Im92ZXJsb2FkIiwgbm9fY2xhc3MsICZvdmVybG9hZF9kZWJ1ZywgXygiXAorZGlmZiAtLWdpdCBh L2dkYi9nZGJ0eXBlcy5oIGIvZ2RiL2dkYnR5cGVzLmgKK2luZGV4IDA4NTI3MGUuLmNiMmI4OGUg MTAwNjQ0CistLS0gYS9nZGIvZ2RidHlwZXMuaAorKysrIGIvZ2RiL2dkYnR5cGVzLmgKK0BAIC0x NzEsNiArMTcxLDcgQEAgZW51bSB0eXBlX2ZsYWdfdmFsdWUKKyAgIFRZUEVfRkxBR19GSVhFRF9J TlNUQU5DRSA9ICgxIDw8IDE1KSwKKyAgIFRZUEVfRkxBR19TVFVCX1NVUFBPUlRFRCA9ICgxIDw8 IDE2KSwKKyAgIFRZUEVfRkxBR19OT1RURVhUID0gKDEgPDwgMTcpLAorKyAgVFlQRV9GTEFHX0dO VV9JRlVOQyA9ICgxIDw8IDE4KSwKICAKLS1zdHJ1Y3QgdHlwZSAqCi0tY29weV90eXBlX3JlY3Vy c2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIAotLQkJICAgICBzdHJ1Y3QgdHlwZSAqdHlw ZSwKLS0JCSAgICAgaHRhYl90IGNvcGllZF90eXBlcykKLStzdGF0aWMgc3RydWN0IHR5cGUgKgot K2NvcHlfdHlwZV9yZWN1cnNpdmVfMSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIAotKwkJICAg ICAgIHN0cnVjdCB0eXBlICp0eXBlLAotKwkJICAgICAgIGh0YWJfdCBjb3BpZWRfdHlwZXMpCi0g ewotICAgc3RydWN0IHR5cGVfcGFpciAqc3RvcmVkLCBwYWlyOwotICAgdm9pZCAqKnNsb3Q7Ci0g ICBzdHJ1Y3QgdHlwZSAqbmV3X3R5cGU7CisgICAvKiBVc2VkIGZvciBlcnJvci1jaGVja2luZy4g ICovCisgICBUWVBFX0ZMQUdfTUlOID0gVFlQRV9GTEFHX1VOU0lHTkVECitAQCAtMjE0LDYgKzIx NSwxMSBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1ZQogIAotLSAgaWYgKCEgVFlQRV9P QkpGSUxFX09XTkVEICh0eXBlKSkKLSsgIGlmICghIFRZUEVfT0JKRklMRV9PV05FRCAodHlwZSkg JiYgIVRZUEVfRFlOQU1JQyAodHlwZSkpCi0gICAgIHJldHVybiB0eXBlOworICNkZWZpbmUgVFlQ RV9UQVJHRVRfU1RVQih0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX3RhcmdldF9zdHViKQog IAotICAgLyogVGhpcyB0eXBlIHNob3VsZG4ndCBiZSBwb2ludGluZyB0byBhbnkgdHlwZXMgaW4g b3RoZXIgb2JqZmlsZXM7Ci1AQCAtMzA0Nyw4ICszMjA1LDEwIEBAIGNvcHlfdHlwZV9yZWN1cnNp dmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotICAgbmV3X3R5cGUgPSBhbGxvY190eXBlX2Fy Y2ggKGdldF90eXBlX2FyY2ggKHR5cGUpKTsKKysvKiBUeXBlIG5lZWRzIHRvIGJlIGV2YWx1YXRl ZCBvbiBlYWNoIENIRUNLX1RZUEVERUYgYW5kIGl0cyByZXN1bHRzIG11c3Qgbm90IGJlCisrICAg c3RpY2t5LiAgKi8KKysKKysjZGVmaW5lIFRZUEVfRFlOQU1JQyh0KQkJKFRZUEVfTUFJTl9UWVBF ICh0KS0+ZmxhZ19keW5hbWljKQorKworIC8qIFN0YXRpYyB0eXBlLiAgSWYgdGhpcyBpcyBzZXQs IHRoZSBjb3JyZXNwb25kaW5nIHR5cGUgaGFkIAorICAqIGEgc3RhdGljIG1vZGlmaWVyLgorICAq IE5vdGU6IFRoaXMgbWF5IGJlIHVubmVjZXNzYXJ5LCBzaW5jZSBzdGF0aWMgZGF0YSBtZW1iZXJz CitAQCAtMjcxLDYgKzI3NywxMiBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1ZQogIAot ICAgLyogV2UgbXVzdCBhZGQgdGhlIG5ldyB0eXBlIHRvIHRoZSBoYXNoIHRhYmxlIGltbWVkaWF0 ZWx5LCBpbiBjYXNlCi0tICAgICB3ZSBlbmNvdW50ZXIgdGhpcyB0eXBlIGFnYWluIGR1cmluZyBh IHJlY3Vyc2l2ZSBjYWxsIGJlbG93LiAgKi8KLS0gIHN0b3JlZCA9IG9ic3RhY2tfYWxsb2MgKCZv YmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAoc3RydWN0IHR5cGVfcGFpcikpOwotKyAg ICAgd2UgZW5jb3VudGVyIHRoaXMgdHlwZSBhZ2FpbiBkdXJpbmcgYSByZWN1cnNpdmUgY2FsbCBi ZWxvdy4gIE1lbW9yeSBjb3VsZAotKyAgICAgYmUgYWxsb2NhdGVkIGZyb20gT0JKRklMRSBpbiB0 aGUgY2FzZSB3ZSB3aWxsIGJlIHJlbW92aW5nIE9CSkZJTEUsIHRoaXMKLSsgICAgIG9wdGltaXph dGlvbiBpcyBtaXNzZWQgYW5kIHhmcmVlIGlzIGNhbGxlZCBmb3IgaXQgZnJvbSBDT1BJRURfVFlQ RVMuICAqLwotKyAgc3RvcmVkID0geG1hbGxvYyAoc2l6ZW9mICgqc3RvcmVkKSk7Ci0gICBzdG9y ZWQtPm9sZCA9IHR5cGU7Ci0gICBzdG9yZWQtPm5ldyA9IG5ld190eXBlOwotICAgKnNsb3QgPSBz dG9yZWQ7Ci1AQCAtMzA1OSw2ICszMjE5LDE5IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLAotICAgVFlQRV9PQkpGSUxFX09XTkVEIChuZXdfdHlwZSkgPSAw OwotICAgVFlQRV9PV05FUiAobmV3X3R5cGUpLmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNoICh0eXBl KTsKKyAjZGVmaW5lIFRZUEVfTk9UVEVYVCh0KQkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19u b3R0ZXh0KQogIAotKyAgLyogVFlQRV9NQUlOX1RZUEUgbWVtb3J5IGNvcHkgYWJvdmUgcmV3cm90 ZSB0aGUgVFlQRV9ESVNDQVJEQUJMRSBmbGFnIHNvIHdlCi0rICAgICBuZWVkIHRvIGluaXRpYWxp emUgaXQgYWdhaW4uICBBbmQgZXZlbiBpZiBUWVBFIHdhcyBhbHJlYWR5IGRpc2NhcmRhYmxlCi0r ICAgICBORVdfVFlQRSBzbyBmYXIgaXMgbm90IHJlZ2lzdGVyZWQgaW4gVFlQRV9ESVNDQVJEQUJM RV9UQUJMRS4gICovCi0rICBUWVBFX0RJU0NBUkRBQkxFIChuZXdfdHlwZSkgPSAwOwotKyAgc2V0 X3R5cGVfYXNfZGlzY2FyZGFibGUgKG5ld190eXBlKTsKKysvKiBVc2VkIG9ubHkgZm9yIFRZUEVf Q09ERV9GVU5DIHdoZXJlIGl0IHNwZWNpZmllcyB0aGUgcmVhbCBmdW5jdGlvbgorKyAgIGFkZHJl c3MgaXMgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiBjYWxsLiAgVFlQRV9UQVJHRVRfVFlQRSBk ZXRlcm1pbmVzIHRoZQorKyAgIGZpbmFsIHJldHVybmVkIGZ1bmN0aW9uIHR5cGUgdG8gYmUgcHJl c2VudGVkIHRvIHVzZXIuICAqLwogKwotKyAgLyogUHJlLWNsZWFyIHRoZSBmaWVsZHMgcHJvY2Vz c2VkIGJ5IGRlbGV0ZV9tYWluX3R5cGUuICBJZiBEV0FSRiBibG9jawotKyAgICAgZXZhbHVhdGlv bnMgYmVsb3cgY2FsbCBlcnJvciB3ZSB3b3VsZCBsZWF2ZSBhbiB1bmZyZWVhYmxlIFRZUEUuICAq LwotKyAgVFlQRV9UQVJHRVRfVFlQRSAobmV3X3R5cGUpID0gTlVMTDsKLSsgIFRZUEVfVlBUUl9C QVNFVFlQRSAobmV3X3R5cGUpID0gTlVMTDsKLSsgIFRZUEVfTkZJRUxEUyAobmV3X3R5cGUpID0g MDsKLSsgIFRZUEVfRklFTERTIChuZXdfdHlwZSkgPSBOVUxMOworKyNkZWZpbmUgVFlQRV9HTlVf SUZVTkModCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19nbnVfaWZ1bmMpCiArCi0gICBpZiAo VFlQRV9OQU1FICh0eXBlKSkKLSAgICAgVFlQRV9OQU1FIChuZXdfdHlwZSkgPSB4c3RyZHVwIChU WVBFX05BTUUgKHR5cGUpKTsKLSAgIGlmIChUWVBFX1RBR19OQU1FICh0eXBlKSkKLUBAIC0zMDY3 LDEyICszMjQwLDQ4IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLAotICAgVFlQRV9JTlNUQU5DRV9GTEFHUyAobmV3X3R5cGUpID0gVFlQRV9JTlNUQU5DRV9G TEFHUyAodHlwZSk7Ci0gICBUWVBFX0xFTkdUSCAobmV3X3R5cGUpID0gVFlQRV9MRU5HVEggKHR5 cGUpOworIC8qIFR5cGUgb3duZXIuICBJZiBUWVBFX09CSkZJTEVfT1dORUQgaXMgdHJ1ZSwgdGhl IHR5cGUgaXMgb3duZWQgYnkKKyAgICB0aGUgb2JqZmlsZSByZXRyaWV2ZWQgYXMgVFlQRV9PQkpG SUxFLiAgT3RoZXJ3ZWlzZSwgdGhlIHR5cGUgaXMKKyAgICBvd25lZCBieSBhbiBhcmNoaXRlY3R1 cmU7IFRZUEVfT0JKRklMRSBpcyBOVUxMIGluIHRoaXMgY2FzZS4gICovCitAQCAtMjg1LDYgKzI5 Nyw0OCBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1ZQogIAotKyAgaWYgKFRZUEVfQUxM T0NBVEVEIChuZXdfdHlwZSkpCi0rICAgIHsKLSsgICAgICBnZGJfYXNzZXJ0ICghVFlQRV9OT1Rf QUxMT0NBVEVEIChuZXdfdHlwZSkpOworICNkZWZpbmUgVFlQRV9ERUNMQVJFRF9DTEFTUyh0KSAo VFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2RlY2xhcmVkX2NsYXNzKQorIAorKy8qIERlZmluZSB0 aGlzIHR5cGUgYXMgYmVpbmcgcmVjbGFpbWFibGUgZHVyaW5nIGZyZWVfYWxsX3R5cGVzLiAgVHlw ZSBpcworKyAgIHJlcXVpcmVkIHRvIGJlIGhhdmUgVFlQRV9PQkpGSUxFIHNldCB0byBOVUxMLiAg U2V0dGluZyB0aGlzIGZsYWcgcmVxdWlyZXMKKysgICBpbml0aWFsaXppbmcgVFlQRV9ESVNDQVJE QUJMRV9BR0UsIHNlZSBhbGxvY190eXBlX2Rpc2NhcmRhYmxlLiAgKi8KICsKLSsgICAgICBpZiAo IWR3YXJmX2xvY2V4cHJfYmF0b25fZXZhbCAoVFlQRV9BTExPQ0FURUQgKG5ld190eXBlKSkpCi0r ICAgICAgICBUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBlKSA9IDE7Ci0rICAgICAgVFlQRV9B TExPQ0FURUQgKG5ld190eXBlKSA9IE5VTEw7Ci0rICAgIH0KKysjZGVmaW5lIFRZUEVfRElTQ0FS REFCTEUodCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19kaXNjYXJkYWJsZSkKICsKLSsgIGlm IChUWVBFX0FTU09DSUFURUQgKG5ld190eXBlKSkKLSsgICAgewotKyAgICAgIGdkYl9hc3NlcnQg KCFUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkpOworKy8qIE1hcmtlciB0aGlzIHR5cGUg aGFzIGJlZW4gdmlzaXRlZCBieSB0aGUgdHlwZV9tYXJrX3VzZWQgYnkgdGhpcworKyAgIG1hcmst YW5kLXN3ZWVwIHR5cGVzIGdhcmJhZ2UgY29sbGVjdGluZyBwYXNzLiAgQ3VycmVudCBwYXNzIGlz IHJlcHJlc2VudGVkCisrICAgYnkgVFlQRV9ESVNDQVJEQUJMRV9BR0VfQ1VSUkVOVC4gICovCiAr Ci0rICAgICAgaWYgKCFkd2FyZl9sb2NleHByX2JhdG9uX2V2YWwgKFRZUEVfQVNTT0NJQVRFRCAo bmV3X3R5cGUpKSkKLSsgICAgICAgIFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKSA9IDE7 Ci0rICAgICAgVFlQRV9BU1NPQ0lBVEVEIChuZXdfdHlwZSkgPSBOVUxMOwotKyAgICB9CisrI2Rl ZmluZSBUWVBFX0RJU0NBUkRBQkxFX0FHRSh0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2Rp c2NhcmRhYmxlX2FnZSkKICsKLSsgIGlmICghVFlQRV9EQVRBX0xPQ0FUSU9OX0lTX0FERFIgKG5l d190eXBlKQotKyAgICAgICYmIFRZUEVfREFUQV9MT0NBVElPTl9EV0FSRl9CTE9DSyAobmV3X3R5 cGUpKQorKy8qIElzIEhJR0hfQk9VTkQgYSBsb3ctYm91bmQgcmVsYXRpdmUgY291bnQgKDEpIG9y IHRoZSBoaWdoIGJvdW5kIGl0c2VsZiAoMCk/ICAqLworKworKyNkZWZpbmUgVFlQRV9SQU5HRV9I SUdIX0JPVU5EX0lTX0NPVU5UKHJhbmdlX3R5cGUpIFwKKysgIChUWVBFX01BSU5fVFlQRSAocmFu Z2VfdHlwZSktPmZsYWdfcmFuZ2VfaGlnaF9ib3VuZF9pc19jb3VudCkKKysKKysvKiBOb3QgYWxs b2NhdGVkLiAgVFlQRV9BTExPQ0FURUQodCkgbXVzdCBiZSBOVUxMIGluIHN1Y2ggY2FzZS4gIElm IHRoaXMgZmxhZworKyAgIGlzIHVuc2V0IGFuZCBUWVBFX0FMTE9DQVRFRCh0KSBpcyBOVUxMIHRo ZW4gdGhlIHR5cGUgaXMgYWxsb2NhdGVkLiAgSWYgdGhpcworKyAgIGZsYWcgaXMgdW5zZXQgYW5k IFRZUEVfQUxMT0NBVEVEKHQpIGlzIG5vdCBOVUxMIHRoZW4gaXRzIERXQVJGIGJsb2NrCisrICAg ZGV0ZXJtaW5lcyB0aGUgYWN0dWFsIGFsbG9jYXRpb24gc3RhdGUuICAqLworKworKyNkZWZpbmUg VFlQRV9OT1RfQUxMT0NBVEVEKHQpCShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfbm90X2FsbG9j YXRlZCkKKysKKysvKiBOb3QgYXNzb2NpYXRlZC4gIFRZUEVfQVNTT0NJQVRFRCh0KSBtdXN0IGJl IE5VTEwgaW4gc3VjaCBjYXNlLiAgSWYgdGhpcyBmbGFnCisrICAgaXMgdW5zZXQgYW5kIFRZUEVf QVNTT0NJQVRFRCh0KSBpcyBOVUxMIHRoZW4gdGhlIHR5cGUgaXMgYXNzb2NpYXRlZC4gIElmCisr ICAgdGhpcyBmbGFnIGlzIHVuc2V0IGFuZCBUWVBFX0FTU09DSUFURUQodCkgaXMgbm90IE5VTEwg dGhlbiBpdHMgRFdBUkYgYmxvY2sKKysgICBkZXRlcm1pbmVzIHRoZSBhY3R1YWwgYXNzb2NpYXRp b24gc3RhdGUuICAqLworKworKyNkZWZpbmUgVFlQRV9OT1RfQVNTT0NJQVRFRCh0KQkoVFlQRV9N QUlOX1RZUEUgKHQpLT5mbGFnX25vdF9hc3NvY2lhdGVkKQorKworKy8qIEFkZHJlc3Mgb2YgdGhl IGFjdHVhbCBkYXRhIGFzIGZvciBEV19BVF9kYXRhX2xvY2F0aW9uLiAgSXRzIGR3YXJmIGJsb2Nr IG11c3QKKysgICBub3QgYmUgZXZhbHVhdGVkIHVubGVzcyBib3RoIFRZUEVfTk9UX0FMTE9DQVRF RCBhbmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUKKysgICBmYWxzZS4gIElmIFRZUEVfREFUQV9M T0NBVElPTl9JU19BRERSIHNldCB0aGVuIFRZUEVfREFUQV9MT0NBVElPTl9BRERSIHZhbHVlCisr ICAgaXMgdGhlIGFjdHVhbCBkYXRhIGFkZHJlc3MgdmFsdWUuICBJZiB1bnNldCBhbmQKKysgICBU WVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgaXMgTlVMTCB0aGVuIHRoZSB2YWx1ZSBpcyB0 aGUgbm9ybWFsCisrICAgdmFsdWVfcmF3X2FkZHJlc3MuICBJZiB1bnNldCBhbmQgVFlQRV9EQVRB X0xPQ0FUSU9OX0RXQVJGX0JMT0NLIGlzIG5vdCBOVUxMCisrICAgdGhlbiBpdHMgRFdBUkYgYmxv Y2sgZGV0ZXJtaW5lcyB0aGUgYWN0dWFsIGRhdGEgYWRkcmVzcy4gICovCisrCisrI2RlZmluZSBU WVBFX0RBVEFfTE9DQVRJT05fSVNfQUREUih0KSBcCisrICAoVFlQRV9NQUlOX1RZUEUgKHQpLT5m bGFnX2RhdGFfbG9jYXRpb25faXNfYWRkcikKKysKKyAvKiBDb25zdGFudCB0eXBlLiAgSWYgdGhp cyBpcyBzZXQsIHRoZSBjb3JyZXNwb25kaW5nIHR5cGUgaGFzIGEKKyAgKiBjb25zdCBtb2RpZmll ci4KKyAgKi8KK0BAIC0zODksMTEgKzQ0MywxOSBAQCBzdHJ1Y3QgbWFpbl90eXBlCisgICB1bnNp Z25lZCBpbnQgZmxhZ192ZWN0b3IgOiAxOworICAgdW5zaWduZWQgaW50IGZsYWdfc3R1Yl9zdXBw b3J0ZWQgOiAxOworICAgdW5zaWduZWQgaW50IGZsYWdfbm90dGV4dCA6IDE7CisrICB1bnNpZ25l ZCBpbnQgZmxhZ19nbnVfaWZ1bmMgOiAxOworICAgdW5zaWduZWQgaW50IGZsYWdfZml4ZWRfaW5z dGFuY2UgOiAxOworICAgdW5zaWduZWQgaW50IGZsYWdfb2JqZmlsZV9vd25lZCA6IDE7CisgICAv KiBUcnVlIGlmIHRoaXMgdHlwZSB3YXMgZGVjbGFyZWQgd2l0aCAiY2xhc3MiIHJhdGhlciB0aGFu CisgICAgICAic3RydWN0Ii4gICovCisgICB1bnNpZ25lZCBpbnQgZmxhZ19kZWNsYXJlZF9jbGFz cyA6IDE7CisrICB1bnNpZ25lZCBpbnQgZmxhZ19kaXNjYXJkYWJsZSA6IDE7CisrICB1bnNpZ25l ZCBpbnQgZmxhZ19kaXNjYXJkYWJsZV9hZ2UgOiAxOworKyAgdW5zaWduZWQgaW50IGZsYWdfZHlu YW1pYyA6IDE7CisrICB1bnNpZ25lZCBpbnQgZmxhZ19yYW5nZV9oaWdoX2JvdW5kX2lzX2NvdW50 IDogMTsKKysgIHVuc2lnbmVkIGludCBmbGFnX25vdF9hbGxvY2F0ZWQgOiAxOworKyAgdW5zaWdu ZWQgaW50IGZsYWdfbm90X2Fzc29jaWF0ZWQgOiAxOworKyAgdW5zaWduZWQgaW50IGZsYWdfZGF0 YV9sb2NhdGlvbl9pc19hZGRyIDogMTsKKyAKKyAgIC8qIEEgZGlzY3JpbWluYW50IHRlbGxpbmcg dXMgd2hpY2ggZmllbGQgb2YgdGhlIHR5cGVfc3BlY2lmaWMgdW5pb24KKyAgICAgIGlzIGJlaW5n IHVzZWQgZm9yIHRoaXMgdHlwZSwgaWYgYW55LiAgKi8KK0BAIC00NjcsNiArNTI5LDIwIEBAIHN0 cnVjdCBtYWluX3R5cGUKKyAKKyAgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZTsKKyAKKysgIC8q IEZvciBEV19BVF9kYXRhX2xvY2F0aW9uLiAgKi8KKysgIHVuaW9uCiArICAgIHsKLSsgICAgICBp ZiAoVFlQRV9OT1RfQUxMT0NBVEVEIChuZXdfdHlwZSkKLSsgICAgICAgICAgfHwgVFlQRV9OT1Rf QVNTT0NJQVRFRCAobmV3X3R5cGUpKQotKwlUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sg KG5ld190eXBlKSA9IE5VTEw7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgVFlQRV9EQVRBX0xPQ0FU SU9OX0lTX0FERFIgKG5ld190eXBlKSA9IDE7Ci0rCSAgVFlQRV9EQVRBX0xPQ0FUSU9OX0FERFIg KG5ld190eXBlKSA9IGR3YXJmX2xvY2V4cHJfYmF0b25fZXZhbAotKwkJCQkgICAgKFRZUEVfREFU QV9MT0NBVElPTl9EV0FSRl9CTE9DSyAobmV3X3R5cGUpKTsKLSsJfQorKyAgICAgIHN0cnVjdCBk d2FyZjJfbG9jZXhwcl9iYXRvbiAqZHdhcmZfYmxvY2s7CisrICAgICAgQ09SRV9BRERSIGFkZHI7 CiArICAgIH0KKysgIGRhdGFfbG9jYXRpb247CiArCi0gICAvKiBDb3B5IHRoZSBmaWVsZHMuICAq LwotICAgaWYgKFRZUEVfTkZJRUxEUyAodHlwZSkpCi0gICAgIHsKLSAgICAgICBpbnQgaSwgbmZp ZWxkczsKLSAKLSsgICAgICAvKiBUWVBFX0NPREVfUkFOR0UgdXNlcyBUWVBFX1JBTkdFX0RBVEEg b2YgdGhlIHVuaW9uIHdpdGggVFlQRV9GSUVMRFMuICAqLwotKyAgICAgIGdkYl9hc3NlcnQgKFRZ UEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX1JBTkdFKTsKKysgIC8qIEZvciBEV19BVF9hbGxv Y2F0ZWQuICAqLworKyAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICphbGxvY2F0ZWQ7CiAr Ci0gICAgICAgbmZpZWxkcyA9IFRZUEVfTkZJRUxEUyAodHlwZSk7Ci0rICAgICAgVFlQRV9ORklF TERTIChuZXdfdHlwZSkgPSBuZmllbGRzOwotICAgICAgIFRZUEVfRklFTERTIChuZXdfdHlwZSkg PSBYQ0FMTE9DIChuZmllbGRzLCBzdHJ1Y3QgZmllbGQpOwotICAgICAgIGZvciAoaSA9IDA7IGkg PCBuZmllbGRzOyBpKyspCi0gCXsKLUBAIC0zMDgxLDggKzMyOTAsOCBAQCBjb3B5X3R5cGVfcmVj dXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJICBUWVBFX0ZJRUxEX0JJVFNJWkUg KG5ld190eXBlLCBpKSA9IFRZUEVfRklFTERfQklUU0laRSAodHlwZSwgaSk7Ci0gCSAgaWYgKFRZ UEVfRklFTERfVFlQRSAodHlwZSwgaSkpCi0gCSAgICBUWVBFX0ZJRUxEX1RZUEUgKG5ld190eXBl LCBpKQotLQkgICAgICA9IGNvcHlfdHlwZV9yZWN1cnNpdmUgKG9iamZpbGUsIFRZUEVfRklFTERf VFlQRSAodHlwZSwgaSksCi0tCQkJCSAgICAgY29waWVkX3R5cGVzKTsKLSsJICAgICAgPSBjb3B5 X3R5cGVfcmVjdXJzaXZlXzEgKG9iamZpbGUsIFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSksCi0r CQkJCSAgICAgICBjb3BpZWRfdHlwZXMpOwotIAkgIGlmIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUs IGkpKQotIAkgICAgVFlQRV9GSUVMRF9OQU1FIChuZXdfdHlwZSwgaSkgPSAKLSAJICAgICAgeHN0 cmR1cCAoVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKSk7Ci1AQCAtMzEwOSwyNCArMzMxOCwxNjYg QEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0gCX0KLSAg ICAgfQotIAotKyAgLyogQm90aCBGSUVMRF9MT0NfS0lORF9EV0FSRl9CTE9DSyBhbmQgVFlQRV9S QU5HRV9ISUdIX0JPVU5EX0lTX0NPVU5UIHdlcmUKLSsgICAgIHBvc3NpYmx5IGNvbnZlcnRlZC4g ICovCi0rICBUWVBFX0RZTkFNSUMgKG5ld190eXBlKSA9IDA7CisrICAvKiBGb3IgRFdfQVRfYXNz b2NpYXRlZC4gICovCisrICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmFzc29jaWF0ZWQ7 CiArCi0gICAvKiBGb3IgcmFuZ2UgdHlwZXMsIGNvcHkgdGhlIGJvdW5kcyBpbmZvcm1hdGlvbi4g Ki8KLS0gIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9SQU5HRSkKLSsgIGlmIChU WVBFX0NPREUgKG5ld190eXBlKSA9PSBUWVBFX0NPREVfUkFOR0UpCisgICAvKiBGb3Igc3RydWN0 dXJlIGFuZCB1bmlvbiB0eXBlcywgYSBkZXNjcmlwdGlvbiBvZiBlYWNoIGZpZWxkLgorICAgICAg Rm9yIHNldCBhbmQgcGFzY2FsIGFycmF5IHR5cGVzLCB0aGVyZSBpcyBvbmUgImZpZWxkIiwKKyAg ICAgIHdob3NlIHR5cGUgaXMgdGhlIGRvbWFpbiB0eXBlIG9mIHRoZSBzZXQgb3IgYXJyYXkuCitA QCAtNTQwLDEzICs2MTYsMzQgQEAgc3RydWN0IG1haW5fdHlwZQorIAorICAgICBzdHJ1Y3QgcmFu Z2VfYm91bmRzCiAgICAgIHsKLSAgICAgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKSA9IHht YWxsb2MgKHNpemVvZiAoc3RydWN0IHJhbmdlX2JvdW5kcykpOwotICAgICAgICpUWVBFX1JBTkdF X0RBVEEgKG5ld190eXBlKSA9ICpUWVBFX1JBTkdFX0RBVEEgKHR5cGUpOwotKwotKyAgICAgIHN3 aXRjaCAoVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmxvdy5raW5kKQorKyAgICAgIHN0cnVj dAogKwl7Ci0rCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDoKLSsJICBicmVhazsKLSsJ Y2FzZSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0JMT0NLOgotKwkgIC8qIGBzdHJ1Y3QgZHdhcmYy X2xvY2V4cHJfYmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbwotKwkgICAgIGl0 IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KLSsJICAg ICBUWVBFX05PVF9BTExPQ0FURUQgYW5kIFRZUEVfTk9UX0FTU09DSUFURUQgYXJlIG5vdCB2YWxp ZCBmb3IgVFlQRS4KLSsJICAgICAqLwotKwkgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKG5ld190 eXBlKSB8fCBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkKLSsJICAgICAgfHwgISBoYXNf c3RhY2tfZnJhbWVzICgpKQorKwkgIHVuaW9uCiArCSAgICB7Ci0rCSAgICAgIC8qIFdlIHNob3Vs ZCBzZXQgMSBmb3IgRm9ydHJhbiBidXQgaG93IHRvIGZpbmQgdGhlIGxhbmd1YWdlPyAgKi8KLSsJ ICAgICAgVFlQRV9MT1dfQk9VTkQgKG5ld190eXBlKSA9IDA7Ci0rCSAgICAgIFRZUEVfTE9XX0JP VU5EX1VOREVGSU5FRCAobmV3X3R5cGUpID0gMTsKKysJICAgICAgTE9OR0VTVCBjb25zdGFudDsK KysJICAgICAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpkd2FyZl9ibG9jazsKKysJICAg ICAgc3RydWN0CisrCQl7CisrCQkgIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqbG9jbGlz dDsKKysJCSAgc3RydWN0IHR5cGUgKnR5cGU7CisrCQl9CisrCSAgICAgIGR3YXJmX2xvY2xpc3Q7 CiArCSAgICB9Ci0rCSAgZWxzZQotKwkgICAgVFlQRV9MT1dfQk9VTkQgKG5ld190eXBlKSA9IGR3 YXJmX2xvY2V4cHJfYmF0b25fZXZhbAotKwkJCQkoVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSkt Pmxvdy51LmR3YXJmX2Jsb2NrKTsKLSsJICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+bG93 LmtpbmQgPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOwotKwkgIGJyZWFrOwotKwljYXNlIFJB TkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVDoKLSsJICB7Ci0rCSAgICBDT1JFX0FERFIgYWRk cjsKLSsKLSsJICAgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24nIGlzIHRvbyBib3Vu ZCB0byBpdHMgb2JqZmlsZSBzbwotKwkgICAgICAgaXQgaXMgZXhwZWN0ZWQgdG8gYmUgbWFkZSBj b25zdGFudCBieSBDSEVDS19UWVBFREVGLgotKwkgICAgICAgVFlQRV9OT1RfQUxMT0NBVEVEIGFu ZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFyZSBub3QgdmFsaWQgZm9yIFRZUEUuCi0rCSAgICAgICAq LwotKwkgICAgaWYgKCEgVFlQRV9OT1RfQUxMT0NBVEVEIChuZXdfdHlwZSkKLSsJICAgICAgICAm JiAhIFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKSAmJiBoYXNfc3RhY2tfZnJhbWVzICgp Ci0rCSAgICAgICAgJiYgZHdhcmZfbG9jbGlzdF9iYXRvbl9ldmFsCi0rCQkgIChUWVBFX1JBTkdF X0RBVEEgKG5ld190eXBlKS0+bG93LnUuZHdhcmZfbG9jbGlzdC5sb2NsaXN0LAotKwkJICAgVFlQ RV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmxvdy51LmR3YXJmX2xvY2xpc3QudHlwZSwgJmFkZHIp KQotKwkgICAgICBUWVBFX0xPV19CT1VORCAobmV3X3R5cGUpID0gYWRkcjsKLSsJICAgIGVsc2UK LSsJICAgICAgewotKwkJLyogV2Ugc2hvdWxkIHNldCAxIGZvciBGb3J0cmFuIGJ1dCBob3cgdG8g ZmluZCB0aGUgbGFuZ3VhZ2U/ICAqLwotKwkJVFlQRV9MT1dfQk9VTkQgKG5ld190eXBlKSA9IDA7 Ci0rCQlUWVBFX0xPV19CT1VORF9VTkRFRklORUQgKG5ld190eXBlKSA9IDE7Ci0rCSAgICAgIH0K LSsJICAgIFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5sb3cua2luZCA9IFJBTkdFX0JPVU5E X0tJTkRfQ09OU1RBTlQ7Ci0rCSAgfQotKwkgIGJyZWFrOwotKwl9Ci0rCi0rICAgICAgc3dpdGNo IChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+aGlnaC5raW5kKQotKwl7Ci0rCWNhc2UgUkFO R0VfQk9VTkRfS0lORF9DT05TVEFOVDoKLSsJICBicmVhazsKLSsJY2FzZSBSQU5HRV9CT1VORF9L SU5EX0RXQVJGX0JMT0NLOgotKwkgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24nIGlz IHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbwotKwkgICAgIGl0IGlzIGV4cGVjdGVkIHRvIGJl IG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KLSsJICAgICBUWVBFX05PVF9BTExPQ0FU RUQgYW5kIFRZUEVfTk9UX0FTU09DSUFURUQgYXJlIG5vdCB2YWxpZCBmb3IgVFlQRS4KLSsJICAg ICAqLwotKwkgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBlKSB8fCBUWVBFX05PVF9B U1NPQ0lBVEVEIChuZXdfdHlwZSkKLSsJICAgICAgfHwgISBoYXNfc3RhY2tfZnJhbWVzICgpKQor KwkgIHU7CisrCSAgZW51bSByYW5nZV9ib3VuZF9raW5kCiArCSAgICB7Ci0rCSAgICAgIFRZUEVf SElHSF9CT1VORCAobmV3X3R5cGUpID0gVFlQRV9MT1dfQk9VTkQgKG5ld190eXBlKSAtIDE7Ci0r CSAgICAgIFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKG5ld190eXBlKSA9IDE7CisrCSAgICAg IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQsCisrCSAgICAgIFJBTkdFX0JPVU5EX0tJTkRfRFdB UkZfQkxPQ0ssCisrCSAgICAgIFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVAogKwkgICAg fQotKwkgIGVsc2UKLSsJICAgIFRZUEVfSElHSF9CT1VORCAobmV3X3R5cGUpID0gZHdhcmZfbG9j ZXhwcl9iYXRvbl9ldmFsCi0rCQkJICAgICAgIChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+ aGlnaC51LmR3YXJmX2Jsb2NrKTsKLSsJICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+aGln aC5raW5kID0gUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDsKLSsJICBicmVhazsKLSsJY2FzZSBS QU5HRV9CT1VORF9LSU5EX0RXQVJGX0xPQ0xJU1Q6Ci0rCSAgewotKwkgICAgQ09SRV9BRERSIGFk ZHI7Ci0rCi0rCSAgICAvKiBgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uJyBpcyB0b28gYm91 bmQgdG8gaXRzIG9iamZpbGUgc28KLSsJICAgICAgIGl0IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUg Y29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KLSsJICAgICAgIFRZUEVfTk9UX0FMTE9DQVRFRCBh bmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUgbm90IHZhbGlkIGZvciBUWVBFLgotKwkgICAgICAg Ki8KLSsJICAgIGlmICghIFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpCi0rCSAgICAgICAg JiYgISBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkgJiYgaGFzX3N0YWNrX2ZyYW1lcyAo KQotKwkgICAgICAgICYmIGR3YXJmX2xvY2xpc3RfYmF0b25fZXZhbAotKwkJICAgICAgKFRZUEVf UkFOR0VfREFUQSAobmV3X3R5cGUpLT5oaWdoLnUuZHdhcmZfbG9jbGlzdC5sb2NsaXN0LAotKwkJ ICAgICAgIFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5oaWdoLnUuZHdhcmZfbG9jbGlzdC50 eXBlLAotKwkJICAgICAgICZhZGRyKSkKLSsJICAgICAgVFlQRV9ISUdIX0JPVU5EIChuZXdfdHlw ZSkgPSBhZGRyOwotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlUWVBFX0hJR0hfQk9VTkQgKG5l d190eXBlKSA9IFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkgLSAxOwotKwkJVFlQRV9ISUdIX0JP VU5EX1VOREVGSU5FRCAobmV3X3R5cGUpID0gMTsKLSsJICAgICAgfQotKwkgICAgVFlQRV9SQU5H RV9EQVRBIChuZXdfdHlwZSktPmhpZ2gua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQ7 Ci0rCSAgfQotKwkgIGJyZWFrOwotKwl9Ci0rCi0rICAgICAgc3dpdGNoIChUWVBFX1JBTkdFX0RB VEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUua2luZCkKLSsJewotKwljYXNlIFJBTkdFX0JPVU5E X0tJTkRfQ09OU1RBTlQ6Ci0rCSAgYnJlYWs7Ci0rCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9EV0FS Rl9CTE9DSzoKLSsJICAvKiBgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uJyBpcyB0b28gYm91 bmQgdG8gaXRzIG9iamZpbGUgc28KLSsJICAgICBpdCBpcyBleHBlY3RlZCB0byBiZSBtYWRlIGNv bnN0YW50IGJ5IENIRUNLX1RZUEVERUYuCi0rCSAgICAgVFlQRV9OT1RfQUxMT0NBVEVEIGFuZCBU WVBFX05PVF9BU1NPQ0lBVEVEIGFyZSBub3QgdmFsaWQgZm9yIFRZUEUuCi0rCSAgICAgKi8KLSsJ ICBpZiAoVFlQRV9OT1RfQUxMT0NBVEVEIChuZXdfdHlwZSkgfHwgVFlQRV9OT1RfQVNTT0NJQVRF RCAobmV3X3R5cGUpCi0rCSAgICAgIHx8ICEgaGFzX3N0YWNrX2ZyYW1lcyAoKSkKLSsJICAgIFRZ UEVfQllURV9TVFJJREUgKG5ld190eXBlKSA9IDA7Ci0rCSAgZWxzZQotKwkgICAgVFlQRV9CWVRF X1NUUklERSAobmV3X3R5cGUpID0gZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsCi0rCQkJKFRZUEVf UkFOR0VfREFUQSAobmV3X3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJmX2Jsb2NrKTsKLSsJICBU WVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUua2luZAotKwkgICAgPSBSQU5H RV9CT1VORF9LSU5EX0NPTlNUQU5UOwotKwkgIGJyZWFrOwotKwljYXNlIFJBTkdFX0JPVU5EX0tJ TkRfRFdBUkZfTE9DTElTVDoKLSsJICB7Ci0rCSAgICBDT1JFX0FERFIgYWRkciA9IDA7Ci0rCi0r CSAgICAvKiBgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uJyBpcyB0b28gYm91bmQgdG8gaXRz IG9iamZpbGUgc28KLSsJICAgICAgIGl0IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUgY29uc3RhbnQg YnkgQ0hFQ0tfVFlQRURFRi4KLSsJICAgICAgIFRZUEVfTk9UX0FMTE9DQVRFRCBhbmQgVFlQRV9O T1RfQVNTT0NJQVRFRCBhcmUgbm90IHZhbGlkIGZvciBUWVBFLgotKwkgICAgICAgKi8KLSsJICAg IGlmICghIFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpCi0rCQkmJiAhIFRZUEVfTk9UX0FT U09DSUFURUQgKG5ld190eXBlKSAmJiBoYXNfc3RhY2tfZnJhbWVzICgpKQotKwkgICAgICBkd2Fy Zl9sb2NsaXN0X2JhdG9uX2V2YWwKLSsJICAgICAgIChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBl KS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9sb2NsaXN0LmxvY2xpc3QsCi0rCQlUWVBFX1JBTkdFX0RB VEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9sb2NsaXN0LnR5cGUsCi0rCQkmYWRk cik7Ci0rCSAgICBUWVBFX0JZVEVfU1RSSURFIChuZXdfdHlwZSkgPSBhZGRyOwotKwkgICAgVFlQ RV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmJ5dGVfc3RyaWRlLmtpbmQKLSsJICAgICAgPSBSQU5H RV9CT1VORF9LSU5EX0NPTlNUQU5UOwotKwkgIH0KLSsJICBicmVhazsKLSsJfQotKwotKyAgICAg IC8qIENvbnZlcnQgVFlQRV9SQU5HRV9ISUdIX0JPVU5EX0lTX0NPVU5UIGludG8gYSByZWd1bGFy IGJvdW5kLiAgKi8KLSsgICAgICBpZiAoVFlQRV9SQU5HRV9ISUdIX0JPVU5EX0lTX0NPVU5UIChu ZXdfdHlwZSkpCi0rCXsKLSsJICBUWVBFX0hJR0hfQk9VTkQgKG5ld190eXBlKSA9IFRZUEVfTE9X X0JPVU5EIChuZXdfdHlwZSkKLSsJCQkJICAgICAgICsgVFlQRV9ISUdIX0JPVU5EIChuZXdfdHlw ZSkgLSAxOwotKwkgIFRZUEVfUkFOR0VfSElHSF9CT1VORF9JU19DT1VOVCAobmV3X3R5cGUpID0g MDsKKysJICBraW5kOwogKwl9Ci0gICAgIH0KKyAgICAgICAvKiBMb3cgYm91bmQgb2YgcmFuZ2Uu ICovCistCistICAgICAgTE9OR0VTVCBsb3c7CistCisrICAgICAgbG93LAorICAgICAgIC8qIEhp Z2ggYm91bmQgb2YgcmFuZ2UuICovCistCistICAgICAgTE9OR0VTVCBoaWdoOworKyAgICAgIGhp Z2gsCisrICAgICAgLyogQnl0ZSBzdHJpZGUgb2YgcmFuZ2UuICovCisrICAgICAgYnl0ZV9zdHJp ZGU7CiAgCi0gICAvKiBDb3B5IHBvaW50ZXJzIHRvIG90aGVyIHR5cGVzLiAgKi8KLSAgIGlmIChU WVBFX1RBUkdFVF9UWVBFICh0eXBlKSkKLSAgICAgVFlQRV9UQVJHRVRfVFlQRSAobmV3X3R5cGUp ID0gCi0tICAgICAgY29weV90eXBlX3JlY3Vyc2l2ZSAob2JqZmlsZSwgCi0tCQkJICAgVFlQRV9U QVJHRVRfVFlQRSAodHlwZSksCi0tCQkJICAgY29waWVkX3R5cGVzKTsKLSsgICAgICBjb3B5X3R5 cGVfcmVjdXJzaXZlXzEgKG9iamZpbGUsIAotKwkJCSAgICAgVFlQRV9UQVJHRVRfVFlQRSAodHlw ZSksCi0rCQkJICAgICBjb3BpZWRfdHlwZXMpOwotICAgaWYgKFRZUEVfVlBUUl9CQVNFVFlQRSAo dHlwZSkpCi0gICAgIFRZUEVfVlBUUl9CQVNFVFlQRSAobmV3X3R5cGUpID0gCi0tICAgICAgY29w eV90eXBlX3JlY3Vyc2l2ZSAob2JqZmlsZSwKLS0JCQkgICBUWVBFX1ZQVFJfQkFTRVRZUEUgKHR5 cGUpLAotLQkJCSAgIGNvcGllZF90eXBlcyk7Ci0rICAgICAgY29weV90eXBlX3JlY3Vyc2l2ZV8x IChvYmpmaWxlLAotKwkJCSAgICAgVFlQRV9WUFRSX0JBU0VUWVBFICh0eXBlKSwKLSsJCQkgICAg IGNvcGllZF90eXBlcyk7Ci0gICAvKiBNYXliZSBjb3B5IHRoZSB0eXBlX3NwZWNpZmljIGJpdHMu CisgICAgICAgLyogRmxhZ3MgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSB2YWx1ZXMgb2YgbG93IGFu ZCBoaWdoIGFyZQorICAgICAgICAgIHZhbGlkLiAgV2hlbiB0cnVlLCB0aGUgcmVzcGVjdGl2ZSBy YW5nZSB2YWx1ZSBpcworQEAgLTg4OSw5ICs5ODYsOSBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9n bmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKKyAjZGVmaW5lIFRZUEVfUE9JTlRFUl9UWVBF KHRoaXN0eXBlKSAodGhpc3R5cGUpLT5wb2ludGVyX3R5cGUKKyAjZGVmaW5lIFRZUEVfUkVGRVJF TkNFX1RZUEUodGhpc3R5cGUpICh0aGlzdHlwZSktPnJlZmVyZW5jZV90eXBlCisgI2RlZmluZSBU WVBFX0NIQUlOKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5jaGFpbgorLS8qIE5vdGUgdGhhdCBpZiB0 aGlzdHlwZSBpcyBhIFRZUEVERUYgdHlwZSwgeW91IGhhdmUgdG8gY2FsbCBjaGVja190eXBlZGVm LgorLSAgIEJ1dCBjaGVja190eXBlZGVmIGRvZXMgc2V0IHRoZSBUWVBFX0xFTkdUSCBvZiB0aGUg VFlQRURFRiB0eXBlLAorLSAgIHNvIHlvdSBvbmx5IGhhdmUgdG8gY2FsbCBjaGVja190eXBlZGVm IG9uY2UuICBTaW5jZSBhbGxvY2F0ZV92YWx1ZQorKy8qIE5vdGUgdGhhdCBpZiB0aGlzdHlwZSBp cyBhIFRZUEVERUYsIEFSUkFZIG9yIFNUUklORyB0eXBlLCB5b3UgaGF2ZSB0byBjYWxsCisrICAg Y2hlY2tfdHlwZWRlZi4gIEJ1dCBjaGVja190eXBlZGVmIGRvZXMgc2V0IHRoZSBUWVBFX0xFTkdU SCBvZiB0aGUgVFlQRURFRgorKyAgIHR5cGUsIHNvIHlvdSBvbmx5IGhhdmUgdG8gY2FsbCBjaGVj a190eXBlZGVmIG9uY2UuICBTaW5jZSBhbGxvY2F0ZV92YWx1ZQorICAgIGNhbGxzIGNoZWNrX3R5 cGVkZWYsIFRZUEVfTEVOR1RIIChWQUxVRV9UWVBFIChYKSkgaXMgc2FmZS4gICovCisgI2RlZmlu ZSBUWVBFX0xFTkdUSCh0aGlzdHlwZSkgKHRoaXN0eXBlKS0+bGVuZ3RoCisgLyogTm90ZSB0aGF0 IFRZUEVfQ09ERSBjYW4gYmUgVFlQRV9DT0RFX1RZUEVERUYsIHNvIGlmIHlvdSB3YW50IHRoZSBy ZWFsCitAQCAtODk5LDExICs5OTYsMTYgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhf dHlwZSAoc3RydWN0IHR5cGUgKik7CisgI2RlZmluZSBUWVBFX0NPREUodGhpc3R5cGUpIFRZUEVf TUFJTl9UWVBFKHRoaXN0eXBlKS0+Y29kZQorICNkZWZpbmUgVFlQRV9ORklFTERTKHRoaXN0eXBl KSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPm5maWVsZHMKKyAjZGVmaW5lIFRZUEVfRklFTERT KHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPmZsZHNfYm5kcy5maWVsZHMKKysj ZGVmaW5lIFRZUEVfREFUQV9MT0NBVElPTl9EV0FSRl9CTE9DSyh0aGlzdHlwZSkgVFlQRV9NQUlO X1RZUEUgKHRoaXN0eXBlKS0+ZGF0YV9sb2NhdGlvbi5kd2FyZl9ibG9jaworKyNkZWZpbmUgVFlQ RV9EQVRBX0xPQ0FUSU9OX0FERFIodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFICh0aGlzdHlwZSkt PmRhdGFfbG9jYXRpb24uYWRkcgorKyNkZWZpbmUgVFlQRV9BTExPQ0FURUQodGhpc3R5cGUpIFRZ UEVfTUFJTl9UWVBFICh0aGlzdHlwZSktPmFsbG9jYXRlZAorKyNkZWZpbmUgVFlQRV9BU1NPQ0lB VEVEKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSAodGhpc3R5cGUpLT5hc3NvY2lhdGVkCiAgCi0g ICAgICBOT1RFIGRyb3cvMjAwNS0xMi0wOTogV2UgZG8gbm90IGNvcHkgdGhlIEMrKy1zcGVjaWZp YyBiaXRzIGxpa2UKLUBAIC0zMTQzLDYgKzM0OTQsMTcgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0gICByZXR1cm4gbmV3X3R5cGU7Ci0gfQorICNkZWZp bmUgVFlQRV9JTkRFWF9UWVBFKHR5cGUpIFRZUEVfRklFTERfVFlQRSAodHlwZSwgMCkKKyAjZGVm aW5lIFRZUEVfUkFOR0VfREFUQSh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUpLT5m bGRzX2JuZHMuYm91bmRzCistI2RlZmluZSBUWVBFX0xPV19CT1VORChyYW5nZV90eXBlKSBUWVBF X1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmxvdworLSNkZWZpbmUgVFlQRV9ISUdIX0JPVU5EKHJh bmdlX3R5cGUpIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+aGlnaAorKyNkZWZpbmUgVFlQ RV9MT1dfQk9VTkQocmFuZ2VfdHlwZSkgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5sb3cu dS5jb25zdGFudAorKyNkZWZpbmUgVFlQRV9ISUdIX0JPVU5EKHJhbmdlX3R5cGUpIFRZUEVfUkFO R0VfREFUQShyYW5nZV90eXBlKS0+aGlnaC51LmNvbnN0YW50CisrI2RlZmluZSBUWVBFX0JZVEVf U1RSSURFKHJhbmdlX3R5cGUpIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+Ynl0ZV9zdHJp ZGUudS5jb25zdGFudAorICNkZWZpbmUgVFlQRV9MT1dfQk9VTkRfVU5ERUZJTkVEKHJhbmdlX3R5 cGUpIFwKKyAgICBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmxvd191bmRlZmluZWQKKyAj ZGVmaW5lIFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQocmFuZ2VfdHlwZSkgXAorQEAgLTkyMCw3 ICsxMDIyLDE0IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0 eXBlICopOworICAgIChUWVBFX0hJR0hfQk9VTkQoVFlQRV9JTkRFWF9UWVBFKChhcnJheXR5cGUp KSkpCiAgCi0rLyogUmVjdXJzaXZlbHkgY29weSAoZGVlcCBjb3B5KSBUWVBFLiAgUmV0dXJuIGEg bmV3IHR5cGUgYWxsb2NhdGVkIHVzaW5nCi0rICAgbWFsbG9jLCBhIHNhdmVkIHR5cGUgaWYgd2Ug aGF2ZSBhbHJlYWR5IHZpc2l0ZWQgVFlQRSAodXNpbmcgQ09QSUVEX1RZUEVTKSwKLSsgICBvciBU WVBFIGlmIGl0IGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggT0JKRklMRS4gICovCi0rCi0rc3RydWN0 IHR5cGUgKgotK2NvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCB0eXBlICp0eXBlLAotKwkJICAg ICBodGFiX3QgY29waWVkX3R5cGVzKQotK3sKLSsgIHJldHVybiBjb3B5X3R5cGVfcmVjdXJzaXZl XzEgKFRZUEVfT0JKRklMRSAodHlwZSksIHR5cGUsIGNvcGllZF90eXBlcyk7Ci0rfQorICNkZWZp bmUgVFlQRV9BUlJBWV9MT1dFUl9CT1VORF9WQUxVRShhcnJheXR5cGUpIFwKKy0gICAoVFlQRV9M T1dfQk9VTkQoVFlQRV9JTkRFWF9UWVBFKChhcnJheXR5cGUpKSkpCisrICBUWVBFX0xPV19CT1VO RCAoVFlQRV9JTkRFWF9UWVBFIChhcnJheXR5cGUpKQogKwotIC8qIE1ha2UgYSBjb3B5IG9mIHRo ZSBnaXZlbiBUWVBFLCBleGNlcHQgdGhhdCB0aGUgcG9pbnRlciAmIHJlZmVyZW5jZQotICAgIHR5 cGVzIGFyZSBub3QgcHJlc2VydmVkLgotICAgIAotQEAgLTMxNjUsNiArMzUyNywxOTkgQEAgY29w eV90eXBlIChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSkKLSAgIHJldHVybiBuZXdfdHlwZTsKLSB9 CisrLyogVFlQRV9CWVRFX1NUUklERSAoVFlQRV9JTkRFWF9UWVBFIChhcnJheXR5cGUpKSB3aXRo IGEgZmFsbGJhY2sgdG8gdGhlCisrICAgZWxlbWVudCBzaXplIGlmIG5vIHNwZWNpZmljIHN0cmlk ZSB2YWx1ZSBpcyBrbm93bi4gICovCisrI2RlZmluZSBUWVBFX0FSUkFZX0JZVEVfU1RSSURFX1ZB TFVFKGFycmF5dHlwZSkJCVwKKysgIChUWVBFX0JZVEVfU1RSSURFIChUWVBFX0lOREVYX1RZUEUg KGFycmF5dHlwZSkpID09IDAJXAorKyAgID8gVFlQRV9MRU5HVEggKFRZUEVfVEFSR0VUX1RZUEUg KGFycmF5dHlwZSkpCQlcCisrICAgOiBUWVBFX0JZVEVfU1RSSURFIChUWVBFX0lOREVYX1RZUEUg KGFycmF5dHlwZSkpKQogIAotKy8qIENhbGxiYWNrIHR5cGUgZm9yIG1haW5fdHlwZV9jcmF3bC4g ICovCi0rdHlwZWRlZiBpbnQgKCptYWluX3R5cGVfY3Jhd2xfaXRlcikgKHN0cnVjdCB0eXBlICp0 eXBlLCB2b2lkICpkYXRhKTsKLSsKLSsvKiBJdGVyYXRlIGFsbCBtYWluX3R5cGUgc3RydWN0dXJl cyByZWFjaGFibGUgdGhyb3VnaCBhbnkgYHN0cnVjdCB0eXBlIConIGZyb20KLSsgICBUWVBFLiAg SVRFUiB3aWxsIGJlIGNhbGxlZCBvbmx5IGZvciBvbmUgdHlwZSBvZiBlYWNoIG1haW5fdHlwZSwg dXNlCi0rICAgVFlQRV9DSEFJTiB0cmF2ZXJzYWwgdG8gZmluZCBhbGwgdGhlIHR5cGUgaW5zdGFu Y2VzLiAgSVRFUiBpcyBiZWluZyBjYWxsZWQKLSsgICBmb3IgZWFjaCBtYWluX3R5cGUgZm91bmQu ICBJVEVSIHJldHVybnMgbm9uLXplcm8gaWYgbWFpbl90eXBlX2NyYXdsIHNob3VsZAotKyAgIGRl cHRoLWZpcnN0IGVudGVyIHRoZSBzcGVjaWZpYyB0eXBlLiAgSVRFUiBtdXN0IHByb3ZpZGUgc29t ZSBkZXRlY3Rpb24gZm9yCi0rICAgcmVlbnRlcmluZyB0aGUgc2FtZSBtYWluX3R5cGUgYXMgdGhp cyBmdW5jdGlvbiB3b3VsZCBvdGhlcndpc2UgZW5kbGVzc2x5Ci0rICAgbG9vcC4gICovCi0rCi0r c3RhdGljIHZvaWQKLSttYWluX3R5cGVfY3Jhd2wgKHN0cnVjdCB0eXBlICp0eXBlLCBtYWluX3R5 cGVfY3Jhd2xfaXRlciBpdGVyLCB2b2lkICpkYXRhKQotK3sKLSsgIHN0cnVjdCB0eXBlICp0eXBl X2l0ZXI7Ci0rICBpbnQgaTsKLSsKLSsgIGlmICghdHlwZSkKLSsgICAgcmV0dXJuOwotKwotKyAg Z2RiX2Fzc2VydCAoVFlQRV9PQkpGSUxFICh0eXBlKSA9PSBOVUxMKTsKKyAvKiBDKysgKi8KKyAK K0BAIC0xMTQxLDYgKzEyNTAsMTAgQEAgc3RydWN0IGJ1aWx0aW5fdHlwZQorICAgICAgKCopICgp IGNhbiBzZXJ2ZXIgYXMgYSBnZW5lcmljIGZ1bmN0aW9uIHBvaW50ZXIuICAqLworICAgc3RydWN0 IHR5cGUgKmJ1aWx0aW5fZnVuY19wdHI7CisgCisrICAvKiBgZnVuY3Rpb24gcmV0dXJuaW5nIHBv aW50ZXIgdG8gZnVuY3Rpb24gKHJldHVybmluZyB2b2lkKScgdHlwZS4KKysgICAgIFRoZSBmaW5h bCB2b2lkIHJldHVybiB0eXBlIGlzIG5vdCBzaWduaWZpY2FudCBmb3IgaXQuICAqLworKyAgc3Ry dWN0IHR5cGUgKmJ1aWx0aW5fZnVuY19mdW5jOwogKwotKyAgLyogYHN0cnVjdCBjcGx1c19zdHJ1 Y3RfdHlwZScgaGFuZGxpbmcgaXMgdW5zdXBwb3J0ZWQgYnkgdGhpcyBmdW5jdGlvbi4gICovCi0r ICBnZGJfYXNzZXJ0ICgoVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfU1RSVUNUCi0rCSAg ICAgICAmJiBUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9VTklPTikKLSsJICAgICAgfHwg IUhBVkVfQ1BMVVNfU1RSVUNUICh0eXBlKSk7CisgCisgICAvKiBTcGVjaWFsLXB1cnBvc2UgdHlw ZXMuICAqLworIAorQEAgLTExODEsNiArMTI5NCw4IEBAIHN0cnVjdCBvYmpmaWxlX3R5cGUKKyAK KyAgIC8qIFR5cGVzIHVzZWQgZm9yIHN5bWJvbHMgd2l0aCBubyBkZWJ1ZyBpbmZvcm1hdGlvbi4g ICovCisgICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z190ZXh0X3N5bWJvbDsKKysgIHN0cnVjdCB0eXBl ICpub2RlYnVnX3RleHRfZ251X2lmdW5jX3N5bWJvbDsKKysgIHN0cnVjdCB0eXBlICpub2RlYnVn X2dvdF9wbHRfc3ltYm9sOworICAgc3RydWN0IHR5cGUgKm5vZGVidWdfZGF0YV9zeW1ib2w7Cisg ICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z191bmtub3duX3N5bWJvbDsKKyAgIHN0cnVjdCB0eXBlICpu b2RlYnVnX3Rsc19zeW1ib2w7CitAQCAtMTMyOCw2ICsxNDQzLDE4IEBAIGV4dGVybiBzdHJ1Y3Qg dHlwZSAqY3JlYXRlX2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICosCisg CQkJCSAgICAgICBzdHJ1Y3QgdHlwZSAqKTsKKyBleHRlcm4gc3RydWN0IHR5cGUgKmxvb2t1cF9h cnJheV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBpbnQsIGludCk7CisgCisrZXh0ZXJuIENP UkVfQUREUiB0eXBlX3JhbmdlX2FueV9maWVsZF9pbnRlcm5hbCAoc3RydWN0IHR5cGUgKnJhbmdl X3R5cGUsCisrCQkJCQkJaW50IGZpZWxkbm8pOwogKwotKyAgaWYgKCEoKml0ZXIpICh0eXBlLCBk YXRhKSkKLSsgICAgcmV0dXJuOworK2V4dGVybiBpbnQgdHlwZV9yYW5nZV9oaWdoX2JvdW5kX2lu dGVybmFsIChzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSk7CiArCi0rICAvKiBJdGVyYXRlIGFsbCB0 aGUgdHlwZSBpbnN0YW5jZXMgb2YgdGhpcyBtYWluX3R5cGUuICAqLwotKyAgdHlwZV9pdGVyID0g dHlwZTsKLSsgIGRvCi0rICAgIHsKLSsgICAgICBnZGJfYXNzZXJ0IChUWVBFX01BSU5fVFlQRSAo dHlwZV9pdGVyKSA9PSBUWVBFX01BSU5fVFlQRSAodHlwZSkpOworK2V4dGVybiBpbnQgdHlwZV9y YW5nZV9jb3VudF9ib3VuZF9pbnRlcm5hbCAoc3RydWN0IHR5cGUgKnJhbmdlX3R5cGUpOwogKwot KyAgICAgIG1haW5fdHlwZV9jcmF3bCAoVFlQRV9QT0lOVEVSX1RZUEUgKHR5cGUpLCBpdGVyLCBk YXRhKTsKLSsgICAgICBtYWluX3R5cGVfY3Jhd2wgKFRZUEVfUkVGRVJFTkNFX1RZUEUgKHR5cGUp LCBpdGVyLCBkYXRhKTsKKytleHRlcm4gQ09SRV9BRERSIHR5cGVfcmFuZ2VfYnl0ZV9zdHJpZGVf aW50ZXJuYWwgKHN0cnVjdCB0eXBlICpyYW5nZV90eXBlLAorKwkJCQkJCSAgc3RydWN0IHR5cGUg KmVsZW1lbnRfdHlwZSk7CiArCi0rICAgICAgdHlwZV9pdGVyID0gVFlQRV9DSEFJTiAodHlwZV9p dGVyKTsKLSsgICAgfQotKyAgd2hpbGUgKHR5cGVfaXRlciAhPSB0eXBlKTsKKytleHRlcm4gdm9p ZCBmaW5hbGl6ZV90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSk7CiArCi0rICBmb3IgKGkgPSAwOyBp IDwgVFlQRV9ORklFTERTICh0eXBlKTsgaSsrKQotKyAgICBtYWluX3R5cGVfY3Jhd2wgKFRZUEVf RklFTERfVFlQRSAodHlwZSwgaSksIGl0ZXIsIGRhdGEpOworIGV4dGVybiBzdHJ1Y3QgdHlwZSAq Y3JlYXRlX3N0cmluZ190eXBlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqLAorIAkJCQkJ c3RydWN0IHR5cGUgKik7CisgZXh0ZXJuIHN0cnVjdCB0eXBlICpsb29rdXBfc3RyaW5nX3Jhbmdl X3R5cGUgKHN0cnVjdCB0eXBlICosIGludCwgaW50KTsKK0BAIC0xMzcwLDYgKzE0OTcsOCBAQCBl eHRlcm4gaW50IGlzX3B1YmxpY19hbmNlc3RvciAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUg Kik7CisgCisgZXh0ZXJuIGludCBpc191bmlxdWVfYW5jZXN0b3IgKHN0cnVjdCB0eXBlICosIHN0 cnVjdCB2YWx1ZSAqKTsKKyAKKytleHRlcm4gdm9pZCB0eXBlX21hcmtfdXNlZCAoc3RydWN0IHR5 cGUgKnR5cGUpOwogKwotKyAgbWFpbl90eXBlX2NyYXdsIChUWVBFX1RBUkdFVF9UWVBFICh0eXBl KSwgaXRlciwgZGF0YSk7Ci0rICBtYWluX3R5cGVfY3Jhd2wgKFRZUEVfVlBUUl9CQVNFVFlQRSAo dHlwZSksIGl0ZXIsIGRhdGEpOwotK30KKyAvKiBPdmVybG9hZCByZXNvbHV0aW9uICovCisgCisg I2RlZmluZSBMRU5HVEhfTUFUQ0goYnYpICgoYnYpLT5yYW5rWzBdKQorQEAgLTE0MzIsMTAgKzE1 NjEsMTEgQEAgZXh0ZXJuIHZvaWQgbWFpbnRlbmFuY2VfcHJpbnRfdHlwZSAoY2hhciAqLCBpbnQp OworIAorIGV4dGVybiBodGFiX3QgY3JlYXRlX2NvcGllZF90eXBlc19oYXNoIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSk7CisgCistZXh0ZXJuIHN0cnVjdCB0eXBlICpjb3B5X3R5cGVfcmVjdXJz aXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKy0JCQkJCSBzdHJ1Y3QgdHlwZSAqdHlwZSwK KytleHRlcm4gc3RydWN0IHR5cGUgKmNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCB0eXBlICp0 eXBlLAorIAkJCQkJIGh0YWJfdCBjb3BpZWRfdHlwZXMpOworIAorIGV4dGVybiBzdHJ1Y3QgdHlw ZSAqY29weV90eXBlIChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSk7CisgCisrZXh0ZXJuIHZvaWQg ZnJlZV9hbGxfdHlwZXMgKHZvaWQpOwogKwotKy8qIEEgaGVscGVyIGZvciBkZWxldGVfdHlwZSB3 aGljaCBkZWxldGVzIGEgbWFpbl90eXBlIGFuZCB0aGUgdGhpbmdzIHRvIHdoaWNoCi0rICAgaXQg cmVmZXJzLiAgVFlQRSBpcyBhIHR5cGUgd2hvc2UgbWFpbl90eXBlIHdlIHdpc2ggdG8gZGVzdHJv eS4gICovCisgI2VuZGlmIC8qIEdEQlRZUEVTX0ggKi8KK2RpZmYgLS1naXQgYS9nZGIvaTM4Ni1s aW51eC1uYXQuYyBiL2dkYi9pMzg2LWxpbnV4LW5hdC5jCitpbmRleCA0ZmNlMWFjLi4xNDRhODk5 IDEwMDY0NAorLS0tIGEvZ2RiL2kzODYtbGludXgtbmF0LmMKKysrKyBiL2dkYi9pMzg2LWxpbnV4 LW5hdC5jCitAQCAtNzQ3LDYgKzc0NywyMSBAQCBpMzg2X2xpbnV4X2RyX3Vuc2V0X3N0YXR1cyAo dW5zaWduZWQgbG9uZyBtYXNrKQorICAgICB9CisgfQorIAorKy8qIFNlZSBpMzg2X2RyX2xvd190 eXBlLmRldGFjaC4gIERvIG5vdCB1c2Ugd3JhcHBlcnMgaTM4Nl9saW51eF9kcl9zZXRfY29udHJv bAorKyAgIG9yIGkzODZfbGludXhfZHJfcmVzZXRfYWRkciBhcyB0aGV5IHdvdWxkIG1vZGlmeSB0 aGUgcmVnaXN0ZXIgY2FjaGUKKysgICAoaTM4Nl9saW51eF9kcikuICAqLwogKwogK3N0YXRpYyB2 b2lkCi0rZGVsZXRlX21haW5fdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUpCisraTM4Nl9saW51eF9k cl9kZXRhY2ggKHZvaWQpCiArewotKyAgaW50IGk7Ci0rCi0rICBnZGJfYXNzZXJ0IChUWVBFX0RJ U0NBUkRBQkxFICh0eXBlKSk7Ci0rICBnZGJfYXNzZXJ0IChUWVBFX09CSkZJTEUgKHR5cGUpID09 IE5VTEwpOwotKwotKyAgeGZyZWUgKFRZUEVfTkFNRSAodHlwZSkpOwotKyAgeGZyZWUgKFRZUEVf VEFHX05BTUUgKHR5cGUpKTsKKysgIGludCByZWdudW07CiArCi0rICBmb3IgKGkgPSAwOyBpIDwg VFlQRV9ORklFTERTICh0eXBlKTsgKytpKQotKyAgICB7Ci0rICAgICAgeGZyZWUgKFRZUEVfRklF TERfTkFNRSAodHlwZSwgaSkpOworKyAgaTM4Nl9saW51eF9kcl9zZXQgKGluZmVyaW9yX3B0aWQs IERSX0NPTlRST0wsIDApOworKyAgaTM4Nl9saW51eF9kcl91bnNldF9zdGF0dXMgKH4wVUwpOwor KyAgZm9yIChyZWdudW0gPSBEUl9GSVJTVEFERFI7IHJlZ251bSA8PSBEUl9MQVNUQUREUjsgcmVn bnVtKyspCisrICAgIGkzODZfbGludXhfZHJfc2V0IChpbmZlcmlvcl9wdGlkLCByZWdudW0sIDAp OworK30KICsKLSsgICAgICBpZiAoVFlQRV9GSUVMRF9MT0NfS0lORCAodHlwZSwgaSkgPT0gRklF TERfTE9DX0tJTkRfUEhZU05BTUUpCi0rCXhmcmVlIChUWVBFX0ZJRUxEX1NUQVRJQ19QSFlTTkFN RSAodHlwZSwgaSkpOwotKyAgICB9Ci0rICB4ZnJlZSAoVFlQRV9GSUVMRFMgKHR5cGUpKTsKKyBz dGF0aWMgdm9pZAorIGkzODZfbGludXhfbmV3X3RocmVhZCAocHRpZF90IHB0aWQpCisgeworQEAg LTk3Niw2ICs5OTEsNyBAQCBfaW5pdGlhbGl6ZV9pMzg2X2xpbnV4X25hdCAodm9pZCkKKyAgIGkz ODZfZHJfbG93LnJlc2V0X2FkZHIgPSBpMzg2X2xpbnV4X2RyX3Jlc2V0X2FkZHI7CisgICBpMzg2 X2RyX2xvdy5nZXRfc3RhdHVzID0gaTM4Nl9saW51eF9kcl9nZXRfc3RhdHVzOworICAgaTM4Nl9k cl9sb3cudW5zZXRfc3RhdHVzID0gaTM4Nl9saW51eF9kcl91bnNldF9zdGF0dXM7CisrICBpMzg2 X2RyX2xvdy5kZXRhY2ggPSBpMzg2X2xpbnV4X2RyX2RldGFjaDsKKyAgIGkzODZfc2V0X2RlYnVn X3JlZ2lzdGVyX2xlbmd0aCAoNCk7CisgCisgICAvKiBPdmVycmlkZSB0aGUgZGVmYXVsdCBwdHJh Y2UgcmVzdW1lIG1ldGhvZC4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL2kzODYtbmF0LmMgYi9nZGIv aTM4Ni1uYXQuYworaW5kZXggZWFhMzY0NC4uMDkyMWM3ZSAxMDA2NDQKKy0tLSBhL2dkYi9pMzg2 LW5hdC5jCisrKysgYi9nZGIvaTM4Ni1uYXQuYworQEAgLTUzMyw2ICs1MzMsMTcgQEAgaTM4Nl9y ZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAorICAg cmV0dXJuIHJldHZhbDsKKyB9CisgCisrLyogU2VlIHRhcmdldF9kZXRhY2hfd2F0Y2hwb2ludHMu ICAqLwogKwotKyAgZ2RiX2Fzc2VydCAoIUhBVkVfQ1BMVVNfU1RSVUNUICh0eXBlKSk7Cisrc3Rh dGljIGludAorK2kzODZfZGV0YWNoX3dhdGNocG9pbnRzICh2b2lkKQorK3sKKysgIGlmIChpMzg2 X2RyX2xvdy5kZXRhY2gpCisrICAgIGkzODZfZHJfbG93LmRldGFjaCAoKTsKICsKLSsgIHhmcmVl IChUWVBFX01BSU5fVFlQRSAodHlwZSkpOworKyAgcmV0dXJuIDA7CiArfQogKwotKy8qIERlbGV0 ZSBhbGwgdGhlIGluc3RhbmNlcyBvbiBUWVBFX0NIQUlOIG9mIFRZUEUsIGluY2x1ZGluZyB0aGVp ciByZWZlcmVuY2VkCi0rICAgbWFpbl90eXBlLiAgVFlQRSBtdXN0IGJlIGEgcmVjbGFpbWFibGUg dHlwZSAtIG5laXRoZXIgcGVybWFuZW50IG5vciBvYmpmaWxlCi0rICAgYXNzb2NpYXRlZC4gICov CisgLyogUmV0dXJuIG5vbi16ZXJvIGlmIHdlIGNhbiB3YXRjaCBhIG1lbW9yeSByZWdpb24gdGhh dCBzdGFydHMgYXQKKyAgICBhZGRyZXNzIEFERFIgYW5kIHdob3NlIGxlbmd0aCBpcyBMRU4gYnl0 ZXMuICAqLworIAorQEAgLTY4NSw2ICs2OTYsNyBAQCBpMzg2X3VzZV93YXRjaHBvaW50cyAoc3Ry dWN0IHRhcmdldF9vcHMgKnQpCisgICB0LT50b19zdG9wcGVkX2RhdGFfYWRkcmVzcyA9IGkzODZf c3RvcHBlZF9kYXRhX2FkZHJlc3M7CisgICB0LT50b19pbnNlcnRfd2F0Y2hwb2ludCA9IGkzODZf aW5zZXJ0X3dhdGNocG9pbnQ7CisgICB0LT50b19yZW1vdmVfd2F0Y2hwb2ludCA9IGkzODZfcmVt b3ZlX3dhdGNocG9pbnQ7CisrICB0LT50b19kZXRhY2hfd2F0Y2hwb2ludHMgPSBpMzg2X2RldGFj aF93YXRjaHBvaW50czsKKyAgIHQtPnRvX2luc2VydF9od19icmVha3BvaW50ID0gaTM4Nl9pbnNl cnRfaHdfYnJlYWtwb2ludDsKKyAgIHQtPnRvX3JlbW92ZV9od19icmVha3BvaW50ID0gaTM4Nl9y ZW1vdmVfaHdfYnJlYWtwb2ludDsKKyB9CitkaWZmIC0tZ2l0IGEvZ2RiL2kzODYtbmF0LmggYi9n ZGIvaTM4Ni1uYXQuaAoraW5kZXggNzMxN2U3ZC4uZWE5MTRhNSAxMDA2NDQKKy0tLSBhL2dkYi9p Mzg2LW5hdC5oCisrKysgYi9nZGIvaTM4Ni1uYXQuaAorQEAgLTYyLDYgKzYyLDEwIEBAIGV4dGVy biB2b2lkIGkzODZfdXNlX3dhdGNocG9pbnRzIChzdHJ1Y3QgdGFyZ2V0X29wcyAqKTsKKyAgICAg ICB1bnNldF9zdGF0dXMgICAgICAgICAgICAgLS0gdW5zZXQgdGhlIHNwZWNpZmllZCBiaXRzIG9m IHRoZSBkZWJ1ZworIAkJCQkgIHN0YXR1cyAoRFI2KSByZWdpc3RlciBmb3IgYWxsIExXUHMKKyAK KysgICAgICBkZXRhY2ggICAgICAgICAgICAgICAgICAgLS0gY2xlYXIgYWxsIGRlYnVnIHJlZ2lz dGVycyBvZiBvbmx5IHRoZQorKwkJCQkgIElORkVSSU9SX1BUSUQgdGFzayB3aXRob3V0IGFmZmVj dGluZyBhbnkKKysJCQkJICByZWdpc3RlciBjYWNoZXMuCisrCisgICAgQWRkaXRpb25hbGx5LCB0 aGUgbmF0aXZlIGZpbGUgc2hvdWxkIHNldCB0aGUgZGVidWdfcmVnaXN0ZXJfbGVuZ3RoCisgICAg ZmllbGQgdG8gNCBvciA4IGRlcGVuZGluZyBvbiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHVzZWQgZm9y CisgICAgZGV1YmcgcmVnaXN0ZXJzLiAgKi8KK0BAIC03Myw2ICs3Nyw3IEBAIHN0cnVjdCBpMzg2 X2RyX2xvd190eXBlCisgICAgIHZvaWQgKCpyZXNldF9hZGRyKSAoaW50KTsKKyAgICAgdW5zaWdu ZWQgbG9uZyAoKmdldF9zdGF0dXMpICh2b2lkKTsKKyAgICAgdm9pZCAoKnVuc2V0X3N0YXR1cykg KHVuc2lnbmVkIGxvbmcpOworKyAgICB2b2lkICgqZGV0YWNoKSAodm9pZCk7CisgICAgIGludCBk ZWJ1Z19yZWdpc3Rlcl9sZW5ndGg7CisgICB9OworIAorZGlmZiAtLWdpdCBhL2dkYi9pbmZjYWxs LmMgYi9nZGIvaW5mY2FsbC5jCitpbmRleCAwYzlhM2FmLi45NTdlYzFkIDEwMDY0NAorLS0tIGEv Z2RiL2luZmNhbGwuYworKysrIGIvZ2RiL2luZmNhbGwuYworQEAgLTIyNSw2ICsyMjUsNTYgQEAg dmFsdWVfYXJnX2NvZXJjZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB2YWx1ZSAq YXJnLAorICAgcmV0dXJuIHZhbHVlX2Nhc3QgKHR5cGUsIGFyZyk7CisgfQorIAorKy8qIENhbGwg Z251LWlmdW5jIChTVFRfR05VX0lGVU5DIC0gYSBmdW5jdGlvbiByZXR1cm5pbmcgYWRkcmVzc3Mg b2YgYSByZWFsCisrICAgZnVuY3Rpb24gdG8gY2FsbCkuICBQQyBpcyB0aGUgZ251LWlmdW5jIGZ1 bmN0aW9uIGVudHJ5LiAgRnVuY3Rpb24gcmV0dXJucworKyAgIGZ1bmN0aW9uIGVudHJ5IG9mIHRo ZSBnbnUtaWZ1bmMtcmVzb2x2ZWQgZnVuY3Rpb24gdG8gY2FsbC4gIElmIFJFVFZBTF9UWVBFUAor KyAgIGlzIG5vdCBOVUxMIGZpbGwgaW4gKlJFVFZBTF9UWVBFUCB3aXRoIHJldHVybiB0eXBlIG9m IHRoZSBnbnUtaWZ1bmMtcmVzb2x2ZWQKKysgICBmdW5jdGlvbiB0byBjYWxsLiAgS2VlcCAqUkVU VkFMX1RZUEVQIGludGFjdCBpZiB0aGUgcmV0dXJuIHR5cGUgY291bGQgbm90IGJlCisrICAgZm91 bmQuICAqLwogKwotK3N0YXRpYyB2b2lkCi0rZGVsZXRlX3R5cGVfY2hhaW4gKHN0cnVjdCB0eXBl ICp0eXBlKQorK3N0YXRpYyBDT1JFX0FERFIKKytnbnVfaWZ1bmNfcmVzb2x2ZSAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBwYykKICt7Ci0rICBzdHJ1Y3QgdHlwZSAqdHlwZV9p dGVyLCAqdHlwZV9pdGVyX3RvX2ZyZWU7Ci0rCi0rICBnZGJfYXNzZXJ0IChUWVBFX0RJU0NBUkRB QkxFICh0eXBlKSk7Ci0rICBnZGJfYXNzZXJ0IChUWVBFX09CSkZJTEUgKHR5cGUpID09IE5VTEwp OwotKwotKyAgZGVsZXRlX21haW5fdHlwZSAodHlwZSk7CisrICBjaGFyICpuYW1lX2F0X3BjOwor KyAgQ09SRV9BRERSIHN0YXJ0X2F0X3BjLCBhZGRyZXNzOworKyAgc3RydWN0IHR5cGUgKmZ1bmNf ZnVuY190eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9mdW5jX2Z1bmM7Cisr ICBzdHJ1Y3QgdmFsdWUgKmZ1bmN0aW9uLCAqYWRkcmVzc192YWw7CiArCi0rICB0eXBlX2l0ZXIg PSB0eXBlOwotKyAgZG8KKysgIGlmIChmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKHBjLCAmbmFt ZV9hdF9wYywgJnN0YXJ0X2F0X3BjLCBOVUxMKQorKyAgICAgICYmIHN0YXJ0X2F0X3BjID09IHBj KQogKyAgICB7Ci0rICAgICAgdHlwZV9pdGVyX3RvX2ZyZWUgPSB0eXBlX2l0ZXI7Ci0rICAgICAg dHlwZV9pdGVyID0gVFlQRV9DSEFJTiAodHlwZV9pdGVyKTsKLSsgICAgICB4ZnJlZSAodHlwZV9p dGVyX3RvX2ZyZWUpOworKyAgICAgIGlmIChyZXNvbHZlX2dudV9pZnVuYyAobmFtZV9hdF9wYywg JmFkZHJlc3MpKQorKwlyZXR1cm4gYWRkcmVzczsKICsgICAgfQotKyAgd2hpbGUgKHR5cGVfaXRl ciAhPSB0eXBlKTsKLSt9Ci0rCi0rLyogSGFzaCBmdW5jdGlvbiBmb3IgdHlwZV9kaXNjYXJkYWJs ZV90YWJsZS4gICovCi0rCi0rc3RhdGljIGhhc2h2YWxfdAotK3R5cGVfZGlzY2FyZGFibGVfaGFz aCAoY29uc3Qgdm9pZCAqcCkKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSA9IHA7Ci0r Ci0rICByZXR1cm4gaHRhYl9oYXNoX3BvaW50ZXIgKFRZUEVfTUFJTl9UWVBFICh0eXBlKSk7Ci0r fQotKwotKy8qIEVxdWFsaXR5IGZ1bmN0aW9uIGZvciB0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlLiAg Ki8KLSsKLStzdGF0aWMgaW50Ci0rdHlwZV9kaXNjYXJkYWJsZV9lcXVhbCAoY29uc3Qgdm9pZCAq YSwgY29uc3Qgdm9pZCAqYikKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgdHlwZSAqbGVmdCA9IGE7Ci0r ICBjb25zdCBzdHJ1Y3QgdHlwZSAqcmlnaHQgPSBiOwotKwotKyAgcmV0dXJuIFRZUEVfTUFJTl9U WVBFIChsZWZ0KSA9PSBUWVBFX01BSU5fVFlQRSAocmlnaHQpOwotK30KLSsKLSsvKiBBIGhlbHBl ciBmb3IgdHlwZV9tYXJrX3VzZWQuICAqLworKyAgZWxzZQorKyAgICBuYW1lX2F0X3BjID0gTlVM TDsKICsKLStzdGF0aWMgaW50Ci0rdHlwZV9tYXJrX3VzZWRfY3Jhd2wgKHN0cnVjdCB0eXBlICp0 eXBlLCB2b2lkICp1bnVzZWQpCi0rewotKyAgaWYgKCFUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSkK LSsgICAgcmV0dXJuIDA7CisrICBmdW5jdGlvbiA9IGFsbG9jYXRlX3ZhbHVlIChmdW5jX2Z1bmNf dHlwZSk7CisrICBzZXRfdmFsdWVfYWRkcmVzcyAoZnVuY3Rpb24sIHBjKTsKICsKLSsgIGlmIChU WVBFX0RJU0NBUkRBQkxFX0FHRSAodHlwZSkgPT0gdHlwZV9kaXNjYXJkYWJsZV9hZ2VfY3VycmVu dCkKLSsgICAgcmV0dXJuIDA7CisrICAvKiBnbnUtaWZ1bmNzIGhhdmUgbm8gYXJndW1lbnRzLiAg RlVOQ1RJT04gaXMgdGhlIGZ1bmN0aW9uIGVudHJ5IGFkZHJlc3MKKysgICAgIHdoaWxlIEFERFJF U1MgaXMgYSBwb3NzaWJsZSBmdW5jdGlvbiBkZXNjcmlwdG9yLi4gICovCisrICBhZGRyZXNzX3Zh bCA9IGNhbGxfZnVuY3Rpb25fYnlfaGFuZCAoZnVuY3Rpb24sIDAsIE5VTEwpOworKyAgYWRkcmVz cyA9IHZhbHVlX2FzX2FkZHJlc3MgKGFkZHJlc3NfdmFsKTsKICsKLSsgIFRZUEVfRElTQ0FSREFC TEVfQUdFICh0eXBlKSA9IHR5cGVfZGlzY2FyZGFibGVfYWdlX2N1cnJlbnQ7CisrICBpZiAobmFt ZV9hdF9wYykKKysgICAgZ251X2lmdW5jX3JlY29yZF9jYWNoZSAoZ2RiYXJjaCwgbmFtZV9hdF9w YywgYWRkcmVzcyk7CiArCi0rICAvKiBDb250aW51ZSB0aGUgdHJhdmVyc2FsLiAgKi8KLSsgIHJl dHVybiAxOworKyAgcmV0dXJuIGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdk YmFyY2gsIGFkZHJlc3MsICZjdXJyZW50X3RhcmdldCk7CiArfQogKwotKy8qIE1hcmsgVFlQRSBh bmQgaXRzIGNvbm5lY3RlZCB0eXBlcyBhcyB1c2VkIGluIHRoaXMgZnJlZV9hbGxfdHlwZXMgcGFz cy4gICovCi0rCi0rdm9pZAotK3R5cGVfbWFya191c2VkIChzdHJ1Y3QgdHlwZSAqdHlwZSkKKytz dGF0aWMgc3RydWN0IHR5cGUgKgorK2ZpbmRfZnVuY3Rpb25fcmV0dXJuX3R5cGUgKENPUkVfQURE UiBwYykKICt7Ci0rICBpZiAodHlwZSA9PSBOVUxMKQotKyAgICByZXR1cm47CisrICBzdHJ1Y3Qg c3ltYm9sICpzeW0gPSBmaW5kX3BjX2Z1bmN0aW9uIChwYyk7CiArCi0rICBpZiAoIVRZUEVfRElT Q0FSREFCTEUgKHR5cGUpKQotKyAgICByZXR1cm47CisrICBpZiAoc3ltICE9IE5VTEwgJiYgQkxP Q0tfU1RBUlQgKFNZTUJPTF9CTE9DS19WQUxVRSAoc3ltKSkgPT0gcGMKKysgICAgICAmJiBTWU1C T0xfVFlQRSAoc3ltKSAhPSBOVUxMKQorKyAgICByZXR1cm4gVFlQRV9UQVJHRVRfVFlQRSAoU1lN Qk9MX1RZUEUgKHN5bSkpOwogKwotKyAgbWFpbl90eXBlX2NyYXdsICh0eXBlLCB0eXBlX21hcmtf dXNlZF9jcmF3bCwgTlVMTCk7CisrICByZXR1cm4gTlVMTDsKICt9CiArCi0rLyogQSB0cmF2ZXJz ZSBjYWxsYmFjayBmb3IgdHlwZV9kaXNjYXJkYWJsZV90YWJsZSB3aGljaCByZW1vdmVzIGFueQot KyAgIHR5cGVfZGlzY2FyZGFibGUgd2hvc2UgcmVmZXJlbmNlIGNvdW50IGlzIG5vdyB6ZXJvICh1 bnVzZWQgbGluaykuICAqLwotKwotK3N0YXRpYyBpbnQKLSt0eXBlX2Rpc2NhcmRhYmxlX3JlbW92 ZSAodm9pZCAqKnNsb3QsIHZvaWQgKnVudXNlZCkKLSt7Ci0rICBzdHJ1Y3QgdHlwZSAqdHlwZSA9 ICpzbG90OwotKwotKyAgZ2RiX2Fzc2VydCAoVFlQRV9ESVNDQVJEQUJMRSAodHlwZSkpOwotKwot KyAgaWYgKFRZUEVfRElTQ0FSREFCTEVfQUdFICh0eXBlKSAhPSB0eXBlX2Rpc2NhcmRhYmxlX2Fn ZV9jdXJyZW50KQotKyAgICB7Ci0rICAgICAgZGVsZXRlX3R5cGVfY2hhaW4gKHR5cGUpOwotKwot KyAgICAgIGh0YWJfY2xlYXJfc2xvdCAodHlwZV9kaXNjYXJkYWJsZV90YWJsZSwgc2xvdCk7Cisg LyogRGV0ZXJtaW5lIGEgZnVuY3Rpb24ncyBhZGRyZXNzIGFuZCBpdHMgcmV0dXJuIHR5cGUgZnJv bSBpdHMgdmFsdWUuCisgICAgQ2FsbHMgZXJyb3IoKSBpZiB0aGUgZnVuY3Rpb24gaXMgbm90IHZh bGlkIGZvciBjYWxsaW5nLiAgKi8KKyAKK0BAIC0yMzMsNyArMjgzLDYgQEAgZmluZF9mdW5jdGlv bl9hZGRyIChzdHJ1Y3QgdmFsdWUgKmZ1bmN0aW9uLCBzdHJ1Y3QgdHlwZSAqKnJldHZhbF90eXBl KQorIHsKKyAgIHN0cnVjdCB0eXBlICpmdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUg KGZ1bmN0aW9uKSk7CisgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF90eXBlX2FyY2gg KGZ0eXBlKTsKKy0gIGVudW0gdHlwZV9jb2RlIGNvZGUgPSBUWVBFX0NPREUgKGZ0eXBlKTsKKyAg IHN0cnVjdCB0eXBlICp2YWx1ZV90eXBlID0gTlVMTDsKKyAgIENPUkVfQUREUiBmdW5hZGRyOwor IAorQEAgLTI0MSwyNCArMjkwLDM0IEBAIGZpbmRfZnVuY3Rpb25fYWRkciAoc3RydWN0IHZhbHVl ICpmdW5jdGlvbiwgc3RydWN0IHR5cGUgKipyZXR2YWxfdHlwZSkKKyAgICAgIHBhcnQgb2YgaXQu ICAqLworIAorICAgLyogRGV0ZXJtaW5lIGFkZHJlc3MgdG8gY2FsbC4gICovCistICBpZiAoY29k ZSA9PSBUWVBFX0NPREVfRlVOQyB8fCBjb2RlID09IFRZUEVfQ09ERV9NRVRIT0QpCistICAgIHsK Ky0gICAgICBmdW5hZGRyID0gdmFsdWVfYWRkcmVzcyAoZnVuY3Rpb24pOworLSAgICAgIHZhbHVl X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChmdHlwZSk7CistICAgIH0KKy0gIGVsc2UgaWYgKGNv ZGUgPT0gVFlQRV9DT0RFX1BUUikKKysgIGlmIChUWVBFX0NPREUgKGZ0eXBlKSA9PSBUWVBFX0NP REVfRlVOQworKyAgICAgIHx8IFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09ERV9NRVRIT0Qp CisrICAgIGZ1bmFkZHIgPSB2YWx1ZV9hZGRyZXNzIChmdW5jdGlvbik7CisrICBlbHNlIGlmIChU WVBFX0NPREUgKGZ0eXBlKSA9PSBUWVBFX0NPREVfUFRSKQorICAgICB7CisgICAgICAgZnVuYWRk ciA9IHZhbHVlX2FzX2FkZHJlc3MgKGZ1bmN0aW9uKTsKKyAgICAgICBmdHlwZSA9IGNoZWNrX3R5 cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKGZ0eXBlKSk7CisgICAgICAgaWYgKFRZUEVfQ09ERSAo ZnR5cGUpID09IFRZUEVfQ09ERV9GVU5DCisgCSAgfHwgVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQ RV9DT0RFX01FVEhPRCkKKysJZnVuYWRkciA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRy X2FkZHIgKGdkYmFyY2gsIGZ1bmFkZHIsCisrCQkJCQkJICAgICAgJmN1cnJlbnRfdGFyZ2V0KTsK ICsgICAgfQorKyAgaWYgKFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09ERV9GVU5DCisrICAg ICAgfHwgVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQRV9DT0RFX01FVEhPRCkKKysgICAgeworKyAg ICAgIHZhbHVlX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChmdHlwZSk7CiArCi0rICByZXR1cm4g MTsKLSt9Ci0rCi0rLyogRnJlZSBhbGwgdGhlIHJlY2xhaW1hYmxlIHR5cGVzIHRoYXQgaGF2ZSBi ZWVuIGFsbG9jYXRlZCBhbmQgdGhhdCBoYXZlCi0rICAgY3VycmVudGx5IHplcm8gcmVmZXJlbmNl IGNvdW50ZXIuCi0rCi0rICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYWZ0ZXIgZWFjaCBjb21t YW5kLCBzdWNjZXNzZnVsIG9yIG5vdC4gIFVzZSB0aGlzCi0rICAgY2xlYW51cCBvbmx5IGluIHRo ZSBHREIgaWRsZSBzdGF0ZSBhcyBHREIgb25seSBtYXJrcyB0aG9zZSB0eXBlcyB1c2VkIGJ5Ci0r ICAgZ2xvYmFsbHkgdHJhY2tlZCBvYmplY3RzICh3aXRoIG5vIGF1dG92YXJpYWJsZSByZWZlcmVu Y2VzIHRyYWNraW5nKS4gICovCisrICAgICAgaWYgKFRZUEVfR05VX0lGVU5DIChmdHlwZSkpCisg CXsKKy0JICBmdW5hZGRyID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2Ri YXJjaCwgZnVuYWRkciwKKy0JCQkJCQkJJmN1cnJlbnRfdGFyZ2V0KTsKKy0JICB2YWx1ZV90eXBl ID0gVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpOworKwkgIGZ1bmFkZHIgPSBnbnVfaWZ1bmNfcmVz b2x2ZSAoZ2RiYXJjaCwgZnVuYWRkcik7CiArCisrCSAgLyogU2tpcCBxdWVyeWluZyB0aGUgZnVu Y3Rpb24gc3ltYm9sIGlmIG5vIFJFVFZBTF9UWVBFIGhhcyBiZWVuCisrCSAgICAgYXNrZWQgZm9y LiAgKi8KKysJICBpZiAocmV0dmFsX3R5cGUpCisrCSAgICB2YWx1ZV90eXBlID0gZmluZF9mdW5j dGlvbl9yZXR1cm5fdHlwZSAoZnVuYWRkcik7CisgCX0KKyAgICAgfQorLSAgZWxzZSBpZiAoY29k ZSA9PSBUWVBFX0NPREVfSU5UKQorKyAgZWxzZSBpZiAoVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQ RV9DT0RFX0lOVCkKKyAgICAgeworICAgICAgIC8qIEhhbmRsZSB0aGUgY2FzZSBvZiBmdW5jdGlv bnMgbGFja2luZyBkZWJ1Z2dpbmcgaW5mby4KKyAgICAgICAgICBUaGVpciB2YWx1ZXMgYXJlIGNo YXJhY3RlcnMgc2luY2UgdGhlaXIgYWRkcmVzc2VzIGFyZSBjaGFyICovCitkaWZmIC0tZ2l0IGEv Z2RiL2luZmNtZC5jIGIvZ2RiL2luZmNtZC5jCitpbmRleCBjNGNkYjA2Li5kMjEzZjZhIDEwMDY0 NAorLS0tIGEvZ2RiL2luZmNtZC5jCisrKysgYi9nZGIvaW5mY21kLmMKK0BAIC04MjIsNyArODIy LDcgQEAgbmV4dGlfY29tbWFuZCAoY2hhciAqY291bnRfc3RyaW5nLCBpbnQgZnJvbV90dHkpCisg ICBzdGVwXzEgKDEsIDEsIGNvdW50X3N0cmluZyk7CisgfQorIAorLXN0YXRpYyB2b2lkCiArdm9p ZAotK2ZyZWVfYWxsX3R5cGVzICh2b2lkKQotK3sKLSsgIC8qIE1hcmsgYSBuZXcgcGFzcy4gIEFz IEdEQiBjaGVja3MgYWxsIHRoZSBlbnRyaWVzIHdlcmUgdmlzaXRlZCBhZnRlciBlYWNoCi0rICAg ICBwYXNzIHRoZXJlIGNhbm5vdCBiZSBhbnkgc3RhbGUgZW50cmllcyBhbHJlYWR5IGNvbnRhaW5p bmcgdGhlIGNoYW5nZWQKLSsgICAgIHZhbHVlLiAgKi8KLSsgIHR5cGVfZGlzY2FyZGFibGVfYWdl X2N1cnJlbnQgXj0gMTsKLSsKLSsgIG9ic2VydmVyX25vdGlmeV9tYXJrX3VzZWQgKCk7CisgZGVs ZXRlX2xvbmdqbXBfYnJlYWtwb2ludF9jbGVhbnVwICh2b2lkICphcmcpCisgeworICAgaW50IHRo cmVhZCA9ICogKGludCAqKSBhcmc7CitAQCAtODYyLDEwICs4NjIsMTMgQEAgc3RlcF8xIChpbnQg c2tpcF9zdWJyb3V0aW5lcywgaW50IHNpbmdsZV9pbnN0LCBjaGFyICpjb3VudF9zdHJpbmcpCisg CisgICBpZiAoIXNpbmdsZV9pbnN0IHx8IHNraXBfc3Vicm91dGluZXMpCQkvKiBsZWF2ZSBzaSBj b21tYW5kIGFsb25lICovCisgICAgIHsKKysgICAgICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwID0g aW5mZXJpb3JfdGhyZWFkICgpOwogKwotKyAgaHRhYl90cmF2ZXJzZSAodHlwZV9kaXNjYXJkYWJs ZV90YWJsZSwgdHlwZV9kaXNjYXJkYWJsZV9yZW1vdmUsIE5VTEwpOwotK30KKyAgICAgICBpZiAo aW5fdGhyZWFkX2xpc3QgKGluZmVyaW9yX3B0aWQpKQorICAJdGhyZWFkID0gcGlkX3RvX3RocmVh ZF9pZCAoaW5mZXJpb3JfcHRpZCk7CiAgCi0gLyogSGVscGVyIGZ1bmN0aW9ucyB0byBpbml0aWFs aXplIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0eXBlcy4gICovCisgICAgICAgc2V0X2xvbmdqbXBf YnJlYWtwb2ludCAodGhyZWFkKTsKKysgICAgICB0cC0+aW5pdGlhdGluZ19mcmFtZSA9IGdldF9m cmFtZV9pZCAoZ2V0X2N1cnJlbnRfZnJhbWUgKCkpOwogIAotQEAgLTM1MTEsNiArNDA2Niw4IEBA IGdkYnR5cGVzX3Bvc3RfaW5pdCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0gICAgID0gbG9v a3VwX3BvaW50ZXJfdHlwZSAoYnVpbHRpbl90eXBlLT5idWlsdGluX3ZvaWQpOwotICAgYnVpbHRp bl90eXBlLT5idWlsdGluX2Z1bmNfcHRyCi0gICAgID0gbG9va3VwX3BvaW50ZXJfdHlwZSAobG9v a3VwX2Z1bmN0aW9uX3R5cGUgKGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl92b2lkKSk7Ci0rICBidWls dGluX3R5cGUtPmJ1aWx0aW5fZnVuY19mdW5jCi0rICAgID0gbG9va3VwX2Z1bmN0aW9uX3R5cGUg KGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl9mdW5jX3B0cik7CisgICAgICAgbWFrZV9jbGVhbnVwIChk ZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAsICZ0aHJlYWQpOworICAgICB9CitAQCAt MTIxOSw2ICsxMjIyLDE1IEBAIHNpZ25hbF9jb21tYW5kIChjaGFyICpzaWdudW1fZXhwLCBpbnQg ZnJvbV90dHkpCisgICBwcm9jZWVkICgoQ09SRV9BRERSKSAtMSwgb3Vyc2lnLCAwKTsKKyB9CiAg Ci0gICAvKiBUaGlzIHR5cGUgcmVwcmVzZW50cyBhIEdEQiBpbnRlcm5hbCBmdW5jdGlvbi4gICov Ci0gICBidWlsdGluX3R5cGUtPmludGVybmFsX2ZuCi1AQCAtMzYyNCw2ICs0MTgxLDE4IEBAIG9i amZpbGVfdHlwZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gCQkgIjx0ZXh0IHZhcmlhYmxl LCBubyBkZWJ1ZyBpbmZvPiIsIG9iamZpbGUpOwotICAgVFlQRV9UQVJHRVRfVFlQRSAob2JqZmls ZV90eXBlLT5ub2RlYnVnX3RleHRfc3ltYm9sKQotICAgICA9IG9iamZpbGVfdHlwZS0+YnVpbHRp bl9pbnQ7Ci0rICBvYmpmaWxlX3R5cGUtPm5vZGVidWdfdGV4dF9nbnVfaWZ1bmNfc3ltYm9sCi0r ICAgID0gaW5pdF90eXBlIChUWVBFX0NPREVfRlVOQywgMSwgVFlQRV9GTEFHX0dOVV9JRlVOQywK LSsJCSAiPHRleHQgZ251LWluZGlyZWN0LWZ1bmN0aW9uIHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZv PiIsCi0rCQkgb2JqZmlsZSk7Ci0rICBUWVBFX1RBUkdFVF9UWVBFIChvYmpmaWxlX3R5cGUtPm5v ZGVidWdfdGV4dF9nbnVfaWZ1bmNfc3ltYm9sKQotKyAgICA9IG9iamZpbGVfdHlwZS0+bm9kZWJ1 Z190ZXh0X3N5bWJvbDsKLSsgIG9iamZpbGVfdHlwZS0+bm9kZWJ1Z19nb3RfcGx0X3N5bWJvbAot KyAgICA9IGluaXRfdHlwZSAoVFlQRV9DT0RFX1BUUiwgZ2RiYXJjaF9hZGRyX2JpdCAoZ2RiYXJj aCkgLyA4LCAwLAotKwkJICI8dGV4dCBmcm9tIGp1bXAgc2xvdCBpbiAuZ290LnBsdCwgbm8gZGVi dWcgaW5mbz4iLAotKwkJIG9iamZpbGUpOwotKyAgVFlQRV9UQVJHRVRfVFlQRSAob2JqZmlsZV90 eXBlLT5ub2RlYnVnX2dvdF9wbHRfc3ltYm9sKQotKyAgICA9IG9iamZpbGVfdHlwZS0+bm9kZWJ1 Z190ZXh0X3N5bWJvbDsKLSAgIG9iamZpbGVfdHlwZS0+bm9kZWJ1Z19kYXRhX3N5bWJvbAotICAg ICA9IGluaXRfdHlwZSAoVFlQRV9DT0RFX0lOVCwKLSAJCSBnZGJhcmNoX2ludF9iaXQgKGdkYmFy Y2gpIC8gSE9TVF9DSEFSX0JJVCwgMCwKLUBAIC0zNjc4LDYgKzQyNDcsMTEgQEAgdm9pZAotIF9p bml0aWFsaXplX2dkYnR5cGVzICh2b2lkKQotIHsKLSAgIGdkYnR5cGVzX2RhdGEgPSBnZGJhcmNo X2RhdGFfcmVnaXN0ZXJfcG9zdF9pbml0IChnZGJ0eXBlc19wb3N0X2luaXQpOwotKwotKyAgdHlw ZV9kaXNjYXJkYWJsZV90YWJsZSA9IGh0YWJfY3JlYXRlX2FsbG9jICgyMCwgdHlwZV9kaXNjYXJk YWJsZV9oYXNoLAotKwkJCQkJICAgICB0eXBlX2Rpc2NhcmRhYmxlX2VxdWFsLCBOVUxMLAotKwkJ CQkJICAgICB4Y2FsbG9jLCB4ZnJlZSk7CisrLyogQSBjb250aW51YXRpb24gY2FsbGJhY2sgZm9y IHVudGlsX25leHRfY29tbWFuZC4gICovCiArCi0gICBvYmpmaWxlX3R5cGVfZGF0YSA9IHJlZ2lz dGVyX29iamZpbGVfZGF0YSAoKTsKLSAKLSAgIGFkZF9zZXRzaG93X3ppbnRlZ2VyX2NtZCAoIm92 ZXJsb2FkIiwgbm9fY2xhc3MsICZvdmVybG9hZF9kZWJ1ZywgXygiXAotZGlmZiAtLWdpdCBhL2dk Yi9nZGJ0eXBlcy5oIGIvZ2RiL2dkYnR5cGVzLmgKLWluZGV4IDA4NTI3MGUuLmNiMmI4OGUgMTAw NjQ0Ci0tLS0gYS9nZGIvZ2RidHlwZXMuaAotKysrIGIvZ2RiL2dkYnR5cGVzLmgKLUBAIC0xNzEs NiArMTcxLDcgQEAgZW51bSB0eXBlX2ZsYWdfdmFsdWUKLSAgIFRZUEVfRkxBR19GSVhFRF9JTlNU QU5DRSA9ICgxIDw8IDE1KSwKLSAgIFRZUEVfRkxBR19TVFVCX1NVUFBPUlRFRCA9ICgxIDw8IDE2 KSwKLSAgIFRZUEVfRkxBR19OT1RURVhUID0gKDEgPDwgMTcpLAotKyAgVFlQRV9GTEFHX0dOVV9J RlVOQyA9ICgxIDw8IDE4KSwKKytzdGF0aWMgdm9pZAorK3VudGlsX25leHRfY29udGludWF0aW9u ICh2b2lkICphcmcpCisreworKyAgc3RydWN0IHRocmVhZF9pbmZvICp0cCA9IGFyZzsKKysgIGRl bGV0ZV9sb25nam1wX2JyZWFrcG9pbnQgKHRwLT5udW0pOworK30KKysKKyAvKiBQcm9jZWVkIHVu dGlsIHdlIHJlYWNoIGEgZGlmZmVyZW50IHNvdXJjZSBsaW5lIHdpdGggcGMgZ3JlYXRlciB0aGFu CisgICAgb3VyIGN1cnJlbnQgb25lIG9yIGV4aXQgdGhlIGZ1bmN0aW9uLiAgV2Ugc2tpcCBjYWxs cyBpbiBib3RoIGNhc2VzLgogIAotICAgLyogVXNlZCBmb3IgZXJyb3ItY2hlY2tpbmcuICAqLwot ICAgVFlQRV9GTEFHX01JTiA9IFRZUEVfRkxBR19VTlNJR05FRAotQEAgLTIxNCw2ICsyMTUsMTEg QEAgZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdfdmFsdWUKK0BAIC0xMjM1LDYgKzEyNDcsOCBAQCB1 bnRpbF9uZXh0X2NvbW1hbmQgKGludCBmcm9tX3R0eSkKKyAgIHN0cnVjdCBzeW1ib2wgKmZ1bmM7 CisgICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbDsKKyAgIHN0cnVjdCB0aHJlYWRfaW5mbyAq dHAgPSBpbmZlcmlvcl90aHJlYWQgKCk7CisrICBpbnQgdGhyZWFkID0gdHAtPm51bTsKKysgIHN0 cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47CiAgCi0gI2RlZmluZSBUWVBFX1RBUkdFVF9TVFVCKHQp CShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfdGFyZ2V0X3N0dWIpCisgICBjbGVhcl9wcm9jZWVk X3N0YXR1cyAoKTsKKyAgIHNldF9zdGVwX2ZyYW1lICgpOworQEAgLTEyNzAsNyArMTI4NCwxOSBA QCB1bnRpbF9uZXh0X2NvbW1hbmQgKGludCBmcm9tX3R0eSkKICAKLSsvKiBUeXBlIG5lZWRzIHRv IGJlIGV2YWx1YXRlZCBvbiBlYWNoIENIRUNLX1RZUEVERUYgYW5kIGl0cyByZXN1bHRzIG11c3Qg bm90IGJlCi0rICAgc3RpY2t5LiAgKi8KKyAgIHRwLT5zdGVwX211bHRpID0gMDsJCS8qIE9ubHkg b25lIGNhbGwgdG8gcHJvY2VlZCAqLworIAorKyAgc2V0X2xvbmdqbXBfYnJlYWtwb2ludCAodGhy ZWFkKTsKKysgIHRwLT5pbml0aWF0aW5nX2ZyYW1lID0gZ2V0X2ZyYW1lX2lkIChmcmFtZSk7Cisr ICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnRfY2xl YW51cCwgJnRocmVhZCk7CiArCi0rI2RlZmluZSBUWVBFX0RZTkFNSUModCkJCShUWVBFX01BSU5f VFlQRSAodCktPmZsYWdfZHluYW1pYykKKyAgIHByb2NlZWQgKChDT1JFX0FERFIpIC0xLCBUQVJH RVRfU0lHTkFMX0RFRkFVTFQsIDEpOwogKwotIC8qIFN0YXRpYyB0eXBlLiAgSWYgdGhpcyBpcyBz ZXQsIHRoZSBjb3JyZXNwb25kaW5nIHR5cGUgaGFkIAotICAqIGEgc3RhdGljIG1vZGlmaWVyLgot ICAqIE5vdGU6IFRoaXMgbWF5IGJlIHVubmVjZXNzYXJ5LCBzaW5jZSBzdGF0aWMgZGF0YSBtZW1i ZXJzCi1AQCAtMjcxLDYgKzI3NywxMiBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1ZQor KyAgaWYgKHRhcmdldF9jYW5fYXN5bmNfcCAoKSAmJiBpc19ydW5uaW5nIChpbmZlcmlvcl9wdGlk KSkKKysgICAgeworKyAgICAgIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jaGFpbik7CisrICAgICAg YWRkX2NvbnRpbnVhdGlvbiAodHAsIHVudGlsX25leHRfY29udGludWF0aW9uLCB0cCwgTlVMTCk7 CisrICAgIH0KKysgIGVsc2UKKysgICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CisgfQogIAot ICNkZWZpbmUgVFlQRV9OT1RURVhUKHQpCQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX25vdHRl eHQpCisgc3RhdGljIHZvaWQKK0BAIC0xNDYzLDYgKzE0ODksNyBAQCBmaW5pc2hfY29tbWFuZF9j b250aW51YXRpb24gKHZvaWQgKmFyZykKKyAgIGlmIChicyAhPSBOVUxMICYmIHRwLT5wcm9jZWVk X3RvX2ZpbmlzaCkKKyAgICAgb2JzZXJ2ZXJfbm90aWZ5X25vcm1hbF9zdG9wIChicywgMSAvKiBw cmludCBmcmFtZSAqLyk7CisgICBkZWxldGVfYnJlYWtwb2ludCAoYS0+YnJlYWtwb2ludCk7Cisr ICBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50IChpbmZlcmlvcl90aHJlYWQgKCktPm51bSk7Cisg fQogIAotKy8qIFVzZWQgb25seSBmb3IgVFlQRV9DT0RFX0ZVTkMgd2hlcmUgaXQgc3BlY2lmaWVz IHRoZSByZWFsIGZ1bmN0aW9uCi0rICAgYWRkcmVzcyBpcyByZXR1cm5lZCBieSB0aGlzIGZ1bmN0 aW9uIGNhbGwuICBUWVBFX1RBUkdFVF9UWVBFIGRldGVybWluZXMgdGhlCi0rICAgZmluYWwgcmV0 dXJuZWQgZnVuY3Rpb24gdHlwZSB0byBiZSBwcmVzZW50ZWQgdG8gdXNlci4gICovCi0rCi0rI2Rl ZmluZSBUWVBFX0dOVV9JRlVOQyh0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2dudV9pZnVu YykKLSsKLSAvKiBUeXBlIG93bmVyLiAgSWYgVFlQRV9PQkpGSUxFX09XTkVEIGlzIHRydWUsIHRo ZSB0eXBlIGlzIG93bmVkIGJ5Ci0gICAgdGhlIG9iamZpbGUgcmV0cmlldmVkIGFzIFRZUEVfT0JK RklMRS4gIE90aGVyd2Vpc2UsIHRoZSB0eXBlIGlzCi0gICAgb3duZWQgYnkgYW4gYXJjaGl0ZWN0 dXJlOyBUWVBFX09CSkZJTEUgaXMgTlVMTCBpbiB0aGlzIGNhc2UuICAqLwotQEAgLTI4NSw2ICsy OTcsNDggQEAgZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdfdmFsdWUKKyBzdGF0aWMgdm9pZAorQEAg LTE1NDYsNiArMTU3Myw3IEBAIGZpbmlzaF9mb3J3YXJkIChzdHJ1Y3Qgc3ltYm9sICpmdW5jdGlv biwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorICAgc3RydWN0IGJyZWFrcG9pbnQgKmJyZWFr cG9pbnQ7CisgICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluOworICAgc3RydWN0IGZpbmlzaF9j b21tYW5kX2NvbnRpbnVhdGlvbl9hcmdzICpjYXJnczsKKysgIGludCB0aHJlYWQgPSB0cC0+bnVt OwogIAotICNkZWZpbmUgVFlQRV9ERUNMQVJFRF9DTEFTUyh0KSAoVFlQRV9NQUlOX1RZUEUgKHQp LT5mbGFnX2RlY2xhcmVkX2NsYXNzKQorICAgc2FsID0gZmluZF9wY19saW5lIChnZXRfZnJhbWVf cGMgKGZyYW1lKSwgMCk7CisgICBzYWwucGMgPSBnZXRfZnJhbWVfcGMgKGZyYW1lKTsKK0BAIC0x NTU2LDYgKzE1ODQsMTAgQEAgZmluaXNoX2ZvcndhcmQgKHN0cnVjdCBzeW1ib2wgKmZ1bmN0aW9u LCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCiAgCi0rLyogRGVmaW5lIHRoaXMgdHlwZSBhcyBi ZWluZyByZWNsYWltYWJsZSBkdXJpbmcgZnJlZV9hbGxfdHlwZXMuICBUeXBlIGlzCi0rICAgcmVx dWlyZWQgdG8gYmUgaGF2ZSBUWVBFX09CSkZJTEUgc2V0IHRvIE5VTEwuICBTZXR0aW5nIHRoaXMg ZmxhZyByZXF1aXJlcwotKyAgIGluaXRpYWxpemluZyBUWVBFX0RJU0NBUkRBQkxFX0FHRSwgc2Vl IGFsbG9jX3R5cGVfZGlzY2FyZGFibGUuICAqLwotKwotKyNkZWZpbmUgVFlQRV9ESVNDQVJEQUJM RSh0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2Rpc2NhcmRhYmxlKQotKwotKy8qIE1hcmtl ciB0aGlzIHR5cGUgaGFzIGJlZW4gdmlzaXRlZCBieSB0aGUgdHlwZV9tYXJrX3VzZWQgYnkgdGhp cwotKyAgIG1hcmstYW5kLXN3ZWVwIHR5cGVzIGdhcmJhZ2UgY29sbGVjdGluZyBwYXNzLiAgQ3Vy cmVudCBwYXNzIGlzIHJlcHJlc2VudGVkCi0rICAgYnkgVFlQRV9ESVNDQVJEQUJMRV9BR0VfQ1VS UkVOVC4gICovCi0rCi0rI2RlZmluZSBUWVBFX0RJU0NBUkRBQkxFX0FHRSh0KQkoVFlQRV9NQUlO X1RZUEUgKHQpLT5mbGFnX2Rpc2NhcmRhYmxlX2FnZSkKLSsKLSsvKiBJcyBISUdIX0JPVU5EIGEg bG93LWJvdW5kIHJlbGF0aXZlIGNvdW50ICgxKSBvciB0aGUgaGlnaCBib3VuZCBpdHNlbGYgKDAp PyAgKi8KLSsKLSsjZGVmaW5lIFRZUEVfUkFOR0VfSElHSF9CT1VORF9JU19DT1VOVChyYW5nZV90 eXBlKSBcCi0rICAoVFlQRV9NQUlOX1RZUEUgKHJhbmdlX3R5cGUpLT5mbGFnX3JhbmdlX2hpZ2hf Ym91bmRfaXNfY291bnQpCi0rCi0rLyogTm90IGFsbG9jYXRlZC4gIFRZUEVfQUxMT0NBVEVEKHQp IG11c3QgYmUgTlVMTCBpbiBzdWNoIGNhc2UuICBJZiB0aGlzIGZsYWcKLSsgICBpcyB1bnNldCBh bmQgVFlQRV9BTExPQ0FURUQodCkgaXMgTlVMTCB0aGVuIHRoZSB0eXBlIGlzIGFsbG9jYXRlZC4g IElmIHRoaXMKLSsgICBmbGFnIGlzIHVuc2V0IGFuZCBUWVBFX0FMTE9DQVRFRCh0KSBpcyBub3Qg TlVMTCB0aGVuIGl0cyBEV0FSRiBibG9jawotKyAgIGRldGVybWluZXMgdGhlIGFjdHVhbCBhbGxv Y2F0aW9uIHN0YXRlLiAgKi8KLSsKLSsjZGVmaW5lIFRZUEVfTk9UX0FMTE9DQVRFRCh0KQkoVFlQ RV9NQUlOX1RZUEUgKHQpLT5mbGFnX25vdF9hbGxvY2F0ZWQpCi0rCi0rLyogTm90IGFzc29jaWF0 ZWQuICBUWVBFX0FTU09DSUFURUQodCkgbXVzdCBiZSBOVUxMIGluIHN1Y2ggY2FzZS4gIElmIHRo aXMgZmxhZwotKyAgIGlzIHVuc2V0IGFuZCBUWVBFX0FTU09DSUFURUQodCkgaXMgTlVMTCB0aGVu IHRoZSB0eXBlIGlzIGFzc29jaWF0ZWQuICBJZgotKyAgIHRoaXMgZmxhZyBpcyB1bnNldCBhbmQg VFlQRV9BU1NPQ0lBVEVEKHQpIGlzIG5vdCBOVUxMIHRoZW4gaXRzIERXQVJGIGJsb2NrCi0rICAg ZGV0ZXJtaW5lcyB0aGUgYWN0dWFsIGFzc29jaWF0aW9uIHN0YXRlLiAgKi8KLSsKLSsjZGVmaW5l IFRZUEVfTk9UX0FTU09DSUFURUQodCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19ub3RfYXNz b2NpYXRlZCkKLSsKLSsvKiBBZGRyZXNzIG9mIHRoZSBhY3R1YWwgZGF0YSBhcyBmb3IgRFdfQVRf ZGF0YV9sb2NhdGlvbi4gIEl0cyBkd2FyZiBibG9jayBtdXN0Ci0rICAgbm90IGJlIGV2YWx1YXRl ZCB1bmxlc3MgYm90aCBUWVBFX05PVF9BTExPQ0FURUQgYW5kIFRZUEVfTk9UX0FTU09DSUFURUQg YXJlCi0rICAgZmFsc2UuICBJZiBUWVBFX0RBVEFfTE9DQVRJT05fSVNfQUREUiBzZXQgdGhlbiBU WVBFX0RBVEFfTE9DQVRJT05fQUREUiB2YWx1ZQotKyAgIGlzIHRoZSBhY3R1YWwgZGF0YSBhZGRy ZXNzIHZhbHVlLiAgSWYgdW5zZXQgYW5kCi0rICAgVFlQRV9EQVRBX0xPQ0FUSU9OX0RXQVJGX0JM T0NLIGlzIE5VTEwgdGhlbiB0aGUgdmFsdWUgaXMgdGhlIG5vcm1hbAotKyAgIHZhbHVlX3Jhd19h ZGRyZXNzLiAgSWYgdW5zZXQgYW5kIFRZUEVfREFUQV9MT0NBVElPTl9EV0FSRl9CTE9DSyBpcyBu b3QgTlVMTAotKyAgIHRoZW4gaXRzIERXQVJGIGJsb2NrIGRldGVybWluZXMgdGhlIGFjdHVhbCBk YXRhIGFkZHJlc3MuICAqLwotKwotKyNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OX0lTX0FERFIo dCkgXAotKyAgKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19kYXRhX2xvY2F0aW9uX2lzX2FkZHIp CisgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfZGVsZXRlX2JyZWFrcG9pbnQgKGJyZWFrcG9p bnQpOworIAorKyAgc2V0X2xvbmdqbXBfYnJlYWtwb2ludCAodGhyZWFkKTsKKysgIHRwLT5pbml0 aWF0aW5nX2ZyYW1lID0gZ2V0X2ZyYW1lX2lkIChmcmFtZSk7CisrICBtYWtlX2NsZWFudXAgKGRl bGV0ZV9sb25nam1wX2JyZWFrcG9pbnRfY2xlYW51cCwgJnRocmVhZCk7CiArCi0gLyogQ29uc3Rh bnQgdHlwZS4gIElmIHRoaXMgaXMgc2V0LCB0aGUgY29ycmVzcG9uZGluZyB0eXBlIGhhcyBhCi0g ICogY29uc3QgbW9kaWZpZXIuCi0gICovCi1AQCAtMzg5LDExICs0NDMsMTkgQEAgc3RydWN0IG1h aW5fdHlwZQotICAgdW5zaWduZWQgaW50IGZsYWdfdmVjdG9yIDogMTsKLSAgIHVuc2lnbmVkIGlu dCBmbGFnX3N0dWJfc3VwcG9ydGVkIDogMTsKLSAgIHVuc2lnbmVkIGludCBmbGFnX25vdHRleHQg OiAxOwotKyAgdW5zaWduZWQgaW50IGZsYWdfZ251X2lmdW5jIDogMTsKLSAgIHVuc2lnbmVkIGlu dCBmbGFnX2ZpeGVkX2luc3RhbmNlIDogMTsKLSAgIHVuc2lnbmVkIGludCBmbGFnX29iamZpbGVf b3duZWQgOiAxOwotICAgLyogVHJ1ZSBpZiB0aGlzIHR5cGUgd2FzIGRlY2xhcmVkIHdpdGggImNs YXNzIiByYXRoZXIgdGhhbgotICAgICAgInN0cnVjdCIuICAqLwotICAgdW5zaWduZWQgaW50IGZs YWdfZGVjbGFyZWRfY2xhc3MgOiAxOwotKyAgdW5zaWduZWQgaW50IGZsYWdfZGlzY2FyZGFibGUg OiAxOwotKyAgdW5zaWduZWQgaW50IGZsYWdfZGlzY2FyZGFibGVfYWdlIDogMTsKLSsgIHVuc2ln bmVkIGludCBmbGFnX2R5bmFtaWMgOiAxOwotKyAgdW5zaWduZWQgaW50IGZsYWdfcmFuZ2VfaGln aF9ib3VuZF9pc19jb3VudCA6IDE7Ci0rICB1bnNpZ25lZCBpbnQgZmxhZ19ub3RfYWxsb2NhdGVk IDogMTsKLSsgIHVuc2lnbmVkIGludCBmbGFnX25vdF9hc3NvY2lhdGVkIDogMTsKLSsgIHVuc2ln bmVkIGludCBmbGFnX2RhdGFfbG9jYXRpb25faXNfYWRkciA6IDE7CisgICB0cC0+cHJvY2VlZF90 b19maW5pc2ggPSAxOyAgICAvKiBXZSB3YW50IHN0b3BfcmVnaXN0ZXJzLCBwbGVhc2UuLi4gICov CisgICBjYXJncyA9IHhtYWxsb2MgKHNpemVvZiAoKmNhcmdzKSk7CiAgCi0gICAvKiBBIGRpc2Ny aW1pbmFudCB0ZWxsaW5nIHVzIHdoaWNoIGZpZWxkIG9mIHRoZSB0eXBlX3NwZWNpZmljIHVuaW9u Ci0gICAgICBpcyBiZWluZyB1c2VkIGZvciB0aGlzIHR5cGUsIGlmIGFueS4gICovCi1AQCAtNDY3 LDYgKzUyOSwyMCBAQCBzdHJ1Y3QgbWFpbl90eXBlCitkaWZmIC0tZ2l0IGEvZ2RiL2luZmVyaW9y LmggYi9nZGIvaW5mZXJpb3IuaAoraW5kZXggNWFiZWM2OC4uZTMwOTI3NyAxMDA2NDQKKy0tLSBh L2dkYi9pbmZlcmlvci5oCisrKysgYi9nZGIvaW5mZXJpb3IuaAorQEAgLTI5MSw2ICsyOTEsOCBA QCBleHRlcm4gdm9pZCBpbnRlcnJ1cHRfdGFyZ2V0X2NvbW1hbmQgKGNoYXIgKmFyZ3MsIGludCBm cm9tX3R0eSk7CiAgCi0gICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGU7CisgZXh0ZXJuIHZvaWQg aW50ZXJydXB0X3RhcmdldF8xIChpbnQgYWxsX3RocmVhZHMpOwogIAotKyAgLyogRm9yIERXX0FU X2RhdGFfbG9jYXRpb24uICAqLwotKyAgdW5pb24KLSsgICAgewotKyAgICAgIHN0cnVjdCBkd2Fy ZjJfbG9jZXhwcl9iYXRvbiAqZHdhcmZfYmxvY2s7Ci0rICAgICAgQ09SRV9BRERSIGFkZHI7Ci0r ICAgIH0KLSsgIGRhdGFfbG9jYXRpb247Ci0rCi0rICAvKiBGb3IgRFdfQVRfYWxsb2NhdGVkLiAg Ki8KLSsgIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqYWxsb2NhdGVkOwotKwotKyAgLyog Rm9yIERXX0FUX2Fzc29jaWF0ZWQuICAqLwotKyAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9u ICphc3NvY2lhdGVkOworK2V4dGVybiB2b2lkIGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnRfY2xl YW51cCAodm9pZCAqYXJnKTsKICsKLSAgIC8qIEZvciBzdHJ1Y3R1cmUgYW5kIHVuaW9uIHR5cGVz LCBhIGRlc2NyaXB0aW9uIG9mIGVhY2ggZmllbGQuCi0gICAgICBGb3Igc2V0IGFuZCBwYXNjYWwg YXJyYXkgdHlwZXMsIHRoZXJlIGlzIG9uZSAiZmllbGQiLAotICAgICAgd2hvc2UgdHlwZSBpcyB0 aGUgZG9tYWluIHR5cGUgb2YgdGhlIHNldCBvciBhcnJheS4KLUBAIC01NDAsMTMgKzYxNiwzNCBA QCBzdHJ1Y3QgbWFpbl90eXBlCisgZXh0ZXJuIHZvaWQgZGV0YWNoX2NvbW1hbmQgKGNoYXIgKiwg aW50KTsKICAKLSAgICAgc3RydWN0IHJhbmdlX2JvdW5kcwotICAgICB7Ci0rICAgICAgc3RydWN0 Ci0rCXsKLSsJICB1bmlvbgotKwkgICAgewotKwkgICAgICBMT05HRVNUIGNvbnN0YW50OwotKwkg ICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmR3YXJmX2Jsb2NrOwotKwkgICAgICBz dHJ1Y3QKLSsJCXsKLSsJCSAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uICpsb2NsaXN0Owot KwkJICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLSsJCX0KLSsJICAgICAgZHdhcmZfbG9jbGlzdDsKLSsJ ICAgIH0KLSsJICB1OwotKwkgIGVudW0gcmFuZ2VfYm91bmRfa2luZAotKwkgICAgewotKwkgICAg ICBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5ULAotKwkgICAgICBSQU5HRV9CT1VORF9LSU5EX0RX QVJGX0JMT0NLLAotKwkgICAgICBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0xPQ0xJU1QKLSsJICAg IH0KLSsJICBraW5kOwotKwl9Ci0gICAgICAgLyogTG93IGJvdW5kIG9mIHJhbmdlLiAqLwotLQot LSAgICAgIExPTkdFU1QgbG93OwotLQotKyAgICAgIGxvdywKLSAgICAgICAvKiBIaWdoIGJvdW5k IG9mIHJhbmdlLiAqLwotLQotLSAgICAgIExPTkdFU1QgaGlnaDsKLSsgICAgICBoaWdoLAotKyAg ICAgIC8qIEJ5dGUgc3RyaWRlIG9mIHJhbmdlLiAqLwotKyAgICAgIGJ5dGVfc3RyaWRlOworIGV4 dGVybiB2b2lkIG5vdGljZV9uZXdfaW5mZXJpb3IgKHB0aWRfdCwgaW50LCBpbnQpOworZGlmZiAt LWdpdCBhL2dkYi9pbmZydW4uYyBiL2dkYi9pbmZydW4uYworaW5kZXggNTdmMmFiOC4uNTc2MmE3 ZiAxMDA2NDQKKy0tLSBhL2dkYi9pbmZydW4uYworKysrIGIvZ2RiL2luZnJ1bi5jCitAQCAtNDUs NiArNDUsOCBAQAorICNpbmNsdWRlICJsYW5ndWFnZS5oIgorICNpbmNsdWRlICJzb2xpYi5oIgor ICNpbmNsdWRlICJtYWluLmgiCisrI2luY2x1ZGUgImRpY3Rpb25hcnkuaCIKKysjaW5jbHVkZSAi YmxvY2suaCIKKyAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgorICNpbmNsdWRlICJtaS9taS1jb21t b24uaCIKKyAjaW5jbHVkZSAiZXZlbnQtdG9wLmgiCitAQCAtMzY3LDYgKzM2OSw3IEBAIGZvbGxv d19mb3JrICh2b2lkKQorICAgICAgcGFyZW50IHRocmVhZCBzdHJ1Y3R1cmUncyBydW4gY29udHJv bCByZWxhdGVkIGZpZWxkcywgbm90IGp1c3QgdGhlc2UuCisgICAgICBJbml0aWFsaXplZCB0byBh dm9pZCAibWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCIgd2FybmluZ3MgZnJvbSBnY2MuICAqLwor ICAgc3RydWN0IGJyZWFrcG9pbnQgKnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgPSBOVUxMOworKyAg c3RydWN0IGJyZWFrcG9pbnQgKmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCA9IE5VTEw7Cisg ICBDT1JFX0FERFIgc3RlcF9yYW5nZV9zdGFydCA9IDA7CisgICBDT1JFX0FERFIgc3RlcF9yYW5n ZV9lbmQgPSAwOworICAgc3RydWN0IGZyYW1lX2lkIHN0ZXBfZnJhbWVfaWQgPSB7IDAgfTsKK0BA IC00MTksNiArNDIyLDggQEAgZm9sbG93X2ZvcmsgKHZvaWQpCisgCSAgICBzdGVwX3JhbmdlX3N0 YXJ0ID0gdHAtPnN0ZXBfcmFuZ2Vfc3RhcnQ7CisgCSAgICBzdGVwX3JhbmdlX2VuZCA9IHRwLT5z dGVwX3JhbmdlX2VuZDsKKyAJICAgIHN0ZXBfZnJhbWVfaWQgPSB0cC0+c3RlcF9mcmFtZV9pZDsK KysJICAgIGV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludAorKwkgICAgICA9IGNsb25lX21vbWVu dGFyeV9icmVha3BvaW50ICh0cC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50KTsKICAKLSAg ICAgICAvKiBGbGFncyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHZhbHVlcyBvZiBsb3cgYW5kIGhp Z2ggYXJlCi0gICAgICAgICAgdmFsaWQuICBXaGVuIHRydWUsIHRoZSByZXNwZWN0aXZlIHJhbmdl IHZhbHVlIGlzCi1AQCAtODg5LDkgKzk4Niw5IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRf YXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOwotICNkZWZpbmUgVFlQRV9QT0lOVEVSX1RZUEUodGhp c3R5cGUpICh0aGlzdHlwZSktPnBvaW50ZXJfdHlwZQotICNkZWZpbmUgVFlQRV9SRUZFUkVOQ0Vf VFlQRSh0aGlzdHlwZSkgKHRoaXN0eXBlKS0+cmVmZXJlbmNlX3R5cGUKLSAjZGVmaW5lIFRZUEVf Q0hBSU4odGhpc3R5cGUpICh0aGlzdHlwZSktPmNoYWluCi0tLyogTm90ZSB0aGF0IGlmIHRoaXN0 eXBlIGlzIGEgVFlQRURFRiB0eXBlLCB5b3UgaGF2ZSB0byBjYWxsIGNoZWNrX3R5cGVkZWYuCi0t ICAgQnV0IGNoZWNrX3R5cGVkZWYgZG9lcyBzZXQgdGhlIFRZUEVfTEVOR1RIIG9mIHRoZSBUWVBF REVGIHR5cGUsCi0tICAgc28geW91IG9ubHkgaGF2ZSB0byBjYWxsIGNoZWNrX3R5cGVkZWYgb25j ZS4gIFNpbmNlIGFsbG9jYXRlX3ZhbHVlCi0rLyogTm90ZSB0aGF0IGlmIHRoaXN0eXBlIGlzIGEg VFlQRURFRiwgQVJSQVkgb3IgU1RSSU5HIHR5cGUsIHlvdSBoYXZlIHRvIGNhbGwKLSsgICBjaGVj a190eXBlZGVmLiAgQnV0IGNoZWNrX3R5cGVkZWYgZG9lcyBzZXQgdGhlIFRZUEVfTEVOR1RIIG9m IHRoZSBUWVBFREVGCi0rICAgdHlwZSwgc28geW91IG9ubHkgaGF2ZSB0byBjYWxsIGNoZWNrX3R5 cGVkZWYgb25jZS4gIFNpbmNlIGFsbG9jYXRlX3ZhbHVlCi0gICAgY2FsbHMgY2hlY2tfdHlwZWRl ZiwgVFlQRV9MRU5HVEggKFZBTFVFX1RZUEUgKFgpKSBpcyBzYWZlLiAgKi8KLSAjZGVmaW5lIFRZ UEVfTEVOR1RIKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5sZW5ndGgKLSAvKiBOb3RlIHRoYXQgVFlQ RV9DT0RFIGNhbiBiZSBUWVBFX0NPREVfVFlQRURFRiwgc28gaWYgeW91IHdhbnQgdGhlIHJlYWwK LUBAIC04OTksMTEgKzk5NiwxNiBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBl IChzdHJ1Y3QgdHlwZSAqKTsKLSAjZGVmaW5lIFRZUEVfQ09ERSh0aGlzdHlwZSkgVFlQRV9NQUlO X1RZUEUodGhpc3R5cGUpLT5jb2RlCi0gI2RlZmluZSBUWVBFX05GSUVMRFModGhpc3R5cGUpIFRZ UEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+bmZpZWxkcwotICNkZWZpbmUgVFlQRV9GSUVMRFModGhp c3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+Zmxkc19ibmRzLmZpZWxkcwotKyNkZWZp bmUgVFlQRV9EQVRBX0xPQ0FUSU9OX0RXQVJGX0JMT0NLKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQ RSAodGhpc3R5cGUpLT5kYXRhX2xvY2F0aW9uLmR3YXJmX2Jsb2NrCi0rI2RlZmluZSBUWVBFX0RB VEFfTE9DQVRJT05fQUREUih0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUgKHRoaXN0eXBlKS0+ZGF0 YV9sb2NhdGlvbi5hZGRyCi0rI2RlZmluZSBUWVBFX0FMTE9DQVRFRCh0aGlzdHlwZSkgVFlQRV9N QUlOX1RZUEUgKHRoaXN0eXBlKS0+YWxsb2NhdGVkCi0rI2RlZmluZSBUWVBFX0FTU09DSUFURUQo dGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFICh0aGlzdHlwZSktPmFzc29jaWF0ZWQKKyAJICAgIC8q IEZvciBub3csIGRlbGV0ZSB0aGUgcGFyZW50J3Mgc3IgYnJlYWtwb2ludCwgb3RoZXJ3aXNlLAor IAkgICAgICAgcGFyZW50L2NoaWxkIHNyIGJyZWFrcG9pbnRzIGFyZSBjb25zaWRlcmVkIGR1cGxp Y2F0ZXMsCitAQCAtNDI5LDYgKzQzNCw3IEBAIGZvbGxvd19mb3JrICh2b2lkKQorIAkgICAgdHAt PnN0ZXBfcmFuZ2Vfc3RhcnQgPSAwOworIAkgICAgdHAtPnN0ZXBfcmFuZ2VfZW5kID0gMDsKKyAJ ICAgIHRwLT5zdGVwX2ZyYW1lX2lkID0gbnVsbF9mcmFtZV9pZDsKKysJICAgIGRlbGV0ZV9leGNl cHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgKHRwKTsKKyAJICB9CiAgCi0gI2RlZmluZSBUWVBFX0lO REVYX1RZUEUodHlwZSkgVFlQRV9GSUVMRF9UWVBFICh0eXBlLCAwKQotICNkZWZpbmUgVFlQRV9S QU5HRV9EQVRBKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPmZsZHNfYm5kcy5i b3VuZHMKLS0jZGVmaW5lIFRZUEVfTE9XX0JPVU5EKHJhbmdlX3R5cGUpIFRZUEVfUkFOR0VfREFU QShyYW5nZV90eXBlKS0+bG93Ci0tI2RlZmluZSBUWVBFX0hJR0hfQk9VTkQocmFuZ2VfdHlwZSkg VFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5oaWdoCi0rI2RlZmluZSBUWVBFX0xPV19CT1VO RChyYW5nZV90eXBlKSBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmxvdy51LmNvbnN0YW50 Ci0rI2RlZmluZSBUWVBFX0hJR0hfQk9VTkQocmFuZ2VfdHlwZSkgVFlQRV9SQU5HRV9EQVRBKHJh bmdlX3R5cGUpLT5oaWdoLnUuY29uc3RhbnQKLSsjZGVmaW5lIFRZUEVfQllURV9TVFJJREUocmFu Z2VfdHlwZSkgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS51LmNvbnN0 YW50Ci0gI2RlZmluZSBUWVBFX0xPV19CT1VORF9VTkRFRklORUQocmFuZ2VfdHlwZSkgXAotICAg IFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+bG93X3VuZGVmaW5lZAotICNkZWZpbmUgVFlQ RV9ISUdIX0JPVU5EX1VOREVGSU5FRChyYW5nZV90eXBlKSBcCi1AQCAtOTIwLDcgKzEwMjIsMTQg QEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7Ci0g ICAgKFRZUEVfSElHSF9CT1VORChUWVBFX0lOREVYX1RZUEUoKGFycmF5dHlwZSkpKSkKKyAJcGFy ZW50ID0gaW5mZXJpb3JfcHRpZDsKK0BAIC00NzAsNiArNDc2LDggQEAgZm9sbG93X2ZvcmsgKHZv aWQpCisgCQkgICAgdHAtPnN0ZXBfcmFuZ2Vfc3RhcnQgPSBzdGVwX3JhbmdlX3N0YXJ0OworIAkJ ICAgIHRwLT5zdGVwX3JhbmdlX2VuZCA9IHN0ZXBfcmFuZ2VfZW5kOworIAkJICAgIHRwLT5zdGVw X2ZyYW1lX2lkID0gc3RlcF9mcmFtZV9pZDsKKysJCSAgICB0cC0+ZXhjZXB0aW9uX3Jlc3VtZV9i cmVha3BvaW50CisrCQkgICAgICA9IGV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludDsKKyAJCSAg fQorIAkJZWxzZQorIAkJICB7CitAQCAtNTIzLDYgKzUzMSw5IEBAIGZvbGxvd19pbmZlcmlvcl9y ZXNldF9icmVha3BvaW50cyAodm9pZCkKKyAgIGlmICh0cC0+c3RlcF9yZXN1bWVfYnJlYWtwb2lu dCkKKyAgICAgYnJlYWtwb2ludF9yZV9zZXRfdGhyZWFkICh0cC0+c3RlcF9yZXN1bWVfYnJlYWtw b2ludCk7CiAgCi0gI2RlZmluZSBUWVBFX0FSUkFZX0xPV0VSX0JPVU5EX1ZBTFVFKGFycmF5dHlw ZSkgXAotLSAgIChUWVBFX0xPV19CT1VORChUWVBFX0lOREVYX1RZUEUoKGFycmF5dHlwZSkpKSkK LSsgIFRZUEVfTE9XX0JPVU5EIChUWVBFX0lOREVYX1RZUEUgKGFycmF5dHlwZSkpCisrICBpZiAo dHAtPmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCkKKysgICAgYnJlYWtwb2ludF9yZV9zZXRf dGhyZWFkICh0cC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50KTsKICsKLSsvKiBUWVBFX0JZ VEVfU1RSSURFIChUWVBFX0lOREVYX1RZUEUgKGFycmF5dHlwZSkpIHdpdGggYSBmYWxsYmFjayB0 byB0aGUKLSsgICBlbGVtZW50IHNpemUgaWYgbm8gc3BlY2lmaWMgc3RyaWRlIHZhbHVlIGlzIGtu b3duLiAgKi8KLSsjZGVmaW5lIFRZUEVfQVJSQVlfQllURV9TVFJJREVfVkFMVUUoYXJyYXl0eXBl KQkJXAotKyAgKFRZUEVfQllURV9TVFJJREUgKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXl0eXBlKSkg PT0gMAlcCi0rICAgPyBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXl0eXBlKSkJ CVwKLSsgICA6IFRZUEVfQllURV9TVFJJREUgKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXl0eXBlKSkp CisgICAvKiBSZWluc2VydCBhbGwgYnJlYWtwb2ludHMgaW4gdGhlIGNoaWxkLiAgVGhlIHVzZXIg bWF5IGhhdmUgc2V0CisgICAgICBicmVha3BvaW50cyBhZnRlciBjYXRjaGluZyB0aGUgZm9yaywg aW4gd2hpY2ggY2FzZSB0aG9zZQorICAgICAgd2VyZSBuZXZlciBzZXQgaW4gdGhlIGNoaWxkLCBi dXQgb25seSBpbiB0aGUgcGFyZW50LiAgVGhpcyBtYWtlcworQEAgLTc2MCw2ICs3NzEsNyBAQCBm b2xsb3dfZXhlYyAocHRpZF90IHBpZCwgY2hhciAqZXhlY2RfcGF0aG5hbWUpCisgICAvKiBJZiB0 aGVyZSB3YXMgb25lLCBpdCdzIGdvbmUgbm93LiAgV2UgY2Fubm90IHRydWx5IHN0ZXAtdG8tbmV4 dAorICAgICAgc3RhdGVtZW50IHRocm91Z2ggYW4gZXhlYygpLiAqLworICAgdGgtPnN0ZXBfcmVz dW1lX2JyZWFrcG9pbnQgPSBOVUxMOworKyAgdGgtPmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2lu dCA9IE5VTEw7CisgICB0aC0+c3RlcF9yYW5nZV9zdGFydCA9IDA7CisgICB0aC0+c3RlcF9yYW5n ZV9lbmQgPSAwOwogIAotIC8qIEMrKyAqLworQEAgLTIxOTAsNiArMjIwMiw4IEBAIHN0YXRpYyB2 b2lkIGluc2VydF9zdGVwX3Jlc3VtZV9icmVha3BvaW50X2F0X3NhbCAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gsCisgCQkJCQkJICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNyX3NhbCwKKyAJCQkJ CQkgIHN0cnVjdCBmcmFtZV9pZCBzcl9pZCk7Cisgc3RhdGljIHZvaWQgaW5zZXJ0X2xvbmdqbXBf cmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICosIENPUkVfQUREUik7Cisrc3RhdGlj IHZvaWQgY2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0 YXRlICosCisrCQkJCSAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqLCBzdHJ1Y3Qgc3ltYm9sICopOwog IAotQEAgLTExNDEsNiArMTI1MCwxMCBAQCBzdHJ1Y3QgYnVpbHRpbl90eXBlCi0gICAgICAoKikg KCkgY2FuIHNlcnZlciBhcyBhIGdlbmVyaWMgZnVuY3Rpb24gcG9pbnRlci4gICovCi0gICBzdHJ1 Y3QgdHlwZSAqYnVpbHRpbl9mdW5jX3B0cjsKKyBzdGF0aWMgdm9pZCBzdG9wX3N0ZXBwaW5nIChz dHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcyk7Cisgc3RhdGljIHZvaWQgcHJlcGFy ZV90b193YWl0IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcyk7CitAQCAtMjMx Myw2ICsyMzI3LDcgQEAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnRfY2FsbGJhY2sgKHN0 cnVjdCB0aHJlYWRfaW5mbyAqaW5mbywgdm9pZCAqZGF0YSkKKyAgICAgcmV0dXJuIDA7CiAgCi0r ICAvKiBgZnVuY3Rpb24gcmV0dXJuaW5nIHBvaW50ZXIgdG8gZnVuY3Rpb24gKHJldHVybmluZyB2 b2lkKScgdHlwZS4KLSsgICAgIFRoZSBmaW5hbCB2b2lkIHJldHVybiB0eXBlIGlzIG5vdCBzaWdu aWZpY2FudCBmb3IgaXQuICAqLwotKyAgc3RydWN0IHR5cGUgKmJ1aWx0aW5fZnVuY19mdW5jOwot KworICAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGluZm8pOworKyAgZGVsZXRlX2V4 Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCAoaW5mbyk7CisgICByZXR1cm4gMDsKKyB9CiAgCi0g ICAvKiBTcGVjaWFsLXB1cnBvc2UgdHlwZXMuICAqLworQEAgLTIzMzcsNiArMjM1Miw3IEBAIGRl bGV0ZV9zdGVwX3RocmVhZF9zdGVwX3Jlc3VtZV9icmVha3BvaW50ICh2b2lkKQorICAgICAgIHN0 cnVjdCB0aHJlYWRfaW5mbyAqdHAgPSBpbmZlcmlvcl90aHJlYWQgKCk7CiAgCi1AQCAtMTE4MSw2 ICsxMjk0LDggQEAgc3RydWN0IG9iamZpbGVfdHlwZQorICAgICAgIGRlbGV0ZV9zdGVwX3Jlc3Vt ZV9icmVha3BvaW50ICh0cCk7CisrICAgICAgZGVsZXRlX2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtw b2ludCAodHApOworICAgICB9CisgICBlbHNlCisgICAgIC8qIEluIGFsbC1zdG9wIG1vZGUsIGRl bGV0ZSBhbGwgc3RlcC1yZXN1bWUgYW5kIGxvbmdqbXAtcmVzdW1lCitAQCAtMzI0MSw2ICszMjU3 LDEwIEBAIGhhbmRsZV9pbmZlcmlvcl9ldmVudCAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0 YXRlICplY3MpCiAgCi0gICAvKiBUeXBlcyB1c2VkIGZvciBzeW1ib2xzIHdpdGggbm8gZGVidWcg aW5mb3JtYXRpb24uICAqLwotICAgc3RydWN0IHR5cGUgKm5vZGVidWdfdGV4dF9zeW1ib2w7Ci0r ICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z190ZXh0X2dudV9pZnVuY19zeW1ib2w7Ci0rICBzdHJ1Y3Qg dHlwZSAqbm9kZWJ1Z19nb3RfcGx0X3N5bWJvbDsKLSAgIHN0cnVjdCB0eXBlICpub2RlYnVnX2Rh dGFfc3ltYm9sOwotICAgc3RydWN0IHR5cGUgKm5vZGVidWdfdW5rbm93bl9zeW1ib2w7Ci0gICBz dHJ1Y3QgdHlwZSAqbm9kZWJ1Z190bHNfc3ltYm9sOwotQEAgLTEzMjgsNiArMTQ0MywxOCBAQCBl eHRlcm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9hcnJheV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1 Y3QgdHlwZSAqLAotIAkJCQkgICAgICAgc3RydWN0IHR5cGUgKik7Ci0gZXh0ZXJuIHN0cnVjdCB0 eXBlICpsb29rdXBfYXJyYXlfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKiwgaW50LCBpbnQpOwor ICAgICAgIHN0b3BfcGMgPSByZWdjYWNoZV9yZWFkX3BjIChnZXRfdGhyZWFkX3JlZ2NhY2hlIChl Y3MtPnB0aWQpKTsKICAKLStleHRlcm4gQ09SRV9BRERSIHR5cGVfcmFuZ2VfYW55X2ZpZWxkX2lu dGVybmFsIChzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSwKLSsJCQkJCQlpbnQgZmllbGRubyk7Ci0r Ci0rZXh0ZXJuIGludCB0eXBlX3JhbmdlX2hpZ2hfYm91bmRfaW50ZXJuYWwgKHN0cnVjdCB0eXBl ICpyYW5nZV90eXBlKTsKLSsKLStleHRlcm4gaW50IHR5cGVfcmFuZ2VfY291bnRfYm91bmRfaW50 ZXJuYWwgKHN0cnVjdCB0eXBlICpyYW5nZV90eXBlKTsKLSsKLStleHRlcm4gQ09SRV9BRERSIHR5 cGVfcmFuZ2VfYnl0ZV9zdHJpZGVfaW50ZXJuYWwgKHN0cnVjdCB0eXBlICpyYW5nZV90eXBlLAot KwkJCQkJCSAgc3RydWN0IHR5cGUgKmVsZW1lbnRfdHlwZSk7Ci0rCi0rZXh0ZXJuIHZvaWQgZmlu YWxpemVfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUpOworKyAgICAgIC8qIENsZWFyIFdBVENIUE9J TlRfVFJJR0dFUkVEIHZhbHVlcyBmcm9tIHByZXZpb3VzIHN0b3Agd2hpY2ggY291bGQKKysJIGNv bmZ1c2UgYnBzdGF0X3N0b3Bfc3RhdHVzIGFuZCBicHN0YXRfZXhwbGFpbnNfc2lnbmFsLiAgKi8K KysgICAgICB3YXRjaHBvaW50c190cmlnZ2VyZWQgKCZlY3MtPndzKTsKICsKLSBleHRlcm4gc3Ry dWN0IHR5cGUgKmNyZWF0ZV9zdHJpbmdfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUg KiwKLSAJCQkJCXN0cnVjdCB0eXBlICopOwotIGV4dGVybiBzdHJ1Y3QgdHlwZSAqbG9va3VwX3N0 cmluZ19yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBpbnQsIGludCk7Ci1AQCAtMTM3MCw2ICsx NDk3LDggQEAgZXh0ZXJuIGludCBpc19wdWJsaWNfYW5jZXN0b3IgKHN0cnVjdCB0eXBlICosIHN0 cnVjdCB0eXBlICopOworICAgICAgIGVjcy0+ZXZlbnRfdGhyZWFkLT5zdG9wX2Jwc3RhdAorIAk9 IGJwc3RhdF9zdG9wX3N0YXR1cyAoZ2V0X3JlZ2NhY2hlX2FzcGFjZSAoZ2V0X2N1cnJlbnRfcmVn Y2FjaGUgKCkpLAorIAkJCSAgICAgIHN0b3BfcGMsIGVjcy0+cHRpZCk7CitAQCAtMzMyOCw2ICsz MzQ4LDEwIEBAIGhhbmRsZV9pbmZlcmlvcl9ldmVudCAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9s X3N0YXRlICplY3MpCiAgCi0gZXh0ZXJuIGludCBpc191bmlxdWVfYW5jZXN0b3IgKHN0cnVjdCB0 eXBlICosIHN0cnVjdCB2YWx1ZSAqKTsKKyAgICAgICBzdG9wX3BjID0gcmVnY2FjaGVfcmVhZF9w YyAoZ2V0X3RocmVhZF9yZWdjYWNoZSAoZWNzLT5wdGlkKSk7CiAgCi0rZXh0ZXJuIHZvaWQgdHlw ZV9tYXJrX3VzZWQgKHN0cnVjdCB0eXBlICp0eXBlKTsKKysgICAgICAvKiBDbGVhciBXQVRDSFBP SU5UX1RSSUdHRVJFRCB2YWx1ZXMgZnJvbSBwcmV2aW91cyBzdG9wIHdoaWNoIGNvdWxkCisrCSBj b25mdXNlIGJwc3RhdF9zdG9wX3N0YXR1cyBhbmQgYnBzdGF0X2V4cGxhaW5zX3NpZ25hbC4gICov CisrICAgICAgd2F0Y2hwb2ludHNfdHJpZ2dlcmVkICgmZWNzLT53cyk7CiArCi0gLyogT3Zlcmxv YWQgcmVzb2x1dGlvbiAqLworICAgICAgIC8qIERvIHdoYXRldmVyIGlzIG5lY2Vzc2FyeSB0byB0 aGUgcGFyZW50IGJyYW5jaCBvZiB0aGUgdmZvcmsuICAqLworICAgICAgIGhhbmRsZV92Zm9ya19j aGlsZF9leGVjX29yX2V4aXQgKDEpOwogIAotICNkZWZpbmUgTEVOR1RIX01BVENIKGJ2KSAoKGJ2 KS0+cmFua1swXSkKLUBAIC0xNDMyLDEwICsxNTYxLDExIEBAIGV4dGVybiB2b2lkIG1haW50ZW5h bmNlX3ByaW50X3R5cGUgKGNoYXIgKiwgaW50KTsKK0BAIC00MDc2LDIzICs0MTAwLDMzIEBAIHBy b2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgogIAotIGV4dGVybiBodGFiX3QgY3JlYXRlX2NvcGllZF90 eXBlc19oYXNoIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CisgCWVjcy0+ZXZlbnRfdGhyZWFk LT5zdGVwcGluZ19vdmVyX2JyZWFrcG9pbnQgPSAxOwogIAotLWV4dGVybiBzdHJ1Y3QgdHlwZSAq Y29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0tCQkJCQkgc3Ry dWN0IHR5cGUgKnR5cGUsCi0rZXh0ZXJuIHN0cnVjdCB0eXBlICpjb3B5X3R5cGVfcmVjdXJzaXZl IChzdHJ1Y3QgdHlwZSAqdHlwZSwKLSAJCQkJCSBodGFiX3QgY29waWVkX3R5cGVzKTsKKy0JaWYg KCFnZGJhcmNoX2dldF9sb25nam1wX3RhcmdldF9wIChnZGJhcmNoKQorLQkgICAgfHwgIWdkYmFy Y2hfZ2V0X2xvbmdqbXBfdGFyZ2V0IChnZGJhcmNoLCBmcmFtZSwgJmptcF9idWZfcGMpKQorKwlp ZiAod2hhdC5pc19sb25nam1wKQorIAkgIHsKKy0JICAgIGlmIChkZWJ1Z19pbmZydW4pCistCSAg ICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIlwKKysJICAgIGlmICghZ2RiYXJj aF9nZXRfbG9uZ2ptcF90YXJnZXRfcCAoZ2RiYXJjaCkKKysJCXx8ICFnZGJhcmNoX2dldF9sb25n am1wX3RhcmdldCAoZ2RiYXJjaCwKKysJCQkJCQlmcmFtZSwgJmptcF9idWZfcGMpKQorKwkgICAg ICB7CisrCQlpZiAoZGVidWdfaW5mcnVuKQorKwkJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9z dGRsb2csICJcCisgaW5mcnVuOiBCUFNUQVRfV0hBVF9TRVRfTE9OR0pNUF9SRVNVTUUgKCFnZGJh cmNoX2dldF9sb25nam1wX3RhcmdldClcbiIpOworLQkgICAga2VlcF9nb2luZyAoZWNzKTsKKy0J ICAgIHJldHVybjsKKy0JICB9CisrCQlrZWVwX2dvaW5nIChlY3MpOworKwkJcmV0dXJuOworKwkg ICAgICB9CiAgCi0gZXh0ZXJuIHN0cnVjdCB0eXBlICpjb3B5X3R5cGUgKGNvbnN0IHN0cnVjdCB0 eXBlICp0eXBlKTsKKy0JLyogV2UncmUgZ29pbmcgdG8gcmVwbGFjZSB0aGUgY3VycmVudCBzdGVw LXJlc3VtZSBicmVha3BvaW50CistCSAgIHdpdGggYSBsb25nam1wLXJlc3VtZSBicmVha3BvaW50 LiAgKi8KKy0JZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGVjcy0+ZXZlbnRfdGhyZWFk KTsKKysJICAgIC8qIFdlJ3JlIGdvaW5nIHRvIHJlcGxhY2UgdGhlIGN1cnJlbnQgc3RlcC1yZXN1 bWUgYnJlYWtwb2ludAorKwkgICAgICAgd2l0aCBhIGxvbmdqbXAtcmVzdW1lIGJyZWFrcG9pbnQu ICAqLworKwkgICAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGVjcy0+ZXZlbnRfdGhy ZWFkKTsKICAKLStleHRlcm4gdm9pZCBmcmVlX2FsbF90eXBlcyAodm9pZCk7CistCS8qIEluc2Vy dCBhIGJyZWFrcG9pbnQgYXQgcmVzdW1lIGFkZHJlc3MuICAqLworLQlpbnNlcnRfbG9uZ2ptcF9y ZXN1bWVfYnJlYWtwb2ludCAoZ2RiYXJjaCwgam1wX2J1Zl9wYyk7CisrCSAgICAvKiBJbnNlcnQg YSBicmVha3BvaW50IGF0IHJlc3VtZSBhZGRyZXNzLiAgKi8KKysJICAgIGluc2VydF9sb25nam1w X3Jlc3VtZV9icmVha3BvaW50IChnZGJhcmNoLCBqbXBfYnVmX3BjKTsKKysJICB9CisrCWVsc2UK KysJICB7CisrCSAgICBzdHJ1Y3Qgc3ltYm9sICpmdW5jID0gZ2V0X2ZyYW1lX2Z1bmN0aW9uIChm cmFtZSk7CisgCisrCSAgICBpZiAoZnVuYykKKysJICAgICAgY2hlY2tfZXhjZXB0aW9uX3Jlc3Vt ZSAoZWNzLCBmcmFtZSwgZnVuYyk7CisrCSAgfQorIAlrZWVwX2dvaW5nIChlY3MpOworIAlyZXR1 cm47CisgCitAQCAtNDEwMSw4ICs0MTM1LDUyIEBAIGluZnJ1bjogQlBTVEFUX1dIQVRfU0VUX0xP TkdKTVBfUkVTVU1FICghZ2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXQpXG4iKTsKKyAJICBmcHJp bnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisgCQkJICAgICAgImluZnJ1bjogQlBTVEFUX1dI QVRfQ0xFQVJfTE9OR0pNUF9SRVNVTUVcbiIpOworIAorLQlnZGJfYXNzZXJ0IChlY3MtPmV2ZW50 X3RocmVhZC0+c3RlcF9yZXN1bWVfYnJlYWtwb2ludCAhPSBOVUxMKTsKKy0JZGVsZXRlX3N0ZXBf cmVzdW1lX2JyZWFrcG9pbnQgKGVjcy0+ZXZlbnRfdGhyZWFkKTsKKysJaWYgKHdoYXQuaXNfbG9u Z2ptcCkKKysJICB7CisrCSAgICBnZGJfYXNzZXJ0IChlY3MtPmV2ZW50X3RocmVhZC0+c3RlcF9y ZXN1bWVfYnJlYWtwb2ludCAhPSBOVUxMKTsKKysJICAgIGRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVh a3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCk7CisrCSAgfQorKwllbHNlCisrCSAgeworKwkgICAg LyogVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgdG8gY29uc2lkZXIuCisrCisrCSAgICAgICAxLiBU aGUgaW5pdGlhdGluZyBmcmFtZSBubyBsb25nZXIgZXhpc3RzLiAgSW4gdGhpcyBjYXNlCisrCSAg ICAgICB3ZSBtdXN0IHN0b3AsIGJlY2F1c2UgdGhlIGV4Y2VwdGlvbiBoYXMgZ29uZSB0b28gZmFy LgorKworKwkgICAgICAgMi4gVGhlIGluaXRpYXRpbmcgZnJhbWUgZXhpc3RzLCBhbmQgaXMgdGhl IHNhbWUgYXMgdGhlCisrCSAgICAgICBjdXJyZW50IGZyYW1lLiAgV2Ugc3RvcCwgYmVjYXVzZSB0 aGUgZXhjZXB0aW9uIGhhcyBiZWVuCisrCSAgICAgICBjYXVnaHQuCisrCisrCSAgICAgICAzLiBU aGUgaW5pdGlhdGluZyBmcmFtZSBleGlzdHMgYW5kIGlzIGRpZmZlcmVudCBmcm9tCisrCSAgICAg ICB0aGUgY3VycmVudCBmcmFtZS4gIFRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBoYXMgYmVlbgor KwkgICAgICAgY2F1Z2h0IGJlbmVhdGggdGhlIGluaXRpYXRpbmcgZnJhbWUsIHNvIGtlZXAgZ29p bmcuICAqLworKwkgICAgc3RydWN0IGZyYW1lX2luZm8gKmluaXRfZnJhbWUKKysJICAgICAgPSBm cmFtZV9maW5kX2J5X2lkIChlY3MtPmV2ZW50X3RocmVhZC0+aW5pdGlhdGluZ19mcmFtZSk7Cisr CisrCSAgICBnZGJfYXNzZXJ0IChlY3MtPmV2ZW50X3RocmVhZC0+ZXhjZXB0aW9uX3Jlc3VtZV9i cmVha3BvaW50ICE9IE5VTEwpOworKwkgICAgZGVsZXRlX2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtw b2ludCAoZWNzLT5ldmVudF90aHJlYWQpOworKworKwkgICAgaWYgKGluaXRfZnJhbWUpCisrCSAg ICAgIHsKKysJCXN0cnVjdCBmcmFtZV9pZCBjdXJyZW50X2lkCisrCQkgID0gZ2V0X2ZyYW1lX2lk IChnZXRfY3VycmVudF9mcmFtZSAoKSk7CisrCQlpZiAoZnJhbWVfaWRfZXEgKGN1cnJlbnRfaWQs CisrCQkJCSBlY3MtPmV2ZW50X3RocmVhZC0+aW5pdGlhdGluZ19mcmFtZSkpCisrCQkgIHsKKysJ CSAgICAvKiBDYXNlIDIuICBGYWxsIHRocm91Z2guICAqLworKwkJICB9CisrCQllbHNlCisrCQkg IHsKKysJCSAgICAvKiBDYXNlIDMuICAqLworKwkJICAgIGtlZXBfZ29pbmcgKGVjcyk7CisrCQkg ICAgcmV0dXJuOworKwkJICB9CisrCSAgICAgIH0KKysKKysJICAgIC8qIEZvciBDYXNlcyAxIGFu ZCAyLCByZW1vdmUgdGhlIHN0ZXAtcmVzdW1lIGJyZWFrcG9pbnQsCisrCSAgICAgICBpZiBpdCBl eGlzdHMuICAqLworKwkgICAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGVjcy0+ZXZl bnRfdGhyZWFkKTsKKysJICB9CisgCisgCWVjcy0+ZXZlbnRfdGhyZWFkLT5zdG9wX3N0ZXAgPSAx OworIAlwcmludF9zdG9wX3JlYXNvbiAoRU5EX1NURVBQSU5HX1JBTkdFLCAwKTsKK0BAIC01MDcw LDYgKzUxNDgsOTcgQEAgaW5zZXJ0X2xvbmdqbXBfcmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgcGMpCisgICAgIHNldF9tb21lbnRhcnlfYnJlYWtw b2ludF9hdF9wYyAoZ2RiYXJjaCwgcGMsIGJwX2xvbmdqbXBfcmVzdW1lKTsKKyB9CisgCisrLyog SW5zZXJ0IGFuIGV4Y2VwdGlvbiByZXN1bWUgYnJlYWtwb2ludC4gIFRQIGlzIHRoZSB0aHJlYWQg dGhyb3dpbmcKKysgICB0aGUgZXhjZXB0aW9uLiAgVGhlIGJsb2NrIEIgaXMgdGhlIGJsb2NrIG9m IHRoZSB1bndpbmRlciBkZWJ1ZyBob29rCisrICAgZnVuY3Rpb24uICBGUkFNRSBpcyB0aGUgZnJh bWUgY29ycmVzcG9uZGluZyB0byB0aGUgY2FsbCB0byB0aGlzCisrICAgZnVuY3Rpb24uICBTWU0g aXMgdGhlIHN5bWJvbCBvZiB0aGUgZnVuY3Rpb24gYXJndW1lbnQgaG9sZGluZyB0aGUKKysgICB0 YXJnZXQgUEMgb2YgdGhlIGV4Y2VwdGlvbi4gICovCisrCisrc3RhdGljIHZvaWQKKytpbnNlcnRf ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwLAorKwkJ CQkgICAgc3RydWN0IGJsb2NrICpiLAorKwkJCQkgICAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1l LAorKwkJCQkgICAgc3RydWN0IHN5bWJvbCAqc3ltKQorK3sKKysgIHN0cnVjdCBnZGJfZXhjZXB0 aW9uIGU7CisrCisrICAvKiBXZSB3YW50IHRvIGlnbm9yZSBlcnJvcnMgaGVyZS4gICovCisrICBU UllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0FMTCkKKysgICAgeworKyAgICAgIHN0cnVjdCBzeW1i b2wgKnZzeW07CisrICAgICAgc3RydWN0IHZhbHVlICp2YWx1ZTsKKysgICAgICBDT1JFX0FERFIg aGFuZGxlcjsKKysgICAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnA7CisrCisrICAgICAgdnN5bSA9 IGxvb2t1cF9zeW1ib2wgKFNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bSksIGIsIFZBUl9ET01BSU4s IE5VTEwpOworKyAgICAgIHZhbHVlID0gcmVhZF92YXJfdmFsdWUgKHZzeW0sIGZyYW1lKTsKKysg ICAgICAvKiBJZiB0aGUgdmFsdWUgd2FzIG9wdGltaXplZCBvdXQsIHJldmVydCB0byB0aGUgb2xk IGJlaGF2aW9yLiAgKi8KKysgICAgICBpZiAoISB2YWx1ZV9vcHRpbWl6ZWRfb3V0ICh2YWx1ZSkp CisrCXsKKysJICBoYW5kbGVyID0gdmFsdWVfYXNfYWRkcmVzcyAodmFsdWUpOwogKwotICNlbmRp ZiAvKiBHREJUWVBFU19IICovCi1kaWZmIC0tZ2l0IGEvZ2RiL2kzODYtbGludXgtbmF0LmMgYi9n ZGIvaTM4Ni1saW51eC1uYXQuYwotaW5kZXggNGZjZTFhYy4uMTQ0YTg5OSAxMDA2NDQKLS0tLSBh L2dkYi9pMzg2LWxpbnV4LW5hdC5jCi0rKysgYi9nZGIvaTM4Ni1saW51eC1uYXQuYwotQEAgLTc0 Nyw2ICs3NDcsMjEgQEAgaTM4Nl9saW51eF9kcl91bnNldF9zdGF0dXMgKHVuc2lnbmVkIGxvbmcg bWFzaykKLSAgICAgfQotIH0KLSAKLSsvKiBTZWUgaTM4Nl9kcl9sb3dfdHlwZS5kZXRhY2guICBE byBub3QgdXNlIHdyYXBwZXJzIGkzODZfbGludXhfZHJfc2V0X2NvbnRyb2wKLSsgICBvciBpMzg2 X2xpbnV4X2RyX3Jlc2V0X2FkZHIgYXMgdGhleSB3b3VsZCBtb2RpZnkgdGhlIHJlZ2lzdGVyIGNh Y2hlCi0rICAgKGkzODZfbGludXhfZHIpLiAgKi8KKysJICBpZiAoZGVidWdfaW5mcnVuKQorKwkg ICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorKwkJCQkiaW5mcnVuOiBleGNlcHRp b24gcmVzdW1lIGF0ICVseFxuIiwKKysJCQkJKHVuc2lnbmVkIGxvbmcpIGhhbmRsZXIpOworKwor KwkgIGJwID0gc2V0X21vbWVudGFyeV9icmVha3BvaW50X2F0X3BjIChnZXRfZnJhbWVfYXJjaCAo ZnJhbWUpLAorKwkJCQkJICAgICAgIGhhbmRsZXIsIGJwX2V4Y2VwdGlvbl9yZXN1bWUpOworKwkg IGJwLT50aHJlYWQgPSB0cC0+bnVtOworKwkgIGluZmVyaW9yX3RocmVhZCAoKS0+ZXhjZXB0aW9u X3Jlc3VtZV9icmVha3BvaW50ID0gYnA7CisrCX0KKysgICAgfQorK30KKysKKysvKiBUaGlzIGlz IGNhbGxlZCB3aGVuIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBpbnRlcmNlcHRlZC4gIENoZWNrIHRv CisrICAgc2VlIHdoZXRoZXIgdGhlIGV4Y2VwdGlvbidzIGRlc3RpbmF0aW9uIGlzIG9mIGludGVy ZXN0LCBhbmQgaWYgc28sCisrICAgc2V0IGFuIGV4Y2VwdGlvbiByZXN1bWUgYnJlYWtwb2ludCB0 aGVyZS4gICovCiArCiArc3RhdGljIHZvaWQKLStpMzg2X2xpbnV4X2RyX2RldGFjaCAodm9pZCkK KytjaGVja19leGNlcHRpb25fcmVzdW1lIChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUg KmVjcywKKysJCQlzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIHN0cnVjdCBzeW1ib2wgKmZ1bmMp CiArewotKyAgaW50IHJlZ251bTsKKysgIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7CiArCi0rICBp Mzg2X2xpbnV4X2RyX3NldCAoaW5mZXJpb3JfcHRpZCwgRFJfQ09OVFJPTCwgMCk7Ci0rICBpMzg2 X2xpbnV4X2RyX3Vuc2V0X3N0YXR1cyAofjBVTCk7Ci0rICBmb3IgKHJlZ251bSA9IERSX0ZJUlNU QUREUjsgcmVnbnVtIDw9IERSX0xBU1RBRERSOyByZWdudW0rKykKLSsgICAgaTM4Nl9saW51eF9k cl9zZXQgKGluZmVyaW9yX3B0aWQsIHJlZ251bSwgMCk7CisrICBUUllfQ0FUQ0ggKGUsIFJFVFVS Tl9NQVNLX0FMTCkKKysgICAgeworKyAgICAgIHN0cnVjdCBibG9jayAqYjsKKysgICAgICBzdHJ1 Y3QgZGljdF9pdGVyYXRvciBpdGVyOworKyAgICAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKKysgICAg ICBpbnQgYXJnbm8gPSAwOworKworKyAgICAgIC8qIFRoZSBleGNlcHRpb24gYnJlYWtwb2ludCBp cyBhIHRocmVhZC1zcGVjaWZpYyBicmVha3BvaW50IG9uCisrCSB0aGUgdW53aW5kZXIncyBkZWJ1 ZyBob29rLCBkZWNsYXJlZCBhczoKKysJIAorKwkgdm9pZCBfVW53aW5kX0RlYnVnSG9vayAodm9p ZCAqY2ZhLCB2b2lkICpoYW5kbGVyKTsKKysJIAorKwkgVGhlIENGQSBhcmd1bWVudCBpbmRpY2F0 ZXMgdGhlIGZyYW1lIHRvIHdoaWNoIGNvbnRyb2wgaXMKKysJIGFib3V0IHRvIGJlIHRyYW5zZmVy cmVkLiAgSEFORExFUiBpcyB0aGUgZGVzdGluYXRpb24gUEMuCisrCSAKKysJIFdlIGlnbm9yZSB0 aGUgQ0ZBIGFuZCBzZXQgYSB0ZW1wb3JhcnkgYnJlYWtwb2ludCBhdCBIQU5ETEVSLgorKwkgVGhp cyBpcyBub3QgZXh0cmVtZWx5IGVmZmljaWVudCBidXQgaXQgYXZvaWRzIGlzc3VlcyBpbiBnZGIK KysJIHdpdGggY29tcHV0aW5nIHRoZSBEV0FSRiBDRkEsIGFuZCBpdCBhbHNvIHdvcmtzIGV2ZW4g aW4gd2VpcmQKKysJIGNhc2VzIHN1Y2ggYXMgdGhyb3dpbmcgYW4gZXhjZXB0aW9uIGZyb20gaW5z aWRlIGEgc2lnbmFsCisrCSBoYW5kbGVyLiAgKi8KKysKKysgICAgICBiID0gU1lNQk9MX0JMT0NL X1ZBTFVFIChmdW5jKTsKKysgICAgICBBTExfQkxPQ0tfU1lNQk9MUyAoYiwgaXRlciwgc3ltKQor Kwl7CisrCSAgaWYgKCFTWU1CT0xfSVNfQVJHVU1FTlQgKHN5bSkpCisrCSAgICBjb250aW51ZTsK KysKKysJICBpZiAoYXJnbm8gPT0gMCkKKysJICAgICsrYXJnbm87CisrCSAgZWxzZQorKwkgICAg eworKwkgICAgICBpbnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChlY3MtPmV2ZW50 X3RocmVhZCwKKysJCQkJCQkgIGIsIGZyYW1lLCBzeW0pOworKwkgICAgICBicmVhazsKKysJICAg IH0KKysJfQorKyAgICB9CiArfQogKwogIHN0YXRpYyB2b2lkCi0gaTM4Nl9saW51eF9uZXdfdGhy ZWFkIChwdGlkX3QgcHRpZCkKKyBzdG9wX3N0ZXBwaW5nIChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRy b2xfc3RhdGUgKmVjcykKICB7Ci1AQCAtOTc2LDYgKzk5MSw3IEBAIF9pbml0aWFsaXplX2kzODZf bGludXhfbmF0ICh2b2lkKQotICAgaTM4Nl9kcl9sb3cucmVzZXRfYWRkciA9IGkzODZfbGludXhf ZHJfcmVzZXRfYWRkcjsKLSAgIGkzODZfZHJfbG93LmdldF9zdGF0dXMgPSBpMzg2X2xpbnV4X2Ry X2dldF9zdGF0dXM7Ci0gICBpMzg2X2RyX2xvdy51bnNldF9zdGF0dXMgPSBpMzg2X2xpbnV4X2Ry X3Vuc2V0X3N0YXR1czsKLSsgIGkzODZfZHJfbG93LmRldGFjaCA9IGkzODZfbGludXhfZHJfZGV0 YWNoOwotICAgaTM4Nl9zZXRfZGVidWdfcmVnaXN0ZXJfbGVuZ3RoICg0KTsKLSAKLSAgIC8qIE92 ZXJyaWRlIHRoZSBkZWZhdWx0IHB0cmFjZSByZXN1bWUgbWV0aG9kLiAgKi8KLWRpZmYgLS1naXQg YS9nZGIvaTM4Ni1uYXQuYyBiL2dkYi9pMzg2LW5hdC5jCi1pbmRleCBlYWEzNjQ0Li4wOTIxYzdl IDEwMDY0NAotLS0tIGEvZ2RiL2kzODYtbmF0LmMKLSsrKyBiL2dkYi9pMzg2LW5hdC5jCi1AQCAt NTMzLDYgKzUzMywxNyBAQCBpMzg2X3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwg aW50IGxlbiwgaW50IHR5cGUsCi0gICByZXR1cm4gcmV0dmFsOworZGlmZiAtLWdpdCBhL2dkYi9s aW51eC1uYXQuYyBiL2dkYi9saW51eC1uYXQuYworaW5kZXggOTNhZGZjZC4uMzQ0MTJhNiAxMDA2 NDQKKy0tLSBhL2dkYi9saW51eC1uYXQuYworKysrIGIvZ2RiL2xpbnV4LW5hdC5jCitAQCAtMjU4 Nyw2ICsyNTg3LDM5IEBAIGxpbnV4X25hdF9zdG9wcGVkX2RhdGFfYWRkcmVzcyAoc3RydWN0IHRh cmdldF9vcHMgKm9wcywgQ09SRV9BRERSICphZGRyX3ApCisgICByZXR1cm4gbHAtPnN0b3BwZWRf ZGF0YV9hZGRyZXNzX3A7CiAgfQogIAotKy8qIFNlZSB0YXJnZXRfZGV0YWNoX3dhdGNocG9pbnRz LiAgKi8KKysvKiBJbiBgc2V0IGZvbGxvdy1mb3JrLW1vZGUgY2hpbGQnIHdpdGggbXVsdGl0aHJl YWRlZCBwYXJlbnQgd2UgbmVlZCB0byBkZXRhY2gKKysgICB3YXRjaHBvaW50cyBmcm9tIGFsbCB0 aGUgTFdQcy4gIEluIHN1Y2ggY2FzZSBJTkZFUklPUl9QVElEIHdpbGwgYmUgdGhlCisrICAgbm9u LXRocmVhZGVkIG5ldyBjaGlsZCB3aGlsZSBMV1BfTElTVCB3aWxsIHN0aWxsIGNvbnRhaW4gYWxs IHRoZSB0aHJlYWRzIG9mCisrICAgdGhlIHBhcmVudCBiZWluZyBkZXRhY2hlZC4gICovCiArCiAr c3RhdGljIGludAotK2kzODZfZGV0YWNoX3dhdGNocG9pbnRzICh2b2lkKQorK2xpbnV4X25hdF9k ZXRhY2hfd2F0Y2hwb2ludHMgKHZvaWQpCiArewotKyAgaWYgKGkzODZfZHJfbG93LmRldGFjaCkK LSsgICAgaTM4Nl9kcl9sb3cuZGV0YWNoICgpOworKyAgc3RydWN0IGx3cF9pbmZvICpscDsKKysg IGludCBmb3VuZCA9IDAsIHJldHZhbCA9IDA7CisrICBwdGlkX3QgZmlsdGVyID0gcGlkX3RvX3B0 aWQgKHB0aWRfZ2V0X3BpZCAoaW5mZXJpb3JfcHRpZCkpOworKyAgc3RydWN0IGNsZWFudXAgKm9s ZF9jaGFpbiA9IHNhdmVfaW5mZXJpb3JfcHRpZCAoKTsKICsKLSsgIHJldHVybiAwOworKyAgZm9y IChscCA9IGx3cF9saXN0OyBscDsgbHAgPSBscC0+bmV4dCkKKysgICAgaWYgKHB0aWRfbWF0Y2gg KGxwLT5wdGlkLCBmaWx0ZXIpKQorKyAgICAgIHsKKysJaW5mZXJpb3JfcHRpZCA9IGxwLT5wdGlk OworKwlyZXR2YWwgfD0gbGludXhfb3BzLT50b19kZXRhY2hfd2F0Y2hwb2ludHMgKCk7CisrCWZv dW5kID0gMTsKKysgICAgICB9CisrCisrICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKKysKKysg IGlmICghZm91bmQpCisrICAgIHsKKysgICAgICBnZGJfYXNzZXJ0ICghaXNfbHdwIChpbmZlcmlv cl9wdGlkKSk7CisrCisrICAgICAgcmV0dmFsIHw9IGxpbnV4X29wcy0+dG9fZGV0YWNoX3dhdGNo cG9pbnRzICgpOworKyAgICB9CisrCisrICByZXR1cm4gcmV0dmFsOwogK30KICsKLSAvKiBSZXR1 cm4gbm9uLXplcm8gaWYgd2UgY2FuIHdhdGNoIGEgbWVtb3J5IHJlZ2lvbiB0aGF0IHN0YXJ0cyBh dAotICAgIGFkZHJlc3MgQUREUiBhbmQgd2hvc2UgbGVuZ3RoIGlzIExFTiBieXRlcy4gICovCisg LyogV2FpdCB1bnRpbCBMUCBpcyBzdG9wcGVkLiAgKi8KICAKLUBAIC02ODUsNiArNjk2LDcgQEAg aTM4Nl91c2Vfd2F0Y2hwb2ludHMgKHN0cnVjdCB0YXJnZXRfb3BzICp0KQotICAgdC0+dG9fc3Rv cHBlZF9kYXRhX2FkZHJlc3MgPSBpMzg2X3N0b3BwZWRfZGF0YV9hZGRyZXNzOwotICAgdC0+dG9f aW5zZXJ0X3dhdGNocG9pbnQgPSBpMzg2X2luc2VydF93YXRjaHBvaW50OwotICAgdC0+dG9fcmVt b3ZlX3dhdGNocG9pbnQgPSBpMzg2X3JlbW92ZV93YXRjaHBvaW50OwotKyAgdC0+dG9fZGV0YWNo X3dhdGNocG9pbnRzID0gaTM4Nl9kZXRhY2hfd2F0Y2hwb2ludHM7Ci0gICB0LT50b19pbnNlcnRf aHdfYnJlYWtwb2ludCA9IGkzODZfaW5zZXJ0X2h3X2JyZWFrcG9pbnQ7Ci0gICB0LT50b19yZW1v dmVfaHdfYnJlYWtwb2ludCA9IGkzODZfcmVtb3ZlX2h3X2JyZWFrcG9pbnQ7Ci0gfQotZGlmZiAt LWdpdCBhL2dkYi9pMzg2LW5hdC5oIGIvZ2RiL2kzODYtbmF0LmgKLWluZGV4IDczMTdlN2QuLmVh OTE0YTUgMTAwNjQ0Ci0tLS0gYS9nZGIvaTM4Ni1uYXQuaAotKysrIGIvZ2RiL2kzODYtbmF0LmgK LUBAIC02Miw2ICs2MiwxMCBAQCBleHRlcm4gdm9pZCBpMzg2X3VzZV93YXRjaHBvaW50cyAoc3Ry dWN0IHRhcmdldF9vcHMgKik7Ci0gICAgICAgdW5zZXRfc3RhdHVzICAgICAgICAgICAgIC0tIHVu c2V0IHRoZSBzcGVjaWZpZWQgYml0cyBvZiB0aGUgZGVidWcKLSAJCQkJICBzdGF0dXMgKERSNikg cmVnaXN0ZXIgZm9yIGFsbCBMV1BzCisgc3RhdGljIGludAorQEAgLTU2MDYsNiArNTYzOSw4IEBA IGxpbnV4X25hdF9hZGRfdGFyZ2V0IChzdHJ1Y3QgdGFyZ2V0X29wcyAqdCkKKyAgIHQtPnRvX3Ro cmVhZF9hZGRyZXNzX3NwYWNlID0gbGludXhfbmF0X3RocmVhZF9hZGRyZXNzX3NwYWNlOworICAg dC0+dG9fc3RvcHBlZF9ieV93YXRjaHBvaW50ID0gbGludXhfbmF0X3N0b3BwZWRfYnlfd2F0Y2hw b2ludDsKKyAgIHQtPnRvX3N0b3BwZWRfZGF0YV9hZGRyZXNzID0gbGludXhfbmF0X3N0b3BwZWRf ZGF0YV9hZGRyZXNzOworKyAgaWYgKGxpbnV4X29wcy0+dG9fZGV0YWNoX3dhdGNocG9pbnRzKQor KyAgICB0LT50b19kZXRhY2hfd2F0Y2hwb2ludHMgPSBsaW51eF9uYXRfZGV0YWNoX3dhdGNocG9p bnRzOwogIAotKyAgICAgIGRldGFjaCAgICAgICAgICAgICAgICAgICAtLSBjbGVhciBhbGwgZGVi dWcgcmVnaXN0ZXJzIG9mIG9ubHkgdGhlCi0rCQkJCSAgSU5GRVJJT1JfUFRJRCB0YXNrIHdpdGhv dXQgYWZmZWN0aW5nIGFueQotKwkJCQkgIHJlZ2lzdGVyIGNhY2hlcy4KKyAgIHQtPnRvX2Nhbl9h c3luY19wID0gbGludXhfbmF0X2Nhbl9hc3luY19wOworICAgdC0+dG9faXNfYXN5bmNfcCA9IGxp bnV4X25hdF9pc19hc3luY19wOworZGlmZiAtLWdpdCBhL2dkYi9saW51eC10ZGVwLmMgYi9nZGIv bGludXgtdGRlcC5jCitpbmRleCAwN2ZkNjdjLi4yNTI0MjUwIDEwMDY0NAorLS0tIGEvZ2RiL2xp bnV4LXRkZXAuYworKysrIGIvZ2RiL2xpbnV4LXRkZXAuYworQEAgLTIzLDYgKzIzLDggQEAKKyAj aW5jbHVkZSAiYXV4di5oIgorICNpbmNsdWRlICJ0YXJnZXQuaCIKKyAjaW5jbHVkZSAiZWxmL2Nv bW1vbi5oIgorKyNpbmNsdWRlICJ2YWx1ZS5oIgorKyNpbmNsdWRlICJpbmZjYWxsLmgiCisgCisg LyogVGhpcyBmdW5jdGlvbiBpcyBzdWl0YWJsZSBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IGRvbid0 CisgICAgZXh0ZW5kL292ZXJyaWRlIHRoZSBzdGFuZGFyZCBzaWdpbmZvIHN0cnVjdHVyZS4gICov CitkaWZmIC0tZ2l0IGEvZ2RiL21haW4uYyBiL2dkYi9tYWluLmMKK2luZGV4IGJmZDEyMTMuLjcy ZmFhYmQgMTAwNjQ0CistLS0gYS9nZGIvbWFpbi5jCisrKysgYi9nZGIvbWFpbi5jCitAQCAtMzks NiArMzksNyBAQAorIAorICNpbmNsdWRlICJpbnRlcnBzLmgiCisgI2luY2x1ZGUgIm1haW4uaCIK KysjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgorICNpbmNsdWRlICJzb3VyY2UuaCIKKyAjaW5j bHVkZSAiY2xpL2NsaS1jbWRzLmgiCisgI2luY2x1ZGUgInB5dGhvbi9weXRob24uaCIKK0BAIC0y NTksNiArMjYwLDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAgIGNoYXIgKmNkYXJn ID0gTlVMTDsKKyAgIGNoYXIgKnR0eWFyZyA9IE5VTEw7CisgCisrICBpbnQgcHl0aG9uX3Njcmlw dCA9IDA7CisrCisgICAvKiBUaGVzZSBhcmUgc3RhdGljIHNvIHRoYXQgd2UgY2FuIHRha2UgdGhl aXIgYWRkcmVzcyBpbiBhbiBpbml0aWFsaXplci4gICovCisgICBzdGF0aWMgaW50IHByaW50X2hl bHA7CisgICBzdGF0aWMgaW50IHByaW50X3ZlcnNpb247CitAQCAtNDQzLDEwICs0NDYsMTQgQEAg Y2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAgICAgICB7ImFyZ3MiLCBub19hcmd1bWVudCwg JnNldF9hcmdzLCAxfSwKKyAgICAgICB7ImwiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgJ2wnfSwK KyAgICAgICB7InJldHVybi1jaGlsZC1yZXN1bHQiLCBub19hcmd1bWVudCwgJnJldHVybl9jaGls ZF9yZXN1bHQsIDF9LAorKyNpZiBIQVZFX1BZVEhPTgorKyAgICAgIHsicHl0aG9uIiwgbm9fYXJn dW1lbnQsIDAsICdQJ30sCisrICAgICAgeyJQIiwgbm9fYXJndW1lbnQsIDAsICdQJ30sCisrI2Vu ZGlmCisgICAgICAgezAsIG5vX2FyZ3VtZW50LCAwLCAwfQorICAgICB9OworIAorLSAgICB3aGls ZSAoMSkKKysgICAgd2hpbGUgKCFweXRob25fc2NyaXB0KQorICAgICAgIHsKKyAJaW50IG9wdGlv bl9pbmRleDsKKyAKK0BAIC00NjQsNiArNDcxLDkgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0 YSkKKyAJICBjYXNlIDA6CisgCSAgICAvKiBMb25nIG9wdGlvbiB0aGF0IGp1c3Qgc2V0cyBhIGZs YWcuICAqLworIAkgICAgYnJlYWs7CisrCSAgY2FzZSAnUCc6CisrCSAgICBweXRob25fc2NyaXB0 ID0gMTsKKysJICAgIGJyZWFrOworIAkgIGNhc2UgT1BUX1NFOgorIAkgICAgc3ltYXJnID0gb3B0 YXJnOworIAkgICAgZXhlY2FyZyA9IG9wdGFyZzsKK0BAIC02NTAsNyArNjYwLDMxIEBAIGV4dGVy biBpbnQgZ2RidGtfdGVzdCAoY2hhciAqKTsKKyAKKyAgIC8qIE5vdyB0aGF0IGdkYl9pbml0IGhh cyBjcmVhdGVkIHRoZSBpbml0aWFsIGluZmVyaW9yLCB3ZSdyZSBpbiBwb3NpdGlvbgorICAgICAg dG8gc2V0IGFyZ3MgZm9yIHRoYXQgaW5mZXJpb3IuICAqLworLSAgaWYgKHNldF9hcmdzKQorKyAg aWYgKHB5dGhvbl9zY3JpcHQpCisrICAgIHsKKysgICAgICAvKiBUaGUgZmlyc3QgYXJndW1lbnQg aXMgYSBweXRob24gc2NyaXB0IHRvIGV2YWx1YXRlLCBhbmQKKysJIHN1YnNlcXVlbnQgYXJndW1l bnRzIGFyZSBwYXNzZWQgdG8gdGhlIHNjcmlwdCBmb3IKKysJIHByb2Nlc3NpbmcgdGhlcmUuICAq LworKyAgICAgIGlmIChvcHRpbmQgPj0gYXJnYykKKysJeworKwkgIGZwcmludGZfdW5maWx0ZXJl ZCAoZ2RiX3N0ZGVyciwKKysJCQkgICAgICBfKCIlczogUHl0aG9uIHNjcmlwdCBmaWxlIG5hbWUg cmVxdWlyZWRcbiIpLAorKwkJCSAgICAgIGFyZ3ZbMF0pOworKwkgIGV4aXQgKDEpOworKwl9CiAr Ci0gICAgQWRkaXRpb25hbGx5LCB0aGUgbmF0aXZlIGZpbGUgc2hvdWxkIHNldCB0aGUgZGVidWdf cmVnaXN0ZXJfbGVuZ3RoCi0gICAgZmllbGQgdG8gNCBvciA4IGRlcGVuZGluZyBvbiB0aGUgbnVt YmVyIG9mIGJ5dGVzIHVzZWQgZm9yCi0gICAgZGV1YmcgcmVnaXN0ZXJzLiAgKi8KLUBAIC03Myw2 ICs3Nyw3IEBAIHN0cnVjdCBpMzg2X2RyX2xvd190eXBlCi0gICAgIHZvaWQgKCpyZXNldF9hZGRy KSAoaW50KTsKLSAgICAgdW5zaWduZWQgbG9uZyAoKmdldF9zdGF0dXMpICh2b2lkKTsKLSAgICAg dm9pZCAoKnVuc2V0X3N0YXR1cykgKHVuc2lnbmVkIGxvbmcpOwotKyAgICB2b2lkICgqZGV0YWNo KSAodm9pZCk7Ci0gICAgIGludCBkZWJ1Z19yZWdpc3Rlcl9sZW5ndGg7Ci0gICB9OworKyAgICAg IC8qIEZJWE1FOiBzaG91bGQgaGFuZGxlIGluZmVyaW9yIEkvTyBpbnRlbGxpZ2VudGx5IGhlcmUu CisrCSBFLmcuLCBzaG91bGQgYmUgcG9zc2libGUgdG8gcnVuIGdkYiBpbiBwaXBlbGluZSBhbmQg aGF2ZQorKwkgUHl0aG9uIChhbmQgZ2RiKSBvdXRwdXQgZ28gdG8gc3RkZXJyIG9yIGZpbGU7IGFu ZCBpZiBhCisrCSBwcm9tcHQgaXMgbmVlZGVkLCBvcGVuIHRoZSB0dHkuICAqLworKyAgICAgIHF1 aWV0ID0gMTsKKysgICAgICAvKiBGSVhNRTogc2hvdWxkIHJlYWQgLmdkYmluaXQgaWYsIGFuZCBv bmx5IGlmLCBhIHByb21wdCBpcworKwkgcmVxdWVzdGVkIGJ5IHRoZSBzY3JpcHQuICBUaG91Z2gu Li4gbWF5YmUgdGhpcyBpcyBub3QKKysJIGlkZWFsPyAgKi8KKysgICAgICAvKiBGSVhNRTogbGlr ZXdpc2UsIHJlYWRpbmcgaW4gaGlzdG9yeS4gICovCisrICAgICAgaW5oaWJpdF9nZGJpbml0ID0g MTsKKysgICAgfQorKyAgZWxzZSBpZiAoc2V0X2FyZ3MpCisgICAgIHsKKyAgICAgICAvKiBUaGUg cmVtYWluaW5nIG9wdGlvbnMgYXJlIHRoZSBjb21tYW5kLWxpbmUgb3B0aW9ucyBmb3IgdGhlCisg CSBpbmZlcmlvci4gIFRoZSBmaXJzdCBvbmUgaXMgdGhlIHN5bS9leGVjIGZpbGUsIGFuZCB0aGUg cmVzdAorQEAgLTg5MCw3ICs5MjQsOCBAQCBDYW4ndCBhdHRhY2ggdG8gcHJvY2VzcyBhbmQgc3Bl Y2lmeSBhIGNvcmUgZmlsZSBhdCB0aGUgc2FtZSB0aW1lLiIpKTsKKyAgIHhmcmVlIChjbWRhcmcp OwogIAotZGlmZiAtLWdpdCBhL2dkYi9pbmZjYWxsLmMgYi9nZGIvaW5mY2FsbC5jCi1pbmRleCAw YzlhM2FmLi45NTdlYzFkIDEwMDY0NAotLS0tIGEvZ2RiL2luZmNhbGwuYwotKysrIGIvZ2RiL2lu ZmNhbGwuYwotQEAgLTIyNSw2ICsyMjUsNTYgQEAgdmFsdWVfYXJnX2NvZXJjZSAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB2YWx1ZSAqYXJnLAotICAgcmV0dXJuIHZhbHVlX2Nhc3Qg KHR5cGUsIGFyZyk7CisgICAvKiBSZWFkIGluIHRoZSBvbGQgaGlzdG9yeSBhZnRlciBhbGwgdGhl IGNvbW1hbmQgZmlsZXMgaGF2ZSBiZWVuIHJlYWQuICovCistICBpbml0X2hpc3RvcnkgKCk7Cisr ICBpZiAoIXB5dGhvbl9zY3JpcHQpCisrICAgIGluaXRfaGlzdG9yeSAoKTsKKyAKKyAgIGlmIChi YXRjaF9mbGFnKQorICAgICB7CitAQCAtOTAxLDEzICs5MzYsMjUgQEAgQ2FuJ3QgYXR0YWNoIHRv IHByb2Nlc3MgYW5kIHNwZWNpZnkgYSBjb3JlIGZpbGUgYXQgdGhlIHNhbWUgdGltZS4iKSk7Cisg ICAvKiBTaG93IHRpbWUgYW5kL29yIHNwYWNlIHVzYWdlLiAgKi8KKyAgIGRvX2NsZWFudXBzIChw cmVfc3RhdF9jaGFpbik7CisgCistICAvKiBOT1RFOiBjYWduZXkvMTk5OS0xMS0wNzogVGhlcmUg aXMgcHJvYmFibHkgbm8gcmVhc29uIGZvciBub3QKKy0gICAgIG1vdmluZyB0aGlzIGxvb3AgYW5k IHRoZSBjb2RlIGZvdW5kIGluIGNhcHR1cmVkX2NvbW1hbmRfbG9vcCgpCistICAgICBpbnRvIHRo ZSBjb21tYW5kX2xvb3AoKSBwcm9wZXIuICBUaGUgbWFpbiB0aGluZyBob2xkaW5nIGJhY2sgdGhh dAorLSAgICAgY2hhbmdlIC0gU0VUX1RPUF9MRVZFTCgpIC0gaGFzIGJlZW4gZWxpbWluYXRlZC4g Ki8KKy0gIHdoaWxlICgxKQorKyNpZiBIQVZFX1BZVEhPTgorKyAgaWYgKHB5dGhvbl9zY3JpcHQp CisgICAgIHsKKy0gICAgICBjYXRjaF9lcnJvcnMgKGNhcHR1cmVkX2NvbW1hbmRfbG9vcCwgMCwg IiIsIFJFVFVSTl9NQVNLX0FMTCk7CisrICAgICAgZXh0ZXJuIGludCBwYWdpbmF0aW9uX2VuYWJs ZWQ7CisrICAgICAgcGFnaW5hdGlvbl9lbmFibGVkID0gMDsKKysgICAgICBydW5fcHl0aG9uX3Nj cmlwdCAoYXJnYyAtIG9wdGluZCwgJmFyZ3Zbb3B0aW5kXSk7CisrICAgICAgcmV0dXJuIDE7Cisr ICAgIH0KKysgIGVsc2UKKysjZW5kaWYKKysgICAgeworKyAgICAgIC8qIE5PVEU6IGNhZ25leS8x OTk5LTExLTA3OiBUaGVyZSBpcyBwcm9iYWJseSBubyByZWFzb24gZm9yIG5vdAorKwkgbW92aW5n IHRoaXMgbG9vcCBhbmQgdGhlIGNvZGUgZm91bmQgaW4gY2FwdHVyZWRfY29tbWFuZF9sb29wKCkK KysJIGludG8gdGhlIGNvbW1hbmRfbG9vcCgpIHByb3Blci4gIFRoZSBtYWluIHRoaW5nIGhvbGRp bmcgYmFjayB0aGF0CisrCSBjaGFuZ2UgLSBTRVRfVE9QX0xFVkVMKCkgLSBoYXMgYmVlbiBlbGlt aW5hdGVkLiAqLworKyAgICAgIHdoaWxlICgxKQorKwl7CisrCSAgY2F0Y2hfZXJyb3JzIChjYXB0 dXJlZF9jb21tYW5kX2xvb3AsIDAsICIiLCBSRVRVUk5fTUFTS19BTEwpOworKwl9CisgICAgIH0K KyAgIC8qIE5vIGV4aXQgLS0gZXhpdCBpcyB0aHJvdWdoIHF1aXRfY29tbWFuZC4gICovCisgfQor QEAgLTkzOSw3ICs5ODYsMTIgQEAgcHJpbnRfZ2RiX2hlbHAgKHN0cnVjdCB1aV9maWxlICpzdHJl YW0pCisgICBmcHV0c191bmZpbHRlcmVkIChfKCJcCisgVGhpcyBpcyB0aGUgR05VIGRlYnVnZ2Vy LiAgVXNhZ2U6XG5cblwKKyAgICAgZ2RiIFtvcHRpb25zXSBbZXhlY3V0YWJsZS1maWxlIFtjb3Jl LWZpbGUgb3IgcHJvY2Vzcy1pZF1dXG5cCistICAgIGdkYiBbb3B0aW9uc10gLS1hcmdzIGV4ZWN1 dGFibGUtZmlsZSBbaW5mZXJpb3ItYXJndW1lbnRzIC4uLl1cblxuXAorKyAgICBnZGIgW29wdGlv bnNdIC0tYXJncyBleGVjdXRhYmxlLWZpbGUgW2luZmVyaW9yLWFyZ3VtZW50cyAuLi5dXG4iKSwg c3RyZWFtKTsKKysjaWYgSEFWRV9QWVRIT04KKysgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKKysg ICAgZ2RiIFtvcHRpb25zXSBbLS1weXRob258LVBdIHNjcmlwdC1maWxlIFtzY3JpcHQtYXJndW1l bnRzIC4uLl1cbiIpLCBzdHJlYW0pOworKyNlbmRpZgorKyAgZnB1dHNfdW5maWx0ZXJlZCAoXygi XG5cCisgT3B0aW9uczpcblxuXAorICIpLCBzdHJlYW0pOworICAgZnB1dHNfdW5maWx0ZXJlZCAo XygiXAorQEAgLTk3Nyw3ICsxMDI5LDEzIEBAIE9wdGlvbnM6XG5cblwKKyAgIC0tbncJCSAgICAg RG8gbm90IHVzZSBhIHdpbmRvdyBpbnRlcmZhY2UuXG5cCisgICAtLW54ICAgICAgICAgICAgICAg RG8gbm90IHJlYWQgIiksIHN0cmVhbSk7CisgICBmcHV0c191bmZpbHRlcmVkIChnZGJpbml0LCBz dHJlYW0pOworLSAgZnB1dHNfdW5maWx0ZXJlZCAoXygiIGZpbGUuXG5cCisrICBmcHV0c191bmZp bHRlcmVkIChfKCIgZmlsZS5cbiIpLCBzdHJlYW0pOworKyNpZiBIQVZFX1BZVEhPTgorKyAgZnB1 dHNfdW5maWx0ZXJlZCAoXygiXAorKyAgLS1weXRob24sIC1QICAgICAgIEZvbGxvd2luZyBhcmd1 bWVudCBpcyBQeXRob24gc2NyaXB0IGZpbGU7IHJlbWFpbmluZ1xuXAorKyAgICAgICAgICAgICAg ICAgICAgIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHNjcmlwdC5cbiIpLCBzdHJlYW0pOworKyNl bmRpZgorKyAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAorICAgLS1xdWlldCAgICAgICAgICAgIERv IG5vdCBwcmludCB2ZXJzaW9uIG51bWJlciBvbiBzdGFydHVwLlxuXAorICAgLS1yZWFkbm93ICAg ICAgICAgIEZ1bGx5IHJlYWQgc3ltYm9sIGZpbGVzIG9uIGZpcnN0IGFjY2Vzcy5cblwKKyAiKSwg c3RyZWFtKTsKK2RpZmYgLS1naXQgYS9nZGIvbWFpbnQuYyBiL2dkYi9tYWludC5jCitpbmRleCAy OGZkNjEwLi40ZTIxNDc2IDEwMDY0NAorLS0tIGEvZ2RiL21haW50LmMKKysrKyBiL2dkYi9tYWlu dC5jCitAQCAtOTA5LDQgKzkwOSwxMiBAQCBXaGVuIGVuYWJsZWQgR0RCIGlzIHByb2ZpbGVkLiIp LAorIAkJCSAgIHNob3dfbWFpbnRlbmFuY2VfcHJvZmlsZV9wLAorIAkJCSAgICZtYWludGVuYW5j ZV9zZXRfY21kbGlzdCwKKyAJCQkgICAmbWFpbnRlbmFuY2Vfc2hvd19jbWRsaXN0KTsKKysgIGFk ZF9zZXRzaG93X2ZpbGVuYW1lX2NtZCAoImdkYl9kYXRhZGlyIiwgY2xhc3NfbWFpbnRlbmFuY2Us CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdkYl9kYXRhZGlyLCBfKCJTZXQgR0RCJ3Mg ZGF0YWRpciBwYXRoLiIpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlNob3cgR0RC J3MgZGF0YWRpciBwYXRoLiIpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlwKKytX aGVuIHNldCwgR0RCIHVzZXMgdGhlIHNwZWNpZmllZCBwYXRoIHRvIHNlYXJjaCBmb3IgZGF0YSBm aWxlcy4iKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICZtYWludGVuYW5jZV9zZXRfY21kbGlzdCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAmbWFpbnRlbmFuY2Vfc2hvd19jbWRsaXN0KTsKKyB9CitkaWZm IC0tZ2l0IGEvZ2RiL21pL21pLWNtZC12YXIuYyBiL2dkYi9taS9taS1jbWQtdmFyLmMKK2luZGV4 IDMxMGFkZTkuLmQ4NzEwYTEgMTAwNjQ0CistLS0gYS9nZGIvbWkvbWktY21kLXZhci5jCisrKysg Yi9nZGIvbWkvbWktY21kLXZhci5jCitAQCAtNzAyLDcgKzcwMiw2IEBAIG1pX2NtZF92YXJfdXBk YXRlIChjaGFyICpjb21tYW5kLCBjaGFyICoqYXJndiwgaW50IGFyZ2MpCisgICAgIH0KKyAgIGVs c2UKKyAgICAgeworLSAgICAgIC8qIEdldCB2YXJvYmogaGFuZGxlLCBpZiBhIHZhbGlkIHZhciBv YmogbmFtZSB3YXMgc3BlY2lmaWVkICovCisgICAgICAgc3RydWN0IHZhcm9iaiAqdmFyID0gdmFy b2JqX2dldF9oYW5kbGUgKG5hbWUpOworIAorICAgICAgIHZhcm9ial91cGRhdGVfb25lICh2YXIs IHByaW50X3ZhbHVlcywgMSAvKiBleHBsaWNpdCAqLyk7CitkaWZmIC0tZ2l0IGEvZ2RiL21pbnN5 bXMuYyBiL2dkYi9taW5zeW1zLmMKK2luZGV4IGNiNDU0NWMuLjkyZDQwMjcgMTAwNjQ0CistLS0g YS9nZGIvbWluc3ltcy5jCisrKysgYi9nZGIvbWluc3ltcy5jCitAQCAtMzM3LDggKzMzNyw5IEBA IGxvb2t1cF9taW5pbWFsX3N5bWJvbF90ZXh0IChjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZikKKyAJICAgICAgIG1zeW1ib2wgPSBtc3ltYm9sLT5oYXNoX25leHQpCisgCSAg ICB7CisgCSAgICAgIGlmIChzdHJjbXAgKFNZTUJPTF9MSU5LQUdFX05BTUUgKG1zeW1ib2wpLCBu YW1lKSA9PSAwICYmCistCQkgIChNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF90ZXh0IHx8 CistCQkgICBNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF9maWxlX3RleHQpKQorKwkJICAo TVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dAorKwkJICAgfHwgTVNZTUJPTF9UWVBF IChtc3ltYm9sKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmMKKysJCSAgIHx8IE1TWU1CT0xfVFlQRSAo bXN5bWJvbCkgPT0gbXN0X2ZpbGVfdGV4dCkpCisgCQl7CisgCQkgIHN3aXRjaCAoTVNZTUJPTF9U WVBFIChtc3ltYm9sKSkKKyAJCSAgICB7CitAQCAtNzAwLDYgKzcwMSwxNiBAQCBsb29rdXBfbWlu aW1hbF9zeW1ib2xfYnlfcGMgKENPUkVfQUREUiBwYykKKyAgIHJldHVybiBsb29rdXBfbWluaW1h bF9zeW1ib2xfYnlfcGNfc2VjdGlvbiAocGMsIE5VTEwpOwogIH0KICAKLSsvKiBDYWxsIGdudS1p ZnVuYyAoU1RUX0dOVV9JRlVOQyAtIGEgZnVuY3Rpb24gcmV0dXJuaW5nIGFkZHJlc3NzIG9mIGEg cmVhbAotKyAgIGZ1bmN0aW9uIHRvIGNhbGwpLiAgUEMgaXMgdGhlIGdudS1pZnVuYyBmdW5jdGlv biBlbnRyeS4gIEZ1bmN0aW9uIHJldHVybnMKLSsgICBmdW5jdGlvbiBlbnRyeSBvZiB0aGUgZ251 LWlmdW5jLXJlc29sdmVkIGZ1bmN0aW9uIHRvIGNhbGwuICBJZiBSRVRWQUxfVFlQRVAKLSsgICBp cyBub3QgTlVMTCBmaWxsIGluICpSRVRWQUxfVFlQRVAgd2l0aCByZXR1cm4gdHlwZSBvZiB0aGUg Z251LWlmdW5jLXJlc29sdmVkCi0rICAgZnVuY3Rpb24gdG8gY2FsbC4gIEtlZXAgKlJFVFZBTF9U WVBFUCBpbnRhY3QgaWYgdGhlIHJldHVybiB0eXBlIGNvdWxkIG5vdCBiZQotKyAgIGZvdW5kLiAg Ki8KKysvKiBSZXR1cm4gbm9uLXplcm8gaWZmIFBDIGlzIGluIGZ1bmN0aW9uIGltcGxlbWVudGlu ZyBnbnUtaWZ1bmMgc2VsZWN0aW9uLiAgKi8KICsKLStzdGF0aWMgQ09SRV9BRERSCi0rZ251X2lm dW5jX3Jlc29sdmUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgcGMpCisraW50 CisraW5fZ251X2lmdW5jX3N0dWIgKENPUkVfQUREUiBwYykKICt7Ci0rICBjaGFyICpuYW1lX2F0 X3BjOwotKyAgQ09SRV9BRERSIHN0YXJ0X2F0X3BjLCBhZGRyZXNzOwotKyAgc3RydWN0IHR5cGUg KmZ1bmNfZnVuY190eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9mdW5jX2Z1 bmM7Ci0rICBzdHJ1Y3QgdmFsdWUgKmZ1bmN0aW9uLCAqYWRkcmVzc192YWw7Ci0rCi0rICBpZiAo ZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChwYywgJm5hbWVfYXRfcGMsICZzdGFydF9hdF9wYywg TlVMTCkKLSsgICAgICAmJiBzdGFydF9hdF9wYyA9PSBwYykKLSsgICAgewotKyAgICAgIGlmIChy ZXNvbHZlX2dudV9pZnVuYyAobmFtZV9hdF9wYywgJmFkZHJlc3MpKQotKwlyZXR1cm4gYWRkcmVz czsKLSsgICAgfQotKyAgZWxzZQotKyAgICBuYW1lX2F0X3BjID0gTlVMTDsKLSsKLSsgIGZ1bmN0 aW9uID0gYWxsb2NhdGVfdmFsdWUgKGZ1bmNfZnVuY190eXBlKTsKLSsgIHNldF92YWx1ZV9hZGRy ZXNzIChmdW5jdGlvbiwgcGMpOwotKwotKyAgLyogZ251LWlmdW5jcyBoYXZlIG5vIGFyZ3VtZW50 cy4gIEZVTkNUSU9OIGlzIHRoZSBmdW5jdGlvbiBlbnRyeSBhZGRyZXNzCi0rICAgICB3aGlsZSBB RERSRVNTIGlzIGEgcG9zc2libGUgZnVuY3Rpb24gZGVzY3JpcHRvci4uICAqLwotKyAgYWRkcmVz c192YWwgPSBjYWxsX2Z1bmN0aW9uX2J5X2hhbmQgKGZ1bmN0aW9uLCAwLCBOVUxMKTsKLSsgIGFk ZHJlc3MgPSB2YWx1ZV9hc19hZGRyZXNzIChhZGRyZXNzX3ZhbCk7Ci0rCi0rICBpZiAobmFtZV9h dF9wYykKLSsgICAgZ251X2lmdW5jX3JlY29yZF9jYWNoZSAoZ2RiYXJjaCwgbmFtZV9hdF9wYywg YWRkcmVzcyk7CisrICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2wgPSBsb29rdXBfbWlu aW1hbF9zeW1ib2xfYnlfcGMgKHBjKTsKICsKLSsgIHJldHVybiBnZGJhcmNoX2NvbnZlcnRfZnJv bV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCBhZGRyZXNzLCAmY3VycmVudF90YXJnZXQpOworKyAg cmV0dXJuIG1zeW1ib2wgJiYgTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dF9nbnVf aWZ1bmM7CiArfQogKwotK3N0YXRpYyBzdHJ1Y3QgdHlwZSAqCi0rZmluZF9mdW5jdGlvbl9yZXR1 cm5fdHlwZSAoQ09SRV9BRERSIHBjKQotK3sKLSsgIHN0cnVjdCBzeW1ib2wgKnN5bSA9IGZpbmRf cGNfZnVuY3Rpb24gKHBjKTsKLSsKLSsgIGlmIChzeW0gIT0gTlVMTCAmJiBCTE9DS19TVEFSVCAo U1lNQk9MX0JMT0NLX1ZBTFVFIChzeW0pKSA9PSBwYwotKyAgICAgICYmIFNZTUJPTF9UWVBFIChz eW0pICE9IE5VTEwpCi0rICAgIHJldHVybiBUWVBFX1RBUkdFVF9UWVBFIChTWU1CT0xfVFlQRSAo c3ltKSk7Ci0rCi0rICByZXR1cm4gTlVMTDsKLSt9CisgLyogRmluZCB0aGUgbWluaW1hbCBzeW1i b2wgbmFtZWQgTkFNRSwgYW5kIHJldHVybiBib3RoIHRoZSBtaW5zeW0KKyAgICBzdHJ1Y3QgYW5k IGl0cyBvYmpmaWxlLiAgVGhpcyBvbmx5IGNoZWNrcyB0aGUgbGlua2FnZSBuYW1lLiAgU2V0cwor ICAgICpPQkpGSUxFX1AgYW5kIHJldHVybnMgdGhlIG1pbmltYWwgc3ltYm9sLCBpZiBpdCBpcyBm b3VuZC4gIElmIGl0CitAQCAtNzY5LDYgKzc4MCw3IEBAIHByaW1fcmVjb3JkX21pbmltYWxfc3lt Ym9sIChjb25zdCBjaGFyICpuYW1lLCBDT1JFX0FERFIgYWRkcmVzcywKKyAgIHN3aXRjaCAobXNf dHlwZSkKKyAgICAgeworICAgICBjYXNlIG1zdF90ZXh0OgorKyAgICBjYXNlIG1zdF90ZXh0X2du dV9pZnVuYzoKKyAgICAgY2FzZSBtc3RfZmlsZV90ZXh0OgorICAgICBjYXNlIG1zdF9zb2xpYl90 cmFtcG9saW5lOgorICAgICAgIHNlY3Rpb24gPSBTRUNUX09GRl9URVhUIChvYmpmaWxlKTsKK0BA IC0xMjM1LDcgKzEyNDcsOCBAQCBmaW5kX3NvbGliX3RyYW1wb2xpbmVfdGFyZ2V0IChzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZnJhbWUsIENPUkVfQUREUiBwYykKKyAgICAgeworICAgICAgIEFMTF9NU1lN Qk9MUyAob2JqZmlsZSwgbXN5bWJvbCkKKyAgICAgICB7CistCWlmIChNU1lNQk9MX1RZUEUgKG1z eW1ib2wpID09IG1zdF90ZXh0CisrCWlmICgoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3Rf dGV4dAorKwkgICAgfHwgTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dF9nbnVfaWZ1 bmMpCisgCSAgICAmJiBzdHJjbXAgKFNZTUJPTF9MSU5LQUdFX05BTUUgKG1zeW1ib2wpLAorIAkJ ICAgICAgIFNZTUJPTF9MSU5LQUdFX05BTUUgKHRzeW1ib2wpKSA9PSAwKQorIAkgIHJldHVybiBT WU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bWJvbCk7CitkaWZmIC0tZ2l0IGEvZ2RiL3AtbGFuZy5j IGIvZ2RiL3AtbGFuZy5jCitpbmRleCAwODczOGFjLi42NGQyZTlmIDEwMDY0NAorLS0tIGEvZ2Ri L3AtbGFuZy5jCisrKysgYi9nZGIvcC1sYW5nLmMKK0BAIC0yMjIsNyArMjIyLDExIEBAIHBhc2Nh bF9wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgc3RydWN0IHR5cGUgKnR5cGUsCisg ICB1bnNpZ25lZCBpbnQgdGhpbmdzX3ByaW50ZWQgPSAwOworICAgaW50IGluX3F1b3RlcyA9IDA7 CisgICBpbnQgbmVlZF9jb21tYSA9IDA7CistICBpbnQgd2lkdGggPSBUWVBFX0xFTkdUSCAodHlw ZSk7CisrICBpbnQgd2lkdGg7CiArCi0gLyogRGV0ZXJtaW5lIGEgZnVuY3Rpb24ncyBhZGRyZXNz IGFuZCBpdHMgcmV0dXJuIHR5cGUgZnJvbSBpdHMgdmFsdWUuCi0gICAgQ2FsbHMgZXJyb3IoKSBp ZiB0aGUgZnVuY3Rpb24gaXMgbm90IHZhbGlkIGZvciBjYWxsaW5nLiAgKi8KKysgIC8qIFByZXNl cnZlIFRZUEUncyBvcmlnaW5hbCB0eXBlLCBqdXN0IHNldCBpdHMgTEVOR1RILiAgKi8KKysgIGNo ZWNrX3R5cGVkZWYgKHR5cGUpOworKyAgd2lkdGggPSBUWVBFX0xFTkdUSCAodHlwZSk7CiAgCi1A QCAtMjMzLDcgKzI4Myw2IEBAIGZpbmRfZnVuY3Rpb25fYWRkciAoc3RydWN0IHZhbHVlICpmdW5j dGlvbiwgc3RydWN0IHR5cGUgKipyZXR2YWxfdHlwZSkKLSB7Ci0gICBzdHJ1Y3QgdHlwZSAqZnR5 cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChmdW5jdGlvbikpOwotICAgc3RydWN0IGdk YmFyY2ggKmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNoIChmdHlwZSk7Ci0tICBlbnVtIHR5cGVfY29k ZSBjb2RlID0gVFlQRV9DT0RFIChmdHlwZSk7Ci0gICBzdHJ1Y3QgdHlwZSAqdmFsdWVfdHlwZSA9 IE5VTEw7Ci0gICBDT1JFX0FERFIgZnVuYWRkcjsKKyAgIC8qIElmIHRoZSBzdHJpbmcgd2FzIG5v dCB0cnVuY2F0ZWQgZHVlIHRvIGBzZXQgcHJpbnQgZWxlbWVudHMnLCBhbmQKKyAgICAgIHRoZSBs YXN0IGJ5dGUgb2YgaXQgaXMgYSBudWxsLCB3ZSBkb24ndCBwcmludCB0aGF0LCBpbiB0cmFkaXRp b25hbCBDCitkaWZmIC0tZ2l0IGEvZ2RiL3AtdmFscHJpbnQuYyBiL2dkYi9wLXZhbHByaW50LmMK K2luZGV4IDRkMzliZWQuLmQwZGRlYmMgMTAwNjQ0CistLS0gYS9nZGIvcC12YWxwcmludC5jCisr KysgYi9nZGIvcC12YWxwcmludC5jCitAQCAtMzgsNiArMzgsNyBAQAorICNpbmNsdWRlICJwLWxh bmcuaCIKKyAjaW5jbHVkZSAiY3AtYWJpLmgiCisgI2luY2x1ZGUgImNwLXN1cHBvcnQuaCIKKysj aW5jbHVkZSAiZHdhcmYybG9jLmgiCisgDAogIAotQEAgLTI0MSwyNCArMjkwLDM0IEBAIGZpbmRf ZnVuY3Rpb25fYWRkciAoc3RydWN0IHZhbHVlICpmdW5jdGlvbiwgc3RydWN0IHR5cGUgKipyZXR2 YWxfdHlwZSkKLSAgICAgIHBhcnQgb2YgaXQuICAqLwogIAotICAgLyogRGV0ZXJtaW5lIGFkZHJl c3MgdG8gY2FsbC4gICovCi0tICBpZiAoY29kZSA9PSBUWVBFX0NPREVfRlVOQyB8fCBjb2RlID09 IFRZUEVfQ09ERV9NRVRIT0QpCi0tICAgIHsKLS0gICAgICBmdW5hZGRyID0gdmFsdWVfYWRkcmVz cyAoZnVuY3Rpb24pOwotLSAgICAgIHZhbHVlX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChmdHlw ZSk7Ci0tICAgIH0KLS0gIGVsc2UgaWYgKGNvZGUgPT0gVFlQRV9DT0RFX1BUUikKLSsgIGlmIChU WVBFX0NPREUgKGZ0eXBlKSA9PSBUWVBFX0NPREVfRlVOQwotKyAgICAgIHx8IFRZUEVfQ09ERSAo ZnR5cGUpID09IFRZUEVfQ09ERV9NRVRIT0QpCi0rICAgIGZ1bmFkZHIgPSB2YWx1ZV9hZGRyZXNz IChmdW5jdGlvbik7Ci0rICBlbHNlIGlmIChUWVBFX0NPREUgKGZ0eXBlKSA9PSBUWVBFX0NPREVf UFRSKQotICAgICB7Ci0gICAgICAgZnVuYWRkciA9IHZhbHVlX2FzX2FkZHJlc3MgKGZ1bmN0aW9u KTsKLSAgICAgICBmdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKGZ0eXBl KSk7Ci0gICAgICAgaWYgKFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09ERV9GVU5DCi0gCSAg fHwgVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQRV9DT0RFX01FVEhPRCkKLSsJZnVuYWRkciA9IGdk YmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIGZ1bmFkZHIsCi0rCQkJ CQkJICAgICAgJmN1cnJlbnRfdGFyZ2V0KTsKK0BAIC02OCw4ICs2OSwyNyBAQCBwYXNjYWxfdmFs X3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCisgICBz dHJ1Y3QgdHlwZSAqY2hhcl90eXBlOworICAgTE9OR0VTVCB2YWw7CisgICBDT1JFX0FERFIgYWRk cjsKKysgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOworKyAgc3RydWN0IHR5cGUgKnNhdmVkX3R5 cGUgPSB0eXBlOworKyAgQ09SRV9BRERSIHNhdmVkX2FkZHJlc3MgPSBhZGRyZXNzOworKyAgCisr ICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOworKyAgdHlwZSA9IG9i amVjdF9hZGRyZXNzX2dldF9kYXRhICh0eXBlLCAmYWRkcmVzcyk7CisrICBpZiAodHlwZSA9PSBO VUxMKQorKyAgICB7CisrICAgICAgZnB1dHNfZmlsdGVyZWQgKG9iamVjdF9hZGRyZXNzX2RhdGFf bm90X3ZhbGlkIChzYXZlZF90eXBlKSwgc3RyZWFtKTsKKysgICAgICBnZGJfZmx1c2ggKHN0cmVh bSk7CisrICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworKyAgICAgIHJldHVybiAwOwogKyAg ICB9Ci0rICBpZiAoVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQRV9DT0RFX0ZVTkMKLSsgICAgICB8 fCBUWVBFX0NPREUgKGZ0eXBlKSA9PSBUWVBFX0NPREVfTUVUSE9EKQorKyAgaWYgKGFkZHJlc3Mg IT0gc2F2ZWRfYWRkcmVzcykKICsgICAgewotKyAgICAgIHZhbHVlX3R5cGUgPSBUWVBFX1RBUkdF VF9UWVBFIChmdHlwZSk7Ci0rCi0rICAgICAgaWYgKFRZUEVfR05VX0lGVU5DIChmdHlwZSkpCi0g CXsKLS0JICBmdW5hZGRyID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2Ri YXJjaCwgZnVuYWRkciwKLS0JCQkJCQkJJmN1cnJlbnRfdGFyZ2V0KTsKLS0JICB2YWx1ZV90eXBl ID0gVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpOwotKwkgIGZ1bmFkZHIgPSBnbnVfaWZ1bmNfcmVz b2x2ZSAoZ2RiYXJjaCwgZnVuYWRkcik7Ci0rCi0rCSAgLyogU2tpcCBxdWVyeWluZyB0aGUgZnVu Y3Rpb24gc3ltYm9sIGlmIG5vIFJFVFZBTF9UWVBFIGhhcyBiZWVuCi0rCSAgICAgYXNrZWQgZm9y LiAgKi8KLSsJICBpZiAocmV0dmFsX3R5cGUpCi0rCSAgICB2YWx1ZV90eXBlID0gZmluZF9mdW5j dGlvbl9yZXR1cm5fdHlwZSAoZnVuYWRkcik7CisrICAgICAgc2l6ZV90IGxlbmd0aCA9IFRZUEVf TEVOR1RIICh0eXBlKTsKKyAKKy0gIENIRUNLX1RZUEVERUYgKHR5cGUpOworKyAgICAgIHZhbGFk ZHIgPSB4bWFsbG9jIChsZW5ndGgpOworKyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIChnZGJf Ynl0ZSAqKSB2YWxhZGRyKTsKKysgICAgICByZWFkX21lbW9yeSAoYWRkcmVzcywgKGdkYl9ieXRl ICopIHZhbGFkZHIsIGxlbmd0aCk7CisrICAgIH0KKyAgIHN3aXRjaCAoVFlQRV9DT0RFICh0eXBl KSkKKyAgICAgeworICAgICBjYXNlIFRZUEVfQ09ERV9BUlJBWToKK0BAIC0xMjUsOCArMTQ1LDkg QEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2 YWxhZGRyLAorIAkJeworIAkJICBpID0gMDsKKyAJCX0KKy0JICAgICAgdmFsX3ByaW50X2FycmF5 X2VsZW1lbnRzICh0eXBlLCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCBhZGRyZXNzLCBzdHJl YW0sCistCQkJCQlyZWN1cnNlLCBvcmlnaW5hbF92YWx1ZSwgb3B0aW9ucywgaSk7CisrCSAgICAg IHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc2F2ZWRfdHlwZSwgdmFsYWRkciArIGVtYmVkZGVk X29mZnNldCwKKysJCQkJCXNhdmVkX2FkZHJlc3MsIHN0cmVhbSwgcmVjdXJzZSwKKysJCQkJCW9y aWdpbmFsX3ZhbHVlLCBvcHRpb25zLCBpKTsKKyAJICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3Ry ZWFtLCAifSIpOworIAkgICAgfQorIAkgIGJyZWFrOworQEAgLTE2NCw2ICsxODUsNyBAQCBwYXNj YWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIs CisgCSAgLyogVHJ5IHRvIHByaW50IHdoYXQgZnVuY3Rpb24gaXQgcG9pbnRzIHRvLiAgKi8KKyAJ ICBwcmludF9hZGRyZXNzX2RlbWFuZ2xlIChnZGJhcmNoLCBhZGRyLCBzdHJlYW0sIGRlbWFuZ2xl KTsKKyAJICAvKiBSZXR1cm4gdmFsdWUgaXMgaXJyZWxldmFudCBleGNlcHQgZm9yIHN0cmluZyBw b2ludGVycy4gICovCisrCSAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworIAkgIHJldHVybiAoMCk7 CiAgCX0KKyAKK0BAIC0yNTIsNiArMjc0LDcgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5 cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAorICAgICAgIC8qIFJldHVybiBudW1i ZXIgb2YgY2hhcmFjdGVycyBwcmludGVkLCBpbmNsdWRpbmcgdGhlIHRlcm1pbmF0aW5nCisgCSAn XDAnIGlmIHdlIHJlYWNoZWQgdGhlIGVuZC4gIHZhbF9wcmludF9zdHJpbmcgdGFrZXMgY2FyZSBp bmNsdWRpbmcKKyAJIHRoZSB0ZXJtaW5hdGluZyAnXDAnIGlmIG5lY2Vzc2FyeS4gICovCisrICAg ICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworICAgICAgIHJldHVybiBpOworIAorICAgICAgIGJy ZWFrOworQEAgLTU1NCw2ICs1NzcsNyBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAq dHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCisgICAgICAgZXJyb3IgKF8oIkludmFsaWQg cGFzY2FsIHR5cGUgY29kZSAlZCBpbiBzeW1ib2wgdGFibGUuIiksIFRZUEVfQ09ERSAodHlwZSkp OwogICAgICB9Ci0tICBlbHNlIGlmIChjb2RlID09IFRZUEVfQ09ERV9JTlQpCi0rICBlbHNlIGlm IChUWVBFX0NPREUgKGZ0eXBlKSA9PSBUWVBFX0NPREVfSU5UKQotICAgICB7Ci0gICAgICAgLyog SGFuZGxlIHRoZSBjYXNlIG9mIGZ1bmN0aW9ucyBsYWNraW5nIGRlYnVnZ2luZyBpbmZvLgotICAg ICAgICAgIFRoZWlyIHZhbHVlcyBhcmUgY2hhcmFjdGVycyBzaW5jZSB0aGVpciBhZGRyZXNzZXMg YXJlIGNoYXIgKi8KLWRpZmYgLS1naXQgYS9nZGIvaW5mY21kLmMgYi9nZGIvaW5mY21kLmMKLWlu ZGV4IGM0Y2RiMDYuLmQyMTNmNmEgMTAwNjQ0Ci0tLS0gYS9nZGIvaW5mY21kLmMKLSsrKyBiL2dk Yi9pbmZjbWQuYwotQEAgLTgyMiw3ICs4MjIsNyBAQCBuZXh0aV9jb21tYW5kIChjaGFyICpjb3Vu dF9zdHJpbmcsIGludCBmcm9tX3R0eSkKLSAgIHN0ZXBfMSAoMSwgMSwgY291bnRfc3RyaW5nKTsK KyAgIGdkYl9mbHVzaCAoc3RyZWFtKTsKKysgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKKyAgIHJl dHVybiAoMCk7CiAgfQorIAwKK2RpZmYgLS1naXQgYS9nZGIvcGFyc2UuYyBiL2dkYi9wYXJzZS5j CitpbmRleCBjODg1YzZhLi5jYmY5YzY1IDEwMDY0NAorLS0tIGEvZ2RiL3BhcnNlLmMKKysrKyBi L2dkYi9wYXJzZS5jCitAQCAtNDg3LDkgKzQ4NywyMSBAQCB3cml0ZV9leHBfbXN5bWJvbCAoc3Ry dWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sKQorICAgcGMgPSBnZGJhcmNoX2NvbnZlcnRfZnJv bV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCBhZGRyLCAmY3VycmVudF90YXJnZXQpOworICAgaWYg KHBjICE9IGFkZHIpCisgICAgIHsKKysgICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKmlmdW5j X21zeW0gPSBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKHBjKTsKKysKKyAgICAgICAvKiBJ biB0aGlzIGNhc2UsIGFzc3VtZSB3ZSBoYXZlIGEgY29kZSBzeW1ib2wgaW5zdGVhZCBvZgorIAkg YSBkYXRhIHN5bWJvbC4gICovCistICAgICAgdHlwZSA9IG1zdF90ZXh0OworKworKyAgICAgIGlm IChpZnVuY19tc3ltICE9IE5VTEwgJiYgTVNZTUJPTF9UWVBFIChpZnVuY19tc3ltKSA9PSBtc3Rf dGV4dF9nbnVfaWZ1bmMKKysJICAmJiBTWU1CT0xfVkFMVUVfQUREUkVTUyAoaWZ1bmNfbXN5bSkg PT0gcGMpCisrCXsKKysJICAvKiBBIGZ1bmN0aW9uIGRlc2NyaXB0b3IgaGFzIGJlZW4gcmVzb2x2 ZWQgYnV0IFBDIGlzIHN0aWxsIGluIHRoZQorKwkgICAgIGdudS1pZnVuYyByZXNvbHZlciBib2R5 IChzdWNoIGFzIGJlY2F1c2UgaW5mZXJpb3IgZG9lcyBub3QgcnVuIHRvCisrCSAgICAgYmUgYWJs ZSB0byBjYWxsIGl0KS4gICovCisrCSAgdHlwZSA9IG1zdF90ZXh0X2dudV9pZnVuYzsKKysJfQor KyAgICAgIGVsc2UKKysJdHlwZSA9IG1zdF90ZXh0OworICAgICAgIHNlY3Rpb24gPSBOVUxMOwor ICAgICAgIGFkZHIgPSBwYzsKKyAgICAgfQorQEAgLTUyMSw2ICs1MzMsMTEgQEAgd3JpdGVfZXhw X21zeW1ib2wgKHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbCkKKyAgICAgICB3cml0ZV9l eHBfZWx0X3R5cGUgKG9iamZpbGVfdHlwZSAob2JqZmlsZSktPm5vZGVidWdfdGV4dF9zeW1ib2wp OworICAgICAgIGJyZWFrOwogIAotLXN0YXRpYyB2b2lkCi0rdm9pZAotIGRlbGV0ZV9sb25nam1w X2JyZWFrcG9pbnRfY2xlYW51cCAodm9pZCAqYXJnKQotIHsKLSAgIGludCB0aHJlYWQgPSAqIChp bnQgKikgYXJnOwotQEAgLTg2MiwxMCArODYyLDEzIEBAIHN0ZXBfMSAoaW50IHNraXBfc3Vicm91 dGluZXMsIGludCBzaW5nbGVfaW5zdCwgY2hhciAqY291bnRfc3RyaW5nKQorKyAgICBjYXNlIG1z dF90ZXh0X2dudV9pZnVuYzoKKysgICAgICB3cml0ZV9leHBfZWx0X3R5cGUgKG9iamZpbGVfdHlw ZSAob2JqZmlsZSkKKysJCQkJCSAgICAgICAtPm5vZGVidWdfdGV4dF9nbnVfaWZ1bmNfc3ltYm9s KTsKKysgICAgICBicmVhazsKKysKKyAgICAgY2FzZSBtc3RfZGF0YToKKyAgICAgY2FzZSBtc3Rf ZmlsZV9kYXRhOgorICAgICBjYXNlIG1zdF9ic3M6CitAQCAtNTI4LDYgKzU0NSwxMCBAQCB3cml0 ZV9leHBfbXN5bWJvbCAoc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sKQorICAgICAgIHdy aXRlX2V4cF9lbHRfdHlwZSAob2JqZmlsZV90eXBlIChvYmpmaWxlKS0+bm9kZWJ1Z19kYXRhX3N5 bWJvbCk7CisgICAgICAgYnJlYWs7CiAgCi0gICBpZiAoIXNpbmdsZV9pbnN0IHx8IHNraXBfc3Vi cm91dGluZXMpCQkvKiBsZWF2ZSBzaSBjb21tYW5kIGFsb25lICovCi0gICAgIHsKLSsgICAgICBz dHJ1Y3QgdGhyZWFkX2luZm8gKnRwID0gaW5mZXJpb3JfdGhyZWFkICgpOworKyAgICBjYXNlIG1z dF9zbG90X2dvdF9wbHQ6CisrICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChvYmpmaWxlX3R5cGUg KG9iamZpbGUpLT5ub2RlYnVnX2dvdF9wbHRfc3ltYm9sKTsKKysgICAgICBicmVhazsKICsKLSAg ICAgICBpZiAoaW5fdGhyZWFkX2xpc3QgKGluZmVyaW9yX3B0aWQpKQotICAJdGhyZWFkID0gcGlk X3RvX3RocmVhZF9pZCAoaW5mZXJpb3JfcHRpZCk7CisgICAgIGRlZmF1bHQ6CisgICAgICAgd3Jp dGVfZXhwX2VsdF90eXBlIChvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5ub2RlYnVnX3Vua25vd25f c3ltYm9sKTsKKyAgICAgICBicmVhazsKK0BAIC0xNDEyLDYgKzE0MzMsNyBAQCBwYXJzZXJfZnBy aW50ZiAoRklMRSAqeCwgY29uc3QgY2hhciAqeSwgLi4uKQogIAotICAgICAgIHNldF9sb25nam1w X2JyZWFrcG9pbnQgKHRocmVhZCk7Ci0rICAgICAgdHAtPmluaXRpYXRpbmdfZnJhbWUgPSBnZXRf ZnJhbWVfaWQgKGdldF9jdXJyZW50X2ZyYW1lICgpKTsKKyBpbnQKKyBvcGVyYXRvcl9jaGVja19z dGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKKysJCQkgaW50ICgqdHlw ZV9mdW5jKSAoc3RydWN0IHR5cGUgKnR5cGUsIHZvaWQgKmRhdGEpLAorIAkJCSBpbnQgKCpvYmpm aWxlX2Z1bmMpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKyAJCQkJCSAgICAgIHZvaWQgKmRh dGEpLAorIAkJCSB2b2lkICpkYXRhKQorQEAgLTE0NTMsNyArMTQ3NSw3IEBAIG9wZXJhdG9yX2No ZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAorIAkgICAgc3Ry dWN0IHR5cGUgKnR5cGUgPSBlbHRzW3BvcyArIDIgKyBhcmddLnR5cGU7CisgCSAgICBzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSA9IFRZUEVfT0JKRklMRSAodHlwZSk7CiAgCi0gICAgICAgbWFrZV9j bGVhbnVwIChkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAsICZ0aHJlYWQpOwotICAg ICB9Ci1AQCAtMTIxOSw2ICsxMjIyLDE1IEBAIHNpZ25hbF9jb21tYW5kIChjaGFyICpzaWdudW1f ZXhwLCBpbnQgZnJvbV90dHkpCi0gICBwcm9jZWVkICgoQ09SRV9BRERSKSAtMSwgb3Vyc2lnLCAw KTsKLSB9CistCSAgICBpZiAob2JqZmlsZSAmJiAoKm9iamZpbGVfZnVuYykgKG9iamZpbGUsIGRh dGEpKQorKwkgICAgaWYgKG9iamZpbGUgJiYgb2JqZmlsZV9mdW5jICYmICgqb2JqZmlsZV9mdW5j KSAob2JqZmlsZSwgZGF0YSkpCisgCSAgICAgIHJldHVybiAxOworIAkgIH0KKyAgICAgICB9CitA QCAtMTQ3MSw3ICsxNDkzLDggQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHBy ZXNzaW9uICpleHAsIGludCBwb3MsCiAgCi0rLyogQSBjb250aW51YXRpb24gY2FsbGJhY2sgZm9y IHVudGlsX25leHRfY29tbWFuZC4gICovCi0rCi0rc3RhdGljIHZvaWQKLSt1bnRpbF9uZXh0X2Nv bnRpbnVhdGlvbiAodm9pZCAqYXJnKQotK3sKLSsgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAgPSBh cmc7Ci0rICBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50ICh0cC0+bnVtKTsKLSt9Ci0rCi0gLyog UHJvY2VlZCB1bnRpbCB3ZSByZWFjaCBhIGRpZmZlcmVudCBzb3VyY2UgbGluZSB3aXRoIHBjIGdy ZWF0ZXIgdGhhbgotICAgIG91ciBjdXJyZW50IG9uZSBvciBleGl0IHRoZSBmdW5jdGlvbi4gIFdl IHNraXAgY2FsbHMgaW4gYm90aCBjYXNlcy4KKyAJLyogQ2hlY2sgb2JqZmlsZSB3aGVyZSB0aGUg dmFyaWFibGUgaXRzZWxmIGlzIHBsYWNlZC4KKyAJICAgU1lNQk9MX09CSl9TRUNUSU9OIChzeW1i b2wpIG1heSBiZSBOVUxMLiAgKi8KKy0JaWYgKCgqb2JqZmlsZV9mdW5jKSAoU1lNQk9MX1NZTVRB QiAoc3ltYm9sKS0+b2JqZmlsZSwgZGF0YSkpCisrCWlmIChvYmpmaWxlX2Z1bmMKKysJICAgICYm ICgqb2JqZmlsZV9mdW5jKSAoU1lNQk9MX1NZTVRBQiAoc3ltYm9sKS0+b2JqZmlsZSwgZGF0YSkp CisgCSAgcmV0dXJuIDE7CiAgCi1AQCAtMTIzNSw2ICsxMjQ3LDggQEAgdW50aWxfbmV4dF9jb21t YW5kIChpbnQgZnJvbV90dHkpCi0gICBzdHJ1Y3Qgc3ltYm9sICpmdW5jOwotICAgc3RydWN0IHN5 bXRhYl9hbmRfbGluZSBzYWw7Ci0gICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwID0gaW5mZXJpb3Jf dGhyZWFkICgpOwotKyAgaW50IHRocmVhZCA9IHRwLT5udW07Ci0rICBzdHJ1Y3QgY2xlYW51cCAq b2xkX2NoYWluOworIAkvKiBDaGVjayBvYmpmaWxlIHdoZXJlIGlzIHBsYWNlZCB0aGUgY29kZSB0 b3VjaGluZyB0aGUgdmFyaWFibGUuICAqLworQEAgLTE0ODQsMjQgKzE1MDcsMjcgQEAgb3BlcmF0 b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCiAgCi0g ICBjbGVhcl9wcm9jZWVkX3N0YXR1cyAoKTsKLSAgIHNldF9zdGVwX2ZyYW1lICgpOwotQEAgLTEy NzAsNyArMTI4NCwxOSBAQCB1bnRpbF9uZXh0X2NvbW1hbmQgKGludCBmcm9tX3R0eSkKKyAgIC8q IEludm9rZSBjYWxsYmFja3MgZm9yIFRZUEUgYW5kIE9CSkZJTEUgaWYgdGhleSB3ZXJlIHNldCBh cyBub24tTlVMTC4gICovCiAgCi0gICB0cC0+c3RlcF9tdWx0aSA9IDA7CQkvKiBPbmx5IG9uZSBj YWxsIHRvIHByb2NlZWQgKi8KKy0gIGlmICh0eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZSkKKysg IGlmICh0eXBlICYmIHR5cGVfZnVuYyAmJiAoKnR5cGVfZnVuYykgKHR5cGUsIGRhdGEpKQorKyAg ICByZXR1cm4gMTsKKysgIGlmICh0eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZSkgJiYgb2JqZmls ZV9mdW5jCisgICAgICAgJiYgKCpvYmpmaWxlX2Z1bmMpIChUWVBFX09CSkZJTEUgKHR5cGUpLCBk YXRhKSkKKyAgICAgcmV0dXJuIDE7CistICBpZiAob2JqZmlsZSAmJiAoKm9iamZpbGVfZnVuYykg KG9iamZpbGUsIGRhdGEpKQorKyAgaWYgKG9iamZpbGUgJiYgb2JqZmlsZV9mdW5jICYmICgqb2Jq ZmlsZV9mdW5jKSAob2JqZmlsZSwgZGF0YSkpCisgICAgIHJldHVybiAxOwogIAotKyAgc2V0X2xv bmdqbXBfYnJlYWtwb2ludCAodGhyZWFkKTsKLSsgIHRwLT5pbml0aWF0aW5nX2ZyYW1lID0gZ2V0 X2ZyYW1lX2lkIChmcmFtZSk7Ci0rICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKGRlbGV0ZV9s b25nam1wX2JyZWFrcG9pbnRfY2xlYW51cCwgJnRocmVhZCk7Ci0rCi0gICBwcm9jZWVkICgoQ09S RV9BRERSKSAtMSwgVEFSR0VUX1NJR05BTF9ERUZBVUxULCAxKTsKLSsKLSsgIGlmICh0YXJnZXRf Y2FuX2FzeW5jX3AgKCkgJiYgaXNfcnVubmluZyAoaW5mZXJpb3JfcHRpZCkpCi0rICAgIHsKLSsg ICAgICBkaXNjYXJkX2NsZWFudXBzIChvbGRfY2hhaW4pOwotKyAgICAgIGFkZF9jb250aW51YXRp b24gKHRwLCB1bnRpbF9uZXh0X2NvbnRpbnVhdGlvbiwgdHAsIE5VTEwpOwotKyAgICB9Ci0rICBl bHNlCi0rICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOworICAgcmV0dXJuIDA7CiAgfQogIAot IHN0YXRpYyB2b2lkCi1AQCAtMTQ2Myw2ICsxNDg5LDcgQEAgZmluaXNoX2NvbW1hbmRfY29udGlu dWF0aW9uICh2b2lkICphcmcpCi0gICBpZiAoYnMgIT0gTlVMTCAmJiB0cC0+cHJvY2VlZF90b19m aW5pc2gpCi0gICAgIG9ic2VydmVyX25vdGlmeV9ub3JtYWxfc3RvcCAoYnMsIDEgLyogcHJpbnQg ZnJhbWUgKi8pOwotICAgZGVsZXRlX2JyZWFrcG9pbnQgKGEtPmJyZWFrcG9pbnQpOwotKyAgZGVs ZXRlX2xvbmdqbXBfYnJlYWtwb2ludCAoaW5mZXJpb3JfdGhyZWFkICgpLT5udW0pOwotIH0KKy0v KiBDYWxsIE9CSkZJTEVfRlVOQyBmb3IgYW55IFRZUEUgYW5kIE9CSkZJTEUgZm91bmQgYmVpbmcg cmVmZXJlbmNlZCBieSBFWFAuCistICAgVGhlIGZ1bmN0aW9ucyBhcmUgbmV2ZXIgY2FsbGVkIHdp dGggTlVMTCBPQkpGSUxFLiAgRnVuY3Rpb25zIGdldCBwYXNzZWQgYW4KKy0gICBhcmJpdHJhcnkg Y2FsbGVyIHN1cHBsaWVkIERBVEEgcG9pbnRlci4gIElmIGFueSBvZiB0aGUgZnVuY3Rpb25zIHJl dHVybnMKKy0gICBub24temVybyB2YWx1ZSB0aGVuIChhbnkgb3RoZXIpIG5vbi16ZXJvIHZhbHVl IGlzIGltbWVkaWF0ZWx5IHJldHVybmVkIHRvCistICAgdGhlIGNhbGxlci4gIE90aGVyd2lzZSB6 ZXJvIGlzIHJldHVybmVkIGFmdGVyIGl0ZXJhdGluZyB0aHJvdWdoIHdob2xlIEVYUC4KKy0gICAq LworKy8qIENhbGwgVFlQRV9GVU5DIGFuZCBPQkpGSUxFX0ZVTkMgZm9yIGFueSBUWVBFIGFuZCBP QkpGSUxFIGZvdW5kIGJlaW5nCisrICAgcmVmZXJlbmNlZCBieSBFWFAuICBUaGUgZnVuY3Rpb25z IGFyZSBuZXZlciBjYWxsZWQgd2l0aCBOVUxMIFRZUEUgb3IgTlVMTAorKyAgIE9CSkZJTEUuICBG dW5jdGlvbnMgZ2V0IHBhc3NlZCBhbiBhcmJpdHJhcnkgY2FsbGVyIHN1cHBsaWVkIERBVEEgcG9p bnRlci4KKysgICBJZiBhbnkgb2YgdGhlIGZ1bmN0aW9ucyByZXR1cm5zIG5vbi16ZXJvIHZhbHVl IHRoZW4gKGFueSBvdGhlcikgbm9uLXplcm8KKysgICB2YWx1ZSBpcyBpbW1lZGlhdGVseSByZXR1 cm5lZCB0byB0aGUgY2FsbGVyLiAgT3RoZXJ3aXNlIHplcm8gaXMgcmV0dXJuZWQKKysgICBhZnRl ciBpdGVyYXRpbmcgdGhyb3VnaCB3aG9sZSBFWFAuICAqLwogIAotIHN0YXRpYyB2b2lkCi1AQCAt MTU0Niw2ICsxNTczLDcgQEAgZmluaXNoX2ZvcndhcmQgKHN0cnVjdCBzeW1ib2wgKmZ1bmN0aW9u LCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnJlYWtw b2ludDsKLSAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47Ci0gICBzdHJ1Y3QgZmluaXNoX2Nv bW1hbmRfY29udGludWF0aW9uX2FyZ3MgKmNhcmdzOwotKyAgaW50IHRocmVhZCA9IHRwLT5udW07 Cisgc3RhdGljIGludAorIGV4cF9pdGVyYXRlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorKwkg ICAgIGludCAoKnR5cGVfZnVuYykgKHN0cnVjdCB0eXBlICp0eXBlLCB2b2lkICpkYXRhKSwKKyAJ ICAgICBpbnQgKCpvYmpmaWxlX2Z1bmMpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAq ZGF0YSksCisgCSAgICAgdm9pZCAqZGF0YSkKKyB7CitAQCAtMTUxNiw3ICsxNTQyLDkgQEAgZXhw X2l0ZXJhdGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAsCiAgCi0gICBzYWwgPSBmaW5kX3BjX2xp bmUgKGdldF9mcmFtZV9wYyAoZnJhbWUpLCAwKTsKLSAgIHNhbC5wYyA9IGdldF9mcmFtZV9wYyAo ZnJhbWUpOwotQEAgLTE1NTYsNiArMTU4NCwxMCBAQCBmaW5pc2hfZm9yd2FyZCAoc3RydWN0IHN5 bWJvbCAqZnVuY3Rpb24sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyAgICAgICBwb3MgPSBl bmRwb3MgLSBvcGxlbjsKKyAgICAgICBpZiAoZXhwLT5sYW5ndWFnZV9kZWZuLT5sYV9leHBfZGVz Yy0+b3BlcmF0b3JfY2hlY2sgKGV4cCwgcG9zLAorLQkJCQkJCQkgICBvYmpmaWxlX2Z1bmMsIGRh dGEpKQorKwkJCQkJCQkgICB0eXBlX2Z1bmMsCisrCQkJCQkJCSAgIG9iamZpbGVfZnVuYywKKysJ CQkJCQkJICAgZGF0YSkpCisgCXJldHVybiAxOwogIAotICAgb2xkX2NoYWluID0gbWFrZV9jbGVh bnVwX2RlbGV0ZV9icmVha3BvaW50IChicmVha3BvaW50KTsKKyAgICAgICBlbmRwb3MgPSBwb3M7 CitAQCAtMTU0Nyw3ICsxNTc1LDI2IEBAIGV4cF91c2VzX29iamZpbGUgKHN0cnVjdCBleHByZXNz aW9uICpleHAsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorIHsKKyAgIGdkYl9hc3NlcnQgKG9i amZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xpbmsgPT0gTlVMTCk7CiAgCi0rICBz ZXRfbG9uZ2ptcF9icmVha3BvaW50ICh0aHJlYWQpOwotKyAgdHAtPmluaXRpYXRpbmdfZnJhbWUg PSBnZXRfZnJhbWVfaWQgKGZyYW1lKTsKLSsgIG1ha2VfY2xlYW51cCAoZGVsZXRlX2xvbmdqbXBf YnJlYWtwb2ludF9jbGVhbnVwLCAmdGhyZWFkKTsKKy0gIHJldHVybiBleHBfaXRlcmF0ZSAoZXhw LCBleHBfdXNlc19vYmpmaWxlX2l0ZXIsIG9iamZpbGUpOworKyAgcmV0dXJuIGV4cF9pdGVyYXRl IChleHAsIE5VTEwsIGV4cF91c2VzX29iamZpbGVfaXRlciwgb2JqZmlsZSk7CisrfQogKwotICAg dHAtPnByb2NlZWRfdG9fZmluaXNoID0gMTsgICAgLyogV2Ugd2FudCBzdG9wX3JlZ2lzdGVycywg cGxlYXNlLi4uICAqLwotICAgY2FyZ3MgPSB4bWFsbG9jIChzaXplb2YgKCpjYXJncykpOwotIAot ZGlmZiAtLWdpdCBhL2dkYi9pbmZlcmlvci5oIGIvZ2RiL2luZmVyaW9yLmgKLWluZGV4IDVhYmVj NjguLmUzMDkyNzcgMTAwNjQ0Ci0tLS0gYS9nZGIvaW5mZXJpb3IuaAotKysrIGIvZ2RiL2luZmVy aW9yLmgKLUBAIC0yOTEsNiArMjkxLDggQEAgZXh0ZXJuIHZvaWQgaW50ZXJydXB0X3RhcmdldF9j b21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpOwotIAotIGV4dGVybiB2b2lkIGludGVy cnVwdF90YXJnZXRfMSAoaW50IGFsbF90aHJlYWRzKTsKLSAKLStleHRlcm4gdm9pZCBkZWxldGVf bG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAgKHZvaWQgKmFyZyk7CisrLyogSGVscGVyIGZvciBl eHBfdHlwZXNfbWFya191c2VkLiAgKi8KICsKLSBleHRlcm4gdm9pZCBkZXRhY2hfY29tbWFuZCAo Y2hhciAqLCBpbnQpOwotIAotIGV4dGVybiB2b2lkIG5vdGljZV9uZXdfaW5mZXJpb3IgKHB0aWRf dCwgaW50LCBpbnQpOwotZGlmZiAtLWdpdCBhL2dkYi9pbmZydW4uYyBiL2dkYi9pbmZydW4uYwot aW5kZXggNTdmMmFiOC4uNTc2MmE3ZiAxMDA2NDQKLS0tLSBhL2dkYi9pbmZydW4uYwotKysrIGIv Z2RiL2luZnJ1bi5jCi1AQCAtNDUsNiArNDUsOCBAQAotICNpbmNsdWRlICJsYW5ndWFnZS5oIgot ICNpbmNsdWRlICJzb2xpYi5oIgotICNpbmNsdWRlICJtYWluLmgiCi0rI2luY2x1ZGUgImRpY3Rp b25hcnkuaCIKLSsjaW5jbHVkZSAiYmxvY2suaCIKLSAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgot ICNpbmNsdWRlICJtaS9taS1jb21tb24uaCIKLSAjaW5jbHVkZSAiZXZlbnQtdG9wLmgiCi1AQCAt MzY3LDYgKzM2OSw3IEBAIGZvbGxvd19mb3JrICh2b2lkKQotICAgICAgcGFyZW50IHRocmVhZCBz dHJ1Y3R1cmUncyBydW4gY29udHJvbCByZWxhdGVkIGZpZWxkcywgbm90IGp1c3QgdGhlc2UuCi0g ICAgICBJbml0aWFsaXplZCB0byBhdm9pZCAibWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCIgd2Fy bmluZ3MgZnJvbSBnY2MuICAqLwotICAgc3RydWN0IGJyZWFrcG9pbnQgKnN0ZXBfcmVzdW1lX2Jy ZWFrcG9pbnQgPSBOVUxMOwotKyAgc3RydWN0IGJyZWFrcG9pbnQgKmV4Y2VwdGlvbl9yZXN1bWVf YnJlYWtwb2ludCA9IE5VTEw7Ci0gICBDT1JFX0FERFIgc3RlcF9yYW5nZV9zdGFydCA9IDA7Ci0g ICBDT1JFX0FERFIgc3RlcF9yYW5nZV9lbmQgPSAwOwotICAgc3RydWN0IGZyYW1lX2lkIHN0ZXBf ZnJhbWVfaWQgPSB7IDAgfTsKLUBAIC00MTksNiArNDIyLDggQEAgZm9sbG93X2ZvcmsgKHZvaWQp Ci0gCSAgICBzdGVwX3JhbmdlX3N0YXJ0ID0gdHAtPnN0ZXBfcmFuZ2Vfc3RhcnQ7Ci0gCSAgICBz dGVwX3JhbmdlX2VuZCA9IHRwLT5zdGVwX3JhbmdlX2VuZDsKLSAJICAgIHN0ZXBfZnJhbWVfaWQg PSB0cC0+c3RlcF9mcmFtZV9pZDsKLSsJICAgIGV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludAot KwkgICAgICA9IGNsb25lX21vbWVudGFyeV9icmVha3BvaW50ICh0cC0+ZXhjZXB0aW9uX3Jlc3Vt ZV9icmVha3BvaW50KTsKLSAKLSAJICAgIC8qIEZvciBub3csIGRlbGV0ZSB0aGUgcGFyZW50J3Mg c3IgYnJlYWtwb2ludCwgb3RoZXJ3aXNlLAotIAkgICAgICAgcGFyZW50L2NoaWxkIHNyIGJyZWFr cG9pbnRzIGFyZSBjb25zaWRlcmVkIGR1cGxpY2F0ZXMsCi1AQCAtNDI5LDYgKzQzNCw3IEBAIGZv bGxvd19mb3JrICh2b2lkKQotIAkgICAgdHAtPnN0ZXBfcmFuZ2Vfc3RhcnQgPSAwOwotIAkgICAg dHAtPnN0ZXBfcmFuZ2VfZW5kID0gMDsKLSAJICAgIHRwLT5zdGVwX2ZyYW1lX2lkID0gbnVsbF9m cmFtZV9pZDsKLSsJICAgIGRlbGV0ZV9leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgKHRwKTsK LSAJICB9Ci0gCi0gCXBhcmVudCA9IGluZmVyaW9yX3B0aWQ7Ci1AQCAtNDcwLDYgKzQ3Niw4IEBA IGZvbGxvd19mb3JrICh2b2lkKQotIAkJICAgIHRwLT5zdGVwX3JhbmdlX3N0YXJ0ID0gc3RlcF9y YW5nZV9zdGFydDsKLSAJCSAgICB0cC0+c3RlcF9yYW5nZV9lbmQgPSBzdGVwX3JhbmdlX2VuZDsK LSAJCSAgICB0cC0+c3RlcF9mcmFtZV9pZCA9IHN0ZXBfZnJhbWVfaWQ7Ci0rCQkgICAgdHAtPmV4 Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludAotKwkJICAgICAgPSBleGNlcHRpb25fcmVzdW1lX2Jy ZWFrcG9pbnQ7Ci0gCQkgIH0KLSAJCWVsc2UKLSAJCSAgewotQEAgLTUyMyw2ICs1MzEsOSBAQCBm b2xsb3dfaW5mZXJpb3JfcmVzZXRfYnJlYWtwb2ludHMgKHZvaWQpCi0gICBpZiAodHAtPnN0ZXBf cmVzdW1lX2JyZWFrcG9pbnQpCi0gICAgIGJyZWFrcG9pbnRfcmVfc2V0X3RocmVhZCAodHAtPnN0 ZXBfcmVzdW1lX2JyZWFrcG9pbnQpOwotIAotKyAgaWYgKHRwLT5leGNlcHRpb25fcmVzdW1lX2Jy ZWFrcG9pbnQpCi0rICAgIGJyZWFrcG9pbnRfcmVfc2V0X3RocmVhZCAodHAtPmV4Y2VwdGlvbl9y ZXN1bWVfYnJlYWtwb2ludCk7Cisrc3RhdGljIGludAorK2V4cF90eXBlc19tYXJrX3VzZWRfaXRl ciAoc3RydWN0IHR5cGUgKnR5cGUsIHZvaWQgKnVudXNlZCkKKyt7CisrICB0eXBlX21hcmtfdXNl ZCAodHlwZSk7CiArCi0gICAvKiBSZWluc2VydCBhbGwgYnJlYWtwb2ludHMgaW4gdGhlIGNoaWxk LiAgVGhlIHVzZXIgbWF5IGhhdmUgc2V0Ci0gICAgICBicmVha3BvaW50cyBhZnRlciBjYXRjaGlu ZyB0aGUgZm9yaywgaW4gd2hpY2ggY2FzZSB0aG9zZQotICAgICAgd2VyZSBuZXZlciBzZXQgaW4g dGhlIGNoaWxkLCBidXQgb25seSBpbiB0aGUgcGFyZW50LiAgVGhpcyBtYWtlcwotQEAgLTc2MCw2 ICs3NzEsNyBAQCBmb2xsb3dfZXhlYyAocHRpZF90IHBpZCwgY2hhciAqZXhlY2RfcGF0aG5hbWUp Ci0gICAvKiBJZiB0aGVyZSB3YXMgb25lLCBpdCdzIGdvbmUgbm93LiAgV2UgY2Fubm90IHRydWx5 IHN0ZXAtdG8tbmV4dAotICAgICAgc3RhdGVtZW50IHRocm91Z2ggYW4gZXhlYygpLiAqLwotICAg dGgtPnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgPSBOVUxMOwotKyAgdGgtPmV4Y2VwdGlvbl9yZXN1 bWVfYnJlYWtwb2ludCA9IE5VTEw7Ci0gICB0aC0+c3RlcF9yYW5nZV9zdGFydCA9IDA7Ci0gICB0 aC0+c3RlcF9yYW5nZV9lbmQgPSAwOworKyAgLyogQ29udGludWUgdGhlIHRyYXZlcnNhbC4gICov CisrICByZXR1cm4gMDsKKyt9CisrCisrLyogQ2FsbCB0eXBlX21hcmtfdXNlZCBmb3IgYW55IHR5 cGUgY29udGFpbmVkIGluIEVYUC4gICovCisrCisrdm9pZAorK2V4cF90eXBlc19tYXJrX3VzZWQg KHN0cnVjdCBleHByZXNzaW9uICpleHApCisreworKyAgZXhwX2l0ZXJhdGUgKGV4cCwgZXhwX3R5 cGVzX21hcmtfdXNlZF9pdGVyLCBOVUxMLCBOVUxMKTsKKyB9CiAgCi1AQCAtMjE5MCw2ICsyMjAy LDggQEAgc3RhdGljIHZvaWQgaW5zZXJ0X3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnRfYXRfc2FsIChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAJCQkJCQkgIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUg c3Jfc2FsLAotIAkJCQkJCSAgc3RydWN0IGZyYW1lX2lkIHNyX2lkKTsKLSBzdGF0aWMgdm9pZCBp bnNlcnRfbG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKiwgQ09SRV9B RERSKTsKLStzdGF0aWMgdm9pZCBjaGVja19leGNlcHRpb25fcmVzdW1lIChzdHJ1Y3QgZXhlY3V0 aW9uX2NvbnRyb2xfc3RhdGUgKiwKLSsJCQkJICAgIHN0cnVjdCBmcmFtZV9pbmZvICosIHN0cnVj dCBzeW1ib2wgKik7Cisgdm9pZAorZGlmZiAtLWdpdCBhL2dkYi9wYXJzZXItZGVmcy5oIGIvZ2Ri L3BhcnNlci1kZWZzLmgKK2luZGV4IGJiNzlhZTEuLmZiYmQ2MDAgMTAwNjQ0CistLS0gYS9nZGIv cGFyc2VyLWRlZnMuaAorKysrIGIvZ2RiL3BhcnNlci1kZWZzLmgKK0BAIC0xOTQsNiArMTk0LDgg QEAgZXh0ZXJuIHZvaWQgb3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkIChjb25zdCBzdHJ1Y3QgZXhw cmVzc2lvbiAqLCBpbnQsIGludCAqLAorIAkJCQkgICAgICBpbnQgKik7CisgCisgZXh0ZXJuIGlu dCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBv cywKKysJCQkJICAgIGludCAoKnR5cGVfZnVuYykgKHN0cnVjdCB0eXBlICp0eXBlLAorKwkJCQkJ CSAgICAgIHZvaWQgKmRhdGEpLAorIAkJCQkgICAgaW50ICgqb2JqZmlsZV9mdW5jKQorIAkJCQkg ICAgICAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdGEpLAorIAkJCQkgICAgdm9p ZCAqZGF0YSk7CitAQCAtMjg1LDYgKzI4Nyw3IEBAIHN0cnVjdCBleHBfZGVzY3JpcHRvcgorICAg ICAgICB2YWx1ZSBzaG91bGQgYmUgaW1tZWRpYXRlbHkgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4g IE90aGVyd2lzZSB6ZXJvCisgICAgICAgIHNob3VsZCBiZSByZXR1cm5lZC4gICovCisgICAgIGlu dCAoKm9wZXJhdG9yX2NoZWNrKSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKKysJ CQkgICBpbnQgKCp0eXBlX2Z1bmMpIChzdHJ1Y3QgdHlwZSAqdHlwZSwgdm9pZCAqZGF0YSksCisg CQkJICAgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgCQkJ CQkJdm9pZCAqZGF0YSksCisgCQkJICAgdm9pZCAqZGF0YSk7CitAQCAtMzIzLDQgKzMyNiw4IEBA IGV4dGVybiB2b2lkIHBhcnNlcl9mcHJpbnRmIChGSUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKSBB VFRSSUJVVEVfUFJJTlRGICgyLCAzKTsKICAKLSBzdGF0aWMgdm9pZCBzdG9wX3N0ZXBwaW5nIChz dHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcyk7Ci0gc3RhdGljIHZvaWQgcHJlcGFy ZV90b193YWl0IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcyk7Ci1AQCAtMjMx Myw2ICsyMzI3LDcgQEAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnRfY2FsbGJhY2sgKHN0 cnVjdCB0aHJlYWRfaW5mbyAqaW5mbywgdm9pZCAqZGF0YSkKLSAgICAgcmV0dXJuIDA7CisgZXh0 ZXJuIGludCBleHBfdXNlc19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSk7CiAgCi0gICBkZWxldGVfc3RlcF9yZXN1bWVfYnJlYWtwb2ludCAo aW5mbyk7Ci0rICBkZWxldGVfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChpbmZvKTsKLSAg IHJldHVybiAwOworK2V4dGVybiBpbnQgZXhwX3VzZXNfb2JqZmlsZSAoc3RydWN0IGV4cHJlc3Np b24gKmV4cCwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOworKworK2V4dGVybiB2b2lkIGV4cF90 eXBlc19tYXJrX3VzZWQgKHN0cnVjdCBleHByZXNzaW9uICpleHApOworKworICNlbmRpZiAvKiBQ QVJTRVJfREVGU19IICovCitkaWZmIC0tZ2l0IGEvZ2RiL3BwYy1saW51eC1uYXQuYyBiL2dkYi9w cGMtbGludXgtbmF0LmMKK2luZGV4IGU4ZDk2ZjYuLjhiZjA5N2MgMTAwNjQ0CistLS0gYS9nZGIv cHBjLWxpbnV4LW5hdC5jCisrKysgYi9nZGIvcHBjLWxpbnV4LW5hdC5jCitAQCAtMjAxMCw2ICsy MDEwLDI0IEBAIHBwY19saW51eF9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGlu dCBsZW4sIGludCBydywKKyAgIHJldHVybiByZXQ7CiAgfQogIAotQEAgLTIzMzcsNiArMjM1Miw3 IEBAIGRlbGV0ZV9zdGVwX3RocmVhZF9zdGVwX3Jlc3VtZV9icmVha3BvaW50ICh2b2lkKQotICAg ICAgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAgPSBpbmZlcmlvcl90aHJlYWQgKCk7Ci0gCi0gICAg ICAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKHRwKTsKLSsgICAgICBkZWxldGVfZXhj ZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50ICh0cCk7Ci0gICAgIH0KKysvKiBTZWUgdGFyZ2V0X2Rl dGFjaF93YXRjaHBvaW50cy4gIERvIG5vdCB1c2Ugd3JhcHBlcgorKyAgIHBwY19saW51eF9yZW1v dmVfd2F0Y2hwb2ludCBhcyBpdCB3b3VsZCBtb2RpZnkgdGhlIHJlZ2lzdGVyIGNhY2hlCisrICAg KHNhdmVkX2RhYnJfdmFsdWUpLiAgKi8KKysKKytzdGF0aWMgaW50CisrcHBjX2xpbnV4X2RldGFj aF93YXRjaHBvaW50cyAodm9pZCkKKyt7CisrICBwaWRfdCB0aWQ7CisrCisrICB0aWQgPSBUSURH RVQgKGluZmVyaW9yX3B0aWQpOworKyAgaWYgKHRpZCA9PSAwKQorKyAgICB0aWQgPSBQSURHRVQg KGluZmVyaW9yX3B0aWQpOworKworKyAgaWYgKHB0cmFjZSAoUFRSQUNFX1NFVF9ERUJVR1JFRywg dGlkLCBOVUxMLCBOVUxMKSA8IDApCisrICAgIHJldHVybiAtMTsKKysgIHJldHVybiAwOworK30K KysKKyBzdGF0aWMgdm9pZAorIHBwY19saW51eF9uZXdfdGhyZWFkIChwdGlkX3QgcHRpZCkKKyB7 CitAQCAtMjM0OSw2ICsyMzY3LDcgQEAgX2luaXRpYWxpemVfcHBjX2xpbnV4X25hdCAodm9pZCkK KyAgIHQtPnRvX3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCA9IHBwY19saW51eF9yZWdpb25f b2tfZm9yX2h3X3dhdGNocG9pbnQ7CisgICB0LT50b19pbnNlcnRfd2F0Y2hwb2ludCA9IHBwY19s aW51eF9pbnNlcnRfd2F0Y2hwb2ludDsKKyAgIHQtPnRvX3JlbW92ZV93YXRjaHBvaW50ID0gcHBj X2xpbnV4X3JlbW92ZV93YXRjaHBvaW50OworKyAgdC0+dG9fZGV0YWNoX3dhdGNocG9pbnRzID0g cHBjX2xpbnV4X2RldGFjaF93YXRjaHBvaW50czsKKyAgIHQtPnRvX3N0b3BwZWRfYnlfd2F0Y2hw b2ludCA9IHBwY19saW51eF9zdG9wcGVkX2J5X3dhdGNocG9pbnQ7CisgICB0LT50b19zdG9wcGVk X2RhdGFfYWRkcmVzcyA9IHBwY19saW51eF9zdG9wcGVkX2RhdGFfYWRkcmVzczsKKyAgIHQtPnRv X3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgPSBwcGNfbGludXhfd2F0Y2hwb2ludF9hZGRy X3dpdGhpbl9yYW5nZTsKK2RpZmYgLS1naXQgYS9nZGIvcHJpbnRjbWQuYyBiL2dkYi9wcmludGNt ZC5jCitpbmRleCA1ZmZhMDk5Li41OGQ5Yzc5IDEwMDY0NAorLS0tIGEvZ2RiL3ByaW50Y21kLmMK KysrKyBiL2dkYi9wcmludGNtZC5jCitAQCAtOTcxLDYgKzk3MSwxMSBAQCBwcmludF9jb21tYW5k XzEgKGNoYXIgKmV4cCwgaW50IGluc3BlY3QsIGludCB2b2lkcHJpbnQpCiAgICBlbHNlCi0gICAg IC8qIEluIGFsbC1zdG9wIG1vZGUsIGRlbGV0ZSBhbGwgc3RlcC1yZXN1bWUgYW5kIGxvbmdqbXAt cmVzdW1lCi1AQCAtMzI0MSw2ICszMjU3LDEwIEBAIGhhbmRsZV9pbmZlcmlvcl9ldmVudCAoc3Ry dWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpCi0gCi0gICAgICAgc3RvcF9wYyA9IHJl Z2NhY2hlX3JlYWRfcGMgKGdldF90aHJlYWRfcmVnY2FjaGUgKGVjcy0+cHRpZCkpOworICAgICB2 YWwgPSBhY2Nlc3NfdmFsdWVfaGlzdG9yeSAoMCk7CiAgCi0rICAgICAgLyogQ2xlYXIgV0FUQ0hQ T0lOVF9UUklHR0VSRUQgdmFsdWVzIGZyb20gcHJldmlvdXMgc3RvcCB3aGljaCBjb3VsZAotKwkg Y29uZnVzZSBicHN0YXRfc3RvcF9zdGF0dXMgYW5kIGJwc3RhdF9leHBsYWluc19zaWduYWwuICAq LwotKyAgICAgIHdhdGNocG9pbnRzX3RyaWdnZXJlZCAoJmVjcy0+d3MpOworKyAgLyogRG8gbm90 IHRyeSB0byBPQkpFQ1RfQUREUkVTU19TRVQgaGVyZSBhbnl0aGluZy4gIFdlIGFyZSBpbnRlcmVz dGVkIGluIHRoZQorKyAgICAgc291cmNlIHZhcmlhYmxlIGJhc2UgYWRkcmVzc2VzIGFzIGZvdW5k IGJ5IFJFQURfVkFSX1ZBTFVFLiAgVGhlIHZhbHVlIGhlcmUKKysgICAgIGNhbiBiZSBhbHJlYWR5 IGEgY2FsY3VsYXRlZCBleHByZXNzaW9uIGFkZHJlc3MgaW5hcHByb3ByaWF0ZSBmb3IKKysgICAg IERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MuICAqLwogKwotICAgICAgIGVjcy0+ZXZlbnRfdGhy ZWFkLT5zdG9wX2Jwc3RhdAotIAk9IGJwc3RhdF9zdG9wX3N0YXR1cyAoZ2V0X3JlZ2NhY2hlX2Fz cGFjZSAoZ2V0X2N1cnJlbnRfcmVnY2FjaGUgKCkpLAotIAkJCSAgICAgIHN0b3BfcGMsIGVjcy0+ cHRpZCk7Ci1AQCAtMzMyOCw2ICszMzQ4LDEwIEBAIGhhbmRsZV9pbmZlcmlvcl9ldmVudCAoc3Ry dWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpCi0gCi0gICAgICAgc3RvcF9wYyA9IHJl Z2NhY2hlX3JlYWRfcGMgKGdldF90aHJlYWRfcmVnY2FjaGUgKGVjcy0+cHRpZCkpOwotIAotKyAg ICAgIC8qIENsZWFyIFdBVENIUE9JTlRfVFJJR0dFUkVEIHZhbHVlcyBmcm9tIHByZXZpb3VzIHN0 b3Agd2hpY2ggY291bGQKLSsJIGNvbmZ1c2UgYnBzdGF0X3N0b3Bfc3RhdHVzIGFuZCBicHN0YXRf ZXhwbGFpbnNfc2lnbmFsLiAgKi8KLSsgICAgICB3YXRjaHBvaW50c190cmlnZ2VyZWQgKCZlY3Mt PndzKTsKKyAgIGlmICh2b2lkcHJpbnQgfHwgKHZhbCAmJiB2YWx1ZV90eXBlICh2YWwpICYmCisg CQkgICAgVFlQRV9DT0RFICh2YWx1ZV90eXBlICh2YWwpKSAhPSBUWVBFX0NPREVfVk9JRCkpCisg ICAgIHsKK0BAIC0xNDcxLDYgKzE0NzYsMjIgQEAgeF9jb21tYW5kIChjaGFyICpleHAsIGludCBm cm9tX3R0eSkKKyAJc2V0X2ludGVybmFsdmFyIChsb29rdXBfaW50ZXJuYWx2YXIgKCJfXyIpLCBs YXN0X2V4YW1pbmVfdmFsdWUpOworICAgICB9CisgfQogKwotICAgICAgIC8qIERvIHdoYXRldmVy IGlzIG5lY2Vzc2FyeSB0byB0aGUgcGFyZW50IGJyYW5jaCBvZiB0aGUgdmZvcmsuICAqLwotICAg ICAgIGhhbmRsZV92Zm9ya19jaGlsZF9leGVjX29yX2V4aXQgKDEpOwotIAotQEAgLTQwNzYsMjMg KzQxMDAsMzMgQEAgcHJvY2Vzc19ldmVudF9zdG9wX3Rlc3Q6Ci0gCi0gCWVjcy0+ZXZlbnRfdGhy ZWFkLT5zdGVwcGluZ19vdmVyX2JyZWFrcG9pbnQgPSAxOwotIAotLQlpZiAoIWdkYmFyY2hfZ2V0 X2xvbmdqbXBfdGFyZ2V0X3AgKGdkYmFyY2gpCi0tCSAgICB8fCAhZ2RiYXJjaF9nZXRfbG9uZ2pt cF90YXJnZXQgKGdkYmFyY2gsIGZyYW1lLCAmam1wX2J1Zl9wYykpCi0rCWlmICh3aGF0LmlzX2xv bmdqbXApCi0gCSAgewotLQkgICAgaWYgKGRlYnVnX2luZnJ1bikKLS0JICAgICAgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiXAotKwkgICAgaWYgKCFnZGJhcmNoX2dldF9sb25nam1w X3RhcmdldF9wIChnZGJhcmNoKQotKwkJfHwgIWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0IChn ZGJhcmNoLAotKwkJCQkJCWZyYW1lLCAmam1wX2J1Zl9wYykpCi0rCSAgICAgIHsKLSsJCWlmIChk ZWJ1Z19pbmZydW4pCi0rCQkgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIlwKLSBp bmZydW46IEJQU1RBVF9XSEFUX1NFVF9MT05HSk1QX1JFU1VNRSAoIWdkYmFyY2hfZ2V0X2xvbmdq bXBfdGFyZ2V0KVxuIik7Ci0tCSAgICBrZWVwX2dvaW5nIChlY3MpOwotLQkgICAgcmV0dXJuOwot LQkgIH0KLSsJCWtlZXBfZ29pbmcgKGVjcyk7Ci0rCQlyZXR1cm47Ci0rCSAgICAgIH0KLSAKLS0J LyogV2UncmUgZ29pbmcgdG8gcmVwbGFjZSB0aGUgY3VycmVudCBzdGVwLXJlc3VtZSBicmVha3Bv aW50Ci0tCSAgIHdpdGggYSBsb25nam1wLXJlc3VtZSBicmVha3BvaW50LiAgKi8KLS0JZGVsZXRl X3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGVjcy0+ZXZlbnRfdGhyZWFkKTsKLSsJICAgIC8qIFdl J3JlIGdvaW5nIHRvIHJlcGxhY2UgdGhlIGN1cnJlbnQgc3RlcC1yZXN1bWUgYnJlYWtwb2ludAot KwkgICAgICAgd2l0aCBhIGxvbmdqbXAtcmVzdW1lIGJyZWFrcG9pbnQuICAqLwotKwkgICAgZGVs ZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGVjcy0+ZXZlbnRfdGhyZWFkKTsKKysvKiBDYWxs IHR5cGVfbWFya191c2VkIGZvciBhbnkgVFlQRXMgcmVmZXJlbmNlZCBmcm9tIHRoaXMgR0RCIHNv dXJjZSBmaWxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3ByaW50X3R5cGVzX21hcmtfdXNlZCAo dm9pZCkKKyt7CisrICBzdHJ1Y3QgZGlzcGxheSAqZDsKKysKKysgIGlmIChsYXN0X2V4YW1pbmVf dmFsdWUpCisrICAgIHR5cGVfbWFya191c2VkICh2YWx1ZV90eXBlIChsYXN0X2V4YW1pbmVfdmFs dWUpKTsKKysKKysgIGZvciAoZCA9IGRpc3BsYXlfY2hhaW47IGQ7IGQgPSBkLT5uZXh0KQorKyAg ICBpZiAoZC0+ZXhwKQorKyAgICAgIGV4cF90eXBlc19tYXJrX3VzZWQgKGQtPmV4cCk7CisrfQor KworIAwKICAKLS0JLyogSW5zZXJ0IGEgYnJlYWtwb2ludCBhdCByZXN1bWUgYWRkcmVzcy4gICov Ci0tCWluc2VydF9sb25nam1wX3Jlc3VtZV9icmVha3BvaW50IChnZGJhcmNoLCBqbXBfYnVmX3Bj KTsKLSsJICAgIC8qIEluc2VydCBhIGJyZWFrcG9pbnQgYXQgcmVzdW1lIGFkZHJlc3MuICAqLwot KwkgICAgaW5zZXJ0X2xvbmdqbXBfcmVzdW1lX2JyZWFrcG9pbnQgKGdkYmFyY2gsIGptcF9idWZf cGMpOwotKwkgIH0KLSsJZWxzZQotKwkgIHsKLSsJICAgIHN0cnVjdCBzeW1ib2wgKmZ1bmMgPSBn ZXRfZnJhbWVfZnVuY3Rpb24gKGZyYW1lKTsKKyAvKiBBZGQgYW4gZXhwcmVzc2lvbiB0byB0aGUg YXV0by1kaXNwbGF5IGNoYWluLgorQEAgLTI4NjksNCArMjg5MCw2IEBAIFNob3cgcHJpbnRpbmcg b2Ygc291cmNlIGZpbGVuYW1lIGFuZCBsaW5lIG51bWJlciB3aXRoIDxzeW1ib2w+LiIpLCBOVUxM LAorICAgYWRkX2NvbSAoImV2YWwiLCBub19jbGFzcywgZXZhbF9jb21tYW5kLCBfKCJcCisgQ29u dmVydCBcInByaW50ZiBmb3JtYXQgc3RyaW5nXCIsIGFyZzEsIGFyZzIsIGFyZzMsIC4uLiwgYXJn biB0b1xuXAorIGEgY29tbWFuZCBsaW5lLCBhbmQgY2FsbCBpdC4iKSk7CisrCisrICBvYnNlcnZl cl9hdHRhY2hfbWFya191c2VkIChwcmludF90eXBlc19tYXJrX3VzZWQpOworIH0KK2RpZmYgLS1n aXQgYS9nZGIvcHN5bXRhYi5jIGIvZ2RiL3BzeW10YWIuYworaW5kZXggMzY3Y2YxZS4uYzEyMDg5 NCAxMDA2NDQKKy0tLSBhL2dkYi9wc3ltdGFiLmMKKysrKyBiL2dkYi9wc3ltdGFiLmMKK0BAIC00 MjEsNiArNDIxLDE0IEBAIGxvb2t1cF9zeW1ib2xfYXV4X3BzeW10YWJzIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwKKyAgIHJldHVybiBOVUxMOworIH0KICAKLSsJICAgIGlmIChmdW5jKQotKwkg ICAgICBjaGVja19leGNlcHRpb25fcmVzdW1lIChlY3MsIGZyYW1lLCBmdW5jKTsKLSsJICB9Ci0g CWtlZXBfZ29pbmcgKGVjcyk7Ci0gCXJldHVybjsKKytzdGF0aWMgdm9pZAorK3ByZV9leHBhbmRf c3ltdGFic19tYXRjaGluZ19wc3ltdGFicyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisrCQkJ CSAgICAgIGludCBraW5kLCBjb25zdCBjaGFyICpuYW1lLAorKwkJCQkgICAgICBkb21haW5fZW51 bSBkb21haW4pCisreworKyAgLyogTm90aGluZy4gICovCisrfQorKworIC8qIExvb2ssIGluIHBh cnRpYWxfc3ltdGFiIFBTVCwgZm9yIHN5bWJvbCB3aG9zZSBuYXR1cmFsIG5hbWUgaXMgTkFNRS4K KyAgICBDaGVjayB0aGUgZ2xvYmFsIHN5bWJvbHMgaWYgR0xPQkFMLCB0aGUgc3RhdGljIHN5bWJv bHMgaWYgbm90LiAqLwogIAotQEAgLTQxMDEsOCArNDEzNSw1MiBAQCBpbmZydW46IEJQU1RBVF9X SEFUX1NFVF9MT05HSk1QX1JFU1VNRSAoIWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0KVxuIik7 Ci0gCSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotIAkJCSAgICAgICJpbmZydW46 IEJQU1RBVF9XSEFUX0NMRUFSX0xPTkdKTVBfUkVTVU1FXG4iKTsKK0BAIC05NDEsNyArOTQ5LDcg QEAgcHN5bXRhYl90b19mdWxsbmFtZSAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwcykKKyAgIHJl dHVybiBOVUxMOworIH0KICAKLS0JZ2RiX2Fzc2VydCAoZWNzLT5ldmVudF90aHJlYWQtPnN0ZXBf cmVzdW1lX2JyZWFrcG9pbnQgIT0gTlVMTCk7Ci0tCWRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3Bv aW50IChlY3MtPmV2ZW50X3RocmVhZCk7Ci0rCWlmICh3aGF0LmlzX2xvbmdqbXApCi0rCSAgewot KwkgICAgZ2RiX2Fzc2VydCAoZWNzLT5ldmVudF90aHJlYWQtPnN0ZXBfcmVzdW1lX2JyZWFrcG9p bnQgIT0gTlVMTCk7Ci0rCSAgICBkZWxldGVfc3RlcF9yZXN1bWVfYnJlYWtwb2ludCAoZWNzLT5l dmVudF90aHJlYWQpOwotKwkgIH0KLSsJZWxzZQotKwkgIHsKLSsJICAgIC8qIFRoZXJlIGFyZSBz ZXZlcmFsIGNhc2VzIHRvIGNvbnNpZGVyLgorLXN0YXRpYyBjaGFyICoKKytzdGF0aWMgY29uc3Qg Y2hhciAqCisgZmluZF9zeW1ib2xfZmlsZV9mcm9tX3BhcnRpYWwgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLCBjb25zdCBjaGFyICpuYW1lKQorIHsKKyAgIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAq cHN0OworQEAgLTExOTksNiArMTIwNyw3IEBAIGNvbnN0IHN0cnVjdCBxdWlja19zeW1ib2xfZnVu Y3Rpb25zIHBzeW1fZnVuY3Rpb25zID0KKyAgIGZvcmdldF9jYWNoZWRfc291cmNlX2luZm9fcGFy dGlhbCwKKyAgIGxvb2t1cF9zeW10YWJfdmlhX3BhcnRpYWxfc3ltdGFiLAorICAgbG9va3VwX3N5 bWJvbF9hdXhfcHN5bXRhYnMsCisrICBwcmVfZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmdfcHN5bXRh YnMsCisgICBwcmludF9wc3ltdGFiX3N0YXRzX2Zvcl9vYmpmaWxlLAorICAgZHVtcF9wc3ltdGFi c19mb3Jfb2JqZmlsZSwKKyAgIHJlbG9jYXRlX3BzeW10YWJzLAorZGlmZiAtLWdpdCBhL2dkYi9w c3ltdGFiLmggYi9nZGIvcHN5bXRhYi5oCitpbmRleCA5YjhjOGRmLi5kZThiNjdlIDEwMDY0NAor LS0tIGEvZ2RiL3BzeW10YWIuaAorKysrIGIvZ2RiL3BzeW10YWIuaAorQEAgLTEsNiArMSw2IEBA CisgLyogUHVibGljIHBhcnRpYWwgc3ltYm9sIHRhYmxlIGRlZmluaXRpb25zLgorIAorLSAgIENv cHlyaWdodCAoQykgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBDb3B5 cmlnaHQgKEMpIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCisg ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorIAorQEAgLTI4LDQgKzI4LDYgQEAgdm9pZCBt YXBfcGFydGlhbF9zeW1ib2xfZmlsZW5hbWVzICh2b2lkICgqKSAoY29uc3QgY2hhciAqLCBjb25z dCBjaGFyICosCisgCisgZXh0ZXJuIGNvbnN0IHN0cnVjdCBxdWlja19zeW1ib2xfZnVuY3Rpb25z IHBzeW1fZnVuY3Rpb25zOworIAorK2V4dGVybiBjb25zdCBzdHJ1Y3QgcXVpY2tfc3ltYm9sX2Z1 bmN0aW9ucyBkd2FyZjJfZ2RiX2luZGV4X2Z1bmN0aW9uczsKKysKKyAjZW5kaWYgLyogUFNZTVRB Ql9IICovCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lSXRlcmF0b3IucHkg Yi9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVJdGVyYXRvci5weQorbmV3IGZpbGUgbW9kZSAxMDA2 NDQKK2luZGV4IDAwMDAwMDAuLjU2NTQ1NDYKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9weXRo b24vbGliL2dkYi9GcmFtZUl0ZXJhdG9yLnB5CitAQCAtMCwwICsxLDMzIEBACisrIyBJdGVyYXRv ciBvdmVyIGZyYW1lcy4KKysKKysjIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor KyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIwor KyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisr CisrY2xhc3MgRnJhbWVJdGVyYXRvcjoKKysgICAgIiIiQW4gaXRlcmF0b3IgdGhhdCBpdGVyYXRl cyBvdmVyIGZyYW1lcy4iIiIKKysKKysgICAgZGVmIF9faW5pdF9fIChzZWxmLCBmcmFtZSk6Cisr ICAgICAgICAiSW5pdGlhbGl6ZSBhIEZyYW1lSXRlcmF0b3IuICBGUkFNRSBpcyB0aGUgc3RhcnRp bmcgZnJhbWUuIgorKyAgICAgICAgc2VsZi5mcmFtZSA9IGZyYW1lCisrCisrICAgIGRlZiBfX2l0 ZXJfXyAoc2VsZik6CisrICAgICAgICByZXR1cm4gc2VsZgorKworKyAgICBkZWYgbmV4dCAoc2Vs Zik6CisrICAgICAgICByZXN1bHQgPSBzZWxmLmZyYW1lCisrICAgICAgICBpZiByZXN1bHQgaXMg Tm9uZToKKysgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisrICAgICAgICBzZWxmLmZy YW1lID0gcmVzdWx0Lm9sZGVyICgpCisrICAgICAgICByZXR1cm4gcmVzdWx0CitkaWZmIC0tZ2l0 IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lV3JhcHBlci5weSBiL2dkYi9weXRob24vbGliL2dk Yi9GcmFtZVdyYXBwZXIucHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5i NzkwYTU0CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVXcmFw cGVyLnB5CitAQCAtMCwwICsxLDExMiBAQAorKyMgV3JhcHBlciBBUEkgZm9yIGZyYW1lcy4KKysK KysjIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisraW1wb3J0IGdkYgorKwor KyMgRklYTUU6IGFyZ3VhYmx5IGFsbCB0aGlzIHNob3VsZCBiZSBvbiBGcmFtZSBzb21laG93Lgor K2NsYXNzIEZyYW1lV3JhcHBlcjoKKysgICAgZGVmIF9faW5pdF9fIChzZWxmLCBmcmFtZSk6Cisr ICAgICAgICBzZWxmLmZyYW1lID0gZnJhbWU7CisrCisrICAgIGRlZiB3cml0ZV9zeW1ib2wgKHNl bGYsIHN0cmVhbSwgc3ltLCBibG9jayk6CisrICAgICAgICBpZiBsZW4gKHN5bS5saW5rYWdlX25h bWUpOgorKyAgICAgICAgICAgIG5zeW0sIGlzX2ZpZWxkX29mX3RoaXMgPSBnZGIubG9va3VwX3N5 bWJvbCAoc3ltLmxpbmthZ2VfbmFtZSwgYmxvY2spCisrICAgICAgICAgICAgaWYgbnN5bS5hZGRy X2NsYXNzICE9IGdkYi5TWU1CT0xfTE9DX1JFR0lTVEVSOgorKyAgICAgICAgICAgICAgICBzeW0g PSBuc3ltCisrCisrICAgICAgICBzdHJlYW0ud3JpdGUgKHN5bS5wcmludF9uYW1lICsgIj0iKQor KyAgICAgICAgdHJ5OgorKyAgICAgICAgICAgIHZhbCA9IHNlbGYucmVhZF92YXIgKHN5bSkKKysg ICAgICAgICAgICBpZiB2YWwgIT0gTm9uZToKKysgICAgICAgICAgICAgICAgdmFsID0gc3RyICh2 YWwpCisrICAgICAgICAjIEZJWE1FOiB3b3VsZCBiZSBuaWNlIHRvIGhhdmUgYSBtb3JlIHByZWNp c2UgZXhjZXB0aW9uIGhlcmUuCisrICAgICAgICBleGNlcHQgUnVudGltZUVycm9yLCB0ZXh0Ogor KyAgICAgICAgICAgIHZhbCA9IHRleHQKKysgICAgICAgIGlmIHZhbCA9PSBOb25lOgorKyAgICAg ICAgICAgIHN0cmVhbS53cml0ZSAoIj8/PyIpCisrICAgICAgICBlbHNlOgorKyAgICAgICAgICAg IHN0cmVhbS53cml0ZSAoc3RyICh2YWwpKQorKworKyAgICBkZWYgcHJpbnRfZnJhbWVfbG9jYWxz IChzZWxmLCBzdHJlYW0sIGZ1bmMpOgorKyAgICAgICAgaWYgbm90IGZ1bmM6CisrICAgICAgICAg ICAgcmV0dXJuCisrCisrICAgICAgICBmaXJzdCA9IFRydWUKKysgICAgICAgIGJsb2NrID0gZnVu Yy52YWx1ZQorKworKyAgICAgICAgZm9yIHN5bSBpbiBibG9jazoKKysgICAgICAgICAgICBpZiBz eW0uaXNfYXJndW1lbnQ6CisrICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKworKyAgICAgICAg ICAgIHNlbGYud3JpdGVfc3ltYm9sIChzdHJlYW0sIHN5bSwgYmxvY2spCisrICAgICAgICAgICAg c3RyZWFtLndyaXRlICgnXG4nKQorKworKyAgICBkZWYgcHJpbnRfZnJhbWVfYXJncyAoc2VsZiwg c3RyZWFtLCBmdW5jKToKKysgICAgICAgIGlmIG5vdCBmdW5jOgorKyAgICAgICAgICAgIHJldHVy bgorKworKyAgICAgICAgZmlyc3QgPSBUcnVlCisrICAgICAgICBibG9jayA9IGZ1bmMudmFsdWUK KysKKysgICAgICAgIGZvciBzeW0gaW4gYmxvY2s6CisrICAgICAgICAgICAgaWYgbm90IHN5bS5p c19hcmd1bWVudDoKKysgICAgICAgICAgICAgICAgY29udGludWU7CisrCisrICAgICAgICAgICAg aWYgbm90IGZpcnN0OgorKyAgICAgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIsICIpCisrCisr ICAgICAgICAgICAgc2VsZi53cml0ZV9zeW1ib2wgKHN0cmVhbSwgc3ltLCBibG9jaykKKysgICAg ICAgICAgICBmaXJzdCA9IEZhbHNlCisrCisrICAgICMgRklYTUU6IHRoaXMgc2hvdWxkIHByb2Jh Ymx5IGp1c3QgYmUgYSBtZXRob2Qgb24gZ2RiLkZyYW1lLgorKyAgICAjIEJ1dCB0aGVuIHdlIG5l ZWQgc3RyZWFtIHdyYXBwZXJzLgorKyAgICBkZWYgZGVzY3JpYmUgKHNlbGYsIHN0cmVhbSwgZnVs bCk6CisrICAgICAgICBpZiBzZWxmLnR5cGUgKCkgPT0gZ2RiLkRVTU1ZX0ZSQU1FOgorKyAgICAg ICAgICAgIHN0cmVhbS53cml0ZSAoIiA8ZnVuY3Rpb24gY2FsbGVkIGZyb20gZ2RiPlxuIikKKysg ICAgICAgIGVsaWYgc2VsZi50eXBlICgpID09IGdkYi5TSUdUUkFNUF9GUkFNRToKKysgICAgICAg ICAgICBzdHJlYW0ud3JpdGUgKCIgPHNpZ25hbCBoYW5kbGVyIGNhbGxlZD5cbiIpCisrICAgICAg ICBlbHNlOgorKyAgICAgICAgICAgIHNhbCA9IHNlbGYuZmluZF9zYWwgKCkKKysgICAgICAgICAg ICBwYyA9IHNlbGYucGMgKCkKKysgICAgICAgICAgICBuYW1lID0gc2VsZi5uYW1lICgpCisrICAg ICAgICAgICAgaWYgbm90IG5hbWU6CisrICAgICAgICAgICAgICAgIG5hbWUgPSAiPz8iCisrICAg ICAgICAgICAgaWYgcGMgIT0gc2FsLnBjIG9yIG5vdCBzYWwuc3ltdGFiOgorKyAgICAgICAgICAg ICAgICBzdHJlYW0ud3JpdGUgKCIgMHglMDh4IGluIiAlIHBjKQorKyAgICAgICAgICAgIHN0cmVh bS53cml0ZSAoIiAiICsgbmFtZSArICIgKCIpCisrCisrICAgICAgICAgICAgZnVuYyA9IHNlbGYu ZnVuY3Rpb24gKCkKKysgICAgICAgICAgICBzZWxmLnByaW50X2ZyYW1lX2FyZ3MgKHN0cmVhbSwg ZnVuYykKKysKKysgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIpIikKKysKKysgICAgICAgICAg ICBpZiBzYWwuc3ltdGFiIGFuZCBzYWwuc3ltdGFiLmZpbGVuYW1lOgorKyAgICAgICAgICAgICAg ICBzdHJlYW0ud3JpdGUgKCIgYXQgIiArIHNhbC5zeW10YWIuZmlsZW5hbWUpCisrICAgICAgICAg ICAgICAgIHN0cmVhbS53cml0ZSAoIjoiICsgc3RyIChzYWwubGluZSkpCisrCisrICAgICAgICAg ICAgaWYgbm90IHNlbGYubmFtZSAoKSBvciAobm90IHNhbC5zeW10YWIgb3Igbm90IHNhbC5zeW10 YWIuZmlsZW5hbWUpOgorKyAgICAgICAgICAgICAgICBsaWIgPSBnZGIuc29saWJfYWRkcmVzcyAo cGMpCisrICAgICAgICAgICAgICAgIGlmIGxpYjoKKysgICAgICAgICAgICAgICAgICAgIHN0cmVh bS53cml0ZSAoIiBmcm9tICIgKyBsaWIpCisrCisrICAgICAgICAgICAgc3RyZWFtLndyaXRlICgi XG4iKQorKworKyAgICAgICAgICAgIGlmIGZ1bGw6CisrICAgICAgICAgICAgICAgIHNlbGYucHJp bnRfZnJhbWVfbG9jYWxzIChzdHJlYW0sIGZ1bmMpCisrCisrICAgIGRlZiBfX2dldGF0dHJfXyAo c2VsZiwgbmFtZSk6CisrICAgICAgICByZXR1cm4gZ2V0YXR0ciAoc2VsZi5mcmFtZSwgbmFtZSkK K2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkgYi9nZGIvcHl0aG9u L2xpYi9nZGIvX19pbml0X18ucHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAw Li5iMzc1YzY4CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvX19pbml0 X18ucHkKK0BAIC0wLDAgKzEsMTkgQEAKKysjIFN0YXJ0dXAgY29kZS4KKysKKysjIENvcHlyaWdo dCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCisrCisrIyBMb2FkIHRoZSByZXF1aXJlIGNvbW1hbmQgYnkgZGVm YXVsdC4KKytpbXBvcnQgZ2RiLmNvbW1hbmQucmVxdWlyZQorZGlmZiAtLWdpdCBhL2dkYi9weXRo b24vbGliL2dkYi9iYWNrdHJhY2UucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvYmFja3RyYWNlLnB5 CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMmJhYWI1ZgorLS0tIC9kZXYv bnVsbAorKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2JhY2t0cmFjZS5weQorQEAgLTAsMCArMSw0 MiBAQAorKyMgRmlsdGVyaW5nIGJhY2t0cmFjZS4KKysKKysjIENvcHlyaWdodCAoQykgMjAwOCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCisrCisraW1wb3J0IGdkYgorK2ltcG9ydCBpdGVydG9vbHMKKysKKysjIE91ciBvbmx5 IGV4cG9ydHMuCisrX19hbGxfXyA9IFsncHVzaF9mcmFtZV9maWx0ZXInLCAnY3JlYXRlX2ZyYW1l X2ZpbHRlciddCisrCisrZnJhbWVfZmlsdGVyID0gTm9uZQorKworK2RlZiBwdXNoX2ZyYW1lX2Zp bHRlciAoY29uc3RydWN0b3IpOgorKyAgICAiIiJSZWdpc3RlciBhIG5ldyBiYWNrdHJhY2UgZmls dGVyIGNsYXNzIHdpdGggdGhlICdiYWNrdHJhY2UnIGNvbW1hbmQuCisrVGhlIGZpbHRlciB3aWxs IGJlIHBhc3NlZCBhbiBpdGVyYXRvciBhcyBhbiBhcmd1bWVudC4gIFRoZSBpdGVyYXRvcgorK3dp bGwgcmV0dXJuIGdkYi5GcmFtZS1saWtlIG9iamVjdHMuICBUaGUgZmlsdGVyIHNob3VsZCBpbiB0 dXJuIGFjdCBhcworK2FuIGl0ZXJhdG9yIHJldHVybmluZyBzdWNoIG9iamVjdHMuIiIiCisrICAg IGdsb2JhbCBmcmFtZV9maWx0ZXIKKysgICAgaWYgZnJhbWVfZmlsdGVyID09IE5vbmU6CisrICAg ICAgICBmcmFtZV9maWx0ZXIgPSBjb25zdHJ1Y3RvcgorKyAgICBlbHNlOgorKyAgICAgICAgZnJh bWVfZmlsdGVyID0gbGFtYmRhIGl0ZXJhdG9yOiBjb25zdHJ1Y3RvciAoZnJhbWVfZmlsdGVyIChp dGVyYXRvcikpCisrCisrZGVmIGNyZWF0ZV9mcmFtZV9maWx0ZXIgKGl0ZXIpOgorKyAgICBnbG9i YWwgZnJhbWVfZmlsdGVyCisrICAgIGlmIGZyYW1lX2ZpbHRlciBpcyBOb25lOgorKyAgICAgICAg cmV0dXJuIGl0ZXIKKysgICAgcmV0dXJuIGZyYW1lX2ZpbHRlciAoaXRlcikKICsKLSsJICAgICAg IDEuIFRoZSBpbml0aWF0aW5nIGZyYW1lIG5vIGxvbmdlciBleGlzdHMuICBJbiB0aGlzIGNhc2UK LSsJICAgICAgIHdlIG11c3Qgc3RvcCwgYmVjYXVzZSB0aGUgZXhjZXB0aW9uIGhhcyBnb25lIHRv byBmYXIuCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvX19pbml0X18u cHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9fX2luaXRfXy5weQorbmV3IGZpbGUgbW9k ZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjhiMTM3ODkKKy0tLSAvZGV2L251bGwKKysrKyBiL2dk Yi9weXRob24vbGliL2dkYi9jb21tYW5kL19faW5pdF9fLnB5CitAQCAtMCwwICsxIEBACiArCi0r CSAgICAgICAyLiBUaGUgaW5pdGlhdGluZyBmcmFtZSBleGlzdHMsIGFuZCBpcyB0aGUgc2FtZSBh cyB0aGUKLSsJICAgICAgIGN1cnJlbnQgZnJhbWUuICBXZSBzdG9wLCBiZWNhdXNlIHRoZSBleGNl cHRpb24gaGFzIGJlZW4KLSsJICAgICAgIGNhdWdodC4KK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9u L2xpYi9nZGIvY29tbWFuZC9hbGlhcy5weSBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2Fs aWFzLnB5CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uOTZiNjYxOAorLS0t IC9kZXYvbnVsbAorKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYWxpYXMucHkKK0BA IC0wLDAgKzEsNTkgQEAKKysjIEFsaWFzIGNvbW1hbmQuCiArCi0rCSAgICAgICAzLiBUaGUgaW5p dGlhdGluZyBmcmFtZSBleGlzdHMgYW5kIGlzIGRpZmZlcmVudCBmcm9tCi0rCSAgICAgICB0aGUg Y3VycmVudCBmcmFtZS4gIFRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBoYXMgYmVlbgotKwkgICAg ICAgY2F1Z2h0IGJlbmVhdGggdGhlIGluaXRpYXRpbmcgZnJhbWUsIHNvIGtlZXAgZ29pbmcuICAq LwotKwkgICAgc3RydWN0IGZyYW1lX2luZm8gKmluaXRfZnJhbWUKLSsJICAgICAgPSBmcmFtZV9m aW5kX2J5X2lkIChlY3MtPmV2ZW50X3RocmVhZC0+aW5pdGlhdGluZ19mcmFtZSk7CisrIyBDb3B5 cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCi0rCSAgICBn ZGJfYXNzZXJ0IChlY3MtPmV2ZW50X3RocmVhZC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50 ICE9IE5VTEwpOwotKwkgICAgZGVsZXRlX2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCAoZWNz LT5ldmVudF90aHJlYWQpOworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICsKLSsJICAg IGlmIChpbml0X2ZyYW1lKQotKwkgICAgICB7Ci0rCQlzdHJ1Y3QgZnJhbWVfaWQgY3VycmVudF9p ZAotKwkJICA9IGdldF9mcmFtZV9pZCAoZ2V0X2N1cnJlbnRfZnJhbWUgKCkpOwotKwkJaWYgKGZy YW1lX2lkX2VxIChjdXJyZW50X2lkLAotKwkJCQkgZWNzLT5ldmVudF90aHJlYWQtPmluaXRpYXRp bmdfZnJhbWUpKQotKwkJICB7Ci0rCQkgICAgLyogQ2FzZSAyLiAgRmFsbCB0aHJvdWdoLiAgKi8K LSsJCSAgfQotKwkJZWxzZQotKwkJICB7Ci0rCQkgICAgLyogQ2FzZSAzLiAgKi8KLSsJCSAgICBr ZWVwX2dvaW5nIChlY3MpOwotKwkJICAgIHJldHVybjsKLSsJCSAgfQotKwkgICAgICB9CisraW1w b3J0IGdkYgorKworK2NsYXNzIEFsaWFzSW1wbGVtZW50YXRpb24gKGdkYi5Db21tYW5kKToKKysg ICAgZGVmIF9faW5pdF9fIChzZWxmLCBuYW1lLCByZWFsLCBkb2MpOgorKyAgICAgICAgIyBIYXZl IHRvIHNldCBfX2RvY19fIGJlZm9yZSB0aGUgc3VwZXIgaW5pdCBjYWxsLgorKyAgICAgICAgIyBJ dCB3b3VsZCBiZSBuaWNlIGlmIGdkYidzIGhlbHAgbG9va2VkIHVwIF9fZG9jX18gZHluYW1pY2Fs bHkuCisrICAgICAgICBzZWxmLl9fZG9jX18gPSBkb2MKKysgICAgICAgICMgTm90ZTogbm8gZ29v ZCB3YXkgdG8gY29tcGxldGUgOigKKysgICAgICAgIHN1cGVyIChBbGlhc0ltcGxlbWVudGF0aW9u LCBzZWxmKS5fX2luaXRfXyAobmFtZSwgZ2RiLkNPTU1BTkRfTk9ORSkKKysgICAgICAgIHNlbGYu cmVhbCA9IHJlYWwKKysKKysgICAgZGVmIGludm9rZShzZWxmLCBhcmcsIGZyb21fdHR5KToKKysg ICAgICAgIGdkYi5leGVjdXRlIChzZWxmLnJlYWwgKyAnICcgKyBhcmcsIGZyb21fdHR5KQorKwor K2NsYXNzIEFsaWFzQ29tbWFuZCAoZ2RiLkNvbW1hbmQpOgorKyAgICAiIiJBbGlhcyBvbmUgY29t bWFuZCB0byBhbm90aGVyLgorK0luIHRoZSBzaW1wbGVzdCBmb3JtLCB0aGUgZmlyc3Qgd29yZCBp cyB0aGUgbmFtZSBvZiB0aGUgYWxpYXMsIGFuZAorK3RoZSByZW1haW5pbmcgd29yZHMgYXJlIHRo ZSB0aGUgZXhwYW5zaW9uLgorK0FuICc9JyBieSBpdHNlbGYgY2FuIGJlIHVzZWQgdG8gZGVmaW5l IGEgbXVsdGktd29yZCBhbGlhczsgd29yZHMKKytiZWZvcmUgdGhlICc9JyBhcmUgdGhlIG5hbWUg b2YgdGhlIG5ldyBjb21tYW5kLiIiIgorKworKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgorKyAg ICAgICAgIyBDb21wbGV0aW9uIGlzIG5vdCBxdWl0ZSByaWdodCBoZXJlLgorKyAgICAgICAgc3Vw ZXIgKEFsaWFzQ29tbWFuZCwgc2VsZikuX19pbml0X18gKCJhbGlhcyIsIGdkYi5DT01NQU5EX05P TkUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNP TVBMRVRFX0NPTU1BTkQpCisrCisrICAgIGRlZiBpbnZva2UgKHNlbGYsIGFyZywgZnJvbV90dHkp OgorKyAgICAgICAgc2VsZi5kb250X3JlcGVhdCAoKQorKyAgICAgICAgIyBXaXRob3V0IHNvbWUg Zm9ybSBvZiBxdW90aW5nIHdlIGNhbid0IGFsaWFzIGEgbXVsdGktd29yZAorKyAgICAgICAgIyBj b21tYW5kIHRvIGFub3RoZXIgY29tbWFuZC4KKysgICAgICAgIGFyZ3MgPSBhcmcuc3BsaXQoKQor KyAgICAgICAgdHJ5OgorKyAgICAgICAgICAgIHN0YXJ0ID0gYXJncy5pbmRleCAoJz0nKQorKyAg ICAgICAgICAgIGVuZCA9IHN0YXJ0ICsgMQorKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Cisr ICAgICAgICAgICAgc3RhcnQgPSAxCisrICAgICAgICAgICAgZW5kID0gMQorKyAgICAgICAgdGFy Z2V0ID0gIiAiLmpvaW4oYXJnc1tlbmQ6XSkKKysgICAgICAgIEFsaWFzSW1wbGVtZW50YXRpb24g KCIgIi5qb2luIChhcmdzWzA6c3RhcnRdKSwgdGFyZ2V0LAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIlRoaXMgY29tbWFuZCBpcyBhbiBhbGlhcyBmb3IgJyVzJy4iICUgdGFyZ2V0KQor KworK0FsaWFzQ29tbWFuZCgpCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1h bmQvYmFja3RyYWNlLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5 CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZWM5YTUyNworLS0tIC9kZXYv bnVsbAorKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5CitAQCAt MCwwICsxLDEwNiBAQAorKyMgTmV3IGJhY2t0cmFjZSBjb21tYW5kLgogKwotKwkgICAgLyogRm9y IENhc2VzIDEgYW5kIDIsIHJlbW92ZSB0aGUgc3RlcC1yZXN1bWUgYnJlYWtwb2ludCwKLSsJICAg ICAgIGlmIGl0IGV4aXN0cy4gICovCi0rCSAgICBkZWxldGVfc3RlcF9yZXN1bWVfYnJlYWtwb2lu dCAoZWNzLT5ldmVudF90aHJlYWQpOwotKwkgIH0KLSAKLSAJZWNzLT5ldmVudF90aHJlYWQtPnN0 b3Bfc3RlcCA9IDE7Ci0gCXByaW50X3N0b3BfcmVhc29uIChFTkRfU1RFUFBJTkdfUkFOR0UsIDAp OwotQEAgLTUwNzAsNiArNTE0OCw5NyBAQCBpbnNlcnRfbG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2lu dCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBwYykKLSAgICAgc2V0X21vbWVu dGFyeV9icmVha3BvaW50X2F0X3BjIChnZGJhcmNoLCBwYywgYnBfbG9uZ2ptcF9yZXN1bWUpOwot IH0KLSAKLSsvKiBJbnNlcnQgYW4gZXhjZXB0aW9uIHJlc3VtZSBicmVha3BvaW50LiAgVFAgaXMg dGhlIHRocmVhZCB0aHJvd2luZwotKyAgIHRoZSBleGNlcHRpb24uICBUaGUgYmxvY2sgQiBpcyB0 aGUgYmxvY2sgb2YgdGhlIHVud2luZGVyIGRlYnVnIGhvb2sKLSsgICBmdW5jdGlvbi4gIEZSQU1F IGlzIHRoZSBmcmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjYWxsIHRvIHRoaXMKLSsgICBmdW5j dGlvbi4gIFNZTSBpcyB0aGUgc3ltYm9sIG9mIHRoZSBmdW5jdGlvbiBhcmd1bWVudCBob2xkaW5n IHRoZQotKyAgIHRhcmdldCBQQyBvZiB0aGUgZXhjZXB0aW9uLiAgKi8KKysjIENvcHlyaWdodCAo QykgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKLStzdGF0aWMg dm9pZAotK2luc2VydF9leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVjdCB0aHJlYWRf aW5mbyAqdHAsCi0rCQkJCSAgICBzdHJ1Y3QgYmxvY2sgKmIsCi0rCQkJCSAgICBzdHJ1Y3QgZnJh bWVfaW5mbyAqZnJhbWUsCi0rCQkJCSAgICBzdHJ1Y3Qgc3ltYm9sICpzeW0pCi0rewotKyAgc3Ry dWN0IGdkYl9leGNlcHRpb24gZTsKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCi0r ICAvKiBXZSB3YW50IHRvIGlnbm9yZSBlcnJvcnMgaGVyZS4gICovCi0rICBUUllfQ0FUQ0ggKGUs IFJFVFVSTl9NQVNLX0FMTCkKLSsgICAgewotKyAgICAgIHN0cnVjdCBzeW1ib2wgKnZzeW07Ci0r ICAgICAgc3RydWN0IHZhbHVlICp2YWx1ZTsKLSsgICAgICBDT1JFX0FERFIgaGFuZGxlcjsKLSsg ICAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnA7CisraW1wb3J0IGdkYgorK2ltcG9ydCBnZGIuYmFj a3RyYWNlCisraW1wb3J0IGl0ZXJ0b29scworK2Zyb20gZ2RiLkZyYW1lSXRlcmF0b3IgaW1wb3J0 IEZyYW1lSXRlcmF0b3IKKytmcm9tIGdkYi5GcmFtZVdyYXBwZXIgaW1wb3J0IEZyYW1lV3JhcHBl cgorK2ltcG9ydCBzeXMKKysKKytjbGFzcyBSZXZlcnNlQmFja3RyYWNlUGFyYW1ldGVyIChnZGIu UGFyYW1ldGVyKToKKysgICAgIiIiVGhlIG5ldy1iYWNrdHJhY2UgY29tbWFuZCBjYW4gc2hvdyBi YWNrdHJhY2VzIGluICdyZXZlcnNlJyBvcmRlci4KKytUaGlzIG1lYW5zIHRoYXQgdGhlIGlubmVy bW9zdCBmcmFtZSB3aWxsIGJlIHByaW50ZWQgbGFzdC4KKytOb3RlIHRoYXQgcmV2ZXJzZSBiYWNr dHJhY2VzIGFyZSBtb3JlIGV4cGVuc2l2ZSB0byBjb21wdXRlLiIiIgorKworKyAgICBzZXRfZG9j ID0gIkVuYWJsZSBvciBkaXNhYmxlIHJldmVyc2UgYmFja3RyYWNlcy4iCisrICAgIHNob3dfZG9j ID0gIlNob3cgd2hldGhlciBiYWNrdHJhY2VzIHdpbGwgYmUgcHJpbnRlZCBpbiByZXZlcnNlIG9y ZGVyLiIKKysKKysgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorKyAgICAgICAgZ2RiLlBhcmFtZXRl ci5fX2luaXRfXyAoc2VsZiwgInJldmVyc2UtYmFja3RyYWNlIiwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdkYi5DT01NQU5EX1NUQUNLLCBnZGIuUEFSQU1fQk9PTEVBTikKKysg ICAgICAgICMgRGVmYXVsdCB0byBjb21wYXRpYmlsaXR5IHdpdGggZ2RiLgorKyAgICAgICAgc2Vs Zi52YWx1ZSA9IEZhbHNlCisrCisrY2xhc3MgRmlsdGVyaW5nQmFja3RyYWNlIChnZGIuQ29tbWFu ZCk6CisrICAgICIiIlByaW50IGJhY2t0cmFjZSBvZiBhbGwgc3RhY2sgZnJhbWVzLCBvciBpbm5l cm1vc3QgQ09VTlQgZnJhbWVzLgorK1dpdGggYSBuZWdhdGl2ZSBhcmd1bWVudCwgcHJpbnQgb3V0 ZXJtb3N0IC1DT1VOVCBmcmFtZXMuCisrVXNlIG9mIHRoZSAnZnVsbCcgcXVhbGlmaWVyIGFsc28g cHJpbnRzIHRoZSB2YWx1ZXMgb2YgdGhlIGxvY2FsIHZhcmlhYmxlcy4KKytVc2Ugb2YgdGhlICdy YXcnIHF1YWxpZmllciBhdm9pZHMgYW55IGZpbHRlcmluZyBieSBsb2FkYWJsZSBtb2R1bGVzLgor KyIiIgorKworKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgorKyAgICAgICAgIyBGSVhNRTogdGhp cyBpcyBub3Qgd29ya2luZyBxdWl0ZSB3ZWxsIGVub3VnaCB0byByZXBsYWNlCisrICAgICAgICAj ICJiYWNrdHJhY2UiIHlldC4KKysgICAgICAgIGdkYi5Db21tYW5kLl9faW5pdF9fIChzZWxmLCAi bmV3LWJhY2t0cmFjZSIsIGdkYi5DT01NQU5EX1NUQUNLKQorKyAgICAgICAgc2VsZi5yZXZlcnNl ID0gUmV2ZXJzZUJhY2t0cmFjZVBhcmFtZXRlcigpCisrCisrICAgIGRlZiByZXZlcnNlX2l0ZXIg KHNlbGYsIGl0ZXIpOgorKyAgICAgICAgcmVzdWx0ID0gW10KKysgICAgICAgIGZvciBpdGVtIGlu IGl0ZXI6CisrICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCAoaXRlbSkKKysgICAgICAgIHJlc3Vs dC5yZXZlcnNlKCkKKysgICAgICAgIHJldHVybiByZXN1bHQKKysKKysgICAgZGVmIGZpbmFsX24g KHNlbGYsIGl0ZXIsIHgpOgorKyAgICAgICAgcmVzdWx0ID0gW10KKysgICAgICAgIGZvciBpdGVt IGluIGl0ZXI6CisrICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCAoaXRlbSkKKysgICAgICAgIHJl dHVybiByZXN1bHRbeDpdCisrCisrICAgIGRlZiBpbnZva2UgKHNlbGYsIGFyZywgZnJvbV90dHkp OgorKyAgICAgICAgaSA9IDAKKysgICAgICAgIGNvdW50ID0gMAorKyAgICAgICAgZmlsdGVyID0g VHJ1ZQorKyAgICAgICAgZnVsbCA9IEZhbHNlCisrCisrICAgICAgICBmb3Igd29yZCBpbiBhcmcu c3BsaXQgKCIgIik6CisrICAgICAgICAgICAgaWYgd29yZCA9PSAnJzoKKysgICAgICAgICAgICAg ICAgY29udGludWUKKysgICAgICAgICAgICBlbGlmIHdvcmQgPT0gJ3Jhdyc6CisrICAgICAgICAg ICAgICAgIGZpbHRlciA9IEZhbHNlCisrICAgICAgICAgICAgZWxpZiB3b3JkID09ICdmdWxsJzoK KysgICAgICAgICAgICAgICAgZnVsbCA9IFRydWUKKysgICAgICAgICAgICBlbHNlOgorKyAgICAg ICAgICAgICAgICBjb3VudCA9IGludCAod29yZCkKKysKKysgICAgICAgICMgRklYTUU6IHByb3Zp ZGUgb3B0aW9uIHRvIHN0YXJ0IGF0IHNlbGVjdGVkIGZyYW1lCisrICAgICAgICAjIEhvd2V2ZXIs IHNob3VsZCBzdGlsbCBudW1iZXIgYXMgaWYgc3RhcnRpbmcgZnJvbSBuZXdlc3QKKysJbmV3ZXN0 X2ZyYW1lID0gZ2RiLnNlbGVjdGVkX3RocmVhZCAoKS5uZXdlc3RfZnJhbWUgKCkKKysgICAgICAg IGl0ZXIgPSBpdGVydG9vbHMuaW1hcCAoRnJhbWVXcmFwcGVyLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBGcmFtZUl0ZXJhdG9yIChuZXdlc3RfZnJhbWUpKQorKyAgICAgICAgaWYg ZmlsdGVyOgorKyAgICAgICAgICAgIGl0ZXIgPSBnZGIuYmFja3RyYWNlLmNyZWF0ZV9mcmFtZV9m aWx0ZXIgKGl0ZXIpCisrCisrICAgICAgICAjIE5vdyB3cmFwIGluIGFuIGl0ZXJhdG9yIHRoYXQg bnVtYmVycyB0aGUgZnJhbWVzLgorKyAgICAgICAgaXRlciA9IGl0ZXJ0b29scy5pemlwIChpdGVy dG9vbHMuY291bnQgKDApLCBpdGVyKQorKworKyAgICAgICAgIyBSZXZlcnNlIGlmIHRoZSB1c2Vy IHdhbnRlZCB0aGF0LgorKyAgICAgICAgaWYgc2VsZi5yZXZlcnNlLnZhbHVlOgorKyAgICAgICAg ICAgIGl0ZXIgPSBzZWxmLnJldmVyc2VfaXRlciAoaXRlcikKKysKKysgICAgICAgICMgRXh0cmFj dCBzdWItcmFuZ2UgdXNlciB3YW50cy4KKysgICAgICAgIGlmIGNvdW50IDwgMDoKKysgICAgICAg ICAgICBpdGVyID0gc2VsZi5maW5hbF9uIChpdGVyLCBjb3VudCkKKysgICAgICAgIGVsaWYgY291 bnQgPiAwOgorKyAgICAgICAgICAgIGl0ZXIgPSBpdGVydG9vbHMuaXNsaWNlIChpdGVyLCAwLCBj b3VudCkKKysKKysgICAgICAgIGZvciBwYWlyIGluIGl0ZXI6CisrICAgICAgICAgICAgc3lzLnN0 ZG91dC53cml0ZSAoIiMlLTJkIiAlIHBhaXJbMF0pCisrICAgICAgICAgICAgcGFpclsxXS5kZXNj cmliZSAoc3lzLnN0ZG91dCwgZnVsbCkKKysKKytGaWx0ZXJpbmdCYWNrdHJhY2UoKQorZGlmZiAt LWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2lnbm9yZV9lcnJvcnMucHkgYi9nZGIv cHl0aG9uL2xpYi9nZGIvY29tbWFuZC9pZ25vcmVfZXJyb3JzLnB5CituZXcgZmlsZSBtb2RlIDEw MDY0NAoraW5kZXggMDAwMDAwMC4uNmZhNDhmZgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3B5 dGhvbi9saWIvZ2RiL2NvbW1hbmQvaWdub3JlX2Vycm9ycy5weQorQEAgLTAsMCArMSwzNyBAQAor KyMgSWdub3JlIGVycm9ycyBpbiB1c2VyIGNvbW1hbmRzLgogKwotKyAgICAgIHZzeW0gPSBsb29r dXBfc3ltYm9sIChTWU1CT0xfTElOS0FHRV9OQU1FIChzeW0pLCBiLCBWQVJfRE9NQUlOLCBOVUxM KTsKLSsgICAgICB2YWx1ZSA9IHJlYWRfdmFyX3ZhbHVlICh2c3ltLCBmcmFtZSk7Ci0rICAgICAg LyogSWYgdGhlIHZhbHVlIHdhcyBvcHRpbWl6ZWQgb3V0LCByZXZlcnQgdG8gdGhlIG9sZCBiZWhh dmlvci4gICovCi0rICAgICAgaWYgKCEgdmFsdWVfb3B0aW1pemVkX291dCAodmFsdWUpKQotKwl7 Ci0rCSAgaGFuZGxlciA9IHZhbHVlX2FzX2FkZHJlc3MgKHZhbHVlKTsKKysjIENvcHlyaWdodCAo QykgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKLSsJICBpZiAoZGVidWdf aW5mcnVuKQotKwkgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKwkJCQkiaW5m cnVuOiBleGNlcHRpb24gcmVzdW1lIGF0ICVseFxuIiwKLSsJCQkJKHVuc2lnbmVkIGxvbmcpIGhh bmRsZXIpOworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICsKLSsJICBicCA9IHNldF9t b21lbnRhcnlfYnJlYWtwb2ludF9hdF9wYyAoZ2V0X2ZyYW1lX2FyY2ggKGZyYW1lKSwKLSsJCQkJ CSAgICAgICBoYW5kbGVyLCBicF9leGNlcHRpb25fcmVzdW1lKTsKLSsJICBicC0+dGhyZWFkID0g dHAtPm51bTsKLSsJICBpbmZlcmlvcl90aHJlYWQgKCktPmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtw b2ludCA9IGJwOwotKwl9Ci0rICAgIH0KLSt9CisraW1wb3J0IGdkYgogKwotKy8qIFRoaXMgaXMg Y2FsbGVkIHdoZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGludGVyY2VwdGVkLiAgQ2hlY2sgdG8K LSsgICBzZWUgd2hldGhlciB0aGUgZXhjZXB0aW9uJ3MgZGVzdGluYXRpb24gaXMgb2YgaW50ZXJl c3QsIGFuZCBpZiBzbywKLSsgICBzZXQgYW4gZXhjZXB0aW9uIHJlc3VtZSBicmVha3BvaW50IHRo ZXJlLiAgKi8KKytjbGFzcyBJZ25vcmVFcnJvcnNDb21tYW5kIChnZGIuQ29tbWFuZCk6CisrICAg ICIiIkV4ZWN1dGUgYSBzaW5nbGUgY29tbWFuZCwgaWdub3JpbmcgYWxsIGVycm9ycy4KKytPbmx5 IG9uZS1saW5lIGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuCisrVGhpcyBpcyBwcmltYXJpbHkgdXNl ZnVsIGluIHNjcmlwdHMuIiIiCiArCi0rc3RhdGljIHZvaWQKLStjaGVja19leGNlcHRpb25fcmVz dW1lIChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcywKLSsJCQlzdHJ1Y3QgZnJh bWVfaW5mbyAqZnJhbWUsIHN0cnVjdCBzeW1ib2wgKmZ1bmMpCi0rewotKyAgc3RydWN0IGdkYl9l eGNlcHRpb24gZTsKKysgICAgZGVmIF9faW5pdF9fIChzZWxmKToKKysgICAgICAgIHN1cGVyIChJ Z25vcmVFcnJvcnNDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAoImlnbm9yZS1lcnJvcnMiLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09N TUFORF9PQlNDVVJFLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIEZJWE1FLi4uCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGdkYi5DT01QTEVURV9DT01NQU5EKQogKwotKyAgVFJZX0NBVENI IChlLCBSRVRVUk5fTUFTS19BTEwpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgYmxvY2sgKmI7Ci0r ICAgICAgc3RydWN0IGRpY3RfaXRlcmF0b3IgaXRlcjsKLSsgICAgICBzdHJ1Y3Qgc3ltYm9sICpz eW07Ci0rICAgICAgaW50IGFyZ25vID0gMDsKKysgICAgZGVmIGludm9rZSAoc2VsZiwgYXJnLCBm cm9tX3R0eSk6CisrICAgICAgICB0cnk6CisrICAgICAgICAgICAgZ2RiLmV4ZWN1dGUgKGFyZywg ZnJvbV90dHkpCisrICAgICAgICBleGNlcHQ6CisrICAgICAgICAgICAgcGFzcwogKwotKyAgICAg IC8qIFRoZSBleGNlcHRpb24gYnJlYWtwb2ludCBpcyBhIHRocmVhZC1zcGVjaWZpYyBicmVha3Bv aW50IG9uCi0rCSB0aGUgdW53aW5kZXIncyBkZWJ1ZyBob29rLCBkZWNsYXJlZCBhczoKLSsJIAot Kwkgdm9pZCBfVW53aW5kX0RlYnVnSG9vayAodm9pZCAqY2ZhLCB2b2lkICpoYW5kbGVyKTsKLSsJ IAotKwkgVGhlIENGQSBhcmd1bWVudCBpbmRpY2F0ZXMgdGhlIGZyYW1lIHRvIHdoaWNoIGNvbnRy b2wgaXMKLSsJIGFib3V0IHRvIGJlIHRyYW5zZmVycmVkLiAgSEFORExFUiBpcyB0aGUgZGVzdGlu YXRpb24gUEMuCi0rCSAKLSsJIFdlIGlnbm9yZSB0aGUgQ0ZBIGFuZCBzZXQgYSB0ZW1wb3Jhcnkg YnJlYWtwb2ludCBhdCBIQU5ETEVSLgotKwkgVGhpcyBpcyBub3QgZXh0cmVtZWx5IGVmZmljaWVu dCBidXQgaXQgYXZvaWRzIGlzc3VlcyBpbiBnZGIKLSsJIHdpdGggY29tcHV0aW5nIHRoZSBEV0FS RiBDRkEsIGFuZCBpdCBhbHNvIHdvcmtzIGV2ZW4gaW4gd2VpcmQKLSsJIGNhc2VzIHN1Y2ggYXMg dGhyb3dpbmcgYW4gZXhjZXB0aW9uIGZyb20gaW5zaWRlIGEgc2lnbmFsCi0rCSBoYW5kbGVyLiAg Ki8KKytJZ25vcmVFcnJvcnNDb21tYW5kICgpCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIv Z2RiL2NvbW1hbmQvcGFob2xlLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvcGFob2xl LnB5CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMjFhMGJmMAorLS0tIC9k ZXYvbnVsbAorKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvcGFob2xlLnB5CitAQCAt MCwwICsxLDc1IEBACisrIyBwYWhvbGUgY29tbWFuZCBmb3IgZ2RiCiArCi0rICAgICAgYiA9IFNZ TUJPTF9CTE9DS19WQUxVRSAoZnVuYyk7Ci0rICAgICAgQUxMX0JMT0NLX1NZTUJPTFMgKGIsIGl0 ZXIsIHN5bSkKLSsJewotKwkgIGlmICghU1lNQk9MX0lTX0FSR1VNRU5UIChzeW0pKQotKwkgICAg Y29udGludWU7CisrIyBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCiArCi0rCSAgaWYgKGFyZ25vID09IDApCi0rCSAgICArK2FyZ25vOwotKwkg IGVsc2UKLSsJICAgIHsKLSsJICAgICAgaW5zZXJ0X2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2lu dCAoZWNzLT5ldmVudF90aHJlYWQsCi0rCQkJCQkJICBiLCBmcmFtZSwgc3ltKTsKLSsJICAgICAg YnJlYWs7Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotK30KKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCiArCi0gc3RhdGljIHZvaWQKLSBzdG9wX3N0ZXBwaW5nIChzdHJ1Y3QgZXhlY3V0aW9u X2NvbnRyb2xfc3RhdGUgKmVjcykKLSB7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2xpbnV4LW5hdC5jIGIv Z2RiL2xpbnV4LW5hdC5jCi1pbmRleCA5M2FkZmNkLi4zNDQxMmE2IDEwMDY0NAotLS0tIGEvZ2Ri L2xpbnV4LW5hdC5jCi0rKysgYi9nZGIvbGludXgtbmF0LmMKLUBAIC0yNTg3LDYgKzI1ODcsMzkg QEAgbGludXhfbmF0X3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3Bz LCBDT1JFX0FERFIgKmFkZHJfcCkKLSAgIHJldHVybiBscC0+c3RvcHBlZF9kYXRhX2FkZHJlc3Nf cDsKLSB9Ci0gCi0rLyogSW4gYHNldCBmb2xsb3ctZm9yay1tb2RlIGNoaWxkJyB3aXRoIG11bHRp dGhyZWFkZWQgcGFyZW50IHdlIG5lZWQgdG8gZGV0YWNoCi0rICAgd2F0Y2hwb2ludHMgZnJvbSBh bGwgdGhlIExXUHMuICBJbiBzdWNoIGNhc2UgSU5GRVJJT1JfUFRJRCB3aWxsIGJlIHRoZQotKyAg IG5vbi10aHJlYWRlZCBuZXcgY2hpbGQgd2hpbGUgTFdQX0xJU1Qgd2lsbCBzdGlsbCBjb250YWlu IGFsbCB0aGUgdGhyZWFkcyBvZgotKyAgIHRoZSBwYXJlbnQgYmVpbmcgZGV0YWNoZWQuICAqLwor K2ltcG9ydCBnZGIKKysKKytjbGFzcyBQYWhvbGUgKGdkYi5Db21tYW5kKToKKysgICAgIiIiU2hv dyB0aGUgaG9sZXMgaW4gYSBzdHJ1Y3R1cmUuCisrVGhpcyBjb21tYW5kIHRha2VzIGEgc2luZ2xl IGFyZ3VtZW50LCBhIHR5cGUgbmFtZS4KKytJdCBwcmludHMgdGhlIHR5cGUgYW5kIGRpc3BsYXlz IGNvbW1lbnRzIHNob3dpbmcgd2hlcmUgaG9sZXMgYXJlLiIiIgorKworKyAgICBkZWYgX19pbml0 X18gKHNlbGYpOgorKyAgICAgICAgc3VwZXIgKFBhaG9sZSwgc2VsZikuX19pbml0X18gKCJwYWhv bGUiLCBnZGIuQ09NTUFORF9OT05FLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGdkYi5DT01QTEVURV9TWU1CT0wpCisrCisrICAgIGRlZiBwYWhvbGUgKHNlbGYsIHR5 cGUsIGxldmVsLCBuYW1lKToKKysgICAgICAgIGlmIG5hbWUgaXMgTm9uZToKKysgICAgICAgICAg ICBuYW1lID0gJycKKysgICAgICAgIHRhZyA9IHR5cGUudGFnCisrICAgICAgICBpZiB0YWcgaXMg Tm9uZToKKysgICAgICAgICAgICB0YWcgPSAnJworKyAgICAgICAgcHJpbnQgJyVzc3RydWN0ICVz IHsnICUgKCcgJyAqICgyICogbGV2ZWwpLCB0YWcpCisrICAgICAgICBiaXRwb3MgPSAwCisrICAg ICAgICBmb3IgZmllbGQgaW4gdHlwZS5maWVsZHMgKCk6CisrICAgICAgICAgICAgIyBTa2lwIHN0 YXRpYyBmaWVsZHMuCisrICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIgKGZpZWxkLCAoJ2JpdHBv cycpKToKKysgICAgICAgICAgICAgICAgY29udGludWUKKysKKysgICAgICAgICAgICBmdHlwZSA9 IGZpZWxkLnR5cGUuc3RyaXBfdHlwZWRlZnMoKQorKworKyAgICAgICAgICAgIGlmIGJpdHBvcyAh PSBmaWVsZC5iaXRwb3M6CisrICAgICAgICAgICAgICAgIGhvbGUgPSBmaWVsZC5iaXRwb3MgLSBi aXRwb3MKKysgICAgICAgICAgICAgICAgcHJpbnQgJyAgLyogWFhYICVkIGJpdCBob2xlLCB0cnkg dG8gcGFjayAqLycgJSBob2xlCisrICAgICAgICAgICAgICAgIGJpdHBvcyA9IGZpZWxkLmJpdHBv cworKyAgICAgICAgICAgIGlmIGZpZWxkLmJpdHNpemUgPiAwOgorKyAgICAgICAgICAgICAgICBm aWVsZHNpemUgPSBmaWVsZC5iaXRzaXplCisrICAgICAgICAgICAgZWxzZToKKysgICAgICAgICAg ICAgICAgIyBUQVJHRVRfQ0hBUl9CSVQgaGVyZS4uLgorKyAgICAgICAgICAgICAgICBmaWVsZHNp emUgPSA4ICogZnR5cGUuc2l6ZW9mCisrCisrICAgICAgICAgICAgIyBUQVJHRVRfQ0hBUl9CSVQK KysgICAgICAgICAgICBwcmludCAnIC8qICUzZCAlM2QgKi8nICUgKGludCAoYml0cG9zIC8gOCks IGludCAoZmllbGRzaXplIC8gOCkpLAorKyAgICAgICAgICAgIGJpdHBvcyA9IGJpdHBvcyArIGZp ZWxkc2l6ZQorKworKyAgICAgICAgICAgIGlmIGZ0eXBlLmNvZGUgPT0gZ2RiLlRZUEVfQ09ERV9T VFJVQ1Q6CisrICAgICAgICAgICAgICAgIHNlbGYucGFob2xlIChmdHlwZSwgbGV2ZWwgKyAxLCBm aWVsZC5uYW1lKQorKyAgICAgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgICAgIHByaW50ICcg JyAqICgyICsgMiAqIGxldmVsKSwKKysgICAgICAgICAgICAgICAgcHJpbnQgJyVzICVzJyAlIChz dHIgKGZ0eXBlKSwgZmllbGQubmFtZSkKKysKKysgICAgICAgIHByaW50ICcgJyAqICgxNCArIDIg KiBsZXZlbCksCisrICAgICAgICBwcmludCAnfSAlcycgJSBuYW1lCisrCisrICAgIGRlZiBpbnZv a2UgKHNlbGYsIGFyZywgZnJvbV90dHkpOgorKyAgICAgICAgdHlwZSA9IGdkYi5sb29rdXBfdHlw ZSAoYXJnKQorKyAgICAgICAgdHlwZSA9IHR5cGUuc3RyaXBfdHlwZWRlZnMgKCkKKysgICAgICAg IGlmIHR5cGUuY29kZSAhPSBnZGIuVFlQRV9DT0RFX1NUUlVDVDoKKysgICAgICAgICAgICByYWlz ZSBUeXBlRXJyb3IsICclcyBpcyBub3QgYSBzdHJ1Y3QgdHlwZScgJSBhcmcKKysgICAgICAgIHBy aW50ICcgJyAqIDE0LAorKyAgICAgICAgc2VsZi5wYWhvbGUgKHR5cGUsIDAsICcnKQorKworK1Bh aG9sZSgpCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvcmVxdWlyZS5w eSBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3JlcXVpcmUucHkKK25ldyBmaWxlIG1vZGUg MTAwNjQ0CitpbmRleCAwMDAwMDAwLi4xZmJjMWU4CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIv cHl0aG9uL2xpYi9nZGIvY29tbWFuZC9yZXF1aXJlLnB5CitAQCAtMCwwICsxLDU3IEBACisrIyBE ZW1hbmQtbG9hZGluZyBjb21tYW5kcy4KICsKLStzdGF0aWMgaW50Ci0rbGludXhfbmF0X2RldGFj aF93YXRjaHBvaW50cyAodm9pZCkKLSt7Ci0rICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwotKyAgaW50 IGZvdW5kID0gMCwgcmV0dmFsID0gMDsKLSsgIHB0aWRfdCBmaWx0ZXIgPSBwaWRfdG9fcHRpZCAo cHRpZF9nZXRfcGlkIChpbmZlcmlvcl9wdGlkKSk7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2No YWluID0gc2F2ZV9pbmZlcmlvcl9wdGlkICgpOworKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwotKyAgZm9yIChscCA9IGx3cF9saXN0 OyBscDsgbHAgPSBscC0+bmV4dCkKLSsgICAgaWYgKHB0aWRfbWF0Y2ggKGxwLT5wdGlkLCBmaWx0 ZXIpKQotKyAgICAgIHsKLSsJaW5mZXJpb3JfcHRpZCA9IGxwLT5wdGlkOwotKwlyZXR2YWwgfD0g bGludXhfb3BzLT50b19kZXRhY2hfd2F0Y2hwb2ludHMgKCk7Ci0rCWZvdW5kID0gMTsKLSsgICAg ICB9CisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKwotKyAgZG9fY2xlYW51cHMgKG9s ZF9jaGFpbik7CisraW1wb3J0IGdkYgorK2ltcG9ydCBvcworKworK2NsYXNzIFJlcXVpcmVDb21t YW5kIChnZGIuQ29tbWFuZCk6CisrICAgICIiIlByZWZpeCBjb21tYW5kIGZvciByZXF1aXJpbmcg ZmVhdHVyZXMuIiIiCisrCisrICAgIGRlZiBfX2luaXRfXyAoc2VsZik6CisrICAgICAgICBzdXBl ciAoUmVxdWlyZUNvbW1hbmQsIHNlbGYpLl9faW5pdF9fICgicmVxdWlyZSIsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NTUFORF9TVVBQT1JU LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNP TVBMRVRFX05PTkUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBUcnVlKQorKworK2NsYXNzIFJlcXVpcmVTdWJjb21tYW5kIChnZGIuQ29tbWFuZCk6Cisr ICAgICIiIkRlbWFuZC1sb2FkIGEgY29tbWFuZCBieSBuYW1lLiIiIgorKworKyAgICBkZWYgX19p bml0X18gKHNlbGYsIG5hbWUpOgorKyAgICAgICAgc2VsZi5fX2RvY19fID0gIkRlbWFuZC1sb2Fk IGEgJXMgYnkgbmFtZS4iICUgbmFtZQorKyAgICAgICAgc3VwZXIgKFJlcXVpcmVTdWJjb21tYW5k LCBzZWxmKS5fX2luaXRfXyAoInJlcXVpcmUgJXMiICUgbmFtZSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01NQU5EX1NVUFBPUlQpCisr ICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisrCisrICAgIGRlZiBpbnZva2UgKHNlbGYsIGFyZywg ZnJvbV90dHkpOgorKyAgICAgICAgZm9yIGNtZCBpbiBhcmcuc3BsaXQoKToKKysgICAgICAgICAg ICBleGVjICgnaW1wb3J0IGdkYi4nICsgc2VsZi5uYW1lICsgJy4nICsgY21kLCBnbG9iYWxzICgp KQorKworKyAgICBkZWYgY29tcGxldGUgKHNlbGYsIHRleHQsIHdvcmQpOgorKyAgICAgICAgZGly ID0gZ2RiLnB5dGhvbmRpciArICcvZ2RiLycgKyBzZWxmLm5hbWUKKysgICAgICAgIHJlc3VsdCA9 IFtdCisrICAgICAgICBmb3IgZmlsZSBpbiBvcy5saXN0ZGlyKGRpcik6CisrICAgICAgICAgICAg aWYgbm90IGZpbGUuc3RhcnRzd2l0aCAod29yZCkgb3Igbm90IGZpbGUuZW5kc3dpdGggKCcucHkn KToKKysgICAgICAgICAgICAgICAgY29udGludWUKKysgICAgICAgICAgICBmZWF0dXJlID0gZmls ZVswOi0zXQorKyAgICAgICAgICAgIGlmIGZlYXR1cmUgPT0gJ3JlcXVpcmUnIG9yIGZlYXR1cmUg PT0gJ19faW5pdF9fJzoKKysgICAgICAgICAgICAgICAgY29udGludWUKKysgICAgICAgICAgICBy ZXN1bHQuYXBwZW5kIChmZWF0dXJlKQorKyAgICAgICAgcmV0dXJuIHJlc3VsdAorKworK1JlcXVp cmVDb21tYW5kKCkKKytSZXF1aXJlU3ViY29tbWFuZCgiY29tbWFuZCIpCisrUmVxdWlyZVN1YmNv bW1hbmQoImZ1bmN0aW9uIikKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFu ZC9zYXZlX2JyZWFrcG9pbnRzLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvc2F2ZV9i cmVha3BvaW50cy5weQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjYxNDMx ODcKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3NhdmVf YnJlYWtwb2ludHMucHkKK0BAIC0wLDAgKzEsNjUgQEAKKysjIFNhdmUgYnJlYWtwb2ludHMuCiAr Ci0rICBpZiAoIWZvdW5kKQotKyAgICB7Ci0rICAgICAgZ2RiX2Fzc2VydCAoIWlzX2x3cCAoaW5m ZXJpb3JfcHRpZCkpOworKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgogKwotKyAgICAgIHJldHZhbCB8PSBsaW51eF9vcHMtPnRvX2RldGFj aF93YXRjaHBvaW50cyAoKTsKLSsgICAgfQorKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysj CisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K KysKKytmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CisraW1wb3J0IGdkYgor KworK2NsYXNzIFNhdmVQcmVmaXhDb21tYW5kIChnZGIuQ29tbWFuZCk6CisrICAiUHJlZml4IGNv bW1hbmQgZm9yIHNhdmluZyB0aGluZ3MuIgorKworKyAgZGVmIF9faW5pdF9fIChzZWxmKToKKysg ICAgc3VwZXIgKFNhdmVQcmVmaXhDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAoInNhdmUiLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NTUFORF9T VVBQT1JULAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn ZGIuQ09NUExFVEVfTk9ORSwgVHJ1ZSkKKysKKytjbGFzcyBTYXZlQnJlYWtwb2ludHNDb21tYW5k IChnZGIuQ29tbWFuZCk6CisrICAgICIiIlNhdmUgdGhlIGN1cnJlbnQgYnJlYWtwb2ludHMgdG8g YSBmaWxlLgorK1RoaXMgY29tbWFuZCB0YWtlcyBhIHNpbmdsZSBhcmd1bWVudCwgYSBmaWxlIG5h bWUuCisrVGhlIGJyZWFrcG9pbnRzIGNhbiBiZSByZXN0b3JlZCB1c2luZyB0aGUgJ3NvdXJjZScg Y29tbWFuZC4iIiIKKysKKysgICAgZGVmIF9faW5pdF9fIChzZWxmKToKKysgICAgICAgIHN1cGVy IChTYXZlQnJlYWtwb2ludHNDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAoInNhdmUgYnJlYWtwb2lu dHMiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBnZGIuQ09NTUFORF9TVVBQT1JULAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NUExFVEVfRklMRU5BTUUpCisrCisrICAg IGRlZiBpbnZva2UgKHNlbGYsIGFyZywgZnJvbV90dHkpOgorKyAgICAgICAgc2VsZi5kb250X3Jl cGVhdCAoKQorKyAgICAgICAgYnBzID0gZ2RiLmJyZWFrcG9pbnRzICgpCisrICAgICAgICBpZiBi cHMgaXMgTm9uZToKKysgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IsICdObyBicmVha3Bv aW50cyB0byBzYXZlJworKyAgICAgICAgd2l0aCBvcGVuIChhcmcuc3RyaXAgKCksICd3JykgYXMg ZjoKKysgICAgICAgICAgICBmb3IgYnAgaW4gYnBzOgorKyAgICAgICAgICAgICAgICBwcmludCA+ PiBmLCAiYnJlYWsiLCBicC5sb2NhdGlvbiwKKysgICAgICAgICAgICAgICAgaWYgYnAudGhyZWFk IGlzIG5vdCBOb25lOgorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgPj4gZiwgIiB0aHJlYWQi LCBicC50aHJlYWQsCisrICAgICAgICAgICAgICAgIGlmIGJwLmNvbmRpdGlvbiBpcyBub3QgTm9u ZToKKysgICAgICAgICAgICAgICAgICAgIHByaW50ID4+IGYsICIgaWYiLCBicC5jb25kaXRpb24s CisrICAgICAgICAgICAgICAgIHByaW50ID4+IGYKKysgICAgICAgICAgICAgICAgaWYgbm90IGJw LmVuYWJsZWQ6CisrICAgICAgICAgICAgICAgICAgICBwcmludCA+PiBmLCAiZGlzYWJsZSAkYnBu dW0iCisrICAgICAgICAgICAgICAgICMgTm90ZTogd2UgZG9uJ3Qgc2F2ZSB0aGUgaWdub3JlIGNv dW50OyB0aGVyZSBkb2Vzbid0CisrICAgICAgICAgICAgICAgICMgc2VlbSB0byBiZSBtdWNoIHBv aW50LgorKyAgICAgICAgICAgICAgICBjb21tYW5kcyA9IGJwLmNvbW1hbmRzCisrICAgICAgICAg ICAgICAgIGlmIGNvbW1hbmRzIGlzIG5vdCBOb25lOgorKyAgICAgICAgICAgICAgICAgICAgcHJp bnQgPj4gZiwgImNvbW1hbmRzIgorKyAgICAgICAgICAgICAgICAgICAgIyBOb3RlIHRoYXQgQ09N TUFORFMgaGFzIGEgdHJhaWxpbmcgbmV3bGluZS4KKysgICAgICAgICAgICAgICAgICAgIHByaW50 ID4+IGYsIGNvbW1hbmRzLAorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgPj4gZiwgImVuZCIK KysgICAgICAgICAgICAgICAgcHJpbnQgPj4gZgorKworK1NhdmVQcmVmaXhDb21tYW5kICgpCisr U2F2ZUJyZWFrcG9pbnRzQ29tbWFuZCAoKQorZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dk Yi9jb21tYW5kL3VwdG8ucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC91cHRvLnB5Citu ZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZmFmNTRlZAorLS0tIC9kZXYvbnVs bAorKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvdXB0by5weQorQEAgLTAsMCArMSwx MjkgQEAKKysjIHVwdG8gY29tbWFuZC4KKysKKysjIENvcHlyaWdodCAoQykgMjAwOSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisr IworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CiArCi0rICByZXR1cm4gcmV0dmFsOwotK30KKytpbXBvcnQgZ2RiCisraW1wb3J0IHJlCisrZnJv bSBnZGIuRnJhbWVJdGVyYXRvciBpbXBvcnQgRnJhbWVJdGVyYXRvcgorK2Zyb20gZ2RiLkZyYW1l V3JhcHBlciBpbXBvcnQgRnJhbWVXcmFwcGVyCisrCisrY2xhc3MgVXB0b1ByZWZpeCAoZ2RiLkNv bW1hbmQpOgorKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgorKyAgICAgICAgc3VwZXIgKFVwdG9Q cmVmaXgsIHNlbGYpLl9faW5pdF9fICgidXB0byIsIGdkYi5DT01NQU5EX1NUQUNLLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXggPSBUcnVlKQorKwor K2NsYXNzIFVwdG9JbXBsZW1lbnRhdGlvbiAoZ2RiLkNvbW1hbmQpOgorKyAgICBkZWYgX19pbml0 X18gKHNlbGYsIHN1YmNvbW1hbmQpOgorKyAgICAgICAgc3VwZXIgKFVwdG9JbXBsZW1lbnRhdGlv biwgc2VsZikuX19pbml0X18gKCJ1cHRvICIgKyBzdWJjb21tYW5kLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01NQU5EX1NUQUNLKQor KworKyAgICBkZWYgc2VhcmNoIChzZWxmKToKKysgICAgICAgIHNhdmVkID0gZ2RiLnNlbGVjdGVk X2ZyYW1lICgpCisrICAgICAgICBpdGVyID0gRnJhbWVJdGVyYXRvciAoc2F2ZWQpCisrICAgICAg ICBmb3VuZCA9IEZhbHNlCisrICAgICAgICB0cnk6CisrICAgICAgICAgICAgZm9yIGZyYW1lIGlu IGl0ZXI6CisrICAgICAgICAgICAgICAgIGZyYW1lLnNlbGVjdCAoKQorKyAgICAgICAgICAgICAg ICB0cnk6CisrICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmZpbHRlciAoZnJhbWUpOgorKyAg ICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXIgPSBGcmFtZVdyYXBwZXIgKGZyYW1lKQorKyAg ICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXIuZGVzY3JpYmUgKHN5cy5zdGRvdXQsIEZhbHNl KQorKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgorKyAgICAgICAgICAgICAgICBleGNl cHQ6CisrICAgICAgICAgICAgICAgICAgICBwYXNzCisrICAgICAgICBleGNlcHQ6CisrICAgICAg ICAgICAgcGFzcworKyAgICAgICAgc2F2ZWQuc2VsZWN0ICgpCisrICAgICAgICByYWlzZSBSdW50 aW1lRXJyb3IsICdDb3VsZCBub3QgZmluZCBhIG1hdGNoaW5nIGZyYW1lJworKworKyAgICBkZWYg aW52b2tlIChzZWxmLCBhcmcsIGZyb21fdHR5KToKKysgICAgICAgIHNlbGYucnggPSByZS5jb21w aWxlIChhcmcpCisrICAgICAgICBzZWxmLnNlYXJjaCAoKQorKworK2NsYXNzIFVwdG9TeW1ib2xD b21tYW5kIChVcHRvSW1wbGVtZW50YXRpb24pOgorKyAgICAiIiJTZWxlY3QgYW5kIHByaW50IHNv bWUgY2FsbGluZyBzdGFjayBmcmFtZSwgYmFzZWQgb24gc3ltYm9sLgorK1RoZSBhcmd1bWVudCBp cyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4gIFRoaXMgY29tbWFuZCBtb3ZlcyB1cCB0aGUKKytzdGFj aywgc3RvcHBpbmcgYXQgdGhlIGZpcnN0IGZyYW1lIHdob3NlIHN5bWJvbCBtYXRjaGVzIHRoZSBy ZWd1bGFyCisrZXhwcmVzc2lvbi4iIiIKKysKKysgICAgZGVmIF9faW5pdF9fIChzZWxmKToKKysg ICAgICAgIHN1cGVyIChVcHRvU3ltYm9sQ29tbWFuZCwgc2VsZikuX19pbml0X18gKCJzeW1ib2wi KQorKworKyAgICBkZWYgZmlsdGVyIChzZWxmLCBmcmFtZSk6CisrICAgICAgICBuYW1lID0gZnJh bWUubmFtZSAoKQorKyAgICAgICAgaWYgbmFtZSBpcyBub3QgTm9uZToKKysgICAgICAgICAgICBp ZiBzZWxmLnJ4LnNlYXJjaCAobmFtZSkgaXMgbm90IE5vbmU6CisrICAgICAgICAgICAgICAgIHJl dHVybiBUcnVlCisrICAgICAgICByZXR1cm4gRmFsc2UKKysKKytjbGFzcyBVcHRvU291cmNlQ29t bWFuZCAoVXB0b0ltcGxlbWVudGF0aW9uKToKKysgICAgIiIiU2VsZWN0IGFuZCBwcmludCBzb21l IGNhbGxpbmcgc3RhY2sgZnJhbWUsIGJhc2VkIG9uIHNvdXJjZSBmaWxlLgorK1RoZSBhcmd1bWVu dCBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4gIFRoaXMgY29tbWFuZCBtb3ZlcyB1cCB0aGUKKytz dGFjaywgc3RvcHBpbmcgYXQgdGhlIGZpcnN0IGZyYW1lIHdob3NlIHNvdXJjZSBmaWxlIG5hbWUg bWF0Y2hlcyB0aGUKKytyZWd1bGFyIGV4cHJlc3Npb24uIiIiCisrCisrICAgIGRlZiBfX2luaXRf XyAoc2VsZik6CisrICAgICAgICBzdXBlciAoVXB0b1NvdXJjZUNvbW1hbmQsIHNlbGYpLl9faW5p dF9fICgic291cmNlIikKKysKKysgICAgZGVmIGZpbHRlciAoc2VsZiwgZnJhbWUpOgorKyAgICAg ICAgbmFtZSA9IGZyYW1lLmZpbmRfc2FsICgpLnN5bXRhYi5maWxlbmFtZQorKyAgICAgICAgaWYg bmFtZSBpcyBub3QgTm9uZToKKysgICAgICAgICAgICBpZiBzZWxmLnJ4LnNlYXJjaCAobmFtZSkg aXMgbm90IE5vbmU6CisrICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisrICAgICAgICByZXR1 cm4gRmFsc2UKKysKKytjbGFzcyBVcHRvT2JqZWN0Q29tbWFuZCAoVXB0b0ltcGxlbWVudGF0aW9u KToKKysgICAgIiIiU2VsZWN0IGFuZCBwcmludCBzb21lIGNhbGxpbmcgc3RhY2sgZnJhbWUsIGJh c2VkIG9uIG9iamVjdCBmaWxlLgorK1RoZSBhcmd1bWVudCBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lv bi4gIFRoaXMgY29tbWFuZCBtb3ZlcyB1cCB0aGUKKytzdGFjaywgc3RvcHBpbmcgYXQgdGhlIGZp cnN0IGZyYW1lIHdob3NlIG9iamVjdCBmaWxlIG5hbWUgbWF0Y2hlcyB0aGUKKytyZWd1bGFyIGV4 cHJlc3Npb24uIiIiCisrCisrICAgIGRlZiBfX2luaXRfXyAoc2VsZik6CisrICAgICAgICBzdXBl ciAoVXB0b09iamVjdENvbW1hbmQsIHNlbGYpLl9faW5pdF9fICgib2JqZWN0IikKKysKKysgICAg ZGVmIGZpbHRlciAoc2VsZiwgZnJhbWUpOgorKyAgICAgICAgbmFtZSA9IGZyYW1lLmZpbmRfc2Fs ICgpLnN5bXRhYi5vYmpmaWxlLmZpbGVuYW1lCisrICAgICAgICBpZiBuYW1lIGlzIG5vdCBOb25l OgorKyAgICAgICAgICAgIGlmIHNlbGYucnguc2VhcmNoIChuYW1lKSBpcyBub3QgTm9uZToKKysg ICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKysgICAgICAgIHJldHVybiBGYWxzZQorKworK2Ns YXNzIFVwdG9XaGVyZUNvbW1hbmQgKFVwdG9JbXBsZW1lbnRhdGlvbik6CisrICAgICIiIlNlbGVj dCBhbmQgcHJpbnQgc29tZSBjYWxsaW5nIHN0YWNrIGZyYW1lLCBiYXNlZCBvbiBleHByZXNzaW9u LgorK1RoZSBhcmd1bWVudCBpcyBhbiBleHByZXNzaW9uLiAgVGhpcyBjb21tYW5kIG1vdmVzIHVw IHRoZSBzdGFjaywKKytwYXJzaW5nIGFuZCBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9uIGluIGVh Y2ggZnJhbWUuICBUaGlzIHN0b3BzIHdoZW4KKyt0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8g YSBub24temVybyAodHJ1ZSkgdmFsdWUuIiIiCisrCisrICAgIGRlZiBfX2luaXRfXyAoc2VsZik6 CisrICAgICAgICBzdXBlciAoVXB0b1doZXJlQ29tbWFuZCwgc2VsZikuX19pbml0X18gKCJ3aGVy ZSIpCisrCisrICAgIGRlZiBmaWx0ZXIgKHNlbGYsIGZyYW1lKToKKysgICAgICAgIHRyeToKKysg ICAgICAgICAgICBpZiBnZGIucGFyc2VfYW5kX2V2YWwgKHNlbGYuZXhwcmVzc2lvbik6CisrICAg ICAgICAgICAgICAgIHJldHVybiBUcnVlCisrICAgICAgICBleGNlcHQ6CisrICAgICAgICAgICAg cGFzcworKyAgICAgICAgcmV0dXJuIEZhbHNlCisrCisrICAgIGRlZiBpbnZva2UgKHNlbGYsIGFy ZywgZnJvbV90dHkpOgorKyAgICAgICAgc2VsZi5leHByZXNzaW9uID0gYXJnCisrICAgICAgICBz ZWxmLnNlYXJjaCAoKQorKworK1VwdG9QcmVmaXggKCkKKytVcHRvU3ltYm9sQ29tbWFuZCAoKQor K1VwdG9Tb3VyY2VDb21tYW5kICgpCisrVXB0b09iamVjdENvbW1hbmQgKCkKKytVcHRvV2hlcmVD b21tYW5kICgpCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL19faW5p dF9fLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5CituZXcgZmls ZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uOGIxMzc4OQorLS0tIC9kZXYvbnVsbAorKysr IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5CitAQCAtMCwwICsxIEBA CiArCi0gLyogV2FpdCB1bnRpbCBMUCBpcyBzdG9wcGVkLiAgKi8KLSAKLSBzdGF0aWMgaW50Ci1A QCAtNTYwNiw2ICs1NjM5LDggQEAgbGludXhfbmF0X2FkZF90YXJnZXQgKHN0cnVjdCB0YXJnZXRf b3BzICp0KQotICAgdC0+dG9fdGhyZWFkX2FkZHJlc3Nfc3BhY2UgPSBsaW51eF9uYXRfdGhyZWFk X2FkZHJlc3Nfc3BhY2U7Ci0gICB0LT50b19zdG9wcGVkX2J5X3dhdGNocG9pbnQgPSBsaW51eF9u YXRfc3RvcHBlZF9ieV93YXRjaHBvaW50OwotICAgdC0+dG9fc3RvcHBlZF9kYXRhX2FkZHJlc3Mg PSBsaW51eF9uYXRfc3RvcHBlZF9kYXRhX2FkZHJlc3M7Ci0rICBpZiAobGludXhfb3BzLT50b19k ZXRhY2hfd2F0Y2hwb2ludHMpCi0rICAgIHQtPnRvX2RldGFjaF93YXRjaHBvaW50cyA9IGxpbnV4 X25hdF9kZXRhY2hfd2F0Y2hwb2ludHM7Ci0gCi0gICB0LT50b19jYW5fYXN5bmNfcCA9IGxpbnV4 X25hdF9jYW5fYXN5bmNfcDsKLSAgIHQtPnRvX2lzX2FzeW5jX3AgPSBsaW51eF9uYXRfaXNfYXN5 bmNfcDsKLWRpZmYgLS1naXQgYS9nZGIvbGludXgtdGRlcC5jIGIvZ2RiL2xpbnV4LXRkZXAuYwot aW5kZXggMDdmZDY3Yy4uMjUyNDI1MCAxMDA2NDQKLS0tLSBhL2dkYi9saW51eC10ZGVwLmMKLSsr KyBiL2dkYi9saW51eC10ZGVwLmMKLUBAIC0yMyw2ICsyMyw4IEBACi0gI2luY2x1ZGUgImF1eHYu aCIKLSAjaW5jbHVkZSAidGFyZ2V0LmgiCi0gI2luY2x1ZGUgImVsZi9jb21tb24uaCIKLSsjaW5j bHVkZSAidmFsdWUuaCIKLSsjaW5jbHVkZSAiaW5mY2FsbC5oIgotIAotIC8qIFRoaXMgZnVuY3Rp b24gaXMgc3VpdGFibGUgZm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBkb24ndAotICAgIGV4dGVuZC9v dmVycmlkZSB0aGUgc3RhbmRhcmQgc2lnaW5mbyBzdHJ1Y3R1cmUuICAqLwotZGlmZiAtLWdpdCBh L2dkYi9taS9taS1jbWQtdmFyLmMgYi9nZGIvbWkvbWktY21kLXZhci5jCi1pbmRleCAzMTBhZGU5 Li5kODcxMGExIDEwMDY0NAotLS0tIGEvZ2RiL21pL21pLWNtZC12YXIuYwotKysrIGIvZ2RiL21p L21pLWNtZC12YXIuYwotQEAgLTcwMiw3ICs3MDIsNiBAQCBtaV9jbWRfdmFyX3VwZGF0ZSAoY2hh ciAqY29tbWFuZCwgY2hhciAqKmFyZ3YsIGludCBhcmdjKQotICAgICB9Ci0gICBlbHNlCi0gICAg IHsKLS0gICAgICAvKiBHZXQgdmFyb2JqIGhhbmRsZSwgaWYgYSB2YWxpZCB2YXIgb2JqIG5hbWUg d2FzIHNwZWNpZmllZCAqLwotICAgICAgIHN0cnVjdCB2YXJvYmogKnZhciA9IHZhcm9ial9nZXRf aGFuZGxlIChuYW1lKTsKLSAKLSAgICAgICB2YXJvYmpfdXBkYXRlX29uZSAodmFyLCBwcmludF92 YWx1ZXMsIDEgLyogZXhwbGljaXQgKi8pOwotZGlmZiAtLWdpdCBhL2dkYi9taW5zeW1zLmMgYi9n ZGIvbWluc3ltcy5jCi1pbmRleCBjYjQ1NDVjLi45MmQ0MDI3IDEwMDY0NAotLS0tIGEvZ2RiL21p bnN5bXMuYwotKysrIGIvZ2RiL21pbnN5bXMuYwotQEAgLTMzNyw4ICszMzcsOSBAQCBsb29rdXBf bWluaW1hbF9zeW1ib2xfdGV4dCAoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IG9iamZpbGUgKm9i amYpCi0gCSAgICAgICBtc3ltYm9sID0gbXN5bWJvbC0+aGFzaF9uZXh0KQotIAkgICAgewotIAkg ICAgICBpZiAoc3RyY21wIChTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKSwgbmFtZSkgPT0g MCAmJgotLQkJICAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dCB8fAotLQkJICAg TVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfZmlsZV90ZXh0KSkKLSsJCSAgKE1TWU1CT0xf VFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHQKLSsJCSAgIHx8IE1TWU1CT0xfVFlQRSAobXN5bWJv bCkgPT0gbXN0X3RleHRfZ251X2lmdW5jCi0rCQkgICB8fCBNU1lNQk9MX1RZUEUgKG1zeW1ib2wp ID09IG1zdF9maWxlX3RleHQpKQotIAkJewotIAkJICBzd2l0Y2ggKE1TWU1CT0xfVFlQRSAobXN5 bWJvbCkpCi0gCQkgICAgewotQEAgLTcwMCw2ICs3MDEsMTYgQEAgbG9va3VwX21pbmltYWxfc3lt Ym9sX2J5X3BjIChDT1JFX0FERFIgcGMpCi0gICByZXR1cm4gbG9va3VwX21pbmltYWxfc3ltYm9s X2J5X3BjX3NlY3Rpb24gKHBjLCBOVUxMKTsKLSB9Ci0gCi0rLyogUmV0dXJuIG5vbi16ZXJvIGlm ZiBQQyBpcyBpbiBmdW5jdGlvbiBpbXBsZW1lbnRpbmcgZ251LWlmdW5jIHNlbGVjdGlvbi4gICov CitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL2NhbGxlcl9pcy5weSBi L2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9jYWxsZXJfaXMucHkKK25ldyBmaWxlIG1vZGUg MTAwNjQ0CitpbmRleCAwMDAwMDAwLi4yYjljNWM3CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIv cHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2FsbGVyX2lzLnB5CitAQCAtMCwwICsxLDU4IEBACisr IyBDYWxsZXItaXMgZnVuY3Rpb25zLgogKwotK2ludAotK2luX2dudV9pZnVuY19zdHViIChDT1JF X0FERFIgcGMpCi0rewotKyAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sID0gbG9va3Vw X21pbmltYWxfc3ltYm9sX2J5X3BjIChwYyk7CisrIyBDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCi0rICByZXR1cm4gbXN5bWJvbCAmJiBNU1lNQk9M X1RZUEUgKG1zeW1ib2wpID09IG1zdF90ZXh0X2dudV9pZnVuYzsKLSt9CisrIyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgogKwotIC8qIEZpbmQgdGhlIG1pbmltYWwgc3ltYm9sIG5hbWVkIE5B TUUsIGFuZCByZXR1cm4gYm90aCB0aGUgbWluc3ltCi0gICAgc3RydWN0IGFuZCBpdHMgb2JqZmls ZS4gIFRoaXMgb25seSBjaGVja3MgdGhlIGxpbmthZ2UgbmFtZS4gIFNldHMKLSAgICAqT0JKRklM RV9QIGFuZCByZXR1cm5zIHRoZSBtaW5pbWFsIHN5bWJvbCwgaWYgaXQgaXMgZm91bmQuICBJZiBp dAotQEAgLTc2OSw2ICs3ODAsNyBAQCBwcmltX3JlY29yZF9taW5pbWFsX3N5bWJvbCAoY29uc3Qg Y2hhciAqbmFtZSwgQ09SRV9BRERSIGFkZHJlc3MsCi0gICBzd2l0Y2ggKG1zX3R5cGUpCi0gICAg IHsKLSAgICAgY2FzZSBtc3RfdGV4dDoKLSsgICAgY2FzZSBtc3RfdGV4dF9nbnVfaWZ1bmM6Ci0g ICAgIGNhc2UgbXN0X2ZpbGVfdGV4dDoKLSAgICAgY2FzZSBtc3Rfc29saWJfdHJhbXBvbGluZToK LSAgICAgICBzZWN0aW9uID0gU0VDVF9PRkZfVEVYVCAob2JqZmlsZSk7Ci1AQCAtMTIzNSw3ICsx MjQ3LDggQEAgZmluZF9zb2xpYl90cmFtcG9saW5lX3RhcmdldCAoc3RydWN0IGZyYW1lX2luZm8g KmZyYW1lLCBDT1JFX0FERFIgcGMpCi0gICAgIHsKLSAgICAgICBBTExfTVNZTUJPTFMgKG9iamZp bGUsIG1zeW1ib2wpCi0gICAgICAgewotLQlpZiAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBt c3RfdGV4dAotKwlpZiAoKE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHQKLSsJICAg IHx8IE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHRfZ251X2lmdW5jKQotIAkgICAg JiYgc3RyY21wIChTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKSwKLSAJCSAgICAgICBTWU1C T0xfTElOS0FHRV9OQU1FICh0c3ltYm9sKSkgPT0gMCkKLSAJICByZXR1cm4gU1lNQk9MX1ZBTFVF X0FERFJFU1MgKG1zeW1ib2wpOwotZGlmZiAtLWdpdCBhL2dkYi9wLWxhbmcuYyBiL2dkYi9wLWxh bmcuYwotaW5kZXggMDg3MzhhYy4uNjRkMmU5ZiAxMDA2NDQKLS0tLSBhL2dkYi9wLWxhbmcuYwot KysrIGIvZ2RiL3AtbGFuZy5jCi1AQCAtMjIyLDcgKzIyMiwxMSBAQCBwYXNjYWxfcHJpbnRzdHIg KHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIHN0cnVjdCB0eXBlICp0eXBlLAotICAgdW5zaWduZWQg aW50IHRoaW5nc19wcmludGVkID0gMDsKLSAgIGludCBpbl9xdW90ZXMgPSAwOwotICAgaW50IG5l ZWRfY29tbWEgPSAwOwotLSAgaW50IHdpZHRoID0gVFlQRV9MRU5HVEggKHR5cGUpOwotKyAgaW50 IHdpZHRoOworK2ltcG9ydCBnZGIKKytpbXBvcnQgcmUKKysKKytjbGFzcyBDYWxsZXJJcyAoZ2Ri LkZ1bmN0aW9uKToKKysgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGNhbGxpbmcgZnVuY3Rpb24n cyBuYW1lIGlzIGVxdWFsIHRvIGEgc3RyaW5nLgorK1RoaXMgZnVuY3Rpb24gdGFrZXMgb25lIG9y IHR3byBhcmd1bWVudHMuCisrVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIGEgZnVu Y3Rpb247IGlmIHRoZSBjYWxsaW5nIGZ1bmN0aW9uJ3MKKytuYW1lIGlzIGVxdWFsIHRvIHRoaXMg YXJndW1lbnQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBUcnVlLgorK1RoZSBvcHRpb25hbCBzZWNv bmQgYXJndW1lbnQgdGVsbHMgdGhpcyBmdW5jdGlvbiBob3cgbWFueSBzdGFjayBmcmFtZXMKKyt0 byB0cmF2ZXJzZSB0byBmaW5kIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiAgVGhlIGRlZmF1bHQgaXMg MS4iIiIKKysKKysgICAgZGVmIF9faW5pdF9fIChzZWxmKToKKysgICAgICAgIHN1cGVyIChDYWxs ZXJJcywgc2VsZikuX19pbml0X18gKCJjYWxsZXJfaXMiKQorKworKyAgICBkZWYgaW52b2tlIChz ZWxmLCBuYW1lLCBuZnJhbWVzID0gMSk6CisrICAgICAgICBmcmFtZSA9IGdkYi5zZWxlY3RlZF9m cmFtZSAoKQorKyAgICAgICAgd2hpbGUgbmZyYW1lcyA+IDA6CisrICAgICAgICAgICAgZnJhbWUg PSBmcmFtZS5vbGRlciAoKQorKyAgICAgICAgICAgIG5mcmFtZXMgPSBuZnJhbWVzIC0gMQorKyAg ICAgICAgcmV0dXJuIGZyYW1lLm5hbWUgKCkgPT0gbmFtZS5zdHJpbmcgKCkKKysKKytjbGFzcyBD YWxsZXJNYXRjaGVzIChnZGIuRnVuY3Rpb24pOgorKyAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUg Y2FsbGluZyBmdW5jdGlvbidzIG5hbWUgbWF0Y2hlcyBhIHN0cmluZy4KKytUaGlzIGZ1bmN0aW9u IHRha2VzIG9uZSBvciB0d28gYXJndW1lbnRzLgorK1RoZSBmaXJzdCBhcmd1bWVudCBpcyBhIHJl Z3VsYXIgZXhwcmVzc2lvbjsgaWYgdGhlIGNhbGxpbmcgZnVuY3Rpb24ncworK25hbWUgaXMgbWF0 Y2hlZCBieSB0aGlzIGFyZ3VtZW50LCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgVHJ1ZS4KKytUaGUg b3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50IHRlbGxzIHRoaXMgZnVuY3Rpb24gaG93IG1hbnkgc3Rh Y2sgZnJhbWVzCisrdG8gdHJhdmVyc2UgdG8gZmluZCB0aGUgY2FsbGluZyBmdW5jdGlvbi4gIFRo ZSBkZWZhdWx0IGlzIDEuIiIiCisrCisrICAgIGRlZiBfX2luaXRfXyAoc2VsZik6CisrICAgICAg ICBzdXBlciAoQ2FsbGVyTWF0Y2hlcywgc2VsZikuX19pbml0X18gKCJjYWxsZXJfbWF0Y2hlcyIp CisrCisrICAgIGRlZiBpbnZva2UgKHNlbGYsIG5hbWUsIG5mcmFtZXMgPSAxKToKKysgICAgICAg IGZyYW1lID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpCisrICAgICAgICB3aGlsZSBuZnJhbWVzID4g MDoKKysgICAgICAgICAgICBmcmFtZSA9IGZyYW1lLm9sZGVyICgpCisrICAgICAgICAgICAgbmZy YW1lcyA9IG5mcmFtZXMgLSAxCisrICAgICAgICByZXR1cm4gcmUubWF0Y2ggKG5hbWUuc3RyaW5n ICgpLCBmcmFtZS5uYW1lICgpKSBpcyBub3QgTm9uZQorKworK0NhbGxlcklzKCkKKytDYWxsZXJN YXRjaGVzKCkKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2Nv cGUucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkKK25ldyBmaWxl IG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5kZWJiM2JiCistLS0gL2Rldi9udWxsCisrKysg Yi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkKK0BAIC0wLDAgKzEsNDcg QEAKKysjIEluLXNjb3BlIGZ1bmN0aW9uLgogKwotKyAgLyogUHJlc2VydmUgVFlQRSdzIG9yaWdp bmFsIHR5cGUsIGp1c3Qgc2V0IGl0cyBMRU5HVEguICAqLwotKyAgY2hlY2tfdHlwZWRlZiAodHlw ZSk7Ci0rICB3aWR0aCA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAKLSAgIC8qIElmIHRoZSBzdHJp bmcgd2FzIG5vdCB0cnVuY2F0ZWQgZHVlIHRvIGBzZXQgcHJpbnQgZWxlbWVudHMnLCBhbmQKLSAg ICAgIHRoZSBsYXN0IGJ5dGUgb2YgaXQgaXMgYSBudWxsLCB3ZSBkb24ndCBwcmludCB0aGF0LCBp biB0cmFkaXRpb25hbCBDCi1kaWZmIC0tZ2l0IGEvZ2RiL3AtdmFscHJpbnQuYyBiL2dkYi9wLXZh bHByaW50LmMKLWluZGV4IDRkMzliZWQuLmQwZGRlYmMgMTAwNjQ0Ci0tLS0gYS9nZGIvcC12YWxw cmludC5jCi0rKysgYi9nZGIvcC12YWxwcmludC5jCi1AQCAtMzgsNiArMzgsNyBAQAotICNpbmNs dWRlICJwLWxhbmcuaCIKLSAjaW5jbHVkZSAiY3AtYWJpLmgiCi0gI2luY2x1ZGUgImNwLXN1cHBv cnQuaCIKLSsjaW5jbHVkZSAiZHdhcmYybG9jLmgiCi0gDAotIAotIAotQEAgLTY4LDggKzY5LDI3 IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAq dmFsYWRkciwKLSAgIHN0cnVjdCB0eXBlICpjaGFyX3R5cGU7Ci0gICBMT05HRVNUIHZhbDsKLSAg IENPUkVfQUREUiBhZGRyOwotKyAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87Ci0rICBzdHJ1Y3Qg dHlwZSAqc2F2ZWRfdHlwZSA9IHR5cGU7Ci0rICBDT1JFX0FERFIgc2F2ZWRfYWRkcmVzcyA9IGFk ZHJlc3M7Ci0rICAKLSsgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgMCk7 Ci0rICB0eXBlID0gb2JqZWN0X2FkZHJlc3NfZ2V0X2RhdGEgKHR5cGUsICZhZGRyZXNzKTsKLSsg IGlmICh0eXBlID09IE5VTEwpCi0rICAgIHsKLSsgICAgICBmcHV0c19maWx0ZXJlZCAob2JqZWN0 X2FkZHJlc3NfZGF0YV9ub3RfdmFsaWQgKHNhdmVkX3R5cGUpLCBzdHJlYW0pOwotKyAgICAgIGdk Yl9mbHVzaCAoc3RyZWFtKTsKLSsgICAgICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0rICAgICAg cmV0dXJuIDA7Ci0rICAgIH0KLSsgIGlmIChhZGRyZXNzICE9IHNhdmVkX2FkZHJlc3MpCi0rICAg IHsKLSsgICAgICBzaXplX3QgbGVuZ3RoID0gVFlQRV9MRU5HVEggKHR5cGUpOwotIAotLSAgQ0hF Q0tfVFlQRURFRiAodHlwZSk7Ci0rICAgICAgdmFsYWRkciA9IHhtYWxsb2MgKGxlbmd0aCk7Ci0r ICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgKGdkYl9ieXRlICopIHZhbGFkZHIpOwotKyAgICAg IHJlYWRfbWVtb3J5IChhZGRyZXNzLCAoZ2RiX2J5dGUgKikgdmFsYWRkciwgbGVuZ3RoKTsKLSsg ICAgfQotICAgc3dpdGNoIChUWVBFX0NPREUgKHR5cGUpKQotICAgICB7Ci0gICAgIGNhc2UgVFlQ RV9DT0RFX0FSUkFZOgotQEAgLTEyNSw4ICsxNDUsOSBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1 Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCi0gCQl7Ci0gCQkgIGkgPSAw OwotIAkJfQotLQkgICAgICB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHR5cGUsIHZhbGFkZHIg KyBlbWJlZGRlZF9vZmZzZXQsIGFkZHJlc3MsIHN0cmVhbSwKLS0JCQkJCXJlY3Vyc2UsIG9yaWdp bmFsX3ZhbHVlLCBvcHRpb25zLCBpKTsKLSsJICAgICAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRz IChzYXZlZF90eXBlLCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LAotKwkJCQkJc2F2ZWRfYWRk cmVzcywgc3RyZWFtLCByZWN1cnNlLAotKwkJCQkJb3JpZ2luYWxfdmFsdWUsIG9wdGlvbnMsIGkp OwotIAkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ9Iik7Ci0gCSAgICB9Ci0gCSAg YnJlYWs7Ci1AQCAtMTY0LDYgKzE4NSw3IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBl ICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKLSAJICAvKiBUcnkgdG8gcHJpbnQgd2hh dCBmdW5jdGlvbiBpdCBwb2ludHMgdG8uICAqLwotIAkgIHByaW50X2FkZHJlc3NfZGVtYW5nbGUg KGdkYmFyY2gsIGFkZHIsIHN0cmVhbSwgZGVtYW5nbGUpOwotIAkgIC8qIFJldHVybiB2YWx1ZSBp cyBpcnJlbGV2YW50IGV4Y2VwdCBmb3Igc3RyaW5nIHBvaW50ZXJzLiAgKi8KLSsJICBkb19jbGVh bnVwcyAoYmFja190byk7Ci0gCSAgcmV0dXJuICgwKTsKLSAJfQotIAotQEAgLTI1Miw2ICsyNzQs NyBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUg KnZhbGFkZHIsCi0gICAgICAgLyogUmV0dXJuIG51bWJlciBvZiBjaGFyYWN0ZXJzIHByaW50ZWQs IGluY2x1ZGluZyB0aGUgdGVybWluYXRpbmcKLSAJICdcMCcgaWYgd2UgcmVhY2hlZCB0aGUgZW5k LiAgdmFsX3ByaW50X3N0cmluZyB0YWtlcyBjYXJlIGluY2x1ZGluZwotIAkgdGhlIHRlcm1pbmF0 aW5nICdcMCcgaWYgbmVjZXNzYXJ5LiAgKi8KLSsgICAgICBkb19jbGVhbnVwcyAoYmFja190byk7 Ci0gICAgICAgcmV0dXJuIGk7Ci0gCi0gICAgICAgYnJlYWs7Ci1AQCAtNTU0LDYgKzU3Nyw3IEBA IHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFs YWRkciwKLSAgICAgICBlcnJvciAoXygiSW52YWxpZCBwYXNjYWwgdHlwZSBjb2RlICVkIGluIHN5 bWJvbCB0YWJsZS4iKSwgVFlQRV9DT0RFICh0eXBlKSk7Ci0gICAgIH0KLSAgIGdkYl9mbHVzaCAo c3RyZWFtKTsKLSsgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSAgIHJldHVybiAoMCk7Ci0gfQot IAwKLWRpZmYgLS1naXQgYS9nZGIvcGFyc2UuYyBiL2dkYi9wYXJzZS5jCi1pbmRleCBjODg1YzZh Li5jYmY5YzY1IDEwMDY0NAotLS0tIGEvZ2RiL3BhcnNlLmMKLSsrKyBiL2dkYi9wYXJzZS5jCi1A QCAtNDg3LDkgKzQ4NywyMSBAQCB3cml0ZV9leHBfbXN5bWJvbCAoc3RydWN0IG1pbmltYWxfc3lt Ym9sICptc3ltYm9sKQotICAgcGMgPSBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRy IChnZGJhcmNoLCBhZGRyLCAmY3VycmVudF90YXJnZXQpOwotICAgaWYgKHBjICE9IGFkZHIpCi0g ICAgIHsKLSsgICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKmlmdW5jX21zeW0gPSBsb29rdXBf bWluaW1hbF9zeW1ib2xfYnlfcGMgKHBjKTsKKysjIENvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKLSAgICAgICAvKiBJbiB0aGlzIGNhc2UsIGFzc3Vt ZSB3ZSBoYXZlIGEgY29kZSBzeW1ib2wgaW5zdGVhZCBvZgotIAkgYSBkYXRhIHN5bWJvbC4gICov Ci0tICAgICAgdHlwZSA9IG1zdF90ZXh0OworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysj CisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K ICsKLSsgICAgICBpZiAoaWZ1bmNfbXN5bSAhPSBOVUxMICYmIE1TWU1CT0xfVFlQRSAoaWZ1bmNf bXN5bSkgPT0gbXN0X3RleHRfZ251X2lmdW5jCi0rCSAgJiYgU1lNQk9MX1ZBTFVFX0FERFJFU1Mg KGlmdW5jX21zeW0pID09IHBjKQotKwl7Ci0rCSAgLyogQSBmdW5jdGlvbiBkZXNjcmlwdG9yIGhh cyBiZWVuIHJlc29sdmVkIGJ1dCBQQyBpcyBzdGlsbCBpbiB0aGUKLSsJICAgICBnbnUtaWZ1bmMg cmVzb2x2ZXIgYm9keSAoc3VjaCBhcyBiZWNhdXNlIGluZmVyaW9yIGRvZXMgbm90IHJ1biB0bwot KwkgICAgIGJlIGFibGUgdG8gY2FsbCBpdCkuICAqLwotKwkgIHR5cGUgPSBtc3RfdGV4dF9nbnVf aWZ1bmM7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXR5cGUgPSBtc3RfdGV4dDsKLSAgICAgICBzZWN0 aW9uID0gTlVMTDsKLSAgICAgICBhZGRyID0gcGM7Ci0gICAgIH0KLUBAIC01MjEsNiArNTMzLDEx IEBAIHdyaXRlX2V4cF9tc3ltYm9sIChzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2wpCi0g ICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5ub2RlYnVn X3RleHRfc3ltYm9sKTsKLSAgICAgICBicmVhazsKLSAKLSsgICAgY2FzZSBtc3RfdGV4dF9nbnVf aWZ1bmM6Ci0rICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChvYmpmaWxlX3R5cGUgKG9iamZpbGUp Ci0rCQkJCQkgICAgICAgLT5ub2RlYnVnX3RleHRfZ251X2lmdW5jX3N5bWJvbCk7Ci0rICAgICAg YnJlYWs7CisraW1wb3J0IGdkYgogKwotICAgICBjYXNlIG1zdF9kYXRhOgotICAgICBjYXNlIG1z dF9maWxlX2RhdGE6Ci0gICAgIGNhc2UgbXN0X2JzczoKLUBAIC01MjgsNiArNTQ1LDEwIEBAIHdy aXRlX2V4cF9tc3ltYm9sIChzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2wpCi0gICAgICAg d3JpdGVfZXhwX2VsdF90eXBlIChvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5ub2RlYnVnX2RhdGFf c3ltYm9sKTsKLSAgICAgICBicmVhazsKLSAKLSsgICAgY2FzZSBtc3Rfc2xvdF9nb3RfcGx0Ogot KyAgICAgIHdyaXRlX2V4cF9lbHRfdHlwZSAob2JqZmlsZV90eXBlIChvYmpmaWxlKS0+bm9kZWJ1 Z19nb3RfcGx0X3N5bWJvbCk7Ci0rICAgICAgYnJlYWs7CisrY2xhc3MgSW5TY29wZSAoZ2RiLkZ1 bmN0aW9uKToKKysgICAgIiIiUmV0dXJuIFRydWUgaWYgYWxsIHRoZSBnaXZlbiB2YXJpYWJsZXMg b3IgbWFjcm9zIGFyZSBpbiBzY29wZS4KKytUYWtlcyBvbmUgYXJndW1lbnQgZm9yIGVhY2ggdmFy aWFibGUgbmFtZSB0byBiZSBjaGVja2VkLiIiIgogKwotICAgICBkZWZhdWx0OgotICAgICAgIHdy aXRlX2V4cF9lbHRfdHlwZSAob2JqZmlsZV90eXBlIChvYmpmaWxlKS0+bm9kZWJ1Z191bmtub3du X3N5bWJvbCk7Ci0gICAgICAgYnJlYWs7Ci1AQCAtMTQxMiw2ICsxNDMzLDcgQEAgcGFyc2VyX2Zw cmludGYgKEZJTEUgKngsIGNvbnN0IGNoYXIgKnksIC4uLikKLSAKLSBpbnQKLSBvcGVyYXRvcl9j aGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKLSsJCQkgaW50 ICgqdHlwZV9mdW5jKSAoc3RydWN0IHR5cGUgKnR5cGUsIHZvaWQgKmRhdGEpLAotIAkJCSBpbnQg KCpvYmpmaWxlX2Z1bmMpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCQkJCSAgICAgIHZv aWQgKmRhdGEpLAotIAkJCSB2b2lkICpkYXRhKQotQEAgLTE0NTMsNyArMTQ3NSw3IEBAIG9wZXJh dG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAotIAkg ICAgc3RydWN0IHR5cGUgKnR5cGUgPSBlbHRzW3BvcyArIDIgKyBhcmddLnR5cGU7Ci0gCSAgICBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IFRZUEVfT0JKRklMRSAodHlwZSk7Ci0gCi0tCSAgICBp ZiAob2JqZmlsZSAmJiAoKm9iamZpbGVfZnVuYykgKG9iamZpbGUsIGRhdGEpKQotKwkgICAgaWYg KG9iamZpbGUgJiYgb2JqZmlsZV9mdW5jICYmICgqb2JqZmlsZV9mdW5jKSAob2JqZmlsZSwgZGF0 YSkpCi0gCSAgICAgIHJldHVybiAxOwotIAkgIH0KLSAgICAgICB9Ci1AQCAtMTQ3MSw3ICsxNDkz LDggQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGlu dCBwb3MsCi0gCi0gCS8qIENoZWNrIG9iamZpbGUgd2hlcmUgdGhlIHZhcmlhYmxlIGl0c2VsZiBp cyBwbGFjZWQuCi0gCSAgIFNZTUJPTF9PQkpfU0VDVElPTiAoc3ltYm9sKSBtYXkgYmUgTlVMTC4g ICovCi0tCWlmICgoKm9iamZpbGVfZnVuYykgKFNZTUJPTF9TWU1UQUIgKHN5bWJvbCktPm9iamZp bGUsIGRhdGEpKQotKwlpZiAob2JqZmlsZV9mdW5jCi0rCSAgICAmJiAoKm9iamZpbGVfZnVuYykg KFNZTUJPTF9TWU1UQUIgKHN5bWJvbCktPm9iamZpbGUsIGRhdGEpKQotIAkgIHJldHVybiAxOwot IAotIAkvKiBDaGVjayBvYmpmaWxlIHdoZXJlIGlzIHBsYWNlZCB0aGUgY29kZSB0b3VjaGluZyB0 aGUgdmFyaWFibGUuICAqLwotQEAgLTE0ODQsMjQgKzE1MDcsMjcgQEAgb3BlcmF0b3JfY2hlY2tf c3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCi0gCi0gICAvKiBJbnZv a2UgY2FsbGJhY2tzIGZvciBUWVBFIGFuZCBPQkpGSUxFIGlmIHRoZXkgd2VyZSBzZXQgYXMgbm9u LU5VTEwuICAqLwotIAotLSAgaWYgKHR5cGUgJiYgVFlQRV9PQkpGSUxFICh0eXBlKQotKyAgaWYg KHR5cGUgJiYgdHlwZV9mdW5jICYmICgqdHlwZV9mdW5jKSAodHlwZSwgZGF0YSkpCi0rICAgIHJl dHVybiAxOwotKyAgaWYgKHR5cGUgJiYgVFlQRV9PQkpGSUxFICh0eXBlKSAmJiBvYmpmaWxlX2Z1 bmMKLSAgICAgICAmJiAoKm9iamZpbGVfZnVuYykgKFRZUEVfT0JKRklMRSAodHlwZSksIGRhdGEp KQotICAgICByZXR1cm4gMTsKLS0gIGlmIChvYmpmaWxlICYmICgqb2JqZmlsZV9mdW5jKSAob2Jq ZmlsZSwgZGF0YSkpCi0rICBpZiAob2JqZmlsZSAmJiBvYmpmaWxlX2Z1bmMgJiYgKCpvYmpmaWxl X2Z1bmMpIChvYmpmaWxlLCBkYXRhKSkKLSAgICAgcmV0dXJuIDE7Ci0gCi0gICByZXR1cm4gMDsK LSB9Ci0gCi0tLyogQ2FsbCBPQkpGSUxFX0ZVTkMgZm9yIGFueSBUWVBFIGFuZCBPQkpGSUxFIGZv dW5kIGJlaW5nIHJlZmVyZW5jZWQgYnkgRVhQLgotLSAgIFRoZSBmdW5jdGlvbnMgYXJlIG5ldmVy IGNhbGxlZCB3aXRoIE5VTEwgT0JKRklMRS4gIEZ1bmN0aW9ucyBnZXQgcGFzc2VkIGFuCi0tICAg YXJiaXRyYXJ5IGNhbGxlciBzdXBwbGllZCBEQVRBIHBvaW50ZXIuICBJZiBhbnkgb2YgdGhlIGZ1 bmN0aW9ucyByZXR1cm5zCi0tICAgbm9uLXplcm8gdmFsdWUgdGhlbiAoYW55IG90aGVyKSBub24t emVybyB2YWx1ZSBpcyBpbW1lZGlhdGVseSByZXR1cm5lZCB0bwotLSAgIHRoZSBjYWxsZXIuICBP dGhlcndpc2UgemVybyBpcyByZXR1cm5lZCBhZnRlciBpdGVyYXRpbmcgdGhyb3VnaCB3aG9sZSBF WFAuCi0tICAgKi8KLSsvKiBDYWxsIFRZUEVfRlVOQyBhbmQgT0JKRklMRV9GVU5DIGZvciBhbnkg VFlQRSBhbmQgT0JKRklMRSBmb3VuZCBiZWluZwotKyAgIHJlZmVyZW5jZWQgYnkgRVhQLiAgVGhl IGZ1bmN0aW9ucyBhcmUgbmV2ZXIgY2FsbGVkIHdpdGggTlVMTCBUWVBFIG9yIE5VTEwKLSsgICBP QkpGSUxFLiAgRnVuY3Rpb25zIGdldCBwYXNzZWQgYW4gYXJiaXRyYXJ5IGNhbGxlciBzdXBwbGll ZCBEQVRBIHBvaW50ZXIuCi0rICAgSWYgYW55IG9mIHRoZSBmdW5jdGlvbnMgcmV0dXJucyBub24t emVybyB2YWx1ZSB0aGVuIChhbnkgb3RoZXIpIG5vbi16ZXJvCi0rICAgdmFsdWUgaXMgaW1tZWRp YXRlbHkgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4gIE90aGVyd2lzZSB6ZXJvIGlzIHJldHVybmVk Ci0rICAgYWZ0ZXIgaXRlcmF0aW5nIHRocm91Z2ggd2hvbGUgRVhQLiAgKi8KLSAKLSBzdGF0aWMg aW50Ci0gZXhwX2l0ZXJhdGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAsCi0rCSAgICAgaW50ICgq dHlwZV9mdW5jKSAoc3RydWN0IHR5cGUgKnR5cGUsIHZvaWQgKmRhdGEpLAotIAkgICAgIGludCAo Km9iamZpbGVfZnVuYykgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXRhKSwKLSAJ ICAgICB2b2lkICpkYXRhKQotIHsKLUBAIC0xNTE2LDcgKzE1NDIsOSBAQCBleHBfaXRlcmF0ZSAo c3RydWN0IGV4cHJlc3Npb24gKmV4cCwKKysgICAgZGVmIF9faW5pdF9fIChzZWxmKToKKysJc3Vw ZXIgKEluU2NvcGUsIHNlbGYpLl9faW5pdF9fICgiaW5fc2NvcGUiKQorKworKyAgICBkZWYgaW52 b2tlIChzZWxmLCAqdmFycyk6CisrICAgICAgICBpZiBsZW4gKHZhcnMpID09IDA6CisrCSAgICBy YWlzZSBUeXBlRXJyb3IsICJpbl9zY29wZSB0YWtlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiCisr CisrICAgICAgICAjIGdkYi5WYWx1ZSBpc24ndCBoYXNoYWJsZSBzbyBpdCBjYW4ndCBiZSBwdXQg aW4gYSBtYXAuCisrCSMgQ29udmVydCB0byBzdHJpbmcgZmlyc3QuCisrCXdhbnRlZCA9IHNldCAo bWFwIChsYW1iZGEgeDogeC5zdHJpbmcgKCksIHZhcnMpKQorKwlmb3VuZCA9IHNldCAoKQorKwli bG9jayA9IGdkYi5zZWxlY3RlZF9mcmFtZSAoKS5ibG9jayAoKQorKwl3aGlsZSBibG9jazoKKysJ ICAgIGZvciBzeW0gaW4gYmxvY2s6CisrCQlpZiAoc3ltLmlzX2FyZ3VtZW50IG9yIHN5bS5pc19j b25zdGFudAorKwkJICAgICAgb3Igc3ltLmlzX2Z1bmN0aW9uIG9yIHN5bS5pc192YXJpYWJsZSk6 CisrCQkgICAgaWYgc3ltLm5hbWUgaW4gd2FudGVkOgorKwkJCWZvdW5kLmFkZCAoc3ltLm5hbWUp CisrCisrCSAgICBibG9jayA9IGJsb2NrLnN1cGVyYmxvY2sKKysKKysJcmV0dXJuIHdhbnRlZCA9 PSBmb3VuZAorKworK0luU2NvcGUgKCkKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LWNtZC5j IGIvZ2RiL3B5dGhvbi9weS1jbWQuYworaW5kZXggMmNmZjRiYS4uOTI1NTMzNiAxMDA2NDQKKy0t LSBhL2dkYi9weXRob24vcHktY21kLmMKKysrKyBiL2dkYi9weXRob24vcHktY21kLmMKK0BAIC00 OSw4ICs0OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgY21kcHlfY29tcGxldGVyIGNvbXBsZXRlcnNbXSA9 CiAgCi0gICAgICAgcG9zID0gZW5kcG9zIC0gb3BsZW47Ci0gICAgICAgaWYgKGV4cC0+bGFuZ3Vh Z2VfZGVmbi0+bGFfZXhwX2Rlc2MtPm9wZXJhdG9yX2NoZWNrIChleHAsIHBvcywKLS0JCQkJCQkJ ICAgb2JqZmlsZV9mdW5jLCBkYXRhKSkKLSsJCQkJCQkJICAgdHlwZV9mdW5jLAotKwkJCQkJCQkg ICBvYmpmaWxlX2Z1bmMsCi0rCQkJCQkJCSAgIGRhdGEpKQotIAlyZXR1cm4gMTsKKyAjZGVmaW5l IE5fQ09NUExFVEVSUyAoc2l6ZW9mIChjb21wbGV0ZXJzKSAvIHNpemVvZiAoY29tcGxldGVyc1sw XSkpCiAgCi0gICAgICAgZW5kcG9zID0gcG9zOwotQEAgLTE1NDcsNyArMTU3NSwyNiBAQCBleHBf dXNlc19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSkKKy0vKiBBIGdkYiBjb21tYW5kLiAgRm9yIHRoZSB0aW1lIGJlaW5nIG9ubHkgb3JkaW5h cnkgY29tbWFuZHMgKG5vdAorLSAgIHNldC9zaG93IGNvbW1hbmRzKSBhcmUgYWxsb3dlZC4gICov CisrLyogQSBnZGIgY29tbWFuZC4gICovCisgc3RydWN0IGNtZHB5X29iamVjdAogIHsKLSAgIGdk Yl9hc3NlcnQgKG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xpbmsgPT0gTlVM TCk7Ci0gCi0tICByZXR1cm4gZXhwX2l0ZXJhdGUgKGV4cCwgZXhwX3VzZXNfb2JqZmlsZV9pdGVy LCBvYmpmaWxlKTsKLSsgIHJldHVybiBleHBfaXRlcmF0ZSAoZXhwLCBOVUxMLCBleHBfdXNlc19v YmpmaWxlX2l0ZXIsIG9iamZpbGUpOwotK30KKyAgIFB5T2JqZWN0X0hFQUQKK2RpZmYgLS1naXQg YS9nZGIvcHl0aG9uL3B5LWhvb2tzLmMgYi9nZGIvcHl0aG9uL3B5LWhvb2tzLmMKK25ldyBmaWxl IG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5hMzE0MGJjCistLS0gL2Rldi9udWxsCisrKysg Yi9nZGIvcHl0aG9uL3B5LWhvb2tzLmMKK0BAIC0wLDAgKzEsNTAgQEAKKysvKiBOb3RpZmljYXRp b25zIGZyb20gZ2RiIHRvIFB5dGhvbgogKwotKy8qIEhlbHBlciBmb3IgZXhwX3R5cGVzX21hcmtf dXNlZC4gICovCisrICAgQ29weXJpZ2h0IChDKSAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgogKwotK3N0YXRpYyBpbnQKLStleHBfdHlwZXNfbWFya191c2VkX2l0ZXIgKHN0cnVj dCB0eXBlICp0eXBlLCB2b2lkICp1bnVzZWQpCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RC LgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAg IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaW5j bHVkZSAiZGVmcy5oIgorKyNpbmNsdWRlICJjbGkvY2xpLWRlY29kZS5oIgorKyNpbmNsdWRlICJj aGFyc2V0LmgiCisrI2luY2x1ZGUgInB5dGhvbi5oIgorKyNpbmNsdWRlICJweXRob24taW50ZXJu YWwuaCIKKysjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKKysKKytQeU9iamVjdCAqCisrZ2RicHlfZ2V0 X2hvb2tfZnVuY3Rpb24gKGNvbnN0IGNoYXIgKm5hbWUpCiArewotKyAgdHlwZV9tYXJrX3VzZWQg KHR5cGUpOworKyAgUHlPYmplY3QgKmhvb2tzOworKyAgUHlPYmplY3QgKnJlc3VsdDsKICsKLSsg IC8qIENvbnRpbnVlIHRoZSB0cmF2ZXJzYWwuICAqLwotKyAgcmV0dXJuIDA7CisrICBpZiAoISBQ eU9iamVjdF9IYXNBdHRyU3RyaW5nIChnZGJfbW9kdWxlLCAiaG9va3MiKSkKKysgICAgcmV0dXJu IE5VTEw7CisrICBob29rcyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcgKGdkYl9tb2R1bGUsICJo b29rcyIpOworKyAgaWYgKCEgaG9va3MpCisrICAgIHJldHVybiBOVUxMOworKyAgLyogVGhlIGNh c3QgaXMgYmVjYXVzZSB0aGUgUHl0aG9uIGZ1bmN0aW9uIGRvZXNuJ3QgZGVjbGFyZSBjb25zdCBh cmd1bWVudC4KKysgICAgIFRoaXMgaXMgYSBwcm9ibGVtIGluIFB5dGhvbiB2ZXJzaW9uIDIuNCwg YnV0IG5vdCBpbiAyLjUuICAqLworKyAgaWYgKCEgUHlPYmplY3RfSGFzQXR0clN0cmluZyAoaG9v a3MsIChjaGFyICopIG5hbWUpKQorKyAgICB7CisrICAgICAgUHlfREVDUkVGIChob29rcyk7Cisr ICAgICAgcmV0dXJuIE5VTEw7CisrICAgIH0KKysgIC8qIFRoZSBjYXN0IGlzIGJlY2F1c2UgdGhl IFB5dGhvbiBmdW5jdGlvbiBkb2Vzbid0IGRlY2xhcmUgY29uc3QgYXJndW1lbnQuCisrICAgICBU aGlzIGlzIGEgcHJvYmxlbSBpbiBQeXRob24gdmVyc2lvbiAyLjQsIGJ1dCBub3QgaW4gMi41LiAg Ki8KKysgIHJlc3VsdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcgKGhvb2tzLCAoY2hhciAqKSBu YW1lKTsKKysgIFB5X0RFQ1JFRiAoaG9va3MpOworKyAgcmV0dXJuIHJlc3VsdDsKICt9CitkaWZm IC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS1tZW1idWYuYyBiL2dkYi9weXRob24vcHktbWVtYnVmLmMK K25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi43YmMyOTRjCistLS0gL2Rldi9u dWxsCisrKysgYi9nZGIvcHl0aG9uL3B5LW1lbWJ1Zi5jCitAQCAtMCwwICsxLDI2OCBAQAorKy8q IFB5dGhvbiBpbnRlcmZhY2UgdG8gdGhlIGluZmVyaW9yIG1lbW9yeS4KICsKLSsvKiBDYWxsIHR5 cGVfbWFya191c2VkIGZvciBhbnkgdHlwZSBjb250YWluZWQgaW4gRVhQLiAgKi8KKysgICBDb3B5 cmlnaHQgKEMpIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCi0r dm9pZAotK2V4cF90eXBlc19tYXJrX3VzZWQgKHN0cnVjdCBleHByZXNzaW9uICpleHApCisrICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSAiZGVmcy5oIgorKyNpbmNsdWRlICJleGNlcHRp b25zLmgiCisrI2luY2x1ZGUgImdkYmNvcmUuaCIKKysjaW5jbHVkZSAicHl0aG9uLWludGVybmFs LmgiCisrCisrdHlwZWRlZiBzdHJ1Y3QgeworKyAgUHlPYmplY3RfSEVBRAorKyAgdm9pZCAqYnVm ZmVyOworKworKyAgLyogVGhlc2UgYXJlIGtlcHQganVzdCBmb3IgbWJweV9zdHIuICAqLworKyAg Q09SRV9BRERSIGFkZHI7CisrICBDT1JFX0FERFIgbGVuZ3RoOworK30gbWVtYnVmX29iamVjdDsK KysKKytzdGF0aWMgUHlUeXBlT2JqZWN0IG1lbWJ1Zl9vYmplY3RfdHlwZTsKKysKKysvKiBJbXBs ZW1lbnRhdGlvbiBvZiBnZGIucmVhZF9tZW1vcnkgKGFkZHJlc3MsIGxlbmd0aCkuCisrICAgUmV0 dXJucyBhIFB5dGhvbiBidWZmZXIgb2JqZWN0IHdpdGggTEVOR1RIIGJ5dGVzIG9mIHRoZSBpbmZl cmlvcidzIG1lbW9yeQorKyAgIGF0IEFERFJFU1MuIEJvdGggYXJndW1lbnRzIGFyZSBpbnRlZ2Vy cy4gICovCisrCisrUHlPYmplY3QgKgorK2dkYnB5X3JlYWRfbWVtb3J5IChQeU9iamVjdCAqc2Vs ZiwgUHlPYmplY3QgKmFyZ3MpCiArewotKyAgZXhwX2l0ZXJhdGUgKGV4cCwgZXhwX3R5cGVzX21h cmtfdXNlZF9pdGVyLCBOVUxMLCBOVUxMKTsKLSB9Ci0gCi0gdm9pZAotZGlmZiAtLWdpdCBhL2dk Yi9wYXJzZXItZGVmcy5oIGIvZ2RiL3BhcnNlci1kZWZzLmgKLWluZGV4IGJiNzlhZTEuLmZiYmQ2 MDAgMTAwNjQ0Ci0tLS0gYS9nZGIvcGFyc2VyLWRlZnMuaAotKysrIGIvZ2RiL3BhcnNlci1kZWZz LmgKLUBAIC0xOTQsNiArMTk0LDggQEAgZXh0ZXJuIHZvaWQgb3BlcmF0b3JfbGVuZ3RoX3N0YW5k YXJkIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBpbnQsIGludCAqLAotIAkJCQkgICAgICBp bnQgKik7Ci0gCi0gZXh0ZXJuIGludCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4 cHJlc3Npb24gKmV4cCwgaW50IHBvcywKLSsJCQkJICAgIGludCAoKnR5cGVfZnVuYykgKHN0cnVj dCB0eXBlICp0eXBlLAotKwkJCQkJCSAgICAgIHZvaWQgKmRhdGEpLAotIAkJCQkgICAgaW50ICgq b2JqZmlsZV9mdW5jKQotIAkJCQkgICAgICAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQg KmRhdGEpLAotIAkJCQkgICAgdm9pZCAqZGF0YSk7Ci1AQCAtMjg1LDYgKzI4Nyw3IEBAIHN0cnVj dCBleHBfZGVzY3JpcHRvcgotICAgICAgICB2YWx1ZSBzaG91bGQgYmUgaW1tZWRpYXRlbHkgcmV0 dXJuZWQgdG8gdGhlIGNhbGxlci4gIE90aGVyd2lzZSB6ZXJvCi0gICAgICAgIHNob3VsZCBiZSBy ZXR1cm5lZC4gICovCi0gICAgIGludCAoKm9wZXJhdG9yX2NoZWNrKSAoc3RydWN0IGV4cHJlc3Np b24gKmV4cCwgaW50IHBvcywKLSsJCQkgICBpbnQgKCp0eXBlX2Z1bmMpIChzdHJ1Y3QgdHlwZSAq dHlwZSwgdm9pZCAqZGF0YSksCi0gCQkJICAgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsCi0gCQkJCQkJdm9pZCAqZGF0YSksCi0gCQkJICAgdm9pZCAqZGF0YSk7 Ci1AQCAtMzIzLDQgKzMyNiw4IEBAIGV4dGVybiB2b2lkIHBhcnNlcl9mcHJpbnRmIChGSUxFICos IGNvbnN0IGNoYXIgKiwgLi4uKSBBVFRSSUJVVEVfUFJJTlRGICgyLCAzKTsKLSAKLSBleHRlcm4g aW50IGV4cF91c2VzX29iamZpbGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlKTsKLSAKLStleHRlcm4gaW50IGV4cF91c2VzX29iamZpbGUgKHN0cnVjdCBl eHByZXNzaW9uICpleHAsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKKysgIGludCBlcnJvciA9 IDA7CisrICBDT1JFX0FERFIgYWRkciwgbGVuZ3RoOworKyAgdm9pZCAqYnVmZmVyID0gTlVMTDsK KysgIG1lbWJ1Zl9vYmplY3QgKm1lbWJ1Zl9vYmo7CisrICBQeU9iamVjdCAqYWRkcl9vYmosICps ZW5ndGhfb2JqOworKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzID0gTlVMTDsKKysgIHZvbGF0 aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKKysKKysgIGlmICghIFB5QXJnX1BhcnNl VHVwbGUgKGFyZ3MsICJPTyIsICZhZGRyX29iaiwgJmxlbmd0aF9vYmopKQorKyAgICByZXR1cm4g TlVMTDsKICsKLStleHRlcm4gdm9pZCBleHBfdHlwZXNfbWFya191c2VkIChzdHJ1Y3QgZXhwcmVz c2lvbiAqZXhwKTsKKysgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCisrICAg IHsKKysgICAgICBpZiAoIWdldF9hZGRyX2Zyb21fcHl0aG9uIChhZGRyX29iaiwgJmFkZHIpCisr CSAgfHwgIWdldF9hZGRyX2Zyb21fcHl0aG9uIChsZW5ndGhfb2JqLCAmbGVuZ3RoKSkKKysJewor KwkgIGVycm9yID0gMTsKKysJICBicmVhazsKKysJfQogKwotICNlbmRpZiAvKiBQQVJTRVJfREVG U19IICovCi1kaWZmIC0tZ2l0IGEvZ2RiL3BwYy1saW51eC1uYXQuYyBiL2dkYi9wcGMtbGludXgt bmF0LmMKLWluZGV4IGU4ZDk2ZjYuLjhiZjA5N2MgMTAwNjQ0Ci0tLS0gYS9nZGIvcHBjLWxpbnV4 LW5hdC5jCi0rKysgYi9nZGIvcHBjLWxpbnV4LW5hdC5jCi1AQCAtMjAxMCw2ICsyMDEwLDI0IEBA IHBwY19saW51eF9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGlu dCBydywKLSAgIHJldHVybiByZXQ7Ci0gfQotIAotKy8qIFNlZSB0YXJnZXRfZGV0YWNoX3dhdGNo cG9pbnRzLiAgRG8gbm90IHVzZSB3cmFwcGVyCi0rICAgcHBjX2xpbnV4X3JlbW92ZV93YXRjaHBv aW50IGFzIGl0IHdvdWxkIG1vZGlmeSB0aGUgcmVnaXN0ZXIgY2FjaGUKLSsgICAoc2F2ZWRfZGFi cl92YWx1ZSkuICAqLworKyAgICAgIGJ1ZmZlciA9IHhtYWxsb2MgKGxlbmd0aCk7CisrICAgICAg Y2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBidWZmZXIpOwogKwotK3N0YXRpYyBpbnQK LStwcGNfbGludXhfZGV0YWNoX3dhdGNocG9pbnRzICh2b2lkKQorKyAgICAgIHJlYWRfbWVtb3J5 IChhZGRyLCBidWZmZXIsIGxlbmd0aCk7CisrICAgIH0KKysgIEdEQl9QWV9IQU5ETEVfRVhDRVBU SU9OIChleGNlcHQpOworKworKyAgaWYgKGVycm9yKQorKyAgICByZXR1cm4gTlVMTDsKKysKKysg IGRpc2NhcmRfY2xlYW51cHMgKGNsZWFudXBzKTsKKysKKysgIG1lbWJ1Zl9vYmogPSBQeU9iamVj dF9OZXcgKG1lbWJ1Zl9vYmplY3QsICZtZW1idWZfb2JqZWN0X3R5cGUpOworKyAgaWYgKG1lbWJ1 Zl9vYmogPT0gTlVMTCkKKysgICAgeworKyAgICAgIHhmcmVlIChidWZmZXIpOworKyAgICAgIFB5 RXJyX1NldFN0cmluZyAoUHlFeGNfTWVtb3J5RXJyb3IsCisrCQkgICAgICAgIkNvdWxkIG5vdCBh bGxvY2F0ZSBtZW1vcnkgYnVmZmVyIG9iamVjdC4iKTsKKysgICAgICByZXR1cm4gTlVMTDsKKysg ICAgfQorKworKyAgbWVtYnVmX29iai0+YnVmZmVyID0gYnVmZmVyOworKyAgbWVtYnVmX29iai0+ YWRkciA9IGFkZHI7CisrICBtZW1idWZfb2JqLT5sZW5ndGggPSBsZW5ndGg7CisrCisrICByZXR1 cm4gUHlCdWZmZXJfRnJvbVJlYWRXcml0ZU9iamVjdCAoKFB5T2JqZWN0ICopIG1lbWJ1Zl9vYmos IDAsCisrCQkJCSAgICAgICBQeV9FTkRfT0ZfQlVGRkVSKTsKKyt9CisrCisrLyogSW1wbGVtZW50 YXRpb24gb2YgZ2RiLndyaXRlX21lbW9yeSAoYWRkcmVzcywgYnVmZmVyIFssIGxlbmd0aF0pLgor KyAgIFdyaXRlcyB0aGUgY29udGVudHMgb2YgQlVGRkVSIChhIFB5dGhvbiBvYmplY3Qgc3VwcG9y dGluZyB0aGUgcmVhZCBidWZmZXIKKysgICBwcm90b2NvbCkgYXQgQUREUkVTUyBpbiB0aGUgaW5m ZXJpb3IncyBtZW1vcnkuICBXcml0ZSBMRU5HVEggYnl0ZXMgZnJvbQorKyAgIEJVRkZFUiwgb3Ig aXRzIGVudGlyZSBjb250ZW50cyBpZiB0aGUgYXJndW1lbnQgaXMgbm90IHByb3ZpZGVkLiAgVGhl CisrICAgZnVuY3Rpb24gcmV0dXJucyBub3RoaW5nLiAgKi8KKysKKytQeU9iamVjdCAqCisrZ2Ri cHlfd3JpdGVfbWVtb3J5IChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiArewotKyAg cGlkX3QgdGlkOworKyAgaW50IGJ1Zl9sZW4sIGVycm9yID0gMDsKKysgIGNvbnN0IGNoYXIgKmJ1 ZmZlcjsKKysgIENPUkVfQUREUiBhZGRyLCBsZW5ndGg7CisrICBQeU9iamVjdCAqYWRkcl9vYmos ICpsZW5ndGhfb2JqID0gTlVMTDsKKysgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4 Y2VwdDsKKysKKysgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUgKGFyZ3MsICJPcyN8TyIsICZhZGRy X29iaiwgJmJ1ZmZlciwgJmJ1Zl9sZW4sCisrCQkJICAmbGVuZ3RoX29iaikpCisrICAgIHJldHVy biBOVUxMOwogKwotKyAgdGlkID0gVElER0VUIChpbmZlcmlvcl9wdGlkKTsKLSsgIGlmICh0aWQg PT0gMCkKLSsgICAgdGlkID0gUElER0VUIChpbmZlcmlvcl9wdGlkKTsKKysgIFRSWV9DQVRDSCAo ZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCisrICAgIHsKKysgICAgICBpZiAoIWdldF9hZGRyX2Zy b21fcHl0aG9uIChhZGRyX29iaiwgJmFkZHIpKQorKwl7CisrCSAgZXJyb3IgPSAxOworKwkgIGJy ZWFrOworKwl9CisrICAgICAgCisrICAgICAgaWYgKCFsZW5ndGhfb2JqKQorKwlsZW5ndGggPSBi dWZfbGVuOworKyAgICAgIGVsc2UgaWYgKCFnZXRfYWRkcl9mcm9tX3B5dGhvbiAobGVuZ3RoX29i aiwgJmxlbmd0aCkpCisrCXsKKysJICBlcnJvciA9IDE7CisrCSAgYnJlYWs7CisrCX0KICsKLSsg IGlmIChwdHJhY2UgKFBUUkFDRV9TRVRfREVCVUdSRUcsIHRpZCwgTlVMTCwgTlVMTCkgPCAwKQot KyAgICByZXR1cm4gLTE7Ci0rICByZXR1cm4gMDsKKysgICAgICB3cml0ZV9tZW1vcnkgKGFkZHIs IGJ1ZmZlciwgbGVuZ3RoKTsKKysgICAgfQorKyAgR0RCX1BZX0hBTkRMRV9FWENFUFRJT04gKGV4 Y2VwdCk7CisrCisrICBpZiAoZXJyb3IpCisrICAgIHJldHVybiBOVUxMOworKworKyAgUHlfUkVU VVJOX05PTkU7CiArfQogKwotIHN0YXRpYyB2b2lkCi0gcHBjX2xpbnV4X25ld190aHJlYWQgKHB0 aWRfdCBwdGlkKQotIHsKLUBAIC0yMzQ5LDYgKzIzNjcsNyBAQCBfaW5pdGlhbGl6ZV9wcGNfbGlu dXhfbmF0ICh2b2lkKQotICAgdC0+dG9fcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50ID0gcHBj X2xpbnV4X3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludDsKLSAgIHQtPnRvX2luc2VydF93YXRj aHBvaW50ID0gcHBjX2xpbnV4X2luc2VydF93YXRjaHBvaW50OwotICAgdC0+dG9fcmVtb3ZlX3dh dGNocG9pbnQgPSBwcGNfbGludXhfcmVtb3ZlX3dhdGNocG9pbnQ7Ci0rICB0LT50b19kZXRhY2hf d2F0Y2hwb2ludHMgPSBwcGNfbGludXhfZGV0YWNoX3dhdGNocG9pbnRzOwotICAgdC0+dG9fc3Rv cHBlZF9ieV93YXRjaHBvaW50ID0gcHBjX2xpbnV4X3N0b3BwZWRfYnlfd2F0Y2hwb2ludDsKLSAg IHQtPnRvX3N0b3BwZWRfZGF0YV9hZGRyZXNzID0gcHBjX2xpbnV4X3N0b3BwZWRfZGF0YV9hZGRy ZXNzOwotICAgdC0+dG9fd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSA9IHBwY19saW51eF93 YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlOwotZGlmZiAtLWdpdCBhL2dkYi9wcmludGNtZC5j IGIvZ2RiL3ByaW50Y21kLmMKLWluZGV4IDVmZmEwOTkuLjU4ZDljNzkgMTAwNjQ0Ci0tLS0gYS9n ZGIvcHJpbnRjbWQuYwotKysrIGIvZ2RiL3ByaW50Y21kLmMKLUBAIC05NzEsNiArOTcxLDExIEBA IHByaW50X2NvbW1hbmRfMSAoY2hhciAqZXhwLCBpbnQgaW5zcGVjdCwgaW50IHZvaWRwcmludCkK LSAgIGVsc2UKLSAgICAgdmFsID0gYWNjZXNzX3ZhbHVlX2hpc3RvcnkgKDApOwotIAotKyAgLyog RG8gbm90IHRyeSB0byBPQkpFQ1RfQUREUkVTU19TRVQgaGVyZSBhbnl0aGluZy4gIFdlIGFyZSBp bnRlcmVzdGVkIGluIHRoZQotKyAgICAgc291cmNlIHZhcmlhYmxlIGJhc2UgYWRkcmVzc2VzIGFz IGZvdW5kIGJ5IFJFQURfVkFSX1ZBTFVFLiAgVGhlIHZhbHVlIGhlcmUKLSsgICAgIGNhbiBiZSBh bHJlYWR5IGEgY2FsY3VsYXRlZCBleHByZXNzaW9uIGFkZHJlc3MgaW5hcHByb3ByaWF0ZSBmb3IK LSsgICAgIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MuICAqLworKy8qIERlc3RydWN0b3Igb2Yg TWVtYnVmIG9iamVjdHMuICAqLworKworK3N0YXRpYyB2b2lkCisrbWJweV9kZWFsbG9jIChQeU9i amVjdCAqc2VsZikKKyt7CisrICB4ZnJlZSAoKChtZW1idWZfb2JqZWN0ICopIHNlbGYpLT5idWZm ZXIpOworKyAgc2VsZi0+b2JfdHlwZS0+dHBfZnJlZSAoc2VsZik7CisrfQorKworKy8qIFJldHVy biBhIGRlc2NyaXB0aW9uIG9mIHRoZSBNZW1idWYgb2JqZWN0LiAgKi8KKysKKytzdGF0aWMgUHlP YmplY3QgKgorK21icHlfc3RyIChQeU9iamVjdCAqc2VsZikKKyt7CisrICBtZW1idWZfb2JqZWN0 ICptZW1idWZfb2JqID0gKG1lbWJ1Zl9vYmplY3QgKikgc2VsZjsKKysKKysgIHJldHVybiBQeVN0 cmluZ19Gcm9tRm9ybWF0ICgibWVtb3J5IGJ1ZmZlciBmb3IgYWRkcmVzcyAlcywgJXMgYnl0ZXMg bG9uZyIsCisrCQkJICAgICAgcGFkZHJlc3MgKG1lbWJ1Zl9vYmotPmFkZHIpLAorKwkJCSAgICAg IHB1bG9uZ2VzdCAobWVtYnVmX29iai0+bGVuZ3RoKSk7CisrfQogKwotICAgaWYgKHZvaWRwcmlu dCB8fCAodmFsICYmIHZhbHVlX3R5cGUgKHZhbCkgJiYKLSAJCSAgICBUWVBFX0NPREUgKHZhbHVl X3R5cGUgKHZhbCkpICE9IFRZUEVfQ09ERV9WT0lEKSkKLSAgICAgewotQEAgLTE0NzEsNiArMTQ3 NiwyMiBAQCB4X2NvbW1hbmQgKGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQotIAlzZXRfaW50ZXJu YWx2YXIgKGxvb2t1cF9pbnRlcm5hbHZhciAoIl9fIiksIGxhc3RfZXhhbWluZV92YWx1ZSk7Ci0g ICAgIH0KLSB9Cisrc3RhdGljIFB5X3NzaXplX3QKKytnZXRfcmVhZF9idWZmZXIgKFB5T2JqZWN0 ICpzZWxmLCBQeV9zc2l6ZV90IHNlZ21lbnQsIHZvaWQgKipwdHJwdHIpCisreworKyAgbWVtYnVm X29iamVjdCAqbWVtYnVmX29iaiA9IChtZW1idWZfb2JqZWN0ICopIHNlbGY7CiArCi0rLyogQ2Fs bCB0eXBlX21hcmtfdXNlZCBmb3IgYW55IFRZUEVzIHJlZmVyZW5jZWQgZnJvbSB0aGlzIEdEQiBz b3VyY2UgZmlsZS4gICovCisrICBpZiAoc2VnbWVudCkKKysgICAgeworKyAgICAgIFB5RXJyX1Nl dFN0cmluZyAoUHlFeGNfU3lzdGVtRXJyb3IsCisrCQkgICAgICAgIlRoZSBtZW1vcnkgYnVmZmVy IHN1cHBvcnRzIG9ubHkgb25lIHNlZ21lbnQuIik7CisrICAgICAgcmV0dXJuIC0xOworKyAgICB9 CiArCi0rc3RhdGljIHZvaWQKLStwcmludF90eXBlc19tYXJrX3VzZWQgKHZvaWQpCisrICAqcHRy cHRyID0gbWVtYnVmX29iai0+YnVmZmVyOworKworKyAgcmV0dXJuIG1lbWJ1Zl9vYmotPmxlbmd0 aDsKKyt9CisrCisrc3RhdGljIFB5X3NzaXplX3QKKytnZXRfd3JpdGVfYnVmZmVyIChQeU9iamVj dCAqc2VsZiwgUHlfc3NpemVfdCBzZWdtZW50LCB2b2lkICoqcHRycHRyKQogK3sKLSsgIHN0cnVj dCBkaXNwbGF5ICpkOworKyAgcmV0dXJuIGdldF9yZWFkX2J1ZmZlciAoc2VsZiwgc2VnbWVudCwg cHRycHRyKTsKKyt9CiArCi0rICBpZiAobGFzdF9leGFtaW5lX3ZhbHVlKQotKyAgICB0eXBlX21h cmtfdXNlZCAodmFsdWVfdHlwZSAobGFzdF9leGFtaW5lX3ZhbHVlKSk7Cisrc3RhdGljIFB5X3Nz aXplX3QKKytnZXRfc2VnX2NvdW50IChQeU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCAqbGVucCkK Kyt7CisrICBpZiAobGVucCkKKysgICAgKmxlbnAgPSAoKG1lbWJ1Zl9vYmplY3QgKikgc2VsZikt Pmxlbmd0aDsKICsKLSsgIGZvciAoZCA9IGRpc3BsYXlfY2hhaW47IGQ7IGQgPSBkLT5uZXh0KQot KyAgICBpZiAoZC0+ZXhwKQotKyAgICAgIGV4cF90eXBlc19tYXJrX3VzZWQgKGQtPmV4cCk7Cisr ICByZXR1cm4gMTsKICt9CiArCi0gDAotIAotIC8qIEFkZCBhbiBleHByZXNzaW9uIHRvIHRoZSBh dXRvLWRpc3BsYXkgY2hhaW4uCi1AQCAtMjg2OSw0ICsyODkwLDYgQEAgU2hvdyBwcmludGluZyBv ZiBzb3VyY2UgZmlsZW5hbWUgYW5kIGxpbmUgbnVtYmVyIHdpdGggPHN5bWJvbD4uIiksIE5VTEws Ci0gICBhZGRfY29tICgiZXZhbCIsIG5vX2NsYXNzLCBldmFsX2NvbW1hbmQsIF8oIlwKLSBDb252 ZXJ0IFwicHJpbnRmIGZvcm1hdCBzdHJpbmdcIiwgYXJnMSwgYXJnMiwgYXJnMywgLi4uLCBhcmdu IHRvXG5cCi0gYSBjb21tYW5kIGxpbmUsIGFuZCBjYWxsIGl0LiIpKTsKKytzdGF0aWMgUHlfc3Np emVfdAorK2dldF9jaGFyX2J1ZmZlciAoUHlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3Qgc2VnbWVu dCwgY2hhciAqKnB0cnB0cikKKyt7CisrICB2b2lkICpwdHIgPSBOVUxMOworKyAgUHlfc3NpemVf dCByZXQ7CiArCi0rICBvYnNlcnZlcl9hdHRhY2hfbWFya191c2VkIChwcmludF90eXBlc19tYXJr X3VzZWQpOwotIH0KKysgIHJldCA9IGdldF9yZWFkX2J1ZmZlciAoc2VsZiwgc2VnbWVudCwgJnB0 cik7CisrICAqcHRycHRyID0gKGNoYXIgKikgcHRyOworKworKyAgcmV0dXJuIHJldDsKKyt9Cisr CisrLyogUHl0aG9uIGRvZXNuJ3QgcHJvdmlkZSBhIGRlY2VudCB3YXkgdG8gZ2V0IGNvbXBhdGli aWxpdHkgaGVyZS4gICovCisrI2lmIEhBVkVfTElCUFlUSE9OMl80CisrI2RlZmluZSBDSEFSQlVG RkVSUFJPQ19OQU1FIGdldGNoYXJidWZmZXJwcm9jCisrI2Vsc2UKKysjZGVmaW5lIENIQVJCVUZG RVJQUk9DX05BTUUgY2hhcmJ1ZmZlcnByb2MKKysjZW5kaWYKKysKKytzdGF0aWMgUHlCdWZmZXJQ cm9jcyBidWZmZXJfcHJvY3MgPSB7CisrICBnZXRfcmVhZF9idWZmZXIsCisrICBnZXRfd3JpdGVf YnVmZmVyLAorKyAgZ2V0X3NlZ19jb3VudCwKKysgIC8qIFRoZSBjYXN0IGhlcmUgd29ya3MgYXJv dW5kIGEgZGlmZmVyZW5jZSBiZXR3ZWVuIFB5dGhvbiAyLjQgYW5kCisrICAgICBQeXRob24gMi41 LiAgKi8KKysgIChDSEFSQlVGRkVSUFJPQ19OQU1FKSBnZXRfY2hhcl9idWZmZXIKKyt9OworKwor K3N0YXRpYyBQeVR5cGVPYmplY3QgbWVtYnVmX29iamVjdF90eXBlID0geworKyAgUHlPYmplY3Rf SEVBRF9JTklUIChOVUxMKQorKyAgMCwJCQkJICAvKm9iX3NpemUqLworKyAgImdkYi5NZW1idWYi LAkJCSAgLyp0cF9uYW1lKi8KKysgIHNpemVvZiAobWVtYnVmX29iamVjdCksCSAgLyp0cF9iYXNp Y3NpemUqLworKyAgMCwJCQkJICAvKnRwX2l0ZW1zaXplKi8KKysgIG1icHlfZGVhbGxvYywJCQkg IC8qdHBfZGVhbGxvYyovCisrICAwLAkJCQkgIC8qdHBfcHJpbnQqLworKyAgMCwJCQkJICAvKnRw X2dldGF0dHIqLworKyAgMCwJCQkJICAvKnRwX3NldGF0dHIqLworKyAgMCwJCQkJICAvKnRwX2Nv bXBhcmUqLworKyAgMCwJCQkJICAvKnRwX3JlcHIqLworKyAgMCwJCQkJICAvKnRwX2FzX251bWJl ciovCisrICAwLAkJCQkgIC8qdHBfYXNfc2VxdWVuY2UqLworKyAgMCwJCQkJICAvKnRwX2FzX21h cHBpbmcqLworKyAgMCwJCQkJICAvKnRwX2hhc2ggKi8KKysgIDAsCQkJCSAgLyp0cF9jYWxsKi8K KysgIG1icHlfc3RyLAkJCSAgLyp0cF9zdHIqLworKyAgMCwJCQkJICAvKnRwX2dldGF0dHJvKi8K KysgIDAsCQkJCSAgLyp0cF9zZXRhdHRybyovCisrICAmYnVmZmVyX3Byb2NzLAkJICAvKnRwX2Fz X2J1ZmZlciovCisrICBQeV9UUEZMQUdTX0RFRkFVTFQsCQkgIC8qdHBfZmxhZ3MqLworKyAgIkdE QiBtZW1vcnkgYnVmZmVyIG9iamVjdCIsIAkgIC8qdHBfZG9jKi8KKysgIDAsCQkJCSAgLyogdHBf dHJhdmVyc2UgKi8KKysgIDAsCQkJCSAgLyogdHBfY2xlYXIgKi8KKysgIDAsCQkJCSAgLyogdHBf cmljaGNvbXBhcmUgKi8KKysgIDAsCQkJCSAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKysgIDAs CQkJCSAgLyogdHBfaXRlciAqLworKyAgMCwJCQkJICAvKiB0cF9pdGVybmV4dCAqLworKyAgMCwJ CQkJICAvKiB0cF9tZXRob2RzICovCisrICAwLAkJCQkgIC8qIHRwX21lbWJlcnMgKi8KKysgIDAs CQkJCSAgLyogdHBfZ2V0c2V0ICovCisrICAwLAkJCQkgIC8qIHRwX2Jhc2UgKi8KKysgIDAsCQkJ CSAgLyogdHBfZGljdCAqLworKyAgMCwJCQkJICAvKiB0cF9kZXNjcl9nZXQgKi8KKysgIDAsCQkJ CSAgLyogdHBfZGVzY3Jfc2V0ICovCisrICAwLAkJCQkgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKysg IDAsCQkJCSAgLyogdHBfaW5pdCAqLworKyAgMCwJCQkJICAvKiB0cF9hbGxvYyAqLworKyAgUHlU eXBlX0dlbmVyaWNOZXcJCSAgLyogdHBfbmV3ICovCisrfTsKKysKKyt2b2lkCisrZ2RicHlfaW5p dGlhbGl6ZV9tZW1idWYgKHZvaWQpCisreworKyAgaWYgKFB5VHlwZV9SZWFkeSAoJm1lbWJ1Zl9v YmplY3RfdHlwZSkgPCAwKQorKyAgICByZXR1cm47CisrCisrICBQeV9JTkNSRUYgKCZtZW1idWZf b2JqZWN0X3R5cGUpOworKyAgUHlNb2R1bGVfQWRkT2JqZWN0IChnZGJfbW9kdWxlLCAiTWVtYnVm IiwgKFB5T2JqZWN0ICopICZtZW1idWZfb2JqZWN0X3R5cGUpOworK30KK2RpZmYgLS1naXQgYS9n ZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMgYi9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMK K2luZGV4IDQzNGM4YTUuLmIyMmM1NTcgMTAwNjQ0CistLS0gYS9nZGIvcHl0aG9uL3B5LXByZXR0 eXByaW50LmMKKysrKyBiL2dkYi9weXRob24vcHktcHJldHR5cHJpbnQuYworQEAgLTIwNCwxMCAr MjA0LDEwIEBAIHByZXR0eV9wcmludF9vbmVfdmFsdWUgKFB5T2JqZWN0ICpwcmludGVyLCBzdHJ1 Y3QgdmFsdWUgKipvdXRfdmFsdWUpCisgCSAgICAgICYmIHJlc3VsdCAhPSBQeV9Ob25lKQorIAkg ICAgeworIAkgICAgICAqb3V0X3ZhbHVlID0gY29udmVydF92YWx1ZV9mcm9tX3B5dGhvbiAocmVz dWx0KTsKKy0JICAgICAgaWYgKFB5RXJyX09jY3VycmVkICgpKQorLQkJKm91dF92YWx1ZSA9IE5V TEw7CistCSAgICAgIFB5X0RFQ1JFRiAocmVzdWx0KTsKKy0JICAgICAgcmVzdWx0ID0gTlVMTDsK KysgCSAgICAgIGlmIChQeUVycl9PY2N1cnJlZCAoKSkKKysgCQkqb3V0X3ZhbHVlID0gTlVMTDsK KysgCSAgICAgIFB5X0RFQ1JFRiAocmVzdWx0KTsKKysgCSAgICAgIHJlc3VsdCA9IE5VTEw7Cisg CSAgICB9CisgCX0KKyAgICAgfQorQEAgLTcwMCwxNCArNzAwLDcgQEAgZ2RicHlfZ2V0X3Zhcm9i al9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHZhbHVlICp2YWx1ZSkKKyB7CisgICBQeU9iamVjdCAq dmFsX29iajsKKyAgIFB5T2JqZWN0ICpwcmV0dHlfcHJpbnRlciA9IE5VTEw7CistICB2b2xhdGls ZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7CisgCistICBUUllfQ0FUQ0ggKGV4Y2VwdCwg UkVUVVJOX01BU0tfQUxMKQorLSAgICB7CistICAgICAgdmFsdWUgPSB2YWx1ZV9jb3B5ICh2YWx1 ZSk7CistICAgIH0KKy0gIEdEQl9QWV9IQU5ETEVfRVhDRVBUSU9OIChleGNlcHQpOworLSAgCisg ICB2YWxfb2JqID0gdmFsdWVfdG9fdmFsdWVfb2JqZWN0ICh2YWx1ZSk7CisgICBpZiAoISB2YWxf b2JqKQorICAgICByZXR1cm4gTlVMTDsKIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LXR5cGUu YyBiL2dkYi9weXRob24vcHktdHlwZS5jCiBpbmRleCBiOTAxMjU1Li40ZmYxOGU1IDEwMDY0NAog LS0tIGEvZ2RiL3B5dGhvbi9weS10eXBlLmMKQEAgLTU5NTcsNiArMTAyNjMsNDQwIEBAIGluZGV4 IDIwMjQwMjEuLmU4YmUxMmQgMTAwNjQ0CiAgfQogIAogIAwKK2RpZmYgLS1naXQgYS9nZGIvcHl0 aG9uL3B5dGhvbi1pbnRlcm5hbC5oIGIvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAoraW5k ZXggMmI4ZDMwMS4uMGFmOTljOCAxMDA2NDQKKy0tLSBhL2dkYi9weXRob24vcHl0aG9uLWludGVy bmFsLmgKKysrKyBiL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgKK0BAIC04MiwxMCArODIs MTEgQEAgc3RydWN0IGxhbmd1YWdlX2RlZm47Cisgc3RydWN0IHByb2dyYW1fc3BhY2U7CisgCisg ZXh0ZXJuIFB5T2JqZWN0ICpnZGJfbW9kdWxlOworLWV4dGVybiBQeVR5cGVPYmplY3QgdmFsdWVf b2JqZWN0X3R5cGU7CisgZXh0ZXJuIFB5VHlwZU9iamVjdCBibG9ja19vYmplY3RfdHlwZTsKKytl eHRlcm4gUHlUeXBlT2JqZWN0IHZhbHVlX29iamVjdF90eXBlOworIGV4dGVybiBQeVR5cGVPYmpl Y3Qgc3ltYm9sX29iamVjdF90eXBlOworIAorKy8qIFVzZWQgaW4gcHl0aG9uLWluZmVyaW9yLmMu ICAqLworIHR5cGVkZWYgc3RydWN0CisgeworICAgUHlPYmplY3RfSEVBRAorQEAgLTEyNiw2ICsx MjcsMTAgQEAgUHlPYmplY3QgKmJsb2NrX3RvX2Jsb2NrX29iamVjdCAoc3RydWN0IGJsb2NrICpi bG9jaywgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOworIFB5T2JqZWN0ICp2YWx1ZV90b192YWx1 ZV9vYmplY3QgKHN0cnVjdCB2YWx1ZSAqdik7CisgUHlPYmplY3QgKnR5cGVfdG9fdHlwZV9vYmpl Y3QgKHN0cnVjdCB0eXBlICopOworIFB5T2JqZWN0ICpmcmFtZV9pbmZvX3RvX2ZyYW1lX29iamVj dCAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKTsKKytQeU9iamVjdCAqZnJhbWVfaW5mb190b19m cmFtZV9vYmplY3QgKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSk7CisrdGhyZWFkX29iamVjdCAq Y3JlYXRlX3RocmVhZF9vYmplY3QgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHApOworK3RocmVhZF9v YmplY3QgKmZpbmRfdGhyZWFkX29iamVjdCAocHRpZF90IHB0aWQpOworK1B5T2JqZWN0ICpmaW5k X2luZmVyaW9yX29iamVjdCAoaW50IHBpZCk7CisgCisgUHlPYmplY3QgKnBzcGFjZV90b19wc3Bh Y2Vfb2JqZWN0IChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqKTsKKyBQeU9iamVjdCAqcHNweV9nZXRf cHJpbnRlcnMgKFB5T2JqZWN0ICosIHZvaWQgKik7CitAQCAtMTQ1LDggKzE1MCwxMSBAQCBzdHJ1 Y3QgdHlwZSAqdHlwZV9vYmplY3RfdG9fdHlwZSAoUHlPYmplY3QgKm9iaik7Cisgc3RydWN0IHN5 bXRhYiAqc3ltdGFiX29iamVjdF90b19zeW10YWIgKFB5T2JqZWN0ICpvYmopOworIHN0cnVjdCBz eW10YWJfYW5kX2xpbmUgKnNhbF9vYmplY3RfdG9fc3ltdGFiX2FuZF9saW5lIChQeU9iamVjdCAq b2JqKTsKKyAKKytQeU9iamVjdCAqZ2RicHlfZ2V0X2hvb2tfZnVuY3Rpb24gKGNvbnN0IGNoYXIg Kik7Cisgdm9pZCBnZGJweV9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCk7CisrCisgdm9pZCBn ZGJweV9pbml0aWFsaXplX3ZhbHVlcyAodm9pZCk7Cisrdm9pZCBnZGJweV9pbml0aWFsaXplX2Jy ZWFrcG9pbnRzICh2b2lkKTsKKyB2b2lkIGdkYnB5X2luaXRpYWxpemVfZnJhbWVzICh2b2lkKTsK KyB2b2lkIGdkYnB5X2luaXRpYWxpemVfc3ltdGFicyAodm9pZCk7Cisgdm9pZCBnZGJweV9pbml0 aWFsaXplX2NvbW1hbmRzICh2b2lkKTsKK0BAIC0xNTQsNiArMTYyLDcgQEAgdm9pZCBnZGJweV9p bml0aWFsaXplX3N5bWJvbHMgKHZvaWQpOworIHZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9zeW10YWJz ICh2b2lkKTsKKyB2b2lkIGdkYnB5X2luaXRpYWxpemVfYmxvY2tzICh2b2lkKTsKKyB2b2lkIGdk YnB5X2luaXRpYWxpemVfdHlwZXMgKHZvaWQpOworK3ZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9ibG9j a3MgKHZvaWQpOworIHZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9mdW5jdGlvbnMgKHZvaWQpOworIHZv aWQgZ2RicHlfaW5pdGlhbGl6ZV9wc3BhY2UgKHZvaWQpOworIHZvaWQgZ2RicHlfaW5pdGlhbGl6 ZV9vYmpmaWxlICh2b2lkKTsKK0BAIC0xNzEsNiArMTgwLDEyIEBAIHN0cnVjdCBjbGVhbnVwICpl bnN1cmVfcHl0aG9uX2VudiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgZXh0ZXJuIHN0cnVj dCBnZGJhcmNoICpweXRob25fZ2RiYXJjaDsKKyBleHRlcm4gY29uc3Qgc3RydWN0IGxhbmd1YWdl X2RlZm4gKnB5dGhvbl9sYW5ndWFnZTsKKyAKKytjaGFyICpnZGJweV9wYXJzZV9jb21tYW5kX25h bWUgKGNoYXIgKnRleHQsCisrCQkJCXN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqKmJhc2VfbGlz dCwKKysJCQkJc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKipzdGFydF9saXN0KTsKKysKKytQeU9i amVjdCAqZ2RicHlfcGFyYW1ldGVyX3ZhbHVlIChlbnVtIHZhcl90eXBlcywgdm9pZCAqKTsKKysK KyAvKiBVc2UgdGhpcyBhZnRlciBhIFRSWV9FWENFUFQgdG8gdGhyb3cgdGhlIGFwcHJvcHJpYXRl IFB5dGhvbgorICAgIGV4Y2VwdGlvbi4gICovCisgI2RlZmluZSBHREJfUFlfSEFORExFX0VYQ0VQ VElPTihFeGNlcHRpb24pCQkJCVwKK0BAIC0yMjEsMTMgKzIzNiwxNCBAQCBpbnQgZ2RicHlfaXNf dmFsdWVfb2JqZWN0IChQeU9iamVjdCAqb2JqKTsKKyBQeU9iamVjdCAqYXBwbHlfdmFyb2JqX3By ZXR0eV9wcmludGVyIChQeU9iamVjdCAqcHJpbnRfb2JqLAorIAkJCQkgICAgICAgc3RydWN0IHZh bHVlICoqcmVwbGFjZW1lbnQpOworIFB5T2JqZWN0ICpnZGJweV9nZXRfdmFyb2JqX3ByZXR0eV9w cmludGVyIChzdHJ1Y3QgdmFsdWUgKnZhbHVlKTsKKytQeU9iamVjdCAqZ2RicHlfaW5zdGFudGlh dGVfcHJpbnRlciAoUHlPYmplY3QgKmNvbnMsIFB5T2JqZWN0ICp2YWx1ZSk7CisgY2hhciAqZ2Ri cHlfZ2V0X2Rpc3BsYXlfaGludCAoUHlPYmplY3QgKnByaW50ZXIpOworIFB5T2JqZWN0ICpnZGJw eV9kZWZhdWx0X3Zpc3VhbGl6ZXIgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyk7Cisg CistZXh0ZXJuIFB5T2JqZWN0ICpnZGJweV9kb2NfY3N0OworIGV4dGVybiBQeU9iamVjdCAqZ2Ri cHlfY2hpbGRyZW5fY3N0OworIGV4dGVybiBQeU9iamVjdCAqZ2RicHlfdG9fc3RyaW5nX2NzdDsK KyBleHRlcm4gUHlPYmplY3QgKmdkYnB5X2Rpc3BsYXlfaGludF9jc3Q7CisrZXh0ZXJuIFB5T2Jq ZWN0ICpnZGJweV9kb2NfY3N0OworIGV4dGVybiBQeU9iamVjdCAqZ2RicHlfZW5hYmxlZF9jc3Q7 CisgCisgZXh0ZXJuIFB5T2JqZWN0ICpnZGJweV9nZGJlcnJvcl9leGM7CitkaWZmIC0tZ2l0IGEv Z2RiL3B5dGhvbi9weXRob24uYyBiL2dkYi9weXRob24vcHl0aG9uLmMKK2luZGV4IDY2ODAxMjYu LjJlZWUzMWYgMTAwNjQ0CistLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5jCisrKysgYi9nZGIvcHl0 aG9uL3B5dGhvbi5jCitAQCAtMjgsNiArMjgsNyBAQAorICNpbmNsdWRlICJ2YWx1ZS5oIgorICNp bmNsdWRlICJsYW5ndWFnZS5oIgorICNpbmNsdWRlICJleGNlcHRpb25zLmgiCisrI2luY2x1ZGUg ImV2ZW50LWxvb3AuaCIKKyAKKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKyAKK0BAIC00MiwxMCArNDMs MTcgQEAgc3RhdGljIGludCBnZGJweV9zaG91bGRfcHJpbnRfc3RhY2sgPSAxOworICNpbmNsdWRl ICJjbGkvY2xpLWRlY29kZS5oIgorICNpbmNsdWRlICJjaGFyc2V0LmgiCisgI2luY2x1ZGUgInRv cC5oIgorKyNpbmNsdWRlICJzb2xpYi5oIgorICNpbmNsdWRlICJweXRob24taW50ZXJuYWwuaCIK KysjaW5jbHVkZSAibGluZXNwZWMuaCIKKysjaW5jbHVkZSAic3ltdGFiLmgiCisrI2luY2x1ZGUg InNvdXJjZS5oIgorICNpbmNsdWRlICJ2ZXJzaW9uLmgiCisrI2luY2x1ZGUgImluZmVyaW9yLmgi CisrI2luY2x1ZGUgImdkYnRocmVhZC5oIgorICNpbmNsdWRlICJ0YXJnZXQuaCIKKyAjaW5jbHVk ZSAiZ2RidGhyZWFkLmgiCisrI2luY2x1ZGUgImV2ZW50LXRvcC5oIgorIAorIHN0YXRpYyBQeU1l dGhvZERlZiBHZGJNZXRob2RzW107CisgCitAQCAtNDEzLDYgKzQyMSwxMDUgQEAgZXhlY3V0ZV9n ZGJfY29tbWFuZCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cp CisgICBQeV9SRVRVUk5fTk9ORTsKKyB9CisgCisrLyogSW1wbGVtZW50YXRpb24gb2YgZ2RiLnNv bGliX2FkZHJlc3MgKExvbmcpIC0+IFN0cmluZy4KKysgICBSZXR1cm5zIHRoZSBuYW1lIG9mIHRo ZSBzaGFyZWQgbGlicmFyeSBob2xkaW5nIGEgZ2l2ZW4gYWRkcmVzcywgb3IgTm9uZS4gICovCisr Cisrc3RhdGljIFB5T2JqZWN0ICoKKytnZGJweV9zb2xpYl9hZGRyZXNzIChQeU9iamVjdCAqc2Vs ZiwgUHlPYmplY3QgKmFyZ3MpCisreworKyAgdW5zaWduZWQgbG9uZyBsb25nIHBjOworKyAgY2hh ciAqc29uYW1lOworKyAgUHlPYmplY3QgKnN0cl9vYmo7CisrCisrICBpZiAoIVB5QXJnX1BhcnNl VHVwbGUgKGFyZ3MsICJLIiwgJnBjKSkKKysgICAgcmV0dXJuIE5VTEw7CisrCisrICBzb25hbWUg PSBzb2xpYl9uYW1lX2Zyb21fYWRkcmVzcyAoY3VycmVudF9wcm9ncmFtX3NwYWNlLCBwYyk7Cisr ICBpZiAoc29uYW1lKQorKyAgICBzdHJfb2JqID0gUHlTdHJpbmdfRGVjb2RlIChzb25hbWUsIHN0 cmxlbiAoc29uYW1lKSwgaG9zdF9jaGFyc2V0ICgpLCBOVUxMKTsKKysgIGVsc2UKKysgICAgewor KyAgICAgIHN0cl9vYmogPSBQeV9Ob25lOworKyAgICAgIFB5X0lOQ1JFRiAoUHlfTm9uZSk7Cisr ICAgIH0KKysKKysgIHJldHVybiBzdHJfb2JqOworK30KKysKKysvKiBBIFB5dGhvbiBmdW5jdGlv biB3aGljaCBpcyBhIHdyYXBwZXIgZm9yIGRlY29kZV9saW5lXzEuICAqLworKworK3N0YXRpYyBQ eU9iamVjdCAqCisrZ2RicHlfZGVjb2RlX2xpbmUgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAq YXJncykKKyt7CisrICBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMgc2FscyA9IHsgTlVMTCwgMCB9 OyAvKiBJbml0aWFsaXplIHRvIGFwcGVhc2UgZ2NjLiAgKi8KKysgIHN0cnVjdCBzeW10YWJfYW5k X2xpbmUgc2FsOworKyAgY2hhciAqYXJnID0gTlVMTDsKKysgIGludCBmcmVlX3NhbHMgPSAwLCBp OworKyAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisrICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4 Y2VwdGlvbiBleGNlcHQ7CisrCisrICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlIChhcmdzLCAifHMi LCAmYXJnKSkKKysgICAgcmV0dXJuIE5VTEw7CisrCisrICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVU VVJOX01BU0tfQUxMKQorKyAgICB7CisrICAgICAgaWYgKGFyZykKKysJeworKwkgIGNoYXIgKmNv cHk7CisrCisrCSAgYXJnID0gc3RyZHVwIChhcmcpOworKwkgIGNvcHkgPSBhcmc7CisrCisrCSAg c2FscyA9IGRlY29kZV9saW5lXzEgKCZjb3B5LCAwLCAwLCAwLCAwLCAwKTsKKysJICBmcmVlX3Nh bHMgPSAxOworKwl9CisrICAgICAgZWxzZQorKwl7CisrCSAgc2V0X2RlZmF1bHRfc291cmNlX3N5 bXRhYl9hbmRfbGluZSAoKTsKKysJICBzYWwgPSBnZXRfY3VycmVudF9zb3VyY2Vfc3ltdGFiX2Fu ZF9saW5lICgpOworKwkgIHNhbHMuc2FscyA9ICZzYWw7CisrCSAgc2Fscy5uZWx0cyA9IDE7Cisr CX0KKysgICAgfQorKyAgaWYgKGFyZykKKysgICAgeGZyZWUgKGFyZyk7CisrCisrICBpZiAoZXhj ZXB0LnJlYXNvbiA8IDApCisrICAgIHsKKysgICAgICBpZiAoZnJlZV9zYWxzKQorKwl4ZnJlZSAo c2Fscy5zYWxzKTsKKysgICAgICAvKiBXZSBrbm93IHRoaXMgd2lsbCBhbHdheXMgdGhyb3cuICAq LworKyAgICAgIEdEQl9QWV9IQU5ETEVfRVhDRVBUSU9OIChleGNlcHQpOworKyAgICB9CisrCisr ICBpZiAoc2Fscy5uZWx0cykKKysgICAgeworKyAgICAgIHJlc3VsdCA9IFB5VHVwbGVfTmV3IChz YWxzLm5lbHRzKTsKKysgICAgICBmb3IgKGkgPSAwOyBpIDwgc2Fscy5uZWx0czsgKytpKQorKwl7 CisrCSAgUHlPYmplY3QgKm9iajsKKysJICBjaGFyICpzdHI7CisrCisrCSAgb2JqID0gc3ltdGFi X2FuZF9saW5lX3RvX3NhbF9vYmplY3QgKHNhbHMuc2Fsc1tpXSk7CisrCSAgaWYgKCEgb2JqKQor KwkgICAgeworKwkgICAgICBQeV9ERUNSRUYgKHJlc3VsdCk7CisrCSAgICAgIHJlc3VsdCA9IE5V TEw7CisrCSAgICAgIGJyZWFrOworKwkgICAgfQorKworKwkgIFB5VHVwbGVfU2V0SXRlbSAocmVz dWx0LCBpLCBvYmopOworKwl9CisrICAgIH0KKysKKysgIGlmIChmcmVlX3NhbHMpCisrICAgIHhm cmVlIChzYWxzLnNhbHMpOworKworKyAgaWYgKHJlc3VsdCkKKysgICAgcmV0dXJuIHJlc3VsdDsK KysgIFB5X1JFVFVSTl9OT05FOworK30KKysKKyAvKiBQYXJzZSBhIHN0cmluZyBhbmQgZXZhbHVh dGUgaXQgYXMgYW4gZXhwcmVzc2lvbi4gICovCisgc3RhdGljIFB5T2JqZWN0ICoKKyBnZGJweV9w YXJzZV9hbmRfZXZhbCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorQEAgLTQ1Myw2 ICs1NjAsMTE0IEBAIHNvdXJjZV9weXRob25fc2NyaXB0IChGSUxFICpzdHJlYW0sIGNvbnN0IGNo YXIgKmZpbGUpCisgCisgDAorIAorKy8qIFBvc3RpbmcgYW5kIGhhbmRsaW5nIGV2ZW50cy4gICov CisrCisrLyogQSBzaW5nbGUgZXZlbnQuICAqLworK3N0cnVjdCBnZGJweV9ldmVudAorK3sKKysg IC8qIFRoZSBQeXRob24gZXZlbnQuICBUaGlzIGlzIGp1c3QgYSBjYWxsYWJsZSBvYmplY3QuICAq LworKyAgUHlPYmplY3QgKmV2ZW50OworKyAgLyogVGhlIG5leHQgZXZlbnQuICAqLworKyAgc3Ry dWN0IGdkYnB5X2V2ZW50ICpuZXh0OworK307CisrCisrLyogQWxsIHBlbmRpbmcgZXZlbnRzLiAg Ki8KKytzdGF0aWMgc3RydWN0IGdkYnB5X2V2ZW50ICpnZGJweV9ldmVudF9saXN0OworKy8qIFRo ZSBmaW5hbCBsaW5rIG9mIHRoZSBldmVudCBsaXN0LiAgKi8KKytzdGF0aWMgc3RydWN0IGdkYnB5 X2V2ZW50ICoqZ2RicHlfZXZlbnRfbGlzdF9lbmQ7CisrCisrLyogV2UgdXNlIGEgZmlsZSBoYW5k bGVyLCBhbmQgbm90IGFuIGFzeW5jIGhhbmRsZXIsIHNvIHRoYXQgd2UgY2FuCisrICAgd2FrZSB1 cCB0aGUgbWFpbiB0aHJlYWQgZXZlbiB3aGVuIGl0IGlzIGJsb2NrZWQgaW4gcG9sbCgpLiAgKi8K KytzdGF0aWMgaW50IGdkYnB5X2V2ZW50X2Zkc1syXTsKKysKKysvKiBUaGUgZmlsZSBoYW5kbGVy IGNhbGxiYWNrLiAgVGhpcyByZWFkcyBmcm9tIHRoZSBpbnRlcm5hbCBwaXBlLCBhbmQKKysgICB0 aGVuIHByb2Nlc3NlcyB0aGUgUHl0aG9uIGV2ZW50IHF1ZXVlLiAgVGhpcyB3aWxsIGFsd2F5cyBi ZSBydW4gaW4KKysgICB0aGUgbWFpbiBnZGIgdGhyZWFkLiAgKi8KKytzdGF0aWMgdm9pZAorK2dk YnB5X3J1bl9ldmVudHMgKGludCBlcnIsIGdkYl9jbGllbnRfZGF0YSBpZ25vcmUpCisreworKyAg c3RydWN0IGNsZWFudXAgKmNsZWFudXA7CisrICBjaGFyIGJ1ZmZlclsxMDBdOworKyAgaW50IHI7 CisrCisrICBjbGVhbnVwID0gZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9jdXJyZW50X2FyY2ggKCks IGN1cnJlbnRfbGFuZ3VhZ2UpOworKworKyAgLyogSnVzdCByZWFkIHdoYXRldmVyIGlzIGF2YWls YWJsZSBvbiB0aGUgZmQuICBJdCBpcyByZWxhdGl2ZWx5CisrICAgICBoYXJtbGVzcyBpZiB0aGVy ZSBhcmUgYW55IGJ5dGVzIGxlZnQgb3Zlci4gICovCisrICByID0gcmVhZCAoZ2RicHlfZXZlbnRf ZmRzWzBdLCBidWZmZXIsIHNpemVvZiAoYnVmZmVyKSk7CisrCisrICB3aGlsZSAoZ2RicHlfZXZl bnRfbGlzdCkKKysgICAgeworKyAgICAgIC8qIERpc3BhdGNoaW5nIHRoZSBldmVudCBtaWdodCBw dXNoIGEgbmV3IGVsZW1lbnQgb250byB0aGUgZXZlbnQKKysJIGxvb3AsIHNvIHdlIHVwZGF0ZSBo ZXJlICJhdG9taWNhbGx5IGVub3VnaCIuICAqLworKyAgICAgIHN0cnVjdCBnZGJweV9ldmVudCAq aXRlbSA9IGdkYnB5X2V2ZW50X2xpc3Q7CisrICAgICAgZ2RicHlfZXZlbnRfbGlzdCA9IGdkYnB5 X2V2ZW50X2xpc3QtPm5leHQ7CisrICAgICAgaWYgKGdkYnB5X2V2ZW50X2xpc3QgPT0gTlVMTCkK KysJZ2RicHlfZXZlbnRfbGlzdF9lbmQgPSAmZ2RicHlfZXZlbnRfbGlzdDsKKysKKysgICAgICAv KiBJZ25vcmUgZXJyb3JzLiAgKi8KKysgICAgICBQeU9iamVjdF9DYWxsT2JqZWN0IChpdGVtLT5l dmVudCwgTlVMTCk7CisrCisrICAgICAgUHlfREVDUkVGIChpdGVtLT5ldmVudCk7CisrICAgICAg eGZyZWUgKGl0ZW0pOworKyAgICB9CisrCisrICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisrfQor KworKy8qIFN1Ym1pdCBhbiBldmVudCB0byB0aGUgZ2RiIHRocmVhZC4gICovCisrc3RhdGljIFB5 T2JqZWN0ICoKKytnZGJweV9wb3N0X2V2ZW50IChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFy Z3MpCisreworKyAgc3RydWN0IGdkYnB5X2V2ZW50ICpldmVudDsKKysgIFB5T2JqZWN0ICpmdW5j OworKyAgaW50IHdha2V1cDsKKysKKysgIGlmICghUHlBcmdfUGFyc2VUdXBsZSAoYXJncywgIk8i LCAmZnVuYykpCisrICAgIHJldHVybiBOVUxMOworKworKyAgaWYgKCFQeUNhbGxhYmxlX0NoZWNr IChmdW5jKSkKKysgICAgeworKyAgICAgIFB5RXJyX1NldFN0cmluZyAoUHlFeGNfUnVudGltZUVy cm9yLCAiUG9zdGVkIGV2ZW50IGlzIG5vdCBjYWxsYWJsZSIpOworKyAgICAgIHJldHVybiBOVUxM OworKyAgICB9CisrCisrICBQeV9JTkNSRUYgKGZ1bmMpOworKworKyAgLyogRnJvbSBoZXJlIHVu dGlsIHRoZSBlbmQgb2YgdGhlIGZ1bmN0aW9uLCB3ZSBoYXZlIHRoZSBHSUwsIHNvIHdlCisrICAg ICBjYW4gb3BlcmF0ZSBvbiBvdXIgZ2xvYmFsIGRhdGEgc3RydWN0dXJlcyB3aXRob3V0IHdvcnJ5 aW5nLiAgKi8KKysgIHdha2V1cCA9IGdkYnB5X2V2ZW50X2xpc3QgPT0gTlVMTDsKKysKKysgIGV2 ZW50ID0gWE5FVyAoc3RydWN0IGdkYnB5X2V2ZW50KTsKKysgIGV2ZW50LT5ldmVudCA9IGZ1bmM7 CisrICBldmVudC0+bmV4dCA9IE5VTEw7CisrICAqZ2RicHlfZXZlbnRfbGlzdF9lbmQgPSBldmVu dDsKKysgIGdkYnB5X2V2ZW50X2xpc3RfZW5kID0gJmV2ZW50LT5uZXh0OworKworKyAgLyogV2Fr ZSB1cCBnZGIgd2hlbiBuZWVkZWQuICAqLworKyAgaWYgKHdha2V1cCkKKysgICAgeworKyAgICAg IGNoYXIgYyA9ICdxJzsJCS8qIEFueXRoaW5nLiAqLworKyAgICAgIGlmICh3cml0ZSAoZ2RicHlf ZXZlbnRfZmRzWzFdLCAmYywgMSkgIT0gMSkKKysgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9t RXJybm8gKFB5RXhjX0lPRXJyb3IpOworKyAgICB9CisrCisrICBQeV9SRVRVUk5fTk9ORTsKKyt9 CisrCisrLyogSW5pdGlhbGl6ZSB0aGUgUHl0aG9uIGV2ZW50IGhhbmRsZXIuICAqLworK3N0YXRp YyB2b2lkCisrZ2RicHlfaW5pdGlhbGl6ZV9ldmVudHMgKHZvaWQpCisreworKyAgaWYgKCFwaXBl IChnZGJweV9ldmVudF9mZHMpKQorKyAgICB7CisrICAgICAgZ2RicHlfZXZlbnRfbGlzdF9lbmQg PSAmZ2RicHlfZXZlbnRfbGlzdDsKKysgICAgICBhZGRfZmlsZV9oYW5kbGVyIChnZGJweV9ldmVu dF9mZHNbMF0sIGdkYnB5X3J1bl9ldmVudHMsIE5VTEwpOworKyAgICB9CisrfQorKworKwwKKysK KyAvKiBQcmludGluZy4gICovCisgCisgLyogQSBweXRob24gZnVuY3Rpb24gdG8gd3JpdGUgYSBz aW5nbGUgc3RyaW5nIHVzaW5nIGdkYidzIGZpbHRlcmVkCitAQCAtNDk4LDYgKzcxMyw1MyBAQCBn ZGJweV9wcmludF9zdGFjayAodm9pZCkKKyAKKyAvKiBSZXR1cm4gdGhlIGN1cnJlbnQgUHJvZ3Nw YWNlLgorICAgIFRoZXJlIGFsd2F5cyBpcyBvbmUuICAqLworKy8qIFRydWUgaWYgJ2dkYiAtUCcg d2FzIHVzZWQsIGZhbHNlIG90aGVyd2lzZS4gICovCisrc3RhdGljIGludCBydW5uaW5nX3B5dGhv bl9zY3JpcHQ7CisrCisrLyogVHJ1ZSBpZiB3ZSBhcmUgY3VycmVudGx5IGluIGEgY2FsbCB0byAn Z2RiLmNsaScsIGZhbHNlIG90aGVyd2lzZS4gICovCisrc3RhdGljIGludCBpbl9jbGk7CisrCisr LyogRW50ZXIgdGhlIGNvbW1hbmQgbG9vcC4gICovCisrCisrc3RhdGljIFB5T2JqZWN0ICoKKytn ZGJweV9jbGkgKFB5T2JqZWN0ICp1bnVzZWQxLCBQeU9iamVjdCAqdW51c2VkMikKKyt7CisrICBp ZiAoISBydW5uaW5nX3B5dGhvbl9zY3JpcHQgfHwgaW5fY2xpKQorKyAgICByZXR1cm4gUHlFcnJf Rm9ybWF0IChQeUV4Y19SdW50aW1lRXJyb3IsICJjYW5ub3QgaW52b2tlIENMSSByZWN1cnNpdmVs eSIpOworKworKyAgaW5fY2xpID0gMTsKKysgIGNsaV9jb21tYW5kX2xvb3AgKCk7CisrICBpbl9j bGkgPSAwOworKworKyAgUHlfUkVUVVJOX05PTkU7CisrfQorKworKy8qIFNldCB1cCB0aGUgUHl0 aG9uIGFyZ3VtZW50IHZlY3RvciBhbmQgZXZhbHVhdGUgYSBzY3JpcHQuICBUaGlzIGlzCisrICAg dXNlZCB0byBpbXBsZW1lbnQgJ2dkYiAtUCcuICAqLworKworK3ZvaWQKKytydW5fcHl0aG9uX3Nj cmlwdCAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorK3sKKysgIEZJTEUgKmlucHV0OworKworKyAg LyogV2UgbmV2ZXIgZnJlZSB0aGlzLCBzaW5jZSB3ZSBwbGFuIHRvIGV4aXQgYXQgdGhlIGVuZC4g ICovCisrICBlbnN1cmVfcHl0aG9uX2VudiAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwgY3VycmVudF9s YW5ndWFnZSk7CisrCisrICBydW5uaW5nX3B5dGhvbl9zY3JpcHQgPSAxOworKyAgUHlTeXNfU2V0 QXJndiAoYXJnYyAtIDEsIGFyZ3YgKyAxKTsKKysgIGlucHV0ID0gZm9wZW4gKGFyZ3ZbMF0sICJy Iik7CisrICBpZiAoISBpbnB1dCkKKysgICAgeworKyAgICAgIGZwcmludGYgKHN0ZGVyciwgImNv dWxkIG5vdCBvcGVuICVzOiAlc1xuIiwgYXJndlswXSwgc3RyZXJyb3IgKGVycm5vKSk7CisrICAg ICAgZXhpdCAoMSk7CisrICAgIH0KKysgIFB5UnVuX1NpbXBsZUZpbGUgKGlucHV0LCBhcmd2WzBd KTsKKysgIGZjbG9zZSAoaW5wdXQpOworKyAgZXhpdCAoMCk7CisrfQorKworKwwKKysKKyAKKyBz dGF0aWMgUHlPYmplY3QgKgorIGdkYnB5X2dldF9jdXJyZW50X3Byb2dzcGFjZSAoUHlPYmplY3Qg KnVudXNlZDEsIFB5T2JqZWN0ICp1bnVzZWQyKQorQEAgLTc1OSw2ICsxMDIxLDcgQEAgRW5hYmxl cyBvciBkaXNhYmxlcyBwcmludGluZyBvZiBQeXRob24gc3RhY2sgdHJhY2VzLiIpLAorICAgZ2Ri cHlfaW5pdGlhbGl6ZV9sYXp5X3N0cmluZyAoKTsKKyAgIGdkYnB5X2luaXRpYWxpemVfdGhyZWFk ICgpOworICAgZ2RicHlfaW5pdGlhbGl6ZV9pbmZlcmlvciAoKTsKKysgIGdkYnB5X2luaXRpYWxp emVfZXZlbnRzICgpOworIAorICAgUHlSdW5fU2ltcGxlU3RyaW5nICgiaW1wb3J0IGdkYiIpOwor ICAgUHlSdW5fU2ltcGxlU3RyaW5nICgiZ2RiLnByZXR0eV9wcmludGVycyA9IFtdIik7CitAQCAt ODI2LDYgKzEwODksOCBAQCBzdGF0aWMgUHlNZXRob2REZWYgR2RiTWV0aG9kc1tdID0KKyAgICAg IkdldCBhIHZhbHVlIGZyb20gaGlzdG9yeSIgfSwKKyAgIHsgImV4ZWN1dGUiLCAoUHlDRnVuY3Rp b24pIGV4ZWN1dGVfZ2RiX2NvbW1hbmQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisg ICAgICJFeGVjdXRlIGEgZ2RiIGNvbW1hbmQiIH0sCisrICB7ICJjbGkiLCBnZGJweV9jbGksIE1F VEhfTk9BUkdTLAorKyAgICAiRW50ZXIgdGhlIGdkYiBDTEkiIH0sCisgICB7ICJwYXJhbWV0ZXIi LCBnZGJweV9wYXJhbWV0ZXIsIE1FVEhfVkFSQVJHUywKKyAgICAgIlJldHVybiBhIGdkYiBwYXJh bWV0ZXIncyB2YWx1ZSIgfSwKKyAKK0BAIC04NjQsMTEgKzExMjksMjEgQEAgYSBib29sZWFuIGlu ZGljYXRpbmcgaWYgbmFtZSBpcyBhIGZpZWxkIG9mIHRoZSBjdXJyZW50IGltcGxpZWQgYXJndW1l bnRcblwKKyBgdGhpcycgKHdoZW4gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgaXMgb2JqZWN0LW9yaWVu dGVkKS4iIH0sCisgICB7ICJibG9ja19mb3JfcGMiLCBnZGJweV9ibG9ja19mb3JfcGMsIE1FVEhf VkFSQVJHUywKKyAgICAgIlJldHVybiB0aGUgYmxvY2sgY29udGFpbmluZyB0aGUgZ2l2ZW4gcGMg dmFsdWUsIG9yIE5vbmUuIiB9LAorKyAgeyAic29saWJfYWRkcmVzcyAoTG9uZykgLT4gU3RyaW5n LlxuXAorK1JldHVybiB0aGUgbmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgaG9sZGluZyBhIGdp dmVuIGFkZHJlc3MsIG9yIE5vbmUuIiB9LAorKworKyAgeyAiZGVjb2RlX2xpbmUiLCBnZGJweV9k ZWNvZGVfbGluZSwgTUVUSF9WQVJBUkdTLAorKyAgICAiRGVjb2RlIGEgc3RyaW5nIGFyZ3VtZW50 IHRoZSB3YXkgdGhhdCAnYnJlYWsnIG9yICdlZGl0JyBkb2VzLlxuXAorK1JldHVybiBhIHR1cGxl IGhvbGRpbmcgdGhlIGZpbGUgbmFtZSAob3IgTm9uZSkgYW5kIGxpbmUgbnVtYmVyIChvciBOb25l KS5cblwKKytOb3RlOiBtYXkgbGF0ZXIgY2hhbmdlIHRvIHJldHVybiBhbiBvYmplY3QuIiB9LAor ICAgeyAicGFyc2VfYW5kX2V2YWwiLCBnZGJweV9wYXJzZV9hbmRfZXZhbCwgTUVUSF9WQVJBUkdT LAorICAgICAicGFyc2VfYW5kX2V2YWwgKFN0cmluZykgLT4gVmFsdWUuXG5cCisgUGFyc2UgU3Ry aW5nIGFzIGFuIGV4cHJlc3Npb24sIGV2YWx1YXRlIGl0LCBhbmQgcmV0dXJuIHRoZSByZXN1bHQg YXMgYSBWYWx1ZS4iCisgICB9LAorIAorKyAgeyAicG9zdF9ldmVudCIsIGdkYnB5X3Bvc3RfZXZl bnQsIE1FVEhfVkFSQVJHUywKKysgICAgIlBvc3QgYW4gZXZlbnQgaW50byBnZGIncyBldmVudCBs b29wLiIgfSwKKysKKyAgIHsgInRhcmdldF9jaGFyc2V0IiwgZ2RicHlfdGFyZ2V0X2NoYXJzZXQs IE1FVEhfTk9BUkdTLAorICAgICAidGFyZ2V0X2NoYXJzZXQgKCkgLT4gc3RyaW5nLlxuXAorIFJl dHVybiB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCB0YXJnZXQgY2hhcnNldC4iIH0sCitkaWZmIC0t Z2l0IGEvZ2RiL3B5dGhvbi9weXRob24uaCBiL2dkYi9weXRob24vcHl0aG9uLmgKK2luZGV4IGFm ZmQ0YTQuLjU0MDc4NzggMTAwNjQ0CistLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5oCisrKysgYi9n ZGIvcHl0aG9uL3B5dGhvbi5oCitAQCAtMjgsNiArMjgsOCBAQCB2b2lkIGV2YWxfcHl0aG9uX2Zy b21fY29udHJvbF9jb21tYW5kIChzdHJ1Y3QgY29tbWFuZF9saW5lICopOworIAorIHZvaWQgc291 cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAqZmlsZSk7CisgCisr dm9pZCBydW5fcHl0aG9uX3NjcmlwdCAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKKysKKyBpbnQg YXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5 dGUgKnZhbGFkZHIsCisgCQkJICAgICAgaW50IGVtYmVkZGVkX29mZnNldCwgQ09SRV9BRERSIGFk ZHJlc3MsCisgCQkJICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCiBk aWZmIC0tZ2l0IGEvZ2RiL3NvbGliLXN2cjQuYyBiL2dkYi9zb2xpYi1zdnI0LmMKIGluZGV4IDFm MTM1ZDQuLjQ4OTgzOGQgMTAwNjQ0CiAtLS0gYS9nZGIvc29saWItc3ZyNC5jCkBAIC01OTcxLDYg KzEwNzExLDg0IEBAIGluZGV4IDFmMTM1ZDQuLjQ4OTgzOGQgMTAwNjQ0CiAgfQogIAogIC8qIEdp dmVuIGFuIGV4ZWN1dGFibGUncyBBQkZEIGFuZCB0YXJnZXQsIGNvbXB1dGUgdGhlIGVudHJ5LXBv aW50CitkaWZmIC0tZ2l0IGEvZ2RiL3N5bWZpbGUuYyBiL2dkYi9zeW1maWxlLmMKK2luZGV4IGFi NTFmYTQuLmJhYmU5Y2YgMTAwNjQ0CistLS0gYS9nZGIvc3ltZmlsZS5jCisrKysgYi9nZGIvc3lt ZmlsZS5jCitAQCAtMTA1OSw2ICsxMDU5LDkgQEAgc3ltYm9sX2ZpbGVfYWRkX3dpdGhfYWRkcnNf b3Jfb2Zmc2V0cyAoYmZkICphYmZkLAorICAgY29uc3QgY2hhciAqbmFtZSA9IGJmZF9nZXRfZmls ZW5hbWUgKGFiZmQpOworICAgY29uc3QgaW50IGZyb21fdHR5ID0gYWRkX2ZsYWdzICYgU1lNRklM RV9WRVJCT1NFOworIAorKyAgaWYgKHJlYWRub3dfc3ltYm9sX2ZpbGVzKQorKyAgICBmbGFncyB8 PSBPQkpGX1JFQUROT1c7CisrCisgICBteV9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cF9iZmRfY2xv c2UgKGFiZmQpOworIAorICAgLyogR2l2ZSB1c2VyIGEgY2hhbmNlIHRvIGJ1cnAgaWYgd2UnZCBi ZQorQEAgLTEwOTUsNyArMTA5OCw3IEBAIHN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJzX29yX29m ZnNldHMgKGJmZCAqYWJmZCwKKyAgICAgIHRoZSBnZGIgc3RhcnR1cCBjb21tYW5kIGxpbmUgb3Ig b24gYSBwZXIgc3ltYm9sIGZpbGUgYmFzaXMuICBFeHBhbmQKKyAgICAgIGFsbCBwYXJ0aWFsIHN5 bWJvbCB0YWJsZXMgZm9yIHRoaXMgb2JqZmlsZSBpZiBzby4gKi8KKyAKKy0gIGlmICgoZmxhZ3Mg JiBPQkpGX1JFQUROT1cpIHx8IHJlYWRub3dfc3ltYm9sX2ZpbGVzKQorKyAgaWYgKChmbGFncyAm IE9CSkZfUkVBRE5PVykpCisgICAgIHsKKyAgICAgICBpZiAoZnJvbV90dHkgfHwgaW5mb192ZXJi b3NlKQorIAl7CitAQCAtMTUzNSw3ICsxNTM4LDcgQEAgc3ltYm9sX2ZpbGVfY29tbWFuZCAoY2hh ciAqYXJncywgaW50IGZyb21fdHR5KQorIHZvaWQKKyBzZXRfaW5pdGlhbF9sYW5ndWFnZSAodm9p ZCkKKyB7CistICBjaGFyICpmaWxlbmFtZTsKKysgIGNvbnN0IGNoYXIgKmZpbGVuYW1lOworICAg ZW51bSBsYW5ndWFnZSBsYW5nID0gbGFuZ3VhZ2VfdW5rbm93bjsKKyAKKyAgIGZpbGVuYW1lID0g ZmluZF9tYWluX2ZpbGVuYW1lICgpOworQEAgLTI2NjIsNyArMjY2NSw3IEBAIGluaXRfZmlsZW5h bWVfbGFuZ3VhZ2VfdGFibGUgKHZvaWQpCisgfQorIAorIGVudW0gbGFuZ3VhZ2UKKy1kZWR1Y2Vf bGFuZ3VhZ2VfZnJvbV9maWxlbmFtZSAoY2hhciAqZmlsZW5hbWUpCisrZGVkdWNlX2xhbmd1YWdl X2Zyb21fZmlsZW5hbWUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorIHsKKyAgIGludCBpOworICAg Y2hhciAqY3A7CitkaWZmIC0tZ2l0IGEvZ2RiL3N5bWZpbGUuaCBiL2dkYi9zeW1maWxlLmgKK2lu ZGV4IGQ1M2M0NjUuLjU4MTUzNTQgMTAwNjQ0CistLS0gYS9nZGIvc3ltZmlsZS5oCisrKysgYi9n ZGIvc3ltZmlsZS5oCitAQCAtMTcxLDYgKzE3MSwxNSBAQCBzdHJ1Y3QgcXVpY2tfc3ltYm9sX2Z1 bmN0aW9ucworIAkJCQkgICBpbnQga2luZCwgY29uc3QgY2hhciAqbmFtZSwKKyAJCQkJICAgZG9t YWluX2VudW0gZG9tYWluKTsKKyAKKysgIC8qIFRoaXMgaXMgY2FsbGVkIHRvIGV4cGFuZCBzeW1i b2wgdGFibGVzIGJlZm9yZSBsb29raW5nIHVwIGEKKysgICAgIHN5bWJvbC4gIEEgYmFja2VuZCBj YW4gY2hvb3NlIHRvIGltcGxlbWVudCB0aGlzIGFuZCB0aGVuIGhhdmUgaXRzCisrICAgICBgbG9v a3VwX3N5bWJvbCcgaG9vayBhbHdheXMgcmV0dXJuIE5VTEwsIG9yIHRoZSByZXZlcnNlLiAgKEl0 CisrICAgICBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gaW1wbGVtZW50IGJvdGguKSAgVGhlIGFyZ3Vt ZW50cyBhcmUgYXMgZm9yCisrICAgICBgbG9va3VwX3N5bWJvbCcuICAqLworKyAgdm9pZCAoKnBy ZV9leHBhbmRfc3ltdGFic19tYXRjaGluZykgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorKwkJ CQkgICAgICAgaW50IGtpbmQsIGNvbnN0IGNoYXIgKm5hbWUsCisrCQkJCSAgICAgICBkb21haW5f ZW51bSBkb21haW4pOworKworICAgLyogUHJpbnQgc3RhdGlzdGljcyBhYm91dCBhbnkgaW5kaWNl cyBsb2FkZWQgZm9yIE9CSkZJTEUuICBUaGUKKyAgICAgIHN0YXRpc3RpY3Mgc2hvdWxkIGJlIHBy aW50ZWQgdG8gZ2RiX3N0ZG91dC4gIFRoaXMgaXMgdXNlZCBmb3IKKyAgICAgICJtYWludCBwcmlu dCBzdGF0aXN0aWNzIi4gICovCitAQCAtMjAxLDcgKzIxMCw3IEBAIHN0cnVjdCBxdWlja19zeW1i b2xfZnVuY3Rpb25zCisgCisgICAvKiBSZXR1cm4gdGhlIGZpbGUgbmFtZSBvZiB0aGUgZmlsZSBo b2xkaW5nIHRoZSBzeW1ib2wgaW4gT0JKRklMRQorICAgICAgbmFtZWQgTkFNRS4gIElmIG5vIHN1 Y2ggc3ltYm9sIGV4aXN0cyBpbiBPQkpGSUxFLCByZXR1cm4gTlVMTC4gICovCistICBjaGFyICoo KmZpbmRfc3ltYm9sX2ZpbGUpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAq bmFtZSk7CisrICBjb25zdCBjaGFyICooKmZpbmRfc3ltYm9sX2ZpbGUpIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqbmFtZSk7CisgCisgICAvKiBUaGlzIG1ldGhvZCBpcyBz cGVjaWZpYyB0byBBZGEuICBJdCB3YWxrcyB0aGUgcGFydGlhbCBzeW1ib2wKKyAgICAgIHRhYmxl cyBvZiBPQkpGSUxFIGxvb2tpbmcgZm9yIGEgbmFtZSBtYXRjaC4gIFdJTERfTUFUQ0ggYW5kCitA QCAtNTY2LDYgKzU3NSw3IEBAIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqaW5jcmVtZW50X3JlYWRp bmdfc3ltdGFiICh2b2lkKTsKKyAKKyBleHRlcm4gaW50IGR3YXJmMl9oYXNfaW5mbyAoc3RydWN0 IG9iamZpbGUgKik7CisgCisrZXh0ZXJuIGludCBkd2FyZjJfaW5pdGlhbGl6ZV9vYmpmaWxlIChz dHJ1Y3Qgb2JqZmlsZSAqKTsKKyBleHRlcm4gdm9pZCBkd2FyZjJfYnVpbGRfcHN5bXRhYnMgKHN0 cnVjdCBvYmpmaWxlICopOworIGV4dGVybiB2b2lkIGR3YXJmMl9idWlsZF9mcmFtZV9pbmZvIChz dHJ1Y3Qgb2JqZmlsZSAqKTsKKyAKIGRpZmYgLS1naXQgYS9nZGIvc3ltbWlzYy5jIGIvZ2RiL3N5 bW1pc2MuYwogaW5kZXggNjJlNmI5Ny4uMDBkYzYxMyAxMDA2NDQKIC0tLSBhL2dkYi9zeW1taXNj LmMKQEAgLTU5ODYsMTAgKzEwODA0LDk3IEBAIGluZGV4IDYyZTZiOTcuLjAwZGM2MTMgMTAwNjQ0 CiAgCSAgbXNfdHlwZSA9ICdTJzsKICAJICBicmVhazsKIGRpZmYgLS1naXQgYS9nZGIvc3ltdGFi LmMgYi9nZGIvc3ltdGFiLmMKLWluZGV4IDk0NzJjMjQuLjU2MWVlNTAgMTAwNjQ0CitpbmRleCA5 NDcyYzI0Li5jM2IxNzkyIDEwMDY0NAogLS0tIGEvZ2RiL3N5bXRhYi5jCiArKysgYi9nZGIvc3lt dGFiLmMKLUBAIC0yOTE0LDcgKzI5MTQsNyBAQCBzZWFyY2hfc3ltYm9scyAoY2hhciAqcmVnZXhw LCBkb21haW5fZW51bSBraW5kLCBpbnQgbmZpbGVzLCBjaGFyICpmaWxlc1tdLAorQEAgLTEyOTUs MTYgKzEyOTUsMjUgQEAgbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoaW50IGJsb2NrX2luZGV4 LCBjb25zdCBjaGFyICpuYW1lLAorICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jazsKKyAgIHN0 cnVjdCBzeW10YWIgKnM7CisgCistICBBTExfUFJJTUFSWV9TWU1UQUJTIChvYmpmaWxlLCBzKQor KyAgQUxMX09CSkZJTEVTIChvYmpmaWxlKQorICAgeworLSAgICBidiA9IEJMT0NLVkVDVE9SIChz KTsKKy0gICAgYmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIGJsb2NrX2luZGV4KTsKKy0g ICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIGRvbWFpbik7CistICAg IGlmIChzeW0pCistICAgICAgeworLQlibG9ja19mb3VuZCA9IGJsb2NrOworLQlyZXR1cm4gZml4 dXBfc3ltYm9sX3NlY3Rpb24gKHN5bSwgb2JqZmlsZSk7CistICAgICAgfQorKyAgICBpZiAob2Jq ZmlsZS0+c2YpCisrICAgICAgb2JqZmlsZS0+c2YtPnFmLT5wcmVfZXhwYW5kX3N5bXRhYnNfbWF0 Y2hpbmcgKG9iamZpbGUsCisrCQkJCQkJICAgIGJsb2NrX2luZGV4LAorKwkJCQkJCSAgICBuYW1l LCBkb21haW4pOworKworKyAgICBBTExfT0JKRklMRV9TWU1UQUJTIChvYmpmaWxlLCBzKQorKyAg ICAgIGlmIChzLT5wcmltYXJ5KQorKwl7CisrCSAgYnYgPSBCTE9DS1ZFQ1RPUiAocyk7CisrCSAg YmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIGJsb2NrX2luZGV4KTsKKysJICBzeW0gPSBs b29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgZG9tYWluKTsKKysJICBpZiAoc3ltKQor KwkgICAgeworKwkgICAgICBibG9ja19mb3VuZCA9IGJsb2NrOworKwkgICAgICByZXR1cm4gZml4 dXBfc3ltYm9sX3NlY3Rpb24gKHN5bSwgb2JqZmlsZSk7CisrCSAgICB9CisrCX0KKyAgIH0KKyAK KyAgIHJldHVybiBOVUxMOworQEAgLTE1NDcsMTUgKzE1NTYsMjQgQEAgYmFzaWNfbG9va3VwX3Ry YW5zcGFyZW50X3R5cGUgKGNvbnN0IGNoYXIgKm5hbWUpCisgICAgICBvZiB0aGUgZGVzaXJlZCBu YW1lIGFzIGEgZ2xvYmFsLCB0aGVuIGRvIHBzeW10YWItdG8tc3ltdGFiCisgICAgICBjb252ZXJz aW9uIG9uIHRoZSBmbHkgYW5kIHJldHVybiB0aGUgZm91bmQgc3ltYm9sLiAgKi8KKyAKKy0gIEFM TF9QUklNQVJZX1NZTVRBQlMgKG9iamZpbGUsIHMpCisrICBBTExfT0JKRklMRVMgKG9iamZpbGUp CisgICB7CistICAgIGJ2ID0gQkxPQ0tWRUNUT1IgKHMpOworLSAgICBibG9jayA9IEJMT0NLVkVD VE9SX0JMT0NLIChidiwgR0xPQkFMX0JMT0NLKTsKKy0gICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5 bWJvbCAoYmxvY2ssIG5hbWUsIFNUUlVDVF9ET01BSU4pOworLSAgICBpZiAoc3ltICYmICFUWVBF X0lTX09QQVFVRSAoU1lNQk9MX1RZUEUgKHN5bSkpKQorLSAgICAgIHsKKy0JcmV0dXJuIFNZTUJP TF9UWVBFIChzeW0pOworLSAgICAgIH0KKysgICAgaWYgKG9iamZpbGUtPnNmKQorKyAgICAgIG9i amZpbGUtPnNmLT5xZi0+cHJlX2V4cGFuZF9zeW10YWJzX21hdGNoaW5nIChvYmpmaWxlLAorKwkJ CQkJCSAgICBHTE9CQUxfQkxPQ0ssCisrCQkJCQkJICAgIG5hbWUsIFNUUlVDVF9ET01BSU4pOwor KworKyAgICBBTExfT0JKRklMRV9TWU1UQUJTIChvYmpmaWxlLCBzKQorKyAgICAgIGlmIChzLT5w cmltYXJ5KQorKwl7CisrCSAgYnYgPSBCTE9DS1ZFQ1RPUiAocyk7CisrCSAgYmxvY2sgPSBCTE9D S1ZFQ1RPUl9CTE9DSyAoYnYsIEdMT0JBTF9CTE9DSyk7CisrCSAgc3ltID0gbG9va3VwX2Jsb2Nr X3N5bWJvbCAoYmxvY2ssIG5hbWUsIFNUUlVDVF9ET01BSU4pOworKwkgIGlmIChzeW0gJiYgIVRZ UEVfSVNfT1BBUVVFIChTWU1CT0xfVFlQRSAoc3ltKSkpCisrCSAgICB7CisrCSAgICAgIHJldHVy biBTWU1CT0xfVFlQRSAoc3ltKTsKKysJICAgIH0KKysJfQorICAgfQorIAorICAgQUxMX09CSkZJ TEVTIChvYmpmaWxlKQorQEAgLTE1OTksMTQgKzE2MTcsMTYgQEAgYmFzaWNfbG9va3VwX3RyYW5z cGFyZW50X3R5cGUgKGNvbnN0IGNoYXIgKm5hbWUpCisgLyogRklYTUU6ICBXaGF0IGFib3V0IGxh bmd1YWdlcyB3aXRob3V0IG1haW4oKSBvciBzcGVjaWFsbHkgbGlua2VkCisgICAgZXhlY3V0YWJs ZXMgdGhhdCBoYXZlIG5vIG1haW4oKSA/ICovCisgCistY2hhciAqCisrY29uc3QgY2hhciAqCisg ZmluZF9tYWluX2ZpbGVuYW1lICh2b2lkKQorIHsKKyAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl OworLSAgY2hhciAqcmVzdWx0LCAqbmFtZSA9IG1haW5fbmFtZSAoKTsKKysgIGNoYXIgKm5hbWUg PSBtYWluX25hbWUgKCk7CisgCisgICBBTExfT0JKRklMRVMgKG9iamZpbGUpCisgICB7CisrICAg IGNvbnN0IGNoYXIgKnJlc3VsdDsKKysKKyAgICAgaWYgKCFvYmpmaWxlLT5zZikKKyAgICAgICBj b250aW51ZTsKKyAgICAgcmVzdWx0ID0gb2JqZmlsZS0+c2YtPnFmLT5maW5kX3N5bWJvbF9maWxl IChvYmpmaWxlLCBuYW1lKTsKK0BAIC0yOTE0LDcgKzI5MzQsNyBAQCBzZWFyY2hfc3ltYm9scyAo Y2hhciAqcmVnZXhwLCBkb21haW5fZW51bSBraW5kLCBpbnQgbmZpbGVzLCBjaGFyICpmaWxlc1td LAogICAgc3RhdGljIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSB0eXBlczNbXQogICAgICA9IHtt c3RfZmlsZV9kYXRhLCBtc3Rfc29saWJfdHJhbXBvbGluZSwgbXN0X2FicywgbXN0X3Vua25vd259 OwogICAgc3RhdGljIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSB0eXBlczRbXQpAQCAtNTk5OSw3 ICsxMDkwNCw3IEBAIGluZGV4IDk0NzJjMjQuLjU2MWVlNTAgMTAwNjQ0CiAgICBlbnVtIG1pbmlt YWxfc3ltYm9sX3R5cGUgb3VydHlwZTI7CiAgICBlbnVtIG1pbmltYWxfc3ltYm9sX3R5cGUgb3Vy dHlwZTM7CiBkaWZmIC0tZ2l0IGEvZ2RiL3N5bXRhYi5oIGIvZ2RiL3N5bXRhYi5oCi1pbmRleCBi ZWRjMTBhLi5mNWRkY2IxIDEwMDY0NAoraW5kZXggYmVkYzEwYS4uZGMyODRlNCAxMDA2NDQKIC0t LSBhL2dkYi9zeW10YWIuaAogKysrIGIvZ2RiL3N5bXRhYi5oCiBAQCAtMjc3LDYgKzI3Nyw5IEBA IGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZQpAQCAtNjA0OSw2ICsxMDk1NCwyNCBAQCBpbmRleCBi ZWRjMTBhLi5mNWRkY2IxIDEwMDY0NAogIGV4dGVybiBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKgog ICAgICBsb29rdXBfbWluaW1hbF9zeW1ib2xfYW5kX29iamZpbGUgKGNvbnN0IGNoYXIgKiwKICAJ CQkJICAgICAgIHN0cnVjdCBvYmpmaWxlICoqKTsKK0BAIC0xMTM3LDcgKzExNTYsNyBAQCBleHRl cm4gY2hhciAqKm1ha2Vfc291cmNlX2ZpbGVzX2NvbXBsZXRpb25fbGlzdCAoY2hhciAqLCBjaGFy ICopOworIAorIGludCBtYXRjaGluZ19vYmpfc2VjdGlvbnMgKHN0cnVjdCBvYmpfc2VjdGlvbiAq LCBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKik7CisgCistZXh0ZXJuIGNoYXIgKmZpbmRfbWFpbl9maWxl bmFtZSAodm9pZCk7CisrZXh0ZXJuIGNvbnN0IGNoYXIgKmZpbmRfbWFpbl9maWxlbmFtZSAodm9p ZCk7CisgCisgZXh0ZXJuIHN0cnVjdCBzeW10YWIgKmZpbmRfbGluZV9zeW10YWIgKHN0cnVjdCBz eW10YWIgKiwgaW50LCBpbnQgKiwgaW50ICopOworIAorQEAgLTExNTAsNyArMTE2OSw3IEBAIGV4 dGVybiB2b2lkIHNraXBfcHJvbG9ndWVfc2FsIChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lICopOwor IAorIGV4dGVybiB2b2lkIGNsZWFyX3N5bXRhYl91c2VycyAodm9pZCk7CisgCistZXh0ZXJuIGVu dW0gbGFuZ3VhZ2UgZGVkdWNlX2xhbmd1YWdlX2Zyb21fZmlsZW5hbWUgKGNoYXIgKik7CisrZXh0 ZXJuIGVudW0gbGFuZ3VhZ2UgZGVkdWNlX2xhbmd1YWdlX2Zyb21fZmlsZW5hbWUgKGNvbnN0IGNo YXIgKik7CisgCisgLyogc3ltdGFiLmMgKi8KKyAKIGRpZmYgLS1naXQgYS9nZGIvdGFyZ2V0LmMg Yi9nZGIvdGFyZ2V0LmMKIGluZGV4IDg2MmRmNGUuLmE4ZjFiZGQgMTAwNjQ0CiAtLS0gYS9nZGIv dGFyZ2V0LmMKQEAgLTYxMDksNyArMTEwMzIsNyBAQCBpbmRleCA4NjJkZjRlLi5hOGYxYmRkIDEw MDY0NAogICAgY3VycmVudF90YXJnZXQudG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MgPSBkZWJ1Z190 b19zdG9wcGVkX2RhdGFfYWRkcmVzczsKICAgIGN1cnJlbnRfdGFyZ2V0LnRvX3dhdGNocG9pbnRf YWRkcl93aXRoaW5fcmFuZ2UgPSBkZWJ1Z190b193YXRjaHBvaW50X2FkZHJfd2l0aGluX3Jhbmdl OwogZGlmZiAtLWdpdCBhL2dkYi90YXJnZXQuaCBiL2dkYi90YXJnZXQuaAotaW5kZXggM2M4YzAx Ny4uZTk1MDNkZSAxMDA2NDQKK2luZGV4IDNjOGMwMTcuLjYwOGE3NDIgMTAwNjQ0CiAtLS0gYS9n ZGIvdGFyZ2V0LmgKICsrKyBiL2dkYi90YXJnZXQuaAogQEAgLTQzMyw2ICs0MzMsNyBAQCBzdHJ1 Y3QgdGFyZ2V0X29wcwpAQCAtNjEzNiw2ICsxMTA1OSwyNSBAQCBpbmRleCAzYzhjMDE3Li5lOTUw M2RlIDEwMDY0NAogICNkZWZpbmUgdGFyZ2V0X2luc2VydF9od19icmVha3BvaW50KGdkYmFyY2gs IGJwX3RndCkgXAogICAgICAgKCpjdXJyZW50X3RhcmdldC50b19pbnNlcnRfaHdfYnJlYWtwb2lu dCkgKGdkYmFyY2gsIGJwX3RndCkKICAKK0BAIC0xMzY5LDYgKzEzNzksMTggQEAgZXh0ZXJuIGlu dCB0YXJnZXRfc2VhcmNoX21lbW9yeSAoQ09SRV9BRERSIHN0YXJ0X2FkZHIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVUxPTkdFU1QgcGF0dGVybl9sZW4sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQ09SRV9BRERSICpmb3VuZF9hZGRycCk7CisgCisrLyog VXRpbGl0eSBmdW5jdGlvbnMgd2hpY2ggY2FuIGJlIHVzZWQgYnkgc2VhcmNoX21lbW9yeSBpbXBs ZW1lbnRhdGlvbnMuICAqLworKworK3ZvaWQgYWxsb2NhdGVfcGF0dGVybl9idWZmZXIgKGNoYXIg KipwYXR0ZXJuX2J1ZnAsIGNoYXIgKipwYXR0ZXJuX2J1Zl9lbmQsCisrCQkJICAgICAgVUxPTkdF U1QgKnBhdHRlcm5fYnVmX3NpemUpOworKworK3ZvaWQgaW5jcmVhc2VfcGF0dGVybl9idWZmZXIg KGNoYXIgKipwYXR0ZXJuX2J1ZnAsIGNoYXIgKipwYXR0ZXJuX2J1Zl9lbmQsCisrCQkJICAgICAg VUxPTkdFU1QgKnBhdHRlcm5fYnVmX3NpemUsIGludCB2YWxfYnl0ZXMpOworKworK2ludCBzZWFy Y2hfbWVtb3J5IChDT1JFX0FERFIgKnN0YXJ0X2FkZHIsIFVMT05HRVNUICpzZWFyY2hfc3BhY2Vf bGVuLAorKwkJICAgY29uc3QgY2hhciAqcGF0dGVybl9idWYsIFVMT05HRVNUIHBhdHRlcm5fbGVu LAorKwkJICAgQ09SRV9BRERSICpmb3VuZF9hZGRyKTsKKysKKyAvKiBUcmFjZXBvaW50LXJlbGF0 ZWQgb3BlcmF0aW9ucy4gICovCisgCisgI2RlZmluZSB0YXJnZXRfdHJhY2VfaW5pdCgpIFwKIGRp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci1mb28u UyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLWZvby5TCiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAogaW5kZXggMDAwMDAwMC4uODNmYWFmNgpAQCAtOTI2Nyw2ICsxNDIw OSwyMSBAQCBpbmRleCAwMDAwMDAwLi4yMjZkYzVkCiArICBoID0gJ2gnCiArICBjYWxsIGZvbyAo ZywgaCkKICtlbmQKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3Qu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAoraW5kZXggMWFlZDI1Mi4u NTkzYWE1NSAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAK KysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAKK0BAIC05Miw2ICs5Miwx MCBAQCBwcm9jIGRvX3N0ZXBzX2FuZF9uZXh0cyB7fSB7CisgCQlzZXQgZGVzY3JpcHRpb24gInN0 ZXAgb3ZlciB0dHlhcmcgaW5pdGlhbGl6YXRpb24iCisgCQlzZXQgY29tbWFuZCAic3RlcCIKKyAJ ICAgIH0KKysJICAgIC1yZSAiLipweXRob25fc2NyaXB0ID0gMC4qJGdkYl9wcm9tcHQgJCIgewor KwkJc2V0IGRlc2NyaXB0aW9uICJzdGVwIG92ZXIgcHl0aG9uX3NjcmlwdCBpbml0aWFsaXphdGlv biIKKysJCXNldCBjb21tYW5kICJzdGVwIgorKwkgICAgfQorIAkgICAgLXJlICIuKnByZV9zdGF0 X2NoYWluID0gbWFrZV9jb21tYW5kX3N0YXRzX2NsZWFudXAuKiRnZGJfcHJvbXB0ICQiIHsKKyAJ CXNldCBkZXNjcmlwdGlvbiAibmV4dCBvdmVyIG1ha2VfY29tbWFuZF9zdGF0c19jbGVhbnVwIGFu ZCBldmVyeXRoaW5nIGl0IGNhbGxzIgorIAkJc2V0IGNvbW1hbmQgIm5leHQiCiBkaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbnBlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmph dmEvam5wZS5leHAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiBpbmRleCAwMDAwMDAwLi41NWFhODBk CkBAIC05NzcxLDYgKzE0NzI4LDEyNCBAQCBpbmRleCAwMDAwMDAwLi4yOTU2MDJkCiArICBzIDo9 ICd0ZXN0JyMwJ3N0cmluZyc7CiArICB3cml0ZWxuKHMpOyB7IHNldCBicmVha3BvaW50IDIgaGVy ZSB9CiArZW5kLgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1jbWQu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWNtZC5leHAKK2luZGV4IDBmMjUwZDIu Ljg0ZTUwMzggMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktY21kLmV4 cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWNtZC5leHAKK0BAIC0yMCwyNCAr MjAsNiBAQCBpZiAkdHJhY2VsZXZlbCB0aGVuIHsKKyAgICAgc3RyYWNlICR0cmFjZWxldmVsCisg fQorIAorLSMgVXNhZ2U6IGdkYl9weV90ZXN0X211bHRpcGxlIE5BTUUgSU5QVVQgUkVTVUxUIHtJ TlBVVCBSRVNVTFR9Li4uCistIyBSdW4gYSB0ZXN0IG5hbWVkIE5BTUUsIGNvbnNpc3Rpbmcgb2Yg bXVsdGlwbGUgbGluZXMgb2YgaW5wdXQuCistIyBBZnRlciBlYWNoIGlucHV0IGxpbmUgSU5QVVQs IHNlYXJjaCBmb3IgcmVzdWx0IGxpbmUgUkVTVUxULgorLSMgU3VjY2VlZCBpZiBhbGwgcmVzdWx0 cyBhcmUgc2VlbjsgZmFpbCBvdGhlcndpc2UuCistcHJvYyBnZGJfcHlfdGVzdF9tdWx0aXBsZSB7 bmFtZSBhcmdzfSB7CistICAgIGdsb2JhbCBnZGJfcHJvbXB0CistICAgIGZvcmVhY2gge2lucHV0 IHJlc3VsdH0gJGFyZ3MgeworLQlpZiB7W2dkYl90ZXN0X211bHRpcGxlICRpbnB1dCAiJG5hbWUg LSAkaW5wdXQiIHsKKy0JICAgIC1yZSAiXFtcclxuXF0qKCRyZXN1bHQpXFtcclxuXF0rKCRnZGJf cHJvbXB0IHwgKj4pJCIgeworLQkJcGFzcyAiJG5hbWUgLSAkaW5wdXQiCistCSAgICB9CistCX1d fSB7CistCSAgICByZXR1cm4gMQorLQl9CistICAgIH0KKy0gICAgcmV0dXJuIDAKKy19CistCisg IyBTdGFydCB3aXRoIGEgZnJlc2ggZ2RiLgorIAorIGdkYl9leGl0CitkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1mcmFtZS5leHAKK2luZGV4IGUxMjEyZDMuLjc3ZjQ0ZjUgMTAwNjQ0CistLS0gYS9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5weXRob24vcHktZnJhbWUuZXhwCitAQCAtODksOCArODksNiBAQCBnZGJfcHlfdGVzdF9z aWxlbnRfY21kICJweXRob24gZjAgPSBmMS5uZXdlciAoKSIgImdldCBmaXJzdCBmcmFtZSIgMAor IAorIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAgPT0gZjEiICIgPSBGYWxz ZSIgInRlc3QgZXF1YWxpdHkgY29tcGFyaXNvbiAoZmFsc2UpIgorIGdkYl90ZXN0ICJweXRob24g cHJpbnQgJ3Jlc3VsdCA9JywgZjAgPT0gZjAiICIgPSBUcnVlIiAidGVzdCBlcXVhbGl0eSBjb21w YXJpc29uICh0cnVlKSIKKy1nZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwICE9 IGYxIiAiID0gVHJ1ZSIgInRlc3QgaW5lcXVhbGl0eSBjb21wYXJpc29uICh0cnVlKSIKKy1nZGJf dGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwICE9IGYwIiAiID0gRmFsc2UiICJ0ZXN0 IGluZXF1YWxpdHkgY29tcGFyaXNvbiAoZmFsc2UpIgorIGdkYl90ZXN0ICJweXRob24gcHJpbnQg J3Jlc3VsdCA9JywgZjAuaXNfdmFsaWQgKCkiICIgPSBUcnVlIiAidGVzdCBGcmFtZS5pc192YWxp ZCIKKyBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLm5hbWUgKCkiICIgPSBm MiIgInRlc3QgRnJhbWUubmFtZSIKKyBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScs IGYwLnR5cGUgKCkgPT0gZ2RiLk5PUk1BTF9GUkFNRSIgIiA9IFRydWUiICJ0ZXN0IEZyYW1lLnR5 cGUiCitAQCAtMTA1LDMgKzEwMyw1IEBAIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9 JywgZjAucmVhZF92YXIgKCd2YXJpYWJsZV93aGljaF9zdXJlbHlfZG9lc250X2V4CisgZ2RiX3Rl c3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMC5yZWFkX3ZhciAoJ2EnKSIgIiA9IDEiICJ0 ZXN0IEZyYW1lLnJlYWRfdmFyIC0gc3VjY2VzcyIKKyAKKyBnZGJfdGVzdCAicHl0aG9uIHByaW50 ICdyZXN1bHQgPScsIGdkYi5zZWxlY3RlZF9mcmFtZSAoKSA9PSBmMSIgIiA9IFRydWUiICJ0ZXN0 IGdkYi5zZWxlY3RlZF9mcmFtZSIKKysKKytnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQg PScsIGYwLmJsb2NrICgpIiAiPGdkYi5CbG9jayBvYmplY3QgYXQgMHhcW1xbOnhkaWdpdDpcXVxd Kz4iICJ0ZXN0IEZyYW1lLmJsb2NrIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1mdW5jdGlvbi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnVuY3Rp b24uZXhwCitpbmRleCAzOGM1NjkzLi5lN2YwMDM3IDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIucHl0aG9uL3B5LWZ1bmN0aW9uLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0 aG9uL3B5LWZ1bmN0aW9uLmV4cAorQEAgLTIwLDI0ICsyMCw2IEBAIGlmICR0cmFjZWxldmVsIHRo ZW4geworICAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKKyB9CisgCistIyBVc2FnZTogZ2RiX3B5X3Rl c3RfbXVsdGlwbGUgTkFNRSBJTlBVVCBSRVNVTFQge0lOUFVUIFJFU1VMVH0uLi4KKy0jIFJ1biBh IHRlc3QgbmFtZWQgTkFNRSwgY29uc2lzdGluZyBvZiBtdWx0aXBsZSBsaW5lcyBvZiBpbnB1dC4K Ky0jIEFmdGVyIGVhY2ggaW5wdXQgbGluZSBJTlBVVCwgc2VhcmNoIGZvciByZXN1bHQgbGluZSBS RVNVTFQuCistIyBTdWNjZWVkIGlmIGFsbCByZXN1bHRzIGFyZSBzZWVuOyBmYWlsIG90aGVyd2lz ZS4KKy1wcm9jIGdkYl9weV90ZXN0X211bHRpcGxlIHtuYW1lIGFyZ3N9IHsKKy0gICAgZ2xvYmFs IGdkYl9wcm9tcHQKKy0gICAgZm9yZWFjaCB7aW5wdXQgcmVzdWx0fSAkYXJncyB7CistCWlmIHtb Z2RiX3Rlc3RfbXVsdGlwbGUgJGlucHV0ICIkbmFtZSAtICRpbnB1dCIgeworLQkgICAgLXJlICJc W1xyXG5cXSooJHJlc3VsdClcW1xyXG5cXSsoJGdkYl9wcm9tcHQgfCAqPikkIiB7CistCQlwYXNz ICIkbmFtZSAtICRpbnB1dCIKKy0JICAgIH0KKy0JfV19IHsKKy0JICAgIHJldHVybiAxCistCX0K Ky0gICAgfQorLSAgICByZXR1cm4gMAorLX0KKy0KKyAjIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIu CisgCisgZ2RiX2V4aXQKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHkt cHJldHR5cHJpbnQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50 LmV4cAoraW5kZXggM2IyYWFkZC4uMDNiYmYzZSAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1wcmV0dHlwcmludC5leHAKK0BAIC0xMDIsNiArMTAyLDggQEAgcHJvYyBydW5fbGFu Z190ZXN0cyB7bGFuZ30geworICAgICBnZGJfdGVzdCAicHJpbnQgZXN0cmluZyIgIlwiZW1iZWRk ZWQgeFxcXFwyMDFcXFxcMjAyXFxcXDIwM1xcXFwyMDRcIiIKKyAgICAgZ2RiX3Rlc3QgInByaW50 IGMiICIgPSBjb250YWluZXIgXCJjb250YWluZXJcIiB3aXRoIDIgZWxlbWVudHMgPSB7JG5sICou MC4gPSAyMywkbmwgKi4xLiA9IDcyJG5sfSIKKyAKKysgICAgZ2RiX3Rlc3QgInByaW50IG51bGxz dHIiICJSdW50aW1lRXJyb3I6IEVycm9yIHJlYWRpbmcgc3RyaW5nIGZyb20gaW5mZXJpb3IuKiIK KysKKyAgICAgZ2RiX3Rlc3QgInByaW50IG5zdHlwZSIgIiA9IHskbmwgKi4wLiA9IDcsJG5sICou MS4gPSA0MiRubH0iCisgICAgIGdkYl90ZXN0ICJjb250aW51ZSIgIlByb2dyYW0gZXhpdGVkIG5v cm1hbGx5XC4iCisgCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZh bHVlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5leHAKK2luZGV4IGEy NGJjMTEuLmUzMDQzYmMgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHkt dmFsdWUuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUuZXhwCitA QCAtMzEzLDYgKzMxMywxNSBAQCBwcm9jIHRlc3RfdmFsdWVfYWZ0ZXJfZGVhdGgge30geworICAg ICAicHJpbnQgdmFsdWUncyB0eXBlIgorIH0KKyAKKysjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgYSBj YXN0IGZhaWx1cmUuICBUaGUgYnVnIHdhcyB0aGF0IGlmIHdlIGNhc3QgYQorKyMgdmFsdWUgdG8g aXRzIG93biB0eXBlLCBnZGIgY291bGQgY3Jhc2guICBUaGlzIGhhcHBlbmVkIGJlY2F1c2Ugd2UK KysjIGNvdWxkIGVuZCB1cCBkb3VibGUtZnJlZWluZyBhIHN0cnVjdCB2YWx1ZS4KKytwcm9jIHRl c3RfY2FzdF9yZWdyZXNzaW9uIHt9IHsKKysgIGdkYl90ZXN0ICJweXRob24gdiA9IGdkYi5WYWx1 ZSg1KSIgIiIgImNyZWF0ZSB2YWx1ZSBmb3IgY2FzdCB0ZXN0IgorKyAgZ2RiX3Rlc3QgInB5dGhv biB2ID0gdi5jYXN0KHYudHlwZSkiICIiICJjYXN0IHZhbHVlIGZvciBjYXN0IHRlc3QiCisrICBn ZGJfdGVzdCAicHl0aG9uIHByaW50IHYiICI1IiAicHJpbnQgdmFsdWUgZm9yIGNhc3QgdGVzdCIK Kyt9CisrCisgIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGludmFsaWQgc3Vic2NyaXB0IG9wZXJhdGlv bnMuICBUaGUgYnVnIHdhcyB0aGF0CisgIyB0aGUgdHlwZSBvZiB0aGUgdmFsdWUgd2FzIG5vdCBi ZWluZyBjaGVja2VkIGJlZm9yZSBhbGxvd2luZyBhCisgIyBzdWJzY3JpcHQgb3BlcmF0aW9uIHRv IHByb2NlZWQuCitAQCAtNDM3LDYgKzQ0Niw3IEBAIGlmICFbcnVudG9fbWFpbl0gdGhlbiB7Cisg dGVzdF92YWx1ZV9pbl9pbmZlcmlvcgorIHRlc3RfbGF6eV9zdHJpbmdzCisgdGVzdF92YWx1ZV9h ZnRlcl9kZWF0aAorK3Rlc3RfY2FzdF9yZWdyZXNzaW9uCisgCisgIyBUaGUgZm9sbG93aW5nIHRl c3QgcmVjb21waWxlcyB0aGUgYmluYXJ5IHRvIHRlc3QgZWl0aGVyIEMgb3IgQysrCisgIyB2YWx1 ZXMuIAogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1m b3JrLWZvcmtvZmYuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3Jr LWZvcmtvZmYuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLjRkYzMwOGIK QEAgLTEwMzE0LDYgKzE1Mzg5LDE4IEBAIGluZGV4IDAwMDAwMDAuLjFkYzkzYWIKICtpZiB7W2lz dGFyZ2V0ICIqLSotbGludXgqIl19IHsKICsgICAgdGVzdCBjaGlsZCBGT0xMT1dfQ0hJTEQKICt9 CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cCBiL2dkYi90ZXN0c3VpdGUv bGliL2dkYi5leHAKK2luZGV4IGI1YjMzNjIuLmQ5MTZlOTQgMTAwNjQ0CistLS0gYS9nZGIvdGVz dHN1aXRlL2xpYi9nZGIuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCitAQCAt MjcsNiArMjcsNyBAQCBpZiB7JHRvb2wgPT0gIiJ9IHsKKyB9CisgCisgbG9hZF9saWIgbGliZ2xv c3MuZXhwCisrbG9hZF9saWIgcHl0aG9uLXN1cHBvcnQuZXhwCisgCisgZ2xvYmFsIEdEQgorIAog ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAgYi9nZGIvdGVzdHN1aXRl L2xpYi9wYXNjYWwuZXhwCiBpbmRleCA5NjkxYmMxLi4xM2VhOGI1IDEwMDY0NAogLS0tIGEvZ2Ri L3Rlc3RzdWl0ZS9saWIvcGFzY2FsLmV4cApAQCAtMTAzNDksNiArMTU0MzYsNjUgQEAgaW5kZXgg OTY5MWJjMS4uMTNlYThiNSAxMDA2NDQKICAgICAgfQogICAgICBzZXQgcGFzY2FsX2luaXRfZG9u ZSAxCiAgfSAgIAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL3B5dGhvbi1zdXBwb3J0 LmV4cCBiL2dkYi90ZXN0c3VpdGUvbGliL3B5dGhvbi1zdXBwb3J0LmV4cAorbmV3IGZpbGUgbW9k ZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmI4ZTk4MzYKKy0tLSAvZGV2L251bGwKKysrKyBiL2dk Yi90ZXN0c3VpdGUvbGliL3B5dGhvbi1zdXBwb3J0LmV4cAorQEAgLTAsMCArMSw1MyBAQAorK2ds b2JhbCBweXRob25fc3VwcG9ydGVkX3NhdmVkCisrCisrIyBSZXR1cm4gMSBpZiBQeXRob24gc2Ny aXB0aW5nIGlzIHN1cHBvcnRlZCBpbiBHREIsIDAgaWYgbm90LgorK3Byb2MgcHl0aG9uX3N1cHBv cnRlZCB7IH0geworKyAgZ2xvYmFsIGdkYl9wcm9tcHQKKysgIGdsb2JhbCBweXRob25fc3VwcG9y dGVkX3NhdmVkCisrCisrICBpZiBbaW5mbyBleGlzdHMgcHl0aG9uX3N1cHBvcnRlZF9zYXZlZF0g eworKyAgICAgIHZlcmJvc2UgInB5dGhvbl9zdXBwb3J0ZWQ6ICByZXR1cm5pbmcgc2F2ZWQgJHB5 dGhvbl9zdXBwb3J0ZWRfc2F2ZWQiIDIKKysgICAgICByZXR1cm4gJHB5dGhvbl9zdXBwb3J0ZWRf c2F2ZWQKKysgIH0KKysKKysgIGdkYl90ZXN0X211bHRpcGxlICJweXRob24gcHJpbnQgJ2hlbGxv LCB3b3JsZCEnIiAidmVyaWZ5IHB5dGhvbiBzdXBwb3J0IiB7CisrICAgIC1yZSAibm90IHN1cHBv cnRlZC4qJGdkYl9wcm9tcHQgJCIJeworKyAgICAgIHJldHVybiBbc2V0IHB5dGhvbl9zdXBwb3J0 ZWRfc2F2ZWQgMF0KKysgICAgfQorKyAgICAtcmUgIiRnZGJfcHJvbXB0ICQiCXsKKysgICAgICBy ZXR1cm4gW3NldCBweXRob25fc3VwcG9ydGVkX3NhdmVkIDFdCisrICAgIH0KKysgIH0KKysKKysg IHJldHVybiBbc2V0IHB5dGhvbl9zdXBwb3J0ZWRfc2F2ZWQgMF0KKyt9CisrCisrIyBSdW4gYSBj b21tYW5kIGluIEdEQiwgYW5kIHJlcG9ydCBhIGZhaWx1cmUgaWYgYSBQeXRob24gZXhjZXB0aW9u IGlzIHRocm93bi4KKysjIElmIHJlcG9ydF9wYXNzIGlzIHRydWUsIHJlcG9ydCBhIHBhc3MgaWYg bm8gZXhjZXB0aW9uIGlzIHRocm93bi4KKytwcm9jIGdkYl9weV90ZXN0X3NpbGVudF9jbWQge2Nt ZCBuYW1lIHJlcG9ydF9wYXNzfSB7CisrICBnbG9iYWwgZ2RiX3Byb21wdAorKworKyAgZ2RiX3Rl c3RfbXVsdGlwbGUgJGNtZCAkbmFtZSB7CisrICAgICAgLXJlICJUcmFjZWJhY2suKiRnZGJfcHJv bXB0ICQiICB7IGZhaWwgJG5hbWUgfQorKyAgICAgIC1yZSAiJGdkYl9wcm9tcHQgJCIJICAgICAg eyBpZiAkcmVwb3J0X3Bhc3MgeyBwYXNzICRuYW1lIH0gfQorKyAgfQorK30KKysKKysjIFVzYWdl OiBnZGJfcHlfdGVzdF9tdWx0aXBsZSBOQU1FIElOUFVUIFJFU1VMVCB7SU5QVVQgUkVTVUxUfS4u LgorKyMgUnVuIGEgdGVzdCBuYW1lZCBOQU1FLCBjb25zaXN0aW5nIG9mIG11bHRpcGxlIGxpbmVz IG9mIGlucHV0LgorKyMgQWZ0ZXIgZWFjaCBpbnB1dCBsaW5lIElOUFVULCBzZWFyY2ggZm9yIHJl c3VsdCBsaW5lIFJFU1VMVC4KKysjIFN1Y2NlZWQgaWYgYWxsIHJlc3VsdHMgYXJlIHNlZW47IGZh aWwgb3RoZXJ3aXNlLgorK3Byb2MgZ2RiX3B5X3Rlc3RfbXVsdGlwbGUge25hbWUgYXJnc30gewor KyAgICBnbG9iYWwgZ2RiX3Byb21wdAorKworKyAgICBmb3JlYWNoIHtpbnB1dCByZXN1bHR9ICRh cmdzIHsKKysJaWYge1tnZGJfdGVzdF9tdWx0aXBsZSAkaW5wdXQgIiRuYW1lIC0gJGlucHV0IiB7 CisrCSAgICAtcmUgIlxbXHJcblxdKigkcmVzdWx0KVxbXHJcblxdKygkZ2RiX3Byb21wdCB8ICo+ KSQiIHsKKysJCXBhc3MgIiRuYW1lIC0gJGlucHV0IgorKwkgICAgfQorKwl9XX0geworKwkgICAg cmV0dXJuIDEKKysJfQorKyAgICB9CisrICAgIHJldHVybiAwCisrfQogZGlmZiAtLWdpdCBhL2dk Yi90aHJlYWQuYyBiL2dkYi90aHJlYWQuYwogaW5kZXggMmZkYzdmOS4uMmE1ZDBmMSAxMDA2NDQK IC0tLSBhL2dkYi90aHJlYWQuYwoKZGlmZiAtLWdpdCBhL2dkYi1iejU3NTI5Mi1kZWxheWVkLXBo eXNuYW1lLnBhdGNoIGIvZ2RiLWJ6NTc1MjkyLWRlbGF5ZWQtcGh5c25hbWUucGF0Y2gKaW5kZXgg NWU2NTk3NC4uZTE1MzkxZCAxMDA2NDQKLS0tIGEvZ2RiLWJ6NTc1MjkyLWRlbGF5ZWQtcGh5c25h bWUucGF0Y2gKKysrIGIvZ2RiLWJ6NTc1MjkyLWRlbGF5ZWQtcGh5c25hbWUucGF0Y2gKQEAgLTks MTEgKzksMTEgQEAgTmVpdGhlciBpdHMgb2JzdGFjay1sZWFrLnBhdGNoIG5vcgogCWh0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA1L21zZzAwMjcxLmh0bWwKIGlzIG5l ZWRlZCBhcyB0aGUgbGlua2VkIGxpc3QgaXMgdXNlZCBpbnN0ZWFkLgogCi1JbmRleDogZ2RiLTcu MS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVhZC5jCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcy MS9nZGIvZHdhcmYycmVhZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5v cmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wNy0xMyAwMDozNDowMC4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wNy0xMyAyMjoy NToxOC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yMTYsNiArMjE2LDI4IEBAIHN0cnVjdCBjb21wX3Vu aXRfaGVhZAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MjEub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIw MTAtMDctMjIgMTE6NTk6MTkuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcy MS9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDctMjIgMTI6MDA6MDguMDAwMDAwMDAwICswMjAwCitA QCAtMjUzLDYgKzI1MywyOCBAQCBzdHJ1Y3QgY29tcF91bml0X2hlYWQKICAgIHVuc2lnbmVkIGlu dCBmaXJzdF9kaWVfb2Zmc2V0OwogIH07CiAgCkBAIC00Miw3ICs0Miw3IEBAIEluZGV4OiBnZGIt Ny4xLjkwLjIwMTAwNzExL2dkYi9kd2FyZjJyZWFkLmMKICAvKiBJbnRlcm5hbCBzdGF0ZSB3aGVu IGRlY29kaW5nIGEgcGFydGljdWxhciBjb21waWxhdGlvbiB1bml0LiAgKi8KICBzdHJ1Y3QgZHdh cmYyX2N1CiAgewotQEAgLTI5NCw2ICszMTYsMTAgQEAgc3RydWN0IGR3YXJmMl9jdQorQEAgLTMz MSw2ICszNTMsMTAgQEAgc3RydWN0IGR3YXJmMl9jdQogICAgLyogSGVhZGVyIGRhdGEgZnJvbSB0 aGUgbGluZSB0YWJsZSwgZHVyaW5nIGZ1bGwgc3ltYm9sIHByb2Nlc3NpbmcuICAqLwogICAgc3Ry dWN0IGxpbmVfaGVhZGVyICpsaW5lX2hlYWRlcjsKICAKQEAgLTUzLDE3ICs1MywxNyBAQCBJbmRl eDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVhZC5jCiAgICAvKiBNYXJrIHVzZWQg d2hlbiByZWxlYXNpbmcgY2FjaGVkIGRpZXMuICAqLwogICAgdW5zaWduZWQgaW50IG1hcmsgOiAx OwogIAotQEAgLTExNDIsNiArMTE2OCw5IEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0X2RpZV90 eXBlIChzdHJ1Y3QKLSBzdGF0aWMgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpkd2FyZjJf YXR0cl90b19sb2NleHByX2JhdG9uCi0gICAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0 IGR3YXJmMl9jdSAqY3UpOworQEAgLTEyMzksNiArMTI2NSw5IEBAIHN0YXRpYyBnZGJfYnl0ZSAq cGFydGlhbF9yZWFkX2NvbXBfdW5pdF8KKyBzdGF0aWMgdm9pZCBpbml0X2N1X2RpZV9yZWFkZXIg KHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpyZWFkZXIsCisgCQkJCXN0cnVjdCBkd2FyZjJfY3Ug KmN1KTsKICAKICtzdGF0aWMgY29uc3QgY2hhciAqZHdhcmYyX3BoeXNuYW1lIChjaGFyICpuYW1l LCBzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICsJCQkJICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsK ICsKLSAvKiBUcnkgdG8gbG9jYXRlIHRoZSBzZWN0aW9ucyB3ZSBuZWVkIGZvciBEV0FSRiAyIGRl YnVnZ2luZwotICAgIGluZm9ybWF0aW9uIGFuZCByZXR1cm4gdHJ1ZSBpZiB3ZSBoYXZlIGVub3Vn aCB0byBkbyBzb21ldGhpbmcuICAqLworICNpZiBXT1JEU19CSUdFTkRJQU4KICAKLUBAIC0zMTM3 LDYgKzMxNjYsNTggQEAgbG9hZF9mdWxsX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfYwor IC8qIENvbnZlcnQgVkFMVUUgYmV0d2VlbiBiaWctIGFuZCBsaXR0bGUtZW5kaWFuLiAgKi8KK0BA IC00MTAzLDYgKzQxMzIsNTggQEAgbG9hZF9mdWxsX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9w ZXJfYwogICAgZGlzY2FyZF9jbGVhbnVwcyAoZnJlZV9jdV9jbGVhbnVwKTsKICB9CiAgCkBAIC0x MjIsOCArMTIyLDggQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQu YwogIC8qIEdlbmVyYXRlIGZ1bGwgc3ltYm9sIGluZm9ybWF0aW9uIGZvciBQU1QgYW5kIENVLCB3 aG9zZSBESUVzIGhhdmUKICAgICBhbHJlYWR5IGJlZW4gbG9hZGVkIGludG8gbWVtb3J5LiAgKi8K ICAKLUBAIC0zMTQ4LDcgKzMyMjksNyBAQCBwcm9jZXNzX2Z1bGxfY29tcF91bml0IChzdHJ1Y3Qg ZHdhcmYyX3BlCi0gICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IHBzdC0+b2JqZmlsZTsKK0BA IC00MTEzLDcgKzQxOTQsNyBAQCBwcm9jZXNzX2Z1bGxfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYy X3BlCisgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IHBlcl9jdS0+b2JqZmlsZTsKICAgIENP UkVfQUREUiBsb3dwYywgaGlnaHBjOwogICAgc3RydWN0IHN5bXRhYiAqc3ltdGFiOwogLSAgc3Ry dWN0IGNsZWFudXAgKmJhY2tfdG87CkBAIC0xMzEsNyArMTMxLDcgQEAgSW5kZXg6IGdkYi03LjEu OTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYwogICAgQ09SRV9BRERSIGJhc2VhZGRyOwogIAog ICAgYmFzZWFkZHIgPSBBTk9GRlNFVCAob2JqZmlsZS0+c2VjdGlvbl9vZmZzZXRzLCBTRUNUX09G Rl9URVhUIChvYmpmaWxlKSk7Ci1AQCAtMzE1OCwxMSArMzIzOSwyMiBAQCBwcm9jZXNzX2Z1bGxf Y29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3BlCitAQCAtNDEyMywxMSArNDIwNCwyMiBAQCBwcm9j ZXNzX2Z1bGxfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3BlCiAgCiAgICBjdS0+bGlzdF9pbl9z Y29wZSA9ICZmaWxlX3N5bWJvbHM7CiAgCkBAIC0xNTQsNyArMTU0LDcgQEAgSW5kZXg6IGdkYi03 LjEuOTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYwogICAgLyogU29tZSBjb21waWxlcnMgZG9u J3QgZGVmaW5lIGEgRFdfQVRfaGlnaF9wYyBhdHRyaWJ1dGUgZm9yIHRoZQogICAgICAgY29tcGls YXRpb24gdW5pdC4gIElmIHRoZSBEV19BVF9oaWdoX3BjIGlzIG1pc3NpbmcsIHN5bnRoZXNpemUK ICAgICAgIGl0LCBieSBzY2FubmluZyB0aGUgRElFJ3MgYmVsb3cgdGhlIGNvbXBpbGF0aW9uIHVu aXQuICAqLwotQEAgLTQ4NTQsNyArNDk0Niw2IEBAIGR3YXJmMl9hZGRfbWVtYmVyX2ZuIChzdHJ1 Y3QgZmllbGRfaW5mbyAKK0BAIC01ODM4LDcgKzU5MzAsNiBAQCBkd2FyZjJfYWRkX21lbWJlcl9m biAoc3RydWN0IGZpZWxkX2luZm8gCiAgICBpbnQgaTsKICAgIHN0cnVjdCBmbl9maWVsZCAqZm5w OwogICAgY2hhciAqZmllbGRuYW1lOwpAQCAtMTYyLDcgKzE2Miw3IEBAIEluZGV4OiBnZGItNy4x LjkwLjIwMTAwNzExL2dkYi9kd2FyZjJyZWFkLmMKICAgIHN0cnVjdCBuZXh0Zm5maWVsZCAqbmV3 X2ZuZmllbGQ7CiAgICBzdHJ1Y3QgdHlwZSAqdGhpc190eXBlOwogIAotQEAgLTQ4NjYsOSArNDk1 Nyw2IEBAIGR3YXJmMl9hZGRfbWVtYmVyX2ZuIChzdHJ1Y3QgZmllbGRfaW5mbyAKK0BAIC01ODUw LDkgKzU5NDEsNiBAQCBkd2FyZjJfYWRkX21lbWJlcl9mbiAoc3RydWN0IGZpZWxkX2luZm8gCiAg ICBpZiAoZmllbGRuYW1lID09IE5VTEwpCiAgICAgIHJldHVybjsKICAKQEAgLTE3Miw3ICsxNzIs NyBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVhZC5jCiAgICAvKiBM b29rIHVwIG1lbWJlciBmdW5jdGlvbiBuYW1lIGluIGZpZWxkbGlzdC4gICovCiAgICBmb3IgKGkg PSAwOyBpIDwgZmlwLT5uZm5maWVsZHM7IGkrKykKICAgICAgewotQEAgLTQ4OTQsNyArNDk4Miw3 IEBAIGR3YXJmMl9hZGRfbWVtYmVyX2ZuIChzdHJ1Y3QgZmllbGRfaW5mbyAKK0BAIC01ODc4LDcg KzU5NjYsNyBAQCBkd2FyZjJfYWRkX21lbWJlcl9mbiAoc3RydWN0IGZpZWxkX2luZm8gCiAgICAg ICAgZmxwLT5uYW1lID0gZmllbGRuYW1lOwogICAgICAgIGZscC0+bGVuZ3RoID0gMDsKICAgICAg ICBmbHAtPmhlYWQgPSBOVUxMOwpAQCAtMTgxLDcgKzE4MSw3IEBAIEluZGV4OiBnZGItNy4xLjkw LjIwMTAwNzExL2dkYi9kd2FyZjJyZWFkLmMKICAgICAgfQogIAogICAgLyogQ3JlYXRlIGEgbmV3 IG1lbWJlciBmdW5jdGlvbiBmaWVsZCBhbmQgY2hhaW4gaXQgdG8gdGhlIGZpZWxkIGxpc3QKLUBA IC00OTA4LDkgKzQ5OTYsMTkgQEAgZHdhcmYyX2FkZF9tZW1iZXJfZm4gKHN0cnVjdCBmaWVsZF9p bmZvIAorQEAgLTU4OTIsOSArNTk4MCwxOSBAQCBkd2FyZjJfYWRkX21lbWJlcl9mbiAoc3RydWN0 IGZpZWxkX2luZm8gCiAgCiAgICAvKiBGaWxsIGluIHRoZSBtZW1iZXIgZnVuY3Rpb24gZmllbGQg aW5mby4gICovCiAgICBmbnAgPSAmbmV3X2ZuZmllbGQtPmZuZmllbGQ7CkBAIC0yMDQsNyArMjA0 LDcgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYwogICAgZm5w LT50eXBlID0gYWxsb2NfdHlwZSAob2JqZmlsZSk7CiAgICB0aGlzX3R5cGUgPSByZWFkX3R5cGVf ZGllIChkaWUsIGN1KTsKICAgIGlmICh0aGlzX3R5cGUgJiYgVFlQRV9DT0RFICh0aGlzX3R5cGUp ID09IFRZUEVfQ09ERV9GVU5DKQotQEAgLTQ5MzYsNyArNTAzNCw3IEBAIGR3YXJmMl9hZGRfbWVt YmVyX2ZuIChzdHJ1Y3QgZmllbGRfaW5mbyAKK0BAIC01OTIwLDcgKzYwMTgsNyBAQCBkd2FyZjJf YWRkX21lbWJlcl9mbiAoc3RydWN0IGZpZWxkX2luZm8gCiAgICAgIH0KICAgIGVsc2UKICAgICAg Y29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJtZW1iZXIgZnVuY3Rpb24gdHlwZSBt aXNzaW5nIGZvciAnJXMnIiksCkBAIC0yMTMsNyArMjEzLDcgQEAgSW5kZXg6IGdkYi03LjEuOTAu MjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYwogIAogICAgLyogR2V0IGZjb250ZXh0IGZyb20gRFdf QVRfY29udGFpbmluZ190eXBlIGlmIHByZXNlbnQuICAqLwogICAgaWYgKGR3YXJmMl9hdHRyIChk aWUsIERXX0FUX2NvbnRhaW5pbmdfdHlwZSwgY3UpICE9IE5VTEwpCi1AQCAtNzMxNSw3ICs3NDEz LDkgQEAgbG9hZF9wYXJ0aWFsX2RpZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKgorQEAgLTgyOTks NyArODM5Nyw5IEBAIGxvYWRfcGFydGlhbF9kaWVzIChiZmQgKmFiZmQsIGdkYl9ieXRlICoKICAJ CSAgICAgIHx8IGxhc3RfZGllLT50YWcgPT0gRFdfVEFHX2ludGVyZmFjZV90eXBlCiAgCQkgICAg ICB8fCBsYXN0X2RpZS0+dGFnID09IERXX1RBR19zdHJ1Y3R1cmVfdHlwZQogIAkJICAgICAgfHwg bGFzdF9kaWUtPnRhZyA9PSBEV19UQUdfdW5pb25fdHlwZSkpCkBAIC0yMjQsMTAgKzIyNCwxMCBA QCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVhZC5jCiAgCQkgICYmIChs YXN0X2RpZS0+dGFnID09IERXX1RBR19zdWJwcm9ncmFtCiAgCQkgICAgICB8fCBsYXN0X2RpZS0+ dGFnID09IERXX1RBR19sZXhpY2FsX2Jsb2NrKSkpKQogIAl7Ci1JbmRleDogZ2RiLTcuMS45MC4y MDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvcHIxMTQ2NS5TCitJbmRleDogZ2RiLTcu MS45MC4yMDEwMDcyMS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvcHIxMTQ2NS5TCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0r KysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvcHIxMTQ2NS5T CTIwMTAtMDctMTMgMjI6MjQ6NDguMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEw MDcyMS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvcHIxMTQ2NS5TCTIwMTAtMDctMjIgMTE6NTk6 MjkuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDM1NSBAQAogKy8qIENvcHlyaWdodCAyMDEw IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtNTg0LDEwICs1ODQsMTAgQEAg SW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL3ByMTE0 NjUuUwogKy5MQVNGNDoKICsJLnN0cmluZwkiR05VIEMrKyA0LjQuMiIKICsJLmlkZW50CSJHQ0M6 IChHTlUpIDQuNC4yIgotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZHdhcmYyL3ByMTE0NjUuZXhwCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvdGVz dHN1aXRlL2dkYi5kd2FyZjIvcHIxMTQ2NS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAw NzExL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9wcjExNDY1LmV4cAkyMDEwLTA3LTEzIDIyOjI0 OjQ4LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZHdhcmYyL3ByMTE0NjUuZXhwCTIwMTAtMDctMjIgMTE6NTk6MjkuMDAwMDAwMDAwICsw MjAwCiBAQCAtMCwwICsxLDM5IEBACiArIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KICsKCmRpZmYgLS1naXQgYS9nZGItZ2RiLWFkZC1pbmRleC1zY3JpcHQu cGF0Y2ggYi9nZGItZ2RiLWFkZC1pbmRleC1zY3JpcHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uYTIyZTM3ZAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1nZGItYWRk LWluZGV4LXNjcmlwdC5wYXRjaApAQCAtMCwwICsxLDExOSBAQAoraHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDcvbXNnMDAxODQuaHRtbAorU3ViamVjdDogUmU6IFsw LzRdIFJGQzogYWRkIERXQVJGIGluZGV4IHN1cHBvcnQKKworPj4+Pj4gIlRvbSIgPT0gVG9tIFRy b21leSA8dHJvbWV5QHJlZGhhdC5jb20+IHdyaXRlczoKKworVG9tPiBUaGlzIHBhdGNoIHNlcmll cyBhZGRzIHN1cHBvcnQgZm9yIGEgRFdBUkYgaW5kZXggdG8gZ2RiLgorCitSb2xhbmQgc3VnZ2Vz dGVkIHdlIHdyYXAgdXAgdGhlIGluZGV4LWNyZWF0aW9uIGNvZGUgaW50byBhIGhlbHBlcgorc2Ny aXB0LgorCitJJ20gbm90IHN1cmUgaWYgdGhpcyBpcyBzb21ldGhpbmcgcGVvcGxlIHdvdWxkIHdh bnQgaW4gZ2RiIHByb3BlciwgYnV0IEkKK2ZpZ3VyZWQgSSB3b3VsZCBzZW5kIGl0IGhlcmUganVz dCBpbiBjYXNlLgorCitUb20KKworMjAxMC0wNy0wOSAgVG9tIFRyb21leSAgPHRyb21leUByZWRo YXQuY29tPgorCisJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1vbmx5KTogSW5zdGFsbCBnZGItYWRk LWluZGV4LgorCSogZ2RiLWFkZC1pbmRleDogTmV3IGZpbGUuCisKKzIwMTAtMDctMDkgIFRvbSBU cm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KKworCSogZ2RiLnRleGluZm8gKEluZGV4IEZpbGVz KTogTWVudGlvbiBnZGItYWRkLWluZGV4LgorCis+RnJvbSAzMDcxNGZlNzE5ZTYxYmFlYTAzZDBk YzU3OTNlYjBkNTY0ZmFlYmI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVG9tIFRy b21leSA8dHJvbWV5QHJlZGhhdC5jb20+CitEYXRlOiBGcmksIDkgSnVsIDIwMTAgMTE6MTc6NTQg LTA2MDAKK1N1YmplY3Q6IFtQQVRDSCA0LzRdIGFkZCBnZGItYWRkLWluZGV4CitTdWJqZWN0OiBb UEFUQ0ggNC80XSBhZGQgZ2RiLWFkZC1pbmRleAorCistLS0KKyBnZGIvQ2hhbmdlTG9nICAgICAg IHwgICAgNSArKysrKworIGdkYi9NYWtlZmlsZS5pbiAgICAgfCAgIDExICsrKysrKysrKystCisg Z2RiL2RvYy9DaGFuZ2VMb2cgICB8ICAgIDQgKysrKworIGdkYi9kb2MvZ2RiLnRleGluZm8gfCAg ICA4ICsrKysrKysrCisgZ2RiL2dkYi1hZGQtaW5kZXggICB8ICAgMzAgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCisgNSBmaWxlcyBjaGFuZ2VkLCA1NyBpbnNlcnRpb25zKCspLCAxIGRl bGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDc1NSBnZGIvZ2RiLWFkZC1pbmRleAorCitkaWZm IC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01ha2VmaWxlLmluCitpbmRleCA2ZGJiMjg0 Li44MjEwYTJjIDEwMDY0NAorLS0tIGEvZ2RiL01ha2VmaWxlLmluCisrKysgYi9nZGIvTWFrZWZp bGUuaW4KK0BAIC0xMDE4LDcgKzEwMTgsMTYgQEAgaW5zdGFsbC1vbmx5OiAkKENPTkZJR19JTlNU QUxMKSB4bWwtc3lzY2FsbC1pbnN0YWxsCisgCQkkKFNIRUxMKSAkKHNyY2RpcikvLi4vbWtpbnN0 YWxsZGlycyBcCisgCQkJJChERVNURElSKSQobWFuMWRpcikgOyBcCisgCQkkKElOU1RBTExfREFU QSkgJChzcmNkaXIpL2dkYi4xIFwKKy0JCQkkKERFU1RESVIpJChtYW4xZGlyKS8kJHRyYW5zZm9y bWVkX25hbWUuMQorKwkJCSQoREVTVERJUikkKG1hbjFkaXIpLyQkdHJhbnNmb3JtZWRfbmFtZS4x OyBcCisrCXRyYW5zZm9ybWVkX25hbWU9YHQ9JyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknOyBc CisrCQkJICBlY2hvIGdkYi1hZGQtaW5kZXggfCBzZWQgLWUgIiQkdCJgIDsgXAorKwkJaWYgdGVz dCAieCQkdHJhbnNmb3JtZWRfbmFtZSIgPSB4OyB0aGVuIFwKKysJCSAgdHJhbnNmb3JtZWRfbmFt ZT1nZGItYWRkLWluZGV4IDsgXAorKwkJZWxzZSBcCisrCQkgIHRydWUgOyBcCisrCQlmaSA7IFwK KysJCSQoSU5TVEFMTF9QUk9HUkFNKSAkKHNyY2RpcikvZ2RiLWFkZC1pbmRleCBcCisrCQkJJChE RVNURElSKSQoYmluZGlyKS8kJHRyYW5zZm9ybWVkX25hbWUkKEVYRUVYVCkKKyAJQCQoTUFLRSkg RE89aW5zdGFsbCAiRE9ESVJTPSQoU1VCRElSUykiICQoRkxBR1NfVE9fUEFTUykgc3ViZGlyX2Rv CisgLlBIT05ZOiBpbnN0YWxsLXR1aQorIGluc3RhbGwtdHVpOgorZGlmZiAtLWdpdCBhL2dkYi9k b2MvZ2RiLnRleGluZm8gYi9nZGIvZG9jL2dkYi50ZXhpbmZvCitpbmRleCA2OTE0MWUzLi40NTdl NmI0IDEwMDY0NAorLS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbworKysrIGIvZ2RiL2RvYy9nZGIu dGV4aW5mbworQEAgLTE1MDQ1LDYgKzE1MDQ1LDE0IEBAIFRoZXJlIGFyZSBjdXJyZW50bHkgc29t ZSBsaW1pdGF0aW9uIG9uIGluZGljZXMuICBUaGV5IG9ubHkgd29yayB3aGVuCisgZm9yIERXQVJG IGRlYnVnZ2luZyBpbmZvcm1hdGlvbiwgbm90IHN0YWJzLiAgQW5kLCB0aGV5IGRvIG5vdAorIGN1 cnJlbnRseSB3b3JrIGZvciBwcm9ncmFtcyB1c2luZyBBZGEuCisgCisrQHZhbHVle0dEQk59IGNv bWVzIHdpdGggYSBwcm9ncmFtLCBAY29tbWFuZHtnZGItYWRkLWluZGV4fSwgd2hpY2ggY2FuCisr YmUgdXNlZCB0byBhZGQgdGhlIGluZGV4IHRvIGEgc3ltYm9sIGZpbGUuICBJdCB0YWtlcyB0aGUg c3ltYm9sIGZpbGUKKythcyBpdHMgb25seSBhcmd1bWVudDoKKysKKytAc21hbGxleGFtcGxlCisr JCBnZGItYWRkLWluZGV4IHN5bWZpbGUKKytAZW5kIHNtYWxsZXhhbXBsZQorKworIAorIEBub2Rl IFN5bWJvbCBFcnJvcnMKKyBAc2VjdGlvbiBFcnJvcnMgUmVhZGluZyBTeW1ib2wgRmlsZXMKK2Rp ZmYgLS1naXQgYS9nZGIvZ2RiLWFkZC1pbmRleCBiL2dkYi9nZGItYWRkLWluZGV4CituZXcgZmls ZSBtb2RlIDEwMDc1NQoraW5kZXggMDAwMDAwMC4uYzlhMDNiMAorLS0tIC9kZXYvbnVsbAorKysr IGIvZ2RiL2dkYi1hZGQtaW5kZXgKK0BAIC0wLDAgKzEsMzAgQEAKKysjISAvYmluL3NoCisrCisr IyBBZGQgYSAuZ2RiX2luZGV4IHNlY3Rpb24gdG8gYSBmaWxlLgorKworKyMgQ29weXJpZ2h0IChD KSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysj IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KKysKKytmaWxlPSIkMSIKKytkaXI9IiR7ZmlsZSUvKn0iCisrCisrIyBXZSBk b24ndCBjYXJlIGlmIGdkYiBnaXZlcyBhbiBlcnJvci4KKytnZGIgLS1iYXRjaC1zaWxlbnQgLWV4 ICJmaWxlICRmaWxlIiAtZXggInNhdmUgZ2RiLWluZGV4ICRkIiA+IC9kZXYvbnVsbCAyPiYxCisr CisraWYgdGVzdCAtZiAiJHtmaWxlfS5nZGItaW5kZXgiOyB0aGVuCisrICAgb2JqY29weSAtLWFk ZC1zZWN0aW9uIC5nZGJfaW5kZXg9IiR7ZmlsZX0uZ2RiLWluZGV4IiAtLXNldC1zZWN0aW9uLWZs YWdzIC5nZGJfaW5kZXg9cmVhZG9ubHkgIiRmaWxlIiAiJGZpbGUiCisrICAgcm0gLWYgIiR7Zmls ZX0uZ2RiLWluZGV4IgorK2ZpCisrCisrZXhpdCAwCistLSAKKzEuNi4yLjUKKwoKZGlmZiAtLWdp dCBhL2dkYi5zcGVjIGIvZ2RiLnNwZWMKaW5kZXggZDRlY2MwYi4uNmNjYjIyZiAxMDA2NDQKLS0t IGEvZ2RiLnNwZWMKKysrIGIvZ2RiLnNwZWMKQEAgLTM2LDcgKzM2LDcgQEAgVmVyc2lvbjogNy4x LjkwLjIwMTAwNzIxCiAKICMgVGhlIHJlbGVhc2UgYWx3YXlzIGNvbnRhaW5zIGEgbGVhZGluZyBy ZXNlcnZlZCBudW1iZXIsIHN0YXJ0IGl0IGF0IDEuCiAjIGB1cHN0cmVhbScgaXMgbm90IGEgcGFy dCBvZiBgbmFtZScgdG8gc3RheSBmdWxseSBycG0gZGVwZW5kZW5jaWVzIGNvbXBhdGlibGUgZm9y IHRoZSB0ZXN0aW5nLgotUmVsZWFzZTogMyV7P193aXRoX3Vwc3RyZWFtOi51cHN0cmVhbX0le2Rp c3R9CitSZWxlYXNlOiA0JXs/X3dpdGhfdXBzdHJlYW06LnVwc3RyZWFtfSV7ZGlzdH0KIAogTGlj ZW5zZTogR1BMdjMrIGFuZCBHUEx2Mysgd2l0aCBleGNlcHRpb25zIGFuZCBHUEx2MisgYW5kIEdQ THYyKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQTCsgYW5kIExHUEx2MisgYW5kIEdGREwgYW5kIEJT RCBhbmQgUHVibGljIERvbWFpbgogR3JvdXA6IERldmVsb3BtZW50L0RlYnVnZ2VycwpAQCAtNDE3 LDYgKzQxNyw5IEBAIFBhdGNoNDg3OiBnZGItYno1NjI3NjMtcHJldHR5LXByaW50LTJkLXZlY3Rv cnMtbGlic3RkY3h4LnBhdGNoCiAjIEZpeCBwcmVsaW5rZWQgZXhlY3V0YWJsZXMgd2l0aCBzZXBk ZWJ1ZyBhbmQgY29weSByZWxvY2F0aW9ucyAoQlogNjE0NjU5KS4KIFBhdGNoNDg5OiBnZGItYno2 MTQ2NTktcHJlbGluay1keW5ic3MucGF0Y2gKIAorIyBQcm92aWRlIC91c3IvYmluL2dkYi1hZGQt aW5kZXggZm9yIHJwbS1idWlsZCAoVG9tIFRyb21leSkuCitQYXRjaDQ5MTogZ2RiLWdkYi1hZGQt aW5kZXgtc2NyaXB0LnBhdGNoCisKIEJ1aWxkUmVxdWlyZXM6IG5jdXJzZXMtZGV2ZWwlez9faXNh fSB0ZXhpbmZvIGdldHRleHQgZmxleCBiaXNvbiBleHBhdC1kZXZlbCV7P19pc2F9CiBSZXF1aXJl czogcmVhZGxpbmUlez9faXNhfQogQnVpbGRSZXF1aXJlczogcmVhZGxpbmUtZGV2ZWwlez9faXNh fQpAQCAtNjY3LDYgKzY3MCw3IEBAIHJtIC1mIGdkYi9qdi1leHAuYyBnZGIvbTItZXhwLmMgZ2Ri L29iamMtZXhwLmMgZ2RiL3AtZXhwLmMKICNwYXRjaDQ4NyAtcDEKICVwYXRjaDQxNSAtcDEKICVw YXRjaDQ4OSAtcDEKKyVwYXRjaDQ5MSAtcDEKIAogJXBhdGNoMzkzIC1wMQogJXBhdGNoMzM1IC1w MQpAQCAtOTcyLDYgKzk3Niw3IEBAIGZpCiAle19tYW5kaXJ9LyovZ3N0YWNrLjEqCiAlaWYgMCV7 IT9lbDU6MX0KICV7X2JpbmRpcn0vcHN0YWNrCisle19iaW5kaXJ9L2dkYi1hZGQtaW5kZXgKICV7 X21hbmRpcn0vKi9wc3RhY2suMSoKICVlbmRpZiAjIDAleyE/ZWw1OjF9CiAlZW5kaWYgIyAwJXsh P193aXRoX3Vwc3RyZWFtOjF9CkBAIC05OTQsNyArOTk5LDEyIEBAIGZpCiAlZW5kaWYKIAogJWNo YW5nZWxvZwotKiBUaHUgSnVsIDIyIDIwMTAgRGF2aWQgTWFsY29sbSA8ZG1hbGNvbG1AcmVkaGF0 LmNvbT4gLSA3LjEuOTAuMjAxMDA3MjEtMworKiBUaHUgSnVsIDIyIDIwMTAgSmFuIEtyYXRvY2h2 aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4xLjkwLjIwMTAwNzIxLTQuZmMxNAor LSBJbXBvcnQgYXJjaGVyLXRyb21leS1weXRob24uCistIEltcG9ydCBhcmNoZXItdHJvbWV5LW9w dGlvbmFsLXBzeW10YWIgKGFzIHByZXNlbnQgaW4gRlNGIEdEQiBwb3N0LTcuMikuCisgIC0gUHJv dmlkZSAvdXNyL2Jpbi9nZGItYWRkLWluZGV4IGZvciBycG0tYnVpbGQgKFRvbSBUcm9tZXkpLgor CisqIFRodSBKdWwgMjIgMjAxMCBEYXZpZCBNYWxjb2xtIDxkbWFsY29sbUByZWRoYXQuY29tPiAt IDcuMS45MC4yMDEwMDcyMS0zLmZjMTQKIC0gUmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9q ZWN0Lm9yZy93aWtpL0ZlYXR1cmVzL1B5dGhvbl8yLjcvTWFzc1JlYnVpbGQKIAogKiBXZWQgSnVs IDIxIDIwMTAgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4x LjkwLjIwMTAwNzIxLTIuZmMxNAo=