From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 19957C43387 for ; Mon, 14 Jan 2019 20:08:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id AA01E20656 for ; Mon, 14 Jan 2019 20:08:31 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="zPqP+uPG" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726982AbfANUI3 (ORCPT ); Mon, 14 Jan 2019 15:08:29 -0500 Received: from mail-eopbgr730067.outbound.protection.outlook.com ([40.107.73.67]:21584 "EHLO NAM05-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726773AbfANUI3 (ORCPT ); Mon, 14 Jan 2019 15:08:29 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XQ6dUmMeSmxljiNylAvmTDWSXvn8zIhNCrAcy+67NFo=; b=zPqP+uPGu2/sx6rJYKdHmMUpH+FKUj2L7i/c3MBrqt0WS4eBosmgfyxBB0IxaSbk2qho8VQMFDXnDziVSgLD/fbsXpXC/OmO7Omrj/5h4Wyly38prrsT++BdRs1MpWKBl/hqlkIFbB224zJ3xeo3VVYB4hK/mCcoLuEBDappu7Q= Received: from DM5PR12MB2471.namprd12.prod.outlook.com (52.132.141.138) by DM5PR12MB1818.namprd12.prod.outlook.com (10.175.91.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1516.19; Mon, 14 Jan 2019 20:08:20 +0000 Received: from DM5PR12MB2471.namprd12.prod.outlook.com ([fe80::18e3:137e:93c9:ca26]) by DM5PR12MB2471.namprd12.prod.outlook.com ([fe80::18e3:137e:93c9:ca26%2]) with mapi id 15.20.1516.019; Mon, 14 Jan 2019 20:08:20 +0000 From: "Moger, Babu" To: Fenghua Yu , Thomas Gleixner , Ingo Molnar , H Peter Anvin , Tony Luck , Peter Zijlstra , Reinette Chatre , James Morse , Xiaochen Shen , Ravi V Shankar , Sai Praneeth Prakhya , Arshiya Hayatkhan Pathan CC: linux-kernel Subject: Re: [PATCH v4 09/10] selftests/resctrl: Add Cache Allocation Technology (CAT) selftest Thread-Topic: [PATCH v4 09/10] selftests/resctrl: Add Cache Allocation Technology (CAT) selftest Thread-Index: AQHUmYz/Qjy4cve/N0WbDaNUHXa9eqWvVqyA Date: Mon, 14 Jan 2019 20:08:20 +0000 Message-ID: References: <1545438038-75107-1-git-send-email-fenghua.yu@intel.com> <1545438038-75107-10-git-send-email-fenghua.yu@intel.com> In-Reply-To: <1545438038-75107-10-git-send-email-fenghua.yu@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: SN4PR0401CA0013.namprd04.prod.outlook.com (2603:10b6:803:21::23) To DM5PR12MB2471.namprd12.prod.outlook.com (2603:10b6:4:b5::10) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Babu.Moger@amd.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [165.204.78.1] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;DM5PR12MB1818;20:y5i7dtJ2snUUt3X6NJWjs31eEhfKStlhvsxIs7wH3c22lmYBPYKhOQPHJ9FP/Pr7i5+o/Rsr91/7weGHpa9XuyX3Dcx/fhqD08LdsSRdtrSFOUdRPp7xvXuizlXvTpK50DB0Xm1bDjeRInb+xNS6qaXyIKmeYjjfky7ZGb39MY+UqRBI7dgc00ZJscVjB1QUlSVwNp2iRzmvyLAmm1+acAO91U/ZmYzu/wXtZ1HNXsbZzdYhcfYOHwcPVQM9/pht x-ms-office365-filtering-correlation-id: 8abb6769-9a6b-4444-2310-08d67a5c0786 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600109)(711020)(4618075)(2017052603328)(7153060)(7193020);SRVR:DM5PR12MB1818; x-ms-traffictypediagnostic: DM5PR12MB1818: x-microsoft-antispam-prvs: x-forefront-prvs: 0917DFAC67 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39850400004)(366004)(346002)(136003)(376002)(396003)(189003)(199004)(6246003)(53936002)(14454004)(36756003)(4326008)(110136005)(8676002)(25786009)(6512007)(3846002)(6116002)(7736002)(8936002)(53946003)(316002)(2906002)(7416002)(68736007)(30864003)(31686004)(305945005)(105586002)(81166006)(81156014)(106356001)(5660300001)(71190400001)(71200400001)(2616005)(186003)(476003)(256004)(14444005)(478600001)(99286004)(72206003)(86362001)(31696002)(229853002)(11346002)(53546011)(52116002)(76176011)(446003)(102836004)(6436002)(386003)(6486002)(6506007)(66066001)(26005)(486006)(97736004)(921003)(1121003)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR12MB1818;H:DM5PR12MB2471.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: jX/e4FfOM/dMWgJIyZHNYnGrx4eDmrHxvYr0/AjnMM58cxUyljveKNoq1ynS/1DtptzlY7eJQZ3raK2gyKfjoU3fA5cZ4ayuwuEsw7TWxdmNOQkX3wJENkLyE1rKdM3SmoZfWOx6YmLq3MLsW5GpUHInNw6HXZ8vvgq5cB5SzIXKcwJ5IfNs7OKlKcvKCMh8ZCIg+o0dT6mjL58Twa4FbjE+TehfZso54UDbJeU3lbGxdhf5k51Jx9G40mwqaMdwElLuh2vZ4eivF394ecY+erocBY2njbGYg1/ebibaESlJKu1YF2eDZ8JyfdOAaJmXsJaeuIyR6fcAeh0hk2r1lRwRhWR/cC0AtvRZhii5BZoMqxjHmd99qErAdcmsHDg5qUjJFaw+9fDQfFFlXfoUtnTVDLLiRKUMM4MorzGLU04= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: <551CA430E86DDD4EBD0D479C054A009A@namprd12.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8abb6769-9a6b-4444-2310-08d67a5c0786 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Jan 2019 20:08:20.4787 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1818 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgRmVuZ2h1YS9TYWkvQXJzaGl5YSwNCg0KRmV3IGNvbW1lbnRzIG9uIHRoaXMgcGF0Y2ggYmVs b3cuIFNvcnJ5IGZvciB0aGUgbGF0ZSBjb21tZW50Lg0KDQpPbiAxMi8yMS8xOCA2OjIwIFBNLCBG ZW5naHVhIFl1IHdyb3RlOg0KPiBGcm9tOiBBcnNoaXlhIEhheWF0a2hhbiBQYXRoYW4gPGFyc2hp eWEuaGF5YXRraGFuLnBhdGhhbkBpbnRlbC5jb20+DQo+IA0KPiBDYWNoZSBBbGxvY2F0aW9uIFRl Y2hub2xvZ3kgKENBVCkgc2VsZnRlc3QgYWxsb2NhdGVzIGEgcG9ydGlvbiBvZg0KPiBsYXN0IGxl dmVsIGNhY2hlIGFuZCBzdGFydHMgYSBiZW5jaG1hcmsgdG8gcmVhZCBlYWNoIGNhY2hlDQo+IGxp bmUgaW4gdGhpcyBwb3J0aW9uIG9mIGNhY2hlLiBNZWFzdXJlIHRoZSBjYWNoZSBtaXNzZXMgaW4g cGVyZiBhbmQNCj4gdGhlIG1pc3NlcyBzaG91bGQgYmUgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBj YWNoZSBsaW5lcyBpbiB0aGlzDQo+IHBvcnRpb24gb2YgY2FjaGUuDQo+IA0KPiBXZSBkb24ndCB1 c2UgQ1FNIHRvIGNhbGN1bGF0ZSBjYWNoZSB1c2FnZSBiZWNhdXNlIHNvbWUgQ0FUIGVuYWJsZWQN Cj4gcGxhdGZvcm1zIGRvbid0IGhhdmUgQ1FNLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogQXJzaGl5 YSBIYXlhdGtoYW4gUGF0aGFuIDxhcnNoaXlhLmhheWF0a2hhbi5wYXRoYW5AaW50ZWwuY29tPg0K PiBTaWduZWQtb2ZmLWJ5OiBTYWkgUHJhbmVldGggUHJha2h5YSA8c2FpLnByYW5lZXRoLnByYWto eWFAaW50ZWwuY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBGZW5naHVhIFl1IDxmZW5naHVhLnl1QGlu dGVsLmNvbT4NCj4gLS0tDQo+ICB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yZXNjdHJsL01ha2Vm aWxlICAgICAgfCAgIDIgKy0NCj4gIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jlc2N0cmwvY2Fj aGUuYyAgICAgICB8IDE3NSArKysrKysrKysrKystDQo+ICB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0 cy9yZXNjdHJsL2NhdF90ZXN0LmMgICAgfCAyNDMgKysrKysrKysrKysrKysrKysrDQo+ICB0b29s cy90ZXN0aW5nL3NlbGZ0ZXN0cy9yZXNjdHJsL2ZpbGxfYnVmLmMgICAgfCAgMTAgKy0NCj4gIHRv b2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jlc2N0cmwvcmVzY3RybC5oICAgICB8ICAgMyArDQo+ICAu Li4vdGVzdGluZy9zZWxmdGVzdHMvcmVzY3RybC9yZXNjdHJsX3Rlc3RzLmMgfCAgMTUgKy0NCj4g IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jlc2N0cmwvcmVzY3RybGZzLmMgICB8ICAgOCArLQ0K PiAgNyBmaWxlcyBjaGFuZ2VkLCA0NDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkNCj4g IGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yZXNjdHJsL2NhdF90 ZXN0LmMNCj4gDQo+IGRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yZXNjdHJs L01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmVzY3RybC9NYWtlZmlsZQ0KPiBp bmRleCA2NjQ1NjFjZDc2ZTYuLjAyODIyMjJiNGMyMiAxMDA2NDQNCj4gLS0tIGEvdG9vbHMvdGVz dGluZy9zZWxmdGVzdHMvcmVzY3RybC9NYWtlZmlsZQ0KPiArKysgYi90b29scy90ZXN0aW5nL3Nl bGZ0ZXN0cy9yZXNjdHJsL01ha2VmaWxlDQo+IEBAIC04LDcgKzgsNyBAQCBhbGw6IHJlc2N0cmxf dGVzdHMNCj4gIA0KPiAgcmVzY3RybF90ZXN0czogKi5vDQo+ICAJJChDQykgJChDRkxBR1MpIC1v IHJlc2N0cmxfdGVzdHMgcmVzY3RybF90ZXN0cy5vIHJlc2N0cmxmcy5vIFwNCj4gLQkJIHJlc2N0 cmxfdmFsLm8gZmlsbF9idWYubyBtYm1fdGVzdC5vIG1iYV90ZXN0Lm8gY2FjaGUubyBjcW1fdGVz dC5vDQo+ICsJCSByZXNjdHJsX3ZhbC5vIGZpbGxfYnVmLm8gbWJtX3Rlc3QubyBtYmFfdGVzdC5v IGNhY2hlLm8gY3FtX3Rlc3QubyBjYXRfdGVzdC5vDQo+ICANCj4gIC5QSE9OWTogY2xlYW4NCj4g IA0KPiBkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmVzY3RybC9jYWNoZS5j IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmVzY3RybC9jYWNoZS5jDQo+IGluZGV4IDEyNTY1 OTBlZjgwNC4uYzk4YjdiYzZhZDljIDEwMDY0NA0KPiAtLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0 ZXN0cy9yZXNjdHJsL2NhY2hlLmMNCj4gKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmVz Y3RybC9jYWNoZS5jDQo+IEBAIC0xMCwxMCArMTAsMTA3IEBAIHN0cnVjdCByZWFkX2Zvcm1hdCB7 DQo+ICAJfSB2YWx1ZXNbMl07DQo+ICB9Ow0KPiAgDQo+ICtzdGF0aWMgc3RydWN0IHBlcmZfZXZl bnRfYXR0ciBwZWFfbGxjX21pc3M7DQo+ICtzdGF0aWMgc3RydWN0IHJlYWRfZm9ybWF0IHJmX2Nx bTsNCj4gK3N0YXRpYyBpbnQgZmRfbG07DQo+ICBjaGFyIGNibV9tYXNrWzI1Nl07DQo+ICB1bnNp Z25lZCBsb25nIGxvbmdfbWFzazsNCj4gIGNoYXIgbGxjX29jY3VwX3BhdGhbMTAyNF07DQo+ICAN Cj4gK3N0YXRpYyB2b2lkIGluaXRpYWxpemVfcGVyZl9ldmVudF9hdHRyKHZvaWQpDQo+ICt7DQo+ ICsJcGVhX2xsY19taXNzLnR5cGUgPSBQRVJGX1RZUEVfSEFSRFdBUkU7DQo+ICsJcGVhX2xsY19t aXNzLnNpemUgPSBzaXplb2Yoc3RydWN0IHBlcmZfZXZlbnRfYXR0cik7DQo+ICsJcGVhX2xsY19t aXNzLnJlYWRfZm9ybWF0ID0gUEVSRl9GT1JNQVRfR1JPVVA7DQo+ICsJcGVhX2xsY19taXNzLmV4 Y2x1ZGVfa2VybmVsID0gMTsNCj4gKwlwZWFfbGxjX21pc3MuZXhjbHVkZV9odiA9IDE7DQo+ICsJ cGVhX2xsY19taXNzLmV4Y2x1ZGVfaWRsZSA9IDE7DQo+ICsJcGVhX2xsY19taXNzLmV4Y2x1ZGVf Y2FsbGNoYWluX2tlcm5lbCA9IDE7DQo+ICsJcGVhX2xsY19taXNzLmluaGVyaXQgPSAxOw0KPiAr CXBlYV9sbGNfbWlzcy5leGNsdWRlX2d1ZXN0ID0gMTsNCj4gKwlwZWFfbGxjX21pc3MuZGlzYWJs ZWQgPSAxOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBpb2N0bF9wZXJmX2V2ZW50X2lvY19y ZXNldF9lbmFibGUodm9pZCkNCj4gK3sNCj4gKwlpb2N0bChmZF9sbSwgUEVSRl9FVkVOVF9JT0Nf UkVTRVQsIDApOw0KPiArCWlvY3RsKGZkX2xtLCBQRVJGX0VWRU5UX0lPQ19FTkFCTEUsIDApOw0K PiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IHBlcmZfZXZlbnRfb3Blbl9sbGNfbWlzcyhwaWRfdCBw aWQsIGludCBjcHVfbm8pDQo+ICt7DQo+ICsJZmRfbG0gPSBwZXJmX2V2ZW50X29wZW4oJnBlYV9s bGNfbWlzcywgcGlkLCBjcHVfbm8sIC0xLA0KPiArCQkJCVBFUkZfRkxBR19GRF9DTE9FWEVDKTsN Cj4gKwlpZiAoZmRfbG0gPT0gLTEpIHsNCj4gKwkJcGVycm9yKCJFcnJvciBvcGVuaW5nIGxlYWRl ciIpOw0KPiArCQljdHJsY19oYW5kbGVyKDAsIE5VTEwsIE5VTEwpOw0KPiArCQlyZXR1cm4gLTE7 DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgaW5p dGlhbGl6ZV9sbGNfcGVyZih2b2lkKQ0KPiArew0KPiArCW1lbXNldCgmcGVhX2xsY19taXNzLCAw LCBzaXplb2Yoc3RydWN0IHBlcmZfZXZlbnRfYXR0cikpOw0KPiArCW1lbXNldCgmcmZfY3FtLCAw LCBzaXplb2Yoc3RydWN0IHJlYWRfZm9ybWF0KSk7DQo+ICsNCj4gKwkvKiBJbml0aWFsaXplIHBl cmZfZXZlbnRfYXR0ciBzdHJ1Y3R1cmVzIGZvciBIV19DQUNIRV9NSVNTRVMgKi8NCj4gKwlpbml0 aWFsaXplX3BlcmZfZXZlbnRfYXR0cigpOw0KPiArDQo+ICsJcGVhX2xsY19taXNzLmNvbmZpZyA9 IFBFUkZfQ09VTlRfSFdfQ0FDSEVfTUlTU0VTOw0KPiArDQo+ICsJcmZfY3FtLm5yID0gMTsNCj4g Kw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IHJlc2V0X2VuYWJsZV9s bGNfcGVyZihwaWRfdCBwaWQsIGludCBjcHVfbm8pDQo+ICt7DQo+ICsJaW50IHJldCA9IDA7DQo+ ICsNCj4gKwlyZXQgPSBwZXJmX2V2ZW50X29wZW5fbGxjX21pc3MocGlkLCBjcHVfbm8pOw0KPiAr CWlmIChyZXQgPCAwKQ0KPiArCQlyZXR1cm4gcmV0Ow0KPiArDQo+ICsJLyogU3RhcnQgY291bnRl cnMgdG8gbG9nIHZhbHVlcyAqLw0KPiArCWlvY3RsX3BlcmZfZXZlbnRfaW9jX3Jlc2V0X2VuYWJs ZSgpOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gKy8qDQo+ICsgKiBnZXRfbGxj X3BlcmY6CWxsYyBjYWNoZSBtaXNzIHRocm91Z2ggcGVyZiBldmVudHMNCj4gKyAqIEBjcHVfbm86 CQlDUFUgbnVtYmVyIHRoYXQgdGhlIGJlbmNobWFyayBQSUQgaXMgYmluZGVkIHRvDQo+ICsgKg0K PiArICogUGVyZiBldmVudHMgbGlrZSBIV19DQUNIRV9NSVNTRVMgY291bGQgYmUgdXNlZCB0byB2 YWxpZGF0ZSBudW1iZXIgb2YNCj4gKyAqIGNhY2hlIGxpbmVzIGFsbG9jYXRlZC4NCj4gKyAqDQo+ ICsgKiBSZXR1cm46ID0wIG9uIHN1Y2Nlc3MuICA8MCBvbiBmYWlsdXJlLg0KPiArICovDQo+ICtz dGF0aWMgaW50IGdldF9sbGNfcGVyZih1bnNpZ25lZCBsb25nICpsbGNfcGVyZl9taXNzKQ0KPiAr ew0KPiArCV9fdTY0IHRvdGFsX21pc3NlczsNCj4gKw0KPiArCS8qIFN0b3AgY291bnRlcnMgYWZ0 ZXIgb25lIHNwYW4gdG8gZ2V0IG1pc3MgcmF0ZSAqLw0KPiArDQo+ICsJaW9jdGwoZmRfbG0sIFBF UkZfRVZFTlRfSU9DX0RJU0FCTEUsIDApOw0KPiArDQo+ICsJaWYgKHJlYWQoZmRfbG0sICZyZl9j cW0sIHNpemVvZihzdHJ1Y3QgcmVhZF9mb3JtYXQpKSA9PSAtMSkgew0KPiArCQlwZXJyb3IoIkNv dWxkIG5vdCBnZXQgbGxjIG1pc3NlcyB0aHJvdWdoIHBlcmYiKTsNCj4gKw0KPiArCQlyZXR1cm4g LTE7DQo+ICsJfQ0KPiArDQo+ICsJdG90YWxfbWlzc2VzID0gcmZfY3FtLnZhbHVlc1swXS52YWx1 ZTsNCj4gKw0KPiArCWNsb3NlKGZkX2xtKTsNCj4gKw0KPiArCSpsbGNfcGVyZl9taXNzID0gdG90 YWxfbWlzc2VzOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gIC8qDQo+ICAgKiBH ZXQgTExDIE9jY3VwYW5jeSBhcyByZXBvcnRlZCBieSBSRVNDVFJMIEZTDQo+ICAgKiBGb3IgQ1FN LA0KPiBAQCAtODIsOSArMTc5LDE5IEBAIHN0YXRpYyBpbnQgcHJpbnRfcmVzdWx0c19jYWNoZShj aGFyICpmaWxlbmFtZSwgaW50IGJtX3BpZCwNCj4gIA0KPiAgaW50IG1lYXN1cmVfY2FjaGVfdmFs cyhzdHJ1Y3QgcmVzY3RybF92YWxfcGFyYW0gKnBhcmFtLCBpbnQgYm1fcGlkKQ0KPiAgew0KPiAt CXVuc2lnbmVkIGxvbmcgbGxjX29jY3VfcmVzYyA9IDAsIGxsY192YWx1ZSA9IDA7DQo+ICsJdW5z aWduZWQgbG9uZyBsbGNfcGVyZl9taXNzID0gMCwgbGxjX29jY3VfcmVzYyA9IDAsIGxsY192YWx1 ZSA9IDA7DQo+ICAJaW50IHJldDsNCj4gIA0KPiArCS8qDQo+ICsJICogTWVhc3VyZSBjYWNoZSBt aXNzIGZyb20gcGVyZi4NCj4gKwkgKi8NCj4gKwlpZiAoIXN0cmNtcChwYXJhbS0+cmVzY3RybF92 YWwsICJjYXQiKSkgew0KPiArCQlyZXQgPSBnZXRfbGxjX3BlcmYoJmxsY19wZXJmX21pc3MpOw0K PiArCQlpZiAocmV0IDwgMCkNCj4gKwkJCXJldHVybiByZXQ7DQo+ICsJCWxsY192YWx1ZSA9IGxs Y19wZXJmX21pc3M7DQo+ICsJfQ0KPiArDQo+ICAJLyoNCj4gIAkgKiBNZWFzdXJlIGxsYyBvY2N1 cGFuY3kgZnJvbSByZXNjdHJsLg0KPiAgCSAqLw0KPiBAQCAtMTAwLDMgKzIwNyw2OSBAQCBpbnQg bWVhc3VyZV9jYWNoZV92YWxzKHN0cnVjdCByZXNjdHJsX3ZhbF9wYXJhbSAqcGFyYW0sIGludCBi bV9waWQpDQo+ICANCj4gIAlyZXR1cm4gMDsNCj4gIH0NCj4gKw0KPiArLyoNCj4gKyAqIGNhY2hl X3ZhbDoJCWV4ZWN1dGUgYmVuY2htYXJrIGFuZCBtZWFzdXJlIExMQyBvY2N1cGFuY3kgcmVzY3Ry bA0KPiArICogYW5kIHBlcmYgY2FjaGUgbWlzcyBmb3IgdGhlIGJlbmNobWFyaw0KPiArICogQHBh cmFtOgkJcGFyYW1ldGVycyBwYXNzZWQgdG8gY2FjaGVfdmFsKCkNCj4gKyAqDQo+ICsgKiBSZXR1 cm46CQkwIG9uIHN1Y2Nlc3MuIG5vbi16ZXJvIG9uIGZhaWx1cmUuDQo+ICsgKi8NCj4gK2ludCBj YXRfdmFsKHN0cnVjdCByZXNjdHJsX3ZhbF9wYXJhbSAqcGFyYW0pDQo+ICt7DQo+ICsJaW50IG1h bGxvY19hbmRfaW5pdF9tZW1vcnkgPSAxLCBtZW1mbHVzaCA9IDEsIG9wZWFydGlvbiA9IDEsIHJl dCA9IDA7DQo+ICsJY2hhciAqcmVzY3RybF92YWwgPSBwYXJhbS0+cmVzY3RybF92YWw7DQo+ICsJ cGlkX3QgYm1fcGlkOw0KPiArDQo+ICsJaWYgKHN0cmNtcChwYXJhbS0+ZmlsZW5hbWUsICIiKSA9 PSAwKQ0KPiArCQlzcHJpbnRmKHBhcmFtLT5maWxlbmFtZSwgInN0ZGlvIik7DQo+ICsNCj4gKwli bV9waWQgPSBnZXRwaWQoKTsNCj4gKw0KPiArCS8qIFRhc2tzZXQgYmVuY2htYXJrIHRvIHNwZWNp ZmllZCBjcHUgKi8NCj4gKwlyZXQgPSB0YXNrc2V0X2JlbmNobWFyayhibV9waWQsIHBhcmFtLT5j cHVfbm8pOw0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4gKwkvKiBXcml0 ZSBiZW5jaG1hcmsgdG8gc3BlY2lmaWVkIGNvbl9tb24gZ3JwLCBtb25fZ3JwIGluIHJlc2N0cmwg RlMqLw0KPiArCXJldCA9IHdyaXRlX2JtX3BpZF90b19yZXNjdHJsKGJtX3BpZCwgcGFyYW0tPmN0 cmxncnAsIHBhcmFtLT5tb25ncnAsDQo+ICsJCQkJICAgICAgcmVzY3RybF92YWwpOw0KPiArCWlm IChyZXQpDQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4gKwlpZiAoKHN0cmNtcChyZXNjdHJsX3Zh bCwgImNhdCIpID09IDApKSB7DQo+ICsJCXJldCA9IGluaXRpYWxpemVfbGxjX3BlcmYoKTsNCj4g KwkJaWYgKHJldCkNCj4gKwkJCXJldHVybiByZXQ7DQo+ICsJfQ0KPiArDQo+ICsJLyogVGVzdCBy dW5zIHVudGlsIHRoZSBjYWxsYmFjayBzZXR1cCgpIHRlbGxzIHRoZSB0ZXN0IHRvIHN0b3AuICov DQo+ICsJd2hpbGUgKDEpIHsNCj4gKwkJaWYgKHN0cmNtcChyZXNjdHJsX3ZhbCwgImNhdCIpID09 IDApIHsNCj4gKwkJCXJldCA9IHBhcmFtLT5zZXR1cCgxLCBwYXJhbSk7DQo+ICsJCQlpZiAocmV0 KSB7DQo+ICsJCQkJcmV0ID0gMDsNCj4gKwkJCQlicmVhazsNCj4gKwkJCX0NCj4gKwkJCXJldCA9 IHJlc2V0X2VuYWJsZV9sbGNfcGVyZihibV9waWQsIHBhcmFtLT5jcHVfbm8pOw0KPiArCQkJaWYg KHJldCkNCj4gKwkJCQlicmVhazsNCj4gKw0KPiArCQkJaWYgKHJ1bl9maWxsX2J1ZihwYXJhbS0+ c3BhbiwgbWFsbG9jX2FuZF9pbml0X21lbW9yeSwNCj4gKwkJCQkJIG1lbWZsdXNoLCBvcGVhcnRp b24sIHJlc2N0cmxfdmFsKSkgew0KPiArCQkJCWZwcmludGYoc3RkZXJyLCAiRXJyb3ItcnVubmlu ZyBmaWxsIGJ1ZmZlclxuIik7DQo+ICsJCQkJcmV0ID0gLTE7DQo+ICsJCQkJYnJlYWs7DQo+ICsJ CQl9DQo+ICsNCj4gKwkJCXNsZWVwKDEpOw0KPiArCQkJcmV0ID0gbWVhc3VyZV9jYWNoZV92YWxz KHBhcmFtLCBibV9waWQpOw0KPiArCQkJaWYgKHJldCkNCj4gKwkJCQlicmVhazsNCj4gKwkJfSBl bHNlIHsNCj4gKwkJCWJyZWFrOw0KPiArCQl9DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIHJldDsN Cj4gK30NCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jlc2N0cmwvY2F0 X3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jlc2N0cmwvY2F0X3Rlc3QuYw0KPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLjU3ZDUwMWQ4YTE1Mw0K PiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jlc2N0cmwv Y2F0X3Rlc3QuYw0KPiBAQCAtMCwwICsxLDI0MyBAQA0KPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjANCj4gKy8qDQo+ICsgKiBDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kg KENBVCkgdGVzdA0KPiArICoNCj4gKyAqIENvcHlyaWdodCAoQykgMjAxOCBJbnRlbCBDb3Jwb3Jh dGlvbg0KPiArICoNCj4gKyAqIEF1dGhvcnM6DQo+ICsgKiAgICBBcnNoaXlhIEhheWF0a2hhbiBQ YXRoYW4gPGFyc2hpeWEuaGF5YXRraGFuLnBhdGhhbkBpbnRlbC5jb20+DQo+ICsgKiAgICBTYWkg UHJhbmVldGggUHJha2h5YSA8c2FpLnByYW5lZXRoLnByYWtoeWFAaW50ZWwuY29tPiwNCj4gKyAq ICAgIEZlbmdodWEgWXUgPGZlbmdodWEueXVAaW50ZWwuY29tPg0KPiArICovDQo+ICsjaW5jbHVk ZSAicmVzY3RybC5oIg0KPiArI2luY2x1ZGUgPHVuaXN0ZC5oPg0KPiArDQo+ICsjZGVmaW5lIFJF U1VMVF9GSUxFX05BTUUxCSJyZXN1bHRfY2F0MSINCj4gKyNkZWZpbmUgUkVTVUxUX0ZJTEVfTkFN RTIJInJlc3VsdF9jYXQyIg0KPiArI2RlZmluZSBOVU1fT0ZfUlVOUwkJNQ0KPiArI2RlZmluZSBN QVhfRElGRl9QRVJDRU5UCTQNCj4gKyNkZWZpbmUgTUFYX0RJRkYJCTEwMDAwMDANCj4gKw0KPiAr aW50IGNvdW50X29mX2JpdHM7DQo+ICtjaGFyIGNibV9tYXNrWzI1Nl07DQo+ICt1bnNpZ25lZCBs b25nIGxvbmdfbWFzazsNCj4gK3Vuc2lnbmVkIGxvbmcgY2FjaGVfc2l6ZTsNCj4gKw0KPiArLyoN Cj4gKyAqIENoYW5nZSBzY2hlbWF0YS4gV3JpdGUgc2NoZW1hdGEgdG8gc3BlY2lmaWVkDQo+ICsg KiBjb25fbW9uIGdycCwgbW9uX2dycCBpbiByZXNjdHJsIEZTLg0KPiArICogUnVuIDUgdGltZXMg aW4gb3JkZXIgdG8gZ2V0IGF2ZXJhZ2UgdmFsdWVzLg0KPiArICovDQo+ICtzdGF0aWMgaW50IGNh dF9zZXR1cChpbnQgbnVtLCAuLi4pDQo+ICt7DQo+ICsJc3RydWN0IHJlc2N0cmxfdmFsX3BhcmFt ICpwOw0KPiArCWNoYXIgc2NoZW1hdGFbNjRdOw0KPiArCXZhX2xpc3QgcGFyYW07DQo+ICsJaW50 IHJldCA9IDA7DQo+ICsNCj4gKwl2YV9zdGFydChwYXJhbSwgbnVtKTsNCj4gKwlwID0gdmFfYXJn KHBhcmFtLCBzdHJ1Y3QgcmVzY3RybF92YWxfcGFyYW0gKik7DQo+ICsJdmFfZW5kKHBhcmFtKTsN Cj4gKw0KPiArCS8qIFJ1biBOVU1fT0ZfUlVOUyB0aW1lcyAqLw0KPiArCWlmIChwLT5udW1fb2Zf cnVucyA+PSBOVU1fT0ZfUlVOUykNCj4gKwkJcmV0dXJuIC0xOw0KPiArDQo+ICsJaWYgKHAtPm51 bV9vZl9ydW5zID09IDApIHsNCj4gKwkJc3ByaW50ZihzY2hlbWF0YSwgIiVseCIsIHAtPm1hc2sp Ow0KPiArCQlyZXQgPSB3cml0ZV9zY2hlbWF0YShwLT5jdHJsZ3JwLCBzY2hlbWF0YSwgcC0+Y3B1 X25vLA0KPiArCQkJCSAgICAgcC0+cmVzY3RybF92YWwpOw0KPiArCX0NCj4gKwlwLT5udW1fb2Zf cnVucysrOw0KPiArDQo+ICsJcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQg c2hvd19jYWNoZV9pbmZvKHVuc2lnbmVkIGxvbmcgc3VtX2xsY19wZXJmX21pc3MsIGludCBub19v Zl9iaXRzLA0KPiArCQkJICAgIHVuc2lnbmVkIGxvbmcgc3BhbikNCj4gK3sNCj4gKwl1bnNpZ25l ZCBsb25nIGFsbG9jYXRlZF9jYWNoZV9saW5lcyA9IHNwYW4gLyA2NDsNCj4gKwl1bnNpZ25lZCBs b25nIGF2Z19sbGNfcGVyZl9taXNzID0gMDsNCj4gKwlmbG9hdCBkaWZmX3BlcmNlbnQ7DQo+ICsN Cj4gKwlhdmdfbGxjX3BlcmZfbWlzcyA9IHN1bV9sbGNfcGVyZl9taXNzIC8gKE5VTV9PRl9SVU5T IC0gMSk7DQo+ICsJZGlmZl9wZXJjZW50ID0gKChmbG9hdClhbGxvY2F0ZWRfY2FjaGVfbGluZXMg LSBhdmdfbGxjX3BlcmZfbWlzcykgLw0KPiArCQkJCWFsbG9jYXRlZF9jYWNoZV9saW5lcyAqIDEw MDsNCj4gKwlwcmludGYoIlJlc3VsdHMgYXJlIGRpc3BsYXllZCBpbiAoQnl0ZXMpXG4iKTsNCj4g KwlwcmludGYoIlxuTnVtYmVyIG9mIGJpdHM6ICVkIFx0Iiwgbm9fb2ZfYml0cyk7DQo+ICsJcHJp bnRmKCJBdmdfbGxjX3BlcmZfbWlzczogJWx1IFx0IiwgYXZnX2xsY19wZXJmX21pc3MpOw0KPiAr CXByaW50ZigiQWxsb2NhdGVkIGNhY2hlIGxpbmVzOiAlbHUgXHQiLCBhbGxvY2F0ZWRfY2FjaGVf bGluZXMpOw0KPiArCXByaW50ZigiUGVyY2VudCBkaWZmPSVkIFx0IiwgYWJzKChpbnQpZGlmZl9w ZXJjZW50KSk7DQo+ICsNCj4gKwlpZiAoYWJzKChpbnQpZGlmZl9wZXJjZW50KSA+IE1BWF9ESUZG X1BFUkNFTlQpDQo+ICsJCXByaW50ZigiRmFpbGVkXG4iKTsNCj4gKwllbHNlDQo+ICsJCXByaW50 ZigiUGFzc2VkXG4iKTsNCg0KSG93IGRvIHlvdSBkZWNpZGUgcGFzcyBvciBmYWlsIGJhc2VkIG9u IE1BWF9ESUZGX1BFUkNFTlQoNCk/IElzIHRoaXMNCmV4cGxhaW5lZCBzb21ld2hlcmUgaW4gdGhl IHNwZWNzPw0KDQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgY2hlY2tfcmVzdWx0cyhzdHJ1Y3Qg cmVzY3RybF92YWxfcGFyYW0gKnBhcmFtKQ0KPiArew0KPiArCWNoYXIgKnRva2VuX2FycmF5Wzhd LCB0ZW1wWzUxMl07DQo+ICsJdW5zaWduZWQgbG9uZyBzdW1fbGxjX3BlcmZfbWlzcyA9IDA7DQo+ ICsJaW50IHJ1bnMgPSAwLCBub19vZl9iaXRzID0gMDsNCj4gKwlGSUxFICpmcDsNCj4gKw0KPiAr CXByaW50ZigiXG5DaGVja2luZyBmb3IgcGFzcy9mYWlsXG4iKTsNCj4gKwlmcCA9IGZvcGVuKHBh cmFtLT5maWxlbmFtZSwgInIiKTsNCj4gKwlpZiAoIWZwKSB7DQo+ICsJCXBlcnJvcigiRXJyb3Ig aW4gb3BlbmluZyBmaWxlXG4iKTsNCj4gKw0KPiArCQlyZXR1cm4gZXJybm87DQo+ICsJfQ0KPiAr DQo+ICsJd2hpbGUgKGZnZXRzKHRlbXAsIDEwMjQsIGZwKSkgew0KPiArCQljaGFyICp0b2tlbiA9 IHN0cnRvayh0ZW1wLCAiOlx0Iik7DQo+ICsJCWludCBmaWVsZHMgPSAwOw0KPiArDQo+ICsJCXdo aWxlICh0b2tlbikgew0KPiArCQkJdG9rZW5fYXJyYXlbZmllbGRzKytdID0gdG9rZW47DQo+ICsJ CQl0b2tlbiA9IHN0cnRvayhOVUxMLCAiOlx0Iik7DQo+ICsJCX0NCj4gKwkJLyoNCj4gKwkJICog RGlzY2FyZCB0aGUgZmlyc3QgdmFsdWUgd2hpY2ggaXMgaW5hY2N1cmF0ZSBkdWUgdG8gbW9uaXRv cmluZw0KPiArCQkgKiBzZXR1cCB0cmFuc2l0aW9uIHBoYXNlLg0KPiArCQkgKi8NCj4gKwkJaWYg KHJ1bnMgPiAwKQ0KPiArCQkJc3VtX2xsY19wZXJmX21pc3MgKz0gYXRvbCh0b2tlbl9hcnJheVsz XSk7DQo+ICsJCXJ1bnMrKzsNCj4gKwl9DQo+ICsNCj4gKwlmY2xvc2UoZnApOw0KPiArCW5vX29m X2JpdHMgPSBjb3VudF9iaXRzKHBhcmFtLT5tYXNrKTsNCj4gKw0KPiArCXNob3dfY2FjaGVfaW5m byhzdW1fbGxjX3BlcmZfbWlzcywgbm9fb2ZfYml0cywgcGFyYW0tPnNwYW4pOw0KPiArDQo+ICsJ cmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3ZvaWQgY2F0X3Rlc3RfY2xlYW51cCh2b2lkKQ0KPiAr ew0KPiArCXJlbW92ZShSRVNVTFRfRklMRV9OQU1FMSk7DQo+ICsJcmVtb3ZlKFJFU1VMVF9GSUxF X05BTUUyKTsNCj4gK30NCj4gKw0KPiAraW50IGNhdF9wZXJmX21pc3NfdmFsKGludCBjb3JlX2lk LCBpbnQgbikNCj4gK3sNCj4gKwl1bnNpZ25lZCBsb25nIGxfbWFzaywgbF9tYXNrXzE7DQo+ICsJ aW50IHJldCwgcGlwZWZkWzJdLCBwaXBlX21lc3NhZ2UsIG11bV9yZXNjdHJsZnMsIHNpYmxpbmdf Y29yZV9pZDsNCj4gKwlwaWRfdCBibV9waWQ7DQo+ICsNCj4gKwljYWNoZV9zaXplID0gMDsNCj4g KwltdW1fcmVzY3RybGZzID0gMTsNCj4gKw0KPiArCXJldCA9IHJlbW91bnRfcmVzY3RybGZzKG11 bV9yZXNjdHJsZnMpOw0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4gKwly ZXQgPSB2YWxpZGF0ZV9yZXNjdHJsX2ZlYXR1cmVfcmVxdWVzdCgiY2F0Iik7DQo+ICsJaWYgKHJl dCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCS8qIEdldCBkZWZhdWx0IGNibSBtYXNrIGZv ciBMMyBjYWNoZSAqLw0KPiArCXJldCA9IGdldF9jYm1fbWFzaygiTDMiKTsNCj4gKwlpZiAocmV0 KQ0KPiArCQlyZXR1cm4gcmV0Ow0KPiArDQo+ICsJbG9uZ19tYXNrID0gc3RydG91bChjYm1fbWFz aywgTlVMTCwgMTYpOw0KPiArDQo+ICsJLyogR2V0IEwzIGNhY2hlIHNpemUgKi8NCj4gKwlyZXQg PSBnZXRfY2FjaGVfc2l6ZShjb3JlX2lkLCAzLCAmY2FjaGVfc2l6ZSk7DQo+ICsJaWYgKHJldCkN Cj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCS8qIEdldCBtYXggbnVtYmVyIG9mIGJpdHMgZnJv bSBkZWZhdWx0LWNhYm0gbWFzayAqLw0KPiArCWNvdW50X29mX2JpdHMgPSBjb3VudF9iaXRzKGxv bmdfbWFzayk7DQo+ICsNCj4gKwlpZiAobiA8IDEgfHwgbiA+IGNvdW50X29mX2JpdHMgLSAxKSB7 DQo+ICsJCXByaW50ZigiSW52YWxpZCBpbnB1dCB2YWx1ZSBmb3Igbm9fb2ZfYml0cyBuIVxuIik7 DQo+ICsJCXByaW50ZigiUGxlYXNlIEVudGVyIHZhbHVlIGluIHJhbmdlIDEgdG8gJWRcbiIsDQo+ ICsJCSAgICAgICBjb3VudF9vZl9iaXRzIC0gMSk7DQo+ICsJCXJldHVybiAtMTsNCj4gKwl9DQo+ ICsNCj4gKwkvKiBHZXQgY29yZSBpZCBmcm9tIHNhbWUgc29ja2V0IGZvciBydW5uaW5nIGFub3Ro ZXIgdGhyZWFkICovDQo+ICsJc2libGluZ19jb3JlX2lkID0gZ2V0X2NvcmVfc2libGluZyhjb3Jl X2lkKTsNCj4gKwlpZiAoc2libGluZ19jb3JlX2lkIDwgMCkNCj4gKwkJcmV0dXJuIC0xOw0KPiAr DQo+ICsJc3RydWN0IHJlc2N0cmxfdmFsX3BhcmFtIHBhcmFtID0gew0KPiArCQkucmVzY3RybF92 YWwJPSAiY2F0IiwNCj4gKwkJLmNwdV9ubwkJPSBjb3JlX2lkLA0KPiArCQkubXVtX3Jlc2N0cmxm cwk9IDAsDQo+ICsJCS5zZXR1cAkJPSBjYXRfc2V0dXAsDQo+ICsJfTsNCj4gKw0KPiArCWxfbWFz ayA9IGxvbmdfbWFzayA+PiBuOw0KPiArCWxfbWFza18xID0gfmxfbWFzayAmIGxvbmdfbWFzazsN Cj4gKw0KPiArCS8qIFNldCBwYXJhbSB2YWx1ZXMgZm9yIHBhcmVudCB0aHJlYWQgd2hpY2ggd2ls bCBiZSBhbGxvY2F0ZWQgYml0bWFzaw0KPiArCSAqIHdpdGggKG1heF9iaXRzIC0gbikgYml0cw0K PiArCSAqLw0KPiArCXBhcmFtLnNwYW4gPSBjYWNoZV9zaXplICogKGNvdW50X29mX2JpdHMgLSBu KSAvIGNvdW50X29mX2JpdHM7DQo+ICsJc3RyY3B5KHBhcmFtLmN0cmxncnAsICJjMiIpOw0KPiAr CXN0cmNweShwYXJhbS5tb25ncnAsICJtMiIpOw0KPiArCXN0cmNweShwYXJhbS5maWxlbmFtZSwg UkVTVUxUX0ZJTEVfTkFNRTEpOw0KDQpTaG91bGRuJ3QgdGhpcyBiZQ0KICAgICAgICBzdHJjcHko cGFyYW0uZmlsZW5hbWUsIFJFU1VMVF9GSUxFX05BTUUyKTsNCg0KPiArCXBhcmFtLm1hc2sgPSBs X21hc2s7DQo+ICsJcGFyYW0ubnVtX29mX3J1bnMgPSAwOw0KPiArDQo+ICsJaWYgKHBpcGUocGlw ZWZkKSkgew0KPiArCQlwZXJyb3IoIlVuYWJsZSB0byBjcmVhdGUgcGlwZSIpOw0KPiArCQlyZXR1 cm4gLTE7DQo+ICsJfQ0KPiArCXJldCA9IHJlbW91bnRfcmVzY3RybGZzKG11bV9yZXNjdHJsZnMp Ow0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4gKwlibV9waWQgPSBmb3Jr KCk7DQo+ICsNCj4gKwkvKiBTZXQgcGFyYW0gdmFsdWVzIGZvciBjaGlsZCB0aHJlYWQgd2hpY2gg d2lsbCBiZSBhbGxvY2F0ZWQgYml0bWFzaw0KPiArCSAqIHdpdGggbiBiaXRzDQo+ICsJICovDQo+ ICsJaWYgKGJtX3BpZCA9PSAwKSB7DQo+ICsJCXBhcmFtLm1hc2sgPSBsX21hc2tfMTsNCj4gKwkJ c3RyY3B5KHBhcmFtLmN0cmxncnAsICJjMSIpOw0KPiArCQlzdHJjcHkocGFyYW0ubW9uZ3JwLCAi bTEiKTsNCj4gKwkJcGFyYW0uc3BhbiA9IGNhY2hlX3NpemUgKiBuIC8gY291bnRfb2ZfYml0czsN Cj4gKwkJc3RyY3B5KHBhcmFtLmZpbGVuYW1lLCBSRVNVTFRfRklMRV9OQU1FMik7DQpTaG91bGRu J3QgdGhpcyBiZQ0KICAgICAgICBzdHJjcHkocGFyYW0uZmlsZW5hbWUsIFJFU1VMVF9GSUxFX05B TUUxKTsNCg0KPiArCQlwYXJhbS5udW1fb2ZfcnVucyA9IDA7DQo+ICsJCXBhcmFtLmNwdV9ubyA9 IHNpYmxpbmdfY29yZV9pZDsNCj4gKwl9DQo+ICsNCj4gKwlyZW1vdmUocGFyYW0uZmlsZW5hbWUp Ow0KPiArDQo+ICsJcmV0ID0gY2F0X3ZhbCgmcGFyYW0pOw0KPiArCWlmIChyZXQpDQo+ICsJCXJl dHVybiByZXQ7DQo+ICsNCj4gKwlyZXQgPSBjaGVja19yZXN1bHRzKCZwYXJhbSk7DQoNCkluIGdl bmVyYWwgd2hhdCBpcyB0aGUgcHVycG9zZSBoZXJlIHRvIHJ1biB0aGUgYmVuY2htYXJrIG9uIGJv dGggcGFyZW50DQphbmQgY2hpbGQ/IEkgc2VlIHNhbWUgYmVuY2htYXJrIGlzIHJ1biBvbiBib3Ro IHBhcmVudCBhbmQgY2hpbGQuIFdoeSBjYW50DQpqdXN0IHJ1biB0aGUgYmVuY2htYXJrIG9uIHBh cmVudCBhbmQgcHJpbnQgdGhlIHJlc3VsdD8gT3IgRGlkIGkgbWlzcw0Kc29tZXRoaW5nPw0KDQoN Cg0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4gKwlpZiAoYm1fcGlkID09 IDApIHsNCj4gKwkJLyogVGVsbCBwYXJlbnQgdGhhdCBjaGlsZCBpcyByZWFkeSAqLw0KPiArCQlj bG9zZShwaXBlZmRbMF0pOw0KPiArCQlwaXBlX21lc3NhZ2UgPSAxOw0KPiArCQl3cml0ZShwaXBl ZmRbMV0sICZwaXBlX21lc3NhZ2UsIHNpemVvZihwaXBlX21lc3NhZ2UpKTsNCj4gKwkJY2xvc2Uo cGlwZWZkWzFdKTsNCj4gKwkJd2hpbGUgKDEpOw0KPiArCX0gZWxzZSB7DQo+ICsJCS8qIFBhcmVu dCB3YWl0cyBmb3IgY2hpbGQgdG8gYmUgcmVhZHkuICovDQo+ICsJCWNsb3NlKHBpcGVmZFsxXSk7 DQo+ICsJCXBpcGVfbWVzc2FnZSA9IDA7DQo+ICsJCXdoaWxlIChwaXBlX21lc3NhZ2UgIT0gMSkN Cj4gKwkJCXJlYWQocGlwZWZkWzBdLCAmcGlwZV9tZXNzYWdlLCBzaXplb2YocGlwZV9tZXNzYWdl KSk7DQo+ICsJCWNsb3NlKHBpcGVmZFswXSk7DQo+ICsJCWtpbGwoYm1fcGlkLCBTSUdLSUxMKTsN Cj4gKwl9DQo+ICsNCj4gKwljYXRfdGVzdF9jbGVhbnVwKCk7DQo+ICsJaWYgKGJtX3BpZCkNCj4g KwkJdW1vdW50X3Jlc2N0cmxmcygpOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+IGRpZmYg LS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yZXNjdHJsL2ZpbGxfYnVmLmMgYi90b29s cy90ZXN0aW5nL3NlbGZ0ZXN0cy9yZXNjdHJsL2ZpbGxfYnVmLmMNCj4gaW5kZXggN2MzNTc5YTNl ZjA2Li42NzFkODAxODhhNTAgMTAwNjQ0DQo+IC0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3Rz L3Jlc2N0cmwvZmlsbF9idWYuYw0KPiArKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yZXNj dHJsL2ZpbGxfYnVmLmMNCj4gQEAgLTEwNSw4ICsxMDUsMTEgQEAgdm9pZCBmaWxsX29uZV9zcGFu X3dyaXRlKHVuc2lnbmVkIGNoYXIgKnN0YXJ0X3B0ciwgdW5zaWduZWQgY2hhciAqZW5kX3B0cikN Cj4gIHN0YXRpYyBpbnQgZmlsbF9jYWNoZV9yZWFkKHVuc2lnbmVkIGNoYXIgKnN0YXJ0X3B0ciwg dW5zaWduZWQgY2hhciAqZW5kX3B0ciwNCj4gIAkJCSAgIGNoYXIgKnJlc2N0cmxfdmFsKQ0KPiAg ew0KPiAtCXdoaWxlICgxKQ0KPiArCXdoaWxlICgxKSB7DQo+ICAJCWZpbGxfb25lX3NwYW5fcmVh ZChzdGFydF9wdHIsIGVuZF9wdHIpOw0KPiArCQlpZiAoIXN0cmNtcChyZXNjdHJsX3ZhbCwgImNh dCIpKQ0KPiArCQkJYnJlYWs7DQo+ICsJfQ0KPiAgDQo+ICAJcmV0dXJuIDA7DQo+ICB9DQo+IEBA IC0xMTQsOCArMTE3LDExIEBAIHN0YXRpYyBpbnQgZmlsbF9jYWNoZV9yZWFkKHVuc2lnbmVkIGNo YXIgKnN0YXJ0X3B0ciwgdW5zaWduZWQgY2hhciAqZW5kX3B0ciwNCj4gIHN0YXRpYyBpbnQgZmls bF9jYWNoZV93cml0ZSh1bnNpZ25lZCBjaGFyICpzdGFydF9wdHIsIHVuc2lnbmVkIGNoYXIgKmVu ZF9wdHIsDQo+ICAJCQkgICAgY2hhciAqcmVzY3RybF92YWwpDQo+ICB7DQo+IC0Jd2hpbGUgKDEp DQo+ICsJd2hpbGUgKDEpIHsNCj4gIAkJZmlsbF9vbmVfc3Bhbl93cml0ZShzdGFydF9wdHIsIGVu ZF9wdHIpOw0KPiArCQlpZiAoIXN0cmNtcChyZXNjdHJsX3ZhbCwgImNhdCIpKQ0KPiArCQkJYnJl YWs7DQo+ICsJfQ0KPiAgDQo+ICAJcmV0dXJuIDA7DQo+ICB9DQo+IGRpZmYgLS1naXQgYS90b29s cy90ZXN0aW5nL3NlbGZ0ZXN0cy9yZXNjdHJsL3Jlc2N0cmwuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2Vs ZnRlc3RzL3Jlc2N0cmwvcmVzY3RybC5oDQo+IGluZGV4IGI4NDdlYzk3MmU3Ny4uYzQxZDQ4ODY1 NTVmIDEwMDY0NA0KPiAtLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yZXNjdHJsL3Jlc2N0 cmwuaA0KPiArKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yZXNjdHJsL3Jlc2N0cmwuaA0K PiBAQCAtOTEsNyArOTEsMTAgQEAgaW50IG1iYV9zY2hlbWF0YV9jaGFuZ2UoaW50IGNvcmVfaWQs IGNoYXIgKmJ3X3JlcG9ydCwgY2hhciAqKmJlbmNobWFya19jbWQpOw0KPiAgdm9pZCBtYmFfdGVz dF9jbGVhbnVwKHZvaWQpOw0KPiAgaW50IGdldF9jYm1fbWFzayhjaGFyICpjYWNoZV90eXBlKTsN Cj4gIGludCBnZXRfY2FjaGVfc2l6ZShpbnQgY3B1X25vLCBpbnQgY2FjaGVfbnVtLCB1bnNpZ25l ZCBsb25nICpjYWNoZV9zaXplKTsNCj4gK2ludCBjYXRfdmFsKHN0cnVjdCByZXNjdHJsX3ZhbF9w YXJhbSAqcGFyYW0pOw0KPiArdm9pZCBjYXRfdGVzdF9jbGVhbnVwKHZvaWQpOw0KPiAgdm9pZCBj dHJsY19oYW5kbGVyKGludCBzaWdudW0sIHNpZ2luZm9fdCAqaW5mbywgdm9pZCAqcHRyKTsNCj4g K2ludCBjYXRfcGVyZl9taXNzX3ZhbChpbnQgY29yZV9pZCwgaW50IG5vX29mX2JpdHMpOw0KPiAg aW50IGNxbV9yZXNjdHJsX3ZhbChpbnQgY29yZV9pZCwgaW50IG4sIGNoYXIgKipiZW5jaG1hcmtf Y21kKTsNCj4gIHVuc2lnbmVkIGludCBjb3VudF9iaXRzKHVuc2lnbmVkIGxvbmcgbik7DQo+ICB2 b2lkIGNxbV90ZXN0X2NsZWFudXAodm9pZCk7DQo+IGRpZmYgLS1naXQgYS90b29scy90ZXN0aW5n L3NlbGZ0ZXN0cy9yZXNjdHJsL3Jlc2N0cmxfdGVzdHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL3Jlc2N0cmwvcmVzY3RybF90ZXN0cy5jDQo+IGluZGV4IDAzNTkyOWYxODY5Ni4uZTYzNjkx ZGUzMWEwIDEwMDY0NA0KPiAtLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yZXNjdHJsL3Jl c2N0cmxfdGVzdHMuYw0KPiArKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yZXNjdHJsL3Jl c2N0cmxfdGVzdHMuYw0KPiBAQCAtMjAsNyArMjAsNyBAQCBzdGF0aWMgdm9pZCBjbWRfaGVscCh2 b2lkKQ0KPiAgCXByaW50ZigiXHQtYiBiZW5jaG1hcmtfY21kIFtvcHRpb25zXTogcnVuIHNwZWNp ZmllZCBiZW5jaG1hcmsgZm9yIE1CTSwgTUJBIGFuZCBDUU0iKTsNCj4gIAlwcmludGYoIlx0IGRl ZmF1bHQgYmVuY2htYXJrIGlzIGJ1aWx0aW4gZmlsbF9idWZcbiIpOw0KPiAgCXByaW50ZigiXHQt dCB0ZXN0IGxpc3Q6IHJ1biB0ZXN0cyBzcGVjaWZpZWQgaW4gdGhlIHRlc3QgbGlzdCwgIik7DQo+ IC0JcHJpbnRmKCJlLmcuIC10IG1ibSwgbWJhLCBjcW1cbiIpOw0KPiArCXByaW50ZigiZS5nLiAt dCBtYm0sIG1iYSwgY3FtLCBjYXRcbiIpOw0KPiAgCXByaW50ZigiXHQtbiBub19vZl9iaXRzOiBy dW4gY2FjaGUgdGVzdHMgdXNpbmcgc3BlY2lmaWVkIG5vIG9mIGJpdHMgaW4gY2FjaGUgYml0IG1h c2tcbiIpOw0KPiAgCXByaW50ZigiXHQtaDogaGVscFxuIik7DQo+ICB9DQo+IEBAIC0zMCw2ICsz MCw3IEBAIHZvaWQgdGVzdHNfY2xlYW51cCh2b2lkKQ0KPiAgCW1ibV90ZXN0X2NsZWFudXAoKTsN Cj4gIAltYmFfdGVzdF9jbGVhbnVwKCk7DQo+ICAJY3FtX3Rlc3RfY2xlYW51cCgpOw0KPiArCWNh dF90ZXN0X2NsZWFudXAoKTsNCj4gIH0NCj4gIA0KPiAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQ0KPiBAQCAtMzgsNyArMzksNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpDQo+ICAJaW50IHJlcywgYywgY29yZV9pZCA9IDEsIHNwYW4gPSAyNTAsIGFyZ2NfbmV3ID0g YXJnYywgaSwgbm9fb2ZfYml0cyA9IDU7DQo+ICAJaW50IGJlbl9jb3VudCwgYmVuX2luZDsNCj4g IAlib29sIGhhc19iZW4gPSBmYWxzZSwgbWJtX3Rlc3QgPSB0cnVlLCBtYmFfdGVzdCA9IHRydWU7 DQo+IC0JYm9vbCBjcW1fdGVzdCA9IHRydWU7DQo+ICsJYm9vbCBjcW1fdGVzdCA9IHRydWUsIGNh dF90ZXN0ID0gdHJ1ZTsNCj4gIAljaGFyICpiZW5jaG1hcmtfY21kW0JFTkNITUFSS19BUkdTXTsN Cj4gIAljaGFyIGJ3X3JlcG9ydFs2NF0sIGJtX3R5cGVbNjRdOw0KPiAgDQo+IEBAIC02Miw2ICs2 Myw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikNCj4gIAkJCW1ibV90ZXN0ID0g ZmFsc2U7DQo+ICAJCQltYmFfdGVzdCA9IGZhbHNlOw0KPiAgCQkJY3FtX3Rlc3QgPSBmYWxzZTsN Cj4gKwkJCWNhdF90ZXN0ID0gZmFsc2U7DQo+ICAJCQl3aGlsZSAodG9rZW4pIHsNCj4gIAkJCQlp ZiAoIXN0cmNtcCh0b2tlbiwgIm1ibSIpKSB7DQo+ICAJCQkJCW1ibV90ZXN0ID0gdHJ1ZTsNCj4g QEAgLTY5LDYgKzcxLDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0KPiAgCQkJ CQltYmFfdGVzdCA9IHRydWU7DQo+ICAJCQkJfSBlbHNlIGlmICghc3RyY21wKHRva2VuLCAiY3Ft IikpIHsNCj4gIAkJCQkJY3FtX3Rlc3QgPSB0cnVlOw0KPiArCQkJCX0gZWxzZSBpZiAoIXN0cmNt cCh0b2tlbiwgImNhdCIpKSB7DQo+ICsJCQkJCWNhdF90ZXN0ID0gdHJ1ZTsNCj4gIAkJCQl9IGVs c2Ugew0KPiAgCQkJCQlwcmludGYoImludmFsaWQgYXJndW1lbnRcbiIpOw0KPiAgDQo+IEBAIC0x NTksNiArMTYzLDEzIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikNCj4gIAkJCXBy aW50ZigiRXJyb3IgaW4gQ1FNIHRlc3QhXG4iKTsNCj4gIAkJY3FtX3Rlc3RfY2xlYW51cCgpOw0K PiAgCX0NCj4gKwlpZiAoY2F0X3Rlc3QpIHsNCj4gKwkJcHJpbnRmKCJcbkNBVCBUZXN0IFN0YXJ0 aW5nLi5cbiIpOw0KPiArCQlyZXMgPSBjYXRfcGVyZl9taXNzX3ZhbChjb3JlX2lkLCBub19vZl9i aXRzKTsNCj4gKwkJaWYgKHJlcykNCj4gKwkJCXByaW50ZigiRXJyb3IgaW4gQ0FUIHRlc3QhXG4i KTsNCj4gKwkJY2F0X3Rlc3RfY2xlYW51cCgpOw0KPiArCX0NCj4gIA0KPiAgCXJldHVybiAwOw0K PiAgfQ0KPiBkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmVzY3RybC9yZXNj dHJsZnMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jlc2N0cmwvcmVzY3RybGZzLmMNCj4g aW5kZXggOWZjMjdhZTY4NTgyLi5kZDViYjMxMDJmZWMgMTAwNjQ0DQo+IC0tLSBhL3Rvb2xzL3Rl c3Rpbmcvc2VsZnRlc3RzL3Jlc2N0cmwvcmVzY3RybGZzLmMNCj4gKysrIGIvdG9vbHMvdGVzdGlu Zy9zZWxmdGVzdHMvcmVzY3RybC9yZXNjdHJsZnMuYw0KPiBAQCAtMTQsNiArMTQsNyBAQA0KPiAg I2RlZmluZSBSRVNDVFJMX01CTQkJIkwzIG1vbml0b3JpbmcgZGV0ZWN0ZWQiDQo+ICAjZGVmaW5l IFJFU0NUUkxfTUJBCQkiTUIgYWxsb2NhdGlvbiBkZXRlY3RlZCINCj4gICNkZWZpbmUgUkVTQ1RS TF9DUU0JCSJMMyBtb25pdG9yaW5nIGRldGVjdGVkIg0KPiArI2RlZmluZSBSRVNDVFJMX0wzX0NB VAkJIkwzIGFsbG9jYXRpb24gZGV0ZWN0ZWQiDQo+ICAjZGVmaW5lIE1BWF9SRVNDVFJMX0ZFQVRV UkVTCTQNCj4gICNkZWZpbmUgQ09SRV9TSUJMSU5HU19QQVRICSIvc3lzL2J1cy9jcHUvZGV2aWNl cy9jcHUiDQo+ICANCj4gQEAgLTQ3NSw2ICs0NzYsNyBAQCBpbnQgd3JpdGVfc2NoZW1hdGEoY2hh ciAqY3RybGdycCwgY2hhciAqc2NoZW1hdGEsIGludCBjcHVfbm8sIGNoYXIgKnJlc2N0cmxfdmFs KQ0KPiAgCWludCByZXQ7DQo+ICANCj4gIAlpZiAoKHN0cmNtcChyZXNjdHJsX3ZhbCwgIm1iYSIp ID09IDApIHx8DQo+ICsJICAgIChzdHJjbXAocmVzY3RybF92YWwsICJjYXQiKSA9PSAwKSB8fA0K PiAgCSAgICAoc3RyY21wKHJlc2N0cmxfdmFsLCAiY3FtIikgPT0gMCkpIHsNCj4gIAkJaWYgKCFz Y2hlbWF0YSkgew0KPiAgCQkJcHJpbnRmKCJTY2hlbWF0YSBlbXB0eSwgc28gbm90IHVwZGF0aW5n XG4iKTsNCj4gQEAgLTQ5MSw3ICs0OTMsNyBAQCBpbnQgd3JpdGVfc2NoZW1hdGEoY2hhciAqY3Ry bGdycCwgY2hhciAqc2NoZW1hdGEsIGludCBjcHVfbm8sIGNoYXIgKnJlc2N0cmxfdmFsKQ0KPiAg CQllbHNlDQo+ICAJCQlzcHJpbnRmKGNvbnRyb2xncm91cCwgIiVzL3NjaGVtYXRhIiwgUkVTQ1RS TF9QQVRIKTsNCj4gIA0KPiAtCQlpZiAoIXN0cmNtcChyZXNjdHJsX3ZhbCwgImNxbSIpKQ0KPiAr CQlpZiAoIXN0cmNtcChyZXNjdHJsX3ZhbCwgImNhdCIpIHx8ICFzdHJjbXAocmVzY3RybF92YWws ICJjcW0iKSkNCj4gIAkJCXNwcmludGYoc2NoZW1hLCAiJXMlYyVjJXMiLCAiTDM6Iiwgc29ja19u dW0sICc9JywNCj4gIAkJCQlzY2hlbWF0YSk7DQo+ICAJCWlmIChzdHJjbXAocmVzY3RybF92YWws ICJtYmEiKSA9PSAwKQ0KPiBAQCAtNTI5LDcgKzUzMSw3IEBAIGludCB2YWxpZGF0ZV9yZXNjdHJs X2ZlYXR1cmVfcmVxdWVzdChjaGFyICpyZXNjdHJsX3ZhbCkNCj4gIHsNCj4gIAlpbnQgcmVzY3Ry bF9mZWF0dXJlc19zdXBwb3J0ZWRbTUFYX1JFU0NUUkxfRkVBVFVSRVNdID0gezAsIDAsIDAsIDB9 Ow0KPiAgCWNvbnN0IGNoYXIgKnJlc2N0cmxfZmVhdHVyZXNfbGlzdFtNQVhfUkVTQ1RSTF9GRUFU VVJFU10gPSB7DQo+IC0JCQkibWJtIiwgIm1iYSIsICJjcW0ifTsNCj4gKwkJCSJtYm0iLCAibWJh IiwgImNhdCIsICJjcW0ifTsNCj4gIAlpbnQgaSwgdmFsaWRfcmVzY3RybF9mZWF0dXJlID0gLTE7 DQo+ICAJY2hhciBsaW5lWzEwMjRdOw0KPiAgCUZJTEUgKmZwOw0KPiBAQCAtNTcwLDYgKzU3Miw4 IEBAIGludCB2YWxpZGF0ZV9yZXNjdHJsX2ZlYXR1cmVfcmVxdWVzdChjaGFyICpyZXNjdHJsX3Zh bCkNCj4gIAkJCXJlc2N0cmxfZmVhdHVyZXNfc3VwcG9ydGVkWzBdID0gMTsNCj4gIAkJaWYgKChz dHJzdHIobGluZSwgUkVTQ1RSTF9NQkEpKSAhPSBOVUxMKQ0KPiAgCQkJcmVzY3RybF9mZWF0dXJl c19zdXBwb3J0ZWRbMV0gPSAxOw0KPiArCQlpZiAoKHN0cnN0cihsaW5lLCBSRVNDVFJMX0wzX0NB VCkpICE9IE5VTEwpDQo+ICsJCQlyZXNjdHJsX2ZlYXR1cmVzX3N1cHBvcnRlZFsyXSA9IDE7DQo+ ICAJCWlmICgoc3Ryc3RyKGxpbmUsIFJFU0NUUkxfQ1FNKSkgIT0gTlVMTCkNCj4gIAkJCXJlc2N0 cmxfZmVhdHVyZXNfc3VwcG9ydGVkWzNdID0gMTsNCj4gIAl9DQo+IA0K