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 1o26ER-0006EP-Az for pgsql-hackers@arkaria.postgresql.org; Fri, 17 Jun 2022 07:17:28 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1o26EP-0001J3-KY for pgsql-hackers@arkaria.postgresql.org; Fri, 17 Jun 2022 07:17:25 +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 1o26EO-0001It-74 for pgsql-hackers@lists.postgresql.org; Fri, 17 Jun 2022 07:17:25 +0000 Received: from esa2.fujitsucc.c3s2.iphmx.com ([68.232.152.246]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o26EJ-0000Mu-6V for pgsql-hackers@lists.postgresql.org; Fri, 17 Jun 2022 07:17:23 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1655450240; x=1686986240; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=YB2SDSZILHL6yr+JAGPfFpDZNgEt7r2YRsSGd5PVvSQ=; b=pmQdSgoIV+d6HnqMivH3UsEfyMJOu7CuSX27LweIC8xhpGCPfjq5jXVX kkaxDCZJWPLm/6qIsl4Y6xJjKgt7XYXMTH3OsdYgNQvEV7DhhsqZ7LioB p6/H++XYJhRmOe38UqYcZVXoFPI8cwCv3gs+Us6f4WaW6iF7lYb8pwT0I QgZ1u/sez4SyBMgcUf076LZbZffwYJ9AL+3dX7muuzt8O0xVSLRonkqUo pEPTezGhoSF69d2YCGAaBu5H4NLKCQ//WmLa4D5TG1LmFo99c5ez1vFuj AJ1ID+qbajzpurDPUD+J2NvWSkq1nHxXp3kvqC2sMRHrD49GPppM6SUET w==; X-IronPort-AV: E=McAfee;i="6400,9594,10380"; a="66592144" X-IronPort-AV: E=Sophos;i="5.92,306,1650898800"; d="scan'208,223";a="66592144" Received: from mail-os0jpn01lp2108.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.108]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Jun 2022 16:17:15 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WvBTyCJrMmkfAC/Y+3aR/P8LIWfjvG7TTcPe8m/F1R+k1NRdpYH4a221Sx3kHNmmMYKJFRP+P8w7ral/s9x+0WO7i9K/wzL+fNjGklgZsXnnmpjiuc95unUeCC8ycieXvsXWX1kIKJhPqMHCtTTal6p8yiCMxWDgBugGqqEUo1jjWJK540TSsTiIvZSeZcvk0ybzHDGX994QWCWmx+v78AOrkT36siCjflIZjGBAFT8fpUuVU/qVOmj58RgwphGCSrk9C0raEbAulatoJqUYZYisKcSJlRFCdkUsETLTbr7F/EmIXIzfNkkm+QjWBD98UDSm46n6sbb6TLwJ48/2Nw== 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=yauEtwiQmIJPS43UFATeU0jxHceJCrDUCuP32cgO/RU=; b=TI15yj3K2vWKmbKDlgZgfUW5fne18vqW8bGX8cmPs6VDs+B7bAahbtzMGbtcXQMaHH7muIWaAuUx7E+W20AZMChHYZXls/qJKFJXJMicljtUVpp2847MLs1slJSQUyeCdagjlDCw2lgrUwvkR0lX2gG0RPuexL5i7D5qeXmq76eCeGQOzQgpTYqrwtDHuwGTJLFPSTzt5MIBMkrTYKP7xKQNAxjY8G/QAhD7mfASQYrETuxoZp1Vd6n4UVx6yAmWgBPmtu9Il65QkvIlGZ4OCMGtGcjar9+/9OFOqRqjw28G0u+JYUHNl1TYtsUauRLWnOtmj6pGtBH5BH36o9VUCA== 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=yauEtwiQmIJPS43UFATeU0jxHceJCrDUCuP32cgO/RU=; b=LMJGiKi3DdG8C/oiDgGbWSVtEySOguOYFWPpCTKR+707lyvRxqdY+cZUGA0RlXuUNDikxP4NSdo3GCN+NJFEF7O3J8/fk9feE0LHxFYC9hBLcX7Ve8AXI/ny/BKgJ5QgKQV2c/2cwHOGcUM4JiOgZN4vVBoblcm7PbnRU4qfetc= Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com (2603:1096:604:f1::8) by OSZPR01MB9360.jpnprd01.prod.outlook.com (2603:1096:604:1d5::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.13; Fri, 17 Jun 2022 07:17:11 +0000 Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::713b:148d:ec68:f05]) by OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::713b:148d:ec68:f05%4]) with mapi id 15.20.5353.014; Fri, 17 Jun 2022 07:17:11 +0000 From: "wangw.fnst@fujitsu.com" To: Amit Kapila CC: Masahiko Sawada , Peter Smith , "shiy.fnst@fujitsu.com" , "houzj.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/KZEbPJKjUy7J1pJS8eGYazlvxQAgAkRYICACBI2gIABs50AgAA5UwCAApvIgIAFAGuAgAXc1wCAADa7gIALO/aAgAsRZICAB606AIAS9tXQgAAv04CAAWQLgIABHxKAgAA3o4CAAd7v0IAJQDLggAkyO+CAAiLMAIAC0M5g Date: Fri, 17 Jun 2022 07:17:10 +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: 4b45c88c-4890-4da3-8c2e-08da5031654b x-ms-traffictypediagnostic: OSZPR01MB9360: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: XJa46IIZoAJMYCaP0zZf/+LuRbPU8RDs2c2EhDIvXx+u8k5X0vpP4DUS7fNznPZSc08UweNp760Xz3p4awavsFl83SBX2fmW4EZd8KWptQQdVIBN4ZLWJjwXnUUMMS9k/AqAUErsF/lBeOmOAFwF6VLGRB5gjZM7qQAkAhQwms2N04dzIMnVst4sWpNPTg6GZwsv4vHXkTvN5RmrQzi/WtZH5wqPo1ATl3ShK3WexhMfw2Jx4HK7f7NRRrVNhwJod8qRnFmbLbCfDBGdVSchYpp8HryLyEsYRfCX3r0/mkQGS2xQ6v0r6kVOY+b3RZm56OrNTdYDY/X0rXSYql/XIgfUXSZxa2z0SLcV4/u033aqduf5MOB7n+k7eqSSrfrZ7ls2Z+U4nXt2qW//+iFvkSRRP7M/Jj3WHVJ3Dg+R8/AsytlY/MWIpnn/Mrt1RrTvlomAaseq6gpiOAbhB4uqyW128KhMKQn7FT+RX2kXQGz8BXJ66INvYvnnPLIJ9IHxXQ/z5oKwz26O7nwB1OD+IC/UnCwW9lvFKCb97GpCTY9MU1u8exL7S3i+Qg6u6UCezeOB9BUpdyumW/hbYFnm1lTcmVxgszINwoSRE2Oh/NTTZUBot0UTi/zxvU0gEUa/EievG4xJ4XEr3OO4gcCYafSz3nqCVf8fTR6YW0j6a71diqMPptaX147J2/pAoEXPXS3qpovte9V6V8n1m7acgA== 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:(13230016)(4636009)(366004)(4326008)(186003)(5660300002)(52536014)(316002)(64756008)(8936002)(85182001)(8676002)(99936003)(66946007)(76116006)(66556008)(66476007)(66446008)(38100700002)(26005)(9686003)(55016003)(33656002)(498600001)(122000001)(53546011)(2906002)(7696005)(38070700005)(54906003)(6916009)(83380400001)(71200400001)(86362001)(6506007)(82960400001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?N3o0eSswYTg2bHdlNUtmNDBxdUNSK2hUN1BicGQzcURob2Eyb0t4TTZKNjE1?= =?utf-8?B?elUvTlZHVTNvSUtydHJmTDJuWjVLWTBIQjNUSXZEekFOOVdBNWxrMFptVTlC?= =?utf-8?B?ZUZkcE9zYWdoRE1wMlY0NURIMUFoS0xEVnVLVWxUcG5FbGd6ZXVqcnJUa2FF?= =?utf-8?B?aHBpS0J4UFc0SjF5ZXJyUVppa0hHTUcxNjR2ZkVBck1LSUpoTk5HTUErM2Zx?= =?utf-8?B?bnN2Y3grYlZ0eXZ0QjRnbXBnMkZDVFRYWHZvNjZuUVJyWTVQcEdsL3ZvclZU?= =?utf-8?B?SnpDTTd6LyswTFR2RTNSNmUwcHR0RkFLeGZXdGdFNFF6RTR6Wmt3aUUxdkM0?= =?utf-8?B?bE1qM0N3dTA4M09NK3BtRFpERE5QMkRuTTEyV1d5cE8wZVF5aFpVNmxGRzFk?= =?utf-8?B?cGRSejVGb0x4TXhPNitYK3ZvOTRNU1ZLc3ZpUGpIdHcwakZHWXQxRU1acnJp?= =?utf-8?B?VjhOYUd2S3BDakQ3c3cxazhtSEcreUNCNnk0TW1Qa2hocHhwdWZEMm9BTFVI?= =?utf-8?B?T0RuR3lZdE9PWFZJUHpyYjgzWUhRWUhuMkdCRldHSkVDc2JOOGUxWkRSRGhq?= =?utf-8?B?bXpQODNONG00anQ0bUhYNkRRN3VVMVVVRXpvVGIyV0ZSUzdrQlNObFhya2dF?= =?utf-8?B?eVZ6MmNaUWF0RmRqRDgwakYrV2R4ZkVzQTM4Q3ZUZkRqSFNENW9oTDFIWGhS?= =?utf-8?B?cnA4aGcvRWZtZzRqWjl2MjhsZUhTRy9tQU9CQmVuTDBHejRwTG9IRUt4ekhC?= =?utf-8?B?djNDN1Noc2JYTFQxYjVtdk1JN2tpTDR5TDM4SUdKT2pwc1QxdkdoUVdOSStV?= =?utf-8?B?dTY5MFFqVUV3aE5WVEZqM2RFSk9xUXFDemgxaEJmY2kxRHFZUHVMby9SQkdY?= =?utf-8?B?c0k2dVBjVnNnSTNNcmZOQ1VoV3dYV2ZJbWovaC9HSGpVRjFncDJ6TkR3RHg0?= =?utf-8?B?R2QyUUVnbVpYQmszTkVVY09ydnlhNTFDQ3JyYlJ3VTBBS3BBMUdhS0ZMdjZE?= =?utf-8?B?K2hxZVRGWWlwbTFVM3lZMWVEcmFyQmxYNkkxNzYrUU1GK01LdU1RNkdUMVNG?= =?utf-8?B?cWh5TEw1NHgwR0ExUlVpVWl1Q0JvNGl6VUt0RSs1RXpOM1NTYkwzVEUwbDBI?= =?utf-8?B?OXErcENOQU5SYmlxZVV3eFU3WThncEkrb3lyM3R3UWtUK1BjYmFicDBoZXN6?= =?utf-8?B?ODRXdlVKVytRNFJ2MDFBSWh3UDZzODQvS1lCQzM3Q3YrWTFUTVlaTUFabk1q?= =?utf-8?B?VVJiTytwOU9scGxLbmR4RTNzMWM4a3FmRllpUTBMeFNzamY5U21PRkRCVy9T?= =?utf-8?B?L2pGcHEzbS9LUEhmd1hRbzN4UzhWdlpONnNmaWYzN2lqdVNMYzNoRlFwN3o5?= =?utf-8?B?cmw4TDdBdkZXRUxGaERhb1BZY1FuaUNnZGU0cmtKZDhnN1NGTFVTTWlaZElw?= =?utf-8?B?bFdlUUQzekpRclVYdnZSVVQzQXFlNnpOMllSd0pkMWdmME1YdVJHdU44UytB?= =?utf-8?B?S1oyR1NNdlFhd0FFK0c3elRPamxZMTA2bW1PUHRrUXVGZUpQWUs4cXRjcitD?= =?utf-8?B?b2VQUFQrR21XZk5acElyTFV2a1NrT1QyZG5ZUUQ0UHlNS2g3alRBcGwrU2lt?= =?utf-8?B?VkJLSkpvN3VlUW4vRmpKVUtSalcvZHY2b0tHaDBoR0R5K09OQ0RuOFpTbmU3?= =?utf-8?B?UDg1NlVtUnJXdGdrKzhiekFYRXlsMTlqVEQ3Z1YrSm9STFNUOUl4VCs3NzBk?= =?utf-8?B?SXRFQjF4UHhZTDZwcUFHZ2g2dGFkQUMrMFhYWGtzeVNYUEIyaFg3UHVIVzgz?= =?utf-8?B?eW8zSnp1dVRxQ2JUWmZqWmI1a2ttZDBpekIyNzdjSHA0YjlxVG5ndjgrS2xM?= =?utf-8?B?Tnd1dFhrdmxRL3hqWWhURkpIUGMzWW83TGczcDFWK2g3NVAyVHR6RkZUN0lO?= =?utf-8?B?d0ppcHczbnA4TmNneHQ3M1Z1dGw2NnZRYTZDaFhMR0pvYnQ1SnpWYWZwQnRH?= =?utf-8?B?WWhKWEFTUWpMclFnMnVvdUhDWG5abGZoeWlhWWNxZE1wZzR6S1dHZkk0SWNh?= =?utf-8?B?OU9KTWR3UTlxVWVZZUxuRGhPZTd6YklEWVhJTmtvd254aDRvWmFOd1BMMHlB?= =?utf-8?B?c2FLSFJCUkhub0ttZGoxL3FhbHJRbHlQWEdmL296Rk5qcVNWVWx6LzUwSVdw?= =?utf-8?B?TFAxWC9uRVJYaDB1ZmFZMG5BME9yWUFmR1FQSGxQMjYxTDJmMGtpVjVMeXcz?= =?utf-8?B?bXcrcVI3SzZHUTI0eDFIT1EwZVdZejFtOGpsUGNONm9XMm9rdkwvSDJvSkxG?= =?utf-8?B?eEZMMmMrN0JSWWFpWHU0N0JuVTlkT0pXUEVBdW96RlpJQjVJTlJGUT09?= Content-Type: multipart/mixed; boundary="_006_OS3PR01MB62753CDFD0DF1FCBC978AFB39EAF9OS3PR01MB6275jpnp_" 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: 4b45c88c-4890-4da3-8c2e-08da5031654b X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Jun 2022 07:17:10.8947 (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: tp3LaCkBXa4QVDW9FDtyTyva6m00AgTWfBtpMy51A+rUa6FWuOaVJdVTXAMs83w4rXjtGOKvYjYhqKZN2mdZow== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSZPR01MB9360 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_006_OS3PR01MB62753CDFD0DF1FCBC978AFB39EAF9OS3PR01MB6275jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gV2VkLCBKdW4gMTUsIDIwMjIgYXQgODoxMyBQTSBBbWl0IEthcGlsYSA8YW1pdC5rYXBpbGEx NkBnbWFpbC5jb20+IHdyb3RlOg0KPiBGZXcgcXVlc3Rpb25zL2NvbW1lbnRzIG9uIDAwMDENCj4g PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpUaGFua3MgZm9yIHlvdXIgY29tbWVudHMuDQoN Cj4gMS4NCj4gSW4gdGhlIGNvbW1pdCBtZXNzYWdlLCBJIHNlZTogIldlIGFsc28gbmVlZCB0byBh bGxvdyBzdHJlYW1fc3RvcCB0bw0KPiBjb21wbGV0ZSBieSB0aGUgYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIgdG8gYXZvaWQgZGVhZGxvY2tzIGJlY2F1c2UNCj4gVC0xJ3MgY3VycmVudCBzdHJlYW0g b2YgY2hhbmdlcyBjYW4gdXBkYXRlIHJvd3MgaW4gY29uZmxpY3Rpbmcgb3JkZXINCj4gd2l0aCBU LTIncyBuZXh0IHN0cmVhbSBvZiBjaGFuZ2VzLiINCj4gDQo+IFRoaW5raW5nIGFib3V0IHRoaXMs IHdvbid0IHRoZSBULTEgYW5kIFQtMiBkZWFkbG9jayBvbiB0aGUgcHVibGlzaGVyDQo+IG5vZGUg YXMgd2VsbCBpZiB0aGUgYWJvdmUgc3RhdGVtZW50IGlzIHRydWU/DQpZZXMsIEkgdGhpbmsgc28u DQpJIHRoaW5rIGlmIHRhYmxlJ3MgdW5pcXVlIGluZGV4L2NvbnN0cmFpbnQgb2YgdGhlIHB1Ymxp c2hlciBhbmQgdGhlIHN1YnNjcmliZXINCmFyZSBjb25zaXN0ZW50LCB0aGUgZGVhZGxvY2sgd2ls bCBvY2N1ciBvbiB0aGUgcHVibGlzaGVyLXNpZGUuDQpJZiBpdCBpcyBpbmNvbnNpc3RlbnQsIGRl YWRsb2NrIG1heSBvbmx5IG9jY3VyIGluIHRoZSBzdWJzY3JpYmVyLiBCdXQgc2luY2Ugd2UNCmFk ZGVkIHRoZSBjaGVjayBmb3IgdGhlc2UgKHNlZSBwYXRjaCAwMDA0KSwgc28gaXQgc2VlbXMgb2th eSB0byBub3QgaGFuZGxlIHRoaXMNCmF0IFNUUkVBTV9TVE9QLg0KDQpCVFcsIEkgbWFkZSB0aGUg Zm9sbG93aW5nIGltcHJvdmVtZW50cyB0byB0aGUgY29kZSAoI2EsICNjIGFyZSBpbXByb3ZlZCBp biAwMDA0DQpwYXRjaCwgI2IsICNkIGFuZCAjZSBhcmUgaW1wcm92ZWQgaW4gMDAwMSBwYXRjaC4p IDoNCmEuDQpJIGFkZGVkIHNvbWUgY29tbWVudHMgaW4gdGhlIGZ1bmN0aW9uIGFwcGx5X2hhbmRs ZV9zdHJlYW1fc3RvcCB0byBleHBsYWluIHdoeQ0Kd2UgZG8gbm90IG5lZWQgdG8gYWxsb3cgc3Ry ZWFtX3N0b3AgdG8gY29tcGxldGUgYnkgdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLg0KYi4N CkkgZGVsZXRlZCByZWxhdGVkIGNvbW1pdCBtZXNzYWdlIGluIDAwMDEgcGF0Y2ggYW5kIHRoZSBy ZWxhdGVkIGNvbW1lbnRzIGluIGZpbGUNCmhlYWRlciAod29ya2VyLmMpLg0KYy4NClJlbmFtZWQg dGhlIGZ1bmN0aW9uIGxvZ2ljYWxyZXBfcmVsX21hcmtfYXBwbHlfYmd3b3JrZXIgdG8NCmxvZ2lj YWxyZXBfcmVsX21hcmtfc2FmZV9pbl9hcHBseV9iZ3dvcmtlci4gQWxzbyBkaWQgc29tZSBzbGln aHQgaW1wcm92ZW1lbnRzDQppbiB0aGlzIGZ1bmN0aW9uLg0KZC4NCldoZW4gYXBwbHkgd29ya2Vy IHNlbmRzIHN0cmVhbSB4YWN0IG1lc3NhZ2VzIHRvIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLCBv bmx5DQp3YWl0IGZvciBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciB0byBjb21wbGV0ZSB3aGVuIGNv bW1pdCwgcHJlcGFyZSBhbmQgYWJvcnQgb2YNCnRvcGxldmVsIHhhY3QuDQplLg0KVGhlIHN0YXRl IHNldHRpbmcgb2YgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgd2FzIG5vdCB2ZXJ5IGFjY3VyYXRl IGJlZm9yZSwgc28NCmltcHJvdmVkIHRoaXMgKHNlZSB0aGUgaW52b2NhdGlvbnMgdG8gZnVuY3Rp b24gcGdzdGF0X3JlcG9ydF9hY3Rpdml0eSBpbg0KZnVuY3Rpb24gTG9naWNhbEFwcGx5Qmd3TG9v cCwgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydCBhbmQNCmFwcGx5X2hhbmRsZV9zdHJlYW1fYWJv cnQpLg0KDQo+IDIuDQo+ICsgICAgICAgPHBhcmE+DQo+ICsgICAgICAgIFRoZSBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlcnMgYXJlIHRha2VuIGZyb20gdGhlIHBvb2wgZGVmaW5lZCBieQ0KPiArICAg ICAgICA8dmFybmFtZT5tYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzPC92YXJuYW1lPi4N Cj4gKyAgICAgICA8L3BhcmE+DQo+ICsgICAgICAgPHBhcmE+DQo+ICsgICAgICAgIFRoZSBkZWZh dWx0IHZhbHVlIGlzIDMuIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBpbiB0aGUNCj4g KyAgICAgICAgPGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgb3Igb24g dGhlIHNlcnZlciBjb21tYW5kDQo+ICsgICAgICAgIGxpbmUuDQo+ICsgICAgICAgPC9wYXJhPg0K PiANCj4gSXMgdGhlcmUgYSByZWFzb24gdG8gY2hvb3NlIHRoaXMgbnVtYmVyIGFzIDM/IFdoeSBu b3QgMiBzaW1pbGFyIHRvDQo+IG1heF9zeW5jX3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbj8NCklt cHJvdmVkIHRoZSBkZWZhdWx0IGFzIHN1Z2dlc3RlZC4NCg0KPiAzLg0KPiArDQo+ICsgIDxwYXJh Pg0KPiArICAgU2V0dGluZyBzdHJlYW1pbmcgbW9kZSB0byA8bGl0ZXJhbD5hcHBseTwvbGl0ZXJh bD4gY291bGQgZXhwb3J0IGludmFsaWQgTFNODQo+ICsgICBhcyBmaW5pc2ggTFNOIG9mIGZhaWxl ZCB0cmFuc2FjdGlvbi4gQ2hhbmdpbmcgdGhlIHN0cmVhbWluZyBtb2RlIGFuZCBtYWtpbmcNCj4g KyAgIHRoZSBzYW1lIGNvbmZsaWN0IHdyaXRlcyB0aGUgZmluaXNoIExTTiBvZiB0aGUgZmFpbGVk IHRyYW5zYWN0aW9uIGluIHRoZQ0KPiArICAgc2VydmVyIGxvZyBpZiByZXF1aXJlZC4NCj4gKyAg PC9wYXJhPg0KPiANCj4gSG93IHdpbGwgdGhlIHVzZXIgaWRlbnRpZnkgdGhhdCB0aGlzIGlzIGFu IGludmFsaWQgTFNOIHZhbHVlIGFuZCBzaGUNCj4gc2hvdWxkbid0IHVzZSBpdCB0byBTS0lQIHRo ZSB0cmFuc2FjdGlvbj8gQ2FuIHdlIGNoYW5nZSB0aGUgc2Vjb25kDQo+IHNlbnRlbmNlIHRvOiAi VXNlciBzaG91bGQgY2hhbmdlIHRoZSBzdHJlYW1pbmcgbW9kZSB0byAnb24nIGlmIHRoZXkNCj4g d291bGQgaW5zdGVhZCB3aXNoIHRvIHNlZSB0aGUgZmluaXNoIExTTiBvbiBlcnJvci4gVXNlcnMg Y2FuIHVzZQ0KPiBmaW5pc2ggTFNOIHRvIFNLSVAgYXBwbHlpbmcgdGhlIHRyYW5zYWN0aW9uLiIg SSB0aGluayB3ZSBjYW4gZ2l2ZQ0KPiByZWZlcmVuY2UgdG8gZG9jcyB3aGVyZSB0aGUgU0tJUCBm ZWF0dXJlIGlzIGV4cGxhaW5lZC4NCkltcHJvdmVkIHRoZSBzZW50ZW5jZSBhcyBzdWdnZXN0ZWQu DQpBbmQgSSBhZGRlZCB0aGUgcmVmZXJlbmNlIGFmdGVyIHRoZSBzdGF0ZW1lbnQgaW4geW91ciBz dWdnZXN0aW9uLg0KSXQgbG9va3MgbGlrZToNCmBgYA0KLi4uIFVzZXJzIGNhbiB1c2UgZmluaXNo IExTTiB0byBTS0lQIGFwcGx5aW5nIHRoZSB0cmFuc2FjdGlvbiBieSBydW5uaW5nIDxsaW5rDQps aW5rZW5kPSJzcWwtYWx0ZXJzdWJzY3JpcHRpb24iPjxjb21tYW5kPkFMVEVSIFNVQlNDUklQVElP TiAuLi4NClNLSVA8L2NvbW1hbmQ+PC9saW5rPi4NCmBgYA0KDQo+IDQuDQo+ICsgKiBUaGlzIGZp bGUgY29udGFpbnMgcm91dGluZXMgdGhhdCBhcmUgaW50ZW5kZWQgdG8gc3VwcG9ydCBzZXR0aW5n IHVwLCB1c2luZywNCj4gKyAqIGFuZCB0ZWFyaW5nIGRvd24gYSBBcHBseUJnd29ya2VyU3RhdGUu DQo+ICsgKiBSZWZlciB0byB0aGUgY29tbWVudHMgaW4gZmlsZSBoZWFkZXIgb2YgbG9naWNhbC93 b3JrZXIuYyB0byBzZWUgbW9yZQ0KPiArICogaW5mb3JtYXRpb25zIGFib3V0IGFwcGx5IGJhY2tn cm91bmQgd29ya2VyLg0KPiANCj4gVHlwby4gL2luZm9ybWF0aW9ucy9pbmZvcm1hdGlvbi4NCj4g DQo+IENvbnNpZGVyIGhhdmluZyBhbiBlbXB0eSBsaW5lIGJldHdlZW4gdGhlIGFib3ZlIHR3byBs aW5lcy4NCkltcHJvdmVkIHRoZSBtZXNzYWdlIGFzIHN1Z2dlc3RlZC4NCg0KPiA1Lg0KPiArQXBw bHlCZ3dvcmtlclN0YXRlICoNCj4gK2FwcGx5X2Jnd29ya2VyX2ZpbmRfb3Jfc3RhcnQoVHJhbnNh Y3Rpb25JZCB4aWQsIGJvb2wgc3RhcnQpDQo+IHsNCj4gLi4uDQo+IC4uLg0KPiArIGlmICghVHJh bnNhY3Rpb25JZElzVmFsaWQoeGlkKSkNCj4gKyByZXR1cm4gTlVMTDsNCj4gKw0KPiArIC8qDQo+ ICsgKiBXZSBkb24ndCBzdGFydCBuZXcgYmFja2dyb3VuZCB3b3JrZXIgaWYgd2UgYXJlIG5vdCBp biBzdHJlYW1pbmcgYXBwbHkNCj4gKyAqIG1vZGUuDQo+ICsgKi8NCj4gKyBpZiAoTXlTdWJzY3Jp cHRpb24tPnN0cmVhbSAhPSBTVUJTVFJFQU1fQVBQTFkpDQo+ICsgcmV0dXJuIE5VTEw7DQo+ICsN Cj4gKyAvKg0KPiArICogV2UgZG9uJ3Qgc3RhcnQgbmV3IGJhY2tncm91bmQgd29ya2VyIGlmIHVz ZXIgaGFzIHNldCBza2lwbHNuIGFzIGl0J3MNCj4gKyAqIHBvc3NpYmxlIHRoYXQgdXNlciB3YW50 IHRvIHNraXAgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gRm9yDQo+ICsgKiBzdHJlYW1pbmcg dHJhbnNhY3Rpb24sIHdlIG5lZWQgdG8gc3BpbGwgdGhlIHRyYW5zYWN0aW9uIHRvIGRpc2sgc28g dGhhdA0KPiArICogd2UgY2FuIGdldCB0aGUgbGFzdCBMU04gb2YgdGhlIHRyYW5zYWN0aW9uIHRv IGp1ZGdlIHdoZXRoZXIgdG8gc2tpcA0KPiArICogYmVmb3JlIHN0YXJ0aW5nIHRvIGFwcGx5IHRo ZSBjaGFuZ2UuDQo+ICsgKi8NCj4gKyBpZiAoc3RhcnQgJiYgIVhMb2dSZWNQdHJJc0ludmFsaWQo TXlTdWJzY3JpcHRpb24tPnNraXBsc24pKQ0KPiArIHJldHVybiBOVUxMOw0KPiArDQo+ICsgLyoN Cj4gKyAqIEZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHRoYXQgYXJlIGJlaW5nIGFwcGxpZWQg aW4gYXBwbHkgYmFja2dyb3VuZA0KPiArICogd29ya2VyLCB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRo ZXIgdG8gYXBwbHkgdGhlIGNoYW5nZSBmb3IgYSByZWxhdGlvbg0KPiArICogdGhhdCBpcyBub3Qg aW4gdGhlIFJFQURZIHN0YXRlIChzZWUgc2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbCkgYXMg d2UNCj4gKyAqIHdvbid0IGtub3cgcmVtb3RlX2ZpbmFsX2xzbiBieSB0aGF0IHRpbWUuIFNvLCB3 ZSBkb24ndCBzdGFydCBuZXcgYXBwbHkNCj4gKyAqIGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMg Y2FzZS4NCj4gKyAqLw0KPiArIGlmIChzdGFydCAmJiAhQWxsVGFibGVzeW5jc1JlYWR5KCkpDQo+ ICsgcmV0dXJuIE5VTEw7DQo+IC4uLg0KPiAuLi4NCj4gfQ0KPiANCj4gQ2FuIHdlIG1vdmUgc29t ZSBvZiB0aGVzZSBzdGFydGluZyBjaGVja3MgdG8gYSBzZXBhcmF0ZSBmdW5jdGlvbiBsaWtlDQo+ IGNhbnN0YXJ0YXBwbHliZ3dvcmtlcigpPw0KSW1wcm92ZWQgYXMgc3VnZ2VzdGVkLg0KDQpCVFcs IEkgcmViYXNlZCB0aGUgdGVtcG9yYXJ5IHBhdGNoIDAwMDMgYmVjYXVzZSBvbmUgcGF0Y2ggaW4g dGhyZWFkIFsxXSBpcw0KY29tbWl0dGVkIChzZWUgY29tbWl0IGI3NjU4YzI0YzcgaW4gSEVBRCku DQoNCkF0dGFjaCB0aGUgbmV3IHBhdGNoZXMuDQpPbmx5IGNoYW5nZWQgcGF0Y2hlcyAwMDAxLCAw MDA0Lg0KDQpSZWdhcmRzLA0KV2FuZyB3ZWkNCg== --_006_OS3PR01MB62753CDFD0DF1FCBC978AFB39EAF9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v12-0001-Perform-streaming-logical-transactions-by-backgr.patch" Content-Description: v12-0001-Perform-streaming-logical-transactions-by-backgr.patch Content-Disposition: attachment; filename="v12-0001-Perform-streaming-logical-transactions-by-backgr.patch"; size=100439; creation-date="Fri, 17 Jun 2022 07:12:00 GMT"; modification-date="Fri, 17 Jun 2022 07:17:05 GMT" Content-Transfer-Encoding: base64 RnJvbSA5M2I5MzkwYTU2YTY1MWE4MmI4MzJkMTllYmE3YzUzZGM0NGE5ZGQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHYxMiAxLzVdIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IGJhY2tn cm91bmQKIHdvcmtlcnMKCkN1cnJlbnRseSwgZm9yIGxhcmdlIHRyYW5zYWN0aW9ucywgdGhlIHB1 Ymxpc2hlciBzZW5kcyB0aGUgZGF0YSBpbiBtdWx0aXBsZQpzdHJlYW1zIChjaGFuZ2VzIGRpdmlk ZWQgaW50byBjaHVua3MgZGVwZW5kaW5nIHVwb24gbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSks CmFuZCB0aGVuIG9uIHRoZSBzdWJzY3JpYmVyLXNpZGUsIHRoZSBhcHBseSB3b3JrZXIgd3JpdGVz IHRoZSBjaGFuZ2VzIGludG8KdGVtcG9yYXJ5IGZpbGVzIGFuZCBvbmNlIGl0IHJlY2VpdmVzIHRo ZSBjb21taXQsIGl0IHJlYWRzIGZyb20gdGhlIGZpbGUgYW5kCmFwcGxpZXMgdGhlIGVudGlyZSB0 cmFuc2FjdGlvbi4gVG8gaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2Ugb2Ygc3VjaAp0cmFuc2FjdGlv bnMsIHdlIGNhbiBpbnN0ZWFkIGFsbG93IHRoZW0gdG8gYmUgYXBwbGllZCB2aWEgYmFja2dyb3Vu ZCB3b3JrZXJzLgoKSW4gdGhpcyBhcHByb2FjaCwgd2UgYXNzaWduIGEgbmV3IGFwcGx5IGJhY2tn cm91bmQgd29ya2VyIChpZiBhdmFpbGFibGUpIGFzCnNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBz dHJlYW0gaXMgcmVjZWl2ZWQgYW5kIHRoZSBtYWluIGFwcGx5IHdvcmtlciB3aWxsIHNlbmQKY2hh bmdlcyB0byB0aGlzIG5ldyB3b3JrZXIgdmlhIHNoYXJlZCBtZW1vcnkuIFRoZSBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlciB3aWxsCmRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3 cml0aW5nIGl0IHRvIHRlbXBvcmFyeSBmaWxlcy4gV2Uga2VlcAp0aGlzIHdvcmtlciBhc3NpZ25l ZCB0aWxsIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdCBm b3IKdGhlIHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQg b3JkZXJpbmcgYW5kIGF2b2lkcwp3cml0aW5nIHRvIGFuZCByZWFkaW5nIGZyb20gZmlsZSBpbiBt b3N0IGNhc2VzLiBXZSBzdGlsbCBuZWVkIHRvIHNwaWxsIGlmIHRoZXJlCmlzIG5vIHdvcmtlciBh dmFpbGFibGUuCgpUaGlzIHBhdGNoIGFsc28gZXh0ZW5kcyB0aGUgU1VCU0NSSVBUSU9OICdzdHJl YW1pbmcnIG9wdGlvbiBzbyB0aGF0IHRoZSB1c2VyCmNhbiBjb250cm9sIHdoZXRoZXIgdG8gYXBw bHkgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBpbiBhbiBhcHBseSBiYWNrZ3JvdW5kCndvcmtl ciBvciBzcGlsbCB0aGUgY2hhbmdlIHRvIGRpc2suIFVzZXIgY2FuIHNldCB0aGUgc3RyZWFtaW5n IG9wdGlvbiB0bwonb24vb2ZmJywgJ2FwcGx5Jy4gRm9yIG5vdywgJ2FwcGx5JyBtZWFucyB0aGUg c3RyZWFtaW5nIHdpbGwgYmUgYXBwbGllZCB2aWEgYQphcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBp ZiBhdmFpbGFibGUuICdvbicgbWVhbnMgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB3aWxsCmJl IHNwaWxsZWQgdG8gZGlzay4KLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAg ICAgICAgICAgICAgfCAgMTAgKy0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAg ICAgICAgICAgICB8ICAyNSArCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s ICAgICAgICAgfCAgIDkgKwogZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgICAgICAgICAgICAg ICAgICAgIHwgIDE5ICsKIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21s ICAgICB8ICAyNCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jICAgICAgICAg ICAgIHwgIDEzICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAg ICB8ICA2NiArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jICAgICAgICAgICAg IHwgICAzICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUgICAgICB8 ICAgMyArLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dyb2tlci5jICAgICAgIHwg Nzc1ICsrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9k ZWNvZGUuYyAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xh dW5jaGVyLmMgICAgfCAxMTIgKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29y aWdpbi5jICAgICAgfCAgMjYgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJv dG8uYyAgICAgICB8ICAzNSArLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZl ci5jICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxl c3luYy5jICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2Vy LmMgICAgICB8IDY0NSArKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bn b3V0cHV0L3Bnb3V0cHV0LmMgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv d2FpdF9ldmVudC5jICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMg ICAgICAgICAgICAgICAgICB8ICAxMiArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVz cWwuY29uZi5zYW1wbGUgfCAgIDEgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAg ICAgICAgICAgICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlv bi5oICAgICAgICAgfCAgMTcgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVu Y2hlci5oICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8u aCAgICAgICAgfCAgMTkgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIu aCAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaCAgICAgICAg ICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCAg ICAgICB8ICAgNyArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgg ICAgIHwgMTAzICsrLQogc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oICAgICAgICAgICAg ICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dCAg ICB8ICAgMiArLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAg IHwgICA1ICsKIDMyIGZpbGVzIGNoYW5nZWQsIDE3NjAgaW5zZXJ0aW9ucygrKSwgMjE3IGRlbGV0 aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHliZ3dyb2tlci5jCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNn bWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCBjMDBjOTNkZDdiLi41Y2IzOWIx OGJkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtNzg3MywxMSArNzg3MywxNSBAQCBTQ1JBTS1TSEEtMjU2 JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBs YWNlYWJsZT4mbAogCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgotICAgICAgIDxzdHJ1Y3Rm aWVsZD5zdWJzdHJlYW08L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgIDxz dHJ1Y3RmaWVsZD5zdWJzdHJlYW08L3N0cnVjdGZpZWxkPiA8dHlwZT5jaGFyPC90eXBlPgogICAg ICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgSWYgdHJ1ZSwgdGhlIHN1YnNjcmlwdGlv biB3aWxsIGFsbG93IHN0cmVhbWluZyBvZiBpbi1wcm9ncmVzcwotICAgICAgIHRyYW5zYWN0aW9u cworICAgICAgIENvbnRyb2xzIGhvdyB0byBoYW5kbGUgdGhlIHN0cmVhbWluZyBvZiBpbi1wcm9n cmVzcyB0cmFuc2FjdGlvbnM6CisgICAgICAgPGxpdGVyYWw+ZjwvbGl0ZXJhbD4gPSBkaXNhbGxv dyBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLAorICAgICAgIDxsaXRlcmFs PnQ8L2xpdGVyYWw+ID0gc3BpbGwgdGhlIGNoYW5nZXMgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rp b25zIHRvCisgICAgICAgZGlzayBhbmQgYXBwbHkgYXQgb25jZSBhZnRlciB0aGUgdHJhbnNhY3Rp b24gaXMgY29tbWl0dGVkIG9uIHRoZQorICAgICAgIHB1Ymxpc2hlciwKKyAgICAgICA8bGl0ZXJh bD5hPC9saXRlcmFsPiA9IGFwcGx5IGNoYW5nZXMgZGlyZWN0bHkgdXNpbmcgYSBiYWNrZ3JvdW5k IHdvcmtlcgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5k ZXggZjI3M2ZjOTViOS4uNWY2ZjY2YWE4NyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZp Zy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtNDk3MCw2ICs0OTcwLDMx IEBAIEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2Vh YmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zh cmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtbWF4LWFwcGx5LWJnd29y a2Vycy1wZXItc3Vic2NyaXB0aW9uIiB4cmVmbGFiZWw9Im1heF9hcHBseV9iZ3dvcmtlcnNfcGVy X3N1YnNjcmlwdGlvbiI+CisgICAgICA8dGVybT48dmFybmFtZT5tYXhfYXBwbHlfYmd3b3JrZXJz X3Blcl9zdWJzY3JpcHRpb248L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAgICAg IDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+bWF4X2FwcGx5X2Jnd29ya2Vy c19wZXJfc3Vic2NyaXB0aW9uPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJp bWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVt PgorICAgICAgIDxwYXJhPgorICAgICAgICBNYXhpbXVtIG51bWJlciBvZiBhcHBseSBiYWNrZ3Jv dW5kIHdvcmtlcnMgcGVyIHN1YnNjcmlwdGlvbi4gVGhpcworICAgICAgICBwYXJhbWV0ZXIgY29u dHJvbHMgdGhlIGFtb3VudCBvZiBwYXJhbGxlbGlzbSBvZiB0aGUgc3RyZWFtaW5nIG9mCisgICAg ICAgIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyBpZiB3ZSBzZXQgc3Vic2NyaXB0aW9uIG9wdGlv bgorICAgICAgICA8bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+IHRvIDxsaXRlcmFsPmFwcGx5 PC9saXRlcmFsPi4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBh cHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMgYXJlIHRha2VuIGZyb20gdGhlIHBvb2wgZGVmaW5lZCBi eQorICAgICAgICA8dmFybmFtZT5tYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzPC92YXJu YW1lPi4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBkZWZhdWx0 IHZhbHVlIGlzIDIuIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBpbiB0aGUKKyAgICAg ICAgPGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgb3Igb24gdGhlIHNl cnZlciBjb21tYW5kCisgICAgICAgIGxpbmUuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0 aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAg PC9zZWN0Mj4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24u c2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggMTQ1ZWE3 MWQ2MS4uYWJmOWM2NTQ4NiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGlj YXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBA IC05NDgsNiArOTQ4LDE1IEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciBy ZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAgICBtaWdodCBub3Qg dmlvbGF0ZSBhbnkgY29uc3RyYWludC4gIFRoaXMgY2FuIGVhc2lseSBtYWtlIHRoZSBzdWJzY3Jp YmVyCiAgICBpbmNvbnNpc3RlbnQuCiAgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFNldHRpbmcg c3RyZWFtaW5nIG1vZGUgdG8gPGxpdGVyYWw+YXBwbHk8L2xpdGVyYWw+IGNvdWxkIGV4cG9ydCBp bnZhbGlkIExTTgorICAgYXMgZmluaXNoIExTTiBvZiBmYWlsZWQgdHJhbnNhY3Rpb24uIFVzZXIg c2hvdWxkIGNoYW5nZSB0aGUgc3RyZWFtaW5nIG1vZGUKKyAgIHRvICdvbicgaWYgdGhleSB3b3Vs ZCBpbnN0ZWFkIHdpc2ggdG8gc2VlIHRoZSBmaW5pc2ggTFNOIG9uIGVycm9yLiBVc2VycworICAg Y2FuIHVzZSBmaW5pc2ggTFNOIHRvIFNLSVAgYXBwbHlpbmcgdGhlIHRyYW5zYWN0aW9uIGJ5IHJ1 bm5pbmcgPGxpbmsKKyAgIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbiI+PGNvbW1hbmQ+ QUxURVIgU1VCU0NSSVBUSU9OIC4uLgorICAgU0tJUDwvY29tbWFuZD48L2xpbms+LgorICA8L3Bh cmE+CiAgPC9zZWN0MT4KIAogIDxzZWN0MSBpZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1yZXN0cmlj dGlvbnMiPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvcHJvdG9jb2wuc2dtbAppbmRleCBiYjMwMzQwODkyLi4zNGJlMWIyNjk4IDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcHJvdG9j b2wuc2dtbApAQCAtNjgwOSw2ICs2ODA5LDI1IEBAIHBzcWwgImRibmFtZT1wb3N0Z3JlcyByZXBs aWNhdGlvbj1kYXRhYmFzZSIgLWMgIklERU5USUZZX1NZU1RFTTsiCiAgICAgICAgPC9saXN0aXRl bT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAg IDx0ZXJtPkludDY0IChYTG9nUmVjUHRyKTwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAg ICAgIDxwYXJhPgorICAgICAgICAgVGhlIExTTiBvZiB0aGUgYWJvcnQuCisgICAgICAgIDwvcGFy YT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgIDx2 YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+SW50NjQgKFRpbWVzdGFtcFR6KTwvdGVybT4KKyAg ICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgQWJvcnQgdGltZXN0YW1w IG9mIHRoZSB0cmFuc2FjdGlvbi4gVGhlIHZhbHVlIGlzIGluIG51bWJlcgorICAgICAgICAgb2Yg bWljcm9zZWNvbmRzIHNpbmNlIFBvc3RncmVTUUwgZXBvY2ggKDIwMDAtMDEtMDEpLgorICAgICAg ICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCiAg ICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgIDx0ZXJtPkludDMyIChUcmFuc2FjdGlvbklkKTwv dGVybT4KICAgICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlw dGlvbi5zZ21sCmluZGV4IDM1YjM5YzI4ZGEuLmQ0Y2FhZTAyMjIgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yMTcsMTMgKzIxNywyOSBAQCBDUkVBVEUg U1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25f bmFtZTwvcmVwbGFjZWFibAogICAgICAgIDwvdmFybGlzdGVudHJ5PgogCiAgICAgICAgPHZhcmxp c3RlbnRyeT4KLSAgICAgICAgPHRlcm0+PGxpdGVyYWw+c3RyZWFtaW5nPC9saXRlcmFsPiAoPHR5 cGU+Ym9vbGVhbjwvdHlwZT4pPC90ZXJtPgorICAgICAgICA8dGVybT48bGl0ZXJhbD5zdHJlYW1p bmc8L2xpdGVyYWw+ICg8dHlwZT5lbnVtPC90eXBlPik8L3Rlcm0+CiAgICAgICAgIDxsaXN0aXRl bT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgIFNwZWNpZmllcyB3aGV0aGVyIHRvIGVuYWJs ZSBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zCi0gICAgICAgICAgZm9yIHRo aXMgc3Vic2NyaXB0aW9uLiAgQnkgZGVmYXVsdCwgYWxsIHRyYW5zYWN0aW9ucwotICAgICAgICAg IGFyZSBmdWxseSBkZWNvZGVkIG9uIHRoZSBwdWJsaXNoZXIgYW5kIG9ubHkgdGhlbiBzZW50IHRv IHRoZQotICAgICAgICAgIHN1YnNjcmliZXIgYXMgYSB3aG9sZS4KKyAgICAgICAgICBmb3IgdGhp cyBzdWJzY3JpcHRpb24uICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA8bGl0ZXJhbD5vZmY8L2xpdGVy YWw+LAorICAgICAgICAgIGFsbCB0cmFuc2FjdGlvbnMgYXJlIGZ1bGx5IGRlY29kZWQgb24gdGhl IHB1Ymxpc2hlciBhbmQgb25seSB0aGVuCisgICAgICAgICAgc2VudCB0byB0aGUgc3Vic2NyaWJl ciBhcyBhIHdob2xlLgorICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICA8cGFyYT4KKyAgICAg ICAgICBJZiBzZXQgdG8gPGxpdGVyYWw+b248L2xpdGVyYWw+LCB0aGUgY2hhbmdlcyBvZiB0cmFu c2FjdGlvbiBhcmUKKyAgICAgICAgICB3cml0dGVuIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhl biBhcHBsaWVkIGF0IG9uY2UgYWZ0ZXIgdGhlCisgICAgICAgICAgdHJhbnNhY3Rpb24gaXMgY29t bWl0dGVkIG9uIHRoZSBwdWJsaXNoZXIuCisgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgIDxw YXJhPgorICAgICAgICAgIElmIHNldCB0byA8bGl0ZXJhbD5hcHBseTwvbGl0ZXJhbD4gaW5jb21p bmcKKyAgICAgICAgICBjaGFuZ2VzIGFyZSBkaXJlY3RseSBhcHBsaWVkIHZpYSBvbmUgb2YgdGhl IGJhY2tncm91bmQgd29ya2VycywgaWYKKyAgICAgICAgICBhdmFpbGFibGUuIElmIG5vIGJhY2tn cm91bmQgd29ya2VyIGlzIGZyZWUgdG8gaGFuZGxlIHN0cmVhbWluZworICAgICAgICAgIHRyYW5z YWN0aW9uIHRoZW4gdGhlIGNoYW5nZXMgYXJlIHdyaXR0ZW4gdG8gYSBmaWxlIGFuZCBhcHBsaWVk IGFmdGVyCisgICAgICAgICAgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4gTm90ZSB0aGF0 IGlmIGFuIGVycm9yIGhhcHBlbnMgd2hlbgorICAgICAgICAgIGFwcGx5aW5nIGNoYW5nZXMgaW4g YSBiYWNrZ3JvdW5kIHdvcmtlciwgaXQgbWlnaHQgbm90IHJlcG9ydCB0aGUKKyAgICAgICAgICBm aW5pc2ggTFNOIG9mIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24gaW4gdGhlIHNlcnZlciBsb2cuCiAg ICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50 cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKaW5kZXggNDdkODBiMGQyNS4uNjc4NTQwYmEy NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwpAQCAtMTcxMSw2ICsxNzExLDcgQEAgUmVj b3JkVHJhbnNhY3Rpb25BYm9ydChib29sIGlzU3ViWGFjdCkKIAlpbnQJCQluY2hpbGRyZW47CiAJ VHJhbnNhY3Rpb25JZCAqY2hpbGRyZW47CiAJVGltZXN0YW1wVHogeGFjdF90aW1lOworCWJvb2wJ CXJlcGxvcmlnaW47CiAKIAkvKgogCSAqIElmIHdlIGhhdmVuJ3QgYmVlbiBhc3NpZ25lZCBhbiBY SUQsIG5vYm9keSB3aWxsIGNhcmUgd2hldGhlciB3ZSBhYm9ydGVkCkBAIC0xNzQxLDYgKzE3NDIs MTMgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9ydChib29sIGlzU3ViWGFjdCkKIAkJZWxvZyhQQU5J QywgImNhbm5vdCBhYm9ydCB0cmFuc2FjdGlvbiAldSwgaXQgd2FzIGFscmVhZHkgY29tbWl0dGVk IiwKIAkJCSB4aWQpOwogCisJLyoKKwkgKiBBcmUgd2UgdXNpbmcgdGhlIHJlcGxpY2F0aW9uIG9y aWdpbnMgZmVhdHVyZT8gIE9yLCBpbiBvdGhlciB3b3JkcywKKwkgKiBhcmUgd2UgcmVwbGF5aW5n IHJlbW90ZSBhY3Rpb25zPworCSAqLworCXJlcGxvcmlnaW4gPSAocmVwbG9yaWdpbl9zZXNzaW9u X29yaWdpbiAhPSBJbnZhbGlkUmVwT3JpZ2luSWQgJiYKKwkJCQkgIHJlcGxvcmlnaW5fc2Vzc2lv bl9vcmlnaW4gIT0gRG9Ob3RSZXBsaWNhdGVJZCk7CisKIAkvKiBGZXRjaCB0aGUgZGF0YSB3ZSBu ZWVkIGZvciB0aGUgYWJvcnQgcmVjb3JkICovCiAJbnJlbHMgPSBzbWdyR2V0UGVuZGluZ0RlbGV0 ZXMoZmFsc2UsICZyZWxzKTsKIAluY2hpbGRyZW4gPSB4YWN0R2V0Q29tbWl0dGVkQ2hpbGRyZW4o JmNoaWxkcmVuKTsKQEAgLTE3NjUsNiArMTc3MywxMSBAQCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0 KGJvb2wgaXNTdWJYYWN0KQogCQkJCQkgICBNeVhhY3RGbGFncywgSW52YWxpZFRyYW5zYWN0aW9u SWQsCiAJCQkJCSAgIE5VTEwpOwogCisJaWYgKHJlcGxvcmlnaW4pCisJCS8qIE1vdmUgTFNOcyBm b3J3YXJkIGZvciB0aGlzIHJlcGxpY2F0aW9uIG9yaWdpbiAqLworCQlyZXBsb3JpZ2luX3Nlc3Np b25fYWR2YW5jZShyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiwKKwkJCQkJCQkJICAgWGFj dExhc3RSZWNFbmQpOworCiAJLyoKIAkgKiBSZXBvcnQgdGhlIGxhdGVzdCBhc3luYyBhYm9ydCBM U04sIHNvIHRoYXQgdGhlIFdBTCB3cml0ZXIga25vd3MgdG8KIAkgKiBmbHVzaCB0aGlzIGFib3J0 LiBUaGVyZSdzIG5vdGhpbmcgdG8gYmUgZ2FpbmVkIGJ5IGRlbGF5aW5nIHRoaXMsIHNpbmNlCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggODNlNmVhZTg1NS4uNDA4 MGJiYTk4NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21k cy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtODMs NyArODMsNyBAQCB0eXBlZGVmIHN0cnVjdCBTdWJPcHRzCiAJYm9vbAkJY29weV9kYXRhOwogCWJv b2wJCXJlZnJlc2g7CiAJYm9vbAkJYmluYXJ5OwotCWJvb2wJCXN0cmVhbWluZzsKKwljaGFyCQlz dHJlYW1pbmc7CiAJYm9vbAkJdHdvcGhhc2U7CiAJYm9vbAkJZGlzYWJsZW9uZXJyOwogCVhMb2dS ZWNQdHIJbHNuOwpAQCAtOTUsNiArOTUsNjIgQEAgc3RhdGljIExpc3QgKm1lcmdlX3B1YmxpY2F0 aW9ucyhMaXN0ICpvbGRwdWJsaXN0LCBMaXN0ICpuZXdwdWJsaXN0LCBib29sIGFkZHB1YiwKIHN0 YXRpYyB2b2lkIFJlcG9ydFNsb3RDb25uZWN0aW9uRXJyb3IoTGlzdCAqcnN0YXRlcywgT2lkIHN1 YmlkLCBjaGFyICpzbG90bmFtZSwgY2hhciAqZXJyKTsKIAogCisvKgorICogRXh0cmFjdCB0aGUg c3RyZWFtaW5nIG1vZGUgdmFsdWUgZnJvbSBhIERlZkVsZW0uICBUaGlzIGlzIGxpa2UKKyAqIGRl ZkdldEJvb2xlYW4oKSBidXQgYWxzbyBhY2NlcHRzIHRoZSBzcGVjaWFsIHZhbHVlIG9mICJhcHBs eSIuCisgKi8KK3N0YXRpYyBjaGFyCitkZWZHZXRTdHJlYW1pbmdNb2RlKERlZkVsZW0gKmRlZikK K3sKKwkvKgorCSAqIElmIG5vIHBhcmFtZXRlciBnaXZlbiwgYXNzdW1lICJ0cnVlIiBpcyBtZWFu dC4KKwkgKi8KKwlpZiAoZGVmLT5hcmcgPT0gTlVMTCkKKwkJcmV0dXJuIFNVQlNUUkVBTV9PTjsK KworCS8qCisJICogQWxsb3cgMCwgMSwgInRydWUiLCAiZmFsc2UiLCAib24iLCAib2ZmIiBvciAi YXBwbHkiLgorCSAqLworCXN3aXRjaCAobm9kZVRhZyhkZWYtPmFyZykpCisJeworCQljYXNlIFRf SW50ZWdlcjoKKwkJCXN3aXRjaCAoaW50VmFsKGRlZi0+YXJnKSkKKwkJCXsKKwkJCQljYXNlIDA6 CisJCQkJCXJldHVybiBTVUJTVFJFQU1fT0ZGOworCQkJCWNhc2UgMToKKwkJCQkJcmV0dXJuIFNV QlNUUkVBTV9PTjsKKwkJCQlkZWZhdWx0OgorCQkJCQkvKiBvdGhlcndpc2UsIGVycm9yIG91dCBi ZWxvdyAqLworCQkJCQlicmVhazsKKwkJCX0KKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJewor CQkJCWNoYXIJICAgKnN2YWwgPSBkZWZHZXRTdHJpbmcoZGVmKTsKKworCQkJCS8qCisJCQkJICog VGhlIHNldCBvZiBzdHJpbmdzIGFjY2VwdGVkIGhlcmUgc2hvdWxkIG1hdGNoIHVwIHdpdGggdGhl CisJCQkJICogZ3JhbW1hcidzIG9wdF9ib29sZWFuX29yX3N0cmluZyBwcm9kdWN0aW9uLgorCQkJ CSAqLworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJmYWxzZSIpID09IDAgfHwKKwkJCQkJ cGdfc3RyY2FzZWNtcChzdmFsLCAib2ZmIikgPT0gMCkKKwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9P RkY7CisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgInRydWUiKSA9PSAwIHx8CisJCQkJCXBn X3N0cmNhc2VjbXAoc3ZhbCwgIm9uIikgPT0gMCkKKwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9PTjsK KwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAiYXBwbHkiKSA9PSAwKQorCQkJCQlyZXR1cm4g U1VCU1RSRUFNX0FQUExZOworCQkJfQorCQkJYnJlYWs7CisJfQorCWVyZXBvcnQoRVJST1IsCisJ CQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkgZXJybXNnKCIlcyByZXF1aXJl cyBhIEJvb2xlYW4gdmFsdWUgb3IgXCJhcHBseVwiIiwKKwkJCQkJZGVmLT5kZWZuYW1lKSkpOwor CXJldHVybiBTVUJTVFJFQU1fT0ZGOwkJLyoga2VlcCBjb21waWxlciBxdWlldCAqLworfQorCiAv KgogICogQ29tbW9uIG9wdGlvbiBwYXJzaW5nIGZ1bmN0aW9uIGZvciBDUkVBVEUgYW5kIEFMVEVS IFNVQlNDUklQVElPTiBjb21tYW5kcy4KICAqCkBAIC0xMzIsNyArMTg4LDcgQEAgcGFyc2Vfc3Vi c2NyaXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpzdG10X29wdGlvbnMs CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfQklOQVJZKSkKIAkJb3B0cy0+Ymlu YXJ5ID0gZmFsc2U7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfU1RSRUFNSU5H KSkKLQkJb3B0cy0+c3RyZWFtaW5nID0gZmFsc2U7CisJCW9wdHMtPnN0cmVhbWluZyA9IFNVQlNU UkVBTV9PRkY7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfVFdPUEhBU0VfQ09N TUlUKSkKIAkJb3B0cy0+dHdvcGhhc2UgPSBmYWxzZTsKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29w dHMsIFNVQk9QVF9ESVNBQkxFX09OX0VSUikpCkBAIC0yMzMsNyArMjg5LDcgQEAgcGFyc2Vfc3Vi c2NyaXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpzdG10X29wdGlvbnMs CiAJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CiAKIAkJCW9wdHMt PnNwZWNpZmllZF9vcHRzIHw9IFNVQk9QVF9TVFJFQU1JTkc7Ci0JCQlvcHRzLT5zdHJlYW1pbmcg PSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJCW9wdHMtPnN0cmVhbWluZyA9IGRlZkdldFN0cmVh bWluZ01vZGUoZGVmZWwpOwogCQl9CiAJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwg InR3b19waGFzZSIpID09IDApCiAJCXsKQEAgLTYwMSw3ICs2NTcsNyBAQCBDcmVhdGVTdWJzY3Jp cHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAog CXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJvd25lciAtIDFdID0gT2JqZWN0SWRHZXRE YXR1bShvd25lcik7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmVuYWJsZWQgLSAx XSA9IEJvb2xHZXREYXR1bShvcHRzLmVuYWJsZWQpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlw dGlvbl9zdWJiaW5hcnkgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLmJpbmFyeSk7Ci0JdmFsdWVz W0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMu c3RyZWFtaW5nKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0g PSBDaGFyR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlw dGlvbl9zdWJ0d29waGFzZXN0YXRlIC0gMV0gPQogCQlDaGFyR2V0RGF0dW0ob3B0cy50d29waGFz ZSA/CiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX1BFTkRJTkcgOgpAQCAtMTA2MCw3 ICsxMTE2LDcgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1 YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJaWYgKElzU2V0KG9wdHMuc3BlY2lmaWVkX29wdHMs IFNVQk9QVF9TVFJFQU1JTkcpKQogCQkJCXsKIAkJCQkJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0 aW9uX3N1YnN0cmVhbSAtIDFdID0KLQkJCQkJCUJvb2xHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7 CisJCQkJCQlDaGFyR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOwogCQkJCQlyZXBsYWNlc1tBbnVt X3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IHRydWU7CiAJCQkJfQogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgYi9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2Jnd29ya2VyLmMKaW5kZXggNDA2MDFhZWZkOS4uNDBjY2I4OTkzYyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvYmd3b3JrZXIuYwpAQCAtMTI4LDYgKzEyOCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QKIAl9LAogCXsKIAkJIkFwcGx5V29ya2VyTWFpbiIsIEFwcGx5V29ya2VyTWFpbgorCX0sCisJ eworCQkiQXBwbHlCZ3dvcmtlck1haW4iLCBBcHBseUJnd29ya2VyTWFpbgogCX0KIH07CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCmluZGV4IGM0ZTJmZGViNzEuLmEy NGE0MTk2OWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFr ZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQpAQCAt MjYsNiArMjYsNyBAQCBPQkpTID0gXAogCXJlb3JkZXJidWZmZXIubyBcCiAJc25hcGJ1aWxkLm8g XAogCXRhYmxlc3luYy5vIFwKLQl3b3JrZXIubworCXdvcmtlci5vIFwKKwlhcHBseWJnd3Jva2Vy Lm8KIAogaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2NvbW1vbi5tawpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd3Jva2VyLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3cm9rZXIuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43ZTg2ODE1OTBmCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd3Jva2VyLmMKQEAgLTAs MCArMSw3NzUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogYXBwbHliZ3dyb2tlci5jCisgKiAg ICAgU3VwcG9ydCByb3V0aW5lcyBmb3IgYXBwbHlpbmcgeGFjdCBieSBhcHBseSBiYWNrZ3JvdW5k IHdvcmtlcgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIyLCBQb3N0Z3JlU1FMIEdsb2Jh bCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dyb2tlci5jCisgKgorICogVGhpcyBmaWxl IGNvbnRhaW5zIHJvdXRpbmVzIHRoYXQgYXJlIGludGVuZGVkIHRvIHN1cHBvcnQgc2V0dGluZyB1 cCwgdXNpbmcsCisgKiBhbmQgdGVhcmluZyBkb3duIGEgQXBwbHlCZ3dvcmtlclN0YXRlLgorICoK KyAqIFJlZmVyIHRvIHRoZSBjb21tZW50cyBpbiBmaWxlIGhlYWRlciBvZiBsb2dpY2FsL3dvcmtl ci5jIHRvIHNlZSBtb3JlCisgKiBpbmZvcm1hdGlvbiBhYm91dCBhcHBseSBiYWNrZ3JvdW5kIHdv cmtlci4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXMu aCIKKworI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCisjaW5jbHVkZSAibWIvcGdfd2NoYXIu aCIKKyNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5o IgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgorI2luY2x1ZGUgInJl cGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9vcmlnaW4u aCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgorI2luY2x1ZGUgInJlcGxp Y2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCisjaW5j bHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCisj aW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2lu Y2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKwor I2RlZmluZSBQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQyAweDc5ZmIyNDQ3IC8vIFRPRE8gQ29u c2lkZXIgY2hhbmdlCisKKy8qCisgKiBEU00ga2V5cyBmb3IgYXBwbHkgYmFja2dyb3VuZCB3b3Jr ZXIuICBVbmxpa2Ugb3RoZXIgcGFyYWxsZWwgZXhlY3V0aW9uIGNvZGUsCisgKiBzaW5jZSB3ZSBk b24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IERTTSBrZXlzIGNvbmZsaWN0aW5nIHdpdGggcGxhbl9u b2RlX2lkIHdlCisgKiBjYW4gdXNlIHNtYWxsIGludGVnZXJzLgorICovCisjZGVmaW5lIEFQUExZ X0JHV09SS0VSX0tFWV9TSEFSRUQJMQorI2RlZmluZSBBUFBMWV9CR1dPUktFUl9LRVlfTVEJCTIK KworLyoKKyAqIGVudHJ5IGZvciBhIGhhc2ggdGFibGUgd2UgdXNlIHRvIG1hcCBmcm9tIHhpZCB0 byBvdXIgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIKKyAqIHN0YXRlLgorICovCit0eXBlZGVmIHN0 cnVjdCBBcHBseUJnd29ya2VyRW50cnkKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsKKwlBcHBseUJn d29ya2VyU3RhdGUgKndzdGF0ZTsKK30gQXBwbHlCZ3dvcmtlckVudHJ5OworCisvKiBBcHBseSBi YWNrZ3JvdW5kIHdvcmtlcnMgaGFzaCB0YWJsZSAoaW5pdGlhbGl6ZWQgb24gZmlyc3QgdXNlKSAq Lworc3RhdGljIEhUQUIgKkFwcGx5V29ya2Vyc0hhc2ggPSBOVUxMOworc3RhdGljIExpc3QgKkFw cGx5V29ya2Vyc0ZyZWVMaXN0ID0gTklMOworc3RhdGljIExpc3QgKkFwcGx5V29ya2Vyc0xpc3Qg PSBOSUw7CisKKy8qCisgKiBGaWVsZHMgdG8gcmVjb3JkIHRoZSBzaGFyZSBpbmZvcm1hdGlvbnMg YmV0d2VlbiBtYWluIGFwcGx5IHdvcmtlciBhbmQgYXBwbHkKKyAqIGJhY2tncm91bmQgd29ya2Vy LgorICovCit2b2xhdGlsZSBBcHBseUJnd29ya2VyU2hhcmVkICpNeVBhcmFsbGVsU3RhdGUgPSBO VUxMOworCitMaXN0CSAgICpzdWJ4YWN0bGlzdCA9IE5JTDsKKworLyogYXBwbHkgYmFja2dyb3Vu ZCB3b3JrZXIgc2V0dXAgKi8KK3N0YXRpYyBib29sIGNhbnN0YXJ0YXBwbHliZ3dvcmtlcihUcmFu c2FjdGlvbklkIHhpZCwgYm9vbCBzdGFydCk7CitzdGF0aWMgQXBwbHlCZ3dvcmtlclN0YXRlICph cHBseV9iZ3dvcmtlcl9zZXR1cCh2b2lkKTsKK3N0YXRpYyB2b2lkIGFwcGx5X2Jnd29ya2VyX3Nl dHVwX2RzbShBcHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZSk7CisKKy8qCisgKiBDb25maXJtIGlm IHdlIGNhbiB0cnkgdG8gc3RhcnQgYSBuZXcgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuCisgKi8K K3N0YXRpYyBib29sCitjYW5zdGFydGFwcGx5Ymd3b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQsIGJv b2wgc3RhcnQpCit7CisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKQorCQlyZXR1cm4g ZmFsc2U7CisKKwkvKgorCSAqIFdlIGRvbid0IHN0YXJ0IG5ldyBiYWNrZ3JvdW5kIHdvcmtlciBp ZiB3ZSBhcmUgbm90IGluIHN0cmVhbWluZyBhcHBseQorCSAqIG1vZGUuCisJICovCisJaWYgKE15 U3Vic2NyaXB0aW9uLT5zdHJlYW0gIT0gU1VCU1RSRUFNX0FQUExZKQorCQlyZXR1cm4gZmFsc2U7 CisKKwkvKgorCSAqIFdlIGRvbid0IHN0YXJ0IG5ldyBiYWNrZ3JvdW5kIHdvcmtlciBpZiB1c2Vy IGhhcyBzZXQgc2tpcGxzbiBhcyBpdCdzCisJICogcG9zc2libGUgdGhhdCB1c2VyIHdhbnQgdG8g c2tpcCB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiBGb3IKKwkgKiBzdHJlYW1pbmcgdHJhbnNh Y3Rpb24sIHdlIG5lZWQgdG8gc3BpbGwgdGhlIHRyYW5zYWN0aW9uIHRvIGRpc2sgc28gdGhhdAor CSAqIHdlIGNhbiBnZXQgdGhlIGxhc3QgTFNOIG9mIHRoZSB0cmFuc2FjdGlvbiB0byBqdWRnZSB3 aGV0aGVyIHRvIHNraXAKKwkgKiBiZWZvcmUgc3RhcnRpbmcgdG8gYXBwbHkgdGhlIGNoYW5nZS4K KwkgKi8KKwlpZiAoc3RhcnQgJiYgIVhMb2dSZWNQdHJJc0ludmFsaWQoTXlTdWJzY3JpcHRpb24t PnNraXBsc24pKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIEZvciBzdHJlYW1pbmcgdHJh bnNhY3Rpb25zIHRoYXQgYXJlIGJlaW5nIGFwcGxpZWQgaW4gYXBwbHkgYmFja2dyb3VuZAorCSAq IHdvcmtlciwgd2UgY2Fubm90IGRlY2lkZSB3aGV0aGVyIHRvIGFwcGx5IHRoZSBjaGFuZ2UgZm9y IGEgcmVsYXRpb24KKwkgKiB0aGF0IGlzIG5vdCBpbiB0aGUgUkVBRFkgc3RhdGUgKHNlZSBzaG91 bGRfYXBwbHlfY2hhbmdlc19mb3JfcmVsKSBhcyB3ZQorCSAqIHdvbid0IGtub3cgcmVtb3RlX2Zp bmFsX2xzbiBieSB0aGF0IHRpbWUuIFNvLCB3ZSBkb24ndCBzdGFydCBuZXcgYXBwbHkKKwkgKiBi YWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCisJICovCisJaWYgKHN0YXJ0ICYmICFBbGxU YWJsZXN5bmNzUmVhZHkoKSkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIHRydWU7Cit9CisK Ky8qCisgKiBMb29rIHVwIHdvcmtlciBpbnNpZGUgQXBwbHlXb3JrZXJzSGFzaCBmb3IgcmVxdWVz dGVkIHhpZC4KKyAqCisgKiBJZiBzdGFydCBmbGFnIGlzIHRydWUsIHRyeSB0byBzdGFydCBhIG5l dyB3b3JrZXIgaWYgbm90IGZvdW5kIGluIGhhc2ggdGFibGUuCisgKi8KK0FwcGx5Qmd3b3JrZXJT dGF0ZSAqCithcHBseV9iZ3dvcmtlcl9maW5kX29yX3N0YXJ0KFRyYW5zYWN0aW9uSWQgeGlkLCBi b29sIHN0YXJ0KQoreworCWJvb2wJCWZvdW5kOworCUFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRl OworCUFwcGx5Qmd3b3JrZXJFbnRyeSAqZW50cnkgPSBOVUxMOworCisJaWYgKCFjYW5zdGFydGFw cGx5Ymd3b3JrZXIoeGlkLCBzdGFydCkpCisJCXJldHVybiBOVUxMOworCisJLyogRmlyc3QgdGlt ZSB0aHJvdWdoLCBpbml0aWFsaXplIGFwcGx5IHdvcmtlcnMgaGFzaHRhYmxlICovCisJaWYgKEFw cGx5V29ya2Vyc0hhc2ggPT0gTlVMTCkKKwl7CisJCUhBU0hDVEwJCWN0bDsKKworCQlNZW1TZXQo JmN0bCwgMCwgc2l6ZW9mKGN0bCkpOworCQljdGwua2V5c2l6ZSA9IHNpemVvZihUcmFuc2FjdGlv bklkKTsKKwkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihBcHBseUJnd29ya2VyRW50cnkpOworCQlj dGwuaGN4dCA9IEFwcGx5Q29udGV4dDsKKworCQlBcHBseVdvcmtlcnNIYXNoID0gaGFzaF9jcmVh dGUoImxvZ2ljYWwgYXBwbHkgd29ya2VycyBoYXNoIiwgOCwgJmN0bCwKKwkJCQkJCQkJCSAgIEhB U0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCX0KKworCS8qCisJICogRmlu ZCBlbnRyeSBmb3IgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLgorCSAqLworCWVudHJ5ID0gaGFzaF9z ZWFyY2goQXBwbHlXb3JrZXJzSGFzaCwgJnhpZCwgc3RhcnQgPyBIQVNIX0VOVEVSIDogSEFTSF9G SU5ELAorCQkJCQkJJmZvdW5kKTsKKwlpZiAoZm91bmQpCisJeworCQllbnRyeS0+d3N0YXRlLT5w c3RhdGUtPnN0YXR1cyA9IEFQUExZX0JHV09SS0VSX0JVU1k7CisJCXJldHVybiBlbnRyeS0+d3N0 YXRlOworCX0KKwllbHNlIGlmICghc3RhcnQpCisJCXJldHVybiBOVUxMOworCisJLyoKKwkgKiBO b3csIHdlIHRyeSB0byBnZXQgYSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4gSWYgdGhlcmUgaXMg YXQgbGVhc3Qgb25lCisJICogd29ya2VyIGluIHRoZSBpZGxlIGxpc3QsIHRoZW4gdGFrZSBvbmUu IE90aGVyd2lzZSwgd2UgdHJ5IHRvIHN0YXJ0IGEKKwkgKiBuZXcgYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIuCisJICovCisJaWYgKGxpc3RfbGVuZ3RoKEFwcGx5V29ya2Vyc0ZyZWVMaXN0KSA+IDAp CisJeworCQl3c3RhdGUgPSAoQXBwbHlCZ3dvcmtlclN0YXRlICopIGxsYXN0KEFwcGx5V29ya2Vy c0ZyZWVMaXN0KTsKKwkJQXBwbHlXb3JrZXJzRnJlZUxpc3QgPSBsaXN0X2RlbGV0ZV9sYXN0KEFw cGx5V29ya2Vyc0ZyZWVMaXN0KTsKKwl9CisJZWxzZQorCXsKKwkJd3N0YXRlID0gYXBwbHlfYmd3 b3JrZXJfc2V0dXAoKTsKKworCQlpZiAod3N0YXRlID09IE5VTEwpCisJCXsKKwkJCS8qCisJCQkg KiBJZiB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgY2Fubm90IGJlIGxhdW5jaGVkLCByZW1v dmUgZW50cnkKKwkJCSAqIGluIGhhc2ggdGFibGUuCisJCQkgKi8KKwkJCWhhc2hfc2VhcmNoKEFw cGx5V29ya2Vyc0hhc2gsICZ4aWQsIEhBU0hfUkVNT1ZFLCAmZm91bmQpOworCQkJcmV0dXJuIE5V TEw7CisJCX0KKwl9CisKKwkvKiBGaWxsIHVwIHRoZSBoYXNoIGVudHJ5ICovCisJd3N0YXRlLT5w c3RhdGUtPnN0YXR1cyA9IEFQUExZX0JHV09SS0VSX0JVU1k7CisJd3N0YXRlLT5wc3RhdGUtPnNl cnZlcl92ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJjdkNv bm4pOworCXdzdGF0ZS0+cHN0YXRlLT5zdHJlYW1feGlkID0geGlkOworCWVudHJ5LT53c3RhdGUg PSB3c3RhdGU7CisJZW50cnktPnhpZCA9IHhpZDsKKworCXJldHVybiB3c3RhdGU7Cit9CisKKy8q CisgKiBBZGQgdGhlIHdvcmtlciB0byB0aGUgZnJlZSBsaXN0IGFuZCByZW1vdmUgdGhlIGVudHJ5 IGZyb20gaGFzaCB0YWJsZS4KKyAqLwordm9pZAorYXBwbHlfYmd3b3JrZXJfZnJlZShBcHBseUJn d29ya2VyU3RhdGUgKndzdGF0ZSkKK3sKKwlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwlUcmFuc2Fj dGlvbklkIHhpZCA9IHdzdGF0ZS0+cHN0YXRlLT5zdHJlYW1feGlkOworCisJQXNzZXJ0KHdzdGF0 ZS0+cHN0YXRlLT5zdGF0dXMgPT0gQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOworCisJb2xkY3R4 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisKKwloYXNoX3NlYXJjaChB cHBseVdvcmtlcnNIYXNoLCAmeGlkLCBIQVNIX1JFTU9WRSwgTlVMTCk7CisKKwllbG9nKERFQlVH MSwgImFkZGluZyBmaW5pc2hlZCBhcHBseSB3b3JrZXIgIyV1IGZvciB4aWQgJXUgdG8gdGhlIGlk bGUgbGlzdCIsCisJCSB3c3RhdGUtPnBzdGF0ZS0+biwgd3N0YXRlLT5wc3RhdGUtPnN0cmVhbV94 aWQpOworCisJQXBwbHlXb3JrZXJzRnJlZUxpc3QgPSBsYXBwZW5kKEFwcGx5V29ya2Vyc0ZyZWVM aXN0LCB3c3RhdGUpOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7Cit9CisKKy8q IEFwcGx5IEJhY2tncm91bmQgV29ya2VyIG1haW4gbG9vcCAqLworc3RhdGljIHZvaWQKK0xvZ2lj YWxBcHBseUJnd0xvb3Aoc2htX21xX2hhbmRsZSAqbXFoLCB2b2xhdGlsZSBBcHBseUJnd29ya2Vy U2hhcmVkICpwc3QpCit7CisJc2htX21xX3Jlc3VsdCBzaG1xX3JlczsKKwlQR1BST0MJICAgKnJl Z2lzdHJhbnQ7CisJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CisJWExvZ1JlY1B0 cglsYXN0X3JlY2VpdmVkID0gSW52YWxpZFhMb2dSZWNQdHI7CisKKwlyZWdpc3RyYW50ID0gQmFj a2VuZFBpZEdldFByb2MoTXlCZ3dvcmtlckVudHJ5LT5iZ3dfbm90aWZ5X3BpZCk7CisJU2V0TGF0 Y2goJnJlZ2lzdHJhbnQtPnByb2NMYXRjaCk7CisKKwkvKgorCSAqIFB1c2ggYXBwbHkgZXJyb3Ig Y29udGV4dCBjYWxsYmFjay4gRmllbGRzIHdpbGwgYmUgZmlsbGVkIGR1cmluZworCSAqIGFwcGx5 aW5nIGEgY2hhbmdlLgorCSAqLworCWVycmNhbGxiYWNrLmNhbGxiYWNrID0gYXBwbHlfZXJyb3Jf Y2FsbGJhY2s7CisJZXJyY2FsbGJhY2sucHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOwor CWVycm9yX2NvbnRleHRfc3RhY2sgPSAmZXJyY2FsbGJhY2s7CisKKwlmb3IgKDs7KQorCXsKKwkJ dm9pZAkgICAqZGF0YTsKKwkJU2l6ZQkJbGVuOworCQlpbnQJCQljOworCQlTdHJpbmdJbmZvRGF0 YSBzOworCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJWExvZ1JlY1B0cglzdGFydF9sc247CisJ CVhMb2dSZWNQdHIJZW5kX2xzbjsKKwkJVGltZXN0YW1wVHogc2VuZF90aW1lOworCisJCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyogRW5zdXJlIHdlIGFyZSByZWFkaW5nIHRoZSBkYXRh IGludG8gb3VyIG1lbW9yeSBjb250ZXh0LiAqLworCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8oQXBwbHlNZXNzYWdlQ29udGV4dCk7CisKKwkJc2htcV9yZXMgPSBzaG1fbXFfcmVjZWl2 ZShtcWgsICZsZW4sICZkYXRhLCBmYWxzZSk7CisKKwkJaWYgKHNobXFfcmVzICE9IFNITV9NUV9T VUNDRVNTKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1Rf Tk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvc3QgY29ubmVjdGlv biB0byB0aGUgbWFpbiBhcHBseSB3b3JrZXIiKSkpOworCisJCWlmIChsZW4gPT0gMCkKKwkJCWJy ZWFrOworCisJCXMuY3Vyc29yID0gMDsKKwkJcy5tYXhsZW4gPSAtMTsKKwkJcy5kYXRhID0gKGNo YXIgKikgZGF0YTsKKwkJcy5sZW4gPSBsZW47CisKKwkJLyoKKwkJICogV2UgdXNlIGZpcnN0IGJ5 dGUgb2YgbWVzc2FnZSBmb3IgYWRkaXRpb25hbCBjb21tdW5pY2F0aW9uIGJldHdlZW4KKwkJICog bWFpbiBMb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBhbmQgYXBwbHkgYmd3b3JrZXJzLCBzbyBp ZiBpdAorCQkgKiBkaWZmZXJzIGZyb20gJ3cnLCB0aGVuIHByb2Nlc3MgaXQgZmlyc3QuCisJCSAq LworCQljID0gcHFfZ2V0bXNnYnl0ZSgmcyk7CisJCXN3aXRjaCAoYykKKwkJeworCQkJLyogRW5k IG1lc3NhZ2Ugb2Ygc3RyZWFtaW5nIGNodW5rICovCisJCQljYXNlIExPR0lDQUxfUkVQX01TR19T VFJFQU1fU1RPUDoKKwkJCQllbG9nKERFQlVHMSwgIltBcHBseSBCR1cgIyV1XSBlbmRlZCBwcm9j ZXNzaW5nIHN0cmVhbWluZyBjaHVuaywiCisJCQkJCSAid2FpdGluZyBvbiBzaG1fbXFfcmVjZWl2 ZSIsIHBzdC0+bik7CisKKwkJCQlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOworCQkJ CXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRUlOVFJBTlNBQ1RJT04sIE5VTEwpOwor CQkJCWNvbnRpbnVlOworCQkJY2FzZSAndyc6CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJ CWVsb2coRVJST1IsICJbQXBwbHkgQkdXICMldV0gdW5leHBlY3RlZCBtZXNzYWdlIFwiJWNcIiIs CisJCQkJCSBwc3QtPm4sIGMpOworCQkJCWJyZWFrOworCQl9CisKKwkJc3RhcnRfbHNuID0gcHFf Z2V0bXNnaW50NjQoJnMpOworCQllbmRfbHNuID0gcHFfZ2V0bXNnaW50NjQoJnMpOworCQlzZW5k X3RpbWUgPSBwcV9nZXRtc2dpbnQ2NCgmcyk7CisKKwkJaWYgKGxhc3RfcmVjZWl2ZWQgPCBzdGFy dF9sc24pCisJCQlsYXN0X3JlY2VpdmVkID0gc3RhcnRfbHNuOworCisJCWlmIChsYXN0X3JlY2Vp dmVkIDwgZW5kX2xzbikKKwkJCWxhc3RfcmVjZWl2ZWQgPSBlbmRfbHNuOworCisJCS8qCisJCSAq IFRPIElNUFJPVkU6IERvIHdlIG5lZWQgdG8gZGlzcGxheSB0aGUgYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIncworCQkgKiBpbmZvcm1hdGlvbiBpbiBwZ19zdGF0X3JlcGxpY2F0aW9uID8KKwkJICov CisJCVVwZGF0ZVdvcmtlclN0YXRzKGxhc3RfcmVjZWl2ZWQsIHNlbmRfdGltZSwgZmFsc2UpOwor CisJCWFwcGx5X2Rpc3BhdGNoKCZzKTsKKworCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwkJ eworCQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOworCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUo UEdDX1NJR0hVUCk7CisJCX0KKworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwkJ TWVtb3J5Q29udGV4dFJlc2V0KEFwcGx5TWVzc2FnZUNvbnRleHQpOworCX0KKworCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhUb3BNZW1vcnlDb250ZXh0KTsKKwlNZW1vcnlDb250ZXh0UmVzZXQoQXBw bHlDb250ZXh0KTsKKworCS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLworCWVycm9y X2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKKworCWVsb2coREVCVUcxLCAi W0FwcGx5IEJHVyAjJXVdIGV4aXRpbmciLCBwc3QtPm4pOworCisJLyogU2lnbmFsIG1haW4gcHJv Y2VzcyB0aGF0IHdlIGFyZSBkb25lLiAqLworCVNldExhdGNoKCZyZWdpc3RyYW50LT5wcm9jTGF0 Y2gpOworfQorCisvKgorICogU2V0IHRoZSBleGl0IHN0YXR1cyBzbyB0aGF0IHRoZSBtYWluIGFw cGx5IHdvcmtlciBjYW4gcmVhbGl6ZSB3ZSBoYXZlCisgKiBzaHV0ZG93bi4KKyAqLworc3RhdGlj IHZvaWQKK0FwcGx5Qmd3U2h1dGRvd24oaW50IGNvZGUsIERhdHVtIGFyZykKK3sKKwlTcGluTG9j a0FjcXVpcmUoJk15UGFyYWxsZWxTdGF0ZS0+bXV0ZXgpOworCU15UGFyYWxsZWxTdGF0ZS0+c3Rh dHVzID0gQVBQTFlfQkdXT1JLRVJfRVhJVDsKKwlTcGluTG9ja1JlbGVhc2UoJk15UGFyYWxsZWxT dGF0ZS0+bXV0ZXgpOworCisJZHNtX2RldGFjaCgoZHNtX3NlZ21lbnQgKikgRGF0dW1HZXRQb2lu dGVyKGFyZykpOworfQorCisvKgorICogQXBwbHkgQmFja2dyb3VuZCBXb3JrZXIgZW50cnkgcG9p bnQKKyAqLwordm9pZAorQXBwbHlCZ3dvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCit7CisJdm9s YXRpbGUgQXBwbHlCZ3dvcmtlclNoYXJlZCAqcHN0OworCisJZHNtX2hhbmRsZQloYW5kbGU7CisJ ZHNtX3NlZ21lbnQgKnNlZzsKKwlzaG1fdG9jICAgICp0b2M7CisJc2htX21xCSAgICptcTsKKwlz aG1fbXFfaGFuZGxlICptcWg7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCVJlcE9yaWdp bklkIG9yaWdpbmlkOworCWludAkJCXdvcmtlcl9zbG90ID0gRGF0dW1HZXRJbnQzMihtYWluX2Fy Zyk7CisJY2hhcgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07CisKKwkvKiBBdHRhY2ggdG8gc2xv dCAqLworCWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7CisKKwlNZW1vcnlD b250ZXh0U3dpdGNoVG8oVG9wTWVtb3J5Q29udGV4dCk7CisKKwkvKiBMb2FkIHRoZSBzdWJzY3Jp cHRpb24gaW50byBwZXJzaXN0ZW50IG1lbW9yeSBjb250ZXh0LiAqLworCUFwcGx5Q29udGV4dCA9 IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJCSAiQXBw bHlDb250ZXh0IiwKKwkJCQkJCQkJCQkgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisKKwkvKgor CSAqIEluaXQgdGhlIEFwcGx5TWVzc2FnZUNvbnRleHQgd2hpY2ggd2UgY2xlYW4gdXAgYWZ0ZXIg ZWFjaCByZXBsaWNhdGlvbgorCSAqIHByb3RvY29sIG1lc3NhZ2UuCisJICovCisJQXBwbHlNZXNz YWdlQ29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShBcHBseUNvbnRleHQsCisJCQkJCQkJ CQkJCQkiQXBwbHlNZXNzYWdlQ29udGV4dCIsCisJCQkJCQkJCQkJCQlBTExPQ1NFVF9ERUZBVUxU X1NJWkVTKTsKKworCS8qIFNldHVwIHNpZ25hbCBoYW5kbGluZyAqLworCXBxc2lnbmFsKFNJR0hV UCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7CisJcHFzaWduYWwoU0lHVEVSTSwgZGll KTsKKwlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25hbHMoKTsKKworCS8qCisJICogQ29ubmVj dCB0byB0aGUgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQuCisJICoKKwkgKiBUaGUgYmFj a2VuZCB0aGF0IHJlZ2lzdGVyZWQgdGhpcyB3b3JrZXIgcGFzc2VkIHVzIHRoZSBJRCBvZiBhIHNo YXJlZAorCSAqIG1lbW9yeSBzZWdtZW50IHRvIHdoaWNoIHdlIG11c3QgYXR0YWNoIGZvciBmdXJ0 aGVyIGluc3RydWN0aW9ucy4gIEluCisJICogb3JkZXIgdG8gYXR0YWNoIHRvIGR5bmFtaWMgc2hh cmVkIG1lbW9yeSwgd2UgbmVlZCBhIHJlc291cmNlIG93bmVyLgorCSAqIE9uY2Ugd2UndmUgbWFw cGVkIHRoZSBzZWdtZW50IGluIG91ciBhZGRyZXNzIHNwYWNlLCBhdHRhY2ggdG8gdGhlIHRhYmxl CisJICogb2YgY29udGVudHMgc28gd2UgY2FuIGxvY2F0ZSB0aGUgdmFyaW91cyBkYXRhIHN0cnVj dHVyZXMgd2UnbGwgbmVlZCB0bworCSAqIGZpbmQgd2l0aGluIHRoZSBzZWdtZW50LgorCSAqLwor CUN1cnJlbnRSZXNvdXJjZU93bmVyID0gUmVzb3VyY2VPd25lckNyZWF0ZShOVUxMLCAiTG9naWNh bCBhcHBseSB3b3JrZXIiKTsKKwltZW1jcHkoJmhhbmRsZSwgTXlCZ3dvcmtlckVudHJ5LT5iZ3df ZXh0cmEsIHNpemVvZihkc21faGFuZGxlKSk7CisJc2VnID0gZHNtX2F0dGFjaChoYW5kbGUpOwor CWlmIChzZWcgPT0gTlVMTCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJ1bmFibGUg dG8gbWFwIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50IikpKTsKKwl0b2MgPSBzaG1fdG9j X2F0dGFjaChQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQywgZHNtX3NlZ21lbnRfYWRkcmVzcyhz ZWcpKTsKKwlpZiAodG9jID09IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygi YmFkIG1hZ2ljIG51bWJlciBpbiBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCIpKSk7CisK KwliZWZvcmVfc2htZW1fZXhpdChBcHBseUJnd1NodXRkb3duLCBQb2ludGVyR2V0RGF0dW0oc2Vn KSk7CisKKwkvKiBMb29rIHVwIHRoZSBwYXJhbGxlbCBzdGF0ZS4gKi8KKwlwc3QgPSBzaG1fdG9j X2xvb2t1cCh0b2MsIEFQUExZX0JHV09SS0VSX0tFWV9TSEFSRUQsIGZhbHNlKTsKKwlNeVBhcmFs bGVsU3RhdGUgPSBwc3Q7CisKKwkvKgorCSAqIEF0dGFjaCB0byB0aGUgbWVzc2FnZSBxdWV1ZS4K KwkgKi8KKwltcSA9IHNobV90b2NfbG9va3VwKHRvYywgQVBQTFlfQkdXT1JLRVJfS0VZX01RLCBm YWxzZSk7CisJc2htX21xX3NldF9yZWNlaXZlcihtcSwgTXlQcm9jKTsKKwltcWggPSBzaG1fbXFf YXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJLyogUnVuIGFzIHJlcGxpY2Egc2Vzc2lvbiByZXBs aWNhdGlvbiByb2xlLiAqLworCVNldENvbmZpZ09wdGlvbigic2Vzc2lvbl9yZXBsaWNhdGlvbl9y b2xlIiwgInJlcGxpY2EiLAorCQkJCQlQR0NfU1VTRVQsIFBHQ19TX09WRVJSSURFKTsKKworCS8q IENvbm5lY3QgdG8gb3VyIGRhdGFiYXNlLiAqLworCUJhY2tncm91bmRXb3JrZXJJbml0aWFsaXpl Q29ubmVjdGlvbkJ5T2lkKE15TG9naWNhbFJlcFdvcmtlci0+ZGJpZCwKKwkJCQkJCQkJCQkJICBN eUxvZ2ljYWxSZXBXb3JrZXItPnVzZXJpZCwKKwkJCQkJCQkJCQkJICAwKTsKKworCS8qCisJICog U2V0IGFsd2F5cy1zZWN1cmUgc2VhcmNoIHBhdGgsIHNvIG1hbGljaW91cyB1c2VycyBjYW4ndCBy ZWRpcmVjdCB1c2VyCisJICogY29kZSAoZS5nLiBwZ19pbmRleC5pbmRleHBycykuCisJICovCisJ U2V0Q29uZmlnT3B0aW9uKCJzZWFyY2hfcGF0aCIsICIiLCBQR0NfU1VTRVQsIFBHQ19TX09WRVJS SURFKTsKKworCS8qCisJICogU2V0IHRoZSBjbGllbnQgZW5jb2RpbmcgdG8gdGhlIGRhdGFiYXNl IGVuY29kaW5nLCBzaW5jZSB0aGF0IGlzIHdoYXQKKwkgKiB0aGUgbGVhZGVyIHdpbGwgZXhwZWN0 LgorCSAqLworCVNldENsaWVudEVuY29kaW5nKEdldERhdGFiYXNlRW5jb2RpbmcoKSk7CisKKwlz dHJlYW1feGlkID0gcHN0LT5zdHJlYW1feGlkOworCisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisK KwlNeVN1YnNjcmlwdGlvbiA9IEdldFN1YnNjcmlwdGlvbihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1 YmlkLCB0cnVlKTsKKwlpZiAoIU15U3Vic2NyaXB0aW9uKQorCXsKKwkJZXJlcG9ydChMT0csCisJ CQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlw dGlvbiAldSB3aWxsIG5vdCAiCisJCQkJCQkic3RhcnQgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9u IHdhcyByZW1vdmVkIGR1cmluZyBzdGFydHVwIiwKKwkJCQkJCU15TG9naWNhbFJlcFdvcmtlci0+ c3ViaWQpKSk7CisJCXByb2NfZXhpdCgwKTsKKwl9CisKKwlNeVN1YnNjcmlwdGlvblZhbGlkID0g dHJ1ZTsKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisKKwkvKiBTZXR1cCBz eW5jaHJvbm91cyBjb21taXQgYWNjb3JkaW5nIHRvIHRoZSB1c2VyJ3Mgd2lzaGVzICovCisJU2V0 Q29uZmlnT3B0aW9uKCJzeW5jaHJvbm91c19jb21taXQiLCBNeVN1YnNjcmlwdGlvbi0+c3luY2Nv bW1pdCwKKwkJCQkJUEdDX0JBQ0tFTkQsIFBHQ19TX09WRVJSSURFKTsKKworCS8qIEtlZXAgdXMg aW5mb3JtZWQgYWJvdXQgc3Vic2NyaXB0aW9uIGNoYW5nZXMuICovCisJQ2FjaGVSZWdpc3RlclN5 c2NhY2hlQ2FsbGJhY2soU1VCU0NSSVBUSU9OT0lELAorCQkJCQkJCQkgIHN1YnNjcmlwdGlvbl9j aGFuZ2VfY2IsCisJCQkJCQkJCSAgKERhdHVtKSAwKTsKKworCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOworCisJLyogU2V0dXAgcmVwbGljYXRpb24gb3JpZ2luIHRyYWNraW5nLiAqLworCVN0 YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJc25wcmludGYob3JpZ2lubmFtZSwgc2l6ZW9mKG9y aWdpbm5hbWUpLCAicGdfJXUiLCBNeVN1YnNjcmlwdGlvbi0+b2lkKTsKKwlvcmlnaW5pZCA9IHJl cGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCB0cnVlKTsKKwlpZiAoIU9pZElzVmFsaWQob3Jp Z2luaWQpKQorCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fY3JlYXRlKG9yaWdpbm5hbWUpOworCisJ LyoKKwkgKiBUaGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgZG9lc24ndCBuZWVkIHRvIG1vbm9w b2xpemUgdGhpcyByZXBsaWNhdGlvbgorCSAqIG9yaWdpbiB3aGljaCB3YXMgYWxyZWFkeSBhY3F1 aXJlZCBieSBpdHMgbGVhZGVyIHByb2Nlc3MuCisJICovCisJcmVwbG9yaWdpbl9zZXNzaW9uX3Nl dHVwKG9yaWdpbmlkLCBmYWxzZSk7CisJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdp bmlkOworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyoKKwkgKiBBbGxvY2F0ZSB0 aGUgb3JpZ2luIG5hbWUgaW4gbG9uZy1saXZlZCBjb250ZXh0IGZvciBlcnJvciBjb250ZXh0CisJ ICogbWVzc2FnZS4KKwkgKi8KKwlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcub3JpZ2luX25hbWUg PSBNZW1vcnlDb250ZXh0U3RyZHVwKEFwcGx5Q29udGV4dCwKKwkJCQkJCQkJCQkJCQkJCSAgIG9y aWdpbm5hbWUpOworCisJLyoKKwkgKiBJbmRpY2F0ZSB0aGF0IHdlJ3JlIGZ1bGx5IGluaXRpYWxp emVkIGFuZCByZWFkeSB0byBiZWdpbiB0aGUgbWFpbiBwYXJ0CisJICogb2YgdGhlIGFwcGx5IG9w ZXJhdGlvbi4KKwkgKi8KKwlhcHBseV9iZ3dvcmtlcl9zZXRfc3RhdHVzKEFQUExZX0JHV09SS0VS X0FUVEFDSEVEKTsKKworCWVsb2coREVCVUcxLCAiW0FwcGx5IEJHVyAjJXVdIHN0YXJ0ZWQiLCBw c3QtPm4pOworCisJTG9naWNhbEFwcGx5Qmd3TG9vcChtcWgsIHBzdCk7CisKKwkvKgorCSAqIFdl J3JlIGRvbmUuICBFeHBsaWNpdGx5IGRldGFjaCB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50IHNv IHRoYXQgd2UKKwkgKiBkb24ndCBnZXQgYSByZXNvdXJjZSBsZWFrIHdhcm5pbmcgYXQgY29tbWl0 IHRpbWUuICBUaGlzIHdpbGwgZmlyZSBhbnkKKwkgKiBvbl9kc21fZGV0YWNoIGNhbGxiYWNrcyB3 ZSd2ZSByZWdpc3RlcmVkLCBhcyB3ZWxsLiAgT25jZSB0aGF0J3MgZG9uZSwKKwkgKiB3ZSBjYW4g Z28gYWhlYWQgYW5kIGV4aXQuCisJICovCisJZHNtX2RldGFjaChzZWcpOworCXByb2NfZXhpdCgw KTsKK30KKworLyoKKyAqIFNldCB1cCBhIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50Lgor ICoKKyAqIFdlIHNldCB1cCBhIGNvbnRyb2wgcmVnaW9uIHRoYXQgY29udGFpbnMgYSBBcHBseUJn d29ya2VyU2hhcmVkLAorICogcGx1cyBvbmUgcmVnaW9uIHBlciBtZXNzYWdlIHF1ZXVlLiBUaGVy ZSBhcmUgYXMgbWFueSBtZXNzYWdlIHF1ZXVlcyBhcworICogdGhlIG51bWJlciBvZiB3b3JrZXJz LgorICovCitzdGF0aWMgdm9pZAorYXBwbHlfYmd3b3JrZXJfc2V0dXBfZHNtKEFwcGx5Qmd3b3Jr ZXJTdGF0ZSAqd3N0YXRlKQoreworCXNobV90b2NfZXN0aW1hdG9yIGU7CisJU2l6ZQkJc2Vnc2l6 ZTsKKwlkc21fc2VnbWVudCAqc2VnOworCXNobV90b2MgICAgKnRvYzsKKwlBcHBseUJnd29ya2Vy U2hhcmVkICpwc3Q7CisJc2htX21xCSAgICptcTsKKwlpbnQ2NAkJcXVldWVfc2l6ZSA9IDE2MDAw MDAwMDsgLyogMTYgTUIgZm9yIG5vdyAqLworCisJLyoKKwkgKiBFc3RpbWF0ZSBob3cgbXVjaCBz aGFyZWQgbWVtb3J5IHdlIG5lZWQuCisJICoKKwkgKiBCZWNhdXNlIHRoZSBUT0MgbWFjaGluZXJ5 IG1heSBjaG9vc2UgdG8gaW5zZXJ0IHBhZGRpbmcgb2Ygb2RkbHktc2l6ZWQKKwkgKiByZXF1ZXN0 cywgd2UgbXVzdCBlc3RpbWF0ZSBlYWNoIGNodW5rIHNlcGFyYXRlbHkuCisJICoKKwkgKiBXZSBu ZWVkIG9uZSBrZXkgdG8gcmVnaXN0ZXIgdGhlIGxvY2F0aW9uIG9mIHRoZSBoZWFkZXIsIGFuZCB3 ZSBuZWVkCisJICogYW5vdGhlciBrZXkgdG8gdHJhY2sgdGhlIGxvY2F0aW9uIG9mIHRoZSBtZXNz YWdlIHF1ZXVlLgorCSAqLworCXNobV90b2NfaW5pdGlhbGl6ZV9lc3RpbWF0b3IoJmUpOworCXNo bV90b2NfZXN0aW1hdGVfY2h1bmsoJmUsIHNpemVvZihBcHBseUJnd29ya2VyU2hhcmVkKSk7CisJ c2htX3RvY19lc3RpbWF0ZV9jaHVuaygmZSwgKFNpemUpIHF1ZXVlX3NpemUpOworCisJc2htX3Rv Y19lc3RpbWF0ZV9rZXlzKCZlLCAxICsgMSk7CisJc2Vnc2l6ZSA9IHNobV90b2NfZXN0aW1hdGUo JmUpOworCisJLyogQ3JlYXRlIHRoZSBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgYW5kIGVzdGFibGlz aCBhIHRhYmxlIG9mIGNvbnRlbnRzLiAqLworCXNlZyA9IGRzbV9jcmVhdGUoc2htX3RvY19lc3Rp bWF0ZSgmZSksIDApOworCXRvYyA9IHNobV90b2NfY3JlYXRlKFBHX0xPR0lDQUxfQVBQTFlfU0hN X01BR0lDLCBkc21fc2VnbWVudF9hZGRyZXNzKHNlZyksCisJCQkJCQkgc2Vnc2l6ZSk7CisKKwkv KiBTZXQgdXAgdGhlIGhlYWRlciByZWdpb24uICovCisJcHN0ID0gc2htX3RvY19hbGxvY2F0ZSh0 b2MsIHNpemVvZihBcHBseUJnd29ya2VyU2hhcmVkKSk7CisJU3BpbkxvY2tJbml0KCZwc3QtPm11 dGV4KTsKKwlwc3QtPnN0YXR1cyA9IEFQUExZX0JHV09SS0VSX0JVU1k7CisJcHN0LT5zZXJ2ZXJf dmVyc2lvbiA9IHdhbHJjdl9zZXJ2ZXJfdmVyc2lvbihMb2dSZXBXb3JrZXJXYWxSY3ZDb25uKTsK Kwlwc3QtPnN0cmVhbV94aWQgPSBzdHJlYW1feGlkOworCXBzdC0+biA9IGxpc3RfbGVuZ3RoKEFw cGx5V29ya2Vyc0xpc3QpICsgMTsKKworCXNobV90b2NfaW5zZXJ0KHRvYywgQVBQTFlfQkdXT1JL RVJfS0VZX1NIQVJFRCwgcHN0KTsKKworCS8qIFNldCB1cCBvbmUgbWVzc2FnZSBxdWV1ZSBwZXIg d29ya2VyLCBwbHVzIG9uZS4gKi8KKwltcSA9IHNobV9tcV9jcmVhdGUoc2htX3RvY19hbGxvY2F0 ZSh0b2MsIChTaXplKSBxdWV1ZV9zaXplKSwKKwkJCQkJICAgKFNpemUpIHF1ZXVlX3NpemUpOwor CXNobV90b2NfaW5zZXJ0KHRvYywgQVBQTFlfQkdXT1JLRVJfS0VZX01RLCBtcSk7CisJc2htX21x X3NldF9zZW5kZXIobXEsIE15UHJvYyk7CisKKwkvKiBBdHRhY2ggdGhlIHF1ZXVlcy4gKi8KKwl3 c3RhdGUtPm1xX2hhbmRsZSA9IHNobV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CisKKwkvKiBS ZXR1cm4gcmVzdWx0cyB0byBjYWxsZXIuICovCisJd3N0YXRlLT5kc21fc2VnID0gc2VnOworCXdz dGF0ZS0+cHN0YXRlID0gcHN0OworfQorCisvKgorICogU3RhcnQgYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIgcHJvY2VzcyBhbmQgYWxsb2NhdGUgc2hhcmVkIG1lbW9yeSBmb3IgaXQuCisgKi8KK3N0 YXRpYyBBcHBseUJnd29ya2VyU3RhdGUgKgorYXBwbHlfYmd3b3JrZXJfc2V0dXAodm9pZCkKK3sK KwlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisJYm9vbAkJbGF1bmNoZWQ7CisJQXBwbHlCZ3dv cmtlclN0YXRlICp3c3RhdGU7CisJaW50CQkJbmFwcGx5d29ya2VyczsKKworCWVsb2coREVCVUcx LCAic2V0dGluZyB1cCBhcHBseSB3b3JrZXIgIyV1IiwgbGlzdF9sZW5ndGgoQXBwbHlXb3JrZXJz TGlzdCkgKyAxKTsKKworCS8qIENoZWNrIElmIHRoZXJlIGFyZSBmcmVlIHdvcmtlciBzbG90KHMp ICovCisJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKKwlu YXBwbHl3b3JrZXJzID0gbG9naWNhbHJlcF9hcHBseV9iYWNrZ3JvdW5kX3dvcmtlcl9jb3VudChN eUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkKTsKKwlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3Jr ZXJMb2NrKTsKKwlpZiAobmFwcGx5d29ya2VycyA+PSBtYXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9z dWJzY3JpcHRpb24pCisJCXJldHVybiBOVUxMOworCisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJd3N0YXRlID0gKEFwcGx5Qmd3b3JrZXJTdGF0 ZSAqKSBwYWxsb2MwKHNpemVvZihBcHBseUJnd29ya2VyU3RhdGUpKTsKKworCS8qIFNldHVwIHNo YXJlZCBtZW1vcnkgKi8KKwlhcHBseV9iZ3dvcmtlcl9zZXR1cF9kc20od3N0YXRlKTsKKworCWxh dW5jaGVkID0gbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE15TG9naWNhbFJlcFdvcmtlci0+ZGJp ZCwKKwkJCQkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+b2lkLAorCQkJCQkJCQkJCU15U3Vic2NyaXB0 aW9uLT5uYW1lLAorCQkJCQkJCQkJCU15TG9naWNhbFJlcFdvcmtlci0+dXNlcmlkLAorCQkJCQkJ CQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJZHNtX3NlZ21lbnRfaGFuZGxlKHdzdGF0ZS0+ZHNt X3NlZykpOworCisJaWYgKGxhdW5jaGVkKQorCXsKKwkJLyogV2FpdCBmb3Igd29ya2VyIHRvIGF0 dGFjaC4gKi8KKwkJYXBwbHlfYmd3b3JrZXJfd2FpdF9mb3Iod3N0YXRlLCBBUFBMWV9CR1dPUktF Ul9BVFRBQ0hFRCk7CisKKwkJQXBwbHlXb3JrZXJzTGlzdCA9IGxhcHBlbmQoQXBwbHlXb3JrZXJz TGlzdCwgd3N0YXRlKTsKKwl9CisJZWxzZQorCXsKKwkJcGZyZWUod3N0YXRlKTsKKwkJd3N0YXRl ID0gTlVMTDsKKwl9CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisKKwly ZXR1cm4gd3N0YXRlOworfQorCisvKgorICogU2VuZCB0aGUgZGF0YSB0byB0aGUgc3BlY2lmaWVk IGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHZpYSBzaGFyZWQtbWVtb3J5IHF1ZXVlLgorICovCit2 b2lkCithcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEoQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUs IFNpemUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRhKQoreworCXNobV9tcV9yZXN1bHQgcmVzdWx0 OworCisJcmVzdWx0ID0gc2htX21xX3NlbmQod3N0YXRlLT5tcV9oYW5kbGUsIG5ieXRlcywgZGF0 YSwgZmFsc2UsIHRydWUpOworCisJaWYgKHJlc3VsdCAhPSBTSE1fTVFfU1VDQ0VTUykKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlT SVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3Qgc2VuZCB0dXBsZXMgdG8gc2hhcmVk LW1lbW9yeSBxdWV1ZSIpKSk7Cit9CisKKy8qCisgKiBXYWl0IHVudGlsIHRoZSBzdGF0dXMgb2Yg YXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgcmVhY2hlcyB0aGUKKyAqICd3YWl0X2Zvcl9zdGF0dXMn CisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX3dhaXRfZm9yKEFwcGx5Qmd3b3JrZXJTdGF0ZSAq d3N0YXRlLAorCQkJCQkJQXBwbHlCZ3dvcmtlclN0YXR1cyB3YWl0X2Zvcl9zdGF0dXMpCit7CisJ Zm9yICg7OykKKwl7CisJCWNoYXIJCXN0YXR1czsKKworCQlTcGluTG9ja0FjcXVpcmUoJndzdGF0 ZS0+cHN0YXRlLT5tdXRleCk7CisJCXN0YXR1cyA9IHdzdGF0ZS0+cHN0YXRlLT5zdGF0dXM7CisJ CVNwaW5Mb2NrUmVsZWFzZSgmd3N0YXRlLT5wc3RhdGUtPm11dGV4KTsKKworCQkvKiBEb25lIGlm IGFscmVhZHkgaW4gY29ycmVjdCBzdGF0dXMuICovCisJCWlmIChzdGF0dXMgPT0gd2FpdF9mb3Jf c3RhdHVzKQorCQkJYnJlYWs7CisKKwkJLyogSWYgYW55IHdvcmtlcnMgKG9yIHRoZSBwb3N0bWFz dGVyKSBoYXZlIGRpZWQsIHdlIGhhdmUgZmFpbGVkLiAqLworCQlpZiAoc3RhdHVzID09IEFQUExZ X0JHV09SS0VSX0VYSVQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygiYmFja2dy b3VuZCB3b3JrZXIgJXUgZmFpbGVkIHRvIGFwcGx5IHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCQl3 c3RhdGUtPnBzdGF0ZS0+biwgd3N0YXRlLT5wc3RhdGUtPnN0cmVhbV94aWQpKSk7CisKKwkJLyog V2FpdCB0byBiZSBzaWduYWxsZWQuICovCisJCVdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9T RVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCSAgV0FJVF9FVkVOVF9MT0dJQ0FMX0FQ UExZX1dPUktFUl9TVEFURV9DSEFOR0UpOworCisJCS8qIFJlc2V0IHRoZSBsYXRjaCBzbyB3ZSBk b24ndCBzcGluLiAqLworCQlSZXNldExhdGNoKE15TGF0Y2gpOworCisJCS8qIEFuIGludGVycnVw dCBtYXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcuICovCisJCUNIRUNLX0ZP Ul9JTlRFUlJVUFRTKCk7CisJfQorfQorCisvKgorICogQ2hlY2sgdGhlIHN0YXR1cyBvZiB3b3Jr ZXJzIGFuZCByZXBvcnQgYW4gZXJyb3IgaWYgYW55IGFwcGx5IGJhY2tncm91bmQKKyAqIHdvcmtl ciBoYXMgZXhpdGVkIHVuZXhwZWN0ZWRseS4KKyAqCisgKiBFeGl0IGlmIGFueSByZWxhdGlvbiBp cyBub3QgaW4gdGhlIFJFQURZIHN0YXRlIGFuZCBpZiBhbnkgd29ya2VyIGlzIGhhbmRsaW5nCisg KiB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGF0IHRoZSBzYW1lIHRpbWUuIEJlY2F1c2UgZm9y IHN0cmVhbWluZworICogdHJhbnNhY3Rpb25zIHRoYXQgaXMgYmVpbmcgYXBwbGllZCBpbiBhcHBs eSBiYWNrZ3JvdW5kIHdvcmtlciwgd2UgY2Fubm90CisgKiBkZWNpZGUgd2hldGhlciB0byBhcHBs eSB0aGUgY2hhbmdlIGZvciBhIHJlbGF0aW9uIHRoYXQgaXMgbm90IGluIHRoZSBSRUFEWQorICog c3RhdGUgKHNlZSBzaG91bGRfYXBwbHlfY2hhbmdlc19mb3JfcmVsKSBhcyB3ZSB3b24ndCBrbm93 IHJlbW90ZV9maW5hbF9sc24KKyAqIGJ5IHRoYXQgdGltZS4KKyAqLwordm9pZAorYXBwbHlfYmd3 b3JrZXJfY2hlY2tfc3RhdHVzKHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwlpZiAoYW1f YXBwbHlfYmd3b3JrZXIoKSB8fCBNeVN1YnNjcmlwdGlvbi0+c3RyZWFtICE9IFNVQlNUUkVBTV9B UFBMWSkKKwkJcmV0dXJuOworCisJZm9yZWFjaChsYywgQXBwbHlXb3JrZXJzTGlzdCkKKwl7CisJ CUFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlID0gKEFwcGx5Qmd3b3JrZXJTdGF0ZSAqKSBsZmly c3QobGMpOworCisJCS8qCisJCSAqIFdlIGRvbid0IGxvY2sgaGVyZSBhcyBpbiB0aGUgd29yc3Qg Y2FzZSB3ZSB3aWxsIGp1c3QgZGV0ZWN0IHRoZQorCQkgKiBmYWlsdXJlIG9mIHdvcmtlciBhIGJp dCBsYXRlci4KKwkJICovCisJCWlmICh3c3RhdGUtPnBzdGF0ZS0+c3RhdHVzID09IEFQUExZX0JH V09SS0VSX0VYSVQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09C SkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygiYmFja2dyb3Vu ZCB3b3JrZXIgJXUgZXhpdGVkIHVuZXhwZWN0ZWRseSIsCisJCQkJCQkJd3N0YXRlLT5wc3RhdGUt Pm4pKSk7CisJfQorCisJaWYgKGxpc3RfbGVuZ3RoKEFwcGx5V29ya2Vyc0ZyZWVMaXN0KSAhPSBs aXN0X2xlbmd0aChBcHBseVdvcmtlcnNMaXN0KSAmJgorCQkhQWxsVGFibGVzeW5jc1JlYWR5KCkp CisJeworCQllcmVwb3J0KExPRywKKwkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFw cGx5IHdvcmtlcnMgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCByZXN0YXJ0IiwKKwkJCQkJ CU15U3Vic2NyaXB0aW9uLT5uYW1lKSwKKwkJCQkgZXJyZGV0YWlsKCJDYW5ub3QgaGFuZGxlIHN0 cmVhbWVkIHJlcGxpY2F0aW9uIHRyYW5zYWN0aW9uIGJ5IGFwcGx5ICIKKwkJCQkJCSAgICJiZ3dv cmtlcnMgdW50aWwgYWxsIHRhYmxlcyBhcmUgc3luY2hyb25pemVkIikpKTsKKworCQlwcm9jX2V4 aXQoMCk7CisJfQorfQorCisvKiBTZXQgdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHN0YXR1 cyAqLwordm9pZAorYXBwbHlfYmd3b3JrZXJfc2V0X3N0YXR1cyhBcHBseUJnd29ya2VyU3RhdHVz IHN0YXR1cykKK3sKKwlpZiAoIWFtX2FwcGx5X2Jnd29ya2VyKCkpCisJCXJldHVybjsKKworCWVs b2coREVCVUcxLCAiW0FwcGx5IEJHVyAjJXVdIHNldCBzdGF0dXMgdG8gJWQiLCBNeVBhcmFsbGVs U3RhdGUtPm4sIHN0YXR1cyk7CisKKwlTcGluTG9ja0FjcXVpcmUoJk15UGFyYWxsZWxTdGF0ZS0+ bXV0ZXgpOworCU15UGFyYWxsZWxTdGF0ZS0+c3RhdHVzID0gc3RhdHVzOworCVNwaW5Mb2NrUmVs ZWFzZSgmTXlQYXJhbGxlbFN0YXRlLT5tdXRleCk7Cit9CisKKy8qCisgKiBEZWZpbmUgYSBzYXZl cG9pbnQgZm9yIGEgc3VieGFjdCBpbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBuZWVkZWQu CisgKgorICogSW5zaWRlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHdlIGNhbiBmaWd1cmUgb3V0 IHRoYXQgbmV3IHN1YnRyYW5zYWN0aW9uIHdhcworICogc3RhcnRlZCBpZiBuZXcgY2hhbmdlIGFy cml2ZWQgd2l0aCBkaWZmZXJlbnQgeGlkLiBJbiB0aGF0IGNhc2Ugd2UgY2FuIGRlZmluZQorICog bmFtZWQgc2F2ZXBvaW50LCBzbyB0aGF0IHdlIHdlcmUgYWJsZSB0byBjb21taXQvcm9sbGJhY2sg aXQgc2VwYXJhdGVseQorICogbGF0ZXIuCisgKiBTcGVjaWFsIGNhc2UgaXMgaWYgdGhlIGZpcnN0 IGNoYW5nZSBjb21lcyBmcm9tIHN1YnRyYW5zYWN0aW9uLCB0aGVuCisgKiB3ZSBjaGVjayB0aGF0 IGN1cnJlbnRfeGlkIGRpZmZlcnMgZnJvbSBzdHJlYW1feGlkLgorICovCit2b2lkCithcHBseV9i Z3dvcmtlcl9zdWJ4YWN0X2luZm9fYWRkKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQpCit7CisJ aWYgKGN1cnJlbnRfeGlkICE9IHN0cmVhbV94aWQgJiYKKwkJIWxpc3RfbWVtYmVyX2ludChzdWJ4 YWN0bGlzdCwgKGludCkgY3VycmVudF94aWQpKQorCXsKKwkJTWVtb3J5Q29udGV4dCBvbGRjdHg7 CisJCWNoYXIJCXNwbmFtZVtNQVhQR1BBVEhdOworCisJCXNucHJpbnRmKHNwbmFtZSwgTUFYUEdQ QVRILCAic2F2ZXBvaW50X2Zvcl94aWRfJXUiLCBjdXJyZW50X3hpZCk7CisKKwkJZWxvZyhERUJV RzEsICJbQXBwbHkgQkdXICMldV0gZGVmaW5pbmcgc2F2ZXBvaW50ICVzIiwKKwkJCSBNeVBhcmFs bGVsU3RhdGUtPm4sIHNwbmFtZSk7CisKKwkJRGVmaW5lU2F2ZXBvaW50KHNwbmFtZSk7CisJCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhBcHBseUNvbnRleHQpOworCQlzdWJ4YWN0bGlzdCA9IGxhcHBlbmRfaW50KHN1YnhhY3Rs aXN0LCAoaW50KSBjdXJyZW50X3hpZCk7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgp OworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVj b2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCmluZGV4IGFh MjQyN2JhNzMuLjAwZmRkZTA4MzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9k ZWNvZGUuYwpAQCAtNjUxLDkgKzY1MSwxMCBAQCBEZWNvZGVDb21taXQoTG9naWNhbERlY29kaW5n Q29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYsCiAJewogCQlmb3IgKGkgPSAwOyBp IDwgcGFyc2VkLT5uc3VieGFjdHM7IGkrKykKIAkJewotCQkJUmVvcmRlckJ1ZmZlckZvcmdldChj dHgtPnJlb3JkZXIsIHBhcnNlZC0+c3VieGFjdHNbaV0sIGJ1Zi0+b3JpZ3B0cik7CisJCQlSZW9y ZGVyQnVmZmVyRm9yZ2V0KGN0eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tpXSwgYnVmLT5v cmlncHRyLAorCQkJCQkJCQljb21taXRfdGltZSk7CiAJCX0KLQkJUmVvcmRlckJ1ZmZlckZvcmdl dChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5vcmlncHRyKTsKKwkJUmVvcmRlckJ1ZmZlckZvcmdl dChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5vcmlncHRyLCBjb21taXRfdGltZSk7CiAKIAkJcmV0 dXJuOwogCX0KQEAgLTgyMSwxMCArODIyLDExIEBAIERlY29kZUFib3J0KExvZ2ljYWxEZWNvZGlu Z0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmLAogCQlmb3IgKGkgPSAwOyBpIDwg cGFyc2VkLT5uc3VieGFjdHM7IGkrKykKIAkJewogCQkJUmVvcmRlckJ1ZmZlckFib3J0KGN0eC0+ cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tpXSwKLQkJCQkJCQkgICBidWYtPnJlY29yZC0+RW5k UmVjUHRyKTsKKwkJCQkJCQkgICBidWYtPnJlY29yZC0+RW5kUmVjUHRyLCBhYm9ydF90aW1lKTsK IAkJfQogCi0JCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5yZWNv cmQtPkVuZFJlY1B0cik7CisJCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJlb3JkZXIsIHhpZCwg YnVmLT5yZWNvcmQtPkVuZFJlY1B0ciwKKwkJCQkJCSAgIGFib3J0X3RpbWUpOwogCX0KIAogCS8q IHVwZGF0ZSB0aGUgZGVjb2Rpbmcgc3RhdHMgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvbGF1bmNoZXIuYwppbmRleCAyYmRhYjUzZTE5Li5lNDZkOTEyOWIzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBAIC01NCw2ICs1NCw3IEBACiAK IGludAkJCW1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0OwogaW50CQkJbWF4X3N5 bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMjsKK2ludAkJCW1heF9hcHBseV9iZ3dvcmtl cnNfcGVyX3N1YnNjcmlwdGlvbiA9IDI7CiAKIExvZ2ljYWxSZXBXb3JrZXIgKk15TG9naWNhbFJl cFdvcmtlciA9IE5VTEw7CiAKQEAgLTczLDYgKzc0LDcgQEAgc3RhdGljIHZvaWQgbG9naWNhbHJl cF9sYXVuY2hlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBsb2dp Y2FscmVwX3dvcmtlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBs b2dpY2FscmVwX3dvcmtlcl9kZXRhY2godm9pZCk7CiBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX3dv cmtlcl9jbGVhbnVwKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcik7CitzdGF0aWMgdm9pZCBsb2dp Y2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcik7CiAK IHN0YXRpYyBib29sIG9uX2NvbW1pdF9sYXVuY2hlcl93YWtldXAgPSBmYWxzZTsKIApAQCAtMjIz LDYgKzIyNSwxMCBAQCBsb2dpY2FscmVwX3dvcmtlcl9maW5kKE9pZCBzdWJpZCwgT2lkIHJlbGlk LCBib29sIG9ubHlfcnVubmluZykKIAl7CiAJCUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAmTG9naWNh bFJlcEN0eC0+d29ya2Vyc1tpXTsKIAorCQkvKiBXZSBvbmx5IG5lZWQgbWFpbiBhcHBseSB3b3Jr ZXIgb3IgdGFibGUgc3luYyB3b3JrZXIgaGVyZSAqLworCQlpZiAody0+c3Vid29ya2VyKQorCQkJ Y29udGludWU7CisKIAkJaWYgKHctPmluX3VzZSAmJiB3LT5zdWJpZCA9PSBzdWJpZCAmJiB3LT5y ZWxpZCA9PSByZWxpZCAmJgogCQkJKCFvbmx5X3J1bm5pbmcgfHwgdy0+cHJvYykpCiAJCXsKQEAg LTI1OSwxMSArMjY1LDExIEBAIGxvZ2ljYWxyZXBfd29ya2Vyc19maW5kKE9pZCBzdWJpZCwgYm9v bCBvbmx5X3J1bm5pbmcpCiB9CiAKIC8qCi0gKiBTdGFydCBuZXcgYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIsIGlmIHBvc3NpYmxlLgorICogU3RhcnQgbmV3IGJhY2tncm91bmQgd29ya2VyLCBpZiBw b3NzaWJsZS4KICAqLwotdm9pZAorYm9vbAogbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBk YmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsIE9pZCB1c2VyaWQsCi0JCQkJCQkg T2lkIHJlbGlkKQorCQkJCQkJIE9pZCByZWxpZCwgZHNtX2hhbmRsZSBzdWJ3b3JrZXJfZHNtKQog ewogCUJhY2tncm91bmRXb3JrZXIgYmd3OwogCUJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmJnd19o YW5kbGU7CkBAIC0yNzMsNiArMjc5LDEwIEBAIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQg ZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLCBPaWQgdXNlcmlkLAogCUxvZ2lj YWxSZXBXb3JrZXIgKndvcmtlciA9IE5VTEw7CiAJaW50CQkJbnN5bmN3b3JrZXJzOwogCVRpbWVz dGFtcFR6IG5vdzsKKwlib29sCQlpc19zdWJ3b3JrZXIgPSAoc3Vid29ya2VyX2RzbSAhPSBEU01f SEFORExFX0lOVkFMSUQpOworCisJLyogV2UgZG9uJ3Qgc3VwcG9ydCB0YWJsZSBzeW5jIGluIHN1 YndvcmtlciAqLworCUFzc2VydCghKGlzX3N1YndvcmtlciAmJiBPaWRJc1ZhbGlkKHJlbGlkKSkp OwogCiAJZXJlcG9ydChERUJVRzEsCiAJCQkoZXJybXNnX2ludGVybmFsKCJzdGFydGluZyBsb2dp Y2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiIsCkBAIC0zNTAs NyArMzYwLDcgQEAgcmV0cnk6CiAJaWYgKE9pZElzVmFsaWQocmVsaWQpICYmIG5zeW5jd29ya2Vy cyA+PSBtYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24pCiAJewogCQlMV0xvY2tSZWxl YXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7CiAJ fQogCiAJLyoKQEAgLTM2NCw3ICszNzQsNyBAQCByZXRyeToKIAkJCQkoZXJyY29kZShFUlJDT0RF X0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVERUQpLAogCQkJCSBlcnJtc2coIm91dCBvZiBsb2dp Y2FsIHJlcGxpY2F0aW9uIHdvcmtlciBzbG90cyIpLAogCQkJCSBlcnJoaW50KCJZb3UgbWlnaHQg bmVlZCB0byBpbmNyZWFzZSBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzLiIpKSk7Ci0J CXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCS8qIFByZXBhcmUgdGhlIHdvcmtlciBz bG90LiAqLwpAQCAtMzc5LDYgKzM4OSw3IEBAIHJldHJ5OgogCXdvcmtlci0+cmVsc3RhdGUgPSBT VUJSRUxfU1RBVEVfVU5LTk9XTjsKIAl3b3JrZXItPnJlbHN0YXRlX2xzbiA9IEludmFsaWRYTG9n UmVjUHRyOwogCXdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPSBOVUxMOworCXdvcmtlci0+c3Vid29y a2VyID0gaXNfc3Vid29ya2VyOwogCXdvcmtlci0+bGFzdF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0 cjsKIAlUSU1FU1RBTVBfTk9CRUdJTih3b3JrZXItPmxhc3Rfc2VuZF90aW1lKTsKIAlUSU1FU1RB TVBfTk9CRUdJTih3b3JrZXItPmxhc3RfcmVjdl90aW1lKTsKQEAgLTM5NiwxOSArNDA3LDMwIEBA IHJldHJ5OgogCQlCR1dPUktFUl9CQUNLRU5EX0RBVEFCQVNFX0NPTk5FQ1RJT047CiAJYmd3LmJn d19zdGFydF90aW1lID0gQmdXb3JrZXJTdGFydF9SZWNvdmVyeUZpbmlzaGVkOwogCXNucHJpbnRm KGJndy5iZ3dfbGlicmFyeV9uYW1lLCBCR1dfTUFYTEVOLCAicG9zdGdyZXMiKTsKLQlzbnByaW50 ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJBcHBseVdvcmtlck1haW4iKTsK KworCWlmICghaXNfc3Vid29ya2VyKQorCQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUs IEJHV19NQVhMRU4sICJBcHBseVdvcmtlck1haW4iKTsKKwllbHNlCisJCXNucHJpbnRmKGJndy5i Z3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIkFwcGx5Qmd3b3JrZXJNYWluIik7CisKIAlp ZiAoT2lkSXNWYWxpZChyZWxpZCkpCiAJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExF TiwKIAkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUg c3luYyAldSIsIHN1YmlkLCByZWxpZCk7Ci0JZWxzZQorCWVsc2UgaWYgKCFpc19zdWJ3b3JrZXIp CiAJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKIAkJCQkgImxvZ2ljYWwgcmVw bGljYXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUiLCBzdWJpZCk7CisJZWxzZQorCQlz bnByaW50ZihiZ3cuYmd3X25hbWUsIEJHV19NQVhMRU4sCisJCQkJICJsb2dpY2FsIHJlcGxpY2F0 aW9uIGJhY2tncm91bmQgYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUgIiwgc3ViaWQp OwogCXNucHJpbnRmKGJndy5iZ3dfdHlwZSwgQkdXX01BWExFTiwgImxvZ2ljYWwgcmVwbGljYXRp b24gd29ya2VyIik7CiAKIAliZ3cuYmd3X3Jlc3RhcnRfdGltZSA9IEJHV19ORVZFUl9SRVNUQVJU OwogCWJndy5iZ3dfbm90aWZ5X3BpZCA9IE15UHJvY1BpZDsKIAliZ3cuYmd3X21haW5fYXJnID0g SW50MzJHZXREYXR1bShzbG90KTsKIAorCWlmIChpc19zdWJ3b3JrZXIpCisJCW1lbWNweShiZ3cu Ymd3X2V4dHJhLCAmc3Vid29ya2VyX2RzbSwgc2l6ZW9mKGRzbV9oYW5kbGUpKTsKKwogCWlmICgh UmVnaXN0ZXJEeW5hbWljQmFja2dyb3VuZFdvcmtlcigmYmd3LCAmYmd3X2hhbmRsZSkpCiAJewog CQkvKiBGYWlsZWQgdG8gc3RhcnQgd29ya2VyLCBzbyBjbGVhbiB1cCB0aGUgd29ya2VyIHNsb3Qu ICovCkBAIC00MjEsMTEgKzQ0MywxMyBAQCByZXRyeToKIAkJCQkoZXJyY29kZShFUlJDT0RFX0NP TkZJR1VSQVRJT05fTElNSVRfRVhDRUVERUQpLAogCQkJCSBlcnJtc2coIm91dCBvZiBiYWNrZ3Jv dW5kIHdvcmtlciBzbG90cyIpLAogCQkJCSBlcnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBpbmNy ZWFzZSBtYXhfd29ya2VyX3Byb2Nlc3Nlcy4iKSkpOwotCQlyZXR1cm47CisJCXJldHVybiBmYWxz ZTsKIAl9CiAKIAkvKiBOb3cgd2FpdCB1bnRpbCBpdCBhdHRhY2hlcy4gKi8KIAlXYWl0Rm9yUmVw bGljYXRpb25Xb3JrZXJBdHRhY2god29ya2VyLCBnZW5lcmF0aW9uLCBiZ3dfaGFuZGxlKTsKKwor CXJldHVybiB0cnVlOwogfQogCiAvKgpAQCAtNDM2LDcgKzQ2MCw2IEBAIHZvaWQKIGxvZ2ljYWxy ZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiB7CiAJTG9naWNhbFJlcFdvcmtl ciAqd29ya2VyOwotCXVpbnQxNgkJZ2VuZXJhdGlvbjsKIAogCUxXTG9ja0FjcXVpcmUoTG9naWNh bFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CiAKQEAgLTQ0OSw2ICs0NzIsMjIgQEAgbG9naWNh bHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkKIAkJcmV0dXJuOwogCX0KIAor CWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwod29ya2VyKTsKKworCUxXTG9ja1JlbGVh c2UoTG9naWNhbFJlcFdvcmtlckxvY2spOworfQorCisvKgorICogV29ya2hvcnNlIGZvciBsb2dp Y2FscmVwX3dvcmtlcl9zdG9wKCkgYW5kIGxvZ2ljYWxyZXBfd29ya2VyX2RldGFjaCgpLiBTdG9w CisgKiB0aGUgd29ya2VyIGFuZCB3YWl0IGZvciBpdCB0byBkaWUuCisgKi8KK3N0YXRpYyB2b2lk Citsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtl cikKK3sKKwl1aW50MTYJCWdlbmVyYXRpb247CisKKwlBc3NlcnQoTFdMb2NrSGVsZEJ5TWUoTG9n aWNhbFJlcFdvcmtlckxvY2spKTsKKwogCS8qCiAJICogUmVtZW1iZXIgd2hpY2ggZ2VuZXJhdGlv biB3YXMgb3VyIHdvcmtlciBzbyB3ZSBjYW4gY2hlY2sgaWYgd2hhdCB3ZSBzZWUKIAkgKiBpcyBz dGlsbCB0aGUgc2FtZSBvbmUuCkBAIC00ODUsMTAgKzUyNCw3IEBAIGxvZ2ljYWxyZXBfd29ya2Vy X3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAJCSAqIGRpZmZlcmVudCwgbWVhbmluZyB0aGF0 IGEgZGlmZmVyZW50IHdvcmtlciBoYXMgdGFrZW4gdGhlIHNsb3QuCiAJCSAqLwogCQlpZiAoIXdv cmtlci0+aW5fdXNlIHx8IHdvcmtlci0+Z2VuZXJhdGlvbiAhPSBnZW5lcmF0aW9uKQotCQl7Ci0J CQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKIAkJCXJldHVybjsKLQkJfQog CiAJCS8qIFdvcmtlciBoYXMgYXNzaWduZWQgcHJvYywgc28gaXQgaGFzIHN0YXJ0ZWQuICovCiAJ CWlmICh3b3JrZXItPnByb2MpCkBAIC01MjIsOCArNTU4LDYgQEAgbG9naWNhbHJlcF93b3JrZXJf c3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkKIAogCQlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBX b3JrZXJMb2NrLCBMV19TSEFSRUQpOwogCX0KLQotCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdv cmtlckxvY2spOwogfQogCiAvKgpAQCAtNTk5LDYgKzYzMywyOSBAQCBsb2dpY2FscmVwX3dvcmtl cl9hdHRhY2goaW50IHNsb3QpCiBzdGF0aWMgdm9pZAogbG9naWNhbHJlcF93b3JrZXJfZGV0YWNo KHZvaWQpCiB7CisJLyoKKwkgKiBJZiB3ZSBhcmUgdGhlIG1haW4gYXBwbHkgd29ya2VyLCBzdG9w IGFsbCB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzCisJICogd2Ugc3RhcnRlZCBiZWZvcmUu CisJICovCisJaWYgKCFNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YndvcmtlcikKKwl7CisJCUxpc3QJ ICAgKndvcmtlcnM7CisJCUxpc3RDZWxsICAgKmxjOworCisJCUxXTG9ja0FjcXVpcmUoTG9naWNh bFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CisKKwkJd29ya2VycyA9IGxvZ2ljYWxyZXBfd29y a2Vyc19maW5kKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHRydWUpOworCQlmb3JlYWNoKGxj LCB3b3JrZXJzKQorCQl7CisJCQlMb2dpY2FsUmVwV29ya2VyICp3ID0gKExvZ2ljYWxSZXBXb3Jr ZXIgKikgbGZpcnN0KGxjKTsKKworCQkJaWYgKHctPnN1YndvcmtlcikKKwkJCQlsb2dpY2FscmVw X3dvcmtlcl9zdG9wX2ludGVybmFsKHcpOworCQl9CisKKwkJTFdMb2NrUmVsZWFzZShMb2dpY2Fs UmVwV29ya2VyTG9jayk7CisJfQorCiAJLyogQmxvY2sgY29uY3VycmVudCBhY2Nlc3MuICovCiAJ TFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfRVhDTFVTSVZFKTsKIApAQCAt NjIxLDYgKzY3OCw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX2NsZWFudXAoTG9naWNhbFJlcFdvcmtl ciAqd29ya2VyKQogCXdvcmtlci0+dXNlcmlkID0gSW52YWxpZE9pZDsKIAl3b3JrZXItPnN1Ymlk ID0gSW52YWxpZE9pZDsKIAl3b3JrZXItPnJlbGlkID0gSW52YWxpZE9pZDsKKwl3b3JrZXItPnN1 YndvcmtlciA9IGZhbHNlOwogfQogCiAvKgpAQCAtNjc5LDYgKzczNywzMCBAQCBsb2dpY2FscmVw X3N5bmNfd29ya2VyX2NvdW50KE9pZCBzdWJpZCkKIAlyZXR1cm4gcmVzOwogfQogCisvKgorICog Q291bnQgdGhlIG51bWJlciBvZiByZWdpc3RlcmVkIChub3QgbmVjZXNzYXJpbHkgcnVubmluZykg YXBwbHkgYmFja2dyb3VuZAorICogd29ya2VyIGZvciBhIHN1YnNjcmlwdGlvbi4KKyAqLworaW50 Citsb2dpY2FscmVwX2FwcGx5X2JhY2tncm91bmRfd29ya2VyX2NvdW50KE9pZCBzdWJpZCkKK3sK KwlpbnQJCQlpOworCWludAkJCXJlcyA9IDA7CisKKwlBc3NlcnQoTFdMb2NrSGVsZEJ5TWUoTG9n aWNhbFJlcFdvcmtlckxvY2spKTsKKworCS8qIFNlYXJjaCBmb3IgYXR0YWNoZWQgd29ya2VyIGZv ciBhIGdpdmVuIHN1YnNjcmlwdGlvbiBpZC4gKi8KKwlmb3IgKGkgPSAwOyBpIDwgbWF4X2xvZ2lj YWxfcmVwbGljYXRpb25fd29ya2VyczsgaSsrKQorCXsKKwkJTG9naWNhbFJlcFdvcmtlciAqdyA9 ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW2ldOworCisJCWlmICh3LT5zdWJpZCA9PSBzdWJpZCAm JiB3LT5zdWJ3b3JrZXIpCisJCQlyZXMrKzsKKwl9CisKKwlyZXR1cm4gcmVzOworfQorCiAvKgog ICogQXBwbHlMYXVuY2hlclNobWVtU2l6ZQogICoJCUNvbXB1dGUgc3BhY2UgbmVlZGVkIGZvciBy ZXBsaWNhdGlvbiBsYXVuY2hlciBzaGFyZWQgbWVtb3J5CkBAIC04NjgsNyArOTUwLDcgQEAgQXBw bHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCQkJCXdhaXRfdGltZSA9IHdhbF9yZXRy aWV2ZV9yZXRyeV9pbnRlcnZhbDsKIAogCQkJCQlsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goc3Vi LT5kYmlkLCBzdWItPm9pZCwgc3ViLT5uYW1lLAotCQkJCQkJCQkJCQkgc3ViLT5vd25lciwgSW52 YWxpZE9pZCk7CisJCQkJCQkJCQkJCSBzdWItPm93bmVyLCBJbnZhbGlkT2lkLCBEU01fSEFORExF X0lOVkFMSUQpOwogCQkJCX0KIAkJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9vcmlnaW4uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv b3JpZ2luLmMKaW5kZXggMjE5MzdhYjJkMy4uOTI3MzAxMWIwYSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCkBAIC0xMDYzLDEyICsxMDYzLDIxIEBAIFJlcGxpY2F0 aW9uT3JpZ2luRXhpdENsZWFudXAoaW50IGNvZGUsIERhdHVtIGFyZykKICAqIGFycmF5IGRvZXNu J3QgaGF2ZSB0byBiZSBzZWFyY2hlZCB3aGVuIGNhbGxpbmcKICAqIHJlcGxvcmlnaW5fc2Vzc2lv bl9hZHZhbmNlKCkuCiAgKgotICogT2J2aW91c2x5IG9ubHkgb25lIHN1Y2ggY2FjaGVkIG9yaWdp biBjYW4gZXhpc3QgcGVyIHByb2Nlc3MgYW5kIHRoZSBjdXJyZW50CisgKiBOb3JtYWxseSBvbmx5 IG9uZSBzdWNoIGNhY2hlZCBvcmlnaW4gY2FuIGV4aXN0IHBlciBwcm9jZXNzIGFuZCB0aGUgY3Vy cmVudAogICogY2FjaGVkIHZhbHVlIGNhbiBvbmx5IGJlIHNldCBhZ2FpbiBhZnRlciB0aGUgcHJl dmlvdXMgdmFsdWUgaXMgdG9ybiBkb3duCiAgKiB3aXRoIHJlcGxvcmlnaW5fc2Vzc2lvbl9yZXNl dCgpLgorICoKKyAqIEhvd2V2ZXIsIElmIG11c3RfYWNxdWlyZSBpcyBmYWxzZSwgd2UgYWxsb3cg cHJvY2VzcyB0byBnZXQgdGhlIHNsb3Qgd2hpY2ggaXMKKyAqIGFscmVhZHkgYWNxdWlyZWQgYnkg b3RoZXIgcHJvY2Vzcy4gSXQncyBzYWZlIGJlY2F1c2UgMSkgVGhlIG9ubHkgY2FsbGVyCisgKiAo YXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzKSB3aWxsIG1haW50YWluIHRoZSBjb21taXQgb3JkZXIg YnkgYWxsb3dpbmcgb25seQorICogb25lIHByb2Nlc3MgdG8gY29tbWl0IGF0IGEgdGltZSwgc28g bm8gdHdvIHdvcmtlcnMgd2lsbCBiZSBvcGVyYXRpbmcgb24gdGhlCisgKiBzYW1lIG9yaWdpbiBh dCB0aGUgc2FtZSB0aW1lIChzZWUgY29tbWVudHMgaW4gbG9naWNhbC93b3JrZXIuYykuIDIpIEV2 ZW4KKyAqIHRob3VnaCB3ZSB0cnkgdG8gYWR2YW5jZSB0aGUgc2Vzc2lvbidzIG9yaWdpbiBjb25j dXJyZW50bHksIGl0J3Mgc2FmZSB0byBkbworICogc28gYXMgd2UgY2hhbmdlL2FkdmFuY2UgdGhl IHNlc3Npb25fb3JpZ2luIExTTnMgdW5kZXIgcmVwbGljYXRlX3N0YXRlCisgKiBMV0xvY2suCiAg Ki8KIHZvaWQKLXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlKQorcmVw bG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUsIGJvb2wgbXVzdF9hY3F1aXJl KQogewogCXN0YXRpYyBib29sIHJlZ2lzdGVyZWRfY2xlYW51cDsKIAlpbnQJCQlpOwpAQCAtMTEx MCw3ICsxMTE5LDcgQEAgcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUp CiAJCWlmIChjdXJzdGF0ZS0+cm9pZGVudCAhPSBub2RlKQogCQkJY29udGludWU7CiAKLQkJZWxz ZSBpZiAoY3Vyc3RhdGUtPmFjcXVpcmVkX2J5ICE9IDApCisJCWVsc2UgaWYgKGN1cnN0YXRlLT5h Y3F1aXJlZF9ieSAhPSAwICYmIG11c3RfYWNxdWlyZSkKIAkJewogCQkJZXJlcG9ydChFUlJPUiwK IAkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfSU5fVVNFKSwKQEAgLTExNDEsNyArMTE1MCwx NCBAQCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSkKIAogCUFzc2Vy dChzZXNzaW9uX3JlcGxpY2F0aW9uX3N0YXRlLT5yb2lkZW50ICE9IEludmFsaWRSZXBPcmlnaW5J ZCk7CiAKLQlzZXNzaW9uX3JlcGxpY2F0aW9uX3N0YXRlLT5hY3F1aXJlZF9ieSA9IE15UHJvY1Bp ZDsKKwlpZiAobXVzdF9hY3F1aXJlKQorCQlzZXNzaW9uX3JlcGxpY2F0aW9uX3N0YXRlLT5hY3F1 aXJlZF9ieSA9IE15UHJvY1BpZDsKKwllbHNlIGlmIChzZXNzaW9uX3JlcGxpY2F0aW9uX3N0YXRl LT5hY3F1aXJlZF9ieSA9PSAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCisJCQkJIGVycm1zZygiY291bGQgbm90 IGZpbmQgY29ycmVjdCByZXBsaWNhdGlvbiBzdGF0ZSBzbG90IGZvciByZXBsaWNhdGlvbiBvcmln aW4gd2l0aCBPSUQgJXUgZm9yIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIiwKKwkJCQkJCW5vZGUp LAorCQkJCSBlcnJoaW50KCJUaGVyZSBpcyBubyByZXBsaWNhdGlvbiBzdGF0ZSBzbG90IHNldCBi eSBpdHMgbWFpbiBhcHBseSB3b3JrZXIuIikpKTsKIAogCUxXTG9ja1JlbGVhc2UoUmVwbGljYXRp b25PcmlnaW5Mb2NrKTsKIApAQCAtMTMyMSw3ICsxMzM3LDcgQEAgcGdfcmVwbGljYXRpb25fb3Jp Z2luX3Nlc3Npb25fc2V0dXAoUEdfRlVOQ1RJT05fQVJHUykKIAogCW5hbWUgPSB0ZXh0X3RvX2Nz dHJpbmcoKHRleHQgKikgRGF0dW1HZXRQb2ludGVyKFBHX0dFVEFSR19EQVRVTSgwKSkpOwogCW9y aWdpbiA9IHJlcGxvcmlnaW5fYnlfbmFtZShuYW1lLCBmYWxzZSk7Ci0JcmVwbG9yaWdpbl9zZXNz aW9uX3NldHVwKG9yaWdpbik7CisJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbiwgdHJ1 ZSk7CiAKIAlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKaW5kZXggZmY4NTEzZTJkMi4uYTg4ODAzOGViNCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwpAQCAtMTE2NiwyOCArMTE2 Niw0NyBAQCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIGluLCBMb2dp Y2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpCiAgKi8KIHZvaWQKIGxvZ2ljYWxyZXBfd3Jp dGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwKLQkJCQkJ CQkgIFRyYW5zYWN0aW9uSWQgc3VieGlkKQorCQkJCQkJCSAgUmVvcmRlckJ1ZmZlclRYTiAqdHhu LCBYTG9nUmVjUHRyIGFib3J0X2xzbikKIHsKIAlwcV9zZW5kYnl0ZShvdXQsIExPR0lDQUxfUkVQ X01TR19TVFJFQU1fQUJPUlQpOwogCi0JQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkg JiYgVHJhbnNhY3Rpb25JZElzVmFsaWQoc3VieGlkKSk7CisJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJ c1ZhbGlkKHhpZCkgJiYgVHJhbnNhY3Rpb25JZElzVmFsaWQodHhuLT54aWQpKTsKIAogCS8qIHRy YW5zYWN0aW9uIElEICovCiAJcHFfc2VuZGludDMyKG91dCwgeGlkKTsKLQlwcV9zZW5kaW50MzIo b3V0LCBzdWJ4aWQpOworCXBxX3NlbmRpbnQzMihvdXQsIHR4bi0+eGlkKTsKKwlwcV9zZW5kaW50 NjQob3V0LCBhYm9ydF9sc24pOworCXBxX3NlbmRpbnQ2NChvdXQsIHR4bi0+eGFjdF90aW1lLmFi b3J0X3RpbWUpOwogfQogCiAvKgogICogUmVhZCBTVFJFQU0gQUJPUlQgZnJvbSB0aGUgb3V0cHV0 IHN0cmVhbS4KICAqLwogdm9pZAotbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJ bmZvIGluLCBUcmFuc2FjdGlvbklkICp4aWQsCi0JCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnN1Ynhp ZCkKK2xvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwKKwkJCQkJCQkg TG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0YSwKKwkJCQkJCQkgYm9vbCBpbmNs dWRlX2Fib3J0X2xzbikKIHsKLQlBc3NlcnQoeGlkICYmIHN1YnhpZCk7CisJQXNzZXJ0KGFib3J0 X2RhdGEpOworCisJYWJvcnRfZGF0YS0+eGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKKwlhYm9y dF9kYXRhLT5zdWJ4aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOwogCi0JKnhpZCA9IHBxX2dldG1z Z2ludChpbiwgNCk7Ci0JKnN1YnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7CisJLyoKKwkgKiBJ ZiB0aGUgdmVyc2lvbiBvZiB0aGUgcHVibGlzaGVyIGlzIGxvd2VyIHRoYW4gdGhlIHZlcnNpb24g b2YgdGhlCisJICogc3Vic2NyaWJlciwgaXQgbWF5IG5vdCBzdXBwb3J0IHNlbmRpbmcgdGhlc2Ug dHdvIGZpZWxkcywgc28gb25seSB0YWtlCisJICogdGhlc2UgZmllbGRzIHdoZW4gaW5jbHVkZV9h Ym9ydF9sc24gaXMgdHJ1ZS4KKwkgKi8KKwlpZiAoaW5jbHVkZV9hYm9ydF9sc24pCisJeworCQlh Ym9ydF9kYXRhLT5hYm9ydF9sc24gPSBwcV9nZXRtc2dpbnQ2NChpbik7CisJCWFib3J0X2RhdGEt PmFib3J0X3RpbWUgPSBwcV9nZXRtc2dpbnQ2NChpbik7CisJfQorCWVsc2UKKwl7CisJCWFib3J0 X2RhdGEtPmFib3J0X2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOworCQlhYm9ydF9kYXRhLT5hYm9y dF90aW1lID0gMDsKKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvcmVvcmRlcmJ1ZmZlci5jCmluZGV4IDhkYTVmOTA4OWMuLjNkMmJiZGIzOGQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC0y ODI2LDcgKzI4MjYsOCBAQCBSZW9yZGVyQnVmZmVyRmluaXNoUHJlcGFyZWQoUmVvcmRlckJ1ZmZl ciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogICogZGlzay4KICAqLwogdm9pZAotUmVvcmRlckJ1 ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0 ciBsc24pCitSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9u SWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkgICBUaW1lc3RhbXBUeiBhYm9ydF90aW1lKQog ewogCVJlb3JkZXJCdWZmZXJUWE4gKnR4bjsKIApAQCAtMjgzNyw2ICsyODM4LDggQEAgUmVvcmRl ckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1Jl Y1B0ciBsc24pCiAJaWYgKHR4biA9PSBOVUxMKQogCQlyZXR1cm47CiAKKwl0eG4tPnhhY3RfdGlt ZS5hYm9ydF90aW1lID0gYWJvcnRfdGltZTsKKwogCS8qIEZvciBzdHJlYW1lZCB0cmFuc2FjdGlv bnMgbm90aWZ5IHRoZSByZW1vdGUgbm9kZSBhYm91dCB0aGUgYWJvcnQuICovCiAJaWYgKHJidHhu X2lzX3N0cmVhbWVkKHR4bikpCiAJewpAQCAtMjkxMSw3ICsyOTE0LDggQEAgUmVvcmRlckJ1ZmZl ckFib3J0T2xkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIG9sZGVzdFJ1bm5pbmdY aWQpCiAgKiB0byB0aGlzIHhpZCBtaWdodCByZS1jcmVhdGUgdGhlIHRyYW5zYWN0aW9uIGluY29t cGxldGVseS4KICAqLwogdm9pZAotUmVvcmRlckJ1ZmZlckZvcmdldChSZW9yZGVyQnVmZmVyICpy YiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQorUmVvcmRlckJ1ZmZlckZvcmdl dChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAor CQkJCQlUaW1lc3RhbXBUeiBhYm9ydF90aW1lKQogewogCVJlb3JkZXJCdWZmZXJUWE4gKnR4bjsK IApAQCAtMjkyMiw2ICsyOTI2LDggQEAgUmVvcmRlckJ1ZmZlckZvcmdldChSZW9yZGVyQnVmZmVy ICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogCWlmICh0eG4gPT0gTlVM TCkKIAkJcmV0dXJuOwogCisJdHhuLT54YWN0X3RpbWUuYWJvcnRfdGltZSA9IGFib3J0X3RpbWU7 CisKIAkvKiBGb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zIG5vdGlmeSB0aGUgcmVtb3RlIG5vZGUg YWJvdXQgdGhlIGFib3J0LiAqLwogCWlmIChyYnR4bl9pc19zdHJlYW1lZCh0eG4pKQogCQlyYi0+ c3RyZWFtX2Fib3J0KHJiLCB0eG4sIGxzbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC90YWJsZXN5bmMuYwppbmRleCA2NzBjNmZjYWRhLi44ZmZiYTdlMmU1IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTU2OCw3ICs1NjgsOCBA QCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9hcHBseShYTG9nUmVjUHRyIGN1cnJlbnRfbHNu KQogCQkJCQkJCQkJCQkJIE15U3Vic2NyaXB0aW9uLT5vaWQsCiAJCQkJCQkJCQkJCQkgTXlTdWJz Y3JpcHRpb24tPm5hbWUsCiAJCQkJCQkJCQkJCQkgTXlMb2dpY2FsUmVwV29ya2VyLT51c2VyaWQs Ci0JCQkJCQkJCQkJCQkgcnN0YXRlLT5yZWxpZCk7CisJCQkJCQkJCQkJCQkgcnN0YXRlLT5yZWxp ZCwKKwkJCQkJCQkJCQkJCSBEU01fSEFORExFX0lOVkFMSUQpOwogCQkJCQkJaGVudHJ5LT5sYXN0 X3N0YXJ0X3RpbWUgPSBub3c7CiAJCQkJCX0KIAkJCQl9CkBAIC01ODksNiArNTkwLDkgQEAgcHJv Y2Vzc19zeW5jaW5nX3RhYmxlc19mb3JfYXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIHZv aWQKIHByb2Nlc3Nfc3luY2luZ190YWJsZXMoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIHsKKwlp ZiAoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJ3b3JrZXIpCisJCXJldHVybjsKKwogCWlmIChhbV90 YWJsZXN5bmNfd29ya2VyKCkpCiAJCXByb2Nlc3Nfc3luY2luZ190YWJsZXNfZm9yX3N5bmMoY3Vy cmVudF9sc24pOwogCWVsc2UKQEAgLTEyNzMsNyArMTI3Nyw3IEBAIExvZ2ljYWxSZXBTeW5jVGFi bGVTdGFydChYTG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3MpCiAJCSAqIHRpbWUgdGhpcyB0YWJs ZXN5bmMgd2FzIGxhdW5jaGVkLgogCQkgKi8KIAkJb3JpZ2luaWQgPSByZXBsb3JpZ2luX2J5X25h bWUob3JpZ2lubmFtZSwgZmFsc2UpOwotCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2lu aWQpOworCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIHRydWUpOwogCQlyZXBs b3JpZ2luX3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luaWQ7CiAJCSpvcmlnaW5fc3RhcnRwb3MgPSBy ZXBsb3JpZ2luX3Nlc3Npb25fZ2V0X3Byb2dyZXNzKGZhbHNlKTsKIApAQCAtMTM4NCw3ICsxMzg4 LDcgQEAgTG9naWNhbFJlcFN5bmNUYWJsZVN0YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBv cykKIAkJCQkJCSAgIHRydWUgLyogZ28gYmFja3dhcmQgKi8gLCB0cnVlIC8qIFdBTCBsb2cgKi8g KTsKIAkJVW5sb2NrUmVsYXRpb25PaWQoUmVwbGljYXRpb25PcmlnaW5SZWxhdGlvbklkLCBSb3dF eGNsdXNpdmVMb2NrKTsKIAotCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQpOwor CQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIHRydWUpOwogCQlyZXBsb3JpZ2lu X3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luaWQ7CiAJfQogCWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDYwN2Y3MTlmZDYuLjE4ZDZmMzM0NzkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMjIsOCArMjIsMjMgQEAK ICAqIFNUUkVBTUVEIFRSQU5TQUNUSU9OUwogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBT dHJlYW1lZCB0cmFuc2FjdGlvbnMgKGxhcmdlIHRyYW5zYWN0aW9ucyBleGNlZWRpbmcgYSBtZW1v cnkgbGltaXQgb24gdGhlCi0gKiB1cHN0cmVhbSkgYXJlIG5vdCBhcHBsaWVkIGltbWVkaWF0ZWx5 LCBidXQgaW5zdGVhZCwgdGhlIGRhdGEgaXMgd3JpdHRlbgotICogdG8gdGVtcG9yYXJ5IGZpbGVz IGFuZCB0aGVuIGFwcGxpZWQgYXQgb25jZSB3aGVuIHRoZSBmaW5hbCBjb21taXQgYXJyaXZlcy4K KyAqIHVwc3RyZWFtKSBhcmUgYXBwbGllZCB2aWEgb25lIG9mIHR3byBhcHByb2FjaGVzLgorICoK KyAqIDEpIFNlcGFyYXRlIGJhY2tncm91bmQgd29ya2VycworICoKKyAqIEFzc2lnbiBhIG5ldyBh cHBseSBiYWNrZ3JvdW5kIHdvcmtlciAoaWYgYXZhaWxhYmxlKSBhcyBzb29uIGFzIHRoZSB4YWN0 J3MKKyAqIGZpcnN0IHN0cmVhbSBpcyByZWNlaXZlZCBhbmQgdGhlIG1haW4gYXBwbHkgd29ya2Vy IHdpbGwgc2VuZCBjaGFuZ2VzIHRvIHRoaXMKKyAqIG5ldyB3b3JrZXIgdmlhIHNoYXJlZCBtZW1v cnkuIFdlIGtlZXAgdGhpcyB3b3JrZXIgYXNzaWduZWQgdGlsbCB0aGUKKyAqIHRyYW5zYWN0aW9u IGNvbW1pdCBpcyByZWNlaXZlZCBhbmQgYWxzbyB3YWl0IGZvciB0aGUgd29ya2VyIHRvIGZpbmlz aCBhdAorICogY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQgb3JkZXJpbmcgYW5kIGF2b2lk cyB3cml0aW5nIHRvIGFuZCByZWFkaW5nCisgKiBmcm9tIGZpbGUgaW4gbW9zdCBjYXNlcy4gV2Ug c3RpbGwgbmVlZCB0byBzcGlsbCBpZiB0aGVyZSBpcyBubyB3b3JrZXIKKyAqIGF2YWlsYWJsZS4K KyAqCisgKiAyKSBXcml0ZSB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIGFwcGx5IHdoZW4gdGhlIGZp bmFsIGNvbW1pdCBhcnJpdmVzCisgKgorICogSWYgbm8gd29ya2VyIGlzIGF2YWlsYWJsZSB0byBo YW5kbGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24sIHRoZSBkYXRhIGlzCisgKiB3cml0dGVuIHRvIHRl bXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIGF0IG9uY2Ugd2hlbiB0aGUgZmluYWwgY29t bWl0CisgKiBhcnJpdmVzLgogICoKICAqIFVubGlrZSB0aGUgcmVndWxhciAobm9uLXN0cmVhbWVk KSBjYXNlLCBoYW5kbGluZyBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgaGFzCiAgKiB0byBoYW5kbGUg YWJvcnRzIG9mIGJvdGggdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uIGFuZCBzdWJ0cmFuc2FjdGlv bnMuIFRoaXMKQEAgLTIxOSwyMCArMjM0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwbHlFeGVjdXRp b25EYXRhCiAJUGFydGl0aW9uVHVwbGVSb3V0aW5nICpwcm91dGU7CS8qIHBhcnRpdGlvbiByb3V0 aW5nIGluZm8gKi8KIH0gQXBwbHlFeGVjdXRpb25EYXRhOwogCi0vKiBTdHJ1Y3QgZm9yIHNhdmlu ZyBhbmQgcmVzdG9yaW5nIGFwcGx5IGVycmNvbnRleHQgaW5mb3JtYXRpb24gKi8KLXR5cGVkZWYg c3RydWN0IEFwcGx5RXJyb3JDYWxsYmFja0FyZwotewotCUxvZ2ljYWxSZXBNc2dUeXBlIGNvbW1h bmQ7CS8qIDAgaWYgaW52YWxpZCAqLwotCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsOwotCi0J LyogUmVtb3RlIG5vZGUgaW5mb3JtYXRpb24gKi8KLQlpbnQJCQlyZW1vdGVfYXR0bnVtOwkvKiAt MSBpZiBpbnZhbGlkICovCi0JVHJhbnNhY3Rpb25JZCByZW1vdGVfeGlkOwotCVhMb2dSZWNQdHIJ ZmluaXNoX2xzbjsKLQljaGFyCSAgICpvcmlnaW5fbmFtZTsKLX0gQXBwbHlFcnJvckNhbGxiYWNr QXJnOwotCi1zdGF0aWMgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNr X2FyZyA9CitBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnID0K IHsKIAkuY29tbWFuZCA9IDAsCiAJLnJlbCA9IE5VTEwsCkBAIC0yNDIsNyArMjQ0LDcgQEAgc3Rh dGljIEFwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFja19hcmcgPQogCS5v cmlnaW5fbmFtZSA9IE5VTEwsCiB9OwogCi1zdGF0aWMgTWVtb3J5Q29udGV4dCBBcHBseU1lc3Nh Z2VDb250ZXh0ID0gTlVMTDsKK01lbW9yeUNvbnRleHQgQXBwbHlNZXNzYWdlQ29udGV4dCA9IE5V TEw7CiBNZW1vcnlDb250ZXh0IEFwcGx5Q29udGV4dCA9IE5VTEw7CiAKIC8qIHBlciBzdHJlYW0g Y29udGV4dCBmb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyAqLwpAQCAtMjUxLDI3ICsyNTMsMzgg QEAgc3RhdGljIE1lbW9yeUNvbnRleHQgTG9naWNhbFN0cmVhbWluZ0NvbnRleHQgPSBOVUxMOwog V2FsUmVjZWl2ZXJDb25uICpMb2dSZXBXb3JrZXJXYWxSY3ZDb25uID0gTlVMTDsKIAogU3Vic2Ny aXB0aW9uICpNeVN1YnNjcmlwdGlvbiA9IE5VTEw7Ci1zdGF0aWMgYm9vbCBNeVN1YnNjcmlwdGlv blZhbGlkID0gZmFsc2U7Citib29sCQlNeVN1YnNjcmlwdGlvblZhbGlkID0gZmFsc2U7CiAKIGJv b2wJCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogc3RhdGljIFhMb2dSZWNQdHIgcmVt b3RlX2ZpbmFsX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCiAvKiBmaWVsZHMgdmFsaWQgb25s eSB3aGVuIHByb2Nlc3Npbmcgc3RyZWFtZWQgdHJhbnNhY3Rpb24gKi8KLXN0YXRpYyBib29sIGlu X3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7Citib29sCQlpbl9zdHJlYW1lZF90cmFuc2Fj dGlvbiA9IGZhbHNlOworCitUcmFuc2FjdGlvbklkIHN0cmVhbV94aWQgPSBJbnZhbGlkVHJhbnNh Y3Rpb25JZDsKK3N0YXRpYyBBcHBseUJnd29ya2VyU3RhdGUgKnN0cmVhbV9hcHBseV93b3JrZXIg PSBOVUxMOworCisvKiBjaGVjayBpZiB3ZSBhcmUgYXBwbHlpbmcgdGhlIHRyYW5zYWN0aW9uIGlu IGFwcGx5IGJhY2tncm91bmQgd29ya2VyICovCisjZGVmaW5lIGFwcGx5X2Jnd29ya2VyX2FjdGl2 ZSgpIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiAmJiBzdHJlYW1fYXBwbHlfd29ya2VyICE9IE5V TEwpCiAKLXN0YXRpYyBUcmFuc2FjdGlvbklkIHN0cmVhbV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rp b25JZDsKKy8qCisgKiBUaGUgbnVtYmVyIG9mIGNoYW5nZXMgZHVyaW5nIG9uZSBzdHJlYW1pbmcg YmxvY2sgKG9ubHkgZm9yIGFwcGx5IGJhY2tncm91bmQKKyAqIHdvcmtlcnMpCisgKi8KK3N0YXRp YyB1aW50MzIgbmNoYW5nZXMgPSAwOwogCiAvKgogICogV2UgZW5hYmxlIHNraXBwaW5nIGFsbCBk YXRhIG1vZGlmaWNhdGlvbiBjaGFuZ2VzIChJTlNFUlQsIFVQREFURSwgZXRjLikgZm9yCiAgKiB0 aGUgc3Vic2NyaXB0aW9uIGlmIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24ncyBmaW5pc2ggTFNOIG1h dGNoZXMgdGhlIHN1YnNraXBsc24uCiAgKiBPbmNlIHdlIHN0YXJ0IHNraXBwaW5nIGNoYW5nZXMs IHdlIGRvbid0IHN0b3AgaXQgdW50aWwgd2Ugc2tpcCBhbGwgY2hhbmdlcyBvZgogICogdGhlIHRy YW5zYWN0aW9uIGV2ZW4gaWYgcGdfc3Vic2NyaXB0aW9uIGlzIHVwZGF0ZWQgYW5kIE15U3Vic2Ny aXB0aW9uLT5za2lwbHNuCi0gKiBnZXRzIGNoYW5nZWQgb3IgcmVzZXQgZHVyaW5nIHRoYXQuIEFs c28sIGluIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBjYXNlcywgd2UKLSAqIGRvbid0IHNraXAgcmVj ZWl2aW5nIGFuZCBzcG9vbGluZyB0aGUgY2hhbmdlcyBzaW5jZSB3ZSBkZWNpZGUgd2hldGhlciBv ciBub3QKKyAqIGdldHMgY2hhbmdlZCBvciByZXNldCBkdXJpbmcgdGhhdC4gQWxzbywgaW4gc3Ry ZWFtaW5nIHRyYW5zYWN0aW9uIGNhc2VzIChzdHJlYW1pbmcgPSBvbiksCisgKiB3ZSBkb24ndCBz a2lwIHJlY2VpdmluZyBhbmQgc3Bvb2xpbmcgdGhlIGNoYW5nZXMgc2luY2Ugd2UgZGVjaWRlIHdo ZXRoZXIgb3Igbm90CiAgKiB0byBza2lwIGFwcGx5aW5nIHRoZSBjaGFuZ2VzIHdoZW4gc3RhcnRp bmcgdG8gYXBwbHkgY2hhbmdlcy4gVGhlIHN1YnNraXBsc24gaXMKICAqIGNsZWFyZWQgYWZ0ZXIg c3VjY2Vzc2Z1bGx5IHNraXBwaW5nIHRoZSB0cmFuc2FjdGlvbiBvciBhcHBseWluZyBub24tZW1w dHkKICAqIHRyYW5zYWN0aW9uLiBUaGUgbGF0dGVyIHByZXZlbnRzIHRoZSBtaXN0YWtlbmx5IHNw ZWNpZmllZCBzdWJza2lwbHNuIGZyb20KLSAqIGJlaW5nIGxlZnQuCisgKiBiZWluZyBsZWZ0LiBO b3RlIHRoYXQgd2UgY2Fubm90IHNraXAgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBpbiBhcHBs eSBtb2RlLAorICogYmVjYXVzZSB3ZSBjYW5ub3QgZ2V0IHRoZSBmaW5pc2ggTFNOIGJlZm9yZSBh cHBseWluZyB0aGUgY2hhbmdlcy4KICAqLwogc3RhdGljIFhMb2dSZWNQdHIgc2tpcF94YWN0X2Zp bmlzaF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKICNkZWZpbmUgaXNfc2tpcHBpbmdfY2hhbmdl cygpICh1bmxpa2VseSghWExvZ1JlY1B0cklzSW52YWxpZChza2lwX3hhY3RfZmluaXNoX2xzbikp KQpAQCAtMzI0LDkgKzMzNyw2IEBAIHN0YXRpYyB2b2lkIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRp b24odm9pZCk7CiAKIHN0YXRpYyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQp OwogCi0vKiBwcm90b3R5cGUgbmVlZGVkIGJlY2F1c2Ugb2Ygc3RyZWFtX2NvbW1pdCAqLwotc3Rh dGljIHZvaWQgYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKTsKLQogc3RhdGljIHZvaWQgYXBw bHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbChMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2Rh dGEpOwogc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX2luc2VydF9pbnRlcm5hbChBcHBseUV4ZWN1 dGlvbkRhdGEgKmVkYXRhLAogCQkJCQkJCQkJCSBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLApAQCAt MzU5LDcgKzM2OSw2IEBAIHN0YXRpYyB2b2lkIHN0b3Bfc2tpcHBpbmdfY2hhbmdlcyh2b2lkKTsK IHN0YXRpYyB2b2lkIGNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlz aF9sc24pOwogCiAvKiBGdW5jdGlvbnMgZm9yIGFwcGx5IGVycm9yIGNhbGxiYWNrICovCi1zdGF0 aWMgdm9pZCBhcHBseV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOwogc3RhdGljIGlubGluZSB2 b2lkIHNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dS ZWNQdHIgbHNuKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCByZXNldF9hcHBseV9lcnJvcl9jb250ZXh0 X2luZm8odm9pZCk7CiAKQEAgLTQyNiw0MSArNDM1LDc2IEBAIGVuZF9yZXBsaWNhdGlvbl9zdGVw KHZvaWQpCiB9CiAKIC8qCi0gKiBIYW5kbGUgc3RyZWFtZWQgdHJhbnNhY3Rpb25zLgorICogSGFu ZGxlIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBmb3IgYm90aCBtYWluIGFwcGx5IHdvcmtlciBhbmQg YXBwbHkgYmFja2dyb3VuZAorICogd29ya2VyLgogICoKLSAqIElmIGluIHN0cmVhbWluZyBtb2Rl IChyZWNlaXZpbmcgYSBibG9jayBvZiBzdHJlYW1lZCB0cmFuc2FjdGlvbiksIHdlCi0gKiBzaW1w bHkgcmVkaXJlY3QgaXQgdG8gYSBmaWxlIGZvciB0aGUgcHJvcGVyIHRvcGxldmVsIHRyYW5zYWN0 aW9uLgorICogSW4gc3RyZWFtaW5nIGNhc2UgKHJlY2VpdmluZyBhIGJsb2NrIG9mIHN0cmVhbWVk IHRyYW5zYWN0aW9uKSwgZm9yCisgKiBTVUJTVFJFQU1fT04gbW9kZSwgd2Ugc2ltcGx5IHJlZGly ZWN0IGl0IHRvIGEgZmlsZSBmb3IgdGhlIHByb3BlciB0b3BsZXZlbAorICogdHJhbnNhY3Rpb24s IGFuZCBmb3IgU1VCU1RSRUFNX0FQUExZIG1vZGUsIHdlIHNlbmQgdGhlIGNoYW5nZXMgdG8gYmFj a2dyb3VuZAorICogYXBwbHkgd29ya2VyIChMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04gb3IgTE9H SUNBTF9SRVBfTVNHX1RZUEUgY2hhbmdlcyB3aWxsCisgKiBhbHNvIGJlIGFwcGxpZWQgaW4gbWFp biBhcHBseSB3b3JrZXIpLgogICoKLSAqIFJldHVybnMgdHJ1ZSBmb3Igc3RyZWFtZWQgdHJhbnNh Y3Rpb25zLCBmYWxzZSBvdGhlcndpc2UgKHJlZ3VsYXIgbW9kZSkuCisgKiBGb3Igbm9uLXN0cmVh bWVkIHRyYW5zYWN0aW9ucywgcmV0dXJucyBmYWxzZTsKKyAqIEZvciBzdHJlYW1lZCB0cmFuc2Fj dGlvbnMsIHJldHVybnMgdHJ1ZSBpZiBpbiBtYWluIGFwcGx5IHdvcmtlciAoZXhjZXB0IHdlCisg KiBhcHBseSBzdHJlYW1lZCB0cmFuc2FjdGlvbiBpbiAiYXBwbHkiIG1vZGUgYW5kIGFkZHJlc3MK KyAqIExPR0lDQUxfUkVQX01TR19SRUxBVElPTiBvciBMT0dJQ0FMX1JFUF9NU0dfVFlQRSBjaGFu Z2VzKSwgZmFsc2Ugb3RoZXJ3aXNlLgogICovCiBzdGF0aWMgYm9vbAogaGFuZGxlX3N0cmVhbWVk X3RyYW5zYWN0aW9uKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQogewot CVRyYW5zYWN0aW9uSWQgeGlkOworCVRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQgPSBJbnZhbGlk VHJhbnNhY3Rpb25JZDsKIAogCS8qIG5vdCBpbiBzdHJlYW1pbmcgbW9kZSAqLwotCWlmICghaW5f c3RyZWFtZWRfdHJhbnNhY3Rpb24pCisJaWYgKCEoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gfHwg YW1fYXBwbHlfYmd3b3JrZXIoKSkpCiAJCXJldHVybiBmYWxzZTsKIAotCUFzc2VydChzdHJlYW1f ZmQgIT0gTlVMTCk7CiAJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0cmVhbV94aWQpKTsK IAogCS8qCiAJICogV2Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgWElEIG9mIHRoZSBzdWJ4YWN0IGFz IHRoZSBmaXJzdCBwYXJ0IG9mIHRoZQogCSAqIG1lc3NhZ2UsIHNvIGV4dHJhY3QgaXQuCiAJICov Ci0JeGlkID0gcHFfZ2V0bXNnaW50KHMsIDQpOworCWN1cnJlbnRfeGlkID0gcHFfZ2V0bXNnaW50 KHMsIDQpOwogCi0JaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKQorCWlmICghVHJhbnNh Y3Rpb25JZElzVmFsaWQoY3VycmVudF94aWQpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJj b2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJp bnZhbGlkIHRyYW5zYWN0aW9uIElEIGluIHN0cmVhbWVkIHJlcGxpY2F0aW9uIHRyYW5zYWN0aW9u IikpKTsKIAotCS8qIEFkZCB0aGUgbmV3IHN1YnhhY3QgdG8gdGhlIGFycmF5ICh1bmxlc3MgYWxy ZWFkeSB0aGVyZSkuICovCi0Jc3VieGFjdF9pbmZvX2FkZCh4aWQpOworCWlmIChhbV9hcHBseV9i Z3dvcmtlcigpKQorCXsKKwkJLyogZGVmaW5lIGEgc2F2ZXBvaW50IGZvciBhIHN1YnhhY3QgaWYg bmVlZGVkLiAqLworCQlhcHBseV9iZ3dvcmtlcl9zdWJ4YWN0X2luZm9fYWRkKGN1cnJlbnRfeGlk KTsKIAotCS8qIHdyaXRlIHRoZSBjaGFuZ2UgdG8gdGhlIGN1cnJlbnQgZmlsZSAqLwotCXN0cmVh bV93cml0ZV9jaGFuZ2UoYWN0aW9uLCBzKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwllbHNlIGlm IChhcHBseV9iZ3dvcmtlcl9hY3RpdmUoKSkKKwl7CisJCS8qCisJCSAqIElmIHdlIGRlY2lkZWQg dG8gYXBwbHkgdGhlIGNoYW5nZXMgb2YgdGhpcyB0cmFuc2FjdGlvbiBpbiBhbiBhcHBseQorCQkg KiBiYWNrZ3JvdW5kIHdvcmtlciwgcGFzcyB0aGUgZGF0YSB0byB0aGUgd29ya2VyLgorCQkgKi8K KwkJYXBwbHlfYmd3b3JrZXJfc2VuZF9kYXRhKHN0cmVhbV9hcHBseV93b3JrZXIsIHMtPmxlbiwg cy0+ZGF0YSk7CisJCW5jaGFuZ2VzICs9IDE7CisKKwkJLyoKKwkJICogWFhYIFRoZSBwdWJsaXNo ZXIgc2lkZSBkb2Vzbid0IGFsd2F5cyBzZW5kIHJlbGF0aW9uL3R5cGUgdXBkYXRlCisJCSAqIG1l c3NhZ2VzIGFmdGVyIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHNvIGFsc28gdXBkYXRlIHRo ZQorCQkgKiByZWxhdGlvbi90eXBlIGluIG1haW4gYXBwbHkgd29ya2VyIGhlcmUuIFNlZSBmdW5j dGlvbgorCQkgKiBjbGVhbnVwX3JlbF9zeW5jX2NhY2hlLgorCQkgKi8KKwkJaWYgKGFjdGlvbiA9 PSBMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04gfHwKKwkJCWFjdGlvbiA9PSBMT0dJQ0FMX1JFUF9N U0dfVFlQRSkKKwkJCXJldHVybiBmYWxzZTsKKwl9CisJZWxzZQorCXsKKwkJLyogQWRkIHRoZSBu ZXcgc3VieGFjdCB0byB0aGUgYXJyYXkgKHVubGVzcyBhbHJlYWR5IHRoZXJlKS4gKi8KKwkJc3Vi eGFjdF9pbmZvX2FkZChjdXJyZW50X3hpZCk7CisKKwkJLyogd3JpdGUgdGhlIGNoYW5nZSB0byB0 aGUgY3VycmVudCBmaWxlICovCisJCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9uLCBzKTsKKwl9 CiAKIAlyZXR1cm4gdHJ1ZTsKIH0KQEAgLTg0NCw2ICs4ODgsOSBAQCBhcHBseV9oYW5kbGVfY29t bWl0KFN0cmluZ0luZm8gcykKIAogCWFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoJmNvbW1p dF9kYXRhKTsKIAorCS8qIENoZWNrIHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFja2dyb3VuZCB3b3Jr ZXIgaWYgYW55LiAqLworCWFwcGx5X2Jnd29ya2VyX2NoZWNrX3N0YXR1cygpOworCiAJLyogUHJv Y2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4g Ki8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVuZF9sc24pOwogCkBAIC04 OTgsNyArOTQ1LDkgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoTG9naWNhbFJlcFBy ZXBhcmVkVHhuRGF0YSAqcHJlcGFyZV9kYXRhKQogCSAqIEJlZ2luVHJhbnNhY3Rpb25CbG9jayBp cyBuZWNlc3NhcnkgdG8gYmFsYW5jZSB0aGUgRW5kVHJhbnNhY3Rpb25CbG9jawogCSAqIGNhbGxl ZCB3aXRoaW4gdGhlIFByZXBhcmVUcmFuc2FjdGlvbkJsb2NrIGJlbG93LgogCSAqLwotCUJlZ2lu VHJhbnNhY3Rpb25CbG9jaygpOworCWlmICghSXNUcmFuc2FjdGlvbkJsb2NrKCkpCisJCUJlZ2lu VHJhbnNhY3Rpb25CbG9jaygpOworCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7IC8qIENv bXBsZXRlcyB0aGUgcHJlY2VkaW5nIEJlZ2luIGNvbW1hbmQuICovCiAKIAkvKgpAQCAtOTUwLDYg Kzk5OSw5IEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAogCWluX3JlbW90 ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCisJLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiBhcHBseSBi YWNrZ3JvdW5kIHdvcmtlciBpZiBhbnkuICovCisJYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVz KCk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVk IGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMocHJlcGFyZV9kYXRhLmVu ZF9sc24pOwogCkBAIC0xMDY0LDEwICsxMTE2LDYgQEAgYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3By ZXBhcmVkKFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBTVFJFQU0gUFJFUEFSRS4KLSAq Ci0gKiBMb2dpYyBpcyBpbiB0d28gcGFydHM6Ci0gKiAxLiBSZXBsYXkgYWxsIHRoZSBzcG9vbGVk IG9wZXJhdGlvbnMKLSAqIDIuIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkCiAgKi8K IHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQpA QCAtMTA4OCwyNCArMTEzNiw3MCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5n SW5mbyBzKQogCWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fcHJlcGFyZShzLCAmcHJlcGFyZV9kYXRh KTsKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHByZXBhcmVfZGF0YS54aWQsIHByZXBh cmVfZGF0YS5wcmVwYXJlX2xzbik7CiAKLQllbG9nKERFQlVHMSwgInJlY2VpdmVkIHByZXBhcmUg Zm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9uICV1IiwgcHJlcGFyZV9kYXRhLnhpZCk7CisJaWYgKGFt X2FwcGx5X2Jnd29ya2VyKCkpCisJeworCQkvKiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVw YXJlZC4gKi8KKwkJYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVfZGF0YSk7 CiAKLQkvKiBSZXBsYXkgYWxsIHRoZSBzcG9vbGVkIG9wZXJhdGlvbnMuICovCi0JYXBwbHlfc3Bv b2xlZF9tZXNzYWdlcyhwcmVwYXJlX2RhdGEueGlkLCBwcmVwYXJlX2RhdGEucHJlcGFyZV9sc24p OworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIE1hcmsgdGhlIHRyYW5zYWN0 aW9uIGFzIHByZXBhcmVkLiAqLwotCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKCZwcmVw YXJlX2RhdGEpOworCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCi0JQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisJCWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7CisJCXN1YnhhY3RsaXN0 ID0gTklMOwogCi0JcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKKwkJYXBwbHlfYmd3b3JrZXJf c2V0X3N0YXR1cyhBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCk7CisJfQorCWVsc2UKKwl7CisJCUFw cGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlID0gYXBwbHlfYmd3b3JrZXJfZmluZF9vcl9zdGFydChw cmVwYXJlX2RhdGEueGlkLCBmYWxzZSk7CiAKLQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJl X2RhdGEuZW5kX2xzbik7CisJCWVsb2coREVCVUcxLCAicmVjZWl2ZWQgcHJlcGFyZSBmb3Igc3Ry ZWFtZWQgdHJhbnNhY3Rpb24gJXUiLAorCQkJIHByZXBhcmVfZGF0YS54aWQpOworCisJCS8qCisJ CSAqIFRoaXMgaXMgdGhlIG1haW4gYXBwbHkgd29ya2VyLiBDaGVjayBpZiB3ZSBhcmUgcHJvY2Vz c2luZyB0aGlzCisJCSAqIHRyYW5zYWN0aW9uIGluIGEgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIu CisJCSAqLworCQlpZiAod3N0YXRlKQorCQl7CisJCQlhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEo d3N0YXRlLCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQlhcHBseV9iZ3dvcmtlcl93YWl0X2Zvcih3 c3RhdGUsIEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsKKwkJCWFwcGx5X2Jnd29ya2VyX2ZyZWUo d3N0YXRlKTsKKworCQkJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKKwkJCXN0b3JlX2ZsdXNo X3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8q CisJCQkgKiBUaGlzIGlzIHRoZSBtYWluIGFwcGx5IHdvcmtlciBhbmQgdGhlIHRyYW5zYWN0aW9u IGhhcyBiZWVuCisJCQkgKiBzZXJpYWxpemVkIHRvIGZpbGUsIHJlcGxheSBhbGwgdGhlIHNwb29s ZWQgb3BlcmF0aW9ucy4KKwkJCSAqLworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhwcmVwYXJl X2RhdGEueGlkLCBwcmVwYXJlX2RhdGEucHJlcGFyZV9sc24pOworCisJCQkvKiBNYXJrIHRoZSB0 cmFuc2FjdGlvbiBhcyBwcmVwYXJlZC4gKi8KKwkJCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVy bmFsKCZwcmVwYXJlX2RhdGEpOworCisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwor CQkJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKKworCQkJc3RvcmVfZmx1c2hfcG9zaXRpb24o cHJlcGFyZV9kYXRhLmVuZF9sc24pOworCisJCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxz ZTsKKworCQkJLyogdW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQg c3VieGFjdCBpbmZvLiAqLworCQkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29y a2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhpZCk7CisJCX0KKwl9CiAKIAlpbl9yZW1vdGVfdHJh bnNhY3Rpb24gPSBmYWxzZTsKKwlzdHJlYW1fYXBwbHlfd29ya2VyID0gTlVMTDsKIAotCS8qIHVu bGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4g Ki8KLQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBwcmVw YXJlX2RhdGEueGlkKTsKKwkvKiBDaGVjayB0aGUgc3RhdHVzIG9mIGFwcGx5IGJhY2tncm91bmQg d29ya2VyIGlmIGFueS4gKi8KKwlhcHBseV9iZ3dvcmtlcl9jaGVja19zdGF0dXMoKTsKIAogCS8q IFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxs ZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CkBA IC0xMTU1LDE1ICsxMjQ5LDYgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZv IHMpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCSBlcnJt c2dfaW50ZXJuYWwoImR1cGxpY2F0ZSBTVFJFQU0gU1RBUlQgbWVzc2FnZSIpKSk7CiAKLQkvKgot CSAqIFN0YXJ0IGEgdHJhbnNhY3Rpb24gb24gc3RyZWFtIHN0YXJ0LCB0aGlzIHRyYW5zYWN0aW9u IHdpbGwgYmUgY29tbWl0dGVkCi0JICogb24gdGhlIHN0cmVhbSBzdG9wIHVubGVzcyBpdCBpcyBh IHRhYmxlc3luYyB3b3JrZXIgaW4gd2hpY2ggY2FzZSBpdAotCSAqIHdpbGwgYmUgY29tbWl0dGVk IGFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZSBtZXNzYWdlcy4gV2UgbmVlZCB0aGUKLQkgKiB0cmFu c2FjdGlvbiBmb3IgaGFuZGxpbmcgdGhlIGJ1ZmZpbGUsIHVzZWQgZm9yIHNlcmlhbGl6aW5nIHRo ZQotCSAqIHN0cmVhbWluZyBkYXRhIGFuZCBzdWJ4YWN0IGluZm8uCi0JICovCi0JYmVnaW5fcmVw bGljYXRpb25fc3RlcCgpOwotCiAJLyogbm90aWZ5IGhhbmRsZSBtZXRob2RzIHdlJ3JlIHByb2Nl c3NpbmcgYSByZW1vdGUgdHJhbnNhY3Rpb24gKi8KIAlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9 IHRydWU7CiAKQEAgLTExNzcsMzYgKzEyNjIsOTIgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFy dChTdHJpbmdJbmZvIHMpCiAKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHN0cmVhbV94 aWQsIEludmFsaWRYTG9nUmVjUHRyKTsKIAotCS8qCi0JICogSW5pdGlhbGl6ZSB0aGUgd29ya2Vy J3Mgc3RyZWFtX2ZpbGVzZXQgaWYgd2UgaGF2ZW4ndCB5ZXQuIFRoaXMgd2lsbCBiZQotCSAqIHVz ZWQgZm9yIHRoZSBlbnRpcmUgZHVyYXRpb24gb2YgdGhlIHdvcmtlciBzbyBjcmVhdGUgaXQgaW4g YSBwZXJtYW5lbnQKLQkgKiBjb250ZXh0LiBXZSBjcmVhdGUgdGhpcyBvbiB0aGUgdmVyeSBmaXJz dCBzdHJlYW1pbmcgbWVzc2FnZSBmcm9tIGFueQotCSAqIHRyYW5zYWN0aW9uIGFuZCB0aGVuIHVz ZSBpdCBmb3IgdGhpcyBhbmQgb3RoZXIgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4KLQkgKiBOb3cs IHdlIGNvdWxkIGNyZWF0ZSBhIGZpbGVzZXQgYXQgdGhlIHN0YXJ0IG9mIHRoZSB3b3JrZXIgYXMg d2VsbCBidXQKLQkgKiB0aGVuIHdlIHdvbid0IGJlIHN1cmUgdGhhdCBpdCB3aWxsIGV2ZXIgYmUg dXNlZC4KLQkgKi8KLQlpZiAoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9PSBO VUxMKQorCWlmIChhbV9hcHBseV9iZ3dvcmtlcigpKQogCXsKLQkJTWVtb3J5Q29udGV4dCBvbGRj dHg7Ci0KLQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisJ CS8qCisJCSAqIE1ha2Ugc3VyZSB0aGUgaGFuZGxlIGFwcGx5X2Rpc3BhdGNoIG1ldGhvZHMgYXJl IGF3YXJlIHdlJ3JlIGluIGEKKwkJICogcmVtb3RlIHRyYW5zYWN0aW9uLgorCQkgKi8KKwkJaW5f cmVtb3RlX3RyYW5zYWN0aW9uID0gdHJ1ZTsKIAotCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVh bV9maWxlc2V0ID0gcGFsbG9jKHNpemVvZihGaWxlU2V0KSk7Ci0JCUZpbGVTZXRJbml0KE15TG9n aWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOworCQkvKiBJZiB3ZSBhcmUgaW4gYSBhcHBs eSBiYWNrZ3JvdW5kIHdvcmtlciwgYmVnaW4gdGhlIHRyYW5zYWN0aW9uICovCisJCUFjY2VwdElu dmFsaWRhdGlvbk1lc3NhZ2VzKCk7CisJCW1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24oKTsKIAot CQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKKwkJQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOwogCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBUaGlzIGlzIHRoZSBtYWluIGFwcGx5 IHdvcmtlci4gQ2hlY2sgaWYgdGhlcmUgaXMgYW55IGZyZWUgYXBwbHkKKwkJICogYmFja2dyb3Vu ZCB3b3JrZXIgd2UgY2FuIHVzZSB0byBwcm9jZXNzIHRoaXMgdHJhbnNhY3Rpb24uCisJCSAqLwor CQlzdHJlYW1fYXBwbHlfd29ya2VyID0gYXBwbHlfYmd3b3JrZXJfZmluZF9vcl9zdGFydChzdHJl YW1feGlkLCBmaXJzdF9zZWdtZW50KTsKIAotCS8qIG9wZW4gdGhlIHNwb29sIGZpbGUgZm9yIHRo aXMgdHJhbnNhY3Rpb24gKi8KLQlzdHJlYW1fb3Blbl9maWxlKE15TG9naWNhbFJlcFdvcmtlci0+ c3ViaWQsIHN0cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQpOworCQlpZiAoc3RyZWFtX2FwcGx5X3dv cmtlcikKKwkJeworCQkJLyoKKwkJCSAqIElmIHdlIGhhdmUgZm91bmQgYSBmcmVlIHdvcmtlciBv ciBpZiB3ZSBhcmUgYWxyZWFkeSBhcHBseWluZyB0aGlzCisJCQkgKiB0cmFuc2FjdGlvbiBpbiBh biBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciwgdGhlbiB3ZSBwYXNzIHRoZSBkYXRhIHRvCisJCQkg KiB0aGF0IHdvcmtlci4KKwkJCSAqLworCQkJaWYgKGZpcnN0X3NlZ21lbnQpCisJCQkJYXBwbHlf Ymd3b3JrZXJfc2VuZF9kYXRhKHN0cmVhbV9hcHBseV93b3JrZXIsIHMtPmxlbiwgcy0+ZGF0YSk7 CiAKLQkvKiBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBz dWJ4YWN0IGZpbGUgKi8KLQlpZiAoIWZpcnN0X3NlZ21lbnQpCi0JCXN1YnhhY3RfaW5mb19yZWFk KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCQkJbmNoYW5nZXMgPSAw OworCQkJZWxvZyhERUJVRzEsICJzdGFydGluZyBzdHJlYW1pbmcgb2YgeGlkICV1Iiwgc3RyZWFt X3hpZCk7CisJCX0KIAotCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklORywgTlVM TCk7CisJCS8qCisJCSAqIElmIG5vIHdvcmtlciBpcyBhdmFpbGFibGUgZm9yIHRoZSBmaXJzdCBz dHJlYW0gc3RhcnQsIHdlIHN0YXJ0IHRvCisJCSAqIHNlcmlhbGl6ZSBhbGwgdGhlIGNoYW5nZXMg b2YgdGhlIHRyYW5zYWN0aW9uLgorCQkgKi8KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogU3Rh cnQgYSB0cmFuc2FjdGlvbiBvbiBzdHJlYW0gc3RhcnQsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBi ZQorCQkJICogY29tbWl0dGVkIG9uIHRoZSBzdHJlYW0gc3RvcCB1bmxlc3MgaXQgaXMgYSB0YWJs ZXN5bmMgd29ya2VyIGluCisJCQkgKiB3aGljaCBjYXNlIGl0IHdpbGwgYmUgY29tbWl0dGVkIGFm dGVyIHByb2Nlc3NpbmcgYWxsIHRoZSBtZXNzYWdlcy4KKwkJCSAqIFdlIG5lZWQgdGhlIHRyYW5z YWN0aW9uIGZvciBoYW5kbGluZyB0aGUgYnVmZmlsZSwgdXNlZCBmb3IKKwkJCSAqIHNlcmlhbGl6 aW5nIHRoZSBzdHJlYW1pbmcgZGF0YSBhbmQgc3VieGFjdCBpbmZvLgorCQkJICovCisJCQliZWdp bl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAKLQllbmRfcmVwbGljYXRpb25fc3RlcCgpOworCQkJLyoK KwkJCSAqIEluaXRpYWxpemUgdGhlIHdvcmtlcidzIHN0cmVhbV9maWxlc2V0IGlmIHdlIGhhdmVu J3QgeWV0LiBUaGlzIHdpbGwKKwkJCSAqIGJlIHVzZWQgZm9yIHRoZSBlbnRpcmUgZHVyYXRpb24g b2YgdGhlIHdvcmtlciBzbyBjcmVhdGUgaXQgaW4gYQorCQkJICogcGVybWFuZW50IGNvbnRleHQu IFdlIGNyZWF0ZSB0aGlzIG9uIHRoZSB2ZXJ5IGZpcnN0IHN0cmVhbWluZworCQkJICogbWVzc2Fn ZSBmcm9tIGFueSB0cmFuc2FjdGlvbiBhbmQgdGhlbiB1c2UgaXQgZm9yIHRoaXMgYW5kIG90aGVy CisJCQkgKiBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLiBOb3csIHdlIGNvdWxkIGNyZWF0ZSBhIGZp bGVzZXQgYXQgdGhlIHN0YXJ0CisJCQkgKiBvZiB0aGUgd29ya2VyIGFzIHdlbGwgYnV0IHRoZW4g d2Ugd29uJ3QgYmUgc3VyZSB0aGF0IGl0IHdpbGwgZXZlcgorCQkJICogYmUgdXNlZC4KKwkJCSAq LworCQkJaWYgKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPT0gTlVMTCkKKwkJ CXsKKwkJCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKworCQkJCW9sZGN0eCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJl YW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOworCQkJCUZpbGVTZXRJbml0KE15 TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOworCisJCQkJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGN0eCk7CisJCQl9CisKKwkJCS8qIG9wZW4gdGhlIHNwb29sIGZpbGUgZm9yIHRo aXMgdHJhbnNhY3Rpb24gKi8KKwkJCXN0cmVhbV9vcGVuX2ZpbGUoTXlMb2dpY2FsUmVwV29ya2Vy LT5zdWJpZCwgc3RyZWFtX3hpZCwgZmlyc3Rfc2VnbWVudCk7CisKKwkJCS8qIGlmIHRoaXMgaXMg bm90IHRoZSBmaXJzdCBzZWdtZW50LCBvcGVuIGV4aXN0aW5nIHN1YnhhY3QgZmlsZSAqLworCQkJ aWYgKCFmaXJzdF9zZWdtZW50KQorCQkJCXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdv cmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCisJCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOwor CQl9CisJfQorCisJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9SVU5OSU5HLCBOVUxMKTsK IH0KIAogLyoKQEAgLTEyMjAsNDQgKzEzNjEsNDYgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdG9w KFN0cmluZ0luZm8gcykKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiks CiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIFNUT1AgbWVzc2FnZSB3aXRob3V0IFNUUkVB TSBTVEFSVCIpKSk7CiAKLQkvKgotCSAqIENsb3NlIHRoZSBmaWxlIHdpdGggc2VyaWFsaXplZCBj aGFuZ2VzLCBhbmQgc2VyaWFsaXplIGluZm9ybWF0aW9uIGFib3V0Ci0JICogc3VieGFjdHMgZm9y IHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KLQkgKi8KLQlzdWJ4YWN0X2luZm9fd3JpdGUoTXlM b2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7Ci0Jc3RyZWFtX2Nsb3NlX2ZpbGUo KTsKKwlpZiAoYXBwbHlfYmd3b3JrZXJfYWN0aXZlKCkpCisJeworCQljaGFyCQlhY3Rpb24gPSBM T0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUT1A7CiAKLQkvKiBXZSBtdXN0IGJlIGluIGEgdmFsaWQg dHJhbnNhY3Rpb24gc3RhdGUgKi8KLQlBc3NlcnQoSXNUcmFuc2FjdGlvblN0YXRlKCkpOworCQlh cHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEoc3RyZWFtX2FwcGx5X3dvcmtlciwgMSwgJmFjdGlvbik7 CiAKLQkvKiBDb21taXQgdGhlIHBlci1zdHJlYW0gdHJhbnNhY3Rpb24gKi8KLQlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKKwkJZWxvZyhERUJVRzEsICJzdG9wcGVkIHN0cmVhbWluZyBvZiB4 aWQgJXUsICV1IGNoYW5nZXMgc3RyZWFtZWQiLCBzdHJlYW1feGlkLCBuY2hhbmdlcyk7CisJfQor CWVsc2UKKwl7CisJCS8qCisJCSAqIENsb3NlIHRoZSBmaWxlIHdpdGggc2VyaWFsaXplZCBjaGFu Z2VzLCBhbmQgc2VyaWFsaXplIGluZm9ybWF0aW9uCisJCSAqIGFib3V0IHN1YnhhY3RzIGZvciB0 aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCisJCSAqLworCQlzdWJ4YWN0X2luZm9fd3JpdGUoTXlM b2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CisJCXN0cmVhbV9jbG9zZV9maWxl KCk7CiAKLQlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOworCQkvKiBXZSBtdXN0IGJl IGluIGEgdmFsaWQgdHJhbnNhY3Rpb24gc3RhdGUgKi8KKwkJQXNzZXJ0KElzVHJhbnNhY3Rpb25T dGF0ZSgpKTsKIAotCS8qIFJlc2V0IHBlci1zdHJlYW0gY29udGV4dCAqLwotCU1lbW9yeUNvbnRl eHRSZXNldChMb2dpY2FsU3RyZWFtaW5nQ29udGV4dCk7CisJCS8qIENvbW1pdCB0aGUgcGVyLXN0 cmVhbSB0cmFuc2FjdGlvbiAqLworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkv KiBSZXNldCBwZXItc3RyZWFtIGNvbnRleHQgKi8KKwkJTWVtb3J5Q29udGV4dFJlc2V0KExvZ2lj YWxTdHJlYW1pbmdDb250ZXh0KTsKKwl9CisKKwlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZh bHNlOworCXN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxMOwogCiAJcGdzdGF0X3JlcG9ydF9hY3Rp dml0eShTVEFURV9JRExFLCBOVUxMKTsKIAlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8o KTsKIH0KIAogLyoKLSAqIEhhbmRsZSBTVFJFQU0gYWJvcnQgbWVzc2FnZS4KKyAqIEhhbmRsZSBT VFJFQU0gQUJPUlQgbWVzc2FnZSB3aGVuIHRoZSB0cmFuc2FjdGlvbiB3YXMgc3BpbGxlZCB0byBk aXNrLgogICovCiBzdGF0aWMgdm9pZAotYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJ bmZvIHMpCitzZXJpYWxpemVfc3RyZWFtX2Fib3J0KFRyYW5zYWN0aW9uSWQgeGlkLCBUcmFuc2Fj dGlvbklkIHN1YnhpZCkKIHsKLQlUcmFuc2FjdGlvbklkIHhpZDsKLQlUcmFuc2FjdGlvbklkIHN1 YnhpZDsKLQotCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKLQkJZXJlcG9ydChFUlJPUiwK LQkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCi0JCQkJIGVycm1zZ19p bnRlcm5hbCgiU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RPUCIpKSk7Ci0K LQlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KHMsICZ4aWQsICZzdWJ4aWQpOwotCiAJLyoK IAkgKiBJZiB0aGUgdHdvIFhJRHMgYXJlIHRoZSBzYW1lLCBpdCdzIGluIGZhY3QgYWJvcnQgb2Yg dG9wbGV2ZWwgeGFjdCwgc28KIAkgKiBqdXN0IGRlbGV0ZSB0aGUgZmlsZXMgd2l0aCBzZXJpYWxp emVkIGluZm8uCkBAIC0xMzM5LDggKzE0ODIsMTM2IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJv cnQoU3RyaW5nSW5mbyBzKQogCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOwogCQlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKIAl9Cit9CiAKLQlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2lu Zm8oKTsKKy8qCisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2UuCisgKi8KK3N0YXRpYyB2 b2lkCithcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKK3sKKwlUcmFuc2Fj dGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIHN1YnhpZDsKKwlMb2dpY2FsUmVwU3RyZWFtQWJv cnREYXRhIGFib3J0X2RhdGE7CisJYm9vbCBpbmNsdWRlX2Fib3J0X2xzbiA9IGZhbHNlOworCisJ aWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKKwkJCQkgZXJybXNnX2ludGVybmFsKCJT VFJFQU0gQUJPUlQgbWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVE9QIikpKTsKKworCS8qIENoZWNr IHdoZXRoZXIgdGhlIHB1Ymxpc2hlciBzZW5kcyBhYm9ydF9sc24gYW5kIGFib3J0X3RpbWUuICov CisJaWYgKGFtX2FwcGx5X2Jnd29ya2VyKCkpCisJCWluY2x1ZGVfYWJvcnRfbHNuID0gTXlQYXJh bGxlbFN0YXRlLT5zZXJ2ZXJfdmVyc2lvbiA+PSAxNTAwMDA7CisKKwlsb2dpY2FscmVwX3JlYWRf c3RyZWFtX2Fib3J0KHMsICZhYm9ydF9kYXRhLCBpbmNsdWRlX2Fib3J0X2xzbik7CisKKwl4aWQg PSBhYm9ydF9kYXRhLnhpZDsKKwlzdWJ4aWQgPSBhYm9ydF9kYXRhLnN1YnhpZDsKKworCWlmIChh bV9hcHBseV9iZ3dvcmtlcigpKQorCXsKKwkJZWxvZyhERUJVRzEsICJbQXBwbHkgQkdXICMldV0g YWJvcnRpbmcgY3VycmVudCB0cmFuc2FjdGlvbiB4aWQ9JXUsIHN1YnhpZD0ldSIsCisJCQkgTXlQ YXJhbGxlbFN0YXRlLT5uLCBHZXRDdXJyZW50VHJhbnNhY3Rpb25JZElmQW55KCksCisJCQkgR2V0 Q3VycmVudFN1YlRyYW5zYWN0aW9uSWQoKSk7CisKKwkJLyoKKwkJICogVXBkYXRlIG9yaWdpbiBz dGF0ZSBzbyB3ZSBjYW4gcmVzdGFydCBzdHJlYW1pbmcgZnJvbSBjb3JyZWN0CisJCSAqIHBvc2l0 aW9uIGluIGNhc2Ugb2YgY3Jhc2guCisJCSAqLworCQlpZiAoaW5jbHVkZV9hYm9ydF9sc24pCisJ CXsKKwkJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuID0gYWJvcnRfZGF0YS5hYm9ydF9s c247CisJCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFtcCA9IGFib3J0X2RhdGEu YWJvcnRfdGltZTsKKwkJfQorCisJCS8qCisJCSAqIElmIHRoZSB0d28gWElEcyBhcmUgdGhlIHNh bWUsIGl0J3MgaW4gZmFjdCBhYm9ydCBvZiB0b3BsZXZlbCB4YWN0LAorCQkgKiBzbyBqdXN0IGZy ZWUgdGhlIHN1YnhhY3RsaXN0LgorCQkgKi8KKwkJaWYgKHN1YnhpZCA9PSB4aWQpCisJCXsKKwkJ CXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Qoc3VieGlkLCBJbnZhbGlkWExvZ1JlY1B0cik7 CisKKwkJCUFib3J0Q3VycmVudFRyYW5zYWN0aW9uKCk7CisKKwkJCUVuZFRyYW5zYWN0aW9uQmxv Y2soZmFsc2UpOworCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJCWluX3JlbW90 ZV90cmFuc2FjdGlvbiA9IGZhbHNlOworCQkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9J RExFLCBOVUxMKTsKKworCQkJbGlzdF9mcmVlKHN1YnhhY3RsaXN0KTsKKwkJCXN1YnhhY3RsaXN0 ID0gTklMOworCisJCQlhcHBseV9iZ3dvcmtlcl9zZXRfc3RhdHVzKEFQUExZX0JHV09SS0VSX0ZJ TklTSEVEKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBPSywgc28gaXQncyBhIHN1 YnhhY3QuIFJvbGxiYWNrIHRvIHRoZSBzYXZlcG9pbnQuCisJCQkgKgorCQkJICogV2UgYWxzbyBu ZWVkIHRvIHJlYWQgdGhlIHN1YnhhY3RsaXN0LCBkZXRlcm1pbmUgdGhlIG9mZnNldAorCQkJICog dHJhY2tlZCBmb3IgdGhlIHN1YnhhY3QsIGFuZCB0cnVuY2F0ZSB0aGUgbGlzdC4KKwkJCSAqLwor CQkJaW50CQkJaTsKKwkJCWJvb2wJCWZvdW5kID0gZmFsc2U7CisJCQljaGFyCQlzcG5hbWVbTUFY UEdQQVRIXTsKKworCQkJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChzdWJ4aWQsIEludmFs aWRYTG9nUmVjUHRyKTsKKwkJCXNucHJpbnRmKHNwbmFtZSwgTUFYUEdQQVRILCAic2F2ZXBvaW50 X2Zvcl94aWRfJXUiLCBzdWJ4aWQpOworCisJCQllbG9nKERFQlVHMSwgIltBcHBseSBCR1cgIyV1 XSByb2xsaW5nIGJhY2sgdG8gc2F2ZXBvaW50ICVzIiwKKwkJCQkgTXlQYXJhbGxlbFN0YXRlLT5u LCBzcG5hbWUpOworCisJCQlmb3IgKGkgPSBsaXN0X2xlbmd0aChzdWJ4YWN0bGlzdCkgLSAxOyBp ID49IDA7IGktLSkKKwkJCXsKKwkJCQl4aWQgPSAoVHJhbnNhY3Rpb25JZCkgbGlzdF9udGhfaW50 KHN1YnhhY3RsaXN0LCBpKTsKKwkJCQlpZiAoeGlkID09IHN1YnhpZCkKKwkJCQl7CisJCQkJCWZv dW5kID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCisJCQlpZiAoZm91bmQpCisJ CQl7CisJCQkJUm9sbGJhY2tUb1NhdmVwb2ludChzcG5hbWUpOworCQkJCUNvbW1pdFRyYW5zYWN0 aW9uQ29tbWFuZCgpOworCQkJCXN1YnhhY3RsaXN0ID0gbGlzdF90cnVuY2F0ZShzdWJ4YWN0bGlz dCwgaSArIDEpOworCQkJfQorCisJCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEVJ TlRSQU5TQUNUSU9OLCBOVUxMKTsKKwkJfQorCisJCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRf aW5mbygpOworCX0KKwllbHNlCisJeworCQlBcHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZSA9IGFw cGx5X2Jnd29ya2VyX2ZpbmRfb3Jfc3RhcnQoeGlkLCBmYWxzZSk7CisKKwkJLyoKKwkJICogVGhp cyBpcyB0aGUgbWFpbiBhcHBseSB3b3JrZXIuIENoZWNrIGlmIHdlIGFyZSBwcm9jZXNzaW5nIHRo aXMKKwkJICogdHJhbnNhY3Rpb24gaW4gYSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4KKwkJICov CisJCWlmICh3c3RhdGUpCisJCXsKKwkJCWFwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YSh3c3RhdGUs IHMtPmxlbiwgcy0+ZGF0YSk7CisKKwkJCWlmIChzdWJ4aWQgPT0geGlkKQorCQkJeworCQkJCWFw cGx5X2Jnd29ya2VyX3dhaXRfZm9yKHdzdGF0ZSwgQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOwor CQkJCWFwcGx5X2Jnd29ya2VyX2ZyZWUod3N0YXRlKTsKKwkJCX0KKwkJfQorCisJCS8qCisJCSAq IFdlIGFyZSBpbiBtYWluIGFwcGx5IHdvcmtlciBhbmQgdGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVu IHNlcmlhbGl6ZWQKKwkJICogdG8gZmlsZS4KKwkJICovCisJCWVsc2UKKwkJCXNlcmlhbGl6ZV9z dHJlYW1fYWJvcnQoeGlkLCBzdWJ4aWQpOworCX0KIH0KIAogLyoKQEAgLTE0NjIsNDAgKzE3MzMs NiBAQCBhcHBseV9zcG9vbGVkX21lc3NhZ2VzKFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRy IGxzbikKIAlyZXR1cm47CiB9CiAKLS8qCi0gKiBIYW5kbGUgU1RSRUFNIENPTU1JVCBtZXNzYWdl LgotICovCi1zdGF0aWMgdm9pZAotYXBwbHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5m byBzKQotewotCVRyYW5zYWN0aW9uSWQgeGlkOwotCUxvZ2ljYWxSZXBDb21taXREYXRhIGNvbW1p dF9kYXRhOwotCi0JaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQotCQllcmVwb3J0KEVSUk9S LAotCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKLQkJCQkgZXJybXNn X2ludGVybmFsKCJTVFJFQU0gQ09NTUlUIG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RPUCIpKSk7 Ci0KLQl4aWQgPSBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2NvbW1pdChzLCAmY29tbWl0X2RhdGEp OwotCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoeGlkLCBjb21taXRfZGF0YS5jb21taXRf bHNuKTsKLQotCWVsb2coREVCVUcxLCAicmVjZWl2ZWQgY29tbWl0IGZvciBzdHJlYW1lZCB0cmFu c2FjdGlvbiAldSIsIHhpZCk7Ci0KLQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHhpZCwgY29tbWl0 X2RhdGEuY29tbWl0X2xzbik7Ci0KLQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21t aXRfZGF0YSk7Ci0KLQkvKiB1bmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2Vz IGFuZCBzdWJ4YWN0IGluZm8gKi8KLQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBX b3JrZXItPnN1YmlkLCB4aWQpOwotCi0JLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJl aW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KLQlwcm9jZXNzX3N5bmNpbmdfdGFibGVz KGNvbW1pdF9kYXRhLmVuZF9sc24pOwotCi0JcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9J RExFLCBOVUxMKTsKLQotCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwotfQotCiAv KgogICogSGVscGVyIGZ1bmN0aW9uIGZvciBhcHBseV9oYW5kbGVfY29tbWl0IGFuZCBhcHBseV9o YW5kbGVfc3RyZWFtX2NvbW1pdC4KICAqLwpAQCAtMjQ0OCwxMSArMjY4NSwxMDUgQEAgYXBwbHlf aGFuZGxlX3RydW5jYXRlKFN0cmluZ0luZm8gcykKIAllbmRfcmVwbGljYXRpb25fc3RlcCgpOwog fQogCisvKgorICogSGFuZGxlIFNUUkVBTSBDT01NSVQgbWVzc2FnZS4KKyAqLworc3RhdGljIHZv aWQKK2FwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykKK3sKKwlMb2dpY2Fs UmVwQ29tbWl0RGF0YSBjb21taXRfZGF0YTsKKwlUcmFuc2FjdGlvbklkIHhpZDsKKworCWlmIChp bl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCisJCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFN IENPTU1JVCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUT1AiKSkpOworCisJeGlkID0gbG9naWNh bHJlcF9yZWFkX3N0cmVhbV9jb21taXQocywgJmNvbW1pdF9kYXRhKTsKKwlzZXRfYXBwbHlfZXJy b3JfY29udGV4dF94YWN0KHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CisKKwlpZiAoYW1f YXBwbHlfYmd3b3JrZXIoKSkKKwl7CisJCS8qCisJCSAqIFVwZGF0ZSBvcmlnaW4gc3RhdGUgc28g d2UgY2FuIHJlc3RhcnQgc3RyZWFtaW5nIGZyb20gY29ycmVjdAorCQkgKiBwb3NpdGlvbiBpbiBj YXNlIG9mIGNyYXNoLgorCQkgKi8KKwkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24gPSBj b21taXRfZGF0YS5lbmRfbHNuOworCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFt cCA9IGNvbW1pdF9kYXRhLmNvbW1pdHRpbWU7CisKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5k KCk7CisJCUVuZFRyYW5zYWN0aW9uQmxvY2soZmFsc2UpOworCQlDb21taXRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKKworCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKworCQlwZ3N0YXRf cmVwb3J0X3N0YXQoZmFsc2UpOworCisJCWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7CisJCXN1Ynhh Y3RsaXN0ID0gTklMOworCisJCWFwcGx5X2Jnd29ya2VyX3NldF9zdGF0dXMoQVBQTFlfQkdXT1JL RVJfRklOSVNIRUQpOworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBUaGlzIGlzIHRoZSBtYWlu IGFwcGx5IHdvcmtlci4gQ2hlY2sgaWYgd2UgYXJlIHByb2Nlc3NpbmcgdGhpcworCQkgKiB0cmFu c2FjdGlvbiBpbiBhbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4KKwkJICovCisJCUFwcGx5Qmd3 b3JrZXJTdGF0ZSAqd3N0YXRlID0gYXBwbHlfYmd3b3JrZXJfZmluZF9vcl9zdGFydCh4aWQsIGZh bHNlKTsKKworCQllbG9nKERFQlVHMSwgInJlY2VpdmVkIGNvbW1pdCBmb3Igc3RyZWFtZWQgdHJh bnNhY3Rpb24gJXUiLCB4aWQpOworCisJCWlmICh3c3RhdGUpCisJCXsKKwkJCS8qIFNlbmQgY29t bWl0IG1lc3NhZ2UgKi8KKwkJCWFwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YSh3c3RhdGUsIHMtPmxl biwgcy0+ZGF0YSk7CisKKwkJCS8qIFdhaXQgZm9yIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHRv IGZpbmlzaCAqLworCQkJYXBwbHlfYmd3b3JrZXJfd2FpdF9mb3Iod3N0YXRlLCBBUFBMWV9CR1dP UktFUl9GSU5JU0hFRCk7CisKKwkJCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CisJCQlzdG9y ZV9mbHVzaF9wb3NpdGlvbihjb21taXRfZGF0YS5lbmRfbHNuKTsKKwkJCXN0b3Bfc2tpcHBpbmdf Y2hhbmdlcygpOworCisJCQlhcHBseV9iZ3dvcmtlcl9mcmVlKHdzdGF0ZSk7CisKKwkJCS8qCisJ CQkgKiBUaGUgdHJhbnNhY3Rpb24gaXMgZWl0aGVyIG5vbi1lbXB0eSBvciBza2lwcGVkLCBzbyB3 ZSBjbGVhciB0aGUKKwkJCSAqIHN1YnNraXBsc24uCisJCQkgKi8KKwkJCWNsZWFyX3N1YnNjcmlw dGlvbl9za2lwX2xzbihjb21taXRfZGF0YS5jb21taXRfbHNuKTsKKwkJfQorCQllbHNlCisJCXsK KwkJCS8qCisJCQkgKiBUaGlzIGlzIHRoZSBtYWluIGFwcGx5IHdvcmtlciBhbmQgdGhlIHRyYW5z YWN0aW9uIGhhcyBiZWVuCisJCQkgKiBzZXJpYWxpemVkIHRvIGZpbGUsIHJlcGxheSBhbGwgdGhl IHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJCSAqLworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyh4 aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCisJCQlhcHBseV9oYW5kbGVfY29tbWl0X2lu dGVybmFsKCZjb21taXRfZGF0YSk7CisKKwkJCS8qIHVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJp YWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mbyAqLworCQkJc3RyZWFtX2NsZWFudXBfZmls ZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKKwkJfQorCX0KKworCS8qIENoZWNr IHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaWYgYW55LiAqLworCWFwcGx5 X2Jnd29ya2VyX2NoZWNrX3N0YXR1cygpOworCisJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQg YXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KKwlwcm9jZXNzX3N5bmNpbmdf dGFibGVzKGNvbW1pdF9kYXRhLmVuZF9sc24pOworCisJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShT VEFURV9JRExFLCBOVUxMKTsKKworCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwor fQogCiAvKgogICogTG9naWNhbCByZXBsaWNhdGlvbiBwcm90b2NvbCBtZXNzYWdlIGRpc3BhdGNo ZXIuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMp CiB7CiAJTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uID0gcHFfZ2V0bXNnYnl0ZShzKTsKQEAgLTI2 MjEsNiArMjk1MiwxMCBAQCBzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9s c24pCiB7CiAJRmx1c2hQb3NpdGlvbiAqZmx1c2hwb3M7CiAKKwkvKiBXZSBvbmx5IG5lZWQgdG8g Y29sbGVjdCB0aGUgTFNOIGluIG1haW4gYXBwbHkgd29ya2VyICovCisJaWYgKGFtX2FwcGx5X2Jn d29ya2VyKCkpCisJCXJldHVybjsKKwogCS8qIE5lZWQgdG8gZG8gdGhpcyBpbiBwZXJtYW5lbnQg Y29udGV4dCAqLwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOwogCkBAIC0y NjM1LDcgKzI5NzAsNyBAQCBzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9s c24pCiAKIAogLyogVXBkYXRlIHN0YXRpc3RpY3Mgb2YgdGhlIHdvcmtlci4gKi8KLXN0YXRpYyB2 b2lkCit2b2lkCiBVcGRhdGVXb3JrZXJTdGF0cyhYTG9nUmVjUHRyIGxhc3RfbHNuLCBUaW1lc3Rh bXBUeiBzZW5kX3RpbWUsIGJvb2wgcmVwbHkpCiB7CiAJTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0 X2xzbiA9IGxhc3RfbHNuOwpAQCAtMjc5Nyw2ICszMTMyLDkgQEAgTG9naWNhbFJlcEFwcGx5TG9v cChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAJCQlBY2NlcHRJbnZhbGlkYXRpb25NZXNzYWdl cygpOwogCQkJbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbigpOwogCisJCQkvKiBDaGVjayB0aGUg c3RhdHVzIG9mIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIGlmIGFueS4gKi8KKwkJCWFwcGx5X2Jn d29ya2VyX2NoZWNrX3N0YXR1cygpOworCiAJCQkvKiBQcm9jZXNzIGFueSB0YWJsZSBzeW5jaHJv bml6YXRpb24gY2hhbmdlcy4gKi8KIAkJCXByb2Nlc3Nfc3luY2luZ190YWJsZXMobGFzdF9yZWNl aXZlZCk7CiAJCX0KQEAgLTMwOTgsNyArMzQzNiw3IEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRp b24odm9pZCkKIC8qCiAgKiBDYWxsYmFjayBmcm9tIHN1YnNjcmlwdGlvbiBzeXNjYWNoZSBpbnZh bGlkYXRpb24uCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBzdWJzY3JpcHRpb25fY2hhbmdlX2Ni KERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiB7CiAJTXlTdWJzY3Jp cHRpb25WYWxpZCA9IGZhbHNlOwpAQCAtMzY5NCw3ICs0MDMyLDcgQEAgQXBwbHlXb3JrZXJNYWlu KERhdHVtIG1haW5fYXJnKQogCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5u YW1lLCB0cnVlKTsKIAkJaWYgKCFPaWRJc1ZhbGlkKG9yaWdpbmlkKSkKIAkJCW9yaWdpbmlkID0g cmVwbG9yaWdpbl9jcmVhdGUob3JpZ2lubmFtZSk7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1 cChvcmlnaW5pZCk7CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgdHJ1ZSk7 CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKIAkJb3JpZ2luX3N0YXJ0 cG9zID0gcmVwbG9yaWdpbl9zZXNzaW9uX2dldF9wcm9ncmVzcyhmYWxzZSk7CiAJCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOwpAQCAtMzc0MSw3ICs0MDc5LDcgQEAgQXBwbHlXb3JrZXJNYWlu KERhdHVtIG1haW5fYXJnKQogCiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLnB1YmxpY2F0aW9uX25h bWVzID0gTXlTdWJzY3JpcHRpb24tPnB1YmxpY2F0aW9uczsKIAlvcHRpb25zLnByb3RvLmxvZ2lj YWwuYmluYXJ5ID0gTXlTdWJzY3JpcHRpb24tPmJpbmFyeTsKLQlvcHRpb25zLnByb3RvLmxvZ2lj YWwuc3RyZWFtaW5nID0gTXlTdWJzY3JpcHRpb24tPnN0cmVhbTsKKwlvcHRpb25zLnByb3RvLmxv Z2ljYWwuc3RyZWFtaW5nID0gKE15U3Vic2NyaXB0aW9uLT5zdHJlYW0gIT0gU1VCU1RSRUFNX09G Rik7CiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLnR3b3BoYXNlID0gZmFsc2U7CiAKIAlpZiAoIWFt X3RhYmxlc3luY193b3JrZXIoKSkKQEAgLTM4OTksNyArNDIzNyw4IEBAIGNsZWFyX3N1YnNjcmlw dGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlzaF9sc24pCiAJWExvZ1JlY1B0cglteXNraXBs c24gPSBNeVN1YnNjcmlwdGlvbi0+c2tpcGxzbjsKIAlib29sCQlzdGFydGVkX3R4ID0gZmFsc2U7 CiAKLQlpZiAobGlrZWx5KFhMb2dSZWNQdHJJc0ludmFsaWQobXlza2lwbHNuKSkpCisJaWYgKGxp a2VseShYTG9nUmVjUHRySXNJbnZhbGlkKG15c2tpcGxzbikpIHx8CisJCWFtX2FwcGx5X2Jnd29y a2VyKCkpCiAJCXJldHVybjsKIAogCWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCkBAIC0zOTcx LDcgKzQzMTAsNyBAQCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5p c2hfbHNuKQogfQogCiAvKiBFcnJvciBjYWxsYmFjayB0byBnaXZlIG1vcmUgY29udGV4dCBpbmZv IGFib3V0IHRoZSBjaGFuZ2UgYmVpbmcgYXBwbGllZCAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIGFw cGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykKIHsKIAlBcHBseUVycm9yQ2FsbGJhY2tBcmcg KmVycmFyZyA9ICZhcHBseV9lcnJvcl9jYWxsYmFja19hcmc7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCA4ZGVhZTU3MTQzLi42ZWJmYTI0YmFmIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTE4MzMs NyArMTgzMyw3IEBAIHBnb3V0cHV0X3N0cmVhbV9hYm9ydChzdHJ1Y3QgTG9naWNhbERlY29kaW5n Q29udGV4dCAqY3R4LAogCUFzc2VydChyYnR4bl9pc19zdHJlYW1lZCh0b3B0eG4pKTsKIAogCU91 dHB1dFBsdWdpblByZXBhcmVXcml0ZShjdHgsIHRydWUpOwotCWxvZ2ljYWxyZXBfd3JpdGVfc3Ry ZWFtX2Fib3J0KGN0eC0+b3V0LCB0b3B0eG4tPnhpZCwgdHhuLT54aWQpOworCWxvZ2ljYWxyZXBf d3JpdGVfc3RyZWFtX2Fib3J0KGN0eC0+b3V0LCB0b3B0eG4tPnhpZCwgdHhuLCBhYm9ydF9sc24p OwogCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7CiAKIAljbGVhbnVwX3JlbF9zeW5jX2Nh Y2hlKHRvcHR4bi0+eGlkLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h Y3Rpdml0eS93YWl0X2V2ZW50LmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2 ZW50LmMKaW5kZXggODdjMTViOWM2Zi4uYmE3ODFlNmYwOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3dhaXRfZXZlbnQuYwpAQCAtMzg4LDYgKzM4OCw5IEBAIHBnc3RhdF9nZXRfd2FpdF9p cGMoV2FpdEV2ZW50SVBDIHcpCiAJCWNhc2UgV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19S RUlOU0VSVDoKIAkJCWV2ZW50X25hbWUgPSAiSGFzaEdyb3dCdWNrZXRzUmVpbnNlcnQiOwogCQkJ YnJlYWs7CisJCWNhc2UgV0FJVF9FVkVOVF9MT0dJQ0FMX0FQUExZX1dPUktFUl9TVEFURV9DSEFO R0U6CisJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxBcHBseVdvcmtlclN0YXRlQ2hhbmdlIjsKKwkJ CWJyZWFrOwogCQljYXNlIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RBVEE6CiAJCQlldmVudF9u YW1lID0gIkxvZ2ljYWxTeW5jRGF0YSI7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCmluZGV4 IGE3Y2M0OTg5OGIuLmQwNWUxZDJkZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwpAQCAtMzIyMCw2ICsz MjIwLDE4IEBAIHN0YXRpYyBzdHJ1Y3QgY29uZmlnX2ludCBDb25maWd1cmVOYW1lc0ludFtdID0K IAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCiAKKwl7CisJCXsibWF4X2FwcGx5X2Jnd29ya2Vyc19w ZXJfc3Vic2NyaXB0aW9uIiwKKwkJCVBHQ19TSUdIVVAsCisJCQlSRVBMSUNBVElPTl9TVUJTQ1JJ QkVSUywKKwkJCWdldHRleHRfbm9vcCgiTWF4aW11bSBudW1iZXIgb2YgYXBwbHkgYmFja2dyYW5k IHdvcmtlcnMgcGVyIHN1YnNjcmlwdGlvbi4iKSwKKwkJCU5VTEwsCisJCX0sCisJCSZtYXhfYXBw bHlfYmd3b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24sCisJCTIsIDAsIE1BWF9CQUNLRU5EUywKKwkJ TlVMTCwgTlVMTCwgTlVMTAorCX0sCisKIAl7CiAJCXsibG9nX3JvdGF0aW9uX2FnZSIsIFBHQ19T SUdIVVAsIExPR0dJTkdfV0hFUkUsCiAJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIGFtb3VudCBv ZiB0aW1lIHRvIHdhaXQgYmVmb3JlIGZvcmNpbmcgIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IDQ4YWQ4MGNmMmUuLjI5MjgwOGRkODMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQor KysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTM2 MCw2ICszNjAsNyBAQAogI21heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0CSMgdGFr ZW4gZnJvbSBtYXhfd29ya2VyX3Byb2Nlc3NlcwogCQkJCQkjIChjaGFuZ2UgcmVxdWlyZXMgcmVz dGFydCkKICNtYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyCSMgdGFrZW4gZnJv bSBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzCisjbWF4X2FwcGx5X2Jnd29ya2Vyc19w ZXJfc3Vic2NyaXB0aW9uID0gMgkjIHRha2VuIGZyb20gbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25f d29ya2VycwogCiAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDdjYzlj NzJlNDkuLjZmOGIzMGFiYjAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMK KysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNDQ1MCw3ICs0NDUwLDcgQEAgZ2V0 U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49 IDE0MDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgcy5zdWJzdHJlYW0sXG4i KTsKIAllbHNlCi0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIGZhbHNlIEFTIHN1YnN0 cmVhbSxcbiIpOworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiAnZicgQVMgc3Vic3Ry ZWFtLFxuIik7CiAKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNTAwMDApCiAJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LApAQCAtNDU4MCw4ICs0NTgwLDEwIEBAIGR1bXBTdWJzY3Jp cHRpb24oQXJjaGl2ZSAqZm91dCwgY29uc3QgU3Vic2NyaXB0aW9uSW5mbyAqc3ViaW5mbykKIAlp ZiAoc3RyY21wKHN1YmluZm8tPnN1YmJpbmFyeSwgInQiKSA9PSAwKQogCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwgIiwgYmluYXJ5ID0gdHJ1ZSIpOwogCi0JaWYgKHN0cmNtcChzdWJpbmZv LT5zdWJzdHJlYW0sICJmIikgIT0gMCkKKwlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwg InQiKSA9PSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgc3RyZWFtaW5nID0g b24iKTsKKwllbHNlIGlmIChzdHJjbXAoc3ViaW5mby0+c3Vic3RyZWFtLCAiYSIpID09IDApCisJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBzdHJlYW1pbmcgPSBhcHBseSIpOwogCiAJ aWYgKHN0cmNtcChzdWJpbmZvLT5zdWJ0d29waGFzZXN0YXRlLCB0d29fcGhhc2VfZGlzYWJsZWQp ICE9IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCB0d29fcGhhc2UgPSBvbiIp OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKaW5kZXggZDEyNjBmNTkwYy4uOWIz OTRhNDVmZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24u aAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBAIC02OCw3ICs2 OCw4IEBAIENBVEFMT0cocGdfc3Vic2NyaXB0aW9uLDYxMDAsU3Vic2NyaXB0aW9uUmVsYXRpb25J ZCkgQktJX1NIQVJFRF9SRUxBVElPTiBCS0lfUk9XCiAJYm9vbAkJc3ViYmluYXJ5OwkJLyogVHJ1 ZSBpZiB0aGUgc3Vic2NyaXB0aW9uIHdhbnRzIHRoZQogCQkJCQkJCQkgKiBwdWJsaXNoZXIgdG8g c2VuZCBkYXRhIGluIGJpbmFyeSAqLwogCi0JYm9vbAkJc3Vic3RyZWFtOwkJLyogU3RyZWFtIGlu LXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gKi8KKwljaGFyCQlzdWJzdHJlYW07CQkvKiBTdHJlYW0g aW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLgorCQkJCQkJCQkgKiBTZWUgU1VCU1RSRUFNX3h4eCBj b25zdGFudHMuICovCiAKIAljaGFyCQlzdWJ0d29waGFzZXN0YXRlOwkvKiBTdHJlYW0gdHdvLXBo YXNlIHRyYW5zYWN0aW9ucyAqLwogCkBAIC0xMDksNyArMTEwLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg U3Vic2NyaXB0aW9uCiAJYm9vbAkJZW5hYmxlZDsJCS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2Ny aXB0aW9uIGlzIGVuYWJsZWQgKi8KIAlib29sCQliaW5hcnk7CQkJLyogSW5kaWNhdGVzIGlmIHRo ZSBzdWJzY3JpcHRpb24gd2FudHMgZGF0YSBpbgogCQkJCQkJCQkgKiBiaW5hcnkgZm9ybWF0ICov Ci0JYm9vbAkJc3RyZWFtOwkJCS8qIEFsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2Fj dGlvbnMuICovCisJY2hhcgkJc3RyZWFtOwkJCS8qIEFsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVz cyB0cmFuc2FjdGlvbnMuICovCiAJY2hhcgkJdHdvcGhhc2VzdGF0ZTsJLyogQWxsb3cgc3RyZWFt aW5nIHR3by1waGFzZSB0cmFuc2FjdGlvbnMgKi8KIAlib29sCQlkaXNhYmxlb25lcnI7CS8qIElu ZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIHNob3VsZCBiZQogCQkJCQkJCQkgKiBhdXRvbWF0 aWNhbGx5IGRpc2FibGVkIGlmIGEgd29ya2VyIGVycm9yCkBAIC0xMjAsNiArMTIxLDE4IEBAIHR5 cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCUxpc3QJICAgKnB1YmxpY2F0aW9uczsJLyogTGlz dCBvZiBwdWJsaWNhdGlvbiBuYW1lcyB0byBzdWJzY3JpYmUgdG8gKi8KIH0gU3Vic2NyaXB0aW9u OwogCisvKiBEaXNhbGxvdyBzdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zICovCisj ZGVmaW5lIFNVQlNUUkVBTV9PRkYJJ2YnCisKKy8qCisgKiBTdHJlYW1pbmcgdHJhbnNhY3Rpb25z IGFyZSB3cml0dGVuIHRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kIGFwcGxpZWQgb25seQorICogYWZ0 ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiB1cHN0cmVhbS4KKyAqLworI2RlZmlu ZSBTVUJTVFJFQU1fT04JJ3QnCisKKy8qIFN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYXJlIGFwcGxp ZWQgaW1tZWRpYXRlbHkgdmlhIGEgYmFja2dyb3VuZCB3b3JrZXIgKi8KKyNkZWZpbmUgU1VCU1RS RUFNX0FQUExZCSdhJworCiBleHRlcm4gU3Vic2NyaXB0aW9uICpHZXRTdWJzY3JpcHRpb24oT2lk IHN1YmlkLCBib29sIG1pc3Npbmdfb2spOwogZXh0ZXJuIHZvaWQgRnJlZVN1YnNjcmlwdGlvbihT dWJzY3JpcHRpb24gKnN1Yik7CiBleHRlcm4gdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uKE9pZCBz dWJpZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNo ZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCmluZGV4IGYx ZTI4MjFlMjUuLmFjOGVmOTQzODEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2xvZ2ljYWxsYXVuY2hlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxs YXVuY2hlci5oCkBAIC0xNCw2ICsxNCw3IEBACiAKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4 X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VyczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4 X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBt YXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9zdWJzY3JpcHRpb247CiAKIGV4dGVybiB2b2lkIEFwcGx5 TGF1bmNoZXJSZWdpc3Rlcih2b2lkKTsKIGV4dGVybiB2b2lkIEFwcGx5TGF1bmNoZXJNYWluKERh dHVtIG1haW5fYXJnKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWxwcm90by5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKaW5kZXgg YTc3MWFiOGZmMy4uN2JiYTc3YzllNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vbG9naWNhbHByb3RvLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHBy b3RvLmgKQEAgLTE3NSw2ICsxNzUsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJvbGxi YWNrUHJlcGFyZWRUeG5EYXRhCiAJY2hhcgkJZ2lkW0dJRFNJWkVdOwogfSBMb2dpY2FsUmVwUm9s bGJhY2tQcmVwYXJlZFR4bkRhdGE7CiAKKy8qCisgKiBUcmFuc2FjdGlvbiBwcm90b2NvbCBpbmZv cm1hdGlvbiBmb3Igc3RyZWFtIGFib3J0LgorICovCit0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVw U3RyZWFtQWJvcnREYXRhCit7CisJVHJhbnNhY3Rpb25JZCB4aWQ7CisJVHJhbnNhY3Rpb25JZCBz dWJ4aWQ7CisJWExvZ1JlY1B0cglhYm9ydF9sc247CisJVGltZXN0YW1wVHogYWJvcnRfdGltZTsK K30gTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YTsKKwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93 cml0ZV9iZWdpbihTdHJpbmdJbmZvIG91dCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuKTsKIGV4dGVy biB2b2lkIGxvZ2ljYWxyZXBfcmVhZF9iZWdpbihTdHJpbmdJbmZvIGluLAogCQkJCQkJCQkgIExv Z2ljYWxSZXBCZWdpbkRhdGEgKmJlZ2luX2RhdGEpOwpAQCAtMjQ2LDkgKzI1NywxMSBAQCBleHRl cm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBvdXQsIFJl b3JkZXJCdWZmZXJUWE4gKnR4bgogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgbG9naWNhbHJlcF9yZWFk X3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBvdXQsCiAJCQkJCQkJCQkJCQkgICBMb2dpY2FsUmVw Q29tbWl0RGF0YSAqY29tbWl0X2RhdGEpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9z dHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLAotCQkJCQkJCQkJ CSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQpOwotZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWFkX3N0 cmVhbV9hYm9ydChTdHJpbmdJbmZvIGluLCBUcmFuc2FjdGlvbklkICp4aWQsCi0JCQkJCQkJCQkJ IFRyYW5zYWN0aW9uSWQgKnN1YnhpZCk7CisJCQkJCQkJCQkJICBSZW9yZGVyQnVmZmVyVFhOICp0 eG4sCisJCQkJCQkJCQkJICBYTG9nUmVjUHRyIGFib3J0X2xzbik7CitleHRlcm4gdm9pZCBsb2dp Y2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sCisJCQkJCQkJCQkJIExvZ2lj YWxSZXBTdHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEsCisJCQkJCQkJCQkJIGJvb2wgaW5jbHVk ZV9hYm9ydF9sc24pOwogZXh0ZXJuIGNoYXIgKmxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKExvZ2lj YWxSZXBNc2dUeXBlIGFjdGlvbik7CiAKICNlbmRpZgkJCQkJCQkvKiBMT0dJQ0FMX1BST1RPX0gg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaAppbmRleCBjZDFiNmU4YWZj Li42YTFhZjdmMTNjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fs d29ya2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCkBA IC0xMyw2ICsxMyw3IEBACiAjZGVmaW5lIExPR0lDQUxXT1JLRVJfSAogCiBleHRlcm4gdm9pZCBB cHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpOworZXh0ZXJuIHZvaWQgQXBwbHlCZ3dvcmtl ck1haW4oRGF0dW0gbWFpbl9hcmcpOwogCiBleHRlcm4gYm9vbCBJc0xvZ2ljYWxXb3JrZXIodm9p ZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKaW5kZXggMmQxYjVlNWMyOC4uYzczODliNDBh NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKKysrIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKQEAgLTUzLDcgKzUzLDcgQEAgZXh0ZXJuIFhM b2dSZWNQdHIgcmVwbG9yaWdpbl9nZXRfcHJvZ3Jlc3MoUmVwT3JpZ2luSWQgbm9kZSwgYm9vbCBm bHVzaCk7CiAKIGV4dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lvbl9hZHZhbmNlKFhMb2dSZWNQ dHIgcmVtb3RlX2NvbW1pdCwKIAkJCQkJCQkJCSAgIFhMb2dSZWNQdHIgbG9jYWxfY29tbWl0KTsK LWV4dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlKTsK K2V4dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlLCBi b29sIG11c3RfYWNxdWlyZSk7CiBleHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fcmVzZXQo dm9pZCk7CiBleHRlcm4gWExvZ1JlY1B0ciByZXBsb3JpZ2luX3Nlc3Npb25fZ2V0X3Byb2dyZXNz KGJvb2wgZmx1c2gpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9y ZGVyYnVmZmVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKaW5k ZXggNGEwMWY4NzdlNS4uYWJhMTY0MGY0ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vcmVvcmRlcmJ1ZmZlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3Jk ZXJidWZmZXIuaApAQCAtMzAxLDYgKzMwMSw3IEBAIHR5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZm ZXJUWE4KIAl7CiAJCVRpbWVzdGFtcFR6IGNvbW1pdF90aW1lOwogCQlUaW1lc3RhbXBUeiBwcmVw YXJlX3RpbWU7CisJCVRpbWVzdGFtcFR6IGFib3J0X3RpbWU7CiAJfQkJCXhhY3RfdGltZTsKIAog CS8qCkBAIC02NDcsOSArNjQ4LDExIEBAIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJGaW5pc2hQ cmVwYXJlZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiBleHRlcm4gdm9p ZCBSZW9yZGVyQnVmZmVyQXNzaWduQ2hpbGQoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklk LCBUcmFuc2FjdGlvbklkLCBYTG9nUmVjUHRyIGNvbW1pdF9sc24pOwogZXh0ZXJuIHZvaWQgUmVv cmRlckJ1ZmZlckNvbW1pdENoaWxkKFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgVHJh bnNhY3Rpb25JZCwKIAkJCQkJCQkJCSBYTG9nUmVjUHRyIGNvbW1pdF9sc24sIFhMb2dSZWNQdHIg ZW5kX2xzbik7Ci1leHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAq LCBUcmFuc2FjdGlvbklkLCBYTG9nUmVjUHRyIGxzbik7CitleHRlcm4gdm9pZCBSZW9yZGVyQnVm ZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBYTG9nUmVjUHRyIGxzbiwK KwkJCQkJCQkgICBUaW1lc3RhbXBUeiBhYm9ydF90aW1lKTsKIGV4dGVybiB2b2lkIFJlb3JkZXJC dWZmZXJBYm9ydE9sZChSZW9yZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQgeGlkKTsKLWV4dGVy biB2b2lkIFJlb3JkZXJCdWZmZXJGb3JnZXQoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklk LCBYTG9nUmVjUHRyIGxzbik7CitleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3Jk ZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJCQkJCVRpbWVz dGFtcFR6IGFib3J0X3RpbWUpOwogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckludmFsaWRhdGUo UmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBYTG9nUmVjUHRyIGxzbik7CiAKIGV4dGVy biB2b2lkIFJlb3JkZXJCdWZmZXJTZXRCYXNlU25hcHNob3QoUmVvcmRlckJ1ZmZlciAqLCBUcmFu c2FjdGlvbklkLCBYTG9nUmVjUHRyIGxzbiwgc3RydWN0IFNuYXBzaG90RGF0YSAqc25hcCk7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IDkwMTg0NWFiYzIu LjAzMDI4MzZkZWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9p bnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5o CkBAIC0xNyw4ICsxNywxMSBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiZGF0YXR5cGUvdGltZXN0 YW1wLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9maWxlc2V0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sb2NrLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9zaG1fbXEuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobV90b2MuaCIKICNpbmNs dWRlICJzdG9yYWdlL3NwaW4uaCIKIAogCkBAIC02MCw2ICs2Myw5IEBAIHR5cGVkZWYgc3RydWN0 IExvZ2ljYWxSZXBXb3JrZXIKIAkgKi8KIAlGaWxlU2V0ICAgICpzdHJlYW1fZmlsZXNldDsKIAor CS8qIEluZGljYXRlcyBpZiB0aGlzIHNsb3QgaXMgdXNlZCBmb3IgYW4gYXBwbHkgYmFja2dyb3Vu ZCB3b3JrZXIuICovCisJYm9vbAkJc3Vid29ya2VyOworCiAJLyogU3RhdHMuICovCiAJWExvZ1Jl Y1B0cglsYXN0X2xzbjsKIAlUaW1lc3RhbXBUeiBsYXN0X3NlbmRfdGltZTsKQEAgLTY4LDkgKzc0 LDY5IEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBXb3JrZXIKIAlUaW1lc3RhbXBUeiByZXBs eV90aW1lOwogfSBMb2dpY2FsUmVwV29ya2VyOwogCisvKiBTdHJ1Y3QgZm9yIHNhdmluZyBhbmQg cmVzdG9yaW5nIGFwcGx5IGVycmNvbnRleHQgaW5mb3JtYXRpb24gKi8KK3R5cGVkZWYgc3RydWN0 IEFwcGx5RXJyb3JDYWxsYmFja0FyZworeworCUxvZ2ljYWxSZXBNc2dUeXBlIGNvbW1hbmQ7CS8q IDAgaWYgaW52YWxpZCAqLworCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsOworCisJLyogUmVt b3RlIG5vZGUgaW5mb3JtYXRpb24gKi8KKwlpbnQJCQlyZW1vdGVfYXR0bnVtOwkvKiAtMSBpZiBp bnZhbGlkICovCisJVHJhbnNhY3Rpb25JZCByZW1vdGVfeGlkOworCVhMb2dSZWNQdHIJZmluaXNo X2xzbjsKKwljaGFyCSAgICpvcmlnaW5fbmFtZTsKK30gQXBwbHlFcnJvckNhbGxiYWNrQXJnOwor CisvKgorICogU3RhdHVzIGZvciBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4KKyAqLwordHlwZWRl ZiBlbnVtIEFwcGx5Qmd3b3JrZXJTdGF0dXMKK3sKKwlBUFBMWV9CR1dPUktFUl9BVFRBQ0hFRCA9 IDAsCisJQVBQTFlfQkdXT1JLRVJfQlVTWSwKKwlBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCwKKwlB UFBMWV9CR1dPUktFUl9FWElUCit9IEFwcGx5Qmd3b3JrZXJTdGF0dXM7CisKKy8qCisgKiBTaGFy ZWQgaW5mb3JtYXRpb24gYW1vbmcgYXBwbHkgd29ya2Vycy4KKyAqLwordHlwZWRlZiBzdHJ1Y3Qg QXBwbHlCZ3dvcmtlclNoYXJlZAoreworCXNsb2NrX3QJbXV0ZXg7CisKKwkvKiBTdGF0dXMgZm9y IGFwcGx5IGJhY2tncm91bmQgd29ya2VyLiAqLworCUFwcGx5Qmd3b3JrZXJTdGF0dXMJc3RhdHVz OworCisJLyogc2VydmVyIHZlcnNpb24gb2YgcHVibGlzaGVyLiAqLworCWludCBzZXJ2ZXJfdmVy c2lvbjsKKworCVRyYW5zYWN0aW9uSWQJc3RyZWFtX3hpZDsKKwl1aW50MzIJbjsJLyogaWQgb2Yg YXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgKi8KK30gQXBwbHlCZ3dvcmtlclNoYXJlZDsKKworLyoK KyAqIFN0cnVjdCBmb3IgbWFpbnRhaW5pbmcgYW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuCisg Ki8KK3R5cGVkZWYgc3RydWN0IEFwcGx5Qmd3b3JrZXJTdGF0ZQoreworCXNobV9tcV9oYW5kbGUJ CQkqbXFfaGFuZGxlOworCWRzbV9zZWdtZW50CQkJCSpkc21fc2VnOworCUFwcGx5Qmd3b3JrZXJT aGFyZWQgdm9sYXRpbGUJKnBzdGF0ZTsKK30gQXBwbHlCZ3dvcmtlclN0YXRlOworCiAvKiBNYWlu IG1lbW9yeSBjb250ZXh0IGZvciBhcHBseSB3b3JrZXIuIFBlcm1hbmVudCBkdXJpbmcgd29ya2Vy IGxpZmV0aW1lLiAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIE1lbW9yeUNvbnRleHQgQXBwbHlDb250 ZXh0OwogCitleHRlcm4gUEdETExJTVBPUlQgTWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250 ZXh0OworCitleHRlcm4gUEdETExJTVBPUlQgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vy cm9yX2NhbGxiYWNrX2FyZzsKKworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgTXlTdWJzY3JpcHRp b25WYWxpZDsKKworZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIEFwcGx5Qmd3b3JrZXJTaGFy ZWQgKk15UGFyYWxsZWxTdGF0ZTsKK2V4dGVybiBQR0RMTElNUE9SVCBMaXN0ICpzdWJ4YWN0bGlz dDsKKwogLyogbGlicHFyZWNlaXZlciBjb25uZWN0aW9uICovCiBleHRlcm4gUEdETExJTVBPUlQg c3RydWN0IFdhbFJlY2VpdmVyQ29ubiAqTG9nUmVwV29ya2VyV2FsUmN2Q29ubjsKIApAQCAtNzks MTggKzE0NSwyMiBAQCBleHRlcm4gUEdETExJTVBPUlQgU3Vic2NyaXB0aW9uICpNeVN1YnNjcmlw dGlvbjsKIGV4dGVybiBQR0RMTElNUE9SVCBMb2dpY2FsUmVwV29ya2VyICpNeUxvZ2ljYWxSZXBX b3JrZXI7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIGluX3JlbW90ZV90cmFuc2FjdGlvbjsK K2V4dGVybiBQR0RMTElNUE9SVCBib29sIGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uOworZXh0ZXJu IFBHRExMSU1QT1JUIFRyYW5zYWN0aW9uSWQgc3RyZWFtX3hpZDsKIAogZXh0ZXJuIHZvaWQgbG9n aWNhbHJlcF93b3JrZXJfYXR0YWNoKGludCBzbG90KTsKIGV4dGVybiBMb2dpY2FsUmVwV29ya2Vy ICpsb2dpY2FscmVwX3dvcmtlcl9maW5kKE9pZCBzdWJpZCwgT2lkIHJlbGlkLAogCQkJCQkJCQkJ CQkJYm9vbCBvbmx5X3J1bm5pbmcpOwogZXh0ZXJuIExpc3QgKmxvZ2ljYWxyZXBfd29ya2Vyc19m aW5kKE9pZCBzdWJpZCwgYm9vbCBvbmx5X3J1bm5pbmcpOwotZXh0ZXJuIHZvaWQgbG9naWNhbHJl cF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUs Ci0JCQkJCQkJCQkgT2lkIHVzZXJpZCwgT2lkIHJlbGlkKTsKK2V4dGVybiBib29sIGxvZ2ljYWxy ZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1l LAorCQkJCQkJCQkJIE9pZCB1c2VyaWQsIE9pZCByZWxpZCwKKwkJCQkJCQkJCSBkc21faGFuZGxl IHN1Yndvcmtlcl9kc20pOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQg c3ViaWQsIE9pZCByZWxpZCk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl93YWtldXAo T2lkIHN1YmlkLCBPaWQgcmVsaWQpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2Fr ZXVwX3B0cihMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpOwogCiBleHRlcm4gaW50CWxvZ2ljYWxy ZXBfc3luY193b3JrZXJfY291bnQoT2lkIHN1YmlkKTsKK2V4dGVybiBpbnQJbG9naWNhbHJlcF9h cHBseV9iYWNrZ3JvdW5kX3dvcmtlcl9jb3VudChPaWQgc3ViaWQpOwogCiBleHRlcm4gdm9pZCBS ZXBsaWNhdGlvbk9yaWdpbk5hbWVGb3JUYWJsZXN5bmMoT2lkIHN1Ym9pZCwgT2lkIHJlbGlkLAog CQkJCQkJCQkJCQkgIGNoYXIgKm9yaWdpbm5hbWUsIGludCBzem9yZ25hbWUpOwpAQCAtMTAzLDEw ICsxNzMsMzkgQEAgZXh0ZXJuIHZvaWQgcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRy IGN1cnJlbnRfbHNuKTsKIGV4dGVybiB2b2lkIGludmFsaWRhdGVfc3luY2luZ190YWJsZV9zdGF0 ZXMoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwKIAkJCQkJCQkJCQkJdWludDMyIGhhc2h2YWx1ZSk7 CiAKK2V4dGVybiB2b2lkIFVwZGF0ZVdvcmtlclN0YXRzKFhMb2dSZWNQdHIgbGFzdF9sc24sIFRp bWVzdGFtcFR6IHNlbmRfdGltZSwKKwkJCQkJCQkgIGJvb2wgcmVwbHkpOworCisvKiBwcm90b3R5 cGUgbmVlZGVkIGJlY2F1c2Ugb2Ygc3RyZWFtX2NvbW1pdCAqLworZXh0ZXJuIHZvaWQgYXBwbHlf ZGlzcGF0Y2goU3RyaW5nSW5mbyBzKTsKKworLyogRnVuY3Rpb24gZm9yIGFwcGx5IGVycm9yIGNh bGxiYWNrICovCitleHRlcm4gdm9pZCBhcHBseV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOwor CitleHRlcm4gdm9pZCBzdWJzY3JpcHRpb25fY2hhbmdlX2NiKERhdHVtIGFyZywgaW50IGNhY2hl aWQsIHVpbnQzMiBoYXNodmFsdWUpOworCisvKiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBzZXR1 cCBhbmQgaW50ZXJhY3Rpb25zICovCitleHRlcm4gQXBwbHlCZ3dvcmtlclN0YXRlICphcHBseV9i Z3dvcmtlcl9maW5kX29yX3N0YXJ0KFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCQkJCQkJCQli b29sIHN0YXJ0KTsKK2V4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX3dhaXRfZm9yKEFwcGx5Qmd3 b3JrZXJTdGF0ZSAqd3N0YXRlLAorCQkJCQkJCQkJQXBwbHlCZ3dvcmtlclN0YXR1cyB3YWl0X2Zv cl9zdGF0dXMpOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfc2VuZF9kYXRhKEFwcGx5Qmd3 b3JrZXJTdGF0ZSAqd3N0YXRlLCBTaXplIG5ieXRlcywKKwkJCQkJCQkJCSBjb25zdCB2b2lkICpk YXRhKTsKK2V4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX2ZyZWUoQXBwbHlCZ3dvcmtlclN0YXRl ICp3c3RhdGUpOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKHZvaWQp OworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfc2V0X3N0YXR1cyhBcHBseUJnd29ya2VyU3Rh dHVzIHN0YXR1cyk7CitleHRlcm4gdm9pZCBhcHBseV9iZ3dvcmtlcl9zdWJ4YWN0X2luZm9fYWRk KFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQpOworCiBzdGF0aWMgaW5saW5lIGJvb2wKIGFtX3Rh Ymxlc3luY193b3JrZXIodm9pZCkKIHsKIAlyZXR1cm4gT2lkSXNWYWxpZChNeUxvZ2ljYWxSZXBX b3JrZXItPnJlbGlkKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sCithbV9hcHBseV9iZ3dvcmtl cih2b2lkKQoreworCXJldHVybiBNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YndvcmtlcjsKK30KKwog I2VuZGlmCQkJCQkJCS8qIFdPUktFUl9JTlRFUk5BTF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS91dGlscy93YWl0X2V2ZW50LmggYi9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgK aW5kZXggYjU3OGUyZWM3NS4uYzJkMmExMTRkNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRp bHMvd2FpdF9ldmVudC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaApAQCAt MTA1LDYgKzEwNSw3IEBAIHR5cGVkZWYgZW51bQogCVdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tF VFNfQUxMT0NBVEUsCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19FTEVDVCwKIAlXQUlU X0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX1JFSU5TRVJULAorCVdBSVRfRVZFTlRfTE9HSUNBTF9B UFBMWV9XT1JLRVJfU1RBVEVfQ0hBTkdFLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RBVEEs CiAJV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfU1RBVEVfQ0hBTkdFLAogCVdBSVRfRVZFTlRfTVFf SU5URVJOQUwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlw dGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKaW5k ZXggN2ZjZmFkMTU5MS4uZjc2OTgzNWFmMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv c3Vic2NyaXB0aW9uLm91dApAQCAtMTk3LDcgKzE5Nyw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiBy ZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKIERST1AgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YjsKIC0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuCiBD UkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZh bHNlLCBzdHJlYW1pbmcgPSBmb28pOwotRVJST1I6ICBzdHJlYW1pbmcgcmVxdWlyZXMgYSBCb29s ZWFuIHZhbHVlCitFUlJPUjogIHN0cmVhbWluZyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUgb3Ig ImFwcGx5IgogLS0gbm93IGl0IHdvcmtzCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9O IHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSB0cnVlKTsKIFdBUk5J Tkc6ICB0YWJsZXMgd2VyZSBub3Qgc3Vic2NyaWJlZCwgeW91IHdpbGwgaGF2ZSB0byBydW4gQUxU RVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBVQkxJQ0FUSU9OIHRvIHN1YnNjcmliZSB0aGUg dGFibGVzCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDRmYjc0NjkzMGEuLjY2NGQ0Yjhi MWEgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMTYsNiArMTE2LDEwIEBAIEFwcGVu ZAogQXBwZW5kUGF0aAogQXBwZW5kUmVsSW5mbwogQXBwZW5kU3RhdGUKK0FwcGx5Qmd3b3JrZXJF bnRyeQorQXBwbHlCZ3dvcmtlclNoYXJlZAorQXBwbHlCZ3dvcmtlclN0YXRlCitBcHBseUJnd29y a2VyU3RhdHVzCiBBcHBseUVycm9yQ2FsbGJhY2tBcmcKIEFwcGx5RXhlY3V0aW9uRGF0YQogQXBw bHlTdWJYYWN0RGF0YQpAQCAtMTQ4Myw2ICsxNDg3LDcgQEAgTG9naWNhbFJlcFJlbElkCiBMb2dp Y2FsUmVwUmVsTWFwRW50cnkKIExvZ2ljYWxSZXBSZWxhdGlvbgogTG9naWNhbFJlcFJvbGxiYWNr UHJlcGFyZWRUeG5EYXRhCitMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhCiBMb2dpY2FsUmVwVHVw bGVEYXRhCiBMb2dpY2FsUmVwVHlwCiBMb2dpY2FsUmVwV29ya2VyCi0tIAoyLjIzLjAud2luZG93 cy4xCgo= --_006_OS3PR01MB62753CDFD0DF1FCBC978AFB39EAF9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v12-0002-Test-streaming-apply-option-in-tap-test.patch" Content-Description: v12-0002-Test-streaming-apply-option-in-tap-test.patch Content-Disposition: attachment; filename="v12-0002-Test-streaming-apply-option-in-tap-test.patch"; size=70533; creation-date="Fri, 17 Jun 2022 07:12:00 GMT"; modification-date="Fri, 17 Jun 2022 07:17:06 GMT" Content-Transfer-Encoding: base64 RnJvbSA4N2RkZWQ3NWZiY2I3NTFlMGFhZjIwYWEwMGJjZTRlMjE3YjkyMWNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2MTIg Mi81XSBUZXN0IHN0cmVhbWluZyBhcHBseSBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBhbGwg VEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgb3B0aW9uLCBzbyB0 aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ2FwcGx5JyB2YWx1ZXMuCi0tLQogc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgIHwgMTk5ICsrKystLS0KIHNyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCB8IDExOSArKystLQogc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwgICAgIHwgMTg4ICsrKystLS0K IC4uLi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbCAgICAgICAgICAgICB8IDE5NSArKysr LS0tCiAuLi4vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsICAgICAgICAgfCAxMTAg KysrLQogLi4uL3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsICAgIHwgMzYz ICsrKysrKystLS0tLS0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBs ICAgICB8IDQ5OCArKysrKysrKysrLS0tLS0tLS0KIDcgZmlsZXMgY2hhbmdlZCwgMTAzNSBpbnNl cnRpb25zKCspLCA2MzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJl YW0ucGwKaW5kZXggNjU2MWIxODlkZS4uYjNkODRiMWM3YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMTVfc3RyZWFtLnBsCkBAIC04LDYgKzgsMTE2IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAK KyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRl ZCB0byAic3RyZWFtaW5nIiBvcHRpb24KKyMgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJv dGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kIHN0cmVhbWluZz1hcHBseQorIyBjYXNlcy4KK3N1 YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmli ZXIsICRhcHBuYW1lLCAkaXNfYXBwbHkpID0gQF87CisKKwkjIEludGVybGVhdmUgYSBwYWlyIG9m IHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0IgbGltaXQuCisJbXkgJGluICA9 ICcnOworCW15ICRvdXQgPSAnJzsKKworCW15ICR0aW1lciA9IElQQzo6UnVuOjp0aW1lb3V0KCRQ b3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKKworCW15ICRoID0gJG5v ZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwgXCRvdXQsICR0 aW1lciwKKwkJb25fZXJyb3Jfc3RvcCA9PiAwKTsKKworCSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91 bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBvcHRpb24gaXMKKwkjIHNwZWNpZmllZCBh cyAiYXBwbHkiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcwor CSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4K KwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9k ZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJJGluIC49IHF7CisJQkVHSU47CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygzLCA1MDAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBt b2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwor CX07CisJJGgtPnB1bXBfbmI7CisKKwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vic2Ny aWJlci0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJ CSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxv Z19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsK Kwl9CisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlC RUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7CisJREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgYSA+IDUwMDA7CisJQ09NTUlUOworCX0pOworCisJJGluIC49IHF7CisJQ09NTUlUOwor CVxxCisJfTsKKwkkaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFp bCwgc28gaWdub3JlIHRoZW0gaGVyZQorCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChk ID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQp LAorCQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJyk7CisKKwkj IFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQorCSRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChi aW5hcnkgPSBvbikiKTsKKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93 cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo CisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhpKTsK KwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlDT01NSVQ7CisJfSk7CisK Kwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJJHJlc3Vs dCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVD VCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlp cygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNv bnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKworCSMgQ2hhbmdlIHRoZSBsb2NhbCB2YWx1ZXMgb2Yg dGhlIGV4dHJhIGNvbHVtbnMgb24gdGhlIHN1YnNjcmliZXIsCisJIyB1cGRhdGUgcHVibGlzaGVy LCBhbmQgY2hlY2sgdGhhdCBzdWJzY3JpYmVyIHJldGFpbnMgdGhlIGV4cGVjdGVkCisJIyB2YWx1 ZXMuIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVo YXZlCisJIyBwcm9wZXJseSBhZnRlciBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KKwkkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlVQREFURSB0ZXN0X3RhYiBTRVQg YyA9ICdlcG9jaCc6OnRpbWVzdGFtcHR6ICsgOTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKKwkp OworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJVUERBVEUgdGVz dF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4dCkiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGV4dHJhY3QoZXBv Y2ggZnJvbSBjKSA9IDk4NzY1NDMyMSksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiCisJ KTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCisJCSdjaGVjayBleHRyYSBjb2x1 bW5zIGNvbnRhaW4gbG9jYWxseSBjaGFuZ2VkIGRhdGEnKTsKKworCSMgQ2xlYW51cCB0aGUgdGVz dCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOworfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkg JG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNo ZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2Fs Jyk7CkBAIC0zNyw2ICsxNDcsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7 CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJf Y29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJ VEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBAIC01NCw4MiArMTY4LDI1IEBAIG15ICRyZXN1bHQg PQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3Rf dGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNv cGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgSW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJhbnNhY3Rp b25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KLW15ICRpbiAgPSAnJzsKLW15ICRv dXQgPSAnJzsKLQotbXkgJHRpbWVyID0gSVBDOjpSdW46OnRpbWVvdXQoJFBvc3RncmVTUUw6OlRl c3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOwotCi1teSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+ YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCi0Jb25fZXJy b3Jfc3RvcCA9PiAwKTsKLQotJGluIC49IHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhp KTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1E RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci19OwotJGgtPnB1bXBfbmI7 Ci0KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoNTAwMSwgOTk5OSkgcyhpKTsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEg PiA1MDAwOwotQ09NTUlUOwotfSk7Ci0KLSRpbiAuPSBxewotQ09NTUlUOwotXHEKLX07Ci0kaC0+ ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCwgc28gaWdub3JlIHRo ZW0gaGVyZQotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwot Ci0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIi KTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwgJ2NoZWNrIGV4dHJhIGNvbHVtbnMg Y29udGFpbiBsb2NhbCBkZWZhdWx0cycpOwotCi0jIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5h cnkgbW9kZQotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVS IFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVCAoYmluYXJ5ID0gb24pIik7Ci0KLSMgSW5zZXJ0LCB1 cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDUwMDEsIDEwMDAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdI RVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0g MDsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVy LCAkYXBwbmFtZSwgMCk7CiAKLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5 OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoNjY2N3w2NjY3fDY2NjcpLCAnY2hl Y2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJyk7CisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdhcHBs eScKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBn X3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5E IHN0YXRlID0gJ3N0cmVhbWluZyc7IgorKTsKIAotIyBDaGFuZ2UgdGhlIGxvY2FsIHZhbHVlcyBv ZiB0aGUgZXh0cmEgY29sdW1ucyBvbiB0aGUgc3Vic2NyaWJlciwKLSMgdXBkYXRlIHB1Ymxpc2hl ciwgYW5kIGNoZWNrIHRoYXQgc3Vic2NyaWJlciByZXRhaW5zIHRoZSBleHBlY3RlZAotIyB2YWx1 ZXMuIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVo YXZlCi0jIHByb3Blcmx5IGFmdGVyIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgogJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9 ICdlcG9jaCc6OnRpbWVzdGFtcHR6ICsgOTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKLSk7Ci0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJVUERBVEUgdGVzdF90YWIg U0VUIGIgPSBtZDUoYTo6dGV4dCkiKTsKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VU KHN0cmVhbWluZyA9IGFwcGx5LCBiaW5hcnkgPSBvZmYpIik7CiAKLSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ciskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlf dW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9y ZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUg PSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGlu ZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi0k cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVD VCBjb3VudCgqKSwgY291bnQoZXh0cmFjdChlcG9jaCBmcm9tIGMpID0gOTg3NjU0MzIxKSwgY291 bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIKLSk7Ci1pcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8 NjY2NyksCi0JJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbGx5IGNoYW5nZWQgZGF0 YScpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAk YXBwbmFtZSwgMSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXIt PnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1 YnhhY3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwK aW5kZXggZjI3ZjE2OTRmMi4uYjViNmRjMzc5ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbApAQCAtOCw2ICs4LDcyIEBAIHVzZSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6 Ok1vcmU7CiAKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBh cmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIiBvcHRpb24KKyMgc28gdGhlIHNhbWUgY29kZSBjYW4g YmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kIHN0cmVhbWluZz1hcHBseQorIyBj YXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2Rl X3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfYXBwbHkpID0gQF87CisKKwkjIENoZWNrIHRoYXQg YSBiYWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgb3B0aW9uIGlzCisJIyBz cGVjaWZpZWQgYXMgImFwcGx5Ii4gIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cg bWVzc2FnZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2 ZXJib3NpdHkuCisJaWYgKCRpc19hcHBseSkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEi KTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgSW5zZXJ0LCB1cGRhdGUg YW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgNjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKCAg ICAzLCAgNTAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBt b2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwor CVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwgIDEwMDApIHMoaSk7CisJVVBEQVRFIHRlc3Rf dGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwg IDE1MDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChh LDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FW RVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgIDIwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFi IFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwgMjUw MCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikg PSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlDT01NSVQ7 CisJfSk7CisKKwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9m b3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX3N1YnNj cmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2Fn ZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJbXkgJHJlc3VsdCA9 CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygk cmVzdWx0LCBxcSgxNjY3fDE2Njd8MTY2NyksCisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8g c3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxv Y2FsIGRlZmF1bHRzJworCSk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSAoYSA+IDIpIik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9 IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJs aXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcsNiArMTAz LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQ VUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9 ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1 c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJT Q1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRp b25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBv bikiCiApOwpAQCAtNTQsNDEgKzEyNCwyNiBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3Vs dCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJl cicpOwogCi0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVk IDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBx ewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKCAgICAzLCAgNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNF VCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAgMTAwMCkgcyhp KTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1E RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczI7Ci1J TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEwMDEsICAxNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIp IFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMp ID0gMDsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgIDIwMDApIHMoaSk7Ci1VUERBVEUg dGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHM0OwotSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAx LCAyNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChh LDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLUNPTU1J VDsKLX0pOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVy LCAkYXBwbmFtZSwgMCk7CiAKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0 ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMTY2N3wxNjY3fDE2NjcpLAotCSdjaGVjayBkYXRh IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29s dW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnYXBwbHknCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0 aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJl YW1pbmcnOyIKICk7CiAKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gYXBwbHkpIik7CisK KyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qg cGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9u X25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBk aWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVy IGNoYW5naW5nIFNVQlNDUklQVElPTiI7CisKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hl ciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOworCiAkbm9kZV9zdWJzY3JpYmVyLT5z dG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAx N19zdHJlYW1fZGRsLnBsCmluZGV4IDBiY2U2M2I3MTYuLjdlNWRjMThjZDIgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsCisrKyBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsCkBAIC04LDYgKzgsMTExIEBAIHVzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwog dXNlIFRlc3Q6Ok1vcmU7CiAKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVw cyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIiBvcHRpb24KKyMgc28gdGhlIHNhbWUg Y29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kIHN0cmVhbWluZz1h cHBseQorIyBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNo ZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfYXBwbHkpID0gQF87CisKKwkjIGEg c21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAorCSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMywgbWQ1KDM6OnRleHQpKTsKKwlBTFRFUiBUQUJMRSB0 ZXN0X3RhYiBBREQgQ09MVU1OIGMgSU5UOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBWQUxVRVMgKDQsIG1kNSg0Ojp0ZXh0KSwgLTQpOworCUNPTU1JVDsKKwl9KTsKKwor CSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBv cHRpb24gaXMKKwkjIHNwZWNpZmllZCBhcyAiYXBwbHkiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0 aGUgREVCVUcxIGxvZyBtZXNzYWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVt cCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vi c2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNz YWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBs YXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKKwkkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmll cyg1LCAxMDAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJTlQ7 CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6 dGV4dCksIC1pLCAyKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgMjAwMCkgcyhpKTsKKwlD T01NSVQ7CisJfSk7CisKKwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2Rl X3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5f bWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisK KwkjIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAor CSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOwor CUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMSwgbWQ1KDIwMDE6OnRleHQpLCAtMjAw MSwgMioyMDAxKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUgSU5UOworCVNB VkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDIsIG1kNSgyMDAy Ojp0ZXh0KSwgLTIwMDIsIDIqMjAwMiwgLTMqMjAwMik7CisJQ09NTUlUOworCX0pOworCisJJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCW15ICRyZXN1bHQg PQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSkgRlJPTSB0ZXN0X3RhYiIpOwor CWlzKCRyZXN1bHQsIHFxKDIwMDJ8MTk5OXwxMDAyfDEpLAorCQknY2hlY2sgZGF0YSB3YXMgY29w aWVkIHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29u dGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBBIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNh Y3Rpb24gd2l0aCBEREwgYW5kIERNTC4gT25lIG9mIHRoZSBEREwgaXMgcGVyZm9ybWVkCisJIyBh ZnRlciBETUwgdG8gZW5zdXJlIHRoYXQgd2UgaW52YWxpZGF0ZSB0aGUgc2NoZW1hIHNlbnQgZm9y IHRlc3RfdGFiIHNvIHRoYXQKKwkjIHRoZSBuZXh0IHRyYW5zYWN0aW9uIGhhcyB0byBzZW5kIHRo ZSBzY2hlbWEgYWdhaW4uCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jl cycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAzLDUwMDApIHMoaSk7 CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBmIElOVDsKKwlDT01NSVQ7CisJfSk7 CisKKwkjIEEgc21hbGwgdHJhbnNhY3Rpb24gdGhhdCB3b24ndCBnZXQgc3RyZWFtZWQuIFRoaXMg aXMganVzdCB0byBlbnN1cmUgdGhhdCB3ZQorCSMgc2VuZCB0aGUgc2NoZW1hIGFnYWluIHRvIHJl ZmxlY3QgdGhlIGxhc3QgY29sdW1uIGFkZGVkIGluIHRoZSBwcmV2aW91cyB0ZXN0LgorCSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmksIDQq aSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDUwMDUpIHMoaSk7CisJQ09NTUlUOworCX0pOwor CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSwgY291bnQoZikgRlJPTSB0ZXN0 X3RhYiIKKwkpOworCWlzKCRyZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1fDMwMDR8NSksCisJCSdj aGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBmb3IgYm90aCBzdHJlYW1pbmcgYW5k IG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zJworCSk7CisKKwkjIENsZWFudXAgdGhlIHRlc3Qg ZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCURF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMik7CisJQUxURVIgVEFCTEUgdGVzdF90YWIg RFJPUCBDT0xVTU4gYywgRFJPUCBDT0xVTU4gZCwgRFJPUCBDT0xVTU4gZSwgRFJPUCBDT0xVTU4g ZjsKKwl9KTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor fQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+ aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxNDIsMTAgQEAg JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FU SU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9z dWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0 cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElP TiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1l PSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7 CkBAIC01NCw3NiArMTYzLDI1IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgy fDB8MCksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAK LSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCi0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDMsIG1kNSgzOjp0ZXh0KSk7Ci1BTFRFUiBUQUJMRSB0 ZXN0X3RhYiBBREQgQ09MVU1OIGMgSU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVz dF90YWIgVkFMVUVTICg0LCBtZDUoNDo6dGV4dCksIC00KTsKLUNPTU1JVDsKLX0pOwotCi0jIGxh cmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNSwg MTAwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJTlQ7Ci1TQVZF UE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAt aSwgMippIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsIDIwMDApIHMoaSk7Ci1DT01NSVQ7Ci19 KTsKLQotIyBhIHNtYWxsIChub24tc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBE TUwKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMSwgbWQ1KDIwMDE6OnRleHQpLCAtMjAw MSwgMioyMDAxKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZSBJTlQ7Ci1TQVZF UE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDIsIG1kNSgyMDAyOjp0 ZXh0KSwgLTIwMDIsIDIqMjAwMiwgLTMqMjAwMik7Ci1DT01NSVQ7Ci19KTsKK3Rlc3Rfc3RyZWFt aW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0K LSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygk cmVzdWx0LCBxcSgyMDAyfDE5OTl8MTAwMnwxKSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRv IHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBs b2NhbCBkZWZhdWx0cycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRl c3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ2FwcGx5JworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBs aWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwog Ci0jIEEgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MLiBPbmUg b2YgdGhlIERETCBpcyBwZXJmb3JtZWQKLSMgYWZ0ZXIgRE1MIHRvIGVuc3VyZSB0aGF0IHdlIGlu dmFsaWRhdGUgdGhlIHNjaGVtYSBzZW50IGZvciB0ZXN0X3RhYiBzbyB0aGF0Ci0jIHRoZSBuZXh0 IHRyYW5zYWN0aW9uIGhhcyB0byBzZW5kIHRoZSBzY2hlbWEgYWdhaW4uCi0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVf c2VyaWVzKDIwMDMsNTAwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4g ZiBJTlQ7Ci1DT01NSVQ7Ci19KTsKLQotIyBBIHNtYWxsIHRyYW5zYWN0aW9uIHRoYXQgd29uJ3Qg Z2V0IHN0cmVhbWVkLiBUaGlzIGlzIGp1c3QgdG8gZW5zdXJlIHRoYXQgd2UKLSMgc2VuZCB0aGUg c2NoZW1hIGFnYWluIHRvIHJlZmxlY3QgdGhlIGxhc3QgY29sdW1uIGFkZGVkIGluIHRoZSBwcmV2 aW91cyB0ZXN0LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsK LUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWks IDIqaSwgLTMqaSwgNCppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTAwNSkgcyhpKTsKLUNP TU1JVDsKLX0pOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFM VEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBhcHBseSkiKTsKIAotJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKyRub2RlX3B1Ymxpc2hl ci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQg RlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5h bWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91 dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlND UklQVElPTiI7CiAKLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50KGUp LCBjb3VudChmKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSg1MDA1fDUwMDJ8NDAw NXwzMDA0fDUpLAotCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBmb3IgYm90 aCBzdHJlYW1pbmcgYW5kIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zJwotKTsKK3Rlc3Rfc3Ry ZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwog CiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBs IGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCmlu ZGV4IDcxNTU0NDJlNzYuLjcxZjhjMWRkMDUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwKQEAgLTgsNiArOCwxMTMgQEAgdXNl IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7 CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0 ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIG9wdGlvbgorIyBzbyB0aGUgc2Ft ZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5n PWFwcGx5CisjIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxp c2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19hcHBseSkgPSBAXzsKKworCSMg Q2hlY2sgdGhhdCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBvcHRp b24gaXMKKwkjIHNwZWNpZmllZCBhcyAiYXBwbHkiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUg REVCVUcxIGxvZyBtZXNzYWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1 cCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vic2Ny aWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdl cyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBsYXJn ZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcworCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMyw1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMo aSk7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOworCVNBVkVQT0lO VCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKKwlST0xMQkFDSyBUTyBzMjsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDIwMDEsMjUwMCkgcyhpKTsKKwlST0xMQkFDSyBUTyBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDI1MDEsMzAw MCkgcyhpKTsKKwlTQVZFUE9JTlQgczQ7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzMDAxLDM1MDApIHMoaSk7CisJU0FW RVBPSU5UIHM1OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzUwMSw0MDAwKSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKwor CWlmICgkaXNfYXBwbHkpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIv XFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5p bmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBj b3VudChjKSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMjAwMHwwKSwKKwkJJ2No ZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5k IGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBsYXJnZSAo c3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9y ZGVyCisJIyBzdWJ0cmFuc2FjdGlvbiBST0xMQkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDQwMDEsNDUwMCkgcyhp KTsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDU1MDApIHMoaSk7CisJU0FWRVBPSU5U IHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNjAwMSw2NTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMzsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDcwMDEsNzUwMCkgcyhpKTsKKwlSRUxFQVNFIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoODAwMSw4NTAwKSBzKGkp OworCVJPTExCQUNLIFRPIHMxOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChj KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwKKwkJJ2NoZWNrIHJv bGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMg bGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVjZWl2aW5nIHJv bGxiYWNrCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJ QkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3Nlcmllcyg4NTAxLDkwMDApIHMoaSk7CisJU0FWRVBPSU5UIHMxOworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoOTAwMSw5NTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDk1MDEsMTAwMDAp IHMoaSk7CisJUk9MTEJBQ0s7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0 X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksICdjaGVjayByb2xsYmFjayB3YXMgcmVm bGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlz aGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2Rl X3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNiw2 ICsxNDMsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JF QVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBu YW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBU ZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRF IFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBs aWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWlu ZyA9IG9uKSIKICk7CkBAIC01Myw4MSArMTY0LDI1IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MCks ICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgbGFy Z2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMyw1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOwot U0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczM7Ci1J TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKLVJPTExCQUNLIFRPIHMyOwotSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLDI1 MDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjUwMSwzMDAwKSBzKGkpOwotU0FW RVBPSU5UIHM0OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygzMDAxLDM1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczU7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDM1MDEsNDAwMCkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVy LCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CiAKLSRyZXN1bHQgPQotICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyMDAwfDApLAotCSdjaGVjayBy b2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRy YSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdhcHBseScKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVw bGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0g J3N0cmVhbWluZyc7IgogKTsKIAotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGgg c3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9yZGVyCi0jIHN1YnRyYW5zYWN0aW9uIFJPTExC QUNLcwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lO OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg0MDAxLDQ1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEs NTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNjAwMSw2NTAwKSBzKGkpOwotU0FW RVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg3MDAxLDc1MDApIHMoaSk7Ci1SRUxFQVNFIHMyOwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cyg4MDAxLDg1MDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUNPTU1JVDsKLX0pOwotCi0kbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNF VChzdHJlYW1pbmcgPSBhcHBseSkiKTsKIAotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00g dGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRv IHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBsYXJnZSAoc3Ry ZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgcm9sbGJhY2sKLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoODUwMSw5MDAwKSBzKGkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5MDAxLDk1MDApIHMo aSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDk1MDEsMTAwMDApIHMoaSk7Ci1ST0xMQkFDSzsK LX0pOworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGlj YXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisg IG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQg YWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVz dF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksICdjaGVjayByb2xsYmFjayB3YXMgcmVm bGVjdGVkIG9uIHN1YnNjcmliZXInKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9w OwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwKaW5kZXggZGJkMGZjYTRkMS4u ZDBjZDg2OTQzMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVh bV9zdWJ4YWN0X2RkbF9hYm9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlf c3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsCkBAIC05LDYgKzksNjkgQEAgdXNlIFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVz dDo6TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNo IGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIG9wdGlvbgorIyBzbyB0aGUgc2FtZSBjb2RlIGNh biBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5nPWFwcGx5Cisj IGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5v ZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19hcHBseSkgPSBAXzsKKworCSMgQ2hlY2sgdGhh dCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBvcHRpb24gaXMKKwkj IHNwZWNpZmllZCBhcyAiYXBwbHkiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxv ZyBtZXNzYWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9n IHZlcmJvc2l0eS4KKwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVn MSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBsYXJnZSAoc3RyZWFt ZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcworCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMyw1 MDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBjIElOVDsKKwlTQVZF UE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwg LWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVz dF90YWIgQUREIENPTFVNTiBkIElOVDsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxMDAxLDE1MDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElO VDsKKwlTQVZFUE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMo aSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgRFJPUCBDT0xVTU4gYzsKKwlST0xMQkFDSyBUTyBz MTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCBpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKworCWlmICgk aXNfYXBwbHkpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvXFtBcHBs eSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2Nv bmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsK KwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChj KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMTAwMHw1MDApLAorCQknY2hlY2sg cm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlciBhbmQgZXh0 cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIENsZWFudXAgdGhl IHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBx eworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMik7CisJQUxURVIgVEFCTEUgdGVz dF90YWIgRFJPUCBDT0xVTU4gYzsKKwl9KTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVf cHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsK ICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBA IC0zNyw2ICsxMDAsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK IAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15 ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAki Q1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0 ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0 cmVhbWluZyA9IG9uKSIKICk7CkBAIC01NCwzNSArMTIxLDI2IEBAIG15ICRyZXN1bHQgPQogCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFx KDJ8MCksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAK LSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFD S3MKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMyw1MDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGMg SU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSwgLWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1BTFRFUiBU QUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGQgSU5UOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRl X3NlcmllcygxMDAxLDE1MDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1O IGUgSU5UOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDAp IHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOwotUk9MTEJBQ0sgVE8g czE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCBpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOwotQ09NTUlUOwotfSk7Cit0ZXN0X3N0cmVh bWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKIAot JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9 Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDEwMDB8NTAw KSwKLQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2Ny aWJlciBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAn YXBwbHknCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9 ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJP TSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUn IEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFt aW5nID0gYXBwbHkpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9u IFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1p bmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBs eSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CisKK3Rlc3Rfc3RyZWFt aW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOworCiAk bm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwogCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCBiL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCmluZGV4IDdhNzk3 ZjM3YmEuLmI1MmFmNzRlMzUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAy Ml90d29waGFzZV9jYXNjYWRlLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90 d29waGFzZV9jYXNjYWRlLnBsCkBAIC0xMSw2ICsxMSwyMDggQEAgdXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9y ZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSBy ZWxhdGVkIHRvICJzdHJlYW1pbmciIG9wdGlvbgorIyBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBy dW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5nPWFwcGx5CisjIGNhc2Vz Lgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX0EsICRub2RlX0IsICRub2RlX0Ms ICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICRzdHJlYW1pbmdfbW9kZSkgPQorCSAgQF87CisKKwlt eSAkb2xkcGlkX0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VM RUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFt ZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKKwlteSAkb2xkcGlk X0MgPSAkbm9kZV9CLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBw bmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKKworCSMgU2V0dXAgbG9naWNhbCBy ZXBsaWNhdGlvbiBzdHJlYW1pbmcgbW9kZQorCisJJG5vZGVfQi0+c2FmZV9wc3FsKAorCQkncG9z dGdyZXMnLCAiCisJCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0IKKwkJU0VUIChzdHJlYW1p bmcgPSAkc3RyZWFtaW5nX21vZGUpOyIpOworCSRub2RlX0MtPnNhZmVfcHNxbCgKKwkJJ3Bvc3Rn cmVzJywgIgorCQlBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9DCisJCVNFVCAoc3RyZWFtaW5n ID0gJHN0cmVhbWluZ19tb2RlKSIpOworCisJIyBXYWl0IGZvciBzdWJzY3JpYmVycyB0byBmaW5p c2ggaW5pdGlhbGl6YXRpb24KKworCSRub2RlX0EtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0 Z3JlcycsICIKKwkJU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0IgRlJPTSBwZ19zdGF0X3JlcGxpY2F0 aW9uCisJCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRlID0g J3N0cmVhbWluZyc7IgorCSkgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBw bHkgdG8gcmVzdGFydCI7CisJJG5vZGVfQi0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVz JywgIgorCQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQyBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24K KwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3Ry ZWFtaW5nJzsiCisJKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0 byByZXN0YXJ0IjsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRlc3Qg MlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCisJIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFz IGEgMlBDIHRyYW5zYWN0aW9uLgorCSMgMi4gVGhlbiBkbyBjb21taXQgcHJlcGFyZWQuCisJIwor CSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlcihzKSBhZnRlciB0 aGUgY29tbWl0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgQ2hlY2sg dGhhdCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBvcHRpb24gaXMK KwkjIHNwZWNpZmllZCBhcyAiYXBwbHkiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcx IGxvZyBtZXNzYWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUg bG9nIHZlcmJvc2l0eS4KKwlpZiAoJHN0cmVhbWluZ19tb2RlIGVxICdhcHBseScpCisJeworCQkk bm9kZV9CLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMg PSBkZWJ1ZzEiKTsKKwkJJG5vZGVfQi0+cmVsb2FkOworCisJCSRub2RlX0MtPmFwcGVuZF9jb25m KCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9k ZV9DLT5yZWxvYWQ7CisJfQorCisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCBy b3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkjIFRoZW4gMlBDIFBSRVBBUkUKKwkkbm9k ZV9BLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2Qo YSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJ UFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJaWYgKCRzdHJl YW1pbmdfbW9kZSBlcSAnYXBwbHknKQorCXsKKwkJJG5vZGVfQi0+d2FpdF9mb3JfbG9nKHFyL1xb QXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX0ItPmFwcGVuZF9jb25mKCdw b3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVf Qi0+cmVsb2FkOworCisJCSRub2RlX0MtPndhaXRfZm9yX2xvZyhxci9cW0FwcGx5IEJHVyAjXGQr XF0gc3RhcnRlZC8sIDApOworCQkkbm9kZV9DLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JywgImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX0MtPnJlbG9hZDsKKwl9 CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBz dGF0ZSBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCisJbXkgJHJlc3VsdCA9CisJICAkbm9k ZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJl cGFyZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3Rz OyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vi c2NyaWJlciBDJyk7CisKKwkjIDJQQyBDT01NSVQKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVf QS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lX0MpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIHdhcyBjb21taXR0 ZWQgb24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00g dGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGlu c2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBj b2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCisJKTsKKwkkcmVzdWx0ID0gJG5vZGVfQy0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChk ID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQp LAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBD LCBhbmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIGNoZWNr IHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3Vs dCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgq KSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5v ZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19w cmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNv bW1pdHRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZF UE9JTlQuCisJIyAwLiBDbGVhbnVwIGZyb20gcHJldmlvdXMgdGVzdCBsZWF2aW5nIG9ubHkgMiBy b3dzLgorCSMgMS4gSW5zZXJ0IG9uZSBtb3JlIHJvdy4KKwkjIDIuIFJlY29yZCBhIFNBVkVQT0lO VC4KKwkjIDMuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMgNC4gRG8gcm9sbGJhY2sg dG8gU0FWRVBPSU5UIHByaW9yIHRvIHRoZSBzdHJlYW1lZCBpbnNlcnRzLgorCSMgNS4gVGhlbiBD T01NSVQgUFJFUEFSRUQuCisJIworCSMgRXhwZWN0IGRhdGEgYWZ0ZXIgdGhlIFNBVkVQT0lOVCBp cyBhYm9ydGVkIGxlYXZpbmcgb25seSAzIHJvd3MgKD0gMiBvcmlnaW5hbCArIDEgZnJvbSBzdGVw IDEpLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0 ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAoZGVsZXRlIHdpbGwgYmUgcmVwbGljYXRlZCkK Kwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIGEgPiAyOyIpOworCisJIyAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRP IFNBVkVQT0lOVAorCSRub2RlX0EtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlCRUdJ TjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5LCAnZm9vYmFyJyk7CisJCVNB VkVQT0lOVCBzcF9pbm5lcjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVz dF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0 ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9p bm5lcjsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAnb3V0ZXInOworCQkiKTsKKworCSRub2RlX0Et PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZV9DKTsKKworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIHByZXBhcmVk IG9uIHN1YnNjcmliZXIocykKKwkkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJ aXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVy IEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQki U0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwg cXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMg MlBDIENPTU1JVAorCSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBB UkVEICdvdXRlcic7Iik7CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0Ip OworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRo ZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9CisJ ICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9N IHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24g aXMgZW5kZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hh Y3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vi c2NyaWJlciBDJyk7CisKKwkjIGNoZWNrIGluc2VydHMgYXJlIHZpc2libGUgYXQgc3Vic2NyaWJl cihzKS4KKwkjIEFsbCB0aGUgc3RyZWFtZWQgZGF0YSAocHJpb3IgdG8gdGhlIFNBVkVQT0lOVCkg c2hvdWxkIGJlIHJvbGxlZCBiYWNrLgorCSMgKDk5OTksICdmb29iYXInKSBzaG91bGQgYmUgY29t bWl0dGVkLgorCSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKKwlpcygk cmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIg QicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKKwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3Mg Y29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPSAkbm9k ZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3Rf dGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29t bWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycpOworCSRyZXN1bHQgPQorCSAgJG5v ZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3Rh YjsiKTsKKwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9u IHN1YnNjcmliZXIgQycpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9BLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIp OworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKK30KKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwogIyBTZXR1cCBhIGNhc2NhZGUgb2YgcHViL3N1YiBub2Rlcy4KICMgbm9kZV9BIC0+ IG5vZGVfQiAtPiBub2RlX0MKQEAgLTI2MCwxNjAgKzQ2MiwxNSBAQCBpcygkcmVzdWx0LCBxcSgy MSksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsKICMgMlBD ICsgU1RSRUFNSU5HIFRFU1RTCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1teSAkb2xkcGlk X0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgRlJP TSBwZ19zdGF0X3JlcGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKLW15ICRvbGRwaWRfQyA9ICRub2RlX0It PnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVw bGljYXRpb24KLQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0 ZSA9ICdzdHJlYW1pbmcnOyIpOwotCi0jIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24gKHN0cmVh bWluZyA9IG9uKQotCi0kbm9kZV9CLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCUFMVEVS IFNVQlNDUklQVElPTiB0YXBfc3ViX0IKLQlTRVQgKHN0cmVhbWluZyA9IG9uKTsiKTsKLSRub2Rl X0MtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9z dWJfQwotCVNFVCAoc3RyZWFtaW5nID0gb24pIik7Ci0KLSMgV2FpdCBmb3Igc3Vic2NyaWJlcnMg dG8gZmluaXNoIGluaXRpYWxpemF0aW9uCi0KLSRub2RlX0EtPnBvbGxfcXVlcnlfdW50aWwoCi0J J3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9CIEZST00gcGdfc3RhdF9yZXBs aWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRl ID0gJ3N0cmVhbWluZyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBh cHBseSB0byByZXN0YXJ0IjsKLSRub2RlX0ItPnBvbGxfcXVlcnlfdW50aWwoCi0JJ3Bvc3RncmVz JywgIgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9DIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgot CVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQycgQU5EIHN0YXRlID0gJ3N0cmVh bWluZyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byBy ZXN0YXJ0IjsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQ UkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgotIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBD IHRyYW5zYWN0aW9uLgotIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KLSMKLSMgRXhwZWN0 IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0 LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEluc2VydCwgdXBkYXRlIGFu ZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotIyBUaGVuIDJQ QyBQUkVQQVJFCi0kbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsK LQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIp IFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwz KSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0k bm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZV9DKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj IFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBu YW1lX0IsICRhcHBuYW1lX0MsICdvbicpOwogCi0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0 ZSBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0 czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vi c2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQs IHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMg MlBDIENPTU1JVAotJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFS RUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0KLSMg Y2hlY2sgdGhhdCB0cmFuc2FjdGlvbiB3YXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIocykKLSRy ZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCop LCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwg cXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRl ZCBvbiBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMn Ci0pOwotJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygk cmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUg Y29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQywgYW5kIGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2NhbCBk ZWZhdWx0cycKLSk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9u IHN1YnNjcmliZXIocykKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3Vs dCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0k cmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFD SyBUTyBTQVZFUE9JTlQuCi0jIDAuIENsZWFudXAgZnJvbSBwcmV2aW91cyB0ZXN0IGxlYXZpbmcg b25seSAyIHJvd3MuCi0jIDEuIEluc2VydCBvbmUgbW9yZSByb3cuCi0jIDIuIFJlY29yZCBhIFNB VkVQT0lOVC4KLSMgMy4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDQuIERvIHJvbGxi YWNrIHRvIFNBVkVQT0lOVCBwcmlvciB0byB0aGUgc3RyZWFtZWQgaW5zZXJ0cy4KLSMgNS4gVGhl biBDT01NSVQgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCBkYXRhIGFmdGVyIHRoZSBTQVZFUE9JTlQg aXMgYWJvcnRlZCBsZWF2aW5nIG9ubHkgMyByb3dzICg9IDIgb3JpZ2luYWwgKyAxIGZyb20gc3Rl cCAxKS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRl IHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzIChkZWxldGUgd2lsbCBiZSByZXBsaWNhdGVkKQot JG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBhID4gMjsiKTsKLQotIyAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNB VkVQT0lOVAotJG5vZGVfQS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlCRUdJTjsKLQlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTksICdmb29iYXInKTsKLQlTQVZFUE9JTlQg c3BfaW5uZXI7Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQg YiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgbW9kKGEsMykgPSAwOwotCVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9pbm5lcjsKLQlQUkVQ QVJFIFRSQU5TQUNUSU9OICdvdXRlcic7Ci0JIik7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwot Ci0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMp Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5v ZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVw YXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFy ZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMgMlBDIENPTU1JVAotJG5vZGVfQS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQgJ291dGVyJzsiKTsKLQotJG5vZGVfQS0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWVfQyk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1 YnNjcmliZXIKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEo MCksICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPQot ICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBl bmRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxlIGF0 IHN1YnNjcmliZXIocykuCi0jIEFsbCB0aGUgc3RyZWFtZWQgZGF0YSAocHJpb3IgdG8gdGhlIFNB VkVQT0lOVCkgc2hvdWxkIGJlIHJvbGxlZCBiYWNrLgotIyAoOTk5OSwgJ2Zvb2JhcicpIHNob3Vs ZCBiZSBjb21taXR0ZWQuCi0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsK LWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2Ny aWJlciBCJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKLWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBj b21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0gJG5vZGVf Qy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi IHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0 ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKLWlz KCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJl ciBDJyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5n IHN0cmVhbWluZyBtb2RlICdhcHBseScKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCit0ZXN0X3N0cmVhbWluZygkbm9kZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9C LCAkYXBwbmFtZV9DLCAnYXBwbHknKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwogIyBjaGVjayBhbGwgdGhlIGNsZWFudXAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MjNfdHdvcGhhc2Vfc3RyZWFtLnBsCmluZGV4IGQ4NDc1ZDI1YTQuLmY1NWM1Yzk1ZTcgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKKysr IGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbApAQCAtOCw2 ICs4LDI2NiBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FM OjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUg Y29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIgb3B0aW9u CisjIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9u IGFuZCBzdHJlYW1pbmc9YXBwbHkKKyMgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlt eSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX2FwcGx5 KSA9IEBfOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAyUEMg UFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KKwkjIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAy UEMgdHJhbnNhY3Rpb24uCisJIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KKwkjCisJIyBF eHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhl IGNvbW1pdC4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIENoZWNrIHRo YXQgYSBiYWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgb3B0aW9uIGlzCisJ IyBzcGVjaWZpZWQgYXMgImFwcGx5Ii4gIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBs b2cgbWVzc2FnZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxv ZyB2ZXJib3NpdHkuCisJaWYgKCRpc19hcHBseSkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1 ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgY2hlY2sgdGhhdCAy UEMgZ2V0cyByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIKKwkjIEluc2VydCwgdXBkYXRlIGFuZCBk ZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygz LCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9k KGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ CVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCWlmICgkaXNf YXBwbHkpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvXFtBcHBseSBC R1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYo J3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJ JG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4g cHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCW15ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJl cGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0 ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQ09NTUlUIFBS RVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNv bW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9 IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwK KwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFu ZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKwkkcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5z YWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQUkVQQVJFIC8gUk9MTEJBQ0sgUFJFUEFSRUQu CisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNh dGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KKwkj IDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgorCSMKKwkjIEV4cGVjdCBkYXRhIHJvbGxzIGJhY2sg bGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dz ICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBUaGVu IGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtC IGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxewor CQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VU IGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRf dGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vi c2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRy ZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwor CisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3Rh Yic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor CisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcgorCSRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVD VCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlp cygkcmVzdWx0LCBxcSgyfDJ8MiksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBhcmUgcm9sbGVk IGJhY2ssIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzJworCSk7CisKKwkkcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3Ry YW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCSMgQ2hlY2sgdGhhdCAyUEMgQ09NTUlUIFBSRVBBUkVEIGlzIGRl Y29kZWQgcHJvcGVybHkgb24gY3Jhc2ggcmVzdGFydC4KKwkjIDEuIGluc2VydCwgdXBkYXRlIGFu ZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSMgMi4gVGhl biBzZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQQyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQu CisJIyAzLiBBZnRlciBzZXJ2ZXJzIGFyZSByZXN0YXJ0ZWQgdGhlIHBlbmRpbmcgdHJhbnNhY3Rp b24gaXMgY29tbWl0dGVkLgorCSMKKwkjIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9u IHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgorCSMgTm90ZTogYm90aCBwdWJsaXNo ZXIgYW5kIHN1YnNjcmliZXIgZG8gY3Jhc2gvcmVzdGFydC4KKwkjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVz JywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6 dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRlc3Rf dGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVz dF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3By ZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdpbW1lZGlhdGUnKTsK Kwkkbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0ZScpOworCisJJG5vZGVfcHVibGlzaGVy LT5zdGFydDsKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworCSMgY29tbWl0IHBvc3QgdGhl IHJlc3RhcnQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQ09N TUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisJJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJs ZQorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIi KTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2VydGVkIGJ5 IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250 YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisJIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBST0xMQkFDSyBQ UkVQQVJFRC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJl IHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcg MlBDLgorCSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlzIGFmdGVyIHRo ZSBQUkVQQVJFLgorCSMgNC4gVGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVELgorCSMKKwkjIEV4 cGVjdCB0aGUgMlBDIGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgMyByb3dzIG9uIHRoZSBz dWJzY3JpYmVyCisJIyAodGhlIG9yaWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4KKwkjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0 IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7 CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNl ZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0 Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0 ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVz dF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBz dGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7 Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJz Y3JpYmVyJyk7CisKKwkjIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3ZSBhcmUgb3V0 c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQorCSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlv biBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBh IHNlcGFyYXRlIHByaW1hcnkga2V5CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdmb29iYXInKSIp OworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVk X3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlciwK KwkjIGJ1dCB0aGUgZXh0cmEgSU5TRVJUIG91dHNpZGUgb2YgdGhlIDJQQyBzdGlsbCB3YXMgcmVw bGljYXRlZAorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzfDN8MyksCisJCSdjaGVjayB0aGUgb3V0c2lkZSBp bnNlcnQgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlz IGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgQ09NTUlUIFBS RVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUg cmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAy UEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhl IFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgQ09NTUlUIFBSRVBBUkVELgorCSMKKwkjIEV4cGVj dCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9uIHRoZSBzdWJzY3JpYmVyCisJIyAodGhl IDMzMzQgKyBpbnNlcnRlZCAxID0gMzMzNSkuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxs IGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBUaGVuIGluc2Vy dCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0 LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJ TjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9 KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkj IGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJl cgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQs IHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBJ bnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0 cmFuc2FjdGlvbikKKwkjIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93 IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmFyZSBwcmltYXJ5 IGtleQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJJTlNFUlQg SU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKKworCSMgMlBDIHRyYW5z YWN0aW9uIGdldHMgY29tbWl0dGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhh dCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBx cSgzMzM1fDMzMzV8MzMzNSksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyAoYXMgd2VsbCBhcyBv dXRzaWRlIGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNv bHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00g cGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBp cyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEK Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKK30KKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBT ZXR1cAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtNDgsNiArMzA4LDEwIEBA ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNB VElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBf c3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBz dHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsICIKIAlDUkVBVEUgU1VCU0NS SVBUSU9OIHRhcF9zdWIKQEAgLTcwLDIzNiArMzM0LDMwIEBAIG15ICR0d29waGFzZV9xdWVyeSA9 CiAkbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICR0d29waGFz ZV9xdWVyeSkKICAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJl ciB0byBlbmFibGUgdHdvcGhhc2UiOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CiAjIENoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIKLSMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIG15ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQo ZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sg aW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQu Ci0jIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24uCi0jIDIuIFRoZW4g ZG8gY29tbWl0IHByZXBhcmVkLgotIwotIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBv biBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KLSMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKLQotIyBjaGVjayB0aGF0IDJQQyBnZXRzIHJlcGxpY2F0ZWQgdG8gc3Vic2Ny aWJlcgotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0 aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRf dGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK LQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNj cmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0 LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyAy UEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwot Ci0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNr IHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCop LCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwg cXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRl ZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRz JwotKTsKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0 LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIFJPTExC QUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNo IGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNp bmcgMlBDLgotIyAzLiBEbyByb2xsYmFjayBwcmVwYXJlZC4KLSMKLSMgRXhwZWN0IGRhdGEgcm9s bHMgYmFjayBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cy4KLSMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3Ig MiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhl biBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRr QiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0J QkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9 IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg bW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9 KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBj aGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIK LSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VM RUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgx KSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyAyUEMgdHJh bnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQg dHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQo YyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDJ8Mnwy KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgYXJlIHJvbGxlZCBiYWNrLCBsZWF2aW5nIG9ubHkg dGhlIG9yaWdpbmFsIDIgcm93cycpOwotCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hh Y3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1 YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDaGVjayB0 aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQgaXMgZGVjb2RlZCBwcm9wZXJseSBvbiBjcmFzaCByZXN0 YXJ0LgotIyAxLiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2Vl ZCB0aGUgNjRrQiBsaW1pdC4KLSMgMi4gVGhlbiBzZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQ QyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCi0jIDMuIEFmdGVyIHNlcnZlcnMgYXJlIHJlc3Rh cnRlZCB0aGUgcGVuZGluZyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCi0jCi0jIEV4cGVjdCBh bGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0 LgotIyBOb3RlOiBib3RoIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBkbyBjcmFzaC9yZXN0YXJ0 LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0kbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhp KTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwot CURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5T QUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3N1YnNjcmliZXItPnN0b3Ao J2ltbWVkaWF0ZScpOwotJG5vZGVfcHVibGlzaGVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKLQotJG5v ZGVfcHVibGlzaGVyLT5zdGFydDsKLSRub2RlX3N1YnNjcmliZXItPnN0YXJ0OwotCi0jIGNvbW1p dCBwb3N0IHRoZSByZXN0YXJ0Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9w dWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKIAotIyBjaGVjayBpbnNl cnRzIGFyZSB2aXNpYmxlCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBp bnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNv bHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ2FwcGx5JworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNh dGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3Ry ZWFtaW5nJzsiCiApOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIERvIElO U0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQgYmVmb3JlIFJPTExCQUNLIFBSRVBBUkVELgotIyAx LiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9u IHN1YnNjcmliZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNp bmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQu IFRoZW4gZG8gYSBST0xMQkFDSyBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IHRoZSAyUEMgZGF0YSBy b2xscyBiYWNrIGxlYXZpbmcgb25seSAzIHJvd3Mgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSBv cmlnaW5hbCAyICsgaW5zZXJ0ZWQgMSkuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj Ci0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSBy ZXBsaWNhdGVkKQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwotCi0jIFRoZW4gaW5zZXJ0LCB1cGRhdGUg YW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9k KGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQ UkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2Fj dGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9N IHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBp cyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29y ZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24pCi0jIE5vdGU6IHRo ZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlz IGluc2VydCBpcyBmb3IgYSBzZXBhcmF0ZSBwcmltYXJ5IGtleQotJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5 OSwgJ2Zvb2JhcicpIik7Ci0KLSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAotJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rl c3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vi c2NyaWJlciwKLSMgYnV0IHRoZSBleHRyYSBJTlNFUlQgb3V0c2lkZSBvZiB0aGUgMlBDIHN0aWxs IHdhcyByZXBsaWNhdGVkCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDN8M3wzKSwgJ2NoZWNrIHRoZSBvdXRzaWRl IGluc2VydCB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKLQotJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMg YWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKLSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgQ09NTUlUIFBSRVBB UkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBs aWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgot IyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBB UkUuCi0jIDQuIFRoZW4gZG8gYSBDT01NSVQgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCAyUEMgZGF0 YSArIHRoZSBleHRyYSByb3cgYXJlIG9uIHRoZSBzdWJzY3JpYmVyCi0jICh0aGUgMzMzNCArIGlu c2VydGVkIDEgPSAzMzM1KS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBG aXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0 ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVs ZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAw KSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9 IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUg VFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlz IGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBh cmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cg d2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKLSMgTm90ZTogdGhlIDJQQyB0 cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0 IGlzIGZvciBhIHNlcGFyYXJlIHByaW1hcnkga2V5Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9v YmFyJykiKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVw YXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNV QlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBhcHBseSkiKTsKIAotIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFx KDMzMzV8MzMzNXwzMzM1KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgKGFzIHdlbGwgYXMgb3V0 c2lkZSBpbnNlcnQpIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1 bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCi0pOworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1 ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0 YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0 YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdh aXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsK IAotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFx KDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKK3Rlc3Rfc3Ry ZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwog CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIGNoZWNrIGFsbCB0aGUgY2xlYW51 cAotLSAKMi4yMy4wLndpbmRvd3MuMQoK --_006_OS3PR01MB62753CDFD0DF1FCBC978AFB39EAF9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v12-0003-A-temporary-patch-that-includes-patch-in-another.patch" Content-Description: v12-0003-A-temporary-patch-that-includes-patch-in-another.patch Content-Disposition: attachment; filename="v12-0003-A-temporary-patch-that-includes-patch-in-another.patch"; size=9016; creation-date="Fri, 17 Jun 2022 07:12:00 GMT"; modification-date="Fri, 17 Jun 2022 07:17:07 GMT" Content-Transfer-Encoding: base64 RnJvbSA5MzUwNzY3MjI0NzkzOGVmMjJiYzRmZjE1YzRkMjNmNzE0MGQ4NGIwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog VGh1LCAxNiBKdW4gMjAyMiAxMzozMTo1OSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEyIDMvNV0g QSB0ZW1wb3JhcnkgcGF0Y2ggdGhhdCBpbmNsdWRlcyBwYXRjaCBpbiBhbm90aGVyCiBidWdmaXgg dGhyZWFkLgoKVGhlIHBhcnRpdGlvbiBjYWNoZSBtYXAgb24gc3Vic2NyaWJlciBoYXZlIHNldmVy YWwgYnVncyAoc2VlIHRocmVhZCBbMV0pLgpCZWNhdXNlIHBhdGNoIDAwMDQgaXMgZGV2ZWxvcGVk IGJhc2VkIG9uIHRoZSBwYXRjaGVzIGluIFsxXSwgc28gSSB1c2UgbGF0ZXN0CjAwMDEtcGF0Y2gg KHNlZSBbMl0pIGFzIGEgdGVtcG9yYXJ5IHBhdGNoIDAwMDMgaGVyZS4gQWZ0ZXIgdGhlIHBhdGNo IGluIFsxXQppcyBjb21taXR0ZWQsIEkgd2lsbCBkZWxldGUgdGhpcyB0ZW1wb3JhcnkgcGF0Y2gu CgpbMV0gLQpodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL09TWlBSMDFNQjYz MTBGNDZDRDQyNUE5NjdFNEFFRjczNkZEQTQ5JTQwT1NaUFIwMU1CNjMxMC5qcG5wcmQwMS5wcm9k Lm91dGxvb2suY29tClsyXSAtCmh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQv T1NaUFIwMU1CNjMxMDg5OEYzNUQ0ODBENTg2ODlBOTkxRkRBQzklNDBPU1pQUjAxTUI2MzEwLmpw bnByZDAxLnByb2Qub3V0bG9vay5jb20KLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3JlbGF0aW9uLmMgfCAxMjEgKysrKysrKysrKysrLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgfCAgMjAgKysrLQogc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDEzX3BhcnRpdGlvbi5wbCAgIHwgIDE0ICsrKwogMyBmaWxlcyBjaGFuZ2VkLCA5 OCBpbnNlcnRpb25zKCspLCA1NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3JlbGF0aW9uLmMKaW5kZXggMzRjNTVjMDRlMy4uMThlNjU3Y2RmZSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYwpAQCAtMjQ5LDYgKzI0OSw3 MiBAQCBsb2dpY2FscmVwX3JlcG9ydF9taXNzaW5nX2F0dHJzKExvZ2ljYWxSZXBSZWxhdGlvbiAq cmVtb3RlcmVsLAogCX0KIH0KIAorLyoKKyAqIENoZWNrIGlmIHJlcGxpY2EgaWRlbnRpdHkgbWF0 Y2hlcyBhbmQgbWFyayB0aGUgdXBkYXRhYmxlIGZsYWcuCisgKgorICogV2UgYWxsb3cgZm9yIHN0 cmljdGVyIHJlcGxpY2EgaWRlbnRpdHkgKGZld2VyIGNvbHVtbnMpIG9uIHN1YnNjcmliZXIgYXMK KyAqIHRoYXQgd2lsbCBub3Qgc3RvcCB1cyBmcm9tIGZpbmRpbmcgdW5pcXVlIHR1cGxlLiBJRSwg aWYgcHVibGlzaGVyIGhhcworICogaWRlbnRpdHkgKGlkLHRpbWVzdGFtcCkgYW5kIHN1YnNjcmli ZXIganVzdCAoaWQpIHRoaXMgd2lsbCBub3QgYmUgYQorICogcHJvYmxlbSwgYnV0IGluIHRoZSBv cHBvc2l0ZSBzY2VuYXJpbyBpdCB3aWxsLgorICoKKyAqIERvbid0IHRocm93IGFueSBlcnJvciBo ZXJlIGp1c3QgbWFyayB0aGUgcmVsYXRpb24gZW50cnkgYXMgbm90IHVwZGF0YWJsZSwKKyAqIGFz IHJlcGxpY2EgaWRlbnRpdHkgaXMgb25seSBmb3IgdXBkYXRlcyBhbmQgZGVsZXRlcyBidXQgaW5z ZXJ0cyBjYW4gYmUKKyAqIHJlcGxpY2F0ZWQgZXZlbiB3aXRob3V0IGl0LgorICovCitzdGF0aWMg dm9pZAorbG9naWNhbHJlcF9yZWxfbWFya191cGRhdGFibGUoTG9naWNhbFJlcFJlbE1hcEVudHJ5 ICplbnRyeSkKK3sKKwlCaXRtYXBzZXQgICppZGtleTsKKwlMb2dpY2FsUmVwUmVsYXRpb24gKnJl bW90ZXJlbCA9ICZlbnRyeS0+cmVtb3RlcmVsOworCWludAkJCWk7CisKKwllbnRyeS0+dXBkYXRh YmxlID0gdHJ1ZTsKKworCS8qCisJICogSWYgaXQgaXMgYSBwYXJ0aXRpb25lZCB0YWJsZSwgd2Ug ZG9uJ3QgY2hlY2sgaXQsIHdlIHdpbGwgY2hlY2sgaXRzCisJICogcGFydGl0aW9uIGxhdGVyLgor CSAqLworCWlmIChlbnRyeS0+bG9jYWxyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BB UlRJVElPTkVEX1RBQkxFKQorCQlyZXR1cm47CisKKwlpZGtleSA9IFJlbGF0aW9uR2V0SW5kZXhB dHRyQml0bWFwKGVudHJ5LT5sb2NhbHJlbCwKKwkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQ X0lERU5USVRZX0tFWSk7CisJLyogZmFsbGJhY2sgdG8gUEsgaWYgbm8gcmVwbGljYSBpZGVudGl0 eSAqLworCWlmIChpZGtleSA9PSBOVUxMKQorCXsKKwkJaWRrZXkgPSBSZWxhdGlvbkdldEluZGV4 QXR0ckJpdG1hcChlbnRyeS0+bG9jYWxyZWwsCisJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRN QVBfUFJJTUFSWV9LRVkpOworCQkvKgorCQkgKiBJZiBubyByZXBsaWNhIGlkZW50aXR5IGluZGV4 IGFuZCBubyBQSywgdGhlIHB1Ymxpc2hlZCB0YWJsZQorCQkgKiBtdXN0IGhhdmUgcmVwbGljYSBp ZGVudGl0eSBGVUxMLgorCQkgKi8KKwkJaWYgKGlka2V5ID09IE5VTEwgJiYgcmVtb3RlcmVsLT5y ZXBsaWRlbnQgIT0gUkVQTElDQV9JREVOVElUWV9GVUxMKQorCQkJZW50cnktPnVwZGF0YWJsZSA9 IGZhbHNlOworCX0KKworCWkgPSAtMTsKKwl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIoaWRr ZXksIGkpKSA+PSAwKQorCXsKKwkJaW50CQkJYXR0bnVtID0gaSArIEZpcnN0TG93SW52YWxpZEhl YXBBdHRyaWJ1dGVOdW1iZXI7CisKKwkJaWYgKCFBdHRyTnVtYmVySXNGb3JVc2VyRGVmaW5lZEF0 dHIoYXR0bnVtKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JK RUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJsb2dpY2FsIHJl cGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgdXNlcyAiCisJCQkJCQkJInN5c3Rl bSBjb2x1bW5zIGluIFJFUExJQ0EgSURFTlRJVFkgaW5kZXgiLAorCQkJCQkJCXJlbW90ZXJlbC0+ bnNwbmFtZSwgcmVtb3RlcmVsLT5yZWxuYW1lKSkpOworCisJCWF0dG51bSA9IEF0dHJOdW1iZXJH ZXRBdHRyT2Zmc2V0KGF0dG51bSk7CisKKwkJaWYgKGVudHJ5LT5hdHRybWFwLT5hdHRudW1zW2F0 dG51bV0gPCAwIHx8CisJCQkhYm1zX2lzX21lbWJlcihlbnRyeS0+YXR0cm1hcC0+YXR0bnVtc1th dHRudW1dLCByZW1vdGVyZWwtPmF0dGtleXMpKQorCQl7CisJCQllbnRyeS0+dXBkYXRhYmxlID0g ZmFsc2U7CisJCQlicmVhazsKKwkJfQorCX0KK30KKwogLyoKICAqIE9wZW4gdGhlIGxvY2FsIHJl bGF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVtb3RlIG9uZS4KICAqCkBAIC0zMDcsNyArMzcz LDYgQEAgbG9naWNhbHJlcF9yZWxfb3BlbihMb2dpY2FsUmVwUmVsSWQgcmVtb3RlaWQsIExPQ0tN T0RFIGxvY2ttb2RlKQogCWlmICghZW50cnktPmxvY2FscmVsdmFsaWQpCiAJewogCQlPaWQJCQly ZWxpZDsKLQkJQml0bWFwc2V0ICAqaWRrZXk7CiAJCVR1cGxlRGVzYwlkZXNjOwogCQlNZW1vcnlD b250ZXh0IG9sZGN0eDsKIAkJaW50CQkJaTsKQEAgLTM2NSw1NSArNDMwLDggQEAgbG9naWNhbHJl cF9yZWxfb3BlbihMb2dpY2FsUmVwUmVsSWQgcmVtb3RlaWQsIExPQ0tNT0RFIGxvY2ttb2RlKQog CQkvKiBiZSB0aWR5ICovCiAJCWJtc19mcmVlKG1pc3NpbmdhdHRzKTsKIAotCQkvKgotCQkgKiBD aGVjayB0aGF0IHJlcGxpY2EgaWRlbnRpdHkgbWF0Y2hlcy4gV2UgYWxsb3cgZm9yIHN0cmljdGVy IHJlcGxpY2EKLQkJICogaWRlbnRpdHkgKGZld2VyIGNvbHVtbnMpIG9uIHN1YnNjcmliZXIgYXMg dGhhdCB3aWxsIG5vdCBzdG9wIHVzCi0JCSAqIGZyb20gZmluZGluZyB1bmlxdWUgdHVwbGUuIElF LCBpZiBwdWJsaXNoZXIgaGFzIGlkZW50aXR5Ci0JCSAqIChpZCx0aW1lc3RhbXApIGFuZCBzdWJz Y3JpYmVyIGp1c3QgKGlkKSB0aGlzIHdpbGwgbm90IGJlIGEgcHJvYmxlbSwKLQkJICogYnV0IGlu IHRoZSBvcHBvc2l0ZSBzY2VuYXJpbyBpdCB3aWxsLgotCQkgKgotCQkgKiBEb24ndCB0aHJvdyBh bnkgZXJyb3IgaGVyZSBqdXN0IG1hcmsgdGhlIHJlbGF0aW9uIGVudHJ5IGFzIG5vdAotCQkgKiB1 cGRhdGFibGUsIGFzIHJlcGxpY2EgaWRlbnRpdHkgaXMgb25seSBmb3IgdXBkYXRlcyBhbmQgZGVs ZXRlcyBidXQKLQkJICogaW5zZXJ0cyBjYW4gYmUgcmVwbGljYXRlZCBldmVuIHdpdGhvdXQgaXQu Ci0JCSAqLwotCQllbnRyeS0+dXBkYXRhYmxlID0gdHJ1ZTsKLQkJaWRrZXkgPSBSZWxhdGlvbkdl dEluZGV4QXR0ckJpdG1hcChlbnRyeS0+bG9jYWxyZWwsCi0JCQkJCQkJCQkJICAgSU5ERVhfQVRU Ul9CSVRNQVBfSURFTlRJVFlfS0VZKTsKLQkJLyogZmFsbGJhY2sgdG8gUEsgaWYgbm8gcmVwbGlj YSBpZGVudGl0eSAqLwotCQlpZiAoaWRrZXkgPT0gTlVMTCkKLQkJewotCQkJaWRrZXkgPSBSZWxh dGlvbkdldEluZGV4QXR0ckJpdG1hcChlbnRyeS0+bG9jYWxyZWwsCi0JCQkJCQkJCQkJCSAgIElO REVYX0FUVFJfQklUTUFQX1BSSU1BUllfS0VZKTsKLQotCQkJLyoKLQkJCSAqIElmIG5vIHJlcGxp Y2EgaWRlbnRpdHkgaW5kZXggYW5kIG5vIFBLLCB0aGUgcHVibGlzaGVkIHRhYmxlCi0JCQkgKiBt dXN0IGhhdmUgcmVwbGljYSBpZGVudGl0eSBGVUxMLgotCQkJICovCi0JCQlpZiAoaWRrZXkgPT0g TlVMTCAmJiByZW1vdGVyZWwtPnJlcGxpZGVudCAhPSBSRVBMSUNBX0lERU5USVRZX0ZVTEwpCi0J CQkJZW50cnktPnVwZGF0YWJsZSA9IGZhbHNlOwotCQl9Ci0KLQkJaSA9IC0xOwotCQl3aGlsZSAo KGkgPSBibXNfbmV4dF9tZW1iZXIoaWRrZXksIGkpKSA+PSAwKQotCQl7Ci0JCQlpbnQJCQlhdHRu dW0gPSBpICsgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcjsKLQotCQkJaWYgKCFB dHRyTnVtYmVySXNGb3JVc2VyRGVmaW5lZEF0dHIoYXR0bnVtKSkKLQkJCQllcmVwb3J0KEVSUk9S LAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFU RSksCi0JCQkJCQkgZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBc IiVzLiVzXCIgdXNlcyAiCi0JCQkJCQkJCSJzeXN0ZW0gY29sdW1ucyBpbiBSRVBMSUNBIElERU5U SVRZIGluZGV4IiwKLQkJCQkJCQkJcmVtb3RlcmVsLT5uc3BuYW1lLCByZW1vdGVyZWwtPnJlbG5h bWUpKSk7Ci0KLQkJCWF0dG51bSA9IEF0dHJOdW1iZXJHZXRBdHRyT2Zmc2V0KGF0dG51bSk7Ci0K LQkJCWlmIChlbnRyeS0+YXR0cm1hcC0+YXR0bnVtc1thdHRudW1dIDwgMCB8fAotCQkJCSFibXNf aXNfbWVtYmVyKGVudHJ5LT5hdHRybWFwLT5hdHRudW1zW2F0dG51bV0sIHJlbW90ZXJlbC0+YXR0 a2V5cykpCi0JCQl7Ci0JCQkJZW50cnktPnVwZGF0YWJsZSA9IGZhbHNlOwotCQkJCWJyZWFrOwot CQkJfQotCQl9CisJCS8qIENoZWNrIHRoYXQgcmVwbGljYSBpZGVudGl0eSBtYXRjaGVzLiAqLwor CQlsb2dpY2FscmVwX3JlbF9tYXJrX3VwZGF0YWJsZShlbnRyeSk7CiAKIAkJZW50cnktPmxvY2Fs cmVsdmFsaWQgPSB0cnVlOwogCX0KQEAgLTY1MSw3ICs2NjksOCBAQCBsb2dpY2FscmVwX3BhcnRp dGlvbl9vcGVuKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcm9vdCwKIAkJCSAgIGF0dHJtYXAtPm1h cGxlbiAqIHNpemVvZihBdHRyTnVtYmVyKSk7CiAJfQogCi0JZW50cnktPnVwZGF0YWJsZSA9IHJv b3QtPnVwZGF0YWJsZTsKKwkvKiBDaGVjayB0aGF0IHJlcGxpY2EgaWRlbnRpdHkgbWF0Y2hlcy4g Ki8KKwlsb2dpY2FscmVwX3JlbF9tYXJrX3VwZGF0YWJsZShlbnRyeSk7CiAKIAllbnRyeS0+bG9j YWxyZWx2YWxpZCA9IHRydWU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtl ci5jCmluZGV4IDE4ZDZmMzM0NzkuLjdkMDUyNTRiZGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC93b3JrZXIuYwpAQCAtMjM1OCw2ICsyMzU4LDggQEAgYXBwbHlfaGFuZGxlX3R1 cGxlX3JvdXRpbmcoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKIAlUdXBsZVRhYmxlU2xvdCAq cmVtb3Rlc2xvdF9wYXJ0OwogCVR1cGxlQ29udmVyc2lvbk1hcCAqbWFwOwogCU1lbW9yeUNvbnRl eHQgb2xkY3R4OworCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcGFydF9lbnRyeSA9IE5VTEw7CisJ QXR0ck1hcAkgICAqYXR0cm1hcCA9IE5VTEw7CiAKIAkvKiBNb2RpZnlUYWJsZVN0YXRlIGlzIG5l ZWRlZCBmb3IgRXhlY0ZpbmRQYXJ0aXRpb24oKS4gKi8KIAllZGF0YS0+bXRzdGF0ZSA9IG10c3Rh dGUgPSBtYWtlTm9kZShNb2RpZnlUYWJsZVN0YXRlKTsKQEAgLTIzODksOCArMjM5MSwxMSBAQCBh cHBseV9oYW5kbGVfdHVwbGVfcm91dGluZyhBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhLAogCQly ZW1vdGVzbG90X3BhcnQgPSB0YWJsZV9zbG90X2NyZWF0ZShwYXJ0cmVsLCAmZXN0YXRlLT5lc190 dXBsZVRhYmxlKTsKIAltYXAgPSBwYXJ0cmVsaW5mby0+cmlfUm9vdFRvUGFydGl0aW9uTWFwOwog CWlmIChtYXAgIT0gTlVMTCkKLQkJcmVtb3Rlc2xvdF9wYXJ0ID0gZXhlY3V0ZV9hdHRyX21hcF9z bG90KG1hcC0+YXR0ck1hcCwgcmVtb3Rlc2xvdCwKKwl7CisJCWF0dHJtYXAgPSBtYXAtPmF0dHJN YXA7CisJCXJlbW90ZXNsb3RfcGFydCA9IGV4ZWN1dGVfYXR0cl9tYXBfc2xvdChhdHRybWFwLCBy ZW1vdGVzbG90LAogCQkJCQkJCQkJCQkJcmVtb3Rlc2xvdF9wYXJ0KTsKKwl9CiAJZWxzZQogCXsK IAkJcmVtb3Rlc2xvdF9wYXJ0ID0gRXhlY0NvcHlTbG90KHJlbW90ZXNsb3RfcGFydCwgcmVtb3Rl c2xvdCk7CkBAIC0yMzk4LDYgKzI0MDMsMTQgQEAgYXBwbHlfaGFuZGxlX3R1cGxlX3JvdXRpbmco QXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKIAl9CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGN0eCk7CiAKKwkvKiBDaGVjayBpZiB3ZSBjYW4gZG8gdGhlIHVwZGF0ZSBvciBkZWxldGUgb24g dGhlIGxlYWYgcGFydGl0aW9uLiAqLworCWlmKG9wZXJhdGlvbiA9PSBDTURfVVBEQVRFIHx8IG9w ZXJhdGlvbiA9PSBDTURfREVMRVRFKQorCXsKKwkJcGFydF9lbnRyeSA9IGxvZ2ljYWxyZXBfcGFy dGl0aW9uX29wZW4ocmVsbWFwZW50cnksIHBhcnRyZWwsCisJCQkJCQkJCQkJCSAgIGF0dHJtYXAp OworCQljaGVja19yZWxhdGlvbl91cGRhdGFibGUocGFydF9lbnRyeSk7CisJfQorCiAJc3dpdGNo IChvcGVyYXRpb24pCiAJewogCQljYXNlIENNRF9JTlNFUlQ6CkBAIC0yNDE5LDE1ICsyNDMyLDEw IEBAIGFwcGx5X2hhbmRsZV90dXBsZV9yb3V0aW5nKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEs CiAJCQkgKiBzdWl0YWJsZSBwYXJ0aXRpb24uCiAJCQkgKi8KIAkJCXsKLQkJCQlBdHRyTWFwICAg ICphdHRybWFwID0gbWFwID8gbWFwLT5hdHRyTWFwIDogTlVMTDsKLQkJCQlMb2dpY2FsUmVwUmVs TWFwRW50cnkgKnBhcnRfZW50cnk7CiAJCQkJVHVwbGVUYWJsZVNsb3QgKmxvY2Fsc2xvdDsKIAkJ CQlSZXN1bHRSZWxJbmZvICpwYXJ0cmVsaW5mb19uZXc7CiAJCQkJYm9vbAkJZm91bmQ7CiAKLQkJ CQlwYXJ0X2VudHJ5ID0gbG9naWNhbHJlcF9wYXJ0aXRpb25fb3BlbihyZWxtYXBlbnRyeSwgcGFy dHJlbCwKLQkJCQkJCQkJCQkJCQkgICBhdHRybWFwKTsKLQogCQkJCS8qIEdldCB0aGUgbWF0Y2hp bmcgbG9jYWwgdHVwbGUgZnJvbSB0aGUgcGFydGl0aW9uLiAqLwogCQkJCWZvdW5kID0gRmluZFJl cGxUdXBsZUluTG9jYWxSZWwoZXN0YXRlLCBwYXJ0cmVsLAogCQkJCQkJCQkJCQkJJnBhcnRfZW50 cnktPnJlbW90ZXJlbCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxM19w YXJ0aXRpb24ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTNfcGFydGl0aW9uLnBsCmlu ZGV4IDY5ZjQwMDlhMTQuLmUwN2E5MjE3ZDcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAxM19wYXJ0aXRpb24ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDEz X3BhcnRpdGlvbi5wbApAQCAtODY4LDQgKzg2OCwxOCBAQCAkcmVzdWx0ID0gJG5vZGVfc3Vic2Ny aWJlcjItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgYSwgYiwgYyBGUk9NIHRhYjUg T1JERVIgQlkgMSIpOwogaXMoJHJlc3VsdCwgcXEoM3x8MSksICd1cGRhdGVzIG9mIHRhYjUgcmVw bGljYXRlZCBjb3JyZWN0bHkgYWZ0ZXIgYWx0ZXJpbmcgdGFibGUgb24gcHVibGlzaGVyJyk7CiAK KyMgQWx0ZXIgUkVQTElDQSBJREVOVElUWSBvbiBzdWJzY3JpYmVyLgorIyBObyBSRVBMSUNBIElE RU5USVRZIGluIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBvbiBzdWJzY3JpYmVyLCBidXQgd2hhdCB3 ZSBjaGVjaworIyBpcyB0aGUgcGFydGl0aW9uLCBzbyBpdCB3b3JrcyBmaW5lLgorJG5vZGVfc3Vi c2NyaWJlcjItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0YWI1IFJFUExJ Q0EgSURFTlRJVFkgTk9USElORyIpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiVVBEQVRFIHRhYjUgU0VUIGEgPSA0IFdIRVJFIGEgPSAzIik7CisKKyRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc3ViMicpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlcjItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgYSwgYiwgYyBGUk9NIHRh YjVfMSBPUkRFUiBCWSAxIik7CitpcygkcmVzdWx0LCBxcSg0fHwxKSwgJ3VwZGF0ZXMgb2YgdGFi NSByZXBsaWNhdGVkIGNvcnJlY3RseScpOworCiBkb25lX3Rlc3RpbmcoKTsKLS0gCjIuMjMuMC53 aW5kb3dzLjEKCg== --_006_OS3PR01MB62753CDFD0DF1FCBC978AFB39EAF9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v12-0004-Add-some-checks-before-using-apply-background-wo.patch" Content-Description: v12-0004-Add-some-checks-before-using-apply-background-wo.patch Content-Disposition: attachment; filename="v12-0004-Add-some-checks-before-using-apply-background-wo.patch"; size=36609; creation-date="Fri, 17 Jun 2022 07:12:00 GMT"; modification-date="Fri, 17 Jun 2022 07:17:08 GMT" Content-Transfer-Encoding: base64 RnJvbSBlOTljYmJmMjU0MjQ2ZWViMGE0NDFlOTMyMGY5OTljOGI4NWY2Y2RmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog VHVlLCAxNCBKdW4gMjAyMiAxMToyMzo1MiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEyIDQvNV0g QWRkIHNvbWUgY2hlY2tzIGJlZm9yZSB1c2luZyBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcgogdG8g YXBwbHkgY2hhbmdlcy4KCklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNoZWNrcyBhcmUgdmlvbGF0 ZWQsIGFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQuCjEuIFRoZSB1bmlxdWUgY29sdW1ucyBiZXR3 ZWVuIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBhcmUgZGlmZmVyZW5jZS4KMi4gVGhlcmUgaXMg YW55IG5vbi1pbW11dGFibGUgZnVuY3Rpb24gcHJlc2VudCBpbiBleHByZXNzaW9uIGluCnN1YnNj cmliZXIncyByZWxhdGlvbi4gQ2hlY2sgZnJvbSB0aGUgZm9sbG93aW5nIDQgaXRlbXM6CiAgIGEu IFRoZSBmdW5jdGlvbiBpbiB0cmlnZ2VyczsKICAgYi4gQ29sdW1uIGRlZmF1bHQgdmFsdWUgZXhw cmVzc2lvbnMgYW5kIGRvbWFpbiBjb25zdHJhaW50czsKICAgYy4gQ29uc3RyYWludCBleHByZXNz aW9ucy4KICAgZC4gVGhlIGZvcmVpZ24ga2V5cy4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9zdWJzY3JpcHRpb24uc2dtbCAgICAgfCAgIDQgKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwv YXBwbHliZ3dyb2tlci5jICAgICAgIHwgIDQ0ICsrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Byb3RvLmMgICAgICAgfCAgNjIgKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3JlbGF0aW9uLmMgICAgfCAxOTYgKysrKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgIDI1ICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNo ZS90eXBjYWNoZS5jICAgICAgICAgICAgfCAgMTcgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v bG9naWNhbHByb3RvLmggICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xv Z2ljYWxyZWxhdGlvbi5oICAgICB8ICAxNiArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3Jr ZXJfaW50ZXJuYWwuaCAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaCAg ICAgICAgICAgICAgICAgIHwgICAyICsKIC4uLi9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2Vf Y2FzY2FkZS5wbCAgICB8ICAgNyArCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19h cHBseS5wbCAgICAgfCAzOTEgKysrKysrKysrKysrKysrKysrCiAxMyBmaWxlcyBjaGFuZ2VkLCA3 NTkgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRleCBkNGNhYWUwMjIyLi44ZGUxYTIzY2U0 IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjQwLDYg KzI0MCwxMCBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVwbGFjZWFibAogICAgICAgICAgIHRoZSB0cmFuc2Fj dGlvbiBpcyBjb21taXR0ZWQuIE5vdGUgdGhhdCBpZiBhbiBlcnJvciBoYXBwZW5zIHdoZW4KICAg ICAgICAgICBhcHBseWluZyBjaGFuZ2VzIGluIGEgYmFja2dyb3VuZCB3b3JrZXIsIGl0IG1pZ2h0 IG5vdCByZXBvcnQgdGhlCiAgICAgICAgICAgZmluaXNoIExTTiBvZiB0aGUgcmVtb3RlIHRyYW5z YWN0aW9uIGluIHRoZSBzZXJ2ZXIgbG9nLgorICAgICAgICAgIFRvIHJ1biBpbiB0aGlzIG1vZGUs IHRoZXJlIGFyZSBmb2xsb3dpbmcgdHdvIHJlcXVpcmVtZW50cy4gVGhlIGZpcnN0CisgICAgICAg ICAgaXMgdGhhdCB0aGUgdW5pcXVlIGNvbHVtbiBzaG91bGQgYmUgdGhlIHNhbWUgYmV0d2VlbiBw dWJsaXNoZXIgYW5kCisgICAgICAgICAgc3Vic2NyaWJlcjsgdGhlIHNlY29uZCBpcyB0aGF0IHRo ZXJlIHNob3VsZCBub3QgYmUgYW55IG5vbi1pbW11dGFibGUKKyAgICAgICAgICBmdW5jdGlvbiBp biBzdWJzY3JpYmVyLXNpZGUgcmVwbGljYXRlZCB0YWJsZS4KICAgICAgICAgIDwvcGFyYT4KICAg ICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dyb2tlci5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd3Jva2VyLmMKaW5kZXggN2U4NjgxNTkwZi4u MWM4ZGJmYTliNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9h cHBseWJnd3Jva2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBs eWJnd3Jva2VyLmMKQEAgLTc3MywzICs3NzMsNDcgQEAgYXBwbHlfYmd3b3JrZXJfc3VieGFjdF9p bmZvX2FkZChUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkKQogCQlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkY3R4KTsKIAl9CiB9CisKKy8qCisgKiBDaGVjayBpZiBjaGFuZ2VzIG9uIHRoaXMgbG9n aWNhbCByZXBsaWNhdGlvbiByZWxhdGlvbiBjYW4gYmUgYXBwbGllZCBieQorICogYXBwbHkgYmFj a2dyb3VuZCB3b3JrZXIuCisgKgorICogQWx0aG91Z2ggd2UgbWFpbnRhaW5zIHRoZSBjb21taXQg b3JkZXIgYnkgYWxsb3dpbmcgb25seSBvbmUgcHJvY2VzcyB0bworICogY29tbWl0IGF0IGEgdGlt ZSwgb3VyIGFjY2VzcyBvcmRlciB0byB0aGUgcmVsYXRpb24gaGFzIGNoYW5nZWQuCisgKiBUaGlz IGNvdWxkIGNhdXNlIHVuZXhwZWN0ZWQgcHJvYmxlbXMgaWYgdGhlIHVuaXF1ZSBjb2x1bW4gb24g dGhlIHJlcGxpY2F0ZWQKKyAqIHRhYmxlIGlzIGluY29uc2lzdGVudCB3aXRoIHRoZSBwdWJsaXNo ZXItc2lkZSBvciBjb250YWlucyBub24taW1tdXRhYmxlCisgKiBmdW5jdGlvbnMgd2hlbiBhcHBs eWluZyB0cmFuc2FjdGlvbnMgaW4gdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLgorICovCit2 b2lkCithcHBseV9iZ3dvcmtlcl9yZWxhdGlvbl9jaGVjayhMb2dpY2FsUmVwUmVsTWFwRW50cnkg KnJlbCkKK3sKKwkvKiBDaGVjayBvbmx5IHdlIGFyZSBpbiBhcHBseSBiZ3dvcmtlci4gKi8KKwlp ZiAoIWFtX2FwcGx5X2Jnd29ya2VyKCkpCisJCXJldHVybjsKKworCS8qCisJICogSWYgaXQgaXMg YSBwYXJ0aXRpb25lZCB0YWJsZSwgd2UgZG8gbm90IGNoZWNrIGl0LCB3ZSB3aWxsIGNoZWNrIGl0 cworCSAqIHBhcnRpdGlvbiBsYXRlci4KKwkgKi8KKwlpZiAocmVsLT5sb2NhbHJlbC0+cmRfcmVs LT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCXJldHVybjsKKworCS8q CisJICogSWYgYW55IHVuaXF1ZSBpbmRleCBleGlzdCwgY2hlY2sgdGhhdCB0aGV5IGFyZSBzYW1l IGFzIHJlbW90ZXJlbC4KKwkgKi8KKwlpZiAoIXJlbC0+c2FtZXVuaXF1ZSkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJ IGVycm1zZygiY2Fubm90IHJlcGxpY2F0ZSByZWxhdGlvbiB3aXRoIGRpZmZlcmVudCB1bmlxdWUg aW5kZXgiKSwKKwkJCQkgZXJyaGludCgiUGxlYXNlIGNoYW5nZSB0aGUgc3RyZWFtaW5nIG9wdGlv biB0byAnb24nIGluc3RlYWQgb2YgJ2FwcGx5Jy4iKSkpOworCisJLyoKKwkgKiBDaGVjayBpZiB0 aGVyZSBpcyBhbnkgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiBwcmVzZW50IGluIGV4cHJlc3Npb24g aW4KKwkgKiB0aGlzIHJlbGF0aW9uLgorCSAqLworCWlmIChyZWwtPnZvbGF0aWxpdHkgPT0gRlVO Q1RJT05fTk9OSU1NVVRBQkxFKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgcmVwbGljYXRl IHJlbGF0aW9uLiBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiIp LAorCQkJCSBlcnJoaW50KCJQbGVhc2UgY2hhbmdlIHRoZSBzdHJlYW1pbmcgb3B0aW9uIHRvICdv bicgaW5zdGVhZCBvZiAnYXBwbHknLiIpKSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3Byb3RvLmMKaW5kZXggYTg4ODAzOGViNC4uNmFmMzMwMjI3MCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwpAQCAtMjMsNyArMjMsOCBAQAogLyoKICAqIFByb3Rv Y29sIG1lc3NhZ2UgZmxhZ3MuCiAgKi8KLSNkZWZpbmUgTE9HSUNBTFJFUF9JU19SRVBMSUNBX0lE RU5USVRZIDEKKyNkZWZpbmUgTE9HSUNBTFJFUF9JU19SRVBMSUNBX0lERU5USVRZCQkweDAwMDEK KyNkZWZpbmUgTE9HSUNBTFJFUF9JU19VTklRVUUJCQkJMHgwMDAyCiAKICNkZWZpbmUgTUVTU0FH RV9UUkFOU0FDVElPTkFMICgxPDwwKQogI2RlZmluZSBUUlVOQ0FURV9DQVNDQURFCQkoMTw8MCkK QEAgLTkzMywxMSArOTM0LDU1IEBAIGxvZ2ljYWxyZXBfd3JpdGVfYXR0cnMoU3RyaW5nSW5mbyBv dXQsIFJlbGF0aW9uIHJlbCwgQml0bWFwc2V0ICpjb2x1bW5zKQogCVR1cGxlRGVzYwlkZXNjOwog CWludAkJCWk7CiAJdWludDE2CQlubGl2ZWF0dHMgPSAwOwotCUJpdG1hcHNldCAgKmlkYXR0cnMg PSBOVUxMOworCUJpdG1hcHNldCAgKmlkYXR0cnMgPSBOVUxMLAorCQkJICAgKmF0dHVuaXF1ZSA9 IE5VTEw7CiAJYm9vbAkJcmVwbGlkZW50ZnVsbDsKIAogCWRlc2MgPSBSZWxhdGlvbkdldERlc2Ny KHJlbCk7CiAKKwlpZiAocmVsLT5yZF9yZWwtPnJlbGhhc2luZGV4KQorCXsKKwkJTGlzdAkgICAq aW5kZXhvaWRsaXN0ID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVsKTsKKwkJTGlzdENlbGwgICAq aW5kZXhvaWRzY2FuOworCisJCWZvcmVhY2goaW5kZXhvaWRzY2FuLCBpbmRleG9pZGxpc3QpCisJ CXsKKwkJCU9pZAkJCWluZGV4b2lkID0gbGZpcnN0X29pZChpbmRleG9pZHNjYW4pOworCQkJUmVs YXRpb24JaW5kZXhSZWw7CisKKwkJCS8qIExvb2sgdXAgdGhlIGRlc2NyaXB0aW9uIGZvciBpbmRl eCAqLworCQkJaW5kZXhSZWwgPSBSZWxhdGlvbklkR2V0UmVsYXRpb24oaW5kZXhvaWQpOworCisJ CQlpZiAoIVJlbGF0aW9uSXNWYWxpZChpbmRleFJlbCkpCisJCQkJZWxvZyhFUlJPUiwgImNvdWxk IG5vdCBvcGVuIHJlbGF0aW9uIHdpdGggT0lEICV1IiwgaW5kZXhvaWQpOworCisJCQlpZiAoaW5k ZXhSZWwtPnJkX2luZGV4LT5pbmRpc3VuaXF1ZSkKKwkJCXsKKwkJCQlpbnQJCQlpOworCisJCQkJ LyogQWRkIHJlZmVyZW5jZWQgYXR0cmlidXRlcyB0byBpZGluZGV4YXR0cnMgKi8KKwkJCQlmb3Ig KGkgPSAwOyBpIDwgaW5kZXhSZWwtPnJkX2luZGV4LT5pbmRuYXR0czsgaSsrKQorCQkJCXsKKwkJ CQkJaW50CQkJYXR0cm51bSA9IGluZGV4UmVsLT5yZF9pbmRleC0+aW5ka2V5LnZhbHVlc1tpXTsK KworCQkJCQkvKgorCQkJCQkgKiBXZSBkb24ndCBpbmNsdWRlIG5vbi1rZXkgY29sdW1ucyBpbnRv IGlkaW5kZXhhdHRycworCQkJCQkgKiBiaXRtYXBzLiBTZWUgUmVsYXRpb25HZXRJbmRleEF0dHJC aXRtYXAuCisJCQkJCSAqLworCQkJCQlpZiAoYXR0cm51bSAhPSAwKQorCQkJCQl7CisJCQkJCQlp ZiAoaSA8IGluZGV4UmVsLT5yZF9pbmRleC0+aW5kbmtleWF0dHMgJiYKKwkJCQkJCQkhYm1zX2lz X21lbWJlcihhdHRybnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciwgYXR0 dW5pcXVlKSkKKwkJCQkJCQlhdHR1bmlxdWUgPSBibXNfYWRkX21lbWJlcihhdHR1bmlxdWUsCisJ CQkJCQkJCQkJCQkJICAgYXR0cm51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1i ZXIpOworCQkJCQl9CisJCQkJfQorCQkJfQorCQkJUmVsYXRpb25DbG9zZShpbmRleFJlbCk7CisJ CX0KKwkJbGlzdF9mcmVlKGluZGV4b2lkbGlzdCk7CisJfQorCiAJLyogc2VuZCBudW1iZXIgb2Yg bGl2ZSBhdHRyaWJ1dGVzICovCiAJZm9yIChpID0gMDsgaSA8IGRlc2MtPm5hdHRzOyBpKyspCiAJ ewpAQCAtOTc2LDYgKzEwMjEsMTAgQEAgbG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZv IG91dCwgUmVsYXRpb24gcmVsLCBCaXRtYXBzZXQgKmNvbHVtbnMpCiAJCQkJCQkgIGlkYXR0cnMp KQogCQkJZmxhZ3MgfD0gTE9HSUNBTFJFUF9JU19SRVBMSUNBX0lERU5USVRZOwogCisJCWlmIChi bXNfaXNfbWVtYmVyKGF0dC0+YXR0bnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51 bWJlciwKKwkJCQkJCSAgYXR0dW5pcXVlKSkKKwkJCWZsYWdzIHw9IExPR0lDQUxSRVBfSVNfVU5J UVVFOworCiAJCXBxX3NlbmRieXRlKG91dCwgZmxhZ3MpOwogCiAJCS8qIGF0dHJpYnV0ZSBuYW1l ICovCkBAIC0xMDAxLDcgKzEwNTAsOCBAQCBsb2dpY2FscmVwX3JlYWRfYXR0cnMoU3RyaW5nSW5m byBpbiwgTG9naWNhbFJlcFJlbGF0aW9uICpyZWwpCiAJaW50CQkJbmF0dHM7CiAJY2hhcgkgICoq YXR0bmFtZXM7CiAJT2lkCQkgICAqYXR0dHlwczsKLQlCaXRtYXBzZXQgICphdHRrZXlzID0gTlVM TDsKKwlCaXRtYXBzZXQgICphdHRrZXlzID0gTlVMTCwKKwkJCSAgICphdHR1bmlxdWUgPSBOVUxM OwogCiAJbmF0dHMgPSBwcV9nZXRtc2dpbnQoaW4sIDIpOwogCWF0dG5hbWVzID0gcGFsbG9jKG5h dHRzICogc2l6ZW9mKGNoYXIgKikpOwpAQCAtMTAxMiwxMSArMTA2MiwxNCBAQCBsb2dpY2FscmVw X3JlYWRfYXR0cnMoU3RyaW5nSW5mbyBpbiwgTG9naWNhbFJlcFJlbGF0aW9uICpyZWwpCiAJewog CQl1aW50OAkJZmxhZ3M7CiAKLQkJLyogQ2hlY2sgZm9yIHJlcGxpY2EgaWRlbnRpdHkgY29sdW1u ICovCisJCS8qIENoZWNrIGZvciByZXBsaWNhIGlkZW50aXR5IGFuZCB1bmlxdWUgY29sdW1uICov CiAJCWZsYWdzID0gcHFfZ2V0bXNnYnl0ZShpbik7CiAJCWlmIChmbGFncyAmIExPR0lDQUxSRVBf SVNfUkVQTElDQV9JREVOVElUWSkKIAkJCWF0dGtleXMgPSBibXNfYWRkX21lbWJlcihhdHRrZXlz LCBpKTsKIAorCQlpZiAoZmxhZ3MgJiBMT0dJQ0FMUkVQX0lTX1VOSVFVRSkKKwkJCWF0dHVuaXF1 ZSA9IGJtc19hZGRfbWVtYmVyKGF0dHVuaXF1ZSwgaSk7CisKIAkJLyogYXR0cmlidXRlIG5hbWUg Ki8KIAkJYXR0bmFtZXNbaV0gPSBwc3RyZHVwKHBxX2dldG1zZ3N0cmluZyhpbikpOwogCkBAIC0x MDMwLDYgKzEwODMsNyBAQCBsb2dpY2FscmVwX3JlYWRfYXR0cnMoU3RyaW5nSW5mbyBpbiwgTG9n aWNhbFJlcFJlbGF0aW9uICpyZWwpCiAJcmVsLT5hdHRuYW1lcyA9IGF0dG5hbWVzOwogCXJlbC0+ YXR0dHlwcyA9IGF0dHR5cHM7CiAJcmVsLT5hdHRrZXlzID0gYXR0a2V5czsKKwlyZWwtPmF0dHVu aXF1ZSA9IGF0dHVuaXF1ZTsKIAlyZWwtPm5hdHRzID0gbmF0dHM7CiB9CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYwppbmRleCAxOGU2NTdjZGZlLi5hMzYwMDdh MjA5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9u LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCkBAIC0x OSwxMiArMTksMTkgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy90YWJsZS5oIgogI2luY2x1ZGUgImNh dGFsb2cvbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVsLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvdHJp Z2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAibm9kZXMv bWFrZWZ1bmNzLmgiCisjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dv cmtlcl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIKICNp bmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2lu Y2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKIAog CiBzdGF0aWMgTWVtb3J5Q29udGV4dCBMb2dpY2FsUmVwUmVsTWFwQ29udGV4dCA9IE5VTEw7CkBA IC05MSw2ICs5OCwyMyBAQCBsb2dpY2FscmVwX3JlbG1hcF9pbnZhbGlkYXRlX2NiKERhdHVtIGFy ZywgT2lkIHJlbG9pZCkKIAl9CiB9CiAKKy8qCisgKiBSZXNldCB0aGUgZmxhZyB2b2xhdGlsaXR5 IG9mIGFsbCBleGlzdGluZyBlbnRyeSBpbiB0aGUgcmVsYXRpb24gbWFwIGNhY2hlLgorICovCitz dGF0aWMgdm9pZAorbG9naWNhbHJlcF9yZWxtYXBfcmVzZXRfdm9sYXRpbGl0eV9jYihEYXR1bSBh cmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQoreworCUhBU0hfU0VRX1NUQVRVUyBo YXNoX3NlcTsKKwlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5OworCisJaWYgKExvZ2ljYWxS ZXBSZWxNYXAgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJaGFzaF9zZXFfaW5pdCgmaGFzaF9zZXEs IExvZ2ljYWxSZXBSZWxNYXApOworCXdoaWxlICgoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJmhh c2hfc2VxKSkgIT0gTlVMTCkKKwkJZW50cnktPnZvbGF0aWxpdHkgPSBGVU5DVElPTl9VTktOT1dO OworfQorCiAvKgogICogSW5pdGlhbGl6ZSB0aGUgcmVsYXRpb24gbWFwIGNhY2hlLgogICovCkBA IC0xMTYsNiArMTQwLDkgQEAgbG9naWNhbHJlcF9yZWxtYXBfaW5pdCh2b2lkKQogCS8qIFdhdGNo IGZvciBpbnZhbGlkYXRpb24gZXZlbnRzLiAqLwogCUNhY2hlUmVnaXN0ZXJSZWxjYWNoZUNhbGxi YWNrKGxvZ2ljYWxyZXBfcmVsbWFwX2ludmFsaWRhdGVfY2IsCiAJCQkJCQkJCSAgKERhdHVtKSAw KTsKKwlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhQUk9DT0lELAorCQkJCQkJCQkgIGxv Z2ljYWxyZXBfcmVsbWFwX3Jlc2V0X3ZvbGF0aWxpdHlfY2IsCisJCQkJCQkJCSAgKERhdHVtKSAw KTsKIH0KIAogLyoKQEAgLTE0Miw2ICsxNjksNyBAQCBsb2dpY2FscmVwX3JlbG1hcF9mcmVlX2Vu dHJ5KExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpCiAJCXBmcmVlKHJlbW90ZXJlbC0+YXR0 dHlwcyk7CiAJfQogCWJtc19mcmVlKHJlbW90ZXJlbC0+YXR0a2V5cyk7CisJYm1zX2ZyZWUocmVt b3RlcmVsLT5hdHR1bmlxdWUpOwogCiAJaWYgKGVudHJ5LT5hdHRybWFwKQogCQlwZnJlZShlbnRy eS0+YXR0cm1hcCk7CkBAIC0xOTAsNiArMjE4LDcgQEAgbG9naWNhbHJlcF9yZWxtYXBfdXBkYXRl KExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVtb3RlcmVsKQogCX0KIAllbnRyeS0+cmVtb3RlcmVsLnJl cGxpZGVudCA9IHJlbW90ZXJlbC0+cmVwbGlkZW50OwogCWVudHJ5LT5yZW1vdGVyZWwuYXR0a2V5 cyA9IGJtc19jb3B5KHJlbW90ZXJlbC0+YXR0a2V5cyk7CisJZW50cnktPnJlbW90ZXJlbC5hdHR1 bmlxdWUgPSBibXNfY29weShyZW1vdGVyZWwtPmF0dHVuaXF1ZSk7CiAJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGN0eCk7CiB9CiAKQEAgLTMxNSw2ICszNDQsMTYwIEBAIGxvZ2ljYWxyZXBfcmVs X21hcmtfdXBkYXRhYmxlKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpCiAJfQogfQogCisv KgorICogQ2hlY2sgaWYgdW5pcXVlIGluZGV4L2NvbnN0cmFpbnQgbWF0Y2hlcyBhbmQgbWFyayBz YW1ldW5pcXVlIGFuZCB2b2xhdGlsaXR5CisgKiBmbGFnLgorICoKKyAqIERvbid0IHRocm93IGFu eSBlcnJvciBoZXJlIGp1c3QgbWFyayB0aGUgcmVsYXRpb24gZW50cnkgYXMgbm90IHNhbWV1bmlx dWUgb3IKKyAqIEZVTkNUSU9OX05PTklNTVVUQUJMRSBhcyB3ZSBvbmx5IGNoZWNrIHRoZXNlIGlu IGFwcGx5IGJhY2tncm91bmQgd29ya2VyLgorICovCitzdGF0aWMgdm9pZAorbG9naWNhbHJlcF9y ZWxfbWFya19zYWZlX2luX2FwcGx5X2Jnd29ya2VyKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50 cnkpCit7CisJQml0bWFwc2V0ICAgKnVrZXk7CisJaW50CQkJaTsKKwlUdXBsZURlc2MJdHVwZGVz YzsKKwlpbnQJCQlhdHRudW07CisJTGlzdAkgICAqZmtleXMgPSBOSUw7CisKKwkvKgorCSAqIENo ZWNrIHRoYXQgdGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHJlbGF0aW9uIG9uIHRoZSBzdWJzY3Jp YmVyLXNpZGUgaXMKKwkgKiBhbHNvIHRoZSB1bmlxdWUgY29sdW1uIG9uIHRoZSBwdWJsaXNoZXIt c2lkZS4KKwkgKi8KKwllbnRyeS0+c2FtZXVuaXF1ZSA9IHRydWU7CisJdWtleSA9IFJlbGF0aW9u R2V0SW5kZXhBdHRyQml0bWFwKGVudHJ5LT5sb2NhbHJlbCwKKwkJCQkJCQkJCSAgSU5ERVhfQVRU Ul9CSVRNQVBfS0VZKTsKKworCWlmICh1a2V5KQorCXsKKwkJaSA9IC0xOworCQl3aGlsZSAoKGkg PSBibXNfbmV4dF9tZW1iZXIodWtleSwgaSkpID49IDApCisJCXsKKwkJCWF0dG51bSA9IEF0dHJO dW1iZXJHZXRBdHRyT2Zmc2V0KGkgKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVy KTsKKworCQkJaWYgKGVudHJ5LT5hdHRybWFwLT5hdHRudW1zW2F0dG51bV0gPCAwIHx8CisJCQkJ IWJtc19pc19tZW1iZXIoZW50cnktPmF0dHJtYXAtPmF0dG51bXNbYXR0bnVtXSwgZW50cnktPnJl bW90ZXJlbC5hdHR1bmlxdWUpKQorCQkJeworCQkJCWVudHJ5LT5zYW1ldW5pcXVlID0gZmFsc2U7 CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9CisKKwkvKgorCSAqIENoZWNrIHdoZXRoZXIgdGhl cmUgaXMgYW55IG5vbi1pbW11dGFibGUgZnVuY3Rpb24gaW4gdGhlIGxvY2FsIHRhYmxlLgorCSAq CisJICogYS4gVGhlIGZ1bmN0aW9uIGluIHRyaWdnZXJzOworCSAqIGIuIENvbHVtbiBkZWZhdWx0 IHZhbHVlIGV4cHJlc3Npb25zIGFuZCBkb21haW4gY29uc3RyYWludHM7CisJICogYy4gQ29uc3Ry YWludCBleHByZXNzaW9uczsKKwkgKiBkLiBGb3JlaWduIGtleXMuCisJICovCisJaWYgKGVudHJ5 LT52b2xhdGlsaXR5ICE9IEZVTkNUSU9OX1VOS05PV04pCisJCXJldHVybjsKKworCS8qIEluaXRp YWxpemUgdGhlIGZsYWcuICovCisJZW50cnktPnZvbGF0aWxpdHkgPSBGVU5DVElPTl9JTU1VVEFC TEU7CisKKwkvKiBDaGVjayB0aGUgdHJpZ2dlciBmdW5jdGlvbnMuICovCisJaWYgKGVudHJ5LT5s b2NhbHJlbC0+dHJpZ2Rlc2MgIT0gTlVMTCkKKwl7CisJCWZvciAoaSA9IDA7IGkgPCBlbnRyeS0+ bG9jYWxyZWwtPnRyaWdkZXNjLT5udW10cmlnZ2VyczsgaSsrKQorCQl7CisJCQlUcmlnZ2VyICAg ICp0cmlnID0gZW50cnktPmxvY2FscmVsLT50cmlnZGVzYy0+dHJpZ2dlcnMgKyBpOworCisJCQlp ZiAodHJpZy0+dGdlbmFibGVkICE9IFRSSUdHRVJfRklSRVNfQUxXQVlTICYmCisJCQkJdHJpZy0+ dGdlbmFibGVkICE9IFRSSUdHRVJfRklSRVNfT05fUkVQTElDQSkKKwkJCQljb250aW51ZTsKKwor CQkJaWYgKGZ1bmNfdm9sYXRpbGUodHJpZy0+dGdmb2lkKSAhPSBQUk9WT0xBVElMRV9JTU1VVEFC TEUpCisJCQl7CisJCQkJZW50cnktPnZvbGF0aWxpdHkgPSBGVU5DVElPTl9OT05JTU1VVEFCTEU7 CisJCQkJcmV0dXJuOworCQkJfQorCQl9CisJfQorCisJLyogQ2hlY2sgdGhlIGNvbHVtbnMuICov CisJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IoZW50cnktPmxvY2FscmVsKTsKKwlmb3IgKGF0 dG51bSA9IDA7IGF0dG51bSA8IHR1cGRlc2MtPm5hdHRzOyBhdHRudW0rKykKKwl7CisJCUZvcm1f cGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIodHVwZGVzYywgYXR0bnVtKTsKKworCQkv KiBXZSBkb24ndCBuZWVkIGluZm8gZm9yIGRyb3BwZWQgb3IgZ2VuZXJhdGVkIGF0dHJpYnV0ZXMg Ki8KKwkJaWYgKGF0dC0+YXR0aXNkcm9wcGVkIHx8IGF0dC0+YXR0Z2VuZXJhdGVkKQorCQkJY29u dGludWU7CisKKwkJLyoKKwkJICogV2UgZG9uJ3QgbmVlZCB0byBjaGVjayBjb2x1bW5zIHRoYXQg b25seSBleGlzdCBvbiB0aGUKKwkJICogc3Vic2NyaWJlcgorCQkgKi8KKwkJaWYgKGVudHJ5LT5h dHRybWFwLT5hdHRudW1zW2F0dG51bV0gPCAwKQorCQkJY29udGludWU7CisKKwkJaWYgKGF0dC0+ YXR0aGFzZGVmKQorCQl7CisJCQlOb2RlCSAgICpkZWZhdWx0ZXhwcjsKKworCQkJZGVmYXVsdGV4 cHIgPSBidWlsZF9jb2x1bW5fZGVmYXVsdChlbnRyeS0+bG9jYWxyZWwsIGF0dG51bSArIDEpOwor CQkJaWYgKGNvbnRhaW5fbXV0YWJsZV9mdW5jdGlvbnMoZGVmYXVsdGV4cHIpKQorCQkJeworCQkJ CWVudHJ5LT52b2xhdGlsaXR5ID0gRlVOQ1RJT05fTk9OSU1NVVRBQkxFOworCQkJCXJldHVybjsK KwkJCX0KKwkJfQorCisJCS8qCisJCSAqIElmIHRoZSBjb2x1bW4gaXMgb2YgYSBET01BSU4gdHlw ZSwgZGV0ZXJtaW5lIHdoZXRoZXIKKwkJICogdGhhdCBkb21haW4gaGFzIGFueSBDSEVDSyBleHBy ZXNzaW9ucyB0aGF0IGFyZSBub3QKKwkJICogaW1tdXRhYmxlLgorCQkgKi8KKwkJaWYgKGdldF90 eXB0eXBlKGF0dC0+YXR0dHlwaWQpID09IFRZUFRZUEVfRE9NQUlOKQorCQl7CisJCQlMaXN0CSAg ICpkb21haW5fY29uc3RyYWludHM7CisJCQlMaXN0Q2VsbCAgICpsYzsKKworCQkJZG9tYWluX2Nv bnN0cmFpbnRzID0gR2V0RG9tYWluQ29uc3RyYWludHMoYXR0LT5hdHR0eXBpZCk7CisKKwkJCWZv cmVhY2gobGMsIGRvbWFpbl9jb25zdHJhaW50cykKKwkJCXsKKwkJCQlEb21haW5Db25zdHJhaW50 U3RhdGUgKmNvbiA9IChEb21haW5Db25zdHJhaW50U3RhdGUgKikgbGZpcnN0KGxjKTsKKworCQkJ CWlmIChjb24tPmNoZWNrX2V4cHIgJiYgY29udGFpbl9tdXRhYmxlX2Z1bmN0aW9ucygoTm9kZSAq KSBjb24tPmNoZWNrX2V4cHIpKQorCQkJCXsKKwkJCQkJZW50cnktPnZvbGF0aWxpdHkgPSBGVU5D VElPTl9OT05JTU1VVEFCTEU7CisJCQkJCXJldHVybjsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisK KwkvKiBDaGVjayB0aGUgY29uc3RyYWludHMuICovCisJaWYgKHR1cGRlc2MtPmNvbnN0cikKKwl7 CisJCUNvbnN0ckNoZWNrICpjaGVjayA9IHR1cGRlc2MtPmNvbnN0ci0+Y2hlY2s7CisKKwkJLyoK KwkJICogRGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBhbnkgQ0hFQ0sgY29uc3RyYWludHMgd2hpY2gK KwkJICogY29udGFpbnMgbm9uLWltbXV0YWJsZSBmdW5jdGlvbi4KKwkJICovCisJCWZvciAoaSA9 IDA7IGkgPCB0dXBkZXNjLT5jb25zdHItPm51bV9jaGVjazsgaSsrKQorCQl7CisJCQlFeHByCSAg ICpjaGVja19leHByID0gc3RyaW5nVG9Ob2RlKGNoZWNrW2ldLmNjYmluKTsKKworCQkJaWYgKGNv bnRhaW5fbXV0YWJsZV9mdW5jdGlvbnMoKE5vZGUgKikgY2hlY2tfZXhwcikpCisJCQl7CisJCQkJ ZW50cnktPnZvbGF0aWxpdHkgPSBGVU5DVElPTl9OT05JTU1VVEFCTEU7CisJCQkJcmV0dXJuOwor CQkJfQorCQl9CisJfQorCisJLyogQ2hlY2sgdGhlIGZvcmVpZ24ga2V5cy4gKi8KKwlma2V5cyA9 IFJlbGF0aW9uR2V0RktleUxpc3QoZW50cnktPmxvY2FscmVsKTsKKwlpZiAoZmtleXMpCisJCWVu dHJ5LT52b2xhdGlsaXR5ID0gRlVOQ1RJT05fTk9OSU1NVVRBQkxFOworfQorCiAvKgogICogT3Bl biB0aGUgbG9jYWwgcmVsYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSByZW1vdGUgb25lLgogICoK QEAgLTQzMyw2ICs2MTYsMTIgQEAgbG9naWNhbHJlcF9yZWxfb3BlbihMb2dpY2FsUmVwUmVsSWQg cmVtb3RlaWQsIExPQ0tNT0RFIGxvY2ttb2RlKQogCQkvKiBDaGVjayB0aGF0IHJlcGxpY2EgaWRl bnRpdHkgbWF0Y2hlcy4gKi8KIAkJbG9naWNhbHJlcF9yZWxfbWFya191cGRhdGFibGUoZW50cnkp OwogCisJCS8qCisJCSAqIFNldCBmbGFncyB0byBjaGVjayBsYXRlciB3aGV0aGVyIGNoYW5nZXMg Y291bGQgYmUgYXBwbGllZCBpbiB0aGUKKwkJICogYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuCisJ CSAqLworCQlsb2dpY2FscmVwX3JlbF9tYXJrX3NhZmVfaW5fYXBwbHlfYmd3b3JrZXIoZW50cnkp OworCiAJCWVudHJ5LT5sb2NhbHJlbHZhbGlkID0gdHJ1ZTsKIAl9CiAKQEAgLTYyOSw2ICs4MTgs NyBAQCBsb2dpY2FscmVwX3BhcnRpdGlvbl9vcGVuKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcm9v dCwKIAkJfQogCQllbnRyeS0+cmVtb3RlcmVsLnJlcGxpZGVudCA9IHJlbW90ZXJlbC0+cmVwbGlk ZW50OwogCQllbnRyeS0+cmVtb3RlcmVsLmF0dGtleXMgPSBibXNfY29weShyZW1vdGVyZWwtPmF0 dGtleXMpOworCQllbnRyeS0+cmVtb3RlcmVsLmF0dHVuaXF1ZSA9IGJtc19jb3B5KHJlbW90ZXJl bC0+YXR0dW5pcXVlKTsKIAl9CiAKIAllbnRyeS0+bG9jYWxyZWwgPSBwYXJ0cmVsOwpAQCAtNjcy LDYgKzg2MiwxMiBAQCBsb2dpY2FscmVwX3BhcnRpdGlvbl9vcGVuKExvZ2ljYWxSZXBSZWxNYXBF bnRyeSAqcm9vdCwKIAkvKiBDaGVjayB0aGF0IHJlcGxpY2EgaWRlbnRpdHkgbWF0Y2hlcy4gKi8K IAlsb2dpY2FscmVwX3JlbF9tYXJrX3VwZGF0YWJsZShlbnRyeSk7CiAKKwkvKgorCSAqIFNldCBm bGFncyB0byBjaGVjayBsYXRlciB3aGV0aGVyIGNoYW5nZXMgY291bGQgYmUgYXBwbGllZCBpbiB0 aGUgYXBwbHkKKwkgKiBiYWNrZ3JvdW5kIHdvcmtlci4KKwkgKi8KKwlsb2dpY2FscmVwX3JlbF9t YXJrX3NhZmVfaW5fYXBwbHlfYmd3b3JrZXIoZW50cnkpOworCiAJZW50cnktPmxvY2FscmVsdmFs aWQgPSB0cnVlOwogCiAJLyogc3RhdGUgYW5kIHN0YXRlbHNuIGFyZSBsZWZ0IHNldCB0byAwLiAq LwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMu YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKaW5kZXggOGZm YmE3ZTJlNS4uM2NkYmY4YjQ1NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC90YWJsZXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3RhYmxlc3luYy5jCkBAIC04ODQsNiArODg0LDcgQEAgZmV0Y2hfcmVtb3RlX3RhYmxlX2luZm8o Y2hhciAqbnNwbmFtZSwgY2hhciAqcmVsbmFtZSwKIAlscmVsLT5hdHRuYW1lcyA9IHBhbGxvYzAo TWF4VHVwbGVBdHRyaWJ1dGVOdW1iZXIgKiBzaXplb2YoY2hhciAqKSk7CiAJbHJlbC0+YXR0dHlw cyA9IHBhbGxvYzAoTWF4VHVwbGVBdHRyaWJ1dGVOdW1iZXIgKiBzaXplb2YoT2lkKSk7CiAJbHJl bC0+YXR0a2V5cyA9IE5VTEw7CisJbHJlbC0+YXR0dW5pcXVlID0gTlVMTDsKIAogCS8qCiAJICog U3RvcmUgdGhlIGNvbHVtbnMgYXMgYSBsaXN0IG9mIG5hbWVzLiAgSWdub3JlIHRob3NlIHRoYXQg YXJlIG5vdApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggN2Qw NTI1NGJkZS4uYWNmNjQ5NGNkNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dv cmtlci5jCkBAIC0xMzY1LDYgKzEzNjUsMTYgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdG9wKFN0 cmluZ0luZm8gcykKIAl7CiAJCWNoYXIJCWFjdGlvbiA9IExPR0lDQUxfUkVQX01TR19TVFJFQU1f U1RPUDsKIAorCQkvKgorCQkgKiBUaGVyZSBpcyBubyBuZWVkIHRvIHdhaXQgaGVyZSB0byBhbGxv dyBzdHJlYW1fc3RvcCB0byBjb21wbGV0ZSBieQorCQkgKiBiYWNrZ3JvdW5kIHdvcmtlciB0byBh dm9pZCBkZWFkbG9ja3MuCisJCSAqCisJCSAqIFRoZSBkZWFkbG9jayBwcm9ibGVtIG9ubHkgb2Nj dXJzIGlmIHJlbGF0aW9uJ3MgdW5pcXVlCisJCSAqIGluZGV4L2NvbnN0cmFpbnQgaXMgZGlmZmVy ZW50IGJldHdlZW4gcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyLiBCdXQKKwkJICogaW4gdGhlc2Ug Y2FzZXMsIHdlIGRvIG5vdCBhbGxvdyB0byBhcHBseSBzdHJlYW1lZCB0cmFuc2FjdGlvbiBpbiB0 aGUKKwkJICogYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgKHNlZSBmdW5jdGlvbgorCQkgKiBhcHBs eV9iZ3dvcmtlcl9yZWxhdGlvbl9jaGVjaykuCisJCSAqLwogCQlhcHBseV9iZ3dvcmtlcl9zZW5k X2RhdGEoc3RyZWFtX2FwcGx5X3dvcmtlciwgMSwgJmFjdGlvbik7CiAKIAkJZWxvZyhERUJVRzEs ICJzdG9wcGVkIHN0cmVhbWluZyBvZiB4aWQgJXUsICV1IGNoYW5nZXMgc3RyZWFtZWQiLCBzdHJl YW1feGlkLCBuY2hhbmdlcyk7CkBAIC0xOTE0LDYgKzE5MjQsOCBAQCBhcHBseV9oYW5kbGVfaW5z ZXJ0KFN0cmluZ0luZm8gcykKIAkvKiBTZXQgcmVsYXRpb24gZm9yIGVycm9yIGNhbGxiYWNrICov CiAJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLnJlbCA9IHJlbDsKIAorCWFwcGx5X2Jnd29ya2Vy X3JlbGF0aW9uX2NoZWNrKHJlbCk7CisKIAkvKiBJbml0aWFsaXplIHRoZSBleGVjdXRvciBzdGF0 ZS4gKi8KIAllZGF0YSA9IGNyZWF0ZV9lZGF0YV9mb3JfcmVsYXRpb24ocmVsKTsKIAllc3RhdGUg PSBlZGF0YS0+ZXN0YXRlOwpAQCAtMjA1MCw2ICsyMDYyLDggQEAgYXBwbHlfaGFuZGxlX3VwZGF0 ZShTdHJpbmdJbmZvIHMpCiAJLyogQ2hlY2sgaWYgd2UgY2FuIGRvIHRoZSB1cGRhdGUuICovCiAJ Y2hlY2tfcmVsYXRpb25fdXBkYXRhYmxlKHJlbCk7CiAKKwlhcHBseV9iZ3dvcmtlcl9yZWxhdGlv bl9jaGVjayhyZWwpOworCiAJLyogSW5pdGlhbGl6ZSB0aGUgZXhlY3V0b3Igc3RhdGUuICovCiAJ ZWRhdGEgPSBjcmVhdGVfZWRhdGFfZm9yX3JlbGF0aW9uKHJlbCk7CiAJZXN0YXRlID0gZWRhdGEt PmVzdGF0ZTsKQEAgLTIyMTgsNiArMjIzMiw4IEBAIGFwcGx5X2hhbmRsZV9kZWxldGUoU3RyaW5n SW5mbyBzKQogCS8qIENoZWNrIGlmIHdlIGNhbiBkbyB0aGUgZGVsZXRlLiAqLwogCWNoZWNrX3Jl bGF0aW9uX3VwZGF0YWJsZShyZWwpOwogCisJYXBwbHlfYmd3b3JrZXJfcmVsYXRpb25fY2hlY2so cmVsKTsKKwogCS8qIEluaXRpYWxpemUgdGhlIGV4ZWN1dG9yIHN0YXRlLiAqLwogCWVkYXRhID0g Y3JlYXRlX2VkYXRhX2Zvcl9yZWxhdGlvbihyZWwpOwogCWVzdGF0ZSA9IGVkYXRhLT5lc3RhdGU7 CkBAIC0yNDAzLDEzICsyNDE5LDE0IEBAIGFwcGx5X2hhbmRsZV90dXBsZV9yb3V0aW5nKEFwcGx5 RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAJfQogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgp OwogCisJcGFydF9lbnRyeSA9IGxvZ2ljYWxyZXBfcGFydGl0aW9uX29wZW4ocmVsbWFwZW50cnks IHBhcnRyZWwsCisJCQkJCQkJCQkJICAgYXR0cm1hcCk7CisKKwlhcHBseV9iZ3dvcmtlcl9yZWxh dGlvbl9jaGVjayhwYXJ0X2VudHJ5KTsKKwogCS8qIENoZWNrIGlmIHdlIGNhbiBkbyB0aGUgdXBk YXRlIG9yIGRlbGV0ZSBvbiB0aGUgbGVhZiBwYXJ0aXRpb24uICovCiAJaWYob3BlcmF0aW9uID09 IENNRF9VUERBVEUgfHwgb3BlcmF0aW9uID09IENNRF9ERUxFVEUpCi0JewotCQlwYXJ0X2VudHJ5 ID0gbG9naWNhbHJlcF9wYXJ0aXRpb25fb3BlbihyZWxtYXBlbnRyeSwgcGFydHJlbCwKLQkJCQkJ CQkJCQkJICAgYXR0cm1hcCk7CiAJCWNoZWNrX3JlbGF0aW9uX3VwZGF0YWJsZShwYXJ0X2VudHJ5 KTsKLQl9CiAKIAlzd2l0Y2ggKG9wZXJhdGlvbikKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS90eXBjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2Fj aGUuYwppbmRleCA4MDhmOWViZDBkLi5iMjQ4ODk5ZDgyIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5 cGNhY2hlLmMKQEAgLTI1NDAsNiArMjU0MCwyMyBAQCBjb21wYXJlX3ZhbHVlc19vZl9lbnVtKFR5 cGVDYWNoZUVudHJ5ICp0Y2FjaGUsIE9pZCBhcmcxLCBPaWQgYXJnMikKIAkJcmV0dXJuIDA7CiB9 CiAKKy8qCisgKiBHZXREb21haW5Db25zdHJhaW50cyAtLS0gZ2V0IERvbWFpbkNvbnN0cmFpbnRT dGF0ZSBsaXN0IG9mIHNwZWNpZmllZCBkb21haW4gdHlwZQorICovCitMaXN0ICoKK0dldERvbWFp bkNvbnN0cmFpbnRzKE9pZCB0eXBlX2lkKQoreworCVR5cGVDYWNoZUVudHJ5ICp0eXBlbnRyeTsK KwlMaXN0CQkgICAqY29uc3RyYWludHMgPSBOSUw7CisKKwl0eXBlbnRyeSA9IGxvb2t1cF90eXBl X2NhY2hlKHR5cGVfaWQsIFRZUEVDQUNIRV9ET01BSU5fQ09OU1RSX0lORk8pOworCisJaWYodHlw ZW50cnktPmRvbWFpbkRhdGEgIT0gTlVMTCkKKwkJY29uc3RyYWludHMgPSB0eXBlbnRyeS0+ZG9t YWluRGF0YS0+Y29uc3RyYWludHM7CisKKwlyZXR1cm4gY29uc3RyYWludHM7Cit9CisKIC8qCiAg KiBMb2FkIChvciByZS1sb2FkKSB0aGUgZW51bURhdGEgbWVtYmVyIG9mIHRoZSB0eXBjYWNoZSBl bnRyeS4KICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHBy b3RvLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAppbmRleCA3YmJh NzdjOWU3Li5hNTAzZWI2MmMyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9s b2dpY2FscHJvdG8uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8u aApAQCAtMTA4LDYgKzEwOCw3IEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBSZWxhdGlvbgog CWNoYXIJCXJlcGxpZGVudDsJCS8qIHJlcGxpY2EgaWRlbnRpdHkgKi8KIAljaGFyCQlyZWxraW5k OwkJLyogcmVtb3RlIHJlbGF0aW9uIGtpbmQgKi8KIAlCaXRtYXBzZXQgICphdHRrZXlzOwkJLyog Qml0bWFwIG9mIGtleSBjb2x1bW5zICovCisJQml0bWFwc2V0ICAqYXR0dW5pcXVlOwkJLyogQml0 bWFwIG9mIHVuaXF1ZSBjb2x1bW5zICovCiB9IExvZ2ljYWxSZXBSZWxhdGlvbjsKIAogLyogVHlw ZSBtYXBwaW5nIGluZm8gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xv Z2ljYWxyZWxhdGlvbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9u LmgKaW5kZXggNzhjZDdlNzdmNS4uNDQ3NmNmN2NlYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vbG9naWNhbHJlbGF0aW9uLmgKQEAgLTE1LDYgKzE1LDE3IEBACiAjaW5jbHVkZSAiYWNjZXNz L2F0dG1hcC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIgogCisvKgor ICoJU3RhdGVzIHRvIGRldGVybWluZSB2b2xhdGlsaXR5IG9mIHRoZSBmdW5jdGlvbiBpbiBleHBy ZXNzaW9ucyBpbiBvbmUKKyAqCXJlbGF0aW9uLgorICovCit0eXBlZGVmIGVudW0gUmVsRnVuY1Zv bGF0aWxpdHkKK3sKKwlGVU5DVElPTl9VTktOT1dOID0gMCwJLyogaW5pdGlhbGl6aW5nICAqLwor CUZVTkNUSU9OX0lNTVVUQUJMRSwJCS8qIGFsbCBmdW5jdGlvbnMgYXJlIGltbXV0YWJsZSBmdW5j dGlvbiAqLworCUZVTkNUSU9OX05PTklNTVVUQUJMRQkvKiBhdCBsZWFzdCBvbmUgbm9uLWltbXV0 YWJsZSBmdW5jdGlvbiAqLworfSBSZWxGdW5jVm9sYXRpbGl0eTsKKwogdHlwZWRlZiBzdHJ1Y3Qg TG9naWNhbFJlcFJlbE1hcEVudHJ5CiB7CiAJTG9naWNhbFJlcFJlbGF0aW9uIHJlbW90ZXJlbDsJ Lyoga2V5IGlzIHJlbW90ZXJlbC5yZW1vdGVpZCAqLwpAQCAtMzEsNiArNDIsMTEgQEAgdHlwZWRl ZiBzdHJ1Y3QgTG9naWNhbFJlcFJlbE1hcEVudHJ5CiAJUmVsYXRpb24JbG9jYWxyZWw7CQkvKiBy ZWxjYWNoZSBlbnRyeSAoTlVMTCB3aGVuIGNsb3NlZCkgKi8KIAlBdHRyTWFwICAgICphdHRybWFw OwkJLyogbWFwIG9mIGxvY2FsIGF0dHJpYnV0ZXMgdG8gcmVtb3RlIG9uZXMgKi8KIAlib29sCQl1 cGRhdGFibGU7CQkvKiBDYW4gYXBwbHkgdXBkYXRlcy9kZWxldGVzPyAqLworCWJvb2wJCXNhbWV1 bmlxdWU7CQkvKiBBcmUgYWxsIHVuaXF1ZSBjb2x1bW5zIG9mIHRoZSBsb2NhbAorCQkJCQkJCQkg ICByZWxhdGlvbiBjb250YWluZWQgYnkgdGhlIHVuaXF1ZSBjb2x1bW5zIGluCisJCQkJCQkJCSAg IHJlbW90ZT8gKi8KKwlSZWxGdW5jVm9sYXRpbGl0eQl2b2xhdGlsaXR5OwkJLyogYWxsIGZ1bmN0 aW9ucyBpbiBsb2NhbHJlbCBhcmUKKwkJCQkJCQkJICAgaW1tdXRhYmxlIGZ1bmN0aW9uPyAqLwog CiAJLyogU3luYyBzdGF0ZS4gKi8KIAljaGFyCQlzdGF0ZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggMDMwMjgzNmRlZS4uYWMwOGE0MGQ0MiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTE5NSw2ICsxOTUsNyBA QCBleHRlcm4gdm9pZCBhcHBseV9iZ3dvcmtlcl9mcmVlKEFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0 YXRlKTsKIGV4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX2NoZWNrX3N0YXR1cyh2b2lkKTsKIGV4 dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX3NldF9zdGF0dXMoQXBwbHlCZ3dvcmtlclN0YXR1cyBz dGF0dXMpOwogZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfc3VieGFjdF9pbmZvX2FkZChUcmFu c2FjdGlvbklkIGN1cnJlbnRfeGlkKTsKK2V4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX3JlbGF0 aW9uX2NoZWNrKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKTsKIAogc3RhdGljIGlubGluZSBi b29sCiBhbV90YWJsZXN5bmNfd29ya2VyKHZvaWQpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91 dGlscy90eXBjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaAppbmRleCA0MzFh ZDdmMWIzLi5lZDdjMmU3ZjQ4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy90eXBjYWNo ZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmgKQEAgLTE5OSw2ICsxOTksOCBA QCBleHRlcm4gdWludDY0IGFzc2lnbl9yZWNvcmRfdHlwZV9pZGVudGlmaWVyKE9pZCB0eXBlX2lk LCBpbnQzMiB0eXBtb2QpOwogCiBleHRlcm4gaW50CWNvbXBhcmVfdmFsdWVzX29mX2VudW0oVHlw ZUNhY2hlRW50cnkgKnRjYWNoZSwgT2lkIGFyZzEsIE9pZCBhcmcyKTsKIAorZXh0ZXJuIExpc3Qg KkdldERvbWFpbkNvbnN0cmFpbnRzKE9pZCB0eXBlX2lkKTsKKwogZXh0ZXJuIHNpemVfdCBTaGFy ZWRSZWNvcmRUeXBtb2RSZWdpc3RyeUVzdGltYXRlKHZvaWQpOwogCiBleHRlcm4gdm9pZCBTaGFy ZWRSZWNvcmRUeXBtb2RSZWdpc3RyeUluaXQoU2hhcmVkUmVjb3JkVHlwbW9kUmVnaXN0cnkgKiwK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRl LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKaW5k ZXggYjUyYWY3NGUzNS4uODE3OTFjOGQzYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKQEAgLTM5LDYgKzM5LDEzIEBAIHN1YiB0ZXN0X3N0 cmVhbWluZwogCQlBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9DCiAJCVNFVCAoc3RyZWFtaW5n ID0gJHN0cmVhbWluZ19tb2RlKSIpOwogCisJaWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAnYXBwbHkn KQorCXsKKwkJJG5vZGVfQy0+c2FmZV9wc3FsKAorCQkJJ3Bvc3RncmVzJywgIgorCQlBTFRFUiBU QUJMRSB0ZXN0X3RhYiBBTFRFUiBjIERST1AgREVGQVVMVCIpOworCX0KKwogCSMgV2FpdCBmb3Ig c3Vic2NyaWJlcnMgdG8gZmluaXNoIGluaXRpYWxpemF0aW9uCiAKIAkkbm9kZV9BLT5wb2xsX3F1 ZXJ5X3VudGlsKApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVh bWluZ19hcHBseS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBw bHkucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uODRhNjkwMGIzMwot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdf YXBwbHkucGwKQEAgLTAsMCArMSwzOTEgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDIyLCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIFRlc3QgdGhlIHJlc3RyaWN0aW9ucyBv ZiBzdHJlYW1pbmcgbW9kZSAiYXBwbHkiIGluIGxvZ2ljYWwgcmVwbGljYXRpb24KKwordXNlIHN0 cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK215ICRvZmZzZXQg PSAwOworCisjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQorbXkgJG5vZGVfcHVibGlzaGVyID0gUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRub2RlX3B1Ymxpc2hl ci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9wdWJsaXNoZXIt PmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCSdsb2dpY2FsX2RlY29kaW5nX3dvcmtf bWVtID0gNjRrQicpOworJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKworIyBDcmVhdGUgc3Vic2Ny aWJlciBub2RlCitteSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl ci0+bmV3KCdzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5pbml0OworJG5vZGVfc3Vi c2NyaWJlci0+c3RhcnQ7CisKKyMgU2V0dXAgc3RydWN0dXJlIG9uIHB1Ymxpc2hlcgorJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFi IChhIGludCBwcmltYXJ5IGtleSwgYiB2YXJjaGFyKSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbmVkIChh IGludCBwcmltYXJ5IGtleSwgYiB2YXJjaGFyKSIpOworCisjIFNldHVwIHN0cnVjdHVyZSBvbiBz dWJzY3JpYmVyCisjIFdlIG5lZWQgdG8gdGVzdCBub3JtYWwgdGFibGUgYW5kIHBhcnRpdGlvbiB0 YWJsZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUg VEFCTEUgdGVzdF90YWIgKGEgaW50IHByaW1hcnkga2V5LCBiIHZhcmNoYXIpIik7Ciskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFi X3BhcnRpdGlvbmVkIChhIGludCBwcmltYXJ5IGtleSwgYiB2YXJjaGFyKSBQQVJUSVRJT04gQlkg UkFOR0UoYSkiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJD UkVBVEUgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIChMSUtFIHRlc3RfdGFiX3BhcnRpdGlvbmVk KSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRB QkxFIHRlc3RfdGFiX3BhcnRpdGlvbmVkIEFUVEFDSCBQQVJUSVRJT04gdGVzdF90YWJfcGFydGl0 aW9uIERFRkFVTFQiCispOworCisjIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24KK215ICRwdWJs aXNoZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3Rn cmVzJzsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQ VUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFy dGl0aW9uZWQgRk9SIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7CisKK215ICRhcHBuYW1l ID0gJ3RhcF9zdWInOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs ICIKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKKwlDT05ORUNUSU9OICckcHVibGlzaGVy X2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScKKwlQVUJMSUNBVElPTiB0YXBfcHVi LCB0YXBfcHViX3BhcnRpdGlvbmVkCisJV0lUSCAoc3RyZWFtaW5nID0gYXBwbHksIGNvcHlfZGF0 YSA9IGZhbHNlKSIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUg cHVibGlzaGVyIGFuZCB0aGUgc3Vic2NyaWJlcgorIyBpcyBkaWZmZXJlbnQuIENoZWNrIHRoZSBl cnJvciByZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIEZpcnN0 IHdlIGNoZWNrIHRoZSB1bmlxdWUgaW5kZXggb24gbm9ybWFsIHRhYmxlLgorJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBVTklRVUUgSU5ERVggdGVzdF90 YWJfYl9pZHggT04gdGVzdF90YWIgKGIpIik7CisKKyMgQ2hlY2sgdGhhdCBhIGJhY2tncm91bmQg d29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBvcHRpb24gaXMKKyMgc3BlY2lmaWVkIGFzICJh cHBseSIuICBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzCisjIGFi b3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCiskbm9k ZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVz c2FnZXMgPSBkZWJ1ZzEiKTsKKyRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpIgor KTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtc XSBzdGFydGVkLywgMCk7Ciskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywKKwkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKyRub2RlX3N1YnNjcmli ZXItPnJlbG9hZDsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9S OiAgY2Fubm90IHJlcGxpY2F0ZSByZWxhdGlvbiB3aXRoIGRpZmZlcmVudCB1bmlxdWUgaW5kZXgv LAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vic2NyaWJl ciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJEUk9QIElOREVYIHRlc3RfdGFiX2JfaWR4Iik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKK215ICRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIik7 CitpcygkcmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFm dGVyIGRyb3BwaW5nIGluZGV4Jyk7CisKKyMgVGhlbiB3ZSBjaGVjayB0aGUgdW5pcXVlIGluZGV4 IG9uIHBhcnRpdGlvbiB0YWJsZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJDUkVBVEUgVU5JUVVFIElOREVYIHRlc3RfdGFiX2JfcGFydGl0aW9uX2lkeCBPTiB0 ZXN0X3RhYl9wYXJ0aXRpb24gKGIpIik7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZy b20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlc3Rf dGFiX3BhcnRpdGlvbmVkIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgNTAwMCkgcyhpKSIKKyk7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygK Kwlxci9FUlJPUjogIGNhbm5vdCByZXBsaWNhdGUgcmVsYXRpb24gd2l0aCBkaWZmZXJlbnQgdW5p cXVlIGluZGV4LywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhl IHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiRFJPUCBJTkRFWCB0ZXN0X3RhYl9iX3BhcnRpdGlvbl9pZHgiKTsKKworJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9Cisg ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCop IEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDApLCAnZGF0 YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsKKworIyBU cmlnZ2VycyB3aGljaCBleGVjdXRlIG5vbi1pbW11dGFibGUgZnVuY3Rpb24gYXJlIG5vdCBhbGxv d2VkIG9uIHRoZQorIyBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBi eSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIEZpcnN0IHdlIGNoZWNrIHRoZSB0 cmlnZ2VyIGZ1bmN0aW9uIG9uIG5vcm1hbCB0YWJsZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0NSRUFURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmMoKSBS RVRVUk5TIFRSSUdHRVIgQVMgXCRcJAorICBCRUdJTgorICAgIFJFVFVSTiBOVUxMOworICBFTkQK K1wkXCQgbGFuZ3VhZ2UgcGxwZ3NxbDsKK0NSRUFURSBUUklHR0VSIGluc2VydF90cmlnCitCRUZP UkUgSU5TRVJUIE9OIHRlc3RfdGFiCitGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgdHJp Z2dlcl9mdW5jKCk7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYiBFTkFCTEUgUkVQTElDQSBUUklHR0VS IGluc2VydF90cmlnOworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93 IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiIpOwor Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICBjYW5ub3QgcmVw bGljYXRlIHJlbGF0aW9uLiBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5j dGlvbi8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgdHJpZ2dlciBvbiB0aGUgc3Vic2NyaWJl ciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIkRST1AgVFJJR0dFUiBpbnNlcnRfdHJpZyBPTiB0ZXN0X3RhYiIpOworCiskbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RhYiIpOworaXMoJHJlc3VsdCwgcXEoMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2Ny aWJlciBhZnRlciBkcm9wcGluZyB0cmlnZ2VyJyk7CisKKyMgVGhlbiB3ZSBjaGVjayB0aGUgdW5p cXVlIGluZGV4IG9uIHBhcnRpdGlvbiB0YWJsZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgKKwkncG9zdGdyZXMnLCBxcXsKK0NSRUFURSBUUklHR0VSIGluc2VydF90cmlnCitCRUZPUkUg SU5TRVJUIE9OIHRlc3RfdGFiX3BhcnRpdGlvbgorRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VE VVJFIHRyaWdnZXJfZnVuYygpOworQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIEVOQUJM RSBSRVBMSUNBIFRSSUdHRVIgaW5zZXJ0X3RyaWc7Cit9KTsKKworIyBDaGVjayB0aGUgc3Vic2Ny aWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9n ZmlsZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBG Uk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9y X2xvZygKKwlxci9FUlJPUjogIGNhbm5vdCByZXBsaWNhdGUgcmVsYXRpb24uIFRoZXJlIGlzIGF0 IGxlYXN0IG9uZSBub24taW1tdXRhYmxlIGZ1bmN0aW9uLywKKwkkb2Zmc2V0KTsKKworIyBEcm9w IHRoZSB0cmlnZ2VyIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiRFJPUCBUUklHR0VSIGluc2VydF90cmln IE9OIHRlc3RfdGFiX3BhcnRpdGlvbiIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25l ZCIpOworaXMoJHJlc3VsdCwgcXEoMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBh ZnRlciBkcm9wcGluZyB0cmlnZ2VyJyk7CisKKyMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBjb2x1 bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIGNvbnRhaW5zIGEKKyMgbm9uLWltbXV0YWJsZSBm dW5jdGlvbiBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQg YnkKKyMgYmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyBGaXJzdCB3ZSBjaGVjayB0 aGUgY29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBvbiBub3JtYWwgdGFibGUuCiskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90 YWIgQUxURVIgQ09MVU1OIGIgU0VUIERFRkFVTFQgcmFuZG9tKCkiKTsKKworIyBDaGVjayB0aGUg c3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJl ci0+bG9nZmlsZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA1MDAwKSBzKGkpIgorKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jf bG9nKAorCXFyL0VSUk9SOiAgY2Fubm90IHJlcGxpY2F0ZSByZWxhdGlvbi4gVGhlcmUgaXMgYXQg bGVhc3Qgb25lIG5vbi1pbW11dGFibGUgZnVuY3Rpb24vLAorCSRvZmZzZXQpOworCisjIERyb3Ag ZGVmYXVsdCB2YWx1ZSBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiIEFM VEVSIENPTFVNTiBiIERST1AgREVGQVVMVCIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOworaXMo JHJlc3VsdCwgcXEoNTAwMCksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVy IGRyb3BwaW5nIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbicpOworCisjIFRoZW4gd2UgY2hlY2sg dGhlIGNvbHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gb24gcGFydGl0aW9uIHRhYmxlLgor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRl c3RfdGFiX3BhcnRpdGlvbiBBTFRFUiBDT0xVTU4gYiBTRVQgREVGQVVMVCByYW5kb20oKSIpOwor CisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAk bm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCispOworCisk bm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICBjYW5ub3QgcmVwbGlj YXRlIHJlbGF0aW9uLiBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlv bi8sCisJJG9mZnNldCk7CisKKyMgRHJvcCBkZWZhdWx0IHZhbHVlIG9uIHRoZSBzdWJzY3JpYmVy LCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIEFMVEVSIENPTFVNTiBiIERST1AgREVG QVVMVCIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworaXMoJHJlc3VsdCwg cXEoNTAwMCksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5n IGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbicpOworCisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQg ZG9tYWluIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUKKyMg ZnVuY3Rpb24gb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVk IGJ5IGJhY2tncm91bmQKKyMgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgQmVjYXVzZSB0aGUgY29s dW1uIHR5cGUgb2YgdGhlIHBhcnRpdGlvbiB0YWJsZSBtdXN0IGJlIHRoZSBzYW1lIGFzIGl0cyBw YXJlbnQKKyMgdGFibGUsIG9ubHkgdGVzdCBub3JtYWwgdGFibGUgaGVyZS4KKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0NSRUFURSBET01BSU4gdGVzdF9k b21haW4gQVMgaW50IENIRUNLKFZBTFVFID4gcmFuZG9tKCkpOworQUxURVIgVEFCTEUgdGVzdF90 YWIgQUxURVIgQ09MVU1OIGEgVFlQRSB0ZXN0X2RvbWFpbjsKK30pOworCisjIENoZWNrIHRoZSBz dWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVy LT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVM RVRFIEZST00gdGVzdF90YWIiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAor CXFyL0VSUk9SOiAgY2Fubm90IHJlcGxpY2F0ZSByZWxhdGlvbi4gVGhlcmUgaXMgYXQgbGVhc3Qg b25lIG5vbi1pbW11dGFibGUgZnVuY3Rpb24vLAorCSRvZmZzZXQpOworCisjIERyb3AgZG9tYWlu IGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRl c3RfdGFiIEFMVEVSIENPTFVNTiBhIFRZUEUgaW50Iik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIik7 CitpcygkcmVzdWx0LCBxcSgwKSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0 ZXIgZHJvcHBpbmcgZG9tYWluIGNvbnN0cmFpbnQgZXhwcmVzc2lvbicKKyk7CisKKyMgSXQgaXMg bm90IGFsbG93ZWQgdGhhdCBjb25zdHJhaW50IGV4cHJlc3Npb24gY29udGFpbnMgYSBub24taW1t dXRhYmxlIGZ1bmN0aW9uCisjIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJv ciByZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzCisjIGNhc2UuCisjIEZpcnN0 IHdlIGNoZWNrIHRoZSBjb25zdHJhaW50IGV4cHJlc3Npb24gb24gbm9ybWFsIHRhYmxlLgorJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUg dGVzdF90YWIgQUREIENPTlNUUkFJTlQgdGVzdF90YWJfY29uIGNoZWNrIChhID4gcmFuZG9tKCkp OworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNl dCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKSIKKyk7CisKKyRub2Rl X3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogIGNhbm5vdCByZXBsaWNhdGUg cmVsYXRpb24uIFRoZXJlIGlzIGF0IGxlYXN0IG9uZSBub24taW1tdXRhYmxlIGZ1bmN0aW9uLywK Kwkkb2Zmc2V0KTsKKworIyBEcm9wIGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBp dCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRF UiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWJfY29uIik7CisKKyRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHRlc3RfdGFiIik7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwKKwknZGF0YSByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgY29uc3RyYWludCBleHByZXNzaW9uJyk7CisK KyMgVGhlbiB3ZSBjaGVjayB0aGUgY29uc3RyYWludCBleHByZXNzaW9uIG9uIHBhcnRpdGlvbiB0 YWJsZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0FM VEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBBREQgQ09OU1RSQUlOVCB0ZXN0X3RhYl9jb24g Y2hlY2sgKGEgPiByYW5kb20oKSk7Cit9KTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cg ZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKwor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3Rf dGFiX3BhcnRpdGlvbmVkIik7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlx ci9FUlJPUjogIGNhbm5vdCByZXBsaWNhdGUgcmVsYXRpb24uIFRoZXJlIGlzIGF0IGxlYXN0IG9u ZSBub24taW1tdXRhYmxlIGZ1bmN0aW9uLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIGNvbnN0cmFp bnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJP UCBDT05TVFJBSU5UIHRlc3RfdGFiX2NvbiIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRp b25lZCIpOworaXMoJHJlc3VsdCwgcXEoMCksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3Jp YmVyIGFmdGVyIGRyb3BwaW5nIGNvbnN0cmFpbnQgZXhwcmVzc2lvbicpOworCisjIEl0IGlzIG5v dCBhbGxvd2VkIHRoYXQgZm9yZWlnbiBrZXkgb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sg dGhlIGVycm9yCisjIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMgY2FzZS4K KyMgRmlyc3Qgd2UgY2hlY2sgdGhlIGZvcmVpZ24ga2V5IG9uIG5vcm1hbCB0YWJsZS4KKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiIp OworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0NSRUFURSBUQUJMRSB0ZXN0 X3RhYl9mIChhIGludCBwcmltYXJ5IGtleSk7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09O U1RSQUlOVCB0ZXN0X3RhYmZrIEZPUkVJR04gS0VZKGEpIFJFRkVSRU5DRVMgdGVzdF90YWJfZihh KTsKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZz ZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCispOworCiskbm9k ZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICBjYW5ub3QgcmVwbGljYXRl IHJlbGF0aW9uLiBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbi8s CisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBvbiB0aGUg c3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09OU1RSQUlOVCB0ZXN0X3Rh YmZrIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisK KyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIik7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwKKwkn ZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdGhlIGZvcmVpZ24g a2V5Jyk7CisKKyMgVGhlbiB3ZSBjaGVjayB0aGUgZm9yZWlnbiBrZXkgb24gcGFydGl0aW9uIHRh YmxlLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0NSRUFURSBUQUJMRSB0 ZXN0X3RhYl9wYXJ0aXRpb25fZiAoYSBpbnQgcHJpbWFyeSBrZXkpOworQUxURVIgVEFCTEUgdGVz dF90YWJfcGFydGl0aW9uIEFERCBDT05TVFJBSU5UIHRlc3RfdGFiX3BhdGl0aW9uX2ZrIEZPUkVJ R04gS0VZKGEpIFJFRkVSRU5DRVMgdGVzdF90YWJfcGFydGl0aW9uX2YoYSk7Cit9KTsKKworIyBD aGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVf c3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiSU5TRVJUIElOVE8gdGVzdF90YWJfcGFydGl0aW9uZWQgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpIgorKTsKKworJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAgY2Fubm90IHJlcGxpY2F0ZSBy ZWxhdGlvbi4gVGhlcmUgaXMgYXQgbGVhc3Qgb25lIG5vbi1pbW11dGFibGUgZnVuY3Rpb24vLAor CSRvZmZzZXQpOworCisjIERyb3AgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgb24gdGhlIHN1 YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5U IHRlc3RfdGFiX3BhdGl0aW9uX2ZrIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVk Iik7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmli ZXIgYWZ0ZXIgZHJvcHBpbmcgdGhlIGZvcmVpZ24ga2V5Jyk7CisKKyRub2RlX3N1YnNjcmliZXIt PnN0b3A7Ciskbm9kZV9wdWJsaXNoZXItPnN0b3A7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi4y My4wLndpbmRvd3MuMQoK --_006_OS3PR01MB62753CDFD0DF1FCBC978AFB39EAF9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v12-0005-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v12-0005-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v12-0005-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=26142; creation-date="Fri, 17 Jun 2022 07:12:00 GMT"; modification-date="Fri, 17 Jun 2022 07:17:09 GMT" Content-Transfer-Encoding: base64 RnJvbSA0NzQwNjYwZjQ5MDQ2MmQ1OGQ2NDdmMGQ4Y2FlNTBlYjBjZDc4YWUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog V2VkLCAxNSBKdW4gMjAyMiAxMTowMjowOCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEyIDUvNV0g UmV0cnkgdG8gYXBwbHkgc3RyZWFtaW5nIHhhY3Qgb25seSBpbiBhcHBseSB3b3JrZXIuCgotLS0K IGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAxMSArKwog ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgICAgIHwgICA0ICsKIHNy Yy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgICAgICAgICB8ICAgMSArCiBzcmMv YmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgICAgfCAgIDQgKy0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8ICAgMSArCiAuLi4vcmVw bGljYXRpb24vbG9naWNhbC9hcHBseWJnd3Jva2VyLmMgICAgICAgfCAgMTkgKystCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAgODkgKysrKysrKysrKysK IHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8ICAgNSArLQog c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCAgICAgICAgIHwgICA0ICsKIC4u Li9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsICAgICB8IDEzOSArKysrKysr KysrLS0tLS0tLS0KIDEwIGZpbGVzIGNoYW5nZWQsIDIwOSBpbnNlcnRpb25zKCspLCA2OCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDVjYjM5YjE4YmQuLjkyOGFkMDJhY2UgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRh bG9ncy5zZ21sCkBAIC03OTA3LDYgKzc5MDcsMTcgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFi bGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwK ICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAgICA8cm93PgorICAgICAg PGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZp bml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3VicmV0cnk8L3N0cnVjdGZpZWxkPiA8dHlw ZT5ib29sPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgSWYgdHJ1 ZSwgdGhlIHN1YnNjcmlwdGlvbiB3aWxsIG5vdCB0cnkgdG8gYXBwbHkgc3RyZWFtaW5nIHRyYW5z YWN0aW9uCisgICAgICAgaW4gPGxpdGVyYWw+YXBwbHk8L2xpdGVyYWw+IG1vZGUuIFNlZQorICAg ICAgIDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24iLz4gZm9yIG1vcmUgaW5m b3JtYXRpb24uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJv dz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJj b2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPnN1YmNvbm5pbmZvPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2Ny aXB0aW9uLnNnbWwKaW5kZXggOGRlMWEyM2NlNC4uNzBmYmY4MTY2OCAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTI0NCw2ICsyNDQsMTAgQEAgQ1JFQVRF IFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0aW9u X25hbWU8L3JlcGxhY2VhYmwKICAgICAgICAgICBpcyB0aGF0IHRoZSB1bmlxdWUgY29sdW1uIHNo b3VsZCBiZSB0aGUgc2FtZSBiZXR3ZWVuIHB1Ymxpc2hlciBhbmQKICAgICAgICAgICBzdWJzY3Jp YmVyOyB0aGUgc2Vjb25kIGlzIHRoYXQgdGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgbm9uLWltbXV0 YWJsZQogICAgICAgICAgIGZ1bmN0aW9uIGluIHN1YnNjcmliZXItc2lkZSByZXBsaWNhdGVkIHRh YmxlLgorICAgICAgICAgIFdoZW4gYXBwbHlpbmcgYSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIGlm IGVpdGhlciByZXF1aXJlbWVudCBpcyBub3QKKyAgICAgICAgICBtZXQsIHRoZSBiYWNrZ3JvdW5k IHdvcmtlciB3aWxsIGV4aXQgd2l0aCBhbiBlcnJvci4gQW5kIHdoZW4gcmV0cnlpbmcKKyAgICAg ICAgICBsYXRlciwgd2Ugd2lsbCB0cnkgdG8gYXBwbHkgdGhpcyB0cmFuc2FjdGlvbiBpbiA8bGl0 ZXJhbD5vbjwvbGl0ZXJhbD4KKyAgICAgICAgICBtb2RlLgogICAgICAgICAgPC9wYXJhPgogICAg ICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv cGdfc3Vic2NyaXB0aW9uLmMKaW5kZXggYWRkNTFjYWFkZi4uMTgyNDM5MGQ3ZCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCkBAIC03MSw2ICs3MSw3IEBAIEdldFN1YnNjcmlw dGlvbihPaWQgc3ViaWQsIGJvb2wgbWlzc2luZ19vaykKIAlzdWItPnN0cmVhbSA9IHN1YmZvcm0t PnN1YnN0cmVhbTsKIAlzdWItPnR3b3BoYXNlc3RhdGUgPSBzdWJmb3JtLT5zdWJ0d29waGFzZXN0 YXRlOwogCXN1Yi0+ZGlzYWJsZW9uZXJyID0gc3ViZm9ybS0+c3ViZGlzYWJsZW9uZXJyOworCXN1 Yi0+cmV0cnkgPSBzdWJmb3JtLT5zdWJyZXRyeTsKIAogCS8qIEdldCBjb25uaW5mbyAqLwogCWRh dHVtID0gU3lzQ2FjaGVHZXRBdHRyKFNVQlNDUklQVElPTk9JRCwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lz dGVtX3ZpZXdzLnNxbAppbmRleCBmZWRhZWQ1MzNiLi4xMGY0ZGQ2Nzg1IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0xMjk4LDggKzEyOTgsOCBAQCBSRVZPS0UgQUxMIE9O IHBnX3JlcGxpY2F0aW9uX29yaWdpbl9zdGF0dXMgRlJPTSBwdWJsaWM7CiAtLSBBbGwgY29sdW1u cyBvZiBwZ19zdWJzY3JpcHRpb24gZXhjZXB0IHN1YmNvbm5pbmZvIGFyZSBwdWJsaWNseSByZWFk YWJsZS4KIFJFVk9LRSBBTEwgT04gcGdfc3Vic2NyaXB0aW9uIEZST00gcHVibGljOwogR1JBTlQg U0VMRUNUIChvaWQsIHN1YmRiaWQsIHN1YnNraXBsc24sIHN1Ym5hbWUsIHN1Ym93bmVyLCBzdWJl bmFibGVkLAotICAgICAgICAgICAgICBzdWJiaW5hcnksIHN1YnN0cmVhbSwgc3VidHdvcGhhc2Vz dGF0ZSwgc3ViZGlzYWJsZW9uZXJyLCBzdWJzbG90bmFtZSwKLSAgICAgICAgICAgICAgc3Vic3lu Y2NvbW1pdCwgc3VicHVibGljYXRpb25zKQorICAgICAgICAgICAgICBzdWJiaW5hcnksIHN1YnN0 cmVhbSwgc3VidHdvcGhhc2VzdGF0ZSwgc3ViZGlzYWJsZW9uZXJyLAorICAgICAgICAgICAgICBz dWJyZXRyeSwgc3Vic2xvdG5hbWUsIHN1YnN5bmNjb21taXQsIHN1YnB1YmxpY2F0aW9ucykKICAg ICBPTiBwZ19zdWJzY3JpcHRpb24gVE8gcHVibGljOwogCiBDUkVBVEUgVklFVyBwZ19zdGF0X3N1 YnNjcmlwdGlvbl9zdGF0cyBBUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vi c2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5j CmluZGV4IDQwODBiYmE5ODcuLjM4Njk3MTg0ZDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJz Y3JpcHRpb25jbWRzLmMKQEAgLTY2Myw2ICs2NjMsNyBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFy c2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJCQkgTE9H SUNBTFJFUF9UV09QSEFTRV9TVEFURV9QRU5ESU5HIDoKIAkJCQkJIExPR0lDQUxSRVBfVFdPUEhB U0VfU1RBVEVfRElTQUJMRUQpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJkaXNh Ymxlb25lcnIgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLmRpc2FibGVvbmVycik7CisJdmFsdWVz W0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSBCb29sR2V0RGF0dW0oZmFsc2Up OwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25uaW5mbyAtIDFdID0KIAkJQ1N0 cmluZ0dldFRleHREYXR1bShjb25uaW5mbyk7CiAJaWYgKG9wdHMuc2xvdF9uYW1lKQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd3Jva2VyLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3cm9rZXIuYwppbmRleCAxYzhk YmZhOWI1Li42MDNkMDYwNWE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2FwcGx5Ymd3cm9rZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2FwcGx5Ymd3cm9rZXIuYwpAQCAtOTksNiArOTksMTkgQEAgY2Fuc3RhcnRhcHBseWJnd29y a2VyKFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIHN0YXJ0KQogCWlmIChzdGFydCAmJiAhWExvZ1Jl Y1B0cklzSW52YWxpZChNeVN1YnNjcmlwdGlvbi0+c2tpcGxzbikpCiAJCXJldHVybiBmYWxzZTsK IAorCS8qCisJICogV2UgZG9uJ3Qgc3RhcnQgbmV3IGJhY2tncm91bmQgd29ya2VyIGlmIHJldHJ5 IHdhcyBzZXQgYXMgaXQncyBwb3NzaWJsZQorCSAqIHRoYXQgdGhlIGxhc3QgdGltZSB3ZSB0cmll ZCB0byBhcHBseSBhIHRyYW5zYWN0aW9uIGluIGJhY2tncm91bmQgd29ya2VyCisJICogYW5kIHRo ZSBjaGVjayBmYWlsZWQgKHNlZSBmdW5jdGlvbiBhcHBseV9iZ3dvcmtlcl9yZWxhdGlvbl9jaGVj aykuIFNvCisJICogd2Ugd2lsbCB0cnkgdG8gYXBwbHkgdGhpcyB0cmFuc2FjdGlvbiBpbiBhcHBs eSB3b3JrZXIuCisJICovCisJaWYgKHN0YXJ0ICYmIE15U3Vic2NyaXB0aW9uLT5yZXRyeSkKKwl7 CisJCWVsb2coREVCVUcxLCAicmV0cnkgdG8gYXBwbHkgYW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9u IGluIGFwcGx5ICIKKwkJCSAiYmFja2dyb3VuZCB3b3JrZXIiKTsKKwkJcmV0dXJuIGZhbHNlOwor CX0KKwogCS8qCiAJICogRm9yIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgdGhhdCBhcmUgYmVpbmcg YXBwbGllZCBpbiBhcHBseSBiYWNrZ3JvdW5kCiAJICogd29ya2VyLCB3ZSBjYW5ub3QgZGVjaWRl IHdoZXRoZXIgdG8gYXBwbHkgdGhlIGNoYW5nZSBmb3IgYSByZWxhdGlvbgpAQCAtODA0LDggKzgx Nyw3IEBAIGFwcGx5X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKExvZ2ljYWxSZXBSZWxNYXBFbnRy eSAqcmVsKQogCWlmICghcmVsLT5zYW1ldW5pcXVlKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkgZXJybXNnKCJjYW5u b3QgcmVwbGljYXRlIHJlbGF0aW9uIHdpdGggZGlmZmVyZW50IHVuaXF1ZSBpbmRleCIpLAotCQkJ CSBlcnJoaW50KCJQbGVhc2UgY2hhbmdlIHRoZSBzdHJlYW1pbmcgb3B0aW9uIHRvICdvbicgaW5z dGVhZCBvZiAnYXBwbHknLiIpKSk7CisJCQkJIGVycm1zZygiY2Fubm90IHJlcGxpY2F0ZSByZWxh dGlvbiB3aXRoIGRpZmZlcmVudCB1bmlxdWUgaW5kZXgiKSkpOwogCiAJLyoKIAkgKiBDaGVjayBp ZiB0aGVyZSBpcyBhbnkgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiBwcmVzZW50IGluIGV4cHJlc3Np b24gaW4KQEAgLTgxNCw2ICs4MjYsNSBAQCBhcHBseV9iZ3dvcmtlcl9yZWxhdGlvbl9jaGVjayhM b2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCkKIAlpZiAocmVsLT52b2xhdGlsaXR5ID09IEZVTkNU SU9OX05PTklNTVVUQUJMRSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJIGVycm1zZygiY2Fubm90IHJlcGxpY2F0ZSBy ZWxhdGlvbi4gVGhlcmUgaXMgYXQgbGVhc3Qgb25lIG5vbi1pbW11dGFibGUgZnVuY3Rpb24iKSwK LQkJCQkgZXJyaGludCgiUGxlYXNlIGNoYW5nZSB0aGUgc3RyZWFtaW5nIG9wdGlvbiB0byAnb24n IGluc3RlYWQgb2YgJ2FwcGx5Jy4iKSkpOworCQkJCSBlcnJtc2coImNhbm5vdCByZXBsaWNhdGUg cmVsYXRpb24uIFRoZXJlIGlzIGF0IGxlYXN0IG9uZSBub24taW1tdXRhYmxlIGZ1bmN0aW9uIikp KTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2Vy LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IGFjZjY0 OTRjZDYuLmJlMWRhMDE0YzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYwpAQCAtMzcyLDYgKzM3Miw4IEBAIHN0YXRpYyB2b2lkIGNsZWFyX3N1YnNjcmlwdGlvbl9z a2lwX2xzbihYTG9nUmVjUHRyIGZpbmlzaF9sc24pOwogc3RhdGljIGlubGluZSB2b2lkIHNldF9h cHBseV9lcnJvcl9jb250ZXh0X3hhY3QoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNu KTsKIHN0YXRpYyBpbmxpbmUgdm9pZCByZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8odm9p ZCk7CiAKK3N0YXRpYyB2b2lkIHNldF9zdWJzY3JpcHRpb25fcmV0cnkoYm9vbCByZXRyeSk7CisK IC8qCiAgKiBTaG91bGQgdGhpcyB3b3JrZXIgYXBwbHkgY2hhbmdlcyBmb3IgZ2l2ZW4gcmVsYXRp b24uCiAgKgpAQCAtODg4LDYgKzg5MCw5IEBAIGFwcGx5X2hhbmRsZV9jb21taXQoU3RyaW5nSW5m byBzKQogCiAJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOwogCisJ LyogU2V0IHRoZSBmbGFnIHRoYXQgd2Ugd2lsbCBub3QgcmV0cnkgbGF0ZXIuICovCisJc2V0X3N1 YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAkvKiBDaGVjayB0aGUgc3RhdHVzIG9mIGFwcGx5 IGJhY2tncm91bmQgd29ya2VyIGlmIGFueS4gKi8KIAlhcHBseV9iZ3dvcmtlcl9jaGVja19zdGF0 dXMoKTsKIApAQCAtOTk5LDYgKzEwMDQsOSBAQCBhcHBseV9oYW5kbGVfcHJlcGFyZShTdHJpbmdJ bmZvIHMpCiAKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFNldCB0aGUg ZmxhZyB0aGF0IHdlIHdpbGwgbm90IHJldHJ5IGxhdGVyLiAqLworCXNldF9zdWJzY3JpcHRpb25f cmV0cnkoZmFsc2UpOworCiAJLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5k IHdvcmtlciBpZiBhbnkuICovCiAJYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKCk7CiAKQEAg LTEwNTIsNiArMTA2MCw5IEBAIGFwcGx5X2hhbmRsZV9jb21taXRfcHJlcGFyZWQoU3RyaW5nSW5m byBzKQogCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIAlpbl9y ZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFNldCB0aGUgZmxhZyB0aGF0IHdlIHdp bGwgbm90IHJldHJ5IGxhdGVyLiAqLworCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOwor CiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBw YXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHByZXBhcmVfZGF0YS5lbmRfbHNu KTsKIApAQCAtMTEwNyw2ICsxMTE4LDkgQEAgYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVk KFN0cmluZ0luZm8gcykKIAlzdG9yZV9mbHVzaF9wb3NpdGlvbihyb2xsYmFja19kYXRhLnJvbGxi YWNrX2VuZF9sc24pOwogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCisJLyogU2V0 IHRoZSBmbGFnIHRoYXQgd2Ugd2lsbCBub3QgcmV0cnkgbGF0ZXIuICovCisJc2V0X3N1YnNjcmlw dGlvbl9yZXRyeShmYWxzZSk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVp bmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMo cm9sbGJhY2tfZGF0YS5yb2xsYmFja19lbmRfbHNuKTsKIApAQCAtMTE5Myw2ICsxMjA3LDkgQEAg YXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAkJCS8qIHVubGluayB0 aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8KIAkJ CXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHByZXBhcmVf ZGF0YS54aWQpOwogCQl9CisKKwkJLyogU2V0IHRoZSBmbGFnIHRoYXQgd2Ugd2lsbCBub3QgcmV0 cnkgbGF0ZXIuICovCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOwogCX0KIAogCWlu X3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwpAQCAtMTYyMSw2ICsxNjM4LDkgQEAgYXBwbHlf aGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCSAqLwogCQllbHNlCiAJCQlzZXJp YWxpemVfc3RyZWFtX2Fib3J0KHhpZCwgc3VieGlkKTsKKworCQkvKiBTZXQgdGhlIGZsYWcgdGhh dCB3ZSB3aWxsIG5vdCByZXRyeSBsYXRlci4gKi8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShm YWxzZSk7CiAJfQogfQogCkBAIC0yNzkyLDYgKzI4MTIsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFt X2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJCQkvKiB1bmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFs aXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8gKi8KIAkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVz KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CiAJCX0KKworCQkvKiBTZXQgdGhlIGZs YWcgdGhhdCB3ZSB3aWxsIG5vdCByZXRyeSBsYXRlci4gKi8KKwkJc2V0X3N1YnNjcmlwdGlvbl9y ZXRyeShmYWxzZSk7CiAJfQogCiAJLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiBhcHBseSBiYWNrZ3Jv dW5kIHdvcmtlciBpZiBhbnkuICovCkBAIC0zODYwLDYgKzM4ODMsOSBAQCBzdGFydF90YWJsZV9z eW5jKFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBvcywgY2hhciAqKm15c2xvdG5hbWUpCiAJfQog CVBHX0NBVENIKCk7CiAJeworCQkvKiBTZXQgdGhlIGZsYWcgdGhhdCB3ZSB3aWxsIHJldHJ5IGxh dGVyLiAqLworCQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KHRydWUpOworCiAJCWlmIChNeVN1YnNj cmlwdGlvbi0+ZGlzYWJsZW9uZXJyKQogCQkJRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQoKTsK IAkJZWxzZQpAQCAtMzg5OCw2ICszOTI0LDkgQEAgc3RhcnRfYXBwbHkoWExvZ1JlY1B0ciBvcmln aW5fc3RhcnRwb3MpCiAJfQogCVBHX0NBVENIKCk7CiAJeworCQkvKiBTZXQgdGhlIGZsYWcgdGhh dCB3ZSB3aWxsIHJldHJ5IGxhdGVyLiAqLworCQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KHRydWUp OworCiAJCWlmIChNeVN1YnNjcmlwdGlvbi0+ZGlzYWJsZW9uZXJyKQogCQkJRGlzYWJsZVN1YnNj cmlwdGlvbkFuZEV4aXQoKTsKIAkJZWxzZQpAQCAtNDM5OSwzICs0NDI4LDYzIEBAIHJlc2V0X2Fw cGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2b2lkKQogCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5y ZW1vdGVfYXR0bnVtID0gLTE7CiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChJbnZhbGlk VHJhbnNhY3Rpb25JZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogfQorCisvKgorICogU2V0IHN1YnJl dHJ5IG9mIHBnX3N1YnNjcmlwdGlvbiBjYXRhbG9nLgorICoKKyAqIElmIHJldHJ5IGlzIHRydWUs IHN1YnNjcmliZXIgaXMgYWJvdXQgdG8gZXhpdCB3aXRoIGFuIGVycm9yLiBPdGhlcndpc2UsIGl0 CisgKiBtZWFucyB0aGF0IHRoZSBjaGFuZ2VzIHdhcyBhcHBsaWVkIHN1Y2Nlc3NmdWxseS4KKyAq Lworc3RhdGljIHZvaWQKK3NldF9zdWJzY3JpcHRpb25fcmV0cnkoYm9vbCByZXRyeSkKK3sKKwlS ZWxhdGlvbglyZWw7CisJSGVhcFR1cGxlCXR1cDsKKwlib29sCQlzdGFydGVkX3R4ID0gZmFsc2U7 CisJYm9vbAkJbnVsbHNbTmF0dHNfcGdfc3Vic2NyaXB0aW9uXTsKKwlib29sCQlyZXBsYWNlc1tO YXR0c19wZ19zdWJzY3JpcHRpb25dOworCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfc3Vic2NyaXB0 aW9uXTsKKworCWlmIChNeVN1YnNjcmlwdGlvbi0+cmV0cnkgPT0gcmV0cnkgfHwKKwkJYW1fYXBw bHlfYmd3b3JrZXIoKSkKKwkJcmV0dXJuOworCisJaWYgKCFJc1RyYW5zYWN0aW9uU3RhdGUoKSkK Kwl7CisJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCXN0YXJ0ZWRfdHggPSB0cnVlOwor CX0KKworCS8qIExvb2sgdXAgdGhlIHN1YnNjcmlwdGlvbiBpbiB0aGUgY2F0YWxvZyAqLworCXJl bCA9IHRhYmxlX29wZW4oU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7 CisJdHVwID0gU2VhcmNoU3lzQ2FjaGVDb3B5MShTVUJTQ1JJUFRJT05PSUQsCisJCQkJCQkJICBP YmplY3RJZEdldERhdHVtKE15U3Vic2NyaXB0aW9uLT5vaWQpKTsKKworCWlmICghSGVhcFR1cGxl SXNWYWxpZCh0dXApKQorCQllbG9nKEVSUk9SLCAic3Vic2NyaXB0aW9uIFwiJXNcIiBkb2VzIG5v dCBleGlzdCIsIE15U3Vic2NyaXB0aW9uLT5uYW1lKTsKKworCUxvY2tTaGFyZWRPYmplY3QoU3Vi c2NyaXB0aW9uUmVsYXRpb25JZCwgTXlTdWJzY3JpcHRpb24tPm9pZCwgMCwKKwkJCQkJIEFjY2Vz c1NoYXJlTG9jayk7CisKKwkvKiBGb3JtIGEgbmV3IHR1cGxlLiAqLworCW1lbXNldCh2YWx1ZXMs IDAsIHNpemVvZih2YWx1ZXMpKTsKKwltZW1zZXQobnVsbHMsIGZhbHNlLCBzaXplb2YobnVsbHMp KTsKKwltZW1zZXQocmVwbGFjZXMsIGZhbHNlLCBzaXplb2YocmVwbGFjZXMpKTsKKworCS8qIHJl c2V0IHN1YnJldHJ5ICovCisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0g MV0gPSBCb29sR2V0RGF0dW0ocmV0cnkpOworCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9u X3N1YnJldHJ5IC0gMV0gPSB0cnVlOworCisJdHVwID0gaGVhcF9tb2RpZnlfdHVwbGUodHVwLCBS ZWxhdGlvbkdldERlc2NyKHJlbCksIHZhbHVlcywgbnVsbHMsCisJCQkJCQkJcmVwbGFjZXMpOwor CisJLyogVXBkYXRlIHRoZSBjYXRhbG9nLiAqLworCUNhdGFsb2dUdXBsZVVwZGF0ZShyZWwsICZ0 dXAtPnRfc2VsZiwgdHVwKTsKKworCS8qIENsZWFudXAuICovCisJaGVhcF9mcmVldHVwbGUodHVw KTsKKwl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CisKKwlpZiAoc3RhcnRlZF90eCkKKwkJQ29t bWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA2ZjhiMzBhYmIwLi45 YjNmZmUwODg4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ0NzIsOCArNDQ3Miw5IEBAIGdldFN1YnNjcmlw dGlvbnMoQXJjaGl2ZSAqZm91dCkKIAludHVwcyA9IFBRbnR1cGxlcyhyZXMpOwogCiAJLyoKLQkg KiBHZXQgc3Vic2NyaXB0aW9uIGZpZWxkcy4gV2UgZG9uJ3QgaW5jbHVkZSBzdWJza2lwbHNuIGlu IHRoZSBkdW1wIGFzCi0JICogYWZ0ZXIgcmVzdG9yaW5nIHRoZSBkdW1wIHRoaXMgdmFsdWUgbWF5 IG5vIGxvbmdlciBiZSByZWxldmFudC4KKwkgKiBHZXQgc3Vic2NyaXB0aW9uIGZpZWxkcy4gV2Ug ZG9uJ3QgaW5jbHVkZSBzdWJza2lwbHNuIGFuZCBzdWJyZXRyeSBpbgorCSAqIHRoZSBkdW1wIGFz IGFmdGVyIHJlc3RvcmluZyB0aGUgZHVtcCB0aGlzIHZhbHVlIG1heSBubyBsb25nZXIgYmUKKwkg KiByZWxldmFudC4KIAkgKi8KIAlpX3RhYmxlb2lkID0gUFFmbnVtYmVyKHJlcywgInRhYmxlb2lk Iik7CiAJaV9vaWQgPSBQUWZudW1iZXIocmVzLCAib2lkIik7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19z dWJzY3JpcHRpb24uaAppbmRleCA5YjM5NGE0NWZlLi5kYzc1OTdiZjgwIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKQEAgLTc2LDYgKzc2LDggQEAgQ0FUQUxPRyhwZ19zdWJz Y3JpcHRpb24sNjEwMCxTdWJzY3JpcHRpb25SZWxhdGlvbklkKSBCS0lfU0hBUkVEX1JFTEFUSU9O IEJLSV9ST1cKIAlib29sCQlzdWJkaXNhYmxlb25lcnI7CS8qIFRydWUgaWYgYSB3b3JrZXIgZXJy b3Igc2hvdWxkIGNhdXNlIHRoZQogCQkJCQkJCQkJICogc3Vic2NyaXB0aW9uIHRvIGJlIGRpc2Fi bGVkICovCiAKKwlib29sCQlzdWJyZXRyeTsJCS8qIFRydWUgaWYgdGhlIHByZXZpb3VzIGFwcGx5 IGNoYW5nZSBmYWlsZWQuICovCisKICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxl LWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLwogCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRvIHRo ZSBwdWJsaXNoZXIgKi8KIAl0ZXh0CQlzdWJjb25uaW5mbyBCS0lfRk9SQ0VfTk9UX05VTEw7CkBA IC0xMTUsNiArMTE3LDggQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJYm9vbAkJZGlz YWJsZW9uZXJyOwkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91bGQgYmUKIAkJ CQkJCQkJICogYXV0b21hdGljYWxseSBkaXNhYmxlZCBpZiBhIHdvcmtlciBlcnJvcgogCQkJCQkJ CQkgKiBvY2N1cnMgKi8KKwlib29sCQlyZXRyeTsJCQkvKiBJbmRpY2F0ZXMgaWYgdGhlIHByZXZp b3VzIGFwcGx5IGNoYW5nZQorCQkJCQkJCQkgKiBmYWlsZWQuICovCiAJY2hhcgkgICAqY29ubmlu Zm87CQkvKiBDb25uZWN0aW9uIHN0cmluZyB0byB0aGUgcHVibGlzaGVyICovCiAJY2hhcgkgICAq c2xvdG5hbWU7CQkvKiBOYW1lIG9mIHRoZSByZXBsaWNhdGlvbiBzbG90ICovCiAJY2hhcgkgICAq c3luY2NvbW1pdDsJCS8qIFN5bmNocm9ub3VzIGNvbW1pdCBzZXR0aW5nIGZvciB3b3JrZXIgKi8K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHku cGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsCmluZGV4 IDg0YTY5MDBiMzMuLjhmMmUyNTRiMzkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDMyX3N0cmVhbWluZ19hcHBseS5wbApAQCAtNTgsNyArNTgsOSBAQCAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OwogCiAjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgcHVi bGlzaGVyIGFuZCB0aGUgc3Vic2NyaWJlcgotIyBpcyBkaWZmZXJlbnQuIENoZWNrIHRoZSBlcnJv ciByZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIGlzIGRpZmZl cmVudC4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQgd29ya2VyIGluIHRo aXMgY2FzZS4gQW5kCisjIGFmdGVyIHJldHJ5aW5nIGluIGFwcGx5IHdvcmtlciwgd2UgY2hlY2sg aWYgdGhlIGRhdGEgaXMgcmVwbGljYXRlZAorIyBzdWNjZXNzZnVsbHkuCiAjIEZpcnN0IHdlIGNo ZWNrIHRoZSB1bmlxdWUgaW5kZXggb24gbm9ybWFsIHRhYmxlLgogJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBVTklRVUUgSU5ERVggdGVzdF90YWJfYl9p ZHggT04gdGVzdF90YWIgKGIpIik7CkBAIC04MiwxNCArODQsMTUgQEAgJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAgY2Fubm90IHJlcGxpY2F0ZSByZWxhdGlvbiB3 aXRoIGRpZmZlcmVudCB1bmlxdWUgaW5kZXgvLAogCSRvZmZzZXQpOwogCi0jIERyb3AgdGhlIHVu aXF1ZSBpbmRleCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIHRlc3RfdGFiX2JfaWR4Iik7 Ci0KKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBp biB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKIAogbXkgJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQs IHFxKDUwMDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcg aW5kZXgnKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNj cmliZXJzIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgdW5pcXVlIGluZGV4Jyk7CisKKyMgRHJv cCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIHRlc3RfdGFiX2JfaWR4Iik7CiAKICMg VGhlbiB3ZSBjaGVjayB0aGUgdW5pcXVlIGluZGV4IG9uIHBhcnRpdGlvbiB0YWJsZS4KICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLApAQCAtMTA2LDE3ICsxMDksMjAgQEAg JG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAgY2Fubm90IHJlcGxp Y2F0ZSByZWxhdGlvbiB3aXRoIGRpZmZlcmVudCB1bmlxdWUgaW5kZXgvLAogCSRvZmZzZXQpOwog Ci0jIERyb3AgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtz LgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIHRl c3RfdGFiX2JfcGFydGl0aW9uX2lkeCIpOwotCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRy YW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRl c3RfdGFiX3BhcnRpdGlvbmVkIik7Ci1pcygkcmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGlj YXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4Jyk7CitpcygkcmVzdWx0LCBx cSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVycyBhZnRlciByZXRyeWluZyBi ZWNhdXNlIG9mIHVuaXF1ZSBpbmRleCcpOworCisjIERyb3AgdGhlIHVuaXF1ZSBpbmRleCBvbiB0 aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi RFJPUCBJTkRFWCB0ZXN0X3RhYl9iX3BhcnRpdGlvbl9pZHgiKTsKIAogIyBUcmlnZ2VycyB3aGlj aCBleGVjdXRlIG5vbi1pbW11dGFibGUgZnVuY3Rpb24gYXJlIG5vdCBhbGxvd2VkIG9uIHRoZQog IyBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieSBiYWNrZ3JvdW5k IHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIEFuZCBhZnRlciByZXRyeWluZyBpbiBhcHBseSB3b3Jr ZXIsIHdlIGNoZWNrIGlmIHRoZSBkYXRhIGlzIHJlcGxpY2F0ZWQKKyMgc3VjY2Vzc2Z1bGx5Lgog IyBGaXJzdCB3ZSBjaGVjayB0aGUgdHJpZ2dlciBmdW5jdGlvbiBvbiBub3JtYWwgdGFibGUuCiAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgcXF7CkBAIC0xNDAsMTUg KzE0NiwxNiBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICBj YW5ub3QgcmVwbGljYXRlIHJlbGF0aW9uLiBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgbm9uLWltbXV0 YWJsZSBmdW5jdGlvbi8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0aGUgdHJpZ2dlciBvbiB0aGUg c3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIkRST1AgVFJJR0dFUiBpbnNlcnRfdHJpZyBPTiB0ZXN0X3RhYiIpOwotCisj IFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhl IGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgwKSwg J2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRyaWdnZXInKTsK K2lzKCRyZXN1bHQsIHFxKDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXJzIGFmdGVy IHJldHJ5aW5nIGJlY2F1c2Ugb2YgdHJpZ2dlcicpOworCisjIERyb3AgdGhlIHRyaWdnZXIgb24g dGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiRFJPUCBUUklHR0VSIGluc2VydF90cmlnIE9OIHRlc3RfdGFiIik7CiAKICMgVGhlbiB3ZSBj aGVjayB0aGUgdW5pcXVlIGluZGV4IG9uIHBhcnRpdGlvbiB0YWJsZS4KICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgKQEAgLTE2OCwxOSArMTc1LDIxIEBAICRub2RlX3N1YnNjcmliZXItPndh aXRfZm9yX2xvZygKIAlxci9FUlJPUjogIGNhbm5vdCByZXBsaWNhdGUgcmVsYXRpb24uIFRoZXJl IGlzIGF0IGxlYXN0IG9uZSBub24taW1tdXRhYmxlIGZ1bmN0aW9uLywKIAkkb2Zmc2V0KTsKIAot IyBEcm9wIHRoZSB0cmlnZ2VyIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiRFJPUCBUUklHR0VSIGluc2Vy dF90cmlnIE9OIHRlc3RfdGFiX3BhcnRpdGlvbiIpOwotCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFt aW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ2RhdGEgcmVw bGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRyaWdnZXInKTsKK2lzKCRyZXN1 bHQsIHFxKDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXJzIGFmdGVyIHJldHJ5aW5n IGJlY2F1c2Ugb2YgdHJpZ2dlcicpOworCisjIERyb3AgdGhlIHRyaWdnZXIgb24gdGhlIHN1YnNj cmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiRFJPUCBU UklHR0VSIGluc2VydF90cmlnIE9OIHRlc3RfdGFiX3BhcnRpdGlvbiIpOwogCiAjIEl0IGlzIG5v dCBhbGxvd2VkIHRoYXQgY29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBjb250YWlucyBh CiAjIG5vbi1pbW11dGFibGUgZnVuY3Rpb24gb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sg dGhlIGVycm9yIHJlcG9ydGVkIGJ5Ci0jIGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMgY2FzZS4K KyMgYmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLiBBbmQgYWZ0ZXIgcmV0cnlpbmcgaW4g YXBwbHkgd29ya2VyLCB3ZSBjaGVjaworIyBpZiB0aGUgZGF0YSBpcyByZXBsaWNhdGVkIHN1Y2Nl c3NmdWxseS4KICMgRmlyc3Qgd2UgY2hlY2sgdGhlIGNvbHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJl c3Npb24gb24gbm9ybWFsIHRhYmxlLgogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCiAJIkFMVEVSIFRBQkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBiIFNFVCBERUZBVUxU IHJhbmRvbSgpIik7CkBAIC0xOTYsMTYgKzIwNSwxNyBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0 X2Zvcl9sb2coCiAJcXIvRVJST1I6ICBjYW5ub3QgcmVwbGljYXRlIHJlbGF0aW9uLiBUaGVyZSBp cyBhdCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbi8sCiAJJG9mZnNldCk7CiAKLSMg RHJvcCBkZWZhdWx0IHZhbHVlIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUgdGVzdF90 YWIgQUxURVIgQ09MVU1OIGIgRFJPUCBERUZBVUxUIik7Ci0KKyMgV2FpdCBmb3IgdGhpcyBzdHJl YW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAg ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCop IEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDUwMDApLAotCSdkYXRhIHJlcGxpY2F0 ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24n KTsKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXJzIGFmdGVyIHJldHJ5aW5nIGJlY2F1 c2Ugb2YgY29sdW1uIGRlZmF1bHQgdmFsdWUnKTsKKworIyBEcm9wIGRlZmF1bHQgdmFsdWUgb24g dGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGIgRFJPUCBERUZBVUxUIik7CiAK ICMgVGhlbiB3ZSBjaGVjayB0aGUgY29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBvbiBw YXJ0aXRpb24gdGFibGUuCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK QEAgLTIyMiwyMCArMjMyLDIyIEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlx ci9FUlJPUjogIGNhbm5vdCByZXBsaWNhdGUgcmVsYXRpb24uIFRoZXJlIGlzIGF0IGxlYXN0IG9u ZSBub24taW1tdXRhYmxlIGZ1bmN0aW9uLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIGRlZmF1bHQg dmFsdWUgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24g QUxURVIgQ09MVU1OIGIgRFJPUCBERUZBVUxUIik7Ci0KKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1p bmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZS T00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKIGlzKCRyZXN1bHQsIHFxKDUwMDApLAotCSdkYXRh IHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBkZWZhdWx0IHZhbHVlIGV4 cHJlc3Npb24nKTsKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXJzIGFmdGVyIHJldHJ5 aW5nIGJlY2F1c2Ugb2YgY29sdW1uIGRlZmF1bHQgdmFsdWUnKTsKKworIyBEcm9wIGRlZmF1bHQg dmFsdWUgb24gdGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIEFMVEVSIENPTFVNTiBi IERST1AgREVGQVVMVCIpOwogCiAjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgZG9tYWluIGNvbnN0 cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUKICMgZnVuY3Rpb24gb24g dGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IGJhY2tncm91 bmQKLSMgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgd29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFm dGVyIHJldHJ5aW5nIGluIGFwcGx5IHdvcmtlciwgd2UgY2hlY2sgaWYgdGhlIGRhdGEKKyMgaXMg cmVwbGljYXRlZCBzdWNjZXNzZnVsbHkuCiAjIEJlY2F1c2UgdGhlIGNvbHVtbiB0eXBlIG9mIHRo ZSBwYXJ0aXRpb24gdGFibGUgbXVzdCBiZSB0aGUgc2FtZSBhcyBpdHMgcGFyZW50CiAjIHRhYmxl LCBvbmx5IHRlc3Qgbm9ybWFsIHRhYmxlIGhlcmUuCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoCkBAIC0yNTMsMjEgKzI2NSwyMyBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2co CiAJcXIvRVJST1I6ICBjYW5ub3QgcmVwbGljYXRlIHJlbGF0aW9uLiBUaGVyZSBpcyBhdCBsZWFz dCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbi8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCBkb21h aW4gY29uc3RyYWludCBleHByZXNzaW9uIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3Mu Ci0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUg dGVzdF90YWIgQUxURVIgQ09MVU1OIGEgVFlQRSBpbnQiKTsKLQorIyBXYWl0IGZvciB0aGlzIHN0 cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0K ICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQo KikgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMCksCi0JJ2RhdGEgcmVwbGljYXRl ZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGRvbWFpbiBjb25zdHJhaW50IGV4cHJlc3Np b24nCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVycyBhZnRlciByZXRyeWluZyBiZWNh dXNlIG9mIGRvbWFpbicKICk7CiAKLSMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBjb25zdHJhaW50 IGV4cHJlc3Npb24gY29udGFpbnMgYSBub24taW1tdXRhYmxlIGZ1bmN0aW9uCi0jIG9uIHRoZSBz dWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdv cmtlciBpbiB0aGlzCi0jIGNhc2UuCisjIERyb3AgZG9tYWluIGNvbnN0cmFpbnQgZXhwcmVzc2lv biBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBTFRFUiBDT0xVTU4gYSBUWVBFIGludCIpOwor CisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgY29uc3RyYWludCBleHByZXNzaW9uIGNvbnRhaW5z IGEgbm9uLWltbXV0YWJsZQorIyBmdW5jdGlvbiBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVj ayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZAorIyB3b3JrZXIgaW4gdGhpcyBjYXNl LiBBbmQgYWZ0ZXIgcmV0cnlpbmcgaW4gYXBwbHkgd29ya2VyLCB3ZSBjaGVjayBpZiB0aGUgZGF0 YQorIyBpcyByZXBsaWNhdGVkIHN1Y2Nlc3NmdWxseS4KICMgRmlyc3Qgd2UgY2hlY2sgdGhlIGNv bnN0cmFpbnQgZXhwcmVzc2lvbiBvbiBub3JtYWwgdGFibGUuCiAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgcXF7CkBAIC0yODUsMTYgKzI5OSwxNyBAQCAkbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICBjYW5ub3QgcmVwbGljYXRlIHJl bGF0aW9uLiBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbi8sCiAJ JG9mZnNldCk7CiAKLSMgRHJvcCBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQg d29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIg VEFCTEUgdGVzdF90YWIgRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX2NvbiIpOwotCisjIFdhaXQg Zm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5 IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAK ICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSg1MDAwKSwKLQkn ZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgY29uc3RyYWludCBl eHByZXNzaW9uJyk7CisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVycyBhZnRlciByZXRy eWluZyBiZWNhdXNlIG9mIGNvbnN0cmFpbnQnKTsKKworIyBEcm9wIGNvbnN0cmFpbnQgb24gdGhl IHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki QUxURVIgVEFCTEUgdGVzdF90YWIgRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX2NvbiIpOwogCiAj IFRoZW4gd2UgY2hlY2sgdGhlIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBvbiBwYXJ0aXRpb24gdGFi bGUuCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCkBAIC0zMTEsMTkgKzMyNiwyMSBAQCAk bm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICBjYW5ub3QgcmVwbGlj YXRlIHJlbGF0aW9uLiBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlv bi8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBu b3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki QUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYl9j b24iKTsKLQorIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBs aWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIp OwogaXMoJHJlc3VsdCwgcXEoMCksCi0JJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFm dGVyIGRyb3BwaW5nIGNvbnN0cmFpbnQgZXhwcmVzc2lvbicpOworCSdkYXRhIHJlcGxpY2F0ZWQg dG8gc3Vic2NyaWJlcnMgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBjb25zdHJhaW50Jyk7CisK KyMgRHJvcCBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBE Uk9QIENPTlNUUkFJTlQgdGVzdF90YWJfY29uIik7CiAKICMgSXQgaXMgbm90IGFsbG93ZWQgdGhh dCBmb3JlaWduIGtleSBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IKLSMg cmVwb3J0ZWQgYnkgYmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyByZXBvcnRlZCBi eSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuIEFuZCBhZnRlciByZXRyeWluZyBpbiBh cHBseQorIyB3b3JrZXIsIHdlIGNoZWNrIGlmIHRoZSBkYXRhIGlzIHJlcGxpY2F0ZWQgc3VjY2Vz c2Z1bGx5LgogIyBGaXJzdCB3ZSBjaGVjayB0aGUgZm9yZWlnbiBrZXkgb24gbm9ybWFsIHRhYmxl LgogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRl c3RfdGFiIik7CiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwpA QCAtMzQ0LDE2ICszNjEsMTcgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFy L0VSUk9SOiAgY2Fubm90IHJlcGxpY2F0ZSByZWxhdGlvbi4gVGhlcmUgaXMgYXQgbGVhc3Qgb25l IG5vbi1pbW11dGFibGUgZnVuY3Rpb24vLAogCSRvZmZzZXQpOwogCi0jIERyb3AgdGhlIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KLSRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBUQUJMRSB0ZXN0X3Rh YiBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWJmayIpOwotCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFt aW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSg1MDAwKSwKLQknZGF0YSByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdGhlIGZvcmVpZ24ga2V5Jyk7CisJJ2RhdGEg cmVwbGljYXRlZCB0byBzdWJzY3JpYmVycyBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIGZvcmVp Z24ga2V5Jyk7CisKKyMgRHJvcCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBvbiB0aGUgc3Vi c2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRF UiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWJmayIpOwogCiAjIFRoZW4g d2UgY2hlY2sgdGhlIGZvcmVpZ24ga2V5IG9uIHBhcnRpdGlvbiB0YWJsZS4KICRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CkBAIC0zNzQsMTYgKzM5MiwxNyBAQCAk bm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICBjYW5ub3QgcmVwbGlj YXRlIHJlbGF0aW9uLiBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlv bi8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBvbiB0 aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBEUk9QIENPTlNU UkFJTlQgdGVzdF90YWJfcGF0aXRpb25fZmsiKTsKLQorIyBXYWl0IGZvciB0aGlzIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJP TSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOwogaXMoJHJlc3VsdCwgcXEoNTAwMCksCi0JJ2RhdGEg cmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRoZSBmb3JlaWduIGtleScp OworCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcnMgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVz ZSBvZiBmb3JlaWduIGtleScpOworCisjIERyb3AgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg b24gdGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIERST1AgQ09OU1RSQUlOVCB0ZXN0 X3RhYl9wYXRpdGlvbl9mayIpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVi bGlzaGVyLT5zdG9wOwotLSAKMi4yMy4wLndpbmRvd3MuMQoK --_006_OS3PR01MB62753CDFD0DF1FCBC978AFB39EAF9OS3PR01MB6275jpnp_--