From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: Rebase to FSF GDB 7.5. Date: Thu, 23 Jul 2026 18:30:37 GMT Message-ID: <178483143782.1.17348932823868801298.rpms-gdb-30f2069f6eae@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 30f2069f6eae88d7672db5d92a457dce007d578e ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogMzBmMjA2OWY2ZWFlODhkNzY3MmRiNWQ5MmE0NTdkY2UwMDdkNTc4ZQog ICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxMi0wOC0xOFQwOTo0MTowOSswMjowMAogICAg ICAgICAgICBTdGF0cyAgOiArMzM0OS8tNDY5IGluIDEzIGZpbGUocykKICAgICAgICAgICAgVVJM ICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9nZGIvYy8zMGYyMDY5ZjZl YWU4OGQ3NjcyZGI1ZDkyYTQ1N2RjZTAwN2Q1NzhlP2JyYW5jaD1maXgtZHVwLXBhdGNoCgogICAg ICAgICAgICBMb2c6CiAgICAgICAgICAgIFJlYmFzZSB0byBGU0YgR0RCIDcuNS4KCi0gVXBkYXRl IGRsb3BlbiB0byBzdXBwb3J0IHR3byB2YXJpYW50cyBvZiBnbGliYyAoR2FyeSBCZW5zb24sIEJa IDY2OTQzMikuCgotLS0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4 IDViNzI0MzMuLjY2ZTBkZWQgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9y ZQpAQCAtMSwyICsxLDIgQEAKIC9nZGItbGlic3RkYysrLXYzLXB5dGhvbi1yMTU1OTc4LnRhci5i ejIKLS9nZGItNy40LjkxLjIwMTIwODAxLnRhci5iejIKKy9nZGItNy41LnRhci5iejIKCmRpZmYg LS1naXQgYS9nZGItZGxvcGVuLXN0YXAtcHJvYmUtMW9mNy5wYXRjaCBiL2dkYi1kbG9wZW4tc3Rh cC1wcm9iZS0xb2Y3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4 OTFmYjMKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUtMW9mNy5wYXRj aApAQCAtMCwwICsxLDc5NSBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAx Mi0wNy9tc2cwMDEyMy5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA3LzE4IDA0 OjM2OjE1CTEuMTQ0NzMKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA3LzE4IDE2OjEyOjE1 CTEuMTQ0NzQKKyMjIC0xLDMgKzEsMzcgQEAKKysyMDEyLTA3LTE4ICBTZXJnaW8gRHVyaWdhbiBK dW5pb3IgIDxzZXJnaW9kakByZWRoYXQuY29tPgorKworKwkqIGVsZnJlYWQuYyAoZWxmX2dldF9w cm9iZV9hcmd1bWVudF9jb3VudCk6IFJlbW92ZSBgb2JqZmlsZScgYXJndW1lbnQuCisrCShlbGZf Y29tcGlsZV90b19heCk6IExpa2V3aXNlLgorKwkqIGluZnJ1bi5jIChpbnNlcnRfZXhjZXB0aW9u X3Jlc3VtZV9mcm9tX3Byb2JlKTogTGlrZXdpc2UuCisrCShjaGVja19leGNlcHRpb25fcmVzdW1l KTogUmVtb3ZlIGBvYmpmaWxlJyB2YXJpYWJsZS4KKysJKiBwcm9iZS5jIChmaW5kX3Byb2JlX2J5 X3BjKTogUmVtb3ZlIGBvYmpmaWxlJyBhcmd1bWVudC4KKysJKHN0cnVjdCBwcm9iZV9hbmRfb2Jq ZmlsZSwgcHJvYmVfYW5kX29iamZpbGVfcyk6IERlbGV0ZS4KKysJKGNvbGxlY3RfcHJvYmVzKTog QWRqdXN0IHJldHVybiB2YWx1ZSB0byBgVkVDIChwcm9iZV9wKSAqJy4KKysJKGNvbXBhcmVfZW50 cmllcyk6IFJlbmFtZSB0by4uLgorKwkoY29tcGFyZV9wcm9iZXMpOiAuLi50aGlzLiAgQWRqdXN0 IGZ1bmN0aW9uIHRvIHdvcmsgd2l0aAorKwlgc3RydWN0IHByb2JlIConLiAgUmVuYW1lIHZhcmlh YmxlcyBgZWEnIGFuZCBgZWInIHRvIGBwYScgYW5kIGBwYicKKysJcmVzcGVjdGl2ZWx5LgorKwko Z2VuX3VpX291dF90YWJsZV9oZWFkZXJfaW5mbyk6IEFkanVzdCBgcHJvYmVzJyBhcmd1bWVudCB0 byBiZQorKwlgVkVDIChwcm9iZV9wKSAqJy4KKysJKHByaW50X3VpX291dF9pbmZvKTogQWRqdXN0 IGFyZ3VtZW50IHRvIGJlIGBzdHJ1Y3QgcHJvYmUgKicuCisrCShpbmZvX3Byb2Jlc19mb3Jfb3Bz KTogQWRqdXN0IGludGVybmFsIGNvbXB1dGF0aW9ucyB0byB1c2UKKysJYFZFQyAocHJvYmVfcCkg KicuCisrCShwcm9iZV9zYWZlX2V2YWx1YXRlX2F0X3BjKTogUmVmYWN0b3IgdG8gbm90IHBhc3Mg YG9iamZpbGUnIGFueW1vcmUuCisrCSogcHJvYmUuaCAoc3RydWN0IHByb2JlX29wcykgPGdldF9w cm9iZV9hcmd1bWVudF9jb3VudCwgY29tcGlsZV90b19heCwKKysJZ2VuX2luZm9fcHJvYmVzX3Rh YmxlX3ZhbHVlcz46IFJlbW92ZSBgb2JqZmlsZScgYXJndW1lbnQuCisrCShzdHJ1Y3QgcHJvYmUp IDxvYmpmaWxlPjogTmV3IGZpZWxkLgorKwkoZmluZF9wcm9iZV9ieV9wYyk6IFJlbW92ZSBgb2Jq ZmlsZScgYXJndW1lbnQuCisrCSogc3RhcC1wcm9iZS5jIChzdGFwX3BhcnNlX3Byb2JlX2FyZ3Vt ZW50cyk6IExpa2V3aXNlLgorKwkoc3RhcF9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQpOiBMaWtl d2lzZS4KKysJKHN0YXBfZ2V0X2FyZyk6IExpa2V3aXNlLgorKwkoc3RhcF9ldmFsdWF0ZV9wcm9i ZV9hcmd1bWVudCk6IExpa2V3aXNlLgorKwkoc3RhcF9jb21waWxlX3RvX2F4KTogTGlrZXdpc2Uu CisrCShjb21waWxlX3Byb2JlX2FyZyk6IFJlZmFjdG9yIG5vdCB0byBwYXNzIGBvYmpmaWxlJyBh bnltb3JlLgorKwkoaGFuZGxlX3N0YXBfcHJvYmUpOiBGaWxsIGBvYmpmaWxlJyBmaWVsZCBmcm9t IGBzdHJ1Y3QgcHJvYmUnLgorKwkoc3RhcF9nZW5faW5mb19wcm9iZXNfdGFibGVfaGVhZGVyKTog UmVtb3ZlIGBvYmpmaWxlJyBhcmd1bWVudC4KKysJKiBzeW1maWxlLmggKHN0cnVjdCBzeW1fcHJv YmVfZm5zKSA8c3ltX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50LAorKwlzeW1fY29tcGlsZV90b19h eD46IExpa2V3aXNlLgorKworIDIwMTItMDctMTggIFRlcnJ5IEd1byAgPHRlcnJ5Lmd1b0Bhcm0u Y29tPgorIAorIAlQUiAxNDMyOQorLS0tIHNyYy9nZGIvZWxmcmVhZC5jCTIwMTIvMDYvMjYgMjA6 MTQ6MDEJMS4xMzMKKysrKyBzcmMvZ2RiL2VsZnJlYWQuYwkyMDEyLzA3LzE4IDE2OjEyOjE1CTEu MTM0CitAQCAtMTYzNSwzMyArMTYzNSwyOSBAQAorICAgIHN5bWZpbGUuaC4gICovCisgCisgc3Rh dGljIHVuc2lnbmVkCistZWxmX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsCistCQkJICAgICAgc3RydWN0IHByb2JlICpwcm9iZSkKKytlbGZfZ2V0X3By b2JlX2FyZ3VtZW50X2NvdW50IChzdHJ1Y3QgcHJvYmUgKnByb2JlKQorIHsKKy0gIHJldHVybiBw cm9iZS0+cG9wcy0+Z2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChwcm9iZSwgb2JqZmlsZSk7Cisr ICByZXR1cm4gcHJvYmUtPnBvcHMtPmdldF9wcm9iZV9hcmd1bWVudF9jb3VudCAocHJvYmUpOwor IH0KKyAKKyAvKiBJbXBsZW1lbnRhdGlvbiBvZiBgc3ltX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50 JywgYXMgZG9jdW1lbnRlZCBpbgorICAgIHN5bWZpbGUuaC4gICovCisgCisgc3RhdGljIHN0cnVj dCB2YWx1ZSAqCistZWxmX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwKKy0JCQkgICAgIHN0cnVjdCBwcm9iZSAqcHJvYmUsCistCQkJICAgICB1bnNpZ25l ZCBuKQorK2VsZl9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAoc3RydWN0IHByb2JlICpwcm9iZSwg dW5zaWduZWQgbikKKyB7CistICByZXR1cm4gcHJvYmUtPnBvcHMtPmV2YWx1YXRlX3Byb2JlX2Fy Z3VtZW50IChwcm9iZSwgb2JqZmlsZSwgbik7CisrICByZXR1cm4gcHJvYmUtPnBvcHMtPmV2YWx1 YXRlX3Byb2JlX2FyZ3VtZW50IChwcm9iZSwgbik7CisgfQorIAorIC8qIEltcGxlbWVudGF0aW9u IG9mIGBzeW1fY29tcGlsZV90b19heCcsIGFzIGRvY3VtZW50ZWQgaW4gc3ltZmlsZS5oLiAgKi8K KyAKKyBzdGF0aWMgdm9pZAorLWVsZl9jb21waWxlX3RvX2F4IChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwKKy0JCSAgIHN0cnVjdCBwcm9iZSAqcHJvYmUsCisrZWxmX2NvbXBpbGVfdG9fYXggKHN0 cnVjdCBwcm9iZSAqcHJvYmUsCisgCQkgICBzdHJ1Y3QgYWdlbnRfZXhwciAqZXhwciwKKyAJCSAg IHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlLAorIAkJICAgdW5zaWduZWQgbikKKyB7CistICBwcm9i ZS0+cG9wcy0+Y29tcGlsZV90b19heCAocHJvYmUsIG9iamZpbGUsIGV4cHIsIHZhbHVlLCBuKTsK KysgIHByb2JlLT5wb3BzLT5jb21waWxlX3RvX2F4IChwcm9iZSwgZXhwciwgdmFsdWUsIG4pOwor IH0KKyAKKyAvKiBJbXBsZW1lbnRhdGlvbiBvZiBgc3ltX3JlbG9jYXRlX3Byb2JlJywgYXMgZG9j dW1lbnRlZCBpbiBzeW1maWxlLmguICAqLworLS0tIHNyYy9nZGIvaW5mcnVuLmMJMjAxMi8wNy8w MSAxMDozNzowNAkxLjU0OQorKysrIHNyYy9nZGIvaW5mcnVuLmMJMjAxMi8wNy8xOCAxNjoxMjox NgkxLjU1MAorQEAgLTU1MTgsNyArNTUxOCw2IEBACisgc3RhdGljIHZvaWQKKyBpbnNlcnRfZXhj ZXB0aW9uX3Jlc3VtZV9mcm9tX3Byb2JlIChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwLAorIAkJCQkg ICAgY29uc3Qgc3RydWN0IHByb2JlICpwcm9iZSwKKy0JCQkJICAgIHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAorIAkJCQkgICAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorIHsKKyAgIHN0cnVj dCB2YWx1ZSAqYXJnX3ZhbHVlOworQEAgLTU1MzQsNyArNTUzMyw3IEBACisgICBpZiAoZGVidWdf aW5mcnVuKQorICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisgCQkJImluZnJ1 bjogZXhjZXB0aW9uIHJlc3VtZSBhdCAlc1xuIiwKKy0JCQlwYWRkcmVzcyAoZ2V0X29iamZpbGVf YXJjaCAob2JqZmlsZSksCisrCQkJcGFkZHJlc3MgKGdldF9vYmpmaWxlX2FyY2ggKHByb2JlLT5v YmpmaWxlKSwKKyAJCQkJICBoYW5kbGVyKSk7CisgCisgICBicCA9IHNldF9tb21lbnRhcnlfYnJl YWtwb2ludF9hdF9wYyAoZ2V0X2ZyYW1lX2FyY2ggKGZyYW1lKSwKK0BAIC01NTUyLDcgKzU1NTEs NiBAQAorIAkJCXN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyB7CisgICB2b2xhdGlsZSBzdHJ1 Y3QgZ2RiX2V4Y2VwdGlvbiBlOworLSAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7CisgICBjb25z dCBzdHJ1Y3QgcHJvYmUgKnByb2JlOworICAgc3RydWN0IHN5bWJvbCAqZnVuYzsKKyAKK0BAIC01 NTYwLDExICs1NTU4LDEwIEBACisgICAgICBTeXN0ZW1UYXAgcHJvYmUgcG9pbnQuICBJZiBzbywg dGhlIHByb2JlIGhhcyB0d28gYXJndW1lbnRzOiB0aGUKKyAgICAgIENGQSBhbmQgdGhlIEhBTkRM RVIuICBXZSBpZ25vcmUgdGhlIENGQSwgZXh0cmFjdCB0aGUgaGFuZGxlciwgYW5kCisgICAgICBz ZXQgYSBicmVha3BvaW50IHRoZXJlLiAgKi8KKy0gIHByb2JlID0gZmluZF9wcm9iZV9ieV9wYyAo Z2V0X2ZyYW1lX3BjIChmcmFtZSksICZvYmpmaWxlKTsKKysgIHByb2JlID0gZmluZF9wcm9iZV9i eV9wYyAoZ2V0X2ZyYW1lX3BjIChmcmFtZSkpOworICAgaWYgKHByb2JlKQorICAgICB7CistICAg ICAgaW5zZXJ0X2V4Y2VwdGlvbl9yZXN1bWVfZnJvbV9wcm9iZSAoZWNzLT5ldmVudF90aHJlYWQs IHByb2JlLAorLQkJCQkJICBvYmpmaWxlLCBmcmFtZSk7CisrICAgICAgaW5zZXJ0X2V4Y2VwdGlv bl9yZXN1bWVfZnJvbV9wcm9iZSAoZWNzLT5ldmVudF90aHJlYWQsIHByb2JlLCBmcmFtZSk7Cisg ICAgICAgcmV0dXJuOworICAgICB9CisgCistLS0gc3JjL2dkYi9wcm9iZS5jCTIwMTIvMDUvMDgg MDE6MzU6MzQJMS4zCisrKysgc3JjL2dkYi9wcm9iZS5jCTIwMTIvMDcvMTggMTY6MTI6MTcJMS40 CitAQCAtMjA0LDcgKzIwNCw3IEBACisgLyogU2VlIGRlZmluaXRpb24gaW4gcHJvYmUuaC4gICov CisgCisgc3RydWN0IHByb2JlICoKKy1maW5kX3Byb2JlX2J5X3BjIChDT1JFX0FERFIgcGMsIHN0 cnVjdCBvYmpmaWxlICoqb2JqZmlsZV9vdXQpCisrZmluZF9wcm9iZV9ieV9wYyAoQ09SRV9BRERS IHBjKQorIHsKKyAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOworIAorQEAgLTIyMSwxMCArMjIx LDcgQEAKKyAgICAgcHJvYmVzID0gb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMtPnN5bV9nZXRf cHJvYmVzIChvYmpmaWxlKTsKKyAgICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChwcm9iZV9w LCBwcm9iZXMsIGl4LCBwcm9iZSk7IGl4KyspCisgICAgICAgaWYgKHByb2JlLT5hZGRyZXNzID09 IHBjKQorLQl7CistCSAgKm9iamZpbGVfb3V0ID0gb2JqZmlsZTsKKy0JICByZXR1cm4gcHJvYmU7 CistCX0KKysJcmV0dXJuIHByb2JlOworICAgfQorIAorICAgcmV0dXJuIE5VTEw7CitAQCAtMjMy LDIxICsyMjksNiBAQAorIAorIAwKKyAKKy0vKiBBIHV0aWxpdHkgc3RydWN0dXJlLiAgQSBWRUMg b2YgdGhlc2UgaXMgYnVpbHQgd2hlbiBoYW5kbGluZyAiaW5mbworLSAgIHByb2JlcyIuICAqLwor LQorLXN0cnVjdCBwcm9iZV9hbmRfb2JqZmlsZQorLXsKKy0gIC8qIFRoZSBwcm9iZS4gICovCist ICBzdHJ1Y3QgcHJvYmUgKnByb2JlOworLQorLSAgLyogVGhlIHByb2JlJ3Mgb2JqZmlsZS4gICov CistICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKKy19OworLQorLXR5cGVkZWYgc3RydWN0IHBy b2JlX2FuZF9vYmpmaWxlIHByb2JlX2FuZF9vYmpmaWxlX3M7CistREVGX1ZFQ19PIChwcm9iZV9h bmRfb2JqZmlsZV9zKTsKKy0KKyAvKiBBIGhlbHBlciBmdW5jdGlvbiBmb3IgY29sbGVjdF9wcm9i ZXMgdGhhdCBjb21waWxlcyBhIHJlZ2V4cCBhbmQKKyAgICB0aHJvd3MgYW4gZXhjZXB0aW9uIG9u IGVycm9yLiAgVGhpcyBpbnN0YWxscyBhIGNsZWFudXAgdG8gZnJlZSB0aGUKKyAgICByZXN1bHRp bmcgcGF0dGVybiBvbiBzdWNjZXNzLiAgSWYgUlggaXMgTlVMTCwgdGhpcyBkb2VzIG5vdGhpbmcu ICAqLworQEAgLTI3NSwxNiArMjU3LDE2IEBACisgICAgSWYgUE9QUyBpcyBub3QgTlVMTCwgb25s eSBwcm9iZXMgb2YgdGhpcyBjZXJ0YWluIHByb2JlX29wcyB3aWxsIG1hdGNoLgorICAgIEVhY2gg YXJndW1lbnQgaXMgYSByZWdleHAsIG9yIE5VTEwsIHdoaWNoIG1hdGNoZXMgYW55dGhpbmcuICAq LworIAorLXN0YXRpYyBWRUMgKHByb2JlX2FuZF9vYmpmaWxlX3MpICoKKytzdGF0aWMgVkVDIChw cm9iZV9wKSAqCisgY29sbGVjdF9wcm9iZXMgKGNoYXIgKm9iam5hbWUsIGNoYXIgKnByb3ZpZGVy LCBjaGFyICpwcm9iZV9uYW1lLAorIAkJY29uc3Qgc3RydWN0IHByb2JlX29wcyAqcG9wcykKKyB7 CisgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKKy0gIFZFQyAocHJvYmVfYW5kX29iamZpbGVf cykgKnJlc3VsdCA9IE5VTEw7CisrICBWRUMgKHByb2JlX3ApICpyZXN1bHQgPSBOVUxMOworICAg c3RydWN0IGNsZWFudXAgKmNsZWFudXAsICpjbGVhbnVwX3RlbXBzOworICAgcmVnZXhfdCBvYmpf cGF0LCBwcm92X3BhdCwgcHJvYmVfcGF0OworIAorLSAgY2xlYW51cCA9IG1ha2VfY2xlYW51cCAo VkVDX2NsZWFudXAgKHByb2JlX2FuZF9vYmpmaWxlX3MpLCAmcmVzdWx0KTsKKysgIGNsZWFudXAg PSBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChwcm9iZV9wKSwgJnJlc3VsdCk7CisgCisgICBj bGVhbnVwX3RlbXBzID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwpOworICAgY29t cGlsZV9yeF9vcl9lcnJvciAoJnByb3ZfcGF0LCBwcm92aWRlciwgXygiSW52YWxpZCBwcm92aWRl ciByZWdleHAiKSk7CitAQCAtMzEwLDggKzI5Miw2IEBACisgCisgICAgICAgZm9yIChpeCA9IDA7 IFZFQ19pdGVyYXRlIChwcm9iZV9wLCBwcm9iZXMsIGl4LCBwcm9iZSk7IGl4KyspCisgCXsKKy0J ICBwcm9iZV9hbmRfb2JqZmlsZV9zIGVudHJ5OworLQorIAkgIGlmIChwb3BzICE9IE5VTEwgJiYg cHJvYmUtPnBvcHMgIT0gcG9wcykKKyAJICAgIGNvbnRpbnVlOworIAorQEAgLTMyMyw5ICszMDMs NyBAQAorIAkgICAgICAmJiByZWdleGVjICgmcHJvYmVfcGF0LCBwcm9iZS0+bmFtZSwgMCwgTlVM TCwgMCkgIT0gMCkKKyAJICAgIGNvbnRpbnVlOworIAorLQkgIGVudHJ5LnByb2JlID0gcHJvYmU7 CistCSAgZW50cnkub2JqZmlsZSA9IG9iamZpbGU7CistCSAgVkVDX3NhZmVfcHVzaCAocHJvYmVf YW5kX29iamZpbGVfcywgcmVzdWx0LCAmZW50cnkpOworKwkgIFZFQ19zYWZlX3B1c2ggKHByb2Jl X3AsIHJlc3VsdCwgcHJvYmUpOworIAl9CisgICAgIH0KKyAKK0BAIC0zMzQsMzYgKzMxMiwzNiBA QAorICAgcmV0dXJuIHJlc3VsdDsKKyB9CisgCistLyogQSBxc29ydCBjb21wYXJpc29uIGZ1bmN0 aW9uIGZvciBwcm9iZV9hbmRfb2JqZmlsZV9zIG9iamVjdHMuICAqLworKy8qIEEgcXNvcnQgY29t cGFyaXNvbiBmdW5jdGlvbiBmb3IgcHJvYmVfcCBvYmplY3RzLiAgKi8KKyAKKyBzdGF0aWMgaW50 CistY29tcGFyZV9lbnRyaWVzIChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQorK2NvbXBh cmVfcHJvYmVzIChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQorIHsKKy0gIGNvbnN0IHBy b2JlX2FuZF9vYmpmaWxlX3MgKmVhID0gYTsKKy0gIGNvbnN0IHByb2JlX2FuZF9vYmpmaWxlX3Mg KmViID0gYjsKKysgIGNvbnN0IHN0cnVjdCBwcm9iZSAqcGEgPSAqKChjb25zdCBzdHJ1Y3QgcHJv YmUgKiopIGEpOworKyAgY29uc3Qgc3RydWN0IHByb2JlICpwYiA9ICooKGNvbnN0IHN0cnVjdCBw cm9iZSAqKikgYik7CisgICBpbnQgdjsKKyAKKy0gIHYgPSBzdHJjbXAgKGVhLT5wcm9iZS0+cHJv dmlkZXIsIGViLT5wcm9iZS0+cHJvdmlkZXIpOworKyAgdiA9IHN0cmNtcCAocGEtPnByb3ZpZGVy LCBwYi0+cHJvdmlkZXIpOworICAgaWYgKHYpCisgICAgIHJldHVybiB2OworIAorLSAgdiA9IHN0 cmNtcCAoZWEtPnByb2JlLT5uYW1lLCBlYi0+cHJvYmUtPm5hbWUpOworKyAgdiA9IHN0cmNtcCAo cGEtPm5hbWUsIHBiLT5uYW1lKTsKKyAgIGlmICh2KQorICAgICByZXR1cm4gdjsKKyAKKy0gIGlm IChlYS0+cHJvYmUtPmFkZHJlc3MgPCBlYi0+cHJvYmUtPmFkZHJlc3MpCisrICBpZiAocGEtPmFk ZHJlc3MgPCBwYi0+YWRkcmVzcykKKyAgICAgcmV0dXJuIC0xOworLSAgaWYgKGVhLT5wcm9iZS0+ YWRkcmVzcyA+IGViLT5wcm9iZS0+YWRkcmVzcykKKysgIGlmIChwYS0+YWRkcmVzcyA+IHBiLT5h ZGRyZXNzKQorICAgICByZXR1cm4gMTsKKyAKKy0gIHJldHVybiBzdHJjbXAgKGVhLT5vYmpmaWxl LT5uYW1lLCBlYi0+b2JqZmlsZS0+bmFtZSk7CisrICByZXR1cm4gc3RyY21wIChwYS0+b2JqZmls ZS0+bmFtZSwgcGItPm9iamZpbGUtPm5hbWUpOworIH0KKyAKKyAvKiBIZWxwZXIgZnVuY3Rpb24g dGhhdCBnZW5lcmF0ZSBlbnRyaWVzIGluIHRoZSB1aV9vdXQgdGFibGUgYmVpbmcKKyAgICBjcmFm dGVkIGJ5IGBpbmZvX3Byb2Jlc19mb3Jfb3BzJy4gICovCisgCisgc3RhdGljIHZvaWQKKy1nZW5f dWlfb3V0X3RhYmxlX2hlYWRlcl9pbmZvIChWRUMgKHByb2JlX2FuZF9vYmpmaWxlX3MpICpwcm9i ZXMsCisrZ2VuX3VpX291dF90YWJsZV9oZWFkZXJfaW5mbyAoVkVDIChwcm9iZV9wKSAqcHJvYmVz LAorIAkJCSAgICAgIGNvbnN0IHN0cnVjdCBwcm9iZV9vcHMgKnApCisgeworICAgLyogYGhlYWRp bmdzJyByZWZlcnMgdG8gdGhlIG5hbWVzIG9mIHRoZSBjb2x1bW5zIHdoZW4gcHJpbnRpbmcgYGlu Zm8KK0BAIC0zOTIsMTEgKzM3MCwxMSBAQAorICAgICAgICBWRUNfaXRlcmF0ZSAoaW5mb19wcm9i ZV9jb2x1bW5fcywgaGVhZGluZ3MsIGl4LCBjb2x1bW4pOworICAgICAgICArK2l4KQorICAgICB7 CistICAgICAgcHJvYmVfYW5kX29iamZpbGVfcyAqZW50cnk7CisrICAgICAgc3RydWN0IHByb2Jl ICpwcm9iZTsKKyAgICAgICBpbnQgang7CisgICAgICAgc2l6ZV90IHNpemVfbWF4ID0gc3RybGVu IChjb2x1bW4tPnByaW50X25hbWUpOworIAorLSAgICAgIGZvciAoanggPSAwOyBWRUNfaXRlcmF0 ZSAocHJvYmVfYW5kX29iamZpbGVfcywgcHJvYmVzLCBqeCwgZW50cnkpOyArK2p4KQorKyAgICAg IGZvciAoanggPSAwOyBWRUNfaXRlcmF0ZSAocHJvYmVfcCwgcHJvYmVzLCBqeCwgcHJvYmUpOyAr K2p4KQorIAl7CisgCSAgLyogYHByb2JlX2ZpZWxkcycgcmVmZXJzIHRvIHRoZSB2YWx1ZXMgb2Yg ZWFjaCBuZXcgZmllbGQgdGhhdCB0aGlzCisgCSAgICAgcHJvYmUgd2lsbCBkaXNwbGF5LiAgKi8K K0BAIC00MDUsMTIgKzM4MywxMSBAQAorIAkgIGNvbnN0IGNoYXIgKnZhbDsKKyAJICBpbnQga3g7 CisgCistCSAgaWYgKGVudHJ5LT5wcm9iZS0+cG9wcyAhPSBwKQorKwkgIGlmIChwcm9iZS0+cG9w cyAhPSBwKQorIAkgICAgY29udGludWU7CisgCisgCSAgYzIgPSBtYWtlX2NsZWFudXAgKFZFQ19j bGVhbnVwIChjb25zdF9jaGFyX3B0ciksICZwcm9iZV9maWVsZHMpOworLQkgIHAtPmdlbl9pbmZv X3Byb2Jlc190YWJsZV92YWx1ZXMgKGVudHJ5LT5wcm9iZSwgZW50cnktPm9iamZpbGUsCistCQkJ CQkgICAmcHJvYmVfZmllbGRzKTsKKysJICBwLT5nZW5faW5mb19wcm9iZXNfdGFibGVfdmFsdWVz IChwcm9iZSwgJnByb2JlX2ZpZWxkcyk7CisgCisgCSAgZ2RiX2Fzc2VydCAoVkVDX2xlbmd0aCAo Y29uc3RfY2hhcl9wdHIsIHByb2JlX2ZpZWxkcykKKyAJCSAgICAgID09IGhlYWRpbmdzX3NpemUp OworQEAgLTQzNywxMCArNDE0LDEwIEBACisgfQorIAorIC8qIEhlbHBlciBmdW5jdGlvbiB0byBw cmludCBleHRyYSBpbmZvcm1hdGlvbiBhYm91dCBhIHByb2JlIGFuZCBhbiBvYmpmaWxlCistICAg cmVwcmVzZW50ZWQgYnkgRU5UUlkuICAqLworKyAgIHJlcHJlc2VudGVkIGJ5IFBST0JFLiAgKi8K KyAKKyBzdGF0aWMgdm9pZAorLXByaW50X3VpX291dF9pbmZvIChwcm9iZV9hbmRfb2JqZmlsZV9z ICplbnRyeSkKKytwcmludF91aV9vdXRfaW5mbyAoc3RydWN0IHByb2JlICpwcm9iZSkKKyB7Cisg ICBpbnQgaXg7CisgICBpbnQgaiA9IDA7CitAQCAtNDUxLDIzICs0MjgsMjEgQEAKKyAgIGluZm9f cHJvYmVfY29sdW1uX3MgKmNvbHVtbjsKKyAgIHN0cnVjdCBjbGVhbnVwICpjOworIAorLSAgZ2Ri X2Fzc2VydCAoZW50cnkgIT0gTlVMTCk7CistICBnZGJfYXNzZXJ0IChlbnRyeS0+cHJvYmUgIT0g TlVMTCk7CistICBnZGJfYXNzZXJ0IChlbnRyeS0+cHJvYmUtPnBvcHMgIT0gTlVMTCk7CisrICBn ZGJfYXNzZXJ0IChwcm9iZSAhPSBOVUxMKTsKKysgIGdkYl9hc3NlcnQgKHByb2JlLT5wb3BzICE9 IE5VTEwpOworIAorLSAgaWYgKGVudHJ5LT5wcm9iZS0+cG9wcy0+Z2VuX2luZm9fcHJvYmVzX3Rh YmxlX2hlYWRlciA9PSBOVUxMCistICAgICAgJiYgZW50cnktPnByb2JlLT5wb3BzLT5nZW5faW5m b19wcm9iZXNfdGFibGVfdmFsdWVzID09IE5VTEwpCisrICBpZiAocHJvYmUtPnBvcHMtPmdlbl9p bmZvX3Byb2Jlc190YWJsZV9oZWFkZXIgPT0gTlVMTAorKyAgICAgICYmIHByb2JlLT5wb3BzLT5n ZW5faW5mb19wcm9iZXNfdGFibGVfdmFsdWVzID09IE5VTEwpCisgICAgIHJldHVybjsKKyAKKy0g IGdkYl9hc3NlcnQgKGVudHJ5LT5wcm9iZS0+cG9wcy0+Z2VuX2luZm9fcHJvYmVzX3RhYmxlX2hl YWRlciAhPSBOVUxMCistCSAgICAgICYmIGVudHJ5LT5wcm9iZS0+cG9wcy0+Z2VuX2luZm9fcHJv YmVzX3RhYmxlX3ZhbHVlcyAhPSBOVUxMKTsKKysgIGdkYl9hc3NlcnQgKHByb2JlLT5wb3BzLT5n ZW5faW5mb19wcm9iZXNfdGFibGVfaGVhZGVyICE9IE5VTEwKKysJICAgICAgJiYgcHJvYmUtPnBv cHMtPmdlbl9pbmZvX3Byb2Jlc190YWJsZV92YWx1ZXMgIT0gTlVMTCk7CisgCisgICBjID0gbWFr ZV9jbGVhbnVwIChWRUNfY2xlYW51cCAoaW5mb19wcm9iZV9jb2x1bW5fcyksICZoZWFkaW5ncyk7 CisgICBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChjb25zdF9jaGFyX3B0ciksICZ2YWx1ZXMp OworIAorLSAgZW50cnktPnByb2JlLT5wb3BzLT5nZW5faW5mb19wcm9iZXNfdGFibGVfaGVhZGVy ICgmaGVhZGluZ3MpOworLSAgZW50cnktPnByb2JlLT5wb3BzLT5nZW5faW5mb19wcm9iZXNfdGFi bGVfdmFsdWVzIChlbnRyeS0+cHJvYmUsCistCQkJCQkJICAgIGVudHJ5LT5vYmpmaWxlLCAmdmFs dWVzKTsKKysgIHByb2JlLT5wb3BzLT5nZW5faW5mb19wcm9iZXNfdGFibGVfaGVhZGVyICgmaGVh ZGluZ3MpOworKyAgcHJvYmUtPnBvcHMtPmdlbl9pbmZvX3Byb2Jlc190YWJsZV92YWx1ZXMgKHBy b2JlLCAmdmFsdWVzKTsKKyAKKyAgIGdkYl9hc3NlcnQgKFZFQ19sZW5ndGggKGluZm9fcHJvYmVf Y29sdW1uX3MsIGhlYWRpbmdzKQorIAkgICAgICA9PSBWRUNfbGVuZ3RoIChjb25zdF9jaGFyX3B0 ciwgdmFsdWVzKSk7CitAQCAtNTE1LDE2ICs0OTAsMTYgQEAKKyB2b2lkCisgaW5mb19wcm9iZXNf Zm9yX29wcyAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHksIGNvbnN0IHN0cnVjdCBwcm9iZV9vcHMg KnBvcHMpCisgeworLSAgY2hhciAqcHJvdmlkZXIsICpwcm9iZSA9IE5VTEwsICpvYmpuYW1lID0g TlVMTDsKKysgIGNoYXIgKnByb3ZpZGVyLCAqcHJvYmVfbmFtZSA9IE5VTEwsICpvYmpuYW1lID0g TlVMTDsKKyAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwID0gbWFrZV9jbGVhbnVwIChudWxsX2Ns ZWFudXAsIE5VTEwpOworLSAgVkVDIChwcm9iZV9hbmRfb2JqZmlsZV9zKSAqaXRlbXM7CisrICBW RUMgKHByb2JlX3ApICpwcm9iZXM7CisgICBpbnQgaSwgYW55X2ZvdW5kOworICAgaW50IHVpX291 dF9leHRyYV9maWVsZHMgPSAwOworICAgc2l6ZV90IHNpemVfYWRkcjsKKyAgIHNpemVfdCBzaXpl X25hbWUgPSBzdHJsZW4gKCJOYW1lIik7CisgICBzaXplX3Qgc2l6ZV9vYmpuYW1lID0gc3RybGVu ICgiT2JqZWN0Iik7CisgICBzaXplX3Qgc2l6ZV9wcm92aWRlciA9IHN0cmxlbiAoIlByb3ZpZGVy Iik7CistICBwcm9iZV9hbmRfb2JqZmlsZV9zICplbnRyeTsKKysgIHN0cnVjdCBwcm9iZSAqcHJv YmU7CisgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9jdXJyZW50X2FyY2ggKCk7Cisg CisgICAvKiBEbyB3ZSBoYXZlIGEgYHByb3ZpZGVyOnByb2JlOm9iamZpbGUnIHN0eWxlIG9mIGxp bmVzcGVjPyAgKi8KK0BAIC01MzMsMTAgKzUwOCwxMCBAQAorICAgICB7CisgICAgICAgbWFrZV9j bGVhbnVwICh4ZnJlZSwgcHJvdmlkZXIpOworIAorLSAgICAgIHByb2JlID0gZXh0cmFjdF9hcmcg KCZhcmcpOworLSAgICAgIGlmIChwcm9iZSkKKysgICAgICBwcm9iZV9uYW1lID0gZXh0cmFjdF9h cmcgKCZhcmcpOworKyAgICAgIGlmIChwcm9iZV9uYW1lKQorIAl7CistCSAgbWFrZV9jbGVhbnVw ICh4ZnJlZSwgcHJvYmUpOworKwkgIG1ha2VfY2xlYW51cCAoeGZyZWUsIHByb2JlX25hbWUpOwor IAorIAkgIG9iam5hbWUgPSBleHRyYWN0X2FyZyAoJmFyZyk7CisgCSAgaWYgKG9iam5hbWUpCitA QCAtNTY0LDI4ICs1MzksMjcgQEAKKyAgIGVsc2UKKyAgICAgdWlfb3V0X2V4dHJhX2ZpZWxkcyA9 IGdldF9udW1iZXJfZXh0cmFfZmllbGRzIChwb3BzKTsKKyAKKy0gIGl0ZW1zID0gY29sbGVjdF9w cm9iZXMgKG9iam5hbWUsIHByb3ZpZGVyLCBwcm9iZSwgcG9wcyk7CistICBtYWtlX2NsZWFudXAg KFZFQ19jbGVhbnVwIChwcm9iZV9hbmRfb2JqZmlsZV9zKSwgJml0ZW1zKTsKKysgIHByb2JlcyA9 IGNvbGxlY3RfcHJvYmVzIChvYmpuYW1lLCBwcm92aWRlciwgcHJvYmVfbmFtZSwgcG9wcyk7Cisr ICBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChwcm9iZV9wKSwgJnByb2Jlcyk7CisgICBtYWtl X2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAoY3VycmVudF91aW91dCwKKyAJCQkJICAg ICAgIDQgKyB1aV9vdXRfZXh0cmFfZmllbGRzLAorLQkJCQkgICAgICAgVkVDX2xlbmd0aCAocHJv YmVfYW5kX29iamZpbGVfcywgaXRlbXMpLAorKwkJCQkgICAgICAgVkVDX2xlbmd0aCAocHJvYmVf cCwgcHJvYmVzKSwKKyAJCQkJICAgICAgICJTdGF0aWNQcm9iZXMiKTsKKyAKKy0gIGlmICghVkVD X2VtcHR5IChwcm9iZV9hbmRfb2JqZmlsZV9zLCBpdGVtcykpCistICAgIHFzb3J0IChWRUNfYWRk cmVzcyAocHJvYmVfYW5kX29iamZpbGVfcywgaXRlbXMpLAorLQkgICBWRUNfbGVuZ3RoIChwcm9i ZV9hbmRfb2JqZmlsZV9zLCBpdGVtcyksCistCSAgIHNpemVvZiAocHJvYmVfYW5kX29iamZpbGVf cyksIGNvbXBhcmVfZW50cmllcyk7CisrICBpZiAoIVZFQ19lbXB0eSAocHJvYmVfcCwgcHJvYmVz KSkKKysgICAgcXNvcnQgKFZFQ19hZGRyZXNzIChwcm9iZV9wLCBwcm9iZXMpLCBWRUNfbGVuZ3Ro IChwcm9iZV9wLCBwcm9iZXMpLAorKwkgICBzaXplb2YgKHByb2JlX3ApLCBjb21wYXJlX3Byb2Jl cyk7CisgCisgICAvKiBXaGF0J3MgdGhlIHNpemUgb2YgYW4gYWRkcmVzcyBpbiBvdXIgYXJjaGl0 ZWN0dXJlPyAgKi8KKyAgIHNpemVfYWRkciA9IGdkYmFyY2hfYWRkcl9iaXQgKGdkYmFyY2gpID09 IDY0ID8gMTggOiAxMDsKKyAKKyAgIC8qIERldGVybWluaW5nIHRoZSBtYXhpbXVtIHNpemUgb2Yg ZWFjaCBmaWVsZCAoYHByb3ZpZGVyJywgYG5hbWUnIGFuZAorICAgICAgYG9iam5hbWUnKS4gICov CistICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAocHJvYmVfYW5kX29iamZpbGVfcywgaXRlbXMs IGksIGVudHJ5KTsgKytpKQorKyAgZm9yIChpID0gMDsgVkVDX2l0ZXJhdGUgKHByb2JlX3AsIHBy b2JlcywgaSwgcHJvYmUpOyArK2kpCisgICAgIHsKKy0gICAgICBzaXplX25hbWUgPSBtYXggKHN0 cmxlbiAoZW50cnktPnByb2JlLT5uYW1lKSwgc2l6ZV9uYW1lKTsKKy0gICAgICBzaXplX3Byb3Zp ZGVyID0gbWF4IChzdHJsZW4gKGVudHJ5LT5wcm9iZS0+cHJvdmlkZXIpLCBzaXplX3Byb3ZpZGVy KTsKKy0gICAgICBzaXplX29iam5hbWUgPSBtYXggKHN0cmxlbiAoZW50cnktPm9iamZpbGUtPm5h bWUpLCBzaXplX29iam5hbWUpOworKyAgICAgIHNpemVfbmFtZSA9IG1heCAoc3RybGVuIChwcm9i ZS0+bmFtZSksIHNpemVfbmFtZSk7CisrICAgICAgc2l6ZV9wcm92aWRlciA9IG1heCAoc3RybGVu IChwcm9iZS0+cHJvdmlkZXIpLCBzaXplX3Byb3ZpZGVyKTsKKysgICAgICBzaXplX29iam5hbWUg PSBtYXggKHN0cmxlbiAocHJvYmUtPm9iamZpbGUtPm5hbWUpLCBzaXplX29iam5hbWUpOworICAg ICB9CisgCisgICB1aV9vdXRfdGFibGVfaGVhZGVyIChjdXJyZW50X3Vpb3V0LCBzaXplX3Byb3Zp ZGVyLCB1aV9sZWZ0LCAicHJvdmlkZXIiLAorQEAgLTYwMSwyNiArNTc1LDI2IEBACisgICAgICAg LyogV2UgaGF2ZSB0byBnZW5lcmF0ZSB0aGUgdGFibGUgaGVhZGVyIGZvciBlYWNoIG5ldyBwcm9i ZSB0eXBlIHRoYXQgd2UKKyAJIHdpbGwgcHJpbnQuICAqLworICAgICAgIGZvciAoaXggPSAwOyBW RUNfaXRlcmF0ZSAocHJvYmVfb3BzX2NwLCBhbGxfcHJvYmVfb3BzLCBpeCwgcG8pOyArK2l4KQor LQlnZW5fdWlfb3V0X3RhYmxlX2hlYWRlcl9pbmZvIChpdGVtcywgcG8pOworKwlnZW5fdWlfb3V0 X3RhYmxlX2hlYWRlcl9pbmZvIChwcm9iZXMsIHBvKTsKKyAgICAgfQorICAgZWxzZQorLSAgICBn ZW5fdWlfb3V0X3RhYmxlX2hlYWRlcl9pbmZvIChpdGVtcywgcG9wcyk7CisrICAgIGdlbl91aV9v dXRfdGFibGVfaGVhZGVyX2luZm8gKHByb2JlcywgcG9wcyk7CisgCisgICB1aV9vdXRfdGFibGVf aGVhZGVyIChjdXJyZW50X3Vpb3V0LCBzaXplX29iam5hbWUsIHVpX2xlZnQsICJvYmplY3QiLAor IAkJICAgICAgIF8oIk9iamVjdCIpKTsKKyAgIHVpX291dF90YWJsZV9ib2R5IChjdXJyZW50X3Vp b3V0KTsKKyAKKy0gIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChwcm9iZV9hbmRfb2JqZmlsZV9z LCBpdGVtcywgaSwgZW50cnkpOyArK2kpCisrICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAocHJv YmVfcCwgcHJvYmVzLCBpLCBwcm9iZSk7ICsraSkKKyAgICAgeworICAgICAgIHN0cnVjdCBjbGVh bnVwICppbm5lcjsKKyAKKyAgICAgICBpbm5lciA9IG1ha2VfY2xlYW51cF91aV9vdXRfdHVwbGVf YmVnaW5fZW5kIChjdXJyZW50X3Vpb3V0LCAicHJvYmUiKTsKKyAKKy0gICAgICB1aV9vdXRfZmll bGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAicHJvdmlkZXIiLCBlbnRyeS0+cHJvYmUtPnByb3Zp ZGVyKTsKKy0gICAgICB1aV9vdXRfZmllbGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAibmFtZSIs IGVudHJ5LT5wcm9iZS0+bmFtZSk7CisrICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAoY3VycmVu dF91aW91dCwgInByb3ZpZGVyIiwgcHJvYmUtPnByb3ZpZGVyKTsKKysgICAgICB1aV9vdXRfZmll bGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAibmFtZSIsIHByb2JlLT5uYW1lKTsKKyAgICAgICB1 aV9vdXRfZmllbGRfY29yZV9hZGRyIChjdXJyZW50X3Vpb3V0LCAiYWRkciIsCistCQkJICAgICAg Z2V0X29iamZpbGVfYXJjaCAoZW50cnktPm9iamZpbGUpLAorLQkJCSAgICAgIGVudHJ5LT5wcm9i ZS0+YWRkcmVzcyk7CisrCQkJICAgICAgZ2V0X29iamZpbGVfYXJjaCAocHJvYmUtPm9iamZpbGUp LAorKwkJCSAgICAgIHByb2JlLT5hZGRyZXNzKTsKKyAKKyAgICAgICBpZiAocG9wcyA9PSBOVUxM KQorIAl7CitAQCAtNjI5LDE5ICs2MDMsMTkgQEAKKyAKKyAJICBmb3IgKGl4ID0gMDsgVkVDX2l0 ZXJhdGUgKHByb2JlX29wc19jcCwgYWxsX3Byb2JlX29wcywgaXgsIHBvKTsKKyAJICAgICAgICsr aXgpCistCSAgICBpZiAoZW50cnktPnByb2JlLT5wb3BzID09IHBvKQorLQkgICAgICBwcmludF91 aV9vdXRfaW5mbyAoZW50cnkpOworKwkgICAgaWYgKHByb2JlLT5wb3BzID09IHBvKQorKwkgICAg ICBwcmludF91aV9vdXRfaW5mbyAocHJvYmUpOworIAl9CisgICAgICAgZWxzZQorLQlwcmludF91 aV9vdXRfaW5mbyAoZW50cnkpOworKwlwcmludF91aV9vdXRfaW5mbyAocHJvYmUpOworIAorLSAg ICAgIHVpX291dF9maWVsZF9zdHJpbmcgKGN1cnJlbnRfdWlvdXQsICJvYmplY3QiLCBlbnRyeS0+ b2JqZmlsZS0+bmFtZSk7CisrICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAoY3VycmVudF91aW91 dCwgIm9iamVjdCIsIHByb2JlLT5vYmpmaWxlLT5uYW1lKTsKKyAgICAgICB1aV9vdXRfdGV4dCAo Y3VycmVudF91aW91dCwgIlxuIik7CisgCisgICAgICAgZG9fY2xlYW51cHMgKGlubmVyKTsKKyAg ICAgfQorIAorLSAgYW55X2ZvdW5kID0gIVZFQ19lbXB0eSAocHJvYmVfYW5kX29iamZpbGVfcywg aXRlbXMpOworKyAgYW55X2ZvdW5kID0gIVZFQ19lbXB0eSAocHJvYmVfcCwgcHJvYmVzKTsKKyAg IGRvX2NsZWFudXBzIChjbGVhbnVwKTsKKyAKKyAgIGlmICghYW55X2ZvdW5kKQorQEAgLTY2Miwy MyArNjM2LDI0IEBACisgcHJvYmVfc2FmZV9ldmFsdWF0ZV9hdF9wYyAoc3RydWN0IGZyYW1lX2lu Zm8gKmZyYW1lLCB1bnNpZ25lZCBuKQorIHsKKyAgIHN0cnVjdCBwcm9iZSAqcHJvYmU7CistICBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKKysgIGNvbnN0IHN0cnVjdCBzeW1fcHJvYmVfZm5zICpw cm9iZV9mbnM7CisgICB1bnNpZ25lZCBuX3Byb2JlczsKKyAKKy0gIHByb2JlID0gZmluZF9wcm9i ZV9ieV9wYyAoZ2V0X2ZyYW1lX3BjIChmcmFtZSksICZvYmpmaWxlKTsKKysgIHByb2JlID0gZmlu ZF9wcm9iZV9ieV9wYyAoZ2V0X2ZyYW1lX3BjIChmcmFtZSkpOworICAgaWYgKCFwcm9iZSkKKyAg ICAgcmV0dXJuIE5VTEw7CistICBnZGJfYXNzZXJ0IChvYmpmaWxlLT5zZiAmJiBvYmpmaWxlLT5z Zi0+c3ltX3Byb2JlX2Zucyk7CisgCistICBuX3Byb2JlcworLSAgICA9IG9iamZpbGUtPnNmLT5z eW1fcHJvYmVfZm5zLT5zeW1fZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChvYmpmaWxlLAorLQkJ CQkJCQkJcHJvYmUpOworKyAgZ2RiX2Fzc2VydCAocHJvYmUtPm9iamZpbGUgIT0gTlVMTCk7Cisr ICBnZGJfYXNzZXJ0IChwcm9iZS0+b2JqZmlsZS0+c2YgIT0gTlVMTCk7CisrICBnZGJfYXNzZXJ0 IChwcm9iZS0+b2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMgIT0gTlVMTCk7CisrCisrICBwcm9i ZV9mbnMgPSBwcm9iZS0+b2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnM7CisrICBuX3Byb2JlcyA9 IHByb2JlX2Zucy0+c3ltX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAocHJvYmUpOworKworICAg aWYgKG4gPj0gbl9wcm9iZXMpCisgICAgIHJldHVybiBOVUxMOworIAorLSAgcmV0dXJuIG9iamZp bGUtPnNmLT5zeW1fcHJvYmVfZm5zLT5zeW1fZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQgKG9iamZp bGUsCistCQkJCQkJCQkgIHByb2JlLAorLQkJCQkJCQkJICBuKTsKKysgIHJldHVybiBwcm9iZV9m bnMtPnN5bV9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAocHJvYmUsIG4pOworIH0KKyAKKyAvKiBT ZWUgY29tbWVudCBpbiBwcm9iZS5oLiAgKi8KKy0tLSBzcmMvZ2RiL3Byb2JlLmgJMjAxMi8wNC8y NyAyMDo0Nzo1NQkxLjEKKysrKyBzcmMvZ2RiL3Byb2JlLmgJMjAxMi8wNy8xOCAxNjoxMjoxNwkx LjIKK0BAIC02NiwyMSArNjYsMTggQEAKKyAKKyAgICAgLyogUmV0dXJuIHRoZSBudW1iZXIgb2Yg YXJndW1lbnRzIG9mIFBST0JFLiAgKi8KKyAKKy0gICAgdW5zaWduZWQgKCpnZXRfcHJvYmVfYXJn dW1lbnRfY291bnQpIChzdHJ1Y3QgcHJvYmUgKnByb2JlLAorLQkJCQkJICBzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSk7CisrICAgIHVuc2lnbmVkICgqZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50KSAo c3RydWN0IHByb2JlICpwcm9iZSk7CisgCisgICAgIC8qIEV2YWx1YXRlIHRoZSBOdGggYXJndW1l bnQgZnJvbSB0aGUgUFJPQkUsIHJldHVybmluZyBhIHZhbHVlCisgICAgICAgIGNvcnJlc3BvbmRp bmcgdG8gaXQuICBUaGUgYXJndW1lbnQgbnVtYmVyIGlzIHJlcHJlc2VudGVkIE4uICAqLworIAor ICAgICBzdHJ1Y3QgdmFsdWUgKigqZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQpIChzdHJ1Y3QgcHJv YmUgKnByb2JlLAorLQkJCQkJICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgCQkJCQkg ICAgICB1bnNpZ25lZCBuKTsKKyAKKyAgICAgLyogQ29tcGlsZSB0aGUgTnRoIGFyZ3VtZW50IG9m IHRoZSBQUk9CRSB0byBhbiBhZ2VudCBleHByZXNzaW9uLgorICAgICAgICBUaGUgYXJndW1lbnQg bnVtYmVyIGlzIHJlcHJlc2VudGVkIGJ5IE4uICAqLworIAorLSAgICB2b2lkICgqY29tcGlsZV90 b19heCkgKHN0cnVjdCBwcm9iZSAqcHJvYmUsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorLQkJ CSAgIHN0cnVjdCBhZ2VudF9leHByICphZXhwciwKKysgICAgdm9pZCAoKmNvbXBpbGVfdG9fYXgp IChzdHJ1Y3QgcHJvYmUgKnByb2JlLCBzdHJ1Y3QgYWdlbnRfZXhwciAqYWV4cHIsCisgCQkJICAg c3RydWN0IGF4c192YWx1ZSAqYXhzX3ZhbHVlLCB1bnNpZ25lZCBuKTsKKyAKKyAgICAgLyogU2V0 IHRoZSBzZW1hcGhvcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBQUk9CRS4gIFRoaXMgZnVuY3Rpb24g b25seSBtYWtlcworQEAgLTEwOCw4ICsxMDUsOCBAQAorICAgICB2b2lkICgqZ2VuX2luZm9fcHJv YmVzX3RhYmxlX2hlYWRlcikgKFZFQyAoaW5mb19wcm9iZV9jb2x1bW5fcykgKipoZWFkcyk7Cisg CisgICAgIC8qIEZ1bmN0aW9uIHRoYXQgd2lsbCBmaWxsIFZBTFVFUyB3aXRoIHRoZSB2YWx1ZXMg b2YgdGhlIGV4dHJhIGZpZWxkcworLSAgICAgICB0byBiZSBwcmludGVkIGZvciBQUk9CRSAgYW5k IE9CSkZJTEUuICBJZiB0aGUgYmFja2VuZCBpbXBsZW1lbnRzCistICAgICAgIHRoZSBgZ2VuX3Vp X291dF90YWJsZV9oZWFkZXInIG1ldGhvZCwgdGhlbiBpdCBzaG91bGQgaW1wbGVtZW50CisrICAg ICAgIHRvIGJlIHByaW50ZWQgZm9yIFBST0JFLiAgSWYgdGhlIGJhY2tlbmQgaW1wbGVtZW50cyB0 aGUKKysgICAgICAgYGdlbl91aV9vdXRfdGFibGVfaGVhZGVyJyBtZXRob2QsIHRoZW4gaXQgc2hv dWxkIGltcGxlbWVudAorICAgICAgICB0aGlzIG1ldGhvZCBhcyB3ZWxsLiAgVGhlIGJhY2tlbmQg c2hvdWxkIGFsc28gZ3VhcmFudGVlIHRoYXQgdGhlCisgICAgICAgIG9yZGVyIGFuZCB0aGUgbnVt YmVyIG9mIHZhbHVlcyBpbiB0aGUgdmVjdG9yIGlzIGV4YWN0bHkgdGhlIHNhbWUKKyAgICAgICAg YXMgdGhlIG9yZGVyIG9mIHRoZSBleHRyYSBmaWVsZHMgcHJvdmlkZWQgaW4gdGhlIG1ldGhvZAor QEAgLTExOCw3ICsxMTUsNiBAQAorICAgICAgICBwb3NpdGlvbiBpbiB0aGUgdmVjdG9yLiAgKi8K KyAKKyAgICAgdm9pZCAoKmdlbl9pbmZvX3Byb2Jlc190YWJsZV92YWx1ZXMpIChzdHJ1Y3QgcHJv YmUgKnByb2JlLAorLQkJCQkJICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKyAJCQkJCSAgVkVD IChjb25zdF9jaGFyX3B0cikgKip2YWx1ZXMpOworICAgfTsKKyAKK0BAIC0xNTcsNiArMTUzLDEx IEBACisgICAgIC8qIFRoZSBvcGVyYXRpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHByb2JlLiAg Ki8KKyAgICAgY29uc3Qgc3RydWN0IHByb2JlX29wcyAqcG9wczsKKyAKKysgICAgLyogVGhlIG9i amZpbGUgd2hpY2ggY29udGFpbnMgdGhpcyBwcm9iZS4gIEV2ZW4gaWYgdGhlIHByb2JlIGlzIGFs c28KKysgICAgICAgcHJlc2VudCBpbiBhIHNlcGFyYXRlIGRlYnVnIG9iamZpbGUsIHRoaXMgdmFy aWFibGUgYWx3YXlzIHBvaW50cyB0bworKyAgICAgICB0aGUgbm9uLXNlcGFyYXRlIGRlYnVnIG9i amZpbGUuICAqLworKyAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKKysKKyAgICAgLyogVGhl IG5hbWUgb2YgdGhlIHByb2JlLiAgKi8KKyAgICAgY29uc3QgY2hhciAqbmFtZTsKKyAKK0BAIC0x ODEsMTEgKzE4Miw5IEBACisgZXh0ZXJuIHZvaWQgcmVnaXN0ZXJfcHJvYmVfb3BzIChzdHJ1Y3Qg cHJvYmUgKnByb2JlKTsKKyAKKyAvKiBHaXZlbiBhIFBDLCBmaW5kIGFuIGFzc29jaWF0ZWQgcHJv YmUgd2l0aCB0eXBlIFBUWVBFLiAgSWYgYSBwcm9iZSBpcworLSAgIGZvdW5kLCBzZXQgKk9CSkZJ TEVfT1VUIHRvIHRoZSBwcm9iZSdzIG9iamZpbGUsIGFuZCByZXR1cm4gdGhlCistICAgcHJvYmUu ICBJZiBubyBwcm9iZSBpcyBmb3VuZCwgcmV0dXJuIE5VTEwuICAqLworKyAgIGZvdW5kLCByZXR1 cm4gaXQuICBJZiBubyBwcm9iZSBpcyBmb3VuZCwgcmV0dXJuIE5VTEwuICAqLworIAorLWV4dGVy biBzdHJ1Y3QgcHJvYmUgKmZpbmRfcHJvYmVfYnlfcGMgKENPUkVfQUREUiBwYywKKy0JCQkJICAg ICAgIHN0cnVjdCBvYmpmaWxlICoqb2JqZmlsZV9vdXQpOworK2V4dGVybiBzdHJ1Y3QgcHJvYmUg KmZpbmRfcHJvYmVfYnlfcGMgKENPUkVfQUREUiBwYyk7CisgCisgLyogU2VhcmNoIE9CSkZJTEUg Zm9yIGEgcHJvYmUgd2l0aCB0aGUgZ2l2ZW4gUFJPVklERVIsIE5BTUUgYW5kIFBUWVBFLgorICAg IFJldHVybiBhIFZFQyBvZiBhbGwgcHJvYmVzIHRoYXQgd2VyZSBmb3VuZC4gIElmIG5vIG1hdGNo aW5nIHByb2JlCistLS0gc3JjL2dkYi9zdGFwLXByb2JlLmMJMjAxMi8wNS8wOCAwMTozNTozNQkx LjQKKysrKyBzcmMvZ2RiL3N0YXAtcHJvYmUuYwkyMDEyLzA3LzE4IDE2OjEyOjE3CTEuNQorQEAg LTkwMywxMCArOTAzLDEwIEBACisgICAgdGhpcyBpbmZvcm1hdGlvbi4gICovCisgCisgc3RhdGlj IHZvaWQKKy1zdGFwX3BhcnNlX3Byb2JlX2FyZ3VtZW50cyAoc3RydWN0IHN0YXBfcHJvYmUgKnBy b2JlLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKytzdGFwX3BhcnNlX3Byb2JlX2FyZ3VtZW50 cyAoc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlKQorIHsKKyAgIGNvbnN0IGNoYXIgKmN1cjsKKy0g IHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7Cisr ICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKHByb2JlLT5wLm9i amZpbGUpOworIAorICAgZ2RiX2Fzc2VydCAoIXByb2JlLT5hcmdzX3BhcnNlZCk7CisgICBjdXIg PSBwcm9iZS0+YXJnc191LnRleHQ7CitAQCAtOTkxLDE1ICs5OTEsMTQgQEAKKyAgICBhcmd1bWVu dCBzdHJpbmcuICAqLworIAorIHN0YXRpYyB1bnNpZ25lZAorLXN0YXBfZ2V0X3Byb2JlX2FyZ3Vt ZW50X2NvdW50IChzdHJ1Y3QgcHJvYmUgKnByb2JlX2dlbmVyaWMsCistCQkJICAgICAgIHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlKQorK3N0YXBfZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChzdHJ1 Y3QgcHJvYmUgKnByb2JlX2dlbmVyaWMpCisgeworICAgc3RydWN0IHN0YXBfcHJvYmUgKnByb2Jl ID0gKHN0cnVjdCBzdGFwX3Byb2JlICopIHByb2JlX2dlbmVyaWM7CisgCisgICBnZGJfYXNzZXJ0 IChwcm9iZV9nZW5lcmljLT5wb3BzID09ICZzdGFwX3Byb2JlX29wcyk7CisgCisgICBpZiAoIXBy b2JlLT5hcmdzX3BhcnNlZCkKKy0gICAgc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMgKHByb2Jl LCBvYmpmaWxlKTsKKysgICAgc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMgKHByb2JlKTsKKyAK KyAgIGdkYl9hc3NlcnQgKHByb2JlLT5hcmdzX3BhcnNlZCk7CisgICByZXR1cm4gVkVDX2xlbmd0 aCAoc3RhcF9wcm9iZV9hcmdfcywgcHJvYmUtPmFyZ3NfdS52ZWMpOworQEAgLTEwNDIsMTAgKzEw NDEsMTAgQEAKKyB9CisgCisgc3RhdGljIHN0cnVjdCBzdGFwX3Byb2JlX2FyZyAqCistc3RhcF9n ZXRfYXJnIChzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LCB1bnNpZ25lZCBuKQorK3N0YXBfZ2V0X2FyZyAoc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlLCB1 bnNpZ25lZCBuKQorIHsKKyAgIGlmICghcHJvYmUtPmFyZ3NfcGFyc2VkKQorLSAgICBzdGFwX3Bh cnNlX3Byb2JlX2FyZ3VtZW50cyAocHJvYmUsIG9iamZpbGUpOworKyAgICBzdGFwX3BhcnNlX3By b2JlX2FyZ3VtZW50cyAocHJvYmUpOworIAorICAgcmV0dXJuIFZFQ19pbmRleCAoc3RhcF9wcm9i ZV9hcmdfcywgcHJvYmUtPmFyZ3NfdS52ZWMsIG4pOworIH0KK0BAIC0xMDU0LDggKzEwNTMsNyBA QAorICAgIGNvcnJlc3BvbmRpbmcgdG8gaXQuICBBc3NlcnRpb24gaXMgdGhyb3duIGlmIE4gZG9l cyBub3QgZXhpc3QuICAqLworIAorIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgorLXN0YXBfZXZhbHVh dGVfcHJvYmVfYXJndW1lbnQgKHN0cnVjdCBwcm9iZSAqcHJvYmVfZ2VuZXJpYywKKy0JCQkgICAg ICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdW5zaWduZWQgbikKKytzdGFwX2V2YWx1YXRlX3By b2JlX2FyZ3VtZW50IChzdHJ1Y3QgcHJvYmUgKnByb2JlX2dlbmVyaWMsIHVuc2lnbmVkIG4pCisg eworICAgc3RydWN0IHN0YXBfcHJvYmUgKnN0YXBfcHJvYmUgPSAoc3RydWN0IHN0YXBfcHJvYmUg KikgcHJvYmVfZ2VuZXJpYzsKKyAgIHN0cnVjdCBzdGFwX3Byb2JlX2FyZyAqYXJnOworQEAgLTEw NjMsNyArMTA2MSw3IEBACisgCisgICBnZGJfYXNzZXJ0IChwcm9iZV9nZW5lcmljLT5wb3BzID09 ICZzdGFwX3Byb2JlX29wcyk7CisgCistICBhcmcgPSBzdGFwX2dldF9hcmcgKHN0YXBfcHJvYmUs IG9iamZpbGUsIG4pOworKyAgYXJnID0gc3RhcF9nZXRfYXJnIChzdGFwX3Byb2JlLCBuKTsKKyAg IHJldHVybiBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKGFyZy0+YXR5cGUsIGFyZy0+YWV4cHIs ICZwb3MsIEVWQUxfTk9STUFMKTsKKyB9CisgCitAQCAtMTA3MSw5ICsxMDY5LDggQEAKKyAgICBB c3NlcnRpb24gaXMgdGhyb3duIGlmIE4gZG9lcyBub3QgZXhpc3QuICAqLworIAorIHN0YXRpYyB2 b2lkCistc3RhcF9jb21waWxlX3RvX2F4IChzdHJ1Y3QgcHJvYmUgKnByb2JlX2dlbmVyaWMsIHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorLQkJICAgIHN0cnVjdCBhZ2VudF9leHByICpleHByLCBz dHJ1Y3QgYXhzX3ZhbHVlICp2YWx1ZSwKKy0JCSAgICB1bnNpZ25lZCBuKQorK3N0YXBfY29tcGls ZV90b19heCAoc3RydWN0IHByb2JlICpwcm9iZV9nZW5lcmljLCBzdHJ1Y3QgYWdlbnRfZXhwciAq ZXhwciwKKysJCSAgICBzdHJ1Y3QgYXhzX3ZhbHVlICp2YWx1ZSwgdW5zaWduZWQgbikKKyB7Cisg ICBzdHJ1Y3Qgc3RhcF9wcm9iZSAqc3RhcF9wcm9iZSA9IChzdHJ1Y3Qgc3RhcF9wcm9iZSAqKSBw cm9iZV9nZW5lcmljOworICAgc3RydWN0IHN0YXBfcHJvYmVfYXJnICphcmc7CitAQCAtMTA4MSw3 ICsxMDc4LDcgQEAKKyAKKyAgIGdkYl9hc3NlcnQgKHByb2JlX2dlbmVyaWMtPnBvcHMgPT0gJnN0 YXBfcHJvYmVfb3BzKTsKKyAKKy0gIGFyZyA9IHN0YXBfZ2V0X2FyZyAoc3RhcF9wcm9iZSwgb2Jq ZmlsZSwgbik7CisrICBhcmcgPSBzdGFwX2dldF9hcmcgKHN0YXBfcHJvYmUsIG4pOworIAorICAg cGMgPSBhcmctPmFleHByLT5lbHRzOworICAgZ2VuX2V4cHIgKGFyZy0+YWV4cHIsICZwYywgZXhw ciwgdmFsdWUpOworQEAgLTExMjQsMjAgKzExMjEsMjQgQEAKKyAgIHN0cnVjdCBmcmFtZV9pbmZv ICpmcmFtZSA9IGdldF9zZWxlY3RlZF9mcmFtZSAoXygiTm8gZnJhbWUgc2VsZWN0ZWQiKSk7Cisg ICBDT1JFX0FERFIgcGMgPSBnZXRfZnJhbWVfcGMgKGZyYW1lKTsKKyAgIGludCBzZWwgPSAoaW50 KSAodWludHB0cl90KSBkYXRhOworLSAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7CisgICBzdHJ1 Y3QgcHJvYmUgKnBjX3Byb2JlOworKyAgY29uc3Qgc3RydWN0IHN5bV9wcm9iZV9mbnMgKnBjX3By b2JlX2ZuczsKKyAgIHVuc2lnbmVkIG5fYXJnczsKKyAKKyAgIC8qIFNFTCA9PSAtMSBtZWFucyAi X3Byb2JlX2FyZ2MiLiAgKi8KKyAgIGdkYl9hc3NlcnQgKHNlbCA+PSAtMSk7CisgCistICBwY19w cm9iZSA9IGZpbmRfcHJvYmVfYnlfcGMgKHBjLCAmb2JqZmlsZSk7CisrICBwY19wcm9iZSA9IGZp bmRfcHJvYmVfYnlfcGMgKHBjKTsKKyAgIGlmIChwY19wcm9iZSA9PSBOVUxMKQorICAgICBlcnJv ciAoXygiTm8gU3lzdGVtVGFwIHByb2JlIGF0IFBDICVzIiksIGNvcmVfYWRkcl90b19zdHJpbmcg KHBjKSk7CisgCistICBuX2FyZ3MKKy0gICAgPSBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2Zucy0+ c3ltX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAob2JqZmlsZSwKKy0JCQkJCQkJCXBjX3Byb2Jl KTsKKysgIGdkYl9hc3NlcnQgKHBjX3Byb2JlLT5vYmpmaWxlICE9IE5VTEwpOworKyAgZ2RiX2Fz c2VydCAocGNfcHJvYmUtPm9iamZpbGUtPnNmICE9IE5VTEwpOworKyAgZ2RiX2Fzc2VydCAocGNf cHJvYmUtPm9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zICE9IE5VTEwpOworKworKyAgcGNfcHJv YmVfZm5zID0gcGNfcHJvYmUtPm9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zOworKworKyAgbl9h cmdzID0gcGNfcHJvYmVfZm5zLT5zeW1fZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChwY19wcm9i ZSk7CisgICBpZiAoc2VsID09IC0xKQorICAgICByZXR1cm4gdmFsdWVfZnJvbV9sb25nZXN0IChi dWlsdGluX3R5cGUgKGFyY2gpLT5idWlsdGluX2ludCwgbl9hcmdzKTsKKyAKK0BAIC0xMTQ1LDkg KzExNDYsNyBAQAorICAgICBlcnJvciAoXygiSW52YWxpZCBwcm9iZSBhcmd1bWVudCAlZCAtLSBw cm9iZSBoYXMgJXUgYXJndW1lbnRzIGF2YWlsYWJsZSIpLAorIAkgICBzZWwsIG5fYXJncyk7Cisg CistICByZXR1cm4gb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMtPnN5bV9ldmFsdWF0ZV9wcm9i ZV9hcmd1bWVudCAob2JqZmlsZSwKKy0JCQkJCQkJCSAgcGNfcHJvYmUsCistCQkJCQkJCQkgIHNl bCk7CisrICByZXR1cm4gcGNfcHJvYmVfZm5zLT5zeW1fZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQg KHBjX3Byb2JlLCBzZWwpOworIH0KKyAKKyAvKiBUaGlzIGlzIGNhbGxlZCB0byBjb21waWxlIG9u ZSBvZiB0aGUgJF9wcm9iZV9hcmcqIGNvbnZlbmllbmNlCitAQCAtMTE1OSwyMCArMTE1OCwyNSBA QAorIHsKKyAgIENPUkVfQUREUiBwYyA9IGV4cHItPnNjb3BlOworICAgaW50IHNlbCA9IChpbnQp ICh1aW50cHRyX3QpIGRhdGE7CistICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKKyAgIHN0cnVj dCBwcm9iZSAqcGNfcHJvYmU7CisrICBjb25zdCBzdHJ1Y3Qgc3ltX3Byb2JlX2ZucyAqcGNfcHJv YmVfZm5zOworICAgaW50IG5fcHJvYmVzOworIAorICAgLyogU0VMID09IC0xIG1lYW5zICJfcHJv YmVfYXJnYyIuICAqLworICAgZ2RiX2Fzc2VydCAoc2VsID49IC0xKTsKKyAKKy0gIHBjX3Byb2Jl ID0gZmluZF9wcm9iZV9ieV9wYyAocGMsICZvYmpmaWxlKTsKKysgIHBjX3Byb2JlID0gZmluZF9w cm9iZV9ieV9wYyAocGMpOworICAgaWYgKHBjX3Byb2JlID09IE5VTEwpCisgICAgIGVycm9yIChf KCJObyBTeXN0ZW1UYXAgcHJvYmUgYXQgUEMgJXMiKSwgY29yZV9hZGRyX3RvX3N0cmluZyAocGMp KTsKKyAKKy0gIG5fcHJvYmVzCistICAgID0gb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMtPnN5 bV9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKG9iamZpbGUsCistCQkJCQkJCQlwY19wcm9iZSk7 CisrICBnZGJfYXNzZXJ0IChwY19wcm9iZS0+b2JqZmlsZSAhPSBOVUxMKTsKKysgIGdkYl9hc3Nl cnQgKHBjX3Byb2JlLT5vYmpmaWxlLT5zZiAhPSBOVUxMKTsKKysgIGdkYl9hc3NlcnQgKHBjX3By b2JlLT5vYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZucyAhPSBOVUxMKTsKKysKKysgIHBjX3Byb2Jl X2ZucyA9IHBjX3Byb2JlLT5vYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZuczsKKysKKysgIG5fcHJv YmVzID0gcGNfcHJvYmVfZm5zLT5zeW1fZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChwY19wcm9i ZSk7CisrCisgICBpZiAoc2VsID09IC0xKQorICAgICB7CisgICAgICAgdmFsdWUtPmtpbmQgPSBh eHNfcnZhbHVlOworQEAgLTExODYsOCArMTE5MCw3IEBACisgICAgIGVycm9yIChfKCJJbnZhbGlk IHByb2JlIGFyZ3VtZW50ICVkIC0tIHByb2JlIGhhcyAlZCBhcmd1bWVudHMgYXZhaWxhYmxlIiks CisgCSAgIHNlbCwgbl9wcm9iZXMpOworIAorLSAgb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMt PnN5bV9jb21waWxlX3RvX2F4IChvYmpmaWxlLCBwY19wcm9iZSwKKy0JCQkJCQkgZXhwciwgdmFs dWUsIHNlbCk7CisrICBwY19wcm9iZV9mbnMtPnN5bV9jb21waWxlX3RvX2F4IChwY19wcm9iZSwg ZXhwciwgdmFsdWUsIHNlbCk7CisgfQorIAorIAwKK0BAIC0xMjk3LDYgKzEzMDAsNyBAQAorIAor ICAgcmV0ID0gb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgc2l6ZW9m ICgqcmV0KSk7CisgICByZXQtPnAucG9wcyA9ICZzdGFwX3Byb2JlX29wczsKKysgIHJldC0+cC5v YmpmaWxlID0gb2JqZmlsZTsKKyAKKyAgIC8qIFByb3ZpZGVyIGFuZCB0aGUgbmFtZSBvZiB0aGUg cHJvYmUuICAqLworICAgcmV0LT5wLnByb3ZpZGVyID0gJmVsLT5kYXRhWzMgKiBzaXplXTsKK0BA IC0xNDgxLDE1ICsxNDg1LDE2IEBACisgCisgc3RhdGljIHZvaWQKKyBzdGFwX2dlbl9pbmZvX3By b2Jlc190YWJsZV92YWx1ZXMgKHN0cnVjdCBwcm9iZSAqcHJvYmVfZ2VuZXJpYywKKy0JCQkJICAg c3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgCQkJCSAgIFZFQyAoY29uc3RfY2hhcl9wdHIpICoq cmV0KQorIHsKKyAgIHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSA9IChzdHJ1Y3Qgc3RhcF9wcm9i ZSAqKSBwcm9iZV9nZW5lcmljOworLSAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfb2Jq ZmlsZV9hcmNoIChvYmpmaWxlKTsKKysgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOworICAgY29u c3QgY2hhciAqdmFsID0gTlVMTDsKKyAKKyAgIGdkYl9hc3NlcnQgKHByb2JlX2dlbmVyaWMtPnBv cHMgPT0gJnN0YXBfcHJvYmVfb3BzKTsKKyAKKysgIGdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNo IChwcm9iZS0+cC5vYmpmaWxlKTsKKysKKyAgIGlmIChwcm9iZS0+c2VtX2FkZHIpCisgICAgIHZh bCA9IHByaW50X2NvcmVfYWRkcmVzcyAoZ2RiYXJjaCwgcHJvYmUtPnNlbV9hZGRyKTsKKyAKKy0t LSBzcmMvZ2RiL3N5bWZpbGUuaAkyMDEyLzA1LzI0IDIyOjE0OjM1CTEuMTA5CisrKysgc3JjL2dk Yi9zeW1maWxlLmgJMjAxMi8wNy8xOCAxNjoxMjoxNwkxLjExMAorQEAgLTMyMCw4ICszMjAsNyBA QAorICAgICAgaGF2ZSBjb21lIGZyb20gYSBjYWxsIHRvIHRoaXMgb2JqZmlsZSdzIHN5bV9nZXRf cHJvYmVzIG1ldGhvZC4KKyAgICAgIElmIHlvdSBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIG9m IHN5bV9nZXRfcHJvYmVzLCB5b3UgbXVzdAorICAgICAgaW1wbGVtZW50IHRoaXMgbWV0aG9kIGFz IHdlbGwuICAqLworLSAgdW5zaWduZWQgKCpzeW1fZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50KSAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsCistCQkJCQkgICAgc3RydWN0IHByb2JlICpwcm9iZSk7 CisrICB1bnNpZ25lZCAoKnN5bV9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQpIChzdHJ1Y3QgcHJv YmUgKnByb2JlKTsKKyAKKyAgIC8qIEV2YWx1YXRlIHRoZSBOdGggYXJndW1lbnQgYXZhaWxhYmxl IHRvIFBST0JFLiAgUFJPQkUgd2lsbCBoYXZlCisgICAgICBjb21lIGZyb20gYSBjYWxsIHRvIHRo aXMgb2JqZmlsZSdzIHN5bV9nZXRfcHJvYmVzIG1ldGhvZC4gIE4gd2lsbAorQEAgLTMzMCw4ICsz MjksNyBAQAorICAgICAgUEMgd2lsbCBtYXRjaCB0aGUgYWRkcmVzcyBvZiB0aGUgcHJvYmUuICBJ ZiB5b3UgcHJvdmlkZSBhbgorICAgICAgaW1wbGVtZW50YXRpb24gb2Ygc3ltX2dldF9wcm9iZXMs IHlvdSBtdXN0IGltcGxlbWVudCB0aGlzIG1ldGhvZAorICAgICAgYXMgd2VsbC4gICovCistICBz dHJ1Y3QgdmFsdWUgKigqc3ltX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50KSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsCistCQkJCQkJc3RydWN0IHByb2JlICpwcm9iZSwKKysgIHN0cnVjdCB2YWx1 ZSAqKCpzeW1fZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQpIChzdHJ1Y3QgcHJvYmUgKnByb2JlLAor IAkJCQkJCXVuc2lnbmVkIG4pOworIAorICAgLyogQ29tcGlsZSB0aGUgTnRoIHByb2JlIGFyZ3Vt ZW50IHRvIGFuIGFnZW50IGV4cHJlc3Npb24uICBQUk9CRQorQEAgLTMzOSw4ICszMzcsNyBAQAor ICAgICAgbWV0aG9kLiAgTiB3aWxsIGJlIGJldHdlZW4gMCBhbmQgdGhlIG51bWJlciBvZiBhcmd1 bWVudHMKKyAgICAgIGF2YWlsYWJsZSB0byB0aGlzIHByb2JlLiAgRVhQUiBhbmQgVkFMVUUgYXJl IHRoZSBhZ2VudCBleHByZXNzaW9uCisgICAgICB0aGF0IGlzIGJlaW5nIHVwZGF0ZWQuICAqLwor LSAgdm9pZCAoKnN5bV9jb21waWxlX3RvX2F4KSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCist CQkJICAgICBzdHJ1Y3QgcHJvYmUgKnByb2JlLAorKyAgdm9pZCAoKnN5bV9jb21waWxlX3RvX2F4 KSAoc3RydWN0IHByb2JlICpwcm9iZSwKKyAJCQkgICAgIHN0cnVjdCBhZ2VudF9leHByICpleHBy LAorIAkJCSAgICAgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUsCisgCQkJICAgICB1bnNpZ25lZCBu KTsKCmRpZmYgLS1naXQgYS9nZGItZGxvcGVuLXN0YXAtcHJvYmUtMm9mNy5wYXRjaCBiL2dkYi1k bG9wZW4tc3RhcC1wcm9iZS0yb2Y3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjgxYjM1ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUt Mm9mNy5wYXRjaApAQCAtMCwwICsxLDc0IEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2Ri LWN2cy8yMDEyLTA3L21zZzAwMTI0Lmh0bWwKKworIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIv MDcvMTggMTY6MTI6MTUJMS4xNDQ3NAorIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDcvMTgg MTY6MjA6MzYJMS4xNDQ3NQorIyMgLTEsNSArMSwxMCBAQAorIDIwMTItMDctMTggIFNlcmdpbyBE dXJpZ2FuIEp1bmlvciAgPHNlcmdpb2RqQHJlZGhhdC5jb20+CisgCisrCSogcHJvYmUuYyAocHJv YmVfc2FmZV9ldmFsdWF0ZV9hdF9wYyk6IFJlbmFtZSB2YXJpYWJsZSBgbl9wcm9iZXMnLgorKwkq IHN0YXAtcHJvYmUuYyAoY29tcGlsZV9wcm9iZV9hcmcpOiBMaWtld2lzZS4KKysKKysyMDEyLTA3 LTE4ICBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgIDxzZXJnaW9kakByZWRoYXQuY29tPgorKworIAkq IGVsZnJlYWQuYyAoZWxmX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCk6IFJlbW92ZSBgb2JqZmls ZScgYXJndW1lbnQuCisgCShlbGZfY29tcGlsZV90b19heCk6IExpa2V3aXNlLgorIAkqIGluZnJ1 bi5jIChpbnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9mcm9tX3Byb2JlKTogTGlrZXdpc2UuCistLS0g c3JjL2dkYi9wcm9iZS5jCTIwMTIvMDcvMTggMTY6MTI6MTcJMS40CisrKysgc3JjL2dkYi9wcm9i ZS5jCTIwMTIvMDcvMTggMTY6MjA6NDMJMS41CitAQCAtNjM3LDcgKzYzNyw3IEBACisgeworICAg c3RydWN0IHByb2JlICpwcm9iZTsKKyAgIGNvbnN0IHN0cnVjdCBzeW1fcHJvYmVfZm5zICpwcm9i ZV9mbnM7CistICB1bnNpZ25lZCBuX3Byb2JlczsKKysgIHVuc2lnbmVkIG5fYXJnczsKKyAKKyAg IHByb2JlID0gZmluZF9wcm9iZV9ieV9wYyAoZ2V0X2ZyYW1lX3BjIChmcmFtZSkpOworICAgaWYg KCFwcm9iZSkKK0BAIC02NDgsOSArNjQ4LDkgQEAKKyAgIGdkYl9hc3NlcnQgKHByb2JlLT5vYmpm aWxlLT5zZi0+c3ltX3Byb2JlX2ZucyAhPSBOVUxMKTsKKyAKKyAgIHByb2JlX2ZucyA9IHByb2Jl LT5vYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZuczsKKy0gIG5fcHJvYmVzID0gcHJvYmVfZm5zLT5z eW1fZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChwcm9iZSk7CisrICBuX2FyZ3MgPSBwcm9iZV9m bnMtPnN5bV9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKHByb2JlKTsKKyAKKy0gIGlmIChuID49 IG5fcHJvYmVzKQorKyAgaWYgKG4gPj0gbl9hcmdzKQorICAgICByZXR1cm4gTlVMTDsKKyAKKyAg IHJldHVybiBwcm9iZV9mbnMtPnN5bV9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAocHJvYmUsIG4p OworLS0tIHNyYy9nZGIvc3RhcC1wcm9iZS5jCTIwMTIvMDcvMTggMTY6MTI6MTcJMS41CisrKysg c3JjL2dkYi9zdGFwLXByb2JlLmMJMjAxMi8wNy8xOCAxNjoyMDo0MwkxLjYKK0BAIC0xMTYwLDcg KzExNjAsNyBAQAorICAgaW50IHNlbCA9IChpbnQpICh1aW50cHRyX3QpIGRhdGE7CisgICBzdHJ1 Y3QgcHJvYmUgKnBjX3Byb2JlOworICAgY29uc3Qgc3RydWN0IHN5bV9wcm9iZV9mbnMgKnBjX3By b2JlX2ZuczsKKy0gIGludCBuX3Byb2JlczsKKysgIGludCBuX2FyZ3M7CisgCisgICAvKiBTRUwg PT0gLTEgbWVhbnMgIl9wcm9iZV9hcmdjIi4gICovCisgICBnZGJfYXNzZXJ0IChzZWwgPj0gLTEp OworQEAgLTExNzUsMjAgKzExNzUsMjAgQEAKKyAKKyAgIHBjX3Byb2JlX2ZucyA9IHBjX3Byb2Jl LT5vYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZuczsKKyAKKy0gIG5fcHJvYmVzID0gcGNfcHJvYmVf Zm5zLT5zeW1fZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChwY19wcm9iZSk7CisrICBuX2FyZ3Mg PSBwY19wcm9iZV9mbnMtPnN5bV9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKHBjX3Byb2JlKTsK KyAKKyAgIGlmIChzZWwgPT0gLTEpCisgICAgIHsKKyAgICAgICB2YWx1ZS0+a2luZCA9IGF4c19y dmFsdWU7CisgICAgICAgdmFsdWUtPnR5cGUgPSBidWlsdGluX3R5cGUgKGV4cHItPmdkYmFyY2gp LT5idWlsdGluX2ludDsKKy0gICAgICBheF9jb25zdF9sIChleHByLCBuX3Byb2Jlcyk7CisrICAg ICAgYXhfY29uc3RfbCAoZXhwciwgbl9hcmdzKTsKKyAgICAgICByZXR1cm47CisgICAgIH0KKyAK KyAgIGdkYl9hc3NlcnQgKHNlbCA+PSAwKTsKKy0gIGlmIChzZWwgPj0gbl9wcm9iZXMpCisrICBp ZiAoc2VsID49IG5fYXJncykKKyAgICAgZXJyb3IgKF8oIkludmFsaWQgcHJvYmUgYXJndW1lbnQg JWQgLS0gcHJvYmUgaGFzICVkIGFyZ3VtZW50cyBhdmFpbGFibGUiKSwKKy0JICAgc2VsLCBuX3By b2Jlcyk7CisrCSAgIHNlbCwgbl9hcmdzKTsKKyAKKyAgIHBjX3Byb2JlX2Zucy0+c3ltX2NvbXBp bGVfdG9fYXggKHBjX3Byb2JlLCBleHByLCB2YWx1ZSwgc2VsKTsKKyB9CgpkaWZmIC0tZ2l0IGEv Z2RiLWRsb3Blbi1zdGFwLXByb2JlLTNvZjcucGF0Y2ggYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUt M29mNy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzM3ZGVkCi0t LSAvZGV2L251bGwKKysrIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTNvZjcucGF0Y2gKQEAgLTAs MCArMSw5OCBAQAorMjAxMi0wNy0xOSAgR2FyeSBCZW5zb24gIDxnYmVuc29uQHJlZGhhdC5jb20+ CisKKwkqIHByb2JlLmggKGdldF9wcm9iZV9hcmd1bWVudF9jb3VudCk6IE5ldyBkZWNsYXJhdGlv bi4KKwkoZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQpOiBMaWtld2lzZS4KKwkqIHByb2JlLmMgKGdl dF9wcm9iZV9hcmd1bWVudF9jb3VudCk6IE5ldyBmdW5jdGlvbi4KKwkoZXZhbHVhdGVfcHJvYmVf YXJndW1lbnQpOiBMaWtld2lzZS4KKwkocHJvYmVfc2FmZV9ldmFsdWF0ZV9hdF9wYyk6IFVzZSB0 aGUgYWJvdmUgbmV3IGZ1bmN0aW9ucy4KKworZGlmZiAtLWdpdCBhL2dkYi9wcm9iZS5oIGIvZ2Ri L3Byb2JlLmgKK2luZGV4IDhkNDRjYTIuLjFkMjliODcgMTAwNjQ0CistLS0gYS9nZGIvcHJvYmUu aAorKysrIGIvZ2RiL3Byb2JlLmgKK0BAIC0yMTQsNiArMjE0LDE2IEBAIGV4dGVybiB2b2lkIGlu Zm9fcHJvYmVzX2Zvcl9vcHMgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5LAorIAorIGV4dGVybiBz dHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmluZm9fcHJvYmVzX2NtZGxpc3RfZ2V0ICh2b2lkKTsK KyAKKysvKiBSZXR1cm4gdGhlIGFyZ3VtZW50IGNvdW50IG9mIHRoZSBzcGVjaWZpZWQgcHJvYmUu ICAqLworKworK2V4dGVybiB1bnNpZ25lZCBnZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKHN0cnVj dCBwcm9iZSAqcHJvYmUpOworKworKy8qIEV2YWx1YXRlIGFyZ3VtZW50IE4gb2YgdGhlIHNwZWNp ZmllZCBwcm9iZS4gIE4gbXVzdCBiZSBiZXR3ZWVuIDAKKysgICBpbmNsdXNpdmUgYW5kIGdldF9w cm9iZV9hcmd1bWVudF9jb3VudCBleGNsdXNpdmUuICAqLworKworK2V4dGVybiBzdHJ1Y3QgdmFs dWUgKmV2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChzdHJ1Y3QgcHJvYmUgKnByb2JlLAorKwkJCQkJ ICAgICAgdW5zaWduZWQgbik7CisrCisgLyogQSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGZp bmRzIGEgcHJvYmUgYXQgdGhlIFBDIGluIEZSQU1FIGFuZAorICAgIGV2YWx1YXRlcyBhcmd1bWVu dCBOLCB3aXRoIDAgPD0gTiA8IG51bWJlcl9vZl9hcmdzLiAgSWYgdGhlcmUgaXMgbm8KKyAgICBw cm9iZSBhdCB0aGF0IGxvY2F0aW9uLCBvciBpZiB0aGUgcHJvYmUgZG9lcyBub3QgaGF2ZSBlbm91 Z2ggYXJndW1lbnRzLAorZGlmZiAtLWdpdCBhL2dkYi9wcm9iZS5jIGIvZ2RiL3Byb2JlLmMKK2lu ZGV4IDc3ZjNiMTMuLmE2MWY0ZWEgMTAwNjQ0CistLS0gYS9nZGIvcHJvYmUuYworKysrIGIvZ2Ri L3Byb2JlLmMKK0BAIC02MzIsMjggKzYzMiw1NSBAQCBpbmZvX3Byb2Jlc19jb21tYW5kIChjaGFy ICphcmcsIGludCBmcm9tX3R0eSkKKyAKKyAvKiBTZWUgY29tbWVudHMgaW4gcHJvYmUuaC4gICov CisgCisrdW5zaWduZWQKKytnZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKHN0cnVjdCBwcm9iZSAq cHJvYmUpCisreworKyAgY29uc3Qgc3RydWN0IHN5bV9wcm9iZV9mbnMgKnByb2JlX2ZuczsKKysK KysgIGdkYl9hc3NlcnQgKHByb2JlLT5vYmpmaWxlICE9IE5VTEwpOworKyAgZ2RiX2Fzc2VydCAo cHJvYmUtPm9iamZpbGUtPnNmICE9IE5VTEwpOworKworKyAgcHJvYmVfZm5zID0gcHJvYmUtPm9i amZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zOworKworKyAgZ2RiX2Fzc2VydCAocHJvYmVfZm5zICE9 IE5VTEwpOworKworKyAgcmV0dXJuIHByb2JlX2Zucy0+c3ltX2dldF9wcm9iZV9hcmd1bWVudF9j b3VudCAocHJvYmUpOworK30KKysKKysvKiBTZWUgY29tbWVudHMgaW4gcHJvYmUuaC4gICovCisr Cisrc3RydWN0IHZhbHVlICoKKytldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAoc3RydWN0IHByb2Jl ICpwcm9iZSwgdW5zaWduZWQgbikKKyt7CisrICBjb25zdCBzdHJ1Y3Qgc3ltX3Byb2JlX2ZucyAq cHJvYmVfZm5zOworKworKyAgZ2RiX2Fzc2VydCAocHJvYmUtPm9iamZpbGUgIT0gTlVMTCk7Cisr ICBnZGJfYXNzZXJ0IChwcm9iZS0+b2JqZmlsZS0+c2YgIT0gTlVMTCk7CisrCisrICBwcm9iZV9m bnMgPSBwcm9iZS0+b2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnM7CisrCisrICBnZGJfYXNzZXJ0 IChwcm9iZV9mbnMgIT0gTlVMTCk7CisrCisrICByZXR1cm4gcHJvYmVfZm5zLT5zeW1fZXZhbHVh dGVfcHJvYmVfYXJndW1lbnQgKHByb2JlLCBuKTsKKyt9CisrCisrLyogU2VlIGNvbW1lbnRzIGlu IHByb2JlLmguICAqLworKworIHN0cnVjdCB2YWx1ZSAqCisgcHJvYmVfc2FmZV9ldmFsdWF0ZV9h dF9wYyAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCB1bnNpZ25lZCBuKQorIHsKKyAgIHN0cnVj dCBwcm9iZSAqcHJvYmU7CistICBjb25zdCBzdHJ1Y3Qgc3ltX3Byb2JlX2ZucyAqcHJvYmVfZm5z OworICAgdW5zaWduZWQgbl9hcmdzOworIAorICAgcHJvYmUgPSBmaW5kX3Byb2JlX2J5X3BjIChn ZXRfZnJhbWVfcGMgKGZyYW1lKSk7CisgICBpZiAoIXByb2JlKQorICAgICByZXR1cm4gTlVMTDsK KyAKKy0gIGdkYl9hc3NlcnQgKHByb2JlLT5vYmpmaWxlICE9IE5VTEwpOworLSAgZ2RiX2Fzc2Vy dCAocHJvYmUtPm9iamZpbGUtPnNmICE9IE5VTEwpOworLSAgZ2RiX2Fzc2VydCAocHJvYmUtPm9i amZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zICE9IE5VTEwpOworLQorLSAgcHJvYmVfZm5zID0gcHJv YmUtPm9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zOworLSAgbl9hcmdzID0gcHJvYmVfZm5zLT5z eW1fZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChwcm9iZSk7CistCisrICBuX2FyZ3MgPSBnZXRf cHJvYmVfYXJndW1lbnRfY291bnQgKHByb2JlKTsKKyAgIGlmIChuID49IG5fYXJncykKKyAgICAg cmV0dXJuIE5VTEw7CisgCistICByZXR1cm4gcHJvYmVfZm5zLT5zeW1fZXZhbHVhdGVfcHJvYmVf YXJndW1lbnQgKHByb2JlLCBuKTsKKysgIHJldHVybiBldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAo cHJvYmUsIG4pOworIH0KKyAKKyAvKiBTZWUgY29tbWVudCBpbiBwcm9iZS5oLiAgKi8KCmRpZmYg LS1naXQgYS9nZGItZGxvcGVuLXN0YXAtcHJvYmUtNG9mNy5wYXRjaCBiL2dkYi1kbG9wZW4tc3Rh cC1wcm9iZS00b2Y3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5 OTkzMWEKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUtNG9mNy5wYXRj aApAQCAtMCwwICsxLDEzMSBAQAorMjAxMi0wNy0xOSAgR2FyeSBCZW5zb24gIDxnYmVuc29uQHJl ZGhhdC5jb20+CisKKwkqIHNvbGliLXN2cjQuYyAoc3ZyNF9pbmZvKTogTW92ZSBlYXJsaWVyLgor CShzb2xpYl9zdnI0X3BzcGFjZV9kYXRhKTogTGlrZXdpc2UuCisJKHN2cjRfcHNwYWNlX2RhdGFf Y2xlYW51cCk6IExpa2V3aXNlLgorCShnZXRfc3ZyNF9pbmZvKTogTGlrZXdpc2UuCisKK2RpZmYg LS1naXQgYS9nZGIvc29saWItc3ZyNC5jIGIvZ2RiL3NvbGliLXN2cjQuYworaW5kZXggMzA3ZTQ4 My4uYzg4YjljYiAxMDA2NDQKKy0tLSBhL2dkYi9zb2xpYi1zdnI0LmMKKysrKyBiL2dkYi9zb2xp Yi1zdnI0LmMKK0BAIC0xMDYsNiArMTA2LDU5IEBAIHN0YXRpYyBjb25zdCAgY2hhciAqIGNvbnN0 IG1haW5fbmFtZV9saXN0W10gPQorICAgTlVMTAorIH07CisgCisrLyogUGVyIHBzcGFjZSBTVlI0 IHNwZWNpZmljIGRhdGEuICAqLworKworK3N0cnVjdCBzdnI0X2luZm8KKyt7CisrICBDT1JFX0FE RFIgZGVidWdfYmFzZTsJLyogQmFzZSBvZiBkeW5hbWljIGxpbmtlciBzdHJ1Y3R1cmVzLiAgKi8K KysKKysgIC8qIFZhbGlkaXR5IGZsYWcgZm9yIGRlYnVnX2xvYWRlcl9vZmZzZXQuICAqLworKyAg aW50IGRlYnVnX2xvYWRlcl9vZmZzZXRfcDsKKysKKysgIC8qIExvYWQgYWRkcmVzcyBmb3IgdGhl IGR5bmFtaWMgbGlua2VyLCBpbmZlcnJlZC4gICovCisrICBDT1JFX0FERFIgZGVidWdfbG9hZGVy X29mZnNldDsKKysKKysgIC8qIE5hbWUgb2YgdGhlIGR5bmFtaWMgbGlua2VyLCB2YWxpZCBpZiBk ZWJ1Z19sb2FkZXJfb2Zmc2V0X3AuICAqLworKyAgY2hhciAqZGVidWdfbG9hZGVyX25hbWU7Cisr CisrICAvKiBMb2FkIG1hcCBhZGRyZXNzIGZvciB0aGUgbWFpbiBleGVjdXRhYmxlLiAgKi8KKysg IENPUkVfQUREUiBtYWluX2xtX2FkZHI7CisrCisrICBDT1JFX0FERFIgaW50ZXJwX3RleHRfc2Vj dF9sb3c7CisrICBDT1JFX0FERFIgaW50ZXJwX3RleHRfc2VjdF9oaWdoOworKyAgQ09SRV9BRERS IGludGVycF9wbHRfc2VjdF9sb3c7CisrICBDT1JFX0FERFIgaW50ZXJwX3BsdF9zZWN0X2hpZ2g7 CisrfTsKKysKKysvKiBQZXItcHJvZ3JhbS1zcGFjZSBkYXRhIGtleS4gICovCisrc3RhdGljIGNv bnN0IHN0cnVjdCBwcm9ncmFtX3NwYWNlX2RhdGEgKnNvbGliX3N2cjRfcHNwYWNlX2RhdGE7Cisr Cisrc3RhdGljIHZvaWQKKytzdnI0X3BzcGFjZV9kYXRhX2NsZWFudXAgKHN0cnVjdCBwcm9ncmFt X3NwYWNlICpwc3BhY2UsIHZvaWQgKmFyZykKKyt7CisrICBzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZv OworKworKyAgaW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0YSAocHNwYWNlLCBzb2xpYl9zdnI0X3Bz cGFjZV9kYXRhKTsKKysgIHhmcmVlIChpbmZvKTsKKyt9CisrCisrLyogR2V0IHRoZSBjdXJyZW50 IHN2cjQgZGF0YS4gIElmIG5vbmUgaXMgZm91bmQgeWV0LCBhZGQgaXQgbm93LiAgVGhpcworKyAg IGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgb2JqZWN0LiAgKi8KKysKKytzdGF0aWMg c3RydWN0IHN2cjRfaW5mbyAqCisrZ2V0X3N2cjRfaW5mbyAodm9pZCkKKyt7CisrICBzdHJ1Y3Qg c3ZyNF9pbmZvICppbmZvOworKworKyAgaW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0YSAoY3VycmVu dF9wcm9ncmFtX3NwYWNlLCBzb2xpYl9zdnI0X3BzcGFjZV9kYXRhKTsKKysgIGlmIChpbmZvICE9 IE5VTEwpCisrICAgIHJldHVybiBpbmZvOworKworKyAgaW5mbyA9IFhaQUxMT0MgKHN0cnVjdCBz dnI0X2luZm8pOworKyAgc2V0X3Byb2dyYW1fc3BhY2VfZGF0YSAoY3VycmVudF9wcm9ncmFtX3Nw YWNlLCBzb2xpYl9zdnI0X3BzcGFjZV9kYXRhLCBpbmZvKTsKKysgIHJldHVybiBpbmZvOworK30K KysKKyAvKiBSZXR1cm4gbm9uLXplcm8gaWYgR0RCX1NPX05BTUUgYW5kIElORkVSSU9SX1NPX05B TUUgcmVwcmVzZW50CisgICAgdGhlIHNhbWUgc2hhcmVkIGxpYnJhcnkuICAqLworIAorQEAgLTI5 MSw1OSArMzQ0LDYgQEAgbG1fYWRkcl9jaGVjayAoc3RydWN0IHNvX2xpc3QgKnNvLCBiZmQgKmFi ZmQpCisgICByZXR1cm4gc28tPmxtX2luZm8tPmxfYWRkcjsKKyB9CisgCistLyogUGVyIHBzcGFj ZSBTVlI0IHNwZWNpZmljIGRhdGEuICAqLworLQorLXN0cnVjdCBzdnI0X2luZm8KKy17CistICBD T1JFX0FERFIgZGVidWdfYmFzZTsJLyogQmFzZSBvZiBkeW5hbWljIGxpbmtlciBzdHJ1Y3R1cmVz LiAgKi8KKy0KKy0gIC8qIFZhbGlkaXR5IGZsYWcgZm9yIGRlYnVnX2xvYWRlcl9vZmZzZXQuICAq LworLSAgaW50IGRlYnVnX2xvYWRlcl9vZmZzZXRfcDsKKy0KKy0gIC8qIExvYWQgYWRkcmVzcyBm b3IgdGhlIGR5bmFtaWMgbGlua2VyLCBpbmZlcnJlZC4gICovCistICBDT1JFX0FERFIgZGVidWdf bG9hZGVyX29mZnNldDsKKy0KKy0gIC8qIE5hbWUgb2YgdGhlIGR5bmFtaWMgbGlua2VyLCB2YWxp ZCBpZiBkZWJ1Z19sb2FkZXJfb2Zmc2V0X3AuICAqLworLSAgY2hhciAqZGVidWdfbG9hZGVyX25h bWU7CistCistICAvKiBMb2FkIG1hcCBhZGRyZXNzIGZvciB0aGUgbWFpbiBleGVjdXRhYmxlLiAg Ki8KKy0gIENPUkVfQUREUiBtYWluX2xtX2FkZHI7CistCistICBDT1JFX0FERFIgaW50ZXJwX3Rl eHRfc2VjdF9sb3c7CistICBDT1JFX0FERFIgaW50ZXJwX3RleHRfc2VjdF9oaWdoOworLSAgQ09S RV9BRERSIGludGVycF9wbHRfc2VjdF9sb3c7CistICBDT1JFX0FERFIgaW50ZXJwX3BsdF9zZWN0 X2hpZ2g7CistfTsKKy0KKy0vKiBQZXItcHJvZ3JhbS1zcGFjZSBkYXRhIGtleS4gICovCistc3Rh dGljIGNvbnN0IHN0cnVjdCBwcm9ncmFtX3NwYWNlX2RhdGEgKnNvbGliX3N2cjRfcHNwYWNlX2Rh dGE7CistCistc3RhdGljIHZvaWQKKy1zdnI0X3BzcGFjZV9kYXRhX2NsZWFudXAgKHN0cnVjdCBw cm9ncmFtX3NwYWNlICpwc3BhY2UsIHZvaWQgKmFyZykKKy17CistICBzdHJ1Y3Qgc3ZyNF9pbmZv ICppbmZvOworLQorLSAgaW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0YSAocHNwYWNlLCBzb2xpYl9z dnI0X3BzcGFjZV9kYXRhKTsKKy0gIHhmcmVlIChpbmZvKTsKKy19CistCistLyogR2V0IHRoZSBj dXJyZW50IHN2cjQgZGF0YS4gIElmIG5vbmUgaXMgZm91bmQgeWV0LCBhZGQgaXQgbm93LiAgVGhp cworLSAgIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgb2JqZWN0LiAgKi8KKy0KKy1z dGF0aWMgc3RydWN0IHN2cjRfaW5mbyAqCistZ2V0X3N2cjRfaW5mbyAodm9pZCkKKy17CistICBz dHJ1Y3Qgc3ZyNF9pbmZvICppbmZvOworLQorLSAgaW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0YSAo Y3VycmVudF9wcm9ncmFtX3NwYWNlLCBzb2xpYl9zdnI0X3BzcGFjZV9kYXRhKTsKKy0gIGlmIChp bmZvICE9IE5VTEwpCistICAgIHJldHVybiBpbmZvOworLQorLSAgaW5mbyA9IFhaQUxMT0MgKHN0 cnVjdCBzdnI0X2luZm8pOworLSAgc2V0X3Byb2dyYW1fc3BhY2VfZGF0YSAoY3VycmVudF9wcm9n cmFtX3NwYWNlLCBzb2xpYl9zdnI0X3BzcGFjZV9kYXRhLCBpbmZvKTsKKy0gIHJldHVybiBpbmZv OworLX0KKy0KKyAvKiBMb2NhbCBmdW5jdGlvbiBwcm90b3R5cGVzICovCisgCisgc3RhdGljIGlu dCBtYXRjaF9tYWluIChjb25zdCBjaGFyICopOwoKZGlmZiAtLWdpdCBhL2dkYi1kbG9wZW4tc3Rh cC1wcm9iZS01b2Y3LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTVvZjcucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2IxOGNkNgotLS0gL2Rldi9udWxsCisr KyBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS01b2Y3LnBhdGNoCkBAIC0wLDAgKzEsMTcgQEAKKzIw MTItMDctMTkgIEdhcnkgQmVuc29uICA8Z2JlbnNvbkByZWRoYXQuY29tPgorCisJKiBzb2xpYi1z dnI0LmMgKHN2cjRfaW5mbyk6IE1hZGUgZGVidWdfbG9hZGVyX29mZnNldF9wIGEgYml0ZmllbGQu CisKK2RpZmYgLS1naXQgYS9nZGIvc29saWItc3ZyNC5jIGIvZ2RiL3NvbGliLXN2cjQuYworaW5k ZXggYzg4YjljYi4uOGU0MWYxOSAxMDA2NDQKKy0tLSBhL2dkYi9zb2xpYi1zdnI0LmMKKysrKyBi L2dkYi9zb2xpYi1zdnI0LmMKK0BAIC0xMTMsNyArMTEzLDcgQEAgc3RydWN0IHN2cjRfaW5mbwor ICAgQ09SRV9BRERSIGRlYnVnX2Jhc2U7CS8qIEJhc2Ugb2YgZHluYW1pYyBsaW5rZXIgc3RydWN0 dXJlcy4gICovCisgCisgICAvKiBWYWxpZGl0eSBmbGFnIGZvciBkZWJ1Z19sb2FkZXJfb2Zmc2V0 LiAgKi8KKy0gIGludCBkZWJ1Z19sb2FkZXJfb2Zmc2V0X3A7CisrICB1bnNpZ25lZCBpbnQgZGVi dWdfbG9hZGVyX29mZnNldF9wIDogMTsKKyAKKyAgIC8qIExvYWQgYWRkcmVzcyBmb3IgdGhlIGR5 bmFtaWMgbGlua2VyLCBpbmZlcnJlZC4gICovCisgICBDT1JFX0FERFIgZGVidWdfbG9hZGVyX29m ZnNldDsKCmRpZmYgLS1naXQgYS9nZGItZGxvcGVuLXN0YXAtcHJvYmUtNm9mNy5wYXRjaCBiL2dk Yi1kbG9wZW4tc3RhcC1wcm9iZS02b2Y3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjU3NDE1MGUKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItZGxvcGVuLXN0YXAtcHJv YmUtNm9mNy5wYXRjaApAQCAtMCwwICsxLDE5ODkgQEAKK2dkYi8KKzIwMTItMDctMzAgIEdhcnkg QmVuc29uICA8Z2JlbnNvbkByZWRoYXQuY29tPgorCisJKiBicmVha3BvaW50LmggKGhhbmRsZV9z b2xpYl9ldmVudCk6IE1vdmVkIGZ1bmN0aW9uIGRlZmluaXRpb24KKwl0byBzb2xpYi5oLCBhbmQg YWRkZWQgYSBuZXcgcGFyYW1ldGVyLgorCSogYnJlYWtwb2ludC5jIChoYW5kbGVfc29saWJfZXZl bnQpOiBNb3ZlZCBmdW5jdGlvbiB0byBzb2xpYi5jCisJYW5kIGFkZGVkIGEgbmV3IHBhcmFtZXRl ci4KKwkoYnBzdGF0X3N0b3Bfc3RhdHVzKTogUGFzcyBuZXcgYXJndW1lbnQgdG8gaGFuZGxlX3Nv bGliX2V2ZW50LgorCSogc29saWIuaCAoYnJlYWtwb2ludC5oKTogTmV3IGluY2x1ZGUuCisJKGhh bmRsZV9zb2xpYl9ldmVudCk6IE1vdmVkIGZ1bmN0aW9uIGRlZmluaXRpb24gZnJvbSBicmVha3Bv aW50LmgKKwlhbmQgYWRkZWQgYSBuZXcgcGFyYW1ldGVyLgorCSh1cGRhdGVfc29saWJfYnJlYWtw b2ludHMpOiBOZXcgZnVuY3Rpb24gZGVmaW5pdGlvbi4KKwkqIHNvbGliLmMgKGhhbmRsZV9zb2xp Yl9ldmVudCk6IE1vdmVkIGZ1bmN0aW9uIGZyb20gYnJlYWtwb2ludC5jCisJYW5kIGFkZGVkIGEg bmV3IHBhcmFtZXRlci4KKwkodXBkYXRlX3NvbGliX2JyZWFrcG9pbnRzKTogTmV3IGZ1bmN0aW9u LgorCSogc29saXN0LmggKGJyZWFrcG9pbnQuaCk6IE5ldyBpbmNsdWRlLgorCSh0YXJnZXRfc29f b3BzKTogTmV3IGZpZWxkcyAiaGFuZGxlX3NvbGliX2V2ZW50IiBhbmQKKwkidXBkYXRlX2JyZWFr cG9pbnRzIi4KKwkqIGluZnJ1bi5jIChzZXRfc3RvcF9vbl9zb2xpYl9ldmVudHMpOiBOZXcgZnVu Y3Rpb24uCisJKF9pbml0aWFsaXplX2luZnJ1bik6IFVzZSB0aGUgYWJvdmUgZm9yICJzZXQgc3Rv cC1vbi1zb2xpYi1ldmVudHMiLgorCShoYW5kbGVfaW5mZXJpb3JfZXZlbnQpOiBQYXNzIG5ldyBh cmd1bWVudCB0byBoYW5kbGVfc29saWJfZXZlbnQuCisJKiBzb2xpYi1zdnI0LmMgKHByb2JlLmgp OiBOZXcgaW5jbHVkZS4KKwkobmFtZXNwYWNlX3RhYmxlX2ZsYXR0ZW4pOiBOZXcgZm9yd2FyZCBk ZWNsYXJhdGlvbi4KKwkobG1faW5mbyk6IE5ldyBmaWVsZHMgImxtaWQiIGFuZCAiaW5faW5pdGlh bF9ucyIuCisJKHByb2JlX2FjdGlvbik6IE5ldyBlbnVtLgorCShwcm9iZV9pbmZvKTogTmV3IHN0 cnVjdC4KKwkocHJvYmVfaW5mbyk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCisJKE5VTV9QUk9CRVMp OiBOZXcgZGVmaW5pdGlvbi4KKwkoc3ZyNF9pbmZvKTogTmV3IGZpZWxkcyAgInVzaW5nX3Byb2Jl cyIsICJwcm9iZXMiIGFuZAorCSJuYW1lc3BhY2VfdGFibGUiLgorCShmcmVlX3Byb2Jlcyk6IE5l dyBmdW5jdGlvbi4KKwkoZnJlZV9uYW1lc3BhY2VfdGFibGUpOiBMaWtld2lzZS4KKwkoc3ZyNF9w c3BhY2VfZGF0YV9jbGVhbnVwKTogRnJlZSBwcm9iZXMgYW5kIG5hbWVzcGFjZSB0YWJsZS4KKwko c3ZyNF9zYW1lKTogQWxzbyBjb21wYXJlIG5hbWVzcGFjZXMgaWYgdXNpbmcgcHJvYmVzLgorCShs bV9hZGRyX2NoZWNrKTogT25seSBwcmludCAuZHluYW1pYyBzZWN0aW9uIGF0IHdyb25nIGFkZHJl c3MKKwl3YXJuaW5nIGZvciBpbml0aWFsIG5hbWVzcGFjZSBpZiB1c2luZyBwcm9iZXMuCisJKHJf bWFwX2Zyb21fZGVidWdfYmFzZSk6IE5ldyBmdW5jdGlvbi4KKwkoc29saWJfc3ZyNF9yX21hcCk6 IENhbGwgdGhlIGFib3ZlLgorCShzdnI0X3JlYWRfc29fbGlzdCk6IE5ldyBwYXJhbWV0ZXIgInBy ZXZfbG0iLgorCUNoYW5nZWQJcmV0dXJuIHR5cGUgZnJvbSB2b2lkIHRvIGludC4KKwlSZXR1cm4g bm9uemVybyBvbiBzdWNjZXNzLCB6ZXJvIG9uIGVycm9yLgorCShzdnI0X2N1cnJlbnRfc29zX2Zy b21fZGVidWdfYmFzZSk6IE5ldyBmdW5jdGlvbi4KKwkoc3ZyNF9jdXJyZW50X3Nvcyk6IENyZWF0 ZSByZXN1bHQgZnJvbSBuYW1lc3BhY2UgdGFibGUgaWYgYXZhaWxhYmxlLgorCVVzZSBzdnI0X2N1 cnJlbnRfc29zX2Zyb21fZGVidWdfYmFzZSB0byBnZW5lcmF0ZSBsaXN0IG90aGVyd2lzZS4KKwko cHJvYmVfYW5kX2luZm8pOiBOZXcgc3RydWN0LgorCShzb2xpYl9ldmVudF9wcm9iZV9hdCk6IE5l dyBmdW5jdGlvbi4KKwkoc29saWJfZXZlbnRfcHJvYmVfYWN0aW9uKTogTGlrZXdpc2UuCisJKG5h bWVzcGFjZSk6IE5ldyBzdHJ1Y3QuCisJKGhhc2hfbmFtZXNwYWNlKTogTmV3IGZ1bmN0aW9uLgor CShlcXVhbF9uYW1lc3BhY2UpOiBMaWtld2lzZS4KKwkoZnJlZV9uYW1lc3BhY2UpOiBMaWtld2lz ZS4KKwkobmFtZXNwYWNlX3VwZGF0ZV9mdWxsKTogTGlrZXdpc2UuCisJKG5hbWVzcGFjZV91cGRh dGVfaW5jcmVtZW50YWwpOiBMaWtld2lzZS4KKwkoc3ZyNF9oYW5kbGVfc29saWJfZXZlbnQpOiBM aWtld2lzZS4KKwkobmFtZXNwYWNlX3RhYmxlX2ZsYXR0ZW5faGVscGVyKTogTGlrZXdpc2UuCisJ KG5hbWVzcGFjZV90YWJsZV9mbGF0dGVuKTogTGlrZXdpc2UuCisJKHN2cjRfdXBkYXRlX3NvbGli X2V2ZW50X2JyZWFrcG9pbnQpOiBMaWtld2lzZS4KKwkoc3ZyNF91cGRhdGVfc29saWJfZXZlbnRf YnJlYWtwb2ludHMpOiBMaWtld2lzZS4KKwkoc3ZyNF9jcmVhdGVfc29saWJfZXZlbnRfYnJlYWtw b2ludHMpOiBMaWtld2lzZS4KKwkoZW5hYmxlX2JyZWFrKTogRnJlZSBwcm9iZXMgYmVmb3JlIGNy ZWF0aW5nIGJyZWFrcG9pbnRzLgorCVVzZSBzdnI0X2NyZWF0ZV9zb2xpYl9ldmVudF9icmVha3Bv aW50cyB0byBjcmVhdGUgYnJlYWtwb2ludHMuCisJKHN2cjRfc29saWJfY3JlYXRlX2luZmVyaW9y X2hvb2spOiBGcmVlIHRoZSBuYW1lc3BhY2UgdGFibGUuCisJKF9pbml0aWFsaXplX3N2cjRfc29s aWIpOiBJbml0aWFsaXNlIHN2cjRfc29fb3BzLmhhbmRsZV9zb2xpYl9ldmVudAorCWFuZCBzdnI0 X3NvX29wcy51cGRhdGVfYnJlYWtwb2ludHMuCisKK2dkYi90ZXN0c3VpdGUKKzIwMTItMDctMzAg IEdhcnkgQmVuc29uICA8Z2JlbnNvbkByZWRoYXQuY29tPgorCisJKiBnZGIuYmFzZS9icmVhay1p bnRlcnAuZXhwIChzb2xpYl9icCk6IE5ldyBjb25zdGFudC4KKwkocmVhY2hfMSk6IFVzZSB0aGUg YWJvdmUgaW5zdGVhZCBvZiAiX2RsX2RlYnVnX3N0YXRlIi4KKwkodGVzdF9hdHRhY2gpOiBMaWtl d2lzZS4KKwkodGVzdF9sZCk6IExpa2V3aXNlLgorCSogZ2RiLmJhc2UvYnJlYWstcHJvYmVzLmV4 cDogTmV3IGZpbGUuCisJKiBnZGIuYmFzZS9icmVhay1wcm9iZXMuYzogTGlrZXdpc2UuCisJKiBn ZGIuYmFzZS9icmVhay1wcm9iZXMtc29saWIuYzogTGlrZXdpc2UuCisJKiBnZGIuYmFzZS9pbmZv LXNoYXJlZC5leHA6IE5ldyBmaWxlLgorCSogZ2RiLmJhc2UvaW5mby1zaGFyZWQuYzogTGlrZXdp c2UuCisJKiBnZGIuYmFzZS9pbmZvLXNoYXJlZC1zb2xpYjEuYzogTGlrZXdpc2UuCisJKiBnZGIu YmFzZS9pbmZvLXNoYXJlZC1zb2xpYjIuYzogTGlrZXdpc2UuCisJKiBnZGIuYmFzZS9icmVhay1k bG1vcGVuLmV4cDogTGlrZXdpc2UuCisJKiBnZGIuYmFzZS9icmVhay1kbG1vcGVuLmM6IExpa2V3 aXNlLgorCSogZ2RiLmJhc2UvYnJlYWstZGxtb3Blbi1zb2xpYi5jOiBMaWtld2lzZS4KKworSW5k ZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL2JyZWFrcG9pbnQuaAorPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IGdkYi03LjQuOTEuMjAxMjA4MTQub3JpZy9nZGIvYnJlYWtwb2ludC5oCTIwMTItMDgtMTQgMTc6 MzE6MzcuMDUwOTg0NDI3ICswMjAwCisrKysgZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvYnJlYWtw b2ludC5oCTIwMTItMDgtMTQgMTc6MzQ6NDQuMjAzNzQ2NjAxICswMjAwCitAQCAtMTUxNSw4ICsx NTE1LDYgQEAgZXh0ZXJuIGludCB1c2VyX2JyZWFrcG9pbnRfcCAoc3RydWN0IGJyZQorIC8qIEF0 dGVtcHQgdG8gZGV0ZXJtaW5lIGFyY2hpdGVjdHVyZSBvZiBsb2NhdGlvbiBpZGVudGlmaWVkIGJ5 IFNBTC4gICovCisgZXh0ZXJuIHN0cnVjdCBnZGJhcmNoICpnZXRfc2FsX2FyY2ggKHN0cnVjdCBz eW10YWJfYW5kX2xpbmUgc2FsKTsKKyAKKy1leHRlcm4gdm9pZCBoYW5kbGVfc29saWJfZXZlbnQg KHZvaWQpOworLQorIGV4dGVybiB2b2lkIGJyZWFrcG9pbnRzX3JlbG9jYXRlIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwKKyAJCQkJICBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpkZWx0YSk7Cisg CitJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvYnJlYWtwb2ludC5jCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gZ2RiLTcuNC45MS4yMDEyMDgxNC5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMi0wOC0x NCAxNzozMTozNy4xMjg5ODQ0MDQgKzAyMDAKKysrKyBnZGItNy40LjkxLjIwMTIwODE0L2dkYi9i cmVha3BvaW50LmMJMjAxMi0wOC0xNCAxNzozNDo0NC4yMTE3NDY1OTcgKzAyMDAKK0BAIC01MjA1 LDcgKzUyMDUsNyBAQCBicHN0YXRfc3RvcF9zdGF0dXMgKHN0cnVjdCBhZGRyZXNzX3NwYWNlCisg ICAgIHsKKyAgICAgICBpZiAoYnMtPmJyZWFrcG9pbnRfYXQgJiYgYnMtPmJyZWFrcG9pbnRfYXQt PnR5cGUgPT0gYnBfc2hsaWJfZXZlbnQpCisgCXsKKy0JICBoYW5kbGVfc29saWJfZXZlbnQgKCk7 CisrCSAgaGFuZGxlX3NvbGliX2V2ZW50IChicyk7CisgCSAgYnJlYWs7CisgCX0KKyAgICAgfQor QEAgLTUzMDEsMjUgKzUzMDEsNiBAQCBoYW5kbGVfaml0X2V2ZW50ICh2b2lkKQorICAgdGFyZ2V0 X3Rlcm1pbmFsX2luZmVyaW9yICgpOworIH0KKyAKKy0vKiBIYW5kbGUgYW4gc29saWIgZXZlbnQg YnkgY2FsbGluZyBzb2xpYl9hZGQuICAqLworLQorLXZvaWQKKy1oYW5kbGVfc29saWJfZXZlbnQg KHZvaWQpCisteworLSAgY2xlYXJfcHJvZ3JhbV9zcGFjZV9zb2xpYl9jYWNoZSAoY3VycmVudF9p bmZlcmlvciAoKS0+cHNwYWNlKTsKKy0KKy0gIC8qIENoZWNrIGZvciBhbnkgbmV3bHkgYWRkZWQg c2hhcmVkIGxpYnJhcmllcyBpZiB3ZSdyZSBzdXBwb3NlZCB0bworLSAgICAgYmUgYWRkaW5nIHRo ZW0gYXV0b21hdGljYWxseS4gIFN3aXRjaCB0ZXJtaW5hbCBmb3IgYW55IG1lc3NhZ2VzCistICAg ICBwcm9kdWNlZCBieSBicmVha3BvaW50X3JlX3NldC4gICovCistICB0YXJnZXRfdGVybWluYWxf b3Vyc19mb3Jfb3V0cHV0ICgpOworLSNpZmRlZiBTT0xJQl9BREQKKy0gIFNPTElCX0FERCAoTlVM TCwgMCwgJmN1cnJlbnRfdGFyZ2V0LCBhdXRvX3NvbGliX2FkZCk7CistI2Vsc2UKKy0gIHNvbGli X2FkZCAoTlVMTCwgMCwgJmN1cnJlbnRfdGFyZ2V0LCBhdXRvX3NvbGliX2FkZCk7CistI2VuZGlm CistICB0YXJnZXRfdGVybWluYWxfaW5mZXJpb3IgKCk7CistfQorLQorIC8qIFByZXBhcmUgV0hB VCBmaW5hbCBkZWNpc2lvbiBmb3IgaW5mcnVuLiAgKi8KKyAKKyAvKiBEZWNpZGUgd2hhdCBpbmZy dW4gbmVlZHMgdG8gZG8gd2l0aCB0aGlzIGJwc3RhdC4gICovCitJbmRleDogZ2RiLTcuNC45MS4y MDEyMDgxNC9nZGIvc29saWIuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuOTEuMjAxMjA4MTQu b3JpZy9nZGIvc29saWIuaAkyMDEyLTAyLTAzIDE2OjE5OjM3LjAwMDAwMDAwMCArMDEwMAorKysr IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3NvbGliLmgJMjAxMi0wOC0xNCAxNzozNDo0NC4yNTc3 NDY1ODcgKzAyMDAKK0BAIC0yMSw2ICsyMSw5IEBACisgI2lmbmRlZiBTT0xJQl9ICisgI2RlZmlu ZSBTT0xJQl9ICisgCisrLyogRm9yIGJwc3RhdC4gICovCisrI2luY2x1ZGUgImJyZWFrcG9pbnQu aCIKKysKKyAvKiBGb3J3YXJkIGRlY2wncyBmb3IgcHJvdG90eXBlcyAqLworIHN0cnVjdCBzb19s aXN0OworIHN0cnVjdCB0YXJnZXRfb3BzOworQEAgLTkxLDQgKzk0LDE1IEBAIGV4dGVybiBDT1JF X0FERFIgZ2RiX2JmZF9sb29rdXBfc3ltYm9sX2YKKyAJCQkJCQkJCSAgICAgIHZvaWQgKiksCisg CQkJCQkJICAgIHZvaWQgKmRhdGEpOworIAorKy8qIEhhbmRsZSBhbiBzb2xpYiBldmVudCBieSBj YWxsaW5nIHNvbGliX2FkZC4gIFRhcmdldHMgd2hpY2ggaGFuZGxlCisrICAgc29saWIgZXZlbnRz IHVzaW5nIGJyZWFrcG9pbnRzIG11c3QgcGFzcyBhIHZhbGlkIGJwc3RhdC4gIFRhcmdldHMKKysg ICB3aGljaCBoYW5kbGUgc29saWIgZXZlbnRzIHVzaW5nIHNvbWUgb3RoZXIgbWVjaGFuaXNtIHNo b3VsZCBwYXNzCisrICAgTlVMTC4gICovCisrCisrZXh0ZXJuIHZvaWQgaGFuZGxlX3NvbGliX2V2 ZW50IChicHN0YXQgYnMpOworKworKy8qIEVuYWJsZSBvciBkaXNhYmxlIG9wdGlvbmFsIHNvbGli IGV2ZW50IGJyZWFrcG9pbnRzIGFzIGFwcHJvcHJpYXRlLiAgKi8KKysKKytleHRlcm4gdm9pZCB1 cGRhdGVfc29saWJfYnJlYWtwb2ludHMgKHZvaWQpOworKworICNlbmRpZiAvKiBTT0xJQl9IICov CitJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvc29saWIuYworPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IGdkYi03LjQuOTEuMjAxMjA4MTQub3JpZy9nZGIvc29saWIuYwkyMDEyLTA4LTE0IDE3OjMxOjM2 LjgzMjk4NDQ5MiArMDIwMAorKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3NvbGliLmMJMjAx Mi0wOC0xNCAxNzozNDo0NC4yNzI3NDY1ODMgKzAyMDAKK0BAIC0xMjI2LDYgKzEyMjYsNDIgQEAg bm9fc2hhcmVkX2xpYnJhcmllcyAoY2hhciAqaWdub3JlZCwgaW50CisgICBvYmpmaWxlX3B1cmdl X3NvbGlicyAoKTsKKyB9CisgCisrLyogU2VlIHNvbGliLmguICAqLworKworK3ZvaWQKKytoYW5k bGVfc29saWJfZXZlbnQgKGJwc3RhdCBicykKKyt7CisrICBzdHJ1Y3QgdGFyZ2V0X3NvX29wcyAq b3BzID0gc29saWJfb3BzICh0YXJnZXRfZ2RiYXJjaCk7CisrCisrICBpZiAob3BzLT5oYW5kbGVf c29saWJfZXZlbnQgIT0gTlVMTCkKKysgICAgb3BzLT5oYW5kbGVfc29saWJfZXZlbnQgKGJzKTsK KysKKysgIGNsZWFyX3Byb2dyYW1fc3BhY2Vfc29saWJfY2FjaGUgKGN1cnJlbnRfaW5mZXJpb3Ig KCktPnBzcGFjZSk7CisrCisrICAvKiBDaGVjayBmb3IgYW55IG5ld2x5IGFkZGVkIHNoYXJlZCBs aWJyYXJpZXMgaWYgd2UncmUgc3VwcG9zZWQgdG8KKysgICAgIGJlIGFkZGluZyB0aGVtIGF1dG9t YXRpY2FsbHkuICBTd2l0Y2ggdGVybWluYWwgZm9yIGFueSBtZXNzYWdlcworKyAgICAgcHJvZHVj ZWQgYnkgYnJlYWtwb2ludF9yZV9zZXQuICAqLworKyAgdGFyZ2V0X3Rlcm1pbmFsX291cnNfZm9y X291dHB1dCAoKTsKKysjaWZkZWYgU09MSUJfQURECisrICBTT0xJQl9BREQgKE5VTEwsIDAsICZj dXJyZW50X3RhcmdldCwgYXV0b19zb2xpYl9hZGQpOworKyNlbHNlCisrICBzb2xpYl9hZGQgKE5V TEwsIDAsICZjdXJyZW50X3RhcmdldCwgYXV0b19zb2xpYl9hZGQpOworKyNlbmRpZgorKyAgdGFy Z2V0X3Rlcm1pbmFsX2luZmVyaW9yICgpOworK30KKysKKysvKiBTZWUgc29saWIuaC4gICovCisr Cisrdm9pZAorK3VwZGF0ZV9zb2xpYl9icmVha3BvaW50cyAodm9pZCkKKyt7CisrICBzdHJ1Y3Qg dGFyZ2V0X3NvX29wcyAqb3BzID0gc29saWJfb3BzICh0YXJnZXRfZ2RiYXJjaCk7CisrCisrICBp ZiAob3BzLT51cGRhdGVfYnJlYWtwb2ludHMgIT0gTlVMTCkKKysgICAgb3BzLT51cGRhdGVfYnJl YWtwb2ludHMgKCk7CisrfQorKworKworIC8qIFJlbG9hZCBzaGFyZWQgbGlicmFyaWVzLCBidXQg YXZvaWQgcmVsb2FkaW5nIHRoZSBzYW1lIHN5bWJvbCBmaWxlCisgICAgd2UgYWxyZWFkeSBoYXZl IGxvYWRlZC4gICovCisgCitJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvc29saXN0LmgK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy40LjkxLjIwMTIwODE0Lm9yaWcvZ2RiL3NvbGlzdC5oCTIw MTItMDEtMDQgMDk6MTc6MTEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC45MS4yMDEyMDgx NC9nZGIvc29saXN0LmgJMjAxMi0wOC0xNCAxNzozNDo0NC4yNzM3NDY1ODQgKzAyMDAKK0BAIC0y Myw2ICsyMyw4IEBACisgI2RlZmluZSBTT19OQU1FX01BWF9QQVRIX1NJWkUgNTEyCS8qIEZJWE1F OiBTaG91bGQgYmUgZHluYW1pYyAqLworIC8qIEZvciBkb21haW5fZW51bSBkb21haW4uICAqLwor ICNpbmNsdWRlICJzeW10YWIuaCIKKysvKiBGb3IgYnBzdGF0LiAgKi8KKysjaW5jbHVkZSAiYnJl YWtwb2ludC5oIgorIAorIC8qIEZvcndhcmQgZGVjbGFyYXRpb24gZm9yIHRhcmdldCBzcGVjaWZp YyBsaW5rIG1hcCBpbmZvcm1hdGlvbi4gIFRoaXMKKyAgICBzdHJ1Y3QgaXMgb3BhcXVlIHRvIGFs bCBidXQgdGhlIHRhcmdldCBzcGVjaWZpYyBmaWxlLiAgKi8KK0BAIC0xNDksNiArMTUxLDIwIEBA IHN0cnVjdCB0YXJnZXRfc29fb3BzCisgICAgICAgIGNvcmUgZmlsZSAoaW4gcGFydGljdWxhciwg Zm9yIHJlYWRvbmx5IHNlY3Rpb25zKS4gICovCisgICAgIGludCAoKmtlZXBfZGF0YV9pbl9jb3Jl KSAoQ09SRV9BRERSIHZhZGRyLAorIAkJCSAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CisrCisr ICAgIC8qIFRhcmdldC1zcGVjaWZpYyBoYW5kbGluZyBvZiBzb2xpYiBldmVudHMuICBGb3IgdGFy Z2V0cyB3aGljaAorKyAgICAgICBoYW5kbGUgc29saWIgZXZlbnRzIHVzaW5nIGJyZWFrcG9pbnRz IGEgdmFsaWQgYnBzdGF0IG11c3QgYmUKKysgICAgICAgcGFzc2VkLiAgVGFyZ2V0cyB3aGljaCBo YW5kbGUgc29saWIgZXZlbnRzIHVzaW5nIHNvbWUgb3RoZXIKKysgICAgICAgbWVjaGFuaXNtIHNo b3VsZCBwYXNzIE5VTEwuICBUaGlzIHBvaW50ZXIgY2FuIGJlIE5VTEwsIGluIHdoaWNoCisrICAg ICAgIGNhc2Ugbm8gc3BlY2lmaWMgaGFuZGxpbmcgaXMgbmVjZXNzYXJ5IGZvciB0aGlzIHRhcmdl dC4gICovCisrICAgIHZvaWQgKCpoYW5kbGVfc29saWJfZXZlbnQpIChicHN0YXQgYnMpOworKwor KyAgICAvKiBFbmFibGUgb3IgZGlzYWJsZSBvcHRpb25hbCBzb2xpYiBldmVudCBicmVha3BvaW50 cyBhcworKyAgICAgICBhcHByb3ByaWF0ZS4gIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCB3aGVuZXZl cgorKyAgICAgICBzdG9wX29uX3NvbGliX2V2ZW50cyBpcyBjaGFuZ2VkLiAgVGhpcyBwb2ludGVy IGNhbiBiZQorKyAgICAgICBOVUxMLCBpbiB3aGljaCBjYXNlIG5vIGVuYWJsaW5nIG9yIGRpc2Fi bGluZyBpcyBuZWNlc3NhcnkKKysgICAgICAgZm9yIHRoaXMgdGFyZ2V0LiAgKi8KKysgICAgdm9p ZCAoKnVwZGF0ZV9icmVha3BvaW50cykgKHZvaWQpOworICAgfTsKKyAKKyAvKiBGcmVlIHRoZSBt ZW1vcnkgYXNzb2NpYXRlZCB3aXRoIGEgKHNvX2xpc3QgKikuICAqLworSW5kZXg6IGdkYi03LjQu OTEuMjAxMjA4MTQvZ2RiL2luZnJ1bi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC45MS4yMDEy MDgxNC5vcmlnL2dkYi9pbmZydW4uYwkyMDEyLTA4LTE0IDE3OjMzOjE2LjI0OTk1NTAwNyArMDIw MAorKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL2luZnJ1bi5jCTIwMTItMDgtMTQgMTc6MzQ6 NDQuMjc2NzQ2NTgzICswMjAwCitAQCAtMzYxLDYgKzM2MSwxNiBAQCBzdGF0aWMgc3RydWN0IHN5 bWJvbCAqc3RlcF9zdGFydF9mdW5jdGlvCisgLyogTm9uemVybyBpZiB3ZSB3YW50IHRvIGdpdmUg Y29udHJvbCB0byB0aGUgdXNlciB3aGVuIHdlJ3JlIG5vdGlmaWVkCisgICAgb2Ygc2hhcmVkIGxp YnJhcnkgZXZlbnRzIGJ5IHRoZSBkeW5hbWljIGxpbmtlci4gICovCisgaW50IHN0b3Bfb25fc29s aWJfZXZlbnRzOworKworKy8qIEVuYWJsZSBvciBkaXNhYmxlIG9wdGlvbmFsIHNoYXJlZCBsaWJy YXJ5IGV2ZW50IGJyZWFrcG9pbnRzCisrICAgYXMgYXBwcm9wcmlhdGUgd2hlbiB0aGUgYWJvdmUg ZmxhZyBpcyBjaGFuZ2VkLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3NldF9zdG9wX29uX3NvbGli X2V2ZW50cyAoY2hhciAqYXJncywgaW50IGZyb21fdHR5LCBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVu dCAqYykKKyt7CisrICB1cGRhdGVfc29saWJfYnJlYWtwb2ludHMgKCk7CisrfQorKworIHN0YXRp YyB2b2lkCisgc2hvd19zdG9wX29uX3NvbGliX2V2ZW50cyAoc3RydWN0IHVpX2ZpbGUgKmZpbGUs IGludCBmcm9tX3R0eSwKKyAJCQkgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3Qg Y2hhciAqdmFsdWUpCitAQCAtMzMyMSw3ICszMzMxLDcgQEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50 IChzdHJ1Y3QgZXhlY3V0aW9uXworIAkgICAgY29udGV4dF9zd2l0Y2ggKGVjcy0+cHRpZCk7Cisg CSAgcmVnY2FjaGUgPSBnZXRfdGhyZWFkX3JlZ2NhY2hlIChlY3MtPnB0aWQpOworIAorLQkgIGhh bmRsZV9zb2xpYl9ldmVudCAoKTsKKysJICBoYW5kbGVfc29saWJfZXZlbnQgKE5VTEwpOworIAor IAkgIGVjcy0+ZXZlbnRfdGhyZWFkLT5jb250cm9sLnN0b3BfYnBzdGF0CisgCSAgICA9IGJwc3Rh dF9zdG9wX3N0YXR1cyAoZ2V0X3JlZ2NhY2hlX2FzcGFjZSAocmVnY2FjaGUpLAorQEAgLTcyMjYs NyArNzIzNiw3IEBAIFNob3cgc3RvcHBpbmcgZm9yIHNoYXJlZCBsaWJyYXJ5IGV2ZW50cy4KKyBJ ZiBub256ZXJvLCBnZGIgd2lsbCBnaXZlIGNvbnRyb2wgdG8gdGhlIHVzZXIgd2hlbiB0aGUgZHlu YW1pYyBsaW5rZXJcblwKKyBub3RpZmllcyBnZGIgb2Ygc2hhcmVkIGxpYnJhcnkgZXZlbnRzLiAg VGhlIG1vc3QgY29tbW9uIGV2ZW50IG9mIGludGVyZXN0XG5cCisgdG8gdGhlIHVzZXIgd291bGQg YmUgbG9hZGluZy91bmxvYWRpbmcgb2YgYSBuZXcgbGlicmFyeS4iKSwKKy0JCQkgICAgTlVMTCwK KysJCQkgICAgc2V0X3N0b3Bfb25fc29saWJfZXZlbnRzLAorIAkJCSAgICBzaG93X3N0b3Bfb25f c29saWJfZXZlbnRzLAorIAkJCSAgICAmc2V0bGlzdCwgJnNob3dsaXN0KTsKKyAKK0luZGV4OiBn ZGItNy40LjkxLjIwMTIwODE0L2dkYi9zb2xpYi1zdnI0LmMKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGIt Ny40LjkxLjIwMTIwODE0Lm9yaWcvZ2RiL3NvbGliLXN2cjQuYwkyMDEyLTA4LTE0IDE3OjM0OjM5 LjM0Njc1Mjg0MCArMDIwMAorKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3NvbGliLXN2cjQu YwkyMDEyLTA4LTE0IDE3OjM1OjQyLjYzNTczMjU5NiArMDIwMAorQEAgLTQ3LDEwICs0NywxMiBA QAorICNpbmNsdWRlICJhdXh2LmgiCisgI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKKyAjaW5jbHVk ZSAiZ2RiX2JmZC5oIgorKyNpbmNsdWRlICJwcm9iZS5oIgorIAorIHN0YXRpYyBzdHJ1Y3QgbGlu a19tYXBfb2Zmc2V0cyAqc3ZyNF9mZXRjaF9saW5rX21hcF9vZmZzZXRzICh2b2lkKTsKKyBzdGF0 aWMgaW50IHN2cjRfaGF2ZV9saW5rX21hcF9vZmZzZXRzICh2b2lkKTsKKyBzdGF0aWMgdm9pZCBz dnI0X3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSAodm9pZCk7Cisrc3RhdGljIHN0cnVjdCBzb19s aXN0ICpuYW1lc3BhY2VfdGFibGVfZmxhdHRlbiAoaHRhYl90IG5hbWVzcGFjZV90YWJsZSk7Cisg CisgLyogTGluayBtYXAgaW5mbyB0byBpbmNsdWRlIGluIGFuIGFsbG9jYXRlZCBzb19saXN0IGVu dHJ5LiAgKi8KKyAKK0BAIC03MSw2ICs3MywxNiBAQCBzdHJ1Y3QgbG1faW5mbworIAorICAgICAv KiBWYWx1ZXMgcmVhZCBpbiBmcm9tIGluZmVyaW9yJ3MgZmllbGRzIG9mIHRoZSBzYW1lIG5hbWUu ICAqLworICAgICBDT1JFX0FERFIgbF9sZCwgbF9uZXh0LCBsX3ByZXYsIGxfbmFtZTsKKysKKysg ICAgLyogTnVtZXJpYyBsaW5rLW1hcCBJRCBvZiB0aGUgbmFtZXNwYWNlIHRoaXMgb2JqZWN0IGlz IGxvYWRlZAorKyAgICAgICBpbnRvLiAgVGhpcyB2YWx1ZSBpcyBvbmx5IHZhbGlkIHdoZW4gdXNp bmcgdGhlIHByb2Jlcy1iYXNlZAorKyAgICAgICBpbnRlcmZhY2UuICAqLworKyAgICBMT05HRVNU IGxtaWQ7CisrCisrICAgIC8qIE5vbnplcm8gaWYgdGhlIG5hbWVzcGFjZSBsaXN0IHRoaXMgb2Jq ZWN0IGlzIGxvYWRlZCBpbnRvIGlzIHRoZQorKyAgICAgICBhcHBsaWNhdGlvbidzIGluaXRpYWwg bmFtZXNwYWNlIChMTV9JRF9CQVNFKS4gIFRoaXMgdmFsdWUgaXMKKysgICAgICAgb25seSB2YWxp ZCB3aGVuIHVzaW5nIHRoZSBwcm9iZXMtYmFzZWQgaW50ZXJmYWNlLiAgKi8KKysgICAgdW5zaWdu ZWQgaW50IGluX2luaXRpYWxfbnMgOiAxOworICAgfTsKKyAKKyAvKiBPbiBTVlI0IHN5c3RlbXMs IGEgbGlzdCBvZiBzeW1ib2xzIGluIHRoZSBkeW5hbWljIGxpbmtlciB3aGVyZQorQEAgLTEwNyw2 ICsxMTksNTMgQEAgc3RhdGljIGNvbnN0ICBjaGFyICogY29uc3QgbWFpbl9uYW1lX2xpcworICAg TlVMTAorIH07CisgCisrLyogV2hhdCB0byBkbyB3aXRoIHRoZSBuYW1lc3BhY2UgdGFibGUgd2hl biBhIHByb2JlIHN0b3Agb2NjdXJzLiAgKi8KKysKKytlbnVtIHByb2JlX2FjdGlvbgorKyAgewor KyAgICAvKiBTb21ldGhpbmcgd2VudCBzZXJpb3VzbHkgd3JvbmcuICBTdG9wIHVzaW5nIHByb2Jl cyBhbmQKKysgICAgICAgcmV2ZXJ0IHRvIHVzaW5nIHRoZSBvbGRlciBpbnRlcmZhY2UuICAqLwor KyAgICBOQU1FU1BBQ0VfVEFCTEVfSU5WQUxJREFURSwKKysKKysgICAgLyogTm8gYWN0aW9uIGlz IHJlcXVpcmVkLiAgVGhpcyBuYW1lc3BhY2UgaXMgc3RpbGwgdmFsaWQuICAqLworKyAgICBOQU1F U1BBQ0VfTk9fQUNUSU9OLAorKworKyAgICAvKiBUaGlzIG5hbWVzcGFjZSBzaG91bGQgYmUgcmVs b2FkZWQgZW50aXJlbHkuICAqLworKyAgICBOQU1FU1BBQ0VfUkVMT0FELAorKworKyAgICAvKiBB dHRlbXB0IHRvIGluY3JlbWVudGFsbHkgdXBkYXRlIHRoaXMgbmFtZXNwYWNlLiBJZiB0aGUKKysg ICAgICAgdXBkYXRlIGZhaWxzIG9yIGlzIG5vdCBwb3NzaWJsZSwgZmFsbCBiYWNrIHRvIHJlbG9h ZGluZworKyAgICAgICB0aGUgbmFtZXNwYWNlIGluIGZ1bGwuICAqLworKyAgICBOQU1FU1BBQ0Vf VVBEQVRFX09SX1JFTE9BRCwKKysgIH07CisrCisrLyogQSBwcm9iZSdzIG5hbWUgYW5kIGl0cyBh c3NvY2lhdGVkIGFjdGlvbi4gICovCisrCisrc3RydWN0IHByb2JlX2luZm8KKyt7CisrICAvKiBU aGUgbmFtZSBvZiB0aGUgcHJvYmUuICAqLworKyAgY29uc3QgY2hhciAqbmFtZTsKKysKKysgIC8q IFdoYXQgdG8gZG8gd2l0aCB0aGUgbmFtZXNwYWNlIHRhYmxlIHdoZW4gYSBwcm9iZSBzdG9wIG9j Y3Vycy4gICovCisrICBlbnVtIHByb2JlX2FjdGlvbiBhY3Rpb247CisrfTsKKysKKysvKiBBIGxp c3Qgb2YgbmFtZWQgcHJvYmVzIGFuZCB0aGVpciBhc3NvY2lhdGVkIGFjdGlvbnMuICBJZiBhbGwK KysgICBwcm9iZXMgYXJlIHByZXNlbnQgaW4gdGhlIGR5bmFtaWMgbGlua2VyIHRoZW4gdGhlIHBy b2Jlcy1iYXNlZAorKyAgIGludGVyZmFjZSB3aWxsIGJlIHVzZWQuICAqLworKworK3N0YXRpYyBj b25zdCBzdHJ1Y3QgcHJvYmVfaW5mbyBwcm9iZV9pbmZvW10gPQorK3sKKysgIHsgImluaXRfc3Rh cnQiLCBOQU1FU1BBQ0VfTk9fQUNUSU9OIH0sCisrICB7ICJpbml0X2NvbXBsZXRlIiwgTkFNRVNQ QUNFX1JFTE9BRCB9LAorKyAgeyAibWFwX3N0YXJ0IiwgTkFNRVNQQUNFX05PX0FDVElPTiB9LAor KyAgeyAicmVsb2NfY29tcGxldGUiLCBOQU1FU1BBQ0VfVVBEQVRFX09SX1JFTE9BRCB9LAorKyAg eyAidW5tYXBfc3RhcnQiLCBOQU1FU1BBQ0VfTk9fQUNUSU9OIH0sCisrICB7ICJ1bm1hcF9jb21w bGV0ZSIsIE5BTUVTUEFDRV9SRUxPQUQgfSwKKyt9OworKworKyNkZWZpbmUgTlVNX1BST0JFUyBB UlJBWV9TSVpFIChwcm9iZV9pbmZvKQorKworIC8qIFBlciBwc3BhY2UgU1ZSNCBzcGVjaWZpYyBk YXRhLiAgKi8KKyAKKyBzdHJ1Y3Qgc3ZyNF9pbmZvCitAQCAtMTI5LDE3ICsxODgsNTggQEAgc3Ry dWN0IHN2cjRfaW5mbworICAgQ09SRV9BRERSIGludGVycF90ZXh0X3NlY3RfaGlnaDsKKyAgIENP UkVfQUREUiBpbnRlcnBfcGx0X3NlY3RfbG93OworICAgQ09SRV9BRERSIGludGVycF9wbHRfc2Vj dF9oaWdoOworKworKyAgLyogTm9uemVybyBpZiB3ZSBhcmUgdXNpbmcgdGhlIHByb2Jlcy1iYXNl ZCBpbnRlcmZhY2UuICAqLworKyAgdW5zaWduZWQgaW50IHVzaW5nX3Byb2JlcyA6IDE7CisrCisr ICAvKiBOYW1lZCBwcm9iZXMgaW4gdGhlIGR5bmFtaWMgbGlua2VyLiAgKi8KKysgIFZFQyAocHJv YmVfcCkgKnByb2Jlc1tOVU1fUFJPQkVTXTsKKysKKysgIC8qIFRhYmxlIG9mIGR5bmFtaWMgbGlu a2VyIG5hbWVzcGFjZXMsIHVzZWQgYnkgdGhlIHByb2Jlcy1iYXNlZAorKyAgICAgaW50ZXJmYWNl LiAgKi8KKysgIGh0YWJfdCBuYW1lc3BhY2VfdGFibGU7CisgfTsKKyAKKyAvKiBQZXItcHJvZ3Jh bS1zcGFjZSBkYXRhIGtleS4gICovCisgc3RhdGljIGNvbnN0IHN0cnVjdCBwcm9ncmFtX3NwYWNl X2RhdGEgKnNvbGliX3N2cjRfcHNwYWNlX2RhdGE7CisgCisrLyogRnJlZSBhbnkgYWxsb2NhdGVk IHByb2JlIHZlY3RvcnMuICAqLworKworK3N0YXRpYyB2b2lkCisrZnJlZV9wcm9iZXMgKHN0cnVj dCBzdnI0X2luZm8gKmluZm8pCisreworKyAgaW50IGk7CisrCisrICBmb3IgKGkgPSAwOyBpIDwg TlVNX1BST0JFUzsgaSsrKQorKyAgICBWRUNfZnJlZSAocHJvYmVfcCwgaW5mby0+cHJvYmVzW2ld KTsKKysKKysgIG1lbXNldCAoaW5mby0+cHJvYmVzLCAwLCBzaXplb2YgKGluZm8tPnByb2Jlcykp OworK30KKysKKysvKiBGcmVlIHRoZSBuYW1lc3BhY2UgdGFibGUuICAqLworKworK3N0YXRpYyB2 b2lkCisrZnJlZV9uYW1lc3BhY2VfdGFibGUgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8pCisrewor KyAgaWYgKGluZm8tPm5hbWVzcGFjZV90YWJsZSA9PSBOVUxMKQorKyAgICByZXR1cm47CisrCisr ICBodGFiX2RlbGV0ZSAoaW5mby0+bmFtZXNwYWNlX3RhYmxlKTsKKysgIGluZm8tPm5hbWVzcGFj ZV90YWJsZSA9IE5VTEw7CisrfQorKworIHN0YXRpYyB2b2lkCisgc3ZyNF9wc3BhY2VfZGF0YV9j bGVhbnVwIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlLCB2b2lkICphcmcpCisgeworICAg c3RydWN0IHN2cjRfaW5mbyAqaW5mbzsKKyAKKyAgIGluZm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEg KHBzcGFjZSwgc29saWJfc3ZyNF9wc3BhY2VfZGF0YSk7CisrICBpZiAoaW5mbyA9PSBOVUxMKQor KyAgICByZXR1cm47CisrCisrICBmcmVlX3Byb2JlcyAoaW5mbyk7CisrICBmcmVlX25hbWVzcGFj ZV90YWJsZSAoaW5mbyk7CisrCisgICB4ZnJlZSAoaW5mbyk7CisgfQorIAorQEAgLTE4OCwxMCAr Mjg4LDIxIEBAIHN2cjRfc2FtZV8xIChjb25zdCBjaGFyICpnZGJfc29fbmFtZSwgY28KKyAgIHJl dHVybiAwOworIH0KKyAKKysvKiBSZXR1cm4gbm9uLXplcm8gaWYgR0RCIGFuZCBJTkZFUklPUiBy ZXByZXNlbnQgdGhlIHNhbWUgc2hhcmVkCisrICAgbGlicmFyeS4gICovCisrCisgc3RhdGljIGlu dAorIHN2cjRfc2FtZSAoc3RydWN0IHNvX2xpc3QgKmdkYiwgc3RydWN0IHNvX2xpc3QgKmluZmVy aW9yKQorIHsKKy0gIHJldHVybiAoc3ZyNF9zYW1lXzEgKGdkYi0+c29fb3JpZ2luYWxfbmFtZSwg aW5mZXJpb3ItPnNvX29yaWdpbmFsX25hbWUpKTsKKysgIHN0cnVjdCBzdnI0X2luZm8gKmluZm8g PSBnZXRfc3ZyNF9pbmZvICgpOworKworKyAgaWYgKGluZm8tPnVzaW5nX3Byb2JlcykKKysgICAg eworKyAgICAgIGlmIChnZGItPmxtX2luZm8tPmxtaWQgIT0gaW5mZXJpb3ItPmxtX2luZm8tPmxt aWQpCisrCXJldHVybiAwOworKyAgICB9CisrCisrICByZXR1cm4gc3ZyNF9zYW1lXzEgKGdkYi0+ c29fb3JpZ2luYWxfbmFtZSwgaW5mZXJpb3ItPnNvX29yaWdpbmFsX25hbWUpOworIH0KKyAKKyBz dGF0aWMgc3RydWN0IGxtX2luZm8gKgorQEAgLTMyMiwxOCArNDMzLDI2IEBAIGxtX2FkZHJfY2hl Y2sgKHN0cnVjdCBzb19saXN0ICpzbywgYmZkICoKKyAJICAgIH0KKyAJICBlbHNlCisgCSAgICB7 CistCSAgICAgIC8qIFRoZXJlIGlzIG5vIHdheSB0byB2ZXJpZnkgdGhlIGxpYnJhcnkgZmlsZSBt YXRjaGVzLiAgcHJlbGluaworLQkJIGNhbiBkdXJpbmcgcHJlbGlua2luZyBvZiBhbiB1bnByZWxp bmtlZCBmaWxlIChvciB1bnByZWxpbmtpbmcKKy0JCSBvZiBhIHByZWxpbmtlZCBmaWxlKSBzaGlm dCB0aGUgRFlOQU1JQyBzZWdtZW50IGJ5IGFyYml0cmFyeQorLQkJIG9mZnNldCB3aXRob3V0IGFu eSBwYWdlIHNpemUgYWxpZ25tZW50LiAgVGhlcmUgaXMgbm8gd2F5IHRvCistCQkgZmluZCBvdXQg dGhlIEVMRiBoZWFkZXIgYW5kL29yIFByb2dyYW0gSGVhZGVycyBmb3IgYSBsaW1pdGVkCistCQkg dmVyaWZpY2F0aW9uIGlmIGl0IHRoZXkgbWF0Y2guICBPbmUgY291bGQgZG8gYSB2ZXJpZmljYXRp b24KKy0JCSBvZiB0aGUgRFlOQU1JQyBzZWdtZW50LiAgU3RpbGwgdGhlIGZvdW5kIGFkZHJlc3Mg aXMgdGhlIGJlc3QKKy0JCSBvbmUgR0RCIGNvdWxkIGZpbmQuICAqLworLQorLQkgICAgICB3YXJu aW5nIChfKCIuZHluYW1pYyBzZWN0aW9uIGZvciBcIiVzXCIgIgorLQkJCSAiaXMgbm90IGF0IHRo ZSBleHBlY3RlZCBhZGRyZXNzICIKKy0JCQkgIih3cm9uZyBsaWJyYXJ5IG9yIHZlcnNpb24gbWlz bWF0Y2g/KSIpLCBzby0+c29fbmFtZSk7CisrCSAgICAgIHN0cnVjdCBzdnI0X2luZm8gKmluZm8g PSBnZXRfc3ZyNF9pbmZvICgpOworKworKwkgICAgICBpZiAoIWluZm8tPnVzaW5nX3Byb2JlcyB8 fCBzby0+bG1faW5mby0+aW5faW5pdGlhbF9ucykKKysJCXsKKysJCSAgLyogVGhlcmUgaXMgbm8g d2F5IHRvIHZlcmlmeSB0aGUgbGlicmFyeSBmaWxlCisrCQkgICAgIG1hdGNoZXMuICBwcmVsaW5r IGNhbiBkdXJpbmcgcHJlbGlua2luZyBvZiBhbgorKwkJICAgICB1bnByZWxpbmtlZCBmaWxlIChv ciB1bnByZWxpbmtpbmcgb2YgYSBwcmVsaW5rZWQKKysJCSAgICAgZmlsZSkgc2hpZnQgdGhlIERZ TkFNSUMgc2VnbWVudCBieSBhcmJpdHJhcnkKKysJCSAgICAgb2Zmc2V0IHdpdGhvdXQgYW55IHBh Z2Ugc2l6ZSBhbGlnbm1lbnQuICBUaGVyZSBpcworKwkJICAgICBubyB3YXkgdG8gZmluZCBvdXQg dGhlIEVMRiBoZWFkZXIgYW5kL29yIFByb2dyYW0KKysJCSAgICAgSGVhZGVycyBmb3IgYSBsaW1p dGVkIHZlcmlmaWNhdGlvbiBpZiBpdCB0aGV5CisrCQkgICAgIG1hdGNoLiAgT25lIGNvdWxkIGRv IGEgdmVyaWZpY2F0aW9uIG9mIHRoZQorKwkJICAgICBEWU5BTUlDIHNlZ21lbnQuICBTdGlsbCB0 aGUgZm91bmQgYWRkcmVzcyBpcyB0aGUKKysJCSAgICAgYmVzdCBvbmUgR0RCIGNvdWxkIGZpbmQu ICAqLworKworKwkJICB3YXJuaW5nIChfKCIuZHluYW1pYyBzZWN0aW9uIGZvciBcIiVzXCIgIgor KwkJCSAgICAgImlzIG5vdCBhdCB0aGUgZXhwZWN0ZWQgYWRkcmVzcyAiCisrCQkJICAgICAiKHdy b25nIGxpYnJhcnkgb3IgdmVyc2lvbiBtaXNtYXRjaD8pIiksCisrCQkJICAgc28tPnNvX25hbWUp OworKwkJfQorIAkgICAgfQorIAl9CisgCitAQCAtNzc1LDE2ICs4OTQsMTAgQEAgbG9jYXRlX2Jh c2UgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8pCisgICByZXR1cm4gaW5mby0+ZGVidWdfYmFzZTsK KyB9CisgCistLyogRmluZCB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgaW5mZXJpb3IncyBkeW5h bWljIGxpbmsgbWFwLCBhbmQKKy0gICByZXR1cm4gaXRzIGFkZHJlc3MgaW4gdGhlIGluZmVyaW9y LiAgUmV0dXJuIHplcm8gaWYgdGhlIGFkZHJlc3MKKy0gICBjb3VsZCBub3QgYmUgZGV0ZXJtaW5l ZC4KKy0KKy0gICBGSVhNRTogUGVyaGFwcyB3ZSBzaG91bGQgdmFsaWRhdGUgdGhlIGluZm8gc29t ZWhvdywgcGVyaGFwcyBieQorLSAgIGNoZWNraW5nIHJfdmVyc2lvbiBmb3IgYSBrbm93biB2ZXJz aW9uIG51bWJlciwgb3Igcl9zdGF0ZSBmb3IKKy0gICBSVF9DT05TSVNURU5ULiAgKi8KKysvKiBS ZWFkIHRoZSByX21hcCBmaWVsZCBmcm9tIHRoZSBzdXBwbGllZCByX2RlYnVnIHN0cnVjdHVyZS4g ICovCisgCisgc3RhdGljIENPUkVfQUREUgorLXNvbGliX3N2cjRfcl9tYXAgKHN0cnVjdCBzdnI0 X2luZm8gKmluZm8pCisrcl9tYXBfZnJvbV9kZWJ1Z19iYXNlIChDT1JFX0FERFIgZGVidWdfYmFz ZSkKKyB7CisgICBzdHJ1Y3QgbGlua19tYXBfb2Zmc2V0cyAqbG1vID0gc3ZyNF9mZXRjaF9saW5r X21hcF9vZmZzZXRzICgpOworICAgc3RydWN0IHR5cGUgKnB0cl90eXBlID0gYnVpbHRpbl90eXBl ICh0YXJnZXRfZ2RiYXJjaCktPmJ1aWx0aW5fZGF0YV9wdHI7CitAQCAtNzkzLDEzICs5MDYsMjcg QEAgc29saWJfc3ZyNF9yX21hcCAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbworIAorICAgVFJZX0NB VENIIChleCwgUkVUVVJOX01BU0tfRVJST1IpCisgICAgIHsKKy0gICAgICBhZGRyID0gcmVhZF9t ZW1vcnlfdHlwZWRfYWRkcmVzcyAoaW5mby0+ZGVidWdfYmFzZSArIGxtby0+cl9tYXBfb2Zmc2V0 LAorKyAgICAgIGFkZHIgPSByZWFkX21lbW9yeV90eXBlZF9hZGRyZXNzIChkZWJ1Z19iYXNlICsg bG1vLT5yX21hcF9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHB0cl90eXBlKTsKKyAgICAgfQorICAgZXhjZXB0aW9uX3ByaW50IChnZGJfc3RkZXJyLCBl eCk7CisgICByZXR1cm4gYWRkcjsKKyB9CisgCisrLyogRmluZCB0aGUgZmlyc3QgZWxlbWVudCBp biB0aGUgaW5mZXJpb3IncyBkeW5hbWljIGxpbmsgbWFwLCBhbmQKKysgICByZXR1cm4gaXRzIGFk ZHJlc3MgaW4gdGhlIGluZmVyaW9yLiAgUmV0dXJuIHplcm8gaWYgdGhlIGFkZHJlc3MKKysgICBj b3VsZCBub3QgYmUgZGV0ZXJtaW5lZC4KKysKKysgICBGSVhNRTogUGVyaGFwcyB3ZSBzaG91bGQg dmFsaWRhdGUgdGhlIGluZm8gc29tZWhvdywgcGVyaGFwcyBieQorKyAgIGNoZWNraW5nIHJfdmVy c2lvbiBmb3IgYSBrbm93biB2ZXJzaW9uIG51bWJlciwgb3Igcl9zdGF0ZSBmb3IKKysgICBSVF9D T05TSVNURU5ULiAgKi8KKysKKytzdGF0aWMgQ09SRV9BRERSCisrc29saWJfc3ZyNF9yX21hcCAo c3RydWN0IHN2cjRfaW5mbyAqaW5mbykKKyt7CisrICByZXR1cm4gcl9tYXBfZnJvbV9kZWJ1Z19i YXNlIChpbmZvLT5kZWJ1Z19iYXNlKTsKKyt9CisrCisgLyogRmluZCByX2JyayBmcm9tIHRoZSBp bmZlcmlvcidzIGRlYnVnIGJhc2UuICAqLworIAorIHN0YXRpYyBDT1JFX0FERFIKK0BAIC0xMTY0 LDE1ICsxMjkxLDE3IEBAIHN2cjRfZGVmYXVsdF9zb3MgKHZvaWQpCisgICByZXR1cm4gbmV3Owor IH0KKyAKKy0vKiBSZWFkIHRoZSB3aG9sZSBpbmZlcmlvciBsaWJyYXJpZXMgY2hhaW4gc3RhcnRp bmcgYXQgYWRkcmVzcyBMTS4gIEFkZCB0aGUKKy0gICBlbnRyaWVzIHRvIHRoZSB0YWlsIHJlZmVy ZW5jZWQgYnkgTElOS19QVFJfUFRSLiAgSWdub3JlIHRoZSBmaXJzdCBlbnRyeSBpZgorLSAgIElH Tk9SRV9GSVJTVCBhbmQgc2V0IGdsb2JhbCBNQUlOX0xNX0FERFIgYWNjb3JkaW5nIHRvIGl0LiAg Ki8KKysvKiBSZWFkIHRoZSB3aG9sZSBpbmZlcmlvciBsaWJyYXJpZXMgY2hhaW4gc3RhcnRpbmcg YXQgYWRkcmVzcyBMTS4KKysgICBFeHBlY3QgdGhlIGZpcnN0IGVudHJ5IGluIHRoZSBjaGFpbidz IHByZXZpb3VzIGVudHJ5IHRvIGJlIFBSRVZfTE0uCisrICAgQWRkIHRoZSBlbnRyaWVzIHRvIHRo ZSB0YWlsIHJlZmVyZW5jZWQgYnkgTElOS19QVFJfUFRSLiAgSWdub3JlIHRoZQorKyAgIGZpcnN0 IGVudHJ5IGlmIElHTk9SRV9GSVJTVCBhbmQgc2V0IGdsb2JhbCBNQUlOX0xNX0FERFIgYWNjb3Jk aW5nCisrICAgdG8gaXQuICBSZXR1cm5zIG5vbnplcm8gdXBvbiBzdWNjZXNzLiAgKi8KKyAKKy1z dGF0aWMgdm9pZAorLXN2cjRfcmVhZF9zb19saXN0IChDT1JFX0FERFIgbG0sIHN0cnVjdCBzb19s aXN0ICoqKmxpbmtfcHRyX3B0ciwKKy0JCSAgIGludCBpZ25vcmVfZmlyc3QpCisrc3RhdGljIGlu dAorK3N2cjRfcmVhZF9zb19saXN0IChDT1JFX0FERFIgbG0sIENPUkVfQUREUiBwcmV2X2xtLAor KwkJICAgc3RydWN0IHNvX2xpc3QgKioqbGlua19wdHJfcHRyLCBpbnQgaWdub3JlX2ZpcnN0KQor IHsKKy0gIENPUkVfQUREUiBwcmV2X2xtID0gMCwgbmV4dF9sbTsKKysgIENPUkVfQUREUiBuZXh0 X2xtOworIAorICAgZm9yICg7IGxtICE9IDA7IHByZXZfbG0gPSBsbSwgbG0gPSBuZXh0X2xtKQor ICAgICB7CitAQCAtMTE4OSw3ICsxMzE4LDcgQEAgc3ZyNF9yZWFkX3NvX2xpc3QgKENPUkVfQURE UiBsbSwgc3RydWN0CisgICAgICAgaWYgKG5ldy0+bG1faW5mbyA9PSBOVUxMKQorIAl7CisgCSAg ZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CistCSAgYnJlYWs7CisrCSAgcmV0dXJuIDA7CisgCX0K KyAKKyAgICAgICBuZXh0X2xtID0gbmV3LT5sbV9pbmZvLT5sX25leHQ7CitAQCAtMTIwMCw3ICsx MzI5LDcgQEAgc3ZyNF9yZWFkX3NvX2xpc3QgKENPUkVfQUREUiBsbSwgc3RydWN0CisgCQkgICBw YWRkcmVzcyAodGFyZ2V0X2dkYmFyY2gsIHByZXZfbG0pLAorIAkJICAgcGFkZHJlc3MgKHRhcmdl dF9nZGJhcmNoLCBuZXctPmxtX2luZm8tPmxfcHJldikpOworIAkgIGRvX2NsZWFudXBzIChvbGRf Y2hhaW4pOworLQkgIGJyZWFrOworKwkgIHJldHVybiAwOworIAl9CisgCisgICAgICAgLyogRm9y IFNWUjQgdmVyc2lvbnMsIHRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgbGluayBtYXAgaXMgZm9yIHRo ZQorQEAgLTEyOTUsMjAgKzE0MjQsNjEgQEAgc3ZyNF9yZWFkX3NvX2xpc3QgKENPUkVfQUREUiBs bSwgc3RydWN0CisgICAgICAgKipsaW5rX3B0cl9wdHIgPSBuZXc7CisgICAgICAgKmxpbmtfcHRy X3B0ciA9ICZuZXctPm5leHQ7CisgICAgIH0KKysKKysgIHJldHVybiAxOworIH0KKyAKKy0vKiBJ bXBsZW1lbnQgdGhlICJjdXJyZW50X3NvcyIgdGFyZ2V0X3NvX29wcyBtZXRob2QuICAqLworKy8q IFJlYWQgdGhlIGxpc3Qgb2YgbG9hZGVkIGxpYnJhcmllcyBmcm9tIHRoZSBkeW5hbWljIGxpbmtl cidzIGJhc2UKKysgICBzdHJ1Y3R1cmUuICAqLworIAorIHN0YXRpYyBzdHJ1Y3Qgc29fbGlzdCAq Cistc3ZyNF9jdXJyZW50X3NvcyAodm9pZCkKKytzdnI0X2N1cnJlbnRfc29zX2Zyb21fZGVidWdf YmFzZSAodm9pZCkKKyB7CisrICBzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvID0gZ2V0X3N2cjRfaW5m byAoKTsKKyAgIENPUkVfQUREUiBsbTsKKyAgIHN0cnVjdCBzb19saXN0ICpoZWFkID0gTlVMTDsK KyAgIHN0cnVjdCBzb19saXN0ICoqbGlua19wdHIgPSAmaGVhZDsKKy0gIHN0cnVjdCBzdnI0X2lu Zm8gKmluZm87CisgICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKKyAgIGludCBpZ25vcmVfZmly c3Q7CisrCisrICBnZGJfYXNzZXJ0IChpbmZvLT5kZWJ1Z19iYXNlKTsKKysKKysgIC8qIEFzc3Vt ZSB0aGF0IGV2ZXJ5dGhpbmcgaXMgYSBsaWJyYXJ5IGlmIHRoZSBkeW5hbWljIGxvYWRlciB3YXMg bG9hZGVkCisrICAgICBsYXRlIGJ5IGEgc3RhdGljIGV4ZWN1dGFibGUuICAqLworKyAgaWYgKGV4 ZWNfYmZkICYmIGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChleGVjX2JmZCwgIi5keW5hbWljIikg PT0gTlVMTCkKKysgICAgaWdub3JlX2ZpcnN0ID0gMDsKKysgIGVsc2UKKysgICAgaWdub3JlX2Zp cnN0ID0gMTsKKysKKysgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKHN2cjRfZnJlZV9saWJyYXJ5 X2xpc3QsICZoZWFkKTsKKysKKysgIC8qIFdhbGsgdGhlIGluZmVyaW9yJ3MgbGluayBtYXAgbGlz dCwgYW5kIGJ1aWxkIG91ciBsaXN0IG9mCisrICAgICBgc3RydWN0IHNvX2xpc3QnIG5vZGVzLiAg Ki8KKysgIGxtID0gc29saWJfc3ZyNF9yX21hcCAoaW5mbyk7CisrICBpZiAobG0pCisrICAgIHN2 cjRfcmVhZF9zb19saXN0IChsbSwgMCwgJmxpbmtfcHRyLCBpZ25vcmVfZmlyc3QpOworKworKyAg LyogT24gU29sYXJpcywgdGhlIGR5bmFtaWMgbGlua2VyIGlzIG5vdCBpbiB0aGUgbm9ybWFsIGxp c3Qgb2YKKysgICAgIHNoYXJlZCBvYmplY3RzLCBzbyBtYWtlIHN1cmUgd2UgcGljayBpdCB1cCB0 b28uICBIYXZpbmcKKysgICAgIHN5bWJvbCBpbmZvcm1hdGlvbiBmb3IgdGhlIGR5bmFtaWMgbGlu a2VyIGlzIHF1aXRlIGNydWNpYWwKKysgICAgIGZvciBza2lwcGluZyBkeW5hbWljIGxpbmtlciBy ZXNvbHZlciBjb2RlLiAgKi8KKysgIGxtID0gc29saWJfc3ZyNF9yX2xkc29tYXAgKGluZm8pOwor KyAgaWYgKGxtKQorKyAgICBzdnI0X3JlYWRfc29fbGlzdCAobG0sIDAsICZsaW5rX3B0ciwgMCk7 CisrCisrICBkaXNjYXJkX2NsZWFudXBzIChiYWNrX3RvKTsKKysKKysgIHJldHVybiBoZWFkOwor K30KKysKKysvKiBJbXBsZW1lbnQgdGhlICJjdXJyZW50X3NvcyIgdGFyZ2V0X3NvX29wcyBtZXRo b2QuICAqLworKworK3N0YXRpYyBzdHJ1Y3Qgc29fbGlzdCAqCisrc3ZyNF9jdXJyZW50X3NvcyAo dm9pZCkKKyt7CisrICBzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvOworICAgc3RydWN0IHN2cjRfbGli cmFyeV9saXN0IGxpYnJhcnlfbGlzdDsKKysgIHN0cnVjdCBzb19saXN0ICpyZXN1bHQ7CisgCisg ICAvKiBGYWxsIGJhY2sgdG8gbWFudWFsIGV4YW1pbmF0aW9uIG9mIHRoZSB0YXJnZXQgaWYgdGhl IHBhY2tldCBpcyBub3QKKyAgICAgIHN1cHBvcnRlZCBvciBnZGJzZXJ2ZXIgZmFpbGVkIHRvIGZp bmQgRFRfREVCVUcuICBnZGIuc2VydmVyL3NvbGliLWxpc3QuZXhwCitAQCAtMTMzMSw2ICsxNTAx LDEwIEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCisgCisgICBpbmZvID0gZ2V0X3N2cjRfaW5m byAoKTsKKyAKKysgIC8qIElmIHdlIGhhdmUgYSBuYW1lc3BhY2UgdGFibGUgdGhlbiByZXR1cm4g YSBmbGF0dGVuZWQgY29weS4gICovCisrICBpZiAoaW5mby0+bmFtZXNwYWNlX3RhYmxlICE9IE5V TEwpCisrICAgIHJldHVybiBuYW1lc3BhY2VfdGFibGVfZmxhdHRlbiAoaW5mby0+bmFtZXNwYWNl X3RhYmxlKTsKKysKKyAgIC8qIEFsd2F5cyBsb2NhdGUgdGhlIGRlYnVnIHN0cnVjdCwgaW4gY2Fz ZSBpdCBoYXMgbW92ZWQuICAqLworICAgaW5mby0+ZGVidWdfYmFzZSA9IDA7CisgICBsb2NhdGVf YmFzZSAoaW5mbyk7CitAQCAtMTM0MCwzNSArMTUxNCwxMiBAQCBzdnI0X2N1cnJlbnRfc29zICh2 b2lkKQorICAgaWYgKCEgaW5mby0+ZGVidWdfYmFzZSkKKyAgICAgcmV0dXJuIHN2cjRfZGVmYXVs dF9zb3MgKCk7CisgCistICAvKiBBc3N1bWUgdGhhdCBldmVyeXRoaW5nIGlzIGEgbGlicmFyeSBp ZiB0aGUgZHluYW1pYyBsb2FkZXIgd2FzIGxvYWRlZAorLSAgICAgbGF0ZSBieSBhIHN0YXRpYyBl eGVjdXRhYmxlLiAgKi8KKy0gIGlmIChleGVjX2JmZCAmJiBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFt ZSAoZXhlY19iZmQsICIuZHluYW1pYyIpID09IE5VTEwpCistICAgIGlnbm9yZV9maXJzdCA9IDA7 CistICBlbHNlCistICAgIGlnbm9yZV9maXJzdCA9IDE7CistCistICBiYWNrX3RvID0gbWFrZV9j bGVhbnVwIChzdnI0X2ZyZWVfbGlicmFyeV9saXN0LCAmaGVhZCk7CistCistICAvKiBXYWxrIHRo ZSBpbmZlcmlvcidzIGxpbmsgbWFwIGxpc3QsIGFuZCBidWlsZCBvdXIgbGlzdCBvZgorLSAgICAg YHN0cnVjdCBzb19saXN0JyBub2Rlcy4gICovCistICBsbSA9IHNvbGliX3N2cjRfcl9tYXAgKGlu Zm8pOworLSAgaWYgKGxtKQorLSAgICBzdnI0X3JlYWRfc29fbGlzdCAobG0sICZsaW5rX3B0ciwg aWdub3JlX2ZpcnN0KTsKKy0KKy0gIC8qIE9uIFNvbGFyaXMsIHRoZSBkeW5hbWljIGxpbmtlciBp cyBub3QgaW4gdGhlIG5vcm1hbCBsaXN0IG9mCistICAgICBzaGFyZWQgb2JqZWN0cywgc28gbWFr ZSBzdXJlIHdlIHBpY2sgaXQgdXAgdG9vLiAgSGF2aW5nCistICAgICBzeW1ib2wgaW5mb3JtYXRp b24gZm9yIHRoZSBkeW5hbWljIGxpbmtlciBpcyBxdWl0ZSBjcnVjaWFsCistICAgICBmb3Igc2tp cHBpbmcgZHluYW1pYyBsaW5rZXIgcmVzb2x2ZXIgY29kZS4gICovCistICBsbSA9IHNvbGliX3N2 cjRfcl9sZHNvbWFwIChpbmZvKTsKKy0gIGlmIChsbSkKKy0gICAgc3ZyNF9yZWFkX3NvX2xpc3Qg KGxtLCAmbGlua19wdHIsIDApOworLQorLSAgZGlzY2FyZF9jbGVhbnVwcyAoYmFja190byk7Cisr ICByZXN1bHQgPSBzdnI0X2N1cnJlbnRfc29zX2Zyb21fZGVidWdfYmFzZSAoKTsKKyAKKy0gIGlm IChoZWFkID09IE5VTEwpCisrICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgIHJldHVybiBzdnI0 X2RlZmF1bHRfc29zICgpOworIAorLSAgcmV0dXJuIGhlYWQ7CisrICByZXR1cm4gcmVzdWx0Owor IH0KKyAKKyAvKiBHZXQgdGhlIGFkZHJlc3Mgb2YgdGhlIGxpbmtfbWFwIGZvciBhIGdpdmVuIE9C SkZJTEUuICAqLworQEAgLTE0NTAsNiArMTYwMSw0OTggQEAgZXhlY19lbnRyeV9wb2ludCAoc3Ry dWN0IGJmZCAqYWJmZCwgc3RydQorIAkJCQkJICAgICB0YXJnKTsKKyB9CisgCisrLyogQSBwcm9i ZSBhbmQgaXRzIGFzc29jaWF0ZWQgaW5mb3JtYXRpb24gc3RydWN0dXJlLiAgKi8KKysKKytzdHJ1 Y3QgcHJvYmVfYW5kX2luZm8KKyt7CisrICAvKiBUaGUgcHJvYmUuICAqLworKyAgc3RydWN0IHBy b2JlICpwcm9iZTsKKysKKysgIC8qIFRoZSBwcm9iZV9pbmZvIGZyb20gd2hpY2ggdGhlIHByb2Jl IHdhcyBjcmVhdGVkLiAgKi8KKysgIGNvbnN0IHN0cnVjdCBwcm9iZV9pbmZvICppbmZvOworK307 CisrCisrLyogR2V0IHRoZSBzb2xpYiBldmVudCBwcm9iZSBhdCB0aGUgc3BlY2lmaWVkIGxvY2F0 aW9uLCBhbmQgdGhlCisrICAgcHJvYmVfaW5mbyB0aGUgcHJvYmUgd2FzIGNyZWF0ZWQgd2l0aC4g IEZpbGxzIGluIFJFU1VMVCBhbmQKKysgICByZXR1cm5zIG5vbnplcm8gaWYgYSBzb2xpYiBldmVu dCBwcm9iZSB3YXMgZm91bmQgYXQgdGhlCisrICAgc3BlY2lmaWVkIGxvY2F0aW9uLiAgUmV0dXJu cyB6ZXJvIGlmIG5vIHNvbGliIGV2ZW50IHByb2JlCisrICAgd2FzIGZvdW5kLiAgKi8KKysKKytz dGF0aWMgaW50Cisrc29saWJfZXZlbnRfcHJvYmVfYXQgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8s IHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jLAorKwkJICAgICAgc3RydWN0IHByb2JlX2FuZF9pbmZv ICpyZXN1bHQpCisreworKyAgaW50IGk7CisrCisrICBmb3IgKGkgPSAwOyBpIDwgTlVNX1BST0JF UzsgaSsrKQorKyAgICB7CisrICAgICAgc3RydWN0IHByb2JlICpwcm9iZTsKKysgICAgICBpbnQg aXg7CisrCisrICAgICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChwcm9iZV9wLCBpbmZvLT5w cm9iZXNbaV0sIGl4LCBwcm9iZSk7ICsraXgpCisrCXsKKysJICBpZiAobG9jLT5wc3BhY2UgPT0g Y3VycmVudF9wcm9ncmFtX3NwYWNlCisrCSAgICAgICYmIGxvYy0+YWRkcmVzcyA9PSBwcm9iZS0+ YWRkcmVzcykKKysJICAgIHsKKysJICAgICAgcmVzdWx0LT5pbmZvID0gJnByb2JlX2luZm9baV07 CisrCSAgICAgIHJlc3VsdC0+cHJvYmUgPSBwcm9iZTsKKysKKysJICAgICAgcmV0dXJuIDE7Cisr CSAgICB9CisrCX0KKysgICAgfQorKworKyAgcmV0dXJuIDA7CisrfQorKworKy8qIERlY2lkZSB3 aGF0IGFjdGlvbiB0byB0YWtlIHdoZW4gdGhlIHNwZWNpZmllZCBzb2xpYiBldmVudCBwcm9iZSBp cworKyAgIGhpdC4gICovCisrCisrc3RhdGljIGVudW0gcHJvYmVfYWN0aW9uCisrc29saWJfZXZl bnRfcHJvYmVfYWN0aW9uIChzdHJ1Y3QgcHJvYmVfYW5kX2luZm8gKnBpKQorK3sKKysgIGVudW0g cHJvYmVfYWN0aW9uIGFjdGlvbjsKKysgIHVuc2lnbmVkIHByb2JlX2FyZ2M7CisrCisrICBhY3Rp b24gPSBwaS0+aW5mby0+YWN0aW9uOworKyAgaWYgKGFjdGlvbiA9PSBOQU1FU1BBQ0VfTk9fQUNU SU9OIHx8IGFjdGlvbiA9PSBOQU1FU1BBQ0VfVEFCTEVfSU5WQUxJREFURSkKKysgICAgcmV0dXJu IGFjdGlvbjsKKysKKysgIGdkYl9hc3NlcnQgKGFjdGlvbiA9PSBOQU1FU1BBQ0VfUkVMT0FECisr CSAgICAgIHx8IGFjdGlvbiA9PSBOQU1FU1BBQ0VfVVBEQVRFX09SX1JFTE9BRCk7CisrCisrICAv KiBDaGVjayB0aGF0IGFuIGFwcHJvcHJpYXRlIG51bWJlciBvZiBhcmd1bWVudHMgaGFzIGJlZW4g c3VwcGxpZWQuCisrICAgICBXZSBleHBlY3Q6CisrICAgICAgIGFyZzA6IExtaWRfdCBsbWlkICht YW5kYXRvcnkpCisrICAgICAgIGFyZzE6IHN0cnVjdCByX2RlYnVnICpkZWJ1Z19iYXNlIChtYW5k YXRvcnkpCisrICAgICAgIGFyZzI6IHN0cnVjdCBsaW5rX21hcCAqbmV3IChvcHRpb25hbCwgZm9y IGluY3JlbWVudGFsIHVwZGF0ZXMpICAqLworKyAgcHJvYmVfYXJnYyA9IGdldF9wcm9iZV9hcmd1 bWVudF9jb3VudCAocGktPnByb2JlKTsKKysgIGlmIChwcm9iZV9hcmdjID09IDIpCisrICAgIGFj dGlvbiA9IE5BTUVTUEFDRV9SRUxPQUQ7CisrICBlbHNlIGlmIChwcm9iZV9hcmdjIDwgMikKKysg ICAgYWN0aW9uID0gTkFNRVNQQUNFX1RBQkxFX0lOVkFMSURBVEU7CisrCisrICByZXR1cm4gYWN0 aW9uOworK30KKysKKysvKiBBIG5hbWVzcGFjZSBpbiB0aGUgZHluYW1pYyBsaW5rZXIuICAqLwor KworK3N0cnVjdCBuYW1lc3BhY2UKKyt7CisrICAvKiBOdW1lcmljIGxpbmstbWFwIElEIG9mIHRo ZSBuYW1lc3BhY2UuICAqLworKyAgTE9OR0VTVCBsbWlkOworKworKyAgLyogTGlzdCBvZiBvYmpl Y3RzIGxvYWRlZCBpbnRvIHRoZSBuYW1lc3BhY2UuICAqLworKyAgc3RydWN0IHNvX2xpc3QgKnNv bGlzdDsKKyt9OworKworKy8qIFJldHVybnMgYSBoYXNoIGNvZGUgZm9yIHRoZSBuYW1lc3BhY2Ug cmVmZXJlbmNlZCBieSBwLiAgKi8KKysKKytzdGF0aWMgaGFzaHZhbF90CisraGFzaF9uYW1lc3Bh Y2UgKGNvbnN0IHZvaWQgKnApCisreworKyAgY29uc3Qgc3RydWN0IG5hbWVzcGFjZSAqbnMgPSBw OworKworKyAgcmV0dXJuIChoYXNodmFsX3QpIG5zLT5sbWlkOworK30KKysKKysvKiBSZXR1cm5z IG5vbi16ZXJvIGlmIHRoZSBuYW1lc3BhY2VzIHJlZmVyZW5jZWQgYnkgcDEgYW5kIHAyCisrICAg YXJlIGVxdWFsLiAgKi8KKysKKytzdGF0aWMgaW50CisrZXF1YWxfbmFtZXNwYWNlIChjb25zdCB2 b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpCisreworKyAgY29uc3Qgc3RydWN0IG5hbWVzcGFjZSAq bnMxID0gcDE7CisrICBjb25zdCBzdHJ1Y3QgbmFtZXNwYWNlICpuczIgPSBwMjsKKysKKysgIHJl dHVybiBuczEtPmxtaWQgPT0gbnMyLT5sbWlkOworK30KKysKKysvKiBGcmVlIGEgbmFtZXNwYWNl LiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2ZyZWVfbmFtZXNwYWNlICh2b2lkICpwKQorK3sKKysg IHN0cnVjdCBuYW1lc3BhY2UgKm5zID0gcDsKKysKKysgIHN2cjRfZnJlZV9saWJyYXJ5X2xpc3Qg KG5zLT5zb2xpc3QpOworKyAgeGZyZWUgKG5zKTsKKyt9CisrCisrLyogUG9wdWxhdGUgdGhpcyBu YW1lc3BhY2UgYnkgcmVhZGluZyB0aGUgZW50aXJlIGxpc3Qgb2Ygc2hhcmVkCisrICAgb2JqZWN0 cyBmcm9tIHRoZSBpbmZlcmlvci4gIFJldHVybnMgbm9uemVybyBvbiBzdWNjZXNzLiAgKi8KKysK KytzdGF0aWMgaW50CisrbmFtZXNwYWNlX3VwZGF0ZV9mdWxsIChzdHJ1Y3Qgc3ZyNF9pbmZvICpp bmZvLCBMT05HRVNUIGxtaWQsCisrCQkgICAgICAgQ09SRV9BRERSIGRlYnVnX2Jhc2UsIGludCBp c19pbml0aWFsX25zKQorK3sKKysgIHN0cnVjdCBzb19saXN0ICpyZXN1bHQgPSBOVUxMLCAqc287 CisrICBzdHJ1Y3QgbmFtZXNwYWNlIGxvb2t1cCwgKm5zOworKyAgdm9pZCAqKnNsb3Q7CisrCisr ICAvKiBSZWFkIHRoZSBsaXN0IG9mIHNoYXJlZCBvYmplY3RzIGZyb20gdGhlIGluZmVyaW9yLiAg VGhlCisrICAgICBpbml0aWFsIG5hbWVzcGFjZSByZXF1aXJlcyBleHRyYSBwcm9jZXNzaW5nIGFu ZCBpcyBoYW5kbGVkCisrICAgICBzZXBhcmF0ZWx5LiAgKi8KKysgIGlmIChpc19pbml0aWFsX25z KQorKyAgICB7CisrICAgICAgcmVzdWx0ID0gc3ZyNF9jdXJyZW50X3Nvc19mcm9tX2RlYnVnX2Jh c2UgKCk7CisrICAgIH0KKysgIGVsc2UKKysgICAgeworKyAgICAgIENPUkVfQUREUiBsbSA9IHJf bWFwX2Zyb21fZGVidWdfYmFzZSAoZGVidWdfYmFzZSk7CisrICAgICAgc3RydWN0IHNvX2xpc3Qg KipsaW5rX3B0ciA9ICZyZXN1bHQ7CisrCisrICAgICAgaWYgKCFzdnI0X3JlYWRfc29fbGlzdCAo bG0sIDAsICZsaW5rX3B0ciwgMCkpCisrCXJldHVybiAwOworKyAgICB9CisrCisrICAvKiBJZiB0 aGUgbmFtZXNwYWNlIGlzIGVtcHR5IHRoZW4gZGVsZXRlIGl0IGZyb20gdGhlIHRhYmxlLiAgKi8K KysgIGlmIChyZXN1bHQgPT0gTlVMTCkKKysgICAgeworKyAgICAgIGlmIChpbmZvLT5uYW1lc3Bh Y2VfdGFibGUgIT0gTlVMTCkKKysJeworKwkgIGxvb2t1cC5sbWlkID0gbG1pZDsKKysJICBodGFi X3JlbW92ZV9lbHQgKGluZm8tPm5hbWVzcGFjZV90YWJsZSwgJmxvb2t1cCk7CisrCX0KKysKKysg ICAgICByZXR1cm4gMTsKKysgICAgfQorKworKyAgLyogRmlsbCBpbiB0aGUgbGluay1tYXAgSURz IGFuZCBpbml0aWFsIG5hbWVzcGFjZSBmbGFncy4gICovCisrICBmb3IgKHNvID0gcmVzdWx0OyBz bzsgc28gPSBzby0+bmV4dCkKKysgICAgeworKyAgICAgIHNvLT5sbV9pbmZvLT5sbWlkID0gbG1p ZDsKKysgICAgICBzby0+bG1faW5mby0+aW5faW5pdGlhbF9ucyA9IGlzX2luaXRpYWxfbnM7Cisr ICAgIH0KKysKKysgIC8qIENyZWF0ZSB0aGUgbmFtZXNwYWNlIHRhYmxlLCBpZiBuZWNlc3Nhcnku ICAqLworKyAgaWYgKGluZm8tPm5hbWVzcGFjZV90YWJsZSA9PSBOVUxMKQorKyAgICB7CisrICAg ICAgaW5mby0+bmFtZXNwYWNlX3RhYmxlID0gaHRhYl9jcmVhdGVfYWxsb2MgKDEsIGhhc2hfbmFt ZXNwYWNlLAorKwkJCQkJCSBlcXVhbF9uYW1lc3BhY2UsCisrCQkJCQkJIGZyZWVfbmFtZXNwYWNl LAorKwkJCQkJCSB4Y2FsbG9jLCB4ZnJlZSk7CisrICAgIH0KKysKKysgIC8qIFVwZGF0ZSB0aGUg bmFtZXNwYWNlIHRhYmxlIHdpdGggb3VyIG5ldyBsaXN0LiAgKi8KKysgIGxvb2t1cC5sbWlkID0g bG1pZDsKKysgIHNsb3QgPSBodGFiX2ZpbmRfc2xvdCAoaW5mby0+bmFtZXNwYWNlX3RhYmxlLCAm bG9va3VwLCBJTlNFUlQpOworKyAgaWYgKCpzbG90ID09IEhUQUJfRU1QVFlfRU5UUlkpCisrICAg IHsKKysgICAgICBucyA9IFhDTkVXIChzdHJ1Y3QgbmFtZXNwYWNlKTsKKysgICAgICBucy0+bG1p ZCA9IGxtaWQ7CisrICAgICAgKnNsb3QgPSBuczsKKysgICAgfQorKyAgZWxzZQorKyAgICB7Cisr ICAgICAgbnMgPSAqc2xvdDsKKysgICAgICBzdnI0X2ZyZWVfbGlicmFyeV9saXN0IChucy0+c29s aXN0KTsKKysgICAgfQorKyAgbnMtPnNvbGlzdCA9IHJlc3VsdDsKKysKKysgIHJldHVybiAxOwor K30KKysKKysvKiBVcGRhdGUgdGhpcyBuYW1lc3BhY2Ugc3RhcnRpbmcgZnJvbSB0aGUgbGluay1t YXAgZW50cnkgcGFzc2VkIGJ5CisrICAgdGhlIGxpbmtlciBpbiB0aGUgcHJvYmUncyB0aGlyZCBh cmd1bWVudC4gIFJldHVybnMgbm9uemVybyBpZiB0aGUKKysgICBsaXN0IHdhcyBzdWNjZXNzZnVs bHkgdXBkYXRlZCwgb3IgemVybyB0byBpbmRpY2F0ZSBmYWlsdXJlLiAgKi8KKysKKytzdGF0aWMg aW50CisrbmFtZXNwYWNlX3VwZGF0ZV9pbmNyZW1lbnRhbCAoc3RydWN0IHN2cjRfaW5mbyAqaW5m bywgTE9OR0VTVCBsbWlkLAorKwkJCSAgICAgIENPUkVfQUREUiBsbSwgaW50IGlzX2luaXRpYWxf bnMpCisreworKyAgc3RydWN0IG5hbWVzcGFjZSBsb29rdXAsICpuczsKKysgIHN0cnVjdCBzb19s aXN0ICp0YWlsLCAqKmxpbmssICpzbzsKKysgIHN0cnVjdCB2YWx1ZSAqdmFsOworKworKyAgLyog RmluZCBvdXIgbmFtZXNwYWNlIGluIHRoZSB0YWJsZS4gICovCisrICBpZiAoaW5mby0+bmFtZXNw YWNlX3RhYmxlID09IE5VTEwpCisrICAgIHJldHVybiAwOworKworKyAgbG9va3VwLmxtaWQgPSBs bWlkOworKyAgbnMgPSBodGFiX2ZpbmQgKGluZm8tPm5hbWVzcGFjZV90YWJsZSwgJmxvb2t1cCk7 CisrICBpZiAobnMgPT0gTlVMTCkKKysgICAgcmV0dXJuIDA7CisrCisrICAvKiBXYWxrIHRvIHRo ZSBlbmQgb2YgdGhlIGxpc3QuICAqLworKyAgdGFpbCA9IG5zLT5zb2xpc3Q7CisrICBpZiAodGFp bCA9PSBOVUxMKQorKyAgICByZXR1cm4gMDsKKysKKysgIHdoaWxlICh0YWlsLT5uZXh0KQorKyAg ICB0YWlsID0gdGFpbC0+bmV4dDsKKysgIGxpbmsgPSAmdGFpbC0+bmV4dDsKKysKKysgIC8qIFJl YWQgdGhlIG5ldyBvYmplY3RzLiAgKi8KKysgIGlmICghc3ZyNF9yZWFkX3NvX2xpc3QgKGxtLCB0 YWlsLT5sbV9pbmZvLT5sbV9hZGRyLCAmbGluaywgMCkpCisrICAgIHJldHVybiAwOworKworKyAg LyogRmlsbCBpbiB0aGUgbGluay1tYXAgSURzIGFuZCBpbml0aWFsIG5hbWVzcGFjZSBmbGFncy4g ICovCisrICBmb3IgKHNvID0gdGFpbDsgc287IHNvID0gc28tPm5leHQpCisrICAgIHsKKysgICAg ICBzby0+bG1faW5mby0+bG1pZCA9IGxtaWQ7CisrICAgICAgc28tPmxtX2luZm8tPmluX2luaXRp YWxfbnMgPSBpc19pbml0aWFsX25zOworKyAgICB9CisrCisrICByZXR1cm4gMTsKKyt9CisrCisr LyogVXBkYXRlIHRoZSBuYW1lc3BhY2UgdGFibGUgYXMgYXBwcm9wcmlhdGUgd2hlbiB1c2luZyB0 aGUKKysgICBwcm9iZXMtYmFzZWQgbGlua2VyIGludGVyZmFjZS4gIERvIG5vdGhpbmcgaWYgdXNp bmcgdGhlCisrICAgc3RhbmRhcmQgaW50ZXJmYWNlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3N2 cjRfaGFuZGxlX3NvbGliX2V2ZW50IChicHN0YXQgYnMpCisreworKyAgc3RydWN0IHN2cjRfaW5m byAqaW5mbyA9IGdldF9zdnI0X2luZm8gKCk7CisrICBzdHJ1Y3QgcHJvYmVfYW5kX2luZm8gYnVm LCAqcGkgPSAmYnVmOworKyAgZW51bSBwcm9iZV9hY3Rpb24gYWN0aW9uOworKyAgc3RydWN0IHZh bHVlICp2YWw7CisrICBMT05HRVNUIGxtaWQ7CisrICBDT1JFX0FERFIgZGVidWdfYmFzZSwgbG0g PSAwOworKyAgaW50IGlzX2luaXRpYWxfbnM7CisrCisrICAvKiBJdCBpcyBwb3NzaWJsZSB0aGF0 IHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgaW5jb3JyZWN0bHkKKysgICAgIGJ5IHRoZSBo YW5kbGVfc29saWJfZXZlbnQgaW4gaGFuZGxlX2luZmVyaW9yX2V2ZW50IGlmIEdEQiBnb2VzCisr ICAgICBmdWxseSBtdWx0aS10YXJnZXQuICAqLworKyAgZ2RiX2Fzc2VydCAoYnMgIT0gTlVMTCk7 CisrCisrICBpZiAoIWluZm8tPnVzaW5nX3Byb2JlcykKKysgICAgcmV0dXJuOworKworKyAgaWYg KCFzb2xpYl9ldmVudF9wcm9iZV9hdCAoaW5mbywgYnMtPmJwX2xvY2F0aW9uX2F0LCBwaSkpCisr ICAgIGdvdG8gZXJyb3I7CisrCisrICBhY3Rpb24gPSBzb2xpYl9ldmVudF9wcm9iZV9hY3Rpb24g KHBpKTsKKysgIGlmIChhY3Rpb24gPT0gTkFNRVNQQUNFX1RBQkxFX0lOVkFMSURBVEUpCisrICAg IGdvdG8gZXJyb3I7CisrCisrICBpZiAoYWN0aW9uID09IE5BTUVTUEFDRV9OT19BQ1RJT04pCisr ICAgIHJldHVybjsKKysKKysgIHZhbCA9IGV2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChwaS0+cHJv YmUsIDApOworKyAgaWYgKHZhbCA9PSBOVUxMKQorKyAgICBnb3RvIGVycm9yOworKworKyAgbG1p ZCA9IHZhbHVlX2FzX2xvbmcgKHZhbCk7CisrCisrICB2YWwgPSBldmFsdWF0ZV9wcm9iZV9hcmd1 bWVudCAocGktPnByb2JlLCAxKTsKKysgIGlmICh2YWwgPT0gTlVMTCkKKysgICAgZ290byBlcnJv cjsKKysKKysgIGRlYnVnX2Jhc2UgPSB2YWx1ZV9hc19hZGRyZXNzICh2YWwpOworKyAgaWYgKGRl YnVnX2Jhc2UgPT0gMCkKKysgICAgZ290byBlcnJvcjsKKysKKysgIC8qIEFsd2F5cyBsb2NhdGUg dGhlIGRlYnVnIHN0cnVjdCwgaW4gY2FzZSBpdCBtb3ZlZC4gICovCisrICBpbmZvLT5kZWJ1Z19i YXNlID0gMDsKKysgIGlmIChsb2NhdGVfYmFzZSAoaW5mbykgPT0gMCkKKysgICAgZ290byBlcnJv cjsKKysKKysgIGlzX2luaXRpYWxfbnMgPSAoZGVidWdfYmFzZSA9PSBpbmZvLT5kZWJ1Z19iYXNl KTsKKysKKysgIGlmIChhY3Rpb24gPT0gTkFNRVNQQUNFX1VQREFURV9PUl9SRUxPQUQpCisrICAg IHsKKysgICAgICB2YWwgPSBldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAocGktPnByb2JlLCAyKTsK KysgICAgICBpZiAodmFsICE9IE5VTEwpCisrCWxtID0gdmFsdWVfYXNfYWRkcmVzcyAodmFsKTsK KysKKysgICAgICBpZiAobG0gPT0gMCkKKysJYWN0aW9uID0gTkFNRVNQQUNFX1JFTE9BRDsKKysg ICAgfQorKworKyAgaWYgKGFjdGlvbiA9PSBOQU1FU1BBQ0VfVVBEQVRFX09SX1JFTE9BRCkKKysg ICAgeworKyAgICAgIGlmIChuYW1lc3BhY2VfdXBkYXRlX2luY3JlbWVudGFsIChpbmZvLCBsbWlk LCBsbSwgaXNfaW5pdGlhbF9ucykpCisrCXJldHVybjsKKysKKysgICAgICBhY3Rpb24gPSBOQU1F U1BBQ0VfUkVMT0FEOworKyAgICB9CisrCisrICBnZGJfYXNzZXJ0IChhY3Rpb24gPT0gTkFNRVNQ QUNFX1JFTE9BRCk7CisrCisrICBpZiAobmFtZXNwYWNlX3VwZGF0ZV9mdWxsIChpbmZvLCBsbWlk LCBkZWJ1Z19iYXNlLCBpc19pbml0aWFsX25zKSkKKysgICAgcmV0dXJuOworKworKyBlcnJvcjoK KysKKysgIC8qIFdlIHNob3VsZCBuZXZlciByZWFjaCBoZXJlLCBidXQgaWYgd2UgZG8gd2UgZGlz YWJsZSB0aGUKKysgICAgIHByb2JlcyBpbnRlcmZhY2UgYW5kIHJldmVydCB0byB0aGUgb3JpZ2lu YWwgaW50ZXJmYWNlLgorKyAgICAgV2UgZG9uJ3QgcmVzZXQgdGhlIGJyZWFrcG9pbnRzIGFzIHRo ZSBvbmVzIHdlJ3ZlIHNldCB1cAorKyAgICAgYXJlIGFkZXF1YXRlLiAgKi8KKysgIHdhcm5pbmcg KF8oIlByb2Jlcy1iYXNlZCBkeW5hbWljIGxpbmtlciBpbnRlcmZhY2UgZmFpbGVkLlxuIgorKwkg ICAgICJSZXZlcnRpbmcgdG8gb3JpZ2luYWwgaW50ZXJmYWNlLlxuIikpOworKworKyAgZnJlZV9u YW1lc3BhY2VfdGFibGUgKGluZm8pOworKyAgZnJlZV9wcm9iZXMgKGluZm8pOworKyAgaW5mby0+ dXNpbmdfcHJvYmVzID0gMDsKKyt9CisrCisrLyogSGVscGVyIGZ1bmN0aW9uIGZvciBuYW1lc3Bh Y2VfdGFibGVfZmxhdHRlbi4gICovCisrCisrc3RhdGljIGludAorK25hbWVzcGFjZV90YWJsZV9m bGF0dGVuX2hlbHBlciAodm9pZCAqKnNsb3QsIHZvaWQgKmFyZykKKyt7CisrICBzdHJ1Y3QgbmFt ZXNwYWNlICpucyA9IChzdHJ1Y3QgbmFtZXNwYWNlICopICpzbG90OworKyAgc3RydWN0IHNvX2xp c3QgKnNyYyA9IG5zLT5zb2xpc3Q7CisrICBzdHJ1Y3Qgc29fbGlzdCAqKmxpbmsgPSAoc3RydWN0 IHNvX2xpc3QgKiopIGFyZzsKKysKKysgIHdoaWxlICgqbGluaykKKysgICAgbGluayA9ICYoKmxp bmspLT5uZXh0OworKworKyAgd2hpbGUgKHNyYyAhPSBOVUxMKQorKyAgICB7CisrICAgICAgc3Ry dWN0IHNvX2xpc3QgKmRzdDsKKysKKysgICAgICBkc3QgPSB4bWFsbG9jIChzaXplb2YgKHN0cnVj dCBzb19saXN0KSk7CisrICAgICAgbWVtY3B5IChkc3QsIHNyYywgc2l6ZW9mIChzdHJ1Y3Qgc29f bGlzdCkpOworKworKyAgICAgIGRzdC0+bG1faW5mbyA9IHhtYWxsb2MgKHNpemVvZiAoc3RydWN0 IGxtX2luZm8pKTsKKysgICAgICBtZW1jcHkgKGRzdC0+bG1faW5mbywgc3JjLT5sbV9pbmZvLCBz aXplb2YgKHN0cnVjdCBsbV9pbmZvKSk7CisrCisrICAgICAgKmxpbmsgPSBkc3Q7CisrICAgICAg bGluayA9ICZkc3QtPm5leHQ7CisrCisrICAgICAgc3JjID0gc3JjLT5uZXh0OworKyAgICB9Cisr CisrICAqbGluayA9IE5VTEw7CisrCisrICByZXR1cm4gMTsgLyogQ29udGludWUgdHJhdmVyc2Fs LiAgKi8KKyt9CisrCisrLyogRmxhdHRlbiB0aGUgbmFtZXNwYWNlIHRhYmxlIGludG8gYSBzaW5n bGUgbGlzdC4gICovCisrCisrc3RhdGljIHN0cnVjdCBzb19saXN0ICoKKytuYW1lc3BhY2VfdGFi bGVfZmxhdHRlbiAoaHRhYl90IG5hbWVzcGFjZV90YWJsZSkKKyt7CisrICBzdHJ1Y3Qgc29fbGlz dCAqZHN0ID0gTlVMTDsKKysKKysgIGh0YWJfdHJhdmVyc2UgKG5hbWVzcGFjZV90YWJsZSwgbmFt ZXNwYWNlX3RhYmxlX2ZsYXR0ZW5faGVscGVyLCAmZHN0KTsKKysKKysgIHJldHVybiBkc3Q7Cisr fQorKworKy8qIEhlbHBlciBmdW5jdGlvbiBmb3Igc3ZyNF91cGRhdGVfc29saWJfZXZlbnRfYnJl YWtwb2ludHMuICAqLworKworK3N0YXRpYyBpbnQKKytzdnI0X3VwZGF0ZV9zb2xpYl9ldmVudF9i cmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwgdm9pZCAqYXJnKQorK3sKKysgIHN0cnVj dCBzdnI0X2luZm8gKmluZm8gPSBnZXRfc3ZyNF9pbmZvICgpOworKyAgc3RydWN0IGJwX2xvY2F0 aW9uICpsb2M7CisrCisrICBpZiAoYi0+dHlwZSAhPSBicF9zaGxpYl9ldmVudCkKKysgICAgcmV0 dXJuIDA7IC8qIENvbnRpbnVlIGl0ZXJhdGluZy4gICovCisrCisrICBmb3IgKGxvYyA9IGItPmxv YzsgbG9jOyBsb2MgPSBsb2MtPm5leHQpCisrICAgIHsKKysgICAgICBzdHJ1Y3QgcHJvYmVfYW5k X2luZm8gYnVmLCAqcGkgPSAmYnVmOworKworKyAgICAgIGlmIChzb2xpYl9ldmVudF9wcm9iZV9h dCAoaW5mbywgbG9jLCBwaSkpCisrCXsKKysJICBpZiAocGktPmluZm8tPmFjdGlvbiA9PSBOQU1F U1BBQ0VfTk9fQUNUSU9OKQorKwkgICAgYi0+ZW5hYmxlX3N0YXRlID0gKHN0b3Bfb25fc29saWJf ZXZlbnRzCisrCQkJICAgICAgID8gYnBfZW5hYmxlZCA6IGJwX2Rpc2FibGVkKTsKKysKKysJICBy ZXR1cm4gMDsgLyogQ29udGludWUgaXRlcmF0aW5nLiAgKi8KKysJfQorKyAgICB9CisrCisrICBy ZXR1cm4gMDsgLyogQ29udGludWUgaXRlcmF0aW5nLiAgKi8KKyt9CisrCisrLyogRW5hYmxlIG9y IGRpc2FibGUgb3B0aW9uYWwgc29saWIgZXZlbnQgYnJlYWtwb2ludHMgYXMgYXBwcm9wcmlhdGUu CisrICAgQ2FsbGVkIHdoZW5ldmVyIHN0b3Bfb25fc29saWJfZXZlbnRzIGlzIGNoYW5nZWQuICAq LworKworK3N0YXRpYyB2b2lkCisrc3ZyNF91cGRhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMg KHZvaWQpCisreworKyAgc3RydWN0IHN2cjRfaW5mbyAqaW5mbyA9IGdldF9zdnI0X2luZm8gKCk7 CisrCisrICBpZiAoaW5mby0+dXNpbmdfcHJvYmVzKQorKyAgICBpdGVyYXRlX292ZXJfYnJlYWtw b2ludHMgKHN2cjRfdXBkYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnQsIE5VTEwpOworK30KKysK KysvKiBCb3RoIHRoZSBTdW5PUyBhbmQgdGhlIFNWUjQgZHluYW1pYyBsaW5rZXJzIGNhbGwgYSBt YXJrZXIgZnVuY3Rpb24KKysgICBiZWZvcmUgYW5kIGFmdGVyIG1hcHBpbmcgYW5kIHVubWFwcGlu ZyBzaGFyZWQgbGlicmFyaWVzLiAgVGhlIHNvbGUKKysgICBwdXJwb3NlIG9mIHRoaXMgbWV0aG9k IGlzIHRvIGFsbG93IGRlYnVnZ2VycyB0byBzZXQgYSBicmVha3BvaW50IHNvCisrICAgdGhleSBj YW4gdHJhY2sgdGhlc2UgY2hhbmdlcy4KKysKKysgICBTb21lIHZlcnNpb25zIG9mIHRoZSBnbGli YyBkeW5hbWljIGxpbmtlciBjb250YWluIG5hbWVkIHByb2JlcworKyAgIHRvIGFsbG93IG1vcmUg ZmluZSBncmFpbmVkIHN0b3BwaW5nLiAgR2l2ZW4gdGhlIGFkZHJlc3Mgb2YgdGhlCisrICAgb3Jp Z2luYWwgbWFya2VyIGZ1bmN0aW9uLCB0aGlzIGZ1bmN0aW9uIGF0dGVtcHRzIHRvIGZpbmQgdGhl c2UKKysgICBwcm9iZXMsIGFuZCBpZiBmb3VuZCwgc2V0cyBicmVha3BvaW50cyBvbiB0aG9zZSBp bnN0ZWFkLiAgSWYgdGhlCisrICAgcHJvYmVzIGFyZW4ndCBmb3VuZCwgYSBzaW5nbGUgYnJlYWtw b2ludCBpcyBzZXQgb24gdGhlIG9yaWdpbmFsCisrICAgbWFya2VyIGZ1bmN0aW9uLiAgKi8KKysK KytzdGF0aWMgdm9pZAorK3N2cjRfY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysJCQkJICAgICBDT1JFX0FERFIgYWRkcmVzcykKKyt7Cisr ICBzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvID0gZ2V0X3N2cjRfaW5mbyAoKTsKKysgIHN0cnVjdCBv Ympfc2VjdGlvbiAqb3M7CisrCisrICBvcyA9IGZpbmRfcGNfc2VjdGlvbiAoYWRkcmVzcyk7Cisr ICBpZiAob3MgIT0gTlVMTCkKKysgICAgeworKyAgICAgIGludCB3aXRoX3ByZWZpeDsKKysKKysg ICAgICBmb3IgKHdpdGhfcHJlZml4ID0gMDsgd2l0aF9wcmVmaXggPD0gMTsgd2l0aF9wcmVmaXgr KykKKysJeworKwkgIGludCBhbGxfcHJvYmVzX2ZvdW5kID0gMTsKKysJICBpbnQgaTsKKysKKysJ ICBmb3IgKGkgPSAwOyBpIDwgTlVNX1BST0JFUzsgaSsrKQorKwkgICAgeworKwkgICAgICBjaGFy IG5hbWVbMzJdID0geyAnXDAnIH07CisrCisrCSAgICAgIC8qIEZlZG9yYSAxNywgUkhFTCA2LjIs IGFuZCBSSEVMIDYuMyBzaGlwcGVkIHdpdGggYW4KKysJCSBlYXJseSB2ZXJzaW9uIG9mIHRoZSBw cm9iZXMgY29kZSBpbiB3aGljaCB0aGUgcHJvYmVzJworKwkJIG5hbWVzIHdlcmUgcHJlZml4ZWQg d2l0aCAicnRsZF8iLiAgVGhlIGxvY2F0aW9ucyBhbmQKKysJCSBhcmd1bWVudHMgb2YgdGhlIHBy b2JlcyBhcmUgb3RoZXJ3aXNlIHRoZSBzYW1lLCBzbyB3ZQorKwkJIGNoZWNrIGZvciB0aGUgcHJl Zml4ZWQgdmVyc2lvbiBpZiB0aGUgdW5wcmVmaXhlZAorKwkJIHByb2JlcyBhcmUgbm90IGZvdW5k LiAgKi8KKysKKysJICAgICAgaWYgKHdpdGhfcHJlZml4KQorKwkJc3RybmNhdCAobmFtZSwgInJ0 bGRfIiwgc2l6ZW9mIChuYW1lKSk7CisrCisrCSAgICAgIHN0cm5jYXQgKG5hbWUsIHByb2JlX2lu Zm9baV0ubmFtZSwgc2l6ZW9mIChuYW1lKSAtIHNpemVvZiAoInJ0bGRfIikpOworKworKwkgICAg ICBpbmZvLT5wcm9iZXNbaV0gPSBmaW5kX3Byb2Jlc19pbl9vYmpmaWxlIChvcy0+b2JqZmlsZSwg InJ0bGQiLAorKwkJCQkJCQluYW1lKTsKKysKKysJICAgICAgaWYgKCFWRUNfbGVuZ3RoIChwcm9i ZV9wLCBpbmZvLT5wcm9iZXNbaV0pKQorKwkJeworKwkJICBmcmVlX3Byb2JlcyAoaW5mbyk7Cisr CQkgIGFsbF9wcm9iZXNfZm91bmQgPSAwOworKwkJICBicmVhazsKKysJCX0KKysJICAgIH0KKysK KysJICBpZiAoYWxsX3Byb2Jlc19mb3VuZCkKKysJICAgIHsKKysJICAgICAgaW5mby0+dXNpbmdf cHJvYmVzID0gMTsKKysKKysJICAgICAgZm9yIChpID0gMDsgaSA8IE5VTV9QUk9CRVM7IGkrKykK KysJCXsKKysJCSAgc3RydWN0IHByb2JlICpwcm9iZTsKKysJCSAgaW50IGl4OworKworKwkJICBm b3IgKGl4ID0gMDsKKysJCSAgICAgICBWRUNfaXRlcmF0ZSAocHJvYmVfcCwgaW5mby0+cHJvYmVz W2ldLCBpeCwgcHJvYmUpOworKwkJICAgICAgICsraXgpCisrCQkgICAgY3JlYXRlX3NvbGliX2V2 ZW50X2JyZWFrcG9pbnQgKGdkYmFyY2gsIHByb2JlLT5hZGRyZXNzKTsKKysJCX0KKysKKysJICAg ICAgc3ZyNF91cGRhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMgKCk7CisrCSAgICAgIHJldHVy bjsKKysJICAgIH0KKysJfQorKyAgICB9CisrCisrICBjcmVhdGVfc29saWJfZXZlbnRfYnJlYWtw b2ludCAoZ2RiYXJjaCwgYWRkcmVzcyk7CisrfQorKworIC8qIEhlbHBlciBmdW5jdGlvbiBmb3Ig Z2RiX2JmZF9sb29rdXBfc3ltYm9sLiAgKi8KKyAKKyBzdGF0aWMgaW50CitAQCAtMTUwMiw2ICsy MTQ1LDkgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBpbgorICAgaW5m by0+aW50ZXJwX3RleHRfc2VjdF9sb3cgPSBpbmZvLT5pbnRlcnBfdGV4dF9zZWN0X2hpZ2ggPSAw OworICAgaW5mby0+aW50ZXJwX3BsdF9zZWN0X2xvdyA9IGluZm8tPmludGVycF9wbHRfc2VjdF9o aWdoID0gMDsKKyAKKysgIGZyZWVfcHJvYmVzIChpbmZvKTsKKysgIGluZm8tPnVzaW5nX3Byb2Jl cyA9IDA7CisrCisgICAvKiBJZiB3ZSBhbHJlYWR5IGhhdmUgYSBzaGFyZWQgbGlicmFyeSBsaXN0 IGluIHRoZSB0YXJnZXQsIGFuZAorICAgICAgcl9kZWJ1ZyBjb250YWlucyByX2Jyaywgc2V0IHRo ZSBicmVha3BvaW50IHRoZXJlIC0gdGhpcyBzaG91bGQKKyAgICAgIG1lYW4gcl9icmsgaGFzIGFs cmVhZHkgYmVlbiByZWxvY2F0ZWQuICBBc3N1bWUgdGhlIGR5bmFtaWMgbGlua2VyCitAQCAtMTUz Myw3ICsyMTc5LDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBpbgor IAkgVGhhdCBrbm93bGVkZ2UgaXMgZW5jb2RlZCBpbiB0aGUgYWRkcmVzcywgaWYgaXQncyBUaHVt YiB0aGUgbG93IGJpdAorIAkgaXMgMS4gIEhvd2V2ZXIsIHdlJ3ZlIHN0cmlwcGVkIHRoYXQgaW5m byBhYm92ZSBhbmQgaXQncyBub3QgY2xlYXIKKyAJIHdoYXQgYWxsIHRoZSBjb25zZXF1ZW5jZXMg YXJlIG9mIHBhc3NpbmcgYSBub24tYWRkcl9iaXRzX3JlbW92ZSdkCistCSBhZGRyZXNzIHRvIGNy ZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50LiAgVGhlIGNhbGwgdG8KKysJIGFkZHJlc3MgdG8g c3ZyNF9jcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMuICBUaGUgY2FsbCB0bworIAkgZmlu ZF9wY19zZWN0aW9uIHZlcmlmaWVzIHdlIGtub3cgYWJvdXQgdGhlIGFkZHJlc3MgYW5kIGhhdmUg c29tZQorIAkgaG9wZSBvZiBjb21wdXRpbmcgdGhlIHJpZ2h0IGtpbmQgb2YgYnJlYWtwb2ludCB0 byB1c2UgKHZpYQorIAkgc3ltYm9sIGluZm8pLiAgSXQgZG9lcyBtZWFuIHRoYXQgR0RCIG5lZWRz IHRvIGJlIHBvaW50ZWQgYXQgYQorQEAgLTE1NzEsNyArMjIxNyw3IEBAIGVuYWJsZV9icmVhayAo c3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW4KKyAJCSsgYmZkX3NlY3Rpb25fc2l6ZSAodG1wX2Jm ZCwgaW50ZXJwX3NlY3QpOworIAkgICAgfQorIAorLQkgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVh a3BvaW50ICh0YXJnZXRfZ2RiYXJjaCwgc3ltX2FkZHIpOworKwkgIHN2cjRfY3JlYXRlX3NvbGli X2V2ZW50X2JyZWFrcG9pbnRzICh0YXJnZXRfZ2RiYXJjaCwgc3ltX2FkZHIpOworIAkgIHJldHVy biAxOworIAl9CisgICAgIH0KK0BAIC0xNzI5LDcgKzIzNzUsOCBAQCBlbmFibGVfYnJlYWsgKHN0 cnVjdCBzdnI0X2luZm8gKmluZm8sIGluCisgCisgICAgICAgaWYgKHN5bV9hZGRyICE9IDApCisg CXsKKy0JICBjcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludCAodGFyZ2V0X2dkYmFyY2gsIGxv YWRfYWRkciArIHN5bV9hZGRyKTsKKysJICBzdnI0X2NyZWF0ZV9zb2xpYl9ldmVudF9icmVha3Bv aW50cyAodGFyZ2V0X2dkYmFyY2gsCisrCQkJCQkgICAgICAgbG9hZF9hZGRyICsgc3ltX2FkZHIp OworIAkgIHhmcmVlIChpbnRlcnBfbmFtZSk7CisgCSAgcmV0dXJuIDE7CisgCX0KK0BAIC0xNzU1 LDcgKzI0MDIsNyBAQCBlbmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8sIGluCisg CSAgc3ltX2FkZHIgPSBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyICh0YXJnZXRf Z2RiYXJjaCwKKyAJCQkJCQkJIHN5bV9hZGRyLAorIAkJCQkJCQkgJmN1cnJlbnRfdGFyZ2V0KTsK Ky0JICBjcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludCAodGFyZ2V0X2dkYmFyY2gsIHN5bV9h ZGRyKTsKKysJICBzdnI0X2NyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50cyAodGFyZ2V0X2dk YmFyY2gsIHN5bV9hZGRyKTsKKyAJICByZXR1cm4gMTsKKyAJfQorICAgICB9CitAQCAtMTc3MSw3 ICsyNDE4LDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBpbgorIAkg ICAgICBzeW1fYWRkciA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHRhcmdl dF9nZGJhcmNoLAorIAkJCQkJCQkgICAgIHN5bV9hZGRyLAorIAkJCQkJCQkgICAgICZjdXJyZW50 X3RhcmdldCk7CistCSAgICAgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50ICh0YXJnZXRf Z2RiYXJjaCwgc3ltX2FkZHIpOworKwkgICAgICBzdnI0X2NyZWF0ZV9zb2xpYl9ldmVudF9icmVh a3BvaW50cyAodGFyZ2V0X2dkYmFyY2gsIHN5bV9hZGRyKTsKKyAJICAgICAgcmV0dXJuIDE7Cisg CSAgICB9CisgCX0KK0BAIC0yMjgxLDYgKzI5MjgsOSBAQCBzdnI0X3NvbGliX2NyZWF0ZV9pbmZl cmlvcl9ob29rIChpbnQgZnJvCisgCisgICBpbmZvID0gZ2V0X3N2cjRfaW5mbyAoKTsKKyAKKysg IC8qIEZyZWUgdGhlIHByb2Jlcy1iYXNlZCBpbnRlcmZhY2UncyBuYW1lc3BhY2UgdGFibGUuICAq LworKyAgZnJlZV9uYW1lc3BhY2VfdGFibGUgKGluZm8pOworKworICAgLyogUmVsb2NhdGUgdGhl IG1haW4gZXhlY3V0YWJsZSBpZiBuZWNlc3NhcnkuICAqLworICAgc3ZyNF9yZWxvY2F0ZV9tYWlu X2V4ZWN1dGFibGUgKCk7CisgCitAQCAtMjU0Nyw0ICszMTk3LDYgQEAgX2luaXRpYWxpemVfc3Zy NF9zb2xpYiAodm9pZCkKKyAgIHN2cjRfc29fb3BzLmxvb2t1cF9saWJfZ2xvYmFsX3N5bWJvbCA9 IGVsZl9sb29rdXBfbGliX3N5bWJvbDsKKyAgIHN2cjRfc29fb3BzLnNhbWUgPSBzdnI0X3NhbWU7 CisgICBzdnI0X3NvX29wcy5rZWVwX2RhdGFfaW5fY29yZSA9IHN2cjRfa2VlcF9kYXRhX2luX2Nv cmU7CisrICBzdnI0X3NvX29wcy5oYW5kbGVfc29saWJfZXZlbnQgPSBzdnI0X2hhbmRsZV9zb2xp Yl9ldmVudDsKKysgIHN2cjRfc29fb3BzLnVwZGF0ZV9icmVha3BvaW50cyA9IHN2cjRfdXBkYXRl X3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzOworIH0KK0luZGV4OiBnZGItNy40LjkxLjIwMTIwODE0 L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstZGxtb3Blbi1zb2xpYi5jCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysg Z2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWRsbW9wZW4t c29saWIuYwkyMDEyLTA4LTE0IDE3OjM0OjQ0LjMzMDc0NjU5MSArMDIwMAorQEAgLTAsMCArMSwy NCBAQAorKy8qIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor KworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVk ZSA8c3RkaW8uaD4KKysKKytpbnQKKytmb28gKGludCBuKQorK3sKKysgIHByaW50ZiAoImZvbyAl ZFxuIiwgbik7CisrCisrICByZXR1cm4gMDsKKyt9CitJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgx NC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWRsbW9wZW4uYworPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03 LjQuOTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1kbG1vcGVuLmMJMjAx Mi0wOC0xNCAxNzozNDo0NC4zMzk3NDY1NzYgKzAyMDAKK0BAIC0wLDAgKzEsNTggQEAKKysvKiBD b3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisr ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2RlZmluZSBfR05VX1NPVVJD RQorKyNpbmNsdWRlIDxkbGZjbi5oPgorKworK3ZvaWQKKytzdG9wICgpCisreworK30KKysKKytp bnQKKyttYWluICgpCisreworKyAgdm9pZCAqaGFuZGxlMSwgKmhhbmRsZTIsICpoYW5kbGUzOwor KyAgdm9pZCAoKmZ1bmMpKGludCk7CisrCisrICBoYW5kbGUxID0gZGxtb3BlbiAoTE1fSURfTkVX TE0sIFNITElCX05BTUUsIFJUTERfTEFaWSk7CisrICBzdG9wICgpOworKworKyAgZnVuYyA9ICh2 b2lkICgqKShpbnQpKSBkbHN5bSAoaGFuZGxlMSwgImZvbyIpOworKyAgZnVuYyAoMSk7CisrCisr ICBoYW5kbGUyID0gZGxtb3BlbiAoTE1fSURfTkVXTE0sIFNITElCX05BTUUsIFJUTERfTEFaWSk7 CisrICBzdG9wICgpOworKworKyAgZnVuYyA9ICh2b2lkICgqKShpbnQpKSBkbHN5bSAoaGFuZGxl MiwgImZvbyIpOworKyAgZnVuYyAoMik7CisrCisrICBoYW5kbGUzID0gZGxvcGVuIChTSExJQl9O QU1FLCBSVExEX0xBWlkpOworKyAgc3RvcCAoKTsKKysKKysgIGZ1bmMgPSAodm9pZCAoKikoaW50 KSkgZGxzeW0gKGhhbmRsZTMsICJmb28iKTsKKysgIGZ1bmMgKDMpOworKworKyAgZGxjbG9zZSAo aGFuZGxlMSk7CisrICBzdG9wICgpOworKworKyAgZGxjbG9zZSAoaGFuZGxlMik7CisrICBzdG9w ICgpOworKworKyAgZGxjbG9zZSAoaGFuZGxlMyk7CisrICBzdG9wICgpOworKworKyAgcmV0dXJu IDA7CisrfQorSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9icmVhay1kbG1vcGVuLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAx IDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9icmVhay1kbG1vcGVuLmV4cAkyMDEyLTA4LTE0IDE3OjM0OjQ0LjM0 Mzc0NjU2MyArMDIwMAorQEAgLTAsMCArMSwxMjUgQEAKKysjIENvcHlyaWdodCAyMDEyIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KKysKKytpZiB7IFtza2lwX3NobGliX3Rlc3RzXSB8fCBbaXNfcmVtb3RlIHRhcmdldF0gfSB7 CisrICAgIHJldHVybiAwCisrfQorKworK3N0YW5kYXJkX3Rlc3RmaWxlCisrCisrc2V0IGxpYm5h bWUgJHRlc3RmaWxlLXNvbGliCisrc2V0IHNyY2ZpbGVfbGliICRzcmNkaXIvJHN1YmRpci8kbGli bmFtZS5jCisrc2V0IGJpbmZpbGVfbGliIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAkbGlibmFtZS5z b10KKysKKytzZXQgbm9ybWFsX2JwICJfZGxfZGVidWdfc3RhdGUiCisrc2V0IHByb2Jlc19icCAi ZGxfbWFpbiIKKysKKytpZiB7IFtnZGJfY29tcGlsZV9zaGxpYiAkc3JjZmlsZV9saWIgJGJpbmZp bGVfbGliIFwKKysJICBbbGlzdCBhZGRpdGlvbmFsX2ZsYWdzPS1mUElDXV0gIT0gIiIgfSB7Cisr ICAgIHVudGVzdGVkICJDb3VsZCBub3QgY29tcGlsZSAkYmluZmlsZV9saWIuIgorKyAgICByZXR1 cm4gLTEKKyt9CisrCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAkdGVzdGZpbGUuZXhwICR0 ZXN0ZmlsZSAkc3JjZmlsZSBcCisrCSAgW2xpc3QgYWRkaXRpb25hbF9mbGFncz0tRFNITElCX05B TUVcPVwiJGJpbmZpbGVfbGliXCIgbGlicz0tbGRsXV0gfSB7CisrICAgIHJldHVybiAtMQorK30K KysKKysjIFJ1biAiaW5mbyBzaGFyZWRsaWJyYXJ5IiBhbmQgY2hlY2sgb3VyIGxpYnJhcnkgaXMg c2hvd24gdGhlIGV4cGVjdGVkCisrIyBudW1iZXIgb2YgdGltZXMuCisrcHJvYyBjaGVja19pbmZv X3NoYXJlZCB7IHRlc3QgZXhwZWN0IH0geworKyAgICBnbG9iYWwgbGlibmFtZQorKyAgICBnbG9i YWwgZ2RiX3Byb21wdAorKworKyAgICBzZXQgYWN0dWFsIDAKKysKKysgICAgZ2RiX3Rlc3RfbXVs dGlwbGUgImluZm8gc2hhcmVkbGlicmFyeSIgJHRlc3QgeworKwktcmUgJGxpYm5hbWUgeworKwkg ICAgaW5jciBhY3R1YWwgMQorKwkgICAgZXhwX2NvbnRpbnVlCisrCX0KKysJLXJlICJcclxuJGdk Yl9wcm9tcHQgJCIgeworKwkgICAgaWYgeyAkYWN0dWFsID09ICRleHBlY3QgfSB7CisrCQlwYXNz ICR0ZXN0CisrCSAgICB9IGVsc2UgeworKwkJZmFpbCAkdGVzdAorKwkgICAgfQorKwl9CisrICAg IH0KKyt9CisrCisrIyBFbmFibGUgc3RvcC1vbi1zb2xpYi1ldmVudHMKKytnZGJfdGVzdF9ub19v dXRwdXQgInNldCBzdG9wLW9uLXNvbGliLWV2ZW50cyAxIgorKworKyMgUnVuIHRvIHRoZSBmaXJz dCBzdG9wCisrZ2RiX3Rlc3QgInJ1biIgIi4qU3RvcHBlZCBkdWUgdG8gc2hhcmVkIGxpYnJhcnkg ZXZlbnQuKiIKKysKKysjIFhGQUlMIGlmIHdlIGFyZSBub3QgdXNpbmcgcHJvYmVzCisrc2V0IHRl c3QgImVuc3VyZSB1c2luZyBwcm9iZXMiCisrc2V0IHVzaW5nX3Byb2JlcyAwCisrZ2RiX3Rlc3Rf bXVsdGlwbGUgImJ0IiAkdGVzdCB7CisrICAgIC1yZSAiIzAgK1xbXlxyXG5cXSpcXG0oX19HSV8p PyRub3JtYWxfYnBcXE0uKiRnZGJfcHJvbXB0ICQiIHsKKysJeGZhaWwgJHRlc3QKKysgICAgfQor KyAgICAtcmUgIiMwICtcW15cclxuXF0qXFxtKF9fR0lfKT8kcHJvYmVzX2JwXFxNLiokZ2RiX3By b21wdCAkIiB7CisrCXBhc3MgJHRlc3QKKysJc2V0IHVzaW5nX3Byb2JlcyAxCisrICAgIH0KKyt9 CisrCisraWYgeyAkdXNpbmdfcHJvYmVzIH0geworKyAgICAjIFNldCB1cCBicmVha3BvaW50cy4K KysgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgc3RvcC1vbi1zb2xpYi1ldmVudHMgMCIKKysg ICAgZ2RiX3Rlc3QgImJyZWFrIHN0b3AiIHtCcmVha3BvaW50IFswLTldKyBhdCAuKn0KKysgICAg Z2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYnJlYWtwb2ludCBwZW5kaW5nIG9uIgorKyAgICBnZGJf dGVzdCAiYnJlYWsgZm9vIiB7QnJlYWtwb2ludCBbMC05XSsgXChmb29cKSBwZW5kaW5nXC59Cisr CisrICAgICMgQ2hlY2sgb3VyIGxpYnJhcnkgaXNuJ3QgbG9hZGVkLgorKyAgICBjaGVja19pbmZv X3NoYXJlZCAiaW5mbyBzaGFyZWRsaWJyYXJ5ICMxIiAwCisrCisrICAgICMgUnVuIHRvIHRoZSBm aXJzdCBzdG9wIGFuZCBjaGVjayBvdXIgbGlicmFyeSBsb2FkZWQuCisrICAgIGdkYl90ZXN0ICJj IiB7QnJlYWtwb2ludCBbMC05XSssIC4qIGluIHN0b3AgXChcKX0KKysgICAgY2hlY2tfaW5mb19z aGFyZWQgImluZm8gc2hhcmVkbGlicmFyeSAjMiIgMQorKworKyAgICAjIFRoZSBuZXh0IHN0b3Ag c2hvdWxkIGJlIHRoZSBmdW5jdGlvbiBpbiB0aGUgbGlicmFyeS4KKysgICAgZ2RiX3Rlc3QgImMi IHtCcmVha3BvaW50IFswLTldKywgLiogaW4gZm9vIFwoXCkgZnJvbSAuKn0KKysKKysgICAgIyBS dW4gdG8gdGhlIG5leHQgc3RvcCBhbmQgY2hlY2sgb3VyIGxpYnJhcnkgaXMgbm93IGxvYWRlZCB0 d2ljZS4KKysgICAgZ2RiX3Rlc3QgImMiIHtCcmVha3BvaW50IFswLTldKywgLiogaW4gc3RvcCBc KFwpfQorKyAgICBjaGVja19pbmZvX3NoYXJlZCAiaW5mbyBzaGFyZWRsaWJyYXJ5ICMzIiAyCisr CisrICAgICMgVGhlIG5leHQgc3RvcCBzaG91bGQgYmUgdGhlIGZ1bmN0aW9uIGluIHRoZSBsaWJy YXJ5LgorKyAgICBnZGJfdGVzdCAiYyIge0JyZWFrcG9pbnQgWzAtOV0rLCAuKiBpbiBmb28gXChc KSBmcm9tIC4qfQorKworKyAgICAjIFJ1biB0byB0aGUgbmV4dCBzdG9wIGFuZCBjaGVjayBvdXIg bGlicmFyeSBpcyBub3cgbG9hZGVkIHRocmVlCisrICAgICMgdGltZXMuCisrICAgIGdkYl90ZXN0 ICJjIiB7QnJlYWtwb2ludCBbMC05XSssIC4qIGluIHN0b3AgXChcKX0KKysgICAgY2hlY2tfaW5m b19zaGFyZWQgImluZm8gc2hhcmVkbGlicmFyeSAjNCIgMworKworKyAgICAjIFRoZSBuZXh0IHN0 b3Agc2hvdWxkIGJlIHRoZSBmdW5jdGlvbiBpbiB0aGUgbGlicmFyeS4KKysgICAgZ2RiX3Rlc3Qg ImMiIHtCcmVha3BvaW50IFswLTldKywgLiogaW4gZm9vIFwoXCkgZnJvbSAuKn0KKysKKysgICAg IyBSdW4gdG8gdGhlIG5leHQgc3RvcCBhbmQgY2hlY2sgb3VyIGxpYnJhcnkgaXMgbm93IGxvYWRl ZCB0d2ljZS4KKysgICAgZ2RiX3Rlc3QgImMiIHtCcmVha3BvaW50IFswLTldKywgLiogaW4gc3Rv cCBcKFwpfQorKyAgICBjaGVja19pbmZvX3NoYXJlZCAiaW5mbyBzaGFyZWRsaWJyYXJ5ICM1IiAy CisrCisrICAgICMgUnVuIHRvIHRoZSBuZXh0IHN0b3AgYW5kIGNoZWNrIG91ciBsaWJyYXJ5IGlz IG5vdyBsb2FkZWQgb25jZS4KKysgICAgZ2RiX3Rlc3QgImMiIHtCcmVha3BvaW50IFswLTldKywg LiogaW4gc3RvcCBcKFwpfQorKyAgICBjaGVja19pbmZvX3NoYXJlZCAiaW5mbyBzaGFyZWRsaWJy YXJ5ICM2IiAxCisrCisrICAgICMgUnVuIHRvIHRoZSBuZXh0IHN0b3AgYW5kIGNoZWNrIG91ciBs aWJyYXJ5IGlzIG5vdCBsb2FkZWQuCisrICAgIGdkYl90ZXN0ICJjIiB7QnJlYWtwb2ludCBbMC05 XSssIC4qIGluIHN0b3AgXChcKX0KKysgICAgY2hlY2tfaW5mb19zaGFyZWQgImluZm8gc2hhcmVk bGlicmFyeSAjNyIgMAorK30KK0luZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuOTEu MjAxMjA4MTQub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAJMjAx Mi0wNi0yMSAyMjo0NjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjkxLjIwMTIwODE0 L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAkyMDEyLTA4LTE0IDE3OjM0 OjQ0LjM0NDc0NjU2NSArMDIwMAorQEAgLTEwOSwxMiArMTA5LDE5IEBAIHByb2Mgc3RyaXBfZGVi dWcge2Rlc3R9IHsKKyAgICAgfQorIH0KKyAKKysjIFRoZSBtYXJrZXIgZnVuY3Rpb24gZm9yIHRo ZSBzdGFuZGFyZCBydW50aW1lIGxpbmtlciBpbnRlcmZhY2UgaXMKKysjIF9kbF9kZWJ1Z19zdGF0 ZS4gIFRoZSBwcm9iZXMtYmFzZWQgaW50ZXJmYWNlIGhhcyBubyBzcGVjaWZpYyBtYXJrZXIKKysj IGZ1bmN0aW9uOyB0aGUgcHJvYmUgd2Ugd2lsbCBzdG9wIG9uIChpbml0X3N0YXJ0KSBpcyBpbiBk bF9tYWluIHNvIHdlCisrIyBjaGVjayBmb3IgdGhhdC4KKysKKytzZXQgc29saWJfYnAgeyhfZGxf ZGVidWdfc3RhdGV8ZGxfbWFpbil9CisrCisgIyBJbXBsZW1lbnRhdGlvbiBvZiByZWFjaC4KKyAK KyBwcm9jIHJlYWNoXzEge2Z1bmMgY29tbWFuZCBkaXNwbGFjZW1lbnR9IHsKKy0gICAgZ2xvYmFs IGdkYl9wcm9tcHQgZXhwZWN0X291dAorKyAgICBnbG9iYWwgZ2RiX3Byb21wdCBleHBlY3Rfb3V0 IHNvbGliX2JwCisgCistICAgIGlmIHskZnVuYyA9PSAiX2RsX2RlYnVnX3N0YXRlIn0geworKyAg ICBpZiB7JGZ1bmMgPT0gJHNvbGliX2JwfSB7CisgCSMgQnJlYWtwb2ludCBvbiBfZGxfZGVidWdf c3RhdGUgY2FuIGhhdmUgcHJvYmxlbXMgZHVlIHRvIGl0cyBvdmVybGFwCisgCSMgd2l0aCB0aGUg ZXhpc3RpbmcgaW50ZXJuYWwgYnJlYWtwb2ludCBmcm9tIEdEQi4KKyAJZ2RiX3Rlc3Rfbm9fb3V0 cHV0ICJzZXQgc3RvcC1vbi1zb2xpYi1ldmVudHMgMSIKK0BAIC0xNDIsMjEgKzE0OSwyMSBAQCBw cm9jIHJlYWNoXzEge2Z1bmMgY29tbWFuZCBkaXNwbGFjZW1lbnR9CisgCSAgICBleHBfY29udGlu dWUKKyAJfQorIAktcmUgIkJyZWFrcG9pbnQgXFswLTlcXSssIFxcLj8oX19HSV8pPyRmdW5jIFxc KC4qXFwpIGF0IC4qOlxbMC05XF0rXHJcbi4qJGdkYl9wcm9tcHQgJCIgeworLQkgICAgaWYgeyRm dW5jID09ICJfZGxfZGVidWdfc3RhdGUifSB7CisrCSAgICBpZiB7JGZ1bmMgPT0gJHNvbGliX2Jw fSB7CisgCQlmYWlsICR0ZXN0CisgCSAgICB9IGVsc2UgeworIAkJcGFzcyAkdGVzdAorIAkgICAg fQorIAl9CisgCS1yZSAiQnJlYWtwb2ludCBcWzAtOVxdKywgXFswLTl4YS1mXF0rIGluIFxcLj8o X19HSV8pPyRmdW5jIFxcKFxcKS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKKy0JICAgIGlmIHskZnVu YyA9PSAiX2RsX2RlYnVnX3N0YXRlIn0geworKwkgICAgaWYgeyRmdW5jID09ICRzb2xpYl9icH0g eworIAkJZmFpbCAkdGVzdAorIAkgICAgfSBlbHNlIHsKKyAJCXBhc3MgJHRlc3QKKyAJICAgIH0K KyAJfQorIAktcmUgIlN0b3BwZWQgZHVlIHRvIChzcHVyaW91cyApP3NoYXJlZCBsaWJyYXJ5IGV2 ZW50LipcclxuJGdkYl9wcm9tcHQgJCIgeworLQkgICAgaWYgeyRmdW5jID09ICJfZGxfZGVidWdf c3RhdGUifSB7CisrCSAgICBpZiB7JGZ1bmMgPT0gJHNvbGliX2JwfSB7CisgCQlpZiB7JGRlYnVn X3N0YXRlX2NvdW50ID09IDB9IHsKKyAJCSAgICAjIEZpcnN0IHN0b3AgZG9lcyBub3QgeWV0IHJl bG9jYXRlIHRoZSBfc3RhcnQgZnVuY3Rpb24KKyAJCSAgICAjIGRlc2NyaXB0b3Igb24gcHBjNjQu CitAQCAtMTc1LDcgKzE4Miw3IEBAIHByb2MgcmVhY2hfMSB7ZnVuYyBjb21tYW5kIGRpc3BsYWNl bWVudH0KKyAJZmFpbCAkdGVzdF9kaXNwbGFjZW1lbnQKKyAgICAgfQorIAorLSAgICBpZiB7JGZ1 bmMgPT0gIl9kbF9kZWJ1Z19zdGF0ZSJ9IHsKKysgICAgaWYgeyRmdW5jID09ICRzb2xpYl9icH0g eworIAlnZGJfdGVzdF9ub19vdXRwdXQgInNldCBzdG9wLW9uLXNvbGliLWV2ZW50cyAwIgorICAg ICB9CisgfQorQEAgLTM1Nyw3ICszNjQsNyBAQCBwcm9jIHRlc3RfYXR0YWNoIHtmaWxlIGRpc3Bs YWNlbWVudCB7cmVsCisgfQorIAorIHByb2MgdGVzdF9sZCB7ZmlsZSBpZm1haW4gdHJ5bm9zeW0g ZGlzcGxhY2VtZW50fSB7CistICAgIGdsb2JhbCBzcmNkaXIgc3ViZGlyIGdkYl9wcm9tcHQgZXhw ZWN0X291dCBpbmZlcmlvcl9leGl0ZWRfcmUKKysgICAgZ2xvYmFsIHNyY2RpciBzdWJkaXIgZ2Ri X3Byb21wdCBleHBlY3Rfb3V0IGluZmVyaW9yX2V4aXRlZF9yZSBzb2xpYl9icAorIAorICAgICAj IEZpcnN0IHRlc3Qgbm9ybWFsIGBmaWxlJy1jb21tYW5kIGxvYWRlZCAkRklMRSB3aXRoIHN5bWJv bHMuCisgCitAQCAtMzg1LDkgKzM5Miw5IEBAIHByb2MgdGVzdF9sZCB7ZmlsZSBpZm1haW4gdHJ5 bm9zeW0gZGlzcGwKKyAJZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYXJncyAke29iamRpcn0vJHtz dWJkaXJ9LyRiaW5maWxlX3Rlc3QiICJzZXQgYXJncyBPQkpESVIvJHtzdWJkaXJ9LyRiaW5maWxl X3Rlc3QiCisgICAgIH0KKyAKKy0gICAgcmVhY2ggIl9kbF9kZWJ1Z19zdGF0ZSIgInJ1biIgJGRp c3BsYWNlbWVudAorKyAgICByZWFjaCAkc29saWJfYnAgInJ1biIgJGRpc3BsYWNlbWVudAorIAor LSAgICBnZGJfdGVzdCAiYnQiICIjMCArXFteXHJcblxdKlxcbShfX0dJXyk/X2RsX2RlYnVnX3N0 YXRlXFxNLioiICJkbCBidCIKKysgICAgZ2RiX3Rlc3QgImJ0IiAiIzAgK1xbXlxyXG5cXSpcXG0o X19HSV8pPyRzb2xpYl9icFxcTS4qIiAiZGwgYnQiCisgCisgICAgIGlmICRpZm1haW4geworIAly ZWFjaCAibWFpbiIgY29udGludWUgIk5PTkUiCitAQCAtMzk5LDcgKzQwNiw3IEBAIHByb2MgdGVz dF9sZCB7ZmlsZSBpZm1haW4gdHJ5bm9zeW0gZGlzcGwKKyAKKyAgICAgIyBUcnkgcmUtcnVuIGlm IHRoZSBuZXcgUElFIGRpc3BsYWNlbWVudCB0YWtlcyBlZmZlY3QuCisgICAgIGdkYl90ZXN0ICJr aWxsIiAiIiAia2lsbCIge0tpbGwgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWRcPyBcKHkgb3Ig blwpIH0gInkiCistICAgIHJlYWNoICJfZGxfZGVidWdfc3RhdGUiICJydW4iICRkaXNwbGFjZW1l bnQKKysgICAgcmVhY2ggJHNvbGliX2JwICJydW4iICRkaXNwbGFjZW1lbnQKKyAKKyAgICAgaWYg JGlmbWFpbiB7CisgCXRlc3RfY29yZSAkZmlsZSAkZGlzcGxhY2VtZW50CitAQCAtNDMxLDcgKzQz OCw3IEBAIHByb2MgdGVzdF9sZCB7ZmlsZSBpZm1haW4gdHJ5bm9zeW0gZGlzcGwKKyAJZ2RiX3Rl c3QgImV4ZWMtZmlsZSAkZmlsZSIgImV4ZWMtZmlsZSAkZXNjYXBlZGZpbGUiICJsb2FkIgorIAor IAlpZiAkaWZtYWluIHsKKy0JICAgIHJlYWNoICJfZGxfZGVidWdfc3RhdGUiIHJ1biAkZGlzcGxh Y2VtZW50CisrCSAgICByZWFjaCAkc29saWJfYnAgcnVuICRkaXNwbGFjZW1lbnQKKyAKKyAJICAg ICMgVXNlIHR3byBzZXBhcmF0ZSBnZGJfdGVzdF9tdWx0aXBsZSBzdGF0ZW1lbnRzIHRvIGF2b2lk IHRpbWVvdXRzIGR1ZQorIAkgICAgIyB0byBzbG93IHByb2Nlc3Npbmcgb2Ygd2lsZGNhcmQgY2Fw dHVyaW5nIGxvbmcgb3V0cHV0CitJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2JyZWFrLXByb2Jlcy1zb2xpYi5jCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9u dWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNC45MS4y MDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLXByb2Jlcy1zb2xpYi5jCTIwMTIt MDgtMTQgMTc6MzQ6NDQuMzU1NzQ2NTYxICswMjAwCitAQCAtMCwwICsxLDI0IEBACisrLyogQ29w eXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpbmNsdWRlIDxzdGRpby5oPgor KworK2ludAorK2ZvbyAoaW50IG4pCisreworKyAgcHJpbnRmICgiZm9vICVkXG4iLCBuKTsKKysK KysgIHJldHVybiAwOworK30KK0luZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvYnJlYWstcHJvYmVzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3 MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy40LjkxLjIwMTIwODE0 L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstcHJvYmVzLmMJMjAxMi0wOC0xNCAxNzozNDo0 NC4zNjI3NDY1NjEgKzAyMDAKK0BAIC0wLDAgKzEsMjYgQEAKKysvKiBDb3B5cmlnaHQgMjAxMiBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgPGRsZmNuLmg+CisrCisraW50CisrbWFp biAoKQorK3sKKysgIHZvaWQgKmhhbmRsZSA9IGRsb3BlbiAoU0hMSUJfTkFNRSwgUlRMRF9MQVpZ KTsKKysKKysgIGRsY2xvc2UgKGhhbmRsZSk7CisrCisrICByZXR1cm4gMDsKKyt9CitJbmRleDog Z2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLXByb2Jlcy5l eHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKKysrKyBnZGItNy40LjkxLjIwMTIwODE0L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv YnJlYWstcHJvYmVzLmV4cAkyMDEyLTA4LTE0IDE3OjM0OjQ0LjM2Mzc0NjU2MSArMDIwMAorQEAg LTAsMCArMSw3NiBAQAorKyMgQ29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisr IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworK2lmIHsgW3NraXBf c2hsaWJfdGVzdHNdIHx8IFtpc19yZW1vdGUgdGFyZ2V0XSB9IHsKKysgICAgcmV0dXJuIDAKKyt9 CisrCisrc3RhbmRhcmRfdGVzdGZpbGUKKysKKytzZXQgbGlibmFtZSAkdGVzdGZpbGUtc29saWIK KytzZXQgc3JjZmlsZV9saWIgJHNyY2Rpci8kc3ViZGlyLyRsaWJuYW1lLmMKKytzZXQgYmluZmls ZV9saWIgW3N0YW5kYXJkX291dHB1dF9maWxlICRsaWJuYW1lLnNvXQorKworK3NldCBub3JtYWxf YnAgIl9kbF9kZWJ1Z19zdGF0ZSIKKytzZXQgcHJvYmVzX2JwICJkbF9tYWluIgorKworK2lmIHsg W2dkYl9jb21waWxlX3NobGliICRzcmNmaWxlX2xpYiAkYmluZmlsZV9saWIgXAorKwkgIFtsaXN0 IGFkZGl0aW9uYWxfZmxhZ3M9LWZQSUNdXSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxk IG5vdCBjb21waWxlICRiaW5maWxlX2xpYi4iCisrICAgIHJldHVybiAtMQorK30KKysKKytpZiB7 IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxlICRzcmNmaWxlIFwK KysJICBbbGlzdCBhZGRpdGlvbmFsX2ZsYWdzPS1EU0hMSUJfTkFNRVw9XCIkYmluZmlsZV9saWJc IiBsaWJzPS1sZGxdXSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworKyMgRW5hYmxlIHN0b3At b24tc29saWItZXZlbnRzCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgc3RvcC1vbi1zb2xpYi1l dmVudHMgMSIKKysKKysjIFJ1biB0byB0aGUgZmlyc3Qgc3RvcAorK2dkYl90ZXN0ICJydW4iICIu KlN0b3BwZWQgZHVlIHRvIHNoYXJlZCBsaWJyYXJ5IGV2ZW50LioiCisrCisrIyBYRkFJTCBpZiB3 ZSBhcmUgbm90IHVzaW5nIHByb2JlcworK3NldCB0ZXN0ICJlbnN1cmUgdXNpbmcgcHJvYmVzIgor K3NldCB1c2luZ19wcm9iZXMgMAorK2dkYl90ZXN0X211bHRpcGxlICJidCIgJHRlc3QgeworKyAg ICAtcmUgIiMwICtcW15cclxuXF0qXFxtKF9fR0lfKT8kbm9ybWFsX2JwXFxNLiokZ2RiX3Byb21w dCAkIiB7CisrCXhmYWlsICR0ZXN0CisrICAgIH0KKysgICAgLXJlICIjMCArXFteXHJcblxdKlxc bShfX0dJXyk/JHByb2Jlc19icFxcTS4qJGdkYl9wcm9tcHQgJCIgeworKwlwYXNzICR0ZXN0Cisr CXNldCB1c2luZ19wcm9iZXMgMQorKyAgICB9CisrfQorKworK2lmIHsgJHVzaW5nX3Byb2JlcyB9 IHsKKysgICAgIyBSdW4gdGlsIGl0IGxvYWRzIG91ciBsaWJyYXJ5CisrICAgIHNldCB0ZXN0ICJy dW4gdGlsIG91ciBsaWJyYXJ5IGxvYWRzIgorKyAgICBzZXQgbG9hZGVkX2xpYnJhcnkgMAorKyAg ICB3aGlsZSB7ICEkbG9hZGVkX2xpYnJhcnkgfSB7CisrCWdkYl90ZXN0X211bHRpcGxlICJjIiAk dGVzdCB7CisrCSAgICAtcmUgIkluZmVyaW9yIGxvYWRlZCAkYmluZmlsZV9saWJcXE0uKiRnZGJf cHJvbXB0ICQiIHsKKysJCXBhc3MgJHRlc3QKKysJCXNldCBsb2FkZWRfbGlicmFyeSAxCisrCSAg ICB9CisrCSAgICAtcmUgIlN0b3BwZWQgZHVlIHRvIHNoYXJlZCBsaWJyYXJ5IGV2ZW50XFxNLiok Z2RiX3Byb21wdCAkIiB7CisrCSAgICB9CisrCX0KKysgICAgfQorKworKyAgICAjIENhbGwgc29t ZXRoaW5nIHRvIGVuc3VyZSB0aGF0IHJlbG9jYXRpb24gb2NjdXJyZWQKKysgICAgZ2RiX3Rlc3Qg ImNhbGwgZm9vKDIzKSIgImZvbyAyMy4qXFxcJC4qID0gLioiCisrfQorSW5kZXg6IGdkYi03LjQu OTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJlZC1zb2xpYjEuYwor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCAr MDAwMAorKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZv LXNoYXJlZC1zb2xpYjEuYwkyMDEyLTA4LTE0IDE3OjM0OjQ0LjM2NTc0NjU2MSArMDIwMAorQEAg LTAsMCArMSwyNCBAQAorKy8qIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysK KysjaW5jbHVkZSA8c3RkaW8uaD4KKysKKytpbnQKKytmb28gKGludCBuKQorK3sKKysgIHByaW50 ZiAoImZvbyAlZFxuIiwgbik7CisrCisrICByZXR1cm4gMDsKKyt9CitJbmRleDogZ2RiLTcuNC45 MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2luZm8tc2hhcmVkLXNvbGliMi5jCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICsw MDAwCisrKysgZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2luZm8t c2hhcmVkLXNvbGliMi5jCTIwMTItMDgtMTQgMTc6MzQ6NDQuMzY1NzQ2NTYxICswMjAwCitAQCAt MCwwICsxLDI0IEBACisrLyogQ29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y CisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKwor KyNpbmNsdWRlIDxzdGRpby5oPgorKworK2ludAorK2JhciAoaW50IG4pCisreworKyAgcHJpbnRm ICgiYmFyICVkXG4iLCBuKTsKKysKKysgIHJldHVybiAwOworK30KK0luZGV4OiBnZGItNy40Ljkx LjIwMTIwODE0L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQuYworPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysr IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJlZC5j CTIwMTItMDgtMTQgMTc6MzQ6NDQuMzY2NzQ2NTYxICswMjAwCitAQCAtMCwwICsxLDQ4IEBACisr LyogQ29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor KworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpbmNsdWRlIDxkbGZj bi5oPgorKworK3ZvaWQKKytzdG9wICgpCisreworK30KKysKKytpbnQKKyttYWluICgpCisrewor KyAgdm9pZCAqaGFuZGxlMSwgKmhhbmRsZTI7CisrICB2b2lkICgqZnVuYykoaW50KTsKKysKKysg IGhhbmRsZTEgPSBkbG9wZW4gKFNITElCMV9OQU1FLCBSVExEX0xBWlkpOworKyAgc3RvcCAoKTsK KysKKysgIGhhbmRsZTIgPSBkbG9wZW4gKFNITElCMl9OQU1FLCBSVExEX0xBWlkpOworKyAgc3Rv cCAoKTsKKysKKysgIGZ1bmMgPSAodm9pZCAoKikoaW50KSkgZGxzeW0gKGhhbmRsZTEsICJmb28i KTsKKysgIGZ1bmMgKDEpOworKworKyAgZnVuYyA9ICh2b2lkICgqKShpbnQpKSBkbHN5bSAoaGFu ZGxlMiwgImJhciIpOworKyAgZnVuYyAoMik7CisrCisrICBkbGNsb3NlIChoYW5kbGUxKTsKKysg IHN0b3AgKCk7CisrCisrICBkbGNsb3NlIChoYW5kbGUyKTsKKysgIHN0b3AgKCk7CisrCisrICBy ZXR1cm4gMDsKKyt9CitJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2luZm8tc2hhcmVkLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAx LTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJlZC5leHAJMjAxMi0wOC0xNCAxNzozNDo0NC4z Njc3NDY1NjEgKzAyMDAKK0BAIC0wLDAgKzEsMTM5IEBACisrIyBDb3B5cmlnaHQgMjAxMiBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisrCisraWYgeyBbc2tpcF9zaGxpYl90ZXN0c10gfHwgW2lzX3JlbW90ZSB0YXJnZXRdIH0g eworKyAgICByZXR1cm4gMAorK30KKysKKytzdGFuZGFyZF90ZXN0ZmlsZQorKworK3NldCBsaWIx bmFtZSAkdGVzdGZpbGUtc29saWIxCisrc2V0IHNyY2ZpbGVfbGliMSAkc3JjZGlyLyRzdWJkaXIv JGxpYjFuYW1lLmMKKytzZXQgYmluZmlsZV9saWIxIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAkbGli MW5hbWUuc29dCisrc2V0IGRlZmluZTEgLURTSExJQjFfTkFNRVw9XCIkYmluZmlsZV9saWIxXCIK KysKKytzZXQgbGliMm5hbWUgJHRlc3RmaWxlLXNvbGliMgorK3NldCBzcmNmaWxlX2xpYjIgJHNy Y2Rpci8kc3ViZGlyLyRsaWIybmFtZS5jCisrc2V0IGJpbmZpbGVfbGliMiBbc3RhbmRhcmRfb3V0 cHV0X2ZpbGUgJGxpYjJuYW1lLnNvXQorK3NldCBkZWZpbmUyIC1EU0hMSUIyX05BTUVcPVwiJGJp bmZpbGVfbGliMlwiCisrCisraWYgeyBbZ2RiX2NvbXBpbGVfc2hsaWIgJHNyY2ZpbGVfbGliMSAk YmluZmlsZV9saWIxIFwKKysJICBbbGlzdCBhZGRpdGlvbmFsX2ZsYWdzPS1mUElDXV0gIT0gIiIg fSB7CisrICAgIHVudGVzdGVkICJDb3VsZCBub3QgY29tcGlsZSAkYmluZmlsZV9saWIxLiIKKysg ICAgcmV0dXJuIC0xCisrfQorKworK2lmIHsgW2dkYl9jb21waWxlX3NobGliICRzcmNmaWxlX2xp YjIgJGJpbmZpbGVfbGliMiBcCisrCSAgW2xpc3QgYWRkaXRpb25hbF9mbGFncz0tZlBJQ11dICE9 ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGQgbm90IGNvbXBpbGUgJGJpbmZpbGVfbGliMi4i CisrICAgIHJldHVybiAtMQorK30KKysKKytzZXQgY2ZsYWdzICIkZGVmaW5lMSAkZGVmaW5lMiIK KytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxlICRzcmNm aWxlIFwKKysJICBbbGlzdCBhZGRpdGlvbmFsX2ZsYWdzPSRjZmxhZ3MgbGlicz0tbGRsXV0gfSB7 CisrICAgIHJldHVybiAtMQorK30KKysKKysjIFJ1biAiaW5mbyBzaGFyZWRsaWJyYXJ5IiBhbmQg Y2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvciBhYnNlbmNlIG9mCisrIyBvdXIgbGlicmFyaWVzLgor K3Byb2MgY2hlY2tfaW5mb19zaGFyZWQgeyB0ZXN0IGV4cGVjdDEgZXhwZWN0MiB9IHsKKysgICAg Z2xvYmFsIGxpYjFuYW1lCisrICAgIGdsb2JhbCBsaWIybmFtZQorKyAgICBnbG9iYWwgZ2RiX3By b21wdAorKworKyAgICBzZXQgYWN0dWFsMSAwCisrICAgIHNldCBhY3R1YWwyIDAKKysKKysgICAg Z2RiX3Rlc3RfbXVsdGlwbGUgImluZm8gc2hhcmVkbGlicmFyeSIgJHRlc3QgeworKwktcmUgJGxp YjFuYW1lIHsKKysJICAgIHNldCBhY3R1YWwxIDEKKysJICAgIGV4cF9jb250aW51ZQorKwl9Cisr CS1yZSAkbGliMm5hbWUgeworKwkgICAgc2V0IGFjdHVhbDIgMQorKwkgICAgZXhwX2NvbnRpbnVl CisrCX0KKysJLXJlICJcclxuJGdkYl9wcm9tcHQgJCIgeworKwkgICAgaWYgeyAkYWN0dWFsMSA9 PSAkZXhwZWN0MSAmJiAkYWN0dWFsMiA9PSAkZXhwZWN0MiB9IHsKKysJCXBhc3MgJHRlc3QKKysJ ICAgIH0gZWxzZSB7CisrCQlmYWlsICR0ZXN0CisrCSAgICB9CisrCX0KKysgICAgfQorK30KKysK KysjIFNldCB1cCBicmVha3BvaW50cy4KKytnZGJfdGVzdCAiYnJlYWsgc3RvcCIge0JyZWFrcG9p bnQgWzAtOV0rIGF0IC4qfQorK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGJyZWFrcG9pbnQgcGVu ZGluZyBvbiIKKytnZGJfdGVzdCAiYnJlYWsgZm9vIiB7QnJlYWtwb2ludCBbMC05XSsgXChmb29c KSBwZW5kaW5nXC59CisrZ2RiX3Rlc3QgImJyZWFrIGJhciIge0JyZWFrcG9pbnQgWzAtOV0rIFwo YmFyXCkgcGVuZGluZ1wufQorKworKyMgQ2hlY2sgbmVpdGhlciBvZiB0aGUgbGlicmFyaWVzIGFy ZSBsb2FkZWQgYXQgdGhlIHN0YXJ0LgorK2dkYl90ZXN0ICJzdGFydCIge1RlbXBvcmFyeSBicmVh a3BvaW50IFswLTldKywgLiogaW4gbWFpbiBcKFwpfQorK2NoZWNrX2luZm9fc2hhcmVkICJpbmZv IHNoYXJlZGxpYnJhcnkgIzEiIDAgMAorKworKyMgUnVuIHRvIHRoZSBmaXJzdCBzdG9wIGFuZCBj aGVjayB0aGF0IG9ubHkgdGhlIGZpcnN0IGxpYnJhcnkgaXMgbG9hZGVkLgorK2dkYl90ZXN0ICJj IiB7QnJlYWtwb2ludCBbMC05XSssIC4qIGluIHN0b3AgXChcKX0KKytjaGVja19pbmZvX3NoYXJl ZCAiaW5mbyBzaGFyZWRsaWJyYXJ5ICMyIiAxIDAKKysKKysjIFJ1biB0byB0aGUgc2Vjb25kIHN0 b3AgYW5kIGNoZWNrIHRoYXQgYm90aCBsaWJyYXJpZXMgYXJlIGxvYWRlZC4KKytnZGJfdGVzdCAi YyIge0JyZWFrcG9pbnQgWzAtOV0rLCAuKiBpbiBzdG9wIFwoXCl9CisrY2hlY2tfaW5mb19zaGFy ZWQgImluZm8gc2hhcmVkbGlicmFyeSAjMyIgMSAxCisrCisrIyBDaGVjayB0aGF0IHRoZSBuZXh0 IHN0b3AgaXMgaW4gZm9vLgorK2dkYl90ZXN0ICJjIiB7QnJlYWtwb2ludCBbMC05XSssIC4qIGlu IGZvbyBcKFwpIGZyb20gLip9CisrCisrIyBDaGVjayB0aGF0IHRoZSBuZXh0IHN0b3AgaXMgaW4g YmFyLgorK2dkYl90ZXN0ICJjIiB7QnJlYWtwb2ludCBbMC05XSssIC4qIGluIGJhciBcKFwpIGZy b20gLip9CisrCisrIyBSZXN0YXJ0IHRoZSBpbmZlcmlvciBhbmQgbWFrZSBzdXJlIHRoZXJlIGFy ZSBubyBicmVha3BvaW50IHJlc2V0CisrIyBlcnJvcnMuICBUaGVzZSBjYW4gaGFwcGVuIHdpdGgg dGhlIHByb2Jlcy1iYXNlZCBydW50aW1lIGxpbmtlcgorKyMgaW50ZXJmYWNlIGlmIHRoZSBjYWNo ZSBpcyBub3QgY2xlYXJlZCBjb3JyZWN0bHkuCisrc2V0IHRlc3QgInJlc3RhcnQiCisrZ2RiX3Rl c3RfbXVsdGlwbGUgInJ1biIgJHRlc3QgeworKyAgICAtcmUge1N0YXJ0IGl0IGZyb20gdGhlIGJl Z2lubmluZ1w/IFwoeSBvciBuXCkgfSB7CisrCXNlbmRfZ2RiICJ5XG4iCisrCWV4cF9jb250aW51 ZQorKyAgICB9CisrICAgIC1yZSB7RXJyb3IgaW4gcmUtc2V0dGluZyBicmVha3BvaW50fSB7Cisr CWZhaWwgJHRlc3QKKysgICAgfQorKyAgICAtcmUgIlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXBh c3MgJHRlc3QKKysgICAgfQorK30KKysKKysjIFdlJ3JlIGF0IHRoZSBmaXJzdCBzdG9wLiAgQ2hl Y2sgdGhhdCBvbmx5IHRoZSBmaXJzdCBsaWJyYXJ5IGlzIGxvYWRlZC4KKytjaGVja19pbmZvX3No YXJlZCAiaW5mbyBzaGFyZWRsaWJyYXJ5ICM0IiAxIDAKKysKKysjIFJ1biB0byB0aGUgc2Vjb25k IHN0b3AgYW5kIGNoZWNrIHRoYXQgYm90aCBsaWJyYXJpZXMgYXJlIGxvYWRlZC4KKytnZGJfdGVz dCAiYyIge0JyZWFrcG9pbnQgWzAtOV0rLCAuKiBpbiBzdG9wIFwoXCl9CisrY2hlY2tfaW5mb19z aGFyZWQgImluZm8gc2hhcmVkbGlicmFyeSAjNSIgMSAxCisrCisrIyBDaGVjayB0aGF0IHRoZSBu ZXh0IHN0b3AgaXMgaW4gZm9vLgorK2dkYl90ZXN0ICJjIiB7QnJlYWtwb2ludCBbMC05XSssIC4q IGluIGZvbyBcKFwpIGZyb20gLip9CisrCisrIyBDaGVjayB0aGF0IHRoZSBuZXh0IHN0b3AgaXMg aW4gYmFyLgorK2dkYl90ZXN0ICJjIiB7QnJlYWtwb2ludCBbMC05XSssIC4qIGluIGJhciBcKFwp IGZyb20gLip9CisrCisrIyBSdW4gdG8gdGhlIG5leHQgc3RvcCBhbmQgY2hlY2sgdGhhdCB0aGUg Zmlyc3QgbGlicmFyeSBoYXMgYmVlbiB1bmxvYWRlZC4KKytnZGJfdGVzdCAiYyIge0JyZWFrcG9p bnQgWzAtOV0rLCAuKiBpbiBzdG9wIFwoXCl9CisrY2hlY2tfaW5mb19zaGFyZWQgImluZm8gc2hh cmVkbGlicmFyeSAjNiIgMCAxCisrCisrIyBSdW4gdG8gdGhlIGxhc3Qgc3RvcCBhbmQgY2hlY2sg dGhhdCBib3RoIGxpYnJhcmllcyBhcmUgZ29uZS4KKytnZGJfdGVzdCAiYyIge0JyZWFrcG9pbnQg WzAtOV0rLCAuKiBpbiBzdG9wIFwoXCl9CisrY2hlY2tfaW5mb19zaGFyZWQgImluZm8gc2hhcmVk bGlicmFyeSAjNyIgMCAwCgpkaWZmIC0tZ2l0IGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTdvZjcu cGF0Y2ggYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUtN29mNy5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi4wNzRkYjI0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWRsb3Bl bi1zdGFwLXByb2JlLTdvZjcucGF0Y2gKQEAgLTAsMCArMSwxNDcgQEAKKzIwMTItMDctMzAgIEdh cnkgQmVuc29uICA8Z2JlbnNvbkByZWRoYXQuY29tPgorCisJKiBvYmpmaWxlcy5oIChpbmhpYml0 X3NlY3Rpb25fbWFwX3VwZGF0ZXMpOiBOZXcgZnVuY3Rpb24KKwlkZWNsYXJhdGlvbi4KKwkocmVz dW1lX3NlY3Rpb25fbWFwX3VwZGF0ZXMpOiBMaWtld2lzZS4KKwkocmVzdW1lX3NlY3Rpb25fbWFw X3VwZGF0ZXNfY2xlYW51cCk6IExpa2V3aXNlLgorCSogb2JqZmlsZXMuYyAob2JqZmlsZV9wc3Bh Y2VfaW5mbyk6IE5ldyBmaWVsZCAiaW5oaWJpdF91cGRhdGVzIi4KKwkoZmluZF9wY19zZWN0aW9u KTogRG8gbm90IHVwZGF0ZSB0aGUgc2VjdGlvbiBtYXAgaWYKKwlpbmhpYml0X3VwZGF0ZXMgaXMg c2V0LgorCShpbmhpYml0X3NlY3Rpb25fbWFwX3VwZGF0ZXMpOiBOZXcgZnVuY3Rpb24uCisJKHJl c3VtZV9zZWN0aW9uX21hcF91cGRhdGVzKTogTGlrZXdpc2UuCisJKHJlc3VtZV9zZWN0aW9uX21h cF91cGRhdGVzX2NsZWFudXApOiBMaWtld2lzZS4KKwkqIHNvbGliLXN2cjQuYyAoc3ZyNF9oYW5k bGVfc29saWJfZXZlbnQpOiBJbmhpYml0IHNlY3Rpb24gbWFwCisJdXBkYXRlcyBmb3IgY2FsbHMg dG8gZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQuCisKK0luZGV4OiBnZGItNy40LjkxLjIwMTIwODE0 L2dkYi9vYmpmaWxlcy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC45MS4yMDEyMDgxNC5vcmln L2dkYi9vYmpmaWxlcy5oCTIwMTItMDgtMTQgMTc6MTY6NTQuMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvb2JqZmlsZXMuaAkyMDEyLTA4LTE0IDE3OjIwOjU1Ljkx MzE3NDYwOSArMDIwMAorQEAgLTUyNiw2ICs1MjYsMjIgQEAgZXh0ZXJuIHZvaWQgc2V0X29iamZp bGVfZGF0YSAoc3RydWN0IG9iagorIGV4dGVybiB2b2lkICpvYmpmaWxlX2RhdGEgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLAorIAkJCSAgIGNvbnN0IHN0cnVjdCBvYmpmaWxlX2RhdGEgKmRhdGEp OworIAorKy8qIEluIG5vcm1hbCB1c2UsIHRoZSBzZWN0aW9uIG1hcCB3aWxsIGJlIHJlYnVpbHQg YnkgRklORF9QQ19TRUNUSU9OCisrICAgaWYgb2JqZmlsZXMgaGF2ZSBiZWVuIGFkZGVkLCByZW1v dmVkIG9yIHJlbG9jYXRlZCBzaW5jZSBpdCB3YXMgbGFzdAorKyAgIGNhbGxlZC4gIENhbGxpbmcg SU5ISUJJVF9TRUNUSU9OX01BUF9VUERBVEVTIHdpbGwgaW5oaWJpdCB0aGlzCisrICAgYmVoYXZp b3IgdW50aWwgUkVTVU1FX1NFQ1RJT05fTUFQX1VQREFURVMgaXMgY2FsbGVkLiAgSWYgeW91IGNh bGwKKysgICBJTkhJQklUX1NFQ1RJT05fTUFQX1VQREFURVMgeW91IG11c3QgZW5zdXJlIHRoYXQg ZXZlcnkgY2FsbCB0bworKyAgIEZJTkRfUENfU0VDVElPTiBpbiB0aGUgaW5oaWJpdGVkIHJlZ2lv biByZWxhdGVzIHRvIGEgc2VjdGlvbiB0aGF0CisrICAgaXMgYWxyZWFkeSBpbiB0aGUgc2VjdGlv biBtYXAgYW5kIGhhcyBub3Qgc2luY2UgYmVlbiByZW1vdmVkIG9yCisrICAgcmVsb2NhdGVkLiAg Ki8KKytleHRlcm4gdm9pZCBpbmhpYml0X3NlY3Rpb25fbWFwX3VwZGF0ZXMgKHZvaWQpOworKwor Ky8qIFJlc3VtZSBhdXRvbWF0aWNhbGx5IHJlYnVpbGRpbmcgdGhlIHNlY3Rpb24gbWFwIGFzIHJl cXVpcmVkLiAgKi8KKytleHRlcm4gdm9pZCByZXN1bWVfc2VjdGlvbl9tYXBfdXBkYXRlcyAodm9p ZCk7CisrCisrLyogVmVyc2lvbiBvZiB0aGUgYWJvdmUgc3VpdGFibGUgZm9yIHVzZSBhcyBhIGNs ZWFudXAuICAqLworK2V4dGVybiB2b2lkIHJlc3VtZV9zZWN0aW9uX21hcF91cGRhdGVzX2NsZWFu dXAgKHZvaWQgKmFyZyk7CisrCisgZXh0ZXJuIHZvaWQgZGVmYXVsdF9pdGVyYXRlX292ZXJfb2Jq ZmlsZXNfaW5fc2VhcmNoX29yZGVyCisgICAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgICAg aXRlcmF0ZV9vdmVyX29iamZpbGVzX2luX3NlYXJjaF9vcmRlcl9jYl9mdHlwZSAqY2IsCitJbmRl eDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvb2JqZmlsZXMuYworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjQuOTEuMjAxMjA4MTQub3JpZy9nZGIvb2JqZmlsZXMuYwkyMDEyLTA4LTE0IDE3OjE2OjU1 LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL29iamZpbGVzLmMJ MjAxMi0wOC0xNCAxNzoyMDo1NS45MTUxNzQ2MDkgKzAyMDAKK0BAIC03MCw2ICs3MCw5IEBAIHN0 cnVjdCBvYmpmaWxlX3BzcGFjZV9pbmZvCisgICBpbnQgb2JqZmlsZXNfY2hhbmdlZF9wOworICAg c3RydWN0IG9ial9zZWN0aW9uICoqc2VjdGlvbnM7CisgICBpbnQgbnVtX3NlY3Rpb25zOworKwor KyAgLyogTm9uemVybyBpZiBzZWN0aW9uIG1hcCB1cGRhdGVzIHNob3VsZCBiZSBpbmhpYml0ZWQu ICAqLworKyAgaW50IGluaGliaXRfdXBkYXRlczsKKyB9OworIAorIC8qIFBlci1wcm9ncmFtLXNw YWNlIGRhdGEga2V5LiAgKi8KK0BAIC0xMjk1LDcgKzEyOTgsNyBAQCBmaW5kX3BjX3NlY3Rpb24g KENPUkVfQUREUiBwYykKKyAgICAgcmV0dXJuIHM7CisgCisgICBwc3BhY2VfaW5mbyA9IGdldF9v YmpmaWxlX3BzcGFjZV9kYXRhIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOworLSAgaWYgKHBzcGFj ZV9pbmZvLT5vYmpmaWxlc19jaGFuZ2VkX3AgIT0gMCkKKysgIGlmIChwc3BhY2VfaW5mby0+b2Jq ZmlsZXNfY2hhbmdlZF9wICYmICFwc3BhY2VfaW5mby0+aW5oaWJpdF91cGRhdGVzKQorICAgICB7 CisgICAgICAgdXBkYXRlX3NlY3Rpb25fbWFwIChjdXJyZW50X3Byb2dyYW1fc3BhY2UsCisgCQkJ ICAmcHNwYWNlX2luZm8tPnNlY3Rpb25zLAorQEAgLTE0NjMsNiArMTQ2NiwzMCBAQCBvYmpmaWxl c19jaGFuZ2VkICh2b2lkKQorICAgZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKGN1cnJlbnRfcHJv Z3JhbV9zcGFjZSktPm9iamZpbGVzX2NoYW5nZWRfcCA9IDE7CisgfQorIAorKy8qIFNlZSBjb21t ZW50cyBpbiBvYmpmaWxlcy5oLiAgKi8KKysKKyt2b2lkCisraW5oaWJpdF9zZWN0aW9uX21hcF91 cGRhdGVzICh2b2lkKQorK3sKKysgIGdldF9vYmpmaWxlX3BzcGFjZV9kYXRhIChjdXJyZW50X3By b2dyYW1fc3BhY2UpLT5pbmhpYml0X3VwZGF0ZXMgPSAxOworK30KKysKKysvKiBTZWUgY29tbWVu dHMgaW4gb2JqZmlsZXMuaC4gICovCisrCisrdm9pZAorK3Jlc3VtZV9zZWN0aW9uX21hcF91cGRh dGVzICh2b2lkKQorK3sKKysgIGdldF9vYmpmaWxlX3BzcGFjZV9kYXRhIChjdXJyZW50X3Byb2dy YW1fc3BhY2UpLT5pbmhpYml0X3VwZGF0ZXMgPSAwOworK30KKysKKysvKiBTZWUgY29tbWVudHMg aW4gb2JqZmlsZXMuaC4gICovCisrCisrdm9pZAorK3Jlc3VtZV9zZWN0aW9uX21hcF91cGRhdGVz X2NsZWFudXAgKHZvaWQgKmFyZykKKyt7CisrICByZXN1bWVfc2VjdGlvbl9tYXBfdXBkYXRlcyAo KTsKKyt9CisrCisgLyogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIHRoZSAiaXRlcmF0 ZV9vdmVyX29iamZpbGVzX2luX3NlYXJjaF9vcmRlciIKKyAgICBnZGJhcmNoIG1ldGhvZC4gIEl0 IGlzIGVxdWl2YWxlbnQgdG8gdXNlIHRoZSBBTExfT0JKRklMRVMgbWFjcm8sCisgICAgc2VhcmNo aW5nIHRoZSBvYmpmaWxlcyBpbiB0aGUgb3JkZXIgdGhleSBhcmUgc3RvcmVkIGludGVybmFsbHks CitJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvc29saWItc3ZyNC5jCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gZ2RiLTcuNC45MS4yMDEyMDgxNC5vcmlnL2dkYi9zb2xpYi1zdnI0LmMJMjAxMi0wOC0x NCAxNzoyMDo0Mi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjkxLjIwMTIwODE0L2dkYi9z b2xpYi1zdnI0LmMJMjAxMi0wOC0xNCAxNzoyMToxNC4wOTAxNjkyMTYgKzAyMDAKK0BAIC0xODQ3 LDYgKzE4NDcsNyBAQCBzdnI0X2hhbmRsZV9zb2xpYl9ldmVudCAoYnBzdGF0IGJzKQorICAgc3Ry dWN0IHN2cjRfaW5mbyAqaW5mbyA9IGdldF9zdnI0X2luZm8gKCk7CisgICBzdHJ1Y3QgcHJvYmVf YW5kX2luZm8gYnVmLCAqcGkgPSAmYnVmOworICAgZW51bSBwcm9iZV9hY3Rpb24gYWN0aW9uOwor KyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzID0gTlVMTDsKKyAgIHN0cnVjdCB2YWx1ZSAqdmFs OworICAgTE9OR0VTVCBsbWlkOworICAgQ09SRV9BRERSIGRlYnVnX2Jhc2UsIGxtID0gMDsKK0BA IC0xODcwLDYgKzE4NzEsMTkgQEAgc3ZyNF9oYW5kbGVfc29saWJfZXZlbnQgKGJwc3RhdCBicykK KyAgIGlmIChhY3Rpb24gPT0gTkFNRVNQQUNFX05PX0FDVElPTikKKyAgICAgcmV0dXJuOworIAor KyAgLyogRVZBTFVBVEVfUFJPQkVfQVJHVU1FTlQgbG9va3MgdXAgc3ltYm9scyBpbiB0aGUgZHlu YW1pYyBsaW5rZXIKKysgICAgIHVzaW5nIEZJTkRfUENfU0VDVElPTi4gIEZJTkRfUENfU0VDVElP TiBpcyBhY2NlbGVyYXRlZCBieSBhIGNhY2hlCisrICAgICBjYWxsZWQgdGhlIHNlY3Rpb24gbWFw LiAgVGhlIHNlY3Rpb24gbWFwIGlzIGludmFsaWRhdGVkIGV2ZXJ5CisrICAgICB0aW1lIGEgc2hh cmVkIGxpYnJhcnkgaXMgbG9hZGVkIG9yIHVubG9hZGVkLCBhbmQgaWYgdGhlIGluZmVyaW9yCisr ICAgICBpcyBnZW5lcmF0aW5nIGEgbG90IG9mIHNoYXJlZCBsaWJyYXJ5IGV2ZW50cyB0aGVuIHRo ZSBzZWN0aW9uIG1hcAorKyAgICAgd2lsbCBiZSB1cGRhdGVkIGV2ZXJ5IHRpbWUgU1ZSNF9IQU5E TEVfU09MSUJfRVZFTlQgaXMgY2FsbGVkLgorKyAgICAgV2UgY2FsbGVkIEZJTkRfUENfU0VDVElP TiBpbiBTVlI0X0NSRUFURV9TT0xJQl9FVkVOVF9CUkVBS1BPSU5UUywKKysgICAgIHNvIHdlIGNh biBndWFyYW50ZWUgdGhhdCB0aGUgZHluYW1pYyBsaW5rZXIncyBzZWN0aW9ucyBhcmUgaW4gdGhl CisrICAgICBzZWN0aW9uIG1hcC4gIFdlIGNhbiB0aGVyZWZvcmUgaW5oaWJpdCBzZWN0aW9uIG1h cCB1cGRhdGVzIGFjcm9zcworKyAgICAgdGhlc2UgY2FsbHMgdG8gRVZBTFVBVEVfUFJPQkVfQVJH VU1FTlQgYW5kIHNhdmUgYSBsb3Qgb2YgdGltZS4gICovCisrICBpbmhpYml0X3NlY3Rpb25fbWFw X3VwZGF0ZXMgKCk7CisrICBjbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAocmVzdW1lX3NlY3Rpb25f bWFwX3VwZGF0ZXNfY2xlYW51cCwgTlVMTCk7CisrCisgICB2YWwgPSBldmFsdWF0ZV9wcm9iZV9h cmd1bWVudCAocGktPnByb2JlLCAwKTsKKyAgIGlmICh2YWwgPT0gTlVMTCkKKyAgICAgZ290byBl cnJvcjsKK0BAIC0xOTAxLDYgKzE5MTUsOSBAQCBzdnI0X2hhbmRsZV9zb2xpYl9ldmVudCAoYnBz dGF0IGJzKQorIAlhY3Rpb24gPSBOQU1FU1BBQ0VfUkVMT0FEOworICAgICB9CisgCisrICBkb19j bGVhbnVwcyAoY2xlYW51cHMpOworKyAgY2xlYW51cHMgPSBOVUxMOworKworICAgaWYgKGFjdGlv biA9PSBOQU1FU1BBQ0VfVVBEQVRFX09SX1JFTE9BRCkKKyAgICAgeworICAgICAgIGlmIChuYW1l c3BhY2VfdXBkYXRlX2luY3JlbWVudGFsIChpbmZvLCBsbWlkLCBsbSwgaXNfaW5pdGlhbF9ucykp CitAQCAtMTkyMyw2ICsxOTQwLDggQEAgc3ZyNF9oYW5kbGVfc29saWJfZXZlbnQgKGJwc3RhdCBi cykKKyAgIHdhcm5pbmcgKF8oIlByb2Jlcy1iYXNlZCBkeW5hbWljIGxpbmtlciBpbnRlcmZhY2Ug ZmFpbGVkLlxuIgorIAkgICAgICJSZXZlcnRpbmcgdG8gb3JpZ2luYWwgaW50ZXJmYWNlLlxuIikp OworIAorKyAgaWYgKGNsZWFudXBzICE9IE5VTEwpCisrICAgIGRvX2NsZWFudXBzIChjbGVhbnVw cyk7CisgICBmcmVlX25hbWVzcGFjZV90YWJsZSAoaW5mbyk7CisgICBmcmVlX3Byb2JlcyAoaW5m byk7CisgICBpbmZvLT51c2luZ19wcm9iZXMgPSAwOwoKZGlmZiAtLWdpdCBhL2dkYi1kbG9wZW4t c3RhcC1wcm9iZS10ZXN0LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLXRlc3QucGF0Y2gK aW5kZXggZWZkMzY4My4uZmIyZWJkMSAxMDA2NDQKLS0tIGEvZ2RiLWRsb3Blbi1zdGFwLXByb2Jl LXRlc3QucGF0Y2gKKysrIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLXRlc3QucGF0Y2gKQEAgLTMw NSwxMDQgKzMwNSwzIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNzE0L2dkYi90ZXN0c3VpdGUv bGliL3ByZWxpbmstc3VwcG9ydC5leHAKICAgICAgcmV0dXJuICRwcmVsaW5rX2FyZ3MKICB9CiAg Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDcxNC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFr LWludGVycC5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNzE0Lm9yaWcvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCTIwMTItMDYtMjEgMjI6NDY6MjEu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDcxNC9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2JyZWFrLWludGVycC5leHAJMjAxMi0wNy0xNSAwODo1MTozOC4yNDQ3MDEyNDggKzAy MDAKLUBAIC0xMDksMTQgKzEwOSwyMSBAQCBwcm9jIHN0cmlwX2RlYnVnIHtkZXN0fSB7Ci0gICAg IH0KLSB9Ci0gCi0rIyBGb3JtZXIgc3ltYm9sIGZvciBzb2xpYiBjaGFuZ2VzIG5vdGlmaWNhdGlv bnMgd2FzIF9kbF9kZWJ1Z19zdGF0ZSwgbmV3ZXIgb25lCi0rIyBpcyBkbF9tYWluIChpbiBmYWN0 IF9kbF9kZWJ1Z19ub3RpZnkgYnV0IGl0IGlzIGlubGluZWQgd2l0aG91dCBhbnkgZXh0cmEKLSsj IGRlYnVnIGluZm8pLCB0aGUgcmlnaHQgb25lIG9uZSB0cmFwcyBieSBgc2V0IHN0b3Atb24tc29s aWItZXZlbnRzIDEnLgotKwotK3NldCBzb2xpYl9icCB7KF9kbF9kZWJ1Z19zdGF0ZXxkbF9tYWlu KX0KLSsKLSAjIEltcGxlbWVudGF0aW9uIG9mIHJlYWNoLgotIAotIHByb2MgcmVhY2hfMSB7ZnVu YyBjb21tYW5kIGRpc3BsYWNlbWVudH0gewotLSAgICBnbG9iYWwgZ2RiX3Byb21wdCBleHBlY3Rf b3V0Ci0rICAgIGdsb2JhbCBnZGJfcHJvbXB0IGV4cGVjdF9vdXQgc29saWJfYnAKLSAKLS0gICAg aWYgeyRmdW5jID09ICJfZGxfZGVidWdfc3RhdGUifSB7Ci0rICAgIGlmIHskZnVuYyA9PSAkc29s aWJfYnB9IHsKLSAJIyBCcmVha3BvaW50IG9uIF9kbF9kZWJ1Z19zdGF0ZSBjYW4gaGF2ZSBwcm9i bGVtcyBkdWUgdG8gaXRzIG92ZXJsYXAKLSAJIyB3aXRoIHRoZSBleGlzdGluZyBpbnRlcm5hbCBi cmVha3BvaW50IGZyb20gR0RCLgotKwkjIFdpdGggYWxzbyBfZGxfZGVidWdfbm90aWZ5IHdlIHdv dWxkIG5lZWQgZXZlbiB0d28gYnJlYWtwb2ludHMuCi0gCWdkYl90ZXN0X25vX291dHB1dCAic2V0 IHN0b3Atb24tc29saWItZXZlbnRzIDEiCi0gICAgIH0gZWxzZWlmIHshIFtnZGJfYnJlYWtwb2lu dCAkZnVuYyBhbGxvdy1wZW5kaW5nXX0gewotIAlyZXR1cm4KLUBAIC0xNDIsMjEgKzE0OSwyMSBA QCBwcm9jIHJlYWNoXzEge2Z1bmMgY29tbWFuZCBkaXNwbGFjZW1lbnR9Ci0gCSAgICBleHBfY29u dGludWUKLSAJfQotIAktcmUgIkJyZWFrcG9pbnQgXFswLTlcXSssIFxcLj8oX19HSV8pPyRmdW5j IFxcKC4qXFwpIGF0IC4qOlxbMC05XF0rXHJcbi4qJGdkYl9wcm9tcHQgJCIgewotLQkgICAgaWYg eyRmdW5jID09ICJfZGxfZGVidWdfc3RhdGUifSB7Ci0rCSAgICBpZiB7JGZ1bmMgPT0gJHNvbGli X2JwfSB7Ci0gCQlmYWlsICR0ZXN0Ci0gCSAgICB9IGVsc2UgewotIAkJcGFzcyAkdGVzdAotIAkg ICAgfQotIAl9Ci0gCS1yZSAiQnJlYWtwb2ludCBcWzAtOVxdKywgXFswLTl4YS1mXF0rIGluIFxc Lj8oX19HSV8pPyRmdW5jIFxcKFxcKS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLS0JICAgIGlmIHsk ZnVuYyA9PSAiX2RsX2RlYnVnX3N0YXRlIn0gewotKwkgICAgaWYgeyRmdW5jID09ICRzb2xpYl9i cH0gewotIAkJZmFpbCAkdGVzdAotIAkgICAgfSBlbHNlIHsKLSAJCXBhc3MgJHRlc3QKLSAJICAg IH0KLSAJfQotIAktcmUgIlN0b3BwZWQgZHVlIHRvIChzcHVyaW91cyApP3NoYXJlZCBsaWJyYXJ5 IGV2ZW50LipcclxuJGdkYl9wcm9tcHQgJCIgewotLQkgICAgaWYgeyRmdW5jID09ICJfZGxfZGVi dWdfc3RhdGUifSB7Ci0rCSAgICBpZiB7JGZ1bmMgPT0gJHNvbGliX2JwfSB7Ci0gCQlpZiB7JGRl YnVnX3N0YXRlX2NvdW50ID09IDB9IHsKLSAJCSAgICAjIEZpcnN0IHN0b3AgZG9lcyBub3QgeWV0 IHJlbG9jYXRlIHRoZSBfc3RhcnQgZnVuY3Rpb24KLSAJCSAgICAjIGRlc2NyaXB0b3Igb24gcHBj NjQuCi1AQCAtMTc1LDcgKzE4Miw3IEBAIHByb2MgcmVhY2hfMSB7ZnVuYyBjb21tYW5kIGRpc3Bs YWNlbWVudH0KLSAJZmFpbCAkdGVzdF9kaXNwbGFjZW1lbnQKLSAgICAgfQotIAotLSAgICBpZiB7 JGZ1bmMgPT0gIl9kbF9kZWJ1Z19zdGF0ZSJ9IHsKLSsgICAgaWYgeyRmdW5jID09ICRzb2xpYl9i cH0gewotIAlnZGJfdGVzdF9ub19vdXRwdXQgInNldCBzdG9wLW9uLXNvbGliLWV2ZW50cyAwIgot ICAgICB9Ci0gfQotQEAgLTM1Nyw3ICszNjQsNyBAQCBwcm9jIHRlc3RfYXR0YWNoIHtmaWxlIGRp c3BsYWNlbWVudCB7cmVsCi0gfQotIAotIHByb2MgdGVzdF9sZCB7ZmlsZSBpZm1haW4gdHJ5bm9z eW0gZGlzcGxhY2VtZW50fSB7Ci0tICAgIGdsb2JhbCBzcmNkaXIgc3ViZGlyIGdkYl9wcm9tcHQg ZXhwZWN0X291dCBpbmZlcmlvcl9leGl0ZWRfcmUKLSsgICAgZ2xvYmFsIHNyY2RpciBzdWJkaXIg Z2RiX3Byb21wdCBleHBlY3Rfb3V0IGluZmVyaW9yX2V4aXRlZF9yZSBzb2xpYl9icAotIAotICAg ICAjIEZpcnN0IHRlc3Qgbm9ybWFsIGBmaWxlJy1jb21tYW5kIGxvYWRlZCAkRklMRSB3aXRoIHN5 bWJvbHMuCi0gCi1AQCAtMzg1LDkgKzM5Miw5IEBAIHByb2MgdGVzdF9sZCB7ZmlsZSBpZm1haW4g dHJ5bm9zeW0gZGlzcGwKLSAJZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYXJncyAke29iamRpcn0v JHtzdWJkaXJ9LyRiaW5maWxlX3Rlc3QiICJzZXQgYXJncyBPQkpESVIvJHtzdWJkaXJ9LyRiaW5m aWxlX3Rlc3QiCi0gICAgIH0KLSAKLS0gICAgcmVhY2ggIl9kbF9kZWJ1Z19zdGF0ZSIgInJ1biIg JGRpc3BsYWNlbWVudAotKyAgICByZWFjaCAkc29saWJfYnAgInJ1biIgJGRpc3BsYWNlbWVudAot IAotLSAgICBnZGJfdGVzdCAiYnQiICIjMCArXFteXHJcblxdKlxcbShfX0dJXyk/X2RsX2RlYnVn X3N0YXRlXFxNLioiICJkbCBidCIKLSsgICAgZ2RiX3Rlc3QgImJ0IiAiIzAgK1xbXlxyXG5cXSpc XG0oX19HSV8pPyRzb2xpYl9icFxcTS4qIiAiZGwgYnQiCi0gCi0gICAgIGlmICRpZm1haW4gewot IAlyZWFjaCAibWFpbiIgY29udGludWUgIk5PTkUiCi1AQCAtMzk5LDcgKzQwNiw3IEBAIHByb2Mg dGVzdF9sZCB7ZmlsZSBpZm1haW4gdHJ5bm9zeW0gZGlzcGwKLSAKLSAgICAgIyBUcnkgcmUtcnVu IGlmIHRoZSBuZXcgUElFIGRpc3BsYWNlbWVudCB0YWtlcyBlZmZlY3QuCi0gICAgIGdkYl90ZXN0 ICJraWxsIiAiIiAia2lsbCIge0tpbGwgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWRcPyBcKHkg b3IgblwpIH0gInkiCi0tICAgIHJlYWNoICJfZGxfZGVidWdfc3RhdGUiICJydW4iICRkaXNwbGFj ZW1lbnQKLSsgICAgcmVhY2ggJHNvbGliX2JwICJydW4iICRkaXNwbGFjZW1lbnQKLSAKLSAgICAg aWYgJGlmbWFpbiB7Ci0gCXRlc3RfY29yZSAkZmlsZSAkZGlzcGxhY2VtZW50Ci1AQCAtNDMxLDcg KzQzOCw3IEBAIHByb2MgdGVzdF9sZCB7ZmlsZSBpZm1haW4gdHJ5bm9zeW0gZGlzcGwKLSAJZ2Ri X3Rlc3QgImV4ZWMtZmlsZSAkZmlsZSIgImV4ZWMtZmlsZSAkZXNjYXBlZGZpbGUiICJsb2FkIgot IAotIAlpZiAkaWZtYWluIHsKLS0JICAgIHJlYWNoICJfZGxfZGVidWdfc3RhdGUiIHJ1biAkZGlz cGxhY2VtZW50Ci0rCSAgICByZWFjaCAkc29saWJfYnAgcnVuICRkaXNwbGFjZW1lbnQKLSAKLSAJ ICAgICMgVXNlIHR3byBzZXBhcmF0ZSBnZGJfdGVzdF9tdWx0aXBsZSBzdGF0ZW1lbnRzIHRvIGF2 b2lkIHRpbWVvdXRzIGR1ZQotIAkgICAgIyB0byBzbG93IHByb2Nlc3Npbmcgb2Ygd2lsZGNhcmQg Y2FwdHVyaW5nIGxvbmcgb3V0cHV0CgpkaWZmIC0tZ2l0IGEvZ2RiLWRsb3Blbi1zdGFwLXByb2Jl LXRlc3QyLnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLXRlc3QyLnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljYTRmNmIKLS0tIC9kZXYvbnVsbAorKysgYi9n ZGItZGxvcGVuLXN0YXAtcHJvYmUtdGVzdDIucGF0Y2gKQEAgLTAsMCArMSw2OSBAQAoraHR0cDov L3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDgvbXNnMDA1MDAuaHRtbAorU3Vi amVjdDogW3BhdGNoXSB0ZXN0c3VpdGU6IE1ha2Ugc29saWItY29ycnVwdGVkLmV4cCB1bnRlc3Rl ZCBmb3IgcHJvYmVzICBbUmU6IFtSRkEgMC80IHRha2UgMl0gSW1wcm92ZWQgbGlua2VyLWRlYnVn Z2VyIGludGVyZmFjZV0KKworT24gRnJpLCAxNyBBdWcgMjAxMiAyMjo1Mzo1MyArMDIwMCwgSmFu IEtyYXRvY2h2aWwgd3JvdGU6Cis+IEl0IHJlZ3Jlc3NlcyB3aXRoIGdsaWJjLWRlYnVnaW5mbyBp bnN0YWxsZWQ6Cis+IAorPiBpbmZvIHNoYXJlZGxpYnJhcnleTQorPiBGcm9tICAgICAgICAgICAg ICAgIFRvICAgICAgICAgICAgICAgICAgU3ltcyBSZWFkICAgU2hhcmVkIE9iamVjdCBMaWJyYXJ5 Xk0KKz4gMHgwMDAwN2ZmZmY3ZGRjYjIwICAweDAwMDA3ZmZmZjdkZjYzZDkgIFllcyAgICAgICAg IC9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMl5NCis+IDB4MDAwMDdmZmZmN2FlMDViMCAgMHgw MDAwN2ZmZmY3YjRhZDc4ICBZZXMgICAgICAgICAvbGliNjQvbGlibS5zby42Xk0KKz4gMHgwMDAw N2ZmZmY3NzQzMWEwICAweDAwMDA3ZmZmZjc4ODNjZjAgIFllcyAgICAgICAgIC9saWI2NC9saWJj LnNvLjZeTQorPiAoZ2RiKSBGQUlMOiBnZGIuYmFzZS9zb2xpYi1jb3JydXB0ZWQuZXhwOiBjb3Jy dXB0ZWQgbGlzdAorPiAKKz4gQnV0IEkgZ3Vlc3MgdGhlcmUgaXMgbm8gbG9uZ2VyIGEgd2F5IHRv IHRlc3QgaXQgd2l0aCBwcm9iZXMgc28gaXQgc2hvdWxkIGp1c3QKKz4gcnVuIHNvbWUgJ2luZm8g cHJvYmVzJyBhbmQgbWFrZSB0aGlzIHRlc3QgVU5URVNURUQgaWYgcnRsZCBwcm9iZXMgYXJlCis+ IGF2YWlsYWJsZS4KKworSSBoYWQgdG8gaW1wbGVtZW50IGl0IGZvciBGZWRvcmEgYWxyZWFkeSBh bnl3YXkuCisKKworUmVnYXJkcywKK0phbgorCisKK2dkYi90ZXN0c3VpdGUvCisyMDEyLTA4LTE4 ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwkqIGdkYi5i YXNlL3NvbGliLWNvcnJ1cHRlZC5leHA6IE5ldyB2YXJpYWJsZSBwcm9iZXMuCisJKGluZm8gcHJv YmVzKTogTmV3IHRlc3QuCisKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Nv bGliLWNvcnJ1cHRlZC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLWNvcnJ1cHRl ZC5leHAKK2luZGV4IDg0YjNiMGMuLmM5ZjU1ZDYgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3NvbGliLWNvcnJ1cHRlZC5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2Uvc29saWItY29ycnVwdGVkLmV4cAorQEAgLTM2LDYgKzM2LDMzIEBAIGlmICFbcnVudG9fbWFp bl0geworICAgICByZXR1cm4KKyB9CisgCisrIyBXaXRoIHByb2JlcyBpbnRlcmZhY2UgR0RCIG5v IGxvbmdlciBzY2FucyB0aGUgaW5mZXJpb3IgbGlicmFyeSBsaXN0IHNvIGl0cworKyMgY29ycnVw dGlvbiBjYW5ub3QgYmUgdGVzdGVkLiAgVGhlcmUgaXMgbm8gd2F5IHRvIGRpc2FibGUgdGhlIHBy b2JlcworKyMgaW50ZXJmYWNlLgorKworK3NldCBwcm9iZXMgeyBpbml0X3N0YXJ0IGluaXRfY29t cGxldGUgbWFwX3N0YXJ0IHJlbG9jX2NvbXBsZXRlIHVubWFwX3N0YXJ0CisrCSAgICAgdW5tYXBf Y29tcGxldGUgfQorK3NldCB0ZXN0ICJpbmZvIHByb2JlcyIKKytnZGJfdGVzdF9tdWx0aXBsZSAk dGVzdCAkdGVzdCB7CisrICAgIC1yZSAiXnJ0bGRcWyBcdFxdKyg/OnJ0bGRfKT8oXFthLXpfXF0r KVxbIFx0XF0iIHsKKysJc2V0IGlkeCBbbHNlYXJjaCAtZXhhY3QgJHByb2JlcyAkZXhwZWN0X291 dCgxLHN0cmluZyldCisrCWlmIHsgJGlkeCA+PSAwIH0geworKwkgICAgc2V0IHByb2JlcyBbbHJl cGxhY2UgJHByb2JlcyAkaWR4ICRpZHhdCisrCX0KKysJZXhwX2NvbnRpbnVlCisrICAgIH0KKysg ICAgLXJlICJeXFteXHJcblxdKlxyXG4iIHsKKysJZXhwX2NvbnRpbnVlCisrICAgIH0KKysgICAg LXJlICJeJGdkYl9wcm9tcHQgJCIgeworKyAgICB9CisrfQorK2lmIHsgW2xsZW5ndGggJHByb2Jl c10gPT0gMCB9IHsKKysgICAgeGZhaWwgJHRlc3QKKysgICAgdW50ZXN0ZWQgIkdEQiBpcyB1c2lu ZyBwcm9iZXMiCisrICAgIHJldHVybgorK30KKysKKyBnZGJfdGVzdCAiaW5mbyBzaGFyZWRsaWJy YXJ5IiAiRnJvbSAqIFRvIC4qIiAibm9ybWFsIGxpc3QiCisgCisgIyBHREIgY2hlY2tzIHRoZXJl IGZvciBtYXRjaGluZyBMX1BSRVYuCisKCmRpZmYgLS1naXQgYS9nZGItZGxvcGVuLXN0YXAtcHJv YmUucGF0Y2ggYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IGZmMTkyNjkuLjAwMDAwMDAKLS0tIGEvZ2RiLWRsb3Blbi1zdGFwLXByb2Jl LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzU3ICswLDAgQEAKLUZyb206IEdhcnkgQmVuc29u IDxnYmVuc29uQHJlZGhhdC5jb20+Ci1UbzogSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+Ci1NZXNzYWdlLUlEOiA8MjAxMTA4MTAxMzM2MDUuR0I3Mjk0QHJlZGhhdC5j b20+Ci0KLUluZGV4OiBnZGItNy40LjkxLjIwMTIwODAxL2dkYi9pbmZydW4uYwotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjQuOTEuMjAxMjA4MDEub3JpZy9nZGIvaW5mcnVuLmMJMjAxMi0wOC0wMSAx ODozODoyNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjkxLjIwMTIwODAxL2dkYi9pbmZy dW4uYwkyMDEyLTA4LTAxIDE4OjQ0OjU5LjU2ODUxODYwMiArMDIwMAotQEAgLTM2MSw2ICszNjEs MTMgQEAgc3RhdGljIHN0cnVjdCBzeW1ib2wgKnN0ZXBfc3RhcnRfZnVuY3RpbwotIC8qIE5vbnpl cm8gaWYgd2Ugd2FudCB0byBnaXZlIGNvbnRyb2wgdG8gdGhlIHVzZXIgd2hlbiB3ZSdyZSBub3Rp ZmllZAotICAgIG9mIHNoYXJlZCBsaWJyYXJ5IGV2ZW50cyBieSB0aGUgZHluYW1pYyBsaW5rZXIu ICAqLwotIGludCBzdG9wX29uX3NvbGliX2V2ZW50czsKLSsKLStzdGF0aWMgdm9pZAotK3NldF9z dG9wX29uX3NvbGliX2V2ZW50cyAoY2hhciAqYXJncywgaW50IGZyb21fdHR5LCBzdHJ1Y3QgY21k X2xpc3RfZWxlbWVudCAqYykKLSt7Ci0rICB1cGRhdGVfc29saWJfYnJlYWtwb2ludHMgKCk7Ci0r fSAKLSsKLSBzdGF0aWMgdm9pZAotIHNob3dfc3RvcF9vbl9zb2xpYl9ldmVudHMgKHN0cnVjdCB1 aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0gCQkJICAgc3RydWN0IGNtZF9saXN0X2VsZW1l bnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQotQEAgLTcyMjksNyArNzIzNiw3IEBAIFNob3cgc3Rv cHBpbmcgZm9yIHNoYXJlZCBsaWJyYXJ5IGV2ZW50cy4KLSBJZiBub256ZXJvLCBnZGIgd2lsbCBn aXZlIGNvbnRyb2wgdG8gdGhlIHVzZXIgd2hlbiB0aGUgZHluYW1pYyBsaW5rZXJcblwKLSBub3Rp ZmllcyBnZGIgb2Ygc2hhcmVkIGxpYnJhcnkgZXZlbnRzLiAgVGhlIG1vc3QgY29tbW9uIGV2ZW50 IG9mIGludGVyZXN0XG5cCi0gdG8gdGhlIHVzZXIgd291bGQgYmUgbG9hZGluZy91bmxvYWRpbmcg b2YgYSBuZXcgbGlicmFyeS4iKSwKLS0JCQkgICAgTlVMTCwKLSsJCQkgICAgc2V0X3N0b3Bfb25f c29saWJfZXZlbnRzLAotIAkJCSAgICBzaG93X3N0b3Bfb25fc29saWJfZXZlbnRzLAotIAkJCSAg ICAmc2V0bGlzdCwgJnNob3dsaXN0KTsKLSAKLUluZGV4OiBnZGItNy40LjkxLjIwMTIwODAxL2dk Yi9zb2xpYi1zdnI0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjkxLjIwMTIwODAxLm9yaWcv Z2RiL3NvbGliLXN2cjQuYwkyMDEyLTA4LTAxIDE4OjM4OjI0LjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjQuOTEuMjAxMjA4MDEvZ2RiL3NvbGliLXN2cjQuYwkyMDEyLTA4LTAxIDE4OjQ1OjEz LjQ0OTQ0MTc4NyArMDIwMAotQEAgLTQ3LDYgKzQ3LDcgQEAKLSAjaW5jbHVkZSAiYXV4di5oIgot ICNpbmNsdWRlICJleGNlcHRpb25zLmgiCi0gI2luY2x1ZGUgImdkYl9iZmQuaCIKLSsjaW5jbHVk ZSAicHJvYmUuaCIKLSAKLSBzdGF0aWMgc3RydWN0IGxpbmtfbWFwX29mZnNldHMgKnN2cjRfZmV0 Y2hfbGlua19tYXBfb2Zmc2V0cyAodm9pZCk7Ci0gc3RhdGljIGludCBzdnI0X2hhdmVfbGlua19t YXBfb2Zmc2V0cyAodm9pZCk7Ci1AQCAtOTMsNiArOTQsMzIgQEAgc3RhdGljIGNvbnN0IGNoYXIg KiBjb25zdCBzb2xpYl9icmVha19uYQotICAgTlVMTAotIH07Ci0gCi0rLyogQSBsaXN0IG9mIFN5 c3RlbVRhcCBwcm9iZXMgd2hpY2gsIGlmIHByZXNlbnQgaW4gdGhlIGR5bmFtaWMgbGlua2VyLAot KyAgIGFsbG93IG1vcmUgZmluZS1ncmFpbmVkIGJyZWFrcG9pbnRzIHRvIGJlIHBsYWNlZCBvbiBz aGFyZWQgbGlicmFyeQotKyAgIGV2ZW50cy4gICovCi0rCi0rc3RydWN0IHByb2JlX2luZm8KLSsg IHsKLSsgICAgLyogVGhlIG5hbWUgb2YgdGhlIHByb2JlLiAgKi8KLSsgICAgY29uc3QgY2hhciAq bmFtZTsKLSsKLSsgICAgLyogTm9uemVybyBpZiB0aGlzIHByb2JlIG11c3QgYmUgc3RvcHBlZCBh dCBldmVuIHdoZW4KLSsgICAgICAgc3RvcC1vbi1zb2xpYi1ldmVudHMgaXMgb2ZmLiAgKi8KLSsg ICAgaW50IG1hbmRhdG9yeTsKLSsgIH07Ci0rCi0rc3RhdGljIGNvbnN0IHN0cnVjdCBwcm9iZV9p bmZvIHByb2JlX2luZm9bXSA9Ci0rewotKyAgeyJydGxkX2luaXRfc3RhcnQiLCAwfSwKLSsgIHsi cnRsZF9pbml0X2NvbXBsZXRlIiwgMX0sCi0rICB7InJ0bGRfbWFwX3N0YXJ0IiwgMH0sCi0rICB7 InJ0bGRfcmVsb2NfY29tcGxldGUiLCAxfSwKLSsgIHsicnRsZF91bm1hcF9zdGFydCIsIDB9LAot KyAgeyJydGxkX3VubWFwX2NvbXBsZXRlIiwgMX0sCi0rfTsKLSsKLSsjZGVmaW5lIE5VTV9QUk9C RVMgKHNpemVvZihwcm9iZV9pbmZvKSAvIHNpemVvZihwcm9iZV9pbmZvWzBdKSkKLSsKLSBzdGF0 aWMgY29uc3QgY2hhciAqIGNvbnN0IGJrcHRfbmFtZXNbXSA9Ci0gewotICAgIl9zdGFydCIsCi1A QCAtMzE0LDYgKzM0MSwxMiBAQCBzdHJ1Y3Qgc3ZyNF9pbmZvCi0gICBDT1JFX0FERFIgaW50ZXJw X3RleHRfc2VjdF9oaWdoOwotICAgQ09SRV9BRERSIGludGVycF9wbHRfc2VjdF9sb3c7Ci0gICBD T1JFX0FERFIgaW50ZXJwX3BsdF9zZWN0X2hpZ2g7Ci0rCi0rICAvKiBTeXN0ZW1UYXAgcHJvYmVz LiAgKi8KLSsgIFZFQyAocHJvYmVfcCkgKnByb2Jlc1tOVU1fUFJPQkVTXTsKLSsKLSsgIC8qIE5v bnplcm8gaWYgd2UgYXJlIHVzaW5nIHRoZSBTeXN0ZW1UYXAgaW50ZXJmYWNlLiAgKi8KLSsgIGlu dCB1c2luZ19wcm9iZXM7Ci0gfTsKLSAKLSAvKiBQZXItcHJvZ3JhbS1zcGFjZSBkYXRhIGtleS4g ICovCi1AQCAtMzIzLDggKzM1NiwxNSBAQCBzdGF0aWMgdm9pZAotIHN2cjRfcHNwYWNlX2RhdGFf Y2xlYW51cCAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSwgdm9pZCAqYXJnKQotIHsKLSAg IHN0cnVjdCBzdnI0X2luZm8gKmluZm87Ci0rICBpbnQgaTsKLSAKLSAgIGluZm8gPSBwcm9ncmFt X3NwYWNlX2RhdGEgKHBzcGFjZSwgc29saWJfc3ZyNF9wc3BhY2VfZGF0YSk7Ci0rICBpZiAoaW5m byA9PSBOVUxMKQotKyAgICByZXR1cm47Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgTlVNX1BST0JF UzsgaSsrKQotKyAgICBWRUNfZnJlZSAocHJvYmVfcCwgaW5mby0+cHJvYmVzW2ldKTsKLSsKLSAg IHhmcmVlIChpbmZvKTsKLSB9Ci0gCi1AQCAtMTQ1MCw2ICsxNDkwLDEyNiBAQCBleGVjX2VudHJ5 X3BvaW50IChzdHJ1Y3QgYmZkICphYmZkLCBzdHJ1Ci0gCQkJCQkgICAgIHRhcmcpOwotIH0KLSAK LSsvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHN2cjRfdXBkYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9p bnRzLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rc3ZyNF91cGRhdGVfc29saWJfZXZlbnRfYnJlYWtw b2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmIsIHZvaWQgKmFyZykKLSt7Ci0rICBzdHJ1Y3Qgc3Zy NF9pbmZvICppbmZvID0gZ2V0X3N2cjRfaW5mbyAoKTsKLSsgIHN0cnVjdCBicF9sb2NhdGlvbiAq bG9jOwotKwotKyAgaWYgKGItPnR5cGUgIT0gYnBfc2hsaWJfZXZlbnQpCi0rICAgIHJldHVybiAw OwotKwotKyAgZm9yIChsb2MgPSBiLT5sb2M7IGxvYzsgbG9jID0gbG9jLT5uZXh0KQotKyAgICB7 Ci0rICAgICAgaW50IGk7Ci0rCi0rICAgICAgZm9yIChpID0gMDsgaSA8IE5VTV9QUk9CRVM7IGkr KykKLSsJewotKwkgIGlmICghcHJvYmVfaW5mb1tpXS5tYW5kYXRvcnkpCi0rCSAgICB7Ci0rCSAg ICAgIHN0cnVjdCBwcm9iZSAqcHJvYmU7Ci0rCSAgICAgIGludCBpeDsKLSsKLSsJICAgICAgZm9y IChpeCA9IDA7Ci0rCQkgICBWRUNfaXRlcmF0ZSAocHJvYmVfcCwgaW5mby0+cHJvYmVzW2ldLCBp eCwgcHJvYmUpOwotKwkJICAgKytpeCkKLSsJCXsKLSsJCSAgaWYgKGxvYy0+cHNwYWNlID09IGN1 cnJlbnRfcHJvZ3JhbV9zcGFjZQotKwkJICAgICAgJiYgbG9jLT5hZGRyZXNzID09IHByb2JlLT5h ZGRyZXNzKQotKwkJICAgIHsKLSsJCSAgICAgIGItPmVuYWJsZV9zdGF0ZSA9Ci0rCQkJc3RvcF9v bl9zb2xpYl9ldmVudHMgPyBicF9lbmFibGVkIDogYnBfZGlzYWJsZWQ7Ci0rCQkgICAgICByZXR1 cm4gMDsKLSsJCSAgICB9Ci0rCQl9Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotKwotKyAgcmV0dXJu IDA7Ci0rfQotKwotKy8qIEVuYWJsZSBvciBkaXNhYmxlIG9wdGlvbmFsIHNvbGliIGV2ZW50IGJy ZWFrcG9pbnRzIGFzIGFwcHJvcHJpYXRlLgotKyAgIENhbGxlZCB3aGVuZXZlciBzdG9wX29uX3Nv bGliX2V2ZW50cyBpcyBjaGFuZ2VkLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3N2cjRfdXBkYXRl X3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzICh2b2lkKQotK3sKLSsgIHN0cnVjdCBzdnI0X2luZm8g KmluZm8gPSBnZXRfc3ZyNF9pbmZvICgpOwotKwotKyAgaWYgKGluZm8tPnVzaW5nX3Byb2JlcykK LSsgICAgaXRlcmF0ZV9vdmVyX2JyZWFrcG9pbnRzIChzdnI0X3VwZGF0ZV9zb2xpYl9ldmVudF9i cmVha3BvaW50LCBOVUxMKTsKLSt9Ci0rCi0rLyogQm90aCB0aGUgU3VuT1MgYW5kIHRoZSBTVlI0 IGR5bmFtaWMgbGlua2VycyBjYWxsIGEgbWFya2VyIGZ1bmN0aW9uCi0rICAgYmVmb3JlIGFuZCBh ZnRlciBtYXBwaW5nIGFuZCB1bm1hcHBpbmcgc2hhcmVkIGxpYnJhcmllcy4gIFRoZSBzb2xlCi0r ICAgcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0byBhbGxvdyBkZWJ1Z2dlcnMgdG8gc2V0IGEg YnJlYWtwb2ludCBzbwotKyAgIHRoZXkgY2FuIHRyYWNrIHRoZXNlIGNoYW5nZXMuCi0rCi0rICAg U29tZSB2ZXJzaW9ucyBvZiB0aGUgZ2xpYmMgZHluYW1pYyBsaW5rZXIgY29udGFpbiBTeXN0ZW1U YXAgcHJvYmVzCi0rICAgdG8gYWxsb3cgbW9yZSBmaW5lIGdyYWluZWQgc3RvcHBpbmcuICBHaXZl biB0aGUgYWRkcmVzcyBvZiB0aGUKLSsgICBvcmlnaW5hbCBtYXJrZXIgZnVuY3Rpb24sIHRoaXMg ZnVuY3Rpb24gYXR0ZW1wdHMgdG8gZmluZCB0aGVzZQotKyAgIHByb2JlcywgYW5kIGlmIGZvdW5k LCBzZXRzIGJyZWFrcG9pbnRzIG9uIHRob3NlIGluc3RlYWQuICBJZiB0aGUKLSsgICBwcm9iZXMg YXJlbid0IGZvdW5kLCBhIHNpbmdsZSBicmVha3BvaW50IGlzIHNldCBvbiB0aGUgb3JpZ2luYWwK LSsgICBTVlI0IG1hcmtlciBmdW5jdGlvbi4gICovCi0rCi0rc3RhdGljIHZvaWQKLStzdnI0X2Ny ZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50cyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENP UkVfQUREUiBhZGRyZXNzKQotK3sKLSsgIHN0cnVjdCBzdnI0X2luZm8gKmluZm8gPSBnZXRfc3Zy NF9pbmZvICgpOwotKyAgc3RydWN0IG9ial9zZWN0aW9uICpvczsKLSsKLSsgIG9zID0gZmluZF9w Y19zZWN0aW9uIChhZGRyZXNzKTsKLSsgIGlmIChvcyAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAg aW50IGFsbF9wcm9iZXNfZm91bmQgPSAxOwotKyAgICAgIGludCBpOwotKwotKyAgICAgIGZvciAo aSA9IDA7IGkgPCBOVU1fUFJPQkVTOyBpKyspCi0rCXsKLSsJICBpbmZvLT5wcm9iZXNbaV0gPSBm aW5kX3Byb2Jlc19pbl9vYmpmaWxlIChvcy0+b2JqZmlsZSwgInJ0bGQiLAotKwkJCQkJCSAgICBw cm9iZV9pbmZvW2ldLm5hbWUpOwotKwotKwkgIGlmICghVkVDX2xlbmd0aChwcm9iZV9wLCBpbmZv LT5wcm9iZXNbaV0pKQotKwkgICAgewotKwkgICAgICBpbnQgajsKLSsKLSsJICAgICAgZm9yIChq ID0gaSAtIDE7IGogPj0gMDsgai0tKQotKwkJewotKwkJICBWRUNfZnJlZSAocHJvYmVfcCwgaW5m by0+cHJvYmVzW2pdKTsKLSsJCSAgaW5mby0+cHJvYmVzW2pdID0gTlVMTDsKLSsJCX0KLSsKLSsJ ICAgICAgYWxsX3Byb2Jlc19mb3VuZCA9IDA7Ci0rCSAgICAgIGJyZWFrOwotKwkgICAgfQotKwl9 Ci0rCi0rICAgICAgaWYgKGFsbF9wcm9iZXNfZm91bmQpCi0rCXsKLSsJICBpbmZvLT51c2luZ19w cm9iZXMgPSAxOwotKwotKwkgIGZvciAoaSA9IDA7IGkgPCBOVU1fUFJPQkVTOyBpKyspCi0rCSAg ICB7Ci0rCSAgICAgIHN0cnVjdCBwcm9iZSAqcHJvYmU7Ci0rCSAgICAgIGludCBpeDsKLSsKLSsJ ICAgICAgZm9yIChpeCA9IDA7Ci0rCQkgICBWRUNfaXRlcmF0ZSAocHJvYmVfcCwgaW5mby0+cHJv YmVzW2ldLCBpeCwgcHJvYmUpOwotKwkJICAgKytpeCkKLSsJCWNyZWF0ZV9zb2xpYl9ldmVudF9i cmVha3BvaW50IChnZGJhcmNoLCBwcm9iZS0+YWRkcmVzcyk7Ci0rCSAgICB9Ci0rCi0rCSAgc3Zy NF91cGRhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMgKCk7Ci0rCSAgcmV0dXJuOwotKwl9Ci0r ICAgIH0KLSsKLSsgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50IChnZGJhcmNoLCBhZGRy ZXNzKTsKLSt9Ci0rCi0gLyogSGVscGVyIGZ1bmN0aW9uIGZvciBnZGJfYmZkX2xvb2t1cF9zeW1i b2wuICAqLwotIAotIHN0YXRpYyBpbnQKLUBAIC0xNDk4LDEwICsxNjU4LDE4IEBAIGVuYWJsZV9i cmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW4KLSAgIGFzZWN0aW9uICppbnRlcnBfc2Vj dDsKLSAgIGdkYl9ieXRlICppbnRlcnBfbmFtZTsKLSAgIENPUkVfQUREUiBzeW1fYWRkcjsKLSsg IGludCBpOwotIAotICAgaW5mby0+aW50ZXJwX3RleHRfc2VjdF9sb3cgPSBpbmZvLT5pbnRlcnBf dGV4dF9zZWN0X2hpZ2ggPSAwOwotICAgaW5mby0+aW50ZXJwX3BsdF9zZWN0X2xvdyA9IGluZm8t PmludGVycF9wbHRfc2VjdF9oaWdoID0gMDsKLSAKLSsgIGZvciAoaSA9IDA7IGkgPCBOVU1fUFJP QkVTOyBpKyspCi0rICAgIHsKLSsgICAgICBWRUNfZnJlZSAocHJvYmVfcCwgaW5mby0+cHJvYmVz W2ldKTsKLSsgICAgICBpbmZvLT5wcm9iZXNbaV0gPSBOVUxMOwotKyAgICB9Ci0rICBpbmZvLT51 c2luZ19wcm9iZXMgPSAwOwotKwotICAgLyogSWYgd2UgYWxyZWFkeSBoYXZlIGEgc2hhcmVkIGxp YnJhcnkgbGlzdCBpbiB0aGUgdGFyZ2V0LCBhbmQKLSAgICAgIHJfZGVidWcgY29udGFpbnMgcl9i cmssIHNldCB0aGUgYnJlYWtwb2ludCB0aGVyZSAtIHRoaXMgc2hvdWxkCi0gICAgICBtZWFuIHJf YnJrIGhhcyBhbHJlYWR5IGJlZW4gcmVsb2NhdGVkLiAgQXNzdW1lIHRoZSBkeW5hbWljIGxpbmtl cgotQEAgLTE1MzMsNyArMTcwMSw3IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAq aW5mbywgaW4KLSAJIFRoYXQga25vd2xlZGdlIGlzIGVuY29kZWQgaW4gdGhlIGFkZHJlc3MsIGlm IGl0J3MgVGh1bWIgdGhlIGxvdyBiaXQKLSAJIGlzIDEuICBIb3dldmVyLCB3ZSd2ZSBzdHJpcHBl ZCB0aGF0IGluZm8gYWJvdmUgYW5kIGl0J3Mgbm90IGNsZWFyCi0gCSB3aGF0IGFsbCB0aGUgY29u c2VxdWVuY2VzIGFyZSBvZiBwYXNzaW5nIGEgbm9uLWFkZHJfYml0c19yZW1vdmUnZAotLQkgYWRk cmVzcyB0byBjcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludC4gIFRoZSBjYWxsIHRvCi0rCSBh ZGRyZXNzIHRvIHN2cjRfY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzLiAgVGhlIGNhbGwg dG8KLSAJIGZpbmRfcGNfc2VjdGlvbiB2ZXJpZmllcyB3ZSBrbm93IGFib3V0IHRoZSBhZGRyZXNz IGFuZCBoYXZlIHNvbWUKLSAJIGhvcGUgb2YgY29tcHV0aW5nIHRoZSByaWdodCBraW5kIG9mIGJy ZWFrcG9pbnQgdG8gdXNlICh2aWEKLSAJIHN5bWJvbCBpbmZvKS4gIEl0IGRvZXMgbWVhbiB0aGF0 IEdEQiBuZWVkcyB0byBiZSBwb2ludGVkIGF0IGEKLUBAIC0xNTcxLDcgKzE3MzksNyBAQCBlbmFi bGVfYnJlYWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8sIGluCi0gCQkrIGJmZF9zZWN0aW9uX3Np emUgKHRtcF9iZmQsIGludGVycF9zZWN0KTsKLSAJICAgIH0KLSAKLS0JICBjcmVhdGVfc29saWJf ZXZlbnRfYnJlYWtwb2ludCAodGFyZ2V0X2dkYmFyY2gsIHN5bV9hZGRyKTsKLSsJICBzdnI0X2Ny ZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50cyAodGFyZ2V0X2dkYmFyY2gsIHN5bV9hZGRyKTsK LSAJICByZXR1cm4gMTsKLSAJfQotICAgICB9Ci1AQCAtMTcyOSw3ICsxODk3LDggQEAgZW5hYmxl X2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBpbgotIAotICAgICAgIGlmIChzeW1fYWRk ciAhPSAwKQotIAl7Ci0tCSAgY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnQgKHRhcmdldF9n ZGJhcmNoLCBsb2FkX2FkZHIgKyBzeW1fYWRkcik7Ci0rCSAgc3ZyNF9jcmVhdGVfc29saWJfZXZl bnRfYnJlYWtwb2ludHMgKHRhcmdldF9nZGJhcmNoLAotKwkJCQkJICAgICAgIGxvYWRfYWRkciAr IHN5bV9hZGRyKTsKLSAJICB4ZnJlZSAoaW50ZXJwX25hbWUpOwotIAkgIHJldHVybiAxOwotIAl9 Ci1AQCAtMTc1NSw3ICsxOTI0LDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICpp bmZvLCBpbgotIAkgIHN5bV9hZGRyID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRk ciAodGFyZ2V0X2dkYmFyY2gsCi0gCQkJCQkJCSBzeW1fYWRkciwKLSAJCQkJCQkJICZjdXJyZW50 X3RhcmdldCk7Ci0tCSAgY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnQgKHRhcmdldF9nZGJh cmNoLCBzeW1fYWRkcik7Ci0rCSAgc3ZyNF9jcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMg KHRhcmdldF9nZGJhcmNoLCBzeW1fYWRkcik7Ci0gCSAgcmV0dXJuIDE7Ci0gCX0KLSAgICAgfQot QEAgLTE3NzEsNyArMTk0MCw3IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5m bywgaW4KLSAJICAgICAgc3ltX2FkZHIgPSBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9h ZGRyICh0YXJnZXRfZ2RiYXJjaCwKLSAJCQkJCQkJICAgICBzeW1fYWRkciwKLSAJCQkJCQkJICAg ICAmY3VycmVudF90YXJnZXQpOwotLQkgICAgICBjcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2lu dCAodGFyZ2V0X2dkYmFyY2gsIHN5bV9hZGRyKTsKLSsJICAgICAgc3ZyNF9jcmVhdGVfc29saWJf ZXZlbnRfYnJlYWtwb2ludHMgKHRhcmdldF9nZGJhcmNoLCBzeW1fYWRkcik7Ci0gCSAgICAgIHJl dHVybiAxOwotIAkgICAgfQotIAl9Ci1AQCAtMjU0Nyw0ICsyNzE2LDUgQEAgX2luaXRpYWxpemVf c3ZyNF9zb2xpYiAodm9pZCkKLSAgIHN2cjRfc29fb3BzLmxvb2t1cF9saWJfZ2xvYmFsX3N5bWJv bCA9IGVsZl9sb29rdXBfbGliX3N5bWJvbDsKLSAgIHN2cjRfc29fb3BzLnNhbWUgPSBzdnI0X3Nh bWU7Ci0gICBzdnI0X3NvX29wcy5rZWVwX2RhdGFfaW5fY29yZSA9IHN2cjRfa2VlcF9kYXRhX2lu X2NvcmU7Ci0rICBzdnI0X3NvX29wcy51cGRhdGVfYnJlYWtwb2ludHMgPSBzdnI0X3VwZGF0ZV9z b2xpYl9ldmVudF9icmVha3BvaW50czsKLSB9Ci1JbmRleDogZ2RiLTcuNC45MS4yMDEyMDgwMS9n ZGIvc29saWIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuOTEuMjAxMjA4MDEub3JpZy9nZGIv c29saWIuYwkyMDEyLTA4LTAxIDE4OjM4OjI0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQu OTEuMjAxMjA4MDEvZ2RiL3NvbGliLmMJMjAxMi0wOC0wMSAxODo0NDo1OS41NzM1MTg1NzIgKzAy MDAKLUBAIC0xMjI2LDYgKzEyMjYsMTggQEAgbm9fc2hhcmVkX2xpYnJhcmllcyAoY2hhciAqaWdu b3JlZCwgaW50Ci0gICBvYmpmaWxlX3B1cmdlX3NvbGlicyAoKTsKLSB9Ci0gCi0rLyogRW5hYmxl IG9yIGRpc2FibGUgb3B0aW9uYWwgc29saWIgZXZlbnQgYnJlYWtwb2ludHMgYXMgYXBwcm9wcmlh dGUuICAqLwotKwotK3ZvaWQKLSt1cGRhdGVfc29saWJfYnJlYWtwb2ludHMgKHZvaWQpCi0rewot KyAgc3RydWN0IHRhcmdldF9zb19vcHMgKm9wcyA9IHNvbGliX29wcyAodGFyZ2V0X2dkYmFyY2gp OwotKwotKyAgaWYgKG9wcy0+dXBkYXRlX2JyZWFrcG9pbnRzICE9IE5VTEwpCi0rICAgIG9wcy0+ dXBkYXRlX2JyZWFrcG9pbnRzICgpOwotK30KLSsgIAotKwotIC8qIFJlbG9hZCBzaGFyZWQgbGli cmFyaWVzLCBidXQgYXZvaWQgcmVsb2FkaW5nIHRoZSBzYW1lIHN5bWJvbCBmaWxlCi0gICAgd2Ug YWxyZWFkeSBoYXZlIGxvYWRlZC4gICovCi0gCi1JbmRleDogZ2RiLTcuNC45MS4yMDEyMDgwMS9n ZGIvc29saWIuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuOTEuMjAxMjA4MDEub3JpZy9nZGIv c29saWIuaAkyMDEyLTAyLTAzIDE2OjE5OjM3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQu OTEuMjAxMjA4MDEvZ2RiL3NvbGliLmgJMjAxMi0wOC0wMSAxODo0NDo1OS41NzQ1MTg1NjYgKzAy MDAKLUBAIC05MSw0ICs5MSw4IEBAIGV4dGVybiBDT1JFX0FERFIgZ2RiX2JmZF9sb29rdXBfc3lt Ym9sX2YKLSAJCQkJCQkJCSAgICAgIHZvaWQgKiksCi0gCQkJCQkJICAgIHZvaWQgKmRhdGEpOwot IAotKy8qIEVuYWJsZSBvciBkaXNhYmxlIG9wdGlvbmFsIHNvbGliIGV2ZW50IGJyZWFrcG9pbnRz IGFzIGFwcHJvcHJpYXRlLiAgKi8KLSsKLStleHRlcm4gdm9pZCB1cGRhdGVfc29saWJfYnJlYWtw b2ludHMgKHZvaWQpOwotKwotICNlbmRpZiAvKiBTT0xJQl9IICovCi1JbmRleDogZ2RiLTcuNC45 MS4yMDEyMDgwMS9nZGIvc29saXN0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjkxLjIwMTIw ODAxLm9yaWcvZ2RiL3NvbGlzdC5oCTIwMTItMDEtMDQgMDk6MTc6MTEuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuNC45MS4yMDEyMDgwMS9nZGIvc29saXN0LmgJMjAxMi0wOC0wMSAxODo0NDo1 OS41NzQ1MTg1NjYgKzAyMDAKLUBAIC0xNDksNiArMTQ5LDEzIEBAIHN0cnVjdCB0YXJnZXRfc29f b3BzCi0gICAgICAgIGNvcmUgZmlsZSAoaW4gcGFydGljdWxhciwgZm9yIHJlYWRvbmx5IHNlY3Rp b25zKS4gICovCi0gICAgIGludCAoKmtlZXBfZGF0YV9pbl9jb3JlKSAoQ09SRV9BRERSIHZhZGRy LAotIAkJCSAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSk7Ci0rCi0rICAgIC8qIEVuYWJsZSBvciBk aXNhYmxlIG9wdGlvbmFsIHNvbGliIGV2ZW50IGJyZWFrcG9pbnRzIGFzCi0rICAgICAgIGFwcHJv cHJpYXRlLiAgVGhpcyBzaG91bGQgYmUgY2FsbGVkIHdoZW5ldmVyCi0rICAgICAgIHN0b3Bfb25f c29saWJfZXZlbnRzIGlzIGNoYW5nZWQuICBUaGlzIHBvaW50ZXIgY2FuIGJlCi0rICAgICAgIE5V TEwsIGluIHdoaWNoIGNhc2Ugbm8gZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGlzIG5lY2Vzc2FyeQot KyAgICAgICBmb3IgdGhpcyB0YXJnZXQuICAqLwotKyAgICB2b2lkICgqdXBkYXRlX2JyZWFrcG9p bnRzKSAodm9pZCk7Ci0gICB9OwotIAotIC8qIEZyZWUgdGhlIG1lbW9yeSBhc3NvY2lhdGVkIHdp dGggYSAoc29fbGlzdCAqKS4gICovCgpkaWZmIC0tZ2l0IGEvZ2RiLnNwZWMgYi9nZGIuc3BlYwpp bmRleCA3M2RmNzBlLi5hOTE1YzM4IDEwMDY0NAotLS0gYS9nZGIuc3BlYworKysgYi9nZGIuc3Bl YwpAQCAtMjcsMjAgKzI3LDIwIEBACiBTdW1tYXJ5OiBBIEdOVSBzb3VyY2UtbGV2ZWwgZGVidWdn ZXIgZm9yIEMsIEMrKywgRm9ydHJhbiwgR28gYW5kIG90aGVyIGxhbmd1YWdlcwogTmFtZTogJXs/ c2NsX3ByZWZpeH1nZGIKIAotJWdsb2JhbCBzbmFwICAgICAgIDIwMTIwODAxCi0jIFNlZSB0ZW1w c3RhbXAgb2Ygc291cmNlIGdudWxpYiBpbnN0YWxsZWQgaW50byBnZGIvZ251bGliLyAuCislZ2xv YmFsIHNuYXAgICAgICAgMjAxMjA4MTcKKyMgU2VlIHRpbWVzdGFtcCBvZiBzb3VyY2UgZ251bGli IGluc3RhbGxlZCBpbnRvIGdkYi9nbnVsaWIvIC4KICVnbG9iYWwgc25hcGdudWxpYiAyMDEyMDYy MwotVmVyc2lvbjogNy40LjkxLiV7c25hcH0KK1ZlcnNpb246IDcuNQogCiAjIFRoZSByZWxlYXNl IGFsd2F5cyBjb250YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBhdCAx LgogIyBgdXBzdHJlYW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkgcnBt IGRlcGVuZGVuY2llcyBjb21wYXRpYmxlIGZvciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDE4JXs/ ZGlzdH0KK1JlbGVhc2U6IDE5JXs/ZGlzdH0KIAogTGljZW5zZTogR1BMdjMrIGFuZCBHUEx2Mysg d2l0aCBleGNlcHRpb25zIGFuZCBHUEx2MisgYW5kIEdQTHYyKyB3aXRoIGV4Y2VwdGlvbnMgYW5k IEdQTCsgYW5kIExHUEx2MisgYW5kIEJTRCBhbmQgUHVibGljIERvbWFpbgogR3JvdXA6IERldmVs b3BtZW50L0RlYnVnZ2VycwogIyBEbyBub3QgcHJvdmlkZSBVUkwgZm9yIHNuYXBzaG90cyBhcyB0 aGUgZmlsZSBsYXN0cyB0aGVyZSBvbmx5IGZvciAyIGRheXMuCiAjIGZ0cDovL3NvdXJjZXdhcmUu b3JnL3B1Yi9nZGIvcmVsZWFzZXMvZ2RiLSV7dmVyc2lvbn0udGFyLmJ6MgotU291cmNlOiBnZGIt JXt2ZXJzaW9ufS50YXIuYnoyCitTb3VyY2U6IGZ0cDovL3NvdXJjZXdhcmUub3JnL3B1Yi9nZGIv cmVsZWFzZXMvZ2RiLSV7dmVyc2lvbn0udGFyLmJ6MgogQnVpbGRyb290OiAlKG1rdGVtcCAtdWQg JXtfdG1wcGF0aH0vJXtuYW1lfS0le3ZlcnNpb259LSV7cmVsZWFzZX0tWFhYWFhYKQogVVJMOiBo dHRwOi8vZ251Lm9yZy9zb2Z0d2FyZS9nZGIvCiAKQEAgLTUxMiw4ICs1MTIsMTUgQEAgUGF0Y2g1 Nzk6IGdkYi03LjIuNTAtc3BhcmMtYWRkLXdvcmthcm91bmQtdG8tYnJva2VuLWRlYnVnLWZpbGVz LnBhdGNoCiAKICMgRml4IGRsb3BlbiBvZiBsaWJwdGhyZWFkLnNvLCBwYXRjaGVkIGdsaWJjIHJl cXVpcmVkIChHYXJ5IEJlbnNvbiwgQlogNjY5NDMyKS4KICM9cHVzaAotUGF0Y2g2MTg6IGdkYi1k bG9wZW4tc3RhcC1wcm9iZS5wYXRjaAorUGF0Y2g2MTg6IGdkYi1kbG9wZW4tc3RhcC1wcm9iZS0x b2Y3LnBhdGNoCitQYXRjaDcxNzogZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTJvZjcucGF0Y2gKK1Bh dGNoNzE4OiBnZGItZGxvcGVuLXN0YXAtcHJvYmUtM29mNy5wYXRjaAorUGF0Y2g3MTk6IGdkYi1k bG9wZW4tc3RhcC1wcm9iZS00b2Y3LnBhdGNoCitQYXRjaDcyMDogZ2RiLWRsb3Blbi1zdGFwLXBy b2JlLTVvZjcucGF0Y2gKK1BhdGNoNzIxOiBnZGItZGxvcGVuLXN0YXAtcHJvYmUtNm9mNy5wYXRj aAorUGF0Y2g3MjI6IGdkYi1kbG9wZW4tc3RhcC1wcm9iZS03b2Y3LnBhdGNoCiBQYXRjaDYxOTog Z2RiLWRsb3Blbi1zdGFwLXByb2JlLXRlc3QucGF0Y2gKK1BhdGNoNzIzOiBnZGItZGxvcGVuLXN0 YXAtcHJvYmUtdGVzdDIucGF0Y2gKIAogIyBXb3JrIGFyb3VuZCBQUiBsaWJjLzEzMDk3ICJsaW51 eC12ZHNvLnNvLjEiIHdhcm5pbmcgbWVzc2FnZS4KICM9cHVzaApAQCAtODQ4LDYgKzg1NSwxMyBA QCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9wLWV4 cC5jIGdkYi9nby1leHAuYwogJXBhdGNoNTQ4IC1wMQogJXBhdGNoNTc5IC1wMQogJXBhdGNoNjE4 IC1wMQorJXBhdGNoNzE3IC1wMQorJXBhdGNoNzE4IC1wMQorJXBhdGNoNzE5IC1wMQorJXBhdGNo NzIwIC1wMQorJXBhdGNoNzIxIC1wMQorJXBhdGNoNzIyIC1wMQorJXBhdGNoNzIzIC1wMQogJXBh dGNoNjE5IC1wMQogJXBhdGNoNjI3IC1wMQogJXBhdGNoNjM0IC1wMQpAQCAtMTM1NSw3ICsxMzY5 LDExIEBAIGZpCiAlZW5kaWYgIyAwJXshP2VsNToxfSB8fCAiJXtfdGFyZ2V0X2NwdX0iID09ICJu b2FyY2giCiAKICVjaGFuZ2Vsb2cKLSogRnJpIEF1ZyAxNyAyMDEyIEphbiBLcmF0b2NodmlsIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuNC45MS4yMDEyMDgwMS0xOAorKiBTYXQgQXVn IDE4IDIwMTIgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy41 LTE5LmZjMTgKKy0gUmViYXNlIHRvIEZTRiBHREIgNy41LgorLSBVcGRhdGUgZGxvcGVuIHRvIHN1 cHBvcnQgdHdvIHZhcmlhbnRzIG9mIGdsaWJjIChHYXJ5IEJlbnNvbiwgQlogNjY5NDMyKS4KKwor KiBGcmkgQXVnIDE3IDIwMTIgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+IC0gNy40LjkxLjIwMTIwODAxLTE4LmZjMTgKIC0gRHJvcCBTb3VyY2UgVVJMIGZvciBzbmFw c2hvdHMuCiAtIFNlcGFyYXRlICUle3NuYXBnbnVsaWJ9IGZyb20gJSV7c25hcH0uCiAtIEZpeCAl JXtsaWJzdGRjeHhweXRob259IHRvIGJlICUle25hbWV9LXByZWZpeGVkLgpAQCAtMTM2MywxMSAr MTM4MSwxMSBAQCBmaQogLSBJbmNsdWRlIFJIRUwtNSBjb21wYXRpYmxlICUle2J1aWxkcm9vdH0g Y2xlYW51cC4KIC0gVXNlICUlX19nbG9iYWxfbGRmbGFncy4KIAotKiBXZWQgQXVnICAxIDIwMTIg SmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy40LjkxLjIwMTIw ODAxLTE3CisqIFdlZCBBdWcgIDEgMjAxMiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4gLSA3LjQuOTEuMjAxMjA4MDEtMTcuZmMxOAogLSBSZWJhc2UgdG8gRlNGIEdE QiA3LjQuOTEuMjAxMjA4MDEuCiAtIFtkd3pdIFJlYmFzZSBpdCBmcm9tIEZTRiBHREIgSEVBRC4K IAotKiBUaHUgSnVsIDE5IDIwMTIgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbC1lbmdA bGlzdHMuZmVkb3JhcHJvamVjdC5vcmc+IC0gNy40LjUwLjIwMTIwNzE0LTE2CisqIFRodSBKdWwg MTkgMjAxMiBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsLWVuZ0BsaXN0cy5mZWRvcmFw cm9qZWN0Lm9yZz4gLSA3LjQuNTAuMjAxMjA3MTQtMTYuZmMxOAogLSBSZWJ1aWx0IGZvciBodHRw czovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzE4X01hc3NfUmVidWlsZAogCiAqIE1v biBKdWwgMTYgMjAxMiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4g LSA3LjQuNTAuMjAxMjA3MTQtMTUuZmMxOAoKZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2Vz CmluZGV4IDFlOTQ0YWYuLjQ1Yjk2MGQgMTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNl cwpAQCAtMSwyICsxLDIgQEAKIDQ5ODEzMDdhYTk2MTliYmVjNWI3MzI2MWU0ZTQxYzhkICBnZGIt bGlic3RkYysrLXYzLXB5dGhvbi1yMTU1OTc4LnRhci5iejIKLWVkNDJlZTk1YjdhMTE0NTUxMDk0 Yzg0ZWU0MTkyNjQzICBnZGItNy40LjkxLjIwMTIwODAxLnRhci5iejIKKzI0YTY3NzlhOWZlMDI2 MDY2NzcxMGRlMWIwODJlZjYxICBnZGItNy41LnRhci5iejIK