Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp1222902imu; Wed, 16 Jan 2019 15:07:51 -0800 (PST) X-Google-Smtp-Source: ALg8bN4cq7TkV405RGB0M5IJ+bdhzIwOozrniqgoBYkBaCFynjsF1bgEjVZHfoohxX0IjvrlFdSq X-Received: by 2002:a63:1258:: with SMTP id 24mr11015523pgs.114.1547680070965; Wed, 16 Jan 2019 15:07:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1547680070; cv=none; d=google.com; s=arc-20160816; b=Dkp023upq1tVK0yzFsGpCpeoc0L9rmpewkWKIzfyfQ6+1S/Fv1ihDgYkqqyZ37zhQe r15ng+xGlE0E4i/kINXx6GNYpx6xmm7V+1w3kCr3bKdfpmmnD7U6YwUEZIyRixfqEr0B Rn5xQ7bnbiK6z2VzDaHMKnwZe+QdlefP5LWn5F4t7NLa2lqMWssTW5FFkUR1QJu1TmGz dQoinG2WjC8DZ8WG78Bm6hQX1q+3xYQ1WDt00tXIt/7sUZAuiU7TED5ne3Y/XFkJl61H UdnuWtRwt92zoRRsR2aBIJ5jze6XIKTl7iVJCmhPxjEJc26UkXrSzzKkhPusnpRRmnxW RoOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-id:spamdiagnosticmetadata:spamdiagnosticoutput :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=cLHfVVQkGYN284hrnvuuwbAHbTba9KBUoP2DvbFPies=; b=d+hiGP5IYYy2RIazelnHj4k+h9L+TChiGrxdtSvrS7mF7cWvwMZynfSb5ZPgtdTsQ/ kBiidiUmnuMui+P0HhH5wNpbIWBhgaCYmnd6Duscj9TdpKK8Ln+4Eqr7KhJg1PcH8bhO 4OreYFb5JRcQUc7yK6pU+cKOozxRwyak6EKNFel3Vwtw518JhB0hblqgRieiOz2QVjbW ZIUQrfvizYndbSJ6lbPY3Nfd015KtaUmL1LlzMV19QPNXY8/N0rWnjLdLu1fYwv0Xtnl 1iLMdFNNgwwbF0zZ0ddZR+JEQGsNVrojLU40Ev0qXjl4NSKz7yDF76rqSn0jiZgjuz61 UTFg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@vmware.com header.s=selector1 header.b="UOUembI/"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=vmware.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l7si7608087pfb.31.2019.01.16.15.07.35; Wed, 16 Jan 2019 15:07:50 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@vmware.com header.s=selector1 header.b="UOUembI/"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=vmware.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2394328AbfAPQtU (ORCPT + 99 others); Wed, 16 Jan 2019 11:49:20 -0500 Received: from mail-eopbgr720053.outbound.protection.outlook.com ([40.107.72.53]:35016 "EHLO NAM05-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2387470AbfAPQtU (ORCPT ); Wed, 16 Jan 2019 11:49:20 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vmware.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cLHfVVQkGYN284hrnvuuwbAHbTba9KBUoP2DvbFPies=; b=UOUembI/fjX7Ba5SFNrvHBWBXQGAdp1Uj2JKdXyhbs8avzzjLC3v8aNJXf44geVd7mCLWQWw4N9JnN8E1q6BSS48RvlJ9UekEzMPi8FYOo/XPv7A1vlzqxJBst02agjsIfz61fYWD963dGZz9R0MjhINb+PCRcRKCWKwqq5ud6w= Received: from BYAPR05MB5592.namprd05.prod.outlook.com (20.177.186.153) by BYAPR05MB5784.namprd05.prod.outlook.com (20.178.48.225) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1537.18; Wed, 16 Jan 2019 16:48:59 +0000 Received: from BYAPR05MB5592.namprd05.prod.outlook.com ([fe80::4a1:2561:2487:5919]) by BYAPR05MB5592.namprd05.prod.outlook.com ([fe80::4a1:2561:2487:5919%4]) with mapi id 15.20.1537.018; Wed, 16 Jan 2019 16:48:59 +0000 From: Thomas Hellstrom To: "robdclark@gmail.com" CC: "corbet@lwn.net" , "linux-kernel@vger.kernel.org" , "peterz@infradead.org" , "dave@stgolabs.net" , "josh@joshtriplett.org" , "tglx@linutronix.de" , "linaro-mm-sig@lists.linaro.org" , "linux-media@vger.kernel.org" , "seanpaul@chromium.org" , Pv-drivers , "dri-devel@lists.freedesktop.org" , "mingo@redhat.com" , "gustavo@padovan.org" , "maarten.lankhorst@linux.intel.com" , Linux-graphics-maintainer , "kstewart@linuxfoundation.org" , "paulmck@linux.vnet.ibm.com" , "airlied@linux.ie" , "pombredanne@nexb.com" , "gregkh@linuxfoundation.org" , "linux-doc@vger.kernel.org" Subject: Re: [PATCH v4 2/3] locking: Implement an algorithm choice for Wound-Wait mutexes Thread-Topic: [PATCH v4 2/3] locking: Implement an algorithm choice for Wound-Wait mutexes Thread-Index: AQHUB6cnLaxKOJOTRkGKdIKKNmYiUaWzPvwAgAAocwA= Date: Wed, 16 Jan 2019 16:48:59 +0000 Message-ID: <9c07b391c16db8b0c788afd4692cc8191baff1aa.camel@vmware.com> References: <20180619082445.11062-1-thellstrom@vmware.com> <20180619082445.11062-3-thellstrom@vmware.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=thellstrom@vmware.com; x-originating-ip: [155.4.205.56] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;BYAPR05MB5784;20:6C45+H/C99u3WZMl0NcfnuAbgGetBpclKDMBMS5C66ddxh7LqGpg4xZumfnOijMZEqo7LslV45GOv8suuUkH3lFeJ0eGckEoxyrUO619K9F97Yt5hq/F+KXEQntRd1EquPyRB1miXRPzpE/kWQcVaeATTyem0WP0InaJwWxnyrM= x-ms-office365-filtering-correlation-id: fdc3f4c4-2127-427e-da42-08d67bd28377 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600109)(711020)(2017052603328)(7153060)(7193020);SRVR:BYAPR05MB5784; x-ms-traffictypediagnostic: BYAPR05MB5784: x-ld-processed: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0,ExtAddr x-microsoft-antispam-prvs: x-forefront-prvs: 091949432C x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(396003)(376002)(366004)(346002)(136003)(39860400002)(199004)(189003)(7736002)(8936002)(6246003)(81156014)(81166006)(305945005)(39060400002)(2501003)(25786009)(6512007)(53946003)(229853002)(30864003)(2906002)(6486002)(6116002)(68736007)(36756003)(1730700003)(1411001)(53936002)(8676002)(4326008)(97736004)(66066001)(118296001)(6506007)(26005)(76176011)(3846002)(53546011)(102836004)(54906003)(5660300001)(446003)(2351001)(86362001)(1361003)(476003)(486006)(106356001)(71190400001)(2616005)(11346002)(99286004)(71200400001)(186003)(316002)(6436002)(478600001)(14444005)(5640700003)(6916009)(14454004)(7416002)(105586002)(256004)(579004)(559001);DIR:OUT;SFP:1101;SCL:1;SRVR:BYAPR05MB5784;H:BYAPR05MB5592.namprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: vmware.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: yQ5Kmw39yAfPdO8EClUzDwndFUb4pKZE5+OjHC9HRGjJGKlhI0YhqK1LDbpYHDT2ksEUpuUBlzxRED7MTO5fzPGDaaD79p6U3R1zHewRJBf935kcdYuA002JkrS8mewHAfxw3SpfWd03rYBZyPbTA8UkzSp4fP1dsNICN87zRvc1qYagVwUJw/TBdcaSrpn+ooPymNlb/XjQHs5jFQq1F6SpffzJaZjGJvi7ynq1fQYyc6FCVU6HID0088AnngDA4w+7qpzMKocdjF1XaUAiZeyBP4a1JMgQmPQu6HndmBVK4sb14SxGmQylDPxr+2tbiUkaYDujKrzwF3NlPgHWzoVT3EyK7/eLmE+G5xKWAhdeSK4mdHQN6G5e5Dj0UkXkRUZMNZItSJHnyZ6UyZKrcPWFi2x63QqYA3+18QQntcw= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-Network-Message-Id: fdc3f4c4-2127-427e-da42-08d67bd28377 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Jan 2019 16:48:59.5890 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR05MB5784 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGksDQoNCk9uIFdlZCwgMjAxOS0wMS0xNiBhdCAwOToyNCAtMDUwMCwgUm9iIENsYXJrIHdyb3Rl Og0KPiBTbywgSSBndWVzcyB0aGlzIGlzIHRvIGRvIHcvIHRoZSBtYWdpYyBvZiBtZXJnZSBjb21t aXRzLCBidXQgaXQgbG9va3MNCj4gbGlrZSB0aGUgaHVuayBjaGFuZ2luZyB0aGUgY3J0Y193d19j bGFzcyBnb3QgbG9zdDoNCg0KU28gd2hhdCBoYXBwZW5lZCBoZXJlIGlzIHRoYXQgdGhpcyBjb21t aXQgY2hhbmdlZCBpdCB0byANCkRFRklORV9XRF9DTEFTUw0KYW5kIHRoZSBmb2xsb3dpbmcgY29t bWl0IGNoYW5nZWQgaXQgYmFjayBhZ2FpbiB0bw0KREVGSU5FX1dXX0NMQVNTDQpzbyB0aGF0IHRo ZSBhbGdvcml0aG0gY2hhbmdlIGFuZCBvbmx5IHRoYXQgY2FtZSB3aXRoIHRoZSBsYXN0IGNvbW1p dC4gDQpBcHBhcmVudGx5IHRoZSBoaXN0b3J5IG9mIHRoYXQgbGluZSBnb3QgbG9zdCB3aGVuIG1l cmdpbmcgc2luY2UgdGhlDQptZXJnZSBkaWRuJ3QgY2hhbmdlIGl0OyBnaXQgYmxhbWUgZG9lc24n dCBzaG93IGl0IGNoYW5nZWQsIGJ1dCB3aGVuDQpsb29raW5nIGF0IHRoZSBjb21taXQgaGlzdG9y eSBpbiBnaXRrIGl0J3MgYWxsIGNsZWFyLiBJIGd1ZXNzIHRoYXQncyBhDQpmZWF0dXJlIG9mIGdp dC4NCg0KVGhlIG1vZGVzZXQgbG9ja3Mgbm93IHVzZSB0cnVlIHdvdW5kLXdhaXQgcmF0aGVyIHRo YW4gd2FpdC1kaWUuDQoNCi9UaG9tYXMNCg0KPiANCj4g7oKwIH4vc3JjL2xpbnV4IO6CsCDugqAg bWFzdGVyIO6CsCBnaXQgc2hvdyAtLXByZXR0eT1zaG9ydA0KPiAwODI5NWIzYjViZWVjOWFhYzBm N2E5ZGI4NmYwZmMzNzkyMDM5ZGEzDQo+IGRyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZXNldF9sb2Nr LmMNCj4gY29tbWl0IDA4Mjk1YjNiNWJlZWM5YWFjMGY3YTlkYjg2ZjBmYzM3OTIwMzlkYTMNCj4g QXV0aG9yOiBUaG9tYXMgSGVsbHN0cm9tIDx0aGVsbHN0cm9tQHZtd2FyZS5jb20+DQo+IA0KPiAg ICAgbG9ja2luZzogSW1wbGVtZW50IGFuIGFsZ29yaXRobSBjaG9pY2UgZm9yIFdvdW5kLVdhaXQg bXV0ZXhlcw0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZXNldF9s b2NrLmMNCj4gYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVzZXRfbG9jay5jDQo+IGluZGV4IDhh NTEwMDY4NTg3NS4uNjM4YmUyZWI2N2I0IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX21vZGVzZXRfbG9jay5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZXNldF9s b2NrLmMNCj4gQEAgLTcwLDcgKzcwLDcgQEANCj4gICAqIGxpc3RzIGFuZCBsb29rdXAgZGF0YSBz dHJ1Y3R1cmVzLg0KPiAgICovDQo+IA0KPiAtc3RhdGljIERFRklORV9XV19DTEFTUyhjcnRjX3d3 X2NsYXNzKTsNCj4gK3N0YXRpYyBERUZJTkVfV0RfQ0xBU1MoY3J0Y193d19jbGFzcyk7DQo+IA0K PiAgLyoqDQo+ICAgKiBkcm1fbW9kZXNldF9sb2NrX2FsbCAtIHRha2UgYWxsIG1vZGVzZXQgbG9j a3MNCj4g7oKwIH4vc3JjL2xpbnV4IO6CsCDugqAgbWFzdGVyIO6CsCBnaXQgbG9nIC0tcHJldHR5 PWZvcm1hdDolSA0KPiBkcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVzZXRfbG9jay5jICB8IGdyZXAN Cj4gMDgyOTViM2I1YmVlYzlhYWMwZjdhOWRiODZmMGZjMzc5MjAzOWRhMw0KPiDugrAgfi9zcmMv bGludXgg7oKwIO6CoCBtYXN0ZXIg7oKwIDEg7oKwDQo+IA0KPiANCj4gQlIsDQo+IC1SDQo+IA0K PiANCj4gT24gVHVlLCBKdW4gMTksIDIwMTggYXQgNDoyOSBBTSBUaG9tYXMgSGVsbHN0cm9tIDwN Cj4gdGhlbGxzdHJvbUB2bXdhcmUuY29tPiB3cm90ZToNCj4gPiBUaGUgY3VycmVudCBXb3VuZC1X YWl0IG11dGV4IGFsZ29yaXRobSBpcyBhY3R1YWxseSBub3QgV291bmQtV2FpdA0KPiA+IGJ1dA0K PiA+IFdhaXQtRGllLiBJbXBsZW1lbnQgYWxzbyBXb3VuZC1XYWl0IGFzIGEgcGVyLXd3LWNsYXNz IGNob2ljZS4NCj4gPiBXb3VuZC1XYWl0DQo+ID4gaXMsIGNvbnRyYXJ5IHRvIFdhaXQtRGllIGEg cHJlZW1wdGl2ZSBhbGdvcml0aG0gYW5kIGlzIGtub3duIHRvDQo+ID4gZ2VuZXJhdGUNCj4gPiBm ZXdlciBiYWNrb2Zmcy4gVGVzdGluZyByZXZlYWxzIHRoYXQgdGhpcyBpcyB0cnVlIGlmIHRoZQ0K PiA+IG51bWJlciBvZiBzaW11bHRhbmVvdXMgY29udGVuZGluZyB0cmFuc2FjdGlvbnMgaXMgc21h bGwuDQo+ID4gQXMgdGhlIG51bWJlciBvZiBzaW11bHRhbmVvdXMgY29udGVuZGluZyB0aHJlYWRz IGluY3JlYXNlcywgV2FpdC0NCj4gPiBXb3VuZA0KPiA+IGJlY29tZXMgaW5mZXJpb3IgdG8gV2Fp dC1EaWUgaW4gdGVybXMgb2YgZWxhcHNlZCB0aW1lLg0KPiA+IFBvc3NpYmx5IGR1ZSB0byB0aGUg bGFyZ2VyIG51bWJlciBvZiBoZWxkIGxvY2tzIG9mIHNsZWVwaW5nDQo+ID4gdHJhbnNhY3Rpb25z Lg0KPiA+IA0KPiA+IFVwZGF0ZSBkb2N1bWVudGF0aW9uIGFuZCBjYWxsZXJzLg0KPiA+IA0KPiA+ IFRpbWluZ3MgdXNpbmcgZ2l0Oi8vcGVvcGxlLmZyZWVkZXNrdG9wLm9yZy9+dGhvbWFzaC93d19t dXRleF90ZXN0DQo+ID4gdGFnIHBhdGNoLTE4LTA2LTE1DQo+ID4gDQo+ID4gRWFjaCB0aHJlYWQg cnVucyAxMDAwMDAgYmF0Y2hlcyBvZiBsb2NrIC8gdW5sb2NrIDgwMCB3dyBtdXRleGVzDQo+ID4g cmFuZG9tbHkNCj4gPiBjaG9zZW4gb3V0IG9mIDEwMDAwMC4gRm91ciBjb3JlIEludGVsIHg4Nl82 NDoNCj4gPiANCj4gPiBBbGdvcml0aG0gICAgI3RocmVhZHMgICAgICAgUm9sbGJhY2tzICB0aW1l DQo+ID4gV291bmQtV2FpdCAgIDQgICAgICAgICAgICAgIH4xMDAgICAgICAgfjE3cy4NCj4gPiBX YWl0LURpZSAgICAgNCAgICAgICAgICAgICAgfjE1MDAwMCAgICB+MTlzLg0KPiA+IFdvdW5kLVdh aXQgICAxNiAgICAgICAgICAgICB+MzYwMDAwICAgIH4xMDlzLg0KPiA+IFdhaXQtRGllICAgICAx NiAgICAgICAgICAgICB+NDUwMDAwICAgIH44MnMuDQo+ID4gDQo+ID4gQ2M6IEluZ28gTW9sbmFy IDxtaW5nb0ByZWRoYXQuY29tPg0KPiA+IENjOiBKb25hdGhhbiBDb3JiZXQgPGNvcmJldEBsd24u bmV0Pg0KPiA+IENjOiBHdXN0YXZvIFBhZG92YW4gPGd1c3Rhdm9AcGFkb3Zhbi5vcmc+DQo+ID4g Q2M6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+ DQo+ID4gQ2M6IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPg0KPiA+IENjOiBEYXZp ZCBBaXJsaWUgPGFpcmxpZWRAbGludXguaWU+DQo+ID4gQ2M6IERhdmlkbG9ociBCdWVzbyA8ZGF2 ZUBzdGdvbGFicy5uZXQ+DQo+ID4gQ2M6ICJQYXVsIEUuIE1jS2VubmV5IiA8cGF1bG1ja0BsaW51 eC52bmV0LmlibS5jb20+DQo+ID4gQ2M6IEpvc2ggVHJpcGxldHQgPGpvc2hAam9zaHRyaXBsZXR0 Lm9yZz4NCj4gPiBDYzogVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXguZGU+DQo+ID4g Q2M6IEthdGUgU3Rld2FydCA8a3N0ZXdhcnRAbGludXhmb3VuZGF0aW9uLm9yZz4NCj4gPiBDYzog UGhpbGlwcGUgT21icmVkYW5uZSA8cG9tYnJlZGFubmVAbmV4Yi5jb20+DQo+ID4gQ2M6IEdyZWcg S3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+DQo+ID4gQ2M6IGxpbnV4 LWRvY0B2Z2VyLmtlcm5lbC5vcmcNCj4gPiBDYzogbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3Jn DQo+ID4gQ2M6IGxpbmFyby1tbS1zaWdAbGlzdHMubGluYXJvLm9yZw0KPiA+IENvLWF1dGhvcmVk LWJ5OiBQZXRlciBaaWpsc3RyYSA8cGV0ZXJ6QGluZnJhZGVhZC5vcmc+DQo+ID4gU2lnbmVkLW9m Zi1ieTogVGhvbWFzIEhlbGxzdHJvbSA8dGhlbGxzdHJvbUB2bXdhcmUuY29tPg0KPiA+IA0KPiA+ IC0tLQ0KPiA+IHYyOg0KPiA+ICogVXBkYXRlIEFQSSBhY2NvcmRpbmcgdG8gcmV2aWV3IGNvbW1l bnQgYnkgR3JlZyBLcm9haC1IYXJ0bWFuLg0KPiA+ICogQWRkcmVzcyByZXZpZXcgY29tbWVudHMg YnkgUGV0ZXIgWmlqbHN0cmE6DQo+ID4gICAtIEF2b2lkIF9Cb29sIGluIGNvbXBvc2l0ZXMNCj4g PiAgIC0gRml4IHR5cG8NCj4gPiAgIC0gVXNlIF9fbXV0ZXhfb3duZXIoKSB3aGVyZSBhcHBsaWNh YmxlDQo+ID4gICAtIFJlbHkgb24gYnVpbHQtaW4gYmFycmllcnMgZm9yIHRoZSBtYWluIGxvb3Ag ZXhpdCBjb25kaXRpb24sDQo+ID4gICAgIHN0cnVjdCB3d19hY3F1aXJlX2N0eDo6d291bmRlZC4g VXBkYXRlIGNvZGUgY29tbWVudHMuDQo+ID4gICAtIEV4cGxhaW4gdW5sb2NrZWQgdXNlIG9mIGxp c3RfZW1wdHkoKS4NCj4gPiB2MzoNCj4gPiAqIEFkYXB0IHRvIGFuZCBpbmNvcnBvcmF0ZSBjbGVh bnVwIGJ5IFBldGVyIFppamxzdHJhDQo+ID4gKiBSZW1vdmUgdW5sb2NrZWQgdXNlIG9mIGxpc3Rf ZW1wdHkoKS4NCj4gPiB2NDoNCj4gPiAqIE1vdmUgY29kZSByZWxhdGVkIHRvIGFkZGluZyBhIHdh aXRlciB0byB0aGUgbG9jayB3YWl0ZXIgbGlzdCB0byBhDQo+ID4gICBzZXBhcmF0ZSBmdW5jdGlv bi4NCj4gPiAtLS0NCj4gPiAgRG9jdW1lbnRhdGlvbi9sb2NraW5nL3d3LW11dGV4LWRlc2lnbi50 eHQgfCAgNTcgKysrKysrKysrLS0NCj4gPiAgZHJpdmVycy9kbWEtYnVmL3Jlc2VydmF0aW9uLmMg ICAgICAgICAgICAgfCAgIDIgKy0NCj4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9tb2Rlc2V0X2xv Y2suYyAgICAgICAgfCAgIDIgKy0NCj4gPiAgaW5jbHVkZS9saW51eC93d19tdXRleC5oICAgICAg ICAgICAgICAgICAgfCAgMTcgKystDQo+ID4gIGtlcm5lbC9sb2NraW5nL2xvY2t0b3J0dXJlLmMg ICAgICAgICAgICAgIHwgICAyICstDQo+ID4gIGtlcm5lbC9sb2NraW5nL211dGV4LmMgICAgICAg ICAgICAgICAgICAgIHwgMTY1DQo+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tDQo+ ID4gIGtlcm5lbC9sb2NraW5nL3Rlc3Qtd3dfbXV0ZXguYyAgICAgICAgICAgIHwgICAyICstDQo+ ID4gIGxpYi9sb2NraW5nLXNlbGZ0ZXN0LmMgICAgICAgICAgICAgICAgICAgIHwgICAyICstDQo+ ID4gIDggZmlsZXMgY2hhbmdlZCwgMjEzIGluc2VydGlvbnMoKyksIDM2IGRlbGV0aW9ucygtKQ0K PiA+IA0KPiA+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2xvY2tpbmcvd3ctbXV0ZXgtZGVz aWduLnR4dA0KPiA+IGIvRG9jdW1lbnRhdGlvbi9sb2NraW5nL3d3LW11dGV4LWRlc2lnbi50eHQN Cj4gPiBpbmRleCAyZmQ3ZjJhMmFmMjEuLmYwZWQ3YzMwZTY5NSAxMDA2NDQNCj4gPiAtLS0gYS9E b2N1bWVudGF0aW9uL2xvY2tpbmcvd3ctbXV0ZXgtZGVzaWduLnR4dA0KPiA+ICsrKyBiL0RvY3Vt ZW50YXRpb24vbG9ja2luZy93dy1tdXRleC1kZXNpZ24udHh0DQo+ID4gQEAgLTEsNCArMSw0IEBA DQo+ID4gLVdhaXQvV291bmQgRGVhZGxvY2stUHJvb2YgTXV0ZXggRGVzaWduDQo+ID4gK1dvdW5k L1dhaXQgRGVhZGxvY2stUHJvb2YgTXV0ZXggRGVzaWduDQo+ID4gID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQo+ID4gDQo+ID4gIFBsZWFzZSByZWFkIG11dGV4LWRlc2ln bi50eHQgZmlyc3QsIGFzIGl0IGFwcGxpZXMgdG8gd2FpdC93b3VuZA0KPiA+IG11dGV4ZXMgdG9v Lg0KPiA+IEBAIC0zMiwxMCArMzIsMjYgQEAgdGhlIG9sZGVzdCB0YXNrKSB3aW5zLCBhbmQgdGhl IG9uZSB3aXRoIHRoZQ0KPiA+IGhpZ2hlciByZXNlcnZhdGlvbiBpZCAoaS5lLiB0aGUNCj4gPiAg eW91bmdlciB0YXNrKSB1bmxvY2tzIGFsbCBvZiB0aGUgYnVmZmVycyB0aGF0IGl0IGhhcyBhbHJl YWR5DQo+ID4gbG9ja2VkLCBhbmQgdGhlbg0KPiA+ICB0cmllcyBhZ2Fpbi4NCj4gPiANCj4gPiAt SW4gdGhlIFJEQk1TIGxpdGVyYXR1cmUgdGhpcyBkZWFkbG9jayBoYW5kbGluZyBhcHByb2FjaCBp cyBjYWxsZWQNCj4gPiB3YWl0L2RpZToNCj4gPiAtVGhlIG9sZGVyIHRhc2tzIHdhaXRzIHVudGls IGl0IGNhbiBhY3F1aXJlIHRoZSBjb250ZW5kZWQgbG9jay4gVGhlDQo+ID4geW91bmdlciB0YXNr cw0KPiA+IC1uZWVkcyB0byBiYWNrIG9mZiBhbmQgZHJvcCBhbGwgdGhlIGxvY2tzIGl0IGlzIGN1 cnJlbnRseSBob2xkaW5nLA0KPiA+IGkuZS4gdGhlDQo+ID4gLXlvdW5nZXIgdGFzayBkaWVzLg0K PiA+ICtJbiB0aGUgUkRCTVMgbGl0ZXJhdHVyZSwgYSByZXNlcnZhdGlvbiB0aWNrZXQgaXMgYXNz b2NpYXRlZCB3aXRoIGENCj4gPiB0cmFuc2FjdGlvbi4NCj4gPiArYW5kIHRoZSBkZWFkbG9jayBo YW5kbGluZyBhcHByb2FjaCBpcyBjYWxsZWQgV2FpdC1EaWUuIFRoZSBuYW1lIGlzDQo+ID4gYmFz ZWQgb24NCj4gPiArdGhlIGFjdGlvbnMgb2YgYSBsb2NraW5nIHRocmVhZCB3aGVuIGl0IGVuY291 bnRlcnMgYW4gYWxyZWFkeQ0KPiA+IGxvY2tlZCBtdXRleC4NCj4gPiArSWYgdGhlIHRyYW5zYWN0 aW9uIGhvbGRpbmcgdGhlIGxvY2sgaXMgeW91bmdlciwgdGhlIGxvY2tpbmcNCj4gPiB0cmFuc2Fj dGlvbiB3YWl0cy4NCj4gPiArSWYgdGhlIHRyYW5zYWN0aW9uIGhvbGRpbmcgdGhlIGxvY2sgaXMg b2xkZXIsIHRoZSBsb2NraW5nDQo+ID4gdHJhbnNhY3Rpb24gYmFja3Mgb2ZmDQo+ID4gK2FuZCBk aWVzLiBIZW5jZSBXYWl0LURpZS4NCj4gPiArVGhlcmUgaXMgYWxzbyBhbm90aGVyIGFsZ29yaXRo bSBjYWxsZWQgV291bmQtV2FpdDoNCj4gPiArSWYgdGhlIHRyYW5zYWN0aW9uIGhvbGRpbmcgdGhl IGxvY2sgaXMgeW91bmdlciwgdGhlIGxvY2tpbmcNCj4gPiB0cmFuc2FjdGlvbg0KPiA+ICt3b3Vu ZHMgdGhlIHRyYW5zYWN0aW9uIGhvbGRpbmcgdGhlIGxvY2ssIHJlcXVlc3RpbmcgaXQgdG8gZGll Lg0KPiA+ICtJZiB0aGUgdHJhbnNhY3Rpb24gaG9sZGluZyB0aGUgbG9jayBpcyBvbGRlciwgaXQg d2FpdHMgZm9yIHRoZQ0KPiA+IG90aGVyDQo+ID4gK3RyYW5zYWN0aW9uLiBIZW5jZSBXb3VuZC1X YWl0Lg0KPiA+ICtUaGUgdHdvIGFsZ29yaXRobXMgYXJlIGJvdGggZmFpciBpbiB0aGF0IGEgdHJh bnNhY3Rpb24gd2lsbA0KPiA+IGV2ZW50dWFsbHkgc3VjY2VlZC4NCj4gPiArSG93ZXZlciwgdGhl IFdvdW5kLVdhaXQgYWxnb3JpdGhtIGlzIHR5cGljYWxseSBzdGF0ZWQgdG8gZ2VuZXJhdGUNCj4g PiBmZXdlciBiYWNrb2Zmcw0KPiA+ICtjb21wYXJlZCB0byBXYWl0LURpZSwgYnV0IGlzLCBvbiB0 aGUgb3RoZXIgaGFuZCwgYXNzb2NpYXRlZCB3aXRoDQo+ID4gbW9yZSB3b3JrIHRoYW4NCj4gPiAr V2FpdC1EaWUgd2hlbiByZWNvdmVyaW5nIGZyb20gYSBiYWNrb2ZmLiBXb3VuZC1XYWl0IGlzIGFs c28gYQ0KPiA+IHByZWVtcHRpdmUNCj4gPiArYWxnb3JpdGhtIGluIHRoYXQgdHJhbnNhY3Rpb25z IGFyZSB3b3VuZGVkIGJ5IG90aGVyIHRyYW5zYWN0aW9ucywNCj4gPiBhbmQgdGhhdA0KPiA+ICty ZXF1aXJlcyBhIHJlbGlhYmxlIHdheSB0byBwaWNrIHVwIHVwIHRoZSB3b3VuZGVkIGNvbmRpdGlv biBhbmQNCj4gPiBwcmVlbXB0IHRoZQ0KPiA+ICtydW5uaW5nIHRyYW5zYWN0aW9uLiBOb3RlIHRo YXQgdGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgcHJvY2Vzcw0KPiA+IHByZWVtcHRpb24uIEENCj4g PiArV291bmQtV2FpdCB0cmFuc2FjdGlvbiBpcyBjb25zaWRlcmVkIHByZWVtcHRlZCB3aGVuIGl0 IGRpZXMNCj4gPiAocmV0dXJuaW5nDQo+ID4gKy1FREVBRExLKSBmb2xsb3dpbmcgYSB3b3VuZC4N Cj4gPiANCj4gPiAgQ29uY2VwdHMNCj4gPiAgLS0tLS0tLS0NCj4gPiBAQCAtNDcsMTAgKzYzLDEy IEBAIEFjcXVpcmUgY29udGV4dDogVG8gZW5zdXJlIGV2ZW50dWFsIGZvcndhcmQNCj4gPiBwcm9n cmVzcyBpdCBpcyBpbXBvcnRhbnQgdGhlIGEgdGFzaw0KPiA+ICB0cnlpbmcgdG8gYWNxdWlyZSBs b2NrcyBkb2Vzbid0IGdyYWIgYSBuZXcgcmVzZXJ2YXRpb24gaWQsIGJ1dA0KPiA+IGtlZXBzIHRo ZSBvbmUgaXQNCj4gPiAgYWNxdWlyZWQgd2hlbiBzdGFydGluZyB0aGUgbG9jayBhY3F1aXNpdGlv bi4gVGhpcyB0aWNrZXQgaXMgc3RvcmVkDQo+ID4gaW4gdGhlDQo+ID4gIGFjcXVpcmUgY29udGV4 dC4gRnVydGhlcm1vcmUgdGhlIGFjcXVpcmUgY29udGV4dCBrZWVwcyB0cmFjayBvZg0KPiA+IGRl YnVnZ2luZyBzdGF0ZQ0KPiA+IC10byBjYXRjaCB3L3cgbXV0ZXggaW50ZXJmYWNlIGFidXNlLg0K PiA+ICt0byBjYXRjaCB3L3cgbXV0ZXggaW50ZXJmYWNlIGFidXNlLiBBbiBhY3F1aXJlIGNvbnRl eHQgaXMNCj4gPiByZXByZXNlbnRpbmcgYQ0KPiA+ICt0cmFuc2FjdGlvbi4NCj4gPiANCj4gPiAg Vy93IGNsYXNzOiBJbiBjb250cmFzdCB0byBub3JtYWwgbXV0ZXhlcyB0aGUgbG9jayBjbGFzcyBu ZWVkcyB0bw0KPiA+IGJlIGV4cGxpY2l0IGZvcg0KPiA+IC13L3cgbXV0ZXhlcywgc2luY2UgaXQg aXMgcmVxdWlyZWQgdG8gaW5pdGlhbGl6ZSB0aGUgYWNxdWlyZQ0KPiA+IGNvbnRleHQuDQo+ID4g K3cvdyBtdXRleGVzLCBzaW5jZSBpdCBpcyByZXF1aXJlZCB0byBpbml0aWFsaXplIHRoZSBhY3F1 aXJlDQo+ID4gY29udGV4dC4gVGhlIGxvY2sNCj4gPiArY2xhc3MgYWxzbyBzcGVjaWZpZXMgd2hh dCBhbGdvcml0aG0gdG8gdXNlLCBXb3VuZC1XYWl0IG9yIFdhaXQtDQo+ID4gRGllLg0KPiA+IA0K PiA+ICBGdXJ0aGVybW9yZSB0aGVyZSBhcmUgdGhyZWUgZGlmZmVyZW50IGNsYXNzIG9mIHcvdyBs b2NrIGFjcXVpcmUNCj4gPiBmdW5jdGlvbnM6DQo+ID4gDQo+ID4gQEAgLTkwLDYgKzEwOCwxMiBA QCBwcm92aWRlZC4NCj4gPiAgVXNhZ2UNCj4gPiAgLS0tLS0NCj4gPiANCj4gPiArVGhlIGFsZ29y aXRobSAoV2FpdC1EaWUgdnMgV291bmQtV2FpdCkgaXMgY2hvc2VuIGJ5IHVzaW5nIGVpdGhlcg0K PiA+ICtERUZJTkVfV1dfQ0xBU1MoKSAoV291bmQtV2FpdCkgb3IgREVGSU5FX1dEX0NMQVNTKCkg KFdhaXQtRGllKQ0KPiA+ICtBcyBhIHJvdWdoIHJ1bGUgb2YgdGh1bWIsIHVzZSBXb3VuZC1XYWl0 IGlmZiB5b3UNCj4gPiArZXhwZWN0IHRoZSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIGNvbXBldGlu ZyB0cmFuc2FjdGlvbnMgdG8gYmUNCj4gPiB0eXBpY2FsbHkgc21hbGwsDQo+ID4gK2FuZCB5b3Ug d2FudCB0byByZWR1Y2UgdGhlIG51bWJlciBvZiByb2xsYmFja3MuDQo+ID4gKw0KPiA+ICBUaHJl ZSBkaWZmZXJlbnQgd2F5cyB0byBhY3F1aXJlIGxvY2tzIHdpdGhpbiB0aGUgc2FtZSB3L3cgY2xh c3MuDQo+ID4gQ29tbW9uDQo+ID4gIGRlZmluaXRpb25zIGZvciBtZXRob2RzICMxIGFuZCAjMjoN Cj4gPiANCj4gPiBAQCAtMzEyLDEyICszMzYsMjMgQEAgRGVzaWduOg0KPiA+ICAgIFdlIG1haW50 YWluIHRoZSBmb2xsb3dpbmcgaW52YXJpYW50cyBmb3IgdGhlIHdhaXQgbGlzdDoNCj4gPiAgICAo MSkgV2FpdGVycyB3aXRoIGFuIGFjcXVpcmUgY29udGV4dCBhcmUgc29ydGVkIGJ5IHN0YW1wIG9y ZGVyOw0KPiA+IHdhaXRlcnMNCj4gPiAgICAgICAgd2l0aG91dCBhbiBhY3F1aXJlIGNvbnRleHQg YXJlIGludGVyc3BlcnNlZCBpbiBGSUZPIG9yZGVyLg0KPiA+IC0gICgyKSBBbW9uZyB3YWl0ZXJz IHdpdGggY29udGV4dHMsIG9ubHkgdGhlIGZpcnN0IG9uZSBjYW4gaGF2ZQ0KPiA+IG90aGVyIGxv Y2tzDQo+ID4gLSAgICAgIGFjcXVpcmVkIGFscmVhZHkgKGN0eC0+YWNxdWlyZWQgPiAwKS4gTm90 ZSB0aGF0IHRoaXMgd2FpdGVyDQo+ID4gbWF5IGNvbWUNCj4gPiAtICAgICAgYWZ0ZXIgb3RoZXIg d2FpdGVycyB3aXRob3V0IGNvbnRleHRzIGluIHRoZSBsaXN0Lg0KPiA+ICsgICgyKSBGb3IgV2Fp dC1EaWUsIGFtb25nIHdhaXRlcnMgd2l0aCBjb250ZXh0cywgb25seSB0aGUgZmlyc3QNCj4gPiBv bmUgY2FuIGhhdmUNCj4gPiArICAgICAgb3RoZXIgbG9ja3MgYWNxdWlyZWQgYWxyZWFkeSAoY3R4 LT5hY3F1aXJlZCA+IDApLiBOb3RlIHRoYXQNCj4gPiB0aGlzIHdhaXRlcg0KPiA+ICsgICAgICBt YXkgY29tZSBhZnRlciBvdGhlciB3YWl0ZXJzIHdpdGhvdXQgY29udGV4dHMgaW4gdGhlIGxpc3Qu DQo+ID4gKw0KPiA+ICsgIFRoZSBXb3VuZC1XYWl0IHByZWVtcHRpb24gaXMgaW1wbGVtZW50ZWQg d2l0aCBhIGxhenktcHJlZW1wdGlvbg0KPiA+IHNjaGVtZToNCj4gPiArICBUaGUgd291bmRlZCBz dGF0dXMgb2YgdGhlIHRyYW5zYWN0aW9uIGlzIGNoZWNrZWQgb25seSB3aGVuIHRoZXJlDQo+ID4g aXMNCj4gPiArICBjb250ZW50aW9uIGZvciBhIG5ldyBsb2NrIGFuZCBoZW5jZSBhIHRydWUgY2hh bmNlIG9mIGRlYWRsb2NrLg0KPiA+IEluIHRoYXQNCj4gPiArICBzaXR1YXRpb24sIGlmIHRoZSB0 cmFuc2FjdGlvbiBpcyB3b3VuZGVkLCBpdCBiYWNrcyBvZmYsIGNsZWFycw0KPiA+IHRoZQ0KPiA+ ICsgIHdvdW5kZWQgc3RhdHVzIGFuZCByZXRyaWVzLiBBIGdyZWF0IGJlbmVmaXQgb2YgaW1wbGVt ZW50aW5nDQo+ID4gcHJlZW1wdGlvbiBpbg0KPiA+ICsgIHRoaXMgd2F5IGlzIHRoYXQgdGhlIHdv dW5kZWQgdHJhbnNhY3Rpb24gY2FuIGlkZW50aWZ5IGENCj4gPiBjb250ZW5kaW5nIGxvY2sgdG8N Cj4gPiArICB3YWl0IGZvciBiZWZvcmUgcmVzdGFydGluZyB0aGUgdHJhbnNhY3Rpb24uIEp1c3Qg YmxpbmRseQ0KPiA+IHJlc3RhcnRpbmcgdGhlDQo+ID4gKyAgdHJhbnNhY3Rpb24gd291bGQgbGlr ZWx5IG1ha2UgdGhlIHRyYW5zYWN0aW9uIGVuZCB1cCBpbiBhDQo+ID4gc2l0dWF0aW9uIHdoZXJl DQo+ID4gKyAgaXQgd291bGQgaGF2ZSB0byBiYWNrIG9mZiBhZ2Fpbi4NCj4gPiANCj4gPiAgICBJ biBnZW5lcmFsLCBub3QgbXVjaCBjb250ZW50aW9uIGlzIGV4cGVjdGVkLiBUaGUgbG9ja3MgYXJl DQo+ID4gdHlwaWNhbGx5IHVzZWQgdG8NCj4gPiAtICBzZXJpYWxpemUgYWNjZXNzIHRvIHJlc291 cmNlcyBmb3IgZGV2aWNlcy4NCj4gPiArICBzZXJpYWxpemUgYWNjZXNzIHRvIHJlc291cmNlcyBm b3IgZGV2aWNlcywgYW5kIG9wdGltaXphdGlvbg0KPiA+IGZvY3VzIHNob3VsZA0KPiA+ICsgIHRo ZXJlZm9yZSBiZSBkaXJlY3RlZCB0b3dhcmRzIHRoZSB1bmNvbnRlbmRlZCBjYXNlcy4NCj4gPiAN Cj4gPiAgTG9ja2RlcDoNCj4gPiAgICBTcGVjaWFsIGNhcmUgaGFzIGJlZW4gdGFrZW4gdG8gd2Fy biBmb3IgYXMgbWFueSBjYXNlcyBvZiBhcGkNCj4gPiBhYnVzZQ0KPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2RtYS1idWYvcmVzZXJ2YXRpb24uYyBiL2RyaXZlcnMvZG1hLQ0KPiA+IGJ1Zi9yZXNl cnZhdGlvbi5jDQo+ID4gaW5kZXggMzE0ZWIxMDcxY2NlLi4yMGJmOTBmNGVlNjMgMTAwNjQ0DQo+ ID4gLS0tIGEvZHJpdmVycy9kbWEtYnVmL3Jlc2VydmF0aW9uLmMNCj4gPiArKysgYi9kcml2ZXJz L2RtYS1idWYvcmVzZXJ2YXRpb24uYw0KPiA+IEBAIC00Niw3ICs0Niw3IEBADQo+ID4gICAqIHdy aXRlLXNpZGUgdXBkYXRlcy4NCj4gPiAgICovDQo+ID4gDQo+ID4gLURFRklORV9XV19DTEFTUyhy ZXNlcnZhdGlvbl93d19jbGFzcyk7DQo+ID4gK0RFRklORV9XRF9DTEFTUyhyZXNlcnZhdGlvbl93 d19jbGFzcyk7DQo+ID4gIEVYUE9SVF9TWU1CT0wocmVzZXJ2YXRpb25fd3dfY2xhc3MpOw0KPiA+ IA0KPiA+ICBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgcmVzZXJ2YXRpb25fc2VxY291bnRfY2xhc3M7 DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZXNldF9sb2NrLmMNCj4g PiBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZXNldF9sb2NrLmMNCj4gPiBpbmRleCA4YTUxMDA2 ODU4NzUuLjYzOGJlMmViNjdiNCAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJt X21vZGVzZXRfbG9jay5jDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9tb2Rlc2V0X2xv Y2suYw0KPiA+IEBAIC03MCw3ICs3MCw3IEBADQo+ID4gICAqIGxpc3RzIGFuZCBsb29rdXAgZGF0 YSBzdHJ1Y3R1cmVzLg0KPiA+ICAgKi8NCj4gPiANCj4gPiAtc3RhdGljIERFRklORV9XV19DTEFT UyhjcnRjX3d3X2NsYXNzKTsNCj4gPiArc3RhdGljIERFRklORV9XRF9DTEFTUyhjcnRjX3d3X2Ns YXNzKTsNCj4gPiANCj4gPiAgLyoqDQo+ID4gICAqIGRybV9tb2Rlc2V0X2xvY2tfYWxsIC0gdGFr ZSBhbGwgbW9kZXNldCBsb2Nrcw0KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3d3X211 dGV4LmggYi9pbmNsdWRlL2xpbnV4L3d3X211dGV4LmgNCj4gPiBpbmRleCBmODJmY2UyMjI5Yzgu LjNhZjdjMGUwM2JlNSAxMDA2NDQNCj4gPiAtLS0gYS9pbmNsdWRlL2xpbnV4L3d3X211dGV4LmgN Cj4gPiArKysgYi9pbmNsdWRlL2xpbnV4L3d3X211dGV4LmgNCj4gPiBAQCAtOCw2ICs4LDggQEAN Cj4gPiAgICoNCj4gPiAgICogV2FpdC9EaWUgaW1wbGVtZW50YXRpb246DQo+ID4gICAqICBDb3B5 cmlnaHQgKEMpIDIwMTMgQ2Fub25pY2FsIEx0ZC4NCj4gPiArICogQ2hvaWNlIG9mIGFsZ29yaXRo bToNCj4gPiArICogIENvcHlyaWdodCAoQykgMjAxOCBXTVdhcmUgSW5jLg0KPiA+ICAgKg0KPiA+ ICAgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIG1haW4gZGF0YSBzdHJ1Y3R1cmUgYW5kIEFQSSBk ZWZpbml0aW9ucy4NCj4gPiAgICovDQo+ID4gQEAgLTIzLDEyICsyNSwxNSBAQCBzdHJ1Y3Qgd3df Y2xhc3Mgew0KPiA+ICAgICAgICAgc3RydWN0IGxvY2tfY2xhc3Nfa2V5IG11dGV4X2tleTsNCj4g PiAgICAgICAgIGNvbnN0IGNoYXIgKmFjcXVpcmVfbmFtZTsNCj4gPiAgICAgICAgIGNvbnN0IGNo YXIgKm11dGV4X25hbWU7DQo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgaXNfd2FpdF9kaWU7DQo+ ID4gIH07DQo+ID4gDQo+ID4gIHN0cnVjdCB3d19hY3F1aXJlX2N0eCB7DQo+ID4gICAgICAgICBz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7DQo+ID4gICAgICAgICB1bnNpZ25lZCBsb25nIHN0YW1w Ow0KPiA+ICAgICAgICAgdW5zaWduZWQgaW50IGFjcXVpcmVkOw0KPiA+ICsgICAgICAgdW5zaWdu ZWQgc2hvcnQgd291bmRlZDsNCj4gPiArICAgICAgIHVuc2lnbmVkIHNob3J0IGlzX3dhaXRfZGll Ow0KPiA+ICAjaWZkZWYgQ09ORklHX0RFQlVHX01VVEVYRVMNCj4gPiAgICAgICAgIHVuc2lnbmVk IGludCBkb25lX2FjcXVpcmU7DQo+ID4gICAgICAgICBzdHJ1Y3Qgd3dfY2xhc3MgKnd3X2NsYXNz Ow0KPiA+IEBAIC01OCwxNyArNjMsMjEgQEAgc3RydWN0IHd3X211dGV4IHsNCj4gPiAgIyBkZWZp bmUgX19XV19DTEFTU19NVVRFWF9JTklUSUFMSVpFUihsb2NrbmFtZSwgY2xhc3MpDQo+ID4gICNl bmRpZg0KPiA+IA0KPiA+IC0jZGVmaW5lIF9fV1dfQ0xBU1NfSU5JVElBTElaRVIod3dfY2xhc3Mp IFwNCj4gPiArI2RlZmluZSBfX1dXX0NMQVNTX0lOSVRJQUxJWkVSKHd3X2NsYXNzLCBfaXNfd2Fp dF9kaWUpICAgICBcDQo+ID4gICAgICAgICAgICAgICAgIHsgLnN0YW1wID0gQVRPTUlDX0xPTkdf SU5JVCgwKSBcDQo+ID4gICAgICAgICAgICAgICAgICwgLmFjcXVpcmVfbmFtZSA9ICN3d19jbGFz cyAiX2FjcXVpcmUiIFwNCj4gPiAtICAgICAgICAgICAgICAgLCAubXV0ZXhfbmFtZSA9ICN3d19j bGFzcyAiX211dGV4IiB9DQo+ID4gKyAgICAgICAgICAgICAgICwgLm11dGV4X25hbWUgPSAjd3df Y2xhc3MgIl9tdXRleCIgXA0KPiA+ICsgICAgICAgICAgICAgICAsIC5pc193YWl0X2RpZSA9IF9p c193YWl0X2RpZSB9DQo+ID4gDQo+ID4gICNkZWZpbmUgX19XV19NVVRFWF9JTklUSUFMSVpFUihs b2NrbmFtZSwgY2xhc3MpIFwNCj4gPiAgICAgICAgICAgICAgICAgeyAuYmFzZSA9ICBfX01VVEVY X0lOSVRJQUxJWkVSKGxvY2tuYW1lLmJhc2UpIFwNCj4gPiAgICAgICAgICAgICAgICAgX19XV19D TEFTU19NVVRFWF9JTklUSUFMSVpFUihsb2NrbmFtZSwgY2xhc3MpIH0NCj4gPiANCj4gPiArI2Rl ZmluZSBERUZJTkVfV0RfQ0xBU1MoY2xhc3NuYW1lKSBcDQo+ID4gKyAgICAgICBzdHJ1Y3Qgd3df Y2xhc3MgY2xhc3NuYW1lID0NCj4gPiBfX1dXX0NMQVNTX0lOSVRJQUxJWkVSKGNsYXNzbmFtZSwg MSkNCj4gPiArDQo+ID4gICNkZWZpbmUgREVGSU5FX1dXX0NMQVNTKGNsYXNzbmFtZSkgXA0KPiA+ IC0gICAgICAgc3RydWN0IHd3X2NsYXNzIGNsYXNzbmFtZSA9DQo+ID4gX19XV19DTEFTU19JTklU SUFMSVpFUihjbGFzc25hbWUpDQo+ID4gKyAgICAgICBzdHJ1Y3Qgd3dfY2xhc3MgY2xhc3NuYW1l ID0NCj4gPiBfX1dXX0NMQVNTX0lOSVRJQUxJWkVSKGNsYXNzbmFtZSwgMCkNCj4gPiANCj4gPiAg I2RlZmluZSBERUZJTkVfV1dfTVVURVgobXV0ZXhuYW1lLCB3d19jbGFzcykgXA0KPiA+ICAgICAg ICAgc3RydWN0IHd3X211dGV4IG11dGV4bmFtZSA9DQo+ID4gX19XV19NVVRFWF9JTklUSUFMSVpF UihtdXRleG5hbWUsIHd3X2NsYXNzKQ0KPiA+IEBAIC0xMjMsNiArMTMyLDggQEAgc3RhdGljIGlu bGluZSB2b2lkIHd3X2FjcXVpcmVfaW5pdChzdHJ1Y3QNCj4gPiB3d19hY3F1aXJlX2N0eCAqY3R4 LA0KPiA+ICAgICAgICAgY3R4LT50YXNrID0gY3VycmVudDsNCj4gPiAgICAgICAgIGN0eC0+c3Rh bXAgPSBhdG9taWNfbG9uZ19pbmNfcmV0dXJuX3JlbGF4ZWQoJnd3X2NsYXNzLQ0KPiA+ID5zdGFt cCk7DQo+ID4gICAgICAgICBjdHgtPmFjcXVpcmVkID0gMDsNCj4gPiArICAgICAgIGN0eC0+d291 bmRlZCA9IGZhbHNlOw0KPiA+ICsgICAgICAgY3R4LT5pc193YWl0X2RpZSA9IHd3X2NsYXNzLT5p c193YWl0X2RpZTsNCj4gPiAgI2lmZGVmIENPTkZJR19ERUJVR19NVVRFWEVTDQo+ID4gICAgICAg ICBjdHgtPnd3X2NsYXNzID0gd3dfY2xhc3M7DQo+ID4gICAgICAgICBjdHgtPmRvbmVfYWNxdWly ZSA9IDA7DQo+ID4gZGlmZiAtLWdpdCBhL2tlcm5lbC9sb2NraW5nL2xvY2t0b3J0dXJlLmMNCj4g PiBiL2tlcm5lbC9sb2NraW5nL2xvY2t0b3J0dXJlLmMNCj4gPiBpbmRleCA2ODUwZmZkNjkxMjUu LjkwN2UwMzI1ODkyYyAxMDA2NDQNCj4gPiAtLS0gYS9rZXJuZWwvbG9ja2luZy9sb2NrdG9ydHVy ZS5jDQo+ID4gKysrIGIva2VybmVsL2xvY2tpbmcvbG9ja3RvcnR1cmUuYw0KPiA+IEBAIC0zNjUs NyArMzY1LDcgQEAgc3RhdGljIHN0cnVjdCBsb2NrX3RvcnR1cmVfb3BzIG11dGV4X2xvY2tfb3Bz ID0NCj4gPiB7DQo+ID4gIH07DQo+ID4gDQo+ID4gICNpbmNsdWRlIDxsaW51eC93d19tdXRleC5o Pg0KPiA+IC1zdGF0aWMgREVGSU5FX1dXX0NMQVNTKHRvcnR1cmVfd3dfY2xhc3MpOw0KPiA+ICtz dGF0aWMgREVGSU5FX1dEX0NMQVNTKHRvcnR1cmVfd3dfY2xhc3MpOw0KPiA+ICBzdGF0aWMgREVG SU5FX1dXX01VVEVYKHRvcnR1cmVfd3dfbXV0ZXhfMCwgJnRvcnR1cmVfd3dfY2xhc3MpOw0KPiA+ ICBzdGF0aWMgREVGSU5FX1dXX01VVEVYKHRvcnR1cmVfd3dfbXV0ZXhfMSwgJnRvcnR1cmVfd3df Y2xhc3MpOw0KPiA+ICBzdGF0aWMgREVGSU5FX1dXX01VVEVYKHRvcnR1cmVfd3dfbXV0ZXhfMiwg JnRvcnR1cmVfd3dfY2xhc3MpOw0KPiA+IGRpZmYgLS1naXQgYS9rZXJuZWwvbG9ja2luZy9tdXRl eC5jIGIva2VybmVsL2xvY2tpbmcvbXV0ZXguYw0KPiA+IGluZGV4IDQxMmI0ZmMwODIzNS4uOGNh ODNhNWUzZDI0IDEwMDY0NA0KPiA+IC0tLSBhL2tlcm5lbC9sb2NraW5nL211dGV4LmMNCj4gPiAr KysgYi9rZXJuZWwvbG9ja2luZy9tdXRleC5jDQo+ID4gQEAgLTE3Miw2ICsxNzIsMjEgQEAgc3Rh dGljIGlubGluZSBib29sDQo+ID4gX19tdXRleF93YWl0ZXJfaXNfZmlyc3Qoc3RydWN0IG11dGV4 ICpsb2NrLCBzdHJ1Y3QgbXV0ZXhfd2FpdA0KPiA+ICAgICAgICAgcmV0dXJuIGxpc3RfZmlyc3Rf ZW50cnkoJmxvY2stPndhaXRfbGlzdCwgc3RydWN0DQo+ID4gbXV0ZXhfd2FpdGVyLCBsaXN0KSA9 PSB3YWl0ZXI7DQo+ID4gIH0NCj4gPiANCj4gPiArLyoNCj4gPiArICogQWRkIEB3YWl0ZXIgdG8g YSBnaXZlbiBsb2NhdGlvbiBpbiB0aGUgbG9jayB3YWl0X2xpc3QgYW5kIHNldA0KPiA+IHRoZQ0K PiA+ICsgKiBGTEFHX1dBSVRFUlMgZmxhZyBpZiBpdCdzIHRoZSBmaXJzdCB3YWl0ZXIuDQo+ID4g KyAqLw0KPiA+ICtzdGF0aWMgdm9pZCBfX3NjaGVkDQo+ID4gK19fbXV0ZXhfYWRkX3dhaXRlcihz dHJ1Y3QgbXV0ZXggKmxvY2ssIHN0cnVjdCBtdXRleF93YWl0ZXINCj4gPiAqd2FpdGVyLA0KPiA+ ICsgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KQ0KPiA+ICt7DQo+ID4g KyAgICAgICBkZWJ1Z19tdXRleF9hZGRfd2FpdGVyKGxvY2ssIHdhaXRlciwgY3VycmVudCk7DQo+ ID4gKw0KPiA+ICsgICAgICAgbGlzdF9hZGRfdGFpbCgmd2FpdGVyLT5saXN0LCBsaXN0KTsNCj4g PiArICAgICAgIGlmIChfX211dGV4X3dhaXRlcl9pc19maXJzdChsb2NrLCB3YWl0ZXIpKQ0KPiA+ ICsgICAgICAgICAgICAgICBfX211dGV4X3NldF9mbGFnKGxvY2ssIE1VVEVYX0ZMQUdfV0FJVEVS Uyk7DQo+ID4gK30NCj4gPiArDQo+ID4gIC8qDQo+ID4gICAqIEdpdmUgdXAgb3duZXJzaGlwIHRv IGEgc3BlY2lmaWMgdGFzaywgd2hlbiBAdGFzayA9IE5VTEwsIHRoaXMNCj4gPiBpcyBlcXVpdmFs ZW50DQo+ID4gICAqIHRvIGEgcmVndWxhciB1bmxvY2suIFNldHMgUElDS1VQIG9uIGEgaGFuZG9m ZiwgY2xlYXJzIEhBTkRPRiwNCj4gPiBwcmVzZXJ2ZXMNCj4gPiBAQCAtMjQ4LDYgKzI2MywxMSBA QCBFWFBPUlRfU1lNQk9MKG11dGV4X2xvY2spOw0KPiA+ICAgKiAgIFRoZSBuZXdlciB0cmFuc2Fj dGlvbnMgYXJlIGtpbGxlZCB3aGVuOg0KPiA+ICAgKiAgICAgSXQgKHRoZSBuZXcgdHJhbnNhY3Rp b24pIG1ha2VzIGEgcmVxdWVzdCBmb3IgYSBsb2NrIGJlaW5nDQo+ID4gaGVsZA0KPiA+ICAgKiAg ICAgYnkgYW4gb2xkZXIgdHJhbnNhY3Rpb24uDQo+ID4gKyAqDQo+ID4gKyAqIFdvdW5kLVdhaXQ6 DQo+ID4gKyAqICAgVGhlIG5ld2VyIHRyYW5zYWN0aW9ucyBhcmUgd291bmRlZCB3aGVuOg0KPiA+ ICsgKiAgICAgQW4gb2xkZXIgdHJhbnNhY3Rpb24gbWFrZXMgYSByZXF1ZXN0IGZvciBhIGxvY2sg YmVpbmcgaGVsZA0KPiA+IGJ5DQo+ID4gKyAqICAgICB0aGUgbmV3ZXIgdHJhbnNhY3Rpb24uDQo+ ID4gICAqLw0KPiA+IA0KPiA+ICAvKg0KPiA+IEBAIC0zMTksNiArMzM5LDkgQEAgc3RhdGljIGJv b2wgX19zY2hlZA0KPiA+ICBfX3d3X211dGV4X2RpZShzdHJ1Y3QgbXV0ZXggKmxvY2ssIHN0cnVj dCBtdXRleF93YWl0ZXIgKndhaXRlciwNCj4gPiAgICAgICAgICAgICAgICBzdHJ1Y3Qgd3dfYWNx dWlyZV9jdHggKnd3X2N0eCkNCj4gPiAgew0KPiA+ICsgICAgICAgaWYgKCF3d19jdHgtPmlzX3dh aXRfZGllKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQo+ID4gKw0KPiA+ICAg ICAgICAgaWYgKHdhaXRlci0+d3dfY3R4LT5hY3F1aXJlZCA+IDAgJiYNCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICBfX3d3X2N0eF9zdGFtcF9hZnRlcih3YWl0ZXItPnd3X2N0eCwNCj4gPiB3 d19jdHgpKSB7DQo+ID4gICAgICAgICAgICAgICAgIGRlYnVnX211dGV4X3dha2Vfd2FpdGVyKGxv Y2ssIHdhaXRlcik7DQo+ID4gQEAgLTMyOCwxMyArMzUxLDY1IEBAIF9fd3dfbXV0ZXhfZGllKHN0 cnVjdCBtdXRleCAqbG9jaywgc3RydWN0DQo+ID4gbXV0ZXhfd2FpdGVyICp3YWl0ZXIsDQo+ID4g ICAgICAgICByZXR1cm4gdHJ1ZTsNCj4gPiAgfQ0KPiA+IA0KPiA+ICsvKg0KPiA+ICsgKiBXb3Vu ZC1XYWl0OyB3b3VuZCBhIHlvdW5nZXIgQGhvbGRfY3R4IGlmIGl0IGhvbGRzIHRoZSBsb2NrLg0K PiA+ICsgKg0KPiA+ICsgKiBXb3VuZCB0aGUgbG9jayBob2xkZXIgaWYgdGhlcmUgYXJlIHdhaXRl cnMgd2l0aCBvbGRlcg0KPiA+IHRyYW5zYWN0aW9ucyB0aGFuDQo+ID4gKyAqIHRoZSBsb2NrIGhv bGRlcnMuIEV2ZW4gaWYgbXVsdGlwbGUgd2FpdGVycyBtYXkgd291bmQgdGhlIGxvY2sNCj4gPiBo b2xkZXIsDQo+ID4gKyAqIGl0J3Mgc3VmZmljaWVudCB0aGF0IG9ubHkgb25lIGRvZXMuDQo+ID4g KyAqLw0KPiA+ICtzdGF0aWMgYm9vbCBfX3d3X211dGV4X3dvdW5kKHN0cnVjdCBtdXRleCAqbG9j aywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB3d19hY3F1aXJlX2N0 eCAqd3dfY3R4LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHd3X2Fj cXVpcmVfY3R4ICpob2xkX2N0eCkNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IHRhc2tfc3Ry dWN0ICpvd25lciA9IF9fbXV0ZXhfb3duZXIobG9jayk7DQo+ID4gKw0KPiA+ICsgICAgICAgbG9j a2RlcF9hc3NlcnRfaGVsZCgmbG9jay0+d2FpdF9sb2NrKTsNCj4gPiArDQo+ID4gKyAgICAgICAv Kg0KPiA+ICsgICAgICAgICogUG9zc2libGUgdGhyb3VnaCBfX3d3X211dGV4X2FkZF93YWl0ZXIo KSB3aGVuIHdlIHJhY2UNCj4gPiB3aXRoDQo+ID4gKyAgICAgICAgKiB3d19tdXRleF9zZXRfY29u dGV4dF9mYXN0cGF0aCgpLiBJbiB0aGF0IGNhc2Ugd2UnbGwgZ2V0DQo+ID4gaGVyZSBhZ2Fpbg0K PiA+ICsgICAgICAgICogdGhyb3VnaCBfX3d3X211dGV4X2NoZWNrX3dhaXRlcnMoKS4NCj4gPiAr ICAgICAgICAqLw0KPiA+ICsgICAgICAgaWYgKCFob2xkX2N0eCkNCj4gPiArICAgICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOw0KPiA+ICsNCj4gPiArICAgICAgIC8qDQo+ID4gKyAgICAgICAgKiBD YW4gaGF2ZSAhb3duZXIgYmVjYXVzZSBvZiBfX211dGV4X3VubG9ja19zbG93cGF0aCgpLA0KPiA+ IGJ1dCBpZiBvd25lciwNCj4gPiArICAgICAgICAqIGl0IGNhbm5vdCBnbyBhd2F5IGJlY2F1c2Ug d2UnbGwgaGF2ZSBGTEFHX1dBSVRFUlMgc2V0DQo+ID4gYW5kIGhvbGQNCj4gPiArICAgICAgICAq IHdhaXRfbG9jay4NCj4gPiArICAgICAgICAqLw0KPiA+ICsgICAgICAgaWYgKCFvd25lcikNCj4g PiArICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiA+ICsNCj4gPiArICAgICAgIGlmICh3 d19jdHgtPmFjcXVpcmVkID4gMCAmJiBfX3d3X2N0eF9zdGFtcF9hZnRlcihob2xkX2N0eCwNCj4g PiB3d19jdHgpKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGhvbGRfY3R4LT53b3VuZGVkID0gMTsN Cj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIC8qDQo+ID4gKyAgICAgICAgICAgICAgICAqIHdh a2VfdXBfcHJvY2VzcygpIHBhaXJlZCB3aXRoDQo+ID4gc2V0X2N1cnJlbnRfc3RhdGUoKQ0KPiA+ ICsgICAgICAgICAgICAgICAgKiBpbnNlcnRzIHN1ZmZpY2llbnQgYmFycmllcnMgdG8gbWFrZSBz dXJlIEBvd25lcg0KPiA+IGVpdGhlciBzZWVzDQo+ID4gKyAgICAgICAgICAgICAgICAqIGl0J3Mg d291bmRlZCBpbiBfX3d3X211dGV4X2xvY2tfY2hlY2tfc3RhbXAoKSBvcg0KPiA+IGhhcyBhDQo+ ID4gKyAgICAgICAgICAgICAgICAqIHdha2V1cCBwZW5kaW5nIHRvIHJlLXJlYWQgdGhlIHdvdW5k ZWQgc3RhdGUuDQo+ID4gKyAgICAgICAgICAgICAgICAqLw0KPiA+ICsgICAgICAgICAgICAgICBp ZiAob3duZXIgIT0gY3VycmVudCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICB3YWtlX3Vw X3Byb2Nlc3Mob3duZXIpOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7 DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIGZhbHNlOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICAvKg0KPiA+ICAgKiBXZSBqdXN0IGFjcXVpcmVkIEBsb2NrIHVuZGVyIEB3 d19jdHgsIGlmIHRoZXJlIGFyZSBsYXRlcg0KPiA+IGNvbnRleHRzIHdhaXRpbmcNCj4gPiAtICog YmVoaW5kIHVzIG9uIHRoZSB3YWl0LWxpc3QsIGNoZWNrIGlmIHRoZXkgbmVlZCB0byBkaWUuDQo+ ID4gKyAqIGJlaGluZCB1cyBvbiB0aGUgd2FpdC1saXN0LCBjaGVjayBpZiB0aGV5IG5lZWQgdG8g ZGllLCBvciB3b3VuZA0KPiA+IHVzLg0KPiA+ICAgKg0KPiA+ICAgKiBTZWUgX193d19tdXRleF9h ZGRfd2FpdGVyKCkgZm9yIHRoZSBsaXN0LW9yZGVyIGNvbnN0cnVjdGlvbjsNCj4gPiBiYXNpY2Fs bHkgdGhlDQo+ID4gICAqIGxpc3QgaXMgb3JkZXJlZCBieSBzdGFtcCwgc21hbGxlc3QgKG9sZGVz dCkgZmlyc3QuDQo+ID4gICAqDQo+ID4gKyAqIFRoaXMgcmVsaWVzIG9uIG5ldmVyIG1peGluZyB3 YWl0LWRpZS93b3VuZC13YWl0IG9uIHRoZSBzYW1lDQo+ID4gd2FpdC1saXN0Ow0KPiA+ICsgKiB3 aGljaCBpcyBjdXJyZW50bHkgZW5zdXJlZCBieSB0aGF0IGJlaW5nIGEgd3dfY2xhc3MgcHJvcGVy dHkuDQo+ID4gKyAqDQo+ID4gICAqIFRoZSBjdXJyZW50IHRhc2sgbXVzdCBub3QgYmUgb24gdGhl IHdhaXQgbGlzdC4NCj4gPiAgICovDQo+ID4gIHN0YXRpYyB2b2lkIF9fc2NoZWQNCj4gPiBAQCAt MzQ4LDcgKzQyMyw4IEBAIF9fd3dfbXV0ZXhfY2hlY2tfd2FpdGVycyhzdHJ1Y3QgbXV0ZXggKmxv Y2ssDQo+ID4gc3RydWN0IHd3X2FjcXVpcmVfY3R4ICp3d19jdHgpDQo+ID4gICAgICAgICAgICAg ICAgIGlmICghY3VyLT53d19jdHgpDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu dWU7DQo+ID4gDQo+ID4gLSAgICAgICAgICAgICAgIGlmIChfX3d3X211dGV4X2RpZShsb2NrLCBj dXIsIHd3X2N0eCkpDQo+ID4gKyAgICAgICAgICAgICAgIGlmIChfX3d3X211dGV4X2RpZShsb2Nr LCBjdXIsIHd3X2N0eCkgfHwNCj4gPiArICAgICAgICAgICAgICAgICAgIF9fd3dfbXV0ZXhfd291 bmQobG9jaywgY3VyLT53d19jdHgsIHd3X2N0eCkpDQo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7DQo+ID4gICAgICAgICB9DQo+ID4gIH0NCj4gPiBAQCAtMzY5LDE3ICs0NDUsMjMg QEAgd3dfbXV0ZXhfc2V0X2NvbnRleHRfZmFzdHBhdGgoc3RydWN0IHd3X211dGV4DQo+ID4gKmxv Y2ssIHN0cnVjdCB3d19hY3F1aXJlX2N0eCAqY3R4KQ0KPiA+ICAgICAgICAgICogYW5kIGtlZXAg c3Bpbm5pbmcsIG9yIGl0IHdpbGwgYWNxdWlyZSB3YWl0X2xvY2ssIGFkZA0KPiA+IGl0c2VsZg0K PiA+ICAgICAgICAgICogdG8gd2FpdGVyIGxpc3QgYW5kIHNsZWVwLg0KPiA+ICAgICAgICAgICov DQo+ID4gLSAgICAgICBzbXBfbWIoKTsgLyogXl5eICovDQo+ID4gKyAgICAgICBzbXBfbWIoKTsg LyogU2VlIGNvbW1lbnRzIGFib3ZlIGFuZCBiZWxvdy4gKi8NCj4gPiANCj4gPiAgICAgICAgIC8q DQo+ID4gLSAgICAgICAgKiBDaGVjayBpZiBsb2NrIGlzIGNvbnRlbmRlZCwgaWYgbm90IHRoZXJl IGlzIG5vYm9keSB0bw0KPiA+IHdha2UgdXANCj4gPiArICAgICAgICAqIFtXXSB3dy0+Y3R4ID0g Y3R4ICAgICAgICBbV10gTVVURVhfRkxBR19XQUlURVJTDQo+ID4gKyAgICAgICAgKiAgICAgTUIg ICAgICAgICAgICAgICAgICAgICAgIE1CDQo+ID4gKyAgICAgICAgKiBbUl0gTVVURVhfRkxBR19X QUlURVJTICAgW1JdIHd3LT5jdHgNCj4gPiArICAgICAgICAqDQo+ID4gKyAgICAgICAgKiBUaGUg bWVtb3J5IGJhcnJpZXIgYWJvdmUgcGFpcnMgd2l0aCB0aGUgbWVtb3J5IGJhcnJpZXINCj4gPiBp bg0KPiA+ICsgICAgICAgICogX193d19tdXRleF9hZGRfd2FpdGVyKCkgYW5kIG1ha2VzIHN1cmUg d2UgZWl0aGVyIG9ic2VydmUNCj4gPiB3dy0+Y3R4DQo+ID4gKyAgICAgICAgKiBhbmQvb3IgIWVt cHR5IGxpc3QuDQo+ID4gICAgICAgICAgKi8NCj4gPiAgICAgICAgIGlmIChsaWtlbHkoIShhdG9t aWNfbG9uZ19yZWFkKCZsb2NrLT5iYXNlLm93bmVyKSAmDQo+ID4gTVVURVhfRkxBR19XQUlURVJT KSkpDQo+ID4gICAgICAgICAgICAgICAgIHJldHVybjsNCj4gPiANCj4gPiAgICAgICAgIC8qDQo+ ID4gICAgICAgICAgKiBVaCBvaCwgd2UgcmFjZWQgaW4gZmFzdHBhdGgsIGNoZWNrIGlmIGFueSBv ZiB0aGUgd2FpdGVycw0KPiA+IG5lZWQgdG8NCj4gPiAtICAgICAgICAqIGRpZS4NCj4gPiArICAg ICAgICAqIGRpZSBvciB3b3VuZCB1cy4NCj4gPiAgICAgICAgICAqLw0KPiA+ICAgICAgICAgc3Bp bl9sb2NrKCZsb2NrLT5iYXNlLndhaXRfbG9jayk7DQo+ID4gICAgICAgICBfX3d3X211dGV4X2No ZWNrX3dhaXRlcnMoJmxvY2stPmJhc2UsIGN0eCk7DQo+ID4gQEAgLTY4MSw3ICs3NjMsOSBAQCBf X3d3X211dGV4X2tpbGwoc3RydWN0IG11dGV4ICpsb2NrLCBzdHJ1Y3QNCj4gPiB3d19hY3F1aXJl X2N0eCAqd3dfY3R4KQ0KPiA+IA0KPiA+IA0KPiA+ICAvKg0KPiA+IC0gKiBDaGVjayB3aGV0aGVy IHdlIG5lZWQgdG8ga2lsbCB0aGUgdHJhbnNhY3Rpb24gZm9yIHRoZSBjdXJyZW50DQo+ID4gbG9j ayBhY3F1aXJlLg0KPiA+ICsgKiBDaGVjayB0aGUgd291bmQgY29uZGl0aW9uIGZvciB0aGUgY3Vy cmVudCBsb2NrIGFjcXVpcmUuDQo+ID4gKyAqDQo+ID4gKyAqIFdvdW5kLVdhaXQ6IElmIHdlJ3Jl IHdvdW5kZWQsIGtpbGwgb3Vyc2VsZi4NCj4gPiAgICoNCj4gPiAgICogV2FpdC1EaWU6IElmIHdl J3JlIHRyeWluZyB0byBhY3F1aXJlIGEgbG9jayBhbHJlYWR5IGhlbGQgYnkgYW4NCj4gPiBvbGRl cg0KPiA+ICAgKiAgICAgICAgICAgY29udGV4dCwga2lsbCBvdXJzZWx2ZXMuDQo+ID4gQEAgLTcw MCw2ICs3ODQsMTMgQEAgX193d19tdXRleF9jaGVja19raWxsKHN0cnVjdCBtdXRleCAqbG9jaywN Cj4gPiBzdHJ1Y3QgbXV0ZXhfd2FpdGVyICp3YWl0ZXIsDQo+ID4gICAgICAgICBpZiAoY3R4LT5h Y3F1aXJlZCA9PSAwKQ0KPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4gPiANCj4gPiAr ICAgICAgIGlmICghY3R4LT5pc193YWl0X2RpZSkgew0KPiA+ICsgICAgICAgICAgICAgICBpZiAo Y3R4LT53b3VuZGVkKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfX3d3X211 dGV4X2tpbGwobG9jaywgY3R4KTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAw Ow0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiAgICAgICAgIGlmIChob2xkX2N0eCAmJiBfX3d3 X2N0eF9zdGFtcF9hZnRlcihjdHgsIGhvbGRfY3R4KSkNCj4gPiAgICAgICAgICAgICAgICAgcmV0 dXJuIF9fd3dfbXV0ZXhfa2lsbChsb2NrLCBjdHgpOw0KPiA+IA0KPiA+IEBAIC03MjYsNyArODE3 LDggQEAgX193d19tdXRleF9jaGVja19raWxsKHN0cnVjdCBtdXRleCAqbG9jaywNCj4gPiBzdHJ1 Y3QgbXV0ZXhfd2FpdGVyICp3YWl0ZXIsDQo+ID4gICAqIFdhaXRlcnMgd2l0aG91dCBjb250ZXh0 IGFyZSBpbnRlcnNwZXJzZWQgaW4gRklGTyBvcmRlci4NCj4gPiAgICoNCj4gPiAgICogRnVydGhl cm1vcmUsIGZvciBXYWl0LURpZSBraWxsIG91cnNlbGYgaW1tZWRpYXRlbHkgd2hlbg0KPiA+IHBv c3NpYmxlICh0aGVyZSBhcmUNCj4gPiAtICogb2xkZXIgY29udGV4dHMgYWxyZWFkeSB3YWl0aW5n KSB0byBhdm9pZCB1bm5lY2Vzc2FyeSB3YWl0aW5nLg0KPiA+ICsgKiBvbGRlciBjb250ZXh0cyBh bHJlYWR5IHdhaXRpbmcpIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHdhaXRpbmcNCj4gPiBhbmQgZm9y DQo+ID4gKyAqIFdvdW5kLVdhaXQgZW5zdXJlIHdlIHdvdW5kIHRoZSBvd25pbmcgY29udGV4dCB3 aGVuIGl0IGlzDQo+ID4geW91bmdlci4NCj4gPiAgICovDQo+ID4gIHN0YXRpYyBpbmxpbmUgaW50 IF9fc2NoZWQNCj4gPiAgX193d19tdXRleF9hZGRfd2FpdGVyKHN0cnVjdCBtdXRleF93YWl0ZXIg KndhaXRlciwNCj4gPiBAQCAtNzM1LDE2ICs4MjcsMjEgQEAgX193d19tdXRleF9hZGRfd2FpdGVy KHN0cnVjdCBtdXRleF93YWl0ZXINCj4gPiAqd2FpdGVyLA0KPiA+ICB7DQo+ID4gICAgICAgICBz dHJ1Y3QgbXV0ZXhfd2FpdGVyICpjdXI7DQo+ID4gICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpw b3M7DQo+ID4gKyAgICAgICBib29sIGlzX3dhaXRfZGllOw0KPiA+IA0KPiA+ICAgICAgICAgaWYg KCF3d19jdHgpIHsNCj4gPiAtICAgICAgICAgICAgICAgbGlzdF9hZGRfdGFpbCgmd2FpdGVyLT5s aXN0LCAmbG9jay0+d2FpdF9saXN0KTsNCj4gPiArICAgICAgICAgICAgICAgX19tdXRleF9hZGRf d2FpdGVyKGxvY2ssIHdhaXRlciwgJmxvY2stPndhaXRfbGlzdCk7DQo+ID4gICAgICAgICAgICAg ICAgIHJldHVybiAwOw0KPiA+ICAgICAgICAgfQ0KPiA+IA0KPiA+ICsgICAgICAgaXNfd2FpdF9k aWUgPSB3d19jdHgtPmlzX3dhaXRfZGllOw0KPiA+ICsNCj4gPiAgICAgICAgIC8qDQo+ID4gICAg ICAgICAgKiBBZGQgdGhlIHdhaXRlciBiZWZvcmUgdGhlIGZpcnN0IHdhaXRlciB3aXRoIGEgaGln aGVyDQo+ID4gc3RhbXAuDQo+ID4gICAgICAgICAgKiBXYWl0ZXJzIHdpdGhvdXQgYSBjb250ZXh0 IGFyZSBza2lwcGVkIHRvIGF2b2lkIHN0YXJ2aW5nDQo+ID4gLSAgICAgICAgKiB0aGVtLiBXYWl0 LURpZSB3YWl0ZXJzIG1heSBkaWUgaGVyZS4NCj4gPiArICAgICAgICAqIHRoZW0uIFdhaXQtRGll IHdhaXRlcnMgbWF5IGRpZSBoZXJlLiBXb3VuZC1XYWl0IHdhaXRlcnMNCj4gPiArICAgICAgICAq IG5ldmVyIGRpZSBoZXJlLCBidXQgdGhleSBhcmUgc29ydGVkIGluIHN0YW1wIG9yZGVyIGFuZA0K PiA+ICsgICAgICAgICogbWF5IHdvdW5kIHRoZSBsb2NrIGhvbGRlci4NCj4gPiAgICAgICAgICAq Lw0KPiA+ICAgICAgICAgcG9zID0gJmxvY2stPndhaXRfbGlzdDsNCj4gPiAgICAgICAgIGxpc3Rf Zm9yX2VhY2hfZW50cnlfcmV2ZXJzZShjdXIsICZsb2NrLT53YWl0X2xpc3QsIGxpc3QpIHsNCj4g PiBAQCAtNzU3LDEwICs4NTQsMTIgQEAgX193d19tdXRleF9hZGRfd2FpdGVyKHN0cnVjdCBtdXRl eF93YWl0ZXINCj4gPiAqd2FpdGVyLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAqIGlz IG5vIHBvaW50IGluIHF1ZXVlaW5nIGJlaGluZCBpdCwgYXMNCj4gPiB3ZSdkIGhhdmUgdG8NCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgKiBkaWUgdGhlIG1vbWVudCBpdCB3b3VsZCBhY3F1 aXJlIHRoZQ0KPiA+IGxvY2suDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICovDQo+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgaW50IHJldCA9IF9fd3dfbXV0ZXhfa2lsbChsb2NrLCB3 d19jdHgpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc193YWl0X2RpZSkgew0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJldCA9IF9fd3dfbXV0ZXhf a2lsbChsb2NrLA0KPiA+IHd3X2N0eCk7DQo+ID4gDQo+ID4gLSAgICAgICAgICAgICAgICAgICAg ICAgaWYgKHJldCkNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBy ZXQ7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0KQ0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIH0NCj4gPiANCj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICBicmVhazsNCj4gPiAgICAgICAgICAgICAgICAgfQ0KPiA+IEBAIC03NzEsNyArODcwLDIzIEBA IF9fd3dfbXV0ZXhfYWRkX3dhaXRlcihzdHJ1Y3QgbXV0ZXhfd2FpdGVyDQo+ID4gKndhaXRlciwN Cj4gPiAgICAgICAgICAgICAgICAgX193d19tdXRleF9kaWUobG9jaywgY3VyLCB3d19jdHgpOw0K PiA+ICAgICAgICAgfQ0KPiA+IA0KPiA+IC0gICAgICAgbGlzdF9hZGRfdGFpbCgmd2FpdGVyLT5s aXN0LCBwb3MpOw0KPiA+ICsgICAgICAgX19tdXRleF9hZGRfd2FpdGVyKGxvY2ssIHdhaXRlciwg cG9zKTsNCj4gPiArDQo+ID4gKyAgICAgICAvKg0KPiA+ICsgICAgICAgICogV291bmQtV2FpdDog aWYgd2UncmUgYmxvY2tpbmcgb24gYSBtdXRleCBvd25lZCBieSBhDQo+ID4geW91bmdlciBjb250 ZXh0LA0KPiA+ICsgICAgICAgICogd291bmQgdGhhdCBzdWNoIHRoYXQgd2UgbWlnaHQgcHJvY2Vl ZC4NCj4gPiArICAgICAgICAqLw0KPiA+ICsgICAgICAgaWYgKCFpc193YWl0X2RpZSkgew0KPiA+ ICsgICAgICAgICAgICAgICBzdHJ1Y3Qgd3dfbXV0ZXggKnd3ID0gY29udGFpbmVyX29mKGxvY2ss IHN0cnVjdA0KPiA+IHd3X211dGV4LCBiYXNlKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAg IC8qDQo+ID4gKyAgICAgICAgICAgICAgICAqIFNlZSB3d19tdXRleF9zZXRfY29udGV4dF9mYXN0 cGF0aCgpLiBPcmRlcnMNCj4gPiBzZXR0aW5nDQo+ID4gKyAgICAgICAgICAgICAgICAqIE1VVEVY X0ZMQUdfV0FJVEVSUyB2cyB0aGUgd3ctPmN0eCBsb2FkLA0KPiA+ICsgICAgICAgICAgICAgICAg KiBzdWNoIHRoYXQgZWl0aGVyIHdlIG9yIHRoZSBmYXN0cGF0aCB3aWxsIHdvdW5kDQo+ID4gQHd3 LT5jdHguDQo+ID4gKyAgICAgICAgICAgICAgICAqLw0KPiA+ICsgICAgICAgICAgICAgICBzbXBf bWIoKTsNCj4gPiArICAgICAgICAgICAgICAgX193d19tdXRleF93b3VuZChsb2NrLCB3d19jdHgs IHd3LT5jdHgpOw0KPiA+ICsgICAgICAgfQ0KPiA+IA0KPiA+ICAgICAgICAgcmV0dXJuIDA7DQo+ ID4gIH0NCj4gPiBAQCAtNzk1LDYgKzkxMCwxNCBAQCBfX211dGV4X2xvY2tfY29tbW9uKHN0cnVj dCBtdXRleCAqbG9jaywgbG9uZw0KPiA+IHN0YXRlLCB1bnNpZ25lZCBpbnQgc3ViY2xhc3MsDQo+ ID4gICAgICAgICBpZiAodXNlX3d3X2N0eCAmJiB3d19jdHgpIHsNCj4gPiAgICAgICAgICAgICAg ICAgaWYgKHVubGlrZWx5KHd3X2N0eCA9PSBSRUFEX09OQ0Uod3ctPmN0eCkpKQ0KPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUFMUkVBRFk7DQo+ID4gKw0KPiA+ICsgICAgICAg ICAgICAgICAvKg0KPiA+ICsgICAgICAgICAgICAgICAgKiBSZXNldCB0aGUgd291bmRlZCBmbGFn IGFmdGVyIGEga2lsbC4gTm8gb3RoZXINCj4gPiBwcm9jZXNzIGNhbg0KPiA+ICsgICAgICAgICAg ICAgICAgKiByYWNlIGFuZCB3b3VuZCB1cyBoZXJlIHNpbmNlIHRoZXkgY2FuJ3QgaGF2ZSBhDQo+ ID4gdmFsaWQgb3duZXINCj4gPiArICAgICAgICAgICAgICAgICogcG9pbnRlciBpZiB3ZSBkb24n dCBoYXZlIGFueSBsb2NrcyBoZWxkLg0KPiA+ICsgICAgICAgICAgICAgICAgKi8NCj4gPiArICAg ICAgICAgICAgICAgaWYgKHd3X2N0eC0+YWNxdWlyZWQgPT0gMCkNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICB3d19jdHgtPndvdW5kZWQgPSAwOw0KPiA+ICAgICAgICAgfQ0KPiA+IA0KPiA+ ICAgICAgICAgcHJlZW1wdF9kaXNhYmxlKCk7DQo+ID4gQEAgLTgyOCw3ICs5NTEsOCBAQCBfX211 dGV4X2xvY2tfY29tbW9uKHN0cnVjdCBtdXRleCAqbG9jaywgbG9uZw0KPiA+IHN0YXRlLCB1bnNp Z25lZCBpbnQgc3ViY2xhc3MsDQo+ID4gDQo+ID4gICAgICAgICBpZiAoIXVzZV93d19jdHgpIHsN Cj4gPiAgICAgICAgICAgICAgICAgLyogYWRkIHdhaXRpbmcgdGFza3MgdG8gdGhlIGVuZCBvZiB0 aGUgd2FpdHF1ZXVlDQo+ID4gKEZJRk8pOiAqLw0KPiA+IC0gICAgICAgICAgICAgICBsaXN0X2Fk ZF90YWlsKCZ3YWl0ZXIubGlzdCwgJmxvY2stPndhaXRfbGlzdCk7DQo+ID4gKyAgICAgICAgICAg ICAgIF9fbXV0ZXhfYWRkX3dhaXRlcihsb2NrLCAmd2FpdGVyLCAmbG9jay0NCj4gPiA+d2FpdF9s aXN0KTsNCj4gPiArDQo+ID4gDQo+ID4gICNpZmRlZiBDT05GSUdfREVCVUdfTVVURVhFUw0KPiA+ ICAgICAgICAgICAgICAgICB3YWl0ZXIud3dfY3R4ID0gTVVURVhfUE9JU09OX1dXX0NUWDsNCj4g PiBAQCAtODQ3LDkgKzk3MSw2IEBAIF9fbXV0ZXhfbG9ja19jb21tb24oc3RydWN0IG11dGV4ICps b2NrLCBsb25nDQo+ID4gc3RhdGUsIHVuc2lnbmVkIGludCBzdWJjbGFzcywNCj4gPiANCj4gPiAg ICAgICAgIHdhaXRlci50YXNrID0gY3VycmVudDsNCj4gPiANCj4gPiAtICAgICAgIGlmIChfX211 dGV4X3dhaXRlcl9pc19maXJzdChsb2NrLCAmd2FpdGVyKSkNCj4gPiAtICAgICAgICAgICAgICAg X19tdXRleF9zZXRfZmxhZyhsb2NrLCBNVVRFWF9GTEFHX1dBSVRFUlMpOw0KPiA+IC0NCj4gPiAg ICAgICAgIHNldF9jdXJyZW50X3N0YXRlKHN0YXRlKTsNCj4gPiAgICAgICAgIGZvciAoOzspIHsN Cj4gPiAgICAgICAgICAgICAgICAgLyoNCj4gPiBAQCAtOTA2LDYgKzEwMjcsMTYgQEAgX19tdXRl eF9sb2NrX2NvbW1vbihzdHJ1Y3QgbXV0ZXggKmxvY2ssIGxvbmcNCj4gPiBzdGF0ZSwgdW5zaWdu ZWQgaW50IHN1YmNsYXNzLA0KPiA+ICBhY3F1aXJlZDoNCj4gPiAgICAgICAgIF9fc2V0X2N1cnJl bnRfc3RhdGUoVEFTS19SVU5OSU5HKTsNCj4gPiANCj4gPiArICAgICAgIGlmICh1c2Vfd3dfY3R4 ICYmIHd3X2N0eCkgew0KPiA+ICsgICAgICAgICAgICAgICAvKg0KPiA+ICsgICAgICAgICAgICAg ICAgKiBXb3VuZC1XYWl0OyB3ZSBzdG9sZSB0aGUgbG9jayAoIWZpcnN0X3dhaXRlciksDQo+ID4g Y2hlY2sgdGhlDQo+ID4gKyAgICAgICAgICAgICAgICAqIHdhaXRlcnMgYXMgYW55b25lIG1pZ2h0 IHdhbnQgdG8gd291bmQgdXMuDQo+ID4gKyAgICAgICAgICAgICAgICAqLw0KPiA+ICsgICAgICAg ICAgICAgICBpZiAoIXd3X2N0eC0+aXNfd2FpdF9kaWUgJiYNCj4gPiArICAgICAgICAgICAgICAg ICAgICFfX211dGV4X3dhaXRlcl9pc19maXJzdChsb2NrLCAmd2FpdGVyKSkNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICBfX3d3X211dGV4X2NoZWNrX3dhaXRlcnMobG9jaywgd3dfY3R4KTsN Cj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gICAgICAgICBtdXRleF9yZW1vdmVfd2FpdGVyKGxv Y2ssICZ3YWl0ZXIsIGN1cnJlbnQpOw0KPiA+ICAgICAgICAgaWYgKGxpa2VseShsaXN0X2VtcHR5 KCZsb2NrLT53YWl0X2xpc3QpKSkNCj4gPiAgICAgICAgICAgICAgICAgX19tdXRleF9jbGVhcl9m bGFnKGxvY2ssIE1VVEVYX0ZMQUdTKTsNCj4gPiBkaWZmIC0tZ2l0IGEva2VybmVsL2xvY2tpbmcv dGVzdC13d19tdXRleC5jIGIva2VybmVsL2xvY2tpbmcvdGVzdC0NCj4gPiB3d19tdXRleC5jDQo+ ID4gaW5kZXggMGU0Y2Q2NGFkMmMwLi41YjkxNWIzNzBkNWEgMTAwNjQ0DQo+ID4gLS0tIGEva2Vy bmVsL2xvY2tpbmcvdGVzdC13d19tdXRleC5jDQo+ID4gKysrIGIva2VybmVsL2xvY2tpbmcvdGVz dC13d19tdXRleC5jDQo+ID4gQEAgLTI2LDcgKzI2LDcgQEANCj4gPiAgI2luY2x1ZGUgPGxpbnV4 L3NsYWIuaD4NCj4gPiAgI2luY2x1ZGUgPGxpbnV4L3d3X211dGV4Lmg+DQo+ID4gDQo+ID4gLXN0 YXRpYyBERUZJTkVfV1dfQ0xBU1Mod3dfY2xhc3MpOw0KPiA+ICtzdGF0aWMgREVGSU5FX1dEX0NM QVNTKHd3X2NsYXNzKTsNCj4gPiAgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxOw0KPiA+IA0K PiA+ICBzdHJ1Y3QgdGVzdF9tdXRleCB7DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9sb2NraW5nLXNl bGZ0ZXN0LmMgYi9saWIvbG9ja2luZy1zZWxmdGVzdC5jDQo+ID4gaW5kZXggYjVjMTI5M2NlMTQ3 Li4xZTFiYmYxNzFlY2EgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2xvY2tpbmctc2VsZnRlc3QuYw0K PiA+ICsrKyBiL2xpYi9sb2NraW5nLXNlbGZ0ZXN0LmMNCj4gPiBAQCAtMjksNyArMjksNyBAQA0K PiA+ICAgKi8NCj4gPiAgc3RhdGljIHVuc2lnbmVkIGludCBkZWJ1Z19sb2Nrc192ZXJib3NlOw0K PiA+IA0KPiA+IC1zdGF0aWMgREVGSU5FX1dXX0NMQVNTKHd3X2xvY2tkZXApOw0KPiA+ICtzdGF0 aWMgREVGSU5FX1dEX0NMQVNTKHd3X2xvY2tkZXApOw0KPiA+IA0KPiA+ICBzdGF0aWMgaW50IF9f aW5pdCBzZXR1cF9kZWJ1Z19sb2Nrc192ZXJib3NlKGNoYXIgKnN0cikNCj4gPiAgew0KPiA+IC0t DQo+ID4gMi4xNC4zDQo+ID4gDQo=