Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ntgi4-0003SL-ND for pgsql-hackers@arkaria.postgresql.org; Wed, 25 May 2022 02:25:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1ntgi2-0003AZ-I2 for pgsql-hackers@arkaria.postgresql.org; Wed, 25 May 2022 02:25:14 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ntgi0-000372-Vz for pgsql-hackers@lists.postgresql.org; Wed, 25 May 2022 02:25:13 +0000 Received: from esa19.fujitsucc.c3s2.iphmx.com ([216.71.158.62]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ntghw-0002uS-6c for pgsql-hackers@lists.postgresql.org; Wed, 25 May 2022 02:25:11 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1653445508; x=1684981508; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=B9CAONvfsuQCvx9oIPSlQGPfYAW/Dso0C3ZmC/JPzkU=; b=jGXEeWvOGdhbbdtbhBWCClhc3xY+KRp3UkdKd3Rnx4dhWsYCaBNlNUiV DLQMrPAY2yzEJib5tW1/Hz61woL0bSn59CGufKZ6/uTVq/IsKlgYgd1FN tPkmkWRVXui1uY989zofTI9L5l5bXVYQUXyBY/TeDtSgMJwmaD3DEkYKn KphHtKVUoGs3xwIdl67QRFbsjYDD9fQxJVnS4gwPSPo+cDNj7Q60bix/y nBEq+SMJhfMLNUnzjqgzRgnoDY90yV3+XGkPGqX/vSv5WHKUGvbw8Cs+R n0xPgFTFBx+5VU9rAHJCVVkSsmC4eO03SQTwMVS9XVcY7vjPQ6Jl/2P2Z A==; X-IronPort-AV: E=McAfee;i="6400,9594,10357"; a="56231998" X-IronPort-AV: E=Sophos;i="5.91,250,1647270000"; d="scan'208,223";a="56231998" Received: from mail-tycjpn01lp2171.outbound.protection.outlook.com (HELO JPN01-TYC-obe.outbound.protection.outlook.com) ([104.47.23.171]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 May 2022 11:25:04 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZsR44I/lm8bOcXNlCZ4wX6rXABzDziFIqQf05gQ8YoBEjRpxcSt7lvyFRwhBge1ziZ3hp+b0gdFFeCnqBxxmJG0gaKuC53y6BLJuDGPztvTNcgr4dztqlqb0VQUSC5eNqcBhd6ixC1maSNGQnWPkeyzs0XkW4/Oh6l32sovsRS43DdgA/A5mwxJwg/8Mv9xkKUCcvA+dG+IlAsVvXf2czSjjTrYWzvOYCLifEsD10eFDhtHbBqvzH/uEg+3LYDWXIn4w0kkuXMYOUoIpsHko5jt0eu5e8/JgpH1SSE+LORrHnV0Dl1AA2/JdnEIVvyGIstOHAEgdYR/2Cdzj3Ek6gg== 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=b3DNMx6s134zCFmW5O+yD5QNKNLe8H+mujJPzjdyLr0=; b=iGkt3T1wm6qjyU5+CVqvm90Cr2iSDZr6878m/ZS3G4UtOHc8uygS0qYvtd1X5JWlC+0yg77s2b2iPatasUfOprdcDYhXKyiOJhu0xdHGZ44sA8joijPtX3RbgXb11AKXbqkSFi+8dV2NK8YfOHZeH8V1iP7+cgq3PSjbdBxt5TaIKblVH5HZYbY1d3OB5Kug9IhUuv9EcJXYRu9OngPrKynJJvDls3W/lCOlcTw9AScSSLm6dCc6nqdKdLbhcO4ueQjacR3zauhYfRd10bkSYJHMVB/1C7Vh9VYck89vAfvWFQl2ucajoSkdIiHy+tH0c0OIijzzJthBrieKtQNcFA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.onmicrosoft.com; s=selector2-fujitsu-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=b3DNMx6s134zCFmW5O+yD5QNKNLe8H+mujJPzjdyLr0=; b=BrsyJUxSZR05qXf09kcL9W1yf0PFmwwmj5W+3tWzD8Srbrr9gPIkkx/Un0/NRQeYUf6t0v4wmzRHIMnD9PP0VfhPiGzN0tTGeP1PyN9C8HJLXTAjmsXaYh5q/61gWL1RR8c3kXQFzYne6ormDp7KEbRWXArHoxdlnDx0ybwYDfA= Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com (2603:1096:604:f1::8) by TYAPR01MB4254.jpnprd01.prod.outlook.com (2603:1096:404:c8::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Wed, 25 May 2022 02:25:00 +0000 Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::5d40:5c2d:b875:f813]) by OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::5d40:5c2d:b875:f813%8]) with mapi id 15.20.5293.013; Wed, 25 May 2022 02:24:59 +0000 From: "wangw.fnst@fujitsu.com" To: "houzj.fnst@fujitsu.com" , Amit Kapila , Masahiko Sawada CC: Peter Smith , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHYSXX4/KZEbPJKjUy7J1pJS8eGYazlvxQAgCWGcYCAADA/AIAAKNiAgAEXPgCAADKygIABE+qAgAnIzACAAEAxgIABQDQAgAASR4CAA2K2AIASbOOA Date: Wed, 25 May 2022 02:24:59 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 5de22732-98ae-48e3-03f4-08da3df5c46f x-ms-traffictypediagnostic: TYAPR01MB4254:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: JbHm1g4VQQfxszbMS5WMmMsgDE5/NGySkd66pivlZP+kt+TmRyR6R7dho0X1zT2KDcxhv9wjXd8WsW9Xk3bdz9x0HzDhfliAU8XLDGZ+zeIvXl5mX2hrEwVALfNXQrqlZKV/Cpf916Uo8tcsqb2iONOQ0rhJ5X4kEuYb+mnHeUAOv/MqL57gGo+uOUhM4aUUnjyGOpmsQNqi62YTW/P2440ZGYvj5z7oT5BZe7dcEOjVETifhW+kCNmXnhKRLBj+OsxolxM4d3sWB2miARIqomLi1p5+0inVbg9P1ZYYY2+SM7/xdfgxaOH/Is4Gam5ubSSuLNI02lA7hC6CNp6e6nk4TO1r0bW8vrXjbY0b+EDXiz94N4Q7Eo+V+Q/zi+EJKcGck9K6h04N8LtfdZQnKsagZkqC8Ym9HIhinJiEZxxWmvobF1JHwxMTMGQhs4s7GBoWiniu9i5QPtpMO0PELDQmxEHy6HJvuUWHC6MgTZE0lK0TeQQ83qA4WAJMniAgA5i4OMaO/02wBtOXUB0/TcYCxFJGgGv57wfbWsmaBfdhyQpdbdPwFU7yPTscduUMOjGqEF9lE5OYx31K2fGz21gosqYTDEavCwF8gz6Iy3scHNJqtufPf0A/Jq43ah74PA0wZU/8aPtieSUsJoOrmneC4+xn1S6V8lgPthoa5k3o3IpT4QOmNqwUYNg44ol2xuTM+4FHaGhhqNDfO3V9lXNX95RnmDBJusMyJrMhh2NVOtXIKP2mdYSTwlWiBYnuAMV0cLTwiNn7fKuBCnb1zyjqFROwPtuf+TcDZIROKp47ChOgGpE9iAwgMds0y1B8ZkKowz/nd0CYY/wTwru0wA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3PR01MB6275.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(66446008)(54906003)(2906002)(55016003)(38070700005)(38100700002)(99936003)(122000001)(4326008)(8676002)(82960400001)(76116006)(110136005)(5660300002)(8936002)(52536014)(66556008)(966005)(64756008)(66476007)(71200400001)(66946007)(316002)(508600001)(33656002)(9686003)(86362001)(26005)(6506007)(53546011)(186003)(83380400001)(85182001)(7696005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Vmt4bm83b1cyMWgzK3R2UXZWNFNMK0t2aDdpVmhSNi9RUHN6dHhBNXlDV3pw?= =?utf-8?B?MUdzS3VuQVdXNjJqL1MvRDF4cDM5a2dTSnoxbTVyNUtFdml4SlVGYlNTZ0F6?= =?utf-8?B?V2ZoRzE5R29HalBXbXpwUmlQZ2ZlZHVHd0UvdTdIeERMZEtxeE80cUtmZlJG?= =?utf-8?B?b1Zkb3FldmFuTEZiNlRKWTZPUFRiUmFWbjVRUzJtUTFlZWJUOXJmeWJlNlBO?= =?utf-8?B?aEE3VngyNG9xT1ZCK1dhQWVJTDcxSUFqWENWOHJOaHpwZWMrWGlYM0NVaCsr?= =?utf-8?B?WXVibXBNTXVuY2M5ZndFR3NUQlNGck81NU5lQjJReXpWRUl2QkM0WllNMmgy?= =?utf-8?B?T0d5TUp1b0dFVTBEZnhGdG1mVi9JRDY1NkFxdzBvOGF4R1gzSTVpVUtXRlZY?= =?utf-8?B?YitIRUQweEJwVWkrN1QvdVpuM2w5cGVmdjJoa0VDRUV0dVY3L3lpZnB4MHhX?= =?utf-8?B?ZEkvWWpZSFhuQStja0p6eVhZMDh5ajZidVBiTTRIOUN3SzR5WFBmZVB6Q2sx?= =?utf-8?B?cjNmS1ZCaUhIcXFVeDhlc0c3eXorY3lXVExpdXVZM1FWQ0JzSVdEK1dpUEMz?= =?utf-8?B?cGpLdmszeU1MOFg2SThFZ0lMeW4rMkNaRVRMelZVWkpYQzA5RWErSWVtTllK?= =?utf-8?B?T3NGcE8wSThzSW03cDhMemdST1cvemVkanhEVVlBbmlUNlc5UkpvblVIT0dM?= =?utf-8?B?Ky9mcUNGRlVUOFJiSlpaQ3M5T1Q3KzFhNStQRnhMR2tqeXd3RzZERllhSHJS?= =?utf-8?B?VHoxRVM3dGdvUWdDZEJIK2p1U2x6ZW5qUkJYMmwxcVV5eG41MnhJQVMrSmFo?= =?utf-8?B?WkJPclZpNmVXK1IvSWZNMlhuSjlnUjRHNCtlLzZwSHVzTDRpWFp5QnNKTGc2?= =?utf-8?B?ZExpZFdjaWpKaFM5QmpQWmRlTHBidTBaRUc0MDZSZ0JLbDhoaDJTSXRmY1hJ?= =?utf-8?B?bExFUU9melMybFRmSm1HeENnbzNwTVUvZEhyQ0VSa2twZkI5dTd3TmRrM21V?= =?utf-8?B?T3RVWUVtUy93S1ltM3NvUVQvaStXb3ZsY0VDTDhzTXhyM0JmRVZwRFVFVnpa?= =?utf-8?B?VUVlRzRsK0s5ZzZxMlRUL0xrblJtUFZZZWY1Q1lxYk9SQUM3Z0YvK1Z0Y2U1?= =?utf-8?B?RUxsdVlrZkloeVVBdVBlcEVIUnN6V3Y2WXFYZTdWNnhhT0dyQU5MSTlId0tp?= =?utf-8?B?NlR5NzFBOG0rWTJhbFFHTFF1dUw1anJZZ01oUFZaVDdDTzkvWTZsVE5qYnNK?= =?utf-8?B?WkkvVCs4R25XMjdRS3N0UUxXcUM0SDZTUXd1cGdqaDg3SGJkOUpCY044NDYr?= =?utf-8?B?Rlo1K2pyK3pzUlEyb0dHdE9LQmI1TDA1VlkrOS9SVG9aK2VmNzhIWmJXZ0Ft?= =?utf-8?B?S21JdkpZSS9jdEI0NWNxaENIQWlmNVl6bThvelNxT3dIZmxZQWIzUDBza0xr?= =?utf-8?B?SWZMRzdKMFAzNGRGWGFGR053SlpNV0t4WTBHcVJnWnYrUmJ0MEtyK2Z4eTd3?= =?utf-8?B?TjUwMWpIdUdiS0dOd0I3YTBJdGZsVkppY01JQ2Q1d294K1VIYTBnT1loWDlB?= =?utf-8?B?VEFFOFNiTWFSeWxMQ09Kbms1aE56UWZkYUhNYU1zM1QrQWc3TGZqSW5vdmFS?= =?utf-8?B?Vlk0WldBVTF1UFlLOWt2R1lxczRmS1dFOXl5d2pQU29UT1UxR2xreGxrUXM3?= =?utf-8?B?VUdNZDkzMVRteWJWbVI1d0RNRldHRlBQb20yWGhXZzZ5TjExZFBTSHIvYWhF?= =?utf-8?B?NjdJcGVxUXFlZXl6NkF5OExxUkJTeHRXbFQ0WFVTN0NJQ29kQUdFWWF6UDV2?= =?utf-8?B?ZGtQQjI2cmJkTkxLSlJYS0JNWW52ak1uZDBhZ0hiem1RbzdrNElCRHp1NXFm?= =?utf-8?B?WTBNQ20zU2VDamYyLzJIZzROYlRUdWpQYUZHN2tuSVJUbFpXUk8xVWhkZ0sv?= =?utf-8?B?bEkzTjhYeXQvMDZHenB0S3RCaDhhVEVHcysvSnh2UjI5TlllMWoyVy9jNlAw?= =?utf-8?B?T2hFNEIzM3UvdzlFSXhldUMvTWhuVTArYkVZNVVFdm5KYWl1cmpjNWhVUmdj?= =?utf-8?B?RndSbnB0Q1ZocnRxSW40bXFMaG9HUE14d3dXMmVxa2RqcWUzSmxKZnJEZWZP?= =?utf-8?B?WkpWbjMxOGowd3lkd2Q5bFhGSG9HZlpjVm5rQ2toZDB3Y0tWem5WM0tuSTNo?= =?utf-8?B?d2FFQ3lzWnN1cTFjRGNjRmV0a2lhbzRaa3hUZ2ZmV1BZQXEvLzE3VkN6UU5m?= =?utf-8?B?eW9ienVIK1MwKzRIZkZrUFVIaHMrbnQzZmhScytRZXFDVDloZCtFOVJWYmZO?= =?utf-8?B?Vm1CWmgxMjc2UGtyTUREYy9iUElvaUg0aHNqMWx1ZHVMTGlNV1NnZz09?= Content-Type: multipart/mixed; boundary="_005_OS3PR01MB627532B048F71FFF8FBDB6A99ED69OS3PR01MB6275jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS3PR01MB6275.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5de22732-98ae-48e3-03f4-08da3df5c46f X-MS-Exchange-CrossTenant-originalarrivaltime: 25 May 2022 02:24:59.8081 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: YNLtXZthUIldzIi/E8yUcmz5Z3B/owV/nU/sNu9wJBoFn4Kt6/DYUFPoX6svATgMSAwSVNHLB6SnOPWHuddnQA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYAPR01MB4254 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_005_OS3PR01MB627532B048F71FFF8FBDB6A99ED69OS3PR01MB6275jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gRnJpLCBNYXkgMTMsIDIwMjIgNDo1MyBQTSBob3V6ai5mbnN0QGZ1aml0c3UuY29tIHdyb3Rl Og0KPiBPbiBXZWRuZXNkYXksIE1heSAxMSwgMjAyMiAxOjEwIFBNIEFtaXQgS2FwaWxhIDxhbWl0 LmthcGlsYTE2QGdtYWlsLmNvbT4NCj4gd3JvdGU6DQo+ID4NCj4gPiBPbiBXZWQsIE1heSAxMSwg MjAyMiBhdCA5OjM1IEFNIE1hc2FoaWtvIFNhd2FkYQ0KPiA+IDxzYXdhZGEubXNoa0BnbWFpbC5j b20+IHdyb3RlOg0KPiA+ID4NCj4gPiA+IE9uIFR1ZSwgTWF5IDEwLCAyMDIyIGF0IDU6NTkgUE0g QW1pdCBLYXBpbGEgPGFtaXQua2FwaWxhMTZAZ21haWwuY29tPg0KPiA+IHdyb3RlOg0KPiA+ID4g Pg0KPiA+ID4gPiBPbiBUdWUsIE1heSAxMCwgMjAyMiBhdCAxMDozOSBBTSBNYXNhaGlrbyBTYXdh ZGENCj4gPiA8c2F3YWRhLm1zaGtAZ21haWwuY29tPiB3cm90ZToNCj4gPiA+ID4gPg0KPiA+ID4g PiA+IEhhdmluZyBpdCBvcHRpb25hbCBzZWVtcyBhIGdvb2QgaWRlYS4gQlRXIGNhbiB0aGUgdXNl ciBjb25maWd1cmUNCj4gPiA+ID4gPiBob3cgbWFueSBhcHBseSBiZ3dvcmtlcnMgY2FuIGJlIHVz ZWQgcGVyIHN1YnNjcmlwdGlvbiBvciBpbiB0aGUNCj4gPiA+ID4gPiB3aG9sZSBzeXN0ZW0/IExp a2UgbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uLCBpcyBpdCBiZXR0ZXINCj4gPiA+ ID4gPiB0byBoYXZlIGEgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgb3IgYSBzdWJzY3JpcHRpb24g b3B0aW9uIGZvcg0KPiA+ID4gPiA+IHRoYXQ/IElmIHNvLCBzZXR0aW5nIGl0IHRvIDAgcHJvYmFi bHkgbWVhbnMgdG8gZGlzYWJsZSB0aGUgcGFyYWxsZWwgYXBwbHkNCj4gPiBmZWF0dXJlLg0KPiA+ ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IFllYWgsIHRoYXQgbWlnaHQgYmUgdXNlZnVsIGJ1dCB3 ZSBhcmUgYWxyZWFkeSBnaXZpbmcgYW4gb3B0aW9uIHdoaWxlDQo+ID4gPiA+IGNyZWF0aW5nIGEg c3Vic2NyaXB0aW9uIHdoZXRoZXIgdG8gYWxsb3cgcGFyYWxsZWxpc20sIHNvIHdpbGwgaXQgYmUN Cj4gPiA+ID4gdXNlZnVsIHRvIGdpdmUgb25lIG1vcmUgd2F5IHRvIGRpc2FibGUgdGhpcyBmZWF0 dXJlPyBPVE9ILCBoYXZpbmcNCj4gPiA+ID4gc29tZXRoaW5nIGxpa2UgbWF4X3BhcmFsbGVsX2Fw cGx5X3dvcmtlcnMvbWF4X2JnX2FwcGx5X3dvcmtlcnMgYXQNCj4gPiA+ID4gdGhlIHN5c3RlbSBs ZXZlbCBjYW4gZ2l2ZSBiZXR0ZXIgY29udHJvbCBmb3IgaG93IG11Y2ggcGFyYWxsZWxpc20NCj4g PiA+ID4gdGhlIHVzZXIgd2lzaGVzIHRvIGFsbG93IGZvciBhcHBseSB3b3JrLg0KPiA+ID4NCj4g PiA+IE9yIHdlIGNhbiBoYXZlIHNvbWV0aGluZyBsaWtlDQo+ID4gPiBtYXhfcGFyYWxsZWxfYXBw bHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIHRoYXQgY29udHJvbHMgaG93IG1hbnkNCj4gPiA+ IHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgY2FuIGxhdW5jaCBwZXIgc3Vic2NyaXB0aW9uLiBUaGF0 IGFsc28gZ2l2ZXMNCj4gPiA+IGJldHRlciBjb250cm9sIGZvciB0aGUgbnVtYmVyIG9mIHBhcmFs bGVsIGFwcGx5IHdvcmtlcnMuDQo+ID4gPg0KPiA+DQo+ID4gSSB0aGluayB3ZSBjYW4gZ28gZWl0 aGVyIHdheSBpbiB0aGlzIG1hdHRlciBhcyBib3RoIGhhdmUgdGhlaXIgcHJvcyBhbmQgY29ucy4g SQ0KPiA+IGZlZWwgbGltaXRpbmcgdGhlIHBhcmFsbGVsIHdvcmtlcnMgcGVyIHN1YnNjcmlwdGlv biBnaXZlcyBiZXR0ZXIgY29udHJvbCBidXQNCj4gPiBPVE9ILCBpdCBtYXkgbm90IGFsbG93IG1h eCB1c2FnZSBvZiBwYXJhbGxlbGlzbSBiZWNhdXNlIHNvbWUgcXVvdGEgZnJvbQ0KPiA+IG90aGVy IHN1YnNjcmlwdGlvbnMgbWlnaHQgcmVtYWluIHVudXNlZC4gTGV0IHVzIHNlZSB3aGF0IEhvdS1T YW4gb3Igb3RoZXJzDQo+ID4gdGhpbmsgb24gdGhpcyBtYXR0ZXI/DQo+IA0KPiBUaGFua3MgZm9y IEFtaXQgYW5kIFNhd2FkYS1zYW4ncyBjb21tZW50cyAhDQo+IEkgd2lsbCB0aGluayBvdmVyIHRo ZXNlIGFwcHJvYWNoZXMgYW5kIHJlcGx5IHNvb24uDQpBZnRlciByZWFkaW5nIHRoZSB0aHJlYWQs IEkgd3JvdGUgdHdvIHBhdGNoZXMgZm9yIHRoZXNlIGNvbW1lbnRzLg0KDQpUaGUgZmlyc3QgcGF0 Y2ggKHNlZSB2Ni0wMDAzKToNCkltcHJvdmUgdGhlIGZlYXR1cmUgYXMgc3VnZ2VzdGVkIGluIFsx XS4NCkZvciB0aGUgaXNzdWUgbWVudGlvbmVkIGJ5IEFtaXQtc2FuICh0aGVyZSBpcyBhIGJsb2Nr IHByb2JsZW0gaW4gdGhlIGNhc2UNCm1lbnRpb25lZCBieSBTYXdhZGEtc2FuKSwgYWZ0ZXIgaW52 ZXN0aWdhdGluZywgSSB0aGluayB0aGlzIGlzc3VlIGlzIGNhdXNlZCBieQ0KdW5pcXVlIGluZGV4 LiBTbyBJIGFkZGVkIGEgY2hlY2sgdG8gbWFrZSBzdXJlIHRoZSB1bmlxdWUgY29sdW1ucyBhcmUg dGhlIHNhbWUNCmJldHdlZW4gcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyLg0KRm9yIG90aGVyIGNh c2VzLCBJIGFkZGVkIHRoZSBjaGVjayB0aGF0IGlmIHRoZXJlIGlzIGFueSBub24taW1tdXRhYmxl IGZ1bmN0aW9uDQpwcmVzZW50IGluIGV4cHJlc3Npb24gaW4gc3Vic2NyaWJlcidzIHJlbGF0aW9u LiBDaGVjayBmcm9tIHRoZSBmb2xsb3dpbmcgMw0KaXRlbXM6DQogICAgYS4gVGhlIGZ1bmN0aW9u IGluIHRyaWdnZXJzOw0KICAgIGIuIENvbHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb25zIGFu ZCBkb21haW4gY29uc3RyYWludHM7DQogICAgYy4gQ29uc3RyYWludCBleHByZXNzaW9ucy4NCkJU VywgSSBkbyBub3QgYWRkIHBhcnRpdGlvbmVkIHRhYmxlIHJlbGF0ZWQgY29kZS4gSSB0aGluayB0 aGlzIHBhcnQgbmVlZHMgb3RoZXINCmFkZGl0aW9uYWwgbW9kaWZpY2F0aW9ucy4gSSB3aWxsIGFk ZCB0aGlzIGxhdGVyIHdoZW4gdGhlc2UgbW9kaWZpY2F0aW9ucyBhcmUNCmZpbmlzaGVkLg0KDQpU aGUgc2Vjb25kIHBhdGNoIChzZWUgdjYtMDAwNCk6DQpJbXByb3ZlIHRoZSBmZWF0dXJlIGFzIHN1 Z2dlc3RlZCBpbiBbMl0uDQpBZGQgYSBHVUMgIm1heF9hcHBseV9iZ3dvcmtlcnNfcGVyX3N1YnNj cmlwdGlvbiIgdG8gY29udHJvbCBwYXJhbGxlbGlzbS4gVGhpcw0KR1VDIGNvbnRyb2xzIGhvdyBt YW55IGFwcGx5IGJhY2tncm91bmQgd29ya2VycyBjYW4gYmUgbGF1bmNoZWQgcGVyDQpzdWJzY3Jp cHRpb24uIEkgc2V0IGl0cyBkZWZhdWx0IHZhbHVlIHRvIDMgYW5kIGRvIG5vdCBjaGFuZ2UgdGhl IGRlZmF1bHQgdmFsdWUNCm9mIG90aGVyIEdVQ3MuDQoNClsxXSAtIGh0dHBzOi8vd3d3LnBvc3Rn cmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FBNGVLMUp3YWhVX1d1UDNTJTJCN1BPcXRhJTNEUGhtXzNn eFplVm1KdXVvVXExTlYlM0RrclhBJTQwbWFpbC5nbWFpbC5jb20NClsyXSAtIGh0dHBzOi8vd3d3 LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FBNGVLMSUyQjdENHFBUVVRRUU4enpRMGZHQ3Fl QldkM3J6VGFZNU4walZzLVZYRmNfWHclNDBtYWlsLmdtYWlsLmNvbQ0KDQpBdHRhY2ggdGhlIHBh dGNoZXMuIChEaWQgbm90IGNoYW5nZSB2Ni0wMDAxIGFuZCB2Ni0wMDAyLikNCg0KUmVnYXJkcywN Cldhbmcgd2VpDQo= --_005_OS3PR01MB627532B048F71FFF8FBDB6A99ED69OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v6-0001-Perform-streaming-logical-transactions-by-backgro.patch" Content-Description: v6-0001-Perform-streaming-logical-transactions-by-backgro.patch Content-Disposition: attachment; filename="v6-0001-Perform-streaming-logical-transactions-by-backgro.patch"; size=76133; creation-date="Wed, 25 May 2022 02:16:00 GMT"; modification-date="Wed, 25 May 2022 02:24:57 GMT" Content-Transfer-Encoding: base64 RnJvbSA1OGFhZDEyNzdlMWUxYjgzYjRiNzMwMGVhMmFiOGRjZTRjMjYyZWMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHY2IDEvNF0gUGVyZm9ybSBzdHJlYW1pbmcgbG9naWNhbCB0cmFuc2FjdGlvbnMgYnkgYmFja2dy b3VuZAogd29ya2VycwoKQ3VycmVudGx5LCBmb3IgbGFyZ2UgdHJhbnNhY3Rpb25zLCB0aGUgcHVi bGlzaGVyIHNlbmRzIHRoZSBkYXRhIGluIG11bHRpcGxlCnN0cmVhbXMgKGNoYW5nZXMgZGl2aWRl ZCBpbnRvIGNodW5rcyBkZXBlbmRpbmcgdXBvbiBsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtKSwK YW5kIHRoZW4gb24gdGhlIHN1YnNjcmliZXItc2lkZSwgdGhlIGFwcGx5IHdvcmtlciB3cml0ZXMg dGhlIGNoYW5nZXMgaW50bwp0ZW1wb3JhcnkgZmlsZXMgYW5kIG9uY2UgaXQgcmVjZWl2ZXMgdGhl IGNvbW1pdCwgaXQgcmVhZHMgZnJvbSB0aGUgZmlsZSBhbmQKYXBwbGllcyB0aGUgZW50aXJlIHRy YW5zYWN0aW9uLiBUbyBpbXByb3ZlIHRoZSBwZXJmb3JtYW5jZSBvZiBzdWNoCnRyYW5zYWN0aW9u cywgd2UgY2FuIGluc3RlYWQgYWxsb3cgdGhlbSB0byBiZSBhcHBsaWVkIHZpYSBiYWNrZ3JvdW5k IHdvcmtlcnMuCgpJbiB0aGlzIGFwcHJvYWNoLCB3ZSBhc3NpZ24gYSBuZXcgYXBwbHkgYmFja2dy b3VuZCB3b3JrZXIgKGlmIGF2YWlsYWJsZSkgYXMKc29vbiBhcyB0aGUgeGFjdCdzIGZpcnN0IHN0 cmVhbSBpcyByZWNlaXZlZCBhbmQgdGhlIG1haW4gYXBwbHkgd29ya2VyIHdpbGwgc2VuZApjaGFu Z2VzIHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gVGhlIGFwcGx5IGJhY2tn cm91bmQgd29ya2VyIHdpbGwKZGlyZWN0bHkgYXBwbHkgdGhlIGNoYW5nZSBpbnN0ZWFkIG9mIHdy aXRpbmcgaXQgdG8gdGVtcG9yYXJ5IGZpbGVzLiAgV2Uga2VlcAp0aGlzIHdvcmtlciBhc3NpZ25l ZCB0aWxsIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdCBm b3IKdGhlIHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQg b3JkZXJpbmcgYW5kIGF2b2lkcwp3cml0aW5nIHRvIGFuZCByZWFkaW5nIGZyb20gZmlsZSBpbiBt b3N0IGNhc2VzLiBXZSBzdGlsbCBuZWVkIHRvIHNwaWxsIGlmIHRoZXJlCmlzIG5vIHdvcmtlciBh dmFpbGFibGUuIFdlIGFsc28gbmVlZCB0byBhbGxvdyBzdHJlYW1fc3RvcCB0byBjb21wbGV0ZSBi eSB0aGUKYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgdG8gZmluaXNoIGl0IHRvIGF2b2lkIGRlYWRs b2NrcyBiZWNhdXNlIFQtMSdzIGN1cnJlbnQKc3RyZWFtIG9mIGNoYW5nZXMgY2FuIHVwZGF0ZSBy b3dzIGluIGNvbmZsaWN0aW5nIG9yZGVyIHdpdGggVC0yJ3MgbmV4dCBzdHJlYW0Kb2YgY2hhbmdl cy4KClRoaXMgcGF0Y2ggYWxzbyBleHRlbmRzIHRoZSBzdWJzY3JpcHRpb24gc3RyZWFtaW5nIG9w dGlvbiBzbyB0aGF0IHRoZSB1c2VyIGNhbgpjb250cm9sIHdoZXRoZXIgdG8gYXBwbHkgdGhlIHN0 cmVhbWluZyB0cmFuc2FjdGlvbiBpbiBhbiBhcHBseSBiYWNrZ3JvdW5kCndvcmtlciBvciBzcGls bCB0aGUgY2hhbmdlIHRvIGRpc2suIFVzZXIgY2FuIHNldCB0aGUgc3RyZWFtaW5nIG9wdGlvbiB0 bwonb24vb2ZmJywgJ2FwcGx5Jy4gRm9yIG5vdywgJ2FwcGx5JyBtZWFucyB0aGUgc3RyZWFtaW5n IHdpbGwgYmUgYXBwbGllZCB2aWEgYQphcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBhdmFpbGFi bGUuICdvbicgbWVhbnMgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB3aWxsCmJlIHNwaWxsZWQg dG8gZGlzay4KLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAg IHwgICAxMCArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgICB8 ICAgMjQgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgfCAg IDY2ICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgICAgICAgICAgIHwgICAg MyArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgIHwgICA4NyAr LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYyAgICB8ICAgIDYgKy0K IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgfCAgIDEwICstCiBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgIHwgMTM5NyArKysrKysr KysrKysrKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMgICAg IHwgICAgMyArCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgIHwg ICAgNiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCAgICAgICB8ICAg MTcgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCAgICAgfCAgICAx ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oICAgICAgICAgICAgfCAgICAyICst CiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgIHwgICAxMyArLQog c3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oICAgICAgICAgICAgICB8ICAgIDEgKwogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0ICB8ICAgIDIgKy0KIHNyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgfCAgICA0ICsKIDE3IGZpbGVz IGNoYW5nZWQsIDE0NTYgaW5zZXJ0aW9ucygrKSwgMTk2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNn bWwKaW5kZXggZDk2YzcyZTUzMS4uZTViOTM0NmQ5MyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTc4NjMs MTEgKzc4NjMsMTUgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBj b3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKIAogICAgICA8cm93PgogICAg ICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KLSAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1Y3Rm aWVsZD4gPHR5cGU+Y2hhcjwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAg ICAgIElmIHRydWUsIHRoZSBzdWJzY3JpcHRpb24gd2lsbCBhbGxvdyBzdHJlYW1pbmcgb2YgaW4t cHJvZ3Jlc3MKLSAgICAgICB0cmFuc2FjdGlvbnMKKyAgICAgICBDb250cm9scyBob3cgdG8gaGFu ZGxlIHRoZSBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zOgorICAgICAgIDxs aXRlcmFsPmY8L2xpdGVyYWw+ID0gZGlzYWxsb3cgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNzIHRy YW5zYWN0aW9ucywKKyAgICAgICA8bGl0ZXJhbD50PC9saXRlcmFsPiA9IHNwaWxsIHRoZSBjaGFu Z2VzIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB0bworICAgICAgIGRpc2sgYW5kIGFwcGx5 IGF0IG9uY2UgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiB0aGUKKyAgICAg ICBwdWJsaXNoZXIsCisgICAgICAgPGxpdGVyYWw+YTwvbGl0ZXJhbD4gPSBhcHBseSBjaGFuZ2Vz IGRpcmVjdGx5IHVzaW5nIGEgYmFja2dyb3VuZCB3b3JrZXIKICAgICAgIDwvcGFyYT48L2VudHJ5 PgogICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vi c2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dt bAppbmRleCAyMDNiYjQxODQ0Li4yMmJkODE4MDBkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjE3LDEzICsyMTcsMjkgQEAgQ1JFQVRFIFNVQlNDUklQ VElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8L3Jl cGxhY2VhYmwKICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAogICAgICAgIDx2YXJsaXN0ZW50cnk+ Ci0gICAgICAgIDx0ZXJtPjxsaXRlcmFsPnN0cmVhbWluZzwvbGl0ZXJhbD4gKDx0eXBlPmJvb2xl YW48L3R5cGU+KTwvdGVybT4KKyAgICAgICAgPHRlcm0+PGxpdGVyYWw+c3RyZWFtaW5nPC9saXRl cmFsPiAoPHR5cGU+ZW51bTwvdHlwZT4pPC90ZXJtPgogICAgICAgICA8bGlzdGl0ZW0+CiAgICAg ICAgICA8cGFyYT4KICAgICAgICAgICBTcGVjaWZpZXMgd2hldGhlciB0byBlbmFibGUgc3RyZWFt aW5nIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucwotICAgICAgICAgIGZvciB0aGlzIHN1YnNj cmlwdGlvbi4gIEJ5IGRlZmF1bHQsIGFsbCB0cmFuc2FjdGlvbnMKLSAgICAgICAgICBhcmUgZnVs bHkgZGVjb2RlZCBvbiB0aGUgcHVibGlzaGVyIGFuZCBvbmx5IHRoZW4gc2VudCB0byB0aGUKLSAg ICAgICAgICBzdWJzY3JpYmVyIGFzIGEgd2hvbGUuCisgICAgICAgICAgZm9yIHRoaXMgc3Vic2Ny aXB0aW9uLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgPGxpdGVyYWw+b2ZmPC9saXRlcmFsPiwKKyAg ICAgICAgICBhbGwgdHJhbnNhY3Rpb25zIGFyZSBmdWxseSBkZWNvZGVkIG9uIHRoZSBwdWJsaXNo ZXIgYW5kIG9ubHkgdGhlbgorICAgICAgICAgIHNlbnQgdG8gdGhlIHN1YnNjcmliZXIgYXMgYSB3 aG9sZS4KKyAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSWYg c2V0IHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiwgdGhlIGNoYW5nZXMgb2YgdHJhbnNhY3Rpb24g YXJlCisgICAgICAgICAgd3JpdHRlbiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGll ZCBhdCBvbmNlIGFmdGVyIHRoZQorICAgICAgICAgIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBv biB0aGUgcHVibGlzaGVyLgorICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICA8cGFyYT4KKyAg ICAgICAgICBJZiBzZXQgdG8gPGxpdGVyYWw+YXBwbHk8L2xpdGVyYWw+IGluY29taW5nCisgICAg ICAgICAgY2hhbmdlcyBhcmUgZGlyZWN0bHkgYXBwbGllZCB2aWEgb25lIG9mIHRoZSBiYWNrZ3Jv dW5kIHdvcmtlcnMsIGlmCisgICAgICAgICAgYXZhaWxhYmxlLiBJZiBubyBiYWNrZ3JvdW5kIHdv cmtlciBpcyBmcmVlIHRvIGhhbmRsZSBzdHJlYW1pbmcKKyAgICAgICAgICB0cmFuc2FjdGlvbiB0 aGVuIHRoZSBjaGFuZ2VzIGFyZSB3cml0dGVuIHRvIGEgZmlsZSBhbmQgYXBwbGllZCBhZnRlcgor ICAgICAgICAgIHRoZSB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuIE5vdGUgdGhhdCBpZiBhbiBl cnJvciBoYXBwZW5zIHdoZW4KKyAgICAgICAgICBhcHBseWluZyBjaGFuZ2VzIGluIGEgYmFja2dy b3VuZCB3b3JrZXIsIGl0IG1pZ2h0IG5vdCByZXBvcnQgdGhlCisgICAgICAgICAgZmluaXNoIExT TiBvZiB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uIGluIHRoZSBzZXJ2ZXIgbG9nLgogICAgICAgICAg PC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IDY5MGNkYWE0MjYuLmYxNTQ3 NjJkMGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTgzLDcg KzgzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU3ViT3B0cwogCWJvb2wJCWNvcHlfZGF0YTsKIAlib29s CQlyZWZyZXNoOwogCWJvb2wJCWJpbmFyeTsKLQlib29sCQlzdHJlYW1pbmc7CisJY2hhcgkJc3Ry ZWFtaW5nOwogCWJvb2wJCXR3b3BoYXNlOwogCWJvb2wJCWRpc2FibGVvbmVycjsKIAlYTG9nUmVj UHRyCWxzbjsKQEAgLTk1LDYgKzk1LDYyIEBAIHN0YXRpYyBMaXN0ICptZXJnZV9wdWJsaWNhdGlv bnMoTGlzdCAqb2xkcHVibGlzdCwgTGlzdCAqbmV3cHVibGlzdCwgYm9vbCBhZGRwdWIsCiBzdGF0 aWMgdm9pZCBSZXBvcnRTbG90Q29ubmVjdGlvbkVycm9yKExpc3QgKnJzdGF0ZXMsIE9pZCBzdWJp ZCwgY2hhciAqc2xvdG5hbWUsIGNoYXIgKmVycik7CiAKIAorLyoKKyAqIEV4dHJhY3QgdGhlIHN0 cmVhbWluZyBtb2RlIHZhbHVlIGZyb20gYSBEZWZFbGVtLiAgVGhpcyBpcyBsaWtlCisgKiBkZWZH ZXRCb29sZWFuKCkgYnV0IGFsc28gYWNjZXB0cyB0aGUgc3BlY2lhbCB2YWx1ZSBhbmQgImFwcGx5 Ii4KKyAqLworc3RhdGljIGNoYXIKK2RlZkdldFN0cmVhbWluZ01vZGUoRGVmRWxlbSAqZGVmKQor eworCS8qCisJICogSWYgbm8gcGFyYW1ldGVyIGdpdmVuLCBhc3N1bWUgInRydWUiIGlzIG1lYW50 LgorCSAqLworCWlmIChkZWYtPmFyZyA9PSBOVUxMKQorCQlyZXR1cm4gU1VCU1RSRUFNX09OOwor CisJLyoKKwkgKiBBbGxvdyAwLCAxLCAidHJ1ZSIsICJmYWxzZSIsICJvbiIsICJvZmYiIG9yICJh cHBseSIuCisJICovCisJc3dpdGNoIChub2RlVGFnKGRlZi0+YXJnKSkKKwl7CisJCWNhc2UgVF9J bnRlZ2VyOgorCQkJc3dpdGNoIChpbnRWYWwoZGVmLT5hcmcpKQorCQkJeworCQkJCWNhc2UgMDoK KwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9PRkY7CisJCQkJY2FzZSAxOgorCQkJCQlyZXR1cm4gU1VC U1RSRUFNX09OOworCQkJCWRlZmF1bHQ6CisJCQkJCS8qIG90aGVyd2lzZSwgZXJyb3Igb3V0IGJl bG93ICovCisJCQkJCWJyZWFrOworCQkJfQorCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQl7CisJ CQkJY2hhcgkqc3ZhbCA9IGRlZkdldFN0cmluZyhkZWYpOworCisJCQkJLyoKKwkJCQkgKiBUaGUg c2V0IG9mIHN0cmluZ3MgYWNjZXB0ZWQgaGVyZSBzaG91bGQgbWF0Y2ggdXAgd2l0aCB0aGUKKwkJ CQkgKiBncmFtbWFyJ3Mgb3B0X2Jvb2xlYW5fb3Jfc3RyaW5nIHByb2R1Y3Rpb24uCisJCQkJICov CisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgImZhbHNlIikgPT0gMCB8fAorCQkJCQlwZ19z dHJjYXNlY21wKHN2YWwsICJvZmYiKSA9PSAwKQorCQkJCQlyZXR1cm4gU1VCU1RSRUFNX09GRjsK KwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAidHJ1ZSIpID09IDAgfHwKKwkJCQkJcGdfc3Ry Y2FzZWNtcChzdmFsLCAib24iKSA9PSAwKQorCQkJCQlyZXR1cm4gU1VCU1RSRUFNX09OOworCQkJ CWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJhcHBseSIpID09IDApCisJCQkJCXJldHVybiBTVUJT VFJFQU1fQVBQTFk7CisJCQl9CisJCQlicmVhazsKKwl9CisJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJIGVycm1zZygiJXMgcmVxdWlyZXMg YSBCb29sZWFuIHZhbHVlIG9yIFwiYXBwbHlcIiIsCisJCQkJCWRlZi0+ZGVmbmFtZSkpKTsKKwly ZXR1cm4gU1VCU1RSRUFNX09GRjsJLyoga2VlcCBjb21waWxlciBxdWlldCAqLworfQorCiAvKgog ICogQ29tbW9uIG9wdGlvbiBwYXJzaW5nIGZ1bmN0aW9uIGZvciBDUkVBVEUgYW5kIEFMVEVSIFNV QlNDUklQVElPTiBjb21tYW5kcy4KICAqCkBAIC0xMzIsNyArMTg4LDcgQEAgcGFyc2Vfc3Vic2Ny aXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpzdG10X29wdGlvbnMsCiAJ aWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfQklOQVJZKSkKIAkJb3B0cy0+YmluYXJ5 ID0gZmFsc2U7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfU1RSRUFNSU5HKSkK LQkJb3B0cy0+c3RyZWFtaW5nID0gZmFsc2U7CisJCW9wdHMtPnN0cmVhbWluZyA9IFNVQlNUUkVB TV9PRkY7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfVFdPUEhBU0VfQ09NTUlU KSkKIAkJb3B0cy0+dHdvcGhhc2UgPSBmYWxzZTsKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMs IFNVQk9QVF9ESVNBQkxFX09OX0VSUikpCkBAIC0yMzMsNyArMjg5LDcgQEAgcGFyc2Vfc3Vic2Ny aXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpzdG10X29wdGlvbnMsCiAJ CQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CiAKIAkJCW9wdHMtPnNw ZWNpZmllZF9vcHRzIHw9IFNVQk9QVF9TVFJFQU1JTkc7Ci0JCQlvcHRzLT5zdHJlYW1pbmcgPSBk ZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJCW9wdHMtPnN0cmVhbWluZyA9IGRlZkdldFN0cmVhbWlu Z01vZGUoZGVmZWwpOwogCQl9CiAJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInR3 b19waGFzZSIpID09IDApCiAJCXsKQEAgLTYwMSw3ICs2NTcsNyBAQCBDcmVhdGVTdWJzY3JpcHRp b24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCXZh bHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJvd25lciAtIDFdID0gT2JqZWN0SWRHZXREYXR1 bShvd25lcik7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmVuYWJsZWQgLSAxXSA9 IEJvb2xHZXREYXR1bShvcHRzLmVuYWJsZWQpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlv bl9zdWJiaW5hcnkgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLmJpbmFyeSk7Ci0JdmFsdWVzW0Fu dW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMuc3Ry ZWFtaW5nKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPSBD aGFyR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlv bl9zdWJ0d29waGFzZXN0YXRlIC0gMV0gPQogCQlDaGFyR2V0RGF0dW0ob3B0cy50d29waGFzZSA/ CiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX1BFTkRJTkcgOgpAQCAtMTA2MCw3ICsx MTE2LDcgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNj cmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJaWYgKElzU2V0KG9wdHMuc3BlY2lmaWVkX29wdHMsIFNV Qk9QVF9TVFJFQU1JTkcpKQogCQkJCXsKIAkJCQkJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9u X3N1YnN0cmVhbSAtIDFdID0KLQkJCQkJCUJvb2xHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7CisJ CQkJCQlDaGFyR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOwogCQkJCQlyZXBsYWNlc1tBbnVtX3Bn X3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IHRydWU7CiAJCQkJfQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2Jnd29ya2VyLmMKaW5kZXggNDA2MDFhZWZkOS4uNDBjY2I4OTkzYyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvYmd3b3JrZXIuYwpAQCAtMTI4LDYgKzEyOCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QK IAl9LAogCXsKIAkJIkFwcGx5V29ya2VyTWFpbiIsIEFwcGx5V29ya2VyTWFpbgorCX0sCisJewor CQkiQXBwbHlCZ3dvcmtlck1haW4iLCBBcHBseUJnd29ya2VyTWFpbgogCX0KIH07CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCBiZDVmNzhjZjlhLi5m OGYwNDkwNjJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xh dW5jaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5j CkBAIC03Myw2ICs3Myw3IEBAIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfbGF1bmNoZXJfb25leGl0 KGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfb25l eGl0KGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIHZvaWQgbG9naWNhbHJlcF93b3JrZXJf ZGV0YWNoKHZvaWQpOwogc3RhdGljIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfY2xlYW51cChMb2dp Y2FsUmVwV29ya2VyICp3b3JrZXIpOworc3RhdGljIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfc3Rv cF9pbnRlcm5hbChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpOwogCiBzdGF0aWMgYm9vbCBvbl9j b21taXRfbGF1bmNoZXJfd2FrZXVwID0gZmFsc2U7CiAKQEAgLTIyMyw2ICsyMjQsMTAgQEAgbG9n aWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCByZWxpZCwgYm9vbCBvbmx5X3J1bm5p bmcpCiAJewogCQlMb2dpY2FsUmVwV29ya2VyICp3ID0gJkxvZ2ljYWxSZXBDdHgtPndvcmtlcnNb aV07CiAKKwkJLyogV2Ugb25seSBuZWVkIG1haW4gYXBwbHkgd29ya2VyIG9yIHRhYmxlIHN5bmMg d29ya2VyIGhlcmUgKi8KKwkJaWYgKHctPnN1YndvcmtlcikKKwkJCWNvbnRpbnVlOworCiAJCWlm ICh3LT5pbl91c2UgJiYgdy0+c3ViaWQgPT0gc3ViaWQgJiYgdy0+cmVsaWQgPT0gcmVsaWQgJiYK IAkJCSghb25seV9ydW5uaW5nIHx8IHctPnByb2MpKQogCQl7CkBAIC0yNTksMTEgKzI2NCwxMSBA QCBsb2dpY2FscmVwX3dvcmtlcnNfZmluZChPaWQgc3ViaWQsIGJvb2wgb25seV9ydW5uaW5nKQog fQogCiAvKgotICogU3RhcnQgbmV3IGFwcGx5IGJhY2tncm91bmQgd29ya2VyLCBpZiBwb3NzaWJs ZS4KKyAqIFN0YXJ0IG5ldyBiYWNrZ3JvdW5kIHdvcmtlciwgaWYgcG9zc2libGUuCiAgKi8KLXZv aWQKK2Jvb2wKIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBj b25zdCBjaGFyICpzdWJuYW1lLCBPaWQgdXNlcmlkLAotCQkJCQkJIE9pZCByZWxpZCkKKwkJCQkJ CSBPaWQgcmVsaWQsIGRzbV9oYW5kbGUgc3Vid29ya2VyX2RzbSkKIHsKIAlCYWNrZ3JvdW5kV29y a2VyIGJndzsKIAlCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpiZ3dfaGFuZGxlOwpAQCAtMjczLDYg KzI3OCwxMCBAQCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQsIE9pZCBzdWJpZCwg Y29uc3QgY2hhciAqc3VibmFtZSwgT2lkIHVzZXJpZCwKIAlMb2dpY2FsUmVwV29ya2VyICp3b3Jr ZXIgPSBOVUxMOwogCWludAkJCW5zeW5jd29ya2VyczsKIAlUaW1lc3RhbXBUeiBub3c7CisJYm9v bAkJaXNfc3Vid29ya2VyID0gKHN1Yndvcmtlcl9kc20gIT0gRFNNX0hBTkRMRV9JTlZBTElEKTsK KworCS8qIFdlIGRvbid0IHN1cHBvcnQgdGFibGUgc3luYyBpbiBzdWJ3b3JrZXIgKi8KKwlBc3Nl cnQoIShpc19zdWJ3b3JrZXIgJiYgT2lkSXNWYWxpZChyZWxpZCkpKTsKIAogCWVyZXBvcnQoREVC VUcxLAogCQkJKGVycm1zZ19pbnRlcm5hbCgic3RhcnRpbmcgbG9naWNhbCByZXBsaWNhdGlvbiB3 b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIiLApAQCAtMzUwLDcgKzM1OSw3IEBAIHJldHJ5 OgogCWlmIChPaWRJc1ZhbGlkKHJlbGlkKSAmJiBuc3luY3dvcmtlcnMgPj0gbWF4X3N5bmNfd29y a2Vyc19wZXJfc3Vic2NyaXB0aW9uKQogCXsKIAkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29y a2VyTG9jayk7Ci0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCS8qCkBAIC0zNjQs NyArMzczLDcgQEAgcmV0cnk6CiAJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05GSUdVUkFUSU9OX0xJ TUlUX0VYQ0VFREVEKSwKIAkJCQkgZXJybXNnKCJvdXQgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3 b3JrZXIgc2xvdHMiKSwKIAkJCQkgZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gaW5jcmVhc2Ug bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vycy4iKSkpOwotCQlyZXR1cm47CisJCXJldHVy biBmYWxzZTsKIAl9CiAKIAkvKiBQcmVwYXJlIHRoZSB3b3JrZXIgc2xvdC4gKi8KQEAgLTM3OSw2 ICszODgsNyBAQCByZXRyeToKIAl3b3JrZXItPnJlbHN0YXRlID0gU1VCUkVMX1NUQVRFX1VOS05P V047CiAJd29ya2VyLT5yZWxzdGF0ZV9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAl3b3JrZXIt PnN0cmVhbV9maWxlc2V0ID0gTlVMTDsKKwl3b3JrZXItPnN1YndvcmtlciA9IGlzX3N1Yndvcmtl cjsKIAl3b3JrZXItPmxhc3RfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJVElNRVNUQU1QX05P QkVHSU4od29ya2VyLT5sYXN0X3NlbmRfdGltZSk7CiAJVElNRVNUQU1QX05PQkVHSU4od29ya2Vy LT5sYXN0X3JlY3ZfdGltZSk7CkBAIC0zOTYsMTkgKzQwNiwzMSBAQCByZXRyeToKIAkJQkdXT1JL RVJfQkFDS0VORF9EQVRBQkFTRV9DT05ORUNUSU9OOwogCWJndy5iZ3dfc3RhcnRfdGltZSA9IEJn V29ya2VyU3RhcnRfUmVjb3ZlcnlGaW5pc2hlZDsKIAlzbnByaW50ZihiZ3cuYmd3X2xpYnJhcnlf bmFtZSwgQkdXX01BWExFTiwgInBvc3RncmVzIik7Ci0Jc25wcmludGYoYmd3LmJnd19mdW5jdGlv bl9uYW1lLCBCR1dfTUFYTEVOLCAiQXBwbHlXb3JrZXJNYWluIik7CisKKwlpZiAoc3Vid29ya2Vy X2RzbSA9PSBEU01fSEFORExFX0lOVkFMSUQpCisJCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25f bmFtZSwgQkdXX01BWExFTiwgIkFwcGx5V29ya2VyTWFpbiIpOworCWVsc2UKKwkJc25wcmludGYo Ymd3LmJnd19mdW5jdGlvbl9uYW1lLCBCR1dfTUFYTEVOLCAiQXBwbHlCZ3dvcmtlck1haW4iKTsK KworCiAJaWYgKE9pZElzVmFsaWQocmVsaWQpKQogCQlzbnByaW50ZihiZ3cuYmd3X25hbWUsIEJH V19NQVhMRU4sCiAJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0 aW9uICV1IHN5bmMgJXUiLCBzdWJpZCwgcmVsaWQpOwotCWVsc2UKKwllbHNlIGlmIChzdWJ3b3Jr ZXJfZHNtID09IERTTV9IQU5ETEVfSU5WQUxJRCkKIAkJc25wcmludGYoYmd3LmJnd19uYW1lLCBC R1dfTUFYTEVOLAogCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlw dGlvbiAldSIsIHN1YmlkKTsKKwllbHNlCisJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01B WExFTiwKKwkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3Jp cHRpb24gJXUiLCBzdWJpZCk7CiAJc25wcmludGYoYmd3LmJnd190eXBlLCBCR1dfTUFYTEVOLCAi bG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIiKTsKIAogCWJndy5iZ3dfcmVzdGFydF90aW1lID0g QkdXX05FVkVSX1JFU1RBUlQ7CiAJYmd3LmJnd19ub3RpZnlfcGlkID0gTXlQcm9jUGlkOwogCWJn dy5iZ3dfbWFpbl9hcmcgPSBJbnQzMkdldERhdHVtKHNsb3QpOwogCisJaWYgKGlzX3N1Yndvcmtl cikKKwkJbWVtY3B5KGJndy5iZ3dfZXh0cmEsICZzdWJ3b3JrZXJfZHNtLCBzaXplb2YoZHNtX2hh bmRsZSkpOworCiAJaWYgKCFSZWdpc3RlckR5bmFtaWNCYWNrZ3JvdW5kV29ya2VyKCZiZ3csICZi Z3dfaGFuZGxlKSkKIAl7CiAJCS8qIEZhaWxlZCB0byBzdGFydCB3b3JrZXIsIHNvIGNsZWFuIHVw IHRoZSB3b3JrZXIgc2xvdC4gKi8KQEAgLTQyMSwxMSArNDQzLDEzIEBAIHJldHJ5OgogCQkJCShl cnJjb2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCiAJCQkJIGVycm1z Zygib3V0IG9mIGJhY2tncm91bmQgd29ya2VyIHNsb3RzIiksCiAJCQkJIGVycmhpbnQoIllvdSBt aWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF93b3JrZXJfcHJvY2Vzc2VzLiIpKSk7Ci0JCXJldHVy bjsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCS8qIE5vdyB3YWl0IHVudGlsIGl0IGF0dGFjaGVz LiAqLwogCVdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaCh3b3JrZXIsIGdlbmVyYXRpb24s IGJnd19oYW5kbGUpOworCisJcmV0dXJuIHRydWU7CiB9CiAKIC8qCkBAIC00MzYsNyArNDYwLDYg QEAgdm9pZAogbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkKIHsK IAlMb2dpY2FsUmVwV29ya2VyICp3b3JrZXI7Ci0JdWludDE2CQlnZW5lcmF0aW9uOwogCiAJTFdM b2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKIApAQCAtNDQ5LDYg KzQ3MiwyMiBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQog CQlyZXR1cm47CiAJfQogCisJbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3b3JrZXIp OworCisJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Cit9CisKKy8qCisgKiBX b3JraG9yc2UgZm9yIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoKSBhbmQgbG9naWNhbHJlcF93b3Jr ZXJfZGV0YWNoKCkuIFN0b3AKKyAqIHRoZSB3b3JrZXIgYW5kIHdhaXQgZm9yIGl0IHRvIGRpZS4K KyAqLworc3RhdGljIHZvaWQKK2xvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwoTG9naWNh bFJlcFdvcmtlciAqd29ya2VyKQoreworCXVpbnQxNgkJZ2VuZXJhdGlvbjsKKworCUFzc2VydChM V0xvY2tIZWxkQnlNZShMb2dpY2FsUmVwV29ya2VyTG9jaykpOworCiAJLyoKIAkgKiBSZW1lbWJl ciB3aGljaCBnZW5lcmF0aW9uIHdhcyBvdXIgd29ya2VyIHNvIHdlIGNhbiBjaGVjayBpZiB3aGF0 IHdlIHNlZQogCSAqIGlzIHN0aWxsIHRoZSBzYW1lIG9uZS4KQEAgLTQ4NSwxMCArNTI0LDcgQEAg bG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkKIAkJICogZGlmZmVy ZW50LCBtZWFuaW5nIHRoYXQgYSBkaWZmZXJlbnQgd29ya2VyIGhhcyB0YWtlbiB0aGUgc2xvdC4K IAkJICovCiAJCWlmICghd29ya2VyLT5pbl91c2UgfHwgd29ya2VyLT5nZW5lcmF0aW9uICE9IGdl bmVyYXRpb24pCi0JCXsKLQkJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwog CQkJcmV0dXJuOwotCQl9CiAKIAkJLyogV29ya2VyIGhhcyBhc3NpZ25lZCBwcm9jLCBzbyBpdCBo YXMgc3RhcnRlZC4gKi8KIAkJaWYgKHdvcmtlci0+cHJvYykKQEAgLTUyMiw4ICs1NTgsNiBAQCBs b2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQogCiAJCUxXTG9ja0Fj cXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CiAJfQotCi0JTFdMb2NrUmVs ZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CiB9CiAKIC8qCkBAIC01OTksNiArNjMzLDI4IEBA IGxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaChpbnQgc2xvdCkKIHN0YXRpYyB2b2lkCiBsb2dpY2Fs cmVwX3dvcmtlcl9kZXRhY2godm9pZCkKIHsKKwkvKgorCSAqIElmIHdlIGFyZSB0aGUgbWFpbiBh cHBseSB3b3JrZXIsIHN0b3AgYWxsIHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMKKwkgKiB3 ZSBzdGFydGVkIGJlZm9yZS4KKwkgKi8KKwlpZiAoIU15TG9naWNhbFJlcFdvcmtlci0+c3Vid29y a2VyKQorCXsKKwkJTGlzdAkgKndvcmtlcnM7CisJCUxpc3RDZWxsICpsYzsKKworCQlMV0xvY2tB Y3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOworCisJCXdvcmtlcnMgPSBs b2dpY2FscmVwX3dvcmtlcnNfZmluZChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB0cnVlKTsK KwkJZm9yZWFjaChsYywgd29ya2VycykKKwkJeworCQkJTG9naWNhbFJlcFdvcmtlciAqdyA9IChM b2dpY2FsUmVwV29ya2VyICopIGxmaXJzdChsYyk7CisJCQlpZiAody0+c3Vid29ya2VyKQorCQkJ CWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwodyk7CisJCX0KKworCQlMV0xvY2tSZWxl YXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKKwl9CisKIAkvKiBCbG9jayBjb25jdXJyZW50IGFj Y2Vzcy4gKi8KIAlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19FWENMVVNJ VkUpOwogCkBAIC02MjEsNiArNjc3LDcgQEAgbG9naWNhbHJlcF93b3JrZXJfY2xlYW51cChMb2dp Y2FsUmVwV29ya2VyICp3b3JrZXIpCiAJd29ya2VyLT51c2VyaWQgPSBJbnZhbGlkT2lkOwogCXdv cmtlci0+c3ViaWQgPSBJbnZhbGlkT2lkOwogCXdvcmtlci0+cmVsaWQgPSBJbnZhbGlkT2lkOwor CXdvcmtlci0+c3Vid29ya2VyID0gZmFsc2U7CiB9CiAKIC8qCkBAIC04NjgsNyArOTI1LDcgQEAg QXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCQkJCXdhaXRfdGltZSA9IHdhbF9y ZXRyaWV2ZV9yZXRyeV9pbnRlcnZhbDsKIAogCQkJCQlsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2go c3ViLT5kYmlkLCBzdWItPm9pZCwgc3ViLT5uYW1lLAotCQkJCQkJCQkJCQkgc3ViLT5vd25lciwg SW52YWxpZE9pZCk7CisJCQkJCQkJCQkJCSBzdWItPm93bmVyLCBJbnZhbGlkT2lkLCBEU01fSEFO RExFX0lOVkFMSUQpOwogCQkJCX0KIAkJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9vcmlnaW4uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvb3JpZ2luLmMKaW5kZXggMjE5MzdhYjJkMy4uYWFhNjY5NDdlMCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCkBAIC0xMDY4LDcgKzEwNjgsNyBAQCBSZXBsaWNh dGlvbk9yaWdpbkV4aXRDbGVhbnVwKGludCBjb2RlLCBEYXR1bSBhcmcpCiAgKiB3aXRoIHJlcGxv cmlnaW5fc2Vzc2lvbl9yZXNldCgpLgogICovCiB2b2lkCi1yZXBsb3JpZ2luX3Nlc3Npb25fc2V0 dXAoUmVwT3JpZ2luSWQgbm9kZSkKK3JlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5J ZCBub2RlLCBib29sIGFjcXVpcmUpCiB7CiAJc3RhdGljIGJvb2wgcmVnaXN0ZXJlZF9jbGVhbnVw OwogCWludAkJCWk7CkBAIC0xMTEwLDcgKzExMTAsNyBAQCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0 dXAoUmVwT3JpZ2luSWQgbm9kZSkKIAkJaWYgKGN1cnN0YXRlLT5yb2lkZW50ICE9IG5vZGUpCiAJ CQljb250aW51ZTsKIAotCQllbHNlIGlmIChjdXJzdGF0ZS0+YWNxdWlyZWRfYnkgIT0gMCkKKwkJ ZWxzZSBpZiAoY3Vyc3RhdGUtPmFjcXVpcmVkX2J5ICE9IDAgJiYgYWNxdWlyZSkKIAkJewogCQkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfSU5fVVNFKSwKQEAg LTEzMjEsNyArMTMyMSw3IEBAIHBnX3JlcGxpY2F0aW9uX29yaWdpbl9zZXNzaW9uX3NldHVwKFBH X0ZVTkNUSU9OX0FSR1MpCiAKIAluYW1lID0gdGV4dF90b19jc3RyaW5nKCh0ZXh0ICopIERhdHVt R2V0UG9pbnRlcihQR19HRVRBUkdfREFUVU0oMCkpKTsKIAlvcmlnaW4gPSByZXBsb3JpZ2luX2J5 X25hbWUobmFtZSwgZmFsc2UpOwotCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW4pOwor CXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW4sIHRydWUpOwogCiAJcmVwbG9yaWdpbl9z ZXNzaW9uX29yaWdpbiA9IG9yaWdpbjsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvdGFibGVzeW5jLmMKaW5kZXggOTk0YzdhMDlkOS4uNWViNjAzMjdiNiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCkBAIC01NjgsNyArNTY4LDggQEAg cHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3JfYXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikK IAkJCQkJCQkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+b2lkLAogCQkJCQkJCQkJCQkJIE15U3Vic2Ny aXB0aW9uLT5uYW1lLAogCQkJCQkJCQkJCQkJIE15TG9naWNhbFJlcFdvcmtlci0+dXNlcmlkLAot CQkJCQkJCQkJCQkJIHJzdGF0ZS0+cmVsaWQpOworCQkJCQkJCQkJCQkJIHJzdGF0ZS0+cmVsaWQs CisJCQkJCQkJCQkJCQkgRFNNX0hBTkRMRV9JTlZBTElEKTsKIAkJCQkJCWhlbnRyeS0+bGFzdF9z dGFydF90aW1lID0gbm93OwogCQkJCQl9CiAJCQkJfQpAQCAtNTg5LDYgKzU5MCw5IEBAIHByb2Nl c3Nfc3luY2luZ190YWJsZXNfZm9yX2FwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiB2b2lk CiBwcm9jZXNzX3N5bmNpbmdfdGFibGVzKFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiB7CisJaWYg KE15TG9naWNhbFJlcFdvcmtlci0+c3Vid29ya2VyKQorCQlyZXR1cm47CisKIAlpZiAoYW1fdGFi bGVzeW5jX3dvcmtlcigpKQogCQlwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9zeW5jKGN1cnJl bnRfbHNuKTsKIAllbHNlCkBAIC0xMjY5LDcgKzEyNzMsNyBAQCBMb2dpY2FsUmVwU3luY1RhYmxl U3RhcnQoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQogCQkgKiB0aW1lIHRoaXMgdGFibGVz eW5jIHdhcyBsYXVuY2hlZC4KIAkJICovCiAJCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9ieV9uYW1l KG9yaWdpbm5hbWUsIGZhbHNlKTsKLQkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlk KTsKKwkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkLCB0cnVlKTsKIAkJcmVwbG9y aWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOwogCQkqb3JpZ2luX3N0YXJ0cG9zID0gcmVw bG9yaWdpbl9zZXNzaW9uX2dldF9wcm9ncmVzcyhmYWxzZSk7CiAKQEAgLTEzODAsNyArMTM4NCw3 IEBAIExvZ2ljYWxSZXBTeW5jVGFibGVTdGFydChYTG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3Mp CiAJCQkJCQkgICB0cnVlIC8qIGdvIGJhY2t3YXJkICovICwgdHJ1ZSAvKiBXQUwgbG9nICovICk7 CiAJCVVubG9ja1JlbGF0aW9uT2lkKFJlcGxpY2F0aW9uT3JpZ2luUmVsYXRpb25JZCwgUm93RXhj bHVzaXZlTG9jayk7CiAKLQkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkKTsKKwkJ cmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkLCB0cnVlKTsKIAkJcmVwbG9yaWdpbl9z ZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOwogCX0KIAllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC93b3JrZXIuYwppbmRleCBmYzIxMGE5ZTdiLi5mZDQ3YzQ4NTI0IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTIyLDggKzIyLDI1IEBACiAg KiBTVFJFQU1FRCBUUkFOU0FDVElPTlMKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogU3Ry ZWFtZWQgdHJhbnNhY3Rpb25zIChsYXJnZSB0cmFuc2FjdGlvbnMgZXhjZWVkaW5nIGEgbWVtb3J5 IGxpbWl0IG9uIHRoZQotICogdXBzdHJlYW0pIGFyZSBub3QgYXBwbGllZCBpbW1lZGlhdGVseSwg YnV0IGluc3RlYWQsIHRoZSBkYXRhIGlzIHdyaXR0ZW4KLSAqIHRvIHRlbXBvcmFyeSBmaWxlcyBh bmQgdGhlbiBhcHBsaWVkIGF0IG9uY2Ugd2hlbiB0aGUgZmluYWwgY29tbWl0IGFycml2ZXMuCisg KiB1cHN0cmVhbSkgYXJlIGFwcGxpZWQgdmlhIG9uZSBvZiB0d28gYXBwcm9hY2hlcy4KKyAqCisg KiAxKSBTZXBhcmF0ZSBiYWNrZ3JvdW5kIHdvcmtlcnMKKyAqCisgKiBBc3NpZ24gYSBuZXcgYmd3 b3JrZXIgKGlmIGF2YWlsYWJsZSkgYXMgc29vbiBhcyB0aGUgeGFjdCdzIGZpcnN0IHN0cmVhbSBp cworICogcmVjZWl2ZWQgYW5kIHRoZSBtYWluIGFwcGx5IHdvcmtlciB3aWxsIHNlbmQgY2hhbmdl cyB0byB0aGlzIG5ldyB3b3JrZXIgdmlhCisgKiBzaGFyZWQgbWVtb3J5LiBXZSBrZWVwIHRoaXMg d29ya2VyIGFzc2lnbmVkIHRpbGwgdGhlIHRyYW5zYWN0aW9uIGNvbW1pdCBpcworICogcmVjZWl2 ZWQgYW5kIGFsc28gd2FpdCBmb3IgdGhlIHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlz IHByZXNlcnZlcworICogY29tbWl0IG9yZGVyaW5nIGFuZCBhdm9pZHMgd3JpdGluZyB0byBhbmQg cmVhZGluZyBmcm9tIGZpbGUgaW4gbW9zdCBjYXNlcy4KKyAqIFdlIHN0aWxsIG5lZWQgdG8gc3Bp bGwgaWYgdGhlcmUgaXMgbm8gd29ya2VyIGF2YWlsYWJsZS4gV2UgYWxzbyBuZWVkIHRvCisgKiBh bGxvdyBzdHJlYW1fc3RvcCB0byBjb21wbGV0ZSBieSB0aGUgYmFja2dyb3VuZCB3b3JrZXIgdG8g ZmluaXNoIGl0IHRvIGF2b2lkCisgKiBkZWFkbG9ja3MgYmVjYXVzZSBULTEncyBjdXJyZW50IHN0 cmVhbSBvZiBjaGFuZ2VzIGNhbiB1cGRhdGUgcm93cyBpbgorICogY29uZmxpY3Rpbmcgb3JkZXIg d2l0aCBULTIncyBuZXh0IHN0cmVhbSBvZiBjaGFuZ2VzLgorICoKKyAqIDIpIFdyaXRlIHRvIHRl bXBvcmFyeSBmaWxlcyBhbmQgYXBwbHkgd2hlbiB0aGUgZmluYWwgY29tbWl0IGFycml2ZXMKKyAq CisgKiBJZiBubyB3b3JrZXIgaXMgYXZhaWxhYmxlIHRvIGhhbmRsZSBzdHJlYW1lZCB0cmFuc2Fj dGlvbiwgdGhlIGRhdGEgaXMKKyAqIHdyaXR0ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCB0aGVu IGFwcGxpZWQgYXQgb25jZSB3aGVuIHRoZSBmaW5hbCBjb21taXQKKyAqIGFycml2ZXMuCiAgKgog ICogVW5saWtlIHRoZSByZWd1bGFyIChub24tc3RyZWFtZWQpIGNhc2UsIGhhbmRsaW5nIHN0cmVh bWVkIHRyYW5zYWN0aW9ucyBoYXMKICAqIHRvIGhhbmRsZSBhYm9ydHMgb2YgYm90aCB0aGUgdG9w bGV2ZWwgdHJhbnNhY3Rpb24gYW5kIHN1YnRyYW5zYWN0aW9ucy4gVGhpcwpAQCAtMTc0LDExICsx OTEsMTUgQEAKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9idWZmaWxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKKyNpbmNsdWRl ICJzdG9yYWdlL2RzbS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9y YWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv cHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVkZSAic3RvcmFn ZS9zaG1fbXEuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobV90b2MuaCIKKyNpbmNsdWRlICJzdG9y YWdlL3NwaW4uaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMv YWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKQEAgLTE5OCw2ICsyMTksNzUgQEAK IAogI2RlZmluZSBOQVBUSU1FX1BFUl9DWUNMRSAxMDAwCS8qIG1heCBzbGVlcCB0aW1lIGJldHdl ZW4gY3ljbGVzICgxcykgKi8KIAorI2RlZmluZSBQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQyAw eDc5ZmIyNDQ3IC8vIFRPRE8gQ29uc2lkZXIgY2hhbmdlCisKKy8qCisgKiBTdGF0ZXMgZm9yIGFw cGx5IGJhY2tncm91bmQgd29ya2VyLgorICovCit0eXBlZGVmIGVudW0gQXBwbHlCZ3dvcmtlclN0 YXRlCit7CisJQVBQTFlfQkdXT1JLRVJfQVRUQUNIRUQgPSAwLAorCUFQUExZX0JHV09SS0VSX1JF QURZLAorCUFQUExZX0JHV09SS0VSX0JVU1ksCisJQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQsCisJ QVBQTFlfQkdXT1JLRVJfRVhJVAorfSBBcHBseUJnd29ya2VyU3RhdGU7CisKKy8qCisgKiBTaGFy ZWQgaW5mb3JtYXRpb24gYW1vbmcgYXBwbHkgd29ya2Vycy4KKyAqLwordHlwZWRlZiBzdHJ1Y3Qg QXBwbHlCZ3dvcmtlclNoYXJlZAoreworCXNsb2NrX3QJbXV0ZXg7CisKKwkvKiBTdGF0ZSBmb3Ig YXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuICovCisJQXBwbHlCZ3dvcmtlclN0YXRlCXN0YXRlOwor CisJVHJhbnNhY3Rpb25JZAlzdHJlYW1feGlkOworCXVpbnQzMgluOwkvKiBpZCBvZiBhcHBseSBi YWNrZ3JvdW5kIHdvcmtlciAqLworfSBBcHBseUJnd29ya2VyU2hhcmVkOworCisvKgorICogU3Ry dWN0IGZvciBtYWludGFpbmluZyBhbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4KKyAqLwordHlw ZWRlZiBzdHJ1Y3QgV29ya2VyU3RhdGUKK3sKKwlzaG1fbXFfaGFuZGxlCQkJKm1xX2hhbmRsZTsK Kwlkc21fc2VnbWVudAkJCQkqZHNtX3NlZzsKKwlBcHBseUJnd29ya2VyU2hhcmVkIHZvbGF0aWxl CSpwc3RhdGU7Cit9IFdvcmtlclN0YXRlOworCit0eXBlZGVmIHN0cnVjdCBXb3JrZXJFbnRyeQor eworCVRyYW5zYWN0aW9uSWQJeGlkOworCVdvcmtlclN0YXRlCSAgICp3c3RhdGU7Cit9IFdvcmtl ckVudHJ5OworCisvKiBBcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMgaGFzaCB0YWJsZSAoaW5pdGlh bGl6ZWQgb24gZmlyc3QgdXNlKSAqLworc3RhdGljIEhUQUIgKkFwcGx5V29ya2Vyc0hhc2ggPSBO VUxMOworc3RhdGljIExpc3QgKkFwcGx5V29ya2Vyc0lkbGVMaXN0ID0gTklMOworc3RhdGljIExp c3QgKkFwcGx5V29ya2Vyc0xpc3QgPSBOSUw7CisKKy8qIEZpZWxkcyB2YWxpZCBvbmx5IGZvciBh cHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMgKi8KK3ZvbGF0aWxlIEFwcGx5Qmd3b3JrZXJTaGFyZWQg Kk15UGFyYWxsZWxTdGF0ZSA9IE5VTEw7CitzdGF0aWMgTGlzdCAqc3VieGFjdGxpc3QgPSBOSUw7 CisKKy8qIFRoZSBudW1iZXIgb2YgY2hhbmdlcyBkdXJpbmcgb25lIHN0cmVhbWluZyBibG9jayAq Lworc3RhdGljIHVpbnQzMiBuY2hhbmdlcyA9IDA7CisKKy8qIFdvcmtlciBzZXR1cCBhbmQgaW50 ZXJhY3Rpb25zICovCitzdGF0aWMgV29ya2VyU3RhdGUgKmFwcGx5X2Jnd29ya2VyX3NldHVwKHZv aWQpOworc3RhdGljIFdvcmtlclN0YXRlICphcHBseV9iZ3dvcmtlcl9maW5kX29yX3N0YXJ0KFRy YW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCQkJCQkJIGJvb2wgc3RhcnQpOworc3RhdGljIHZvaWQg YXBwbHlfYmd3b3JrZXJfc2V0dXBfZHNtKFdvcmtlclN0YXRlICp3c3RhdGUpOworc3RhdGljIHZv aWQgYXBwbHlfYmd3b3JrZXJfd2FpdF9mb3IoV29ya2VyU3RhdGUgKndzdGF0ZSwKKwkJCQkJCQkJ CWNoYXIgd2FpdF9mb3Jfc3RhdGUpOworc3RhdGljIHZvaWQgYXBwbHlfYmd3b3JrZXJfc2VuZF9k YXRhKFdvcmtlclN0YXRlICp3c3RhdGUsIFNpemUgbmJ5dGVzLAorCQkJCQkJCQkJIGNvbnN0IHZv aWQgKmRhdGEpOworc3RhdGljIHZvaWQgYXBwbHlfYmd3b3JrZXJfZnJlZShXb3JrZXJTdGF0ZSAq d3N0YXRlKTsKK3N0YXRpYyB2b2lkIGFwcGx5X2Jnd29ya2VyX2NoZWNrX3N0YXR1cyh2b2lkKTsK K3N0YXRpYyB2b2lkIGFwcGx5X2Jnd29ya2VyX3NldF9zdGF0ZShjaGFyIHN0YXRlKTsKKwogdHlw ZWRlZiBzdHJ1Y3QgRmx1c2hQb3NpdGlvbgogewogCWRsaXN0X25vZGUJbm9kZTsKQEAgLTI2MCwx OCArMzUwLDIzIEBAIHN0YXRpYyBYTG9nUmVjUHRyIHJlbW90ZV9maW5hbF9sc24gPSBJbnZhbGlk WExvZ1JlY1B0cjsKIHN0YXRpYyBib29sIGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7 CiAKIHN0YXRpYyBUcmFuc2FjdGlvbklkIHN0cmVhbV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKK3N0YXRpYyBXb3JrZXJTdGF0ZSAqc3RyZWFtX2FwcGx5X3dvcmtlciA9IE5VTEw7CisKKy8q IGNoZWNrIGlmIHdlIGFwcGx5IHRyYW5zYWN0aW9uIGluIGFwcGx5IGJnd29ya2VyICovCisjZGVm aW5lIGFwcGx5X2Jnd29ya2VyX2FjdGl2ZSgpIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiAmJiBz dHJlYW1fYXBwbHlfd29ya2VyICE9IE5VTEwpCiAKIC8qCiAgKiBXZSBlbmFibGUgc2tpcHBpbmcg YWxsIGRhdGEgbW9kaWZpY2F0aW9uIGNoYW5nZXMgKElOU0VSVCwgVVBEQVRFLCBldGMuKSBmb3IK ICAqIHRoZSBzdWJzY3JpcHRpb24gaWYgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbidzIGZpbmlzaCBM U04gbWF0Y2hlcyB0aGUgc3Vic2tpcGxzbi4KICAqIE9uY2Ugd2Ugc3RhcnQgc2tpcHBpbmcgY2hh bmdlcywgd2UgZG9uJ3Qgc3RvcCBpdCB1bnRpbCB3ZSBza2lwIGFsbCBjaGFuZ2VzIG9mCiAgKiB0 aGUgdHJhbnNhY3Rpb24gZXZlbiBpZiBwZ19zdWJzY3JpcHRpb24gaXMgdXBkYXRlZCBhbmQgTXlT dWJzY3JpcHRpb24tPnNraXBsc24KLSAqIGdldHMgY2hhbmdlZCBvciByZXNldCBkdXJpbmcgdGhh dC4gQWxzbywgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGNhc2VzLCB3ZQotICogZG9uJ3Qgc2tp cCByZWNlaXZpbmcgYW5kIHNwb29saW5nIHRoZSBjaGFuZ2VzIHNpbmNlIHdlIGRlY2lkZSB3aGV0 aGVyIG9yIG5vdAorICogZ2V0cyBjaGFuZ2VkIG9yIHJlc2V0IGR1cmluZyB0aGF0LiBBbHNvLCBp biBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gY2FzZXMgKHN0cmVhbWluZyA9IG9uKSwKKyAqIHdlIGRv bid0IHNraXAgcmVjZWl2aW5nIGFuZCBzcG9vbGluZyB0aGUgY2hhbmdlcyBzaW5jZSB3ZSBkZWNp ZGUgd2hldGhlciBvciBub3QKICAqIHRvIHNraXAgYXBwbHlpbmcgdGhlIGNoYW5nZXMgd2hlbiBz dGFydGluZyB0byBhcHBseSBjaGFuZ2VzLiBUaGUgc3Vic2tpcGxzbiBpcwogICogY2xlYXJlZCBh ZnRlciBzdWNjZXNzZnVsbHkgc2tpcHBpbmcgdGhlIHRyYW5zYWN0aW9uIG9yIGFwcGx5aW5nIG5v bi1lbXB0eQogICogdHJhbnNhY3Rpb24uIFRoZSBsYXR0ZXIgcHJldmVudHMgdGhlIG1pc3Rha2Vu bHkgc3BlY2lmaWVkIHN1YnNraXBsc24gZnJvbQotICogYmVpbmcgbGVmdC4KKyAqIGJlaW5nIGxl ZnQuIE5vdGUgdGhhdCB3ZSBjYW5ub3Qgc2tpcCB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGlu IGFwcGx5IG1vZGUsCisgKiBiZWNhdXNlIHdlIGNhbm5vdCBnZXQgdGhlIGZpbmlzaCBMU04gYmVm b3JlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzLgogICovCiBzdGF0aWMgWExvZ1JlY1B0ciBza2lwX3hh Y3RfZmluaXNoX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogI2RlZmluZSBpc19za2lwcGluZ19j aGFuZ2VzKCkgKHVubGlrZWx5KCFYTG9nUmVjUHRySXNJbnZhbGlkKHNraXBfeGFjdF9maW5pc2hf bHNuKSkpCkBAIC00MjYsNDMgKzUyMSwxMDMgQEAgZW5kX3JlcGxpY2F0aW9uX3N0ZXAodm9pZCkK IH0KIAogLyoKLSAqIEhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMuCisgKiBIYW5kbGUgc3Ry ZWFtZWQgdHJhbnNhY3Rpb25zIGZvciBib3RoIG1haW4gYXBwbHkgd29ya2VyIGFuZCBhcHBseSBi YWNrZ3JvdW5kCisgKiB3b3JrZXIuCiAgKgotICogSWYgaW4gc3RyZWFtaW5nIG1vZGUgKHJlY2Vp dmluZyBhIGJsb2NrIG9mIHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwgd2UKLSAqIHNpbXBseSByZWRp cmVjdCBpdCB0byBhIGZpbGUgZm9yIHRoZSBwcm9wZXIgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCisg KiBGb3IgdGhlIG1haW4gYXBwbHkgd29ya2VyLCBpZiBpbiBzdHJlYW1pbmcgbW9kZSAocmVjZWl2 aW5nIGEgYmxvY2sgb2YKKyAqIHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwgd2Ugc2VuZCB0aGUgZGF0 YSB0byB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuCisgKgorICogRm9yIHRoZSBhcHBseSBi YWNrZ3JvdW5kIHdvcmtlciwgZGVmaW5lIGEgc2F2ZXBvaW50IGlmIG5ldyBzdWJ0cmFuc2FjdGlv bgorICogd2FzIHN0YXJ0ZWQuCiAgKgogICogUmV0dXJucyB0cnVlIGZvciBzdHJlYW1lZCB0cmFu c2FjdGlvbnMsIGZhbHNlIG90aGVyd2lzZSAocmVndWxhciBtb2RlKS4KICAqLwogc3RhdGljIGJv b2wKIGhhbmRsZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24s IFN0cmluZ0luZm8gcykKIHsKLQlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIGN1 cnJlbnRfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKLQkvKiBub3QgaW4gc3RyZWFtaW5n IG1vZGUgKi8KLQlpZiAoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQorCS8qCisJICogUmV0dXJu IGlmIHdlIGFyZSBub3QgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGFyZSBub3QgaW4gYW4gYXBwbHkK KwkgKiBiYWNrZ3JvdW5kIHdvcmtlci4KKwkgKi8KKwlpZiAoIWluX3N0cmVhbWVkX3RyYW5zYWN0 aW9uICYmICFhbV9hcHBseV9iZ3dvcmtlcigpKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlBc3NlcnQo c3RyZWFtX2ZkICE9IE5VTEwpOwogCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJlYW1f eGlkKSk7CiAKIAkvKgogCSAqIFdlIHNob3VsZCBoYXZlIHJlY2VpdmVkIFhJRCBvZiB0aGUgc3Vi eGFjdCBhcyB0aGUgZmlyc3QgcGFydCBvZiB0aGUKIAkgKiBtZXNzYWdlLCBzbyBleHRyYWN0IGl0 LgogCSAqLwotCXhpZCA9IHBxX2dldG1zZ2ludChzLCA0KTsKKwljdXJyZW50X3hpZCA9IHBxX2dl dG1zZ2ludChzLCA0KTsKIAotCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSkKKwlpZiAo IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGN1cnJlbnRfeGlkKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJ CQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCiAJCQkJIGVycm1zZ19pbnRl cm5hbCgiaW52YWxpZCB0cmFuc2FjdGlvbiBJRCBpbiBzdHJlYW1lZCByZXBsaWNhdGlvbiB0cmFu c2FjdGlvbiIpKSk7CiAKLQkvKiBBZGQgdGhlIG5ldyBzdWJ4YWN0IHRvIHRoZSBhcnJheSAodW5s ZXNzIGFscmVhZHkgdGhlcmUpLiAqLwotCXN1YnhhY3RfaW5mb19hZGQoeGlkKTsKKwlpZiAoYW1f YXBwbHlfYmd3b3JrZXIoKSkKKwl7CisJCS8qCisJCSAqIEluc2lkZSBhcHBseSBiYWNrZ3JvdW5k IHdvcmtlciB3ZSBjYW4gZmlndXJlIG91dCB0aGF0IG5ldworCQkgKiBzdWJ0cmFuc2FjdGlvbiB3 YXMgc3RhcnRlZCBpZiBuZXcgY2hhbmdlIGFycml2ZWQgd2l0aCBkaWZmZXJlbnQgeGlkLgorCQkg KiBJbiB0aGF0IGNhc2Ugd2UgY2FuIGRlZmluZSBuYW1lZCBzYXZlcG9pbnQsIHNvIHRoYXQgd2Ug d2VyZSBhYmxlIHRvCisJCSAqIGNvbW1pdC9yb2xsYmFjayBpdCBzZXBhcmF0ZWx5IGxhdGVyLgor CQkgKgorCQkgKiBTcGVjaWFsIGNhc2UgaXMgaWYgdGhlIGZpcnN0IGNoYW5nZSBjb21lcyBmcm9t IHN1YnRyYW5zYWN0aW9uLCB0aGVuCisJCSAqIHdlIGNoZWNrIHRoYXQgY3VycmVudF94aWQgZGlm ZmVycyBmcm9tIHN0cmVhbV94aWQuCisJCSAqLworCQlpZiAoY3VycmVudF94aWQgIT0gc3RyZWFt X3hpZCAmJgorCQkJIWxpc3RfbWVtYmVyX2ludChzdWJ4YWN0bGlzdCwgKGludCkgY3VycmVudF94 aWQpKQorCQl7CisJCQlNZW1vcnlDb250ZXh0CW9sZGN0eDsKKwkJCWNoYXIJCQlzcG5hbWVbTUFY UEdQQVRIXTsKKworCQkJc25wcmludGYoc3BuYW1lLCBNQVhQR1BBVEgsICJzYXZlcG9pbnRfZm9y X3hpZF8ldSIsIGN1cnJlbnRfeGlkKTsKKworCQkJZWxvZyhMT0csICJbQXBwbHkgQkdXICMldV0g ZGVmaW5pbmcgc2F2ZXBvaW50ICVzIiwKKwkJCQkgTXlQYXJhbGxlbFN0YXRlLT5uLCBzcG5hbWUp OworCisJCQlEZWZpbmVTYXZlcG9pbnQoc3BuYW1lKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOworCisJCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0 KTsKKwkJCXN1YnhhY3RsaXN0ID0gbGFwcGVuZF9pbnQoc3VieGFjdGxpc3QsIChpbnQpIGN1cnJl bnRfeGlkKTsKKwkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCQl9CisJfQorCWVs c2UgaWYgKGFwcGx5X2Jnd29ya2VyX2FjdGl2ZSgpKQorCXsKKwkJLyoKKwkJICogSWYgd2UgZGVj aWRlZCB0byBhcHBseSB0aGUgY2hhbmdlcyBvZiB0aGlzIHRyYW5zYWN0aW9uIGluIGFuIGFwcGx5 CisJCSAqIGJhY2tncm91bmQgd29ya2VyLCBwYXNzIHRoZSBkYXRhIHRvIHRoZSB3b3JrZXIuCisJ CSAqLworCQlhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEoc3RyZWFtX2FwcGx5X3dvcmtlciwgcy0+ bGVuLCBzLT5kYXRhKTsKKwkJbmNoYW5nZXMgKz0gMTsKKworCQkvKgorCQkgKiBYWFggVGhlIHB1 Ymxpc2hlciBzaWRlIGRvZXNuJ3QgYWx3YXlzIHNlbmQgcmVsYXRpb24gdXBkYXRlIG1lc3NhZ2Vz CisJCSAqIGFmdGVyIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHNvIHVwZGF0ZSB0aGUgcmVs YXRpb24gaW4gbWFpbgorCQkgKiBhcHBseSB3b3JrZXIgaGVyZS4KKwkJICovCisJCWlmIChhY3Rp b24gPT0gTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OKQorCQl7CisJCQlMb2dpY2FsUmVwUmVsYXRp b24gKnJlbCA9IGxvZ2ljYWxyZXBfcmVhZF9yZWwocyk7CisJCQlsb2dpY2FscmVwX3JlbG1hcF91 cGRhdGUocmVsKTsKKwkJfQorCisJfQorCWVsc2UKKwl7CisJCS8qIEFkZCB0aGUgbmV3IHN1Ynhh Y3QgdG8gdGhlIGFycmF5ICh1bmxlc3MgYWxyZWFkeSB0aGVyZSkuICovCisJCXN1YnhhY3RfaW5m b19hZGQoY3VycmVudF94aWQpOwogCi0JLyogd3JpdGUgdGhlIGNoYW5nZSB0byB0aGUgY3VycmVu dCBmaWxlICovCi0Jc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24sIHMpOworCQkvKiB3cml0ZSB0 aGUgY2hhbmdlIHRvIHRoZSBjdXJyZW50IGZpbGUgKi8KKwkJc3RyZWFtX3dyaXRlX2NoYW5nZShh Y3Rpb24sIHMpOworCX0KIAotCXJldHVybiB0cnVlOworCXJldHVybiAhYW1fYXBwbHlfYmd3b3Jr ZXIoKTsKIH0KIAogLyoKQEAgLTg0NCw2ICs5OTksOSBAQCBhcHBseV9oYW5kbGVfY29tbWl0KFN0 cmluZ0luZm8gcykKIAogCWFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoJmNvbW1pdF9kYXRh KTsKIAorCS8qIENoZWNrIHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaWYg YW55LiAqLworCWFwcGx5X2Jnd29ya2VyX2NoZWNrX3N0YXR1cygpOworCiAJLyogUHJvY2VzcyBh bnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlw cm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVuZF9sc24pOwogCkBAIC04OTgsNyAr MTA1Niw5IEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKExvZ2ljYWxSZXBQcmVwYXJl ZFR4bkRhdGEgKnByZXBhcmVfZGF0YSkKIAkgKiBCZWdpblRyYW5zYWN0aW9uQmxvY2sgaXMgbmVj ZXNzYXJ5IHRvIGJhbGFuY2UgdGhlIEVuZFRyYW5zYWN0aW9uQmxvY2sKIAkgKiBjYWxsZWQgd2l0 aGluIHRoZSBQcmVwYXJlVHJhbnNhY3Rpb25CbG9jayBiZWxvdy4KIAkgKi8KLQlCZWdpblRyYW5z YWN0aW9uQmxvY2soKTsKKwlpZiAoIUlzVHJhbnNhY3Rpb25CbG9jaygpKQorCQlCZWdpblRyYW5z YWN0aW9uQmxvY2soKTsKKwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOyAvKiBDb21wbGV0 ZXMgdGhlIHByZWNlZGluZyBCZWdpbiBjb21tYW5kLiAqLwogCiAJLyoKQEAgLTk1MCw2ICsxMTEw LDkgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCiAJaW5fcmVtb3RlX3Ry YW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBDaGVjayB0aGUgc3RhdHVzIG9mIGFwcGx5IGJhY2tn cm91bmQgd29ya2VyIGlmIGFueS4gKi8KKwlhcHBseV9iZ3dvcmtlcl9jaGVja19zdGF0dXMoKTsK KwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4g cGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xz bik7CiAKQEAgLTEwNjMsMTEgKzEyMjYsMTMwIEBAIGFwcGx5X2hhbmRsZV9yb2xsYmFja19wcmVw YXJlZChTdHJpbmdJbmZvIHMpCiB9CiAKIC8qCi0gKiBIYW5kbGUgU1RSRUFNIFBSRVBBUkUuCisg KiBMb29rIHVwIHdvcmtlciBpbnNpZGUgQXBwbHlXb3JrZXJzSGFzaCBmb3IgcmVxdWVzdGVkIHhp ZC4KICAqCi0gKiBMb2dpYyBpcyBpbiB0d28gcGFydHM6Ci0gKiAxLiBSZXBsYXkgYWxsIHRoZSBz cG9vbGVkIG9wZXJhdGlvbnMKLSAqIDIuIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVk CisgKiBJZiBzdGFydCBmbGFnIGlzIHRydWUsIHRyeSB0byBzdGFydCBhIG5ldyB3b3JrZXIgaWYg bm90IGZvdW5kIGluIGhhc2ggdGFibGUuCisgKi8KK3N0YXRpYyBXb3JrZXJTdGF0ZSAqCithcHBs eV9iZ3dvcmtlcl9maW5kX29yX3N0YXJ0KFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIHN0YXJ0KQor eworCWJvb2wgZm91bmQ7CisJV29ya2VyU3RhdGUgKndzdGF0ZTsKKwlXb3JrZXJFbnRyeSAqZW50 cnkgPSBOVUxMOworCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKQorCQlyZXR1cm4g TlVMTDsKKworCS8qCisJICogV2UgZG9uJ3Qgc3RhcnQgbmV3IGJhY2tncm91bmQgd29ya2VyIGlm IHdlIGFyZSBub3QgaW4gc3RyZWFtaW5nIGFwcGx5CisJICogbW9kZS4KKwkgKi8KKwlpZiAoTXlT dWJzY3JpcHRpb24tPnN0cmVhbSAhPSBTVUJTVFJFQU1fQVBQTFkpCisJCXJldHVybiBOVUxMOwor CisJLyoKKwkgKiBXZSBkb24ndCBzdGFydCBuZXcgYmFja2dyb3VuZCB3b3JrZXIgaWYgdXNlciBo YXMgc2V0IHNraXBsc24gYXMgaXQncworCSAqIHBvc3NpYmxlIHRoYXQgdXNlciB3YW50IHRvIHNr aXAgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gRm9yIHN0cmVhbWluZworCSAqIHRyYW5zYWN0 aW9uLCB3ZSBuZWVkIHRvIHNwaWxsIHRoZSB0cmFuc2FjdGlvbiB0byBkaXNrIHNvIHRoYXQgd2Ug Y2FuIGdldAorCSAqIHRoZSBsYXN0IExTTiBvZiB0aGUgdHJhbnNhY3Rpb24gdG8ganVkZ2Ugd2hl dGhlciB0byBza2lwIGJlZm9yZSBzdGFydGluZworCSAqIHRvIGFwcGx5IHRoZSBjaGFuZ2UuCisJ ICovCisJaWYgKHN0YXJ0ICYmICFYTG9nUmVjUHRySXNJbnZhbGlkKE15U3Vic2NyaXB0aW9uLT5z a2lwbHNuKSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKgorCSAqIEZvciBzdHJlYW1pbmcgdHJhbnNh Y3Rpb25zIHRoYXQgYXJlIGJlaW5nIGFwcGxpZWQgaW4gYmd3b3JrZXIsIHdlIGNhbm5vdAorCSAq IGRlY2lkZSB3aGV0aGVyIHRvIGFwcGx5IHRoZSBjaGFuZ2UgZm9yIGEgcmVsYXRpb24gdGhhdCBp cyBub3QgaW4gdGhlCisJICogUkVBRFkgc3RhdGUgKHNlZSBzaG91bGRfYXBwbHlfY2hhbmdlc19m b3JfcmVsKSBhcyB3ZSB3b24ndCBrbm93CisJICogcmVtb3RlX2ZpbmFsX2xzbiBieSB0aGF0IHRp bWUuIFNvLCB3ZSBkb24ndCBzdGFydCBuZXcgYmd3b3JrZXIgaW4gdGhpcworCSAqIGNhc2UuCisJ ICovCisJaWYgKHN0YXJ0ICYmICFBbGxUYWJsZXN5bmNzUmVhZHkoKSkKKwkJcmV0dXJuIE5VTEw7 CisKKwkvKiBGaXJzdCB0aW1lIHRocm91Z2gsIGluaXRpYWxpemUgYXBwbHkgd29ya2VycyBoYXNo dGFibGUgKi8KKwlpZiAoQXBwbHlXb3JrZXJzSGFzaCA9PSBOVUxMKQorCXsKKwkJSEFTSENUTAkJ Y3RsOworCisJCU1lbVNldCgmY3RsLCAwLCBzaXplb2YoY3RsKSk7CisJCWN0bC5rZXlzaXplID0g c2l6ZW9mKFRyYW5zYWN0aW9uSWQpOworCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFdvcmtlckVu dHJ5KTsKKwkJY3RsLmhjeHQgPSBBcHBseUNvbnRleHQ7CisKKwkJQXBwbHlXb3JrZXJzSGFzaCA9 IGhhc2hfY3JlYXRlKCJsb2dpY2FsIGFwcGx5IHdvcmtlcnMgaGFzaCIsIDgsICZjdGwsCisJCQkJ CQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwl9CisKKwkv KgorCSAqIEZpbmQgZW50cnkgZm9yIHJlcXVlc3RlZCB0cmFuc2FjdGlvbi4KKwkgKi8KKwllbnRy eSA9IGhhc2hfc2VhcmNoKEFwcGx5V29ya2Vyc0hhc2gsICZ4aWQsIHN0YXJ0ID8gSEFTSF9FTlRF UiA6IEhBU0hfRklORCwKKwkJCQkJCSZmb3VuZCk7CisJaWYgKGZvdW5kKQorCXsKKwkJZW50cnkt PndzdGF0ZS0+cHN0YXRlLT5zdGF0ZSA9IEFQUExZX0JHV09SS0VSX0JVU1k7CisJCXJldHVybiBl bnRyeS0+d3N0YXRlOworCX0KKwllbHNlIGlmICghc3RhcnQpCisJCXJldHVybiBOVUxMOworCisJ LyogSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHdvcmtlciBpbiB0aGUgaWRsZSBsaXN0LCB0aGVu IHRha2Ugb25lLiAqLworCWlmIChsaXN0X2xlbmd0aChBcHBseVdvcmtlcnNJZGxlTGlzdCkgPiAw KQorCXsKKwkJd3N0YXRlID0gKFdvcmtlclN0YXRlICopIGxsYXN0KEFwcGx5V29ya2Vyc0lkbGVM aXN0KTsKKwkJQXBwbHlXb3JrZXJzSWRsZUxpc3QgPSBsaXN0X2RlbGV0ZV9sYXN0KEFwcGx5V29y a2Vyc0lkbGVMaXN0KTsKKwl9CisJZWxzZQorCXsKKwkJd3N0YXRlID0gYXBwbHlfYmd3b3JrZXJf c2V0dXAoKTsKKworCQlpZiAod3N0YXRlID09IE5VTEwpCisJCXsKKwkJCS8qCisJCQkgKiBJZiB0 aGUgYmd3b3JrZXIgY2Fubm90IGJlIGxhdW5jaGVkLCByZW1vdmUgZW50cnkgaW4gaGFzaCB0YWJs ZS4KKwkJCSAqLworCQkJaGFzaF9zZWFyY2goQXBwbHlXb3JrZXJzSGFzaCwgJnhpZCwgSEFTSF9S RU1PVkUsICZmb3VuZCk7CisJCQlyZXR1cm4gTlVMTDsKKwkJfQorCX0KKworCS8qIEZpbGwgdXAg dGhlIGhhc2ggZW50cnkgKi8KKwl3c3RhdGUtPnBzdGF0ZS0+c3RhdGUgPSBBUFBMWV9CR1dPUktF Ul9CVVNZOworCXdzdGF0ZS0+cHN0YXRlLT5zdHJlYW1feGlkID0geGlkOworCWVudHJ5LT53c3Rh dGUgPSB3c3RhdGU7CisJZW50cnktPnhpZCA9IHhpZDsKKworCXJldHVybiB3c3RhdGU7Cit9CisK Ky8qCisgKiBBZGQgdGhlIHdvcmtlciB0byB0aGUgZnJlZWxpc3QgYW5kIHJlbW92ZSB0aGUgZW50 cnkgZnJvbSBoYXNoIHRhYmxlLgorICovCitzdGF0aWMgdm9pZAorYXBwbHlfYmd3b3JrZXJfZnJl ZShXb3JrZXJTdGF0ZSAqd3N0YXRlKQoreworCWJvb2wgZm91bmQ7CisJTWVtb3J5Q29udGV4dCBv bGRjdHg7CisJVHJhbnNhY3Rpb25JZCB4aWQgPSB3c3RhdGUtPnBzdGF0ZS0+c3RyZWFtX3hpZDsK KworCUFzc2VydCh3c3RhdGUtPnBzdGF0ZS0+c3RhdGUgPT0gQVBQTFlfQkdXT1JLRVJfRklOSVNI RUQpOworCisJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisK KwloYXNoX3NlYXJjaChBcHBseVdvcmtlcnNIYXNoLCAmeGlkLAorCQkJCUhBU0hfUkVNT1ZFLCAm Zm91bmQpOworCisJZWxvZyhMT0csICJhZGRpbmcgZmluaXNoZWQgYXBwbHkgd29ya2VyICMldSBm b3IgeGlkICV1IHRvIHRoZSBpZGxlIGxpc3QiLAorCQkgd3N0YXRlLT5wc3RhdGUtPm4sIHdzdGF0 ZS0+cHN0YXRlLT5zdHJlYW1feGlkKTsKKworCUFwcGx5V29ya2Vyc0lkbGVMaXN0ID0gbGFwcGVu ZChBcHBseVdvcmtlcnNJZGxlTGlzdCwgd3N0YXRlKTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjdHgpOworfQorCisvKgorICogSGFuZGxlIFNUUkVBTSBQUkVQQVJFLgogICovCiBzdGF0 aWMgdm9pZAogYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8gcykKQEAgLTEw ODgsMjQgKzEzNzAsNjkgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8g cykKIAlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX3ByZXBhcmUocywgJnByZXBhcmVfZGF0YSk7CiAJ c2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChwcmVwYXJlX2RhdGEueGlkLCBwcmVwYXJlX2Rh dGEucHJlcGFyZV9sc24pOwogCi0JZWxvZyhERUJVRzEsICJyZWNlaXZlZCBwcmVwYXJlIGZvciBz dHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHByZXBhcmVfZGF0YS54aWQpOworCWlmIChhbV9hcHBs eV9iZ3dvcmtlcigpKQorCXsKKwkJZWxvZyhMT0csICJyZWNlaXZlZCBwcmVwYXJlIGZvciBzdHJl YW1lZCB0cmFuc2FjdGlvbiAldSIsIHByZXBhcmVfZGF0YS54aWQpOwogCi0JLyogUmVwbGF5IGFs bCB0aGUgc3Bvb2xlZCBvcGVyYXRpb25zLiAqLwotCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMocHJl cGFyZV9kYXRhLnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKKwkJLyogTWFyayB0aGUg dHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCisJCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVy bmFsKCZwcmVwYXJlX2RhdGEpOwogCi0JLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFy ZWQuICovCi0JYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVfZGF0YSk7CisJ CUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5k KCk7CisJCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CiAKLQlwZ3N0YXRfcmVwb3J0X3N0YXQo ZmFsc2UpOworCQlsaXN0X2ZyZWUoc3VieGFjdGxpc3QpOworCQlzdWJ4YWN0bGlzdCA9IE5JTDsK IAotCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJYXBwbHlf Ymd3b3JrZXJfc2V0X3N0YXRlKEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsKKwl9CisJZWxzZQor CXsKKwkJV29ya2VyU3RhdGUgKndzdGF0ZSA9IGFwcGx5X2Jnd29ya2VyX2ZpbmRfb3Jfc3RhcnQo cHJlcGFyZV9kYXRhLnhpZCwgZmFsc2UpOworCisJCS8qCisJCSAqIElmIHdlIGFyZSBpbiBtYWlu IGFwcGx5IHdvcmtlciwgY2hlY2sgaWYgd2UgYXJlIHByb2Nlc3NpbmcgdGhpcworCQkgKiB0cmFu c2FjdGlvbiBpbiBhIGJnd29ya2VyLgorCQkgKi8KKwkJaWYgKHdzdGF0ZSkKKwkJeworCQkJYXBw bHlfYmd3b3JrZXJfc2VuZF9kYXRhKHdzdGF0ZSwgcy0+bGVuLCBzLT5kYXRhKTsKKworCQkJYXBw bHlfYmd3b3JrZXJfd2FpdF9mb3Iod3N0YXRlLCBBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCk7CisJ CQlhcHBseV9iZ3dvcmtlcl9mcmVlKHdzdGF0ZSk7CisKKwkJCXBnc3RhdF9yZXBvcnRfc3RhdChm YWxzZSk7CisJCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbik7CisJ CX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogSWYgd2UgYXJlIGluIG1haW4gYXBwbHkgd29y a2VyIGFuZCB0aGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4KKwkJCSAqIHNlcmlhbGl6ZWQgdG8gZmls ZSwgcmVwbGF5IGFsbCB0aGUgc3Bvb2xlZCBvcGVyYXRpb25zLgorCQkJICovCisJCQlhcHBseV9z cG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xz bik7CisKKwkJCS8qIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLworCQkJYXBw bHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVfZGF0YSk7CisKKwkJCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOworCisJCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCisJ CQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbik7CisKKwkJCWluX3Jl bW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOworCisJCQkvKiB1bmxpbmsgdGhlIGZpbGVzIHdpdGgg c2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCisJCQlzdHJlYW1fY2xlYW51 cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBwcmVwYXJlX2RhdGEueGlkKTsKKwkJ fQorCX0KIAogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOworCXN0cmVhbV9hcHBseV93 b3JrZXIgPSBOVUxMOwogCi0JLyogdW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hh bmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLwotCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNh bFJlcFdvcmtlci0+c3ViaWQsIHByZXBhcmVfZGF0YS54aWQpOworCS8qIENoZWNrIHRoZSBzdGF0 dXMgb2YgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaWYgYW55LiAqLworCWFwcGx5X2Jnd29ya2Vy X2NoZWNrX3N0YXR1cygpOwogCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5n IHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHBy ZXBhcmVfZGF0YS5lbmRfbHNuKTsKQEAgLTExNTUsMTUgKzE0ODIsNiBAQCBhcHBseV9oYW5kbGVf c3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09M X1ZJT0xBVElPTiksCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiZHVwbGljYXRlIFNUUkVBTSBTVEFS VCBtZXNzYWdlIikpKTsKIAotCS8qCi0JICogU3RhcnQgYSB0cmFuc2FjdGlvbiBvbiBzdHJlYW0g c3RhcnQsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBiZSBjb21taXR0ZWQKLQkgKiBvbiB0aGUgc3Ry ZWFtIHN0b3AgdW5sZXNzIGl0IGlzIGEgdGFibGVzeW5jIHdvcmtlciBpbiB3aGljaCBjYXNlIGl0 Ci0JICogd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlIG1lc3NhZ2Vz LiBXZSBuZWVkIHRoZQotCSAqIHRyYW5zYWN0aW9uIGZvciBoYW5kbGluZyB0aGUgYnVmZmlsZSwg dXNlZCBmb3Igc2VyaWFsaXppbmcgdGhlCi0JICogc3RyZWFtaW5nIGRhdGEgYW5kIHN1YnhhY3Qg aW5mby4KLQkgKi8KLQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7Ci0KIAkvKiBub3RpZnkgaGFu ZGxlIG1ldGhvZHMgd2UncmUgcHJvY2Vzc2luZyBhIHJlbW90ZSB0cmFuc2FjdGlvbiAqLwogCWlu X3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gdHJ1ZTsKIApAQCAtMTE3NywzNiArMTQ5NSw5MCBAQCBh cHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIAogCXNldF9hcHBseV9lcnJv cl9jb250ZXh0X3hhY3Qoc3RyZWFtX3hpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogCisJaWYgKGFt X2FwcGx5X2Jnd29ya2VyKCkpCisJeworCQkvKgorCQkgKiBNYWtlIHN1cmUgdGhlIGhhbmRsZSBh cHBseV9kaXNwYXRjaCBtZXRob2RzIGFyZSBhd2FyZSB3ZSdyZSBpbiBhCisJCSAqIHJlbW90ZSB0 cmFuc2FjdGlvbi4KKwkJICovCisJCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IHRydWU7CisKKwkJ LyogSWYgd2UgYXJlIGluIGEgYmd3b3JrZXIsIGJlZ2luIHRoZSB0cmFuc2FjdGlvbiAqLworCQlB Y2NlcHRJbnZhbGlkYXRpb25NZXNzYWdlcygpOworCQltYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9u KCk7CisKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJQmVnaW5UcmFuc2FjdGlvbkJs b2NrKCk7CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCXJldHVybjsKKwl9CisK IAkvKgotCSAqIEluaXRpYWxpemUgdGhlIHdvcmtlcidzIHN0cmVhbV9maWxlc2V0IGlmIHdlIGhh dmVuJ3QgeWV0LiBUaGlzIHdpbGwgYmUKLQkgKiB1c2VkIGZvciB0aGUgZW50aXJlIGR1cmF0aW9u IG9mIHRoZSB3b3JrZXIgc28gY3JlYXRlIGl0IGluIGEgcGVybWFuZW50Ci0JICogY29udGV4dC4g V2UgY3JlYXRlIHRoaXMgb24gdGhlIHZlcnkgZmlyc3Qgc3RyZWFtaW5nIG1lc3NhZ2UgZnJvbSBh bnkKLQkgKiB0cmFuc2FjdGlvbiBhbmQgdGhlbiB1c2UgaXQgZm9yIHRoaXMgYW5kIG90aGVyIHN0 cmVhbWluZyB0cmFuc2FjdGlvbnMuCi0JICogTm93LCB3ZSBjb3VsZCBjcmVhdGUgYSBmaWxlc2V0 IGF0IHRoZSBzdGFydCBvZiB0aGUgd29ya2VyIGFzIHdlbGwgYnV0Ci0JICogdGhlbiB3ZSB3b24n dCBiZSBzdXJlIHRoYXQgaXQgd2lsbCBldmVyIGJlIHVzZWQuCisJICogSWYgd2UgYXJlIGluIG1h aW4gYXBwbHkgd29ya2VyLCBjaGVjayBpZiB0aGVyZSBpcyBhbnkgZnJlZSBiZ3dvcmtlcgorCSAq IHdlIGNhbiB1c2UgdG8gcHJvY2VzcyB0aGlzIHRyYW5zYWN0aW9uLgogCSAqLwotCWlmIChNeUxv Z2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ID09IE5VTEwpCisJc3RyZWFtX2FwcGx5X3dv cmtlciA9IGFwcGx5X2Jnd29ya2VyX2ZpbmRfb3Jfc3RhcnQoc3RyZWFtX3hpZCwgZmlyc3Rfc2Vn bWVudCk7CisKKwlpZiAoc3RyZWFtX2FwcGx5X3dvcmtlcikKIAl7Ci0JCU1lbW9yeUNvbnRleHQg b2xkY3R4OworCQkvKgorCQkgKiBJZiB3ZSBoYXZlIGZyZWUgd29ya2VyIG9yIHdlIGFscmVhZHkg c3RhcnRlZCB0byBhcHBseSB0aGlzCisJCSAqIHRyYW5zYWN0aW9uIGluIGJnd29ya2VyLCB3ZSBw YXNzIHRoZSBkYXRhIHRvIHdvcmtlci4KKwkJICovCisJCWlmIChmaXJzdF9zZWdtZW50KQorCQkJ YXBwbHlfYmd3b3JrZXJfc2VuZF9kYXRhKHN0cmVhbV9hcHBseV93b3JrZXIsIHMtPmxlbiwgcy0+ ZGF0YSk7CiAKLQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7 CisJCW5jaGFuZ2VzID0gMDsKKwkJZWxvZyhMT0csICJzdGFydGluZyBzdHJlYW1pbmcgb2YgeGlk ICV1Iiwgc3RyZWFtX3hpZCk7CisJfQogCi0JCU15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2Zp bGVzZXQgPSBwYWxsb2Moc2l6ZW9mKEZpbGVTZXQpKTsKLQkJRmlsZVNldEluaXQoTXlMb2dpY2Fs UmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCk7CisJLyoKKwkgKiBJZiBubyB3b3JrZXIgaXMgYXZh aWxhYmxlIGZvciB0aGUgZmlyc3Qgc3RyZWFtIHN0YXJ0LCB3ZSBzdGFydCB0bworCSAqIHNlcmlh bGl6ZSBhbGwgdGhlIGNoYW5nZXMgb2YgdGhlIHRyYW5zYWN0aW9uLgorCSAqLworCWVsc2UKKwl7 CisJCS8qCisJCSAqIFN0YXJ0IGEgdHJhbnNhY3Rpb24gb24gc3RyZWFtIHN0YXJ0LCB0aGlzIHRy YW5zYWN0aW9uIHdpbGwgYmUgY29tbWl0dGVkCisJCSAqIG9uIHRoZSBzdHJlYW0gc3RvcCB1bmxl c3MgaXQgaXMgYSB0YWJsZXN5bmMgd29ya2VyIGluIHdoaWNoIGNhc2UgaXQKKwkJICogd2lsbCBi ZSBjb21taXR0ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlIG1lc3NhZ2VzLiBXZSBuZWVkIHRo ZQorCQkgKiB0cmFuc2FjdGlvbiBmb3IgaGFuZGxpbmcgdGhlIGJ1ZmZpbGUsIHVzZWQgZm9yIHNl cmlhbGl6aW5nIHRoZQorCQkgKiBzdHJlYW1pbmcgZGF0YSBhbmQgc3VieGFjdCBpbmZvLgorCQkg Ki8KKwkJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOwogCi0JCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjdHgpOwotCX0KKwkJLyoKKwkJICogSW5pdGlhbGl6ZSB0aGUgd29ya2VyJ3Mgc3RyZWFt X2ZpbGVzZXQgaWYgd2UgaGF2ZW4ndCB5ZXQuIFRoaXMgd2lsbCBiZQorCQkgKiB1c2VkIGZvciB0 aGUgZW50aXJlIGR1cmF0aW9uIG9mIHRoZSB3b3JrZXIgc28gY3JlYXRlIGl0IGluIGEgcGVybWFu ZW50CisJCSAqIGNvbnRleHQuIFdlIGNyZWF0ZSB0aGlzIG9uIHRoZSB2ZXJ5IGZpcnN0IHN0cmVh bWluZyBtZXNzYWdlIGZyb20gYW55CisJCSAqIHRyYW5zYWN0aW9uIGFuZCB0aGVuIHVzZSBpdCBm b3IgdGhpcyBhbmQgb3RoZXIgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4KKwkJICogTm93LCB3ZSBj b3VsZCBjcmVhdGUgYSBmaWxlc2V0IGF0IHRoZSBzdGFydCBvZiB0aGUgd29ya2VyIGFzIHdlbGwg YnV0CisJCSAqIHRoZW4gd2Ugd29uJ3QgYmUgc3VyZSB0aGF0IGl0IHdpbGwgZXZlciBiZSB1c2Vk LgorCQkgKi8KKwkJaWYgKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPT0gTlVM TCkKKwkJeworCQkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CiAKLQkvKiBvcGVuIHRoZSBzcG9vbCBm aWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uICovCi0Jc3RyZWFtX29wZW5fZmlsZShNeUxvZ2ljYWxS ZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsKKwkJCW9sZGN0eCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOwogCi0JLyogaWYgdGhpcyBpcyBu b3QgdGhlIGZpcnN0IHNlZ21lbnQsIG9wZW4gZXhpc3Rpbmcgc3VieGFjdCBmaWxlICovCi0JaWYg KCFmaXJzdF9zZWdtZW50KQotCQlzdWJ4YWN0X2luZm9fcmVhZChNeUxvZ2ljYWxSZXBXb3JrZXIt PnN1YmlkLCBzdHJlYW1feGlkKTsKKwkJCU15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVz ZXQgPSBwYWxsb2Moc2l6ZW9mKEZpbGVTZXQpKTsKKwkJCUZpbGVTZXRJbml0KE15TG9naWNhbFJl cFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOwogCi0JcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFU RV9SVU5OSU5HLCBOVUxMKTsKKwkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCQl9 CiAKLQllbmRfcmVwbGljYXRpb25fc3RlcCgpOworCQkvKiBvcGVuIHRoZSBzcG9vbCBmaWxlIGZv ciB0aGlzIHRyYW5zYWN0aW9uICovCisJCXN0cmVhbV9vcGVuX2ZpbGUoTXlMb2dpY2FsUmVwV29y a2VyLT5zdWJpZCwgc3RyZWFtX3hpZCwgZmlyc3Rfc2VnbWVudCk7CisKKwkJLyogaWYgdGhpcyBp cyBub3QgdGhlIGZpcnN0IHNlZ21lbnQsIG9wZW4gZXhpc3Rpbmcgc3VieGFjdCBmaWxlICovCisJ CWlmICghZmlyc3Rfc2VnbWVudCkKKwkJCXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdv cmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCisJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CisJ fQorCisJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9SVU5OSU5HLCBOVUxMKTsKIH0KIAog LyoKQEAgLTEyMjAsNDQgKzE1OTIsNDcgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdG9wKFN0cmlu Z0luZm8gcykKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCiAJCQkJ IGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIFNUT1AgbWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVEFS VCIpKSk7CiAKLQkvKgotCSAqIENsb3NlIHRoZSBmaWxlIHdpdGggc2VyaWFsaXplZCBjaGFuZ2Vz LCBhbmQgc2VyaWFsaXplIGluZm9ybWF0aW9uIGFib3V0Ci0JICogc3VieGFjdHMgZm9yIHRoZSB0 b3BsZXZlbCB0cmFuc2FjdGlvbi4KLQkgKi8KLQlzdWJ4YWN0X2luZm9fd3JpdGUoTXlMb2dpY2Fs UmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7Ci0Jc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKKwlp ZiAoYXBwbHlfYmd3b3JrZXJfYWN0aXZlKCkpCisJeworCQljaGFyCWFjdGlvbiA9IExPR0lDQUxf UkVQX01TR19TVFJFQU1fU1RPUDsKIAotCS8qIFdlIG11c3QgYmUgaW4gYSB2YWxpZCB0cmFuc2Fj dGlvbiBzdGF0ZSAqLwotCUFzc2VydChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CisJCWFwcGx5X2Jn d29ya2VyX3NlbmRfZGF0YShzdHJlYW1fYXBwbHlfd29ya2VyLCAxLCAmYWN0aW9uKTsKKwkJYXBw bHlfYmd3b3JrZXJfd2FpdF9mb3Ioc3RyZWFtX2FwcGx5X3dvcmtlciwgQVBQTFlfQkdXT1JLRVJf UkVBRFkpOwogCi0JLyogQ29tbWl0IHRoZSBwZXItc3RyZWFtIHRyYW5zYWN0aW9uICovCi0JQ29t bWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCWVsb2coTE9HLCAic3RvcHBlZCBzdHJlYW1pbmcg b2YgeGlkICV1LCAldSBjaGFuZ2VzIHN0cmVhbWVkIiwgc3RyZWFtX3hpZCwgbmNoYW5nZXMpOwor CX0KKwllbHNlCisJeworCQkvKgorCQkgKiBDbG9zZSB0aGUgZmlsZSB3aXRoIHNlcmlhbGl6ZWQg Y2hhbmdlcywgYW5kIHNlcmlhbGl6ZSBpbmZvcm1hdGlvbgorCQkgKiBhYm91dCBzdWJ4YWN0cyBm b3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLgorCQkgKi8KKwkJc3VieGFjdF9pbmZvX3dyaXRl KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCQlzdHJlYW1fY2xvc2Vf ZmlsZSgpOwogCi0JaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKwkJLyogV2UgbXVz dCBiZSBpbiBhIHZhbGlkIHRyYW5zYWN0aW9uIHN0YXRlICovCisJCUFzc2VydChJc1RyYW5zYWN0 aW9uU3RhdGUoKSk7CisKKwkJLyogQ29tbWl0IHRoZSBwZXItc3RyZWFtIHRyYW5zYWN0aW9uICov CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCS8qIFJlc2V0IHBlci1zdHJlYW0g Y29udGV4dCAqLworCQlNZW1vcnlDb250ZXh0UmVzZXQoTG9naWNhbFN0cmVhbWluZ0NvbnRleHQp OworCX0KIAotCS8qIFJlc2V0IHBlci1zdHJlYW0gY29udGV4dCAqLwotCU1lbW9yeUNvbnRleHRS ZXNldChMb2dpY2FsU3RyZWFtaW5nQ29udGV4dCk7CisJaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24g PSBmYWxzZTsKKwlzdHJlYW1fYXBwbHlfd29ya2VyID0gTlVMTDsKIAogCXBnc3RhdF9yZXBvcnRf YWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9p bmZvKCk7CiB9CiAKIC8qCi0gKiBIYW5kbGUgU1RSRUFNIGFib3J0IG1lc3NhZ2UuCisgKiBIYW5k bGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2hlbiB0aGUgdHJhbnNhY3Rpb24gd2FzIHNwaWxsZWQg dG8gZGlzay4KICAqLwogc3RhdGljIHZvaWQKLWFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3Ry aW5nSW5mbyBzKQorc2VyaWFsaXplX3N0cmVhbV9hYm9ydChUcmFuc2FjdGlvbklkIHhpZCwgVHJh bnNhY3Rpb25JZCBzdWJ4aWQpCiB7Ci0JVHJhbnNhY3Rpb25JZCB4aWQ7Ci0JVHJhbnNhY3Rpb25J ZCBzdWJ4aWQ7Ci0KLQlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCi0JCWVyZXBvcnQoRVJS T1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAotCQkJCSBlcnJt c2dfaW50ZXJuYWwoIlNUUkVBTSBBQk9SVCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUT1AiKSkp OwotCi0JbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChzLCAmeGlkLCAmc3VieGlkKTsKLQog CS8qCiAJICogSWYgdGhlIHR3byBYSURzIGFyZSB0aGUgc2FtZSwgaXQncyBpbiBmYWN0IGFib3J0 IG9mIHRvcGxldmVsIHhhY3QsIHNvCiAJICoganVzdCBkZWxldGUgdGhlIGZpbGVzIHdpdGggc2Vy aWFsaXplZCBpbmZvLgpAQCAtMTMzOSw1MSArMTcxNCwxNjMgQEAgYXBwbHlfaGFuZGxlX3N0cmVh bV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CiAJCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCX0KLQotCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRf aW5mbygpOwogfQogCiAvKgotICogQ29tbW9uIHNwb29sZmlsZSBwcm9jZXNzaW5nLgorICogSGFu ZGxlIFNUUkVBTSBBQk9SVCBtZXNzYWdlLgogICovCiBzdGF0aWMgdm9pZAotYXBwbHlfc3Bvb2xl ZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCithcHBseV9oYW5k bGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIHsKLQlTdHJpbmdJbmZvRGF0YSBzMjsKLQlp bnQJCQluY2hhbmdlczsKLQljaGFyCQlwYXRoW01BWFBHUEFUSF07Ci0JY2hhcgkgICAqYnVmZmVy ID0gTlVMTDsKLQlNZW1vcnlDb250ZXh0IG9sZGN4dDsKLQlCdWZGaWxlICAgICpmZDsKKwlUcmFu c2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIHN1YnhpZDsKIAotCW1heWJlX3N0YXJ0X3Nr aXBwaW5nX2NoYW5nZXMobHNuKTsKKwlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAor CQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBDT01NSVQgbWVzc2FnZSB3aXRob3V0IFNUUkVB TSBTVE9QIikpKTsKIAotCS8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIG9wZW4gdHJhbnNhY3Rpb24g Ki8KLQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CisJbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9h Ym9ydChzLCAmeGlkLCAmc3VieGlkKTsKIAotCS8qCi0JICogQWxsb2NhdGUgZmlsZSBoYW5kbGUg YW5kIG1lbW9yeSByZXF1aXJlZCB0byBwcm9jZXNzIGFsbCB0aGUgbWVzc2FnZXMgaW4KLQkgKiBU b3BUcmFuc2FjdGlvbkNvbnRleHQgdG8gYXZvaWQgdGhlbSBnZXR0aW5nIHJlc2V0IGFmdGVyIGVh Y2ggbWVzc2FnZSBpcwotCSAqIHByb2Nlc3NlZC4KLQkgKi8KLQlvbGRjeHQgPSBNZW1vcnlDb250 ZXh0U3dpdGNoVG8oVG9wVHJhbnNhY3Rpb25Db250ZXh0KTsKKwlpZiAoYW1fYXBwbHlfYmd3b3Jr ZXIoKSkKKwl7CisJCWVyZXBvcnQoTE9HLAorCQkJCShlcnJtc2coIltBcHBseSBCR1cgIyV1XSBh Ym9ydGluZyBjdXJyZW50IHRyYW5zYWN0aW9uIHhpZD0ldSwgc3VieGlkPSV1IiwKKwkJCQlNeVBh cmFsbGVsU3RhdGUtPm4sIEdldEN1cnJlbnRUcmFuc2FjdGlvbklkSWZBbnkoKSwgR2V0Q3VycmVu dFN1YlRyYW5zYWN0aW9uSWQoKSkpKTsKIAotCS8qIE9wZW4gdGhlIHNwb29sIGZpbGUgZm9yIHRo ZSBjb21taXR0ZWQvcHJlcGFyZWQgdHJhbnNhY3Rpb24gKi8KLQljaGFuZ2VzX2ZpbGVuYW1lKHBh dGgsIE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7Ci0JZWxvZyhERUJVRzEsICJyZXBs YXlpbmcgY2hhbmdlcyBmcm9tIGZpbGUgXCIlc1wiIiwgcGF0aCk7CisJCS8qCisJCSAqIElmIHRo ZSB0d28gWElEcyBhcmUgdGhlIHNhbWUsIGl0J3MgaW4gZmFjdCBhYm9ydCBvZiB0b3BsZXZlbCB4 YWN0LAorCQkgKiBzbyBqdXN0IGZyZWUgdGhlIHN1YnhhY3RsaXN0LgorCQkgKi8KKwkJaWYgKHN1 YnhpZCA9PSB4aWQpCisJCXsKKwkJCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Qoc3VieGlk LCBJbnZhbGlkWExvZ1JlY1B0cik7CiAKLQlmZCA9IEJ1ZkZpbGVPcGVuRmlsZVNldChNeUxvZ2lj YWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0LCBwYXRoLCBPX1JET05MWSwKLQkJCQkJCQlmYWxz ZSk7CisJCQlBYm9ydEN1cnJlbnRUcmFuc2FjdGlvbigpOwogCi0JYnVmZmVyID0gcGFsbG9jKEJM Q0tTWik7Ci0JaW5pdFN0cmluZ0luZm8oJnMyKTsKKwkJCUVuZFRyYW5zYWN0aW9uQmxvY2soZmFs c2UpOworCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY3h0KTsKKwkJCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCi0JcmVt b3RlX2ZpbmFsX2xzbiA9IGxzbjsKKwkJCWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7CisJCQlzdWJ4 YWN0bGlzdCA9IE5JTDsKIAotCS8qCi0JICogTWFrZSBzdXJlIHRoZSBoYW5kbGUgYXBwbHlfZGlz cGF0Y2ggbWV0aG9kcyBhcmUgYXdhcmUgd2UncmUgaW4gYSByZW1vdGUKKwkJCWFwcGx5X2Jnd29y a2VyX3NldF9zdGF0ZShBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCk7CisJCX0KKwkJZWxzZQorCQl7 CisJCQkvKgorCQkJICogT0ssIHNvIGl0J3MgYSBzdWJ4YWN0LiBSb2xsYmFjayB0byB0aGUgc2F2 ZXBvaW50LgorCQkJICoKKwkJCSAqIFdlIGFsc28gbmVlZCB0byByZWFkIHRoZSBzdWJ4YWN0bGlz dCwgZGV0ZXJtaW5lIHRoZSBvZmZzZXQKKwkJCSAqIHRyYWNrZWQgZm9yIHRoZSBzdWJ4YWN0LCBh bmQgdHJ1bmNhdGUgdGhlIGxpc3QuCisJCQkgKi8KKwkJCWludAkJaTsKKwkJCWJvb2wJZm91bmQg PSBmYWxzZTsKKwkJCWNoYXIJc3BuYW1lW01BWFBHUEFUSF07CisKKwkJCXNldF9hcHBseV9lcnJv cl9jb250ZXh0X3hhY3Qoc3VieGlkLCBJbnZhbGlkWExvZ1JlY1B0cik7CisJCQlzbnByaW50Zihz cG5hbWUsIE1BWFBHUEFUSCwgInNhdmVwb2ludF9mb3JfeGlkXyV1Iiwgc3VieGlkKTsKKworCQkJ ZXJlcG9ydChMT0csCisJCQkJCShlcnJtc2coIltBcHBseSBCR1cgIyV1XSByb2xsaW5nIGJhY2sg dG8gc2F2ZXBvaW50ICVzIiwKKwkJCQkJTXlQYXJhbGxlbFN0YXRlLT5uLCBzcG5hbWUpKSk7CisK KwkJCWZvcihpID0gbGlzdF9sZW5ndGgoc3VieGFjdGxpc3QpIC0gMTsgaSA+PSAwOyBpLS0pCisJ CQl7CisJCQkJeGlkID0gKFRyYW5zYWN0aW9uSWQpIGxpc3RfbnRoX2ludChzdWJ4YWN0bGlzdCwg aSk7CisJCQkJaWYgKHhpZCA9PSBzdWJ4aWQpCisJCQkJeworCQkJCQlmb3VuZCA9IHRydWU7CisJ CQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKworCQkJaWYgKGZvdW5kKQorCQkJeworCQkJCWVsb2co TE9HLCAicm9sbGVkIGJhY2sgdG8gc2F2ZXBvaW50ICVzIiwgc3BuYW1lKTsKKwkJCQlSb2xsYmFj a1RvU2F2ZXBvaW50KHNwbmFtZSk7CisJCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJ CQkJc3VieGFjdGxpc3QgPSBsaXN0X3RydW5jYXRlKHN1YnhhY3RsaXN0LCBpICsgMSk7CisJCQl9 CisKKwkJCWFwcGx5X2Jnd29ya2VyX3NldF9zdGF0ZShBUFBMWV9CR1dPUktFUl9SRUFEWSk7CisJ CX0KKworCQlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKKwl9CisJZWxzZQorCXsK KwkJV29ya2VyU3RhdGUgKndzdGF0ZSA9IGFwcGx5X2Jnd29ya2VyX2ZpbmRfb3Jfc3RhcnQoeGlk LCBmYWxzZSk7CisKKwkJLyoKKwkJICogSWYgd2UgYXJlIGluIG1haW4gYXBwbHkgd29ya2VyLCBj aGVjayBpZiB3ZSBhcmUgcHJvY2Vzc2luZyB0aGlzCisJCSAqIHRyYW5zYWN0aW9uIGluIGEgYmd3 b3JrZXIuCisJCSAqLworCQlpZiAod3N0YXRlKQorCQl7CisJCQlhcHBseV9iZ3dvcmtlcl9zZW5k X2RhdGEod3N0YXRlLCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQlpZiAoc3VieGlkID09IHhpZCkK KwkJCXsKKwkJCQlhcHBseV9iZ3dvcmtlcl93YWl0X2Zvcih3c3RhdGUsIEFQUExZX0JHV09SS0VS X0ZJTklTSEVEKTsKKwkJCQlhcHBseV9iZ3dvcmtlcl9mcmVlKHdzdGF0ZSk7CisJCQl9CisJCQll bHNlCisJCQkJYXBwbHlfYmd3b3JrZXJfd2FpdF9mb3Iod3N0YXRlLCBBUFBMWV9CR1dPUktFUl9S RUFEWSk7CisJCX0KKworCQkvKgorCQkgKiBXZSBhcmUgaW4gbWFpbiBhcHBseSB3b3JrZXIgYW5k IHRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBzZXJpYWxpemVkCisJCSAqIHRvIGZpbGUuCisJCSAq LworCQllbHNlCisJCQlzZXJpYWxpemVfc3RyZWFtX2Fib3J0KHhpZCwgc3VieGlkKTsKKwl9Cit9 CisKKy8qCisgKiBDb21tb24gc3Bvb2xmaWxlIHByb2Nlc3NpbmcuCisgKi8KK3N0YXRpYyB2b2lk CithcHBseV9zcG9vbGVkX21lc3NhZ2VzKFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxz bikKK3sKKwlTdHJpbmdJbmZvRGF0YSBzMjsKKwlpbnQJCQluY2hhbmdlczsKKwljaGFyCQlwYXRo W01BWFBHUEFUSF07CisJY2hhcgkgICAqYnVmZmVyID0gTlVMTDsKKwlNZW1vcnlDb250ZXh0IG9s ZGN4dDsKKwlCdWZGaWxlICAgICpmZDsKKworCW1heWJlX3N0YXJ0X3NraXBwaW5nX2NoYW5nZXMo bHNuKTsKKworCS8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIG9wZW4gdHJhbnNhY3Rpb24gKi8KKwli ZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CisKKwkvKgorCSAqIEFsbG9jYXRlIGZpbGUgaGFuZGxl IGFuZCBtZW1vcnkgcmVxdWlyZWQgdG8gcHJvY2VzcyBhbGwgdGhlIG1lc3NhZ2VzIGluCisJICog VG9wVHJhbnNhY3Rpb25Db250ZXh0IHRvIGF2b2lkIHRoZW0gZ2V0dGluZyByZXNldCBhZnRlciBl YWNoIG1lc3NhZ2UgaXMKKwkgKiBwcm9jZXNzZWQuCisJICovCisJb2xkY3h0ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKFRvcFRyYW5zYWN0aW9uQ29udGV4dCk7CisKKwkvKiBPcGVuIHRoZSBzcG9v bCBmaWxlIGZvciB0aGUgY29tbWl0dGVkL3ByZXBhcmVkIHRyYW5zYWN0aW9uICovCisJY2hhbmdl c19maWxlbmFtZShwYXRoLCBNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCWVsb2co REVCVUcxLCAicmVwbGF5aW5nIGNoYW5nZXMgZnJvbSBmaWxlIFwiJXNcIiIsIHBhdGgpOworCisJ ZmQgPSBCdWZGaWxlT3BlbkZpbGVTZXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNl dCwgcGF0aCwgT19SRE9OTFksCisJCQkJCQkJZmFsc2UpOworCisJYnVmZmVyID0gcGFsbG9jKEJM Q0tTWik7CisJaW5pdFN0cmluZ0luZm8oJnMyKTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhv bGRjeHQpOworCisJcmVtb3RlX2ZpbmFsX2xzbiA9IGxzbjsKKworCS8qCisJICogTWFrZSBzdXJl IHRoZSBoYW5kbGUgYXBwbHlfZGlzcGF0Y2ggbWV0aG9kcyBhcmUgYXdhcmUgd2UncmUgaW4gYSBy ZW1vdGUKIAkgKiB0cmFuc2FjdGlvbi4KIAkgKi8KIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSB0 cnVlOwpAQCAtMTQ2Miw0MCArMTk0OSw2IEBAIGFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoVHJhbnNh Y3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogCXJldHVybjsKIH0KIAotLyoKLSAqIEhhbmRs ZSBTVFJFQU0gQ09NTUlUIG1lc3NhZ2UuCi0gKi8KLXN0YXRpYyB2b2lkCi1hcHBseV9oYW5kbGVf c3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCi17Ci0JVHJhbnNhY3Rpb25JZCB4aWQ7Ci0JTG9n aWNhbFJlcENvbW1pdERhdGEgY29tbWl0X2RhdGE7Ci0KLQlpZiAoaW5fc3RyZWFtZWRfdHJhbnNh Y3Rpb24pCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9W SU9MQVRJT04pLAotCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBDT01NSVQgbWVzc2FnZSB3 aXRob3V0IFNUUkVBTSBTVE9QIikpKTsKLQotCXhpZCA9IGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1f Y29tbWl0KHMsICZjb21taXRfZGF0YSk7Ci0Jc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdCh4 aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOwotCi0JZWxvZyhERUJVRzEsICJyZWNlaXZlZCBj b21taXQgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9uICV1IiwgeGlkKTsKLQotCWFwcGx5X3Nwb29s ZWRfbWVzc2FnZXMoeGlkLCBjb21taXRfZGF0YS5jb21taXRfbHNuKTsKLQotCWFwcGx5X2hhbmRs ZV9jb21taXRfaW50ZXJuYWwoJmNvbW1pdF9kYXRhKTsKLQotCS8qIHVubGluayB0aGUgZmlsZXMg d2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mbyAqLwotCXN0cmVhbV9jbGVh bnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7Ci0KLQkvKiBQcm9jZXNz IGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwot CXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29tbWl0X2RhdGEuZW5kX2xzbik7Ci0KLQlwZ3N0YXRf cmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOwotCi0JcmVzZXRfYXBwbHlfZXJyb3Jf Y29udGV4dF9pbmZvKCk7Ci19Ci0KIC8qCiAgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGFwcGx5X2hh bmRsZV9jb21taXQgYW5kIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0LgogICovCkBAIC0yNDQ1 LDYgKzI4OTgsMTAwIEBAIGFwcGx5X2hhbmRsZV90cnVuY2F0ZShTdHJpbmdJbmZvIHMpCiAJZW5k X3JlcGxpY2F0aW9uX3N0ZXAoKTsKIH0KIAorLyoKKyAqIEhhbmRsZSBTVFJFQU0gQ09NTUlUIG1l c3NhZ2UuCisgKi8KK3N0YXRpYyB2b2lkCithcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJp bmdJbmZvIHMpCit7CisJTG9naWNhbFJlcENvbW1pdERhdGEgY29tbWl0X2RhdGE7CisJVHJhbnNh Y3Rpb25JZCB4aWQ7CisKKwlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAorCQkJCSBl cnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBDT01NSVQgbWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVE9Q IikpKTsKKworCXhpZCA9IGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fY29tbWl0KHMsICZjb21taXRf ZGF0YSk7CisJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdCh4aWQsIGNvbW1pdF9kYXRhLmNv bW1pdF9sc24pOworCisJZWxvZyhERUJVRzEsICJyZWNlaXZlZCBjb21taXQgZm9yIHN0cmVhbWVk IHRyYW5zYWN0aW9uICV1IiwgeGlkKTsKKworCWlmIChhbV9hcHBseV9iZ3dvcmtlcigpKQorCXsK KwkJLyoKKwkJICogVXBkYXRlIG9yaWdpbiBzdGF0ZSBzbyB3ZSBjYW4gcmVzdGFydCBzdHJlYW1p bmcgZnJvbSBjb3JyZWN0CisJCSAqIHBvc2l0aW9uIGluIGNhc2Ugb2YgY3Jhc2guCisJCSAqLwor CQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiA9IGNvbW1pdF9kYXRhLmVuZF9sc247CisJ CXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wID0gY29tbWl0X2RhdGEuY29tbWl0 dGltZTsKKworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJRW5kVHJhbnNhY3Rpb25C bG9jayhmYWxzZSk7CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCWluX3JlbW90 ZV90cmFuc2FjdGlvbiA9IGZhbHNlOworCisJCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CisK KwkJbGlzdF9mcmVlKHN1YnhhY3RsaXN0KTsKKwkJc3VieGFjdGxpc3QgPSBOSUw7CisKKwkJYXBw bHlfYmd3b3JrZXJfc2V0X3N0YXRlKEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsKKwl9CisJZWxz ZQorCXsKKwkJLyoKKwkJICogSWYgd2UgYXJlIGluIG1haW4gYXBwbHkgd29ya2VyLCBjaGVjayBp ZiB3ZSBhcmUgcHJvY2Vzc2luZyB0aGlzCisJCSAqIHRyYW5zYWN0aW9uIGluIGFuIGFwcGx5IGJh Y2tncm91bmQgd29ya2VyLgorCQkgKi8KKwkJV29ya2VyU3RhdGUgKndzdGF0ZSA9IGFwcGx5X2Jn d29ya2VyX2ZpbmRfb3Jfc3RhcnQoeGlkLCBmYWxzZSk7CisKKwkJaWYgKHdzdGF0ZSkKKwkJewor CQkJLyogU2VuZCBjb21taXQgbWVzc2FnZSAqLworCQkJYXBwbHlfYmd3b3JrZXJfc2VuZF9kYXRh KHdzdGF0ZSwgcy0+bGVuLCBzLT5kYXRhKTsKKworCQkJLyogV2FpdCBmb3IgYXBwbHkgYmFja2dy b3VuZCB3b3JrZXIgdG8gZmluaXNoICovCisJCQlhcHBseV9iZ3dvcmtlcl93YWl0X2Zvcih3c3Rh dGUsIEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsKKworCQkJcGdzdGF0X3JlcG9ydF9zdGF0KGZh bHNlKTsKKwkJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKGNvbW1pdF9kYXRhLmVuZF9sc24pOworCQkJ c3RvcF9za2lwcGluZ19jaGFuZ2VzKCk7CisKKwkJCWFwcGx5X2Jnd29ya2VyX2ZyZWUod3N0YXRl KTsKKworCQkJLyoKKwkJCSAqIFRoZSB0cmFuc2FjdGlvbiBpcyBlaXRoZXIgbm9uLWVtcHR5IG9y IHNraXBwZWQsIHNvIHdlIGNsZWFyIHRoZQorCQkJICogc3Vic2tpcGxzbi4KKwkJCSAqLworCQkJ Y2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCQl9 CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIElmIHdlIGFyZSBpbiBtYWluIGFwcGx5IHdvcmtl ciBhbmQgdGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuCisJCQkgKiBzZXJpYWxpemVkIHRvIGZpbGUs IHJlcGxheSBhbGwgdGhlIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJCSAqLworCQkJYXBwbHlfc3Bv b2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCisJCQlhcHBseV9o YW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisKKwkJCS8qIHVubGluayB0aGUg ZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mbyAqLworCQkJc3Ry ZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKKwkJfQor CX0KKworCS8qIENoZWNrIHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaWYg YW55LiAqLworCWFwcGx5X2Jnd29ya2VyX2NoZWNrX3N0YXR1cygpOworCisJLyogUHJvY2VzcyBh bnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KKwlw cm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVuZF9sc24pOworCisJcGdzdGF0X3Jl cG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKKworCXJlc2V0X2FwcGx5X2Vycm9yX2Nv bnRleHRfaW5mbygpOworfQogCiAvKgogICogTG9naWNhbCByZXBsaWNhdGlvbiBwcm90b2NvbCBt ZXNzYWdlIGRpc3BhdGNoZXIuCkBAIC0yNTExLDYgKzMwNTgsOCBAQCBhcHBseV9kaXNwYXRjaChT dHJpbmdJbmZvIHMpCiAJCQlicmVhazsKIAogCQljYXNlIExPR0lDQUxfUkVQX01TR19TVFJFQU1f U1RBUlQ6CisJCQkvKiBGSVhNRSA6IGxvZyBmb3IgZGVidWdnaW5nIGhlcmUuICovCisJCQllbG9n KExPRywgIkxPR0lDQUxfUkVQX01TR19TVFJFQU1fU1RBUlQiKTsKIAkJCWFwcGx5X2hhbmRsZV9z dHJlYW1fc3RhcnQocyk7CiAJCQlicmVhazsKIApAQCAtMjYxOCw2ICszMTY3LDEwIEBAIHN0b3Jl X2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbikKIHsKIAlGbHVzaFBvc2l0aW9u ICpmbHVzaHBvczsKIAorCS8qIFdlIG9ubHkgbmVlZCB0byBjb2xsZWN0IHRoZSBMU04gaW4gbWFp biBhcHBseSB3b3JrZXIgKi8KKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSkKKwkJcmV0dXJuOwor CiAJLyogTmVlZCB0byBkbyB0aGlzIGluIHBlcm1hbmVudCBjb250ZXh0ICovCiAJTWVtb3J5Q29u dGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CiAKQEAgLTI3OTQsNiArMzM0Nyw5IEBAIExvZ2lj YWxSZXBBcHBseUxvb3AoWExvZ1JlY1B0ciBsYXN0X3JlY2VpdmVkKQogCQkJQWNjZXB0SW52YWxp ZGF0aW9uTWVzc2FnZXMoKTsKIAkJCW1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24oKTsKIAorCQkJ LyogQ2hlY2sgdGhlIHN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBhbnkuICov CisJCQlhcHBseV9iZ3dvcmtlcl9jaGVja19zdGF0dXMoKTsKKwogCQkJLyogUHJvY2VzcyBhbnkg dGFibGUgc3luY2hyb25pemF0aW9uIGNoYW5nZXMuICovCiAJCQlwcm9jZXNzX3N5bmNpbmdfdGFi bGVzKGxhc3RfcmVjZWl2ZWQpOwogCQl9CkBAIC0zNjkxLDcgKzQyNDcsNyBAQCBBcHBseVdvcmtl ck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9ieV9uYW1lKG9y aWdpbm5hbWUsIHRydWUpOwogCQlpZiAoIU9pZElzVmFsaWQob3JpZ2luaWQpKQogCQkJb3JpZ2lu aWQgPSByZXBsb3JpZ2luX2NyZWF0ZShvcmlnaW5uYW1lKTsKLQkJcmVwbG9yaWdpbl9zZXNzaW9u X3NldHVwKG9yaWdpbmlkKTsKKwkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkLCB0 cnVlKTsKIAkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOwogCQlvcmlnaW5f c3RhcnRwb3MgPSByZXBsb3JpZ2luX3Nlc3Npb25fZ2V0X3Byb2dyZXNzKGZhbHNlKTsKIAkJQ29t bWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CkBAIC0zNzM4LDcgKzQyOTQsNyBAQCBBcHBseVdvcmtl ck1haW4oRGF0dW0gbWFpbl9hcmcpCiAKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwucHVibGljYXRp b25fbmFtZXMgPSBNeVN1YnNjcmlwdGlvbi0+cHVibGljYXRpb25zOwogCW9wdGlvbnMucHJvdG8u bG9naWNhbC5iaW5hcnkgPSBNeVN1YnNjcmlwdGlvbi0+YmluYXJ5OwotCW9wdGlvbnMucHJvdG8u bG9naWNhbC5zdHJlYW1pbmcgPSBNeVN1YnNjcmlwdGlvbi0+c3RyZWFtOworCW9wdGlvbnMucHJv dG8ubG9naWNhbC5zdHJlYW1pbmcgPSAoTXlTdWJzY3JpcHRpb24tPnN0cmVhbSAhPSBTVUJTVFJF QU1fT0ZGKTsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwudHdvcGhhc2UgPSBmYWxzZTsKIAogCWlm ICghYW1fdGFibGVzeW5jX3dvcmtlcigpKQpAQCAtMzg5Niw3ICs0NDUyLDggQEAgY2xlYXJfc3Vi c2NyaXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIgZmluaXNoX2xzbikKIAlYTG9nUmVjUHRyCW15 c2tpcGxzbiA9IE15U3Vic2NyaXB0aW9uLT5za2lwbHNuOwogCWJvb2wJCXN0YXJ0ZWRfdHggPSBm YWxzZTsKIAotCWlmIChsaWtlbHkoWExvZ1JlY1B0cklzSW52YWxpZChteXNraXBsc24pKSkKKwlp ZiAobGlrZWx5KFhMb2dSZWNQdHJJc0ludmFsaWQobXlza2lwbHNuKSkgfHwKKwkJYW1fYXBwbHlf Ymd3b3JrZXIoKSkKIAkJcmV0dXJuOwogCiAJaWYgKCFJc1RyYW5zYWN0aW9uU3RhdGUoKSkKQEAg LTQwMzIsMyArNDU4OSw1MzMgQEAgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKHZvaWQp CiAJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLnJlbW90ZV9hdHRudW0gPSAtMTsKIAlzZXRfYXBw bHlfZXJyb3JfY29udGV4dF94YWN0KEludmFsaWRUcmFuc2FjdGlvbklkLCBJbnZhbGlkWExvZ1Jl Y1B0cik7CiB9CisKKy8qIEFwcGx5IEJhY2tncm91bmQgV29ya2VyIG1haW4gbG9vcCAqLworc3Rh dGljIHZvaWQKK0xvZ2ljYWxBcHBseUJnd0xvb3Aoc2htX21xX2hhbmRsZSAqbXFoLCB2b2xhdGls ZSBBcHBseUJnd29ya2VyU2hhcmVkICpwc3QpCit7CisJc2htX21xX3Jlc3VsdAkJc2htcV9yZXM7 CisJUEdQUk9DCQkJCSpyZWdpc3RyYW50OworCUVycm9yQ29udGV4dENhbGxiYWNrIGVycmNhbGxi YWNrOworCVhMb2dSZWNQdHIJCQlsYXN0X3JlY2VpdmVkID0gSW52YWxpZFhMb2dSZWNQdHI7CisK KwlyZWdpc3RyYW50ID0gQmFja2VuZFBpZEdldFByb2MoTXlCZ3dvcmtlckVudHJ5LT5iZ3dfbm90 aWZ5X3BpZCk7CisJU2V0TGF0Y2goJnJlZ2lzdHJhbnQtPnByb2NMYXRjaCk7CisKKwkvKgorCSAq IFB1c2ggYXBwbHkgZXJyb3IgY29udGV4dCBjYWxsYmFjay4gRmllbGRzIHdpbGwgYmUgZmlsbGVk IGR1cmluZworCSAqIGFwcGx5aW5nIGEgY2hhbmdlLgorCSAqLworCWVycmNhbGxiYWNrLmNhbGxi YWNrID0gYXBwbHlfZXJyb3JfY2FsbGJhY2s7CisJZXJyY2FsbGJhY2sucHJldmlvdXMgPSBlcnJv cl9jb250ZXh0X3N0YWNrOworCWVycm9yX2NvbnRleHRfc3RhY2sgPSAmZXJyY2FsbGJhY2s7CisK Kwlmb3IgKDs7KQorCXsKKwkJdm9pZCAqZGF0YTsKKwkJU2l6ZSAgbGVuOworCQlTdHJpbmdJbmZv RGF0YSBzOworCQlNZW1vcnlDb250ZXh0CW9sZGN0eDsKKwkJWExvZ1JlY1B0cglzdGFydF9sc247 CisJCVhMb2dSZWNQdHIJZW5kX2xzbjsKKwkJVGltZXN0YW1wVHogc2VuZF90aW1lOworCisJCUNI RUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyogRW5zdXJlIHdlIGFyZSByZWFkaW5nIHRoZSBk YXRhIGludG8gb3VyIG1lbW9yeSBjb250ZXh0LiAqLworCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0 U3dpdGNoVG8oQXBwbHlNZXNzYWdlQ29udGV4dCk7CisKKwkJc2htcV9yZXMgPSBzaG1fbXFfcmVj ZWl2ZShtcWgsICZsZW4sICZkYXRhLCBmYWxzZSk7CisKKwkJaWYgKHNobXFfcmVzICE9IFNITV9N UV9TVUNDRVNTKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpF Q1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvc3QgY29ubmVj dGlvbiB0byB0aGUgbWFpbiBhcHBseSB3b3JrZXIiKSkpOworCisJCWlmIChsZW4gPT0gMCkKKwkJ eworCQkJZWxvZyhMT0csICJbQXBwbHkgQkdXICMldV0gZ290IHplcm8tbGVuZ3RoIG1lc3NhZ2Us IHN0b3BwaW5nIiwgcHN0LT5uKTsKKwkJCWJyZWFrOworCQl9CisKKwkJcy5jdXJzb3IgPSAwOwor CQlzLm1heGxlbiA9IC0xOworCQlzLmRhdGEgPSAoY2hhciAqKSBkYXRhOworCQlzLmxlbiA9IGxl bjsKKworCQkvKgorCQkgKiBXZSB1c2UgZmlyc3QgYnl0ZSBvZiBtZXNzYWdlIGZvciBhZGRpdGlv bmFsIGNvbW11bmljYXRpb24gYmV0d2VlbgorCQkgKiBtYWluIExvZ2ljYWwgcmVwbGljYXRpb24g d29ya2VyIGFuZCBhcHBseSBiZ3dvcmtlcnMsIHNvIGlmIGl0CisJCSAqIGRpZmZlcnMgZnJvbSAn dycsIHRoZW4gcHJvY2VzcyBpdCBmaXJzdC4KKwkJICovCisJCXN3aXRjaCAocHFfZ2V0bXNnYnl0 ZSgmcykpCisJCXsKKwkJCS8qIEVuZCBtZXNzYWdlIG9mIHN0cmVhbWluZyBjaHVuayAqLworCQkJ Y2FzZSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUT1A6CisJCQkJZWxvZyhMT0csICJbQXBwbHkg QkdXICMldV0gZW5kZWQgcHJvY2Vzc2luZyBzdHJlYW1pbmcgY2h1bmssIgorCQkJCQkJICAid2Fp dGluZyBvbiBzaG1fbXFfcmVjZWl2ZSIsIHBzdC0+bik7CisKKwkJCQlhcHBseV9iZ3dvcmtlcl9z ZXRfc3RhdGUoQVBQTFlfQkdXT1JLRVJfUkVBRFkpOworCisJCQkJU2V0TGF0Y2goJnJlZ2lzdHJh bnQtPnByb2NMYXRjaCk7CisKKwkJCQlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOwor CQkJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CisJCQkJY29udGlu dWU7CisJCQljYXNlICd3JzoKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJP UiwgInVuZXhwZWN0ZWQgbWVzc2FnZSIpOworCQkJCWJyZWFrOworCQl9CisKKwkJc3RhcnRfbHNu ID0gcHFfZ2V0bXNnaW50NjQoJnMpOworCQllbmRfbHNuID0gcHFfZ2V0bXNnaW50NjQoJnMpOwor CQlzZW5kX3RpbWUgPSBwcV9nZXRtc2dpbnQ2NCgmcyk7CisKKwkJaWYgKGxhc3RfcmVjZWl2ZWQg PCBzdGFydF9sc24pCisJCQlsYXN0X3JlY2VpdmVkID0gc3RhcnRfbHNuOworCisJCWlmIChsYXN0 X3JlY2VpdmVkIDwgZW5kX2xzbikKKwkJCWxhc3RfcmVjZWl2ZWQgPSBlbmRfbHNuOworCisJCS8q CisJCSAqIFRPIElNUFJPVkU6IERvIHdlIG5lZWQgdG8gZGlzcGxheSB0aGUgYmd3b3JrZXIncyBp bmZvcm1hdGlvbiBpbgorCQkgKiBwZ19zdGF0X3JlcGxpY2F0aW9uID8KKwkJICovCisJCVVwZGF0 ZVdvcmtlclN0YXRzKGxhc3RfcmVjZWl2ZWQsIHNlbmRfdGltZSwgZmFsc2UpOworCisJCWFwcGx5 X2Rpc3BhdGNoKCZzKTsKKworCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwkJeworCQkJQ29u ZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOworCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hV UCk7CisJCX0KKworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwkJTWVtb3J5Q29u dGV4dFJlc2V0KEFwcGx5TWVzc2FnZUNvbnRleHQpOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhUb3BNZW1vcnlDb250ZXh0KTsKKwlNZW1vcnlDb250ZXh0UmVzZXQoQXBwbHlDb250ZXh0 KTsKKworCS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLworCWVycm9yX2NvbnRleHRf c3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKKworCWVsb2coTE9HLCAiW0FwcGx5IEJHVyAj JXVdIGV4aXRpbmciLCBwc3QtPm4pOworCisJLyogU2lnbmFsIG1haW4gcHJvY2VzcyB0aGF0IHdl IGFyZSBkb25lLiAqLworCVNldExhdGNoKCZyZWdpc3RyYW50LT5wcm9jTGF0Y2gpOworfQorCisv KgorICogU2V0IHRoZSBleGl0IHN0YXRlIHNvIHRoYXQgdGhlIG1haW4gYXBwbHkgd29ya2VyIGNh biByZWFsaXplIHdlIGhhdmUKKyAqIHNodXRkb3duLgorICovCitzdGF0aWMgdm9pZAorQXBwbHlC Z3dTaHV0ZG93bihpbnQgY29kZSwgRGF0dW0gYXJnKQoreworCVNwaW5Mb2NrQWNxdWlyZSgmTXlQ YXJhbGxlbFN0YXRlLT5tdXRleCk7CisJTXlQYXJhbGxlbFN0YXRlLT5zdGF0ZSA9IEFQUExZX0JH V09SS0VSX0VYSVQ7CisJU3BpbkxvY2tSZWxlYXNlKCZNeVBhcmFsbGVsU3RhdGUtPm11dGV4KTsK KworCWRzbV9kZXRhY2goKGRzbV9zZWdtZW50ICopIERhdHVtR2V0UG9pbnRlcihhcmcpKTsKK30K KworLyoKKyAqIEFwcGx5IEJhY2tncm91bmQgV29ya2VyIGVudHJ5IHBvaW50CisgKi8KK3ZvaWQK K0FwcGx5Qmd3b3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQoreworCXZvbGF0aWxlIEFwcGx5Qmd3 b3JrZXJTaGFyZWQgKnBzdDsKKworCWRzbV9oYW5kbGUJCQloYW5kbGU7CisJZHNtX3NlZ21lbnQJ CQkqc2VnOworCXNobV90b2MJCQkJKnRvYzsKKwlzaG1fbXEJCQkJKm1xOworCXNobV9tcV9oYW5k bGUJCSptcWg7CisJTWVtb3J5Q29udGV4dAkJIG9sZGNvbnRleHQ7CisJUmVwT3JpZ2luSWQJCQlv cmlnaW5pZDsKKwlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFpbl9hcmcpOwor CWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOworCisJLyogQXR0YWNoIHRvIHNsb3QgKi8K Kwlsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2god29ya2VyX3Nsb3QpOworCisJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKFRvcE1lbW9yeUNvbnRleHQpOworCisJLyogTG9hZCB0aGUgc3Vic2NyaXB0aW9u IGludG8gcGVyc2lzdGVudCBtZW1vcnkgY29udGV4dC4gKi8KKwlBcHBseUNvbnRleHQgPSBBbGxv Y1NldENvbnRleHRDcmVhdGUoVG9wTWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJCQkgIkFwcGx5Q29u dGV4dCIsCisJCQkJCQkJCQkJIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCisJLyoKKwkgKiBJ bml0IHRoZSBBcHBseU1lc3NhZ2VDb250ZXh0IHdoaWNoIHdlIGNsZWFuIHVwIGFmdGVyIGVhY2gg cmVwbGljYXRpb24KKwkgKiBwcm90b2NvbCBtZXNzYWdlLgorCSAqLworCUFwcGx5TWVzc2FnZUNv bnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoQXBwbHlDb250ZXh0LAorCQkJCQkJCQkJCQkJ IkFwcGx5TWVzc2FnZUNvbnRleHQiLAorCQkJCQkJCQkJCQkJQUxMT0NTRVRfREVGQVVMVF9TSVpF Uyk7CisKKwkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcgKi8KKwlwcXNpZ25hbChTSUdIVVAsIFNp Z25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOworCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7CisJ QmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7CisKKwkvKgorCSAqIENvbm5lY3QgdG8g dGhlIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50LgorCSAqCisJICogVGhlIGJhY2tlbmQg dGhhdCByZWdpc3RlcmVkIHRoaXMgd29ya2VyIHBhc3NlZCB1cyB0aGUgSUQgb2YgYSBzaGFyZWQK KwkgKiBtZW1vcnkgc2VnbWVudCB0byB3aGljaCB3ZSBtdXN0IGF0dGFjaCBmb3IgZnVydGhlciBp bnN0cnVjdGlvbnMuICBJbgorCSAqIG9yZGVyIHRvIGF0dGFjaCB0byBkeW5hbWljIHNoYXJlZCBt ZW1vcnksIHdlIG5lZWQgYSByZXNvdXJjZSBvd25lci4KKwkgKiBPbmNlIHdlJ3ZlIG1hcHBlZCB0 aGUgc2VnbWVudCBpbiBvdXIgYWRkcmVzcyBzcGFjZSwgYXR0YWNoIHRvIHRoZSB0YWJsZQorCSAq IG9mIGNvbnRlbnRzIHNvIHdlIGNhbiBsb2NhdGUgdGhlIHZhcmlvdXMgZGF0YSBzdHJ1Y3R1cmVz IHdlJ2xsIG5lZWQgdG8KKwkgKiBmaW5kIHdpdGhpbiB0aGUgc2VnbWVudC4KKwkgKi8KKwlDdXJy ZW50UmVzb3VyY2VPd25lciA9IFJlc291cmNlT3duZXJDcmVhdGUoTlVMTCwgIkxvZ2ljYWwgYXBw bHkgd29ya2VyIik7CisJbWVtY3B5KCZoYW5kbGUsIE15Qmd3b3JrZXJFbnRyeS0+Ymd3X2V4dHJh LCBzaXplb2YoZHNtX2hhbmRsZSkpOworCXNlZyA9IGRzbV9hdHRhY2goaGFuZGxlKTsKKwlpZiAo c2VnID09IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpF Q1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygidW5hYmxlIHRvIG1h cCBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCIpKSk7CisJdG9jID0gc2htX3RvY19hdHRh Y2goUEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFHSUMsIGRzbV9zZWdtZW50X2FkZHJlc3Moc2VnKSk7 CisJaWYgKHRvYyA9PSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coImJhZCBt YWdpYyBudW1iZXIgaW4gZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQiKSkpOworCisJYmVm b3JlX3NobWVtX2V4aXQoQXBwbHlCZ3dTaHV0ZG93biwgUG9pbnRlckdldERhdHVtKHNlZykpOwor CisJLyogTG9vayB1cCB0aGUgcGFyYWxsZWwgc3RhdGUuICovCisJcHN0ID0gc2htX3RvY19sb29r dXAodG9jLCAwLCBmYWxzZSk7CisJTXlQYXJhbGxlbFN0YXRlID0gcHN0OworCisJLyoKKwkgKiBB dHRhY2ggdG8gdGhlIG1lc3NhZ2UgcXVldWUuCisJICovCisJbXEgPSBzaG1fdG9jX2xvb2t1cCh0 b2MsIDEsIGZhbHNlKTsKKwlzaG1fbXFfc2V0X3JlY2VpdmVyKG1xLCBNeVByb2MpOworCW1xaCA9 IHNobV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CisKKwkvKiBDb25uZWN0IHRvIG91ciBkYXRh YmFzZS4gKi8KKwlCYWNrZ3JvdW5kV29ya2VySW5pdGlhbGl6ZUNvbm5lY3Rpb25CeU9pZChNeUxv Z2ljYWxSZXBXb3JrZXItPmRiaWQsCisJCQkJCQkJCQkJCSAgTXlMb2dpY2FsUmVwV29ya2VyLT51 c2VyaWQsCisJCQkJCQkJCQkJCSAgMCk7CisKKwkvKgorCSAqIFNldCB0aGUgY2xpZW50IGVuY29k aW5nIHRvIHRoZSBkYXRhYmFzZSBlbmNvZGluZywgc2luY2UgdGhhdCBpcyB3aGF0CisJICogdGhl IGxlYWRlciB3aWxsIGV4cGVjdC4KKwkgKi8KKwlTZXRDbGllbnRFbmNvZGluZyhHZXREYXRhYmFz ZUVuY29kaW5nKCkpOworCisJc3RyZWFtX3hpZCA9IHBzdC0+c3RyZWFtX3hpZDsKKworCVN0YXJ0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhBcHBseUNvbnRleHQpOworCisJTXlTdWJzY3JpcHRpb24gPSBHZXRTdWJzY3JpcHRpb24oTXlM b2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgdHJ1ZSk7CisJaWYgKCFNeVN1YnNjcmlwdGlvbikKKwl7 CisJCWVyZXBvcnQoTE9HLAorCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkg d29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUgd2lsbCBub3QgIgorCQkJCQkJInN0YXJ0IGJlY2F1 c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgcmVtb3ZlZCBkdXJpbmcgc3RhcnR1cCIsCisJCQkJCQlN eUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkKSkpOworCQlwcm9jX2V4aXQoMCk7CisJfQorCisJTXlT dWJzY3JpcHRpb25WYWxpZCA9IHRydWU7CisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRl eHQpOworCisJLyogU2V0dXAgc3luY2hyb25vdXMgY29tbWl0IGFjY29yZGluZyB0byB0aGUgdXNl cidzIHdpc2hlcyAqLworCVNldENvbmZpZ09wdGlvbigic3luY2hyb25vdXNfY29tbWl0IiwgTXlT dWJzY3JpcHRpb24tPnN5bmNjb21taXQsCisJCQkJCVBHQ19CQUNLRU5ELCBQR0NfU19PVkVSUklE RSk7CisKKwkvKiBLZWVwIHVzIGluZm9ybWVkIGFib3V0IHN1YnNjcmlwdGlvbiBjaGFuZ2VzLiAq LworCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFNVQlNDUklQVElPTk9JRCwKKwkJCQkJ CQkJICBzdWJzY3JpcHRpb25fY2hhbmdlX2NiLAorCQkJCQkJCQkgIChEYXR1bSkgMCk7CisKKwlD b21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qIFNldHVwIHJlcGxpY2F0aW9uIG9yaWdp biB0cmFja2luZy4gKi8KKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCXNucHJpbnRmKG9y aWdpbm5hbWUsIHNpemVvZihvcmlnaW5uYW1lKSwgInBnXyV1IiwgTXlTdWJzY3JpcHRpb24tPm9p ZCk7CisJb3JpZ2luaWQgPSByZXBsb3JpZ2luX2J5X25hbWUob3JpZ2lubmFtZSwgdHJ1ZSk7CisJ aWYgKCFPaWRJc1ZhbGlkKG9yaWdpbmlkKSkKKwkJb3JpZ2luaWQgPSByZXBsb3JpZ2luX2NyZWF0 ZShvcmlnaW5uYW1lKTsKKworCS8qCisJICogVGhlIGFwcGx5IGJnd29ya2VyIGRvbid0IG5lZWQg dG8gbW9ub3BvbGl6ZSB0aGlzIHJlcGxpY2F0aW9uIG9yaWdpbgorCSAqIHdoaWNoIHdhcyBhbHJl YWR5IGFjcXVpcmVkIGJ5IGl0cyBsZWFkZXIgcHJvY2Vzcy4KKwkgKi8KKwlyZXBsb3JpZ2luX3Nl c3Npb25fc2V0dXAob3JpZ2luaWQsIGZhbHNlKTsKKwlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2lu ID0gb3JpZ2luaWQ7CisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKgorCSAqIEFs bG9jYXRlIHRoZSBvcmlnaW4gbmFtZSBpbiBsb25nLWxpdmVkIGNvbnRleHQgZm9yIGVycm9yIGNv bnRleHQKKwkgKiBtZXNzYWdlLgorCSAqLworCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5vcmln aW5fbmFtZSA9IE1lbW9yeUNvbnRleHRTdHJkdXAoQXBwbHlDb250ZXh0LAorCQkJCQkJCQkJCQkJ CQkJICAgb3JpZ2lubmFtZSk7CisKKwkvKgorCSAqIEluZGljYXRlIHRoYXQgd2UncmUgZnVsbHkg aW5pdGlhbGl6ZWQgYW5kIHJlYWR5IHRvIGJlZ2luIHRoZSBtYWluIHBhcnQKKwkgKiBvZiB0aGUg YXBwbHkgb3BlcmF0aW9uLgorCSAqLworCWFwcGx5X2Jnd29ya2VyX3NldF9zdGF0ZShBUFBMWV9C R1dPUktFUl9BVFRBQ0hFRCk7CisKKwllbG9nKExPRywgIltBcHBseSBCR1cgIyV1XSBzdGFydGVk IiwgcHN0LT5uKTsKKworCVBHX1RSWSgpOworCXsKKwkJTG9naWNhbEFwcGx5Qmd3TG9vcChtcWgs IHBzdCk7CisJfQorCVBHX0NBVENIKCk7CisJeworCQkvKgorCQkgKiBSZXBvcnQgdGhlIHdvcmtl ciBmYWlsZWQgd2hpbGUgYXBwbHlpbmcgc3RyZWFtaW5nIHRyYW5zYWN0aW9uCisJCSAqIGNoYW5n ZXMuIEFib3J0IHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIHNvIHRoYXQgdGhlIHN0YXRzIG1lc3Nh Z2UgaXMKKwkJICogc2VudCBpbiBhbiBpZGxlIHN0YXRlLgorCQkgKi8KKwkJQWJvcnRPdXRPZkFu eVRyYW5zYWN0aW9uKCk7CisJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vi c2NyaXB0aW9uLT5vaWQsIGZhbHNlKTsKKworCQlQR19SRV9USFJPVygpOworCX0KKwlQR19FTkRf VFJZKCk7CisKKwkvKgorCSAqIFdlJ3JlIGRvbmUuICBFeHBsaWNpdGx5IGRldGFjaCB0aGUgc2hh cmVkIG1lbW9yeSBzZWdtZW50IHNvIHRoYXQgd2UKKwkgKiBkb24ndCBnZXQgYSByZXNvdXJjZSBs ZWFrIHdhcm5pbmcgYXQgY29tbWl0IHRpbWUuICBUaGlzIHdpbGwgZmlyZSBhbnkKKwkgKiBvbl9k c21fZGV0YWNoIGNhbGxiYWNrcyB3ZSd2ZSByZWdpc3RlcmVkLCBhcyB3ZWxsLiAgT25jZSB0aGF0 J3MgZG9uZSwKKwkgKiB3ZSBjYW4gZ28gYWhlYWQgYW5kIGV4aXQuCisJICovCisJZHNtX2RldGFj aChzZWcpOworCXByb2NfZXhpdCgwKTsKK30KKworLyoKKyAqIFNldCB1cCBhIGR5bmFtaWMgc2hh cmVkIG1lbW9yeSBzZWdtZW50LgorICoKKyAqIFdlIHNldCB1cCBhIGNvbnRyb2wgcmVnaW9uIHRo YXQgY29udGFpbnMgYSBBcHBseUJnd29ya2VyU2hhcmVkLAorICogcGx1cyBvbmUgcmVnaW9uIHBl ciBtZXNzYWdlIHF1ZXVlLiBUaGVyZSBhcmUgYXMgbWFueSBtZXNzYWdlIHF1ZXVlcyBhcworICog dGhlIG51bWJlciBvZiB3b3JrZXJzLgorICovCitzdGF0aWMgdm9pZAorYXBwbHlfYmd3b3JrZXJf c2V0dXBfZHNtKFdvcmtlclN0YXRlICp3c3RhdGUpCit7CisJc2htX3RvY19lc3RpbWF0b3IJIGU7 CisJaW50CQkJCQkgdG9jX2tleSA9IDA7CisJU2l6ZQkJCQkgc2Vnc2l6ZTsKKwlkc21fc2VnbWVu dAkJCSpzZWc7CisJc2htX3RvYwkJCQkqdG9jOworCUFwcGx5Qmd3b3JrZXJTaGFyZWQJCSpwc3Q7 CisJc2htX21xCQkJCSptcTsKKwlpbnQ2NAkJCQkgcXVldWVfc2l6ZSA9IDE2MDAwMDAwMDsgLyog MTYgTUIgZm9yIG5vdyAqLworCisJLyoKKwkgKiBFc3RpbWF0ZSBob3cgbXVjaCBzaGFyZWQgbWVt b3J5IHdlIG5lZWQuCisJICoKKwkgKiBCZWNhdXNlIHRoZSBUT0MgbWFjaGluZXJ5IG1heSBjaG9v c2UgdG8gaW5zZXJ0IHBhZGRpbmcgb2Ygb2RkbHktc2l6ZWQKKwkgKiByZXF1ZXN0cywgd2UgbXVz dCBlc3RpbWF0ZSBlYWNoIGNodW5rIHNlcGFyYXRlbHkuCisJICoKKwkgKiBXZSBuZWVkIG9uZSBr ZXkgdG8gcmVnaXN0ZXIgdGhlIGxvY2F0aW9uIG9mIHRoZSBoZWFkZXIsIGFuZCB3ZSBuZWVkCisJ ICogYW5vdGhlciBrZXkgdG8gdHJhY2sgdGhlIGxvY2F0aW9uIG9mIHRoZSBtZXNzYWdlIHF1ZXVl LgorCSAqLworCXNobV90b2NfaW5pdGlhbGl6ZV9lc3RpbWF0b3IoJmUpOworCXNobV90b2NfZXN0 aW1hdGVfY2h1bmsoJmUsIHNpemVvZihBcHBseUJnd29ya2VyU2hhcmVkKSk7CisJc2htX3RvY19l c3RpbWF0ZV9jaHVuaygmZSwgKFNpemUpIHF1ZXVlX3NpemUpOworCisJc2htX3RvY19lc3RpbWF0 ZV9rZXlzKCZlLCAxICsgMSk7CisJc2Vnc2l6ZSA9IHNobV90b2NfZXN0aW1hdGUoJmUpOworCisJ LyogQ3JlYXRlIHRoZSBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgYW5kIGVzdGFibGlzaCBhIHRhYmxl IG9mIGNvbnRlbnRzLiAqLworCXNlZyA9IGRzbV9jcmVhdGUoc2htX3RvY19lc3RpbWF0ZSgmZSks IDApOworCXRvYyA9IHNobV90b2NfY3JlYXRlKFBHX0xPR0lDQUxfQVBQTFlfU0hNX01BR0lDLCBk c21fc2VnbWVudF9hZGRyZXNzKHNlZyksCisJCQkJCQkgc2Vnc2l6ZSk7CisKKwkvKiBTZXQgdXAg dGhlIGhlYWRlciByZWdpb24uICovCisJcHN0ID0gc2htX3RvY19hbGxvY2F0ZSh0b2MsIHNpemVv ZihBcHBseUJnd29ya2VyU2hhcmVkKSk7CisJU3BpbkxvY2tJbml0KCZwc3QtPm11dGV4KTsKKwlw c3QtPnN0YXRlID0gQVBQTFlfQkdXT1JLRVJfQlVTWTsKKwlwc3QtPnN0cmVhbV94aWQgPSBzdHJl YW1feGlkOworCXBzdC0+biA9IGxpc3RfbGVuZ3RoKEFwcGx5V29ya2Vyc0xpc3QpICsgMTsKKwor CXNobV90b2NfaW5zZXJ0KHRvYywgdG9jX2tleSsrLCBwc3QpOworCisJLyogU2V0IHVwIG9uZSBt ZXNzYWdlIHF1ZXVlIHBlciB3b3JrZXIsIHBsdXMgb25lLiAqLworCW1xID0gc2htX21xX2NyZWF0 ZShzaG1fdG9jX2FsbG9jYXRlKHRvYywgKFNpemUpIHF1ZXVlX3NpemUpLAorCQkJCQkJKFNpemUp IHF1ZXVlX3NpemUpOworCXNobV90b2NfaW5zZXJ0KHRvYywgdG9jX2tleSsrLCBtcSk7CisJc2ht X21xX3NldF9zZW5kZXIobXEsIE15UHJvYyk7CisKKwkvKiBBdHRhY2ggdGhlIHF1ZXVlcy4gKi8K Kwl3c3RhdGUtPm1xX2hhbmRsZSA9IHNobV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CisKKwkv KiBSZXR1cm4gcmVzdWx0cyB0byBjYWxsZXIuICovCisJd3N0YXRlLT5kc21fc2VnID0gc2VnOwor CXdzdGF0ZS0+cHN0YXRlID0gcHN0OworfQorCisvKgorICogU3RhcnQgYXBwbHkgd29ya2VyIGJh Y2tncm91bmQgd29ya2VyIHByb2Nlc3MgYW5kIGFsbG9jYXRlIHNoYXJlZCBtZW1vcnkgZm9yCisg KiBpdC4KKyAqLworc3RhdGljIFdvcmtlclN0YXRlICoKK2FwcGx5X2Jnd29ya2VyX3NldHVwKHZv aWQpCit7CisJTWVtb3J5Q29udGV4dAkJb2xkY29udGV4dDsKKwlib29sCQkJCWxhdW5jaGVkOwor CVdvcmtlclN0YXRlCQkgICAqd3N0YXRlOworCisJZWxvZyhMT0csICJzZXR0aW5nIHVwIGFwcGx5 IHdvcmtlciAjJXUiLCBsaXN0X2xlbmd0aChBcHBseVdvcmtlcnNMaXN0KSArIDEpOworCisJb2xk Y29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJd3N0YXRl ID0gKFdvcmtlclN0YXRlICopIHBhbGxvYzAoc2l6ZW9mKFdvcmtlclN0YXRlKSk7CisKKwkvKiBT ZXR1cCBzaGFyZWQgbWVtb3J5ICovCisJYXBwbHlfYmd3b3JrZXJfc2V0dXBfZHNtKHdzdGF0ZSk7 CisKKwlsYXVuY2hlZCA9IGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChNeUxvZ2ljYWxSZXBXb3Jr ZXItPmRiaWQsCisJCQkJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm9pZCwKKwkJCQkJCQkJCQlNeVN1 YnNjcmlwdGlvbi0+bmFtZSwKKwkJCQkJCQkJCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnVzZXJpZCwK KwkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCWRzbV9zZWdtZW50X2hhbmRsZSh3c3Rh dGUtPmRzbV9zZWcpKTsKKworCWlmIChsYXVuY2hlZCkKKwl7CisJCS8qIFdhaXQgZm9yIHdvcmtl ciB0byBhdHRhY2guICovCisJCWFwcGx5X2Jnd29ya2VyX3dhaXRfZm9yKHdzdGF0ZSwgQVBQTFlf QkdXT1JLRVJfQVRUQUNIRUQpOworCisJCUFwcGx5V29ya2Vyc0xpc3QgPSBsYXBwZW5kKEFwcGx5 V29ya2Vyc0xpc3QsIHdzdGF0ZSk7CisJfQorCWVsc2UKKwl7CisJCXBmcmVlKHdzdGF0ZSk7CisJ CXdzdGF0ZSA9IE5VTEw7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQp OworCisJcmV0dXJuIHdzdGF0ZTsKK30KKworLyoKKyAqIFNlbmQgdGhlIGRhdGEgdG8gdGhlIHNw ZWNpZmllZCBhcHBseSBiZ3dvcmtlciB2aWEgc2hhcmVkLW1lbW9yeSBxdWV1ZS4KKyAqLworc3Rh dGljIHZvaWQKK2FwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YShXb3JrZXJTdGF0ZSAqd3N0YXRlLCBT aXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSkKK3sKKwlzaG1fbXFfcmVzdWx0IHJlc3VsdDsK KworCXJlc3VsdCA9IHNobV9tcV9zZW5kKHdzdGF0ZS0+bXFfaGFuZGxlLCBuYnl0ZXMsIGRhdGEs IGZhbHNlLCB0cnVlKTsKKworCWlmIChyZXN1bHQgIT0gU0hNX01RX1NVQ0NFU1MpCisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lU RV9TVEFURSksCisJCQkJIGVycm1zZygiY291bGQgbm90IHNlbmQgdHVwbGVzIHRvIHNoYXJlZC1t ZW1vcnkgcXVldWUiKSkpOworfQorCisvKgorICogV2FpdCB1bnRpbCB0aGUgc3RhdGUgb2YgYXBw bHkgYmFja2dyb3VuZCB3b3JrZXIgcmVhY2hlcyB0aGUgJ3dhaXRfZm9yX3N0YXRlJworICovCitz dGF0aWMgdm9pZAorYXBwbHlfYmd3b3JrZXJfd2FpdF9mb3IoV29ya2VyU3RhdGUgKndzdGF0ZSwg Y2hhciB3YWl0X2Zvcl9zdGF0ZSkKK3sKKwlmb3IgKDs7KQorCXsKKwkJY2hhciBzdGF0dXM7CisK KwkJU3BpbkxvY2tBY3F1aXJlKCZ3c3RhdGUtPnBzdGF0ZS0+bXV0ZXgpOworCQlzdGF0dXMgPSB3 c3RhdGUtPnBzdGF0ZS0+c3RhdGU7CisJCVNwaW5Mb2NrUmVsZWFzZSgmd3N0YXRlLT5wc3RhdGUt Pm11dGV4KTsKKworCQkvKiBEb25lIGlmIGFscmVhZHkgaW4gY29ycmVjdCBzdGF0ZS4gKi8KKwkJ aWYgKHN0YXR1cyA9PSB3YWl0X2Zvcl9zdGF0ZSkKKwkJCWJyZWFrOworCisJCS8qIElmIGFueSB3 b3JrZXJzIChvciB0aGUgcG9zdG1hc3RlcikgaGF2ZSBkaWVkLCB3ZSBoYXZlIGZhaWxlZC4gKi8K KwkJaWYgKHN0YXR1cyA9PSBBUFBMWV9CR1dPUktFUl9FWElUKQorCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSks CisJCQkJCSBlcnJtc2coIkJhY2tncm91bmQgd29ya2VyICV1IGZhaWxlZCB0byBhcHBseSB0cmFu c2FjdGlvbiAldSIsCisJCQkJCQkJd3N0YXRlLT5wc3RhdGUtPm4sIHdzdGF0ZS0+cHN0YXRlLT5z dHJlYW1feGlkKSkpOworCisJCS8qIFdhaXQgdG8gYmUgc2lnbmFsbGVkLiAqLworCQlXYWl0TGF0 Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJCQkJ CQlXQUlUX0VWRU5UX0xPR0lDQUxfQVBQTFlfV09SS0VSX1NUQVRFX0NIQU5HRSk7CisKKwkJLyog UmVzZXQgdGhlIGxhdGNoIHNvIHdlIGRvbid0IHNwaW4uICovCisJCVJlc2V0TGF0Y2goTXlMYXRj aCk7CisKKwkJLyogQW4gaW50ZXJydXB0IG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdlIHdlcmUg d2FpdGluZy4gKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwl9Cit9CisKKy8qCisgKiBD aGVjayB0aGUgc3RhdHVzIG9mIHdvcmtlcnMgYW5kIHJlcG9ydCBhbiBlcnJvciBpZiBhbnkgYXBw bHkgYmFja2dyb3VuZAorICogd29ya2VyIGhhcyBleGl0ZWQgdW5leHBlY3RlZGx5LgorICoKKyAq IEV4aXQgaWYgYW55IHJlbGF0aW9uIGlzIG5vdCBpbiB0aGUgUkVBRFkgc3RhdGUgYW5kIGlmIGFu eSB3b3JrZXIgaXMgaGFuZGxpbmcKKyAqIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gYXQgdGhl IHNhbWUgdGltZS4gQmVjYXVzZSBmb3Igc3RyZWFtaW5nCisgKiB0cmFuc2FjdGlvbnMgdGhhdCBp cyBiZWluZyBhcHBsaWVkIGluIGFwcGx5IGJnd29ya2VyLCB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRo ZXIgdG8KKyAqIGFwcGx5IHRoZSBjaGFuZ2UgZm9yIGEgcmVsYXRpb24gdGhhdCBpcyBub3QgaW4g dGhlIFJFQURZIHN0YXRlIChzZWUKKyAqIHNob3VsZF9hcHBseV9jaGFuZ2VzX2Zvcl9yZWwpIGFz IHdlIHdvbid0IGtub3cgcmVtb3RlX2ZpbmFsX2xzbiBieSB0aGF0CisgKiB0aW1lLgorICovCitz dGF0aWMgdm9pZAorYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKHZvaWQpCit7CisJTGlzdENl bGwgKmxjOworCisJaWYgKGFtX2FwcGx5X2Jnd29ya2VyKCkgfHwgTXlTdWJzY3JpcHRpb24tPnN0 cmVhbSAhPSBTVUJTVFJFQU1fQVBQTFkpCisJCXJldHVybjsKKworCWZvcmVhY2gobGMsIEFwcGx5 V29ya2Vyc0xpc3QpCisJeworCQlXb3JrZXJTdGF0ZSAqd3N0YXRlID0gKFdvcmtlclN0YXRlICop IGxmaXJzdChsYyk7CisKKwkJLyoKKwkJICogV2UgZG9uJ3QgbG9jayBoZXJlIGFzIGluIHRoZSB3 b3JzdCBjYXNlIHdlIHdpbGwganVzdCBkZXRlY3QgdGhlCisJCSAqIGZhaWx1cmUgb2Ygd29ya2Vy IGEgYml0IGxhdGVyLgorCQkgKi8KKwkJaWYgKHdzdGF0ZS0+cHN0YXRlLT5zdGF0ZSA9PSBBUFBM WV9CR1dPUktFUl9FWElUKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09E RV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coIkJhY2tn cm91bmQgd29ya2VyICV1IGV4aXRlZCB1bmV4cGVjdGVkbHkiLAorCQkJCQkJCXdzdGF0ZS0+cHN0 YXRlLT5uKSkpOworCX0KKworCWlmIChsaXN0X2xlbmd0aChBcHBseVdvcmtlcnNJZGxlTGlzdCkg IT0gbGlzdF9sZW5ndGgoQXBwbHlXb3JrZXJzTGlzdCkgJiYKKwkJIUFsbFRhYmxlc3luY3NSZWFk eSgpKQorCXsKKwkJZXJlcG9ydChMT0csCisJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlv biBhcHBseSB3b3JrZXJzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgcmVzdGFydCIsCisJ CQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSksCisJCQkJIGVycmRldGFpbCgiQ2Fubm90IGhhbmRs ZSBzdHJlYW1lZCByZXBsaWNhdGlvbiB0cmFuc2FjdGlvbiBieSBhcHBseSAiCisJCQkJCQkgICAi Ymd3b3JrZXJzIHVudGlsIGFsbCB0YWJsZXMgYXJlIHN5bmNocm9uaXplZCIpKSk7CisKKwkJcHJv Y19leGl0KDApOworCX0KK30KKworLyogU2V0IHRoZSBzdGF0ZSBvZiBhcHBseSBiYWNrZ3JvdW5k IHdvcmtlciAqLworc3RhdGljIHZvaWQKK2FwcGx5X2Jnd29ya2VyX3NldF9zdGF0ZShjaGFyIHN0 YXRlKQoreworCWlmICghYW1fYXBwbHlfYmd3b3JrZXIoKSkKKwkJcmV0dXJuOworCisJZWxvZyhM T0csICJbQXBwbHkgQkdXICMldV0gc2V0IHN0YXRlIHRvICVkIiwgTXlQYXJhbGxlbFN0YXRlLT5u LCBzdGF0ZSk7CisKKwlTcGluTG9ja0FjcXVpcmUoJk15UGFyYWxsZWxTdGF0ZS0+bXV0ZXgpOwor CU15UGFyYWxsZWxTdGF0ZS0+c3RhdGUgPSBzdGF0ZTsKKwlTcGluTG9ja1JlbGVhc2UoJk15UGFy YWxsZWxTdGF0ZS0+bXV0ZXgpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVu dC5jCmluZGV4IDg3YzE1YjljNmYuLmJhNzgxZTZmMDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS93YWl0X2V2ZW50LmMKQEAgLTM4OCw2ICszODgsOSBAQCBwZ3N0YXRfZ2V0X3dhaXRfaXBj KFdhaXRFdmVudElQQyB3KQogCQljYXNlIFdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfUkVJ TlNFUlQ6CiAJCQlldmVudF9uYW1lID0gIkhhc2hHcm93QnVja2V0c1JlaW5zZXJ0IjsKIAkJCWJy ZWFrOworCQljYXNlIFdBSVRfRVZFTlRfTE9HSUNBTF9BUFBMWV9XT1JLRVJfU1RBVEVfQ0hBTkdF OgorCQkJZXZlbnRfbmFtZSA9ICJMb2dpY2FsQXBwbHlXb3JrZXJTdGF0ZUNoYW5nZSI7CisJCQli cmVhazsKIAkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19EQVRBOgogCQkJZXZlbnRfbmFt ZSA9ICJMb2dpY2FsU3luY0RhdGEiOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA3Y2M5Yzcy ZTQ5Li42ZjhiMzBhYmIwIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisr KyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ0NTAsNyArNDQ1MCw3IEBAIGdldFN1 YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAx NDAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIHMuc3Vic3RyZWFtLFxuIik7 CiAJZWxzZQotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBmYWxzZSBBUyBzdWJzdHJl YW0sXG4iKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgJ2YnIEFTIHN1YnN0cmVh bSxcbiIpOwogCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQogCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxdWVyeSwKQEAgLTQ1ODAsOCArNDU4MCwxMCBAQCBkdW1wU3Vic2NyaXB0 aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFN1YnNjcmlwdGlvbkluZm8gKnN1YmluZm8pCiAJaWYg KHN0cmNtcChzdWJpbmZvLT5zdWJiaW5hcnksICJ0IikgPT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIocXVlcnksICIsIGJpbmFyeSA9IHRydWUiKTsKIAotCWlmIChzdHJjbXAoc3ViaW5mby0+ c3Vic3RyZWFtLCAiZiIpICE9IDApCisJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJzdHJlYW0sICJ0 IikgPT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIHN0cmVhbWluZyA9IG9u Iik7CisJZWxzZSBpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgImEiKSA9PSAwKQorCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgc3RyZWFtaW5nID0gYXBwbHkiKTsKIAogCWlm IChzdHJjbXAoc3ViaW5mby0+c3VidHdvcGhhc2VzdGF0ZSwgdHdvX3BoYXNlX2Rpc2FibGVkKSAh PSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgdHdvX3BoYXNlID0gb24iKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCmluZGV4IGQxMjYwZjU5MGMuLjliMzk0 YTQ1ZmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgK KysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaApAQCAtNjgsNyArNjgs OCBAQCBDQVRBTE9HKHBnX3N1YnNjcmlwdGlvbiw2MTAwLFN1YnNjcmlwdGlvblJlbGF0aW9uSWQp IEJLSV9TSEFSRURfUkVMQVRJT04gQktJX1JPVwogCWJvb2wJCXN1YmJpbmFyeTsJCS8qIFRydWUg aWYgdGhlIHN1YnNjcmlwdGlvbiB3YW50cyB0aGUKIAkJCQkJCQkJICogcHVibGlzaGVyIHRvIHNl bmQgZGF0YSBpbiBiaW5hcnkgKi8KIAotCWJvb2wJCXN1YnN0cmVhbTsJCS8qIFN0cmVhbSBpbi1w cm9ncmVzcyB0cmFuc2FjdGlvbnMuICovCisJY2hhcgkJc3Vic3RyZWFtOwkJLyogU3RyZWFtIGlu LXByb2dyZXNzIHRyYW5zYWN0aW9ucy4KKwkJCQkJCQkJICogU2VlIFNVQlNUUkVBTV94eHggY29u c3RhbnRzLiAqLwogCiAJY2hhcgkJc3VidHdvcGhhc2VzdGF0ZTsJLyogU3RyZWFtIHR3by1waGFz ZSB0cmFuc2FjdGlvbnMgKi8KIApAQCAtMTA5LDcgKzExMCw3IEBAIHR5cGVkZWYgc3RydWN0IFN1 YnNjcmlwdGlvbgogCWJvb2wJCWVuYWJsZWQ7CQkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlw dGlvbiBpcyBlbmFibGVkICovCiAJYm9vbAkJYmluYXJ5OwkJCS8qIEluZGljYXRlcyBpZiB0aGUg c3Vic2NyaXB0aW9uIHdhbnRzIGRhdGEgaW4KIAkJCQkJCQkJICogYmluYXJ5IGZvcm1hdCAqLwot CWJvb2wJCXN0cmVhbTsJCQkvKiBBbGxvdyBzdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rp b25zLiAqLworCWNoYXIJCXN0cmVhbTsJCQkvKiBBbGxvdyBzdHJlYW1pbmcgaW4tcHJvZ3Jlc3Mg dHJhbnNhY3Rpb25zLiAqLwogCWNoYXIJCXR3b3BoYXNlc3RhdGU7CS8qIEFsbG93IHN0cmVhbWlu ZyB0d28tcGhhc2UgdHJhbnNhY3Rpb25zICovCiAJYm9vbAkJZGlzYWJsZW9uZXJyOwkvKiBJbmRp Y2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91bGQgYmUKIAkJCQkJCQkJICogYXV0b21hdGlj YWxseSBkaXNhYmxlZCBpZiBhIHdvcmtlciBlcnJvcgpAQCAtMTIwLDYgKzEyMSwxOCBAQCB0eXBl ZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAlMaXN0CSAgICpwdWJsaWNhdGlvbnM7CS8qIExpc3Qg b2YgcHVibGljYXRpb24gbmFtZXMgdG8gc3Vic2NyaWJlIHRvICovCiB9IFN1YnNjcmlwdGlvbjsK IAorLyogRGlzYWxsb3cgc3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyAqLworI2Rl ZmluZSBTVUJTVFJFQU1fT0ZGCSdmJworCisvKgorICogU3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBh cmUgd3JpdHRlbiB0byBhIHRlbXBvcmFyeSBmaWxlIGFuZCBhcHBsaWVkIG9ubHkKKyAqIGFmdGVy IHRoZSB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gdXBzdHJlYW0uCisgKi8KKyNkZWZpbmUg U1VCU1RSRUFNX09OCSd0JworCisvKiBTdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGFyZSBhcHBsaWVk IGltbWVkaWF0ZWx5IHZpYSBhIGJhY2tncm91bmQgd29ya2VyICovCisjZGVmaW5lIFNVQlNUUkVB TV9BUFBMWQknYScKKwogZXh0ZXJuIFN1YnNjcmlwdGlvbiAqR2V0U3Vic2NyaXB0aW9uKE9pZCBz dWJpZCwgYm9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiB2b2lkIEZyZWVTdWJzY3JpcHRpb24oU3Vi c2NyaXB0aW9uICpzdWIpOwogZXh0ZXJuIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbihPaWQgc3Vi aWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5o IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCmluZGV4IGNkMWI2ZThh ZmMuLjZhMWFmN2YxM2MgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWx3b3JrZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgK QEAgLTEzLDYgKzEzLDcgQEAKICNkZWZpbmUgTE9HSUNBTFdPUktFUl9ICiAKIGV4dGVybiB2b2lk IEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZyk7CitleHRlcm4gdm9pZCBBcHBseUJnd29y a2VyTWFpbihEYXR1bSBtYWluX2FyZyk7CiAKIGV4dGVybiBib29sIElzTG9naWNhbFdvcmtlcih2 b2lkKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmggYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaAppbmRleCAyZDFiNWU1YzI4Li5iMjcwNDM0 ODUzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaAorKysgYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaApAQCAtNTMsNyArNTMsNyBAQCBleHRlcm4g WExvZ1JlY1B0ciByZXBsb3JpZ2luX2dldF9wcm9ncmVzcyhSZXBPcmlnaW5JZCBub2RlLCBib29s IGZsdXNoKTsKIAogZXh0ZXJuIHZvaWQgcmVwbG9yaWdpbl9zZXNzaW9uX2FkdmFuY2UoWExvZ1Jl Y1B0ciByZW1vdGVfY29tbWl0LAogCQkJCQkJCQkJICAgWExvZ1JlY1B0ciBsb2NhbF9jb21taXQp OwotZXh0ZXJuIHZvaWQgcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUp OworZXh0ZXJuIHZvaWQgcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUs IGJvb2wgYWNxdWlyZSk7CiBleHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fcmVzZXQodm9p ZCk7CiBleHRlcm4gWExvZ1JlY1B0ciByZXBsb3JpZ2luX3Nlc3Npb25fZ2V0X3Byb2dyZXNzKGJv b2wgZmx1c2gpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJf aW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmlu ZGV4IDkwMTg0NWFiYzIuLjY2MTNlMzIwNzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dv cmtlcl9pbnRlcm5hbC5oCkBAIC02MCw2ICs2MCw4IEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxS ZXBXb3JrZXIKIAkgKi8KIAlGaWxlU2V0ICAgICpzdHJlYW1fZmlsZXNldDsKIAorCWJvb2wJCXN1 YndvcmtlcjsKKwogCS8qIFN0YXRzLiAqLwogCVhMb2dSZWNQdHIJbGFzdF9sc247CiAJVGltZXN0 YW1wVHogbGFzdF9zZW5kX3RpbWU7CkBAIC04NCw4ICs4Niw5IEBAIGV4dGVybiB2b2lkIGxvZ2lj YWxyZXBfd29ya2VyX2F0dGFjaChpbnQgc2xvdCk7CiBleHRlcm4gTG9naWNhbFJlcFdvcmtlciAq bG9naWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQkJ CWJvb2wgb25seV9ydW5uaW5nKTsKIGV4dGVybiBMaXN0ICpsb2dpY2FscmVwX3dvcmtlcnNfZmlu ZChPaWQgc3ViaWQsIGJvb2wgb25seV9ydW5uaW5nKTsKLWV4dGVybiB2b2lkIGxvZ2ljYWxyZXBf d29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLAot CQkJCQkJCQkJIE9pZCB1c2VyaWQsIE9pZCByZWxpZCk7CitleHRlcm4gYm9vbCBsb2dpY2FscmVw X3dvcmtlcl9sYXVuY2goT2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwK KwkJCQkJCQkJCSBPaWQgdXNlcmlkLCBPaWQgcmVsaWQsCisJCQkJCQkJCQkgZHNtX2hhbmRsZSBz dWJ3b3JrZXJfZHNtKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1 YmlkLCBPaWQgcmVsaWQpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwKE9p ZCBzdWJpZCwgT2lkIHJlbGlkKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3dha2V1 cF9wdHIoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKTsKQEAgLTEwOSw0ICsxMTIsMTAgQEAgYW1f dGFibGVzeW5jX3dvcmtlcih2b2lkKQogCXJldHVybiBPaWRJc1ZhbGlkKE15TG9naWNhbFJlcFdv cmtlci0+cmVsaWQpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wKK2FtX2FwcGx5X2Jnd29ya2Vy KHZvaWQpCit7CisJcmV0dXJuIE15TG9naWNhbFJlcFdvcmtlci0+c3Vid29ya2VyOworfQorCiAj ZW5kaWYJCQkJCQkJLyogV09SS0VSX0lOVEVSTkFMX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaApp bmRleCBiNTc4ZTJlYzc1Li5jMmQyYTExNGQ3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGls cy93YWl0X2V2ZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCkBAIC0x MDUsNiArMTA1LDcgQEAgdHlwZWRlZiBlbnVtCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VU U19BTExPQ0FURSwKIAlXQUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX0VMRUNULAogCVdBSVRf RVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfUkVJTlNFUlQsCisJV0FJVF9FVkVOVF9MT0dJQ0FMX0FQ UExZX1dPUktFUl9TVEFURV9DSEFOR0UsCiAJV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfREFUQSwK IAlXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19TVEFURV9DSEFOR0UsCiAJV0FJVF9FVkVOVF9NUV9J TlRFUk5BTCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0 aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dAppbmRl eCA3ZmNmYWQxNTkxLi5mNzY5ODM1YWYwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z dWJzY3JpcHRpb24ub3V0CkBAIC0xOTcsNyArMTk3LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogRFJPUCBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViOwogLS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0IGJlIGJvb2xlYW4KIENS RUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFs c2UsIHN0cmVhbWluZyA9IGZvbyk7Ci1FUlJPUjogIHN0cmVhbWluZyByZXF1aXJlcyBhIEJvb2xl YW4gdmFsdWUKK0VSUk9SOiAgc3RyZWFtaW5nIHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1ZSBvciAi YXBwbHkiCiAtLSBub3cgaXQgd29ya3MKIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04g dGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIHN0cmVhbWluZyA9IHRydWUpOwogV0FSTklO RzogIHRhYmxlcyB3ZXJlIG5vdCBzdWJzY3JpYmVkLCB5b3Ugd2lsbCBoYXZlIHRvIHJ1biBBTFRF UiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggUFVCTElDQVRJT04gdG8gc3Vic2NyaWJlIHRoZSB0 YWJsZXMKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggNGZiNzQ2OTMwYS4uMmUyMDkzOGQz OSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTExNiw2ICsxMTYsOCBAQCBBcHBlbmQK IEFwcGVuZFBhdGgKIEFwcGVuZFJlbEluZm8KIEFwcGVuZFN0YXRlCitBcHBseUJnd29ya2VyU2hh cmVkCitBcHBseUJnd29ya2VyU3RhdGUKIEFwcGx5RXJyb3JDYWxsYmFja0FyZwogQXBwbHlFeGVj dXRpb25EYXRhCiBBcHBseVN1YlhhY3REYXRhCkBAIC0yOTk0LDExICsyOTk2LDEzIEBAIFdvcmRF bnRyeVBvc1ZlY3RvcgogV29yZEVudHJ5UG9zVmVjdG9yMQogV29ya1RhYmxlU2NhbgogV29ya1Rh YmxlU2NhblN0YXRlCitXb3JrZXJFbnRyeQogV29ya2VySW5mbwogV29ya2VySW5mb0RhdGEKIFdv cmtlckluc3RydW1lbnRhdGlvbgogV29ya2VySm9iRHVtcFB0clR5cGUKIFdvcmtlckpvYlJlc3Rv cmVQdHJUeXBlCitXb3JrZXJTdGF0ZQogV29ya2luZ19TdGF0ZQogV3JpdGVCdWZQdHJUeXBlCiBX cml0ZUJ5dGVQdHJUeXBlCi0tIAoyLjIzLjAud2luZG93cy4xCgo= --_005_OS3PR01MB627532B048F71FFF8FBDB6A99ED69OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v6-0002-Test-streaming-apply-option-in-tap-test.patch" Content-Description: v6-0002-Test-streaming-apply-option-in-tap-test.patch Content-Disposition: attachment; filename="v6-0002-Test-streaming-apply-option-in-tap-test.patch"; size=66306; creation-date="Wed, 25 May 2022 02:16:00 GMT"; modification-date="Wed, 25 May 2022 02:24:58 GMT" Content-Transfer-Encoding: base64 RnJvbSBlMWVkN2I0OTY3ODZjNGFlNTYxYWY1ZmE0OGM2NzlhNDdhYTI3MjlkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2NiAy LzRdIFRlc3Qgc3RyZWFtaW5nIGFwcGx5IG9wdGlvbiBpbiB0YXAgdGVzdAoKQ2hhbmdlIGFsbCBU QVAgdGVzdHMgdXNpbmcgdGhlIFNVQlNDUklQVElPTiAic3RyZWFtaW5nIiBvcHRpb24sIHNvIHRo ZXkKbm93IHRlc3QgYm90aCAnb24nIGFuZCAnYXBwbHknIHZhbHVlcy4KLS0tCiBzcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsICAgICAgICAgfCAxODEgKysrKy0tLQogc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsIHwgIDk4ICsrLS0KIHNyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsICAgICB8IDE3MSArKysrLS0tCiAu Li4vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwgICAgICAgICAgICAgfCAxNzggKysrKy0t LQogLi4uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCAgICAgICAgIHwgIDg5ICsr Ky0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCAgICB8IDMzMCAr KysrKystLS0tLS0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsICAg ICB8IDQ3MiArKysrKysrKysrLS0tLS0tLS0KIDcgZmlsZXMgY2hhbmdlZCwgODc1IGluc2VydGlv bnMoKyksIDY0NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMTVfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5w bAppbmRleCA2NTYxYjE4OWRlLi4wYWIzNWUyZjcwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAx NV9zdHJlYW0ucGwKQEAgLTgsNiArOCw5NiBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl cjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIEVu Y2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8g InN0cmVhbWluZyIgb3B0aW9uCisjIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZv ciB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJlYW1pbmc9YXBwbHkKKyMgY2FzZXMuCitzdWIgdGVz dF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAk YXBwbmFtZSkgPSBAXzsKKworCSMgSW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJhbnNhY3Rpb25zLCBl YWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KKwlteSAkaW4gID0gJyc7CisJbXkgJG91dCA9 ICcnOworCisJbXkgJHRpbWVyID0gSVBDOjpSdW46OnRpbWVvdXQoJFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOworCisJbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJh Y2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBcJGluLCBcJG91dCwgJHRpbWVyLAorCQlvbl9lcnJv cl9zdG9wID0+IDApOworCisJJGluIC49IHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBz KGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7 CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCX07CisJJGgtPnB1 bXBfbmI7CisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsK KwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7CisJREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgYSA+IDUwMDA7CisJQ09NTUlUOworCX0pOworCisJJGluIC49IHF7CisJQ09NTUlU OworCVxxCisJfTsKKwkkaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRoZSBuZXh0IHRlc3Qg ZmFpbCwgc28gaWdub3JlIHRoZW0gaGVyZQorCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3Vu dChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMz MzQpLCAnY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJyk7CisKKwkj IFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQorCSRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChi aW5hcnkgPSBvbikiKTsKKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93 cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo CisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhpKTsK KwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlDT01NSVQ7CisJfSk7CisK Kwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJJHJlc3Vs dCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVD VCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlp cygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksICdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRh aW4gbG9jYWwgZGVmYXVsdHMnKTsKKworCSMgQ2hhbmdlIHRoZSBsb2NhbCB2YWx1ZXMgb2YgdGhl IGV4dHJhIGNvbHVtbnMgb24gdGhlIHN1YnNjcmliZXIsCisJIyB1cGRhdGUgcHVibGlzaGVyLCBh bmQgY2hlY2sgdGhhdCBzdWJzY3JpYmVyIHJldGFpbnMgdGhlIGV4cGVjdGVkCisJIyB2YWx1ZXMu IFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVoYXZl CisJIyBwcm9wZXJseSBhZnRlciBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KKwkkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9 ICdlcG9jaCc6OnRpbWVzdGFtcHR6ICsgOTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKKwkpOwor CSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJVUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYTo6dGV4dCkiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGV4dHJhY3QoZXBvY2gg ZnJvbSBjKSA9IDk4NzY1NDMyMSksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiCisJKTsK KwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCisJCSdjaGVjayBleHRyYSBjb2x1bW5z IGNvbnRhaW4gbG9jYWxseSBjaGFuZ2VkIGRhdGEnKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBk YXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5v ZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXIn KTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7 CkBAIC0zNyw5OSArMTI3LDQwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwog CiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nv bm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRI IChzdHJlYW1pbmcgPSBvbikiCiApOwotCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOwotCiAjIEFsc28gd2FpdCBmb3IgaW5pdGlhbCB0YWJsZSBzeW5jIHRvIGZp bmlzaAogbXkgJHN5bmNlZF9xdWVyeSA9CiAgICJTRUxFQ1QgY291bnQoMSkgPSAwIEZST00gcGdf c3Vic2NyaXB0aW9uX3JlbCBXSEVSRSBzcnN1YnN0YXRlIE5PVCBJTiAoJ3InLCAncycpOyI7CiAk bm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICRzeW5jZWRfcXVl cnkpCiAgIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHN1YnNjcmliZXIgdG8g c3luY2hyb25pemUgZGF0YSI7Ci0KIG15ICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQo ZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sg aW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIEludGVybGVhdmUg YSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0IgbGltaXQuCi1t eSAkaW4gID0gJyc7Ci1teSAkb3V0ID0gJyc7Ci0KLW15ICR0aW1lciA9IElQQzo6UnVuOjp0aW1l b3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKLQotbXkgJGgg PSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBcJGluLCBcJG91 dCwgJHRpbWVyLAotCW9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0KLSRpbiAuPSBxewotQkVHSU47Ci1J TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDMsIDUwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hF UkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAw OwotfTsKLSRoLT5wdW1wX25iOwotCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9z dGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7Ci1ERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBhID4gNTAwMDsKLUNPTU1JVDsKLX0pOwotCi0kaW4gLj0gcXsKLUNP TU1JVDsKLVxxCi19OwotJGgtPmZpbmlzaDsgICAgIyBlcnJvcnMgbWFrZSB0aGUgbmV4dCB0ZXN0 IGZhaWwsIHNvIGlnbm9yZSB0aGVtIGhlcmUKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0g OTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksICdj aGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKLQotIyBUZXN0IHRo ZSBzdHJlYW1pbmcgaW4gYmluYXJ5IG1vZGUKLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQgKGJpbmFyeSA9IG9u KSIpOwotCi0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVk IHRoZSA2NGtCIGxpbWl0LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVz JywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3Rh YiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBj b3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8 NjY2NyksICdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKK3Rl c3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUp OwogCi0jIENoYW5nZSB0aGUgbG9jYWwgdmFsdWVzIG9mIHRoZSBleHRyYSBjb2x1bW5zIG9uIHRo ZSBzdWJzY3JpYmVyLAotIyB1cGRhdGUgcHVibGlzaGVyLCBhbmQgY2hlY2sgdGhhdCBzdWJzY3Jp YmVyIHJldGFpbnMgdGhlIGV4cGVjdGVkCi0jIHZhbHVlcy4gVGhpcyBpcyB0byBlbnN1cmUgdGhh dCBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBiZWhhdmUKLSMgcHJvcGVybHkgYWZ0ZXIgYSBz dHJlYW1pbmcgdHJhbnNhY3Rpb24uCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdhcHBseScKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hF UkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7 IgorKTsKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJVUERBVEUg dGVzdF90YWIgU0VUIGMgPSAnZXBvY2gnOjp0aW1lc3RhbXB0eiArIDk4NzY1NDMyMSAqIGludGVy dmFsICcxcyciCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBh cHBseSwgYmluYXJ5ID0gb2ZmKSIKICk7Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAotCSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4dCkiKTsKKyRub2Rl X3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9 ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUg PSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKykgb3IgZGllICJUaW1lZCBv dXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBQVUJM SUNBVElPTiI7CiAKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 Ci0KLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki U0VMRUNUIGNvdW50KCopLCBjb3VudChleHRyYWN0KGVwb2NoIGZyb20gYykgPSA5ODc2NTQzMjEp LCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIgotKTsKLWlzKCRyZXN1bHQsIHFxKDY2Njd8 NjY2N3w2NjY3KSwKLQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsbHkgY2hhbmdl ZCBkYXRhJyk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmli ZXIsICRhcHBuYW1lKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hl ci0+c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1f c3VieGFjdC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5w bAppbmRleCBmMjdmMTY5NGYyLi5kNDBjN2M3ZmZkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCkBAIC04LDYgKzgsNTQgQEAgdXNlIFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVz dDo6TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNo IGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIG9wdGlvbgorIyBzbyB0aGUgc2FtZSBjb2RlIGNh biBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5nPWFwcGx5Cisj IGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5v ZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpID0gQF87CisKKwkjIEluc2VydCwgdXBkYXRlIGFuZCBk ZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcyggICAgMywg IDUwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEs MikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZF UE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsICAxMDAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgbW9kKGEsMykgPSAwOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsICAxNTAw KSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9 IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCVNBVkVQT0lO VCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDE1MDEsICAyMDAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQg YiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgbW9kKGEsMykgPSAwOworCVNBVkVQT0lOVCBzNDsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEsIDI1MDApIHMo aSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsK KwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJQ09NTUlUOworCX0p OworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCW15 ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFi Iik7CisJaXMoJHJlc3VsdCwgcXEoMTY2N3wxNjY3fDE2NjcpLAorCQknY2hlY2sgZGF0YSB3YXMg Y29waWVkIHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMg Y29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEK Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgKGEgPiAyKSIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9w dWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwog JG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAg LTM3LDYgKzg1LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJ IkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAk YXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNS RUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIg YXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJl YW1pbmcgPSBvbikiCiApOwpAQCAtNTQsNDAgKzEwNiwyMiBAQCBteSAkcmVzdWx0ID0KIAkiU0VM RUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwog aXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8g c3Vic2NyaWJlcicpOwogCi0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3Mg dG8gZXhjZWVkIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9z dGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKCAgICAzLCAgNTAwKSBzKGkpOwotVVBEQVRFIHRl c3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAg MTAwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwy KSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9J TlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEwMDEsICAxNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBi ID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJF IG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgIDIwMDApIHMoaSk7 Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVM RVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHM0OwotSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nl cmllcygyMDAxLCAyNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdI RVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0g MDsKLUNPTU1JVDsKLX0pOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9z dWJzY3JpYmVyLCAkYXBwbmFtZSk7CiAKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkg RlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMTY2N3wxNjY3fDE2NjcpLAotCSdjaGVj ayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0 cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnYXBwbHknCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3Jl cGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9 ICdzdHJlYW1pbmcnOyIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IGFwcGx5KSIK ICk7Ciskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNh dGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCispIG9yIGRp ZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hh bmdpbmcgUFVCTElDQVRJT04iOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRu b2RlX3N1YnNjcmliZXIsICRhcHBuYW1lKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRu b2RlX3B1Ymxpc2hlci0+c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxN19zdHJlYW1fZGRsLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9k ZGwucGwKaW5kZXggMGJjZTYzYjcxNi4uMWJjMGM0ZGJjNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKQEAgLTgsNiArOCw5MyBAQCB1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpN b3JlOwogCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJl IHJlbGF0ZWQgdG8gInN0cmVhbWluZyIgb3B0aW9uCisjIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJl IHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJlYW1pbmc9YXBwbHkKKyMgY2Fz ZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9z dWJzY3JpYmVyLCAkYXBwbmFtZSkgPSBAXzsKKworCSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo CisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVT ICgzLCBtZDUoMzo6dGV4dCkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJ TlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNCwgbWQ1 KDQ6OnRleHQpLCAtNCk7CisJQ09NTUlUOworCX0pOworCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRy YW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK KwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1LCAxMDAwKSBzKGkpOwor CUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJTlQ7CisJU0FWRVBPSU5UIHMxOwor CUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgMjAwMCkgcyhpKTsKKwlDT01NSVQ7CisJfSk7CisKKwkj IGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAorCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMSwgbWQ1KDIwMDE6OnRleHQpLCAtMjAwMSwg MioyMDAxKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUgSU5UOworCVNBVkVQ T0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDIsIG1kNSgyMDAyOjp0 ZXh0KSwgLTIwMDIsIDIqMjAwMiwgLTMqMjAwMik7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCW15ICRyZXN1bHQgPQor CSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSkgRlJPTSB0ZXN0X3RhYiIpOworCWlz KCRyZXN1bHQsIHFxKDIwMDJ8MTk5OXwxMDAyfDEpLAorCQknY2hlY2sgZGF0YSB3YXMgY29waWVk IHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFp biBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBBIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rp b24gd2l0aCBEREwgYW5kIERNTC4gT25lIG9mIHRoZSBEREwgaXMgcGVyZm9ybWVkCisJIyBhZnRl ciBETUwgdG8gZW5zdXJlIHRoYXQgd2UgaW52YWxpZGF0ZSB0aGUgc2NoZW1hIHNlbnQgZm9yIHRl c3RfdGFiIHNvIHRoYXQKKwkjIHRoZSBuZXh0IHRyYW5zYWN0aW9uIGhhcyB0byBzZW5kIHRoZSBz Y2hlbWEgYWdhaW4uCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jlcycs IHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAzLDUwMDApIHMoaSk7CisJ QUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBmIElOVDsKKwlDT01NSVQ7CisJfSk7CisK KwkjIEEgc21hbGwgdHJhbnNhY3Rpb24gdGhhdCB3b24ndCBnZXQgc3RyZWFtZWQuIFRoaXMgaXMg anVzdCB0byBlbnN1cmUgdGhhdCB3ZQorCSMgc2VuZCB0aGUgc2NoZW1hIGFnYWluIHRvIHJlZmxl Y3QgdGhlIGxhc3QgY29sdW1uIGFkZGVkIGluIHRoZSBwcmV2aW91cyB0ZXN0LgorCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmksIDQqaSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDUwMDUpIHMoaSk7CisJQ09NTUlUOworCX0pOworCisJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSRyZXN1bHQg PQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSksIGNvdW50KGYpIEZST00gdGVz dF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSg1MDA1fDUwMDJ8NDAwNXwzMDA0fDUpLAorCQknY2hl Y2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgZm9yIGJvdGggc3RyZWFtaW5nIGFuZCBu b24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucycKKwkpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRh dGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlERUxF VEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIERS T1AgQ09MVU1OIGMsIERST1AgQ09MVU1OIGQsIERST1AgQ09MVU1OIGUsIERST1AgQ09MVU1OIGY7 CisJfSk7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK30K KwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmlu aXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcsNiArMTI0LDEwIEBAICRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElP TiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3Vi JzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJl YW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04g dGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0k YXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpA QCAtNTQsNzYgKzE0NSwyMiBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnww fDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0j IGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJU IElOVE8gdGVzdF90YWIgVkFMVUVTICgzLCBtZDUoMzo6dGV4dCkpOwotQUxURVIgVEFCTEUgdGVz dF90YWIgQUREIENPTFVNTiBjIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFZBTFVFUyAoNCwgbWQ1KDQ6OnRleHQpLCAtNCk7Ci1DT01NSVQ7Ci19KTsKLQotIyBsYXJn ZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKLSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUsIDEw MDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGQgSU5UOwotU0FWRVBP SU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWks IDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAyMDAwKSBzKGkpOwotQ09NTUlUOwotfSk7 Ci0KLSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1M Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1J TlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDEsIG1kNSgyMDAxOjp0ZXh0KSwgLTIwMDEs IDIqMjAwMSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUgSU5UOwotU0FWRVBP SU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAyLCBtZDUoMjAwMjo6dGV4 dCksIC0yMDAyLCAyKjIwMDIsIC0zKjIwMDIpOwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9w dWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lKTsKIAotJHJlc3VsdCA9Ci0gICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiks IGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3Vs dCwgcXEoMjAwMnwxOTk5fDEwMDJ8MSksCi0JJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJz Y3JpYmVyIGluIHN0cmVhbWluZyBtb2RlIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwg ZGVmYXVsdHMnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVz aW5nIHN0cmVhbWluZyBtb2RlICdhcHBseScKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRp b25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKLQotIyBB IGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTC4gT25lIG9mIHRo ZSBEREwgaXMgcGVyZm9ybWVkCi0jIGFmdGVyIERNTCB0byBlbnN1cmUgdGhhdCB3ZSBpbnZhbGlk YXRlIHRoZSBzY2hlbWEgc2VudCBmb3IgdGVzdF90YWIgc28gdGhhdAotIyB0aGUgbmV4dCB0cmFu c2FjdGlvbiBoYXMgdG8gc2VuZCB0aGUgc2NoZW1hIGFnYWluLgotJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3Nlcmll cygyMDAzLDUwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGYgSU5U OwotQ09NTUlUOwotfSk7Ci0KLSMgQSBzbWFsbCB0cmFuc2FjdGlvbiB0aGF0IHdvbid0IGdldCBz dHJlYW1lZC4gVGhpcyBpcyBqdXN0IHRvIGVuc3VyZSB0aGF0IHdlCi0jIHNlbmQgdGhlIHNjaGVt YSBhZ2FpbiB0byByZWZsZWN0IHRoZSBsYXN0IGNvbHVtbiBhZGRlZCBpbiB0aGUgcHJldmlvdXMg dGVzdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJ TjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmks IC0zKmksIDQqaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDUwMDUpIHMoaSk7Ci1DT01NSVQ7 Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQot JHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSksIGNvdW50KGYpIEZS T00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1fDMwMDR8NSksCi0J J2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGZvciBib3RoIHN0cmVhbWluZyBh bmQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMnCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWlu ZyA9IGFwcGx5KSIKICk7Ciskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3Rn cmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBX SEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5n JzsiCispIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3Rh cnQgYWZ0ZXIgY2hhbmdpbmcgUFVCTElDQVRJT04iOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9w dWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lKTsKIAogJG5vZGVfc3Vic2NyaWJl ci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbCBiL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbAppbmRleCA3MTU1NDQyZTc2Li40 MTFiYjQ3ZTk2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFt X3N1YnhhY3RfYWJvcnQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVh bV9zdWJ4YWN0X2Fib3J0LnBsCkBAIC04LDYgKzgsOTUgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsK IAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxh dGVkIHRvICJzdHJlYW1pbmciIG9wdGlvbgorIyBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4g Ym90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5nPWFwcGx5CisjIGNhc2VzLgor c3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2Ny aWJlciwgJGFwcG5hbWUpID0gQF87CisKKwkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24g d2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo CisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLDUwMCkgcyhpKTsKKwlTQVZF UE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczI7CisJSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nl cmllcygxMDAxLDE1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwyMDAw KSBzKGkpOworCVJPTExCQUNLIFRPIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwyNTAwKSBzKGkpOworCVJP TExCQUNLIFRPIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjUwMSwzMDAwKSBzKGkpOworCVNBVkVQT0lOVCBzNDsK KwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDMwMDEsMzUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczU7CisJSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzNTAx LDQwMDApIHMoaSk7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZS T00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyMDAwfDApLAorCQknY2hlY2sgcm9sbGJh Y2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlciBhbmQgZXh0cmEgY29s dW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIGxhcmdlIChzdHJlYW1lZCkg dHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyBvdXQgb2Ygb3JkZXIKKwkjIHN1 YnRyYW5zYWN0aW9uIFJPTExCQUNLcworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkn cG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNDAwMSw0NTAwKSBzKGkpOworCVNBVkVQ T0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczI7CisJSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nl cmllcyg2MDAxLDY1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNzAwMSw3NTAw KSBzKGkpOworCVJFTEVBU0UgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4MDAxLDg1MDApIHMoaSk7CisJUk9MTEJB Q0sgVE8gczE7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKKworCSRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVz dF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyNTAwfDApLAorCQknY2hlY2sgcm9sbGJhY2sgdG8g c2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBsYXJnZSAoc3Ry ZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgcm9sbGJhY2sKKwkk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDg1MDEsOTAwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5MDAxLDk1 MDApIHMoaSk7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTUwMSwxMDAwMCkgcyhpKTsKKwlS T0xMQkFDSzsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CisJ aXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwgJ2NoZWNrIHJvbGxiYWNrIHdhcyByZWZsZWN0ZWQgb24g c3Vic2NyaWJlcicpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg KGEgPiAyKSIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVy LT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM2LDYgKzEyNSwxMCBA QCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElD QVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFw X3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcg c3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBU SU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25h bWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgog KTsKQEAgLTUzLDgxICsxNDYsMjIgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwwKSwgJ2NoZWNrIGlu aXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBsYXJnZSAoc3RyZWFt ZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcwotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLDUwMCkg cyhpKTsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1TQVZFUE9JTlQg czI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEwMDEsMTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUw MSwyMDAwKSBzKGkpOwotUk9MTEJBQ0sgVE8gczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEsMjUwMCkgcyhpKTsK LVJPTExCQUNLIFRPIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyNTAxLDMwMDApIHMoaSk7Ci1TQVZFUE9JTlQgczQ7 Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDMwMDEsMzUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzNTsKLUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzUwMSw0 MDAwKSBzKGkpOwotQ09NTUlUOwotfSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIs ICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lKTsKIAotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVz dF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDIwMDB8MCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRvIHNh dmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29u dGFpbiBsb2NhbCBkZWZhdWx0cycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ2FwcGx5JworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVS RSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi CiApOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNV QlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBhcHBseSkiCispOworJG5vZGVfcHVi bGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9s ZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICck YXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorKSBvciBkaWUgIlRpbWVkIG91dCB3 aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFBVQkxJQ0FU SU9OIjsKIAotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciBy ZWNlaXZpbmcgb3V0IG9mIG9yZGVyCi0jIHN1YnRyYW5zYWN0aW9uIFJPTExCQUNLcwotJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg0 MDAxLDQ1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTUwMCkgcyhpKTsK LVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNjAwMSw2NTAwKSBzKGkpOwotU0FWRVBPSU5UIHMzOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3Nlcmllcyg3MDAxLDc1MDApIHMoaSk7Ci1SRUxFQVNFIHMyOwotSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4MDAxLDg1MDAp IHMoaSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykg RlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwKLQknY2hlY2sgcm9sbGJh Y2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIGxhcmdl IChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyByb2xsYmFj awotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3Nlcmllcyg4NTAxLDkwMDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDkwMDEsOTUw MCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTUwMSwxMDAwMCkgcyhpKTsKLVJPTExC QUNLOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0 LCBxcSgyNTAwfDApLCAnY2hlY2sgcm9sbGJhY2sgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVy Jyk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRh cHBuYW1lKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3Rv cDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFj dF9kZGxfYWJvcnQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1Ynhh Y3RfZGRsX2Fib3J0LnBsCmluZGV4IGRiZDBmY2E0ZDEuLjMxMTUxNjc2ZjAgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwK KysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9y dC5wbApAQCAtOSw2ICs5LDUxIEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgRW5jYXBzdWxh dGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFt aW5nIiBvcHRpb24KKyMgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBz dHJlYW1pbmc9b24gYW5kIHN0cmVhbWluZz1hcHBseQorIyBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVh bWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1l KSA9IEBfOworCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwg YW5kIFJPTExCQUNLcworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMn LCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMyw1MDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90 YWIgQUREIENPTFVNTiBjIElOVDsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEw MDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBkIElOVDsKKwlTQVZF UE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwg LWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMoaSk7CisJQUxURVIgVEFC TEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElOVDsKKwlTQVZFUE9JTlQgczM7CisJSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdl bmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgRFJP UCBDT0xVTU4gYzsKKwlST0xMQkFDSyBUTyBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkp OworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFi Iik7CisJaXMoJHJlc3VsdCwgcXEoMTAwMHw1MDApLAorCQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2 ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlciBhbmQgZXh0cmEgY29sdW1ucyBjb250 YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCURFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIChhID4gMik7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgRFJPUCBDT0xV TU4gYzsKKwl9KTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hl ci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICs4MiwxMCBA QCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElD QVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFw X3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcg c3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBU SU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25h bWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgog KTsKQEAgLTU0LDM0ICsxMDMsMjIgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwwKSwgJ2NoZWNrIGlu aXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBsYXJnZSAoc3RyZWFt ZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcwotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLDUwMCkg cyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7Ci1TQVZFUE9JTlQg czE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9N IGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFE RCBDT0xVTU4gZCBJTlQ7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsMTUw MCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZSBJTlQ7Ci1TQVZFUE9J TlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwg MippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKLUFMVEVSIFRB QkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGM7Ci1ST0xMQkFDSyBUTyBzMTsKLUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo NTAxLDEwMDApIHMoaSk7Ci1DT01NSVQ7Ci19KTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxp c2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCi0kbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJP TSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMTAwMHw1MDApLAotCSdjaGVjayByb2xsYmFj ayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1 bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdhcHBseScKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVh bWluZyc7IgorKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJB TFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gYXBwbHkpIgogKTsKKyRu b2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlk ICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25h bWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKykgb3IgZGllICJUaW1l ZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBQ VUJMSUNBVElPTiI7CisKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vi c2NyaWJlciwgJGFwcG5hbWUpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVi bGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3 b3BoYXNlX2Nhc2NhZGUucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2Vf Y2FzY2FkZS5wbAppbmRleCA3YTc5N2YzN2JhLi42NjM4MDhhY2I5IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbAorKysgYi9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbApAQCAtMTEsNiArMTEsMTc1 IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24g dGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIiBvcHRpb24KKyMgc28g dGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kIHN0 cmVhbWluZz1hcHBseQorIyBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9k ZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFtZV9DLCAkc3RyZWFtaW5n X21vZGUpID0gQF87CisKKwlteSAkb2xkcGlkX0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hF UkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5n JzsiKTsKKwlteSAkb2xkcGlkX0MgPSAkbm9kZV9CLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jlcycs ICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGlj YXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKKwor CSMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbiBzdHJlYW1pbmcgbW9kZQorCisJJG5vZGVfQi0+ c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3Vi X0IKKwkJU0VUIChzdHJlYW1pbmcgPSAkc3RyZWFtaW5nX21vZGUpOyIpOworCSRub2RlX0MtPnNh ZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9D CisJCVNFVCAoc3RyZWFtaW5nID0gJHN0cmVhbWluZ19tb2RlKSIpOworCisJIyBXYWl0IGZvciBz dWJzY3JpYmVycyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KKworCSRub2RlX0EtPnBvbGxfcXVl cnlfdW50aWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0IgRlJP TSBwZ19zdGF0X3JlcGxpY2F0aW9uCisJCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5h bWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSkgb3IgZGllICJUaW1lZCBvdXQgd2hp bGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7CisJJG5vZGVfQi0+cG9sbF9xdWVyeV91 bnRpbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQyBGUk9NIHBn X3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9D JyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisJKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3 YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCisJIyAxLiBE YXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgorCSMgMi4gVGhlbiBkbyBjb21t aXQgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vi c2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNl ZWQgdGhlIDY0a0IgbGltaXQuCisJIyBUaGVuIDJQQyBQUkVQQVJFCisJJG5vZGVfQS0+c2FmZV9w c3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkp OworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwor CQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJB TlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX0EtPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9D KTsKKworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIHByZXBhcmVkIG9uIHN1YnNj cmliZXIocykKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3Vs dCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkk cmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50 KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFu c2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMgMlBDIENPTU1JVAor CSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3By ZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0Ip OworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRo YXQgdHJhbnNhY3Rpb24gd2FzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3VsdCA9 ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMz MzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9u IHN1YnNjcmliZXIgQiwgYW5kIGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2NhbCBkZWZhdWx0cycKKwkp OworCSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygk cmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZl IGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEMsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwg ZGVmYXVsdHMnCisJKTsKKworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVk IG9uIHN1YnNjcmliZXIocykKKwkkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMo JHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBC Jyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDAp LCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQycpOworCisJIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSB3aXRoIGEgbmVz dGVkIFJPTExCQUNLIFRPIFNBVkVQT0lOVC4KKwkjIDAuIENsZWFudXAgZnJvbSBwcmV2aW91cyB0 ZXN0IGxlYXZpbmcgb25seSAyIHJvd3MuCisJIyAxLiBJbnNlcnQgb25lIG1vcmUgcm93LgorCSMg Mi4gUmVjb3JkIGEgU0FWRVBPSU5ULgorCSMgMy4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMu CisJIyA0LiBEbyByb2xsYmFjayB0byBTQVZFUE9JTlQgcHJpb3IgdG8gdGhlIHN0cmVhbWVkIGlu c2VydHMuCisJIyA1LiBUaGVuIENPTU1JVCBQUkVQQVJFRC4KKwkjCisJIyBFeHBlY3QgZGF0YSBh ZnRlciB0aGUgU0FWRVBPSU5UIGlzIGFib3J0ZWQgbGVhdmluZyBvbmx5IDMgcm93cyAoPSAyIG9y aWdpbmFsICsgMSBmcm9tIHN0ZXAgMSkuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzIChkZWxldGUg d2lsbCBiZSByZXBsaWNhdGVkKQorCSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVM RVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisKKwkjIDJQQyBQUkVQQVJFIHdpdGgg YSBuZXN0ZWQgUk9MTEJBQ0sgVE8gU0FWRVBPSU5UCisJJG5vZGVfQS0+c2FmZV9wc3FsKAorCQkn cG9zdGdyZXMnLCAiCisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5 OTksICdmb29iYXInKTsKKwkJU0FWRVBPSU5UIHNwX2lubmVyOworCQlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDAp IHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9 IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUk9MTEJB Q0sgVE8gU0FWRVBPSU5UIHNwX2lubmVyOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICdvdXRlcic7 CisJCSIpOworCisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9k ZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworCisJIyBjaGVjayB0aGUgdHJhbnNh Y3Rpb24gc3RhdGUgcHJlcGFyZWQgb24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQgPQorCSAgJG5v ZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVw YXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBh cmVkIG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsK KwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmli ZXIgQycpOworCisJIyAyUEMgQ09NTUlUCisJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJDT01NSVQgUFJFUEFSRUQgJ291dGVyJzsiKTsKKworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsK KworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIK KwkkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNv dW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0 cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRu b2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBlbmRl ZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZSBhdCBz dWJzY3JpYmVyKHMpLgorCSMgQWxsIHRoZSBzdHJlYW1lZCBkYXRhIChwcmlvciB0byB0aGUgU0FW RVBPSU5UKSBzaG91bGQgYmUgcm9sbGVkIGJhY2suCisJIyAoOTk5OSwgJ2Zvb2JhcicpIHNob3Vs ZCBiZSBjb21taXR0ZWQuCisJJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIgd2hlcmUgYiA9ICdmb29iYXInOyIp OworCWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vi c2NyaWJlciBCJyk7CisJJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWI7Iik7CisJaXMoJHJlc3VsdCwgcXEoMyksICdS b3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0g JG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RhYiB3aGVyZSBiID0gJ2Zvb2Jhcic7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICdSb3dz IGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsKKwkkcmVzdWx0ID0gJG5v ZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3Rh YjsiKTsKKwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9u IHN1YnNjcmliZXIgQycpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9BLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAy OyIpOworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKK30KKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwogIyBTZXR1cCBhIGNhc2NhZGUgb2YgcHViL3N1YiBub2Rlcy4KICMgbm9kZV9B IC0+IG5vZGVfQiAtPiBub2RlX0MKQEAgLTI2MCwxNjAgKzQyOSwxNSBAQCBpcygkcmVzdWx0LCBx cSgyMSksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsKICMg MlBDICsgU1RSRUFNSU5HIFRFU1RTCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1teSAkb2xk cGlkX0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQg RlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBw bmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKLW15ICRvbGRwaWRfQyA9ICRub2Rl X0ItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRf cmVwbGljYXRpb24KLQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBz dGF0ZSA9ICdzdHJlYW1pbmcnOyIpOwotCi0jIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24gKHN0 cmVhbWluZyA9IG9uKQotCi0kbm9kZV9CLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCUFM VEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0IKLQlTRVQgKHN0cmVhbWluZyA9IG9uKTsiKTsKLSRu b2RlX0MtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JQUxURVIgU1VCU0NSSVBUSU9OIHRh cF9zdWJfQwotCVNFVCAoc3RyZWFtaW5nID0gb24pIik7Ci0KLSMgV2FpdCBmb3Igc3Vic2NyaWJl cnMgdG8gZmluaXNoIGluaXRpYWxpemF0aW9uCi0KLSRub2RlX0EtPnBvbGxfcXVlcnlfdW50aWwo Ci0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9CIEZST00gcGdfc3RhdF9y ZXBsaWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0 YXRlID0gJ3N0cmVhbWluZyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZv ciBhcHBseSB0byByZXN0YXJ0IjsKLSRub2RlX0ItPnBvbGxfcXVlcnlfdW50aWwoCi0JJ3Bvc3Rn cmVzJywgIgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9DIEZST00gcGdfc3RhdF9yZXBsaWNhdGlv bgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQycgQU5EIHN0YXRlID0gJ3N0 cmVhbWluZyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0 byByZXN0YXJ0IjsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQ QyBQUkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgotIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEg MlBDIHRyYW5zYWN0aW9uLgotIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KLSMKLSMgRXhw ZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlcihzKSBhZnRlciB0aGUgY29t bWl0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEluc2VydCwgdXBkYXRl IGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotIyBUaGVu IDJQQyBQUkVQQVJFCi0kbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJ TjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1 KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2Qo YSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwot Ci0kbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5vZGVfQi0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRh cHBuYW1lX0IsICRhcHBuYW1lX0MsICdvbicpOwogCi0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBz dGF0ZSBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94 YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24g c3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1 bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0K LSMgMlBDIENPTU1JVAotJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJF UEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0K LSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiB3YXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIocykK LSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3Vs dCwgcXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1p dHRlZCBvbiBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVs dHMnCi0pOwotJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxF Q1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1p cygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhh dmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQywgYW5kIGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2Nh bCBkZWZhdWx0cycKLSk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVk IG9uIHN1YnNjcmliZXIocykKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJl c3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBCJyk7 Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJh bnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xM QkFDSyBUTyBTQVZFUE9JTlQuCi0jIDAuIENsZWFudXAgZnJvbSBwcmV2aW91cyB0ZXN0IGxlYXZp bmcgb25seSAyIHJvd3MuCi0jIDEuIEluc2VydCBvbmUgbW9yZSByb3cuCi0jIDIuIFJlY29yZCBh IFNBVkVQT0lOVC4KLSMgMy4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDQuIERvIHJv bGxiYWNrIHRvIFNBVkVQT0lOVCBwcmlvciB0byB0aGUgc3RyZWFtZWQgaW5zZXJ0cy4KLSMgNS4g VGhlbiBDT01NSVQgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCBkYXRhIGFmdGVyIHRoZSBTQVZFUE9J TlQgaXMgYWJvcnRlZCBsZWF2aW5nIG9ubHkgMyByb3dzICg9IDIgb3JpZ2luYWwgKyAxIGZyb20g c3RlcCAxKS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVs ZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzIChkZWxldGUgd2lsbCBiZSByZXBsaWNhdGVk KQotJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBhID4gMjsiKTsKLQotIyAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRP IFNBVkVQT0lOVAotJG5vZGVfQS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlCRUdJTjsK LQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTksICdmb29iYXInKTsKLQlTQVZFUE9J TlQgc3BfaW5uZXI7Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgbW9kKGEsMykgPSAwOwotCVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9pbm5lcjsKLQlQ UkVQQVJFIFRSQU5TQUNUSU9OICdvdXRlcic7Ci0JIik7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0Mp OwotCi0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBwcmVwYXJlZCBvbiBzdWJzY3JpYmVy KHMpCi0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg Y291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAn dHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAg JG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19w cmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJl cGFyZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMgMlBDIENPTU1JVAotJG5vZGVfQS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQgJ291dGVyJzsiKTsKLQotJG5vZGVfQS0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWVfQyk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9u IHN1YnNjcmliZXIKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwg cXEoMCksICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQg PQotICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9N IHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBp cyBlbmRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxl IGF0IHN1YnNjcmliZXIocykuCi0jIEFsbCB0aGUgc3RyZWFtZWQgZGF0YSAocHJpb3IgdG8gdGhl IFNBVkVQT0lOVCkgc2hvdWxkIGJlIHJvbGxlZCBiYWNrLgotIyAoOTk5OSwgJ2Zvb2JhcicpIHNo b3VsZCBiZSBjb21taXR0ZWQuCi0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsi KTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vi c2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKLWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93 cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0gJG5v ZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3Rf dGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21t aXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsK LWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2Ny aWJlciBDJyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVz aW5nIHN0cmVhbWluZyBtb2RlICdhcHBseScKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCit0ZXN0X3N0cmVhbWluZygkbm9kZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBwbmFt ZV9CLCAkYXBwbmFtZV9DLCAnYXBwbHknKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogIyBjaGVjayBhbGwgdGhlIGNsZWFudXAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCmluZGV4IGQ4NDc1ZDI1YTQuLjEyODJjZmFkYjcgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwK KysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbApAQCAt OCw2ICs4LDI0MyBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIEVuY2Fwc3VsYXRlIGFsbCB0 aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIgb3B0 aW9uCisjIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5n PW9uIGFuZCBzdHJlYW1pbmc9YXBwbHkKKyMgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sK KwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSkgPSBAXzsK KworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUg LyBDT01NSVQgUFJFUEFSRUQuCisJIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5z YWN0aW9uLgorCSMgMi4gVGhlbiBkbyBjb21taXQgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGFs bCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQu CisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBjaGVjayB0aGF0IDJQQyBn ZXRzIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcgorCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0 ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUw MDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwy KSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJF UEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2Fj dGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJbXkgJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2Fj dGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBn ZXRzIGNvbW1pdHRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMp LCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwz MzM0fDMzMzQpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vi c2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOwor CSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFx KDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBST0xMQkFD SyBQUkVQQVJFRC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2gg YXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNp bmcgMlBDLgorCSMgMy4gRG8gcm9sbGJhY2sgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGRhdGEg cm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cy4KKwkjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0 IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisK KwkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQg dGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jl cycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0 X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9w cmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0 ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7 CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3Jp YmVyJyk7CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGFib3J0ZWQKKwkkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJl cGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3Jp YmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3Rh YiIpOworCWlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGFy ZSByb2xsZWQgYmFjaywgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MnKTsKKworCSRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVD VCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDAp LCAndHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBDaGVjayB0aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQg aXMgZGVjb2RlZCBwcm9wZXJseSBvbiBjcmFzaCByZXN0YXJ0LgorCSMgMS4gaW5zZXJ0LCB1cGRh dGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJIyAy LiBUaGVuIHNlcnZlciBjcmFzaGVzIGJlZm9yZSB0aGUgMlBDIHRyYW5zYWN0aW9uIGlzIGNvbW1p dHRlZC4KKwkjIDMuIEFmdGVyIHNlcnZlcnMgYXJlIHJlc3RhcnRlZCB0aGUgcGVuZGluZyB0cmFu c2FjdGlvbiBpcyBjb21taXR0ZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0 ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCisJIyBOb3RlOiBib3RoIHB1 Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBkbyBjcmFzaC9yZXN0YXJ0LgorCSMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKKworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9z dGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUg dGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rl c3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3N1YnNjcmliZXItPnN0b3AoJ2ltbWVkaWF0 ZScpOworCSRub2RlX3B1Ymxpc2hlci0+c3RvcCgnaW1tZWRpYXRlJyk7CisKKwkkbm9kZV9wdWJs aXNoZXItPnN0YXJ0OworCSRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCisJIyBjb21taXQgcG9z dCB0aGUgcmVzdGFydAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKwkkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayBpbnNlcnRzIGFyZSB2 aXNpYmxlCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0 X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0 ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5z IGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKwkjIERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQgYmVmb3JlIFJPTExC QUNLIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGlj aCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1 c2luZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0 ZXIgdGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgUk9MTEJBQ0sgUFJFUEFSRUQuCisJIwor CSMgRXhwZWN0IHRoZSAyUEMgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcgb25seSAzIHJvd3Mgb24g dGhlIHN1YnNjcmliZXIKKwkjICh0aGUgb3JpZ2luYWwgMiArIGluc2VydGVkIDEpLgorCSMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBl eGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQorCSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsi KTsKKworCSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4 Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bv c3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJVVBEQVRF IHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZS T00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0 ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVk IHN0YXRlIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0 czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1 YnNjcmliZXInKTsKKworCSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBv dXRzaWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24pCisJIyBOb3RlOiB0aGUgMlBDIHRyYW5zYWN0 aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtlIHN1cmUgdGhpcyBpbnNlcnQgaXMgZm9y IGEgc2VwYXJhdGUgcHJpbWFyeSBrZXkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5OSwgJ2Zvb2Jhcicp Iik7CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGFib3J0ZWQKKwkkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFy ZWRfdGFiJzsiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVy LAorCSMgYnV0IHRoZSBleHRyYSBJTlNFUlQgb3V0c2lkZSBvZiB0aGUgMlBDIHN0aWxsIHdhcyBy ZXBsaWNhdGVkCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0 ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDN8M3wzKSwgJ2NoZWNrIHRoZSBvdXRzaWRlIGlu c2VydCB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMg YWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisJIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBDT01NSVQgUFJF UEFSRUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSBy ZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQ Qy4KKwkjIDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUg UFJFUEFSRS4KKwkjIDQuIFRoZW4gZG8gYSBDT01NSVQgUFJFUEFSRUQuCisJIworCSMgRXhwZWN0 IDJQQyBkYXRhICsgdGhlIGV4dHJhIHJvdyBhcmUgb24gdGhlIHN1YnNjcmliZXIKKwkjICh0aGUg MzMzNCArIGluc2VydGVkIDEgPSAzMzM1KS4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwg YmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi REVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisKKwkjIFRoZW4gaW5zZXJ0LCB1 cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOwor CQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShi KSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChh LDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwor CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hl Y2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJ JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEo MSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIEluc2Vy dCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5z YWN0aW9uKQorCSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9j a3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXJlIHByaW1hcnkga2V5 CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRP IHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdmb29iYXInKSIpOworCisJIyAyUEMgdHJhbnNhY3Rp b24gZ2V0cyBjb21taXR0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRy YW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMz MzV8MzMzNXwzMzM1KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIChhcyB3ZWxsIGFzIG91dHNp ZGUgaW5zZXJ0KSBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1u cyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19w cmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNv bW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBhID4gMjsiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworfQorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFNldHVw CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC00OCw2ICsyODUsMTAgQEAgJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9O IHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWIn OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVh bWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgIgogCUNSRUFURSBTVUJTQ1JJUFRJ T04gdGFwX3N1YgpAQCAtNzcsMjI5ICszMTgsMjIgQEAgbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMp LCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8Miks ICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQ UkVQQVJFRC4KLSMgMS4gRGF0YSBpcyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4KLSMg Mi4gVGhlbiBkbyBjb21taXQgcHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBs aWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgotIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIGNoZWNrIHRoYXQgMlBDIGdldHMgcmVwbGljYXRlZCB0 byBzdWJzY3JpYmVyCi0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8g ZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bv c3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRl c3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0 ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9w cmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUg b24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlz KCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicp OwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBw bmFtZSk7CiAKLSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCi0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFy ZWRfdGFiJzsiKTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVy Ci0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsK LWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMg aGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBs b2NhbCBkZWZhdWx0cycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRl c3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ2FwcGx5JworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBs aWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwot JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxF Q1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDAp LCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQQVJFIC8gUk9MTEJBQ0sgUFJF UEFSRUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJl cGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMu Ci0jIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgotIwotIyBFeHBlY3QgZGF0YSByb2xscyBiYWNr IGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwotCi0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3Mg KHdpbGwgYmUgcmVwbGljYXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2Vy dCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0 LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsK LQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIp IFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwz KSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRo YXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0cmFuc2FjdGlv biBnZXRzIGFib3J0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2Fj dGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291 bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMnwyfDIpLAotCSdS b3dzIGluc2VydGVkIGJ5IDJQQyBhcmUgcm9sbGVkIGJhY2ssIGxlYXZpbmcgb25seSB0aGUgb3Jp Z2luYWwgMiByb3dzJyk7Ci0KLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7 Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJl cicpOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENoZWNrIHRoYXQgMlBD IENPTU1JVCBQUkVQQVJFRCBpcyBkZWNvZGVkIHByb3Blcmx5IG9uIGNyYXNoIHJlc3RhcnQuCi0j IDEuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2 NGtCIGxpbWl0LgotIyAyLiBUaGVuIHNlcnZlciBjcmFzaGVzIGJlZm9yZSB0aGUgMlBDIHRyYW5z YWN0aW9uIGlzIGNvbW1pdHRlZC4KLSMgMy4gQWZ0ZXIgc2VydmVycyBhcmUgcmVzdGFydGVkIHRo ZSBwZW5kaW5nIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KLSMKLSMgRXhwZWN0IGFsbCBkYXRh IGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCi0jIE5v dGU6IGJvdGggcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGRvIGNyYXNoL3Jlc3RhcnQuCi0jIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQ REFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04g J3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnaW1tZWRp YXRlJyk7Ci0kbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwotCi0kbm9kZV9wdWJs aXNoZXItPnN0YXJ0OwotJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7Ci0KLSMgY29tbWl0IHBvc3Qg dGhlIHJlc3RhcnQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNP TU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxl Ci0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsK LWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMg aGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBs b2NhbCBkZWZhdWx0cycKLSk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMg RG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgUk9MTEJBQ0sgUFJFUEFSRUQu Ci0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0 ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDMu IEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUgUFJFUEFSRS4K LSMgNC4gVGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVELgotIwotIyBFeHBlY3QgdGhlIDJQQyBk YXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IDMgcm93cyBvbiB0aGUgc3Vic2NyaWJlcgotIyAo dGhlIG9yaWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxs IGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi REVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVw ZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nl cmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVS RSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAw OwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRy YW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0 aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBJbnNlcnQgYSBkaWZmZXJlbnQg cmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKLSMgTm90 ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJl IHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5Ci0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMg KDk5OTk5LCAnZm9vYmFyJykiKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJST0xMQkFDSyBQUkVQQVJF RCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBv biBzdWJzY3JpYmVyLAotIyBidXQgdGhlIGV4dHJhIElOU0VSVCBvdXRzaWRlIG9mIHRoZSAyUEMg c3RpbGwgd2FzIHJlcGxpY2F0ZWQKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5 OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoM3wzfDMpLCAnY2hlY2sgdGhlIG91 dHNpZGUgaW5zZXJ0IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwotCi0kcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlv biBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwotIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBDT01NSVQg UFJFUEFSRUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJl IHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAy UEMuCi0jIDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUg UFJFUEFSRS4KLSMgNC4gVGhlbiBkbyBhIENPTU1JVCBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IDJQ QyBkYXRhICsgdGhlIGV4dHJhIHJvdyBhcmUgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSAzMzM0 ICsgaW5zZXJ0ZWQgMSA9IDMzMzUpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwot Ci0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVw bGljYXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2VydCwgdXBkYXRlIGFu ZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChh LDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJF UEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rp b24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMg cHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQg KG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQotIyBOb3RlOiB0aGUg MlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtlIHN1cmUgdGhpcyBp bnNlcnQgaXMgZm9yIGEgc2VwYXJhcmUgcHJpbWFyeSBrZXkKLSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTks ICdmb29iYXInKSIpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1pdHRlZAotJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0 X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vi c2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3Rf dGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM1fDMzMzV8MzMzNSksCi0JJ1Jvd3MgaW5zZXJ0ZWQg YnkgMlBDIChhcyB3ZWxsIGFzIG91dHNpZGUgaW5zZXJ0KSBoYXZlIGNvbW1pdHRlZCBvbiBzdWJz Y3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0 YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBhcHBseSkiCiApOworJG5vZGVfcHVibGlzaGVyLT5wb2xs X3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBn X3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5E IHN0YXRlID0gJ3N0cmVhbWluZyc7IgorKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5n IGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFBVQkxJQ0FUSU9OIjsKIAotJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1Qg Y291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAn dHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKK3Rlc3Rfc3RyZWFtaW5n KCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIGNoZWNrIGFsbCB0aGUgY2xlYW51cAotLSAKMi4y My4wLndpbmRvd3MuMQoK --_005_OS3PR01MB627532B048F71FFF8FBDB6A99ED69OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v6-0003-Add-some-checks-before-using-apply-background-wor.patch" Content-Description: v6-0003-Add-some-checks-before-using-apply-background-wor.patch Content-Disposition: attachment; filename="v6-0003-Add-some-checks-before-using-apply-background-wor.patch"; size=18169; creation-date="Wed, 25 May 2022 02:16:00 GMT"; modification-date="Wed, 25 May 2022 02:24:58 GMT" Content-Transfer-Encoding: base64 RnJvbSA0ZGU2MjI2ZTYxZjVjMjdkNDdkZGIyZGZjNGIxMjdjOGQ4Y2UxYWNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog VHVlLCAyNCBNYXkgMjAyMiAyMTowODoyMyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjYgMy80XSBB ZGQgc29tZSBjaGVja3MgYmVmb3JlIHVzaW5nIGFwcGx5IGJhY2tncm91bmQgd29ya2VyCiB0byBh cHBseSBjaGFuZ2VzLgoKSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY2hlY2tzIGFyZSB2aW9sYXRl ZCwgYW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZC4KMS4gVGhlIHVuaXF1ZSBjb2x1bW5zIGJldHdl ZW4gcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGFyZSBkaWZmZXJlbmNlLgoyLiBUaGVyZSBpcyBh bnkgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiBwcmVzZW50IGluIGV4cHJlc3Npb24gaW4gc3Vic2Ny aWJlcidzCnJlbGF0aW9uLiBDaGVjayBmcm9tIHRoZSBmb2xsb3dpbmcgMyBpdGVtczoKICAgIGEu IFRoZSBmdW5jdGlvbiBpbiB0cmlnZ2VyczsKICAgIGIuIENvbHVtbiBkZWZhdWx0IHZhbHVlIGV4 cHJlc3Npb25zIGFuZCBkb21haW4gY29uc3RyYWludHM7CiAgICBjLiBDb25zdHJhaW50IGV4cHJl c3Npb25zLgotLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyAgICAg ICB8ICA2MCArKysrKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24u YyAgICB8IDE3OSArKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvdGFibGVzeW5jLmMgICB8ICAgMSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jICAgICAgfCAgNDcgKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5 cGNhY2hlLmMgICAgICAgICAgICB8ICAxNyArKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9n aWNhbHByb3RvLmggICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWxyZWxhdGlvbi5oICAgICB8ICAxNSArKwogc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaCAg ICAgICAgICAgICAgICAgIHwgICAyICsKIC4uLi9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2Vf Y2FzY2FkZS5wbCAgICB8ICAgNyArCiA5IGZpbGVzIGNoYW5nZWQsIDMyNCBpbnNlcnRpb25zKCsp LCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvcHJvdG8uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwpp bmRleCBmZjg1MTNlMmQyLi43ZGEwZGViODMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9wcm90by5jCkBAIC0yMyw3ICsyMyw4IEBACiAvKgogICogUHJvdG9jb2wgbWVzc2FnZSBm bGFncy4KICAqLwotI2RlZmluZSBMT0dJQ0FMUkVQX0lTX1JFUExJQ0FfSURFTlRJVFkgMQorI2Rl ZmluZSBMT0dJQ0FMUkVQX0lTX1JFUExJQ0FfSURFTlRJVFkJCTB4MDAwMQorI2RlZmluZSBMT0dJ Q0FMUkVQX0lTX1VOSVFVRQkJCQkweDAwMDIKIAogI2RlZmluZSBNRVNTQUdFX1RSQU5TQUNUSU9O QUwgKDE8PDApCiAjZGVmaW5lIFRSVU5DQVRFX0NBU0NBREUJCSgxPDwwKQpAQCAtOTMzLDExICs5 MzQsNTMgQEAgbG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24g cmVsLCBCaXRtYXBzZXQgKmNvbHVtbnMpCiAJVHVwbGVEZXNjCWRlc2M7CiAJaW50CQkJaTsKIAl1 aW50MTYJCW5saXZlYXR0cyA9IDA7Ci0JQml0bWFwc2V0ICAqaWRhdHRycyA9IE5VTEw7CisJQml0 bWFwc2V0ICAqaWRhdHRycyA9IE5VTEwsCisJCQkgICAqYXR0dW5pcXVlID0gTlVMTDsKIAlib29s CQlyZXBsaWRlbnRmdWxsOwogCiAJZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKIAorCWlm IChyZWwtPnJkX3JlbC0+cmVsaGFzaW5kZXgpCisJeworCQlMaXN0CSAgICppbmRleG9pZGxpc3Qg PSBSZWxhdGlvbkdldEluZGV4TGlzdChyZWwpOworCQlMaXN0Q2VsbCAgICppbmRleG9pZHNjYW47 CisJCWZvcmVhY2goaW5kZXhvaWRzY2FuLCBpbmRleG9pZGxpc3QpCisJCXsKKwkJCU9pZAkJCWlu ZGV4b2lkID0gbGZpcnN0X29pZChpbmRleG9pZHNjYW4pOworCQkJUmVsYXRpb24JaW5kZXhSZWw7 CisKKwkJCS8qIExvb2sgdXAgdGhlIGRlc2NyaXB0aW9uIGZvciBpbmRleCAqLworCQkJaW5kZXhS ZWwgPSBSZWxhdGlvbklkR2V0UmVsYXRpb24oaW5kZXhvaWQpOworCisJCQlpZiAoIVJlbGF0aW9u SXNWYWxpZChpbmRleFJlbCkpCisJCQkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBvcGVuIHJlbGF0 aW9uIHdpdGggT0lEICV1IiwgaW5kZXhvaWQpOworCisJCQlpZiAoaW5kZXhSZWwtPnJkX2luZGV4 LT5pbmRpc3VuaXF1ZSkKKwkJCXsKKwkJCQlpbnQJCWk7CisJCQkJLyogQWRkIHJlZmVyZW5jZWQg YXR0cmlidXRlcyB0byBpZGluZGV4YXR0cnMgKi8KKwkJCQlmb3IgKGkgPSAwOyBpIDwgaW5kZXhS ZWwtPnJkX2luZGV4LT5pbmRuYXR0czsgaSsrKQorCQkJCXsKKwkJCQkJaW50CQkJYXR0cm51bSA9 IGluZGV4UmVsLT5yZF9pbmRleC0+aW5ka2V5LnZhbHVlc1tpXTsKKworCQkJCQkvKgorCQkJCQkg KiBXZSBkb24ndCBpbmNsdWRlIG5vbi1rZXkgY29sdW1ucyBpbnRvIGlkaW5kZXhhdHRycyBiaXRt YXBzLiBTZWUKKwkJCQkJICogUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAuCisJCQkJCSAqLwor CQkJCQlpZiAoYXR0cm51bSAhPSAwKQorCQkJCQl7CisJCQkJCQlpZiAoaSA8IGluZGV4UmVsLT5y ZF9pbmRleC0+aW5kbmtleWF0dHMgJiYKKwkJCQkJCQkhYm1zX2lzX21lbWJlcihhdHRybnVtIC0g Rmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciwgYXR0dW5pcXVlKSkKKwkJCQkJCQlh dHR1bmlxdWUgPSBibXNfYWRkX21lbWJlcihhdHR1bmlxdWUsCisJCQkJCQkJCQkJCQkJCSAgYXR0 cm51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOworCQkJCQl9CisJCQkJ fQorCQkJfQorCQkJUmVsYXRpb25DbG9zZShpbmRleFJlbCk7CisJCX0KKwkJbGlzdF9mcmVlKGlu ZGV4b2lkbGlzdCk7CisJfQorCiAJLyogc2VuZCBudW1iZXIgb2YgbGl2ZSBhdHRyaWJ1dGVzICov CiAJZm9yIChpID0gMDsgaSA8IGRlc2MtPm5hdHRzOyBpKyspCiAJewpAQCAtOTc2LDYgKzEwMTks MTAgQEAgbG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVs LCBCaXRtYXBzZXQgKmNvbHVtbnMpCiAJCQkJCQkgIGlkYXR0cnMpKQogCQkJZmxhZ3MgfD0gTE9H SUNBTFJFUF9JU19SRVBMSUNBX0lERU5USVRZOwogCisJCWlmIChibXNfaXNfbWVtYmVyKGF0dC0+ YXR0bnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciwKKwkJCQkJCSAgYXR0 dW5pcXVlKSkKKwkJCWZsYWdzIHw9IExPR0lDQUxSRVBfSVNfVU5JUVVFOworCiAJCXBxX3NlbmRi eXRlKG91dCwgZmxhZ3MpOwogCiAJCS8qIGF0dHJpYnV0ZSBuYW1lICovCkBAIC0xMDAxLDcgKzEw NDgsOCBAQCBsb2dpY2FscmVwX3JlYWRfYXR0cnMoU3RyaW5nSW5mbyBpbiwgTG9naWNhbFJlcFJl bGF0aW9uICpyZWwpCiAJaW50CQkJbmF0dHM7CiAJY2hhcgkgICoqYXR0bmFtZXM7CiAJT2lkCQkg ICAqYXR0dHlwczsKLQlCaXRtYXBzZXQgICphdHRrZXlzID0gTlVMTDsKKwlCaXRtYXBzZXQgICph dHRrZXlzID0gTlVMTCwKKwkJCSAgICphdHR1bmlxdWUgPSBOVUxMOwogCiAJbmF0dHMgPSBwcV9n ZXRtc2dpbnQoaW4sIDIpOwogCWF0dG5hbWVzID0gcGFsbG9jKG5hdHRzICogc2l6ZW9mKGNoYXIg KikpOwpAQCAtMTAxMiwxMSArMTA2MCwxNCBAQCBsb2dpY2FscmVwX3JlYWRfYXR0cnMoU3RyaW5n SW5mbyBpbiwgTG9naWNhbFJlcFJlbGF0aW9uICpyZWwpCiAJewogCQl1aW50OAkJZmxhZ3M7CiAK LQkJLyogQ2hlY2sgZm9yIHJlcGxpY2EgaWRlbnRpdHkgY29sdW1uICovCisJCS8qIENoZWNrIGZv ciByZXBsaWNhIGlkZW50aXR5IGFuZCB1bmlxdWUgY29sdW1uICovCiAJCWZsYWdzID0gcHFfZ2V0 bXNnYnl0ZShpbik7CiAJCWlmIChmbGFncyAmIExPR0lDQUxSRVBfSVNfUkVQTElDQV9JREVOVElU WSkKIAkJCWF0dGtleXMgPSBibXNfYWRkX21lbWJlcihhdHRrZXlzLCBpKTsKIAorCQlpZiAoZmxh Z3MgJiBMT0dJQ0FMUkVQX0lTX1VOSVFVRSkKKwkJCWF0dHVuaXF1ZSA9IGJtc19hZGRfbWVtYmVy KGF0dHVuaXF1ZSwgaSk7CisKIAkJLyogYXR0cmlidXRlIG5hbWUgKi8KIAkJYXR0bmFtZXNbaV0g PSBwc3RyZHVwKHBxX2dldG1zZ3N0cmluZyhpbikpOwogCkBAIC0xMDMwLDYgKzEwODEsNyBAQCBs b2dpY2FscmVwX3JlYWRfYXR0cnMoU3RyaW5nSW5mbyBpbiwgTG9naWNhbFJlcFJlbGF0aW9uICpy ZWwpCiAJcmVsLT5hdHRuYW1lcyA9IGF0dG5hbWVzOwogCXJlbC0+YXR0dHlwcyA9IGF0dHR5cHM7 CiAJcmVsLT5hdHRrZXlzID0gYXR0a2V5czsKKwlyZWwtPmF0dHVuaXF1ZSA9IGF0dHVuaXF1ZTsK IAlyZWwtPm5hdHRzID0gbmF0dHM7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcmVsYXRpb24uYwppbmRleCA4MGZiNTYxYTlhLi5kMDM4ZjdkYzdhIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCkBAIC0xOSwxMiArMTksMTggQEAKIAog I2luY2x1ZGUgImFjY2Vzcy90YWJsZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJz Y3JpcHRpb25fcmVsLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRl ICJub2Rlcy9tYWtlZnVuY3MuaCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCiAj aW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgiCiAjaW5jbHVkZSAicmVwbGlj YXRpb24vd29ya2VyX2ludGVybmFsLmgiCisjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxl ci5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hl LmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy90eXBjYWNo ZS5oIgogCiAKIHN0YXRpYyBNZW1vcnlDb250ZXh0IExvZ2ljYWxSZXBSZWxNYXBDb250ZXh0ID0g TlVMTDsKQEAgLTkxLDYgKzk3LDIzIEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2ludmFsaWRhdGVfY2Io RGF0dW0gYXJnLCBPaWQgcmVsb2lkKQogCX0KIH0KIAorLyoKKyAqIFJlc2V0IHRoZSBmbGFnIHZv bGF0aWxpdHkgb2YgYWxsIGV4aXN0aW5nIGVudHJ5IGluIHRoZSByZWxhdGlvbiBtYXAgY2FjaGUu CisgKi8KK3N0YXRpYyB2b2lkCitsb2dpY2FscmVwX3JlbG1hcF9yZXNldF92b2xhdGlsaXR5X2Ni KERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCit7CisJSEFTSF9TRVFf U1RBVFVTIGhhc2hfc2VxOworCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnk7CisKKwlpZiAo TG9naWNhbFJlcFJlbE1hcCA9PSBOVUxMKQorCQlyZXR1cm47CisKKwloYXNoX3NlcV9pbml0KCZo YXNoX3NlcSwgTG9naWNhbFJlcFJlbE1hcCk7CisJd2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3Nl YXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCQllbnRyeS0+dm9sYXRpbGl0eSA9IEZVTkNUSU9O X1VOS05PV047Cit9CisKIC8qCiAgKiBJbml0aWFsaXplIHRoZSByZWxhdGlvbiBtYXAgY2FjaGUu CiAgKi8KQEAgLTExNiw2ICsxMzksOSBAQCBsb2dpY2FscmVwX3JlbG1hcF9pbml0KHZvaWQpCiAJ LyogV2F0Y2ggZm9yIGludmFsaWRhdGlvbiBldmVudHMuICovCiAJQ2FjaGVSZWdpc3RlclJlbGNh Y2hlQ2FsbGJhY2sobG9naWNhbHJlcF9yZWxtYXBfaW52YWxpZGF0ZV9jYiwKIAkJCQkJCQkJICAo RGF0dW0pIDApOworCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFBST0NPSUQsCisJCQkJ CQkJCSAgbG9naWNhbHJlcF9yZWxtYXBfcmVzZXRfdm9sYXRpbGl0eV9jYiwKKwkJCQkJCQkJICAo RGF0dW0pIDApOwogfQogCiAvKgpAQCAtMTQyLDYgKzE2OCw3IEBAIGxvZ2ljYWxyZXBfcmVsbWFw X2ZyZWVfZW50cnkoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeSkKIAkJcGZyZWUocmVtb3Rl cmVsLT5hdHR0eXBzKTsKIAl9CiAJYm1zX2ZyZWUocmVtb3RlcmVsLT5hdHRrZXlzKTsKKwlibXNf ZnJlZShyZW1vdGVyZWwtPmF0dHVuaXF1ZSk7CiAKIAlpZiAoZW50cnktPmF0dHJtYXApCiAJCXBm cmVlKGVudHJ5LT5hdHRybWFwKTsKQEAgLTE5MCw2ICsyMTcsNyBAQCBsb2dpY2FscmVwX3JlbG1h cF91cGRhdGUoTG9naWNhbFJlcFJlbGF0aW9uICpyZW1vdGVyZWwpCiAJfQogCWVudHJ5LT5yZW1v dGVyZWwucmVwbGlkZW50ID0gcmVtb3RlcmVsLT5yZXBsaWRlbnQ7CiAJZW50cnktPnJlbW90ZXJl bC5hdHRrZXlzID0gYm1zX2NvcHkocmVtb3RlcmVsLT5hdHRrZXlzKTsKKwllbnRyeS0+cmVtb3Rl cmVsLmF0dHVuaXF1ZSA9IGJtc19jb3B5KHJlbW90ZXJlbC0+YXR0dW5pcXVlKTsKIAlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKIH0KIApAQCAtMzA3LDcgKzMzNSw4IEBAIGxvZ2ljYWxy ZXBfcmVsX29wZW4oTG9naWNhbFJlcFJlbElkIHJlbW90ZWlkLCBMT0NLTU9ERSBsb2NrbW9kZSkK IAlpZiAoIWVudHJ5LT5sb2NhbHJlbHZhbGlkKQogCXsKIAkJT2lkCQkJcmVsaWQ7Ci0JCUJpdG1h cHNldCAgKmlka2V5OworCQlCaXRtYXBzZXQgICppZGtleSwKKwkJCQkgICAqdWtleTsKIAkJVHVw bGVEZXNjCWRlc2M7CiAJCU1lbW9yeUNvbnRleHQgb2xkY3R4OwogCQlpbnQJCQlpOwpAQCAtNDE1 LDYgKzQ0NCwxNTMgQEAgbG9naWNhbHJlcF9yZWxfb3BlbihMb2dpY2FsUmVwUmVsSWQgcmVtb3Rl aWQsIExPQ0tNT0RFIGxvY2ttb2RlKQogCQkJfQogCQl9CiAKKwkJLyoKKwkJICogQ2hlY2sgd2hl dGhlciB0aGUgdW5pcXVlIGluZGV4IG9mIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBhcmUKKwkJ ICogY29uc2lzdGVudC4KKwkJICovCisJCWVudHJ5LT5zYW1ldW5pcXVlID0gdHJ1ZTsKKwkJdWtl eSA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKGVudHJ5LT5sb2NhbHJlbCwKKwkJCQkJCQkJ CQkgIElOREVYX0FUVFJfQklUTUFQX0tFWSk7CisKKwkJaWYgKHVrZXkpCisJCXsKKwkJCWkgPSAt MTsKKwkJCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcih1a2V5LCBpKSkgPj0gMCkKKwkJCXsK KwkJCQlpbnQJCQlhdHRudW0gPSBpICsgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJl cjsKKworCQkJCWF0dG51bSA9IEF0dHJOdW1iZXJHZXRBdHRyT2Zmc2V0KGF0dG51bSk7CisKKwkJ CQlpZiAoZW50cnktPmF0dHJtYXAtPmF0dG51bXNbYXR0bnVtXSA8IDAgfHwKKwkJCQkJIWJtc19p c19tZW1iZXIoZW50cnktPmF0dHJtYXAtPmF0dG51bXNbYXR0bnVtXSwgcmVtb3RlcmVsLT5hdHR1 bmlxdWUpKQorCQkJCXsKKwkJCQkJZW50cnktPnNhbWV1bmlxdWUgPSBmYWxzZTsKKwkJCQkJYnJl YWs7CisJCQkJfQorCQkJfQorCQl9CisKKwkJaWYgKGVudHJ5LT52b2xhdGlsaXR5ID09IEZVTkNU SU9OX1VOS05PV04pCisJCXsKKwkJCS8qCisJCQkgKiBDaGVjayBmcm9tIHRoZSBmb2xsb3dpbmcg cG9pbnRzOgorCQkJICoKKwkJCSAqIGEuIFRoZSBmdW5jdGlvbiBpbiB0cmlnZ2VyczsKKwkJCSAq IGIuIENvbHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb25zIGFuZCBkb21haW4gY29uc3RyYWlu dHM7CisJCQkgKiBjLiBDb25zdHJhaW50IGV4cHJlc3Npb25zLgorCQkJICovCisJCQlib29sCW5v bmltbXV0YWJsZSA9IGZhbHNlOworCisJCQkvKiBDaGVjayB0aGUgdHJpZ2dlciBmdW5jdGlvbnMu ICovCisJCQlpZiAoIW5vbmltbXV0YWJsZSkKKwkJCXsKKwkJCQlpbnQJaTsKKworCQkJCWlmIChl bnRyeS0+bG9jYWxyZWwtPnRyaWdkZXNjICE9IE5VTEwpCisJCQkJCWZvciAoaSA9IDA7IGkgPCBl bnRyeS0+bG9jYWxyZWwtPnRyaWdkZXNjLT5udW10cmlnZ2VyczsgaSsrKQorCQkJCQl7CisJCQkJ CQlUcmlnZ2VyCQkqdHJpZyA9IGVudHJ5LT5sb2NhbHJlbC0+dHJpZ2Rlc2MtPnRyaWdnZXJzICsg aTsKKworCQkJCQkJaWYgKGZ1bmNfdm9sYXRpbGUodHJpZy0+dGdmb2lkKSAhPSBQUk9WT0xBVElM RV9JTU1VVEFCTEUpCisJCQkJCQl7CisJCQkJCQkJbm9uaW1tdXRhYmxlID0gdHJ1ZTsKKwkJCQkJ CQlicmVhazsKKwkJCQkJCX0KKwkJCQkJfQorCQkJfQorCisJCQkvKiBDaGVjayB0aGUgY29sdW1u cy4gKi8KKwkJCWlmICghbm9uaW1tdXRhYmxlKQorCQkJeworCQkJCVR1cGxlRGVzYwl0dXBkZXNj ID0gUmVsYXRpb25HZXREZXNjcihlbnRyeS0+bG9jYWxyZWwpOworCQkJCWludAkJCWF0dG51bTsK KworCQkJCWZvciAoYXR0bnVtID0gMDsgYXR0bnVtIDwgdHVwZGVzYy0+bmF0dHM7IGF0dG51bSsr KQorCQkJCXsKKwkJCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVwbGVEZXNjQXR0cih0dXBk ZXNjLCBhdHRudW0pOworCisJCQkJCS8qIGJyZWFrIGlmIHdlIHNldCBub25pbW11dGFibGUgaW4g bGFzdCBjaGVjayBmb3IgZG9tYWluLiAqLworCQkJCQlpZiAobm9uaW1tdXRhYmxlKQorCQkJCQkJ YnJlYWs7CisKKwkJCQkJLyogV2UgZG9uJ3QgbmVlZCBpbmZvIGZvciBkcm9wcGVkIG9yIGdlbmVy YXRlZCBhdHRyaWJ1dGVzICovCisJCQkJCWlmIChhdHQtPmF0dGlzZHJvcHBlZCB8fCBhdHQtPmF0 dGdlbmVyYXRlZCkKKwkJCQkJCWNvbnRpbnVlOworCisJCQkJCS8qIFdlIGRvbid0IG5lZWQgdG8g Y2hlY2sgY29sdW1ucyB0aGF0IG9ubHkgZXhpc3Qgb24gdGhlIHN1YnNjcmliZXIgKi8KKwkJCQkJ aWYgKGVudHJ5LT5hdHRybWFwLT5hdHRudW1zW2F0dG51bV0gPCAwKQorCQkJCQkJY29udGludWU7 CisKKwkJCQkJaWYgKGF0dC0+YXR0aGFzZGVmKQorCQkJCQl7CisJCQkJCQlOb2RlCSAgICpkZWZh dWx0ZXhwcjsKKworCQkJCQkJZGVmYXVsdGV4cHIgPSBidWlsZF9jb2x1bW5fZGVmYXVsdChlbnRy eS0+bG9jYWxyZWwsIGF0dG51bSArIDEpOworCQkJCQkJaWYgKGNvbnRhaW5fbXV0YWJsZV9mdW5j dGlvbnMoZGVmYXVsdGV4cHIpKQorCQkJCQkJeworCQkJCQkJCW5vbmltbXV0YWJsZSA9IHRydWU7 CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisJCQkJCX0KKworCQkJCQkvKgorCQkJCQkgKiBJZiB0 aGUgY29sdW1uIGlzIG9mIGEgRE9NQUlOIHR5cGUsIGRldGVybWluZSB3aGV0aGVyIHRoYXQKKwkJ CQkJICogZG9tYWluIGhhcyBhbnkgQ0hFQ0sgZXhwcmVzc2lvbnMgdGhhdCBhcmUgbm90IGltbXV0 YWJsZS4KKwkJCQkJICovCisJCQkJCWlmIChnZXRfdHlwdHlwZShhdHQtPmF0dHR5cGlkKSA9PSBU WVBUWVBFX0RPTUFJTikKKwkJCQkJeworCQkJCQkJTGlzdAkJICAgKmRvbWFpbl9jb25zdHJhaW50 czsKKwkJCQkJCUxpc3RDZWxsCSAgICpsYzsKKworCQkJCQkJZG9tYWluX2NvbnN0cmFpbnRzID0g R2V0RG9tYWluQ29uc3RyYWludHMoYXR0LT5hdHR0eXBpZCk7CisKKwkJCQkJCWZvcmVhY2gobGMs IGRvbWFpbl9jb25zdHJhaW50cykKKwkJCQkJCXsKKwkJCQkJCQlEb21haW5Db25zdHJhaW50U3Rh dGUgKmNvbiA9IChEb21haW5Db25zdHJhaW50U3RhdGUgKikgbGZpcnN0KGxjKTsKKworCQkJCQkJ CWlmIChjb24tPmNoZWNrX2V4cHIgJiYgY29udGFpbl9tdXRhYmxlX2Z1bmN0aW9ucygoTm9kZSAq KSBjb24tPmNoZWNrX2V4cHIpKQorCQkJCQkJCXsKKwkJCQkJCQkJbm9uaW1tdXRhYmxlID0gdHJ1 ZTsKKwkJCQkJCQkJYnJlYWs7CisJCQkJCQkJfQorCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJ fQorCisJCQkvKiBDaGVjayB0aGUgY29uc3RyYWludHMuICovCisJCQlpZiAoIW5vbmltbXV0YWJs ZSkKKwkJCXsKKwkJCQlUdXBsZURlc2MJCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKGVudHJ5 LT5sb2NhbHJlbCk7CisKKwkJCQlpZiAodHVwZGVzYy0+Y29uc3RyKQorCQkJCXsKKwkJCQkJQ29u c3RyQ2hlY2sJICAgKmNoZWNrID0gdHVwZGVzYy0+Y29uc3RyLT5jaGVjazsKKwkJCQkJaW50CQkJ CWk7CisKKwkJCQkJLyoKKwkJCQkJICogRGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBhbnkgQ0hFQ0sg Y29uc3RyYWludHMgd2hpY2ggY29udGFpbnMKKwkJCQkJICogbm9uLWltbXV0YWJsZSBmdW5jdGlv bi4KKwkJCQkJICovCisJCQkJCWZvciAoaSA9IDA7IGkgPCB0dXBkZXNjLT5jb25zdHItPm51bV9j aGVjazsgaSsrKQorCQkJCQl7CisJCQkJCQlFeHByCSAgICpjaGVja19leHByID0gc3RyaW5nVG9O b2RlKGNoZWNrW2ldLmNjYmluKTsKKworCQkJCQkJaWYgKGNvbnRhaW5fbXV0YWJsZV9mdW5jdGlv bnMoKE5vZGUgKikgY2hlY2tfZXhwcikpCisJCQkJCQl7CisJCQkJCQkJbm9uaW1tdXRhYmxlID0g dHJ1ZTsKKwkJCQkJCQlicmVhazsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCX0KKworCQkJ aWYgKG5vbmltbXV0YWJsZSkKKwkJCQllbnRyeS0+dm9sYXRpbGl0eSA9IEZVTkNUSU9OX05PTklN TVVUQUJMRTsKKwkJCWVsc2UKKwkJCQllbnRyeS0+dm9sYXRpbGl0eSA9IEZVTkNUSU9OX0lNTVVU QUJMRTsKKwkJfQorCiAJCWVudHJ5LT5sb2NhbHJlbHZhbGlkID0gdHJ1ZTsKIAl9CiAKQEAgLTU3 MCw2ICs3NDYsNyBAQCBsb2dpY2FscmVwX3BhcnRpdGlvbl9vcGVuKExvZ2ljYWxSZXBSZWxNYXBF bnRyeSAqcm9vdCwKIAl9CiAJZW50cnktPnJlbW90ZXJlbC5yZXBsaWRlbnQgPSByZW1vdGVyZWwt PnJlcGxpZGVudDsKIAllbnRyeS0+cmVtb3RlcmVsLmF0dGtleXMgPSBibXNfY29weShyZW1vdGVy ZWwtPmF0dGtleXMpOworCWVudHJ5LT5yZW1vdGVyZWwuYXR0dW5pcXVlID0gYm1zX2NvcHkocmVt b3RlcmVsLT5hdHR1bmlxdWUpOwogCiAJZW50cnktPmxvY2FscmVsID0gcGFydHJlbDsKIAllbnRy eS0+bG9jYWxyZWxvaWQgPSBwYXJ0T2lkOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvdGFibGVzeW5jLmMKaW5kZXggNWViNjAzMjdiNi4uNDg4NWVhYTA3OCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCkBAIC04ODAsNiArODgwLDcgQEAg ZmV0Y2hfcmVtb3RlX3RhYmxlX2luZm8oY2hhciAqbnNwbmFtZSwgY2hhciAqcmVsbmFtZSwKIAls cmVsLT5hdHRuYW1lcyA9IHBhbGxvYzAoTWF4VHVwbGVBdHRyaWJ1dGVOdW1iZXIgKiBzaXplb2Yo Y2hhciAqKSk7CiAJbHJlbC0+YXR0dHlwcyA9IHBhbGxvYzAoTWF4VHVwbGVBdHRyaWJ1dGVOdW1i ZXIgKiBzaXplb2YoT2lkKSk7CiAJbHJlbC0+YXR0a2V5cyA9IE5VTEw7CisJbHJlbC0+YXR0dW5p cXVlID0gTlVMTDsKIAogCS8qCiAJICogU3RvcmUgdGhlIGNvbHVtbnMgYXMgYSBsaXN0IG9mIG5h bWVzLiAgSWdub3JlIHRob3NlIHRoYXQgYXJlIG5vdApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMKaW5kZXggZmQ0N2M0ODUyNC4uNjJjM2EwZDhkYSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0yODcsNiArMjg3LDcgQEAgc3RhdGlj IHZvaWQgYXBwbHlfYmd3b3JrZXJfc2VuZF9kYXRhKFdvcmtlclN0YXRlICp3c3RhdGUsIFNpemUg bmJ5dGVzLAogc3RhdGljIHZvaWQgYXBwbHlfYmd3b3JrZXJfZnJlZShXb3JrZXJTdGF0ZSAqd3N0 YXRlKTsKIHN0YXRpYyB2b2lkIGFwcGx5X2Jnd29ya2VyX2NoZWNrX3N0YXR1cyh2b2lkKTsKIHN0 YXRpYyB2b2lkIGFwcGx5X2Jnd29ya2VyX3NldF9zdGF0ZShjaGFyIHN0YXRlKTsKK3N0YXRpYyB2 b2lkIGFwcGx5X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAq cmVsKTsKIAogdHlwZWRlZiBzdHJ1Y3QgRmx1c2hQb3NpdGlvbgogewpAQCAtMjEyNyw2ICsyMTI4 LDggQEAgYXBwbHlfaGFuZGxlX2luc2VydChTdHJpbmdJbmZvIHMpCiAJLyogU2V0IHJlbGF0aW9u IGZvciBlcnJvciBjYWxsYmFjayAqLwogCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5yZWwgPSBy ZWw7CiAKKwlhcHBseV9iZ3dvcmtlcl9yZWxhdGlvbl9jaGVjayhyZWwpOworCiAJLyogSW5pdGlh bGl6ZSB0aGUgZXhlY3V0b3Igc3RhdGUuICovCiAJZWRhdGEgPSBjcmVhdGVfZWRhdGFfZm9yX3Jl bGF0aW9uKHJlbCk7CiAJZXN0YXRlID0gZWRhdGEtPmVzdGF0ZTsKQEAgLTIyNjMsNiArMjI2Niw4 IEBAIGFwcGx5X2hhbmRsZV91cGRhdGUoU3RyaW5nSW5mbyBzKQogCS8qIENoZWNrIGlmIHdlIGNh biBkbyB0aGUgdXBkYXRlLiAqLwogCWNoZWNrX3JlbGF0aW9uX3VwZGF0YWJsZShyZWwpOwogCisJ YXBwbHlfYmd3b3JrZXJfcmVsYXRpb25fY2hlY2socmVsKTsKKwogCS8qIEluaXRpYWxpemUgdGhl IGV4ZWN1dG9yIHN0YXRlLiAqLwogCWVkYXRhID0gY3JlYXRlX2VkYXRhX2Zvcl9yZWxhdGlvbihy ZWwpOwogCWVzdGF0ZSA9IGVkYXRhLT5lc3RhdGU7CkBAIC0yNDMxLDYgKzI0MzYsOCBAQCBhcHBs eV9oYW5kbGVfZGVsZXRlKFN0cmluZ0luZm8gcykKIAkvKiBDaGVjayBpZiB3ZSBjYW4gZG8gdGhl IGRlbGV0ZS4gKi8KIAljaGVja19yZWxhdGlvbl91cGRhdGFibGUocmVsKTsKIAorCWFwcGx5X2Jn d29ya2VyX3JlbGF0aW9uX2NoZWNrKHJlbCk7CisKIAkvKiBJbml0aWFsaXplIHRoZSBleGVjdXRv ciBzdGF0ZS4gKi8KIAllZGF0YSA9IGNyZWF0ZV9lZGF0YV9mb3JfcmVsYXRpb24ocmVsKTsKIAll c3RhdGUgPSBlZGF0YS0+ZXN0YXRlOwpAQCAtNTExOSwzICs1MTI2LDQzIEBAIGFwcGx5X2Jnd29y a2VyX3NldF9zdGF0ZShjaGFyIHN0YXRlKQogCU15UGFyYWxsZWxTdGF0ZS0+c3RhdGUgPSBzdGF0 ZTsKIAlTcGluTG9ja1JlbGVhc2UoJk15UGFyYWxsZWxTdGF0ZS0+bXV0ZXgpOwogfQorCisvKgor ICogQ2hlY2sgaWYgY2hhbmdlcyBvbiB0aGlzIGxvZ2ljYWwgcmVwbGljYXRpb24gcmVsYXRpb24g IGNhbiBiZSBhcHBsaWVkIGJ5CisgKiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4KKyAqLworc3Rh dGljIHZvaWQKK2FwcGx5X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKExvZ2ljYWxSZXBSZWxNYXBF bnRyeSAqcmVsKQoreworCS8qIENoZWNrIG9ubHkgd2UgYXJlIGluIGFwcGx5IGJnd29ya2VyLiAq LworCWlmICghYW1fYXBwbHlfYmd3b3JrZXIoKSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBGSVhN RTogQ2hlY2tzIG9uIHBhcnRpdGlvbmVkIHRhYmxlcyBhcmUgY3VycmVudGx5IG5vdCBzdXBwb3J0 ZWQuCisJICogQWRkaW5nIHRoaXMgY2hlY2sgcmVxdWlyZXMgYWRkaXRpb25hbCBmaXhlcyBmb3Ig b3RoZXIgaXNzdWVzLgorCSAqIEkgd2lsbCBhZGQgdGhpcyBsYXRlciwgYWZ0ZXIgdGhlIHJlbGF0 ZWQgaXNzdWVzIGFyZSBmaXhlZC4KKwkgKi8KKwlpZiAocmVsLT5sb2NhbHJlbC0+cmRfcmVsLT5y ZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCXJldHVybjsKKworCS8qCisJ ICogSWYgYW55IHVuaXF1ZSBpbmRleCBleGlzdCwgY2hlY2sgdGhhdCB0aGV5IGFyZSBzYW1lIGFz IHJlbW90ZXJlbC4KKwkgKi8KKwlpZiAoIXJlbC0+c2FtZXVuaXF1ZSkKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVy cm1zZygiY2Fubm90IHJlcGxpY2F0ZSByZWxhdGlvbiB3aXRoIGRpZmZlcmVudCB1bmlxdWUgaW5k ZXgiKSwKKwkJCQkgZXJyaGludCgiUGxlYXNlIGNoYW5nZSB0aGUgc3RyZWFtaW5nIG9wdGlvbiB0 byAnb24nIGluc3RlYWQgb2YgJ2FwcGx5Jy4iKSkpOworCisJLyoKKwkgKiBDaGVjayBpZiB0aGVy ZSBpcyBhbnkgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiBwcmVzZW50IGluIGV4cHJlc3Npb24gaW4K KwkgKiB0aGlzIHJlbGF0aW9uLgorCSAqLworCWlmIChyZWwtPnZvbGF0aWxpdHkgPT0gRlVOQ1RJ T05fTk9OSU1NVVRBQkxFKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgcmVwbGljYXRlIHJl bGF0aW9uLiBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiIpLAor CQkJCSBlcnJoaW50KCJQbGVhc2UgY2hhbmdlIHRoZSBzdHJlYW1pbmcgb3B0aW9uIHRvICdvbicg aW5zdGVhZCBvZiAnYXBwbHknLiIpKSk7CisKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3R5cGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5j CmluZGV4IDgwOGY5ZWJkMGQuLmIyNDg4OTlkODIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3R5cGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2Fj aGUuYwpAQCAtMjU0MCw2ICsyNTQwLDIzIEBAIGNvbXBhcmVfdmFsdWVzX29mX2VudW0oVHlwZUNh Y2hlRW50cnkgKnRjYWNoZSwgT2lkIGFyZzEsIE9pZCBhcmcyKQogCQlyZXR1cm4gMDsKIH0KIAor LyoKKyAqIEdldERvbWFpbkNvbnN0cmFpbnRzIC0tLSBnZXQgRG9tYWluQ29uc3RyYWludFN0YXRl IGxpc3Qgb2Ygc3BlY2lmaWVkIGRvbWFpbiB0eXBlCisgKi8KK0xpc3QgKgorR2V0RG9tYWluQ29u c3RyYWludHMoT2lkIHR5cGVfaWQpCit7CisJVHlwZUNhY2hlRW50cnkgKnR5cGVudHJ5OworCUxp c3QJCSAgICpjb25zdHJhaW50cyA9IE5JTDsKKworCXR5cGVudHJ5ID0gbG9va3VwX3R5cGVfY2Fj aGUodHlwZV9pZCwgVFlQRUNBQ0hFX0RPTUFJTl9DT05TVFJfSU5GTyk7CisKKwlpZih0eXBlbnRy eS0+ZG9tYWluRGF0YSAhPSBOVUxMKQorCQljb25zdHJhaW50cyA9IHR5cGVudHJ5LT5kb21haW5E YXRhLT5jb25zdHJhaW50czsKKworCXJldHVybiBjb25zdHJhaW50czsKK30KKwogLyoKICAqIExv YWQgKG9yIHJlLWxvYWQpIHRoZSBlbnVtRGF0YSBtZW1iZXIgb2YgdGhlIHR5cGNhY2hlIGVudHJ5 LgogICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8u aCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCmluZGV4IGE3NzFhYjhm ZjMuLmE4ODUzNTgyMGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWxwcm90by5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCkBA IC0xMDgsNiArMTA4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJlbGF0aW9uCiAJY2hh cgkJcmVwbGlkZW50OwkJLyogcmVwbGljYSBpZGVudGl0eSAqLwogCWNoYXIJCXJlbGtpbmQ7CQkv KiByZW1vdGUgcmVsYXRpb24ga2luZCAqLwogCUJpdG1hcHNldCAgKmF0dGtleXM7CQkvKiBCaXRt YXAgb2Yga2V5IGNvbHVtbnMgKi8KKwlCaXRtYXBzZXQgICphdHR1bmlxdWU7CQkvKiBCaXRtYXAg b2YgdW5pcXVlIGNvbHVtbnMgKi8KIH0gTG9naWNhbFJlcFJlbGF0aW9uOwogCiAvKiBUeXBlIG1h cHBpbmcgaW5mbyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNh bHJlbGF0aW9uLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaApp bmRleCA3YmY4Y2QyMmJkLi45ZjU2OGU5YzAwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9s b2dpY2FscmVsYXRpb24uaApAQCAtMTUsNiArMTUsMTcgQEAKICNpbmNsdWRlICJhY2Nlc3MvYXR0 bWFwLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgiCiAKKy8qCisgKglT dGF0ZXMgdG8gZGV0ZXJtaW5lIHZvbGF0aWxpdHkgb2YgdGhlIGZ1bmN0aW9uIGluIGV4cHJlc3Np b25zIGluIG9uZQorICoJcmVsYXRpb24uCisgKi8KK3R5cGVkZWYgZW51bSBSZWxGdW5jVm9sYXRp bGl0eQoreworCUZVTkNUSU9OX1VOS05PV04gPSAwLAkvKiBpbml0aWFsaXppbmcgICovCisJRlVO Q1RJT05fSU1NVVRBQkxFLAkJLyogYWxsIGZ1bmN0aW9ucyBhcmUgaW1tdXRhYmxlIGZ1bmN0aW9u ICovCisJRlVOQ1RJT05fTk9OSU1NVVRBQkxFCS8qIGF0IGxlYXN0IG9uZSBub24taW1tdXRhYmxl IGZ1bmN0aW9uICovCit9IFJlbEZ1bmNWb2xhdGlsaXR5OworCiB0eXBlZGVmIHN0cnVjdCBMb2dp Y2FsUmVwUmVsTWFwRW50cnkKIHsKIAlMb2dpY2FsUmVwUmVsYXRpb24gcmVtb3RlcmVsOwkvKiBr ZXkgaXMgcmVtb3RlcmVsLnJlbW90ZWlkICovCkBAIC0zMSw2ICs0MiwxMCBAQCB0eXBlZGVmIHN0 cnVjdCBMb2dpY2FsUmVwUmVsTWFwRW50cnkKIAlSZWxhdGlvbglsb2NhbHJlbDsJCS8qIHJlbGNh Y2hlIGVudHJ5IChOVUxMIHdoZW4gY2xvc2VkKSAqLwogCUF0dHJNYXAgICAgKmF0dHJtYXA7CQkv KiBtYXAgb2YgbG9jYWwgYXR0cmlidXRlcyB0byByZW1vdGUgb25lcyAqLwogCWJvb2wJCXVwZGF0 YWJsZTsJCS8qIENhbiBhcHBseSB1cGRhdGVzL2RlbGV0ZXM/ICovCisJYm9vbAkJc2FtZXVuaXF1 ZTsJCS8qIElzIHRoZSB1bmlxdWUgY29sdW1uIG9mIGxvY2FsIGFuZCByZW1vdGUKKwkJCQkJCQkJ ICAgY29uc2lzdGVudD8gKi8KKwlSZWxGdW5jVm9sYXRpbGl0eQl2b2xhdGlsaXR5OwkJLyogYWxs IGZ1bmN0aW9ucyBpbiBsb2NhbHJlbCBhcmUKKwkJCQkJCQkJICAgaW1tdXRhYmxlIGZ1bmN0aW9u PyAqLwogCiAJLyogU3luYyBzdGF0ZS4gKi8KIAljaGFyCQlzdGF0ZTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy90eXBjYWNoZS5o CmluZGV4IDQzMWFkN2YxYjMuLmVkN2MyZTdmNDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0 aWxzL3R5cGNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaApAQCAtMTk5 LDYgKzE5OSw4IEBAIGV4dGVybiB1aW50NjQgYXNzaWduX3JlY29yZF90eXBlX2lkZW50aWZpZXIo T2lkIHR5cGVfaWQsIGludDMyIHR5cG1vZCk7CiAKIGV4dGVybiBpbnQJY29tcGFyZV92YWx1ZXNf b2ZfZW51bShUeXBlQ2FjaGVFbnRyeSAqdGNhY2hlLCBPaWQgYXJnMSwgT2lkIGFyZzIpOwogCitl eHRlcm4gTGlzdCAqR2V0RG9tYWluQ29uc3RyYWludHMoT2lkIHR5cGVfaWQpOworCiBleHRlcm4g c2l6ZV90IFNoYXJlZFJlY29yZFR5cG1vZFJlZ2lzdHJ5RXN0aW1hdGUodm9pZCk7CiAKIGV4dGVy biB2b2lkIFNoYXJlZFJlY29yZFR5cG1vZFJlZ2lzdHJ5SW5pdChTaGFyZWRSZWNvcmRUeXBtb2RS ZWdpc3RyeSAqLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3Bo YXNlX2Nhc2NhZGUucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2Fz Y2FkZS5wbAppbmRleCA2NjM4MDhhY2I5Li5iMzE3MTQ0MjMwIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbApAQCAtMzgsNiArMzgsMTMgQEAg c3ViIHRlc3Rfc3RyZWFtaW5nCiAJCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0MKIAkJU0VU IChzdHJlYW1pbmcgPSAkc3RyZWFtaW5nX21vZGUpIik7CiAKKwlpZiAoJHN0cmVhbWluZ19tb2Rl IGVxICdhcHBseScpCisJeworCQkkbm9kZV9DLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIK KwkJQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgYyBEUk9QIERFRkFVTFQiKTsKKwl9CisKIAkj IFdhaXQgZm9yIHN1YnNjcmliZXJzIHRvIGZpbmlzaCBpbml0aWFsaXphdGlvbgogCiAJJG5vZGVf QS0+cG9sbF9xdWVyeV91bnRpbCgKLS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_005_OS3PR01MB627532B048F71FFF8FBDB6A99ED69OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v6-0004-Add-a-GUC-max_apply_bgworkers_per_subscription-to.patch" Content-Description: v6-0004-Add-a-GUC-max_apply_bgworkers_per_subscription-to.patch Content-Disposition: attachment; filename="v6-0004-Add-a-GUC-max_apply_bgworkers_per_subscription-to.patch"; size=7013; creation-date="Wed, 25 May 2022 02:16:00 GMT"; modification-date="Wed, 25 May 2022 02:24:59 GMT" Content-Transfer-Encoding: base64 RnJvbSBiODYzZmE5NDEyZjY4NjZiNTZiMjFmMmY3NTcxOWFhZWEyNzU5ODc3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog VHVlLCAyNCBNYXkgMjAyMiAyMToxNToxOCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjYgNC80XSBB ZGQgYSBHVUMgIm1heF9hcHBseV9iZ3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiIgdG8KIGNvbnRy b2wgcGFyYWxsZWxpc20uCgpUaGlzIEdVQyBjb250cm9scyBob3cgbWFueSBhcHBseSBiYWNrZ3Jv dW5kIHdvcmtlcnMgY2FuIGJlIGxhdW5jaGVkIHBlcgpzdWJzY3JpcHRpb24uCi0tLQogZG9jL3Ny Yy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgMjUgKysrKysrKysrKysr KysrKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jICAgIHwg MjUgKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYyAgICAgIHwgIDkgKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyAg ICAgICAgICAgICAgICAgIHwgMTIgKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bv c3RncmVzcWwuY29uZi5zYW1wbGUgfCAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dp Y2FsbGF1bmNoZXIuaCAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJf aW50ZXJuYWwuaCAgICAgfCAgMSArCiA3IGZpbGVzIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKykK CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29u ZmlnLnNnbWwKaW5kZXggMDM5ODY5NDZhOC4uZjRlMDk3YmUyYyAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtNDk3 MCw2ICs0OTcwLDMxIEBAIEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5 bmM8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICA8L2xpc3RpdGVt PgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtbWF4 LWFwcGx5LWJnd29ya2Vycy1wZXItc3Vic2NyaXB0aW9uIiB4cmVmbGFiZWw9Im1heF9hcHBseV9i Z3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiI+CisgICAgICA8dGVybT48dmFybmFtZT5tYXhfYXBw bHlfYmd3b3JrZXJzX3Blcl9zdWJzY3JpcHRpb248L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90 eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+bWF4X2Fw cGx5X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBh cmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAg ICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBNYXhpbXVtIG51bWJlciBvZiBh cHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMgcGVyIHN1YnNjcmlwdGlvbi4gVGhpcworICAgICAgICBw YXJhbWV0ZXIgY29udHJvbHMgdGhlIGFtb3VudCBvZiBwYXJhbGxlbGlzbSBvZiB0aGUgc3RyZWFt aW5nIG9mCisgICAgICAgIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyBpZiB3ZSBzZXQgc3Vic2Ny aXB0aW9uIG9wdGlvbgorICAgICAgICA8bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+IHRvIDxs aXRlcmFsPmFwcGx5PC9saXRlcmFsPi4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+Cisg ICAgICAgIFRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMgYXJlIHRha2VuIGZyb20gdGhlIHBv b2wgZGVmaW5lZCBieQorICAgICAgICA8dmFybmFtZT5tYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93 b3JrZXJzPC92YXJuYW1lPi4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAg IFRoZSBkZWZhdWx0IHZhbHVlIGlzIDMuIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBp biB0aGUKKyAgICAgICAgPGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5hbWU+IGZpbGUg b3Igb24gdGhlIHNlcnZlciBjb21tYW5kCisgICAgICAgIGxpbmUuCisgICAgICAgPC9wYXJhPgor ICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPC92YXJpYWJs ZWxpc3Q+CiAgICAgPC9zZWN0Mj4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9sYXVuY2hlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9s YXVuY2hlci5jCmluZGV4IGY4ZjA0OTA2MmMuLjgyYWU4ZDhlYzQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKQEAgLTU0LDYgKzU0LDcgQEAKIAogaW50CQkJ bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDQ7CiBpbnQJCQltYXhfc3luY193b3Jr ZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyOworaW50CQkJbWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJf c3Vic2NyaXB0aW9uID0gMzsKIAogTG9naWNhbFJlcFdvcmtlciAqTXlMb2dpY2FsUmVwV29ya2Vy ID0gTlVMTDsKIApAQCAtNzM2LDYgKzczNywzMCBAQCBsb2dpY2FscmVwX3N5bmNfd29ya2VyX2Nv dW50KE9pZCBzdWJpZCkKIAlyZXR1cm4gcmVzOwogfQogCisvKgorICogQ291bnQgdGhlIG51bWJl ciBvZiByZWdpc3RlcmVkIChub3QgbmVjZXNzYXJpbHkgcnVubmluZykgYXBwbHkgYmFja2dyb3Vu ZAorICogd29ya2VyIGZvciBhIHN1YnNjcmlwdGlvbi4KKyAqLworaW50Citsb2dpY2FscmVwX2Fw cGx5X2JhY2tncm91bmRfd29ya2VyX2NvdW50KE9pZCBzdWJpZCkKK3sKKwlpbnQJCQlpOworCWlu dAkJCXJlcyA9IDA7CisKKwlBc3NlcnQoTFdMb2NrSGVsZEJ5TWUoTG9naWNhbFJlcFdvcmtlckxv Y2spKTsKKworCS8qIFNlYXJjaCBmb3IgYXR0YWNoZWQgd29ya2VyIGZvciBhIGdpdmVuIHN1YnNj cmlwdGlvbiBpZC4gKi8KKwlmb3IgKGkgPSAwOyBpIDwgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25f d29ya2VyczsgaSsrKQorCXsKKwkJTG9naWNhbFJlcFdvcmtlciAqdyA9ICZMb2dpY2FsUmVwQ3R4 LT53b3JrZXJzW2ldOworCisJCWlmICh3LT5zdWJpZCA9PSBzdWJpZCAmJiB3LT5zdWJ3b3JrZXIp CisJCQlyZXMrKzsKKwl9CisKKwlyZXR1cm4gcmVzOworfQorCiAvKgogICogQXBwbHlMYXVuY2hl clNobWVtU2l6ZQogICoJCUNvbXB1dGUgc3BhY2UgbmVlZGVkIGZvciByZXBsaWNhdGlvbiBsYXVu Y2hlciBzaGFyZWQgbWVtb3J5CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIu YwppbmRleCA2MmMzYTBkOGRhLi5kOTc0NGIxOGUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvd29ya2VyLmMKQEAgLTE4MCw2ICsxODAsNyBAQAogI2luY2x1ZGUgInBvc3RtYXN0 ZXIvd2Fsd3JpdGVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vZGVjb2RlLmgiCiAjaW5jbHVk ZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxs YXVuY2hlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIgogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9u L2xvZ2ljYWx3b3JrZXIuaCIKQEAgLTQ5NzgsOSArNDk3OSwxNyBAQCBhcHBseV9iZ3dvcmtlcl9z ZXR1cCh2b2lkKQogCU1lbW9yeUNvbnRleHQJCW9sZGNvbnRleHQ7CiAJYm9vbAkJCQlsYXVuY2hl ZDsKIAlXb3JrZXJTdGF0ZQkJICAgKndzdGF0ZTsKKwlpbnQJCQkJCW5hcHBseXdvcmtlcnM7CiAK IAllbG9nKExPRywgInNldHRpbmcgdXAgYXBwbHkgd29ya2VyICMldSIsIGxpc3RfbGVuZ3RoKEFw cGx5V29ya2Vyc0xpc3QpICsgMSk7CiAKKwkvKiBDaGVjayBJZiB0aGVyZSBhcmUgZnJlZSB3b3Jr ZXIgc2xvdChzKSAqLworCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NI QVJFRCk7CisJbmFwcGx5d29ya2VycyA9IGxvZ2ljYWxyZXBfYXBwbHlfYmFja2dyb3VuZF93b3Jr ZXJfY291bnQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCk7CisJTFdMb2NrUmVsZWFzZShMb2dp Y2FsUmVwV29ya2VyTG9jayk7CisJaWYgKG5hcHBseXdvcmtlcnMgPj0gbWF4X2FwcGx5X2Jnd29y a2Vyc19wZXJfc3Vic2NyaXB0aW9uKQorCQlyZXR1cm4gTlVMTDsKKwogCW9sZGNvbnRleHQgPSBN ZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKIAogCXdzdGF0ZSA9IChXb3JrZXJT dGF0ZSAqKSBwYWxsb2MwKHNpemVvZihXb3JrZXJTdGF0ZSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKaW5k ZXggOGU5YjcxMzc1Yy4uYTNlZGY0OWVjZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCkBAIC0zMjIwLDYg KzMyMjAsMTggQEAgc3RhdGljIHN0cnVjdCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10g PQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKIAorCXsKKwkJeyJtYXhfYXBwbHlfYmd3b3JrZXJz X3Blcl9zdWJzY3JpcHRpb24iLAorCQkJUEdDX1NJR0hVUCwKKwkJCVJFUExJQ0FUSU9OX1NVQlND UklCRVJTLAorCQkJZ2V0dGV4dF9ub29wKCJNYXhpbXVtIG51bWJlciBvZiBhcHBseSBiYWNrZ3Jh bmQgd29ya2VycyBwZXIgc3Vic2NyaXB0aW9uLiIpLAorCQkJTlVMTCwKKwkJfSwKKwkJJm1heF9h cHBseV9iZ3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiwKKwkJMywgMCwgTUFYX0JBQ0tFTkRTLAor CQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKwogCXsKIAkJeyJsb2dfcm90YXRpb25fYWdlIiwgUEdD X1NJR0hVUCwgTE9HR0lOR19XSEVSRSwKIAkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgYW1vdW50 IG9mIHRpbWUgdG8gd2FpdCBiZWZvcmUgZm9yY2luZyAiCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggYTVhNmQxNGNkNC4uNWEzMmYyMjlmMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxl CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAt MzYwLDYgKzM2MCw3IEBACiAjbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDQJIyB0 YWtlbiBmcm9tIG1heF93b3JrZXJfcHJvY2Vzc2VzCiAJCQkJCSMgKGNoYW5nZSByZXF1aXJlcyBy ZXN0YXJ0KQogI21heF9zeW5jX3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDIJIyB0YWtlbiBm cm9tIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMKKyNtYXhfYXBwbHlfYmd3b3JrZXJz X3Blcl9zdWJzY3JpcHRpb24gPSAzCSMgdGFrZW4gZnJvbSBtYXhfbG9naWNhbF9yZXBsaWNhdGlv bl93b3JrZXJzCiAKIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9sb2dpY2FsbGF1bmNoZXIuaAppbmRleCBmMWUyODIxZTI1Li5hYzhlZjk0MzgxIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaAorKysgYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaApAQCAtMTQsNiArMTQsNyBA QAogCiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtl cnM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9zeW5jX3dvcmtlcnNfcGVyX3N1YnNjcmlw dGlvbjsKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vi c2NyaXB0aW9uOwogCiBleHRlcm4gdm9pZCBBcHBseUxhdW5jaGVyUmVnaXN0ZXIodm9pZCk7CiBl eHRlcm4gdm9pZCBBcHBseUxhdW5jaGVyTWFpbihEYXR1bSBtYWluX2FyZyk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IDY2MTNlMzIwNzcuLmE3ZjNjMjIw ZmEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5o CisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC05NCw2 ICs5NCw3IEBAIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3dha2V1cChPaWQgc3ViaWQs IE9pZCByZWxpZCk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl93YWtldXBfcHRyKExv Z2ljYWxSZXBXb3JrZXIgKndvcmtlcik7CiAKIGV4dGVybiBpbnQJbG9naWNhbHJlcF9zeW5jX3dv cmtlcl9jb3VudChPaWQgc3ViaWQpOworZXh0ZXJuIGludAlsb2dpY2FscmVwX2FwcGx5X2JhY2tn cm91bmRfd29ya2VyX2NvdW50KE9pZCBzdWJpZCk7CiAKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9u T3JpZ2luTmFtZUZvclRhYmxlc3luYyhPaWQgc3Vib2lkLCBPaWQgcmVsaWQsCiAJCQkJCQkJCQkJ CSAgY2hhciAqb3JpZ2lubmFtZSwgaW50IHN6b3JnbmFtZSk7Ci0tIAoyLjIzLjAud2luZG93cy4x Cgo= --_005_OS3PR01MB627532B048F71FFF8FBDB6A99ED69OS3PR01MB6275jpnp_--