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: Sergio Durigan Junior To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: Re-add "[aarch64] Fix missed unaligned hardware watchpoints (RH BZ 1347993)." Date: Sat, 27 Jun 2026 23:58:36 GMT Message-ID: <178260471676.1.212529915616809182.rpms-gdb-f62b68277777@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: f62b68277777d1b021523a23272fe156ea4fb5e7 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogZjYyYjY4Mjc3Nzc3ZDFiMDIxNTIzYTIzMjcyZmUxNTZlYTRm YjVlNwogICAgICAgICAgICBBdXRob3IgOiBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgPHNlcmdpb2Rq QHJlZGhhdC5jb20+CiAgICAgICAgICAgIERhdGUgICA6IDIwMTgtMDUtMTdUMTY6MDI6MjYtMDQ6 MDAKICAgICAgICAgICAgU3RhdHMgIDogKzEyNTQvLTAgaW4gNCBmaWxlKHMpCiAgICAgICAgICAg IFVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvZjYyYjY4 Mjc3Nzc3ZDFiMDIxNTIzYTIzMjcyZmUxNTZlYTRmYjVlNz9icmFuY2g9Z2RiLTE3LjItcmViYXNl LWY0NAoKICAgICAgICAgICAgTG9nOgogICAgICAgICAgICBSZS1hZGQgIlthYXJjaDY0XSBGaXgg bWlzc2VkIHVuYWxpZ25lZCBoYXJkd2FyZSB3YXRjaHBvaW50cyAoUkggQlogMTM0Nzk5MykuIgoK VGhpcyBjb21taXQgcmUtYWRkcyB0aGUgcGF0Y2gsIHVzaW5nIHRoZSBjdXJyZW50IHBhdGNoIGZy YW1ld29yay4KCi0tLQpkaWZmIC0tZ2l0IGEvX2dkYi5zcGVjLlBhdGNoLmluY2x1ZGUgYi9fZ2Ri LnNwZWMuUGF0Y2guaW5jbHVkZQppbmRleCAzNTMzNTZlLi43OGQ1ZWM1IDEwMDY0NAotLS0gYS9f Z2RiLnNwZWMuUGF0Y2guaW5jbHVkZQorKysgYi9fZ2RiLnNwZWMuUGF0Y2guaW5jbHVkZQpAQCAt NTI3LDMgKzUyNyw2IEBAIFBhdGNoMTI2OiBnZGItcHBjNjQtc3R3dXgtdGF1dG9sb2dpY2FsLWNv bXBhcmUucGF0Y2gKICMgPWZlZG9yYXRlc3QKIFBhdGNoMTI3OiBnZGItcmhiejE1NTMxMDQtczM5 MHgtYXJjaDEyLXRlc3QucGF0Y2gKIAorIyBbYWFyY2g2NF0gRml4IG1pc3NlZCB1bmFsaWduZWQg aGFyZHdhcmUgd2F0Y2hwb2ludHMgKFJIIEJaIDEzNDc5OTMpLgorUGF0Y2gxMjg6IGdkYi1yaGJ6 MTM0Nzk5My1hYXJjaDY0LWh3LXdhdGNocG9pbnQucGF0Y2gKKwoKZGlmZiAtLWdpdCBhL19nZGIu c3BlYy5wYXRjaC5pbmNsdWRlIGIvX2dkYi5zcGVjLnBhdGNoLmluY2x1ZGUKaW5kZXggMjhjNmQx Zi4uYWE0ZmIxOSAxMDA2NDQKLS0tIGEvX2dkYi5zcGVjLnBhdGNoLmluY2x1ZGUKKysrIGIvX2dk Yi5zcGVjLnBhdGNoLmluY2x1ZGUKQEAgLTEyNSwzICsxMjUsNCBAQAogJXBhdGNoMTI1IC1wMQog JXBhdGNoMTI2IC1wMQogJXBhdGNoMTI3IC1wMQorJXBhdGNoMTI4IC1wMQoKZGlmZiAtLWdpdCBh L19wYXRjaF9vcmRlciBiL19wYXRjaF9vcmRlcgppbmRleCA5MWM2OGRhLi44NjZiY2M0IDEwMDY0 NAotLS0gYS9fcGF0Y2hfb3JkZXIKKysrIGIvX3BhdGNoX29yZGVyCkBAIC0xMjUsMyArMTI1LDQg QEAgZ2RiLXZsYS1pbnRlbC1maXgtcHJpbnQtY2hhci1hcnJheS5wYXRjaAogZ2RiLXJoYnoxNTQw NTU5LWdkYmFkZGluZGV4LWdsaWJjZGVidWctcmVncmVzc2lvbi5wYXRjaAogZ2RiLXBwYzY0LXN0 d3V4LXRhdXRvbG9naWNhbC1jb21wYXJlLnBhdGNoCiBnZGItcmhiejE1NTMxMDQtczM5MHgtYXJj aDEyLXRlc3QucGF0Y2gKK2dkYi1yaGJ6MTM0Nzk5My1hYXJjaDY0LWh3LXdhdGNocG9pbnQucGF0 Y2gKCmRpZmYgLS1naXQgYS9nZGItcmhiejEzNDc5OTMtYWFyY2g2NC1ody13YXRjaHBvaW50LnBh dGNoIGIvZ2RiLXJoYnoxMzQ3OTkzLWFhcmNoNjQtaHctd2F0Y2hwb2ludC5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjc5ZTc0Ci0tLSAvZGV2L251bGwKKysrIGIv Z2RiLXJoYnoxMzQ3OTkzLWFhcmNoNjQtaHctd2F0Y2hwb2ludC5wYXRjaApAQCAtMCwwICsxLDEy NDkgQEAKK0Zyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9t OiBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgPHNlcmdpb2RqQHJlZGhhdC5jb20+CitEYXRlOiBUaHUs IDE3IE1heSAyMDE4IDE1OjA5OjAyIC0wNDAwCitTdWJqZWN0OiBbYWFyY2g2NF0gRml4IG1pc3Nl ZCB1bmFsaWduZWQgaGFyZHdhcmUgd2F0Y2hwb2ludHMgKFJIIEJaIDEzNDc5OTMpLgorCitGaWxl TmFtZTogZ2RiLXJoYnoxMzQ3OTkzLWFhcmNoNjQtaHctd2F0Y2hwb2ludC5wYXRjaAorCis7OyBb YWFyY2g2NF0gRml4IG1pc3NlZCB1bmFsaWduZWQgaGFyZHdhcmUgd2F0Y2hwb2ludHMgKFJIIEJa IDEzNDc5OTMpLgorCitjb21taXQgYTNiNjBlNDU4ODYwNjM1NGI5MzUwOGEwMDA4YTVjYTA0YjY4 ZmFkOAorQXV0aG9yOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K K0RhdGU6ICAgRnJpIE1heSA0IDIyOjIyOjA0IDIwMTggKzAyMDAKKworYWFyY2g2NDogUFIgMTk4 MDY6IHdhdGNocG9pbnRzOiBmYWxzZSBuZWdhdGl2ZXMgKyBQUiAyMDIwNyBjb250aWd1b3VzIG9u ZXMKKworU29tZSB1bmFsaWduZWQgd2F0Y2hwb2ludHMgd2VyZSBjdXJyZW50bHkgbWlzc2VkLgor CitPbiBvbGQga2VybmVscyBhcyBzcGVjaWZpZWQgaW4KKwlrZXJuZWwgUkZFOiBhYXJjaDY0OiBw dHJhY2U6IEJBUzogU3VwcG9ydCBhbnkgY29udGlndW91cyByYW5nZSAoZWRpdCkKKwlodHRwczov L3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMDIwNworYWZ0ZXIgdGhp cyBwYXRjaCBzb21lIG90aGVyIHVuYWxpZ25lZCB3YXRjaHBvaW50cyB3aWxsIGdldCByZXBvcnRl ZCBhcyBmYWxzZQorcG9zaXRpdmVzLgorCitXaXRoIG5ldyBrZXJuZWxzIGFsbCB0aGUgd2F0Y2hw b2ludHMgc2hvdWxkIHdvcmsgZXhhY3RseS4KKworVGhlcmUgbWF5IGJlIGEgcmVncmVzaW9uIHRo YXQgaXQgbm93IGxlc3MgbWVyZ2VzIHdhdGNocG9pbnRzIHNvIHRoYXQgd2l0aAorbXVsdGlwbGUg b3ZlcmxhcHBpbmcgd2F0Y2hwb2ludHMgaXQgbWF5IHJ1biBvdXQgb2YgdGhlIDQgaGFyZHdhcmUg d2F0Y2hwb2ludAorcmVnaXN0ZXJzLiAgQnV0IGFzIGRpc2N1c3NlZCBpbiB0aGUgb3JpZ2luYWwg dGhyZWFkIEdEQiBuZWVkcyBzb21lIGdlbmVyaWMKK3dhdGNocG9pbnRzIG1lcmdpbmcgZnJhbWV3 b3JrIHRvIGJlIHVzZWQgYnkgYWxsIHRoZSB0YXJnZXQgc3BlY2lmaWMgY29kZS4KK0V2ZW4gY3Vy cmVudCBGU0YgR0RCIGNvZGUgZG9lcyBub3QgbWVyZ2UgaXQgcGVyZmVjdGx5LiAgQWxzbyB3aXRo IHRoZSBtb3JlCitwcmVjaXNlIHdhdGNocG9pbnRzIG9uZSBjYW4gdGVjaG5pY2FsbHkgbWVyZ2Ug dGhlbSBsZXNzLiAgQW5kIEkgZG8gbm90IHRoaW5rCitpdCBtYXR0ZXJzIHRvbyBtdWNoIHRvIGlt cHJvdmUgbWVyZ2VhYmlsaXR5IG9ubHkgZm9yIG9sZCBrZXJuZWxzLgorU3RpbGwgZXZlbiBvbiBu ZXcga2VybmVscyBzb21lIGJldHRlciBtZXJnaW5nIGxvZ2ljIHdvdWxkIG1ha2Ugc2Vuc2UuCisK K1RoZXJlIHJlbWFpbnMgb25lIGlzc3VlOgorCWtlcm5lbC00LjE1LjE0LTMwMC5mYzI3LmFybXY3 aGwKKwlGQUlMOiBnZGIuYmFzZS93YXRjaHBvaW50LXVuYWxpZ25lZC5leHA6IGNvbnRpbnVlCisJ RkFJTDogZ2RiLmJhc2Uvd2F0Y2hwb2ludC11bmFsaWduZWQuZXhwOiBjb250aW51ZQorCShnZGIp IGNvbnRpbnVlCisJQ29udGludWluZy4KKwlVbmV4cGVjdGVkIGVycm9yIHNldHRpbmcgd2F0Y2hw b2ludDogSW52YWxpZCBhcmd1bWVudC4KKwkoZ2RiKSBGQUlMOiBnZGIuYmFzZS93YXRjaHBvaW50 LXVuYWxpZ25lZC5leHA6IGNvbnRpbnVlCitCdXQgdGhhdCBsb29rcyBhcyBhIGtlcm5lbCBidWcg dG8gbWUuCisoMSkgSXQgaXMgbm90IGEgcmVncmVzc2lvbiBieSB0aGlzIHBhdGNoLgorKDIpIEl0 IGlzIHVucmVsYXRlZCB0byB0aGlzIHBhdGNoLgorCitnZGIvQ2hhbmdlTG9nCisyMDE4LTA1LTA0 ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisJICAgIFBlZHJv IEFsdmVzIDxwYWx2ZXNAcmVkaGF0LmNvbT4KKworCVBSIGJyZWFrcG9pbnRzLzE5ODA2IGFuZCBz dXBwb3J0IGZvciBQUiBleHRlcm5hbC8yMDIwNy4KKwkqIE5FV1M6IE1lbnRpb24gQWFyY2g2NCB3 YXRjaHBvaW50IGltcHJvdmVtZW50cy4KKwkqIGFhcmNoNjQtbGludXgtbmF0LmMgKGFhcmNoNjRf bGludXhfc3RvcHBlZF9kYXRhX2FkZHJlc3MpOiBGaXggbWlzc2VkCisJd2F0Y2hwb2ludHMgYW5k IFBSIGV4dGVybmFsLzIwMjA3IHdhdGNocG9pbnRzLgorCSogbmF0L2FhcmNoNjQtbGludXgtaHct cG9pbnQuYworCShrZXJuZWxfc3VwcG9ydHNfYW55X2NvbnRpZ3VvdXNfcmFuZ2UpOiBOZXcuCisJ KGFhcmNoNjRfd2F0Y2hwb2ludF9vZmZzZXQpOiBOZXcuCisJKGFhcmNoNjRfd2F0Y2hwb2ludF9s ZW5ndGgpOiBTdXBwb3J0IFBSIGV4dGVybmFsLzIwMjA3IHdhdGNocG9pbnRzLgorCShhYXJjaDY0 X3BvaW50X2VuY29kZV9jdHJsX3JlZyk6IE5ldyBwYXJhbWV0ZXIgb2Zmc2V0LCBuZXcgYXNzZXJ0 cy4KKwkoYWFyY2g2NF9wb2ludF9pc19hbGlnbmVkKTogU3VwcG9ydCBQUiBleHRlcm5hbC8yMDIw NyB3YXRjaHBvaW50cy4KKwkoYWFyY2g2NF9hbGlnbl93YXRjaHBvaW50KTogTmV3IHBhcmFtZXRl cnMgYWxpZ25lZF9vZmZzZXRfcCBhbmQKKwluZXh0X2FkZHJfb3JpZ19wLiAgU3VwcG9ydCBQUiBl eHRlcm5hbC8yMDIwNyB3YXRjaHBvaW50cy4KKwkoYWFyY2g2NF9kb3duZ3JhZGVfcmVncyk6IE5l dy4KKwkoYWFyY2g2NF9kcl9zdGF0ZV9pbnNlcnRfb25lX3BvaW50KTogTmV3IHBhcmFtZXRlcnMg b2Zmc2V0IGFuZAorCWFkZHJfb3JpZy4KKwkoYWFyY2g2NF9kcl9zdGF0ZV9yZW1vdmVfb25lX3Bv aW50KTogTGlrZXdpc2UuCisJKGFhcmNoNjRfaGFuZGxlX2JyZWFrcG9pbnQpOiBVcGRhdGUgY2Fs bGVyLgorCShhYXJjaDY0X2hhbmRsZV9hbGlnbmVkX3dhdGNocG9pbnQpOiBMaWtld2lzZS4KKwko YWFyY2g2NF9oYW5kbGVfdW5hbGlnbmVkX3dhdGNocG9pbnQpOiBTdXBwb3J0IGFkZHJfb3JpZyBh bmQKKwlhbGlnbmVkX29mZnNldC4KKwkoYWFyY2g2NF9saW51eF9zZXRfZGVidWdfcmVncyk6IFJl bW92ZSBjb25zdCBmcm9tIHN0YXRlLiAgQ2FsbAorCWFhcmNoNjRfZG93bmdyYWRlX3JlZ3MuCisJ KGFhcmNoNjRfc2hvd19kZWJ1Z19yZWdfc3RhdGUpOiBQcmludCBhbHNvIGRyX2FkZHJfb3JpZ193 cC4KKwkqIG5hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmggKERSX0NPTlRST0xfTEVOR1RIKTog UmVuYW1lIHRvIC4uLgorCShEUl9DT05UUk9MX01BU0spOiAuLi4gdGhpcy4KKwkoc3RydWN0IGFh cmNoNjRfZGVidWdfcmVnX3N0YXRlKTogTmV3IGZpZWxkIGRyX2FkZHJfb3JpZ193cC4KKwkodW5z aWduZWQgaW50IGFhcmNoNjRfd2F0Y2hwb2ludF9vZmZzZXQpOiBOZXcgcHJvdG90eXBlLgorCShh YXJjaDY0X2xpbnV4X3NldF9kZWJ1Z19yZWdzKTogUmVtb3ZlIGNvbnN0IGZyb20gc3RhdGUuCisJ KiB1dGlscy5jIChhbGlnbl91cCwgYWxpZ25fZG93bik6IE1vdmUgdG8gLi4uCisJKiBjb21tb24v Y29tbW9uLXV0aWxzLmMgKGFsaWduX3VwLCBhbGlnbl9kb3duKTogLi4uIGhlcmUuCisJKiB1dGls cy5oIChhbGlnbl91cCwgYWxpZ25fZG93bik6IE1vdmUgdG8gLi4uCisJKiBjb21tb24vY29tbW9u LXV0aWxzLmggKGFsaWduX3VwLCBhbGlnbl9kb3duKTogLi4uIGhlcmUuCisKK2dkYi9nZGJzZXJ2 ZXIvQ2hhbmdlTG9nCisyMDE4LTA1LTA0ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+CisJICAgIFBlZHJvIEFsdmVzIDxwYWx2ZXNAcmVkaGF0LmNvbT4KKworCSog bGludXgtYWFyY2g2NC1sb3cuYyAoYWFyY2g2NF9zdG9wcGVkX2RhdGFfYWRkcmVzcyk6CisJTGlr ZXdpc2UuCisKK2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCisyMDE4LTA1LTA0ICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisJICAgIFBlZHJvIEFsdmVzIDxwYWx2 ZXNAcmVkaGF0LmNvbT4KKworCVBSIGJyZWFrcG9pbnRzLzE5ODA2IGFuZCBzdXBwb3J0IGZvciBQ UiBleHRlcm5hbC8yMDIwNy4KKwkqIGdkYi5iYXNlL3dhdGNocG9pbnQtdW5hbGlnbmVkLmM6IE5l dyBmaWxlLgorCSogZ2RiLmJhc2Uvd2F0Y2hwb2ludC11bmFsaWduZWQuZXhwOiBOZXcgZmlsZS4K Ky0tLQorIGdkYi9ORVdTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDEyICsKKyBnZGIvYWFyY2g2NC1saW51eC1uYXQuYyAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAzMCArKy0KKyBnZGIvY29tbW9uL2NvbW1vbi11dGlscy5jICAgICAgICAgICAgICAgICAgICAg ICB8ICAyMCArKworIGdkYi9jb21tb24vY29tbW9uLXV0aWxzLmggICAgICAgICAgICAgICAgICAg ICAgIHwgIDMyICsrKworIGdkYi9nZGJzZXJ2ZXIvbGludXgtYWFyY2g2NC1sb3cuYyAgICAgICAg ICAgICAgIHwgIDMxICsrLQorIGdkYi9uYXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5jICAgICAg ICAgICAgICAgIHwgMjgyICsrKysrKysrKysrKysrKysrLS0tLS0tLQorIGdkYi9uYXQvYWFyY2g2 NC1saW51eC1ody1wb2ludC5oICAgICAgICAgICAgICAgIHwgIDEwICstCisgZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS93YXRjaHBvaW50LXVuYWxpZ25lZC5jICAgfCAgOTYgKysrKysrKysKKyBnZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtdW5hbGlnbmVkLmV4cCB8IDE4NCArKysrKysr KysrKysrKysrCisgZ2RiL3V0aWxzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgMTYgLS0KKyBnZGIvdXRpbHMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAzMiAtLS0KKyAxMSBmaWxlcyBjaGFuZ2VkLCA2MTMgaW5zZXJ0aW9ucygrKSwgMTMy IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5iYXNl L3dhdGNocG9pbnQtdW5hbGlnbmVkLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS93YXRjaHBvaW50LXVuYWxpZ25lZC5leHAKKworZGlmZiAtLWdpdCBhL2dkYi9O RVdTIGIvZ2RiL05FV1MKK2luZGV4IGY0MGViNmMzOTAuLmI3YTNiYzI2MzUgMTAwNjQ0CistLS0g YS9nZGIvTkVXUworKysrIGIvZ2RiL05FV1MKK0BAIC0xLDYgKzEsMTggQEAKKyAJCVdoYXQgaGFz IGNoYW5nZWQgaW4gR0RCPworIAkgICAgIChPcmdhbml6ZWQgcmVsZWFzZSBieSByZWxlYXNlKQor IAorKyoqKiBDaGFuZ2VzIHNpbmNlIEdEQiA4LjEKKysKKysqIEFhcmNoNjQvTGludXggaGFyZHdh cmUgd2F0Y2hwb2ludHMgaW1wcm92ZW1lbnRzCisrCisrICBIYXJkd2FyZSB3YXRjaHBvaW50cyBv biB1bmFsaWduZWQgYWRkcmVzc2VzIGFyZSBub3cgcHJvcGVybHkKKysgIHN1cHBvcnRlZCB3aGVu IHJ1bm5pbmcgTGludXgga2VybmVsIDQuMTAgb3IgaGlnaGVyOiByZWFkIGFuZCBhY2Nlc3MKKysg IHdhdGNocG9pbnRzIGFyZSBubyBsb25nZXIgc3B1cmlvdXNseSBtaXNzZWQsIGFuZCBhbGwgd2F0 Y2hwb2ludHMKKysgIGxlbmd0aHMgYmV0d2VlbiAxIGFuZCA4IGJ5dGVzIGFyZSBzdXBwb3J0ZWQu ICBPbiBvbGRlciBrZXJuZWxzLAorKyAgd2F0Y2hwb2ludHMgc2V0IG9uIHVuYWxpZ25lZCBhZGRy ZXNzZXMgYXJlIG5vIGxvbmdlciBtaXNzZWQsIHdpdGgKKysgIHRoZSB0cmFkZW9mZiB0aGF0IHRo ZXJlIGlzIGEgcG9zc2liaWxpdHkgb2YgZmFsc2UgaGl0cyBiZWluZworKyAgcmVwb3J0ZWQuCisr CisgKioqIENoYW5nZXMgaW4gR0RCIDguMQorIAorICogRm9ydHJhbjogU3VwcG9ydCBwb2ludGVy cyB0byBkeW5hbWljIHR5cGVzLgorZGlmZiAtLWdpdCBhL2dkYi9hYXJjaDY0LWxpbnV4LW5hdC5j IGIvZ2RiL2FhcmNoNjQtbGludXgtbmF0LmMKK2luZGV4IGYwOGJmMDM5ZTQuLmFhM2I5YTc4MDAg MTAwNjQ0CistLS0gYS9nZGIvYWFyY2g2NC1saW51eC1uYXQuYworKysrIGIvZ2RiL2FhcmNoNjQt bGludXgtbmF0LmMKK0BAIC03MzUsMTcgKzczNSwzOSBAQCBhYXJjaDY0X2xpbnV4X3N0b3BwZWRf ZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZ2V0LAorICAgc3RhdGUgPSBhYXJj aDY0X2dldF9kZWJ1Z19yZWdfc3RhdGUgKHB0aWRfZ2V0X3BpZCAoaW5mZXJpb3JfcHRpZCkpOwor ICAgZm9yIChpID0gYWFyY2g2NF9udW1fd3BfcmVncyAtIDE7IGkgPj0gMDsgLS1pKQorICAgICB7 CisrICAgICAgY29uc3QgdW5zaWduZWQgaW50IG9mZnNldAorKwk9IGFhcmNoNjRfd2F0Y2hwb2lu dF9vZmZzZXQgKHN0YXRlLT5kcl9jdHJsX3dwW2ldKTsKKyAgICAgICBjb25zdCB1bnNpZ25lZCBp bnQgbGVuID0gYWFyY2g2NF93YXRjaHBvaW50X2xlbmd0aCAoc3RhdGUtPmRyX2N0cmxfd3BbaV0p OworICAgICAgIGNvbnN0IENPUkVfQUREUiBhZGRyX3RyYXAgPSAoQ09SRV9BRERSKSBzaWdpbmZv LnNpX2FkZHI7CistICAgICAgY29uc3QgQ09SRV9BRERSIGFkZHJfd2F0Y2ggPSBzdGF0ZS0+ZHJf YWRkcl93cFtpXTsKKysgICAgICBjb25zdCBDT1JFX0FERFIgYWRkcl93YXRjaCA9IHN0YXRlLT5k cl9hZGRyX3dwW2ldICsgb2Zmc2V0OworKyAgICAgIGNvbnN0IENPUkVfQUREUiBhZGRyX3dhdGNo X2FsaWduZWQgPSBhbGlnbl9kb3duIChzdGF0ZS0+ZHJfYWRkcl93cFtpXSwgOCk7CisrICAgICAg Y29uc3QgQ09SRV9BRERSIGFkZHJfb3JpZyA9IHN0YXRlLT5kcl9hZGRyX29yaWdfd3BbaV07Cisg CisgICAgICAgaWYgKHN0YXRlLT5kcl9yZWZfY291bnRfd3BbaV0KKyAJICAmJiBEUl9DT05UUk9M X0VOQUJMRUQgKHN0YXRlLT5kcl9jdHJsX3dwW2ldKQorLQkgICYmIGFkZHJfdHJhcCA+PSBhZGRy X3dhdGNoCisrCSAgJiYgYWRkcl90cmFwID49IGFkZHJfd2F0Y2hfYWxpZ25lZAorIAkgICYmIGFk ZHJfdHJhcCA8IGFkZHJfd2F0Y2ggKyBsZW4pCisgCXsKKy0JICAqYWRkcl9wID0gYWRkcl90cmFw OworLQkgIHJldHVybiAxOworKwkgIC8qIEFERFJfVFJBUCByZXBvcnRzIHRoZSBmaXJzdCBhZGRy ZXNzIG9mIHRoZSBtZW1vcnkgcmFuZ2UKKysJICAgICBhY2Nlc3NlZCBieSB0aGUgQ1BVLCByZWdh cmRsZXNzIG9mIHdoYXQgd2FzIHRoZSBtZW1vcnkKKysJICAgICByYW5nZSB3YXRjaGVkLiAgVGh1 cywgYSBsYXJnZSBDUFUgYWNjZXNzIHRoYXQgc3RyYWRkbGVzCisrCSAgICAgdGhlIEFERFJfV0FU Q0guLkFERFJfV0FUQ0grTEVOIHJhbmdlIG1heSByZXN1bHQgaW4gYW4KKysJICAgICBBRERSX1RS QVAgdGhhdCBpcyBsb3dlciB0aGFuIHRoZQorKwkgICAgIEFERFJfV0FUQ0guLkFERFJfV0FUQ0gr TEVOIHJhbmdlLiAgRS5nLjoKKysKKysJICAgICBhZGRyOiB8ICAgNCAgIHwgICA1ICAgfCAgIDYg ICB8ICAgNyAgIHwgICA4ICAgfAorKwkJCQkgICB8LS0tLSByYW5nZSB3YXRjaGVkIC0tLS18Cisr CQkgICB8LS0tLS0tLS0tLS0gcmFuZ2UgYWNjZXNzZWQgLS0tLS0tLS0tLS0tfAorKworKwkgICAg IEluIHRoaXMgY2FzZSwgQUREUl9UUkFQIHdpbGwgYmUgNC4KKysKKysJICAgICBUbyBtYXRjaCBh IHdhdGNocG9pbnQga25vd24gdG8gR0RCIGNvcmUsIHdlIG11c3QgbmV2ZXIKKysJICAgICByZXBv cnQgKkFERFJfUCBvdXRzaWRlIG9mIGFueSBBRERSX1dBVENILi5BRERSX1dBVENIK0xFTgorKwkg ICAgIHJhbmdlLiAgQUREUl9XQVRDSCA8PSBBRERSX1RSQVAgPCBBRERSX09SSUcgaXMgYSBmYWxz ZQorKwkgICAgIHBvc2l0aXZlIG9uIGtlcm5lbHMgb2xkZXIgdGhhbiA0LjEwLiAgU2VlIFBSCisr CSAgICAgZXh0ZXJuYWwvMjAyMDcuICAqLworKwkgICphZGRyX3AgPSBhZGRyX29yaWc7CisrCSAg cmV0dXJuIHRydWU7CisgCX0KKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL2dkYi9jb21tb24vY29t bW9uLXV0aWxzLmMgYi9nZGIvY29tbW9uL2NvbW1vbi11dGlscy5jCitpbmRleCBhZTJkZDlkYjJi Li4yNGIzOTM2ZjNkIDEwMDY0NAorLS0tIGEvZ2RiL2NvbW1vbi9jb21tb24tdXRpbHMuYworKysr IGIvZ2RiL2NvbW1vbi9jb21tb24tdXRpbHMuYworQEAgLTQwOCwzICs0MDgsMjMgQEAgc3RyaW5n aWZ5X2FyZ3YgKGNvbnN0IHN0ZDo6dmVjdG9yPGNoYXIgKj4gJmFyZ3MpCisgCisgICByZXR1cm4g cmV0OworIH0KKysKKysvKiBTZWUgY29tbW9uL2NvbW1vbi11dGlscy5oLiAgKi8KKysKKytVTE9O R0VTVAorK2FsaWduX3VwIChVTE9OR0VTVCB2LCBpbnQgbikKKyt7CisrICAvKiBDaGVjayB0aGF0 IE4gaXMgcmVhbGx5IGEgcG93ZXIgb2YgdHdvLiAgKi8KKysgIGdkYl9hc3NlcnQgKG4gJiYgKG4g JiAobi0xKSkgPT0gMCk7CisrICByZXR1cm4gKHYgKyBuIC0gMSkgJiAtbjsKKyt9CisrCisrLyog U2VlIGNvbW1vbi9jb21tb24tdXRpbHMuaC4gICovCisrCisrVUxPTkdFU1QKKythbGlnbl9kb3du IChVTE9OR0VTVCB2LCBpbnQgbikKKyt7CisrICAvKiBDaGVjayB0aGF0IE4gaXMgcmVhbGx5IGEg cG93ZXIgb2YgdHdvLiAgKi8KKysgIGdkYl9hc3NlcnQgKG4gJiYgKG4gJiAobi0xKSkgPT0gMCk7 CisrICByZXR1cm4gKHYgJiAtbik7CisrfQorZGlmZiAtLWdpdCBhL2dkYi9jb21tb24vY29tbW9u LXV0aWxzLmggYi9nZGIvY29tbW9uL2NvbW1vbi11dGlscy5oCitpbmRleCAyMzIwMzE4ZGU3Li5h OTYxNTE0ZmQ2IDEwMDY0NAorLS0tIGEvZ2RiL2NvbW1vbi9jb21tb24tdXRpbHMuaAorKysrIGIv Z2RiL2NvbW1vbi9jb21tb24tdXRpbHMuaAorQEAgLTE0Niw0ICsxNDYsMzYgQEAgaW5faW5jbHVz aXZlX3JhbmdlIChUIHZhbHVlLCBUIGxvdywgVCBoaWdoKQorICAgcmV0dXJuIHZhbHVlID49IGxv dyAmJiB2YWx1ZSA8PSBoaWdoOworIH0KKyAKKysvKiBFbnN1cmUgdGhhdCBWIGlzIGFsaWduZWQg dG8gYW4gTiBieXRlIGJvdW5kYXJ5IChCJ3MgYXNzdW1lZCB0byBiZSBhCisrICAgcG93ZXIgb2Yg MikuICBSb3VuZCB1cC9kb3duIHdoZW4gbmVjZXNzYXJ5LiAgRXhhbXBsZXMgb2YgY29ycmVjdAor KyAgIHVzZSBpbmNsdWRlOgorKworKyAgICBhZGRyID0gYWxpZ25fdXAgKGFkZHIsIDgpOyAtLSBW QUxVRSBuZWVkcyA4IGJ5dGUgYWxpZ25tZW50CisrICAgIHdyaXRlX21lbW9yeSAoYWRkciwgdmFs dWUsIGxlbik7CisrICAgIGFkZHIgKz0gbGVuOworKworKyAgIGFuZDoKKysKKysgICAgc3AgPSBh bGlnbl9kb3duIChzcCAtIGxlbiwgMTYpOyAtLSBLZWVwIFNQIDE2IGJ5dGUgYWxpZ25lZAorKyAg ICB3cml0ZV9tZW1vcnkgKHNwLCB2YWx1ZSwgbGVuKTsKKysKKysgICBOb3RlIHRoYXQgdXNlcyBz dWNoIGFzOgorKworKyAgICB3cml0ZV9tZW1vcnkgKGFkZHIsIHZhbHVlLCBsZW4pOworKyAgICBh ZGRyICs9IGFsaWduX3VwIChsZW4sIDgpOworKworKyAgIGFuZDoKKysKKysgICAgc3AgLT0gYWxp Z25fdXAgKGxlbiwgOCk7CisrICAgIHdyaXRlX21lbW9yeSAoc3AsIHZhbHVlLCBsZW4pOworKwor KyAgIGFyZSB0eXBpY2FsbHkgbm90IGNvcnJlY3QgYXMgdGhleSBkb24ndCBlbnN1cmUgdGhhdCB0 aGUgYWRkcmVzcyAoU1AKKysgICBvciBBRERSKSBpcyBjb3JyZWN0bHkgYWxpZ25lZCAocmVseWlu ZyBvbiBwcmV2aW91cyBhbGlnbm1lbnQgdG8KKysgICBrZWVwIHRoaW5ncyByaWdodCkuICBUaGlz IGlzIGFsc28gd2h5IHRoZSBtZXRob2RzIGFyZSBjYWxsZWQKKysgICAiYWxpZ25fLi4uIiBpbnN0 ZWFkIG9mICJyb3VuZF8uLi4iIGFzIHRoZSBsYXR0ZXIgcmVhZHMgYmV0dGVyIHdpdGgKKysgICB0 aGlzIGluY29ycmVjdCBjb2Rpbmcgc3R5bGUuICAqLworKworK2V4dGVybiBVTE9OR0VTVCBhbGln bl91cCAoVUxPTkdFU1QgdiwgaW50IG4pOworK2V4dGVybiBVTE9OR0VTVCBhbGlnbl9kb3duIChV TE9OR0VTVCB2LCBpbnQgbik7CisrCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZl ci9saW51eC1hYXJjaDY0LWxvdy5jIGIvZ2RiL2dkYnNlcnZlci9saW51eC1hYXJjaDY0LWxvdy5j CitpbmRleCBlY2NhYzRkYTEzLi43ZWEyNGMyMzYzIDEwMDY0NAorLS0tIGEvZ2RiL2dkYnNlcnZl ci9saW51eC1hYXJjaDY0LWxvdy5jCisrKysgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFhcmNoNjQt bG93LmMKK0BAIC0zNjAsMTQgKzM2MCwzOSBAQCBhYXJjaDY0X3N0b3BwZWRfZGF0YV9hZGRyZXNz ICh2b2lkKQorICAgc3RhdGUgPSBhYXJjaDY0X2dldF9kZWJ1Z19yZWdfc3RhdGUgKHBpZF9vZiAo Y3VycmVudF90aHJlYWQpKTsKKyAgIGZvciAoaSA9IGFhcmNoNjRfbnVtX3dwX3JlZ3MgLSAxOyBp ID49IDA7IC0taSkKKyAgICAgeworKyAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBvZmZzZXQKKysJ PSBhYXJjaDY0X3dhdGNocG9pbnRfb2Zmc2V0IChzdGF0ZS0+ZHJfY3RybF93cFtpXSk7CisgICAg ICAgY29uc3QgdW5zaWduZWQgaW50IGxlbiA9IGFhcmNoNjRfd2F0Y2hwb2ludF9sZW5ndGggKHN0 YXRlLT5kcl9jdHJsX3dwW2ldKTsKKyAgICAgICBjb25zdCBDT1JFX0FERFIgYWRkcl90cmFwID0g KENPUkVfQUREUikgc2lnaW5mby5zaV9hZGRyOworLSAgICAgIGNvbnN0IENPUkVfQUREUiBhZGRy X3dhdGNoID0gc3RhdGUtPmRyX2FkZHJfd3BbaV07CisrICAgICAgY29uc3QgQ09SRV9BRERSIGFk ZHJfd2F0Y2ggPSBzdGF0ZS0+ZHJfYWRkcl93cFtpXSArIG9mZnNldDsKKysgICAgICBjb25zdCBD T1JFX0FERFIgYWRkcl93YXRjaF9hbGlnbmVkID0gYWxpZ25fZG93biAoc3RhdGUtPmRyX2FkZHJf d3BbaV0sIDgpOworKyAgICAgIGNvbnN0IENPUkVfQUREUiBhZGRyX29yaWcgPSBzdGF0ZS0+ZHJf YWRkcl9vcmlnX3dwW2ldOworKworICAgICAgIGlmIChzdGF0ZS0+ZHJfcmVmX2NvdW50X3dwW2ld CisgCSAgJiYgRFJfQ09OVFJPTF9FTkFCTEVEIChzdGF0ZS0+ZHJfY3RybF93cFtpXSkKKy0JICAm JiBhZGRyX3RyYXAgPj0gYWRkcl93YXRjaAorKwkgICYmIGFkZHJfdHJhcCA+PSBhZGRyX3dhdGNo X2FsaWduZWQKKyAJICAmJiBhZGRyX3RyYXAgPCBhZGRyX3dhdGNoICsgbGVuKQorLQlyZXR1cm4g YWRkcl90cmFwOworKwl7CisrCSAgLyogQUREUl9UUkFQIHJlcG9ydHMgdGhlIGZpcnN0IGFkZHJl c3Mgb2YgdGhlIG1lbW9yeSByYW5nZQorKwkgICAgIGFjY2Vzc2VkIGJ5IHRoZSBDUFUsIHJlZ2Fy ZGxlc3Mgb2Ygd2hhdCB3YXMgdGhlIG1lbW9yeQorKwkgICAgIHJhbmdlIHdhdGNoZWQuICBUaHVz LCBhIGxhcmdlIENQVSBhY2Nlc3MgdGhhdCBzdHJhZGRsZXMKKysJICAgICB0aGUgQUREUl9XQVRD SC4uQUREUl9XQVRDSCtMRU4gcmFuZ2UgbWF5IHJlc3VsdCBpbiBhbgorKwkgICAgIEFERFJfVFJB UCB0aGF0IGlzIGxvd2VyIHRoYW4gdGhlCisrCSAgICAgQUREUl9XQVRDSC4uQUREUl9XQVRDSCtM RU4gcmFuZ2UuICBFLmcuOgorKworKwkgICAgIGFkZHI6IHwgICA0ICAgfCAgIDUgICB8ICAgNiAg IHwgICA3ICAgfCAgIDggICB8CisrCQkJCSAgIHwtLS0tIHJhbmdlIHdhdGNoZWQgLS0tLXwKKysJ CSAgIHwtLS0tLS0tLS0tLSByYW5nZSBhY2Nlc3NlZCAtLS0tLS0tLS0tLS18CisrCisrCSAgICAg SW4gdGhpcyBjYXNlLCBBRERSX1RSQVAgd2lsbCBiZSA0LgorKworKwkgICAgIFRvIG1hdGNoIGEg d2F0Y2hwb2ludCBrbm93biB0byBHREIgY29yZSwgd2UgbXVzdCBuZXZlcgorKwkgICAgIHJlcG9y dCAqQUREUl9QIG91dHNpZGUgb2YgYW55IEFERFJfV0FUQ0guLkFERFJfV0FUQ0grTEVOCisrCSAg ICAgcmFuZ2UuICBBRERSX1dBVENIIDw9IEFERFJfVFJBUCA8IEFERFJfT1JJRyBpcyBhIGZhbHNl CisrCSAgICAgcG9zaXRpdmUgb24ga2VybmVscyBvbGRlciB0aGFuIDQuMTAuICBTZWUgUFIKKysJ ICAgICBleHRlcm5hbC8yMDIwNy4gICovCisrCSAgcmV0dXJuIGFkZHJfb3JpZzsKKysJfQorICAg ICB9CisgCisgICByZXR1cm4gKENPUkVfQUREUikgMDsKK2RpZmYgLS1naXQgYS9nZGIvbmF0L2Fh cmNoNjQtbGludXgtaHctcG9pbnQuYyBiL2dkYi9uYXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5j CitpbmRleCBlOWViYzVmYmE4Li4xMGNiZjNlNGRmIDEwMDY0NAorLS0tIGEvZ2RiL25hdC9hYXJj aDY0LWxpbnV4LWh3LXBvaW50LmMKKysrKyBiL2dkYi9uYXQvYWFyY2g2NC1saW51eC1ody1wb2lu dC5jCitAQCAtMzQsMjkgKzM0LDUyIEBACisgaW50IGFhcmNoNjRfbnVtX2JwX3JlZ3M7CisgaW50 IGFhcmNoNjRfbnVtX3dwX3JlZ3M7CisgCisrLyogVHJ1ZSBpZiB0aGlzIGtlcm5lbCBkb2VzIG5v dCBoYXZlIHRoZSBidWcgZGVzY3JpYmVkIGJ5IFBSCisrICAgZXh0ZXJuYWwvMjAyMDcgKExpbnV4 ID49IDQuMTApLiAgQSBmaXhlZCBrZXJuZWwgc3VwcG9ydHMgYW55CisrICAgY29udGlndW91cyBy YW5nZSBvZiBiaXRzIGluIDgtYml0IGJ5dGUgRFJfQ09OVFJPTF9NQVNLLiAgQSBidWdneQorKyAg IGtlcm5lbCBzdXBwb3J0cyBvbmx5IDB4MDEsIDB4MDMsIDB4MGYgYW5kIDB4ZmYuICBXZSBzdGFy dCBieQorKyAgIGFzc3VtaW5nIHRoZSBidWcgaXMgZml4ZWQsIGFuZCB0aGVuIGRldGVjdCB0aGUg YnVnIGF0CisrICAgUFRSQUNFX1NFVFJFR1NFVCB0aW1lLiAgKi8KKytzdGF0aWMgYm9vbCBrZXJu ZWxfc3VwcG9ydHNfYW55X2NvbnRpZ3VvdXNfcmFuZ2UgPSB0cnVlOworKworKy8qIFJldHVybiBz dGFydGluZyBieXRlIDAuLjcgaW5jbC4gb2YgYSB3YXRjaHBvaW50IGVuY29kZWQgYnkgQ1RSTC4g ICovCisrCisrdW5zaWduZWQgaW50CisrYWFyY2g2NF93YXRjaHBvaW50X29mZnNldCAodW5zaWdu ZWQgaW50IGN0cmwpCisreworKyAgdWludDhfdCBtYXNrID0gRFJfQ09OVFJPTF9NQVNLIChjdHJs KTsKKysgIHVuc2lnbmVkIHJldHZhbDsKKysKKysgIC8qIFNoaWZ0IG91dCBib3R0b20gemVyb3Mu ICAqLworKyAgZm9yIChyZXR2YWwgPSAwOyBtYXNrICYmIChtYXNrICYgMSkgPT0gMDsgKytyZXR2 YWwpCisrICAgIG1hc2sgPj49IDE7CisrCisrICByZXR1cm4gcmV0dmFsOworK30KKysKKyAvKiBV dGlsaXR5IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbGVuZ3RoIGluIGJ5dGVzIG9mIGEgd2F0 Y2hwb2ludAorICAgIGFjY29yZGluZyB0byB0aGUgY29udGVudCBvZiBhIGhhcmR3YXJlIGRlYnVn IGNvbnRyb2wgcmVnaXN0ZXIgQ1RSTC4KKy0gICBOb3RlIHRoYXQgdGhlIGtlcm5lbCBjdXJyZW50 bHkgb25seSBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIEJ5dGUKKy0gICBBZGRyZXNzIFNlbGVjdCAo QkFTKSB2YWx1ZXM6IDB4MSwgMHgzLCAweGYgYW5kIDB4ZmYsIHdoaWNoIG1lYW5zCistICAgdGhh dCBmb3IgYSBoYXJkd2FyZSB3YXRjaHBvaW50LCBpdHMgdmFsaWQgbGVuZ3RoIGNhbiBvbmx5IGJl IDEKKy0gICBieXRlLCAyIGJ5dGVzLCA0IGJ5dGVzIG9yIDggYnl0ZXMuICAqLworKyAgIEFueSBj b250aWd1b3VzIHJhbmdlIG9mIGJ5dGVzIGluIENUUkwgaXMgc3VwcG9ydGVkLiAgVGhlIHJldHVy bmVkCisrICAgdmFsdWUgY2FuIGJlIGJldHdlZW4gMC4uOCAoaW5jbHVzaXZlKS4gICovCisgCisg dW5zaWduZWQgaW50CisgYWFyY2g2NF93YXRjaHBvaW50X2xlbmd0aCAodW5zaWduZWQgaW50IGN0 cmwpCisgeworLSAgc3dpdGNoIChEUl9DT05UUk9MX0xFTkdUSCAoY3RybCkpCistICAgIHsKKy0g ICAgY2FzZSAweDAxOgorLSAgICAgIHJldHVybiAxOworLSAgICBjYXNlIDB4MDM6CistICAgICAg cmV0dXJuIDI7CistICAgIGNhc2UgMHgwZjoKKy0gICAgICByZXR1cm4gNDsKKy0gICAgY2FzZSAw eGZmOgorLSAgICAgIHJldHVybiA4OworLSAgICBkZWZhdWx0OgorLSAgICAgIHJldHVybiAwOwor LSAgICB9CisrICB1aW50OF90IG1hc2sgPSBEUl9DT05UUk9MX01BU0sgKGN0cmwpOworKyAgdW5z aWduZWQgcmV0dmFsOworKworKyAgLyogU2hpZnQgb3V0IGJvdHRvbSB6ZXJvcy4gICovCisrICBt YXNrID4+PSBhYXJjaDY0X3dhdGNocG9pbnRfb2Zmc2V0IChjdHJsKTsKKysKKysgIC8qIENvdW50 IGJvdHRvbSBvbmVzLiAgKi8KKysgIGZvciAocmV0dmFsID0gMDsgKG1hc2sgJiAxKSAhPSAwOyAr K3JldHZhbCkKKysgICAgbWFzayA+Pj0gMTsKKysKKysgIGlmIChtYXNrICE9IDApCisrICAgIGVy cm9yIChfKCJVbmV4cGVjdGVkIGhhcmR3YXJlIHdhdGNocG9pbnQgbGVuZ3RoIHJlZ2lzdGVyIHZh bHVlIDB4JXgiKSwKKysJICAgRFJfQ09OVFJPTF9NQVNLIChjdHJsKSk7CisrCisrICByZXR1cm4g cmV0dmFsOworIH0KKyAKKyAvKiBHaXZlbiB0aGUgaGFyZHdhcmUgYnJlYWtwb2ludCBvciB3YXRj aHBvaW50IHR5cGUgVFlQRSBhbmQgaXRzCitAQCAtNjQsMTAgKzg3LDEzIEBAIGFhcmNoNjRfd2F0 Y2hwb2ludF9sZW5ndGggKHVuc2lnbmVkIGludCBjdHJsKQorICAgIGJyZWFrcG9pbnQvd2F0Y2hw b2ludCBjb250cm9sIHJlZ2lzdGVyLiAgKi8KKyAKKyBzdGF0aWMgdW5zaWduZWQgaW50CistYWFy Y2g2NF9wb2ludF9lbmNvZGVfY3RybF9yZWcgKGVudW0gdGFyZ2V0X2h3X2JwX3R5cGUgdHlwZSwg aW50IGxlbikKKythYXJjaDY0X3BvaW50X2VuY29kZV9jdHJsX3JlZyAoZW51bSB0YXJnZXRfaHdf YnBfdHlwZSB0eXBlLCBpbnQgb2Zmc2V0LCBpbnQgbGVuKQorIHsKKyAgIHVuc2lnbmVkIGludCBj dHJsLCB0dHlwZTsKKyAKKysgIGdkYl9hc3NlcnQgKG9mZnNldCA9PSAwIHx8IGtlcm5lbF9zdXBw b3J0c19hbnlfY29udGlndW91c19yYW5nZSk7CisrICBnZGJfYXNzZXJ0IChvZmZzZXQgKyBsZW4g PD0gQUFSQ0g2NF9IV1BfTUFYX0xFTl9QRVJfUkVHKTsKKysKKyAgIC8qIHR5cGUgKi8KKyAgIHN3 aXRjaCAodHlwZSkKKyAgICAgeworQEAgLTg5LDggKzExNSw4IEBAIGFhcmNoNjRfcG9pbnRfZW5j b2RlX2N0cmxfcmVnIChlbnVtIHRhcmdldF9od19icF90eXBlIHR5cGUsIGludCBsZW4pCisgCisg ICBjdHJsID0gdHR5cGUgPDwgMzsKKyAKKy0gIC8qIGxlbmd0aCBiaXRtYXNrICovCistICBjdHJs IHw9ICgoMSA8PCBsZW4pIC0gMSkgPDwgNTsKKysgIC8qIG9mZnNldCBhbmQgbGVuZ3RoIGJpdG1h c2sgKi8KKysgIGN0cmwgfD0gKCgxIDw8IGxlbikgLSAxKSA8PCAoNSArIG9mZnNldCk7CisgICAv KiBlbmFibGVkIGF0IGVsMCAqLworICAgY3RybCB8PSAoMiA8PCAxKSB8IDE7CisgCitAQCAtMTM0 LDU5ICsxNjAsNjUgQEAgYWFyY2g2NF9wb2ludF9pc19hbGlnbmVkIChpbnQgaXNfd2F0Y2hwb2lu dCwgQ09SRV9BRERSIGFkZHIsIExPTkdFU1QgbGVuKQorICAgaWYgKGFkZHIgJiAoYWxpZ25tZW50 IC0gMSkpCisgICAgIHJldHVybiAwOworIAorLSAgaWYgKGxlbiAhPSA4ICYmIGxlbiAhPSA0ICYm IGxlbiAhPSAyICYmIGxlbiAhPSAxKQorKyAgaWYgKCgha2VybmVsX3N1cHBvcnRzX2FueV9jb250 aWd1b3VzX3JhbmdlCisrICAgICAgICYmIGxlbiAhPSA4ICYmIGxlbiAhPSA0ICYmIGxlbiAhPSAy ICYmIGxlbiAhPSAxKQorKyAgICAgIHx8IChrZXJuZWxfc3VwcG9ydHNfYW55X2NvbnRpZ3VvdXNf cmFuZ2UKKysJICAmJiAobGVuIDwgMSB8fCBsZW4gPiA4KSkpCisgICAgIHJldHVybiAwOworIAor ICAgcmV0dXJuIDE7CisgfQorIAorIC8qIEdpdmVuIHRoZSAocG90ZW50aWFsbHkgdW5hbGlnbmVk KSB3YXRjaHBvaW50IGFkZHJlc3MgaW4gQUREUiBhbmQKKy0gICBsZW5ndGggaW4gTEVOLCByZXR1 cm4gdGhlIGFsaWduZWQgYWRkcmVzcyBhbmQgYWxpZ25lZCBsZW5ndGggaW4KKy0gICAqQUxJR05F RF9BRERSX1AgYW5kICpBTElHTkVEX0xFTl9QLCByZXNwZWN0aXZlbHkuICBUaGUgcmV0dXJuZWQK Ky0gICBhbGlnbmVkIGFkZHJlc3MgYW5kIGxlbmd0aCB3aWxsIGJlIHZhbGlkIHZhbHVlcyB0byB3 cml0ZSB0byB0aGUKKy0gICBoYXJkd2FyZSB3YXRjaHBvaW50IHZhbHVlIGFuZCBjb250cm9sIHJl Z2lzdGVycy4KKysgICBsZW5ndGggaW4gTEVOLCByZXR1cm4gdGhlIGFsaWduZWQgYWRkcmVzcywg b2Zmc2V0IGZyb20gdGhhdCBiYXNlCisrICAgYWRkcmVzcywgYW5kIGFsaWduZWQgbGVuZ3RoIGlu ICpBTElHTkVEX0FERFJfUCwgKkFMSUdORURfT0ZGU0VUX1AKKysgICBhbmQgKkFMSUdORURfTEVO X1AsIHJlc3BlY3RpdmVseS4gIFRoZSByZXR1cm5lZCB2YWx1ZXMgd2lsbCBiZQorKyAgIHZhbGlk IHZhbHVlcyB0byB3cml0ZSB0byB0aGUgaGFyZHdhcmUgd2F0Y2hwb2ludCB2YWx1ZSBhbmQgY29u dHJvbAorKyAgIHJlZ2lzdGVycy4KKyAKKyAgICBUaGUgZ2l2ZW4gd2F0Y2hwb2ludCBtYXkgZ2V0 IHRydW5jYXRlZCBpZiBtb3JlIHRoYW4gb25lIGhhcmR3YXJlCisgICAgcmVnaXN0ZXIgaXMgbmVl ZGVkIHRvIGNvdmVyIHRoZSB3YXRjaGVkIHJlZ2lvbi4gICpORVhUX0FERFJfUAorICAgIGFuZCAq TkVYVF9MRU5fUCwgaWYgbm9uLU5VTEwsIHdpbGwgcmV0dXJuIHRoZSBhZGRyZXNzIGFuZCBsZW5n dGgKKyAgICBvZiB0aGUgcmVtYWluaW5nIHBhcnQgb2YgdGhlIHdhdGNocG9pbnQgKHdoaWNoIGNh biBiZSBwcm9jZXNzZWQKKy0gICBieSBjYWxsaW5nIHRoaXMgcm91dGluZSBhZ2FpbiB0byBnZW5l cmF0ZSBhbm90aGVyIGFsaWduZWQgYWRkcmVzcworLSAgIGFuZCBsZW5ndGggcGFpci4KKysgICBi eSBjYWxsaW5nIHRoaXMgcm91dGluZSBhZ2FpbiB0byBnZW5lcmF0ZSBhbm90aGVyIGFsaWduZWQg YWRkcmVzcywKKysgICBvZmZzZXQgYW5kIGxlbmd0aCB0dXBsZS4KKyAKKyAgICBFc3NlbnRpYWxs eSwgdW5hbGlnbmVkIHdhdGNocG9pbnQgaXMgYWNoaWV2ZWQgYnkgbWluaW1hbGx5CisgICAgZW5s YXJnaW5nIHRoZSB3YXRjaGVkIGFyZWEgdG8gbWVldCB0aGUgYWxpZ25tZW50IHJlcXVpcmVtZW50 LCBhbmQKKyAgICBpZiBuZWNlc3NhcnksIHNwbGl0dGluZyB0aGUgd2F0Y2hwb2ludCBvdmVyIHNl dmVyYWwgaGFyZHdhcmUKKy0gICB3YXRjaHBvaW50IHJlZ2lzdGVycy4gIFRoZSB0cmFkZS1vZmYg aXMgdGhhdCB0aGVyZSB3aWxsIGJlCistICAgZmFsc2UtcG9zaXRpdmUgaGl0cyBmb3IgdGhlIHJl YWQtdHlwZSBvciB0aGUgYWNjZXNzLXR5cGUgaGFyZHdhcmUKKy0gICB3YXRjaHBvaW50czsgZm9y IHRoZSB3cml0ZSB0eXBlLCB3aGljaCBpcyBtb3JlIGNvbW1vbmx5IHVzZWQsIHRoZXJlCistICAg d2lsbCBiZSBubyBzdWNoIGlzc3VlcywgYXMgdGhlIGhpZ2hlci1sZXZlbCBicmVha3BvaW50IG1h bmFnZW1lbnQKKy0gICBpbiBnZGIgYWx3YXlzIGV4YW1pbmVzIHRoZSBleGFjdCB3YXRjaGVkIHJl Z2lvbiBmb3IgYW55IGNvbnRlbnQKKy0gICBjaGFuZ2UsIGFuZCB0cmFuc3BhcmVudGx5IHJlc3Vt ZXMgYSB0aHJlYWQgZnJvbSBhIHdhdGNocG9pbnQgdHJhcAorLSAgIGlmIHRoZXJlIGlzIG5vIGNo YW5nZSB0byB0aGUgd2F0Y2hlZCByZWdpb24uCisrICAgd2F0Y2hwb2ludCByZWdpc3RlcnMuCisr CisrICAgT24ga2VybmVscyB0aGF0IHByZWRhdGUgdGhlIHN1cHBvcnQgZm9yIEJ5dGUgQWRkcmVz cyBTZWxlY3QgKEJBUykKKysgICBpbiB0aGUgaGFyZHdhcmUgd2F0Y2hwb2ludCBjb250cm9sIHJl Z2lzdGVyLCB0aGUgb2Zmc2V0IGZyb20gdGhlCisrICAgYmFzZSBhZGRyZXNzIGlzIGFsd2F5cyB6 ZXJvLCBhbmQgc28gaW4gdGhhdCBjYXNlIHRoZSB0cmFkZS1vZmYgaXMKKysgICB0aGF0IHRoZXJl IHdpbGwgYmUgZmFsc2UtcG9zaXRpdmUgaGl0cyBmb3IgdGhlIHJlYWQtdHlwZSBvciB0aGUKKysg ICBhY2Nlc3MtdHlwZSBoYXJkd2FyZSB3YXRjaHBvaW50czsgZm9yIHRoZSB3cml0ZSB0eXBlLCB3 aGljaCBpcyBtb3JlCisrICAgY29tbW9ubHkgdXNlZCwgdGhlcmUgd2lsbCBiZSBubyBzdWNoIGlz c3VlcywgYXMgdGhlIGhpZ2hlci1sZXZlbAorKyAgIGJyZWFrcG9pbnQgbWFuYWdlbWVudCBpbiBn ZGIgYWx3YXlzIGV4YW1pbmVzIHRoZSBleGFjdCB3YXRjaGVkCisrICAgcmVnaW9uIGZvciBhbnkg Y29udGVudCBjaGFuZ2UsIGFuZCB0cmFuc3BhcmVudGx5IHJlc3VtZXMgYSB0aHJlYWQKKysgICBm cm9tIGEgd2F0Y2hwb2ludCB0cmFwIGlmIHRoZXJlIGlzIG5vIGNoYW5nZSB0byB0aGUgd2F0Y2hl ZCByZWdpb24uCisgCisgICAgQW5vdGhlciBsaW1pdGF0aW9uIGlzIHRoYXQgYmVjYXVzZSB0aGUg d2F0Y2hlZCByZWdpb24gaXMgZW5sYXJnZWQsCistICAgdGhlIHdhdGNocG9pbnQgZmF1bHQgYWRk cmVzcyByZXR1cm5lZCBieQorKyAgIHRoZSB3YXRjaHBvaW50IGZhdWx0IGFkZHJlc3MgZGlzY292 ZXJlZCBieQorICAgIGFhcmNoNjRfc3RvcHBlZF9kYXRhX2FkZHJlc3MgbWF5IGJlIG91dHNpZGUg b2YgdGhlIG9yaWdpbmFsIHdhdGNoZWQKKyAgICByZWdpb24sIGVzcGVjaWFsbHkgd2hlbiB0aGUg dHJpZ2dlcmluZyBpbnN0cnVjdGlvbiBpcyBhY2Nlc3NpbmcgYQorICAgIGxhcmdlciByZWdpb24u ICBXaGVuIHRoZSBmYXVsdCBhZGRyZXNzIGlzIG5vdCB3aXRoaW4gYW55IGtub3duCisgICAgcmFu Z2UsIHdhdGNocG9pbnRzX3RyaWdnZXJlZCBpbiBnZGIgd2lsbCBnZXQgY29uZnVzZWQsIGFzIHRo ZQorICAgIGhpZ2hlci1sZXZlbCB3YXRjaHBvaW50IG1hbmFnZW1lbnQgaXMgb25seSBhd2FyZSBv ZiBvcmlnaW5hbAorICAgIHdhdGNoZWQgcmVnaW9ucywgYW5kIHdpbGwgdGhpbmsgdGhhdCBzb21l IHVua25vd24gd2F0Y2hwb2ludCBoYXMKKy0gICBiZWVuIHRyaWdnZXJlZC4gIEluIHN1Y2ggYSBj YXNlLCBnZGIgbWF5IHN0b3Agd2l0aG91dCBkaXNwbGF5aW5nCistICAgYW55IGRldGFpbGVkIGlu Zm9ybWF0aW9uLgorLQorLSAgIE9uY2UgdGhlIGtlcm5lbCBwcm92aWRlcyB0aGUgZnVsbCBzdXBw b3J0IGZvciBCeXRlIEFkZHJlc3MgU2VsZWN0CistICAgKEJBUykgaW4gdGhlIGhhcmR3YXJlIHdh dGNocG9pbnQgY29udHJvbCByZWdpc3RlciwgdGhlc2UKKy0gICBsaW1pdGF0aW9ucyBjYW4gYmUg bGFyZ2VseSByZWxheGVkIHdpdGggc29tZSBmdXJ0aGVyIHdvcmsuICAqLworKyAgIGJlZW4gdHJp Z2dlcmVkLiAgVG8gcHJldmVudCBzdWNoIGEgY2FzZSwKKysgICBhYXJjaDY0X3N0b3BwZWRfZGF0 YV9hZGRyZXNzIGltcGxlbWVudGF0aW9ucyBpbiBnZGIgYW5kIGdkYnNlcnZlcgorKyAgIHRyeSB0 byBtYXRjaCB0aGUgdHJhcHBlZCBhZGRyZXNzIHdpdGggYSB3YXRjaGVkIHJlZ2lvbiwgYW5kIHJl dHVybgorKyAgIGFuIGFkZHJlc3Mgd2l0aGluIHRoZSBsYXR0ZXIuICovCisgCisgc3RhdGljIHZv aWQKKy1hYXJjaDY0X2FsaWduX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxl biwKKy0JCQkgIENPUkVfQUREUiAqYWxpZ25lZF9hZGRyX3AsCistCQkJICBpbnQgKmFsaWduZWRf bGVuX3AsIENPUkVfQUREUiAqbmV4dF9hZGRyX3AsCistCQkJICBMT05HRVNUICpuZXh0X2xlbl9w KQorK2FhcmNoNjRfYWxpZ25fd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIENP UkVfQUREUiAqYWxpZ25lZF9hZGRyX3AsCisrCQkJICBpbnQgKmFsaWduZWRfb2Zmc2V0X3AsIGlu dCAqYWxpZ25lZF9sZW5fcCwKKysJCQkgIENPUkVfQUREUiAqbmV4dF9hZGRyX3AsIGludCAqbmV4 dF9sZW5fcCwKKysJCQkgIENPUkVfQUREUiAqbmV4dF9hZGRyX29yaWdfcCkKKyB7CisgICBpbnQg YWxpZ25lZF9sZW47CistICB1bnNpZ25lZCBpbnQgb2Zmc2V0OworKyAgdW5zaWduZWQgaW50IG9m ZnNldCwgYWxpZ25lZF9vZmZzZXQ7CisgICBDT1JFX0FERFIgYWxpZ25lZF9hZGRyOworICAgY29u c3QgdW5zaWduZWQgaW50IGFsaWdubWVudCA9IEFBUkNINjRfSFdQX0FMSUdOTUVOVDsKKyAgIGNv bnN0IHVuc2lnbmVkIGludCBtYXhfd3BfbGVuID0gQUFSQ0g2NF9IV1BfTUFYX0xFTl9QRVJfUkVH OworQEAgLTE5NywxMCArMjI5LDEyIEBAIGFhcmNoNjRfYWxpZ25fd2F0Y2hwb2ludCAoQ09SRV9B RERSIGFkZHIsIExPTkdFU1QgbGVuLAorICAgaWYgKGxlbiA8PSAwKQorICAgICByZXR1cm47Cisg CistICAvKiBBZGRyZXNzIHRvIGJlIHB1dCBpbnRvIHRoZSBoYXJkd2FyZSB3YXRjaHBvaW50IHZh bHVlIHJlZ2lzdGVyCistICAgICBtdXN0IGJlIGFsaWduZWQuICAqLworKyAgLyogVGhlIGFkZHJl c3MgcHV0IGludG8gdGhlIGhhcmR3YXJlIHdhdGNocG9pbnQgdmFsdWUgcmVnaXN0ZXIgbXVzdAor KyAgICAgYmUgYWxpZ25lZC4gICovCisgICBvZmZzZXQgPSBhZGRyICYgKGFsaWdubWVudCAtIDEp OworICAgYWxpZ25lZF9hZGRyID0gYWRkciAtIG9mZnNldDsKKysgIGFsaWduZWRfb2Zmc2V0Cisr ICAgID0ga2VybmVsX3N1cHBvcnRzX2FueV9jb250aWd1b3VzX3JhbmdlID8gYWRkciAmIChhbGln bm1lbnQgLSAxKSA6IDA7CisgCisgICBnZGJfYXNzZXJ0IChvZmZzZXQgPj0gMCAmJiBvZmZzZXQg PCBhbGlnbm1lbnQpOworICAgZ2RiX2Fzc2VydCAoYWxpZ25lZF9hZGRyID49IDAgJiYgYWxpZ25l ZF9hZGRyIDw9IGFkZHIpOworQEAgLTIwOCw5ICsyNDIsMTAgQEAgYWFyY2g2NF9hbGlnbl93YXRj aHBvaW50IChDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4sCisgCisgICBpZiAob2Zmc2V0ICsg bGVuID49IG1heF93cF9sZW4pCisgICAgIHsKKy0gICAgICAvKiBOZWVkIG1vcmUgdGhhbiBvbmUg d2F0Y2hwb2ludCByZWdpc3RlcnM7IHRydW5jYXRlIGl0IGF0IHRoZQorKyAgICAgIC8qIE5lZWQg bW9yZSB0aGFuIG9uZSB3YXRjaHBvaW50IHJlZ2lzdGVyOyB0cnVuY2F0ZSBhdCB0aGUKKyAJIGFs aWdubWVudCBib3VuZGFyeS4gICovCistICAgICAgYWxpZ25lZF9sZW4gPSBtYXhfd3BfbGVuOwor KyAgICAgIGFsaWduZWRfbGVuCisrCT0gbWF4X3dwX2xlbiAtIChrZXJuZWxfc3VwcG9ydHNfYW55 X2NvbnRpZ3VvdXNfcmFuZ2UgPyBvZmZzZXQgOiAwKTsKKyAgICAgICBsZW4gLT0gKG1heF93cF9s ZW4gLSBvZmZzZXQpOworICAgICAgIGFkZHIgKz0gKG1heF93cF9sZW4gLSBvZmZzZXQpOworICAg ICAgIGdkYl9hc3NlcnQgKChhZGRyICYgKGFsaWdubWVudCAtIDEpKSA9PSAwKTsKK0BAIC0yMjMs MTkgKzI1OCwyNCBAQCBhYXJjaDY0X2FsaWduX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBM T05HRVNUIGxlbiwKKyAJYWxpZ25lZF9sZW5fYXJyYXlbQUFSQ0g2NF9IV1BfTUFYX0xFTl9QRVJf UkVHXSA9CisgCXsgMSwgMiwgNCwgNCwgOCwgOCwgOCwgOCB9OworIAorLSAgICAgIGFsaWduZWRf bGVuID0gYWxpZ25lZF9sZW5fYXJyYXlbb2Zmc2V0ICsgbGVuIC0gMV07CisrICAgICAgYWxpZ25l ZF9sZW4gPSAoa2VybmVsX3N1cHBvcnRzX2FueV9jb250aWd1b3VzX3JhbmdlCisrCQkgICAgID8g bGVuIDogYWxpZ25lZF9sZW5fYXJyYXlbb2Zmc2V0ICsgbGVuIC0gMV0pOworICAgICAgIGFkZHIg Kz0gbGVuOworICAgICAgIGxlbiA9IDA7CisgICAgIH0KKyAKKyAgIGlmIChhbGlnbmVkX2FkZHJf cCkKKyAgICAgKmFsaWduZWRfYWRkcl9wID0gYWxpZ25lZF9hZGRyOworKyAgaWYgKGFsaWduZWRf b2Zmc2V0X3ApCisrICAgICphbGlnbmVkX29mZnNldF9wID0gYWxpZ25lZF9vZmZzZXQ7CisgICBp ZiAoYWxpZ25lZF9sZW5fcCkKKyAgICAgKmFsaWduZWRfbGVuX3AgPSBhbGlnbmVkX2xlbjsKKyAg IGlmIChuZXh0X2FkZHJfcCkKKyAgICAgKm5leHRfYWRkcl9wID0gYWRkcjsKKyAgIGlmIChuZXh0 X2xlbl9wKQorICAgICAqbmV4dF9sZW5fcCA9IGxlbjsKKysgIGlmIChuZXh0X2FkZHJfb3JpZ19w KQorKyAgICAqbmV4dF9hZGRyX29yaWdfcCA9IGFsaWduX2Rvd24gKCpuZXh0X2FkZHJfb3JpZ19w ICsgYWxpZ25tZW50LCBhbGlnbm1lbnQpOworIH0KKyAKKyBzdHJ1Y3QgYWFyY2g2NF9kcl91cGRh dGVfY2FsbGJhY2tfcGFyYW0KK0BAIC0zMjUsMTcgKzM2NSw3MyBAQCBhYXJjaDY0X25vdGlmeV9k ZWJ1Z19yZWdfY2hhbmdlIChjb25zdCBzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdfc3RhdGUgKnN0 YXRlLAorICAgaXRlcmF0ZV9vdmVyX2x3cHMgKHBpZF9wdGlkLCBkZWJ1Z19yZWdfY2hhbmdlX2Nh bGxiYWNrLCAodm9pZCAqKSAmcGFyYW0pOworIH0KKyAKKysvKiBSZWNvbmZpZ3VyZSBTVEFURSB0 byBiZSBjb21wYXRpYmxlIHdpdGggTGludXgga2VybmVscyB3aXRoIHRoZSBQUgorKyAgIGV4dGVy bmFsLzIwMjA3IGJ1Zy4gIFRoaXMgaXMgY2FsbGVkIHdoZW4KKysgICBLRVJORUxfU1VQUE9SVFNf QU5ZX0NPTlRJR1VPVVNfUkFOR0UgdHJhbnNpdGlvbnMgdG8gZmFsc2UuICBOb3RlIHdlCisrICAg ZG9uJ3QgdHJ5IHRvIHN1cHBvcnQgY29tYmluaW5nIHdhdGNocG9pbnRzIHdpdGggbWF0Y2hpbmcg KGFuZCB0aHVzCisrICAgc2hhcmVkKSBtYXNrcywgYXMgaXQncyB0b28gbGF0ZSB3aGVuIHdlIGdl dCBoZXJlLiAgT24gYnVnZ3kKKysgICBrZXJuZWxzLCBHREIgd2lsbCB0cnkgdG8gZmlyc3Qgc2V0 dXAgdGhlIHBlcmZlY3QgbWF0Y2hpbmcgcmFuZ2VzLAorKyAgIHdoaWNoIHdpbGwgcnVuIG91dCBv ZiByZWdpc3RlcnMgYmVmb3JlIHRoaXMgZnVuY3Rpb24gY2FuIG1lcmdlCisrICAgdGhlbS4gIEl0 IGRvZXNuJ3QgbG9vayBsaWtlIHdvcnRoIHRoZSBlZmZvcnQgdG8gaW1wcm92ZSB0aGF0LCBnaXZl bgorKyAgIGV2ZW50dWFsbHkgYnVnZ3kga2VybmVscyB3aWxsIGJlIHBoYXNlZCBvdXQuICAqLwor KworK3N0YXRpYyB2b2lkCisrYWFyY2g2NF9kb3duZ3JhZGVfcmVncyAoc3RydWN0IGFhcmNoNjRf ZGVidWdfcmVnX3N0YXRlICpzdGF0ZSkKKyt7CisrICBmb3IgKGludCBpID0gMDsgaSA8IGFhcmNo NjRfbnVtX3dwX3JlZ3M7ICsraSkKKysgICAgaWYgKChzdGF0ZS0+ZHJfY3RybF93cFtpXSAmIDEp ICE9IDApCisrICAgICAgeworKwlnZGJfYXNzZXJ0IChzdGF0ZS0+ZHJfcmVmX2NvdW50X3dwW2ld ICE9IDApOworKwl1aW50OF90IG1hc2tfb3JpZyA9IChzdGF0ZS0+ZHJfY3RybF93cFtpXSA+PiA1 KSAmIDB4ZmY7CisrCWdkYl9hc3NlcnQgKG1hc2tfb3JpZyAhPSAwKTsKKysJc3RhdGljIGNvbnN0 IHVpbnQ4X3Qgb2xkX3ZhbGlkW10gPSB7IDB4MDEsIDB4MDMsIDB4MGYsIDB4ZmYgfTsKKysJdWlu dDhfdCBtYXNrID0gMDsKKysJZm9yIChjb25zdCB1aW50OF90IG9sZF9tYXNrIDogb2xkX3ZhbGlk KQorKwkgIGlmIChtYXNrX29yaWcgPD0gb2xkX21hc2spCisrCSAgICB7CisrCSAgICAgIG1hc2sg PSBvbGRfbWFzazsKKysJICAgICAgYnJlYWs7CisrCSAgICB9CisrCWdkYl9hc3NlcnQgKG1hc2sg IT0gMCk7CisrCisrCS8qIE5vIHVwZGF0ZSBuZWVkZWQgZm9yIHRoaXMgd2F0Y2hwb2ludD8gICov CisrCWlmIChtYXNrID09IG1hc2tfb3JpZykKKysJICBjb250aW51ZTsKKysJc3RhdGUtPmRyX2N0 cmxfd3BbaV0gfD0gbWFzayA8PCA1OworKwlzdGF0ZS0+ZHJfYWRkcl93cFtpXQorKwkgID0gYWxp Z25fZG93biAoc3RhdGUtPmRyX2FkZHJfd3BbaV0sIEFBUkNINjRfSFdQX0FMSUdOTUVOVCk7Cisr CisrCS8qIFRyeSB0byBtYXRjaCBkdXBsaWNhdGUgZW50cmllcy4gICovCisrCWZvciAoaW50IGog PSAwOyBqIDwgaTsgKytqKQorKwkgIGlmICgoc3RhdGUtPmRyX2N0cmxfd3Bbal0gJiAxKSAhPSAw CisrCSAgICAgICYmIHN0YXRlLT5kcl9hZGRyX3dwW2pdID09IHN0YXRlLT5kcl9hZGRyX3dwW2ld CisrCSAgICAgICYmIHN0YXRlLT5kcl9hZGRyX29yaWdfd3Bbal0gPT0gc3RhdGUtPmRyX2FkZHJf b3JpZ193cFtpXQorKwkgICAgICAmJiBzdGF0ZS0+ZHJfY3RybF93cFtqXSA9PSBzdGF0ZS0+ZHJf Y3RybF93cFtpXSkKKysJICAgIHsKKysJICAgICAgc3RhdGUtPmRyX3JlZl9jb3VudF93cFtqXSAr PSBzdGF0ZS0+ZHJfcmVmX2NvdW50X3dwW2ldOworKwkgICAgICBzdGF0ZS0+ZHJfcmVmX2NvdW50 X3dwW2ldID0gMDsKKysJICAgICAgc3RhdGUtPmRyX2FkZHJfd3BbaV0gPSAwOworKwkgICAgICBz dGF0ZS0+ZHJfYWRkcl9vcmlnX3dwW2ldID0gMDsKKysJICAgICAgc3RhdGUtPmRyX2N0cmxfd3Bb aV0gJj0gfjE7CisrCSAgICAgIGJyZWFrOworKwkgICAgfQorKworKwlhYXJjaDY0X25vdGlmeV9k ZWJ1Z19yZWdfY2hhbmdlIChzdGF0ZSwgMSAvKiBpc193YXRjaHBvaW50ICovLCBpKTsKKysgICAg ICB9CisrfQorKworIC8qIFJlY29yZCB0aGUgaW5zZXJ0aW9uIG9mIG9uZSBicmVha3BvaW50L3dh dGNocG9pbnQsIGFzIHJlcHJlc2VudGVkCisgICAgYnkgQUREUiBhbmQgQ1RSTCwgaW4gdGhlIHBy b2Nlc3MnIGFyY2gtc3BlY2lmaWMgZGF0YSBhcmVhICpTVEFURS4gICovCisgCisgc3RhdGljIGlu dAorIGFhcmNoNjRfZHJfc3RhdGVfaW5zZXJ0X29uZV9wb2ludCAoc3RydWN0IGFhcmNoNjRfZGVi dWdfcmVnX3N0YXRlICpzdGF0ZSwKKyAJCQkJICAgZW51bSB0YXJnZXRfaHdfYnBfdHlwZSB0eXBl LAorLQkJCQkgICBDT1JFX0FERFIgYWRkciwgaW50IGxlbikKKysJCQkJICAgQ09SRV9BRERSIGFk ZHIsIGludCBvZmZzZXQsIGludCBsZW4sCisrCQkJCSAgIENPUkVfQUREUiBhZGRyX29yaWcpCisg eworICAgaW50IGksIGlkeCwgbnVtX3JlZ3MsIGlzX3dhdGNocG9pbnQ7CisgICB1bnNpZ25lZCBp bnQgY3RybCwgKmRyX2N0cmxfcCwgKmRyX3JlZl9jb3VudDsKKy0gIENPUkVfQUREUiAqZHJfYWRk cl9wOworKyAgQ09SRV9BRERSICpkcl9hZGRyX3AsICpkcl9hZGRyX29yaWdfcDsKKyAKKyAgIC8q IFNldCB1cCBzdGF0ZSBwb2ludGVycy4gICovCisgICBpc193YXRjaHBvaW50ID0gKHR5cGUgIT0g aHdfZXhlY3V0ZSk7CitAQCAtMzQ0LDYgKzQ0MCw3IEBAIGFhcmNoNjRfZHJfc3RhdGVfaW5zZXJ0 X29uZV9wb2ludCAoc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKKyAgICAg eworICAgICAgIG51bV9yZWdzID0gYWFyY2g2NF9udW1fd3BfcmVnczsKKyAgICAgICBkcl9hZGRy X3AgPSBzdGF0ZS0+ZHJfYWRkcl93cDsKKysgICAgICBkcl9hZGRyX29yaWdfcCA9IHN0YXRlLT5k cl9hZGRyX29yaWdfd3A7CisgICAgICAgZHJfY3RybF9wID0gc3RhdGUtPmRyX2N0cmxfd3A7Cisg ICAgICAgZHJfcmVmX2NvdW50ID0gc3RhdGUtPmRyX3JlZl9jb3VudF93cDsKKyAgICAgfQorQEAg LTM1MSwxMSArNDQ4LDEyIEBAIGFhcmNoNjRfZHJfc3RhdGVfaW5zZXJ0X29uZV9wb2ludCAoc3Ry dWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKKyAgICAgeworICAgICAgIG51bV9y ZWdzID0gYWFyY2g2NF9udW1fYnBfcmVnczsKKyAgICAgICBkcl9hZGRyX3AgPSBzdGF0ZS0+ZHJf YWRkcl9icDsKKysgICAgICBkcl9hZGRyX29yaWdfcCA9IG51bGxwdHI7CisgICAgICAgZHJfY3Ry bF9wID0gc3RhdGUtPmRyX2N0cmxfYnA7CisgICAgICAgZHJfcmVmX2NvdW50ID0gc3RhdGUtPmRy X3JlZl9jb3VudF9icDsKKyAgICAgfQorIAorLSAgY3RybCA9IGFhcmNoNjRfcG9pbnRfZW5jb2Rl X2N0cmxfcmVnICh0eXBlLCBsZW4pOworKyAgY3RybCA9IGFhcmNoNjRfcG9pbnRfZW5jb2RlX2N0 cmxfcmVnICh0eXBlLCBvZmZzZXQsIGxlbik7CisgCisgICAvKiBGaW5kIGFuIGV4aXN0aW5nIG9y IGZyZWUgcmVnaXN0ZXIgaW4gb3VyIGNhY2hlLiAgKi8KKyAgIGlkeCA9IC0xOworQEAgLTM2Nyw3 ICs0NjUsOSBAQCBhYXJjaDY0X2RyX3N0YXRlX2luc2VydF9vbmVfcG9pbnQgKHN0cnVjdCBhYXJj aDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUsCisgCSAgaWR4ID0gaTsKKyAJICAvKiBubyBicmVh azsgY29udGludWUgaHVudGluZyBmb3IgYW4gZXhpc2luZyBvbmUuICAqLworIAl9CistICAgICAg ZWxzZSBpZiAoZHJfYWRkcl9wW2ldID09IGFkZHIgJiYgZHJfY3RybF9wW2ldID09IGN0cmwpCisr ICAgICAgZWxzZSBpZiAoZHJfYWRkcl9wW2ldID09IGFkZHIKKysJICAgICAgICYmIChkcl9hZGRy X29yaWdfcCA9PSBudWxscHRyIHx8IGRyX2FkZHJfb3JpZ19wW2ldID09IGFkZHJfb3JpZykKKysJ ICAgICAgICYmIGRyX2N0cmxfcFtpXSA9PSBjdHJsKQorIAl7CisgCSAgZ2RiX2Fzc2VydCAoZHJf cmVmX2NvdW50W2ldICE9IDApOworIAkgIGlkeCA9IGk7CitAQCAtMzg0LDYgKzQ4NCw4IEBAIGFh cmNoNjRfZHJfc3RhdGVfaW5zZXJ0X29uZV9wb2ludCAoc3RydWN0IGFhcmNoNjRfZGVidWdfcmVn X3N0YXRlICpzdGF0ZSwKKyAgICAgeworICAgICAgIC8qIG5ldyBlbnRyeSAqLworICAgICAgIGRy X2FkZHJfcFtpZHhdID0gYWRkcjsKKysgICAgICBpZiAoZHJfYWRkcl9vcmlnX3AgIT0gbnVsbHB0 cikKKysJZHJfYWRkcl9vcmlnX3BbaWR4XSA9IGFkZHJfb3JpZzsKKyAgICAgICBkcl9jdHJsX3Bb aWR4XSA9IGN0cmw7CisgICAgICAgZHJfcmVmX2NvdW50W2lkeF0gPSAxOworICAgICAgIC8qIE5v dGlmeSB0aGUgY2hhbmdlLiAgKi8KK0BAIC00MDQsMTEgKzUwNiwxMiBAQCBhYXJjaDY0X2RyX3N0 YXRlX2luc2VydF9vbmVfcG9pbnQgKHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3Rh dGUsCisgc3RhdGljIGludAorIGFhcmNoNjRfZHJfc3RhdGVfcmVtb3ZlX29uZV9wb2ludCAoc3Ry dWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKKyAJCQkJICAgZW51bSB0YXJnZXRf aHdfYnBfdHlwZSB0eXBlLAorLQkJCQkgICBDT1JFX0FERFIgYWRkciwgaW50IGxlbikKKysJCQkJ ICAgQ09SRV9BRERSIGFkZHIsIGludCBvZmZzZXQsIGludCBsZW4sCisrCQkJCSAgIENPUkVfQURE UiBhZGRyX29yaWcpCisgeworICAgaW50IGksIG51bV9yZWdzLCBpc193YXRjaHBvaW50OworICAg dW5zaWduZWQgaW50IGN0cmwsICpkcl9jdHJsX3AsICpkcl9yZWZfY291bnQ7CistICBDT1JFX0FE RFIgKmRyX2FkZHJfcDsKKysgIENPUkVfQUREUiAqZHJfYWRkcl9wLCAqZHJfYWRkcl9vcmlnX3A7 CisgCisgICAvKiBTZXQgdXAgc3RhdGUgcG9pbnRlcnMuICAqLworICAgaXNfd2F0Y2hwb2ludCA9 ICh0eXBlICE9IGh3X2V4ZWN1dGUpOworQEAgLTQxNiw2ICs1MTksNyBAQCBhYXJjaDY0X2RyX3N0 YXRlX3JlbW92ZV9vbmVfcG9pbnQgKHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3Rh dGUsCisgICAgIHsKKyAgICAgICBudW1fcmVncyA9IGFhcmNoNjRfbnVtX3dwX3JlZ3M7CisgICAg ICAgZHJfYWRkcl9wID0gc3RhdGUtPmRyX2FkZHJfd3A7CisrICAgICAgZHJfYWRkcl9vcmlnX3Ag PSBzdGF0ZS0+ZHJfYWRkcl9vcmlnX3dwOworICAgICAgIGRyX2N0cmxfcCA9IHN0YXRlLT5kcl9j dHJsX3dwOworICAgICAgIGRyX3JlZl9jb3VudCA9IHN0YXRlLT5kcl9yZWZfY291bnRfd3A7Cisg ICAgIH0KK0BAIC00MjMsMTUgKzUyNywxOCBAQCBhYXJjaDY0X2RyX3N0YXRlX3JlbW92ZV9vbmVf cG9pbnQgKHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUsCisgICAgIHsKKyAg ICAgICBudW1fcmVncyA9IGFhcmNoNjRfbnVtX2JwX3JlZ3M7CisgICAgICAgZHJfYWRkcl9wID0g c3RhdGUtPmRyX2FkZHJfYnA7CisrICAgICAgZHJfYWRkcl9vcmlnX3AgPSBudWxscHRyOworICAg ICAgIGRyX2N0cmxfcCA9IHN0YXRlLT5kcl9jdHJsX2JwOworICAgICAgIGRyX3JlZl9jb3VudCA9 IHN0YXRlLT5kcl9yZWZfY291bnRfYnA7CisgICAgIH0KKyAKKy0gIGN0cmwgPSBhYXJjaDY0X3Bv aW50X2VuY29kZV9jdHJsX3JlZyAodHlwZSwgbGVuKTsKKysgIGN0cmwgPSBhYXJjaDY0X3BvaW50 X2VuY29kZV9jdHJsX3JlZyAodHlwZSwgb2Zmc2V0LCBsZW4pOworIAorICAgLyogRmluZCB0aGUg ZW50cnkgdGhhdCBtYXRjaGVzIHRoZSBBRERSIGFuZCBDVFJMLiAgKi8KKyAgIGZvciAoaSA9IDA7 IGkgPCBudW1fcmVnczsgKytpKQorLSAgICBpZiAoZHJfYWRkcl9wW2ldID09IGFkZHIgJiYgZHJf Y3RybF9wW2ldID09IGN0cmwpCisrICAgIGlmIChkcl9hZGRyX3BbaV0gPT0gYWRkcgorKwkmJiAo ZHJfYWRkcl9vcmlnX3AgPT0gbnVsbHB0ciB8fCBkcl9hZGRyX29yaWdfcFtpXSA9PSBhZGRyX29y aWcpCisrCSYmIGRyX2N0cmxfcFtpXSA9PSBjdHJsKQorICAgICAgIHsKKyAJZ2RiX2Fzc2VydCAo ZHJfcmVmX2NvdW50W2ldICE9IDApOworIAlicmVhazsKK0BAIC00NDcsNiArNTU0LDggQEAgYWFy Y2g2NF9kcl9zdGF0ZV9yZW1vdmVfb25lX3BvaW50IChzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdf c3RhdGUgKnN0YXRlLAorICAgICAgIC8qIENsZWFyIHRoZSBlbmFibGUgYml0LiAgKi8KKyAgICAg ICBjdHJsICY9IH4xOworICAgICAgIGRyX2FkZHJfcFtpXSA9IDA7CisrICAgICAgaWYgKGRyX2Fk ZHJfb3JpZ19wICE9IG51bGxwdHIpCisrCWRyX2FkZHJfb3JpZ19wW2ldID0gMDsKKyAgICAgICBk cl9jdHJsX3BbaV0gPSBjdHJsOworICAgICAgIC8qIE5vdGlmeSB0aGUgY2hhbmdlLiAgKi8KKyAg ICAgICBhYXJjaDY0X25vdGlmeV9kZWJ1Z19yZWdfY2hhbmdlIChzdGF0ZSwgaXNfd2F0Y2hwb2lu dCwgaSk7CitAQCAtNDczLDEwICs1ODIsMTAgQEAgYWFyY2g2NF9oYW5kbGVfYnJlYWtwb2ludCAo ZW51bSB0YXJnZXRfaHdfYnBfdHlwZSB0eXBlLCBDT1JFX0FERFIgYWRkciwKKyAgICAgICBpZiAo IWFhcmNoNjRfcG9pbnRfaXNfYWxpZ25lZCAoMCAvKiBpc193YXRjaHBvaW50ICovICwgYWRkciwg bGVuKSkKKyAJcmV0dXJuIC0xOworIAorLSAgICAgIHJldHVybiBhYXJjaDY0X2RyX3N0YXRlX2lu c2VydF9vbmVfcG9pbnQgKHN0YXRlLCB0eXBlLCBhZGRyLCBsZW4pOworKyAgICAgIHJldHVybiBh YXJjaDY0X2RyX3N0YXRlX2luc2VydF9vbmVfcG9pbnQgKHN0YXRlLCB0eXBlLCBhZGRyLCAwLCBs ZW4sIC0xKTsKKyAgICAgfQorICAgZWxzZQorLSAgICByZXR1cm4gYWFyY2g2NF9kcl9zdGF0ZV9y ZW1vdmVfb25lX3BvaW50IChzdGF0ZSwgdHlwZSwgYWRkciwgbGVuKTsKKysgICAgcmV0dXJuIGFh cmNoNjRfZHJfc3RhdGVfcmVtb3ZlX29uZV9wb2ludCAoc3RhdGUsIHR5cGUsIGFkZHIsIDAsIGxl biwgLTEpOworIH0KKyAKKyAvKiBUaGlzIGlzIGVzc2VudGlhbGx5IHRoZSBzYW1lIGFzIGFhcmNo NjRfaGFuZGxlX2JyZWFrcG9pbnQsIGFwYXJ0CitAQCAtNDg4LDkgKzU5Nyw5IEBAIGFhcmNoNjRf aGFuZGxlX2FsaWduZWRfd2F0Y2hwb2ludCAoZW51bSB0YXJnZXRfaHdfYnBfdHlwZSB0eXBlLAor IAkJCQkgICBzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlKQorIHsKKyAgIGlm IChpc19pbnNlcnQpCistICAgIHJldHVybiBhYXJjaDY0X2RyX3N0YXRlX2luc2VydF9vbmVfcG9p bnQgKHN0YXRlLCB0eXBlLCBhZGRyLCBsZW4pOworKyAgICByZXR1cm4gYWFyY2g2NF9kcl9zdGF0 ZV9pbnNlcnRfb25lX3BvaW50IChzdGF0ZSwgdHlwZSwgYWRkciwgMCwgbGVuLCBhZGRyKTsKKyAg IGVsc2UKKy0gICAgcmV0dXJuIGFhcmNoNjRfZHJfc3RhdGVfcmVtb3ZlX29uZV9wb2ludCAoc3Rh dGUsIHR5cGUsIGFkZHIsIGxlbik7CisrICAgIHJldHVybiBhYXJjaDY0X2RyX3N0YXRlX3JlbW92 ZV9vbmVfcG9pbnQgKHN0YXRlLCB0eXBlLCBhZGRyLCAwLCBsZW4sIGFkZHIpOworIH0KKyAKKyAv KiBJbnNlcnQvcmVtb3ZlIHVuYWxpZ25lZCB3YXRjaHBvaW50IGJ5IGNhbGxpbmcKK0BAIC01MDIs MzIgKzYxMSw0NSBAQCBhYXJjaDY0X2hhbmRsZV9hbGlnbmVkX3dhdGNocG9pbnQgKGVudW0gdGFy Z2V0X2h3X2JwX3R5cGUgdHlwZSwKKyAKKyBzdGF0aWMgaW50CisgYWFyY2g2NF9oYW5kbGVfdW5h bGlnbmVkX3dhdGNocG9pbnQgKGVudW0gdGFyZ2V0X2h3X2JwX3R5cGUgdHlwZSwKKy0JCQkJICAg ICBDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4sIGludCBpc19pbnNlcnQsCisrCQkJCSAgICAg Q09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCBpc19pbnNlcnQsCisgCQkJCSAgICAgc3RydWN0 IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSkKKyB7CisrICBDT1JFX0FERFIgYWRkcl9v cmlnID0gYWRkcjsKKysKKyAgIHdoaWxlIChsZW4gPiAwKQorICAgICB7CisgICAgICAgQ09SRV9B RERSIGFsaWduZWRfYWRkcjsKKy0gICAgICBpbnQgYWxpZ25lZF9sZW4sIHJldDsKKysgICAgICBp bnQgYWxpZ25lZF9vZmZzZXQsIGFsaWduZWRfbGVuLCByZXQ7CisrICAgICAgQ09SRV9BRERSIGFk ZHJfb3JpZ19uZXh0ID0gYWRkcl9vcmlnOworIAorLSAgICAgIGFhcmNoNjRfYWxpZ25fd2F0Y2hw b2ludCAoYWRkciwgbGVuLCAmYWxpZ25lZF9hZGRyLCAmYWxpZ25lZF9sZW4sCistCQkJCSZhZGRy LCAmbGVuKTsKKysgICAgICBhYXJjaDY0X2FsaWduX3dhdGNocG9pbnQgKGFkZHIsIGxlbiwgJmFs aWduZWRfYWRkciwgJmFsaWduZWRfb2Zmc2V0LAorKwkJCQkmYWxpZ25lZF9sZW4sICZhZGRyLCAm bGVuLCAmYWRkcl9vcmlnX25leHQpOworIAorICAgICAgIGlmIChpc19pbnNlcnQpCisgCXJldCA9 IGFhcmNoNjRfZHJfc3RhdGVfaW5zZXJ0X29uZV9wb2ludCAoc3RhdGUsIHR5cGUsIGFsaWduZWRf YWRkciwKKy0JCQkJCQkgYWxpZ25lZF9sZW4pOworKwkJCQkJCSBhbGlnbmVkX29mZnNldCwKKysJ CQkJCQkgYWxpZ25lZF9sZW4sIGFkZHJfb3JpZyk7CisgICAgICAgZWxzZQorIAlyZXQgPSBhYXJj aDY0X2RyX3N0YXRlX3JlbW92ZV9vbmVfcG9pbnQgKHN0YXRlLCB0eXBlLCBhbGlnbmVkX2FkZHIs CistCQkJCQkJIGFsaWduZWRfbGVuKTsKKysJCQkJCQkgYWxpZ25lZF9vZmZzZXQsCisrCQkJCQkJ IGFsaWduZWRfbGVuLCBhZGRyX29yaWcpOworIAorICAgICAgIGlmIChzaG93X2RlYnVnX3JlZ3Mp CisgCWRlYnVnX3ByaW50ZiAoImhhbmRsZV91bmFsaWduZWRfd2F0Y2hwb2ludDogaXNfaW5zZXJ0 OiAlZFxuIgorIAkJICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorIAkJICAg ICAgImFsaWduZWRfYWRkcjogJXMsIGFsaWduZWRfbGVuOiAlZFxuIgorIAkJICAgICAgIiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorLQkJICAgICAgIm5leHRfYWRkcjogJXMsICAg IG5leHRfbGVuOiAlc1xuIiwKKysJCSAgICAgICJhZGRyX29yaWc6ICVzXG4iCisrCQkgICAgICAi ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisrCQkgICAgICAibmV4dF9hZGRyOiAl cywgICAgbmV4dF9sZW46ICVkXG4iCisrCQkgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAg ICAgIgorKwkJICAgICAgImFkZHJfb3JpZ19uZXh0OiAlc1xuIiwKKyAJCSAgICAgIGlzX2luc2Vy dCwgY29yZV9hZGRyX3RvX3N0cmluZ19ueiAoYWxpZ25lZF9hZGRyKSwKKy0JCSAgICAgIGFsaWdu ZWRfbGVuLCBjb3JlX2FkZHJfdG9fc3RyaW5nX256IChhZGRyKSwgcGxvbmdlc3QgKGxlbikpOwor KwkJICAgICAgYWxpZ25lZF9sZW4sIGNvcmVfYWRkcl90b19zdHJpbmdfbnogKGFkZHJfb3JpZyks CisrCQkgICAgICBjb3JlX2FkZHJfdG9fc3RyaW5nX256IChhZGRyKSwgbGVuLAorKwkJICAgICAg Y29yZV9hZGRyX3RvX3N0cmluZ19ueiAoYWRkcl9vcmlnX25leHQpKTsKKysKKysgICAgICBhZGRy X29yaWcgPSBhZGRyX29yaWdfbmV4dDsKKyAKKyAgICAgICBpZiAocmV0ICE9IDApCisgCXJldHVy biByZXQ7CitAQCAtNTUzLDcgKzY3NSw3IEBAIGFhcmNoNjRfaGFuZGxlX3dhdGNocG9pbnQgKGVu dW0gdGFyZ2V0X2h3X2JwX3R5cGUgdHlwZSwgQ09SRV9BRERSIGFkZHIsCisgICAgcmVnaXN0ZXJz IHdpdGggZGF0YSBmcm9tICpTVEFURS4gICovCisgCisgdm9pZAorLWFhcmNoNjRfbGludXhfc2V0 X2RlYnVnX3JlZ3MgKGNvbnN0IHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUs CisrYWFyY2g2NF9saW51eF9zZXRfZGVidWdfcmVncyAoc3RydWN0IGFhcmNoNjRfZGVidWdfcmVn X3N0YXRlICpzdGF0ZSwKKyAJCQkgICAgICBpbnQgdGlkLCBpbnQgd2F0Y2hwb2ludCkKKyB7Cisg ICBpbnQgaSwgY291bnQ7CitAQCAtNTgxLDcgKzcwMywxOCBAQCBhYXJjaDY0X2xpbnV4X3NldF9k ZWJ1Z19yZWdzIChjb25zdCBzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlLAor ICAgaWYgKHB0cmFjZSAoUFRSQUNFX1NFVFJFR1NFVCwgdGlkLAorIAkgICAgICB3YXRjaHBvaW50 ID8gTlRfQVJNX0hXX1dBVENIIDogTlRfQVJNX0hXX0JSRUFLLAorIAkgICAgICAodm9pZCAqKSAm aW92KSkKKy0gICAgZXJyb3IgKF8oIlVuZXhwZWN0ZWQgZXJyb3Igc2V0dGluZyBoYXJkd2FyZSBk ZWJ1ZyByZWdpc3RlcnMiKSk7CisrICAgIHsKKysgICAgICAvKiBIYW5kbGUgTGludXgga2VybmVs cyB3aXRoIHRoZSBQUiBleHRlcm5hbC8yMDIwNyBidWcuICAqLworKyAgICAgIGlmICh3YXRjaHBv aW50ICYmIGVycm5vID09IEVJTlZBTAorKwkgICYmIGtlcm5lbF9zdXBwb3J0c19hbnlfY29udGln dW91c19yYW5nZSkKKysJeworKwkgIGtlcm5lbF9zdXBwb3J0c19hbnlfY29udGlndW91c19yYW5n ZSA9IGZhbHNlOworKwkgIGFhcmNoNjRfZG93bmdyYWRlX3JlZ3MgKHN0YXRlKTsKKysJICBhYXJj aDY0X2xpbnV4X3NldF9kZWJ1Z19yZWdzIChzdGF0ZSwgdGlkLCB3YXRjaHBvaW50KTsKKysJICBy ZXR1cm47CisrCX0KKysgICAgICBlcnJvciAoXygiVW5leHBlY3RlZCBlcnJvciBzZXR0aW5nIGhh cmR3YXJlIGRlYnVnIHJlZ2lzdGVycyIpKTsKKysgICAgfQorIH0KKyAKKyAvKiBQcmludCB0aGUg dmFsdWVzIG9mIHRoZSBjYWNoZWQgYnJlYWtwb2ludC93YXRjaHBvaW50IHJlZ2lzdGVycy4gICov CitAQCAtNjEyLDggKzc0NSw5IEBAIGFhcmNoNjRfc2hvd19kZWJ1Z19yZWdfc3RhdGUgKHN0cnVj dCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUsCisgCisgICBkZWJ1Z19wcmludGYgKCJc dFdBVENIUE9JTlRzOlxuIik7CisgICBmb3IgKGkgPSAwOyBpIDwgYWFyY2g2NF9udW1fd3BfcmVn czsgaSsrKQorLSAgICBkZWJ1Z19wcmludGYgKCJcdFdQJWQ6IGFkZHI9JXMsIGN0cmw9MHglMDh4 LCByZWYuY291bnQ9JWRcbiIsCisrICAgIGRlYnVnX3ByaW50ZiAoIlx0V1AlZDogYWRkcj0lcyAo b3JpZz0lcyksIGN0cmw9MHglMDh4LCByZWYuY291bnQ9JWRcbiIsCisgCQkgIGksIGNvcmVfYWRk cl90b19zdHJpbmdfbnogKHN0YXRlLT5kcl9hZGRyX3dwW2ldKSwKKysJCSAgY29yZV9hZGRyX3Rv X3N0cmluZ19ueiAoc3RhdGUtPmRyX2FkZHJfb3JpZ193cFtpXSksCisgCQkgIHN0YXRlLT5kcl9j dHJsX3dwW2ldLCBzdGF0ZS0+ZHJfcmVmX2NvdW50X3dwW2ldKTsKKyB9CisgCitkaWZmIC0tZ2l0 IGEvZ2RiL25hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmggYi9nZGIvbmF0L2FhcmNoNjQtbGlu dXgtaHctcG9pbnQuaAoraW5kZXggZTFkNGZjOGRiYy4uYjViYTY0MTVjMCAxMDA2NDQKKy0tLSBh L2dkYi9uYXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5oCisrKysgYi9nZGIvbmF0L2FhcmNoNjQt bGludXgtaHctcG9pbnQuaAorQEAgLTc3LDEzICs3NywxMyBAQAorIAorICAgIDMxICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAxMyAgICAgICAgICA1ICAgICAgMyAgICAgIDEgICAgIDAKKyAg ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0rLS0t LS0tKy0tLS0rCistICAgfCAgICAgICAgIFJFU0VSVkVEIChTQlopICAgICAgICAgfCAgTEVOR1RI ICB8IFRZUEUgfCBQUklWIHwgRU4gfAorKyAgIHwgICAgICAgICBSRVNFUlZFRCAoU0JaKSAgICAg ICAgIHwgICBNQVNLICAgfCBUWVBFIHwgUFJJViB8IEVOIHwKKyAgICArLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0rCisgCisgICAg VGhlIFRZUEUgZmllbGQgaXMgaWdub3JlZCBmb3IgYnJlYWtwb2ludHMuICAqLworIAorICNkZWZp bmUgRFJfQ09OVFJPTF9FTkFCTEVEKGN0cmwpCSgoKGN0cmwpICYgMHgxKSA9PSAxKQorLSNkZWZp bmUgRFJfQ09OVFJPTF9MRU5HVEgoY3RybCkJCSgoKGN0cmwpID4+IDUpICYgMHhmZikKKysjZGVm aW5lIERSX0NPTlRST0xfTUFTSyhjdHJsKQkJKCgoY3RybCkgPj4gNSkgJiAweGZmKQorIAorIC8q IEVhY2ggYml0IG9mIGEgdmFyaWFibGUgb2YgdGhpcyB0eXBlIGlzIHVzZWQgdG8gaW5kaWNhdGUg d2hldGhlciBhCisgICAgaGFyZHdhcmUgYnJlYWtwb2ludCBvciB3YXRjaHBvaW50IHNldHRpbmcg aGFzIGJlZW4gY2hhbmdlZCBzaW5jZQorQEAgLTE0Nyw3ICsxNDcsMTAgQEAgc3RydWN0IGFhcmNo NjRfZGVidWdfcmVnX3N0YXRlCisgICB1bnNpZ25lZCBpbnQgZHJfcmVmX2NvdW50X2JwW0FBUkNI NjRfSEJQX01BWF9OVU1dOworIAorICAgLyogaGFyZHdhcmUgd2F0Y2hwb2ludCAqLworKyAgLyog QWRkcmVzcyBhbGlnbmVkIGRvd24gdG8gQUFSQ0g2NF9IV1BfQUxJR05NRU5ULiAgKi8KKyAgIENP UkVfQUREUiBkcl9hZGRyX3dwW0FBUkNINjRfSFdQX01BWF9OVU1dOworKyAgLyogQWRkcmVzcyBh cyBlbnRlcmVkIGJ5IHVzZXIgd2l0aG91dCBhbnkgZm9yY2VkIGFsaWdubWVudC4gICovCisrICBD T1JFX0FERFIgZHJfYWRkcl9vcmlnX3dwW0FBUkNINjRfSFdQX01BWF9OVU1dOworICAgdW5zaWdu ZWQgaW50IGRyX2N0cmxfd3BbQUFSQ0g2NF9IV1BfTUFYX05VTV07CisgICB1bnNpZ25lZCBpbnQg ZHJfcmVmX2NvdW50X3dwW0FBUkNINjRfSFdQX01BWF9OVU1dOworIH07CitAQCAtMTY2LDYgKzE2 OSw3IEBAIHN0cnVjdCBhcmNoX2x3cF9pbmZvCisgZXh0ZXJuIGludCBhYXJjaDY0X251bV9icF9y ZWdzOworIGV4dGVybiBpbnQgYWFyY2g2NF9udW1fd3BfcmVnczsKKyAKKyt1bnNpZ25lZCBpbnQg YWFyY2g2NF93YXRjaHBvaW50X29mZnNldCAodW5zaWduZWQgaW50IGN0cmwpOworIHVuc2lnbmVk IGludCBhYXJjaDY0X3dhdGNocG9pbnRfbGVuZ3RoICh1bnNpZ25lZCBpbnQgY3RybCk7CisgCisg aW50IGFhcmNoNjRfaGFuZGxlX2JyZWFrcG9pbnQgKGVudW0gdGFyZ2V0X2h3X2JwX3R5cGUgdHlw ZSwgQ09SRV9BRERSIGFkZHIsCitAQCAtMTc1LDcgKzE3OSw3IEBAIGludCBhYXJjaDY0X2hhbmRs ZV93YXRjaHBvaW50IChlbnVtIHRhcmdldF9od19icF90eXBlIHR5cGUsIENPUkVfQUREUiBhZGRy LAorIAkJCSAgICAgICBMT05HRVNUIGxlbiwgaW50IGlzX2luc2VydCwKKyAJCQkgICAgICAgc3Ry dWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSk7CisgCistdm9pZCBhYXJjaDY0X2xp bnV4X3NldF9kZWJ1Z19yZWdzIChjb25zdCBzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdfc3RhdGUg KnN0YXRlLAorK3ZvaWQgYWFyY2g2NF9saW51eF9zZXRfZGVidWdfcmVncyAoc3RydWN0IGFhcmNo NjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKKyAJCQkJICAgaW50IHRpZCwgaW50IHdhdGNocG9p bnQpOworIAorIHZvaWQgYWFyY2g2NF9zaG93X2RlYnVnX3JlZ19zdGF0ZSAoc3RydWN0IGFhcmNo NjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL3dhdGNocG9pbnQtdW5hbGlnbmVkLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dh dGNocG9pbnQtdW5hbGlnbmVkLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAw MDAwLi44OTM0ZGUyMTRlCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3dhdGNocG9pbnQtdW5hbGlnbmVkLmMKK0BAIC0wLDAgKzEsOTYgQEAKKysvKiBUaGlzIHRl c3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdo dCAyMDE3LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpbmNsdWRlIDxzdGRpbnQuaD4K KysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrCisrc3RhdGljIGludCBhZ2FpbjsKKysKKytzdGF0aWMg dm9sYXRpbGUgc3RydWN0CisreworKyAgdWludDY0X3QgYWxpZ25tZW50OworKyAgdW5pb24KKysg ICAgeworKyAgICAgIHVpbnQ2NF90IHNpemU4WzFdOworKyAgICAgIHVpbnQzMl90IHNpemU0WzJd OworKyAgICAgIHVpbnQxNl90IHNpemUyWzRdOworKyAgICAgIHVpbnQ4X3Qgc2l6ZTFbOF07Cisr ICAgICAgdWludDY0X3Qgc2l6ZTh0d2ljZVsyXTsKKysgICAgfQorKyAgdTsKKyt9IGRhdGE7Cisr Cisrc3RhdGljIGludCBzaXplID0gMDsKKytzdGF0aWMgaW50IG9mZnNldDsKKysKKytzdGF0aWMg dm9pZAorK3dyaXRlX3NpemU4dHdpY2UgKHZvaWQpCisreworKyAgc3RhdGljIGNvbnN0IHVpbnQ2 NF90IGZpcnN0ID0gMTsKKysgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBzZWNvbmQgPSAyOworKwor KyNpZmRlZiBfX2FhcmNoNjRfXworKyAgYXNtIHZvbGF0aWxlICgic3RwICUxLCAlMiwgWyUwXSIK KysJCTogLyogb3V0cHV0ICovCisrCQk6ICJyIiAoZGF0YS51LnNpemU4dHdpY2UpLCAiciIgKGZp cnN0KSwgInIiIChzZWNvbmQpIC8qIGlucHV0ICovCisrCQk6ICJtZW1vcnkiIC8qIGNsb2JiZXIg Ki8pOworKyNlbHNlCisrICBkYXRhLnUuc2l6ZTh0d2ljZVswXSA9IGZpcnN0OworKyAgZGF0YS51 LnNpemU4dHdpY2VbMV0gPSBzZWNvbmQ7CisrI2VuZGlmCisrfQorKworK2ludAorK21haW4gKHZv aWQpCisreworKyAgdm9sYXRpbGUgdWludDY0X3QgbG9jYWw7CisrCisrICBhc3NlcnQgKHNpemVv ZiAoZGF0YSkgPT0gOCArIDIgKiA4KTsKKysKKysgIHdyaXRlX3NpemU4dHdpY2UgKCk7CisrCisr ICB3aGlsZSAoc2l6ZSkKKysgICAgeworKyAgICAgIHN3aXRjaCAoc2l6ZSkKKysJeworKy8qIF9f czM5MHhfXyBhbHNvIGRlZmluZXMgX19zMzkwX18gKi8KKysjaWZkZWYgX19zMzkwX18KKysjIGRl ZmluZSBBQ0NFU1ModmFyKSB2YXIgPSB+dmFyCisrI2Vsc2UKKysjIGRlZmluZSBBQ0NFU1ModmFy KSBsb2NhbCA9IHZhcgorKyNlbmRpZgorKwljYXNlIDg6CisrCSAgQUNDRVNTIChkYXRhLnUuc2l6 ZThbb2Zmc2V0XSk7CisrCSAgYnJlYWs7CisrCWNhc2UgNDoKKysJICBBQ0NFU1MgKGRhdGEudS5z aXplNFtvZmZzZXRdKTsKKysJICBicmVhazsKKysJY2FzZSAyOgorKwkgIEFDQ0VTUyAoZGF0YS51 LnNpemUyW29mZnNldF0pOworKwkgIGJyZWFrOworKwljYXNlIDE6CisrCSAgQUNDRVNTIChkYXRh LnUuc2l6ZTFbb2Zmc2V0XSk7CisrCSAgYnJlYWs7CisrI3VuZGVmIEFDQ0VTUworKwlkZWZhdWx0 OgorKwkgIGFzc2VydCAoMCk7CisrCX0KKysgICAgICBzaXplID0gMDsKKysgICAgICBzaXplID0g c2l6ZTsgLyogc3RhcnRfYWdhaW4gKi8KKysgICAgfQorKyAgcmV0dXJuIDA7IC8qIGZpbmFsX3Jl dHVybiAqLworK30KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9p bnQtdW5hbGlnbmVkLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC11bmFs aWduZWQuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNmJkZDRi NmQwNQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBv aW50LXVuYWxpZ25lZC5leHAKK0BAIC0wLDAgKzEsMTg0IEBACisrIyBDb3B5cmlnaHQgMjAxNy0y MDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisr IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisrIworKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0c3Vp dGUuCisrCisrIyBUZXN0IGluc2VydGluZyByZWFkIHdhdGNocG9pbnRzIG9uIHVuYWxpZ25lZCBh ZGRyZXNzZXMuCisrCisrc3RhbmRhcmRfdGVzdGZpbGUKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0 aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9XSB9IHsKKysgICAgcmV0 dXJuIC0xCisrfQorKworK2lmICFbcnVudG9fbWFpbl0geworKyAgICB1bnRlc3RlZCAiY291bGQg bm90IHJ1biB0byBtYWluIgorKyAgICByZXR1cm4gLTEKKyt9CisrCisrZ2RiX2JyZWFrcG9pbnQg W2dkYl9nZXRfbGluZV9udW1iZXIgInN0YXJ0X2FnYWluIl0gIkJyZWFrcG9pbnQgJGRlY2ltYWwg YXQgJGhleCIgInN0YXJ0X2FnYWluIgorKworK3NldCBzaXplcyB7MSAyIDQgOH0KKythcnJheSBz ZXQgYWxpZ25lZGVuZCB7MSAxICAyIDIgIDMgNCAgNCA0ICA1IDggIDYgOCAgNyA4ICA4IDh9Cisr Cisrc2V0IHJ3YXRjaCAicndhdGNoIgorK3NldCByd2F0Y2hfZXhwICJIYXJkd2FyZSByZWFkIHdh dGNocG9pbnQiCisraWYge1tpc3RhcmdldCAiczM5MCotKi0qIl19IHsKKysgICAgIyBUYXJnZXQg ZG9lcyBub3Qgc3VwcG9ydCB0aGlzIHR5cGUgb2YgaGFyZHdhcmUgd2F0Y2hwb2ludC4iCisrICAg IHNldCByd2F0Y2ggIndhdGNoIgorKyAgICBzZXQgcndhdGNoX2V4cCAiSGFyZHdhcmUgd2F0Y2hw b2ludCIKKyt9CisrCisrZm9yZWFjaCB3cHNpemUgJHNpemVzIHsKKysgICAgZm9yIHtzZXQgd3Bv ZmZzZXQgMH0geyR3cG9mZnNldCA8IDggLyAkd3BzaXplfSB7aW5jciB3cG9mZnNldH0geworKwlz ZXQgd3BzdGFydCBbZXhwciAkd3BvZmZzZXQgKiAkd3BzaXplXQorKwlzZXQgd3BlbmQgW2V4cHIg KCR3cG9mZnNldCArIDEpICogJHdwc2l6ZV0KKysJc2V0IHdwZW5kYWxpZ25lZCAkYWxpZ25lZGVu ZCgkd3BlbmQpCisrCWZvcmVhY2ggcmRzaXplICRzaXplcyB7CisrCSAgICBmb3Ige3NldCByZG9m ZnNldCAwfSB7JHJkb2Zmc2V0IDwgOCAvICRyZHNpemV9IHtpbmNyIHJkb2Zmc2V0fSB7CisrCQlz ZXQgcmRzdGFydCBbZXhwciAkcmRvZmZzZXQgKiAkcmRzaXplXQorKwkJc2V0IHJkZW5kIFtleHBy ICgkcmRvZmZzZXQgKyAxKSAqICRyZHNpemVdCisrCQlzZXQgZXhwZWN0X2hpdCBbZXhwciBtYXgg KCR3cHN0YXJ0LCAkcmRzdGFydCkgPCBtaW4gKCR3cGVuZCwgJHJkZW5kKV0KKysJCXNldCB0ZXN0 ICIkcndhdGNoIGRhdGEudS5zaXplJHdwc2l6ZVxbJHdwb2Zmc2V0XF0iCisrCQlzZXQgd3BudW0g IiIKKysJCWdkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKKysJCSAgICAtcmUgIiRyd2F0 Y2hfZXhwIChcWzAtOVxdKyk6IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJCQlzZXQgd3BudW0g JGV4cGVjdF9vdXQoMSxzdHJpbmcpCisrCQkgICAgfQorKwkJICAgIC1yZSAiRXhwcmVzc2lvbiBj YW5ub3QgYmUgaW1wbGVtZW50ZWQgd2l0aCByZWFkL2FjY2VzcyB3YXRjaHBvaW50LlxyXG4kZ2Ri X3Byb21wdCAkIiB7CisrCQkJaWYgeyR3cHNpemUgPT0gOCAmJiBbaXN0YXJnZXQgImFybSotKi0q Il19IHsKKysJCQkgICAgdW50ZXN0ZWQgJHRlc3QKKysJCQkgICAgY29udGludWUKKysJCQl9Cisr CQkJZmFpbCAkdGVzdAorKwkJICAgIH0KKysJCX0KKysJCWdkYl90ZXN0X25vX291dHB1dCAic2V0 IHZhcmlhYmxlIHNpemUgPSAkcmRzaXplIiAiIgorKwkJZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQg dmFyaWFibGUgb2Zmc2V0ID0gJHJkb2Zmc2V0IiAiIgorKwkJc2V0IHRlc3QgImNvbnRpbnVlIgor KwkJc2V0IGdvdF9oaXQgMAorKwkJZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgeworKwkJ ICAgIC1yZSAiJHJ3YXRjaF9leHAgJHdwbnVtOi4qYWx1ZSA9IC4qXHJcbiRnZGJfcHJvbXB0ICQi IHsKKysJCQlzZXQgZ290X2hpdCAxCisrCQkJc2VuZF9nZGIgImNvbnRpbnVlXG4iCisrCQkJZXhw X2NvbnRpbnVlCisrCQkgICAgfQorKwkJICAgIC1yZSAiIHN0YXJ0X2FnYWluIC4qXHJcbiRnZGJf cHJvbXB0ICQiIHsKKysJCSAgICB9CisrCQl9CisrCQlnZGJfdGVzdF9ub19vdXRwdXQgImRlbGV0 ZSAkd3BudW0iICIiCisrCQlzZXQgdGVzdCAid3Aoc2l6ZT0kd3BzaXplIG9mZnNldD0kd3BvZmZz ZXQpIHJkKHNpemU9JHJkc2l6ZSBvZmZzZXQ9JHJkb2Zmc2V0KSBleHBlY3Q9JGV4cGVjdF9oaXQi CisrCQlpZiB7JGV4cGVjdF9oaXQgPT0gJGdvdF9oaXR9IHsKKysJCSAgICBwYXNzICR0ZXN0Cisr CQl9IGVsc2UgeworKwkJICAgICMgV2UgZG8gbm90IGtub3cgaWYgd2UgcnVuIG9uIGEgZml4ZWQg TGludXgga2VybmVsCisrCQkgICAgIyBvciBub3QuICBSZXBvcnQgWEZBSUwgb25seSBpbiB0aGUg RkFJTCBjYXNlLgorKwkJICAgIGlmIHskZXhwZWN0X2hpdCA9PSAwICYmICRyZHN0YXJ0IDwgJHdw ZW5kYWxpZ25lZH0geworKwkJCXNldHVwX3hmYWlsIGV4dGVybmFsLzIwMjA3ICJhYXJjaDY0Ki0q LWxpbnV4KiIKKysJCSAgICB9CisrCQkgICAgaWYgeyEkZXhwZWN0X2hpdCAmJiBbZXhwciBtYXgg KCR3cHN0YXJ0IC8gOCwgJHJkc3RhcnQgLyA4KSA8IG1pbiAoKCR3cGVuZCArIDcpIC8gOCwgKCRy ZGVuZCArIDcpIC8gOCldfSB7CisrCQkJc2V0dXBfeGZhaWwgYnJlYWtwb2ludHMvMjMxMzEgInBv d2VycGMqLSotKiIKKysJCSAgICB9CisrCQkgICAgZmFpbCAkdGVzdAorKwkJfQorKwkgICAgfQor Kwl9CisrICAgIH0KKyt9CisrCisrZm9yZWFjaCB3cGNvdW50IHs0IDd9IHsKKysgICAgYXJyYXkg c2V0IHdwb2Zmc2V0X3RvX3dwbnVtIHt9CisrICAgIGZvciB7c2V0IHdwb2Zmc2V0IDF9IHskd3Bv ZmZzZXQgPD0gJHdwY291bnR9IHtpbmNyIHdwb2Zmc2V0fSB7CisrCXNldCB0ZXN0ICIkcndhdGNo IGRhdGEudS5zaXplMVxbJHdwb2Zmc2V0XF0iCisrCXNldCB3cG51bSAiIgorKwlnZGJfdGVzdF9t dWx0aXBsZSAkdGVzdCAkdGVzdCB7CisrCSAgICAtcmUgIiRyd2F0Y2hfZXhwIChcWzAtOVxdKyk6 IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJCXNldCB3cG9mZnNldF90b193cG51bSgkd3BvZmZz ZXQpICRleHBlY3Rfb3V0KDEsc3RyaW5nKQorKwkgICAgfQorKwkgICAgLXJlICJUaGVyZSBhcmUg bm90IGVub3VnaCBhdmFpbGFibGUgaGFyZHdhcmUgcmVzb3VyY2VzIGZvciB0aGlzIHdhdGNocG9p bnQuXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJCWlmIHskd3BvZmZzZXQgPiAxfSB7CisrCQkgICAg c2V0dXBfeGZhaWwgYnJlYWtwb2ludHMvMjMxMzEgInBvd2VycGMqLSotKiIKKysJCSAgICBzZXR1 cF94ZmFpbCBicmVha3BvaW50cy8yMzEzMSAiYXJtKi0qLSoiCisrCQl9CisrCQlmYWlsICR0ZXN0 CisrCQlzZXQgd3BvZmZzZXRfdG9fd3BudW0oJHdwb2Zmc2V0KSAwCisrCSAgICB9CisrCX0KKysg ICAgfQorKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInNldCB2YXJpYWJsZSBzaXplID0gMSIgIiIK KysgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgdmFyaWFibGUgb2Zmc2V0ID0gMSIgIiIKKysg ICAgc2V0IHRlc3QgImNvbnRpbnVlIgorKyAgICBzZXQgZ290X2hpdCAwCisrICAgIGdkYl90ZXN0 X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKKysJLXJlICJcclxuQ291bGQgbm90IGluc2VydCBoYXJk d2FyZSB3YXRjaHBvaW50IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJfQorKwktcmUgIiRyd2F0 Y2hfZXhwICR3cG9mZnNldF90b193cG51bSgxKTouKmFsdWUgPSAuKlxyXG4kZ2RiX3Byb21wdCAk IiB7CisrCSAgICBzZXQgZ290X2hpdCAxCisrCSAgICBzZW5kX2dkYiAiY29udGludWVcbiIKKysJ ICAgIGV4cF9jb250aW51ZQorKwl9CisrCS1yZSAiIHN0YXJ0X2FnYWluIC4qXHJcbiRnZGJfcHJv bXB0ICQiIHsKKysJfQorKyAgICB9CisrICAgIGZvciB7c2V0IHdwb2Zmc2V0IDF9IHskd3BvZmZz ZXQgPD0gJHdwY291bnR9IHtpbmNyIHdwb2Zmc2V0fSB7CisrCWlmIHskd3BvZmZzZXRfdG9fd3Bu dW0oJHdwb2Zmc2V0KX0geworKwkgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJkZWxldGUgJHdwb2Zm c2V0X3RvX3dwbnVtKCR3cG9mZnNldCkiICIiCisrCX0KKysgICAgfQorKyAgICBzZXQgdGVzdCAi d3Bjb3VudCgkd3Bjb3VudCkiCisrICAgIGlmIHshJHdwb2Zmc2V0X3RvX3dwbnVtKFtleHByICR3 cGNvdW50IC0gMV0pfSB7CisrCXVudGVzdGVkICR0ZXN0CisrCWNvbnRpbnVlCisrICAgIH0KKysg ICAgaWYgeyR3cGNvdW50ID4gNH0geworKwlpZiB7IVtpc3RhcmdldCAiczM5MCotKi0qIl19IHsK KysJICAgIHNldHVwX2tmYWlsIHRkZXAvMjIzODkgKi0qLSoKKysJfQorKyAgICB9CisrICAgIGdk Yl9hc3NlcnQgJGdvdF9oaXQgJHRlc3QKKyt9CisrCisraWYgIVtydW50b19tYWluXSB7CisrICAg IHJldHVybiAtMQorK30KKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiZmlu YWxfcmV0dXJuIl0gIkJyZWFrcG9pbnQgJGRlY2ltYWwgYXQgJGhleCIgImZpbmFsX3JldHVybiIK KytzZXQgdGVzdCB7d2F0Y2ggZGF0YS51LnNpemU4dHdpY2VbMV19Cisrc2V0IHdwbnVtICIiCisr Z2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgeworKyAgICAtcmUgIkhhcmR3YXJlIHdhdGNo cG9pbnQgKFxbMC05XF0rKTogLipcclxuJGdkYl9wcm9tcHQgJCIgeworKwlzZXQgd3BudW0gJGV4 cGVjdF9vdXQoMSxzdHJpbmcpCisrICAgIH0KKysgICAgLXJlICJXYXRjaHBvaW50IChcWzAtOVxd Kyk6IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJaWYge1tpc3RhcmdldCAiYXJtKi0qLSoiXX0g eworKwkgICAgdW50ZXN0ZWQgJHRlc3QKKysJICAgIHNldCB3cG51bSAwCisrCX0KKysgICAgfQor K30KKytpZiB7JHdwbnVtfSB7CisrICAgIHNldCB0ZXN0ICJjb250aW51ZSIKKysgICAgc2V0IGdv dF9oaXQgMAorKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7CisrCS1yZSAiXHJc bkNvdWxkIG5vdCBpbnNlcnQgaGFyZHdhcmUgd2F0Y2hwb2ludCAuKlxyXG4kZ2RiX3Byb21wdCAk IiB7CisrCX0KKysJLXJlICJIYXJkd2FyZSB3YXRjaHBvaW50ICR3cG51bTouKk5ldyB2YWx1ZSA9 IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJICAgIHNldCBnb3RfaGl0IDEKKysJICAgIHNlbmRf Z2RiICJjb250aW51ZVxuIgorKwkgICAgZXhwX2NvbnRpbnVlCisrCX0KKysJLXJlICIgZmluYWxf cmV0dXJuIC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJfQorKyAgICB9CisrICAgIGdkYl9hc3Nl cnQgJGdvdF9oaXQgInNpemU4dHdpY2Ugd3JpdGUiCisrfQorZGlmZiAtLWdpdCBhL2dkYi91dGls cy5jIGIvZ2RiL3V0aWxzLmMKK2luZGV4IDU4YzAzODBkMTcuLjI2ZWM5ZjFlZTggMTAwNjQ0Cist LS0gYS9nZGIvdXRpbHMuYworKysrIGIvZ2RiL3V0aWxzLmMKK0BAIC0zMDEwLDIyICszMDEwLDYg QEAgZ2RiX2Fic3BhdGggKGNvbnN0IGNoYXIgKnBhdGgpCisgCSAgICAgcGF0aCwgKGNoYXIgKikg TlVMTCkpOworIH0KKyAKKy1VTE9OR0VTVAorLWFsaWduX3VwIChVTE9OR0VTVCB2LCBpbnQgbikK Ky17CistICAvKiBDaGVjayB0aGF0IE4gaXMgcmVhbGx5IGEgcG93ZXIgb2YgdHdvLiAgKi8KKy0g IGdkYl9hc3NlcnQgKG4gJiYgKG4gJiAobi0xKSkgPT0gMCk7CistICByZXR1cm4gKHYgKyBuIC0g MSkgJiAtbjsKKy19CistCistVUxPTkdFU1QKKy1hbGlnbl9kb3duIChVTE9OR0VTVCB2LCBpbnQg bikKKy17CistICAvKiBDaGVjayB0aGF0IE4gaXMgcmVhbGx5IGEgcG93ZXIgb2YgdHdvLiAgKi8K Ky0gIGdkYl9hc3NlcnQgKG4gJiYgKG4gJiAobi0xKSkgPT0gMCk7CistICByZXR1cm4gKHYgJiAt bik7CistfQorLQorIC8qIEFsbG9jYXRpb24gZnVuY3Rpb24gZm9yIHRoZSBsaWJpYmVydHkgaGFz aCB0YWJsZSB3aGljaCB1c2VzIGFuCisgICAgb2JzdGFjay4gIFRoZSBvYnN0YWNrIGlzIHBhc3Nl ZCBhcyBEQVRBLiAgKi8KKyAKK2RpZmYgLS1naXQgYS9nZGIvdXRpbHMuaCBiL2dkYi91dGlscy5o CitpbmRleCBiMjM0NzYyOTI5Li5kMDFkMjgzYmFhIDEwMDY0NAorLS0tIGEvZ2RiL3V0aWxzLmgK KysrKyBiL2dkYi91dGlscy5oCitAQCAtNDk4LDM4ICs0OTgsNiBAQCBleHRlcm4gcGlkX3Qgd2Fp dF90b19kaWVfd2l0aF90aW1lb3V0IChwaWRfdCBwaWQsIGludCAqc3RhdHVzLCBpbnQgdGltZW91 dCk7CisgCisgZXh0ZXJuIGludCBteXJlYWQgKGludCwgY2hhciAqLCBpbnQpOworIAorLS8qIEVu c3VyZSB0aGF0IFYgaXMgYWxpZ25lZCB0byBhbiBOIGJ5dGUgYm91bmRhcnkgKEIncyBhc3N1bWVk IHRvIGJlIGEKKy0gICBwb3dlciBvZiAyKS4gIFJvdW5kIHVwL2Rvd24gd2hlbiBuZWNlc3Nhcnku ICBFeGFtcGxlcyBvZiBjb3JyZWN0CistICAgdXNlIGluY2x1ZGU6CistCistICAgYWRkciA9IGFs aWduX3VwIChhZGRyLCA4KTsgLS0gVkFMVUUgbmVlZHMgOCBieXRlIGFsaWdubWVudAorLSAgIHdy aXRlX21lbW9yeSAoYWRkciwgdmFsdWUsIGxlbik7CistICAgYWRkciArPSBsZW47CistCistICAg YW5kOgorLQorLSAgIHNwID0gYWxpZ25fZG93biAoc3AgLSBsZW4sIDE2KTsgLS0gS2VlcCBTUCAx NiBieXRlIGFsaWduZWQKKy0gICB3cml0ZV9tZW1vcnkgKHNwLCB2YWx1ZSwgbGVuKTsKKy0KKy0g ICBOb3RlIHRoYXQgdXNlcyBzdWNoIGFzOgorLQorLSAgIHdyaXRlX21lbW9yeSAoYWRkciwgdmFs dWUsIGxlbik7CistICAgYWRkciArPSBhbGlnbl91cCAobGVuLCA4KTsKKy0KKy0gICBhbmQ6Cist CistICAgc3AgLT0gYWxpZ25fdXAgKGxlbiwgOCk7CistICAgd3JpdGVfbWVtb3J5IChzcCwgdmFs dWUsIGxlbik7CistCistICAgYXJlIHR5cGljYWxseSBub3QgY29ycmVjdCBhcyB0aGV5IGRvbid0 IGVuc3VyZSB0aGF0IHRoZSBhZGRyZXNzIChTUAorLSAgIG9yIEFERFIpIGlzIGNvcnJlY3RseSBh bGlnbmVkIChyZWx5aW5nIG9uIHByZXZpb3VzIGFsaWdubWVudCB0bworLSAgIGtlZXAgdGhpbmdz IHJpZ2h0KS4gIFRoaXMgaXMgYWxzbyB3aHkgdGhlIG1ldGhvZHMgYXJlIGNhbGxlZAorLSAgICJh bGlnbl8uLi4iIGluc3RlYWQgb2YgInJvdW5kXy4uLiIgYXMgdGhlIGxhdHRlciByZWFkcyBiZXR0 ZXIgd2l0aAorLSAgIHRoaXMgaW5jb3JyZWN0IGNvZGluZyBzdHlsZS4gICovCistCistZXh0ZXJu IFVMT05HRVNUIGFsaWduX3VwIChVTE9OR0VTVCB2LCBpbnQgbik7CistZXh0ZXJuIFVMT05HRVNU IGFsaWduX2Rvd24gKFVMT05HRVNUIHYsIGludCBuKTsKKy0KKyAvKiBSZXNvdXJjZSBsaW1pdHMg dXNlZCBieSBnZXRybGltaXQgYW5kIHNldHJsaW1pdC4gICovCisgCisgZW51bSByZXNvdXJjZV9s aW1pdF9raW5kCistLSAKKzIuMTQuMworCg==