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 ADE06A04B5; Thu, 1 Oct 2020 11:05:16 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0D0AF1DA10; Thu, 1 Oct 2020 11:05:15 +0200 (CEST) Received: from nat-hk.nvidia.com (nat-hk.nvidia.com [203.18.50.4]) by dpdk.org (Postfix) with ESMTP id 8A97F1D9F3 for ; Thu, 1 Oct 2020 11:05:12 +0200 (CEST) Received: from HKMAIL101.nvidia.com (Not Verified[10.18.92.77]) by nat-hk.nvidia.com (using TLS: TLSv1.2, AES256-SHA) id ; Thu, 01 Oct 2020 17:05:10 +0800 Received: from HKMAIL104.nvidia.com (10.18.16.13) by HKMAIL101.nvidia.com (10.18.16.10) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Thu, 1 Oct 2020 09:05:03 +0000 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.101) by HKMAIL104.nvidia.com (10.18.16.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Thu, 1 Oct 2020 09:05:02 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UZwy1SHmOM6BCqLpb8boVOROnClrogoiNnXC3qCPCziNNWXosXuEZVqJJiqGg54eYez8RIIyS80YFloshvCr465W4cSGVXx1h8KiawDkS90ditv5AeEf7SG1bUVQn0WVtjAwe1OS+AbgK9hmc+YCr0B0MMv2fsPeh+8T9F9X5s7ThV3AhC0FCHBr4nZxsjMMogcEMmkBiRB9R96ww5IA6V2v9mJ6uAL4HTuCzUNzpthURRBw6K8cDxMjsxEpHqAT4oePvp0HJXoB616gaxbDIrbRvMI65oznW4hOvwhIBSbIVqTQI05BGQZeg3Sax0qGAUaMBZsHBlmFRnxU5d8CPw== 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=xVNat+lYzo297kkiJaxnP5UN26X+K9KXlplZLXZiMoQ=; b=GXDhPFAN825A0qRQxM8mcb5Ejh9nN35yGkzwMS74jfvx0iJ4Eo9mRCbVS8l/KuEM6Afk4A+N04i0Pce+qFMloVvel17h9Nh17MEQcwSqihAuJoMD7CT0rUtPokZvWj3cD6YkMut3lHIaCl2vG6xZEE6FtFmiu0qqpUurOsSUiXBYkqWO9vQg1rxtjj715xqd+gUhCFo6E+/US0jRj+69mC4bbOiLLDY8vLc0Rqa67AH8WrUivrXnUyFOm3SwPOWsg2ySk+wNvcEFXuk5y1REl+lRgVM8TVZv1qO5ak8Xq1w7JK5q9gogb+fkkiw27+DQzSs637+Hxo7bIphDJPe0kA== 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 Received: from BY5PR12MB3668.namprd12.prod.outlook.com (2603:10b6:a03:194::25) by BY5PR12MB4243.namprd12.prod.outlook.com (2603:10b6:a03:20f::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3433.34; Thu, 1 Oct 2020 09:05:00 +0000 Received: from BY5PR12MB3668.namprd12.prod.outlook.com ([fe80::d95e:4a6a:b87e:bf4c]) by BY5PR12MB3668.namprd12.prod.outlook.com ([fe80::d95e:4a6a:b87e:bf4c%5]) with mapi id 15.20.3433.038; Thu, 1 Oct 2020 09:05:00 +0000 From: Gregory Etelson To: Ajit Khaparde CC: dpdk-dev , Matan Azrad , Raslan Darawsheh , Ori Kam , Wenzhuo Lu , Beilei Xing , "Bernard Iremonger" , John McNamara , Marko Kovacevic , "Eli Britstein" , Oz Shlomo Thread-Topic: [dpdk-dev] [PATCH v3 4/4] app/testpmd: add commands for tunnel offload API Thread-Index: AQHWlwr0qfLJwm8gsUO7NAL/tb4ifKmCOlOAgAADjZA= Date: Thu, 1 Oct 2020 09:05:00 +0000 Message-ID: References: <20200625160348.26220-1-getelson@mellanox.com> <20200930091854.19768-1-getelson@nvidia.com> <20200930091854.19768-5-getelson@nvidia.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: broadcom.com; dkim=none (message not signed) header.d=none;broadcom.com; dmarc=none action=none header.from=nvidia.com; x-originating-ip: [176.230.225.24] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b6841a44-c4a2-4ae0-6636-08d865e91387 x-ms-traffictypediagnostic: BY5PR12MB4243: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2089; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: h9l/+hgFn2PXs+R3lYfM/zCbxcts33O9Nt3F3WxThIXFIKuDr5LSuqW6kGbnnlQX5OOgmeM3Dq6Xn2UpX+DHmxzodgGqx6CBCmCQTt44upTC4Tltmm/DPFaoxmi5eCV5URExX3i0Zn49aWQqvDlzXmwwJd//eozkpU1vQ/lp9w2RGDAnVFAx9RRoRGjO9B7i++sA0bbJ0DTSi8s36RUX0K0Ibv5zP9L2SvIb2O5gvss/6iZR8lHmlkBh25HRCYzHAYayy/oPPAvmDSzfn5ipgm//abjRE0QNix/Dku0kPtK2CQaLZgA9j39JG/FHQJte x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BY5PR12MB3668.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(346002)(376002)(366004)(136003)(39860400002)(396003)(8676002)(4326008)(6916009)(30864003)(71200400001)(478600001)(5660300002)(8936002)(55016002)(52536014)(66946007)(76116006)(66446008)(66556008)(66476007)(64756008)(53546011)(7696005)(6506007)(86362001)(26005)(186003)(54906003)(33656002)(316002)(107886003)(9686003)(2906002)(83380400001)(579004)(559001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: n4I2jV5HBwHQI1folAfunHtRaUN5fJ12dlRvc0ngoRifh6dlYLbaMMlsGahZvP8vs54EoPi6VSZ1Bf0iClEF84+ephHj7HKpjAXYwroLqn7FXxwH2UpBVeJ2EvNwuugr6tv/zJPqjypiJvfAGabutLXoJN9Mv9Acw7s3eBwBRnJbuyUIWaTonmYu1GMTPhpcfRGojZH71eogpzczsdTmY+6ZC+WHs48RfuIyktNPlb5sMGi17V678DQK7yWneNPRpxj7WbfcbjI64fIcjT8WgFR77YAR+xE+zod0CsF2IQq2enYty/HCx9h4ul/74vm4nIPGc41LDBC2mGksG1jBWKTwuvikea1qgui/oQK7loagqJxdbWadMbvI1ZBuFhfLCQvnoo6e9qLnFMGuC/GVWrZ5xm4NcRlgc0HJ1tl47sSm2/NGt2tFoK1+acpBSuW9pd9zOD3ah7NDq+ImyZjlCjEnCtmef5NML+PE8hS968KZfC/lxvfIFNHEx7y3521wr5ncpOFGdnR14TX2zO05+VTr6aMqhacRoAXVSoJjMHJcAqWPiVg8IE434dfsnOJmKUFikziYcamNZzfcaEYt8HrixqlB4zDsc+5brlAT14m9XiO6FvFGBy8PJL8FMvdgA1rKBSL27H+d17MmPkjCoQ== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BY5PR12MB3668.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b6841a44-c4a2-4ae0-6636-08d865e91387 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Oct 2020 09:05:00.1281 (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: SCop2AFS2VX3UW+jmm+R4Ut4bWaDzWcQOj64dmIzDBDgP7dXK5WS3UGECc/wVlsvBONaNFvnMZ/iN9pCyrvlEw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4243 X-OriginatorOrg: Nvidia.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1601543110; bh=xVNat+lYzo297kkiJaxnP5UN26X+K9KXlplZLXZiMoQ=; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To: CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References: In-Reply-To:Accept-Language:Content-Language:X-MS-Has-Attach: X-MS-TNEF-Correlator:authentication-results:x-originating-ip: x-ms-publictraffictype:x-ms-office365-filtering-correlation-id: x-ms-traffictypediagnostic:x-ms-exchange-transport-forked: x-microsoft-antispam-prvs:x-ms-oob-tlc-oobclassifiers: x-ms-exchange-senderadcheck:x-microsoft-antispam: x-microsoft-antispam-message-info:x-forefront-antispam-report: x-ms-exchange-antispam-messagedata:Content-Type: Content-Transfer-Encoding:MIME-Version: X-MS-Exchange-CrossTenant-AuthAs: X-MS-Exchange-CrossTenant-AuthSource: X-MS-Exchange-CrossTenant-Network-Message-Id: X-MS-Exchange-CrossTenant-originalarrivaltime: X-MS-Exchange-CrossTenant-fromentityheader: X-MS-Exchange-CrossTenant-id:X-MS-Exchange-CrossTenant-mailboxtype: X-MS-Exchange-CrossTenant-userprincipalname: X-MS-Exchange-Transport-CrossTenantHeadersStamped:X-OriginatorOrg; b=L8CZg8wTDpVLoN6MAWbE1LR1a1kN5Q2Lxnw1QdirBTHoc10GD2xY5k/chLRPW4PEN 1Q3IcAjhcQnrTCKDnUe9qS2wrtjtJMCmd4zTrIb5gPixDeN/02EvjDWZspDEiHhQ/o JCXsgO5T2Pe+E974UPAAPdAdd2VYZjNfK1wDzUMVTfkHBZVEL4CMcHZyxqaitSIORG qP74FSHAlKlUYbyjJB7K6VrIfxLi7McWAu/NDv1yCSrZKez63FHsMbB0O9BBGe7rvJ mBy0Tm7vnwU2yOI6C+gADhEGA2/tqLA7//mCWn1PhXUWhgN+in1cwRFXUM+mSsw68k ilH49ArXxBvBg== Subject: Re: [dpdk-dev] [PATCH v3 4/4] app/testpmd: add commands for tunnel offload API 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" SGVsbG8gQWppdCwNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBPbiBXZWQsIFNl cCAzMCwgMjAyMCBhdCAyOjIxIEFNIEdyZWdvcnkgRXRlbHNvbiA8Z2V0ZWxzb25AbnZpZGlhLmNv bT4NCj4gd3JvdGU6DQo+ID4NCj4gPiBUdW5uZWwgT2ZmbG9hZCBBUEkgcHJvdmlkZXMgaGFyZHdh cmUgaW5kZXBlbmRlbnQsIHVuaWZpZWQgbW9kZWwNCj4gPiB0byBvZmZsb2FkIHR1bm5lbGVkIHRy YWZmaWMuIEtleSBtb2RlbCBlbGVtZW50cyBhcmU6DQo+ID4gIC0gYXBwbHkgbWF0Y2hlcyB0byBi b3RoIG91dGVyIGFuZCBpbm5lciBwYWNrZXQgaGVhZGVycw0KPiA+ICAgIGR1cmluZyBlbnRpcmUg b2ZmbG9hZCBwcm9jZWR1cmU7DQo+ID4gIC0gcmVzdG9yZSBvdXRlciBoZWFkZXIgb2YgcGFydGlh bGx5IG9mZmxvYWRlZCBwYWNrZXQ7DQo+ID4gIC0gbW9kZWwgaXMgaW1wbGVtZW50ZWQgYXMgYSBz ZXQgb2YgaGVscGVyIGZ1bmN0aW9ucy4NCj4gPg0KPiA+IEltcGxlbWVudGF0aW9uIGRldGFpbHM6 DQo+ID4NCj4gPiAqIENyZWF0ZSBhcHBsaWNhdGlvbiB0dW5uZWw6DQo+ID4gZmxvdyB0dW5uZWwg Y3JlYXRlIDxwb3J0PiB0eXBlIDx0dW5uZWwgdHlwZT4NCj4gPiBPbiBzdWNjZXNzLCB0aGUgY29t bWFuZCBjcmVhdGVzIGFwcGxpY2F0aW9uIHR1bm5lbCBvYmplY3QgYW5kIHJldHVybnMNCj4gPiB0 aGUgdHVubmVsIGRlc2NyaXB0b3IuIFR1bm5lbCBkZXNjcmlwdG9yIGlzIHVzZWQgaW4gc3Vic2Vx dWVudCBmbG93DQo+ID4gY3JlYXRpb24gY29tbWFuZHMgdG8gcmVmZXJlbmNlIHRoZSB0dW5uZWwu DQo+ID4NCj4gPiAqIENyZWF0ZSB0dW5uZWwgc3RlZXJpbmcgZmxvdyBydWxlOg0KPiA+IHR1bm5l bF9zZXQgPHR1bm5lbCBkZXNjcmlwdG9yPiBwYXJhbWV0ZXIgdXNlZCB3aXRoIHN0ZWVyaW5nIHJ1 bGUNCj4gPiB0ZW1wbGF0ZS4NCj4gPg0KPiA+ICogQ3JlYXRlIHR1bm5lbCBtYXRjaGluZyBmbG93 IHJ1bGU6DQo+ID4gdHVubmVsX21hdGNoIDx0dW5uZWwgZGVzY3JpcHRvcj4gdXNlZCB3aXRoIG1h dGNoaW5nIHJ1bGUgdGVtcGxhdGUuDQo+ID4NCj4gPiAqIElmIHR1bm5lbCBzdGVlcmluZyBydWxl IHdhcyBvZmZsb2FkZWQsIG91dGVyIGhlYWRlciBvZiBhIHBhcnRpYWxseQ0KPiA+IG9mZmxvYWRl ZCBwYWNrZXQgaXMgcmVzdG9yZWQgYWZ0ZXIgbWlzcy4NCj4gPg0KPiA+IEV4YW1wbGU6DQo+ID4g dGVzdCBwYWNrZXQ9DQo+ID4gPEV0aGVyICBkc3Q9MjQ6OGE6MDc6OGQ6YWU6ZDYgc3JjPTUwOjZi OjRiOmNjOmZjOmUyIHR5cGU9SVB2NCB8DQo+ID4gPElQICB2ZXJzaW9uPTQgaWhsPTUgcHJvdG89 dWRwIHNyYz0xLjEuMS4xIGRzdD0xLjEuMS4xMCB8DQo+ID4gPFVEUCAgc3BvcnQ9NDc4OSBkcG9y dD00Nzg5IGxlbj01OCBjaGtzdW09MHg3ZjdiIHwNCj4gPiA8VlhMQU4gIE5leHRQcm90b2NvbD1F dGhlcm5ldCB2bmk9MHgwIHwNCj4gPiA8RXRoZXIgIGRzdD0yNDphYTphYTphYTphYTpkNiBzcmM9 NTA6YmI6YmI6YmI6YmI6ZTIgdHlwZT1JUHY0IHwNCj4gPiA8SVAgIHZlcnNpb249NCBpaGw9NSBw cm90bz1pY21wIHNyYz0yLjIuMi4yIGRzdD0yLjIuMi4yMDAgfA0KPiA+IDxJQ01QICB0eXBlPWVj aG8tcmVxdWVzdCBjb2RlPTAgY2hrc3VtPTB4ZjdmZiBpZD0weDAgc2VxPTB4MCB8Pj4+Pj4+Pg0K PiA+ID4+PiBsZW4ocGFja2V0KQ0KPiA+IDkyDQo+ID4NCj4gPiB0ZXN0cG1kPiBmbG93IGZsdXNo IDANCj4gPiB0ZXN0cG1kPiBwb3J0IDAvcXVldWUgMDogcmVjZWl2ZWQgMSBwYWNrZXRzDQo+ID4g c3JjPTUwOjZCOjRCOkNDOkZDOkUyIC0gZHN0PTI0OjhBOjA3OjhEOkFFOkQ2IC0gdHlwZT0weDA4 MDAgLQ0KPiA+IGxlbmd0aD05Mg0KPiA+DQo+ID4gdGVzdHBtZD4gZmxvdyB0dW5uZWwgMCB0eXBl IHZ4bGFuDQo+ID4gcG9ydCAwOiBmbG93IHR1bm5lbCAjMSB0eXBlIHZ4bGFuDQo+ID4gdGVzdHBt ZD4gZmxvdyBjcmVhdGUgMCBpbmdyZXNzIGdyb3VwIDAgdHVubmVsX3NldCAxDQo+ID4gICAgICAg ICAgcGF0dGVybiBldGggL2lwdjQgLyB1ZHAgZHN0IGlzIDQ3ODkgLyB2eGxhbiAvIGVuZA0KPiA+ ICAgICAgICAgIGFjdGlvbnMgIGp1bXAgZ3JvdXAgMCAvIGVuZA0KPiANCj4gSSBjb3VsZCBub3Qg Z2V0IGVub3VnaCB0aW1lIHRvIGNvbXBsZXRlbHkgbG9vayBhdCB0aGlzLg0KPiBDYW4geW91IGhl bHAgdW5kZXJzdGFuZCB0aGUgc2VxdWVuY2UgYSBiaXQuDQo+IA0KPiBTbyB3aGVuIHRoaXMgZmxv dyBjcmVhdGUgaXMgaXNzdWVkLCBpdCBsb29rcyBsaWtlIHRoZSBhcHBsaWNhdGlvbiBpc3N1ZXMN Cj4gb25lIG9mIHRoZSBoZWxwZXIgQVBJcy4NCj4gSW4gcmVzcG9uc2UgdGhlIFBNRCByZXR1cm5z IHRoZSB2ZW5kb3Igc3BlY2lmaWMgaXRlbXMvYWN0aW9ucy4NCj4gU28gd2hhdCBoYXBwZW5zIHRv IHRoZSBvcmlnaW5hbCBtYXRjaCBhbmQgYWN0aW9uIGNyaXRlcmlhIHByb3ZpZGVkIGJ5IHRoZQ0K PiB1c2VyDQo+IG9yIGFwcGxpY2F0aW9ucz8NCj4gDQo+IERvZXMgdGhlIHZlbmRvciBwcm92aWRl ZCBhY3Rpb25zIGFuZCBpdGVtcyBpbiB0aGUgdHVubmVsIGRlc2NyaXB0b3INCj4gdGFrZSBwcmVj ZWRlbmNlIG92ZXIgd2hhdCB3YXMgdXNlZCBieSB0aGUgYXBwbGljYXRpb24/DQo+IA0KPiBBbmQg aXMgdGhlIGNyaXRlcmlhIHByb3ZpZGVkIGJ5IHRoZSBQTUQgb3BhcXVlIHRvIHRoZSBhcHBsaWNh dGlvbj8NCj4gU3VjaCB0aGF0IG9ubHkgdGhlIFBNRCBjYW4gZGVjaXBoZXIgaXQgd2hlbiB0aGUg YXBwbGljYXRpb24gY2FsbHMgaXQNCj4gZm9yIHN1YnNlcXVlbnQgZmxvdyBjcmVhdGUocyk/DQo+ IA0KDQpGbG93IHJ1bGVzIHRoYXQgaW1wbGVtZW50IHR1bm5lbCBvZmZsb2FkIEFQSSBhcmUgY29t cGlsZWQgZnJvbSBhcHBsaWNhdGlvbiBhbmQNClBNRCBhY3Rpb25zIGFuZCBpdGVtcy4gQm90aCBh cHBsaWNhdGlvbiBhbmQgUE1EIGVsZW1lbnRzIGFyZSBlcXVhbGx5IGltcG9ydGFudA0KZm9yIG9m ZmxvYWQgcnVsZSBjcmVhdGlvbi4gQXBwbGljYXRpb24gaXMgImF3YXJlIiB3aGF0IHR5cGUgb2Yg dHVubmVsIG9mZmxvYWQNCmZsb3cgcnVsZSwgZGVjYXBfc2V0IG9yIG1hdGNoLCBpdCBidWlsZHMu IFRoZXJlZm9yZSwgYXBwbGljYXRpb24gZWxlbWVudHMgYXJlDQpjcmVhdGVkIGFjY29yZGluZyB0 byB0dW5uZWwgb2ZmbG9hZCBydWxlIHR5cGUgYW5kIHRoZSBBUEkgaGVscGVyIGZ1bmN0aW9uLCB0 aGF0DQptYXRjaGVzIHNlbGVjdGVkIHJ1bGUgdHlwZSwgaXMgYWN0aXZhdGVkIHRvIHByb3ZpZGUg UE1EIGVsZW1lbnRzLg0KUE1EIGVsZW1lbnRzIGFyZSBvcGFxdWUuIFdoZW4gYWxsIGVsZW1lbnRz IGFyZSBwcmVzZW50LCBhcHBsaWNhdGlvbiBjb25jYXRlbmF0ZXMNClBNRCBpdGVtcyB3aXRoIGFw cGxpY2F0aW9uIGl0ZW1zIGFuZCBQTUQgYWN0aW9ucyB3aXRoIGFwcGxpY2F0aW9uIGFjdGlvbnMu DQpBcyB0aGUgcmVzdWx0IGFwcGxpY2F0aW9uIHdpbGwgaGF2ZSBwYXR0ZXJuICYgYWN0aW9ucyBh cnJheXMgZm9yIGZsb3cgcnVsZQ0KY3JlYXRpb24uIEZvciB0aGUgZGVjYXBfc2V0IHJ1bGUsIHRo ZSBBUEkgZXhwZWN0cyBhcHBsaWNhdGlvbiB0byBwcm92aWRlIHBhdHRlcm4NCnRoYXQgZGVzY3Jp YmVzIGEgdHVubmVsIGFuZCB0aGUgSlVNUCBhY3Rpb24sIGFsdGhvdWdoIHRoZSBKVU1QIGlzIG5v dCBzdHJpY3RseQ0KcmVxdWlyZWQuIEFuZCBmb3IgdGhlIG1hdGNoIHJ1bGUsIGFwcGxpY2F0aW9u IHBhdHRlcm4gc2hvdWxkIGRlc2NyaWJlIHBhY2tldA0KaGVhZGVycyBhbmQgYWN0aW9ucyByZWZl ciB0byBpbm5lciBwYXJ0cy4NCg0KPiA+IEZsb3cgcnVsZSAjMCBjcmVhdGVkDQo+ID4gdGVzdHBt ZD4gcG9ydCAwL3F1ZXVlIDA6IHJlY2VpdmVkIDEgcGFja2V0cw0KPiA+IHR1bm5lbCByZXN0b3Jl IGluZm86IC0gdnhsYW4gdHVubmVsIC0gb3V0ZXIgaGVhZGVyIHByZXNlbnQgIyA8LS0NCj4gPiAg IHNyYz01MDo2Qjo0QjpDQzpGQzpFMiAtIGRzdD0yNDo4QTowNzo4RDpBRTpENiAtIHR5cGU9MHgw ODAwIC0NCj4gPiBsZW5ndGg9OTINCj4gPg0KPiA+IHRlc3RwbWQ+IGZsb3cgY3JlYXRlIDAgaW5n cmVzcyBncm91cCAwIHR1bm5lbF9tYXRjaCAxDQo+ID4gICAgICAgICAgcGF0dGVybiBldGggLyBp cHY0IC8gdWRwIGRzdCBpcyA0Nzg5IC8gdnhsYW4gLyBldGggLyBpcHY0IC8NCj4gPiAgICAgICAg ICBlbmQNCj4gPiAgICAgICAgICBhY3Rpb25zIHNldF9tYWNfZHN0IG1hY19hZGRyIDAyOkNBOkZF OkNBOkZBOjgwIC8NCj4gPiAgICAgICAgICBxdWV1ZSBpbmRleCAwIC8gZW5kDQo+ID4gRmxvdyBy dWxlICMxIGNyZWF0ZWQNCj4gPiB0ZXN0cG1kPiBwb3J0IDAvcXVldWUgMDogcmVjZWl2ZWQgMSBw YWNrZXRzDQo+ID4gICBzcmM9NTA6QkI6QkI6QkI6QkI6RTIgLSBkc3Q9MDI6Q0E6RkU6Q0E6RkE6 ODAgLSB0eXBlPTB4MDgwMCAtDQo+ID4gbGVuZ3RoPTQyDQo+ID4NCj4gPiAqIERlc3Ryb3kgZmxv dyB0dW5uZWwNCj4gPiBmbG93IHR1bm5lbCBkZXN0cm95IDxwb3J0PiBpZCA8dHVubmVsIGlkPg0K PiA+DQo+ID4gKiBTaG93IGV4aXN0aW5nIGZsb3cgdHVubmVscw0KPiA+IGZsb3cgdHVubmVsIGxp c3QgPHBvcnQ+DQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBHcmVnb3J5IEV0ZWxzb24gPGdldGVs c29uQG52aWRpYS5jb20+DQo+ID4gLS0tDQo+ID4gdjI6DQo+ID4gKiBpbnRyb2R1Y2UgdGVzdHBt ZCBzdXBwb3J0IGZvciB0dW5uZWwgb2ZmbG9hZCBBUEkNCj4gPg0KPiA+IHYzOg0KPiA+ICogdXBk YXRlIGZsb3cgdHVubmVsIGNvbW1hbmRzDQo+ID4gLS0tDQo+ID4gIGFwcC90ZXN0LXBtZC9jbWRs aW5lX2Zsb3cuYyAgICAgICAgICAgICAgICAgfCAxNzAgKysrKysrKysrKysrLQ0KPiA+ICBhcHAv dGVzdC1wbWQvY29uZmlnLmMgICAgICAgICAgICAgICAgICAgICAgIHwgMjUzICsrKysrKysrKysr KysrKysrKystDQo+ID4gIGFwcC90ZXN0LXBtZC90ZXN0cG1kLmMgICAgICAgICAgICAgICAgICAg ICAgfCAgIDUgKy0NCj4gPiAgYXBwL3Rlc3QtcG1kL3Rlc3RwbWQuaCAgICAgICAgICAgICAgICAg ICAgICB8ICAzNCArKy0NCj4gPiAgYXBwL3Rlc3QtcG1kL3V0aWwuYyAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAzNSArKy0NCj4gPiAgZG9jL2d1aWRlcy90ZXN0cG1kX2FwcF91Zy90ZXN0cG1k X2Z1bmNzLnJzdCB8ICA0OSArKysrDQo+ID4gIDYgZmlsZXMgY2hhbmdlZCwgNTMzIGluc2VydGlv bnMoKyksIDEzIGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2FwcC90ZXN0LXBt ZC9jbWRsaW5lX2Zsb3cuYyBiL2FwcC90ZXN0LXBtZC9jbWRsaW5lX2Zsb3cuYw0KPiA+IGluZGV4 IDYyNjNkMzA3ZWQuLjBmYjYxODYwY2QgMTAwNjQ0DQo+ID4gLS0tIGEvYXBwL3Rlc3QtcG1kL2Nt ZGxpbmVfZmxvdy5jDQo+ID4gKysrIGIvYXBwL3Rlc3QtcG1kL2NtZGxpbmVfZmxvdy5jDQo+ID4g QEAgLTY5LDYgKzY5LDE0IEBAIGVudW0gaW5kZXggew0KPiA+ICAgICAgICAgTElTVCwNCj4gPiAg ICAgICAgIEFHRUQsDQo+ID4gICAgICAgICBJU09MQVRFLA0KPiA+ICsgICAgICAgVFVOTkVMLA0K PiA+ICsNCj4gPiArICAgICAgIC8qIFR1bm5lbCBhcmd1bWVucy4gKi8NCj4gPiArICAgICAgIFRV Tk5FTF9DUkVBVEUsDQo+ID4gKyAgICAgICBUVU5ORUxfQ1JFQVRFX1RZUEUsDQo+ID4gKyAgICAg ICBUVU5ORUxfTElTVCwNCj4gPiArICAgICAgIFRVTk5FTF9ERVNUUk9ZLA0KPiA+ICsgICAgICAg VFVOTkVMX0RFU1RST1lfSUQsDQo+ID4NCj4gPiAgICAgICAgIC8qIERlc3Ryb3kgYXJndW1lbnRz LiAqLw0KPiA+ICAgICAgICAgREVTVFJPWV9SVUxFLA0KPiA+IEBAIC04OCw2ICs5Niw4IEBAIGVu dW0gaW5kZXggew0KPiA+ICAgICAgICAgSU5HUkVTUywNCj4gPiAgICAgICAgIEVHUkVTUywNCj4g PiAgICAgICAgIFRSQU5TRkVSLA0KPiA+ICsgICAgICAgVFVOTkVMX1NFVCwNCj4gPiArICAgICAg IFRVTk5FTF9NQVRDSCwNCj4gPg0KPiA+ICAgICAgICAgLyogVmFsaWRhdGUvY3JlYXRlIHBhdHRl cm4uICovDQo+ID4gICAgICAgICBQQVRURVJOLA0KPiA+IEBAIC02NTMsNiArNjYzLDcgQEAgc3Ry dWN0IGJ1ZmZlciB7DQo+ID4gICAgICAgICB1bmlvbiB7DQo+ID4gICAgICAgICAgICAgICAgIHN0 cnVjdCB7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9mbG93X2F0dHIg YXR0cjsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdHVubmVsX29wcyB0dW5u ZWxfb3BzOw0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVfZmxvd19pdGVt ICpwYXR0ZXJuOw0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVfZmxvd19h Y3Rpb24gKmFjdGlvbnM7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcGF0 dGVybl9uOw0KPiA+IEBAIC03MTMsMTAgKzcyNCwzMiBAQCBzdGF0aWMgY29uc3QgZW51bSBpbmRl eCBuZXh0X3ZjX2F0dHJbXSA9IHsNCj4gPiAgICAgICAgIElOR1JFU1MsDQo+ID4gICAgICAgICBF R1JFU1MsDQo+ID4gICAgICAgICBUUkFOU0ZFUiwNCj4gPiArICAgICAgIFRVTk5FTF9TRVQsDQo+ ID4gKyAgICAgICBUVU5ORUxfTUFUQ0gsDQo+ID4gICAgICAgICBQQVRURVJOLA0KPiA+ICAgICAg ICAgWkVSTywNCj4gPiAgfTsNCj4gPg0KPiA+ICtzdGF0aWMgY29uc3QgZW51bSBpbmRleCB0dW5u ZWxfY3JlYXRlX2F0dHJbXSA9IHsNCj4gPiArICAgICAgIFRVTk5FTF9DUkVBVEUsDQo+ID4gKyAg ICAgICBUVU5ORUxfQ1JFQVRFX1RZUEUsDQo+ID4gKyAgICAgICBFTkQsDQo+ID4gKyAgICAgICBa RVJPLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IGVudW0gaW5kZXggdHVubmVs X2Rlc3Ryb3lfYXR0cltdID0gew0KPiA+ICsgICAgICAgVFVOTkVMX0RFU1RST1ksDQo+ID4gKyAg ICAgICBUVU5ORUxfREVTVFJPWV9JRCwNCj4gPiArICAgICAgIEVORCwNCj4gPiArICAgICAgIFpF Uk8sDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3QgZW51bSBpbmRleCB0dW5uZWxf bGlzdF9hdHRyW10gPSB7DQo+ID4gKyAgICAgICBUVU5ORUxfTElTVCwNCj4gPiArICAgICAgIEVO RCwNCj4gPiArICAgICAgIFpFUk8sDQo+ID4gK307DQo+ID4gKw0KPiA+ICBzdGF0aWMgY29uc3Qg ZW51bSBpbmRleCBuZXh0X2Rlc3Ryb3lfYXR0cltdID0gew0KPiA+ICAgICAgICAgREVTVFJPWV9S VUxFLA0KPiA+ICAgICAgICAgRU5ELA0KPiA+IEBAIC0xNTE2LDYgKzE1NDksOSBAQCBzdGF0aWMg aW50IHBhcnNlX2FnZWQoc3RydWN0IGNvbnRleHQgKiwgY29uc3QNCj4gc3RydWN0IHRva2VuICos DQo+ID4gIHN0YXRpYyBpbnQgcGFyc2VfaXNvbGF0ZShzdHJ1Y3QgY29udGV4dCAqLCBjb25zdCBz dHJ1Y3QgdG9rZW4gKiwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq LCB1bnNpZ25lZCBpbnQsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKiwgdW5z aWduZWQgaW50KTsNCj4gPiArc3RhdGljIGludCBwYXJzZV90dW5uZWwoc3RydWN0IGNvbnRleHQg KiwgY29uc3Qgc3RydWN0IHRva2VuICosDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgY2hhciAqLCB1bnNpZ25lZCBpbnQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgdm9p ZCAqLCB1bnNpZ25lZCBpbnQpOw0KPiA+ICBzdGF0aWMgaW50IHBhcnNlX2ludChzdHJ1Y3QgY29u dGV4dCAqLCBjb25zdCBzdHJ1Y3QgdG9rZW4gKiwNCj4gPiAgICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyICosIHVuc2lnbmVkIGludCwNCj4gPiAgICAgICAgICAgICAgICAgICAgICB2b2lk ICosIHVuc2lnbmVkIGludCk7DQo+ID4gQEAgLTE2OTgsNyArMTczNCw4IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgdG9rZW4gdG9rZW5fbGlzdFtdID0gew0KPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExJU1QsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUdFRCwN Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSwNCj4gPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJU09MQVRFKSksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSVNPTEFURSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVU5O RUwpKSwNCj4gPiAgICAgICAgICAgICAgICAgLmNhbGwgPSBwYXJzZV9pbml0LA0KPiA+ICAgICAg ICAgfSwNCj4gPiAgICAgICAgIC8qIFN1Yi1sZXZlbCBjb21tYW5kcy4gKi8NCj4gPiBAQCAtMTc3 Miw2ICsxODA5LDQ5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdG9rZW4gdG9rZW5fbGlzdFtdID0g ew0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVJHU19FTlRSWShzdHJ1Y3QgYnVm ZmVyLCBwb3J0KSksDQo+ID4gICAgICAgICAgICAgICAgIC5jYWxsID0gcGFyc2VfaXNvbGF0ZSwN Cj4gPiAgICAgICAgIH0sDQo+ID4gKyAgICAgICBbVFVOTkVMXSA9IHsNCj4gPiArICAgICAgICAg ICAgICAgLm5hbWUgPSAidHVubmVsIiwNCj4gPiArICAgICAgICAgICAgICAgLmhlbHAgPSAibmV3 IHR1bm5lbCBBUEkiLA0KPiA+ICsgICAgICAgICAgICAgICAubmV4dCA9IE5FWFQoTkVYVF9FTlRS WQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFRVTk5FTF9DUkVBVEUsIFRVTk5F TF9MSVNULCBUVU5ORUxfREVTVFJPWSkpLA0KPiA+ICsgICAgICAgICAgICAgICAuY2FsbCA9IHBh cnNlX3R1bm5lbCwNCj4gPiArICAgICAgIH0sDQo+ID4gKyAgICAgICAvKiBUdW5uZWwgYXJndW1l bnRzLiAqLw0KPiA+ICsgICAgICAgW1RVTk5FTF9DUkVBVEVdID0gew0KPiA+ICsgICAgICAgICAg ICAgICAubmFtZSA9ICJjcmVhdGUiLA0KPiA+ICsgICAgICAgICAgICAgICAuaGVscCA9ICJjcmVh dGUgbmV3IHR1bm5lbCBvYmplY3QiLA0KPiA+ICsgICAgICAgICAgICAgICAubmV4dCA9IE5FWFQo dHVubmVsX2NyZWF0ZV9hdHRyLCBORVhUX0VOVFJZKFBPUlRfSUQpKSwNCj4gPiArICAgICAgICAg ICAgICAgLmFyZ3MgPSBBUkdTKEFSR1NfRU5UUlkoc3RydWN0IGJ1ZmZlciwgcG9ydCkpLA0KPiA+ ICsgICAgICAgICAgICAgICAuY2FsbCA9IHBhcnNlX3R1bm5lbCwNCj4gPiArICAgICAgIH0sDQo+ ID4gKyAgICAgICBbVFVOTkVMX0NSRUFURV9UWVBFXSA9IHsNCj4gPiArICAgICAgICAgICAgICAg Lm5hbWUgPSAidHlwZSIsDQo+ID4gKyAgICAgICAgICAgICAgIC5oZWxwID0gImNyZWF0ZSBuZXcg dHVubmVsIiwNCj4gPiArICAgICAgICAgICAgICAgLm5leHQgPSBORVhUKHR1bm5lbF9jcmVhdGVf YXR0ciwgTkVYVF9FTlRSWShGSUxFX1BBVEgpKSwNCj4gPiArICAgICAgICAgICAgICAgLmFyZ3Mg PSBBUkdTKEFSR1NfRU5UUlkoc3RydWN0IHR1bm5lbF9vcHMsIHR5cGUpKSwNCj4gPiArICAgICAg ICAgICAgICAgLmNhbGwgPSBwYXJzZV90dW5uZWwsDQo+ID4gKyAgICAgICB9LA0KPiA+ICsgICAg ICAgW1RVTk5FTF9ERVNUUk9ZXSA9IHsNCj4gPiArICAgICAgICAgICAgICAgLm5hbWUgPSAiZGVz dHJveSIsDQo+ID4gKyAgICAgICAgICAgICAgIC5oZWxwID0gImRlc3Ryb3kgdHVuZWwiLA0KPiA+ ICsgICAgICAgICAgICAgICAubmV4dCA9IE5FWFQodHVubmVsX2Rlc3Ryb3lfYXR0ciwgTkVYVF9F TlRSWShQT1JUX0lEKSksDQo+ID4gKyAgICAgICAgICAgICAgIC5hcmdzID0gQVJHUyhBUkdTX0VO VFJZKHN0cnVjdCBidWZmZXIsIHBvcnQpKSwNCj4gPiArICAgICAgICAgICAgICAgLmNhbGwgPSBw YXJzZV90dW5uZWwsDQo+ID4gKyAgICAgICB9LA0KPiA+ICsgICAgICAgW1RVTk5FTF9ERVNUUk9Z X0lEXSA9IHsNCj4gPiArICAgICAgICAgICAgICAgLm5hbWUgPSAiaWQiLA0KPiA+ICsgICAgICAg ICAgICAgICAuaGVscCA9ICJ0dW5uZWwgaWRlbnRpZmllciB0byB0ZXN0cm95IiwNCj4gPiArICAg ICAgICAgICAgICAgLm5leHQgPSBORVhUKHR1bm5lbF9kZXN0cm95X2F0dHIsIE5FWFRfRU5UUlko VU5TSUdORUQpKSwNCj4gPiArICAgICAgICAgICAgICAgLmFyZ3MgPSBBUkdTKEFSR1NfRU5UUlko c3RydWN0IHR1bm5lbF9vcHMsIGlkKSksDQo+ID4gKyAgICAgICAgICAgICAgIC5jYWxsID0gcGFy c2VfdHVubmVsLA0KPiA+ICsgICAgICAgfSwNCj4gPiArICAgICAgIFtUVU5ORUxfTElTVF0gPSB7 DQo+ID4gKyAgICAgICAgICAgICAgIC5uYW1lID0gImxpc3QiLA0KPiA+ICsgICAgICAgICAgICAg ICAuaGVscCA9ICJsaXN0IGV4aXN0aW5nIHR1bm5lbHMiLA0KPiA+ICsgICAgICAgICAgICAgICAu bmV4dCA9IE5FWFQodHVubmVsX2xpc3RfYXR0ciwgTkVYVF9FTlRSWShQT1JUX0lEKSksDQo+ID4g KyAgICAgICAgICAgICAgIC5hcmdzID0gQVJHUyhBUkdTX0VOVFJZKHN0cnVjdCBidWZmZXIsIHBv cnQpKSwNCj4gPiArICAgICAgICAgICAgICAgLmNhbGwgPSBwYXJzZV90dW5uZWwsDQo+ID4gKyAg ICAgICB9LA0KPiA+ICAgICAgICAgLyogRGVzdHJveSBhcmd1bWVudHMuICovDQo+ID4gICAgICAg ICBbREVTVFJPWV9SVUxFXSA9IHsNCj4gPiAgICAgICAgICAgICAgICAgLm5hbWUgPSAicnVsZSIs DQo+ID4gQEAgLTE4MzUsNiArMTkxNSwyMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHRva2VuIHRv a2VuX2xpc3RbXSA9IHsNCj4gPiAgICAgICAgICAgICAgICAgLm5leHQgPSBORVhUKG5leHRfdmNf YXR0ciksDQo+ID4gICAgICAgICAgICAgICAgIC5jYWxsID0gcGFyc2VfdmMsDQo+ID4gICAgICAg ICB9LA0KPiA+ICsgICAgICAgW1RVTk5FTF9TRVRdID0gew0KPiA+ICsgICAgICAgICAgICAgICAu bmFtZSA9ICJ0dW5uZWxfc2V0IiwNCj4gPiArICAgICAgICAgICAgICAgLmhlbHAgPSAidHVubmVs IHN0ZWVyIHJ1bGUiLA0KPiA+ICsgICAgICAgICAgICAgICAubmV4dCA9IE5FWFQobmV4dF92Y19h dHRyLCBORVhUX0VOVFJZKFVOU0lHTkVEKSksDQo+ID4gKyAgICAgICAgICAgICAgIC5hcmdzID0g QVJHUyhBUkdTX0VOVFJZKHN0cnVjdCB0dW5uZWxfb3BzLCBpZCkpLA0KPiA+ICsgICAgICAgICAg ICAgICAuY2FsbCA9IHBhcnNlX3ZjLA0KPiA+ICsgICAgICAgfSwNCj4gPiArICAgICAgIFtUVU5O RUxfTUFUQ0hdID0gew0KPiA+ICsgICAgICAgICAgICAgICAubmFtZSA9ICJ0dW5uZWxfbWF0Y2gi LA0KPiA+ICsgICAgICAgICAgICAgICAuaGVscCA9ICJ0dW5uZWwgbWF0Y2ggcnVsZSIsDQo+ID4g KyAgICAgICAgICAgICAgIC5uZXh0ID0gTkVYVChuZXh0X3ZjX2F0dHIsIE5FWFRfRU5UUlkoVU5T SUdORUQpKSwNCj4gPiArICAgICAgICAgICAgICAgLmFyZ3MgPSBBUkdTKEFSR1NfRU5UUlkoc3Ry dWN0IHR1bm5lbF9vcHMsIGlkKSksDQo+ID4gKyAgICAgICAgICAgICAgIC5jYWxsID0gcGFyc2Vf dmMsDQo+ID4gKyAgICAgICB9LA0KPiA+ICAgICAgICAgLyogVmFsaWRhdGUvY3JlYXRlIHBhdHRl cm4uICovDQo+ID4gICAgICAgICBbUEFUVEVSTl0gPSB7DQo+ID4gICAgICAgICAgICAgICAgIC5u YW1lID0gInBhdHRlcm4iLA0KPiA+IEBAIC00MDU0LDEyICs0MTQ4LDI4IEBAIHBhcnNlX3ZjKHN0 cnVjdCBjb250ZXh0ICpjdHgsIGNvbnN0IHN0cnVjdA0KPiB0b2tlbiAqdG9rZW4sDQo+ID4gICAg ICAgICAgICAgICAgIHJldHVybiBsZW47DQo+ID4gICAgICAgICB9DQo+ID4gICAgICAgICBjdHgt Pm9iamRhdGEgPSAwOw0KPiA+IC0gICAgICAgY3R4LT5vYmplY3QgPSAmb3V0LT5hcmdzLnZjLmF0 dHI7DQo+ID4gKyAgICAgICBzd2l0Y2ggKGN0eC0+Y3Vycikgew0KPiA+ICsgICAgICAgZGVmYXVs dDoNCj4gPiArICAgICAgICAgICAgICAgY3R4LT5vYmplY3QgPSAmb3V0LT5hcmdzLnZjLmF0dHI7 DQo+ID4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgY2FzZSBUVU5ORUxfU0VU Og0KPiA+ICsgICAgICAgY2FzZSBUVU5ORUxfTUFUQ0g6DQo+ID4gKyAgICAgICAgICAgICAgIGN0 eC0+b2JqZWN0ID0gJm91dC0+YXJncy52Yy50dW5uZWxfb3BzOw0KPiA+ICsgICAgICAgICAgICAg ICBicmVhazsNCj4gPiArICAgICAgIH0NCj4gPiAgICAgICAgIGN0eC0+b2JqbWFzayA9IE5VTEw7 DQo+ID4gICAgICAgICBzd2l0Y2ggKGN0eC0+Y3Vycikgew0KPiA+ICAgICAgICAgY2FzZSBHUk9V UDoNCj4gPiAgICAgICAgIGNhc2UgUFJJT1JJVFk6DQo+ID4gICAgICAgICAgICAgICAgIHJldHVy biBsZW47DQo+ID4gKyAgICAgICBjYXNlIFRVTk5FTF9TRVQ6DQo+ID4gKyAgICAgICAgICAgICAg IG91dC0+YXJncy52Yy50dW5uZWxfb3BzLmVuYWJsZWQgPSAxOw0KPiA+ICsgICAgICAgICAgICAg ICBvdXQtPmFyZ3MudmMudHVubmVsX29wcy5hY3Rpb25zID0gMTsNCj4gPiArICAgICAgICAgICAg ICAgcmV0dXJuIGxlbjsNCj4gPiArICAgICAgIGNhc2UgVFVOTkVMX01BVENIOg0KPiA+ICsgICAg ICAgICAgICAgICBvdXQtPmFyZ3MudmMudHVubmVsX29wcy5lbmFibGVkID0gMTsNCj4gPiArICAg ICAgICAgICAgICAgb3V0LT5hcmdzLnZjLnR1bm5lbF9vcHMuaXRlbXMgPSAxOw0KPiA+ICsgICAg ICAgICAgICAgICByZXR1cm4gbGVuOw0KPiA+ICAgICAgICAgY2FzZSBJTkdSRVNTOg0KPiA+ICAg ICAgICAgICAgICAgICBvdXQtPmFyZ3MudmMuYXR0ci5pbmdyZXNzID0gMTsNCj4gPiAgICAgICAg ICAgICAgICAgcmV0dXJuIGxlbjsNCj4gPiBAQCAtNTU5Nyw2ICs1NzA3LDQ3IEBAIHBhcnNlX2lz b2xhdGUoc3RydWN0IGNvbnRleHQgKmN0eCwgY29uc3Qgc3RydWN0DQo+IHRva2VuICp0b2tlbiwN Cj4gPiAgICAgICAgIHJldHVybiBsZW47DQo+ID4gIH0NCj4gPg0KPiA+ICtzdGF0aWMgaW50DQo+ ID4gK3BhcnNlX3R1bm5lbChzdHJ1Y3QgY29udGV4dCAqY3R4LCBjb25zdCBzdHJ1Y3QgdG9rZW4g KnRva2VuLA0KPiA+ICsgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIsIHVuc2lnbmVkIGludCBs ZW4sDQo+ID4gKyAgICAgICAgICAgIHZvaWQgKmJ1ZiwgdW5zaWduZWQgaW50IHNpemUpDQo+ID4g K3sNCj4gPiArICAgICAgIHN0cnVjdCBidWZmZXIgKm91dCA9IGJ1ZjsNCj4gPiArDQo+ID4gKyAg ICAgICAvKiBUb2tlbiBuYW1lIG11c3QgbWF0Y2guICovDQo+ID4gKyAgICAgICBpZiAocGFyc2Vf ZGVmYXVsdChjdHgsIHRva2VuLCBzdHIsIGxlbiwgTlVMTCwgMCkgPCAwKQ0KPiA+ICsgICAgICAg ICAgICAgICByZXR1cm4gLTE7DQo+ID4gKyAgICAgICAvKiBOb3RoaW5nIGVsc2UgdG8gZG8gaWYg dGhlcmUgaXMgbm8gYnVmZmVyLiAqLw0KPiA+ICsgICAgICAgaWYgKCFvdXQpDQo+ID4gKyAgICAg ICAgICAgICAgIHJldHVybiBsZW47DQo+ID4gKyAgICAgICBpZiAoIW91dC0+Y29tbWFuZCkgew0K PiA+ICsgICAgICAgICAgICAgICBpZiAoY3R4LT5jdXJyICE9IFRVTk5FTCkNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChzaXpl b2YoKm91dCkgPiBzaXplKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsN Cj4gPiArICAgICAgICAgICAgICAgb3V0LT5jb21tYW5kID0gY3R4LT5jdXJyOw0KPiA+ICsgICAg ICAgICAgICAgICBjdHgtPm9iamRhdGEgPSAwOw0KPiA+ICsgICAgICAgICAgICAgICBjdHgtPm9i amVjdCA9IG91dDsNCj4gPiArICAgICAgICAgICAgICAgY3R4LT5vYmptYXNrID0gTlVMTDsNCj4g PiArICAgICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICAgIHN3aXRjaCAoY3R4LT5jdXJy KSB7DQo+ID4gKyAgICAgICAgICAgICAgIGRlZmF1bHQ6DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgIGNhc2UgVFVOTkVMX0NSRUFURToNCj4g PiArICAgICAgICAgICAgICAgY2FzZSBUVU5ORUxfREVTVFJPWToNCj4gPiArICAgICAgICAgICAg ICAgY2FzZSBUVU5ORUxfTElTVDoNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBvdXQtPmNv bW1hbmQgPSBjdHgtPmN1cnI7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ ID4gKyAgICAgICAgICAgICAgIGNhc2UgVFVOTkVMX0NSRUFURV9UWVBFOg0KPiA+ICsgICAgICAg ICAgICAgICBjYXNlIFRVTk5FTF9ERVNUUk9ZX0lEOg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIGN0eC0+b2JqZWN0ID0gJm91dC0+YXJncy52Yy50dW5uZWxfb3BzOw0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgICAgICAgICB9DQo+ID4gKyAgICAg ICB9DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIGxlbjsNCj4gPiArfQ0KPiA+ICsNCj4gPiAg LyoqDQo+ID4gICAqIFBhcnNlIHNpZ25lZC91bnNpZ25lZCBpbnRlZ2VycyA4IHRvIDY0LWJpdCBs b25nLg0KPiA+ICAgKg0KPiA+IEBAIC02NTQzLDExICs2Njk0LDEzIEBAIGNtZF9mbG93X3BhcnNl ZChjb25zdCBzdHJ1Y3QgYnVmZmVyICppbikNCj4gPiAgICAgICAgIHN3aXRjaCAoaW4tPmNvbW1h bmQpIHsNCj4gPiAgICAgICAgIGNhc2UgVkFMSURBVEU6DQo+ID4gICAgICAgICAgICAgICAgIHBv cnRfZmxvd192YWxpZGF0ZShpbi0+cG9ydCwgJmluLT5hcmdzLnZjLmF0dHIsDQo+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbi0+YXJncy52Yy5wYXR0ZXJuLCBpbi0+YXJn cy52Yy5hY3Rpb25zKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu LT5hcmdzLnZjLnBhdHRlcm4sIGluLT5hcmdzLnZjLmFjdGlvbnMsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmaW4tPmFyZ3MudmMudHVubmVsX29wcyk7DQo+ID4gICAg ICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICAgICAgICAgY2FzZSBDUkVBVEU6DQo+ID4gICAgICAg ICAgICAgICAgIHBvcnRfZmxvd19jcmVhdGUoaW4tPnBvcnQsICZpbi0+YXJncy52Yy5hdHRyLA0K PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluLT5hcmdzLnZjLnBhdHRlcm4s IGluLT5hcmdzLnZjLmFjdGlvbnMpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGluLT5hcmdzLnZjLnBhdHRlcm4sIGluLT5hcmdzLnZjLmFjdGlvbnMsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmluLT5hcmdzLnZjLnR1bm5lbF9vcHMpOw0KPiA+ ICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiAgICAgICAgIGNhc2UgREVTVFJPWToNCj4gPiAg ICAgICAgICAgICAgICAgcG9ydF9mbG93X2Rlc3Ryb3koaW4tPnBvcnQsIGluLT5hcmdzLmRlc3Ry b3kucnVsZV9uLA0KPiA+IEBAIC02NTczLDYgKzY3MjYsMTUgQEAgY21kX2Zsb3dfcGFyc2VkKGNv bnN0IHN0cnVjdCBidWZmZXIgKmluKQ0KPiA+ICAgICAgICAgY2FzZSBBR0VEOg0KPiA+ICAgICAg ICAgICAgICAgICBwb3J0X2Zsb3dfYWdlZChpbi0+cG9ydCwgaW4tPmFyZ3MuYWdlZC5kZXN0cm95 KTsNCj4gPiAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICBjYXNlIFRVTk5FTF9D UkVBVEU6DQo+ID4gKyAgICAgICAgICAgICAgIHBvcnRfZmxvd190dW5uZWxfY3JlYXRlKGluLT5w b3J0LCAmaW4tPmFyZ3MudmMudHVubmVsX29wcyk7DQo+ID4gKyAgICAgICAgICAgICAgIGJyZWFr Ow0KPiA+ICsgICAgICAgY2FzZSBUVU5ORUxfREVTVFJPWToNCj4gPiArICAgICAgICAgICAgICAg cG9ydF9mbG93X3R1bm5lbF9kZXN0cm95KGluLT5wb3J0LCBpbi0+YXJncy52Yy50dW5uZWxfb3Bz LmlkKTsNCj4gPiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICBjYXNlIFRVTk5F TF9MSVNUOg0KPiA+ICsgICAgICAgICAgICAgICBwb3J0X2Zsb3dfdHVubmVsX2xpc3QoaW4tPnBv cnQpOw0KPiA+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiAgICAgICAgIGRlZmF1bHQ6DQo+ ID4gICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICAgICAgICAgfQ0KPiA+IGRpZmYgLS1naXQg YS9hcHAvdGVzdC1wbWQvY29uZmlnLmMgYi9hcHAvdGVzdC1wbWQvY29uZmlnLmMNCj4gPiBpbmRl eCAyZDlhNDU2NDY3Li5kMGY4NjIzMGQwIDEwMDY0NA0KPiA+IC0tLSBhL2FwcC90ZXN0LXBtZC9j b25maWcuYw0KPiA+ICsrKyBiL2FwcC90ZXN0LXBtZC9jb25maWcuYw0KPiA+IEBAIC0xMzM5LDYg KzEzMzksMTE1IEBAIHBvcnRfbXR1X3NldChwb3J0aWRfdCBwb3J0X2lkLCB1aW50MTZfdCBtdHUp DQo+ID4NCj4gPiAgLyogR2VuZXJpYyBmbG93IG1hbmFnZW1lbnQgZnVuY3Rpb25zLiAqLw0KPiA+ DQo+ID4gK3N0YXRpYyBzdHJ1Y3QgcG9ydF9mbG93X3R1bm5lbCAqDQo+ID4gK3BvcnRfZmxvd19s b2NhdGVfdHVubmVsX2lkKHN0cnVjdCBydGVfcG9ydCAqcG9ydCwgdWludDMyX3QNCj4gcG9ydF90 dW5uZWxfaWQpDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCBwb3J0X2Zsb3dfdHVubmVsICpm bG93X3R1bm5lbDsNCj4gPiArDQo+ID4gKyAgICAgICBMSVNUX0ZPUkVBQ0goZmxvd190dW5uZWws ICZwb3J0LT5mbG93X3R1bm5lbF9saXN0LCBjaGFpbikgew0KPiA+ICsgICAgICAgICAgICAgICBp ZiAoZmxvd190dW5uZWwtPmlkID09IHBvcnRfdHVubmVsX2lkKQ0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIGdvdG8gb3V0Ow0KPiA+ICsgICAgICAgfQ0KPiA+ICsgICAgICAgZmxvd190dW5u ZWwgPSBOVUxMOw0KPiA+ICsNCj4gPiArb3V0Og0KPiA+ICsgICAgICAgcmV0dXJuIGZsb3dfdHVu bmVsOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtjb25zdCBjaGFyICoNCj4gPiArcG9ydF9mbG93X3R1 bm5lbF90eXBlKHN0cnVjdCBydGVfZmxvd190dW5uZWwgKnR1bm5lbCkNCj4gPiArew0KPiA+ICsg ICAgICAgY29uc3QgY2hhciAqdHlwZTsNCj4gPiArICAgICAgIHN3aXRjaCAodHVubmVsLT50eXBl KSB7DQo+ID4gKyAgICAgICBkZWZhdWx0Og0KPiA+ICsgICAgICAgICAgICAgICB0eXBlID0gInVu a25vd24iOw0KPiA+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgIGNhc2UgUlRF X0ZMT1dfSVRFTV9UWVBFX1ZYTEFOOg0KPiA+ICsgICAgICAgICAgICAgICB0eXBlID0gInZ4bGFu IjsNCj4gPiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ ICsgICAgICAgcmV0dXJuIHR5cGU7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0cnVjdCBwb3J0X2Zs b3dfdHVubmVsICoNCj4gPiArcG9ydF9mbG93X2xvY2F0ZV90dW5uZWwodWludDE2X3QgcG9ydF9p ZCwgc3RydWN0IHJ0ZV9mbG93X3R1bm5lbCAqdHVuKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1 Y3QgcnRlX3BvcnQgKnBvcnQgPSAmcG9ydHNbcG9ydF9pZF07DQo+ID4gKyAgICAgICBzdHJ1Y3Qg cG9ydF9mbG93X3R1bm5lbCAqZmxvd190dW5uZWw7DQo+ID4gKw0KPiA+ICsgICAgICAgTElTVF9G T1JFQUNIKGZsb3dfdHVubmVsLCAmcG9ydC0+Zmxvd190dW5uZWxfbGlzdCwgY2hhaW4pIHsNCj4g PiArICAgICAgICAgICAgICAgaWYgKCFtZW1jbXAoJmZsb3dfdHVubmVsLT50dW5uZWwsIHR1biwg c2l6ZW9mKCp0dW4pKSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsNCj4g PiArICAgICAgIH0NCj4gPiArICAgICAgIGZsb3dfdHVubmVsID0gTlVMTDsNCj4gPiArDQo+ID4g K291dDoNCj4gPiArICAgICAgIHJldHVybiBmbG93X3R1bm5lbDsNCj4gPiArfQ0KPiA+ICsNCj4g PiArdm9pZCBwb3J0X2Zsb3dfdHVubmVsX2xpc3QocG9ydGlkX3QgcG9ydF9pZCkNCj4gPiArew0K PiA+ICsgICAgICAgc3RydWN0IHJ0ZV9wb3J0ICpwb3J0ID0gJnBvcnRzW3BvcnRfaWRdOw0KPiA+ ICsgICAgICAgc3RydWN0IHBvcnRfZmxvd190dW5uZWwgKmZsdDsNCj4gPiArDQo+ID4gKyAgICAg ICBMSVNUX0ZPUkVBQ0goZmx0LCAmcG9ydC0+Zmxvd190dW5uZWxfbGlzdCwgY2hhaW4pIHsNCj4g PiArICAgICAgICAgICAgICAgcHJpbnRmKCJwb3J0ICV1IHR1bm5lbCAjJXUgdHlwZT0lcyIsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9pZCwgZmx0LT5pZCwgcG9ydF9mbG93X3R1 bm5lbF90eXBlKCZmbHQtPnR1bm5lbCkpOw0KPiA+ICsgICAgICAgICAgICAgICBpZiAoZmx0LT50 dW5uZWwudHVuX2lkKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiIGlkPSVs dSIsIGZsdC0+dHVubmVsLnR1bl9pZCk7DQo+ID4gKyAgICAgICAgICAgICAgIHByaW50ZigiXG4i KTsNCj4gPiArICAgICAgIH0NCj4gPiArfQ0KPiA+ICsNCj4gPiArdm9pZCBwb3J0X2Zsb3dfdHVu bmVsX2Rlc3Ryb3kocG9ydGlkX3QgcG9ydF9pZCwgdWludDMyX3QgdHVubmVsX2lkKQ0KPiA+ICt7 DQo+ID4gKyAgICAgICBzdHJ1Y3QgcnRlX3BvcnQgKnBvcnQgPSAmcG9ydHNbcG9ydF9pZF07DQo+ ID4gKyAgICAgICBzdHJ1Y3QgcG9ydF9mbG93X3R1bm5lbCAqZmx0Ow0KPiA+ICsNCj4gPiArICAg ICAgIExJU1RfRk9SRUFDSChmbHQsICZwb3J0LT5mbG93X3R1bm5lbF9saXN0LCBjaGFpbikgew0K PiA+ICsgICAgICAgICAgICAgICBpZiAoZmx0LT5pZCA9PSB0dW5uZWxfaWQpDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICB9DQo+ID4gKyAgICAgICBpZiAo Zmx0KSB7DQo+ID4gKyAgICAgICAgICAgICAgIExJU1RfUkVNT1ZFKGZsdCwgY2hhaW4pOw0KPiA+ ICsgICAgICAgICAgICAgICBmcmVlKGZsdCk7DQo+ID4gKyAgICAgICAgICAgICAgIHByaW50Zigi cG9ydCAldTogZmxvdyB0dW5uZWwgIyV1IGRlc3Ryb3llZFxuIiwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICBwb3J0X2lkLCB0dW5uZWxfaWQpOw0KPiA+ICsgICAgICAgfQ0KPiA+ICt9DQo+ ID4gKw0KPiA+ICt2b2lkIHBvcnRfZmxvd190dW5uZWxfY3JlYXRlKHBvcnRpZF90IHBvcnRfaWQs IGNvbnN0IHN0cnVjdCB0dW5uZWxfb3BzDQo+ICpvcHMpDQo+ID4gK3sNCj4gPiArICAgICAgIHN0 cnVjdCBydGVfcG9ydCAqcG9ydCA9ICZwb3J0c1twb3J0X2lkXTsNCj4gPiArICAgICAgIGVudW0g cnRlX2Zsb3dfaXRlbV90eXBlIHR5cGU7DQo+ID4gKyAgICAgICBzdHJ1Y3QgcG9ydF9mbG93X3R1 bm5lbCAqZmx0Ow0KPiA+ICsNCj4gPiArICAgICAgIGlmICghc3RyY21wKG9wcy0+dHlwZSwgInZ4 bGFuIikpDQo+ID4gKyAgICAgICAgICAgICAgIHR5cGUgPSBSVEVfRkxPV19JVEVNX1RZUEVfVlhM QU47DQo+ID4gKyAgICAgICBlbHNlIHsNCj4gPiArICAgICAgICAgICAgICAgcHJpbnRmKCJjYW5u b3Qgb2ZmbG9hZCBcIiVzXCIgdHVubmVsIHR5cGVcbiIsIG9wcy0+dHlwZSk7DQo+ID4gKyAgICAg ICAgICAgICAgIHJldHVybjsNCj4gPiArICAgICAgIH0NCj4gPiArICAgICAgIExJU1RfRk9SRUFD SChmbHQsICZwb3J0LT5mbG93X3R1bm5lbF9saXN0LCBjaGFpbikgew0KPiA+ICsgICAgICAgICAg ICAgICBpZiAoZmx0LT50dW5uZWwudHlwZSA9PSB0eXBlKQ0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsgICAgICAgaWYgKCFmbHQpIHsNCj4g PiArICAgICAgICAgICAgICAgZmx0ID0gY2FsbG9jKDEsIHNpemVvZigqZmx0KSk7DQo+ID4gKyAg ICAgICAgICAgICAgIGlmICghZmx0KSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcHJp bnRmKCJmYWlsZWQgdG8gYWxsb2NhdGUgcG9ydCBmbHQgb2JqZWN0XG4iKTsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm47DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArICAg ICAgICAgICAgICAgZmx0LT50dW5uZWwudHlwZSA9IHR5cGU7DQo+ID4gKyAgICAgICAgICAgICAg IGZsdC0+aWQgPSBMSVNUX0VNUFRZKCZwb3J0LT5mbG93X3R1bm5lbF9saXN0KSA/IDEgOg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSVNUX0ZJUlNUKCZwb3J0LT5mbG93 X3R1bm5lbF9saXN0KS0+aWQgKyAxOw0KPiA+ICsgICAgICAgICAgICAgICBMSVNUX0lOU0VSVF9I RUFEKCZwb3J0LT5mbG93X3R1bm5lbF9saXN0LCBmbHQsIGNoYWluKTsNCj4gPiArICAgICAgIH0N Cj4gPiArICAgICAgIHByaW50ZigicG9ydCAlZDogZmxvdyB0dW5uZWwgIyV1IHR5cGUgJXNcbiIs DQo+ID4gKyAgICAgICAgICAgICAgIHBvcnRfaWQsIGZsdC0+aWQsIG9wcy0+dHlwZSk7DQo+ID4g K30NCj4gPiArDQo+ID4gIC8qKiBHZW5lcmF0ZSBhIHBvcnRfZmxvdyBlbnRyeSBmcm9tIGF0dHJp YnV0ZXMvcGF0dGVybi9hY3Rpb25zLiAqLw0KPiA+ICBzdGF0aWMgc3RydWN0IHBvcnRfZmxvdyAq DQo+ID4gIHBvcnRfZmxvd19uZXcoY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2F0dHIgKmF0dHIsDQo+ ID4gQEAgLTE0NjMsMTkgKzE1NzIsMTM3IEBAIHJzc19jb25maWdfZGlzcGxheShzdHJ1Y3QgcnRl X2Zsb3dfYWN0aW9uX3Jzcw0KPiAqcnNzX2NvbmYpDQo+ID4gICAgICAgICB9DQo+ID4gIH0NCj4g Pg0KPiA+ICtzdGF0aWMgc3RydWN0IHBvcnRfZmxvd190dW5uZWwgKg0KPiA+ICtwb3J0X2Zsb3df dHVubmVsX29mZmxvYWRfY21kX3ByZXAocG9ydGlkX3QgcG9ydF9pZCwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0ZW0gKnBhdHRl cm4sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBy dGVfZmxvd19hY3Rpb24gKmFjdGlvbnMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0cnVjdCB0dW5uZWxfb3BzICp0dW5uZWxfb3BzKQ0KPiA+ICt7DQo+ID4g KyAgICAgICBpbnQgcmV0Ow0KPiA+ICsgICAgICAgc3RydWN0IHJ0ZV9wb3J0ICpwb3J0Ow0KPiA+ ICsgICAgICAgc3RydWN0IHBvcnRfZmxvd190dW5uZWwgKnBmdDsNCj4gPiArICAgICAgIHN0cnVj dCBydGVfZmxvd19lcnJvciBlcnJvcjsNCj4gPiArDQo+ID4gKyAgICAgICBwb3J0ID0gJnBvcnRz W3BvcnRfaWRdOw0KPiA+ICsgICAgICAgcGZ0ID0gcG9ydF9mbG93X2xvY2F0ZV90dW5uZWxfaWQo cG9ydCwgdHVubmVsX29wcy0+aWQpOw0KPiA+ICsgICAgICAgaWYgKCFwZnQpIHsNCj4gPiArICAg ICAgICAgICAgICAgcHJpbnRmKCJmYWlsZWQgdG8gbG9jYXRlIHBvcnQgZmxvdyB0dW5uZWwgIyV1 XG4iLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHR1bm5lbF9vcHMtPmlkKTsNCj4gPiAr ICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQo+ID4gKyAgICAgICB9DQo+ID4gKyAgICAgICBp ZiAodHVubmVsX29wcy0+YWN0aW9ucykgew0KPiA+ICsgICAgICAgICAgICAgICB1aW50MzJfdCBu dW1fYWN0aW9uczsNCj4gPiArICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2Fj dGlvbiAqYXB0cjsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIHJldCA9IHJ0ZV9mbG93X3R1 bm5lbF9kZWNhcF9zZXQocG9ydF9pZCwgJnBmdC0+dHVubmVsLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwZnQtPnBtZF9hY3Rpb25zLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwZnQtPm51 bV9wbWRfYWN0aW9ucywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmZXJyb3IpOw0KPiA+ICsgICAgICAgICAgICAgICBpZiAocmV0KSB7DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9mbG93X2NvbXBsYWluKCZlcnJvcik7DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQo+ID4gKyAgICAgICAgICAgICAg IH0NCj4gPiArICAgICAgICAgICAgICAgZm9yIChhcHRyID0gYWN0aW9ucywgbnVtX2FjdGlvbnMg PSAxOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGFwdHItPnR5cGUgIT0gUlRFX0ZMT1dfQUNU SU9OX1RZUEVfRU5EOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGFwdHIrKywgbnVtX2FjdGlv bnMrKyk7DQo+ID4gKyAgICAgICAgICAgICAgIHBmdC0+YWN0aW9ucyA9IG1hbGxvYygNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudW1fYWN0aW9ucyArICBwZnQtPm51bV9w bWRfYWN0aW9ucykgKg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9m KGFjdGlvbnNbMF0pKTsNCj4gPiArICAgICAgICAgICAgICAgaWYgKCFwZnQtPmFjdGlvbnMpIHsN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBydGVfZmxvd190dW5uZWxfYWN0aW9uX2RlY2Fw X3JlbGVhc2UoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBv cnRfaWQsIHBmdC0+YWN0aW9ucywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGZ0LT5udW1fcG1kX2FjdGlvbnMsICZlcnJvcik7DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArICAg ICAgICAgICAgICAgcnRlX21lbWNweShwZnQtPmFjdGlvbnMsIHBmdC0+cG1kX2FjdGlvbnMsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGZ0LT5udW1fcG1kX2FjdGlvbnMgKiBzaXpl b2YoYWN0aW9uc1swXSkpOw0KPiA+ICsgICAgICAgICAgICAgICBydGVfbWVtY3B5KHBmdC0+YWN0 aW9ucyArIHBmdC0+bnVtX3BtZF9hY3Rpb25zLCBhY3Rpb25zLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgIG51bV9hY3Rpb25zICogc2l6ZW9mKGFjdGlvbnNbMF0pKTsNCj4gPiArICAg ICAgIH0NCj4gPiArICAgICAgIGlmICh0dW5uZWxfb3BzLT5pdGVtcykgew0KPiA+ICsgICAgICAg ICAgICAgICB1aW50MzJfdCBudW1faXRlbXM7DQo+ID4gKyAgICAgICAgICAgICAgIGNvbnN0IHN0 cnVjdCBydGVfZmxvd19pdGVtICppcHRyOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgcmV0 ID0gcnRlX2Zsb3dfdHVubmVsX21hdGNoKHBvcnRfaWQsICZwZnQtPnR1bm5lbCwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwZnQtPnBtZF9pdGVtcywN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwZnQtPm51 bV9wbWRfaXRlbXMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmZXJyb3IpOw0KPiA+ICsgICAgICAgICAgICAgICBpZiAocmV0KSB7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgcG9ydF9mbG93X2NvbXBsYWluKCZlcnJvcik7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4g PiArICAgICAgICAgICAgICAgZm9yIChpcHRyID0gcGF0dGVybiwgbnVtX2l0ZW1zID0gMTsNCj4g PiArICAgICAgICAgICAgICAgICAgICBpcHRyLT50eXBlICE9IFJURV9GTE9XX0lURU1fVFlQRV9F TkQ7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaXB0cisrLCBudW1faXRlbXMrKyk7DQo+ID4g KyAgICAgICAgICAgICAgIHBmdC0+aXRlbXMgPSBtYWxsb2MoKG51bV9pdGVtcyArIHBmdC0+bnVt X3BtZF9pdGVtcykgKg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp emVvZihwYXR0ZXJuWzBdKSk7DQo+ID4gKyAgICAgICAgICAgICAgIGlmICghcGZ0LT5pdGVtcykg ew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJ0ZV9mbG93X3R1bm5lbF9pdGVtX3JlbGVh c2UoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfaWQs IHBmdC0+cG1kX2l0ZW1zLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwZnQtPm51bV9wbWRfaXRlbXMsICZlcnJvcik7DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIE5VTEw7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAgICAg ICAgICAgcnRlX21lbWNweShwZnQtPml0ZW1zLCBwZnQtPnBtZF9pdGVtcywNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICBwZnQtPm51bV9wbWRfaXRlbXMgKiBzaXplb2YocGF0dGVyblsw XSkpOw0KPiA+ICsgICAgICAgICAgICAgICBydGVfbWVtY3B5KHBmdC0+aXRlbXMgKyBwZnQtPm51 bV9wbWRfaXRlbXMsIHBhdHRlcm4sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgbnVt X2l0ZW1zICogc2l6ZW9mKHBhdHRlcm5bMF0pKTsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4g KyAgICAgICByZXR1cm4gcGZ0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZA0KPiA+ ICtwb3J0X2Zsb3dfdHVubmVsX29mZmxvYWRfY21kX3JlbGVhc2UocG9ydGlkX3QgcG9ydF9pZCwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHR1 bm5lbF9vcHMgKnR1bm5lbF9vcHMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBwb3J0X2Zsb3dfdHVubmVsICpwZnQpDQo+ID4gK3sNCj4gPiArICAgICAg IHN0cnVjdCBydGVfZmxvd19lcnJvciBlcnJvcjsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAodHVu bmVsX29wcy0+YWN0aW9ucykgew0KPiA+ICsgICAgICAgICAgICAgICBmcmVlKHBmdC0+YWN0aW9u cyk7DQo+ID4gKyAgICAgICAgICAgICAgIHJ0ZV9mbG93X3R1bm5lbF9hY3Rpb25fZGVjYXBfcmVs ZWFzZSgNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBwb3J0X2lkLCBwZnQtPnBtZF9hY3Rp b25zLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHBmdC0+bnVtX3BtZF9hY3Rpb25zLCAm ZXJyb3IpOw0KPiA+ICsgICAgICAgICAgICAgICBwZnQtPmFjdGlvbnMgPSBOVUxMOw0KPiA+ICsg ICAgICAgICAgICAgICBwZnQtPnBtZF9hY3Rpb25zID0gTlVMTDsNCj4gPiArICAgICAgIH0NCj4g PiArICAgICAgIGlmICh0dW5uZWxfb3BzLT5pdGVtcykgew0KPiA+ICsgICAgICAgICAgICAgICBm cmVlKHBmdC0+aXRlbXMpOw0KPiA+ICsgICAgICAgICAgICAgICBydGVfZmxvd190dW5uZWxfaXRl bV9yZWxlYXNlKHBvcnRfaWQsIHBmdC0+cG1kX2l0ZW1zLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBmdC0+bnVtX3BtZF9pdGVtcywNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3IpOw0KPiA+ICsg ICAgICAgICAgICAgICBwZnQtPml0ZW1zID0gTlVMTDsNCj4gPiArICAgICAgICAgICAgICAgcGZ0 LT5wbWRfaXRlbXMgPSBOVUxMOw0KPiA+ICsgICAgICAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICAv KiogVmFsaWRhdGUgZmxvdyBydWxlLiAqLw0KPiA+ICBpbnQNCj4gPiAgcG9ydF9mbG93X3ZhbGlk YXRlKHBvcnRpZF90IHBvcnRfaWQsDQo+ID4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj dCBydGVfZmxvd19hdHRyICphdHRyLA0KPiA+ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1 Y3QgcnRlX2Zsb3dfaXRlbSAqcGF0dGVybiwNCj4gPiAtICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IHJ0ZV9mbG93X2FjdGlvbiAqYWN0aW9ucykNCj4gPiArICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IHJ0ZV9mbG93X2FjdGlvbiAqYWN0aW9ucywNCj4gPiArICAgICAgICAgICAg ICAgICAgY29uc3Qgc3RydWN0IHR1bm5lbF9vcHMgKnR1bm5lbF9vcHMpDQo+ID4gIHsNCj4gPiAg ICAgICAgIHN0cnVjdCBydGVfZmxvd19lcnJvciBlcnJvcjsNCj4gPiArICAgICAgIHN0cnVjdCBw b3J0X2Zsb3dfdHVubmVsICpwZnQgPSBOVUxMOw0KPiA+DQo+ID4gICAgICAgICAvKiBQb2lzb25p bmcgdG8gbWFrZSBzdXJlIFBNRHMgdXBkYXRlIGl0IGluIGNhc2Ugb2YgZXJyb3IuICovDQo+ID4g ICAgICAgICBtZW1zZXQoJmVycm9yLCAweDExLCBzaXplb2YoZXJyb3IpKTsNCj4gPiArICAgICAg IGlmICh0dW5uZWxfb3BzLT5lbmFibGVkKSB7DQo+ID4gKyAgICAgICAgICAgICAgIHBmdCA9IHBv cnRfZmxvd190dW5uZWxfb2ZmbG9hZF9jbWRfcHJlcChwb3J0X2lkLCBwYXR0ZXJuLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0 aW9ucywgdHVubmVsX29wcyk7DQo+ID4gKyAgICAgICAgICAgICAgIGlmICghcGZ0KQ0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PRU5UOw0KPiA+ICsgICAgICAgICAgICAg ICBpZiAocGZ0LT5pdGVtcykNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuID0g cGZ0LT5pdGVtczsNCj4gPiArICAgICAgICAgICAgICAgaWYgKHBmdC0+YWN0aW9ucykNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zID0gcGZ0LT5hY3Rpb25zOw0KPiA+ICsgICAg ICAgfQ0KPiA+ICAgICAgICAgaWYgKHJ0ZV9mbG93X3ZhbGlkYXRlKHBvcnRfaWQsIGF0dHIsIHBh dHRlcm4sIGFjdGlvbnMsICZlcnJvcikpDQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiBwb3J0 X2Zsb3dfY29tcGxhaW4oJmVycm9yKTsNCj4gPiArICAgICAgIGlmICh0dW5uZWxfb3BzLT5lbmFi bGVkKQ0KPiA+ICsgICAgICAgICAgICAgICBwb3J0X2Zsb3dfdHVubmVsX29mZmxvYWRfY21kX3Jl bGVhc2UocG9ydF9pZCwgdHVubmVsX29wcywgcGZ0KTsNCj4gPiAgICAgICAgIHByaW50ZigiRmxv dyBydWxlIHZhbGlkYXRlZFxuIik7DQo+ID4gICAgICAgICByZXR1cm4gMDsNCj4gPiAgfQ0KPiA+ IEBAIC0xNTA1LDEzICsxNzMyLDE1IEBAIGludA0KPiA+ICBwb3J0X2Zsb3dfY3JlYXRlKHBvcnRp ZF90IHBvcnRfaWQsDQo+ID4gICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3df YXR0ciAqYXR0ciwNCj4gPiAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBydGVfZmxvd19p dGVtICpwYXR0ZXJuLA0KPiA+IC0gICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHJ0ZV9mbG93 X2FjdGlvbiAqYWN0aW9ucykNCj4gPiArICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBydGVf Zmxvd19hY3Rpb24gKmFjdGlvbnMsDQo+ID4gKyAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg dHVubmVsX29wcyAqdHVubmVsX29wcykNCj4gPiAgew0KPiA+ICAgICAgICAgc3RydWN0IHJ0ZV9m bG93ICpmbG93Ow0KPiA+ICAgICAgICAgc3RydWN0IHJ0ZV9wb3J0ICpwb3J0Ow0KPiA+ICAgICAg ICAgc3RydWN0IHBvcnRfZmxvdyAqcGY7DQo+ID4gICAgICAgICB1aW50MzJfdCBpZCA9IDA7DQo+ ID4gICAgICAgICBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgZXJyb3I7DQo+ID4gKyAgICAgICBzdHJ1 Y3QgcG9ydF9mbG93X3R1bm5lbCAqcGZ0ID0gTlVMTDsNCj4gPg0KPiA+ICAgICAgICAgcG9ydCA9 ICZwb3J0c1twb3J0X2lkXTsNCj4gPiAgICAgICAgIGlmIChwb3J0LT5mbG93X2xpc3QpIHsNCj4g PiBAQCAtMTUyMiw2ICsxNzUxLDE2IEBAIHBvcnRfZmxvd19jcmVhdGUocG9ydGlkX3QgcG9ydF9p ZCwNCj4gPiAgICAgICAgICAgICAgICAgfQ0KPiA+ICAgICAgICAgICAgICAgICBpZCA9IHBvcnQt PmZsb3dfbGlzdC0+aWQgKyAxOw0KPiA+ICAgICAgICAgfQ0KPiA+ICsgICAgICAgaWYgKHR1bm5l bF9vcHMtPmVuYWJsZWQpIHsNCj4gPiArICAgICAgICAgICAgICAgcGZ0ID0gcG9ydF9mbG93X3R1 bm5lbF9vZmZsb2FkX2NtZF9wcmVwKHBvcnRfaWQsIHBhdHRlcm4sDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zLCB0dW5u ZWxfb3BzKTsNCj4gPiArICAgICAgICAgICAgICAgaWYgKCFwZnQpDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChwZnQt Pml0ZW1zKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm4gPSBwZnQtPml0ZW1z Ow0KPiA+ICsgICAgICAgICAgICAgICBpZiAocGZ0LT5hY3Rpb25zKQ0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIGFjdGlvbnMgPSBwZnQtPmFjdGlvbnM7DQo+ID4gKyAgICAgICB9DQo+ID4g ICAgICAgICBwZiA9IHBvcnRfZmxvd19uZXcoYXR0ciwgcGF0dGVybiwgYWN0aW9ucywgJmVycm9y KTsNCj4gPiAgICAgICAgIGlmICghcGYpDQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiBwb3J0 X2Zsb3dfY29tcGxhaW4oJmVycm9yKTsNCj4gPiBAQCAtMTUzNyw2ICsxNzc2LDggQEAgcG9ydF9m bG93X2NyZWF0ZShwb3J0aWRfdCBwb3J0X2lkLA0KPiA+ICAgICAgICAgcGYtPmlkID0gaWQ7DQo+ ID4gICAgICAgICBwZi0+ZmxvdyA9IGZsb3c7DQo+ID4gICAgICAgICBwb3J0LT5mbG93X2xpc3Qg PSBwZjsNCj4gPiArICAgICAgIGlmICh0dW5uZWxfb3BzLT5lbmFibGVkKQ0KPiA+ICsgICAgICAg ICAgICAgICBwb3J0X2Zsb3dfdHVubmVsX29mZmxvYWRfY21kX3JlbGVhc2UocG9ydF9pZCwgdHVu bmVsX29wcywgcGZ0KTsNCj4gPiAgICAgICAgIHByaW50ZigiRmxvdyBydWxlICMldSBjcmVhdGVk XG4iLCBwZi0+aWQpOw0KPiA+ICAgICAgICAgcmV0dXJuIDA7DQo+ID4gIH0NCj4gPiBAQCAtMTgz MSw3ICsyMDcyLDkgQEAgcG9ydF9mbG93X2xpc3QocG9ydGlkX3QgcG9ydF9pZCwgdWludDMyX3Qg biwgY29uc3QNCj4gdWludDMyX3QgZ3JvdXBbbl0pDQo+ID4gICAgICAgICAgICAgICAgICAgICAg ICBwZi0+cnVsZS5hdHRyLT5lZ3Jlc3MgPyAnZScgOiAnLScsDQo+ID4gICAgICAgICAgICAgICAg ICAgICAgICBwZi0+cnVsZS5hdHRyLT50cmFuc2ZlciA/ICd0JyA6ICctJyk7DQo+ID4gICAgICAg ICAgICAgICAgIHdoaWxlIChpdGVtLT50eXBlICE9IFJURV9GTE9XX0lURU1fVFlQRV9FTkQpIHsN Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBpZiAocnRlX2Zsb3dfY29udihSVEVfRkxPV19D T05WX09QX0lURU1fTkFNRV9QVFIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh1 aW50MzJfdClpdGVtLT50eXBlID4gSU5UX01BWCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5hbWUgPSAiUE1EX0lOVEVSTkFMIjsNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBlbHNlIGlmDQo+IChydGVfZmxvd19jb252KFJURV9GTE9XX0NPTlZfT1BfSVRFTV9OQU1F X1BUUiwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFt ZSwgc2l6ZW9mKG5hbWUpLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh2b2lkICopKHVpbnRwdHJfdClpdGVtLT50eXBlLA0KPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpIDw9IDApDQo+ID4gQEAgLTE4NDIsNyAr MjA4NSw5IEBAIHBvcnRfZmxvd19saXN0KHBvcnRpZF90IHBvcnRfaWQsIHVpbnQzMl90IG4sIGNv bnN0DQo+IHVpbnQzMl90IGdyb3VwW25dKQ0KPiA+ICAgICAgICAgICAgICAgICB9DQo+ID4gICAg ICAgICAgICAgICAgIHByaW50ZigiPT4iKTsNCj4gPiAgICAgICAgICAgICAgICAgd2hpbGUgKGFj dGlvbi0+dHlwZSAhPSBSVEVfRkxPV19BQ1RJT05fVFlQRV9FTkQpIHsNCj4gPiAtICAgICAgICAg ICAgICAgICAgICAgICBpZiAocnRlX2Zsb3dfY29udihSVEVfRkxPV19DT05WX09QX0FDVElPTl9O QU1FX1BUUiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHVpbnQzMl90KWFjdGlv bi0+dHlwZSA+IElOVF9NQVgpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu YW1lID0gIlBNRF9JTlRFUk5BTCI7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBp Zg0KPiAocnRlX2Zsb3dfY29udihSVEVfRkxPV19DT05WX09QX0FDVElPTl9OQU1FX1BUUiwNCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZSwgc2l6ZW9m KG5hbWUpLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2 b2lkICopKHVpbnRwdHJfdClhY3Rpb24tPnR5cGUsDQo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTlVMTCkgPD0gMCkNCj4gPiBkaWZmIC0tZ2l0IGEvYXBwL3Rl c3QtcG1kL3Rlc3RwbWQuYyBiL2FwcC90ZXN0LXBtZC90ZXN0cG1kLmMNCj4gPiBpbmRleCBmZTY0 NTBjYzBkLi5lNDg0MDc5MTQ3IDEwMDY0NA0KPiA+IC0tLSBhL2FwcC90ZXN0LXBtZC90ZXN0cG1k LmMNCj4gPiArKysgYi9hcHAvdGVzdC1wbWQvdGVzdHBtZC5jDQo+ID4gQEAgLTM1ODgsNiArMzU4 OCw4IEBAIGluaXRfcG9ydF9kY2JfY29uZmlnKHBvcnRpZF90IHBpZCwNCj4gPiAgc3RhdGljIHZv aWQNCj4gPiAgaW5pdF9wb3J0KHZvaWQpDQo+ID4gIHsNCj4gPiArICAgICAgIGludCBpOw0KPiA+ ICsNCj4gPiAgICAgICAgIC8qIENvbmZpZ3VyYXRpb24gb2YgRXRoZXJuZXQgcG9ydHMuICovDQo+ ID4gICAgICAgICBwb3J0cyA9IHJ0ZV96bWFsbG9jKCJ0ZXN0cG1kOiBwb3J0cyIsDQo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgcnRlX3BvcnQpICogUlRFX01B WF9FVEhQT1JUUywNCj4gPiBAQCAtMzU5Nyw3ICszNTk5LDggQEAgaW5pdF9wb3J0KHZvaWQpDQo+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicnRlX3ptYWxsb2MoJWQgc3RydWN0 IHJ0ZV9wb3J0KSBmYWlsZWRcbiIsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSVEVfTUFYX0VUSFBPUlRTKTsNCj4gPiAgICAgICAgIH0NCj4gPiAtDQo+ID4gKyAgICAgICBm b3IgKGkgPSAwOyBpIDwgUlRFX01BWF9FVEhQT1JUUzsgaSsrKQ0KPiA+ICsgICAgICAgICAgICAg ICBMSVNUX0lOSVQoJnBvcnRzW2ldLmZsb3dfdHVubmVsX2xpc3QpOw0KPiA+ICAgICAgICAgLyog SW5pdGlhbGl6ZSBwb3J0cyBOVU1BIHN0cnVjdHVyZXMgKi8NCj4gPiAgICAgICAgIG1lbXNldChw b3J0X251bWEsIE5VTUFfTk9fQ09ORklHLCBSVEVfTUFYX0VUSFBPUlRTKTsNCj4gPiAgICAgICAg IG1lbXNldChyeHJpbmdfbnVtYSwgTlVNQV9OT19DT05GSUcsIFJURV9NQVhfRVRIUE9SVFMpOw0K PiA+IGRpZmYgLS1naXQgYS9hcHAvdGVzdC1wbWQvdGVzdHBtZC5oIGIvYXBwL3Rlc3QtcG1kL3Rl c3RwbWQuaA0KPiA+IGluZGV4IGYxMzlmZTdhMGEuLjFkZDhjZmQzZDggMTAwNjQ0DQo+ID4gLS0t IGEvYXBwL3Rlc3QtcG1kL3Rlc3RwbWQuaA0KPiA+ICsrKyBiL2FwcC90ZXN0LXBtZC90ZXN0cG1k LmgNCj4gPiBAQCAtMTIsNiArMTIsNyBAQA0KPiA+ICAjaW5jbHVkZSA8cnRlX2dyby5oPg0KPiA+ ICAjaW5jbHVkZSA8cnRlX2dzby5oPg0KPiA+ICAjaW5jbHVkZSA8Y21kbGluZS5oPg0KPiA+ICsj aW5jbHVkZSA8c3lzL3F1ZXVlLmg+DQo+ID4NCj4gPiAgI2RlZmluZSBSVEVfUE9SVF9BTEwgICAg ICAgICAgICAofihwb3J0aWRfdCkweDApDQo+ID4NCj4gPiBAQCAtMTQyLDYgKzE0MywyNiBAQCBz dHJ1Y3QgcG9ydF9mbG93IHsNCj4gPiAgICAgICAgIHVpbnQ4X3QgZGF0YVtdOyAvKio8IFN0b3Jh Z2UgZm9yIGZsb3cgcnVsZSBkZXNjcmlwdGlvbiAqLw0KPiA+ICB9Ow0KPiA+DQo+ID4gK3N0cnVj dCBwb3J0X2Zsb3dfdHVubmVsIHsNCj4gPiArICAgICAgIExJU1RfRU5UUlkocG9ydF9mbG93X3R1 bm5lbCkgY2hhaW47DQo+ID4gKyAgICAgICBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uICpwbWRfYWN0 aW9uczsNCj4gPiArICAgICAgIHN0cnVjdCBydGVfZmxvd19pdGVtICAgKnBtZF9pdGVtczsNCj4g PiArICAgICAgIHVpbnQzMl90IGlkOw0KPiA+ICsgICAgICAgdWludDMyX3QgbnVtX3BtZF9hY3Rp b25zOw0KPiA+ICsgICAgICAgdWludDMyX3QgbnVtX3BtZF9pdGVtczsNCj4gPiArICAgICAgIHN0 cnVjdCBydGVfZmxvd190dW5uZWwgdHVubmVsOw0KPiA+ICsgICAgICAgc3RydWN0IHJ0ZV9mbG93 X2FjdGlvbiAqYWN0aW9uczsNCj4gPiArICAgICAgIHN0cnVjdCBydGVfZmxvd19pdGVtICppdGVt czsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCB0dW5uZWxfb3BzIHsNCj4gPiArICAgICAg IHVpbnQzMl90IGlkOw0KPiA+ICsgICAgICAgY2hhciB0eXBlWzE2XTsNCj4gPiArICAgICAgIHVp bnQzMl90IGVuYWJsZWQ6MTsNCj4gPiArICAgICAgIHVpbnQzMl90IGFjdGlvbnM6MTsNCj4gPiAr ICAgICAgIHVpbnQzMl90IGl0ZW1zOjE7DQo+ID4gK307DQo+ID4gKw0KPiA+ICAvKioNCj4gPiAg ICogVGhlIGRhdGEgc3RydWN0dXJlIGFzc29jaWF0ZWQgd2l0aCBlYWNoIHBvcnQuDQo+ID4gICAq Lw0KPiA+IEBAIC0xNzIsNiArMTkzLDcgQEAgc3RydWN0IHJ0ZV9wb3J0IHsNCj4gPiAgICAgICAg IHVpbnQzMl90ICAgICAgICAgICAgICAgIG1jX2FkZHJfbmI7IC8qKjwgbmIuIG9mIGFkZHIuIGlu IG1jX2FkZHJfcG9vbCAqLw0KPiA+ICAgICAgICAgdWludDhfdCAgICAgICAgICAgICAgICAgc2xh dmVfZmxhZzsgLyoqPCBib25kaW5nIHNsYXZlIHBvcnQgKi8NCj4gPiAgICAgICAgIHN0cnVjdCBw b3J0X2Zsb3cgICAgICAgICpmbG93X2xpc3Q7IC8qKjwgQXNzb2NpYXRlZCBmbG93cy4gKi8NCj4g PiArICAgICAgIExJU1RfSEVBRCgsIHBvcnRfZmxvd190dW5uZWwpIGZsb3dfdHVubmVsX2xpc3Q7 DQo+ID4gICAgICAgICBjb25zdCBzdHJ1Y3QgcnRlX2V0aF9yeHR4X2NhbGxiYWNrDQo+ICpyeF9k dW1wX2NiW1JURV9NQVhfUVVFVUVTX1BFUl9QT1JUKzFdOw0KPiA+ICAgICAgICAgY29uc3Qgc3Ry dWN0IHJ0ZV9ldGhfcnh0eF9jYWxsYmFjaw0KPiAqdHhfZHVtcF9jYltSVEVfTUFYX1FVRVVFU19Q RVJfUE9SVCsxXTsNCj4gPiAgICAgICAgIC8qKjwgbWV0YWRhdGEgdmFsdWUgdG8gaW5zZXJ0IGlu IFR4IHBhY2tldHMuICovDQo+ID4gQEAgLTc0OSwxMSArNzcxLDEzIEBAIHZvaWQgcG9ydF9yZWdf c2V0KHBvcnRpZF90IHBvcnRfaWQsIHVpbnQzMl90DQo+IHJlZ19vZmYsIHVpbnQzMl90IHZhbHVl KTsNCj4gPiAgaW50IHBvcnRfZmxvd192YWxpZGF0ZShwb3J0aWRfdCBwb3J0X2lkLA0KPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2F0dHIgKmF0dHIsDQo+ ID4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbSAqcGF0 dGVybiwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBydGVfZmxvd19h Y3Rpb24gKmFjdGlvbnMpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0 IHJ0ZV9mbG93X2FjdGlvbiAqYWN0aW9ucywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCB0dW5uZWxfb3BzICp0dW5uZWxfb3BzKTsNCj4gPiAgaW50IHBvcnRfZmxvd19j cmVhdGUocG9ydGlkX3QgcG9ydF9pZCwNCj4gPiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgcnRlX2Zsb3dfYXR0ciAqYXR0ciwNCj4gPiAgICAgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbSAqcGF0dGVybiwNCj4gPiAtICAgICAgICAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uICphY3Rpb25zKTsNCj4gPiArICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uICphY3Rpb25zLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB0dW5uZWxfb3BzICp0dW5uZWxfb3BzKTsN Cj4gPiAgdm9pZCB1cGRhdGVfYWdlX2FjdGlvbl9jb250ZXh0KGNvbnN0IHN0cnVjdCBydGVfZmxv d19hY3Rpb24gKmFjdGlvbnMsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBvcnRf ZmxvdyAqcGYpOw0KPiA+ICBpbnQgcG9ydF9mbG93X2Rlc3Ryb3kocG9ydGlkX3QgcG9ydF9pZCwg dWludDMyX3QgbiwgY29uc3QgdWludDMyX3QgKnJ1bGUpOw0KPiA+IEBAIC03NjMsNiArNzg3LDEy IEBAIGludCBwb3J0X2Zsb3dfcXVlcnkocG9ydGlkX3QgcG9ydF9pZCwgdWludDMyX3QNCj4gcnVs ZSwNCj4gPiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBydGVfZmxvd19hY3Rpb24g KmFjdGlvbik7DQo+ID4gIHZvaWQgcG9ydF9mbG93X2xpc3QocG9ydGlkX3QgcG9ydF9pZCwgdWlu dDMyX3QgbiwgY29uc3QgdWludDMyX3QgKmdyb3VwKTsNCj4gPiAgdm9pZCBwb3J0X2Zsb3dfYWdl ZChwb3J0aWRfdCBwb3J0X2lkLCB1aW50OF90IGRlc3Ryb3kpOw0KPiA+ICtjb25zdCBjaGFyICpw b3J0X2Zsb3dfdHVubmVsX3R5cGUoc3RydWN0IHJ0ZV9mbG93X3R1bm5lbCAqdHVubmVsKTsNCj4g PiArc3RydWN0IHBvcnRfZmxvd190dW5uZWwgKg0KPiA+ICtwb3J0X2Zsb3dfbG9jYXRlX3R1bm5l bCh1aW50MTZfdCBwb3J0X2lkLCBzdHJ1Y3QgcnRlX2Zsb3dfdHVubmVsICp0dW4pOw0KPiA+ICt2 b2lkIHBvcnRfZmxvd190dW5uZWxfbGlzdChwb3J0aWRfdCBwb3J0X2lkKTsNCj4gPiArdm9pZCBw b3J0X2Zsb3dfdHVubmVsX2Rlc3Ryb3kocG9ydGlkX3QgcG9ydF9pZCwgdWludDMyX3QgdHVubmVs X2lkKTsNCj4gPiArdm9pZCBwb3J0X2Zsb3dfdHVubmVsX2NyZWF0ZShwb3J0aWRfdCBwb3J0X2lk LCBjb25zdCBzdHJ1Y3QgdHVubmVsX29wcw0KPiAqb3BzKTsNCj4gPiAgaW50IHBvcnRfZmxvd19p c29sYXRlKHBvcnRpZF90IHBvcnRfaWQsIGludCBzZXQpOw0KPiA+DQo+ID4gIHZvaWQgcnhfcmlu Z19kZXNjX2Rpc3BsYXkocG9ydGlkX3QgcG9ydF9pZCwgcXVldWVpZF90IHJ4cV9pZCwgdWludDE2 X3QNCj4gcnhkX2lkKTsNCj4gPiBkaWZmIC0tZ2l0IGEvYXBwL3Rlc3QtcG1kL3V0aWwuYyBiL2Fw cC90ZXN0LXBtZC91dGlsLmMNCj4gPiBpbmRleCA4NDg4ZmExYThmLi43ODFhODEzNzU5IDEwMDY0 NA0KPiA+IC0tLSBhL2FwcC90ZXN0LXBtZC91dGlsLmMNCj4gPiArKysgYi9hcHAvdGVzdC1wbWQv dXRpbC5jDQo+ID4gQEAgLTQ4LDE4ICs0OCw0OSBAQCBkdW1wX3BrdF9idXJzdCh1aW50MTZfdCBw b3J0X2lkLCB1aW50MTZfdCBxdWV1ZSwNCj4gc3RydWN0IHJ0ZV9tYnVmICpwa3RzW10sDQo+ID4g ICAgICAgICAgICAgICAgaXNfcnggPyAicmVjZWl2ZWQiIDogInNlbnQiLA0KPiA+ICAgICAgICAg ICAgICAgICh1bnNpZ25lZCBpbnQpIG5iX3BrdHMpOw0KPiA+ICAgICAgICAgZm9yIChpID0gMDsg aSA8IG5iX3BrdHM7IGkrKykgew0KPiA+ICsgICAgICAgICAgICAgICBpbnQgcmV0Ow0KPiA+ICsg ICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgZXJyb3I7DQo+ID4gKyAgICAgICAg ICAgICAgIHN0cnVjdCBydGVfZmxvd19yZXN0b3JlX2luZm8gaW5mbyA9IHsgMCwgfTsNCj4gPiAr DQo+ID4gICAgICAgICAgICAgICAgIG1iID0gcGt0c1tpXTsNCj4gPiAgICAgICAgICAgICAgICAg ZXRoX2hkciA9IHJ0ZV9wa3RtYnVmX3JlYWQobWIsIDAsIHNpemVvZihfZXRoX2hkciksICZfZXRo X2hkcik7DQo+ID4gICAgICAgICAgICAgICAgIGV0aF90eXBlID0gUlRFX0JFX1RPX0NQVV8xNihl dGhfaGRyLT5ldGhlcl90eXBlKTsNCj4gPiAtICAgICAgICAgICAgICAgb2xfZmxhZ3MgPSBtYi0+ b2xfZmxhZ3M7DQo+ID4gICAgICAgICAgICAgICAgIHBhY2tldF90eXBlID0gbWItPnBhY2tldF90 eXBlOw0KPiA+ICAgICAgICAgICAgICAgICBpc19lbmNhcHN1bGF0aW9uID0gUlRFX0VUSF9JU19U VU5ORUxfUEtUKHBhY2tldF90eXBlKTsNCj4gPiAtDQo+ID4gKyAgICAgICAgICAgICAgIHJldCA9 IHJ0ZV9mbG93X2dldF9yZXN0b3JlX2luZm8ocG9ydF9pZCwgbWIsICZpbmZvLCAmZXJyb3IpOw0K PiA+ICsgICAgICAgICAgICAgICBpZiAoIXJldCkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIHByaW50ZigicmVzdG9yZSBpbmZvOiIpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg IGlmIChpbmZvLmZsYWdzICYgUlRFX0ZMT1dfUkVTVE9SRV9JTkZPX1RVTk5FTCkgew0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBvcnRfZmxvd190dW5uZWwgKnBv cnRfdHVubmVsOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBv cnRfdHVubmVsID0gcG9ydF9mbG93X2xvY2F0ZV90dW5uZWwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvcnRfaWQsICZpbmZvLnR1bm5lbCk7DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAtIHR1bm5lbCIpOw0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcnRfdHVubmVsKQ0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAjJXUiLCBw b3J0X3R1bm5lbC0+aWQpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxz ZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAl cyIsICItbm9uZS0iKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50 ZigiIHR5cGUgJXMiLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwb3J0X2Zsb3dfdHVubmVsX3R5cGUoJmluZm8udHVubmVsKSk7DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHByaW50ZigiIC0gbm8gdHVubmVsIGluZm8iKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICB9DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZm8uZmxhZ3MgJiBSVEVfRkxP V19SRVNUT1JFX0lORk9fRU5DQVBTVUxBVEVEKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcHJpbnRmKCIgLSBvdXRlciBoZWFkZXIgcHJlc2VudCIpOw0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgIGVsc2UNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHByaW50ZigiIC0gbm8gb3V0ZXIgaGVhZGVyIik7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgaWYgKGluZm8uZmxhZ3MgJiBSVEVfRkxPV19SRVNUT1JFX0lORk9fR1JPVVBfSUQpDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAtIG1pc3MgZ3JvdXAgJXUi LCBpbmZvLmdyb3VwX2lkKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAtIG5vIG1pc3MgZ3JvdXAi KTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlxuIik7DQo+ID4gKyAgICAg ICAgICAgICAgIH0NCj4gPiAgICAgICAgICAgICAgICAgcHJpbnRfZXRoZXJfYWRkcigiICBzcmM9 IiwgJmV0aF9oZHItPnNfYWRkcik7DQo+ID4gICAgICAgICAgICAgICAgIHByaW50X2V0aGVyX2Fk ZHIoIiAtIGRzdD0iLCAmZXRoX2hkci0+ZF9hZGRyKTsNCj4gPiAgICAgICAgICAgICAgICAgcHJp bnRmKCIgLSB0eXBlPTB4JTA0eCAtIGxlbmd0aD0ldSAtIG5iX3NlZ3M9JWQiLA0KPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgZXRoX3R5cGUsICh1bnNpZ25lZCBpbnQpIG1iLT5wa3RfbGVuLA0K PiA+ICAgICAgICAgICAgICAgICAgICAgICAgKGludCltYi0+bmJfc2Vncyk7DQo+ID4gKyAgICAg ICAgICAgICAgIG9sX2ZsYWdzID0gbWItPm9sX2ZsYWdzOw0KPiA+ICAgICAgICAgICAgICAgICBp ZiAob2xfZmxhZ3MgJiBQS1RfUlhfUlNTX0hBU0gpIHsNCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICBwcmludGYoIiAtIFJTUyBoYXNoPTB4JXgiLCAodW5zaWduZWQgaW50KSBtYi0+aGFzaC5y c3MpOw0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiIC0gUlNTIHF1ZXVlPTB4 JXgiLCAodW5zaWduZWQgaW50KSBxdWV1ZSk7DQo+ID4gZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMv dGVzdHBtZF9hcHBfdWcvdGVzdHBtZF9mdW5jcy5yc3QNCj4gYi9kb2MvZ3VpZGVzL3Rlc3RwbWRf YXBwX3VnL3Rlc3RwbWRfZnVuY3MucnN0DQo+ID4gaW5kZXggYTk3MmVmODk1MS4uOTdmY2JmZDMy OSAxMDA2NDQNCj4gPiAtLS0gYS9kb2MvZ3VpZGVzL3Rlc3RwbWRfYXBwX3VnL3Rlc3RwbWRfZnVu Y3MucnN0DQo+ID4gKysrIGIvZG9jL2d1aWRlcy90ZXN0cG1kX2FwcF91Zy90ZXN0cG1kX2Z1bmNz LnJzdA0KPiA+IEBAIC0zNzIwLDYgKzM3MjAsNDUgQEAgZm9sbG93aW5nIHNlY3Rpb25zLg0KPiA+ DQo+ID4gICAgIGZsb3cgYWdlZCB7cG9ydF9pZH0gW2Rlc3Ryb3ldDQo+ID4NCj4gPiArLSBUdW5u ZWwgb2ZmbG9hZCAtIGNyZWF0ZSBhIHR1bm5lbCBzdHViOjoNCj4gPiArDQo+ID4gKyAgIGZsb3cg dHVubmVsIGNyZWF0ZSB7cG9ydF9pZH0gdHlwZSB7dHVubmVsX3R5cGV9DQo+ID4gKw0KPiA+ICst IFR1bm5lbCBvZmZsb2FkIC0gZGVzdHJveSBhIHR1bm5lbCBzdHViOjoNCj4gPiArDQo+ID4gKyAg IGZsb3cgdHVubmVsIGRlc3Ryb3kge3BvcnRfaWR9IGlkIHt0dW5uZWxfaWR9DQo+ID4gKw0KPiA+ ICstIFR1bm5lbCBvZmZsb2FkIC0gbGlzdCBwb3J0IHR1bm5lbCBzdHViczo6DQo+ID4gKw0KPiA+ ICsgICBmbG93IHR1bm5lbCBsaXN0IHtwb3J0X2lkfQ0KPiA+ICsNCj4gPiArQ3JlYXRpbmcgYSB0 dW5uZWwgc3R1YiBmb3Igb2ZmbG9hZA0KPiA+ICt+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+DQo+ID4gKw0KPiA+ICtgYGZsb3cgdHVubmVsIGNyZWF0ZWBgIHNldHVwIGEgdHVubmVs IHN0dWIgZm9yIHR1bm5lbCBvZmZsb2FkIGZsb3cgcnVsZXM6Og0KPiA+ICsNCj4gPiArICAgZmxv dyB0dW5uZWwgY3JlYXRlIHtwb3J0X2lkfSB0eXBlIHt0dW5uZWxfdHlwZX0NCj4gPiArDQo+ID4g K0lmIHN1Y2Nlc3NmdWwsIGl0IHdpbGwgcmV0dXJuIGEgdHVubmVsIHN0dWIgSUQgdXNhYmxlIHdp dGggb3RoZXIgY29tbWFuZHM6Og0KPiA+ICsNCj4gPiArICAgcG9ydCBbLi4uXTogZmxvdyB0dW5u ZWwgI1suLi5dIHR5cGUgWy4uLl0NCj4gPiArDQo+ID4gK1R1bm5lbCBzdHViIElEIGlzIHJlbGF0 aXZlIHRvIGEgcG9ydC4NCj4gPiArDQo+ID4gK0Rlc3Ryb3lpbmcgdHVubmVsIG9mZmxvYWQgc3R1 Yg0KPiA+ICt+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCj4gPiArDQo+ID4gK2BgZmxv dyB0dW5uZWwgZGVzdHJveWBgIGRlc3Ryb3kgcG9ydCB0dW5uZWwgc3R1Yjo6DQo+ID4gKw0KPiA+ ICsgICBmbG93IHR1bm5lbCBkZXN0cm95IHtwb3J0X2lkfSBpZCB7dHVubmVsX2lkfQ0KPiA+ICsN Cj4gPiArTGlzdGluZyB0dW5uZWwgb2ZmbG9hZCBzdHVicw0KPiA+ICt+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+DQo+ID4gKw0KPiA+ICtgYGZsb3cgdHVubmVsIGxpc3RgYCBsaXN0IHBvcnQg dHVubmVsIG9mZmxvYWQgc3R1YnM6Og0KPiA+ICsNCj4gPiArICAgZmxvdyB0dW5uZWwgbGlzdCB7 cG9ydF9pZH0NCj4gPiArDQo+ID4gIFZhbGlkYXRpbmcgZmxvdyBydWxlcw0KPiA+ICB+fn5+fn5+ fn5+fn5+fn5+fn5+fn4NCj4gPg0KPiA+IEBAIC0zNzY2LDYgKzM4MDUsNyBAQCB0byBgYHJ0ZV9m bG93X2NyZWF0ZSgpYGA6Og0KPiA+DQo+ID4gICAgIGZsb3cgY3JlYXRlIHtwb3J0X2lkfQ0KPiA+ ICAgICAgICBbZ3JvdXAge2dyb3VwX2lkfV0gW3ByaW9yaXR5IHtsZXZlbH1dIFtpbmdyZXNzXSBb ZWdyZXNzXSBbdHJhbnNmZXJdDQo+ID4gKyAgICAgIFt0dW5uZWxfc2V0IHt0dW5uZWxfaWR9XSBb dHVubmVsX21hdGNoIHt0dW5uZWxfaWR9XQ0KPiA+ICAgICAgICBwYXR0ZXJuIHtpdGVtfSBbLyB7 aXRlbX0gWy4uLl1dIC8gZW5kDQo+ID4gICAgICAgIGFjdGlvbnMge2FjdGlvbn0gWy8ge2FjdGlv bn0gWy4uLl1dIC8gZW5kDQo+ID4NCj4gPiBAQCAtMzc4MCw2ICszODIwLDcgQEAgT3RoZXJ3aXNl IGl0IHdpbGwgc2hvdyBhbiBlcnJvciBtZXNzYWdlIG9mIHRoZQ0KPiBmb3JtOjoNCj4gPiAgUGFy YW1ldGVycyBkZXNjcmliZSBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOg0KPiA+DQo+ID4gIC0gQXR0 cmlidXRlcyAoKmdyb3VwKiwgKnByaW9yaXR5KiwgKmluZ3Jlc3MqLCAqZWdyZXNzKiwgKnRyYW5z ZmVyKiB0b2tlbnMpLg0KPiA+ICstIFR1bm5lbCBvZmZsb2FkIHNwZWNpZmljYXRpb24gKHR1bm5l bF9zZXQsIHR1bm5lbF9tYXRjaCkNCj4gPiAgLSBBIG1hdGNoaW5nIHBhdHRlcm4sIHN0YXJ0aW5n IHdpdGggdGhlICpwYXR0ZXJuKiB0b2tlbiBhbmQgdGVybWluYXRlZCBieQ0KPiBhbg0KPiA+ICAg ICplbmQqIHBhdHRlcm4gaXRlbS4NCj4gPiAgLSBBY3Rpb25zLCBzdGFydGluZyB3aXRoIHRoZSAq YWN0aW9ucyogdG9rZW4gYW5kIHRlcm1pbmF0ZWQgYnkgYW4gKmVuZCoNCj4gPiBAQCAtMzgyMyw2 ICszODY0LDE0IEBAIE1vc3QgcnVsZXMgYWZmZWN0IFJYIHRoZXJlZm9yZSBjb250YWluIHRoZQ0K PiBgYGluZ3Jlc3NgYCB0b2tlbjo6DQo+ID4NCj4gPiAgICAgdGVzdHBtZD4gZmxvdyBjcmVhdGUg MCBpbmdyZXNzIHBhdHRlcm4gWy4uLl0NCj4gPg0KPiA+ICtUdW5uZWwgb2ZmbG9hZA0KPiA+ICte Xl5eXl5eXl5eXl5eXg0KPiA+ICsNCj4gPiArSW5kaWNhdGUgdHVubmVsIG9mZmxvYWQgcnVsZSB0 eXBlDQo+ID4gKw0KPiA+ICstIGBgdHVubmVsX3NldCB7dHVubmVsX2lkfWBgOiBtYXJrIHJ1bGUg YXMgdHVubmVsIG9mZmxvYWQgZGVjYXBfc2V0IHR5cGUuDQo+ID4gKy0gYGB0dW5uZWxfbWF0Y2gg e3R1bm5lbF9pZH1gYDogIG1hcmsgcnVsZSBhcyB0dW5lbCBvZmZsb2FkIG1hdGNoIHR5cGUuDQo+ ID4gKw0KPiA+ICBNYXRjaGluZyBwYXR0ZXJuDQo+ID4gIF5eXl5eXl5eXl5eXl5eXl4NCj4gPg0K PiA+IC0tDQo+ID4gMi4yNS4xDQo+ID4NCg==