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: Takao Fujiwara To: git-commits@fedoraproject.org Subject: [rpms/ibus] autotool: Make Compose preedit less intrusive Date: Sun, 31 May 2026 02:07:39 GMT Message-ID: <178019325957.1.15102900056209812634.rpms-ibus-fb4b95e6ad20@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus X-Git-Branch: autotool X-Git-Rev: fb4b95e6ad201b9eaf27905b9030a0d9a1d8749b ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvaWJ1cwogICAgICAgICAgICBCcmFuY2ggOiBhdXRvdG9vbAogICAgICAgICAg ICBDb21taXQgOiBmYjRiOTVlNmFkMjAxYjllYWYyNzkwNWI5MDMwYTBkOWExZDg3NDliCiAgICAg ICAgICAgIEF1dGhvciA6IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPgogICAg ICAgICAgICBEYXRlICAgOiAyMDIxLTA3LTI2VDIzOjU3OjI4KzA5OjAwCiAgICAgICAgICAgIFN0 YXRzICA6ICszMzE5Ly0xIGluIDIgZmlsZShzKQogICAgICAgICAgICBVUkwgICAgOiBodHRwczov L3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2lidXMvYy9mYjRiOTVlNmFkMjAxYjllYWYyNzkw NWI5MDMwYTBkOWExZDg3NDliP2JyYW5jaD1hdXRvdG9vbAoKICAgICAgICAgICAgTG9nOgogICAg ICAgICAgICBNYWtlIENvbXBvc2UgcHJlZWRpdCBsZXNzIGludHJ1c2l2ZQoKLSBTZXQgTXVsdGlf a2V5IHRvIDB4QjcgaW4gY29tcG9zZSBwcmVlZGl0Ci0gU2VhcmNoIGxhbmd1YWdlIG5hbWUgaW4g ZW5naW5lIGxpc3QgaW4gaWJ1cy1zZXR1cAoKLS0tCmRpZmYgLS1naXQgYS9pYnVzLUhFQUQucGF0 Y2ggYi9pYnVzLUhFQUQucGF0Y2gKaW5kZXggOWU2ODQyZS4uMzYyZWJiMSAxMDA2NDQKLS0tIGEv aWJ1cy1IRUFELnBhdGNoCisrKyBiL2lidXMtSEVBRC5wYXRjaApAQCAtMjcyNCwzICsyNzI0LDMz MTYgQEAgaW5kZXggYTc5ZTkyOTYuLjA5OWI5YzYwIDEwMDY0NAogLS0gCiAyLjI4LjAKIAorRnJv bSBhNDkzOWY2N2Y5ZGU4Mjc1MjE5ZTJjZmNkMzg3M2UwZmJlNTkwNThmIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQorRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgor RGF0ZTogRnJpLCAxNiBKdWwgMjAyMSAxMzowODowMiArMDkwMAorU3ViamVjdDogW1BBVENIXSBz ZXR1cDogRW5oYW5jZSBlbmdpbmUgc2VhcmNoIGZ1bmN0aW9uCisKK2lidXMtc2V0dXAgY2FuIHNl YXJjaCBib3RoIHRoZSBsYW5ndWFnZSBuYW1lcyBhbmQgaW5wdXQgbWV0aG9kIG5hbWVzCitpbiB0 aGUgdG9wIGxhbmd1YWdlIGxpc3QgYnV0IHdoZW4geW91IHNlYXJjaCBhIGxhbmd1YWdlIGtleXdv cmQKK2luIHRoZSBsYW5ndWFnZSBsaXN0IGFuZCBtb3ZlIHRvIHRoZSBpbnB1dCBtZXRob2QgbGlz dCBhZnRlciBjbGljawordGhlIGhpdCBsYW5ndWFnZSBuYW1lLCBhbnkgaW5wdXQgbWV0aG9kcyBj b3VsZCBub3QgYmUgc2hvd24gYmVjYXVzZQordGhlIGxhbmd1YWdlIGRpZG4ndCBoaXQgaW4gYW55 IGlucHV0IG1ldGhvZCBuYW1lcy4KKworSW4gdGhpcyBlbmhhbmNlbWVudCwgaWJ1cy1zZXR1cCBj YW4gc2hvdyB0aGUgaW5wdXQgbWV0aG9kcyB0byBoaXQKK3RoZSBsYW5ndWFnZSBuYW1lcy4KKy0t LQorIHNldHVwL2VuZ2luZWRpYWxvZy5weSB8IDI2ICsrKysrKysrKysrKysrKysrKysrLS0tLS0t CisgMSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2Rp ZmYgLS1naXQgYS9zZXR1cC9lbmdpbmVkaWFsb2cucHkgYi9zZXR1cC9lbmdpbmVkaWFsb2cucHkK K2luZGV4IGUxYzMyMmJmLi40NzBmODAxYyAxMDA2NDQKKy0tLSBhL3NldHVwL2VuZ2luZWRpYWxv Zy5weQorKysrIGIvc2V0dXAvZW5naW5lZGlhbG9nLnB5CitAQCAtMTIwLDEyICsxMjAsMjYgQEAg Y2xhc3MgRW5naW5lRGlhbG9nKEd0ay5EaWFsb2cpOgorICAgICAgICAgICAgIHJldHVybiBUcnVl CisgICAgICAgICBpZiB3b3JkIGluIHJvdy51bnRyYW5zLmxvd2VyKCk6CisgICAgICAgICAgICAg cmV0dXJuIFRydWUKKy0gICAgICAgIGlmIHJvdy5sYW5nX2luZm8gYW5kIHJvdy5uYW1lIGluIHNl bGYuX19lbmdpbmVzX2Zvcl9sYW5nOgorLSAgICAgICAgICAgIGZvciByb3dfZSBpbiBzZWxmLl9f ZW5naW5lc19mb3JfbGFuZ1tyb3cubmFtZV06CistICAgICAgICAgICAgICAgIGlmIHdvcmQgaW4g cm93X2UubmFtZS5sb3dlcigpOgorLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKy0g ICAgICAgICAgICAgICAgaWYgd29yZCBpbiByb3dfZS51bnRyYW5zLmxvd2VyKCk6CistICAgICAg ICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorKyAgICAgICAgIyBTZWFyY2ggZW5naW5lIG5hbWUg aW4gbGFuZ3VhZ2UgbGlzdAorKyAgICAgICAgaWYgcm93LmxhbmdfaW5mbzoKKysgICAgICAgICAg ICBpZiByb3cubmFtZSBpbiBzZWxmLl9fZW5naW5lc19mb3JfbGFuZy5rZXlzKCk6CisrICAgICAg ICAgICAgICAgIGZvciByb3dfbCBpbiBzZWxmLl9fZW5naW5lc19mb3JfbGFuZ1tyb3cubmFtZV06 CisrICAgICAgICAgICAgICAgICAgICBpZiB3b3JkIGluIHJvd19sLm5hbWUubG93ZXIoKToKKysg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorKyAgICAgICAgICAgICAgICAgICAg aWYgd29yZCBpbiByb3dfbC51bnRyYW5zLmxvd2VyKCk6CisrICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIFRydWUKKysgICAgICAgICMgU2VhcmNoIGxhbmd1YWdlIG5hbWUgaW4gZW5naW5l IGxpc3QKKysgICAgICAgIGlmIG5vdCByb3cubGFuZ19pbmZvOgorKyAgICAgICAgICAgIGZvciBs IGluIHNlbGYuX19lbmdpbmVzX2Zvcl9sYW5nLmtleXMoKToKKysgICAgICAgICAgICAgICAgaWYg d29yZCBpbiBsLmxvd2VyKCk6CisrICAgICAgICAgICAgICAgICAgICBmb3Igcm93X2wgaW4gc2Vs Zi5fX2VuZ2luZXNfZm9yX2xhbmdbbF06CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgcm93 Lm5hbWUgPT0gcm93X2wubmFtZToKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IFRydWUKKysgICAgICAgICAgICBmb3IgKHRyYW5zLCB1bnRyYW5zKSBpbiBzZWxmLl9fdW50cmFu c19mb3JfbGFuZy5pdGVtcygpOgorKyAgICAgICAgICAgICAgICBpZiB3b3JkIGluIHVudHJhbnMu bG93ZXIoKToKKysgICAgICAgICAgICAgICAgICAgIGZvciByb3dfbCBpbiBzZWxmLl9fZW5naW5l c19mb3JfbGFuZ1t0cmFuc106CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgcm93Lm5hbWUg PT0gcm93X2wubmFtZToKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUK KyAgICAgICAgIHJldHVybiBGYWxzZQorIAorIAorLS0gCisyLjI4LjAKKworRnJvbSA3ZTEyZDU4 OWVlNDk3OWZkZDBmMGIwOGYxYmFjOTA0OTc0MWVjNjI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQorRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorRGF0ZTogTW9u LCAyNiBKdWwgMjAyMSAyMjo1MjoxMiArMDkwMAorU3ViamVjdDogW1BBVENIIDEvNl0gc3JjL2li dXNjb21wb3NldGFibGU6IE1vdmUgaWJ1c19jb21wb3NlX3RhYmxlX2NoZWNrCisKKy0gTW92ZSBp YnVzX2NvbXBvc2VfdGFibGVfY2hlY2sgYW5kIGlidXNfY29tcG9zZV90YWJsZV9jb21wYWN0X2No ZWNrCisgIGZyb20gaWJ1c2VuZ2luZXNpbXBsZS5jIHRvIGlidXNjb21wb3NldGFibGUuYworLSBG aXggc3JjL3Rlc3RzL2lidXMtY29tcG9zZS5jIHRvIHJlYWQgY29tcG9zZSBzZXF1ZW5jZXMgY29y cmVjdGx5LgorLS0tCisgc3JjL2lidXNjb21wb3NldGFibGUuYyAgICAgICAgfCA1MTkgKysrKysr KysrKysrKysrKysrKysrKysrKysrKystCisgc3JjL2lidXNlbmdpbmVzaW1wbGUuYyAgICAgICAg fCA1ODMgKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9pYnVzZW5naW5l c2ltcGxlcHJpdmF0ZS5oIHwgIDE3ICstCisgc3JjL3Rlc3RzL01ha2VmaWxlLmFtICAgICAgICAg fCAgIDMgKy0KKyBzcmMvdGVzdHMvaWJ1cy1jb21wb3NlLmMgICAgICB8ICAgNyArLQorIDUgZmls ZXMgY2hhbmdlZCwgNjAxIGluc2VydGlvbnMoKyksIDUyOCBkZWxldGlvbnMoLSkKKworZGlmZiAt LWdpdCBhL3NyYy9pYnVzY29tcG9zZXRhYmxlLmMgYi9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jCitp bmRleCBkZDdjYmY4My4uZjg1MTc3YTYgMTAwNjQ0CistLS0gYS9zcmMvaWJ1c2NvbXBvc2V0YWJs ZS5jCisrKysgYi9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jCitAQCAtMzMsNiArMzMsMTMgQEAKKyAK KyAjaW5jbHVkZSAiaWJ1c2VuZ2luZXNpbXBsZXByaXZhdGUuaCIKKyAKKysvKiBUaGlzIGZpbGUg Y29udGFpbnMgdGhlIHRhYmxlIG9mIHRoZSBjb21wb3NlIHNlcXVlbmNlcywKKysgKiBzdGF0aWMg Y29uc3QgZ3VpbnQxNiBndGtfY29tcG9zZV9zZXFzX2NvbXBhY3RbXSA9IHt9CisrICogSXQgaXMg Z2VuZXJhdGVkIGZyb20gdGhlIGNvbXBvc2UtcGFyc2UucHkgc2NyaXB0LgorKyAqLworKyNpbmNs dWRlICJndGtpbWNvbnRleHRzaW1wbGVzZXFzLmgiCisrCisrCisgI2RlZmluZSBJQlVTX0NPTVBP U0VfVEFCTEVfTUFHSUMgIklCdXNDb21wb3NlVGFibGUiCisgI2RlZmluZSBJQlVTX0NPTVBPU0Vf VEFCTEVfVkVSU0lPTiAoNCkKKyAjZGVmaW5lIFgxMV9EQVRBRElSIFgxMV9EQVRBX1BSRUZJWCAi L3NoYXJlL1gxMS9sb2NhbGUiCitAQCAtNDQsNiArNTEsMTAgQEAgdHlwZWRlZiBzdHJ1Y3Qgewor IH0gSUJ1c0NvbXBvc2VEYXRhOworIAorIAorK2V4dGVybiBjb25zdCBJQnVzQ29tcG9zZVRhYmxl Q29tcGFjdEV4IGlidXNfY29tcG9zZV90YWJsZV9jb21wYWN0OworK2V4dGVybiBjb25zdCBJQnVz Q29tcG9zZVRhYmxlQ29tcGFjdEV4IGlidXNfY29tcG9zZV90YWJsZV9jb21wYWN0XzMyYml0Owor KworKworIHN0YXRpYyB2b2lkCisgaWJ1c19jb21wb3NlX2RhdGFfZnJlZSAoSUJ1c0NvbXBvc2VE YXRhICpjb21wb3NlX2RhdGEpCisgeworQEAgLTUyNywyMCArNTM4LDIyIEBAIGlidXNfY29tcG9z ZV9saXN0X2NoZWNrX2R1cGxpY2F0ZWQgKEdMaXN0ICpjb21wb3NlX2xpc3QsCisgICAgICAgICBp c18zMmJpdCA9IChuX291dHB1dHMgPiAxKSA/IFRSVUUgOgorICAgICAgICAgICAgICAgICAoY29t cG9zZV9kYXRhLT52YWx1ZXNbMF0gPj0gMHhGRkZGKSA/IFRSVUUgOiBGQUxTRTsKKyAgICAgICAg IGlmICghaXNfMzJiaXQgJiYKKy0gICAgICAgICAgICBpYnVzX2NoZWNrX2NvbXBhY3RfdGFibGUg KCZpYnVzX2NvbXBvc2VfdGFibGVfY29tcGFjdCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGtleXN5bXMsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBuX2NvbXBvc2UsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm Y29tcG9zZV9maW5pc2gsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm b3V0cHV0X2NoYXJzKSAmJiBjb21wb3NlX2ZpbmlzaCkgeworKyAgICAgICAgICAgIGlidXNfY29t cG9zZV90YWJsZV9jb21wYWN0X2NoZWNrICgmaWJ1c19jb21wb3NlX3RhYmxlX2NvbXBhY3QsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXN5bXMsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fY29tcG9zZSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbXBvc2Vf ZmluaXNoLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm b3V0cHV0X2NoYXJzKSAmJgorKyAgICAgICAgICAgIGNvbXBvc2VfZmluaXNoKSB7CisgICAgICAg ICAgICAgaWYgKGNvbXBvc2VfZGF0YS0+dmFsdWVzWzBdID09ICpvdXRwdXRfY2hhcnMpCisgICAg ICAgICAgICAgICAgIHJlbW92ZWRfbGlzdCA9IGdfbGlzdF9hcHBlbmQgKHJlbW92ZWRfbGlzdCwg Y29tcG9zZV9kYXRhKTsKKyAgICAgICAgICAgICBnX2ZyZWUgKG91dHB1dF9jaGFycyk7CisgICAg ICAgICB9IGVsc2UgaWYgKGlzXzMyYml0ICYmCistICAgICAgICAgICAgICAgICAgIGlidXNfY2hl Y2tfY29tcGFjdF90YWJsZSAoJmlidXNfY29tcG9zZV90YWJsZV9jb21wYWN0XzMyYml0LAorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXN5bXMsCistICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9jb21wb3NlLAorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb21wb3NlX2Zpbmlz aCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0 X2NoYXJzKSAmJiBjb21wb3NlX2ZpbmlzaCkgeworKyAgICAgICAgICAgICAgICAgICBpYnVzX2Nv bXBvc2VfdGFibGVfY29tcGFjdF9jaGVjayAoCisrICAgICAgICAgICAgICAgICAgICAgICAgICAm aWJ1c19jb21wb3NlX3RhYmxlX2NvbXBhY3RfMzJiaXQsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICBrZXlzeW1zLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgbl9jb21wb3NlLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgJmNvbXBvc2VfZmluaXNoLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgJm91dHB1dF9jaGFycykgJiYgY29tcG9zZV9maW5pc2gpIHsKKyAgICAgICAg ICAgICAKKyAgICAgICAgICAgICBpZiAobl9vdXRwdXRzID09IHVuaWNoYXJfbGVuZ3RoIChvdXRw dXRfY2hhcnMpKSB7CisgICAgICAgICAgICAgICAgIGludCBqID0gMDsKK0BAIC0xMzU0LDMgKzEz NjcsNDg5IEBAIGlidXNfY29tcG9zZV90YWJsZV9saXN0X2FkZF9maWxlIChHU0xpc3QgICAgICAq Y29tcG9zZV90YWJsZXMsCisgICAgIGlidXNfY29tcG9zZV90YWJsZV9zYXZlX2NhY2hlIChjb21w b3NlX3RhYmxlKTsKKyAgICAgcmV0dXJuIGdfc2xpc3RfcHJlcGVuZCAoY29tcG9zZV90YWJsZXMs IGNvbXBvc2VfdGFibGUpOworIH0KKysKKysKKytzdGF0aWMgaW50CisrY29tcGFyZV9zZXEgKGNv bnN0IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAqdmFsdWUpCisreworKyAgICBpbnQgaSA9IDA7Cisr ICAgIGNvbnN0IGd1aW50MTYgKmtleXN5bXMgPSBrZXk7CisrICAgIGNvbnN0IGd1aW50MTYgKnNl cSA9IHZhbHVlOworKworKyAgICB3aGlsZSAoa2V5c3ltc1tpXSkgeworKyAgICAgICAgaWYgKGtl eXN5bXNbaV0gPCBzZXFbaV0pCisrICAgICAgICAgICAgcmV0dXJuIC0xOworKyAgICAgICAgZWxz ZSBpZiAoa2V5c3ltc1tpXSA+IHNlcVtpXSkKKysgICAgICAgICAgICByZXR1cm4gMTsKKysKKysg ICAgICAgIGkrKzsKKysgICAgfQorKworKyAgICByZXR1cm4gMDsKKyt9CisrCisrCisrZ2Jvb2xl YW4KKytpYnVzX2NvbXBvc2VfdGFibGVfY2hlY2sgKGNvbnN0IElCdXNDb21wb3NlVGFibGVFeCAq dGFibGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDE2ICAgICAgICAgICAgICAg ICAgKmNvbXBvc2VfYnVmZmVyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAgICAg ICAgICAgICAgICAgICAgICBuX2NvbXBvc2UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICBn Ym9vbGVhbiAgICAgICAgICAgICAgICAgKmNvbXBvc2VfZmluaXNoLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICpjb21wb3NlX21hdGNoLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgR1N0cmluZyAgICAgICAgICAgICAgICAgICpvdXRwdXQs CisrICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICAgIGlz XzMyYml0KQorK3sKKysgICAgZ2ludCByb3dfc3RyaWRlID0gdGFibGUtPm1heF9zZXFfbGVuICsg MjsKKysgICAgZ3VpbnQxNiAqZGF0YV9maXJzdDsKKysgICAgaW50IG5fc2VxczsKKysgICAgZ3Vp bnQxNiAqc2VxOworKworKyAgICBpZiAoY29tcG9zZV9maW5pc2gpCisrICAgICAgICAqY29tcG9z ZV9maW5pc2ggPSBGQUxTRTsKKysgICAgaWYgKGNvbXBvc2VfbWF0Y2gpCisrICAgICAgICAqY29t cG9zZV9tYXRjaCA9IEZBTFNFOworKyAgICBpZiAob3V0cHV0KQorKyAgICAgICAgZ19zdHJpbmdf c2V0X3NpemUgKG91dHB1dCwgMCk7CisrCisrICAgIGlmIChuX2NvbXBvc2UgPiB0YWJsZS0+bWF4 X3NlcV9sZW4pCisrICAgICAgICByZXR1cm4gRkFMU0U7CisrCisrICAgIGlmIChpc18zMmJpdCkg eworKyAgICAgICAgaWYgKCF0YWJsZS0+cHJpdikKKysgICAgICAgICAgICByZXR1cm4gRkFMU0U7 CisrICAgICAgICBkYXRhX2ZpcnN0ID0gdGFibGUtPnByaXYtPmRhdGFfZmlyc3Q7CisrICAgICAg ICBuX3NlcXMgPSB0YWJsZS0+cHJpdi0+Zmlyc3Rfbl9zZXFzOworKyAgICB9IGVsc2UgeworKyAg ICAgICAgZGF0YV9maXJzdCA9IHRhYmxlLT5kYXRhOworKyAgICAgICAgbl9zZXFzID0gdGFibGUt Pm5fc2VxczsKKysgICAgfQorKyAgICBzZXEgPSBic2VhcmNoIChjb21wb3NlX2J1ZmZlciwKKysg ICAgICAgICAgICAgICAgICAgZGF0YV9maXJzdCwgbl9zZXFzLAorKyAgICAgICAgICAgICAgICAg ICBzaXplb2YgKGd1aW50MTYpICogcm93X3N0cmlkZSwKKysgICAgICAgICAgICAgICAgICAgY29t cGFyZV9zZXEpOworKworKyAgICBpZiAoc2VxID09IE5VTEwpCisrICAgICAgICByZXR1cm4gRkFM U0U7CisrCisrICAgIGd1aW50MTYgKnByZXZfc2VxOworKworKyAgICAvKiBCYWNrIHVwIHRvIHRo ZSBmaXJzdCBzZXF1ZW5jZSB0aGF0IG1hdGNoZXMgdG8gbWFrZSBzdXJlCisrICAgICAqIHdlIGZp bmQgdGhlIGV4YWN0IG1hdGNoIGlmIHRoZWlyIGlzIG9uZS4KKysgICAgICovCisrICAgIHdoaWxl IChzZXEgPiBkYXRhX2ZpcnN0KSB7CisrICAgICAgICBwcmV2X3NlcSA9IHNlcSAtIHJvd19zdHJp ZGU7CisrICAgICAgICBpZiAoY29tcGFyZV9zZXEgKGNvbXBvc2VfYnVmZmVyLCBwcmV2X3NlcSkg IT0gMCkKKysgICAgICAgICAgICBicmVhazsKKysgICAgICAgIHNlcSA9IHByZXZfc2VxOworKyAg ICB9CisrCisrICAgIC8qIGNvbXBsZXRlIHNlcXVlbmNlICovCisrICAgIGlmIChuX2NvbXBvc2Ug PT0gdGFibGUtPm1heF9zZXFfbGVuIHx8IHNlcVtuX2NvbXBvc2VdID09IDApIHsKKysgICAgICAg IGd1aW50MTYgKm5leHRfc2VxOworKyAgICAgICAgZ3VuaWNoYXIgdmFsdWUgPSAwOworKyAgICAg ICAgaW50IG51bSA9IDA7CisrICAgICAgICBpbnQgaW5kZXggPSAwOworKyAgICAgICAgZ2NoYXIg Km91dHB1dF9zdHIgPSBOVUxMOworKyAgICAgICAgR0Vycm9yICplcnJvciA9IE5VTEw7CisrCisr ICAgICAgICBpZiAoaXNfMzJiaXQpIHsKKysgICAgICAgICAgICBudW0gPSBzZXFbdGFibGUtPm1h eF9zZXFfbGVuXTsKKysgICAgICAgICAgICBpbmRleCA9IHNlcVt0YWJsZS0+bWF4X3NlcV9sZW4g KyAxXTsKKysgICAgICAgICAgICB2YWx1ZSA9ICB0YWJsZS0+cHJpdi0+ZGF0YV9zZWNvbmRbaW5k ZXhdOworKyAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICB2YWx1ZSA9IHNlcVt0YWJsZS0+ bWF4X3NlcV9sZW5dOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKGlzXzMyYml0KSB7Cisr ICAgICAgICAgICAgb3V0cHV0X3N0ciA9IGdfdWNzNF90b191dGY4ICh0YWJsZS0+cHJpdi0+ZGF0 YV9zZWNvbmQgKyBpbmRleCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG51bSwgTlVMTCwgTlVMTCwgJmVycm9yKTsKKysgICAgICAgICAgICBpZiAob3V0cHV0X3N0 cikgeworKyAgICAgICAgICAgICAgICBpZiAob3V0cHV0KQorKyAgICAgICAgICAgICAgICAgICAg Z19zdHJpbmdfYXBwZW5kIChvdXRwdXQsIG91dHB1dF9zdHIpOworKyAgICAgICAgICAgICAgICBn X2ZyZWUgKG91dHB1dF9zdHIpOworKyAgICAgICAgICAgICAgICBpZiAoY29tcG9zZV9tYXRjaCkK KysgICAgICAgICAgICAgICAgICAgICpjb21wb3NlX21hdGNoID0gVFJVRTsKKysgICAgICAgICAg ICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKCJGYWlsZWQgdG8gb3V0cHV0 IG11bHRpcGxlIGNoYXJhY3RlcnM6ICVzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBl cnJvci0+bWVzc2FnZSk7CisrICAgICAgICAgICAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOwor KyAgICAgICAgICAgIH0KKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgaWYgKG91dHB1 dCkKKysgICAgICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kX3VuaWNoYXIgKG91dHB1dCwgdmFs dWUpOworKyAgICAgICAgICAgIGlmIChjb21wb3NlX21hdGNoKQorKyAgICAgICAgICAgICAgICAq Y29tcG9zZV9tYXRjaCA9IFRSVUU7CisrICAgICAgICB9CisrCisrICAgICAgICAvKiBXZSBmb3Vu ZCBhIHRlbnRhdGl2ZSBtYXRjaC4gU2VlIGlmIHRoZXJlIGFyZSBhbnkgbG9uZ2VyCisrICAgICAg ICAgKiBzZXF1ZW5jZXMgY29udGFpbmluZyB0aGlzIHN1YnNlcXVlbmNlCisrICAgICAgICAgKi8K KysgICAgICAgIG5leHRfc2VxID0gc2VxICsgcm93X3N0cmlkZTsKKysgICAgICAgIGlmIChuZXh0 X3NlcSA8IGRhdGFfZmlyc3QgKyByb3dfc3RyaWRlICogbl9zZXFzKSB7CisrICAgICAgICAgICAg aWYgKGNvbXBhcmVfc2VxIChjb21wb3NlX2J1ZmZlciwgbmV4dF9zZXEpID09IDApCisrICAgICAg ICAgICAgICAgIHJldHVybiBUUlVFOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKGNvbXBv c2VfZmluaXNoKQorKyAgICAgICAgICAgICpjb21wb3NlX2ZpbmlzaCA9IFRSVUU7CisrICAgICAg ICBjb21wb3NlX2J1ZmZlclswXSA9IDA7CisrICAgIH0KKysgICAgcmV0dXJuIFRSVUU7CisrfQor KworKworK3N0YXRpYyBpbnQKKytjb21wYXJlX3NlcV9pbmRleCAoY29uc3Qgdm9pZCAqa2V5LCBj b25zdCB2b2lkICp2YWx1ZSkKKyt7CisrICAgIGNvbnN0IGd1aW50MTYgKmtleXN5bXMgPSBrZXk7 CisrICAgIGNvbnN0IGd1aW50MTYgKnNlcSA9IHZhbHVlOworKworKyAgICBpZiAoa2V5c3ltc1sw XSA8IHNlcVswXSkKKysgICAgICAgIHJldHVybiAtMTsKKysgICAgZWxzZSBpZiAoa2V5c3ltc1sw XSA+IHNlcVswXSkKKysgICAgICAgIHJldHVybiAxOworKyAgICByZXR1cm4gMDsKKyt9CisrCisr CisrLyoqCisrICogaWJ1c19jb21wb3NlX3RhYmxlX2NvbXBhY3RfY2hlY2s6CisrICogQHRhYmxl OiBBIGNvbnN0IGBJQnVzQ29tcG9zZVRhYmxlQ29tcGFjdEV4YAorKyAqIEBjb21wb3NlX2J1ZmZl cjogVHlwZWQgY29tcG9zZSBzZXF1ZW5jZSBidWZmZXIKKysgKiBAbl9jb21wb3NlOiBUaGUgbGVu Z3RoIG9mIGBjb21wb3NlX2J1ZmZlcmAKKysgKiBAY29tcG9zZV9maW5pc2g6IElmICVUUlVFLCBg b3V0cHV0X2NoYXJzYCBzaG91bGQgYmUgY29tbWl0dGVkCisrICogQG91dHB1dF9jaGFyczogQW4g YXJyYXkgb2YgZ3VuaWNoYXIgb2Ygb3V0cHV0IGNvbXBvc2UgY2hhcmFjdGVycworKyAqCisrICog b3V0cHV0X2NoYXJzIGlzIGJldHRlciB0byB1c2UgZ3VuaWNoYXIgaW5zdGVhZCBvZiBHU3RyaW5n IGJlY2F1c2UKKysgKiBJQnVzQ29tcG9zZURhdGEtPnZhbHVlc1tdIGlzIHRoZSBndW5pY2hhciBh cnJheS4KKysgKi8KKytnYm9vbGVhbgorK2lidXNfY29tcG9zZV90YWJsZV9jb21wYWN0X2NoZWNr IChjb25zdCBJQnVzQ29tcG9zZVRhYmxlQ29tcGFjdEV4ICp0YWJsZSwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ3VpbnQxNgorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjb21wb3NlX2J1ZmZlciwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbl9jb21wb3NlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn Ym9vbGVhbgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICpjb21wb3NlX2ZpbmlzaCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ3VuaWNoYXIgICAgICAgICAgICAgICAgICAgICAgICoqb3V0cHV0X2NoYXJz KQorK3sKKysgICAgZ2ludCByb3dfc3RyaWRlOworKyAgICBndWludDE2ICpzZXFfaW5kZXg7Cisr ICAgIGd1aW50MTYgKnNlcTsKKysgICAgZ2ludCBpOworKworKyAgICBpZiAoY29tcG9zZV9maW5p c2gpCisrICAgICAgICAqY29tcG9zZV9maW5pc2ggPSBGQUxTRTsKKysgICAgaWYgKG91dHB1dF9j aGFycykKKysgICAgICAgICpvdXRwdXRfY2hhcnMgPSBOVUxMOworKworKyAgICAvKiBXaWxsIG5l dmVyIG1hdGNoLCBpZiB0aGUgc2VxdWVuY2UgaW4gdGhlIGNvbXBvc2UgYnVmZmVyIGlzIGxvbmdl cgorKyAgICAgKiB0aGFuIHRoZSBzZXF1ZW5jZXMgaW4gdGhlIHRhYmxlLiAgRnVydGhlciwgY29t cGFyZV9zZXEgKGtleSwgdmFsKQorKyAgICAgKiB3aWxsIG92ZXJydW4gdmFsIGlmIGtleSBpcyBs b25nZXIgdGhhbiB2YWwuICovCisrICAgIGlmIChuX2NvbXBvc2UgPiB0YWJsZS0+bWF4X3NlcV9s ZW4pCisrICAgICAgICByZXR1cm4gRkFMU0U7CisrCisrICAgIHNlcV9pbmRleCA9IGJzZWFyY2gg KGNvbXBvc2VfYnVmZmVyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS0+ZGF0YSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUtPm5faW5kZXhfc2l6ZSwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZW9mIChndWludDE2KSAqICB0YWJsZS0+bl9pbmRleF9zdHJp ZGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhcmVfc2VxX2luZGV4KTsKKysKKysg ICAgaWYgKHNlcV9pbmRleCA9PSBOVUxMKQorKyAgICAgICAgcmV0dXJuIEZBTFNFOworKworKyAg ICBpZiAobl9jb21wb3NlID09IDEpCisrICAgICAgICByZXR1cm4gVFJVRTsKKysKKysgICAgc2Vx ID0gTlVMTDsKKysKKysgICAgaWYgKHRhYmxlLT5wcml2KSB7CisrICAgICAgICBmb3IgKGkgPSBu X2NvbXBvc2UgLSAxOyBpIDwgdGFibGUtPm1heF9zZXFfbGVuOyBpKyspIHsKKysgICAgICAgICAg ICByb3dfc3RyaWRlID0gaSArIDI7CisrCisrICAgICAgICAgICAgaWYgKHNlcV9pbmRleFtpICsg MV0gLSBzZXFfaW5kZXhbaV0gPiAwKSB7CisrICAgICAgICAgICAgICAgIHNlcSA9IGJzZWFyY2gg KGNvbXBvc2VfYnVmZmVyICsgMSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFi bGUtPmRhdGEgKyBzZXFfaW5kZXhbaV0sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChzZXFfaW5kZXhbaSArIDFdIC0gc2VxX2luZGV4W2ldKSAvIHJvd19zdHJpZGUsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoZ3VpbnQxNikgKiByb3dfc3RyaWRlLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXJlX3NlcSk7CisrICAgICAgICAg ICAgICAgIGlmIChzZXEpIHsKKysgICAgICAgICAgICAgICAgICAgIGlmIChpID09IG5fY29tcG9z ZSAtIDEpCisrICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAg ICAgICBlbHNlCisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisrICAgICAg ICAgICAgICAgIH0KKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgICAgICBpZiAoIXNl cSkgeworKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKysgICAgICAgIH0gZWxzZSB7CisrICAg ICAgICAgICAgaW50IGluZGV4ID0gc2VxW3Jvd19zdHJpZGUgLSAyXTsKKysgICAgICAgICAgICBp bnQgbGVuZ3RoID0gc2VxW3Jvd19zdHJpZGUgLSAxXTsKKysgICAgICAgICAgICBpbnQgajsKKysg ICAgICAgICAgICBpZiAoY29tcG9zZV9maW5pc2gpCisrICAgICAgICAgICAgICAgICpjb21wb3Nl X2ZpbmlzaCA9IFRSVUU7CisrICAgICAgICAgICAgaWYgKG91dHB1dF9jaGFycykgeworKyAgICAg ICAgICAgICAgICAqb3V0cHV0X2NoYXJzID0gZ19uZXcgKGd1bmljaGFyLCBsZW5ndGggKyAxKTsK KysgICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGxlbmd0aDsgaisrKSB7CisrICAgICAg ICAgICAgICAgICAgICAoKm91dHB1dF9jaGFycylbal0gPSB0YWJsZS0+cHJpdi0+ZGF0YTJbaW5k ZXggKyBqXTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAoKm91dHB1dF9j aGFycylbbGVuZ3RoXSA9IDA7CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIHJldHVy biBUUlVFOworKyAgICAgICAgfQorKyAgICB9IGVsc2UgeworKyAgICAgICAgZm9yIChpID0gbl9j b21wb3NlIC0gMTsgaSA8IHRhYmxlLT5tYXhfc2VxX2xlbjsgaSsrKSB7CisrICAgICAgICAgICAg cm93X3N0cmlkZSA9IGkgKyAxOworKworKyAgICAgICAgICAgIGlmIChzZXFfaW5kZXhbaSArIDFd IC0gc2VxX2luZGV4W2ldID4gMCkgeworKyAgICAgICAgICAgICAgICBzZXEgPSBic2VhcmNoIChj b21wb3NlX2J1ZmZlciArIDEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxl LT5kYXRhICsgc2VxX2luZGV4W2ldLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo c2VxX2luZGV4W2kgKyAxXSAtIHNlcV9pbmRleFtpXSkgLyByb3dfc3RyaWRlLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YgKGd1aW50MTYpICogcm93X3N0cmlkZSwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFyZV9zZXEpOworKworKyAgICAgICAg ICAgICAgICBpZiAoc2VxKSB7CisrICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSBuX2NvbXBv c2UgLSAxKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAg ICAgICAgZWxzZQorKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOworKyAgICAg ICAgICAgICAgICB9CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICAgICAgaWYgKCFz ZXEpIHsKKysgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisrICAgICAgICB9IGVsc2UgeworKyAg ICAgICAgICAgIGlmIChjb21wb3NlX2ZpbmlzaCkKKysgICAgICAgICAgICAgICAgKmNvbXBvc2Vf ZmluaXNoID0gVFJVRTsKKysgICAgICAgICAgICBpZiAob3V0cHV0X2NoYXJzKSB7CisrICAgICAg ICAgICAgICAgICpvdXRwdXRfY2hhcnMgPSBnX25ldyAoZ3VuaWNoYXIsIDIpOworKyAgICAgICAg ICAgICAgICAoKm91dHB1dF9jaGFycylbMF0gPSBzZXFbcm93X3N0cmlkZSAtIDFdOworKyAgICAg ICAgICAgICAgICAoKm91dHB1dF9jaGFycylbMV0gPSAwOworKyAgICAgICAgICAgIH0KKysKKysg ICAgICAgICAgICByZXR1cm4gVFJVRTsKKysgICAgICAgIH0KKysgICAgfQorKworKyAgICBnX2Fz c2VydF9ub3RfcmVhY2hlZCAoKTsKKyt9CisrCisrCisrLyogQ2hlY2tzIGlmIGEga2V5c3ltIGlz IGEgZGVhZCBrZXkuIERlYWQga2V5IGtleXN5bSB2YWx1ZXMgYXJlIGRlZmluZWQgaW4KKysgKiAu Li9nZGsvZ2Rra2V5c3ltcy5oIGFuZCB0aGUgZmlyc3QgaXMgR0RLX0tFWV9kZWFkX2dyYXZlLiBB cyBYLk9yZyBpcyB1cGRhdGVkLAorKyAqIG1vcmUgZGVhZCBrZXlzIGFyZSBhZGRlZCBhbmQgd2Ug bmVlZCB0byB1cGRhdGUgdGhlIHVwcGVyIGxpbWl0LgorKyAqIEN1cnJlbnRseSwgdGhlIHVwcGVy IGxpbWl0IGlzIEdES19LRVlfZGVhZF9kYXNpYSsxLiBUaGUgKzEgaGFzIHRvIGRvIHdpdGgKKysg KiBhIHRlbXBvcmFyeSBpc3N1ZSBpbiB0aGUgWC5PcmcgaGVhZGVyIGZpbGVzLgorKyAqIEluIGZ1 dHVyZSB2ZXJzaW9ucyBpdCB3aWxsIGJlIGp1c3QgdGhlIGtleXN5bSAobm8gKzEpLgorKyAqLwor KyNkZWZpbmUgSVNfREVBRF9LRVkoaykgXAorKyAgICAgICgoaykgPj0gSUJVU19LRVlfZGVhZF9n cmF2ZSAmJiAoaykgPD0gSUJVU19LRVlfZGVhZF9ncmVlaykKKysKKysvKiBUaGlzIGZ1bmN0aW9u IHJlY2VpdmVzIGEgc2VxdWVuY2Ugb2YgVW5pY29kZSBjaGFyYWN0ZXJzIGFuZCB0cmllcyB0bwor KyAqIG5vcm1hbGl6ZSBpdCAoTkZDKS4gV2UgY2hlY2sgZm9yIHRoZSBjYXNlIHRoZSB0aGUgcmVz dWx0aW5nIHN0cmluZworKyAqIGhhcyBsZW5ndGggMSAoc2luZ2xlIGNoYXJhY3RlcikuCisrICog TkZDIG5vcm1hbGlzYXRpb24gbm9ybWFsbHkgcmVhcnJhbmdlcyBkaWFjcml0aWMgbWFya3MsIHVu bGVzcyB0aGVzZQorKyAqIGJlbG9uZyB0byB0aGUgc2FtZSBDYW5vbmljYWwgQ29tYmluaW5nIENs YXNzLgorKyAqIElmIHRoZXkgYmVsb25nIHRvIHRoZSBzYW1lIGNhbm9uaWNhbCBjb21iaW5pbmcg Y2xhc3MsIHdlIHByb2R1Y2UgYWxsCisrICogcGVybXV0YXRpb25zIG9mIHRoZSBkaWFjcml0aWMg bWFya3MsIHRoZW4gYXR0ZW1wdCB0byBub3JtYWxpemUuCisrICovCisrc3RhdGljIGdib29sZWFu CisrY2hlY2tfbm9ybWFsaXplX25mYyAoZ3VuaWNoYXIqIGNvbWJpbmF0aW9uX2J1ZmZlciwgZ2lu dCBuX2NvbXBvc2UpCisreworKyAgICBndW5pY2hhciBjb21iaW5hdGlvbl9idWZmZXJfdGVtcFtJ QlVTX01BWF9DT01QT1NFX0xFTl07CisrICAgIGdjaGFyICpjb21iaW5hdGlvbl91dGY4X3RlbXAg PSBOVUxMOworKyAgICBnY2hhciAqbmZjX3RlbXAgPSBOVUxMOworKyAgICBnaW50IG5fY29tYmlu YXRpb25zOworKyAgICBndW5pY2hhciB0ZW1wX3N3YXA7CisrICAgIGdpbnQgaTsKKysKKysgICAg bl9jb21iaW5hdGlvbnMgPSAxOworKworKyAgICBmb3IgKGkgPSAxOyBpIDwgbl9jb21wb3NlOyBp KysgKQorKyAgICAgICAgbl9jb21iaW5hdGlvbnMgKj0gaTsKKysKKysgICAgLyogWG9yZyByZXVz ZXMgZGVhZF90aWxkZSBmb3IgdGhlIHBlcmlzcG9tZW5pIGRpYWNyaXRpYyBtYXJrLgorKyAgICAg KiBXZSBjaGVjayBpZiBiYXNlIGNoYXJhY3RlciBiZWxvbmdzIHRvIEdyZWVrIFVuaWNvZGUgYmxv Y2ssCisrICAgICAqIGFuZCBpZiBzbywgd2UgcmVwbGFjZSB0aWxkZSB3aXRoIHBlcmlzcG9tZW5p LiAqLworKyAgICBpZiAoY29tYmluYXRpb25fYnVmZmVyWzBdID49IDB4MzkwICYmIGNvbWJpbmF0 aW9uX2J1ZmZlclswXSA8PSAweDNGRikgeworKyAgICAgICAgZm9yIChpID0gMTsgaSA8IG5fY29t cG9zZTsgaSsrICkKKysgICAgICAgICAgICBpZiAoY29tYmluYXRpb25fYnVmZmVyW2ldID09IDB4 MzAzKQorKyAgICAgICAgICAgICAgICBjb21iaW5hdGlvbl9idWZmZXJbaV0gPSAweDM0MjsKKysg ICAgfQorKworKyAgICBtZW1jcHkgKGNvbWJpbmF0aW9uX2J1ZmZlcl90ZW1wLAorKyAgICAgICAg ICAgIGNvbWJpbmF0aW9uX2J1ZmZlciwKKysgICAgICAgICAgICBJQlVTX01BWF9DT01QT1NFX0xF TiAqIHNpemVvZiAoZ3VuaWNoYXIpICk7CisrCisrICAgIGZvciAoaSA9IDA7IGkgPCBuX2NvbWJp bmF0aW9uczsgaSsrICkgeworKyAgICAgICAgZ191bmljb2RlX2Nhbm9uaWNhbF9vcmRlcmluZyAo Y29tYmluYXRpb25fYnVmZmVyX3RlbXAsIG5fY29tcG9zZSk7CisrICAgICAgICBjb21iaW5hdGlv bl91dGY4X3RlbXAgPSBnX3VjczRfdG9fdXRmOCAoY29tYmluYXRpb25fYnVmZmVyX3RlbXAsIC0x LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEws IE5VTEwsIE5VTEwpOworKyAgICAgICAgbmZjX3RlbXAgPSBnX3V0Zjhfbm9ybWFsaXplIChjb21i aW5hdGlvbl91dGY4X3RlbXAsIC0xLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHX05PUk1BTElaRV9ORkMpOworKworKyAgICAgICAgaWYgKGdfdXRmOF9zdHJsZW4gKG5m Y190ZW1wLCAtMSkgPT0gMSkgeworKyAgICAgICAgICAgIG1lbWNweSAoY29tYmluYXRpb25fYnVm ZmVyLAorKyAgICAgICAgICAgICAgICAgICAgY29tYmluYXRpb25fYnVmZmVyX3RlbXAsCisrICAg ICAgICAgICAgICAgICAgICBJQlVTX01BWF9DT01QT1NFX0xFTiAqIHNpemVvZiAoZ3VuaWNoYXIp ICk7CisrCisrICAgICAgICAgICAgZ19mcmVlIChjb21iaW5hdGlvbl91dGY4X3RlbXApOworKyAg ICAgICAgICAgIGdfZnJlZSAobmZjX3RlbXApOworKworKyAgICAgICAgICAgIHJldHVybiBUUlVF OworKyAgICAgICAgfQorKworKyAgICAgICAgZ19mcmVlIChjb21iaW5hdGlvbl91dGY4X3RlbXAp OworKyAgICAgICAgZ19mcmVlIChuZmNfdGVtcCk7CisrCisrICAgICAgICBpZiAobl9jb21wb3Nl ID4gMikgeworKyAgICAgICAgICAgIGdpbnQgaiA9IGkgJSAobl9jb21wb3NlIC0gMSkgKyAxOwor KyAgICAgICAgICAgIGdpbnQgayA9IChpKzEpICUgKG5fY29tcG9zZSAtIDEpICsgMTsKKysgICAg ICAgICAgICBpZiAoaiA+PSBJQlVTX01BWF9DT01QT1NFX0xFTikgeworKyAgICAgICAgICAgICAg ICBnX3dhcm5pbmcgKCJqID49IElCVVNfTUFYX0NPTVBPU0VfTEVOIGZvciAiIFwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAiY29tYmluYXRpb25fYnVmZmVyX3RlbXAiKTsKKysgICAgICAg ICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGlmIChrID49IElC VVNfTUFYX0NPTVBPU0VfTEVOKSB7CisrICAgICAgICAgICAgICAgIGdfd2FybmluZyAoImsgPj0g SUJVU19NQVhfQ09NUE9TRV9MRU4gZm9yICIgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICJjb21iaW5hdGlvbl9idWZmZXJfdGVtcCIpOworKyAgICAgICAgICAgICAgICBicmVhazsKKysg ICAgICAgICAgICB9CisrICAgICAgICAgICAgdGVtcF9zd2FwID0gY29tYmluYXRpb25fYnVmZmVy X3RlbXBbal07CisrICAgICAgICAgICAgY29tYmluYXRpb25fYnVmZmVyX3RlbXBbal0gPSBjb21i aW5hdGlvbl9idWZmZXJfdGVtcFtrXTsKKysgICAgICAgICAgICBjb21iaW5hdGlvbl9idWZmZXJf dGVtcFtrXSA9IHRlbXBfc3dhcDsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgYnJl YWs7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgcmV0dXJuIEZBTFNFOworK30KKysKKysK KytnYm9vbGVhbgorK2lidXNfY2hlY2tfYWxnb3JpdGhtaWNhbGx5IChjb25zdCBndWludDE2ICpj b21wb3NlX2J1ZmZlciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAgICAgICAg ICAgbl9jb21wb3NlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBndW5pY2hhciAgICAg ICpvdXRwdXRfY2hhcikKKysKKyt7CisrICAgIGdpbnQgaTsKKysgICAgZ3VuaWNoYXIgY29tYmlu YXRpb25fYnVmZmVyW0lCVVNfTUFYX0NPTVBPU0VfTEVOXTsKKysgICAgZ2NoYXIgKmNvbWJpbmF0 aW9uX3V0ZjgsICpuZmM7CisrCisrICAgIGlmIChvdXRwdXRfY2hhcikKKysgICAgICAgICpvdXRw dXRfY2hhciA9IDA7CisrCisrICAgIGlmIChuX2NvbXBvc2UgPj0gSUJVU19NQVhfQ09NUE9TRV9M RU4pCisrICAgICAgICByZXR1cm4gRkFMU0U7CisrCisrICAgIGZvciAoaSA9IDA7IGkgPCBuX2Nv bXBvc2UgJiYgSVNfREVBRF9LRVkgKGNvbXBvc2VfYnVmZmVyW2ldKTsgaSsrKQorKyAgICAgICAg OworKyAgICBpZiAoaSA9PSBuX2NvbXBvc2UpCisrICAgICAgICByZXR1cm4gVFJVRTsKKysKKysg ICAgaWYgKGkgPiAwICYmIGkgPT0gbl9jb21wb3NlIC0gMSkgeworKyAgICAgICAgY29tYmluYXRp b25fYnVmZmVyWzBdID0gaWJ1c19rZXl2YWxfdG9fdW5pY29kZSAoY29tcG9zZV9idWZmZXJbaV0p OworKyAgICAgICAgY29tYmluYXRpb25fYnVmZmVyW25fY29tcG9zZV0gPSAwOworKyAgICAgICAg aS0tOworKyAgICAgICAgd2hpbGUgKGkgPj0gMCkgeworKyAgICAgICAgICAgIGNvbWJpbmF0aW9u X2J1ZmZlcltpKzFdID0gaWJ1c19rZXlzeW1fdG9fdW5pY29kZSAoY29tcG9zZV9idWZmZXJbaV0s CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBUUlVFKTsKKysgICAgICAgICAgICBpZiAoIWNvbWJpbmF0aW9uX2J1ZmZlcltpKzFd KSB7CisrICAgICAgICAgICAgICAgIGNvbWJpbmF0aW9uX2J1ZmZlcltpKzFdID0KKysgICAgICAg ICAgICAgICAgICAgICAgICBpYnVzX2tleXZhbF90b191bmljb2RlIChjb21wb3NlX2J1ZmZlcltp XSk7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGktLTsKKysgICAgICAgIH0KKysKKysg ICAgICAgIC8qIElmIHRoZSBidWZmZXIgbm9ybWFsaXplcyB0byBhIHNpbmdsZSBjaGFyYWN0ZXIs CisrICAgICAgICAgKiB0aGVuIG1vZGlmeSB0aGUgb3JkZXIgb2YgY29tYmluYXRpb25fYnVmZmVy IGFjY29yZGluZ2x5LCBpZgorKyAgICAgICAgICogbmVjZXNzYXJ5LCBhbmQgcmV0dXJuIFRSVUUu CisrICAgICAgICAgKi8KKysgICAgICAgIGlmIChjaGVja19ub3JtYWxpemVfbmZjIChjb21iaW5h dGlvbl9idWZmZXIsIG5fY29tcG9zZSkpIHsKKysgICAgICAgICAgICBjb21iaW5hdGlvbl91dGY4 ID0gZ191Y3M0X3RvX3V0ZjggKGNvbWJpbmF0aW9uX2J1ZmZlciwgLTEsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKKysg ICAgICAgICAgICBuZmMgPSBnX3V0Zjhfbm9ybWFsaXplIChjb21iaW5hdGlvbl91dGY4LCAtMSwg R19OT1JNQUxJWkVfTkZDKTsKKysKKysgICAgICAgICAgICBpZiAob3V0cHV0X2NoYXIpCisrICAg ICAgICAgICAgICAgICpvdXRwdXRfY2hhciA9IGdfdXRmOF9nZXRfY2hhciAobmZjKTsKKysKKysg ICAgICAgICAgICBnX2ZyZWUgKGNvbWJpbmF0aW9uX3V0ZjgpOworKyAgICAgICAgICAgIGdfZnJl ZSAobmZjKTsKKysKKysgICAgICAgICAgICByZXR1cm4gVFJVRTsKKysgICAgICAgIH0KKysgICAg fQorKworKyAgICByZXR1cm4gRkFMU0U7CisrfQorKworKworK2d1bmljaGFyCisraWJ1c19rZXlz eW1fdG9fdW5pY29kZSAoZ3VpbnQxNiAga2V5c3ltLAorKyAgICAgICAgICAgICAgICAgICAgICAg IGdib29sZWFuIGNvbWJpbmluZykgeworKyNkZWZpbmUgQ0FTRShrZXlzeW1fc3VmZml4LCB1bmlj b2RlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIGNhc2Ug SUJVU19LRVlfZGVhZF8jI2tleXN5bV9zdWZmaXg6IHJldHVybiB1bmljb2RlCisrI2RlZmluZSBD QVNFX0NPTUJJTkUoa2V5c3ltX3N1ZmZpeCwgY29tYmluZWRfdW5pY29kZSwgaXNvbGF0ZWRfdW5p Y29kZSkgXAorKyAgICAgICAgY2FzZSBJQlVTX0tFWV9kZWFkXyMja2V5c3ltX3N1ZmZpeDogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICBpZiAoY29tYmluaW5nKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAg ICAgICAgIHJldHVybiBjb21iaW5lZF91bmljb2RlOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgcmV0dXJuIGlzb2xh dGVkX3VuaWNvZGUKKysgICAgc3dpdGNoIChrZXlzeW0pIHsKKysgICAgQ0FTRSAoYSwgMHgwMzA0 MSk7CisrICAgIENBU0UgKEEsIDB4MDMwNDIpOworKyAgICBDQVNFIChpLCAweDAzMDQzKTsKKysg ICAgQ0FTRSAoSSwgMHgwMzA0NCk7CisrICAgIENBU0UgKHUsIDB4MDMwNDUpOworKyAgICBDQVNF IChVLCAweDAzMDQ2KTsKKysgICAgQ0FTRSAoZSwgMHgwMzA0Nyk7CisrICAgIENBU0UgKEUsIDB4 MDMwNDgpOworKyAgICBDQVNFIChvLCAweDAzMDQ5KTsKKysgICAgQ0FTRSAoTywgMHgwMzA0QSk7 CisrICAgIENBU0UgICAgICAgICAoYWJvdmVjb21tYSwgICAgICAgICAgICAgICAgICAgMHgwMzEz KTsKKysgICAgQ0FTRV9DT01CSU5FIChhYm92ZWRvdCwgICAgICAgICAgICAgICAgICAgICAweDAz MDcsIDB4MDJEOSk7CisrICAgIENBU0UgICAgICAgICAoYWJvdmVyZXZlcnNlZGNvbW1hLCAgICAg ICAgICAgMHgwMzE0KTsKKysgICAgQ0FTRV9DT01CSU5FIChhYm92ZXJpbmcsICAgICAgICAgICAg ICAgICAgICAweDAzMEEsIDB4MDJEQSk7CisrICAgIENBU0VfQ09NQklORSAoYWN1dGUsICAgICAg ICAgICAgICAgICAgICAgICAgMHgwMzAxLCAweDAwQjQpOworKyAgICBDQVNFICAgICAgICAgKGJl bG93YnJldmUsICAgICAgICAgICAgICAgICAgIDB4MDMyRSk7CisrICAgIENBU0VfQ09NQklORSAo YmVsb3djaXJjdW1mbGV4LCAgICAgICAgICAgICAgMHgwMzJELCAweEE3ODgpOworKyAgICBDQVNF X0NPTUJJTkUgKGJlbG93Y29tbWEsICAgICAgICAgICAgICAgICAgIDB4MDMyNiwgMHgwMDJDKTsK KysgICAgQ0FTRSAgICAgICAgIChiZWxvd2RpYWVyZXNpcywgICAgICAgICAgICAgICAweDAzMjQp OworKyAgICBDQVNFX0NPTUJJTkUgKGJlbG93ZG90LCAgICAgICAgICAgICAgICAgICAgIDB4MDMy MywgMHgwMDJFKTsKKysgICAgQ0FTRV9DT01CSU5FIChiZWxvd21hY3JvbiwgICAgICAgICAgICAg ICAgICAweDAzMzEsIDB4MDJDRCk7CisrICAgIENBU0VfQ09NQklORSAoYmVsb3dyaW5nLCAgICAg ICAgICAgICAgICAgICAgMHgwMzBBLCAweDAyRjMpOworKyAgICBDQVNFX0NPTUJJTkUgKGJlbG93 dGlsZGUsICAgICAgICAgICAgICAgICAgIDB4MDMzMCwgMHgwMkY3KTsKKysgICAgQ0FTRV9DT01C SU5FIChicmV2ZSwgICAgICAgICAgICAgICAgICAgICAgICAweDAzMDYsIDB4MDJEOCk7CisrICAg IENBU0VfQ09NQklORSAoY2FwaXRhbF9zY2h3YSwgICAgICAgICAgICAgICAgMHgwMThGLCAweDA0 RDgpOworKyAgICBDQVNFX0NPTUJJTkUgKGNhcm9uLCAgICAgICAgICAgICAgICAgICAgICAgIDB4 MDMwQywgMHgwMkM3KTsKKysgICAgQ0FTRV9DT01CSU5FIChjZWRpbGxhLCAgICAgICAgICAgICAg ICAgICAgICAweDAzMjcsIDB4MDBCOCk7CisrICAgIENBU0VfQ09NQklORSAoY2lyY3VtZmxleCwg ICAgICAgICAgICAgICAgICAgMHgwMzAyLCAweDAwNUUpOworKyAgICBDQVNFICAgICAgICAgKGN1 cnJlbmN5LCAgICAgICAgICAgICAgICAgICAgIDB4MDBBNCk7CisrICAgIC8vIElCVVNfS0VZX2Rl YWRfZGFzaWEgPT0gSUJVU19LRVlfZGVhZF9hYm92ZXJldmVyc2VkY29tbWEKKysgICAgQ0FTRV9D T01CSU5FIChkaWFlcmVzaXMsICAgICAgICAgICAgICAgICAgICAweDAzMDgsIDB4MDBBOCk7Cisr ICAgIENBU0VfQ09NQklORSAoZG91YmxlYWN1dGUsICAgICAgICAgICAgICAgICAgMHgwMzBCLCAw eDAyREQpOworKyAgICBDQVNFX0NPTUJJTkUgKGRvdWJsZWdyYXZlLCAgICAgICAgICAgICAgICAg IDB4MDMwRiwgMHgwMkY1KTsKKysgICAgQ0FTRV9DT01CSU5FIChncmF2ZSwgICAgICAgICAgICAg ICAgICAgICAgICAweDAzMDAsIDB4MDA2MCk7CisrICAgIENBU0UgICAgICAgICAoZ3JlZWssICAg ICAgICAgICAgICAgICAgICAgICAgMHgwM0JDKTsKKysgICAgQ0FTRSAgICAgICAgIChob29rLCAg ICAgICAgICAgICAgICAgICAgICAgICAweDAzMDkpOworKyAgICBDQVNFICAgICAgICAgKGhvcm4s ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMxQik7CisrICAgIENBU0UgICAgICAgICAoaW52 ZXJ0ZWRicmV2ZSwgICAgICAgICAgICAgICAgMHgwMzJGKTsKKysgICAgQ0FTRV9DT01CSU5FIChp b3RhLCAgICAgICAgICAgICAgICAgICAgICAgICAweDAzNDUsIDB4MDM3QSk7CisrICAgIENBU0Vf Q09NQklORSAobWFjcm9uLCAgICAgICAgICAgICAgICAgICAgICAgMHgwMzA0LCAweDAwQUYpOwor KyAgICBDQVNFX0NPTUJJTkUgKG9nb25laywgICAgICAgICAgICAgICAgICAgICAgIDB4MDMyOCwg MHgwMkRCKTsKKysgICAgLy8gSUJVU19LRVlfZGVhZF9wZXJpc3BvbWVuaSA9PSBJQlVTX0tFWV9k ZWFkX3RpbGRlCisrICAgIC8vIElCVVNfS0VZX2RlYWRfcHNpbGkgPT0gSUJVU19LRVlfZGVhZF9h Ym92ZWNvbW1hCisrICAgIENBU0VfQ09NQklORSAoc2VtaXZvaWNlZF9zb3VuZCwgICAgICAgICAg ICAgMHgzMDlBLCAweDMwOUMpOworKyAgICBDQVNFX0NPTUJJTkUgKHNtYWxsX3NjaHdhLCAgICAg ICAgICAgICAgICAgIDB4MUQ0QSwgMHgwNEQ5KTsKKysgICAgQ0FTRSAgICAgICAgIChzdHJva2Us ICAgICAgICAgICAgICAgICAgICAgICAweDAwMkYpOworKyAgICBDQVNFX0NPTUJJTkUgKHRpbGRl LCAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMwMywgMHgwMDdFKTsKKysgICAgQ0FTRV9DT01C SU5FICh2b2ljZWRfc291bmQsICAgICAgICAgICAgICAgICAweDMwOTksIDB4MzA5Qik7CisrICAg IGNhc2UgSUJVU19LRVlfTXVsdGlfa2V5OgorKyAgICAgICAgcmV0dXJuIDB4MjM4NDsKKysgICAg ZGVmYXVsdDo7CisrICAgIH0KKysgICAgcmV0dXJuIDB4MDsKKysjdW5kZWYgQ0FTRQorKyN1bmRl ZiBDQVNFX0NPTUJJTkUKKyt9CitkaWZmIC0tZ2l0IGEvc3JjL2lidXNlbmdpbmVzaW1wbGUuYyBi L3NyYy9pYnVzZW5naW5lc2ltcGxlLmMKK2luZGV4IDZkYmMzOWM3Li40NjQ0NjIwYiAxMDA2NDQK Ky0tLSBhL3NyYy9pYnVzZW5naW5lc2ltcGxlLmMKKysrKyBiL3NyYy9pYnVzZW5naW5lc2ltcGxl LmMKK0BAIC05MSwxMSArOTEsNiBAQCBzdHJ1Y3QgX0lCdXNFbmdpbmVTaW1wbGVQcml2YXRlIHsK KyAgICAgZ2Jvb2xlYW4gICAgICAgICAgICBsb29rdXBfdGFibGVfdmlzaWJsZTsKKyB9OworIAor LXN0cnVjdCBfSUJ1c0NvbXBvc2VUYWJsZUNvbXBhY3RQcml2YXRlCisteworLSAgICBjb25zdCBn dWludDMyICpkYXRhMjsKKy19OworLQorIC8qIEZyb20gdGhlIHZhbHVlcyBiZWxvdywgdGhlIHZh bHVlIDMwIG1lYW5zIHRoZSBudW1iZXIgb2YgZGlmZmVyZW50IGZpcnN0IGtleXN5bXMKKyAgKiB0 aGF0IGV4aXN0IGluIHRoZSBDb21wb3NlIGZpbGUgKGZyb20gWG9yZykuIFdoZW4gcnVubmluZyBj b21wb3NlLXBhcnNlLnB5IHdpdGhvdXQKKyAgKiBwYXJhbWV0ZXJzLCB5b3UgZ2V0IHRoZSBjb3Vu dCB0aGF0IHlvdSBjYW4gcHV0IGhlcmUuIE5lZWRlZCB3aGVuIHVwZGF0aW5nIHRoZQorQEAgLTEy NCw2ICsxMTksNyBAQCBjb25zdCBJQnVzQ29tcG9zZVRhYmxlQ29tcGFjdEV4IGlidXNfY29tcG9z ZV90YWJsZV9jb21wYWN0XzMyYml0ID0geworIH07CisgCisgZ3VpbnQgQ09NUE9TRV9CVUZGRVJf U0laRSA9IDIwOworK0dfTE9DS19ERUZJTkVfU1RBVElDIChnbG9iYWxfdGFibGVzKTsKKyBzdGF0 aWMgR1NMaXN0ICpnbG9iYWxfdGFibGVzOworIAorIC8qIGZ1bmN0aW9ucyBwcm90b3R5cGUgKi8K K0BAIC0yNjEsNzQgKzI1Nyw2IEBAIGlidXNfZW5naW5lX3NpbXBsZV9jb21taXRfY2hhciAoSUJ1 c0VuZ2luZVNpbXBsZSAqc2ltcGxlLAorICAgICAgICAgICAgIGlidXNfdGV4dF9uZXdfZnJvbV91 bmljaGFyIChjaCkpOworIH0KKyAKKy1zdGF0aWMgZ3VuaWNoYXIKKy1pYnVzX2tleXN5bV90b191 bmljb2RlIChndWludDE2ICBrZXlzeW0sCistICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xl YW4gY29tYmluaW5nKSB7CistI2RlZmluZSBDQVNFKGtleXN5bV9zdWZmaXgsIHVuaWNvZGUpICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgY2FzZSBJQlVTX0tF WV9kZWFkXyMja2V5c3ltX3N1ZmZpeDogcmV0dXJuIHVuaWNvZGUKKy0jZGVmaW5lIENBU0VfQ09N QklORShrZXlzeW1fc3VmZml4LCBjb21iaW5lZF91bmljb2RlLCBpc29sYXRlZF91bmljb2RlKSBc CistICAgICAgICBjYXNlIElCVVNfS0VZX2RlYWRfIyNrZXlzeW1fc3VmZml4OiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIGlmIChjb21iaW5pbmcpICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAg cmV0dXJuIGNvbWJpbmVkX3VuaWNvZGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CistICAgICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICByZXR1cm4gaXNvbGF0ZWRfdW5p Y29kZQorLSAgICBzd2l0Y2ggKGtleXN5bSkgeworLSAgICBDQVNFIChhLCAweDAzMDQxKTsKKy0g ICAgQ0FTRSAoQSwgMHgwMzA0Mik7CistICAgIENBU0UgKGksIDB4MDMwNDMpOworLSAgICBDQVNF IChJLCAweDAzMDQ0KTsKKy0gICAgQ0FTRSAodSwgMHgwMzA0NSk7CistICAgIENBU0UgKFUsIDB4 MDMwNDYpOworLSAgICBDQVNFIChlLCAweDAzMDQ3KTsKKy0gICAgQ0FTRSAoRSwgMHgwMzA0OCk7 CistICAgIENBU0UgKG8sIDB4MDMwNDkpOworLSAgICBDQVNFIChPLCAweDAzMDRBKTsKKy0gICAg Q0FTRSAgICAgICAgIChhYm92ZWNvbW1hLCAgICAgICAgICAgICAgICAgICAweDAzMTMpOworLSAg ICBDQVNFX0NPTUJJTkUgKGFib3ZlZG90LCAgICAgICAgICAgICAgICAgICAgIDB4MDMwNywgMHgw MkQ5KTsKKy0gICAgQ0FTRSAgICAgICAgIChhYm92ZXJldmVyc2VkY29tbWEsICAgICAgICAgICAw eDAzMTQpOworLSAgICBDQVNFX0NPTUJJTkUgKGFib3ZlcmluZywgICAgICAgICAgICAgICAgICAg IDB4MDMwQSwgMHgwMkRBKTsKKy0gICAgQ0FTRV9DT01CSU5FIChhY3V0ZSwgICAgICAgICAgICAg ICAgICAgICAgICAweDAzMDEsIDB4MDBCNCk7CistICAgIENBU0UgICAgICAgICAoYmVsb3dicmV2 ZSwgICAgICAgICAgICAgICAgICAgMHgwMzJFKTsKKy0gICAgQ0FTRV9DT01CSU5FIChiZWxvd2Np cmN1bWZsZXgsICAgICAgICAgICAgICAweDAzMkQsIDB4QTc4OCk7CistICAgIENBU0VfQ09NQklO RSAoYmVsb3djb21tYSwgICAgICAgICAgICAgICAgICAgMHgwMzI2LCAweDAwMkMpOworLSAgICBD QVNFICAgICAgICAgKGJlbG93ZGlhZXJlc2lzLCAgICAgICAgICAgICAgIDB4MDMyNCk7CistICAg IENBU0VfQ09NQklORSAoYmVsb3dkb3QsICAgICAgICAgICAgICAgICAgICAgMHgwMzIzLCAweDAw MkUpOworLSAgICBDQVNFX0NPTUJJTkUgKGJlbG93bWFjcm9uLCAgICAgICAgICAgICAgICAgIDB4 MDMzMSwgMHgwMkNEKTsKKy0gICAgQ0FTRV9DT01CSU5FIChiZWxvd3JpbmcsICAgICAgICAgICAg ICAgICAgICAweDAzMEEsIDB4MDJGMyk7CistICAgIENBU0VfQ09NQklORSAoYmVsb3d0aWxkZSwg ICAgICAgICAgICAgICAgICAgMHgwMzMwLCAweDAyRjcpOworLSAgICBDQVNFX0NPTUJJTkUgKGJy ZXZlLCAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMwNiwgMHgwMkQ4KTsKKy0gICAgQ0FTRV9D T01CSU5FIChjYXBpdGFsX3NjaHdhLCAgICAgICAgICAgICAgICAweDAxOEYsIDB4MDREOCk7Cist ICAgIENBU0VfQ09NQklORSAoY2Fyb24sICAgICAgICAgICAgICAgICAgICAgICAgMHgwMzBDLCAw eDAyQzcpOworLSAgICBDQVNFX0NPTUJJTkUgKGNlZGlsbGEsICAgICAgICAgICAgICAgICAgICAg IDB4MDMyNywgMHgwMEI4KTsKKy0gICAgQ0FTRV9DT01CSU5FIChjaXJjdW1mbGV4LCAgICAgICAg ICAgICAgICAgICAweDAzMDIsIDB4MDA1RSk7CistICAgIENBU0UgICAgICAgICAoY3VycmVuY3ks ICAgICAgICAgICAgICAgICAgICAgMHgwMEE0KTsKKy0gICAgLy8gSUJVU19LRVlfZGVhZF9kYXNp YSA9PSBJQlVTX0tFWV9kZWFkX2Fib3ZlcmV2ZXJzZWRjb21tYQorLSAgICBDQVNFX0NPTUJJTkUg KGRpYWVyZXNpcywgICAgICAgICAgICAgICAgICAgIDB4MDMwOCwgMHgwMEE4KTsKKy0gICAgQ0FT RV9DT01CSU5FIChkb3VibGVhY3V0ZSwgICAgICAgICAgICAgICAgICAweDAzMEIsIDB4MDJERCk7 CistICAgIENBU0VfQ09NQklORSAoZG91YmxlZ3JhdmUsICAgICAgICAgICAgICAgICAgMHgwMzBG LCAweDAyRjUpOworLSAgICBDQVNFX0NPTUJJTkUgKGdyYXZlLCAgICAgICAgICAgICAgICAgICAg ICAgIDB4MDMwMCwgMHgwMDYwKTsKKy0gICAgQ0FTRSAgICAgICAgIChncmVlaywgICAgICAgICAg ICAgICAgICAgICAgICAweDAzQkMpOworLSAgICBDQVNFICAgICAgICAgKGhvb2ssICAgICAgICAg ICAgICAgICAgICAgICAgIDB4MDMwOSk7CistICAgIENBU0UgICAgICAgICAoaG9ybiwgICAgICAg ICAgICAgICAgICAgICAgICAgMHgwMzFCKTsKKy0gICAgQ0FTRSAgICAgICAgIChpbnZlcnRlZGJy ZXZlLCAgICAgICAgICAgICAgICAweDAzMkYpOworLSAgICBDQVNFX0NPTUJJTkUgKGlvdGEsICAg ICAgICAgICAgICAgICAgICAgICAgIDB4MDM0NSwgMHgwMzdBKTsKKy0gICAgQ0FTRV9DT01CSU5F IChtYWNyb24sICAgICAgICAgICAgICAgICAgICAgICAweDAzMDQsIDB4MDBBRik7CistICAgIENB U0VfQ09NQklORSAob2dvbmVrLCAgICAgICAgICAgICAgICAgICAgICAgMHgwMzI4LCAweDAyREIp OworLSAgICAvLyBJQlVTX0tFWV9kZWFkX3BlcmlzcG9tZW5pID09IElCVVNfS0VZX2RlYWRfdGls ZGUKKy0gICAgLy8gSUJVU19LRVlfZGVhZF9wc2lsaSA9PSBJQlVTX0tFWV9kZWFkX2Fib3ZlY29t bWEKKy0gICAgQ0FTRV9DT01CSU5FIChzZW1pdm9pY2VkX3NvdW5kLCAgICAgICAgICAgICAweDMw OUEsIDB4MzA5Qyk7CistICAgIENBU0VfQ09NQklORSAoc21hbGxfc2Nod2EsICAgICAgICAgICAg ICAgICAgMHgxRDRBLCAweDA0RDkpOworLSAgICBDQVNFICAgICAgICAgKHN0cm9rZSwgICAgICAg ICAgICAgICAgICAgICAgIDB4MDAyRik7CistICAgIENBU0VfQ09NQklORSAodGlsZGUsICAgICAg ICAgICAgICAgICAgICAgICAgMHgwMzAzLCAweDAwN0UpOworLSAgICBDQVNFX0NPTUJJTkUgKHZv aWNlZF9zb3VuZCwgICAgICAgICAgICAgICAgIDB4MzA5OSwgMHgzMDlCKTsKKy0gICAgY2FzZSBJ QlVTX0tFWV9NdWx0aV9rZXk6CistICAgICAgICByZXR1cm4gMHgyMzg0OworLSAgICBkZWZhdWx0 OjsKKy0gICAgfQorLSAgICByZXR1cm4gMHgwOworLSN1bmRlZiBDQVNFCistI3VuZGVmIENBU0Vf Q09NQklORQorLX0KKyAKKyBzdGF0aWMgdm9pZAorIGlidXNfZW5naW5lX3NpbXBsZV9jb21taXRf c3RyIChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCitAQCAtNjA3LDQxNSArNTM1LDYgQEAgY2hl Y2tfZW1vamlfdGFibGUgKElCdXNFbmdpbmVTaW1wbGUgICAgICAgKnNpbXBsZSwKKyAgICAgcmV0 dXJuIEZBTFNFOworIH0KKyAKKy1zdGF0aWMgaW50CistY29tcGFyZV9zZXFfaW5kZXggKGNvbnN0 IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAqdmFsdWUpCisteworLSAgICBjb25zdCBndWludDE2ICpr ZXlzeW1zID0ga2V5OworLSAgICBjb25zdCBndWludDE2ICpzZXEgPSB2YWx1ZTsKKy0KKy0gICAg aWYgKGtleXN5bXNbMF0gPCBzZXFbMF0pCistICAgICAgICByZXR1cm4gLTE7CistICAgIGVsc2Ug aWYgKGtleXN5bXNbMF0gPiBzZXFbMF0pCistICAgICAgICByZXR1cm4gMTsKKy0gICAgcmV0dXJu IDA7CistfQorLQorLXN0YXRpYyBpbnQKKy1jb21wYXJlX3NlcSAoY29uc3Qgdm9pZCAqa2V5LCBj b25zdCB2b2lkICp2YWx1ZSkKKy17CistICAgIGludCBpID0gMDsKKy0gICAgY29uc3QgZ3VpbnQx NiAqa2V5c3ltcyA9IGtleTsKKy0gICAgY29uc3QgZ3VpbnQxNiAqc2VxID0gdmFsdWU7CistCist ICAgIHdoaWxlIChrZXlzeW1zW2ldKSB7CistICAgICAgICBpZiAoa2V5c3ltc1tpXSA8IHNlcVtp XSkKKy0gICAgICAgICAgICByZXR1cm4gLTE7CistICAgICAgICBlbHNlIGlmIChrZXlzeW1zW2ld ID4gc2VxW2ldKQorLSAgICAgICAgICAgIHJldHVybiAxOworLQorLSAgICAgICAgaSsrOworLSAg ICB9CistCistICAgIHJldHVybiAwOworLX0KKy0KKy0KKy1zdGF0aWMgZ2Jvb2xlYW4KKy1jaGVj a190YWJsZSAoSUJ1c0VuZ2luZVNpbXBsZSAgICAgICAgICpzaW1wbGUsCistICAgICAgICAgICAg IGNvbnN0IElCdXNDb21wb3NlVGFibGVFeCAqdGFibGUsCistICAgICAgICAgICAgIGdpbnQgICAg ICAgICAgICAgICAgICAgICAgbl9jb21wb3NlLAorLSAgICAgICAgICAgICBnYm9vbGVhbiAgICAg ICAgICAgICAgICAgIGlzXzMyYml0KQorLXsKKy0gICAgSUJ1c0VuZ2luZVNpbXBsZVByaXZhdGUg KnByaXYgPSBzaW1wbGUtPnByaXY7CistICAgIGdpbnQgcm93X3N0cmlkZSA9IHRhYmxlLT5tYXhf c2VxX2xlbiArIDI7CistICAgIGd1aW50MTYgKmRhdGFfZmlyc3Q7CistICAgIGludCBuX3NlcXM7 CistICAgIGd1aW50MTYgKnNlcTsKKy0KKy0gICAgZ19hc3NlcnQgKElCVVNfSVNfRU5HSU5FX1NJ TVBMRSAoc2ltcGxlKSk7CistICAgIENIRUNLX0NPTVBPU0VfQlVGRkVSX0xFTkdUSCAobl9jb21w b3NlKTsKKy0KKy0gICAgaWYgKG5fY29tcG9zZSA+IHRhYmxlLT5tYXhfc2VxX2xlbikKKy0gICAg ICAgIHJldHVybiBGQUxTRTsKKy0KKy0gICAgaWYgKGlzXzMyYml0KSB7CistICAgICAgICBpZiAo IXRhYmxlLT5wcml2KQorLSAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKy0gICAgICAgIGRhdGFf Zmlyc3QgPSB0YWJsZS0+cHJpdi0+ZGF0YV9maXJzdDsKKy0gICAgICAgIG5fc2VxcyA9IHRhYmxl LT5wcml2LT5maXJzdF9uX3NlcXM7CistICAgIH0gZWxzZSB7CistICAgICAgICBkYXRhX2ZpcnN0 ID0gdGFibGUtPmRhdGE7CistICAgICAgICBuX3NlcXMgPSB0YWJsZS0+bl9zZXFzOworLSAgICB9 CistICAgIHNlcSA9IGJzZWFyY2ggKHByaXYtPmNvbXBvc2VfYnVmZmVyLAorLSAgICAgICAgICAg ICAgICAgICBkYXRhX2ZpcnN0LCBuX3NlcXMsCistICAgICAgICAgICAgICAgICAgIHNpemVvZiAo Z3VpbnQxNikgKiByb3dfc3RyaWRlLAorLSAgICAgICAgICAgICAgICAgICBjb21wYXJlX3NlcSk7 CistCistICAgIGlmIChzZXEgPT0gTlVMTCkKKy0gICAgICAgIHJldHVybiBGQUxTRTsKKy0KKy0g ICAgZ3VpbnQxNiAqcHJldl9zZXE7CistCistICAgIHByaXYtPnRlbnRhdGl2ZV9tYXRjaCA9IDA7 CistICAgIHByaXYtPnRlbnRhdGl2ZV9tYXRjaF9sZW4gPSAwOworLSAgICAvKiBCYWNrIHVwIHRv IHRoZSBmaXJzdCBzZXF1ZW5jZSB0aGF0IG1hdGNoZXMgdG8gbWFrZSBzdXJlCistICAgICAqIHdl IGZpbmQgdGhlIGV4YWN0IG1hdGNoIGlmIHRoZWlyIGlzIG9uZS4KKy0gICAgICovCistICAgIHdo aWxlIChzZXEgPiBkYXRhX2ZpcnN0KSB7CistICAgICAgICBwcmV2X3NlcSA9IHNlcSAtIHJvd19z dHJpZGU7CistICAgICAgICBpZiAoY29tcGFyZV9zZXEgKHByaXYtPmNvbXBvc2VfYnVmZmVyLCBw cmV2X3NlcSkgIT0gMCkgeworLSAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgfQorLSAgICAg ICAgc2VxID0gcHJldl9zZXE7CistICAgIH0KKy0KKy0gICAgLyogY29tcGxldGUgc2VxdWVuY2Ug Ki8KKy0gICAgaWYgKG5fY29tcG9zZSA9PSB0YWJsZS0+bWF4X3NlcV9sZW4gfHwgc2VxW25fY29t cG9zZV0gPT0gMCkgeworLSAgICAgICAgZ3VpbnQxNiAqbmV4dF9zZXE7CistICAgICAgICBndW5p Y2hhciB2YWx1ZSA9IDA7CistICAgICAgICBpbnQgbnVtID0gMDsKKy0gICAgICAgIGludCBpbmRl eCA9IDA7CistICAgICAgICBnY2hhciAqb3V0cHV0X3N0ciA9IE5VTEw7CistICAgICAgICBHRXJy b3IgKmVycm9yID0gTlVMTDsKKy0KKy0gICAgICAgIGlmIChpc18zMmJpdCkgeworLSAgICAgICAg ICAgIG51bSA9IHNlcVt0YWJsZS0+bWF4X3NlcV9sZW5dOworLSAgICAgICAgICAgIGluZGV4ID0g c2VxW3RhYmxlLT5tYXhfc2VxX2xlbiArIDFdOworLSAgICAgICAgICAgIHZhbHVlID0gIHRhYmxl LT5wcml2LT5kYXRhX3NlY29uZFtpbmRleF07CistICAgICAgICB9IGVsc2UgeworLSAgICAgICAg ICAgIHZhbHVlID0gc2VxW3RhYmxlLT5tYXhfc2VxX2xlbl07CistICAgICAgICB9CistCistICAg ICAgICAvKiBXZSBmb3VuZCBhIHRlbnRhdGl2ZSBtYXRjaC4gU2VlIGlmIHRoZXJlIGFyZSBhbnkg bG9uZ2VyCistICAgICAgICAgKiBzZXF1ZW5jZXMgY29udGFpbmluZyB0aGlzIHN1YnNlcXVlbmNl CistICAgICAgICAgKi8KKy0gICAgICAgIG5leHRfc2VxID0gc2VxICsgcm93X3N0cmlkZTsKKy0g ICAgICAgIGlmIChuZXh0X3NlcSA8IGRhdGFfZmlyc3QgKyByb3dfc3RyaWRlICogbl9zZXFzKSB7 CistICAgICAgICAgICAgaWYgKGNvbXBhcmVfc2VxIChwcml2LT5jb21wb3NlX2J1ZmZlciwgbmV4 dF9zZXEpID09IDApIHsKKy0gICAgICAgICAgICAgICAgcHJpdi0+dGVudGF0aXZlX21hdGNoID0g dmFsdWU7CistICAgICAgICAgICAgICAgIHByaXYtPnRlbnRhdGl2ZV9tYXRjaF9sZW4gPSBuX2Nv bXBvc2U7CistCistICAgICAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVfcHJl ZWRpdF90ZXh0IChzaW1wbGUpOworLQorLSAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsKKy0g ICAgICAgICAgICB9CistICAgICAgICB9CistCistICAgICAgICBpZiAoaXNfMzJiaXQpIHsKKy0g ICAgICAgICAgICBvdXRwdXRfc3RyID0gZ191Y3M0X3RvX3V0ZjggKHRhYmxlLT5wcml2LT5kYXRh X3NlY29uZCArIGluZGV4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbnVtLCBOVUxMLCBOVUxMLCAmZXJyb3IpOworLSAgICAgICAgICAgIGlmIChvdXRwdXRfc3Ry KSB7CistICAgICAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV9jb21taXRfc3RyKHNpbXBs ZSwgb3V0cHV0X3N0cik7CistICAgICAgICAgICAgICAgIGdfZnJlZSAob3V0cHV0X3N0cik7Cist ICAgICAgICAgICAgfSBlbHNlIHsKKy0gICAgICAgICAgICAgICAgZ193YXJuaW5nICgiRmFpbGVk IHRvIG91dHB1dCBtdWx0aXBsZSBjaGFyYWN0ZXJzOiAlcyIsCistICAgICAgICAgICAgICAgICAg ICAgICAgICAgZXJyb3ItPm1lc3NhZ2UpOworLSAgICAgICAgICAgICAgICBnX2Vycm9yX2ZyZWUg KGVycm9yKTsKKy0gICAgICAgICAgICB9CistICAgICAgICB9IGVsc2UgeworLSAgICAgICAgICAg IGlidXNfZW5naW5lX3NpbXBsZV9jb21taXRfY2hhciAoc2ltcGxlLCB2YWx1ZSk7CistICAgICAg ICB9CistICAgICAgICBwcml2LT5jb21wb3NlX2J1ZmZlclswXSA9IDA7CistICAgIH0KKy0gICAg aWJ1c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQgKHNpbXBsZSk7CistICAgIHJl dHVybiBUUlVFOworLX0KKy0KKy1nYm9vbGVhbgorLWlidXNfY2hlY2tfY29tcGFjdF90YWJsZSAo Y29uc3QgSUJ1c0NvbXBvc2VUYWJsZUNvbXBhY3RFeCAqdGFibGUsCistICAgICAgICAgICAgICAg ICAgICAgICAgICBndWludDE2ICAgICAgICAgICAgICAgICAgICAgICAgICpjb21wb3NlX2J1ZmZl ciwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG5fY29tcG9zZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAg ICAgICAgICAgICAgICAgICAgICAgKmNvbXBvc2VfZmluaXNoLAorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgZ3VuaWNoYXIgICAgICAgICAgICAgICAgICAgICAgICoqb3V0cHV0X2NoYXJzKQor LXsKKy0gICAgZ2ludCByb3dfc3RyaWRlOworLSAgICBndWludDE2ICpzZXFfaW5kZXg7CistICAg IGd1aW50MTYgKnNlcTsKKy0gICAgZ2ludCBpOworLQorLSAgICBpZiAoY29tcG9zZV9maW5pc2gp CistICAgICAgICAqY29tcG9zZV9maW5pc2ggPSBGQUxTRTsKKy0gICAgaWYgKG91dHB1dF9jaGFy cykKKy0gICAgICAgICpvdXRwdXRfY2hhcnMgPSBOVUxMOworLQorLSAgICBDSEVDS19DT01QT1NF X0JVRkZFUl9MRU5HVEggKG5fY29tcG9zZSk7CistCistICAgIC8qIFdpbGwgbmV2ZXIgbWF0Y2gs IGlmIHRoZSBzZXF1ZW5jZSBpbiB0aGUgY29tcG9zZSBidWZmZXIgaXMgbG9uZ2VyCistICAgICAq IHRoYW4gdGhlIHNlcXVlbmNlcyBpbiB0aGUgdGFibGUuICBGdXJ0aGVyLCBjb21wYXJlX3NlcSAo a2V5LCB2YWwpCistICAgICAqIHdpbGwgb3ZlcnJ1biB2YWwgaWYga2V5IGlzIGxvbmdlciB0aGFu IHZhbC4gKi8KKy0gICAgaWYgKG5fY29tcG9zZSA+IHRhYmxlLT5tYXhfc2VxX2xlbikKKy0gICAg ICAgIHJldHVybiBGQUxTRTsKKy0KKy0gICAgLy8gZ19kZWJ1ZyAoImNoZWNrX2NvbXBhY3RfdGFi bGUobl9jb21wb3NlPSVkKSBbJTA0eCwgJTA0eCwgJTA0eCwgJTA0eF0iLAorLSAgICAvLyAgICAg ICAgICBuX2NvbXBvc2UsCistICAgIC8vICAgICAgICAgIGNvbXBvc2VfYnVmZmVyWzBdLAorLSAg ICAvLyAgICAgICAgICBjb21wb3NlX2J1ZmZlclsxXSwKKy0gICAgLy8gICAgICAgICAgY29tcG9z ZV9idWZmZXJbMl0sCistICAgIC8vICAgICAgICAgIGNvbXBvc2VfYnVmZmVyWzNdKTsKKy0KKy0g ICAgc2VxX2luZGV4ID0gYnNlYXJjaCAoY29tcG9zZV9idWZmZXIsCistICAgICAgICAgICAgICAg ICAgICAgICAgIHRhYmxlLT5kYXRhLAorLSAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS0+ bl9pbmRleF9zaXplLAorLSAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YgKGd1aW50MTYp ICogIHRhYmxlLT5uX2luZGV4X3N0cmlkZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgY29t cGFyZV9zZXFfaW5kZXgpOworLQorLSAgICBpZiAoc2VxX2luZGV4ID09IE5VTEwpIHsKKy0gICAg ICAgIC8vIGdfZGVidWcgKCJjb21wYWN0OiBub1xuIik7CistICAgICAgICByZXR1cm4gRkFMU0U7 CistICAgIH0KKy0KKy0gICAgaWYgKG5fY29tcG9zZSA9PSAxKSB7CistICAgICAgICAvLyBnX2Rl YnVnICgiY29tcGFjdDogeWVzXG4iKTsKKy0gICAgICAgIHJldHVybiBUUlVFOworLSAgICB9Cist CistICAgIC8vIGdfZGVidWcgKCJjb21wYWN0OiAlMDR4ICIsICpzZXFfaW5kZXgpOworLSAgICBz ZXEgPSBOVUxMOworLQorLSAgICBpZiAodGFibGUtPnByaXYpIHsKKy0gICAgICAgIGZvciAoaSA9 IG5fY29tcG9zZSAtIDE7IGkgPCB0YWJsZS0+bWF4X3NlcV9sZW47IGkrKykgeworLSAgICAgICAg ICAgIHJvd19zdHJpZGUgPSBpICsgMjsKKy0KKy0gICAgICAgICAgICBpZiAoc2VxX2luZGV4W2kg KyAxXSAtIHNlcV9pbmRleFtpXSA+IDApIHsKKy0gICAgICAgICAgICAgICAgc2VxID0gYnNlYXJj aCAoY29tcG9zZV9idWZmZXIgKyAxLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 YWJsZS0+ZGF0YSArIHNlcV9pbmRleFtpXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHNlcV9pbmRleFtpICsgMV0gLSBzZXFfaW5kZXhbaV0pIC8gcm93X3N0cmlkZSwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mIChndWludDE2KSAqIHJvd19zdHJpZGUs CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhcmVfc2VxKTsKKy0gICAgICAg ICAgICAgICAgaWYgKHNlcSkgeworLSAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gbl9jb21w b3NlIC0gMSkKKy0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKy0gICAgICAgICAgICAg ICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsKKy0gICAg ICAgICAgICAgICAgfQorLSAgICAgICAgICAgIH0KKy0gICAgICAgIH0KKy0gICAgICAgIGlmICgh c2VxKSB7CistICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworLSAgICAgICAgfSBlbHNlIHsKKy0g ICAgICAgICAgICBpbnQgaW5kZXggPSBzZXFbcm93X3N0cmlkZSAtIDJdOworLSAgICAgICAgICAg IGludCBsZW5ndGggPSBzZXFbcm93X3N0cmlkZSAtIDFdOworLSAgICAgICAgICAgIGludCBqOwor LSAgICAgICAgICAgIGlmIChjb21wb3NlX2ZpbmlzaCkKKy0gICAgICAgICAgICAgICAgKmNvbXBv c2VfZmluaXNoID0gVFJVRTsKKy0gICAgICAgICAgICBpZiAob3V0cHV0X2NoYXJzKSB7CistICAg ICAgICAgICAgICAgICpvdXRwdXRfY2hhcnMgPSBnX25ldyAoZ3VuaWNoYXIsIGxlbmd0aCArIDEp OworLSAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspCistICAgICAg ICAgICAgICAgICAgICAoKm91dHB1dF9jaGFycylbal0gPSB0YWJsZS0+cHJpdi0+ZGF0YTJbaW5k ZXggKyBqXTsKKy0gICAgICAgICAgICAgICAgKCpvdXRwdXRfY2hhcnMpW2xlbmd0aF0gPSAwOwor LSAgICAgICAgICAgIH0KKy0KKy0gICAgICAgICAgICAvLyBnX2RlYnVnICgiVSslMDRYXG4iLCB2 YWx1ZSk7CistICAgICAgICAgICAgcmV0dXJuIFRSVUU7CistICAgICAgICB9CistICAgIH0gZWxz ZSB7CistICAgICAgICBmb3IgKGkgPSBuX2NvbXBvc2UgLSAxOyBpIDwgdGFibGUtPm1heF9zZXFf bGVuOyBpKyspIHsKKy0gICAgICAgICAgICByb3dfc3RyaWRlID0gaSArIDE7CistCistICAgICAg ICAgICAgaWYgKHNlcV9pbmRleFtpICsgMV0gLSBzZXFfaW5kZXhbaV0gPiAwKSB7CistICAgICAg ICAgICAgICAgIHNlcSA9IGJzZWFyY2ggKGNvbXBvc2VfYnVmZmVyICsgMSwKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGFibGUtPmRhdGEgKyBzZXFfaW5kZXhbaV0sCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChzZXFfaW5kZXhbaSArIDFdIC0gc2VxX2luZGV4W2ld KSAvIHJvd19zdHJpZGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAo Z3VpbnQxNikgKiByb3dfc3RyaWRlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b21wYXJlX3NlcSk7CistCistICAgICAgICAgICAgICAgIGlmIChzZXEpIHsKKy0gICAgICAgICAg ICAgICAgICAgIGlmIChpID09IG5fY29tcG9zZSAtIDEpCistICAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7CistICAgICAgICAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIFRSVUU7CistICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICB9Cist ICAgICAgICB9CistICAgICAgICBpZiAoIXNlcSkgeworLSAgICAgICAgICAgIHJldHVybiBGQUxT RTsKKy0gICAgICAgIH0gZWxzZSB7CistICAgICAgICAgICAgaWYgKGNvbXBvc2VfZmluaXNoKQor LSAgICAgICAgICAgICAgICAqY29tcG9zZV9maW5pc2ggPSBUUlVFOworLSAgICAgICAgICAgIGlm IChvdXRwdXRfY2hhcnMpIHsKKy0gICAgICAgICAgICAgICAgKm91dHB1dF9jaGFycyA9IGdfbmV3 IChndW5pY2hhciwgMik7CistICAgICAgICAgICAgICAgICgqb3V0cHV0X2NoYXJzKVswXSA9IHNl cVtyb3dfc3RyaWRlIC0gMV07CistICAgICAgICAgICAgICAgICgqb3V0cHV0X2NoYXJzKVsxXSA9 IDA7CistICAgICAgICAgICAgfQorLQorLSAgICAgICAgICAgIC8vIGdfZGVidWcgKCJVKyUwNFhc biIsIHZhbHVlKTsKKy0gICAgICAgICAgICByZXR1cm4gVFJVRTsKKy0gICAgICAgIH0KKy0gICAg fQorLQorLSAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKKy19CistCistCistLyogQ2hlY2tz IGlmIGEga2V5c3ltIGlzIGEgZGVhZCBrZXkuIERlYWQga2V5IGtleXN5bSB2YWx1ZXMgYXJlIGRl ZmluZWQgaW4KKy0gKiAuLi9nZGsvZ2Rra2V5c3ltcy5oIGFuZCB0aGUgZmlyc3QgaXMgR0RLX0tF WV9kZWFkX2dyYXZlLiBBcyBYLk9yZyBpcyB1cGRhdGVkLAorLSAqIG1vcmUgZGVhZCBrZXlzIGFy ZSBhZGRlZCBhbmQgd2UgbmVlZCB0byB1cGRhdGUgdGhlIHVwcGVyIGxpbWl0LgorLSAqIEN1cnJl bnRseSwgdGhlIHVwcGVyIGxpbWl0IGlzIEdES19LRVlfZGVhZF9kYXNpYSsxLiBUaGUgKzEgaGFz IHRvIGRvIHdpdGgKKy0gKiBhIHRlbXBvcmFyeSBpc3N1ZSBpbiB0aGUgWC5PcmcgaGVhZGVyIGZp bGVzLgorLSAqIEluIGZ1dHVyZSB2ZXJzaW9ucyBpdCB3aWxsIGJlIGp1c3QgdGhlIGtleXN5bSAo bm8gKzEpLgorLSAqLworLSNkZWZpbmUgSVNfREVBRF9LRVkoaykgXAorLSAgICAgICgoaykgPj0g SUJVU19LRVlfZGVhZF9ncmF2ZSAmJiAoaykgPD0gKElCVVNfS0VZX2RlYWRfZGFzaWEgKyAxKSkK Ky0KKy0vKiBUaGlzIGZ1bmN0aW9uIHJlY2VpdmVzIGEgc2VxdWVuY2Ugb2YgVW5pY29kZSBjaGFy YWN0ZXJzIGFuZCB0cmllcyB0bworLSAqIG5vcm1hbGl6ZSBpdCAoTkZDKS4gV2UgY2hlY2sgZm9y IHRoZSBjYXNlIHRoZSB0aGUgcmVzdWx0aW5nIHN0cmluZworLSAqIGhhcyBsZW5ndGggMSAoc2lu Z2xlIGNoYXJhY3RlcikuCistICogTkZDIG5vcm1hbGlzYXRpb24gbm9ybWFsbHkgcmVhcnJhbmdl cyBkaWFjcml0aWMgbWFya3MsIHVubGVzcyB0aGVzZQorLSAqIGJlbG9uZyB0byB0aGUgc2FtZSBD YW5vbmljYWwgQ29tYmluaW5nIENsYXNzLgorLSAqIElmIHRoZXkgYmVsb25nIHRvIHRoZSBzYW1l IGNhbm9uaWNhbCBjb21iaW5pbmcgY2xhc3MsIHdlIHByb2R1Y2UgYWxsCistICogcGVybXV0YXRp b25zIG9mIHRoZSBkaWFjcml0aWMgbWFya3MsIHRoZW4gYXR0ZW1wdCB0byBub3JtYWxpemUuCist ICovCistc3RhdGljIGdib29sZWFuCistY2hlY2tfbm9ybWFsaXplX25mYyAoZ3VuaWNoYXIqIGNv bWJpbmF0aW9uX2J1ZmZlciwgZ2ludCBuX2NvbXBvc2UpCisteworLSAgICBndW5pY2hhciBjb21i aW5hdGlvbl9idWZmZXJfdGVtcFtJQlVTX01BWF9DT01QT1NFX0xFTl07CistICAgIGdjaGFyICpj b21iaW5hdGlvbl91dGY4X3RlbXAgPSBOVUxMOworLSAgICBnY2hhciAqbmZjX3RlbXAgPSBOVUxM OworLSAgICBnaW50IG5fY29tYmluYXRpb25zOworLSAgICBndW5pY2hhciB0ZW1wX3N3YXA7Cist ICAgIGdpbnQgaTsKKy0KKy0gICAgbl9jb21iaW5hdGlvbnMgPSAxOworLQorLSAgICBDSEVDS19D T01QT1NFX0JVRkZFUl9MRU5HVEggKG5fY29tcG9zZSk7CistCistICAgIGZvciAoaSA9IDE7IGkg PCBuX2NvbXBvc2U7IGkrKyApCistICAgICAgICBuX2NvbWJpbmF0aW9ucyAqPSBpOworLQorLSAg ICAvKiBYb3JnIHJldXNlcyBkZWFkX3RpbGRlIGZvciB0aGUgcGVyaXNwb21lbmkgZGlhY3JpdGlj IG1hcmsuCistICAgICAqIFdlIGNoZWNrIGlmIGJhc2UgY2hhcmFjdGVyIGJlbG9uZ3MgdG8gR3Jl ZWsgVW5pY29kZSBibG9jaywKKy0gICAgICogYW5kIGlmIHNvLCB3ZSByZXBsYWNlIHRpbGRlIHdp dGggcGVyaXNwb21lbmkuICovCistICAgIGlmIChjb21iaW5hdGlvbl9idWZmZXJbMF0gPj0gMHgz OTAgJiYgY29tYmluYXRpb25fYnVmZmVyWzBdIDw9IDB4M0ZGKSB7CistICAgICAgICBmb3IgKGkg PSAxOyBpIDwgbl9jb21wb3NlOyBpKysgKQorLSAgICAgICAgICAgIGlmIChjb21iaW5hdGlvbl9i dWZmZXJbaV0gPT0gMHgzMDMpCistICAgICAgICAgICAgICAgIGNvbWJpbmF0aW9uX2J1ZmZlcltp XSA9IDB4MzQyOworLSAgICB9CistCistICAgIG1lbWNweSAoY29tYmluYXRpb25fYnVmZmVyX3Rl bXAsCistICAgICAgICAgICAgY29tYmluYXRpb25fYnVmZmVyLAorLSAgICAgICAgICAgIElCVVNf TUFYX0NPTVBPU0VfTEVOICogc2l6ZW9mIChndW5pY2hhcikgKTsKKy0KKy0gICAgZm9yIChpID0g MDsgaSA8IG5fY29tYmluYXRpb25zOyBpKysgKSB7CistICAgICAgICBnX3VuaWNvZGVfY2Fub25p Y2FsX29yZGVyaW5nIChjb21iaW5hdGlvbl9idWZmZXJfdGVtcCwgbl9jb21wb3NlKTsKKy0gICAg ICAgIGNvbWJpbmF0aW9uX3V0ZjhfdGVtcCA9IGdfdWNzNF90b191dGY4IChjb21iaW5hdGlvbl9i dWZmZXJfdGVtcCwgLTEsIE5VTEwsIE5VTEwsIE5VTEwpOworLSAgICAgICAgbmZjX3RlbXAgPSBn X3V0Zjhfbm9ybWFsaXplIChjb21iaW5hdGlvbl91dGY4X3RlbXAsIC0xLCBHX05PUk1BTElaRV9O RkMpOworLQorLSAgICAgICAgaWYgKGdfdXRmOF9zdHJsZW4gKG5mY190ZW1wLCAtMSkgPT0gMSkg eworLSAgICAgICAgICAgIG1lbWNweSAoY29tYmluYXRpb25fYnVmZmVyLAorLSAgICAgICAgICAg ICAgICAgICAgY29tYmluYXRpb25fYnVmZmVyX3RlbXAsCistICAgICAgICAgICAgICAgICAgICBJ QlVTX01BWF9DT01QT1NFX0xFTiAqIHNpemVvZiAoZ3VuaWNoYXIpICk7CistCistICAgICAgICAg ICAgZ19mcmVlIChjb21iaW5hdGlvbl91dGY4X3RlbXApOworLSAgICAgICAgICAgIGdfZnJlZSAo bmZjX3RlbXApOworLQorLSAgICAgICAgICAgIHJldHVybiBUUlVFOworLSAgICAgICAgfQorLQor LSAgICAgICAgZ19mcmVlIChjb21iaW5hdGlvbl91dGY4X3RlbXApOworLSAgICAgICAgZ19mcmVl IChuZmNfdGVtcCk7CistCistICAgICAgICBpZiAobl9jb21wb3NlID4gMikgeworLSAgICAgICAg ICAgIGdpbnQgaiA9IGkgJSAobl9jb21wb3NlIC0gMSkgKyAxOworLSAgICAgICAgICAgIGdpbnQg ayA9IChpKzEpICUgKG5fY29tcG9zZSAtIDEpICsgMTsKKy0gICAgICAgICAgICBpZiAoaiA+PSBJ QlVTX01BWF9DT01QT1NFX0xFTikgeworLSAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKCJqID49 IElCVVNfTUFYX0NPTVBPU0VfTEVOIGZvciAiIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAiY29tYmluYXRpb25fYnVmZmVyX3RlbXAiKTsKKy0gICAgICAgICAgICAgICAgYnJlYWs7Cist ICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGlmIChrID49IElCVVNfTUFYX0NPTVBPU0VfTEVO KSB7CistICAgICAgICAgICAgICAgIGdfd2FybmluZyAoImsgPj0gSUJVU19NQVhfQ09NUE9TRV9M RU4gZm9yICIgXAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21iaW5hdGlvbl9idWZm ZXJfdGVtcCIpOworLSAgICAgICAgICAgICAgICBicmVhazsKKy0gICAgICAgICAgICB9CistICAg ICAgICAgICAgdGVtcF9zd2FwID0gY29tYmluYXRpb25fYnVmZmVyX3RlbXBbal07CistICAgICAg ICAgICAgY29tYmluYXRpb25fYnVmZmVyX3RlbXBbal0gPSBjb21iaW5hdGlvbl9idWZmZXJfdGVt cFtrXTsKKy0gICAgICAgICAgICBjb21iaW5hdGlvbl9idWZmZXJfdGVtcFtrXSA9IHRlbXBfc3dh cDsKKy0gICAgICAgIH0KKy0gICAgICAgIGVsc2UKKy0gICAgICAgICAgICBicmVhazsKKy0gICAg fQorLQorLSAgICByZXR1cm4gRkFMU0U7CistfQorLQorLWdib29sZWFuCistaWJ1c19jaGVja19h bGdvcml0aG1pY2FsbHkgKGNvbnN0IGd1aW50MTYgKmNvbXBvc2VfYnVmZmVyLAorLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnaW50ICAgICAgICAgICBuX2NvbXBvc2UsCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGd1bmljaGFyICAgICAgKm91dHB1dF9jaGFyKQorLQorLXsKKy0g ICAgZ2ludCBpOworLSAgICBndW5pY2hhciBjb21iaW5hdGlvbl9idWZmZXJbSUJVU19NQVhfQ09N UE9TRV9MRU5dOworLSAgICBnY2hhciAqY29tYmluYXRpb25fdXRmOCwgKm5mYzsKKy0KKy0gICAg aWYgKG91dHB1dF9jaGFyKQorLSAgICAgICAgKm91dHB1dF9jaGFyID0gMDsKKy0KKy0gICAgQ0hF Q0tfQ09NUE9TRV9CVUZGRVJfTEVOR1RIIChuX2NvbXBvc2UpOworLQorLSAgICBpZiAobl9jb21w b3NlID49IElCVVNfTUFYX0NPTVBPU0VfTEVOKQorLSAgICAgICAgcmV0dXJuIEZBTFNFOworLQor LSAgICBmb3IgKGkgPSAwOyBpIDwgbl9jb21wb3NlICYmIElTX0RFQURfS0VZIChjb21wb3NlX2J1 ZmZlcltpXSk7IGkrKykKKy0gICAgICAgIDsKKy0gICAgaWYgKGkgPT0gbl9jb21wb3NlKQorLSAg ICAgICAgcmV0dXJuIFRSVUU7CistCistICAgIGlmIChpID4gMCAmJiBpID09IG5fY29tcG9zZSAt IDEpIHsKKy0gICAgICAgIGNvbWJpbmF0aW9uX2J1ZmZlclswXSA9IGlidXNfa2V5dmFsX3RvX3Vu aWNvZGUgKGNvbXBvc2VfYnVmZmVyW2ldKTsKKy0gICAgICAgIGNvbWJpbmF0aW9uX2J1ZmZlcltu X2NvbXBvc2VdID0gMDsKKy0gICAgICAgIGktLTsKKy0gICAgICAgIHdoaWxlIChpID49IDApIHsK Ky0gICAgICAgICAgICBjb21iaW5hdGlvbl9idWZmZXJbaSsxXSA9IGlidXNfa2V5c3ltX3RvX3Vu aWNvZGUgKGNvbXBvc2VfYnVmZmVyW2ldLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSk7CistICAgICAgICAgICAgaWYg KCFjb21iaW5hdGlvbl9idWZmZXJbaSsxXSkgeworLSAgICAgICAgICAgICAgICBjb21iaW5hdGlv bl9idWZmZXJbaSsxXSA9CistICAgICAgICAgICAgICAgICAgICAgICAgaWJ1c19rZXl2YWxfdG9f dW5pY29kZSAoY29tcG9zZV9idWZmZXJbaV0pOworLSAgICAgICAgICAgIH0KKy0gICAgICAgICAg ICBpLS07CistICAgICAgICB9CistCistICAgICAgICAvKiBJZiB0aGUgYnVmZmVyIG5vcm1hbGl6 ZXMgdG8gYSBzaW5nbGUgY2hhcmFjdGVyLAorLSAgICAgICAgICogdGhlbiBtb2RpZnkgdGhlIG9y ZGVyIG9mIGNvbWJpbmF0aW9uX2J1ZmZlciBhY2NvcmRpbmdseSwgaWYgbmVjZXNzYXJ5LAorLSAg ICAgICAgICogYW5kIHJldHVybiBUUlVFLgorLSAgICAgICAgICovCistICAgICAgICBpZiAoY2hl Y2tfbm9ybWFsaXplX25mYyAoY29tYmluYXRpb25fYnVmZmVyLCBuX2NvbXBvc2UpKSB7CistICAg ICAgICAgICAgY29tYmluYXRpb25fdXRmOCA9IGdfdWNzNF90b191dGY4IChjb21iaW5hdGlvbl9i dWZmZXIsIC0xLCBOVUxMLCBOVUxMLCBOVUxMKTsKKy0gICAgICAgICAgICBuZmMgPSBnX3V0Zjhf bm9ybWFsaXplIChjb21iaW5hdGlvbl91dGY4LCAtMSwgR19OT1JNQUxJWkVfTkZDKTsKKy0KKy0g ICAgICAgICAgICBpZiAob3V0cHV0X2NoYXIpCistICAgICAgICAgICAgICAgICpvdXRwdXRfY2hh ciA9IGdfdXRmOF9nZXRfY2hhciAobmZjKTsKKy0KKy0gICAgICAgICAgICBnX2ZyZWUgKGNvbWJp bmF0aW9uX3V0ZjgpOworLSAgICAgICAgICAgIGdfZnJlZSAobmZjKTsKKy0KKy0gICAgICAgICAg ICByZXR1cm4gVFJVRTsKKy0gICAgICAgIH0KKy0gICAgfQorLQorLSAgICByZXR1cm4gRkFMU0U7 CistfQorIAorIHN0YXRpYyBnYm9vbGVhbgorIG5vX3NlcXVlbmNlX21hdGNoZXMgKElCdXNFbmdp bmVTaW1wbGUgKnNpbXBsZSwKK0BAIC0xMTg0LDM0ICs3MDMsNzEgQEAgaWJ1c19lbmdpbmVfc2lt cGxlX2NoZWNrX2FsbF9jb21wb3NlX3RhYmxlIChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50ICAgICAgICAg ICAgICBuX2NvbXBvc2UpCisgeworICAgICBJQnVzRW5naW5lU2ltcGxlUHJpdmF0ZSAqcHJpdiA9 IHNpbXBsZS0+cHJpdjsKKy0gICAgZ2Jvb2xlYW4gY29tcG9zZV9maW5pc2g7CistICAgIGd1bmlj aGFyIG91dHB1dF9jaGFyOworKyAgICBnYm9vbGVhbiBjb21wb3NlX2ZpbmlzaCA9IEZBTFNFOwor KyAgICBnYm9vbGVhbiBjb21wb3NlX21hdGNoID0gRkFMU0U7CisrICAgIEdTdHJpbmcgKm91dHB1 dCA9IGdfc3RyaW5nX25ldyAoIiIpOworKyAgICBnYm9vbGVhbiBkb2VzX2hpdCA9IEZBTFNFOwor KyAgICBnYm9vbGVhbiBpc18zMmJpdCA9IEZBTFNFOworKyAgICBHU0xpc3QgKnRtcF9saXN0Owor ICAgICBndW5pY2hhciAqb3V0cHV0X2NoYXJzID0gTlVMTDsKKy0gICAgZ2NoYXIgKm91dHB1dF9z dHIgPSBOVUxMOworLSAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKy0gICAgR1NMaXN0ICpsaXN0 ID0gZ2xvYmFsX3RhYmxlczsKKysgICAgZ3VuaWNoYXIgb3V0cHV0X2NoYXI7CisgCistICAgIHdo aWxlIChsaXN0KSB7CistICAgICAgICBpZiAoY2hlY2tfdGFibGUgKHNpbXBsZSwKKy0gICAgICAg ICAgICAoSUJ1c0NvbXBvc2VUYWJsZUV4ICopbGlzdC0+ZGF0YSwKKysgICAgR19MT0NLIChnbG9i YWxfdGFibGVzKTsKKysgICAgdG1wX2xpc3QgPSBnbG9iYWxfdGFibGVzOworKyAgICB3aGlsZSAo dG1wX2xpc3QpIHsKKysgICAgICAgIGlzXzMyYml0ID0gRkFMU0U7CisrICAgICAgICBpZiAoaWJ1 c19jb21wb3NlX3RhYmxlX2NoZWNrICgKKysgICAgICAgICAgICAoSUJ1c0NvbXBvc2VUYWJsZUV4 ICopdG1wX2xpc3QtPmRhdGEsCisrICAgICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZmZXIsCisg ICAgICAgICAgICAgbl9jb21wb3NlLAorLSAgICAgICAgICAgIEZBTFNFKSkgeworLSAgICAgICAg ICAgIHJldHVybiBUUlVFOworKyAgICAgICAgICAgICZjb21wb3NlX2ZpbmlzaCwKKysgICAgICAg ICAgICAmY29tcG9zZV9tYXRjaCwKKysgICAgICAgICAgICBvdXRwdXQsCisrICAgICAgICAgICAg aXNfMzJiaXQpKSB7CisrICAgICAgICAgICAgZG9lc19oaXQgPSBUUlVFOworKyAgICAgICAgICAg IGJyZWFrOworICAgICAgICAgfQorLSAgICAgICAgaWYgKGNoZWNrX3RhYmxlIChzaW1wbGUsCist ICAgICAgICAgICAgKElCdXNDb21wb3NlVGFibGVFeCAqKWxpc3QtPmRhdGEsCisrICAgICAgICBp c18zMmJpdCA9IFRSVUU7CisrICAgICAgICBpZiAoaWJ1c19jb21wb3NlX3RhYmxlX2NoZWNrICgK KysgICAgICAgICAgICAoSUJ1c0NvbXBvc2VUYWJsZUV4ICopdG1wX2xpc3QtPmRhdGEsCisrICAg ICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZmZXIsCisgICAgICAgICAgICAgbl9jb21wb3NlLAor LSAgICAgICAgICAgIFRSVUUpKSB7CistICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisrICAgICAg ICAgICAgJmNvbXBvc2VfZmluaXNoLAorKyAgICAgICAgICAgICZjb21wb3NlX21hdGNoLAorKyAg ICAgICAgICAgIG91dHB1dCwKKysgICAgICAgICAgICBpc18zMmJpdCkpIHsKKysgICAgICAgICAg ICBkb2VzX2hpdCA9IFRSVUU7CisrICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CistICAg ICAgICBsaXN0ID0gbGlzdC0+bmV4dDsKKysgICAgICAgIHRtcF9saXN0ID0gdG1wX2xpc3QtPm5l eHQ7CisgICAgIH0KKysgICAgR19VTkxPQ0sgKGdsb2JhbF90YWJsZXMpOworIAorLSAgICBpZiAo aWJ1c19jaGVja19jb21wYWN0X3RhYmxlICgmaWJ1c19jb21wb3NlX3RhYmxlX2NvbXBhY3QsCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmNvbXBvc2VfYnVmZmVyLAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX2NvbXBvc2UsCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZjb21wb3NlX2ZpbmlzaCwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJm91dHB1dF9jaGFycykpIHsKKysgICAgaWYgKGRvZXNfaGl0 KSB7CisrICAgICAgICBpZiAoY29tcG9zZV9maW5pc2gpIHsKKysgICAgICAgICAgICBpZiAoY29t cG9zZV9tYXRjaCkgeworKyAgICAgICAgICAgICAgICBpZiAoaXNfMzJiaXQpIHsKKysgICAgICAg ICAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV9jb21taXRfc3RyIChzaW1wbGUsIG91dHB1 dC0+c3RyKTsKKysgICAgICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAgICAg IGlidXNfZW5naW5lX3NpbXBsZV9jb21taXRfY2hhciAoc2ltcGxlLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3V0ZjhfZ2V0X2NoYXIgKG91 dHB1dC0+c3RyKSk7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9CisrICAgICAg ICB9IGVsc2UgaWYgKGNvbXBvc2VfbWF0Y2gpIHsKKysgICAgICAgICAgICBwcml2LT50ZW50YXRp dmVfbWF0Y2ggPSBnX3V0ZjhfZ2V0X2NoYXIgKG91dHB1dC0+c3RyKTsKKysgICAgICAgICAgICBw cml2LT50ZW50YXRpdmVfbWF0Y2hfbGVuID0gbl9jb21wb3NlOworKyAgICAgICAgfQorKyAgICAg ICAgaWJ1c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQgKHNpbXBsZSk7CisrICAg ICAgICBnX3N0cmluZ19mcmVlIChvdXRwdXQsIFRSVUUpOworKyAgICAgICAgcmV0dXJuIFRSVUU7 CisrICAgIH0KKysgICAgZ19zdHJpbmdfZnJlZSAob3V0cHV0LCBUUlVFKTsKKysKKysgICAgaWYg KGlidXNfY29tcG9zZV90YWJsZV9jb21wYWN0X2NoZWNrICgmaWJ1c19jb21wb3NlX3RhYmxlX2Nv bXBhY3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+ Y29tcG9zZV9idWZmZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbl9jb21wb3NlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZjb21wb3NlX2ZpbmlzaCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmb3V0cHV0X2NoYXJzKSkgeworICAgICAgICAgaWYgKGNvbXBvc2VfZmluaXNoKSB7Cisg ICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX2NvbW1pdF9jaGFyIChzaW1wbGUsICpvdXRw dXRfY2hhcnMpOworICAgICAgICAgICAgIGdfZnJlZSAob3V0cHV0X2NoYXJzKTsKK0BAIC0xMjIw LDI4ICs3NzYsMjkgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX2NoZWNrX2FsbF9jb21wb3NlX3RhYmxl IChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCisgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVf dXBkYXRlX3ByZWVkaXRfdGV4dCAoc2ltcGxlKTsKKyAgICAgICAgIHJldHVybiBUUlVFOworICAg ICB9CistICAgIGlmIChpYnVzX2NoZWNrX2NvbXBhY3RfdGFibGUgKCZpYnVzX2NvbXBvc2VfdGFi bGVfY29tcGFjdF8zMmJpdCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJp di0+Y29tcG9zZV9idWZmZXIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5f Y29tcG9zZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbXBvc2VfZmlu aXNoLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0X2NoYXJzKSkg eworKyAgICBpZiAoaWJ1c19jb21wb3NlX3RhYmxlX2NvbXBhY3RfY2hlY2sgKCZpYnVzX2NvbXBv c2VfdGFibGVfY29tcGFjdF8zMmJpdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwcml2LT5jb21wb3NlX2J1ZmZlciwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuX2NvbXBvc2UsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJmNvbXBvc2VfZmluaXNoLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZvdXRwdXRfY2hhcnMpKSB7CisgICAgICAgICBpZiAoY29t cG9zZV9maW5pc2gpIHsKKy0gICAgICAgICAgICBvdXRwdXRfc3RyID0gZ191Y3M0X3RvX3V0Zjgg KG91dHB1dF9jaGFycywgLTEsIE5VTEwsIE5VTEwsICZlcnJvcik7CistICAgICAgICAgICAgaWYg KG91dHB1dF9zdHIpIHsKKy0gICAgICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX2NvbW1p dF9zdHIgKHNpbXBsZSwgb3V0cHV0X3N0cik7CistICAgICAgICAgICAgICAgIGdfZnJlZSAob3V0 cHV0X3N0cik7CisrICAgICAgICAgICAgR0Vycm9yICplcnJvciA9IE5VTEw7CisrICAgICAgICAg ICAgY2hhciAqc3RyID0gZ191Y3M0X3RvX3V0ZjggKG91dHB1dF9jaGFycywgLTEsIE5VTEwsIE5V TEwsICZlcnJvcik7CisrICAgICAgICAgICAgaWYgKHN0cikgeworKyAgICAgICAgICAgICAgICBp YnVzX2VuZ2luZV9zaW1wbGVfY29tbWl0X3N0ciAoc2ltcGxlLCBzdHIpOworKyAgICAgICAgICAg ICAgICBnX2ZyZWUgKHN0cik7CisgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg ICAgZ193YXJuaW5nICgiRmFpbGVkIHRvIG91dHB1dCBtdWx0aXBsZSBjaGFyYWN0ZXJzOiAlcyIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3ItPm1lc3NhZ2UpOworICAgICAgICAg ICAgICAgICBnX2Vycm9yX2ZyZWUgKGVycm9yKTsKKyAgICAgICAgICAgICB9CistICAgICAgICAg ICAgZ19mcmVlIChvdXRwdXRfY2hhcnMpOworICAgICAgICAgICAgIHByaXYtPmNvbXBvc2VfYnVm ZmVyWzBdID0gMDsKKyAgICAgICAgIH0KKy0gICAgICAgIAorKyAgICAgICAgZ19mcmVlIChvdXRw dXRfY2hhcnMpOworICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9wcmVlZGl0X3Rl eHQgKHNpbXBsZSk7CisgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgfQorKyAgICBnX2Fzc2Vy dCAoIW91dHB1dF9jaGFycyk7CisgICAgIGlmIChpYnVzX2NoZWNrX2FsZ29yaXRobWljYWxseSAo cHJpdi0+Y29tcG9zZV9idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbl9jb21wb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRw dXRfY2hhcikpIHsKK2RpZmYgLS1naXQgYS9zcmMvaWJ1c2VuZ2luZXNpbXBsZXByaXZhdGUuaCBi L3NyYy9pYnVzZW5naW5lc2ltcGxlcHJpdmF0ZS5oCitpbmRleCA1MDhkOTM0NC4uNDdmMmEzZDQg MTAwNjQ0CistLS0gYS9zcmMvaWJ1c2VuZ2luZXNpbXBsZXByaXZhdGUuaAorKysrIGIvc3JjL2li dXNlbmdpbmVzaW1wbGVwcml2YXRlLmgKK0BAIC0zNywxNSArMzcsMzAgQEAgc3RydWN0IF9JQnVz Q29tcG9zZVRhYmxlUHJpdmF0ZQorICAgICBnc2l6ZSBzZWNvbmRfc2l6ZTsKKyB9OworIAorK3N0 cnVjdCBfSUJ1c0NvbXBvc2VUYWJsZUNvbXBhY3RQcml2YXRlCisreworKyAgICBjb25zdCBndWlu dDMyICpkYXRhMjsKKyt9OworKworIGdib29sZWFuIGlidXNfY2hlY2tfYWxnb3JpdGhtaWNhbGx5 IChjb25zdCBndWludDE2ICAgICAgICAgICAgICAqY29tcG9zZV9idWZmZXIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAgICAgICAgICAgICAgICAgICBu X2NvbXBvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1bmljaGFy ICAgICAgICAgICAgICAgICAgICpvdXRwdXQpOworLWdib29sZWFuIGlidXNfY2hlY2tfY29tcGFj dF90YWJsZSAgIChjb25zdCBJQnVzQ29tcG9zZVRhYmxlQ29tcGFjdEV4CisrZ2Jvb2xlYW4gaWJ1 c19jb21wb3NlX3RhYmxlX2NoZWNrICAgKGNvbnN0IElCdXNDb21wb3NlVGFibGVFeCAgICp0YWJs ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQxNiAgICAgICAg ICAgICAgICAgICAgKmNvbXBvc2VfYnVmZmVyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnaW50ICAgICAgICAgICAgICAgICAgICAgICAgbl9jb21wb3NlLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICAg ICAqY29tcG9zZV9maW5pc2gsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdib29sZWFuICAgICAgICAgICAgICAgICAgICpjb21wb3NlX21hdGNoLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHU3RyaW5nICAgICAgICAgICAgICAgICAgICAqb3V0 cHV0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAg ICAgICAgICAgICAgICAgaXNfMzJiaXQpOworK2dib29sZWFuIGlidXNfY29tcG9zZV90YWJsZV9j b21wYWN0X2NoZWNrCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0 IElCdXNDb21wb3NlVGFibGVDb21wYWN0RXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnRhYmxlLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDE2ICAgICAgICAgICAgICAgICAgICAqY29t cG9zZV9idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQg ICAgICAgICAgICAgICAgICAgICAgICBuX2NvbXBvc2UsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAgICAgICAgICpjb21wb3NlX2Zpbmlz aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VuaWNoYXIgICAgICAg ICAgICAgICAgICAqKm91dHB1dF9jaGFycyk7CisrZ3VuaWNoYXIgaWJ1c19rZXlzeW1fdG9fdW5p Y29kZSAgICAgKGd1aW50MTYgICAgICAgICAgICAgICAgICAgICBrZXlzeW0sCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAgICAgICAgICBj b21iaW5pbmcpOworIAorIEdfRU5EX0RFQ0xTCisgCitkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RzL01h a2VmaWxlLmFtIGIvc3JjL3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCAwYTJlNTIzYy4uMTNjMDZl YjQgMTAwNjQ0CistLS0gYS9zcmMvdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy90ZXN0cy9N YWtlZmlsZS5hbQorQEAgLTMsNyArMyw3IEBACisgIyBpYnVzIC0gVGhlIElucHV0IEJ1cworICMK KyAjIENvcHlyaWdodCAoYykgMjAwNy0yMDE1IFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21h aWwuY29tPgorLSMgQ29weXJpZ2h0IChjKSAyMDE1LTIwMTkgVGFrYW8gRnVqaXdhcmEgPHRha2Fv LmZ1aml3YXJhMUBnbWFpbC5jb20+CisrIyBDb3B5cmlnaHQgKGMpIDIwMTUtMjAyMSBUYWthbyBG dWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KKyAjIENvcHlyaWdodCAoYykgMjAw Ny0yMDE4IFJlZCBIYXQsIEluYy4KKyAjCisgIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCitAQCAtMzAsNiArMzAsNyBAQCBBTV9D UFBGTEFHUyA9IFwKKyAgICAgQEdMSUIyX0NGTEFHU0AgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICAgQEdJTzJfQ0ZMQUdTQCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg LURJQlVTX0RJU0FCTEVfREVQUkVDQVRJT05fV0FSTklOR1MgICAgIFwKKysgICAgLURYMTFfREFU QV9QUkVGSVg9XCIkKFgxMV9QUkVGSVgpXCIgICAgIFwKKyAgICAgLUkkKHRvcF9zcmNkaXIpL3Ny YyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgLUkkKHRvcF9idWlsZGRpcikvc3JjICAgICAg ICAgICAgICAgICAgIFwKKyAgICAgJChOVUxMKQorZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy9pYnVz LWNvbXBvc2UuYyBiL3NyYy90ZXN0cy9pYnVzLWNvbXBvc2UuYworaW5kZXggODFiZmM2OWIuLjBi ZTAxZDI3IDEwMDY0NAorLS0tIGEvc3JjL3Rlc3RzL2lidXMtY29tcG9zZS5jCisrKysgYi9zcmMv dGVzdHMvaWJ1cy1jb21wb3NlLmMKK0BAIC02LDYgKzYsNyBAQAorICNkZWZpbmUgR1JFRU4gIlww MzNbMDszMm0iCisgI2RlZmluZSBSRUQgICAiXDAzM1swOzMxbSIKKyAjZGVmaW5lIE5DICAgICJc MDMzWzBtIgorKyNkZWZpbmUgWDExX0RBVEFESVIgWDExX0RBVEFfUFJFRklYICIvc2hhcmUvWDEx L2xvY2FsZSIKKyAKKyBJQnVzQnVzICptX2J1czsKKyBnY2hhciAqbV9jb21wb3NlX2ZpbGU7CitA QCAtMzUsNyArMzYsNyBAQCBnZXRfY29tcG9zZV9wYXRoICgpCisgICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgICBpZiAoZ19zdHJjbXAwICgqbCwgIkMiKSA9PSAwKQorICAgICAgICAgICAgIGJy ZWFrOworLSAgICAgICAgY29tcG9zZV9wYXRoID0gZ19idWlsZF9maWxlbmFtZSAoIi91c3Ivc2hh cmUvWDExL2xvY2FsZSIsCisrICAgICAgICBjb21wb3NlX3BhdGggPSBnX2J1aWxkX2ZpbGVuYW1l IChYMTFfREFUQURJUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICpsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbXBvc2Ui LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CitAQCAt MTU1LDcgKzE1Niw3IEBAIHNldF9lbmdpbmVfY2IgKEdPYmplY3QgKm9iamVjdCwgR0FzeW5jUmVz dWx0ICpyZXMsIGdwb2ludGVyIGRhdGEpCisgICAgIGZvciAoaSA9IDA7CisgICAgICAgICAgaSA8 IChtX2NvbXBvc2VfdGFibGUtPm5fc2VxcyAqIGluZGV4X3N0cmlkZSk7CisgICAgICAgICAgaSAr PSBpbmRleF9zdHJpZGUpIHsKKy0gICAgICAgIGZvciAoaiA9IGk7IGogPCBpICsgKGluZGV4X3N0 cmlkZSAtIDEpOyBqKyspIHsKKysgICAgICAgIGZvciAoaiA9IGk7IGogPCBpICsgKGluZGV4X3N0 cmlkZSAtIDIpOyBqKyspIHsKKyAgICAgICAgICAgICBndWludCBrZXl2YWwgPSBtX2NvbXBvc2Vf dGFibGUtPmRhdGFbal07CisgICAgICAgICAgICAgZ3VpbnQga2V5Y29kZSA9IDA7CisgICAgICAg ICAgICAgZ3VpbnQgbW9kaWZpZXJzID0gMDsKK0BAIC0xNzUsNyArMTc2LDcgQEAgc2V0X2VuZ2lu ZV9jYiAoR09iamVjdCAqb2JqZWN0LCBHQXN5bmNSZXN1bHQgKnJlcywgZ3BvaW50ZXIgZGF0YSkK KyAgICAgICAgIGZvciAoaSA9IDA7CisgICAgICAgICAgICAgIGkgPCAocHJpdi0+Zmlyc3Rfbl9z ZXFzICogaW5kZXhfc3RyaWRlKTsKKyAgICAgICAgICAgICAgaSArPSBpbmRleF9zdHJpZGUpIHsK Ky0gICAgICAgICAgICBmb3IgKGogPSBpOyBqIDwgaSArIChpbmRleF9zdHJpZGUgLSAxKTsgaisr KSB7CisrICAgICAgICAgICAgZm9yIChqID0gaTsgaiA8IGkgKyAoaW5kZXhfc3RyaWRlIC0gMik7 IGorKykgeworICAgICAgICAgICAgICAgICBndWludCBrZXl2YWwgPSBwcml2LT5kYXRhX2ZpcnN0 W2pdOworICAgICAgICAgICAgICAgICBndWludCBrZXljb2RlID0gMDsKKyAgICAgICAgICAgICAg ICAgZ3VpbnQgbW9kaWZpZXJzID0gMDsKKy0tIAorMi4yOC4wCisKK0Zyb20gMmZjMWEwMjhhYTY5 N2YxMzIwZDg1YTc2NTQ4Y2RlMTI4OTRiZjlhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zy b206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMjYg SnVsIDIwMjEgMjI6NTI6MTggKzA5MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzZdIHNyYy9pYnVzZW5n aW5lc2ltcGxlOiBNdWx0aV9rZXkgdG8gMHhCNworTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQt VHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGlu ZzogOGJpdAorCitVc2UgwrcgaW5zdGVhZCBvZiDijoQgdG8gZGlzcGxheSBNdWx0aV9rZXkgaW4g cHJlLWVkaXQuCisKK0JVRz1odHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ3RrLy0vaXNz dWVzLzM2NjkKK0JVRz1odHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ3RrLy0vbWVyZ2Vf cmVxdWVzdHMvMzIyMAorLS0tCisgc3JjL2lidXNjb21wb3NldGFibGUuYyB8ICA4ICsrKysrKy0K KyBzcmMvaWJ1c2VuZ2luZXNpbXBsZS5jIHwgNDkgKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCAyNyBk ZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9pYnVzY29tcG9zZXRhYmxlLmMgYi9zcmMv aWJ1c2NvbXBvc2V0YWJsZS5jCitpbmRleCBmODUxNzdhNi4uNGViZjExOWIgMTAwNjQ0CistLS0g YS9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jCisrKysgYi9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jCitA QCAtMTg0Niw3ICsxODQ2LDEzIEBAIGlidXNfa2V5c3ltX3RvX3VuaWNvZGUgKGd1aW50MTYgIGtl eXN5bSwKKyAgICAgQ0FTRV9DT01CSU5FICh0aWxkZSwgICAgICAgICAgICAgICAgICAgICAgICAw eDAzMDMsIDB4MDA3RSk7CisgICAgIENBU0VfQ09NQklORSAodm9pY2VkX3NvdW5kLCAgICAgICAg ICAgICAgICAgMHgzMDk5LCAweDMwOUIpOworICAgICBjYXNlIElCVVNfS0VZX011bHRpX2tleToK Ky0gICAgICAgIHJldHVybiAweDIzODQ7CisrICAgICAgICAvKiBXZSBvbmx5IHNob3cgdGhlIENv bXBvc2Uga2V5IHZpc2libHkgd2hlbiBpdCBpcyB0aGUKKysgICAgICAgICAqIG9ubHkgZ2x5cGgg aW4gdGhlIHByZWVkaXQsIG9yIHdoZW4gaXQgb2NjdXJzIGluIHRoZQorKyAgICAgICAgICogbWlk ZGxlIG9mIHRoZSBzZXF1ZW5jZS4gU2FkbHksIHRoZSBvZmZpY2lhbCBjaGFyYWN0ZXIsCisrICAg ICAgICAgKiBVKzIzODQsIENPTVBPU0lUSU9OIFNZTUJPTCwgaXMgYml0IHRvbyBkaXN0cmFjdGlu Zywgc28KKysgICAgICAgICAqIHdlIHVzZSBVKzAwQjcsIE1JRERMRSBET1QuCisrICAgICAgICAg Ki8KKysgICAgICAgIHJldHVybiAweDAwQjc7CisgICAgIGRlZmF1bHQ6OworICAgICB9CisgICAg IHJldHVybiAweDA7CitkaWZmIC0tZ2l0IGEvc3JjL2lidXNlbmdpbmVzaW1wbGUuYyBiL3NyYy9p YnVzZW5naW5lc2ltcGxlLmMKK2luZGV4IDQ2NDQ2MjBiLi41N2NhMTBjNCAxMDA2NDQKKy0tLSBh L3NyYy9pYnVzZW5naW5lc2ltcGxlLmMKKysrKyBiL3NyYy9pYnVzZW5naW5lc2ltcGxlLmMKK0BA IC0yODksMzIgKzI4OSwyNyBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfdXBkYXRlX3ByZWVkaXRfdGV4 dCAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlKQorIHsKKyAgICAgSUJ1c0VuZ2luZVNpbXBsZVBy aXZhdGUgKnByaXYgPSBzaW1wbGUtPnByaXY7CisgCistICAgIGd1bmljaGFyIG91dGJ1ZltDT01Q T1NFX0JVRkZFUl9TSVpFICsgMV07CistICAgIGludCBsZW4gPSAwOworKyAgICBHU3RyaW5nICpz ID0gZ19zdHJpbmdfbmV3ICgiIik7CisgCisgICAgIGlmIChwcml2LT5pbl9oZXhfc2VxdWVuY2Ug fHwgcHJpdi0+aW5fZW1vamlfc2VxdWVuY2UpIHsKKyAgICAgICAgIGludCBoZXhjaGFycyA9IDA7 CisgCisgICAgICAgICBpZiAocHJpdi0+aW5faGV4X3NlcXVlbmNlKQorLSAgICAgICAgICAgIG91 dGJ1ZlswXSA9IEwndSc7CisrICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kX2MgKHMsICd1Jyk7 CisgICAgICAgICBlbHNlCistICAgICAgICAgICAgb3V0YnVmWzBdID0gTCdAJzsKKy0KKy0gICAg ICAgIGxlbiA9IDE7CisrICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kX2MgKHMsICdAJyk7Cisg CisgICAgICAgICB3aGlsZSAocHJpdi0+Y29tcG9zZV9idWZmZXJbaGV4Y2hhcnNdICE9IDApIHsK Ky0gICAgICAgICAgICBvdXRidWZbbGVuXSA9IGlidXNfa2V5dmFsX3RvX3VuaWNvZGUgKAorLSAg ICAgICAgICAgICAgICBwcml2LT5jb21wb3NlX2J1ZmZlcltoZXhjaGFyc10pOworLSAgICAgICAg ICAgICsrbGVuOworLSAgICAgICAgICAgICsraGV4Y2hhcnM7CisrICAgICAgICAgICAgZ19zdHJp bmdfYXBwZW5kX3VuaWNoYXIoCisrICAgICAgICAgICAgICAgICAgICBzLAorKyAgICAgICAgICAg ICAgICAgICAgaWJ1c19rZXl2YWxfdG9fdW5pY29kZSAocHJpdi0+Y29tcG9zZV9idWZmZXJbaGV4 Y2hhcnMrK10pCisrICAgICAgICAgICAgKTsKKyAgICAgICAgIH0KKy0KKy0gICAgICAgIGdfYXNz ZXJ0IChsZW4gPD0gQ09NUE9TRV9CVUZGRVJfU0laRSk7CisgICAgIH0gZWxzZSBpZiAocHJpdi0+ dGVudGF0aXZlX21hdGNoKSB7CistICAgICAgICBvdXRidWZbbGVuKytdID0gcHJpdi0+dGVudGF0 aXZlX21hdGNoOworKyAgICAgICAgZ19zdHJpbmdfYXBwZW5kX3VuaWNoYXIocywgcHJpdi0+dGVu dGF0aXZlX21hdGNoKTsKKyAgICAgfSBlbHNlIGlmIChwcml2LT50ZW50YXRpdmVfZW1vamkgJiYg KnByaXYtPnRlbnRhdGl2ZV9lbW9qaSkgeworICAgICAgICAgSUJ1c1RleHQgKnRleHQgPSBpYnVz X3RleHRfbmV3X2Zyb21fc3RyaW5nIChwcml2LT50ZW50YXRpdmVfZW1vamkpOworLSAgICAgICAg bGVuID0gc3RybGVuIChwcml2LT50ZW50YXRpdmVfZW1vamkpOworKyAgICAgICAgaW50IGxlbiA9 IHN0cmxlbiAocHJpdi0+dGVudGF0aXZlX2Vtb2ppKTsKKyAgICAgICAgIGlidXNfdGV4dF9hcHBl bmRfYXR0cmlidXRlICh0ZXh0LAorICAgICAgICAgICAgICAgICBJQlVTX0FUVFJfVFlQRV9VTkRF UkxJTkUsIElCVVNfQVRUUl9VTkRFUkxJTkVfU0lOR0xFLCAwLCBsZW4pOworICAgICAgICAgaWJ1 c19lbmdpbmVfdXBkYXRlX3ByZWVkaXRfdGV4dCAoKElCdXNFbmdpbmUgKilzaW1wbGUsIHRleHQs IGxlbiwgVFJVRSk7CitAQCAtMzI0LDMxICszMTksMzMgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3Vw ZGF0ZV9wcmVlZGl0X3RleHQgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSkKKyAgICAgICAgIHdo aWxlIChwcml2LT5jb21wb3NlX2J1ZmZlcltoZXhjaGFyc10gIT0gMCkgeworICAgICAgICAgICAg IGd1aW50MTYga2V5c3ltID0gcHJpdi0+Y29tcG9zZV9idWZmZXJbaGV4Y2hhcnNdOworICAgICAg ICAgICAgIGd1bmljaGFyIHVuaWNoYXIgPSBpYnVzX2tleXN5bV90b191bmljb2RlIChrZXlzeW0s IEZBTFNFKTsKKy0gICAgICAgICAgICBpZiAodW5pY2hhciA+IDApCistICAgICAgICAgICAgICAg IG91dGJ1ZltsZW5dID0gdW5pY2hhcjsKKy0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAg ICAgIG91dGJ1ZltsZW5dID0gaWJ1c19rZXl2YWxfdG9fdW5pY29kZSAoa2V5c3ltKTsKKy0gICAg ICAgICAgICBpZiAoIW91dGJ1ZltsZW5dKSB7CisrICAgICAgICAgICAgaWYgKHVuaWNoYXIgPiAw KSB7CisrICAgICAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZF91bmljaGFyKHMsIHVuaWNoYXIp OworKyAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgIHVuaWNoYXIgPSBpYnVz X2tleXZhbF90b191bmljb2RlIChrZXlzeW0pOworKyAgICAgICAgICAgICAgICBnX3N0cmluZ19h cHBlbmRfdW5pY2hhcihzLCB1bmljaGFyKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAg aWYgKCF1bmljaGFyKSB7CisgICAgICAgICAgICAgICAgIGdfd2FybmluZyAoCisgICAgICAgICAg ICAgICAgICAgICAgICAgIk5vdCBmb3VuZCBhbHRlcm5hdGl2ZSBjaGFyYWN0ZXIgb2YgY29tcG9z ZSBrZXkgMHglWCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZm ZXJbaGV4Y2hhcnNdKTsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgKytsZW47CisgICAg ICAgICAgICAgKytoZXhjaGFyczsKKyAgICAgICAgIH0KKy0gICAgICAgIGdfYXNzZXJ0IChsZW4g PD0gSUJVU19NQVhfQ09NUE9TRV9MRU4pOworICAgICB9CisgCistICAgIG91dGJ1ZltsZW5dID0g TCdcMCc7CistICAgIGlmIChsZW4gPT0gMCkgeworKyAgICBpZiAocy0+bGVuID09IDApIHsKKyAg ICAgICAgIGlidXNfZW5naW5lX2hpZGVfcHJlZWRpdF90ZXh0ICgoSUJ1c0VuZ2luZSAqKXNpbXBs ZSk7CistICAgIH0KKy0gICAgZWxzZSB7CistICAgICAgICBJQnVzVGV4dCAqdGV4dCA9IGlidXNf dGV4dF9uZXdfZnJvbV91Y3M0IChvdXRidWYpOworKyAgICB9IGVsc2UgaWYgKHMtPmxlbiA+PSBH X01BWElOVCkgeworKyAgICAgICAgZ193YXJuaW5nICgiJXMgaXMgdG9vIGxvbmcgY29tcG9zZSBs ZW5ndGg6ICVsdSIsIHMtPnN0ciwgcy0+bGVuKTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIGlu dCBsZW4gPSAoaW50KXMtPmxlbjsKKysgICAgICAgIElCdXNUZXh0ICp0ZXh0ID0gaWJ1c190ZXh0 X25ld19mcm9tX3N0cmluZyAocy0+c3RyKTsKKyAgICAgICAgIGlidXNfdGV4dF9hcHBlbmRfYXR0 cmlidXRlICh0ZXh0LAorICAgICAgICAgICAgICAgICBJQlVTX0FUVFJfVFlQRV9VTkRFUkxJTkUs IElCVVNfQVRUUl9VTkRFUkxJTkVfU0lOR0xFLCAwLCBsZW4pOworICAgICAgICAgaWJ1c19lbmdp bmVfdXBkYXRlX3ByZWVkaXRfdGV4dCAoKElCdXNFbmdpbmUgKilzaW1wbGUsIHRleHQsIGxlbiwg VFJVRSk7CisgICAgIH0KKysgICAgZ19zdHJpbmdfZnJlZSAocywgVFJVRSk7CisgfQorIAorIAor LS0gCisyLjI4LjAKKworRnJvbSAzZTI2MDllNjhjOTEwN2NlN2M2NWUyZDU4NzZiZmRjOWYwZjhj ODU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWpp d2FyYTFAZ21haWwuY29tPgorRGF0ZTogTW9uLCAyNiBKdWwgMjAyMSAyMjo1MjoyMSArMDkwMAor U3ViamVjdDogW1BBVENIIDMvNl0gc3JjOiBVcGRhdGUgaWJ1c2tleXN5bXMuaCBmb3IgbGF0ZXN0 IGRlYWQga2V5cworCistLS0KKyBzcmMvaWJ1c2tleXN5bXMuaCB8IDE4NiArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDE4NSBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvaWJ1c2tleXN5 bXMuaCBiL3NyYy9pYnVza2V5c3ltcy5oCitpbmRleCBkMzVlYjRhNy4uMmZiMmVhMTkgMTAwNjQ0 CistLS0gYS9zcmMvaWJ1c2tleXN5bXMuaAorKysrIGIvc3JjL2lidXNrZXlzeW1zLmgKK0BAIC0y NzQsNiArMjc0LDEwIEBACisgI2RlZmluZSBJQlVTX0tFWV9kZWFkX2ludmVydGVkYnJldmUgMHhm ZTZkCisgI2RlZmluZSBJQlVTX0tFWV9kZWFkX2JlbG93Y29tbWEgMHhmZTZlCisgI2RlZmluZSBJ QlVTX0tFWV9kZWFkX2N1cnJlbmN5IDB4ZmU2ZgorKyNkZWZpbmUgSUJVU19LRVlfZGVhZF9sb3ds aW5lIDB4ZmU5MAorKyNkZWZpbmUgSUJVU19LRVlfZGVhZF9hYm92ZXZlcnRpY2FsbGluZSAweGZl OTEKKysjZGVmaW5lIElCVVNfS0VZX2RlYWRfYmVsb3d2ZXJ0aWNhbGxpbmUgMHhmZTkyCisrI2Rl ZmluZSBJQlVTX0tFWV9kZWFkX2xvbmdzb2xpZHVzb3ZlcmxheSAweGZlOTMKKyAjZGVmaW5lIElC VVNfS0VZX2RlYWRfYSAweGZlODAKKyAjZGVmaW5lIElCVVNfS0VZX2RlYWRfQSAweGZlODEKKyAj ZGVmaW5lIElCVVNfS0VZX2RlYWRfZSAweGZlODIKK0BAIC0xMjAxLDYgKzEyMDUsNyBAQAorICNk ZWZpbmUgSUJVU19LRVlfbGVmdGRvdWJsZXF1b3RlbWFyayAweGFkMgorICNkZWZpbmUgSUJVU19L RVlfcmlnaHRkb3VibGVxdW90ZW1hcmsgMHhhZDMKKyAjZGVmaW5lIElCVVNfS0VZX3ByZXNjcmlw dGlvbiAweGFkNAorKyNkZWZpbmUgSUJVU19LRVlfcGVybWlsbGUgMHhhZDUKKyAjZGVmaW5lIElC VVNfS0VZX21pbnV0ZXMgMHhhZDYKKyAjZGVmaW5lIElCVVNfS0VZX3NlY29uZHMgMHhhZDcKKyAj ZGVmaW5lIElCVVNfS0VZX2xhdGluY3Jvc3MgMHhhZDkKK0BAIC0xNjMzLDggKzE2MzgsOCBAQAor ICNkZWZpbmUgSUJVU19LRVlfb2Nhcm9uIDB4MTAwMDFkMgorICNkZWZpbmUgSUJVU19LRVlfb2Jh cnJlZCAweDEwMDAyNzUKKyAjZGVmaW5lIElCVVNfS0VZX1NDSFdBIDB4MTAwMDE4ZgorLSNkZWZp bmUgSUJVU19LRVlfRVpIIDB4MTAwMDFiNworICNkZWZpbmUgSUJVU19LRVlfc2Nod2EgMHgxMDAw MjU5CisrI2RlZmluZSBJQlVTX0tFWV9FWkggMHgxMDAwMWI3CisgI2RlZmluZSBJQlVTX0tFWV9l emggMHgxMDAwMjkyCisgI2RlZmluZSBJQlVTX0tFWV9MYmVsb3dkb3QgMHgxMDAxZTM2CisgI2Rl ZmluZSBJQlVTX0tFWV9sYmVsb3dkb3QgMHgxMDAxZTM3CitAQCAtMjEyMSw1ICsyMTI2LDE4NCBA QAorICNkZWZpbmUgSUJVU19LRVlfU2luaF9ydXUyIDB4MTAwMGRmMgorICNkZWZpbmUgSUJVU19L RVlfU2luaF9sdXUyIDB4MTAwMGRmMworICNkZWZpbmUgSUJVU19LRVlfU2luaF9rdW5kZGFsaXlh IDB4MTAwMGRmNAorKyNkZWZpbmUgSUJVU19LRVlfTW9kZUxvY2sgMHgxMDA4ZmYwMQorKyNkZWZp bmUgSUJVU19LRVlfTW9uQnJpZ2h0bmVzc1VwIDB4MTAwOGZmMDIKKysjZGVmaW5lIElCVVNfS0VZ X01vbkJyaWdodG5lc3NEb3duIDB4MTAwOGZmMDMKKysjZGVmaW5lIElCVVNfS0VZX0tiZExpZ2h0 T25PZmYgMHgxMDA4ZmYwNAorKyNkZWZpbmUgSUJVU19LRVlfS2JkQnJpZ2h0bmVzc1VwIDB4MTAw OGZmMDUKKysjZGVmaW5lIElCVVNfS0VZX0tiZEJyaWdodG5lc3NEb3duIDB4MTAwOGZmMDYKKysj ZGVmaW5lIElCVVNfS0VZX1N0YW5kYnkgMHgxMDA4ZmYxMAorKyNkZWZpbmUgSUJVU19LRVlfQXVk aW9Mb3dlclZvbHVtZSAweDEwMDhmZjExCisrI2RlZmluZSBJQlVTX0tFWV9BdWRpb011dGUgMHgx MDA4ZmYxMgorKyNkZWZpbmUgSUJVU19LRVlfQXVkaW9SYWlzZVZvbHVtZSAweDEwMDhmZjEzCisr I2RlZmluZSBJQlVTX0tFWV9BdWRpb1BsYXkgMHgxMDA4ZmYxNAorKyNkZWZpbmUgSUJVU19LRVlf QXVkaW9TdG9wIDB4MTAwOGZmMTUKKysjZGVmaW5lIElCVVNfS0VZX0F1ZGlvUHJldiAweDEwMDhm ZjE2CisrI2RlZmluZSBJQlVTX0tFWV9BdWRpb05leHQgMHgxMDA4ZmYxNworKyNkZWZpbmUgSUJV U19LRVlfSG9tZVBhZ2UgMHgxMDA4ZmYxOAorKyNkZWZpbmUgSUJVU19LRVlfTWFpbCAweDEwMDhm ZjE5CisrI2RlZmluZSBJQlVTX0tFWV9TdGFydCAweDEwMDhmZjFhCisrI2RlZmluZSBJQlVTX0tF WV9TZWFyY2ggMHgxMDA4ZmYxYgorKyNkZWZpbmUgSUJVU19LRVlfQXVkaW9SZWNvcmQgMHgxMDA4 ZmYxYworKyNkZWZpbmUgSUJVU19LRVlfQ2FsY3VsYXRvciAweDEwMDhmZjFkCisrI2RlZmluZSBJ QlVTX0tFWV9NZW1vIDB4MTAwOGZmMWUKKysjZGVmaW5lIElCVVNfS0VZX1RvRG9MaXN0IDB4MTAw OGZmMWYKKysjZGVmaW5lIElCVVNfS0VZX0NhbGVuZGFyIDB4MTAwOGZmMjAKKysjZGVmaW5lIElC VVNfS0VZX1Bvd2VyRG93biAweDEwMDhmZjIxCisrI2RlZmluZSBJQlVTX0tFWV9Db250cmFzdEFk anVzdCAweDEwMDhmZjIyCisrI2RlZmluZSBJQlVTX0tFWV9Sb2NrZXJVcCAweDEwMDhmZjIzCisr I2RlZmluZSBJQlVTX0tFWV9Sb2NrZXJEb3duIDB4MTAwOGZmMjQKKysjZGVmaW5lIElCVVNfS0VZ X1JvY2tlckVudGVyIDB4MTAwOGZmMjUKKysjZGVmaW5lIElCVVNfS0VZX0JhY2sgMHgxMDA4ZmYy NgorKyNkZWZpbmUgSUJVU19LRVlfRm9yd2FyZCAweDEwMDhmZjI3CisrI2RlZmluZSBJQlVTX0tF WV9TdG9wIDB4MTAwOGZmMjgKKysjZGVmaW5lIElCVVNfS0VZX1JlZnJlc2ggMHgxMDA4ZmYyOQor KyNkZWZpbmUgSUJVU19LRVlfUG93ZXJPZmYgMHgxMDA4ZmYyYQorKyNkZWZpbmUgSUJVU19LRVlf V2FrZVVwIDB4MTAwOGZmMmIKKysjZGVmaW5lIElCVVNfS0VZX0VqZWN0IDB4MTAwOGZmMmMKKysj ZGVmaW5lIElCVVNfS0VZX1NjcmVlblNhdmVyIDB4MTAwOGZmMmQKKysjZGVmaW5lIElCVVNfS0VZ X1dXVyAweDEwMDhmZjJlCisrI2RlZmluZSBJQlVTX0tFWV9TbGVlcCAweDEwMDhmZjJmCisrI2Rl ZmluZSBJQlVTX0tFWV9GYXZvcml0ZXMgMHgxMDA4ZmYzMAorKyNkZWZpbmUgSUJVU19LRVlfQXVk aW9QYXVzZSAweDEwMDhmZjMxCisrI2RlZmluZSBJQlVTX0tFWV9BdWRpb01lZGlhIDB4MTAwOGZm MzIKKysjZGVmaW5lIElCVVNfS0VZX015Q29tcHV0ZXIgMHgxMDA4ZmYzMworKyNkZWZpbmUgSUJV U19LRVlfVmVuZG9ySG9tZSAweDEwMDhmZjM0CisrI2RlZmluZSBJQlVTX0tFWV9MaWdodEJ1bGIg MHgxMDA4ZmYzNQorKyNkZWZpbmUgSUJVU19LRVlfU2hvcCAweDEwMDhmZjM2CisrI2RlZmluZSBJ QlVTX0tFWV9IaXN0b3J5IDB4MTAwOGZmMzcKKysjZGVmaW5lIElCVVNfS0VZX09wZW5VUkwgMHgx MDA4ZmYzOAorKyNkZWZpbmUgSUJVU19LRVlfQWRkRmF2b3JpdGUgMHgxMDA4ZmYzOQorKyNkZWZp bmUgSUJVU19LRVlfSG90TGlua3MgMHgxMDA4ZmYzYQorKyNkZWZpbmUgSUJVU19LRVlfQnJpZ2h0 bmVzc0FkanVzdCAweDEwMDhmZjNiCisrI2RlZmluZSBJQlVTX0tFWV9GaW5hbmNlIDB4MTAwOGZm M2MKKysjZGVmaW5lIElCVVNfS0VZX0NvbW11bml0eSAweDEwMDhmZjNkCisrI2RlZmluZSBJQlVT X0tFWV9BdWRpb1Jld2luZCAweDEwMDhmZjNlCisrI2RlZmluZSBJQlVTX0tFWV9CYWNrRm9yd2Fy ZCAweDEwMDhmZjNmCisrI2RlZmluZSBJQlVTX0tFWV9MYXVuY2gwIDB4MTAwOGZmNDAKKysjZGVm aW5lIElCVVNfS0VZX0xhdW5jaDEgMHgxMDA4ZmY0MQorKyNkZWZpbmUgSUJVU19LRVlfTGF1bmNo MiAweDEwMDhmZjQyCisrI2RlZmluZSBJQlVTX0tFWV9MYXVuY2gzIDB4MTAwOGZmNDMKKysjZGVm aW5lIElCVVNfS0VZX0xhdW5jaDQgMHgxMDA4ZmY0NAorKyNkZWZpbmUgSUJVU19LRVlfTGF1bmNo NSAweDEwMDhmZjQ1CisrI2RlZmluZSBJQlVTX0tFWV9MYXVuY2g2IDB4MTAwOGZmNDYKKysjZGVm aW5lIElCVVNfS0VZX0xhdW5jaDcgMHgxMDA4ZmY0NworKyNkZWZpbmUgSUJVU19LRVlfTGF1bmNo OCAweDEwMDhmZjQ4CisrI2RlZmluZSBJQlVTX0tFWV9MYXVuY2g5IDB4MTAwOGZmNDkKKysjZGVm aW5lIElCVVNfS0VZX0xhdW5jaEEgMHgxMDA4ZmY0YQorKyNkZWZpbmUgSUJVU19LRVlfTGF1bmNo QiAweDEwMDhmZjRiCisrI2RlZmluZSBJQlVTX0tFWV9MYXVuY2hDIDB4MTAwOGZmNGMKKysjZGVm aW5lIElCVVNfS0VZX0xhdW5jaEQgMHgxMDA4ZmY0ZAorKyNkZWZpbmUgSUJVU19LRVlfTGF1bmNo RSAweDEwMDhmZjRlCisrI2RlZmluZSBJQlVTX0tFWV9MYXVuY2hGIDB4MTAwOGZmNGYKKysjZGVm aW5lIElCVVNfS0VZX0FwcGxpY2F0aW9uTGVmdCAweDEwMDhmZjUwCisrI2RlZmluZSBJQlVTX0tF WV9BcHBsaWNhdGlvblJpZ2h0IDB4MTAwOGZmNTEKKysjZGVmaW5lIElCVVNfS0VZX0Jvb2sgMHgx MDA4ZmY1MgorKyNkZWZpbmUgSUJVU19LRVlfQ0QgMHgxMDA4ZmY1MworKyNkZWZpbmUgSUJVU19L RVlfV2luZG93Q2xlYXIgMHgxMDA4ZmY1NQorKyNkZWZpbmUgSUJVU19LRVlfQ2xvc2UgMHgxMDA4 ZmY1NgorKyNkZWZpbmUgSUJVU19LRVlfQ29weSAweDEwMDhmZjU3CisrI2RlZmluZSBJQlVTX0tF WV9DdXQgMHgxMDA4ZmY1OAorKyNkZWZpbmUgSUJVU19LRVlfRGlzcGxheSAweDEwMDhmZjU5Cisr I2RlZmluZSBJQlVTX0tFWV9ET1MgMHgxMDA4ZmY1YQorKyNkZWZpbmUgSUJVU19LRVlfRG9jdW1l bnRzIDB4MTAwOGZmNWIKKysjZGVmaW5lIElCVVNfS0VZX0V4Y2VsIDB4MTAwOGZmNWMKKysjZGVm aW5lIElCVVNfS0VZX0V4cGxvcmVyIDB4MTAwOGZmNWQKKysjZGVmaW5lIElCVVNfS0VZX0dhbWUg MHgxMDA4ZmY1ZQorKyNkZWZpbmUgSUJVU19LRVlfR28gMHgxMDA4ZmY1ZgorKyNkZWZpbmUgSUJV U19LRVlfaVRvdWNoIDB4MTAwOGZmNjAKKysjZGVmaW5lIElCVVNfS0VZX0xvZ09mZiAweDEwMDhm ZjYxCisrI2RlZmluZSBJQlVTX0tFWV9NYXJrZXQgMHgxMDA4ZmY2MgorKyNkZWZpbmUgSUJVU19L RVlfTWVldGluZyAweDEwMDhmZjYzCisrI2RlZmluZSBJQlVTX0tFWV9NZW51S0IgMHgxMDA4ZmY2 NQorKyNkZWZpbmUgSUJVU19LRVlfTWVudVBCIDB4MTAwOGZmNjYKKysjZGVmaW5lIElCVVNfS0VZ X015U2l0ZXMgMHgxMDA4ZmY2NworKyNkZWZpbmUgSUJVU19LRVlfTmV3IDB4MTAwOGZmNjgKKysj ZGVmaW5lIElCVVNfS0VZX05ld3MgMHgxMDA4ZmY2OQorKyNkZWZpbmUgSUJVU19LRVlfT2ZmaWNl SG9tZSAweDEwMDhmZjZhCisrI2RlZmluZSBJQlVTX0tFWV9PcGVuIDB4MTAwOGZmNmIKKysjZGVm aW5lIElCVVNfS0VZX09wdGlvbiAweDEwMDhmZjZjCisrI2RlZmluZSBJQlVTX0tFWV9QYXN0ZSAw eDEwMDhmZjZkCisrI2RlZmluZSBJQlVTX0tFWV9QaG9uZSAweDEwMDhmZjZlCisrI2RlZmluZSBJ QlVTX0tFWV9SZXBseSAweDEwMDhmZjcyCisrI2RlZmluZSBJQlVTX0tFWV9SZWxvYWQgMHgxMDA4 ZmY3MworKyNkZWZpbmUgSUJVU19LRVlfUm90YXRlV2luZG93cyAweDEwMDhmZjc0CisrI2RlZmlu ZSBJQlVTX0tFWV9Sb3RhdGlvblBCIDB4MTAwOGZmNzUKKysjZGVmaW5lIElCVVNfS0VZX1JvdGF0 aW9uS0IgMHgxMDA4ZmY3NgorKyNkZWZpbmUgSUJVU19LRVlfU2F2ZSAweDEwMDhmZjc3CisrI2Rl ZmluZSBJQlVTX0tFWV9TY3JvbGxVcCAweDEwMDhmZjc4CisrI2RlZmluZSBJQlVTX0tFWV9TY3Jv bGxEb3duIDB4MTAwOGZmNzkKKysjZGVmaW5lIElCVVNfS0VZX1Njcm9sbENsaWNrIDB4MTAwOGZm N2EKKysjZGVmaW5lIElCVVNfS0VZX1NlbmQgMHgxMDA4ZmY3YgorKyNkZWZpbmUgSUJVU19LRVlf U3BlbGwgMHgxMDA4ZmY3YworKyNkZWZpbmUgSUJVU19LRVlfU3BsaXRTY3JlZW4gMHgxMDA4ZmY3 ZAorKyNkZWZpbmUgSUJVU19LRVlfU3VwcG9ydCAweDEwMDhmZjdlCisrI2RlZmluZSBJQlVTX0tF WV9UYXNrUGFuZSAweDEwMDhmZjdmCisrI2RlZmluZSBJQlVTX0tFWV9UZXJtaW5hbCAweDEwMDhm ZjgwCisrI2RlZmluZSBJQlVTX0tFWV9Ub29scyAweDEwMDhmZjgxCisrI2RlZmluZSBJQlVTX0tF WV9UcmF2ZWwgMHgxMDA4ZmY4MgorKyNkZWZpbmUgSUJVU19LRVlfVXNlclBCIDB4MTAwOGZmODQK KysjZGVmaW5lIElCVVNfS0VZX1VzZXIxS0IgMHgxMDA4ZmY4NQorKyNkZWZpbmUgSUJVU19LRVlf VXNlcjJLQiAweDEwMDhmZjg2CisrI2RlZmluZSBJQlVTX0tFWV9WaWRlbyAweDEwMDhmZjg3Cisr I2RlZmluZSBJQlVTX0tFWV9XaGVlbEJ1dHRvbiAweDEwMDhmZjg4CisrI2RlZmluZSBJQlVTX0tF WV9Xb3JkIDB4MTAwOGZmODkKKysjZGVmaW5lIElCVVNfS0VZX1hmZXIgMHgxMDA4ZmY4YQorKyNk ZWZpbmUgSUJVU19LRVlfWm9vbUluIDB4MTAwOGZmOGIKKysjZGVmaW5lIElCVVNfS0VZX1pvb21P dXQgMHgxMDA4ZmY4YworKyNkZWZpbmUgSUJVU19LRVlfQXdheSAweDEwMDhmZjhkCisrI2RlZmlu ZSBJQlVTX0tFWV9NZXNzZW5nZXIgMHgxMDA4ZmY4ZQorKyNkZWZpbmUgSUJVU19LRVlfV2ViQ2Ft IDB4MTAwOGZmOGYKKysjZGVmaW5lIElCVVNfS0VZX01haWxGb3J3YXJkIDB4MTAwOGZmOTAKKysj ZGVmaW5lIElCVVNfS0VZX1BpY3R1cmVzIDB4MTAwOGZmOTEKKysjZGVmaW5lIElCVVNfS0VZX011 c2ljIDB4MTAwOGZmOTIKKysjZGVmaW5lIElCVVNfS0VZX0JhdHRlcnkgMHgxMDA4ZmY5MworKyNk ZWZpbmUgSUJVU19LRVlfQmx1ZXRvb3RoIDB4MTAwOGZmOTQKKysjZGVmaW5lIElCVVNfS0VZX1dM QU4gMHgxMDA4ZmY5NQorKyNkZWZpbmUgSUJVU19LRVlfVVdCIDB4MTAwOGZmOTYKKysjZGVmaW5l IElCVVNfS0VZX0F1ZGlvRm9yd2FyZCAweDEwMDhmZjk3CisrI2RlZmluZSBJQlVTX0tFWV9BdWRp b1JlcGVhdCAweDEwMDhmZjk4CisrI2RlZmluZSBJQlVTX0tFWV9BdWRpb1JhbmRvbVBsYXkgMHgx MDA4ZmY5OQorKyNkZWZpbmUgSUJVU19LRVlfU3VidGl0bGUgMHgxMDA4ZmY5YQorKyNkZWZpbmUg SUJVU19LRVlfQXVkaW9DeWNsZVRyYWNrIDB4MTAwOGZmOWIKKysjZGVmaW5lIElCVVNfS0VZX0N5 Y2xlQW5nbGUgMHgxMDA4ZmY5YworKyNkZWZpbmUgSUJVU19LRVlfRnJhbWVCYWNrIDB4MTAwOGZm OWQKKysjZGVmaW5lIElCVVNfS0VZX0ZyYW1lRm9yd2FyZCAweDEwMDhmZjllCisrI2RlZmluZSBJ QlVTX0tFWV9UaW1lIDB4MTAwOGZmOWYKKysjZGVmaW5lIElCVVNfS0VZX1NlbGVjdEJ1dHRvbiAw eDEwMDhmZmEwCisrI2RlZmluZSBJQlVTX0tFWV9WaWV3IDB4MTAwOGZmYTEKKysjZGVmaW5lIElC VVNfS0VZX1RvcE1lbnUgMHgxMDA4ZmZhMgorKyNkZWZpbmUgSUJVU19LRVlfUmVkIDB4MTAwOGZm YTMKKysjZGVmaW5lIElCVVNfS0VZX0dyZWVuIDB4MTAwOGZmYTQKKysjZGVmaW5lIElCVVNfS0VZ X1llbGxvdyAweDEwMDhmZmE1CisrI2RlZmluZSBJQlVTX0tFWV9CbHVlIDB4MTAwOGZmYTYKKysj ZGVmaW5lIElCVVNfS0VZX1N1c3BlbmQgMHgxMDA4ZmZhNworKyNkZWZpbmUgSUJVU19LRVlfSGli ZXJuYXRlIDB4MTAwOGZmYTgKKysjZGVmaW5lIElCVVNfS0VZX1RvdWNocGFkVG9nZ2xlIDB4MTAw OGZmYTkKKysjZGVmaW5lIElCVVNfS0VZX1RvdWNocGFkT24gMHgxMDA4ZmZiMAorKyNkZWZpbmUg SUJVU19LRVlfVG91Y2hwYWRPZmYgMHgxMDA4ZmZiMQorKyNkZWZpbmUgSUJVU19LRVlfQXVkaW9N aWNNdXRlIDB4MTAwOGZmYjIKKysjZGVmaW5lIElCVVNfS0VZX0tleWJvYXJkIDB4MTAwOGZmYjMK KysjZGVmaW5lIElCVVNfS0VZX1dXQU4gMHgxMDA4ZmZiNAorKyNkZWZpbmUgSUJVU19LRVlfUkZL aWxsIDB4MTAwOGZmYjUKKysjZGVmaW5lIElCVVNfS0VZX0F1ZGlvUHJlc2V0IDB4MTAwOGZmYjYK KysjZGVmaW5lIElCVVNfS0VZX1N3aXRjaF9WVF8xIDB4MTAwOGZlMDEKKysjZGVmaW5lIElCVVNf S0VZX1N3aXRjaF9WVF8yIDB4MTAwOGZlMDIKKysjZGVmaW5lIElCVVNfS0VZX1N3aXRjaF9WVF8z IDB4MTAwOGZlMDMKKysjZGVmaW5lIElCVVNfS0VZX1N3aXRjaF9WVF80IDB4MTAwOGZlMDQKKysj ZGVmaW5lIElCVVNfS0VZX1N3aXRjaF9WVF81IDB4MTAwOGZlMDUKKysjZGVmaW5lIElCVVNfS0VZ X1N3aXRjaF9WVF82IDB4MTAwOGZlMDYKKysjZGVmaW5lIElCVVNfS0VZX1N3aXRjaF9WVF83IDB4 MTAwOGZlMDcKKysjZGVmaW5lIElCVVNfS0VZX1N3aXRjaF9WVF84IDB4MTAwOGZlMDgKKysjZGVm aW5lIElCVVNfS0VZX1N3aXRjaF9WVF85IDB4MTAwOGZlMDkKKysjZGVmaW5lIElCVVNfS0VZX1N3 aXRjaF9WVF8xMCAweDEwMDhmZTBhCisrI2RlZmluZSBJQlVTX0tFWV9Td2l0Y2hfVlRfMTEgMHgx MDA4ZmUwYgorKyNkZWZpbmUgSUJVU19LRVlfU3dpdGNoX1ZUXzEyIDB4MTAwOGZlMGMKKysjZGVm aW5lIElCVVNfS0VZX1VuZ3JhYiAweDEwMDhmZTIwCisrI2RlZmluZSBJQlVTX0tFWV9DbGVhckdy YWIgMHgxMDA4ZmUyMQorKyNkZWZpbmUgSUJVU19LRVlfTmV4dF9WTW9kZSAweDEwMDhmZTIyCisr I2RlZmluZSBJQlVTX0tFWV9QcmV2X1ZNb2RlIDB4MTAwOGZlMjMKKysjZGVmaW5lIElCVVNfS0VZ X0xvZ1dpbmRvd1RyZWUgMHgxMDA4ZmUyNAorKyNkZWZpbmUgSUJVU19LRVlfTG9nR3JhYkluZm8g MHgxMDA4ZmUyNQorIAorICNlbmRpZiAvKiBfX0lCVVNfS0VZU1lNU19IX18gKi8KKy0tIAorMi4y OC4wCisKK0Zyb20gZGY0OTU2NjBhNmRhNDkyZmUwY2FjOGY3ZmU3NDhmMjVhMWMzMjE3YyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdt YWlsLmNvbT4KK0RhdGU6IE1vbiwgMjYgSnVsIDIwMjEgMjI6NTI6MjMgKzA5MDAKK1N1YmplY3Q6 IFtQQVRDSCA0LzZdIHNyYy9pYnVzZW5naW5lc2ltcGxlOiBDaGFuZ2UgZ2ludCB0byBpbnQKKwor LS0tCisgc3JjL2lidXNjb21wb3NldGFibGUuYyAgICAgICAgfCAxMjggKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9pYnVzZW5naW5lc2ltcGxlLmMgICAgICAgIHwgIDU4 ICsrKysrKystLS0tLS0tLQorIHNyYy9pYnVzZW5naW5lc2ltcGxlcHJpdmF0ZS5oIHwgICA2ICst CisgMyBmaWxlcyBjaGFuZ2VkLCA5NiBpbnNlcnRpb25zKCspLCA5NiBkZWxldGlvbnMoLSkKKwor ZGlmZiAtLWdpdCBhL3NyYy9pYnVzY29tcG9zZXRhYmxlLmMgYi9zcmMvaWJ1c2NvbXBvc2V0YWJs ZS5jCitpbmRleCA0ZWJmMTE5Yi4uYWE1OGYxMzYgMTAwNjQ0CistLS0gYS9zcmMvaWJ1c2NvbXBv c2V0YWJsZS5jCisrKysgYi9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jCitAQCAtNDcsNyArNDcsNyBA QAorIHR5cGVkZWYgc3RydWN0IHsKKyAgIGd1bmljaGFyICAgICAqc2VxdWVuY2U7CisgICBndW5p Y2hhciAgICAgKnZhbHVlczsKKy0gIGdjaGFyICAgICAgICAqY29tbWVudDsKKysgIGNoYXIgICAg ICAgICAqY29tbWVudDsKKyB9IElCdXNDb21wb3NlRGF0YTsKKyAKKyAKK0BAIC04NSw3ICs4NSw3 IEBAIHVuaWNoYXJfbGVuZ3RoIChndW5pY2hhciAqdW5pX2FycmF5KQorIAorIAorIHN0YXRpYyBn Ym9vbGVhbgorLWlzX2NvZGVwb2ludCAoY29uc3QgZ2NoYXIgKnN0cikKKytpc19jb2RlcG9pbnQg KGNvbnN0IGNoYXIgKnN0cikKKyB7CisgICAgIGludCBpOworIAorQEAgLTEwNCwxMSArMTA0LDEx IEBAIGlzX2NvZGVwb2ludCAoY29uc3QgZ2NoYXIgKnN0cikKKyAKKyBzdGF0aWMgZ2Jvb2xlYW4K KyBwYXJzZV9jb21wb3NlX3ZhbHVlIChJQnVzQ29tcG9zZURhdGEgICpjb21wb3NlX2RhdGEsCist ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAqdmFsLAorLSAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgKmxpbmUpCisrICAgICAgICAgICAgICAgICAgICAg Y29uc3QgY2hhciAgICAgICAqdmFsLAorKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg ICAgICAgKmxpbmUpCisgeworLSAgICBnY2hhciAqaGVhZCwgKmVuZCwgKnA7CistICAgIGdjaGFy ICp1c3RyID0gTlVMTDsKKysgICAgY2hhciAqaGVhZCwgKmVuZCwgKnA7CisrICAgIGNoYXIgKnVz dHIgPSBOVUxMOworICAgICBndW5pY2hhciAqdWNoYXJzID0gTlVMTCwgKnVwOworICAgICBHRXJy b3IgKmVycm9yID0gTlVMTDsKKyAgICAgaW50IG5fdWNoYXJzID0gMDsKK0BAIC0xODQsMTAgKzE4 NCwxMCBAQCBmYWlsOgorIAorIHN0YXRpYyBpbnQKKyBwYXJzZV9jb21wb3NlX3NlcXVlbmNlIChJ QnVzQ29tcG9zZURhdGEgKmNvbXBvc2VfZGF0YSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBnY2hhciAgICAgKnNlcSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hh ciAgICAgKmxpbmUpCisrICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAgICpz ZXEsCisrICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAgICpsaW5lKQorIHsK Ky0gICAgZ2NoYXIgKip3b3JkcyA9IGdfc3Ryc3BsaXQgKHNlcSwgIjwiLCAtMSk7CisrICAgIGNo YXIgKip3b3JkcyA9IGdfc3Ryc3BsaXQgKHNlcSwgIjwiLCAtMSk7CisgICAgIGludCBpOworICAg ICBpbnQgbiA9IDA7CisgCitAQCAtMTk4LDkgKzE5OCw5IEBAIHBhcnNlX2NvbXBvc2Vfc2VxdWVu Y2UgKElCdXNDb21wb3NlRGF0YSAqY29tcG9zZV9kYXRhLAorICAgICB9CisgCisgICAgIGZvciAo aSA9IDE7IHdvcmRzW2ldICE9IE5VTEw7IGkrKykgeworLSAgICAgICAgZ2NoYXIgKnN0YXJ0ID0g d29yZHNbaV07CistICAgICAgICBnY2hhciAqZW5kID0gaW5kZXggKHdvcmRzW2ldLCAnPicpOwor LSAgICAgICAgZ2NoYXIgKm1hdGNoOworKyAgICAgICAgY2hhciAqc3RhcnQgPSB3b3Jkc1tpXTsK KysgICAgICAgIGNoYXIgKmVuZCA9IGluZGV4ICh3b3Jkc1tpXSwgJz4nKTsKKysgICAgICAgIGNo YXIgKm1hdGNoOworICAgICAgICAgZ3VuaWNoYXIgY29kZXBvaW50OworIAorICAgICAgICAgaWYg KHdvcmRzW2ldWzBdID09ICdcMCcpCitAQCAtMjU2LDE4ICsyNTYsMTggQEAgZmFpbDoKKyB9Cisg CisgCistc3RhdGljIGdjaGFyICoKKy1leHBhbmRfaW5jbHVkZV9wYXRoIChjb25zdCBnY2hhciAq aW5jbHVkZV9wYXRoKSB7CistICAgIGdjaGFyICpvdXQgPSBzdHJkdXAgKCIiKTsKKy0gICAgY29u c3QgZ2NoYXIgKmhlYWQsICppOworLSAgICBnY2hhciAqZm9ybWVyLCAqbzsKKytzdGF0aWMgY2hh ciAqCisrZXhwYW5kX2luY2x1ZGVfcGF0aCAoY29uc3QgY2hhciAqaW5jbHVkZV9wYXRoKSB7Cisr ICAgIGNoYXIgKm91dCA9IHN0cmR1cCAoIiIpOworKyAgICBjb25zdCBjaGFyICpoZWFkLCAqaTsK KysgICAgY2hhciAqZm9ybWVyLCAqbzsKKyAKKyAgICAgZm9yIChoZWFkID0gaSA9IGluY2x1ZGVf cGF0aDsgKmk7ICsraSkgeworICAgICAgICAgLyogZXhwYW5kIHNlcXVlbmNlICovCisgICAgICAg ICBpZiAoKmkgPT0gJyUnKSB7CisgICAgICAgICAgICAgc3dpdGNoICgqKGkgKyAxKSkgeworICAg ICAgICAgICAgIGNhc2UgJ0gnOiB7IC8qICRIT01FICovCistICAgICAgICAgICAgICAgIGNvbnN0 IGdjaGFyICpob21lID0gZ2V0ZW52ICgiSE9NRSIpOworKyAgICAgICAgICAgICAgICBjb25zdCBj aGFyICpob21lID0gZ2V0ZW52ICgiSE9NRSIpOworICAgICAgICAgICAgICAgICBpZiAoIWhvbWUp IHsKKyAgICAgICAgICAgICAgICAgICAgIGdfd2FybmluZyAoIndoaWxlIHBhcnNpbmcgWENvbXBv c2UgaW5jbHVkZSB0YXJnZXQgJXMsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IiUlSCByZXBsYWNlbWVudCBmYWlsZWQgYmVjYXVzZSBIT01FIGlzIG5vdCAiCitAQCAtMzI1LDEx ICszMjUsMTEgQEAgZmFpbDoKKyAKKyBzdGF0aWMgdm9pZAorIHBhcnNlX2NvbXBvc2VfbGluZSAo R0xpc3QgICAgICAgKipjb21wb3NlX2xpc3QsCistICAgICAgICAgICAgICAgICAgICBjb25zdCBn Y2hhciAgKmxpbmUsCisrICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAgKmxpbmUsCisg ICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgKmNvbXBvc2VfbGVuLAorLSAgICAgICAg ICAgICAgICAgICAgZ2NoYXIgICAgICAgICoqaW5jbHVkZSkKKysgICAgICAgICAgICAgICAgICAg IGNoYXIgICAgICAgICoqaW5jbHVkZSkKKyB7CistICAgIGdjaGFyICoqY29tcG9uZW50cyA9IE5V TEw7CisrICAgIGNoYXIgKipjb21wb25lbnRzID0gTlVMTDsKKyAgICAgSUJ1c0NvbXBvc2VEYXRh ICpjb21wb3NlX2RhdGEgPSBOVUxMOworICAgICBpbnQgbDsKKyAKK0BAIC0zOTUsMTMgKzM5NSwx MyBAQCBmYWlsOgorIH0KKyAKKyAKKy1zdGF0aWMgZ2NoYXIgKgorK3N0YXRpYyBjaGFyICoKKyBn ZXRfZW5fY29tcG9zZV9maWxlICh2b2lkKQorIHsKKy0gICAgZ2NoYXIgKiBjb25zdCBzeXNfbGFu Z3NbXSA9IHsgImVuX1VTLlVURi04IiwgImVuX1VTIiwgImVuLlVURi04IiwKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImVuIiwgTlVMTCB9OworLSAgICBnY2hhciAqIGNvbnN0 ICpzeXNfbGFuZyA9IE5VTEw7CistICAgIGdjaGFyICpwYXRoID0gTlVMTDsKKysgICAgY2hhciAq IGNvbnN0IHN5c19sYW5nc1tdID0geyAiZW5fVVMuVVRGLTgiLCAiZW5fVVMiLCAiZW4uVVRGLTgi LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbiIsIE5VTEwgfTsKKysgICAg Y2hhciAqIGNvbnN0ICpzeXNfbGFuZyA9IE5VTEw7CisrICAgIGNoYXIgKnBhdGggPSBOVUxMOwor ICAgICBmb3IgKHN5c19sYW5nID0gc3lzX2xhbmdzOyAqc3lzX2xhbmc7IHN5c19sYW5nKyspIHsK KyAgICAgICAgIHBhdGggPSBnX2J1aWxkX2ZpbGVuYW1lIChYMTFfREFUQURJUiwgKnN5c19sYW5n LCAiQ29tcG9zZSIsIE5VTEwpOworICAgICAgICAgaWYgKGdfZmlsZV90ZXN0IChwYXRoLCBHX0ZJ TEVfVEVTVF9FWElTVFMpKQorQEAgLTQxMywxMSArNDEzLDExIEBAIGdldF9lbl9jb21wb3NlX2Zp bGUgKHZvaWQpCisgCisgCisgc3RhdGljIEdMaXN0ICoKKy1pYnVzX2NvbXBvc2VfbGlzdF9wYXJz ZV9maWxlIChjb25zdCBnY2hhciAqY29tcG9zZV9maWxlLAorLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCAgICAgICAgICptYXhfY29tcG9zZV9sZW4pCisraWJ1c19jb21wb3NlX2xp c3RfcGFyc2VfZmlsZSAoY29uc3QgY2hhciAqY29tcG9zZV9maWxlLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCAgICAgICAgKm1heF9jb21wb3NlX2xlbikKKyB7CistICAgIGdj aGFyICpjb250ZW50cyA9IE5VTEw7CistICAgIGdjaGFyICoqbGluZXMgPSBOVUxMOworKyAgICBj aGFyICpjb250ZW50cyA9IE5VTEw7CisrICAgIGNoYXIgKipsaW5lcyA9IE5VTEw7CisgICAgIGdz aXplIGxlbmd0aCA9IDA7CisgICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworICAgICBHTGlzdCAq Y29tcG9zZV9saXN0ID0gTlVMTDsKK0BAIC00MzUsMTQgKzQzNSwxNCBAQCBpYnVzX2NvbXBvc2Vf bGlzdF9wYXJzZV9maWxlIChjb25zdCBnY2hhciAqY29tcG9zZV9maWxlLAorICAgICBnX2ZyZWUg KGNvbnRlbnRzKTsKKyAgICAgZm9yIChpID0gMDsgbGluZXNbaV0gIT0gTlVMTDsgaSsrKSB7Cisg ICAgICAgICBpbnQgY29tcG9zZV9sZW4gPSAwOworLSAgICAgICAgZ2NoYXIgKmluY2x1ZGUgPSBO VUxMOworKyAgICAgICAgY2hhciAqaW5jbHVkZSA9IE5VTEw7CisgICAgICAgICBwYXJzZV9jb21w b3NlX2xpbmUgKCZjb21wb3NlX2xpc3QsIGxpbmVzW2ldLCAmY29tcG9zZV9sZW4sICZpbmNsdWRl KTsKKyAgICAgICAgIGlmICgqbWF4X2NvbXBvc2VfbGVuIDwgY29tcG9zZV9sZW4pCisgICAgICAg ICAgICAgKm1heF9jb21wb3NlX2xlbiA9IGNvbXBvc2VfbGVuOworICAgICAgICAgaWYgKGluY2x1 ZGUgJiYgKmluY2x1ZGUpIHsKKyAgICAgICAgICAgICBHU3RhdEJ1ZiBidWZfaW5jbHVkZSA9IHsg MCwgfTsKKyAgICAgICAgICAgICBHU3RhdEJ1ZiBidWZfcGFyZW50ID0geyAwLCB9OworLSAgICAg ICAgICAgIGdjaGFyICplbl9jb21wb3NlOworKyAgICAgICAgICAgIGNoYXIgKmVuX2NvbXBvc2U7 CisgICAgICAgICAgICAgZXJybm8gPSAwOworICAgICAgICAgICAgIGlmIChnX3N0YXQgKGluY2x1 ZGUsICAmYnVmX2luY2x1ZGUpKSB7CisgICAgICAgICAgICAgICAgIGdfd2FybmluZyAoIkNhbm5v dCBhY2Nlc3MgJXM6ICVzIiwKK0BAIC01ODgsNyArNTg4LDcgQEAgaWJ1c19jb21wb3NlX2xpc3Rf Y2hlY2tfZHVwbGljYXRlZCAoR0xpc3QgKmNvbXBvc2VfbGlzdCwKKyB9CisgCisgCistc3RhdGlj IGdpbnQKKytzdGF0aWMgaW50CisgaWJ1c19jb21wb3NlX2RhdGFfY29tcGFyZSAoZ3BvaW50ZXIg YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciBiLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdwb2ludGVyIGRhdGEpCitAQCAtNjI1LDcgKzYyNSw3IEBAIGlidXNf Y29tcG9zZV9saXN0X3ByaW50IChHTGlzdCAqY29tcG9zZV9saXN0LAorICAgICBpbnQgaSwgajsK KyAgICAgSUJ1c0NvbXBvc2VEYXRhICpjb21wb3NlX2RhdGE7CisgICAgIGludCB0b3RhbF9zaXpl ID0gMDsKKy0gICAgY29uc3QgZ2NoYXIgKmtleXZhbDsKKysgICAgY29uc3QgY2hhciAqa2V5dmFs OworIAorICAgICBmb3IgKGxpc3QgPSBjb21wb3NlX2xpc3Q7IGxpc3QgIT0gTlVMTDsgbGlzdCA9 IGxpc3QtPm5leHQpIHsKKyAgICAgICAgIGNvbXBvc2VfZGF0YSA9IGxpc3QtPmRhdGE7CitAQCAt NjgyLDEzICs2ODIsMTMgQEAgaWJ1c19jb21wb3NlX3RhYmxlX2RhdGFfaGFzaCAoZ2NvbnN0cG9p bnRlciB2LAorIH0KKyAKKyAKKy1zdGF0aWMgZ2NoYXIgKgorK3N0YXRpYyBjaGFyICoKKyBpYnVz X2NvbXBvc2VfaGFzaF9nZXRfY2FjaGVfcGF0aCAoZ3VpbnQzMiBoYXNoKQorIHsKKy0gICAgZ2No YXIgKmJhc2VuYW1lID0gTlVMTDsKKy0gICAgY29uc3QgZ2NoYXIgKmNhY2hlX2RpcjsKKy0gICAg Z2NoYXIgKmRpciA9IE5VTEw7CistICAgIGdjaGFyICpwYXRoID0gTlVMTDsKKysgICAgY2hhciAq YmFzZW5hbWUgPSBOVUxMOworKyAgICBjb25zdCBjaGFyICpjYWNoZV9kaXI7CisrICAgIGNoYXIg KmRpciA9IE5VTEw7CisrICAgIGNoYXIgKnBhdGggPSBOVUxMOworIAorICAgICBiYXNlbmFtZSA9 IGdfc3RyZHVwX3ByaW50ZiAoIiUwOHguY2FjaGUiLCBoYXNoKTsKKyAKK0BAIC03MTUsNyArNzE1 LDcgQEAgaWJ1c19jb21wb3NlX2hhc2hfZ2V0X2NhY2hlX3BhdGggKGd1aW50MzIgaGFzaCkKKyBz dGF0aWMgR1ZhcmlhbnQgKgorIGlidXNfY29tcG9zZV90YWJsZV9zZXJpYWxpemUgKElCdXNDb21w b3NlVGFibGVFeCAqY29tcG9zZV90YWJsZSkKKyB7CistICAgIGNvbnN0IGdjaGFyICpoZWFkZXIg PSBJQlVTX0NPTVBPU0VfVEFCTEVfTUFHSUM7CisrICAgIGNvbnN0IGNoYXIgKmhlYWRlciA9IElC VVNfQ09NUE9TRV9UQUJMRV9NQUdJQzsKKyAgICAgY29uc3QgZ3VpbnQxNiB2ZXJzaW9uID0gSUJV U19DT01QT1NFX1RBQkxFX1ZFUlNJT047CisgICAgIGd1aW50MTYgbWF4X3NlcV9sZW47CisgICAg IGd1aW50MTYgaW5kZXhfc3RyaWRlOworQEAgLTgyNSw3ICs4MjUsNyBAQCBvdXRfc2VyaWFsaXpl OgorIH0KKyAKKyAKKy1zdGF0aWMgZ2ludAorK3N0YXRpYyBpbnQKKyBpYnVzX2NvbXBvc2VfdGFi bGVfZmluZCAoZ2NvbnN0cG9pbnRlciBkYXRhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg Z2NvbnN0cG9pbnRlciBkYXRhMikKKyB7CitAQCAtODM3LDggKzgzNyw4IEBAIGlidXNfY29tcG9z ZV90YWJsZV9maW5kIChnY29uc3Rwb2ludGVyIGRhdGExLAorIAorIAorIHN0YXRpYyBJQnVzQ29t cG9zZVRhYmxlRXggKgorLWlidXNfY29tcG9zZV90YWJsZV9kZXNlcmlhbGl6ZSAoY29uc3QgZ2No YXIgKmNvbnRlbnRzLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NpemUgICAg ICAgIGxlbmd0aCkKKytpYnVzX2NvbXBvc2VfdGFibGVfZGVzZXJpYWxpemUgKGNvbnN0IGNoYXIg KmNvbnRlbnRzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NpemUgICAgICAg bGVuZ3RoKQorIHsKKyAgICAgSUJ1c0NvbXBvc2VUYWJsZUV4ICpyZXR2YWwgPSBOVUxMOworICAg ICBHVmFyaWFudFR5cGUgKnR5cGU7CitAQCAtODQ2LDcgKzg0Niw3IEBAIGlidXNfY29tcG9zZV90 YWJsZV9kZXNlcmlhbGl6ZSAoY29uc3QgZ2NoYXIgKmNvbnRlbnRzLAorICAgICBHVmFyaWFudCAq dmFyaWFudF9kYXRhXzMyYml0X2ZpcnN0ID0gTlVMTDsKKyAgICAgR1ZhcmlhbnQgKnZhcmlhbnRf ZGF0YV8zMmJpdF9zZWNvbmQgPSBOVUxMOworICAgICBHVmFyaWFudCAqdmFyaWFudF90YWJsZSA9 IE5VTEw7CistICAgIGNvbnN0IGdjaGFyICpoZWFkZXIgPSBOVUxMOworKyAgICBjb25zdCBjaGFy ICpoZWFkZXIgPSBOVUxMOworICAgICBndWludDE2IHZlcnNpb24gPSAwOworICAgICBndWludDE2 IG1heF9zZXFfbGVuID0gMDsKKyAgICAgZ3VpbnQxNiBuX3NlcXMgPSAwOworQEAgLTEwMjAsOCAr MTAyMCw4IEBAIGlidXNfY29tcG9zZV90YWJsZV9sb2FkX2NhY2hlIChjb25zdCBnY2hhciAqY29t cG9zZV9maWxlKQorIHsKKyAgICAgSUJ1c0NvbXBvc2VUYWJsZUV4ICpyZXR2YWwgPSBOVUxMOwor ICAgICBndWludDMyIGhhc2g7CistICAgIGdjaGFyICpwYXRoID0gTlVMTDsKKy0gICAgZ2NoYXIg KmNvbnRlbnRzID0gTlVMTDsKKysgICAgY2hhciAqcGF0aCA9IE5VTEw7CisrICAgIGNoYXIgKmNv bnRlbnRzID0gTlVMTDsKKyAgICAgR1N0YXRCdWYgb3JpZ2luYWxfYnVmOworICAgICBHU3RhdEJ1 ZiBjYWNoZV9idWY7CisgICAgIGdzaXplIGxlbmd0aCA9IDA7CitAQCAtMTA2Myw5ICsxMDYzLDkg QEAgaWJ1c19jb21wb3NlX3RhYmxlX2xvYWRfY2FjaGUgKGNvbnN0IGdjaGFyICpjb21wb3NlX2Zp bGUpCisgdm9pZAorIGlidXNfY29tcG9zZV90YWJsZV9zYXZlX2NhY2hlIChJQnVzQ29tcG9zZVRh YmxlRXggKmNvbXBvc2VfdGFibGUpCisgeworLSAgICBnY2hhciAqcGF0aCA9IE5VTEw7CisrICAg IGNoYXIgKnBhdGggPSBOVUxMOworICAgICBHVmFyaWFudCAqdmFyaWFudF90YWJsZSA9IE5VTEw7 CistICAgIGNvbnN0IGdjaGFyICpjb250ZW50cyA9IE5VTEw7CisrICAgIGNvbnN0IGNoYXIgKmNv bnRlbnRzID0gTlVMTDsKKyAgICAgR0Vycm9yICplcnJvciA9IE5VTEw7CisgICAgIGdzaXplIGxl bmd0aCA9IDA7CisgCitAQCAtMTM5MiwxMyArMTM5MiwxMyBAQCBjb21wYXJlX3NlcSAoY29uc3Qg dm9pZCAqa2V5LCBjb25zdCB2b2lkICp2YWx1ZSkKKyBnYm9vbGVhbgorIGlidXNfY29tcG9zZV90 YWJsZV9jaGVjayAoY29uc3QgSUJ1c0NvbXBvc2VUYWJsZUV4ICp0YWJsZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIGd1aW50MTYgICAgICAgICAgICAgICAgICAqY29tcG9zZV9idWZmZXIs CistICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50ICAgICAgICAgICAgICAgICAgICAgIG5f Y29tcG9zZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAg ICAgICAgbl9jb21wb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAg ICAgICAgICAgICAgICpjb21wb3NlX2ZpbmlzaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IGdib29sZWFuICAgICAgICAgICAgICAgICAqY29tcG9zZV9tYXRjaCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdTdHJpbmcgICAgICAgICAgICAgICAgICAqb3V0cHV0LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICBpc18zMmJpdCkKKyB7 CistICAgIGdpbnQgcm93X3N0cmlkZSA9IHRhYmxlLT5tYXhfc2VxX2xlbiArIDI7CisrICAgIGlu dCByb3dfc3RyaWRlID0gdGFibGUtPm1heF9zZXFfbGVuICsgMjsKKyAgICAgZ3VpbnQxNiAqZGF0 YV9maXJzdDsKKyAgICAgaW50IG5fc2VxczsKKyAgICAgZ3VpbnQxNiAqc2VxOworQEAgLTE0NDgs NyArMTQ0OCw3IEBAIGlidXNfY29tcG9zZV90YWJsZV9jaGVjayAoY29uc3QgSUJ1c0NvbXBvc2VU YWJsZUV4ICp0YWJsZSwKKyAgICAgICAgIGd1bmljaGFyIHZhbHVlID0gMDsKKyAgICAgICAgIGlu dCBudW0gPSAwOworICAgICAgICAgaW50IGluZGV4ID0gMDsKKy0gICAgICAgIGdjaGFyICpvdXRw dXRfc3RyID0gTlVMTDsKKysgICAgICAgIGNoYXIgKm91dHB1dF9zdHIgPSBOVUxMOworICAgICAg ICAgR0Vycm9yICplcnJvciA9IE5VTEw7CisgCisgICAgICAgICBpZiAoaXNfMzJiaXQpIHsKK0BA IC0xNTI2LDE1ICsxNTI2LDE1IEBAIGdib29sZWFuCisgaWJ1c19jb21wb3NlX3RhYmxlX2NvbXBh Y3RfY2hlY2sgKGNvbnN0IElCdXNDb21wb3NlVGFibGVDb21wYWN0RXggKnRhYmxlLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDE2CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNvbXBvc2VfYnVm ZmVyLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBuX2NvbXBvc2UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fY29tcG9zZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY29tcG9zZV9m aW5pc2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1bmljaGFyICAgICAg ICAgICAgICAgICAgICAgICAqKm91dHB1dF9jaGFycykKKyB7CistICAgIGdpbnQgcm93X3N0cmlk ZTsKKysgICAgaW50IHJvd19zdHJpZGU7CisgICAgIGd1aW50MTYgKnNlcV9pbmRleDsKKyAgICAg Z3VpbnQxNiAqc2VxOworLSAgICBnaW50IGk7CisrICAgIGludCBpOworIAorICAgICBpZiAoY29t cG9zZV9maW5pc2gpCisgICAgICAgICAqY29tcG9zZV9maW5pc2ggPSBGQUxTRTsKK0BAIC0xNjU0 LDE0ICsxNjU0LDE0IEBAIGlidXNfY29tcG9zZV90YWJsZV9jb21wYWN0X2NoZWNrIChjb25zdCBJ QnVzQ29tcG9zZVRhYmxlQ29tcGFjdEV4ICp0YWJsZSwKKyAgKiBwZXJtdXRhdGlvbnMgb2YgdGhl IGRpYWNyaXRpYyBtYXJrcywgdGhlbiBhdHRlbXB0IHRvIG5vcm1hbGl6ZS4KKyAgKi8KKyBzdGF0 aWMgZ2Jvb2xlYW4KKy1jaGVja19ub3JtYWxpemVfbmZjIChndW5pY2hhciogY29tYmluYXRpb25f YnVmZmVyLCBnaW50IG5fY29tcG9zZSkKKytjaGVja19ub3JtYWxpemVfbmZjIChndW5pY2hhciog Y29tYmluYXRpb25fYnVmZmVyLCBpbnQgbl9jb21wb3NlKQorIHsKKyAgICAgZ3VuaWNoYXIgY29t YmluYXRpb25fYnVmZmVyX3RlbXBbSUJVU19NQVhfQ09NUE9TRV9MRU5dOworLSAgICBnY2hhciAq Y29tYmluYXRpb25fdXRmOF90ZW1wID0gTlVMTDsKKy0gICAgZ2NoYXIgKm5mY190ZW1wID0gTlVM TDsKKy0gICAgZ2ludCBuX2NvbWJpbmF0aW9uczsKKysgICAgY2hhciAqY29tYmluYXRpb25fdXRm OF90ZW1wID0gTlVMTDsKKysgICAgY2hhciAqbmZjX3RlbXAgPSBOVUxMOworKyAgICBpbnQgbl9j b21iaW5hdGlvbnM7CisgICAgIGd1bmljaGFyIHRlbXBfc3dhcDsKKy0gICAgZ2ludCBpOworKyAg ICBpbnQgaTsKKyAKKyAgICAgbl9jb21iaW5hdGlvbnMgPSAxOworIAorQEAgLTE3MDMsOCArMTcw Myw4IEBAIGNoZWNrX25vcm1hbGl6ZV9uZmMgKGd1bmljaGFyKiBjb21iaW5hdGlvbl9idWZmZXIs IGdpbnQgbl9jb21wb3NlKQorICAgICAgICAgZ19mcmVlIChuZmNfdGVtcCk7CisgCisgICAgICAg ICBpZiAobl9jb21wb3NlID4gMikgeworLSAgICAgICAgICAgIGdpbnQgaiA9IGkgJSAobl9jb21w b3NlIC0gMSkgKyAxOworLSAgICAgICAgICAgIGdpbnQgayA9IChpKzEpICUgKG5fY29tcG9zZSAt IDEpICsgMTsKKysgICAgICAgICAgICBpbnQgaiA9IGkgJSAobl9jb21wb3NlIC0gMSkgKyAxOwor KyAgICAgICAgICAgIGludCBrID0gKGkrMSkgJSAobl9jb21wb3NlIC0gMSkgKyAxOworICAgICAg ICAgICAgIGlmIChqID49IElCVVNfTUFYX0NPTVBPU0VfTEVOKSB7CisgICAgICAgICAgICAgICAg IGdfd2FybmluZyAoImogPj0gSUJVU19NQVhfQ09NUE9TRV9MRU4gZm9yICIgXAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJjb21iaW5hdGlvbl9idWZmZXJfdGVtcCIpOworQEAgLTE3Mjks MTMgKzE3MjksMTMgQEAgY2hlY2tfbm9ybWFsaXplX25mYyAoZ3VuaWNoYXIqIGNvbWJpbmF0aW9u X2J1ZmZlciwgZ2ludCBuX2NvbXBvc2UpCisgCisgZ2Jvb2xlYW4KKyBpYnVzX2NoZWNrX2FsZ29y aXRobWljYWxseSAoY29uc3QgZ3VpbnQxNiAqY29tcG9zZV9idWZmZXIsCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdpbnQgICAgICAgICAgIG5fY29tcG9zZSwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgbl9jb21wb3NlLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBndW5pY2hhciAgICAgICpvdXRwdXRfY2hhcikKKyAKKyB7CistICAgIGdp bnQgaTsKKysgICAgaW50IGk7CisgICAgIGd1bmljaGFyIGNvbWJpbmF0aW9uX2J1ZmZlcltJQlVT X01BWF9DT01QT1NFX0xFTl07CistICAgIGdjaGFyICpjb21iaW5hdGlvbl91dGY4LCAqbmZjOwor KyAgICBjaGFyICpjb21iaW5hdGlvbl91dGY4LCAqbmZjOworIAorICAgICBpZiAob3V0cHV0X2No YXIpCisgICAgICAgICAqb3V0cHV0X2NoYXIgPSAwOworZGlmZiAtLWdpdCBhL3NyYy9pYnVzZW5n aW5lc2ltcGxlLmMgYi9zcmMvaWJ1c2VuZ2luZXNpbXBsZS5jCitpbmRleCA1N2NhMTBjNC4uNjk5 Y2YwZDQgMTAwNjQ0CistLS0gYS9zcmMvaWJ1c2VuZ2luZXNpbXBsZS5jCisrKysgYi9zcmMvaWJ1 c2VuZ2luZXNpbXBsZS5jCitAQCAtNzksOCArNzksOCBAQCB0eXBlZGVmIHN0cnVjdCB7Cisgc3Ry dWN0IF9JQnVzRW5naW5lU2ltcGxlUHJpdmF0ZSB7CisgICAgIGd1aW50MTYgICAgICAgICAgICAq Y29tcG9zZV9idWZmZXI7CisgICAgIGd1bmljaGFyICAgICAgICAgICAgdGVudGF0aXZlX21hdGNo OworLSAgICBnY2hhciAgICAgICAgICAgICAgKnRlbnRhdGl2ZV9lbW9qaTsKKy0gICAgZ2ludCAg ICAgICAgICAgICAgICB0ZW50YXRpdmVfbWF0Y2hfbGVuOworKyAgICBjaGFyICAgICAgICAgICAg ICAgKnRlbnRhdGl2ZV9lbW9qaTsKKysgICAgaW50ICAgICAgICAgICAgICAgICB0ZW50YXRpdmVf bWF0Y2hfbGVuOworIAorICAgICBndWludCAgICAgICAgICAgICAgIGhleF9tb2RlX2VuYWJsZWQg OiAxOworICAgICBndWludCAgICAgICAgICAgICAgIGluX2hleF9zZXF1ZW5jZSA6IDE7CitAQCAt MTQyLDcgKzE0Miw3IEBAIHN0YXRpYyB2b2lkICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfY2FuZGlk YXRlX2NsaWNrZWQKKyBzdGF0aWMgdm9pZCAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX2NvbW1pdF9j aGFyIChJQnVzRW5naW5lU2ltcGxlICAgICpzaW1wbGUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VuaWNoYXIgICAgICAgICAgICAgY2gpOworIHN0 YXRpYyB2b2lkICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfY29tbWl0X3N0ciAgKElCdXNFbmdpbmVT aW1wbGUgICAgKnNpbXBsZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICpzdHIpOworKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgICAgICAgICAgKnN0cik7 Cisgc3RhdGljIHZvaWQgICAgIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90ZXh0 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUJ1c0Vu Z2luZVNpbXBsZSAgICAqc2ltcGxlKTsKKyAKK0BAIC0yNjAsMTAgKzI2MCwxMCBAQCBpYnVzX2Vu Z2luZV9zaW1wbGVfY29tbWl0X2NoYXIgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKKyAKKyBz dGF0aWMgdm9pZAorIGlidXNfZW5naW5lX3NpbXBsZV9jb21taXRfc3RyIChJQnVzRW5naW5lU2lt cGxlICpzaW1wbGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFy ICAgICAgKnN0cikKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAg ICAgICAqc3RyKQorIHsKKyAgICAgSUJ1c0VuZ2luZVNpbXBsZVByaXZhdGUgKnByaXYgPSBzaW1w bGUtPnByaXY7CistICAgIGdjaGFyICpiYWNrdXBfc3RyOworKyAgICBjaGFyICpiYWNrdXBfc3Ry OworIAorICAgICBnX3JldHVybl9pZl9mYWlsIChzdHIgJiYgKnN0cik7CisgCitAQCAtMzY4LDE1 ICszNjgsMTUgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQgKElCdXNF bmdpbmVTaW1wbGUgKnNpbXBsZSkKKyAKKyBzdGF0aWMgZ2Jvb2xlYW4KKyBjaGVja19oZXggKElC dXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKKy0gICAgICAgICAgIGdpbnQgICAgICAgICAgICAgIG5f Y29tcG9zZSkKKysgICAgICAgICAgIGludCAgICAgICAgICAgICAgIG5fY29tcG9zZSkKKyB7Cisg ICAgIElCdXNFbmdpbmVTaW1wbGVQcml2YXRlICpwcml2ID0gc2ltcGxlLT5wcml2OworIAorLSAg ICBnaW50IGk7CisrICAgIGludCBpOworICAgICBHU3RyaW5nICpzdHI7CisgICAgIGd1bG9uZyBu OworLSAgICBnY2hhciAqbnB0ciA9IE5VTEw7CistICAgIGdjaGFyIGJ1Zls3XTsKKysgICAgY2hh ciAqbnB0ciA9IE5VTEw7CisrICAgIGNoYXIgYnVmWzddOworIAorICAgICBDSEVDS19DT01QT1NF X0JVRkZFUl9MRU5HVEggKG5fY29tcG9zZSk7CisgCitAQCAtNDUzLDE0ICs0NTMsMTQgQEAgbG9h ZF9lbW9qaV9kaWN0ICgpCisgCisgc3RhdGljIGdib29sZWFuCisgY2hlY2tfZW1vamlfdGFibGUg KElCdXNFbmdpbmVTaW1wbGUgICAgICAgKnNpbXBsZSwKKy0gICAgICAgICAgICAgICAgICAgZ2lu dCAgICAgICAgICAgICAgICAgICAgbl9jb21wb3NlLAorLSAgICAgICAgICAgICAgICAgICBnaW50 ICAgICAgICAgICAgICAgICAgICBpbmRleCkKKysgICAgICAgICAgICAgICAgICAgaW50ICAgICAg ICAgICAgICAgICAgICAgbl9jb21wb3NlLAorKyAgICAgICAgICAgICAgICAgICBpbnQgICAgICAg ICAgICAgICAgICAgICBpbmRleCkKKyB7CisgICAgIElCdXNFbmdpbmVTaW1wbGVQcml2YXRlICpw cml2ID0gc2ltcGxlLT5wcml2OworICAgICBJQnVzRW5naW5lRGljdCAqZW1vamlfZGljdCA9IHBy aXYtPmVtb2ppX2RpY3Q7CisgICAgIEdTdHJpbmcgKnN0ciA9IE5VTEw7CistICAgIGdpbnQgaTsK Ky0gICAgZ2NoYXIgYnVmWzddOworKyAgICBpbnQgaTsKKysgICAgY2hhciBidWZbN107CisgICAg IEdTTGlzdCAqd29yZHMgPSBOVUxMOworIAorICAgICBnX2Fzc2VydCAoSUJVU19JU19FTkdJTkVf U0lNUExFIChzaW1wbGUpKTsKK0BAIC01MzUsNyArNTM1LDcgQEAgY2hlY2tfZW1vamlfdGFibGUg KElCdXNFbmdpbmVTaW1wbGUgICAgICAgKnNpbXBsZSwKKyAKKyBzdGF0aWMgZ2Jvb2xlYW4KKyBu b19zZXF1ZW5jZV9tYXRjaGVzIChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCistICAgICAgICAg ICAgICAgICAgICAgZ2ludCAgICAgICAgICAgICAgbl9jb21wb3NlLAorKyAgICAgICAgICAgICAg ICAgICAgIGludCAgICAgICAgICAgICAgIG5fY29tcG9zZSwKKyAgICAgICAgICAgICAgICAgICAg ICBndWludCAgICAgICAgICAgICBrZXl2YWwsCisgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQg ICAgICAgICAgICAga2V5Y29kZSwKKyAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAg ICAgICBtb2RpZmllcnMpCitAQCAtNTUwLDcgKzU1MCw3IEBAIG5vX3NlcXVlbmNlX21hdGNoZXMg KElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKKyAgICAgICogbWF0Y2ggcGVuZGluZy4KKyAgICAg ICovCisgICAgIGlmIChwcml2LT50ZW50YXRpdmVfbWF0Y2gpIHsKKy0gICAgICAgIGdpbnQgbGVu ID0gcHJpdi0+dGVudGF0aXZlX21hdGNoX2xlbjsKKysgICAgICAgIGludCBsZW4gPSBwcml2LT50 ZW50YXRpdmVfbWF0Y2hfbGVuOworICAgICAgICAgaW50IGk7CisgCisgICAgICAgICBpYnVzX2Vu Z2luZV9zaW1wbGVfY29tbWl0X2NoYXIgKHNpbXBsZSwgcHJpdi0+dGVudGF0aXZlX21hdGNoKTsK K0BAIC02MTUsNyArNjE1LDcgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9sb29rdXBfYW5k X2F1eF90YWJsZSAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlKQorIHsKKyAgICAgSUJ1c0VuZ2lu ZVNpbXBsZVByaXZhdGUgKnByaXY7CisgICAgIGd1aW50IGluZGV4LCBjYW5kaWRhdGVzOworLSAg ICBnY2hhciAqYXV4X2xhYmVsID0gTlVMTDsKKysgICAgY2hhciAqYXV4X2xhYmVsID0gTlVMTDsK KyAgICAgSUJ1c1RleHQgKnRleHQgPSBOVUxMOworIAorICAgICBnX3JldHVybl9pZl9mYWlsIChJ QlVTX0lTX0VOR0lORV9TSU1QTEUgKHNpbXBsZSkpOworQEAgLTY5Nyw3ICs2OTcsNyBAQCBpYnVz X2VuZ2luZV9zaW1wbGVfc2V0X251bWJlcl9vbl9sb29rdXBfdGFibGUgKElCdXNFbmdpbmVTaW1w bGUgKnNpbXBsZSwKKyAKKyBzdGF0aWMgZ2Jvb2xlYW4KKyBpYnVzX2VuZ2luZV9zaW1wbGVfY2hl Y2tfYWxsX2NvbXBvc2VfdGFibGUgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAgICAgICAgIG5f Y29tcG9zZSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCAgICAgICAgICAgICAgIG5fY29tcG9zZSkKKyB7CisgICAgIElCdXNFbmdpbmVTaW1wbGVQcml2 YXRlICpwcml2ID0gc2ltcGxlLT5wcml2OworICAgICBnYm9vbGVhbiBjb21wb3NlX2ZpbmlzaCA9 IEZBTFNFOworQEAgLTgxOCw3ICs4MTgsNyBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfcHJvY2Vzc19r ZXlfZXZlbnQgKElCdXNFbmdpbmUgKmVuZ2luZSwKKyB7CisgICAgIElCdXNFbmdpbmVTaW1wbGUg KnNpbXBsZSA9IChJQnVzRW5naW5lU2ltcGxlICopZW5naW5lOworICAgICBJQnVzRW5naW5lU2lt cGxlUHJpdmF0ZSAqcHJpdiA9IHNpbXBsZS0+cHJpdjsKKy0gICAgZ2ludCBuX2NvbXBvc2UgPSAw OworKyAgICBpbnQgbl9jb21wb3NlID0gMDsKKyAgICAgZ2Jvb2xlYW4gaGF2ZV9oZXhfbW9kczsK KyAgICAgZ2Jvb2xlYW4gaXNfaGV4X3N0YXJ0ID0gRkFMU0U7CisgICAgIGdib29sZWFuIGlzX2Vt b2ppX3N0YXJ0ID0gRkFMU0U7CitAQCAtODI4LDcgKzgyOCw3IEBAIGlidXNfZW5naW5lX3NpbXBs ZV9wcm9jZXNzX2tleV9ldmVudCAoSUJ1c0VuZ2luZSAqZW5naW5lLAorICAgICBnYm9vbGVhbiBp c19lc2NhcGU7CisgICAgIGd1aW50IGhleF9rZXl2YWw7CisgICAgIGd1aW50IHByaW50YWJsZV9r ZXl2YWw7CistICAgIGdpbnQgaTsKKysgICAgaW50IGk7CisgCisgICAgIHdoaWxlIChuX2NvbXBv c2UgPD0gQ09NUE9TRV9CVUZGRVJfU0laRSAmJiBwcml2LT5jb21wb3NlX2J1ZmZlcltuX2NvbXBv c2VdICE9IDApCisgICAgICAgICBuX2NvbXBvc2UrKzsKK0BAIC0xMjc0LDcgKzEyNzQsNyBAQCBp YnVzX2VuZ2luZV9zaW1wbGVfY2FuZGlkYXRlX2NsaWNrZWQgKElCdXNFbmdpbmUgKmVuZ2luZSwK KyAgICAgSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlID0gKElCdXNFbmdpbmVTaW1wbGUgKillbmdp bmU7CisgICAgIElCdXNFbmdpbmVTaW1wbGVQcml2YXRlICpwcml2ID0gc2ltcGxlLT5wcml2Owor ICAgICBndWludCBrZXl2YWw7CistICAgIGdpbnQgbl9jb21wb3NlID0gMDsKKysgICAgaW50IG5f Y29tcG9zZSA9IDA7CisgCisgICAgIGlmIChwcml2LT5sb29rdXBfdGFibGUgPT0gTlVMTCB8fCAh cHJpdi0+bG9va3VwX3RhYmxlX3Zpc2libGUpCisgICAgICAgICByZXR1cm47CitAQCAtMTMwOCwx OCArMTMwOCwxOCBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfYWRkX3RhYmxlX2J5X2xvY2FsZSAoSUJ1 c0VuZ2luZVNpbXBsZSAqc2ltcGxlLAorIHsKKyAgICAgLyogTm93IGlidXNfZW5naW5lX3NpbXBs ZV9hZGRfY29tcG9zZV9maWxlKCkgYWx3YXlzIHJldHVybnMgVFJVRS4gKi8KKyAgICAgZ2Jvb2xl YW4gcmV0dmFsID0gVFJVRTsKKy0gICAgZ2NoYXIgKnBhdGggPSBOVUxMOworLSAgICBjb25zdCBn Y2hhciAqaG9tZTsKKysgICAgY2hhciAqcGF0aCA9IE5VTEw7CisrICAgIGNvbnN0IGNoYXIgKmhv bWU7CisgI2lmIEdMSUJfQ0hFQ0tfVkVSU0lPTiAoMiwgNTgsIDApCistICAgIGNvbnN0IGdjaGFy ICogY29uc3QgKmxhbmdzOworLSAgICBjb25zdCBnY2hhciAqIGNvbnN0ICpsYW5nID0gTlVMTDsK KysgICAgY29uc3QgY2hhciAqIGNvbnN0ICpsYW5nczsKKysgICAgY29uc3QgY2hhciAqIGNvbnN0 ICpsYW5nID0gTlVMTDsKKyAjZWxzZQorLSAgICBjb25zdCBnY2hhciAqX2xvY2FsZTsKKy0gICAg Z2NoYXIgKipsYW5ncyA9IE5VTEw7CistICAgIGdjaGFyICoqbGFuZyA9IE5VTEw7CisrICAgIGNv bnN0IGNoYXIgKl9sb2NhbGU7CisrICAgIGNoYXIgKipsYW5ncyA9IE5VTEw7CisrICAgIGNoYXIg KipsYW5nID0gTlVMTDsKKyAjZW5kaWYKKy0gICAgZ2NoYXIgKiBjb25zdCBzeXNfbGFuZ3NbXSA9 IHsgImVsX2dyIiwgImZpX2ZpIiwgInB0X2JyIiwgTlVMTCB9OworLSAgICBnY2hhciAqIGNvbnN0 ICpzeXNfbGFuZyA9IE5VTEw7CisrICAgIGNoYXIgKiBjb25zdCBzeXNfbGFuZ3NbXSA9IHsgImVs X2dyIiwgImZpX2ZpIiwgInB0X2JyIiwgTlVMTCB9OworKyAgICBjaGFyICogY29uc3QgKnN5c19s YW5nID0gTlVMTDsKKyAKKyAgICAgaWYgKGxvY2FsZSA9PSBOVUxMKSB7CisgICAgICAgICBwYXRo ID0gZ19idWlsZF9maWxlbmFtZSAoZ19nZXRfdXNlcl9jb25maWdfZGlyICgpLAorZGlmZiAtLWdp dCBhL3NyYy9pYnVzZW5naW5lc2ltcGxlcHJpdmF0ZS5oIGIvc3JjL2lidXNlbmdpbmVzaW1wbGVw cml2YXRlLmgKK2luZGV4IDQ3ZjJhM2Q0Li41NDc5ZTU1MyAxMDA2NDQKKy0tLSBhL3NyYy9pYnVz ZW5naW5lc2ltcGxlcHJpdmF0ZS5oCisrKysgYi9zcmMvaWJ1c2VuZ2luZXNpbXBsZXByaXZhdGUu aAorQEAgLTQzLDExICs0MywxMSBAQCBzdHJ1Y3QgX0lCdXNDb21wb3NlVGFibGVDb21wYWN0UHJp dmF0ZQorIH07CisgCisgZ2Jvb2xlYW4gaWJ1c19jaGVja19hbGdvcml0aG1pY2FsbHkgKGNvbnN0 IGd1aW50MTYgICAgICAgICAgICAgICpjb21wb3NlX2J1ZmZlciwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ2ludCAgICAgICAgICAgICAgICAgICAgICAgIG5fY29tcG9z ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAg ICAgICAgICAgICAgIG5fY29tcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ3VuaWNoYXIgICAgICAgICAgICAgICAgICAgKm91dHB1dCk7CisgZ2Jvb2xlYW4gaWJ1 c19jb21wb3NlX3RhYmxlX2NoZWNrICAgKGNvbnN0IElCdXNDb21wb3NlVGFibGVFeCAgICp0YWJs ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQxNiAgICAgICAg ICAgICAgICAgICAgKmNvbXBvc2VfYnVmZmVyLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnaW50ICAgICAgICAgICAgICAgICAgICAgICAgbl9jb21wb3NlLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAg ICAgbl9jb21wb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9v bGVhbiAgICAgICAgICAgICAgICAgICAqY29tcG9zZV9maW5pc2gsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAgICAgICAgICpjb21wb3Nl X21hdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHU3RyaW5nICAg ICAgICAgICAgICAgICAgICAqb3V0cHV0LAorQEAgLTU2LDcgKzU2LDcgQEAgZ2Jvb2xlYW4gaWJ1 c19jb21wb3NlX3RhYmxlX2NvbXBhY3RfY2hlY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoY29uc3QgSUJ1c0NvbXBvc2VUYWJsZUNvbXBhY3RFeAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdGFi bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50MTYgICAgICAg ICAgICAgICAgICAgICpjb21wb3NlX2J1ZmZlciwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ2ludCAgICAgICAgICAgICAgICAgICAgICAgIG5fY29tcG9zZSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAg ICAgIG5fY29tcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jv b2xlYW4gICAgICAgICAgICAgICAgICAgKmNvbXBvc2VfZmluaXNoLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBndW5pY2hhciAgICAgICAgICAgICAgICAgICoqb3V0cHV0 X2NoYXJzKTsKKyBndW5pY2hhciBpYnVzX2tleXN5bV90b191bmljb2RlICAgICAoZ3VpbnQxNiAg ICAgICAgICAgICAgICAgICAgIGtleXN5bSwKKy0tIAorMi4yOC4wCisKK0Zyb20gNDI1OWYxNjMy NGQ1NzhhYTI1MDVjZjUwZjJmMjM5MjNkOGQ4N2U3NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK K0Zyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwg MjYgSnVsIDIwMjEgMjI6NTM6MTkgKzA5MDAKK1N1YmplY3Q6IFtQQVRDSCA1LzZdIHNyYy9pYnVz ZW5naW5lc2ltcGxlOiBNYWtlIENvbXBvc2UgcHJlZWRpdCBsZXNzIGludHJ1c2l2ZQorCitUd2Vh ayB0aGUgcHJlZWRpdCBkaXNwbGF5IGZvciBDb21wb3NlIHNlcXVlbmNlcyB0bworYmUgbm90IHNv IGRpc3RyYWN0aW5nLiBXZSBvbmx5IHNob3cgdGhlIENvbXBvc2Uga2V5Cit3aGVuIGl0IG9jY3Vy cyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBzZXF1ZW5jZSBvciBpcwordGhlIG9ubHkga2V5IHNvIGZh ci4KKworQlVHPWh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9ndGsvLS9pc3N1ZXMvMzY2 OQorQlVHPWh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9ndGsvLS9tZXJnZV9yZXF1ZXN0 cy8zMjIwCitCVUc9aHR0cHM6Ly9ibG9nLmd0ay5vcmcvMjAyMS8wMy8yNC9pbnB1dC1yZXZpc2l0 ZWQvCistLS0KKyBzcmMvaWJ1c2NvbXBvc2V0YWJsZS5jICAgICAgICB8IDE3NSArKysrKysrKysr Ky0tLS0tLS0tLQorIHNyYy9pYnVzZW5naW5lc2ltcGxlLmMgICAgICAgIHwgMzAxICsrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0KKyBzcmMvaWJ1c2VuZ2luZXNpbXBsZXByaXZhdGUu aCB8ICAgOSArLQorIDMgZmlsZXMgY2hhbmdlZCwgMzI1IGluc2VydGlvbnMoKyksIDE2MCBkZWxl dGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9pYnVzY29tcG9zZXRhYmxlLmMgYi9zcmMvaWJ1 c2NvbXBvc2V0YWJsZS5jCitpbmRleCBhYTU4ZjEzNi4uMmFkMjE1NTEgMTAwNjQ0CistLS0gYS9z cmMvaWJ1c2NvbXBvc2V0YWJsZS5jCisrKysgYi9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jCitAQCAt MTUyMywyMyArMTUyMywyMiBAQCBjb21wYXJlX3NlcV9pbmRleCAoY29uc3Qgdm9pZCAqa2V5LCBj b25zdCB2b2lkICp2YWx1ZSkKKyAgKiBJQnVzQ29tcG9zZURhdGEtPnZhbHVlc1tdIGlzIHRoZSBn dW5pY2hhciBhcnJheS4KKyAgKi8KKyBnYm9vbGVhbgorLWlidXNfY29tcG9zZV90YWJsZV9jb21w YWN0X2NoZWNrIChjb25zdCBJQnVzQ29tcG9zZVRhYmxlQ29tcGFjdEV4ICp0YWJsZSwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQxNgorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjb21wb3NlX2J1 ZmZlciwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbl9jb21wb3NlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnYm9vbGVhbgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICpjb21wb3NlX2ZpbmlzaCwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ3VuaWNoYXIgICAgICAgICAgICAgICAgICAgICAgICoqb3V0 cHV0X2NoYXJzKQorK2lidXNfY29tcG9zZV90YWJsZV9jb21wYWN0X2NoZWNrIChjb25zdCBJQnVz Q29tcG9zZVRhYmxlQ29tcGFjdEV4CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp0YWJsZSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ3VpbnQxNiAgICAgICAgICAgICAgICAgICAgICAgKmNvbXBvc2Vf YnVmZmVyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbl9jb21wb3NlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAqY29tcG9zZV9maW5pc2gsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1bmljaGFyICAgICAgICAgICAgICAg ICAgICAgKipvdXRwdXRfY2hhcnMpCisgeworICAgICBpbnQgcm93X3N0cmlkZTsKKyAgICAgZ3Vp bnQxNiAqc2VxX2luZGV4OworICAgICBndWludDE2ICpzZXE7CisgICAgIGludCBpOworIAorLSAg ICBpZiAoY29tcG9zZV9maW5pc2gpCistICAgICAgICAqY29tcG9zZV9maW5pc2ggPSBGQUxTRTsK Ky0gICAgaWYgKG91dHB1dF9jaGFycykKKy0gICAgICAgICpvdXRwdXRfY2hhcnMgPSBOVUxMOwor KyAgICAvKiBjb21wb3NlX2ZpbmlzaCBhbmQgb3V0cHV0X2NoYXJzIHNob3VsZCBub3QgYmUgaW5p dGlhbGl6ZWQgYmVjYXVzZQorKyAgICAgKiBpYnVzX2NvbXBvc2VfdGFibGVfY2hlY2soKSBpcyBj YWxsZWQgYXQgZmlyc3QgYW5kCisrICAgICAqIGVuZ2luZS0+cHJpdi0+dGVudGF0aXZlX21hdGNo IHdpbGwgYmUgcHJlZWRpdCBhZnRlciB0aGlzIGlzIGNhbGxlZC4KKysgICAgICovCisgCisgICAg IC8qIFdpbGwgbmV2ZXIgbWF0Y2gsIGlmIHRoZSBzZXF1ZW5jZSBpbiB0aGUgY29tcG9zZSBidWZm ZXIgaXMgbG9uZ2VyCisgICAgICAqIHRoYW4gdGhlIHNlcXVlbmNlcyBpbiB0aGUgdGFibGUuICBG dXJ0aGVyLCBjb21wYXJlX3NlcSAoa2V5LCB2YWwpCitAQCAtMTU4OCw3ICsxNTg3LDggQEAgaWJ1 c19jb21wb3NlX3RhYmxlX2NvbXBhY3RfY2hlY2sgKGNvbnN0IElCdXNDb21wb3NlVGFibGVDb21w YWN0RXggKnRhYmxlLAorICAgICAgICAgICAgIGlmIChjb21wb3NlX2ZpbmlzaCkKKyAgICAgICAg ICAgICAgICAgKmNvbXBvc2VfZmluaXNoID0gVFJVRTsKKyAgICAgICAgICAgICBpZiAob3V0cHV0 X2NoYXJzKSB7CistICAgICAgICAgICAgICAgICpvdXRwdXRfY2hhcnMgPSBnX25ldyAoZ3VuaWNo YXIsIGxlbmd0aCArIDEpOworKyAgICAgICAgICAgICAgICBpZiAoISgqb3V0cHV0X2NoYXJzKSkK KysgICAgICAgICAgICAgICAgICAgICpvdXRwdXRfY2hhcnMgPSBnX25ldyAoZ3VuaWNoYXIsIGxl bmd0aCArIDEpOworICAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbGVuZ3RoOyBqKysp IHsKKyAgICAgICAgICAgICAgICAgICAgICgqb3V0cHV0X2NoYXJzKVtqXSA9IHRhYmxlLT5wcml2 LT5kYXRhMltpbmRleCArIGpdOworICAgICAgICAgICAgICAgICB9CitAQCAtMTYyMiw3ICsxNjIy LDggQEAgaWJ1c19jb21wb3NlX3RhYmxlX2NvbXBhY3RfY2hlY2sgKGNvbnN0IElCdXNDb21wb3Nl VGFibGVDb21wYWN0RXggKnRhYmxlLAorICAgICAgICAgICAgIGlmIChjb21wb3NlX2ZpbmlzaCkK KyAgICAgICAgICAgICAgICAgKmNvbXBvc2VfZmluaXNoID0gVFJVRTsKKyAgICAgICAgICAgICBp ZiAob3V0cHV0X2NoYXJzKSB7CistICAgICAgICAgICAgICAgICpvdXRwdXRfY2hhcnMgPSBnX25l dyAoZ3VuaWNoYXIsIDIpOworKyAgICAgICAgICAgICAgICBpZiAoISgqb3V0cHV0X2NoYXJzKSkK KysgICAgICAgICAgICAgICAgICAgICpvdXRwdXRfY2hhcnMgPSBnX25ldyAoZ3VuaWNoYXIsIDIp OworICAgICAgICAgICAgICAgICAoKm91dHB1dF9jaGFycylbMF0gPSBzZXFbcm93X3N0cmlkZSAt IDFdOworICAgICAgICAgICAgICAgICAoKm91dHB1dF9jaGFycylbMV0gPSAwOworICAgICAgICAg ICAgIH0KK0BAIC0xNjM1LDE2ICsxNjM2LDYgQEAgaWJ1c19jb21wb3NlX3RhYmxlX2NvbXBhY3Rf Y2hlY2sgKGNvbnN0IElCdXNDb21wb3NlVGFibGVDb21wYWN0RXggKnRhYmxlLAorIH0KKyAKKyAK Ky0vKiBDaGVja3MgaWYgYSBrZXlzeW0gaXMgYSBkZWFkIGtleS4gRGVhZCBrZXkga2V5c3ltIHZh bHVlcyBhcmUgZGVmaW5lZCBpbgorLSAqIC4uL2dkay9nZGtrZXlzeW1zLmggYW5kIHRoZSBmaXJz dCBpcyBHREtfS0VZX2RlYWRfZ3JhdmUuIEFzIFguT3JnIGlzIHVwZGF0ZWQsCistICogbW9yZSBk ZWFkIGtleXMgYXJlIGFkZGVkIGFuZCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgdXBwZXIgbGltaXQu CistICogQ3VycmVudGx5LCB0aGUgdXBwZXIgbGltaXQgaXMgR0RLX0tFWV9kZWFkX2Rhc2lhKzEu IFRoZSArMSBoYXMgdG8gZG8gd2l0aAorLSAqIGEgdGVtcG9yYXJ5IGlzc3VlIGluIHRoZSBYLk9y ZyBoZWFkZXIgZmlsZXMuCistICogSW4gZnV0dXJlIHZlcnNpb25zIGl0IHdpbGwgYmUganVzdCB0 aGUga2V5c3ltIChubyArMSkuCistICovCistI2RlZmluZSBJU19ERUFEX0tFWShrKSBcCistICAg ICAgKChrKSA+PSBJQlVTX0tFWV9kZWFkX2dyYXZlICYmIChrKSA8PSBJQlVTX0tFWV9kZWFkX2dy ZWVrKQorLQorIC8qIFRoaXMgZnVuY3Rpb24gcmVjZWl2ZXMgYSBzZXF1ZW5jZSBvZiBVbmljb2Rl IGNoYXJhY3RlcnMgYW5kIHRyaWVzIHRvCisgICogbm9ybWFsaXplIGl0IChORkMpLiBXZSBjaGVj ayBmb3IgdGhlIGNhc2UgdGhlIHRoZSByZXN1bHRpbmcgc3RyaW5nCisgICogaGFzIGxlbmd0aCAx IChzaW5nbGUgY2hhcmFjdGVyKS4KK0BAIC0xNzU0LDcgKzE3NDUsOCBAQCBpYnVzX2NoZWNrX2Fs Z29yaXRobWljYWxseSAoY29uc3QgZ3VpbnQxNiAqY29tcG9zZV9idWZmZXIsCisgICAgICAgICBp LS07CisgICAgICAgICB3aGlsZSAoaSA+PSAwKSB7CisgICAgICAgICAgICAgY29tYmluYXRpb25f YnVmZmVyW2krMV0gPSBpYnVzX2tleXN5bV90b191bmljb2RlIChjb21wb3NlX2J1ZmZlcltpXSwK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFRSVUUpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICAgICAgIGlm ICghY29tYmluYXRpb25fYnVmZmVyW2krMV0pIHsKKyAgICAgICAgICAgICAgICAgY29tYmluYXRp b25fYnVmZmVyW2krMV0gPQorICAgICAgICAgICAgICAgICAgICAgICAgIGlidXNfa2V5dmFsX3Rv X3VuaWNvZGUgKGNvbXBvc2VfYnVmZmVyW2ldKTsKK0BAIC0xNzg2LDY2ICsxNzc4LDkxIEBAIGli dXNfY2hlY2tfYWxnb3JpdGhtaWNhbGx5IChjb25zdCBndWludDE2ICpjb21wb3NlX2J1ZmZlciwK KyAKKyAKKyBndW5pY2hhcgorLWlidXNfa2V5c3ltX3RvX3VuaWNvZGUgKGd1aW50MTYgIGtleXN5 bSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBjb21iaW5pbmcpIHsKKy0jZGVm aW5lIENBU0Uoa2V5c3ltX3N1ZmZpeCwgdW5pY29kZSkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCistICAgICAgICBjYXNlIElCVVNfS0VZX2RlYWRfIyNrZXlzeW1fc3VmZml4 OiByZXR1cm4gdW5pY29kZQorLSNkZWZpbmUgQ0FTRV9DT01CSU5FKGtleXN5bV9zdWZmaXgsIGNv bWJpbmVkX3VuaWNvZGUsIGlzb2xhdGVkX3VuaWNvZGUpIFwKKy0gICAgICAgIGNhc2UgSUJVU19L RVlfZGVhZF8jI2tleXN5bV9zdWZmaXg6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCist ICAgICAgICAgICAgaWYgKGNvbWJpbmluZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICByZXR1cm4gY29tYmluZWRfdW5pY29k ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICBlbHNlICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisr aWJ1c19rZXlzeW1fdG9fdW5pY29kZSAoZ3VpbnQxNiAgIGtleXN5bSwKKysgICAgICAgICAgICAg ICAgICAgICAgICBnYm9vbGVhbiAgY29tYmluaW5nLAorKyAgICAgICAgICAgICAgICAgICAgICAg IGdib29sZWFuICpuZWVkX3NwYWNlKSB7CisrI2RlZmluZSBDQVNFKGtleXN5bV9zdWZmaXgsIHVu aWNvZGUsIHNwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAg ICAgY2FzZSBJQlVTX0tFWV9kZWFkXyMja2V5c3ltX3N1ZmZpeDogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICBpZiAobmVlZF9zcGFjZSkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAg ICAgICpuZWVkX3NwYWNlID0gc3A7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorKyAgICAgICAgICAgIHJldHVybiB1bmljb2RlCisrI2RlZmluZSBDQVNFX0NP TUJJTkUoa2V5c3ltX3N1ZmZpeCwgY29tYmluZWRfdW5pY29kZSwgaXNvbGF0ZWRfdW5pY29kZSwg c3ApICAgXAorKyAgICAgICAgY2FzZSBJQlVTX0tFWV9kZWFkXyMja2V5c3ltX3N1ZmZpeDogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICBpZiAobmVlZF9z cGFjZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisrICAgICAgICAgICAgICAgICpuZWVkX3NwYWNlID0gc3A7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIGlmIChjb21iaW5pbmcpICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAg ICAgICAgICAgICAgcmV0dXJuIGNvbWJpbmVkX3VuaWNvZGU7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg ICAgICByZXR1cm4gaXNvbGF0ZWRfdW5pY29kZQorICAgICBzd2l0Y2ggKGtleXN5bSkgeworLSAg ICBDQVNFIChhLCAweDAzMDQxKTsKKy0gICAgQ0FTRSAoQSwgMHgwMzA0Mik7CistICAgIENBU0Ug KGksIDB4MDMwNDMpOworLSAgICBDQVNFIChJLCAweDAzMDQ0KTsKKy0gICAgQ0FTRSAodSwgMHgw MzA0NSk7CistICAgIENBU0UgKFUsIDB4MDMwNDYpOworLSAgICBDQVNFIChlLCAweDAzMDQ3KTsK Ky0gICAgQ0FTRSAoRSwgMHgwMzA0OCk7CistICAgIENBU0UgKG8sIDB4MDMwNDkpOworLSAgICBD QVNFIChPLCAweDAzMDRBKTsKKy0gICAgQ0FTRSAgICAgICAgIChhYm92ZWNvbW1hLCAgICAgICAg ICAgICAgICAgICAweDAzMTMpOworLSAgICBDQVNFX0NPTUJJTkUgKGFib3ZlZG90LCAgICAgICAg ICAgICAgICAgICAgIDB4MDMwNywgMHgwMkQ5KTsKKy0gICAgQ0FTRSAgICAgICAgIChhYm92ZXJl dmVyc2VkY29tbWEsICAgICAgICAgICAweDAzMTQpOworLSAgICBDQVNFX0NPTUJJTkUgKGFib3Zl cmluZywgICAgICAgICAgICAgICAgICAgIDB4MDMwQSwgMHgwMkRBKTsKKy0gICAgQ0FTRV9DT01C SU5FIChhY3V0ZSwgICAgICAgICAgICAgICAgICAgICAgICAweDAzMDEsIDB4MDBCNCk7CistICAg IENBU0UgICAgICAgICAoYmVsb3dicmV2ZSwgICAgICAgICAgICAgICAgICAgMHgwMzJFKTsKKy0g ICAgQ0FTRV9DT01CSU5FIChiZWxvd2NpcmN1bWZsZXgsICAgICAgICAgICAgICAweDAzMkQsIDB4 QTc4OCk7CistICAgIENBU0VfQ09NQklORSAoYmVsb3djb21tYSwgICAgICAgICAgICAgICAgICAg MHgwMzI2LCAweDAwMkMpOworLSAgICBDQVNFICAgICAgICAgKGJlbG93ZGlhZXJlc2lzLCAgICAg ICAgICAgICAgIDB4MDMyNCk7CistICAgIENBU0VfQ09NQklORSAoYmVsb3dkb3QsICAgICAgICAg ICAgICAgICAgICAgMHgwMzIzLCAweDAwMkUpOworLSAgICBDQVNFX0NPTUJJTkUgKGJlbG93bWFj cm9uLCAgICAgICAgICAgICAgICAgIDB4MDMzMSwgMHgwMkNEKTsKKy0gICAgQ0FTRV9DT01CSU5F IChiZWxvd3JpbmcsICAgICAgICAgICAgICAgICAgICAweDAzMEEsIDB4MDJGMyk7CistICAgIENB U0VfQ09NQklORSAoYmVsb3d0aWxkZSwgICAgICAgICAgICAgICAgICAgMHgwMzMwLCAweDAyRjcp OworLSAgICBDQVNFX0NPTUJJTkUgKGJyZXZlLCAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMw NiwgMHgwMkQ4KTsKKy0gICAgQ0FTRV9DT01CSU5FIChjYXBpdGFsX3NjaHdhLCAgICAgICAgICAg ICAgICAweDAxOEYsIDB4MDREOCk7CistICAgIENBU0VfQ09NQklORSAoY2Fyb24sICAgICAgICAg ICAgICAgICAgICAgICAgMHgwMzBDLCAweDAyQzcpOworLSAgICBDQVNFX0NPTUJJTkUgKGNlZGls bGEsICAgICAgICAgICAgICAgICAgICAgIDB4MDMyNywgMHgwMEI4KTsKKy0gICAgQ0FTRV9DT01C SU5FIChjaXJjdW1mbGV4LCAgICAgICAgICAgICAgICAgICAweDAzMDIsIDB4MDA1RSk7CistICAg IENBU0UgICAgICAgICAoY3VycmVuY3ksICAgICAgICAgICAgICAgICAgICAgMHgwMEE0KTsKKysj aWZkZWYgSUJVU19FTkdMSVNIX0RFQURfS0VZCisrICAgIENBU0UgKGEsIDB4MDM2MywgMSk7Cisr ICAgIENBU0UgKEEsIDB4MDM2MywgMSk7CisrICAgIENBU0UgKGksIDB4MDM2NSwgMSk7CisrICAg IENBU0UgKEksIDB4MDM2NSwgMSk7CisrICAgIENBU0UgKHUsIDB4MDM2NywgMSk7CisrICAgIENB U0UgKFUsIDB4MDM2NywgMSk7CisrICAgIENBU0UgKGUsIDB4MDM2NCwgMSk7CisrICAgIENBU0Ug KEUsIDB4MDM2NCwgMSk7CisrICAgIENBU0UgKG8sIDB4MDM2NiwgMSk7CisrICAgIENBU0UgKE8s IDB4MDM2NiwgMSk7CisrI2Vsc2UKKysgICAgQ0FTRSAoYSwgMHgzMDQxLCAwKTsKKysgICAgQ0FT RSAoQSwgMHgzMDQyLCAwKTsKKysgICAgQ0FTRSAoaSwgMHgzMDQzLCAwKTsKKysgICAgQ0FTRSAo SSwgMHgzMDQ0LCAwKTsKKysgICAgQ0FTRSAodSwgMHgzMDQ1LCAwKTsKKysgICAgQ0FTRSAoVSwg MHgzMDQ2LCAwKTsKKysgICAgQ0FTRSAoZSwgMHgzMDQ3LCAwKTsKKysgICAgQ0FTRSAoRSwgMHgz MDQ4LCAwKTsKKysgICAgQ0FTRSAobywgMHgzMDQ5LCAwKTsKKysgICAgQ0FTRSAoTywgMHgzMDRB LCAwKTsKKysjZW5kaWYKKysgICAgQ0FTRV9DT01CSU5FIChhYm92ZWNvbW1hLCAgICAgICAgICAg ICAgICAgICAweDAzMTMsIDB4MDJCQywgMCk7CisrICAgIENBU0VfQ09NQklORSAoYWJvdmVkb3Qs ICAgICAgICAgICAgICAgICAgICAgMHgwMzA3LCAweDAyRDksIDApOworKyAgICBDQVNFX0NPTUJJ TkUgKGFib3ZlcmV2ZXJzZWRjb21tYSwgICAgICAgICAgIDB4MDMxNCwgMHgwMkJELCAwKTsKKysg ICAgQ0FTRV9DT01CSU5FIChhYm92ZXJpbmcsICAgICAgICAgICAgICAgICAgICAweDAzMEEsIDB4 MDJEQSwgMCk7CisrICAgIENBU0VfQ09NQklORSAoYWJvdmV2ZXJ0aWNhbGxpbmUsICAgICAgICAg ICAgMHgwMzBELCAweDAyQzgsIDApOworKyAgICBDQVNFX0NPTUJJTkUgKGFjdXRlLCAgICAgICAg ICAgICAgICAgICAgICAgIDB4MDMwMSwgMHgwMEI0LCAwKTsKKysgICAgQ0FTRSAgICAgICAgIChi ZWxvd2JyZXZlLCAgICAgICAgICAgICAgICAgICAweDAzMkUsIDEpOworKyAgICBDQVNFX0NPTUJJ TkUgKGJlbG93Y2lyY3VtZmxleCwgICAgICAgICAgICAgIDB4MDMyRCwgMHhBNzg4LCAwKTsKKysg ICAgQ0FTRV9DT01CSU5FIChiZWxvd2NvbW1hLCAgICAgICAgICAgICAgICAgICAweDAzMjYsIDB4 MDAyQywgMCk7CisrICAgIENBU0UgICAgICAgICAoYmVsb3dkaWFlcmVzaXMsICAgICAgICAgICAg ICAgMHgwMzI0LCAxKTsKKysgICAgQ0FTRV9DT01CSU5FIChiZWxvd2RvdCwgICAgICAgICAgICAg ICAgICAgICAweDAzMjMsIDB4MDAyRSwgMCk7CisrICAgIENBU0VfQ09NQklORSAoYmVsb3dtYWNy b24sICAgICAgICAgICAgICAgICAgMHgwMzMxLCAweDAyQ0QsIDApOworKyAgICBDQVNFX0NPTUJJ TkUgKGJlbG93cmluZywgICAgICAgICAgICAgICAgICAgIDB4MDMwQSwgMHgwMkYzLCAwKTsKKysg ICAgQ0FTRV9DT01CSU5FIChiZWxvd3RpbGRlLCAgICAgICAgICAgICAgICAgICAweDAzMzAsIDB4 MDJGNywgMCk7CisrICAgIENBU0VfQ09NQklORSAoYmVsb3d2ZXJ0aWNhbGxpbmUsICAgICAgICAg ICAgMHgwMzI5LCAweDAyQ0MsIDApOworKyAgICBDQVNFX0NPTUJJTkUgKGJyZXZlLCAgICAgICAg ICAgICAgICAgICAgICAgIDB4MDMwNiwgMHgwMkQ4LCAwKTsKKysgICAgQ0FTRV9DT01CSU5FIChj YXBpdGFsX3NjaHdhLCAgICAgICAgICAgICAgICAweDFERUEsIDB4MUQ0QSwgMCk7CisrICAgIENB U0VfQ09NQklORSAoY2Fyb24sICAgICAgICAgICAgICAgICAgICAgICAgMHgwMzBDLCAweDAyQzcs IDApOworKyAgICBDQVNFX0NPTUJJTkUgKGNlZGlsbGEsICAgICAgICAgICAgICAgICAgICAgIDB4 MDMyNywgMHgwMEI4LCAwKTsKKysgICAgQ0FTRV9DT01CSU5FIChjaXJjdW1mbGV4LCAgICAgICAg ICAgICAgICAgICAweDAzMDIsIDB4MDA1RSwgMCk7CisrICAgIENBU0UgICAgICAgICAoY3VycmVu Y3ksICAgICAgICAgICAgICAgICAgICAgMHgwMEE0LCAwKTsKKyAgICAgLy8gSUJVU19LRVlfZGVh ZF9kYXNpYSA9PSBJQlVTX0tFWV9kZWFkX2Fib3ZlcmV2ZXJzZWRjb21tYQorLSAgICBDQVNFX0NP TUJJTkUgKGRpYWVyZXNpcywgICAgICAgICAgICAgICAgICAgIDB4MDMwOCwgMHgwMEE4KTsKKy0g ICAgQ0FTRV9DT01CSU5FIChkb3VibGVhY3V0ZSwgICAgICAgICAgICAgICAgICAweDAzMEIsIDB4 MDJERCk7CistICAgIENBU0VfQ09NQklORSAoZG91YmxlZ3JhdmUsICAgICAgICAgICAgICAgICAg MHgwMzBGLCAweDAyRjUpOworLSAgICBDQVNFX0NPTUJJTkUgKGdyYXZlLCAgICAgICAgICAgICAg ICAgICAgICAgIDB4MDMwMCwgMHgwMDYwKTsKKy0gICAgQ0FTRSAgICAgICAgIChncmVlaywgICAg ICAgICAgICAgICAgICAgICAgICAweDAzQkMpOworLSAgICBDQVNFICAgICAgICAgKGhvb2ssICAg ICAgICAgICAgICAgICAgICAgICAgIDB4MDMwOSk7CistICAgIENBU0UgICAgICAgICAoaG9ybiwg ICAgICAgICAgICAgICAgICAgICAgICAgMHgwMzFCKTsKKy0gICAgQ0FTRSAgICAgICAgIChpbnZl cnRlZGJyZXZlLCAgICAgICAgICAgICAgICAweDAzMkYpOworLSAgICBDQVNFX0NPTUJJTkUgKGlv dGEsICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDM0NSwgMHgwMzdBKTsKKy0gICAgQ0FTRV9D T01CSU5FIChtYWNyb24sICAgICAgICAgICAgICAgICAgICAgICAweDAzMDQsIDB4MDBBRik7Cist ICAgIENBU0VfQ09NQklORSAob2dvbmVrLCAgICAgICAgICAgICAgICAgICAgICAgMHgwMzI4LCAw eDAyREIpOworKyAgICBDQVNFX0NPTUJJTkUgKGRpYWVyZXNpcywgICAgICAgICAgICAgICAgICAg IDB4MDMwOCwgMHgwMEE4LCAwKTsKKysgICAgQ0FTRV9DT01CSU5FIChkb3VibGVhY3V0ZSwgICAg ICAgICAgICAgICAgICAweDAzMEIsIDB4MDJERCwgMCk7CisrICAgIENBU0VfQ09NQklORSAoZG91 YmxlZ3JhdmUsICAgICAgICAgICAgICAgICAgMHgwMzBGLCAweDAyRjUsIDApOworKyAgICBDQVNF X0NPTUJJTkUgKGdyYXZlLCAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMwMCwgMHgwMDYwLCAw KTsKKysgICAgQ0FTRSAgICAgICAgIChncmVlaywgICAgICAgICAgICAgICAgICAgICAgICAweDAz QkMsIDApOworKyAgICBDQVNFX0NPTUJJTkUgKGhvb2ssICAgICAgICAgICAgICAgICAgICAgICAg IDB4MDMwOSwgMHgwMkMwLCAwKTsKKysgICAgQ0FTRSAgICAgICAgIChob3JuLCAgICAgICAgICAg ICAgICAgICAgICAgICAweDAzMUIsIDEpOworKyAgICBDQVNFICAgICAgICAgKGludmVydGVkYnJl dmUsICAgICAgICAgICAgICAgIDB4MDMyRiwgMSk7CisrICAgIENBU0VfQ09NQklORSAoaW90YSwg ICAgICAgICAgICAgICAgICAgICAgICAgMHgwMzQ1LCAweDAzN0EsIDApOworKyAgICBDQVNFICAg ICAgICAgKGxvbmdzb2xpZHVzb3ZlcmxheSwgICAgICAgICAgIDB4MDMzOCwgMSk7CisrICAgIENB U0VfQ09NQklORSAobG93bGluZSwgICAgICAgICAgICAgICAgICAgICAgMHgwMzMyLCAweDAwNUYs IDApOworKyAgICBDQVNFX0NPTUJJTkUgKG1hY3JvbiwgICAgICAgICAgICAgICAgICAgICAgIDB4 MDMwNCwgMHgwMEFGLCAwKTsKKysgICAgQ0FTRV9DT01CSU5FIChvZ29uZWssICAgICAgICAgICAg ICAgICAgICAgICAweDAzMjgsIDB4MDJEQiwgMCk7CisgICAgIC8vIElCVVNfS0VZX2RlYWRfcGVy aXNwb21lbmkgPT0gSUJVU19LRVlfZGVhZF90aWxkZQorICAgICAvLyBJQlVTX0tFWV9kZWFkX3Bz aWxpID09IElCVVNfS0VZX2RlYWRfYWJvdmVjb21tYQorLSAgICBDQVNFX0NPTUJJTkUgKHNlbWl2 b2ljZWRfc291bmQsICAgICAgICAgICAgIDB4MzA5QSwgMHgzMDlDKTsKKy0gICAgQ0FTRV9DT01C SU5FIChzbWFsbF9zY2h3YSwgICAgICAgICAgICAgICAgICAweDFENEEsIDB4MDREOSk7CistICAg IENBU0UgICAgICAgICAoc3Ryb2tlLCAgICAgICAgICAgICAgICAgICAgICAgMHgwMDJGKTsKKy0g ICAgQ0FTRV9DT01CSU5FICh0aWxkZSwgICAgICAgICAgICAgICAgICAgICAgICAweDAzMDMsIDB4 MDA3RSk7CistICAgIENBU0VfQ09NQklORSAodm9pY2VkX3NvdW5kLCAgICAgICAgICAgICAgICAg MHgzMDk5LCAweDMwOUIpOworKyAgICBDQVNFX0NPTUJJTkUgKHNlbWl2b2ljZWRfc291bmQsICAg ICAgICAgICAgIDB4MzA5QSwgMHgzMDlDLCAwKTsKKysgICAgQ0FTRV9DT01CSU5FIChzbWFsbF9z Y2h3YSwgICAgICAgICAgICAgICAgICAweDFERUEsIDB4MUQ0QSwgMCk7CisrICAgIENBU0UgICAg ICAgICAoc3Ryb2tlLCAgICAgICAgICAgICAgICAgICAgICAgMHgwMzM1LCAxKTsKKysgICAgQ0FT RV9DT01CSU5FICh0aWxkZSwgICAgICAgICAgICAgICAgICAgICAgICAweDAzMDMsIDB4MDA3RSwg MCk7CisrICAgIENBU0VfQ09NQklORSAodm9pY2VkX3NvdW5kLCAgICAgICAgICAgICAgICAgMHgz MDk5LCAweDMwOUIsIDApOworICAgICBjYXNlIElCVVNfS0VZX011bHRpX2tleToKKysgICAgICAg IGlmIChuZWVkX3NwYWNlKQorKyAgICAgICAgICAgICpuZWVkX3NwYWNlID0gRkFMU0U7CisgICAg ICAgICAvKiBXZSBvbmx5IHNob3cgdGhlIENvbXBvc2Uga2V5IHZpc2libHkgd2hlbiBpdCBpcyB0 aGUKKyAgICAgICAgICAqIG9ubHkgZ2x5cGggaW4gdGhlIHByZWVkaXQsIG9yIHdoZW4gaXQgb2Nj dXJzIGluIHRoZQorICAgICAgICAgICogbWlkZGxlIG9mIHRoZSBzZXF1ZW5jZS4gU2FkbHksIHRo ZSBvZmZpY2lhbCBjaGFyYWN0ZXIsCitAQCAtMTg1NCw2ICsxODcxLDggQEAgaWJ1c19rZXlzeW1f dG9fdW5pY29kZSAoZ3VpbnQxNiAga2V5c3ltLAorICAgICAgICAgICovCisgICAgICAgICByZXR1 cm4gMHgwMEI3OworICAgICBkZWZhdWx0OjsKKysgICAgICAgIGlmIChuZWVkX3NwYWNlKQorKyAg ICAgICAgICAgICpuZWVkX3NwYWNlID0gRkFMU0U7CisgICAgIH0KKyAgICAgcmV0dXJuIDB4MDsK KyAjdW5kZWYgQ0FTRQorZGlmZiAtLWdpdCBhL3NyYy9pYnVzZW5naW5lc2ltcGxlLmMgYi9zcmMv aWJ1c2VuZ2luZXNpbXBsZS5jCitpbmRleCA2OTljZjBkNC4uYWNmYzAyNjQgMTAwNjQ0CistLS0g YS9zcmMvaWJ1c2VuZ2luZXNpbXBsZS5jCisrKysgYi9zcmMvaWJ1c2VuZ2luZXNpbXBsZS5jCitA QCAtNzgsMTMgKzc4LDE0IEBAIHR5cGVkZWYgc3RydWN0IHsKKyAKKyBzdHJ1Y3QgX0lCdXNFbmdp bmVTaW1wbGVQcml2YXRlIHsKKyAgICAgZ3VpbnQxNiAgICAgICAgICAgICpjb21wb3NlX2J1ZmZl cjsKKy0gICAgZ3VuaWNoYXIgICAgICAgICAgICB0ZW50YXRpdmVfbWF0Y2g7CistICAgIGNoYXIg ICAgICAgICAgICAgICAqdGVudGF0aXZlX2Vtb2ppOworKyAgICBHU3RyaW5nICAgICAgICAgICAg KnRlbnRhdGl2ZV9tYXRjaDsKKyAgICAgaW50ICAgICAgICAgICAgICAgICB0ZW50YXRpdmVfbWF0 Y2hfbGVuOworKyAgICBjaGFyICAgICAgICAgICAgICAgKnRlbnRhdGl2ZV9lbW9qaTsKKyAKKyAg ICAgZ3VpbnQgICAgICAgICAgICAgICBoZXhfbW9kZV9lbmFibGVkIDogMTsKKyAgICAgZ3VpbnQg ICAgICAgICAgICAgICBpbl9oZXhfc2VxdWVuY2UgOiAxOworICAgICBndWludCAgICAgICAgICAg ICAgIGluX2Vtb2ppX3NlcXVlbmNlIDogMTsKKysgICAgZ3VpbnQgICAgICAgICAgICAgICBpbl9j b21wb3NlX3NlcXVlbmNlIDogMTsKKyAgICAgZ3VpbnQgICAgICAgICAgICAgICBtb2RpZmllcnNf ZHJvcHBlZCA6IDE7CisgICAgIElCdXNFbmdpbmVEaWN0ICAgICAqZW1vamlfZGljdDsKKyAgICAg SUJ1c0xvb2t1cFRhYmxlICAgICpsb29rdXBfdGFibGU7CitAQCAtMTc4LDYgKzE3OSw4IEBAIGli dXNfZW5naW5lX3NpbXBsZV9pbml0IChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUpCisgICAgIHNp bXBsZS0+cHJpdi0+aGV4X21vZGVfZW5hYmxlZCA9CisgICAgICAgICBnX2dldGVudigiSUJVU19F TkFCTEVfQ1RSTF9TSElGVF9VIikgIT0gTlVMTCB8fAorICAgICAgICAgZ19nZXRlbnYoIklCVVNf RU5BQkxFX0NPTlRST0xfU0hJRlRfVSIpICE9IE5VTEw7CisrICAgIHNpbXBsZS0+cHJpdi0+dGVu dGF0aXZlX21hdGNoID0gZ19zdHJpbmdfbmV3ICgiIik7CisrICAgIHNpbXBsZS0+cHJpdi0+dGVu dGF0aXZlX21hdGNoX2xlbiA9IDA7CisgfQorIAorIAorQEAgLTE5Niw2ICsxOTksOSBAQCBpYnVz X2VuZ2luZV9zaW1wbGVfZGVzdHJveSAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlKQorICAgICBn X2NsZWFyX29iamVjdCAoJnByaXYtPmxvb2t1cF90YWJsZSk7CisgICAgIGdfY2xlYXJfcG9pbnRl ciAoJnByaXYtPmNvbXBvc2VfYnVmZmVyLCBnX2ZyZWUpOworICAgICBnX2NsZWFyX3BvaW50ZXIg KCZwcml2LT50ZW50YXRpdmVfZW1vamksIGdfZnJlZSk7CisrICAgIGdfc3RyaW5nX2ZyZWUgKHBy aXYtPnRlbnRhdGl2ZV9tYXRjaCwgVFJVRSk7CisrICAgIHByaXYtPnRlbnRhdGl2ZV9tYXRjaCA9 IE5VTEw7CisrICAgIHByaXYtPnRlbnRhdGl2ZV9tYXRjaF9sZW4gPSAwOworIAorICAgICBJQlVT X09CSkVDVF9DTEFTUyhpYnVzX2VuZ2luZV9zaW1wbGVfcGFyZW50X2NsYXNzKS0+ZGVzdHJveSAo CisgICAgICAgICBJQlVTX09CSkVDVCAoc2ltcGxlKSk7CitAQCAtMjIyLDE1ICsyMjgsMTUgQEAg aWJ1c19lbmdpbmVfc2ltcGxlX3Jlc2V0IChJQnVzRW5naW5lICplbmdpbmUpCisgCisgICAgIHBy aXYtPmNvbXBvc2VfYnVmZmVyWzBdID0gMDsKKyAKKy0gICAgaWYgKHByaXYtPnRlbnRhdGl2ZV9t YXRjaCB8fCBwcml2LT5pbl9oZXhfc2VxdWVuY2UpIHsKKysgICAgaWYgKHByaXYtPnRlbnRhdGl2 ZV9tYXRjaC0+bGVuID4gMCB8fCBwcml2LT5pbl9oZXhfc2VxdWVuY2UpIHsKKyAgICAgICAgIHBy aXYtPmluX2hleF9zZXF1ZW5jZSA9IEZBTFNFOworLSAgICAgICAgcHJpdi0+dGVudGF0aXZlX21h dGNoID0gMDsKKysgICAgICAgIGdfc3RyaW5nX3NldF9zaXplIChwcml2LT50ZW50YXRpdmVfbWF0 Y2gsIDApOworICAgICAgICAgcHJpdi0+dGVudGF0aXZlX21hdGNoX2xlbiA9IDA7CisgICAgIH0g ZWxzZSBpZiAocHJpdi0+dGVudGF0aXZlX2Vtb2ppIHx8IHByaXYtPmluX2Vtb2ppX3NlcXVlbmNl KSB7CisgICAgICAgICBwcml2LT5pbl9lbW9qaV9zZXF1ZW5jZSA9IEZBTFNFOworICAgICAgICAg Z19jbGVhcl9wb2ludGVyICgmcHJpdi0+dGVudGF0aXZlX2Vtb2ppLCBnX2ZyZWUpOworICAgICB9 IGVsc2UgaWYgKCFwcml2LT5pbl9oZXhfc2VxdWVuY2UgJiYgIXByaXYtPmluX2Vtb2ppX3NlcXVl bmNlKSB7CistICAgICAgICBwcml2LT50ZW50YXRpdmVfbWF0Y2ggPSAwOworKyAgICAgICAgZ19z dHJpbmdfc2V0X3NpemUgKHByaXYtPnRlbnRhdGl2ZV9tYXRjaCwgMCk7CisgICAgICAgICBwcml2 LT50ZW50YXRpdmVfbWF0Y2hfbGVuID0gMDsKKyAgICAgfQorICAgICBpYnVzX2VuZ2luZV9oaWRl X3ByZWVkaXRfdGV4dCAoKElCdXNFbmdpbmUgKilzaW1wbGUpOworQEAgLTI0NCwxMCArMjUwLDE3 IEBAIGlidXNfZW5naW5lX3NpbXBsZV9jb21taXRfY2hhciAoSUJ1c0VuZ2luZVNpbXBsZSAqc2lt cGxlLAorIAorICAgICBJQnVzRW5naW5lU2ltcGxlUHJpdmF0ZSAqcHJpdiA9IHNpbXBsZS0+cHJp djsKKyAKKy0gICAgaWYgKHByaXYtPnRlbnRhdGl2ZV9tYXRjaCB8fCBwcml2LT5pbl9oZXhfc2Vx dWVuY2UpIHsKKy0gICAgICAgIHByaXYtPmluX2hleF9zZXF1ZW5jZSA9IEZBTFNFOworLSAgICAg ICAgcHJpdi0+dGVudGF0aXZlX21hdGNoID0gMDsKKysgICAgaWYgKHByaXYtPmluX2hleF9zZXF1 ZW5jZSB8fAorKyAgICAgICAgcHJpdi0+dGVudGF0aXZlX21hdGNoX2xlbiA+IDAgfHwKKysgICAg ICAgIHByaXYtPmNvbXBvc2VfYnVmZmVyWzBdICE9IDApIHsKKysgICAgICAgIGdfc3RyaW5nX3Nl dF9zaXplIChwcml2LT50ZW50YXRpdmVfbWF0Y2gsIDApOworICAgICAgICAgcHJpdi0+dGVudGF0 aXZlX21hdGNoX2xlbiA9IDA7CisrICAgICAgICBwcml2LT5pbl9oZXhfc2VxdWVuY2UgPSBGQUxT RTsKKysgICAgICAgIHByaXYtPmluX2NvbXBvc2Vfc2VxdWVuY2UgPSBGQUxTRTsKKysgICAgICAg IHByaXYtPmNvbXBvc2VfYnVmZmVyWzBdID0gMDsKKysgICAgICAgIC8qIERvbid0IGNhbGwgaWJ1 c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQoKSBpbnNpZGUKKysgICAgICAgICAq IG5vdCB0byBjYWxsIGl0IGFzIGR1cGxpbGNhdGVkLgorKyAgICAgICAgICovCisgICAgIH0KKyAg ICAgaWYgKHByaXYtPnRlbnRhdGl2ZV9lbW9qaSB8fCBwcml2LT5pbl9lbW9qaV9zZXF1ZW5jZSkg eworICAgICAgICAgcHJpdi0+aW5fZW1vamlfc2VxdWVuY2UgPSBGQUxTRTsKK0BAIC0yNjksMTAg KzI4MiwxNyBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfY29tbWl0X3N0ciAoSUJ1c0VuZ2luZVNpbXBs ZSAqc2ltcGxlLAorIAorICAgICBiYWNrdXBfc3RyID0gZ19zdHJkdXAgKHN0cik7CisgCistICAg IGlmIChwcml2LT50ZW50YXRpdmVfbWF0Y2ggfHwgcHJpdi0+aW5faGV4X3NlcXVlbmNlKSB7Cist ICAgICAgICBwcml2LT5pbl9oZXhfc2VxdWVuY2UgPSBGQUxTRTsKKy0gICAgICAgIHByaXYtPnRl bnRhdGl2ZV9tYXRjaCA9IDA7CisrICAgIGlmIChwcml2LT5pbl9oZXhfc2VxdWVuY2UgfHwKKysg ICAgICAgIHByaXYtPnRlbnRhdGl2ZV9tYXRjaF9sZW4gPiAwIHx8CisrICAgICAgICBwcml2LT5j b21wb3NlX2J1ZmZlclswXSAhPSAwKSB7CisrICAgICAgICBnX3N0cmluZ19zZXRfc2l6ZSAocHJp di0+dGVudGF0aXZlX21hdGNoLCAwKTsKKyAgICAgICAgIHByaXYtPnRlbnRhdGl2ZV9tYXRjaF9s ZW4gPSAwOworKyAgICAgICAgcHJpdi0+aW5faGV4X3NlcXVlbmNlID0gRkFMU0U7CisrICAgICAg ICBwcml2LT5pbl9jb21wb3NlX3NlcXVlbmNlID0gRkFMU0U7CisrICAgICAgICBwcml2LT5jb21w b3NlX2J1ZmZlclswXSA9IDA7CisrICAgICAgICAvKiBEb24ndCBjYWxsIGlidXNfZW5naW5lX3Np bXBsZV91cGRhdGVfcHJlZWRpdF90ZXh0KCkgaW5zaWRlCisrICAgICAgICAgKiBub3QgdG8gY2Fs bCBpdCBhcyBkdXBsaWxjYXRlZC4KKysgICAgICAgICAqLworICAgICB9CisgICAgIGlmIChwcml2 LT50ZW50YXRpdmVfZW1vamkgfHwgcHJpdi0+aW5fZW1vamlfc2VxdWVuY2UpIHsKKyAgICAgICAg IHByaXYtPmluX2Vtb2ppX3NlcXVlbmNlID0gRkFMU0U7CitAQCAtMjg4LDggKzMwOCw4IEBAIHN0 YXRpYyB2b2lkCisgaWJ1c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQgKElCdXNF bmdpbmVTaW1wbGUgKnNpbXBsZSkKKyB7CisgICAgIElCdXNFbmdpbmVTaW1wbGVQcml2YXRlICpw cml2ID0gc2ltcGxlLT5wcml2OworLQorICAgICBHU3RyaW5nICpzID0gZ19zdHJpbmdfbmV3ICgi Iik7CisrICAgIGludCBpLCBqOworIAorICAgICBpZiAocHJpdi0+aW5faGV4X3NlcXVlbmNlIHx8 IHByaXYtPmluX2Vtb2ppX3NlcXVlbmNlKSB7CisgICAgICAgICBpbnQgaGV4Y2hhcnMgPSAwOwor QEAgLTMwNSwzMiArMzI1LDU5IEBAIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90 ZXh0IChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUpCisgICAgICAgICAgICAgICAgICAgICBpYnVz X2tleXZhbF90b191bmljb2RlIChwcml2LT5jb21wb3NlX2J1ZmZlcltoZXhjaGFycysrXSkKKyAg ICAgICAgICAgICApOworICAgICAgICAgfQorLSAgICB9IGVsc2UgaWYgKHByaXYtPnRlbnRhdGl2 ZV9tYXRjaCkgeworLSAgICAgICAgZ19zdHJpbmdfYXBwZW5kX3VuaWNoYXIocywgcHJpdi0+dGVu dGF0aXZlX21hdGNoKTsKKyAgICAgfSBlbHNlIGlmIChwcml2LT50ZW50YXRpdmVfZW1vamkgJiYg KnByaXYtPnRlbnRhdGl2ZV9lbW9qaSkgeworICAgICAgICAgSUJ1c1RleHQgKnRleHQgPSBpYnVz X3RleHRfbmV3X2Zyb21fc3RyaW5nIChwcml2LT50ZW50YXRpdmVfZW1vamkpOworICAgICAgICAg aW50IGxlbiA9IHN0cmxlbiAocHJpdi0+dGVudGF0aXZlX2Vtb2ppKTsKKyAgICAgICAgIGlidXNf dGV4dF9hcHBlbmRfYXR0cmlidXRlICh0ZXh0LAorICAgICAgICAgICAgICAgICBJQlVTX0FUVFJf VFlQRV9VTkRFUkxJTkUsIElCVVNfQVRUUl9VTkRFUkxJTkVfU0lOR0xFLCAwLCBsZW4pOworICAg ICAgICAgaWJ1c19lbmdpbmVfdXBkYXRlX3ByZWVkaXRfdGV4dCAoKElCdXNFbmdpbmUgKilzaW1w bGUsIHRleHQsIGxlbiwgVFJVRSk7CisrICAgICAgICBnX3N0cmluZ19mcmVlIChzLCBUUlVFKTsK KyAgICAgICAgIHJldHVybjsKKy0gICAgfSBlbHNlIHsKKy0gICAgICAgIGludCBoZXhjaGFycyA9 IDA7CistICAgICAgICB3aGlsZSAocHJpdi0+Y29tcG9zZV9idWZmZXJbaGV4Y2hhcnNdICE9IDAp IHsKKy0gICAgICAgICAgICBndWludDE2IGtleXN5bSA9IHByaXYtPmNvbXBvc2VfYnVmZmVyW2hl eGNoYXJzXTsKKy0gICAgICAgICAgICBndW5pY2hhciB1bmljaGFyID0gaWJ1c19rZXlzeW1fdG9f dW5pY29kZSAoa2V5c3ltLCBGQUxTRSk7CistICAgICAgICAgICAgaWYgKHVuaWNoYXIgPiAwKSB7 CistICAgICAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZF91bmljaGFyKHMsIHVuaWNoYXIpOwor LSAgICAgICAgICAgIH0gZWxzZSB7CistICAgICAgICAgICAgICAgIHVuaWNoYXIgPSBpYnVzX2tl eXZhbF90b191bmljb2RlIChrZXlzeW0pOworLSAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBl bmRfdW5pY2hhcihzLCB1bmljaGFyKTsKKy0gICAgICAgICAgICB9CistICAgICAgICAgICAgaWYg KCF1bmljaGFyKSB7CistICAgICAgICAgICAgICAgIGdfd2FybmluZyAoCisrICAgIH0gZWxzZSBp ZiAocHJpdi0+aW5fY29tcG9zZV9zZXF1ZW5jZSkgeworKyAgICAgICAgaWYgKHByaXYtPnRlbnRh dGl2ZV9tYXRjaC0+bGVuID4gMCAmJiBwcml2LT5jb21wb3NlX2J1ZmZlclswXSAhPSAwKSB7Cisr ICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kIChzLCBwcml2LT50ZW50YXRpdmVfbWF0Y2gtPnN0 cik7CisrICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgIGZvciAoaSA9IDA7IHByaXYtPmNv bXBvc2VfYnVmZmVyW2ldOyArK2kpIHsKKysgICAgICAgICAgICAgICAgZ3VpbnQxNiBrZXlzeW0g PSBwcml2LT5jb21wb3NlX2J1ZmZlcltpXTsKKysgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gc2hv d19rZXlzeW0gPSBUUlVFOworKyAgICAgICAgICAgICAgICBnYm9vbGVhbiBuZWVkX3NwYWNlID0g RkFMU0U7CisrICAgICAgICAgICAgICAgIGd1bmljaGFyIGNoOworKworKyAgICAgICAgICAgICAg ICBpZiAoa2V5c3ltID09IElCVVNfS0VZX011bHRpX2tleSkgeworKyAgICAgICAgICAgICAgICAg ICAgLyogV2Ugb25seSBzaG93IHRoZSBDb21wb3NlIGtleSB2aXNpYmx5IHdoZW4gaXQgaXMgdGhl CisrICAgICAgICAgICAgICAgICAgICAgKiBvbmx5IGdseXBoIGluIHRoZSBwcmVlZGl0LCBvciB3 aGVuIGl0IG9jY3VycyBpbiB0aGUKKysgICAgICAgICAgICAgICAgICAgICAqIG1pZGRsZSBvZiB0 aGUgc2VxdWVuY2UuIFNhZGx5LCB0aGUgb2ZmaWNpYWwgY2hhcmFjdGVyLAorKyAgICAgICAgICAg ICAgICAgICAgICogVSsyMzg0LCBDT01QT1NJVElPTiBTWU1CT0wsIGlzIGJpdCB0b28gZGlzdHJh Y3RpbmcsIHNvCisrICAgICAgICAgICAgICAgICAgICAgKiB3ZSB1c2UgVSswMEI3LCBNSURETEUg RE9ULgorKyAgICAgICAgICAgICAgICAgICAgICovCisrICAgICAgICAgICAgICAgICAgICBmb3Ig KGogPSBpICsgMTsgcHJpdi0+Y29tcG9zZV9idWZmZXJbal07IGorKykgeworKyAgICAgICAgICAg ICAgICAgICAgICAgIGlmIChwcml2LT5jb21wb3NlX2J1ZmZlcltqXSAhPSBJQlVTX0tFWV9NdWx0 aV9rZXkpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd19rZXlzeW0gPSBGQUxT RTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAg ICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAg aWYgKCFzaG93X2tleXN5bSkKKysgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysg ICAgICAgICAgICAgICAgICAgIGNoID0gaWJ1c19rZXlzeW1fdG9fdW5pY29kZSAoa2V5c3ltLCBG QUxTRSwgTlVMTCk7CisrICAgICAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfdW5pY2hh ciAocywgY2gpOworKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKElTX0RFQURfS0VZIChrZXlz eW0pKSB7CisrICAgICAgICAgICAgICAgICAgICBjaCA9IGlidXNfa2V5c3ltX3RvX3VuaWNvZGUg KGtleXN5bSwgRkFMU0UsICZuZWVkX3NwYWNlKTsKKysgICAgICAgICAgICAgICAgICAgIGlmIChj aCkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZWVkX3NwYWNlKQorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfYyAocywgJyAnKTsKKysgICAgICAg ICAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfdW5pY2hhciAocywgY2gpOworKyAgICAg ICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAg ICAgICAgICAgY2ggPSBpYnVzX2tleXZhbF90b191bmljb2RlIChrZXlzeW0pOworKyAgICAgICAg ICAgICAgICAgICAgaWYgKGNoKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGdfc3RyaW5nX2Fw cGVuZF91bmljaGFyKHMsIGNoKTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAg ICBpZiAoIWNoKSB7CisrICAgICAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKAorICAgICAgICAg ICAgICAgICAgICAgICAgICJOb3QgZm91bmQgYWx0ZXJuYXRpdmUgY2hhcmFjdGVyIG9mIGNvbXBv c2Uga2V5IDB4JVgiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmNvbXBvc2VfYnVm ZmVyW2hleGNoYXJzXSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+Y29tcG9zZV9i dWZmZXJbaV0pOworKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorLSAgICAgICAg ICAgICsraGV4Y2hhcnM7CisgICAgICAgICB9CisgICAgIH0KKyAKK0BAIC0zODAsNyArNDI3LDcg QEAgY2hlY2tfaGV4IChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCisgCisgICAgIENIRUNLX0NP TVBPU0VfQlVGRkVSX0xFTkdUSCAobl9jb21wb3NlKTsKKyAKKy0gICAgcHJpdi0+dGVudGF0aXZl X21hdGNoID0gMDsKKysgICAgZ19zdHJpbmdfc2V0X3NpemUgKHByaXYtPnRlbnRhdGl2ZV9tYXRj aCwgMCk7CisgICAgIHByaXYtPnRlbnRhdGl2ZV9tYXRjaF9sZW4gPSAwOworIAorICAgICBzdHIg PSBnX3N0cmluZ19uZXcgKE5VTEwpOworQEAgLTQyMSw3ICs0NjgsOCBAQCBjaGVja19oZXggKElC dXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKKyAgICAgfQorIAorICAgICBpZiAoZ191bmljaGFyX3Zh bGlkYXRlIChuKSkgeworLSAgICAgICAgcHJpdi0+dGVudGF0aXZlX21hdGNoID0gbjsKKysgICAg ICAgIGdfc3RyaW5nX3NldF9zaXplIChwcml2LT50ZW50YXRpdmVfbWF0Y2gsIDApOworKyAgICAg ICAgZ19zdHJpbmdfYXBwZW5kX3VuaWNoYXIgKHByaXYtPnRlbnRhdGl2ZV9tYXRjaCwgbik7Cisg ICAgICAgICBwcml2LT50ZW50YXRpdmVfbWF0Y2hfbGVuID0gbl9jb21wb3NlOworICAgICB9Cisg CitAQCAtNTQ2LDIxICs1OTQsMzEgQEAgbm9fc2VxdWVuY2VfbWF0Y2hlcyAoSUJ1c0VuZ2luZVNp bXBsZSAqc2ltcGxlLAorIAorICAgICBDSEVDS19DT01QT1NFX0JVRkZFUl9MRU5HVEggKG5fY29t cG9zZSk7CisgCisrICAgIHByaXYtPmluX2NvbXBvc2Vfc2VxdWVuY2UgPSBGQUxTRTsKKysKKyAg ICAgLyogTm8gY29tcG9zZSBzZXF1ZW5jZXMgZm91bmQsIGNoZWNrIGZpcnN0IGlmIHdlIGhhdmUg YSBwYXJ0aWFsCisgICAgICAqIG1hdGNoIHBlbmRpbmcuCisgICAgICAqLworLSAgICBpZiAocHJp di0+dGVudGF0aXZlX21hdGNoKSB7CisrICAgIGlmIChwcml2LT50ZW50YXRpdmVfbWF0Y2hfbGVu ID4gMCkgeworKyAgICAgICAgZ3VpbnQxNiAqY29tcG9zZV9idWZmZXI7CisgICAgICAgICBpbnQg bGVuID0gcHJpdi0+dGVudGF0aXZlX21hdGNoX2xlbjsKKyAgICAgICAgIGludCBpOworKyAgICAg ICAgY2hhciAqc3RyOworIAorLSAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX2NvbW1pdF9jaGFy IChzaW1wbGUsIHByaXYtPnRlbnRhdGl2ZV9tYXRjaCk7CistICAgICAgICBwcml2LT5jb21wb3Nl X2J1ZmZlclswXSA9IDA7CisrICAgICAgICBjb21wb3NlX2J1ZmZlciA9IGFsbG9jYSAoc2l6ZW9m IChndWludDE2KSAqIENPTVBPU0VfQlVGRkVSX1NJWkUpOworKyAgICAgICAgbWVtY3B5IChjb21w b3NlX2J1ZmZlciwKKysgICAgICAgICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZmZXIsCisrICAg ICAgICAgICAgICAgIHNpemVvZiAoZ3VpbnQxNikgKiBDT01QT1NFX0JVRkZFUl9TSVpFKTsKKysK KysgICAgICAgIHN0ciA9IGdfc3RyZHVwIChwcml2LT50ZW50YXRpdmVfbWF0Y2gtPnN0cik7Cisr ICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfY29tbWl0X3N0ciAoc2ltcGxlLCBzdHIpOworKyAg ICAgICAgZ19mcmVlIChzdHIpOworICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9w cmVlZGl0X3RleHQgKHNpbXBsZSk7CisgCisgICAgICAgICBmb3IgKGk9MDsgaSA8IG5fY29tcG9z ZSAtIGxlbiAtIDE7IGkrKykgeworICAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV9wcm9j ZXNzX2tleV9ldmVudCAoCisgICAgICAgICAgICAgICAgICAgICAoSUJ1c0VuZ2luZSAqKXNpbXBs ZSwKKy0gICAgICAgICAgICAgICAgICAgIHByaXYtPmNvbXBvc2VfYnVmZmVyW2xlbiArIGldLAor KyAgICAgICAgICAgICAgICAgICAgY29tcG9zZV9idWZmZXJbbGVuICsgaV0sCisgICAgICAgICAg ICAgICAgICAgICAwLCAwKTsKKyAgICAgICAgIH0KKyAKK0BAIC01NzEsNiArNjI5LDI2IEBAIG5v X3NlcXVlbmNlX21hdGNoZXMgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKKyAgICAgICAgIHBy aXYtPmNvbXBvc2VfYnVmZmVyWzBdID0gMDsKKyAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV91 cGRhdGVfcHJlZWRpdF90ZXh0IChzaW1wbGUpOworICAgICB9IGVsc2UgeworKyAgICAgICAgaWYg KG5fY29tcG9zZSA9PSAyICYmIElTX0RFQURfS0VZIChwcml2LT5jb21wb3NlX2J1ZmZlclswXSkp IHsKKysgICAgICAgICAgICBnYm9vbGVhbiBuZWVkX3NwYWNlID0gRkFMU0U7CisrICAgICAgICAg ICAgR1N0cmluZyAqcyA9IGdfc3RyaW5nX25ldyAoIiIpOworKyAgICAgICAgICAgIC8qIGRlYWQg a2V5cyBhcmUgbmV2ZXIgKnJlYWxseSogZGVhZCAqLworKyAgICAgICAgICAgIGNoID0gaWJ1c19r ZXlzeW1fdG9fdW5pY29kZSAocHJpdi0+Y29tcG9zZV9idWZmZXJbMF0sCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwgJm5lZWRfc3BhY2UpOworKyAgICAg ICAgICAgIGlmIChjaCkgeworKyAgICAgICAgICAgICAgICBpZiAobmVlZF9zcGFjZSkKKysgICAg ICAgICAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZF9jIChzLCAnICcpOworKyAgICAgICAgICAg ICAgICBnX3N0cmluZ19hcHBlbmRfdW5pY2hhciAocywgY2gpOworKyAgICAgICAgICAgIH0KKysg ICAgICAgICAgICBjaCA9IGlidXNfa2V5dmFsX3RvX3VuaWNvZGUgKHByaXYtPmNvbXBvc2VfYnVm ZmVyWzFdKTsKKysgICAgICAgICAgICBpZiAoY2ggIT0gMCAmJiAhZ191bmljaGFyX2lzY250cmwg KGNoKSkKKysgICAgICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kX3VuaWNoYXIgKHMsIGNoKTsK KysgICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfY29tbWl0X3N0ciAoc2ltcGxlLCBzLT5z dHIpOworKyAgICAgICAgICAgIGdfc3RyaW5nX2ZyZWUgKHMsIFRSVUUpOworKyAgICAgICAgICAg IGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90ZXh0IChzaW1wbGUpOworKyAgICAg ICAgICAgIHJldHVybiBUUlVFOworKyAgICAgICAgfQorKworICAgICAgICAgcHJpdi0+Y29tcG9z ZV9idWZmZXJbMF0gPSAwOworICAgICAgICAgaWYgKG5fY29tcG9zZSA+IDEpIHsKKyAgICAgICAg ICAgICAvKiBJbnZhbGlkIHNlcXVlbmNlICovCitAQCAtNjk1LDE5ICs3NzMsNDYgQEAgaWJ1c19l bmdpbmVfc2ltcGxlX3NldF9udW1iZXJfb25fbG9va3VwX3RhYmxlIChJQnVzRW5naW5lU2ltcGxl ICpzaW1wbGUsCisgICAgIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90ZXh0IChz aW1wbGUpOworIH0KKyAKKysKKyBzdGF0aWMgZ2Jvb2xlYW4KKyBpYnVzX2VuZ2luZV9zaW1wbGVf Y2hlY2tfYWxsX2NvbXBvc2VfdGFibGUgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAg IG5fY29tcG9zZSkKKyB7CisgICAgIElCdXNFbmdpbmVTaW1wbGVQcml2YXRlICpwcml2ID0gc2lt cGxlLT5wcml2OworKyAgICBHU0xpc3QgKnRtcF9saXN0OworICAgICBnYm9vbGVhbiBjb21wb3Nl X2ZpbmlzaCA9IEZBTFNFOworICAgICBnYm9vbGVhbiBjb21wb3NlX21hdGNoID0gRkFMU0U7Cisg ICAgIEdTdHJpbmcgKm91dHB1dCA9IGdfc3RyaW5nX25ldyAoIiIpOworLSAgICBnYm9vbGVhbiBk b2VzX2hpdCA9IEZBTFNFOworKyAgICBnYm9vbGVhbiBzdWNjZXNzID0gRkFMU0U7CisgICAgIGdi b29sZWFuIGlzXzMyYml0ID0gRkFMU0U7CistICAgIEdTTGlzdCAqdG1wX2xpc3Q7CisgICAgIGd1 bmljaGFyICpvdXRwdXRfY2hhcnMgPSBOVUxMOworLSAgICBndW5pY2hhciBvdXRwdXRfY2hhcjsK KysgICAgZ3VuaWNoYXIgb3V0cHV0X2NoYXIgPSAnXDAnOworKworKyAgICBpZiAobl9jb21wb3Nl ID09IDIpIHsKKysgICAgICAgIC8qIFNwZWNpYWwtY2FzZSBkZWFka2V5LWRlYWRrZXkgc2VxdWVu Y2VzLgorKyAgICAgICAgICogV2UgYXJlIG5vdCBkb2luZyBjaGFpbmVkIGRlYWRrZXlzLCBzbyB3 ZQorKyAgICAgICAgICogd2FudCB0byBjb21taXQgdGhlIGZpcnN0IGtleSwgYW5kIGNvbnRpbmUK KysgICAgICAgICAqIHByZWVkaXRpbmcgd2l0aCBzZWNvbmQuCisrICAgICAgICAgKi8KKysgICAg ICAgIGlmIChJU19ERUFEX0tFWSAocHJpdi0+Y29tcG9zZV9idWZmZXJbMF0pICYmCisrICAgICAg ICAgICAgSVNfREVBRF9LRVkgKHByaXYtPmNvbXBvc2VfYnVmZmVyWzFdKSkgeworKyAgICAgICAg ICAgIGdib29sZWFuIG5lZWRfc3BhY2UgPSBGQUxTRTsKKysgICAgICAgICAgICBndW5pY2hhciBj aCA9IGlidXNfa2V5c3ltX3RvX3VuaWNvZGUgKHByaXYtPmNvbXBvc2VfYnVmZmVyWzBdLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsICZu ZWVkX3NwYWNlKTsKKysgICAgICAgICAgICBndWludDE2IG5leHQgPSBwcml2LT5jb21wb3NlX2J1 ZmZlclsxXTsKKysgICAgICAgICAgICBpZiAoY2gpIHsKKysgICAgICAgICAgICAgICAgaWYgKG5l ZWRfc3BhY2UpCisrICAgICAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfYyAob3V0cHV0 LCAnICcpOworKyAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfdW5pY2hhciAob3V0cHV0 LCBjaCk7CisrICAgICAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV9jb21taXRfc3RyIChz aW1wbGUsIG91dHB1dC0+c3RyKTsKKysgICAgICAgICAgICAgICAgZ19zdHJpbmdfc2V0X3NpemUg KG91dHB1dCwgMCk7CisrCisrICAgICAgICAgICAgICAgIHByaXYtPmNvbXBvc2VfYnVmZmVyWzBd ID0gbmV4dDsKKysgICAgICAgICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZmZXJbMV0gPSAwOwor KyAgICAgICAgICAgICAgICBuX2NvbXBvc2UgPSAxOworKyAgICAgICAgICAgIH0KKysgICAgICAg IH0KKysgICAgfQorIAorICAgICBHX0xPQ0sgKGdsb2JhbF90YWJsZXMpOworICAgICB0bXBfbGlz dCA9IGdsb2JhbF90YWJsZXM7CitAQCAtNzIxLDcgKzgyNiw3IEBAIGlidXNfZW5naW5lX3NpbXBs ZV9jaGVja19hbGxfY29tcG9zZV90YWJsZSAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlLAorICAg ICAgICAgICAgICZjb21wb3NlX21hdGNoLAorICAgICAgICAgICAgIG91dHB1dCwKKyAgICAgICAg ICAgICBpc18zMmJpdCkpIHsKKy0gICAgICAgICAgICBkb2VzX2hpdCA9IFRSVUU7CisrICAgICAg ICAgICAgc3VjY2VzcyA9IFRSVUU7CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9Cisg ICAgICAgICBpc18zMmJpdCA9IFRSVUU7CitAQCAtNzMzLDE0ICs4MzgsMTUgQEAgaWJ1c19lbmdp bmVfc2ltcGxlX2NoZWNrX2FsbF9jb21wb3NlX3RhYmxlIChJQnVzRW5naW5lU2ltcGxlICpzaW1w bGUsCisgICAgICAgICAgICAgJmNvbXBvc2VfbWF0Y2gsCisgICAgICAgICAgICAgb3V0cHV0LAor ICAgICAgICAgICAgIGlzXzMyYml0KSkgeworLSAgICAgICAgICAgIGRvZXNfaGl0ID0gVFJVRTsK KysgICAgICAgICAgICBzdWNjZXNzID0gVFJVRTsKKyAgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgIH0KKyAgICAgICAgIHRtcF9saXN0ID0gdG1wX2xpc3QtPm5leHQ7CisgICAgIH0KKyAgICAg R19VTkxPQ0sgKGdsb2JhbF90YWJsZXMpOworIAorLSAgICBpZiAoZG9lc19oaXQpIHsKKysgICAg aWYgKHN1Y2Nlc3MpIHsKKysgICAgICAgIHByaXYtPmluX2NvbXBvc2Vfc2VxdWVuY2UgPSBUUlVF OworICAgICAgICAgaWYgKGNvbXBvc2VfZmluaXNoKSB7CisgICAgICAgICAgICAgaWYgKGNvbXBv c2VfbWF0Y2gpIHsKKyAgICAgICAgICAgICAgICAgaWYgKGlzXzMyYml0KSB7CitAQCAtNzUwLDU5 ICs4NTYsODkgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX2NoZWNrX2FsbF9jb21wb3NlX3RhYmxlIChJ QnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdfdXRmOF9nZXRfY2hhciAob3V0cHV0LT5zdHIpKTsKKyAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKysgICAgICAgICAgICBpYnVzX2VuZ2lu ZV9zaW1wbGVfdXBkYXRlX3ByZWVkaXRfdGV4dCAoc2ltcGxlKTsKKysgICAgICAgICAgICBnX3N0 cmluZ19mcmVlIChvdXRwdXQsIFRSVUUpOworKyAgICAgICAgICAgIHJldHVybiBUUlVFOworICAg ICAgICAgfSBlbHNlIGlmIChjb21wb3NlX21hdGNoKSB7CistICAgICAgICAgICAgcHJpdi0+dGVu dGF0aXZlX21hdGNoID0gZ191dGY4X2dldF9jaGFyIChvdXRwdXQtPnN0cik7CisrICAgICAgICAg ICAgZ19zdHJpbmdfYXNzaWduIChwcml2LT50ZW50YXRpdmVfbWF0Y2gsIG91dHB1dC0+c3RyKTsK KyAgICAgICAgICAgICBwcml2LT50ZW50YXRpdmVfbWF0Y2hfbGVuID0gbl9jb21wb3NlOworKyAg ICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90ZXh0IChzaW1wbGUp OworKyAgICAgICAgICAgIGdfc3RyaW5nX2ZyZWUgKG91dHB1dCwgVFJVRSk7CisrICAgICAgICAg ICAgcmV0dXJuIFRSVUU7CisgICAgICAgICB9CistICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVf dXBkYXRlX3ByZWVkaXRfdGV4dCAoc2ltcGxlKTsKKy0gICAgICAgIGdfc3RyaW5nX2ZyZWUgKG91 dHB1dCwgVFJVRSk7CistICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgfQorICAgICBnX3N0cmlu Z19mcmVlIChvdXRwdXQsIFRSVUUpOworKyAgICBvdXRwdXQgPSBOVUxMOworIAorICAgICBpZiAo aWJ1c19jb21wb3NlX3RhYmxlX2NvbXBhY3RfY2hlY2sgKCZpYnVzX2NvbXBvc2VfdGFibGVfY29t cGFjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5j b21wb3NlX2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBuX2NvbXBvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JmNvbXBvc2VfZmluaXNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZvdXRwdXRfY2hhcnMpKSB7CisrICAgICAgICBwcml2LT5pbl9jb21wb3NlX3NlcXVlbmNl ID0gVFJVRTsKKyAgICAgICAgIGlmIChjb21wb3NlX2ZpbmlzaCkgeworLSAgICAgICAgICAgIGli dXNfZW5naW5lX3NpbXBsZV9jb21taXRfY2hhciAoc2ltcGxlLCAqb3V0cHV0X2NoYXJzKTsKKysg ICAgICAgICAgICBpZiAoc3VjY2VzcykgeworKyAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBl bmRfdW5pY2hhciAocHJpdi0+dGVudGF0aXZlX21hdGNoLCAqb3V0cHV0X2NoYXJzKTsKKysgICAg ICAgICAgICAgICAgcHJpdi0+dGVudGF0aXZlX21hdGNoX2xlbiA9IG5fY29tcG9zZTsKKysgICAg ICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfY29t bWl0X2NoYXIgKHNpbXBsZSwgKm91dHB1dF9jaGFycyk7CisrICAgICAgICAgICAgICAgIHByaXYt PmNvbXBvc2VfYnVmZmVyWzBdID0gMDsKKysgICAgICAgICAgICB9CisgICAgICAgICAgICAgZ19m cmVlIChvdXRwdXRfY2hhcnMpOworLSAgICAgICAgICAgIHByaXYtPmNvbXBvc2VfYnVmZmVyWzBd ID0gMDsKKysgICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfdXBkYXRlX3ByZWVkaXRfdGV4 dCAoc2ltcGxlKTsKKysgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgIH0KKy0gICAg ICAgIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90ZXh0IChzaW1wbGUpOworLSAg ICAgICAgcmV0dXJuIFRSVUU7CisrICAgICAgICBzdWNjZXNzID0gVFJVRTsKKyAgICAgfQorKyAg ICBnX2ZyZWUgKG91dHB1dF9jaGFycyk7CisrICAgIG91dHB1dF9jaGFycyA9IE5VTEw7CisgICAg IGlmIChpYnVzX2NvbXBvc2VfdGFibGVfY29tcGFjdF9jaGVjayAoJmlidXNfY29tcG9zZV90YWJs ZV9jb21wYWN0XzMyYml0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHByaXYtPmNvbXBvc2VfYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5fY29tcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmY29tcG9zZV9maW5pc2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJm91dHB1dF9jaGFycykpIHsKKysgICAgICAgIHByaXYtPmluX2NvbXBv c2Vfc2VxdWVuY2UgPSBUUlVFOworICAgICAgICAgaWYgKGNvbXBvc2VfZmluaXNoKSB7CisgICAg ICAgICAgICAgR0Vycm9yICplcnJvciA9IE5VTEw7CisgICAgICAgICAgICAgY2hhciAqc3RyID0g Z191Y3M0X3RvX3V0ZjggKG91dHB1dF9jaGFycywgLTEsIE5VTEwsIE5VTEwsICZlcnJvcik7Cist ICAgICAgICAgICAgaWYgKHN0cikgeworLSAgICAgICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1w bGVfY29tbWl0X3N0ciAoc2ltcGxlLCBzdHIpOworLSAgICAgICAgICAgICAgICBnX2ZyZWUgKHN0 cik7CistICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICBpZiAoIXN0cikgeworICAg ICAgICAgICAgICAgICBnX3dhcm5pbmcgKCJGYWlsZWQgdG8gb3V0cHV0IG11bHRpcGxlIGNoYXJh Y3RlcnM6ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvci0+bWVzc2FnZSk7 CisgICAgICAgICAgICAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOworKyAgICAgICAgICAgIH0g ZWxzZSBpZiAoc3VjY2VzcykgeworKyAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmQgKHBy aXYtPnRlbnRhdGl2ZV9tYXRjaCwgc3RyKTsKKysgICAgICAgICAgICAgICAgcHJpdi0+dGVudGF0 aXZlX21hdGNoX2xlbiA9IG5fY29tcG9zZTsKKysgICAgICAgICAgICB9IGVsc2UgeworKyAgICAg ICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfY29tbWl0X3N0ciAoc2ltcGxlLCBzdHIpOwor KyAgICAgICAgICAgICAgICBwcml2LT5jb21wb3NlX2J1ZmZlclswXSA9IDA7CisgICAgICAgICAg ICAgfQorLSAgICAgICAgICAgIHByaXYtPmNvbXBvc2VfYnVmZmVyWzBdID0gMDsKKysgICAgICAg ICAgICBnX2ZyZWUgKHN0cik7CisrICAgICAgICAgICAgZ19mcmVlIChvdXRwdXRfY2hhcnMpOwor KyAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90ZXh0IChzaW1w bGUpOworKyAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICAgfQorLSAgICAgICAgZ19m cmVlIChvdXRwdXRfY2hhcnMpOworLSAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9w cmVlZGl0X3RleHQgKHNpbXBsZSk7CistICAgICAgICByZXR1cm4gVFJVRTsKKysgICAgICAgIHN1 Y2Nlc3MgPSBUUlVFOworICAgICB9CistICAgIGdfYXNzZXJ0ICghb3V0cHV0X2NoYXJzKTsKKysg ICAgZ19mcmVlIChvdXRwdXRfY2hhcnMpOworKyAgICBvdXRwdXRfY2hhcnMgPSBOVUxMOworICAg ICBpZiAoaWJ1c19jaGVja19hbGdvcml0aG1pY2FsbHkgKHByaXYtPmNvbXBvc2VfYnVmZmVyLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fY29tcG9zZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0X2NoYXIpKSB7CisrICAgICAgICBw cml2LT5pbl9jb21wb3NlX3NlcXVlbmNlID0gVFJVRTsKKyAgICAgICAgIGlmIChvdXRwdXRfY2hh cikgeworLSAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV9jb21taXRfY2hhciAoc2ltcGxl LCBvdXRwdXRfY2hhcik7CistICAgICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZmZXJbMF0gPSAw OworKyAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7CisrICAgICAgICAgICAgICAgIGdfc3RyaW5n X2FwcGVuZF91bmljaGFyIChwcml2LT50ZW50YXRpdmVfbWF0Y2gsIG91dHB1dF9jaGFyKTsKKysg ICAgICAgICAgICAgICAgcHJpdi0+dGVudGF0aXZlX21hdGNoX2xlbiA9IG5fY29tcG9zZTsKKysg ICAgICAgICAgICB9IGVsc2UgIHsKKysgICAgICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxl X2NvbW1pdF9jaGFyIChzaW1wbGUsIG91dHB1dF9jaGFyKTsKKysgICAgICAgICAgICAgICAgcHJp di0+Y29tcG9zZV9idWZmZXJbMF0gPSAwOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBp YnVzX2VuZ2luZV9zaW1wbGVfdXBkYXRlX3ByZWVkaXRfdGV4dCAoc2ltcGxlKTsKKysgICAgICAg ICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgIH0KKysgICAgICAgIHN1Y2Nlc3MgPSBUUlVFOwor KyAgICB9CisrICAgIGlmIChzdWNjZXNzKSB7CisgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVf dXBkYXRlX3ByZWVkaXRfdGV4dCAoc2ltcGxlKTsKKyAgICAgICAgIHJldHVybiBUUlVFOworICAg ICB9CitAQCAtODEwLDYgKzk0Niw3IEBAIGlidXNfZW5naW5lX3NpbXBsZV9jaGVja19hbGxfY29t cG9zZV90YWJsZSAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlLAorICAgICByZXR1cm4gRkFMU0U7 CisgfQorIAorKworIHN0YXRpYyBnYm9vbGVhbgorIGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNz X2tleV9ldmVudCAoSUJ1c0VuZ2luZSAqZW5naW5lLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ3VpbnQgICAgICAga2V5dmFsLAorQEAgLTg0MSwxNiArOTc4LDE3IEBA IGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNzX2tleV9ldmVudCAoSUJ1c0VuZ2luZSAqZW5naW5l LAorICAgICAgICAgaWYgKHByaXYtPmluX2hleF9zZXF1ZW5jZSAmJgorICAgICAgICAgICAgIChr ZXl2YWwgPT0gSUJVU19LRVlfQ29udHJvbF9MIHx8IGtleXZhbCA9PSBJQlVTX0tFWV9Db250cm9s X1IgfHwKKyAgICAgICAgICAgICAga2V5dmFsID09IElCVVNfS0VZX1NoaWZ0X0wgfHwga2V5dmFs ID09IElCVVNfS0VZX1NoaWZ0X1IpKSB7CistICAgICAgICAgICAgaWYgKHByaXYtPnRlbnRhdGl2 ZV9tYXRjaCAmJgorLSAgICAgICAgICAgICAgICBnX3VuaWNoYXJfdmFsaWRhdGUgKHByaXYtPnRl bnRhdGl2ZV9tYXRjaCkpIHsKKy0gICAgICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX2Nv bW1pdF9jaGFyIChzaW1wbGUsIHByaXYtPnRlbnRhdGl2ZV9tYXRjaCk7CisrICAgICAgICAgICAg aWYgKHByaXYtPnRlbnRhdGl2ZV9tYXRjaC0+bGVuID4gMCkgeworKyAgICAgICAgICAgICAgICBj aGFyICpzdHIgPSBnX3N0cmR1cCAocHJpdi0+dGVudGF0aXZlX21hdGNoLT5zdHIpOworKyAgICAg ICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfY29tbWl0X3N0ciAoc2ltcGxlLCBzdHIpOwor KyAgICAgICAgICAgICAgICBnX2ZyZWUgKHN0cik7CisgICAgICAgICAgICAgICAgIGlidXNfZW5n aW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90ZXh0IChzaW1wbGUpOworICAgICAgICAgICAgIH0g ZWxzZSBpZiAobl9jb21wb3NlID09IDApIHsKKyAgICAgICAgICAgICAgICAgcHJpdi0+bW9kaWZp ZXJzX2Ryb3BwZWQgPSBUUlVFOworICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg ICAgIC8qIGludmFsaWQgaGV4IHNlcXVlbmNlICovCisgICAgICAgICAgICAgICAgIC8qIEZJWE1F IGJlZXBfd2luZG93IChldmVudC0+d2luZG93KTsgKi8KKy0gICAgICAgICAgICAgICAgcHJpdi0+ dGVudGF0aXZlX21hdGNoID0gMDsKKysgICAgICAgICAgICAgICAgZ19zdHJpbmdfc2V0X3NpemUg KHByaXYtPnRlbnRhdGl2ZV9tYXRjaCwgMCk7CisgICAgICAgICAgICAgICAgIGdfY2xlYXJfcG9p bnRlciAoJnByaXYtPnRlbnRhdGl2ZV9lbW9qaSwgZ19mcmVlKTsKKyAgICAgICAgICAgICAgICAg cHJpdi0+aW5faGV4X3NlcXVlbmNlID0gRkFMU0U7CisgICAgICAgICAgICAgICAgIHByaXYtPmlu X2Vtb2ppX3NlcXVlbmNlID0gRkFMU0U7CitAQCAtODczLDcgKzEwMTEsNyBAQCBpYnVzX2VuZ2lu ZV9zaW1wbGVfcHJvY2Vzc19rZXlfZXZlbnQgKElCdXNFbmdpbmUgKmVuZ2luZSwKKyAgICAgICAg ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAvKiBpbnZhbGlkIGhleCBzZXF1ZW5jZSAq LworICAgICAgICAgICAgICAgICAvKiBGSVhNRSBiZWVwX3dpbmRvdyAoZXZlbnQtPndpbmRvdyk7 ICovCistICAgICAgICAgICAgICAgIHByaXYtPnRlbnRhdGl2ZV9tYXRjaCA9IDA7CisrICAgICAg ICAgICAgICAgIGdfc3RyaW5nX3NldF9zaXplIChwcml2LT50ZW50YXRpdmVfbWF0Y2gsIDApOwor ICAgICAgICAgICAgICAgICBnX2NsZWFyX3BvaW50ZXIgKCZwcml2LT50ZW50YXRpdmVfZW1vamks IGdfZnJlZSk7CisgICAgICAgICAgICAgICAgIHByaXYtPmluX2hleF9zZXF1ZW5jZSA9IEZBTFNF OworICAgICAgICAgICAgICAgICBwcml2LT5pbl9lbW9qaV9zZXF1ZW5jZSA9IEZBTFNFOworQEAg LTkyMSw3ICsxMDU5LDcgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3Byb2Nlc3Nfa2V5X2V2ZW50IChJ QnVzRW5naW5lICplbmdpbmUsCisgICAgICAgICBlbHNlIGlmIChpc19oZXhfZW5kKSB7CisgICAg ICAgICAgICAgLyogaW52YWxpZCBoZXggc2VxdWVuY2UgKi8KKyAgICAgICAgICAgICAvLyBiZWVw X3dpbmRvdyAoZXZlbnQtPndpbmRvdyk7CistICAgICAgICAgICAgcHJpdi0+dGVudGF0aXZlX21h dGNoID0gMDsKKysgICAgICAgICAgICBnX3N0cmluZ19zZXRfc2l6ZSAocHJpdi0+dGVudGF0aXZl X21hdGNoLCAwKTsKKyAgICAgICAgICAgICBnX2NsZWFyX3BvaW50ZXIgKCZwcml2LT50ZW50YXRp dmVfZW1vamksIGdfZnJlZSk7CisgICAgICAgICAgICAgcHJpdi0+aW5faGV4X3NlcXVlbmNlID0g RkFMU0U7CisgICAgICAgICAgICAgcHJpdi0+aW5fZW1vamlfc2VxdWVuY2UgPSBGQUxTRTsKK0BA IC05OTksNyArMTEzNyw4IEBAIGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNzX2tleV9ldmVudCAo SUJ1c0VuZ2luZSAqZW5naW5lLAorICAgICAgICAgaWYgKG5fY29tcG9zZSA+IDApIHsKKyAgICAg ICAgICAgICBuX2NvbXBvc2UtLTsKKyAgICAgICAgICAgICBwcml2LT5jb21wb3NlX2J1ZmZlcltu X2NvbXBvc2VdID0gMDsKKy0gICAgICAgICAgICBwcml2LT50ZW50YXRpdmVfbWF0Y2ggPSAwOwor KyAgICAgICAgICAgIGdfc3RyaW5nX3NldF9zaXplIChwcml2LT50ZW50YXRpdmVfbWF0Y2gsIDAp OworKyAgICAgICAgICAgIHByaXYtPnRlbnRhdGl2ZV9tYXRjaF9sZW4gPSAwOworICAgICAgICAg ICAgIGlidXNfZW5naW5lX3NpbXBsZV9jaGVja19hbGxfY29tcG9zZV90YWJsZSAoc2ltcGxlLCBu X2NvbXBvc2UpOworICAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICAgfQorQEAgLTEw MDcsMTYgKzExNDYsMTcgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3Byb2Nlc3Nfa2V5X2V2ZW50IChJ QnVzRW5naW5lICplbmdpbmUsCisgCisgICAgIC8qIENoZWNrIGZvciBoZXggc2VxdWVuY2UgcmVz dGFydCAqLworICAgICBpZiAocHJpdi0+aW5faGV4X3NlcXVlbmNlICYmIGhhdmVfaGV4X21vZHMg JiYgaXNfaGV4X3N0YXJ0KSB7CistICAgICAgICBpZiAocHJpdi0+dGVudGF0aXZlX21hdGNoICYm CistICAgICAgICAgICAgZ191bmljaGFyX3ZhbGlkYXRlIChwcml2LT50ZW50YXRpdmVfbWF0Y2gp KSB7CistICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX2NvbW1pdF9jaGFyIChzaW1wbGUs IHByaXYtPnRlbnRhdGl2ZV9tYXRjaCk7CisrICAgICAgICBpZiAocHJpdi0+dGVudGF0aXZlX21h dGNoLT5sZW4gPiAwICkgeworKyAgICAgICAgICAgIGNoYXIgKnN0ciA9IGdfc3RyZHVwIChwcml2 LT50ZW50YXRpdmVfbWF0Y2gtPnN0cik7CisrICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxl X2NvbW1pdF9zdHIgKHNpbXBsZSwgc3RyKTsKKysgICAgICAgICAgICBnX2ZyZWUgKHN0cik7Cisg ICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQgKHNpbXBs ZSk7CisgICAgICAgICB9CisgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAvKiBpbnZhbGlk IGhleCBzZXF1ZW5jZSAqLworICAgICAgICAgICAgIGlmIChuX2NvbXBvc2UgPiAwKSB7CisgICAg ICAgICAgICAgICAgIC8vIEZJWE1FIGJlZXBfd2luZG93IChldmVudC0+d2luZG93KTsKKy0gICAg ICAgICAgICAgICAgcHJpdi0+dGVudGF0aXZlX21hdGNoID0gMDsKKysgICAgICAgICAgICAgICAg Z19zdHJpbmdfc2V0X3NpemUgKHByaXYtPnRlbnRhdGl2ZV9tYXRjaCwgMCk7CisgICAgICAgICAg ICAgICAgIHByaXYtPmluX2hleF9zZXF1ZW5jZSA9IEZBTFNFOworICAgICAgICAgICAgICAgICBw cml2LT5jb21wb3NlX2J1ZmZlclswXSA9IDA7CisgICAgICAgICAgICAgfQorQEAgLTEwNDQsNyAr MTE4NCw3IEBAIGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNzX2tleV9ldmVudCAoSUJ1c0VuZ2lu ZSAqZW5naW5lLAorICAgICAgICAgcHJpdi0+aW5faGV4X3NlcXVlbmNlID0gVFJVRTsKKyAgICAg ICAgIHByaXYtPmluX2Vtb2ppX3NlcXVlbmNlID0gRkFMU0U7CisgICAgICAgICBwcml2LT5tb2Rp ZmllcnNfZHJvcHBlZCA9IEZBTFNFOworLSAgICAgICAgcHJpdi0+dGVudGF0aXZlX21hdGNoID0g MDsKKysgICAgICAgIGdfc3RyaW5nX3NldF9zaXplIChwcml2LT50ZW50YXRpdmVfbWF0Y2gsIDAp OworICAgICAgICAgZ19jbGVhcl9wb2ludGVyICgmcHJpdi0+dGVudGF0aXZlX2Vtb2ppLCBnX2Zy ZWUpOworIAorICAgICAgICAgLy8gZ19kZWJ1ZyAoIlN0YXJ0IEhFWCBNT0RFIik7CitAQCAtMTA1 OCw3ICsxMTk4LDcgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3Byb2Nlc3Nfa2V5X2V2ZW50IChJQnVz RW5naW5lICplbmdpbmUsCisgICAgICAgICBwcml2LT5pbl9oZXhfc2VxdWVuY2UgPSBGQUxTRTsK KyAgICAgICAgIHByaXYtPmluX2Vtb2ppX3NlcXVlbmNlID0gVFJVRTsKKyAgICAgICAgIHByaXYt Pm1vZGlmaWVyc19kcm9wcGVkID0gRkFMU0U7CistICAgICAgICBwcml2LT50ZW50YXRpdmVfbWF0 Y2ggPSAwOworKyAgICAgICAgZ19zdHJpbmdfc2V0X3NpemUgKHByaXYtPnRlbnRhdGl2ZV9tYXRj aCwgMCk7CisgICAgICAgICBnX2NsZWFyX3BvaW50ZXIgKCZwcml2LT50ZW50YXRpdmVfZW1vamks IGdfZnJlZSk7CisgCisgICAgICAgICAvLyBnX2RlYnVnICgiU3RhcnQgSEVYIE1PREUiKTsKK0BA IC0xMDY4LDcgKzEyMDgsNiBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfcHJvY2Vzc19rZXlfZXZlbnQg KElCdXNFbmdpbmUgKmVuZ2luZSwKKyAgICAgICAgIHJldHVybiBUUlVFOworICAgICB9CisgCist ICAgIC8qIFRoZW4sIGNoZWNrIGZvciBjb21wb3NlIHNlcXVlbmNlcyAqLworICAgICBpZiAocHJp di0+aW5faGV4X3NlcXVlbmNlKSB7CisgICAgICAgICBpZiAoaGV4X2tleXZhbCkgeworICAgICAg ICAgICAgIFNFVF9DT01QT1NFX0JVRkZFUl9FTEVNRU5UX05FWFQgKHByaXYtPmNvbXBvc2VfYnVm ZmVyLAorQEAgLTExMzMsMTcgKzEyNzIsMTcgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3Byb2Nlc3Nf a2V5X2V2ZW50IChJQnVzRW5naW5lICplbmdpbmUsCisgICAgICAgICBpZiAoaGF2ZV9oZXhfbW9k cykgeworICAgICAgICAgICAgIC8qIHNwYWNlIG9yIHJldHVybiBlbmRzIHRoZSBzZXF1ZW5jZSwg YW5kIHdlIGVhdCB0aGUga2V5ICovCisgICAgICAgICAgICAgaWYgKG5fY29tcG9zZSA+IDAgJiYg aXNfaGV4X2VuZCkgeworLSAgICAgICAgICAgICAgICBpZiAocHJpdi0+dGVudGF0aXZlX21hdGNo ICYmCistICAgICAgICAgICAgICAgICAgICBnX3VuaWNoYXJfdmFsaWRhdGUgKHByaXYtPnRlbnRh dGl2ZV9tYXRjaCkpIHsKKy0gICAgICAgICAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV9j b21taXRfY2hhciAoc2ltcGxlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT50 ZW50YXRpdmVfbWF0Y2gpOworLSAgICAgICAgICAgICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZm ZXJbMF0gPSAwOworKyAgICAgICAgICAgICAgICBpZiAocHJpdi0+dGVudGF0aXZlX21hdGNoLT5s ZW4gPiAwKSB7CisrICAgICAgICAgICAgICAgICAgICBjaGFyICpzdHIgPSBnX3N0cmR1cCAocHJp di0+dGVudGF0aXZlX21hdGNoLT5zdHIpOworKyAgICAgICAgICAgICAgICAgICAgaWJ1c19lbmdp bmVfc2ltcGxlX2NvbW1pdF9zdHIgKHNpbXBsZSwgc3RyKTsKKysgICAgICAgICAgICAgICAgICAg IGdfZnJlZSAoc3RyKTsKKyAgICAgICAgICAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV91 cGRhdGVfcHJlZWRpdF90ZXh0IChzaW1wbGUpOworKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu IFRSVUU7CisgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAv LyBGSVhNRQorICAgICAgICAgICAgICAgICAgICAgLyogaW52YWxpZCBoZXggc2VxdWVuY2UgKi8K KyAgICAgICAgICAgICAgICAgICAgIC8vIGJlZXBfd2luZG93IChldmVudC0+d2luZG93KTsKKy0g ICAgICAgICAgICAgICAgICAgIHByaXYtPnRlbnRhdGl2ZV9tYXRjaCA9IDA7CisrICAgICAgICAg ICAgICAgICAgICBnX3N0cmluZ19zZXRfc2l6ZSAocHJpdi0+dGVudGF0aXZlX21hdGNoLCAwKTsK KyAgICAgICAgICAgICAgICAgICAgIHByaXYtPmluX2hleF9zZXF1ZW5jZSA9IEZBTFNFOworICAg ICAgICAgICAgICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZmZXJbMF0gPSAwOworICAgICAgICAg ICAgICAgICB9CitAQCAtMTIzNCw3ICsxMzczLDcgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3Byb2Nl c3Nfa2V5X2V2ZW50IChJQnVzRW5naW5lICplbmdpbmUsCisgCisgICAgICAgICAgICAgcmV0dXJu IFRSVUU7CisgICAgICAgICB9CistICAgIH0gZWxzZSB7CisrICAgIH0gZWxzZSB7IC8qIFRoZW4s IGNoZWNrIGZvciBjb21wb3NlIHNlcXVlbmNlcyAqLworICAgICAgICAgaWYgKGlidXNfZW5naW5l X3NpbXBsZV9jaGVja19hbGxfY29tcG9zZV90YWJsZSAoc2ltcGxlLCBuX2NvbXBvc2UpKQorICAg ICAgICAgICAgIHJldHVybiBUUlVFOworICAgICB9CitkaWZmIC0tZ2l0IGEvc3JjL2lidXNlbmdp bmVzaW1wbGVwcml2YXRlLmggYi9zcmMvaWJ1c2VuZ2luZXNpbXBsZXByaXZhdGUuaAoraW5kZXgg NTQ3OWU1NTMuLmFkOTNkMmQyIDEwMDY0NAorLS0tIGEvc3JjL2lidXNlbmdpbmVzaW1wbGVwcml2 YXRlLmgKKysrKyBiL3NyYy9pYnVzZW5naW5lc2ltcGxlcHJpdmF0ZS5oCitAQCAtMjYsNiArMjYs MTIgQEAKKyAKKyBHX0JFR0lOX0RFQ0xTCisgCisrLyogQ2hlY2tzIGlmIGEga2V5c3ltIGlzIGEg ZGVhZCBrZXkuIERlYWQga2V5IGtleXN5bSB2YWx1ZXMgYXJlIGRlZmluZWQgaW4KKysgKiBpYnVz a2V5c3ltcy5oIGFuZCB0aGUgZmlyc3QgaXMgR0RLX0tFWV9kZWFkX2dyYXZlLgorKyAqLworKyNk ZWZpbmUgSVNfREVBRF9LRVkoaykgXAorKyAgICAgICgoaykgPj0gSUJVU19LRVlfZGVhZF9ncmF2 ZSAmJiAoaykgPD0gSUJVU19LRVlfZGVhZF9ncmVlaykKKysKKyBleHRlcm4gY29uc3QgSUJ1c0Nv bXBvc2VUYWJsZUNvbXBhY3RFeCBpYnVzX2NvbXBvc2VfdGFibGVfY29tcGFjdDsKKyBleHRlcm4g Y29uc3QgSUJ1c0NvbXBvc2VUYWJsZUNvbXBhY3RFeCBpYnVzX2NvbXBvc2VfdGFibGVfY29tcGFj dF8zMmJpdDsKKyAKK0BAIC02MCw3ICs2Niw4IEBAIGdib29sZWFuIGlidXNfY29tcG9zZV90YWJs ZV9jb21wYWN0X2NoZWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdi b29sZWFuICAgICAgICAgICAgICAgICAgICpjb21wb3NlX2ZpbmlzaCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ3VuaWNoYXIgICAgICAgICAgICAgICAgICAqKm91dHB1 dF9jaGFycyk7CisgZ3VuaWNoYXIgaWJ1c19rZXlzeW1fdG9fdW5pY29kZSAgICAgKGd1aW50MTYg ICAgICAgICAgICAgICAgICAgICBrZXlzeW0sCistICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAgICAgICAgICBjb21iaW5pbmcpOworKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICAg ICAgY29tYmluaW5nLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9v bGVhbiAgICAgICAgICAgICAgICAgICAqbmVlZF9zcGFjZSk7CisgCisgR19FTkRfREVDTFMKKyAK Ky0tIAorMi4yOC4wCisKK0Zyb20gMTdhZTI2NmNhZGU0MWU3OTU1MzQ1MzJhY2VmYzg1NzE2YmIz MDllZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVq aXdhcmExQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMjYgSnVsIDIwMjEgMjI6NTM6MzQgKzA5MDAK K1N1YmplY3Q6IFtQQVRDSCA2LzZdIENvZGUgcmV2aWV3cworCistIFVzZSBmc3RhdCgpIGFuZCBm Y2htb2QoKSBidXQgbm90IHN0YXQoKSBhbmQgY2htb2QoKSB0bworICBmaXggcmFjZSBjb25kaXRp b25zCistIEF2b2lkIHRvIHVzZSBhZnRlciBmcmVlCistIEZpeCBkZXJlZmVyZW5jZSBvZiBJQnVz Q29tcG9zZVRhYmxlLT5wcml2CistIEZpeCB0byBkaXZpZGUgYnkgemVybworLS0tCisgc3JjL2li dXNidXMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIzICsrKysrKysrKysrKysrKysr Ky0tLS0tCisgc3JjL2lidXNjb21wb3NldGFibGUuYyAgICAgICAgICAgICAgICAgICB8ICA4ICsr KysrKy0tCisgc3JjL3Rlc3RzL2lidXMtZGVza3RvcC10ZXN0aW5nLXJ1bm5lci5pbiB8ICA2ICsr Ky0tLQorIDMgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0p CisKK2RpZmYgLS1naXQgYS9zcmMvaWJ1c2J1cy5jIGIvc3JjL2lidXNidXMuYworaW5kZXggZTli MGJjYmIuLjQ3NDAwY2I4IDEwMDY0NAorLS0tIGEvc3JjL2lidXNidXMuYworKysrIGIvc3JjL2li dXNidXMuYworQEAgLTIxLDEzICsyMSwxNCBAQAorICAqIFVTQQorICAqLworIAorLSNpbmNsdWRl ICJpYnVzYnVzLmgiCisgI2luY2x1ZGUgPGVycm5vLmg+CisrI2luY2x1ZGUgPGZjbnRsLmg+Cisg I2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICNpbmNsdWRl IDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KKyAjaW5jbHVkZSA8Z2lvL2dp by5oPgorKyNpbmNsdWRlICJpYnVzYnVzLmgiCisgI2luY2x1ZGUgImlidXNtYXJzaGFsZXJzLmgi CisgI2luY2x1ZGUgImlidXNpbnRlcm5hbC5oIgorICNpbmNsdWRlICJpYnVzc2hhcmUuaCIKK0BA IC01MzcsNyArNTM4LDggQEAgc3RhdGljIHZvaWQKKyBpYnVzX2J1c19pbml0IChJQnVzQnVzICpi dXMpCisgeworICAgICBzdHJ1Y3Qgc3RhdCBidWY7CistICAgIGdjaGFyICpwYXRoOworKyAgICBj aGFyICpwYXRoOworKyAgICBpbnQgZmQ7CisgCisgICAgIGJ1cy0+cHJpdiA9IElCVVNfQlVTX0dF VF9QUklWQVRFIChidXMpOworIAorQEAgLTU2MiwyMCArNTY0LDMxIEBAIGlidXNfYnVzX2luaXQg KElCdXNCdXMgKmJ1cykKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorLSAgICBpZiAoc3Rh dCAocGF0aCwgJmJ1ZikgPT0gMCkgeworKyAgICBlcnJubyA9IDA7CisrICAgIGlmICgoZmQgPSBv cGVuIChwYXRoLCBPX1JET05MWSB8IE9fRElSRUNUT1JZLCBTX0lSV1hVKSkgPT0gLTEpIHsKKysg ICAgICAgIGdfd2FybmluZyAoIm9wZW4gJXMgZmFpbGVkOiAlcyIsIHBhdGgsIGdfc3RyZXJyb3Ig KGVycm5vKSk7CisrICAgICAgICBnX2ZyZWUgKHBhdGgpOworKyAgICAgICAgcmV0dXJuOworKyAg ICB9CisrICAgIC8qIFRPQ1RPVTogVXNlIGZzdGF0KCkgYW5kIGZjaG1vZCgpIGJ1dCBub3Qgc3Rh dCgpIGFuZCBjaG1vZCgpLgorKyAgICAgKiBiZWNhdXNlIGl0IGNhbiBjYXVzZSBhIHRpbWUtb2Yt Y2hlY2ssIHRpbWUtb2YtdXNlIHJhY2UgY29uZGl0aW9uLgorKyAgICAgKi8KKysgICAgaWYgKGZz dGF0IChmZCwgJmJ1ZikgPT0gMCkgeworICAgICAgICAgaWYgKGJ1Zi5zdF91aWQgIT0gZ2V0dWlk ICgpKSB7CisgICAgICAgICAgICAgZ193YXJuaW5nICgiVGhlIG93bmVyIG9mICVzIGlzIG5vdCAl cyEiLAorICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgaWJ1c19nZXRfdXNlcl9uYW1lICgp KTsKKysgICAgICAgICAgICBjbG9zZSAoZmQpOworICAgICAgICAgICAgIGdfZnJlZSAocGF0aCk7 CisgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgfQorICAgICAgICAgaWYgKGJ1Zi5zdF9t b2RlICE9IChTX0lGRElSIHwgU19JUldYVSkpIHsKKyAgICAgICAgICAgICBlcnJubyA9IDA7Cist ICAgICAgICAgICAgaWYgKGdfY2htb2QgKHBhdGgsIDA3MDApKQorLSAgICAgICAgICAgICAgICBn X3dhcm5pbmcgKCJjaG1vZCBmYWlsZWQ6ICVzIiwgZXJybm8gPyBnX3N0cmVycm9yIChlcnJubykg OiAiIik7CisrICAgICAgICAgICAgaWYgKGZjaG1vZCAoZmQsIFNfSVJXWFUpKQorKyAgICAgICAg ICAgICAgICBnX3dhcm5pbmcgKCJjaG1vZCBmYWlsZWQ6ICVzIiwgZ19zdHJlcnJvciAoZXJybm8p KTsKKyAgICAgICAgIH0KKyAgICAgfQorIAorKyAgICBjbG9zZSAoZmQpOworICAgICBnX2ZyZWUg KHBhdGgpOworIH0KKyAKK2RpZmYgLS1naXQgYS9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jIGIvc3Jj L2lidXNjb21wb3NldGFibGUuYworaW5kZXggMmFkMjE1NTEuLmEwYjBiZWZjIDEwMDY0NAorLS0t IGEvc3JjL2lidXNjb21wb3NldGFibGUuYworKysrIGIvc3JjL2lidXNjb21wb3NldGFibGUuYwor QEAgLTQwNiw3ICs0MDYsNyBAQCBnZXRfZW5fY29tcG9zZV9maWxlICh2b2lkKQorICAgICAgICAg cGF0aCA9IGdfYnVpbGRfZmlsZW5hbWUgKFgxMV9EQVRBRElSLCAqc3lzX2xhbmcsICJDb21wb3Nl IiwgTlVMTCk7CisgICAgICAgICBpZiAoZ19maWxlX3Rlc3QgKHBhdGgsIEdfRklMRV9URVNUX0VY SVNUUykpCisgICAgICAgICAgICAgYnJlYWs7CistICAgICAgICBnX2ZyZWUgKHBhdGgpOworKyAg ICAgICAgZ19jbGVhcl9wb2ludGVyICgmcGF0aCwgZ19mcmVlKTsKKyAgICAgfQorICAgICByZXR1 cm4gcGF0aDsKKyB9CitAQCAtOTc1LDcgKzk3NSwxMCBAQCBpYnVzX2NvbXBvc2VfdGFibGVfZGVz ZXJpYWxpemUgKGNvbnN0IGNoYXIgKmNvbnRlbnRzLAorICAgICAgICAgZ290byBvdXRfbG9hZF9j YWNoZTsKKyAgICAgfQorICAgICBpZiAoZGF0YV9sZW5ndGgpIHsKKy0gICAgICAgIHJldHZhbC0+ cHJpdiA9IGdfbmV3MCAoSUJ1c0NvbXBvc2VUYWJsZVByaXZhdGUsIDEpOworKyAgICAgICAgaWYg KCEocmV0dmFsLT5wcml2ID0gZ19uZXcwIChJQnVzQ29tcG9zZVRhYmxlUHJpdmF0ZSwgMSkpKSB7 CisrICAgICAgICAgICAgZ193YXJuaW5nICgiRmFpbGVkIGdfbmV3Iik7CisrICAgICAgICAgICAg Z290byBvdXRfbG9hZF9jYWNoZTsKKysgICAgICAgIH0KKyAgICAgICAgIHJldHZhbC0+cHJpdi0+ ZGF0YV9maXJzdCA9IGdfbmV3IChndWludDE2LCBkYXRhX2xlbmd0aCk7CisgICAgICAgICBtZW1j cHkgKHJldHZhbC0+cHJpdi0+ZGF0YV9maXJzdCwKKyAgICAgICAgICAgICAgICAgZGF0YV8zMmJp dF9maXJzdCwgZGF0YV9sZW5ndGggKiBzaXplb2YgKGd1aW50MTYpKTsKK0BAIC0xNTY1LDYgKzE1 NjgsNyBAQCBpYnVzX2NvbXBvc2VfdGFibGVfY29tcGFjdF9jaGVjayAoY29uc3QgSUJ1c0NvbXBv c2VUYWJsZUNvbXBhY3RFeAorICAgICAgICAgICAgIHJvd19zdHJpZGUgPSBpICsgMjsKKyAKKyAg ICAgICAgICAgICBpZiAoc2VxX2luZGV4W2kgKyAxXSAtIHNlcV9pbmRleFtpXSA+IDApIHsKKysg ICAgICAgICAgICAgICAgZ19hc3NlcnQgKHJvd19zdHJpZGUpOworICAgICAgICAgICAgICAgICBz ZXEgPSBic2VhcmNoIChjb21wb3NlX2J1ZmZlciArIDEsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRhYmxlLT5kYXRhICsgc2VxX2luZGV4W2ldLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoc2VxX2luZGV4W2kgKyAxXSAtIHNlcV9pbmRleFtpXSkgLyByb3dfc3Ry aWRlLAorZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy9pYnVzLWRlc2t0b3AtdGVzdGluZy1ydW5uZXIu aW4gYi9zcmMvdGVzdHMvaWJ1cy1kZXNrdG9wLXRlc3RpbmctcnVubmVyLmluCitpbmRleCAwZWY3 MmMwMy4uYzEwMTY3MDMgMTAwNzU1CistLS0gYS9zcmMvdGVzdHMvaWJ1cy1kZXNrdG9wLXRlc3Rp bmctcnVubmVyLmluCisrKysgYi9zcmMvdGVzdHMvaWJ1cy1kZXNrdG9wLXRlc3RpbmctcnVubmVy LmluCitAQCAtMjIwLDcgKzIyMCw3IEBAIGluaXRfZ25vbWUoKQorICAgICAjIEdfTUVTU0FHRVNf REVCVUc9YWxsIG9yIEdfTUVTU0FHRVNfREVCVUc9R0xpYi1HSU8tREVCVUcgd291bGQgYXBwZW5k CisgICAgICMgZGVidWcgbWVzc2FnZXMgdG8gZ3NldHRpbmdzIG91dHB1dCBhbmQgY291bGQgbm90 IGdldCB0aGUgcmVzdWx0IGNvcnJlY3RseS4KKyAgICAgYmFja3VwX0dfTUVTU0FHRVNfREVCVUc9 IiRHX01FU1NBR0VTX0RFQlVHIgorLSAgICBleHBvcnQgLW4gR19NRVNTQUdFU19ERUJVRz0nJwor KyAgICB1bnNldCBHX01FU1NBR0VTX0RFQlVHCisgICAgICMgRGlzYWJsZSBUb3VyIGRpYWxvZyB0 byBnZXQgZm9jdXMKKyAgICAgVj1gZ3NldHRpbmdzIGdldCBvcmcuZ25vbWUuc2hlbGwgd2VsY29t ZS1kaWFsb2ctbGFzdC1zaG93bi12ZXJzaW9uYAorICAgICBpZiBbIHgiJFYiID0geCInJyIgXSA7 IHRoZW4KK0BAIC0yMzEsOCArMjMxLDggQEAgaW5pdF9nbm9tZSgpCisgICAgIE5PX1NZU19ESVI9 L3Vzci9zaGFyZS9nbm9tZS1zaGVsbC9leHRlbnNpb25zL25vLW92ZXJ2aWV3QGZ0aHgKKyAgICAg Tk9fVVNFUl9ESVI9JEhPTUUvLmxvY2FsL3NoYXJlL2dub21lLXNoZWxsL2V4dGVuc2lvbnMvbm8t b3ZlcnZpZXdAZnRoeAorICAgICBpZiBbICEgLWQgJE5PX1NZU19ESVIgXSAmJiBbICEgLWQgJE5P X1VTRVJfRElSIF0gOyB0aGVuCistICAgICAgICBta2RpciAtcCBgZGlybmFtZSAkTk9fVVNFUl9E SVJgCistICAgICAgICBjcCAtUiBuby1vdmVydmlld0BmdGh4IGBkaXJuYW1lICROT19VU0VSX0RJ UmAKKysgICAgICAgIG1rZGlyIC1wICJgZGlybmFtZSAkTk9fVVNFUl9ESVJgIgorKyAgICAgICAg Y3AgLVIgIm5vLW92ZXJ2aWV3QGZ0aHgiICJgZGlybmFtZSAkTk9fVVNFUl9ESVJgIgorICAgICBm aQorICAgICBWPWBnc2V0dGluZ3MgZ2V0IG9yZy5nbm9tZS5zaGVsbCBkaXNhYmxlLXVzZXItZXh0 ZW5zaW9uc2AKKyAgICAgaWYgWyB4IiRWIiA9IHgidHJ1ZSIgXSA7IHRoZW4KKy0tIAorMi4yOC4w CisKCmRpZmYgLS1naXQgYS9pYnVzLnNwZWMgYi9pYnVzLnNwZWMKaW5kZXggNDFmNGNiNS4uNGJh NGE1MiAxMDA2NDQKLS0tIGEvaWJ1cy5zcGVjCisrKyBiL2lidXMuc3BlYwpAQCAtMzgsNyArMzgs NyBAQAogCiBOYW1lOiAgICAgICAgICAgaWJ1cwogVmVyc2lvbjogICAgICAgIDEuNS4yNAotUmVs ZWFzZTogICAgICAgIDExJXs/ZGlzdH0KK1JlbGVhc2U6ICAgICAgICAxMiV7P2Rpc3R9CiBTdW1t YXJ5OiAgICAgICAgSW50ZWxsaWdlbnQgSW5wdXQgQnVzIGZvciBMaW51eCBPUwogTGljZW5zZTog ICAgICAgIExHUEx2MisKIFVSTDogICAgICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vaWJ1cy8l bmFtZS93aWtpCkBAIC01MTAsNiArNTEwLDExIEBAIGRjb25mIHVwZGF0ZSB8fCA6CiAle19kYXRh ZGlyfS9pbnN0YWxsZWQtdGVzdHMvaWJ1cwogCiAlY2hhbmdlbG9nCisqIE1vbiBKdWwgMjYgMjAy MSBUYWthbyBGdWppd2FyYSA8dGZ1aml3YXJAcmVkaGF0LmNvbT4gLSAxLjUuMjQtMTIKKy0gU2Vh cmNoIGxhbmd1YWdlIG5hbWUgaW4gZW5naW5lIGxpc3QgaW4gaWJ1cy1zZXR1cAorLSBTZXQgTXVs dGlfa2V5IHRvIDB4QjcgaW4gY29tcG9zZSBwcmVlZGl0CistIE1ha2UgQ29tcG9zZSBwcmVlZGl0 IGxlc3MgaW50cnVzaXZlCisKICogVGh1IEp1bCAyMiAyMDIxIEZlZG9yYSBSZWxlYXNlIEVuZ2lu ZWVyaW5nIDxyZWxlbmdAZmVkb3JhcHJvamVjdC5vcmc+IC0gMS41LjI0LTExCiAtIFJlYnVpbHQg Zm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfMzVfTWFzc19SZWJ1aWxk CiAK