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 0A6FFA055A; Tue, 25 Feb 2020 17:06:27 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 698332C4F; Tue, 25 Feb 2020 17:06:26 +0100 (CET) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 1FF802C02 for ; Tue, 25 Feb 2020 17:06:23 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Feb 2020 08:03:53 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,484,1574150400"; d="scan'208";a="255992878" Received: from orsmsx109.amr.corp.intel.com ([10.22.240.7]) by orsmga002.jf.intel.com with ESMTP; 25 Feb 2020 08:03:53 -0800 Received: from ORSEDG002.ED.cps.intel.com (10.7.248.5) by ORSMSX109.amr.corp.intel.com (10.22.240.7) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 25 Feb 2020 08:03:53 -0800 Received: from NAM02-BL2-obe.outbound.protection.outlook.com (104.47.38.51) by edgegateway.intel.com (134.134.137.101) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 25 Feb 2020 08:03:52 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VRpcRkdlvJ3LVJkxOkzLDys+qrMpayB+gx0PrVS16LtLlA+801990mwljDGf3aJ1/J0mZCHKG+Pqpi21uonngTCtYx7bG+UofzrLXTtkrO03M+lZ4GRC3ce1txxoViRrfT+OMVt/v1+oSmky/+NBZbSFJAG33Dpp2r2VnQjs9KP8HZCC4V0HKQAK+8xpsavWvaRpzVDnsIEUEp24qjh7RP9YabxcnqLr3DKZDBXRHASNROFiCoBDV0uivJ53c4vxRlPvbcqAMEnP9MTaog9fagWq5lHZtUt5GvDbqe7XhUlMwLYhJjSEI4O8frD1Vvt/cvlTeo1ZY9J1XaAb32aJjA== 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=hdbrmI/3dMuDTvz22l/DjAOkYSfRAc0sZqmZEZ0MIN0=; b=GJVu1d/gUY5NsKYc4Dtp4thnzCT9bfRhUgNw7SjSUsmGcFvi9C/t0BjkuZIIm6dzsCLdI6T2Z3qkP9HvlbmlZ9a0SVquyMmk6RGHX5FSKyGa+Cf2/b/s4P/YW/Z0VuPmIVufQyBu6Y9e+jK9h97XWkxDIWY+F/CMzAeNvHZrADQfQVwZy6WGMpgRBV7Muz9FB8nSkLFP9dnmbuQWyruSgd/qIVJo4uTcIsJVj9aDVADlcFeUsrEZkyHvvMD6XdY6K27nJ/Oo5zoE2G36QZFy9YOX/gBTx6d7i/ft+qN6BAqNW3tYHRh3qT+QMd1Y6juUMBKaIbj+zJjZi+vtY8qDLg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hdbrmI/3dMuDTvz22l/DjAOkYSfRAc0sZqmZEZ0MIN0=; b=dxjxNqTQyzLlcOM1AI8BQbBcLslvD/9RAI8Z/gHUB0zgPzcYlucXt7URod/Z3bJkMaGSS3Rg9rNy4+90ovr7Zq4bT7KHx/u7cIaBq/46D8VGRO0D37MsNjFcjwLxdpF4DEnr0DNrULkOWPAQU3DUSShOLfENiaACS4onwwuH2AI= Received: from SN6PR11MB2558.namprd11.prod.outlook.com (2603:10b6:805:5d::19) by SN6PR11MB3294.namprd11.prod.outlook.com (2603:10b6:805:c4::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2750.22; Tue, 25 Feb 2020 16:03:49 +0000 Received: from SN6PR11MB2558.namprd11.prod.outlook.com ([fe80::395e:eb75:6ab7:2ba5]) by SN6PR11MB2558.namprd11.prod.outlook.com ([fe80::395e:eb75:6ab7:2ba5%3]) with mapi id 15.20.2750.021; Tue, 25 Feb 2020 16:03:49 +0000 From: "Ananyev, Konstantin" To: Anoob Joseph , Akhil Goyal CC: Jerin Jacob Kollanukkaran , "Narayana Prasad Raju Athreya" , Ankur Dwivedi , Archana Muniganti , Tejasree Kondoj , Vamsi Krishna Attunuru , "dev@dpdk.org" , Thomas Monjalon , "Nicolau, Radu" , Lukas Bartosik Thread-Topic: [EXT] RE: [PATCH v4 12/15] examples/ipsec-secgw: add app mode worker Thread-Index: AQHV58Q5blpiwIHGCUe8B31HZ+6N86gqaYWAgAFql4CAAAZLAIAAP63Q Date: Tue, 25 Feb 2020 16:03:49 +0000 Message-ID: References: <1580824721-21527-1-git-send-email-lbartosik@marvell.com> <1582185727-6749-1-git-send-email-lbartosik@marvell.com> <1582185727-6749-13-git-send-email-lbartosik@marvell.com> In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMzQ4NGQzMTMtMzllMS00OTFjLWFlZjMtNTIzMjliZTk4YWU5IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiSzVCQjArSDlVamxLUFBOcVhlZnFjYmMzZmp6Y21BSWRRWEJhSmdqMU43czhmYzNcL21yNkU5dEZGWStNMkFBcXkifQ== dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.2.0.6 x-ctpclassification: CTP_NT authentication-results: spf=none (sender IP is ) smtp.mailfrom=konstantin.ananyev@intel.com; x-originating-ip: [192.198.151.174] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: fca9d34f-e576-4931-2476-08d7ba0c4d70 x-ms-traffictypediagnostic: SN6PR11MB3294: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6108; x-forefront-prvs: 0324C2C0E2 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(366004)(136003)(396003)(376002)(346002)(39860400002)(199004)(189003)(66476007)(66556008)(66946007)(76116006)(55016002)(110136005)(54906003)(316002)(4326008)(478600001)(9686003)(66446008)(33656002)(64756008)(81166006)(8936002)(8676002)(2906002)(52536014)(7416002)(26005)(186003)(30864003)(5660300002)(71200400001)(86362001)(81156014)(6506007)(7696005); DIR:OUT; SFP:1102; SCL:1; SRVR:SN6PR11MB3294; H:SN6PR11MB2558.namprd11.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: mPcWXkbMbFEAatG1hC6mHytNr7cTW6/qK+ffIq8lCNX8luu/Lyq3ByUcjEbxVdMedmE417yvBPSrpiwcWqxyZlvFhlZc350Awt/brLz2Rt0WnAatfUuQAJSbr7JxJIPe9WNP5SFqoOUkVgxWNyJcZB4iLNvR9MjqvgMJPJKw9X2i9t10X9zKKM1TzG5OfqB+gcJwxcA09/ciyBuWEstz1i5mTh7vFwFvNA83Iiw2Dtk/PfKRi4O8jCNEMRsV0Xe9p5YtTD2zqccmslIZeakxHfy0ETRx63HTSBx9z8C5KpfyWGRjl0Imf+ad9EgrdT9HkiEtTO+A5LrX8i78lzDqIZyrCp7u08CpowMLbEn3oD0sWEeKtE41ox4tDll5DOrIBjpJgWsvx1O0QzJQIQmDQKKkXKbb7VdXvw3S0oPe+RKIm/+K7p2ff1DsTCeseVNl x-ms-exchange-antispam-messagedata: HwUSxX02myDAqFcZKNICshNo9Vj87YncyUdLfzSlKiaXlkTqDX7BnUgB8dj+KVNSNyQiaQWHRY/8jPUrwrWr01XAgLqnNYA5jKnYUtVaDbpmV0kqgyhI9x9K8UUaGEpmBdDia5h1sj4kZ9hTHKm5dQ== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: fca9d34f-e576-4931-2476-08d7ba0c4d70 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Feb 2020 16:03:49.6364 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 1rV11AltESL8vzOseHG/Z5FHXp9KP8Yply7GNU4JUmKni9jKyIdTGIBQA/F97XZkP78XeX6fR5sLQ/LkHcSCzge3jPwM/oH42KSh4HC4JKg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB3294 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [EXT] RE: [PATCH v4 12/15] examples/ipsec-secgw: add app mode worker 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" PiA+ID4+IEFkZCBhcHBsaWNhdGlvbiBpbmJvdW5kL291dGJvdW5kIHdvcmtlciB0aHJlYWQgYW5k IElQc2VjIGFwcGxpY2F0aW9uDQo+ID4gPj4gcHJvY2Vzc2luZyBjb2RlIGZvciBldmVudCBtb2Rl Lg0KPiA+ID4+DQo+ID4gPj4gRXhhbXBsZSBpcHNlYy1zZWNndyBjb21tYW5kIGluIGFwcCBtb2Rl Og0KPiA+ID4+IGlwc2VjLXNlY2d3IC13IDAwMDI6MDI6MDAuMCxpcHNlY19pbl9tYXhfc3BpPTEy OCAtdw0KPiA+ID4+IDAwMDI6MDM6MDAuMCxpcHNlY19pbl9tYXhfc3BpPTEyOCAtdyAwMDAyOjBl OjAwLjAgLXcgMDAwMjoxMDowMC4xDQo+ID4gPj4gLS1sb2ctbGV2ZWw9OCAtYyAweDEgLS0gLVAg LXAgMHgzIC11IDB4MSAtLWNvbmZpZyAiKDEsMCwwKSwoMCwwLDApIg0KPiA+ID4+IC1mIGFlcy1n Y20uY2ZnIC0tdHJhbnNmZXItbW9kZSBldmVudCAtLWV2ZW50LXNjaGVkdWxlLXR5cGUgcGFyYWxs ZWwNCj4gPiA+Pg0KPiA+ID4+IFNpZ25lZC1vZmYtYnk6IEFub29iIEpvc2VwaCA8YW5vb2JqQG1h cnZlbGwuY29tPg0KPiA+ID4+IFNpZ25lZC1vZmYtYnk6IEFua3VyIER3aXZlZGkgPGFkd2l2ZWRp QG1hcnZlbGwuY29tPg0KPiA+ID4+IFNpZ25lZC1vZmYtYnk6IEx1a2FzeiBCYXJ0b3NpayA8bGJh cnRvc2lrQG1hcnZlbGwuY29tPg0KPiA+ID4+IC0tLQ0KPiA+ID4NCj4gPiA+IC4uLg0KPiA+ID4N Cj4gPiA+PiArc3RhdGljIGlubGluZSBlbnVtIHBrdF90eXBlDQo+ID4gPj4gK3Byb2Nlc3NfaXBz ZWNfZ2V0X3BrdF90eXBlKHN0cnVjdCBydGVfbWJ1ZiAqcGt0LCB1aW50OF90ICoqbmxwKSB7DQo+ ID4gPj4gKwlzdHJ1Y3QgcnRlX2V0aGVyX2hkciAqZXRoOw0KPiA+ID4+ICsNCj4gPiA+PiArCWV0 aCA9IHJ0ZV9wa3RtYnVmX210b2QocGt0LCBzdHJ1Y3QgcnRlX2V0aGVyX2hkciAqKTsNCj4gPiA+ PiArCWlmIChldGgtPmV0aGVyX3R5cGUgPT0gcnRlX2NwdV90b19iZV8xNihSVEVfRVRIRVJfVFlQ RV9JUFY0KSkgew0KPiA+ID4+ICsJCSpubHAgPSBSVEVfUFRSX0FERChldGgsIFJURV9FVEhFUl9I RFJfTEVOICsNCj4gPiA+PiArCQkJCW9mZnNldG9mKHN0cnVjdCBpcCwgaXBfcCkpOw0KPiA+ID4+ ICsJCWlmICgqKm5scCA9PSBJUFBST1RPX0VTUCkNCj4gPiA+PiArCQkJcmV0dXJuIFBLVF9UWVBF X0lQU0VDX0lQVjQ7DQo+ID4gPj4gKwkJZWxzZQ0KPiA+ID4+ICsJCQlyZXR1cm4gUEtUX1RZUEVf UExBSU5fSVBWNDsNCj4gPiA+PiArCX0gZWxzZSBpZiAoZXRoLT5ldGhlcl90eXBlID09DQo+ID4g Pj4gK3J0ZV9jcHVfdG9fYmVfMTYoUlRFX0VUSEVSX1RZUEVfSVBWNikpDQo+ID4gPj4gew0KPiA+ ID4+ICsJCSpubHAgPSBSVEVfUFRSX0FERChldGgsIFJURV9FVEhFUl9IRFJfTEVOICsNCj4gPiA+ PiArCQkJCW9mZnNldG9mKHN0cnVjdCBpcDZfaGRyLCBpcDZfbnh0KSk7DQo+ID4gPj4gKwkJaWYg KCoqbmxwID09IElQUFJPVE9fRVNQKQ0KPiA+ID4+ICsJCQlyZXR1cm4gUEtUX1RZUEVfSVBTRUNf SVBWNjsNCj4gPiA+PiArCQllbHNlDQo+ID4gPj4gKwkJCXJldHVybiBQS1RfVFlQRV9QTEFJTl9J UFY2Ow0KPiA+ID4+ICsJfQ0KPiA+ID4+ICsNCj4gPiA+PiArCS8qIFVua25vd24vVW5zdXBwb3J0 ZWQgdHlwZSAqLw0KPiA+ID4+ICsJcmV0dXJuIFBLVF9UWVBFX0lOVkFMSUQ7DQo+ID4gPj4gK30N Cj4gPiA+PiArDQo+ID4gPj4gK3N0YXRpYyBpbmxpbmUgdm9pZA0KPiA+ID4+ICt1cGRhdGVfbWFj X2FkZHJzKHN0cnVjdCBydGVfbWJ1ZiAqcGt0LCB1aW50MTZfdCBwb3J0aWQpIHsNCj4gPiA+PiAr CXN0cnVjdCBydGVfZXRoZXJfaGRyICpldGhoZHI7DQo+ID4gPj4gKw0KPiA+ID4+ICsJZXRoaGRy ID0gcnRlX3BrdG1idWZfbXRvZChwa3QsIHN0cnVjdCBydGVfZXRoZXJfaGRyICopOw0KPiA+ID4+ ICsJbWVtY3B5KCZldGhoZHItPnNfYWRkciwgJmV0aGFkZHJfdGJsW3BvcnRpZF0uc3JjLA0KPiA+ ID4+IFJURV9FVEhFUl9BRERSX0xFTik7DQo+ID4gPj4gKwltZW1jcHkoJmV0aGhkci0+ZF9hZGRy LCAmZXRoYWRkcl90YmxbcG9ydGlkXS5kc3QsDQo+ID4gPj4gUlRFX0VUSEVSX0FERFJfTEVOKTsN Cj4gPiA+PiArfQ0KPiA+ID4+DQo+ID4gPj4gIHN0YXRpYyBpbmxpbmUgdm9pZA0KPiA+ID4+ICBp cHNlY19ldmVudF9wcmVfZm9yd2FyZChzdHJ1Y3QgcnRlX21idWYgKm0sIHVuc2lnbmVkIGludCBw b3J0X2lkKSBAQA0KPiA+ID4+IC02MSw2ICsxMDEsMjkwIEBAIHByZXBhcmVfb3V0X3Nlc3Npb25z X3RibChzdHJ1Y3Qgc2FfY3R4ICpzYV9vdXQsDQo+ID4gPj4gIAl9DQo+ID4gPj4gIH0NCj4gPiA+ Pg0KPiA+ID4+ICtzdGF0aWMgaW5saW5lIGludA0KPiA+ID4+ICtjaGVja19zcChzdHJ1Y3Qgc3Bf Y3R4ICpzcCwgY29uc3QgdWludDhfdCAqbmxwLCB1aW50MzJfdCAqc2FfaWR4KSB7DQo+ID4gPj4g Kwl1aW50MzJfdCByZXM7DQo+ID4gPj4gKw0KPiA+ID4+ICsJaWYgKHVubGlrZWx5KHNwID09IE5V TEwpKQ0KPiA+ID4+ICsJCXJldHVybiAwOw0KPiA+ID4+ICsNCj4gPiA+PiArCXJ0ZV9hY2xfY2xh c3NpZnkoKHN0cnVjdCBydGVfYWNsX2N0eCAqKXNwLCAmbmxwLCAmcmVzLCAxLA0KPiA+ID4+ICsJ CQlERUZBVUxUX01BWF9DQVRFR09SSUVTKTsNCj4gPiA+PiArDQo+ID4gPj4gKwlpZiAodW5saWtl bHkocmVzID09IDApKSB7DQo+ID4gPj4gKwkJLyogTm8gbWF0Y2ggKi8NCj4gPiA+PiArCQlyZXR1 cm4gMDsNCj4gPiA+PiArCX0NCj4gPiA+PiArDQo+ID4gPj4gKwlpZiAocmVzID09IERJU0NBUkQp DQo+ID4gPj4gKwkJcmV0dXJuIDA7DQo+ID4gPj4gKwllbHNlIGlmIChyZXMgPT0gQllQQVNTKSB7 DQo+ID4gPj4gKwkJKnNhX2lkeCA9IC0xOw0KPiA+ID4+ICsJCXJldHVybiAxOw0KPiA+ID4+ICsJ fQ0KPiA+ID4+ICsNCj4gPiA+PiArCSpzYV9pZHggPSByZXMgLSAxOw0KPiA+ID4+ICsJcmV0dXJu IDE7DQo+ID4gPj4gK30NCj4gPiA+PiArDQo+ID4gPj4gK3N0YXRpYyBpbmxpbmUgdWludDE2X3QN Cj4gPiA+PiArcm91dGU0X3BrdChzdHJ1Y3QgcnRlX21idWYgKnBrdCwgc3RydWN0IHJ0X2N0eCAq cnRfY3R4KSB7DQo+ID4gPj4gKwl1aW50MzJfdCBkc3RfaXA7DQo+ID4gPj4gKwl1aW50MTZfdCBv ZmZzZXQ7DQo+ID4gPj4gKwl1aW50MzJfdCBob3A7DQo+ID4gPj4gKwlpbnQgcmV0Ow0KPiA+ID4+ ICsNCj4gPiA+PiArCW9mZnNldCA9IFJURV9FVEhFUl9IRFJfTEVOICsgb2Zmc2V0b2Yoc3RydWN0 IGlwLCBpcF9kc3QpOw0KPiA+ID4+ICsJZHN0X2lwID0gKnJ0ZV9wa3RtYnVmX210b2Rfb2Zmc2V0 KHBrdCwgdWludDMyX3QgKiwgb2Zmc2V0KTsNCj4gPiA+PiArCWRzdF9pcCA9IHJ0ZV9iZV90b19j cHVfMzIoZHN0X2lwKTsNCj4gPiA+PiArDQo+ID4gPj4gKwlyZXQgPSBydGVfbHBtX2xvb2t1cCgo c3RydWN0IHJ0ZV9scG0gKilydF9jdHgsIGRzdF9pcCwgJmhvcCk7DQo+ID4gPj4gKw0KPiA+ID4+ ICsJaWYgKHJldCA9PSAwKSB7DQo+ID4gPj4gKwkJLyogV2UgaGF2ZSBhIGhpdCAqLw0KPiA+ID4+ ICsJCXJldHVybiBob3A7DQo+ID4gPj4gKwl9DQo+ID4gPj4gKw0KPiA+ID4+ICsJLyogZWxzZSAq Lw0KPiA+ID4+ICsJcmV0dXJuIFJURV9NQVhfRVRIUE9SVFM7DQo+ID4gPj4gK30NCj4gPiA+PiAr DQo+ID4gPj4gKy8qIFRPRE86IFRvIGJlIHRlc3RlZCAqLw0KPiA+ID4+ICtzdGF0aWMgaW5saW5l IHVpbnQxNl90DQo+ID4gPj4gK3JvdXRlNl9wa3Qoc3RydWN0IHJ0ZV9tYnVmICpwa3QsIHN0cnVj dCBydF9jdHggKnJ0X2N0eCkgew0KPiA+ID4+ICsJdWludDhfdCBkc3RfaXBbMTZdOw0KPiA+ID4+ ICsJdWludDhfdCAqaXA2X2RzdDsNCj4gPiA+PiArCXVpbnQxNl90IG9mZnNldDsNCj4gPiA+PiAr CXVpbnQzMl90IGhvcDsNCj4gPiA+PiArCWludCByZXQ7DQo+ID4gPj4gKw0KPiA+ID4+ICsJb2Zm c2V0ID0gUlRFX0VUSEVSX0hEUl9MRU4gKyBvZmZzZXRvZihzdHJ1Y3QgaXA2X2hkciwgaXA2X2Rz dCk7DQo+ID4gPj4gKwlpcDZfZHN0ID0gcnRlX3BrdG1idWZfbXRvZF9vZmZzZXQocGt0LCB1aW50 OF90ICosIG9mZnNldCk7DQo+ID4gPj4gKwltZW1jcHkoJmRzdF9pcFswXSwgaXA2X2RzdCwgMTYp Ow0KPiA+ID4+ICsNCj4gPiA+PiArCXJldCA9IHJ0ZV9scG02X2xvb2t1cCgoc3RydWN0IHJ0ZV9s cG02ICopcnRfY3R4LCBkc3RfaXAsICZob3ApOw0KPiA+ID4+ICsNCj4gPiA+PiArCWlmIChyZXQg PT0gMCkgew0KPiA+ID4+ICsJCS8qIFdlIGhhdmUgYSBoaXQgKi8NCj4gPiA+PiArCQlyZXR1cm4g aG9wOw0KPiA+ID4+ICsJfQ0KPiA+ID4+ICsNCj4gPiA+PiArCS8qIGVsc2UgKi8NCj4gPiA+PiAr CXJldHVybiBSVEVfTUFYX0VUSFBPUlRTOw0KPiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICtz dGF0aWMgaW5saW5lIHVpbnQxNl90DQo+ID4gPj4gK2dldF9yb3V0ZShzdHJ1Y3QgcnRlX21idWYg KnBrdCwgc3RydWN0IHJvdXRlX3RhYmxlICpydCwgZW51bQ0KPiA+ID4+ICtwa3RfdHlwZSB0eXBl KSB7DQo+ID4gPj4gKwlpZiAodHlwZSA9PSBQS1RfVFlQRV9QTEFJTl9JUFY0IHx8IHR5cGUgPT0g UEtUX1RZUEVfSVBTRUNfSVBWNCkNCj4gPiA+PiArCQlyZXR1cm4gcm91dGU0X3BrdChwa3QsIHJ0 LT5ydDRfY3R4KTsNCj4gPiA+PiArCWVsc2UgaWYgKHR5cGUgPT0gUEtUX1RZUEVfUExBSU5fSVBW NiB8fCB0eXBlID09IFBLVF9UWVBFX0lQU0VDX0lQVjYpDQo+ID4gPj4gKwkJcmV0dXJuIHJvdXRl Nl9wa3QocGt0LCBydC0+cnQ2X2N0eCk7DQo+ID4gPj4gKw0KPiA+ID4+ICsJcmV0dXJuIFJURV9N QVhfRVRIUE9SVFM7DQo+ID4gPj4gK30NCj4gPiA+DQo+ID4gPiBJcyBpdCBub3QgcG9zc2libGUg dG8gdXNlIHRoZSBleGlzdGluZyBmdW5jdGlvbnMgZm9yIGZpbmRpbmcgcm91dGVzLCBjaGVja2lu Zw0KPiA+IHBhY2tldCB0eXBlcyBhbmQgY2hlY2tpbmcgc2VjdXJpdHkgcG9saWNpZXMuDQo+ID4g PiBJdCB3aWxsIGJlIHZlcnkgZGlmZmljdWx0IHRvIG1hbmFnZSB0d28gc2VwYXJhdGUgZnVuY3Rp b25zIGZvciBzYW1lDQo+ID4gPiB3b3JrLiBJIGNhbiBzZWUgdGhhdCB0aGUgcGt0LT5kYXRhX29m ZnMgQXJlIG5vdCByZXF1aXJlZCB0byBiZSB1cGRhdGVkDQo+ID4gPiBpbiB0aGUgaW5saW5lIGNh c2UsIGJ1dCBjYW4gd2Ugc3BsaXQgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucyBpbiB0d28gc28gdGhh dCB0aGV5IGNhbg0KPiA+IGJlIENhbGxlZCBpbiB0aGUgYXBwcm9wcmlhdGUgY2FzZXMuDQo+ID4g Pg0KPiA+ID4gQXMgeW91IGhhdmUgc2FpZCBpbiB0aGUgY292ZXIgbm90ZSBhcyB3ZWxsIHRvIGFk ZCBsb29rYXNpZGUgcHJvdG9jb2wNCj4gPiA+IHN1cHBvcnQuIEkgYWxzbyB0cmllZCBhZGRpbmcg aXQsIGFuZCBpdCB3aWxsIGdldCB2ZXJ5IERpZmZpY3VsdCB0byBtYW5hZ2Ugc2VwYXJhdGUNCj4g PiBmdW5jdGlvbnMgZm9yIHNlcGFyYXRlIGNvZGUgcGF0aHMuDQo+ID4gPg0KPiA+DQo+ID4gW0x1 a2Fzel0gVGhpcyB3YXMgYWxzbyBLb25zdGFudGluJ3MgY29tbWVudCBkdXJpbmcgcmV2aWV3IG9m IG9uZSBvZiBwcmV2aW91cw0KPiA+IHJldmlzaW9ucy4NCj4gPiBUaGUgcHJlcGFyZV9vbmVfcGFj a2V0KCkgYW5kIHByZXBhcmVfdHhfcGt0KCkgZG8gbXVjaCBtb3JlIHRoYW4gd2UgbmVlZA0KPiA+ IGFuZCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyB3ZSBjcmFmdGVkIG5ldyBmdW5jdGlvbnMuIEZv ciBleGFtcGxlLA0KPiA+IHByb2Nlc3NfaXBzZWNfZ2V0X3BrdF90eXBlIGZ1bmN0aW9uIHJldHVy bnMgbmxwIGFuZCB3aGV0aGVyIHBhY2tldCB0eXBlIGlzDQo+ID4gcGxhaW4gb3IgSVBzZWMuIFRo YXQncyBhbGwuIFByZXBhcmVfb25lX3BhY2tldCgpIHByb2Nlc3MgcGFja2V0cyBpbiBjaHVua3Mg YW5kDQo+ID4gZG9lcyBtdWNoIG1vcmUgLSBpdCBhZGp1c3RzIG1idWYgYW5kIHBhY2tldCBsZW5n dGggdGhlbiBpdCBkZW11bHRpcGxleCBwYWNrZXRzDQo+ID4gaW50byBwbGFpbiBhbmQgSVBzZWMg Zmxvd3MgYW5kIGZpbmFsbHkgZG9lcyBpbmxpbmUgY2hlY2tzLiBUaGlzIGlzIHNpbWlsYXIgZm9y DQo+ID4gdXBkYXRlX21hY19hZGRycygpIHZzIHByZXBhcmVfdHhfcGt0KCkgYW5kIGNoZWNrX3Nw KCkgdnMgaW5ib3VuZF9zcF9zYSgpIHRoYXQNCj4gPiBwcmVwYXJlX3R4X3BrdCgpIGFuZCBpbmJv dW5kX3NwX3NhKCkgZG8gbW9yZSB0aGF0IHdlIG5lZWQgaW4gZXZlbnQgbW9kZS4NCj4gPg0KPiA+ IEkgdW5kZXJzdGFuZCB5b3VyIGNvbmNlcm4gZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgY29kZSBt YWludGVuYW5jZSBidXQgb24gdGhlDQo+ID4gb3RoZXIgaGFuZCB3ZSBhcmUgY29uY2VybmVkIHdp dGggcGVyZm9ybWFuY2UuDQo+ID4gVGhlIGN1cnJlbnQgY29kZSBpcyBub3Qgb3B0aW1pemVkIHRv IHN1cHBvcnQgbXVsdGlwbGUgbW9kZSBwcm9jZXNzaW5nDQo+ID4gaW50cm9kdWNlZCB3aXRoIHJ0 ZV9zZWN1cml0eS4gV2UgY2FuIHdvcmsgb24gYSBjb21tb24gcm91dGluZXMgb25jZSB3ZSBoYXZl DQo+ID4gb3RoZXIgbW9kZXMgYWxzbyBhZGRlZCwgc28gdGhhdCB3ZSBjYW4gY29tZSB1cCB3aXRo IGEgYmV0dGVyIHNvbHV0aW9uIHRoYW4NCj4gPiB3aGF0IHdlIGhhdmUgdG9kYXkuDQo+ID4NCj4g PiA+PiArDQo+ID4gPj4gK3N0YXRpYyBpbmxpbmUgaW50DQo+ID4gPj4gK3Byb2Nlc3NfaXBzZWNf ZXZfaW5ib3VuZChzdHJ1Y3QgaXBzZWNfY3R4ICpjdHgsIHN0cnVjdCByb3V0ZV90YWJsZSAqcnQs DQo+ID4gPj4gKwkJc3RydWN0IHJ0ZV9ldmVudCAqZXYpDQo+ID4gPj4gK3sNCj4gPiA+PiArCXN0 cnVjdCBpcHNlY19zYSAqc2EgPSBOVUxMOw0KPiA+ID4+ICsJc3RydWN0IHJ0ZV9tYnVmICpwa3Q7 DQo+ID4gPj4gKwl1aW50MTZfdCBwb3J0X2lkID0gMDsNCj4gPiA+PiArCWVudW0gcGt0X3R5cGUg dHlwZTsNCj4gPiA+PiArCXVpbnQzMl90IHNhX2lkeDsNCj4gPiA+PiArCXVpbnQ4X3QgKm5scDsN Cj4gPiA+PiArDQo+ID4gPj4gKwkvKiBHZXQgcGt0IGZyb20gZXZlbnQgKi8NCj4gPiA+PiArCXBr dCA9IGV2LT5tYnVmOw0KPiA+ID4+ICsNCj4gPiA+PiArCS8qIENoZWNrIHRoZSBwYWNrZXQgdHlw ZSAqLw0KPiA+ID4+ICsJdHlwZSA9IHByb2Nlc3NfaXBzZWNfZ2V0X3BrdF90eXBlKHBrdCwgJm5s cCk7DQo+ID4gPj4gKw0KPiA+ID4+ICsJc3dpdGNoICh0eXBlKSB7DQo+ID4gPj4gKwljYXNlIFBL VF9UWVBFX1BMQUlOX0lQVjQ6DQo+ID4gPj4gKwkJaWYgKHBrdC0+b2xfZmxhZ3MgJiBQS1RfUlhf U0VDX09GRkxPQUQpIHsNCj4gPiA+PiArCQkJaWYgKHVubGlrZWx5KHBrdC0+b2xfZmxhZ3MgJg0K PiA+ID4+ICsJCQkJICAgICBQS1RfUlhfU0VDX09GRkxPQURfRkFJTEVEKSkgew0KPiA+ID4+ICsJ CQkJUlRFX0xPRyhFUlIsIElQU0VDLA0KPiA+ID4+ICsJCQkJCSJJbmJvdW5kIHNlY3VyaXR5IG9m ZmxvYWQgZmFpbGVkXG4iKTsNCj4gPiA+PiArCQkJCWdvdG8gZHJvcF9wa3RfYW5kX2V4aXQ7DQo+ ID4gPj4gKwkJCX0NCj4gPiA+PiArCQkJc2EgPSBwa3QtPnVzZXJkYXRhOw0KPiA+ID4+ICsJCX0N Cj4gPiA+PiArDQo+ID4gPj4gKwkJLyogQ2hlY2sgaWYgd2UgaGF2ZSBhIG1hdGNoICovDQo+ID4g Pj4gKwkJaWYgKGNoZWNrX3NwKGN0eC0+c3A0X2N0eCwgbmxwLCAmc2FfaWR4KSA9PSAwKSB7DQo+ ID4gPj4gKwkJCS8qIE5vIHZhbGlkIG1hdGNoICovDQo+ID4gPj4gKwkJCWdvdG8gZHJvcF9wa3Rf YW5kX2V4aXQ7DQo+ID4gPj4gKwkJfQ0KPiA+ID4+ICsJCWJyZWFrOw0KPiA+ID4+ICsNCj4gPiA+ PiArCWNhc2UgUEtUX1RZUEVfUExBSU5fSVBWNjoNCj4gPiA+PiArCQlpZiAocGt0LT5vbF9mbGFn cyAmIFBLVF9SWF9TRUNfT0ZGTE9BRCkgew0KPiA+ID4+ICsJCQlpZiAodW5saWtlbHkocGt0LT5v bF9mbGFncyAmDQo+ID4gPj4gKwkJCQkgICAgIFBLVF9SWF9TRUNfT0ZGTE9BRF9GQUlMRUQpKSB7 DQo+ID4gPj4gKwkJCQlSVEVfTE9HKEVSUiwgSVBTRUMsDQo+ID4gPj4gKwkJCQkJIkluYm91bmQg c2VjdXJpdHkgb2ZmbG9hZCBmYWlsZWRcbiIpOw0KPiA+ID4+ICsJCQkJZ290byBkcm9wX3BrdF9h bmRfZXhpdDsNCj4gPiA+PiArCQkJfQ0KPiA+ID4+ICsJCQlzYSA9IHBrdC0+dXNlcmRhdGE7DQo+ ID4gPj4gKwkJfQ0KPiA+ID4+ICsNCj4gPiA+PiArCQkvKiBDaGVjayBpZiB3ZSBoYXZlIGEgbWF0 Y2ggKi8NCj4gPiA+PiArCQlpZiAoY2hlY2tfc3AoY3R4LT5zcDZfY3R4LCBubHAsICZzYV9pZHgp ID09IDApIHsNCj4gPiA+PiArCQkJLyogTm8gdmFsaWQgbWF0Y2ggKi8NCj4gPiA+PiArCQkJZ290 byBkcm9wX3BrdF9hbmRfZXhpdDsNCj4gPiA+PiArCQl9DQo+ID4gPj4gKwkJYnJlYWs7DQo+ID4g Pj4gKw0KPiA+ID4+ICsJZGVmYXVsdDoNCj4gPiA+PiArCQlSVEVfTE9HKEVSUiwgSVBTRUMsICJV bnN1cHBvcnRlZCBwYWNrZXQgdHlwZSA9ICVkXG4iLCB0eXBlKTsNCj4gPiA+PiArCQlnb3RvIGRy b3BfcGt0X2FuZF9leGl0Ow0KPiA+ID4+ICsJfQ0KPiA+ID4+ICsNCj4gPiA+PiArCS8qIENoZWNr IGlmIHRoZSBwYWNrZXQgaGFzIHRvIGJlIGJ5cGFzc2VkICovDQo+ID4gPj4gKwlpZiAoc2FfaWR4 ID09IEJZUEFTUykNCj4gPiA+PiArCQlnb3RvIHJvdXRlX2FuZF9zZW5kX3BrdDsNCj4gPiA+PiAr DQo+ID4gPj4gKwkvKiBWYWxpZGF0ZSBzYV9pZHggKi8NCj4gPiA+PiArCWlmIChzYV9pZHggPj0g Y3R4LT5zYV9jdHgtPm5iX3NhKQ0KPiA+ID4+ICsJCWdvdG8gZHJvcF9wa3RfYW5kX2V4aXQ7DQo+ ID4gPj4gKw0KPiA+ID4+ICsJLyogRWxzZSB0aGUgcGFja2V0IGhhcyB0byBiZSBwcm90ZWN0ZWQg d2l0aCBTQSAqLw0KPiA+ID4+ICsNCj4gPiA+PiArCS8qIElmIHRoZSBwYWNrZXQgd2FzIElQc2Vj IHByb2Nlc3NlZCwgdGhlbiBTQSBwb2ludGVyIHNob3VsZCBiZSBzZXQgKi8NCj4gPiA+PiArCWlm IChzYSA9PSBOVUxMKQ0KPiA+ID4+ICsJCWdvdG8gZHJvcF9wa3RfYW5kX2V4aXQ7DQo+ID4gPj4g Kw0KPiA+ID4+ICsJLyogU1BJIG9uIHRoZSBwYWNrZXQgc2hvdWxkIG1hdGNoIHdpdGggdGhlIG9u ZSBpbiBTQSAqLw0KPiA+ID4+ICsJaWYgKHVubGlrZWx5KHNhLT5zcGkgIT0gY3R4LT5zYV9jdHgt PnNhW3NhX2lkeF0uc3BpKSkNCj4gPiA+PiArCQlnb3RvIGRyb3BfcGt0X2FuZF9leGl0Ow0KPiA+ ID4+ICsNCj4gPiA+PiArcm91dGVfYW5kX3NlbmRfcGt0Og0KPiA+ID4+ICsJcG9ydF9pZCA9IGdl dF9yb3V0ZShwa3QsIHJ0LCB0eXBlKTsNCj4gPiA+PiArCWlmICh1bmxpa2VseShwb3J0X2lkID09 IFJURV9NQVhfRVRIUE9SVFMpKSB7DQo+ID4gPj4gKwkJLyogbm8gbWF0Y2ggKi8NCj4gPiA+PiAr CQlnb3RvIGRyb3BfcGt0X2FuZF9leGl0Ow0KPiA+ID4+ICsJfQ0KPiA+ID4+ICsJLyogZWxzZSwg d2UgaGF2ZSBhIG1hdGNoaW5nIHJvdXRlICovDQo+ID4gPj4gKw0KPiA+ID4+ICsJLyogVXBkYXRl IG1hYyBhZGRyZXNzZXMgKi8NCj4gPiA+PiArCXVwZGF0ZV9tYWNfYWRkcnMocGt0LCBwb3J0X2lk KTsNCj4gPiA+PiArDQo+ID4gPj4gKwkvKiBVcGRhdGUgdGhlIGV2ZW50IHdpdGggdGhlIGRlc3Qg cG9ydCAqLw0KPiA+ID4+ICsJaXBzZWNfZXZlbnRfcHJlX2ZvcndhcmQocGt0LCBwb3J0X2lkKTsN Cj4gPiA+PiArCXJldHVybiAxOw0KPiA+ID4+ICsNCj4gPiA+PiArZHJvcF9wa3RfYW5kX2V4aXQ6 DQo+ID4gPj4gKwlSVEVfTE9HKEVSUiwgSVBTRUMsICJJbmJvdW5kIHBhY2tldCBkcm9wcGVkXG4i KTsNCj4gPiA+PiArCXJ0ZV9wa3RtYnVmX2ZyZWUocGt0KTsNCj4gPiA+PiArCWV2LT5tYnVmID0g TlVMTDsNCj4gPiA+PiArCXJldHVybiAwOw0KPiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICtz dGF0aWMgaW5saW5lIGludA0KPiA+ID4+ICtwcm9jZXNzX2lwc2VjX2V2X291dGJvdW5kKHN0cnVj dCBpcHNlY19jdHggKmN0eCwgc3RydWN0IHJvdXRlX3RhYmxlICpydCwNCj4gPiA+PiArCQlzdHJ1 Y3QgcnRlX2V2ZW50ICpldikNCj4gPiA+PiArew0KPiA+ID4+ICsJc3RydWN0IHJ0ZV9pcHNlY19z ZXNzaW9uICpzZXNzOw0KPiA+ID4+ICsJc3RydWN0IHNhX2N0eCAqc2FfY3R4Ow0KPiA+ID4+ICsJ c3RydWN0IHJ0ZV9tYnVmICpwa3Q7DQo+ID4gPj4gKwl1aW50MTZfdCBwb3J0X2lkID0gMDsNCj4g PiA+PiArCXN0cnVjdCBpcHNlY19zYSAqc2E7DQo+ID4gPj4gKwllbnVtIHBrdF90eXBlIHR5cGU7 DQo+ID4gPj4gKwl1aW50MzJfdCBzYV9pZHg7DQo+ID4gPj4gKwl1aW50OF90ICpubHA7DQo+ID4g Pj4gKw0KPiA+ID4+ICsJLyogR2V0IHBrdCBmcm9tIGV2ZW50ICovDQo+ID4gPj4gKwlwa3QgPSBl di0+bWJ1ZjsNCj4gPiA+PiArDQo+ID4gPj4gKwkvKiBDaGVjayB0aGUgcGFja2V0IHR5cGUgKi8N Cj4gPiA+PiArCXR5cGUgPSBwcm9jZXNzX2lwc2VjX2dldF9wa3RfdHlwZShwa3QsICZubHApOw0K PiA+ID4+ICsNCj4gPiA+PiArCXN3aXRjaCAodHlwZSkgew0KPiA+ID4+ICsJY2FzZSBQS1RfVFlQ RV9QTEFJTl9JUFY0Og0KPiA+ID4+ICsJCS8qIENoZWNrIGlmIHdlIGhhdmUgYSBtYXRjaCAqLw0K PiA+ID4+ICsJCWlmIChjaGVja19zcChjdHgtPnNwNF9jdHgsIG5scCwgJnNhX2lkeCkgPT0gMCkg ew0KPiA+ID4+ICsJCQkvKiBObyB2YWxpZCBtYXRjaCAqLw0KPiA+ID4+ICsJCQlnb3RvIGRyb3Bf cGt0X2FuZF9leGl0Ow0KPiA+ID4+ICsJCX0NCj4gPiA+PiArCQlicmVhazsNCj4gPiA+PiArCWNh c2UgUEtUX1RZUEVfUExBSU5fSVBWNjoNCj4gPiA+PiArCQkvKiBDaGVjayBpZiB3ZSBoYXZlIGEg bWF0Y2ggKi8NCj4gPiA+PiArCQlpZiAoY2hlY2tfc3AoY3R4LT5zcDZfY3R4LCBubHAsICZzYV9p ZHgpID09IDApIHsNCj4gPiA+PiArCQkJLyogTm8gdmFsaWQgbWF0Y2ggKi8NCj4gPiA+PiArCQkJ Z290byBkcm9wX3BrdF9hbmRfZXhpdDsNCj4gPiA+PiArCQl9DQo+ID4gPj4gKwkJYnJlYWs7DQo+ ID4gPj4gKwlkZWZhdWx0Og0KPiA+ID4+ICsJCS8qDQo+ID4gPj4gKwkJICogT25seSBwbGFpbiBJ UHY0ICYgSVB2NiBwYWNrZXRzIGFyZSBhbGxvd2VkDQo+ID4gPj4gKwkJICogb24gcHJvdGVjdGVk IHBvcnQuIERyb3AgdGhlIHJlc3QuDQo+ID4gPj4gKwkJICovDQo+ID4gPj4gKwkJUlRFX0xPRyhF UlIsIElQU0VDLCAiVW5zdXBwb3J0ZWQgcGFja2V0IHR5cGUgPSAlZFxuIiwgdHlwZSk7DQo+ID4g Pj4gKwkJZ290byBkcm9wX3BrdF9hbmRfZXhpdDsNCj4gPiA+PiArCX0NCj4gPiA+PiArDQo+ID4g Pj4gKwkvKiBDaGVjayBpZiB0aGUgcGFja2V0IGhhcyB0byBiZSBieXBhc3NlZCAqLw0KPiA+ID4+ ICsJaWYgKHNhX2lkeCA9PSBCWVBBU1MpIHsNCj4gPiA+PiArCQlwb3J0X2lkID0gZ2V0X3JvdXRl KHBrdCwgcnQsIHR5cGUpOw0KPiA+ID4+ICsJCWlmICh1bmxpa2VseShwb3J0X2lkID09IFJURV9N QVhfRVRIUE9SVFMpKSB7DQo+ID4gPj4gKwkJCS8qIG5vIG1hdGNoICovDQo+ID4gPj4gKwkJCWdv dG8gZHJvcF9wa3RfYW5kX2V4aXQ7DQo+ID4gPj4gKwkJfQ0KPiA+ID4+ICsJCS8qIGVsc2UsIHdl IGhhdmUgYSBtYXRjaGluZyByb3V0ZSAqLw0KPiA+ID4+ICsJCWdvdG8gc2VuZF9wa3Q7DQo+ID4g Pj4gKwl9DQo+ID4gPj4gKw0KPiA+ID4+ICsJLyogVmFsaWRhdGUgc2FfaWR4ICovDQo+ID4gPj4g KwlpZiAoc2FfaWR4ID49IGN0eC0+c2FfY3R4LT5uYl9zYSkNCj4gPiA+PiArCQlnb3RvIGRyb3Bf cGt0X2FuZF9leGl0Ow0KPiA+ID4+ICsNCj4gPiA+PiArCS8qIEVsc2UgdGhlIHBhY2tldCBoYXMg dG8gYmUgcHJvdGVjdGVkICovDQo+ID4gPj4gKw0KPiA+ID4+ICsJLyogR2V0IFNBIGN0eCovDQo+ ID4gPj4gKwlzYV9jdHggPSBjdHgtPnNhX2N0eDsNCj4gPiA+PiArDQo+ID4gPj4gKwkvKiBHZXQg U0EgKi8NCj4gPiA+PiArCXNhID0gJihzYV9jdHgtPnNhW3NhX2lkeF0pOw0KPiA+ID4+ICsNCj4g PiA+PiArCS8qIEdldCBJUHNlYyBzZXNzaW9uICovDQo+ID4gPj4gKwlzZXNzID0gaXBzZWNfZ2V0 X3ByaW1hcnlfc2Vzc2lvbihzYSk7DQo+ID4gPj4gKw0KPiA+ID4+ICsJLyogQWxsb3cgb25seSBp bmxpbmUgcHJvdG9jb2wgZm9yIG5vdyAqLw0KPiA+ID4+ICsJaWYgKHNlc3MtPnR5cGUgIT0gUlRF X1NFQ1VSSVRZX0FDVElPTl9UWVBFX0lOTElORV9QUk9UT0NPTCkgew0KPiA+ID4+ICsJCVJURV9M T0coRVJSLCBJUFNFQywgIlNBIHR5cGUgbm90IHN1cHBvcnRlZFxuIik7DQo+ID4gPj4gKwkJZ290 byBkcm9wX3BrdF9hbmRfZXhpdDsNCj4gPiA+PiArCX0NCj4gPiA+PiArDQo+ID4gPj4gKwlpZiAo c2Vzcy0+c2VjdXJpdHkub2xfZmxhZ3MgJiBSVEVfU0VDVVJJVFlfVFhfT0xPQURfTkVFRF9NREFU QSkNCj4gPiA+PiArCQlwa3QtPnVzZXJkYXRhID0gc2Vzcy0+c2VjdXJpdHkuc2VzOw0KPiA+ID4+ ICsNCj4gPiA+PiArCS8qIE1hcmsgdGhlIHBhY2tldCBmb3IgVHggc2VjdXJpdHkgb2ZmbG9hZCAq Lw0KPiA+ID4+ICsJcGt0LT5vbF9mbGFncyB8PSBQS1RfVFhfU0VDX09GRkxPQUQ7DQo+ID4gPj4g Kw0KPiA+ID4+ICsJLyogR2V0IHRoZSBwb3J0IHRvIHdoaWNoIHRoaXMgcGt0IG5lZWQgdG8gYmUg c3VibWl0dGVkICovDQo+ID4gPj4gKwlwb3J0X2lkID0gc2EtPnBvcnRpZDsNCj4gPiA+PiArDQo+ ID4gPj4gK3NlbmRfcGt0Og0KPiA+ID4+ICsJLyogVXBkYXRlIG1hYyBhZGRyZXNzZXMgKi8NCj4g PiA+PiArCXVwZGF0ZV9tYWNfYWRkcnMocGt0LCBwb3J0X2lkKTsNCj4gPiA+PiArDQo+ID4gPj4g KwkvKiBVcGRhdGUgdGhlIGV2ZW50IHdpdGggdGhlIGRlc3QgcG9ydCAqLw0KPiA+ID4+ICsJaXBz ZWNfZXZlbnRfcHJlX2ZvcndhcmQocGt0LCBwb3J0X2lkKTsNCj4gPiA+DQo+ID4gPiBIb3cgaXMg SVAgY2hlY2tzdW0gZ2V0dGluZyB1cGRhdGVkIGZvciB0aGUgcHJvY2Vzc2VkIHBhY2tldC4NCj4g PiA+IElmIHRoZSBoYXJkd2FyZSBpcyBub3QgdXBkYXRpbmcgaXQsIHNob3VsZCB3ZSBhZGQgYSBm YWxsYmFjayBtZWNoYW5pc20NCj4gPiA+IGZvciBTVyBiYXNlZCBDaGVja3N1bSB1cGRhdGUuDQo+ ID4gPg0KPiA+DQo+ID4gW0x1a2Fzel0gSW4gY2FzZSBvZiBvdXRib3VuZCBpbmxpbmUgcHJvdG9j b2wgY2hlY2tzdW0gaGFzIHRvIGJlIGNhbGN1bGF0ZWQgYnkNCj4gPiBIVyBhcyBmaW5hbCBwYWNr ZXQgaXMgZm9ybWVkIGJ5IGNyeXB0byBkZXZpY2UuIFRoZXJlIGlzIG5vIG5lZWQgdG8gY2FsY3Vs YXRlIGl0IGluDQo+ID4gU1cuDQo+ID4NCj4gPiA+PiArCXJldHVybiAxOw0KPiA+ID4NCj4gPiA+ IEl0IHdpbGwgYmUgYmV0dGVyIHRvIHVzZSBzb21lIE1BQ1JPUyB3aGlsZSByZXR1cm5pbmcgTGlr ZQ0KPiA+ID4gI2RlZmluZSBQS1RfRk9SV0FSRCAgIDENCj4gPiA+ICNkZWZpbmUgUEtUX0RST1BQ RUQgICAgIDANCj4gPiA+ICNkZWZpbmUgUEtUX1BPU1RFRCAgICAgICAyICAvKm1heSBiZSBmb3Ig bG9va2FzaWRlIGNhc2VzICovDQo+ID4gPg0KPiA+ID4+ICsNCj4gPiA+PiArZHJvcF9wa3RfYW5k X2V4aXQ6DQo+ID4gPj4gKwlSVEVfTE9HKEVSUiwgSVBTRUMsICJPdXRib3VuZCBwYWNrZXQgZHJv cHBlZFxuIik7DQo+ID4gPj4gKwlydGVfcGt0bWJ1Zl9mcmVlKHBrdCk7DQo+ID4gPj4gKwlldi0+ bWJ1ZiA9IE5VTEw7DQo+ID4gPj4gKwlyZXR1cm4gMDsNCj4gPiA+PiArfQ0KPiA+ID4+ICsNCj4g PiA+PiAgLyoNCj4gPiA+PiAgICogRXZlbnQgbW9kZSBleHBvc2VzIHZhcmlvdXMgb3BlcmF0aW5n IG1vZGVzIGRlcGVuZGluZyBvbiB0aGUNCj4gPiA+PiAgICogY2FwYWJpbGl0aWVzIG9mIHRoZSBl dmVudCBkZXZpY2UgYW5kIHRoZSBvcGVyYXRpbmcgbW9kZSBAQCAtNjgsNw0KPiA+ID4+ICszOTIs NyBAQCBwcmVwYXJlX291dF9zZXNzaW9uc190Ymwoc3RydWN0IHNhX2N0eCAqc2Ffb3V0LA0KPiA+ ID4+ICAgKi8NCj4gPiA+Pg0KPiA+ID4+ICAvKiBXb3JrZXJzIHJlZ2lzdGVyZWQgKi8NCj4gPiA+ PiAtI2RlZmluZSBJUFNFQ19FVkVOVE1PREVfV09SS0VSUwkJMQ0KPiA+ID4+ICsjZGVmaW5lIElQ U0VDX0VWRU5UTU9ERV9XT1JLRVJTCQkyDQo+ID4gPj4NCj4gPiA+PiAgLyoNCj4gPiA+PiAgICog RXZlbnQgbW9kZSB3b3JrZXINCj4gPiA+PiBAQCAtMTQ2LDcgKzQ3MCw3IEBAIGlwc2VjX3dya3Jf bm9uX2J1cnN0X2ludF9wb3J0X2Rydl9tb2RlKHN0cnVjdA0KPiA+ID4+IGVoX2V2ZW50X2xpbmtf aW5mbyAqbGlua3MsDQo+ID4gPj4gIAkJCX0NCj4gPiA+Pg0KPiA+ID4+ICAJCQkvKiBTYXZlIHNl Y3VyaXR5IHNlc3Npb24gKi8NCj4gPiA+PiAtCQkJcGt0LT51ZGF0YTY0ID0gKHVpbnQ2NF90KSBz ZXNzX3RibFtwb3J0X2lkXTsNCj4gPiA+PiArCQkJcGt0LT51c2VyZGF0YSA9IHNlc3NfdGJsW3Bv cnRfaWRdOw0KPiA+ID4+DQo+ID4gPj4gIAkJCS8qIE1hcmsgdGhlIHBhY2tldCBmb3IgVHggc2Vj dXJpdHkgb2ZmbG9hZCAqLw0KPiA+ID4+ICAJCQlwa3QtPm9sX2ZsYWdzIHw9IFBLVF9UWF9TRUNf T0ZGTE9BRDsgQEAgLTE2NSw2DQo+ID4gKzQ4OSw5NCBAQA0KPiA+ID4+IGlwc2VjX3dya3Jfbm9u X2J1cnN0X2ludF9wb3J0X2Rydl9tb2RlKHN0cnVjdA0KPiA+ID4+IGVoX2V2ZW50X2xpbmtfaW5m byAqbGlua3MsDQo+ID4gPj4gIAl9DQo+ID4gPj4gIH0NCj4gPiA+Pg0KPiA+ID4+ICsvKg0KPiA+ ID4+ICsgKiBFdmVudCBtb2RlIHdvcmtlcg0KPiA+ID4+ICsgKiBPcGVyYXRpbmcgcGFyYW1ldGVy cyA6IG5vbi1idXJzdCAtIFR4IGludGVybmFsIHBvcnQgLSBhcHAgbW9kZQ0KPiA+ID4+ICsqLyBz dGF0aWMgdm9pZCBpcHNlY193cmtyX25vbl9idXJzdF9pbnRfcG9ydF9hcHBfbW9kZShzdHJ1Y3QN Cj4gPiA+PiArZWhfZXZlbnRfbGlua19pbmZvICpsaW5rcywNCj4gPiA+PiArCQl1aW50OF90IG5i X2xpbmtzKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKwlzdHJ1Y3QgbGNvcmVfY29uZl9ldl90eF9pbnRf cG9ydF93cmtyIGxjb25mOw0KPiA+ID4+ICsJdW5zaWduZWQgaW50IG5iX3J4ID0gMDsNCj4gPiA+ PiArCXN0cnVjdCBydGVfZXZlbnQgZXY7DQo+ID4gPj4gKwl1aW50MzJfdCBsY29yZV9pZDsNCj4g PiA+PiArCWludDMyX3Qgc29ja2V0X2lkOw0KPiA+ID4+ICsJaW50IHJldDsNCj4gPiA+PiArDQo+ ID4gPj4gKwkvKiBDaGVjayBpZiB3ZSBoYXZlIGxpbmtzIHJlZ2lzdGVyZWQgZm9yIHRoaXMgbGNv cmUgKi8NCj4gPiA+PiArCWlmIChuYl9saW5rcyA9PSAwKSB7DQo+ID4gPj4gKwkJLyogTm8gbGlu a3MgcmVnaXN0ZXJlZCAtIGV4aXQgKi8NCj4gPiA+PiArCQlyZXR1cm47DQo+ID4gPj4gKwl9DQo+ ID4gPj4gKw0KPiA+ID4+ICsJLyogV2UgaGF2ZSB2YWxpZCBsaW5rcyAqLw0KPiA+ID4+ICsNCj4g PiA+PiArCS8qIEdldCBjb3JlIElEICovDQo+ID4gPj4gKwlsY29yZV9pZCA9IHJ0ZV9sY29yZV9p ZCgpOw0KPiA+ID4+ICsNCj4gPiA+PiArCS8qIEdldCBzb2NrZXQgSUQgKi8NCj4gPiA+PiArCXNv Y2tldF9pZCA9IHJ0ZV9sY29yZV90b19zb2NrZXRfaWQobGNvcmVfaWQpOw0KPiA+ID4+ICsNCj4g PiA+PiArCS8qIFNhdmUgcm91dGluZyB0YWJsZSAqLw0KPiA+ID4+ICsJbGNvbmYucnQucnQ0X2N0 eCA9IHNvY2tldF9jdHhbc29ja2V0X2lkXS5ydF9pcDQ7DQo+ID4gPj4gKwlsY29uZi5ydC5ydDZf Y3R4ID0gc29ja2V0X2N0eFtzb2NrZXRfaWRdLnJ0X2lwNjsNCj4gPiA+PiArCWxjb25mLmluYm91 bmQuc3A0X2N0eCA9IHNvY2tldF9jdHhbc29ja2V0X2lkXS5zcF9pcDRfaW47DQo+ID4gPj4gKwls Y29uZi5pbmJvdW5kLnNwNl9jdHggPSBzb2NrZXRfY3R4W3NvY2tldF9pZF0uc3BfaXA2X2luOw0K PiA+ID4+ICsJbGNvbmYuaW5ib3VuZC5zYV9jdHggPSBzb2NrZXRfY3R4W3NvY2tldF9pZF0uc2Ff aW47DQo+ID4gPj4gKwlsY29uZi5pbmJvdW5kLnNlc3Npb25fcG9vbCA9IHNvY2tldF9jdHhbc29j a2V0X2lkXS5zZXNzaW9uX3Bvb2w7DQo+ID4gPg0KPiA+ID4gU2Vzc2lvbl9wcml2X3Bvb2wgc2hv dWxkIGFsc28gYmUgYWRkZWQgZm9yIGJvdGggaW5ib3VuZCBhbmQgb3V0Ym91bmQNCj4gPiA+DQo+ ID4NCj4gPiBbTHVrYXN6XSBJIHdpbGwgYWRkIGl0IGluIFY1Lg0KPiANCj4gW0Fub29iXSBBY3R1 YWxseSwgd2h5IGRvIG5lZWQgYm90aCBzZXNzaW9uX3Bvb2wgYW5kIHByaXZhdGVfcG9vbD8gSSB0 aGluayBpdCdzIGEgcmVtbmFudCBmcm9tIHRoZSB0aW1lIHdlIGhhZCBzZXNzaW9uIGJlaW5nIGNy ZWF0ZWQgd2hlbg0KPiB0aGUgZmlyc3QgcGFja2V0IGFycml2ZXMuDQo+IA0KPiBAS29uc3RhbnRp biwgdGhvdWdodHM/DQoNCkkgdGhpbmsgd2UgZG8gbmVlZCBpdCBmb3IgbGtzZCBzZXNzaW9ucy4N ClNlZSBjcmVhdGVfbG9va2FzaWRlX3Nlc3Npb24oKSBpbiBpcHNlYy5jDQoNCj4gDQo+ID4NCj4g PiA+PiArCWxjb25mLm91dGJvdW5kLnNwNF9jdHggPSBzb2NrZXRfY3R4W3NvY2tldF9pZF0uc3Bf aXA0X291dDsNCj4gPiA+PiArCWxjb25mLm91dGJvdW5kLnNwNl9jdHggPSBzb2NrZXRfY3R4W3Nv Y2tldF9pZF0uc3BfaXA2X291dDsNCj4gPiA+PiArCWxjb25mLm91dGJvdW5kLnNhX2N0eCA9IHNv Y2tldF9jdHhbc29ja2V0X2lkXS5zYV9vdXQ7DQo+ID4gPj4gKwlsY29uZi5vdXRib3VuZC5zZXNz aW9uX3Bvb2wgPSBzb2NrZXRfY3R4W3NvY2tldF9pZF0uc2Vzc2lvbl9wb29sOw0KPiA+ID4+ICsN Cj4gPiA+PiArCVJURV9MT0coSU5GTywgSVBTRUMsDQo+ID4gPj4gKwkJIkxhdW5jaGluZyBldmVu dCBtb2RlIHdvcmtlciAobm9uLWJ1cnN0IC0gVHggaW50ZXJuYWwgcG9ydCAtICINCj4gPiA+PiAr CQkiYXBwIG1vZGUpIG9uIGxjb3JlICVkXG4iLCBsY29yZV9pZCk7DQo+ID4gPj4gKw0KPiA+ID4+ ICsJLyogQ2hlY2sgaWYgaXQncyBzaW5nbGUgbGluayAqLw0KPiA+ID4+ICsJaWYgKG5iX2xpbmtz ICE9IDEpIHsNCj4gPiA+PiArCQlSVEVfTE9HKElORk8sIElQU0VDLA0KPiA+ID4+ICsJCQkiTXVs dGlwbGUgbGlua3Mgbm90IHN1cHBvcnRlZC4gVXNpbmcgZmlyc3QgbGlua1xuIik7DQo+ID4gPj4g Kwl9DQo+ID4gPj4gKw0KPiA+ID4+ICsJUlRFX0xPRyhJTkZPLCBJUFNFQywgIiAtLSBsY29yZWlk PSV1IGV2ZW50X3BvcnRfaWQ9JXVcbiIsIGxjb3JlX2lkLA0KPiA+ID4+ICsJCWxpbmtzWzBdLmV2 ZW50X3BvcnRfaWQpOw0KPiA+ID4+ICsNCj4gPiA+PiArCXdoaWxlICghZm9yY2VfcXVpdCkgew0K PiA+ID4+ICsJCS8qIFJlYWQgcGFja2V0IGZyb20gZXZlbnQgcXVldWVzICovDQo+ID4gPj4gKwkJ bmJfcnggPSBydGVfZXZlbnRfZGVxdWV1ZV9idXJzdChsaW5rc1swXS5ldmVudGRldl9pZCwNCj4g PiA+PiArCQkJCWxpbmtzWzBdLmV2ZW50X3BvcnRfaWQsDQo+ID4gPj4gKwkJCQkmZXYsICAgICAv KiBldmVudHMgKi8NCj4gPiA+PiArCQkJCTEsICAgICAgIC8qIG5iX2V2ZW50cyAqLw0KPiA+ID4+ ICsJCQkJMCAgICAgICAgLyogdGltZW91dF90aWNrcyAqLyk7DQo+ID4gPj4gKw0KPiA+ID4+ICsJ CWlmIChuYl9yeCA9PSAwKQ0KPiA+ID4+ICsJCQljb250aW51ZTsNCj4gPiA+PiArDQo+ID4gPg0K PiA+ID4gRXZlbnQgdHlwZSBzaG91bGQgYmUgY2hlY2tlZCBoZXJlIGJlZm9yZSBkZXJlZmVyZW5j aW5nIGl0Lg0KPiA+ID4NCj4gPg0KPiA+IFtMdWthc3pdIEkgd2lsbCBhZGQgZXZlbnQgdHlwZSBj aGVjayBpbiBWNS4NCj4gPg0KPiA+ID4+ICsJCWlmIChpc191bnByb3RlY3RlZF9wb3J0KGV2Lm1i dWYtPnBvcnQpKQ0KPiA+ID4+ICsJCQlyZXQgPSBwcm9jZXNzX2lwc2VjX2V2X2luYm91bmQoJmxj b25mLmluYm91bmQsDQo+ID4gPj4gKwkJCQkJCQkmbGNvbmYucnQsICZldik7DQo+ID4gPj4gKwkJ ZWxzZQ0KPiA+ID4+ICsJCQlyZXQgPSBwcm9jZXNzX2lwc2VjX2V2X291dGJvdW5kKCZsY29uZi5v dXRib3VuZCwNCj4gPiA+PiArCQkJCQkJCSZsY29uZi5ydCwgJmV2KTsNCj4gPiA+PiArCQlpZiAo cmV0ICE9IDEpDQo+ID4gPj4gKwkJCS8qIFRoZSBwa3QgaGFzIGJlZW4gZHJvcHBlZCAqLw0KPiA+ ID4+ICsJCQljb250aW51ZTsNCj4gPiA+PiArDQo+ID4gPj4gKwkJLyoNCj4gPiA+PiArCQkgKiBT aW5jZSB0eCBpbnRlcm5hbCBwb3J0IGlzIGF2YWlsYWJsZSwgZXZlbnRzIGNhbiBiZQ0KPiA+ID4+ ICsJCSAqIGRpcmVjdGx5IGVucXVldWVkIHRvIHRoZSBhZGFwdGVyIGFuZCBpdCB3b3VsZCBiZQ0K PiA+ID4+ICsJCSAqIGludGVybmFsbHkgc3VibWl0dGVkIHRvIHRoZSBldGggZGV2aWNlLg0KPiA+ ID4+ICsJCSAqLw0KPiA+ID4+ICsJCXJ0ZV9ldmVudF9ldGhfdHhfYWRhcHRlcl9lbnF1ZXVlKGxp bmtzWzBdLmV2ZW50ZGV2X2lkLA0KPiA+ID4+ICsJCQkJbGlua3NbMF0uZXZlbnRfcG9ydF9pZCwN Cj4gPiA+PiArCQkJCSZldiwJLyogZXZlbnRzICovDQo+ID4gPj4gKwkJCQkxLAkvKiBuYl9ldmVu dHMgKi8NCj4gPiA+PiArCQkJCTAJLyogZmxhZ3MgKi8pOw0KPiA+ID4+ICsJfQ0KPiA+ID4+ICt9 DQo+ID4gPj4gKw0KPiA+ID4+ICBzdGF0aWMgdWludDhfdA0KPiA+ID4+ICBpcHNlY19ldmVudG1v ZGVfcG9wdWxhdGVfd3Jrcl9wYXJhbXMoc3RydWN0IGVoX2FwcF93b3JrZXJfcGFyYW1zDQo+ID4g Pj4gKndya3JzKQ0KPiA+ID4+ICB7DQo+ID4gPj4gQEAgLTE4MCw2ICs1OTIsMTQgQEAgaXBzZWNf ZXZlbnRtb2RlX3BvcHVsYXRlX3dya3JfcGFyYW1zKHN0cnVjdA0KPiA+ID4+IGVoX2FwcF93b3Jr ZXJfcGFyYW1zICp3cmtycykNCj4gPiA+PiAgCXdya3ItPmNhcC5pcHNlY19tb2RlID0gRUhfSVBT RUNfTU9ERV9UWVBFX0RSSVZFUjsNCj4gPiA+PiAgCXdya3ItPndvcmtlcl90aHJlYWQgPSBpcHNl Y193cmtyX25vbl9idXJzdF9pbnRfcG9ydF9kcnZfbW9kZTsNCj4gPiA+PiAgCXdya3IrKzsNCj4g PiA+PiArCW5iX3dya3JfcGFyYW0rKzsNCj4gPiA+PiArDQo+ID4gPj4gKwkvKiBOb24tYnVyc3Qg LSBUeCBpbnRlcm5hbCBwb3J0IC0gYXBwIG1vZGUgKi8NCj4gPiA+PiArCXdya3ItPmNhcC5idXJz dCA9IEVIX1JYX1RZUEVfTk9OX0JVUlNUOw0KPiA+ID4+ICsJd3Jrci0+Y2FwLnR4X2ludGVybmFs X3BvcnQgPSBFSF9UWF9UWVBFX0lOVEVSTkFMX1BPUlQ7DQo+ID4gPj4gKwl3cmtyLT5jYXAuaXBz ZWNfbW9kZSA9IEVIX0lQU0VDX01PREVfVFlQRV9BUFA7DQo+ID4gPj4gKwl3cmtyLT53b3JrZXJf dGhyZWFkID0gaXBzZWNfd3Jrcl9ub25fYnVyc3RfaW50X3BvcnRfYXBwX21vZGU7DQo+ID4gPj4g KwluYl93cmtyX3BhcmFtKys7DQo+ID4gPj4NCj4gPiA+PiAgCXJldHVybiBuYl93cmtyX3BhcmFt Ow0KPiA+ID4+ICB9DQo+ID4gPj4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2lwc2VjLXNlY2d3L2lw c2VjX3dvcmtlci5oIGIvZXhhbXBsZXMvaXBzZWMtDQo+ID4gPj4gc2VjZ3cvaXBzZWNfd29ya2Vy LmggbmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXggMDAwMDAwMC4uODdiNGYyMg0KPiA+ID4+IC0t LSAvZGV2L251bGwNCj4gPiA+PiArKysgYi9leGFtcGxlcy9pcHNlYy1zZWNndy9pcHNlY193b3Jr ZXIuaA0KPiA+ID4+IEBAIC0wLDAgKzEsMzUgQEANCj4gPiA+PiArLyogU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiA+ID4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjAgTWFy dmVsbCBJbnRlcm5hdGlvbmFsIEx0ZC4NCj4gPiA+PiArICovDQo+ID4gPj4gKyNpZm5kZWYgX0lQ U0VDX1dPUktFUl9IXw0KPiA+ID4+ICsjZGVmaW5lIF9JUFNFQ19XT1JLRVJfSF8NCj4gPiA+PiAr DQo+ID4gPj4gKyNpbmNsdWRlICJpcHNlYy5oIg0KPiA+ID4+ICsNCj4gPiA+PiArZW51bSBwa3Rf dHlwZSB7DQo+ID4gPj4gKwlQS1RfVFlQRV9QTEFJTl9JUFY0ID0gMSwNCj4gPiA+PiArCVBLVF9U WVBFX0lQU0VDX0lQVjQsDQo+ID4gPj4gKwlQS1RfVFlQRV9QTEFJTl9JUFY2LA0KPiA+ID4+ICsJ UEtUX1RZUEVfSVBTRUNfSVBWNiwNCj4gPiA+PiArCVBLVF9UWVBFX0lOVkFMSUQNCj4gPiA+PiAr fTsNCj4gPiA+PiArDQo+ID4gPj4gK3N0cnVjdCByb3V0ZV90YWJsZSB7DQo+ID4gPj4gKwlzdHJ1 Y3QgcnRfY3R4ICpydDRfY3R4Ow0KPiA+ID4+ICsJc3RydWN0IHJ0X2N0eCAqcnQ2X2N0eDsNCj4g PiA+PiArfTsNCj4gPiA+PiArDQo+ID4gPj4gKy8qDQo+ID4gPj4gKyAqIENvbmYgcmVxdWlyZWQg YnkgZXZlbnQgbW9kZSB3b3JrZXIgd2l0aCB0eCBpbnRlcm5hbCBwb3J0ICAqLw0KPiA+ID4+ICtz dHJ1Y3QgbGNvcmVfY29uZl9ldl90eF9pbnRfcG9ydF93cmtyIHsNCj4gPiA+PiArCXN0cnVjdCBp cHNlY19jdHggaW5ib3VuZDsNCj4gPiA+PiArCXN0cnVjdCBpcHNlY19jdHggb3V0Ym91bmQ7DQo+ ID4gPj4gKwlzdHJ1Y3Qgcm91dGVfdGFibGUgcnQ7DQo+ID4gPj4gK30gX19ydGVfY2FjaGVfYWxp Z25lZDsNCj4gPiA+PiArDQo+ID4gPj4gK3ZvaWQgaXBzZWNfcG9sbF9tb2RlX3dvcmtlcih2b2lk KTsNCj4gPiA+PiArDQo+ID4gPj4gK2ludCBpcHNlY19sYXVuY2hfb25lX2xjb3JlKHZvaWQgKmFy Z3MpOw0KPiA+ID4+ICsNCj4gPiA+PiArI2VuZGlmIC8qIF9JUFNFQ19XT1JLRVJfSF8gKi8NCj4g PiA+PiAtLQ0KPiA+ID4+IDIuNy40DQo+ID4gPg0K