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 35860A2EFC for ; Thu, 19 Sep 2019 08:17:38 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 7AA441E8B7; Thu, 19 Sep 2019 08:17:37 +0200 (CEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-eopbgr140082.outbound.protection.outlook.com [40.107.14.82]) by dpdk.org (Postfix) with ESMTP id EC1E31E886 for ; Thu, 19 Sep 2019 08:17:35 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WDlN4powndGgE77vXwidE0sV0T+z9mVCZdZIB7t5iKE=; b=jLm++LAvSWL5MQ33jYtMBFfyBuC3P/IpqTsoRsGqPh5ssodtuloIwUdzmARcbjKCiq0kpZ5pQLTs4zMROFPnK+zmdNz6en510c1VXjIpFF2xtwZ6BLW0fY05w1S+NPxfeDRixM6ge0ftXuGgLNEKnX/clVaZxRvSNDtohts2sYg= Received: from AM4PR08CA0055.eurprd08.prod.outlook.com (2603:10a6:205:2::26) by DB7PR08MB3196.eurprd08.prod.outlook.com (2603:10a6:5:26::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2263.17; Thu, 19 Sep 2019 06:17:32 +0000 Received: from DB5EUR03FT053.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e0a::204) by AM4PR08CA0055.outlook.office365.com (2603:10a6:205:2::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2284.18 via Frontend Transport; Thu, 19 Sep 2019 06:17:31 +0000 Authentication-Results: spf=temperror (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dpdk.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dpdk.org; dmarc=none action=none header.from=arm.com; Received-SPF: TempError (protection.outlook.com: error in processing during lookup of arm.com: DNS Timeout) Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT053.mail.protection.outlook.com (10.152.21.119) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2284.20 via Frontend Transport; Thu, 19 Sep 2019 06:17:30 +0000 Received: ("Tessian outbound 5061e1b5386c:v31"); Thu, 19 Sep 2019 06:17:28 +0000 X-CR-MTA-TID: 64aa7808 Received: from 2d56be819b37.2 (ip-172-16-0-2.eu-west-1.compute.internal [104.47.6.52]) by 64aa7808-outbound-1.mta.getcheckrecipient.com id CC1B04D9-8ED0-4AC7-B4A3-DC9776AB8F78.1; Thu, 19 Sep 2019 06:17:23 +0000 Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-ve1eur02lp2052.outbound.protection.outlook.com [104.47.6.52]) by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 2d56be819b37.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384); Thu, 19 Sep 2019 06:17:23 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JtqU3Bmj9t8RQaTdP9zMkU+f/kYyGnlhTiAceOsPy9OOa0OLJSd5mMlQYKUNPEp24sFFNMlp2FAK0k8jZADF6a09AcYHomkLkfgZsWH/bWtz457Ng70nl/94iqlkYK9N19tGAqbcyGsXa2XGa7xjEBZJBsW8tq+svkBoN1FZ83tLufOI8rlS8h33bldid2ufM8MYMT/3DEAsqmmn7PyBq23CRTL12jFDogmys0QXDxVD20NKap6G9ui1bIool7XAlkeyep1vveWLmGi8PaKg6cDGjm1IAPny1VVcVXq9FzQHtcF3CUi2XA1fafmnjPhjc146XU9XsQC4HqvS7HRH3Q== 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=WDlN4powndGgE77vXwidE0sV0T+z9mVCZdZIB7t5iKE=; b=H6V8Iflg39tI4bwgJEUlO7js1LLm6pGW5JIGFixpVAEw2fp4dDqp7tSZ4h5Ufkg8ce8KsZVFomkbVLx9rt+uA2ulplp9i6ltduOSl76zAScORdKWSkCAh3Yqf0w+HvaH5MtE/Ve7cicV6P4MPoDFAjrO0lbGMjtg1WHE7dwmz3Hn7VcWuS6YVOnoVmn5Suf9mdjGByIHl8Ar+rl0Q3yMmy5D5j5auK+yaJRs/akU0djUoTS8ZSx3d6CidmzieOcms5kJ2a9wr1DCX2dYEa4BaG+QOv+Iph8q32htBcOwhqFQ0JDu5vxRYXByH/+16lJhtsZ+hkdPKDqmXBLkE4WD5Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WDlN4powndGgE77vXwidE0sV0T+z9mVCZdZIB7t5iKE=; b=jLm++LAvSWL5MQ33jYtMBFfyBuC3P/IpqTsoRsGqPh5ssodtuloIwUdzmARcbjKCiq0kpZ5pQLTs4zMROFPnK+zmdNz6en510c1VXjIpFF2xtwZ6BLW0fY05w1S+NPxfeDRixM6ge0ftXuGgLNEKnX/clVaZxRvSNDtohts2sYg= Received: from AM0PR08MB3986.eurprd08.prod.outlook.com (20.178.118.90) by AM0PR08MB3619.eurprd08.prod.outlook.com (20.177.111.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2263.26; Thu, 19 Sep 2019 06:17:21 +0000 Received: from AM0PR08MB3986.eurprd08.prod.outlook.com ([fe80::8194:f229:b0d2:b5df]) by AM0PR08MB3986.eurprd08.prod.outlook.com ([fe80::8194:f229:b0d2:b5df%7]) with mapi id 15.20.2284.009; Thu, 19 Sep 2019 06:17:21 +0000 From: "Ruifeng Wang (Arm Technology China)" To: "Medvedkin, Vladimir" , "bruce.richardson@intel.com" , "olivier.matz@6wind.com" CC: "dev@dpdk.org" , "stephen@networkplumber.org" , "konstantin.ananyev@intel.com" , "Gavin Hu (Arm Technology China)" , Honnappa Nagarahalli , Dharmik Thakkar , nd , nd Thread-Topic: [PATCH v2 3/6] lib/lpm: integrate RCU QSBR Thread-Index: AQHVZJf4BdmcQ0naVEuDz+uBndkYxKcxr4KAgADqMlA= Date: Thu, 19 Sep 2019 06:17:20 +0000 Message-ID: References: <20190822063457.41596-1-ruifeng.wang@arm.com> <20190906094534.36060-1-ruifeng.wang@arm.com> <20190906094534.36060-4-ruifeng.wang@arm.com> <47636dc5-a4bd-82b7-ae33-064e8f7d931d@intel.com> In-Reply-To: <47636dc5-a4bd-82b7-ae33-064e8f7d931d@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: ec68fbbc-271c-4278-8371-d1245bca7b06.0 x-checkrecipientchecked: true Authentication-Results-Original: spf=none (sender IP is ) smtp.mailfrom=Ruifeng.Wang@arm.com; x-originating-ip: [113.29.88.7] x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: 7006aeb7-fa02-4697-c597-08d73cc90d35 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam-Untrusted: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600167)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020); SRVR:AM0PR08MB3619; X-MS-TrafficTypeDiagnostic: AM0PR08MB3619:|AM0PR08MB3619:|DB7PR08MB3196: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true x-ms-oob-tlc-oobclassifiers: OLM:10000;OLM:10000; x-forefront-prvs: 016572D96D X-Forefront-Antispam-Report-Untrusted: SFV:NSPM; SFS:(10009020)(4636009)(396003)(39860400002)(376002)(136003)(366004)(346002)(13464003)(189003)(199004)(6246003)(6506007)(3846002)(14454004)(9686003)(66066001)(486006)(2906002)(256004)(55016002)(52536014)(305945005)(71200400001)(71190400001)(186003)(74316002)(14444005)(478600001)(7736002)(55236004)(102836004)(6116002)(446003)(11346002)(476003)(110136005)(4326008)(66946007)(26005)(30864003)(53546011)(99286004)(66476007)(7696005)(66556008)(64756008)(76176011)(66446008)(5660300002)(25786009)(76116006)(229853002)(2201001)(86362001)(316002)(6436002)(81166006)(2501003)(81156014)(33656002)(8676002)(54906003)(8936002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR08MB3619; H:AM0PR08MB3986.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Message-Info-Original: cMMo8YhCWSWB39/g3NQ6GWtRTOd6TpPppNt0S944O+MXCtRhoKE9AGWrLJeyl/k2o41jyIbnRrKBHO2hfzaRA8U/13LVW+GA7gMU4MjsovzUglK8CM2hhtC48P813x4zaT6LzVGiWDa5ZYytd7+ALsEqRn9i7Ap/VNNDlwtkKf/ZrOnw1liCfwl1MPgoUCSUvCCG1Is5FQt0kRhF2P/wLV35Svq/sgy0yoIjzAIbRAnrQMFIJbib+n310opGnoW+a5XvWWWQgGeJuFSboBDmKJuFrSsZwemqZYqIdVn0g2KbybL2FGvUJGCTOVD9huFiYVmycCRmoY+PUksqw1i5rysMIMcMi0k7DgiaJqOi2Kt7kkDYPDfcAku3xP3kl0ZzMgKYNQGKgOdUoF0zpVXVbZaF9P9dI1AOI6Hcrw+SaYk= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB3619 Original-Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Ruifeng.Wang@arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT053.eop-EUR03.prod.protection.outlook.com X-Forefront-Antispam-Report: CIP:63.35.35.123; IPV:CAL; SCL:-1; CTRY:IE; EFV:NLI; SFV:NSPM; SFS:(10009020)(4636009)(396003)(136003)(376002)(346002)(39860400002)(199004)(189003)(13464003)(54906003)(7696005)(81156014)(110136005)(478600001)(305945005)(14454004)(2201001)(22756006)(6246003)(33656002)(9686003)(126002)(7736002)(316002)(6116002)(3846002)(25786009)(186003)(26005)(2906002)(53546011)(486006)(6506007)(2501003)(55016002)(74316002)(229853002)(76176011)(102836004)(99286004)(76130400001)(336012)(356004)(5660300002)(8936002)(26826003)(2486003)(476003)(81166006)(23676004)(8676002)(47776003)(66066001)(63350400001)(86362001)(436003)(30864003)(4326008)(14444005)(446003)(70586007)(11346002)(70206006)(52536014)(50466002); DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR08MB3196; H:64aa7808-outbound-1.mta.getcheckrecipient.com; FPR:; SPF:TempError; LANG:en; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; A:1; MX:1; X-MS-Office365-Filtering-Correlation-Id-Prvs: 0fc9cdc9-a8e6-4bd2-f3b4-08d73cc907ab X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600167)(710020)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020); SRVR:DB7PR08MB3196; NoDisclaimer: True X-Forefront-PRVS: 016572D96D X-Microsoft-Antispam-Message-Info: AhCJzOaN+d2nVDq9H7CUiUHbC2Ip876FUhHLBC39lJDBHZbnbfyUHYL5yKSnja/3crW4cfNihZl3w4bmnG09N9WPo59YNhO9cIW0gWfdZLzC+R37KEbvcq969AOip5Any1gb5SW4IO7REh/tsZjUXPpMLchLqizneuubXkqQPUUVSGa0whQQVe0xBywbmE187JBAleeTb3HUNUVxebLrDZ/kQv97ztjb8f5KSEkBn9TgksTHzYDRPQwyhhmPwBtk/8flqGVCRzODjqehrrt+p5TaK+tksmSmWr7pg3pWn5vSX99aJCL75vLl/DlCgKIc5+euqmkaIBEjs5OPq2OuKWxIRVj1v/AHq3IYZ9OPCvURGg3SPKh5SiOBHUx9E1Xv4agJxzL7KR5JLY4MAq9wyGomVMPApmHlt6EE7N/mb20= X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Sep 2019 06:17:30.3448 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7006aeb7-fa02-4697-c597-08d73cc90d35 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3196 Subject: Re: [dpdk-dev] [PATCH v2 3/6] lib/lpm: integrate RCU QSBR 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" SGkgVmxhZGltaXIsDQoNClRoYW5rcyBmb3IgeW91ciByZXZpZXcgYW5kICB0aGUgY29tbWVudHMu DQpBbGwgdGhlIGNvbW1lbnRzIHdpbGwgYmUgYWRkcmVzc2VkIGluIG5leHQgdmVyc2lvbi4NCg0K L1J1aWZlbmcNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBNZWR2ZWRr aW4sIFZsYWRpbWlyIDx2bGFkaW1pci5tZWR2ZWRraW5AaW50ZWwuY29tPg0KPiBTZW50OiBUaHVy c2RheSwgU2VwdGVtYmVyIDE5LCAyMDE5IDAwOjE2DQo+IFRvOiBSdWlmZW5nIFdhbmcgKEFybSBU ZWNobm9sb2d5IENoaW5hKSA8UnVpZmVuZy5XYW5nQGFybS5jb20+Ow0KPiBicnVjZS5yaWNoYXJk c29uQGludGVsLmNvbTsgb2xpdmllci5tYXR6QDZ3aW5kLmNvbQ0KPiBDYzogZGV2QGRwZGsub3Jn OyBzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZzsNCj4ga29uc3RhbnRpbi5hbmFueWV2QGludGVs LmNvbTsgR2F2aW4gSHUgKEFybSBUZWNobm9sb2d5IENoaW5hKQ0KPiA8R2F2aW4uSHVAYXJtLmNv bT47IEhvbm5hcHBhIE5hZ2FyYWhhbGxpDQo+IDxIb25uYXBwYS5OYWdhcmFoYWxsaUBhcm0uY29t PjsgRGhhcm1payBUaGFra2FyDQo+IDxEaGFybWlrLlRoYWtrYXJAYXJtLmNvbT47IG5kIDxuZEBh cm0uY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHYyIDMvNl0gbGliL2xwbTogaW50ZWdyYXRl IFJDVSBRU0JSDQo+IA0KPiBIaSBSdWlmZW5nLA0KPiANCj4gVGhhbmtzIGZvciB0aGlzIHBhdGNo c2VyaWVzLCBzZWUgY29tbWVudHMgYmVsb3cuDQo+IA0KPiBPbiAwNi8wOS8yMDE5IDEwOjQ1LCBS dWlmZW5nIFdhbmcgd3JvdGU6DQo+ID4gQ3VycmVudGx5LCB0aGUgdGJsOCBncm91cCBpcyBmcmVl ZCBldmVuIHRob3VnaCB0aGUgcmVhZGVycyBtaWdodCBiZQ0KPiA+IHVzaW5nIHRoZSB0Ymw4IGdy b3VwIGVudHJpZXMuIFRoZSBmcmVlZCB0Ymw4IGdyb3VwIGNhbiBiZSByZWFsbG9jYXRlZA0KPiA+ IHF1aWNrbHkuIFRoaXMgcmVzdWx0cyBpbiBpbmNvcnJlY3QgbG9va3VwIHJlc3VsdHMuDQo+ID4N Cj4gPiBSQ1UgUVNCUiBwcm9jZXNzIGlzIGludGVncmF0ZWQgZm9yIHNhZmUgdGJsOCBncm91cCBy ZWNsYWltLg0KPiA+IFJlZmVyIHRvIFJDVSBkb2N1bWVudGF0aW9uIHRvIHVuZGVyc3RhbmQgdmFy aW91cyBhc3BlY3RzIG9mDQo+ID4gaW50ZWdyYXRpbmcgUkNVIGxpYnJhcnkgaW50byBvdGhlciBs aWJyYXJpZXMuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBSdWlmZW5nIFdhbmcgPHJ1aWZlbmcu d2FuZ0Bhcm0uY29tPg0KPiA+IFJldmlld2VkLWJ5OiBIb25uYXBwYSBOYWdhcmFoYWxsaSA8aG9u bmFwcGEubmFnYXJhaGFsbGlAYXJtLmNvbT4NCj4gPiAtLS0NCj4gPiAgIGxpYi9saWJydGVfbHBt L01ha2VmaWxlICAgICAgICAgICAgfCAgIDMgKy0NCj4gPiAgIGxpYi9saWJydGVfbHBtL21lc29u LmJ1aWxkICAgICAgICAgfCAgIDIgKw0KPiA+ICAgbGliL2xpYnJ0ZV9scG0vcnRlX2xwbS5jICAg ICAgICAgICB8IDIyMyArKysrKysrKysrKysrKysrKysrKysrKysrKystLQ0KPiA+ICAgbGliL2xp YnJ0ZV9scG0vcnRlX2xwbS5oICAgICAgICAgICB8ICAyMiArKysNCj4gPiAgIGxpYi9saWJydGVf bHBtL3J0ZV9scG1fdmVyc2lvbi5tYXAgfCAgIDYgKw0KPiA+ICAgbGliL21lc29uLmJ1aWxkICAg ICAgICAgICAgICAgICAgICB8ICAgMyArLQ0KPiA+ICAgNiBmaWxlcyBjaGFuZ2VkLCAyNDQgaW5z ZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2xp YnJ0ZV9scG0vTWFrZWZpbGUgYi9saWIvbGlicnRlX2xwbS9NYWtlZmlsZSBpbmRleA0KPiA+IGE3 OTQ2YTFjNS4uY2E5ZTE2MzEyIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9saWJydGVfbHBtL01ha2Vm aWxlDQo+ID4gKysrIGIvbGliL2xpYnJ0ZV9scG0vTWFrZWZpbGUNCj4gPiBAQCAtNiw5ICs2LDEw IEBAIGluY2x1ZGUgJChSVEVfU0RLKS9tay9ydGUudmFycy5taw0KPiA+ICAgIyBsaWJyYXJ5IG5h bWUNCj4gPiAgIExJQiA9IGxpYnJ0ZV9scG0uYQ0KPiA+DQo+ID4gK0NGTEFHUyArPSAtREFMTE9X X0VYUEVSSU1FTlRBTF9BUEkNCj4gPiAgIENGTEFHUyArPSAtTzMNCj4gPiAgIENGTEFHUyArPSAk KFdFUlJPUl9GTEFHUykgLUkkKFNSQ0RJUikgLUxETElCUyArPSAtbHJ0ZV9lYWwNCj4gPiAtbHJ0 ZV9oYXNoDQo+ID4gK0xETElCUyArPSAtbHJ0ZV9lYWwgLWxydGVfaGFzaCAtbHJ0ZV9yY3UNCj4g Pg0KPiA+ICAgRVhQT1JUX01BUCA6PSBydGVfbHBtX3ZlcnNpb24ubWFwDQo+ID4NCj4gPiBkaWZm IC0tZ2l0IGEvbGliL2xpYnJ0ZV9scG0vbWVzb24uYnVpbGQgYi9saWIvbGlicnRlX2xwbS9tZXNv bi5idWlsZA0KPiA+IGluZGV4IGE1MTc2ZDhhZS4uMTlhMzUxMDdmIDEwMDY0NA0KPiA+IC0tLSBh L2xpYi9saWJydGVfbHBtL21lc29uLmJ1aWxkDQo+ID4gKysrIGIvbGliL2xpYnJ0ZV9scG0vbWVz b24uYnVpbGQNCj4gPiBAQCAtMiw5ICsyLDExIEBADQo+ID4gICAjIENvcHlyaWdodChjKSAyMDE3 IEludGVsIENvcnBvcmF0aW9uDQo+ID4NCj4gPiAgIHZlcnNpb24gPSAyDQo+ID4gK2FsbG93X2V4 cGVyaW1lbnRhbF9hcGlzID0gdHJ1ZQ0KPiA+ICAgc291cmNlcyA9IGZpbGVzKCdydGVfbHBtLmMn LCAncnRlX2xwbTYuYycpDQo+ID4gICBoZWFkZXJzID0gZmlsZXMoJ3J0ZV9scG0uaCcsICdydGVf bHBtNi5oJykNCj4gPiAgICMgc2luY2UgaGVhZGVyIGZpbGVzIGhhdmUgZGlmZmVyZW50IG5hbWVz LCB3ZSBjYW4gaW5zdGFsbCBhbGwgdmVjdG9yIGhlYWRlcnMNCj4gPiAgICMgd2l0aG91dCB3b3Jy eWluZyBhYm91dCB3aGljaCBhcmNoaXRlY3R1cmUgd2UgYWN0dWFsbHkgbmVlZA0KPiA+ICAgaGVh ZGVycyArPSBmaWxlcygncnRlX2xwbV9hbHRpdmVjLmgnLCAncnRlX2xwbV9uZW9uLmgnLCAncnRl X2xwbV9zc2UuaCcpDQo+ID4gICBkZXBzICs9IFsnaGFzaCddDQo+ID4gK2RlcHMgKz0gWydyY3Un XQ0KPiA+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2xwbS9ydGVfbHBtLmMgYi9saWIvbGlicnRl X2xwbS9ydGVfbHBtLmMgaW5kZXgNCj4gPiAzYTkyOWExYjEuLjk3NjRiOGRlNiAxMDA2NDQNCj4g PiAtLS0gYS9saWIvbGlicnRlX2xwbS9ydGVfbHBtLmMNCj4gPiArKysgYi9saWIvbGlicnRlX2xw bS9ydGVfbHBtLmMNCj4gPiBAQCAtMSw1ICsxLDYgQEANCj4gPiAgIC8qIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gPiAgICAqIENvcHlyaWdodChjKSAyMDEwLTIwMTQg SW50ZWwgQ29ycG9yYXRpb24NCj4gPiArICogQ29weXJpZ2h0KGMpIDIwMTkgQXJtIExpbWl0ZWQN Cj4gPiAgICAqLw0KPiA+DQo+ID4gICAjaW5jbHVkZSA8c3RyaW5nLmg+DQo+ID4gQEAgLTIyLDYg KzIzLDcgQEANCj4gPiAgICNpbmNsdWRlIDxydGVfcndsb2NrLmg+DQo+ID4gICAjaW5jbHVkZSA8 cnRlX3NwaW5sb2NrLmg+DQo+ID4gICAjaW5jbHVkZSA8cnRlX3RhaWxxLmg+DQo+ID4gKyNpbmNs dWRlIDxydGVfcmluZy5oPg0KPiA+DQo+ID4gICAjaW5jbHVkZSAicnRlX2xwbS5oIg0KPiA+DQo+ ID4gQEAgLTM5LDYgKzQxLDExIEBAIGVudW0gdmFsaWRfZmxhZyB7DQo+ID4gICAJVkFMSUQNCj4g PiAgIH07DQo+ID4NCj4gPiArc3RydWN0IF9fcnRlX2xwbV9xc19pdGVtIHsNCj4gPiArCXVpbnQ2 NF90IHRva2VuOwkvKio8IFFTQlIgdG9rZW4uKi8NCj4gPiArCXVpbnQzMl90IGluZGV4OwkvKio8 IHRibDggZ3JvdXAgaW5kZXguKi8NCj4gPiArfTsNCj4gPiArDQo+ID4gICAvKiBNYWNybyB0byBl bmFibGUvZGlzYWJsZSBydW4tdGltZSBjaGVja3MuICovDQo+ID4gICAjaWYgZGVmaW5lZChSVEVf TElCUlRFX0xQTV9ERUJVRykNCj4gPiAgICNpbmNsdWRlIDxydGVfZGVidWcuaD4NCj4gPiBAQCAt MzgxLDYgKzM4OCw3IEBAIHJ0ZV9scG1fZnJlZV92MTYwNChzdHJ1Y3QgcnRlX2xwbSAqbHBtKQ0K PiA+DQo+ID4gICAJcnRlX21jZmdfdGFpbHFfd3JpdGVfdW5sb2NrKCk7DQo+ID4NCj4gPiArCXJ0 ZV9yaW5nX2ZyZWUobHBtLT5xc19maWZvKTsNCj4gPiAgIAlydGVfZnJlZShscG0tPnRibDgpOw0K PiA+ICAgCXJ0ZV9mcmVlKGxwbS0+cnVsZXNfdGJsKTsNCj4gPiAgIAlydGVfZnJlZShscG0pOw0K PiA+IEBAIC0zOTAsNiArMzk4LDE0NyBAQCBCSU5EX0RFRkFVTFRfU1lNQk9MKHJ0ZV9scG1fZnJl ZSwgX3YxNjA0LA0KPiAxNi4wNCk7DQo+ID4gICBNQVBfU1RBVElDX1NZTUJPTCh2b2lkIHJ0ZV9s cG1fZnJlZShzdHJ1Y3QgcnRlX2xwbSAqbHBtKSwNCj4gPiAgIAkJcnRlX2xwbV9mcmVlX3YxNjA0 KTsNCj4gPg0KPiA+ICsvKiBBZGQgYW4gaXRlbSBpbnRvIEZJRk8uDQo+ID4gKyAqIHJldHVybjog MCAtIHN1Y2Nlc3MNCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQNCj4gPiArX19ydGVfbHBtX3Jj dV9xc2JyX2ZpZm9fcHVzaChzdHJ1Y3QgcnRlX3JpbmcgKmZpZm8sDQo+ID4gKwlzdHJ1Y3QgX19y dGVfbHBtX3FzX2l0ZW0gKml0ZW0pDQo+ID4gK3sNCj4gPiArCWlmIChydGVfcmluZ19mcmVlX2Nv dW50KGZpZm8pIDwgMikgew0KPiA+ICsJCVJURV9MT0coRVJSLCBMUE0sICJRUyBGSUZPIGZ1bGxc biIpOw0KPiA+ICsJCXJ0ZV9lcnJubyA9IEVOT1NQQzsNCj4gPiArCQlyZXR1cm4gMTsNCj4gPiAr CX0NCj4gPiArDQo+ID4gKwkodm9pZClydGVfcmluZ19zcF9lbnF1ZXVlKGZpZm8sICh2b2lkICop KHVpbnRwdHJfdClpdGVtLT50b2tlbik7DQo+ID4gKwkodm9pZClydGVfcmluZ19zcF9lbnF1ZXVl KGZpZm8sICh2b2lkICopKHVpbnRwdHJfdClpdGVtLT5pbmRleCk7DQo+ID4gKw0KPiA+ICsJcmV0 dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qIFJlbW92ZSBpdGVtIGZyb20gRklGTy4NCj4g PiArICogVXNlZCB3aGVuIGRhdGEgb2JzZXJ2ZWQgYnkgcnRlX3JpbmdfcGVlay4NCj4gPiArICov DQo+ID4gK3N0YXRpYyB2b2lkDQo+ID4gK19fcnRlX2xwbV9yY3VfcXNicl9maWZvX3BvcChzdHJ1 Y3QgcnRlX3JpbmcgKmZpZm8sDQo+ID4gKwlzdHJ1Y3QgX19ydGVfbHBtX3FzX2l0ZW0gKml0ZW0p DQo+IElzIGl0IG5lY2Vzc2FyeSB0byBwYXNzIHRoZSBwb2ludGVyIGZvciBzdHJ1Y3QgX19ydGVf bHBtX3FzX2l0ZW0/DQo+IEFjY29yZGluZyB0byBjb2RlIG9ubHkgaXRlbS5pbmRleCBpcyB1c2Vk IGFmdGVyIHRoaXMgY2FsbC4NCj4gPiArew0KPiA+ICsJdm9pZCAqb2JqX3Rva2VuID0gTlVMTDsN Cj4gPiArCXZvaWQgKm9ial9pbmRleCA9IE5VTEw7DQo+ID4gKw0KPiA+ICsJKHZvaWQpcnRlX3Jp bmdfc2NfZGVxdWV1ZShmaWZvLCAmb2JqX3Rva2VuKTsNCj4gSSB0aGluayBpdCBpcyBub3QgbmVj ZXNzYXJ5IHRvIGNhc3QgaGVyZS4NCj4gPiArCSh2b2lkKXJ0ZV9yaW5nX3NjX2RlcXVldWUoZmlm bywgJm9ial9pbmRleCk7DQo+ID4gKw0KPiA+ICsJaWYgKGl0ZW0pIHsNCj4gSSB0aGluayBpdCBp cyByZWR1bmRhbnQsIGl0IGlzIGFsd2F5cyBub3QgTlVMTC4NCj4gPiArCQlpdGVtLT50b2tlbiA9 ICh1aW50NjRfdCkoKHVpbnRwdHJfdClvYmpfdG9rZW4pOw0KPiA+ICsJCWl0ZW0tPmluZGV4ID0g KHVpbnQzMl90KSgodWludHB0cl90KW9ial9pbmRleCk7DQo+ID4gKwl9DQo+ID4gK30NCj4gPiAr DQo+ID4gKy8qIE1heCBudW1iZXIgb2YgdGJsOCBncm91cHMgdG8gcmVjbGFpbSBhdCBvbmUgdGlt ZS4gKi8NCj4gPiArI2RlZmluZSBSQ1VfUVNCUl9SRUNMQUlNX1NJWkUJOA0KPiA+ICsNCj4gPiAr LyogV2hlbiBSQ1UgUVNCUiBGSUZPIHVzYWdlIGlzIGFib3ZlDQo+IDEvKDJeUkNVX1FTQlJfUkVD TEFJTV9MRVZFTCksDQo+ID4gKyAqIHJlY2xhaW0gd2lsbCBiZSB0cmlnZ2VyZWQgYnkgdGJsOF9m cmVlLg0KPiA+ICsgKi8NCj4gPiArI2RlZmluZSBSQ1VfUVNCUl9SRUNMQUlNX0xFVkVMCTMNCj4g PiArDQo+ID4gKy8qIFJlY2xhaW0gc29tZSB0Ymw4IGdyb3VwcyBiYXNlZCBvbiBxdWllc2NlbnQg c3RhdGUgY2hlY2suDQo+ID4gKyAqIFJDVV9RU0JSX1JFQ0xBSU1fU0laRSBncm91cHMgd2lsbCBi ZSByZWNsYWltZWQgYXQgbWF4Lg0KPiA+ICsgKiBQYXJhbXM6IGxwbSAgIC0gbHBtIG9iamVjdCBo YW5kbGUNCj4gPiArICogICAgICAgICBpbmRleCAtIChvbnB1dCkgb25lIG9mIHN1Y2Nlc3NmdWxs eSByZWNsYWltZWQgdGJsOCBncm91cHMNCj4gPiArICogcmV0dXJuOiAwIC0gc3VjY2VzcywgMSAt IG5vIGdyb3VwIHJlY2xhaW1lZC4NCj4gPiArICovDQo+ID4gK3N0YXRpYyB1aW50MzJfdA0KPiA+ ICtfX3J0ZV9scG1fcmN1X3FzYnJfcmVjbGFpbV9jaHVuayhzdHJ1Y3QgcnRlX2xwbSAqbHBtLCB1 aW50MzJfdA0KPiA+ICsqaW5kZXgpIHsNCj4gPiArCXN0cnVjdCBfX3J0ZV9scG1fcXNfaXRlbSBx c19pdGVtOw0KPiA+ICsJc3RydWN0IHJ0ZV9scG1fdGJsX2VudHJ5ICp0Ymw4X2VudHJ5ID0gTlVM TDsNCj4gSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBpbml0IGl0IHdpdGggTlVMTC4NCj4gPiArCXZv aWQgKm9ial90b2tlbjsNCj4gPiArCXVpbnQzMl90IGNudCA9IDA7DQo+ID4gKw0KPiA+ICsJUlRF X0xPRyhERUJVRywgTFBNLCAiUkNVIFFTQlIgcmVjbGFpbWF0aW9uIHRyaWdnZXJlZC5cbiIpOw0K PiA+ICsJLyogQ2hlY2sgcmVhZGVyIHRocmVhZHMgcXVpZXNjZW50IHN0YXRlIGFuZA0KPiA+ICsJ ICogcmVjbGFpbSBhcyBtdWNoIHRibDggZ3JvdXBzIGFzIHBvc3NpYmxlLg0KPiA+ICsJICovDQo+ ID4gKwl3aGlsZSAoKGNudCA8IFJDVV9RU0JSX1JFQ0xBSU1fU0laRSkgJiYNCj4gPiArCQkocnRl X3JpbmdfcGVlayhscG0tPnFzX2ZpZm8sICZvYmpfdG9rZW4pID09IDApICYmDQo+ID4gKwkJKHJ0 ZV9yY3VfcXNicl9jaGVjayhscG0tPnFzdiwNCj4gKHVpbnQ2NF90KSgodWludHB0cl90KW9ial90 b2tlbiksDQo+ID4gKwkJCQkJZmFsc2UpID09IDEpKSB7DQo+ID4gKwkJX19ydGVfbHBtX3JjdV9x c2JyX2ZpZm9fcG9wKGxwbS0+cXNfZmlmbywgJnFzX2l0ZW0pOw0KPiA+ICsNCj4gPiArCQl0Ymw4 X2VudHJ5ID0gJmxwbS0+dGJsOFtxc19pdGVtLmluZGV4ICoNCj4gPiArDQo+IAlSVEVfTFBNX1RC TDhfR1JPVVBfTlVNX0VOVFJJRVNdOw0KPiA+ICsJCW1lbXNldCgmdGJsOF9lbnRyeVswXSwgMCwN Cj4gPiArCQkJCVJURV9MUE1fVEJMOF9HUk9VUF9OVU1fRU5UUklFUyAqDQo+ID4gKwkJCQlzaXpl b2YodGJsOF9lbnRyeVswXSkpOw0KPiA+ICsJCWNudCsrOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiAr CVJURV9MT0coREVCVUcsIExQTSwgIlJDVSBRU0JSIHJlY2xhaW1lZCAldSBncm91cHMuXG4iLCBj bnQpOw0KPiA+ICsJaWYgKGNudCkgew0KPiA+ICsJCWlmIChpbmRleCkNCj4gPiArCQkJKmluZGV4 ID0gcXNfaXRlbS5pbmRleDsNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArCX0NCj4gPiArCXJldHVy biAxOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiBUcmlnZ2VyIHRibDggZ3JvdXAgcmVjbGFpbSB3 aGVuIG5lY2Vzc2FyeS4NCj4gPiArICogUmVjbGFpbSBoYXBwZW5zIHdoZW4gUkNVIFFTQlIgcXVl dWUgdXNhZ2UNCj4gPiArICogaXMgb3ZlciAxLygyXlJDVV9RU0JSX1JFQ0xBSU1fTEVWRUwpLg0K PiA+ICsgKi8NCj4gPiArc3RhdGljIHZvaWQNCj4gPiArX19ydGVfbHBtX3JjdV9xc2JyX3RyeV9y ZWNsYWltKHN0cnVjdCBydGVfbHBtICpscG0pIHsNCj4gPiArCWlmIChscG0tPnFzdiA9PSBOVUxM KQ0KPiA+ICsJCXJldHVybjsNCj4gVGhpcyBjaGVjayBpcyByZWR1bmRhbnQuDQo+ID4gKw0KPiA+ ICsJaWYgKHJ0ZV9yaW5nX2NvdW50KGxwbS0+cXNfZmlmbykgPA0KPiA+ICsJCShydGVfcmluZ19n ZXRfY2FwYWNpdHkobHBtLT5xc19maWZvKSA+Pg0KPiBSQ1VfUVNCUl9SRUNMQUlNX0xFVkVMKSkN Cj4gPiArCQlyZXR1cm47DQo+ID4gKw0KPiA+ICsJKHZvaWQpX19ydGVfbHBtX3JjdV9xc2JyX3Jl Y2xhaW1fY2h1bmsobHBtLCBOVUxMKTsgfQ0KPiA+ICsNCj4gPiArLyogQXNzb2NpYXRlIFFTQlIg dmFyaWFibGUgd2l0aCBhbiBMUE0gb2JqZWN0Lg0KPiA+ICsgKi8NCj4gPiAraW50DQo+ID4gK3J0 ZV9scG1fcmN1X3FzYnJfYWRkKHN0cnVjdCBydGVfbHBtICpscG0sIHN0cnVjdCBydGVfcmN1X3Fz YnIgKnYpIHsNCj4gPiArCXVpbnQzMl90IHFzX2ZpZm9fc2l6ZTsNCj4gPiArCWNoYXIgcmN1X3Jp bmdfbmFtZVtSVEVfUklOR19OQU1FU0laRV07DQo+ID4gKw0KPiA+ICsJaWYgKChscG0gPT0gTlVM TCkgfHwgKHYgPT0gTlVMTCkpIHsNCj4gPiArCQlydGVfZXJybm8gPSBFSU5WQUw7DQo+ID4gKwkJ cmV0dXJuIDE7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKGxwbS0+cXN2KSB7DQo+ID4gKwkJ cnRlX2Vycm5vID0gRUVYSVNUOw0KPiA+ICsJCXJldHVybiAxOw0KPiA+ICsJfQ0KPiA+ICsNCj4g PiArCS8qIHJvdW5kIHVwIHFzX2ZpZm9fc2l6ZSB0byBuZXh0IHBvd2VyIG9mIHR3byB0aGF0IGlz IG5vdCBsZXNzIHRoYW4NCj4gPiArCSAqIG51bWJlcl90Ymw4cy4gV2lsbCBzdG9yZSAndG9rZW4n IGFuZCAnaW5kZXgnLg0KPiA+ICsJICovDQo+ID4gKwlxc19maWZvX3NpemUgPSBydGVfYWxpZ24z MnBvdzIoKDIgKiBscG0tPm51bWJlcl90Ymw4cykgKyAxKTsNCj4gPiArDQo+ID4gKwkvKiBJbml0 IFFTQlIgcmVjbGFpbWluZyBGSUZPLiAqLw0KPiA+ICsJc25wcmludGYocmN1X3JpbmdfbmFtZSwg c2l6ZW9mKHJjdV9yaW5nX25hbWUpLCAiTFBNX1JDVV8lcyIsDQo+IGxwbS0+bmFtZSk7DQo+ID4g KwlscG0tPnFzX2ZpZm8gPSBydGVfcmluZ19jcmVhdGUocmN1X3JpbmdfbmFtZSwgcXNfZmlmb19z aXplLA0KPiA+ICsJCQkJCVNPQ0tFVF9JRF9BTlksIDApOw0KPiA+ICsJaWYgKGxwbS0+cXNfZmlm byA9PSBOVUxMKSB7DQo+ID4gKwkJUlRFX0xPRyhFUlIsIExQTSwgIkxQTSBRUyBGSUZPIG1lbW9y eSBhbGxvY2F0aW9uDQo+IGZhaWxlZFxuIik7DQo+ID4gKwkJcnRlX2Vycm5vID0gRU5PTUVNOw0K PiBydGVfcmluZ19jcmVhdGUoKSBzZXRzIHJ0ZV9lcnJubyBvbiBlcnJvciwgSSBkb24ndCB0aGlu ayB3ZSBuZWVkIHRvIHJld3JpdGUgaXQNCj4gaGVyZS4NCj4gPiArCQlyZXR1cm4gMTsNCj4gPiAr CX0NCj4gPiArCWxwbS0+cXN2ID0gdjsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0K PiA+ICsNCj4gPiAgIC8qDQo+ID4gICAgKiBBZGRzIGEgcnVsZSB0byB0aGUgcnVsZSB0YWJsZS4N Cj4gPiAgICAqDQo+ID4gQEAgLTY0MCw2ICs3ODksMzUgQEAgcnVsZV9maW5kX3YxNjA0KHN0cnVj dCBydGVfbHBtICpscG0sIHVpbnQzMl90DQo+IGlwX21hc2tlZCwgdWludDhfdCBkZXB0aCkNCj4g PiAgIAlyZXR1cm4gLUVJTlZBTDsNCj4gPiAgIH0NCj4gPg0KPiA+ICtzdGF0aWMgaW50MzJfdA0K PiA+ICt0Ymw4X2FsbG9jX3JlY2xhaW1lZChzdHJ1Y3QgcnRlX2xwbSAqbHBtKSB7DQo+ID4gKwlz dHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkgKnRibDhfZW50cnkgPSBOVUxMOw0KPiA+ICsJdWludDMy X3QgaW5kZXg7DQo+ID4gKw0KPiA+ICsJaWYgKGxwbS0+cXN2ICE9IE5VTEwpIHsNCj4gPiArCQlp ZiAoX19ydGVfbHBtX3JjdV9xc2JyX3JlY2xhaW1fY2h1bmsobHBtLCAmaW5kZXgpID09IDApIHsN Cj4gPiArCQkJLyogU2V0IHRoZSBsYXN0IHJlY2xhaW1lZCB0Ymw4IGdyb3VwIGFzIFZBTElELiAq Lw0KPiA+ICsJCQlzdHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkgbmV3X3RibDhfZW50cnkgPSB7DQo+ ID4gKwkJCQkubmV4dF9ob3AgPSAwLA0KPiA+ICsJCQkJLnZhbGlkID0gSU5WQUxJRCwNCj4gPiAr CQkJCS5kZXB0aCA9IDAsDQo+ID4gKwkJCQkudmFsaWRfZ3JvdXAgPSBWQUxJRCwNCj4gPiArCQkJ fTsNCj4gPiArDQo+ID4gKwkJCXRibDhfZW50cnkgPSAmbHBtLT50Ymw4W2luZGV4ICoNCj4gPiAr DQo+IAlSVEVfTFBNX1RCTDhfR1JPVVBfTlVNX0VOVFJJRVNdOw0KPiA+ICsJCQlfX2F0b21pY19z dG9yZSh0Ymw4X2VudHJ5LCAmbmV3X3RibDhfZW50cnksDQo+ID4gKwkJCQkJX19BVE9NSUNfUkVM QVhFRCk7DQo+ID4gKw0KPiA+ICsJCQkvKiBSZXR1cm4gZ3JvdXAgaW5kZXggZm9yIHJlY2xhaW1l ZCB0Ymw4IGdyb3VwLiAqLw0KPiA+ICsJCQlyZXR1cm4gaW5kZXg7DQo+ID4gKwkJfQ0KPiA+ICsJ fQ0KPiA+ICsNCj4gPiArCXJldHVybiAtRU5PU1BDOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAgLyoN Cj4gPiAgICAqIEZpbmQsIGNsZWFuIGFuZCBhbGxvY2F0ZSBhIHRibDguDQo+ID4gICAgKi8NCj4g PiBAQCAtNjc5LDE0ICs4NTcsMTUgQEAgdGJsOF9hbGxvY192MjAoc3RydWN0IHJ0ZV9scG1fdGJs X2VudHJ5X3YyMA0KPiAqdGJsOCkNCj4gPiAgIH0NCj4gPg0KPiA+ICAgc3RhdGljIGludDMyX3QN Cj4gPiAtdGJsOF9hbGxvY192MTYwNChzdHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkgKnRibDgsIHVp bnQzMl90DQo+ID4gbnVtYmVyX3RibDhzKQ0KPiA+ICt0Ymw4X2FsbG9jX3YxNjA0KHN0cnVjdCBy dGVfbHBtICpscG0pDQo+ID4gICB7DQo+ID4gICAJdWludDMyX3QgZ3JvdXBfaWR4OyAvKiB0Ymw4 IGdyb3VwIGluZGV4LiAqLw0KPiA+ICAgCXN0cnVjdCBydGVfbHBtX3RibF9lbnRyeSAqdGJsOF9l bnRyeTsNCj4gPg0KPiA+ICAgCS8qIFNjYW4gdGhyb3VnaCB0Ymw4IHRvIGZpbmQgYSBmcmVlIChp LmUuIElOVkFMSUQpIHRibDggZ3JvdXAuICovDQo+ID4gLQlmb3IgKGdyb3VwX2lkeCA9IDA7IGdy b3VwX2lkeCA8IG51bWJlcl90Ymw4czsgZ3JvdXBfaWR4KyspIHsNCj4gPiAtCQl0Ymw4X2VudHJ5 ID0gJnRibDhbZ3JvdXBfaWR4ICoNCj4gUlRFX0xQTV9UQkw4X0dST1VQX05VTV9FTlRSSUVTXTsN Cj4gPiArCWZvciAoZ3JvdXBfaWR4ID0gMDsgZ3JvdXBfaWR4IDwgbHBtLT5udW1iZXJfdGJsOHM7 IGdyb3VwX2lkeCsrKSB7DQo+ID4gKwkJdGJsOF9lbnRyeSA9ICZscG0tPnRibDhbZ3JvdXBfaWR4 ICoNCj4gPiArDQo+IAlSVEVfTFBNX1RCTDhfR1JPVVBfTlVNX0VOVFJJRVNdOw0KPiA+ICAgCQkv KiBJZiBhIGZyZWUgdGJsOCBncm91cCBpcyBmb3VuZCBjbGVhbiBpdCBhbmQgc2V0IGFzIFZBTElE LiAqLw0KPiA+ICAgCQlpZiAoIXRibDhfZW50cnktPnZhbGlkX2dyb3VwKSB7DQo+ID4gICAJCQlz dHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkgbmV3X3RibDhfZW50cnkgPSB7IEBAIC0NCj4gNzA4LDgg Kzg4Nyw4IEBADQo+ID4gdGJsOF9hbGxvY192MTYwNChzdHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkg KnRibDgsIHVpbnQzMl90IG51bWJlcl90Ymw4cykNCj4gPiAgIAkJfQ0KPiA+ICAgCX0NCj4gPg0K PiA+IC0JLyogSWYgdGhlcmUgYXJlIG5vIHRibDggZ3JvdXBzIGZyZWUgdGhlbiByZXR1cm4gZXJy b3IuICovDQo+ID4gLQlyZXR1cm4gLUVOT1NQQzsNCj4gPiArCS8qIElmIHRoZXJlIGFyZSBubyB0 Ymw4IGdyb3VwcyBmcmVlIHRoZW4gY2hlY2sgcmVjbGFpbSBxdWV1ZS4gKi8NCj4gPiArCXJldHVy biB0Ymw4X2FsbG9jX3JlY2xhaW1lZChscG0pOw0KPiA+ICAgfQ0KPiA+DQo+ID4gICBzdGF0aWMg dm9pZA0KPiA+IEBAIC03MjgsMTMgKzkwNywzMSBAQCB0Ymw4X2ZyZWVfdjIwKHN0cnVjdCBydGVf bHBtX3RibF9lbnRyeV92MjANCj4gKnRibDgsIHVpbnQzMl90IHRibDhfZ3JvdXBfc3RhcnQpDQo+ ID4gICB9DQo+ID4NCj4gPiAgIHN0YXRpYyB2b2lkDQo+ID4gLXRibDhfZnJlZV92MTYwNChzdHJ1 Y3QgcnRlX2xwbV90YmxfZW50cnkgKnRibDgsIHVpbnQzMl90DQo+ID4gdGJsOF9ncm91cF9zdGFy dCkNCj4gPiArdGJsOF9mcmVlX3YxNjA0KHN0cnVjdCBydGVfbHBtICpscG0sIHVpbnQzMl90IHRi bDhfZ3JvdXBfc3RhcnQpDQo+ID4gICB7DQo+ID4gLQkvKiBTZXQgdGJsOCBncm91cCBpbnZhbGlk Ki8NCj4gPiArCXN0cnVjdCBfX3J0ZV9scG1fcXNfaXRlbSBxc19pdGVtOw0KPiA+ICAgCXN0cnVj dCBydGVfbHBtX3RibF9lbnRyeSB6ZXJvX3RibDhfZW50cnkgPSB7MH07DQo+ID4NCj4gPiAtCV9f YXRvbWljX3N0b3JlKCZ0Ymw4W3RibDhfZ3JvdXBfc3RhcnRdLCAmemVyb190Ymw4X2VudHJ5LA0K PiA+IC0JCQlfX0FUT01JQ19SRUxBWEVEKTsNCj4gPiArCWlmIChscG0tPnFzdiAhPSBOVUxMKSB7 DQo+ID4gKwkJLyogUHVzaCBpbnRvIFFTQlIgRklGTy4gKi8NCj4gPiArCQlxc19pdGVtLnRva2Vu ID0gcnRlX3JjdV9xc2JyX3N0YXJ0KGxwbS0+cXN2KTsNCj4gPiArCQlxc19pdGVtLmluZGV4ID0N Cj4gPiArCQkJdGJsOF9ncm91cF9zdGFydCAvDQo+IFJURV9MUE1fVEJMOF9HUk9VUF9OVU1fRU5U UklFUzsNCj4gPiArCQlpZiAoX19ydGVfbHBtX3JjdV9xc2JyX2ZpZm9fcHVzaChscG0tPnFzX2Zp Zm8sDQo+ICZxc19pdGVtKSAhPSAwKQ0KPiA+ICsJCQkvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBw ZW4gYXMgRklGTyBzaXplIGlzIGJpZw0KPiBlbm91Z2gNCj4gPiArCQkJICogdG8gaG9sZCBhbGwg dGJsOCBncm91cHMuDQo+ID4gKwkJCSAqLw0KPiA+ICsJCQlSVEVfTE9HKEVSUiwgTFBNLCAiRmFp bGVkIHRvIHB1c2ggUVNCUiBGSUZPXG4iKTsNCj4gPiArDQo+ID4gKwkJLyogU3BlY3VsYXRpdmVs eSByZWNsYWltIHRibDggZ3JvdXBzLg0KPiA+ICsJCSAqIEhlbHAgc3ByZWFkIHRoZSByZWNsYWlt IHdvcmsgbG9hZCBhY3Jvc3MgbXVsdGlwbGUgY2FsbHMuDQo+ID4gKwkJICovDQo+ID4gKwkJX19y dGVfbHBtX3JjdV9xc2JyX3RyeV9yZWNsYWltKGxwbSk7DQo+ID4gKwl9IGVsc2Ugew0KPiA+ICsJ CS8qIFNldCB0Ymw4IGdyb3VwIGludmFsaWQqLw0KPiA+ICsJCV9fYXRvbWljX3N0b3JlKCZscG0t PnRibDhbdGJsOF9ncm91cF9zdGFydF0sDQo+ICZ6ZXJvX3RibDhfZW50cnksDQo+ID4gKwkJCQlf X0FUT01JQ19SRUxBWEVEKTsNCj4gPiArCX0NCj4gPiAgIH0NCj4gPg0KPiA+ICAgc3RhdGljIF9f cnRlX25vaW5saW5lIGludDMyX3QNCj4gPiBAQCAtMTAzNyw3ICsxMjM0LDcgQEAgYWRkX2RlcHRo X2JpZ192MTYwNChzdHJ1Y3QgcnRlX2xwbSAqbHBtLA0KPiA+IHVpbnQzMl90IGlwX21hc2tlZCwg dWludDhfdCBkZXB0aCwNCj4gPg0KPiA+ICAgCWlmICghbHBtLT50YmwyNFt0YmwyNF9pbmRleF0u dmFsaWQpIHsNCj4gPiAgIAkJLyogU2VhcmNoIGZvciBhIGZyZWUgdGJsOCBncm91cC4gKi8NCj4g PiAtCQl0Ymw4X2dyb3VwX2luZGV4ID0gdGJsOF9hbGxvY192MTYwNChscG0tPnRibDgsIGxwbS0N Cj4gPm51bWJlcl90Ymw4cyk7DQo+ID4gKwkJdGJsOF9ncm91cF9pbmRleCA9IHRibDhfYWxsb2Nf djE2MDQobHBtKTsNCj4gPg0KPiA+ICAgCQkvKiBDaGVjayB0Ymw4IGFsbG9jYXRpb24gd2FzIHN1 Y2Nlc3NmdWwuICovDQo+ID4gICAJCWlmICh0Ymw4X2dyb3VwX2luZGV4IDwgMCkgew0KPiA+IEBA IC0xMDgzLDcgKzEyODAsNyBAQCBhZGRfZGVwdGhfYmlnX3YxNjA0KHN0cnVjdCBydGVfbHBtICps cG0sDQo+IHVpbnQzMl90IGlwX21hc2tlZCwgdWludDhfdCBkZXB0aCwNCj4gPiAgIAl9IC8qIElm IHZhbGlkIGVudHJ5IGJ1dCBub3QgZXh0ZW5kZWQgY2FsY3VsYXRlIHRoZSBpbmRleCBpbnRvIFRh YmxlOC4gKi8NCj4gPiAgIAllbHNlIGlmIChscG0tPnRibDI0W3RibDI0X2luZGV4XS52YWxpZF9n cm91cCA9PSAwKSB7DQo+ID4gICAJCS8qIFNlYXJjaCBmb3IgZnJlZSB0Ymw4IGdyb3VwLiAqLw0K PiA+IC0JCXRibDhfZ3JvdXBfaW5kZXggPSB0Ymw4X2FsbG9jX3YxNjA0KGxwbS0+dGJsOCwgbHBt LQ0KPiA+bnVtYmVyX3RibDhzKTsNCj4gPiArCQl0Ymw4X2dyb3VwX2luZGV4ID0gdGJsOF9hbGxv Y192MTYwNChscG0pOw0KPiA+DQo+ID4gICAJCWlmICh0Ymw4X2dyb3VwX2luZGV4IDwgMCkgew0K PiA+ICAgCQkJcmV0dXJuIHRibDhfZ3JvdXBfaW5kZXg7DQo+ID4gQEAgLTE4MTgsNyArMjAxNSw3 IEBAIGRlbGV0ZV9kZXB0aF9iaWdfdjE2MDQoc3RydWN0IHJ0ZV9scG0gKmxwbSwNCj4gdWludDMy X3QgaXBfbWFza2VkLA0KPiA+ICAgCQkgKi8NCj4gPiAgIAkJbHBtLT50YmwyNFt0YmwyNF9pbmRl eF0udmFsaWQgPSAwOw0KPiA+ICAgCQlfX2F0b21pY190aHJlYWRfZmVuY2UoX19BVE9NSUNfUkVM RUFTRSk7DQo+ID4gLQkJdGJsOF9mcmVlX3YxNjA0KGxwbS0+dGJsOCwgdGJsOF9ncm91cF9zdGFy dCk7DQo+ID4gKwkJdGJsOF9mcmVlX3YxNjA0KGxwbSwgdGJsOF9ncm91cF9zdGFydCk7DQo+ID4g ICAJfSBlbHNlIGlmICh0Ymw4X3JlY3ljbGVfaW5kZXggPiAtMSkgew0KPiA+ICAgCQkvKiBVcGRh dGUgdGJsMjQgZW50cnkuICovDQo+ID4gICAJCXN0cnVjdCBydGVfbHBtX3RibF9lbnRyeSBuZXdf dGJsMjRfZW50cnkgPSB7IEBAIC0xODM0LDcNCj4gKzIwMzEsNyBAQA0KPiA+IGRlbGV0ZV9kZXB0 aF9iaWdfdjE2MDQoc3RydWN0IHJ0ZV9scG0gKmxwbSwgdWludDMyX3QgaXBfbWFza2VkLA0KPiA+ ICAgCQlfX2F0b21pY19zdG9yZSgmbHBtLT50YmwyNFt0YmwyNF9pbmRleF0sDQo+ICZuZXdfdGJs MjRfZW50cnksDQo+ID4gICAJCQkJX19BVE9NSUNfUkVMQVhFRCk7DQo+ID4gICAJCV9fYXRvbWlj X3RocmVhZF9mZW5jZShfX0FUT01JQ19SRUxFQVNFKTsNCj4gPiAtCQl0Ymw4X2ZyZWVfdjE2MDQo bHBtLT50Ymw4LCB0Ymw4X2dyb3VwX3N0YXJ0KTsNCj4gPiArCQl0Ymw4X2ZyZWVfdjE2MDQobHBt LCB0Ymw4X2dyb3VwX3N0YXJ0KTsNCj4gPiAgIAl9DQo+ID4gICAjdW5kZWYgZ3JvdXBfaWR4DQo+ ID4gICAJcmV0dXJuIDA7DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfbHBtL3J0ZV9scG0u aCBiL2xpYi9saWJydGVfbHBtL3J0ZV9scG0uaCBpbmRleA0KPiA+IDkwNmVjNDQ4My4uNTA3OWZi MjYyIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9saWJydGVfbHBtL3J0ZV9scG0uaA0KPiA+ICsrKyBi L2xpYi9saWJydGVfbHBtL3J0ZV9scG0uaA0KPiA+IEBAIC0xLDUgKzEsNiBAQA0KPiA+ICAgLyog U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiA+ICAgICogQ29weXJpZ2h0 KGMpIDIwMTAtMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbg0KPiA+ICsgKiBDb3B5cmlnaHQoYykgMjAx OSBBcm0gTGltaXRlZA0KPiA+ICAgICovDQo+ID4NCj4gPiAgICNpZm5kZWYgX1JURV9MUE1fSF8N Cj4gPiBAQCAtMjEsNiArMjIsNyBAQA0KPiA+ICAgI2luY2x1ZGUgPHJ0ZV9jb21tb24uaD4NCj4g PiAgICNpbmNsdWRlIDxydGVfdmVjdC5oPg0KPiA+ICAgI2luY2x1ZGUgPHJ0ZV9jb21wYXQuaD4N Cj4gPiArI2luY2x1ZGUgPHJ0ZV9yY3VfcXNici5oPg0KPiA+DQo+ID4gICAjaWZkZWYgX19jcGx1 c3BsdXMNCj4gPiAgIGV4dGVybiAiQyIgew0KPiA+IEBAIC0xODYsNiArMTg4LDggQEAgc3RydWN0 IHJ0ZV9scG0gew0KPiA+ICAgCQkJX19ydGVfY2FjaGVfYWxpZ25lZDsgLyoqPCBMUE0gdGJsMjQg dGFibGUuICovDQo+ID4gICAJc3RydWN0IHJ0ZV9scG1fdGJsX2VudHJ5ICp0Ymw4OyAvKio8IExQ TSB0Ymw4IHRhYmxlLiAqLw0KPiA+ICAgCXN0cnVjdCBydGVfbHBtX3J1bGUgKnJ1bGVzX3RibDsg LyoqPCBMUE0gcnVsZXMuICovDQo+ID4gKwlzdHJ1Y3QgcnRlX3JjdV9xc2JyICpxc3Y7CS8qKjwg UkNVIFFTQlIgdmFyaWFibGUgZm9yIHRibDgNCj4gZ3JvdXAuKi8NCj4gPiArCXN0cnVjdCBydGVf cmluZyAqcXNfZmlmbzsJLyoqPCBSQ1UgUVNCUiByZWNsYWltaW5nIHF1ZXVlLiAqLw0KPiA+ICAg fTsNCj4gPg0KPiA+ICAgLyoqDQo+ID4gQEAgLTI0OCw2ICsyNTIsMjQgQEAgcnRlX2xwbV9mcmVl X3YyMChzdHJ1Y3QgcnRlX2xwbV92MjAgKmxwbSk7DQo+ID4gICB2b2lkDQo+ID4gICBydGVfbHBt X2ZyZWVfdjE2MDQoc3RydWN0IHJ0ZV9scG0gKmxwbSk7DQo+ID4NCj4gPiArLyoqDQo+ID4gKyAq IEFzc29jaWF0ZSBSQ1UgUVNCUiB2YXJpYWJsZSB3aXRoIGFuIExQTSBvYmplY3QuDQo+ID4gKyAq DQo+ID4gKyAqIEBwYXJhbSBscG0NCj4gPiArICogICB0aGUgbHBtIG9iamVjdCB0byBhZGQgUkNV IFFTQlINCj4gPiArICogQHBhcmFtIHYNCj4gPiArICogICBSQ1UgUVNCUiB2YXJpYWJsZQ0KPiA+ ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAgT24gc3VjY2VzcyAtIDANCj4gPiArICogICBPbiBlcnJv ciAtIDEgd2l0aCBlcnJvciBjb2RlIHNldCBpbiBydGVfZXJybm8uDQo+ID4gKyAqICAgUG9zc2li bGUgcnRlX2Vycm5vIGNvZGVzIGFyZToNCj4gPiArICogICAtIEVJTlZBTCAtIGludmFsaWQgcG9p bnRlcg0KPiA+ICsgKiAgIC0gRUVYSVNUIC0gYWxyZWFkeSBhZGRlZCBRU0JSDQo+ID4gKyAqICAg LSBFTk9NRU0gLSBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlDQo+ID4gKyAqLw0KPiA+ICtfX3J0 ZV9leHBlcmltZW50YWwNCj4gPiAraW50IHJ0ZV9scG1fcmN1X3FzYnJfYWRkKHN0cnVjdCBydGVf bHBtICpscG0sIHN0cnVjdCBydGVfcmN1X3FzYnINCj4gPiArKnYpOw0KPiA+ICsNCj4gPiAgIC8q Kg0KPiA+ICAgICogQWRkIGEgcnVsZSB0byB0aGUgTFBNIHRhYmxlLg0KPiA+ICAgICoNCj4gPiBk aWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9scG0vcnRlX2xwbV92ZXJzaW9uLm1hcA0KPiA+IGIvbGli L2xpYnJ0ZV9scG0vcnRlX2xwbV92ZXJzaW9uLm1hcA0KPiA+IGluZGV4IDkwYmVhYzg1My4uYjM1 M2FhYmQyIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9saWJydGVfbHBtL3J0ZV9scG1fdmVyc2lvbi5t YXANCj4gPiArKysgYi9saWIvbGlicnRlX2xwbS9ydGVfbHBtX3ZlcnNpb24ubWFwDQo+ID4gQEAg LTQ0LDMgKzQ0LDkgQEAgRFBES18xNy4wNSB7DQo+ID4gICAJcnRlX2xwbTZfbG9va3VwX2J1bGtf ZnVuYzsNCj4gPg0KPiA+ICAgfSBEUERLXzE2LjA0Ow0KPiA+ICsNCj4gPiArRVhQRVJJTUVOVEFM IHsNCj4gPiArCWdsb2JhbDoNCj4gPiArDQo+ID4gKwlydGVfbHBtX3JjdV9xc2JyX2FkZDsNCj4g PiArfTsNCj4gPiBkaWZmIC0tZ2l0IGEvbGliL21lc29uLmJ1aWxkIGIvbGliL21lc29uLmJ1aWxk IGluZGV4DQo+ID4gZTVmZjgzODkzLi4zYTk2ZjAwNWQgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL21l c29uLmJ1aWxkDQo+ID4gKysrIGIvbGliL21lc29uLmJ1aWxkDQo+ID4gQEAgLTExLDYgKzExLDcg QEANCj4gPiAgIGxpYnJhcmllcyA9IFsNCj4gPiAgIAkna3ZhcmdzJywgIyBlYWwgZGVwZW5kcyBv biBrdmFyZ3MNCj4gPiAgIAknZWFsJywgIyBldmVyeXRoaW5nIGRlcGVuZHMgb24gZWFsDQo+ID4g KwkncmN1JywgIyBoYXNoIGFuZCBscG0gZGVwZW5kcyBvbiB0aGlzDQo+ID4gICAJJ3JpbmcnLCAn bWVtcG9vbCcsICdtYnVmJywgJ25ldCcsICdtZXRlcicsICdldGhkZXYnLCAncGNpJywgIyBjb3Jl DQo+ID4gICAJJ2NtZGxpbmUnLA0KPiA+ICAgCSdtZXRyaWNzJywgIyBiaXRyYXRlL2xhdGVuY3kg c3RhdHMgZGVwZW5kcyBvbiB0aGlzIEBAIC0yMiw3ICsyMyw3DQo+ID4gQEAgbGlicmFyaWVzID0g Ww0KPiA+ICAgCSdncm8nLCAnZ3NvJywgJ2lwX2ZyYWcnLCAnam9ic3RhdHMnLA0KPiA+ICAgCSdr bmknLCAnbGF0ZW5jeXN0YXRzJywgJ2xwbScsICdtZW1iZXInLA0KPiA+ICAgCSdwb3dlcicsICdw ZHVtcCcsICdyYXdkZXYnLA0KPiA+IC0JJ3JjdScsICdyZW9yZGVyJywgJ3NjaGVkJywgJ3NlY3Vy aXR5JywgJ3N0YWNrJywgJ3Zob3N0JywNCj4gPiArCSdyZW9yZGVyJywgJ3NjaGVkJywgJ3NlY3Vy aXR5JywgJ3N0YWNrJywgJ3Zob3N0JywNCj4gPiAgIAkjIGlwc2VjIGxpYiBkZXBlbmRzIG9uIG5l dCwgY3J5cHRvIGFuZCBzZWN1cml0eQ0KPiA+ICAgCSdpcHNlYycsDQo+ID4gICAJIyBhZGQgcGt0 IGZyYW1ld29yayBsaWJzIHdoaWNoIHVzZSBvdGhlciBsaWJzIGZyb20gYWJvdmUNCj4gDQo+IC0t DQo+IFJlZ2FyZHMsDQo+IFZsYWRpbWlyDQoNCg==