From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id DAA3AA00C2; Mon, 15 Aug 2022 14:01:47 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CC7AB40146; Mon, 15 Aug 2022 14:01:47 +0200 (CEST) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2046.outbound.protection.outlook.com [40.107.94.46]) by mails.dpdk.org (Postfix) with ESMTP id 61B1840143 for ; Mon, 15 Aug 2022 14:01:46 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IjcuowJhEe0ySZR7ZV6891toaYwUTonytBtMlU6jF4/6zMPTcSQ9v2SZ1DoDRt7w5fjl66sLcWc7PvhQRoeBY/kqHEqExNIKdiSyG+pZWC72YnjITII5KqLRZf8ZaCEsrOPh0WOEWDypxtYjneAp1OGkCynsCaCjtv5hD0DETmoEZXhuVCgG+4ugL7d/ijTcMh8fw6cKCQk3nBxPPo5/5XfFYAyZQeknkXokQoDivUzewsPlyZurHwgGtSJZU/jts4bXMlIjEqlHmM8mhX6B1eN8Yzu/S+JVCLnIUf+wTgfEJi9TVthWD+fU3umdpbkvwH+ipXQnnWYlfVD1ZYDmuA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Gfo7N/dKH92EYbOSnt6j7hup7lphg4bpvU8Pz7RbFBM=; b=NTzMR0glgyXRALWtcBNA2ntsZjlF62LaVKnrHp4UsM8sHwUdiM3/TXzeafWDY2R1ZrEUsEjkeHeSiCCBgWfff7UrKZeVZDPNbo/E5wnfZgA/KXpYWOiKbDF3NivKJoaewK0/jnmzgXsSoE60k7U+RkdCjcYEgFQNSG+Rl9MukDsOL/G+PD649KihMjboVvao52jiPrs2hu5dGGiZC2tSw+IGC1GCBKcsLIudTEo/ssmvTuS0qQB/weSyhrbxPMpd9eSSzP9bldMPcdXZj1cjwuOzma8tvSqyfb4eg6S6TmdGv9ApH2IQqxms6bTlDwdgB2IhFFygZhe1V/8OFvdk5w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Gfo7N/dKH92EYbOSnt6j7hup7lphg4bpvU8Pz7RbFBM=; b=U9ZL6oVN8DaHbyF2Ivlxy1SqCmrodT0LnkY+TZeDAdtpfw1I4uB5uOJNoKjSoa+RHL2W6/7rCT++AwYoYnZETgy3OCn69jL+SwHZnQBh6qg0RHQoD5hmCmt896aj1d2HFPUFJIDfMPKzWG6Qelh3Pjz6ZuNHksBAaVwbjJMAFWYjHMHLXw7aMmNq2ZqMtpQtcKi9CXdmsoKJ+JXlEvrCayh1Di2N61UoIagnzHJFfu7f6B1GUZ4e1OcceI676BhaZF5zLlO8nVs3XvRnBK2D+bWDtGK/HfTf/GWmfjm2+ZKrq7c4h7Fo+zycu7faG83ovbz9z/SVtLK2nXd6q2dl6g== Received: from MW2PR12MB4666.namprd12.prod.outlook.com (2603:10b6:302:13::22) by DM5PR12MB1420.namprd12.prod.outlook.com (2603:10b6:3:78::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.19; Mon, 15 Aug 2022 12:01:43 +0000 Received: from MW2PR12MB4666.namprd12.prod.outlook.com ([fe80::bcf9:1e79:b7a3:7708]) by MW2PR12MB4666.namprd12.prod.outlook.com ([fe80::bcf9:1e79:b7a3:7708%5]) with mapi id 15.20.5525.011; Mon, 15 Aug 2022 12:01:43 +0000 From: Ori Kam To: Suanming Mou , Xiaoyun Li , Aman Singh , Yuying Zhang , "NBU-Contact-Thomas Monjalon (EXTERNAL)" , Ferruh Yigit , Andrew Rybchenko , Ray Kinsella CC: "dev@dpdk.org" Subject: RE: [RFC] ethdev: add indirect action async query Thread-Topic: [RFC] ethdev: add indirect action async query Thread-Index: AQHYq/P2CHOhaR9fE0aAyzYpCus+1a2v5Y2Q Date: Mon, 15 Aug 2022 12:01:43 +0000 Message-ID: References: <20220809132824.25890-1-suanmingm@nvidia.com> In-Reply-To: <20220809132824.25890-1-suanmingm@nvidia.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 33d69d8b-bded-414a-fc83-08da7eb5ebc0 x-ms-traffictypediagnostic: DM5PR12MB1420:EE_ x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: kjWqtIiOE7J8Fr5dYGy6jNFpE3S0f8eJTkUOHYk6UuVhX0kJdKlQd2TGH15fJB9hwkkOzsGLGA7AoCWXq+f8M7k1hdiq+ED1EPz5ylR4kFbYzCFcGbzE7p1Iy4yP9w7JFdVCMB0JeIW+R5cR79RFI2LUqBwhnlej0m4nuDgDlgbSfUt0CNfHkiLDJ7Qv2sVKRY/YdXSvY9xQeRDqvDpjIasfqP4whtAZNPE3JQG0A0ga/qIKPssy2cnfNdH4XDhvZQFwVD5Q9t3mMxtrd1eqr7IjfIVEbD7z/fOIa3xsJZ1sMgCdw6ybeeU/GjGC4sh++p0uVkPAoCrCwvWUYumk8LtRrS+7JIfq4aCjmyVZNmddn1ntgCl+eUrJcC8GcGbCZGrvGjBPoohAOk5FrdhiuhDMl6J6CnFUw5O6QzDJ/i7zJS6ip8SSgZ2EVpZiwvnzX2k+zBNjoq5WJHXEZjxAEcgke3jyKs8CSOOxmqYT68bQ4dw8VIAwfDbHh0R3IoKhz8a0EUKsrecF/clTW6urDkycHyf7h41ZT0a/v0z8iIo49WNEP8bNqHsQYTn7SrhYhg2z787h98orjmUgdlwWEu5+q87JW2Igjoy8seaivpHLpTEXkxikh9fmG7G1urtCcrCUB5mwMMpjdBbQzl8uuwZ4Sg9LDjOk68ncV0+Zp7ssJATsL3LOA600H89TEraKEO/5lt43aPmyeNikOhIWZ8j+TC99LINxGsem2SpKYjd1Y+Fe61gEXqgoQ8uatUIpVehFXxCfd5kl0fJgbzPVJgH6e+YP7c+Kev3uBwanXHP91hP+uhk0njiRh6A5Lw+g x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MW2PR12MB4666.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(366004)(136003)(376002)(396003)(346002)(39860400002)(2906002)(76116006)(30864003)(66946007)(4326008)(8676002)(64756008)(66446008)(66476007)(66556008)(33656002)(316002)(478600001)(71200400001)(110136005)(9686003)(52536014)(53546011)(26005)(6506007)(122000001)(38100700002)(7696005)(41300700001)(5660300002)(83380400001)(186003)(55016003)(8936002)(38070700005)(86362001)(579004)(559001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cHB1VS8vMlZYTFBJUFpnMFZjYUMyOHNqNDNYc0FYMVRCbkZwYzhvbUN5bjFV?= =?utf-8?B?TGQrQXJJZWRETzgveWJjNnp0TE1HWHZvbzM1Rjl3SjAvaGVid2Fka1lKYjFw?= =?utf-8?B?R3RhcGQ0cWtpVHU5enNkTVJ0Q01YdVU2NzQ1YkpHNXRCTk9oY0VaQU5LMStz?= =?utf-8?B?RThCbm1iajFLaFlvRXY0cDh6WXB6ZUpXSXdhWHhyZWY0Q2RDWHZpQVJXOG5j?= =?utf-8?B?cFdmWm1lMlFaWHplZzZpekI5VDBVVmVpb1RmNkNrMzFtMFhuTTRwQWU1cXBn?= =?utf-8?B?bGxBOXNvRVR0cERTZFZLU0s3LzZvRVB0TFRCY1N1T0p5ZDFGUzU5QkJUN2Fv?= =?utf-8?B?MUlGWUtOTDBMVHd5Z01JNnEvQUVHTVFVb2RVTjhtd1Z3NHFuWXdST3BXRUZa?= =?utf-8?B?WXBJYVQ0cnRPSHZSWUU0M0d4YU9vVzZSbXJGZStydTcvUThVNlMydmY1UGNS?= =?utf-8?B?OWlySHVqN3FJMGhieVpUYVk3UWdyNlZJTlh0d1FnQXZHOFFWRHJhZHo4dDJI?= =?utf-8?B?S0dBdkg1bzI4eU9Jb2VpVGRYUGt1K2l4ZXgvdHRJNFlyZ1ZucFJ3aXFidStH?= =?utf-8?B?VUdPWkhpWThrUStFOVVldWkyM0FaZ0E2WGVGSTBEcEhTM1hWeTZPVEp3QUh1?= =?utf-8?B?QmVhQk1nbm9OKytYZW8vT2phMmxsUEhKaGFvbXUzeG5GL2hEQ2s3bkVOTmdO?= =?utf-8?B?Q0ZvTEhhZmZCSUhINEF5cndTRXZrQ1M2bmUxUU00Q09kdVE5VHd4YzJQTVFl?= =?utf-8?B?UUlOd2xrZDFzRC8rTytvQzUweUo0c3lJREMvcXBnWW83bko3VU1OSG9ybzJ1?= =?utf-8?B?c2hVcC85a21aRzhLK1NwMmpZczZrem8wK1hTdlZyUUU3NVNXam9wS3VvOUNr?= =?utf-8?B?WVpnZ0tveVFnL094MDZ6WktkS3JMVUozTmRUMlgyblpXMXhNaFp1NzhhSFY0?= =?utf-8?B?TXhOaGZyRUsvdG9sTTNXNkJ3T1FIT1ZHUFpkcUhlejRqUURTbnlPaG50aGlP?= =?utf-8?B?TnhxOEVEOXZBSDR0MExLVWt1MUhoYjFHTTBqWFM4QnE2YWQ2Y0FCckwwOHBk?= =?utf-8?B?OTh3RnRMSTBYMW5qMkFVa0xuZVQzR2trc0N2VGtNK1k3ckpmdW90aUJPZ1dt?= =?utf-8?B?NTZmSHUveGN0Rmw0aXF1NExUNUlxcHpzNDloWHZIcmxVRG10czJ5U3ZEN2JU?= =?utf-8?B?RmF1ZEp0Q2ROcjNzQk44UE5nT2N4QldlQ0hHUkJXb3YrNy8wU1NpZFNjNmlh?= =?utf-8?B?SlJtVVFtR2c4WkdLSFBMWThLbmdScndpZWNVK3dzNTlXSHZOK01YYldVZ0px?= =?utf-8?B?UGJlQm84L2FOM2F3VU55dk5heE13VVk3WnNUWWZndTljQ3ZQT3VlQ2xmblhR?= =?utf-8?B?S2l4ekgyU0gxaTNmY1NTZ1lncnN2bE92ZmdBQ2xaUWdMTzg2R2tjaGdrS0lH?= =?utf-8?B?SUNBQllIZ0xwR1dERElDdmJhNnhLZFliWFhwWkV5VGhxV0xXYjB5cGNZSDJV?= =?utf-8?B?OGRWUDlzeGZ2Um1sSW9MR295NUFzSmdvMzhLVXJKbFdyV1RYQkZEUUlwbDlL?= =?utf-8?B?ZHRmTThUaVhxaldmaldJZWVNTTdabmc4cVdvcG53TU4rWFVJV0hSQ0YzV2l0?= =?utf-8?B?NFpRWk42eWlaV3p1RVRraTliNHpjSjN2VmJUZkZ1ZnRFeWF0eXlHb1ltYUFR?= =?utf-8?B?aFIzbEt5VXRiK1dXTkZMUDRqZERXaGxGR3EwclByR0l2QjVnaVQ0YjdoaHA2?= =?utf-8?B?MUlHYjYzaGZYQjRoZTZ3NktPdEFSdzh3a0V5M3g3Vy9INmdvSXd0UGJRNTAw?= =?utf-8?B?cWZ2UUNsV1o3U1BsNlE0RTg1MkxqTWFGVzB1ZWpIZHNQaytZS1BxM1JpeGJq?= =?utf-8?B?ZWxaY2k1SnFzci9MaG1rMUhlOHNwRmZiam15b2QvR1NzSXo5UDdESnQ1WGVJ?= =?utf-8?B?UU5CR216TDE0YVR4YVBJbFVZU2dlTU1rYlUzb2RPMzJkckQ1c0VIWGZqclU3?= =?utf-8?B?MFpFL09raHgxZit0VFpUcW1uTm5GRDF1cmpFM1YrSlRQcXVEakhjOXEyc1dR?= =?utf-8?B?djhyRDZXcTIvUEVZM0g4TjQvUDZpM1pEQ1lUNEhiZmVhblNjaEtkRHpQWjBj?= =?utf-8?Q?Fd5s=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW2PR12MB4666.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 33d69d8b-bded-414a-fc83-08da7eb5ebc0 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Aug 2022 12:01:43.5195 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: r3Kw/d+kCIvR4VnHm47vmobxqXNruuGrj/wwxKwot1/xouI14Wopm6LkB3CyPENBmgj/tlkcXTmgYxgWJXm1jg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1420 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogU3Vhbm1pbmcgTW91IDxz dWFubWluZ21AbnZpZGlhLmNvbT4NCj4gU2VudDogVHVlc2RheSwgOSBBdWd1c3QgMjAyMiAxNjoy OA0KPiBTdWJqZWN0OiBbUkZDXSBldGhkZXY6IGFkZCBpbmRpcmVjdCBhY3Rpb24gYXN5bmMgcXVl cnkNCj4gDQo+IEFzIHJ0ZV9mbG93X2FjdGlvbl9oYW5kbGVfY3JlYXRlL2Rlc3Ryb3kvdXBkYXRl KCkgaGF2ZSB0aGVpciBvd24NCj4gYXN5bmNocm9ub3VzIHJ0ZV9mbG93X2FzeW5jX2FjdGlvbl9o YW5kbGVfY3JlYXRlL2Rlc3Ryb3kvdXBkYXRlKCkNCj4gdmVyc2lvbiBmdW5jdGlvbnMgdG8gYWNj ZWxlcmF0ZSB0aGUgaW5kaXJlY3QgYWN0aW9uIG9wZXJhdGlvbnMgaW4NCj4gcXVldWUgYmFzZWQg ZmxvdyBlbmdpbmUuIEN1cnJlbnRseSwgdGhlIGFzeW5jaHJvbm91cyB2ZXJzaW9uIHF1ZXJ5DQo+ IGZ1bmN0aW9uIGZvciBpbmRpcmVjdCBhY3Rpb24gd2FzIG1pc3NpbmcuDQo+IA0KPiBUaGlzIHBh dGNoIGFkZHMgdGhlIHJ0ZV9mbG93X2FzeW5jX2FjdGlvbl9oYW5kbGVfcXVlcnkoKSBmdW5jdGlv bg0KPiBjb3JyZXNwb25kcyB0byBydGVfZmxvd19hY3Rpb25faGFuZGxlX3F1ZXJ5KCkuIFRoZSBu ZXcgYXN5bmNocm9ub3VzDQo+IHZlcnNpb24gZnVuY3Rpb24gZW5hYmxlcyBlbnF1ZXVlIHRoZSBx dWVyeSB0byB0aGUgaGFyZHdhcmUgc2ltaWxhcg0KPiBhcyBhc3luY2hyb25vdXMgZmxvdyBtYW5h Z2VtZW50IGRvZXMgYW5kIHJldHVybnMgaW1tZWRpYXRlbHkgdG8gZnJlZQ0KPiB0aGUgQ1BVIGZv ciBvdGhlciB0YXNrcy4gQXBwbGljYXRpb24gY2FuIGdldCB0aGUgcXVlcnkgcmVzdWx0cyBmcm9t DQo+IHJ0ZV9mbG93X3B1bGwoKSB3aGVuIHRoZSBoYXJkd2FyZSBjb21wbGV0ZXMgaXRzIHdvcmsu DQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBTdWFubWluZyBNb3UgPHN1YW5taW5nbUBudmlkaWEuY29t Pg0KPiAtLS0NCj4gIGFwcC90ZXN0LXBtZC9jbWRsaW5lX2Zsb3cuYyAgICAgICAgICAgICAgICAg fCAgMzQgKysrDQo+ICBhcHAvdGVzdC1wbWQvY29uZmlnLmMgICAgICAgICAgICAgICAgICAgICAg IHwgMjQwICsrKysrKysrKysrKysrLS0tLS0tDQo+ICBhcHAvdGVzdC1wbWQvdGVzdHBtZC5oICAg ICAgICAgICAgICAgICAgICAgIHwgIDI4ICsrKw0KPiAgZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3J0 ZV9mbG93LnJzdCAgICAgICAgICB8ICAxNiArKw0KPiAgZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVs ZWFzZV8yMl8xMS5yc3QgICAgICB8ICAgNSArDQo+ICBkb2MvZ3VpZGVzL3Rlc3RwbWRfYXBwX3Vn L3Rlc3RwbWRfZnVuY3MucnN0IHwgIDE5ICsrDQo+ICBsaWIvZXRoZGV2L3J0ZV9mbG93LmMgICAg ICAgICAgICAgICAgICAgICAgIHwgIDE4ICsrDQo+ICBsaWIvZXRoZGV2L3J0ZV9mbG93LmggICAg ICAgICAgICAgICAgICAgICAgIHwgIDQ0ICsrKysNCj4gIGxpYi9ldGhkZXYvcnRlX2Zsb3dfZHJp dmVyLmggICAgICAgICAgICAgICAgfCAgIDkgKw0KPiAgbGliL2V0aGRldi92ZXJzaW9uLm1hcCAg ICAgICAgICAgICAgICAgICAgICB8ICAgMyArDQo+ICAxMCBmaWxlcyBjaGFuZ2VkLCAzNDUgaW5z ZXJ0aW9ucygrKSwgNzEgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvYXBwL3Rlc3Qt cG1kL2NtZGxpbmVfZmxvdy5jIGIvYXBwL3Rlc3QtcG1kL2NtZGxpbmVfZmxvdy5jDQo+IGluZGV4 IDdmNTAwMjhlYjcuLjAyMjMyODZjMWEgMTAwNjQ0DQo+IC0tLSBhL2FwcC90ZXN0LXBtZC9jbWRs aW5lX2Zsb3cuYw0KPiArKysgYi9hcHAvdGVzdC1wbWQvY21kbGluZV9mbG93LmMNCj4gQEAgLTE0 NSw2ICsxNDUsNyBAQCBlbnVtIGluZGV4IHsNCj4gIAlRVUVVRV9JTkRJUkVDVF9BQ1RJT05fQ1JF QVRFLA0KPiAgCVFVRVVFX0lORElSRUNUX0FDVElPTl9VUERBVEUsDQo+ICAJUVVFVUVfSU5ESVJF Q1RfQUNUSU9OX0RFU1RST1ksDQo+ICsJUVVFVUVfSU5ESVJFQ1RfQUNUSU9OX1FVRVJZLA0KPiAN Cj4gIAkvKiBRdWV1ZSBpbmRpcmVjdCBhY3Rpb24gY3JlYXRlIGFyZ3VtZW50cyAqLw0KPiAgCVFV RVVFX0lORElSRUNUX0FDVElPTl9DUkVBVEVfSUQsDQo+IEBAIC0xNjEsNiArMTYyLDkgQEAgZW51 bSBpbmRleCB7DQo+ICAJUVVFVUVfSU5ESVJFQ1RfQUNUSU9OX0RFU1RST1lfSUQsDQo+ICAJUVVF VUVfSU5ESVJFQ1RfQUNUSU9OX0RFU1RST1lfUE9TVFBPTkUsDQo+IA0KPiArCS8qIFF1ZXVlIGlu ZGlyZWN0IGFjdGlvbiBxdWVyeSBhcmd1bWVudHMgKi8NCj4gKwlRVUVVRV9JTkRJUkVDVF9BQ1RJ T05fUVVFUllfUE9TVFBPTkUsDQo+ICsNCj4gIAkvKiBQdXNoIGFyZ3VtZW50cy4gKi8NCj4gIAlQ VVNIX1FVRVVFLA0KPiANCj4gQEAgLTExNzEsNiArMTE3NSw3IEBAIHN0YXRpYyBjb25zdCBlbnVt IGluZGV4IG5leHRfcWlhX3N1YmNtZFtdID0gew0KPiAgCVFVRVVFX0lORElSRUNUX0FDVElPTl9D UkVBVEUsDQo+ICAJUVVFVUVfSU5ESVJFQ1RfQUNUSU9OX1VQREFURSwNCj4gIAlRVUVVRV9JTkRJ UkVDVF9BQ1RJT05fREVTVFJPWSwNCj4gKwlRVUVVRV9JTkRJUkVDVF9BQ1RJT05fUVVFUlksDQo+ ICAJWkVSTywNCj4gIH07DQo+IA0KPiBAQCAtMTE5Nyw2ICsxMjAyLDEyIEBAIHN0YXRpYyBjb25z dCBlbnVtIGluZGV4IG5leHRfcWlhX2Rlc3Ryb3lfYXR0cltdID0NCj4gew0KPiAgCVpFUk8sDQo+ ICB9Ow0KPiANCj4gK3N0YXRpYyBjb25zdCBlbnVtIGluZGV4IG5leHRfcWlhX3F1ZXJ5X2F0dHJb XSA9IHsNCj4gKwlRVUVVRV9JTkRJUkVDVF9BQ1RJT05fUVVFUllfUE9TVFBPTkUsDQo+ICsJRU5E LA0KPiArCVpFUk8sDQo+ICt9Ow0KPiArDQo+ICBzdGF0aWMgY29uc3QgZW51bSBpbmRleCBuZXh0 X2lhX2NyZWF0ZV9hdHRyW10gPSB7DQo+ICAJSU5ESVJFQ1RfQUNUSU9OX0NSRUFURV9JRCwNCj4g IAlJTkRJUkVDVF9BQ1RJT05fSU5HUkVTUywNCj4gQEAgLTMwMTMsNiArMzAyNCwxNCBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IHRva2VuIHRva2VuX2xpc3RbXSA9IHsNCj4gIAkJLm5leHQgPSBORVhU KG5leHRfcWlhX2Rlc3Ryb3lfYXR0ciksDQo+ICAJCS5jYWxsID0gcGFyc2VfcWlhX2Rlc3Ryb3ks DQo+ICAJfSwNCj4gKwlbUVVFVUVfSU5ESVJFQ1RfQUNUSU9OX1FVRVJZXSA9IHsNCj4gKwkJLm5h bWUgPSAicXVlcnkiLA0KPiArCQkuaGVscCA9ICJxdWVyeSBpbmRpcmVjdCBhY3Rpb24iLA0KPiAr CQkubmV4dCA9IE5FWFQobmV4dF9xaWFfcXVlcnlfYXR0ciwNCj4gKwkJCSAgICAgTkVYVF9FTlRS WShDT01NT05fSU5ESVJFQ1RfQUNUSU9OX0lEKSksDQo+ICsJCS5hcmdzID0gQVJHUyhBUkdTX0VO VFJZKHN0cnVjdCBidWZmZXIsIGFyZ3MudmMuYXR0ci5ncm91cCkpLA0KPiArCQkuY2FsbCA9IHBh cnNlX3FpYSwNCj4gKwl9LA0KPiAgCS8qIEluZGlyZWN0IGFjdGlvbiBkZXN0cm95IGFyZ3VtZW50 cy4gKi8NCj4gIAlbUVVFVUVfSU5ESVJFQ1RfQUNUSU9OX0RFU1RST1lfUE9TVFBPTkVdID0gew0K PiAgCQkubmFtZSA9ICJwb3N0cG9uZSIsDQo+IEBAIC0zMDM4LDYgKzMwNTcsMTQgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCB0b2tlbiB0b2tlbl9saXN0W10gPSB7DQo+ICAJCQkgICAgIE5FWFRfRU5U UlkoQ09NTU9OX0JPT0xFQU4pKSwNCj4gIAkJLmFyZ3MgPSBBUkdTKEFSR1NfRU5UUlkoc3RydWN0 IGJ1ZmZlciwgcG9zdHBvbmUpKSwNCj4gIAl9LA0KPiArCS8qIEluZGlyZWN0IGFjdGlvbiB1cGRh dGUgYXJndW1lbnRzLiAqLw0KPiArCVtRVUVVRV9JTkRJUkVDVF9BQ1RJT05fUVVFUllfUE9TVFBP TkVdID0gew0KPiArCQkubmFtZSA9ICJwb3N0cG9uZSIsDQo+ICsJCS5oZWxwID0gInBvc3Rwb25l IHF1ZXJ5IG9wZXJhdGlvbiIsDQo+ICsJCS5uZXh0ID0gTkVYVChuZXh0X3FpYV9xdWVyeV9hdHRy LA0KPiArCQkJICAgICBORVhUX0VOVFJZKENPTU1PTl9CT09MRUFOKSksDQo+ICsJCS5hcmdzID0g QVJHUyhBUkdTX0VOVFJZKHN0cnVjdCBidWZmZXIsIHBvc3Rwb25lKSksDQo+ICsJfSwNCj4gIAkv KiBJbmRpcmVjdCBhY3Rpb24gY3JlYXRlIGFyZ3VtZW50cy4gKi8NCj4gIAlbUVVFVUVfSU5ESVJF Q1RfQUNUSU9OX0NSRUFURV9JRF0gPSB7DQo+ICAJCS5uYW1lID0gImFjdGlvbl9pZCIsDQo+IEBA IC02NjgyLDYgKzY3MDksOCBAQCBwYXJzZV9xaWEoc3RydWN0IGNvbnRleHQgKmN0eCwgY29uc3Qg c3RydWN0IHRva2VuDQo+ICp0b2tlbiwNCj4gIAkJCSh2b2lkICopUlRFX0FMSUdOX0NFSUwoKHVp bnRwdHJfdCkob3V0ICsgMSksDQo+ICAJCQkJCSAgICAgICBzaXplb2YoZG91YmxlKSk7DQo+ICAJ CW91dC0+YXJncy52Yy5hdHRyLmdyb3VwID0gVUlOVDMyX01BWDsNCj4gKwkJLyogZmFsbHRocm91 Z2ggKi8NCj4gKwljYXNlIFFVRVVFX0lORElSRUNUX0FDVElPTl9RVUVSWToNCj4gIAkJb3V0LT5j b21tYW5kID0gY3R4LT5jdXJyOw0KPiAgCQljdHgtPm9iamRhdGEgPSAwOw0KPiAgCQljdHgtPm9i amVjdCA9IG91dDsNCj4gQEAgLTEwNTA5LDYgKzEwNTM4LDExIEBAIGNtZF9mbG93X3BhcnNlZChj b25zdCBzdHJ1Y3QgYnVmZmVyICppbikNCj4gIAkJCQkJCWluLT5hcmdzLnZjLmF0dHIuZ3JvdXAs DQo+ICAJCQkJCQlpbi0+YXJncy52Yy5hY3Rpb25zKTsNCj4gIAkJYnJlYWs7DQo+ICsJY2FzZSBR VUVVRV9JTkRJUkVDVF9BQ1RJT05fUVVFUlk6DQo+ICsJCXBvcnRfcXVldWVfYWN0aW9uX2hhbmRs ZV9xdWVyeShpbi0+cG9ydCwNCj4gKwkJCQkJICAgICAgIGluLT5xdWV1ZSwgaW4tPnBvc3Rwb25l LA0KPiArCQkJCQkgICAgICAgaW4tPmFyZ3MudmMuYXR0ci5ncm91cCk7DQo+ICsJCWJyZWFrOw0K PiAgCWNhc2UgSU5ESVJFQ1RfQUNUSU9OX0NSRUFURToNCj4gIAkJcG9ydF9hY3Rpb25faGFuZGxl X2NyZWF0ZSgNCj4gIAkJCQlpbi0+cG9ydCwgaW4tPmFyZ3MudmMuYXR0ci5ncm91cCwNCj4gZGlm ZiAtLWdpdCBhL2FwcC90ZXN0LXBtZC9jb25maWcuYyBiL2FwcC90ZXN0LXBtZC9jb25maWcuYw0K PiBpbmRleCBhMjkzOTg2N2M0Li40YzUxZWQwM2E4IDEwMDY0NA0KPiAtLS0gYS9hcHAvdGVzdC1w bWQvY29uZmlnLmMNCj4gKysrIGIvYXBwL3Rlc3QtcG1kL2NvbmZpZy5jDQo+IEBAIC0yMDgwLDQ0 ICsyMDgwLDE4IEBAIHBvcnRfYWN0aW9uX2hhbmRsZV91cGRhdGUocG9ydGlkX3QgcG9ydF9pZCwN Cj4gdWludDMyX3QgaWQsDQo+ICAJcmV0dXJuIDA7DQo+ICB9DQo+IA0KPiAtaW50DQo+IC1wb3J0 X2FjdGlvbl9oYW5kbGVfcXVlcnkocG9ydGlkX3QgcG9ydF9pZCwgdWludDMyX3QgaWQpDQo+ICtz dGF0aWMgdm9pZA0KPiArcG9ydF9hY3Rpb25faGFuZGxlX3F1ZXJ5X2R1bXAodWludDMyX3QgdHlw ZSwgdW5pb24gcG9ydF9hY3Rpb25fcXVlcnkNCj4gKnF1ZXJ5KQ0KPiAgew0KPiAtCXN0cnVjdCBy dGVfZmxvd19lcnJvciBlcnJvcjsNCj4gLQlzdHJ1Y3QgcG9ydF9pbmRpcmVjdF9hY3Rpb24gKnBp YTsNCj4gLQl1bmlvbiB7DQo+IC0JCXN0cnVjdCBydGVfZmxvd19xdWVyeV9jb3VudCBjb3VudDsN Cj4gLQkJc3RydWN0IHJ0ZV9mbG93X3F1ZXJ5X2FnZSBhZ2U7DQo+IC0JCXN0cnVjdCBydGVfZmxv d19hY3Rpb25fY29ubnRyYWNrIGN0Ow0KPiAtCX0gcXVlcnk7DQo+IC0NCj4gLQlwaWEgPSBhY3Rp b25fZ2V0X2J5X2lkKHBvcnRfaWQsIGlkKTsNCj4gLQlpZiAoIXBpYSkNCj4gLQkJcmV0dXJuIC1F SU5WQUw7DQo+IC0Jc3dpdGNoIChwaWEtPnR5cGUpIHsNCj4gLQljYXNlIFJURV9GTE9XX0FDVElP Tl9UWVBFX0FHRToNCj4gLQljYXNlIFJURV9GTE9XX0FDVElPTl9UWVBFX0NPVU5UOg0KPiAtCQli cmVhazsNCj4gLQlkZWZhdWx0Og0KPiAtCQlmcHJpbnRmKHN0ZGVyciwNCj4gLQkJCSJJbmRpcmVj dCBhY3Rpb24gJXUgKHR5cGU6ICVkKSBvbiBwb3J0ICV1IGRvZXNuJ3QNCj4gc3VwcG9ydCBxdWVy eVxuIiwNCj4gLQkJCWlkLCBwaWEtPnR5cGUsIHBvcnRfaWQpOw0KPiAtCQlyZXR1cm4gLUVOT1RT VVA7DQo+IC0JfQ0KPiAtCS8qIFBvaXNvbmluZyB0byBtYWtlIHN1cmUgUE1EcyB1cGRhdGUgaXQg aW4gY2FzZSBvZiBlcnJvci4gKi8NCj4gLQltZW1zZXQoJmVycm9yLCAweDU1LCBzaXplb2YoZXJy b3IpKTsNCj4gLQltZW1zZXQoJnF1ZXJ5LCAwLCBzaXplb2YocXVlcnkpKTsNCj4gLQlpZiAocnRl X2Zsb3dfYWN0aW9uX2hhbmRsZV9xdWVyeShwb3J0X2lkLCBwaWEtPmhhbmRsZSwgJnF1ZXJ5LA0K PiAmZXJyb3IpKQ0KPiAtCQlyZXR1cm4gcG9ydF9mbG93X2NvbXBsYWluKCZlcnJvcik7DQo+IC0J c3dpdGNoIChwaWEtPnR5cGUpIHsNCj4gKwlzd2l0Y2ggKHR5cGUpIHsNCj4gIAljYXNlIFJURV9G TE9XX0FDVElPTl9UWVBFX0FHRToNCj4gIAkJcHJpbnRmKCJJbmRpcmVjdCBBR0UgYWN0aW9uOlxu Ig0KPiAgCQkgICAgICAgIiBhZ2VkOiAldVxuIg0KPiAgCQkgICAgICAgIiBzZWNfc2luY2VfbGFz dF9oaXRfdmFsaWQ6ICV1XG4iDQo+ICAJCSAgICAgICAiIHNlY19zaW5jZV9sYXN0X2hpdDogJSIg UFJJdTMyICJcbiIsDQo+IC0JCSAgICAgICBxdWVyeS5hZ2UuYWdlZCwNCj4gLQkJICAgICAgIHF1 ZXJ5LmFnZS5zZWNfc2luY2VfbGFzdF9oaXRfdmFsaWQsDQo+IC0JCSAgICAgICBxdWVyeS5hZ2Uu c2VjX3NpbmNlX2xhc3RfaGl0KTsNCj4gKwkJICAgICAgIHF1ZXJ5LT5hZ2UuYWdlZCwNCj4gKwkJ ICAgICAgIHF1ZXJ5LT5hZ2Uuc2VjX3NpbmNlX2xhc3RfaGl0X3ZhbGlkLA0KPiArCQkgICAgICAg cXVlcnktPmFnZS5zZWNfc2luY2VfbGFzdF9oaXQpOw0KPiAgCQlicmVhazsNCj4gIAljYXNlIFJU RV9GTE9XX0FDVElPTl9UWVBFX0NPVU5UOg0KPiAgCQlwcmludGYoIkluZGlyZWN0IENPVU5UIGFj dGlvbjpcbiINCj4gQEAgLTIxMjUsMTAgKzIwOTksMTAgQEAgcG9ydF9hY3Rpb25faGFuZGxlX3F1 ZXJ5KHBvcnRpZF90IHBvcnRfaWQsDQo+IHVpbnQzMl90IGlkKQ0KPiAgCQkgICAgICAgIiBieXRl c19zZXQ6ICV1XG4iDQo+ICAJCSAgICAgICAiIGhpdHM6ICUiIFBSSXU2NCAiXG4iDQo+ICAJCSAg ICAgICAiIGJ5dGVzOiAlIiBQUkl1NjQgIlxuIiwNCj4gLQkJICAgICAgIHF1ZXJ5LmNvdW50Lmhp dHNfc2V0LA0KPiAtCQkgICAgICAgcXVlcnkuY291bnQuYnl0ZXNfc2V0LA0KPiAtCQkgICAgICAg cXVlcnkuY291bnQuaGl0cywNCj4gLQkJICAgICAgIHF1ZXJ5LmNvdW50LmJ5dGVzKTsNCj4gKwkJ ICAgICAgIHF1ZXJ5LT5jb3VudC5oaXRzX3NldCwNCj4gKwkJICAgICAgIHF1ZXJ5LT5jb3VudC5i eXRlc19zZXQsDQo+ICsJCSAgICAgICBxdWVyeS0+Y291bnQuaGl0cywNCj4gKwkJICAgICAgIHF1 ZXJ5LT5jb3VudC5ieXRlcyk7DQo+ICAJCWJyZWFrOw0KPiAgCWNhc2UgUlRFX0ZMT1dfQUNUSU9O X1RZUEVfQ09OTlRSQUNLOg0KPiAgCQlwcmludGYoIkNvbm50cmFjayBDb250ZXh0OlxuIg0KPiBA QCAtMjEzOCw0NyArMjExMiw3NiBAQCBwb3J0X2FjdGlvbl9oYW5kbGVfcXVlcnkocG9ydGlkX3Qg cG9ydF9pZCwNCj4gdWludDMyX3QgaWQpDQo+ICAJCSAgICAgICAiICBGYWN0b3I6ICV1LCBSZXRy YW5zOiAldSwgVENQIGZsYWdzOiAldVxuIg0KPiAgCQkgICAgICAgIiAgTGFzdCBTZXE6ICV1LCBM YXN0IEFDSzogJXVcbiINCj4gIAkJICAgICAgICIgIExhc3QgV2luOiAldSwgTGFzdCBFbmQ6ICV1 XG4iLA0KPiAtCQkgICAgICAgcXVlcnkuY3QucGVlcl9wb3J0LA0KPiAtCQkgICAgICAgcXVlcnku Y3QuaXNfb3JpZ2luYWxfZGlyID8gIk9yaWdpbmFsIiA6ICJSZXBseSIsDQo+IC0JCSAgICAgICBx dWVyeS5jdC5lbmFibGUsIHF1ZXJ5LmN0LmxpdmVfY29ubmVjdGlvbiwNCj4gLQkJICAgICAgIHF1 ZXJ5LmN0LnNlbGVjdGl2ZV9hY2ssIHF1ZXJ5LmN0LmNoYWxsZW5nZV9hY2tfcGFzc2VkLA0KPiAt CQkgICAgICAgcXVlcnkuY3QubGFzdF9kaXJlY3Rpb24gPyAiT3JpZ2luYWwiIDogIlJlcGx5IiwN Cj4gLQkJICAgICAgIHF1ZXJ5LmN0LmxpYmVyYWxfbW9kZSwgcXVlcnkuY3Quc3RhdGUsDQo+IC0J CSAgICAgICBxdWVyeS5jdC5tYXhfYWNrX3dpbmRvdywNCj4gcXVlcnkuY3QucmV0cmFuc21pc3Np b25fbGltaXQsDQo+IC0JCSAgICAgICBxdWVyeS5jdC5sYXN0X2luZGV4LCBxdWVyeS5jdC5sYXN0 X3NlcSwNCj4gLQkJICAgICAgIHF1ZXJ5LmN0Lmxhc3RfYWNrLCBxdWVyeS5jdC5sYXN0X3dpbmRv dywNCj4gLQkJICAgICAgIHF1ZXJ5LmN0Lmxhc3RfZW5kKTsNCj4gKwkJICAgICAgIHF1ZXJ5LT5j dC5wZWVyX3BvcnQsDQo+ICsJCSAgICAgICBxdWVyeS0+Y3QuaXNfb3JpZ2luYWxfZGlyID8gIk9y aWdpbmFsIiA6ICJSZXBseSIsDQo+ICsJCSAgICAgICBxdWVyeS0+Y3QuZW5hYmxlLCBxdWVyeS0+ Y3QubGl2ZV9jb25uZWN0aW9uLA0KPiArCQkgICAgICAgcXVlcnktPmN0LnNlbGVjdGl2ZV9hY2ss IHF1ZXJ5LQ0KPiA+Y3QuY2hhbGxlbmdlX2Fja19wYXNzZWQsDQo+ICsJCSAgICAgICBxdWVyeS0+ Y3QubGFzdF9kaXJlY3Rpb24gPyAiT3JpZ2luYWwiIDogIlJlcGx5IiwNCj4gKwkJICAgICAgIHF1 ZXJ5LT5jdC5saWJlcmFsX21vZGUsIHF1ZXJ5LT5jdC5zdGF0ZSwNCj4gKwkJICAgICAgIHF1ZXJ5 LT5jdC5tYXhfYWNrX3dpbmRvdywgcXVlcnktDQo+ID5jdC5yZXRyYW5zbWlzc2lvbl9saW1pdCwN Cj4gKwkJICAgICAgIHF1ZXJ5LT5jdC5sYXN0X2luZGV4LCBxdWVyeS0+Y3QubGFzdF9zZXEsDQo+ ICsJCSAgICAgICBxdWVyeS0+Y3QubGFzdF9hY2ssIHF1ZXJ5LT5jdC5sYXN0X3dpbmRvdywNCj4g KwkJICAgICAgIHF1ZXJ5LT5jdC5sYXN0X2VuZCk7DQo+ICAJCXByaW50ZigiICBPcmlnaW5hbCBE aXI6XG4iDQo+ICAJCSAgICAgICAiICAgIHNjYWxlOiAldSwgZmluOiAldSwgYWNrIHNlZW46ICV1 XG4iDQo+ICAJCSAgICAgICAiIHVuYWNrZWQgZGF0YTogJXVcbiAgICBTZW50IGVuZDogJXUsIg0K PiAgCQkgICAgICAgIiAgICBSZXBseSBlbmQ6ICV1LCBNYXggd2luOiAldSwgTWF4IEFDSzogJXVc biIsDQo+IC0JCSAgICAgICBxdWVyeS5jdC5vcmlnaW5hbF9kaXIuc2NhbGUsDQo+IC0JCSAgICAg ICBxdWVyeS5jdC5vcmlnaW5hbF9kaXIuY2xvc2VfaW5pdGlhdGVkLA0KPiAtCQkgICAgICAgcXVl cnkuY3Qub3JpZ2luYWxfZGlyLmxhc3RfYWNrX3NlZW4sDQo+IC0JCSAgICAgICBxdWVyeS5jdC5v cmlnaW5hbF9kaXIuZGF0YV91bmFja2VkLA0KPiAtCQkgICAgICAgcXVlcnkuY3Qub3JpZ2luYWxf ZGlyLnNlbnRfZW5kLA0KPiAtCQkgICAgICAgcXVlcnkuY3Qub3JpZ2luYWxfZGlyLnJlcGx5X2Vu ZCwNCj4gLQkJICAgICAgIHF1ZXJ5LmN0Lm9yaWdpbmFsX2Rpci5tYXhfd2luLA0KPiAtCQkgICAg ICAgcXVlcnkuY3Qub3JpZ2luYWxfZGlyLm1heF9hY2spOw0KPiArCQkgICAgICAgcXVlcnktPmN0 Lm9yaWdpbmFsX2Rpci5zY2FsZSwNCj4gKwkJICAgICAgIHF1ZXJ5LT5jdC5vcmlnaW5hbF9kaXIu Y2xvc2VfaW5pdGlhdGVkLA0KPiArCQkgICAgICAgcXVlcnktPmN0Lm9yaWdpbmFsX2Rpci5sYXN0 X2Fja19zZWVuLA0KPiArCQkgICAgICAgcXVlcnktPmN0Lm9yaWdpbmFsX2Rpci5kYXRhX3VuYWNr ZWQsDQo+ICsJCSAgICAgICBxdWVyeS0+Y3Qub3JpZ2luYWxfZGlyLnNlbnRfZW5kLA0KPiArCQkg ICAgICAgcXVlcnktPmN0Lm9yaWdpbmFsX2Rpci5yZXBseV9lbmQsDQo+ICsJCSAgICAgICBxdWVy eS0+Y3Qub3JpZ2luYWxfZGlyLm1heF93aW4sDQo+ICsJCSAgICAgICBxdWVyeS0+Y3Qub3JpZ2lu YWxfZGlyLm1heF9hY2spOw0KPiAgCQlwcmludGYoIiAgUmVwbHkgRGlyOlxuIg0KPiAgCQkgICAg ICAgIiAgICBzY2FsZTogJXUsIGZpbjogJXUsIGFjayBzZWVuOiAldVxuIg0KPiAgCQkgICAgICAg IiB1bmFja2VkIGRhdGE6ICV1XG4gICAgU2VudCBlbmQ6ICV1LCINCj4gIAkJICAgICAgICIgICAg UmVwbHkgZW5kOiAldSwgTWF4IHdpbjogJXUsIE1heCBBQ0s6ICV1XG4iLA0KPiAtCQkgICAgICAg cXVlcnkuY3QucmVwbHlfZGlyLnNjYWxlLA0KPiAtCQkgICAgICAgcXVlcnkuY3QucmVwbHlfZGly LmNsb3NlX2luaXRpYXRlZCwNCj4gLQkJICAgICAgIHF1ZXJ5LmN0LnJlcGx5X2Rpci5sYXN0X2Fj a19zZWVuLA0KPiAtCQkgICAgICAgcXVlcnkuY3QucmVwbHlfZGlyLmRhdGFfdW5hY2tlZCwNCj4g LQkJICAgICAgIHF1ZXJ5LmN0LnJlcGx5X2Rpci5zZW50X2VuZCwNCj4gLQkJICAgICAgIHF1ZXJ5 LmN0LnJlcGx5X2Rpci5yZXBseV9lbmQsDQo+IC0JCSAgICAgICBxdWVyeS5jdC5yZXBseV9kaXIu bWF4X3dpbiwNCj4gLQkJICAgICAgIHF1ZXJ5LmN0LnJlcGx5X2Rpci5tYXhfYWNrKTsNCj4gKwkJ ICAgICAgIHF1ZXJ5LT5jdC5yZXBseV9kaXIuc2NhbGUsDQo+ICsJCSAgICAgICBxdWVyeS0+Y3Qu cmVwbHlfZGlyLmNsb3NlX2luaXRpYXRlZCwNCj4gKwkJICAgICAgIHF1ZXJ5LT5jdC5yZXBseV9k aXIubGFzdF9hY2tfc2VlbiwNCj4gKwkJICAgICAgIHF1ZXJ5LT5jdC5yZXBseV9kaXIuZGF0YV91 bmFja2VkLA0KPiArCQkgICAgICAgcXVlcnktPmN0LnJlcGx5X2Rpci5zZW50X2VuZCwNCj4gKwkJ ICAgICAgIHF1ZXJ5LT5jdC5yZXBseV9kaXIucmVwbHlfZW5kLA0KPiArCQkgICAgICAgcXVlcnkt PmN0LnJlcGx5X2Rpci5tYXhfd2luLA0KPiArCQkgICAgICAgcXVlcnktPmN0LnJlcGx5X2Rpci5t YXhfYWNrKTsNCj4gKwkJYnJlYWs7DQo+ICsJZGVmYXVsdDoNCj4gKwkJZnByaW50ZihzdGRlcnIs DQo+ICsJCQkiSW5kaXJlY3QgYWN0aW9uICh0eXBlOiAlZCkgZG9lc24ndCBzdXBwb3J0IHF1ZXJ5 XG4iLA0KPiArCQkJdHlwZSk7DQo+ICsJCWJyZWFrOw0KPiArCX0NCj4gKw0KPiArfQ0KPiArDQo+ ICtpbnQNCj4gK3BvcnRfYWN0aW9uX2hhbmRsZV9xdWVyeShwb3J0aWRfdCBwb3J0X2lkLCB1aW50 MzJfdCBpZCkNCj4gK3sNCj4gKwlzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgZXJyb3I7DQo+ICsJc3Ry dWN0IHBvcnRfaW5kaXJlY3RfYWN0aW9uICpwaWE7DQo+ICsJdW5pb24gcG9ydF9hY3Rpb25fcXVl cnkgcXVlcnk7DQo+ICsNCj4gKwlwaWEgPSBhY3Rpb25fZ2V0X2J5X2lkKHBvcnRfaWQsIGlkKTsN Cj4gKwlpZiAoIXBpYSkNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJc3dpdGNoIChwaWEtPnR5 cGUpIHsNCj4gKwljYXNlIFJURV9GTE9XX0FDVElPTl9UWVBFX0FHRToNCj4gKwljYXNlIFJURV9G TE9XX0FDVElPTl9UWVBFX0NPVU5UOg0KPiAgCQlicmVhazsNCj4gIAlkZWZhdWx0Og0KPiAgCQlm cHJpbnRmKHN0ZGVyciwNCj4gIAkJCSJJbmRpcmVjdCBhY3Rpb24gJXUgKHR5cGU6ICVkKSBvbiBw b3J0ICV1IGRvZXNuJ3QNCj4gc3VwcG9ydCBxdWVyeVxuIiwNCj4gIAkJCWlkLCBwaWEtPnR5cGUs IHBvcnRfaWQpOw0KPiAtCQlicmVhazsNCj4gKwkJcmV0dXJuIC1FTk9UU1VQOw0KPiAgCX0NCj4g KwkvKiBQb2lzb25pbmcgdG8gbWFrZSBzdXJlIFBNRHMgdXBkYXRlIGl0IGluIGNhc2Ugb2YgZXJy b3IuICovDQo+ICsJbWVtc2V0KCZlcnJvciwgMHg1NSwgc2l6ZW9mKGVycm9yKSk7DQo+ICsJbWVt c2V0KCZxdWVyeSwgMCwgc2l6ZW9mKHF1ZXJ5KSk7DQo+ICsJaWYgKHJ0ZV9mbG93X2FjdGlvbl9o YW5kbGVfcXVlcnkocG9ydF9pZCwgcGlhLT5oYW5kbGUsICZxdWVyeSwNCj4gJmVycm9yKSkNCj4g KwkJcmV0dXJuIHBvcnRfZmxvd19jb21wbGFpbigmZXJyb3IpOw0KPiArCXBvcnRfYWN0aW9uX2hh bmRsZV9xdWVyeV9kdW1wKHBpYS0+dHlwZSwgJnF1ZXJ5KTsNCj4gIAlyZXR1cm4gMDsNCj4gIH0N Cj4gDQo+IEBAIC0yNjcwLDYgKzI2NzMsNyBAQCBwb3J0X3F1ZXVlX2Zsb3dfY3JlYXRlKHBvcnRp ZF90IHBvcnRfaWQsDQo+IHF1ZXVlaWRfdCBxdWV1ZV9pZCwNCj4gIAlib29sIGZvdW5kOw0KPiAg CXN0cnVjdCBydGVfZmxvd19lcnJvciBlcnJvciA9IHsgUlRFX0ZMT1dfRVJST1JfVFlQRV9OT05F LA0KPiBOVUxMLCBOVUxMIH07DQo+ICAJc3RydWN0IHJ0ZV9mbG93X2FjdGlvbl9hZ2UgKmFnZSA9 IGFnZV9hY3Rpb25fZ2V0KGFjdGlvbnMpOw0KPiArCXN0cnVjdCBxdWV1ZV9qb2IgKmpvYjsNCj4g DQo+ICAJcG9ydCA9ICZwb3J0c1twb3J0X2lkXTsNCj4gIAlpZiAocG9ydC0+Zmxvd19saXN0KSB7 DQo+IEBAIC0yNzEzLDkgKzI3MTcsMTggQEAgcG9ydF9xdWV1ZV9mbG93X2NyZWF0ZShwb3J0aWRf dCBwb3J0X2lkLA0KPiBxdWV1ZWlkX3QgcXVldWVfaWQsDQo+ICAJCXJldHVybiAtRUlOVkFMOw0K PiAgCX0NCj4gDQo+ICsJam9iID0gY2FsbG9jKDEsIHNpemVvZigqam9iKSk7DQo+ICsJaWYgKCFq b2IpIHsNCj4gKwkJcHJpbnRmKCJRdWV1ZSBmbG93IGNyZWF0ZSBqb2IgYWxsb2NhdGUgZmFpbGVk XG4iKTsNCj4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ICsJfQ0KPiArCWpvYi0+dHlwZSA9IFFVRVVF X0pPQl9UWVBFX0ZMT1dfQ1JFQVRFOw0KPiArDQo+ICAJcGYgPSBwb3J0X2Zsb3dfbmV3KE5VTEws IHBhdHRlcm4sIGFjdGlvbnMsICZlcnJvcik7DQo+IC0JaWYgKCFwZikNCj4gKwlpZiAoIXBmKSB7 DQo+ICsJCWZyZWUoam9iKTsNCj4gIAkJcmV0dXJuIHBvcnRfZmxvd19jb21wbGFpbigmZXJyb3Ip Ow0KPiArCX0NCj4gIAlpZiAoYWdlKSB7DQo+ICAJCXBmLT5hZ2VfdHlwZSA9IEFDVElPTl9BR0Vf Q09OVEVYVF9UWVBFX0ZMT1c7DQo+ICAJCWFnZS0+Y29udGV4dCA9ICZwZi0+YWdlX3R5cGU7DQo+ IEBAIC0yNzIzLDE2ICsyNzM2LDE4IEBAIHBvcnRfcXVldWVfZmxvd19jcmVhdGUocG9ydGlkX3Qg cG9ydF9pZCwNCj4gcXVldWVpZF90IHF1ZXVlX2lkLA0KPiAgCS8qIFBvaXNvbmluZyB0byBtYWtl IHN1cmUgUE1EcyB1cGRhdGUgaXQgaW4gY2FzZSBvZiBlcnJvci4gKi8NCj4gIAltZW1zZXQoJmVy cm9yLCAweDExLCBzaXplb2YoZXJyb3IpKTsNCj4gIAlmbG93ID0gcnRlX2Zsb3dfYXN5bmNfY3Jl YXRlKHBvcnRfaWQsIHF1ZXVlX2lkLCAmb3BfYXR0ciwgcHQtDQo+ID50YWJsZSwNCj4gLQkJcGF0 dGVybiwgcGF0dGVybl9pZHgsIGFjdGlvbnMsIGFjdGlvbnNfaWR4LCBOVUxMLCAmZXJyb3IpOw0K PiArCQlwYXR0ZXJuLCBwYXR0ZXJuX2lkeCwgYWN0aW9ucywgYWN0aW9uc19pZHgsIGpvYiwgJmVy cm9yKTsNCj4gIAlpZiAoIWZsb3cpIHsNCj4gIAkJdWludDMyX3QgZmxvd19pZCA9IHBmLT5pZDsN Cj4gIAkJcG9ydF9xdWV1ZV9mbG93X2Rlc3Ryb3kocG9ydF9pZCwgcXVldWVfaWQsIHRydWUsIDEs DQo+ICZmbG93X2lkKTsNCj4gKwkJZnJlZShqb2IpOw0KPiAgCQlyZXR1cm4gcG9ydF9mbG93X2Nv bXBsYWluKCZlcnJvcik7DQo+ICAJfQ0KPiANCj4gIAlwZi0+bmV4dCA9IHBvcnQtPmZsb3dfbGlz dDsNCj4gIAlwZi0+aWQgPSBpZDsNCj4gIAlwZi0+ZmxvdyA9IGZsb3c7DQo+ICsJam9iLT5wZiA9 IHBmOw0KPiAgCXBvcnQtPmZsb3dfbGlzdCA9IHBmOw0KPiAgCXByaW50ZigiRmxvdyBydWxlICMl dSBjcmVhdGlvbiBlbnF1ZXVlZFxuIiwgcGYtPmlkKTsNCj4gIAlyZXR1cm4gMDsNCj4gQEAgLTI3 NDgsNiArMjc2Myw3IEBAIHBvcnRfcXVldWVfZmxvd19kZXN0cm95KHBvcnRpZF90IHBvcnRfaWQs DQo+IHF1ZXVlaWRfdCBxdWV1ZV9pZCwNCj4gIAlzdHJ1Y3QgcG9ydF9mbG93ICoqdG1wOw0KPiAg CXVpbnQzMl90IGMgPSAwOw0KPiAgCWludCByZXQgPSAwOw0KPiArCXN0cnVjdCBxdWV1ZV9qb2Ig KmpvYjsNCj4gDQo+ICAJaWYgKHBvcnRfaWRfaXNfaW52YWxpZChwb3J0X2lkLCBFTkFCTEVEX1dB Uk4pIHx8DQo+ICAJICAgIHBvcnRfaWQgPT0gKHBvcnRpZF90KVJURV9QT1JUX0FMTCkNCj4gQEAg LTI3NzQsMTQgKzI3OTAsMjIgQEAgcG9ydF9xdWV1ZV9mbG93X2Rlc3Ryb3kocG9ydGlkX3QgcG9y dF9pZCwNCj4gcXVldWVpZF90IHF1ZXVlX2lkLA0KPiAgCQkJICogdXBkYXRlIGl0IGluIGNhc2Ug b2YgZXJyb3IuDQo+ICAJCQkgKi8NCj4gIAkJCW1lbXNldCgmZXJyb3IsIDB4MzMsIHNpemVvZihl cnJvcikpOw0KPiArCQkJam9iID0gY2FsbG9jKDEsIHNpemVvZigqam9iKSk7DQo+ICsJCQlpZiAo IWpvYikgew0KPiArCQkJCXByaW50ZigiUXVldWUgZmxvdyBkZXN0cm95IGpvYiBhbGxvY2F0ZQ0K PiBmYWlsZWRcbiIpOw0KPiArCQkJCXJldHVybiAtRU5PTUVNOw0KPiArCQkJfQ0KPiArCQkJam9i LT50eXBlID0gUVVFVUVfSk9CX1RZUEVfRkxPV19ERVNUUk9ZOw0KPiArCQkJam9iLT5wZiA9IHBm Ow0KPiArDQo+ICAJCQlpZiAocnRlX2Zsb3dfYXN5bmNfZGVzdHJveShwb3J0X2lkLCBxdWV1ZV9p ZCwNCj4gJm9wX2F0dHIsDQo+IC0JCQkJCQkgICBwZi0+ZmxvdywgTlVMTCwgJmVycm9yKSkgew0K PiArCQkJCQkJICAgcGYtPmZsb3csIGpvYiwgJmVycm9yKSkgew0KPiArCQkJCWZyZWUoam9iKTsN Cj4gIAkJCQlyZXQgPSBwb3J0X2Zsb3dfY29tcGxhaW4oJmVycm9yKTsNCj4gIAkJCQljb250aW51 ZTsNCj4gIAkJCX0NCj4gIAkJCXByaW50ZigiRmxvdyBydWxlICMldSBkZXN0cnVjdGlvbiBlbnF1 ZXVlZFxuIiwgcGYtDQo+ID5pZCk7DQo+ICAJCQkqdG1wID0gcGYtPm5leHQ7DQo+IC0JCQlmcmVl KHBmKTsNCj4gIAkJCWJyZWFrOw0KPiAgCQl9DQo+ICAJCWlmIChpID09IG4pDQo+IEBAIC0yODAz LDYgKzI4MjcsNyBAQCBwb3J0X3F1ZXVlX2FjdGlvbl9oYW5kbGVfY3JlYXRlKHBvcnRpZF90DQo+ IHBvcnRfaWQsIHVpbnQzMl90IHF1ZXVlX2lkLA0KPiAgCXN0cnVjdCBwb3J0X2luZGlyZWN0X2Fj dGlvbiAqcGlhOw0KPiAgCWludCByZXQ7DQo+ICAJc3RydWN0IHJ0ZV9mbG93X2Vycm9yIGVycm9y Ow0KPiArCXN0cnVjdCBxdWV1ZV9qb2IgKmpvYjsNCj4gDQo+ICAJcmV0ID0gYWN0aW9uX2FsbG9j KHBvcnRfaWQsIGlkLCAmcGlhKTsNCj4gIAlpZiAocmV0KQ0KPiBAQCAtMjgxMyw2ICsyODM4LDEz IEBAIHBvcnRfcXVldWVfYWN0aW9uX2hhbmRsZV9jcmVhdGUocG9ydGlkX3QNCj4gcG9ydF9pZCwg dWludDMyX3QgcXVldWVfaWQsDQo+ICAJCXByaW50ZigiUXVldWUgIyV1IGlzIGludmFsaWRcbiIs IHF1ZXVlX2lkKTsNCj4gIAkJcmV0dXJuIC1FSU5WQUw7DQo+ICAJfQ0KPiArCWpvYiA9IGNhbGxv YygxLCBzaXplb2YoKmpvYikpOw0KPiArCWlmICgham9iKSB7DQo+ICsJCXByaW50ZigiUXVldWUg YWN0aW9uIGNyZWF0ZSBqb2IgYWxsb2NhdGUgZmFpbGVkXG4iKTsNCj4gKwkJcmV0dXJuIC1FTk9N RU07DQo+ICsJfQ0KPiArCWpvYi0+dHlwZSA9IFFVRVVFX0pPQl9UWVBFX0FDVElPTl9DUkVBVEU7 DQo+ICsJam9iLT5waWEgPSBwaWE7DQo+IA0KPiAgCWlmIChhY3Rpb24tPnR5cGUgPT0gUlRFX0ZM T1dfQUNUSU9OX1RZUEVfQUdFKSB7DQo+ICAJCXN0cnVjdCBydGVfZmxvd19hY3Rpb25fYWdlICph Z2UgPQ0KPiBAQCAtMjgyNCwxMSArMjg1NiwxMiBAQCBwb3J0X3F1ZXVlX2FjdGlvbl9oYW5kbGVf Y3JlYXRlKHBvcnRpZF90DQo+IHBvcnRfaWQsIHVpbnQzMl90IHF1ZXVlX2lkLA0KPiAgCS8qIFBv aXNvbmluZyB0byBtYWtlIHN1cmUgUE1EcyB1cGRhdGUgaXQgaW4gY2FzZSBvZiBlcnJvci4gKi8N Cj4gIAltZW1zZXQoJmVycm9yLCAweDg4LCBzaXplb2YoZXJyb3IpKTsNCj4gIAlwaWEtPmhhbmRs ZSA9IHJ0ZV9mbG93X2FzeW5jX2FjdGlvbl9oYW5kbGVfY3JlYXRlKHBvcnRfaWQsDQo+IHF1ZXVl X2lkLA0KPiAtCQkJCQkmYXR0ciwgY29uZiwgYWN0aW9uLCBOVUxMLCAmZXJyb3IpOw0KPiArCQkJ CQkmYXR0ciwgY29uZiwgYWN0aW9uLCBqb2IsICZlcnJvcik7DQo+ICAJaWYgKCFwaWEtPmhhbmRs ZSkgew0KPiAgCQl1aW50MzJfdCBkZXN0cm95X2lkID0gcGlhLT5pZDsNCj4gIAkJcG9ydF9xdWV1 ZV9hY3Rpb25faGFuZGxlX2Rlc3Ryb3kocG9ydF9pZCwgcXVldWVfaWQsDQo+ICAJCQkJCQkgcG9z dHBvbmUsIDEsICZkZXN0cm95X2lkKTsNCj4gKwkJZnJlZShqb2IpOw0KPiAgCQlyZXR1cm4gcG9y dF9mbG93X2NvbXBsYWluKCZlcnJvcik7DQo+ICAJfQ0KPiAgCXBpYS0+dHlwZSA9IGFjdGlvbi0+ dHlwZTsNCj4gQEAgLTI4NDcsNiArMjg4MCw3IEBAIHBvcnRfcXVldWVfYWN0aW9uX2hhbmRsZV9k ZXN0cm95KHBvcnRpZF90DQo+IHBvcnRfaWQsDQo+ICAJc3RydWN0IHBvcnRfaW5kaXJlY3RfYWN0 aW9uICoqdG1wOw0KPiAgCXVpbnQzMl90IGMgPSAwOw0KPiAgCWludCByZXQgPSAwOw0KPiArCXN0 cnVjdCBxdWV1ZV9qb2IgKmpvYjsNCj4gDQo+ICAJaWYgKHBvcnRfaWRfaXNfaW52YWxpZChwb3J0 X2lkLCBFTkFCTEVEX1dBUk4pIHx8DQo+ICAJICAgIHBvcnRfaWQgPT0gKHBvcnRpZF90KVJURV9Q T1JUX0FMTCkNCj4gQEAgLTI4NzMsMTcgKzI5MDcsMjMgQEAgcG9ydF9xdWV1ZV9hY3Rpb25faGFu ZGxlX2Rlc3Ryb3kocG9ydGlkX3QNCj4gcG9ydF9pZCwNCj4gIAkJCSAqIG9mIGVycm9yLg0KPiAg CQkJICovDQo+ICAJCQltZW1zZXQoJmVycm9yLCAweDk5LCBzaXplb2YoZXJyb3IpKTsNCj4gKwkJ CWpvYiA9IGNhbGxvYygxLCBzaXplb2YoKmpvYikpOw0KPiArCQkJaWYgKCFqb2IpIHsNCj4gKwkJ CQlwcmludGYoIlF1ZXVlIGFjdGlvbiBkZXN0cm95IGpvYiBhbGxvY2F0ZQ0KPiBmYWlsZWRcbiIp Ow0KPiArCQkJCXJldHVybiAtRU5PTUVNOw0KPiArCQkJfQ0KPiArCQkJam9iLT50eXBlID0gUVVF VUVfSk9CX1RZUEVfQUNUSU9OX0RFU1RST1k7DQo+ICsJCQlqb2ItPnBpYSA9IHBpYTsNCj4gDQo+ ICAJCQlpZiAocGlhLT5oYW5kbGUgJiYNCj4gIAkJCSAgICBydGVfZmxvd19hc3luY19hY3Rpb25f aGFuZGxlX2Rlc3Ryb3kocG9ydF9pZCwNCj4gLQkJCQlxdWV1ZV9pZCwgJmF0dHIsIHBpYS0+aGFu ZGxlLCBOVUxMLCAmZXJyb3IpKQ0KPiB7DQo+ICsJCQkJcXVldWVfaWQsICZhdHRyLCBwaWEtPmhh bmRsZSwgam9iLCAmZXJyb3IpKSB7DQo+ICAJCQkJcmV0ID0gcG9ydF9mbG93X2NvbXBsYWluKCZl cnJvcik7DQo+ICAJCQkJY29udGludWU7DQo+ICAJCQl9DQo+ICAJCQkqdG1wID0gcGlhLT5uZXh0 Ow0KPiAgCQkJcHJpbnRmKCJJbmRpcmVjdCBhY3Rpb24gIyV1IGRlc3RydWN0aW9uIHF1ZXVlZFxu IiwNCj4gIAkJCSAgICAgICBwaWEtPmlkKTsNCj4gLQkJCWZyZWUocGlhKTsNCj4gIAkJCWJyZWFr Ow0KPiAgCQl9DQo+ICAJCWlmIChpID09IG4pDQo+IEBAIC0yOTAzLDYgKzI5NDMsNyBAQCBwb3J0 X3F1ZXVlX2FjdGlvbl9oYW5kbGVfdXBkYXRlKHBvcnRpZF90DQo+IHBvcnRfaWQsDQo+ICAJc3Ry dWN0IHJ0ZV9wb3J0ICpwb3J0Ow0KPiAgCXN0cnVjdCBydGVfZmxvd19lcnJvciBlcnJvcjsNCj4g IAlzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX2hhbmRsZSAqYWN0aW9uX2hhbmRsZTsNCj4gKwlzdHJ1 Y3QgcXVldWVfam9iICpqb2I7DQo+IA0KPiAgCWFjdGlvbl9oYW5kbGUgPSBwb3J0X2FjdGlvbl9o YW5kbGVfZ2V0X2J5X2lkKHBvcnRfaWQsIGlkKTsNCj4gIAlpZiAoIWFjdGlvbl9oYW5kbGUpDQo+ IEBAIC0yOTE0LDggKzI5NTUsNTYgQEAgcG9ydF9xdWV1ZV9hY3Rpb25faGFuZGxlX3VwZGF0ZShw b3J0aWRfdA0KPiBwb3J0X2lkLA0KPiAgCQlyZXR1cm4gLUVJTlZBTDsNCj4gIAl9DQo+IA0KPiAr CWpvYiA9IGNhbGxvYygxLCBzaXplb2YoKmpvYikpOw0KPiArCWlmICgham9iKSB7DQo+ICsJCXBy aW50ZigiUXVldWUgYWN0aW9uIHVwZGF0ZSBqb2IgYWxsb2NhdGUgZmFpbGVkXG4iKTsNCj4gKwkJ cmV0dXJuIC1FTk9NRU07DQo+ICsJfQ0KPiArCWpvYi0+dHlwZSA9IFFVRVVFX0pPQl9UWVBFX0FD VElPTl9VUERBVEU7DQo+ICsNCj4gIAlpZiAocnRlX2Zsb3dfYXN5bmNfYWN0aW9uX2hhbmRsZV91 cGRhdGUocG9ydF9pZCwgcXVldWVfaWQsICZhdHRyLA0KPiAtCQkJCSAgICBhY3Rpb25faGFuZGxl LCBhY3Rpb24sIE5VTEwsICZlcnJvcikpIHsNCj4gKwkJCQkgICAgYWN0aW9uX2hhbmRsZSwgYWN0 aW9uLCBqb2IsICZlcnJvcikpIHsNCj4gKwkJZnJlZShqb2IpOw0KPiArCQlyZXR1cm4gcG9ydF9m bG93X2NvbXBsYWluKCZlcnJvcik7DQo+ICsJfQ0KPiArCXByaW50ZigiSW5kaXJlY3QgYWN0aW9u ICMldSB1cGRhdGUgcXVldWVkXG4iLCBpZCk7DQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4g Ky8qKiBFbnF1ZXVlIGluZGlyZWN0IGFjdGlvbiBxdWVyeSBvcGVyYXRpb24uICovDQo+ICtpbnQN Cj4gK3BvcnRfcXVldWVfYWN0aW9uX2hhbmRsZV9xdWVyeShwb3J0aWRfdCBwb3J0X2lkLA0KPiAr CQkJICAgICAgIHVpbnQzMl90IHF1ZXVlX2lkLCBib29sIHBvc3Rwb25lLCB1aW50MzJfdCBpZCkN Cj4gK3sNCj4gKwljb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfb3BfYXR0ciBhdHRyID0geyAucG9zdHBv bmUgPSBwb3N0cG9uZX07DQo+ICsJc3RydWN0IHJ0ZV9wb3J0ICpwb3J0Ow0KPiArCXN0cnVjdCBy dGVfZmxvd19lcnJvciBlcnJvcjsNCj4gKwlzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX2hhbmRsZSAq YWN0aW9uX2hhbmRsZTsNCj4gKwlzdHJ1Y3QgcG9ydF9pbmRpcmVjdF9hY3Rpb24gKnBpYTsNCj4g KwlzdHJ1Y3QgcXVldWVfam9iICpqb2I7DQo+ICsNCj4gKwlwaWEgPSBhY3Rpb25fZ2V0X2J5X2lk KHBvcnRfaWQsIGlkKTsNCj4gKwlhY3Rpb25faGFuZGxlID0gcGlhID8gcGlhLT5oYW5kbGUgOiBO VUxMOw0KPiArCWlmICghYWN0aW9uX2hhbmRsZSkNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsN Cj4gKwlwb3J0ID0gJnBvcnRzW3BvcnRfaWRdOw0KPiArCWlmIChxdWV1ZV9pZCA+PSBwb3J0LT5x dWV1ZV9uYikgew0KPiArCQlwcmludGYoIlF1ZXVlICMldSBpcyBpbnZhbGlkXG4iLCBxdWV1ZV9p ZCk7DQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArCX0NCj4gKw0KPiArCWpvYiA9IGNhbGxvYygx LCBzaXplb2YoKmpvYikpOw0KPiArCWlmICgham9iKSB7DQo+ICsJCXByaW50ZigiUXVldWUgYWN0 aW9uIHVwZGF0ZSBqb2IgYWxsb2NhdGUgZmFpbGVkXG4iKTsNCj4gKwkJcmV0dXJuIC1FTk9NRU07 DQo+ICsJfQ0KPiArCWpvYi0+dHlwZSA9IFFVRVVFX0pPQl9UWVBFX0FDVElPTl9RVUVSWTsNCj4g Kwlqb2ItPnBpYSA9IHBpYTsNCj4gKw0KPiArCWlmIChydGVfZmxvd19hc3luY19hY3Rpb25faGFu ZGxlX3F1ZXJ5KHBvcnRfaWQsIHF1ZXVlX2lkLCAmYXR0ciwNCj4gKwkJCQkgICAgYWN0aW9uX2hh bmRsZSwgJmpvYi0+cXVlcnksIGpvYiwgJmVycm9yKSkgew0KPiArCQlmcmVlKGpvYik7DQo+ICAJ CXJldHVybiBwb3J0X2Zsb3dfY29tcGxhaW4oJmVycm9yKTsNCj4gIAl9DQo+ICAJcHJpbnRmKCJJ bmRpcmVjdCBhY3Rpb24gIyV1IHVwZGF0ZSBxdWV1ZWRcbiIsIGlkKTsNCj4gQEAgLTI5NjAsNiAr MzA0OSw3IEBAIHBvcnRfcXVldWVfZmxvd19wdWxsKHBvcnRpZF90IHBvcnRfaWQsIHF1ZXVlaWRf dA0KPiBxdWV1ZV9pZCkNCj4gIAlpbnQgcmV0ID0gMDsNCj4gIAlpbnQgc3VjY2VzcyA9IDA7DQo+ ICAJaW50IGk7DQo+ICsJc3RydWN0IHF1ZXVlX2pvYiAqam9iOw0KPiANCj4gIAlpZiAocG9ydF9p ZF9pc19pbnZhbGlkKHBvcnRfaWQsIEVOQUJMRURfV0FSTikgfHwNCj4gIAkgICAgcG9ydF9pZCA9 PSAocG9ydGlkX3QpUlRFX1BPUlRfQUxMKQ0KPiBAQCAtMjk4OSw2ICszMDc5LDE0IEBAIHBvcnRf cXVldWVfZmxvd19wdWxsKHBvcnRpZF90IHBvcnRfaWQsDQo+IHF1ZXVlaWRfdCBxdWV1ZV9pZCkN Cj4gIAlmb3IgKGkgPSAwOyBpIDwgcmV0OyBpKyspIHsNCj4gIAkJaWYgKHJlc1tpXS5zdGF0dXMg PT0gUlRFX0ZMT1dfT1BfU1VDQ0VTUykNCj4gIAkJCXN1Y2Nlc3MrKzsNCj4gKwkJam9iID0gKHN0 cnVjdCBxdWV1ZV9qb2IgKilyZXNbaV0udXNlcl9kYXRhOw0KPiArCQlpZiAoam9iLT50eXBlID09 IFFVRVVFX0pPQl9UWVBFX0ZMT1dfREVTVFJPWSkNCj4gKwkJCWZyZWUoam9iLT5wZik7DQo+ICsJ CWVsc2UgaWYgKGpvYi0+dHlwZSA9PSBRVUVVRV9KT0JfVFlQRV9BQ1RJT05fREVTVFJPWSkNCj4g KwkJCWZyZWUoam9iLT5waWEpOw0KPiArCQllbHNlIGlmIChqb2ItPnR5cGUgPT0gUVVFVUVfSk9C X1RZUEVfQUNUSU9OX1FVRVJZKQ0KPiArCQkJcG9ydF9hY3Rpb25faGFuZGxlX3F1ZXJ5X2R1bXAo am9iLT5waWEtPnR5cGUsDQo+ICZqb2ItPnF1ZXJ5KTsNCj4gKwkJZnJlZShqb2IpOw0KPiAgCX0N Cj4gIAlwcmludGYoIlF1ZXVlICMldSBwdWxsZWQgJXUgb3BlcmF0aW9ucyAoJXUgZmFpbGVkLCAl dQ0KPiBzdWNjZWVkZWQpXG4iLA0KPiAgCSAgICAgICBxdWV1ZV9pZCwgcmV0LCByZXQgLSBzdWNj ZXNzLCBzdWNjZXNzKTsNCj4gZGlmZiAtLWdpdCBhL2FwcC90ZXN0LXBtZC90ZXN0cG1kLmggYi9h cHAvdGVzdC1wbWQvdGVzdHBtZC5oDQo+IGluZGV4IGZiMmY1MTk1ZDMuLmM3YTk2ZDA2MmMgMTAw NjQ0DQo+IC0tLSBhL2FwcC90ZXN0LXBtZC90ZXN0cG1kLmgNCj4gKysrIGIvYXBwL3Rlc3QtcG1k L3Rlc3RwbWQuaA0KPiBAQCAtMTA1LDYgKzEwNSwxNSBAQCBlbnVtIHsNCj4gIAkvKio8IGFsbG9j YXRlIG1lbXBvb2wgbmF0aXZlbHksIHVzZQ0KPiBydGVfcGt0bWJ1Zl9wb29sX2NyZWF0ZV9leHRi dWYgKi8NCj4gIH07DQo+IA0KPiArZW51bSB7DQo+ICsJUVVFVUVfSk9CX1RZUEVfRkxPV19DUkVB VEUsDQo+ICsJUVVFVUVfSk9CX1RZUEVfRkxPV19ERVNUUk9ZLA0KPiArCVFVRVVFX0pPQl9UWVBF X0FDVElPTl9DUkVBVEUsDQo+ICsJUVVFVUVfSk9CX1RZUEVfQUNUSU9OX0RFU1RST1ksDQo+ICsJ UVVFVUVfSk9CX1RZUEVfQUNUSU9OX1VQREFURSwNCj4gKwlRVUVVRV9KT0JfVFlQRV9BQ1RJT05f UVVFUlksDQo+ICt9Ow0KPiArDQo+ICAvKioNCj4gICAqIFRoZSBkYXRhIHN0cnVjdHVyZSBhc3Nv Y2lhdGVkIHdpdGggUlggYW5kIFRYIHBhY2tldCBidXJzdCBzdGF0aXN0aWNzDQo+ICAgKiB0aGF0 IGFyZSByZWNvcmRlZCBmb3IgZWFjaCBmb3J3YXJkaW5nIHN0cmVhbS4NCj4gQEAgLTIyMCw2ICsy MjksMjMgQEAgc3RydWN0IHBvcnRfaW5kaXJlY3RfYWN0aW9uIHsNCj4gIAllbnVtIGFnZV9hY3Rp b25fY29udGV4dF90eXBlIGFnZV90eXBlOyAvKio8IEFnZSBhY3Rpb24gY29udGV4dA0KPiB0eXBl LiAqLw0KPiAgfTsNCj4gDQo+ICsvKiBEZXNjcmlwdG9yIGZvciBhY3Rpb24gcXVlcnkgZGF0YS4g Ki8NCj4gK3VuaW9uIHBvcnRfYWN0aW9uX3F1ZXJ5IHsNCj4gKwlzdHJ1Y3QgcnRlX2Zsb3dfcXVl cnlfY291bnQgY291bnQ7DQo+ICsJc3RydWN0IHJ0ZV9mbG93X3F1ZXJ5X2FnZSBhZ2U7DQo+ICsJ c3RydWN0IHJ0ZV9mbG93X2FjdGlvbl9jb25udHJhY2sgY3Q7DQo+ICt9Ow0KPiArDQo+ICsvKiBE ZXNjcmlwdG9yIGZvciBxdWV1ZSBqb2IuICovDQo+ICtzdHJ1Y3QgcXVldWVfam9iIHsNCj4gKwl1 aW50MzJfdCB0eXBlOyAvKio8IEpvYiB0eXBlLiAqLw0KPiArCXVuaW9uIHsNCj4gKwkJc3RydWN0 IHBvcnRfZmxvdyAqcGY7DQo+ICsJCXN0cnVjdCBwb3J0X2luZGlyZWN0X2FjdGlvbiAqcGlhOw0K PiArCX07DQo+ICsJdW5pb24gcG9ydF9hY3Rpb25fcXVlcnkgcXVlcnk7DQo+ICt9Ow0KPiArDQo+ ICBzdHJ1Y3QgcG9ydF9mbG93X3R1bm5lbCB7DQo+ICAJTElTVF9FTlRSWShwb3J0X2Zsb3dfdHVu bmVsKSBjaGFpbjsNCj4gIAlzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uICpwbWRfYWN0aW9uczsNCj4g QEAgLTk4MCw2ICsxMDA2LDggQEAgaW50IHBvcnRfcXVldWVfYWN0aW9uX2hhbmRsZV9kZXN0cm95 KHBvcnRpZF90DQo+IHBvcnRfaWQsDQo+ICBpbnQgcG9ydF9xdWV1ZV9hY3Rpb25faGFuZGxlX3Vw ZGF0ZShwb3J0aWRfdCBwb3J0X2lkLCB1aW50MzJfdCBxdWV1ZV9pZCwNCj4gIAkJCQkgICAgYm9v bCBwb3N0cG9uZSwgdWludDMyX3QgaWQsDQo+ICAJCQkJICAgIGNvbnN0IHN0cnVjdCBydGVfZmxv d19hY3Rpb24gKmFjdGlvbik7DQo+ICtpbnQgcG9ydF9xdWV1ZV9hY3Rpb25faGFuZGxlX3F1ZXJ5 KHBvcnRpZF90IHBvcnRfaWQsIHVpbnQzMl90IHF1ZXVlX2lkLA0KPiArCQkJCSAgIGJvb2wgcG9z dHBvbmUsIHVpbnQzMl90IGlkKTsNCj4gIGludCBwb3J0X3F1ZXVlX2Zsb3dfcHVzaChwb3J0aWRf dCBwb3J0X2lkLCBxdWV1ZWlkX3QgcXVldWVfaWQpOw0KPiAgaW50IHBvcnRfcXVldWVfZmxvd19w dWxsKHBvcnRpZF90IHBvcnRfaWQsIHF1ZXVlaWRfdCBxdWV1ZV9pZCk7DQo+ICBpbnQgcG9ydF9m bG93X3ZhbGlkYXRlKHBvcnRpZF90IHBvcnRfaWQsDQo+IGRpZmYgLS1naXQgYS9kb2MvZ3VpZGVz L3Byb2dfZ3VpZGUvcnRlX2Zsb3cucnN0DQo+IGIvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3J0ZV9m bG93LnJzdA0KPiBpbmRleCA1ODg5MTRiMjMxLi45ZTZhYWRmOTU0IDEwMDY0NA0KPiAtLS0gYS9k b2MvZ3VpZGVzL3Byb2dfZ3VpZGUvcnRlX2Zsb3cucnN0DQo+ICsrKyBiL2RvYy9ndWlkZXMvcHJv Z19ndWlkZS9ydGVfZmxvdy5yc3QNCj4gQEAgLTM5MTEsNiArMzkxMSwyMiBAQCBBc3luY2hyb25v dXMgdmVyc2lvbiBvZiBpbmRpcmVjdCBhY3Rpb24gdXBkYXRlDQo+IEFQSS4NCj4gICAgICAgICAg ICAgdm9pZCAqdXNlcl9kYXRhLA0KPiAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3Ig KmVycm9yKTsNCj4gDQo+ICtFbnF1ZXVlIGluZGlyZWN0IGFjdGlvbiBxdWVyeSBvcGVyYXRpb24N Cj4gK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCj4gKw0KPiArQXN5 bmNocm9ub3VzIHZlcnNpb24gb2YgaW5kaXJlY3QgYWN0aW9uIHF1ZXJ5IEFQSS4NCj4gKw0KPiAr Li4gY29kZS1ibG9jazo6IGMNCj4gKw0KPiArICAgaW50DQo+ICsgICBydGVfZmxvd19hc3luY19h Y3Rpb25faGFuZGxlX3F1ZXJ5KHVpbnQxNl90IHBvcnRfaWQsDQo+ICsgICAgICAgICAgIHVpbnQz Ml90IHF1ZXVlX2lkLA0KPiArICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfb3BfYXR0 ciAqcV9vcHNfYXR0ciwNCj4gKyAgICAgICAgICAgc3RydWN0IHJ0ZV9mbG93X2FjdGlvbl9oYW5k bGUgKmFjdGlvbl9oYW5kbGUsDQo+ICsgICAgICAgICAgIHZvaWQgKmRhdGEsDQo+ICsgICAgICAg ICAgIHZvaWQgKnVzZXJfZGF0YSwNCj4gKyAgICAgICAgICAgc3RydWN0IHJ0ZV9mbG93X2Vycm9y ICplcnJvcik7DQo+ICsNCj4gIFB1c2ggZW5xdWV1ZWQgb3BlcmF0aW9ucw0KPiAgfn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+DQo+IA0KPiBkaWZmIC0tZ2l0IGEvZG9jL2d1aWRlcy9yZWxfbm90ZXMv cmVsZWFzZV8yMl8xMS5yc3QNCj4gYi9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIyXzEx LnJzdA0KPiBpbmRleCA4YzAyMWNmMDUwLi41OTdiMjhlZGUxIDEwMDY0NA0KPiAtLS0gYS9kb2Mv Z3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIyXzExLnJzdA0KPiArKysgYi9kb2MvZ3VpZGVzL3Jl bF9ub3Rlcy9yZWxlYXNlXzIyXzExLnJzdA0KPiBAQCAtNTUsNiArNTUsMTEgQEAgTmV3IEZlYXR1 cmVzDQo+ICAgICAgIEFsc28sIG1ha2Ugc3VyZSB0byBzdGFydCB0aGUgYWN0dWFsIHRleHQgYXQg dGhlIG1hcmdpbi4NCj4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KPiANCj4gKyogKipBZGRlZCBzdXBwb3J0IGZvciBxdWV1ZSBi YXNlZCBhc3luYyBxdWVyeSBpbiBydGVfZmxvdy4qKg0KPiArDQo+ICsgIEFkZGVkIG5ldyBBUEkg YGBydGVfZmxvd19hc3luY19hY3Rpb25faGFuZGxlX3F1ZXJ5KClgYCwgdG8gcXVlcnkgdGhlDQo+ ICsgIGFjdGlvbiBhc3luY2hyb25vdXNseS4NCj4gKw0KPiANCj4gIFJlbW92ZWQgSXRlbXMNCj4g IC0tLS0tLS0tLS0tLS0NCj4gZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMvdGVzdHBtZF9hcHBfdWcv dGVzdHBtZF9mdW5jcy5yc3QNCj4gYi9kb2MvZ3VpZGVzL3Rlc3RwbWRfYXBwX3VnL3Rlc3RwbWRf ZnVuY3MucnN0DQo+IGluZGV4IDMzMGUzNDQyN2QuLmQyYzZlMzg1ZGIgMTAwNjQ0DQo+IC0tLSBh L2RvYy9ndWlkZXMvdGVzdHBtZF9hcHBfdWcvdGVzdHBtZF9mdW5jcy5yc3QNCj4gKysrIGIvZG9j L2d1aWRlcy90ZXN0cG1kX2FwcF91Zy90ZXN0cG1kX2Z1bmNzLnJzdA0KPiBAQCAtNDY3Niw2ICs0 Njc2LDI1IEBAIFF1ZXJ5IGluZGlyZWN0IGFjdGlvbiBoYXZpbmcgaWQgMTAwOjoNCj4gDQo+ICAg ICB0ZXN0cG1kPiBmbG93IGluZGlyZWN0X2FjdGlvbiAwIHF1ZXJ5IDEwMA0KPiANCj4gK0VucXVl dWVpbmcgcXVlcnkgb2YgaW5kaXJlY3QgYWN0aW9ucw0KPiArfn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fg0KPiArDQo+ICtgYGZsb3cgcXVldWUgaW5kaXJlY3RfYWN0aW9uIHF1 ZXJ5YGAgYWRkcyBxdWVyeSBvcGVyYXRpb24gZm9yIGFuIGluZGlyZWN0DQo+ICthY3Rpb24gdG8g YSBxdWV1ZS4gSXQgaXMgYm91bmQgdG8NCj4gYGBydGVfZmxvd19hc3luY19hY3Rpb25faGFuZGxl X3F1ZXJ5KClgYDo6DQo+ICsNCj4gKyAgIGZsb3cgcXVldWUge3BvcnRfaWR9IGluZGlyZWN0X2Fj dGlvbiB7cXVldWVfaWR9IHF1ZXJ5DQo+ICsgICAgICB7aW5kaXJlY3RfYWN0aW9uX2lkfSBbcG9z dHBvbmUge2Jvb2xlYW59XQ0KPiArDQo+ICtJZiBzdWNjZXNzZnVsLCBpdCB3aWxsIHNob3c6Og0K PiArDQo+ICsgICBJbmRpcmVjdCBhY3Rpb24gI1suLi5dIHF1ZXJ5IHF1ZXVlZA0KPiArDQo+ICtP dGhlcndpc2UgaXQgd2lsbCBzaG93IGFuIGVycm9yIG1lc3NhZ2Ugb2YgdGhlIGZvcm06Og0KPiAr DQo+ICsgICBDYXVnaHQgZXJyb3IgdHlwZSBbLi4uXSAoWy4uLl0pOiBbLi4uXQ0KPiArDQo+ICtg YGZsb3cgcXVldWUgcHVsbGBgIG11c3QgYmUgY2FsbGVkIHRvIHJldHJpZXZlIHRoZSBvcGVyYXRp b24gc3RhdHVzLg0KPiArDQo+ICBTYW1wbGUgUWluUSBmbG93IHJ1bGVzDQo+ICB+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+DQo+IA0KPiBkaWZmIC0tZ2l0IGEvbGliL2V0aGRldi9ydGVfZmxvdy5jIGIv bGliL2V0aGRldi9ydGVfZmxvdy5jDQo+IGluZGV4IDUwMWJlOWQ2MDIuLmViNmE2YjczN2UgMTAw NjQ0DQo+IC0tLSBhL2xpYi9ldGhkZXYvcnRlX2Zsb3cuYw0KPiArKysgYi9saWIvZXRoZGV2L3J0 ZV9mbG93LmMNCj4gQEAgLTE4NDQsMyArMTg0NCwyMSBAQCBydGVfZmxvd19hc3luY19hY3Rpb25f aGFuZGxlX3VwZGF0ZSh1aW50MTZfdA0KPiBwb3J0X2lkLA0KPiAgCQkJCQkgIGFjdGlvbl9oYW5k bGUsIHVwZGF0ZSwgdXNlcl9kYXRhLA0KPiBlcnJvcik7DQo+ICAJcmV0dXJuIGZsb3dfZXJyKHBv cnRfaWQsIHJldCwgZXJyb3IpOw0KPiAgfQ0KPiArDQo+ICtpbnQNCj4gK3J0ZV9mbG93X2FzeW5j X2FjdGlvbl9oYW5kbGVfcXVlcnkodWludDE2X3QgcG9ydF9pZCwNCj4gKwkJdWludDMyX3QgcXVl dWVfaWQsDQo+ICsJCWNvbnN0IHN0cnVjdCBydGVfZmxvd19vcF9hdHRyICpvcF9hdHRyLA0KPiAr CQljb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX2hhbmRsZSAqYWN0aW9uX2hhbmRsZSwNCj4g KwkJdm9pZCAqZGF0YSwNCj4gKwkJdm9pZCAqdXNlcl9kYXRhLA0KPiArCQlzdHJ1Y3QgcnRlX2Zs b3dfZXJyb3IgKmVycm9yKQ0KPiArew0KPiArCXN0cnVjdCBydGVfZXRoX2RldiAqZGV2ID0gJnJ0 ZV9ldGhfZGV2aWNlc1twb3J0X2lkXTsNCj4gKwljb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfb3BzICpv cHMgPSBydGVfZmxvd19vcHNfZ2V0KHBvcnRfaWQsIGVycm9yKTsNCj4gKwlpbnQgcmV0Ow0KPiAr DQo+ICsJcmV0ID0gb3BzLT5hc3luY19hY3Rpb25faGFuZGxlX3F1ZXJ5KGRldiwgcXVldWVfaWQs IG9wX2F0dHIsDQo+ICsJCQkJCSAgYWN0aW9uX2hhbmRsZSwgZGF0YSwgdXNlcl9kYXRhLA0KPiBl cnJvcik7DQo+ICsJcmV0dXJuIGZsb3dfZXJyKHBvcnRfaWQsIHJldCwgZXJyb3IpOw0KPiArfQ0K PiBkaWZmIC0tZ2l0IGEvbGliL2V0aGRldi9ydGVfZmxvdy5oIGIvbGliL2V0aGRldi9ydGVfZmxv dy5oDQo+IGluZGV4IGE3OWYxZTdlZjAuLmE1ZTg0YmQ4NWUgMTAwNjQ0DQo+IC0tLSBhL2xpYi9l dGhkZXYvcnRlX2Zsb3cuaA0KPiArKysgYi9saWIvZXRoZGV2L3J0ZV9mbG93LmgNCj4gQEAgLTU2 MTIsNiArNTYxMiw1MCBAQCBydGVfZmxvd19hc3luY19hY3Rpb25faGFuZGxlX3VwZGF0ZSh1aW50 MTZfdA0KPiBwb3J0X2lkLA0KPiAgCQljb25zdCB2b2lkICp1cGRhdGUsDQo+ICAJCXZvaWQgKnVz ZXJfZGF0YSwNCj4gIAkJc3RydWN0IHJ0ZV9mbG93X2Vycm9yICplcnJvcik7DQo+ICsNCj4gKy8q Kg0KPiArICogQHdhcm5pbmcNCj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNo YW5nZSB3aXRob3V0IHByaW9yIG5vdGljZS4NCj4gKyAqDQo+ICsgKiBFbnF1ZXVlIGluZGlyZWN0 IGFjdGlvbiBxdWVyeSBvcGVyYXRpb24uDQo+ICsgKg0KPiArICogUmV0cmlldmUgYWN0aW9uLXNw ZWNpZmljIGRhdGEgc3VjaCBhcyBjb3VudGVycy4NCj4gKyAqIERhdGEgaXMgZ2F0aGVyZWQgYnkg c3BlY2lhbCBhY3Rpb24gd2hpY2ggbWF5IGJlIHByZXNlbnQvcmVmZXJlbmNlZCBpbg0KPiArICog bW9yZSB0aGFuIG9uZSBmbG93IHJ1bGUgZGVmaW5pdGlvbi4NCj4gKyAqIERhdGEgd2lsbCBiZSBh dmFpbGFibGUgb25seSB3aGVuIGNvbXBsZXRpb24gZXZlbnQgcmV0dXJucy4NCj4gKyAqDQo+ICsg KiBAc2VlIFJURV9GTE9XX0FDVElPTl9UWVBFX0NPTk5UUkFDSw0KPiArICoNCj4gKyAqIEBwYXJh bSBwb3J0X2lkDQo+ICsgKiAgIFBvcnQgaWRlbnRpZmllciBvZiBFdGhlcm5ldCBkZXZpY2UuDQo+ ICsgKiBAcGFyYW1baW5dIHF1ZXVlX2lkDQo+ICsgKiAgIEZsb3cgcXVldWUgd2hpY2ggaXMgdXNl ZCB0byBxdWVyeSB0aGUgYWN0aW9uLg0KPiArICogQHBhcmFtW2luXSBvcF9hdHRyDQo+ICsgKiAg IEluZGlyZWN0IGFjdGlvbiB1cGRhdGUgb3BlcmF0aW9uIGF0dHJpYnV0ZXMuDQo+ICsgKiBAcGFy YW1baW5dIGFjdGlvbl9oYW5kbGUNCj4gKyAqICAgSGFuZGxlIGZvciB0aGUgYWN0aW9uIG9iamVj dCB0byBxdWVyeS4NCj4gKyAqIEBwYXJhbVtpbiwgb3V0XSBkYXRhDQo+ICsgKiAgIFBvaW50ZXIg dG8gc3RvcmFnZSBmb3IgdGhlIGFzc29jaWF0ZWQgcXVlcnkgZGF0YSB0eXBlLg0KPiArICogICBU aGUgb3V0IGRhdGEgd2lsbCBiZSBhdmFpbGFibGUgb25seSB3aGVuIGNvbXBsZXRpb24gZXZlbnQg cmV0dXJucw0KPiArICogICBmcm9tIHJ0ZV9mbG93X3B1bGwuDQo+ICsgKiBAcGFyYW1baW5dIHVz ZXJfZGF0YQ0KPiArICogICBUaGUgdXNlciBkYXRhIHRoYXQgd2lsbCBiZSByZXR1cm5lZCBvbiB0 aGUgY29tcGxldGlvbiBldmVudHMuDQo+ICsgKiBAcGFyYW1bb3V0XSBlcnJvcg0KPiArICogICBQ ZXJmb3JtIHZlcmJvc2UgZXJyb3IgcmVwb3J0aW5nIGlmIG5vdCBOVUxMLiBQTURzIGluaXRpYWxp emUgdGhpcw0KPiArICogICBzdHJ1Y3R1cmUgaW4gY2FzZSBvZiBlcnJvciBvbmx5Lg0KPiArICoN Cj4gKyAqIEByZXR1cm4NCj4gKyAqICAgMCBvbiBzdWNjZXNzLCBhIG5lZ2F0aXZlIGVycm5vIHZh bHVlIG90aGVyd2lzZSBhbmQgcnRlX2Vycm5vIGlzIHNldC4NCj4gKyAqLw0KPiArX19ydGVfZXhw ZXJpbWVudGFsDQo+ICtpbnQNCj4gK3J0ZV9mbG93X2FzeW5jX2FjdGlvbl9oYW5kbGVfcXVlcnko dWludDE2X3QgcG9ydF9pZCwNCj4gKwkJdWludDMyX3QgcXVldWVfaWQsDQo+ICsJCWNvbnN0IHN0 cnVjdCBydGVfZmxvd19vcF9hdHRyICpvcF9hdHRyLA0KPiArCQljb25zdCBzdHJ1Y3QgcnRlX2Zs b3dfYWN0aW9uX2hhbmRsZSAqYWN0aW9uX2hhbmRsZSwNCj4gKwkJdm9pZCAqZGF0YSwNCj4gKwkJ dm9pZCAqdXNlcl9kYXRhLA0KPiArCQlzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKTsNCj4g ICNpZmRlZiBfX2NwbHVzcGx1cw0KPiAgfQ0KPiAgI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9saWIv ZXRoZGV2L3J0ZV9mbG93X2RyaXZlci5oIGIvbGliL2V0aGRldi9ydGVfZmxvd19kcml2ZXIuaA0K PiBpbmRleCAyYmZmNzMyZDZhLi43Mjg5ZGViNTM4IDEwMDY0NA0KPiAtLS0gYS9saWIvZXRoZGV2 L3J0ZV9mbG93X2RyaXZlci5oDQo+ICsrKyBiL2xpYi9ldGhkZXYvcnRlX2Zsb3dfZHJpdmVyLmgN Cj4gQEAgLTI2MCw2ICsyNjAsMTUgQEAgc3RydWN0IHJ0ZV9mbG93X29wcyB7DQo+ICAJCSBjb25z dCB2b2lkICp1cGRhdGUsDQo+ICAJCSB2b2lkICp1c2VyX2RhdGEsDQo+ICAJCSBzdHJ1Y3QgcnRl X2Zsb3dfZXJyb3IgKmVycm9yKTsNCj4gKwkvKiogU2VlIHJ0ZV9mbG93X2FzeW5jX2FjdGlvbl9o YW5kbGVfcXVlcnkoKSAqLw0KPiArCWludCAoKmFzeW5jX2FjdGlvbl9oYW5kbGVfcXVlcnkpDQo+ ICsJCShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gKwkJIHVpbnQzMl90IHF1ZXVlX2lkLA0K PiArCQkgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X29wX2F0dHIgKm9wX2F0dHIsDQo+ICsJCSBjb25z dCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX2hhbmRsZSAqYWN0aW9uX2hhbmRsZSwNCj4gKwkJIHZv aWQgKmRhdGEsDQo+ICsJCSB2b2lkICp1c2VyX2RhdGEsDQo+ICsJCSBzdHJ1Y3QgcnRlX2Zsb3df ZXJyb3IgKmVycm9yKTsNCj4gIH07DQo+IA0KPiAgLyoqDQo+IGRpZmYgLS1naXQgYS9saWIvZXRo ZGV2L3ZlcnNpb24ubWFwIGIvbGliL2V0aGRldi92ZXJzaW9uLm1hcA0KPiBpbmRleCAwM2Y1MmZl ZTkxLi43MjIwODFhOGM3IDEwMDY0NA0KPiAtLS0gYS9saWIvZXRoZGV2L3ZlcnNpb24ubWFwDQo+ ICsrKyBiL2xpYi9ldGhkZXYvdmVyc2lvbi5tYXANCj4gQEAgLTI4NSw2ICsyODUsOSBAQCBFWFBF UklNRU5UQUwgew0KPiAgCXJ0ZV9tdHJfY29sb3JfaW5fcHJvdG9jb2xfcHJpb3JpdHlfZ2V0Ow0K PiAgCXJ0ZV9tdHJfY29sb3JfaW5fcHJvdG9jb2xfc2V0Ow0KPiAgCXJ0ZV9tdHJfbWV0ZXJfdmxh bl90YWJsZV91cGRhdGU7DQo+ICsNCj4gKwkjIGFkZGVkIGluIDIyLjExDQo+ICsJcnRlX2Zsb3df YXN5bmNfYWN0aW9uX2hhbmRsZV9xdWVyeTsNCj4gIH07DQo+IA0KPiAgSU5URVJOQUwgew0KPiAt LQ0KPiAyLjI1LjENCg0KQWNrZWQtYnk6IE9yaSBLYW0gPG9yaWthQG52aWRpYS5jb20+DQpCZXN0 LA0KT3JpDQo=