Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wV22R-001dB5-0p for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Jun 2026 06:58:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wV22P-005Dv4-0V for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Jun 2026 06:58:45 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wV22O-005Dun-1M for pgsql-hackers@lists.postgresql.org; Thu, 04 Jun 2026 06:58:44 +0000 Received: from mail-japanwestazon11011067.outbound.protection.outlook.com ([40.107.74.67] helo=OS0P286CU010.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wV22K-00000001C62-1M4r for pgsql-hackers@lists.postgresql.org; Thu, 04 Jun 2026 06:58:43 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KznqSPjD2qFhJgMk3OCq7Yiu+7D9C0SrMwEeR6HZa/0QV7Hhb/k+mDxOrMJslasVkBRfTVW6m1kFmG6/7qZqlR9c9XIe8nZXUZyDw+zrX/w06ObvxqZRrOS+7tqSQ5GqpMdtxfD+x1jHD993HCb+tF/QZSFBN1K9PxuVRQzE9T3GhsN8i/k16E6qBMiKCSXfrV8/aoS8wkGoI1Rnx3LYD8I2L2piJ9W2MZppoHd8qHtKJW30+kdu3oNZ5ibLEvGxEQlT6p39783RloXGQ3SQaJEro1MqD13WKwN/AEcePe7JP+A5Gjn5VTmj9amr2m9/zFc2yvGi6y+K0YRUMU/PzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=dWQiVzWwdVxfhi2XKv1vUdQJNNr/TN2i9xnIW4d5ObI=; b=l+A2Q8xepMSizvrT+8ml2uYUl56dUGAap/nuNpgTEHMm4zmM0Nh0njmSnzW19cqDdFcXl66fabOwl4OmtjxYY/4m+zF8G4BXxi1HNBoyqXjBkvTxt4LQpBt3tqFoZuIrmK4ll6lDix0QGJkXQ+H0lYqBGkldoy0CIUyz43g5xEVkH6yFrpcUQg+s3HtyXsVTDt84GBDvvzx5H0aDJ4XChVE13JJMYm9ElDn8ws0GLNtIR7/epSwkq9X4p8YTtR1TfsQfDUrHkA2+jShfsydwzDrumE2D6JqCaCfnUVDjHTdEoT/QEVbDYk2C8lKxTIPZcm8MMmV1K2ac3quDt4y2YA== 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.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dWQiVzWwdVxfhi2XKv1vUdQJNNr/TN2i9xnIW4d5ObI=; b=hBBSPW8mnBrUgOm+3jgCEEihdb/ycDl2LkzDk7zLJjnkmc94NGvdwPxMpo5YoM9YAlXo97jF5KPiL2waDpWsafiDL2louY5rOocUHeE6GOFQqbOcxFp3tN2+VXNDFoFnnwFy5J/U4EBWLqFiuiNxzU0Hc8OFyLSZ1GHR1dUCyEzOM84aNEi6qrXMQVfc7D+l+llEK+FbQseEzXU+ToqoQZ+hWjhLq9HNdFjM+hqNH6FPIFEVq1WmvKKNpDFkAvARDe8bia+FprAOkaToq1D8OHhm7+zzd+r67ZUFOPk4VO/02Yy88pW6xN7LNbH4upSr4o6I4RoN6Inqw0iqydByZA== Received: from TY4PR01MB17718.jpnprd01.prod.outlook.com (2603:1096:405:38a::22) by TYRPR01MB16254.jpnprd01.prod.outlook.com (2603:1096:405:2ed::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.7; Thu, 4 Jun 2026 06:58:31 +0000 Received: from TY4PR01MB17718.jpnprd01.prod.outlook.com ([fe80::7430:f96b:750d:8a04]) by TY4PR01MB17718.jpnprd01.prod.outlook.com ([fe80::7430:f96b:750d:8a04%5]) with mapi id 15.21.0048.013; Thu, 4 Jun 2026 06:58:31 +0000 From: "Zhijie Hou (Fujitsu)" To: shveta malik CC: "Hayato Kuroda (Fujitsu)" , PostgreSQL Hackers , Tomas Vondra , Dilip Kumar , Andrei Lepikhov , wenhui qiu , Amit Kapila Subject: RE: Parallel Apply Thread-Topic: Parallel Apply Thread-Index: AQHcCnrZUNf0ey1nQ0KOINgr/a4XgLSEoA6AgHQSNwCAAB7KAIAADweAgAJCfYCAEifbAIABS1WAgAANMoCAH7ALgIAFxT2AgAAI0oCAD/cvgIAnhwOAgDTMnYCAJ9zrgIAWDtQAgAFrGQCAAEWBAIACyEOQgAGR5ICABPQUAIABjjmwgAlq4QCAAtO/AIAATnAAgAHWV4CACLltgIALGwsAgABFQICAImKVgA== Date: Thu, 4 Jun 2026 06:58:31 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-AS, ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9NDhkM2E4MjUtZDQ5OC00YzExLTk2YzEtNGRkMDMxYTFl?= =?utf-8?B?ODNjO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFROKAiztNU0lQ?= =?utf-8?B?X0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRkLTNiMGY0ZmVjZTA1MF9T?= =?utf-8?B?ZXREYXRlPTIwMjYtMDYtMDRUMDY6Mzc6NTFaO01TSVBfTGFiZWxfYTcyOTVj?= =?utf-8?B?YzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX1NpdGVJZD1hMTlmMTIx?= =?utf-8?B?ZC04MWUxLTQ4NTgtYTlkOC03MzZlMjY3ZmQ0Yzc7TVNJUF9MYWJlbF9hNzI5?= =?utf-8?B?NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfVGFnPTEwLCAzLCAw?= =?utf-8?Q?,_1;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TY4PR01MB17718:EE_|TYRPR01MB16254:EE_ x-ms-office365-filtering-correlation-id: 15a75c71-b502-415b-7496-08dec206b02c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|366016|6049299003|1800799024|38070700021|22082099003|18002099003|11063799006|4143699003|5023799004|56012099006|1580799027; x-microsoft-antispam-message-info: PWr9/ZEEULb7oCX0irDW34hvqJpZXO67SGRjq+vx3WMLyqQ1PDb0TP1eOCErK94VDljrgceW03ps0odOeR53TdlfF6DrYnU8BkqINZRTZD0TM3HNqo0HVD5z+JGkzt/nFtCUtaQqe6h9cpxDtCAUXHOtfNqkvHxrT5454NqSGgL1AhrFxElCKvz2z+5hu0zlfFJ3DAFKewYwd7f+rDdA0SGK4I8GGtysgxwE8wJu+l/ej27OgNvv8HSpvM/9z3Peo7ROsFEumgrvpeNJHYzgaFooANZmOyiSIGPm2OMbEXNPXFXUTgSYmtDx4vXoETNoQsGtTfE1DtgxoGlcM9gBOpWc4WybAHTiRnraDzotE06Q/wRamehNhkenlileOnPaUucp4OaLA2V3vf6BLecJFcJnvZiZd/CX4v+4xafICUZDZyla/QR/rtdeY4jFBQqqBHgXCh+pUegDecJl6xpSjGus3iyiHbgKFQF2eBQxBYFoSfhwEf+koizVNCt8zw4z1zOiUo+YDP9hK0c8Bb83ZpHo/BlbacJD4bNbShzUkY2nBGH6ohYMAn1uCm/Sb4W4TQUEU7j2z9JAcdG1ROqQZbcpgRiFX/Ga5Q88XtV994ahRP0+ZWBNd66cBmd9vVj/tDQAAA8gOdNVv+YV48yeJMU7jTi9N7a23DhFAmnKQcj1jqrwc5bV5wLjcKIq3qgclxOkL59osSfDVKHHY6sRTjh9CTAiCvXJ9dw4MEicUm8= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:ja;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY4PR01MB17718.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(6049299003)(1800799024)(38070700021)(22082099003)(18002099003)(11063799006)(4143699003)(5023799004)(56012099006)(1580799027);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SThpOERRbmxuQVRRMGV3aTUxdW56S1hsaFdqdU9sMTg5dTRqaFp0VVp5Z3Nh?= =?utf-8?B?Vlk3Uk9QbDd3djZZQ1RxYlR5VzNnZVlkVTF6TzVnRUlGT2FwNEZXdHlxQlk0?= =?utf-8?B?TUtzZm9WWlNPeWZzUjY0WmRnS1MxWWlwSzRqbmRWcVJldFZES0sxK2tWdWFP?= =?utf-8?B?Nm40Nmpia2R3dEIxVE8zUWdXRjNkNTJ2RU5TWlZDb3cwRzdHTW1zSG1UaFFl?= =?utf-8?B?SmNpN0R5SllSd2M0c2paZHJmY2xMSlpUdFRVN1ExakVTQy9QWmhxKzZFQXlz?= =?utf-8?B?cGNuUDVRaWZVMkJNMVBGRDJYWWc0akF2ZW0rMGhHbm9LSnlOWmlUcmE5eFhS?= =?utf-8?B?b0o3YjZpWnJneTliUldGdWp4WlNIa0o2R3U0Qi90YS8yZkg0ZWhHZ1JXYWVV?= =?utf-8?B?QXpNT0xzWnZIbUJ2RjhLKzZJTkdBWUlmeTRJb0NuUm1pc1ppTC84d2JxNW5R?= =?utf-8?B?aVFZdFlnS0VKMEE0WVo4WWhvN3lxS2gvOEdFRWthS0pOTWRrUFhPeXZwd24w?= =?utf-8?B?eGM1ZFpwcS94czI5VFJhc0lnaE03VXFwSkp1WFNnVStMVnNoeXYxS1NZckFS?= =?utf-8?B?R3NNL1RaWTNmVW9wTkJ2RzVDb1h6SlNBQkd4SERuR2hQSUlaWWtOVUIvLzQ3?= =?utf-8?B?U3dtb1VtaGxWMnlIV1R2MlRaV0NqUW0xbFNtUXRROGRoaU16RHRSNGVMUzg4?= =?utf-8?B?VUlZMGdaK3Nobml1NGV6K3R4WEdZNXprREtsSUFzQ3FnSzRiaXlhRjFDalgv?= =?utf-8?B?UGxjbmhKdCtPT3c1QktCSFMvM1R3UnlwZFV4VmoveGN6bmRiVEFOK3RGY3dC?= =?utf-8?B?R0FvYWlITFV4Z0FBcTB3UXhEZUM1ek9UTjFnZzBWNHpOTFJpTlFtdEJPL205?= =?utf-8?B?aVoxL3pWcllIRDNNMGhlRDhqdXU5bFJNY0I3L29PMTBPcWEvaGtVUzNleTBi?= =?utf-8?B?eU9ZZUloWEdHMDFtb3VOd2tIazgzU3d4MmxIREQrOWF1Y1hCVU96cWVZdXc1?= =?utf-8?B?cnptUXZmdHFBekx3SVpxajZhb3NPbFZ6TlBRVzR4eVRBaXM2aDF5aG82MVlM?= =?utf-8?B?b0V5Z1pMN2xsVWg3SGNEb1hxRkVhSFZVQzlLdEp6djA4VlJBcWw2ZjI0R3lN?= =?utf-8?B?ZDR4QXozSG1mVmIvelArQ1p4cTZkNXB1Y1B1Vml3Q1hhZGphcVZKdTlFVmQz?= =?utf-8?B?dHVYZWxZdXdBTkRicjlMemk1ZGpYd1l6OTRaSlQ5ZTNUOU1LSmJSTVNKQUcv?= =?utf-8?B?YkRiVTA4Ym9SZjkzUVNHS3FJYlRvbzNOeHVqSEhtcGNEVVFyUUhielpnWjJR?= =?utf-8?B?bkZaRUxCYWhjSGY0UzF0WGY1WkpUNHh1K1d0anVLVjlmUkd2TmNDemxCMyt0?= =?utf-8?B?SFY0VnhOYWtXRU1rTUIzaW1rRkhtM0JxK3NjWkZuQVc4eGZQSlpwaVFZZTJl?= =?utf-8?B?U2NBTzRlQkIrWHpGTmpiSXB4YnNpTFpLbE53Y3R6d0h6bE5OeWQrNjc4THJw?= =?utf-8?B?UUE1cm1DQlFyVmVsK2theTIvQ0tpRWtrUnZNNjFFSjRQMitTZFdWRTZuZmFz?= =?utf-8?B?ZnhLcm5HQnlRb1V2azg1Ni82cUdBb1JVbGtFL3NMMytuU1ora2dFdkFnV1lQ?= =?utf-8?B?dWF2OGRGWjJJR2tPOFMrbDlrZi94WjF6anpvSCtrQ0NUSCtURHNmRzFyUTh1?= =?utf-8?B?VWFGZTFQNDViUU1QQ2VtZXhqUWZmUExPcG9ienQvZjdENmQ1YW5mSGdhR1JL?= =?utf-8?B?Q2FUOG5WaE5YYURISXVhUjhsVzNTSVREOFlyNE9CY3ZURm81STRKOVBDWjZY?= =?utf-8?B?T0ZQOGhVVkE0WElqY1NheGJTSFlwenJ3aU9XYVB5ZnhoQ1p1bHFCUlRqaXYy?= =?utf-8?B?MnlVVmJoQnpHSDJlaTRzM3o1ZTFyOUZLTXVaT0c0WE5KTllDTXlYbkEvaWlN?= =?utf-8?B?NWxqOWNyRlhYUU5URWNUczR2R2VwODVTbldKL0hpTHlER2NSWG5xU2lJcDNW?= =?utf-8?B?bmNpcFRFblpncUhMdmxyeTkyZDQvd1NPUVlKN1duTFRraGc5Qnl6VmMvZ0pG?= =?utf-8?B?YmZTZUFwTzBQZHFLSUFWdWl0SFloYlZKMERZMis3cEZvZG1HUm1wMVovTzhp?= =?utf-8?B?OWE4Y2E5TU43d0plNW84N1QvU1RSU0Uzd1d4NSsraWxmYTAzVlR3c2JDNXk3?= =?utf-8?B?TVUxL2ZnNnVybzRCUDl2YXZvUzdOckRickhRTTlsNVhZL0hGeW1YMmFMT1pC?= =?utf-8?B?akNTaksvZnhSeHNxenV6SlBhb2RxcWROaG02RHBLMHNXV08wVXU5R0dwTUE2?= =?utf-8?B?S3hVRDhaZ1NKUndWbzhhTTZ1MmlvWGxta1gwMWtBTmpCZ3Nvb3pjQT09?= Content-Type: multipart/mixed; boundary="_011_TY4PR01MB17718A4AB7F564C8DB0D6F7DC94102TY4PR01MB17718jp_" MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: PYMh49YijYONmCujICVeJMtnT6a3LHOyl/SsPwNZGGX59JgLMW+VK7DtlG68L+zJSsqeAJVStuBfHN3OelZmT1N/XALiO0ggAy4QUPB70LHDnQddSjRGtrrgPJbmQiProaawS+swGJL86TMXt2O2i3/f5BIOsMI3B4Ro4FvX14zvMfLsldV6ocSNYwLkVoPqGdKeO+EKYB60B59OhnbA07gsHAhtKaVal0D5zytO+AksMib91lMpOvzK9LgVvc4ldPVuWzBSWRDQONo+d3GNRmvQfDpTVRHt1O+BW6WmkXtXlozTmOKCRDR92tGepLU4llp02UEjXYmrHUWW8Uwmug== X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TY4PR01MB17718.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 15a75c71-b502-415b-7496-08dec206b02c X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jun 2026 06:58:31.3891 (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: sH1mPz2ZMmIsexcv0PyE+Jb6/NHZ+OrJRwJr8vXiLJy8F41kXWDT8dJGEg5UTWbHal7ZuvKQ0Jy6HQ5QkumSXQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYRPR01MB16254 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_011_TY4PR01MB17718A4AB7F564C8DB0D6F7DC94102TY4PR01MB17718jp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gV2VkbmVzZGF5LCBNYXkgMTMsIDIwMjYgNTozMiBQTSBzaHZldGEgbWFsaWsgPHNodmV0YS5t YWxpa0BnbWFpbC5jb20+IHdyb3RlOg0KPiANCj4gT24gV2VkLCBNYXkgMTMsIDIwMjYgYXQgMTA6 NTTigK9BTSBzaHZldGEgbWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+DQo+IHdyb3RlOg0K PiA+DQo+ID4NCj4gPiBQbGVhc2UgZmluZCBhIGZldyBjb21tZW50cyBmb3IgcGF0Y2gwMDMgbW9z dGx5Og0KDQpUaGFua3MgZm9yIHRoZSBjb21tZW50cyENCg0KPiA+DQo+ID4gMSkNCj4gPiAgICog ZGVwZW5kZWQgb24gYnkgb3RoZXIgdHJhbnNhY3Rpb25zLiBFbnRyaWVzIGFyZSBvZiB0eXBlDQo+ IFBhcmFsbGVsaXplZFR4bkVudHJ5Lg0KPiA+ICAgKg0KPiA+ICAgKiBkc2hhc2ggaXMgdXNlZCB0 byBlbmFibGUgZHluYW1pYyBzaGFyZWQgbWVtb3J5IGFsbG9jYXRpb24gYmFzZWQgb24NCj4gPiB0 aGUgbnVtYmVyDQo+ID4gLSAqIG9mIHRyYW5zYWN0aW9ucyBiZWluZyBhcHBsaWVkIGluIHBhcmFs bGVsLg0KPiA+ICsgKiBvZiB0cmFuc2FjdGlvbnMgYmVpbmcgYXBwbGllZCBpbiBwYXJhbGxlbC4g RW50cmllcyBhcmUgb2YgdHlwZQ0KPiA+IFBhcmFsbGVsaXplZFR4bkVudHJ5Lg0KPiA+ICAgKi8N Cj4gPiAgc3RhdGljIGRzYV9hcmVhICpwYXJhbGxlbF9hcHBseV9kc2FfYXJlYSA9IE5VTEw7ICBz dGF0aWMgZHNoYXNoX3RhYmxlDQo+ID4gKnBhcmFsbGVsaXplZF90eG5zID0gTlVMTDsNCj4gPg0K PiA+ICdFbnRyaWVzIGFyZSBvZiB0eXBlIFBhcmFsbGVsaXplZFR4bkVudHJ5JyByZXBlYXRlZCB0 d2ljZSBpbiB0aGlzIGNvbW1lbnQuDQoNClJlbW92ZWQuDQoNCj4gPg0KPiA+DQo+ID4gMikNCj4g PiBjbGVhbnVwX2NvbW1pdHRlZF9yZXBsaWNhX2lkZW50aXR5X2VudHJpZXM6DQo+ID4NCj4gPiAr IGlmICghc2tpcHBlZF93cml0ZSAmJiAhWExvZ1JlY1B0cklzVmFsaWQocG9zLT5sb2NhbF9lbmQp KQ0KPiA+ICsgY29udGludWU7DQo+ID4NCj4gPiBQZXJoYXBzIGEgY29tbWVudCB3aWxsIGhlbHAg dG8gaW5kaWNhdGUgYWJvdmUgY2hlY2tzIG1lYW5zIGEgdHhuIG5vdA0KPiA+IHlldCBmaW5pc2hl ZC4NCg0KQWRkZWQuDQoNCj4gPg0KPiA+IDMpDQo+ID4gQ2FuIHlvdSBwbGVhc2UgY2xhcmlmeSB0 aGUgc2NvcGUsIGxpZmUtc3BhbiBvZiBlbnRyaWVzIGluDQo+ID4gcGFyYWxsZWxpemVkX3R4bnMg dnMgUGFyYWxsZWxBcHBseVR4bkhhc2guIEJvdGggaGF2ZSByZW1vdGUteGlkIGZpZWxkLg0KPiA+ IFNvIGF0IGFueSBwb2ludCBvZiB0aW1lLCBkbyBib3RoIHRhYmxlcyB3aWxsIGhhdmUgc2FtZSBu dW1iZXIgb2YNCj4gPiBlbnRyaWVzIG9yIGlmIGVudHJpZXMgaW4gb25lIGhhcyBiaWdnZXIgbGlm ZS1zcGFuL3Njb3BlIGFzIGNvbXBhcmVkIHRvDQo+ID4gb3RoZXI/IEl0IHdpbGwgYmUgZ29vZCB0 byBicmllZmx5IG1lbnRpb24gdGhlc2UgYXRvcCB0aGUgaGFzaC10YWJsZXMuDQoNCg0KQWRkZWQg Y29tbWVudHMgZm9yIGl0IGF0b3Agb2YgdGhlc2UgaGFzaCB0YWJsZXMuDQoNCj4gPg0KPiA+IDQp DQo+ID4gKy8qDQo+ID4gKyAqIEhhc2ggdGFibGUgc3RvcmluZyByZXBsaWNhIGlkZW50aXR5IHZh bHVlcyBmb3IgY2hhbmdlcyBiZWluZw0KPiA+ICthcHBsaWVkIGluDQo+ID4gKyAqIHBhcmFsbGVs LCBhbG9uZyB3aXRoIHRoZSBsYXN0IHRyYW5zYWN0aW9uIHRoYXQgbW9kaWZpZWQgZWFjaCByb3cu DQo+ID4gLi4uDQo+ID4gK3N0YXRpYyByZXBsaWNhX2lkZW50aXR5X2hhc2ggKnJlcGxpY2FfaWRl bnRpdHlfdGFibGUgPSBOVUxMOw0KPiA+DQo+ID4gUmVnYXJkaW5nICdhbG9uZyB3aXRoIHRoZSBs YXN0IHRyYW5zYWN0aW9uIHRoYXQgbW9kaWZpZWQgZWFjaCByb3cnLCBpcw0KPiA+ICdyZW1vdGVf eGlkJyBpbiBSZXBsaWNhSWRlbnRpdHlFbnRyeSBpcyB0aGUgbGFzdCB0cmFuc2FjdGlvbiB0aGF0 DQo+ID4gbW9kaWZpZWQgdGhpcyByb3cgb3IgdGhlIG9uZSB3aGljaCBpcyBjdXJyZW50bHkgbW9k aWZ5aW5nIGl0Pw0KDQpJdCBjb3VsZCBiZSBlaXRoZXIsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRo ZSB0cmFuc2FjdGlvbiBpcyBzdGlsbCBydW5uaW5nIG9yDQpoYXMgYWxyZWFkeSBmaW5pc2hlZC4g SW4gdGhpcyB2ZXJzaW9uLCBJJ3ZlIGNoYW5nZWQgaXQgdG8gYmUgdGhlICJsYXRlc3QiDQp0cmFu c2FjdGlvbi4NCg0KPiA+DQo+ID4gNSkNCj4gPiBTaW5jZSB3ZSBoYXZlIGFkZGVkIGNvbW1lbnRz IGZvciByZXN0IGZvciB0aGUgZmllbGRzIGZvciBiZWxvdw0KPiA+IGV4aXN0aW5nIHN0cnVjdHVy ZSwgZG8geW91IHRoaW5rIHdlIGNhbiB1cGRhdGUgY29tbWVudCBmb3IgJ3hpZCcgYXMNCj4gPiB3 ZWxsIHRvIHNheSBpdCBpcyByZW1vdGUtb25lLiBJdCBkb2VzIG5vdCBtZW50aW9uIGl0IGFueXdo ZXJlIGluDQo+ID4gY29tbWVudC4NCj4gPg0KPiA+IHR5cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBw bHlXb3JrZXJFbnRyeSB7IFRyYW5zYWN0aW9uSWQgeGlkOyAvKiBIYXNoDQo+ID4ga2V5IC0tIG11 c3QgYmUgZmlyc3QgKi8NCj4gPg0KDQpBZGRlZC4NCg0KPiA+DQo+ID4gNikNCj4gPiAwMDMnIGNv bW1pdCBtZXNzYWdlIHNheXMgYWJvdXQgUkkgdGFibGUgZW50cnk6DQo+ID4NCj4gPiBFbnRyaWVz IGFyZSBkZWxldGVkIHdoZW4gdHJhbnNhY3Rpb25zIGNvbW1pdHRlZCBieSBwYXJhbGxlbCB3b3Jr ZXJzDQo+ID4gYXJlIGdhdGhlcmVkLCBvciB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZXhjZWVkcyB0 aGUgbGltaXQuDQo+ID4gLS0NCj4gPiBJIGRvbid0IHVuZGVyc3RhbmQgd2hhdCBkbyB3ZSBtZWFu IGJ5ICJ3aGVuIHRyYW5zYWN0aW9ucyBjb21taXR0ZWQgYnkNCj4gPiBwYXJhbGxlbCB3b3JrZXJz IGFyZSBnYXRoZXJlZCIuIENhbiB3ZSBwbGVhc2UgbWFrZSBpdCBtb3JlDQo+ID4gY2xlYXIvZWxh Ym9yYXRlLg0KPiA+DQoNCkkgbW9kaWZpZWQgdGhpcyB0byBiZSBjb25zaXN0ZW50IHdpdGggc29t ZSBkZXRhaWxlZCBjb21tZW50cyBpbiB0aGUgcGF0Y2guDQoNCj4gPiB+fg0KPiA+DQo+ID4gUmV2 aWV3aW5nIGZ1cnRoZXIuDQo+ID4NCj4gDQo+IEZldyBtb3JlIG9uIDAwMzoNCj4gDQo+IA0KPiA3 KQ0KPiBJIGZpbmQgY2hlY2tfYW5kX3JlY29yZF9yaV9kZXBlbmRlbmN5KCkgZGlmZmljdWx0IHRv IHVuZGVyc3RhbmQuDQo+IA0KPiBhKQ0KPiBBcyBhbiBleGFtcGxlLCB0aGlzIHBhcnQ6DQo+IA0K PiArIC8qDQo+ICsgKiBSZXR1cm4gaWYgbm8gZW50cnkgZXhpc3RzLCBvciBpZiB0aGUgY3VycmVu dCB0cmFuc2FjdGlvbiB3YXMgdGhlDQo+ICsgbGFzdCBvbmUNCj4gKyAqIHRvIG1vZGlmeSB0aGUg a2V5Lg0KPiArICovDQo+ICsgaWYgKCFyaWVudHJ5IHx8IFRyYW5zYWN0aW9uSWRFcXVhbHMocmll bnRyeS0+cmVtb3RlX3hpZCwNCj4gKyBuZXdfZGVwZW5kZWRfeGlkKSkgcmV0dXJuOw0KPiANCj4g SU1PLCB0aGUgc2Vjb25kIGNoZWNrIG1ha2VzIHNlbnNlIGlmIG5ld19kZXBlbmRlZF94aWQgaXMg dmFsaWQuIElmIHNvLCB3aHkNCj4gZG9uJ3Qgd2UgbWFrZSBpdCBwYXJ0IG9mIHByZXZpb3VzICdp Zg0KPiAoVHJhbnNhY3Rpb25JZElzVmFsaWQobmV3X2RlcGVuZGVkX3hpZCkpJyBsb2dpYy4gSWYg J2ZvdW5kJyB3YXMgdHJ1ZSwgd2UgY2FuDQo+IGNoZWNrIGl0IGluc2lkZSB0aGF0IGlmLWJsb2Nr IGFuZCAncmV0dXJuJyBmcm9tIHRoZXJlIGluc3RlYWQgb2YgcHJvY2VlZGluZw0KPiBmdXJ0aGVy Lg0KPiANCj4gT25jZSB3ZSBtYWtlIGFib3ZlIGNoYW5nZSwgd2UgY2FuIGV2ZW4gbW92ZSBiZWxv dyBsb2dpYyBpbnNpZGUgcHJldmlvdXMNCj4gJ2lmIChUcmFuc2FjdGlvbklkSXNWYWxpZChuZXdf ZGVwZW5kZWRfeGlkKSknIGJsb2NrLCBhcyBpdCBsb29rcyBzdHJhbmdlIHRoYXQgaW4NCj4gcHJl dmlvdXMgaWYtYmxvY2sgd2UgYXJlIGFzc2lnbmluZyBJbnZhbGlkVHJhbnNhY3Rpb25JZCB0byAn cmllbnRyeS0NCj4gPnJlbW90ZV94aWQnIHdoaWxlIHdlIGhhdmUgdmFsaWQgbmV3X2RlcGVuZGVk X3hpZCBhdmFpbGFibGUgdGhlcmUuDQo+IA0KPiArIC8qDQo+ICsgKiBVcGRhdGUgdGhlIG5ldyBk ZXBlbmRlZCB4aWQgaW50byB0aGUgZW50cnkgaWYgdmFsaWQsIHRoZSBuZXcgeGlkDQo+ICsgY291 bGQNCj4gKyAqIGJlIGludmFsaWQgaWYgdGhlIHRyYW5zYWN0aW9uIHdpbGwgYmUgYXBwbGllZCBi eSB0aGUgbGVhZGVyIGl0c2VsZg0KPiArICogd2hpY2ggbWVhbnMgYWxsIHRoZSBjaGFuZ2VzIHdp bGwgYmUgY29tbWl0dGVkIGJlZm9yZSBwcm9jZXNzaW5nIG5leHQNCj4gKyAqIHRyYW5zYWN0aW9u LCBzbyBubyBuZWVkIHRvIGJlIGRlcGVuZGVkIG9uLg0KPiArICovDQo+ICsgaWYgKFRyYW5zYWN0 aW9uSWRJc1ZhbGlkKG5ld19kZXBlbmRlZF94aWQpKQ0KPiArIHJpZW50cnktPnJlbW90ZV94aWQg PSBuZXdfZGVwZW5kZWRfeGlkOw0KDQpSaWdodC4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzIHdyaXR0 ZW4gdGhhdCB3YXkgdG8gc2F2ZSBhIGZldyBsaW5lcywNCmJ1dCBJIGFncmVlIGl0J3MgaGFyZGVy IHRvIHVuZGVyc3RhbmQuIEkndmUgcmVmYWN0b3JlZCB0aGlzIHBhcnQgdG8NCm1ha2UgZWFjaCBz ZWN0aW9uIGNsZWFyZXIuDQoNCj4gDQo+IA0KPiBiKQ0KPiBBbHNvIHRoaXMgcGFydCBpcyBub3Qg Y2xlYXI6DQo+IA0KPiArIC8qDQo+ICsgKiBSZXR1cm4gaWYgUkkga2V5IGlzIE5VTEwgb3IgaXMg ZXhwbGljaXRseSBtYXJrZWQgdW5jaGFuZ2VkLiBUaGUga2V5DQo+ICsgKiB2YWx1ZSBjb3VsZCBi ZSBOVUxMIGluIHRoZSBuZXcgdHVwbGUgb2YgYSB1cGRhdGUgb3BlcnRhaW9uIHdoaWNoDQo+ICsg KiBtZWFucyB0aGUgUkkga2V5IGlzIG5vdCB1cGRhdGVkLg0KPiArICovDQo+ICsgaWYgKG9yaWdp bmFsX2RhdGEtPmNvbHN0YXR1c1tpXSA9PSBMT0dJQ0FMUkVQX0NPTFVNTl9OVUxMIHx8DQo+ICsg b3JpZ2luYWxfZGF0YS0+Y29sc3RhdHVzW2ldID09IExPR0lDQUxSRVBfQ09MVU1OX1VOQ0hBTkdF RCkNCj4gcmV0dXJuOw0KPiANCj4gV2h5IGRvIGhhdmUgd2UgJ3JldHVybicgaGVyZSB3aGVuIG9u ZSBvZiB0aGUgY29sdW1ucyBpcyBOVUxMIG9yDQo+IHVuY2hhbmdlZD8gV2hhdCBoYXBwZW5zIHRv IHJlc3Qgb2YgdGhlIFJJIGNvbHVtbnM/IFdoaWNoIHNjZW5hcmlvIG1heSBoaXQNCj4gdGhpcz8g SXQgbmVlZHMgbW9yZSBjb21tZW50cyB0byBleHBsYWluIHRoZSBzY2VuYXJpby4NCg0KQWZ0ZXIg dGVzdGluZywgSSBmb3VuZCB0aGF0IHRoZSBoYW5kbGluZyBmb3IgdW5jaGFuZ2VkIHRvYXN0ZWQg Y29sdW1ucyB3YXMNCmluY29ycmVjdC4gV2hlbiB0aGUgUkkga2V5IGluY2x1ZGVzIHR3byBjb2x1 bW5zIGFuZCBvbmx5IHRoZSBub24tdG9hc3RlZCBjb2x1bW4NCmlzIGNoYW5nZWQsIHRoZSB0b2Fz dGVkIGNvbHVtbiBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIG5ldyB0dXBsZSBvZiBhbiBVUERBVEUN CmNoYW5nZS4gVGhpcyBtZWFucyB3ZSBjYW5ub3Qgb2J0YWluIHRoZSBjb21wbGV0ZSBSSSBrZXkg dmFsdWUgdG8gY2hlY2sgZm9yDQpkZXBlbmRlbmNpZXMgd2hlbiBoYW5kbGluZyB0aGUgbmV3IGNo YW5nZS4gSSBmaXhlZCB0aGlzIGJ5IGNvcHlpbmcgdGhlIHRvYXN0ZWQNCnZhbHVlIGZyb20gdGhl IG9sZCB0dXBsZSB0byB0aGUgbmV3IG9uZSBiZWZvcmUgZGVwZW5kZW5jeSBjaGVja2luZy4NCg0K PiANCj4gDQo+IDgpDQo+IGNoZWNrX2FuZF9yZWNvcmRfcmlfZGVwZW5kZW5jeSgpIGhhcyB0aGlz IGNvbW1lbnQgYW5kIGxvZ2ljIGFyb3VuZA0KPiBpbnZhbGlkIHJlbW90ZV94aWQ6DQo+IA0KPiAr IC8qDQo+ICsgKiBSZW1vdmUgdGhlIGVudHJ5IGlmIHRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBj b21taXR0ZWQgYW5kIG5vIG5ldw0KPiArICogZGVwZW5kZW5jeSBuZWVkcyB0byBiZSBhZGRlZC4N Cj4gKyAqLw0KPiArIGVsc2UgaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChyaWVudHJ5LT5yZW1v dGVfeGlkKSkNCj4gKyB7DQo+ICsgZnJlZV9yZXBsaWNhX2lkZW50aXR5X2tleShyaWVudHJ5LT5r ZXlkYXRhKTsNCj4gKyByZXBsaWNhX2lkZW50aXR5X2RlbGV0ZV9pdGVtKHJlcGxpY2FfaWRlbnRp dHlfdGFibGUsIHJpZW50cnkpOyB9DQo+IA0KPiBXaGlsZSBmaW5kX2FsbF9kZXBlbmRlbmNpZXNf b25fcmVsKCkgaGFzIHRoaXMgYXNzZXJ0Og0KPiArIEFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxp ZChyaWVudHJ5LT5yZW1vdGVfeGlkKSk7DQo+IA0KPiBUaGUgZmlyc3QgbG9naWMgc2F5cyB0aGF0 IHdlIG1heSBoYXZlIEludmFsaWQgcmVtb3RlX3hpZCBpbiBleGlzdGluZyBlbnRyeSBpbg0KPiBy ZXBsaWNhX2lkZW50aXR5X3RhYmxlIHdoaWxlIHNlY29uZCBsb2dpYyBoYXMgYSBzYW5pdHkgY2hl Y2sgd2hpbGUgaXRlcmF0aW5nDQo+IHRoZSBzYW1lIGhhc2gtdGFibGUgdGhhdCBhbGwgZW50cmll cyBtdXN0IGhhdmUgdmFsaWQgcmVtb3RlX3hpZC4gSXMgdGhlIEFzc2VydA0KPiBjb3JyZWN0PyBX ZSBtaWdodCBoYXZlIEludmFsaWQgcmVtb3RlX3hpZCBpZiB0eG4gaXMgY29tbWl0dGVkIChkb25l IGluDQo+IGNoZWNrX2FuZF9hcHBlbmRfeGlkX2RlcGVuZGVuY3kpLg0KDQpJdCdzIGNvcnJlY3Qu IFRoZSByZW1vdGVfeGlkIGNvdWxkIGJlIGludmFsaWQgb25seSBiZWZvcmUgYmVpbmcgc3RvcmVk DQppbiB0aGUgdGFibGUuIFRoZSBjaGVja19hbmRfYXBwZW5kX3hpZF9kZXBlbmRlbmN5IGZ1bmN0 aW9uIHdhc24ndCB2ZXJ5IGNsZWFyDQphYm91dCB0aGlzLCBidXQgYWZ0ZXIgcmVmYWN0b3Jpbmcs IEkgaG9wZSBpdCdzIGVhc2llciB0byB1bmRlcnN0YW5kIG5vdy4NCg0KSGVyZSBpcyB0aGUgVjE5 IHBhdGNoIHNldCB3aGljaCBhZGRyZXNzZWQgYWxsIHRoZSBjb21tZW50cyBhYm92ZS4NCg0KQmVz dCBSZWdhcmRzLA0KSG91IHpqDQo= --_011_TY4PR01MB17718A4AB7F564C8DB0D6F7DC94102TY4PR01MB17718jp_ Content-Type: application/octet-stream; name="v19-0001-Introduce-a-shared-hash-table-to-store-paralleli.patch" Content-Description: v19-0001-Introduce-a-shared-hash-table-to-store-paralleli.patch Content-Disposition: attachment; filename="v19-0001-Introduce-a-shared-hash-table-to-store-paralleli.patch"; size=9391; creation-date="Thu, 04 Jun 2026 06:54:40 GMT"; modification-date="Thu, 04 Jun 2026 06:58:28 GMT" Content-Transfer-Encoding: base64 RnJvbSA1YTIwMWQ2MjllOTUyMGUwZjNhZDFmMjgxNTU1ODljNjIyMjdhZGRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBaaGlqaWUgSG91IDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBXZWQsIDI3IE1heSAyMDI2IDExOjMxOjM1ICswODAwClN1YmplY3Q6IFtQQVRDSCB2MTkg MS8zXSBJbnRyb2R1Y2UgYSBzaGFyZWQgaGFzaCB0YWJsZSB0byBzdG9yZSBwYXJhbGxlbGl6ZWQK IHRyYW5zYWN0aW9ucwoKVGhpcyBjb21taXQgaW50cm9kdWNlcyBhIHNoYXJlZCBoYXNoIHRhYmxl IGZvciB0cmFja2luZyBwYXJhbGxlbGl6ZWQKdHJhbnNhY3Rpb25zLiBUaGUgaGFzaCB0YWJsZSB1 c2VzIHRyYW5zYWN0aW9uIElEcyBhcyBrZXlzOyBubyB2YWx1ZXMgYXJlIHN0b3JlZC4KClRoZSBo YXNoIGVudHJpZXMgYXJlIGluc2VydGVkIHdpdGggYSByZW1vdGUgWElEIHdoZW4gdGhlIGxlYWRl ciBieXBhc3NlcyByZW1vdGUKdHJhbnNhY3Rpb25zIHRvIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMu IEVudHJpZXMgYXJlIGRlbGV0ZWQgd2hlbiBwYXJhbGxlbAp3b3JrZXJzIGFyZSBjb21taXR0ZWQg dG8gY29ycmVzcG9uZGluZyB0cmFuc2FjdGlvbnMuCgpBbnkgd29ya2VyIGNhbiB1c2UgdGhpcyBo YXNoIHRhYmxlIHRvIGNoZWNrIHdoZXRoZXIgYSB0cmFuc2FjdGlvbiBpcyBzdGlsbAppbiBwcm9n cmVzczoKLSBJZiBhbiBlbnRyeSBleGlzdHMsIHRoZSB0cmFuc2FjdGlvbiBpcyBzdGlsbCBpbiBw cm9ncmVzcy4KLSBJZiBubyBlbnRyeSBleGlzdHMsIHRoZSB0cmFuc2FjdGlvbiBoYXMgY29tbWl0 dGVkLgoKTGF0ZXIgcGF0Y2hlcyB3aWxsIHVzZSB0aGlzIGhhc2ggdGFibGUgdG8gc3VwcG9ydCBk ZXBlbmRlbmN5IHdhaXRpbmcgYW5kCmNvbW1pdCBvcmRlciBwcmVzZXJ2YXRpb24uIFdoZW4gdHJh bnNhY3Rpb24gQSBkZXBlbmRzIG9uIHRyYW5zYWN0aW9uIEIKKG9yIG11c3QgY29tbWl0IGFmdGVy IEIpLCB0aGUgd29ya2VyIHdpbGwgd2FpdCBmb3IgdHJhbnNhY3Rpb24gQidzIGVudHJ5CnRvIGJl IHJlbW92ZWQgYmVmb3JlIGNvbW1pdHRpbmcgdHJhbnNhY3Rpb24gQS4KCkF1dGhvcjogWmhpamll IEhvdSA8aG91emouZm5zdEBmdWppdHN1LmNvbT4KQXV0aG9yOiBIYXlhdG8gS3Vyb2RhIDxrdXJv ZGEuaGF5YXRvQGZ1aml0c3UuY29tPgotLS0KIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5 cGFyYWxsZWx3b3JrZXIuYyB8IDkwICsrKysrKysrKysrKysrKysrKy0KIC4uLi91dGlscy9hY3Rp dml0eS93YWl0X2V2ZW50X25hbWVzLnR4dCAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICA5ICsrCiBzcmMvaW5jbHVkZS9zdG9yYWdl L2x3bG9ja2xpc3QuaCAgICAgICAgICAgICAgfCAgMSArCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgMSArCiA1IGZpbGVzIGNoYW5nZWQsIDEwMSBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCAwMTJkNTVlOWQzZC4uMTA5 ZDg1YzdjZGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBw bHlwYXJhbGxlbHdvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv YXBwbHlwYXJhbGxlbHdvcmtlci5jCkBAIC0yMjEsMTIgKzIyMSwzOCBAQCB0eXBlZGVmIHN0cnVj dCBQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkKIAlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2lu Zm87CiB9IFBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeTsKIAorLyogQW4gZW50cnkgaW4gdGhlIHBh cmFsbGVsaXplZF90eG5zIHNoYXJlZCBoYXNoIHRhYmxlICovCit0eXBlZGVmIHN0cnVjdCBQYXJh bGxlbGl6ZWRUeG5FbnRyeQoreworCVRyYW5zYWN0aW9uSWQgeGlkOwkJCS8qIEhhc2gga2V5LCBy ZW1vdGUgdHJhbnNhY3Rpb24gSUQgKi8KK30gUGFyYWxsZWxpemVkVHhuRW50cnk7CisKIC8qCiAg KiBBIGhhc2ggdGFibGUgdXNlZCB0byBjYWNoZSB0aGUgc3RhdGUgb2Ygc3RyZWFtaW5nIHRyYW5z YWN0aW9ucyBiZWluZyBhcHBsaWVkCi0gKiBieSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4K KyAqIGJ5IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiBFbnRyaWVzIGFyZSBvZiB0eXBlIFBh cmFsbGVsQXBwbHlXb3JrZXJFbnRyeS4KICAqLwogc3RhdGljIEhUQUIgKlBhcmFsbGVsQXBwbHlU eG5IYXNoID0gTlVMTDsKIAorLyoKKyAqIEEgaGFzaCB0YWJsZSB1c2VkIHRvIHRyYWNrIHRoZSBw YXJhbGxlbGl6ZWQgcmVtb3RlIHRyYW5zYWN0aW9ucyB0aGF0IGNvdWxkIGJlCisgKiBkZXBlbmRl ZCBvbiBieSBvdGhlciB0cmFuc2FjdGlvbnMuIEVudHJpZXMgYXJlIG9mIHR5cGUgUGFyYWxsZWxp emVkVHhuRW50cnkuCisgKgorICogZHNoYXNoIGlzIHVzZWQgdG8gZW5hYmxlIGR5bmFtaWMgc2hh cmVkIG1lbW9yeSBhbGxvY2F0aW9uIGJhc2VkIG9uIHRoZSBudW1iZXIKKyAqIG9mIHRyYW5zYWN0 aW9ucyBiZWluZyBhcHBsaWVkIGluIHBhcmFsbGVsLgorICovCitzdGF0aWMgZHNhX2FyZWEgKnBh cmFsbGVsX2FwcGx5X2RzYV9hcmVhID0gTlVMTDsKK3N0YXRpYyBkc2hhc2hfdGFibGUgKnBhcmFs bGVsaXplZF90eG5zID0gTlVMTDsKKworLyogcGFyYW1ldGVycyBmb3IgdGhlIHBhcmFsbGVsaXpl ZF90eG5zIHNoYXJlZCBoYXNoIHRhYmxlICovCitzdGF0aWMgY29uc3QgZHNoYXNoX3BhcmFtZXRl cnMgZHNoX3BhcmFtcyA9IHsKKwlzaXplb2YoVHJhbnNhY3Rpb25JZCksCisJc2l6ZW9mKFBhcmFs bGVsaXplZFR4bkVudHJ5KSwKKwlkc2hhc2hfbWVtY21wLAorCWRzaGFzaF9tZW1oYXNoLAorCWRz aGFzaF9tZW1jcHksCisJTFdUUkFOQ0hFX1BBUkFMTEVMX0FQUExZX0RTQQorfTsKKwogLyoKICAq IEEgbGlzdCAocG9vbCkgb2YgYWN0aXZlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuIFRoZSBpbmZv cm1hdGlvbiBmb3IKICAqIHRoZSBuZXcgd29ya2VyIGlzIGFkZGVkIHRvIHRoZSBsaXN0IGFmdGVy IHN1Y2Nlc3NmdWxseSBsYXVuY2hpbmcgaXQuIFRoZQpAQCAtMjYwLDYgKzI4Niw4IEBAIHN0YXRp YyBMaXN0ICpzdWJ4YWN0bGlzdCA9IE5JTDsKIHN0YXRpYyB2b2lkIHBhX2ZyZWVfd29ya2VyX2lu Zm8oUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKTsKIHN0YXRpYyBQYXJhbGxlbFRyYW5z U3RhdGUgcGFfZ2V0X3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJl ZCk7CiBzdGF0aWMgUGFydGlhbEZpbGVTZXRTdGF0ZSBwYV9nZXRfZmlsZXNldF9zdGF0ZSh2b2lk KTsKK3N0YXRpYyB2b2lkIHBhX2F0dGFjaF9wYXJhbGxlbGl6ZWRfdHhuX2hhc2goZHNhX2hhbmRs ZSAqcGFfZHNhX2hhbmRsZSwKKwkJCQkJCQkJCQkJZHNoYXNoX3RhYmxlX2hhbmRsZSAqcGFfZHNo YXNoX2hhbmRsZSk7CiAKIC8qCiAgKiBSZXR1cm5zIHRydWUgaWYgaXQgaXMgT0sgdG8gc3RhcnQg YSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIGZhbHNlIG90aGVyd2lzZS4KQEAgLTMzNyw2ICszNjUs MTUgQEAgcGFfc2V0dXBfZHNtKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKIAlzaG1f bXEJICAgKm1xOwogCVNpemUJCXF1ZXVlX3NpemUgPSBEU01fUVVFVUVfU0laRTsKIAlTaXplCQll cnJvcl9xdWV1ZV9zaXplID0gRFNNX0VSUk9SX1FVRVVFX1NJWkU7CisJZHNhX2hhbmRsZQlwYXJh bGxlbF9hcHBseV9kc2FfaGFuZGxlOworCWRzaGFzaF90YWJsZV9oYW5kbGUgcGFyYWxsZWxpemVk X3R4bnNfaGFuZGxlOworCisJcGFfYXR0YWNoX3BhcmFsbGVsaXplZF90eG5faGFzaCgmcGFyYWxs ZWxfYXBwbHlfZHNhX2hhbmRsZSwKKwkJCQkJCQkJCSZwYXJhbGxlbGl6ZWRfdHhuc19oYW5kbGUp OworCisJaWYgKHBhcmFsbGVsX2FwcGx5X2RzYV9oYW5kbGUgPT0gRFNBX0hBTkRMRV9JTlZBTElE IHx8CisJCXBhcmFsbGVsaXplZF90eG5zX2hhbmRsZSA9PSBEU0hBU0hfSEFORExFX0lOVkFMSUQp CisJCXJldHVybiBmYWxzZTsKIAogCS8qCiAJICogRXN0aW1hdGUgaG93IG11Y2ggc2hhcmVkIG1l bW9yeSB3ZSBuZWVkLgpAQCAtMzcyLDYgKzQwOSw4IEBAIHBhX3NldHVwX2RzbShQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqd2luZm8pCiAJcGdfYXRvbWljX2luaXRfdTMyKCYoc2hhcmVkLT5wZW5k aW5nX3N0cmVhbV9jb3VudCksIDApOwogCXNoYXJlZC0+bGFzdF9jb21taXRfZW5kID0gSW52YWxp ZFhMb2dSZWNQdHI7CiAJc2hhcmVkLT5maWxlc2V0X3N0YXRlID0gRlNfRU1QVFk7CisJc2hhcmVk LT5wYXJhbGxlbF9hcHBseV9kc2FfaGFuZGxlID0gcGFyYWxsZWxfYXBwbHlfZHNhX2hhbmRsZTsK KwlzaGFyZWQtPnBhcmFsbGVsaXplZF90eG5zX2hhbmRsZSA9IHBhcmFsbGVsaXplZF90eG5zX2hh bmRsZTsKIAogCXNobV90b2NfaW5zZXJ0KHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX1NIQVJFRCwg c2hhcmVkKTsKIApAQCAtODc2LDYgKzkxNSw4IEBAIFBhcmFsbGVsQXBwbHlXb3JrZXJNYWluKERh dHVtIG1haW5fYXJnKQogCXNobV9tcQkgICAqbXE7CiAJc2htX21xX2hhbmRsZSAqbXFoOwogCXNo bV9tcV9oYW5kbGUgKmVycm9yX21xaDsKKwlkc2FfaGFuZGxlCXBhX2RzYV9oYW5kbGU7CisJZHNo YXNoX3RhYmxlX2hhbmRsZSBwYV9kc2hhc2hfaGFuZGxlOwogCVJlcGxPcmlnaW5JZCBvcmlnaW5p ZDsKIAlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFpbl9hcmcpOwogCWNoYXIJ CW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOwpAQCAtOTYyLDYgKzEwMDMsOCBAQCBQYXJhbGxlbEFw cGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAogCUluaXRpYWxpemluZ0FwcGx5V29ya2Vy ID0gZmFsc2U7CiAKKwlwYV9hdHRhY2hfcGFyYWxsZWxpemVkX3R4bl9oYXNoKCZwYV9kc2FfaGFu ZGxlLCAmcGFfZHNoYXNoX2hhbmRsZSk7CisKIAkvKiBTZXR1cCByZXBsaWNhdGlvbiBvcmlnaW4g dHJhY2tpbmcuICovCiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlSZXBsaWNhdGlvbk9y aWdpbk5hbWVGb3JMb2dpY2FsUmVwKE15U3Vic2NyaXB0aW9uLT5vaWQsIEludmFsaWRPaWQsCkBA IC0xNjU2LDMgKzE2OTksNDggQEAgcGFfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKndpbmZvLCBYTG9nUmVjUHRyIHJlbW90ZV9sc24pCiAKIAlwYV9mcmVlX3dvcmtlcih3aW5m byk7CiB9CisKKy8qCisgKiBBdHRhY2ggdG8gdGhlIHNoYXJlZCBoYXNoIHRhYmxlIGZvciBwYXJh bGxlbGl6ZWQgdHJhbnNhY3Rpb25zLgorICovCitzdGF0aWMgdm9pZAorcGFfYXR0YWNoX3BhcmFs bGVsaXplZF90eG5faGFzaChkc2FfaGFuZGxlICpwYV9kc2FfaGFuZGxlLAorCQkJCQkJCQlkc2hh c2hfdGFibGVfaGFuZGxlICpwYV9kc2hhc2hfaGFuZGxlKQoreworCU1lbW9yeUNvbnRleHQgb2xk Y3R4OworCisJaWYgKHBhcmFsbGVsaXplZF90eG5zKQorCXsKKwkJQXNzZXJ0KHBhcmFsbGVsX2Fw cGx5X2RzYV9hcmVhKTsKKwkJKnBhX2RzYV9oYW5kbGUgPSBkc2FfZ2V0X2hhbmRsZShwYXJhbGxl bF9hcHBseV9kc2FfYXJlYSk7CisJCSpwYV9kc2hhc2hfaGFuZGxlID0gZHNoYXNoX2dldF9oYXNo X3RhYmxlX2hhbmRsZShwYXJhbGxlbGl6ZWRfdHhucyk7CisJCXJldHVybjsKKwl9CisKKwkvKiBC ZSBzdXJlIGFueSBsb2NhbCBtZW1vcnkgYWxsb2NhdGVkIGJ5IERTQSByb3V0aW5lcyBpcyBwZXJz aXN0ZW50LiAqLworCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQp OworCisJaWYgKGFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSkKKwl7CisJCS8qIEluaXRpYWxpemUg ZHluYW1pYyBzaGFyZWQgaGFzaCB0YWJsZSBmb3IgcGFyYWxsZWxpemVkIHRyYW5zYWN0aW9ucyAq LworCQlwYXJhbGxlbF9hcHBseV9kc2FfYXJlYSA9IGRzYV9jcmVhdGUoTFdUUkFOQ0hFX1BBUkFM TEVMX0FQUExZX0RTQSk7CisJCWRzYV9waW4ocGFyYWxsZWxfYXBwbHlfZHNhX2FyZWEpOworCQlk c2FfcGluX21hcHBpbmcocGFyYWxsZWxfYXBwbHlfZHNhX2FyZWEpOworCQlwYXJhbGxlbGl6ZWRf dHhucyA9IGRzaGFzaF9jcmVhdGUocGFyYWxsZWxfYXBwbHlfZHNhX2FyZWEsICZkc2hfcGFyYW1z LCBOVUxMKTsKKworCQkvKiBTdG9yZSBoYW5kbGVzIGluIHNoYXJlZCBtZW1vcnkgZm9yIG90aGVy IGJhY2tlbmRzIHRvIHVzZS4gKi8KKwkJKnBhX2RzYV9oYW5kbGUgPSBkc2FfZ2V0X2hhbmRsZShw YXJhbGxlbF9hcHBseV9kc2FfYXJlYSk7CisJCSpwYV9kc2hhc2hfaGFuZGxlID0gZHNoYXNoX2dl dF9oYXNoX3RhYmxlX2hhbmRsZShwYXJhbGxlbGl6ZWRfdHhucyk7CisJfQorCWVsc2UgaWYgKGFt X3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCXsKKwkJLyogQXR0YWNoIHRvIGV4aXN0aW5nIGR5 bmFtaWMgc2hhcmVkIGhhc2ggdGFibGUuICovCisJCXBhcmFsbGVsX2FwcGx5X2RzYV9hcmVhID0g ZHNhX2F0dGFjaChNeVBhcmFsbGVsU2hhcmVkLT5wYXJhbGxlbF9hcHBseV9kc2FfaGFuZGxlKTsK KwkJZHNhX3Bpbl9tYXBwaW5nKHBhcmFsbGVsX2FwcGx5X2RzYV9hcmVhKTsKKwkJcGFyYWxsZWxp emVkX3R4bnMgPSBkc2hhc2hfYXR0YWNoKHBhcmFsbGVsX2FwcGx5X2RzYV9hcmVhLCAmZHNoX3Bh cmFtcywKKwkJCQkJCQkJCQkgIE15UGFyYWxsZWxTaGFyZWQtPnBhcmFsbGVsaXplZF90eG5zX2hh bmRsZSwKKwkJCQkJCQkJCQkgIE5VTEwpOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhv bGRjdHgpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9l dmVudF9uYW1lcy50eHQgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X25h bWVzLnR4dAppbmRleCA1NjA2NTlmOTU2OC4uMTMzOWMzMzI2MmYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0CisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0CkBAIC00MTcsNiArNDE3LDcg QEAgWGFjdFNMUlUJIldhaXRpbmcgdG8gYWNjZXNzIHRoZSB0cmFuc2FjdGlvbiBzdGF0dXMgU0xS VSBjYWNoZS4iCiBQYXJhbGxlbFZhY3V1bURTQQkiV2FpdGluZyBmb3IgcGFyYWxsZWwgdmFjdXVt IGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBhbGxvY2F0aW9uLiIKIEFpb1VyaW5nQ29tcGxldGlvbgki V2FpdGluZyBmb3IgYW5vdGhlciBwcm9jZXNzIHRvIGNvbXBsZXRlIElPIHZpYSBpb191cmluZy4i CiBTaG1lbUluZGV4CSJXYWl0aW5nIHRvIGZpbmQgb3IgYWxsb2NhdGUgc3BhY2UgaW4gc2hhcmVk IG1lbW9yeS4iCitQYXJhbGxlbEFwcGx5RFNBCSJXYWl0aW5nIGZvciBwYXJhbGxlbCBhcHBseSBk eW5hbWljIHNoYXJlZCBtZW1vcnkgYWxsb2NhdGlvbi4iCiAKICMgTm8gIkFCSV9jb21wYXRpYmls aXR5IiByZWdpb24gaGVyZSBhcyBXYWl0RXZlbnRMV0xvY2sgaGFzIGl0cyBvd24gQyBjb2RlLgog CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IDc0NWI3ZDll OTY5Li5lNjBlMGMzZDZkNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29y a2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVy bmFsLmgKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImRhdGF0eXBlL3Rp bWVzdGFtcC5oIgorI2luY2x1ZGUgImxpYi9kc2hhc2guaCIKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCIKICNpbmNsdWRlICJy ZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgpAQCAtMTk2LDYgKzE5NywxNCBAQCB0eXBlZGVmIHN0 cnVjdCBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkCiAJICovCiAJUGFydGlhbEZpbGVTZXRTdGF0 ZSBmaWxlc2V0X3N0YXRlOwogCUZpbGVTZXQJCWZpbGVzZXQ7CisKKwkvKgorCSAqIERTQSBoYW5k bGUgZm9yIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIGFsb25nIHdpdGggdGhlIGhhbmRsZSBmb3Ig dGhlCisJICogc2hhcmVkIGhhc2ggdGFibGUgYWxsb2NhdGVkIHVuZGVyIGl0LiBUaGUgaGFzaCB0 YWJsZSBzdG9yZXMgcGFyYWxsZWxpemVkCisJICogdHJhbnNhY3Rpb24gaW5mb3JtYXRpb24uCisJ ICovCisJZHNhX2hhbmRsZQlwYXJhbGxlbF9hcHBseV9kc2FfaGFuZGxlOworCWRzaGFzaF90YWJs ZV9oYW5kbGUgcGFyYWxsZWxpemVkX3R4bnNfaGFuZGxlOwogfSBQYXJhbGxlbEFwcGx5V29ya2Vy U2hhcmVkOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sd2xvY2tsaXN0 LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2x3bG9ja2xpc3QuaAppbmRleCBkN2ViNjQ4YmQyNy4u YzVmMjkyMWI3MDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbHdsb2NrbGlzdC5o CisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbHdsb2NrbGlzdC5oCkBAIC0xNDAsMyArMTQwLDQg QEAgUEdfTFdMT0NLVFJBTkNIRShYQUNUX1NMUlUsIFhhY3RTTFJVKQogUEdfTFdMT0NLVFJBTkNI RShQQVJBTExFTF9WQUNVVU1fRFNBLCBQYXJhbGxlbFZhY3V1bURTQSkKIFBHX0xXTE9DS1RSQU5D SEUoQUlPX1VSSU5HX0NPTVBMRVRJT04sIEFpb1VyaW5nQ29tcGxldGlvbikKIFBHX0xXTE9DS1RS QU5DSEUoU0hNRU1fSU5ERVgsIFNobWVtSW5kZXgpCitQR19MV0xPQ0tUUkFOQ0hFKFBBUkFMTEVM X0FQUExZX0RTQSwgUGFyYWxsZWxBcHBseURTQSkKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5k ZXggOGNmNDBjODcwNDMuLmZhYmRhMTdkNzM5IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApA QCAtMjE2Miw2ICsyMTYyLDcgQEAgUGFyYWxsZWxIYXNoSm9pbkJhdGNoCiBQYXJhbGxlbEhhc2hK b2luQmF0Y2hBY2Nlc3NvcgogUGFyYWxsZWxIYXNoSm9pblN0YXRlCiBQYXJhbGxlbEluZGV4U2Nh bkRlc2MKK1BhcmFsbGVsaXplZFR4bkVudHJ5CiBQYXJhbGxlbFNsb3QKIFBhcmFsbGVsU2xvdEFy cmF5CiBQYXJhbGxlbFNsb3RSZXN1bHRIYW5kbGVyCi0tIAoyLjQzLjAKCg== --_011_TY4PR01MB17718A4AB7F564C8DB0D6F7DC94102TY4PR01MB17718jp_ Content-Type: application/octet-stream; name="v19-0010-Support-serializing-changes-to-disk-when-the-sen.patch" Content-Description: v19-0010-Support-serializing-changes-to-disk-when-the-sen.patch Content-Disposition: attachment; filename="v19-0010-Support-serializing-changes-to-disk-when-the-sen.patch"; size=16661; creation-date="Thu, 04 Jun 2026 06:54:40 GMT"; modification-date="Thu, 04 Jun 2026 06:58:28 GMT" Content-Transfer-Encoding: base64 RnJvbSAxNmVjMTY2ZjYxZWRkZmRlYjE0MmFmNDBhOWNiYzA5MzhhZGNiZTI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBaaGlqaWUgSG91IDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBUaHUsIDMwIEFwciAyMDI2IDE2OjUyOjQxICswODAwClN1YmplY3Q6IFtQQVRDSCB2MTkg MTAvMTBdIFN1cHBvcnQgc2VyaWFsaXppbmcgY2hhbmdlcyB0byBkaXNrIHdoZW4gdGhlIHNlbmQK IGJ1ZmZlciBpcyBmdWxsCgpUaGlzIGNvbW1pdCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBsZWFkZXIg YXBwbHkgd29ya2VyIHRvIHNlcmlhbGl6ZSBjaGFuZ2VzIHRvCmRpc2sgd2hlbiB0aGUgc2VuZCBi dWZmZXIgdG8gcGFyYWxsZWwgYXBwbHkgd29ya2VycyBiZWNvbWVzIGZ1bGwuIElmIGEgcGFyYWxs ZWwKYXBwbHkgd29ya2VyIGNhbm5vdCBzZW5kIGNoYW5nZXMgdG8gdGhlIGxlYWRlciBkdWUgdG8g YSBzZW5kIHRpbWVvdXQsIGl0CnN3aXRjaGVzIHRvIHNlcmlhbGl6YXRpb24gbW9kZSBhbmQgd3Jp dGVzIHRoZSByZW1haW5pbmcgY2hhbmdlcyBvZiB0aGUgcmVtb3RlCnRyYW5zYWN0aW9uIHRvIGEg ZmlsZS4gVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBsYXRlciByZWFkcyBhbmQgYXBwbGllcyB0 aGUKc2VyaWFsaXplZCBjaGFuZ2VzIG9uY2UgaXQgaGFzIGNhdWdodCB1cC4KLS0tCiAuLi4vcmVw bGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgfCAgNTIgKysrKy0KIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8IDE4NCArKysrKysrKysr KysrLS0tLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA1MF9wYXJhbGxlbF9hcHBseS5wbCB8 ICAzMCArKysKIDMgZmlsZXMgY2hhbmdlZCwgMjA5IGluc2VydGlvbnMoKyksIDU3IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlw YXJhbGxlbHdvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBh cmFsbGVsd29ya2VyLmMKaW5kZXggN2NlZDI2MTQ0NWMuLjE3Y2Q1MjM5NGY2IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIu YwpAQCAtOTc2LDYgKzk3NiwzOCBAQCBwYV9nZXRfbGFzdF9jb21taXRfZW5kKFRyYW5zYWN0aW9u SWQgeGlkLCBib29sIGRlbGV0ZV9lbnRyeSwgYm9vbCAqc2tpcHBlZF93cml0ZQogCXJldHVybiBl bnRyeS0+bG9jYWxfZW5kOwogfQogCisvKgorICogV2FpdCBmb3IgdGhlIHJlbW90ZSB0cmFuc2Fj dGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCByZW1vdGUgeGlkIHRvCisgKiBjb21w bGV0ZS4KKyAqLworc3RhdGljIHZvaWQKK3BhX3dhaXRfZm9yX3RyYW5zYWN0aW9uKFRyYW5zYWN0 aW9uSWQgd2FpdF9mb3JfeGlkKQoreworCWlmICghYW1fbGVhZGVyX2FwcGx5X3dvcmtlcigpKQor CQlyZXR1cm47CisKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHdhaXRfZm9yX3hpZCkpCisJ CXJldHVybjsKKworCWVsb2coREVCVUcxLCAicGxhbiB0byB3YWl0IGZvciByZW1vdGVfeGlkICV1 IHRvIGZpbmlzaCIsCisJCSB3YWl0X2Zvcl94aWQpOworCisJZm9yICg7OykKKwl7CisJCWlmIChw YV90cmFuc2FjdGlvbl9jb21taXR0ZWQod2FpdF9mb3JfeGlkKSkKKwkJCWJyZWFrOworCisJCXBh X2xvY2tfdHJhbnNhY3Rpb24od2FpdF9mb3JfeGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCQlwYV91 bmxvY2tfdHJhbnNhY3Rpb24od2FpdF9mb3JfeGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCS8q IEFuIGludGVycnVwdCBtYXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcuICov CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJfQorCisJZWxvZyhERUJVRzEsICJmaW5pc2hl ZCB3YWl0IGZvciByZW1vdGVfeGlkICV1IHRvIGZpbmlzaCIsCisJCSB3YWl0X2Zvcl94aWQpOwor fQorCiAvKgogICogSW50ZXJydXB0IGhhbmRsZXIgZm9yIG1haW4gbG9vcCBvZiBwYXJhbGxlbCBh cHBseSB3b3JrZXIuCiAgKi8KQEAgLTE1OTUsNiArMTYyNyw3IEBAIHBhX3NlbmRfZGF0YShQYXJh bGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRh KQogdm9pZAogcGFfZGlzdHJpYnV0ZV9zY2hlbWFfY2hhbmdlc190b193b3JrZXJzKExvZ2ljYWxS ZXBSZWxhdGlvbiAqcmVsKQogeworCUxpc3QJICAgKndvcmtlcnNfc3RvcHBlZCA9IE5JTDsKIAlT dHJpbmdJbmZvRGF0YSBvdXQ7CiAKIAkvKiBPbmx5IGxlYWRlciBhcHBseSB3b3JrZXJzIGNhbiBk aXN0cmlidXRlIHNjaGVtYSBjaGFuZ2VzICovCkBAIC0xNjMxLDEzICsxNjY0LDIyIEBAIHBhX2Rp c3RyaWJ1dGVfc2NoZW1hX2NoYW5nZXNfdG9fd29ya2VycyhMb2dpY2FsUmVwUmVsYXRpb24gKnJl bCkKIAkJCWNvbnRpbnVlOwogCiAJCS8qCi0JCSAqIFRPRE86IFN1cHBvcnQgc3dpdGNoaW5nIHRv IFBBUlRJQUxfU0VSSUFMSVpFIG1vZGUgd2hlbiB0aGUgc2VuZAotCQkgKiBidWZmZXIgYmVjb21l cyBmdWxsLgorCQkgKiBEaXN0cmlidXRpb24gdG8gdGhpcyB3b3JrZXIgZmFpbGVkIGR1ZSB0byBh IHNlbmRpbmcgdGltZW91dC4gV2FpdAorCQkgKiBmb3IgdGhlIHdvcmtlciB0byBjb21wbGV0ZSBp dHMgdHJhbnNhY3Rpb24gYW5kIHRoZW4gc3RvcCBpdC4gVGhpcworCQkgKiBpcyBjb25zaXN0ZW50 IHdpdGggdGhlIGhhbmRsaW5nIG9mIHdvcmtlcnMgaW4gc2VyaWFsaXplIG1vZGUgKHNlZQorCQkg KiBwYV9mcmVlX3dvcmtlcigpIGZvciBkZXRhaWxzKS4KIAkJICovCi0JCWVyZXBvcnQoRVJST1Is Ci0JCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwK LQkJCQllcnJtc2coImNvdWxkIG5vdCBzZW5kIGRhdGEgdG8gdGhlIGxvZ2ljYWwgcmVwbGljYXRp b24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24iKSk7CisJCXBhX3dhaXRf Zm9yX3RyYW5zYWN0aW9uKHdpbmZvLT5zaGFyZWQtPnhpZCk7CisKKwkJcGFfZ2V0X2xhc3RfY29t bWl0X2VuZCh3aW5mby0+c2hhcmVkLT54aWQsIGZhbHNlLCBOVUxMKTsKKworCQlsb2dpY2FscmVw X3BhX3dvcmtlcl9zdG9wKHdpbmZvKTsKKworCQl3b3JrZXJzX3N0b3BwZWQgPSBsYXBwZW5kKHdv cmtlcnNfc3RvcHBlZCwgd2luZm8pOwogCX0KKworCWZvcmVhY2hfcHRyKFBhcmFsbGVsQXBwbHlX b3JrZXJJbmZvLCB3aW5mbywgd29ya2Vyc19zdG9wcGVkKQorCQlwYV9mcmVlX3dvcmtlcl9pbmZv KHdpbmZvKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5j CmluZGV4IDZmOGQ4M2M2YjdiLi40MGFkOTIyYjlmYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3dvcmtlci5jCkBAIC03MzMsOSArNzMzLDkgQEAgc3RhdGljIHZvaWQgc2V0X3dh bF9yZWNlaXZlcl90aW1lb3V0KHZvaWQpOwogCiBzdGF0aWMgdm9pZCBvbl9leGl0X2NsZWFyX3hh Y3Rfc3RhdGUoaW50IGNvZGUsIERhdHVtIGFyZyk7CiAKLXN0YXRpYyB2b2lkIHNlbmRfaW50ZXJu YWxfZGVwZW5kZW5jaWVzKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywKK3N0YXRpYyBi b29sIHNlbmRfaW50ZXJuYWxfZGVwZW5kZW5jaWVzKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3 aW5mbywKIAkJCQkJCQkJCSAgIExpc3QgKmRlcGVuZHNfb25feGlkcyk7Ci1zdGF0aWMgdm9pZCBi dWlsZF9kZXBlbmRlbmN5X3dpdGhfbGFzdF9jb21taXR0ZWRfdHhuKFBhcmFsbGVsQXBwbHlXb3Jr ZXJJbmZvICp3aW5mbyk7CitzdGF0aWMgYm9vbCBidWlsZF9kZXBlbmRlbmN5X3dpdGhfbGFzdF9j b21taXR0ZWRfdHhuKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyk7CiAKIC8qCiAgKiBD b21wdXRlIHRoZSBoYXNoIHZhbHVlIGZvciBlbnRyaWVzIGluIHRoZSByZXBsaWNhX2lkZW50aXR5 X3RhYmxlLgpAQCAtMTkzMSw2ICsxOTMxLDkgQEAgaGFuZGxlX3BhcmFsbGVsaXplZF90cmFuc2Fj dGlvbihMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcykKIAlQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqd2luZm87CiAJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CiAK KwkvKiBTYXZlIHRoZSBtZXNzYWdlIGJlZm9yZSBpdCBpcyBjb25zdW1lZC4gKi8KKwlTdHJpbmdJ bmZvRGF0YSBvcmlnaW5hbF9tc2cgPSAqczsKKwogCS8qCiAJICogRGVwZW5kZW5jeSBjaGVja2lu ZyBmb3Igbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgaXMgb25seSByZXF1aXJlZCBpbgogCSAq IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGR1cmluZyBhIHJlbW90ZSB0cmFuc2FjdGlvbi4KQEAg LTE5NTEsNiArMTk1NCwxMiBAQCBoYW5kbGVfcGFyYWxsZWxpemVkX3RyYW5zYWN0aW9uKExvZ2lj YWxSZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQogCiAJaGFuZGxlX2RlcGVuZGVuY3lf b25fY2hhbmdlKGFjdGlvbiwgcywgcmVtb3RlX3hpZCwgd2luZm8pOwogCisJLyoKKwkgKiBSZS1m ZXRjaCB0aGUgbGF0ZXN0IGFwcGx5IGFjdGlvbiBhcyBpdCBtaWdodCBoYXZlIGJlZW4gY2hhbmdl ZCBkdXJpbmcKKwkgKiBkZXBlbmRlbmN5IGNoZWNrLgorCSAqLworCWFwcGx5X2FjdGlvbiA9IGdl dF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24ocmVtb3RlX3hpZCwgJndpbmZvKTsKKwogCXN3aXRj aCAoYXBwbHlfYWN0aW9uKQogCXsKIAkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExF TDoKQEAgLTE5NjIsMTMgKzE5NzEsMTggQEAgaGFuZGxlX3BhcmFsbGVsaXplZF90cmFuc2FjdGlv bihMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcykKIAkJCQkJCWFjdGlvbiAh PSBMT0dJQ0FMX1JFUF9NU0dfVFlQRSk7CiAKIAkJCS8qCi0JCQkgKiBUT0RPOiBTdXBwb3J0IHN3 aXRjaGluZyB0byBQQVJUSUFMX1NFUklBTElaRSBtb2RlIHdoZW4gdGhlIHNlbmQKLQkJCSAqIGJ1 ZmZlciBiZWNvbWVzIGZ1bGwuCisJCQkgKiBTd2l0Y2ggdG8gc2VyaWFsaXplIG1vZGUgd2hlbiB3 ZSBhcmUgbm90IGFibGUgdG8gc2VuZCB0aGUKKwkJCSAqIGNoYW5nZSB0byBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuCiAJCQkgKi8KLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCWVycmNvZGUoRVJSQ09E RV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCi0JCQkJCWVycm1zZygiY291bGQg bm90IHNlbmQgZGF0YSB0byB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3 b3JrZXIiKSk7Ci0JCQlyZXR1cm4gZmFsc2U7CS8qIHNpbGVuY2UgY29tcGlsZXIgd2FybmluZyAq LworCQkJcGFfc3dpdGNoX3RvX3BhcnRpYWxfc2VyaWFsaXplKHdpbmZvLCBmYWxzZSk7CisKKwkJ CXBnX2ZhbGx0aHJvdWdoOworCQljYXNlIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRToK KwkJCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9uLCAmb3JpZ2luYWxfbXNnKTsKKworCQkJLyog U2FtZSByZWFzb24gYXMgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUwgY2FzZS4gKi8KKwkJ CXJldHVybiAoYWN0aW9uICE9IExPR0lDQUxfUkVQX01TR19SRUxBVElPTiAmJgorCQkJCQlhY3Rp b24gIT0gTE9HSUNBTF9SRVBfTVNHX1RZUEUpOwogCiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9S LCAidW5leHBlY3RlZCBhcHBseSBhY3Rpb246ICVkIiwgKGludCkgYXBwbHlfYWN0aW9uKTsKQEAg LTIzNDAsNiArMjM1NCw5IEBAIGFwcGx5X2hhbmRsZV9iZWdpbihTdHJpbmdJbmZvIHMpCiAJUGFy YWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOwogCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0 aW9uOwogCisJLyogU2F2ZSB0aGUgbWVzc2FnZSBiZWZvcmUgaXQgaXMgY29uc3VtZWQuICovCisJ U3RyaW5nSW5mb0RhdGEgb3JpZ2luYWxfbXNnID0gKnM7CisKIAkvKiBUaGVyZSBtdXN0IG5vdCBi ZSBhbiBhY3RpdmUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiAqLwogCUFzc2VydCghVHJhbnNhY3Rp b25JZElzVmFsaWQoc3RyZWFtX3hpZCkpOwogCkBAIC0yMzczLDEyICsyMzkwLDE5IEBAIGFwcGx5 X2hhbmRsZV9iZWdpbihTdHJpbmdJbmZvIHMpCiAJCQl9CiAKIAkJCS8qCi0JCQkgKiBUT0RPOiBT dXBwb3J0IHN3aXRjaGluZyB0byBQQVJUSUFMX1NFUklBTElaRSBtb2RlIHdoZW4gdGhlIHNlbmQK LQkJCSAqIGJ1ZmZlciBiZWNvbWVzIGZ1bGwuCisJCQkgKiBTd2l0Y2ggdG8gc2VyaWFsaXplIG1v ZGUgd2hlbiB3ZSBhcmUgbm90IGFibGUgdG8gc2VuZCB0aGUKKwkJCSAqIGNoYW5nZSB0byBwYXJh bGxlbCBhcHBseSB3b3JrZXIuCiAJCQkgKi8KLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCWVycmNv ZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCi0JCQkJCWVycm1z ZygiY291bGQgbm90IHNlbmQgZGF0YSB0byB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxl bCBhcHBseSB3b3JrZXIiKSk7CisJCQlwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJpYWxpemUod2lu Zm8sIHRydWUpOworCisJCQlwZ19mYWxsdGhyb3VnaDsKKwkJY2FzZSBUUkFOU19MRUFERVJfUEFS VElBTF9TRVJJQUxJWkU6CisJCQlBc3NlcnQod2luZm8pOworCisJCQlzdHJlYW1fd3JpdGVfY2hh bmdlKExPR0lDQUxfUkVQX01TR19CRUdJTiwgJm9yaWdpbmFsX21zZyk7CisKKwkJCS8qIENhY2hl IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHRoaXMgdHJhbnNhY3Rpb24uICovCisJCQlw YV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcih3aW5mbyk7CiAJCQlicmVhazsKIAogCQljYXNlIFRS QU5TX1BBUkFMTEVMX0FQUExZOgpAQCAtMjQwMCw3ICsyNDI0LDcgQEAgYXBwbHlfaGFuZGxlX2Jl Z2luKFN0cmluZ0luZm8gcykKIC8qCiAgKiBTZW5kIGFuIElOVEVSTkFMX0RFUEVOREVOQ1kgbWVz c2FnZSB0byBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KICAqLwotc3RhdGljIHZvaWQKK3N0YXRp YyBib29sCiBzZW5kX2ludGVybmFsX2RlcGVuZGVuY2llcyhQYXJhbGxlbEFwcGx5V29ya2VySW5m byAqd2luZm8sIExpc3QgKmRlcGVuZHNfb25feGlkcykKIHsKIAlTdHJpbmdJbmZvRGF0YSBkZXBl bmRlbmNpZXM7CkBAIC0yNDE0LDE0ICsyNDM4LDIyIEBAIHNlbmRfaW50ZXJuYWxfZGVwZW5kZW5j aWVzKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgTGlzdCAqZGVwZW5kc19vbl94aWRz CiAJZm9yZWFjaF94aWQoeGlkLCBkZXBlbmRzX29uX3hpZHMpCiAJCXBxX3NlbmRpbnQzMigmZGVw ZW5kZW5jaWVzLCB4aWQpOwogCisJaWYgKCF3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMpCisJewor CQlpZiAocGFfc2VuZF9kYXRhKHdpbmZvLCBkZXBlbmRlbmNpZXMubGVuLCBkZXBlbmRlbmNpZXMu ZGF0YSkpCisJCQlyZXR1cm4gdHJ1ZTsKKworCQlwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJpYWxp emUod2luZm8sIHRydWUpOworCX0KKwogCS8qCi0JICogVE9ETzogU3VwcG9ydCBzd2l0Y2hpbmcg dG8gUEFSVElBTF9TRVJJQUxJWkUgbW9kZSB3aGVuIHRoZSBzZW5kCi0JICogYnVmZmVyIGJlY29t ZXMgZnVsbC4KKwkgKiBTa2lwIHdyaXRpbmcgdGhlIGZpcnN0IGludGVybmFsIG1lc3NhZ2UgZmxh ZyBiZWNhdXNlCisJICogc3RyZWFtX3dyaXRlX2NoYW5nZSgpIGFjY2VwdHMgaXQgYXMgdGhlIGFy Z3VtZW50LgogCSAqLwotCWlmICghcGFfc2VuZF9kYXRhKHdpbmZvLCBkZXBlbmRlbmNpZXMubGVu LCBkZXBlbmRlbmNpZXMuZGF0YSkpCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJZXJyY29kZShFUlJD T0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKLQkJCQllcnJtc2coImNvdWxk IG5vdCBzZW5kIGRhdGEgdG8gdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkg d29ya2VyIikpOworCWRlcGVuZGVuY2llcy5jdXJzb3IrKzsKKwlzdHJlYW1fd3JpdGVfY2hhbmdl KExPR0lDQUxfUkVQX01TR19JTlRFUk5BTF9NRVNTQUdFLCAmZGVwZW5kZW5jaWVzKTsKKworCXJl dHVybiBmYWxzZTsKIH0KIAogLyoKQEAgLTI0MzEsMTQgKzI0NjMsMTQgQEAgc2VuZF9pbnRlcm5h bF9kZXBlbmRlbmNpZXMoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBMaXN0ICpkZXBl bmRzX29uX3hpZHMKICAqIGluc3RydWN0aW5nIGl0IHRvIHdhaXQgZm9yIHRoZSBsYXN0IGNvbW1p dHRlZCB0cmFuc2FjdGlvbiB0byBmaW5pc2ggYmVmb3JlCiAgKiBjb21taXR0aW5nIGl0cyBvd24s IHRoZXJlYnkgcHJlc2VydmluZyBjb21taXQgb3JkZXIuCiAgKi8KLXN0YXRpYyB2b2lkCitzdGF0 aWMgYm9vbAogYnVpbGRfZGVwZW5kZW5jeV93aXRoX2xhc3RfY29tbWl0dGVkX3R4bihQYXJhbGxl bEFwcGx5V29ya2VySW5mbyAqd2luZm8pCiB7CiAJLyogU2tpcCBpZiB0cmFuc2FjdGlvbnMgaGF2 ZSBub3QgYmVlbiBhcHBsaWVkIHlldCAqLwogCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQobGFz dF9wYXJhbGxlbGl6ZWRfcmVtb3RlX3hpZCkpCi0JCXJldHVybjsKKwkJcmV0dXJuIHRydWU7CiAK LQlzZW5kX2ludGVybmFsX2RlcGVuZGVuY2llcyh3aW5mbywgbGlzdF9tYWtlMV94aWQobGFzdF9w YXJhbGxlbGl6ZWRfcmVtb3RlX3hpZCkpOworCXJldHVybiBzZW5kX2ludGVybmFsX2RlcGVuZGVu Y2llcyh3aW5mbywgbGlzdF9tYWtlMV94aWQobGFzdF9wYXJhbGxlbGl6ZWRfcmVtb3RlX3hpZCkp OwogfQogCiAvKgpAQCAtMjQ1Myw2ICsyNDg1LDkgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdChTdHJp bmdJbmZvIHMpCiAJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOwogCVRyYW5zQXBwbHlB Y3Rpb24gYXBwbHlfYWN0aW9uOwogCisJLyogU2F2ZSB0aGUgbWVzc2FnZSBiZWZvcmUgaXQgaXMg Y29uc3VtZWQuICovCisJU3RyaW5nSW5mb0RhdGEgb3JpZ2luYWxfbXNnID0gKnM7CisKIAlsb2dp Y2FscmVwX3JlYWRfY29tbWl0KHMsICZjb21taXRfZGF0YSk7CiAKIAlpZiAoY29tbWl0X2RhdGEu Y29tbWl0X2xzbiAhPSByZW1vdGVfZmluYWxfbHNuKQpAQCAtMjQ5NiwxMSArMjUzMSwxMSBAQCBh cHBseV9oYW5kbGVfY29tbWl0KFN0cmluZ0luZm8gcykKIAogCQkJLyoKIAkJCSAqIEJ1aWxkIGEg ZGVwZW5kZW5jeSBiZXR3ZWVuIHRoaXMgdHJhbnNhY3Rpb24gYW5kIHRoZSBsYXN0bHkKLQkJCSAq IGNvbW1pdHRlZCB0cmFuc2FjdGlvbiB0byBwcmVzZXJ2ZSB0aGUgY29tbWl0IG9yZGVyLgorCQkJ ICogY29tbWl0dGVkIHRyYW5zYWN0aW9uIHRvIHByZXNlcnZlIHRoZSBjb21taXQgb3JkZXIuIFRo ZW4gdHJ5IHRvCisJCQkgKiBzZW5kIGEgQ09NTUlUIG1lc3NhZ2UgaWYgc3VjY2VlZGVkLgogCQkJ ICovCi0JCQlidWlsZF9kZXBlbmRlbmN5X3dpdGhfbGFzdF9jb21taXR0ZWRfdHhuKHdpbmZvKTsK LQotCQkJaWYgKHBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkKKwkJCWlmIChi dWlsZF9kZXBlbmRlbmN5X3dpdGhfbGFzdF9jb21taXR0ZWRfdHhuKHdpbmZvKSAmJgorCQkJCXBh X3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkKIAkJCXsKIAkJCQkvKiBDYWNoZSB0 aGUgcmVtb3RlX3hpZCAqLwogCQkJCWxhc3RfcGFyYWxsZWxpemVkX3JlbW90ZV94aWQgPSByZW1v dGVfeGlkOwpAQCAtMjUxMSwxMiArMjU0NiwyOSBAQCBhcHBseV9oYW5kbGVfY29tbWl0KFN0cmlu Z0luZm8gcykKIAkJCX0KIAogCQkJLyoKLQkJCSAqIFRPRE86IFN1cHBvcnQgc3dpdGNoaW5nIHRv IFBBUlRJQUxfU0VSSUFMSVpFIG1vZGUgd2hlbiB0aGUgc2VuZAotCQkJICogYnVmZmVyIGJlY29t ZXMgZnVsbC4KKwkJCSAqIFN3aXRjaCB0byBzZXJpYWxpemUgbW9kZSB3aGVuIHdlIGFyZSBub3Qg YWJsZSB0byBzZW5kIHRoZQorCQkJICogY2hhbmdlIHRvIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4K IAkJCSAqLwotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9O T1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKLQkJCQkJZXJybXNnKCJjb3VsZCBub3Qgc2VuZCBk YXRhIHRvIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIpKTsK KwkJCXBhX3N3aXRjaF90b19wYXJ0aWFsX3NlcmlhbGl6ZSh3aW5mbywgdHJ1ZSk7CisKKwkJCXBn X2ZhbGx0aHJvdWdoOworCQljYXNlIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRToKKwkJ CUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkgKiBCdWlsZCBhIGRlcGVuZGVuY3kgd2l0aCB0 aGUgbGFzdCBjb21taXR0ZWQgdHJhbnNhY3Rpb24gaWYgbm90CisJCQkgKiBhbHJlYWR5IGRvbmUu CisJCQkgKi8KKwkJCWlmIChhcHBseV9hY3Rpb24gIT0gVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFS QUxMRUwpCisJCQkJYnVpbGRfZGVwZW5kZW5jeV93aXRoX2xhc3RfY29tbWl0dGVkX3R4bih3aW5m byk7CisKKwkJCXN0cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFuZ2UocmVtb3RlX3hpZCwgTE9HSUNB TF9SRVBfTVNHX0NPTU1JVCwKKwkJCQkJCQkJCQkgJm9yaWdpbmFsX21zZyk7CisKKwkJCXBhX3Nl dF9maWxlc2V0X3N0YXRlKHdpbmZvLT5zaGFyZWQsIEZTX1NFUklBTElaRV9ET05FKTsKKworCQkJ LyogRmluaXNoIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uLiAqLworCQkJcGFfeGFjdF9maW5p c2god2luZm8sIGNvbW1pdF9kYXRhLmVuZF9sc24pOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBUUkFO U19QQVJBTExFTF9BUFBMWToKQEAgLTI1NjksNiArMjYyMSw5IEBAIGFwcGx5X2hhbmRsZV9iZWdp bl9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87 CiAJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CiAKKwkvKiBTYXZlIHRoZSBtZXNzYWdl IGJlZm9yZSBpdCBpcyBjb25zdW1lZC4gKi8KKwlTdHJpbmdJbmZvRGF0YSBvcmlnaW5hbF9tc2cg PSAqczsKKwogCS8qIFRhYmxlc3luYyBzaG91bGQgbmV2ZXIgcmVjZWl2ZSBwcmVwYXJlLiAqLwog CWlmIChhbV90YWJsZXN5bmNfd29ya2VyKCkpCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0yNjA4LDEy ICsyNjYzLDE5IEBAIGFwcGx5X2hhbmRsZV9iZWdpbl9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAkJ CX0KIAogCQkJLyoKLQkJCSAqIFRPRE86IFN1cHBvcnQgc3dpdGNoaW5nIHRvIFBBUlRJQUxfU0VS SUFMSVpFIG1vZGUgd2hlbiB0aGUgc2VuZAotCQkJICogYnVmZmVyIGJlY29tZXMgZnVsbC4KKwkJ CSAqIFN3aXRjaCB0byBzZXJpYWxpemUgbW9kZSB3aGVuIHdlIGFyZSBub3QgYWJsZSB0byBzZW5k IHRoZQorCQkJICogY2hhbmdlIHRvIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KIAkJCSAqLwotCQkJ ZXJlcG9ydChFUlJPUiwKLQkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVR VUlTSVRFX1NUQVRFKSwKLQkJCQkJZXJybXNnKCJjb3VsZCBub3Qgc2VuZCBkYXRhIHRvIHRoZSBs b2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIpKTsKKwkJCXBhX3N3aXRj aF90b19wYXJ0aWFsX3NlcmlhbGl6ZSh3aW5mbywgdHJ1ZSk7CisKKwkJCXBnX2ZhbGx0aHJvdWdo OworCQljYXNlIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRToKKwkJCUFzc2VydCh3aW5m byk7CisKKwkJCXN0cmVhbV93cml0ZV9jaGFuZ2UoTE9HSUNBTF9SRVBfTVNHX0JFR0lOX1BSRVBB UkUsICZvcmlnaW5hbF9tc2cpOworCisJCQkvKiBDYWNoZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29y a2VyIGZvciB0aGlzIHRyYW5zYWN0aW9uLiAqLworCQkJcGFfc2V0X3N0cmVhbV9hcHBseV93b3Jr ZXIod2luZm8pOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKQEAg LTI2NzksNiArMjc0MSw5IEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAlQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CiAJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9h Y3Rpb247CiAKKwkvKiBTYXZlIHRoZSBtZXNzYWdlIGJlZm9yZSBpdCBpcyBjb25zdW1lZC4gKi8K KwlTdHJpbmdJbmZvRGF0YSBvcmlnaW5hbF9tc2cgPSAqczsKKwogCWxvZ2ljYWxyZXBfcmVhZF9w cmVwYXJlKHMsICZwcmVwYXJlX2RhdGEpOwogCiAJaWYgKHByZXBhcmVfZGF0YS5wcmVwYXJlX2xz biAhPSByZW1vdGVfZmluYWxfbHNuKQpAQCAtMjc0OCwxMSArMjgxMywxMSBAQCBhcHBseV9oYW5k bGVfcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAKIAkJCS8qCiAJCQkgKiBCdWlsZCBhIGRlcGVuZGVu Y3kgYmV0d2VlbiB0aGlzIHRyYW5zYWN0aW9uIGFuZCB0aGUgbGFzdGx5Ci0JCQkgKiBjb21taXR0 ZWQgdHJhbnNhY3Rpb24gdG8gcHJlc2VydmUgdGhlIGNvbW1pdCBvcmRlci4KKwkJCSAqIGNvbW1p dHRlZCB0cmFuc2FjdGlvbiB0byBwcmVzZXJ2ZSB0aGUgY29tbWl0IG9yZGVyLiBUaGVuIHRyeSB0 bworCQkJICogc2VuZCBhIENPTU1JVCBtZXNzYWdlIGlmIHN1Y2NlZWRlZC4KIAkJCSAqLwotCQkJ YnVpbGRfZGVwZW5kZW5jeV93aXRoX2xhc3RfY29tbWl0dGVkX3R4bih3aW5mbyk7Ci0KLQkJCWlm IChwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQlpZiAoYnVpbGRfZGVw ZW5kZW5jeV93aXRoX2xhc3RfY29tbWl0dGVkX3R4bih3aW5mbykgJiYKKwkJCQlwYV9zZW5kX2Rh dGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCiAJCQl7CiAJCQkJLyogQ2FjaGUgdGhlIHJlbW90 ZV94aWQgKi8KIAkJCQlsYXN0X3BhcmFsbGVsaXplZF9yZW1vdGVfeGlkID0gcmVtb3RlX3hpZDsK QEAgLTI3NjMsMTIgKzI4MjgsMjkgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBz KQogCQkJfQogCiAJCQkvKgotCQkJICogVE9ETzogU3VwcG9ydCBzd2l0Y2hpbmcgdG8gUEFSVElB TF9TRVJJQUxJWkUgbW9kZSB3aGVuIHRoZSBzZW5kCi0JCQkgKiBidWZmZXIgYmVjb21lcyBmdWxs LgorCQkJICogU3dpdGNoIHRvIHNlcmlhbGl6ZSBtb2RlIHdoZW4gd2UgYXJlIG5vdCBhYmxlIHRv IHNlbmQgdGhlCisJCQkgKiBjaGFuZ2UgdG8gcGFyYWxsZWwgYXBwbHkgd29ya2VyLgogCQkJICov Ci0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQllcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9Q UkVSRVFVSVNJVEVfU1RBVEUpLAotCQkJCQllcnJtc2coImNvdWxkIG5vdCBzZW5kIGRhdGEgdG8g dGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIikpOworCQkJcGFf c3dpdGNoX3RvX3BhcnRpYWxfc2VyaWFsaXplKHdpbmZvLCB0cnVlKTsKKwkJCXBnX2ZhbGx0aHJv dWdoOworCisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgorCQkJQXNzZXJ0 KHdpbmZvKTsKKworCQkJLyoKKwkJCSAqIEJ1aWxkIGEgZGVwZW5kZW5jeSB3aXRoIHRoZSBsYXN0 IGNvbW1pdHRlZCB0cmFuc2FjdGlvbiBpZiBub3QKKwkJCSAqIGFscmVhZHkgZG9uZS4KKwkJCSAq LworCQkJaWYgKGFwcGx5X2FjdGlvbiAhPSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTCkK KwkJCQlidWlsZF9kZXBlbmRlbmN5X3dpdGhfbGFzdF9jb21taXR0ZWRfdHhuKHdpbmZvKTsKKwor CQkJc3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5nZShyZW1vdGVfeGlkLCBMT0dJQ0FMX1JFUF9N U0dfUFJFUEFSRSwKKwkJCQkJCQkJCQkgJm9yaWdpbmFsX21zZyk7CisKKwkJCXBhX3NldF9maWxl c2V0X3N0YXRlKHdpbmZvLT5zaGFyZWQsIEZTX1NFUklBTElaRV9ET05FKTsKKworCQkJLyogRmlu aXNoIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uLiAqLworCQkJcGFfeGFjdF9maW5pc2god2lu Zm8sIHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgVFJBTlNfUEFS QUxMRUxfQVBQTFk6CkBAIC0zMDQzLDkgKzMxMjUsOCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3By ZXBhcmUoU3RyaW5nSW5mbyBzKQogCQkJICogQnVpbGQgYSBkZXBlbmRlbmN5IGJldHdlZW4gdGhp cyB0cmFuc2FjdGlvbiBhbmQgdGhlIGxhc3RseQogCQkJICogY29tbWl0dGVkIHRyYW5zYWN0aW9u IHRvIHByZXNlcnZlIHRoZSBjb21taXQgb3JkZXIuCiAJCQkgKi8KLQkJCWJ1aWxkX2RlcGVuZGVu Y3lfd2l0aF9sYXN0X2NvbW1pdHRlZF90eG4od2luZm8pOwotCi0JCQlpZiAocGFfc2VuZF9kYXRh KHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpKQorCQkJaWYgKGJ1aWxkX2RlcGVuZGVuY3lfd2l0aF9s YXN0X2NvbW1pdHRlZF90eG4od2luZm8pICYmCisJCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5s ZW4sIHMtPmRhdGEpKQogCQkJewogCQkJCS8qIEZpbmlzaCBwcm9jZXNzaW5nIHRoZSBzdHJlYW1p bmcgdHJhbnNhY3Rpb24uICovCiAJCQkJcGFfeGFjdF9maW5pc2god2luZm8sIHByZXBhcmVfZGF0 YS5lbmRfbHNuKTsKQEAgLTM5MjMsOSArNDAwNCw4IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29t bWl0KFN0cmluZ0luZm8gcykKIAkJCSAqIEJ1aWxkIGEgZGVwZW5kZW5jeSBiZXR3ZWVuIHRoaXMg dHJhbnNhY3Rpb24gYW5kIHRoZSBsYXN0bHkKIAkJCSAqIGNvbW1pdHRlZCB0cmFuc2FjdGlvbiB0 byBwcmVzZXJ2ZSB0aGUgY29tbWl0IG9yZGVyLgogCQkJICovCi0JCQlidWlsZF9kZXBlbmRlbmN5 X3dpdGhfbGFzdF9jb21taXR0ZWRfdHhuKHdpbmZvKTsKLQotCQkJaWYgKHBhX3NlbmRfZGF0YSh3 aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkKKwkJCWlmIChidWlsZF9kZXBlbmRlbmN5X3dpdGhfbGFz dF9jb21taXR0ZWRfdHhuKHdpbmZvKSAmJgorCQkJCXBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVu LCBzLT5kYXRhKSkKIAkJCXsKIAkJCQkvKiBGaW5pc2ggcHJvY2Vzc2luZyB0aGUgc3RyZWFtaW5n IHRyYW5zYWN0aW9uLiAqLwogCQkJCXBhX3hhY3RfZmluaXNoKHdpbmZvLCBjb21taXRfZGF0YS5l bmRfbHNuKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA1MF9wYXJhbGxl bF9hcHBseS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA1MF9wYXJhbGxlbF9hcHBseS5w bAppbmRleCA4OTYyNDRhNDJmZC4uYmQ1MWQ5OGQ4ODUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzA1MF9wYXJhbGxlbF9hcHBseS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wNTBfcGFyYWxsZWxfYXBwbHkucGwKQEAgLTQxNyw0ICs0MTcsMzQgQEAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxWwogCiAkbm9kZV9zdWJzY3JpYmVy LT53YWl0X2Zvcl9sb2cocXIvZmluaXNoIHdhaXRpbmcgZm9yIGRlcGVuZGVkIHhpZCAkeGlkLywg JG9mZnNldCk7CiAKKyMgQ2xlYW51cAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkRFTEVURSBGUk9NIHJlZ3Jlc3NfdGFiOyIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCdyZWdyZXNzX3N1YicpOworCisjIEZvcmNlIHRoZSBsZWFkZXIgYXBwbHkg d29ya2VyIHRvIHNlcmlhbGl6ZSBjaGFuZ2VzIHRvIGRpc2sKKyRub2RlX3N1YnNjcmliZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCSJkZWJ1Z19sb2dpY2FsX3JlcGxpY2F0aW9u X3N0cmVhbWluZyA9IGltbWVkaWF0ZSIpOworJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICJJTlNFUlQgSU5UTyBy ZWdyZXNzX3RhYiBWQUxVRVMgKGdlbmVyYXRlX3NlcmllcygxLCAxMCksICd0ZXN0Jyk7Iik7CisK KyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgncmVncmVzc19zdWInKTsKKworIyBS ZXNldCB0byBidWZmZXJlZCBtb2RlIHNvIHRoYXQgc3Vic2VxdWVudCB0ZXN0cyBzZW5kIGNoYW5n ZXMgdmlhIHNoYXJlZAorIyBtZW1vcnkuCiskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywKKwkiZGVidWdfbG9naWNhbF9yZXBsaWNhdGlvbl9zdHJlYW1pbmcg PSBidWZmZXJlZCIpOworJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCisjIFZlcmlmeSB0aGF0 IGNoYW5nZXMgaGF2ZSBiZWVuIHNlcmlhbGl6ZWQKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9y X2xvZygKKwlxci9MT0c6ICggW0EtWjAtOV0rOik/IGxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkg d29ya2VyIHdpbGwgc2VyaWFsaXplIHRoZSByZW1haW5pbmcgY2hhbmdlcyBvZiByZW1vdGUgdHJh bnNhY3Rpb24gXGQrIHRvIGEgZmlsZS8sCisJJG9mZnNldCk7CisKKyMgVmVyaWZ5IHRoYXQgdGhl IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBjYW4gcmVzdG9yZSBzZXJpYWxpemVkIGNoYW5nZXMgY29y cmVjdGx5CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgY291bnQoMSkgRlJPTSByZWdyZXNzX3RhYiIpOworaXMgKCRyZXN1bHQsIDEw LCAnaW5zZXJ0cyBhcmUgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyJyk7CisKIGRvbmVfdGVzdGlu ZygpOwotLSAKMi40My4wCgo= --_011_TY4PR01MB17718A4AB7F564C8DB0D6F7DC94102TY4PR01MB17718jp_ Content-Type: application/octet-stream; name="v19-0009-Support-dependency-tracking-via-foreign-keys.patch" Content-Description: v19-0009-Support-dependency-tracking-via-foreign-keys.patch Content-Disposition: attachment; filename="v19-0009-Support-dependency-tracking-via-foreign-keys.patch"; size=17451; creation-date="Thu, 04 Jun 2026 06:54:40 GMT"; modification-date="Thu, 04 Jun 2026 06:58:28 GMT" Content-Transfer-Encoding: base64 RnJvbSBjMDVmMGI0YTBiMThmZWI0ZDcxYTAxNjkwNTcyZmVkY2JkNGYxNDA2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBaaGlqaWUgSG91IDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBUaHUsIDQgSnVuIDIwMjYgMTM6Mjk6MTggKzA4MDAKU3ViamVjdDogW1BBVENIIHYxOSAw OS8xMF0gU3VwcG9ydCBkZXBlbmRlbmN5IHRyYWNraW5nIHZpYSBmb3JlaWduIGtleXMKCkxvZ2lj YWwgcmVwbGljYXRpb24ncyBwYXJhbGxlbCBhcHBseSBtZWNoYW5pc20gZGlkIG5vdCBhY2NvdW50 IGZvciBmb3JlaWduLWtleQpkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGNhdXNlIGEgZmFpbHVyZSBi ZWNhdXNlIHRoZSByZWZlcmVuY2UgY29sdW1uIG1heSBiZQpjb21taXR0ZWQgYmVmb3JlIHRoZSBy ZWZlcmVuY2VkIGNvbHVtbi4KClRoaXMgcGF0Y2ggZXh0ZW5kcyB0aGUgcGFyYWxsZWwgYXBwbHkn cyBkZXBlbmRlbmN5IHRyYWNraW5nIHRvIGFjY291bnQgZm9yCmZvcmVpZ24ga2V5cyBpbiB0aGUg c3Vic2NyaWJlciB0YWJsZS4gT25lIGFzc3VtcHRpb24gaGVyZSBpcyB0aGF0IHJlZmVyZW5jZWQK Y29sdW1ucyBjYW4gYmUgcmVnaXN0ZXJlZCB0byB0aGUgaWRlbnRpdHkgaGFzaCB0YWJsZS4KVGhl IGxlYWRlciBhcHBseSB3b3JrZXIgY2hlY2tzIHRvIGRldGVybWluZSB3aGV0aGVyIHZhbHVlcyBp biByZWZlcmVuY2luZwpjb2x1bW5zIGhhdmUgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQgb3Igbm90 LCBhbmQgcmVnYXJkcyB0aGF0IHRoZXJlIGlzIGEKZGVwZW5kZW5jeSBpZiBmb3VuZC4KLS0tCiBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMgICAgfCAxODUgKysrKysr KysrKysrKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAg ICAgfCAxNDUgKysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxy ZWxhdGlvbi5oICAgICB8ICAxMSArKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDUwX3BhcmFs bGVsX2FwcGx5LnBsIHwgIDUzICsrKystCiA0IGZpbGVzIGNoYW5nZWQsIDM5MSBpbnNlcnRpb25z KCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVs YXRpb24uYwppbmRleCA2NjY1ZjVjMGNjOS4uODM2MDJkY2Q0Y2YgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRl ICJhY2Nlc3MvZ2VuYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJj YXRhbG9nL25hbWVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfY29uc3RyYWludC5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2Ny aXB0aW9uX3JlbC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKQEAgLTE0Myw2ICsx NDQsMjEgQEAgZnJlZV9sb2NhbF91bmlxdWVfaW5kZXhlcyhMb2dpY2FsUmVwUmVsTWFwRW50cnkg KmVudHJ5KQogCWVudHJ5LT5sb2NhbF91bmlxdWVfaW5kZXhlcyA9IE5JTDsKIH0KIAorLyoKKyAq IFJlbGVhc2UgZm9yZWlnbiBrZXkgbGlzdAorICovCitzdGF0aWMgdm9pZAorZnJlZV9sb2NhbF9m a2V5cyhMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5KQoreworCUFzc2VydChhbV9sZWFkZXJf YXBwbHlfd29ya2VyKCkpOworCisJZm9yZWFjaF9wdHIoTG9naWNhbFJlcFN1YnNjcmliZXJGSywg ZmtpbmZvLCBlbnRyeS0+bG9jYWxfZmtleXMpCisJCWJtc19mcmVlKGZraW5mby0+Y29ua2V5cyk7 CisKKwlsaXN0X2ZyZWVfZGVlcChlbnRyeS0+bG9jYWxfZmtleXMpOworCWVudHJ5LT5sb2NhbF9m a2V5cyA9IE5JTDsKK30KKwogLyoKICAqIEZyZWUgdGhlIGVudHJ5IG9mIGEgcmVsYXRpb24gbWFw IGNhY2hlLgogICovCkBAIC0xNzMsNiArMTg5LDkgQEAgbG9naWNhbHJlcF9yZWxtYXBfZnJlZV9l bnRyeShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5KQogCiAJaWYgKGVudHJ5LT5sb2NhbF91 bmlxdWVfaW5kZXhlcyAhPSBOSUwpCiAJCWZyZWVfbG9jYWxfdW5pcXVlX2luZGV4ZXMoZW50cnkp OworCisJaWYgKGVudHJ5LT5sb2NhbF9ma2V5cyAhPSBOSUwpCisJCWZyZWVfbG9jYWxfZmtleXMo ZW50cnkpOwogfQogCiAvKgpAQCAtNDk5LDYgKzUxOCwxNzEgQEAgY29sbGVjdF9sb2NhbF9pbmRl eGVzKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpCiAJbGlzdF9mcmVlKGlkeGxpc3QpOwog fQogCisvKgorICogU2VhcmNoIGEgcmVsbWFwIGVudHJ5IGJ5IGxvY2FsIHJlbGF0aW9uIE9JRC4K KyAqLworc3RhdGljIExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqCitsb2dpY2FscmVwX2dldF9yZWxl bnRyeV9ieV9sb2NhbF9vaWQoT2lkIGxvY2FscmVsb2lkKQoreworCUhBU0hfU0VRX1NUQVRVUyBz dGF0dXM7CisJTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeSA9IE5VTEw7CisKKwlpZiAoTG9n aWNhbFJlcFJlbE1hcCA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCS8qCisJICogRWFjaCBl bnRyeSBtdXN0IGJlIGNoZWNrZWQgaW5kaXZpZHVhbGx5LiBCZWNhdXNlIHRoZSBrZXkgb2YKKwkg KiBMb2dpY2FsUmVwUmVsTWFwIGlzIHRoZSAicmVtb3RlIiByZWxpZCBidXQgd2Ugb25seSBoYXZl IHRoZSBsb2NhbCBvbmUuCisJICoKKwkgKiBOb3RlOiBUaGlzIGl0ZXJhdGlvbiBpZ25vcmVzIHJl bGF0aW9ucyB0aGF0IGhhdmUgbm90IHlldCBiZWVuCisJICogcmVnaXN0ZXJlZCBpbiBMb2dpY2Fs UmVwUmVsTWFwLiBJdCBpcyBPSyBiZWNhdXNlIHN1Y2ggcmVsYXRpb25zIGhhdmUKKwkgKiBub3Qg YmVlbiBtb2RpZmllZCB5ZXQgc2luY2UgdGhlIHN1YnNjcmliZXIgc3RhcnRlZCByZWNlaXZpbmcg Y2hhbmdlcy4KKwkgKi8KKwloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvZ2ljYWxSZXBSZWxNYXAp OworCXdoaWxlICgoZW50cnkgPSAoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICopIGhhc2hfc2VxX3Nl YXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwl7CisJCWlmIChlbnRyeS0+bG9jYWxyZWxvaWQgPT0g bG9jYWxyZWxvaWQpCisJCXsKKwkJCWhhc2hfc2VxX3Rlcm0oJnN0YXR1cyk7CisJCQlyZXR1cm4g ZW50cnk7CisJCX0KKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIFJldHVybiB0cnVl IGlmIHRoZSBGSyBjb25zdHJhaW50IGlzIGFsd2F5cyBkZWZlcnJlZC4KKyAqLworc3RhdGljIGJv b2wKK2ZvcmVpZ25fa2V5X2lzX2Fsd2F5c19kZWZlcnJlZChPaWQgY29ub2lkKQoreworCUhlYXBU dXBsZQl0dXA7CisJRm9ybV9wZ19jb25zdHJhaW50IGNvbjsKKwlib29sCQlkZWZlcnJlZDsKKwor CXR1cCA9IFNlYXJjaFN5c0NhY2hlMShDT05TVFJPSUQsIE9iamVjdElkR2V0RGF0dW0oY29ub2lk KSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBs b29rdXAgZmFpbGVkIGZvciBmb3JlaWduIGtleSAldSIsIGNvbm9pZCk7CisKKwljb24gPSAoRm9y bV9wZ19jb25zdHJhaW50KSBHRVRTVFJVQ1QodHVwKTsKKwlkZWZlcnJlZCA9IGNvbi0+Y29uZGVm ZXJyYWJsZSAmJiBjb24tPmNvbmRlZmVycmVkOworCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCisJ cmV0dXJuIGRlZmVycmVkOworfQorCisvKgorICogQ29sbGVjdCBhbGwgbG9jYWwgZm9yZWlnbiBr ZXlzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGRlcGVuZGVuY3kgdHJhY2tpbmcuCisgKi8KK3N0YXRp YyB2b2lkCitjb2xsZWN0X2xvY2FsX2ZrZXlzKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkp Cit7CisJTGlzdAkgICAqZmtleXM7CisKKwlpZiAoZW50cnktPmxvY2FsX2ZrZXlzICE9IE5JTCkK KwkJZnJlZV9sb2NhbF9ma2V5cyhlbnRyeSk7CisKKwllbnRyeS0+bG9jYWxfZmtleXNfY29sbGVj dGVkID0gdHJ1ZTsKKworCS8qCisJICogR2V0IHRoZSBsaXN0IG9mIGZvcmVpZ24ga2V5cyBmb3Ig dGhlIHJlbGF0aW9uLgorCSAqCisJICogWFhYOiBBcGFydCBmcm9tIFJlbGF0aW9uR2V0SW5kZXhM aXN0KCksIHRoZSByZXR1cm5lZCBsaXN0IGlzIGEgcGFydCBvZgorCSAqIHJlbGNhY2hlIGFuZCBt dXN0IGJlIGNvcGllZCBiZWZvcmUgZG9pbmcgYW55dGhpbmcuIFNlZSBjb21tZW50cyBhdG9wCisJ ICogUmVsYXRpb25HZXRGS2V5TGlzdCgpLgorCSAqLworCWZrZXlzID0gY29weU9iamVjdChSZWxh dGlvbkdldEZLZXlMaXN0KGVudHJ5LT5sb2NhbHJlbCkpOworCisJLyogUXVpY2sgZXhpdCBpZiB0 aGVyZSBhcmUgbm8gZm9yZWlnbiBrZXlzICovCisJaWYgKGZrZXlzID09IE5JTCkKKwkJcmV0dXJu OworCisJZm9yZWFjaF9wdHIoRm9yZWlnbktleUNhY2hlSW5mbywgZmssIGZrZXlzKQorCXsKKwkJ TG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWZlbnRyeTsKKwkJQml0bWFwc2V0ICAqZmtrZXlzID0g TlVMTDsKKwkJYm9vbAkJc3VpdGFibGUgPSB0cnVlOworCisJCS8qCisJCSAqIFNraXAgTk9UIEVO Rk9SQ0VEIGNvbnN0cmFpbnRzIGJlY2F1c2UgdGhleSB3b24ndCBiZSBjaGVja2VkIGF0IGFueQor CQkgKiB0aW1lcy4KKwkJICovCisJCWlmICghZmstPmNvbmVuZm9yY2VkKQorCQkJY29udGludWU7 CisKKwkJLyoKKwkJICogU2tpcCBpZiB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBpcyBhbHdh eXMgZGVmZXJyZWQuIFRoZSBjb21taXQKKwkJICogb3JkZXJpbmcgaXMgYWx3YXlzIHByZXNlcnZl ZCB0aHVzIHRoZSBjb25zdHJhaW50IGNhbiBiZSBjaGVja2VkIGluCisJCSAqIGNvcnJlY3Qgb3Jk ZXIuCisJCSAqLworCQlpZiAoZm9yZWlnbl9rZXlfaXNfYWx3YXlzX2RlZmVycmVkKGZrLT5jb25v aWQpKQorCQkJY29udGludWU7CisKKwkJLyogRmluZCB0aGUgcmVmZXJlbmNlZCByZWxhdGlvbiBi eSB0aGUgbG9jYWwgT0lEICovCisJCXJlZmVudHJ5ID0gbG9naWNhbHJlcF9nZXRfcmVsZW50cnlf YnlfbG9jYWxfb2lkKGZrLT5jb25mcmVsaWQpOworCisJCS8qCisJCSAqIFNraXAgaWYgdGhlIHJl ZmVyZW5jZWQgcmVsYXRpb24gaXMgbm90IHRoZSB0YXJnZXQgb2YgdGhpcworCQkgKiBzdWJzY3Jp cHRpb24uCisJCSAqLworCQlpZiAoIXJlZmVudHJ5KQorCQkJY29udGludWU7CisKKwkJLyogU2Vl ayBlYWNoIGF0dHJpYnV0ZXMgYW5kIGFkZCB0byBhIEJpdG1hcCAqLworCQlmb3IgKGludCBpID0g MDsgaSA8IGZrLT5ua2V5czsgaSsrKQorCQl7CisJCQlBdHRyTnVtYmVyCWxvY2FsY29sID0gZmst PmNvbmtleVtpXTsKKwkJCWludAkJCXJlbW90ZWNvbCA9CisJCQkJZW50cnktPmF0dHJtYXAtPmF0 dG51bXNbQXR0ck51bWJlckdldEF0dHJPZmZzZXQobG9jYWxjb2wpXTsKKworCQkJLyogU2tpcCBp ZiB0aGUgY29sdW1uIGRvZXMgbm90IGV4aXN0IG9uIHB1Ymxpc2hlciBub2RlICovCisJCQlpZiAo cmVtb3RlY29sIDwgMCkKKwkJCXsKKwkJCQlzdWl0YWJsZSA9IGZhbHNlOworCQkJCWJyZWFrOwor CQkJfQorCisJCQkvKgorCQkJICogWFhYOiBXaGF0IGlmIHRoZSBGSyBjb2x1bW4gaXMgc3BlY2lm aWVkIHdpdGggZGlmZmVyZW50IG9yZGVyPworCQkJICogRS5nLiwgdGhlcmUgaXMgYSB0YWJsZSAo YSwgYikgYW5kIG90aGVyIHRhYmxlIHJlZmVycyBsaWtlCisJCQkgKiBSRUZFUkVOQ0VTIChiLCBh KS4gV2lsbCBpdCB3b3JrIGNvcnJlY3RseT8KKwkJCSAqLworCQkJZmtrZXlzID0gYm1zX2FkZF9t ZW1iZXIoZmtrZXlzLCByZW1vdGVjb2wpOworCQl9CisKKwkJLyoKKwkJICogT25lIG9mIHRoZSBj b2x1bW5zIGRvZXMgbm90IGV4aXN0IG9uIHRoZSBwdWJsaXNoZXIgc2lkZSwgc2tpcCBzdWNoCisJ CSAqIGEgY29uc3RyYWludC4KKwkJICovCisJCWlmICghc3VpdGFibGUpCisJCXsKKwkJCWlmIChm a2tleXMpCisJCQkJYm1zX2ZyZWUoZmtrZXlzKTsKKworCQkJY29udGludWU7CisJCX0KKworCQlp ZiAoZmtrZXlzKQorCQl7CisJCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJCUxvZ2ljYWxSZXBT dWJzY3JpYmVyRksgKmZraW5mbzsKKworCQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRv KExvZ2ljYWxSZXBSZWxNYXBDb250ZXh0KTsKKwkJCWZraW5mbyA9IHBhbGxvYyhzaXplb2YoTG9n aWNhbFJlcFN1YnNjcmliZXJGSykpOworCQkJZmtpbmZvLT5jb25vaWQgPSBmay0+Y29ub2lkOwor CQkJZmtpbmZvLT5yZWZfcmVtb3RlaWQgPSByZWZlbnRyeS0+cmVtb3RlcmVsLnJlbW90ZWlkOwor CQkJZmtpbmZvLT5jb25rZXlzID0gYm1zX2NvcHkoZmtrZXlzKTsKKworCQkJYm1zX2ZyZWUoZmtr ZXlzKTsKKwkJCWVudHJ5LT5sb2NhbF9ma2V5cyA9IGxhcHBlbmQoZW50cnktPmxvY2FsX2ZrZXlz LCBma2luZm8pOworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJCX0KKwl9CisK KwlsaXN0X2ZyZWVfZGVlcChma2V5cyk7Cit9CisKIC8qCiAgKiBDaGVjayBhbGwgbG9jYWwgdHJp Z2dlcnMgZm9yIHRoZSByZWxhdGlvbiB0byBzZWUgdGhlIHBhcmFsbGVsaXphYmlsaXR5LgogICoK QEAgLTcxNSw2ICs4OTksNyBAQCBsb2dpY2FscmVwX3JlbF9sb2FkKExvZ2ljYWxSZXBSZWxNYXBF bnRyeSAqZW50cnksIExvZ2ljYWxSZXBSZWxJZCByZW1vdGVpZCwKIAkJewogCQkJZW50cnktPnBh cmFsbGVsX3NhZmUgPSBMT0dJQ0FMUkVQX1BBUkFMTEVMX1VOS05PV047CiAJCQljb2xsZWN0X2xv Y2FsX2luZGV4ZXMoZW50cnkpOworCQkJY29sbGVjdF9sb2NhbF9ma2V5cyhlbnRyeSk7CiAJCQlj aGVja19kZWZpbmVkX3RyaWdnZXJzKGVudHJ5KTsKIAkJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC93b3JrZXIuYwppbmRleCBhMjEyYmM2MDEzZC4uNmY4ZDgzYzZiN2IgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMTIwNSw2ICsxMjA1LDEz OCBAQCBjaGVja19hbmRfcmVjb3JkX2xvY2FsX2tleV9kZXBlbmRlbmN5KE9pZCByZWxpZCwKIAl9 CiB9CiAKKy8qCisgKiBMb29rdXAtb25seSBkZXBlbmRlbmN5IGNoZWNrIGJ5IGtleS4gRG9lcyBu b3QgcmVnaXN0ZXIvdXBkYXRlIGVudHJpZXMuCisgKi8KK3N0YXRpYyB2b2lkCitmaW5kX2RlcGVu ZGVuY2llc19ieV9rZXkoUmVwbGljYUlkZW50aXR5S2V5ICprZXksCisJCQkJCQkgVHJhbnNhY3Rp b25JZCBuZXdfZGVwZW5kZWRfeGlkLAorCQkJCQkJIExpc3QgKipkZXBlbmRzX29uX3hpZHMpCit7 CisJUmVwbGljYUlkZW50aXR5RW50cnkgKnJpZW50cnk7CisJTWVtb3J5Q29udGV4dCBvbGRjdHg7 CisKKwlBc3NlcnQocmVwbGljYV9pZGVudGl0eV90YWJsZSk7CisKKwlvbGRjdHggPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKworCXJpZW50cnkgPSByZXBsaWNhX2lkZW50 aXR5X2xvb2t1cChyZXBsaWNhX2lkZW50aXR5X3RhYmxlLCBrZXkpOworCWZyZWVfcmVwbGljYV9p ZGVudGl0eV9rZXkoa2V5KTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCisJ LyoKKwkgKiBSZXR1cm4gaWYgbm8gZW50cnkgZXhpc3RzLCBvciBpZiB0aGUgY3VycmVudCB0cmFu c2FjdGlvbiB3YXMgdGhlIGxhc3Qgb25lCisJICogdG8gbW9kaWZ5IHRoZSBrZXkuCisJICovCisJ aWYgKCFyaWVudHJ5IHx8IFRyYW5zYWN0aW9uSWRFcXVhbHMocmllbnRyeS0+cmVtb3RlX3hpZCwg bmV3X2RlcGVuZGVkX3hpZCkpCisJCXJldHVybjsKKworCS8qCisJICogQ2xlYW4gdXAgY29tbWl0 dGVkIGVudHJpZXMgd2hpbGUgb24gaXQuCisJICovCisJaWYgKHBhX3RyYW5zYWN0aW9uX2NvbW1p dHRlZChyaWVudHJ5LT5yZW1vdGVfeGlkKSkKKwl7CisJCWZyZWVfcmVwbGljYV9pZGVudGl0eV9r ZXkocmllbnRyeS0+a2V5ZGF0YSk7CisJCXJlcGxpY2FfaWRlbnRpdHlfZGVsZXRlX2l0ZW0ocmVw bGljYV9pZGVudGl0eV90YWJsZSwgcmllbnRyeSk7CisJCXJldHVybjsKKwl9CisKKwljaGVja19h bmRfYXBwZW5kX3hpZF9kZXBlbmRlbmN5KCZyaWVudHJ5LT5yZW1vdGVfeGlkLCBkZXBlbmRzX29u X3hpZHMpOworfQorCisvKgorICogQ2hlY2sgZm9yIGRlcGVuZGVuY2llcyBvbiBwcmVjZWRpbmcg dHJhbnNhY3Rpb25zIHRoYXQgbW9kaWZ5IHRoZSByZWZlcmVuY2VkCisgKiB1bmlxdWUga2V5IG9m IGZvcmVpZ24ga2V5cy4KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX2FuZF9yZWNvcmRfZmtleV9k ZXBlbmRlbmN5KE9pZCByZWxpZCwKKwkJCQkJCQkJIExvZ2ljYWxSZXBUdXBsZURhdGEgKm9yaWdp bmFsX2RhdGEsCisJCQkJCQkJCSBUcmFuc2FjdGlvbklkIG5ld19kZXBlbmRlZF94aWQsCisJCQkJ CQkJCSBMaXN0ICoqZGVwZW5kc19vbl94aWRzKQoreworCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAq cmVsZW50cnk7CisJTG9naWNhbFJlcFR1cGxlRGF0YSAqcmlkYXRhOworCVJlcGxpY2FJZGVudGl0 eUtleSAqcmlrZXk7CisJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisKKwlBc3NlcnQoZGVwZW5kc19v bl94aWRzKTsKKworCXJlbGVudHJ5ID0gbG9naWNhbHJlcF9nZXRfcmVsZW50cnkocmVsaWQpOwor CisJQXNzZXJ0KHJlbGVudHJ5KTsKKworCS8qCisJICogV2UgaGF2ZSBhbHJlYWR5IGNoZWNrZWQg dGhlIGxvY2FsIHVuaXF1ZSBpbmRleGVzIGFuZCBhbHNvIGdhdGhlcmVkIHRoZQorCSAqIEZLIGlu Zm8gYXQgdGhhdCB0aW1lLgorCSAqCisJICogWFhYOiBTaG91bGQgd2UgY2hlY2sgYW5kIGxvYWQg YWdhaW4/CisJICovCisJQXNzZXJ0KHJlbGVudHJ5LT5sb2NhbF9ma2V5c19jb2xsZWN0ZWQpOwor CisJZm9yZWFjaF9wdHIoTG9naWNhbFJlcFN1YnNjcmliZXJGSywgZmtpbmZvLCByZWxlbnRyeS0+ bG9jYWxfZmtleXMpCisJeworCQlpbnQJCQljb2x1bW5zID0gYm1zX251bV9tZW1iZXJzKGZraW5m by0+Y29ua2V5cyk7CisJCWJvb2wJCXN1aXRhYmxlID0gdHJ1ZTsKKworCQlBc3NlcnQoY29sdW1u cyk7CisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBvcmlnaW5hbF9kYXRhLT5uY29sczsgaSsrKQor CQl7CisJCQlpZiAoIWJtc19pc19tZW1iZXIoaSwgZmtpbmZvLT5jb25rZXlzKSkKKwkJCQljb250 aW51ZTsKKworCQkJLyogU2tpcCBpZiB0aGUgY29sdW1uIGlzIE5VTEwgb3Igbm90IGNoYW5nZWQg Ki8KKwkJCWlmIChvcmlnaW5hbF9kYXRhLT5jb2xzdGF0dXNbaV0gPT0gTE9HSUNBTFJFUF9DT0xV TU5fTlVMTCB8fAorCQkJCW9yaWdpbmFsX2RhdGEtPmNvbHN0YXR1c1tpXSA9PSBMT0dJQ0FMUkVQ X0NPTFVNTl9VTkNIQU5HRUQpCisJCQl7CisJCQkJc3VpdGFibGUgPSBmYWxzZTsKKwkJCQlicmVh azsKKwkJCX0KKwkJfQorCisJCWlmICghc3VpdGFibGUpCisJCQljb250aW51ZTsKKworCQlvbGRj dHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKworCQkvKiBBbGxvY2F0 ZSBzcGFjZSBmb3IgcmVwbGljYSBpZGVudGl0eSB2YWx1ZXMgKi8KKwkJcmlkYXRhID0gcGFsbG9j MF9vYmplY3QoTG9naWNhbFJlcFR1cGxlRGF0YSk7CisJCXJpZGF0YS0+Y29sdmFsdWVzID0gcGFs bG9jMF9hcnJheShTdHJpbmdJbmZvRGF0YSwgY29sdW1ucyk7CisJCXJpZGF0YS0+Y29sc3RhdHVz ID0gcGFsbG9jMF9hcnJheShjaGFyLCBjb2x1bW5zKTsKKwkJcmlkYXRhLT5uY29scyA9IGNvbHVt bnM7CisKKwkJZm9yIChpbnQgaV9vcmlnaW5hbCA9IDAsIGlfa2V5ID0gMDsgaV9vcmlnaW5hbCA8 IG9yaWdpbmFsX2RhdGEtPm5jb2xzOyBpX29yaWdpbmFsKyspCisJCXsKKwkJCVN0cmluZ0luZm8J b3JpZ2luYWxfY29sdmFsdWU7CisKKwkJCWlmICghYm1zX2lzX21lbWJlcihpX29yaWdpbmFsLCBm a2luZm8tPmNvbmtleXMpKQorCQkJCWNvbnRpbnVlOworCisJCQlvcmlnaW5hbF9jb2x2YWx1ZSA9 ICZvcmlnaW5hbF9kYXRhLT5jb2x2YWx1ZXNbaV9vcmlnaW5hbF07CisJCQlpbml0U3RyaW5nSW5m b0V4dCgmcmlkYXRhLT5jb2x2YWx1ZXNbaV9rZXldLCBvcmlnaW5hbF9jb2x2YWx1ZS0+bGVuICsg MSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZyaWRhdGEtPmNvbHZhbHVlc1tpX2tleV0s IG9yaWdpbmFsX2NvbHZhbHVlLT5kYXRhKTsKKworCQkJcmlkYXRhLT5jb2xzdGF0dXNbaV9rZXld ID0gb3JpZ2luYWxfZGF0YS0+Y29sc3RhdHVzW2lfb3JpZ2luYWxdOworCQkJaV9rZXkrKzsKKwkJ fQorCisJCXJpa2V5ID0gcGFsbG9jMF9vYmplY3QoUmVwbGljYUlkZW50aXR5S2V5KTsKKwkJcmlr ZXktPnJlbGlkID0gZmtpbmZvLT5yZWZfcmVtb3RlaWQ7CisKKwkJLyoKKwkJICogWFhYOiB1c2Ug TE9HSUNBTFJFUF9LRVlfTE9DQUxfVU5JUVVFIHRvIGNvbXBhcmUgd2l0aCBsb2NhbCB1bmlxdWUK KwkJICogaW5kZXhlcy4KKwkJICovCisJCXJpa2V5LT5raW5kID0gTE9HSUNBTFJFUF9LRVlfTE9D QUxfVU5JUVVFOworCQlyaWtleS0+ZGF0YSA9IHJpZGF0YTsKKworCQlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY3R4KTsKKworCQlmaW5kX2RlcGVuZGVuY2llc19ieV9rZXkocmlrZXksIG5ld19k ZXBlbmRlZF94aWQsIGRlcGVuZHNfb25feGlkcyk7CisJfQorfQorCiAvKgogICogQ2hlY2sgZm9y IHByZWNlZGluZyB0cmFuc2FjdGlvbnMgKG90aGVyIHRoYW4gY3VycmVudCBvbmUgJ25ld19kZXBl bmRlZF94aWQnKQogICogdGhhdCBpbnZvbHZlIGluc2VydCwgZGVsZXRlLCBvciB1cGRhdGUgb3Bl cmF0aW9ucyBvbiB0aGUgc3BlY2lmaWVkIHRhYmxlLCBhbmQKQEAgLTE0MDIsNiArMTUzNCw5IEBA IGhhbmRsZV9kZXBlbmRlbmN5X29uX2NoYW5nZShMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0 cmluZ0luZm8gcywKIAkJCWNoZWNrX2FuZF9yZWNvcmRfbG9jYWxfa2V5X2RlcGVuZGVuY3kocmVs aWQsICZuZXd0dXAsCiAJCQkJCQkJCQkJCQkgIG5ld19kZXBlbmRlZF94aWQsCiAJCQkJCQkJCQkJ CQkgICZkZXBlbmRzX29uX3hpZHMpOworCQkJY2hlY2tfYW5kX3JlY29yZF9ma2V5X2RlcGVuZGVu Y3kocmVsaWQsICZuZXd0dXAsCisJCQkJCQkJCQkJCSBuZXdfZGVwZW5kZWRfeGlkLAorCQkJCQkJ CQkJCQkgJmRlcGVuZHNfb25feGlkcyk7CiAJCQljaGVja19kZXBlbmRlbmN5X2Zvcl9wYXJhbGxl bF9zYWZldHkocmVsaWQsIG5ld19kZXBlbmRlZF94aWQsCiAJCQkJCQkJCQkJCQkgJmRlcGVuZHNf b25feGlkcyk7CiAJCQlicmVhazsKQEAgLTE0MTksNiArMTU1NCwxMCBAQCBoYW5kbGVfZGVwZW5k ZW5jeV9vbl9jaGFuZ2UoTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uLCBTdHJpbmdJbmZvIHMsCiAJ CQkJCQkJCQkJCQkJICBuZXdfZGVwZW5kZWRfeGlkLAogCQkJCQkJCQkJCQkJCSAgJmRlcGVuZHNf b25feGlkcyk7CiAKKwkJCQljaGVja19hbmRfcmVjb3JkX2ZrZXlfZGVwZW5kZW5jeShyZWxpZCwg Jm9sZHR1cCwKKwkJCQkJCQkJCQkJCSBuZXdfZGVwZW5kZWRfeGlkLAorCQkJCQkJCQkJCQkJICZk ZXBlbmRzX29uX3hpZHMpOworCiAJCQkJY2hlY2tfZGVwZW5kZW5jeV9mb3JfcGFyYWxsZWxfc2Fm ZXR5KHJlbGlkLCBuZXdfZGVwZW5kZWRfeGlkLAogCQkJCQkJCQkJCQkJCSAmZGVwZW5kc19vbl94 aWRzKTsKIApAQCAtMTQzNyw2ICsxNTc2LDkgQEAgaGFuZGxlX2RlcGVuZGVuY3lfb25fY2hhbmdl KExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5nSW5mbyBzLAogCQkJY2hlY2tfYW5kX3Jl Y29yZF9sb2NhbF9rZXlfZGVwZW5kZW5jeShyZWxpZCwgJm5ld3R1cCwKIAkJCQkJCQkJCQkJCSAg bmV3X2RlcGVuZGVkX3hpZCwKIAkJCQkJCQkJCQkJCSAgJmRlcGVuZHNfb25feGlkcyk7CisJCQlj aGVja19hbmRfcmVjb3JkX2ZrZXlfZGVwZW5kZW5jeShyZWxpZCwgJm5ld3R1cCwKKwkJCQkJCQkJ CQkJIG5ld19kZXBlbmRlZF94aWQsCisJCQkJCQkJCQkJCSAmZGVwZW5kc19vbl94aWRzKTsKIAkJ CWNoZWNrX2RlcGVuZGVuY3lfZm9yX3BhcmFsbGVsX3NhZmV0eShyZWxpZCwgbmV3X2RlcGVuZGVk X3hpZCwKIAkJCQkJCQkJCQkJCSAmZGVwZW5kc19vbl94aWRzKTsKIAkJCWJyZWFrOwpAQCAtMTQ0 OCw2ICsxNTkwLDkgQEAgaGFuZGxlX2RlcGVuZGVuY3lfb25fY2hhbmdlKExvZ2ljYWxSZXBNc2dU eXBlIGFjdGlvbiwgU3RyaW5nSW5mbyBzLAogCQkJY2hlY2tfYW5kX3JlY29yZF9sb2NhbF9rZXlf ZGVwZW5kZW5jeShyZWxpZCwgJm9sZHR1cCwKIAkJCQkJCQkJCQkJCSAgbmV3X2RlcGVuZGVkX3hp ZCwKIAkJCQkJCQkJCQkJCSAgJmRlcGVuZHNfb25feGlkcyk7CisJCQljaGVja19hbmRfcmVjb3Jk X2ZrZXlfZGVwZW5kZW5jeShyZWxpZCwgJm9sZHR1cCwKKwkJCQkJCQkJCQkJIG5ld19kZXBlbmRl ZF94aWQsCisJCQkJCQkJCQkJCSAmZGVwZW5kc19vbl94aWRzKTsKIAkJCWNoZWNrX2RlcGVuZGVu Y3lfZm9yX3BhcmFsbGVsX3NhZmV0eShyZWxpZCwgbmV3X2RlcGVuZGVkX3hpZCwKIAkJCQkJCQkJ CQkJCSAmZGVwZW5kc19vbl94aWRzKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9sb2dpY2FscmVsYXRpb24uaAppbmRleCAyNDFjNGRkYTEzYy4uZmYyNWNkM2NlNGYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCisrKyBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCkBAIC0yMiw2ICsyMiwxMyBA QCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwU3Vic2NyaWJlcklkeAogCUJpdG1hcHNldCAgKmlu ZGV4a2V5czsJLyogQml0bWFwIG9mIGtleSBjb2x1bW5zICpvbiByZW1vdGUqICovCiB9IExvZ2lj YWxSZXBTdWJzY3JpYmVySWR4OwogCit0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwU3Vic2NyaWJl ckZLCit7CisJT2lkCQkJY29ub2lkOwkJLyogT0lEIG9mIHRoZSBGSyBjb25zdHJhaW50ICovCisJ TG9naWNhbFJlcFJlbElkIHJlZl9yZW1vdGVpZDsgLyogcmVmZXJlbmNlZCByZW1vdGUgcmVsaWQg Ki8KKwlCaXRtYXBzZXQgICpjb25rZXlzOwkvKiBCaXRtYXAgb2Yga2V5IGNvbHVtbnMgKm9uIHJl bW90ZSogKi8KK30gTG9naWNhbFJlcFN1YnNjcmliZXJGSzsKKwogdHlwZWRlZiBzdHJ1Y3QgTG9n aWNhbFJlcFJlbE1hcEVudHJ5CiB7CiAJTG9naWNhbFJlcFJlbGF0aW9uIHJlbW90ZXJlbDsJLyog a2V5IGlzIHJlbW90ZXJlbC5yZW1vdGVpZCAqLwpAQCAtNTYsNiArNjMsMTAgQEAgdHlwZWRlZiBz dHJ1Y3QgTG9naWNhbFJlcFJlbE1hcEVudHJ5CiAJTGlzdAkgICAqbG9jYWxfdW5pcXVlX2luZGV4 ZXM7CiAJYm9vbAkJbG9jYWxfdW5pcXVlX2luZGV4ZXNfY29sbGVjdGVkOwogCisJLyogTG9jYWwg Zm9yZWlnbiBrZXlzLiBVc2VkIGZvciBkZXBlbmRlbmN5IHRyYWNraW5nICovCisJTGlzdAkgICAq bG9jYWxfZmtleXM7CisJYm9vbAkJbG9jYWxfZmtleXNfY29sbGVjdGVkOworCiAJLyoKIAkgKiBX aGV0aGVyIHRoZSByZWxhdGlvbiBjYW4gYmUgYXBwbGllZCBpbiBwYXJhbGxlbCBvciBub3QuIEl0 IGlzCiAJICogZGlzdGluZ2xpc2ggd2hldGhlciBkZWZpbmVkIHRyaWdnZXJzIGFyZSB0aGUgaW1t dXRhYmxlIG9yIG5vdC4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA1MF9w YXJhbGxlbF9hcHBseS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA1MF9wYXJhbGxlbF9h cHBseS5wbAppbmRleCBhZTUzOWY4NDYzOS4uODk2MjQ0YTQyZmQgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzA1MF9wYXJhbGxlbF9hcHBseS5wbAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wNTBfcGFyYWxsZWxfYXBwbHkucGwKQEAgLTMzLDYgKzMzLDggQEAgJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAgICAgQ1JFQVRFIFVOSVFVRSBJTkRFWCB0YWJfdG9h c3RfcmlfaW5kZXggb24gdGFiX3RvYXN0IChhLCBiKTsKICAgICBBTFRFUiBUQUJMRSB0YWJfdG9h c3QgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCB0YWJfdG9hc3RfcmlfaW5kZXg7CiAgICAg SU5TRVJUIElOVE8gdGFiX3RvYXN0KGEsIGIpIFZBTFVFUyhyZXBlYXQoJzEyMzQ1Njc4OTAnLCAy MDApLCAnMTIzNDU2Nzg5MCcpOworCisgICAgQ1JFQVRFIFRBQkxFIHJlZ3Jlc3NfdGFiX2ZrIChp ZCBpbnQgUFJJTUFSWSBLRVksIGZrIGludCk7CiApKTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCiAgICAgIklOU0VSVCBJTlRPIHJlZ3Jlc3NfdGFiIFZBTFVFUyAoZ2Vu ZXJhdGVfc2VyaWVzKDEsIDEwKSwgJ3Rlc3QnKTsiKTsKQEAgLTcxLDYgKzczLDggQEAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKAogICAgIEFMVEVSIFRBQkxFIHRhYl90b2FzdCBBTFRFUiBD T0xVTU4gYSBTRVQgU1RPUkFHRSBFWFRFUk5BTDsKICAgICBDUkVBVEUgVU5JUVVFIElOREVYIHRh Yl90b2FzdF9yaV9pbmRleCBvbiB0YWJfdG9hc3QgKGEsIGIpOwogICAgIEFMVEVSIFRBQkxFIHRh Yl90b2FzdCBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIHRhYl90b2FzdF9yaV9pbmRleDsK KworICAgIENSRUFURSBUQUJMRSByZWdyZXNzX3RhYl9mayAoaWQgaW50IFBSSU1BUlkgS0VZLCBm ayBpbnQgUkVGRVJFTkNFUyByZWdyZXNzX3RhYiAoaWQpKTsKICkpOwogJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAgICAgIkNSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVz c19zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiByZWdyZXNz X3B1YjsiKTsKQEAgLTMxNSw4ICszMTksOCBAQCAkaC0+cXVlcnlfc2FmZSgiQ09NTUlUOyIpOwog IyBzdWJzY3JpYmVyIGR1cmluZyBwYXJhbGxlbCBhcHBseS4KICMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLSMgVHJ1bmNhdGUgdGhlIGRhdGEgZm9y IHVwY29taW5nIHRlc3RzCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi VFJVTkNBVEUgVEFCTEUgcmVncmVzc190YWI7Iik7CisjIGRlbGV0ZSB0aGUgZGF0YSBmb3IgdXBj b21pbmcgdGVzdHMKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxF VEUgRlJPTSByZWdyZXNzX3RhYjsiKTsKICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgncmVncmVzc19zdWInKTsKIAogIyBEZWZpbmUgYW4gdW5pcXVlIGluZGV4IG9uIHN1YnNjcmli ZXIKQEAgLTM2Nyw3ICszNzEsNTAgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFy L2ZpbmlzaCB3YWl0aW5nIGZvciBkZXBlbmRlZCB4aWQgJHhpZC8sICRvZmZzZXQKIAogIyBDbGVh bnVwCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVgg cmVncmVzc190YWJfdmFsdWVfaWR4OyIpOwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHJlZ3Jlc3NfdGFiOyIpOworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHJlZ3Jlc3NfdGFiOyIpOworJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdyZWdyZXNzX3N1YicpOworCisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHRoYXQg dGhlIGRlcGVuZGVuY3kgdHJhY2tpbmcgd29ya3MgY29ycmVjdGx5IGZvciBsb2NhbCBmb3JlaWdu IGtleSBvbgorIyBzdWJzY3JpYmVyIGR1cmluZyBwYXJhbGxlbCBhcHBseS4KKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgSW5zZXJ0IGFuIGlu aXRpYWwgdHVwbGUKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisgICAg IklOU0VSVCBJTlRPIHJlZ3Jlc3NfdGFiIFZBTFVFUyAoMSwgJ2luaXRpYWwgdHVwbGUnKTsiKTsK ICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgncmVncmVzc19zdWInKTsKIAorIyBB dHRhY2ggYW4gaW5qZWN0aW9uX3BvaW50LiBQYXJhbGxlbCB3b3JrZXJzIHdvdWxkIHdhaXQgYmVm b3JlIHRoZSBjb21taXQKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3BhcmFsbGVsLXdvcmtlci1iZWZvcmUt Y29tbWl0Jywnd2FpdCcpOyIKKyk7CisKKyMgSW5zZXJ0IGEgdHVwbGUgb24gcHVibGlzaGVyLiBQ YXJhbGxlbCB3b3JrZXIgd291bGQgd2FpdCBhdCB0aGUgaW5qZWN0aW9uCisjIHBvaW50Ciskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICJJTlNFUlQgSU5UTyByZWdy ZXNzX3RhYiBWQUxVRVMgKDIsICd0bXAnKTsiKTsKKworIyBXYWl0IHVudGlsIHRoZSBwYXJhbGxl bCB3b3JrZXIgZW50ZXJzIHRoZSBpbmplY3Rpb24gcG9pbnQuCiskbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9ldmVudCgnbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCB3b3JrZXInLAorCSdw YXJhbGxlbC13b3JrZXItYmVmb3JlLWNvbW1pdCcpOworCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vi c2NyaWJlci0+bG9nZmlsZTsKKworIyBJbnNlcnQgdHVwbGVzIG9uIHB1Ymxpc2hlciBhZ2Fpbi4g VGhpcyB0cmFuc2FjdGlvbiB3YWl0cyBmb3IgcmVmZXJyaW5nIHR1cGxlCisjIGlzIGNvbW1pdHRl ZC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisgICAgIklOU0VSVCBJ TlRPIHJlZ3Jlc3NfdGFiX2ZrIFZBTFVFUyAoMSwgMSk7Iik7CisKKyMgVmVyaWZ5IHRoZSBwYXJh bGxlbCB3b3JrZXIgd2FpdHMgZm9yIHRoZSB0cmFuc2FjdGlvbgorJHN0ciA9ICRub2RlX3N1YnNj cmliZXItPndhaXRfZm9yX2xvZyhxci93YWl0IGZvciBkZXBlbmRlZCB4aWQgKFsxLTldWzAtOV0r KS8sICRvZmZzZXQpOworJHhpZCA9ICRzdHIgPX4gL3dhaXQgZm9yIGRlcGVuZGVkIHhpZCAoWzEt OV1bMC05XSspLzsKKworIyBXYWtldXAgdGhlIHBhcmFsbGVsIHdvcmtlcgorJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxWworICAgIFNFTEVDVCBpbmplY3Rpb25fcG9p bnRzX2RldGFjaCgncGFyYWxsZWwtd29ya2VyLWJlZm9yZS1jb21taXQnKTsKKyAgICBTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c193YWtldXAoJ3BhcmFsbGVsLXdvcmtlci1iZWZvcmUtY29tbWl0Jyk7 CitdKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL2ZpbmlzaCB3YWl0aW5n IGZvciBkZXBlbmRlZCB4aWQgJHhpZC8sICRvZmZzZXQpOworCiBkb25lX3Rlc3RpbmcoKTsKLS0g CjIuNDMuMAoK --_011_TY4PR01MB17718A4AB7F564C8DB0D6F7DC94102TY4PR01MB17718jp_ Content-Type: application/octet-stream; name="v19-0008-Support-dependency-tracking-via-local-unique-ind.patch" Content-Description: v19-0008-Support-dependency-tracking-via-local-unique-ind.patch Content-Disposition: attachment; filename="v19-0008-Support-dependency-tracking-via-local-unique-ind.patch"; size=24529; creation-date="Thu, 04 Jun 2026 06:54:40 GMT"; modification-date="Thu, 04 Jun 2026 06:58:28 GMT" Content-Transfer-Encoding: base64 RnJvbSAyY2IxNTFhODJlOGMzM2ZlOGQ5ZmYyYzhkODMyMDhhOTBkZjg1YzlmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBaaGlqaWUgSG91IDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBUaHUsIDQgSnVuIDIwMjYgMTM6MjM6NTUgKzA4MDAKU3ViamVjdDogW1BBVENIIHYxOSAw OC8xMF0gU3VwcG9ydCBkZXBlbmRlbmN5IHRyYWNraW5nIHZpYSBsb2NhbCB1bmlxdWUKIGluZGV4 ZXMKCkN1cnJlbnRseSwgbG9naWNhbCByZXBsaWNhdGlvbidzIHBhcmFsbGVsIGFwcGx5IG1lY2hh bmlzbSB0cmFja3MgZGVwZW5kZW5jaWVzCnByaW1hcmlseSBiYXNlZCBvbiB0aGUgUkVQTElDQSBJ REVOVElUWSBkZWZpbmVkIG9uIHRoZSBwdWJsaXNoZXIgdGFibGUuCkhvd2V2ZXIsIGxvY2FsIHN1 YnNjcmliZXIgdGFibGVzIG1pZ2h0IGhhdmUgYWRkaXRpb25hbCB1bmlxdWUgaW5kZXhlcyB0aGF0 CmNvdWxkIGVmZmVjdGl2ZWx5IHNlcnZlIGFzIGRlcGVuZGVuY3kga2V5cywgZXZlbiBpZiB0aGV5 IGRvbid0IGNvcnJlc3BvbmQgdG8KdGhlIHB1Ymxpc2hlcidzIFJFUExJQ0EgSURFTlRJVFkuIEZh aWxpbmcgdG8gdHJhY2sgdGhlc2UgYWRkaXRpb25hbCB1bmlxdWUKa2V5cyBjYW4gbGVhZCB0byBp bmNvcnJlY3QgZGF0YSBhbmQvb3IgZGVhZGxvY2tzIGR1cmluZyBwYXJhbGxlbCBhcHBsaWNhdGlv bi4KClRoaXMgcGF0Y2ggZXh0ZW5kcyB0aGUgcGFyYWxsZWwgYXBwbHkncyBkZXBlbmRlbmN5IHRy YWNraW5nIHRvIGNvbnNpZGVyCmxvY2FsIHVuaXF1ZSBpbmRleGVzIG9uIHRoZSBzdWJzY3JpYmVy IHRhYmxlLiBUaGlzIGlzIGFjaGlldmVkIGJ5IGV4dGVuZGluZwp0aGUgZXhpc3RpbmcgUmVwbGlj YSBJZGVudGl0eSBoYXNoIHRhYmxlIHRvIGFsc28gc3RvcmUgZGVwZW5kZW5jeSBpbmZvcm1hdGlv bgpiYXNlZCBvbiB0aGVzZSBsb2NhbCB1bmlxdWUgaW5kZXhlcy4KClRoZSBMb2dpY2FsUmVwUmVs TWFwRW50cnkgc3RydWN0dXJlIGlzIGV4dGVuZGVkIHRvIHN0b3JlIGRldGFpbHMgYWJvdXQgdGhl c2UKbG9jYWwgdW5pcXVlIGluZGV4ZXMuIFRoaXMgaW5mb3JtYXRpb24gaXMgY29sbGVjdGVkIGFu ZCBjYWNoZWQgd2hlbgpkZXBlbmRlbmN5IGNoZWNraW5nIGlzIGZpcnN0IHBlcmZvcm1lZCBmb3Ig YSByZW1vdGUgdHJhbnNhY3Rpb24gb24gYSBnaXZlbgpyZWxhdGlvbi4gVGhpcyBjb2xsZWN0aW9u IHByb2Nlc3MgcmVxdWlyZXMgdG8gYmUgaW4gYSB0cmFuc2FjdGlvbiB0byBhY2Nlc3MKc3lzdGVt IGNhdGFsb2cgaW5mb3JtYXRpb24uCi0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9yZWxhdGlvbi5jICAgIHwgMTYxICsrKysrKysrKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAyNTIgKysrKysrKysrKysrKystLS0tCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvZGVhZGxvY2suYyAgICAgICAgICAgfCAgIDEgLQogc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmggICAgIHwgIDE0ICsKIHNyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzA1MF9wYXJhbGxlbF9hcHBseS5wbCB8ICA2MCArKysrKwogc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAyICsKIDYgZmlsZXMgY2hh bmdlZCwgNDM5IGluc2VydGlvbnMoKyksIDUxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYwppbmRleCBlZWI4NWY4Y2M1ZC4uNjY2NWY1YzBj YzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24u YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKQEAgLTEy OCw2ICsxMjgsMjEgQEAgbG9naWNhbHJlcF9yZWxtYXBfaW5pdCh2b2lkKQogCQkJCQkJCQkgIChE YXR1bSkgMCk7CiB9CiAKKy8qCisgKiBSZWxlYXNlIGxvY2FsIGluZGV4IGxpc3QKKyAqLworc3Rh dGljIHZvaWQKK2ZyZWVfbG9jYWxfdW5pcXVlX2luZGV4ZXMoTG9naWNhbFJlcFJlbE1hcEVudHJ5 ICplbnRyeSkKK3sKKwlBc3NlcnQoYW1fbGVhZGVyX2FwcGx5X3dvcmtlcigpKTsKKworCWZvcmVh Y2hfcHRyKExvZ2ljYWxSZXBTdWJzY3JpYmVySWR4LCBpZHhpbmZvLCBlbnRyeS0+bG9jYWxfdW5p cXVlX2luZGV4ZXMpCisJCWJtc19mcmVlKGlkeGluZm8tPmluZGV4a2V5cyk7CisKKwlsaXN0X2Zy ZWVfZGVlcChlbnRyeS0+bG9jYWxfdW5pcXVlX2luZGV4ZXMpOworCWVudHJ5LT5sb2NhbF91bmlx dWVfaW5kZXhlcyA9IE5JTDsKK30KKwogLyoKICAqIEZyZWUgdGhlIGVudHJ5IG9mIGEgcmVsYXRp b24gbWFwIGNhY2hlLgogICovCkBAIC0xNTUsNiArMTcwLDkgQEAgbG9naWNhbHJlcF9yZWxtYXBf ZnJlZV9lbnRyeShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5KQogCiAJaWYgKGVudHJ5LT5h dHRybWFwKQogCQlmcmVlX2F0dHJtYXAoZW50cnktPmF0dHJtYXApOworCisJaWYgKGVudHJ5LT5s b2NhbF91bmlxdWVfaW5kZXhlcyAhPSBOSUwpCisJCWZyZWVfbG9jYWxfdW5pcXVlX2luZGV4ZXMo ZW50cnkpOwogfQogCiAvKgpAQCAtMzYxLDYgKzM3OSwxMjYgQEAgbG9naWNhbHJlcF9yZWxfbWFy a191cGRhdGFibGUoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeSkKIAl9CiB9CiAKKy8qCisg KiBDb2xsZWN0IGFsbCBsb2NhbCB1bmlxdWUgaW5kZXhlcyB0aGF0IGNhbiBiZSB1c2VkIGZvciBk ZXBlbmRlbmN5IHRyYWNraW5nLgorICovCitzdGF0aWMgdm9pZAorY29sbGVjdF9sb2NhbF9pbmRl eGVzKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpCit7CisJTGlzdAkgICAqaWR4bGlzdDsK KworCWlmIChlbnRyeS0+bG9jYWxfdW5pcXVlX2luZGV4ZXMgIT0gTklMKQorCQlmcmVlX2xvY2Fs X3VuaXF1ZV9pbmRleGVzKGVudHJ5KTsKKworCWVudHJ5LT5sb2NhbF91bmlxdWVfaW5kZXhlc19j b2xsZWN0ZWQgPSB0cnVlOworCisJaWR4bGlzdCA9IFJlbGF0aW9uR2V0SW5kZXhMaXN0KGVudHJ5 LT5sb2NhbHJlbCk7CisKKwkvKiBRdWljayBleGl0IGlmIHRoZXJlIGFyZSBubyBpbmRleGVzICov CisJaWYgKGlkeGxpc3QgPT0gTklMKQorCQlyZXR1cm47CisKKwkvKiBJdGVyYXRlIGluZGV4ZXMg dG8gbGlzdCBhbGwgdXNhYmxlIGluZGV4ZXMgKi8KKwlmb3JlYWNoX29pZChpZHhvaWQsIGlkeGxp c3QpCisJeworCQlSZWxhdGlvbglpZHhyZWw7CisJCWludAkJCWluZG5rZXlzOworCQlBdHRyTWFw ICAgICphdHRybWFwOworCQlCaXRtYXBzZXQgICppbmRleGtleXMgPSBOVUxMOworCQlib29sCQlz dWl0YWJsZSA9IHRydWU7CisKKwkJaWR4cmVsID0gaW5kZXhfb3BlbihpZHhvaWQsIEFjY2Vzc1No YXJlTG9jayk7CisKKwkJLyoKKwkJICogQ2hlY2sgd2hldGhlciB0aGUgaW5kZXggY2FuIGJlIHVz ZWQgZm9yIHRoZSBkZXBlbmRlbmN5IHRyYWNraW5nLgorCQkgKgorCQkgKiBGb3Igc2ltcGxpZmlj YXRpb24sIHRoZSBzYW1lIGNvbmRpdGlvbiBhcyBSRVBMSUNBIElERU5USVRZIEZVTEwsCisJCSAq IHBsdXMgaXQgbXVzdCBiZSBhIHVuaXF1ZSBpbmRleC4KKwkJICovCisJCWlmICghKGlkeHJlbC0+ cmRfaW5kZXgtPmluZGlzdW5pcXVlICYmCisJCQkgIElzSW5kZXhVc2FibGVGb3JSZXBsaWNhSWRl bnRpdHlGdWxsKGlkeHJlbCwgZW50cnktPmF0dHJtYXApKSkKKwkJeworCQkJaW5kZXhfY2xvc2Uo aWR4cmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJY29udGludWU7CisJCX0KKworCQlpbmRua2V5 cyA9IGlkeHJlbC0+cmRfaW5kZXgtPmluZG5rZXlhdHRzOworCQlhdHRybWFwID0gZW50cnktPmF0 dHJtYXA7CisKKwkJQXNzZXJ0KGluZG5rZXlzKTsKKworCQkvKiBTZWVrIGVhY2ggYXR0cmlidXRl cyBhbmQgYWRkIHRvIGEgQml0bWFwICovCisJCWZvciAoaW50IGkgPSAwOyBpIDwgaW5kbmtleXM7 IGkrKykKKwkJeworCQkJQXR0ck51bWJlcglsb2NhbGNvbCA9IGlkeHJlbC0+cmRfaW5kZXgtPmlu ZGtleS52YWx1ZXNbaV07CisJCQlBdHRyTnVtYmVyCXJlbW90ZWNvbDsKKworCQkJLyoKKwkJCSAq IFhYWDogTWFyayBhIHJlbGF0aW9uIGFzIHBhcmFsbGVsLXVuc2FmZSBpZiBpdCBoYXMgZXhwcmVz c2lvbgorCQkJICogaW5kZXhlcyBiZWNhdXNlIHdlIGNhbm5vdCBjb21wdXRlIHRoZSBoYXNoIHZh bHVlIGZvciB0aGUKKwkJCSAqIGRlcGVuZGVuY3kgdHJhY2tpbmcuIEZvciBzYWZldHksIHRyYW5z YWN0aW9ucyB0aGF0IG1vZGlmeSBzdWNoCisJCQkgKiB0YWJsZXMgY2FuIHdhaXQgZm9yIGFwcGxp Y2F0aW9ucyB0aWxsIHRoZSBsYXN0bHkgZGlzcGF0Y2hlZAorCQkJICogdHJhbnNhY3Rpb24gaXMg Y29tbWl0dGVkLgorCQkJICovCisJCQlpZiAoIUF0dHJpYnV0ZU51bWJlcklzVmFsaWQobG9jYWxj b2wpKQorCQkJeworCQkJCWVudHJ5LT5wYXJhbGxlbF9zYWZlID0gTE9HSUNBTFJFUF9QQVJBTExF TF9SRVNUUklDVEVEOworCQkJCXN1aXRhYmxlID0gZmFsc2U7CisJCQkJYnJlYWs7CisJCQl9CisK KwkJCXJlbW90ZWNvbCA9IGF0dHJtYXAtPmF0dG51bXNbQXR0ck51bWJlckdldEF0dHJPZmZzZXQo bG9jYWxjb2wpXTsKKworCQkJLyoKKwkJCSAqIFNraXAgaWYgdGhlIGNvbHVtbiBkb2VzIG5vdCBl eGlzdCBvbiBwdWJsaXNoZXIgbm9kZS4gSW4gdGhpcworCQkJICogY2FzZSB0aGUgcmVwbGljYXRl ZCB0dXBsZXMgYWx3YXlzIGhhdmUgTlVMTCBvciBkZWZhdWx0IHZhbHVlLgorCQkJICovCisJCQlp ZiAocmVtb3RlY29sIDwgMCkKKwkJCXsKKwkJCQlzdWl0YWJsZSA9IGZhbHNlOworCQkJCWJyZWFr OworCQkJfQorCisJCQkvKiBDaGVja3MgYXJlIHBhc3NlZCwgcmVtZW1iZXIgdGhlIGF0dHJpYnV0 ZSAqLworCQkJaW5kZXhrZXlzID0gYm1zX2FkZF9tZW1iZXIoaW5kZXhrZXlzLCByZW1vdGVjb2wp OworCQl9CisKKwkJaW5kZXhfY2xvc2UoaWR4cmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCS8q CisJCSAqIFNraXAgdXNpbmcgdGhlIGluZGV4IGlmIGl0IGlzIG5vdCBzdWl0YWJsZS4gVGhpcyBj YW4gaGFwcGVuIGlmIDEpCisJCSAqIG9uZSBvZiB0aGUgY29sdW1ucyBkb2VzIG5vdCBleGlzdCBv biB0aGUgcHVibGlzaGVyIHNpZGUsIG9yIDIpCisJCSAqIHRoZXJlIGlzIGFuIGV4cHJlc3Npb24g Y29sdW1uLgorCQkgKi8KKwkJaWYgKCFzdWl0YWJsZSkKKwkJeworCQkJaWYgKGluZGV4a2V5cykK KwkJCQlibXNfZnJlZShpbmRleGtleXMpOworCisJCQljb250aW51ZTsKKwkJfQorCisJCS8qIFRo aXMgaW5kZXggaXMgdXNhYmxlLCBzdG9yZSBvbiBtZW1vcnkgKi8KKwkJaWYgKGluZGV4a2V5cykK KwkJeworCQkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJCQlMb2dpY2FsUmVwU3Vic2NyaWJlcklk eCAqaWR4aW5mbzsKKworCQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKExvZ2ljYWxS ZXBSZWxNYXBDb250ZXh0KTsKKwkJCWlkeGluZm8gPSBwYWxsb2Moc2l6ZW9mKExvZ2ljYWxSZXBT dWJzY3JpYmVySWR4KSk7CisJCQlpZHhpbmZvLT5pbmRleG9pZCA9IGlkeG9pZDsKKwkJCWlkeGlu Zm8tPmluZGV4a2V5cyA9IGJtc19jb3B5KGluZGV4a2V5cyk7CisJCQllbnRyeS0+bG9jYWxfdW5p cXVlX2luZGV4ZXMgPQorCQkJCWxhcHBlbmQoZW50cnktPmxvY2FsX3VuaXF1ZV9pbmRleGVzLCBp ZHhpbmZvKTsKKworCQkJcGZyZWUoaW5kZXhrZXlzKTsKKwkJCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjdHgpOworCQl9CisJfQorCisJbGlzdF9mcmVlKGlkeGxpc3QpOworfQorCiAvKgogICog Q2hlY2sgYWxsIGxvY2FsIHRyaWdnZXJzIGZvciB0aGUgcmVsYXRpb24gdG8gc2VlIHRoZSBwYXJh bGxlbGl6YWJpbGl0eS4KICAqCkBAIC0zNzAsNyArNTA4LDE2IEBAIGxvZ2ljYWxyZXBfcmVsX21h cmtfdXBkYXRhYmxlKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpCiBzdGF0aWMgdm9pZAog Y2hlY2tfZGVmaW5lZF90cmlnZ2VycyhMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5KQogewot CVRyaWdnZXJEZXNjICp0cmlnZGVzYyA9IGVudHJ5LT5sb2NhbHJlbC0+dHJpZ2Rlc2M7CisJVHJp Z2dlckRlc2MgKnRyaWdkZXNjOworCisJLyoKKwkgKiBTa2lwIGlmIHRoZSBwYXJhbGxlbGl6YWJp bGl0eSBoYXMgYWxyZWFkeSBiZWVuIGNoZWNrZWQuIFBvc3NpbGJsZSBpZgorCSAqIHRoZSByZWxh dGlvbiBoYXMgZXhwcmVzc2lvbiBpbmRleGVzLgorCSAqLworCWlmIChlbnRyeS0+cGFyYWxsZWxf c2FmZSAhPSBMT0dJQ0FMUkVQX1BBUkFMTEVMX1VOS05PV04pCisJCXJldHVybjsKKworCXRyaWdk ZXNjID0gZW50cnktPmxvY2FscmVsLT50cmlnZGVzYzsKIAogCS8qIFF1aWNrIGV4aXQgaWYgdHJp ZmZlciBpcyBub3QgZGVmaW5lZCAqLwogCWlmICh0cmlnZGVzYyA9PSBOVUxMKQpAQCAtNDExLDcg KzU1OCw3IEBAIGNoZWNrX2RlZmluZWRfdHJpZ2dlcnMoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpl bnRyeSkKICAqIElmIHRoZSBrZXkgaXMgZ2l2ZW4sIHRoZSBjb3JyZXNwb25kaW5nIGVudHJ5IGlz IGZpcnN0IHNlYXJjaGVkIGluIHRoZSBoYXNoCiAgKiB0YWJsZSBhbmQgcHJvY2Vzc2VkIGFzIGlu IHRoZSBhYm92ZSBjYXNlLiBBdCB0aGUgZW5kLCBsb2dpY2FsIHJlcGxpY2F0aW9uIGlzCiAgKiBj bG9zZWQuCi0gICovCisgKi8KIHZvaWQKIGxvZ2ljYWxyZXBfcmVsX2xvYWQoTG9naWNhbFJlcFJl bE1hcEVudHJ5ICplbnRyeSwgTG9naWNhbFJlcFJlbElkIHJlbW90ZWlkLAogCQkJCQlMT0NLTU9E RSBsb2NrbW9kZSkKQEAgLTU2NSw3ICs3MTIsMTEgQEAgbG9naWNhbHJlcF9yZWxfbG9hZChMb2dp Y2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5LCBMb2dpY2FsUmVwUmVsSWQgcmVtb3RlaWQsCiAJCSAq IHRyYWNraW5nLgogCQkgKi8KIAkJaWYgKGFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSkKKwkJewor CQkJZW50cnktPnBhcmFsbGVsX3NhZmUgPSBMT0dJQ0FMUkVQX1BBUkFMTEVMX1VOS05PV047CisJ CQljb2xsZWN0X2xvY2FsX2luZGV4ZXMoZW50cnkpOwogCQkJY2hlY2tfZGVmaW5lZF90cmlnZ2Vy cyhlbnRyeSk7CisJCX0KIAogCQllbnRyeS0+bG9jYWxyZWx2YWxpZCA9IHRydWU7CiAJfQpAQCAt ODY3LDYgKzEwMTgsMTIgQEAgbG9naWNhbHJlcF9wYXJ0aXRpb25fb3BlbihMb2dpY2FsUmVwUmVs TWFwRW50cnkgKnJvb3QsCiAJZW50cnktPmxvY2FsaW5kZXhvaWQgPSBGaW5kTG9naWNhbFJlcExv Y2FsSW5kZXgocGFydHJlbCwgcmVtb3RlcmVsLAogCQkJCQkJCQkJCQkJCWVudHJ5LT5hdHRybWFw KTsKIAorCS8qCisJICogVE9ETzogUGFyYWxsZWwgYXBwbHkgZG9lcyBub3Qgc3VwcG9ydCB0aGUg cGFyYWxsZWwgYXBwbHkgZm9yIG5vdy4gSnVzdAorCSAqIG1hcmsgbG9jYWwgaW5kZXhlcyBhcmUg Y29sbGVjdGVkLgorCSAqLworCWVudHJ5LT5sb2NhbF91bmlxdWVfaW5kZXhlc19jb2xsZWN0ZWQg PSB0cnVlOworCiAJZW50cnktPmxvY2FscmVsdmFsaWQgPSB0cnVlOwogCiAJcmV0dXJuIGVudHJ5 OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggZGU2NjViOGQ0 YjMuLmEyMTJiYzYwMTNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2Vy LmMKQEAgLTU3OCwxMCArNTc4LDIwIEBAIHR5cGVkZWYgc3RydWN0IEFwcGx5U3ViWGFjdERhdGEK IAogc3RhdGljIEFwcGx5U3ViWGFjdERhdGEgc3VieGFjdF9kYXRhID0gezAsIDAsIEludmFsaWRU cmFuc2FjdGlvbklkLCBOVUxMfTsKIAorLyoKKyAqIFR5cGUgb2Yga2V5IHVzZWQgZm9yIGRlcGVu ZGVuY3kgdHJhY2tpbmcuCisgKi8KK3R5cGVkZWYgZW51bSBMb2dpY2FsUmVwS2V5S2luZAorewor CUxPR0lDQUxSRVBfS0VZX1JFUExJQ0FfSURFTlRJVFksCisJTE9HSUNBTFJFUF9LRVlfTE9DQUxf VU5JUVVFCit9IExvZ2ljYWxSZXBLZXlLaW5kOworCiAvKiBIYXNoIHRhYmxlIGtleSBmb3IgcmVw bGljYV9pZGVudGl0eV90YWJsZSAqLwogdHlwZWRlZiBzdHJ1Y3QgUmVwbGljYUlkZW50aXR5S2V5 CiB7CiAJT2lkCQkJcmVsaWQ7CisJTG9naWNhbFJlcEtleUtpbmQga2luZDsKIAlMb2dpY2FsUmVw VHVwbGVEYXRhICpkYXRhOwogfSBSZXBsaWNhSWRlbnRpdHlLZXk7CiAKQEAgLTc2MCw3ICs3NzAs OCBAQCBzdGF0aWMgYm9vbAogaGFzaF9yZXBsaWNhX2lkZW50aXR5X2NvbXBhcmUoUmVwbGljYUlk ZW50aXR5S2V5ICphLCBSZXBsaWNhSWRlbnRpdHlLZXkgKmIpCiB7CiAJaWYgKGEtPnJlbGlkICE9 IGItPnJlbGlkIHx8Ci0JCWEtPmRhdGEtPm5jb2xzICE9IGItPmRhdGEtPm5jb2xzKQorCQlhLT5k YXRhLT5uY29scyAhPSBiLT5kYXRhLT5uY29scyB8fAorCQlhLT5raW5kICE9IGItPmtpbmQpCiAJ CXJldHVybiBmYWxzZTsKIAogCWZvciAoaW50IGkgPSAwOyBpIDwgYS0+ZGF0YS0+bmNvbHM7IGkr KykKQEAgLTc2OCw2ICs3NzksOSBAQCBoYXNoX3JlcGxpY2FfaWRlbnRpdHlfY29tcGFyZShSZXBs aWNhSWRlbnRpdHlLZXkgKmEsIFJlcGxpY2FJZGVudGl0eUtleSAqYikKIAkJaWYgKGEtPmRhdGEt PmNvbHN0YXR1c1tpXSAhPSBiLT5kYXRhLT5jb2xzdGF0dXNbaV0pCiAJCQlyZXR1cm4gZmFsc2U7 CiAKKwkJaWYgKGEtPmRhdGEtPmNvbHN0YXR1c1tpXSA9PSBMT0dJQ0FMUkVQX0NPTFVNTl9OVUxM KQorCQkJY29udGludWU7CisKIAkJaWYgKGEtPmRhdGEtPmNvbHZhbHVlc1tpXS5sZW4gIT0gYi0+ ZGF0YS0+Y29sdmFsdWVzW2ldLmxlbikKIAkJCXJldHVybiBmYWxzZTsKIApAQCAtODk1LDYgKzkw OSw4OSBAQCBjaGVja19hbmRfYXBwZW5kX3hpZF9kZXBlbmRlbmN5KFRyYW5zYWN0aW9uSWQgKnhp ZCwgTGlzdCAqKmRlcGVuZHNfb25feGlkcykKIAkqZGVwZW5kc19vbl94aWRzID0gbGFwcGVuZF94 aWQoKmRlcGVuZHNfb25feGlkcywgKnhpZCk7CiB9CiAKKy8qCisgKiBDb21tb24gZnVuY3Rpb24g Zm9yIGNoZWNraW5nIGRlcGVuZGVuY3kgYnkgdXNpbmcgdGhlIGtleS4gVXNlZCBieSBib3RoCisg KiBjaGVja19hbmRfcmVjb3JkX3JpX2RlcGVuZGVuY3kgYW5kIGNoZWNrX2FuZF9yZWNvcmRfbG9j YWxfa2V5X2RlcGVuZGVuY3kuCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19hbmRfcmVjb3JkX2tl eV9kZXBlbmRlbmN5KFJlcGxpY2FJZGVudGl0eUtleSAqa2V5LAorCQkJCQkJCQlUcmFuc2FjdGlv bklkIG5ld19kZXBlbmRlZF94aWQsCisJCQkJCQkJCUxpc3QgKipkZXBlbmRzX29uX3hpZHMpCit7 CisJUmVwbGljYUlkZW50aXR5RW50cnkgKnJpZW50cnk7CisJYm9vbAkJZm91bmQgPSBmYWxzZTsK KworCS8qCisJICogVGhlIG5ldyB4aWQgY291bGQgYmUgaW52YWxpZCBpZiB0aGUgdHJhbnNhY3Rp b24gd2lsbCBiZSBhcHBsaWVkIGJ5IHRoZQorCSAqIGxlYWRlciBpdHNlbGYgd2hpY2ggbWVhbnMg YWxsIHRoZSBjaGFuZ2VzIHdpbGwgYmUgY29tbWl0dGVkIGJlZm9yZQorCSAqIHByb2Nlc3Npbmcg bmV4dCB0cmFuc2FjdGlvbi4gSW4gdGhpcyBjYXNlLCB3ZSBvbmx5IG5lZWQgdG8gY2hlY2sgZm9y CisJICogZGVwZW5kZW5jaWVzIG9uIHByZWNlZGluZyB0cmFuc2FjdGlvbnMsIHRoZXJlIGlzIG5v IG5lZWQgdG8gcmVjb3JkIGEgbmV3CisJICogZGVwZW5kZW5jeSBmb3Igc3Vic2VxdWVudCB0cmFu c2FjdGlvbnMgdG8gd2FpdCBvbi4KKwkgKi8KKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKG5l d19kZXBlbmRlZF94aWQpKQorCXsKKwkJcmllbnRyeSA9IHJlcGxpY2FfaWRlbnRpdHlfbG9va3Vw KHJlcGxpY2FfaWRlbnRpdHlfdGFibGUsIGtleSk7CisJCWZyZWVfcmVwbGljYV9pZGVudGl0eV9r ZXkoa2V5KTsKKworCQkvKiBObyBkZXBlbmRlbmN5IGRldGVjdGVkICovCisJCWlmICghcmllbnRy eSkKKwkJCXJldHVybjsKKworCQllbG9nKERFQlVHMSwKKwkJCSBrZXktPmtpbmQgPT0gTE9HSUNB TFJFUF9LRVlfUkVQTElDQV9JREVOVElUWSA/CisJCQkgImZvdW5kIGNvbmZsaWN0aW5nIHJlcGxp Y2EgaWRlbnRpdHkgY2hhbmdlIGZyb20gJXUiIDoKKwkJCSAiZm91bmQgY29uZmxpY3RpbmcgbG9j YWwgdW5pcXVlIGNoYW5nZSBmcm9tICV1IiwKKwkJCSByaWVudHJ5LT5yZW1vdGVfeGlkKTsKKwor CQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQocmllbnRyeS0+cmVtb3RlX3hpZCkpOworCQlj aGVja19hbmRfYXBwZW5kX3hpZF9kZXBlbmRlbmN5KCZyaWVudHJ5LT5yZW1vdGVfeGlkLCBkZXBl bmRzX29uX3hpZHMpOworCisJCS8qCisJCSAqIFJlbW92ZSB0aGUgZW50cnkgaWYgdGhlIHJlbW90 ZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBjb21taXR0ZWQgbG9jYWxseQorCQkgKiBhbmQgbm8gbmV3 IGRlcGVuZGVuY3kgbmVlZHMgdG8gYmUgYWRkZWQuCisJCSAqLworCQlpZiAoIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKHJpZW50cnktPnJlbW90ZV94aWQpKQorCQl7CisJCQlmcmVlX3JlcGxpY2FfaWRl bnRpdHlfa2V5KHJpZW50cnktPmtleWRhdGEpOworCQkJcmVwbGljYV9pZGVudGl0eV9kZWxldGVf aXRlbShyZXBsaWNhX2lkZW50aXR5X3RhYmxlLCByaWVudHJ5KTsKKwkJfQorCisJCXJldHVybjsK Kwl9CisKKwkvKiBSZWNvcmQgYSBuZXcgZGVwZW5kZW5jeSBmb3Igc3Vic2VxdWVudCB0cmFuc2Fj dGlvbnMgdG8gd2FpdCBvbiAqLworCXJpZW50cnkgPSByZXBsaWNhX2lkZW50aXR5X2luc2VydChy ZXBsaWNhX2lkZW50aXR5X3RhYmxlLCBrZXksCisJCQkJCQkJCQkgICZmb3VuZCk7CisKKwkvKgor CSAqIFJlbGVhc2UgdGhlIGtleSBidWlsdCB0byBzZWFyY2ggdGhlIGVudHJ5LCBpZiB0aGUgZW50 cnkgYWxyZWFkeSBleGlzdHMuCisJICovCisJaWYgKGZvdW5kKQorCXsKKwkJQXNzZXJ0KFRyYW5z YWN0aW9uSWRJc1ZhbGlkKHJpZW50cnktPnJlbW90ZV94aWQpKTsKKworCQllbG9nKERFQlVHMSwK KwkJCSBrZXktPmtpbmQgPT0gTE9HSUNBTFJFUF9LRVlfUkVQTElDQV9JREVOVElUWSA/CisJCQkg ImZvdW5kIGNvbmZsaWN0aW5nIHJlcGxpY2EgaWRlbnRpdHkgY2hhbmdlIGZyb20gJXUiIDoKKwkJ CSAiZm91bmQgY29uZmxpY3RpbmcgbG9jYWwgdW5pcXVlIGNoYW5nZSBmcm9tICV1IiwKKwkJCSBy aWVudHJ5LT5yZW1vdGVfeGlkKTsKKworCQlmcmVlX3JlcGxpY2FfaWRlbnRpdHlfa2V5KGtleSk7 CisKKwkJLyoKKwkJICogUmV0dXJuIGlmIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIHdhcyB0aGUg bGFzdCBvbmUgdG8gbW9kaWZ5IHRoZQorCQkgKiBrZXkuCisJCSAqLworCQlpZiAoVHJhbnNhY3Rp b25JZEVxdWFscyhyaWVudHJ5LT5yZW1vdGVfeGlkLCBuZXdfZGVwZW5kZWRfeGlkKSkKKwkJCXJl dHVybjsKKworCQljaGVja19hbmRfYXBwZW5kX3hpZF9kZXBlbmRlbmN5KCZyaWVudHJ5LT5yZW1v dGVfeGlkLCBkZXBlbmRzX29uX3hpZHMpOworCX0KKworCS8qIFVwZGF0ZSB0aGUgbmV3IGRlcGVu ZGVkIHhpZCBpbnRvIHRoZSBlbnRyeSAqLworCXJpZW50cnktPnJlbW90ZV94aWQgPSBuZXdfZGVw ZW5kZWRfeGlkOworfQorCiAvKgogICogQ2hlY2sgZm9yIGRlcGVuZGVuY2llcyBvbiBwcmVjZWRp bmcgdHJhbnNhY3Rpb25zIHRoYXQgbW9kaWZ5IHRoZSBzYW1lIGtleS4KICAqIFJldHVybnMgdGhl IGRlcGVuZGVudCB0cmFuc2FjdGlvbnMgaW4gJ2RlcGVuZHNfb25feGlkcycuCkBAIC05MTEsMTAg KzEwMDgsOCBAQCBjaGVja19hbmRfcmVjb3JkX3JpX2RlcGVuZGVuY3koT2lkIHJlbGlkLCBMb2dp Y2FsUmVwVHVwbGVEYXRhICpvcmlnaW5hbF9kYXRhLAogCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAq cmVsZW50cnk7CiAJTG9naWNhbFJlcFR1cGxlRGF0YSAqcmlkYXRhOwogCVJlcGxpY2FJZGVudGl0 eUtleSAqcmlrZXk7Ci0JUmVwbGljYUlkZW50aXR5RW50cnkgKnJpZW50cnk7CiAJTWVtb3J5Q29u dGV4dCBvbGRjdHg7CiAJaW50CQkJbl9yaTsKLQlib29sCQlmb3VuZCA9IGZhbHNlOwogCiAJQXNz ZXJ0KGRlcGVuZHNfb25feGlkcyk7CiAKQEAgLTk5Myw3MyArMTA4OCwxMjEgQEAgY2hlY2tfYW5k X3JlY29yZF9yaV9kZXBlbmRlbmN5KE9pZCByZWxpZCwgTG9naWNhbFJlcFR1cGxlRGF0YSAqb3Jp Z2luYWxfZGF0YSwKIAogCXJpa2V5ID0gcGFsbG9jMF9vYmplY3QoUmVwbGljYUlkZW50aXR5S2V5 KTsKIAlyaWtleS0+cmVsaWQgPSByZWxpZDsKKwlyaWtleS0+a2luZCA9IExPR0lDQUxSRVBfS0VZ X1JFUExJQ0FfSURFTlRJVFk7CiAJcmlrZXktPmRhdGEgPSByaWRhdGE7CiAKIAlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwljaGVja19hbmRfcmVjb3JkX2tleV9kZXBlbmRlbmN5KHJp a2V5LCBuZXdfZGVwZW5kZWRfeGlkLCBkZXBlbmRzX29uX3hpZHMpOworfQorCisvKgorICogTW9z dGx5IHNhbWUgYXMgY2hlY2tfYW5kX3JlY29yZF9yaV9kZXBlbmRlbmN5KCkgYnV0IGZvciBsb2Nh bCB1bmlxdWUgaW5kZXhlcy4KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX2FuZF9yZWNvcmRfbG9j YWxfa2V5X2RlcGVuZGVuY3koT2lkIHJlbGlkLAorCQkJCQkJCQkJICBMb2dpY2FsUmVwVHVwbGVE YXRhICpvcmlnaW5hbF9kYXRhLAorCQkJCQkJCQkJICBUcmFuc2FjdGlvbklkIG5ld19kZXBlbmRl ZF94aWQsCisJCQkJCQkJCQkgIExpc3QgKipkZXBlbmRzX29uX3hpZHMpCit7CisJTG9naWNhbFJl cFJlbE1hcEVudHJ5ICpyZWxlbnRyeTsKKwlMb2dpY2FsUmVwVHVwbGVEYXRhICpyaWRhdGE7CisJ UmVwbGljYUlkZW50aXR5S2V5ICpyaWtleTsKKwlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKworCUFz c2VydChkZXBlbmRzX29uX3hpZHMpOworCisJLyogU2VhcmNoIGZvciBleGlzdGluZyBlbnRyeSAq LworCXJlbGVudHJ5ID0gbG9naWNhbHJlcF9nZXRfcmVsZW50cnkocmVsaWQpOworCisJQXNzZXJ0 KHJlbGVudHJ5KTsKIAogCS8qCi0JICogVGhlIG5ldyB4aWQgY291bGQgYmUgaW52YWxpZCBpZiB0 aGUgdHJhbnNhY3Rpb24gd2lsbCBiZSBhcHBsaWVkIGJ5IHRoZQotCSAqIGxlYWRlciBpdHNlbGYg d2hpY2ggbWVhbnMgYWxsIHRoZSBjaGFuZ2VzIHdpbGwgYmUgY29tbWl0dGVkIGJlZm9yZQotCSAq IHByb2Nlc3NpbmcgbmV4dCB0cmFuc2FjdGlvbi4gSW4gdGhpcyBjYXNlLCB3ZSBvbmx5IG5lZWQg dG8gY2hlY2sgZm9yCi0JICogZGVwZW5kZW5jaWVzIG9uIHByZWNlZGluZyB0cmFuc2FjdGlvbnMs IHRoZXJlIGlzIG5vIG5lZWQgdG8gcmVjb3JkIGEgbmV3Ci0JICogZGVwZW5kZW5jeSBmb3Igc3Vi c2VxdWVudCB0cmFuc2FjdGlvbnMgdG8gd2FpdCBvbi4KKwkgKiBHYXRoZXIgaW5mb3JtYXRpb24g Zm9yIGxvY2FsIGluZGV4ZXMgaWYgbm90IHlldC4gV2UgcmVxdWlyZSB0byBiZSBpbiBhCisJICog dHJhbnNhY3Rpb24gc3RhdGUgYmVjYXVzZSBzeXN0ZW0gY2F0YWxvZ3MgYXJlIHJlYWQuCiAJICov Ci0JaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChuZXdfZGVwZW5kZWRfeGlkKSkKKwlpZiAoIXJl bGVudHJ5LT5sb2NhbF91bmlxdWVfaW5kZXhlc19jb2xsZWN0ZWQpCiAJewotCQlyaWVudHJ5ID0g cmVwbGljYV9pZGVudGl0eV9sb29rdXAocmVwbGljYV9pZGVudGl0eV90YWJsZSwgcmlrZXkpOwot CQlmcmVlX3JlcGxpY2FfaWRlbnRpdHlfa2V5KHJpa2V5KTsKLQotCQkvKiBObyBkZXBlbmRlbmN5 IGRldGVjdGVkICovCi0JCWlmICghcmllbnRyeSkKLQkJCXJldHVybjsKKwkJYm9vbAkJbmVlZHNf c3RhcnQgPSAhSXNUcmFuc2FjdGlvbk9yVHJhbnNhY3Rpb25CbG9jaygpOwogCi0JCWVsb2coREVC VUcxLCAiZm91bmQgY29uZmxpY3RpbmcgcmVwbGljYSBpZGVudGl0eSBjaGFuZ2UgZnJvbSAldSIs Ci0JCQkgcmllbnRyeS0+cmVtb3RlX3hpZCk7CisJCWlmIChuZWVkc19zdGFydCkKKwkJCVN0YXJ0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHJp ZW50cnktPnJlbW90ZV94aWQpKTsKLQkJY2hlY2tfYW5kX2FwcGVuZF94aWRfZGVwZW5kZW5jeSgm cmllbnRyeS0+cmVtb3RlX3hpZCwgZGVwZW5kc19vbl94aWRzKTsKKwkJbG9naWNhbHJlcF9yZWxf bG9hZChOVUxMLCByZWxpZCwgQWNjZXNzU2hhcmVMb2NrKTsKIAogCQkvKgotCQkgKiBSZW1vdmUg dGhlIGVudHJ5IGlmIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4gY29tbWl0dGVkIGxv Y2FsbHkKLQkJICogYW5kIG5vIG5ldyBkZXBlbmRlbmN5IG5lZWRzIHRvIGJlIGFkZGVkLgorCQkg KiBDbG9zZSB0aGUgdHJhbnNhY3Rpb24gaWYgd2Ugc3RhcnQgaGVyZS4gV2UgbXVzdCBub3QgYWJv cnQgYmVjYXVzZQorCQkgKiBpdCB3b3VsZCByZWxlYXNlIGFsbCBzZXNzaW9uLWxldmVsIGxvY2tz LCBzdWNoIGFzIHRoZSBzdHJlYW0gbG9jaywKKwkJICogYW5kIGJyZWFrIHRoZSBkZWFkbG9jayBk ZXRlY3Rpb24gbWVjaGFuaXNtIGJldHdlZW4gTEEgYW5kIFBBLiBUaGUKKwkJICogb3V0Y29tZSBp cyB0aGUgc2FtZSByZWdhcmRsZXNzIG9mIHRoZSBlbmQgc3RhdHVzLCBzaW5jZSB0aGUKKwkJICog dHJhbnNhY3Rpb24gZGlkIG5vdCBtb2RpZnkgYW55IHR1cGxlcy4KIAkJICovCi0JCWlmICghVHJh bnNhY3Rpb25JZElzVmFsaWQocmllbnRyeS0+cmVtb3RlX3hpZCkpCisJCWlmIChuZWVkc19zdGFy dCkKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCUFzc2VydChyZWxlbnRyeS0+ bG9jYWxfdW5pcXVlX2luZGV4ZXNfY29sbGVjdGVkKTsKKwl9CisKKwlmb3JlYWNoX3B0cihMb2dp Y2FsUmVwU3Vic2NyaWJlcklkeCwgaWR4aW5mbywgcmVsZW50cnktPmxvY2FsX3VuaXF1ZV9pbmRl eGVzKQorCXsKKwkJaW50CQkJY29sdW1ucyA9IGJtc19udW1fbWVtYmVycyhpZHhpbmZvLT5pbmRl eGtleXMpOworCQlib29sCQlzdWl0YWJsZSA9IHRydWU7CisKKwkJQXNzZXJ0KGNvbHVtbnMpOwor CisJCWZvciAoaW50IGkgPSAwOyBpIDwgb3JpZ2luYWxfZGF0YS0+bmNvbHM7IGkrKykKIAkJewot CQkJZnJlZV9yZXBsaWNhX2lkZW50aXR5X2tleShyaWVudHJ5LT5rZXlkYXRhKTsKLQkJCXJlcGxp Y2FfaWRlbnRpdHlfZGVsZXRlX2l0ZW0ocmVwbGljYV9pZGVudGl0eV90YWJsZSwgcmllbnRyeSk7 CisJCQlpZiAoIWJtc19pc19tZW1iZXIoaSwgaWR4aW5mby0+aW5kZXhrZXlzKSkKKwkJCQljb250 aW51ZTsKKworCQkJLyoKKwkJCSAqIFNraXAgaWYgdGhlIGNvbHVtbiBpcyBub3QgY2hhbmdlZC4K KwkJCSAqCisJCQkgKiBYWFg6IE5VTEwgaXMgYWxsb3dlZC4KKwkJCSAqLworCQkJaWYgKG9yaWdp bmFsX2RhdGEtPmNvbHN0YXR1c1tpXSA9PSBMT0dJQ0FMUkVQX0NPTFVNTl9VTkNIQU5HRUQpCisJ CQl7CisJCQkJc3VpdGFibGUgPSBmYWxzZTsKKwkJCQlicmVhazsKKwkJCX0KIAkJfQogCi0JCXJl dHVybjsKLQl9CisJCWlmICghc3VpdGFibGUpCisJCQljb250aW51ZTsKIAotCS8qIFJlY29yZCBh IG5ldyBkZXBlbmRlbmN5IGZvciBzdWJzZXF1ZW50IHRyYW5zYWN0aW9ucyB0byB3YWl0IG9uICov Ci0JcmllbnRyeSA9IHJlcGxpY2FfaWRlbnRpdHlfaW5zZXJ0KHJlcGxpY2FfaWRlbnRpdHlfdGFi bGUsIHJpa2V5LAotCQkJCQkJCQkJICAmZm91bmQpOworCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0 U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKIAotCS8qCi0JICogUmVsZWFzZSB0aGUga2V5IGJ1aWx0 IHRvIHNlYXJjaCB0aGUgZW50cnksIGlmIHRoZSBlbnRyeSBhbHJlYWR5IGV4aXN0cy4KLQkgKi8K LQlpZiAoZm91bmQpCi0JewotCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQocmllbnRyeS0+ cmVtb3RlX3hpZCkpOworCQkvKiBBbGxvY2F0ZSBzcGFjZSBmb3IgcmVwbGljYSBpZGVudGl0eSB2 YWx1ZXMgKi8KKwkJcmlkYXRhID0gcGFsbG9jMF9vYmplY3QoTG9naWNhbFJlcFR1cGxlRGF0YSk7 CisJCXJpZGF0YS0+Y29sdmFsdWVzID0gcGFsbG9jMF9hcnJheShTdHJpbmdJbmZvRGF0YSwgY29s dW1ucyk7CisJCXJpZGF0YS0+Y29sc3RhdHVzID0gcGFsbG9jMF9hcnJheShjaGFyLCBjb2x1bW5z KTsKKwkJcmlkYXRhLT5uY29scyA9IGNvbHVtbnM7CiAKLQkJZWxvZyhERUJVRzEsICJmb3VuZCBj b25mbGljdGluZyByZXBsaWNhIGlkZW50aXR5IGNoYW5nZSBmcm9tICV1IiwKLQkJCSByaWVudHJ5 LT5yZW1vdGVfeGlkKTsKKwkJZm9yIChpbnQgaV9vcmlnaW5hbCA9IDAsIGlfa2V5ID0gMDsgaV9v cmlnaW5hbCA8IG9yaWdpbmFsX2RhdGEtPm5jb2xzOyBpX29yaWdpbmFsKyspCisJCXsKKwkJCWlm ICghYm1zX2lzX21lbWJlcihpX29yaWdpbmFsLCBpZHhpbmZvLT5pbmRleGtleXMpKQorCQkJCWNv bnRpbnVlOwogCi0JCWZyZWVfcmVwbGljYV9pZGVudGl0eV9rZXkocmlrZXkpOworCQkJaWYgKG9y aWdpbmFsX2RhdGEtPmNvbHN0YXR1c1tpX29yaWdpbmFsXSAhPSBMT0dJQ0FMUkVQX0NPTFVNTl9O VUxMKQorCQkJeworCQkJCVN0cmluZ0luZm8Jb3JpZ2luYWxfY29sdmFsdWUgPSAmb3JpZ2luYWxf ZGF0YS0+Y29sdmFsdWVzW2lfb3JpZ2luYWxdOwogCi0JCS8qCi0JCSAqIFJldHVybiBpZiB0aGUg Y3VycmVudCB0cmFuc2FjdGlvbiB3YXMgdGhlIGxhc3Qgb25lIHRvIG1vZGlmeSB0aGUKLQkJICog a2V5LgotCQkgKi8KLQkJaWYgKFRyYW5zYWN0aW9uSWRFcXVhbHMocmllbnRyeS0+cmVtb3RlX3hp ZCwgbmV3X2RlcGVuZGVkX3hpZCkpCi0JCQlyZXR1cm47CisJCQkJaW5pdFN0cmluZ0luZm9FeHQo JnJpZGF0YS0+Y29sdmFsdWVzW2lfa2V5XSwgb3JpZ2luYWxfY29sdmFsdWUtPmxlbiArIDEpOwor CQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnJpZGF0YS0+Y29sdmFsdWVzW2lfa2V5XSwgb3Jp Z2luYWxfY29sdmFsdWUtPmRhdGEpOworCQkJfQogCi0JCWNoZWNrX2FuZF9hcHBlbmRfeGlkX2Rl cGVuZGVuY3koJnJpZW50cnktPnJlbW90ZV94aWQsIGRlcGVuZHNfb25feGlkcyk7Ci0JfQorCQkJ cmlkYXRhLT5jb2xzdGF0dXNbaV9rZXldID0gb3JpZ2luYWxfZGF0YS0+Y29sc3RhdHVzW2lfb3Jp Z2luYWxdOworCQkJaV9rZXkrKzsKKwkJfQogCi0JLyogVXBkYXRlIHRoZSBuZXcgZGVwZW5kZWQg eGlkIGludG8gdGhlIGVudHJ5ICovCi0JcmllbnRyeS0+cmVtb3RlX3hpZCA9IG5ld19kZXBlbmRl ZF94aWQ7CisJCXJpa2V5ID0gcGFsbG9jMF9vYmplY3QoUmVwbGljYUlkZW50aXR5S2V5KTsKKwkJ cmlrZXktPnJlbGlkID0gcmVsaWQ7CisJCXJpa2V5LT5raW5kID0gTE9HSUNBTFJFUF9LRVlfTE9D QUxfVU5JUVVFOworCQlyaWtleS0+ZGF0YSA9IHJpZGF0YTsKKworCQlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY3R4KTsKKworCQljaGVja19hbmRfcmVjb3JkX2tleV9kZXBlbmRlbmN5KHJpa2V5 LCBuZXdfZGVwZW5kZWRfeGlkLCBkZXBlbmRzX29uX3hpZHMpOworCX0KIH0KIAogLyoKQEAgLTEy NTYsNiArMTM5OSw5IEBAIGhhbmRsZV9kZXBlbmRlbmN5X29uX2NoYW5nZShMb2dpY2FsUmVwTXNn VHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcywKIAkJCXJlbGlkID0gbG9naWNhbHJlcF9yZWFkX2lu c2VydCgmY2hhbmdlLCAmbmV3dHVwKTsKIAkJCWNoZWNrX2FuZF9yZWNvcmRfcmlfZGVwZW5kZW5j eShyZWxpZCwgJm5ld3R1cCwgbmV3X2RlcGVuZGVkX3hpZCwKIAkJCQkJCQkJCQkgICAmZGVwZW5k c19vbl94aWRzKTsKKwkJCWNoZWNrX2FuZF9yZWNvcmRfbG9jYWxfa2V5X2RlcGVuZGVuY3kocmVs aWQsICZuZXd0dXAsCisJCQkJCQkJCQkJCQkgIG5ld19kZXBlbmRlZF94aWQsCisJCQkJCQkJCQkJ CQkgICZkZXBlbmRzX29uX3hpZHMpOwogCQkJY2hlY2tfZGVwZW5kZW5jeV9mb3JfcGFyYWxsZWxf c2FmZXR5KHJlbGlkLCBuZXdfZGVwZW5kZWRfeGlkLAogCQkJCQkJCQkJCQkJICZkZXBlbmRzX29u X3hpZHMpOwogCQkJYnJlYWs7CkBAIC0xMjY5LDYgKzE0MTUsMTAgQEAgaGFuZGxlX2RlcGVuZGVu Y3lfb25fY2hhbmdlKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5nSW5mbyBzLAogCQkJ CWNoZWNrX2FuZF9yZWNvcmRfcmlfZGVwZW5kZW5jeShyZWxpZCwgJm9sZHR1cCwgbmV3X2RlcGVu ZGVkX3hpZCwKIAkJCQkJCQkJCQkJICAgJmRlcGVuZHNfb25feGlkcyk7CiAKKwkJCQljaGVja19h bmRfcmVjb3JkX2xvY2FsX2tleV9kZXBlbmRlbmN5KHJlbGlkLCAmb2xkdHVwLAorCQkJCQkJCQkJ CQkJCSAgbmV3X2RlcGVuZGVkX3hpZCwKKwkJCQkJCQkJCQkJCQkgICZkZXBlbmRzX29uX3hpZHMp OworCiAJCQkJY2hlY2tfZGVwZW5kZW5jeV9mb3JfcGFyYWxsZWxfc2FmZXR5KHJlbGlkLCBuZXdf ZGVwZW5kZWRfeGlkLAogCQkJCQkJCQkJCQkJCSAmZGVwZW5kc19vbl94aWRzKTsKIApAQCAtMTI4 NCw2ICsxNDM0LDkgQEAgaGFuZGxlX2RlcGVuZGVuY3lfb25fY2hhbmdlKExvZ2ljYWxSZXBNc2dU eXBlIGFjdGlvbiwgU3RyaW5nSW5mbyBzLAogCiAJCQljaGVja19hbmRfcmVjb3JkX3JpX2RlcGVu ZGVuY3kocmVsaWQsICZuZXd0dXAsIG5ld19kZXBlbmRlZF94aWQsCiAJCQkJCQkJCQkJICAgJmRl cGVuZHNfb25feGlkcyk7CisJCQljaGVja19hbmRfcmVjb3JkX2xvY2FsX2tleV9kZXBlbmRlbmN5 KHJlbGlkLCAmbmV3dHVwLAorCQkJCQkJCQkJCQkJICBuZXdfZGVwZW5kZWRfeGlkLAorCQkJCQkJ CQkJCQkJICAmZGVwZW5kc19vbl94aWRzKTsKIAkJCWNoZWNrX2RlcGVuZGVuY3lfZm9yX3BhcmFs bGVsX3NhZmV0eShyZWxpZCwgbmV3X2RlcGVuZGVkX3hpZCwKIAkJCQkJCQkJCQkJCSAmZGVwZW5k c19vbl94aWRzKTsKIAkJCWJyZWFrOwpAQCAtMTI5Miw2ICsxNDQ1LDkgQEAgaGFuZGxlX2RlcGVu ZGVuY3lfb25fY2hhbmdlKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5nSW5mbyBzLAog CQkJcmVsaWQgPSBsb2dpY2FscmVwX3JlYWRfZGVsZXRlKCZjaGFuZ2UsICZvbGR0dXApOwogCQkJ Y2hlY2tfYW5kX3JlY29yZF9yaV9kZXBlbmRlbmN5KHJlbGlkLCAmb2xkdHVwLCBuZXdfZGVwZW5k ZWRfeGlkLAogCQkJCQkJCQkJCSAgICZkZXBlbmRzX29uX3hpZHMpOworCQkJY2hlY2tfYW5kX3Jl Y29yZF9sb2NhbF9rZXlfZGVwZW5kZW5jeShyZWxpZCwgJm9sZHR1cCwKKwkJCQkJCQkJCQkJCSAg bmV3X2RlcGVuZGVkX3hpZCwKKwkJCQkJCQkJCQkJCSAgJmRlcGVuZHNfb25feGlkcyk7CiAJCQlj aGVja19kZXBlbmRlbmN5X2Zvcl9wYXJhbGxlbF9zYWZldHkocmVsaWQsIG5ld19kZXBlbmRlZF94 aWQsCiAJCQkJCQkJCQkJCQkgJmRlcGVuZHNfb25feGlkcyk7CiAJCQlicmVhazsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9kZWFkbG9jay5jIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9sbWdyL2RlYWRsb2NrLmMKaW5kZXggYjg5NjJkODc1YjYuLjMxYmJmY2YxOTcxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvZGVhZGxvY2suYworKysgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvZGVhZGxvY2suYwpAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUg InN0b3JhZ2UvcHJvY251bWJlci5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAKLQog LyoKICAqIE9uZSBlZGdlIGluIHRoZSB3YWl0cy1mb3IgZ3JhcGguCiAgKgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmggYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaAppbmRleCBiMTA3OWQzZjJmYS4uMjQxYzRkZGEx M2MgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5o CisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCkBAIC0xNiw2 ICsxNiwxMiBAQAogI2luY2x1ZGUgImNhdGFsb2cvaW5kZXguaCIKICNpbmNsdWRlICJyZXBsaWNh dGlvbi9sb2dpY2FscHJvdG8uaCIKIAordHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFN1YnNjcmli ZXJJZHgKK3sKKwlPaWQJCQlpbmRleG9pZDsJLyogT0lEIG9mIHRoZSBsb2NhbCBrZXkgKi8KKwlC aXRtYXBzZXQgICppbmRleGtleXM7CS8qIEJpdG1hcCBvZiBrZXkgY29sdW1ucyAqb24gcmVtb3Rl KiAqLworfSBMb2dpY2FsUmVwU3Vic2NyaWJlcklkeDsKKwogdHlwZWRlZiBzdHJ1Y3QgTG9naWNh bFJlcFJlbE1hcEVudHJ5CiB7CiAJTG9naWNhbFJlcFJlbGF0aW9uIHJlbW90ZXJlbDsJLyoga2V5 IGlzIHJlbW90ZXJlbC5yZW1vdGVpZCAqLwpAQCAtNDYsNiArNTIsMTAgQEAgdHlwZWRlZiBzdHJ1 Y3QgTG9naWNhbFJlcFJlbE1hcEVudHJ5CiAJICovCiAJVHJhbnNhY3Rpb25JZCBsYXN0X2RlcGVu ZGVkX3hpZDsKIAorCS8qIExvY2FsIHVuaXF1ZSBpbmRleGVzLiBVc2VkIGZvciBkZXBlbmRlbmN5 IHRyYWNraW5nICovCisJTGlzdAkgICAqbG9jYWxfdW5pcXVlX2luZGV4ZXM7CisJYm9vbAkJbG9j YWxfdW5pcXVlX2luZGV4ZXNfY29sbGVjdGVkOworCiAJLyoKIAkgKiBXaGV0aGVyIHRoZSByZWxh dGlvbiBjYW4gYmUgYXBwbGllZCBpbiBwYXJhbGxlbCBvciBub3QuIEl0IGlzCiAJICogZGlzdGlu Z2xpc2ggd2hldGhlciBkZWZpbmVkIHRyaWdnZXJzIGFyZSB0aGUgaW1tdXRhYmxlIG9yIG5vdC4K QEAgLTU3LDYgKzY3LDEwIEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBSZWxNYXBFbnRyeQog CSAqIE5vdGUgdGhhdCB3ZSBkbyBub3QgY2hlY2sgdGhlIHVzZXItZGVmaW5lZCBjb25zdHJhaW50 cyBoZXJlLiBQb3N0Z3JlU1FMCiAJICogaGFzIGFscmVhZHkgYXNzdW1lZCB0aGF0IENIRUNLIGNv bnN0cmFpbnRzJyBjb25kaXRpb25zIGFyZSBpbW11dGFibGUgYW5kCiAJICogaGVyZSBmb2xsb3dz IHRoZSBydWxlLgorCSAqCisJICogWFhYOiBBZGRpdG9uYWxseSwgdGhpcyBjYW4gYmUgZmFsc2Ug aWYgdGhlIHJlbGF0aW9uIGhhcyBleHByZXNzaW9uCisJICogaW5kZXhlcy4gQmVjYXVzZSB3ZSBj YW5ub3QgY29tcHV0ZSB0aGUgaGFzaCB2YWx1ZSBmb3IgdGhlIGRlcGVuZGVuY3kKKwkgKiB0cmFj a2luZy4KIAkgKi8KIAljaGFyCQlwYXJhbGxlbF9zYWZlOwogfSBMb2dpY2FsUmVwUmVsTWFwRW50 cnk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wNTBfcGFyYWxsZWxfYXBw bHkucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wNTBfcGFyYWxsZWxfYXBwbHkucGwKaW5k ZXggMDQ0NDFjYTFjZDAuLmFlNTM5Zjg0NjM5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wNTBfcGFyYWxsZWxfYXBwbHkucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDUwX3BhcmFsbGVsX2FwcGx5LnBsCkBAIC0zMTAsNCArMzEwLDY0IEBAICRub2RlX3N1YnNj cmliZXItPndhaXRfZm9yX2xvZyhxci9maW5pc2ggd2FpdGluZyBmb3IgZGVwZW5kZWQgeGlkICR4 aWQvLCAkb2Zmc2V0CiAKICRoLT5xdWVyeV9zYWZlKCJDT01NSVQ7Iik7CiAKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdGhhdCB0aGUg ZGVwZW5kZW5jeSB0cmFja2luZyB3b3JrcyBjb3JyZWN0bHkgZm9yIGxvY2FsIHVuaXF1ZSBpbmRl eGVzIG9uCisjIHN1YnNjcmliZXIgZHVyaW5nIHBhcmFsbGVsIGFwcGx5LgorIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBUcnVuY2F0ZSB0aGUg ZGF0YSBmb3IgdXBjb21pbmcgdGVzdHMKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJUUlVOQ0FURSBUQUJMRSByZWdyZXNzX3RhYjsiKTsKKyRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgncmVncmVzc19zdWInKTsKKworIyBEZWZpbmUgYW4gdW5pcXVlIGlu ZGV4IG9uIHN1YnNjcmliZXIKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorICAgICJDUkVBVEUgSU5ERVggT04gcmVncmVzc190YWIgKHZhbHVlKTsiKTsKKworIyBBdHRh Y2ggYW4gaW5qZWN0aW9uX3BvaW50LiBQYXJhbGxlbCB3b3JrZXJzIHdvdWxkIHdhaXQgYmVmb3Jl IHRoZSBjb21taXQKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3BhcmFsbGVsLXdvcmtlci1iZWZvcmUtY29t bWl0Jywnd2FpdCcpOyIKKyk7CisKKyMgSW5zZXJ0IGEgdHVwbGUgb24gcHVibGlzaGVyLiBQYXJh bGxlbCB3b3JrZXIgd291bGQgd2FpdCBhdCB0aGUgaW5qZWN0aW9uCisjIHBvaW50Ciskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICJJTlNFUlQgSU5UTyByZWdyZXNz X3RhYiBWQUxVRVMgKDEsICd3b3VsZCBjb25mbGljdCcpOyIpOworCisjIFdhaXQgdW50aWwgdGhl IHBhcmFsbGVsIHdvcmtlciBlbnRlcnMgdGhlIGluamVjdGlvbiBwb2ludC4KKyRub2RlX3N1YnNj cmliZXItPndhaXRfZm9yX2V2ZW50KCdsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIHdvcmtl cicsCisJJ3BhcmFsbGVsLXdvcmtlci1iZWZvcmUtY29tbWl0Jyk7CisKKyRvZmZzZXQgPSAtcyAk bm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisjIEluc2VydCB0dXBsZXMgb24gcHVibGlzaGVy IGFnYWluLiBUaGlzIHRyYW5zYWN0aW9uIGlzIHdvdWxkIHdhaXQgYmVjYXVzZSBhbGwKKyMgcGFy YWxsZWwgd29ya2VycyB3YWl0IHRpbGwgdGhlIHByZXZpb3VzbHkgbGF1bmNoZWQgd29ya2VyIGNv bW1pdHMuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICJJTlNF UlQgSU5UTyByZWdyZXNzX3RhYiBWQUxVRVMgKDIsICd3b3VsZCBub3QgY29uZmxpY3QnKTsiKTsK KworIyBWZXJpZnkgdGhlIHBhcmFsbGVsIHdvcmtlciB3YWl0cyBmb3IgdGhlIHRyYW5zYWN0aW9u Ciskc3RyID0gJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL3dhaXQgZm9yIGRlcGVu ZGVkIHhpZCAoWzEtOV1bMC05XSspLywgJG9mZnNldCk7CiskeGlkID0gJHN0ciA9fiAvd2FpdCBm b3IgZGVwZW5kZWQgeGlkIChbMS05XVswLTldKykvOworCisjIEluc2VydCBhIGNvbmZsaWN0aW5n IHR1cGxlIG9uIHB1Ymxpc2hlci4gTGVhZGVyIHdvcmtlciB3b3VsZCBkZXRlY3QgdGhlIGNvbmZs aWN0CisjIGFuZCB3YWl0IGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gY29tbWl0LgorJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyAgICAiSU5TRVJUIElOVE8gcmVncmVzc190 YWIgVkFMVUVTICgzLCAnd291bGQgY29uZmxpY3QnKTsiKTsKKworIyBWZXJpZnkgdGhlIHBhcmFs bGVsIHdvcmtlciB3YWl0cyBmb3IgdGhlIHNhbWUgdHJhbnNhY3Rpb24KKyRub2RlX3N1YnNjcmli ZXItPndhaXRfZm9yX2xvZyhxci93YWl0IGZvciBkZXBlbmRlZCB4aWQgJHhpZC8sICRvZmZzZXQp OworCisjIFdha2V1cCB0aGUgcGFyYWxsZWwgd29ya2VyCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcXFbCisgICAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNo KCdwYXJhbGxlbC13b3JrZXItYmVmb3JlLWNvbW1pdCcpOworICAgIFNFTEVDVCBpbmplY3Rpb25f cG9pbnRzX3dha2V1cCgncGFyYWxsZWwtd29ya2VyLWJlZm9yZS1jb21taXQnKTsKK10pOworCisj IFZlcmlmeSB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gY2FuIGJlIGFwcGxpZWQKKyRub2RlX3N1 YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci9maW5pc2ggd2FpdGluZyBmb3IgZGVwZW5kZWQgeGlk ICR4aWQvLCAkb2Zmc2V0KTsKKworIyBDbGVhbnVwCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggcmVncmVzc190YWJfdmFsdWVfaWR4OyIpOworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHJlZ3Jl c3NfdGFiOyIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdyZWdyZXNzX3N1 YicpOworCiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggZGI4 YmI0ZTFlNDMuLjM0Yzk1OTJlM2U1IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTcw MSw2ICsxNzAxLDcgQEAgTG9naWNhbFJlcEJlZ2luRGF0YQogTG9naWNhbFJlcENvbW1pdERhdGEK IExvZ2ljYWxSZXBDb21taXRQcmVwYXJlZFR4bkRhdGEKIExvZ2ljYWxSZXBDdHhTdHJ1Y3QKK0xv Z2ljYWxSZXBLZXlLaW5kCiBMb2dpY2FsUmVwTXNnVHlwZQogTG9naWNhbFJlcFBhcnRNYXBFbnRy eQogTG9naWNhbFJlcFByZXBhcmVkVHhuRGF0YQpAQCAtMTcxMCw2ICsxNzExLDcgQEAgTG9naWNh bFJlcFJlbGF0aW9uCiBMb2dpY2FsUmVwUm9sbGJhY2tQcmVwYXJlZFR4bkRhdGEKIExvZ2ljYWxS ZXBTZXF1ZW5jZUluZm8KIExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEKK0xvZ2ljYWxSZXBTdWJz Y3JpYmVySWR4CiBMb2dpY2FsUmVwVHVwbGVEYXRhCiBMb2dpY2FsUmVwVHlwCiBMb2dpY2FsUmVw V29ya2VyCi0tIAoyLjQzLjAKCg== --_011_TY4PR01MB17718A4AB7F564C8DB0D6F7DC94102TY4PR01MB17718jp_ Content-Type: application/octet-stream; name="v19-0006-Track-dependencies-for-streamed-transactions.patch" Content-Description: v19-0006-Track-dependencies-for-streamed-transactions.patch Content-Disposition: attachment; filename="v19-0006-Track-dependencies-for-streamed-transactions.patch"; size=10365; creation-date="Thu, 04 Jun 2026 06:54:40 GMT"; modification-date="Thu, 04 Jun 2026 06:58:29 GMT" Content-Transfer-Encoding: base64 RnJvbSA4YTkwZThiN2MxOGNlNmI2NTc4NTUzMGU2MzIxMDY1ZTg0ODU4YzNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBaaGlqaWUgSG91IDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBUdWUsIDIxIEFwciAyMDI2IDE1OjE2OjU5ICswODAwClN1YmplY3Q6IFtQQVRDSCB2MTkg MDYvMTBdIFRyYWNrIGRlcGVuZGVuY2llcyBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zCgpUaGlz IGNvbW1pdCBhbGxvd3MgdHJhY2tpbmcgZGVwZW5kZW5jaWVzIG9mIHN0cmVhbWVkIHRyYW5zYWN0 aW9ucy4KClJlZ2FyZGluZyB0aGUgc3RyZWFtaW5nPW9uIGNhc2UsIGRlcGVuZGVuY3kgdHJhY2tp bmcgaXMgZW5hYmxlZCB3aGlsZSBhcHBseWluZwpzcG9vbGVkIGNoYW5nZXMgZnJvbSBmaWxlcy4K CkluIHRoZSBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZSwgZGVwZW5kZW5jeSB0cmFja2luZyBpcyBw ZXJmb3JtZWQgd2hlbiB0aGUgbGVhZGVyCnNlbmRzIGNoYW5nZXMgdG8gcGFyYWxsZWwgd29ya2Vy cy4gQXBhcnQgZnJvbSBub24tc3RyZWFtZWQgdHJhbnNhY3Rpb25zLCB0aGUKbGVhZGVyIHdhaXRz IGZvciBwYXJhbGxlbCB3b3JrZXJzIHRpbGwgdGhlIGFzc2lnbmVkIHRyYW5zYWN0aW9ucyBhcmUg ZmluaXNoZWQgYXQKQ09NTUlUL1BSRVBBUkUvQUJPUlQ7IHRodXMsIHRoZSBYSUQgb2Ygc3RyZWFt ZWQgdHJhbnNhY3Rpb25zIGlzIG5vdCBjYWNoZWQgYXMKdGhlIGxhc3RseSBoYW5kbGVkIG9uZS4g QWxzbywgc3RyZWFtZWQgdHJhbnNhY3Rpb25zIGFyZSBub3QgcmVjb3JkZWQgYXMKcGFyYWxsZWxp emVkIHRyYW5zYWN0aW9ucyBiZWNhdXNlIHVwY29taW5nIHdvcmtlcnMgZG8gbm90IGhhdmUgdG8g d2FpdCBmb3IgdGhlbS4KLS0tCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVs d29ya2VyLmMgfCAgOCArKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2Vy LmMgICAgICB8IDY0ICsrKysrKysrKysrKysrKy0tLS0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICAxIC0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA1 MF9wYXJhbGxlbF9hcHBseS5wbCB8IDUwICsrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2Vk LCAxMDcgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCAxMDNk YjE4YTI1Yi4uN2NlZDI2MTQ0NWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCkBAIC0xNjUsNyArMTY1LDkgQEAKICAq IGtleSkgYXMgYW5vdGhlciBvbmdvaW5nIHRyYW5zYWN0aW9uIChzZWUgaGFuZGxlX2RlcGVuZGVu Y3lfb25fY2hhbmdlIGZvcgogICogZGV0YWlscykuIElmIHNvLCB0aGUgbGVhZGVyIHNlbmRzIGEg bGlzdCBvZiBkZXBlbmRlbnQgdHJhbnNhY3Rpb24gSURzIHRvIHRoZQogICogcGFyYWxsZWwgd29y a2VyLCBpbmRpY2F0aW5nIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBtdXN0IHdhaXQg Zm9yCi0gKiB0aGVzZSB0cmFuc2FjdGlvbnMgdG8gY29tbWl0IGJlZm9yZSBwcm9jZWVkaW5nLgor ICogdGhlc2UgdHJhbnNhY3Rpb25zIHRvIGNvbW1pdCBiZWZvcmUgcHJvY2VlZGluZy4gSWYgdHJh bnNhY3Rpb25zIGFyZSBzdHJlYW1lZAorICogYnV0IGxlYWRlciBkZWNpZWRlcyBub3QgdG8gYXNz aWduIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIGRlcGVuZGVuY2llcyBhcmUKKyAqIHZlcmlmaWVk IHdoZW4gdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KICAqCiAgKiBUcmFja2luZyBkZXBl bmRlbmNpZXMgaXMgbmVjZXNzYXJ5IGV2ZW4gd2hlbiBjb21taXQgb3JkZXIgaXMgcHJlc2VydmVk LgogICogQ29uc2lkZXIgdHdvIHRyYW5zYWN0aW9uczogVFgtMSAoSU5TRVJUIHJvdyAxKSBhbmQg VFgtMiAoREVMRVRFIHJvdyAxKS4gSWYKQEAgLTE4NTUsNiArMTg1NywxMCBAQCBwYV9zdHJlYW1f YWJvcnQoTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0YSkKIAlUcmFuc2FjdGlv bklkIHhpZCA9IGFib3J0X2RhdGEtPnhpZDsKIAlUcmFuc2FjdGlvbklkIHN1YnhpZCA9IGFib3J0 X2RhdGEtPnN1YnhpZDsKIAorCS8qIFN0cmVhbWVkIHRyYW5zYWN0aW9ucyB3b24ndCBiZSByZWdp c3RlcmVkICovCisJQXNzZXJ0KCFkc2hhc2hfZmluZChwYXJhbGxlbGl6ZWRfdHhucywgJnhpZCwg ZmFsc2UpICYmCisJCSAgICFkc2hhc2hfZmluZChwYXJhbGxlbGl6ZWRfdHhucywgJnN1YnhpZCwg ZmFsc2UpKTsKKwogCS8qCiAJICogVXBkYXRlIG9yaWdpbiBzdGF0ZSBzbyB3ZSBjYW4gcmVzdGFy dCBzdHJlYW1pbmcgZnJvbSBjb3JyZWN0IHBvc2l0aW9uCiAJICogaW4gY2FzZSBvZiBjcmFzaC4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDU1MzU4NDFjNDA5 Li5mZjFjNzE0MmYxOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5j CkBAIC0xMjkwLDggKzEyOTAsNiBAQCBoYW5kbGVfZGVwZW5kZW5jeV9vbl9jaGFuZ2UoTG9naWNh bFJlcE1zZ1R5cGUgYWN0aW9uLCBTdHJpbmdJbmZvIHMsCiAJICovCiAJaWYgKHdpbmZvID09IE5V TEwpCiAJewotCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKG5ld19kZXBlbmRlZF94aWQp KTsKLQogCQlmb3JlYWNoX3hpZCh4aWQsIGRlcGVuZHNfb25feGlkcykKIAkJCXBhX3dhaXRfZm9y X2RlcGVuZGVkX3RyYW5zYWN0aW9uKHhpZCk7CiAJfQpAQCAtMTQ5OCwxMyArMTQ5NiwyMiBAQCBo YW5kbGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24oTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uLCBTdHJp bmdJbmZvIHMpCiAJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CiAJCQlBc3Nl cnQod2luZm8pOwogCisJCQkvKgorCQkJICogUGFzcyBJbnZhbGlkVHJhbnNhY3Rpb25JZCB0byBz a2lwIGRlcGVuZGVuY3kgcmVjb3JkaW5nIGZvciB0aGlzCisJCQkgKiBjaGFuZ2UuIFN0cmVhbWlu ZyB0cmFuc2FjdGlvbnMgYXJlIGFzc3VtZWQgbm90IHRvIGNvbmZsaWN0IHdpdGgKKwkJCSAqIG90 aGVyIHRyYW5zYWN0aW9ucywgc28gc3Vic2VxdWVudCB0cmFuc2FjdGlvbnMgZG8gbm90IG5lZWQg dG8KKwkJCSAqIHdhaXQgZm9yIHRoZW0gdG8gZmluaXNoLgorCQkJICovCisJCQloYW5kbGVfZGVw ZW5kZW5jeV9vbl9jaGFuZ2UoYWN0aW9uLCBzLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwgd2luZm8p OworCiAJCQkvKgogCQkJICogWFhYIFRoZSBwdWJsaXNoZXIgc2lkZSBkb2Vzbid0IGFsd2F5cyBz ZW5kIHJlbGF0aW9uL3R5cGUgdXBkYXRlCiAJCQkgKiBtZXNzYWdlcyBhZnRlciB0aGUgc3RyZWFt aW5nIHRyYW5zYWN0aW9uLCBzbyBhbHNvIHVwZGF0ZSB0aGUKIAkJCSAqIHJlbGF0aW9uL3R5cGUg aW4gbGVhZGVyIGFwcGx5IHdvcmtlci4gU2VlIGZ1bmN0aW9uCiAJCQkgKiBjbGVhbnVwX3JlbF9z eW5jX2NhY2hlLgogCQkJICovCi0JCQlpZiAocGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMt PmRhdGEpKQorCQkJaWYgKCF3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMgJiYKKwkJCQlwYV9zZW5k X2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCiAJCQkJcmV0dXJuIChhY3Rpb24gIT0gTE9H SUNBTF9SRVBfTVNHX1JFTEFUSU9OICYmCiAJCQkJCQlhY3Rpb24gIT0gTE9HSUNBTF9SRVBfTVNH X1RZUEUpOwogCkBAIC0yNjM1LDYgKzI2NDIsMTMgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVw YXJlKFN0cmluZ0luZm8gcykKIAkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoTXlMb2dpY2FsUmVw V29ya2VyLT5zdHJlYW1fZmlsZXNldCwKIAkJCQkJCQkJICAgcHJlcGFyZV9kYXRhLnhpZCwgcHJl cGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKIAorCQkJLyogV2FpdCB1bnRpbCB0aGUgbGFzdCB0cmFu c2FjdGlvbiBmaW5pc2hlcyAqLworCQkJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGxhc3RfcGFy YWxsZWxpemVkX3JlbW90ZV94aWQpKQorCQkJeworCQkJCXBhX3dhaXRfZm9yX2RlcGVuZGVkX3Ry YW5zYWN0aW9uKGxhc3RfcGFyYWxsZWxpemVkX3JlbW90ZV94aWQpOworCQkJCWxhc3RfcGFyYWxs ZWxpemVkX3JlbW90ZV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwkJCX0KKwogCQkJLyog TWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCiAJCQlhcHBseV9oYW5kbGVfcHJl cGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsKIApAQCAtMjY1OCw2ICsyNjcyLDEyIEBAIGFw cGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJCWNhc2UgVFJBTlNfTEVB REVSX1NFTkRfVE9fUEFSQUxMRUw6CiAJCQlBc3NlcnQod2luZm8pOwogCisJCQkvKgorCQkJICog QnVpbGQgYSBkZXBlbmRlbmN5IGJldHdlZW4gdGhpcyB0cmFuc2FjdGlvbiBhbmQgdGhlIGxhc3Rs eQorCQkJICogY29tbWl0dGVkIHRyYW5zYWN0aW9uIHRvIHByZXNlcnZlIHRoZSBjb21taXQgb3Jk ZXIuCisJCQkgKi8KKwkJCWJ1aWxkX2RlcGVuZGVuY3lfd2l0aF9sYXN0X2NvbW1pdHRlZF90eG4o d2luZm8pOworCiAJCQlpZiAocGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpKQog CQkJewogCQkJCS8qIEZpbmlzaCBwcm9jZXNzaW5nIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24u ICovCkBAIC0yNzI0LDYgKzI3NDQsMTEgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0 cmluZ0luZm8gcykKIAogCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CiAKKwkvKgorCSAqIE5v IG5lZWQgdG8gdXBkYXRlIHRoZSBsYXN0X3BhcmFsbGVsaXplZF9yZW1vdGVfeGlkIGhlcmUgYmVj YXVzZSBsZWFkZXIKKwkgKiB3b3JrZXIgYWx3YXlzIHdhaXQgdW50aWwgc3RyZWFtZWQgdHJhbnNh Y3Rpb25zIGZpbmlzaC4KKwkgKi8KKwogCS8qCiAJICogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQg YXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbCwgYXMgd2VsbCBhcwogCSAqIGFueSBu ZXdseSBhZGRlZCB0YWJsZXMgb3Igc2VxdWVuY2VzLgpAQCAtMjgzNywxNyArMjg2Miw4IEBAIGFw cGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogCiAJc2V0X2FwcGx5X2Vycm9y X2NvbnRleHRfeGFjdChzdHJlYW1feGlkLCBJbnZhbGlkWExvZ1JlY1B0cik7CiAKLQkvKgotCSAq IFRyeSB0byBhbGxvY2F0ZSBhIHdvcmtlciBmb3IgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4K LQkgKgotCSAqIFRPRE86IFN1cHBvcnQgYXNzaWduaW5nIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMg dG8gcGFyYWxsZWwgYXBwbHkgd29ya2VycwotCSAqIGV2ZW4gd2hlbiBub24tc3RyZWFtaW5nIHRy YW5zYWN0aW9ucyBhcmUgcnVubmluZyBhbmQgYmV0dGVyIGRlcGVuZGVuY3kKLQkgKiBoYW5kbGlu ZyBiZXR3ZWVuIHN0cmVhbWluZyBhbmQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMuCi0JICov Ci0JaWYgKGZpcnN0X3NlZ21lbnQgJiYKLQkJYW1fbGVhZGVyX2FwcGx5X3dvcmtlcigpICYmCi0J CSghVHJhbnNhY3Rpb25JZElzVmFsaWQobGFzdF9wYXJhbGxlbGl6ZWRfcmVtb3RlX3hpZCkgfHwK LQkJIHBhX3RyYW5zYWN0aW9uX2NvbW1pdHRlZChsYXN0X3BhcmFsbGVsaXplZF9yZW1vdGVfeGlk KSkpCisJLyogVHJ5IHRvIGFsbG9jYXRlIGEgd29ya2VyIGZvciB0aGUgc3RyZWFtaW5nIHRyYW5z YWN0aW9uLiAqLworCWlmIChmaXJzdF9zZWdtZW50KQogCQlwYV9hbGxvY2F0ZV93b3JrZXIoc3Ry ZWFtX3hpZCwgdHJ1ZSk7CiAKIAlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlf YWN0aW9uKHN0cmVhbV94aWQsICZ3aW5mbyk7CkBAIC0zNTExLDYgKzM1MjcsMTMgQEAgYXBwbHlf aGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQogCQkJYXBwbHlfc3Bvb2xlZF9tZXNz YWdlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0LCB4aWQsCiAJCQkJCQkJCSAg IGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOwogCisJCQkvKiBXYWl0IHVudGlsIHRoZSBsYXN0IHRy YW5zYWN0aW9uIGZpbmlzaGVzICovCisJCQlpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQobGFzdF9w YXJhbGxlbGl6ZWRfcmVtb3RlX3hpZCkpCisJCQl7CisJCQkJcGFfd2FpdF9mb3JfZGVwZW5kZWRf dHJhbnNhY3Rpb24obGFzdF9wYXJhbGxlbGl6ZWRfcmVtb3RlX3hpZCk7CisJCQkJbGFzdF9wYXJh bGxlbGl6ZWRfcmVtb3RlX3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCQkJfQorCiAJCQlh cHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CiAKIAkJCS8qIFVubGlu ayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8K QEAgLTM1MjIsNiArMzU0NSwxOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJ bmZvIHMpCiAJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CiAJCQlBc3NlcnQo d2luZm8pOwogCisJCQkvKgorCQkJICogQXBhcnQgZnJvbSBub24tc3RyZWFtaW5nIGNhc2UsIG5v IG5lZWQgdG8gbWFyayB0aGlzIHRyYW5zYWN0aW9uCisJCQkgKiBhcyBwYXJhbGxlbGl6ZWQuIEJl Y2F1c2UgdGhlIGxlYWRlciB3YWl0cyB1bnRpbCB0aGUgc3RyZWFtZWQKKwkJCSAqIHRyYW5zYWN0 aW9uIGlzIGNvbW1pdHRlZCB0aHVzIGNvbW1pdCBvcmRlcmluZyBpcyBhbHdheXMKKwkJCSAqIHBy ZXNlcnZlZC4KKwkJCSAqLworCisJCQkvKgorCQkJICogQnVpbGQgYSBkZXBlbmRlbmN5IGJldHdl ZW4gdGhpcyB0cmFuc2FjdGlvbiBhbmQgdGhlIGxhc3RseQorCQkJICogY29tbWl0dGVkIHRyYW5z YWN0aW9uIHRvIHByZXNlcnZlIHRoZSBjb21taXQgb3JkZXIuCisJCQkgKi8KKwkJCWJ1aWxkX2Rl cGVuZGVuY3lfd2l0aF9sYXN0X2NvbW1pdHRlZF90eG4od2luZm8pOworCiAJCQlpZiAocGFfc2Vu ZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpKQogCQkJewogCQkJCS8qIEZpbmlzaCBwcm9j ZXNzaW5nIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IDAyYTE2NWNjYzBkLi4zZGRlODk5ZjQ2NSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTM3MCw3ICszNzAs NiBAQCBleHRlcm4gdm9pZCBwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJpYWxpemUoUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKndpbmZvLAogZXh0ZXJuIHZvaWQgcGFfc2V0X3hhY3Rfc3RhdGUoUGFy YWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCwKIAkJCQkJCQkgIFBhcmFsbGVsVHJhbnNT dGF0ZSB4YWN0X3N0YXRlKTsKIGV4dGVybiB2b2lkIHBhX3NldF9zdHJlYW1fYXBwbHlfd29ya2Vy KFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyk7Ci0KIGV4dGVybiB2b2lkIHBhX3N0YXJ0 X3N1YnRyYW5zKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQsCiAJCQkJCQkJICBUcmFuc2FjdGlv bklkIHRvcF94aWQpOwogZXh0ZXJuIHZvaWQgcGFfcmVzZXRfc3VidHJhbnModm9pZCk7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wNTBfcGFyYWxsZWxfYXBwbHkucGwgYi9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wNTBfcGFyYWxsZWxfYXBwbHkucGwKaW5kZXggYTdiYmM4 ZTU5YzkuLjA0NDQxY2ExY2QwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w NTBfcGFyYWxsZWxfYXBwbHkucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDUwX3Bh cmFsbGVsX2FwcGx5LnBsCkBAIC0yNjAsNCArMjYwLDU0IEBAICRub2RlX3N1YnNjcmliZXItPndh aXRfZm9yX2xvZyhxci9maW5pc2ggd2FpdGluZyBmb3IgZGVwZW5kZWQgeGlkICR4aWQvLCAkb2Zm c2V0CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBB UkVEICdyZWdyZXNzX3ByZXBhcmUnOyIpOwogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCdyZWdyZXNzX3N1YicpOwogCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHRoYXQgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyByZXNw ZWN0IGNvbW1pdCBvcmRlciBwcmVzZXJ2YXRpb24gd2hlbgorIyBub24tc3RyZWFtaW5nIHRyYW5z YWN0aW9ucyBhcmUgYmVpbmcgYXBwbGllZCBpbiBwYXJhbGxlbCB3b3JrZXJzLgorIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworJG5vZGVfcHVibGlz aGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKyAgICJsb2dpY2FsX2RlY29kaW5n X3dvcmtfbWVtID0gNjRrQiIpOworJG5vZGVfcHVibGlzaGVyLT5yZWxvYWQ7CisjIFJ1biBhIHF1 ZXJ5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSByZWxvYWQgaGFzIHRha2VuIGVmZmVjdC4KKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgMSIpOworCisjIEF0dGFj aCB0aGUgaW5qZWN0aW9uX3BvaW50IGFnYWluCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdwYXJhbGxlbC13 b3JrZXItYmVmb3JlLWNvbW1pdCcsJ3dhaXQnKTsiCispOworCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICJJTlNFUlQgSU5UTyByZWdyZXNzX3RhYiBWQUxVRVMg KGdlbmVyYXRlX3Nlcmllcyg3MSwgODApLCAndGVzdCcpOyIpOworCisjIFdhaXQgdW50aWwgdGhl IHBhcmFsbGVsIHdvcmtlciBlbnRlcnMgdGhlIGluamVjdGlvbiBwb2ludC4KKyRub2RlX3N1YnNj cmliZXItPndhaXRfZm9yX2V2ZW50KCdsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIHdvcmtl cicsCisJJ3BhcmFsbGVsLXdvcmtlci1iZWZvcmUtY29tbWl0Jyk7CisKKyMgUnVuIGEgdHJhbnNh Y3Rpb24gd2hpY2ggd291bGQgYmUgc3RyZWFtZWQKK215ICRoID0gJG5vZGVfcHVibGlzaGVyLT5i YWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKworJG9mZnNl dCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRoLT5xdWVyeV9zYWZlKAorCXF7 CitCRUdJTjsKK1VQREFURSByZWdyZXNzX3RhYiBTRVQgdmFsdWUgPSAnc3RyZWFtZWQtdXBkYXRl ZCcgV0hFUkUgaWQgQkVUV0VFTiA3MSBBTkQgODA7CitJTlNFUlQgSU5UTyByZWdyZXNzX3RhYiBW QUxVRVMgKGdlbmVyYXRlX3NlcmllcygxMDAsIDUxMDApLCAnc3RyZWFtZWQnKTsKK30pOworCisj IFZlcmlmeSB0aGUgcGFyYWxsZWwgd29ya2VyIHdhaXRzIGZvciB0aGUgdHJhbnNhY3Rpb24KKyRz dHIgPSAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvd2FpdCBmb3IgZGVwZW5kZWQg eGlkIChbMS05XVswLTldKykvLCAkb2Zmc2V0KTsKKyR4aWQgPSAkc3RyID1+IC93YWl0IGZvciBk ZXBlbmRlZCB4aWQgKFsxLTldWzAtOV0rKS87CisKKyMgV2FrZXVwIHRoZSBwYXJhbGxlbCB3b3Jr ZXIKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcVsKKyAgICBTRUxF Q1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3BhcmFsbGVsLXdvcmtlci1iZWZvcmUtY29tbWl0 Jyk7CisgICAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdwYXJhbGxlbC13b3JrZXIt YmVmb3JlLWNvbW1pdCcpOworXSk7CisKKyMgVmVyaWZ5IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlv biBjYW4gYmUgYXBwbGllZAorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL2Zpbmlz aCB3YWl0aW5nIGZvciBkZXBlbmRlZCB4aWQgJHhpZC8sICRvZmZzZXQpOworCiskaC0+cXVlcnlf c2FmZSgiQ09NTUlUOyIpOworCiBkb25lX3Rlc3RpbmcoKTsKLS0gCjIuNDMuMAoK --_011_TY4PR01MB17718A4AB7F564C8DB0D6F7DC94102TY4PR01MB17718jp_ Content-Type: application/octet-stream; name="v19-0007-Wait-applying-transaction-if-one-of-user-defined.patch" Content-Description: v19-0007-Wait-applying-transaction-if-one-of-user-defined.patch Content-Disposition: attachment; filename="v19-0007-Wait-applying-transaction-if-one-of-user-defined.patch"; size=12166; creation-date="Thu, 04 Jun 2026 06:54:40 GMT"; modification-date="Thu, 04 Jun 2026 06:58:29 GMT" Content-Transfer-Encoding: base64 RnJvbSA1NGRhNjdjZTQ3YmU3MmQ4MWIyYjdmY2JkMmNmODM3MGI0ODUzOTI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBaaGlqaWUgSG91IDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBUaHUsIDQgSnVuIDIwMjYgMTA6MjY6MTQgKzA4MDAKU3ViamVjdDogW1BBVENIIHYxOSAw Ny8xMF0gV2FpdCBhcHBseWluZyB0cmFuc2FjdGlvbiBpZiBvbmUgb2YgdXNlci1kZWZpbmVkCiB0 cmlnZ2VycyBpcyBpbW11dGFibGUKClNpbmNlIG1hbnkgcGFyYWxsZWwgd29ya2VycyBhcHBseSB0 cmFuc2FjdGlvbnMsIHRyaWdnZXJzIGZvciByZWxhdGlvbnMgY2FuIGFsc28KYmUgZmlyZWQgaW4g cGFyYWxsZWwsIHdoaWNoIG1heSBvYnRhaW4gdW5leHBlY3RlZCByZXN1bHRzLiBUbyBtYWtlIGl0 IHNhZmUsCnBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgd2FpdCBmb3IgdGhlIHByZXZpb3VzbHkgZGlz cGF0Y2hlZCB0cmFuc2FjdGlvbiBiZWZvcmUKYXBwbHlpbmcgY2hhbmdlcyB0byB0aGUgcmVsYXRp b24gdGhhdCBoYXMgbXV0YWJsZSB0cmlnZ2Vycy4KLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3JlbGF0aW9uLmMgfCAxMjMgKysrKysrKysrKysrKysrKysrLS0tCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgfCAgNjYgKysrKysrKysrKysKIHNy Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oICB8ICAyMCArKysrCiAzIGZp bGVzIGNoYW5nZWQsIDE5NSBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKaW5kZXggZTFjZTE4M2RmZDMuLmVl Yjg1ZjhjYzVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jl bGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5j CkBAIC0yMSw3ICsyMSw5IEBACiAjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCiAjaW5jbHVkZSAi YWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRl ICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9y ZWwuaCIKKyNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Iv ZXhlY3V0b3IuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJyZXBs aWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCIKQEAgLTE2MCw2ICsxNjIsMTAgQEAgbG9naWNhbHJl cF9yZWxtYXBfZnJlZV9lbnRyeShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5KQogICoKICAq IENhbGxlZCB3aGVuIG5ldyByZWxhdGlvbiBtYXBwaW5nIGlzIHNlbnQgYnkgdGhlIHB1Ymxpc2hl ciB0byB1cGRhdGUKICAqIG91ciBleHBlY3RlZCB2aWV3IG9mIGluY29taW5nIGRhdGEgZnJvbSBz YWlkIHB1Ymxpc2hlci4KKyAqCisgKiBOb3RlIHRoYXQgd2UgZG8gbm90IGNoZWNrIHRoZSB1c2Vy LWRlZmluZWQgY29uc3RyYWludHMgaGVyZS4gUG9zdGdyZVNRTCBoYXMKKyAqIGFscmVhZHkgYXNz dW1lZCB0aGF0IENIRUNLIGNvbnN0cmFpbnRzJyBjb25kaXRpb25zIGFyZSBpbW11dGFibGUgYW5k IGhlcmUKKyAqIGZvbGxvd3MgdGhlIHJ1bGUuCiAgKi8KIHZvaWQKIGxvZ2ljYWxyZXBfcmVsbWFw X3VwZGF0ZShMb2dpY2FsUmVwUmVsYXRpb24gKnJlbW90ZXJlbCkKQEAgLTIwOSw2ICsyMTUsOCBA QCBsb2dpY2FscmVwX3JlbG1hcF91cGRhdGUoTG9naWNhbFJlcFJlbGF0aW9uICpyZW1vdGVyZWwp CiAJCShyZW1vdGVyZWwtPnJlbGtpbmQgPT0gMCkgPyBSRUxLSU5EX1JFTEFUSU9OIDogcmVtb3Rl cmVsLT5yZWxraW5kOwogCiAJZW50cnktPnJlbW90ZXJlbC5hdHRrZXlzID0gYm1zX2NvcHkocmVt b3RlcmVsLT5hdHRrZXlzKTsKKworCWVudHJ5LT5wYXJhbGxlbF9zYWZlID0gTE9HSUNBTFJFUF9Q QVJBTExFTF9VTktOT1dOOwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogfQogCkBA IC0zNTQsMjcgKzM2Miw3OSBAQCBsb2dpY2FscmVwX3JlbF9tYXJrX3VwZGF0YWJsZShMb2dpY2Fs UmVwUmVsTWFwRW50cnkgKmVudHJ5KQogfQogCiAvKgotICogT3BlbiB0aGUgbG9jYWwgcmVsYXRp b24gYXNzb2NpYXRlZCB3aXRoIHRoZSByZW1vdGUgb25lLgorICogQ2hlY2sgYWxsIGxvY2FsIHRy aWdnZXJzIGZvciB0aGUgcmVsYXRpb24gdG8gc2VlIHRoZSBwYXJhbGxlbGl6YWJpbGl0eS4KICAq Ci0gKiBSZWJ1aWxkcyB0aGUgUmVsY2FjaGUgbWFwcGluZyBpZiBpdCB3YXMgaW52YWxpZGF0ZWQg YnkgbG9jYWwgRERMLgorICogV2UgcmVnYXJkIHJlbGF0aW9ucyBhcyBhcHBsaWNhYmxlIGluIHBh cmFsbGVsIGlmIGFsbCB0cmlnZ2VycyBhcmUgaW1tdXRhYmxlLgorICogUmVzdWx0IGlzIGRpcmVj dGx5IHNldCB0byBMb2dpY2FsUmVwUmVsTWFwRW50cnk6OnBhcmFsbGVsX3NhZmUuCiAgKi8KLUxv Z2ljYWxSZXBSZWxNYXBFbnRyeSAqCi1sb2dpY2FscmVwX3JlbF9vcGVuKExvZ2ljYWxSZXBSZWxJ ZCByZW1vdGVpZCwgTE9DS01PREUgbG9ja21vZGUpCitzdGF0aWMgdm9pZAorY2hlY2tfZGVmaW5l ZF90cmlnZ2VycyhMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5KQoreworCVRyaWdnZXJEZXNj ICp0cmlnZGVzYyA9IGVudHJ5LT5sb2NhbHJlbC0+dHJpZ2Rlc2M7CisKKwkvKiBRdWljayBleGl0 IGlmIHRyaWZmZXIgaXMgbm90IGRlZmluZWQgKi8KKwlpZiAodHJpZ2Rlc2MgPT0gTlVMTCkKKwl7 CisJCWVudHJ5LT5wYXJhbGxlbF9zYWZlID0gTE9HSUNBTFJFUF9QQVJBTExFTF9TQUZFOworCQly ZXR1cm47CisJfQorCisJLyogU2VlayB0cmlnZ2VycyBvbmUgYnkgb25lIHRvIHNlZSB0aGUgdm9s YXRpbGl0eSAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgdHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBp KyspCisJeworCQlUcmlnZ2VyICAgICp0cmlnZ2VyID0gJnRyaWdkZXNjLT50cmlnZ2Vyc1tpXTsK KworCQlBc3NlcnQoT2lkSXNWYWxpZCh0cmlnZ2VyLT50Z2ZvaWQpKTsKKworCQkvKiBTa2lwIGlm IHRoZSB0cmlnZ2VyIGlzIG5vdCBlbmFibGVkIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uICovCisJ CWlmICh0cmlnZ2VyLT50Z2VuYWJsZWQgPT0gVFJJR0dFUl9ESVNBQkxFRCB8fAorCQkJdHJpZ2dl ci0+dGdlbmFibGVkID09IFRSSUdHRVJfRklSRVNfT05fT1JJR0lOKQorCQkJY29udGludWU7CisK KwkJLyogQ2hlY2sgdGhlIHZvbGF0aWxpdHkgb2YgdGhlIHRyaWdnZXIuIEV4aXQgaWYgaXQgaXMg bm90IGltbXV0YWJsZSAqLworCQlpZiAoZnVuY192b2xhdGlsZSh0cmlnZ2VyLT50Z2ZvaWQpICE9 IFBST1ZPTEFUSUxFX0lNTVVUQUJMRSkKKwkJeworCQkJZW50cnktPnBhcmFsbGVsX3NhZmUgPSBM T0dJQ0FMUkVQX1BBUkFMTEVMX1JFU1RSSUNURUQ7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwkv KiBBbGwgdHJpZ2dlcnMgYXJlIGltbXV0YWJsZSwgc2V0IGFzIHBhcmFsbGVsIHNhZmUgKi8KKwll bnRyeS0+cGFyYWxsZWxfc2FmZSA9IExPR0lDQUxSRVBfUEFSQUxMRUxfU0FGRTsKK30KKworLyoK KyAqIEFjdHVhbCB3b3JraG9yc2UgZm9yIGxvZ2ljYWxyZXBfcmVsX29wZW4oKS4KKyAqCisgKiBD YWxsZXIgbXVzdCBzcGVjaWZ5ICplaXRoZXIqIGVudHJ5IG9yIGtleS4gSWYgdGhlIGVudHJ5IGlz IHNwZWNpZmllZCwgaXRzCisgKiBhdHRyaWJ1dGVzIGFyZSBmaWxsZWQgYW5kIHJldHVybmVkLiBU aGUgbG9naWNhbCByZWxhdGlvbiBpcyBrZXB0IG9wZW5pbmcuCisgKiBJZiB0aGUga2V5IGlzIGdp dmVuLCB0aGUgY29ycmVzcG9uZGluZyBlbnRyeSBpcyBmaXJzdCBzZWFyY2hlZCBpbiB0aGUgaGFz aAorICogdGFibGUgYW5kIHByb2Nlc3NlZCBhcyBpbiB0aGUgYWJvdmUgY2FzZS4gQXQgdGhlIGVu ZCwgbG9naWNhbCByZXBsaWNhdGlvbiBpcworICogY2xvc2VkLgorICAqLwordm9pZAorbG9naWNh bHJlcF9yZWxfbG9hZChMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5LCBMb2dpY2FsUmVwUmVs SWQgcmVtb3RlaWQsCisJCQkJCUxPQ0tNT0RFIGxvY2ttb2RlKQogewotCUxvZ2ljYWxSZXBSZWxN YXBFbnRyeSAqZW50cnk7Ci0JYm9vbAkJZm91bmQ7CiAJTG9naWNhbFJlcFJlbGF0aW9uICpyZW1v dGVyZWw7CiAKLQlpZiAoTG9naWNhbFJlcFJlbE1hcCA9PSBOVUxMKQotCQlsb2dpY2FscmVwX3Jl bG1hcF9pbml0KCk7CisJQXNzZXJ0KChlbnRyeSAmJiAhcmVtb3RlaWQpIHx8ICghZW50cnkgJiYg cmVtb3RlaWQpKTsKIAotCS8qIFNlYXJjaCBmb3IgZXhpc3RpbmcgZW50cnkuICovCi0JZW50cnkg PSBoYXNoX3NlYXJjaChMb2dpY2FsUmVwUmVsTWFwLCAmcmVtb3RlaWQsCi0JCQkJCQlIQVNIX0ZJ TkQsICZmb3VuZCk7CisJaWYgKCFlbnRyeSkKKwl7CisJCWJvb2wJCWZvdW5kOwogCi0JaWYgKCFm b3VuZCkKLQkJZWxvZyhFUlJPUiwgIm5vIHJlbGF0aW9uIG1hcCBlbnRyeSBmb3IgcmVtb3RlIHJl bGF0aW9uIElEICV1IiwKLQkJCSByZW1vdGVpZCk7CisJCWlmIChMb2dpY2FsUmVwUmVsTWFwID09 IE5VTEwpCisJCQlsb2dpY2FscmVwX3JlbG1hcF9pbml0KCk7CisKKwkJLyogU2VhcmNoIGZvciBl eGlzdGluZyBlbnRyeS4gKi8KKwkJZW50cnkgPSBoYXNoX3NlYXJjaChMb2dpY2FsUmVwUmVsTWFw LCAmcmVtb3RlaWQsCisJCQkJCQkJSEFTSF9GSU5ELCAmZm91bmQpOworCisJCWlmICghZm91bmQp CisJCQllbG9nKEVSUk9SLCAibm8gcmVsYXRpb24gbWFwIGVudHJ5IGZvciByZW1vdGUgcmVsYXRp b24gSUQgJXUiLAorCQkJCSByZW1vdGVpZCk7CisJfQogCiAJcmVtb3RlcmVsID0gJmVudHJ5LT5y ZW1vdGVyZWw7CiAKQEAgLTUwMCw2ICs1NjAsMTMgQEAgbG9naWNhbHJlcF9yZWxfb3BlbihMb2dp Y2FsUmVwUmVsSWQgcmVtb3RlaWQsIExPQ0tNT0RFIGxvY2ttb2RlKQogCQllbnRyeS0+bG9jYWxp bmRleG9pZCA9IEZpbmRMb2dpY2FsUmVwTG9jYWxJbmRleChlbnRyeS0+bG9jYWxyZWwsIHJlbW90 ZXJlbCwKIAkJCQkJCQkJCQkJCQkJZW50cnktPmF0dHJtYXApOwogCisJCS8qCisJCSAqIExlYWRl ciBtdXN0IGFsc28gY29sbGVjdCBhbGwgbG9jYWwgdW5pcXVlIGluZGV4ZXMgZm9yIGRlcGVuZGVu Y3kKKwkJICogdHJhY2tpbmcuCisJCSAqLworCQlpZiAoYW1fbGVhZGVyX2FwcGx5X3dvcmtlcigp KQorCQkJY2hlY2tfZGVmaW5lZF90cmlnZ2VycyhlbnRyeSk7CisKIAkJZW50cnktPmxvY2FscmVs dmFsaWQgPSB0cnVlOwogCX0KIApAQCAtNTA4LDYgKzU3NSwzNCBAQCBsb2dpY2FscmVwX3JlbF9v cGVuKExvZ2ljYWxSZXBSZWxJZCByZW1vdGVpZCwgTE9DS01PREUgbG9ja21vZGUpCiAJCQkJCQkJ CQkJCSAgIGVudHJ5LT5sb2NhbHJlbG9pZCwKIAkJCQkJCQkJCQkJICAgJmVudHJ5LT5zdGF0ZWxz bik7CiAKKwlpZiAocmVtb3RlaWQpCisJCWxvZ2ljYWxyZXBfcmVsX2Nsb3NlKGVudHJ5LCBsb2Nr bW9kZSk7Cit9CisKKy8qCisgKiBPcGVuIHRoZSBsb2NhbCByZWxhdGlvbiBhc3NvY2lhdGVkIHdp dGggdGhlIHJlbW90ZSBvbmUuCisgKgorICogUmVidWlsZHMgdGhlIFJlbGNhY2hlIG1hcHBpbmcg aWYgaXQgd2FzIGludmFsaWRhdGVkIGJ5IGxvY2FsIERETC4KKyAqLworTG9naWNhbFJlcFJlbE1h cEVudHJ5ICoKK2xvZ2ljYWxyZXBfcmVsX29wZW4oTG9naWNhbFJlcFJlbElkIHJlbW90ZWlkLCBM T0NLTU9ERSBsb2NrbW9kZSkKK3sKKwlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5OworCWJv b2wJCWZvdW5kOworCisJaWYgKExvZ2ljYWxSZXBSZWxNYXAgPT0gTlVMTCkKKwkJbG9naWNhbHJl cF9yZWxtYXBfaW5pdCgpOworCisJLyogU2VhcmNoIGZvciBleGlzdGluZyBlbnRyeS4gKi8KKwll bnRyeSA9IGhhc2hfc2VhcmNoKExvZ2ljYWxSZXBSZWxNYXAsICZyZW1vdGVpZCwKKwkJCQkJCUhB U0hfRklORCwgJmZvdW5kKTsKKworCWlmICghZm91bmQpCisJCWVsb2coRVJST1IsICJubyByZWxh dGlvbiBtYXAgZW50cnkgZm9yIHJlbW90ZSByZWxhdGlvbiBJRCAldSIsCisJCQkgcmVtb3RlaWQp OworCisJbG9naWNhbHJlcF9yZWxfbG9hZChlbnRyeSwgMCwgbG9ja21vZGUpOworCiAJcmV0dXJu IGVudHJ5OwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRl eCBmZjFjNzE0MmYxOC4uZGU2NjViOGQ0YjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC93b3JrZXIuYwpAQCAtMTEzOCw2ICsxMTM4LDU4IEBAIGNoZWNrX2FuZF9yZWNvcmRfcmVs X2RlcGVuZGVuY3koTG9naWNhbFJlcFJlbElkIHJlbGlkLAogCQlyZWxlbnRyeS0+bGFzdF9kZXBl bmRlZF94aWQgPSBuZXdfZGVwZW5kZWRfeGlkOwogfQogCisvKgorICogQ2hlY2sgdGhlIHBhcmFs bGVsaXphYmlsaXR5IG9mIGFwcGx5aW5nIGNoYW5nZXMgZm9yIHRoZSByZWxhdGlvbi4KKyAqIEFw cGVuZCB0aGUgbGFzdGx5IGRpc3BhdGNoZWQgdHJhbnNhY3Rpb24gaW4gaW4gJ2RlcGVuZHNfb25f eGlkcycgaWYgdGhlCisgKiByZWxhdGlvbiBpcyBwYXJhbGxlbCB1bnNhZmUuCisgKi8KK3N0YXRp YyB2b2lkCitjaGVja19kZXBlbmRlbmN5X2Zvcl9wYXJhbGxlbF9zYWZldHkoTG9naWNhbFJlcFJl bElkIHJlbGlkLAorCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgbmV3X2RlcGVuZGVkX3hpZCwKKwkJ CQkJCQkJCSBMaXN0ICoqZGVwZW5kc19vbl94aWRzKQoreworCUxvZ2ljYWxSZXBSZWxNYXBFbnRy eSAqcmVsZW50cnk7CisKKwkvKiBRdWljayBleGl0IGlmIG5vIHRyYW5zYWN0aW9ucyBoYXZlIGJl ZW4gZGlzcGF0Y2hlZCAqLworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQobGFzdF9wYXJhbGxl bGl6ZWRfcmVtb3RlX3hpZCkpCisJCXJldHVybjsKKworCXJlbGVudHJ5ID0gbG9naWNhbHJlcF9n ZXRfcmVsZW50cnkocmVsaWQpOworCisJLyoKKwkgKiBHYXRoZXIgaW5mb3JtYXRpb24gZm9yIGxv Y2FsIHRyaWdncmVzIGlmIG5vdCB5ZXQuIFdlIHJlcXVpcmUgdG8gYmUgaW4gYQorCSAqIHRyYW5z YWN0aW9uIHN0YXRlIGJlY2F1c2Ugc3lzdGVtIGNhdGFsb2dzIGFyZSByZWFkLgorCSAqLworCWlm IChyZWxlbnRyeS0+cGFyYWxsZWxfc2FmZSA9PSBMT0dJQ0FMUkVQX1BBUkFMTEVMX1VOS05PV04p CisJeworCQlib29sCQluZWVkc19zdGFydCA9ICFJc1RyYW5zYWN0aW9uT3JUcmFuc2FjdGlvbkJs b2NrKCk7CisKKwkJaWYgKG5lZWRzX3N0YXJ0KQorCQkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKKworCQlsb2dpY2FscmVwX3JlbF9sb2FkKE5VTEwsIHJlbGlkLCBBY2Nlc3NTaGFyZUxvY2sp OworCisJCS8qCisJCSAqIENsb3NlIHRoZSB0cmFuc2FjdGlvbiBpZiB3ZSBzdGFydCBoZXJlLiBX ZSBtdXN0IG5vdCBhYm9ydCBiZWNhdXNlCisJCSAqIGl0IHdvdWxkIHJlbGVhc2UgYWxsIHNlc3Np b24tbGV2ZWwgbG9ja3MsIHN1Y2ggYXMgdGhlIHN0cmVhbSBsb2NrLAorCQkgKiBhbmQgYnJlYWsg dGhlIGRlYWRsb2NrIGRldGVjdGlvbiBtZWNoYW5pc20gYmV0d2VlbiBMQSBhbmQgUEEuIFRoZQor CQkgKiBvdXRjb21lIGlzIHRoZSBzYW1lIHJlZ2FyZGxlc3Mgb2YgdGhlIGVuZCBzdGF0dXMsIHNp bmNlIHRoZQorCQkgKiB0cmFuc2FjdGlvbiBkaWQgbm90IG1vZGlmeSBhbnkgdHVwbGVzLgorCQkg Ki8KKwkJaWYgKG5lZWRzX3N0YXJ0KQorCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisK KwkJQXNzZXJ0KHJlbGVudHJ5LT5wYXJhbGxlbF9zYWZlICE9IExPR0lDQUxSRVBfUEFSQUxMRUxf VU5LTk9XTik7CisJfQorCisJLyogRG8gbm90aGluZyBmb3IgcGFyYWxsZWwgc2FmZSByZWxhdGlv bnMgKi8KKwlpZiAocmVsZW50cnktPnBhcmFsbGVsX3NhZmUgPT0gTE9HSUNBTFJFUF9QQVJBTExF TF9TQUZFKQorCQlyZXR1cm47CisKKwljaGVja19hbmRfYXBwZW5kX3hpZF9kZXBlbmRlbmN5KCZs YXN0X3BhcmFsbGVsaXplZF9yZW1vdGVfeGlkLAorCQkJCQkJCQkJZGVwZW5kc19vbl94aWRzKTsK K30KKwogLyoKICAqIENoZWNrIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIHRoZSBjdXJyZW50IGNo YW5nZSBieSBkZXRlcm1pbmluZyBpZiB0aGUKICAqIG1vZGlmaWNhdGlvbiBpbXBhY3RzIHRoZSBz YW1lIHJvdyBvciB0YWJsZSBhcyBhbm90aGVyIG9uZ29pbmcgdHJhbnNhY3Rpb24uIElmCkBAIC0x MjA0LDYgKzEyNTYsOCBAQCBoYW5kbGVfZGVwZW5kZW5jeV9vbl9jaGFuZ2UoTG9naWNhbFJlcE1z Z1R5cGUgYWN0aW9uLCBTdHJpbmdJbmZvIHMsCiAJCQlyZWxpZCA9IGxvZ2ljYWxyZXBfcmVhZF9p bnNlcnQoJmNoYW5nZSwgJm5ld3R1cCk7CiAJCQljaGVja19hbmRfcmVjb3JkX3JpX2RlcGVuZGVu Y3kocmVsaWQsICZuZXd0dXAsIG5ld19kZXBlbmRlZF94aWQsCiAJCQkJCQkJCQkJICAgJmRlcGVu ZHNfb25feGlkcyk7CisJCQljaGVja19kZXBlbmRlbmN5X2Zvcl9wYXJhbGxlbF9zYWZldHkocmVs aWQsIG5ld19kZXBlbmRlZF94aWQsCisJCQkJCQkJCQkJCQkgJmRlcGVuZHNfb25feGlkcyk7CiAJ CQlicmVhazsKIAogCQljYXNlIExPR0lDQUxfUkVQX01TR19VUERBVEU6CkBAIC0xMjE1LDYgKzEy NjksOSBAQCBoYW5kbGVfZGVwZW5kZW5jeV9vbl9jaGFuZ2UoTG9naWNhbFJlcE1zZ1R5cGUgYWN0 aW9uLCBTdHJpbmdJbmZvIHMsCiAJCQkJY2hlY2tfYW5kX3JlY29yZF9yaV9kZXBlbmRlbmN5KHJl bGlkLCAmb2xkdHVwLCBuZXdfZGVwZW5kZWRfeGlkLAogCQkJCQkJCQkJCQkgICAmZGVwZW5kc19v bl94aWRzKTsKIAorCQkJCWNoZWNrX2RlcGVuZGVuY3lfZm9yX3BhcmFsbGVsX3NhZmV0eShyZWxp ZCwgbmV3X2RlcGVuZGVkX3hpZCwKKwkJCQkJCQkJCQkJCQkgJmRlcGVuZHNfb25feGlkcyk7CisK IAkJCQkvKgogCQkJCSAqIENvcHkgdW5jaGFuZ2VkIGNvbHVtbiB2YWx1ZXMgZnJvbSB0aGUgb2xk IHR1cGxlIHRvIHRoZSBuZXcKIAkJCQkgKiB0dXBsZSBmb3IgcmVwbGljYSBpZGVudGl0eSBkZXBl bmRlbmN5IGNoZWNraW5nLiBTZWUKQEAgLTEyMjcsMTIgKzEyODQsMTYgQEAgaGFuZGxlX2RlcGVu ZGVuY3lfb25fY2hhbmdlKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5nSW5mbyBzLAog CiAJCQljaGVja19hbmRfcmVjb3JkX3JpX2RlcGVuZGVuY3kocmVsaWQsICZuZXd0dXAsIG5ld19k ZXBlbmRlZF94aWQsCiAJCQkJCQkJCQkJICAgJmRlcGVuZHNfb25feGlkcyk7CisJCQljaGVja19k ZXBlbmRlbmN5X2Zvcl9wYXJhbGxlbF9zYWZldHkocmVsaWQsIG5ld19kZXBlbmRlZF94aWQsCisJ CQkJCQkJCQkJCQkgJmRlcGVuZHNfb25feGlkcyk7CiAJCQlicmVhazsKIAogCQljYXNlIExPR0lD QUxfUkVQX01TR19ERUxFVEU6CiAJCQlyZWxpZCA9IGxvZ2ljYWxyZXBfcmVhZF9kZWxldGUoJmNo YW5nZSwgJm9sZHR1cCk7CiAJCQljaGVja19hbmRfcmVjb3JkX3JpX2RlcGVuZGVuY3kocmVsaWQs ICZvbGR0dXAsIG5ld19kZXBlbmRlZF94aWQsCiAJCQkJCQkJCQkJICAgJmRlcGVuZHNfb25feGlk cyk7CisJCQljaGVja19kZXBlbmRlbmN5X2Zvcl9wYXJhbGxlbF9zYWZldHkocmVsaWQsIG5ld19k ZXBlbmRlZF94aWQsCisJCQkJCQkJCQkJCQkgJmRlcGVuZHNfb25feGlkcyk7CiAJCQlicmVhazsK IAogCQljYXNlIExPR0lDQUxfUkVQX01TR19UUlVOQ0FURToKQEAgLTEyNDUsOSArMTMwNiwxNCBA QCBoYW5kbGVfZGVwZW5kZW5jeV9vbl9jaGFuZ2UoTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uLCBT dHJpbmdJbmZvIHMsCiAJCQkgKiBtb2RpZmllZCB0aGUgc2FtZSB0YWJsZS4KIAkJCSAqLwogCQkJ Zm9yZWFjaF9pbnQodHJ1bmNhdGVkX3JlbGlkLCByZW1vdGVfcmVsaWRzKQorCQkJewogCQkJCWNo ZWNrX2FuZF9yZWNvcmRfcmVsX2RlcGVuZGVuY3kodHJ1bmNhdGVkX3JlbGlkLAogCQkJCQkJCQkJ CQkJbmV3X2RlcGVuZGVkX3hpZCwKIAkJCQkJCQkJCQkJCSZkZXBlbmRzX29uX3hpZHMpOworCQkJ CWNoZWNrX2RlcGVuZGVuY3lfZm9yX3BhcmFsbGVsX3NhZmV0eSh0cnVuY2F0ZWRfcmVsaWQsCisJ CQkJCQkJCQkJCQkJIG5ld19kZXBlbmRlZF94aWQsCisJCQkJCQkJCQkJCQkJICZkZXBlbmRzX29u X3hpZHMpOworCQkJfQogCiAJCQlicmVhazsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dp Y2FscmVsYXRpb24uaAppbmRleCBjZDg1MjMzNzE2NS4uYjEwNzlkM2YyZmEgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCisrKyBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCkBAIC00NSw2ICs0NSwyMCBAQCB0eXBl ZGVmIHN0cnVjdCBMb2dpY2FsUmVwUmVsTWFwRW50cnkKIAkgKiBhcHBseWluZyAoc2VlIGNoZWNr X2RlcGVuZGVuY3lfb25fcmVsKS4KIAkgKi8KIAlUcmFuc2FjdGlvbklkIGxhc3RfZGVwZW5kZWRf eGlkOworCisJLyoKKwkgKiBXaGV0aGVyIHRoZSByZWxhdGlvbiBjYW4gYmUgYXBwbGllZCBpbiBw YXJhbGxlbCBvciBub3QuIEl0IGlzCisJICogZGlzdGluZ2xpc2ggd2hldGhlciBkZWZpbmVkIHRy aWdnZXJzIGFyZSB0aGUgaW1tdXRhYmxlIG9yIG5vdC4KKwkgKgorCSAqIFRoZW9yZXRpY2FsbHks IHdlIGNhbiBkZXRlcm1pbmUgdGhlIHBhcmFsbGVsaXphYmlsaXR5IGZvciBlYWNoIHR5cGUgb2YK KwkgKiByZXBsaWNhdGlvbiBtZXNzYWdlcywgSU5TRVJUL1VQREFURS9ERUxFVEUvVFJVTkNBVEUu IEJ1dCBpdCBpcyBub3QgZG9uZQorCSAqIHlldCB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBhdHRy aWJ1dGVzLgorCSAqCisJICogTm90ZSB0aGF0IHdlIGRvIG5vdCBjaGVjayB0aGUgdXNlci1kZWZp bmVkIGNvbnN0cmFpbnRzIGhlcmUuIFBvc3RncmVTUUwKKwkgKiBoYXMgYWxyZWFkeSBhc3N1bWVk IHRoYXQgQ0hFQ0sgY29uc3RyYWludHMnIGNvbmRpdGlvbnMgYXJlIGltbXV0YWJsZSBhbmQKKwkg KiBoZXJlIGZvbGxvd3MgdGhlIHJ1bGUuCisJICovCisJY2hhcgkJcGFyYWxsZWxfc2FmZTsKIH0g TG9naWNhbFJlcFJlbE1hcEVudHJ5OwogCiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlbG1hcF91 cGRhdGUoTG9naWNhbFJlcFJlbGF0aW9uICpyZW1vdGVyZWwpOwpAQCAtNTIsNiArNjYsOCBAQCBl eHRlcm4gdm9pZCBsb2dpY2FscmVwX3BhcnRtYXBfcmVzZXRfcmVsbWFwKExvZ2ljYWxSZXBSZWxh dGlvbiAqcmVtb3RlcmVsKTsKIAogZXh0ZXJuIExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqbG9naWNh bHJlcF9yZWxfb3BlbihMb2dpY2FsUmVwUmVsSWQgcmVtb3RlaWQsCiAJCQkJCQkJCQkJCQkgIExP Q0tNT0RFIGxvY2ttb2RlKTsKK2V4dGVybiB2b2lkIGxvZ2ljYWxyZXBfcmVsX2xvYWQoTG9naWNh bFJlcFJlbE1hcEVudHJ5ICplbnRyeSwKKwkJCQkJCQkJTG9naWNhbFJlcFJlbElkIHJlbW90ZWlk LCBMT0NLTU9ERSBsb2NrbW9kZSk7CiBleHRlcm4gTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpsb2dp Y2FscmVwX3BhcnRpdGlvbl9vcGVuKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcm9vdCwKIAkJCQkJ CQkJCQkJCQkJUmVsYXRpb24gcGFydHJlbCwgQXR0ck1hcCAqbWFwKTsKIGV4dGVybiB2b2lkIGxv Z2ljYWxyZXBfcmVsX2Nsb3NlKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsLApAQCAtNjIsNCAr NzgsOCBAQCBleHRlcm4gaW50CWxvZ2ljYWxyZXBfZ2V0X251bV9yZWxzKHZvaWQpOwogZXh0ZXJu IHZvaWQgbG9naWNhbHJlcF93cml0ZV9hbGxfcmVscyhTdHJpbmdJbmZvIG91dCk7CiBleHRlcm4g TG9naWNhbFJlcFJlbE1hcEVudHJ5ICpsb2dpY2FscmVwX2dldF9yZWxlbnRyeShMb2dpY2FsUmVw UmVsSWQgcmVtb3RlaWQpOwogCisjZGVmaW5lIExPR0lDQUxSRVBfUEFSQUxMRUxfU0FGRQkJJ3Mn CisjZGVmaW5lIExPR0lDQUxSRVBfUEFSQUxMRUxfUkVTVFJJQ1RFRAkncicKKyNkZWZpbmUgTE9H SUNBTFJFUF9QQVJBTExFTF9VTktOT1dOCQkndScKKwogI2VuZGlmCQkJCQkJCS8qIExPR0lDQUxS RUxBVElPTl9IICovCi0tIAoyLjQzLjAKCg== --_011_TY4PR01MB17718A4AB7F564C8DB0D6F7DC94102TY4PR01MB17718jp_ Content-Type: application/octet-stream; name="v19-0005-support-2PC.patch" Content-Description: v19-0005-support-2PC.patch Content-Disposition: attachment; filename="v19-0005-support-2PC.patch"; size=13687; creation-date="Thu, 04 Jun 2026 06:54:41 GMT"; modification-date="Thu, 04 Jun 2026 06:58:29 GMT" Content-Transfer-Encoding: base64 RnJvbSAxZTFlYzRkNmU0M2VmOGNlMWE0YmY5YWFkZTU3M2I2ODFhNTkwZmNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBaaGlqaWUgSG91IDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBUaHUsIDQgSnVuIDIwMjYgMTM6MTU6MTQgKzA4MDAKU3ViamVjdDogW1BBVENIIHYxOSAw NS8xMF0gc3VwcG9ydCAyUEMKClRoaXMgcGF0Y2ggYWxsb3dzIHRoZSBQUkVQQVJFIHRyYW5zYWN0 aW9uIHRvIGJlIGFwcGxpZWQgaW4gcGFyYWxsZWwuIFBhcmFsbGVsCmFwcGx5IHdvcmtlcnMgYXJl IGFzc2lnbmVkIHRvIGEgdHJhbnNhY3Rpb24gd2hlbiBCRUdJTl9QUkVQQVJFIGlzIHJlY2VpdmVk LiBUaGlzCnBhcnQgYW5kIHRoZSBkZXBlbmRlbmN5LXdhaXRpbmcgbWVjaGFuaXNtIGFyZSB0aGUg c2FtZSBhcyBhIG5vcm1hbCB0cmFuc2FjdGlvbi4KCkEgcGFyYWxsZWwgd29ya2VyIGNhbiBiZSBm cmVlZCBhZnRlciBpdCBoYW5kbGVzIGEgUFJFUEFSRSBtZXNzYWdlLiBUaGUgcHJlcGFyZWQKdHJh bnNhY3Rpb24gY2FuIGJlIGRlbGV0ZWQgZnJvbSBwYXJhbGxlbGl6ZWRfdHhucyBhdCB0aGF0IHRp bWU7IHRoZSB1cGNvbWluZwp0cmFuc2FjdGlvbnMgd2lsbCB3YWl0IHVudGlsIHRoZW4uCgpUaGUg bGVhZGVyIGFwcGx5IHdvcmtlciByZXNvbHZlcyBDT01NSVQgUFJFUEFSRUQvUk9MTEJBQ0sgUFJF UEFSRUQuIFNpbmNlIGl0IGNhbgpiZSBzZXJpYWxpemVkIGF1dG9tYXRpY2FsbHksIGl0IGRvZXMg bm90IGFkZCB0aGUgdHJhbnNhY3Rpb24gdG8gcGFyYWxsZWxpemVkX3R4bnMuCi0tLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgMjE4ICsrKysrKysrKysr KysrKy0tLQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDUwX3BhcmFsbGVsX2FwcGx5LnBsIHwg IDY0ICsrKystCiAyIGZpbGVzIGNoYW5nZWQsIDI1MyBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtl ci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCBmYWY3 YTUwYmYyNS4uNTUzNTg0MWM0MDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYwpAQCAtODA2LDYgKzgwNiwxNCBAQCBkZWxldGVfcmVwbGljYV9pZGVudGl0eV9lbnRy aWVzX2Zvcl90eG5zKExpc3QgKmNvbW1pdHRlZF94aWRzKQogCWlmICghY29tbWl0dGVkX3hpZHMp CiAJCXJldHVybjsKIAorCS8qCisJICogU2tpcCBpZiB0aGUgcmVwbGljYV9pZGVudGl0eV90YWJs ZSBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0LiBUaGlzIGNhbgorCSAqIGhhcHBlbiBpZiB0aGUgZW1w dHkgdHJhbnNhY3Rpb24gd2FzIHJlcGxpY2F0ZWQgYW5kIGEgcGFyYWxsZWwgYXBwbHkKKwkgKiB3 b3JrZXIgd2FzIGxhdW5jaGVkLiBTZWUgY29tbWVudHMgaW4gYXBwbHlfaGFuZGxlX3ByZXBhcmUo KS4KKwkgKi8KKwlpZiAoIXJlcGxpY2FfaWRlbnRpdHlfdGFibGUpCisJCXJldHVybjsKKwogCXJl cGxpY2FfaWRlbnRpdHlfc3RhcnRfaXRlcmF0ZShyZXBsaWNhX2lkZW50aXR5X3RhYmxlLCAmaSk7 CiAJd2hpbGUgKChyaWVudHJ5ID0gcmVwbGljYV9pZGVudGl0eV9pdGVyYXRlKHJlcGxpY2FfaWRl bnRpdHlfdGFibGUsICZpKSkgIT0gTlVMTCkKIAl7CkBAIC0yMTg0LDYgKzIxOTIsOCBAQCBzdGF0 aWMgdm9pZAogYXBwbHlfaGFuZGxlX2JlZ2luX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogewogCUxv Z2ljYWxSZXBQcmVwYXJlZFR4bkRhdGEgYmVnaW5fZGF0YTsKKwlQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqd2luZm87CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CiAKIAkvKiBUYWJs ZXN5bmMgc2hvdWxkIG5ldmVyIHJlY2VpdmUgcHJlcGFyZS4gKi8KIAlpZiAoYW1fdGFibGVzeW5j X3dvcmtlcigpKQpAQCAtMjE5NSwxMiArMjIwNSw1NCBAQCBhcHBseV9oYW5kbGVfYmVnaW5fcHJl cGFyZShTdHJpbmdJbmZvIHMpCiAJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJlYW1f eGlkKSk7CiAKIAlsb2dpY2FscmVwX3JlYWRfYmVnaW5fcHJlcGFyZShzLCAmYmVnaW5fZGF0YSk7 Ci0Jc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChiZWdpbl9kYXRhLnhpZCwgYmVnaW5fZGF0 YS5wcmVwYXJlX2xzbik7CisKKwlyZW1vdGVfeGlkID0gYmVnaW5fZGF0YS54aWQ7CisKKwlzZXRf YXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHJlbW90ZV94aWQsIGJlZ2luX2RhdGEucHJlcGFyZV9s c24pOwogCiAJcmVtb3RlX2ZpbmFsX2xzbiA9IGJlZ2luX2RhdGEucHJlcGFyZV9sc247CiAKIAlt YXliZV9zdGFydF9za2lwcGluZ19jaGFuZ2VzKGJlZ2luX2RhdGEucHJlcGFyZV9sc24pOwogCisJ cGFfYWxsb2NhdGVfd29ya2VyKHJlbW90ZV94aWQsIGZhbHNlKTsKKworCWFwcGx5X2FjdGlvbiA9 IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24ocmVtb3RlX3hpZCwgJndpbmZvKTsKKworCWVs b2coREVCVUcxLCAibmV3IHJlbW90ZV94aWQgJXUiLCByZW1vdGVfeGlkKTsKKwlzd2l0Y2ggKGFw cGx5X2FjdGlvbikKKwl7CisJCWNhc2UgVFJBTlNfTEVBREVSX0FQUExZOgorCQkJYnJlYWs7CisK KwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7 CisKKwkJCWlmIChwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQl7CisJ CQkJcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIod2luZm8pOworCQkJCWJyZWFrOworCQkJfQor CisJCQkvKgorCQkJICogVE9ETzogU3VwcG9ydCBzd2l0Y2hpbmcgdG8gUEFSVElBTF9TRVJJQUxJ WkUgbW9kZSB3aGVuIHRoZSBzZW5kCisJCQkgKiBidWZmZXIgYmVjb21lcyBmdWxsLgorCQkJICov CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9Q UkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQllcnJtc2coImNvdWxkIG5vdCBzZW5kIGRhdGEgdG8g dGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIikpOworCQkJYnJl YWs7CisKKwkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKwkJCS8qIEhvbGQgdGhlIGxvY2sg dW50aWwgdGhlIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24uICovCisJCQlwYV9sb2NrX3RyYW5zYWN0 aW9uKE15UGFyYWxsZWxTaGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisJCQlwYV9z ZXRfeGFjdF9zdGF0ZShNeVBhcmFsbGVsU2hhcmVkLCBQQVJBTExFTF9UUkFOU19TVEFSVEVEKTsK KwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBhcHBs eSBhY3Rpb246ICVkIiwgKGludCkgYXBwbHlfYWN0aW9uKTsKKwkJCWJyZWFrOworCX0KKwogCWlu X3JlbW90ZV90cmFuc2FjdGlvbiA9IHRydWU7CiAKIAlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNU QVRFX1JVTk5JTkcsIE5VTEwpOwpAQCAtMjI1MCw2ICsyMzAyLDggQEAgc3RhdGljIHZvaWQKIGFw cGx5X2hhbmRsZV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIHsKIAlMb2dpY2FsUmVwUHJlcGFyZWRU eG5EYXRhIHByZXBhcmVfZGF0YTsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJ VHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CiAKIAlsb2dpY2FscmVwX3JlYWRfcHJlcGFy ZShzLCAmcHJlcGFyZV9kYXRhKTsKIApAQCAtMjI2MCwzNiArMjMxNCwxMzEgQEAgYXBwbHlfaGFu ZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCQkJCQkJCQkgTFNOX0ZPUk1BVF9BUkdTKHByZXBh cmVfZGF0YS5wcmVwYXJlX2xzbiksCiAJCQkJCQkJCSBMU05fRk9STUFUX0FSR1MocmVtb3RlX2Zp bmFsX2xzbikpKSk7CiAKLQkvKgotCSAqIFVubGlrZSBjb21taXQsIGhlcmUsIHdlIGFsd2F5cyBw cmVwYXJlIHRoZSB0cmFuc2FjdGlvbiBldmVuIHRob3VnaCBubwotCSAqIGNoYW5nZSBoYXMgaGFw cGVuZWQgaW4gdGhpcyB0cmFuc2FjdGlvbiBvciBhbGwgY2hhbmdlcyBhcmUgc2tpcHBlZC4gSXQK LQkgKiBpcyBkb25lIHRoaXMgd2F5IGJlY2F1c2UgYXQgY29tbWl0IHByZXBhcmVkIHRpbWUsIHdl IHdvbid0IGtub3cgd2hldGhlcgotCSAqIHdlIGhhdmUgc2tpcHBlZCBwcmVwYXJpbmcgYSB0cmFu c2FjdGlvbiBiZWNhdXNlIG9mIHRob3NlIHJlYXNvbnMuCi0JICoKLQkgKiBYWFgsIFdlIGNhbiBv cHRpbWl6ZSBzdWNoIHRoYXQgYXQgY29tbWl0IHByZXBhcmVkIHRpbWUsIHdlIGZpcnN0IGNoZWNr Ci0JICogd2hldGhlciB3ZSBoYXZlIHByZXBhcmVkIHRoZSB0cmFuc2FjdGlvbiBvciBub3QgYnV0 IHRoYXQgZG9lc24ndCBzZWVtCi0JICogd29ydGh3aGlsZSBiZWNhdXNlIHN1Y2ggY2FzZXMgc2hv dWxkbid0IGJlIGNvbW1vbi4KLQkgKi8KLQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CisJYXBw bHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihyZW1vdGVfeGlkLCAmd2lu Zm8pOwogCi0JYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVfZGF0YSk7CisJ c3dpdGNoIChhcHBseV9hY3Rpb24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9BUFBMWToKIAot CWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7Ci0JQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Ci0J cGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKKwkJCS8qCisJCQkgKiBVbmxpa2UgY29tbWl0LCBo ZXJlLCB3ZSBhbHdheXMgcHJlcGFyZSB0aGUgdHJhbnNhY3Rpb24gZXZlbgorCQkJICogdGhvdWdo IG5vIGNoYW5nZSBoYXMgaGFwcGVuZWQgaW4gdGhpcyB0cmFuc2FjdGlvbiBvciBhbGwKKwkJCSAq IGNoYW5nZXMgYXJlIHNraXBwZWQuIEl0IGlzIGRvbmUgdGhpcyB3YXkgYmVjYXVzZSBhdCBjb21t aXQKKwkJCSAqIHByZXBhcmVkIHRpbWUsIHdlIHdvbid0IGtub3cgd2hldGhlciB3ZSBoYXZlIHNr aXBwZWQgcHJlcGFyaW5nCisJCQkgKiBhIHRyYW5zYWN0aW9uIGJlY2F1c2Ugb2YgdGhvc2UgcmVh c29ucy4KKwkJCSAqCisJCQkgKiBYWFgsIFdlIGNhbiBvcHRpbWl6ZSBzdWNoIHRoYXQgYXQgY29t bWl0IHByZXBhcmVkIHRpbWUsIHdlCisJCQkgKiBmaXJzdCBjaGVjayB3aGV0aGVyIHdlIGhhdmUg cHJlcGFyZWQgdGhlIHRyYW5zYWN0aW9uIG9yIG5vdCBidXQKKwkJCSAqIHRoYXQgZG9lc24ndCBz ZWVtIHdvcnRod2hpbGUgYmVjYXVzZSBzdWNoIGNhc2VzIHNob3VsZG4ndCBiZQorCQkJICogY29t bW9uLgorCQkJICovCisJCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAKLQkvKgotCSAqIEl0 IGlzIG9rYXkgbm90IHRvIHNldCB0aGUgbG9jYWxfZW5kIExTTiBmb3IgdGhlIHByZXBhcmUgYmVj YXVzZSB3ZQotCSAqIGFsd2F5cyBmbHVzaCB0aGUgcHJlcGFyZSByZWNvcmQuIFNvLCB3ZSBjYW4g c2VuZCB0aGUgYWNrbm93bGVkZ21lbnQgb2YKLQkgKiB0aGUgcmVtb3RlX2VuZCBMU04gYXMgc29v biBhcyBwcmVwYXJlIGlzIGZpbmlzaGVkLgotCSAqCi0JICogWFhYIEZvciB0aGUgc2FrZSBvZiBj b25zaXN0ZW5jeSB3aXRoIGNvbW1pdCwgd2UgY291bGQgaGF2ZSBzZXQgaXQgd2l0aAotCSAqIHRo ZSBMU04gb2YgcHJlcGFyZSBidXQgYXMgb2Ygbm93IHdlIGRvbid0IHRyYWNrIHRoYXQgdmFsdWUg c2ltaWxhciB0bwotCSAqIFhhY3RMYXN0Q29tbWl0RW5kLCBhbmQgYWRkaW5nIGl0IGZvciB0aGlz IHB1cnBvc2UgZG9lc24ndCBzZWVtcyB3b3J0aAotCSAqIGl0LgotCSAqLwotCXN0b3JlX2ZsdXNo X3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuLCBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJ CSBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7CisJCQkvKiBXYWl0IHVudGlsIHRoZSBsYXN0IHRyYW5z YWN0aW9uIGZpbmlzaGVzICovCisJCQlpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQobGFzdF9wYXJh bGxlbGl6ZWRfcmVtb3RlX3hpZCkpCisJCQl7CisJCQkJcGFfd2FpdF9mb3JfZGVwZW5kZWRfdHJh bnNhY3Rpb24obGFzdF9wYXJhbGxlbGl6ZWRfcmVtb3RlX3hpZCk7CisJCQkJbGFzdF9wYXJhbGxl bGl6ZWRfcmVtb3RlX3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCQkJfQorCisJCQlhcHBs eV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsKKworCQkJZW5kX3JlcGxp Y2F0aW9uX3N0ZXAoKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkJcGdzdGF0 X3JlcG9ydF9zdGF0KGZhbHNlKTsKKworCQkJLyoKKwkJCSAqIEl0IGlzIG9rYXkgbm90IHRvIHNl dCB0aGUgbG9jYWxfZW5kIExTTiBmb3IgdGhlIHByZXBhcmUgYmVjYXVzZQorCQkJICogd2UgYWx3 YXlzIGZsdXNoIHRoZSBwcmVwYXJlIHJlY29yZC4gU28sIHdlIGNhbiBzZW5kIHRoZQorCQkJICog YWNrbm93bGVkZ21lbnQgb2YgdGhlIHJlbW90ZV9lbmQgTFNOIGFzIHNvb24gYXMgcHJlcGFyZSBp cworCQkJICogZmluaXNoZWQuCisJCQkgKgorCQkJICogWFhYIEZvciB0aGUgc2FrZSBvZiBjb25z aXN0ZW5jeSB3aXRoIGNvbW1pdCwgd2UgY291bGQgaGF2ZSBzZXQKKwkJCSAqIGl0IHdpdGggdGhl IExTTiBvZiBwcmVwYXJlIGJ1dCBhcyBvZiBub3cgd2UgZG9uJ3QgdHJhY2sgdGhhdAorCQkJICog dmFsdWUgc2ltaWxhciB0byBYYWN0TGFzdENvbW1pdEVuZCwgYW5kIGFkZGluZyBpdCBmb3IgdGhp cworCQkJICogcHVycG9zZSBkb2Vzbid0IHNlZW1zIHdvcnRoIGl0LgorCQkJICovCisJCQlzdG9y ZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbiwgSW52YWxpZFhMb2dSZWNQdHIs CisJCQkJCQkJCSBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7CisKKwkJCWJyZWFrOworCisJCWNhc2Ug VFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJCQkv KgorCQkJICogTWFyayB0aGlzIHRyYW5zYWN0aW9uIGFzIHBhcmFsbGVsaXplZC4gVGhpcyBlbnN1 cmVzIHRoYXQKKwkJCSAqIHVwY29taW5nIHRyYW5zYWN0aW9ucyB3YWl0IHVudGlsIHRoaXMgdHJh bnNhY3Rpb24gaXMgY29tbWl0dGVkLgorCQkJICovCisJCQlwYV9hZGRfcGFyYWxsZWxpemVkX3Ry YW5zYWN0aW9uKHJlbW90ZV94aWQpOworCisJCQkvKgorCQkJICogQnVpbGQgYSBkZXBlbmRlbmN5 IGJldHdlZW4gdGhpcyB0cmFuc2FjdGlvbiBhbmQgdGhlIGxhc3RseQorCQkJICogY29tbWl0dGVk IHRyYW5zYWN0aW9uIHRvIHByZXNlcnZlIHRoZSBjb21taXQgb3JkZXIuCisJCQkgKi8KKwkJCWJ1 aWxkX2RlcGVuZGVuY3lfd2l0aF9sYXN0X2NvbW1pdHRlZF90eG4od2luZm8pOworCisJCQlpZiAo cGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpKQorCQkJeworCQkJCS8qIENhY2hl IHRoZSByZW1vdGVfeGlkICovCisJCQkJbGFzdF9wYXJhbGxlbGl6ZWRfcmVtb3RlX3hpZCA9IHJl bW90ZV94aWQ7CisKKwkJCQkvKiBGaW5pc2ggcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24uICov CisJCQkJcGFfeGFjdF9maW5pc2god2luZm8sIHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJCQli cmVhazsKKwkJCX0KKworCQkJLyoKKwkJCSAqIFRPRE86IFN1cHBvcnQgc3dpdGNoaW5nIHRvIFBB UlRJQUxfU0VSSUFMSVpFIG1vZGUgd2hlbiB0aGUgc2VuZAorCQkJICogYnVmZmVyIGJlY29tZXMg ZnVsbC4KKwkJCSAqLworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX09C SkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJZXJybXNnKCJjb3VsZCBub3Qg c2VuZCBkYXRhIHRvIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciIpKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisKKwkJCS8q CisJCQkgKiBJZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGFwcGx5aW5nIHNwb29sZWQg bWVzc2FnZXMgdGhlbgorCQkJICogY2xvc2UgdGhlIGZpbGUgYmVmb3JlIGNvbW1pdHRpbmcuCisJ CQkgKi8KKwkJCWlmIChzdHJlYW1fZmQpCisJCQkJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKKworCQkJ YmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOworCisJCQlJTkpFQ1RJT05fUE9JTlQoInBhcmFsbGVs LXdvcmtlci1iZWZvcmUtcHJlcGFyZSIsIE5VTEwpOworCisJCQkvKiBNYXJrIHRoZSB0cmFuc2Fj dGlvbiBhcyBwcmVwYXJlZC4gKi8KKwkJCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKCZw cmVwYXJlX2RhdGEpOworCisJCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOworCisJCQlDb21taXRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CisKKwkJ CXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuLCBJbnZhbGlkWExvZ1Jl Y1B0ciwKKwkJCQkJCQkJIEludmFsaWRUcmFuc2FjdGlvbklkKTsKKworCQkJLyoKKwkJCSAqIEl0 IGlzIG9rYXkgbm90IHRvIHNldCB0aGUgbG9jYWxfZW5kIExTTiBmb3IgdGhlIHByZXBhcmUgYmVj YXVzZQorCQkJICogd2UgYWx3YXlzIGZsdXNoIHRoZSBwcmVwYXJlIHJlY29yZC4gU2VlIGFwcGx5 X2hhbmRsZV9wcmVwYXJlLgorCQkJICovCisJCQlNeVBhcmFsbGVsU2hhcmVkLT5sYXN0X2NvbW1p dF9lbmQgPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwkJCXBhX2NvbW1pdF90cmFuc2FjdGlvbigpOwor CisJCQlwYV91bmxvY2tfdHJhbnNhY3Rpb24oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NF eGNsdXNpdmVMb2NrKTsKKworCQkJcGFfcmVzZXRfc3VidHJhbnMoKTsKKwkJCWJyZWFrOworCisJ CWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBhcHBseSBhY3Rpb246ICVkIiwg KGludCkgYXBwbHlfYWN0aW9uKTsKKwkJCWJyZWFrOworCX0KKworCXJlbW90ZV94aWQgPSBJbnZh bGlkVHJhbnNhY3Rpb25JZDsKIAogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCkBA IC0yMzM3LDYgKzI0ODYsMTIgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdF9wcmVwYXJlZChTdHJpbmdJ bmZvIHMpCiAJLyogVGhlcmUgaXMgbm8gdHJhbnNhY3Rpb24gd2hlbiBDT01NSVQgUFJFUEFSRUQg aXMgY2FsbGVkICovCiAJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOwogCisJaWYgKFRyYW5zYWN0 aW9uSWRJc1ZhbGlkKGxhc3RfcGFyYWxsZWxpemVkX3JlbW90ZV94aWQpKQorCXsKKwkJcGFfd2Fp dF9mb3JfZGVwZW5kZWRfdHJhbnNhY3Rpb24obGFzdF9wYXJhbGxlbGl6ZWRfcmVtb3RlX3hpZCk7 CisJCWxhc3RfcGFyYWxsZWxpemVkX3JlbW90ZV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsK Kwl9CisKIAkvKgogCSAqIFVwZGF0ZSBvcmlnaW4gc3RhdGUgc28gd2UgY2FuIHJlc3RhcnQgc3Ry ZWFtaW5nIGZyb20gY29ycmVjdCBwb3NpdGlvbgogCSAqIGluIGNhc2Ugb2YgY3Jhc2guCkBAIC0y NDA1LDYgKzI1NjAsMTMgQEAgYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0lu Zm8gcykKIAogCQkvKiBUaGVyZSBpcyBubyB0cmFuc2FjdGlvbiB3aGVuIEFCT1JUL1JPTExCQUNL IFBSRVBBUkVEIGlzIGNhbGxlZCAqLwogCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CisKKwkJ aWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGxhc3RfcGFyYWxsZWxpemVkX3JlbW90ZV94aWQpKQor CQl7CisJCQlwYV93YWl0X2Zvcl9kZXBlbmRlZF90cmFuc2FjdGlvbihsYXN0X3BhcmFsbGVsaXpl ZF9yZW1vdGVfeGlkKTsKKwkJCWxhc3RfcGFyYWxsZWxpemVkX3JlbW90ZV94aWQgPSBJbnZhbGlk VHJhbnNhY3Rpb25JZDsKKwkJfQorCiAJCUZpbmlzaFByZXBhcmVkVHJhbnNhY3Rpb24oZ2lkLCBm YWxzZSk7CiAJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDUwX3BhcmFsbGVs X2FwcGx5LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDUwX3BhcmFsbGVsX2FwcGx5LnBs CmluZGV4IDE0MTIxYjIzZjIzLi5hN2JiYzhlNTljOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDUwX3BhcmFsbGVsX2FwcGx5LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzA1MF9wYXJhbGxlbF9hcHBseS5wbApAQCAtMTksNiArMTksOCBAQCBpZiAoJEVOVntl bmFibGVfaW5qZWN0aW9uX3BvaW50c30gbmUgJ3llcycpCiAjIEluaXRpYWxpemUgcHVibGlzaGVy IG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5l dygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9 PiAnbG9naWNhbCcpOworJG5vZGVfcHVibGlzaGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5j b25mJywKKyAgICAibWF4X3ByZXBhcmVkX3RyYW5zYWN0aW9ucyA9IDEwIik7CiAkbm9kZV9wdWJs aXNoZXItPnN0YXJ0OwogCiAjIENyZWF0ZSB0YWJsZXMgYW5kIGluc2VydCBpbml0aWFsIGRhdGEK QEAgLTQ0LDcgKzQ2LDggQEAgbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOwogJG5vZGVfc3Vic2NyaWJlci0+aW5pdDsKICRu b2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9t ZXNzYWdlcyA9IGRlYnVnMSIpOwogJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicsCi0JIm1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSAxMCIpOwor CSJtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzID0gMTAKKyAgICBtYXhfcHJlcGFyZWRf dHJhbnNhY3Rpb25zID0gMTAiKTsKICRub2RlX3N1YnNjcmliZXItPnN0YXJ0OwogCiAjIENoZWNr IGlmIHRoZSBleHRlbnNpb24gaW5qZWN0aW9uX3BvaW50cyBpcyBhdmFpbGFibGUsIGFzIGl0IG1h eSBiZQpAQCAtMTk4LDQgKzIwMSw2MyBAQCAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoMSkgRlJPTSB0YWJfdG9hc3QiKTsK IGlzICgkcmVzdWx0LCAwLCAnY2hhbmdlcyBhcmUgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyJyk7 CiAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj IFRlc3QgdGhhdCB0aGUgcHJlcGFyZWQgdHJhbnNhY3Rpb24gY2FuIGJlIGFwcGxpZWQgaW4gYSBw YXJhbGxlbCBhcHBseSB3b3JrZXIsCisjIGFuZCB0aGF0IHRoZSBjb21taXQgb3JkZXIgcHJlc2Vy dmF0aW9uIHdvcmsgY29ycmVjdGx5LgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisgICAgIkFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3N1YiBESVNBQkxFOyIpOworJG5v ZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291 bnQoKikgPSAwIEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVSRSBiYWNrZW5kX3R5cGUgPSAnbG9n aWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXInIgorKTsKKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgKKwkncG9zdGdyZXMnLCAiCisgICAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf c3ViIFNFVCAodHdvX3BoYXNlID0gb24pOworICAgIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X3N1YiBFTkFCTEU7Iik7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKyAgICAiU0VMRUNUIGNvdW50KDEpIEZST00gcGdfc3RhdF9hY3Rpdml0eSBX SEVSRSBiYWNrZW5kX3R5cGUgPSAnbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCB3b3JrZXIn Iik7CitpcygkcmVzdWx0LCAnMCcsICJubyBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGV4aXN0IGFm dGVyIHJlc3RhcnQiKTsKKworIyBBdHRhY2ggYW4gaW5qZWN0aW9uX3BvaW50LiBQYXJhbGxlbCB3 b3JrZXJzIHdvdWxkIHdhaXQgYmVmb3JlIHRoZSBwcmVwYXJlCiskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdw YXJhbGxlbC13b3JrZXItYmVmb3JlLXByZXBhcmUnLCd3YWl0Jyk7IgorKTsKKworIyBQUkVQQVJF IGEgdHJhbnNhY3Rpb24gb24gcHVibGlzaGVyLiBJdCB3b3VsZCBiZSBoYW5kbGVkIGJ5IGEgcGFy YWxsZWwgYXBwbHkKKyMgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgcXFbCisgICAgQkVHSU47CisgICAgSU5TRVJUIElOVE8gcmVncmVzc190YWIgVkFMVUVT IChnZW5lcmF0ZV9zZXJpZXMoNTEsIDYwKSwgJ3ByZXBhcmUnKTsKKyAgICBQUkVQQVJFIFRSQU5T QUNUSU9OICdyZWdyZXNzX3ByZXBhcmUnOworXSk7CisKKyMgV2FpdCB1bnRpbCB0aGUgcGFyYWxs ZWwgd29ya2VyIGVudGVycyB0aGUgaW5qZWN0aW9uIHBvaW50LgorJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3JfZXZlbnQoJ2xvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgd29ya2VyJywKKwkn cGFyYWxsZWwtd29ya2VyLWJlZm9yZS1wcmVwYXJlJyk7CisKKyRvZmZzZXQgPSAtcyAkbm9kZV9z dWJzY3JpYmVyLT5sb2dmaWxlOworCisjIEluc2VydCB0dXBsZXMgb24gcHVibGlzaGVyIGFnYWlu LiBUaGlzIHRyYW5zYWN0aW9uIHdhaXRzIGZvciB0aGUgcHJlcGFyZWQKKyMgdHJhbnNhY3Rpb24K KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisgICAgIklOU0VSVCBJTlRP IHJlZ3Jlc3NfdGFiIFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDYxLCA3MCksICd0ZXN0Jyk7Iik7 CisKKyMgVmVyaWZ5IHRoZSBwYXJhbGxlbCB3b3JrZXIgd2FpdHMgZm9yIHRoZSB0cmFuc2FjdGlv bgorJHN0ciA9ICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci93YWl0IGZvciBkZXBl bmRlZCB4aWQgKFsxLTldWzAtOV0rKS8sICRvZmZzZXQpOworJHhpZCA9ICRzdHIgPX4gL3dhaXQg Zm9yIGRlcGVuZGVkIHhpZCAoWzEtOV1bMC05XSspLzsKKworIyBXYWtldXAgdGhlIHBhcmFsbGVs IHdvcmtlcgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxWworICAg IFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgncGFyYWxsZWwtd29ya2VyLWJlZm9yZS1w cmVwYXJlJyk7CisgICAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdwYXJhbGxlbC13 b3JrZXItYmVmb3JlLXByZXBhcmUnKTsKK10pOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9sb2cocXIvZmluaXNoIHdhaXRpbmcgZm9yIGRlcGVuZGVkIHhpZCAkeGlkLywgJG9mZnNldCk7 CisKKyMgQ09NTUlUIHRoZSBwcmVwYXJlZCB0cmFuc2FjdGlvbi4gSXQgaXMgYWx3YXlzIGhhbmRs ZWQgYnkgdGhlIGxlYWRlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IkNPTU1JVCBQUkVQQVJFRCAncmVncmVzc19wcmVwYXJlJzsiKTsKKyRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgncmVncmVzc19zdWInKTsKKwogZG9uZV90ZXN0aW5nKCk7Ci0tIAoy LjQzLjAKCg== --_011_TY4PR01MB17718A4AB7F564C8DB0D6F7DC94102TY4PR01MB17718jp_ Content-Type: application/octet-stream; name="v19-0004-Parallel-apply-non-streaming-transactions.patch" Content-Description: v19-0004-Parallel-apply-non-streaming-transactions.patch Content-Disposition: attachment; filename="v19-0004-Parallel-apply-non-streaming-transactions.patch"; size=63095; creation-date="Thu, 04 Jun 2026 06:54:41 GMT"; modification-date="Thu, 04 Jun 2026 06:58:30 GMT" Content-Transfer-Encoding: base64 RnJvbSA5NjA4NDE4NDVmNThjNmIxZTNkYzkzYjYzMzdkMmU3Y2EyODU5MThmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBaaGlqaWUgSG91IDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBUaHUsIDQgSnVuIDIwMjYgMTA6MjA6NDQgKzA4MDAKU3ViamVjdDogW1BBVENIIHYxOSAw NC8xMF0gUGFyYWxsZWwgYXBwbHkgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMKCi0tCkJhc2lj IGRlc2lnbgotLQoKVGhlIGxlYWRlciB3b3JrZXIgYXNzaWducyBlYWNoIG5vbi1zdHJlYW1pbmcg dHJhbnNhY3Rpb24gdG8gYSBwYXJhbGxlbCBhcHBseQp3b3JrZXIuIEJlZm9yZSBkaXNwYXRjaGlu ZyBjaGFuZ2VzIHRvIGEgcGFyYWxsZWwgd29ya2VyLCB0aGUgbGVhZGVyIHZlcmlmaWVzIGlmCnRo ZSBjdXJyZW50IG1vZGlmaWNhdGlvbiBhZmZlY3RzIHRoZSBzYW1lIHJvdyAoaWRlbnRpdGllZCBi eSByZXBsaWNhIGlkZW50aXR5CmtleSkgYXMgYW5vdGhlciBvbmdvaW5nIHRyYW5zYWN0aW9uLiBJ ZiBzbywgdGhlIGxlYWRlciBzZW5kcyBhIGxpc3Qgb2YgZGVwZW5kZW50CnRyYW5zYWN0aW9uIElE cyB0byB0aGUgcGFyYWxsZWwgd29ya2VyLCBpbmRpY2F0aW5nIHRoYXQgdGhlIHBhcmFsbGVsIGFw cGx5CndvcmtlciBtdXN0IHdhaXQgZm9yIHRoZXNlIHRyYW5zYWN0aW9ucyB0byBjb21taXQgYmVm b3JlIHByb2NlZWRpbmcuCgpUaGUgbGVhZGVyIHByZXNlcnZlcyBwdWJsaXNoZXIgY29tbWl0IG9y ZGVyIGZvciBhbGwgdHJhbnNhY3Rpb25zIGJ5IGluc3RydWN0aW5nCnRoZSBwYXJhbGxlbCB3b3Jr ZXIgdG8gd2FpdCBmb3IgdGhlIGxhc3QgdHJhbnNhY3Rpb24gdG8gY29tbWl0IGJlZm9yZSBjb21t aXR0aW5nCnRoZSBjdXJyZW50IHRyYW5zYWN0aW9uLiAoTm90ZSB0aGF0IHRoZSBsZWFkZXIgaXRz ZWxmIGRvZXMgbm90IHdhaXQgdGhlCnBhcmFsbGVsaXplZCB0cmFuc2FjdGlvbiB0byBiZSBjb21t aXR0ZWQgdW5sZXNzIHBhcnRpYWwgc2VyaWFsaXphdGlvbiBtb2RlIGlzCmFjdGl2ZSwgd2hlcmUg dGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBjYW4gbm8gbG9uZ2VyIGJlIHJldXNlZC4pIFNlZSB0 aGUKImNvbW1pdCBvcmRlciIgYW5kICJ3b3JrZXIgaW50ZXJhY3Rpb24iIHNlY3Rpb25zIGJlbG93 IGZvciBkZXRhaWxzLgoKVHJhY2tpbmcgZGVwZW5kZW5jaWVzIGlzIG5lY2Vzc2FyeSBldmVuIHdo ZW4gY29tbWl0IG9yZGVyIGlzIHByZXNlcnZlZC4KQ29uc2lkZXIgdHdvIHRyYW5zYWN0aW9uczog VFgtMSAoSU5TRVJUIHJvdyAxKSBhbmQgVFgtMiAoREVMRVRFIHJvdyAxKS4gSWYKYm90aCBhcmUg YWxsb3dlZCB0byBhcHBseSBpbiBwYXJhbGxlbCwgVFgtMidzIERFTEVURSBjb3VsZCBiZSBhcHBs aWVkIGJlZm9yZQpUWC0xJ3MgSU5TRVJULCByZXN1bHRpbmcgaW4gYSBkZWxldGVfbWlzc2luZyBj b25mbGljdC4KCkVhY2ggcGFyYWxsZWwgYXBwbHkgd29ya2VyIHJlY29yZHMgdGhlIGxvY2FsIGVu ZCBMU04gb2YgdGhlIHRyYW5zYWN0aW9uIGl0CmFwcGxpZXMgaW4gc2hhcmVkIG1lbW9yeS4gU3Vi c2VxdWVudGx5LCB0aGUgbGVhZGVyIGdhdGhlcnMgdGhlc2UgbG9jYWwgZW5kIExTTnMKYW5kIGxv Z3MgdGhlbSBpbiB0aGUgbG9jYWwgJ2xzbl9tYXBwaW5nJyBmb3IgdmVyaWZ5aW5nIHdoZXRoZXIg dGhleSBoYXZlIGJlZW4KZmx1c2hlZCB0byBkaXNrIChmb2xsb3dpbmcgdGhlIGxvZ2ljIGluIGdl dF9mbHVzaF9wb3NpdGlvbigpKS4KCklmIG5vIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBhdmFp bGFibGUsIHRoZSBsZWFkZXIgd2lsbCBhcHBseSB0aGUgdHJhbnNhY3Rpb24KaW5kZXBlbmRlbnRs eS4KCkZvciBmdXJ0aGVyIGRldGFpbHMsIHBsZWFzZSByZWZlciB0byB0aGUgZm9sbG93aW5nOgoK LS0KZGVkZW5kZW5jeSB0cmFja2luZwotLQoKVGhlIGxlYWRlciBtYWludGFpbnMgYSBsb2NhbCBo YXNoIHRhYmxlLCB1c2luZyB0aGUgcmVtb3RlIGNoYW5nZSdzIHJlcGxpY2EKaWRlbnRpdHkgY29s dW1uIHZhbHVlcyBhbmQgcmVsaWQgYXMga2V5cywgd2l0aCByZW1vdGUgdHJhbnNhY3Rpb24gSURz IGFzIHZhbHVlcy4KQmVmb3JlIHNlbmRpbmcgY2hhbmdlcyB0byB0aGUgcGFyYWxsZWwgYXBwbHkg d29ya2VyLCB0aGUgbGVhZGVyIGNvbXB1dGVzIGEgaGFzaAp1c2luZyBSSSBrZXkgdmFsdWVzIGFu ZCB0aGUgcmVsaWQgb2YgdGhlIGN1cnJlbnQgY2hhbmdlIHRvIHNlYXJjaCB0aGUgaGFzaAp0YWJs ZS4gSWYgYW4gZXhpc3RpbmcgZW50cnkgaXMgZm91bmQsIHRoZSBsZWFkZXIgZmlyc3QgdXBkYXRl cyB0aGUgaGFzaCBlbnRyeQp3aXRoIHRoZSByZWNlaXZpbmcgcmVtb3RlIHhpZCB0aGVuIHRlbGxz IHRoZSBwYXJhbGxlbCB3b3JrZXIgdG8gd2FpdCBmb3IgaXQuCgpJZiB0aGUgcmVtb3RlIHJlbGF0 aW9uIGxhY2tzIGEgcmVwbGljYSBpZGVudGl0eSAoUkkpLCBpdCBpbmRpY2F0ZXMgdGhhdCBvbmx5 CklOU0VSVCBjYW4gYmUgcmVwbGljYXRlZCBmb3IgdGhpcyB0YWJsZS4gSW4gc3VjaCBjYXNlcywg dGhlIGxlYWRlciBza2lwcwpkZXBlbmRlbmN5IGNoZWNrcywgYWxsb3dpbmcgdGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlciB0byBwcm9jZWVkIHdpdGggYXBwbHlpbmcKY2hhbmdlcyB3aXRob3V0IGRl bGF5LiBUaGlzIGlzIGJlY2F1c2UgdGhlIG9ubHkgcG90ZW50aWFsIGNvbmZsaWN0IGNvdWxkIGhh cHBlbgppcyByZWxhdGVkIHRvIHRoZSBsb2NhbCB1bmlxdWUga2V5IG9yIGZvcmVpZ24ga2V5LCB3 aGljaCB0aGF0IGlzIHlldCB0byBiZQppbXBsZW1lbnRlZC4KCkluIGNhc2VzIG9mIFRSVU5DQVRF IG9yIHJlbW90ZSBzY2hlbWEgY2hhbmdlcyBhZmZlY3RpbmcgdGhlIGVudGlyZSB0YWJsZSwgdGhl CmxlYWRlciByZXRyaWV2ZXMgYWxsIHJlbW90ZSB4aWRzIHRvdWNoaW5nIHRoZSBzYW1lIHRhYmxl ICh2aWEgc2VxdWVudGlhbCBzY2FucwpvZiB0aGUgaGFzaCB0YWJsZSkgYW5kIHRlbGxzIHRoZSBw YXJhbGxlbCB3b3JrZXIgdG8gd2FpdCBmb3IgdGhvc2UgdHJhbnNhY3Rpb25zCnRvIGNvbW1pdC4K Ckhhc2ggZW50cmllcyBhcmUgY2xlYW5lZCB1cCBvbmNlIHRoZSB0cmFuc2FjdGlvbiBjb3JyZXNw b25kaW5nIHRvIHRoZSByZW1vdGUgeGlkCmluIHRoZSBlbnRyeSBoYXMgYmVlbiBjb21taXR0ZWQu IENsZWFuLXVwIHR5cGljYWxseSBvY2N1cnMgd2hlbiBjb2xsZWN0aW5nIHRoZQpmbHVzaCBwb3Np dGlvbiBvZiBlYWNoIHRyYW5zYWN0aW9uLCBidXQgaXMgZm9yY2VkIGlmIHRoZSBoYXNoIHRhYmxl IGV4Y2VlZHMgYQpzZXQgdGhyZXNob2xkLgoKLS0KZGVkZW5kZW5jeSB3YWl0aW5nCi0tCgpJZiBh IHRyYW5zYWN0aW9uIGlzIHJlbGllZCB1cG9uIGJ5IG90aGVycywgdGhlIGxlYWRlciBhZGRzIGl0 cyB4aWQgdG8gYSBzaGFyZWQKaGFzaCB0YWJsZS4gVGhlIHNoYXJlZCBoYXNoIHRhYmxlIGVudHJ5 IGlzIGNsZWFyZWQgYnkgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgp1cG9uIGNvbXBsZXRpbmcg dGhlIHRyYW5zYWN0aW9uLiBXb3JrZXJzIG5lZWRpbmcgdG8gd2FpdCBmb3IgYSB0cmFuc2FjdGlv biBjaGVjawp0aGUgc2hhcmVkIGhhc2ggdGFibGUgZW50cnk7IGlmIHByZXNlbnQsIHRoZXkgbG9j ayB0aGUgdHJhbnNhY3Rpb24gSUQgKHVzaW5nCnBhX2xvY2tfdHJhbnNhY3Rpb24pLiBJZiBhYnNl bnQsIGl0IGluZGljYXRlcyB0aGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4KY29tbWl0dGVkLCBuZWdh dGluZyB0aGUgbmVlZCB0byB3YWl0LgoKLS0KY29tbWl0IG9yZGVyCi0tCgpXZSBwcmVzZXJ2ZSBw dWJsaXNoZXIgY29tbWl0IG9yZGVyIGZvciBhbGwgdHJhbnNhY3Rpb25zIGZvciB0d28gcmVhc29u czoKCjEpIFVzZXItdmlzaWJsZSBjb25zaXN0ZW5jeQoKT3V0LW9mLW9yZGVyIGNvbW1pdHMgY2Fu IGV4cG9zZSBzdGF0ZXMgb24gdGhlIHN1YnNjcmliZXIgdGhhdCB3ZXJlIG5ldmVyIHZpc2libGUK b24gdGhlIHB1Ymxpc2hlci4KCkZvciBleGFtcGxlLCBzdXBwb3NlIGEgdXNlciB1cGRhdGVzIHRh YmxlIEEgYW5kIHRoZW4gdXBkYXRlcyB0YWJsZSBCIG9uIHRoZQpwdWJsaXNoZXIuIElmIHRoZSBz dWJzY3JpYmVyIGNvbW1pdHMgdGhvc2UgdHJhbnNhY3Rpb25zIG91dCBvZiBvcmRlciwgYSBxdWVy eQp0aGF0IHNlZXMgdGhlIGxhdGVzdCByb3cgaW4gQiBtaWdodCBzdGlsbCBzZWUgc3RhbGUgZGF0 YSBpbiBBLiBBbHRob3VnaCBldmVudHVhbApjb25zaXN0ZW5jeSB3b3VsZCBzdGlsbCBiZSByZWFj aGVkLCB0aGF0IGJlaGF2aW9yIG1heSBiZSB1bmFjY2VwdGFibGUgZm9yIHNvbWUKdXNlcnMuIElu IHRoZSBmdXR1cmUsIHdlIGNvdWxkIHByb3ZpZGUgYSBHVUMgdG8gYWxsb3cgb3V0LW9mLW9yZGVy IGNvbW1pdHMgZm9yCnVzZXJzIHdobyBwcmVmZXIgaGlnaGVyIHBhcmFsbGVsaXNtLgoKMikgUmVw bGljYXRpb24gcHJvZ3Jlc3MgdHJhY2tpbmcKCldlIGN1cnJlbnRseSB0cmFjayByZXBsaWNhdGlv biBwcm9ncmVzcyB1c2luZyB0cmFuc2FjdGlvbiBjb21taXQgTFNOcy4gV2l0aApvdXQtb2Ytb3Jk ZXIgY29tbWl0cywgdGhpcyBiZWNvbWVzIGFtYmlndW91cyBhZnRlciBmYWlsdXJlcy4KCkZvciBl eGFtcGxlLCBpZiBUWC0yIGlzIGFwcGxpZWQgYmVmb3JlIFRYLTEgYW5kIHJlcGxpY2F0aW9uIHN0 b3BzIGR1ZSB0byBhbgplcnJvciwgd2UgY2Fubm90IHJlbGlhYmx5IGRldGVybWluZSB3aGV0aGVy IFRYLTEgd2FzIGFwcGxpZWQgYmVmb3JlIHJlc3RhcnQuCkFzIGEgcmVzdWx0LCB0cmFuc2FjdGlv bnMgdGhhdCB3ZXJlIGFscmVhZHkgY29tbWl0dGVkIG9uIHRoZSBzdWJzY3JpYmVyIG1heQpiZSBy ZXBsYXllZC4KCi0tCndvcmtlciBpbnRlcmFjdGlvbgotLQoKQWZ0ZXIgc2VuZGluZyB0aGUgQ09N TUlUIG1lc3NhZ2UgZm9yIGEgdHJhbnNhY3Rpb24sIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyCmRv ZXMgbm90IHdhaXQgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdG8gZmluaXNoIGFwcGx5 aW5nIHRoYXQKdHJhbnNhY3Rpb24uIEluc3RlYWQsIGl0IHNlbmRzIGEgUEFfTVNHX1hBQ1RfREVQ RU5ERU5DWSBtZXNzYWdlIHRvCnRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIGluc3RydWN0aW5n IGl0IHRvIHdhaXQgZm9yIHRoZSBsYXN0IHRyYW5zYWN0aW9uIHRvCmNvbW1pdC4gVGhpcyBhbGxv d3MgdGhlIGxlYWRlciB0byByZW1haW4gYnVzeSByZWNlaXZpbmcgYW5kIGRpc3BhdGNoaW5nCmNo YW5nZXMgdG8gbW9yZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLCBlbmFibGluZyBncmVhdGVyIHBh cmFsbGVsaXNtIGluCnRyYW5zYWN0aW9uIGFwcGxpY2F0aW9uLgoKQXV0aG9yOiBaaGlqaWUgSG91 IDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPgpBdXRob3I6IEhheWF0byBLdXJvZGEgPGt1cm9kYS5o YXlhdG9AZnVqaXRzdS5jb20+Ci0tLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJh bGxlbHdvcmtlci5jIHwgMzQ4ICsrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Byb3RvLmMgICAgICAgfCAgMzggKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvcmVsYXRpb24uYyAgICB8ICAzMSArKwogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgMzU4ICsrKysrKysrKysrKysrKystLQogc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggICAgICAgIHwgICAyICsKIHNyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oICAgICB8ICAgMiArCiBzcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAgMTAgKy0KIHNyYy90ZXN0L3N1 YnNjcmlwdGlvbi9tZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDAxX3JlcF9jaGFuZ2VzLnBsICAgIHwgICAyICsKIHNyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAxMF90cnVuY2F0ZS5wbCAgICAgICB8ICAgMiArLQogc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgIHwgICA4ICstCiBzcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMjZfc3RhdHMucGwgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDI3X25vc3VwZXJ1c2VyLnBsICAgIHwgICAxICsKIHNyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzA1MF9wYXJhbGxlbF9hcHBseS5wbCB8IDIwMSArKysrKysrKysrCiBzcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDIgKwogMTUgZmlsZXMgY2hhbmdl ZCwgOTI5IGluc2VydGlvbnMoKyksIDc5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA1MF9wYXJhbGxlbF9hcHBseS5wbAoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5j IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMK aW5kZXggOGM4MWI2MWIwNTIuLjEwM2RiMThhMjViIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtMTQsNiArMTQs OSBAQAogICogUGFyYWxsZWxBcHBseVdvcmtlckluZm8gd2hpY2ggaXMgcmVxdWlyZWQgc28gdGhl IGxlYWRlciB3b3JrZXIgYW5kIHBhcmFsbGVsCiAgKiBhcHBseSB3b3JrZXJzIGNhbiBjb21tdW5p Y2F0ZSB3aXRoIGVhY2ggb3RoZXIuCiAgKgorICogU3RyZWFtaW5nIHRyYW5zYWN0aW9ucworICog PT09PT09PT09PT09PT09PT09PT09PQorICoKICAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJz IGFyZSBhc3NpZ25lZCAoaWYgYXZhaWxhYmxlKSBhcyBzb29uIGFzIHhhY3QncwogICogZmlyc3Qg c3RyZWFtIGlzIHJlY2VpdmVkIGZvciBzdWJzY3JpcHRpb25zIHRoYXQgaGF2ZSBzZXQgdGhlaXIg J3N0cmVhbWluZycKICAqIG9wdGlvbiBhcyBwYXJhbGxlbC4gVGhlIGxlYWRlciBhcHBseSB3b3Jr ZXIgd2lsbCBzZW5kIGNoYW5nZXMgdG8gdGhpcyBuZXcKQEAgLTM2LDEyICszOSw5IEBACiAgKiBp dHMgaW5mb3JtYXRpb24gaXMgYWRkZWQgdG8gdGhlIFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sLiBP bmNlIHRoZSB3b3JrZXIKICAqIGZpbmlzaGVzIGFwcGx5aW5nIHRoZSB0cmFuc2FjdGlvbiwgaXQg aXMgbWFya2VkIGFzIGF2YWlsYWJsZSBmb3IgcmUtdXNlLgogICogTm93LCBiZWZvcmUgc3RhcnRp bmcgYSBuZXcgd29ya2VyIHRvIGFwcGx5IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHdlCi0g KiBjaGVjayB0aGUgbGlzdCBmb3IgYW55IGF2YWlsYWJsZSB3b3JrZXIuIE5vdGUgdGhhdCB3ZSBy ZXRhaW4gYSBtYXhpbXVtIG9mCi0gKiBoYWxmIHRoZSBtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vy c19wZXJfc3Vic2NyaXB0aW9uIHdvcmtlcnMgaW4gdGhlIHBvb2wgYW5kCi0gKiBhZnRlciB0aGF0 LCB3ZSBzaW1wbHkgZXhpdCB0aGUgd29ya2VyIGFmdGVyIGFwcGx5aW5nIHRoZSB0cmFuc2FjdGlv bi4KLSAqCi0gKiBYWFggVGhpcyB3b3JrZXIgcG9vbCB0aHJlc2hvbGQgaXMgYXJiaXRyYXJ5IGFu ZCB3ZSBjYW4gcHJvdmlkZSBhIEdVQwotICogdmFyaWFibGUgZm9yIHRoaXMgaW4gdGhlIGZ1dHVy ZSBpZiByZXF1aXJlZC4KKyAqIGNoZWNrIHRoZSBsaXN0IGZvciBhbnkgYXZhaWxhYmxlIHdvcmtl ci4gV2UgZG8gbm90IHN0b3Agd29ya2VycyBpbiB0aGUgcG9vbAorICogdW5sZXNzIHBhcnRpYWwg b2YgdGhlIGNoYW5nZXMgb2YgdGhlIHRyYW5zYWN0aW9uIGFyZSBzZXJpYWxpemVkIGR1ZSB0byBh IHNlbmQKKyAqIHRpbWVvdXQuCiAgKgogICogVGhlIGxlYWRlciBhcHBseSB3b3JrZXIgd2lsbCBj cmVhdGUgYSBzZXBhcmF0ZSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudAogICogd2hlbiBl YWNoIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBzdGFydHMuIFRoZSByZWFzb24gZm9yIHRoaXMgZGVz aWduIGlzIHRoYXQKQEAgLTE1Miw2ICsxNTIsNzUgQEAKICAqIHNlc3Npb24tbGV2ZWwgbG9ja3Mg YmVjYXVzZSBib3RoIGxvY2tzIGNvdWxkIGJlIGFjcXVpcmVkIG91dHNpZGUgdGhlCiAgKiB0cmFu c2FjdGlvbiwgYW5kIHRoZSBzdHJlYW0gbG9jayBpbiB0aGUgbGVhZGVyIG5lZWRzIHRvIHBlcnNp c3QgYWNyb3NzCiAgKiB0cmFuc2FjdGlvbiBib3VuZGFyaWVzIGkuZS4gdW50aWwgdGhlIGVuZCBv ZiB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgorICoKKyAqIE5vbi1zdHJlYW1pbmcgdHJhbnNh Y3Rpb25zCisgKiA9PT09PT09PT09PT09PT09PT09PT09CisgKiBUaGUgaGFuZGxpbmcgaXMgc2lt aWxhciB0byBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLCBidXQgaW5jbHVkaW5nIGZldworICogZGlm ZmVyZW5jZXM6CisgKgorICogVHJhbnNhY3Rpb24gZGVwZW5kZW5jeQorICogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICogQmVmb3JlIGRpc3BhdGNoaW5nIGNoYW5nZXMgdG8gYSBwYXJhbGxlbCB3 b3JrZXIsIHRoZSBsZWFkZXIgdmVyaWZpZXMgaWYgdGhlCisgKiBjdXJyZW50IG1vZGlmaWNhdGlv biBhZmZlY3RzIHRoZSBzYW1lIHJvdyAoaWRlbnRpdGllZCBieSByZXBsaWNhIGlkZW50aXR5Cisg KiBrZXkpIGFzIGFub3RoZXIgb25nb2luZyB0cmFuc2FjdGlvbiAoc2VlIGhhbmRsZV9kZXBlbmRl bmN5X29uX2NoYW5nZSBmb3IKKyAqIGRldGFpbHMpLiBJZiBzbywgdGhlIGxlYWRlciBzZW5kcyBh IGxpc3Qgb2YgZGVwZW5kZW50IHRyYW5zYWN0aW9uIElEcyB0byB0aGUKKyAqIHBhcmFsbGVsIHdv cmtlciwgaW5kaWNhdGluZyB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgbXVzdCB3YWl0 IGZvcgorICogdGhlc2UgdHJhbnNhY3Rpb25zIHRvIGNvbW1pdCBiZWZvcmUgcHJvY2VlZGluZy4K KyAqCisgKiBUcmFja2luZyBkZXBlbmRlbmNpZXMgaXMgbmVjZXNzYXJ5IGV2ZW4gd2hlbiBjb21t aXQgb3JkZXIgaXMgcHJlc2VydmVkLgorICogQ29uc2lkZXIgdHdvIHRyYW5zYWN0aW9uczogVFgt MSAoSU5TRVJUIHJvdyAxKSBhbmQgVFgtMiAoREVMRVRFIHJvdyAxKS4gSWYKKyAqIGJvdGggYXJl IGFsbG93ZWQgdG8gYXBwbHkgaW4gcGFyYWxsZWwsIFRYLTIncyBERUxFVEUgY291bGQgYmUgYXBw bGllZCBiZWZvcmUKKyAqIFRYLTEncyBJTlNFUlQsIHJlc3VsdGluZyBpbiBhIGRlbGV0ZV9taXNz aW5nIGNvbmZsaWN0LgorICoKKyAqIENvbW1pdCBvcmRlcgorICogLS0tLS0tLS0tLS0tCisgKiBX ZSBwcmVzZXJ2ZSBwdWJsaXNoZXIgY29tbWl0IG9yZGVyIGZvciBhbGwgdHJhbnNhY3Rpb25zIGZv ciB0d28gcmVhc29uczoKKyAqCisgKiAxKSBVc2VyLXZpc2libGUgY29uc2lzdGVuY3kKKyAqCisg KiBPdXQtb2Ytb3JkZXIgY29tbWl0cyBjYW4gZXhwb3NlIHN0YXRlcyBvbiB0aGUgc3Vic2NyaWJl ciB0aGF0IHdlcmUgbmV2ZXIKKyAqIHZpc2libGUgb24gdGhlIHB1Ymxpc2hlci4KKyAqCisgKiBG b3IgZXhhbXBsZSwgc3VwcG9zZSBhIHVzZXIgdXBkYXRlcyB0YWJsZSBBIGFuZCB0aGVuIHVwZGF0 ZXMgdGFibGUgQiBvbiB0aGUKKyAqIHB1Ymxpc2hlci4gSWYgdGhlIHN1YnNjcmliZXIgY29tbWl0 cyB0aG9zZSB0cmFuc2FjdGlvbnMgb3V0IG9mIG9yZGVyLCBhCisgKiBxdWVyeSB0aGF0IHNlZXMg dGhlIGxhdGVzdCByb3cgaW4gQiBtaWdodCBzdGlsbCBzZWUgc3RhbGUgZGF0YSBpbiBBLgorICog QWx0aG91Z2ggZXZlbnR1YWwgY29uc2lzdGVuY3kgd291bGQgc3RpbGwgYmUgcmVhY2hlZCwgdGhh dCBiZWhhdmlvciBtYXkgYmUKKyAqIHVuYWNjZXB0YWJsZSBmb3Igc29tZSB1c2Vycy4gSW4gdGhl IGZ1dHVyZSwgd2UgY291bGQgcHJvdmlkZSBhIHN1YnNjcmlwdGlvbgorICogb3B0aW9uIHRvIGFs bG93IG91dC1vZi1vcmRlciBjb21taXRzIGZvciB1c2VycyB3aG8gcHJlZmVyIGhpZ2hlciBwYXJh bGxlbGlzbS4KKyAqCisgKiAyKSBSZXBsaWNhdGlvbiBwcm9ncmVzcyB0cmFja2luZworICoKKyAq IFdlIGN1cnJlbnRseSB0cmFjayByZXBsaWNhdGlvbiBwcm9ncmVzcyB1c2luZyB0aGUgbGFzdCB0 cmFuc2FjdGlvbidzIGNvbW1pdAorICogTFNOcy4gV2l0aCBvdXQtb2Ytb3JkZXIgY29tbWl0cywg dGhpcyBiZWNvbWVzIGFtYmlndW91cyBhZnRlciBmYWlsdXJlcy4KKyAqCisgKiBGb3IgZXhhbXBs ZSwgaWYgVFgtMiBpcyBhcHBsaWVkIGJlZm9yZSBUWC0xIGFuZCByZXBsaWNhdGlvbiBzdG9wcyBk dWUgdG8gYW4KKyAqIGVycm9yLCB3ZSBjYW5ub3QgcmVsaWFibHkgZGV0ZXJtaW5lIHdoZXRoZXIg VFgtMSB3YXMgYXBwbGllZCBiZWZvcmUgcmVzdGFydC4KKyAqIEFzIGEgcmVzdWx0LCB0cmFuc2Fj dGlvbnMgdGhhdCB3ZXJlIGFscmVhZHkgY29tbWl0dGVkIG9uIHRoZSBzdWJzY3JpYmVyIG1heQor ICogYmUgcmVwbGF5ZWQuCisgKgorICogV29ya2VyIGludGVyYWN0aW9uCisgKiAtLS0tLS0tLS0t LS0KKyAqIEFmdGVyIHNlbmRpbmcgdGhlIENPTU1JVCBtZXNzYWdlIGZvciBhIHRyYW5zYWN0aW9u LCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlcgorICogZG9lcyBub3Qgd2FpdCBmb3IgdGhlIHBhcmFs bGVsIGFwcGx5IHdvcmtlciB0byBmaW5pc2ggYXBwbHlpbmcgdGhhdAorICogdHJhbnNhY3Rpb24u IEluc3RlYWQsIGl0IHNlbmRzIGEgUEFfTVNHX1hBQ1RfREVQRU5ERU5DWSBtZXNzYWdlIHRvCisg KiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCBpbnN0cnVjdGluZyBpdCB0byB3YWl0IGZvciB0 aGUgbGFzdCB0cmFuc2FjdGlvbiB0bworICogY29tbWl0LiBUaGlzIGFsbG93cyB0aGUgbGVhZGVy IHRvIHJlbWFpbiBidXN5IHJlY2VpdmluZyBhbmQgZGlzcGF0Y2hpbmcKKyAqIGNoYW5nZXMgdG8g bW9yZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLCBlbmFibGluZyBncmVhdGVyIHBhcmFsbGVsaXNt IGluCisgKiB0cmFuc2FjdGlvbiBhcHBsaWNhdGlvbi4KKyAqCisgKiBMb2NraW5nIGNvbnNpZGVy YXRpb25zCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBXaGVuIGhhbmRsaW5nIGEgUEFf TVNHX1JFTE1BUCBtZXNzYWdlLCB0aGUgd29ya2VyIGF0dGVtcHRzCisgKiB0byBhY3F1aXJlIHRo ZSB0cmFuc2FjdGlvbiBsb2NrIG9mIHRoZSBkZXBlbmRlZCB0cmFuc2FjdGlvbiBhbmQgcmVsZWFz ZXMgaXQKKyAqIGltbWVkaWF0ZWx5IGFmdGVyIGFjcXVpc2l0aW9uIChzZWUgcGFfd2FpdF9mb3Jf ZGVwZW5kZWRfdHJhbnNhY3Rpb24pLiBUaGlzCisgKiBhbGxvd3MgZGVhZGxvY2sgZGV0ZWN0aW9u IHdoZW4gb25lIHdvcmtlciAoZWl0aGVyIGxlYWRlciBvciBwYXJhbGxlbCBhcHBseQorICogd29y a2VyKSBpcyB3YWl0aW5nIGZvciBhIGRlcGVuZGVuY3kgb24gYSB0cmFuc2FjdGlvbiBiZWluZyBh cHBsaWVkIGJ5IGFub3RoZXIKKyAqIHdvcmtlciwgd2hpbGUgdGhhdCBvdGhlciB3b3JrZXIgaXMg YWxzbyBibG9ja2VkIGJ5IGEgbG9jayBoZWxkIGJ5IHRoZSBmaXJzdAorICogd29ya2VyLgorICoK KyAqIFRoZSBsb2NrIGdyYXBoIGZvciB0aGUgYWJvdmUgZXhhbXBsZSB3aWxsIGxvb2sgYXMgZm9s bG93czogV29ya2VyXzEgKHdhaXRpbmcKKyAqIGZvciBkZXBlbmRlZCB0cmFuc2FjdGlvbiB0byBm aW5pc2gpIC0+IFdvcmtlcl8yICh3YWl0aW5nIHRvIGFjcXVpcmUgYQorICogcmVsYXRpb24gbG9j aykgLT4gV29ya2VyXzEKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKQEAgLTMwNyw2ICszNzYs NyBAQCBzdGF0aWMgUGFyYWxsZWxUcmFuc1N0YXRlIHBhX2dldF94YWN0X3N0YXRlKFBhcmFsbGVs QXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQpOwogc3RhdGljIFBhcnRpYWxGaWxlU2V0U3RhdGUg cGFfZ2V0X2ZpbGVzZXRfc3RhdGUodm9pZCk7CiBzdGF0aWMgdm9pZCBwYV9hdHRhY2hfcGFyYWxs ZWxpemVkX3R4bl9oYXNoKGRzYV9oYW5kbGUgKnBhX2RzYV9oYW5kbGUsCiAJCQkJCQkJCQkJCWRz aGFzaF90YWJsZV9oYW5kbGUgKnBhX2RzaGFzaF9oYW5kbGUpOworc3RhdGljIHZvaWQgd3JpdGVf aW50ZXJuYWxfcmVsYXRpb24oU3RyaW5nSW5mbyBzLCBMb2dpY2FsUmVwUmVsYXRpb24gKnJlbCk7 CiAKIC8qCiAgKiBSZXR1cm5zIHRydWUgaWYgaXQgaXMgT0sgdG8gc3RhcnQgYSBwYXJhbGxlbCBh cHBseSB3b3JrZXIsIGZhbHNlIG90aGVyd2lzZS4KQEAgLTQyNCw2ICs0OTQsNyBAQCBwYV9zZXR1 cF9kc20oUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQogCXNoYXJlZCA9IHNobV90b2Nf YWxsb2NhdGUodG9jLCBzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCkpOwogCVNwaW5M b2NrSW5pdCgmc2hhcmVkLT5tdXRleCk7CiAKKwlzaGFyZWQtPnhpZCA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwogCXNoYXJlZC0+eGFjdF9zdGF0ZSA9IFBBUkFMTEVMX1RSQU5TX1VOS05PV047CiAJ cGdfYXRvbWljX2luaXRfdTMyKCYoc2hhcmVkLT5wZW5kaW5nX3N0cmVhbV9jb3VudCksIDApOwog CXNoYXJlZC0+bGFzdF9jb21taXRfZW5kID0gSW52YWxpZFhMb2dSZWNQdHI7CkBAIC00NjcsNiAr NTM4LDggQEAgcGFfbGF1bmNoX3BhcmFsbGVsX3dvcmtlcih2b2lkKQogCU1lbW9yeUNvbnRleHQg b2xkY29udGV4dDsKIAlib29sCQlsYXVuY2hlZDsKIAlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAq d2luZm87CisJZHNhX2hhbmRsZQlwYV9kc2FfaGFuZGxlOworCWRzaGFzaF90YWJsZV9oYW5kbGUg cGFfZHNoYXNoX2hhbmRsZTsKIAlMaXN0Q2VsbCAgICpsYzsKIAogCS8qIFRyeSB0byBnZXQgYW4g YXZhaWxhYmxlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmcm9tIHRoZSB3b3JrZXIgcG9vbC4gKi8K QEAgLTQ3Niw4ICs1NDksMzYgQEAgcGFfbGF1bmNoX3BhcmFsbGVsX3dvcmtlcih2b2lkKQogCiAJ CWlmICghd2luZm8tPmluX3VzZSkKIAkJCXJldHVybiB3aW5mbzsKKworCQkvKgorCQkgKiBUaGUg bGVhZGVyIGRvZXMgbm90IGV4cGxpY2l0bHkgZnJlZSB3b3JrZXJzIHRoYXQgaGFuZGxlIG5vbi1z dHJlYW1pbmcKKwkJICogdHJhbnNhY3Rpb25zLCBzbyB3ZSBjaGVjayB3aGV0aGVyIHRoZSB0cmFu c2FjdGlvbiBoYXMgY29tbWl0dGVkLCBhbmQKKwkJICogaWYgc28sIHJldXNlIHRoZSB3b3JrZXIu CisJCSAqLworCQlpZiAoIXdpbmZvLT5zdHJlYW1fdHhuICYmCisJCQlwYV9nZXRfeGFjdF9zdGF0 ZSh3aW5mby0+c2hhcmVkKSA9PSBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCkKKwkJeworCQkJLyoK KwkJCSAqIFNhdmUgdGhlIGxvY2FsIGNvbW1pdCBMU04gb2YgdGhlIGxhc3QgdHJhbnNhY3Rpb24g YXBwbGllZCBieQorCQkJICogdGhpcyB3b3JrZXIgYmVmb3JlIHJldXNpbmcgaXQgZm9yIGFub3Ro ZXIgdHJhbnNhY3Rpb24uIFRoaXMgV0FMCisJCQkgKiBwb3NpdGlvbiBpcyBjcnVjaWFsIGZvciBk ZXRlcm1pbmluZyB0aGUgZmx1c2ggcG9zaXRpb24gaW4KKwkJCSAqIHJlc3BvbnNlcyB0byB0aGUg cHVibGlzaGVyIChzZWUgZ2V0X2ZsdXNoX3Bvc2l0aW9uKCkpLgorCQkJICovCisJCQkodm9pZCkg cGFfZ2V0X2xhc3RfY29tbWl0X2VuZCh3aW5mby0+c2hhcmVkLT54aWQsIGZhbHNlLCBOVUxMKTsK KwkJCXJldHVybiB3aW5mbzsKKwkJfQogCX0KIAorCXBhX2F0dGFjaF9wYXJhbGxlbGl6ZWRfdHhu X2hhc2goJnBhX2RzYV9oYW5kbGUsICZwYV9kc2hhc2hfaGFuZGxlKTsKKworCS8qCisJICogUmV0 dXJuIGlmIHRoZSBudW1iZXIgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBoYXMgcmVhY2hlZCB0 aGUgbWF4aW11bQorCSAqIGxpbWl0LgorCSAqLworCWlmIChsaXN0X2xlbmd0aChQYXJhbGxlbEFw cGx5V29ya2VyUG9vbCkgPT0KKwkJbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNj cmlwdGlvbikKKwkJcmV0dXJuIE5VTEw7CisKIAkvKgogCSAqIFN0YXJ0IGEgbmV3IHBhcmFsbGVs IGFwcGx5IHdvcmtlci4KIAkgKgpAQCAtNTA1LDE4ICs2MDYsNTAgQEAgcGFfbGF1bmNoX3BhcmFs bGVsX3dvcmtlcih2b2lkKQogCQkJCQkJCQkJCWRzbV9zZWdtZW50X2hhbmRsZSh3aW5mby0+ZHNt X3NlZyksCiAJCQkJCQkJCQkJZmFsc2UpOwogCi0JaWYgKGxhdW5jaGVkKQotCXsKLQkJUGFyYWxs ZWxBcHBseVdvcmtlclBvb2wgPSBsYXBwZW5kKFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sLCB3aW5m byk7Ci0JfQotCWVsc2UKKwlpZiAoIWxhdW5jaGVkKQogCXsKKwkJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGNvbnRleHQpOwogCQlwYV9mcmVlX3dvcmtlcl9pbmZvKHdpbmZvKTsKLQkJd2luZm8g PSBOVUxMOworCQlyZXR1cm4gTlVMTDsKIAl9CiAKKwlQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCA9 IGxhcHBlbmQoUGFyYWxsZWxBcHBseVdvcmtlclBvb2wsIHdpbmZvKTsKKwogCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAorCS8qCisJICogU2VuZCBhbGwgZXhpc3RpbmcgcmVt b3RlIHJlbGF0aW9uIGluZm9ybWF0aW9uIHRvIHRoZSBwYXJhbGxlbCBhcHBseQorCSAqIHdvcmtl ci4gVGhpcyBhbGxvd3MgdGhlIHBhcmFsbGVsIHdvcmtlciB0byBpbml0aWFsaXplIHRoZQorCSAq IExvZ2ljYWxSZXBSZWxNYXBFbnRyeSBsb2NhbGx5IGJlZm9yZSBhcHBseWluZyByZW1vdGUgY2hh bmdlcy4gVGhpcyBpcworCSAqIG5lZWRlZCBzaW5jZSB0aGUgd2Fsc2VuZGVyIGRvZXMgbm90IHNl bmQgcmVtb3RlIHJlbGF0aW9uIGluZm9ybWF0aW9uCisJICogd2l0aCBldmVyeSB0cmFuc2FjdGlv bi4KKwkgKi8KKwlpZiAobG9naWNhbHJlcF9nZXRfbnVtX3JlbHMoKSkKKwl7CisJCVN0cmluZ0lu Zm9EYXRhIG91dDsKKwkJc2htX21xX3Jlc3VsdCByZXN1bHQ7CisKKwkJaW5pdFN0cmluZ0luZm8o Jm91dCk7CisKKwkJd3JpdGVfaW50ZXJuYWxfcmVsYXRpb24oJm91dCwgTlVMTCk7CisKKwkJLyoK KwkJICogU2VuZCByZWxhdGlvbiBpbmZvcm1hdGlvbiBzeW5jaHJvbm91c2x5IHJhdGhlciB0aGFu IHVzaW5nCisJCSAqIG5vbi1ibG9ja2luZyBzZW5kIChwYV9zZW5kX2RhdGEpLiBUaGlzIGF2b2lk cyB0aGUgbmVlZCB0byBzZXJpYWxpemUKKwkJICogdGhlIGRhdGEsIHdoaWNoIHdvdWxkIGFkZCBj b21wbGV4aXR5IGZvciB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRvCisJCSAqIGRlc2VyaWFs aXplIG91dHNpZGUgb2YgdHJhbnNhY3Rpb24gYXBwbGljYXRpb24uCisJCSAqCisJCSAqIFRoaXMg aXMgc2FmZSBmcm9tIGRlYWRsb2NrcyBiZWNhdXNlIGEgbmV3bHkgc3RhcnRlZCB3b3JrZXIgZG9l cyBub3QKKwkJICogaG9sZCBhbnkgc3Ryb25nIGxvY2tzIHdoZW4gcHJvY2Vzc2luZyByZWxhdGlv biBpbmZvcm1hdGlvbi4KKwkJICovCisJCXJlc3VsdCA9IHNobV9tcV9zZW5kKHdpbmZvLT5tcV9o YW5kbGUsIG91dC5sZW4sIG91dC5kYXRhLCBmYWxzZSwgdHJ1ZSk7CisKKwkJaWYgKHJlc3VsdCAh PSBTSE1fTVFfU1VDQ0VTUykKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09E RV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCWVycm1zZygiY291bGQg bm90IHNlbmQgcmVtb3RlIHJlbGF0aW9uIGluZm9ybWF0aW9uIHRvIHRoZSBsb2dpY2FsIHJlcGxp Y2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIpKTsKKwl9CisKIAlyZXR1cm4gd2luZm87CiB9 CiAKQEAgLTYyMSwyNSArNzU0LDI3IEBAIHBhX2ZyZWVfd29ya2VyKFBhcmFsbGVsQXBwbHlXb3Jr ZXJJbmZvICp3aW5mbykKIHsKIAlBc3NlcnQoIWFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKTsK IAlBc3NlcnQod2luZm8tPmluX3VzZSk7Ci0JQXNzZXJ0KHBhX2dldF94YWN0X3N0YXRlKHdpbmZv LT5zaGFyZWQpID09IFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEKTsKKwlBc3NlcnQoIXdpbmZvLT5z dHJlYW1fdHhuIHx8CisJCSAgIHBhX2dldF94YWN0X3N0YXRlKHdpbmZvLT5zaGFyZWQpID09IFBB UkFMTEVMX1RSQU5TX0ZJTklTSEVEKTsKIAogCWlmICghaGFzaF9zZWFyY2goUGFyYWxsZWxBcHBs eVR4bkhhc2gsICZ3aW5mby0+c2hhcmVkLT54aWQsIEhBU0hfUkVNT1ZFLCBOVUxMKSkKIAkJZWxv ZyhFUlJPUiwgImhhc2ggdGFibGUgY29ycnVwdGVkIik7CiAKIAkvKgotCSAqIFN0b3AgdGhlIHdv cmtlciBpZiB0aGVyZSBhcmUgZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHBvb2wuCisJICogWFhYIHdl IHN0b3AgdGhlIHdvcmtlciBpZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBzZXJpYWxpemUgcGFy dCBvZiB0aGUKKwkgKiB0cmFuc2FjdGlvbiBkYXRhIGR1ZSB0byBhIHNlbmQgdGltZW91dC4gVGhp cyBpcyBiZWNhdXNlIHRoZSBtZXNzYWdlIGNvdWxkCisJICogYmUgcGFydGlhbGx5IHdyaXR0ZW4g dG8gdGhlIHF1ZXVlIGFuZCB0aGVyZSBpcyBubyB3YXkgdG8gY2xlYW4gdGhlIHF1ZXVlCisJICog b3RoZXIgdGhhbiByZXNlbmRpbmcgdGhlIG1lc3NhZ2UgdW50aWwgaXQgc3VjY2VlZHMuIEluc3Rl YWQgb2YgdHJ5aW5nIHRvCisJICogc2VuZCB0aGUgZGF0YSB3aGljaCBhbnl3YXkgd291bGQgaGF2 ZSBiZWVuIHNlcmlhbGl6ZWQgYW5kIHRoZW4gbGV0dGluZworCSAqIHRoZSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgZGVhbCB3aXRoIHRoZSBzcHVyaW91cyBtZXNzYWdlLCB3ZSBzdG9wIHRoZQorCSAq IHdvcmtlci4KIAkgKgotCSAqIFhYWCBBZGRpdGlvbmFsbHksIHdlIGFsc28gc3RvcCB0aGUgd29y a2VyIGlmIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyCi0JICogc2VyaWFsaXplIHBhcnQgb2YgdGhl IHRyYW5zYWN0aW9uIGRhdGEgZHVlIHRvIGEgc2VuZCB0aW1lb3V0LiBUaGlzIGlzCi0JICogYmVj YXVzZSB0aGUgbWVzc2FnZSBjb3VsZCBiZSBwYXJ0aWFsbHkgd3JpdHRlbiB0byB0aGUgcXVldWUg YW5kIHRoZXJlCi0JICogaXMgbm8gd2F5IHRvIGNsZWFuIHRoZSBxdWV1ZSBvdGhlciB0aGFuIHJl c2VuZGluZyB0aGUgbWVzc2FnZSB1bnRpbCBpdAotCSAqIHN1Y2NlZWRzLiBJbnN0ZWFkIG9mIHRy eWluZyB0byBzZW5kIHRoZSBkYXRhIHdoaWNoIGFueXdheSB3b3VsZCBoYXZlCi0JICogYmVlbiBz ZXJpYWxpemVkIGFuZCB0aGVuIGxldHRpbmcgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBkZWFs IHdpdGgKLQkgKiB0aGUgc3B1cmlvdXMgbWVzc2FnZSwgd2Ugc3RvcCB0aGUgd29ya2VyLgorCSAq IEZvciBvdGhlciBjYXNlcywgd2UgZG8gbm90IHN0b3Agd29ya2VycyBvbmNlIHN0YXJ0ZWQuIEFs bCB0cmFuc2FjdGlvbnMKKwkgKiAod2hldGhlciBzdHJlYW1lZCBvciBub3QpIGFyZSBhc3NpZ25l ZCB0byBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLCBzbworCSAqIHJlc3RhcnRpbmcgd29ya2VycyBm cmVxdWVudGx5IHdvdWxkIG9ubHkgaW5jcmVhc2UgQ1BVIG92ZXJoZWFkIGFuZCBzbG93CisJICog ZG93biB0aGUgbGVhZGVyJ3MgYWJpbGl0eSB0byBkaXNwYXRjaCBjaGFuZ2VzIHRvIHdvcmtlcnMu CiAJICovCi0JaWYgKHdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyB8fAotCQlsaXN0X2xlbmd0aChQ YXJhbGxlbEFwcGx5V29ya2VyUG9vbCkgPgotCQkobWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNf cGVyX3N1YnNjcmlwdGlvbiAvIDIpKQorCWlmICh3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMpCiAJ ewogCQlsb2dpY2FscmVwX3BhX3dvcmtlcl9zdG9wKHdpbmZvKTsKIAkJcGFfZnJlZV93b3JrZXJf aW5mbyh3aW5mbyk7CkBAIC03NzIsMTUgKzkwNywxNyBAQCBwYV9wcm9jZXNzX3Nwb29sZWRfbWVz c2FnZXNfaWZfcmVxdWlyZWQodm9pZCkKIC8qCiAgKiBHZXQgdGhlIGxvY2FsIGVuZCBMU04gZm9y IGEgdHJhbnNhY3Rpb24gYXBwbGllZCBieSBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KICAqCisg KiBTZXQgZGVsZXRlX2VudHJ5IHRvIHRydWUgaWYgeW91IGludGVuZCB0byByZW1vdmUgdGhlIHRy YW5zYWN0aW9uIGZyb20gdGhlCisgKiBQYXJhbGxlbEFwcGx5VHhuSGFzaCBhZnRlciBjb2xsZWN0 aW5nIGl0cyBMU04uIE90aGVyd2lzZSwgdGhlIGxvY2FsIGVuZCBMU04KKyAqIGlzIGNvcGllZCBm cm9tIHNoYXJlZCBtZW1vcnkgaW50byB0aGUgbG9jYWwgZW50cnkgb2YgUGFyYWxsZWxBcHBseVR4 bkhhc2ggZm9yCisgKiBsYXRlciBjb2xsZWN0aW9uIGJ5IHRoZSBsZWFkZXIuCisgKgogICogSWYg dGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBkaWQgbm90IHdyaXRlIGFueSBjaGFuZ2VzIGR1cmlu ZyB0aGUgdHJhbnNhY3Rpb24KICAqIGFwcGxpY2F0aW9uIGR1ZSB0byBzaXR1YXRpb25zIGxpa2Ug dXBkYXRlL2RlbGV0ZV9taXNzaW5nIG9yIGEgYmVmb3JlIHRyaWdnZXIsCiAgKiB0aGUgKnNraXBw ZWRfd3JpdGUgd2lsbCBiZSBzZXQgdG8gdHJ1ZS4KLSAqCi0gKiBPbmNlIHRoZSBMU04gaXMgcmV0 cmlldmVkLCB0aGUgdHJhbnNhY3Rpb24gZW50cnkgaXMgcmVtb3ZlZCBmcm9tCi0gKiBQYXJhbGxl bEFwcGx5VHhuSGFzaC4KICAqLwogWExvZ1JlY1B0cgotcGFfZ2V0X2xhc3RfY29tbWl0X2VuZChU cmFuc2FjdGlvbklkIHhpZCwgYm9vbCAqc2tpcHBlZF93cml0ZSkKK3BhX2dldF9sYXN0X2NvbW1p dF9lbmQoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgZGVsZXRlX2VudHJ5LCBib29sICpza2lwcGVk X3dyaXRlKQogewogCWJvb2wJCWZvdW5kOwogCVBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeSAqZW50 cnk7CkBAIC04MDYsNyArOTQzLDggQEAgcGFfZ2V0X2xhc3RfY29tbWl0X2VuZChUcmFuc2FjdGlv bklkIHhpZCwgYm9vbCAqc2tpcHBlZF93cml0ZSkKIAl3aW5mbyA9IGVudHJ5LT53aW5mbzsKIAlp ZiAod2luZm8gPT0gTlVMTCkKIAl7Ci0JCWlmICghaGFzaF9zZWFyY2goUGFyYWxsZWxBcHBseVR4 bkhhc2gsICZ4aWQsIEhBU0hfUkVNT1ZFLCBOVUxMKSkKKwkJaWYgKGRlbGV0ZV9lbnRyeSAmJgor CQkJIWhhc2hfc2VhcmNoKFBhcmFsbGVsQXBwbHlUeG5IYXNoLCAmeGlkLCBIQVNIX1JFTU9WRSwg TlVMTCkpCiAJCQllbG9nKEVSUk9SLCAiaGFzaCB0YWJsZSBjb3JydXB0ZWQiKTsKIAogCQlpZiAo c2tpcHBlZF93cml0ZSkKQEAgLTgyOSw3ICs5NjcsOCBAQCBwYV9nZXRfbGFzdF9jb21taXRfZW5k KFRyYW5zYWN0aW9uSWQgeGlkLCBib29sICpza2lwcGVkX3dyaXRlKQogCWVsb2coREVCVUcxLCAi c3RvcmUgbG9jYWwgY29tbWl0ICVYLyVYIGVuZCB0byB0eG4gZW50cnk6ICV1IiwKIAkJIExTTl9G T1JNQVRfQVJHUyhlbnRyeS0+bG9jYWxfZW5kKSwgeGlkKTsKIAotCWlmICghaGFzaF9zZWFyY2go UGFyYWxsZWxBcHBseVR4bkhhc2gsICZ4aWQsIEhBU0hfUkVNT1ZFLCBOVUxMKSkKKwlpZiAoZGVs ZXRlX2VudHJ5ICYmCisJCSFoYXNoX3NlYXJjaChQYXJhbGxlbEFwcGx5VHhuSGFzaCwgJnhpZCwg SEFTSF9SRU1PVkUsIE5VTEwpKQogCQllbG9nKEVSUk9SLCAiaGFzaCB0YWJsZSBjb3JydXB0ZWQi KTsKIAogCXJldHVybiBlbnRyeS0+bG9jYWxfZW5kOwpAQCAtMTA4Miw2ICsxMjIxLDkgQEAgcGFf c2h1dGRvd24oaW50IGNvZGUsIERhdHVtIGFyZykKIAkJCQkgICBJTlZBTElEX1BST0NfTlVNQkVS KTsKIAogCWRzbV9kZXRhY2goKGRzbV9zZWdtZW50ICopIERhdHVtR2V0UG9pbnRlcihhcmcpKTsK KworCWlmIChwYXJhbGxlbF9hcHBseV9kc2FfYXJlYSkKKwkJZHNhX2RldGFjaChwYXJhbGxlbF9h cHBseV9kc2FfYXJlYSk7CiB9CiAKIC8qCkBAIC0xMzkzLDcgKzE1MzUsNiBAQCBwYV9zZW5kX2Rh dGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRlcywgY29uc3Qgdm9p ZCAqZGF0YSkKIAlzaG1fbXFfcmVzdWx0IHJlc3VsdDsKIAlUaW1lc3RhbXBUeiBzdGFydFRpbWUg PSAwOwogCi0JQXNzZXJ0KCFJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CiAJQXNzZXJ0KCF3aW5mby0+ c2VyaWFsaXplX2NoYW5nZXMpOwogCiAJLyoKQEAgLTE0NDUsNiArMTU4Niw1OCBAQCBwYV9zZW5k X2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRlcywgY29uc3Qg dm9pZCAqZGF0YSkKIAl9CiB9CiAKKy8qCisgKiBEaXN0cmlidXRlIHJlbW90ZSByZWxhdGlvbiBp bmZvcm1hdGlvbiB0byBhbGwgYWN0aXZlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMKKyAqIHRoYXQg cmVxdWlyZSBpdC4KKyAqLwordm9pZAorcGFfZGlzdHJpYnV0ZV9zY2hlbWFfY2hhbmdlc190b193 b3JrZXJzKExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVsKQoreworCVN0cmluZ0luZm9EYXRhIG91dDsK KworCS8qIE9ubHkgbGVhZGVyIGFwcGx5IHdvcmtlcnMgY2FuIGRpc3RyaWJ1dGUgc2NoZW1hIGNo YW5nZXMgKi8KKwlpZiAoIWFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuOworCisJ LyogUXVpY2sgZXhpdCBpZiB0aGVyZSBhcmUgbm8gcGFyYWxsZWwgYXBwbHkgd29ya2VycyAqLwor CWlmICghUGFyYWxsZWxBcHBseVdvcmtlclBvb2wpCisJCXJldHVybjsKKworCWluaXRTdHJpbmdJ bmZvKCZvdXQpOworCisJd3JpdGVfaW50ZXJuYWxfcmVsYXRpb24oJm91dCwgcmVsKTsKKworCWZv cmVhY2hfcHRyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvLCB3aW5mbywgUGFyYWxsZWxBcHBseVdv cmtlclBvb2wpCisJeworCQkvKgorCQkgKiBTa2lwIHRoZSB3b3JrZXIgcmVzcG9uc2libGUgZm9y IHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uLCBhcyB0aGUKKwkJICogcmVsYXRpb24gaW5mb3JtYXRp b24gaGFzIGFscmVhZHkgYmVlbiBzZW50IHRvIGl0LgorCQkgKi8KKwkJaWYgKHdpbmZvID09IHN0 cmVhbV9hcHBseV93b3JrZXIpCisJCQljb250aW51ZTsKKworCQkvKgorCQkgKiBTa2lwIHRoZSB3 b3JrZXIgdGhhdCBpcyBpbiBzZXJpYWxpemUgbW9kZSwgYXMgdGhleSB3aWxsIHNvb24gc3RvcAor CQkgKiBvbmNlIHRoZXkgZmluaXNoIGFwcGx5aW5nIHRoZSB0cmFuc2FjdGlvbi4KKwkJICovCisJ CWlmICh3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMpCisJCQljb250aW51ZTsKKworCQllbG9nKERF QlVHMSwgImRpc3RyaWJ1dGluZyBzY2hlbWEgY2hhbmdlcyB0byBwYSB3b3JrZXJzIik7CisKKwkJ aWYgKHBhX3NlbmRfZGF0YSh3aW5mbywgb3V0Lmxlbiwgb3V0LmRhdGEpKQorCQkJY29udGludWU7 CisKKwkJLyoKKwkJICogVE9ETzogU3VwcG9ydCBzd2l0Y2hpbmcgdG8gUEFSVElBTF9TRVJJQUxJ WkUgbW9kZSB3aGVuIHRoZSBzZW5kCisJCSAqIGJ1ZmZlciBiZWNvbWVzIGZ1bGwuCisJCSAqLwor CQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJF UVVJU0lURV9TVEFURSksCisJCQkJZXJybXNnKCJjb3VsZCBub3Qgc2VuZCBkYXRhIHRvIHRoZSBs b2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9u IikpOworCX0KK30KKwogLyoKICAqIFN3aXRjaCB0byBQQVJUSUFMX1NFUklBTElaRSBtb2RlIGZv ciB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiAtLSB0aGlzIG1lYW5zCiAgKiB0aGF0IHRoZSBjdXJy ZW50IGRhdGEgYW5kIGFueSBzdWJzZXF1ZW50IGRhdGEgZm9yIHRoaXMgdHJhbnNhY3Rpb24gd2ls bCBiZQpAQCAtMTg2MSwyNSArMjA1NCw0MSBAQCBwYV9kZWNyX2FuZF93YWl0X3N0cmVhbV9ibG9j ayh2b2lkKQogdm9pZAogcGFfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndp bmZvLCBYTG9nUmVjUHRyIHJlbW90ZV9sc24pCiB7CisJWExvZ1JlY1B0cglsb2NhbF9sc24gPSBJ bnZhbGlkWExvZ1JlY1B0cjsKKwlUcmFuc2FjdGlvbklkIHBhX3JlbW90ZV94aWQgPSB3aW5mby0+ c2hhcmVkLT54aWQ7CisKIAlBc3NlcnQoYW1fbGVhZGVyX2FwcGx5X3dvcmtlcigpKTsKIAogCS8q Ci0JICogVW5sb2NrIHRoZSBzaGFyZWQgb2JqZWN0IGxvY2sgc28gdGhhdCBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgY2FuCi0JICogY29udGludWUgdG8gcmVjZWl2ZSBhbmQgYXBwbHkgY2hhbmdlcy4K KwkgKiBVbmxvY2sgdGhlIHNoYXJlZCBvYmplY3QgbG9jayB0YWtlbiBmb3Igc3RyZWFtaW5nIHRy YW5zYWN0aW9ucyBzbyB0aGF0CisJICogcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNhbiBjb250aW51 ZSB0byByZWNlaXZlIGFuZCBhcHBseSBjaGFuZ2VzLgogCSAqLwotCXBhX3VubG9ja19zdHJlYW0o d2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKwlpZiAod2luZm8tPnN0 cmVhbV90eG4pCisJCXBhX3VubG9ja19zdHJlYW0od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NF eGNsdXNpdmVMb2NrKTsKIAogCS8qCi0JICogV2FpdCBmb3IgdGhhdCB3b3JrZXIgdG8gZmluaXNo LiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBtYWludGFpbiBjb21taXQKLQkgKiBvcmRlciB3aGljaCBh dm9pZHMgZmFpbHVyZXMgZHVlIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQKLQkgKiBk ZWFkbG9ja3MuCisJICogV2FpdCBmb3IgdGhhdCB3b3JrZXIgZm9yIHN0cmVhbWluZyB0cmFuc2Fj dGlvbiB0byBmaW5pc2guIFRoaXMgaXMKKwkgKiBuZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0 IG9yZGVyIHdoaWNoIGF2b2lkcyBmYWlsdXJlcyBkdWUgdG8KKwkgKiB0cmFuc2FjdGlvbiBkZXBl bmRlbmNpZXMgYW5kIGRlYWRsb2Nrcy4KKwkgKgorCSAqIEZvciB0cmFuc2FjdGlvbnMgaW4gcGFy dGlhbCBzZXJhbGl6ZSBtb2RlLCB3YWl0IGZvciBzdG9wIGFzIHdlbGwgYXMgdGhlCisJICogd29y a2VyIGlzIGFueXdheSBjYW5ub3QgYmUgcmV1c2VkIGFueW1vcmUgKHNlZSBwYV9mcmVlX3dvcmtl cigpIGZvcgorCSAqIGRldGFpbHMpLgogCSAqLwotCXBhX3dhaXRfZm9yX3hhY3RfZmluaXNoKHdp bmZvKTsKKwlpZiAod2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzIHx8IHdpbmZvLT5zdHJlYW1fdHhu KQorCXsKKwkJcGFfd2FpdF9mb3JfeGFjdF9maW5pc2god2luZm8pOworCisJCWxvY2FsX2xzbiA9 IHdpbmZvLT5zaGFyZWQtPmxhc3RfY29tbWl0X2VuZDsKKwkJcGFfcmVtb3RlX3hpZCA9IEludmFs aWRUcmFuc2FjdGlvbklkOworCisJCXBhX2ZyZWVfd29ya2VyKHdpbmZvKTsKKwl9CiAKIAlpZiAo WExvZ1JlY1B0cklzVmFsaWQocmVtb3RlX2xzbikpCi0JCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHJl bW90ZV9sc24sIHdpbmZvLT5zaGFyZWQtPmxhc3RfY29tbWl0X2VuZCk7CisJCXN0b3JlX2ZsdXNo X3Bvc2l0aW9uKHJlbW90ZV9sc24sIGxvY2FsX2xzbiwgcGFfcmVtb3RlX3hpZCk7CiAKLQlwYV9m cmVlX3dvcmtlcih3aW5mbyk7CisJcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIoTlVMTCk7CiB9 CiAKIC8qCkBAIC0yMDEzLDMgKzIyMjIsNjIgQEAgcGFfd2FpdF9mb3JfZGVwZW5kZWRfdHJhbnNh Y3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQpCiAKIAllbG9nKERFQlVHMSwgImZpbmlzaCB3YWl0aW5n IGZvciBkZXBlbmRlZCB4aWQgJXUiLCB4aWQpOwogfQorCisvKgorICogTWFyayB0aGUgdHJhbnNh Y3Rpb24gc3RhdGUgYXMgZmluaXNoZWQgYW5kIHJlbW92ZSB0aGUgc2hhcmVkIGhhc2ggZW50cnku CisgKi8KK3ZvaWQKK3BhX2NvbW1pdF90cmFuc2FjdGlvbih2b2lkKQoreworCVRyYW5zYWN0aW9u SWQgeGlkID0gTXlQYXJhbGxlbFNoYXJlZC0+eGlkOworCisJU3BpbkxvY2tBY3F1aXJlKCZNeVBh cmFsbGVsU2hhcmVkLT5tdXRleCk7CisJTXlQYXJhbGxlbFNoYXJlZC0+eGFjdF9zdGF0ZSA9IFBB UkFMTEVMX1RSQU5TX0ZJTklTSEVEOworCVNwaW5Mb2NrUmVsZWFzZSgmTXlQYXJhbGxlbFNoYXJl ZC0+bXV0ZXgpOworCisJZHNoYXNoX2RlbGV0ZV9rZXkocGFyYWxsZWxpemVkX3R4bnMsICZ4aWQp OworCWVsb2coREVCVUcxLCAieGlkICV1IGNvbW1pdHRlZCIsIHhpZCk7Cit9CisKKy8qCisgKiBX cml0ZSBpbnRlcm5hbCByZWxhdGlvbiBkZXNjcmlwdGlvbiB0byB0aGUgb3V0cHV0IHN0cmVhbS4K KyAqLworc3RhdGljIHZvaWQKK3dyaXRlX2ludGVybmFsX3JlbGF0aW9uKFN0cmluZ0luZm8gcywg TG9naWNhbFJlcFJlbGF0aW9uICpyZWwpCit7CisJcHFfc2VuZGJ5dGUocywgTE9HSUNBTF9SRVBf TVNHX0lOVEVSTkFMX01FU1NBR0UpOworCXBxX3NlbmRieXRlKHMsIFBBX01TR19SRUxNQVApOwor CisJaWYgKHJlbCkKKwl7CisJCXBxX3NlbmRpbnQocywgMSwgNCk7CisJCWxvZ2ljYWxyZXBfd3Jp dGVfaW50ZXJuYWxfcmVsKHMsIHJlbCk7CisJfQorCWVsc2UKKwl7CisJCXBxX3NlbmRpbnQocywg bG9naWNhbHJlcF9nZXRfbnVtX3JlbHMoKSwgNCk7CisJCWxvZ2ljYWxyZXBfd3JpdGVfYWxsX3Jl bHMocyk7CisJfQorfQorCisvKgorICogUmVnaXN0ZXIgYSB0cmFuc2FjdGlvbiB0byB0aGUgc2hh cmVkIGhhc2ggdGFibGUuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIGxl YWRlciBkdXJpbmcgdGhlIGNvbW1pdCBwaGFzZSBvZiBub24tc3RyZWFtZWQKKyAqIHRyYW5zYWN0 aW9ucy4gVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0aGF0IGFwcGxpZXMgdGhlIHRyYW5zYWN0 aW9uIHdpbGwKKyAqIHJlbW92ZSBpdCBmcm9tIHRoZSBoYXNoIHRhYmxlIHVwb24gY29tcGxldGlv bi4KKyAqLwordm9pZAorcGFfYWRkX3BhcmFsbGVsaXplZF90cmFuc2FjdGlvbihUcmFuc2FjdGlv bklkIHhpZCkKK3sKKwlib29sCQlmb3VuZDsKKwlQYXJhbGxlbGl6ZWRUeG5FbnRyeSAqdHhuX2Vu dHJ5OworCisJQXNzZXJ0KHBhcmFsbGVsaXplZF90eG5zKTsKKwlBc3NlcnQoVHJhbnNhY3Rpb25J ZElzVmFsaWQoeGlkKSk7CisJQXNzZXJ0KGFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSk7CisKKwl0 eG5fZW50cnkgPSBkc2hhc2hfZmluZF9vcl9pbnNlcnQocGFyYWxsZWxpemVkX3R4bnMsICZ4aWQs ICZmb3VuZCk7CisKKwlkc2hhc2hfcmVsZWFzZV9sb2NrKHBhcmFsbGVsaXplZF90eG5zLCB0eG5f ZW50cnkpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9w cm90by5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCmluZGV4IGEw Y2FjMDVjZGNkLi5lYjFhODQ2Y2UwYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9wcm90by5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv cHJvdG8uYwpAQCAtNjkxLDYgKzY5MSw0NCBAQCBsb2dpY2FscmVwX3dyaXRlX3JlbChTdHJpbmdJ bmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsIFJlbGF0aW9uIHJlbCwKIAlsb2dpY2FscmVwX3dy aXRlX2F0dHJzKG91dCwgcmVsLCBjb2x1bW5zLCBpbmNsdWRlX2dlbmNvbHNfdHlwZSk7CiB9CiAK Ky8qCisgKiBXcml0ZSBpbnRlcm5hbCByZWxhdGlvbiBkZXNjcmlwdGlvbiB0byB0aGUgb3V0cHV0 IHN0cmVhbS4KKyAqLwordm9pZAorbG9naWNhbHJlcF93cml0ZV9pbnRlcm5hbF9yZWwoU3RyaW5n SW5mbyBvdXQsIExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVsKQoreworCXBxX3NlbmRpbnQzMihvdXQs IHJlbC0+cmVtb3RlaWQpOworCisJLyogV3JpdGUgcmVsYXRpb24gbmFtZSAqLworCXBxX3NlbmRz dHJpbmcob3V0LCByZWwtPm5zcG5hbWUpOworCXBxX3NlbmRzdHJpbmcob3V0LCByZWwtPnJlbG5h bWUpOworCisJLyogV3JpdGUgdGhlIHJlcGxpY2EgaWRlbnRpdHkuICovCisJcHFfc2VuZGJ5dGUo b3V0LCByZWwtPnJlcGxpZGVudCk7CisKKwkvKiBXcml0ZSBhdHRyaWJ1dGUgZGVzY3JpcHRpb24g Ki8KKwlwcV9zZW5kaW50MTYob3V0LCByZWwtPm5hdHRzKTsKKworCWZvciAoaW50IGkgPSAwOyBp IDwgcmVsLT5uYXR0czsgaSsrKQorCXsKKwkJdWludDgJCWZsYWdzID0gMDsKKworCQlpZiAoYm1z X2lzX21lbWJlcihpLCByZWwtPmF0dGtleXMpKQorCQkJZmxhZ3MgfD0gTE9HSUNBTFJFUF9JU19S RVBMSUNBX0lERU5USVRZOworCisJCXBxX3NlbmRieXRlKG91dCwgZmxhZ3MpOworCisJCS8qIGF0 dHJpYnV0ZSBuYW1lICovCisJCXBxX3NlbmRzdHJpbmcob3V0LCByZWwtPmF0dG5hbWVzW2ldKTsK KworCQkvKiBhdHRyaWJ1dGUgdHlwZSBpZCAqLworCQlwcV9zZW5kaW50MzIob3V0LCByZWwtPmF0 dHR5cHNbaV0pOworCisJCS8qIGlnbm9yZSBhdHRyaWJ1dGUgbW9kZSBmb3Igbm93ICovCisJCXBx X3NlbmRpbnQzMihvdXQsIDApOworCX0KK30KKwogLyoKICAqIFJlYWQgdGhlIHJlbGF0aW9uIGlu Zm8gZnJvbSBzdHJlYW0gYW5kIHJldHVybiBhcyBMb2dpY2FsUmVwUmVsYXRpb24uCiAgKi8KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYwppbmRleCBhYjYzMTNlYjFi Yy4uZTFjZTE4M2RmZDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcmVsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0 aW9uLmMKQEAgLTk2MSw2ICs5NjEsMzcgQEAgRmluZExvZ2ljYWxSZXBMb2NhbEluZGV4KFJlbGF0 aW9uIGxvY2FscmVsLCBMb2dpY2FsUmVwUmVsYXRpb24gKnJlbW90ZXJlbCwKIAlyZXR1cm4gSW52 YWxpZE9pZDsKIH0KIAorLyoKKyAqIEdldCB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIExv Z2ljYWxSZXBSZWxNYXAuCisgKi8KK2ludAorbG9naWNhbHJlcF9nZXRfbnVtX3JlbHModm9pZCkK K3sKKwlpZiAoTG9naWNhbFJlcFJlbE1hcCA9PSBOVUxMKQorCQlyZXR1cm4gMDsKKworCXJldHVy biBoYXNoX2dldF9udW1fZW50cmllcyhMb2dpY2FsUmVwUmVsTWFwKTsKK30KKworLyoKKyAqIFdy aXRlIGFsbCB0aGUgcmVtb3RlIHJlbGF0aW9uIGluZm9ybWF0aW9uIGZyb20gdGhlIExvZ2ljYWxS ZXBSZWxNYXBFbnRyeSB0bworICogdGhlIG91dHB1dCBzdHJlYW0uCisgKi8KK3ZvaWQKK2xvZ2lj YWxyZXBfd3JpdGVfYWxsX3JlbHMoU3RyaW5nSW5mbyBvdXQpCit7CisJTG9naWNhbFJlcFJlbE1h cEVudHJ5ICplbnRyeTsKKwlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOworCisJaWYgKExvZ2ljYWxS ZXBSZWxNYXAgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBM b2dpY2FsUmVwUmVsTWFwKTsKKworCXdoaWxlICgoZW50cnkgPSAoTG9naWNhbFJlcFJlbE1hcEVu dHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwkJbG9naWNhbHJlcF93 cml0ZV9pbnRlcm5hbF9yZWwob3V0LCAmZW50cnktPnJlbW90ZXJlbCk7Cit9CisKIC8qCiAgKiBH ZXQgdGhlIExvZ2ljYWxSZXBSZWxNYXBFbnRyeSBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBy ZWxpZCB3aXRob3V0CiAgKiBvcGVuaW5nIHRoZSBsb2NhbCByZWxhdGlvbi4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IGVlNjlmMDdmNzE1Li5mYWY3YTUwYmYy NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0yOTAsNiAr MjkwLDcgQEAKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvYWNs LmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCisjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3Bv aW50LmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2Fj aGUuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgpAQCAtNTE0LDYgKzUxNSw4IEBAIHN0 YXRpYyBMaXN0ICpvbl9jb21taXRfd2FrZXVwX3dvcmtlcnNfc3ViaWRzID0gTklMOwogCiBib29s CQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIHN0YXRpYyBYTG9nUmVjUHRyIHJlbW90 ZV9maW5hbF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKK3N0YXRpYyBUcmFuc2FjdGlvbklkIHJl bW90ZV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKK3N0YXRpYyBUcmFuc2FjdGlvbklkIGxh c3RfcGFyYWxsZWxpemVkX3JlbW90ZV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAogLyog ZmllbGRzIHZhbGlkIG9ubHkgd2hlbiBwcm9jZXNzaW5nIHN0cmVhbWVkIHRyYW5zYWN0aW9uICov CiBzdGF0aWMgYm9vbCBpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOwpAQCAtNzIyLDYg KzcyNSw3IEBAIHN0YXRpYyB2b2lkIG9uX2V4aXRfY2xlYXJfeGFjdF9zdGF0ZShpbnQgY29kZSwg RGF0dW0gYXJnKTsKIAogc3RhdGljIHZvaWQgc2VuZF9pbnRlcm5hbF9kZXBlbmRlbmNpZXMoUGFy YWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLAogCQkJCQkJCQkJICAgTGlzdCAqZGVwZW5kc19v bl94aWRzKTsKK3N0YXRpYyB2b2lkIGJ1aWxkX2RlcGVuZGVuY3lfd2l0aF9sYXN0X2NvbW1pdHRl ZF90eG4oUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKTsKIAogLyoKICAqIENvbXB1dGUg dGhlIGhhc2ggdmFsdWUgZm9yIGVudHJpZXMgaW4gdGhlIHJlcGxpY2FfaWRlbnRpdHlfdGFibGUu CkBAIC04MzcsNyArODQxLDcgQEAgY2xlYW51cF9jb21taXR0ZWRfcmVwbGljYV9pZGVudGl0eV9l bnRyaWVzKHZvaWQpCiAJCQlYTG9nUmVjUHRySXNWYWxpZChwb3MtPmxvY2FsX2VuZCkpCiAJCQlj b250aW51ZTsKIAotCQlwb3MtPmxvY2FsX2VuZCA9IHBhX2dldF9sYXN0X2NvbW1pdF9lbmQocG9z LT5wYV9yZW1vdGVfeGlkLAorCQlwb3MtPmxvY2FsX2VuZCA9IHBhX2dldF9sYXN0X2NvbW1pdF9l bmQocG9zLT5wYV9yZW1vdGVfeGlkLCBmYWxzZSwKIAkJCQkJCQkJCQkJCSZza2lwcGVkX3dyaXRl KTsKIAogCQllbG9nKERFQlVHMSwKQEAgLTE0NDEsMTQgKzE0NDUsMTQgQEAgaGFuZGxlX3N0cmVh bWVkX3RyYW5zYWN0aW9uKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQog CVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOwogCVN0cmluZ0luZm9EYXRhIG9yaWdpbmFs X21zZzsKIAorCWlmICghaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCisJCXJldHVybiBmYWxzZTsK KwogCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oc3RyZWFtX3hp ZCwgJndpbmZvKTsKIAogCS8qIG5vdCBpbiBzdHJlYW1pbmcgbW9kZSAqLwogCWlmIChhcHBseV9h Y3Rpb24gPT0gVFJBTlNfTEVBREVSX0FQUExZKQotCXsKLQkJaGFuZGxlX2RlcGVuZGVuY3lfb25f Y2hhbmdlKGFjdGlvbiwgcywgSW52YWxpZFRyYW5zYWN0aW9uSWQsIHdpbmZvKTsKIAkJcmV0dXJu IGZhbHNlOwotCX0KIAogCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJlYW1feGlkKSk7 CiAKQEAgLTE1MjMsNiArMTUyNyw3MyBAQCBoYW5kbGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24oTG9n aWNhbFJlcE1zZ1R5cGUgYWN0aW9uLCBTdHJpbmdJbmZvIHMpCiAJfQogfQogCisvKgorICogSGFu ZGxlIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHdoZW4gcGFyYWxsZWwgYXBwbHkgaXMgaW4g dXNlLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gcnVucyBvbmx5IGluIHRoZSBsZWFkZXIgYXBwbHkg d29ya2VyIHdoaWxlIHByb2Nlc3NpbmcgYSByZW1vdGUKKyAqIHRyYW5zYWN0aW9uLiBJdCBjaGVj a3Mgd2hldGhlciB0aGUgY3VycmVudCBjaGFuZ2UgaGFzIGRlcGVuZGVuY2llcyBvbgorICogcHJl Y2VkaW5nIHBhcmFsbGVsaXplZCB0cmFuc2FjdGlvbnMgYW5kIGRlY2lkZXMgd2hldGhlciB0byBz ZW5kIHRoZSBjaGFuZ2UgdG8KKyAqIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICoKKyAqIFJl dHVybnMgdHJ1ZSBpZiB0aGUgY2hhbmdlIGhhcyBiZWVuIGRpc3BhdGNoZWQgdG8gYSBwYXJhbGxl bCB3b3JrZXIsCisgKiBpbmRpY2F0aW5nIHRoZSBsZWFkZXIgZG9lcyBub3QgbmVlZCB0byBhcHBs eSBpdCBkaXJlY3RseS4gUmV0dXJucyBmYWxzZQorICogb3RoZXJ3aXNlLgorICoKKyAqIEV4Y2Vw dGlvbjogSWYgdGhlIG1lc3NhZ2UgYmVpbmcgcHJvY2Vzc2VkIGlzIExPR0lDQUxfUkVQX01TR19S RUxBVElPTiBvcgorICogTE9HSUNBTF9SRVBfTVNHX1RZUEUsIHJldHVybiBmYWxzZSBldmVuIGlm IHRoZSBtZXNzYWdlIG5lZWRzIHRvIGJlIHNlbnQgdG8gYQorICogcGFyYWxsZWwgYXBwbHkgd29y a2VyLgorICovCitzdGF0aWMgYm9vbAoraGFuZGxlX3BhcmFsbGVsaXplZF90cmFuc2FjdGlvbihM b2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcykKK3sKKwlQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqd2luZm87CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisKKwkv KgorCSAqIERlcGVuZGVuY3kgY2hlY2tpbmcgZm9yIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25z IGlzIG9ubHkgcmVxdWlyZWQgaW4KKwkgKiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBkdXJpbmcg YSByZW1vdGUgdHJhbnNhY3Rpb24uCisJICovCisJaWYgKCFpbl9yZW1vdGVfdHJhbnNhY3Rpb24g fHwgIWFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuIGZhbHNlOworCisJYXBwbHlf YWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihyZW1vdGVfeGlkLCAmd2luZm8p OworCisJLyogbm90IGFzc2lnbmVkIHRvIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgYXBwbHkgaW4g bGVhZGVyICovCisJaWYgKGFwcGx5X2FjdGlvbiA9PSBUUkFOU19MRUFERVJfQVBQTFkpCisJewor CQloYW5kbGVfZGVwZW5kZW5jeV9vbl9jaGFuZ2UoYWN0aW9uLCBzLCBJbnZhbGlkVHJhbnNhY3Rp b25JZCwgd2luZm8pOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJQXNzZXJ0KFRyYW5zYWN0aW9u SWRJc1ZhbGlkKHJlbW90ZV94aWQpKTsKKworCWhhbmRsZV9kZXBlbmRlbmN5X29uX2NoYW5nZShh Y3Rpb24sIHMsIHJlbW90ZV94aWQsIHdpbmZvKTsKKworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQor CXsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5m byk7CisKKwkJCS8qIEFsd2F5cyB1cGRhdGUgcmVsYXRpb24gYW5kIHR5cGUgY2FjaGUgaW4gbGVh ZGVyIGFwcGx5IHdvcmtlciAqLworCQkJaWYgKHBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBz LT5kYXRhKSkKKwkJCQlyZXR1cm4gKGFjdGlvbiAhPSBMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04g JiYKKwkJCQkJCWFjdGlvbiAhPSBMT0dJQ0FMX1JFUF9NU0dfVFlQRSk7CisKKwkJCS8qCisJCQkg KiBUT0RPOiBTdXBwb3J0IHN3aXRjaGluZyB0byBQQVJUSUFMX1NFUklBTElaRSBtb2RlIHdoZW4g dGhlIHNlbmQKKwkJCSAqIGJ1ZmZlciBiZWNvbWVzIGZ1bGwuCisJCQkgKi8KKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9T VEFURSksCisJCQkJCWVycm1zZygiY291bGQgbm90IHNlbmQgZGF0YSB0byB0aGUgbG9naWNhbCBy ZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiKSk7CisJCQlyZXR1cm4gZmFsc2U7CS8q IHNpbGVuY2UgY29tcGlsZXIgd2FybmluZyAqLworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9S LCAidW5leHBlY3RlZCBhcHBseSBhY3Rpb246ICVkIiwgKGludCkgYXBwbHlfYWN0aW9uKTsKKwkJ CXJldHVybiBmYWxzZTsJCS8qIHNpbGVuY2UgY29tcGlsZXIgd2FybmluZyAqLworCX0KK30KKwog LyoKICAqIEV4ZWN1dG9yIHN0YXRlIHByZXBhcmF0aW9uIGZvciBldmFsdWF0aW9uIG9mIGNvbnN0 cmFpbnQgZXhwcmVzc2lvbnMsCiAgKiBpbmRleGVzIGFuZCB0cmlnZ2VycyBmb3IgdGhlIHNwZWNp ZmllZCByZWxhdGlvbi4KQEAgLTE4ODQsMTcgKzE5NTUsNjEgQEAgc3RhdGljIHZvaWQKIGFwcGx5 X2hhbmRsZV9iZWdpbihTdHJpbmdJbmZvIHMpCiB7CiAJTG9naWNhbFJlcEJlZ2luRGF0YSBiZWdp bl9kYXRhOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0 aW9uIGFwcGx5X2FjdGlvbjsKIAogCS8qIFRoZXJlIG11c3Qgbm90IGJlIGFuIGFjdGl2ZSBzdHJl YW1pbmcgdHJhbnNhY3Rpb24uICovCiAJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJl YW1feGlkKSk7CiAKIAlsb2dpY2FscmVwX3JlYWRfYmVnaW4ocywgJmJlZ2luX2RhdGEpOwotCXNl dF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoYmVnaW5fZGF0YS54aWQsIGJlZ2luX2RhdGEuZmlu YWxfbHNuKTsKKworCXJlbW90ZV94aWQgPSBiZWdpbl9kYXRhLnhpZDsKKworCXNldF9hcHBseV9l cnJvcl9jb250ZXh0X3hhY3QocmVtb3RlX3hpZCwgYmVnaW5fZGF0YS5maW5hbF9sc24pOwogCiAJ cmVtb3RlX2ZpbmFsX2xzbiA9IGJlZ2luX2RhdGEuZmluYWxfbHNuOwogCiAJbWF5YmVfc3RhcnRf c2tpcHBpbmdfY2hhbmdlcyhiZWdpbl9kYXRhLmZpbmFsX2xzbik7CiAKKwlwYV9hbGxvY2F0ZV93 b3JrZXIocmVtb3RlX3hpZCwgZmFsc2UpOworCisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0 aW9uX2FwcGx5X2FjdGlvbihyZW1vdGVfeGlkLCAmd2luZm8pOworCisJZWxvZyhERUJVRzEsICJu ZXcgcmVtb3RlX3hpZCAldSIsIHJlbW90ZV94aWQpOworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQor CXsKKwkJY2FzZSBUUkFOU19MRUFERVJfQVBQTFk6CisJCQlicmVhazsKKworCQljYXNlIFRSQU5T X0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJaWYgKHBh X3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkKKwkJCXsKKwkJCQlwYV9zZXRfc3Ry ZWFtX2FwcGx5X3dvcmtlcih3aW5mbyk7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCS8qCisJCQkg KiBUT0RPOiBTdXBwb3J0IHN3aXRjaGluZyB0byBQQVJUSUFMX1NFUklBTElaRSBtb2RlIHdoZW4g dGhlIHNlbmQKKwkJCSAqIGJ1ZmZlciBiZWNvbWVzIGZ1bGwuCisJCQkgKi8KKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9T VEFURSksCisJCQkJCWVycm1zZygiY291bGQgbm90IHNlbmQgZGF0YSB0byB0aGUgbG9naWNhbCBy ZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiKSk7CisJCQlicmVhazsKKworCQljYXNl IFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJLyogSG9sZCB0aGUgbG9jayB1bnRpbCB0aGUgZW5k IG9mIHRoZSB0cmFuc2FjdGlvbi4gKi8KKwkJCXBhX2xvY2tfdHJhbnNhY3Rpb24oTXlQYXJhbGxl bFNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKwkJCXBhX3NldF94YWN0X3N0YXRl KE15UGFyYWxsZWxTaGFyZWQsIFBBUkFMTEVMX1RSQU5TX1NUQVJURUQpOworCQkJYnJlYWs7CisK KwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIGFwcGx5IGFjdGlvbjogJWQi LCAoaW50KSBhcHBseV9hY3Rpb24pOworCQkJYnJlYWs7CisJfQorCiAJaW5fcmVtb3RlX3RyYW5z YWN0aW9uID0gdHJ1ZTsKIAogCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklORywg TlVMTCk7CkBAIC0xOTE3LDEyICsyMDMyLDMzIEBAIHNlbmRfaW50ZXJuYWxfZGVwZW5kZW5jaWVz KFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgTGlzdCAqZGVwZW5kc19vbl94aWRzCiAJ Zm9yZWFjaF94aWQoeGlkLCBkZXBlbmRzX29uX3hpZHMpCiAJCXBxX3NlbmRpbnQzMigmZGVwZW5k ZW5jaWVzLCB4aWQpOwogCi0JaWYgKHBhX3NlbmRfZGF0YSh3aW5mbywgZGVwZW5kZW5jaWVzLmxl biwgZGVwZW5kZW5jaWVzLmRhdGEpKQorCS8qCisJICogVE9ETzogU3VwcG9ydCBzd2l0Y2hpbmcg dG8gUEFSVElBTF9TRVJJQUxJWkUgbW9kZSB3aGVuIHRoZSBzZW5kCisJICogYnVmZmVyIGJlY29t ZXMgZnVsbC4KKwkgKi8KKwlpZiAoIXBhX3NlbmRfZGF0YSh3aW5mbywgZGVwZW5kZW5jaWVzLmxl biwgZGVwZW5kZW5jaWVzLmRhdGEpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCWVycmNvZGUoRVJS Q09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJZXJybXNnKCJjb3Vs ZCBub3Qgc2VuZCBkYXRhIHRvIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciIpKTsKIH0KIAorLyoKKyAqIE1ha2UgYSBkZXBlbmRlbmN5IGJldHdlZW4gdGhpcyBh bmQgdGhlIGxhc3RseSBjb21taXR0ZWQgdHJhbnNhY3Rpb24uCisgKgorICogU2VuZHMgYW4gSU5U RVJOQUxfREVQRU5ERU5DWSBtZXNzYWdlIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsCisg KiBpbnN0cnVjdGluZyBpdCB0byB3YWl0IGZvciB0aGUgbGFzdCBjb21taXR0ZWQgdHJhbnNhY3Rp b24gdG8gZmluaXNoIGJlZm9yZQorICogY29tbWl0dGluZyBpdHMgb3duLCB0aGVyZWJ5IHByZXNl cnZpbmcgY29tbWl0IG9yZGVyLgorICovCitzdGF0aWMgdm9pZAorYnVpbGRfZGVwZW5kZW5jeV93 aXRoX2xhc3RfY29tbWl0dGVkX3R4bihQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7 CisJLyogU2tpcCBpZiB0cmFuc2FjdGlvbnMgaGF2ZSBub3QgYmVlbiBhcHBsaWVkIHlldCAqLwor CWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQobGFzdF9wYXJhbGxlbGl6ZWRfcmVtb3RlX3hpZCkp CisJCXJldHVybjsKKworCXNlbmRfaW50ZXJuYWxfZGVwZW5kZW5jaWVzKHdpbmZvLCBsaXN0X21h a2UxX3hpZChsYXN0X3BhcmFsbGVsaXplZF9yZW1vdGVfeGlkKSk7Cit9CisKIC8qCiAgKiBIYW5k bGUgQ09NTUlUIG1lc3NhZ2UuCiAgKgpAQCAtMTkzMiw2ICsyMDY4LDggQEAgc3RhdGljIHZvaWQK IGFwcGx5X2hhbmRsZV9jb21taXQoU3RyaW5nSW5mbyBzKQogewogCUxvZ2ljYWxSZXBDb21taXRE YXRhIGNvbW1pdF9kYXRhOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFu c0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKIAogCWxvZ2ljYWxyZXBfcmVhZF9jb21taXQocywg JmNvbW1pdF9kYXRhKTsKIApAQCAtMTk0Miw3ICsyMDgwLDkyIEBAIGFwcGx5X2hhbmRsZV9jb21t aXQoU3RyaW5nSW5mbyBzKQogCQkJCQkJCQkgTFNOX0ZPUk1BVF9BUkdTKGNvbW1pdF9kYXRhLmNv bW1pdF9sc24pLAogCQkJCQkJCQkgTFNOX0ZPUk1BVF9BUkdTKHJlbW90ZV9maW5hbF9sc24pKSkp OwogCi0JYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOworCWFwcGx5 X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24ocmVtb3RlX3hpZCwgJndpbmZv KTsKKworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFERVJfQVBQ TFk6CisKKwkJCS8qCisJCQkgKiBBcGFydCBmcm9tIHBhcmFsbGVsaXplZCB0cmFuc2FjdGlvbnMs IHdlIGRvIG5vdCBoYXZlIHRvCisJCQkgKiByZWdpc3RlciB0aGlzIHRyYW5zYWN0aW9uIHRvIHBh cmFsbGVsaXplZF90eG5zLiBUaGUgY29tbWl0CisJCQkgKiBvcmRlcmluZyBpcyBhbHdheXMgcHJl c2VydmVkLgorCQkJICovCisKKwkJCS8qIFdhaXQgdW50aWwgdGhlIGxhc3QgdHJhbnNhY3Rpb24g ZmluaXNoZXMgKi8KKwkJCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZChsYXN0X3BhcmFsbGVsaXpl ZF9yZW1vdGVfeGlkKSkKKwkJCXsKKwkJCQlwYV93YWl0X2Zvcl9kZXBlbmRlZF90cmFuc2FjdGlv bihsYXN0X3BhcmFsbGVsaXplZF9yZW1vdGVfeGlkKTsKKwkJCQlsYXN0X3BhcmFsbGVsaXplZF9y ZW1vdGVfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJCQl9CisKKwkJCWFwcGx5X2hhbmRs ZV9jb21taXRfaW50ZXJuYWwoJmNvbW1pdF9kYXRhKTsKKworCQkJYnJlYWs7CisKKwkJY2FzZSBU UkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8q CisJCQkgKiBNYXJrIHRoaXMgdHJhbnNhY3Rpb24gYXMgcGFyYWxsZWxpemVkLiBUaGlzIGVuc3Vy ZXMgdGhhdAorCQkJICogdXBjb21pbmcgdHJhbnNhY3Rpb25zIHdhaXQgdW50aWwgdGhpcyB0cmFu c2FjdGlvbiBpcyBjb21taXR0ZWQuCisJCQkgKi8KKwkJCXBhX2FkZF9wYXJhbGxlbGl6ZWRfdHJh bnNhY3Rpb24ocmVtb3RlX3hpZCk7CisKKwkJCS8qCisJCQkgKiBCdWlsZCBhIGRlcGVuZGVuY3kg YmV0d2VlbiB0aGlzIHRyYW5zYWN0aW9uIGFuZCB0aGUgbGFzdGx5CisJCQkgKiBjb21taXR0ZWQg dHJhbnNhY3Rpb24gdG8gcHJlc2VydmUgdGhlIGNvbW1pdCBvcmRlci4KKwkJCSAqLworCQkJYnVp bGRfZGVwZW5kZW5jeV93aXRoX2xhc3RfY29tbWl0dGVkX3R4bih3aW5mbyk7CisKKwkJCWlmIChw YV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQl7CisJCQkJLyogQ2FjaGUg dGhlIHJlbW90ZV94aWQgKi8KKwkJCQlsYXN0X3BhcmFsbGVsaXplZF9yZW1vdGVfeGlkID0gcmVt b3RlX3hpZDsKKworCQkJCS8qIEZpbmlzaCBwcm9jZXNzaW5nIHRoZSB0cmFuc2FjdGlvbi4gKi8K KwkJCQlwYV94YWN0X2ZpbmlzaCh3aW5mbywgY29tbWl0X2RhdGEuZW5kX2xzbik7CisJCQkJYnJl YWs7CisJCQl9CisKKwkJCS8qCisJCQkgKiBUT0RPOiBTdXBwb3J0IHN3aXRjaGluZyB0byBQQVJU SUFMX1NFUklBTElaRSBtb2RlIHdoZW4gdGhlIHNlbmQKKwkJCSAqIGJ1ZmZlciBiZWNvbWVzIGZ1 bGwuCisJCQkgKi8KKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9PQkpF Q1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCWVycm1zZygiY291bGQgbm90IHNl bmQgZGF0YSB0byB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIi KSk7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCisJCQkvKgor CQkJICogSWYgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBhcHBseWluZyBzcG9vbGVkIG1l c3NhZ2VzIHRoZW4KKwkJCSAqIGNsb3NlIHRoZSBmaWxlIGJlZm9yZSBjb21taXR0aW5nLgorCQkJ ICovCisJCQlpZiAoc3RyZWFtX2ZkKQorCQkJCXN0cmVhbV9jbG9zZV9maWxlKCk7CisKKwkJCUlO SkVDVElPTl9QT0lOVCgicGFyYWxsZWwtd29ya2VyLWJlZm9yZS1jb21taXQiLCBOVUxMKTsKKwor CQkJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOworCisJCQlNeVBh cmFsbGVsU2hhcmVkLT5sYXN0X2NvbW1pdF9lbmQgPSBYYWN0TGFzdENvbW1pdEVuZDsKKworCQkJ cGFfY29tbWl0X3RyYW5zYWN0aW9uKCk7CisKKwkJCXBhX3VubG9ja190cmFuc2FjdGlvbihyZW1v dGVfeGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJ CQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBhcHBseSBhY3Rpb246ICVkIiwgKGludCkgYXBwbHlf YWN0aW9uKTsKKwkJCWJyZWFrOworCX0KKworCXJlbW90ZV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rp b25JZDsKKwlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKworCWVsb2coREVCVUcxLCAi cmVzZXQgcmVtb3RlX3hpZCAldSIsIHJlbW90ZV94aWQpOwogCiAJLyoKIAkgKiBQcm9jZXNzIGFu eSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLCBhcyB3ZWxs IGFzCkBAIC0yMDY1LDcgKzIyODgsOCBAQCBhcHBseV9oYW5kbGVfcHJlcGFyZShTdHJpbmdJbmZv IHMpCiAJICogWGFjdExhc3RDb21taXRFbmQsIGFuZCBhZGRpbmcgaXQgZm9yIHRoaXMgcHVycG9z ZSBkb2Vzbid0IHNlZW1zIHdvcnRoCiAJICogaXQuCiAJICovCi0Jc3RvcmVfZmx1c2hfcG9zaXRp b24ocHJlcGFyZV9kYXRhLmVuZF9sc24sIEludmFsaWRYTG9nUmVjUHRyKTsKKwlzdG9yZV9mbHVz aF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbiwgSW52YWxpZFhMb2dSZWNQdHIsCisJCQkJ CQkgSW52YWxpZFRyYW5zYWN0aW9uSWQpOwogCiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFs c2U7CiAKQEAgLTIxMjUsNyArMjM0OSw4IEBAIGFwcGx5X2hhbmRsZV9jb21taXRfcHJlcGFyZWQo U3RyaW5nSW5mbyBzKQogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCXBnc3RhdF9yZXBv cnRfc3RhdChmYWxzZSk7CiAKLQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5k X2xzbiwgWGFjdExhc3RDb21taXRFbmQpOworCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVf ZGF0YS5lbmRfbHNuLCBYYWN0TGFzdENvbW1pdEVuZCwKKwkJCQkJCSBJbnZhbGlkVHJhbnNhY3Rp b25JZCk7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKIAkvKgpAQCAtMjE5NCw3 ICsyNDE5LDggQEAgYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykK IAkgKiB0cmFuc2FjdGlvbiBiZWNhdXNlIHdlIGFsd2F5cyBmbHVzaCB0aGUgV0FMIHJlY29yZCBm b3IgaXQuIFNlZQogCSAqIGFwcGx5X2hhbmRsZV9wcmVwYXJlLgogCSAqLwotCXN0b3JlX2ZsdXNo X3Bvc2l0aW9uKHJvbGxiYWNrX2RhdGEucm9sbGJhY2tfZW5kX2xzbiwgSW52YWxpZFhMb2dSZWNQ dHIpOworCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHJvbGxiYWNrX2RhdGEucm9sbGJhY2tfZW5kX2xz biwgSW52YWxpZFhMb2dSZWNQdHIsCisJCQkJCQkgSW52YWxpZFRyYW5zYWN0aW9uSWQpOwogCWlu X3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCiAJLyoKQEAgLTIyNTYsNyArMjQ4Miw4IEBA IGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJCQkgKiBJdCBpcyBv a2F5IG5vdCB0byBzZXQgdGhlIGxvY2FsX2VuZCBMU04gZm9yIHRoZSBwcmVwYXJlIGJlY2F1c2UK IAkJCSAqIHdlIGFsd2F5cyBmbHVzaCB0aGUgcHJlcGFyZSByZWNvcmQuIFNlZSBhcHBseV9oYW5k bGVfcHJlcGFyZS4KIAkJCSAqLwotCQkJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRh LmVuZF9sc24sIEludmFsaWRYTG9nUmVjUHRyKTsKKwkJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHBy ZXBhcmVfZGF0YS5lbmRfbHNuLCBJbnZhbGlkWExvZ1JlY1B0ciwKKwkJCQkJCQkJIEludmFsaWRU cmFuc2FjdGlvbklkKTsKIAogCQkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKQEAg LTI0NDgsOCArMjY3NSwxNyBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8g cykKIAogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Qoc3RyZWFtX3hpZCwgSW52YWxpZFhM b2dSZWNQdHIpOwogCi0JLyogVHJ5IHRvIGFsbG9jYXRlIGEgd29ya2VyIGZvciB0aGUgc3RyZWFt aW5nIHRyYW5zYWN0aW9uLiAqLwotCWlmIChmaXJzdF9zZWdtZW50KQorCS8qCisJICogVHJ5IHRv IGFsbG9jYXRlIGEgd29ya2VyIGZvciB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgorCSAqCisJ ICogVE9ETzogU3VwcG9ydCBhc3NpZ25pbmcgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0byBwYXJh bGxlbCBhcHBseSB3b3JrZXJzCisJICogZXZlbiB3aGVuIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rp b25zIGFyZSBydW5uaW5nIGFuZCBiZXR0ZXIgZGVwZW5kZW5jeQorCSAqIGhhbmRsaW5nIGJldHdl ZW4gc3RyZWFtaW5nIGFuZCBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4KKwkgKi8KKwlpZiAo Zmlyc3Rfc2VnbWVudCAmJgorCQlhbV9sZWFkZXJfYXBwbHlfd29ya2VyKCkgJiYKKwkJKCFUcmFu c2FjdGlvbklkSXNWYWxpZChsYXN0X3BhcmFsbGVsaXplZF9yZW1vdGVfeGlkKSB8fAorCQkgcGFf dHJhbnNhY3Rpb25fY29tbWl0dGVkKGxhc3RfcGFyYWxsZWxpemVkX3JlbW90ZV94aWQpKSkKIAkJ cGFfYWxsb2NhdGVfd29ya2VyKHN0cmVhbV94aWQsIHRydWUpOwogCiAJYXBwbHlfYWN0aW9uID0g Z2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihzdHJlYW1feGlkLCAmd2luZm8pOwpAQCAtMjk2 NCw4ICszMjAwLDcgQEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhGaWxlU2V0ICpzdHJlYW1fZmls ZXNldCwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJaW50CQkJZmlsZW5vOwogCXBnb2ZmX3QJCW9mZnNl dDsKIAotCWlmICghYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCi0JCW1heWJlX3N0YXJ0X3Nr aXBwaW5nX2NoYW5nZXMobHNuKTsKKwltYXliZV9zdGFydF9za2lwcGluZ19jaGFuZ2VzKGxzbik7 CiAKIAkvKiBNYWtlIHN1cmUgd2UgaGF2ZSBhbiBvcGVuIHRyYW5zYWN0aW9uICovCiAJYmVnaW5f cmVwbGljYXRpb25fc3RlcCgpOwpAQCAtMzIzNSw3ICszNDcwLDggQEAgYXBwbHlfaGFuZGxlX2Nv bW1pdF9pbnRlcm5hbChMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpCiAKIAkJcGdz dGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKIAotCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihjb21taXRf ZGF0YS0+ZW5kX2xzbiwgWGFjdExhc3RDb21taXRFbmQpOworCQlzdG9yZV9mbHVzaF9wb3NpdGlv bihjb21taXRfZGF0YS0+ZW5kX2xzbiwgWGFjdExhc3RDb21taXRFbmQsCisJCQkJCQkJIEludmFs aWRUcmFuc2FjdGlvbklkKTsKIAl9CiAJZWxzZQogCXsKQEAgLTMyNjAsNyArMzQ5Niw4IEBAIGFw cGx5X2hhbmRsZV9yZWxhdGlvbihTdHJpbmdJbmZvIHMpCiB7CiAJTG9naWNhbFJlcFJlbGF0aW9u ICpyZWw7CiAKLQlpZiAoaGFuZGxlX3N0cmVhbWVkX3RyYW5zYWN0aW9uKExPR0lDQUxfUkVQX01T R19SRUxBVElPTiwgcykpCisJaWYgKGhhbmRsZV9wYXJhbGxlbGl6ZWRfdHJhbnNhY3Rpb24oTE9H SUNBTF9SRVBfTVNHX1JFTEFUSU9OLCBzKSB8fAorCQloYW5kbGVfc3RyZWFtZWRfdHJhbnNhY3Rp b24oTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OLCBzKSkKIAkJcmV0dXJuOwogCiAJcmVsID0gbG9n aWNhbHJlcF9yZWFkX3JlbChzKTsKQEAgLTMyNjgsNiArMzUwNSw4IEBAIGFwcGx5X2hhbmRsZV9y ZWxhdGlvbihTdHJpbmdJbmZvIHMpCiAKIAkvKiBBbHNvIHJlc2V0IGFsbCBlbnRyaWVzIGluIHRo ZSBwYXJ0aXRpb24gbWFwIHRoYXQgcmVmZXIgdG8gcmVtb3RlcmVsLiAqLwogCWxvZ2ljYWxyZXBf cGFydG1hcF9yZXNldF9yZWxtYXAocmVsKTsKKworCXBhX2Rpc3RyaWJ1dGVfc2NoZW1hX2NoYW5n ZXNfdG9fd29ya2VycyhyZWwpOwogfQogCiAvKgpAQCAtMzI4Myw3ICszNTIyLDggQEAgYXBwbHlf aGFuZGxlX3R5cGUoU3RyaW5nSW5mbyBzKQogewogCUxvZ2ljYWxSZXBUeXAgdHlwOwogCi0JaWYg KGhhbmRsZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMT0dJQ0FMX1JFUF9NU0dfVFlQRSwgcykpCisJ aWYgKGhhbmRsZV9wYXJhbGxlbGl6ZWRfdHJhbnNhY3Rpb24oTE9HSUNBTF9SRVBfTVNHX1RZUEUs IHMpIHx8CisJCWhhbmRsZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMT0dJQ0FMX1JFUF9NU0dfVFlQ RSwgcykpCiAJCXJldHVybjsKIAogCWxvZ2ljYWxyZXBfcmVhZF90eXAocywgJnR5cCk7CkBAIC0z MzQzLDYgKzM1ODMsNyBAQCBhcHBseV9oYW5kbGVfaW5zZXJ0KFN0cmluZ0luZm8gcykKIAkgKiBz dHJlYW1lZCB0cmFuc2FjdGlvbnMuCiAJICovCiAJaWYgKGlzX3NraXBwaW5nX2NoYW5nZXMoKSB8 fAorCQloYW5kbGVfcGFyYWxsZWxpemVkX3RyYW5zYWN0aW9uKExPR0lDQUxfUkVQX01TR19JTlNF UlQsIHMpIHx8CiAJCWhhbmRsZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMT0dJQ0FMX1JFUF9NU0df SU5TRVJULCBzKSkKIAkJcmV0dXJuOwogCkBAIC0zNTAzLDYgKzM3NDQsNyBAQCBhcHBseV9oYW5k bGVfdXBkYXRlKFN0cmluZ0luZm8gcykKIAkgKiBzdHJlYW1lZCB0cmFuc2FjdGlvbnMuCiAJICov CiAJaWYgKGlzX3NraXBwaW5nX2NoYW5nZXMoKSB8fAorCQloYW5kbGVfcGFyYWxsZWxpemVkX3Ry YW5zYWN0aW9uKExPR0lDQUxfUkVQX01TR19VUERBVEUsIHMpIHx8CiAJCWhhbmRsZV9zdHJlYW1l ZF90cmFuc2FjdGlvbihMT0dJQ0FMX1JFUF9NU0dfVVBEQVRFLCBzKSkKIAkJcmV0dXJuOwogCkBA IC0zNzI3LDYgKzM5NjksNyBAQCBhcHBseV9oYW5kbGVfZGVsZXRlKFN0cmluZ0luZm8gcykKIAkg KiBzdHJlYW1lZCB0cmFuc2FjdGlvbnMuCiAJICovCiAJaWYgKGlzX3NraXBwaW5nX2NoYW5nZXMo KSB8fAorCQloYW5kbGVfcGFyYWxsZWxpemVkX3RyYW5zYWN0aW9uKExPR0lDQUxfUkVQX01TR19E RUxFVEUsIHMpIHx8CiAJCWhhbmRsZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMT0dJQ0FMX1JFUF9N U0dfREVMRVRFLCBzKSkKIAkJcmV0dXJuOwogCkBAIC00MzYzLDYgKzQ2MDYsNyBAQCBhcHBseV9o YW5kbGVfdHJ1bmNhdGUoU3RyaW5nSW5mbyBzKQogCSAqIHN0cmVhbWVkIHRyYW5zYWN0aW9ucy4K IAkgKi8KIAlpZiAoaXNfc2tpcHBpbmdfY2hhbmdlcygpIHx8CisJCWhhbmRsZV9wYXJhbGxlbGl6 ZWRfdHJhbnNhY3Rpb24oTE9HSUNBTF9SRVBfTVNHX1RSVU5DQVRFLCBzKSB8fAogCQloYW5kbGVf c3RyZWFtZWRfdHJhbnNhY3Rpb24oTE9HSUNBTF9SRVBfTVNHX1RSVU5DQVRFLCBzKSkKIAkJcmV0 dXJuOwogCkBAIC00NTkzLDYgKzQ4MzcsMTAgQEAgYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBz KQogICogY2hlY2sgd2hpY2ggZW50cmllcyBvbiBpdCBhcmUgYWxyZWFkeSBsb2NhbGx5IGZsdXNo ZWQuIFRob3NlIHdlIGNhbiByZXBvcnQKICAqIGFzIGhhdmluZyBiZWVuIGZsdXNoZWQuCiAgKgor ICogRm9yIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zIG1hbmFnZWQgYnkgYSBwYXJhbGxlbCBh cHBseSB3b3JrZXIsIHdlIHdpbGwKKyAqIGdldCB0aGUgbG9jYWwgY29tbWl0IGVuZCBmcm9tIHRo ZSBzaGFyZWQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGluZm8gb25jZSB0aGUKKyAqIHRyYW5zYWN0 aW9uIGhhcyBiZWVuIGNvbW1pdHRlZCBieSB0aGUgd29ya2VyLgorICoKICAqIFRoZSBoYXZlX3Bl bmRpbmdfdHhlcyBpcyB0cnVlIGlmIHRoZXJlIGFyZSBvdXRzdGFuZGluZyB0cmFuc2FjdGlvbnMg dGhhdAogICogbmVlZCB0byBiZSBmbHVzaGVkLgogICovCkBAIC00NjAyLDYgKzQ4NTAsNyBAQCBn ZXRfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0ciAqd3JpdGUsIFhMb2dSZWNQdHIgKmZsdXNoLAog ewogCWRsaXN0X211dGFibGVfaXRlciBpdGVyOwogCVhMb2dSZWNQdHIJbG9jYWxfZmx1c2ggPSBH ZXRGbHVzaFJlY1B0cihOVUxMKTsKKwlMaXN0CSAgICpjb21taXR0ZWRfcGFfeGlkID0gTklMOwog CiAJKndyaXRlID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJKmZsdXNoID0gSW52YWxpZFhMb2dSZWNQ dHI7CkBAIC00NjExLDYgKzQ4NjAsNDAgQEAgZ2V0X2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIg KndyaXRlLCBYTG9nUmVjUHRyICpmbHVzaCwKIAkJRmx1c2hQb3NpdGlvbiAqcG9zID0KIAkJCWRs aXN0X2NvbnRhaW5lcihGbHVzaFBvc2l0aW9uLCBub2RlLCBpdGVyLmN1cik7CiAKKwkJLyoKKwkJ ICogSWYgdGhlIHRyYW5zYWN0aW9uIHdhcyBhc3NpZ25lZCB0byBhIHBhcmFsbGVsIGFwcGx5IHdv cmtlciwgYXR0ZW1wdAorCQkgKiB0byByZXRyaWV2ZSBpdHMgY29tbWl0IGVuZCBMU04gZnJvbSB0 aGF0IHdvcmtlci4KKwkJICovCisJCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZChwb3MtPnBhX3Jl bW90ZV94aWQpICYmCisJCQkhWExvZ1JlY1B0cklzVmFsaWQocG9zLT5sb2NhbF9lbmQpKQorCQl7 CisJCQlib29sCQlza2lwcGVkX3dyaXRlOworCisJCQlwb3MtPmxvY2FsX2VuZCA9IHBhX2dldF9s YXN0X2NvbW1pdF9lbmQocG9zLT5wYV9yZW1vdGVfeGlkLCB0cnVlLAorCQkJCQkJCQkJCQkJCSZz a2lwcGVkX3dyaXRlKTsKKworCQkJZWxvZyhERUJVRzEsCisJCQkJICJnb3QgY29tbWl0IGVuZCBm cm9tIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgIgorCQkJCSAidHhuOiAldSwgcmVtb3RlX2VuZCAl WC8lWCwgbG9jYWxfZW5kICVYLyVYIiwKKwkJCQkgcG9zLT5wYV9yZW1vdGVfeGlkLCBMU05fRk9S TUFUX0FSR1MocG9zLT5yZW1vdGVfZW5kKSwKKwkJCQkgTFNOX0ZPUk1BVF9BUkdTKHBvcy0+bG9j YWxfZW5kKSk7CisKKwkJCS8qCisJCQkgKiBCcmVhayB0aGUgbG9vcCBpZiB0aGUgd29ya2VyIGhh cyBub3QgZmluaXNoZWQgYXBwbHlpbmcgdGhlCisJCQkgKiB0cmFuc2FjdGlvbi4gVGhlcmUncyBu byBuZWVkIHRvIGNoZWNrIHN1YnNlcXVlbnQgdHJhbnNhY3Rpb25zLAorCQkJICogYXMgdGhleSBt dXN0IGNvbW1pdCBhZnRlciB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBiZWluZworCQkJICogZXhh bWluZWQgYW5kIHRodXMgd29uJ3QgaGF2ZSB0aGVpciBjb21taXQgZW5kIGF2YWlsYWJsZSB5ZXQu CisJCQkgKi8KKwkJCWlmICghc2tpcHBlZF93cml0ZSAmJiBYTG9nUmVjUHRySXNJbnZhbGlkKHBv cy0+bG9jYWxfZW5kKSkKKwkJCQlicmVhazsKKworCQkJY29tbWl0dGVkX3BhX3hpZCA9IGxhcHBl bmRfeGlkKGNvbW1pdHRlZF9wYV94aWQsIHBvcy0+cGFfcmVtb3RlX3hpZCk7CisJCX0KKworCQkv KgorCQkgKiBXb3JrZXIgaGFzIGZpbmlzaGVkIGFwcGx5aW5nIG9yIHRoZSB0cmFuc2FjdGlvbiB3 YXMgYXBwbGllZCBpbiB0aGUKKwkJICogbGVhZGVyIGFwcGx5IHdvcmtlci4KKwkJICovCiAJCSp3 cml0ZSA9IHBvcy0+cmVtb3RlX2VuZDsKIAogCQlpZiAocG9zLT5sb2NhbF9lbmQgPD0gbG9jYWxf Zmx1c2gpCkBAIC00NjE5LDI5ICs0OTAyLDIyIEBAIGdldF9mbHVzaF9wb3NpdGlvbihYTG9nUmVj UHRyICp3cml0ZSwgWExvZ1JlY1B0ciAqZmx1c2gsCiAJCQlkbGlzdF9kZWxldGUoaXRlci5jdXIp OwogCQkJcGZyZWUocG9zKTsKIAkJfQotCQllbHNlCi0JCXsKLQkJCS8qCi0JCQkgKiBEb24ndCB3 YW50IHRvIHVzZWxlc3NseSBpdGVyYXRlIG92ZXIgdGhlIHJlc3Qgb2YgdGhlIGxpc3Qgd2hpY2gK LQkJCSAqIGNvdWxkIHBvdGVudGlhbGx5IGJlIGxvbmcuIEluc3RlYWQgZ2V0IHRoZSBsYXN0IGVs ZW1lbnQgYW5kCi0JCQkgKiBncmFiIHRoZSB3cml0ZSBwb3NpdGlvbiBmcm9tIHRoZXJlLgotCQkJ ICovCi0JCQlwb3MgPSBkbGlzdF90YWlsX2VsZW1lbnQoRmx1c2hQb3NpdGlvbiwgbm9kZSwKLQkJ CQkJCQkJCSAmbHNuX21hcHBpbmcpOwotCQkJKndyaXRlID0gcG9zLT5yZW1vdGVfZW5kOwotCQkJ KmhhdmVfcGVuZGluZ190eGVzID0gdHJ1ZTsKLQkJCXJldHVybjsKLQkJfQogCX0KIAogCSpoYXZl X3BlbmRpbmdfdHhlcyA9ICFkbGlzdF9pc19lbXB0eSgmbHNuX21hcHBpbmcpOworCisJZGVsZXRl X3JlcGxpY2FfaWRlbnRpdHlfZW50cmllc19mb3JfdHhucyhjb21taXR0ZWRfcGFfeGlkKTsKIH0K IAogLyoKICAqIFN0b3JlIGN1cnJlbnQgcmVtb3RlL2xvY2FsIGxzbiBwYWlyIGluIHRoZSB0cmFj a2luZyBsaXN0LgorICoKKyAqIHBhX3JlbW90ZV94aWQgc2hvdWxkIGJlIGEgdmFsaWQgdHJhbnNh Y3Rpb24gSUQgb25seSB3aGVuIHRoZSB0cmFuc2FjdGlvbiB3YXMKKyAqIGFzc2lnbmVkIHRvIGEg cGFyYWxsZWwgYXBwbHkgd29ya2VyOyBvdGhlcndpc2UsIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9u SWQuCiAgKi8KIHZvaWQKLXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xz biwgWExvZ1JlY1B0ciBsb2NhbF9sc24pCitzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRy IHJlbW90ZV9sc24sIFhMb2dSZWNQdHIgbG9jYWxfbHNuLAorCQkJCQkgVHJhbnNhY3Rpb25JZCBw YV9yZW1vdGVfeGlkKQogewogCUZsdXNoUG9zaXRpb24gKmZsdXNocG9zOwogCkBAIC00NjU5LDcg KzQ5MzUsNyBAQCBzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24sIFhM b2dSZWNQdHIgbG9jYWxfbHNuKQogCWZsdXNocG9zID0gcGFsbG9jX29iamVjdChGbHVzaFBvc2l0 aW9uKTsKIAlmbHVzaHBvcy0+bG9jYWxfZW5kID0gbG9jYWxfbHNuOwogCWZsdXNocG9zLT5yZW1v dGVfZW5kID0gcmVtb3RlX2xzbjsKLQlmbHVzaHBvcy0+cGFfcmVtb3RlX3hpZCA9IEludmFsaWRU cmFuc2FjdGlvbklkOworCWZsdXNocG9zLT5wYV9yZW1vdGVfeGlkID0gcGFfcmVtb3RlX3hpZDsK IAogCWRsaXN0X3B1c2hfdGFpbCgmbHNuX21hcHBpbmcsICZmbHVzaHBvcy0+bm9kZSk7CiAJTWVt b3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5TWVzc2FnZUNvbnRleHQpOwpAQCAtNjc4NCw2ICs3MDYw LDIyIEBAIHN0YXRpYyB2b2lkCiBtYXliZV9zdGFydF9za2lwcGluZ19jaGFuZ2VzKFhMb2dSZWNQ dHIgZmluaXNoX2xzbikKIHsKIAlBc3NlcnQoIWlzX3NraXBwaW5nX2NoYW5nZXMoKSk7CisKKwkv KgorCSAqIEZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGFwcGxpZWQgaW4gYSBwYXJhbGxlbCBh cHBseSB3b3JrZXIsIHRoZSByZW1vdGUKKwkgKiBlbmQgTFNOIGlzIHVua25vd24sIHNvIHNraXBw aW5nIGlzIG5vdCBwb3NzaWJsZS4gRm9yIG5vbi1zdHJlYW1pbmcKKwkgKiB0cmFuc2FjdGlvbnMs IHRoZSBsZWFkZXIgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHNraXAgdGhlIHRyYW5zYWN0aW9uLiBJ ZgorCSAqIHNraXBwaW5nIGlzIG5lZWRlZCwgdGhlIGxlYWRlciBzaW1wbHkgZG9lcyBub3Qgc2Vu ZCB0aGUgdHJhbnNhY3Rpb24gdG8gYQorCSAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkgKi8K KwlpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCXJldHVybjsKKworCS8qCisJICog VGhlc2UgYXNzZXJ0aW9ucyBhcHBseSBvbmx5IHRvIGxlYWRlciBhcHBseSBhbmQgdGFibGUgc3lu YyB3b3JrZXJzLgorCSAqIFBhcmFsbGVsIHdvcmtlcnMgbWF5IGFwcGx5IHNwb29sZWQgQkVHSU4g b3IgU1RSRUFNX1NUQVJUIG1lc3NhZ2VzLCB3aGljaAorCSAqIGNhbiBzZXQgdGhlc2UgZmxhZ3Mg dG8gdHJ1ZS4KKwkgKi8KIAlBc3NlcnQoIWluX3JlbW90ZV90cmFuc2FjdGlvbik7CiAJQXNzZXJ0 KCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbik7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNh bHByb3RvLmgKaW5kZXggY2IwYThmNDQwYzAuLmQ5ZjM3NTI5NWRlIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9sb2dpY2FscHJvdG8uaApAQCAtMjU5LDYgKzI1OSw4IEBAIGV4dGVybiB2b2lkIGxv Z2ljYWxyZXBfd3JpdGVfbWVzc2FnZShTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQs IFhMb2dSZWNQCiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3JlbChTdHJpbmdJbmZvIG91 dCwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCSBSZWxhdGlvbiByZWwsIEJpdG1hcHNldCAq Y29sdW1ucywKIAkJCQkJCQkJIFB1Ymxpc2hHZW5jb2xzVHlwZSBpbmNsdWRlX2dlbmNvbHNfdHlw ZSk7CitleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX2ludGVybmFsX3JlbChTdHJpbmdJbmZv IG91dCwKKwkJCQkJCQkJCQkgIExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVsKTsKIGV4dGVybiBMb2dp Y2FsUmVwUmVsYXRpb24gKmxvZ2ljYWxyZXBfcmVhZF9yZWwoU3RyaW5nSW5mbyBpbik7CiBleHRl cm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3R5cChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25J ZCB4aWQsCiAJCQkJCQkJCSBPaWQgdHlwb2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9n aWNhbHJlbGF0aW9uLmgKaW5kZXggMDk4OTBjZWY4ZDQuLmNkODUyMzM3MTY1IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaAorKysgYi9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaApAQCAtNTgsNiArNTgsOCBAQCBleHRl cm4gdm9pZCBsb2dpY2FscmVwX3JlbF9jbG9zZShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCwK IAkJCQkJCQkJIExPQ0tNT0RFIGxvY2ttb2RlKTsKIGV4dGVybiBib29sIElzSW5kZXhVc2FibGVG b3JSZXBsaWNhSWRlbnRpdHlGdWxsKFJlbGF0aW9uIGlkeHJlbCwgQXR0ck1hcCAqYXR0cm1hcCk7 CiBleHRlcm4gT2lkCUdldFJlbGF0aW9uSWRlbnRpdHlPclBLKFJlbGF0aW9uIHJlbCk7CitleHRl cm4gaW50CWxvZ2ljYWxyZXBfZ2V0X251bV9yZWxzKHZvaWQpOworZXh0ZXJuIHZvaWQgbG9naWNh bHJlcF93cml0ZV9hbGxfcmVscyhTdHJpbmdJbmZvIG91dCk7CiBleHRlcm4gTG9naWNhbFJlcFJl bE1hcEVudHJ5ICpsb2dpY2FscmVwX2dldF9yZWxlbnRyeShMb2dpY2FsUmVwUmVsSWQgcmVtb3Rl aWQpOwogCiAjZW5kaWYJCQkJCQkJLyogTE9HSUNBTFJFTEFUSU9OX0ggKi8KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggM2M4OGQ5ZTEwMjcuLjAyYTE2NWNj YzBkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwu aAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAtMzQ1 LDcgKzM0NSw4IEBAIGV4dGVybiB2b2lkIFNldHVwQXBwbHlPclN5bmNXb3JrZXIoaW50IHdvcmtl cl9zbG90KTsKIAogZXh0ZXJuIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9pZCk7 CiAKLWV4dGVybiB2b2lkIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xz biwgWExvZ1JlY1B0ciBsb2NhbF9sc24pOworZXh0ZXJuIHZvaWQgc3RvcmVfZmx1c2hfcG9zaXRp b24oWExvZ1JlY1B0ciByZW1vdGVfbHNuLCBYTG9nUmVjUHRyIGxvY2FsX2xzbiwKKwkJCQkJCQkJ IFRyYW5zYWN0aW9uSWQgcGFfcmVtb3RlX3hpZCk7CiAKIC8qIEZ1bmN0aW9uIGZvciBhcHBseSBl cnJvciBjYWxsYmFjayAqLwogZXh0ZXJuIHZvaWQgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAq YXJnKTsKQEAgLTM1NCwxMyArMzU1LDE1IEBAIGV4dGVybiB2b2lkIHNldF9hcHBseV9lcnJvcl9j b250ZXh0X29yaWdpbihjaGFyICpvcmlnaW5uYW1lKTsKIC8qIFBhcmFsbGVsIGFwcGx5IHdvcmtl ciBzZXR1cCBhbmQgaW50ZXJhY3Rpb25zICovCiBleHRlcm4gdm9pZCBwYV9hbGxvY2F0ZV93b3Jr ZXIoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgc3RyZWFtX3R4bik7CiBleHRlcm4gUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKnBhX2ZpbmRfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKTsKLWV4dGVy biBYTG9nUmVjUHRyIHBhX2dldF9sYXN0X2NvbW1pdF9lbmQoVHJhbnNhY3Rpb25JZCB4aWQsIGJv b2wgKnNraXBwZWRfd3JpdGUpOworZXh0ZXJuIFhMb2dSZWNQdHIgcGFfZ2V0X2xhc3RfY29tbWl0 X2VuZChUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBkZWxldGVfZW50cnksCisJCQkJCQkJCQkJIGJv b2wgKnNraXBwZWRfd3JpdGUpOwogZXh0ZXJuIHZvaWQgcGFfZGV0YWNoX2FsbF9lcnJvcl9tcSh2 b2lkKTsKIAogZXh0ZXJuIHZvaWQgYXBwbHlfaGFuZGxlX2ludGVybmFsX21lc3NhZ2UoU3RyaW5n SW5mbyBzKTsKIAogZXh0ZXJuIGJvb2wgcGFfc2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICp3aW5mbywgU2l6ZSBuYnl0ZXMsCiAJCQkJCQkgY29uc3Qgdm9pZCAqZGF0YSk7CitleHRl cm4gdm9pZCBwYV9kaXN0cmlidXRlX3NjaGVtYV9jaGFuZ2VzX3RvX3dvcmtlcnMoTG9naWNhbFJl cFJlbGF0aW9uICpyZWwpOwogZXh0ZXJuIHZvaWQgcGFfc3dpdGNoX3RvX3BhcnRpYWxfc2VyaWFs aXplKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywKIAkJCQkJCQkJCQkgICBib29sIHN0 cmVhbV9sb2NrZWQpOwogCkBAIC0zODYsOCArMzg5LDkgQEAgZXh0ZXJuIHZvaWQgcGFfZGVjcl9h bmRfd2FpdF9zdHJlYW1fYmxvY2sodm9pZCk7CiBleHRlcm4gdm9pZCBwYV94YWN0X2ZpbmlzaChQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sCiAJCQkJCQkgICBYTG9nUmVjUHRyIHJlbW90 ZV9sc24pOwogZXh0ZXJuIGJvb2wgcGFfdHJhbnNhY3Rpb25fY29tbWl0dGVkKFRyYW5zYWN0aW9u SWQgeGlkKTsKLQorZXh0ZXJuIHZvaWQgcGFfY29tbWl0X3RyYW5zYWN0aW9uKHZvaWQpOwogZXh0 ZXJuIHZvaWQgcGFfd2FpdF9mb3JfZGVwZW5kZWRfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4 aWQpOworZXh0ZXJuIHZvaWQgcGFfYWRkX3BhcmFsbGVsaXplZF90cmFuc2FjdGlvbihUcmFuc2Fj dGlvbklkIHhpZCk7CiAKICNkZWZpbmUgaXNQYXJhbGxlbEFwcGx5V29ya2VyKHdvcmtlcikgKCh3 b3JrZXIpLT5pbl91c2UgJiYgXAogCQkJCQkJCQkJICAgKHdvcmtlciktPnR5cGUgPT0gV09SS0VS VFlQRV9QQVJBTExFTF9BUFBMWSkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9t ZXNvbi5idWlsZCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAppbmRleCBmZGMw NGQ5MWY0MS4uNDhhZTY5OGU3ODYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9t ZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQKQEAgLTQ4 LDcgKzQ4LDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDM2X3NlcXVlbmNlcy5wbCcsCiAgICAg ICAndC8wMzdfZXhjZXB0LnBsJywKICAgICAgICd0LzAzOF93YWxzbmRfc2h1dGRvd25fdGltZW91 dC5wbCcsCi0gICAgICAndC8wMzlfcm93X2ZpbHRlcl90b2FzdF9yaS5wbCcsCisgICAgICAndC8w NTBfcGFyYWxsZWxfYXBwbHkucGwnLAogICAgICAgJ3QvMTAwX2J1Z3MucGwnLAogICAgIF0sCiAg IH0sCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMDFfcmVwX2NoYW5nZXMu cGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMDFfcmVwX2NoYW5nZXMucGwKaW5kZXggN2Q0 MTcxNWVkODEuLmM4NjNiNDMwYmVjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMDFfcmVwX2NoYW5nZXMucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDAxX3Jl cF9jaGFuZ2VzLnBsCkBAIC0xNiw2ICsxNiw4IEBAICRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CiAj IENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUKIG15ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKICRub2RlX3N1YnNjcmliZXItPmlu aXQ7Ciskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwki bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDEwIik7CiAkbm9kZV9zdWJzY3JpYmVy LT5zdGFydDsKIAogIyBDcmVhdGUgc29tZSBwcmVleGlzdGluZyBjb250ZW50IG9uIHB1Ymxpc2hl cgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDEwX3RydW5jYXRlLnBsIGIv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDEwX3RydW5jYXRlLnBsCmluZGV4IDk0NTUwNWQwMjM5 Li5lMTVhNmJiMmEwMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDEwX3Ry dW5jYXRlLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxMF90cnVuY2F0ZS5wbApA QCAtMTcsNyArMTcsNyBAQCAkbm9kZV9wdWJsaXNoZXItPnN0YXJ0OwogbXkgJG5vZGVfc3Vic2Ny aWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOwogJG5v ZGVfc3Vic2NyaWJlci0+aW5pdDsKICRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLAotCXFxKG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA2KSk7 CisJcXEobWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDcpKTsKICRub2RlX3N1YnNj cmliZXItPnN0YXJ0OwogCiBteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXIt PmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0 cmVhbS5wbAppbmRleCBhYzk2YmMzZjAwOS4uNzA1YmM4M2Y1ZWEgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE1X3N0cmVhbS5wbApAQCAtMjMyLDYgKzIzMiwxMiBAQCAkbm9kZV9zdWJzY3JpYmVy LT53YWl0X2Zvcl9sb2coCiAKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJJTlNFUlQgSU5UTyB0ZXN0X3RhYl8yIHZhbHVlcygxKSIpOwogCisjIEZJWE1FOiBDdXJyZW50 bHksIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGFyZSBhcHBsaWVkIGluIHBhcmFsbGVsIGJ5 CisjIGRlZmF1bHQuIFNvLCB0aGUgZmlyc3QgdHJhbnNhY3Rpb24gaXMgaGFuZGxlZCBieSBhIHBh cmFsbGVsIGFwcGx5IHdvcmtlci4gVG8KKyMgdHJpZ2dlciB0aGUgZGVhZGxvY2ssIGluaXRpYXRl IGFuIG1vcmUgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBieSB0aGUKKyMgbGVhZGVyLgorJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFi XzIgdmFsdWVzKDEpIik7CisKICRoLT5xdWVyeV9zYWZlKCdDT01NSVQnKTsKICRoLT5xdWl0Owog CkBAIC0yNDcsNyArMjUzLDcgQEAgJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfMiIpOwotaXMoJHJlc3VsdCwg cXEoNTAwMSksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBp bmRleCcpOworaXMoJHJlc3VsdCwgcXEoNTAwMiksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2Ny aWJlciBhZnRlciBkcm9wcGluZyBpbmRleCcpOwogCiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9t IHRoZSBlbnZpcm9ubWVudC4KICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYl8yIik7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMjZfc3RhdHMucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjZfc3Rh dHMucGwKaW5kZXggNWQ0NTcwNjBhMDIuLjkxMTAwNWJkZTIwIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMjZfc3RhdHMucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDI2X3N0YXRzLnBsCkBAIC0xNiw2ICsxNiw3IEBAICRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7 CiAjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUuCiBteSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVyJyk7CiAkbm9kZV9zdWJzY3JpYmVy LT5pbml0OworJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZics ICJtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzID0gMTAiKTsKICRub2RlX3N1YnNjcmli ZXItPnN0YXJ0OwogCiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyN19u b3N1cGVydXNlci5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyN19ub3N1cGVydXNlci5w bAppbmRleCAzMjJmNWI0Y2M2YS4uZmRmYzQ0YWM3MjkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAyN19ub3N1cGVydXNlci5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMjdfbm9zdXBlcnVzZXIucGwKQEAgLTg2LDYgKzg2LDcgQEAgJG5vZGVfcHVibGlzaGVy ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3N1 YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsK ICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CiAk bm9kZV9zdWJzY3JpYmVyLT5pbml0OworJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsICJtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzID0gMTAiKTsK ICRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CiAkbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKICRwdWJs aXNoZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3Rn cmVzJzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA1MF9wYXJhbGxlbF9h cHBseS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA1MF9wYXJhbGxlbF9hcHBseS5wbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTQxMjFiMjNmMjMKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wNTBfcGFyYWxsZWxfYXBwbHku cGwKQEAgLTAsMCArMSwyMDEgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBu b24tc3RyZWFtZWQgdHJhbnNhY3Rpb24gY2FuIGxhdW5jaCBhIHBhcmFsbGVsIGFwcGx5CisjIHdv cmtlciwgYW5kIHRoYXQgZGVwZW5kZW5jeSB0cmFja2luZyBhbmQgY29tbWl0IG9yZGVyIHByZXNl cnZhdGlvbiB3b3JrCisjIGNvcnJlY3RseSBkdXJpbmcgcGFyYWxsZWwgYXBwbHkuCisKK3VzZSBz dHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3Vz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitpZiAoJEVOVntl bmFibGVfaW5qZWN0aW9uX3BvaW50c30gbmUgJ3llcycpCit7CisJcGxhbiBza2lwX2FsbCA9PiAn SW5qZWN0aW9uIHBvaW50cyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnVpbGQnOworfQorCisjIElu aXRpYWxpemUgcHVibGlzaGVyIG5vZGUKK215ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7Ciskbm9kZV9wdWJsaXNoZXItPmluaXQo YWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfcHVibGlzaGVyLT5zdGFydDsK KworIyBDcmVhdGUgdGFibGVzIGFuZCBpbnNlcnQgaW5pdGlhbCBkYXRhCiskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKKyAgICAncG9zdGdyZXMnLCBxcSgKKyAgICBDUkVBVEUgVEFCTEUgcmVn cmVzc190YWIgKGlkIGludCBQUklNQVJZIEtFWSwgdmFsdWUgdGV4dCk7CisKKyAgICBDUkVBVEUg VEFCTEUgdGFiX3RvYXN0IChhIHRleHQgTk9UIE5VTEwsIGIgdGV4dCBOT1QgTlVMTCk7CisgICAg QUxURVIgVEFCTEUgdGFiX3RvYXN0IEFMVEVSIENPTFVNTiBhIFNFVCBTVE9SQUdFIEVYVEVSTkFM OworICAgIENSRUFURSBVTklRVUUgSU5ERVggdGFiX3RvYXN0X3JpX2luZGV4IG9uIHRhYl90b2Fz dCAoYSwgYik7CisgICAgQUxURVIgVEFCTEUgdGFiX3RvYXN0IFJFUExJQ0EgSURFTlRJVFkgVVNJ TkcgSU5ERVggdGFiX3RvYXN0X3JpX2luZGV4OworICAgIElOU0VSVCBJTlRPIHRhYl90b2FzdChh LCBiKSBWQUxVRVMocmVwZWF0KCcxMjM0NTY3ODkwJywgMjAwKSwgJzEyMzQ1Njc4OTAnKTsKKykp OworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyAgICAiSU5TRVJUIElO VE8gcmVncmVzc190YWIgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMSwgMTApLCAndGVzdCcpOyIp OworCisjIENyZWF0ZSBhIHB1YmxpY2F0aW9uCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorICAgICJDUkVBVEUgUFVCTElDQVRJT04gcmVncmVzc19wdWIgRk9SIEFMTCBU QUJMRVM7Iik7CisKKyMgSW5pdGlhbGl6ZSBzdWJzY3JpYmVyIG5vZGUKK215ICRub2RlX3N1YnNj cmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRu b2RlX3N1YnNjcmliZXItPmluaXQ7Ciskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9z dGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKyRub2RlX3N1YnNj cmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCSJtYXhfbG9naWNhbF9yZXBs aWNhdGlvbl93b3JrZXJzID0gMTAiKTsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCisjIENo ZWNrIGlmIHRoZSBleHRlbnNpb24gaW5qZWN0aW9uX3BvaW50cyBpcyBhdmFpbGFibGUsIGFzIGl0 IG1heSBiZQorIyBwb3NzaWJsZSB0aGF0IHRoaXMgc2NyaXB0IGlzIHJ1biB3aXRoIGluc3RhbGxj aGVjaywgd2hlcmUgdGhlIG1vZHVsZQorIyB3b3VsZCBub3QgYmUgaW5zdGFsbGVkIGJ5IGRlZmF1 bHQuCitpZiAoISRub2RlX3N1YnNjcmliZXItPmNoZWNrX2V4dGVuc2lvbignaW5qZWN0aW9uX3Bv aW50cycpKQoreworCXBsYW4gc2tpcF9hbGwgPT4gJ0V4dGVuc2lvbiBpbmplY3Rpb25fcG9pbnRz IG5vdCBpbnN0YWxsZWQnOworfQorCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgJ0NSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsnKTsKKworIyBDcmVhdGUg YSBzdWJzY3JpcHRpb24KK215ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+ Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKAorICAgICdwb3N0Z3JlcycsIHFxKAorICAgIENSRUFURSBUQUJMRSByZWdyZXNzX3RhYiAo aWQgaW50IFBSSU1BUlkgS0VZLCB2YWx1ZSB0ZXh0KTsKKworICAgIENSRUFURSBUQUJMRSB0YWJf dG9hc3QgKGEgdGV4dCBOT1QgTlVMTCwgYiB0ZXh0IE5PVCBOVUxMKTsKKyAgICBBTFRFUiBUQUJM RSB0YWJfdG9hc3QgQUxURVIgQ09MVU1OIGEgU0VUIFNUT1JBR0UgRVhURVJOQUw7CisgICAgQ1JF QVRFIFVOSVFVRSBJTkRFWCB0YWJfdG9hc3RfcmlfaW5kZXggb24gdGFiX3RvYXN0IChhLCBiKTsK KyAgICBBTFRFUiBUQUJMRSB0YWJfdG9hc3QgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCB0 YWJfdG9hc3RfcmlfaW5kZXg7CispKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorICAgICJDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nfc3ViIENPTk5FQ1RJT04g JyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gcmVncmVzc19wdWI7Iik7CisKKyMgV2Fp dCBmb3IgaW5pdGlhbCB0YWJsZSBzeW5jIHRvIGZpbmlzaAorJG5vZGVfc3Vic2NyaWJlci0+d2Fp dF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAncmVncmVzc19zdWInKTsK KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg VGVzdCB0aGF0IGEgbm9uLXN0cmVhbWVkIHRyYW5zYWN0aW9uIGNhbiBiZSBhcHBsaWVkIGluIGEg cGFyYWxsZWwgYXBwbHkgd29ya2VyCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCisjIEluc2VydCB0dXBsZXMgb24gcHVibGlzaGVyCisjCisjIFhY WCBUaGlzIG1heSBub3QgZW5vdWdoIHRvIGxhdW5jaCBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwg YmVjYXVzZQorIyB0YWJsZV9zdGF0ZXNfbm90X3JlYWR5IGlzIG5vdCBkaXNjYXJkZWQgeWV0Lgor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyAgICAiSU5TRVJUIElOVE8g cmVncmVzc190YWIgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMTEsIDIwKSwgJ3Rlc3QnKTsiKTsK KyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgncmVncmVzc19zdWInKTsKKworIyBJ bnNlcnQgdHVwbGVzIGFnYWluCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorICAgICJJTlNFUlQgSU5UTyByZWdyZXNzX3RhYiBWQUxVRVMgKGdlbmVyYXRlX3Nlcmllcygy MSwgMzApLCAndGVzdCcpOyIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdy ZWdyZXNzX3N1YicpOworCisjIFZlcmlmeSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGxh dW5jaGVkCitteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisgICAgIlNFTEVDVCBjb3VudCgxKSBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgYmFj a2VuZF90eXBlID0gJ2xvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgd29ya2VyJyIpOworaXMo JHJlc3VsdCwgJzEnLCAicGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGxhdW5jaGVkIGJ5IGEgbm9u LXN0cmVhbWVkIHRyYW5zYWN0aW9uIik7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdGhhdCB0aGUgYmFzaWMgcmVwbGljYSBpZGVu dGl0eSBkZXBlbmRlbmN5IHRyYWNraW5nIGFuZCBjb21taXQgb3JkZXIKKyMgcHJlc2VydmF0aW9u IHdvcmsgY29ycmVjdGx5IGR1cmluZyBwYXJhbGxlbCBhcHBseS4KKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgQXR0YWNoIGFuIGluamVjdGlv bl9wb2ludC4gUGFyYWxsZWwgd29ya2VycyB3b3VsZCB3YWl0IGJlZm9yZSB0aGUgY29tbWl0Cisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGluamVjdGlv bl9wb2ludHNfYXR0YWNoKCdwYXJhbGxlbC13b3JrZXItYmVmb3JlLWNvbW1pdCcsJ3dhaXQnKTsi CispOworCisjIEluc2VydCB0dXBsZXMgb24gcHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICJJTlNFUlQgSU5UTyByZWdyZXNzX3RhYiBWQUxVRVMg KGdlbmVyYXRlX3NlcmllcygzMSwgNDApLCAndGVzdCcpOyIpOworCisjIFdhaXQgdW50aWwgdGhl IHBhcmFsbGVsIHdvcmtlciBlbnRlcnMgdGhlIGluamVjdGlvbiBwb2ludC4KKyRub2RlX3N1YnNj cmliZXItPndhaXRfZm9yX2V2ZW50KCdsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIHdvcmtl cicsCisJJ3BhcmFsbGVsLXdvcmtlci1iZWZvcmUtY29tbWl0Jyk7CisKK215ICRvZmZzZXQgPSAt cyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisjIEluc2VydCB0dXBsZXMgb24gcHVibGlz aGVyIGFnYWluLiBUaGlzIHRyYW5zYWN0aW9uIGlzIGluZGVwZW5kZW50IGZyb20gdGhlCisjIHBy ZXZpb3VzIG9uZSwgYnV0IHRoZSBwYXJhbGxlbCB3b3JrZXIgd291bGQgd2FpdCB0aWxsIGl0IGZp bmlzaGVzCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICJJTlNF UlQgSU5UTyByZWdyZXNzX3RhYiBWQUxVRVMgKGdlbmVyYXRlX3Nlcmllcyg0MSwgNTApLCAndGVz dCcpOyIpOworCisjIFZlcmlmeSB0aGUgcGFyYWxsZWwgd29ya2VyIHdhaXRzIGZvciB0aGUgdHJh bnNhY3Rpb24KK215ICRzdHIgPSAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvd2Fp dCBmb3IgZGVwZW5kZWQgeGlkIChbMS05XVswLTldKykvLCAkb2Zmc2V0KTsKK215ICR4aWQgPSAk c3RyID1+IC93YWl0IGZvciBkZXBlbmRlZCB4aWQgKFsxLTldWzAtOV0rKS87CisKKyMgVXBkYXRl IHR1cGxlcyB3aGljaCBoYXZlIG5vdCBiZWVuIGFwcGxpZWQgeWV0IG9uIHN1YnNjcmliZXIgYmVj YXVzZSB0aGUKKyMgcGFyYWxsZWwgd29ya2VyIHN0b3BzIGF0IHRoZSBpbmplY3Rpb24gcG9pbnQu IE5ld2x5IGFzc2lnbmVkIHdvcmtlciBhbHNvCisjIHdhaXRzIGZvciB0aGUgc2FtZSB0cmFuc2Fj dGlvbnMgYXMgYWJvdmUuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor ICAgICJVUERBVEUgcmVncmVzc190YWIgU0VUIHZhbHVlID0gJ3VwZGF0ZWQnIFdIRVJFIGlkIEJF VFdFRU4gMzEgQU5EIDM1OyIpOworCisjIFZlcmlmeSB0aGUgZGVwZW5kZW5jeSBpcyBkZXRlY3Rl ZCBmb3IgdGhlIHVwZGF0ZQorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL2ZvdW5k IGNvbmZsaWN0aW5nIHJlcGxpY2EgaWRlbnRpdHkgY2hhbmdlIGZyb20gJHhpZC8sICRvZmZzZXQp OworCisjIFZlcmlmeSB0aGUgcGFyYWxsZWwgd29ya2VyIHdhaXRzIGZvciB0aGUgc2FtZSB0cmFu c2FjdGlvbgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL3dhaXQgZm9yIGRlcGVu ZGVkIHhpZCAkeGlkLywgJG9mZnNldCk7CisKKyMgV2FrZXVwIHRoZSBwYXJhbGxlbCB3b3JrZXIu IFdlIGRldGFjaCBmaXJzdCBubyB0byBzdG9wIG90aGVyIHBhcmFsbGVsIHdvcmtlcnMKKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcVsKKyAgICBTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19kZXRhY2goJ3BhcmFsbGVsLXdvcmtlci1iZWZvcmUtY29tbWl0Jyk7CisgICAg U0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdwYXJhbGxlbC13b3JrZXItYmVmb3JlLWNv bW1pdCcpOworXSk7CisKKyMgVmVyaWZ5IHRoZSBwYXJhbGxlbCB3b3JrZXIgd2FrZXMgdXAKKyRu b2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci9maW5pc2ggd2FpdGluZyBmb3IgZGVwZW5k ZWQgeGlkICR4aWQvLCAkb2Zmc2V0KTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KDEpIEZST00gcmVncmVzc190YWIi KTsKK2lzICgkcmVzdWx0LCA1MCwgJ2luc2VydHMgYXJlIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJl cicpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisgICAgIlNFTEVDVCBjb3VudCgxKSBGUk9NIHJlZ3Jlc3NfdGFiIFdIRVJFIHZhbHVlID0g J3VwZGF0ZWQnIik7CitpcyAoJHJlc3VsdCwgNSwgJ3VwZGF0ZXMgYXJlIGFsc28gcmVwbGljYXRl ZCB0byBzdWJzY3JpYmVyJyk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdGhhdCB0aGUgZGVwZW5kZW5jeSB0cmFja2luZyB3b3Jr cyBjb3JyZWN0bHkgZm9yIHVuY2hhbmdlZCB0b2FzdGVkIFJJCisjIGNvbHVtbnMuCisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIEF0dGFjaCBh biBpbmplY3Rpb25fcG9pbnQuIFBhcmFsbGVsIHdvcmtlcnMgd291bGQgd2FpdCBiZWZvcmUgdGhl IGNvbW1pdAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVD VCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgncGFyYWxsZWwtd29ya2VyLWJlZm9yZS1jb21taXQn LCd3YWl0Jyk7IgorKTsKKworIyBVcGRhdGUgb25lIHJlcGxpY2EgaWRlbnRpdHkgY29sdW1uIGJ1 dCBrZWVwIHRvYXN0ZWQgY29sdW1uIHVuY2hhbmdlZAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKyAgICAiVVBEQVRFIHRhYl90b2FzdCBTRVQgYiA9ICcxJzsiKTsKKwor IyBXYWl0IHVudGlsIHRoZSBwYXJhbGxlbCB3b3JrZXIgZW50ZXJzIHRoZSBpbmplY3Rpb24gcG9p bnQuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9ldmVudCgnbG9naWNhbCByZXBsaWNhdGlv biBwYXJhbGxlbCB3b3JrZXInLAorCSdwYXJhbGxlbC13b3JrZXItYmVmb3JlLWNvbW1pdCcpOwor CisjIERlbGV0ZSB0aGUgdXBkYXRlZCByb3cuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorICAgICJERUxFVEUgRlJPTSB0YWJfdG9hc3QgV0hFUkUgYiA9ICcxJzsiKTsK KworIyBWZXJpZnkgdGhlIGRlcGVuZGVuY3kgaXMgZGV0ZWN0ZWQgZm9yIHRoZSBkZWxldGUKKyRz dHIgPSAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvZm91bmQgY29uZmxpY3Rpbmcg cmVwbGljYSBpZGVudGl0eSBjaGFuZ2UgZnJvbSAoWzEtOV1bMC05XSspLywgJG9mZnNldCk7Cisk eGlkID0gJHN0ciA9fiAvZm91bmQgY29uZmxpY3RpbmcgcmVwbGljYSBpZGVudGl0eSBjaGFuZ2Ug ZnJvbSAoWzEtOV1bMC05XSspLzsKKworIyBWZXJpZnkgdGhlIHBhcmFsbGVsIHdvcmtlciB3YWl0 cyBmb3IgdGhlIHNhbWUgdHJhbnNhY3Rpb24KKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xv Zyhxci93YWl0IGZvciBkZXBlbmRlZCB4aWQgJHhpZC8sICRvZmZzZXQpOworCisjIFdha2V1cCB0 aGUgcGFyYWxsZWwgd29ya2VyLiBXZSBkZXRhY2ggZmlyc3Qgbm8gdG8gc3RvcCBvdGhlciBwYXJh bGxlbCB3b3JrZXJzCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXFb CisgICAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdwYXJhbGxlbC13b3JrZXItYmVm b3JlLWNvbW1pdCcpOworICAgIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgncGFyYWxs ZWwtd29ya2VyLWJlZm9yZS1jb21taXQnKTsKK10pOworCisjIFZlcmlmeSB0aGUgcGFyYWxsZWwg d29ya2VyIHdha2VzIHVwCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvZmluaXNo IHdhaXRpbmcgZm9yIGRlcGVuZGVkIHhpZCAkeGlkLywgJG9mZnNldCk7CisKKyRyZXN1bHQgPQor ICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgx KSBGUk9NIHRhYl90b2FzdCIpOworaXMgKCRyZXN1bHQsIDAsICdjaGFuZ2VzIGFyZSByZXBsaWNh dGVkIHRvIHN1YnNjcmliZXInKTsKKworZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0CmluZGV4IDA3ZDI0NmJkOTU3Li5kYjhiYjRlMWU0MyAxMDA2NDQKLS0tIGEvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKQEAgLTIxNjIsNiArMjE2Miw3IEBAIFBhcmFsbGVsSGFzaEdyb3d0aAogUGFyYWxs ZWxIYXNoSm9pbkJhdGNoCiBQYXJhbGxlbEhhc2hKb2luQmF0Y2hBY2Nlc3NvcgogUGFyYWxsZWxI YXNoSm9pblN0YXRlCitQYXJhbGxlbGl6ZWRUeG5FbnRyeQogUGFyYWxsZWxJbmRleFNjYW5EZXNj CiBQYXJhbGxlbGl6ZWRUeG5FbnRyeQogUGFyYWxsZWxTbG90CkBAIC00MjU3LDYgKzQyNTgsNyBA QCByZW5kZXp2b3VzSGFzaEVudHJ5CiByZXAKIHJlcGxhY2VfcnRlX3ZhcmlhYmxlc19jYWxsYmFj awogcmVwbGFjZV9ydGVfdmFyaWFibGVzX2NvbnRleHQKK3JlcGxpY2FfaWRlbnRpdHlfaGFzaAog cmVwb3J0X2Vycm9yX2ZuCiByZXRfdHlwZQogcmV3aW5kX3NvdXJjZQotLSAKMi40My4wCgo= --_011_TY4PR01MB17718A4AB7F564C8DB0D6F7DC94102TY4PR01MB17718jp_ Content-Type: application/octet-stream; name="v19-0002-Introduce-internal-messages-to-track-dependencie.patch" Content-Description: v19-0002-Introduce-internal-messages-to-track-dependencie.patch Content-Disposition: attachment; filename="v19-0002-Introduce-internal-messages-to-track-dependencie.patch"; size=13000; creation-date="Thu, 04 Jun 2026 06:54:41 GMT"; modification-date="Thu, 04 Jun 2026 06:58:30 GMT" Content-Transfer-Encoding: base64 RnJvbSBiYWFhMTFmY2Q3ODk3MzcwOWM0MWM4OThhZDIyNDg0ZDA5YWI0NzE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBaaGlqaWUgSG91IDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBXZWQsIDI5IEFwciAyMDI2IDE2OjQxOjQ0ICswODAwClN1YmplY3Q6IFtQQVRDSCB2MTkg Mi8zXSBJbnRyb2R1Y2UgaW50ZXJuYWwgbWVzc2FnZXMgdG8gdHJhY2sgZGVwZW5kZW5jaWVzCgpU aGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgc2V0IG9mIGludGVybmFsIHdvcmtlciBtZXNzYWdl IHR5cGVzIChzZWUKUEFXb3JrZXJNc2dUeXBlKS4gVGhlc2UgdHlwZXMgb2YgbWVzc2FnZXMgYXJl IGdlbmVyYXRlZCBieSBhIGxlYWRlciB3b3JrZXIKYW5kIHNlbnQgdG8gcGFyYWxsZWwgYXBwbHkg d29ya2VycyBiYXNlZCBvbiB0aGUgbmVlZHMuIEZvciBub3csIHR3byB0eXBlcyBvZgptZXNzYWdl cyBleGlzdDogUEFfTVNHX1hBQ1RfREVQRU5ERU5DWSBhbmQgUEFfTVNHX1JFTE1BUC4KClBBX01T R19YQUNUX0RFUEVOREVOQ1kgZW5zdXJlcyB0aGF0IGRlcGVuZGVudCB0cmFuc2FjdGlvbnMgYXJl CmNvbW1pdHRlZCBpbiB0aGUgY29ycmVjdCBvcmRlci4gSXQgaGFzIGEgbGlzdCBvZiB0cmFuc2Fj dGlvbiBJRHMgdGhhdCBwYXJhbGxlbAp3b3JrZXJzIG11c3Qgd2FpdCBmb3IuIFRoaXMgdHlwZSBv ZiBtZXNzYWdlIGlzIGdlbmVyYXRlZCB3aGVuIHRoZSBsZWFkZXIKZGV0ZWN0cyBhIGRlcGVuZGVu Y3kgYmV0d2VlbiB0aGUgY3VycmVudCBhbmQgb3RoZXIgdHJhbnNhY3Rpb25zLCBvciBqdXN0IGJl Zm9yZQp0aGUgQ09NTUlUIG1lc3NhZ2UuIFRoZSBsYXR0ZXIgb25lIGlzIHVzZWQgdG8gcHJlc2Vy dmUgdGhlIGNvbW1pdCBvcmRlcmluZwpiZXR3ZWVuIHRoZSBwdWJsaXNoZXIgYW5kIHRoZSBzdWJz Y3JpYmVyLgoKUEFfTVNHX1JFTE1BUCBpcyB1c2VkIHRvIHN5bmNocm9uaXplIHRoZSByZW1vdGUg cmVsYXRpb24KaW5mb3JtYXRpb24gYmV0d2VlbiB0aGUgbGVhZGVyIGFuZCBwYXJhbGxlbCB3b3Jr ZXJzLiBJdCBoYXMgYSBsaXN0IG9mIHJlbGF0aW9ucwp0aGF0IHRoZSBsZWFkZXIgYWxyZWFkeSBr bm93cywgYW5kIHBhcmFsbGVsIHdvcmtlcnMgYWxzbyB1cGRhdGUgdGhlIHJlbG1hcCBpbgpyZXNw b25zZSB0byB0aGUgbWVzc2FnZS4gVGhpcyB0eXBlIG9mIG1lc3NhZ2UgaXMgZ2VuZXJhdGVkIHdo ZW4gdGhlIGxlYWRlcgphbGxvY2F0ZXMgYSBuZXcgcGFyYWxsZWwgd29ya2VyIHRvIHRoZSB0cmFu c2FjdGlvbiwgb3Igd2hlbiB0aGUgcHVibGlzaGVyIHNlbmRzCmFkZGl0aW9uYWwgUkVMQVRJT04g bWVzc2FnZXMuIFRoaXMgc3luY2hyb25pemF0aW9uIGlzIG5lY2Vzc2FyeSBmb3IgcGFyYWxsZWwK YXBwbHkgd29ya2VycyB0byBtYXAgbG9jYWwgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9ucyB0 byB0aGVpciByZW1vdGUKY291bnRlcnBhcnRzIGR1cmluZyBjaGFuZ2UgYXBwbGljYXRpb24uIFNp bmNlIHRoZSB3YWxzZW5kZXIgZG9lcyBub3Qgc2VuZCByZW1vdGUKcmVsYXRpb24gaW5mb3JtYXRp b24gd2l0aCBldmVyeSB0cmFuc2FjdGlvbiwgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBtYXkg bm90CmhhdmUgdXAtdG8tZGF0ZSByZWxhdGlvbiBpbmZvIHVubGVzcyBzeW5jaHJvbml6ZWQgYnkg dGhlIGxlYWRlci4KCkluIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHByb3RvY29sLCB0aGUgYWJv dmUgbWVzc2FnZXMgYXJlIGVuY2Fwc3VsYXRlZCB3aXRoaW4KdGhlIExPR0lDQUxfUkVQX01TR19J TlRFUk5BTF9NRVNTQUdFIHR5cGUuIExhdGVyIHBhdGNoZXMgd2lsbCB1c2UgYSB1bmlmb3JtCmZv cm1hdCAoTE9HSUNBTF9SRVBfTVNHX0lOVEVSTkFMX01FU1NBR0UgKyBQQVdvcmtlck1zZ1R5cGUg KyBpbnRlcm5hbCBkYXRhKSBmb3IKc2VuZGluZyB0byBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIG9y IHNlcmlhbGl6aW5nIHRvIGRpc2suCgpBdXRob3I6IFpoaWppZSBIb3UgPGhvdXpqLmZuc3RAZnVq aXRzdS5jb20+CkF1dGhvcjogSGF5YXRvIEt1cm9kYSA8a3Vyb2RhLmhheWF0b0BmdWppdHN1LmNv bT4KLS0tCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgfCAx ODcgKysrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3By b3RvLmMgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYyAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5o ICAgICAgICB8ICAgOCArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwu aCAgICAgfCAgMTcgKysKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAg ICAgICB8ICAgMSArCiA2IGZpbGVzIGNoYW5nZWQsIDIwMiBpbnNlcnRpb25zKCspLCAxNyBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Fw cGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBw bHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IDEwOWQ4NWM3Y2RmLi41ZjYyMmJiZTU1OCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2Vy LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29y a2VyLmMKQEAgLTc3Miw2ICs3NzIsNzMgQEAgUHJvY2Vzc1BhcmFsbGVsQXBwbHlJbnRlcnJ1cHRz KHZvaWQpCiAJfQogfQogCisvKgorICogSGFuZGxlIGludGVybmFsIGRlcGVuZGVuY3kgaW5mb3Jt YXRpb24uCisgKgorICogV2FpdCBmb3IgYWxsIHRyYW5zYWN0aW9ucyBsaXN0ZWQgaW4gdGhlIG1l c3NhZ2UgdG8gY29tbWl0LgorICovCitzdGF0aWMgdm9pZAorYXBwbHlfaGFuZGxlX2ludGVybmFs X2RlcGVuZGVuY3koU3RyaW5nSW5mbyBzKQoreworCWludAkJCW54aWRzID0gcHFfZ2V0bXNnaW50 KHMsIDQpOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBueGlkczsgaSsrKQorCXsKKwkJVHJhbnNh Y3Rpb25JZCB4aWQgPSBwcV9nZXRtc2dpbnQocywgNCk7CisKKwkJcGFfd2FpdF9mb3JfZGVwZW5k ZWRfdHJhbnNhY3Rpb24oeGlkKTsKKwl9Cit9CisKKy8qCisgKiBIYW5kbGUgaW50ZXJuYWwgcmVs YXRpb24gaW5mb3JtYXRpb24uCisgKgorICogVXBkYXRlIGFsbCByZWxhdGlvbiBkZXRhaWxzIGlu IHRoZSByZWxhdGlvbiBtYXAgY2FjaGUuCisgKi8KK3N0YXRpYyB2b2lkCithcHBseV9oYW5kbGVf aW50ZXJuYWxfcmVsYXRpb24oU3RyaW5nSW5mbyBzKQoreworCWludAkJCW5yZWxzID0gcHFfZ2V0 bXNnaW50KHMsIDQpOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBucmVsczsgaSsrKQorCXsKKwkJ TG9naWNhbFJlcFJlbGF0aW9uICpyZWwgPSBsb2dpY2FscmVwX3JlYWRfcmVsKHMpOworCisJCWxv Z2ljYWxyZXBfcmVsbWFwX3VwZGF0ZShyZWwpOworCisJCS8qIEFsc28gcmVzZXQgYWxsIGVudHJp ZXMgaW4gdGhlIHBhcnRpdGlvbiBtYXAgdGhhdCByZWZlciB0byByZW1vdGVyZWwuICovCisJCWxv Z2ljYWxyZXBfcGFydG1hcF9yZXNldF9yZWxtYXAocmVsKTsKKworCQllbG9nKERFQlVHMSwgInBh cmFsbGVsIGFwcGx5IHdvcmtlciBpbml0IHJlbG1hcCBmb3IgJXMiLAorCQkJIHJlbC0+cmVsbmFt ZSk7CisJfQorfQorCisvKgorICogSGFuZGxlIGFuIGludGVybmFsIG1lc3NhZ2UgZ2VuZXJhdGVk IGJ5IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyLgorICovCit2b2lkCithcHBseV9oYW5kbGVfaW50 ZXJuYWxfbWVzc2FnZShTdHJpbmdJbmZvIHMpCit7CisJUEFXb3JrZXJNc2dUeXBlIGFjdGlvbiA9 IHBxX2dldG1zZ2J5dGUocyk7CisKKwlBc3NlcnQoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkp OworCisJc3dpdGNoIChhY3Rpb24pCisJeworCQljYXNlIFBBX01TR19YQUNUX0RFUEVOREVOQ1k6 CisJCQlhcHBseV9oYW5kbGVfaW50ZXJuYWxfZGVwZW5kZW5jeShzKTsKKwkJCWJyZWFrOworCQlj YXNlIFBBX01TR19SRUxNQVA6CisJCQlhcHBseV9oYW5kbGVfaW50ZXJuYWxfcmVsYXRpb24ocyk7 CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2Rl KEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKKwkJCQkJIGVycm1zZygiaW52YWxpZCB3b3Jr ZXIgaW50ZXJuYWwgbWVzc2FnZSB0eXBlIFwiPz8/ICglZClcIiIsIGFjdGlvbikpKTsKKwl9Cit9 CisKIC8qIFBhcmFsbGVsIGFwcGx5IHdvcmtlciBtYWluIGxvb3AuICovCiBzdGF0aWMgdm9pZAog TG9naWNhbFBhcmFsbGVsQXBwbHlMb29wKHNobV9tcV9oYW5kbGUgKm1xaCkKQEAgLTc4MCw2ICs4 NDcsMTQgQEAgTG9naWNhbFBhcmFsbGVsQXBwbHlMb29wKHNobV9tcV9oYW5kbGUgKm1xaCkKIAlF cnJvckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsKIAlNZW1vcnlDb250ZXh0IG9sZGN4dCA9 IEN1cnJlbnRNZW1vcnlDb250ZXh0OwogCisJLyoKKwkgKiBFbnN1cmUgTE9HSUNBTF9SRVBfTVNH X0lOVEVSTkFMX01FU1NBR0UgZG9lcyBub3QgY29uZmxpY3Qgd2l0aAorCSAqIFBxUmVwbE1zZ19X QUxEYXRhICgnZCcpLCBhcyBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIG1heSByZWNlaXZlIGJvdGgg dHlwZXMKKwkgKiBvZiBtZXNzYWdlcy4KKwkgKi8KKwlTdGF0aWNBc3NlcnREZWNsKExPR0lDQUxf UkVQX01TR19JTlRFUk5BTF9NRVNTQUdFICE9IFBxUmVwbE1zZ19XQUxEYXRhLAorCQkJCQkgIkxP R0lDQUxfUkVQX01TR19JTlRFUk5BTF9NRVNTQUdFIGNvbmZsaWN0cyB3aXRoIFBxUmVwbE1zZ19X QUxEYXRhIik7CisKIAkvKgogCSAqIEluaXQgdGhlIEFwcGx5TWVzc2FnZUNvbnRleHQgd2hpY2gg d2UgY2xlYW4gdXAgYWZ0ZXIgZWFjaCByZXBsaWNhdGlvbgogCSAqIHByb3RvY29sIG1lc3NhZ2Uu CkBAIC04MTgsMjYgKzg5Myw0NiBAQCBMb2dpY2FsUGFyYWxsZWxBcHBseUxvb3Aoc2htX21xX2hh bmRsZSAqbXFoKQogCiAJCQlpbml0UmVhZE9ubHlTdHJpbmdJbmZvKCZzLCBkYXRhLCBsZW4pOwog Ci0JCQkvKgotCQkJICogVGhlIGZpcnN0IGJ5dGUgb2YgbWVzc2FnZXMgc2VudCBmcm9tIGxlYWRl ciBhcHBseSB3b3JrZXIgdG8KLQkJCSAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgY2FuIG9ubHkg YmUgUHFSZXBsTXNnX1dBTERhdGEuCi0JCQkgKi8KIAkJCWMgPSBwcV9nZXRtc2dieXRlKCZzKTsK LQkJCWlmIChjICE9IFBxUmVwbE1zZ19XQUxEYXRhKQotCQkJCWVsb2coRVJST1IsICJ1bmV4cGVj dGVkIG1lc3NhZ2UgXCIlY1wiIiwgYyk7CiAKLQkJCS8qCi0JCQkgKiBJZ25vcmUgc3RhdGlzdGlj cyBmaWVsZHMgdGhhdCBoYXZlIGJlZW4gdXBkYXRlZCBieSB0aGUgbGVhZGVyCi0JCQkgKiBhcHBs eSB3b3JrZXIuCi0JCQkgKgotCQkJICogWFhYIFdlIGNhbiBhdm9pZCBzZW5kaW5nIHRoZSBzdGF0 aXN0aWNzIGZpZWxkcyBmcm9tIHRoZSBsZWFkZXIKLQkJCSAqIGFwcGx5IHdvcmtlciBidXQgZm9y IHRoYXQsIGl0IG5lZWRzIHRvIHJlYnVpbGQgdGhlIGVudGlyZQotCQkJICogbWVzc2FnZSBieSBy ZW1vdmluZyB0aGVzZSBmaWVsZHMgd2hpY2ggY291bGQgYmUgbW9yZSB3b3JrIHRoYW4KLQkJCSAq IHNpbXBseSBpZ25vcmluZyB0aGVzZSBmaWVsZHMgaW4gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl ci4KLQkJCSAqLwotCQkJcy5jdXJzb3IgKz0gU0laRV9TVEFUU19NRVNTQUdFOworCQkJaWYgKGMg PT0gUHFSZXBsTXNnX1dBTERhdGEpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBJZ25vcmUgc3RhdGlz dGljcyBmaWVsZHMgdGhhdCBoYXZlIGJlZW4gdXBkYXRlZCBieSB0aGUKKwkJCQkgKiBsZWFkZXIg YXBwbHkgd29ya2VyLgorCQkJCSAqCisJCQkJICogWFhYIFdlIGNhbiBhdm9pZCBzZW5kaW5nIHRo ZSBzdGF0aXN0aWNzIGZpZWxkcyBmcm9tIHRoZQorCQkJCSAqIGxlYWRlciBhcHBseSB3b3JrZXIg YnV0IGZvciB0aGF0LCBpdCBuZWVkcyB0byByZWJ1aWxkIHRoZQorCQkJCSAqIGVudGlyZSBtZXNz YWdlIGJ5IHJlbW92aW5nIHRoZXNlIGZpZWxkcyB3aGljaCBjb3VsZCBiZSBtb3JlCisJCQkJICog d29yayB0aGFuIHNpbXBseSBpZ25vcmluZyB0aGVzZSBmaWVsZHMgaW4gdGhlIHBhcmFsbGVsIGFw cGx5CisJCQkJICogd29ya2VyLgorCQkJCSAqLworCQkJCXMuY3Vyc29yICs9IFNJWkVfU1RBVFNf TUVTU0FHRTsKKworCQkJCWFwcGx5X2Rpc3BhdGNoKCZzKTsKKwkJCX0KKwkJCWVsc2UgaWYgKGMg PT0gTE9HSUNBTF9SRVBfTVNHX0lOVEVSTkFMX01FU1NBR0UpCisJCQl7CisJCQkJLyoKKwkJCQkg KiBSZXdpbmQgdGhlIGN1cnNvciBzbyB0aGF0IGFwcGx5X2Rpc3BhdGNoIGNhbiByZS1yZWFkIHRo ZQorCQkJCSAqIGZpcnN0IGJ5dGUgKExPR0lDQUxfUkVQX01TR19JTlRFUk5BTF9NRVNTQUdFKSB0 byBjb3JyZWN0bHkKKwkJCQkgKiBoYW5kbGUgdGhlIGludGVybmFsIG1lc3NhZ2UuIEFsdGVybmF0 aXZlbHksIHdlIGNvdWxkIGNhbGwKKwkJCQkgKiBhcHBseV9oYW5kbGVfaW50ZXJuYWxfbWVzc2Fn ZSBkaXJlY3RseSwgYnV0IHVzaW5nCisJCQkJICogYXBwbHlfZGlzcGF0Y2ggdW5pZm9ybWx5IGFj cm9zcyBhbGwgbWVzc2FnZSB0eXBlcyBpcyBjbGVhbmVyCisJCQkJICogYW5kIG1vcmUgY29uc2lz dGVudC4KKwkJCQkgKi8KKwkJCQlzLmN1cnNvci0tOwogCi0JCQlhcHBseV9kaXNwYXRjaCgmcyk7 CisJCQkJYXBwbHlfZGlzcGF0Y2goJnMpOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8qCisJ CQkJICogVGhlIGZpcnN0IGJ5dGUgb2YgbWVzc2FnZXMgc2VudCBmcm9tIGxlYWRlciBhcHBseSB3 b3JrZXIgdG8KKwkJCQkgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGNhbiBvbmx5IGJlICd3JyBv ciAnaScuCisJCQkJICovCisJCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgbWVzc2FnZSBcIiVj XCIiLCBjKTsKKwkJCX0KIAkJfQogCQllbHNlIGlmIChzaG1xX3JlcyA9PSBTSE1fTVFfV09VTERf QkxPQ0spCiAJCXsKQEAgLTE3NDQsMyArMTgzOSw2MSBAQCBwYV9hdHRhY2hfcGFyYWxsZWxpemVk X3R4bl9oYXNoKGRzYV9oYW5kbGUgKnBhX2RzYV9oYW5kbGUsCiAKIAlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY3R4KTsKIH0KKworLyoKKyAqIFdhaXQgZm9yIHRoZSBnaXZlbiByZW1vdGUgdHJh bnNhY3Rpb24gdG8gZmluaXNoIGFwcGx5aW5nIGJ5IGEgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtl ci4KKyAqCisgKiBCb3RoIGxlYWRlciBhbmQgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBjYW4gY2Fs bCB0aGlzIGZ1bmN0aW9uIHRvIHdhaXQgZm9yIGEKKyAqIHBhcmFsbGVsaXplZCB0cmFuc2FjdGlv biB0byBmaW5pc2guCisgKi8KK3ZvaWQKK3BhX3dhaXRfZm9yX2RlcGVuZGVkX3RyYW5zYWN0aW9u KFRyYW5zYWN0aW9uSWQgeGlkKQoreworCVBhcmFsbGVsaXplZFR4bkVudHJ5ICp0eG5fZW50cnk7 CisKKwkvKgorCSAqIFF1aWNrIGV4aXQgaWYgcGFyYWxsZWxpemVkX3R4bnMgaGFzIG5vdCBiZWVu IGluaXRpYWxpemVkIHlldC4gVGhpcyBjYW4KKwkgKiBoYXBwZW4gd2hlbiB0aGUgbGVhZGVyIHdv cmtlciBjYWxscyB0aGlzIGZ1bmN0aW9uIGJlZm9yZSBhbnkgcGFyYWxsZWwKKwkgKiBhcHBseSB3 b3JrZXJzIGhhdmUgYmVlbiBsYXVuY2hlZC4KKwkgKi8KKwlpZiAoIXBhcmFsbGVsaXplZF90eG5z KQorCQlyZXR1cm47CisKKwllbG9nKERFQlVHMSwgIndhaXQgZm9yIGRlcGVuZGVkIHhpZCAldSIs IHhpZCk7CisKKwlmb3IgKDs7KQorCXsKKwkJdHhuX2VudHJ5ID0gZHNoYXNoX2ZpbmQocGFyYWxs ZWxpemVkX3R4bnMsICZ4aWQsIGZhbHNlKTsKKworCQkvKiBUaGUgZW50cnkgaXMgcmVtb3ZlZCBv bmx5IGlmIHRoZSB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgKi8KKwkJaWYgKHR4bl9lbnRyeSA9 PSBOVUxMKQorCQkJYnJlYWs7CisKKwkJZHNoYXNoX3JlbGVhc2VfbG9jayhwYXJhbGxlbGl6ZWRf dHhucywgdHhuX2VudHJ5KTsKKworCQkvKgorCQkgKiBXYWl0IGZvciB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyIHByb2Nlc3NpbmcgdGhlIGdpdmVuIHJlbW90ZQorCQkgKiB0cmFuc2FjdGlvbiB0 byBmaW5pc2ggYXBwbHlpbmcgYW5kIHJlbGVhc2UgaXRzIGxvY2suCisJCSAqLworCQlwYV9sb2Nr X3RyYW5zYWN0aW9uKHhpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJcGFfdW5sb2NrX3RyYW5zYWN0 aW9uKHhpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwor CisJCS8qCisJCSAqIEFjcXVpcmluZyB0aGUgbG9jayBzdWNjZXNzZnVsbHkgZG9lcyBub3QgZ3Vh cmFudGVlIHdlIGNhbiBwcm9jZWVkLgorCQkgKiBUaGUgd29ya2VyIG1heSBoYXZlIGVycm9yZWQg b3V0IGFuZCByZWxlYXNlZCB0aGUgbG9jayB3aGlsZSBsZWF2aW5nCisJCSAqIGl0cyBzaGFyZWQg aGFzaCBlbnRyeSBpbnRhY3QsIG9yIGl0IG1heSBub3QgaGF2ZSBhY3F1aXJlZCB0aGUgbG9jawor CQkgKiB5ZXQgYmVjYXVzZSBpdCBoYXNuJ3QgcHJvY2Vzc2VkIHRoZSBCRUdJTiBtZXNzYWdlLiBJ biBlaXRoZXIgY2FzZSwgd2UKKwkJICogbXVzdCBjb250aW51ZSB3YWl0aW5nIGluIHRoZSBsb29w IHVudGlsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIKKwkJICogZmluaXNoZXMgYXBwbHlpbmcg dGhlIHRyYW5zYWN0aW9uLCBvciB1bnRpbCB0aGUgbGVhZGVyIG5vdGlmaWVzIHVzIG9mCisJCSAq IGEgZmFpbHVyZSBhbmQgcmVzdGFydHMgYWxsIHdvcmtlcnMuCisJCSAqCisJCSAqIFRoZSBhYm92 ZSByYWNlIHdpbmRvdyBpcyBzbWFsbCBhbmQgaW5mcmVxdWVudCwgc28gbm8gV2FpdExhdGNoIGlz CisJCSAqIGFkZGVkLgorCQkgKi8KKwl9CisKKwllbG9nKERFQlVHMSwgImZpbmlzaCB3YWl0aW5n IGZvciBkZXBlbmRlZCB4aWQgJXUiLCB4aWQpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9wcm90by5jCmluZGV4IDg2YWQ5N2NkOTM3Li5hMGNhYzA1Y2RjZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwpAQCAtMTI1Myw2ICsxMjUzLDggQEAgbG9naWNh bHJlcF9tZXNzYWdlX3R5cGUoTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uKQogCQkJcmV0dXJuICJT VFJFQU0gQUJPUlQiOwogCQljYXNlIExPR0lDQUxfUkVQX01TR19TVFJFQU1fUFJFUEFSRToKIAkJ CXJldHVybiAiU1RSRUFNIFBSRVBBUkUiOworCQljYXNlIExPR0lDQUxfUkVQX01TR19JTlRFUk5B TF9NRVNTQUdFOgorCQkJcmV0dXJuICJJTlRFUk5BTCBNRVNTQUdFIjsKIAl9CiAKIAkvKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggYTNmMjQwNmVkODMuLjY1 OTlkNTYzMzA2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dv cmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAg LTM4OTAsNiArMzg5MCwxMCBAQCBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpCiAJCQlhcHBs eV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUocyk7CiAJCQlicmVhazsKIAorCQljYXNlIExPR0lDQUxf UkVQX01TR19JTlRFUk5BTF9NRVNTQUdFOgorCQkJYXBwbHlfaGFuZGxlX2ludGVybmFsX21lc3Nh Z2Uocyk7CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJ KGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9sb2dpY2FscHJvdG8uaAppbmRleCAwNThhOTU1ZTIwYy4uY2IwYThmNDQwYzAgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCisrKyBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCkBAIC01Myw2ICs1MywxMyBAQAogICogaW4g bG9naWNhbCByZXBsaWNhdGlvbiBwcm90b2NvbCwgd2hpY2ggdXNlcyBhIHNpbmdsZSBieXRlIHRv IGlkZW50aWZ5IGEKICAqIG1lc3NhZ2UgdHlwZS4gSGVuY2UgdGhlIHZhbHVlcyBzaG91bGQgYmUg c2luZ2xlLWJ5dGUgd2lkZSBhbmQgcHJlZmVyYWJseQogICogaHVtYW4tcmVhZGFibGUgY2hhcmFj dGVycy4KKyAqCisgKiBMT0dJQ0FMX1JFUF9NU0dfSU5URVJOQUxfTUVTU0FHRSAoJ2knKSBpcyBy ZXNlcnZlZCBmb3IgaW50ZXJuYWwgbWVzc2FnZXMgKHNlZQorICogUEFXb3JrZXJNc2dUeXBlIGZv ciBzdWItbWVzc2FnZSB0eXBlcykgc2VudCBmcm9tIHRoZSBsZWFkZXIgYXBwbHkKKyAqIHdvcmtl ciB0byBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiBDZW50cmFsaXppbmcgdGhpcyBkZWZpbml0aW9u IGhlcmUgYWxsb3dzCisgKiBhbGwgbWVzc2FnZSB0eXBlcyB0byBiZSBoYW5kbGVkIHRvZ2V0aGVy IGFuZCBhdm9pZHMgdGhlIG1haW50ZW5hbmNlIGJ1cmRlbiBvZgorICogZW5zdXJpbmcgc3ViLW1l c3NhZ2UgdHlwZXMgZG8gbm90IGNvbmZsaWN0IHdpdGggcmVndWxhciBMb2dpY2FsUmVwTXNnVHlw ZQorICogdmFsdWVzLgogICovCiB0eXBlZGVmIGVudW0gTG9naWNhbFJlcE1zZ1R5cGUKIHsKQEAg LTc1LDYgKzgyLDcgQEAgdHlwZWRlZiBlbnVtIExvZ2ljYWxSZXBNc2dUeXBlCiAJTE9HSUNBTF9S RVBfTVNHX1NUUkVBTV9DT01NSVQgPSAnYycsCiAJTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9BQk9S VCA9ICdBJywKIAlMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1BSRVBBUkUgPSAncCcsCisJTE9HSUNB TF9SRVBfTVNHX0lOVEVSTkFMX01FU1NBR0UgPSAnaScsCiB9IExvZ2ljYWxSZXBNc2dUeXBlOwog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFs LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCBlNjBl MGMzZDZkNy4uNDNkY2FlNDNhNjIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dvcmtlcl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9p bnRlcm5hbC5oCkBAIC0yNDIsNiArMjQyLDE5IEBAIHR5cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBw bHlXb3JrZXJJbmZvCiAJUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqc2hhcmVkOwogfSBQYXJh bGxlbEFwcGx5V29ya2VySW5mbzsKIAorLyoKKyAqIFBhcmFsbGVsIGFwcGx5IHdvcmtlciBpbnRl cm5hbCBtZXNzYWdlIHR5cGVzLgorICoKKyAqIFRoZXNlIHR5cGVzIG9mIG1lc3NhZ2VzIGFyZSBn ZW5lcmF0ZWQgYnkgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHNlbnQgdG8KKyAqIHRoZSBw YXJhbGxlbCBhcHBseSB3b3JrZXIsIGVuY2Fwc3VsYXRlZCB3aXRoaW4gdGhlCisgKiBMT0dJQ0FM X1JFUF9NU0dfSU5URVJOQUxfTUVTU0FHRSB0eXBlLgorICovCit0eXBlZGVmIGVudW0gUEFXb3Jr ZXJNc2dUeXBlCit7CisJUEFfTVNHX1hBQ1RfREVQRU5ERU5DWSA9ICdkJywKKwlQQV9NU0dfUkVM TUFQID0gJ3InLAorfSBQQVdvcmtlck1zZ1R5cGU7CisKIC8qIE1haW4gbWVtb3J5IGNvbnRleHQg Zm9yIGFwcGx5IHdvcmtlci4gUGVybWFuZW50IGR1cmluZyB3b3JrZXIgbGlmZXRpbWUuICovCiBl eHRlcm4gUEdETExJTVBPUlQgTWVtb3J5Q29udGV4dCBBcHBseUNvbnRleHQ7CiAKQEAgLTM0MSw2 ICszNTQsOCBAQCBleHRlcm4gdm9pZCBwYV9hbGxvY2F0ZV93b3JrZXIoVHJhbnNhY3Rpb25JZCB4 aWQpOwogZXh0ZXJuIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICpwYV9maW5kX3dvcmtlcihUcmFu c2FjdGlvbklkIHhpZCk7CiBleHRlcm4gdm9pZCBwYV9kZXRhY2hfYWxsX2Vycm9yX21xKHZvaWQp OwogCitleHRlcm4gdm9pZCBhcHBseV9oYW5kbGVfaW50ZXJuYWxfbWVzc2FnZShTdHJpbmdJbmZv IHMpOworCiBleHRlcm4gYm9vbCBwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8g KndpbmZvLCBTaXplIG5ieXRlcywKIAkJCQkJCSBjb25zdCB2b2lkICpkYXRhKTsKIGV4dGVybiB2 b2lkIHBhX3N3aXRjaF90b19wYXJ0aWFsX3NlcmlhbGl6ZShQYXJhbGxlbEFwcGx5V29ya2VySW5m byAqd2luZm8sCkBAIC0zNjgsNiArMzgzLDggQEAgZXh0ZXJuIHZvaWQgcGFfZGVjcl9hbmRfd2Fp dF9zdHJlYW1fYmxvY2sodm9pZCk7CiBleHRlcm4gdm9pZCBwYV94YWN0X2ZpbmlzaChQYXJhbGxl bEFwcGx5V29ya2VySW5mbyAqd2luZm8sCiAJCQkJCQkgICBYTG9nUmVjUHRyIHJlbW90ZV9sc24p OwogCitleHRlcm4gdm9pZCBwYV93YWl0X2Zvcl9kZXBlbmRlZF90cmFuc2FjdGlvbihUcmFuc2Fj dGlvbklkIHhpZCk7CisKICNkZWZpbmUgaXNQYXJhbGxlbEFwcGx5V29ya2VyKHdvcmtlcikgKCh3 b3JrZXIpLT5pbl91c2UgJiYgXAogCQkJCQkJCQkJICAgKHdvcmtlciktPnR5cGUgPT0gV09SS0VS VFlQRV9QQVJBTExFTF9BUFBMWSkKICNkZWZpbmUgaXNUYWJsZVN5bmNXb3JrZXIod29ya2VyKSAo KHdvcmtlciktPmluX3VzZSAmJiBcCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGZhYmRh MTdkNzM5Li5jMDBjMzQ2NTJmZSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTE5MjYs NiArMTkyNiw3IEBAIE92ZXJyaWRpbmdLaW5kCiBQQUNFX0hFQURFUgogUEFDTAogUEFUSAorUEFX b3JrZXJNc2dUeXBlCiBQQ3R4dEhhbmRsZQogUEVSTF9DT05URVhUCiBQRVJMX1NJCi0tIAoyLjQz LjAKCg== --_011_TY4PR01MB17718A4AB7F564C8DB0D6F7DC94102TY4PR01MB17718jp_ Content-Type: application/octet-stream; name="v19-0003-Introduce-a-local-hash-table-to-store-replica-id.patch" Content-Description: v19-0003-Introduce-a-local-hash-table-to-store-replica-id.patch Content-Disposition: attachment; filename="v19-0003-Introduce-a-local-hash-table-to-store-replica-id.patch"; size=35547; creation-date="Thu, 04 Jun 2026 06:54:41 GMT"; modification-date="Thu, 04 Jun 2026 06:58:30 GMT" Content-Transfer-Encoding: base64 RnJvbSA3Mjg4NjA1YzQ5Njc2NDA0N2NlMGZjNTUwZGRkMzJjMjhiZDRhMDhkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBaaGlqaWUgSG91IDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBUaHUsIDMwIEFwciAyMDI2IDEzOjI4OjQwICswODAwClN1YmplY3Q6IFtQQVRDSCB2MTkg My8zXSBJbnRyb2R1Y2UgYSBsb2NhbCBoYXNoIHRhYmxlIHRvIHN0b3JlIHJlcGxpY2EKIGlkZW50 aXRpZXMKClRoaXMgbG9jYWwgaGFzaCB0YWJsZSBvbiB0aGUgbGVhZGVyIGlzIHVzZWQgZm9yIGRl dGVjdGluZyBkZXBlbmRlbmNpZXMgYmV0d2Vlbgp0cmFuc2FjdGlvbnMuCgpUaGUgaGFzaCBjb250 YWlucyB0aGUgUmVwbGljYSBJZGVudGl0eSAoUkkpIGFzIGEga2V5IGFuZCB0aGUgcmVtb3RlIFhJ RCB0aGF0Cm1vZGlmaWVkIHRoZSBjb3JyZXNwb25kaW5nIHR1cGxlLiBUaGUgaGFzaCBlbnRyaWVz IGFyZSBpbnNlcnRlZCB3aGVuIHRoZSBsZWFkZXIKZmluZHMgYW4gUkkgZnJvbSBhIHJlcGxpY2F0 aW9uIG1lc3NhZ2UsIGFuZCBhcmUgcmVtb3ZlZCBpbiB0aGUKZm9sbG93aW5nIGNhc2VzOgoKMSkg V2hlbiBoYW5kbGluZyBhIHN1YnNlcXVlbnQgY2hhbmdlIHRoYXQgbW9kaWZpZXMgdGhlIHNhbWUg cm93LCBhbmQgdGhlCiAgIHN0b3JlZCB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBjb21taXR0ZWQu CjIpIFdoZW4gY29sbGVjdGluZyBmbHVzaCBwcm9ncmVzcyBvZiByZW1vdGUgdHJhbnNhY3Rpb25z LCBhbmQgdGhlIHN0b3JlZAogICB0cmFuc2FjdGlvbiBpcyBmb3VuZCB0byBoYXZlIGNvbW1pdHRl ZC4KMykgV2hlbiB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZXhjZWVkcyBSRVBMSUNBX0lERU5USVRZ X0NMRUFOVVBfVEhSRVNIT0xECiAgIGFuZCB0aGUgc3RvcmVkIHRyYW5zYWN0aW9uIGhhcyBhbHJl YWR5IGNvbW1pdHRlZC4KCldoZW4gdGhlIGxlYWRlciBzZW5kcyByZXBsaWNhdGlvbiBjaGFuZ2Vz IHRvIHBhcmFsbGVsIHdvcmtlcnMsIGl0IGNoZWNrcyB3aGV0aGVyCmFvdGhlciB0cmFuc2FjdGlv biBoYXMgYWxyZWFkeSB1c2VkIHRoZSBSSSBhc3NvY2lhdGVkIHdpdGggdGhlIGNoYW5nZS4gSWYg c28sCnRoZSBsZWFkZXIgbWFya3MgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gYXMgZGVwZW5kZW50 IG9uIHRoYXQgdHJhbnNhY3Rpb24gYW5kCm5vdGlmaWVzIHBhcmFsbGVsIHdvcmtlcnMgdmlhIFBB X01TR19YQUNUX0RFUEVOREVOQ1kgdG8gd2FpdCBmb3IgdGhhdAp0cmFuc2FjdGlvbiB0byBmaW5p c2guCgpBdXRob3I6IFpoaWppZSBIb3UgPGhvdXpqLmZuc3RAZnVqaXRzdS5jb20+CkF1dGhvcjog SGF5YXRvIEt1cm9kYSA8a3Vyb2RhLmhheWF0b0BmdWppdHN1LmNvbT4KLS0tCiAuLi4vcmVwbGlj YXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgfCAxMzEgKysrLQogc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jICAgIHwgIDI0ICsKIHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8IDY4OCArKysrKysrKysrKysrKysr Ky0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oICAgICB8ICAgOSAr CiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAgIDYgKy0K IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAgMSArCiBz cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDMgKwogNyBm aWxlcyBjaGFuZ2VkLCA4NTcgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIu YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5j CmluZGV4IDVmNjIyYmJlNTU4Li5mZjRkNjAyOGRkYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAgLTIxMywxMiAr MjEzLDMyIEBACiAjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0xPQ0tfWEFDVAkxCiAKIC8qCi0gKiBI YXNoIHRhYmxlIGVudHJ5IHRvIG1hcCB4aWQgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBz dGF0ZS4KKyAqIEhhc2ggdGFibGUgZW50cnkgb2YgUGFyYWxsZWxBcHBseVR4bkhhc2ggdG8gbWFw IHhpZCB0byB0aGUgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlciBzdGF0ZS4KICAqLwogdHlwZWRl ZiBzdHJ1Y3QgUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5CiB7Ci0JVHJhbnNhY3Rpb25JZCB4aWQ7 CQkJLyogSGFzaCBrZXkgLS0gbXVzdCBiZSBmaXJzdCAqLworCVRyYW5zYWN0aW9uSWQgeGlkOwkJ CS8qIFJlbW90ZSB0cmFuc2FjdGlvbiBJRCAoaGFzaCBrZXkpIC0tLQorCQkJCQkJCQkgKiBtdXN0 IGJlIGZpcnN0ICovCisKKwkvKgorCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgYXNzaWdu ZWQgZm9yIGFwcGx5aW5nIHRoZSB0cmFuc2FjdGlvbi4gSXQgaXMKKwkgKiBOVUxMIGlmIHRoZSB3 b3JrZXIgaGFzIGFscmVhZHkgZmluaXNoZWQgdGhlIHRyYW5zYWN0aW9uIGFuZCB0aGUgbGVhZGVy CisJICogaGFzIGNvbGxlY3RlZCBpdHMgbG9jYWwgZW5kIExTTi4KKwkgKi8KIAlQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqd2luZm87CisKKwkvKgorCSAqIFRoZSBsb2NhbCBlbmQgTFNOIG9mIHRo aXMgdHJhbnNhY3Rpb24gYXBwbGllZCBieSB0aGUgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIu CisJICoKKwkgKiBUaGUgbGVhZGVyIHdpbGwgaW5pdGlhbGl6ZSB0aGlzIHZhbHVlIGJ5IHJlYWRp bmcgdGhlIGxhc3RfY29tbWl0X2VuZCBmcm9tCisJICogdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciBzaGFyZWQgbWVtb3J5IGJlZm9yZSByZXVzaW5nIHRoZSB3b3JrZXIgZm9yCisJICogYW5vdGhl ciB0cmFuc2FjdGlvbiAoc2VlIHBhX2dldF9sYXN0X2NvbW1pdF9lbmQpLiBBbiBpbnZhbGlkIHZh bHVlCisJICogaW5kaWNhdGVzIHRoZSB3b3JrZXIgaGFzIG5vdCBmaW5pc2hlZCBhcHBseWluZyB0 aGUgdHJhbnNhY3Rpb24gb3IgdGhlcmUKKwkgKiBpcyBubyBjaGFuZ2UgYXBwbGllZCBieSB0aGUg d29ya2VyIGZvciB0aGlzIHRyYW5zYWN0aW9uLgorCSAqLworCVhMb2dSZWNQdHIJbG9jYWxfZW5k OwogfSBQYXJhbGxlbEFwcGx5V29ya2VyRW50cnk7CiAKIC8qIEFuIGVudHJ5IGluIHRoZSBwYXJh bGxlbGl6ZWRfdHhucyBzaGFyZWQgaGFzaCB0YWJsZSAqLwpAQCAtMjMwLDYgKzI1MCwxMCBAQCB0 eXBlZGVmIHN0cnVjdCBQYXJhbGxlbGl6ZWRUeG5FbnRyeQogLyoKICAqIEEgaGFzaCB0YWJsZSB1 c2VkIHRvIGNhY2hlIHRoZSBzdGF0ZSBvZiBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGJlaW5nIGFw cGxpZWQKICAqIGJ5IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiBFbnRyaWVzIGFyZSBvZiB0 eXBlIFBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeS4KKyAqCisgKiBUaGUgbGVhZGVyIGFwcGx5IHdv cmtlciBhZGRzIGFuIGVudHJ5IHdoZW4gYSB0cmFuc2FjdGlvbiBzdGFydHMgYmVpbmcKKyAqIGFw cGxpZWQsIGFuZCByZW1vdmVzIGl0IGFmdGVyIGNvbGxlY3RpbmcgdGhlIHRyYW5zYWN0aW9uJ3Mg bG9jYWwgZW5kIExTTiBmcm9tCisgKiB0aGUgcGFyYWxsZWwgd29ya2VyLgogICovCiBzdGF0aWMg SFRBQiAqUGFyYWxsZWxBcHBseVR4bkhhc2ggPSBOVUxMOwogCkBAIC0yMzcsNiArMjYxLDEwIEBA IHN0YXRpYyBIVEFCICpQYXJhbGxlbEFwcGx5VHhuSGFzaCA9IE5VTEw7CiAgKiBBIGhhc2ggdGFi bGUgdXNlZCB0byB0cmFjayB0aGUgcGFyYWxsZWxpemVkIHJlbW90ZSB0cmFuc2FjdGlvbnMgdGhh dCBjb3VsZCBiZQogICogZGVwZW5kZWQgb24gYnkgb3RoZXIgdHJhbnNhY3Rpb25zLiBFbnRyaWVz IGFyZSBvZiB0eXBlIFBhcmFsbGVsaXplZFR4bkVudHJ5LgogICoKKyAqIFRoZSBsZWFkZXIgYXBw bHkgd29ya2VyIGFkZHMgYW4gZW50cnkgYmVmb3JlIHNlbmRpbmcgdGhlIENPTU1JVCByZWNvcmQg b2YgYQorICogdHJhbnNhY3Rpb24gdG8gYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIFRoZSBlbnRy eSBpcyByZW1vdmVkIGJ5IHRoYXQgd29ya2VyCisgKiBpbW1lZGlhdGVseSBhZnRlciBjb21taXR0 aW5nIHRoZSB0cmFuc2FjdGlvbi4KKyAqCiAgKiBkc2hhc2ggaXMgdXNlZCB0byBlbmFibGUgZHlu YW1pYyBzaGFyZWQgbWVtb3J5IGFsbG9jYXRpb24gYmFzZWQgb24gdGhlIG51bWJlcgogICogb2Yg dHJhbnNhY3Rpb25zIGJlaW5nIGFwcGxpZWQgaW4gcGFyYWxsZWwuCiAgKi8KQEAgLTUxMCw3ICs1 MzgsNyBAQCBwYV9sYXVuY2hfcGFyYWxsZWxfd29ya2VyKHZvaWQpCiAgKiBzdHJlYW1pbmcgY2hh bmdlcy4KICAqLwogdm9pZAotcGFfYWxsb2NhdGVfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKQor cGFfYWxsb2NhdGVfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIHN0cmVhbV90eG4pCiB7 CiAJYm9vbAkJZm91bmQ7CiAJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvID0gTlVMTDsK QEAgLTU1MSw3ICs1NzksOSBAQCBwYV9hbGxvY2F0ZV93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQp CiAKIAl3aW5mby0+aW5fdXNlID0gdHJ1ZTsKIAl3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMgPSBm YWxzZTsKKwl3aW5mby0+c3RyZWFtX3R4biA9IHN0cmVhbV90eG47CiAJZW50cnktPndpbmZvID0g d2luZm87CisJZW50cnktPmxvY2FsX2VuZCA9IEludmFsaWRYTG9nUmVjUHRyOwogfQogCiAvKgpA QCAtNzQ4LDYgKzc3OCw3MiBAQCBwYV9wcm9jZXNzX3Nwb29sZWRfbWVzc2FnZXNfaWZfcmVxdWly ZWQodm9pZCkKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorLyoKKyAqIEdldCB0aGUgbG9jYWwgZW5kIExT TiBmb3IgYSB0cmFuc2FjdGlvbiBhcHBsaWVkIGJ5IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgor ICoKKyAqIElmIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZGlkIG5vdCB3cml0ZSBhbnkgY2hh bmdlcyBkdXJpbmcgdGhlIHRyYW5zYWN0aW9uCisgKiBhcHBsaWNhdGlvbiBkdWUgdG8gc2l0dWF0 aW9ucyBsaWtlIHVwZGF0ZS9kZWxldGVfbWlzc2luZyBvciBhIGJlZm9yZSB0cmlnZ2VyLAorICog dGhlICpza2lwcGVkX3dyaXRlIHdpbGwgYmUgc2V0IHRvIHRydWUuCisgKgorICogT25jZSB0aGUg TFNOIGlzIHJldHJpZXZlZCwgdGhlIHRyYW5zYWN0aW9uIGVudHJ5IGlzIHJlbW92ZWQgZnJvbQor ICogUGFyYWxsZWxBcHBseVR4bkhhc2guCisgKi8KK1hMb2dSZWNQdHIKK3BhX2dldF9sYXN0X2Nv bW1pdF9lbmQoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgKnNraXBwZWRfd3JpdGUpCit7CisJYm9v bAkJZm91bmQ7CisJUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5ICplbnRyeTsKKwlQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqd2luZm87CisKKwlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlk KSk7CisJQXNzZXJ0KFBhcmFsbGVsQXBwbHlUeG5IYXNoKTsKKworCWlmIChza2lwcGVkX3dyaXRl KQorCQkqc2tpcHBlZF93cml0ZSA9IGZhbHNlOworCisJLyogRmluZCBhbiBlbnRyeSBmb3IgdGhl IHJlcXVlc3RlZCB0cmFuc2FjdGlvbi4gKi8KKwllbnRyeSA9IGhhc2hfc2VhcmNoKFBhcmFsbGVs QXBwbHlUeG5IYXNoLCAmeGlkLCBIQVNIX0ZJTkQsICZmb3VuZCk7CisKKwlpZiAoIWZvdW5kKQor CQlyZXR1cm4gSW52YWxpZFhMb2dSZWNQdHI7CisKKwkvKgorCSAqIElmIHdvcmtlciBpbmZvIGlz IE5VTEwsIGl0IGluZGljYXRlcyB0aGF0IHRoZSB3b3JrZXIgaGFzIGFscmVhZHkKKwkgKiBmaW5p c2hlZCBoYW5kbGluZyB0aGUgdHJhbnNhY3Rpb24uIENvbnNlcXVlbnRseSwgdGhlIGxvY2FsIGVu ZCBMU04gaGFzCisJICogYWxyZWFkeSBiZWVuIGNvbGxlY3RlZCBhbmQgc2F2ZWQgaW4gZW50cnkt PmxvY2FsX2VuZC4KKwkgKi8KKwl3aW5mbyA9IGVudHJ5LT53aW5mbzsKKwlpZiAod2luZm8gPT0g TlVMTCkKKwl7CisJCWlmICghaGFzaF9zZWFyY2goUGFyYWxsZWxBcHBseVR4bkhhc2gsICZ4aWQs IEhBU0hfUkVNT1ZFLCBOVUxMKSkKKwkJCWVsb2coRVJST1IsICJoYXNoIHRhYmxlIGNvcnJ1cHRl ZCIpOworCisJCWlmIChza2lwcGVkX3dyaXRlKQorCQkJKnNraXBwZWRfd3JpdGUgPSBYTG9nUmVj UHRySXNJbnZhbGlkKGVudHJ5LT5sb2NhbF9lbmQpOworCisJCXJldHVybiBlbnRyeS0+bG9jYWxf ZW5kOworCX0KKworCS8qIFJldHVybiBJbnZhbGlkWExvZ1JlY1B0ciBpZiB0aGUgdHJhbnNhY3Rp b24gaXMgc3RpbGwgaW4gcHJvZ3Jlc3MgKi8KKwlpZiAocGFfZ2V0X3hhY3Rfc3RhdGUod2luZm8t PnNoYXJlZCkgIT0gUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQpCisJCXJldHVybiBJbnZhbGlkWExv Z1JlY1B0cjsKKworCS8qIENvbGxlY3QgdGhlIGxvY2FsIGVuZCBMU04gZnJvbSB0aGUgd29ya2Vy J3Mgc2hhcmVkIG1lbW9yeSBhcmVhICovCisJZW50cnktPmxvY2FsX2VuZCA9IHdpbmZvLT5zaGFy ZWQtPmxhc3RfY29tbWl0X2VuZDsKKwllbnRyeS0+d2luZm8gPSBOVUxMOworCisJaWYgKHNraXBw ZWRfd3JpdGUpCisJCSpza2lwcGVkX3dyaXRlID0gWExvZ1JlY1B0cklzSW52YWxpZChlbnRyeS0+ bG9jYWxfZW5kKTsKKworCWVsb2coREVCVUcxLCAic3RvcmUgbG9jYWwgY29tbWl0ICVYLyVYIGVu ZCB0byB0eG4gZW50cnk6ICV1IiwKKwkJIExTTl9GT1JNQVRfQVJHUyhlbnRyeS0+bG9jYWxfZW5k KSwgeGlkKTsKKworCWlmICghaGFzaF9zZWFyY2goUGFyYWxsZWxBcHBseVR4bkhhc2gsICZ4aWQs IEhBU0hfUkVNT1ZFLCBOVUxMKSkKKwkJZWxvZyhFUlJPUiwgImhhc2ggdGFibGUgY29ycnVwdGVk Iik7CisKKwlyZXR1cm4gZW50cnktPmxvY2FsX2VuZDsKK30KKwogLyoKICAqIEludGVycnVwdCBo YW5kbGVyIGZvciBtYWluIGxvb3Agb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgogICovCkBAIC0x Nzk1LDYgKzE4OTEsMzUgQEAgcGFfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlckluZm8g KndpbmZvLCBYTG9nUmVjUHRyIHJlbW90ZV9sc24pCiAJcGFfZnJlZV93b3JrZXIod2luZm8pOwog fQogCisvKgorICogQ2hlY2sgaWYgdGhlIGdpdmVuIHRyYW5zYWN0aW9uIGhhcyBiZWVuIGNvbW1p dHRlZC4gVGhpcyBjYW4gb25seSBiZSB1c2VkIGJ5CisgKiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtl ci4KKyAqCisgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCwg ZmFsc2UgaWYgaXQgaXMgc3RpbGwgYmVpbmcKKyAqIGFwcGxpZWQgaW4gcGFyYWxsZWwuCisgKi8K K2Jvb2wKK3BhX3RyYW5zYWN0aW9uX2NvbW1pdHRlZChUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwli b29sCQlmb3VuZDsKKwlQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkgKmVudHJ5OworCisJQXNzZXJ0 KGFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSk7CisJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlk KHhpZCkpOworCUFzc2VydChQYXJhbGxlbEFwcGx5VHhuSGFzaCk7CisKKwkvKiBGaW5kIGFuIGVu dHJ5IGZvciB0aGUgcmVxdWVzdGVkIHRyYW5zYWN0aW9uICovCisJZW50cnkgPSBoYXNoX3NlYXJj aChQYXJhbGxlbEFwcGx5VHhuSGFzaCwgJnhpZCwgSEFTSF9GSU5ELCAmZm91bmQpOworCisJaWYg KCFmb3VuZCkKKwkJcmV0dXJuIHRydWU7CisKKwlpZiAoIWVudHJ5LT53aW5mbykKKwkJcmV0dXJu IHRydWU7CisKKwlyZXR1cm4gcGFfZ2V0X3hhY3Rfc3RhdGUoZW50cnktPndpbmZvLT5zaGFyZWQp ID09IFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEOworfQorCiAvKgogICogQXR0YWNoIHRvIHRoZSBz aGFyZWQgaGFzaCB0YWJsZSBmb3IgcGFyYWxsZWxpemVkIHRyYW5zYWN0aW9ucy4KICAqLwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCmluZGV4IDBiMWQ4MGI1YjBm Li5hYjYzMTNlYjFiYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRp b24uYwpAQCAtOTYwLDMgKzk2MCwyNyBAQCBGaW5kTG9naWNhbFJlcExvY2FsSW5kZXgoUmVsYXRp b24gbG9jYWxyZWwsIExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVtb3RlcmVsLAogCiAJcmV0dXJuIElu dmFsaWRPaWQ7CiB9CisKKy8qCisgKiBHZXQgdGhlIExvZ2ljYWxSZXBSZWxNYXBFbnRyeSBjb3Jy ZXNwb25kaW5nIHRvIHRoZSBnaXZlbiByZWxpZCB3aXRob3V0CisgKiBvcGVuaW5nIHRoZSBsb2Nh bCByZWxhdGlvbi4KKyAqLworTG9naWNhbFJlcFJlbE1hcEVudHJ5ICoKK2xvZ2ljYWxyZXBfZ2V0 X3JlbGVudHJ5KExvZ2ljYWxSZXBSZWxJZCByZW1vdGVpZCkKK3sKKwlMb2dpY2FsUmVwUmVsTWFw RW50cnkgKmVudHJ5OworCWJvb2wJCWZvdW5kOworCisJaWYgKExvZ2ljYWxSZXBSZWxNYXAgPT0g TlVMTCkKKwkJbG9naWNhbHJlcF9yZWxtYXBfaW5pdCgpOworCisJLyogU2VhcmNoIGZvciBleGlz dGluZyBlbnRyeS4gKi8KKwllbnRyeSA9IGhhc2hfc2VhcmNoKExvZ2ljYWxSZXBSZWxNYXAsICh2 b2lkICopICZyZW1vdGVpZCwKKwkJCQkJCUhBU0hfRklORCwgJmZvdW5kKTsKKworCWlmICghZm91 bmQpCisJCWVsb2coREVCVUcxLCAibm8gcmVsYXRpb24gbWFwIGVudHJ5IGZvciByZW1vdGUgcmVs YXRpb24gSUQgJXUiLAorCQkJIHJlbW90ZWlkKTsKKworCXJldHVybiBlbnRyeTsKK30KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDY1OTlkNTYzMzA2Li5lZWE4 NzBjYTI4MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0z MDMsMTEgKzMwMywzNSBAQAogCiAjZGVmaW5lIE5BUFRJTUVfUEVSX0NZQ0xFIDEwMDAJLyogbWF4 IHNsZWVwIHRpbWUgYmV0d2VlbiBjeWNsZXMgKDFzKSAqLwogCisvKgorICogU3RydWN0IGZvciB0 cmFja2luZyB0aGUgcHJvZ3Jlc3Mgb2YgZmx1c2hpbmcgdGhlIHRyYW5zYWN0aW9uIHJlY2VpdmVk IGZyb20KKyAqIHRoZSBwdWJsaXNoZXIuCisgKgorICogQSBsaXN0IG9mIHRoZXNlIHN0cnVjdHMg KGxzbl9tYXBwaW5nKSBpcyBtYWludGFpbmVkIGluIHRoZSBhcHBseSB3b3JrZXIsIGVhY2gKKyAq IHJlcHJlc2VudGluZyBhIHRyYW5zYWN0aW9uIHRoYXQgaXMgYmVpbmcgZmx1c2hlZC4gVGhlIGVu dHJpZXMgYXJlIHJlbW92ZWQKKyAqIGZyb20gdGhlIGxpc3Qgd2hlbiB0aGUgdHJhbnNhY3Rpb24g aXMgZnVsbHkgZmx1c2hlZCAoc2VlIGdldF9mbHVzaF9wb3NpdGlvbikuCisgKi8KIHR5cGVkZWYg c3RydWN0IEZsdXNoUG9zaXRpb24KIHsKIAlkbGlzdF9ub2RlCW5vZGU7CisKKwkvKgorCSAqIFRo ZSBlbmQgb2YgY29tbWl0IHJlY29yZCBhcHBsaWVkIGJ5IHRoZSB3b3JrZXIsIGFuZCB0aGUgY29y cmVzcG9uZGluZyBlbmQKKwkgKiBvZiBjb21taXQgcmVjb3JkIG9uIHRoZSBwdWJsaXNoZXIuCisJ ICoKKwkgKiBGb3IgdHJhbnNhY3Rpb25zIGFzc2lnbmVkIHRvIGEgcGFyYWxsZWwgYXBwbHkgd29y a2VyLCB0aGUgbG9jYWxfZW5kIGlzCisJICogbm90IGltbWVkaWF0ZWx5IGF2YWlsYWJsZS4gVGhl IGxlYWRlciB3aWxsIHVwZGF0ZSB0aGUgbG9jYWxfZW5kIHdoZW4gaXQKKwkgKiBjb25maXJtcyB0 aGF0IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaGFzIGZpbmlzaGVkIGFwcGx5aW5nIHRoZQor CSAqIHRyYW5zYWN0aW9uIChzZWUgdGhlIHVzYWdlIG9mIHBhX2dldF9sYXN0X2NvbW1pdF9lbmQp LgorCSAqLwogCVhMb2dSZWNQdHIJbG9jYWxfZW5kOwogCVhMb2dSZWNQdHIJcmVtb3RlX2VuZDsK KworCS8qCisJICogVGhlIHJlbW90ZSB0cmFuc2FjdGlvbiBJRC4gVGhpcyBzaG91bGQgYmUgc2V0 IHRvIGEgdmFsaWQgSUQgb25seSB3aGVuIHRoZQorCSAqIHRyYW5zYWN0aW9uIGlzIGFzc2lnbmVk IHRvIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCSAqLworCVRyYW5zYWN0aW9uSWQgcGFfcmVt b3RlX3hpZDsKIH0gRmx1c2hQb3NpdGlvbjsKIAogc3RhdGljIGRsaXN0X2hlYWQgbHNuX21hcHBp bmcgPSBETElTVF9TVEFUSUNfSU5JVChsc25fbWFwcGluZyk7CkBAIC00NzYsNiArNTAwLDggQEAg RXJyb3JDb250ZXh0Q2FsbGJhY2sgKmFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2sgPSBOVUxMOwog TWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250ZXh0ID0gTlVMTDsKIE1lbW9yeUNvbnRleHQg QXBwbHlDb250ZXh0ID0gTlVMTDsKIAorc3RhdGljIE1lbW9yeUNvbnRleHQgUGFyYWxsZWxBcHBs eUNvbnRleHQgPSBOVUxMOworCiAvKiBwZXIgc3RyZWFtIGNvbnRleHQgZm9yIHN0cmVhbWluZyB0 cmFuc2FjdGlvbnMgKi8KIHN0YXRpYyBNZW1vcnlDb250ZXh0IExvZ2ljYWxTdHJlYW1pbmdDb250 ZXh0ID0gTlVMTDsKIApAQCAtNTQ5LDYgKzU3NSw2NSBAQCB0eXBlZGVmIHN0cnVjdCBBcHBseVN1 YlhhY3REYXRhCiAKIHN0YXRpYyBBcHBseVN1YlhhY3REYXRhIHN1YnhhY3RfZGF0YSA9IHswLCAw LCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwgTlVMTH07CiAKKy8qIEhhc2ggdGFibGUga2V5IGZvciBy ZXBsaWNhX2lkZW50aXR5X3RhYmxlICovCit0eXBlZGVmIHN0cnVjdCBSZXBsaWNhSWRlbnRpdHlL ZXkKK3sKKwlPaWQJCQlyZWxpZDsKKwlMb2dpY2FsUmVwVHVwbGVEYXRhICpkYXRhOworfSBSZXBs aWNhSWRlbnRpdHlLZXk7CisKKy8qIEhhc2ggdGFibGUgZW50cnkgaW4gcmVwbGljYV9pZGVudGl0 eV90YWJsZSAqLwordHlwZWRlZiBzdHJ1Y3QgUmVwbGljYUlkZW50aXR5RW50cnkKK3sKKwlSZXBs aWNhSWRlbnRpdHlLZXkgKmtleWRhdGE7CisJVHJhbnNhY3Rpb25JZCByZW1vdGVfeGlkOworCisJ LyogbmVlZGVkIGZvciBzaW1wbGVoYXNoICovCisJdWludDMyCQloYXNoOworCWNoYXIJCXN0YXR1 czsKK30gUmVwbGljYUlkZW50aXR5RW50cnk7CisKKyNpbmNsdWRlICJjb21tb24vaGFzaGZuLmgi CisKK3N0YXRpYyB1aW50MzIgaGFzaF9yZXBsaWNhX2lkZW50aXR5KFJlcGxpY2FJZGVudGl0eUtl eSAqa2V5KTsKK3N0YXRpYyBib29sIGhhc2hfcmVwbGljYV9pZGVudGl0eV9jb21wYXJlKFJlcGxp Y2FJZGVudGl0eUtleSAqYSwKKwkJCQkJCQkJCQkgIFJlcGxpY2FJZGVudGl0eUtleSAqYik7CisK Ky8qIERlZmluZSBwYXJhbWV0ZXJzIGZvciByZXBsaWNhIGlkZW50aXR5IGhhc2ggdGFibGUgY29k ZSBnZW5lcmF0aW9uLiAqLworI2RlZmluZSBTSF9QUkVGSVgJCXJlcGxpY2FfaWRlbnRpdHkKKyNk ZWZpbmUgU0hfRUxFTUVOVF9UWVBFCVJlcGxpY2FJZGVudGl0eUVudHJ5CisjZGVmaW5lIFNIX0tF WV9UWVBFCQlSZXBsaWNhSWRlbnRpdHlLZXkgKgorI2RlZmluZQlTSF9LRVkJCQlrZXlkYXRhCisj ZGVmaW5lIFNIX0hBU0hfS0VZKHRiLCBrZXkpCWhhc2hfcmVwbGljYV9pZGVudGl0eShrZXkpCisj ZGVmaW5lIFNIX0VRVUFMKHRiLCBhLCBiKQkJaGFzaF9yZXBsaWNhX2lkZW50aXR5X2NvbXBhcmUo YSwgYikKKyNkZWZpbmUgU0hfU1RPUkVfSEFTSAorI2RlZmluZSBTSF9HRVRfSEFTSCh0YiwgYSkg KGEpLT5oYXNoCisjZGVmaW5lCVNIX1NDT1BFCQlzdGF0aWMgaW5saW5lCisjZGVmaW5lIFNIX0RF Q0xBUkUKKyNkZWZpbmUgU0hfREVGSU5FCisjaW5jbHVkZSAibGliL3NpbXBsZWhhc2guaCIKKwor I2RlZmluZSBSRVBMSUNBX0lERU5USVRZX0lOSVRJQUxfU0laRSAxMjgKKyNkZWZpbmUgUkVQTElD QV9JREVOVElUWV9DTEVBTlVQX1RIUkVTSE9MRCAxMDI0CisKKy8qCisgKiBIYXNoIHRhYmxlIHN0 b3JpbmcgcmVwbGljYSBpZGVudGl0eSB2YWx1ZXMgZm9yIGNoYW5nZXMgYmVpbmcgYXBwbGllZCBp bgorICogcGFyYWxsZWwsIGFsb25nIHdpdGggdGhlIGxhdGVzdCB0cmFuc2FjdGlvbiB0aGF0IG1v ZGlmaWVkIGVhY2ggcm93LgorICoKKyAqIEVudHJpZXMgYXJlIHJlbW92ZWQgaW4gdGhlIGZvbGxv d2luZyBjYXNlczoKKyAqCisgKiAxKSBXaGVuIGhhbmRsaW5nIGEgc3Vic2VxdWVudCBjaGFuZ2Ug dGhhdCBtb2RpZmllcyB0aGUgc2FtZSByb3csIGFuZCB0aGUKKyAqICAgIHN0b3JlZCB0cmFuc2Fj dGlvbiBoYXMgYWxyZWFkeSBjb21taXR0ZWQuCisgKiAyKSBXaGVuIGNvbGxlY3RpbmcgZmx1c2gg cHJvZ3Jlc3Mgb2YgcmVtb3RlIHRyYW5zYWN0aW9ucywgYW5kIHRoZSBzdG9yZWQKKyAqICAgIHRy YW5zYWN0aW9uIGlzIGZvdW5kIHRvIGhhdmUgY29tbWl0dGVkLgorICogMykgV2hlbiB0aGUgbnVt YmVyIG9mIGVudHJpZXMgZXhjZWVkcyBSRVBMSUNBX0lERU5USVRZX0NMRUFOVVBfVEhSRVNIT0xE CisgKiAgICBhbmQgdGhlIHN0b3JlZCB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBjb21taXR0ZWQu CisgKgorICogV2UgdXNlIHNpbXBsZWhhc2ggZm9yIGl0cyBlZmZpY2llbmN5IChzZWUgY29tbWVu dHMgYXRvcCBvZiBzaW1wbGVoYXNoLmgpLCBhcworICogdGhpcyBoYXNoIHRhYmxlIGlzIGFjY2Vz c2VkIGZvciBldmVyeSBjaGFuZ2UgaW4gYSB0cmFuc2FjdGlvbi4KKyAqLworc3RhdGljIHJlcGxp Y2FfaWRlbnRpdHlfaGFzaCAqcmVwbGljYV9pZGVudGl0eV90YWJsZSA9IE5VTEw7CisKIHN0YXRp YyBpbmxpbmUgdm9pZCBzdWJ4YWN0X2ZpbGVuYW1lKGNoYXIgKnBhdGgsIE9pZCBzdWJpZCwgVHJh bnNhY3Rpb25JZCB4aWQpOwogc3RhdGljIGlubGluZSB2b2lkIGNoYW5nZXNfZmlsZW5hbWUoY2hh ciAqcGF0aCwgT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCk7CiAKQEAgLTYzNiw2ICs3MjEs NTgwIEBAIHN0YXRpYyB2b2lkIHNldF93YWxfcmVjZWl2ZXJfdGltZW91dCh2b2lkKTsKIAogc3Rh dGljIHZvaWQgb25fZXhpdF9jbGVhcl94YWN0X3N0YXRlKGludCBjb2RlLCBEYXR1bSBhcmcpOwog CitzdGF0aWMgdm9pZCBzZW5kX2ludGVybmFsX2RlcGVuZGVuY2llcyhQYXJhbGxlbEFwcGx5V29y a2VySW5mbyAqd2luZm8sCisJCQkJCQkJCQkgICBMaXN0ICpkZXBlbmRzX29uX3hpZHMpOworCisv KgorICogQ29tcHV0ZSB0aGUgaGFzaCB2YWx1ZSBmb3IgZW50cmllcyBpbiB0aGUgcmVwbGljYV9p ZGVudGl0eV90YWJsZS4KKyAqLworc3RhdGljIHVpbnQzMgoraGFzaF9yZXBsaWNhX2lkZW50aXR5 KFJlcGxpY2FJZGVudGl0eUtleSAqa2V5KQoreworCWludAkJCWk7CisJdWludDMyCQloYXNoa2V5 ID0gMDsKKworCWhhc2hrZXkgPSBoYXNoX2NvbWJpbmUoaGFzaGtleSwgaGFzaF91aW50MzIoa2V5 LT5yZWxpZCkpOworCisJZm9yIChpID0gMDsgaSA8IGtleS0+ZGF0YS0+bmNvbHM7IGkrKykKKwl7 CisJCXVpbnQzMgkJaGtleTsKKworCQlpZiAoa2V5LT5kYXRhLT5jb2xzdGF0dXNbaV0gPT0gTE9H SUNBTFJFUF9DT0xVTU5fTlVMTCkKKwkJCWNvbnRpbnVlOworCisJCWhrZXkgPSBoYXNoX2FueSgo Y29uc3QgdW5zaWduZWQgY2hhciAqKSBrZXktPmRhdGEtPmNvbHZhbHVlc1tpXS5kYXRhLAorCQkJ CQkJa2V5LT5kYXRhLT5jb2x2YWx1ZXNbaV0ubGVuKTsKKwkJaGFzaGtleSA9IGhhc2hfY29tYmlu ZShoYXNoa2V5LCBoa2V5KTsKKwl9CisKKwlyZXR1cm4gaGFzaGtleTsKK30KKworLyoKKyAqIENv bXBhcmUgdHdvIGVudHJpZXMgaW4gdGhlIHJlcGxpY2FfaWRlbnRpdHlfdGFibGUuCisgKi8KK3N0 YXRpYyBib29sCitoYXNoX3JlcGxpY2FfaWRlbnRpdHlfY29tcGFyZShSZXBsaWNhSWRlbnRpdHlL ZXkgKmEsIFJlcGxpY2FJZGVudGl0eUtleSAqYikKK3sKKwlpZiAoYS0+cmVsaWQgIT0gYi0+cmVs aWQgfHwKKwkJYS0+ZGF0YS0+bmNvbHMgIT0gYi0+ZGF0YS0+bmNvbHMpCisJCXJldHVybiBmYWxz ZTsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgYS0+ZGF0YS0+bmNvbHM7IGkrKykKKwl7CisJCWlm IChhLT5kYXRhLT5jb2xzdGF0dXNbaV0gIT0gYi0+ZGF0YS0+Y29sc3RhdHVzW2ldKQorCQkJcmV0 dXJuIGZhbHNlOworCisJCWlmIChhLT5kYXRhLT5jb2x2YWx1ZXNbaV0ubGVuICE9IGItPmRhdGEt PmNvbHZhbHVlc1tpXS5sZW4pCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJaWYgKHN0cmNtcChhLT5k YXRhLT5jb2x2YWx1ZXNbaV0uZGF0YSwgYi0+ZGF0YS0+Y29sdmFsdWVzW2ldLmRhdGEpKQorCQkJ cmV0dXJuIGZhbHNlOworCisJCWVsb2coREVCVUcxLCAiY29uZmxpY3Rpbmcga2V5ICVzIiwgYS0+ ZGF0YS0+Y29sdmFsdWVzW2ldLmRhdGEpOworCX0KKworCXJldHVybiB0cnVlOworfQorCisvKgor ICogRnJlZSByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIGEgcmVwbGljYSBpZGVudGl0eSBrZXku CisgKi8KK3N0YXRpYyB2b2lkCitmcmVlX3JlcGxpY2FfaWRlbnRpdHlfa2V5KFJlcGxpY2FJZGVu dGl0eUtleSAqa2V5KQoreworCUFzc2VydChrZXkpOworCisJcGZyZWUoa2V5LT5kYXRhLT5jb2x2 YWx1ZXMpOworCXBmcmVlKGtleS0+ZGF0YS0+Y29sc3RhdHVzKTsKKwlwZnJlZShrZXktPmRhdGEp OworCXBmcmVlKGtleSk7Cit9CisKKy8qCisgKiBDbGVhbiB1cCBoYXNoIHRhYmxlIGVudHJpZXMg YXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiB0cmFuc2FjdGlvbiBJRHMuCisgKi8KK3N0YXRpYyB2 b2lkCitkZWxldGVfcmVwbGljYV9pZGVudGl0eV9lbnRyaWVzX2Zvcl90eG5zKExpc3QgKmNvbW1p dHRlZF94aWRzKQoreworCXJlcGxpY2FfaWRlbnRpdHlfaXRlcmF0b3IgaTsKKwlSZXBsaWNhSWRl bnRpdHlFbnRyeSAqcmllbnRyeTsKKworCWlmICghY29tbWl0dGVkX3hpZHMpCisJCXJldHVybjsK KworCXJlcGxpY2FfaWRlbnRpdHlfc3RhcnRfaXRlcmF0ZShyZXBsaWNhX2lkZW50aXR5X3RhYmxl LCAmaSk7CisJd2hpbGUgKChyaWVudHJ5ID0gcmVwbGljYV9pZGVudGl0eV9pdGVyYXRlKHJlcGxp Y2FfaWRlbnRpdHlfdGFibGUsICZpKSkgIT0gTlVMTCkKKwl7CisJCWlmICghbGlzdF9tZW1iZXJf eGlkKGNvbW1pdHRlZF94aWRzLCByaWVudHJ5LT5yZW1vdGVfeGlkKSkKKwkJCWNvbnRpbnVlOwor CisJCS8qIENsZWFuIHVwIHRoZSBoYXNoIGVudHJ5IGZvciBjb21taXR0ZWQgdHJhbnNhY3Rpb24g Ki8KKwkJZnJlZV9yZXBsaWNhX2lkZW50aXR5X2tleShyaWVudHJ5LT5rZXlkYXRhKTsKKwkJcmVw bGljYV9pZGVudGl0eV9kZWxldGVfaXRlbShyZXBsaWNhX2lkZW50aXR5X3RhYmxlLCByaWVudHJ5 KTsKKwl9Cit9CisKKy8qCisgKiBDaGVjayBjb21taXR0ZWQgdHJhbnNhY3Rpb25zIGFuZCBjbGVh biB1cCBjb3JyZXNwb25kaW5nIGVudHJpZXMgaW4gdGhlIGhhc2gKKyAqIHRhYmxlLgorICoKKyAq IEFsc28gdXBkYXRlIHRoZSBsb2NhbF9lbmQgZm9yIHRyYW5zYWN0aW9ucyBhc3NpZ25lZCB0byBw YXJhbGxlbCBhcHBseSB3b3JrZXJzCisgKiBpZiBub3QgYWxyZWFkeSBzZXQuCisgKi8KK3N0YXRp YyB2b2lkCitjbGVhbnVwX2NvbW1pdHRlZF9yZXBsaWNhX2lkZW50aXR5X2VudHJpZXModm9pZCkK K3sKKwlkbGlzdF9tdXRhYmxlX2l0ZXIgaXRlcjsKKwlMaXN0CSAgICpjb21taXR0ZWRfeGlkcyA9 IE5JTDsKKworCWRsaXN0X2ZvcmVhY2hfbW9kaWZ5KGl0ZXIsICZsc25fbWFwcGluZykKKwl7CisJ CUZsdXNoUG9zaXRpb24gKnBvcyA9CisJCQlkbGlzdF9jb250YWluZXIoRmx1c2hQb3NpdGlvbiwg bm9kZSwgaXRlci5jdXIpOworCQlib29sCQlza2lwcGVkX3dyaXRlOworCisJCS8qCisJCSAqIFNr aXAgaWYgdGhlIHRyYW5zYWN0aW9uIHdhcyBub3QgYXNzaWduZWQgdG8gYSBwYXJhbGxlbCB3b3Jr ZXIsIG9yIGlmCisJCSAqIHdlIGhhdmUgYWxyZWFkeSBjb2xsZWN0ZWQgaXRzIGxvY2FsIGVuZCBM U04uCisJCSAqLworCQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHBvcy0+cGFfcmVtb3RlX3hp ZCkgfHwKKwkJCVhMb2dSZWNQdHJJc1ZhbGlkKHBvcy0+bG9jYWxfZW5kKSkKKwkJCWNvbnRpbnVl OworCisJCXBvcy0+bG9jYWxfZW5kID0gcGFfZ2V0X2xhc3RfY29tbWl0X2VuZChwb3MtPnBhX3Jl bW90ZV94aWQsCisJCQkJCQkJCQkJCQkmc2tpcHBlZF93cml0ZSk7CisKKwkJZWxvZyhERUJVRzEs CisJCQkgImdvdCBjb21taXQgZW5kIGZyb20gcGFyYWxsZWwgYXBwbHkgd29ya2VyLCAiCisJCQkg InR4bjogJXUsIHJlbW90ZV9lbmQgJVgvJVgsIGxvY2FsX2VuZCAlWC8lWCIsCisJCQkgcG9zLT5w YV9yZW1vdGVfeGlkLCBMU05fRk9STUFUX0FSR1MocG9zLT5yZW1vdGVfZW5kKSwKKwkJCSBMU05f Rk9STUFUX0FSR1MocG9zLT5sb2NhbF9lbmQpKTsKKworCQkvKiBTa2lwIGlmIHRoZSB0cmFuc2Fj dGlvbiBpcyBzdGlsbCBiZWluZyBhcHBsaWVkICovCisJCWlmICghc2tpcHBlZF93cml0ZSAmJiAh WExvZ1JlY1B0cklzVmFsaWQocG9zLT5sb2NhbF9lbmQpKQorCQkJY29udGludWU7CisKKwkJY29t bWl0dGVkX3hpZHMgPSBsYXBwZW5kX3hpZChjb21taXR0ZWRfeGlkcywgcG9zLT5wYV9yZW1vdGVf eGlkKTsKKwl9CisKKwkvKiBjbGVhbnVwIHRoZSBlbnRyaWVzIGZvciBjb21taXR0ZWQgdHJhbnNh Y3Rpb25zICovCisJZGVsZXRlX3JlcGxpY2FfaWRlbnRpdHlfZW50cmllc19mb3JfdHhucyhjb21t aXR0ZWRfeGlkcyk7Cit9CisKKy8qCisgKiBBcHBlbmQgdGhlIGdpdmVuIHRyYW5zYWN0aW9uIElE IHRvIHRoZSBkZXBlbmRlbmN5IGxpc3QgaWYgaXQgaXMgbm90IGFscmVhZHkKKyAqIHByZXNlbnQu CisgKgorICogSWYgdGhlIHRyYW5zYWN0aW9uIGhhcyBhbHJlYWR5IGNvbW1pdHRlZCwgdGhlIElE IGlzIHJlc2V0IHRvCisgKiBJbnZhbGlkVHJhbnNhY3Rpb25JZCBhbmQgbm90aGluZyBpcyBhcHBl bmRlZC4KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX2FuZF9hcHBlbmRfeGlkX2RlcGVuZGVuY3ko VHJhbnNhY3Rpb25JZCAqeGlkLCBMaXN0ICoqZGVwZW5kc19vbl94aWRzKQoreworCUFzc2VydCh4 aWQgJiYgVHJhbnNhY3Rpb25JZElzVmFsaWQoKnhpZCkpOworCisJaWYgKGxpc3RfbWVtYmVyX3hp ZCgqZGVwZW5kc19vbl94aWRzLCAqeGlkKSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBSZXR1cm4g YW5kIHJlc2V0IHRoZSB4aWQgaWYgdGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIGNvbW1pdHRlZC4K KwkgKi8KKwlpZiAocGFfdHJhbnNhY3Rpb25fY29tbWl0dGVkKCp4aWQpKQorCXsKKwkJKnhpZCA9 IEludmFsaWRUcmFuc2FjdGlvbklkOworCQlyZXR1cm47CisJfQorCisJKmRlcGVuZHNfb25feGlk cyA9IGxhcHBlbmRfeGlkKCpkZXBlbmRzX29uX3hpZHMsICp4aWQpOworfQorCisvKgorICogQ2hl Y2sgZm9yIGRlcGVuZGVuY2llcyBvbiBwcmVjZWRpbmcgdHJhbnNhY3Rpb25zIHRoYXQgbW9kaWZ5 IHRoZSBzYW1lIGtleS4KKyAqIFJldHVybnMgdGhlIGRlcGVuZGVudCB0cmFuc2FjdGlvbnMgaW4g J2RlcGVuZHNfb25feGlkcycuCisgKgorICogQWRkaXRpb25hbGx5LCBpZiBuZXdfZGVwZW5kZWRf eGlkIGlzIHZhbGlkLCByZWNvcmQgaXQgYXMgYSBkZXBlbmRlbmN5IGZvciB0aGUKKyAqIHJlcGxp Y2EgaWRlbnRpdHkga2V5IG1vZGlmaWNhdGlvbiwgYWxsb3dpbmcgc3Vic2VxdWVudCB0cmFuc2Fj dGlvbnMgdGhhdAorICogbW9kaWZ5IHRoZSBzYW1lIGtleSB0byBiZSBkZXBlbmRlbnQgb24gaXQu CisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19hbmRfcmVjb3JkX3JpX2RlcGVuZGVuY3koT2lkIHJl bGlkLCBMb2dpY2FsUmVwVHVwbGVEYXRhICpvcmlnaW5hbF9kYXRhLAorCQkJCQkJCSAgIFRyYW5z YWN0aW9uSWQgbmV3X2RlcGVuZGVkX3hpZCwKKwkJCQkJCQkgICBMaXN0ICoqZGVwZW5kc19vbl94 aWRzKQoreworCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsZW50cnk7CisJTG9naWNhbFJlcFR1 cGxlRGF0YSAqcmlkYXRhOworCVJlcGxpY2FJZGVudGl0eUtleSAqcmlrZXk7CisJUmVwbGljYUlk ZW50aXR5RW50cnkgKnJpZW50cnk7CisJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJaW50CQkJbl9y aTsKKwlib29sCQlmb3VuZCA9IGZhbHNlOworCisJQXNzZXJ0KGRlcGVuZHNfb25feGlkcyk7CisK KwkvKiBTZWFyY2ggZm9yIGV4aXN0aW5nIGVudHJ5ICovCisJcmVsZW50cnkgPSBsb2dpY2FscmVw X2dldF9yZWxlbnRyeShyZWxpZCk7CisKKwlBc3NlcnQocmVsZW50cnkpOworCisJLyoKKwkgKiBG aXJzdCBjaGVjayB3aGV0aGVyIGFueSBwcmV2aW91cyB0cmFuc2FjdGlvbiAob3RoZXIgdGhhbiB0 aGUgY3VycmVudCBvbmUpCisJICogaGFzIGFmZmVjdGVkIHRoZSB3aG9sZSB0YWJsZSBlLmcuLCB0 cnVuY2F0ZSBvciBzY2hlbWEgY2hhbmdlIGZyb20KKwkgKiBwdWJsaXNoZXIuCisJICovCisJaWYg KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHJlbGVudHJ5LT5sYXN0X2RlcGVuZGVkX3hpZCkgJiYKKwkJ IVRyYW5zYWN0aW9uSWRFcXVhbHMocmVsZW50cnktPmxhc3RfZGVwZW5kZWRfeGlkLCBuZXdfZGVw ZW5kZWRfeGlkKSkKKwkJY2hlY2tfYW5kX2FwcGVuZF94aWRfZGVwZW5kZW5jeSgmcmVsZW50cnkt Pmxhc3RfZGVwZW5kZWRfeGlkLCBkZXBlbmRzX29uX3hpZHMpOworCisJbl9yaSA9IGJtc19udW1f bWVtYmVycyhyZWxlbnRyeS0+cmVtb3RlcmVsLmF0dGtleXMpOworCisJLyoKKwkgKiBSZXR1cm4g aWYgdGhlcmUgYXJlIG5vIHJlcGxpY2EgaWRlbnRpdHkgY29sdW1ucywgaW5kaWNhdGluZyB0aGF0 IHRoZQorCSAqIHJlbW90ZSByZWxhdGlvbiBoYXMgbmVpdGhlciBhIHJlcGxpY2EgaWRlbnRpdHkg a2V5IG5vciBpcyBtYXJrZWQgYXMKKwkgKiByZXBsaWNhIGlkZW50aXR5IGZ1bGwuCisJICovCisJ aWYgKCFuX3JpKQorCQlyZXR1cm47CisKKwkvKiBDaGVjayBpZiB0aGUgUkkga2V5IHZhbHVlIG9m IHRoZSB0dXBsZSBpcyBpbnZhbGlkICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBvcmlnaW5hbF9k YXRhLT5uY29sczsgaSsrKQorCXsKKwkJaWYgKCFibXNfaXNfbWVtYmVyKGksIHJlbGVudHJ5LT5y ZW1vdGVyZWwuYXR0a2V5cykpCisJCQljb250aW51ZTsKKworCQkvKgorCQkgKiBOVUxMIGluIHRo ZSBuZXcgdHVwbGUgbWVhbnMgdGhlIHJlcGxpY2EgaWRlbnRpdHkga2V5IGhhc24ndCBjaGFuZ2Vk LAorCQkgKiBzbyBubyBuZXcgZGVwZW5kZW5jeSBuZWVkcyB0byBiZSByZWNvcmRlZC4gVGhlIGRl cGVuZGVuY3kgc2hvdWxkIGhhdmUKKwkJICogYmVlbiByZWNvcmRlZCB3aGVuIHByb2Nlc3Npbmcg dGhlIG9sZCB0dXBsZS4KKwkJICovCisJCWlmIChvcmlnaW5hbF9kYXRhLT5jb2xzdGF0dXNbaV0g PT0gTE9HSUNBTFJFUF9DT0xVTU5fTlVMTCkKKwkJCXJldHVybjsKKworCQkvKgorCQkgKiBMT0dJ Q0FMUkVQX0NPTFVNTl9VTkNIQU5HRUQgb25seSBpbmRpY2F0ZXMgdGhhdCBhIFRPQVNUIGNvbHVt biBpbiB0aGUKKwkJICogcmVwbGljYSBpZGVudGl0eSBrZXkgaGFzbid0IGNoYW5nZWQuIEhvd2V2 ZXIsIG90aGVyIGNvbHVtbnMgbWF5IGhhdmUKKwkJICogY2hhbmdlZCwgc28gd2Ugc3RpbGwgbmVl ZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jeSBmb3IgdGhpcyBjb2x1bW4uCisJCSAqCisJCSAqIEJl Zm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIHVuY2hhbmdlZCBUT0FTVCBjb2x1bW4gdmFsdWVz IHNob3VsZAorCQkgKiBoYXZlIGJlZW4gY29waWVkIGZyb20gdGhlIG9sZCB0dXBsZSB0byB0aGUg bmV3IHR1cGxlLiBTbywgd2Ugc2hvdWxkCisJCSAqIHNlZSB0aGUgY29tcGxldGUgcmVwbGljYSBp ZGVudGl0eSBrZXkgdmFsdWUgaW4gb3JpZ2luYWxfZGF0YSBhbmQKKwkJICogY29ycmVjdGx5IGNo ZWNrIHRoZSBkZXBlbmRlbmN5LgorCQkgKi8KKwkJQXNzZXJ0KG9yaWdpbmFsX2RhdGEtPmNvbHN0 YXR1c1tpXSAhPSBMT0dJQ0FMUkVQX0NPTFVNTl9VTkNIQU5HRUQgfHwKKwkJCSAgIG9yaWdpbmFs X2RhdGEtPmNvbHZhbHVlc1tpXS5sZW4gPiAwKTsKKwl9CisKKwlvbGRjdHggPSBNZW1vcnlDb250 ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKworCS8qIEFsbG9jYXRlIHNwYWNlIGZvciByZXBs aWNhIGlkZW50aXR5IHZhbHVlcyAqLworCXJpZGF0YSA9IHBhbGxvYzBfb2JqZWN0KExvZ2ljYWxS ZXBUdXBsZURhdGEpOworCXJpZGF0YS0+Y29sdmFsdWVzID0gcGFsbG9jMF9hcnJheShTdHJpbmdJ bmZvRGF0YSwgbl9yaSk7CisJcmlkYXRhLT5jb2xzdGF0dXMgPSBwYWxsb2MwX2FycmF5KGNoYXIs IG5fcmkpOworCXJpZGF0YS0+bmNvbHMgPSBuX3JpOworCisJZm9yIChpbnQgaV9vcmlnaW5hbCA9 IDAsIGlfcmkgPSAwOyBpX29yaWdpbmFsIDwgb3JpZ2luYWxfZGF0YS0+bmNvbHM7IGlfb3JpZ2lu YWwrKykKKwl7CisJCVN0cmluZ0luZm8Jb3JpZ2luYWxfY29sdmFsdWUgPSAmb3JpZ2luYWxfZGF0 YS0+Y29sdmFsdWVzW2lfb3JpZ2luYWxdOworCisJCWlmICghYm1zX2lzX21lbWJlcihpX29yaWdp bmFsLCByZWxlbnRyeS0+cmVtb3RlcmVsLmF0dGtleXMpKQorCQkJY29udGludWU7CisKKwkJaW5p dFN0cmluZ0luZm9FeHQoJnJpZGF0YS0+Y29sdmFsdWVzW2lfcmldLCBvcmlnaW5hbF9jb2x2YWx1 ZS0+bGVuICsgMSk7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnJpZGF0YS0+Y29sdmFsdWVz W2lfcmldLCBvcmlnaW5hbF9jb2x2YWx1ZS0+ZGF0YSk7CisJCXJpZGF0YS0+Y29sc3RhdHVzW2lf cmldID0gb3JpZ2luYWxfZGF0YS0+Y29sc3RhdHVzW2lfb3JpZ2luYWxdOworCQlpX3JpKys7CisJ fQorCisJcmlrZXkgPSBwYWxsb2MwX29iamVjdChSZXBsaWNhSWRlbnRpdHlLZXkpOworCXJpa2V5 LT5yZWxpZCA9IHJlbGlkOworCXJpa2V5LT5kYXRhID0gcmlkYXRhOworCisJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKG9sZGN0eCk7CisKKwkvKgorCSAqIFRoZSBuZXcgeGlkIGNvdWxkIGJlIGludmFs aWQgaWYgdGhlIHRyYW5zYWN0aW9uIHdpbGwgYmUgYXBwbGllZCBieSB0aGUKKwkgKiBsZWFkZXIg aXRzZWxmIHdoaWNoIG1lYW5zIGFsbCB0aGUgY2hhbmdlcyB3aWxsIGJlIGNvbW1pdHRlZCBiZWZv cmUKKwkgKiBwcm9jZXNzaW5nIG5leHQgdHJhbnNhY3Rpb24uIEluIHRoaXMgY2FzZSwgd2Ugb25s eSBuZWVkIHRvIGNoZWNrIGZvcgorCSAqIGRlcGVuZGVuY2llcyBvbiBwcmVjZWRpbmcgdHJhbnNh Y3Rpb25zLCB0aGVyZSBpcyBubyBuZWVkIHRvIHJlY29yZCBhIG5ldworCSAqIGRlcGVuZGVuY3kg Zm9yIHN1YnNlcXVlbnQgdHJhbnNhY3Rpb25zIHRvIHdhaXQgb24uCisJICovCisJaWYgKCFUcmFu c2FjdGlvbklkSXNWYWxpZChuZXdfZGVwZW5kZWRfeGlkKSkKKwl7CisJCXJpZW50cnkgPSByZXBs aWNhX2lkZW50aXR5X2xvb2t1cChyZXBsaWNhX2lkZW50aXR5X3RhYmxlLCByaWtleSk7CisJCWZy ZWVfcmVwbGljYV9pZGVudGl0eV9rZXkocmlrZXkpOworCisJCS8qIE5vIGRlcGVuZGVuY3kgZGV0 ZWN0ZWQgKi8KKwkJaWYgKCFyaWVudHJ5KQorCQkJcmV0dXJuOworCisJCWVsb2coREVCVUcxLCAi Zm91bmQgY29uZmxpY3RpbmcgcmVwbGljYSBpZGVudGl0eSBjaGFuZ2UgZnJvbSAldSIsCisJCQkg cmllbnRyeS0+cmVtb3RlX3hpZCk7CisKKwkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHJp ZW50cnktPnJlbW90ZV94aWQpKTsKKwkJY2hlY2tfYW5kX2FwcGVuZF94aWRfZGVwZW5kZW5jeSgm cmllbnRyeS0+cmVtb3RlX3hpZCwgZGVwZW5kc19vbl94aWRzKTsKKworCQkvKgorCQkgKiBSZW1v dmUgdGhlIGVudHJ5IGlmIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4gY29tbWl0dGVk IGxvY2FsbHkKKwkJICogYW5kIG5vIG5ldyBkZXBlbmRlbmN5IG5lZWRzIHRvIGJlIGFkZGVkLgor CQkgKi8KKwkJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChyaWVudHJ5LT5yZW1vdGVfeGlkKSkK KwkJeworCQkJZnJlZV9yZXBsaWNhX2lkZW50aXR5X2tleShyaWVudHJ5LT5rZXlkYXRhKTsKKwkJ CXJlcGxpY2FfaWRlbnRpdHlfZGVsZXRlX2l0ZW0ocmVwbGljYV9pZGVudGl0eV90YWJsZSwgcmll bnRyeSk7CisJCX0KKworCQlyZXR1cm47CisJfQorCisJLyogUmVjb3JkIGEgbmV3IGRlcGVuZGVu Y3kgZm9yIHN1YnNlcXVlbnQgdHJhbnNhY3Rpb25zIHRvIHdhaXQgb24gKi8KKwlyaWVudHJ5ID0g cmVwbGljYV9pZGVudGl0eV9pbnNlcnQocmVwbGljYV9pZGVudGl0eV90YWJsZSwgcmlrZXksCisJ CQkJCQkJCQkgICZmb3VuZCk7CisKKwkvKgorCSAqIFJlbGVhc2UgdGhlIGtleSBidWlsdCB0byBz ZWFyY2ggdGhlIGVudHJ5LCBpZiB0aGUgZW50cnkgYWxyZWFkeSBleGlzdHMuCisJICovCisJaWYg KGZvdW5kKQorCXsKKwkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHJpZW50cnktPnJlbW90 ZV94aWQpKTsKKworCQllbG9nKERFQlVHMSwgImZvdW5kIGNvbmZsaWN0aW5nIHJlcGxpY2EgaWRl bnRpdHkgY2hhbmdlIGZyb20gJXUiLAorCQkJIHJpZW50cnktPnJlbW90ZV94aWQpOworCisJCWZy ZWVfcmVwbGljYV9pZGVudGl0eV9rZXkocmlrZXkpOworCisJCS8qCisJCSAqIFJldHVybiBpZiB0 aGUgY3VycmVudCB0cmFuc2FjdGlvbiB3YXMgdGhlIGxhc3Qgb25lIHRvIG1vZGlmeSB0aGUKKwkJ ICoga2V5LgorCQkgKi8KKwkJaWYgKFRyYW5zYWN0aW9uSWRFcXVhbHMocmllbnRyeS0+cmVtb3Rl X3hpZCwgbmV3X2RlcGVuZGVkX3hpZCkpCisJCQlyZXR1cm47CisKKwkJY2hlY2tfYW5kX2FwcGVu ZF94aWRfZGVwZW5kZW5jeSgmcmllbnRyeS0+cmVtb3RlX3hpZCwgZGVwZW5kc19vbl94aWRzKTsK Kwl9CisKKwkvKiBVcGRhdGUgdGhlIG5ldyBkZXBlbmRlZCB4aWQgaW50byB0aGUgZW50cnkgKi8K KwlyaWVudHJ5LT5yZW1vdGVfeGlkID0gbmV3X2RlcGVuZGVkX3hpZDsKK30KKworLyoKKyAqIENo ZWNrIGZvciBwcmVjZWRpbmcgdHJhbnNhY3Rpb25zIChvdGhlciB0aGFuIGN1cnJlbnQgb25lICdu ZXdfZGVwZW5kZWRfeGlkJykKKyAqIHRoYXQgaW52b2x2ZSBpbnNlcnQsIGRlbGV0ZSwgb3IgdXBk YXRlIG9wZXJhdGlvbnMgb24gdGhlIHNwZWNpZmllZCB0YWJsZSwgYW5kCisgKiByZXR1cm4gdGhl bSBpbiAnZGVwZW5kc19vbl94aWRzJy4KKyAqLworc3RhdGljIHZvaWQKK2ZpbmRfYWxsX2RlcGVu ZGVuY2llc19vbl9yZWwoTG9naWNhbFJlcFJlbElkIHJlbGlkLCBUcmFuc2FjdGlvbklkIG5ld19k ZXBlbmRlZF94aWQsCisJCQkJCQkJIExpc3QgKipkZXBlbmRzX29uX3hpZHMpCit7CisJcmVwbGlj YV9pZGVudGl0eV9pdGVyYXRvciBpOworCVJlcGxpY2FJZGVudGl0eUVudHJ5ICpyaWVudHJ5Owor CisJQXNzZXJ0KGRlcGVuZHNfb25feGlkcyk7CisKKwlyZXBsaWNhX2lkZW50aXR5X3N0YXJ0X2l0 ZXJhdGUocmVwbGljYV9pZGVudGl0eV90YWJsZSwgJmkpOworCXdoaWxlICgocmllbnRyeSA9IHJl cGxpY2FfaWRlbnRpdHlfaXRlcmF0ZShyZXBsaWNhX2lkZW50aXR5X3RhYmxlLCAmaSkpICE9IE5V TEwpCisJeworCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQocmllbnRyeS0+cmVtb3RlX3hp ZCkpOworCisJCWlmIChyaWVudHJ5LT5rZXlkYXRhLT5yZWxpZCAhPSByZWxpZCkKKwkJCWNvbnRp bnVlOworCisJCS8qIFNraXAgc2VsZi1kZXBlbmRlbmN5ICovCisJCWlmIChUcmFuc2FjdGlvbklk RXF1YWxzKHJpZW50cnktPnJlbW90ZV94aWQsIG5ld19kZXBlbmRlZF94aWQpKQorCQkJY29udGlu dWU7CisKKwkJLyogQ2xlYW4gdXAgdGhlIGhhc2ggZW50cnkgZm9yIGNvbW1pdHRlZCB0cmFuc2Fj dGlvbiB3aGlsZSBvbiBpdCAqLworCQlpZiAocGFfdHJhbnNhY3Rpb25fY29tbWl0dGVkKHJpZW50 cnktPnJlbW90ZV94aWQpKQorCQl7CisJCQlmcmVlX3JlcGxpY2FfaWRlbnRpdHlfa2V5KHJpZW50 cnktPmtleWRhdGEpOworCQkJcmVwbGljYV9pZGVudGl0eV9kZWxldGVfaXRlbShyZXBsaWNhX2lk ZW50aXR5X3RhYmxlLCByaWVudHJ5KTsKKworCQkJY29udGludWU7CisJCX0KKworCQljaGVja19h bmRfYXBwZW5kX3hpZF9kZXBlbmRlbmN5KCZyaWVudHJ5LT5yZW1vdGVfeGlkLCBkZXBlbmRzX29u X3hpZHMpOworCX0KK30KKworLyoKKyAqIENoZWNrIGZvciBhbnkgcHJlY2VkaW5nIHRyYW5zYWN0 aW9ucyB0aGF0IGFmZmVjdCB0aGUgZ2l2ZW4gdGFibGUgYW5kIHJldHVybnMKKyAqIHRoZW0gaW4g J2RlcGVuZHNfb25feGlkcycuCisgKgorICogQWRkaXRpb25hbGx5LCBpZiBuZXdfZGVwZW5kZWRf eGlkIGlzIHZhbGlkLCByZWNvcmQgaXQgYXMgYSB0YWJsZS1sZXZlbAorICogZGVwZW5kZW5jeSwg YWxsb3dpbmcgc3Vic2VxdWVudCB0cmFuc2FjdGlvbnMgdGhhdCBtb2RpZnkgdGhlIHNhbWUgdGFi bGUgdG8gYmUKKyAqIGRlcGVuZGVudCBvbiBpdC4KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX2Fu ZF9yZWNvcmRfcmVsX2RlcGVuZGVuY3koTG9naWNhbFJlcFJlbElkIHJlbGlkLAorCQkJCQkJCQlU cmFuc2FjdGlvbklkIG5ld19kZXBlbmRlZF94aWQsCisJCQkJCQkJCUxpc3QgKipkZXBlbmRzX29u X3hpZHMpCit7CisJTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWxlbnRyeTsKKworCUFzc2VydChk ZXBlbmRzX29uX3hpZHMpOworCisJZmluZF9hbGxfZGVwZW5kZW5jaWVzX29uX3JlbChyZWxpZCwg bmV3X2RlcGVuZGVkX3hpZCwgZGVwZW5kc19vbl94aWRzKTsKKworCS8qIFNlYXJjaCBmb3IgZXhp c3RpbmcgZW50cnkgKi8KKwlyZWxlbnRyeSA9IGxvZ2ljYWxyZXBfZ2V0X3JlbGVudHJ5KHJlbGlk KTsKKworCS8qCisJICogUmV0dXJuIGlmIG5vIGVudHJ5IGV4aXN0cywgb3IgaWYgbm8gdHJhbnNh Y3Rpb24gaGFzIGFmZmVjdGVkIHRoZSB3aG9sZQorCSAqIHRhYmxlLCBvciBpZiB0aGUgY3VycmVu dCB0cmFuc2FjdGlvbiB3YXMgdGhlIGxhc3Qgb25lIHRvIG1vZGlmeSBpdC4KKwkgKi8KKwlpZiAo IXJlbGVudHJ5IHx8CisJCSFUcmFuc2FjdGlvbklkSXNWYWxpZChyZWxlbnRyeS0+bGFzdF9kZXBl bmRlZF94aWQpIHx8CisJCVRyYW5zYWN0aW9uSWRFcXVhbHMocmVsZW50cnktPmxhc3RfZGVwZW5k ZWRfeGlkLCBuZXdfZGVwZW5kZWRfeGlkKSkKKwkJcmV0dXJuOworCisJY2hlY2tfYW5kX2FwcGVu ZF94aWRfZGVwZW5kZW5jeSgmcmVsZW50cnktPmxhc3RfZGVwZW5kZWRfeGlkLCBkZXBlbmRzX29u X3hpZHMpOworCisJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKG5ld19kZXBlbmRlZF94aWQpKQor CQlyZWxlbnRyeS0+bGFzdF9kZXBlbmRlZF94aWQgPSBuZXdfZGVwZW5kZWRfeGlkOworfQorCisv KgorICogQ2hlY2sgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gdGhlIGN1cnJlbnQgY2hhbmdlIGJ5 IGRldGVybWluaW5nIGlmIHRoZQorICogbW9kaWZpY2F0aW9uIGltcGFjdHMgdGhlIHNhbWUgcm93 IG9yIHRhYmxlIGFzIGFub3RoZXIgb25nb2luZyB0cmFuc2FjdGlvbi4gSWYKKyAqIG5lZWRlZCwg aW5zdHJ1Y3QgcGFyYWxsZWwgYXBwbHkgd29ya2VycyB0byB3YWl0IGZvciB0aGVzZSBwcmVjZWRp bmcKKyAqIHRyYW5zYWN0aW9ucyB0byBjb21wbGV0ZS4KKyAqCisgKiBTaW11bHRhbmVvdXNseSwg aWYgdGhlIGN1cnJlbnQgY2hhbmdlIHdpbGwgYmUgZGlzcGF0Y2hlZCB0byBhIHBhcmFsbGVsIGFw cGx5CisgKiB3b3JrZXIgKGluZGljYXRlZCBieSBhIHZhbGlkIG5ld19kZXBlbmRlZF94aWQgYW5k IGEgbm9uLU5VTEwgd2luZm8pLCB0cmFjaworICogdGhlIGRlcGVuZGVuY3kgZm9yIHRoZSBjdXJy ZW50IGNoYW5nZSB0byBlbnN1cmUgdGhhdCBzdWJzZXF1ZW50IHRyYW5zYWN0aW9ucworICogYWRk cmVzcyB0aGlzIGRlcGVuZGVuY3kuCisgKi8KK3N0YXRpYyB2b2lkCitoYW5kbGVfZGVwZW5kZW5j eV9vbl9jaGFuZ2UoTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uLCBTdHJpbmdJbmZvIHMsCisJCQkJ CQkJVHJhbnNhY3Rpb25JZCBuZXdfZGVwZW5kZWRfeGlkLAorCQkJCQkJCVBhcmFsbGVsQXBwbHlX b3JrZXJJbmZvICp3aW5mbykKK3sKKwlMb2dpY2FsUmVwUmVsSWQgcmVsaWQ7CisJTG9naWNhbFJl cFR1cGxlRGF0YSBvbGR0dXA7CisJTG9naWNhbFJlcFR1cGxlRGF0YSBuZXd0dXA7CisJTG9naWNh bFJlcFJlbGF0aW9uICpyZWw7CisJTGlzdAkgICAqZGVwZW5kc19vbl94aWRzID0gTklMOworCUxp c3QJICAgKnJlbW90ZV9yZWxpZHM7CisJYm9vbAkJaGFzX29sZHR1cCA9IGZhbHNlOworCWJvb2wJ CWNhc2NhZGUgPSBmYWxzZTsKKwlib29sCQlyZXN0YXJ0X3NlcXMgPSBmYWxzZTsKKworCS8qCisJ ICogUGFyc2UgdGhlIGNvbnN1bWUgZGF0YSB1c2luZyBhIGxvY2FsIGNvcHkgaW5zdGVhZCBvZiBk aXJlY3RseSBjb25zdW1pbmcKKwkgKiB0aGUgZ2l2ZW4gcmVtb3RlIGNoYW5nZSBhcyB0aGUgY2Fs bGVyIG1heSBhbHNvIHJlYWQgdGhlIGRhdGEgZnJvbSB0aGUKKwkgKiByZW1vdGUgbWVzc2FnZS4K KwkgKi8KKwlTdHJpbmdJbmZvRGF0YSBjaGFuZ2UgPSAqczsKKworCS8qIE9ubHkgdGhlIGxlYWRl ciBjaGVja3MgZGVwZW5kZW5jaWVzIGFuZCBzY2hlZHVsZXMgdGhlIHBhcmFsbGVsIGFwcGx5ICov CisJaWYgKCFhbV9sZWFkZXJfYXBwbHlfd29ya2VyKCkpCisJCXJldHVybjsKKworCWlmICghUGFy YWxsZWxBcHBseUNvbnRleHQpCisJeworCQlBc3NlcnQoIXJlcGxpY2FfaWRlbnRpdHlfdGFibGUp OworCisJCS8qCisJCSAqIENyZWF0ZSBhIHBlcm1hbmVudCBtZW1vcnkgY29udGV4dCBmb3IgZGVw ZW5kZW5jeSBpbmZvcm1hdGlvbiB0aGF0CisJCSAqIHBlcnNpc3RzIGFjcm9zcyB0cmFuc2FjdGlv bnMuIFVzaW5nIGEgZGVkaWNhdGVkIGNvbnRleHQgbWFrZXMgbWVtb3J5CisJCSAqIGNvbnN1bXB0 aW9uIG1vcmUgdmlzaWJsZSBhbmQgZWFzaWVyIHRvIHRyYWNrLCBlc3BlY2lhbGx5IHdoZW4KKwkJ ICogaGFuZGxpbmcgYSBsYXJnZSBudW1iZXIgb2YgY2hhbmdlIGVudHJpZXMgZm9yIHRyYW5zYWN0 aW9ucyBiZWluZworCQkgKiBhcHBsaWVkIGluIHBhcmFsbGVsLgorCQkgKi8KKwkJUGFyYWxsZWxB cHBseUNvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoQXBwbHlDb250ZXh0LAorCQkJCQkJ CQkJCQkJCSAiUGFyYWxsZWxBcHBseUNvbnRleHQiLAorCQkJCQkJCQkJCQkJCSBBTExPQ1NFVF9E RUZBVUxUX1NJWkVTKTsKKworCQlyZXBsaWNhX2lkZW50aXR5X3RhYmxlID0gcmVwbGljYV9pZGVu dGl0eV9jcmVhdGUoUGFyYWxsZWxBcHBseUNvbnRleHQsCisJCQkJCQkJCQkJCQkJCSBSRVBMSUNB X0lERU5USVRZX0lOSVRJQUxfU0laRSwKKwkJCQkJCQkJCQkJCQkJIE5VTEwpOworCX0KKworCWlm IChyZXBsaWNhX2lkZW50aXR5X3RhYmxlLT5tZW1iZXJzID49IFJFUExJQ0FfSURFTlRJVFlfQ0xF QU5VUF9USFJFU0hPTEQpCisJCWNsZWFudXBfY29tbWl0dGVkX3JlcGxpY2FfaWRlbnRpdHlfZW50 cmllcygpOworCisJc3dpdGNoIChhY3Rpb24pCisJeworCQljYXNlIExPR0lDQUxfUkVQX01TR19J TlNFUlQ6CisJCQlyZWxpZCA9IGxvZ2ljYWxyZXBfcmVhZF9pbnNlcnQoJmNoYW5nZSwgJm5ld3R1 cCk7CisJCQljaGVja19hbmRfcmVjb3JkX3JpX2RlcGVuZGVuY3kocmVsaWQsICZuZXd0dXAsIG5l d19kZXBlbmRlZF94aWQsCisJCQkJCQkJCQkJICAgJmRlcGVuZHNfb25feGlkcyk7CisJCQlicmVh azsKKworCQljYXNlIExPR0lDQUxfUkVQX01TR19VUERBVEU6CisJCQlyZWxpZCA9IGxvZ2ljYWxy ZXBfcmVhZF91cGRhdGUoJmNoYW5nZSwgJmhhc19vbGR0dXAsICZvbGR0dXAsCisJCQkJCQkJCQkJ ICAgJm5ld3R1cCk7CisKKwkJCWlmIChoYXNfb2xkdHVwKQorCQkJeworCQkJCWNoZWNrX2FuZF9y ZWNvcmRfcmlfZGVwZW5kZW5jeShyZWxpZCwgJm9sZHR1cCwgbmV3X2RlcGVuZGVkX3hpZCwKKwkJ CQkJCQkJCQkJICAgJmRlcGVuZHNfb25feGlkcyk7CisKKwkJCQkvKgorCQkJCSAqIENvcHkgdW5j aGFuZ2VkIGNvbHVtbiB2YWx1ZXMgZnJvbSB0aGUgb2xkIHR1cGxlIHRvIHRoZSBuZXcKKwkJCQkg KiB0dXBsZSBmb3IgcmVwbGljYSBpZGVudGl0eSBkZXBlbmRlbmN5IGNoZWNraW5nLiBTZWUKKwkJ CQkgKiBjaGVja19hbmRfcmVjb3JkX3JpX2RlcGVuZGVuY3koKSBmb3IgZGV0YWlscy4KKwkJCQkg Ki8KKwkJCQlmb3IgKGludCBpID0gMDsgaSA8IG9sZHR1cC5uY29sczsgaSsrKQorCQkJCQlpZiAo bmV3dHVwLmNvbHN0YXR1c1tpXSA9PSBMT0dJQ0FMUkVQX0NPTFVNTl9VTkNIQU5HRUQpCisJCQkJ CQluZXd0dXAuY29sdmFsdWVzW2ldID0gb2xkdHVwLmNvbHZhbHVlc1tpXTsKKwkJCX0KKworCQkJ Y2hlY2tfYW5kX3JlY29yZF9yaV9kZXBlbmRlbmN5KHJlbGlkLCAmbmV3dHVwLCBuZXdfZGVwZW5k ZWRfeGlkLAorCQkJCQkJCQkJCSAgICZkZXBlbmRzX29uX3hpZHMpOworCQkJYnJlYWs7CisKKwkJ Y2FzZSBMT0dJQ0FMX1JFUF9NU0dfREVMRVRFOgorCQkJcmVsaWQgPSBsb2dpY2FscmVwX3JlYWRf ZGVsZXRlKCZjaGFuZ2UsICZvbGR0dXApOworCQkJY2hlY2tfYW5kX3JlY29yZF9yaV9kZXBlbmRl bmN5KHJlbGlkLCAmb2xkdHVwLCBuZXdfZGVwZW5kZWRfeGlkLAorCQkJCQkJCQkJCSAgICZkZXBl bmRzX29uX3hpZHMpOworCQkJYnJlYWs7CisKKwkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfVFJVTkNB VEU6CisJCQlyZW1vdGVfcmVsaWRzID0gbG9naWNhbHJlcF9yZWFkX3RydW5jYXRlKCZjaGFuZ2Us ICZjYXNjYWRlLAorCQkJCQkJCQkJCQkJCSAmcmVzdGFydF9zZXFzKTsKKworCQkJLyoKKwkJCSAq IFRydW5jYXRlIGFmZmVjdHMgYWxsIHJvd3MgaW4gYSB0YWJsZSwgc28gdGhlIGN1cnJlbnQKKwkJ CSAqIHRyYW5zYWN0aW9uIHNob3VsZCB3YWl0IGZvciBhbGwgcHJlY2VkaW5nIHRyYW5zYWN0aW9u cyB0aGF0CisJCQkgKiBtb2RpZmllZCB0aGUgc2FtZSB0YWJsZS4KKwkJCSAqLworCQkJZm9yZWFj aF9pbnQodHJ1bmNhdGVkX3JlbGlkLCByZW1vdGVfcmVsaWRzKQorCQkJCWNoZWNrX2FuZF9yZWNv cmRfcmVsX2RlcGVuZGVuY3kodHJ1bmNhdGVkX3JlbGlkLAorCQkJCQkJCQkJCQkJbmV3X2RlcGVu ZGVkX3hpZCwKKwkJCQkJCQkJCQkJCSZkZXBlbmRzX29uX3hpZHMpOworCisJCQlicmVhazsKKwor CQljYXNlIExPR0lDQUxfUkVQX01TR19SRUxBVElPTjoKKwkJCXJlbCA9IGxvZ2ljYWxyZXBfcmVh ZF9yZWwoJmNoYW5nZSk7CisKKwkJCS8qCisJCQkgKiBUaGUgcmVwbGljYSBpZGVudGl0eSBrZXkg Y291bGQgYmUgY2hhbmdlZCwgbWFraW5nIGV4aXN0aW5nCisJCQkgKiBlbnRyaWVzIGluIHRoZSBy ZXBsaWNhIGlkZW50aXR5IGludmFsaWQuIEluIHRoaXMgY2FzZSwgcGFyYWxsZWwKKwkJCSAqIGFw cGx5IGlzIG5vdCBhbGxvd2VkIG9uIHRoaXMgc3BlY2lmaWMgdGFibGUgdW50aWwgYWxsIHJ1bm5p bmcKKwkJCSAqIHRyYW5zYWN0aW9ucyB0aGF0IG1vZGlmaWVkIGl0IGhhdmUgZmluaXNoZWQuCisJ CQkgKi8KKwkJCWNoZWNrX2FuZF9yZWNvcmRfcmVsX2RlcGVuZGVuY3kocmVsLT5yZW1vdGVpZCwg bmV3X2RlcGVuZGVkX3hpZCwKKwkJCQkJCQkJCQkJJmRlcGVuZHNfb25feGlkcyk7CisJCQlicmVh azsKKworCQljYXNlIExPR0lDQUxfUkVQX01TR19UWVBFOgorCQljYXNlIExPR0lDQUxfUkVQX01T R19NRVNTQUdFOgorCisJCQkvKgorCQkJICogVHlwZSB1cGRhdGVzIGFjY29tcGFueSByZWxhdGlv biB1cGRhdGVzLCBzbyBkZXBlbmRlbmNpZXMgaGF2ZQorCQkJICogYWxyZWFkeSBiZWVuIGNoZWNr ZWQgZHVyaW5nIHJlbGF0aW9uIHVwZGF0ZXMuIExvZ2ljYWwgbWVzc2FnZXMKKwkJCSAqIGRvIG5v dCBjb25mbGljdCB3aXRoIGFueSBjaGFuZ2VzLCBzbyB0aGV5IGNhbiBiZSBpZ25vcmVkLgorCQkJ ICovCisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJyZWFr OworCX0KKworCS8qIFJldHVybiBlYXJseSBpZiB0aGUgY3VycmVudCBjaGFuZ2UgaGFzIG5vIGRl cGVuZGVuY2llcy4gKi8KKwlpZiAoIWRlcGVuZHNfb25feGlkcykKKwkJcmV0dXJuOworCisJLyoK KwkgKiBJZiB0aGUgbGVhZGVyIGFwcGxpZXMgdGhlIHRyYW5zYWN0aW9uIGl0c2VsZiwgc3RhcnQg d2FpdGluZyBmb3IKKwkgKiB0cmFuc2FjdGlvbnMgdGhhdCB0aGUgY3VycmVudCBjaGFuZ2UgZGVw ZW5kcyBvbiB0byBmaW5pc2guIE90aGVyd2lzZSwKKwkgKiBpbnN0cnVjdCB0aGUgcGFyYWxsZWwg YXBwbHkgd29ya2VyIHRvIHdhaXQgZm9yIHRoZW0uCisJICovCisJaWYgKHdpbmZvID09IE5VTEwp CisJeworCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKG5ld19kZXBlbmRlZF94aWQpKTsK KworCQlmb3JlYWNoX3hpZCh4aWQsIGRlcGVuZHNfb25feGlkcykKKwkJCXBhX3dhaXRfZm9yX2Rl cGVuZGVkX3RyYW5zYWN0aW9uKHhpZCk7CisJfQorCWVsc2UKKwl7CisJCXNlbmRfaW50ZXJuYWxf ZGVwZW5kZW5jaWVzKHdpbmZvLCBkZXBlbmRzX29uX3hpZHMpOworCX0KK30KKwogLyoKICAqIEZv cm0gdGhlIG9yaWdpbiBuYW1lIGZvciB0aGUgc3Vic2NyaXB0aW9uLgogICoKQEAgLTc5Miw3ICsx NDUxLDEwIEBAIGhhbmRsZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMb2dpY2FsUmVwTXNnVHlwZSBh Y3Rpb24sIFN0cmluZ0luZm8gcykKIAogCS8qIG5vdCBpbiBzdHJlYW1pbmcgbW9kZSAqLwogCWlm IChhcHBseV9hY3Rpb24gPT0gVFJBTlNfTEVBREVSX0FQUExZKQorCXsKKwkJaGFuZGxlX2RlcGVu ZGVuY3lfb25fY2hhbmdlKGFjdGlvbiwgcywgSW52YWxpZFRyYW5zYWN0aW9uSWQsIHdpbmZvKTsK IAkJcmV0dXJuIGZhbHNlOworCX0KIAogCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJl YW1feGlkKSk7CiAKQEAgLTEyNDQsNiArMTkwNiwyOSBAQCBhcHBseV9oYW5kbGVfYmVnaW4oU3Ry aW5nSW5mbyBzKQogCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklORywgTlVMTCk7 CiB9CiAKKy8qCisgKiBTZW5kIGFuIElOVEVSTkFMX0RFUEVOREVOQ1kgbWVzc2FnZSB0byBhIHBh cmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLworc3RhdGljIHZvaWQKK3NlbmRfaW50ZXJuYWxfZGVw ZW5kZW5jaWVzKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgTGlzdCAqZGVwZW5kc19v bl94aWRzKQoreworCVN0cmluZ0luZm9EYXRhIGRlcGVuZGVuY2llczsKKworCWluaXRTdHJpbmdJ bmZvKCZkZXBlbmRlbmNpZXMpOworCisJcHFfc2VuZGJ5dGUoJmRlcGVuZGVuY2llcywgTE9HSUNB TF9SRVBfTVNHX0lOVEVSTkFMX01FU1NBR0UpOworCXBxX3NlbmRieXRlKCZkZXBlbmRlbmNpZXMs IFBBX01TR19YQUNUX0RFUEVOREVOQ1kpOworCXBxX3NlbmRpbnQzMigmZGVwZW5kZW5jaWVzLCBs aXN0X2xlbmd0aChkZXBlbmRzX29uX3hpZHMpKTsKKworCWZvcmVhY2hfeGlkKHhpZCwgZGVwZW5k c19vbl94aWRzKQorCQlwcV9zZW5kaW50MzIoJmRlcGVuZGVuY2llcywgeGlkKTsKKworCWlmIChw YV9zZW5kX2RhdGEod2luZm8sIGRlcGVuZGVuY2llcy5sZW4sIGRlcGVuZGVuY2llcy5kYXRhKSkK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVS RVFVSVNJVEVfU1RBVEUpLAorCQkJCWVycm1zZygiY291bGQgbm90IHNlbmQgZGF0YSB0byB0aGUg bG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiKSk7Cit9CisKIC8qCiAg KiBIYW5kbGUgQ09NTUlUIG1lc3NhZ2UuCiAgKgpAQCAtMTc3MSw3ICsyNDU2LDcgQEAgYXBwbHlf aGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAKIAkvKiBUcnkgdG8gYWxsb2NhdGUg YSB3b3JrZXIgZm9yIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCiAJaWYgKGZpcnN0X3Nl Z21lbnQpCi0JCXBhX2FsbG9jYXRlX3dvcmtlcihzdHJlYW1feGlkKTsKKwkJcGFfYWxsb2NhdGVf d29ya2VyKHN0cmVhbV94aWQsIHRydWUpOwogCiAJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0 aW9uX2FwcGx5X2FjdGlvbihzdHJlYW1feGlkLCAmd2luZm8pOwogCkBAIC0zOTgwLDYgKzQ2NjUs NyBAQCBzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24sIFhMb2dSZWNQ dHIgbG9jYWxfbHNuKQogCWZsdXNocG9zID0gcGFsbG9jX29iamVjdChGbHVzaFBvc2l0aW9uKTsK IAlmbHVzaHBvcy0+bG9jYWxfZW5kID0gbG9jYWxfbHNuOwogCWZsdXNocG9zLT5yZW1vdGVfZW5k ID0gcmVtb3RlX2xzbjsKKwlmbHVzaHBvcy0+cGFfcmVtb3RlX3hpZCA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwogCiAJZGxpc3RfcHVzaF90YWlsKCZsc25fbWFwcGluZywgJmZsdXNocG9zLT5ub2Rl KTsKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlNZXNzYWdlQ29udGV4dCk7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCmluZGV4IGVmZTBmOWQ2MDMxLi4wOTg5 MGNlZjhkNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0 aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgKQEAg LTM3LDYgKzM3LDE0IEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBSZWxNYXBFbnRyeQogCS8q IFN5bmMgc3RhdGUuICovCiAJY2hhcgkJc3RhdGU7CiAJWExvZ1JlY1B0cglzdGF0ZWxzbjsKKwor CS8qCisJICogVGhlIGxhc3QgcmVtb3RlIHRyYW5zYWN0aW9uIHRoYXQgbW9kaWZpZWQgdGhlIHJl bGF0aW9uJ3Mgc2NoZW1hIG9yCisJICogdHJ1bmNhdGVkIHRoZSByZWxhdGlvbi4gVXNlZCBpbiBk ZXBlbmRlbmN5IHRyYWNraW5nIHRvIGVuc3VyZSBzdWJzZXF1ZW50CisJICogdHJhbnNhY3Rpb25z IG1vZGlmeWluZyB0aGUgc2FtZSB0YWJsZSB3YWl0IGZvciB0aGlzIHRyYW5zYWN0aW9uIHRvIGZp bmlzaAorCSAqIGFwcGx5aW5nIChzZWUgY2hlY2tfZGVwZW5kZW5jeV9vbl9yZWwpLgorCSAqLwor CVRyYW5zYWN0aW9uSWQgbGFzdF9kZXBlbmRlZF94aWQ7CiB9IExvZ2ljYWxSZXBSZWxNYXBFbnRy eTsKIAogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWxtYXBfdXBkYXRlKExvZ2ljYWxSZXBSZWxh dGlvbiAqcmVtb3RlcmVsKTsKQEAgLTUwLDUgKzU4LDYgQEAgZXh0ZXJuIHZvaWQgbG9naWNhbHJl cF9yZWxfY2xvc2UoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWwsCiAJCQkJCQkJCSBMT0NLTU9E RSBsb2NrbW9kZSk7CiBleHRlcm4gYm9vbCBJc0luZGV4VXNhYmxlRm9yUmVwbGljYUlkZW50aXR5 RnVsbChSZWxhdGlvbiBpZHhyZWwsIEF0dHJNYXAgKmF0dHJtYXApOwogZXh0ZXJuIE9pZAlHZXRS ZWxhdGlvbklkZW50aXR5T3JQSyhSZWxhdGlvbiByZWwpOworZXh0ZXJuIExvZ2ljYWxSZXBSZWxN YXBFbnRyeSAqbG9naWNhbHJlcF9nZXRfcmVsZW50cnkoTG9naWNhbFJlcFJlbElkIHJlbW90ZWlk KTsKIAogI2VuZGlmCQkJCQkJCS8qIExPR0lDQUxSRUxBVElPTl9IICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IDQzZGNhZTQzYTYyLi4zYzg4ZDllMTAy NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgK KysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTIzOSw2 ICsyMzksOCBAQCB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEFwcGx5V29ya2VySW5mbwogCSAqLwog CWJvb2wJCWluX3VzZTsKIAorCWJvb2wJCXN0cmVhbV90eG47CisKIAlQYXJhbGxlbEFwcGx5V29y a2VyU2hhcmVkICpzaGFyZWQ7CiB9IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvOwogCkBAIC0zNTAs OCArMzUyLDkgQEAgZXh0ZXJuIHZvaWQgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsK IGV4dGVybiB2b2lkIHNldF9hcHBseV9lcnJvcl9jb250ZXh0X29yaWdpbihjaGFyICpvcmlnaW5u YW1lKTsKIAogLyogUGFyYWxsZWwgYXBwbHkgd29ya2VyIHNldHVwIGFuZCBpbnRlcmFjdGlvbnMg Ki8KLWV4dGVybiB2b2lkIHBhX2FsbG9jYXRlX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCk7Citl eHRlcm4gdm9pZCBwYV9hbGxvY2F0ZV93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgc3Ry ZWFtX3R4bik7CiBleHRlcm4gUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnBhX2ZpbmRfd29ya2Vy KFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBYTG9nUmVjUHRyIHBhX2dldF9sYXN0X2NvbW1p dF9lbmQoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgKnNraXBwZWRfd3JpdGUpOwogZXh0ZXJuIHZv aWQgcGFfZGV0YWNoX2FsbF9lcnJvcl9tcSh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgYXBwbHlfaGFu ZGxlX2ludGVybmFsX21lc3NhZ2UoU3RyaW5nSW5mbyBzKTsKQEAgLTM4Miw2ICszODUsNyBAQCBl eHRlcm4gdm9pZCBwYV9kZWNyX2FuZF93YWl0X3N0cmVhbV9ibG9jayh2b2lkKTsKIAogZXh0ZXJu IHZvaWQgcGFfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLAogCQkJ CQkJICAgWExvZ1JlY1B0ciByZW1vdGVfbHNuKTsKK2V4dGVybiBib29sIHBhX3RyYW5zYWN0aW9u X2NvbW1pdHRlZChUcmFuc2FjdGlvbklkIHhpZCk7CiAKIGV4dGVybiB2b2lkIHBhX3dhaXRfZm9y X2RlcGVuZGVkX3RyYW5zYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkKTsKIApkaWZmIC0tZ2l0IGEv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L21lc29uLmJ1aWxkCmluZGV4IGU3MWU5NWM2Mjk3Li5mZGMwNGQ5MWY0MSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi9tZXNvbi5idWlsZApAQCAtNDgsNiArNDgsNyBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8w MzZfc2VxdWVuY2VzLnBsJywKICAgICAgICd0LzAzN19leGNlcHQucGwnLAogICAgICAgJ3QvMDM4 X3dhbHNuZF9zaHV0ZG93bl90aW1lb3V0LnBsJywKKyAgICAgICd0LzAzOV9yb3dfZmlsdGVyX3Rv YXN0X3JpLnBsJywKICAgICAgICd0LzEwMF9idWdzLnBsJywKICAgICBdLAogICB9LApkaWZmIC0t Z2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdAppbmRleCBjMDBjMzQ2NTJmZS4uMDdkMjQ2YmQ5NTcgMTAwNjQ0Ci0t LSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CkBAIC0yNjY5LDYgKzI2NjksOCBAQCBSZXBsT3JpZ2luWGFjdFN0 YXRlCiBSZXBsYWNlVmFyc0Zyb21UYXJnZXRMaXN0X2NvbnRleHQKIFJlcGxhY2VWYXJzTm9NYXRj aE9wdGlvbgogUmVwbGFjZVdyYXBPcHRpb24KK1JlcGxpY2FJZGVudGl0eUVudHJ5CitSZXBsaWNh SWRlbnRpdHlLZXkKIFJlcGxpY2FJZGVudGl0eVN0bXQKIFJlcGxpY2F0aW9uS2luZAogUmVwbGlj YXRpb25TbG90CkBAIC0yNjgwLDYgKzI2ODIsNyBAQCBSZXBsaWNhdGlvblNsb3RQZXJzaXN0ZW50 RGF0YQogUmVwbGljYXRpb25TdGF0ZQogUmVwbGljYXRpb25TdGF0ZUN0bAogUmVwbGljYXRpb25T dGF0ZU9uRGlzaworcmVwbGljYV9pZGVudGl0eV9oYXNoCiBSZXNUYXJnZXQKIFJlc2Vydm9pclN0 YXRlCiBSZXNlcnZvaXJTdGF0ZURhdGEKLS0gCjIuNDMuMAoK --_011_TY4PR01MB17718A4AB7F564C8DB0D6F7DC94102TY4PR01MB17718jp_--