From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5432AA0524; Thu, 30 Jan 2020 12:05:05 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D3DD61BFF8; Thu, 30 Jan 2020 12:05:04 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by dpdk.org (Postfix) with ESMTP id 64D3D1BFF7 for ; Thu, 30 Jan 2020 12:05:02 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 00UAxnNx018473; Thu, 30 Jan 2020 03:05:01 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=pfpt0818; bh=taBLnfZmFJVhp26026kWJf6/kD1CZOjlC+bfGKJe9Tg=; b=KK73NKSAqbF3vjQt8iiHWA+s3PDPAOHToAveUZxnVeGr45duZszsHF/uA9cjtCiUo6Xd o7EKgru+rEidlptqD4ebRJEP034gDzOemC2febefmYZPQBt3q4NN0Lwwxm3DYuhcn9S9 iCbufNtVGLAPtdJ3Q/a/9C8jWklmPrASiYyoCSyyQBBC2YaVRFZ3QtdUV/aTj/PKACt0 wvgkuYKXN7k6MM9AC0DMUWzOeDJP6GN6p5Kx+bDZDFXpI69fwyVg77iV/zECtAPnJ3g8 2wO4AZl0S57DUHdfuDScvbcEnHXUmUObUGZWD+TCa6L+KIAIUPAkQwWU/VWxs5NT79p5 wA== Received: from sc-exch03.marvell.com ([199.233.58.183]) by mx0b-0016f401.pphosted.com with ESMTP id 2xrp2tdv54-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Thu, 30 Jan 2020 03:05:01 -0800 Received: from SC-EXCH04.marvell.com (10.93.176.84) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 30 Jan 2020 03:04:59 -0800 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.41) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Thu, 30 Jan 2020 03:04:58 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ehaag4vr+iju3w7oqwFxSHlSsmyallz007sfBlA1B0rsJt2EDyCTK1Cfsmm4ZW1AMHJNWVvQCV4uUwwE6sBq3iNyim3OzxEmqkqzd+22+LJJDlC9x3yj03beU5ZUJLWqaFohnZk/SS2U3itGtQekRNU7vS8qv7C3gDhu/TCYUP7JubhjxYIYbSmL7Kh5bkQKY+RswWD76we5F2SgWOzJIdRsFFJgOylc2ibX8AWwlO0bSdG0mBER9wsHOvTa1E+NBIDsestMBREW2x7Kc1NJTW67bM0+cl2jlZ2n20bMacL+Cu47AZNyUZAnLKkynE/ORj8jtocOJb8C5dMlaqdbYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=taBLnfZmFJVhp26026kWJf6/kD1CZOjlC+bfGKJe9Tg=; b=kgFXBKW55UM4HgzrQXCvZ2CmMVLQUHOBk1EV7UY6MmTLAiNnLVB210VnvuS772R6Dpv/+m8S4FSVZUy9984E5QT3mqeeiH6pMUh17BqLhxfsAEHkYCpqQfZ8/B4ifA6hAUvz+dMcb8gUKut7gJHk7I7zIxXIUy+Ap3rlGxbjPeEWPZSmLSVX4XEe2vuzaIVpdJ8IDs8vGcWrQQmpg1yiIAkdz3K81Cd4PNiHoNsiKOxUEjb4lI3BklPgVhLqXiFZQy0kLHvHN8sipmia7S2ytrxicyMqxwSACeXFfVW0xS1XA3jCRwa4exvRSq/lYoOGsPhPHoK4MXEIWufcZYlLig== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=taBLnfZmFJVhp26026kWJf6/kD1CZOjlC+bfGKJe9Tg=; b=LaRFTnC/Krcvepm1lp/M4jRAKYaXmx+2E/Lto0ML69gnYtDjIP87HfjWMueGsZc+15p+NpLSVg5FoafcjdXHANRSq8qUVdcslSjM7OBeOxqPmvST/57HwrbgGtURs5wqh8UN2h9iYP8lDNXEy5XmH3jNocy+csZJdR8o1mujTj4= Received: from BYAPR18MB2599.namprd18.prod.outlook.com (20.179.92.16) by BYAPR18MB2902.namprd18.prod.outlook.com (20.179.59.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2665.19; Thu, 30 Jan 2020 11:04:57 +0000 Received: from BYAPR18MB2599.namprd18.prod.outlook.com ([fe80::4df3:88f0:2afd:622f]) by BYAPR18MB2599.namprd18.prod.outlook.com ([fe80::4df3:88f0:2afd:622f%4]) with mapi id 15.20.2665.027; Thu, 30 Jan 2020 11:04:57 +0000 From: Lukas Bartosik To: "Ananyev, Konstantin" , Anoob Joseph , Akhil Goyal , "Nicolau, Radu" , Thomas Monjalon CC: Jerin Jacob Kollanukkaran , "Narayana Prasad Raju Athreya" , Ankur Dwivedi , "Archana Muniganti" , Tejasree Kondoj , Vamsi Krishna Attunuru , "dev@dpdk.org" Thread-Topic: [EXT] RE: [PATCH v2 09/12] examples/ipsec-secgw: add eventmode to ipsec-secgw Thread-Index: AQHVz5grKY0rjHUcpUmg74udh0cke6gCWTEAgADBygA= Date: Thu, 30 Jan 2020 11:04:57 +0000 Message-ID: <28a2abb4-de17-771d-e40f-8a020a505a4a@marvell.com> References: <1575808249-31135-1-git-send-email-anoobj@marvell.com> <1579527918-360-1-git-send-email-anoobj@marvell.com> <1579527918-360-10-git-send-email-anoobj@marvell.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [199.233.58.37] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 98d4fb61-3ad9-42c8-f095-08d7a5743e59 x-ms-traffictypediagnostic: BYAPR18MB2902: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:425; x-forefront-prvs: 02981BE340 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(346002)(376002)(366004)(39860400002)(136003)(396003)(189003)(199004)(66446008)(66556008)(478600001)(2616005)(31686004)(6486002)(66476007)(6512007)(64756008)(66946007)(5660300002)(30864003)(2906002)(71200400001)(4326008)(81156014)(26005)(8936002)(316002)(36756003)(53546011)(86362001)(8676002)(81166006)(110136005)(31696002)(76116006)(186003)(54906003)(6506007)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR18MB2902; H:BYAPR18MB2599.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: i8MfpQSIOQKYLxp+EiXyYSWQ538n+Nw/+3Co6Zp91gw7Iq/H9fufsfGUnXyj9McgHz2tfZnduzjg6w7PzcQN9OxsQ7JZE3z0uaH1rPeVd0L/KNHsQsxQIxwojIDlkb0B48QCUDInbVllx0J0+4/CwTN0fCRA+HbAhUgA63sqO4a/VFYJrqaOFEcuZvlStHvNQAjxbewzw8bdZmKtBduXFBiJW+HQxe0u/jZniVZPp3EYEkDRpMH8fR/TQniZejYL1DojnPuYglrK3GVsfpp3u8km8Qm/TfzdFXojsl5LdvC7Yw7pl/zBqIrC8A4bfUOMp/+LKNnTRryJjnq10i7PptfM80KQP0xZaT759ICnR9n8ubUGdNbEK+N9g0BerUOGdRXPoq0Dwg4zDKmFNymUBPECFMRm9jfkrlg8hLQpaPF+c76IdjCdXGshilXT/vE0 x-ms-exchange-antispam-messagedata: zou+3I12ZKfLNg5yhMMuRviZ2SAfEun2+6Hjf1IJfh5tVD+DTZT5dG5AVpbgItZIepXb41yoRljbfvR/g0/q2wiD7dzzyoWeOUuVM2k5RNUCTLn5f50Nckfn+iQa0gwYhqBRCBduRJ1aO89+Mnvb6g== Content-Type: text/plain; charset="utf-8" Content-ID: <730A2965B912BE4AB4B10605A34BF8A5@namprd18.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 98d4fb61-3ad9-42c8-f095-08d7a5743e59 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Jan 2020 11:04:57.5076 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: NRajfhjsK6FMNNFMYgSbEmyn5y+CnD5pEntzEdqtWUbwjPxTN2KCKmm+lXFv9L820A4Ei6RonXw3TAB5KbcBbw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR18MB2902 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138, 18.0.572 definitions=2020-01-30_03:2020-01-28, 2020-01-30 signatures=0 Subject: Re: [dpdk-dev] [EXT] RE: [PATCH v2 09/12] examples/ipsec-secgw: add eventmode to ipsec-secgw X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgS29uc3RhbnRpbiwNCg0KUGxlYXNlIHNlZSBpbmxpbmUuDQoNClRoYW5rcywNCkx1a2Fzeg0K DQpPbiAzMC4wMS4yMDIwIDAwOjMxLCBBbmFueWV2LCBLb25zdGFudGluIHdyb3RlOg0KPiBFeHRl cm5hbCBFbWFpbA0KPg0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+PiBBZGQgZXZlbnRtb2RlIHN1cHBvcnQg dG8gaXBzZWMtc2VjZ3cuIFdpdGggdGhlIGFpZCBvZiBldmVudCBoZWxwZXINCj4+IGNvbmZpZ3Vy ZSBhbmQgdXNlIHRoZSBldmVudG1vZGUgY2FwYWJpbGl0aWVzLg0KPj4NCj4+IFNpZ25lZC1vZmYt Ynk6IEFub29iIEpvc2VwaCA8YW5vb2JqQG1hcnZlbGwuY29tPg0KPj4gU2lnbmVkLW9mZi1ieTog THVrYXN6IEJhcnRvc2lrIDxsYmFydG9zaWtAbWFydmVsbC5jb20+DQo+PiAtLS0NCj4+ICBleGFt cGxlcy9pcHNlYy1zZWNndy9ldmVudF9oZWxwZXIuYyB8ICAgNCArLQ0KPj4gIGV4YW1wbGVzL2lw c2VjLXNlY2d3L2V2ZW50X2hlbHBlci5oIHwgIDE0ICsrDQo+PiAgZXhhbXBsZXMvaXBzZWMtc2Vj Z3cvaXBzZWMtc2VjZ3cuYyAgfCAzNDEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystDQo+PiAgZXhhbXBsZXMvaXBzZWMtc2VjZ3cvaXBzZWMuaCAgICAgICAgfCAgMTEgKysNCj4+ ICBleGFtcGxlcy9pcHNlYy1zZWNndy9zYS5jICAgICAgICAgICB8ICAxMSAtLQ0KPj4gIDUgZmls ZXMgY2hhbmdlZCwgMzY1IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQ0KPj4NCj4+IGRp ZmYgLS1naXQgYS9leGFtcGxlcy9pcHNlYy1zZWNndy9ldmVudF9oZWxwZXIuYyBiL2V4YW1wbGVz L2lwc2VjLXNlY2d3L2V2ZW50X2hlbHBlci5jDQo+PiBpbmRleCA5NzE5YWI0Li41NGE5OGM5IDEw MDY0NA0KPj4gLS0tIGEvZXhhbXBsZXMvaXBzZWMtc2VjZ3cvZXZlbnRfaGVscGVyLmMNCj4+ICsr KyBiL2V4YW1wbGVzL2lwc2VjLXNlY2d3L2V2ZW50X2hlbHBlci5jDQo+PiBAQCAtOTY2LDYgKzk2 Niw4IEBAIGVoX2ZpbmRfd29ya2VyKHVpbnQzMl90IGxjb3JlX2lkLCBzdHJ1Y3QgZWhfY29uZiAq Y29uZiwNCj4+ICAJZWxzZQ0KPj4gIAkJY3Vycl9jb25mLmNhcC5idXJzdCA9IEVIX1JYX1RZUEVf Tk9OX0JVUlNUOw0KPj4NCj4+ICsJY3Vycl9jb25mLmNhcC5pcHNlY19tb2RlID0gY29uZi0+aXBz ZWNfbW9kZTsNCj4+ICsNCj4+ICAJLyogUGFyc2UgdGhlIHBhc3NlZCBsaXN0IGFuZCBzZWUgaWYg d2UgaGF2ZSBtYXRjaGluZyBjYXBhYmlsaXRpZXMgKi8NCj4+DQo+PiAgCS8qIEluaXRpYWxpemUg dGhlIHBvaW50ZXIgdXNlZCB0byB0cmF2ZXJzZSB0aGUgbGlzdCAqLw0KPj4gQEAgLTE2MjUsNyAr MTYyNyw3IEBAIGVoX2xhdW5jaF93b3JrZXIoc3RydWN0IGVoX2NvbmYgKmNvbmYsIHN0cnVjdCBl aF9hcHBfd29ya2VyX3BhcmFtcyAqYXBwX3dya3IsDQo+PiAgCX0NCj4+DQo+PiAgCS8qIEdldCBl dmVudG1vZGUgY29uZiAqLw0KPj4gLQllbV9jb25mID0gKHN0cnVjdCBldmVudG1vZGVfY29uZiAq KShjb25mLT5tb2RlX3BhcmFtcyk7DQo+PiArCWVtX2NvbmYgPSBjb25mLT5tb2RlX3BhcmFtczsN Cj4+DQo+PiAgCS8qIEdldCBjb3JlIElEICovDQo+PiAgCWxjb3JlX2lkID0gcnRlX2xjb3JlX2lk KCk7DQo+PiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvaXBzZWMtc2VjZ3cvZXZlbnRfaGVscGVyLmgg Yi9leGFtcGxlcy9pcHNlYy1zZWNndy9ldmVudF9oZWxwZXIuaA0KPj4gaW5kZXggMTVhN2JkNi4u Y2Y1ZDM0NiAxMDA2NDQNCj4+IC0tLSBhL2V4YW1wbGVzL2lwc2VjLXNlY2d3L2V2ZW50X2hlbHBl ci5oDQo+PiArKysgYi9leGFtcGxlcy9pcHNlYy1zZWNndy9ldmVudF9oZWxwZXIuaA0KPj4gQEAg LTc0LDYgKzc0LDE0IEBAIGVudW0gZWhfdHhfdHlwZXMgew0KPj4gIAlFSF9UWF9UWVBFX05PX0lO VEVSTkFMX1BPUlQNCj4+ICB9Ow0KPj4NCj4+ICsvKioNCj4+ICsgKiBFdmVudCBtb2RlIGlwc2Vj IG1vZGUgdHlwZXMNCj4+ICsgKi8NCj4+ICtlbnVtIGVoX2lwc2VjX21vZGVfdHlwZXMgew0KPj4g KwlFSF9JUFNFQ19NT0RFX1RZUEVfQVBQID0gMCwNCj4+ICsJRUhfSVBTRUNfTU9ERV9UWVBFX0RS SVZFUg0KPj4gK307DQo+PiArDQo+PiAgLyogRXZlbnQgZGV2IHBhcmFtcyAqLw0KPj4gIHN0cnVj dCBldmVudGRldl9wYXJhbXMgew0KPj4gIAl1aW50OF90IGV2ZW50ZGV2X2lkOw0KPj4gQEAgLTE4 Myw2ICsxOTEsMTAgQEAgc3RydWN0IGVoX2NvbmYgew0KPj4gIAkJICovDQo+PiAgCXZvaWQgKm1v ZGVfcGFyYW1zOw0KPj4gIAkJLyoqPCBNb2RlIHNwZWNpZmljIHBhcmFtZXRlcnMgKi8NCj4+ICsN Cj4+ICsJCS8qKiBBcHBsaWNhdGlvbiBzcGVjaWZpYyBwYXJhbXMgKi8NCj4+ICsJZW51bSBlaF9p cHNlY19tb2RlX3R5cGVzIGlwc2VjX21vZGU7DQo+PiArCQkvKio8IE1vZGUgb2YgaXBzZWMgcnVu ICovDQo+PiAgfTsNCj4+DQo+PiAgLyogV29ya2VycyByZWdpc3RlcmVkIGJ5IHRoZSBhcHBsaWNh dGlvbiAqLw0KPj4gQEAgLTE5NCw2ICsyMDYsOCBAQCBzdHJ1Y3QgZWhfYXBwX3dvcmtlcl9wYXJh bXMgew0KPj4gIAkJCS8qKjwgU3BlY2lmeSBzdGF0dXMgb2YgcnggdHlwZSBidXJzdCAqLw0KPj4g IAkJCXVpbnQ2NF90IHR4X2ludGVybmFsX3BvcnQgOiAxOw0KPj4gIAkJCS8qKjwgU3BlY2lmeSB3 aGV0aGVyIHR4IGludGVybmFsIHBvcnQgaXMgYXZhaWxhYmxlICovDQo+PiArCQkJdWludDY0X3Qg aXBzZWNfbW9kZSA6IDE7DQo+PiArCQkJLyoqPCBTcGVjaWZ5IGlwc2VjIHByb2Nlc3NpbmcgbGV2 ZWwgKi8NCj4+ICAJCX07DQo+PiAgCQl1aW50NjRfdCB1NjQ7DQo+PiAgCX0gY2FwOw0KPj4gZGlm ZiAtLWdpdCBhL2V4YW1wbGVzL2lwc2VjLXNlY2d3L2lwc2VjLXNlY2d3LmMgYi9leGFtcGxlcy9p cHNlYy1zZWNndy9pcHNlYy1zZWNndy5jDQo+PiBpbmRleCBkNWU4ZmU1Li5mMWNjM2ZiIDEwMDY0 NA0KPj4gLS0tIGEvZXhhbXBsZXMvaXBzZWMtc2VjZ3cvaXBzZWMtc2VjZ3cuYw0KPj4gKysrIGIv ZXhhbXBsZXMvaXBzZWMtc2VjZ3cvaXBzZWMtc2VjZ3cuYw0KPj4gQEAgLTIsNiArMiw3IEBADQo+ PiAgICogQ29weXJpZ2h0KGMpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24NCj4+ICAgKi8NCj4+DQo+ PiArI2luY2x1ZGUgPHN0ZGJvb2wuaD4NCj4+ICAjaW5jbHVkZSA8c3RkaW8uaD4NCj4+ICAjaW5j bHVkZSA8c3RkbGliLmg+DQo+PiAgI2luY2x1ZGUgPHN0ZGludC5oPg0KPj4gQEAgLTE0LDYgKzE1 LDcgQEANCj4+ICAjaW5jbHVkZSA8c3lzL3F1ZXVlLmg+DQo+PiAgI2luY2x1ZGUgPHN0ZGFyZy5o Pg0KPj4gICNpbmNsdWRlIDxlcnJuby5oPg0KPj4gKyNpbmNsdWRlIDxzaWduYWwuaD4NCj4+ICAj aW5jbHVkZSA8Z2V0b3B0Lmg+DQo+Pg0KPj4gICNpbmNsdWRlIDxydGVfY29tbW9uLmg+DQo+PiBA QCAtNDEsMTIgKzQzLDE3IEBADQo+PiAgI2luY2x1ZGUgPHJ0ZV9qaGFzaC5oPg0KPj4gICNpbmNs dWRlIDxydGVfY3J5cHRvZGV2Lmg+DQo+PiAgI2luY2x1ZGUgPHJ0ZV9zZWN1cml0eS5oPg0KPj4g KyNpbmNsdWRlIDxydGVfYml0bWFwLmg+DQo+PiArI2luY2x1ZGUgPHJ0ZV9ldmVudGRldi5oPg0K Pj4gICNpbmNsdWRlIDxydGVfaXAuaD4NCj4+ICAjaW5jbHVkZSA8cnRlX2lwX2ZyYWcuaD4NCj4+ DQo+PiArI2luY2x1ZGUgImV2ZW50X2hlbHBlci5oIg0KPj4gICNpbmNsdWRlICJpcHNlYy5oIg0K Pj4gICNpbmNsdWRlICJwYXJzZXIuaCINCj4+DQo+PiArdm9sYXRpbGUgYm9vbCBmb3JjZV9xdWl0 Ow0KPj4gKw0KPj4gICNkZWZpbmUgUlRFX0xPR1RZUEVfSVBTRUMgUlRFX0xPR1RZUEVfVVNFUjEN Cj4+DQo+PiAgI2RlZmluZSBNQVhfSlVNQk9fUEtUX0xFTiAgOTYwMA0KPj4gQEAgLTEzMywxMiAr MTQwLDIwIEBAIHN0cnVjdCBmbG93X2luZm8gZmxvd19pbmZvX3RibFtSVEVfTUFYX0VUSFBPUlRT XTsNCj4+ICAjZGVmaW5lIENNRF9MSU5FX09QVF9DT05GSUcJCSJjb25maWciDQo+PiAgI2RlZmlu ZSBDTURfTElORV9PUFRfU0lOR0xFX1NBCQkic2luZ2xlLXNhIg0KPj4gICNkZWZpbmUgQ01EX0xJ TkVfT1BUX0NSWVBUT0RFVl9NQVNLCSJjcnlwdG9kZXZfbWFzayINCj4+ICsjZGVmaW5lIENNRF9M SU5FX09QVF9UUkFOU0ZFUl9NT0RFCSJ0cmFuc2Zlci1tb2RlIg0KPj4gKyNkZWZpbmUgQ01EX0xJ TkVfT1BUX1NDSEVEVUxFX1RZUEUJInNjaGVkdWxlLXR5cGUiDQo+PiAgI2RlZmluZSBDTURfTElO RV9PUFRfUlhfT0ZGTE9BRAkJInJ4b2ZmbG9hZCINCj4+ICAjZGVmaW5lIENNRF9MSU5FX09QVF9U WF9PRkZMT0FECQkidHhvZmZsb2FkIg0KPj4gICNkZWZpbmUgQ01EX0xJTkVfT1BUX1JFQVNTRU1C TEUJCSJyZWFzc2VtYmxlIg0KPj4gICNkZWZpbmUgQ01EX0xJTkVfT1BUX01UVQkJIm10dSINCj4+ ICAjZGVmaW5lIENNRF9MSU5FX09QVF9GUkFHX1RUTAkJImZyYWctdHRsIg0KPj4NCj4+ICsjZGVm aW5lIENNRF9MSU5FX0FSR19FVkVOVAkiZXZlbnQiDQo+PiArI2RlZmluZSBDTURfTElORV9BUkdf UE9MTAkicG9sbCINCj4+ICsjZGVmaW5lIENNRF9MSU5FX0FSR19PUkRFUkVECSJvcmRlcmVkIg0K Pj4gKyNkZWZpbmUgQ01EX0xJTkVfQVJHX0FUT01JQwkiYXRvbWljIg0KPj4gKyNkZWZpbmUgQ01E X0xJTkVfQVJHX1BBUkFMTEVMCSJwYXJhbGxlbCINCj4+ICsNCj4+ICBlbnVtIHsNCj4+ICAJLyog bG9uZyBvcHRpb25zIG1hcHBlZCB0byBhIHNob3J0IG9wdGlvbiAqLw0KPj4NCj4+IEBAIC0xNDks NiArMTY0LDggQEAgZW51bSB7DQo+PiAgCUNNRF9MSU5FX09QVF9DT05GSUdfTlVNLA0KPj4gIAlD TURfTElORV9PUFRfU0lOR0xFX1NBX05VTSwNCj4+ICAJQ01EX0xJTkVfT1BUX0NSWVBUT0RFVl9N QVNLX05VTSwNCj4+ICsJQ01EX0xJTkVfT1BUX1RSQU5TRkVSX01PREVfTlVNLA0KPj4gKwlDTURf TElORV9PUFRfU0NIRURVTEVfVFlQRV9OVU0sDQo+PiAgCUNNRF9MSU5FX09QVF9SWF9PRkZMT0FE X05VTSwNCj4+ICAJQ01EX0xJTkVfT1BUX1RYX09GRkxPQURfTlVNLA0KPj4gIAlDTURfTElORV9P UFRfUkVBU1NFTUJMRV9OVU0sDQo+PiBAQCAtMTYwLDYgKzE3Nyw4IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3Qgb3B0aW9uIGxnb3B0c1tdID0gew0KPj4gIAl7Q01EX0xJTkVfT1BUX0NPTkZJRywgMSwg MCwgQ01EX0xJTkVfT1BUX0NPTkZJR19OVU19LA0KPj4gIAl7Q01EX0xJTkVfT1BUX1NJTkdMRV9T QSwgMSwgMCwgQ01EX0xJTkVfT1BUX1NJTkdMRV9TQV9OVU19LA0KPj4gIAl7Q01EX0xJTkVfT1BU X0NSWVBUT0RFVl9NQVNLLCAxLCAwLCBDTURfTElORV9PUFRfQ1JZUFRPREVWX01BU0tfTlVNfSwN Cj4+ICsJe0NNRF9MSU5FX09QVF9UUkFOU0ZFUl9NT0RFLCAxLCAwLCBDTURfTElORV9PUFRfVFJB TlNGRVJfTU9ERV9OVU19LA0KPj4gKwl7Q01EX0xJTkVfT1BUX1NDSEVEVUxFX1RZUEUsIDEsIDAs IENNRF9MSU5FX09QVF9TQ0hFRFVMRV9UWVBFX05VTX0sDQo+PiAgCXtDTURfTElORV9PUFRfUlhf T0ZGTE9BRCwgMSwgMCwgQ01EX0xJTkVfT1BUX1JYX09GRkxPQURfTlVNfSwNCj4+ICAJe0NNRF9M SU5FX09QVF9UWF9PRkZMT0FELCAxLCAwLCBDTURfTElORV9PUFRfVFhfT0ZGTE9BRF9OVU19LA0K Pj4gIAl7Q01EX0xJTkVfT1BUX1JFQVNTRU1CTEUsIDEsIDAsIENNRF9MSU5FX09QVF9SRUFTU0VN QkxFX05VTX0sDQo+PiBAQCAtMTc3LDYgKzE5Niw3IEBAIHN0YXRpYyBpbnQzMl90IG51bWFfb24g PSAxOyAvKio8IE5VTUEgaXMgZW5hYmxlZCBieSBkZWZhdWx0LiAqLw0KPj4gIHN0YXRpYyB1aW50 MzJfdCBuYl9sY29yZXM7DQo+PiAgc3RhdGljIHVpbnQzMl90IHNpbmdsZV9zYTsNCj4+ICBzdGF0 aWMgdWludDMyX3Qgc2luZ2xlX3NhX2lkeDsNCj4+ICtzdGF0aWMgdWludDMyX3Qgc2NoZWR1bGVf dHlwZTsNCj4+DQo+PiAgLyoNCj4+ICAgKiBSWC9UWCBIVyBvZmZsb2FkIGNhcGFiaWxpdGllcyB0 byBlbmFibGUvdXNlIG9uIGV0aGVybmV0IHBvcnRzLg0KPj4gQEAgLTExODUsNyArMTIwNSw3IEBA IG1haW5fbG9vcChfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSB2b2lkICpkdW1teSkNCj4+ICB9DQo+ Pg0KPj4gIHN0YXRpYyBpbnQzMl90DQo+PiAtY2hlY2tfcGFyYW1zKHZvaWQpDQo+PiArY2hlY2tf cGFyYW1zKHN0cnVjdCBlaF9jb25mICplaF9jb25mKQ0KPj4gIHsNCj4+ICAJdWludDhfdCBsY29y ZTsNCj4+ICAJdWludDE2X3QgcG9ydGlkOw0KPj4gQEAgLTEyMjAsNiArMTI0MCwxNCBAQCBjaGVj a19wYXJhbXModm9pZCkNCj4+ICAJCQlyZXR1cm4gLTE7DQo+PiAgCQl9DQo+PiAgCX0NCj4+ICsN Cj4+ICsJaWYgKGVoX2NvbmYtPm1vZGUgPT0gRUhfUEtUX1RSQU5TRkVSX01PREVfUE9MTCkgew0K Pj4gKwkJaWYgKHNjaGVkdWxlX3R5cGUpIHsNCj4+ICsJCQlwcmludGYoImVycm9yOiBvcHRpb24g LS1zY2hlZHVsZS10eXBlIGFwcGxpZXMgb25seSB0byBldmVudCBtb2RlXG4iKTsNCj4+ICsJCQly ZXR1cm4gLTE7DQo+PiArCQl9DQo+PiArCX0NCj4NCj4gQXMgYSBuaXQgLSBtaWdodCBiZSBiZXR0 ZXIgdG8ga2VlcCBjaGVja19wYXJhbXMoKSBpbnRhY3QsDQo+IGFuZCBwdXQgdGhpcyBuZXcgY2hl Y2sgYWJvdmUgaW50byBhIHNlcGFyYXRlIGZ1bmN0aW9uPw0KPiBjaGVja19laF9jb25mKCkgb3Ig c28/DQoNCltMdWthc3pdIEkgd2lsbCBwdXQgdGhlIGNoZWNrIGludG8gbmV3IGNoZWNrX2VoX2Nv bmYoKSBmdW5jdGlvbi4NCg0KPiBBbm90aGVyIHRoaW5nIGl0IHNlZW1zIGEgYml0IGNsdW1zeSBj b25zdHJ1Y3Rpb24gdG8gaGF2ZSBnbG9iYWwgdmFyIChzY2hlZHVsZXJfdHlwZSkNCj4ganVzdCB0 byBmaWd1cmUgb3V0IHdhcyBwYXJ0aWN1bGFyIG9wdGlvbiBwcmVzZW50IG9uIGNvbW1hbmQgbGlu ZSBvciBub3QuDQo+IFByb2JhYmx5IHNpbWxlciB3YXkgdG8gYXZvaWQgaXQgLSBzZXQgaW5pdGlh bGx5IGVtX2NvbmYtPmV4dF9wYXJhbXMuc2NoZWRfdHlwZSB0bw0KPiBzb21lIGludmFsaWQgdmFs dWUgKC0xIG9yIHNvKS4gVGhlbiBhZnRlciBwYXJzZSBhcmdzIHlvdSBjYW4gY2hlY2sgZGlkIGl0 cyB2YWx1ZQ0KPiBjaGFuZ2Ugb3Igbm90Lg0KDQpbTHVrYXN6XSBJIHdpbGwgY2hhbmdlIGl0IGlu IFYzLg0KDQo+IEFzIGFsdGVybmF0aXZlIHRob3VnaHQ6IHdvdWxkbid0IGl0IGJlIGJldHRlciB0 byB1bml0ZSBib3RoICAtLXRyYW5zZmVyLW1vZGUNCj4gYW5kIC0tc2NoZWR1bGUtdHlwZSBvcHRp b25zIGludG8gb25lPw0KPiBUaGVuIHBvc3NpYmxlIHZhbHVlcyBmb3IgdGhpcyB1bml0ZSBvcHRp b24gd291bGQgYmU6DQo+ICJwb2xsIg0KPiAiZXZlbnQiIChleHBhbmRzIHRvICJldmVudC1vcmRl cmVkIikNCj4gImV2ZW50LW9yZGVyZWQiDQo+ICJldmVudC1hdG9taWMiDQo+ICJldmVudC1wYXJh bGxlbCINCj4gQW5kIHRoaXMgc2l0dWF0aW9uIHlvdSBhcmUgY2hlY2tpbmcgYWJvdmUgc2ltcGx5 IHdvdWxkbid0IGJlIHBvc3NpYmxlLg0KPiBBZ2FpbiBwcm9iYWJseSB3b3VsZCBiZSBlYXNpZXIv c2ltcGxlciBmb3IgdXNlcnMuDQoNCltMdWthc3pdIEkgd291bGQgcmF0aGVyIG5vdCBjb21iaW5l IGV2ZW50IG1vZGUgcGFyYW1ldGVycyBpbnRvIG9uZSBmb3IgdHdvIHJlYXNvbjoNCi0gdG8gYmUg Y29uc2lzdGVudCB3aXRoIHBvbGwgd2hlcmUgb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBpcyBjb250 cm9sbGVkIHdpdGggb25lIG9wdGlvbiwNCi0gaWYgd2UgY29tZSB1cCB3aXRoIGEgbmVlZCB0byBh ZGQgYSBuZXcgZXZlbnQgbW9kZSBwYXJhbWV0ZXIgaW4gZnV0dXJlIHRoZW4gd2UgDQp3ZSB3aWxs IG5lZWQgdG8gc3BsaXQgZXZlbnQtb3JkZXJlZCBiYWNrIHRvIC0tdHJhbnNmZXItbW9kZSBhbmQg LS1zY2hlZHVsZS10eXBlDQp0byBiZSBjb25zaXN0ZW50IHdpdGggaG93IHdpdGggcHJvdmlkZSBl dmVudCBtb2RlIGNvbW1hbmQgbGluZSBvcHRpb25zLg0KDQo+DQo+PiArDQo+PiAgCXJldHVybiAw Ow0KPj4gIH0NCj4+DQo+PiBAQCAtMTI3Nyw2ICsxMzA1LDggQEAgcHJpbnRfdXNhZ2UoY29uc3Qg Y2hhciAqcHJnbmFtZSkNCj4+ICAJCSIgLS1jb25maWcgKHBvcnQscXVldWUsbGNvcmUpWywocG9y dCxxdWV1ZSxsY29yZSldIg0KPj4gIAkJIiBbLS1zaW5nbGUtc2EgU0FJRFhdIg0KPj4gIAkJIiBb LS1jcnlwdG9kZXZfbWFzayBNQVNLXSINCj4+ICsJCSIgWy0tdHJhbnNmZXItbW9kZSBNT0RFXSIN Cj4+ICsJCSIgWy0tc2NoZWR1bGUtdHlwZSBUWVBFXSINCj4+ICAJCSIgWy0tIiBDTURfTElORV9P UFRfUlhfT0ZGTE9BRCAiIFJYX09GRkxPQURfTUFTS10iDQo+PiAgCQkiIFstLSIgQ01EX0xJTkVf T1BUX1RYX09GRkxPQUQgIiBUWF9PRkZMT0FEX01BU0tdIg0KPj4gIAkJIiBbLS0iIENNRF9MSU5F X09QVF9SRUFTU0VNQkxFICIgUkVBU1NFTUJMRV9UQUJMRV9TSVpFXSINCj4+IEBAIC0xMjk4LDYg KzEzMjgsMTQgQEAgcHJpbnRfdXNhZ2UoY29uc3QgY2hhciAqcHJnbmFtZSkNCj4+ICAJCSIgICAg ICAgICAgICAgICAgICAgICBieXBhc3NpbmcgdGhlIFNQXG4iDQo+PiAgCQkiICAtLWNyeXB0b2Rl dl9tYXNrIE1BU0s6IEhleGFkZWNpbWFsIGJpdG1hc2sgb2YgdGhlIGNyeXB0b1xuIg0KPj4gIAkJ IiAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VzIHRvIGNvbmZpZ3VyZVxuIg0KPj4gKwkJ IiAgLS10cmFuc2Zlci1tb2RlIE1PREVcbiINCj4+ICsJCSIgICAgICAgICAgICAgICBcInBvbGxc IiAgOiBQYWNrZXQgdHJhbnNmZXIgdmlhIHBvbGxpbmcgKGRlZmF1bHQpXG4iDQo+PiArCQkiICAg ICAgICAgICAgICAgXCJldmVudFwiIDogUGFja2V0IHRyYW5zZmVyIHZpYSBldmVudCBkZXZpY2Vc biINCj4+ICsJCSIgIC0tc2NoZWR1bGUtdHlwZSBUWVBFIHF1ZXVlIHNjaGVkdWxlIHR5cGUsIHVz ZWQgb25seSB3aGVuXG4iDQo+PiArCQkiICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2ZlciBt b2RlIGlzIHNldCB0byBldmVudFxuIg0KPj4gKwkJIiAgICAgICAgICAgICAgIFwib3JkZXJlZFwi ICA6IE9yZGVyZWQgKGRlZmF1bHQpXG4iDQo+PiArCQkiICAgICAgICAgICAgICAgXCJhdG9taWNc IiAgIDogQXRvbWljXG4iDQo+PiArCQkiICAgICAgICAgICAgICAgXCJwYXJhbGxlbFwiIDogUGFy YWxsZWxcbiINCj4+ICAJCSIgIC0tIiBDTURfTElORV9PUFRfUlhfT0ZGTE9BRA0KPj4gIAkJIjog Yml0bWFzayBvZiB0aGUgUlggSFcgb2ZmbG9hZCBjYXBhYmlsaXRpZXMgdG8gZW5hYmxlL3VzZVxu Ig0KPj4gIAkJIiAgICAgICAgICAgICAgICAgICAgICAgICAoREVWX1JYX09GRkxPQURfKilcbiIN Cj4+IEBAIC0xNDMyLDggKzE0NzAsNDUgQEAgcHJpbnRfYXBwX3NhX3BybShjb25zdCBzdHJ1Y3Qg YXBwX3NhX3BybSAqcHJtKQ0KPj4gIAlwcmludGYoIkZyYWcgVFRMOiAlIiBQUkl1NjQgIiBuc1xu IiwgZnJhZ190dGxfbnMpOw0KPj4gIH0NCj4+DQo+PiArc3RhdGljIGludA0KPj4gK3BhcnNlX3Ry YW5zZmVyX21vZGUoc3RydWN0IGVoX2NvbmYgKmNvbmYsIGNvbnN0IGNoYXIgKm9wdGFyZykNCj4+ ICt7DQo+PiArCWlmICghc3RyY21wKENNRF9MSU5FX0FSR19QT0xMLCBvcHRhcmcpKQ0KPj4gKwkJ Y29uZi0+bW9kZSA9IEVIX1BLVF9UUkFOU0ZFUl9NT0RFX1BPTEw7DQo+PiArCWVsc2UgaWYgKCFz dHJjbXAoQ01EX0xJTkVfQVJHX0VWRU5ULCBvcHRhcmcpKQ0KPj4gKwkJY29uZi0+bW9kZSA9IEVI X1BLVF9UUkFOU0ZFUl9NT0RFX0VWRU5UOw0KPj4gKwllbHNlIHsNCj4+ICsJCXByaW50ZigiVW5z dXBwb3J0ZWQgcGFja2V0IHRyYW5zZmVyIG1vZGVcbiIpOw0KPj4gKwkJcmV0dXJuIC1FSU5WQUw7 DQo+PiArCX0NCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBp bnQNCj4+ICtwYXJzZV9zY2hlZHVsZV90eXBlKHN0cnVjdCBlaF9jb25mICpjb25mLCBjb25zdCBj aGFyICpvcHRhcmcpDQo+PiArew0KPj4gKwlzdHJ1Y3QgZXZlbnRtb2RlX2NvbmYgKmVtX2NvbmYg PSBOVUxMOw0KPj4gKw0KPj4gKwkvKiBHZXQgZXZlbnRtb2RlIGNvbmYgKi8NCj4+ICsJZW1fY29u ZiA9IGNvbmYtPm1vZGVfcGFyYW1zOw0KPj4gKw0KPj4gKwlpZiAoIXN0cmNtcChDTURfTElORV9B UkdfT1JERVJFRCwgb3B0YXJnKSkNCj4+ICsJCWVtX2NvbmYtPmV4dF9wYXJhbXMuc2NoZWRfdHlw ZSA9IFJURV9TQ0hFRF9UWVBFX09SREVSRUQ7DQo+PiArCWVsc2UgaWYgKCFzdHJjbXAoQ01EX0xJ TkVfQVJHX0FUT01JQywgb3B0YXJnKSkNCj4+ICsJCWVtX2NvbmYtPmV4dF9wYXJhbXMuc2NoZWRf dHlwZSA9IFJURV9TQ0hFRF9UWVBFX0FUT01JQzsNCj4+ICsJZWxzZSBpZiAoIXN0cmNtcChDTURf TElORV9BUkdfUEFSQUxMRUwsIG9wdGFyZykpDQo+PiArCQllbV9jb25mLT5leHRfcGFyYW1zLnNj aGVkX3R5cGUgPSBSVEVfU0NIRURfVFlQRV9QQVJBTExFTDsNCj4+ICsJZWxzZSB7DQo+PiArCQlw cmludGYoIlVuc3VwcG9ydGVkIHF1ZXVlIHNjaGVkdWxlIHR5cGVcbiIpOw0KPj4gKwkJcmV0dXJu IC1FSU5WQUw7DQo+PiArCX0NCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4g IHN0YXRpYyBpbnQzMl90DQo+PiAtcGFyc2VfYXJncyhpbnQzMl90IGFyZ2MsIGNoYXIgKiphcmd2 KQ0KPj4gK3BhcnNlX2FyZ3MoaW50MzJfdCBhcmdjLCBjaGFyICoqYXJndiwgc3RydWN0IGVoX2Nv bmYgKmVoX2NvbmYpDQo+PiAgew0KPj4gIAlpbnQgb3B0Ow0KPj4gIAlpbnQ2NF90IHJldDsNCj4+ IEBAIC0xNTIyLDYgKzE1OTcsNyBAQCBwYXJzZV9hcmdzKGludDMyX3QgYXJnYywgY2hhciAqKmFy Z3YpDQo+PiAgCQkJLyogZWxzZSAqLw0KPj4gIAkJCXNpbmdsZV9zYSA9IDE7DQo+PiAgCQkJc2lu Z2xlX3NhX2lkeCA9IHJldDsNCj4+ICsJCQllaF9jb25mLT5pcHNlY19tb2RlID0gRUhfSVBTRUNf TU9ERV9UWVBFX0RSSVZFUjsNCj4+ICAJCQlwcmludGYoIkNvbmZpZ3VyZWQgd2l0aCBzaW5nbGUg U0EgaW5kZXggJXVcbiIsDQo+PiAgCQkJCQlzaW5nbGVfc2FfaWR4KTsNCj4+ICAJCQlicmVhazsN Cj4+IEBAIC0xNTM2LDYgKzE2MTIsMjYgQEAgcGFyc2VfYXJncyhpbnQzMl90IGFyZ2MsIGNoYXIg Kiphcmd2KQ0KPj4gIAkJCS8qIGVsc2UgKi8NCj4+ICAJCQllbmFibGVkX2NyeXB0b2Rldl9tYXNr ID0gcmV0Ow0KPj4gIAkJCWJyZWFrOw0KPj4gKw0KPj4gKwkJY2FzZSBDTURfTElORV9PUFRfVFJB TlNGRVJfTU9ERV9OVU06DQo+PiArCQkJcmV0ID0gcGFyc2VfdHJhbnNmZXJfbW9kZShlaF9jb25m LCBvcHRhcmcpOw0KPj4gKwkJCWlmIChyZXQgPCAwKSB7DQo+PiArCQkJCXByaW50ZigiSW52YWxp ZCBwYWNrZXQgdHJhbnNmZXIgbW9kZVxuIik7DQo+PiArCQkJCXByaW50X3VzYWdlKHByZ25hbWUp Ow0KPj4gKwkJCQlyZXR1cm4gLTE7DQo+PiArCQkJfQ0KPj4gKwkJCWJyZWFrOw0KPj4gKw0KPj4g KwkJY2FzZSBDTURfTElORV9PUFRfU0NIRURVTEVfVFlQRV9OVU06DQo+PiArCQkJcmV0ID0gcGFy c2Vfc2NoZWR1bGVfdHlwZShlaF9jb25mLCBvcHRhcmcpOw0KPj4gKwkJCWlmIChyZXQgPCAwKSB7 DQo+PiArCQkJCXByaW50ZigiSW52YWxpZCBxdWV1ZSBzY2hlZHVsZSB0eXBlXG4iKTsNCj4+ICsJ CQkJcHJpbnRfdXNhZ2UocHJnbmFtZSk7DQo+PiArCQkJCXJldHVybiAtMTsNCj4+ICsJCQl9DQo+ PiArCQkJc2NoZWR1bGVfdHlwZSA9IDE7DQo+PiArCQkJYnJlYWs7DQo+PiArDQo+PiAgCQljYXNl IENNRF9MSU5FX09QVF9SWF9PRkZMT0FEX05VTToNCj4+ICAJCQlyZXQgPSBwYXJzZV9tYXNrKG9w dGFyZywgJmRldl9yeF9vZmZsb2FkKTsNCj4+ICAJCQlpZiAocmV0ICE9IDApIHsNCj4+IEBAIC0y NDUwLDE2ICsyNTQ2LDE3NiBAQCBjcmVhdGVfZGVmYXVsdF9pcHNlY19mbG93KHVpbnQxNl90IHBv cnRfaWQsIHVpbnQ2NF90IHJ4X29mZmxvYWRzKQ0KPj4gIAkJcG9ydF9pZCk7DQo+PiAgfQ0KPj4N Cj4NCj4gV291bGRuJ3QgaXQgYmUgbW9yZSBuYXR1cmFsIHRvIGhhdmUgdGhlc2UgMiBmdW5jdGlv bnMgYmVsb3cNCj4gKGVoX2NvbmZfaW5pdCgpLCBlaF9jb25mX3VuaW5pdCgpKSBkZWZpbmVkIGlu c2lkZSBldmVudF9oZWxwZXIuYz8NCj4NCg0KW0x1a2Fzel0gSSB3aWxsIG1vdmUgdGhlc2UgZnVu Y3Rpb25zIHRvIGV2ZW50X2hlbHBlci5jLg0KDQo+PiArc3RhdGljIHN0cnVjdCBlaF9jb25mICoN Cj4+ICtlaF9jb25mX2luaXQodm9pZCkNCj4+ICt7DQo+PiArCXN0cnVjdCBldmVudG1vZGVfY29u ZiAqZW1fY29uZiA9IE5VTEw7DQo+PiArCXN0cnVjdCBlaF9jb25mICpjb25mID0gTlVMTDsNCj4+ ICsJdW5zaWduZWQgaW50IGV0aF9jb3JlX2lkOw0KPj4gKwl1aW50MzJfdCBuYl9ieXRlczsNCj4+ ICsJdm9pZCAqbWVtID0gTlVMTDsNCj4+ICsNCj4+ICsJLyogQWxsb2NhdGUgbWVtb3J5IGZvciBj b25maWcgKi8NCj4+ICsJY29uZiA9IGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IGVoX2NvbmYpKTsN Cj4+ICsJaWYgKGNvbmYgPT0gTlVMTCkgew0KPj4gKwkJcHJpbnRmKCJGYWlsZWQgdG8gYWxsb2Nh dGUgbWVtb3J5IGZvciBldmVudG1vZGUgaGVscGVyIGNvbmYiKTsNCj4+ICsJCWdvdG8gZXJyOw0K Pj4gKwl9DQo+PiArDQo+PiArCS8qIFNldCBkZWZhdWx0IGNvbmYgKi8NCj4+ICsNCj4+ICsJLyog UGFja2V0IHRyYW5zZmVyIG1vZGU6IHBvbGwgKi8NCj4+ICsJY29uZi0+bW9kZSA9IEVIX1BLVF9U UkFOU0ZFUl9NT0RFX1BPTEw7DQo+PiArCWNvbmYtPmlwc2VjX21vZGUgPSBFSF9JUFNFQ19NT0RF X1RZUEVfQVBQOw0KPj4gKw0KPj4gKwkvKiBLZWVwIGFsbCBldGhlcm5ldCBwb3J0cyBlbmFibGVk IGJ5IGRlZmF1bHQgKi8NCj4+ICsJY29uZi0+ZXRoX3BvcnRtYXNrID0gLTE7DQo+PiArDQo+PiAr CS8qIEFsbG9jYXRlIG1lbW9yeSBmb3IgZXZlbnQgbW9kZSBwYXJhbXMgKi8NCj4+ICsJY29uZi0+ bW9kZV9wYXJhbXMgPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBldmVudG1vZGVfY29uZikpOw0K Pj4gKwlpZiAoY29uZi0+bW9kZV9wYXJhbXMgPT0gTlVMTCkgew0KPj4gKwkJcHJpbnRmKCJGYWls ZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBldmVudCBtb2RlIHBhcmFtcyIpOw0KPj4gKwkJZ290 byBlcnI7DQo+PiArCX0NCj4+ICsNCj4+ICsJLyogR2V0IGV2ZW50bW9kZSBjb25mICovDQo+PiAr CWVtX2NvbmYgPSBjb25mLT5tb2RlX3BhcmFtczsNCj4+ICsNCj4+ICsJLyogQWxsb2NhdGUgYW5k IGluaXRpYWxpemUgYml0bWFwIGZvciBldGggY29yZXMgKi8NCj4+ICsJbmJfYnl0ZXMgPSBydGVf Yml0bWFwX2dldF9tZW1vcnlfZm9vdHByaW50KFJURV9NQVhfTENPUkUpOw0KPj4gKwlpZiAoIW5i X2J5dGVzKSB7DQo+PiArCQlwcmludGYoIkZhaWxlZCB0byBnZXQgYml0bWFwIGZvb3RwcmludCIp Ow0KPj4gKwkJZ290byBlcnI7DQo+PiArCX0NCj4+ICsNCj4+ICsJbWVtID0gcnRlX3ptYWxsb2Mo ImV2ZW50LWhlbHBlci1ldGhjb3JlLWJpdG1hcCIsIG5iX2J5dGVzLA0KPj4gKwkJCSAgUlRFX0NB Q0hFX0xJTkVfU0laRSk7DQo+PiArCWlmICghbWVtKSB7DQo+PiArCQlwcmludGYoIkZhaWxlZCB0 byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGV0aCBjb3JlcyBiaXRtYXBcbiIpOw0KPj4gKwkJZ290byBl cnI7DQo+PiArCX0NCj4+ICsNCj4+ICsJZW1fY29uZi0+ZXRoX2NvcmVfbWFzayA9IHJ0ZV9iaXRt YXBfaW5pdChSVEVfTUFYX0xDT1JFLCBtZW0sIG5iX2J5dGVzKTsNCj4+ICsJaWYgKCFlbV9jb25m LT5ldGhfY29yZV9tYXNrKSB7DQo+PiArCQlwcmludGYoIkZhaWxlZCB0byBpbml0aWFsaXplIGJp dG1hcCIpOw0KPj4gKwkJZ290byBlcnI7DQo+PiArCX0NCj4+ICsNCj4+ICsJLyogU2NoZWR1bGUg dHlwZTogb3JkZXJlZCAqLw0KPj4gKwllbV9jb25mLT5leHRfcGFyYW1zLnNjaGVkX3R5cGUgPSBS VEVfU0NIRURfVFlQRV9PUkRFUkVEOw0KPj4gKw0KPj4gKwkvKiBTZXQgdHdvIGNvcmVzIGFzIGV0 aCBjb3JlcyBmb3IgUnggJiBUeCAqLw0KPj4gKw0KPj4gKwkvKiBVc2UgZmlyc3QgY29yZSBvdGhl ciB0aGFuIG1hc3RlciBjb3JlIGFzIFJ4IGNvcmUgKi8NCj4+ICsJZXRoX2NvcmVfaWQgPSBydGVf Z2V0X25leHRfbGNvcmUoMCwJLyogY3VyciBjb3JlICovDQo+PiArCQkJCQkgMSwJLyogc2tpcCBt YXN0ZXIgY29yZSAqLw0KPj4gKwkJCQkJIDAJLyogd3JhcCAqLyk7DQo+PiArDQo+PiArCXJ0ZV9i aXRtYXBfc2V0KGVtX2NvbmYtPmV0aF9jb3JlX21hc2ssIGV0aF9jb3JlX2lkKTsNCj4+ICsNCj4+ ICsJLyogVXNlIG5leHQgY29yZSBhcyBUeCBjb3JlICovDQo+PiArCWV0aF9jb3JlX2lkID0gcnRl X2dldF9uZXh0X2xjb3JlKGV0aF9jb3JlX2lkLAkvKiBjdXJyIGNvcmUgKi8NCj4+ICsJCQkJCSAx LAkJLyogc2tpcCBtYXN0ZXIgY29yZSAqLw0KPj4gKwkJCQkJIDAJCS8qIHdyYXAgKi8pOw0KPj4g Kw0KPj4gKwlydGVfYml0bWFwX3NldChlbV9jb25mLT5ldGhfY29yZV9tYXNrLCBldGhfY29yZV9p ZCk7DQo+PiArDQo+PiArCXJldHVybiBjb25mOw0KPj4gK2VycjoNCj4+ICsJcnRlX2ZyZWUobWVt KTsNCj4+ICsJZnJlZShlbV9jb25mKTsNCj4+ICsJZnJlZShjb25mKTsNCj4+ICsJcmV0dXJuIE5V TEw7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkDQo+PiArZWhfY29uZl91bmluaXQoc3Ry dWN0IGVoX2NvbmYgKmNvbmYpDQo+PiArew0KPj4gKwlzdHJ1Y3QgZXZlbnRtb2RlX2NvbmYgKmVt X2NvbmYgPSBOVUxMOw0KPj4gKw0KPj4gKwkvKiBHZXQgZXZlbnRtb2RlIGNvbmYgKi8NCj4+ICsJ ZW1fY29uZiA9IGNvbmYtPm1vZGVfcGFyYW1zOw0KPj4gKw0KPj4gKwkvKiBGcmVlIGV2ZW5tb2Rl IGNvbmZpZ3VyYXRpb24gbWVtb3J5ICovDQo+PiArCXJ0ZV9mcmVlKGVtX2NvbmYtPmV0aF9jb3Jl X21hc2spOw0KPj4gKwlmcmVlKGVtX2NvbmYpOw0KPj4gKwlmcmVlKGNvbmYpOw0KPj4gK30NCj4+ ICsNCj4+ICtzdGF0aWMgdm9pZA0KPj4gK3NpZ25hbF9oYW5kbGVyKGludCBzaWdudW0pDQo+PiAr ew0KPj4gKwlpZiAoc2lnbnVtID09IFNJR0lOVCB8fCBzaWdudW0gPT0gU0lHVEVSTSkgew0KPj4g KwkJcHJpbnRmKCJcblxuU2lnbmFsICVkIHJlY2VpdmVkLCBwcmVwYXJpbmcgdG8gZXhpdC4uLlxu IiwNCj4+ICsJCQkJc2lnbnVtKTsNCj4+ICsJCWZvcmNlX3F1aXQgPSB0cnVlOw0KPj4gKwl9DQo+ PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkDQo+PiAraW5saW5lX3Nlc3Npb25zX2ZyZWUoc3Ry dWN0IHNhX2N0eCAqc2FfY3R4KQ0KPj4gK3sNCj4+ICsJc3RydWN0IHJ0ZV9pcHNlY19zZXNzaW9u ICppcHM7DQo+PiArCXN0cnVjdCBpcHNlY19zYSAqc2E7DQo+PiArCWludDMyX3QgaSwgcmV0Ow0K Pj4gKw0KPj4gKwlmb3IgKGkgPSAwOyBpIDwgSVBTRUNfU0FfTUFYX0VOVFJJRVM7IGkrKykgew0K Pj4gKw0KPj4gKwkJc2EgPSAmc2FfY3R4LT5zYVtpXTsNCj4+ICsJCWlmICghc2EtPnNwaSkNCj4+ ICsJCQljb250aW51ZTsNCj4+ICsNCj4+ICsJCWlwcyA9IGlwc2VjX2dldF9wcmltYXJ5X3Nlc3Np b24oc2EpOw0KPj4gKwkJaWYgKGlwcy0+dHlwZSAhPSBSVEVfU0VDVVJJVFlfQUNUSU9OX1RZUEVf SU5MSU5FX1BST1RPQ09MICYmDQo+PiArCQkgICAgaXBzLT50eXBlICE9IFJURV9TRUNVUklUWV9B Q1RJT05fVFlQRV9JTkxJTkVfQ1JZUFRPKQ0KPj4gKwkJCWNvbnRpbnVlOw0KPj4gKw0KPj4gKwkJ cmV0ID0gcnRlX3NlY3VyaXR5X3Nlc3Npb25fZGVzdHJveSgNCj4+ICsJCQkJcnRlX2V0aF9kZXZf Z2V0X3NlY19jdHgoc2EtPnBvcnRpZCksDQo+PiArCQkJCWlwcy0+c2VjdXJpdHkuc2VzKTsNCj4+ ICsJCWlmIChyZXQpDQo+PiArCQkJUlRFX0xPRyhFUlIsIElQU0VDLCAiRmFpbGVkIHRvIGRlc3Ry b3kgc2VjdXJpdHkgIg0KPj4gKwkJCQkJICAgICJzZXNzaW9uIHR5cGUgJWQsIHNwaSAlZFxuIiwN Cj4+ICsJCQkJCSAgICBpcHMtPnR5cGUsIHNhLT5zcGkpOw0KPj4gKwl9DQo+PiArfQ0KPj4gKw0K Pj4gK3N0YXRpYyB2b2lkDQo+PiArZXZfbW9kZV9zZXNzX3ZlcmlmeShzdHJ1Y3Qgc2FfY3R4ICpz YV9jdHgpDQo+PiArew0KPj4gKwlzdHJ1Y3QgcnRlX2lwc2VjX3Nlc3Npb24gKmlwczsNCj4+ICsJ c3RydWN0IGlwc2VjX3NhICpzYTsNCj4+ICsJaW50MzJfdCBpOw0KPj4gKw0KPj4gKwlpZiAoIXNh X2N0eCkNCj4+ICsJCXJldHVybjsNCj4+ICsNCj4+ICsJZm9yIChpID0gMDsgaSA8IElQU0VDX1NB X01BWF9FTlRSSUVTOyBpKyspIHsNCj4+ICsNCj4+ICsJCXNhID0gJnNhX2N0eC0+c2FbaV07DQo+ PiArCQlpZiAoIXNhLT5zcGkpDQo+PiArCQkJY29udGludWU7DQo+PiArDQo+PiArCQlpcHMgPSBp cHNlY19nZXRfcHJpbWFyeV9zZXNzaW9uKHNhKTsNCj4+ICsJCWlmIChpcHMtPnR5cGUgIT0gUlRF X1NFQ1VSSVRZX0FDVElPTl9UWVBFX0lOTElORV9QUk9UT0NPTCkNCj4+ICsJCQlydGVfZXhpdChF WElUX0ZBSUxVUkUsICJFdmVudCBtb2RlIHN1cHBvcnRzIG9ubHkgIg0KPj4gKwkJCQkgImlubGlu ZSBwcm90b2NvbCBzZXNzaW9uc1xuIik7DQo+DQo+IEFzIEkgdW5kZXJzdGFuZCBhdCB0aGF0IG1v bWVudCBpbmxpbmUgc2Vzc2lvbnMgYWxyZWFkeSBjcmVhdGVkIG9uIGRldmljZXM/DQo+IEZvciBj b25zaXN0ZW5jeSB3b3VsZG4ndCBpdCBiZSBiZXR0ZXIgdG8gZG8gdGhpcyBjaGVjayBhdCBwYXJz aW5nIGNmZyBmaWxlLA0KPiBvciBzdHJhaWdodCBhZnRlciBpdD8gDQo+DQoNCltMdWthc3pdIEkg d2lsbCBtb3ZlIHRoaXMgY2hlY2sgdG8gYmUgZG9uZSBhZnRlciBwYXJzaW5nIGNmZyBmaWxlIGlu dG8gY2hlY2tfZWhfY29uZigpIGZ1bmN0aW9uLg0KDQo+PiArCX0NCj4+ICsNCj4+ICt9DQo+PiAr DQo+PiAgaW50MzJfdA0KPj4gIG1haW4oaW50MzJfdCBhcmdjLCBjaGFyICoqYXJndikNCj4+ICB7 DQo+PiAgCWludDMyX3QgcmV0Ow0KPj4gIAl1aW50MzJfdCBsY29yZV9pZDsNCj4+ICsJdWludDMy X3QgY2Rldl9pZDsNCj4+ICAJdWludDMyX3QgaTsNCj4+ICAJdWludDhfdCBzb2NrZXRfaWQ7DQo+ PiAgCXVpbnQxNl90IHBvcnRpZDsNCj4+ICAJdWludDY0X3QgcmVxX3J4X29mZmxvYWRzW1JURV9N QVhfRVRIUE9SVFNdOw0KPj4gIAl1aW50NjRfdCByZXFfdHhfb2ZmbG9hZHNbUlRFX01BWF9FVEhQ T1JUU107DQo+PiArCXN0cnVjdCBlaF9jb25mICplaF9jb25mID0gTlVMTDsNCj4+ICAJc2l6ZV90 IHNlc3Nfc3o7DQo+Pg0KPj4gIAkvKiBpbml0IEVBTCAqLw0KPj4gQEAgLTI0NjksOCArMjcyNSwx NyBAQCBtYWluKGludDMyX3QgYXJnYywgY2hhciAqKmFyZ3YpDQo+PiAgCWFyZ2MgLT0gcmV0Ow0K Pj4gIAlhcmd2ICs9IHJldDsNCj4+DQo+PiArCWZvcmNlX3F1aXQgPSBmYWxzZTsNCj4+ICsJc2ln bmFsKFNJR0lOVCwgc2lnbmFsX2hhbmRsZXIpOw0KPj4gKwlzaWduYWwoU0lHVEVSTSwgc2lnbmFs X2hhbmRsZXIpOw0KPj4gKw0KPj4gKwkvKiBpbml0aWFsaXplIGV2ZW50IGhlbHBlciBjb25maWd1 cmF0aW9uICovDQo+PiArCWVoX2NvbmYgPSBlaF9jb25mX2luaXQoKTsNCj4+ICsJaWYgKGVoX2Nv bmYgPT0gTlVMTCkNCj4+ICsJCXJ0ZV9leGl0KEVYSVRfRkFJTFVSRSwgIkZhaWxlZCB0byBpbml0 IGV2ZW50IGhlbHBlciBjb25maWciKTsNCj4+ICsNCj4+ICAJLyogcGFyc2UgYXBwbGljYXRpb24g YXJndW1lbnRzIChhZnRlciB0aGUgRUFMIG9uZXMpICovDQo+PiAtCXJldCA9IHBhcnNlX2FyZ3Mo YXJnYywgYXJndik7DQo+PiArCXJldCA9IHBhcnNlX2FyZ3MoYXJnYywgYXJndiwgZWhfY29uZik7 DQo+PiAgCWlmIChyZXQgPCAwKQ0KPj4gIAkJcnRlX2V4aXQoRVhJVF9GQUlMVVJFLCAiSW52YWxp ZCBwYXJhbWV0ZXJzXG4iKTsNCj4+DQo+PiBAQCAtMjQ4Nyw3ICsyNzUyLDcgQEAgbWFpbihpbnQz Ml90IGFyZ2MsIGNoYXIgKiphcmd2KQ0KPj4gIAkJcnRlX2V4aXQoRVhJVF9GQUlMVVJFLCAiSW52 YWxpZCB1bnByb3RlY3RlZCBwb3J0bWFzayAweCV4XG4iLA0KPj4gIAkJCQl1bnByb3RlY3RlZF9w b3J0X21hc2spOw0KPj4NCj4+IC0JaWYgKGNoZWNrX3BhcmFtcygpIDwgMCkNCj4+ICsJaWYgKGNo ZWNrX3BhcmFtcyhlaF9jb25mKSA8IDApDQo+PiAgCQlydGVfZXhpdChFWElUX0ZBSUxVUkUsICJj aGVja19wYXJhbXMgZmFpbGVkXG4iKTsNCj4+DQo+PiAgCXJldCA9IGluaXRfbGNvcmVfcnhfcXVl dWVzKCk7DQo+PiBAQCAtMjUyOSw2ICsyNzk0LDE4IEBAIG1haW4oaW50MzJfdCBhcmdjLCBjaGFy ICoqYXJndikNCj4+DQo+PiAgCWNyeXB0b2RldnNfaW5pdCgpOw0KPj4NCj4+ICsJLyoNCj4+ICsJ ICogU2V0IHRoZSBlbmFibGVkIHBvcnQgbWFzayBpbiBoZWxwZXIgY29uZmlnIGZvciB1c2UgYnkg aGVscGVyDQo+PiArCSAqIHN1Yi1zeXN0ZW0uIFRoaXMgd2lsbCBiZSB1c2VkIHdoaWxlIGluaXRp YWxpemluZyBkZXZpY2VzIHVzaW5nDQo+PiArCSAqIGhlbHBlciBzdWItc3lzdGVtLg0KPj4gKwkg Ki8NCj4+ICsJZWhfY29uZi0+ZXRoX3BvcnRtYXNrID0gZW5hYmxlZF9wb3J0X21hc2s7DQo+PiAr DQo+PiArCS8qIEluaXRpYWxpemUgZXZlbnRtb2RlIGNvbXBvbmVudHMgKi8NCj4+ICsJcmV0ID0g ZWhfZGV2c19pbml0KGVoX2NvbmYpOw0KPj4gKwlpZiAocmV0IDwgMCkNCj4+ICsJCXJ0ZV9leGl0 KEVYSVRfRkFJTFVSRSwgImVoX2RldnNfaW5pdCBmYWlsZWQsIGVycj0lZFxuIiwgcmV0KTsNCj4+ ICsNCj4+ICAJLyogc3RhcnQgcG9ydHMgKi8NCj4+ICAJUlRFX0VUSF9GT1JFQUNIX0RFVihwb3J0 aWQpIHsNCj4+ICAJCWlmICgoZW5hYmxlZF9wb3J0X21hc2sgJiAoMSA8PCBwb3J0aWQpKSA9PSAw KQ0KPj4gQEAgLTI1NzYsNiArMjg1MywxOCBAQCBtYWluKGludDMyX3QgYXJnYywgY2hhciAqKmFy Z3YpDQo+PiAgCQkJc3A0X2luaXQoJnNvY2tldF9jdHhbc29ja2V0X2lkXSwgc29ja2V0X2lkKTsN Cj4+ICAJCQlzcDZfaW5pdCgmc29ja2V0X2N0eFtzb2NrZXRfaWRdLCBzb2NrZXRfaWQpOw0KPj4g IAkJCXJ0X2luaXQoJnNvY2tldF9jdHhbc29ja2V0X2lkXSwgc29ja2V0X2lkKTsNCj4+ICsNCj4+ ICsJCQkvKg0KPj4gKwkJCSAqIEV2ZW50IG1vZGUgY3VycmVudGx5IHN1cHBvcnRzIG9ubHkgaW5s aW5lIHByb3RvY29sDQo+PiArCQkJICogc2Vzc2lvbnMuIElmIHRoZXJlIGFyZSBvdGhlciB0eXBl cyBvZiBzZXNzaW9ucw0KPj4gKwkJCSAqIGNvbmZpZ3VyZWQgdGhlbiBleGl0IHdpdGggZXJyb3Iu DQo+PiArCQkJICovDQo+PiArCQkJaWYgKGVoX2NvbmYtPm1vZGUgPT0gRUhfUEtUX1RSQU5TRkVS X01PREVfRVZFTlQpIHsNCj4+ICsJCQkJZXZfbW9kZV9zZXNzX3ZlcmlmeSgNCj4+ICsJCQkJCQlz b2NrZXRfY3R4W3NvY2tldF9pZF0uc2FfaW4pOw0KPj4gKwkJCQlldl9tb2RlX3Nlc3NfdmVyaWZ5 KA0KPj4gKwkJCQkJCXNvY2tldF9jdHhbc29ja2V0X2lkXS5zYV9vdXQpOw0KPj4gKwkJCX0NCj4+ ICAJCX0NCj4+ICAJfQ0KPj4NCj4+IEBAIC0yNTgzLDEwICsyODcyLDU0IEBAIG1haW4oaW50MzJf dCBhcmdjLCBjaGFyICoqYXJndikNCj4+IAkNCj4+ICAJLyogbGF1bmNoIHBlci1sY29yZSBpbml0 IG9uIGV2ZXJ5IGxjb3JlICovDQo+PiAgCXJ0ZV9lYWxfbXBfcmVtb3RlX2xhdW5jaChtYWluX2xv b3AsIE5VTEwsIENBTExfTUFTVEVSKTsNCj4+ICsNCj4+ICAJUlRFX0xDT1JFX0ZPUkVBQ0hfU0xB VkUobGNvcmVfaWQpIHsNCj4+ICAJCWlmIChydGVfZWFsX3dhaXRfbGNvcmUobGNvcmVfaWQpIDwg MCkNCj4+ICAJCQlyZXR1cm4gLTE7DQo+PiAgCX0NCj4+DQo+PiArCS8qIFVuaW5pdGlhbGl6ZSBl dmVudG1vZGUgY29tcG9uZW50cyAqLw0KPj4gKwlyZXQgPSBlaF9kZXZzX3VuaW5pdChlaF9jb25m KTsNCj4+ICsJaWYgKHJldCA8IDApDQo+PiArCQlydGVfZXhpdChFWElUX0ZBSUxVUkUsICJlaF9k ZXZzX3VuaW5pdCBmYWlsZWQsIGVycj0lZFxuIiwgcmV0KTsNCj4+ICsNCj4+ICsJLyogRnJlZSBl dmVudG1vZGUgY29uZmlndXJhdGlvbiBtZW1vcnkgKi8NCj4+ICsJZWhfY29uZl91bmluaXQoZWhf Y29uZik7DQo+PiArDQo+PiArCS8qIERlc3Ryb3kgaW5saW5lIGluYm91bmQgYW5kIG91dGJvdW5k IHNlc3Npb25zICovDQo+PiArCWZvciAoaSA9IDA7IGkgPCBOQl9TT0NLRVRTICYmIGkgPCBydGVf c29ja2V0X2NvdW50KCk7IGkrKykgew0KPj4gKwkJc29ja2V0X2lkID0gcnRlX3NvY2tldF9pZF9i eV9pZHgoaSk7DQo+PiArCQlpbmxpbmVfc2Vzc2lvbnNfZnJlZShzb2NrZXRfY3R4W3NvY2tldF9p ZF0uc2FfaW4pOw0KPg0KPiBUaGF0IGNhdXNlcyBhIGNyYXNoIG9uIDIgc29ja2V0IHN5c3RlbSB3 aXRoIHRoZSBjb25maWcgdGhhdCB1c2VzDQo+IGxjb3JlcyBvbmx5IGZyb20gdGhlIGZpcnN0IHNv Y2tldC4NCj4NCg0KW0x1a2Fzel0gSSB3aWxsIGZpeCBpdCBpbiBWMy4gVGhhbmtzDQoNCj4+ICsJ CWlubGluZV9zZXNzaW9uc19mcmVlKHNvY2tldF9jdHhbc29ja2V0X2lkXS5zYV9vdXQpOw0KPj4g Kwl9DQo+PiArDQo+PiArCWZvciAoY2Rldl9pZCA9IDA7IGNkZXZfaWQgPCBydGVfY3J5cHRvZGV2 X2NvdW50KCk7IGNkZXZfaWQrKykgew0KPj4gKwkJcHJpbnRmKCJDbG9zaW5nIGNyeXB0b2RldiAl ZC4uLiIsIGNkZXZfaWQpOw0KPj4gKwkJcnRlX2NyeXB0b2Rldl9zdG9wKGNkZXZfaWQpOw0KPj4g KwkJcnRlX2NyeXB0b2Rldl9jbG9zZShjZGV2X2lkKTsNCj4+ICsJCXByaW50ZigiIERvbmVcbiIp Ow0KPj4gKwl9DQo+PiArDQo+PiArCVJURV9FVEhfRk9SRUFDSF9ERVYocG9ydGlkKSB7DQo+PiAr CQlpZiAoKGVuYWJsZWRfcG9ydF9tYXNrICYgKDEgPDwgcG9ydGlkKSkgPT0gMCkNCj4+ICsJCQlj b250aW51ZTsNCj4+ICsNCj4+ICsJCXByaW50ZigiQ2xvc2luZyBwb3J0ICVkLi4uIiwgcG9ydGlk KTsNCj4+ICsJCWlmIChmbG93X2luZm9fdGJsW3BvcnRpZF0ucnhfZGVmX2Zsb3cpIHsNCj4+ICsJ CQlzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgZXJyOw0KPj4gKw0KPj4gKwkJCXJldCA9IHJ0ZV9mbG93 X2Rlc3Ryb3kocG9ydGlkLA0KPj4gKwkJCQlmbG93X2luZm9fdGJsW3BvcnRpZF0ucnhfZGVmX2Zs b3csICZlcnIpOw0KPj4gKwkJCWlmIChyZXQpDQo+PiArCQkJCVJURV9MT0coRVJSLCBJUFNFQywg IkZhaWxlZCB0byBkZXN0cm95IGZsb3cgIg0KPj4gKwkJCQkJIiBmb3IgcG9ydCAldSwgZXJyIG1z ZzogJXNcbiIsIHBvcnRpZCwNCj4+ICsJCQkJCWVyci5tZXNzYWdlKTsNCj4+ICsJCX0NCj4+ICsJ CXJ0ZV9ldGhfZGV2X3N0b3AocG9ydGlkKTsNCj4+ICsJCXJ0ZV9ldGhfZGV2X2Nsb3NlKHBvcnRp ZCk7DQo+PiArCQlwcmludGYoIiBEb25lXG4iKTsNCj4+ICsJfQ0KPj4gKwlwcmludGYoIkJ5ZS4u LlxuIik7DQo+PiArDQo+PiAgCXJldHVybiAwOw0KPj4gIH0NCj4+IGRpZmYgLS1naXQgYS9leGFt cGxlcy9pcHNlYy1zZWNndy9pcHNlYy5oIGIvZXhhbXBsZXMvaXBzZWMtc2VjZ3cvaXBzZWMuaA0K Pj4gaW5kZXggMjhmZjA3ZC4uMDUzOWFlYyAxMDA2NDQNCj4+IC0tLSBhL2V4YW1wbGVzL2lwc2Vj LXNlY2d3L2lwc2VjLmgNCj4+ICsrKyBiL2V4YW1wbGVzL2lwc2VjLXNlY2d3L2lwc2VjLmgNCj4+ IEBAIC0xNTMsNiArMTUzLDE3IEBAIHN0cnVjdCBpcHNlY19zYSB7DQo+PiAgCXN0cnVjdCBydGVf c2VjdXJpdHlfc2Vzc2lvbl9jb25mIHNlc3NfY29uZjsNCj4+ICB9IF9fcnRlX2NhY2hlX2FsaWdu ZWQ7DQo+Pg0KPj4gK3N0cnVjdCBzYV9jdHggew0KPj4gKwl2b2lkICpzYXRibDsgLyogcG9pbnRl ciB0byBhcnJheSBvZiBydGVfaXBzZWNfc2Egb2JqZWN0cyovDQo+PiArCXN0cnVjdCBpcHNlY19z YSBzYVtJUFNFQ19TQV9NQVhfRU5UUklFU107DQo+PiArCXVuaW9uIHsNCj4+ICsJCXN0cnVjdCB7 DQo+PiArCQkJc3RydWN0IHJ0ZV9jcnlwdG9fc3ltX3hmb3JtIGE7DQo+PiArCQkJc3RydWN0IHJ0 ZV9jcnlwdG9fc3ltX3hmb3JtIGI7DQo+PiArCQl9Ow0KPj4gKwl9IHhmW0lQU0VDX1NBX01BWF9F TlRSSUVTXTsNCj4+ICt9Ow0KPj4gKw0KPj4gIHN0cnVjdCBpcHNlY19tYnVmX21ldGFkYXRhIHsN Cj4+ICAJc3RydWN0IGlwc2VjX3NhICpzYTsNCj4+ICAJc3RydWN0IHJ0ZV9jcnlwdG9fb3AgY29w Ow0KPj4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2lwc2VjLXNlY2d3L3NhLmMgYi9leGFtcGxlcy9p cHNlYy1zZWNndy9zYS5jDQo+PiBpbmRleCBjNzVhNWExLi4yZWMzZTE3IDEwMDY0NA0KPj4gLS0t IGEvZXhhbXBsZXMvaXBzZWMtc2VjZ3cvc2EuYw0KPj4gKysrIGIvZXhhbXBsZXMvaXBzZWMtc2Vj Z3cvc2EuYw0KPj4gQEAgLTc4MSwxNyArNzgxLDYgQEAgcHJpbnRfb25lX3NhX3J1bGUoY29uc3Qg c3RydWN0IGlwc2VjX3NhICpzYSwgaW50IGluYm91bmQpDQo+PiAgCXByaW50ZigiXG4iKTsNCj4+ ICB9DQo+Pg0KPj4gLXN0cnVjdCBzYV9jdHggew0KPj4gLQl2b2lkICpzYXRibDsgLyogcG9pbnRl ciB0byBhcnJheSBvZiBydGVfaXBzZWNfc2Egb2JqZWN0cyovDQo+PiAtCXN0cnVjdCBpcHNlY19z YSBzYVtJUFNFQ19TQV9NQVhfRU5UUklFU107DQo+PiAtCXVuaW9uIHsNCj4+IC0JCXN0cnVjdCB7 DQo+PiAtCQkJc3RydWN0IHJ0ZV9jcnlwdG9fc3ltX3hmb3JtIGE7DQo+PiAtCQkJc3RydWN0IHJ0 ZV9jcnlwdG9fc3ltX3hmb3JtIGI7DQo+PiAtCQl9Ow0KPj4gLQl9IHhmW0lQU0VDX1NBX01BWF9F TlRSSUVTXTsNCj4+IC19Ow0KPj4gLQ0KPj4gIHN0YXRpYyBzdHJ1Y3Qgc2FfY3R4ICoNCj4+ICBz YV9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgaW50MzJfdCBzb2NrZXRfaWQpDQo+PiAgew0KPj4g LS0NCj4+IDIuNy40DQo+