From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 108070 invoked by alias); 23 May 2017 14:31:16 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 108014 invoked by uid 89); 23 May 2017 14:31:14 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-10.9 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_2,GIT_PATCH_3,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy=Hx-spam-relays-external:sk:HE1EUR0, daniels, H*RU:sk:HE1EUR0, H*r:sk:HE1EUR0 X-HELO: EUR02-VE1-obe.outbound.protection.outlook.com Received: from mail-oln040092069086.outbound.protection.outlook.com (HELO EUR02-VE1-obe.outbound.protection.outlook.com) (40.92.69.86) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 23 May 2017 14:31:10 +0000 Received: from HE1EUR02FT040.eop-EUR02.prod.protection.outlook.com (10.152.10.51) by HE1EUR02HT174.eop-EUR02.prod.protection.outlook.com (10.152.11.234) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.1075.5; Tue, 23 May 2017 14:31:10 +0000 Received: from AM4PR0701MB2162.eurprd07.prod.outlook.com (10.152.10.55) by HE1EUR02FT040.mail.protection.outlook.com (10.152.11.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1075.5 via Frontend Transport; Tue, 23 May 2017 14:31:10 +0000 Received: from AM4PR0701MB2162.eurprd07.prod.outlook.com ([fe80::2073:585b:84f6:9881]) by AM4PR0701MB2162.eurprd07.prod.outlook.com ([fe80::2073:585b:84f6:9881%17]) with mapi id 15.01.1124.007; Tue, 23 May 2017 14:31:10 +0000 From: Bernd Edlinger To: Uros Bizjak CC: Daniel Santos , gcc-patches Subject: [PATCH] [i386] Recompute the frame layout less often Date: Tue, 23 May 2017 14:34:00 -0000 Message-ID: References: <9aa7427e-6cfc-b603-2ec4-1f0e02ae294d@pobox.com> <20c96fa0-328b-af1a-c558-dab6652c482e@pobox.com> <8d8b4700-98eb-aaa8-7718-d603cae106e8@pobox.com> <64f15ee1-da2d-0604-2fb4-8e5fdc435c34@pobox.com> In-Reply-To: authentication-results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=hotmail.de; x-incomingtopheadermarker: OriginalChecksum:A479718EF45F3EF343C780513D8924F02CB872825DE49E9799A15C84529420D8;UpperCasedChecksum:E7A2950DCABDA44156EB29134BFCA9BB3293F44995AB5FD49B708891AA17E13E;SizeAsReceived:9218;Count:43 x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;HE1EUR02HT174;5:x4RLTdOMUUfm7oxbi6NcDxEWD/dahdB4FvAuW5iVXJhseLMD9DnqU58k4NExM0yZ+dFOgq2E4kYyeJzVSHYhskkyJXi2kYFBst9mif+bfnj+wP+ZBxZf5ihbRVuHhofzrFqgRoCi91KBP6yLRa9Olg==;24:1aeCzPFClVPPmM7ZnXjVU0W9BDaUqWwDZcmSvzzQ+FayOloPffeMqRPNIY+/hrUZhP12mXEP+Ij/ukxA6Z9SFP9JWZZHTc25VRFs9mFVLKc=;7:pXOnqbTLhQU+gG97aS6PTHeeM8wDYfGNqS7UB29v8q05DuLCIBe62+EuqS35gnJFnG55p3T5PPWvo6w5Wg80veUXxrVoErzD3fe6XiAX0+M7D9RAu4+RHhjs6PPneP2XdklcnJmT9zA2lcB+mbcwlzzH5VRjgHqCV/7cLmLhqA2Vzq3O9tvDs39e6UQ7A1tr5AJNAC4qSHJ0b0QlwzQ7CXNn3eaepMdbPRB4dunN7agfdFG5co1OJLhStBPvLyOks7gpFmltkP+031Kg2HVgXcsFNVGtNQS8viUpx+YbGa4Ew63xXTYviUAL1vY/D1HO x-incomingheadercount: 43 x-eopattributedmessage: 0 x-forefront-antispam-report: EFV:NLI;SFV:NSPM;SFS:(7070007)(98901004);DIR:OUT;SFP:1901;SCL:1;SRVR:HE1EUR02HT174;H:AM4PR0701MB2162.eurprd07.prod.outlook.com;FPR:;SPF:None;LANG:en; x-ms-office365-filtering-correlation-id: 24581cf7-c041-437b-2cad-08d4a1e85a66 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201702061074)(5061506573)(5061507331)(1603103135)(2017031320274)(2017031324274)(2017031323274)(2017031322274)(1601125374)(1603101448)(1701031045);SRVR:HE1EUR02HT174; x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(444000031);SRVR:HE1EUR02HT174;BCL:0;PCL:0;RULEID:;SRVR:HE1EUR02HT174; x-forefront-prvs: 0316567485 spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: multipart/mixed; boundary="_003_AM4PR0701MB21622506F222F3D42C56F611E4F90AM4PR0701MB2162_" MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-originalarrivaltime: 23 May 2017 14:31:10.0181 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1EUR02HT174 X-SW-Source: 2017-05/txt/msg01759.txt.bz2 --_003_AM4PR0701MB21622506F222F3D42C56F611E4F90AM4PR0701MB2162_ Content-Type: text/plain; charset="utf-8" Content-ID: <7A304EAFBA22CF4DB2B3CD1B92AE3ACD@eurprd07.prod.outlook.com> Content-Transfer-Encoding: base64 Content-length: 497 SGksDQoNCnRoaXMgaXMgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIG15IHBhdGNo Lg0KDQpBcyBhbHJlYWR5IHNhaWQsIGl0IGF0dGVtcHRzIHRvIGNvbXB1dGUN CnRoZSBmcmFtZSBsYXlvdXQgb25seSB3aGVuIHJlbGV2YW50IGRhdGEgaGF2 ZQ0KY2hhbmdlZC4NCg0KQXBvbG9naWVzIGZvciBkb2luZyBtb3JlIGNsZWFu LXVwIG9uIERhbmllbCdzDQpwYXRjaCB0aGFuIGFic29sdXRlbHkgbmVjZXNz YXJ5LCBidXQgLi4uDQoNCkJvb3RzdHJhcCBhbmQgcmVnLXRlc3RlZCBzdWNj ZXNzZnVsbHkgb24NCng4Nl82NC1wYy1saW51eC1nbnUgd2l0aCB1bml4XHss LW0zMlx9Lg0KSXMgaXQgT0sgZm9yIHRydW5rPw0KDQoNClRoYW5rcw0KQmVy bmQuDQo= --_003_AM4PR0701MB21622506F222F3D42C56F611E4F90AM4PR0701MB2162_ Content-Type: text/plain; name="changelog-frame-layout-i386.txt" Content-Description: changelog-frame-layout-i386.txt Content-Disposition: attachment; filename="changelog-frame-layout-i386.txt"; size=2020; creation-date="Tue, 23 May 2017 14:31:08 GMT"; modification-date="Tue, 23 May 2017 14:31:08 GMT" Content-ID: Content-Transfer-Encoding: base64 Content-length: 2741 MjAxNy0wNS0yMyAgQmVybmQgRWRsaW5nZXIgIDxiZXJuZC5lZGxpbmdlckBo b3RtYWlsLmRlPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jICh4ODZfNjRfbXNf c3lzdl9leHRyYV9jbG9iYmVyZWRfcmVnaXN0ZXJzKTogTWFrZQoJc3RhdGlj LgoJKHhsb2d1ZV9sYXlvdXQ6OmdldF9zdGFja19zcGFjZV91c2VkLCB4bG9n dWVfbGF5b3V0OjpzX2luc3RhbmNlcywKCXhsb2d1ZV9sYXlvdXQ6OmdldF9p bnN0YW5jZSwgbG9ndWVfbGF5b3V0Ojp4bG9ndWVfbGF5b3V0LAoJc3BfdmFs aWRfYXQsIGZwX3ZhbGlkX2F0LCBjaG9vc2VfYmFzZXJlZyk6IEZvcm1hdHRp bmcuCgkoeGxvZ3VlX2xheW91dDo6Z2V0X3N0dWJfcnR4KTogTWFrZSBzdGF0 aWMuCgkoeGxvZ3VlX2xheW91dDo6Z2V0X3N0dWJfbmFtZSk6IEF2b2lkIGNv bnN0LWNhc3QsIG1ha2Ugc3RhdGljLgoJKHhsb2d1ZV9sYXlvdXQ6OmNvbXB1 dGVfc3R1Yl9tYW5hZ2VkX3JlZ3MpOiBSZW5hbWUgdG8uLi4KCSh4bG9ndWVf bGF5b3V0Ojpjb3VudF9zdHViX21hbmFnZWRfcmVncyk6IC4uLnRoaXMuCgko eGxvZ3VlX2xheW91dDo6aXNfc3R1Yl9tYW5hZ2VkX3JlZyk6IE5ldyBmdW5j dGlvbi4KCSh4bG9ndWVfbGF5b3V0OjptX3N0dWJfbmFtZXMpOiBSZW5hbWUg dG8uLi4KCSh4bG9ndWVfbGF5b3V0OjpzX3N0dWJfbmFtZXMpOiAuLi50aGlz LCBtYWtlIHN0YXRpYy4KCSh4bG9ndWVfbGF5b3V0OjpTVFVCX0lOREVYX09G RlNFVCwgeGxvZ3VlX2xheW91dDo6TUlOX1JFR1MsCgl4bG9ndWVfbGF5b3V0 OjpNQVhfUkVHUywgeGxvZ3VlX2xheW91dDo6TUFYX0VYVFJBX1JFR1MsCgl4 bG9ndWVfbGF5b3V0OjpWQVJJQU5UX0NPVU5ULCB4bG9ndWVfbGF5b3V0OjpT VFVCX05BTUVfTUFYX0xFTiwKCXhsb2d1ZV9sYXlvdXQ6OnNfc3R1Yl9uYW1l cyk6IEluc3RhbnRpYXRlIHN0YXRpY3MuCgkoc3R1Yl9tYW5hZ2VkX3JlZ3Mp OiBSZW1vdmUuCgkoaXg4Nl9zYXZlX3JlZyk6IFVzZSB4bG9ndWVfbGF5b3V0 Ojpjb21wdXRlX3N0dWJfbWFuYWdlZF9yZWdzLgoJKGRpc2FibGVfY2FsbF9t czJzeXN2X3hsb2d1ZXMpOiBSZW5hbWUgdG8uLi4KCSh3YXJuX29uY2VfY2Fs bF9tczJzeXN2X3hsb2d1ZXMpOiAuLi50aGlzLCBhbmQgd2FybiBvbmx5IG9u Y2UuCgkoaXg4Nl9pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCwgaXg4Nl9l eHBhbmRfY2FsbCk6IEZpeCBjYWxsX21zMnN5c3YKCXdhcm5pbmcgbG9naWMu CgkoaXg4Nl9zdGF0aWNfY2hhaW4pOiBNYWtlIHN1cmUgdGhhdCBpeDg2X3N0 YXRpY19jaGFpbl9vbl9zdGFjayBjYW4ndAoJY2hhbmdlIGFmdGVyIHJlbG9h ZF9jb21wbGV0ZWQuCgkoaXg4Nl9jYW5fdXNlX3JldHVybl9pbnNuX3ApOiBV c2UgdGhlIGl4ODZfZnJhbWUgZGF0YSBzdHJ1Y3R1cmUKCWRpcmVjdGx5LgoJ KGl4ODZfZXhwYW5kX3Byb2xvZ3VlKTogTGlrZXdpc2UuCgkoaXg4Nl9leHBh bmRfZXBpbG9ndWUpOiBMaWtld2lzZS4KCShpeDg2X2V4cGFuZF9zcGxpdF9z dGFja19wcm9sb2d1ZSk6IExpa2V3aXNlLgoJKGl4ODZfY29tcHV0ZV9mcmFt ZV9sYXlvdXQpOiBSZW1vdmUgZnJhbWUgcGFyYW1ldGVyIC4uLgoJKFRBUkdF VF9DT01QVVRFX0ZSQU1FX0xBWU9VVCk6IC4uLiBhbmQgZXhwb3J0IGl0IGFz IGEgdGFyZ2V0IGhvb2suCgkoaXg4Nl9maW5hbGl6ZV9zdGFja19yZWFsaWdu X2ZsYWdzKTogQ2FsbCBpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0Cglvbmx5 IGlmIG5lY2Vzc2FyeS4KCShpeDg2X2luaXRfbWFjaGluZV9zdGF0dXMpOiBE b24ndCBzZXQgdXNlX2Zhc3RfcHJvbG9ndWVfZXBpbG9ndWVfbnJlZ3MuCgko aXg4Nl9mcmFtZSk6IE1vdmUgZnJvbSBoZXJlIC4uLgoJKiBjb25maWcvaTM4 Ni9pMzg2LmggKGl4ODZfZnJhbWUpOiAuLi4gdG8gaGVyZS4KCShtYWNoaW5l X2Z1bmN0aW9uKTogUmVtb3ZlIHVzZV9mYXN0X3Byb2xvZ3VlX2VwaWxvZ3Vl X25yZWdzLCBjYWNoZSB0aGUKCWNvbXBsZXRlIGl4ODZfZnJhbWUgZGF0YSBz dHJ1Y3R1cmUgaW5zdGVhZC4gIFJlbW92ZSBzb21lX2xkX25hbWUuCg== --_003_AM4PR0701MB21622506F222F3D42C56F611E4F90AM4PR0701MB2162_ Content-Type: text/x-patch; name="patch-frame-layout-i386.diff" Content-Description: patch-frame-layout-i386.diff Content-Disposition: attachment; filename="patch-frame-layout-i386.diff"; size=26252; creation-date="Tue, 23 May 2017 14:31:08 GMT"; modification-date="Tue, 23 May 2017 14:31:08 GMT" Content-ID: Content-Transfer-Encoding: base64 Content-length: 35588 SW5kZXg6IGdjYy9jb25maWcvaTM4Ni9pMzg2LmMNCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0NCi0tLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5jCShyZXZpc2lv biAyNDgzNDEpDQorKysgZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwkod29ya2lu ZyBjb3B5KQ0KQEAgLTI0MjUsNyArMjQyNSw5IEBAIHN0YXRpYyBpbnQgY29u c3QgeDg2XzY0X2ludF9yZXR1cm5fcmVnaXN0ZXJzWzRdID0NCiANCiAvKiBB ZGRpdGlvbmFsIHJlZ2lzdGVycyB0aGF0IGFyZSBjbG9iYmVyZWQgYnkgU1lT ViBjYWxscy4gICovDQogDQotdW5zaWduZWQgY29uc3QgeDg2XzY0X21zX3N5 c3ZfZXh0cmFfY2xvYmJlcmVkX3JlZ2lzdGVyc1sxMl0gPQ0KKyNkZWZpbmUg TlVNX1g4Nl82NF9NU19DTE9CQkVSRURfUkVHUyAxMg0KK3N0YXRpYyBpbnQg Y29uc3QgeDg2XzY0X21zX3N5c3ZfZXh0cmFfY2xvYmJlcmVkX3JlZ2lzdGVy cw0KKwkJIFtOVU1fWDg2XzY0X01TX0NMT0JCRVJFRF9SRUdTXSA9DQogew0K ICAgU0lfUkVHLCBESV9SRUcsDQogICBYTU02X1JFRywgWE1NN19SRUcsDQpA QCAtMjQ3MiwyNSArMjQ3NCwyNiBAQCBjbGFzcyB4bG9ndWVfbGF5b3V0IHsN CiAgICAgcmV0dXJuIG1fcmVnc1tyZWddOw0KICAgfQ0KIA0KLSAgY29uc3Qg Y2hhciAqZ2V0X3N0dWJfbmFtZSAoZW51bSB4bG9ndWVfc3R1YiBzdHViLA0K LQkJCSAgICAgdW5zaWduZWQgbl9leHRyYV9hcmdzKSBjb25zdDsNCisgIHN0 YXRpYyBjb25zdCBjaGFyICpnZXRfc3R1Yl9uYW1lIChlbnVtIHhsb2d1ZV9z dHViIHN0dWIsDQorCQkJCSAgICB1bnNpZ25lZCBuX2V4dHJhX2FyZ3MpOw0K Kw0KICAgLyogUmV0dXJucyBhbiBydHggZm9yIHRoZSBzdHViJ3Mgc3ltYm9s IGJhc2VkIHVwb24NCiAgICAgICAgMS4pIHRoZSBzcGVjaWZpZWQgc3R1YiAo c2F2ZSwgcmVzdG9yZSBvciByZXN0b3JlX3JldCkgYW5kDQogICAgICAgIDIu KSB0aGUgdmFsdWUgb2YgY2Z1bi0+bWFjaGluZS0+Y2FsbF9tczJzeXN2X2V4 dHJhX3JlZ3MgYW5kDQogICAgICAgIDMuKSByYXRoZXIgb3Igbm90IHN0YWNr IGFsaWdubWVudCBpcyBiZWluZyBwZXJmb3JtZWQuICAqLw0KLSAgcnR4IGdl dF9zdHViX3J0eCAoZW51bSB4bG9ndWVfc3R1YiBzdHViKSBjb25zdDsNCisg IHN0YXRpYyBydHggZ2V0X3N0dWJfcnR4IChlbnVtIHhsb2d1ZV9zdHViIHN0 dWIpOw0KIA0KICAgLyogUmV0dXJucyB0aGUgYW1vdW50IG9mIHN0YWNrIHNw YWNlIChpbmNsdWRpbmcgcGFkZGluZykgdGhhdCB0aGUgc3R1Yg0KICAgICAg bmVlZHMgdG8gc3RvcmUgcmVnaXN0ZXJzIGJhc2VkIHVwb24gZGF0YSBpbiB0 aGUgbWFjaGluZV9mdW5jdGlvbi4gICovDQogICBIT1NUX1dJREVfSU5UIGdl dF9zdGFja19zcGFjZV91c2VkICgpIGNvbnN0DQogICB7DQotICAgIGNvbnN0 IHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uICZtID0gKmNmdW4tPm1hY2hpbmU7 DQotICAgIHVuc2lnbmVkIGxhc3RfcmVnID0gbS5jYWxsX21zMnN5c3ZfZXh0 cmFfcmVncyArIE1JTl9SRUdTIC0gMTsNCisgICAgY29uc3Qgc3RydWN0IG1h Y2hpbmVfZnVuY3Rpb24gKm0gPSBjZnVuLT5tYWNoaW5lOw0KKyAgICB1bnNp Z25lZCBsYXN0X3JlZyA9IG0tPmNhbGxfbXMyc3lzdl9leHRyYV9yZWdzICsg TUlOX1JFR1MgLSAxOw0KIA0KLSAgICBnY2NfYXNzZXJ0IChtLmNhbGxfbXMy c3lzdl9leHRyYV9yZWdzIDw9IE1BWF9FWFRSQV9SRUdTKTsNCisgICAgZ2Nj X2Fzc2VydCAobS0+Y2FsbF9tczJzeXN2X2V4dHJhX3JlZ3MgPD0gTUFYX0VY VFJBX1JFR1MpOw0KICAgICByZXR1cm4gbV9yZWdzW2xhc3RfcmVnXS5vZmZz ZXQNCi0JICAgICsgKG0uY2FsbF9tczJzeXN2X3BhZF9vdXQgPyA4IDogMCkN Ci0JICAgICsgU1RVQl9JTkRFWF9PRkZTRVQ7DQorCSAgICsgKG0tPmNhbGxf bXMyc3lzdl9wYWRfb3V0ID8gOCA6IDApDQorCSAgICsgU1RVQl9JTkRFWF9P RkZTRVQ7DQogICB9DQogDQogICAvKiBSZXR1cm5zIHRoZSBvZmZzZXQgZm9y IHRoZSBiYXNlIHBvaW50ZXIgdXNlZCBieSB0aGUgc3R1Yi4gICovDQpAQCAt MjUwMCw3ICsyNTAzLDggQEAgY2xhc3MgeGxvZ3VlX2xheW91dCB7DQogICB9 DQogDQogICBzdGF0aWMgY29uc3Qgc3RydWN0IHhsb2d1ZV9sYXlvdXQgJmdl dF9pbnN0YW5jZSAoKTsNCi0gIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlX3N0 dWJfbWFuYWdlZF9yZWdzIChIQVJEX1JFR19TRVQgJnN0dWJfbWFuYWdlZF9y ZWdzKTsNCisgIHN0YXRpYyB1bnNpZ25lZCBjb3VudF9zdHViX21hbmFnZWRf cmVncyAoKTsNCisgIHN0YXRpYyBib29sIGlzX3N0dWJfbWFuYWdlZF9yZWcg KHVuc2lnbmVkIHJlZ25vLCB1bnNpZ25lZCBjb3VudCk7DQogDQogICBzdGF0 aWMgY29uc3QgSE9TVF9XSURFX0lOVCBTVFVCX0lOREVYX09GRlNFVCA9IDB4 NzA7DQogICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTUlOX1JFR1MgPSBOVU1f WDg2XzY0X01TX0NMT0JCRVJFRF9SRUdTOw0KQEAgLTI1MzAsOSArMjUzNCwx MCBAQCBjbGFzcyB4bG9ndWVfbGF5b3V0IHsNCiAgIHN0cnVjdCByZWdpbmZv IG1fcmVnc1tNQVhfUkVHU107DQogDQogICAvKiBMYXp5LWluaXRlZCBjYWNo ZSBvZiBzeW1ib2wgbmFtZXMgZm9yIHN0dWJzLiAgKi8NCi0gIGNoYXIgbV9z dHViX25hbWVzW1hMT0dVRV9TVFVCX0NPVU5UXVtWQVJJQU5UX0NPVU5UXVtT VFVCX05BTUVfTUFYX0xFTl07DQorICBzdGF0aWMgY2hhciBzX3N0dWJfbmFt ZXNbWExPR1VFX1NUVUJfQ09VTlRdW1ZBUklBTlRfQ09VTlRdDQorCQkJICBb U1RVQl9OQU1FX01BWF9MRU5dOw0KIA0KLSAgc3RhdGljIGNvbnN0IHN0cnVj dCB4bG9ndWVfbGF5b3V0IEdUWSgoKSkgc19pbnN0YW5jZXNbWExPR1VFX1NF VF9DT1VOVF07DQorICBzdGF0aWMgY29uc3QgeGxvZ3VlX2xheW91dCBzX2lu c3RhbmNlc1tYTE9HVUVfU0VUX0NPVU5UXTsNCiB9Ow0KIA0KIGNvbnN0IGNo YXIgKiBjb25zdCB4bG9ndWVfbGF5b3V0OjpTVFVCX0JBU0VfTkFNRVNbWExP R1VFX1NUVUJfQ09VTlRdID0gew0KQEAgLTI1NzIsOSArMjU3NywyMCBAQCBj b25zdCB1bnNpZ25lZCB4bG9ndWVfbGF5b3V0OjpSRUdfT1JERVJbeGxvZ3Vl X2xheQ0KICAgICBSMTVfUkVHLAkvKiAweGUwCQkweGU4CQkweGQ4CQkweGUw CSovDQogfTsNCiANCisvKiBJbnN0YW50aWF0ZSBzdGF0aWMgY29uc3QgdmFs dWVzLiAgKi8NCitjb25zdCBIT1NUX1dJREVfSU5UIHhsb2d1ZV9sYXlvdXQ6 OlNUVUJfSU5ERVhfT0ZGU0VUOw0KK2NvbnN0IHVuc2lnbmVkIHhsb2d1ZV9s YXlvdXQ6Ok1JTl9SRUdTOw0KK2NvbnN0IHVuc2lnbmVkIHhsb2d1ZV9sYXlv dXQ6Ok1BWF9SRUdTOw0KK2NvbnN0IHVuc2lnbmVkIHhsb2d1ZV9sYXlvdXQ6 Ok1BWF9FWFRSQV9SRUdTOw0KK2NvbnN0IHVuc2lnbmVkIHhsb2d1ZV9sYXlv dXQ6OlZBUklBTlRfQ09VTlQ7DQorY29uc3QgdW5zaWduZWQgeGxvZ3VlX2xh eW91dDo6U1RVQl9OQU1FX01BWF9MRU47DQorDQorLyogSW5pdGlhbGl6ZSB4 bG9ndWVfbGF5b3V0OjpzX3N0dWJfbmFtZXMgdG8gemVyby4gICovDQorY2hh ciB4bG9ndWVfbGF5b3V0OjpzX3N0dWJfbmFtZXNbWExPR1VFX1NUVUJfQ09V TlRdW1ZBUklBTlRfQ09VTlRdDQorCQkJCVtTVFVCX05BTUVfTUFYX0xFTl07 DQorDQogLyogSW5zdGFudGlhdGVzIGFsbCB4bG9ndWVfbGF5b3V0IGluc3Rh bmNlcy4gICovDQotY29uc3Qgc3RydWN0IHhsb2d1ZV9sYXlvdXQgR1RZKCgp KQ0KLXhsb2d1ZV9sYXlvdXQ6OnNfaW5zdGFuY2VzW1hMT0dVRV9TRVRfQ09V TlRdID0gew0KK2NvbnN0IHhsb2d1ZV9sYXlvdXQgeGxvZ3VlX2xheW91dDo6 c19pbnN0YW5jZXNbWExPR1VFX1NFVF9DT1VOVF0gPSB7DQogICB4bG9ndWVf bGF5b3V0ICgwLCBmYWxzZSksDQogICB4bG9ndWVfbGF5b3V0ICg4LCBmYWxz ZSksDQogICB4bG9ndWVfbGF5b3V0ICgwLCB0cnVlKSwNCkBAIC0yNTgzLDcg KzI1OTksOCBAQCBjb25zdCB1bnNpZ25lZCB4bG9ndWVfbGF5b3V0OjpSRUdf T1JERVJbeGxvZ3VlX2xheQ0KIA0KIC8qIFJldHVybiBhbiBhcHByb3ByaWF0 ZSBjb25zdCBpbnN0YW5jZSBvZiB4bG9ndWVfbGF5b3V0IGJhc2VkIHVwb24g dmFsdWVzDQogICAgaW4gY2Z1bi0+bWFjaGluZSBhbmQgY3J0bC4gICovDQot Y29uc3Qgc3RydWN0IHhsb2d1ZV9sYXlvdXQgJnhsb2d1ZV9sYXlvdXQ6Omdl dF9pbnN0YW5jZSAoKQ0KK2NvbnN0IHN0cnVjdCB4bG9ndWVfbGF5b3V0ICYN Cit4bG9ndWVfbGF5b3V0OjpnZXRfaW5zdGFuY2UgKCkNCiB7DQogICBlbnVt IHhsb2d1ZV9zdHViX3NldHMgc3R1Yl9zZXQ7DQogICBib29sIGFsaWduZWRf cGx1c184ID0gY2Z1bi0+bWFjaGluZS0+Y2FsbF9tczJzeXN2X3BhZF9pbjsN CkBAIC0yNjAwLDUwICsyNjE3LDU0IEBAIGNvbnN0IHVuc2lnbmVkIHhsb2d1 ZV9sYXlvdXQ6OlJFR19PUkRFUlt4bG9ndWVfbGF5DQogICByZXR1cm4gc19p bnN0YW5jZXNbc3R1Yl9zZXRdOw0KIH0NCiANCi0vKiBEZXRlcm1pbmUgd2hp Y2ggY2xvYmJlcmVkIHJlZ2lzdGVycyBjYW4gYmUgc2F2ZWQgYnkgdGhlIHN0 dWIgYW5kIHN0b3JlDQotICAgdGhlbSBpbiBzdHViX21hbmFnZWRfcmVncy4g IFJldHVybnMgdGhlIGNvdW50IG9mIHJlZ2lzdGVycyB0aGUgc3R1YiB3aWxs DQotICAgc2F2ZSBhbmQgcmVzdG9yZS4gICovDQorLyogRGV0ZXJtaW5lIGhv dyBtYW55IGNsb2JiZXJlZCByZWdpc3RlcnMgY2FuIGJlIHNhdmVkIGJ5IHRo ZSBzdHViLg0KKyAgIFJldHVybnMgdGhlIGNvdW50IG9mIHJlZ2lzdGVycyB0 aGUgc3R1YiB3aWxsIHNhdmUgYW5kIHJlc3RvcmUuICAqLw0KIHVuc2lnbmVk DQoteGxvZ3VlX2xheW91dDo6Y29tcHV0ZV9zdHViX21hbmFnZWRfcmVncyAo SEFSRF9SRUdfU0VUICZzdHViX21hbmFnZWRfcmVncykNCit4bG9ndWVfbGF5 b3V0Ojpjb3VudF9zdHViX21hbmFnZWRfcmVncyAoKQ0KIHsNCiAgIGJvb2wg aGZwID0gZnJhbWVfcG9pbnRlcl9uZWVkZWQgfHwgc3RhY2tfcmVhbGlnbl9m cDsNCi0NCiAgIHVuc2lnbmVkIGksIGNvdW50Ow0KICAgdW5zaWduZWQgcmVn bm87DQogDQotICBmb3IgKGkgPSAwOyBpIDwgTlVNX1g4Nl82NF9NU19DTE9C QkVSRURfUkVHUzsgKytpKQ0KKyAgZm9yIChjb3VudCA9IGkgPSBNSU5fUkVH UzsgaSA8IE1BWF9SRUdTOyArK2kpDQogICAgIHsNCi0gICAgICByZWdubyA9 IHg4Nl82NF9tc19zeXN2X2V4dHJhX2Nsb2JiZXJlZF9yZWdpc3RlcnNbaV07 DQotICAgICAgaWYgKHJlZ25vID09IEJQX1JFRyAmJiBoZnApDQotCWNvbnRp bnVlOw0KLSAgICAgIGlmICghaXg4Nl9zYXZlX3JlZyAocmVnbm8sIGZhbHNl LCBmYWxzZSkpDQotCXJldHVybiAwOw0KLSAgICB9DQotDQotICBmb3IgKGNv dW50ID0gaSA9IDA7IGkgPCBNQVhfUkVHUzsgKytpKQ0KLSAgICB7DQogICAg ICAgcmVnbm8gPSBSRUdfT1JERVJbaV07DQogICAgICAgaWYgKHJlZ25vID09 IEJQX1JFRyAmJiBoZnApDQogCWNvbnRpbnVlOw0KICAgICAgIGlmICghaXg4 Nl9zYXZlX3JlZyAocmVnbm8sIGZhbHNlLCBmYWxzZSkpDQogCWJyZWFrOw0K LSAgICAgIGFkZF90b19oYXJkX3JlZ19zZXQgKCZzdHViX21hbmFnZWRfcmVn cywgREltb2RlLCByZWdubyk7DQogICAgICAgKytjb3VudDsNCiAgICAgfQ0K LSAgICBnY2NfYXNzZXJ0IChjb3VudCA+PSBNSU5fUkVHUyAmJiBjb3VudCA8 PSBNQVhfUkVHUyk7DQotICAgIHJldHVybiBjb3VudDsNCisgIHJldHVybiBj b3VudDsNCiB9DQogDQorLyogRGV0ZXJtaW5lIGlmIHJlZ2lzdGVyIFJFR05P IGlzIGEgc3R1YiBtYW5hZ2VkIHJlZ2lzdGVyIGdpdmVuIHRoZQ0KKyAgIHRv dGFsIENPVU5UIG9mIHN0dWIgbWFuYWdlZCByZWdpc3RlcnMuICAqLw0KK2Jv b2wNCit4bG9ndWVfbGF5b3V0Ojppc19zdHViX21hbmFnZWRfcmVnICh1bnNp Z25lZCByZWdubywgdW5zaWduZWQgY291bnQpDQorew0KKyAgYm9vbCBoZnAg PSBmcmFtZV9wb2ludGVyX25lZWRlZCB8fCBzdGFja19yZWFsaWduX2ZwOw0K KyAgdW5zaWduZWQgaTsNCisNCisgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsg KytpKQ0KKyAgICB7DQorICAgICAgZ2NjX2Fzc2VydCAoaSA8IE1BWF9SRUdT KTsNCisgICAgICBpZiAoUkVHX09SREVSW2ldID09IEJQX1JFRyAmJiBoZnAp DQorCSsrY291bnQ7DQorICAgICAgZWxzZSBpZiAoUkVHX09SREVSW2ldID09 IHJlZ25vKQ0KKwlyZXR1cm4gdHJ1ZTsNCisgICAgfQ0KKyAgcmV0dXJuIGZh bHNlOw0KK30NCisNCiAvKiBDb25zdHJ1Y3RvciBmb3IgeGxvZ3VlX2xheW91 dC4gICovDQogeGxvZ3VlX2xheW91dDo6eGxvZ3VlX2xheW91dCAoSE9TVF9X SURFX0lOVCBzdGFja19hbGlnbl9vZmZfaW4sIGJvb2wgaGZwKQ0KICAgOiBt X2hmcCAoaGZwKSAsIG1fbnJlZ3MgKGhmcCA/IDE3IDogMTgpLA0KICAgICBt X3N0YWNrX2FsaWduX29mZl9pbiAoc3RhY2tfYWxpZ25fb2ZmX2luKQ0KIHsN Ci0gIG1lbXNldCAobV9yZWdzLCAwLCBzaXplb2YgKG1fcmVncykpOw0KLSAg bWVtc2V0IChtX3N0dWJfbmFtZXMsIDAsIHNpemVvZiAobV9zdHViX25hbWVz KSk7DQotDQogICBIT1NUX1dJREVfSU5UIG9mZnNldCA9IHN0YWNrX2FsaWdu X29mZl9pbjsNCiAgIHVuc2lnbmVkIGksIGo7DQorDQogICBmb3IgKGkgPSBq ID0gMDsgaSA8IE1BWF9SRUdTOyArK2kpDQogICAgIHsNCiAgICAgICB1bnNp Z25lZCByZWdubyA9IFJFR19PUkRFUltpXTsNCkBAIC0yNjYyLDE0ICsyNjgz LDE0IEBAIHhsb2d1ZV9sYXlvdXQ6Onhsb2d1ZV9sYXlvdXQgKEhPU1RfV0lE RV9JTlQgc3RhY2tfDQogICAgICAgbV9yZWdzW2pdLnJlZ25vICAgID0gcmVn bm87DQogICAgICAgbV9yZWdzW2orK10ub2Zmc2V0ID0gb2Zmc2V0IC0gU1RV Ql9JTkRFWF9PRkZTRVQ7DQogICAgIH0NCi0gICAgZ2NjX2Fzc2VydCAoaiA9 PSBtX25yZWdzKTsNCisgIGdjY19hc3NlcnQgKGogPT0gbV9ucmVncyk7DQog fQ0KIA0KLWNvbnN0IGNoYXIgKnhsb2d1ZV9sYXlvdXQ6OmdldF9zdHViX25h bWUgKGVudW0geGxvZ3VlX3N0dWIgc3R1YiwNCi0JCQkJCSAgdW5zaWduZWQg bl9leHRyYV9yZWdzKSBjb25zdA0KK2NvbnN0IGNoYXIgKg0KK3hsb2d1ZV9s YXlvdXQ6OmdldF9zdHViX25hbWUgKGVudW0geGxvZ3VlX3N0dWIgc3R1YiwN CisJCQkgICAgICB1bnNpZ25lZCBuX2V4dHJhX3JlZ3MpDQogew0KLSAgeGxv Z3VlX2xheW91dCAqd3JpdGV5X3RoaXMgPSBjb25zdF9jYXN0PHhsb2d1ZV9s YXlvdXQqPih0aGlzKTsNCi0gIGNoYXIgKm5hbWUgPSB3cml0ZXlfdGhpcy0+ bV9zdHViX25hbWVzW3N0dWJdW25fZXh0cmFfcmVnc107DQorICBjaGFyICpu YW1lID0gc19zdHViX25hbWVzW3N0dWJdW25fZXh0cmFfcmVnc107DQogDQog ICAvKiBMYXp5IGluaXQgKi8NCiAgIGlmICghKm5hbWUpDQpAQCAtMjY3Niw3 ICsyNjk3LDcgQEAgeGxvZ3VlX2xheW91dDo6eGxvZ3VlX2xheW91dCAoSE9T VF9XSURFX0lOVCBzdGFja18NCiAgICAgew0KICAgICAgIGludCByZXMgPSBz bnByaW50ZiAobmFtZSwgU1RVQl9OQU1FX01BWF9MRU4sICJfXyVzXyV1IiwN CiAJCQkgIFNUVUJfQkFTRV9OQU1FU1tzdHViXSwgTUlOX1JFR1MgKyBuX2V4 dHJhX3JlZ3MpOw0KLSAgICAgIGdjY19jaGVja2luZ19hc3NlcnQgKHJlcyA8 PSAoaW50KVNUVUJfTkFNRV9NQVhfTEVOKTsNCisgICAgICBnY2NfY2hlY2tp bmdfYXNzZXJ0IChyZXMgPCAoaW50KVNUVUJfTkFNRV9NQVhfTEVOKTsNCiAg ICAgfQ0KIA0KICAgcmV0dXJuIG5hbWU7DQpAQCAtMjY4NCw3ICsyNzA1LDgg QEAgeGxvZ3VlX2xheW91dDo6eGxvZ3VlX2xheW91dCAoSE9TVF9XSURFX0lO VCBzdGFja18NCiANCiAvKiBSZXR1cm4gcnR4IG9mIGEgc3ltYm9sIHJlZiBm b3IgdGhlIGVudHJ5IHBvaW50IChiYXNlZCB1cG9uDQogICAgY2Z1bi0+bWFj aGluZS0+Y2FsbF9tczJzeXN2X2V4dHJhX3JlZ3MpIG9mIHRoZSBzcGVjaWZp ZWQgc3R1Yi4gICovDQotcnR4IHhsb2d1ZV9sYXlvdXQ6OmdldF9zdHViX3J0 eCAoZW51bSB4bG9ndWVfc3R1YiBzdHViKSBjb25zdA0KK3J0eA0KK3hsb2d1 ZV9sYXlvdXQ6OmdldF9zdHViX3J0eCAoZW51bSB4bG9ndWVfc3R1YiBzdHVi KQ0KIHsNCiAgIGNvbnN0IHVuc2lnbmVkIG5fZXh0cmFfcmVncyA9IGNmdW4t Pm1hY2hpbmUtPmNhbGxfbXMyc3lzdl9leHRyYV9yZWdzOw0KICAgZ2NjX2No ZWNraW5nX2Fzc2VydCAobl9leHRyYV9yZWdzIDw9IE1BWF9FWFRSQV9SRUdT KTsNCkBAIC0yNzAzLDczICsyNzI1LDYgQEAgc3RydWN0IEdUWSgoKSkgc3Rh Y2tfbG9jYWxfZW50cnkgew0KICAgc3RydWN0IHN0YWNrX2xvY2FsX2VudHJ5 ICpuZXh0Ow0KIH07DQogDQotLyogU3RydWN0dXJlIGRlc2NyaWJpbmcgc3Rh Y2sgZnJhbWUgbGF5b3V0Lg0KLSAgIFN0YWNrIGdyb3dzIGRvd253YXJkOg0K LQ0KLSAgIFthcmd1bWVudHNdDQotCQkJCQk8LSBBUkdfUE9JTlRFUg0KLSAg IHNhdmVkIHBjDQotDQotICAgc2F2ZWQgc3RhdGljIGNoYWluCQkJaWYgaXg4 Nl9zdGF0aWNfY2hhaW5fb25fc3RhY2sNCi0NCi0gICBzYXZlZCBmcmFtZSBw b2ludGVyCQkJaWYgZnJhbWVfcG9pbnRlcl9uZWVkZWQNCi0JCQkJCTwtIEhB UkRfRlJBTUVfUE9JTlRFUg0KLSAgIFtzYXZlZCByZWdzXQ0KLQkJCQkJPC0g cmVnX3NhdmVfb2Zmc2V0DQotICAgW3BhZGRpbmcwXQ0KLQkJCQkJPC0gc3Rh Y2tfcmVhbGlnbl9vZmZzZXQNCi0gICBbc2F2ZWQgU1NFIHJlZ3NdDQotCU9S DQotICAgW3N0dWItc2F2ZWQgcmVnaXN0ZXJzIGZvciBtcyB4NjQgLS0+IHN5 c3YgY2xvYmJlcnMNCi0JCQk8LSBTdGFydCBvZiBvdXQtb2YtbGluZSwgc3R1 Yi1zYXZlZC9yZXN0b3JlZCByZWdzDQotCQkJICAgKHNlZSBsaWJnY2MvY29u ZmlnL2kzODYvKHNhdnxyZXMpbXM2NCouUykNCi0gICAgIFtYTU02LTE1XQ0K LSAgICAgW1JTSV0NCi0gICAgIFtSREldDQotICAgICBbP1JCWF0JCW9ubHkg aWYgUkJYIGlzIGNsb2JiZXJlZA0KLSAgICAgWz9SQlBdCQlvbmx5IGlmIFJC UCBhbmQgUkJYIGFyZSBjbG9iYmVyZWQNCi0gICAgIFs/UjEyXQkJb25seSBp ZiBSMTIgYW5kIGFsbCBwcmV2aW91cyByZWdzIGFyZSBjbG9iYmVyZWQNCi0g ICAgIFs/UjEzXQkJb25seSBpZiBSMTMgYW5kIGFsbCBwcmV2aW91cyByZWdz IGFyZSBjbG9iYmVyZWQNCi0gICAgIFs/UjE0XQkJb25seSBpZiBSMTQgYW5k IGFsbCBwcmV2aW91cyByZWdzIGFyZSBjbG9iYmVyZWQNCi0gICAgIFs/UjE1 XQkJb25seSBpZiBSMTUgYW5kIGFsbCBwcmV2aW91cyByZWdzIGFyZSBjbG9i YmVyZWQNCi0JCQk8LSBlbmQgb2Ygc3R1Yi1zYXZlZC9yZXN0b3JlZCByZWdz DQotICAgICBbcGFkZGluZzFdDQotICAgXQ0KLQkJCQkJPC0gb3V0bGluZWRf c2F2ZV9vZmZzZXQNCi0JCQkJCTwtIHNzZV9yZWdzX3NhdmVfb2Zmc2V0DQot ICAgW3BhZGRpbmcyXQ0KLQkJICAgICAgIHwJCTwtIEZSQU1FX1BPSU5URVIN Ci0gICBbdmFfYXJnIHJlZ2lzdGVyc10gIHwNCi0JCSAgICAgICB8DQotICAg W2ZyYW1lXQkgICAgICAgfA0KLQkJICAgICAgIHwNCi0gICBbcGFkZGluZzJd CSAgICAgICB8ID0gdG9fYWxsb2NhdGUNCi0JCQkJCTwtIFNUQUNLX1BPSU5U RVINCi0gICovDQotc3RydWN0IGl4ODZfZnJhbWUNCi17DQotICBpbnQgbnNz ZXJlZ3M7DQotICBpbnQgbnJlZ3M7DQotICBpbnQgdmFfYXJnX3NpemU7DQot ICBpbnQgcmVkX3pvbmVfc2l6ZTsNCi0gIGludCBvdXRnb2luZ19hcmd1bWVu dHNfc2l6ZTsNCi0NCi0gIC8qIFRoZSBvZmZzZXRzIHJlbGF0aXZlIHRvIEFS R19QT0lOVEVSLiAgKi8NCi0gIEhPU1RfV0lERV9JTlQgZnJhbWVfcG9pbnRl cl9vZmZzZXQ7DQotICBIT1NUX1dJREVfSU5UIGhhcmRfZnJhbWVfcG9pbnRl cl9vZmZzZXQ7DQotICBIT1NUX1dJREVfSU5UIHN0YWNrX3BvaW50ZXJfb2Zm c2V0Ow0KLSAgSE9TVF9XSURFX0lOVCBoZnBfc2F2ZV9vZmZzZXQ7DQotICBI T1NUX1dJREVfSU5UIHJlZ19zYXZlX29mZnNldDsNCi0gIEhPU1RfV0lERV9J TlQgc3RhY2tfcmVhbGlnbl9hbGxvY2F0ZV9vZmZzZXQ7DQotICBIT1NUX1dJ REVfSU5UIHN0YWNrX3JlYWxpZ25fb2Zmc2V0Ow0KLSAgSE9TVF9XSURFX0lO VCBvdXRsaW5lZF9zYXZlX29mZnNldDsNCi0gIEhPU1RfV0lERV9JTlQgc3Nl X3JlZ19zYXZlX29mZnNldDsNCi0NCi0gIC8qIFdoZW4gc2F2ZV9yZWdzX3Vz aW5nX21vdiBpcyBzZXQsIGVtaXQgcHJvbG9ndWUgdXNpbmcNCi0gICAgIG1v dmUgaW5zdGVhZCBvZiBwdXNoIGluc3RydWN0aW9ucy4gICovDQotICBib29s IHNhdmVfcmVnc191c2luZ19tb3Y7DQotfTsNCi0NCiAvKiBXaGljaCBjcHUg YXJlIHdlIHNjaGVkdWxpbmcgZm9yLiAgKi8NCiBlbnVtIGF0dHJfY3B1IGl4 ODZfc2NoZWR1bGU7DQogDQpAQCAtMjg2MSw3ICsyODE2LDcgQEAgc3RhdGlj IHVuc2lnbmVkIGludCBpeDg2X2Z1bmN0aW9uX2FyZ19ib3VuZGFyeSAobWEN CiAJCQkJCQljb25zdF90cmVlKTsNCiBzdGF0aWMgcnR4IGl4ODZfc3RhdGlj X2NoYWluIChjb25zdF90cmVlLCBib29sKTsNCiBzdGF0aWMgaW50IGl4ODZf ZnVuY3Rpb25fcmVncGFybSAoY29uc3RfdHJlZSwgY29uc3RfdHJlZSk7DQot c3RhdGljIHZvaWQgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoc3RydWN0 IGl4ODZfZnJhbWUgKik7DQorc3RhdGljIHZvaWQgaXg4Nl9jb21wdXRlX2Zy YW1lX2xheW91dCAodm9pZCk7DQogc3RhdGljIGJvb2wgaXg4Nl9leHBhbmRf dmVjdG9yX2luaXRfb25lX25vbnplcm8gKGJvb2wsIG1hY2hpbmVfbW9kZSwN CiAJCQkJCQkgcnR4LCBydHgsIGludCk7DQogc3RhdGljIHZvaWQgaXg4Nl9h ZGRfbmV3X2J1aWx0aW5zIChIT1NUX1dJREVfSU5ULCBIT1NUX1dJREVfSU5U KTsNCkBAIC0xMjI5Myw3ICsxMjI0OCw3IEBAIGl4ODZfY2FuX3VzZV9yZXR1 cm5faW5zbl9wICh2b2lkKQ0KICAgaWYgKGNydGwtPmFyZ3MucG9wc19hcmdz ICYmIGNydGwtPmFyZ3Muc2l6ZSA+PSAzMjc2OCkNCiAgICAgcmV0dXJuIDA7 DQogDQotICBpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0ICgmZnJhbWUpOw0K KyAgZnJhbWUgPSBjZnVuLT5tYWNoaW5lLT5mcmFtZTsNCiAgIHJldHVybiAo ZnJhbWUuc3RhY2tfcG9pbnRlcl9vZmZzZXQgPT0gVU5JVFNfUEVSX1dPUkQN CiAJICAmJiAoZnJhbWUubnJlZ3MgKyBmcmFtZS5uc3NlcmVncykgPT0gMCk7 DQogfQ0KQEAgLTEyNjM0LDEwICsxMjU4OSw2IEBAIGl4ODZfaGFyZF9yZWdu b19zY3JhdGNoX29rICh1bnNpZ25lZCBpbnQgcmVnbm8pDQogCSAgICAgICYm IGRmX3JlZ3NfZXZlcl9saXZlX3AgKHJlZ25vKSkpOw0KIH0NCiANCi0vKiBS ZWdpc3RlcnMgd2hvJ3Mgc2F2ZSAmIHJlc3RvcmUgd2lsbCBiZSBtYW5hZ2Vk IGJ5IHN0dWJzIGNhbGxlZCBmcm9tDQotICAgcHJvL2VwaWxvZ3VlLiAgKi8N Ci1zdGF0aWMgSEFSRF9SRUdfU0VUIEdUWSgoKSkgc3R1Yl9tYW5hZ2VkX3Jl Z3M7DQotDQogLyogUmV0dXJuIHRydWUgaWYgcmVnaXN0ZXIgY2xhc3MgQ0wg c2hvdWxkIGJlIGFuIGFkZGl0aW9uYWwgYWxsb2Nubw0KICAgIGNsYXNzLiAg Ki8NCiANCkBAIC0xMjcxOCw5ICsxMjY2OSwxMyBAQCBpeDg2X3NhdmVfcmVn ICh1bnNpZ25lZCBpbnQgcmVnbm8sIGJvb2wgbWF5YmVfZWhfcg0KIAl9DQog ICAgIH0NCiANCi0gIGlmIChpZ25vcmVfb3V0bGluZWQgJiYgY2Z1bi0+bWFj aGluZS0+Y2FsbF9tczJzeXN2DQotICAgICAgJiYgaW5faGFyZF9yZWdfc2V0 X3AgKHN0dWJfbWFuYWdlZF9yZWdzLCBESW1vZGUsIHJlZ25vKSkNCi0gICAg cmV0dXJuIGZhbHNlOw0KKyAgaWYgKGlnbm9yZV9vdXRsaW5lZCAmJiBjZnVu LT5tYWNoaW5lLT5jYWxsX21zMnN5c3YpDQorICAgIHsNCisgICAgICB1bnNp Z25lZCBjb3VudCA9IGNmdW4tPm1hY2hpbmUtPmNhbGxfbXMyc3lzdl9leHRy YV9yZWdzDQorCQkgICAgICAgKyB4bG9ndWVfbGF5b3V0OjpNSU5fUkVHUzsN CisgICAgICBpZiAoeGxvZ3VlX2xheW91dDo6aXNfc3R1Yl9tYW5hZ2VkX3Jl ZyAocmVnbm8sIGNvdW50KSkNCisJcmV0dXJuIGZhbHNlOw0KKyAgICB9DQog DQogICBpZiAoY3J0bC0+ZHJhcF9yZWcNCiAgICAgICAmJiByZWdubyA9PSBS RUdOTyAoY3J0bC0+ZHJhcF9yZWcpDQpAQCAtMTI3ODcsOCArMTI3NDIsNyBA QCBpeDg2X2Nhbl9lbGltaW5hdGUgKGNvbnN0IGludCBmcm9tLCBjb25zdCBp bnQgdG8pDQogSE9TVF9XSURFX0lOVA0KIGl4ODZfaW5pdGlhbF9lbGltaW5h dGlvbl9vZmZzZXQgKGludCBmcm9tLCBpbnQgdG8pDQogew0KLSAgc3RydWN0 IGl4ODZfZnJhbWUgZnJhbWU7DQotICBpeDg2X2NvbXB1dGVfZnJhbWVfbGF5 b3V0ICgmZnJhbWUpOw0KKyAgc3RydWN0IGl4ODZfZnJhbWUgZnJhbWUgPSBj ZnVuLT5tYWNoaW5lLT5mcmFtZTsNCiANCiAgIGlmIChmcm9tID09IEFSR19Q T0lOVEVSX1JFR05VTSAmJiB0byA9PSBIQVJEX0ZSQU1FX1BPSU5URVJfUkVH TlVNKQ0KICAgICByZXR1cm4gZnJhbWUuaGFyZF9mcmFtZV9wb2ludGVyX29m ZnNldDsNCkBAIC0xMjgxOCwxMyArMTI3NzIsMTYgQEAgaXg4Nl9idWlsdGlu X3NldGptcF9mcmFtZV92YWx1ZSAodm9pZCkNCiAgIHJldHVybiBzdGFja19y ZWFsaWduX2ZwID8gaGFyZF9mcmFtZV9wb2ludGVyX3J0eCA6IHZpcnR1YWxf c3RhY2tfdmFyc19ydHg7DQogfQ0KIA0KLS8qIERpc2FibGVzIG91dC1vZi1s aW5lZCBtc2FiaSB0byBzeXN2IHByby9lcGlsb2d1ZXMgYW5kIGVtaXRzIGEg d2FybmluZyBpZg0KLSAgIHdhcm5fb25jZSBpcyBudWxsLCBvciAqd2Fybl9v bmNlIGlzIHplcm8uICAqLw0KLXN0YXRpYyB2b2lkIGRpc2FibGVfY2FsbF9t czJzeXN2X3hsb2d1ZXMgKGNvbnN0IGNoYXIgKmZlYXR1cmUpDQorLyogRW1p dHMgYSB3YXJuaW5nIGZvciB1bnN1cHBvcnRlZCBtc2FiaSB0byBzeXN2IHBy by9lcGlsb2d1ZXMuICAqLw0KK3N0YXRpYyB2b2lkIHdhcm5fb25jZV9jYWxs X21zMnN5c3ZfeGxvZ3VlcyAoY29uc3QgY2hhciAqZmVhdHVyZSkNCiB7DQot ICBjZnVuLT5tYWNoaW5lLT5jYWxsX21zMnN5c3YgPSBmYWxzZTsNCi0gIHdh cm5pbmcgKE9QVF9tY2FsbF9tczJzeXN2X3hsb2d1ZXMsICJub3QgY3VycmVu dGx5IGNvbXBhdGlibGUgd2l0aCAlcy4iLA0KLQkgICBmZWF0dXJlKTsNCisg IHN0YXRpYyBib29sIHdhcm5lZF9vbmNlID0gZmFsc2U7DQorICBpZiAoIXdh cm5lZF9vbmNlKQ0KKyAgICB7DQorICAgICAgd2FybmluZyAoMCwgIi1tY2Fs bC1tczJzeXN2LXhsb2d1ZXMgaXMgbm90IGNvbXBhdGlibGUgd2l0aCAlcyIs DQorCSAgICAgICBmZWF0dXJlKTsNCisgICAgICB3YXJuZWRfb25jZSA9IHRy dWU7DQorICAgIH0NCiB9DQogDQogLyogV2hlbiB1c2luZyAtZnNwbGl0LXN0 YWNrLCB0aGUgYWxsb2NhdGlvbiByb3V0aW5lcyBzZXQgYSBmaWVsZCBpbg0K QEAgLTEyODM2LDggKzEyNzkzLDkgQEAgaXg4Nl9idWlsdGluX3NldGptcF9m cmFtZV92YWx1ZSAodm9pZCkNCiAvKiBGaWxsIHN0cnVjdHVyZSBpeDg2X2Zy YW1lIGFib3V0IGZyYW1lIG9mIGN1cnJlbnRseSBjb21wdXRlZCBmdW5jdGlv bi4gICovDQogDQogc3RhdGljIHZvaWQNCi1peDg2X2NvbXB1dGVfZnJhbWVf bGF5b3V0IChzdHJ1Y3QgaXg4Nl9mcmFtZSAqZnJhbWUpDQoraXg4Nl9jb21w dXRlX2ZyYW1lX2xheW91dCAodm9pZCkNCiB7DQorICBzdHJ1Y3QgaXg4Nl9m cmFtZSAqZnJhbWUgPSAmY2Z1bi0+bWFjaGluZS0+ZnJhbWU7DQogICBzdHJ1 Y3QgbWFjaGluZV9mdW5jdGlvbiAqbSA9IGNmdW4tPm1hY2hpbmU7DQogICB1 bnNpZ25lZCBIT1NUX1dJREVfSU5UIHN0YWNrX2FsaWdubWVudF9uZWVkZWQ7 DQogICBIT1NUX1dJREVfSU5UIG9mZnNldDsNCkBAIC0xMjg0NSw0NiArMTI4 MDMsMzkgQEAgc3RhdGljIHZvaWQNCiAgIEhPU1RfV0lERV9JTlQgc2l6ZSA9 IGdldF9mcmFtZV9zaXplICgpOw0KICAgSE9TVF9XSURFX0lOVCB0b19hbGxv Y2F0ZTsNCiANCi0gIENMRUFSX0hBUkRfUkVHX1NFVCAoc3R1Yl9tYW5hZ2Vk X3JlZ3MpOw0KLQ0KICAgLyogbS0+Y2FsbF9tczJzeXN2IGlzIGluaXRpYWxs eSBlbmFibGVkIGluIGl4ODZfZXhwYW5kX2NhbGwgZm9yIGFsbCA2NC1iaXQN CiAgICAqIG1zX2FiaSBmdW5jdGlvbnMgdGhhdCBjYWxsIGEgc3lzdiBmdW5j dGlvbi4gIFdlIG5vdyBuZWVkIHRvIHBydW5lIGF3YXkNCiAgICAqIGNhc2Vz IHdoZXJlIGl0IHNob3VsZCBiZSBkaXNhYmxlZC4gICovDQogICBpZiAoVEFS R0VUXzY0QklUICYmIG0tPmNhbGxfbXMyc3lzdikNCi0gIHsNCi0gICAgZ2Nj X2Fzc2VydCAoVEFSR0VUXzY0QklUX01TX0FCSSk7DQotICAgIGdjY19hc3Nl cnQgKFRBUkdFVF9DQUxMX01TMlNZU1ZfWExPR1VFUyk7DQotICAgIGdjY19h c3NlcnQgKCFUQVJHRVRfU0VIKTsNCisgICAgew0KKyAgICAgIGdjY19hc3Nl cnQgKFRBUkdFVF82NEJJVF9NU19BQkkpOw0KKyAgICAgIGdjY19hc3NlcnQg KFRBUkdFVF9DQUxMX01TMlNZU1ZfWExPR1VFUyk7DQorICAgICAgZ2NjX2Fz c2VydCAoIVRBUkdFVF9TRUgpOw0KKyAgICAgIGdjY19hc3NlcnQgKFRBUkdF VF9TU0UpOw0KKyAgICAgIGdjY19hc3NlcnQgKCFpeDg2X3VzaW5nX3JlZF96 b25lICgpKTsNCiANCi0gICAgaWYgKCFUQVJHRVRfU1NFKQ0KLSAgICAgIG0t PmNhbGxfbXMyc3lzdiA9IGZhbHNlOw0KKyAgICAgIGlmIChjcnRsLT5jYWxs c19laF9yZXR1cm4pDQorCXsNCisJICBnY2NfYXNzZXJ0ICghcmVsb2FkX2Nv bXBsZXRlZCk7DQorCSAgbS0+Y2FsbF9tczJzeXN2ID0gZmFsc2U7DQorCSAg d2Fybl9vbmNlX2NhbGxfbXMyc3lzdl94bG9ndWVzICgiX19idWlsdGluX2Vo X3JldHVybiIpOw0KKwl9DQogDQotICAgIC8qIERvbid0IGJyZWFrIGhvdC1w YXRjaGVkIGZ1bmN0aW9ucy4gICovDQotICAgIGVsc2UgaWYgKGl4ODZfZnVu Y3Rpb25fbXNfaG9va19wcm9sb2d1ZSAoY3VycmVudF9mdW5jdGlvbl9kZWNs KSkNCi0gICAgICBtLT5jYWxsX21zMnN5c3YgPSBmYWxzZTsNCisgICAgICBl bHNlIGlmIChpeDg2X3N0YXRpY19jaGFpbl9vbl9zdGFjaykNCisJew0KKwkg IGdjY19hc3NlcnQgKCFyZWxvYWRfY29tcGxldGVkKTsNCisJICBtLT5jYWxs X21zMnN5c3YgPSBmYWxzZTsNCisJICB3YXJuX29uY2VfY2FsbF9tczJzeXN2 X3hsb2d1ZXMgKCJzdGF0aWMgY2FsbCBjaGFpbnMiKTsNCisJfQ0KIA0KLSAg ICAvKiBUT0RPOiBDYXNlcyBub3QgeWV0IGV4YW1pbmVkLiAgKi8NCi0gICAg ZWxzZSBpZiAoY3J0bC0+Y2FsbHNfZWhfcmV0dXJuKQ0KLSAgICAgIGRpc2Fi bGVfY2FsbF9tczJzeXN2X3hsb2d1ZXMgKCJfX2J1aWx0aW5fZWhfcmV0dXJu Iik7DQorICAgICAgLyogRmluYWxseSwgY29tcHV0ZSB3aGljaCByZWdpc3Rl cnMgdGhlIHN0dWIgd2lsbCBtYW5hZ2UuICAqLw0KKyAgICAgIGVsc2UNCisJ ew0KKwkgIHVuc2lnbmVkIGNvdW50ID0geGxvZ3VlX2xheW91dDo6Y291bnRf c3R1Yl9tYW5hZ2VkX3JlZ3MgKCk7DQorCSAgbS0+Y2FsbF9tczJzeXN2X2V4 dHJhX3JlZ3MgPSBjb3VudCAtIHhsb2d1ZV9sYXlvdXQ6Ok1JTl9SRUdTOw0K Kwl9DQorICAgIH0NCiANCi0gICAgZWxzZSBpZiAoaXg4Nl9zdGF0aWNfY2hh aW5fb25fc3RhY2spDQotICAgICAgZGlzYWJsZV9jYWxsX21zMnN5c3ZfeGxv Z3VlcyAoInN0YXRpYyBjYWxsIGNoYWlucyIpOw0KLQ0KLSAgICBlbHNlIGlm IChpeDg2X3VzaW5nX3JlZF96b25lICgpKQ0KLSAgICAgIGRpc2FibGVfY2Fs bF9tczJzeXN2X3hsb2d1ZXMgKCJyZWQgem9uZXMiKTsNCi0NCi0gICAgZWxz ZSBpZiAoZmxhZ19zcGxpdF9zdGFjaykNCi0gICAgICBkaXNhYmxlX2NhbGxf bXMyc3lzdl94bG9ndWVzICgic3BsaXQgc3RhY2siKTsNCi0NCi0gICAgLyog RmluYWxseSwgY29tcHV0ZSB3aGljaCByZWdpc3RlcnMgdGhlIHN0dWIgd2ls bCBtYW5hZ2UuICAqLw0KLSAgICBlbHNlDQotICAgICAgew0KLQl1bnNpZ25l ZCBjb3VudCA9IHhsb2d1ZV9sYXlvdXQNCi0JCQkgOjpjb21wdXRlX3N0dWJf bWFuYWdlZF9yZWdzIChzdHViX21hbmFnZWRfcmVncyk7DQotCW0tPmNhbGxf bXMyc3lzdl9leHRyYV9yZWdzID0gY291bnQgLSB4bG9ndWVfbGF5b3V0OjpN SU5fUkVHUzsNCi0gICAgICB9DQotICB9DQotDQogICBmcmFtZS0+bnJlZ3Mg PSBpeDg2X25zYXZlZF9yZWdzICgpOw0KICAgZnJhbWUtPm5zc2VyZWdzID0g aXg4Nl9uc2F2ZWRfc3NlcmVncyAoKTsNCiAgIG0tPmNhbGxfbXMyc3lzdl9w YWRfaW4gPSAwOw0KQEAgLTEyOTE2LDE5ICsxMjg2NywxMSBAQCBzdGF0aWMg dm9pZA0KICAgICAgaW4gZG9pbmcgYW55dGhpbmcgZXhjZXB0IFBVU0hzLiAg Ki8NCiAgIGlmIChUQVJHRVRfU0VIKQ0KICAgICBtLT51c2VfZmFzdF9wcm9s b2d1ZV9lcGlsb2d1ZSA9IGZhbHNlOw0KLQ0KLSAgLyogRHVyaW5nIHJlbG9h ZCBpdGVyYXRpb24gdGhlIGFtb3VudCBvZiByZWdpc3RlcnMgc2F2ZWQgY2Fu IGNoYW5nZS4NCi0gICAgIFJlY29tcHV0ZSB0aGUgdmFsdWUgYXMgbmVlZGVk LiAgRG8gbm90IHJlY29tcHV0ZSB3aGVuIGFtb3VudCBvZiByZWdpc3RlcnMN Ci0gICAgIGRpZG4ndCBjaGFuZ2UgYXMgcmVsb2FkIGRvZXMgbXVsdGlwbGUg Y2FsbHMgdG8gdGhlIGZ1bmN0aW9uIGFuZCBkb2VzIG5vdA0KLSAgICAgZXhw ZWN0IHRoZSBkZWNpc2lvbiB0byBjaGFuZ2Ugd2l0aGluIHNpbmdsZSBpdGVy YXRpb24uICAqLw0KLSAgZWxzZSBpZiAoIW9wdGltaXplX2JiX2Zvcl9zaXpl X3AgKEVOVFJZX0JMT0NLX1BUUl9GT1JfRk4gKGNmdW4pKQ0KLQkgICAmJiBt LT51c2VfZmFzdF9wcm9sb2d1ZV9lcGlsb2d1ZV9ucmVncyAhPSBmcmFtZS0+ bnJlZ3MpDQorICBlbHNlIGlmICghb3B0aW1pemVfYmJfZm9yX3NpemVfcCAo RU5UUllfQkxPQ0tfUFRSX0ZPUl9GTiAoY2Z1bikpKQ0KICAgICB7DQogICAg ICAgaW50IGNvdW50ID0gZnJhbWUtPm5yZWdzOw0KICAgICAgIHN0cnVjdCBj Z3JhcGhfbm9kZSAqbm9kZSA9IGNncmFwaF9ub2RlOjpnZXQgKGN1cnJlbnRf ZnVuY3Rpb25fZGVjbCk7DQogDQotICAgICAgbS0+dXNlX2Zhc3RfcHJvbG9n dWVfZXBpbG9ndWVfbnJlZ3MgPSBjb3VudDsNCi0NCiAgICAgICAvKiBUaGUg ZmFzdCBwcm9sb2d1ZSB1c2VzIG1vdmUgaW5zdGVhZCBvZiBwdXNoIHRvIHNh dmUgcmVnaXN0ZXJzLiAgVGhpcw0KICAgICAgICAgIGlzIHNpZ25pZmljYW50 bHkgbG9uZ2VyLCBidXQgYWxzbyBleGVjdXRlcyBmYXN0ZXIgYXMgbW9kZXJu IGhhcmR3YXJlDQogICAgICAgICAgY2FuIGV4ZWN1dGUgdGhlIG1vdmVzIGlu IHBhcmFsbGVsLCBidXQgY2FuJ3QgZG8gdGhhdCBmb3IgcHVzaC9wb3AuDQpA QCAtMTMxNDUsNyArMTMwODgsOCBAQCBjaG9vc2VfYmFzZWFkZHJfbGVuICh1 bnNpZ25lZCBpbnQgcmVnbm8sIEhPU1RfV0lERQ0KIA0KIC8qIERldGVybWlu ZSBpZiB0aGUgc3RhY2sgcG9pbnRlciBpcyB2YWxpZCBmb3IgYWNjZXNzaW5n IHRoZSBjZmFfb2Zmc2V0LiAgKi8NCiANCi1zdGF0aWMgaW5saW5lIGJvb2wg c3BfdmFsaWRfYXQgKEhPU1RfV0lERV9JTlQgY2ZhX29mZnNldCkNCitzdGF0 aWMgaW5saW5lIGJvb2wNCitzcF92YWxpZF9hdCAoSE9TVF9XSURFX0lOVCBj ZmFfb2Zmc2V0KQ0KIHsNCiAgIGNvbnN0IHN0cnVjdCBtYWNoaW5lX2ZyYW1l X3N0YXRlICZmcyA9IGNmdW4tPm1hY2hpbmUtPmZzOw0KICAgcmV0dXJuIGZz LnNwX3ZhbGlkICYmICEoZnMuc3BfcmVhbGlnbmVkDQpAQCAtMTMxNTQsNyAr MTMwOTgsOCBAQCBjaG9vc2VfYmFzZWFkZHJfbGVuICh1bnNpZ25lZCBpbnQg cmVnbm8sIEhPU1RfV0lERQ0KIA0KIC8qIERldGVybWluZSBpZiB0aGUgZnJh bWUgcG9pbnRlciBpcyB2YWxpZCBmb3IgYWNjZXNzaW5nIHRoZSBjZmFfb2Zm c2V0LiAgKi8NCiANCi1zdGF0aWMgaW5saW5lIGJvb2wgZnBfdmFsaWRfYXQg KEhPU1RfV0lERV9JTlQgY2ZhX29mZnNldCkNCitzdGF0aWMgaW5saW5lIGJv b2wNCitmcF92YWxpZF9hdCAoSE9TVF9XSURFX0lOVCBjZmFfb2Zmc2V0KQ0K IHsNCiAgIGNvbnN0IHN0cnVjdCBtYWNoaW5lX2ZyYW1lX3N0YXRlICZmcyA9 IGNmdW4tPm1hY2hpbmUtPmZzOw0KICAgcmV0dXJuIGZzLmZwX3ZhbGlkICYm ICEoZnMuc3BfdmFsaWQgJiYgZnMuc3BfcmVhbGlnbmVkDQpAQCAtMTMxNjQs OSArMTMxMDksMTAgQEAgY2hvb3NlX2Jhc2VhZGRyX2xlbiAodW5zaWduZWQg aW50IHJlZ25vLCBIT1NUX1dJREUNCiAvKiBDaG9vc2UgYSBiYXNlIHJlZ2lz dGVyIGJhc2VkIHVwb24gYWxpZ25tZW50IHJlcXVlc3RlZCwgc3BlZWQgYW5k L29yDQogICAgc2l6ZS4gICovDQogDQotc3RhdGljIHZvaWQgY2hvb3NlX2Jh c2VyZWcgKEhPU1RfV0lERV9JTlQgY2ZhX29mZnNldCwgcnR4ICZiYXNlX3Jl ZywNCi0JCQkgICAgSE9TVF9XSURFX0lOVCAmYmFzZV9vZmZzZXQsDQotCQkJ ICAgIHVuc2lnbmVkIGludCBhbGlnbl9yZXFlc3RlZCwgdW5zaWduZWQgaW50 ICphbGlnbikNCitzdGF0aWMgdm9pZA0KK2Nob29zZV9iYXNlcmVnIChIT1NU X1dJREVfSU5UIGNmYV9vZmZzZXQsIHJ0eCAmYmFzZV9yZWcsDQorCQlIT1NU X1dJREVfSU5UICZiYXNlX29mZnNldCwNCisJCXVuc2lnbmVkIGludCBhbGln bl9yZXFlc3RlZCwgdW5zaWduZWQgaW50ICphbGlnbikNCiB7DQogICBjb25z dCBzdHJ1Y3QgbWFjaGluZV9mdW5jdGlvbiAqbSA9IGNmdW4tPm1hY2hpbmU7 DQogICB1bnNpZ25lZCBpbnQgaGZwX2FsaWduOw0KQEAgLTE0MTU5LDYgKzE0 MTA1LDcgQEAgaXg4Nl9maW5hbGl6ZV9zdGFja19yZWFsaWduX2ZsYWdzICh2 b2lkKQ0KICAgICAgICA8IChjcnRsLT5pc19sZWFmICYmICFpeDg2X2N1cnJl bnRfZnVuY3Rpb25fY2FsbHNfdGxzX2Rlc2NyaXB0b3INCiAJICA/IGNydGwt Pm1heF91c2VkX3N0YWNrX3Nsb3RfYWxpZ25tZW50DQogCSAgOiBjcnRsLT5z dGFja19hbGlnbm1lbnRfbmVlZGVkKSk7DQorICBib29sIHJlY29tcHV0ZV9m cmFtZV9sYXlvdXRfcCA9IGZhbHNlOw0KIA0KICAgaWYgKGNydGwtPnN0YWNr X3JlYWxpZ25fZmluYWxpemVkKQ0KICAgICB7DQpAQCAtMTQyMDgsOCArMTQx NTUsMTIgQEAgaXg4Nl9maW5hbGl6ZV9zdGFja19yZWFsaWduX2ZsYWdzICh2 b2lkKQ0KIAkJJiYgcmVxdWlyZXNfc3RhY2tfZnJhbWVfcCAoaW5zbiwgcHJv bG9ndWVfdXNlZCwNCiAJCQkJCSAgIHNldF91cF9ieV9wcm9sb2d1ZSkpDQog CSAgICAgIHsNCisJCWlmIChjcnRsLT5zdGFja19yZWFsaWduX25lZWRlZCAh PSBzdGFja19yZWFsaWduKQ0KKwkJICByZWNvbXB1dGVfZnJhbWVfbGF5b3V0 X3AgPSB0cnVlOw0KIAkJY3J0bC0+c3RhY2tfcmVhbGlnbl9uZWVkZWQgPSBz dGFja19yZWFsaWduOw0KIAkJY3J0bC0+c3RhY2tfcmVhbGlnbl9maW5hbGl6 ZWQgPSB0cnVlOw0KKwkJaWYgKHJlY29tcHV0ZV9mcmFtZV9sYXlvdXRfcCkN CisJCSAgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoKTsNCiAJCXJldHVy bjsNCiAJICAgICAgfQ0KIAl9DQpAQCAtMTQyNDAsMTAgKzE0MTkxLDE1IEBA IGl4ODZfZmluYWxpemVfc3RhY2tfcmVhbGlnbl9mbGFncyAodm9pZCkNCiAg ICAgICBkZl9zY2FuX2Jsb2NrcyAoKTsNCiAgICAgICBkZl9jb21wdXRlX3Jl Z3NfZXZlcl9saXZlICh0cnVlKTsNCiAgICAgICBkZl9hbmFseXplICgpOw0K KyAgICAgIHJlY29tcHV0ZV9mcmFtZV9sYXlvdXRfcCA9IHRydWU7DQogICAg IH0NCiANCisgIGlmIChjcnRsLT5zdGFja19yZWFsaWduX25lZWRlZCAhPSBz dGFja19yZWFsaWduKQ0KKyAgICByZWNvbXB1dGVfZnJhbWVfbGF5b3V0X3Ag PSB0cnVlOw0KICAgY3J0bC0+c3RhY2tfcmVhbGlnbl9uZWVkZWQgPSBzdGFj a19yZWFsaWduOw0KICAgY3J0bC0+c3RhY2tfcmVhbGlnbl9maW5hbGl6ZWQg PSB0cnVlOw0KKyAgaWYgKHJlY29tcHV0ZV9mcmFtZV9sYXlvdXRfcCkNCisg ICAgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoKTsNCiB9DQogDQogLyog RGVsZXRlIFNFVF9HT1QgcmlnaHQgYWZ0ZXIgZW50cnkgYmxvY2sgaWYgaXQg aXMgYWxsb2NhdGVkIHRvIHJlZy4gICovDQpAQCAtMTQzNzIsNyArMTQzMjgs NyBAQCBpeDg2X2V4cGFuZF9wcm9sb2d1ZSAodm9pZCkNCiAgIG0tPmZzLnNw X3ZhbGlkID0gdHJ1ZTsNCiAgIG0tPmZzLnNwX3JlYWxpZ25lZCA9IGZhbHNl Ow0KIA0KLSAgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoJmZyYW1lKTsN CisgIGZyYW1lID0gbS0+ZnJhbWU7DQogDQogICBpZiAoIVRBUkdFVF82NEJJ VCAmJiBpeDg2X2Z1bmN0aW9uX21zX2hvb2tfcHJvbG9ndWUgKGN1cnJlbnRf ZnVuY3Rpb25fZGVjbCkpDQogICAgIHsNCkBAIC0xNTIxMiw3ICsxNTE2OCw3 IEBAIGl4ODZfZXhwYW5kX2VwaWxvZ3VlIChpbnQgc3R5bGUpDQogICBib29s IHJlc3RvcmVfc3R1Yl9pc190YWlsID0gZmFsc2U7DQogDQogICBpeDg2X2Zp bmFsaXplX3N0YWNrX3JlYWxpZ25fZmxhZ3MgKCk7DQotICBpeDg2X2NvbXB1 dGVfZnJhbWVfbGF5b3V0ICgmZnJhbWUpOw0KKyAgZnJhbWUgPSBtLT5mcmFt ZTsNCiANCiAgIG0tPmZzLnNwX3JlYWxpZ25lZCA9IHN0YWNrX3JlYWxpZ25f ZnA7DQogICBtLT5mcy5zcF92YWxpZCA9IHN0YWNrX3JlYWxpZ25fZnANCkBA IC0xNTc1Nyw3ICsxNTcxMyw3IEBAIGl4ODZfZXhwYW5kX3NwbGl0X3N0YWNr X3Byb2xvZ3VlICh2b2lkKQ0KICAgZ2NjX2Fzc2VydCAoZmxhZ19zcGxpdF9z dGFjayAmJiByZWxvYWRfY29tcGxldGVkKTsNCiANCiAgIGl4ODZfZmluYWxp emVfc3RhY2tfcmVhbGlnbl9mbGFncyAoKTsNCi0gIGl4ODZfY29tcHV0ZV9m cmFtZV9sYXlvdXQgKCZmcmFtZSk7DQorICBmcmFtZSA9IGNmdW4tPm1hY2hp bmUtPmZyYW1lOw0KICAgYWxsb2NhdGUgPSBmcmFtZS5zdGFja19wb2ludGVy X29mZnNldCAtIElOQ09NSU5HX0ZSQU1FX1NQX09GRlNFVDsNCiANCiAgIC8q IFRoaXMgaXMgdGhlIGxhYmVsIHdlIHdpbGwgYnJhbmNoIHRvIGlmIHdlIGhh dmUgZW5vdWdoIHN0YWNrDQpAQCAtMjkzMjYsNyArMjkyODIsMjQgQEAgaXg4 Nl9leHBhbmRfY2FsbCAocnR4IHJldHZhbCwgcnR4IGZuYWRkciwgcnR4IGNh bGwNCiANCiAgICAgICAvKiBTZXQgaGVyZSwgYnV0IGl0IG1heSBnZXQgY2xl YXJlZCBsYXRlci4gICovDQogICAgICAgaWYgKFRBUkdFVF9DQUxMX01TMlNZ U1ZfWExPR1VFUykNCi0JY2Z1bi0+bWFjaGluZS0+Y2FsbF9tczJzeXN2ID0g dHJ1ZTsNCisJew0KKwkgIGlmICghVEFSR0VUX1NTRSkNCisJICAgIDsNCisN CisJICAvKiBEb24ndCBicmVhayBob3QtcGF0Y2hlZCBmdW5jdGlvbnMuICAq Lw0KKwkgIGVsc2UgaWYgKGl4ODZfZnVuY3Rpb25fbXNfaG9va19wcm9sb2d1 ZSAoY3VycmVudF9mdW5jdGlvbl9kZWNsKSkNCisJICAgIDsNCisNCisJICAv KiBUT0RPOiBDYXNlcyBub3QgeWV0IGV4YW1pbmVkLiAgKi8NCisJICBlbHNl IGlmIChmbGFnX3NwbGl0X3N0YWNrKQ0KKwkgICAgd2Fybl9vbmNlX2NhbGxf bXMyc3lzdl94bG9ndWVzICgiLWZzcGxpdC1zdGFjayIpOw0KKw0KKwkgIGVs c2UNCisJICAgIHsNCisJICAgICAgZ2NjX2Fzc2VydCAoIXJlbG9hZF9jb21w bGV0ZWQpOw0KKwkgICAgICBjZnVuLT5tYWNoaW5lLT5jYWxsX21zMnN5c3Yg PSB0cnVlOw0KKwkgICAgfQ0KKwl9DQogICAgIH0NCiANCiAgIGlmICh2ZWNf bGVuID4gMSkNCkBAIC0yOTQ2MSw3ICsyOTQzNCw2IEBAIGl4ODZfaW5pdF9t YWNoaW5lX3N0YXR1cyAodm9pZCkNCiAgIHN0cnVjdCBtYWNoaW5lX2Z1bmN0 aW9uICpmOw0KIA0KICAgZiA9IGdnY19jbGVhcmVkX2FsbG9jPG1hY2hpbmVf ZnVuY3Rpb24+ICgpOw0KLSAgZi0+dXNlX2Zhc3RfcHJvbG9ndWVfZXBpbG9n dWVfbnJlZ3MgPSAtMTsNCiAgIGYtPmNhbGxfYWJpID0gaXg4Nl9hYmk7DQog DQogICByZXR1cm4gZjsNCkBAIC0zMTUyMSw4ICszMTQ5MywxMiBAQCBpeDg2 X3N0YXRpY19jaGFpbiAoY29uc3RfdHJlZSBmbmRlY2xfb3JfdHlwZSwgYm9v bA0KIAkgICAgIHNhbWUgb25jZSB3ZSdyZSBleGVjdXRpbmcgdGhlIG5lc3Rl ZCBmdW5jdGlvbi4gICovDQogCSAgaWYgKGluY29taW5nX3ApDQogCSAgICB7 DQotCSAgICAgIGlmIChmbmRlY2wgPT0gY3VycmVudF9mdW5jdGlvbl9kZWNs KQ0KLQkJaXg4Nl9zdGF0aWNfY2hhaW5fb25fc3RhY2sgPSB0cnVlOw0KKwkg ICAgICBpZiAoZm5kZWNsID09IGN1cnJlbnRfZnVuY3Rpb25fZGVjbA0KKwkJ ICAmJiAhaXg4Nl9zdGF0aWNfY2hhaW5fb25fc3RhY2spDQorCQl7DQorCQkg IGdjY19hc3NlcnQgKCFyZWxvYWRfY29tcGxldGVkKTsNCisJCSAgaXg4Nl9z dGF0aWNfY2hhaW5fb25fc3RhY2sgPSB0cnVlOw0KKwkJfQ0KIAkgICAgICBy ZXR1cm4gZ2VuX2ZyYW1lX21lbSAoU0ltb2RlLA0KIAkJCQkgICAgcGx1c19j b25zdGFudCAoUG1vZGUsDQogCQkJCQkJICAgYXJnX3BvaW50ZXJfcnR4LCAt OCkpOw0KQEAgLTUyODM0LDYgKzUyODEwLDkgQEAgaXg4Nl9ydW5fc2VsZnRl c3RzICh2b2lkKQ0KICN1bmRlZiBUQVJHRVRfTEVHSVRJTUFURV9DT05TVEFO VF9QDQogI2RlZmluZSBUQVJHRVRfTEVHSVRJTUFURV9DT05TVEFOVF9QIGl4 ODZfbGVnaXRpbWF0ZV9jb25zdGFudF9wDQogDQorI3VuZGVmIFRBUkdFVF9D T01QVVRFX0ZSQU1FX0xBWU9VVA0KKyNkZWZpbmUgVEFSR0VUX0NPTVBVVEVf RlJBTUVfTEFZT1VUIGl4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQNCisNCiAj dW5kZWYgVEFSR0VUX0ZSQU1FX1BPSU5URVJfUkVRVUlSRUQNCiAjZGVmaW5l IFRBUkdFVF9GUkFNRV9QT0lOVEVSX1JFUVVJUkVEIGl4ODZfZnJhbWVfcG9p bnRlcl9yZXF1aXJlZA0KIA0KSW5kZXg6IGdjYy9jb25maWcvaTM4Ni9pMzg2 LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBnY2MvY29uZmlnL2kz ODYvaTM4Ni5oCShyZXZpc2lvbiAyNDgzNDEpDQorKysgZ2NjL2NvbmZpZy9p Mzg2L2kzODYuaAkod29ya2luZyBjb3B5KQ0KQEAgLTIxNjMsMTAgKzIxNjMs NiBAQCBleHRlcm4gaW50IGNvbnN0IGRieF9yZWdpc3Rlcl9tYXBbRklSU1Rf UFNFVURPX1JFRw0KIGV4dGVybiBpbnQgY29uc3QgZGJ4NjRfcmVnaXN0ZXJf bWFwW0ZJUlNUX1BTRVVET19SRUdJU1RFUl07DQogZXh0ZXJuIGludCBjb25z dCBzdnI0X2RieF9yZWdpc3Rlcl9tYXBbRklSU1RfUFNFVURPX1JFR0lTVEVS XTsNCiANCi1leHRlcm4gdW5zaWduZWQgY29uc3QgeDg2XzY0X21zX3N5c3Zf ZXh0cmFfY2xvYmJlcmVkX3JlZ2lzdGVyc1sxMl07DQotI2RlZmluZSBOVU1f WDg2XzY0X01TX0NMT0JCRVJFRF9SRUdTIFwNCi0gIChBUlJBWV9TSVpFICh4 ODZfNjRfbXNfc3lzdl9leHRyYV9jbG9iYmVyZWRfcmVnaXN0ZXJzKSkNCi0N CiAvKiBCZWZvcmUgdGhlIHByb2xvZ3VlLCBSQSBpcyBhdCAwKCVlc3ApLiAg Ki8NCiAjZGVmaW5lIElOQ09NSU5HX1JFVFVSTl9BRERSX1JUWCBcDQogICBn ZW5fcnR4X01FTSAoUG1vZGUsIGdlbl9ydHhfUkVHIChQbW9kZSwgU1RBQ0tf UE9JTlRFUl9SRUdOVU0pKQ0KQEAgLTI0NDgsOSArMjQ0NCw3NiBAQCBlbnVt IGF2eF91MTI4X3N0YXRlDQogDA0KICNkZWZpbmUgRkFTVENBTExfUFJFRklY ICdAJw0KIAwNCisjaWZuZGVmIFVTRURfRk9SX1RBUkdFVA0KKy8qIFN0cnVj dHVyZSBkZXNjcmliaW5nIHN0YWNrIGZyYW1lIGxheW91dC4NCisgICBTdGFj ayBncm93cyBkb3dud2FyZDoNCisNCisgICBbYXJndW1lbnRzXQ0KKwkJCQkJ PC0gQVJHX1BPSU5URVINCisgICBzYXZlZCBwYw0KKw0KKyAgIHNhdmVkIHN0 YXRpYyBjaGFpbgkJCWlmIGl4ODZfc3RhdGljX2NoYWluX29uX3N0YWNrDQor DQorICAgc2F2ZWQgZnJhbWUgcG9pbnRlcgkJCWlmIGZyYW1lX3BvaW50ZXJf bmVlZGVkDQorCQkJCQk8LSBIQVJEX0ZSQU1FX1BPSU5URVINCisgICBbc2F2 ZWQgcmVnc10NCisJCQkJCTwtIHJlZ19zYXZlX29mZnNldA0KKyAgIFtwYWRk aW5nMF0NCisJCQkJCTwtIHN0YWNrX3JlYWxpZ25fb2Zmc2V0DQorICAgW3Nh dmVkIFNTRSByZWdzXQ0KKwlPUg0KKyAgIFtzdHViLXNhdmVkIHJlZ2lzdGVy cyBmb3IgbXMgeDY0IC0tPiBzeXN2IGNsb2JiZXJzDQorCQkJPC0gU3RhcnQg b2Ygb3V0LW9mLWxpbmUsIHN0dWItc2F2ZWQvcmVzdG9yZWQgcmVncw0KKwkJ CSAgIChzZWUgbGliZ2NjL2NvbmZpZy9pMzg2LyhzYXZ8cmVzKW1zNjQqLlMp DQorICAgICBbWE1NNi0xNV0NCisgICAgIFtSU0ldDQorICAgICBbUkRJXQ0K KyAgICAgWz9SQlhdCQlvbmx5IGlmIFJCWCBpcyBjbG9iYmVyZWQNCisgICAg IFs/UkJQXQkJb25seSBpZiBSQlAgYW5kIFJCWCBhcmUgY2xvYmJlcmVkDQor ICAgICBbP1IxMl0JCW9ubHkgaWYgUjEyIGFuZCBhbGwgcHJldmlvdXMgcmVn cyBhcmUgY2xvYmJlcmVkDQorICAgICBbP1IxM10JCW9ubHkgaWYgUjEzIGFu ZCBhbGwgcHJldmlvdXMgcmVncyBhcmUgY2xvYmJlcmVkDQorICAgICBbP1Ix NF0JCW9ubHkgaWYgUjE0IGFuZCBhbGwgcHJldmlvdXMgcmVncyBhcmUgY2xv YmJlcmVkDQorICAgICBbP1IxNV0JCW9ubHkgaWYgUjE1IGFuZCBhbGwgcHJl dmlvdXMgcmVncyBhcmUgY2xvYmJlcmVkDQorCQkJPC0gZW5kIG9mIHN0dWIt c2F2ZWQvcmVzdG9yZWQgcmVncw0KKyAgICAgW3BhZGRpbmcxXQ0KKyAgIF0N CisJCQkJCTwtIG91dGxpbmVkX3NhdmVfb2Zmc2V0DQorCQkJCQk8LSBzc2Vf cmVnc19zYXZlX29mZnNldA0KKyAgIFtwYWRkaW5nMl0NCisJCSAgICAgICB8 CQk8LSBGUkFNRV9QT0lOVEVSDQorICAgW3ZhX2FyZyByZWdpc3RlcnNdICB8 DQorCQkgICAgICAgfA0KKyAgIFtmcmFtZV0JICAgICAgIHwNCisJCSAgICAg ICB8DQorICAgW3BhZGRpbmcyXQkgICAgICAgfCA9IHRvX2FsbG9jYXRlDQor CQkJCQk8LSBTVEFDS19QT0lOVEVSDQorICAqLw0KK3N0cnVjdCBHVFkoKCkp IGl4ODZfZnJhbWUNCit7DQorICBpbnQgbnNzZXJlZ3M7DQorICBpbnQgbnJl Z3M7DQorICBpbnQgdmFfYXJnX3NpemU7DQorICBpbnQgcmVkX3pvbmVfc2l6 ZTsNCisgIGludCBvdXRnb2luZ19hcmd1bWVudHNfc2l6ZTsNCisNCisgIC8q IFRoZSBvZmZzZXRzIHJlbGF0aXZlIHRvIEFSR19QT0lOVEVSLiAgKi8NCisg IEhPU1RfV0lERV9JTlQgZnJhbWVfcG9pbnRlcl9vZmZzZXQ7DQorICBIT1NU X1dJREVfSU5UIGhhcmRfZnJhbWVfcG9pbnRlcl9vZmZzZXQ7DQorICBIT1NU X1dJREVfSU5UIHN0YWNrX3BvaW50ZXJfb2Zmc2V0Ow0KKyAgSE9TVF9XSURF X0lOVCBoZnBfc2F2ZV9vZmZzZXQ7DQorICBIT1NUX1dJREVfSU5UIHJlZ19z YXZlX29mZnNldDsNCisgIEhPU1RfV0lERV9JTlQgc3RhY2tfcmVhbGlnbl9h bGxvY2F0ZV9vZmZzZXQ7DQorICBIT1NUX1dJREVfSU5UIHN0YWNrX3JlYWxp Z25fb2Zmc2V0Ow0KKyAgSE9TVF9XSURFX0lOVCBvdXRsaW5lZF9zYXZlX29m ZnNldDsNCisgIEhPU1RfV0lERV9JTlQgc3NlX3JlZ19zYXZlX29mZnNldDsN CisNCisgIC8qIFdoZW4gc2F2ZV9yZWdzX3VzaW5nX21vdiBpcyBzZXQsIGVt aXQgcHJvbG9ndWUgdXNpbmcNCisgICAgIG1vdmUgaW5zdGVhZCBvZiBwdXNo IGluc3RydWN0aW9ucy4gICovDQorICBib29sIHNhdmVfcmVnc191c2luZ19t b3Y7DQorfTsNCisNCiAvKiBNYWNoaW5lIHNwZWNpZmljIGZyYW1lIHRyYWNr aW5nIGR1cmluZyBwcm9sb2d1ZS9lcGlsb2d1ZSBnZW5lcmF0aW9uLiAgKi8N CiANCi0jaWZuZGVmIFVTRURfRk9SX1RBUkdFVA0KIHN0cnVjdCBHVFkoKCkp IG1hY2hpbmVfZnJhbWVfc3RhdGUNCiB7DQogICAvKiBUaGlzIHBhaXIgdHJh Y2tzIHRoZSBjdXJyZW50bHkgYWN0aXZlIENGQSBhcyByZWcrb2Zmc2V0LiAg V2hlbiByZWcNCkBAIC0yNTE1LDE0ICsyNTc4LDEyIEBAIGVudW0gZnVuY3Rp b25fdHlwZQ0KIA0KIHN0cnVjdCBHVFkoKCkpIG1hY2hpbmVfZnVuY3Rpb24g ew0KICAgc3RydWN0IHN0YWNrX2xvY2FsX2VudHJ5ICpzdGFja19sb2NhbHM7 DQotICBjb25zdCBjaGFyICpzb21lX2xkX25hbWU7DQogICBpbnQgdmFyYXJn c19ncHJfc2l6ZTsNCiAgIGludCB2YXJhcmdzX2Zwcl9zaXplOw0KICAgaW50 IG9wdGltaXplX21vZGVfc3dpdGNoaW5nW01BWF8zODZfRU5USVRJRVNdOw0K IA0KLSAgLyogTnVtYmVyIG9mIHNhdmVkIHJlZ2lzdGVycyBVU0VfRkFTVF9Q Uk9MT0dVRV9FUElMT0dVRQ0KLSAgICAgaGFzIGJlZW4gY29tcHV0ZWQgZm9y LiAgKi8NCi0gIGludCB1c2VfZmFzdF9wcm9sb2d1ZV9lcGlsb2d1ZV9ucmVn czsNCisgIC8qIENhY2hlZCBpbml0aWFsIGZyYW1lIGxheW91dCBmb3IgdGhl IGN1cnJlbnQgZnVuY3Rpb24uICAqLw0KKyAgc3RydWN0IGl4ODZfZnJhbWUg ZnJhbWU7DQogDQogICAvKiBGb3IgLWZzcGxpdC1zdGFjayBzdXBwb3J0OiBB IHN0YWNrIGxvY2FsIHdoaWNoIGhvbGRzIGEgcG9pbnRlciB0bw0KICAgICAg dGhlIHN0YWNrIGFyZ3VtZW50cyBmb3IgYSBmdW5jdGlvbiB3aXRoIGEgdmFy aWFibGUgbnVtYmVyIG9mDQo= --_003_AM4PR0701MB21622506F222F3D42C56F611E4F90AM4PR0701MB2162_--