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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2C8C1ECAAA1 for ; Tue, 30 Aug 2022 09:06:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230398AbiH3JGm (ORCPT ); Tue, 30 Aug 2022 05:06:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33956 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230503AbiH3JGk (ORCPT ); Tue, 30 Aug 2022 05:06:40 -0400 Received: from esa12.fujitsucc.c3s2.iphmx.com (esa12.fujitsucc.c3s2.iphmx.com [216.71.156.125]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 49E90A8966 for ; Tue, 30 Aug 2022 02:06:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1661850398; x=1693386398; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=XPOtu/RMskStcOyvgOMYFjaL8qKorFM1L99wFszgGAM=; b=C8qKLWvqywt3B7CoDwWz8NSMRDBPwckYJPgDAycMF5k9iH2+4+WdEmik ia037o9LAv0fQ13pge7SouL4HaelDvWGfd6pPxDiTcu5eKX8ImhBMp3ur /6Ouc+nWroq/QwvAp3ylNZ7DXZIwltc71uoG8jpdNgIOQ27OGzbrNJ4MO JYOcl8S1kssO1s2LRjKpOcmA8DXklHeo6gFVx/bpB3H3nFCPzmkoQl/Fb 1ngRp06T2w1NZxlLz039KTF2Qm/xneJCZqIGdRplIjxg0N5glrmVmkN3u esF+E4PIS7aJDCJdZASBPm9W92g7GNaWksj8xAsQQtVSKkuQimawegonC w==; X-IronPort-AV: E=McAfee;i="6500,9779,10454"; a="64049815" X-IronPort-AV: E=Sophos;i="5.93,274,1654527600"; d="scan'208";a="64049815" Received: from mail-os0jpn01lp2108.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.108]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Aug 2022 18:06:35 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OCDA6dFcR73SbsT1J/j/0qI5pRwPyRfbXWLwKsWTVZbwQ0o2ryuZxhwpov5p5VDrKwZwvc40WsJ5dXdwWpYxoPspUwqYjgiIgtPT55tjPscd1Tc6w91J0kbZyU4FHyPTLMt3YqV5OOSkviVb+wakw5h2F00Sc8lK+YLQ6INzerfb/f8lg1sTEWVUFiwrwHWA4668Ev4jMVcJ5V7qQCHYr6iRkBwbPnyEI2K8eHQbS6bFK+Mo+je0Pr13tI/PS98fTQFa64pFAMRypdbjFqR76q171qMqGj/r1pUeiL3OXcLfazawIHapLZ8gZRvwxV8KbbLcIclq/lZiUbwUDc5T8g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=XPOtu/RMskStcOyvgOMYFjaL8qKorFM1L99wFszgGAM=; b=g71mze7lVtrOuGDo2rG346mkZYjQBRkqHvXQ3tTLu6/WutK7mVLVaWZ451twEcS+Au8wqFkABj6ocUckHiC8jjIcz56dhZVXwOJjn43fH8SHB12pnUJnMiC7zjtEqqRcOqd2WBGbLd83Zx95b6//Hi3TZ/M4tRgRuZiY3xOoQZHOW+V3+HypBq/kxm0ArR3EWk6975JO5iM6ScXp7fyLknDcPw1urv+Yh8uBWG1eAO1zoBCpLjnuGvpNGitTqPVSSv5IgyLC5POPRiRlY8SZHAT0J+VhkPQ+dU4rRTSiszW5ieRsMdwAObjWmrlQySuYLksP04dZgG5NrhmPgUcEaQ== 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 Received: from TY2PR01MB4427.jpnprd01.prod.outlook.com (2603:1096:404:10d::20) by OSZPR01MB6294.jpnprd01.prod.outlook.com (2603:1096:604:f6::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.14; Tue, 30 Aug 2022 09:06:30 +0000 Received: from TY2PR01MB4427.jpnprd01.prod.outlook.com ([fe80::a9fe:6054:eadc:7ef8]) by TY2PR01MB4427.jpnprd01.prod.outlook.com ([fe80::a9fe:6054:eadc:7ef8%5]) with mapi id 15.20.5566.021; Tue, 30 Aug 2022 09:06:30 +0000 From: "xuyang2018.jy@fujitsu.com" To: Christian Brauner CC: "fstests@vger.kernel.org" Subject: Re: [PATCH v2 2/2] vfs: Add new setgid_create_acl test Thread-Topic: [PATCH v2 2/2] vfs: Add new setgid_create_acl test Thread-Index: AQHYoMoRaNiTIVb7qUm9Z3Y401DIEq3GG4+AgAFTdgA= Date: Tue, 30 Aug 2022 09:06:30 +0000 Message-ID: References: <20220725142020.rtc2mgfhcw47v4t4@wittgenstein> <1658827881-2347-1-git-send-email-xuyang2018.jy@fujitsu.com> <1658827881-2347-2-git-send-email-xuyang2018.jy@fujitsu.com> <20220829135225.wscmhw4dqkzitcvf@wittgenstein> In-Reply-To: <20220829135225.wscmhw4dqkzitcvf@wittgenstein> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f347ab00-7f9c-4737-be73-08da8a66ed9d x-ms-traffictypediagnostic: OSZPR01MB6294:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: oUMNcYfK5miu5wlsOiKKFYRwRtnaMkCnVUcft9S6xnq81CxNxcYSJWaXdZn3R4IEKcEFwy/jUut7c8OObNcGFjRv89o1pXrOmqYKUxgeQ71TVi7pvSUhE0e7Qonu8sjSt5JiwRB963EpYLb2vDWpSC90drHOCuTV7Z8NlfOER1nLaDU8L0KKVTPGcc7hhFlqwOICZ85PoWi62bW3dQAsjZXermDmBKeFXRfExJGggkdGyXXT2F5T0MsFQM0715O7D1H64EplBlEvHMlDOuqYp95nhqdmc1z/0VT4lEvrNAWIOXSrliMVcNL8/stvAdD+gU6KKwnO/g/wWiXkdUMtaEqdsqbV7Mz5CpJDJliSj4DDUljo8YJhdclg7mMjocjkI+U0FFb8nnU9G1V5TxtUKWp14bvIXJejJbMmMgTY6OFChNMg6wKhAC5Dnpg7TG9JnATreEqNANe53MgLojhV14Gs4EtdPUvV1AG6B2k46fUTjA+UiNyajOtdR3h3VBcOzKUwIMg8Fg68mxORHhJ4tEzeRXulME3R92czH3aISEsXeezy0SovEPx3HDKJEN9E3i+BteVx9h5oPFbn7m2A7MG2mslfDPPb3Dxxd105JHkx6YYlG1BHp9y/XsY/DhT+oboAhgw6ehswuu+mrIhWR0ZjgY+b7nIgiMlgiHMFA9mAC9cSvvjCPChW8S7QgKS3n6aOclCOg3t/PLEPTgy6mxSEcblAvkfx4//JhhSFV3ZOLLAtJcyplkA6eKC6A58AbtXvd4F4EF7b6Tuyj0yYzF6r+z7ZTlUQ8YZGafghv4gQNpP/oF9lzS+tAW0xiV03CwXFsNEGdM0JPIAmQkxzbA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY2PR01MB4427.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(396003)(136003)(346002)(366004)(376002)(39860400002)(1590799006)(4326008)(2616005)(76116006)(66446008)(64756008)(66476007)(8676002)(38070700005)(186003)(66556008)(1580799003)(6486002)(6506007)(91956017)(71200400001)(31696002)(86362001)(6916009)(478600001)(316002)(6512007)(41300700001)(26005)(122000001)(36756003)(85182001)(31686004)(38100700002)(66946007)(2906002)(8936002)(82960400001)(83380400001)(30864003)(5660300002)(45980500001)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MVdPWG01QlZpUkRqcS96TzFxNmg5VXJwWkkwdmtubXV3SGMwWVNuVnRSODZ5?= =?utf-8?B?SS94NzM1R0cxcHJQRDcvaEltSlBqVWpUYlVNVEJYWjlmajVXam9GMmszV1hm?= =?utf-8?B?QXYyMGdOZ05yZHZabXBhM3BuMW41ZC9salZPTGhxL3k5THQ2c3FVY01PZ0l3?= =?utf-8?B?amo3bi9nV2UycjZnV2daT0NHNVQrb2xoM1FmaUtuRlk5eXBES2YwMmtjMVpC?= =?utf-8?B?bkhleVRjZ0hBNVMvU2RwRFNkK211cDhCZWhTU29Qd0Rlc3IzRlVKdDRlT3l1?= =?utf-8?B?NW50Ym5FaXNiUUROZkxBb0lLVTNmYmFWN1A4b2QxTFFjeHZsZnhtRGRPdmRP?= =?utf-8?B?Vm0vLzBLSHptMVVCeStVNDVxR2w3UzlUbEtKMVNjSkF3clVoVHhMK21uNTJC?= =?utf-8?B?YlVmMlQ0QXo3ZzdHWDBiNWVSM1piMS9tUGNzY3FlKyszWG5Dei8wTEtIRVBU?= =?utf-8?B?WmpKandURmJyS3ZpTy9kUngyWEJIdm1FZ3ZGeFMxa213MkZrbWVvM1U4blVE?= =?utf-8?B?TmQ2NEI0Y1F6bXJjTHhmVGI1aytvRmtxaklLdDRyTTJlckd1RTB2ZWp3QXNi?= =?utf-8?B?K3YrVmFJOUxITlJpa2x5VXpLS1gwTDY1UmdOVlErMUJjdTljWXU1WGMzUXpr?= =?utf-8?B?NUdQT1NMNnVQRUlmalZnNzNZR2owRnE4VU9tVDlJODZJajN0TUE3bXFrc3Mz?= =?utf-8?B?TTRKZDNidVRKOE9GYkRXY25XeUUyY0RPTjJTOHV0NUUvcm1wZFdGa3UyZHJu?= =?utf-8?B?djdxODYwbWl0b1Y2NGNPNkJSS3hOK240alh2ZDRGRXhkcmlTb0MzZFpyUnBQ?= =?utf-8?B?Nk83S2VvVzhzOE9CT2tSOVFKemZzcENTQ0lWZ3hiZG5TZWI0cGJmMVdQYm1M?= =?utf-8?B?MDZENi8wVVVRbnE4elE2MHZoNkRsVlJ2TTk2Q1ZnV2JDNEJvWGhsU1h4TWZX?= =?utf-8?B?TWxibVJscTU3S0k1Y1Q5TXlPMDVHaCtJVVlXTjFtYUpieVVGaWVIU1d4L1Qv?= =?utf-8?B?UU5wV1FyL2poQjRUZ0sxZFNOK2JZZmo3OVdCMUJsOUVGN3NvYzBnb01jYXRl?= =?utf-8?B?eE1vY2FaV2E4cXB3K0FmWERaeEt2R0c1VklBZmswd0t6SjVLQU5DN3ZuQ1dR?= =?utf-8?B?REIvWjEya3JodTF6UTgrR2FobHM4MWVyWlpqUHB2QkFIb2Y4eC9JZmZDWWhv?= =?utf-8?B?dVNlSGl5L0pxeVhpWUhOWFVLUUdlNjhydGZCd1RPU0ZPdnpiNktmL2g1T2JX?= =?utf-8?B?ODlpUUdqTHJkdXJkSHR3RnQvZGt4Yk45T3gxNVl6aWhObnBnSGxGREhrZ1Fw?= =?utf-8?B?QnFBYWROQXM1amNmL3U1YlpRNEpTSTNEVHcrYjh1WTd2M0IySWdTYVpERFUz?= =?utf-8?B?eHBZMTk0SjNuYmt3Ky85eDIrMTVkakcrd3BiVk1BbVY4OXhUejBOeEJ2L0Ux?= =?utf-8?B?MmlaT3c3NTF0SnV5NUE3YmQvekpJZUQyNUh5TXNzd3FvTVhXdzV3WW9ZeVQv?= =?utf-8?B?d1hhZHlYSFVWbjFHQURIZHRrdVI0c2V3L0pRSFZmNHREUHJkZ0o4OHhRQ2Jy?= =?utf-8?B?MmJEVVNUcCtuUnEyN0RvZ2NDZi9qcGtHNVE5NGlZN20ya1k1aHVsZlRVUHBz?= =?utf-8?B?OFhTK0JySWVEZDFrb3FCdmhqN1hGMDl0Z3hoODNHbUphSnRTT09FNEJ5UlNC?= =?utf-8?B?djVNK25Cby83M2UvTEtrWEVWZnFjQllQUnAxNExEd1hvcXIzRWlpWU44OXo3?= =?utf-8?B?dVJZTzJuUkExRU5CZVF4SGhyL2hhQ3ZXTnR2Tk1LaDNVTCtoQkphOENsbDFo?= =?utf-8?B?YWJvS2NVWDE5NE1HQ25McHBlOUdyc3JocVNrcTZqZjVnazBvblJGejFKdUdU?= =?utf-8?B?WnJZZ1VFSDdlNDMwRDNVVjdvN241L0xYeGFmOHVmTzF5NEZtdDcxN3dvWDgx?= =?utf-8?B?dUJoc3lvNnI4c1FYN0xTa2c0Um14M002U094aGhSVTVkVTRYeGFsRVRsNDU4?= =?utf-8?B?Nmd1Q1pSMHZHaVR5MSs3d1p2anBJb0UwQ2U4L3JIZkZNOVlHYkhPcnQxWVZW?= =?utf-8?B?R2VHR0hvbkY4QjFsQUt1M2swVUVpVVo2ZU9jM1kxejNZcTBVWXZ6enNoMzFN?= =?utf-8?B?M25zUGo5Y1lFZDFONFMxVVp2VEYrWDdJemNwVC9lOG9DNE05dmc2OGYrcGhz?= =?utf-8?B?d1E9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TY2PR01MB4427.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f347ab00-7f9c-4737-be73-08da8a66ed9d X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Aug 2022 09:06:30.3556 (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: WTJ3Cixtu6gM2jJFGi9wb+PRaI94RDK3xAnNZZH35Ma0BIQxy3idM2vWdTQ/wylY5oazU0z4Dha1Wm3TMKpY98j1C1jp4dbics53OWJOOM4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSZPR01MB6294 Precedence: bulk List-ID: X-Mailing-List: fstests@vger.kernel.org DQoNCm9uIDIwMjIvMDgvMjkgMjE6NTIsIENocmlzdGlhbiBCcmF1bmVyIHdyb3RlOg0KPiBPbiBU dWUsIEp1bCAyNiwgMjAyMiBhdCAwNTozMToyMVBNICswODAwLCBZYW5nIFh1IHdyb3RlOg0KPj4g VGhlIGN1cnJlbnRfdW1hc2soKSBpcyBzdHJpcHBlZCBmcm9tIHRoZSBtb2RlIGRpcmVjdGx5IGlu IHRoZSB2ZnMgaWYgdGhlDQo+PiBmaWxlc3lzdGVtIGVpdGhlciBkb2Vzbid0IHN1cHBvcnQgYWNs cyBvciB0aGUgZmlsZXN5c3RlbSBoYXMgYmVlbg0KPj4gbW91bnRlZCB3aXRob3V0IHBvc2ljIGFj bCBzdXBwb3J0Lg0KPj4NCj4+IElmIHRoZSBmaWxlc3lzdGVtIGRvZXMgc3VwcG9ydCBhY2xzIHRo ZW4gY3VycmVudF91bWFzaygpIHN0cmlwcGluZyBpcw0KPj4gZGVmZXJyZWQgdG8gcG9zaXhfYWNs X2NyZWF0ZSgpLiBTbyB3aGVuIHRoZSBmaWxlc3lzdGVtIGNhbGxzDQo+PiBwb3NpeF9hY2xfY3Jl YXRlKCkgYW5kIHRoZXJlIGFyZSBubyBhY2xzIHNldCBvciBub3Qgc3VwcG9ydGVkIHRoZW4NCj4+ IGN1cnJlbnRfdW1hc2soKSB3aWxsIGJlIHN0cmlwcGVkLg0KPj4NCj4+IElmIHRoZSBwYXJlbnQg ZGlyZWN0b3J5IGhhcyBhIGRlZmF1bHQgYWNsIHRoZW4gcGVybWlzc2lvbnMgYXJlIGJhc2VkIG9m Zg0KPj4gb2YgdGhhdCBhbmQgY3VycmVudF91bWFzaygpIGlzIGlnbm9yZWQuIFNwZWNpZmljYWxs eSwgaWYgdGhlIEFDTCBoYXMgYW4NCj4+IEFDTF9NQVNLIGVudHJ5LCB0aGUgZ3JvdXAgcGVybWlz c2lvbnMgY29ycmVzcG9uZCB0byB0aGUgcGVybWlzc2lvbnMgb2YNCj4+IHRoZSBBQ0xfTUFTSyBl bnRyeS4gT3RoZXJ3aXNlLCBpZiB0aGUgQUNMIGhhcyBubyBBQ0xfTUFTSyBlbnRyeSwgdGhlDQo+ PiBncm91cCBwZXJtaXNzaW9ucyBjb3JyZXNwb25kIHRvIHRoZSBwZXJtaXNzaW9ucyBvZiB0aGUg QUNMX0dST1VQX09CSg0KPj4gZW50cnkuDQo+Pg0KPj4gSGVyZSB3ZSBvbmx5IHVzZSBzZXRmYWNs IHRvIHNldCBkZWZhdWx0IGFjbCBvciBhZGQgQUNMX01BU0sgdG8gY2hlY2sNCj4+IHdoZXRoZXIg aW5vZGUgc3RyaXAgIFNfSVNHSUQgd29ya3MgY29ycmVjdGx5Lg0KPj4NCj4+IExpa2UgdW1hc2sg dGVzdCwgdGhpcyBwYXRjaCBpcyBhbHNvIGRlc2lnbmVkIHRvIHRlc3Qga2VybmVsIHBhdGNoc2V0 IGJlaGF2aW91cg0KPj4gIm1vdmUgU19JU0dJRCBzdHJpcHBpbmcgaW50byB0aGUgdmZzKiBoZWxw ZXIiDQo+Pg0KPj4gU2lnbmVkLW9mZi1ieTogWWFuZyBYdSA8eHV5YW5nMjAxOC5qeUBmdWppdHN1 LmNvbT4NCj4+IC0tLQ0KPiANCj4gSGV5IFlhbmcsDQo+IA0KPiBUaGFuayB5b3VyIGZvciBhbGwg dGhhdCB3b3JrISBKdXN0IGEgZmV3IG5pdHMuDQo+IA0KPj4gMS5hZGQga2VybmVsIGNvbW1pdCBp ZA0KPj4gMi5tb3ZlIHVtYXNrIGludG8gcGFyZW50IHByb2Nlc3MgaW50ZWFkIG9mIGNoaWxkIHBy b2Nlc3MNCj4+IDMucmVtb3ZlIGR1cGxpY2F0ZWQgY29tbWVudCBmb3IgQUNMX0dST1VQX09CSiBh bmQgQUNMX01BU0sgYmVjYXVzZQ0KPj4gd2UgaGF2ZSBtZW50aW9uZWQgaXQgYmVmb3JlIHRoZSBm dW5jdGlvbg0KPj4gICBzcmMvdmZzL2lkbWFwcGVkLW1vdW50cy5jIHwgNzA0ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+PiAgIHNyYy92ZnMvaWRtYXBwZWQtbW91bnRz LmggfCAgIDEgKw0KPj4gICBzcmMvdmZzL3Zmc3Rlc3QuYyAgICAgICAgIHwgMzQ1ICsrKysrKysr KysrKysrKysrKy0NCj4+ICAgdGVzdHMvZ2VuZXJpYy85OTkgICAgICAgICB8ICAzMyArKw0KPj4g ICB0ZXN0cy9nZW5lcmljLzk5OS5vdXQgICAgIHwgICAyICsNCj4+ICAgNSBmaWxlcyBjaGFuZ2Vk LCAxMDg0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkNCj4+ICAgY3JlYXRlIG1vZGUgMTAw NzU1IHRlc3RzL2dlbmVyaWMvOTk5DQo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9nZW5l cmljLzk5OS5vdXQNCj4+DQo+PiBkaWZmIC0tZ2l0IGEvc3JjL3Zmcy9pZG1hcHBlZC1tb3VudHMu YyBiL3NyYy92ZnMvaWRtYXBwZWQtbW91bnRzLmMNCj4+IGluZGV4IGY2M2FjNDRiLi5mOTM0Y2Y0 YSAxMDA2NDQNCj4+IC0tLSBhL3NyYy92ZnMvaWRtYXBwZWQtbW91bnRzLmMNCj4+ICsrKyBiL3Ny Yy92ZnMvaWRtYXBwZWQtbW91bnRzLmMNCj4+IEBAIC04MDgzLDYgKzgwODMsNzAwIEBAIG91dDoN Cj4+ICAgCXJldHVybiBmcmV0Ow0KPj4gICB9DQo+PiAgIA0KPj4gK3N0YXRpYyBpbnQgc2V0Z2lk X2NyZWF0ZV9hY2xfaWRtYXBwZWQoY29uc3Qgc3RydWN0IHZmc3Rlc3RfaW5mbyAqaW5mbykNCj4+ ICt7DQo+PiArCWludCBmcmV0ID0gLTE7DQo+PiArCWludCBmaWxlMV9mZCA9IC1FQkFERiwgb3Bl bl90cmVlX2ZkID0gLUVCQURGOw0KPj4gKwlzdHJ1Y3QgbW91bnRfYXR0ciBhdHRyID0gew0KPj4g KwkJLmF0dHJfc2V0ID0gTU9VTlRfQVRUUl9JRE1BUCwNCj4+ICsJfTsNCj4+ICsJcGlkX3QgcGlk Ow0KPj4gKwlpbnQgdG1wZmlsZV9mZCA9IC1FQkFERjsNCj4+ICsJYm9vbCBzdXBwb3J0ZWQgPSBm YWxzZTsNCj4+ICsJY2hhciBwYXRoW1BBVEhfTUFYXTsNCj4+ICsJbW9kZV90IG1vZGU7DQo+PiAr DQo+PiArCWlmICghY2Fwc19zdXBwb3J0ZWQoKSkNCj4+ICsJCXJldHVybiAwOw0KPj4gKw0KPj4g KwlpZiAoZmNobW9kKGluZm8tPnRfZGlyMV9mZCwgU19JUlVTUiB8DQo+PiArCQkJICAgICAgU19J V1VTUiB8DQo+PiArCQkJICAgICAgU19JUkdSUCB8DQo+PiArCQkJICAgICAgU19JV0dSUCB8DQo+ PiArCQkJICAgICAgU19JUk9USCB8DQo+PiArCQkJICAgICAgU19JV09USCB8DQo+PiArCQkJICAg ICAgU19JWFVTUiB8DQo+PiArCQkJICAgICAgU19JWEdSUCB8DQo+PiArCQkJICAgICAgU19JWE9U SCB8DQo+PiArCQkJICAgICAgU19JU0dJRCksIDApIHsNCj4+ICsJCWxvZ19zdGRlcnIoImZhaWx1 cmU6IGZjaG1vZCIpOw0KPj4gKwkJZ290byBvdXQ7DQo+PiArCX0NCj4+ICsNCj4+ICsJLyogVmVy aWZ5IHRoYXQgdGhlIHNpZCBiaXRzIGdvdCByYWlzZWQuICovDQo+PiArCWlmICghaXNfc2V0Z2lk KGluZm8tPnRfZGlyMV9mZCwgIiIsIEFUX0VNUFRZX1BBVEgpKSB7DQo+PiArCQlsb2dfc3RkZXJy KCJmYWlsdXJlOiBpc19zZXRnaWQiKTsNCj4+ICsJCWdvdG8gb3V0Ow0KPj4gKwl9DQo+PiArDQo+ PiArCS8qIENoYW5naW5nIG1vdW50IHByb3BlcnRpZXMgb24gYSBkZXRhY2hlZCBtb3VudC4gKi8N Cj4+ICsJYXR0ci51c2VybnNfZmQJPSBnZXRfdXNlcm5zX2ZkKDAsIDEwMDAwLCAxMDAwMCk7DQo+ PiArCWlmIChhdHRyLnVzZXJuc19mZCA8IDApIHsNCj4+ICsJCWxvZ19zdGRlcnIoImZhaWx1cmU6 IGdldF91c2VybnNfZmQiKTsNCj4+ICsJCWdvdG8gb3V0Ow0KPj4gKwl9DQo+PiArDQo+PiArCW9w ZW5fdHJlZV9mZCA9IHN5c19vcGVuX3RyZWUoaW5mby0+dF9kaXIxX2ZkLCAiIiwNCj4+ICsJCQkJ ICAgICBBVF9FTVBUWV9QQVRIIHwNCj4+ICsJCQkJICAgICBBVF9OT19BVVRPTU9VTlQgfA0KPj4g KwkJCQkgICAgIEFUX1NZTUxJTktfTk9GT0xMT1cgfA0KPj4gKwkJCQkgICAgIE9QRU5fVFJFRV9D TE9FWEVDIHwNCj4+ICsJCQkJICAgICBPUEVOX1RSRUVfQ0xPTkUpOw0KPj4gKwlpZiAob3Blbl90 cmVlX2ZkIDwgMCkgew0KPj4gKwkJbG9nX3N0ZGVycigiZmFpbHVyZTogc3lzX29wZW5fdHJlZSIp Ow0KPj4gKwkJZ290byBvdXQ7DQo+PiArCX0NCj4+ICsNCj4+ICsJaWYgKHN5c19tb3VudF9zZXRh dHRyKG9wZW5fdHJlZV9mZCwgIiIsIEFUX0VNUFRZX1BBVEgsICZhdHRyLCBzaXplb2YoYXR0cikp KSB7DQo+PiArCQlsb2dfc3RkZXJyKCJmYWlsdXJlOiBzeXNfbW91bnRfc2V0YXR0ciIpOw0KPj4g KwkJZ290byBvdXQ7DQo+PiArCX0NCj4+ICsNCj4+ICsJc3VwcG9ydGVkID0gb3BlbmF0X3RtcGZp bGVfc3VwcG9ydGVkKG9wZW5fdHJlZV9mZCk7DQo+PiArDQo+PiArCS8qIE9ubHkgdW1hc2sgd2l0 aCBTX0lYR1JQIGJlY2F1c2UgaW5vZGUgc3RyaXAgU19JU0dJRCB3aWxsIGNoZWNrIG1vZGUNCj4+ ICsJICogd2hldGhlciBoYXMgZ3JvdXAgZXhlY3V0ZSBvciBzZWFyY2ggcGVybWlzc2lvbi4NCj4+ ICsJICovDQo+PiArCXVtYXNrKFNfSVhHUlApOw0KPj4gKwltb2RlID0gdW1hc2soU19JWEdSUCk7 DQo+PiArCWlmICghKG1vZGUgJiBTX0lYR1JQKSkNCj4+ICsJCWRpZSgiZmFpbHVyZTogdW1hc2si KTsNCj4gDQo+IFBsZWFzZSBtb3ZlIGFsbCB0aGUgdW1hc2soKSBjYWxscyBhZnRlciB0aGUgZm9y aygpIGludG8gdGhlIGNoaWxkLg0KDQpPSy4NCj4gDQo+PiArDQo+PiArCXBpZCA9IGZvcmsoKTsN Cj4+ICsJaWYgKHBpZCA8IDApIHsNCj4+ICsJCWxvZ19zdGRlcnIoImZhaWx1cmU6IGZvcmsiKTsN Cj4+ICsJCWdvdG8gb3V0Ow0KPj4gKwl9DQo+PiArCWlmIChwaWQgPT0gMCkgew0KPj4gKwkJLyog VGhlIGdyb3VwIHBlcm1pc3Npb25zIGNvcnJlc3BvbmQgdG8gdGhlIHBlcm1pc3Npb25zIG9mIHRo ZQ0KPj4gKwkJICogQUNMX01BU0sgZW50cnkuDQo+PiArCQkgKi8NCj4+ICsJCXNucHJpbnRmKHRf YnVmLCBzaXplb2YodF9idWYpLCAic2V0ZmFjbCAtZCAtbSB1Ojpyd3gsZzo6cncsbzo6cnd4LG06 cncgJXMvJXMiLCBpbmZvLT50X21vdW50cG9pbnQsIFRfRElSMSk7DQo+PiArCQlpZiAoc3lzdGVt KHRfYnVmKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IHN5c3RlbSIpOw0KPj4gKw0KPj4gKwkJaWYg KCFzd2l0Y2hfaWRzKDEwMDAwLCAxMTAwMCkpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBzd2l0Y2gg ZnNpZHMiKTsNCj4+ICsNCj4+ICsJCS8qIGNyZWF0ZSByZWd1bGFyIGZpbGUgdmlhIG9wZW4oKSAq Lw0KPj4gKwkJZmlsZTFfZmQgPSBvcGVuYXQob3Blbl90cmVlX2ZkLCBGSUxFMSwgT19DUkVBVCB8 IE9fRVhDTCB8IE9fQ0xPRVhFQywgU19JWEdSUCB8IFNfSVNHSUQpOw0KPj4gKwkJaWYgKGZpbGUx X2ZkIDwgMCkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IGNyZWF0ZSIpOw0KPj4gKw0KPj4gKwkJLyog TmVpdGhlciBpbl9ncm91cF9wKCkgbm9yIGNhcGFibGVfd3J0X2lub2RlX3VpZGdpZCgpIHNvIHNl dGdpZA0KPj4gKwkJICogYml0IG5lZWRzIHRvIGJlIHN0cmlwcGVkLg0KPj4gKwkJICovDQo+PiAr CQlpZiAoaXNfc2V0Z2lkKG9wZW5fdHJlZV9mZCwgRklMRTEsIDApKQ0KPj4gKwkJCWRpZSgiZmFp bHVyZTogaXNfc2V0Z2lkIik7DQo+PiArDQo+PiArCQlpZiAoaXNfaXhncnAob3Blbl90cmVlX2Zk LCBGSUxFMSwgMCkpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBpc19peGdycCIpOw0KPj4gKw0KPj4g KwkJLyogY3JlYXRlIGRpcmVjdG9yeSAqLw0KPj4gKwkJaWYgKG1rZGlyYXQob3Blbl90cmVlX2Zk LCBESVIxLCAwMDAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IGNyZWF0ZSIpOw0KPj4gKw0KPj4g KwkJaWYgKHhmc19pcml4X3NnaWRfaW5oZXJpdF9lbmFibGVkKGluZm8tPnRfZnN0eXBlKSkgew0K Pj4gKwkJCS8qIFdlJ3JlIG5vdCBpbl9ncm91cF9wKCkuICovDQo+PiArCQkJaWYgKGlzX3NldGdp ZChvcGVuX3RyZWVfZmQsIERJUjEsIDApKQ0KPj4gKwkJCQlkaWUoImZhaWx1cmU6IGlzX3NldGdp ZCIpOw0KPj4gKwkJfSBlbHNlIHsNCj4+ICsJCQkvKiBEaXJlY3RvcmllcyBhbHdheXMgaW5oZXJp dCB0aGUgc2V0Z2lkIGJpdC4gKi8NCj4+ICsJCQlpZiAoIWlzX3NldGdpZChvcGVuX3RyZWVfZmQs IERJUjEsIDApKQ0KPj4gKwkJCQlkaWUoImZhaWx1cmU6IGlzX3NldGdpZCIpOw0KPj4gKwkJfQ0K Pj4gKw0KPj4gKwkJaWYgKGlzX2l4Z3JwKG9wZW5fdHJlZV9mZCwgRElSMSwgMCkpDQo+PiArCQkJ ZGllKCJmYWlsdXJlOiBpc19peGdycCIpOw0KPj4gKw0KPj4gKwkJLyogY3JlYXRlIGEgc3BlY2lh bCBmaWxlIHZpYSBta25vZGF0KCkgdmZzX2NyZWF0ZSAqLw0KPj4gKwkJaWYgKG1rbm9kYXQob3Bl bl90cmVlX2ZkLCBGSUxFMiwgU19JRlJFRyB8IFNfSVNHSUQgfCBTX0lYR1JQLCAwKSkNCj4+ICsJ CQlkaWUoImZhaWx1cmU6IG1rbm9kYXQiKTsNCj4+ICsNCj4+ICsJCWlmIChpc19zZXRnaWQob3Bl bl90cmVlX2ZkLCBGSUxFMiwgMCkpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBpc19zZXRnaWQiKTsN Cj4+ICsNCj4+ICsJCWlmIChpc19peGdycChvcGVuX3RyZWVfZmQsIEZJTEUyLCAwKSkNCj4+ICsJ CQlkaWUoImZhaWx1cmU6IGlzX2l4Z3JwIik7DQo+PiArDQo+PiArCQkvKiBjcmVhdGUgYSB3aGl0 ZW91dCBkZXZpY2UgdmlhIG1rbm9kYXQoKSB2ZnNfbWtub2QgKi8NCj4+ICsJCWlmIChta25vZGF0 KG9wZW5fdHJlZV9mZCwgQ0hSREVWMSwgU19JRkNIUiB8IFNfSVNHSUQgfCBTX0lYR1JQLCAwKSkN Cj4+ICsJCQlkaWUoImZhaWx1cmU6IG1rbm9kYXQiKTsNCj4+ICsNCj4+ICsJCWlmIChpc19zZXRn aWQob3Blbl90cmVlX2ZkLCBDSFJERVYxLCAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IGlzX3Nl dGdpZCIpOw0KPj4gKw0KPj4gKwkJaWYgKGlzX2l4Z3JwKG9wZW5fdHJlZV9mZCwgQ0hSREVWMSwg MCkpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBpc19peGdycCIpOw0KPj4gKw0KPj4gKwkJLyoNCj4+ ICsJCSAqIEluIHNldGdpZCBkaXJlY3RvcmllcyBuZXdseSBjcmVhdGVkIGZpbGVzIGFsd2F5cyBp bmhlcml0IHRoZQ0KPj4gKwkJICogZ2lkIGZyb20gdGhlIHBhcmVudCBkaXJlY3RvcnkuIFZlcmlm eSB0aGF0IHRoZSBmaWxlIGlzIG93bmVkDQo+PiArCQkgKiBieSBnaWQgMTAwMDAsIG5vdCBieSBn aWQgMTEwMDAuDQo+PiArCQkgKi8NCj4+ICsJCWlmICghZXhwZWN0ZWRfdWlkX2dpZChvcGVuX3Ry ZWVfZmQsIEZJTEUxLCAwLCAxMDAwMCwgMTAwMDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogY2hl Y2sgb3duZXJzaGlwIik7DQo+PiArDQo+PiArCQkvKg0KPj4gKwkJICogSW4gc2V0Z2lkIGRpcmVj dG9yaWVzIG5ld2x5IGNyZWF0ZWQgZGlyZWN0b3JpZXMgYWx3YXlzDQo+PiArCQkgKiBpbmhlcml0 IHRoZSBnaWQgZnJvbSB0aGUgcGFyZW50IGRpcmVjdG9yeS4gVmVyaWZ5IHRoYXQgdGhlDQo+PiAr CQkgKiBkaXJlY3RvcnkgaXMgb3duZWQgYnkgZ2lkIDEwMDAwLCBub3QgYnkgZ2lkIDExMDAwLg0K Pj4gKwkJICovDQo+PiArCQlpZiAoIWV4cGVjdGVkX3VpZF9naWQob3Blbl90cmVlX2ZkLCBESVIx LCAwLCAxMDAwMCwgMTAwMDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogY2hlY2sgb3duZXJzaGlw Iik7DQo+PiArDQo+PiArCQlpZiAoIWV4cGVjdGVkX3VpZF9naWQob3Blbl90cmVlX2ZkLCBGSUxF MiwgMCwgMTAwMDAsIDEwMDAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IGNoZWNrIG93bmVyc2hp cCIpOw0KPj4gKw0KPj4gKwkJaWYgKCFleHBlY3RlZF91aWRfZ2lkKG9wZW5fdHJlZV9mZCwgQ0hS REVWMSwgMCwgMTAwMDAsIDEwMDAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IGNoZWNrIG93bmVy c2hpcCIpOw0KPj4gKw0KPj4gKwkJaWYgKHVubGlua2F0KG9wZW5fdHJlZV9mZCwgRklMRTEsIDAp KQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogZGVsZXRlIik7DQo+PiArDQo+PiArCQlpZiAodW5saW5r YXQob3Blbl90cmVlX2ZkLCBESVIxLCBBVF9SRU1PVkVESVIpKQ0KPj4gKwkJCWRpZSgiZmFpbHVy ZTogZGVsZXRlIik7DQo+PiArDQo+PiArCQlpZiAodW5saW5rYXQob3Blbl90cmVlX2ZkLCBGSUxF MiwgMCkpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBkZWxldGUiKTsNCj4+ICsNCj4+ICsJCWlmICh1 bmxpbmthdChvcGVuX3RyZWVfZmQsIENIUkRFVjEsIDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTog ZGVsZXRlIik7DQo+PiArDQo+PiArCQkvKiBjcmVhdGUgdG1wZmlsZSB2aWEgZmlsZXN5c3RlbSB0 bXBmaWxlIGFwaSAqLw0KPj4gKwkJaWYgKHN1cHBvcnRlZCkgew0KPj4gKwkJCXRtcGZpbGVfZmQg PSBvcGVuYXQob3Blbl90cmVlX2ZkLCAiLiIsIE9fVE1QRklMRSB8IE9fUkRXUiwgU19JWEdSUCB8 IFNfSVNHSUQpOw0KPj4gKwkJCWlmICh0bXBmaWxlX2ZkIDwgMCkNCj4+ICsJCQkJZGllKCJmYWls dXJlOiBjcmVhdGUiKTsNCj4+ICsJCQkvKiBsaW5rIHRoZSB0ZW1wb3JhcnkgZmlsZSBpbnRvIHRo ZSBmaWxlc3lzdGVtLCBtYWtpbmcgaXQgcGVybWFuZW50ICovDQo+PiArCQkJc25wcmludGYocGF0 aCwgUEFUSF9NQVgsICAiL3Byb2Mvc2VsZi9mZC8lZCIsIHRtcGZpbGVfZmQpOw0KPj4gKwkJCWlm IChsaW5rYXQoQVRfRkRDV0QsIHBhdGgsIG9wZW5fdHJlZV9mZCwgRklMRTMsIEFUX1NZTUxJTktf Rk9MTE9XKSkNCj4+ICsJCQkJZGllKCJmYWlsdXJlOiBsaW5rYXQiKTsNCj4+ICsJCQlpZiAoY2xv c2UodG1wZmlsZV9mZCkpDQo+PiArCQkJCWRpZSgiZmFpbHVyZTogY2xvc2UiKTsNCj4+ICsJCQlp ZiAoaXNfc2V0Z2lkKG9wZW5fdHJlZV9mZCwgRklMRTMsIDApKQ0KPj4gKwkJCQlkaWUoImZhaWx1 cmU6IGlzX3NldGdpZCIpOw0KPj4gKwkJCWlmIChpc19peGdycChvcGVuX3RyZWVfZmQsIEZJTEUz LCAwKSkNCj4+ICsJCQkJZGllKCJmYWlsdXJlOiBpc19peGdycCIpOw0KPj4gKwkJCWlmICghZXhw ZWN0ZWRfdWlkX2dpZChvcGVuX3RyZWVfZmQsIEZJTEUzLCAwLCAxMDAwMCwgMTAwMDApKQ0KPj4g KwkJCQlkaWUoImZhaWx1cmU6IGNoZWNrIG93bmVyc2hpcCIpOw0KPj4gKwkJCWlmICh1bmxpbmth dChvcGVuX3RyZWVfZmQsIEZJTEUzLCAwKSkNCj4+ICsJCQkJZGllKCJmYWlsdXJlOiBkZWxldGUi KTsNCj4+ICsJCX0NCj4+ICsNCj4+ICsJCWV4aXQoRVhJVF9TVUNDRVNTKTsNCj4+ICsJfQ0KPj4g KwlpZiAod2FpdF9mb3JfcGlkKHBpZCkpDQo+PiArCQlnb3RvIG91dDsNCj4+ICsNCj4+ICsJcGlk ID0gZm9yaygpOw0KPj4gKwlpZiAocGlkIDwgMCkgew0KPj4gKwkJbG9nX3N0ZGVycigiZmFpbHVy ZTogZm9yayIpOw0KPj4gKwkJZ290byBvdXQ7DQo+PiArCX0NCj4+ICsJaWYgKHBpZCA9PSAwKSB7 DQo+PiArCQkvKiBUaGUgZ3JvdXAgcGVybWlzc2lvbnMgY29ycmVzcG9uZCB0byB0aGUgcGVybWlz c2lvbnMgb2YgdGhlDQo+PiArCQkgKiBBQ0xfR1JPVVBfT0JKIGVudHJ5Lg0KPj4gKwkJICovDQo+ PiArCQlzbnByaW50Zih0X2J1Ziwgc2l6ZW9mKHRfYnVmKSwgInNldGZhY2wgLWQgLW0gdTo6cnd4 LGc6OnJ3eCxvOjpyd3gsICVzLyVzIiwgaW5mby0+dF9tb3VudHBvaW50LCBUX0RJUjEpOw0KPj4g KwkJaWYgKHN5c3RlbSh0X2J1ZikpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBzeXN0ZW0iKTsNCj4+ ICsNCj4+ICsJCWlmICghc3dpdGNoX2lkcygxMDAwMCwgMTEwMDApKQ0KPj4gKwkJCWRpZSgiZmFp bHVyZTogc3dpdGNoIGZzaWRzIik7DQo+PiArDQo+PiArCQkvKiBjcmVhdGUgcmVndWxhciBmaWxl IHZpYSBvcGVuKCkgKi8NCj4+ICsJCWZpbGUxX2ZkID0gb3BlbmF0KG9wZW5fdHJlZV9mZCwgRklM RTEsIE9fQ1JFQVQgfCBPX0VYQ0wgfCBPX0NMT0VYRUMsIFNfSVhHUlAgfCBTX0lTR0lEKTsNCj4+ ICsJCWlmIChmaWxlMV9mZCA8IDApDQo+PiArCQkJZGllKCJmYWlsdXJlOiBjcmVhdGUiKTsNCj4+ ICsNCj4+ICsJCS8qIE5laXRoZXIgaW5fZ3JvdXBfcCgpIG5vciBjYXBhYmxlX3dydF9pbm9kZV91 aWRnaWQoKSBzbyBzZXRnaWQNCj4+ICsJCSAqIGJpdCBuZWVkcyB0byBiZSBzdHJpcHBlZC4NCj4+ ICsJCSAqLw0KPj4gKwkJaWYgKGlzX3NldGdpZChvcGVuX3RyZWVfZmQsIEZJTEUxLCAwKSkNCj4+ ICsJCQlkaWUoImZhaWx1cmU6IGlzX3NldGdpZCIpOw0KPj4gKw0KPj4gKwkJaWYgKCFpc19peGdy cChvcGVuX3RyZWVfZmQsIEZJTEUxLCAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IGlzX2l4Z3Jw Iik7DQo+PiArDQo+PiArCQkvKiBjcmVhdGUgZGlyZWN0b3J5ICovDQo+PiArCQlpZiAobWtkaXJh dChvcGVuX3RyZWVfZmQsIERJUjEsIDAwMDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogY3JlYXRl Iik7DQo+PiArDQo+PiArCQlpZiAoeGZzX2lyaXhfc2dpZF9pbmhlcml0X2VuYWJsZWQoaW5mby0+ dF9mc3R5cGUpKSB7DQo+PiArCQkJLyogV2UncmUgbm90IGluX2dyb3VwX3AoKS4gKi8NCj4+ICsJ CQlpZiAoaXNfc2V0Z2lkKG9wZW5fdHJlZV9mZCwgRElSMSwgMCkpDQo+PiArCQkJCWRpZSgiZmFp bHVyZTogaXNfc2V0Z2lkIik7DQo+PiArCQl9IGVsc2Ugew0KPj4gKwkJCS8qIERpcmVjdG9yaWVz IGFsd2F5cyBpbmhlcml0IHRoZSBzZXRnaWQgYml0LiAqLw0KPj4gKwkJCWlmICghaXNfc2V0Z2lk KG9wZW5fdHJlZV9mZCwgRElSMSwgMCkpDQo+PiArCQkJCWRpZSgiZmFpbHVyZTogaXNfc2V0Z2lk Iik7DQo+PiArCQl9DQo+PiArDQo+PiArCQlpZiAoaXNfaXhncnAob3Blbl90cmVlX2ZkLCBESVIx LCAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IGlzX2l4Z3JwIik7DQo+PiArDQo+PiArCQkvKiBj cmVhdGUgYSBzcGVjaWFsIGZpbGUgdmlhIG1rbm9kYXQoKSB2ZnNfY3JlYXRlICovDQo+PiArCQlp ZiAobWtub2RhdChvcGVuX3RyZWVfZmQsIEZJTEUyLCBTX0lGUkVHIHwgU19JU0dJRCB8IFNfSVhH UlAsIDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogbWtub2RhdCIpOw0KPj4gKw0KPj4gKwkJaWYg KGlzX3NldGdpZChvcGVuX3RyZWVfZmQsIEZJTEUyLCAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6 IGlzX3NldGdpZCIpOw0KPj4gKw0KPj4gKwkJaWYgKCFpc19peGdycChvcGVuX3RyZWVfZmQsIEZJ TEUyLCAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IGlzX2l4Z3JwIik7DQo+PiArDQo+PiArCQkv KiBjcmVhdGUgYSB3aGl0ZW91dCBkZXZpY2UgdmlhIG1rbm9kYXQoKSB2ZnNfbWtub2QgKi8NCj4+ ICsJCWlmIChta25vZGF0KG9wZW5fdHJlZV9mZCwgQ0hSREVWMSwgU19JRkNIUiB8IFNfSVNHSUQg fCBTX0lYR1JQLCAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IG1rbm9kYXQiKTsNCj4+ICsNCj4+ ICsJCWlmIChpc19zZXRnaWQob3Blbl90cmVlX2ZkLCBDSFJERVYxLCAwKSkNCj4+ICsJCQlkaWUo ImZhaWx1cmU6IGlzX3NldGdpZCIpOw0KPj4gKw0KPj4gKwkJaWYgKCFpc19peGdycChvcGVuX3Ry ZWVfZmQsIENIUkRFVjEsIDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogaXNfaXhncnAiKTsNCj4+ ICsNCj4+ICsJCS8qDQo+PiArCQkgKiBJbiBzZXRnaWQgZGlyZWN0b3JpZXMgbmV3bHkgY3JlYXRl ZCBmaWxlcyBhbHdheXMgaW5oZXJpdCB0aGUNCj4+ICsJCSAqIGdpZCBmcm9tIHRoZSBwYXJlbnQg ZGlyZWN0b3J5LiBWZXJpZnkgdGhhdCB0aGUgZmlsZSBpcyBvd25lZA0KPj4gKwkJICogYnkgZ2lk IDEwMDAwLCBub3QgYnkgZ2lkIDExMDAwLg0KPj4gKwkJICovDQo+PiArCQlpZiAoIWV4cGVjdGVk X3VpZF9naWQob3Blbl90cmVlX2ZkLCBGSUxFMSwgMCwgMTAwMDAsIDEwMDAwKSkNCj4+ICsJCQlk aWUoImZhaWx1cmU6IGNoZWNrIG93bmVyc2hpcCIpOw0KPj4gKw0KPj4gKwkJLyoNCj4+ICsJCSAq IEluIHNldGdpZCBkaXJlY3RvcmllcyBuZXdseSBjcmVhdGVkIGRpcmVjdG9yaWVzIGFsd2F5cw0K Pj4gKwkJICogaW5oZXJpdCB0aGUgZ2lkIGZyb20gdGhlIHBhcmVudCBkaXJlY3RvcnkuIFZlcmlm eSB0aGF0IHRoZQ0KPj4gKwkJICogZGlyZWN0b3J5IGlzIG93bmVkIGJ5IGdpZCAxMDAwMCwgbm90 IGJ5IGdpZCAxMTAwMC4NCj4+ICsJCSAqLw0KPj4gKwkJaWYgKCFleHBlY3RlZF91aWRfZ2lkKG9w ZW5fdHJlZV9mZCwgRElSMSwgMCwgMTAwMDAsIDEwMDAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6 IGNoZWNrIG93bmVyc2hpcCIpOw0KPj4gKw0KPj4gKwkJaWYgKCFleHBlY3RlZF91aWRfZ2lkKG9w ZW5fdHJlZV9mZCwgRklMRTIsIDAsIDEwMDAwLCAxMDAwMCkpDQo+PiArCQkJZGllKCJmYWlsdXJl OiBjaGVjayBvd25lcnNoaXAiKTsNCj4+ICsNCj4+ICsJCWlmICghZXhwZWN0ZWRfdWlkX2dpZChv cGVuX3RyZWVfZmQsIENIUkRFVjEsIDAsIDEwMDAwLCAxMDAwMCkpDQo+PiArCQkJZGllKCJmYWls dXJlOiBjaGVjayBvd25lcnNoaXAiKTsNCj4+ICsNCj4+ICsJCWlmICh1bmxpbmthdChvcGVuX3Ry ZWVfZmQsIEZJTEUxLCAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IGRlbGV0ZSIpOw0KPj4gKw0K Pj4gKwkJaWYgKHVubGlua2F0KG9wZW5fdHJlZV9mZCwgRElSMSwgQVRfUkVNT1ZFRElSKSkNCj4+ ICsJCQlkaWUoImZhaWx1cmU6IGRlbGV0ZSIpOw0KPj4gKw0KPj4gKwkJaWYgKHVubGlua2F0KG9w ZW5fdHJlZV9mZCwgRklMRTIsIDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogZGVsZXRlIik7DQo+ PiArDQo+PiArCQlpZiAodW5saW5rYXQob3Blbl90cmVlX2ZkLCBDSFJERVYxLCAwKSkNCj4+ICsJ CQlkaWUoImZhaWx1cmU6IGRlbGV0ZSIpOw0KPj4gKw0KPj4gKwkJLyogY3JlYXRlIHRtcGZpbGUg dmlhIGZpbGVzeXN0ZW0gdG1wZmlsZSBhcGkgKi8NCj4+ICsJCWlmIChzdXBwb3J0ZWQpIHsNCj4+ ICsJCQl0bXBmaWxlX2ZkID0gb3BlbmF0KG9wZW5fdHJlZV9mZCwgIi4iLCBPX1RNUEZJTEUgfCBP X1JEV1IsIFNfSVhHUlAgfCBTX0lTR0lEKTsNCj4+ICsJCQlpZiAodG1wZmlsZV9mZCA8IDApDQo+ PiArCQkJCWRpZSgiZmFpbHVyZTogY3JlYXRlIik7DQo+PiArCQkJLyogbGluayB0aGUgdGVtcG9y YXJ5IGZpbGUgaW50byB0aGUgZmlsZXN5c3RlbSwgbWFraW5nIGl0IHBlcm1hbmVudCAqLw0KPj4g KwkJCXNucHJpbnRmKHBhdGgsIFBBVEhfTUFYLCAgIi9wcm9jL3NlbGYvZmQvJWQiLCB0bXBmaWxl X2ZkKTsNCj4+ICsJCQlpZiAobGlua2F0KEFUX0ZEQ1dELCBwYXRoLCBvcGVuX3RyZWVfZmQsIEZJ TEUzLCBBVF9TWU1MSU5LX0ZPTExPVykpDQo+PiArCQkJCWRpZSgiZmFpbHVyZTogbGlua2F0Iik7 DQo+PiArCQkJaWYgKGNsb3NlKHRtcGZpbGVfZmQpKQ0KPj4gKwkJCQlkaWUoImZhaWx1cmU6IGNs b3NlIik7DQo+PiArCQkJaWYgKGlzX3NldGdpZChvcGVuX3RyZWVfZmQsIEZJTEUzLCAwKSkNCj4+ ICsJCQkJZGllKCJmYWlsdXJlOiBpc19zZXRnaWQiKTsNCj4+ICsJCQlpZiAoIWlzX2l4Z3JwKG9w ZW5fdHJlZV9mZCwgRklMRTMsIDApKQ0KPj4gKwkJCQlkaWUoImZhaWx1cmU6IGlzX2l4Z3JwIik7 DQo+PiArCQkJaWYgKCFleHBlY3RlZF91aWRfZ2lkKG9wZW5fdHJlZV9mZCwgRklMRTMsIDAsIDEw MDAwLCAxMDAwMCkpDQo+PiArCQkJCWRpZSgiZmFpbHVyZTogY2hlY2sgb3duZXJzaGlwIik7DQo+ PiArCQkJaWYgKHVubGlua2F0KG9wZW5fdHJlZV9mZCwgRklMRTMsIDApKQ0KPj4gKwkJCQlkaWUo ImZhaWx1cmU6IGRlbGV0ZSIpOw0KPj4gKwkJfQ0KPj4gKw0KPj4gKwkJZXhpdChFWElUX1NVQ0NF U1MpOw0KPj4gKwl9DQo+PiArCWlmICh3YWl0X2Zvcl9waWQocGlkKSkNCj4+ICsJCWdvdG8gb3V0 Ow0KPj4gKw0KPj4gKwlmcmV0ID0gMDsNCj4+ICsJbG9nX2RlYnVnKCJSYW4gdGVzdCIpOw0KPj4g K291dDoNCj4+ICsJc2FmZV9jbG9zZShhdHRyLnVzZXJuc19mZCk7DQo+PiArCXNhZmVfY2xvc2Uo ZmlsZTFfZmQpOw0KPj4gKwlzYWZlX2Nsb3NlKG9wZW5fdHJlZV9mZCk7DQo+PiArDQo+PiArCXJl dHVybiBmcmV0Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IHNldGdpZF9jcmVhdGVfYWNs X2lkbWFwcGVkX2luX3VzZXJucyhjb25zdCBzdHJ1Y3QgdmZzdGVzdF9pbmZvICppbmZvKQ0KPj4g K3sNCj4+ICsJaW50IGZyZXQgPSAtMTsNCj4+ICsJaW50IGZpbGUxX2ZkID0gLUVCQURGLCBvcGVu X3RyZWVfZmQgPSAtRUJBREY7DQo+PiArCXN0cnVjdCBtb3VudF9hdHRyIGF0dHIgPSB7DQo+PiAr CQkuYXR0cl9zZXQgPSBNT1VOVF9BVFRSX0lETUFQLA0KPj4gKwl9Ow0KPj4gKwlwaWRfdCBwaWQ7 DQo+PiArCWludCB0bXBmaWxlX2ZkID0gLUVCQURGOw0KPj4gKwlib29sIHN1cHBvcnRlZCA9IGZh bHNlOw0KPj4gKwljaGFyIHBhdGhbUEFUSF9NQVhdOw0KPj4gKwltb2RlX3QgbW9kZTsNCj4+ICsN Cj4+ICsJaWYgKCFjYXBzX3N1cHBvcnRlZCgpKQ0KPj4gKwkJcmV0dXJuIDA7DQo+PiArDQo+PiAr CWlmIChmY2htb2QoaW5mby0+dF9kaXIxX2ZkLCBTX0lSVVNSIHwNCj4+ICsJCQkgICAgICBTX0lX VVNSIHwNCj4+ICsJCQkgICAgICBTX0lSR1JQIHwNCj4+ICsJCQkgICAgICBTX0lXR1JQIHwNCj4+ ICsJCQkgICAgICBTX0lST1RIIHwNCj4+ICsJCQkgICAgICBTX0lXT1RIIHwNCj4+ICsJCQkgICAg ICBTX0lYVVNSIHwNCj4+ICsJCQkgICAgICBTX0lYR1JQIHwNCj4+ICsJCQkgICAgICBTX0lYT1RI IHwNCj4+ICsJCQkgICAgICBTX0lTR0lEKSwgMCkgew0KPj4gKwkJbG9nX3N0ZGVycigiZmFpbHVy ZTogZmNobW9kIik7DQo+PiArCQlnb3RvIG91dDsNCj4+ICsJfQ0KPj4gKw0KPj4gKwkvKiBWZXJp ZnkgdGhhdCB0aGUgc2lkIGJpdHMgZ290IHJhaXNlZC4gKi8NCj4+ICsJaWYgKCFpc19zZXRnaWQo aW5mby0+dF9kaXIxX2ZkLCAiIiwgQVRfRU1QVFlfUEFUSCkpIHsNCj4+ICsJCWxvZ19zdGRlcnIo ImZhaWx1cmU6IGlzX3NldGdpZCIpOw0KPj4gKwkJZ290byBvdXQ7DQo+PiArCX0NCj4+ICsNCj4+ ICsJLyogQ2hhbmdpbmcgbW91bnQgcHJvcGVydGllcyBvbiBhIGRldGFjaGVkIG1vdW50LiAqLw0K Pj4gKwlhdHRyLnVzZXJuc19mZAk9IGdldF91c2VybnNfZmQoMCwgMTAwMDAsIDEwMDAwKTsNCj4+ ICsJaWYgKGF0dHIudXNlcm5zX2ZkIDwgMCkgew0KPj4gKwkJbG9nX3N0ZGVycigiZmFpbHVyZTog Z2V0X3VzZXJuc19mZCIpOw0KPj4gKwkJZ290byBvdXQ7DQo+PiArCX0NCj4+ICsNCj4+ICsJb3Bl bl90cmVlX2ZkID0gc3lzX29wZW5fdHJlZShpbmZvLT50X2RpcjFfZmQsICIiLA0KPj4gKwkJCQkg ICAgIEFUX0VNUFRZX1BBVEggfA0KPj4gKwkJCQkgICAgIEFUX05PX0FVVE9NT1VOVCB8DQo+PiAr CQkJCSAgICAgQVRfU1lNTElOS19OT0ZPTExPVyB8DQo+PiArCQkJCSAgICAgT1BFTl9UUkVFX0NM T0VYRUMgfA0KPj4gKwkJCQkgICAgIE9QRU5fVFJFRV9DTE9ORSk7DQo+PiArCWlmIChvcGVuX3Ry ZWVfZmQgPCAwKSB7DQo+PiArCQlsb2dfc3RkZXJyKCJmYWlsdXJlOiBzeXNfb3Blbl90cmVlIik7 DQo+PiArCQlnb3RvIG91dDsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlpZiAoc3lzX21vdW50X3NldGF0 dHIob3Blbl90cmVlX2ZkLCAiIiwgQVRfRU1QVFlfUEFUSCwgJmF0dHIsIHNpemVvZihhdHRyKSkp IHsNCj4+ICsJCWxvZ19zdGRlcnIoImZhaWx1cmU6IHN5c19tb3VudF9zZXRhdHRyIik7DQo+PiAr CQlnb3RvIG91dDsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlzdXBwb3J0ZWQgPSBvcGVuYXRfdG1wZmls ZV9zdXBwb3J0ZWQob3Blbl90cmVlX2ZkKTsNCj4+ICsNCj4+ICsJLyogT25seSB1bWFzayB3aXRo IFNfSVhHUlAgYmVjYXVzZSBpbm9kZSBzdHJpcCBTX0lTR0lEIHdpbGwgY2hlY2sgbW9kZQ0KPj4g KwkgKiB3aGV0aGVyIGhhcyBncm91cCBleGVjdXRlIG9yIHNlYXJjaCBwZXJtaXNzaW9uLg0KPj4g KwkgKi8NCj4+ICsJdW1hc2soU19JWEdSUCk7DQo+PiArCW1vZGUgPSB1bWFzayhTX0lYR1JQKTsN Cj4+ICsJaWYgKCEobW9kZSAmIFNfSVhHUlApKQ0KPj4gKwkJZGllKCJmYWlsdXJlOiB1bWFzayIp Ow0KPj4gKw0KPj4gKwkvKg0KPj4gKwkgKiBCZWxvdyB3ZSB2ZXJpZnkgdGhhdCBzZXRnaWQgaW5o ZXJpdGFuY2UgZm9yIGEgbmV3bHkgY3JlYXRlZCBmaWxlIG9yDQo+PiArCSAqIGRpcmVjdG9yeSB3 b3JrcyBjb3JyZWN0bHkuIEFzIHBhcnQgb2YgdGhpcyB3ZSBuZWVkIHRvIHZlcmlmeSB0aGF0DQo+ PiArCSAqIG5ld2x5IGNyZWF0ZWQgZmlsZXMgb3IgZGlyZWN0b3JpZXMgaW5oZXJpdCB0aGVpciBn aWQgZnJvbSB0aGVpcg0KPj4gKwkgKiBwYXJlbnQgZGlyZWN0b3J5LiBTbyB3ZSBjaGFuZ2UgdGhl IHBhcmVudCBkaXJlY3RvcmllJ3MgZ2lkIHRvIDEwMDANCj4+ICsJICogYW5kIGNyZWF0ZSBhIGZp bGUgd2l0aCBmc3tnLHV9aWQgMCBhbmQgdmVyaWZ5IHRoYXQgdGhlIG5ld2x5IGNyZWF0ZWQNCj4+ ICsJICogZmlsZSBhbmQgZGlyZWN0b3J5IGluaGVyaXQgZ2lkIDEwMDAsIG5vdCAwLg0KPj4gKwkg Ki8NCj4+ICsJaWYgKGZjaG93bmF0KGluZm8tPnRfZGlyMV9mZCwgIiIsIC0xLCAxMDAwLCBBVF9T WU1MSU5LX05PRk9MTE9XIHwgQVRfRU1QVFlfUEFUSCkpIHsNCj4+ICsJCWxvZ19zdGRlcnIoImZh aWx1cmU6IGZjaG93bmF0Iik7DQo+PiArCQlnb3RvIG91dDsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlw aWQgPSBmb3JrKCk7DQo+PiArCWlmIChwaWQgPCAwKSB7DQo+PiArCQlsb2dfc3RkZXJyKCJmYWls dXJlOiBmb3JrIik7DQo+PiArCQlnb3RvIG91dDsNCj4+ICsJfQ0KPj4gKwlpZiAocGlkID09IDAp IHsNCj4+ICsJCS8qIFRoZSBncm91cCBwZXJtaXNzaW9ucyBjb3JyZXNwb25kIHRvIHRoZSBwZXJt aXNzaW9ucyBvZiB0aGUNCj4+ICsJCSAqIEFDTF9NQVNLIGVudHJ5Lg0KPj4gKwkJICovDQo+PiAr CQlzbnByaW50Zih0X2J1Ziwgc2l6ZW9mKHRfYnVmKSwgInNldGZhY2wgLWQgLW0gdTo6cnd4LGc6 OnJ3LG86OnJ3eCxtOnJ3ICVzLyVzIiwgaW5mby0+dF9tb3VudHBvaW50LCBUX0RJUjEpOw0KPj4g KwkJaWYgKHN5c3RlbSh0X2J1ZikpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBzeXN0ZW0iKTsNCj4+ ICsNCj4+ICsJCWlmICghY2Fwc19zdXBwb3J0ZWQoKSkgew0KPj4gKwkJCWxvZ19kZWJ1Zygic2tp cDogY2FwYWJpbGl0eSBsaWJyYXJ5IG5vdCBpbnN0YWxsZWQiKTsNCj4+ICsJCQlleGl0KEVYSVRf U1VDQ0VTUyk7DQo+PiArCQl9DQo+PiArDQo+PiArCQlpZiAoIXN3aXRjaF91c2VybnMoYXR0ci51 c2VybnNfZmQsIDAsIDAsIGZhbHNlKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IHN3aXRjaF91c2Vy bnMiKTsNCj4+ICsNCj4+ICsJCWlmICghY2Fwc19kb3duX2ZzZXRpZCgpKQ0KPj4gKwkJCWRpZSgi ZmFpbHVyZTogY2Fwc19kb3duX2ZzZXRpZCIpOw0KPj4gKw0KPj4gKwkJLyogY3JlYXRlIHJlZ3Vs YXIgZmlsZSB2aWEgb3BlbigpICovDQo+PiArCQlmaWxlMV9mZCA9IG9wZW5hdChvcGVuX3RyZWVf ZmQsIEZJTEUxLCBPX0NSRUFUIHwgT19FWENMIHwgT19DTE9FWEVDLCBTX0lYR1JQIHwgU19JU0dJ RCk7DQo+PiArCQlpZiAoZmlsZTFfZmQgPCAwKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogY3JlYXRl Iik7DQo+PiArDQo+PiArCQkvKiBOZWl0aGVyIGluX2dyb3VwX3AoKSBub3IgY2FwYWJsZV93cnRf aW5vZGVfdWlkZ2lkKCkgc28gc2V0Z2lkDQo+PiArCQkgKiBiaXQgbmVlZHMgdG8gYmUgc3RyaXBw ZWQuDQo+PiArCQkgKi8NCj4+ICsJCWlmIChpc19zZXRnaWQob3Blbl90cmVlX2ZkLCBGSUxFMSwg MCkpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBpc19zZXRnaWQiKTsNCj4+ICsNCj4+ICsJCWlmIChp c19peGdycChvcGVuX3RyZWVfZmQsIEZJTEUxLCAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IGlz X2l4Z3JwIik7DQo+PiArDQo+PiArCQkvKiBjcmVhdGUgZGlyZWN0b3J5ICovDQo+PiArCQlpZiAo bWtkaXJhdChvcGVuX3RyZWVfZmQsIERJUjEsIDAwMDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTog Y3JlYXRlIik7DQo+PiArDQo+PiArCQlpZiAoeGZzX2lyaXhfc2dpZF9pbmhlcml0X2VuYWJsZWQo aW5mby0+dF9mc3R5cGUpKSB7DQo+PiArCQkJLyogV2UncmUgbm90IGluX2dyb3VwX3AoKS4gKi8N Cj4+ICsJCQlpZiAoaXNfc2V0Z2lkKG9wZW5fdHJlZV9mZCwgRElSMSwgMCkpDQo+PiArCQkJCWRp ZSgiZmFpbHVyZTogaXNfc2V0Z2lkIik7DQo+PiArCQl9IGVsc2Ugew0KPj4gKwkJCS8qIERpcmVj dG9yaWVzIGFsd2F5cyBpbmhlcml0IHRoZSBzZXRnaWQgYml0LiAqLw0KPj4gKwkJCWlmICghaXNf c2V0Z2lkKG9wZW5fdHJlZV9mZCwgRElSMSwgMCkpDQo+PiArCQkJCWRpZSgiZmFpbHVyZTogaXNf c2V0Z2lkIik7DQo+PiArCQl9DQo+PiArDQo+PiArCQlpZiAoaXNfaXhncnAob3Blbl90cmVlX2Zk LCBESVIxLCAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IGlzX2l4Z3JwIik7DQo+PiArDQo+PiAr CQkvKiBjcmVhdGUgYSBzcGVjaWFsIGZpbGUgdmlhIG1rbm9kYXQoKSB2ZnNfY3JlYXRlICovDQo+ PiArCQlpZiAobWtub2RhdChvcGVuX3RyZWVfZmQsIEZJTEUyLCBTX0lGUkVHIHwgU19JU0dJRCB8 IFNfSVhHUlAsIDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogbWtub2RhdCIpOw0KPj4gKw0KPj4g KwkJaWYgKGlzX3NldGdpZChvcGVuX3RyZWVfZmQsIEZJTEUyLCAwKSkNCj4+ICsJCQlkaWUoImZh aWx1cmU6IGlzX3NldGdpZCIpOw0KPj4gKw0KPj4gKwkJaWYgKGlzX2l4Z3JwKG9wZW5fdHJlZV9m ZCwgRklMRTIsIDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogaXNfaXhncnAiKTsNCj4+ICsNCj4+ ICsJCS8qIGNyZWF0ZSBhIHdoaXRlb3V0IGRldmljZSB2aWEgbWtub2RhdCgpIHZmc19ta25vZCAq Lw0KPj4gKwkJaWYgKG1rbm9kYXQob3Blbl90cmVlX2ZkLCBDSFJERVYxLCBTX0lGQ0hSIHwgU19J U0dJRCB8IFNfSVhHUlAsIDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogbWtub2RhdCIpOw0KPj4g Kw0KPj4gKwkJaWYgKGlzX3NldGdpZChvcGVuX3RyZWVfZmQsIENIUkRFVjEsIDApKQ0KPj4gKwkJ CWRpZSgiZmFpbHVyZTogaXNfc2V0Z2lkIik7DQo+PiArDQo+PiArCQlpZiAoaXNfaXhncnAob3Bl bl90cmVlX2ZkLCBDSFJERVYxLCAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IGlzX2l4Z3JwIik7 DQo+PiArDQo+PiArCQkvKg0KPj4gKwkJICogSW4gc2V0Z2lkIGRpcmVjdG9yaWVzIG5ld2x5IGNy ZWF0ZWQgZmlsZXMgYWx3YXlzIGluaGVyaXQgdGhlDQo+PiArCQkgKiBnaWQgZnJvbSB0aGUgcGFy ZW50IGRpcmVjdG9yeS4gVmVyaWZ5IHRoYXQgdGhlIGZpbGUgaXMgb3duZWQNCj4+ICsJCSAqIGJ5 IGdpZCAxMDAwLCBub3QgYnkgZ2lkIDAuDQo+PiArCQkgKi8NCj4+ICsJCWlmICghZXhwZWN0ZWRf dWlkX2dpZChvcGVuX3RyZWVfZmQsIEZJTEUxLCAwLCAwLCAxMDAwKSkNCj4+ICsJCQlkaWUoImZh aWx1cmU6IGNoZWNrIG93bmVyc2hpcCIpOw0KPj4gKw0KPj4gKwkJLyoNCj4+ICsJCSAqIEluIHNl dGdpZCBkaXJlY3RvcmllcyBuZXdseSBjcmVhdGVkIGRpcmVjdG9yaWVzIGFsd2F5cw0KPj4gKwkJ ICogaW5oZXJpdCB0aGUgZ2lkIGZyb20gdGhlIHBhcmVudCBkaXJlY3RvcnkuIFZlcmlmeSB0aGF0 IHRoZQ0KPj4gKwkJICogZGlyZWN0b3J5IGlzIG93bmVkIGJ5IGdpZCAxMDAwLCBub3QgYnkgZ2lk IDAuDQo+PiArCQkgKi8NCj4+ICsJCWlmICghZXhwZWN0ZWRfdWlkX2dpZChvcGVuX3RyZWVfZmQs IERJUjEsIDAsIDAsIDEwMDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogY2hlY2sgb3duZXJzaGlw Iik7DQo+PiArDQo+PiArCQlpZiAoIWV4cGVjdGVkX3VpZF9naWQob3Blbl90cmVlX2ZkLCBGSUxF MiwgMCwgMCwgMTAwMCkpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBjaGVjayBvd25lcnNoaXAiKTsN Cj4+ICsNCj4+ICsJCWlmICghZXhwZWN0ZWRfdWlkX2dpZChvcGVuX3RyZWVfZmQsIENIUkRFVjEs IDAsIDAsIDEwMDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogY2hlY2sgb3duZXJzaGlwIik7DQo+ PiArDQo+PiArCQlpZiAodW5saW5rYXQob3Blbl90cmVlX2ZkLCBGSUxFMSwgMCkpDQo+PiArCQkJ ZGllKCJmYWlsdXJlOiBkZWxldGUiKTsNCj4+ICsNCj4+ICsJCWlmICh1bmxpbmthdChvcGVuX3Ry ZWVfZmQsIERJUjEsIEFUX1JFTU9WRURJUikpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBkZWxldGUi KTsNCj4+ICsNCj4+ICsJCWlmICh1bmxpbmthdChvcGVuX3RyZWVfZmQsIEZJTEUyLCAwKSkNCj4+ ICsJCQlkaWUoImZhaWx1cmU6IGRlbGV0ZSIpOw0KPj4gKw0KPj4gKwkJaWYgKHVubGlua2F0KG9w ZW5fdHJlZV9mZCwgQ0hSREVWMSwgMCkpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBkZWxldGUiKTsN Cj4+ICsNCj4+ICsJCS8qIGNyZWF0ZSB0bXBmaWxlIHZpYSBmaWxlc3lzdGVtIHRtcGZpbGUgYXBp ICovDQo+PiArCQlpZiAoc3VwcG9ydGVkKSB7DQo+PiArCQkJdG1wZmlsZV9mZCA9IG9wZW5hdChv cGVuX3RyZWVfZmQsICIuIiwgT19UTVBGSUxFIHwgT19SRFdSLCBTX0lYR1JQIHwgU19JU0dJRCk7 DQo+PiArCQkJaWYgKHRtcGZpbGVfZmQgPCAwKQ0KPj4gKwkJCQlkaWUoImZhaWx1cmU6IGNyZWF0 ZSIpOw0KPj4gKwkJCS8qIGxpbmsgdGhlIHRlbXBvcmFyeSBmaWxlIGludG8gdGhlIGZpbGVzeXN0 ZW0sIG1ha2luZyBpdCBwZXJtYW5lbnQgKi8NCj4+ICsJCQlzbnByaW50ZihwYXRoLCBQQVRIX01B WCwgICIvcHJvYy9zZWxmL2ZkLyVkIiwgdG1wZmlsZV9mZCk7DQo+PiArCQkJaWYgKGxpbmthdChB VF9GRENXRCwgcGF0aCwgb3Blbl90cmVlX2ZkLCBGSUxFMywgQVRfU1lNTElOS19GT0xMT1cpKQ0K Pj4gKwkJCQlkaWUoImZhaWx1cmU6IGxpbmthdCIpOw0KPj4gKwkJCWlmIChjbG9zZSh0bXBmaWxl X2ZkKSkNCj4+ICsJCQkJZGllKCJmYWlsdXJlOiBjbG9zZSIpOw0KPj4gKwkJCWlmIChpc19zZXRn aWQob3Blbl90cmVlX2ZkLCBGSUxFMywgMCkpDQo+PiArCQkJCWRpZSgiZmFpbHVyZTogaXNfc2V0 Z2lkIik7DQo+PiArCQkJaWYgKGlzX2l4Z3JwKG9wZW5fdHJlZV9mZCwgRklMRTMsIDApKQ0KPj4g KwkJCQlkaWUoImZhaWx1cmU6IGlzX2l4Z3JwIik7DQo+PiArCQkJaWYgKCFleHBlY3RlZF91aWRf Z2lkKG9wZW5fdHJlZV9mZCwgRklMRTMsIDAsIDAsIDEwMDApKQ0KPj4gKwkJCQlkaWUoImZhaWx1 cmU6IGNoZWNrIG93bmVyc2hpcCIpOw0KPj4gKwkJCWlmICh1bmxpbmthdChvcGVuX3RyZWVfZmQs IEZJTEUzLCAwKSkNCj4+ICsJCQkJZGllKCJmYWlsdXJlOiBkZWxldGUiKTsNCj4+ICsJCX0NCj4+ ICsNCj4+ICsJCWV4aXQoRVhJVF9TVUNDRVNTKTsNCj4+ICsJfQ0KPj4gKwlpZiAod2FpdF9mb3Jf cGlkKHBpZCkpDQo+PiArCQlnb3RvIG91dDsNCj4+ICsNCj4+ICsJcGlkID0gZm9yaygpOw0KPj4g KwlpZiAocGlkIDwgMCkgew0KPj4gKwkJbG9nX3N0ZGVycigiZmFpbHVyZTogZm9yayIpOw0KPj4g KwkJZ290byBvdXQ7DQo+PiArCX0NCj4+ICsJaWYgKHBpZCA9PSAwKSB7DQo+PiArCQkvKiBUaGUg Z3JvdXAgcGVybWlzc2lvbnMgY29ycmVzcG9uZCB0byB0aGUgcGVybWlzc2lvbnMgb2YgdGhlDQo+ PiArCQkgKiBBQ0xfR1JPVVBfT0JKIGVudHJ5Lg0KPj4gKwkJICovDQo+PiArCQlzbnByaW50Zih0 X2J1Ziwgc2l6ZW9mKHRfYnVmKSwgInNldGZhY2wgLWQgLW0gdTo6cnd4LGc6OnJ3eCxvOjpyd3gs ICVzLyVzIiwgaW5mby0+dF9tb3VudHBvaW50LCBUX0RJUjEpOw0KPj4gKwkJaWYgKHN5c3RlbSh0 X2J1ZikpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBzeXN0ZW0iKTsNCj4+ICsNCj4+ICsJCWlmICgh Y2Fwc19zdXBwb3J0ZWQoKSkgew0KPj4gKwkJCWxvZ19kZWJ1Zygic2tpcDogY2FwYWJpbGl0eSBs aWJyYXJ5IG5vdCBpbnN0YWxsZWQiKTsNCj4+ICsJCQlleGl0KEVYSVRfU1VDQ0VTUyk7DQo+PiAr CQl9DQo+PiArDQo+PiArCQlpZiAoIXN3aXRjaF91c2VybnMoYXR0ci51c2VybnNfZmQsIDAsIDAs IGZhbHNlKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IHN3aXRjaF91c2VybnMiKTsNCj4+ICsNCj4+ ICsJCWlmICghY2Fwc19kb3duX2ZzZXRpZCgpKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogY2Fwc19k b3duX2ZzZXRpZCIpOw0KPj4gKw0KPj4gKwkJLyogY3JlYXRlIHJlZ3VsYXIgZmlsZSB2aWEgb3Bl bigpICovDQo+PiArCQlmaWxlMV9mZCA9IG9wZW5hdChvcGVuX3RyZWVfZmQsIEZJTEUxLCBPX0NS RUFUIHwgT19FWENMIHwgT19DTE9FWEVDLCBTX0lYR1JQIHwgU19JU0dJRCk7DQo+PiArCQlpZiAo ZmlsZTFfZmQgPCAwKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogY3JlYXRlIik7DQo+PiArDQo+PiAr CQkvKiBOZWl0aGVyIGluX2dyb3VwX3AoKSBub3IgY2FwYWJsZV93cnRfaW5vZGVfdWlkZ2lkKCkg c28gc2V0Z2lkDQo+PiArCQkgKiBiaXQgbmVlZHMgdG8gYmUgc3RyaXBwZWQuDQo+PiArCQkgKi8N Cj4+ICsJCWlmIChpc19zZXRnaWQob3Blbl90cmVlX2ZkLCBGSUxFMSwgMCkpDQo+PiArCQkJZGll KCJmYWlsdXJlOiBpc19zZXRnaWQiKTsNCj4+ICsNCj4+ICsJCWlmICghaXNfaXhncnAob3Blbl90 cmVlX2ZkLCBGSUxFMSwgMCkpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBpc19peGdycCIpOw0KPj4g Kw0KPj4gKwkJLyogY3JlYXRlIGRpcmVjdG9yeSAqLw0KPj4gKwkJaWYgKG1rZGlyYXQob3Blbl90 cmVlX2ZkLCBESVIxLCAwMDAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IGNyZWF0ZSIpOw0KPj4g Kw0KPj4gKwkJaWYgKHhmc19pcml4X3NnaWRfaW5oZXJpdF9lbmFibGVkKGluZm8tPnRfZnN0eXBl KSkgew0KPj4gKwkJCS8qIFdlJ3JlIG5vdCBpbl9ncm91cF9wKCkuICovDQo+PiArCQkJaWYgKGlz X3NldGdpZChvcGVuX3RyZWVfZmQsIERJUjEsIDApKQ0KPj4gKwkJCQlkaWUoImZhaWx1cmU6IGlz X3NldGdpZCIpOw0KPj4gKwkJfSBlbHNlIHsNCj4+ICsJCQkvKiBEaXJlY3RvcmllcyBhbHdheXMg aW5oZXJpdCB0aGUgc2V0Z2lkIGJpdC4gKi8NCj4+ICsJCQlpZiAoIWlzX3NldGdpZChvcGVuX3Ry ZWVfZmQsIERJUjEsIDApKQ0KPj4gKwkJCQlkaWUoImZhaWx1cmU6IGlzX3NldGdpZCIpOw0KPj4g KwkJfQ0KPj4gKw0KPj4gKwkJaWYgKGlzX2l4Z3JwKG9wZW5fdHJlZV9mZCwgRElSMSwgMCkpDQo+ PiArCQkJZGllKCJmYWlsdXJlOiBpc19peGdycCIpOw0KPj4gKw0KPj4gKwkJLyogY3JlYXRlIGEg c3BlY2lhbCBmaWxlIHZpYSBta25vZGF0KCkgdmZzX2NyZWF0ZSAqLw0KPj4gKwkJaWYgKG1rbm9k YXQob3Blbl90cmVlX2ZkLCBGSUxFMiwgU19JRlJFRyB8IFNfSVNHSUQgfCBTX0lYR1JQLCAwKSkN Cj4+ICsJCQlkaWUoImZhaWx1cmU6IG1rbm9kYXQiKTsNCj4+ICsNCj4+ICsJCWlmIChpc19zZXRn aWQob3Blbl90cmVlX2ZkLCBGSUxFMiwgMCkpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBpc19zZXRn aWQiKTsNCj4+ICsNCj4+ICsJCWlmICghaXNfaXhncnAob3Blbl90cmVlX2ZkLCBGSUxFMiwgMCkp DQo+PiArCQkJIGRpZSgiZmFpbHVyZTogaXNfaXhncnAiKTsNCj4+ICsJCS8qIGNyZWF0ZSBhIHdo aXRlb3V0IGRldmljZSB2aWEgbWtub2RhdCgpIHZmc19ta25vZCAqLw0KPj4gKwkJaWYgKG1rbm9k YXQob3Blbl90cmVlX2ZkLCBDSFJERVYxLCBTX0lGQ0hSIHwgU19JU0dJRCB8IFNfSVhHUlAsIDAp KQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogbWtub2RhdCIpOw0KPj4gKw0KPj4gKwkJaWYgKGlzX3Nl dGdpZChvcGVuX3RyZWVfZmQsIENIUkRFVjEsIDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogaXNf c2V0Z2lkIik7DQo+PiArDQo+PiArCQlpZiAoIWlzX2l4Z3JwKG9wZW5fdHJlZV9mZCwgQ0hSREVW MSwgMCkpDQo+PiArCQkJIGRpZSgiZmFpbHVyZTogaXNfaXhncnAiKTsNCj4+ICsNCj4+ICsJCS8q DQo+PiArCQkgKiBJbiBzZXRnaWQgZGlyZWN0b3JpZXMgbmV3bHkgY3JlYXRlZCBmaWxlcyBhbHdh eXMgaW5oZXJpdCB0aGUNCj4+ICsJCSAqIGdpZCBmcm9tIHRoZSBwYXJlbnQgZGlyZWN0b3J5LiBW ZXJpZnkgdGhhdCB0aGUgZmlsZSBpcyBvd25lZA0KPj4gKwkJICogYnkgZ2lkIDEwMDAsIG5vdCBi eSBnaWQgMC4NCj4+ICsJCSAqLw0KPj4gKwkJaWYgKCFleHBlY3RlZF91aWRfZ2lkKG9wZW5fdHJl ZV9mZCwgRklMRTEsIDAsIDAsIDEwMDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogY2hlY2sgb3du ZXJzaGlwIik7DQo+PiArDQo+PiArCQkvKg0KPj4gKwkJICogSW4gc2V0Z2lkIGRpcmVjdG9yaWVz IG5ld2x5IGNyZWF0ZWQgZGlyZWN0b3JpZXMgYWx3YXlzDQo+PiArCQkgKiBpbmhlcml0IHRoZSBn aWQgZnJvbSB0aGUgcGFyZW50IGRpcmVjdG9yeS4gVmVyaWZ5IHRoYXQgdGhlDQo+PiArCQkgKiBk aXJlY3RvcnkgaXMgb3duZWQgYnkgZ2lkIDEwMDAsIG5vdCBieSBnaWQgMC4NCj4+ICsJCSAqLw0K Pj4gKwkJaWYgKCFleHBlY3RlZF91aWRfZ2lkKG9wZW5fdHJlZV9mZCwgRElSMSwgMCwgMCwgMTAw MCkpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBjaGVjayBvd25lcnNoaXAiKTsNCj4+ICsNCj4+ICsJ CWlmICghZXhwZWN0ZWRfdWlkX2dpZChvcGVuX3RyZWVfZmQsIEZJTEUyLCAwLCAwLCAxMDAwKSkN Cj4+ICsJCQlkaWUoImZhaWx1cmU6IGNoZWNrIG93bmVyc2hpcCIpOw0KPj4gKw0KPj4gKwkJaWYg KCFleHBlY3RlZF91aWRfZ2lkKG9wZW5fdHJlZV9mZCwgQ0hSREVWMSwgMCwgMCwgMTAwMCkpDQo+ PiArCQkJZGllKCJmYWlsdXJlOiBjaGVjayBvd25lcnNoaXAiKTsNCj4+ICsNCj4+ICsJCWlmICh1 bmxpbmthdChvcGVuX3RyZWVfZmQsIEZJTEUxLCAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IGRl bGV0ZSIpOw0KPj4gKw0KPj4gKwkJaWYgKHVubGlua2F0KG9wZW5fdHJlZV9mZCwgRElSMSwgQVRf UkVNT1ZFRElSKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IGRlbGV0ZSIpOw0KPj4gKw0KPj4gKwkJ aWYgKHVubGlua2F0KG9wZW5fdHJlZV9mZCwgRklMRTIsIDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVy ZTogZGVsZXRlIik7DQo+PiArDQo+PiArCQlpZiAodW5saW5rYXQob3Blbl90cmVlX2ZkLCBDSFJE RVYxLCAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IGRlbGV0ZSIpOw0KPj4gKw0KPj4gKwkJLyog Y3JlYXRlIHRtcGZpbGUgdmlhIGZpbGVzeXN0ZW0gdG1wZmlsZSBhcGkgKi8NCj4+ICsJCWlmIChz dXBwb3J0ZWQpIHsNCj4+ICsJCQl0bXBmaWxlX2ZkID0gb3BlbmF0KG9wZW5fdHJlZV9mZCwgIi4i LCBPX1RNUEZJTEUgfCBPX1JEV1IsIFNfSVhHUlAgfCBTX0lTR0lEKTsNCj4+ICsJCQlpZiAodG1w ZmlsZV9mZCA8IDApDQo+PiArCQkJCWRpZSgiZmFpbHVyZTogY3JlYXRlIik7DQo+PiArCQkJLyog bGluayB0aGUgdGVtcG9yYXJ5IGZpbGUgaW50byB0aGUgZmlsZXN5c3RlbSwgbWFraW5nIGl0IHBl cm1hbmVudCAqLw0KPj4gKwkJCXNucHJpbnRmKHBhdGgsIFBBVEhfTUFYLCAgIi9wcm9jL3NlbGYv ZmQvJWQiLCB0bXBmaWxlX2ZkKTsNCj4+ICsJCQlpZiAobGlua2F0KEFUX0ZEQ1dELCBwYXRoLCBv cGVuX3RyZWVfZmQsIEZJTEUzLCBBVF9TWU1MSU5LX0ZPTExPVykpDQo+PiArCQkJCWRpZSgiZmFp bHVyZTogbGlua2F0Iik7DQo+PiArCQkJaWYgKGNsb3NlKHRtcGZpbGVfZmQpKQ0KPj4gKwkJCQlk aWUoImZhaWx1cmU6IGNsb3NlIik7DQo+PiArCQkJaWYgKGlzX3NldGdpZChvcGVuX3RyZWVfZmQs IEZJTEUzLCAwKSkNCj4+ICsJCQkJZGllKCJmYWlsdXJlOiBpc19zZXRnaWQiKTsNCj4+ICsJCQlp ZiAoIWlzX2l4Z3JwKG9wZW5fdHJlZV9mZCwgRklMRTMsIDApKQ0KPj4gKwkJCQlkaWUoImZhaWx1 cmU6IGlzX2l4Z3JwIik7DQo+PiArCQkJaWYgKCFleHBlY3RlZF91aWRfZ2lkKG9wZW5fdHJlZV9m ZCwgRklMRTMsIDAsIDAsIDEwMDApKQ0KPj4gKwkJCQlkaWUoImZhaWx1cmU6IGNoZWNrIG93bmVy c2hpcCIpOw0KPj4gKwkJCWlmICh1bmxpbmthdChvcGVuX3RyZWVfZmQsIEZJTEUzLCAwKSkNCj4+ ICsJCQkJZGllKCJmYWlsdXJlOiBkZWxldGUiKTsNCj4+ICsJCX0NCj4+ICsNCj4+ICsJCWV4aXQo RVhJVF9TVUNDRVNTKTsNCj4+ICsJfQ0KPj4gKwlpZiAod2FpdF9mb3JfcGlkKHBpZCkpDQo+PiAr CQlnb3RvIG91dDsNCj4+ICsNCj4+ICsJZnJldCA9IDA7DQo+PiArCWxvZ19kZWJ1ZygiUmFuIHRl c3QiKTsNCj4+ICtvdXQ6DQo+PiArCXNhZmVfY2xvc2UoYXR0ci51c2VybnNfZmQpOw0KPj4gKwlz YWZlX2Nsb3NlKGZpbGUxX2ZkKTsNCj4+ICsJc2FmZV9jbG9zZShvcGVuX3RyZWVfZmQpOw0KPj4g Kw0KPj4gKwlyZXR1cm4gZnJldDsNCj4+ICt9DQo+PiArDQo+PiAgIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgdGVzdF9zdHJ1Y3QgdF9pZG1hcHBlZF9tb3VudHNbXSA9IHsNCj4+ICAgCXsgYWNscywgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVl LCAgICJwb3NpeCBhY2xzIG9uIHJlZ3VsYXIgbW91bnRzIiwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sDQo+PiAgIAl7IGNy ZWF0ZV9pbl91c2VybnMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdHJ1ZSwgICAiY3JlYXRlIG9wZXJhdGlvbnMgaW4gdXNlciBuYW1lc3BhY2UiLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LA0KPj4g QEAgLTgxNzQsMyArODg2OCwxMyBAQCBjb25zdCBzdHJ1Y3QgdGVzdF9zdWl0ZSBzX3NldGdpZF9j cmVhdGVfdW1hc2tfaWRtYXBwZWRfbW91bnRzID0gew0KPj4gICAJLnRlc3RzID0gdF9zZXRnaWRf Y3JlYXRlX3VtYXNrX2lkbWFwcGVkX21vdW50cywNCj4+ICAgCS5ucl90ZXN0cyA9IEFSUkFZX1NJ WkUodF9zZXRnaWRfY3JlYXRlX3VtYXNrX2lkbWFwcGVkX21vdW50cyksDQo+PiAgIH07DQo+PiAr DQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCB0ZXN0X3N0cnVjdCB0X3NldGdpZF9jcmVhdGVfYWNs X2lkbWFwcGVkX21vdW50c1tdID0gew0KPj4gKwl7IHNldGdpZF9jcmVhdGVfYWNsX2lkbWFwcGVk LAkJCQkJVF9SRVFVSVJFX0lETUFQUEVEX01PVU5UUywJImNyZWF0ZSBvcGVyYXRpb25zIGJ5IHVz aW5nIGFjbCBpbiBkaXJlY3RvcmllcyB3aXRoIHNldGdpZCBiaXQgc2V0IG9uIGlkbWFwcGVkIG1v dW50IiwgICAgICAgICAgICAgICAgfSwNCj4+ICsJeyBzZXRnaWRfY3JlYXRlX2FjbF9pZG1hcHBl ZF9pbl91c2VybnMsCQkJCVRfUkVRVUlSRV9JRE1BUFBFRF9NT1VOVFMsCSJjcmVhdGUgb3BlcmF0 aW9ucyBieSB1c2luZyBhY2wgaW4gZGlyZWN0b3JpZXMgd2l0aCBzZXRnaWQgYml0IHNldCBvbiBp ZG1hcHBlZCBtb3VudCBpbnNpZGUgdXNlcm5zIiwgIH0sDQo+PiArfTsNCj4+ICsNCj4+ICtjb25z dCBzdHJ1Y3QgdGVzdF9zdWl0ZSBzX3NldGdpZF9jcmVhdGVfYWNsX2lkbWFwcGVkX21vdW50cyA9 IHsNCj4+ICsJLnRlc3RzID0gdF9zZXRnaWRfY3JlYXRlX2FjbF9pZG1hcHBlZF9tb3VudHMsDQo+ PiArCS5ucl90ZXN0cyA9IEFSUkFZX1NJWkUodF9zZXRnaWRfY3JlYXRlX2FjbF9pZG1hcHBlZF9t b3VudHMpLA0KPj4gK307DQo+PiBkaWZmIC0tZ2l0IGEvc3JjL3Zmcy9pZG1hcHBlZC1tb3VudHMu aCBiL3NyYy92ZnMvaWRtYXBwZWQtbW91bnRzLmgNCj4+IGluZGV4IGE5ZmIzMWVhLi4zYjBmMDgy NSAxMDA2NDQNCj4+IC0tLSBhL3NyYy92ZnMvaWRtYXBwZWQtbW91bnRzLmgNCj4+ICsrKyBiL3Ny Yy92ZnMvaWRtYXBwZWQtbW91bnRzLmgNCj4+IEBAIC0xNSw1ICsxNSw2IEBAIGV4dGVybiBjb25z dCBzdHJ1Y3QgdGVzdF9zdWl0ZSBzX25lc3RlZF91c2VybnM7DQo+PiAgIGV4dGVybiBjb25zdCBz dHJ1Y3QgdGVzdF9zdWl0ZSBzX3NldGF0dHJfZml4Xzk2ODIxOTcwODEwODsNCj4+ICAgZXh0ZXJu IGNvbnN0IHN0cnVjdCB0ZXN0X3N1aXRlIHNfc2V0eGF0dHJfZml4XzcwNTE5MWIwM2Q1MDsNCj4+ ICAgZXh0ZXJuIGNvbnN0IHN0cnVjdCB0ZXN0X3N1aXRlIHNfc2V0Z2lkX2NyZWF0ZV91bWFza19p ZG1hcHBlZF9tb3VudHM7DQo+PiArZXh0ZXJuIGNvbnN0IHN0cnVjdCB0ZXN0X3N1aXRlIHNfc2V0 Z2lkX2NyZWF0ZV9hY2xfaWRtYXBwZWRfbW91bnRzOw0KPj4gICANCj4+ICAgI2VuZGlmIC8qIF9f SURNQVBQRURfTU9VTlRTX0ggKi8NCj4+IGRpZmYgLS1naXQgYS9zcmMvdmZzL3Zmc3Rlc3QuYyBi L3NyYy92ZnMvdmZzdGVzdC5jDQo+PiBpbmRleCBlOTI4YTFmNS4uZjc2MzlkZTMgMTAwNjQ0DQo+ PiAtLS0gYS9zcmMvdmZzL3Zmc3Rlc3QuYw0KPj4gKysrIGIvc3JjL3Zmcy92ZnN0ZXN0LmMNCj4+ IEBAIC0yNyw2ICsyNyw4IEBADQo+PiAgICNpbmNsdWRlICJtaXNzaW5nLmgiDQo+PiAgICNpbmNs dWRlICJ1dGlscy5oIg0KPj4gICANCj4+ICtzdGF0aWMgY2hhciB0X2J1ZltQQVRIX01BWF07DQo+ PiArDQo+PiAgIHN0YXRpYyB2b2lkIGluaXRfdmZzdGVzdF9pbmZvKHN0cnVjdCB2ZnN0ZXN0X2lu Zm8gKmluZm8pDQo+PiAgIHsNCj4+ICAgCWluZm8tPnRfb3ZlcmZsb3d1aWQJCT0gNjU1MzQ7DQo+ PiBAQCAtMTkxMyw2ICsxOTE1LDMyNSBAQCBvdXQ6DQo+PiAgIAlyZXR1cm4gZnJldDsNCj4+ICAg fQ0KPj4gICANCj4+ICsvKg0KPj4gKyAqIElmIHRoZSBwYXJlbnQgZGlyZWN0b3J5IGhhcyBhIGRl ZmF1bHQgYWNsIHRoZW4gcGVybWlzc2lvbnMgYXJlIGJhc2VkIG9mZg0KPj4gKyAqIG9mIHRoYXQg YW5kIGN1cnJlbnRfdW1hc2soKSBpcyBpZ25vcmVkLiBTcGVjaWZpY2FsbHksIGlmIHRoZSBBQ0wg aGFzIGFuDQo+PiArICogQUNMX01BU0sgZW50cnksIHRoZSBncm91cCBwZXJtaXNzaW9ucyBjb3Jy ZXNwb25kIHRvIHRoZSBwZXJtaXNzaW9ucyBvZg0KPj4gKyAqIHRoZSBBQ0xfTUFTSyBlbnRyeS4g T3RoZXJ3aXNlLCBpZiB0aGUgQUNMIGhhcyBubyBBQ0xfTUFTSyBlbnRyeSwgdGhlDQo+PiArICog Z3JvdXAgcGVybWlzc2lvbnMgY29ycmVzcG9uZCB0byB0aGUgcGVybWlzc2lvbnMgb2YgdGhlIEFD TF9HUk9VUF9PQkoNCj4+ICsgKiBlbnRyeS4NCj4+ICsgKg0KPj4gKyAqIFVzZSBzZXRmYWNsIHRv IGNoZWNrIHdoZXRoZXIgaW5vZGUgc3RyaXAgU19JU0dJRCB3b3JrcyBjb3JyZWN0bHkuDQo+PiAr ICoNCj4+ICsgKiBUZXN0IGZvciBjb21taXQNCj4+ICsgKiAxNjM5YTQ5Y2NkY2UgKCJmczogbW92 ZSBTX0lTR0lEIHN0cmlwcGluZyBpbnRvIHRoZSB2ZnNfKigpIGhlbHBlcnMiKS4NCj4+ICsgKi8N Cj4gDQo+IFRoaXMgY29tbWVudCBpcyBwcmV0dHkgaGVscGZ1bCBhbmQgSSdkIGxpa2UgdG8gc2Vl IHNpbWlsYXIgb25lcyBvbiB0b3ANCj4gb2YgYWxsIHRoZSBvdGhlciB0ZXN0cyB5b3UncmUgYWRk aW5nLiBUaGF0IHdvdWxkIG1ha2UgaXQgZWFzaWVyIGZvcg0KPiBvdGhlciB0byB1bmRlcnN0YW5k IHdoYXQncyBnb2luZyBvbi4NCg0KT0suDQo+IA0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgc2V0Z2lk X2NyZWF0ZV9hY2woY29uc3Qgc3RydWN0IHZmc3Rlc3RfaW5mbyAqaW5mbykNCj4+ICt7DQo+PiAr CWludCBmcmV0ID0gLTE7DQo+PiArCWludCBmaWxlMV9mZCA9IC1FQkFERjsNCj4+ICsJaW50IHRt cGZpbGVfZmQgPSAtRUJBREY7DQo+PiArCXBpZF90IHBpZDsNCj4+ICsJYm9vbCBzdXBwb3J0ZWQg PSBmYWxzZTsNCj4+ICsJbW9kZV90IG1vZGU7DQo+PiArDQo+PiArCWlmICghY2Fwc19zdXBwb3J0 ZWQoKSkNCj4+ICsJCXJldHVybiAwOw0KPj4gKw0KPj4gKwlpZiAoZmNobW9kKGluZm8tPnRfZGly MV9mZCwgU19JUlVTUiB8DQo+PiArCQkJICAgICAgU19JV1VTUiB8DQo+PiArCQkJICAgICAgU19J UkdSUCB8DQo+PiArCQkJICAgICAgU19JV0dSUCB8DQo+PiArCQkJICAgICAgU19JUk9USCB8DQo+ PiArCQkJICAgICAgU19JV09USCB8DQo+PiArCQkJICAgICAgU19JWFVTUiB8DQo+PiArCQkJICAg ICAgU19JWEdSUCB8DQo+PiArCQkJICAgICAgU19JWE9USCB8DQo+PiArCQkJICAgICAgU19JU0dJ RCksIDApIHsNCj4+ICsJCWxvZ19zdGRlcnIoImZhaWx1cmU6IGZjaG1vZCIpOw0KPj4gKwkJZ290 byBvdXQ7DQo+PiArCX0NCj4+ICsNCj4+ICsJLyogVmVyaWZ5IHRoYXQgdGhlIHNldGdpZCBiaXQg Z290IHJhaXNlZC4gKi8NCj4+ICsJaWYgKCFpc19zZXRnaWQoaW5mby0+dF9kaXIxX2ZkLCAiIiwg QVRfRU1QVFlfUEFUSCkpIHsNCj4+ICsJCWxvZ19zdGRlcnIoImZhaWx1cmU6IGlzX3NldGdpZCIp Ow0KPj4gKwkJZ290byBvdXQ7DQo+PiArCX0NCj4+ICsNCj4+ICsJc3VwcG9ydGVkID0gb3BlbmF0 X3RtcGZpbGVfc3VwcG9ydGVkKGluZm8tPnRfZGlyMV9mZCk7DQo+PiArDQo+PiArCXVtYXNrKFNf SVhHUlApOw0KPj4gKwltb2RlID0gdW1hc2soU19JWEdSUCk7DQo+PiArCWlmICghKG1vZGUgJiBT X0lYR1JQKSkNCj4+ICsJCWRpZSgiZmFpbHVyZTogdW1hc2siKTsNCj4+ICsNCj4+ICsJcGlkID0g Zm9yaygpOw0KPj4gKwlpZiAocGlkIDwgMCkgew0KPj4gKwkJbG9nX3N0ZGVycigiZmFpbHVyZTog Zm9yayIpOw0KPj4gKwkJZ290byBvdXQ7DQo+PiArCX0NCj4+ICsJaWYgKHBpZCA9PSAwKSB7DQo+ PiArCQkvKiBUaGUgZ3JvdXAgcGVybWlzc2lvbnMgY29ycmVzcG9uZCB0byB0aGUgcGVybWlzc2lv bnMgb2YgdGhlDQo+PiArCQkgKiBBQ0xfTUFTSyBlbnRyeS4NCj4+ICsJCSAqLw0KPiANCj4gSXQg d291bGRuJ3QgaHVydCB0byBhZGQgYSBsb25nZXIgY29tbWVudCB0byB0aGVzZSBzZXRmYWNsIGNh bGxzDQo+IGRldGFpbGluZyB3aGF0IHlvdSdyZSB0cnlpbmcgdG8gdGVzdCBleGFjdGx5IG90aGVy d2lzZSBpdCBtYXkgYmUgaGFyZA0KPiBmb3Igb3RoZXIgd2hvIGFyZSBub3QgZmFtaWxpYXIgd2l0 aCBBQ0xzIHdoYXQgdGhpcyBkb2VzLiA6KQ0KDQpZZXMsIHdpbGwgYWRkIGEgbG9uZ2VyIGNvbW1l bnQuDQoNCkJlc3QgUmVnYXJkcw0KWWFuZyBYdQ0KPiANCj4+ICsJCXNucHJpbnRmKHRfYnVmLCBz aXplb2YodF9idWYpLCAic2V0ZmFjbCAtZCAtbSB1Ojpyd3gsZzo6cncsbzo6cnd4LG06cncgJXMv JXMiLCBpbmZvLT50X21vdW50cG9pbnQsIFRfRElSMSk7DQo+PiArCQlpZiAoc3lzdGVtKHRfYnVm KSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IHN5c3RlbSIpOw0KPiANCj4gT3RoZXIgdGhhbiB0aGF0 IHRoaXMgbG9va3MgZ29vZCENCj4gQ2hyaXN0aWFu