From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11012040.outbound.protection.outlook.com [52.101.43.40]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8CA8B2EC099 for ; Mon, 20 Oct 2025 23:25:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.43.40 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761002761; cv=fail; b=JWxziVOt+sAuK0Cjzs8vXCe2rCr9TI7GCM2r62lN7YMKggwOSRQASrDGZ5K0kMtlEM/NcVZZjO2B7DuqNRIFBtyLllSOpGgsE1QejowIIldFrjXxOTsQ4B01eQrnIIlk0M9LbLaPRSP99hpmW+hrF7gfVtUWna82f+u45X+jtns= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761002761; c=relaxed/simple; bh=iynlG/7dP2sYleKPS1xqpZEuQMnogCO4E/5Mb9oGBDk=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=K6pkko4vxomC4RiFmSy+gMY4kcrEUrjurNUuKpUYOd+DQ02PpUvwWLCwifgx6SdrDDcMTrTjFuOL0K5Y6MVxtZL3JPdaMjGVT6EVrvxWC+qYszpqxU+qCZhbMbCwrOdA2JJvFjU6OHC7aMjhgkDPv4Cdg8FYP8vBEyC9Exhf0T0= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=fexhaySf; arc=fail smtp.client-ip=52.101.43.40 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="fexhaySf" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UqAnm0xQ7q1CEtGlJAuIx29JS8M7Q14Y/RAFhZERyHjH0751Zdnp9gTkyMH9h8nGr3hAg8mOTsqRe2K0HcPZk+qkGqLCprNio7ETQ5okXXrCeUNEtUTPx1hjrlK71huRbnr9KP70znUuGmr/d2iLA+rPOV1HRsXcaYn834Dm7jM0KwPw5Q1rKuqleIG5xbqueVR8vvWXRR3BM+GVMDuWNOwIwe3L8nYFemUhxOjCJbOFoJxtgCJvrDcAhJMYsas5Umhy+tTlyZX4r9KYNOpRsFvRCCFx0vkoSvSzYqiCWvGP41125Opy+jKn3/gjfnKgrT06OKl1d5WwjQXn4MJ5oQ== 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=iynlG/7dP2sYleKPS1xqpZEuQMnogCO4E/5Mb9oGBDk=; b=zKa4PbCToSR3eht04BiPnyE7C8YkB/l0RC5I/qcAnuBJSVv47GwAa79IiHockPsgzSnH0z//5gVAs6VB8+xsbg3RgKoE65Qm9tQhceZQj4/sbjDkINZL6V3/S4Kho5K528RCkd25tAJVskkTIXqsemVxmy1s8Z3JHdAp/MekfmkfGB/RXKhoFNmmvGUiGnavDapl9tzKoRy1eg3N6DJXh7TcdaqJUXr0b82eSpAdE5Ol99rOjz7yq4aMT9nEFIuDBuneEjGCXZD5lLuM6BqQX3HKCQiCX+98iq10QcHp72GIWnva/dRse3zQwfQihitdE+DsE+/9/PbTrI805yalnQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iynlG/7dP2sYleKPS1xqpZEuQMnogCO4E/5Mb9oGBDk=; b=fexhaySf4xD1iBTz73r994sJolvpO6pDGturnuM8gbNaLMRgNXu9h1hQvGTsAnD6OAKXFBpIOAgDx3xGwmZcD1SQS+VJZGnEE0TY4gr0tyZeUvC++C/9id9eY0ZSWQLMjK++crvCmagIsGiT5V0mBfciOQJPCWDmIKIvnVQ+94OeUrb7DcjhDcuzpQAhuf7tzrNZ3qRE+MXSncqS4SlZQzPX+gQ58W2rUAFyvBCIppbVGxmQt21RrTe643eLNr4Bjz8rM7aJHfcCrvtLp1p6iVz07/Pxj0wEzKCCX7a2PfRXfsEERrITUbM112UC9zlyQatRmbfFu+Oeysi3VKvVHQ== Received: from LV3PR12MB9404.namprd12.prod.outlook.com (2603:10b6:408:219::9) by DM6PR12MB4450.namprd12.prod.outlook.com (2603:10b6:5:28e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.15; Mon, 20 Oct 2025 23:25:54 +0000 Received: from LV3PR12MB9404.namprd12.prod.outlook.com ([fe80::57ac:82e6:1ec5:f40b]) by LV3PR12MB9404.namprd12.prod.outlook.com ([fe80::57ac:82e6:1ec5:f40b%5]) with mapi id 15.20.9228.015; Mon, 20 Oct 2025 23:25:54 +0000 From: Chaitanya Kulkarni To: Keith Busch CC: Keith Busch , "linux-block@vger.kernel.org" , "shinichiro.kawasaki@wdc.com" Subject: Re: [PATCH blktests] create a test for direct io offsets Thread-Topic: [PATCH blktests] create a test for direct io offsets Thread-Index: AQHcPUzaF6Jy7nQRhEe3xFilnCv+grTLtygA Date: Mon, 20 Oct 2025 23:25:54 +0000 Message-ID: References: <20251014205420.941424-1-kbusch@meta.com> In-Reply-To: <20251014205420.941424-1-kbusch@meta.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla Thunderbird authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: LV3PR12MB9404:EE_|DM6PR12MB4450:EE_ x-ms-office365-filtering-correlation-id: df3c8a89-b6a0-4541-e29a-08de10300413 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|10070799003|376014|38070700021; x-microsoft-antispam-message-info: =?utf-8?B?Yk95NWV5cVloY1NIY3dNOENWRi9ITFdSNng3NGJQbEZBRXFMT2RJR3JDMlQ4?= =?utf-8?B?MlhBNXl5SFptd3NPTTcxMjJFSGYvWUtISHNaMzF6SGFYeEVsVWNsZXJGbnRD?= =?utf-8?B?dWdpbk41NUZEcWx6REJMMVJoSTY5ZVEzeklkcjlSTWFKVExUVUhrWHhxUHln?= =?utf-8?B?SWQyVFFNRGJkMmhOVVJOdTF1c2FUWUxmWGtYVXZsaXBmNHFqSSsydHU1SWRm?= =?utf-8?B?ODVsYjE1Q1pUZnp4TU9IQ2ZkQllUd1lyTnA2Z3RSWWtyVExNWFFXN3N3bytJ?= =?utf-8?B?RlJIOGhUVmpmTW90SGhpQURFNjM5NnhEQTFPMmc1UVFiY3YxTXNpWXh2bk0r?= =?utf-8?B?bnhJc0s2NjlTWTBOU2pJNnhUT1JOMmxhMll4eDZLcGVPRTJiTEh5bXVYQ0l3?= =?utf-8?B?Nng2b1hrWkdRbnVYL1c4QVhFdVlhTjRvc25LSXovbkl2OE1kZkNQNkhIREVk?= =?utf-8?B?cXRUdWo1WUQ3Z1IzZVhnTXAvd2tRVlBkeTltS3VacWZOQ2t4UmlWUmpyQ0Mx?= =?utf-8?B?OUlHY2puTVZvUitoWnNEVkVucFhNK1lOakdnZTQzUE92Rk9pNzFHZnZ5ZmFR?= =?utf-8?B?SjN1Nk4yNXdSSk1rbFB5c0dVUkVpdVFJMkd4c042bWpRcXJrRU1OZXdOc0h4?= =?utf-8?B?dmlrRXdrcytDblNmUlh0RmVyUGFYYzhENFlTNHVSR1lobWVua2hzVmM1Y1hD?= =?utf-8?B?M1poeS9yOEJReG1rYy9yeGVWSzgvcUdFUnl6Q0l2NmNjZThFajlYa2FJeW40?= =?utf-8?B?WWJhc3RyUkFKems5ZEJGVGRNcFVTK3RURURCUzN4WW40djA1M0N2cDB5RHpm?= =?utf-8?B?MUZhVEtOenYvb3JmVUlVN0h4SkpBbHptMi9jMTI5Y1c2Vk5ia3E5YWh1ai9R?= =?utf-8?B?Q29qdTdxRG9pTzB2a3kvYmE1Y0VYVFZJSGdRU3Bsdno0cW5ydGh1NmhqOStn?= =?utf-8?B?dENJc0FJMXdyRVhhUXlWRitIMFNmSWtTSFB4TjBWYXlWZENNTitPczhWMmZo?= =?utf-8?B?ZWh6YXF1L2Vaamk2MUJkQThwQUhqcXdENDVUVkhDMzBNNVcvTld6ZitWTXZD?= =?utf-8?B?aUlXR0tCVk5iSzl1T0x4MEZsMDRrMXJlVThvdHN2Z092QmJXcFR6dEs1eERn?= =?utf-8?B?N09qSmgyLzdSWEFJbVhsZVdwcXZ2Qjk1RUlsWmlQMWw0S2kvOTNBTmlxeVFz?= =?utf-8?B?Z3lBMFd5ZGNoNGJNOVdmbWRnM2tPcFd0ZldhZjAwUXg3UnMyYjZFNkNHWVVm?= =?utf-8?B?UUkrZUpQYUQwMk5hNXpmUGNmYm9SZFZEU0RaenZQS3JjSi9TMXlhVnQ2Nk9I?= =?utf-8?B?U2RDQmpVZWc0STk1RnFGOXNSZFBnTVNxK0FyTDdVNE4wSzN0aHNmR0ZoVzFQ?= =?utf-8?B?UlRZMndZaDRqTTliclNJYUpIa2QvQzRjQWdHMUFIQVFZWTFaTm5hNVQyZWhu?= =?utf-8?B?ZGN5c3JSUWVGV0FmTlRlSGpZZTRHUmR3cEI0RW5oMkI5N2NiTXY2d2dveVds?= =?utf-8?B?US9JN3JraWV1Ymc3aWFCc0pMUGJYWHNhUGR6RkFrdFhwdGM0bVBsS00zUG9z?= =?utf-8?B?U09VbUszSDRrck5HV3QrR29ESnhuU2lrbnhsUmM4cVA0Q1M2VlhpQ3o0eWQz?= =?utf-8?B?UXFRMldwcWIzM1lJVGhYeHQxdVF4b0VyMmUvMENRY1YrbTgvSTFIVVN2SFEv?= =?utf-8?B?b25qUVJXekMvVlU2MURFSmJhdWVabUwxdFh2RWdFS004Z1VNTzdEQ0RQY2VK?= =?utf-8?B?WUM5NG5ieTMwZWpSZ0FiQ3VoTHBKMVNIU1hxN0lOVFZrWDhuc0hyekhOb0Vj?= =?utf-8?B?R0pnVDNPTGhJVVFMdTJQQ21UQ1MvWUcyNXc2cnpkN0V3NDhsVXJOL3JBa0pn?= =?utf-8?B?dmZ6RTE2Mm15VG1UdTNidnNlT1QxLzJGcHl1Zi9IK3NlTzJnUi9DdHdZUDdm?= =?utf-8?B?eG9VMTdmb051V2JZRlNuQU4vWnFYOGprYXB6aXVXcEFLTjVTNGc2MjRtdWp0?= =?utf-8?B?SHlhYkR4eVBtcGJYNVNZNHNxY255aUN1Wjh3akFlOEU0V2tJdDF6elpTdk05?= =?utf-8?Q?WxiDC1?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV3PR12MB9404.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(10070799003)(376014)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SVhaUExMRytQTEJJb0ZYWnk1ZXJlekVwa0duT3h1UFVnZVY1eDdFaUdQaU9a?= =?utf-8?B?dk1EVWhOYU5yVWU5RU1PY0kzRFJrVG5HT3llTXZKT0hJRmNCZjVSVTNEK2tr?= =?utf-8?B?aU5lVHBHbitoZlJZMWVGak9Zd29UblpyL085N3ZNUWdXK1h2YkhUK1pOSkRV?= =?utf-8?B?WVdpODBpc3RhclRzbERKSmlIUlp3WHNZZDZCMVpxSUkyRGVMSDFYS1l0M1hw?= =?utf-8?B?bTBMTVZ4UTFIbHh0NUhZWFJ1aUZqakgrM3J3M1pzT0QwMStjRVFPLzZwSzN2?= =?utf-8?B?ZS9kY3dGREgzM0RwSlp0Rndid1NyRUpENGxLS091ckkvRHIvOVZ5UWczMWpM?= =?utf-8?B?Mmhub0xKdjJHdi9IK3N3c3Z0QmlIamx3ai9sUDA5Q0lIdHRqTDlUeFQzZ0Nr?= =?utf-8?B?RnB6ZVR6dDB2RkdVbkVVeWhERkNpSFk5VXVURjR5MWFOaDZubDBYWngwUnFX?= =?utf-8?B?RE54T0JGZW1UaVlsRXdaai9WQXlXQWp2RUdJanc2ODg4N0VobUVaQW44Wmw1?= =?utf-8?B?NWhHNVBndlFnUmxGUlVPcHcvT3dNeG1yWEViUWhXOGx4MGMzaW44YTNJczht?= =?utf-8?B?SXp4R0lWa3E5VmhKQWxobjc0bFpaOW5MWVY4VThHaXBMQ2lURW0vb3MyUHha?= =?utf-8?B?UUh4Tzl0NXloV0xZeUJQNFVKRE0vSzVhR0dOaGM4RDNtK3h1Q3Z6bkh1blV5?= =?utf-8?B?VGI2OWJMUm5mVEdwUlM4emZOaTlSNHl0T3ZCcyt1dm9OcW9Ta3NwYWswZWM5?= =?utf-8?B?NExOcXhKRmxsUERTQmFSK3c0ZzYyTGNQemIrR21UdUNuVlpwMmlVd3pYRDIr?= =?utf-8?B?cjlMZ0pBUlVIVE4rZnhEcS9tSFdyZDE2UkZmdllKSHRMSWppSlRZOWZRM0hY?= =?utf-8?B?Rm5aQWZ0MUtwelJkVHBlTXRicE4yZXRZTTZRZnNwak1CbU9xTFE5ME14bFUx?= =?utf-8?B?dktRV3haYytiRzJxSUNwZWY1dzQ2Uk9rbmhlM1cyWjN0N3pjWWVXODZpbXJk?= =?utf-8?B?WDV4M0YwUkJyb1BxeUxSU1RNUzlLZVUwY1ZxdmxzUWtlTE5NdTEya3NBMzZs?= =?utf-8?B?bGhwbW0xNWRYdjFDd2dVOGFkdkMzR2lBcFVLV0xKQkhrQXMyM0wwQWN3d3FO?= =?utf-8?B?aDgzbEJhd2ZDYjcwcDJZQUR2Q25XaENBWmhlRmdaTFM1d2tkMUpEWTdrQzJk?= =?utf-8?B?OHU2ckJPWTdGTXNXWTBjc2VyTDNOeHRQcEF2SlhNdytvS2RpRUxXTFFzaG1U?= =?utf-8?B?QlNTSjVyYlNscE5Vc1czbE5KZFQ5dDlxS0dYaE5TckNqUlNiRDB2dnNrWUFo?= =?utf-8?B?U1RzQXFZSnFrdWNMTWZIVDA0b0l2SFFkQlo0YkU1Mkh5b1Z5S3p0UkdLVEYx?= =?utf-8?B?YmtaUFpmaXo5UC9lNG1GR0MyNmVWSml0N0hMVTVXRUxnUWtsYk84dmhablRN?= =?utf-8?B?WmRUZUZqcjM1RTRvc2lUKzlSTVkyVEtTWTA5NE5GdzVneWpTTk9kZXNjV3lZ?= =?utf-8?B?WGl6U2tuTXcwYi9FVlJ3eTFZVGx4UVJHbTF3L1I3bi9pUGpBdjRRaGQxQjd5?= =?utf-8?B?RjNRbkloVURJRGJJeUpKUG40K2pGY1FaOXFDeUs4T0VsZThHVzFvUjNscUhm?= =?utf-8?B?b0kvdG5sU2tEdjE5OWljOVk3M0tsVk5mRDJVU0lZT3NpakxaUGlSV3VDT2NQ?= =?utf-8?B?TUhrYjVIS3lHczNRL0NKckJEOTJUVHBNdkZyWFlaYUtoTHhFam40dmxHclZl?= =?utf-8?B?b3BNRHdRSGNZaTBWWmtvVDAxVDdYWkpHbHYwMFcwTDV2dXFSalBSNCtseFpR?= =?utf-8?B?R0g1N1ZyZHZ6QlhrT1ViL0YwdnBhdC9MeVNxbVVjT29adkNhSTVVRStQU0xy?= =?utf-8?B?cGxYR1NoTkRFOE1RN0pGd1IxVjk2RTRtaUJPelJ4dEd1SnNGUE5ObUR0ZW9H?= =?utf-8?B?elRONDdHdTlvTnlZMWlEc2E5R2NUb1FnYm0veFNVbk5YdGNhN2RSOTlRWHEv?= =?utf-8?B?RVVXRnhteDNJUWZqZGljRFVvZFRRU2xRZi9ET0VleFp4Tk5kYzE2bjdhaEpu?= =?utf-8?B?aVJMdktpOVlHNTFQUUpRdUV5M090NFFSMTMzRVRhYit4QzgxbWYxWEZXMjV1?= =?utf-8?B?RkVCd3BKNVBrOE56R1A5Z0VBWFpxV1dSSmpBK1V2NHhEZlM5ajdidUovaE14?= =?utf-8?Q?4LOfsrN78hOv39dv8ZOsEYwJwP+FXn4SGtphdC/rgXKj?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-block@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: LV3PR12MB9404.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: df3c8a89-b6a0-4541-e29a-08de10300413 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Oct 2025 23:25:54.5645 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ma+YihhnFwsltAaIiYXIfBhWASYCyZZJbsol1Oqrvpzc7CrfMBQP4slvP2ljzuOdU/PSNdIKD7K5GUMWEU023A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4450 PiArc3RhdGljIGxvbmcgcGFnZXNpemU7DQo+ICtzdGF0aWMgdm9pZCAqb3V0X2J1ZjsNCj4gK3N0 YXRpYyB2b2lkICppbl9idWY7DQo+ICtzdGF0aWMgaW50IHRlc3RfZmQ7DQo+ICsNCg0KZm9yIHRo ZSBzYWtlIG9mIGNvbXBsZXRlbmVzcyBzZWUgaWYgaXQgbWFrZXMgc2Vuc2UsIHRvdGFsbHkgdW50 ZXN0ZWQgOi0NCg0KZGlmZiAtLWdpdCBhL3NyYy9kaW8tb2Zmc2V0cy5jIGIvc3JjL2Rpby1vZmZz ZXRzLmMNCmluZGV4IDU5NjEyMzIuLmE4YzRkM2UgMTAwNjQ0DQotLS0gYS9zcmMvZGlvLW9mZnNl dHMuYw0KKysrIGIvc3JjL2Rpby1vZmZzZXRzLmMNCkBAIC0xNTcsNyArMTU3LDcgQEAgc3RhdGlj IHNpemVfdCBidWZfc2l6ZTsNCiDCoHN0YXRpYyBsb25nIHBhZ2VzaXplOw0KIMKgc3RhdGljIHZv aWQgKm91dF9idWY7DQogwqBzdGF0aWMgdm9pZCAqaW5fYnVmOw0KLXN0YXRpYyBpbnQgdGVzdF9m ZDsNCitzdGF0aWMgaW50IHRlc3RfZmQgPSAtMTsNCiDCoHN0YXRpYyB2b2lkIGluaXRfa2VybmVs X3ZlcnNpb24oKQ0KQEAgLTg4MSw2ICs4ODEsMjAgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3RzKCkN CiDCoCDCoCDCoCDCoCB0ZXN0X3VuYWxpZ25lZF92ZWN0b3JzKCk7DQogwqB9DQorLyoNCisgKiBD bGVhbnVwIGhhbmRsZXIgZm9yIGF0ZXhpdCgpDQorICoNCisgKiBFbnN1cmVzIHJlc291cmNlcyBh cmUgZnJlZWQgb24gYWxsIGV4aXQgcGF0aHMsIGluY2x1ZGluZyB3aGVuIGVycigpL2VycngoKQ0K KyAqIGNhdXNlIGVhcmx5IHRlcm1pbmF0aW9uLiBUaGlzIHByZXZlbnRzIGZpbGUgZGVzY3JpcHRv ciBhbmQgbWVtb3J5IGxlYWtzLg0KKyAqLw0KK3N0YXRpYyB2b2lkIGNsZWFudXAodm9pZCkNCit7 DQorwqAgwqAgwqAgwqBpZiAodGVzdF9mZCA+PSAwKQ0KK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKg Y2xvc2UodGVzdF9mZCk7DQorwqAgwqAgwqAgwqBmcmVlKGluX2J1Zik7DQorwqAgwqAgwqAgwqBm cmVlKG91dF9idWYpOw0KK30NCisNCiDCoGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikN CiDCoHsNCiDCoCDCoCDCoCDCoCBpZiAoYXJnYyA8IDIpDQogwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgZXJyeChFSU5WQUwsICJleHBlY3QgYXJnbWVudHM6IGZpbGUiKTsNCisNCivCoCDCoCDCoCDC oGF0ZXhpdChjbGVhbnVwKTsNCiDCoCDCoCDCoCDCoCBpbml0X2FyZ3MoYXJndik7DQogwqAgwqAg wqAgwqAgaW5pdF9idWZmZXJzKCk7DQogwqAgwqAgwqAgwqAgcnVuX3Rlc3RzKCk7DQogwqAgwqAg wqAgwqAgY2xvc2UodGVzdF9mZCk7DQogwqAgwqAgwqAgwqAgZnJlZShvdXRfYnVmKTsNCg0KPiAr DQo+ICtzdGF0aWMgdm9pZCByZWFkX3F1ZXVlX2F0dHJzKGNvbnN0IGNoYXIgKnBhdGgpDQo+ICt7 DQo+ICsJY2hhciBhdHRyW1BBVEhfTUFYXTsNCj4gKw0KPiArCWlmIChzbnByaW50ZihhdHRyLCBz aXplb2YoYXR0ciksICIlcy9tYXhfc2VnbWVudHMiLCBwYXRoKSA8IDApDQo+ICsJCWVycihlcnJu bywgIm1heF9zZWdtZW50cyIpOw0KPiArCXJlYWRfc3lzZnNfYXR0cihhdHRyLCAmbWF4X3NlZ21l bnRzKTsNCj4gKw0KPiArCWlmIChzbnByaW50ZihhdHRyLCBzaXplb2YoYXR0ciksICIlcy9kbWFf YWxpZ25tZW50IiwgcGF0aCkgPCAwKQ0KPiArCQllcnIoZXJybm8sICJkbWFfYWxpZ25tZW50Iik7 DQo+ICsJcmVhZF9zeXNmc19hdHRyKGF0dHIsICZkbWFfYWxpZ25tZW50KTsNCj4gKw0KPiArCWlm IChzbnByaW50ZihhdHRyLCBzaXplb2YoYXR0ciksICIlcy92aXJ0X2JvdW5kYXJ5X21hc2siLCBw YXRoKSA8IDApDQo+ICsJCWVycihlcnJubywgInZpcnRfYm91bmRhcnlfbWFzayIpOw0KPiArCXJl YWRfc3lzZnNfYXR0cihhdHRyLCAmdmlydF9ib3VuZGFyeSk7DQo+ICsNCj4gKwlpZiAoc25wcmlu dGYoYXR0ciwgc2l6ZW9mKGF0dHIpLCAiJXMvbG9naWNhbF9ibG9ja19zaXplIiwgcGF0aCkgPCAw KQ0KPiArCQllcnIoZXJybm8sICJsb2dpY2FsX2Jsb2NrX3NpemUiKTsNCj4gKwlyZWFkX3N5c2Zz X2F0dHIoYXR0ciwgJmxvZ2ljYWxfYmxvY2tfc2l6ZSk7DQo+ICsNCj4gKwlpZiAoc25wcmludGYo YXR0ciwgc2l6ZW9mKGF0dHIpLCAiJXMvbWF4X3NlY3RvcnNfa2IiLCBwYXRoKSA8IDApDQo+ICsJ CWVycihlcnJubywgIm1heF9zZWN0b3JzX2tiIik7DQo+ICsJcmVhZF9zeXNmc19hdHRyKGF0dHIs ICZtYXhfYnl0ZXMpOw0KPiArDQo+ICsJbWF4X2J5dGVzICo9IDEwMjQ7DQo+ICsJZG1hX2FsaWdu bWVudCsrOw0KPiArCXZpcnRfYm91bmRhcnkrKzsNCj4gKw0KPiArCS8qDQo+ICsJcHJpbnRmKCJs b2dpY2FsX2Jsb2NrX3NpemU6JWx1IGRtYV9hbGlnbm1lbnQ6JWx1IHZpcnRfYm91bmRhcnk6JWx1 IG1heF9zZWdtZW50czolbHUgbWF4X2J5dGVzOiVsdVxuIiwNCj4gKwkJbG9naWNhbF9ibG9ja19z aXplLCBkbWFfYWxpZ25tZW50LCB2aXJ0X2JvdW5kYXJ5LCBtYXhfc2VnbWVudHMsIG1heF9ieXRl cyk7DQo+ICsJKi8NCg0KZGVidWcgY29tbWVudCA/IGVpdGhlciByZW1vdmUgb2YgZ3VhcmQgd2l0 aCBnX2RlYnVnID8NCg0KDQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGluaXRfYXJncyhjaGFy ICoqYXJndikNCj4gK3sNCj4gKwljaGFyIHN5c19wYXRoW1BBVEhfTUFYXTsNCj4gKw0KPiArICAg ICAgICB0ZXN0X2ZkID0gb3Blbihhcmd2WzFdLCBPX1JEV1IgfCBPX0NSRUFUIHwgT19UUlVOQyB8 IE9fRElSRUNUKTsNCj4gKyAgICAgICAgaWYgKHRlc3RfZmQgPCAwKQ0KPiArCQllcnIoZXJybm8s ICIlczogZmFpbGVkIHRvIG9wZW4gJXMiLCBfX2Z1bmNfXywgYXJndlsxXSk7DQo+ICsNCj4gKwlp bml0X2tlcm5lbF92ZXJzaW9uKCk7DQo+ICsJZmluZF9ibG9ja19kZXZpY2UoYXJndlsxXSwgc3lz X3BhdGgsIHNpemVvZihzeXNfcGF0aCkpOw0KPiArCXJlYWRfcXVldWVfYXR0cnMoc3lzX3BhdGgp Ow0KPiArDQo+ICsJaWYgKCFwb3dlcl9vZl8yKHZpcnRfYm91bmRhcnkpIHx8DQo+ICsJICAgICFw b3dlcl9vZl8yKGRtYV9hbGlnbm1lbnQpIHx8DQo+ICsJICAgICFwb3dlcl9vZl8yKGxvZ2ljYWxf YmxvY2tfc2l6ZSkpDQo+ICsJCWVycihFSU5WQUwsICIlczogYmFkIHBhcmFtZXRlcnMiLCBfX2Z1 bmNfXyk7DQo+ICsNCj4gKwlpZiAodmlydF9ib3VuZGFyeSA+IDEgJiYgdmlydF9ib3VuZGFyeSA8 IGxvZ2ljYWxfYmxvY2tfc2l6ZSkNCj4gKwkJZXJyKEVJTlZBTCwgIiVzOiB2aXJ0X2JvdW5kYXJ5 OiVsdSBsb2dpY2FsX2Jsb2NrX3NpemU6JWx1IiwgX19mdW5jX18sDQo+ICsJCQl2aXJ0X2JvdW5k YXJ5LCBsb2dpY2FsX2Jsb2NrX3NpemUpOw0KPiArDQo+ICsJaWYgKGRtYV9hbGlnbm1lbnQgPiBs b2dpY2FsX2Jsb2NrX3NpemUpDQo+ICsJCWVycihFSU5WQUwsICIlczogZG1hX2FsaWdubWVudDol bHUgbG9naWNhbF9ibG9ja19zaXplOiVsdSIsIF9fZnVuY19fLA0KPiArCQkJZG1hX2FsaWdubWVu dCwgbG9naWNhbF9ibG9ja19zaXplKTsNCj4gKw0KPiArCWlmIChtYXhfc2VnbWVudHMgPiA0MDk2 KQ0KPiArCQltYXhfc2VnbWVudHMgPSA0MDk2Ow0KPiArCWlmIChtYXhfYnl0ZXMgPiAxNjM4NCAq IDEwMjQpDQo+ICsJCW1heF9ieXRlcyA9IDE2Mzg0ICogMTAyNDsNCj4gKwlpZiAobWF4X2J5dGVz ICYgKGxvZ2ljYWxfYmxvY2tfc2l6ZSAtIDEpKQ0KPiArCQltYXhfYnl0ZXMgLT0gbWF4X2J5dGVz ICYgKGxvZ2ljYWxfYmxvY2tfc2l6ZSAtIDEpOw0KPiArCXBhZ2VzaXplID0gc3lzY29uZihfU0Nf UEFHRV9TSVpFKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgaW5pdF9idWZmZXJzKCkNCj4g K3sNCj4gKwl1bnNpZ25lZCBsb25nIGxiX21hc2sgPSBsb2dpY2FsX2Jsb2NrX3NpemUgLSAxOw0K PiArCWludCBmZCwgcmV0Ow0KPiArDQo+ICsJYnVmX3NpemUgPSBtYXhfYnl0ZXMgKiBtYXhfc2Vn bWVudHMgLyAyOw0KPiArCWlmIChidWZfc2l6ZSA8IGxvZ2ljYWxfYmxvY2tfc2l6ZSAqIG1heF9z ZWdtZW50cykNCj4gKwkJZXJyKEVJTlZBTCwgIiVzOiBsb2dpY2FsIGJsb2NrIHNpemUgaXMgdG9v IGJpZyIsIF9fZnVuY19fKTsNCj4gKw0KPiArCWlmIChidWZfc2l6ZSA8IGxvZ2ljYWxfYmxvY2tf c2l6ZSAqIDEwMjQgKiA0KQ0KPiArCQlidWZfc2l6ZSA9IGxvZ2ljYWxfYmxvY2tfc2l6ZSAqIDEw MjQgKiA0Ow0KPiArDQo+ICsJaWYgKGJ1Zl9zaXplICYgbGJfbWFzaykNCj4gKwkJYnVmX3NpemUg PSAoYnVmX3NpemUgKyBsYl9tYXNrKSAmIH4obGJfbWFzayk7DQo+ICsNCj4gKyAgICAgICAgcmV0 ID0gcG9zaXhfbWVtYWxpZ24oKHZvaWQgKiopJmluX2J1ZiwgcGFnZXNpemUsIGJ1Zl9zaXplKTsN Cj4gKyAgICAgICAgaWYgKHJldCkNCj4gKwkJZXJyKEVJTlZBTCwgIiVzOiBmYWlsZWQgdG8gYWxs b2NhdGUgaW4tYnVmIiwgX19mdW5jX18pOw0KPiArDQo+ICsgICAgICAgIHJldCA9IHBvc2l4X21l bWFsaWduKCh2b2lkICoqKSZvdXRfYnVmLCBwYWdlc2l6ZSwgYnVmX3NpemUpOw0KPiArICAgICAg ICBpZiAocmV0KQ0KPiArCQllcnIoRUlOVkFMLCAiJXM6IGZhaWxlZCB0byBhbGxvY2F0ZSBvdXQt YnVmIiwgX19mdW5jX18pOw0KPiArDQo+ICsJZmQgPSBvcGVuKCIvZGV2L3VyYW5kb20iLCBPX1JE T05MWSk7DQo+ICsJaWYgKGZkIDwgMCkNCj4gKwkJZXJyKEVJTlZBTCwgIiVzOiBmYWlsZWQgdG8g b3BlbiB1cmFuZG9tIiwgX19mdW5jX18pOw0KPiArDQo+ICsJcmV0ID0gcmVhZChmZCwgb3V0X2J1 ZiwgYnVmX3NpemUpOw0KPiArCWlmIChyZXQgPCAwKQ0KPiArCQllcnIoRUlOVkFMLCAiJXM6IGZh aWxlZCB0byByYW5kb21pemUgb3V0cHV0IGJ1ZmZlciIsIF9fZnVuY19fKTsNCj4gKw0KPiArCWNs b3NlKGZkKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgX19jb21wYXJlKHZvaWQgKmEsIHZv aWQgKmIsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICp0ZXN0KQ0KPiArew0KPiArCWlmICghbWVt Y21wKGEsIGIsIHNpemUpKQ0KPiArCQlyZXR1cm47DQo+ICsJZXJyKEVJTywgIiVzOiBkYXRhIGNv cnJ1cHRpb24iLCB0ZXN0KTsNCj4gK30NCj4gKyNkZWZpbmUgY29tcGFyZShhLCBiLCBzaXplKSBf X2NvbXBhcmUoYSwgYiwgc2l6ZSwgX19mdW5jX18pDQo+ICsNCj4gKy8qDQo+ICsgKiBUZXN0IHVz aW5nIHBhZ2UgYWxpZ25lZCBidWZmZXJzLCBzaW5nbGUgc291cmNlDQo+ICsgKg0KPiArICogVG90 YWwgc2l6ZSBpcyBhbGlnbmVkIHRvIGEgbG9naWNhbCBibG9jayBzaXplIGFuZCBleGNlZWRzIHRo ZSBtYXggdHJhbnNmZXINCj4gKyAqIHNpemUgYXMgd2VsbCBhcyB0aGUgbWF4IHNlZ21lbnRzLiBU aGlzIHNob3VsZCB0ZXN0IHRoZSBrZXJuZWwncyBzcGxpdCBiaW8NCj4gKyAqIGNvbnN0cnVjdGlv biBhbmQgYmlvIHNwbGl0dGluZyBmb3IgZXhjZWVkaW5nIHRoZXNlIGxpbWl0cy4NCj4gKyAqLw0K PiArc3RhdGljIHZvaWQgdGVzdF9mdWxsX3NpemVfYWxpZ25lZCgpDQo+ICt7DQo+ICsJaW50IHJl dDsNCj4gKw0KPiArCW1lbXNldChpbl9idWYsIDAsIGJ1Zl9zaXplKTsNCj4gKwlyZXQgPSBwd3Jp dGUodGVzdF9mZCwgb3V0X2J1ZiwgYnVmX3NpemUsIDApOw0KPiArCWlmIChyZXQgPCAwKQ0KPiAr CQllcnIoZXJybm8sICIlczogZmFpbGVkIHRvIHdyaXRlIGJ1ZiIsIF9fZnVuY19fKTsNCj4gKw0K PiArCXJldCA9IHByZWFkKHRlc3RfZmQsIGluX2J1ZiwgYnVmX3NpemUsIDApOw0KPiArCWlmIChy ZXQgPCAwKQ0KPiArCQllcnIoZXJybm8sICIlczogZmFpbGVkIHRvIHJlYWQgYnVmIiwgX19mdW5j X18pOw0KPiArDQo+ICsJY29tcGFyZShvdXRfYnVmLCBpbl9idWYsIGJ1Zl9zaXplKTsNCj4gK30N Cj4gKw0KDQpkbyB3ZSBuZWVkIHRvwqBjaGVjayBmb3IgcGFydGlhbCBjb21wbGV0ZSBJL08gPyBz b21ldGhpbmcgbGlrZSB0aGlzIHRvdGFsbHkgdW50ZXN0ZWQ6LQ0KDQppZmYgLS1naXQgYS9zcmMv ZGlvLW9mZnNldHMuYyBiL3NyYy9kaW8tb2Zmc2V0cy5jDQppbmRleCBhOGM0ZDNlLi5iMmYzZTRh IDEwMDY0NA0KLS0tIGEvc3JjL2Rpby1vZmZzZXRzLmMNCisrKyBiL3NyYy9kaW8tb2Zmc2V0cy5j DQpAQCAtMjgwLDYgKzI4MCw0MiBAQCBzdGF0aWMgdm9pZCBpbml0X2FyZ3MoY2hhciAqKmFyZ3Yp DQogIAkJZXJyKGVycm5vLCAiJXM6IGZhaWxlZCB0byBvcGVuICVzIiwgX19mdW5jX18sIGFyZ3Zb MV0pOw0KICB9DQoNCisvKg0KKyAqIFZlcmlmeSB0aGF0IHByZWFkL3B3cml0ZSB0cmFuc2ZlcnJl ZCB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGJ5dGVzLg0KKyAqDQorICogUE9TSVggYWxsb3dzIHNo b3J0IHRyYW5zZmVycyBldmVuIG9uIHN1Y2Nlc3MgKHJldCA+PSAwKS4gRm9yIGRpcmVjdCBJL08N CisgKiB0ZXN0aW5nLCB3ZSBuZWVkIGV4YWN0IHRyYW5zZmVycyAtIGFueSBzaG9ydCB0cmFuc2Zl ciBpbmRpY2F0ZXMgYSBwcm9ibGVtLg0KKyAqLw0KK3N0YXRpYyB2b2lkIGNoZWNrX2lvX3Jlc3Vs dChzc2l6ZV90IHJldCwgc2l6ZV90IGV4cGVjdGVkLCBjb25zdCBjaGFyICpvcCwNCisJCQkgICAg Y29uc3QgY2hhciAqZnVuYykNCit7DQorCWlmIChyZXQgPCAwKQ0KKwkJZXJyKGVycm5vLCAiJXM6 ICVzIGZhaWxlZCIsIGZ1bmMsIG9wKTsNCisJaWYgKHJldCAhPSAoc3NpemVfdClleHBlY3RlZCkN CisJCWVycngoRUlPLCAiJXM6IHNob3J0ICVzOiBleHBlY3RlZCAlenUgYnl0ZXMsIGdvdCAlemQg Ynl0ZXMiLA0KKwkJICAgICBmdW5jLCBvcCwgZXhwZWN0ZWQsIHJldCk7DQorfQ0KKw0KKy8qDQor ICogQ2FsY3VsYXRlIHRvdGFsIHNpemUgb2YgaW92ZWMgYXJyYXkgYW5kIHZlcmlmeSB0cmFuc2Zl ciBjb21wbGV0ZWQgZnVsbHkuDQorICoNCisgKiBGb3IgcHJlYWR2L3B3cml0ZXYsIHdlIG5lZWQg dG8gc3VtIGFsbCBpb3ZfbGVuIGZpZWxkcyB0byBnZXQgdGhlIGV4cGVjdGVkDQorICogdG90YWwg dHJhbnNmZXIgc2l6ZSwgdGhlbiB2ZXJpZnkgdGhlIGFjdHVhbCByZXR1cm4gbWF0Y2hlcy4NCisg Ki8NCitzdGF0aWMgdm9pZCBjaGVja19pb3ZfcmVzdWx0KHNzaXplX3QgcmV0LCBjb25zdCBzdHJ1 Y3QgaW92ZWMgKmlvdiwgaW50IGlvdmNudCwNCisJCQkgICAgIGNvbnN0IGNoYXIgKm9wLCBjb25z dCBjaGFyICpmdW5jKQ0KK3sNCisJc2l6ZV90IGV4cGVjdGVkID0gMDsNCisJaW50IGk7DQorDQor CWZvciAoaSA9IDA7IGkgPCBpb3ZjbnQ7IGkrKykNCisJCWV4cGVjdGVkICs9IGlvdltpXS5pb3Zf bGVuOw0KKw0KKwlpZiAocmV0IDwgMCkNCisJCWVycihlcnJubywgIiVzOiAlcyBmYWlsZWQiLCBm dW5jLCBvcCk7DQorCWlmIChyZXQgIT0gKHNzaXplX3QpZXhwZWN0ZWQpDQorCQllcnJ4KEVJTywg IiVzOiBzaG9ydCAlczogZXhwZWN0ZWQgJXp1IGJ5dGVzLCBnb3QgJXpkIGJ5dGVzIiwNCisJCSAg ICAgZnVuYywgb3AsIGV4cGVjdGVkLCByZXQpOw0KK30NCg0KICBzdGF0aWMgdm9pZCBpbml0X2J1 ZmZlcnMoKQ0KICB7DQpAQCAtNDY4LDEwICs1MDQsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Z1bGxf c2l6ZV9hbGlnbmVkKCkNCiAgCW1lbXNldChpbl9idWYsIDAsIGJ1Zl9zaXplKTsNCiAgCXJldCA9 IHB3cml0ZSh0ZXN0X2ZkLCBvdXRfYnVmLCBidWZfc2l6ZSwgMCk7DQotCWlmIChyZXQgPCAwKQ0K LQkJZXJyKGVycm5vLCAiJXM6IGZhaWxlZCB0byB3cml0ZSBidWYiLCBfX2Z1bmNfXyk7DQorCWNo ZWNrX2lvX3Jlc3VsdChyZXQsIGJ1Zl9zaXplLCAid3JpdGUiLCBfX2Z1bmNfXyk7DQoNCiAgCXJl dCA9IHByZWFkKHRlc3RfZmQsIGluX2J1ZiwgYnVmX3NpemUsIDApOw0KLQlpZiAocmV0IDwgMCkN Ci0JCWVycihlcnJubywgIiVzOiBmYWlsZWQgdG8gcmVhZCBidWYiLCBfX2Z1bmNfXyk7DQorCWNo ZWNrX2lvX3Jlc3VsdChyZXQsIGJ1Zl9zaXplLCAicmVhZCIsIF9fZnVuY19fKTsNCg0KICAJY29t cGFyZShvdXRfYnVmLCBpbl9idWYsIGJ1Zl9zaXplKTsNCkBAIC00ODksMTAgKzUyMyw4IEBAIHN0 YXRpYyB2b2lkIHRlc3RfZG1hX2FsaWduZWQoKQ0KICAJbWVtc2V0KGluX2J1ZiwgMCwgYnVmX3Np emUpOw0KICAJcmV0ID0gcHdyaXRlKHRlc3RfZmQsIG91dF9idWYgKyBkbWFfYWxpZ25tZW50LCBt YXhfYnl0ZXMsIDApOw0KLQlpZiAocmV0IDwgMCkNCi0JCWVycihlcnJubywgIiVzOiBmYWlsZWQg dG8gd3JpdGUgYnVmIiwgX19mdW5jX18pOw0KKwljaGVja19pb19yZXN1bHQocmV0LCBtYXhfYnl0 ZXMsICJ3cml0ZSIsIF9fZnVuY19fKTsNCg0KICAJcmV0ID0gcHJlYWQodGVzdF9mZCwgaW5fYnVm ICsgZG1hX2FsaWdubWVudCwgbWF4X2J5dGVzLCAwKTsNCi0JaWYgKHJldCA8IDApDQotCQllcnIo ZXJybm8sICIlczogZmFpbGVkIHRvIHJlYWQgYnVmIiwgX19mdW5jX18pOw0KKwljaGVja19pb19y ZXN1bHQocmV0LCBtYXhfYnl0ZXMsICJyZWFkIiwgX19mdW5jX18pOw0KDQogIAljb21wYXJlKG91 dF9idWYgKyBkbWFfYWxpZ25tZW50LCBpbl9idWYgKyBkbWFfYWxpZ25tZW50LCBtYXhfYnl0ZXMp Ow0KQEAgLTUxNSw4ICs1NDcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3BhZ2VfYWxpZ25lZF92ZWN0 b3JzKCkNCiAgCX0NCg0KICAJcmV0ID0gcHdyaXRldih0ZXN0X2ZkLCBpb3YsIHZlY3MsIDApOw0K LQlpZiAocmV0IDwgMCkNCi0JCWVycihlcnJubywgIiVzOiBmYWlsZWQgdG8gd3JpdGUgYnVmIiwg X19mdW5jX18pOw0KKwljaGVja19pb3ZfcmVzdWx0KHJldCwgaW92LCB2ZWNzLCAid3JpdGV2Iiwg X19mdW5jX18pOw0KDQogIAlmb3IgKGkgPSAwOyBpIDwgdmVjczsgaSsrKSB7DQogIAkJb2Zmc2V0 ID0gbG9naWNhbF9ibG9ja19zaXplICogaSAqIDQ7DQpAQCAtNTI1LDggKzU1Niw3IEBAIHN0YXRp YyB2b2lkIHRlc3RfcGFnZV9hbGlnbmVkX3ZlY3RvcnMoKQ0KICAJfQ0KDQogIAlyZXQgPSBwcmVh ZHYodGVzdF9mZCwgaW92LCB2ZWNzLCAwKTsNCi0JaWYgKHJldCA8IDApDQotCQllcnIoZXJybm8s ICIlczogZmFpbGVkIHRvIHJlYWQgYnVmIiwgX19mdW5jX18pOw0KKwljaGVja19pb3ZfcmVzdWx0 KHJldCwgaW92LCB2ZWNzLCAicmVhZHYiLCBfX2Z1bmNfXyk7DQoNCiAgCWZvciAoaSA9IDA7IGkg PCB2ZWNzOyBpKyspIHsNCiAgCQlvZmZzZXQgPSBsb2dpY2FsX2Jsb2NrX3NpemUgKiBpICogNDsN CkBAIC01NTEsOCArNTgxLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9kbWFfYWxpZ25lZF92ZWN0b3Jz KCkNCiAgCX0NCg0KICAJcmV0ID0gcHdyaXRldih0ZXN0X2ZkLCBpb3YsIHZlY3MsIDApOw0KLQlp ZiAocmV0IDwgMCkNCi0JCWVycihlcnJubywgIiVzOiBmYWlsZWQgdG8gd3JpdGUgYnVmIiwgX19m dW5jX18pOw0KKwljaGVja19pb3ZfcmVzdWx0KHJldCwgaW92LCB2ZWNzLCAid3JpdGV2IiwgX19m dW5jX18pOw0KDQogIAlmb3IgKGkgPSAwOyBpIDwgdmVjczsgaSsrKSB7DQogIAkJb2Zmc2V0ID0g bG9naWNhbF9ibG9ja19zaXplICogaSAqIDggKyBkbWFfYWxpZ25tZW50ICogKGkgKyAxKTsNCkBA IC01NjEsOCArNTkwLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9kbWFfYWxpZ25lZF92ZWN0b3JzKCkN CiAgCX0NCg0KICAJcmV0ID0gcHJlYWR2KHRlc3RfZmQsIGlvdiwgdmVjcywgMCk7DQotCWlmIChy ZXQgPCAwKQ0KLQkJZXJyKGVycm5vLCAiJXM6IGZhaWxlZCB0byByZWFkIGJ1ZiIsIF9fZnVuY19f KTsNCisJY2hlY2tfaW92X3Jlc3VsdChyZXQsIGlvdiwgdmVjcywgInJlYWR2IiwgX19mdW5jX18p Ow0KDQogIAlmb3IgKGkgPSAwOyBpIDwgdmVjczsgaSsrKSB7DQogIAkJb2Zmc2V0ID0gbG9naWNh bF9ibG9ja19zaXplICogaSAqIDggKyBkbWFfYWxpZ25tZW50ICogKGkgKyAxKTsNCkBAIC01OTks MTEgKzYyNywxMyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3VuYWxpZ25lZF9wYWdlX3ZlY3RvcnMoKQ0K ICAJfQ0KDQogIAlyZXQgPSBwd3JpdGV2KHRlc3RfZmQsIGlvdiwgdmVjcywgMCk7DQotCWlmIChy ZXQgPCAwKSB7DQotCQlpZiAoIXNob3VsZF9mYWlsKQ0KLQkJCWVycihlcnJubywgIiVzOiB1bmV4 cGVjdGVkIGZhaWx1cmUiLCBfX2Z1bmNfXyk7DQorCWlmIChyZXQgPCAwICYmIHNob3VsZF9mYWls KQ0KICAJCXJldHVybjsNCi0JfQ0KKwljaGVja19pb3ZfcmVzdWx0KHJldCwgaW92LCB2ZWNzLCAi d3JpdGV2IiwgX19mdW5jX18pOw0KDQogIAlpZiAoc2hvdWxkX2ZhaWwpDQogIAkJZXJyeChFSU5W QUwsICIlczogZXhwZWN0ZWQgZmFpbHVyZSwgYnV0IHN1Y2NlZWRlZCIsIF9fZnVuY19fKTsNCkBA IC02MTUsOCArNjM5LDcgQEAgc3RhdGljIHZvaWQgdGVzdF91bmFsaWduZWRfcGFnZV92ZWN0b3Jz KCkNCiAgCX0NCg0KICAJcmV0ID0gcHJlYWR2KHRlc3RfZmQsIGlvdiwgdmVjcywgMCk7DQotCWlm IChyZXQgPCAwKQ0KLQkJZXJyKGVycm5vLCAiJXM6IGZhaWxlZCB0byByZWFkIGJ1ZiIsIF9fZnVu Y19fKTsNCisJY2hlY2tfaW92X3Jlc3VsdChyZXQsIGlvdiwgdmVjcywgInJlYWR2IiwgX19mdW5j X18pOw0KDQogIAlmb3IgKGkgPSAwOyBpIDwgdmVjczsgaSsrKSB7DQogIAkJb2Zmc2V0ID0gbG9n aWNhbF9ibG9ja19zaXplICogaSAqIDg7DQpAQCAtNjUzLDExICs2NzYsMTMgQEAgc3RhdGljIHZv aWQgdGVzdF91bmFsaWduZWRfdmVjdG9ycygpDQogIAl9DQoNCiAgCXJldCA9IHB3cml0ZXYodGVz dF9mZCwgaW92LCB2ZWNzLCAwKTsNCi0JaWYgKHJldCA8IDApIHsNCi0JCWlmICghc2hvdWxkX2Zh aWwpDQotCQkJZXJyKGVycm5vLCAiJXM6IHVuZXhwZWN0ZWQgZmFpbHVyZSIsIF9fZnVuY19fKTsN CisJaWYgKHJldCA8IDAgJiYgc2hvdWxkX2ZhaWwpDQogIAkJcmV0dXJuOw0KLQl9DQorCWNoZWNr X2lvdl9yZXN1bHQocmV0LCBpb3YsIHZlY3MsICJ3cml0ZXYiLCBfX2Z1bmNfXyk7DQoNCiAgCWlm IChzaG91bGRfZmFpbCkNCiAgCQllcnJ4KEVJTlZBTCwgIiVzOiBleHBlY3RlZCBmYWlsdXJlLCBi dXQgc3VjY2VlZGVkIiwgX19mdW5jX18pOw0KQEAgLTY2OSw4ICs2ODgsNyBAQCBzdGF0aWMgdm9p ZCB0ZXN0X3VuYWxpZ25lZF92ZWN0b3JzKCkNCiAgCX0NCg0KICAJcmV0ID0gcHJlYWR2KHRlc3Rf ZmQsIGlvdiwgdmVjcywgMCk7DQotCWlmIChyZXQgPCAwKQ0KLQkJZXJyKGVycm5vLCAiJXM6IGZh aWxlZCB0byByZWFkIGJ1ZiIsIF9fZnVuY19fKTsNCisJY2hlY2tfaW92X3Jlc3VsdChyZXQsIGlv diwgdmVjcywgInJlYWR2IiwgX19mdW5jX18pOw0KDQogIAlmb3IgKGkgPSAwOyBpIDwgdmVjczsg aSsrKSB7DQogIAkJb2Zmc2V0ID0gbG9naWNhbF9ibG9ja19zaXplICogaSAqIDQgKyBsb2dpY2Fs X2Jsb2NrX3NpemUgLyAyOw0KQEAgLTY5Myw4ICs3MTEsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3Zp cnRfYm91bmRhcnlfdmVjdG9ycygpDQogIAl9DQoNCiAgCXJldCA9IHB3cml0ZXYodGVzdF9mZCwg aW92LCB2ZWNzLCAwKTsNCi0JaWYgKHJldCA8IDApDQotCQllcnIoZXJybm8sICIlczogZmFpbGVk IHRvIHdyaXRlIGJ1ZiIsIF9fZnVuY19fKTsNCisJY2hlY2tfaW92X3Jlc3VsdChyZXQsIGlvdiwg dmVjcywgIndyaXRldiIsIF9fZnVuY19fKTsNCg0KICAJZm9yIChpID0gMDsgaSA8IHZlY3M7IGkr KykNCiAgCQlpb3ZbaV0uaW92X2Jhc2UgPSBpbl9idWYgKyAodmlydF9ib3VuZGFyeSArIDEpICog aTsNCkBAIC03MTksOCArNzM2LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9tYXhfc2VnbWVudHMoKQ0K ICAJfQ0KDQogIAlyZXQgPSBwd3JpdGV2KHRlc3RfZmQsIGlvdiwgbWF4X3NlZ21lbnRzLCAwKTsN Ci0JaWYgKHJldCA8IDApDQotCQllcnIoZXJybm8sICIlczogZmFpbGVkIHRvIHdyaXRlIGJ1ZiIs IF9fZnVuY19fKTsNCisJY2hlY2tfaW92X3Jlc3VsdChyZXQsIGlvdiwgbWF4X3NlZ21lbnRzLCAi d3JpdGV2IiwgX19mdW5jX18pOw0KICB9DQoNCiAgLyoNCkBAIC03MzcsMTAgKzc1Myw4IEBAIHN0 YXRpYyB2b2lkIHRlc3Rfc2luZ2xlX2Jsb2NrKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25l ZCBsb25nIHNpemUpDQogIAltZW1zZXQoaW5fYnVmLCAwLCBidWZfc2l6ZSk7DQoNCiAgCXJldCA9 IHB3cml0ZSh0ZXN0X2ZkLCBvdXRfYnVmICsgb2Zmc2V0LCBzaXplLCAwKTsNCi0JaWYgKHJldCA8 IDApDQotCQllcnIoZXJybm8sICIlczogZmFpbGVkIHRvIHdyaXRlIGJ1ZiIsIF9fZnVuY19fKTsN CisJY2hlY2tfaW9fcmVzdWx0KHJldCwgc2l6ZSwgIndyaXRlIiwgX19mdW5jX18pOw0KDQogIAly ZXQgPSBwcmVhZCh0ZXN0X2ZkLCBpbl9idWYgKyBvZmZzZXQsIHNpemUsIDApOw0KLQlpZiAocmV0 IDwgMCkNCi0JCWVycihlcnJubywgIiVzOiBmYWlsZWQgdG8gcmVhZCBidWYiLCBfX2Z1bmNfXyk7 DQorCWNoZWNrX2lvX3Jlc3VsdChyZXQsIHNpemUsICJyZWFkIiwgX19mdW5jX18pOw0KDQogIAlj b21wYXJlKGluX2J1ZiArIG9mZnNldCwgb3V0X2J1ZiArIG9mZnNldCwgc2l6ZSk7DQpAQCAtNzc2 LDExICs3OTAsMTMgQEAgc3RhdGljIHZvaWQgdGVzdF91bmFsaWduZWRfc2luZ2xlX3ZlY3RvcnMo KQ0KICAJCX0NCg0KICAJCXJldCA9IHB3cml0ZXYodGVzdF9mZCwgaW92LCB2ZWNzLCAwKTsNCi0J CWlmIChyZXQgPCAwKSB7DQotCQkJaWYgKCFzaG91bGRfZmFpbCkNCi0JCQkJZXJyKGVycm5vLCAi JXM6IHVuZXhwZWN0ZWQgZmFpbHVyZSIsIF9fZnVuY19fKTsNCisJCWlmIChyZXQgPCAwICYmIHNo b3VsZF9mYWlsKQ0KICAJCQljb250aW51ZTsNCi0JCX0NCisJCWNoZWNrX2lvdl9yZXN1bHQocmV0 LCBpb3YsIHZlY3MsICJ3cml0ZXYiLCBfX2Z1bmNfXyk7DQoNCiAgCQlpZiAoc2hvdWxkX2ZhaWwp DQogIAkJCWVycngoRUlOVkFMLCAiJXM6IGV4cGVjdGVkIGZhaWx1cmUsIGJ1dCBzdWNjZWVkZWQi LCBfX2Z1bmNfXyk7DQpAQCAtNzkzLDggKzgwMyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfdW5hbGln bmVkX3NpbmdsZV92ZWN0b3JzKCkNCiAgCQl9DQoNCiAgCQlyZXQgPSBwcmVhZHYodGVzdF9mZCwg aW92LCB2ZWNzLCAwKTsNCi0JCWlmIChyZXQgPCAwKQ0KLQkJCWVycihlcnJubywgIiVzOiBmYWls ZWQgdG8gcmVhZCBidWYiLCBfX2Z1bmNfXyk7DQorCQljaGVja19pb3ZfcmVzdWx0KHJldCwgaW92 LCB2ZWNzLCAicmVhZHYiLCBfX2Z1bmNfXyk7DQoNCiAgCQlmb3IgKGogPSAwOyBqIDwgdmVjczsg aisrKSB7DQogIAkJCW9mZnNldCA9IGkgKyBqOw0KQEAgLTgzMywxMSArODQyLDEzIEBAIHN0YXRp YyB2b2lkIHRlc3RfYWxpZ25lZF9taXhlZF92ZWN0b3JzKCkNCiAgCQl9DQoNCiAgCQlyZXQgPSBw d3JpdGV2KHRlc3RfZmQsIGlvdiwgdmVjcywgMCk7DQotCQlpZiAocmV0IDwgMCkgew0KLQkJCWlm ICghc2hvdWxkX2ZhaWwpDQotCQkJCWVycihlcnJubywgIiVzOiB1bmV4cGVjdGVkIGZhaWx1cmUi LCBfX2Z1bmNfXyk7DQorCQlpZiAocmV0IDwgMCAmJiBzaG91bGRfZmFpbCkNCiAgCQkJY29udGlu dWU7DQotCQl9DQorCQljaGVja19pb3ZfcmVzdWx0KHJldCwgaW92LCB2ZWNzLCAid3JpdGV2Iiwg X19mdW5jX18pOw0KDQogIAkJaWYgKHNob3VsZF9mYWlsKQ0KICAJCQllcnJ4KEVJTlZBTCwgIiVz OiBleHBlY3RlZCBmYWlsdXJlLCBidXQgc3VjY2VlZGVkIiwgX19mdW5jX18pOw0KQEAgLTg1MCw4 ICs4NTUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2FsaWduZWRfbWl4ZWRfdmVjdG9ycygpDQogIAkJ fQ0KDQogIAkJcmV0ID0gcHJlYWR2KHRlc3RfZmQsIGlvdiwgdmVjcywgMCk7DQotCQlpZiAocmV0 IDwgMCkNCi0JCQllcnIoZXJybm8sICIlczogZmFpbGVkIHRvIHJlYWQgYnVmIiwgX19mdW5jX18p Ow0KKwkJY2hlY2tfaW92X3Jlc3VsdChyZXQsIGlvdiwgdmVjcywgInJlYWR2IiwgX19mdW5jX18p Ow0KDQogIAkJZm9yIChqID0gMDsgaiA8IHZlY3M7IGorKykgew0KICAJCQlvZmZzZXQgPSAoaSAr IGopICogcGFnZXNpemU7DQpAQCAtODc1LDggKzg3OSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfbWF4 X2J5dGVzKCkNCiAgCX0NCg0KICAJcmV0ID0gcHdyaXRldih0ZXN0X2ZkLCBpb3YsIHZlY3MsIDAp Ow0KLQlpZiAocmV0IDwgMCkNCi0JCWVycihlcnJubywgIiVzOiBmYWlsZWQgdG8gd3JpdGUgYnVm IiwgX19mdW5jX18pOw0KKwljaGVja19pb3ZfcmVzdWx0KHJldCwgaW92LCB2ZWNzLCAid3JpdGV2 IiwgX19mdW5jX18pOw0KICB9DQoNCiAgc3RhdGljIHZvaWQgdGVzdF9tYXhfYnl0ZXNfcGx1c19v bmUoKQ0KQEAgLTg5Myw4ICs4OTYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X21heF9ieXRlc19wbHVz X29uZSgpDQogIAl9DQoNCiAgCXJldCA9IHB3cml0ZXYodGVzdF9mZCwgaW92LCB2ZWNzLCAwKTsN Ci0JaWYgKHJldCA8IDApDQotCQllcnIoZXJybm8sICIlczogZmFpbGVkIHRvIHdyaXRlIGJ1ZiIs IF9fZnVuY19fKTsNCisJY2hlY2tfaW92X3Jlc3VsdChyZXQsIGlvdiwgdmVjcywgIndyaXRldiIs IF9fZnVuY19fKTsNCiAgfQ0KDQogIHN0YXRpYyB2b2lkIHRlc3RfbWF4X2J5dGVzX21pbnVzX29u ZSgpDQpAQCAtOTA5LDggKzkxMSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfbWF4X2J5dGVzX21pbnVz X29uZSgpDQogIAl9DQoNCiAgCXJldCA9IHB3cml0ZXYodGVzdF9mZCwgaW92LCB2ZWNzLCAwKTsN Ci0JaWYgKHJldCA8IDApDQotCQllcnIoZXJybm8sICIlczogZmFpbGVkIHRvIHdyaXRlIGJ1ZiIs IF9fZnVuY19fKTsNCisJY2hlY2tfaW92X3Jlc3VsdChyZXQsIGlvdiwgdmVjcywgIndyaXRldiIs IF9fZnVuY19fKTsNCiAgfQ0KDQogIHN0YXRpYyB2b2lkIHJ1bl90ZXN0cygpDQoNCi1jaw0KDQoN Cg==