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=-15.2 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable 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 C7F81C433DB for ; Fri, 12 Feb 2021 20:01:58 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7FC0364E35 for ; Fri, 12 Feb 2021 20:01:58 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7FC0364E35 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id E9FA26E0F0; Fri, 12 Feb 2021 20:01:54 +0000 (UTC) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2081.outbound.protection.outlook.com [40.107.243.81]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7236189864; Fri, 12 Feb 2021 20:01:53 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DgnI8ZqrVxkUtfcn/Uzca2XkpL2BTI37IDuysHwhfha5J162j8EXq9jwGtiO9chn6CzFjl1q4G3XIg9K0o9gq+ZlmJ+lJVMm3LnkpC2P7Vcc3V82SJjtU5nh2ben6lmyWvgHUJzSgXgiXw41NMMTXEniHBxwNNXv84+PtlPnlPKPxoaYbR8AVbPvU8rstk0TxdRlJmMiyf/sGDkjwc1ljg1j5afIlGn7pwN0GaXdVHfPfwiaKCeqZQm9dFgQDcC/BASA3YW5ol5MOeivFYgf37/AbmeuD81oGiBew5G3EPxdQWowz2RR3YchcLMbs/lyZy7IyEr6RFZtwkK7ISZgnA== 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-SenderADCheck; bh=XWqP3wwKl33Wijj2gET9Xum7BhOzqGSus02fo7eQdVI=; b=hCNAVT2UCei01wIV2Kvo3C0SRiUGr4fCCy+LiruJZJOOfysKshHoYwhlOFdlp1zsoXe7LSj0VrfsEVQO0IRpbjW+SyBfjpTd9LtraaS9oTRtTQkbnUCKo5t6wssmKFPt8I1OBayKoTNOhNoKAErAk1qE38TC3Oxmx146WqzofDLo4pR/o1Nuy9rCtund8NHoe0BTlKZkeHnVymkW/vlEipxjamT7N7gx9Ipp5ORioxeVTmufymYW2QHaBU1oDvoCKhGFLQ+ntAcv9zoiVpP4dUCLr78ltnymr/SUpUGft1XXP4CSg0/g6o5P815jZqkKt93mXXl7GcUuexzW03OOFQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XWqP3wwKl33Wijj2gET9Xum7BhOzqGSus02fo7eQdVI=; b=BDySm30MPSmIPsjZtnp9LthzCYqbOyBw18mHFMoUGiyFowz2z1hUkxvM9DfWG2iW+45OE2v6Q/9wR6RoHs2Ulx2o14Q+XXLiNBMDC5nkHVX8rVQsBelgIgLkfhVSB4BpEQzck/596WUoBvwvjLpExMpiJdpOxuSaz+HdB1SXZ00= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; Received: from DM6PR12MB4484.namprd12.prod.outlook.com (2603:10b6:5:28f::24) by DM6PR12MB2891.namprd12.prod.outlook.com (2603:10b6:5:188::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3846.31; Fri, 12 Feb 2021 20:01:50 +0000 Received: from DM6PR12MB4484.namprd12.prod.outlook.com ([fe80::994c:be64:b250:cf13]) by DM6PR12MB4484.namprd12.prod.outlook.com ([fe80::994c:be64:b250:cf13%8]) with mapi id 15.20.3846.027; Fri, 12 Feb 2021 20:01:50 +0000 Subject: Re: [PATCH 3/3] drm/amd/display: Skip modeset for front porch change To: "Kazlauskas, Nicholas" , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org References: <20210119155029.18943-1-aurabindo.pillai@amd.com> <20210119155029.18943-4-aurabindo.pillai@amd.com> <500e8330-cdab-583d-e8c8-167b445c0ec7@amd.com> <9319bd1a-063c-8fd4-d82a-88fc5e688e57@amd.com> From: Aurabindo Pillai Message-ID: Date: Fri, 12 Feb 2021 15:01:45 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.0 In-Reply-To: <9319bd1a-063c-8fd4-d82a-88fc5e688e57@amd.com> Content-Language: en-US X-Originating-IP: [165.204.84.11] X-ClientProxiedBy: BN6PR1401CA0022.namprd14.prod.outlook.com (2603:10b6:405:4b::32) To DM6PR12MB4484.namprd12.prod.outlook.com (2603:10b6:5:28f::24) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [172.31.6.122] (165.204.84.11) by BN6PR1401CA0022.namprd14.prod.outlook.com (2603:10b6:405:4b::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3846.28 via Frontend Transport; Fri, 12 Feb 2021 20:01:47 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 884ee5ed-4ab0-415d-eb0b-08d8cf91087a X-MS-TrafficTypeDiagnostic: DM6PR12MB2891: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 27pw9MAV1Vr0nHs9bQLiR0JldjRWT1gIm7FdC2p0CZWjtYN92mgkzy1jRZsivaUyiGIDlo90Eyal4KdGnduaj9wmnOXloLUedFeXkgn//MkpU+XJoY+HogJMa0T/6xOokiN3mbO1vUJZO7pRfDNqYpkREMLpXB5LzZDMUfHAXEBC2OxauqLNeZaHQdGb1Z1yy2vjldOfF60ibH4hBnlaJzFfasimrjuCR7SpjgthJYmEx2HioD223RPyLzcwcTN2mMdtgN0kbDWNlaCEK/W3Zp2b5so1GW6crWRbvCxVQBiij/3YDGJ5yeKlikGKoMjki3UrDIOnXyaL8rEJgSB9ajVqoO9r5K003Ht+uytcZl+17TgInKUSjtJqkgys+QCO+wTi4/2VE26Dchi8gGFUBNCGDdG23sUy519MQx+3bUTnjaHCQjb/kcDNJtD9vIUBJrI6ZEZMN2AL5nu0/H4O55kOvbiyFwtkn+0dLPnNvs6pODEiJbIN3Eb5dvvYhRcHYF/7aC7E+Qqcl9r//VIiPnvPfDrKk42uY4RWBXsi4KxKhF2G5B/WT0MKiGorrSIShCYs4ddwOrFafOKBaDlmOp8RPgLFA/EETPgeHmGcTwE= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR12MB4484.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(396003)(39860400002)(136003)(346002)(376002)(366004)(478600001)(66556008)(8676002)(36756003)(8936002)(44832011)(31686004)(30864003)(53546011)(86362001)(31696002)(66574015)(2616005)(956004)(16526019)(83380400001)(66476007)(4326008)(5660300002)(186003)(52116002)(26005)(6486002)(16576012)(66946007)(2906002)(316002)(450100002)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?OWNxRGZrYVVFWnNUc09SQVU5d3d6SVduUGtjWkdZT0UzdUVrK0lic2o3WUZh?= =?utf-8?B?djgzU2FWaDFuMkQ0NDJvL083SFkyZ3RBdVl2bGZ0RmdCQ1Y2V3hDdDZZZEs0?= =?utf-8?B?SStYTXo0bmZFNG1WWk1GS0dkODNBS0JGajYvNWlsUGxvQ2pQbjJlMUZ0RUhJ?= =?utf-8?B?TnBqUm5aRmR4eEpTRTdHOHVqMzMveWxIWldwZzl5WEsrNDB0dmoyNkZtNFZF?= =?utf-8?B?Z1JvM2ZRKytSM2VmNlJhTnpjcjM5UXI5WEQyb3drVXV3OFhoR05qWXl3VWpo?= =?utf-8?B?RFNEVS9Va2psZHFlVi82V0dOaGU1M0RpdzdVb1pzOWtxZ2d4anJRWnNsSTFh?= =?utf-8?B?aG9UdmsyU0FhZTBjdHhEbWh4aFk3OTRNVTNDTkdtcVk3TUpIOUpWUW9xYzBY?= =?utf-8?B?YnBmNUNucEdndXlYRmFBZDl6dWVMa1YyNlhVSGw3cDc1ZXRQUzBZOUw4N0xi?= =?utf-8?B?VjFhOW5OeEVtVmFCems4VEl1a0tnMGpzaTgyYmtXdXpVZ2hrZ3l6V1RwMHNQ?= =?utf-8?B?Ymt6QnRVWTNldEx3dHFRZ05WWnRITkM4RTRSUkpQMkVQYXVVMWNiZGx1SDNu?= =?utf-8?B?VG5CSThpbGQwMHI1UVA4MmFKUTcyWnIrY0JhZ1ZVZEp0RXQ2K041Z29LOFMv?= =?utf-8?B?QWt4aVN2TndHSk1Vb09IcUYyOFlXM09CSDFsYnVPa0VtZkJ1Q3g2NUNzUEUz?= =?utf-8?B?MkMxTTlGWHpxVFFFY3RnTHJXRnFuZDNrL2Q2N2g3MXE1ZWJycTBJUVNmNUNz?= =?utf-8?B?bHpXakhETVBxbSt0Y1ZmdTdDWGJsdkw1OEJma3VhWHJVK0ZvKzlYRTVicFFZ?= =?utf-8?B?Umx1SWMvYXdrb3ludUNaSHZiZzRHU0NPa1hsMlk1ZlUwd1R1NkhkWkNxbE8y?= =?utf-8?B?RlIrLzFJMXV5a0x0Ui82V051Nk9DUjZqbmRiYmRGWEhyczVPM1VVS0JqWmtT?= =?utf-8?B?KzJrSFNHTGJvaWdiS2NORVF2Zmp3RDJaTVBpaEdJakdpU1JJNkN3MkJaTGs1?= =?utf-8?B?SWdMRVVCc2RqaW1PQUNmN0xDczBtK3prU0hDbk1URmVwL3Mwa2hVUDlZanBz?= =?utf-8?B?dmloMW9zQ0lNT0Q0MGM5SUpkYlNNb1FINFNHZFE1SkIzUGlYRklkME04WnUr?= =?utf-8?B?SmFNc2llcGE2QzBnOHNOQ2R4V3lQeDl6ekJleGFBcUZzNzl2blBJelM3eDc3?= =?utf-8?B?SU5BMjJNQ3Q1R1RlUVZhbG9JeU84RStsSWdZT1h0T25rUnJta0sza2hWREFD?= =?utf-8?B?cEsrYTJPZTErUzR0ZExpTExzcWFEMlRhbkI5dG9oVWdRWTJGRVFHcFJSaSts?= =?utf-8?B?L3ZNVit5Q2pkM0duYXhUY1JZWENnd1RaemIzMFpnL2FxaCt4SHdRSXc4QzFM?= =?utf-8?B?VkJkUGpva1cwNEhPZ0V5eVRCZWthdzNKVnJJYmJEN0FUbjBMZVl3UFlRQzVD?= =?utf-8?B?UzRrQ09qeXRuS1VqRm1zTVRpek5aWVNPbjRmL2ZrN0NOU25wMTg2TUFwVTMy?= =?utf-8?B?ei9nVU94dUFpSG04Syt6djVwcUoxTW92cjBybTlSL2RTS0h2UWtTbE13Q3c3?= =?utf-8?B?d2dkTmJ6QzRmQzRUd0dYZFlscFdSTG1jM0FqRE9rNFg5RmV3UVU3aUI2azhX?= =?utf-8?B?L1dRNUFzVFNWRWk5ZVY0VUIwbVlodjdmQzc3SXlKUElPMXkwNngwVC9xWlhL?= =?utf-8?B?bStjRUpUUWkyOTRWcnhIYjEvOFpWS0JxZkRCSVp5WE93RW8vZWwvaUxMa3E4?= =?utf-8?Q?g0HeQAoG+pGmZXUlRURBJol3evhb3CMEog0fIVK?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 884ee5ed-4ab0-415d-eb0b-08d8cf91087a X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB4484.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Feb 2021 20:01:49.9265 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 2xmn7/+zulFIrW3WGoWdH3YDEnKE2O0GT0mwUDQS4uVKf9kAPOkYm1Jh0RRmmGVXYuyJDadL57ZaVXeW8xdF2A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB2891 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: stylon.wang@amd.com, thong.thai@amd.com, shashank.sharma@amd.com, wayne.lin@amd.com, alexander.deucher@amd.com, christian.koenig@amd.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" CgpPbiAyMDIxLTAyLTA4IDEwOjA2IGEubS4sIEthemxhdXNrYXMsIE5pY2hvbGFzIHdyb3RlOgo+ IE9uIDIwMjEtMDEtMjQgMTE6MDAgcC5tLiwgQXVyYWJpbmRvIFBpbGxhaSB3cm90ZToKPj4KPj4K Pj4gT24gMjAyMS0wMS0yMSAyOjA1IHAubS4sIEthemxhdXNrYXMsIE5pY2hvbGFzIHdyb3RlOgo+ Pj4gT24gMjAyMS0wMS0xOSAxMDo1MCBhLm0uLCBBdXJhYmluZG8gUGlsbGFpIHdyb3RlOgo+Pj4+ IFtXaHldCj4+Pj4gQSBzZWFtbGVzcyB0cmFuc2l0aW9uIGJldHdlZW4gbW9kZXMgY2FuIGJlIHBl cmZvcm1lZCBpZiB0aGUgbmV3IAo+Pj4+IGluY29taW5nCj4+Pj4gbW9kZSBoYXMgdGhlIHNhbWUg dGltaW5nIHBhcmFtZXRlcnMgYXMgdGhlIG9wdGltaXplZCBtb2RlIG9uIGEgCj4+Pj4gZGlzcGxh eSB3aXRoIGEKPj4+PiB2YXJpYWJsZSB2dG90YWwgbWluL21heC4KPj4+Pgo+Pj4+IFNtb290aCB2 aWRlbyBwbGF5YmFjayB1c2VjYXNlcyBjYW4gYmUgZW5hYmxlZCB3aXRoIHRoaXMgc2VhbWxlc3Mg Cj4+Pj4gdHJhbnNpdGlvbiBieQo+Pj4+IHN3aXRjaGluZyB0byBhIG5ldyBtb2RlIHdoaWNoIGhh cyBhIHJlZnJlc2ggcmF0ZSBtYXRjaGluZyB0aGUgdmlkZW8uCj4+Pj4KPj4+PiBbSG93XQo+Pj4+ IFNraXAgZnVsbCBtb2Rlc2V0IGlmIHVzZXJzcGFjZSByZXF1ZXN0ZWQgYSBjb21wYXRpYmxlIGZy ZWVzeW5jIG1vZGUgCj4+Pj4gd2hpY2ggb25seQo+Pj4+IGRpZmZlcnMgaW4gdGhlIGZyb250IHBv cmNoIHRpbWluZyBmcm9tIHRoZSBjdXJyZW50IG1vZGUuCj4+Pj4KPj4+PiBTaWduZWQtb2ZmLWJ5 OiBBdXJhYmluZG8gUGlsbGFpIDxhdXJhYmluZG8ucGlsbGFpQGFtZC5jb20+Cj4+Pj4gQWNrZWQt Ynk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KPj4+PiAtLS0K Pj4+PiDCoCAuLi4vZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMgfCAy MzMgCj4+Pj4gKysrKysrKysrKysrKysrLS0tCj4+Pj4gwqAgLi4uL2dwdS9kcm0vYW1kL2Rpc3Bs YXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5oIHzCoMKgIDEgKwo+Pj4+IMKgIDIgZmlsZXMgY2hhbmdl ZCwgMTk4IGluc2VydGlvbnMoKyksIDM2IGRlbGV0aW9ucygtKQo+Pj4+Cj4+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMgCj4+ Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jCj4+ Pj4gaW5kZXggYWFlZjJmYjUyOGZkLi5kNjY0OTRjZGQ4YzggMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYwo+Pj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMKPj4+PiBA QCAtMjEzLDYgKzIxMyw5IEBAIHN0YXRpYyBib29sIGFtZGdwdV9kbV9wc3JfZGlzYWJsZV9hbGwo c3RydWN0IAo+Pj4+IGFtZGdwdV9kaXNwbGF5X21hbmFnZXIgKmRtKTsKPj4+PiDCoCBzdGF0aWMg Y29uc3Qgc3RydWN0IGRybV9mb3JtYXRfaW5mbyAqCj4+Pj4gwqAgYW1kX2dldF9mb3JtYXRfaW5m byhjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqY21kKTsKPj4+PiArc3RhdGljIGJvb2wK Pj4+PiAraXNfdGltaW5nX3VuY2hhbmdlZF9mb3JfZnJlZXN5bmMoc3RydWN0IGRybV9jcnRjX3N0 YXRlIAo+Pj4+ICpvbGRfY3J0Y19zdGF0ZSwKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSk7Cj4+Pj4gwqAg LyoKPj4+PiDCoMKgICogZG1fdmJsYW5rX2dldF9jb3VudGVyCj4+Pj4gwqDCoCAqCj4+Pj4gQEAg LTQ5NDAsNyArNDk0Myw4IEBAIHN0YXRpYyB2b2lkIAo+Pj4+IGZpbGxfc3RyZWFtX3Byb3BlcnRp ZXNfZnJvbV9kcm1fZGlzcGxheV9tb2RlKAo+Pj4+IMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPj4+PiDCoMKgwqDCoMKgIGNvbnN0IHN0cnVjdCBkcm1f Y29ubmVjdG9yX3N0YXRlICpjb25uZWN0b3Jfc3RhdGUsCj4+Pj4gwqDCoMKgwqDCoCBjb25zdCBz dHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpvbGRfc3RyZWFtLAo+Pj4+IC3CoMKgwqAgaW50IHJlcXVl c3RlZF9icGMpCj4+Pj4gK8KgwqDCoCBpbnQgcmVxdWVzdGVkX2JwYywKPj4+PiArwqDCoMKgIGJv b2wgaXNfaW5fbW9kZXNldCkKPj4+PiDCoCB7Cj4+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgZGNfY3J0 Y190aW1pbmcgKnRpbWluZ19vdXQgPSAmc3RyZWFtLT50aW1pbmc7Cj4+Pj4gwqDCoMKgwqDCoCBj b25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfaW5mbyAqaW5mbyA9ICZjb25uZWN0b3ItPmRpc3BsYXlf aW5mbzsKPj4+PiBAQCAtNDk5NSwxOSArNDk5OSwyOCBAQCBzdGF0aWMgdm9pZCAKPj4+PiBmaWxs X3N0cmVhbV9wcm9wZXJ0aWVzX2Zyb21fZHJtX2Rpc3BsYXlfbW9kZSgKPj4+PiDCoMKgwqDCoMKg wqDCoMKgwqAgdGltaW5nX291dC0+aGRtaV92aWMgPSBodl9mcmFtZS52aWM7Cj4+Pj4gwqDCoMKg wqDCoCB9Cj4+Pj4gLcKgwqDCoCB0aW1pbmdfb3V0LT5oX2FkZHJlc3NhYmxlID0gbW9kZV9pbi0+ Y3J0Y19oZGlzcGxheTsKPj4+PiAtwqDCoMKgIHRpbWluZ19vdXQtPmhfdG90YWwgPSBtb2RlX2lu LT5jcnRjX2h0b3RhbDsKPj4+PiAtwqDCoMKgIHRpbWluZ19vdXQtPmhfc3luY193aWR0aCA9Cj4+ Pj4gLcKgwqDCoMKgwqDCoMKgIG1vZGVfaW4tPmNydGNfaHN5bmNfZW5kIC0gbW9kZV9pbi0+Y3J0 Y19oc3luY19zdGFydDsKPj4+PiAtwqDCoMKgIHRpbWluZ19vdXQtPmhfZnJvbnRfcG9yY2ggPQo+ Pj4+IC3CoMKgwqDCoMKgwqDCoCBtb2RlX2luLT5jcnRjX2hzeW5jX3N0YXJ0IC0gbW9kZV9pbi0+ Y3J0Y19oZGlzcGxheTsKPj4+PiAtwqDCoMKgIHRpbWluZ19vdXQtPnZfdG90YWwgPSBtb2RlX2lu LT5jcnRjX3Z0b3RhbDsKPj4+PiAtwqDCoMKgIHRpbWluZ19vdXQtPnZfYWRkcmVzc2FibGUgPSBt b2RlX2luLT5jcnRjX3ZkaXNwbGF5Owo+Pj4+IC3CoMKgwqAgdGltaW5nX291dC0+dl9mcm9udF9w b3JjaCA9Cj4+Pj4gLcKgwqDCoMKgwqDCoMKgIG1vZGVfaW4tPmNydGNfdnN5bmNfc3RhcnQgLSBt b2RlX2luLT5jcnRjX3ZkaXNwbGF5Owo+Pj4+IC3CoMKgwqAgdGltaW5nX291dC0+dl9zeW5jX3dp ZHRoID0KPj4+PiAtwqDCoMKgwqDCoMKgwqAgbW9kZV9pbi0+Y3J0Y192c3luY19lbmQgLSBtb2Rl X2luLT5jcnRjX3ZzeW5jX3N0YXJ0Owo+Pj4+IC3CoMKgwqAgdGltaW5nX291dC0+cGl4X2Nsa18x MDBoeiA9IG1vZGVfaW4tPmNydGNfY2xvY2sgKiAxMDsKPj4+PiArwqDCoMKgIGlmIChpc19pbl9t b2Rlc2V0KSB7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHRpbWluZ19vdXQtPmhfYWRkcmVzc2FibGUg PSBtb2RlX2luLT5oZGlzcGxheTsKPj4+PiArwqDCoMKgwqDCoMKgwqAgdGltaW5nX291dC0+aF90 b3RhbCA9IG1vZGVfaW4tPmh0b3RhbDsKPj4+PiArwqDCoMKgwqDCoMKgwqAgdGltaW5nX291dC0+ aF9zeW5jX3dpZHRoID0gbW9kZV9pbi0+aHN5bmNfZW5kIC0gCj4+Pj4gbW9kZV9pbi0+aHN5bmNf c3RhcnQ7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHRpbWluZ19vdXQtPmhfZnJvbnRfcG9yY2ggPSBt b2RlX2luLT5oc3luY19zdGFydCAtIAo+Pj4+IG1vZGVfaW4tPmhkaXNwbGF5Owo+Pj4+ICvCoMKg wqDCoMKgwqDCoCB0aW1pbmdfb3V0LT52X3RvdGFsID0gbW9kZV9pbi0+dnRvdGFsOwo+Pj4+ICvC oMKgwqDCoMKgwqDCoCB0aW1pbmdfb3V0LT52X2FkZHJlc3NhYmxlID0gbW9kZV9pbi0+dmRpc3Bs YXk7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHRpbWluZ19vdXQtPnZfZnJvbnRfcG9yY2ggPSBtb2Rl X2luLT52c3luY19zdGFydCAtIAo+Pj4+IG1vZGVfaW4tPnZkaXNwbGF5Owo+Pj4+ICvCoMKgwqDC oMKgwqDCoCB0aW1pbmdfb3V0LT52X3N5bmNfd2lkdGggPSBtb2RlX2luLT52c3luY19lbmQgLSAK Pj4+PiBtb2RlX2luLT52c3luY19zdGFydDsKPj4+PiArwqDCoMKgwqDCoMKgwqAgdGltaW5nX291 dC0+cGl4X2Nsa18xMDBoeiA9IG1vZGVfaW4tPmNsb2NrICogMTA7Cj4+Pj4gK8KgwqDCoCB9IGVs c2Ugewo+Pj4+ICvCoMKgwqDCoMKgwqDCoCB0aW1pbmdfb3V0LT5oX2FkZHJlc3NhYmxlID0gbW9k ZV9pbi0+Y3J0Y19oZGlzcGxheTsKPj4+PiArwqDCoMKgwqDCoMKgwqAgdGltaW5nX291dC0+aF90 b3RhbCA9IG1vZGVfaW4tPmNydGNfaHRvdGFsOwo+Pj4+ICvCoMKgwqDCoMKgwqDCoCB0aW1pbmdf b3V0LT5oX3N5bmNfd2lkdGggPSBtb2RlX2luLT5jcnRjX2hzeW5jX2VuZCAtIAo+Pj4+IG1vZGVf aW4tPmNydGNfaHN5bmNfc3RhcnQ7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHRpbWluZ19vdXQtPmhf ZnJvbnRfcG9yY2ggPSBtb2RlX2luLT5jcnRjX2hzeW5jX3N0YXJ0IC0gCj4+Pj4gbW9kZV9pbi0+ Y3J0Y19oZGlzcGxheTsKPj4+PiArwqDCoMKgwqDCoMKgwqAgdGltaW5nX291dC0+dl90b3RhbCA9 IG1vZGVfaW4tPmNydGNfdnRvdGFsOwo+Pj4+ICvCoMKgwqDCoMKgwqDCoCB0aW1pbmdfb3V0LT52 X2FkZHJlc3NhYmxlID0gbW9kZV9pbi0+Y3J0Y192ZGlzcGxheTsKPj4+PiArwqDCoMKgwqDCoMKg wqAgdGltaW5nX291dC0+dl9mcm9udF9wb3JjaCA9IG1vZGVfaW4tPmNydGNfdnN5bmNfc3RhcnQg LSAKPj4+PiBtb2RlX2luLT5jcnRjX3ZkaXNwbGF5Owo+Pj4+ICvCoMKgwqDCoMKgwqDCoCB0aW1p bmdfb3V0LT52X3N5bmNfd2lkdGggPSBtb2RlX2luLT5jcnRjX3ZzeW5jX2VuZCAtIAo+Pj4+IG1v ZGVfaW4tPmNydGNfdnN5bmNfc3RhcnQ7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHRpbWluZ19vdXQt PnBpeF9jbGtfMTAwaHogPSBtb2RlX2luLT5jcnRjX2Nsb2NrICogMTA7Cj4+Pj4gK8KgwqDCoCB9 Cj4+Pj4gKwo+Pj4KPj4+IE5vdCBzdXJlIGlmIEkgY29tbWVudGVkIG9uIHRoaXMgbGFzdCB0aW1l IGJ1dCBJIGRvbid0IHJlYWxseSAKPj4+IHVuZGVyc3RhbmQgd2hhdCB0aGlzIGlzX2luX21vZGVz ZXQgbG9naWMgaXMgc3VwcG9zZWQgdG8gYmUgZG9pbmcgaGVyZS4KPj4KPj4gVGhpcyBpcyBzbyBi ZWNhdXNlIGNyZWF0ZV9zdHJlYW1fZm9yX2xpbmsoKSB0aGF0IGVuZHMgdXAgY2FsbGluZyB0aGlz IAo+PiBmdW5jdGlvbiBoYXMgdHdvIGNhbGxlcnMsIG9uZSB3aGljaCBpcyBmb3Igc3RyZWFtIHZh bGlkYXRpb24gaW4gd2hpY2ggCj4+IHRoZSBjcmVhdGVkIHN0cmVhbSBpcyBpbW1lZGlhdGVseSBk aXNjYXJkZWQuIFRoZSBvdGhlciBpcyBkdXJpbmcgCj4+IG1vZGVzZXQuIERlcGVuZGluZyBvbiB0 aGVzZSB0d28gY2FzZXMsIHdlIHdhbnQgdG8gY29weSB0aGUgcmlnaHQgCj4+IHRpbWluZyBwYXJh bWV0ZXJzLiBXaXRoIHRoaXMgbWV0aG9kLCBtYWpvciByZWZhY3RvciB3YXNuJ3QgbmVjZXNzYXJ5 IAo+PiB3aXRoIHRoZSB1cHBlciBsYXllcnMuCj4gCj4gSSBkb24ndCB1bmRlcnN0YW5kIHdoeSB0 aGUgdGltaW5nIHBhcmFtZXRlcnMgd291bGQgY2hhbmdlIGJldHdlZW4gd2hhdCAKPiB3ZSB2YWxp ZGF0ZWQgYW5kIHdoYXQgd2UncmUgcGxhbm5pbmcgb24gYXBwbHlpbmcgdG8gdGhlIGhhcmR3YXJl LiBJIAo+IHRoaW5rIHdlIHNob3VsZCBiZSB2YWxpZGF0aW5nIHRoZSBzYW1lIHRoaW5nIGluIGJv dGggY2FzZXMsIGVzcGVjaWFsbHkgCj4gaWYgaXQncyBmb3Igc29tZXRoaW5nIGludGVybmFsIGxp a2UgREMgc3RyZWFtIHRpbWluZy4KCkFjdHVhbGx5LCB0aGUgdmFsaWRhdGVkIHRpbWluZ3MgZGlk bid0IGNoYW5nZSwgYnV0IHRoZSBkaWZmZXJlbmNlIGlzIAp3aGVyZSB0aGUgY29ycmVjdCB2YWx1 ZXMgZXhpc3QuIEkgdG9vayBhIHNlY29uZCBsb29rcyBhdCB0aGlzLCB0aGUgCnRpbWluZyBpcyBh bHdheXMgcHJlc2VudCBpbiBtb2RlX2luLCBidXQgbm90IGluIGNydGMuIEhvd2V2ZXIsIApvcmln aW5hbGx5IGl0IGhhZCBjcnRjXyBwYXJhbWV0ZXJzIGJlaW5nIHVzZWQgZm9yIGZpbGxpbmcgdGlt aW5nX291dCwgc28gCmluIG9yZGVyIHRvIGtlZXAgdGhlIGRlbHRhIGJldHdlZW4gdGhlICJmcmVl c3luYyBtb2RlIiBhbmQgb3RoZXIgbm9ybWFsIAptb2RlcywgYW5kIGluIHRoZSBpbnRlcmVzdCBr ZWVwaW5nIHRoZSBmdW5jdGlvbmFsIGltcGFjdCBvZiB0aGlzIHBhdGNoIAptaW5pbXVtLCBJIGNo b3NlIHRvIGFwcGx5IHRoZW0gc2VwYXJhdGVseSBkZXBlbmRpbmcgb24gaXNfaW5fbW9kZXNldCAK bG9naWMuIEluIG15IHRlc3RpbmcsIHVzaW5nIHRoZSBub24gY3J0Y18gcGFyYW10ZXJzIGFyZSB3 b3JraW5nIGZpbmUsIAp3aXRob3V0IHRoZSBpc19pbl9tb2Rlc2V0IGxvZ2ljLgoKPiAKPj4KPj4+ Cj4+PiBXZSBzaG91bGQgYmUgbW9kaWZ5aW5nIGNydGNfdnN5bmNfKiBmb3IgdGhlIGdlbmVyYXRl ZCBtb2Rlcywgbm8/IE5vdCAKPj4+IGp1c3QgdGhlIHZzeW5jXyogcGFyYW1ldGVycy4KPj4KPj4g VGhpcyBpcyBhbHJlYWR5IGhhbmRsZWQgd2l0aDoKPj4KPj4gwqDCoMKgwqDCoGlmICghZG1fc3Rh dGUpCj4+IMKgwqDCoMKgwqDCoMKgwqAgZHJtX21vZGVfc2V0X2NydGNpbmZvKCZtb2RlLCAwKTsK Pj4KPj4gwqDCoMKgwqDCoGlmIChkbV9zdGF0ZSAmJiBpc19mc192aWRfbW9kZSkKPj4gwqDCoMKg wqDCoMKgwqDCoCBkcm1fbW9kZV9zZXRfY3J0Y2luZm8oJnNhdmVkX21vZGUsIDApOwo+Pgo+IAo+ IE9LLCB0aGF0J3MgZmluZSB0aGVuLgo+IAo+Pj4KPj4+PiDCoMKgwqDCoMKgIHRpbWluZ19vdXQt PmFzcGVjdF9yYXRpbyA9IGdldF9hc3BlY3RfcmF0aW8obW9kZV9pbik7Cj4+Pj4gwqDCoMKgwqDC oCBzdHJlYW0tPm91dHB1dF9jb2xvcl9zcGFjZSA9IGdldF9vdXRwdXRfY29sb3Jfc3BhY2UodGlt aW5nX291dCk7Cj4+Pj4gQEAgLTUyMjcsNiArNTI0MCwzMyBAQCBnZXRfaGlnaGVzdF9yZWZyZXNo X3JhdGVfbW9kZShzdHJ1Y3QgCj4+Pj4gYW1kZ3B1X2RtX2Nvbm5lY3RvciAqYWNvbm5lY3RvciwK Pj4+PiDCoMKgwqDCoMKgIHJldHVybiBtX3ByZWY7Cj4+Pj4gwqAgfQo+Pj4+ICtzdGF0aWMgYm9v bCBpc19mcmVlc3luY192aWRlb19tb2RlKHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+ Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9k bV9jb25uZWN0b3IgKmFjb25uZWN0b3IpCj4+Pj4gK3sKPj4+PiArwqDCoMKgIHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICpoaWdoX21vZGU7Cj4+Pj4gK8KgwqDCoCBpbnQgdGltaW5nX2RpZmY7Cj4+ Pj4gKwo+Pj4+ICvCoMKgwqAgaGlnaF9tb2RlID0gZ2V0X2hpZ2hlc3RfcmVmcmVzaF9yYXRlX21v ZGUoYWNvbm5lY3RvciwgZmFsc2UpOwo+Pj4+ICvCoMKgwqAgaWYgKCFoaWdoX21vZGUgfHwgIW1v ZGUpCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBmYWxzZTsKPj4+PiArCj4+Pj4gK8KgwqDC oCB0aW1pbmdfZGlmZiA9IGhpZ2hfbW9kZS0+dnRvdGFsIC0gbW9kZS0+dnRvdGFsOwo+Pj4+ICsK Pj4+PiArwqDCoMKgIGlmIChoaWdoX21vZGUtPmNsb2NrID09IDAgfHwgaGlnaF9tb2RlLT5jbG9j ayAhPSBtb2RlLT5jbG9jayB8fAo+Pj4+ICvCoMKgwqDCoMKgwqDCoCBoaWdoX21vZGUtPmhkaXNw bGF5ICE9IG1vZGUtPmhkaXNwbGF5IHx8Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGhpZ2hfbW9kZS0+ dmRpc3BsYXkgIT0gbW9kZS0+dmRpc3BsYXkgfHwKPj4+PiArwqDCoMKgwqDCoMKgwqAgaGlnaF9t b2RlLT5oc3luY19zdGFydCAhPSBtb2RlLT5oc3luY19zdGFydCB8fAo+Pj4+ICvCoMKgwqDCoMKg wqDCoCBoaWdoX21vZGUtPmhzeW5jX2VuZCAhPSBtb2RlLT5oc3luY19lbmQgfHwKPj4+PiArwqDC oMKgwqDCoMKgwqAgaGlnaF9tb2RlLT5odG90YWwgIT0gbW9kZS0+aHRvdGFsIHx8Cj4+Pj4gK8Kg wqDCoMKgwqDCoMKgIGhpZ2hfbW9kZS0+aHNrZXcgIT0gbW9kZS0+aHNrZXcgfHwKPj4+PiArwqDC oMKgwqDCoMKgwqAgaGlnaF9tb2RlLT52c2NhbiAhPSBtb2RlLT52c2NhbiB8fAo+Pj4+ICvCoMKg wqDCoMKgwqDCoCBoaWdoX21vZGUtPnZzeW5jX3N0YXJ0IC0gbW9kZS0+dnN5bmNfc3RhcnQgIT0g dGltaW5nX2RpZmYgfHwKPj4+PiArwqDCoMKgwqDCoMKgwqAgaGlnaF9tb2RlLT52c3luY19lbmQg LSBtb2RlLT52c3luY19lbmQgIT0gdGltaW5nX2RpZmYpCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJl dHVybiBmYWxzZTsKPj4+PiArwqDCoMKgIGVsc2UKPj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJu IHRydWU7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gwqAgc3RhdGljIHN0cnVjdCBkY19zdHJlYW1fc3Rh dGUgKgo+Pj4+IMKgIGNyZWF0ZV9zdHJlYW1fZm9yX3Npbmsoc3RydWN0IGFtZGdwdV9kbV9jb25u ZWN0b3IgKmFjb25uZWN0b3IsCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Y29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmRybV9tb2RlLAo+Pj4+IEBAIC01MjQwLDE1 ICs1MjgwLDIxIEBAIGNyZWF0ZV9zdHJlYW1fZm9yX3Npbmsoc3RydWN0IAo+Pj4+IGFtZGdwdV9k bV9jb25uZWN0b3IgKmFjb25uZWN0b3IsCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGRtX3N0YXRl ID8gJmRtX3N0YXRlLT5iYXNlIDogTlVMTDsKPj4+PiDCoMKgwqDCoMKgIHN0cnVjdCBkY19zdHJl YW1fc3RhdGUgKnN0cmVhbSA9IE5VTEw7Cj4+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSBtb2RlID0gKmRybV9tb2RlOwo+Pj4+ICvCoMKgwqAgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgc2F2ZWRfbW9kZTsKPj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpm cmVlc3luY19tb2RlID0gTlVMTDsKPj4+PiDCoMKgwqDCoMKgIGJvb2wgbmF0aXZlX21vZGVfZm91 bmQgPSBmYWxzZTsKPj4+PiDCoMKgwqDCoMKgIGJvb2wgc2NhbGUgPSBkbV9zdGF0ZSA/IChkbV9z dGF0ZS0+c2NhbGluZyAhPSBSTVhfT0ZGKSA6IGZhbHNlOwo+Pj4+IMKgwqDCoMKgwqAgaW50IG1v ZGVfcmVmcmVzaDsKPj4+PiDCoMKgwqDCoMKgIGludCBwcmVmZXJyZWRfcmVmcmVzaCA9IDA7Cj4+ Pj4gK8KgwqDCoCBib29sIGlzX2ZzX3ZpZF9tb2RlID0gZmFsc2U7Cj4+Pj4gwqAgI2lmIGRlZmlu ZWQoQ09ORklHX0RSTV9BTURfRENfRENOKQo+Pj4+IMKgwqDCoMKgwqAgc3RydWN0IGRzY19kZWNf ZHBjZF9jYXBzIGRzY19jYXBzOwo+Pj4+IMKgwqDCoMKgwqAgdWludDMyX3QgbGlua19iYW5kd2lk dGhfa2JwczsKPj4+PiDCoCAjZW5kaWYKPj4+PiDCoMKgwqDCoMKgIHN0cnVjdCBkY19zaW5rICpz aW5rID0gTlVMTDsKPj4+PiArCj4+Pj4gK8KgwqDCoCBtZW1zZXQoJnNhdmVkX21vZGUsIDAsIHNp emVvZihzYXZlZF9tb2RlKSk7Cj4+Pj4gKwo+Pj4+IMKgwqDCoMKgwqAgaWYgKGFjb25uZWN0b3Ig PT0gTlVMTCkgewo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fRVJST1IoImFjb25uZWN0b3Ig aXMgTlVMTCFcbiIpOwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gc3RyZWFtOwo+Pj4+ IEBAIC01MzAxLDI1ICs1MzQ3LDM5IEBAIGNyZWF0ZV9zdHJlYW1fZm9yX3Npbmsoc3RydWN0IAo+ Pj4+IGFtZGdwdV9kbV9jb25uZWN0b3IgKmFjb25uZWN0b3IsCj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgwqAgKi8KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX0RFQlVHX0RSSVZFUigiTm8gcHJl ZmVycmVkIG1vZGUgZm91bmRcbiIpOwo+Pj4+IMKgwqDCoMKgwqAgfSBlbHNlIHsKPj4+PiAtwqDC oMKgwqDCoMKgwqAgZGVjaWRlX2NydGNfdGltaW5nX2Zvcl9kcm1fZGlzcGxheV9tb2RlKAo+Pj4+ ICvCoMKgwqDCoMKgwqDCoCBpc19mc192aWRfbW9kZSA9IGFtZGdwdV9mcmVlc3luY192aWRfbW9k ZSAmJgo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpc19mcmVlc3luY192 aWRlb19tb2RlKCZtb2RlLCBhY29ubmVjdG9yKTsKPj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGlz X2ZzX3ZpZF9tb2RlKSB7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZnJlZXN5bmNfbW9k ZSA9IAo+Pj4+IGdldF9oaWdoZXN0X3JlZnJlc2hfcmF0ZV9tb2RlKGFjb25uZWN0b3IsIGZhbHNl KTsKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzYXZlZF9tb2RlID0gbW9kZTsKPj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtb2RlID0gKmZyZWVzeW5jX21vZGU7Cj4+Pj4gK8KgwqDC oMKgwqDCoMKgIH0gZWxzZSB7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGVjaWRlX2Ny dGNfdGltaW5nX2Zvcl9kcm1fZGlzcGxheV9tb2RlKAo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgJm1vZGUsIHByZWZlcnJlZF9tb2RlLAo+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZG1fc3RhdGUgPyAoZG1fc3RhdGUtPnNjYWxpbmcgIT0gUk1Y X09GRikgOiBmYWxzZSk7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4+PiArCj4+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgIHByZWZlcnJlZF9yZWZyZXNoID0gZHJtX21vZGVfdnJlZnJlc2gocHJlZmVy cmVkX21vZGUpOwo+Pj4+IMKgwqDCoMKgwqAgfQo+Pj4+IMKgwqDCoMKgwqAgaWYgKCFkbV9zdGF0 ZSkKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZHJtX21vZGVfc2V0X2NydGNpbmZvKCZtb2RlLCAw KTsKPj4+PiAtwqDCoMKgIC8qCj4+Pj4gK8KgwqDCoCBpZiAoZG1fc3RhdGUgJiYgaXNfZnNfdmlk X21vZGUpCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGRybV9tb2RlX3NldF9jcnRjaW5mbygmc2F2ZWRf bW9kZSwgMCk7Cj4+Pj4gKwo+Pj4+ICsKPj4+Cj4+PiBOb3Qgc3VyZSB3aGF0IHRoaXMgYWJvdmUg Yml0IGlzIGRvaW5nIGhlcmU6Cj4+Pgo+Pj4gKDEpIFdlJ3JlIGluIGF0b21pYyBjaGVjayBhbmQg KDIpIEl0J3MgYSBGUyB2aWRlbyBtb2RlCj4+Pgo+Pj4gLT4gc2V0IENSVEMgbW9kZXNldHRpbmcg dGltaW5nIHBhcmFtZXRlcnM/Cj4+Pgo+Pj4gV2hhdCdzIHRoaXMgZm9yPwo+Pgo+PiBXaXRob3V0 IHRoaXMgY2hhbmdlLCBrZXJuZWwgd291bGQgdGVsbCB0aGUgdXNlcnNwYWNlIHdlJ3JlIHNlbmRp bmcgb25lIAo+PiBvZiB0aGUgZnJlZXN5bmMgbW9kZSB0aW1pbmcsIGJ1dCBhY3R1YWxseSBpdCB3 b3VsZCBzZW5kIHRoZSBvcHRpbWl6ZWQgCj4+IG1vZGUgdGltaW5nIHBhcmFtZXRlci4gRm9yIGlu c3RhbmNlLCBpZiAxNDRIeiBpcyB0aGUgb3B0aW1pemVkIG1vZGUsIAo+PiBhbmQgdGhlIHVzZXIg c2V0cyA0OEh6LCB0aGUgZGlzcGxheSBzZXR0aW5ncyB3b3VsZCByZWZsZWN0IHRoZSBjaGFuZ2Us IAo+PiBidXQgdGhlIG1vbml0b3Igd291bGQgc3RpbGwgc2VlIDE0NEh6Lgo+IAo+IFNvcnJ5LCBi dXQgSSBzdGlsbCBkb24ndCB1bmRlcnN0YW5kIHdoeSBpdCBkZXBlbmRzIG9uIGRtX3N0YXRlIGhl cmUuIAo+IFlvdSdyZSB0cnlpbmcgdG8gYXZvaWQgdXBkYXRpbmcgY3J0Y2luZm8gaW4gbW9kZSB2 YWxpZGF0aW9uIGZvciBzb21lIAo+IHJlYXNvbj8KClllcywgSSBjb3VsZCBzYXkgdGhhdC4gVGhl IHdob2xlIHJlYXNvbiB3aHkgd2UgaGF2ZSBkbV9zdGF0ZSBpbiB0aGlzIApmdW5jdGlvbidzIGFy Z3VtZW50IHNlZW1zIHRvIGJlIGp1c3QgdG8gcmV1c2UgdGhlIGNvZGUgZm9yIHZhbGlkYXRpb24u IApCdXQgdGhpcyBjYW4gYmUgc2ltcGxpZmllZCBpbnRvOgoKICAgICAgICBpZiAoaXNfZnNfdmlk X21vZGUpCiAgICAgICAgICAgICAgICAgZHJtX21vZGVfc2V0X2NydGNpbmZvKCZzYXZlZF9tb2Rl LCAwKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBkcm1fbW9kZV9zZXRfY3J0Y2luZm8o Jm1vZGUsIDApOwoKPiAKPj4+Cj4+PiDCoMKgwqDCoMKgwqDCoCAvKgo+Pj4+IMKgwqDCoMKgwqAg KiBJZiBzY2FsaW5nIGlzIGVuYWJsZWQgYW5kIHJlZnJlc2ggcmF0ZSBkaWRuJ3QgY2hhbmdlCj4+ Pj4gwqDCoMKgwqDCoCAqIHdlIGNvcHkgdGhlIHZpYyBhbmQgcG9sYXJpdGllcyBvZiB0aGUgb2xk IHRpbWluZ3MKPj4+PiDCoMKgwqDCoMKgICovCj4+Pj4gLcKgwqDCoCBpZiAoIXNjYWxlIHx8IG1v ZGVfcmVmcmVzaCAhPSBwcmVmZXJyZWRfcmVmcmVzaCkKPj4+PiAtwqDCoMKgwqDCoMKgwqAgZmls bF9zdHJlYW1fcHJvcGVydGllc19mcm9tX2RybV9kaXNwbGF5X21vZGUoc3RyZWFtLAo+Pj4+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgICZtb2RlLCAmYWNvbm5lY3Rvci0+YmFzZSwgY29uX3N0YXRl LCBOVUxMLCByZXF1ZXN0ZWRfYnBjKTsKPj4+PiArwqDCoMKgIGlmICghKHNjYWxlICYmIGlzX2Zz X3ZpZF9tb2RlKSB8fCBtb2RlX3JlZnJlc2ggIT0gCj4+Pj4gcHJlZmVycmVkX3JlZnJlc2gpCj4+ Pj4gK8KgwqDCoMKgwqDCoMKgIGZpbGxfc3RyZWFtX3Byb3BlcnRpZXNfZnJvbV9kcm1fZGlzcGxh eV9tb2RlKAo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cmVhbSwgJm1vZGUsICZhY29u bmVjdG9yLT5iYXNlLCBjb25fc3RhdGUsIE5VTEwsCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmVxdWVzdGVkX2JwYywgZG1fc3RhdGUgPyAxIDogMCk7Cj4+Pj4gwqDCoMKgwqDCoCBlbHNl Cj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGZpbGxfc3RyZWFtX3Byb3BlcnRpZXNfZnJvbV9kcm1fZGlz cGxheV9tb2RlKHN0cmVhbSwKPj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmbW9kZSwgJmFj b25uZWN0b3ItPmJhc2UsIGNvbl9zdGF0ZSwgb2xkX3N0cmVhbSwgCj4+Pj4gcmVxdWVzdGVkX2Jw Yyk7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGZpbGxfc3RyZWFtX3Byb3BlcnRpZXNfZnJvbV9kcm1f ZGlzcGxheV9tb2RlKAo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cmVhbSwgJm1vZGUs ICZhY29ubmVjdG9yLT5iYXNlLCBjb25fc3RhdGUsIG9sZF9zdHJlYW0sCj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcmVxdWVzdGVkX2JwYywgZG1fc3RhdGUgPyAxIDogMCk7Cj4+Pgo+Pj4g SSBkb24ndCBzZWUgbXkgZmVlZGJhY2sgb24gcHJldmlvdXMgcGF0Y2hlcyBhZGRyZXNzZWQgaGVy ZSAtIGlzbid0IGl0IAo+Pj4gY2xlYW5lciB0byBqdXN0IG1lcmdlIHRoZSBpc19zY2FsaW5nL2lz X2ZzX3ZpZF9tb2RlIGNoZWNrcyBoZXJlPyBUaGUgCj4+PiBpZGVhIGlzIHRoYXQgd2UncmUgcmVw bGFjaW5nIHRoZSBtb2RlIHdpdGggdGhlIHByaW1hcnkvcHJlZmVycmVkIGluIAo+Pj4gYm90aCBj YXNlcy4KPj4KPj4gU29ycnksIEkgbXVzdCBoYXZlIG1pc3NlZCBpdC4gV2lsbCBhZGRyZXNzIHRo aXMgaW4gdGhlIG5leHQgaXRlcmF0aW9uLgo+Pj4KPj4+IFVzaW5nIGRtX3N0YXRlIGFzIGEgY2hl Y2sgZm9yIHZhbGlkYXRpb24gLyB2cyBhdG9taWMgY2hlY2sgaXMgCj4+PiBxdWVzdGlvbmFibGUg YXMgd2VsbC4gSW4gcHJhY3RpY2Ugd2UncmUgZ3VhcmFudGVlZCB0byBoYXZlIGl0IHRvZGF5IAo+ Pj4gYnV0IGl0IG1pZ2h0IG5vdCBiZSBjbGVhciBpZiB0aGVyZSBhcmUgZnV0dXJlIGNoYW5nZXMg dGhhdCBpdCdzIGJlaW5nIAo+Pj4gdXNlZCBmb3IgdGhpcyBwdXJwb3NlIGhlcmUgaWYgdGhhdCBj aGFuZ2VzLgo+Pgo+PiBUaGlzIGlzIGJlY2F1c2Ugd2UncmUgcmV1c2luZyB0aGlzIGZ1bmN0aW9u IGZvciB0ZXN0aW5nIHN0cmVhbSAKPj4gdmFsaWRhdGlvbiBieSBjYWxsaW5nIGl0IGRpcmVjdGx5 IHdpdGggYSBOVUxMIHBhcmFtZXRlciBmb3IgZG1fc3RhdGUuIAo+PiBJZiB0aGlzIHVzYWdlIGlz IG5vdCByZWNvbW1lbmRlZCwgdGhlbiBhIHNlcGFyYXRlIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIAo+ PiBmb3IganVzdCBzdHJlYW0gdmFsaWRhdGlvbiBhbmQgdGhpcyB1c2FnZSBvZiBkbV9zdGF0ZSBj YW4gYmUgZHJvcHBlZC4KPj4KPiAKPiBMaWtlIG15IGNvbW1lbnRzIGFib3ZlIEknbSBub3Qgc3Vy ZSB3aHkgdGhlc2Ugd291bGQgZGlmZmVyIGJldHdlZW4gCj4gdmFsaWRhdGlvbi9jb21taXQgdGlt ZSAtIHRoZXkgKGlkZWFsbHkpIHNob3VsZCBub3QuCgpUaGlzIGNhbiBiZSByZW1vdmVkIGlmIEkg Y29weSB0aGUgbm9uIGNydGNfKiBwYXJhbWV0ZXJzIGxpa2UgSSBtZW50aW9uZWQgCmFib3ZlLiBU aGF0cyB0aGUgb25seSByZWFzb24gZG1fc3RhdGUgd2FzIHVzZWQuCgo+IAo+Pj4KPj4+PiDCoMKg wqDCoMKgIHN0cmVhbS0+dGltaW5nLmZsYWdzLkRTQyA9IDA7Cj4+Pj4gQEAgLTU0NTYsNiArNTUx Niw3IEBAIGRtX2NydGNfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPj4+ PiDCoMKgwqDCoMKgIHN0YXRlLT5hYm1fbGV2ZWwgPSBjdXItPmFibV9sZXZlbDsKPj4+PiDCoMKg wqDCoMKgIHN0YXRlLT52cnJfc3VwcG9ydGVkID0gY3VyLT52cnJfc3VwcG9ydGVkOwo+Pj4+IMKg wqDCoMKgwqAgc3RhdGUtPmZyZWVzeW5jX2NvbmZpZyA9IGN1ci0+ZnJlZXN5bmNfY29uZmlnOwo+ Pj4+ICvCoMKgwqAgc3RhdGUtPmZyZWVzeW5jX3ZpZGVvX21vZGUgPSBjdXItPmZyZWVzeW5jX3Zp ZGVvX21vZGU7Cj4+Pj4gwqDCoMKgwqDCoCBzdGF0ZS0+Y3JjX3NyYyA9IGN1ci0+Y3JjX3NyYzsK Pj4+PiDCoMKgwqDCoMKgIHN0YXRlLT5jbV9oYXNfZGVnYW1tYSA9IGN1ci0+Y21faGFzX2RlZ2Ft bWE7Cj4+Pj4gwqDCoMKgwqDCoCBzdGF0ZS0+Y21faXNfZGVnYW1tYV9zcmdiID0gY3VyLT5jbV9p c19kZWdhbW1hX3NyZ2I7Cj4+Pj4gQEAgLTcxNDksNyArNzIxMCw3IEBAIHN0YXRpYyB2b2lkIAo+ Pj4+IGFtZGdwdV9kbV9jb25uZWN0b3JfYWRkX2ZyZWVzeW5jX21vZGVzKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0Cj4+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2RtX2Nvbm5lY3Rv ciAqYW1kZ3B1X2RtX2Nvbm5lY3RvciA9Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHRvX2FtZGdw dV9kbV9jb25uZWN0b3IoY29ubmVjdG9yKTsKPj4+PiAtwqDCoMKgIGlmICghKGFtZGdwdV9leHBf ZnJlZXN5bmNfdmlkX21vZGUgJiYgZWRpZCkpCj4+Pj4gK8KgwqDCoCBpZiAoIShhbWRncHVfZnJl ZXN5bmNfdmlkX21vZGUgJiYgZWRpZCkpCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybjsK Pj4+PiDCoMKgwqDCoMKgIGlmIChlZGlkLT52ZXJzaW9uID09IDEgJiYgZWRpZC0+cmV2aXNpb24g PiAxKSB7Cj4+Pj4gQEAgLTc4NDcsOSArNzkwOCwyNSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfc3Ry ZWFtX2lycV9wYXJhbWV0ZXJzKAo+Pj4+IMKgwqDCoMKgwqAgaWYgKG5ld19jcnRjX3N0YXRlLT52 cnJfc3VwcG9ydGVkICYmCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGNvbmZpZy5taW5fcmVmcmVz aF9pbl91aHogJiYKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgY29uZmlnLm1heF9yZWZyZXNoX2lu X3Voeikgewo+Pj4+IC3CoMKgwqDCoMKgwqDCoCBjb25maWcuc3RhdGUgPSBuZXdfY3J0Y19zdGF0 ZS0+YmFzZS52cnJfZW5hYmxlZCA/Cj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVlJSX1NU QVRFX0FDVElWRV9WQVJJQUJMRSA6Cj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVlJSX1NU QVRFX0lOQUNUSVZFOwo+Pj4+ICvCoMKgwqDCoMKgwqDCoCAvKgo+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgICogaWYgZnJlZXN5bmMgY29tcGF0aWJsZSBtb2RlIHdhcyBzZXQsIGNvbmZpZy5zdGF0ZSB3 aWxsIAo+Pj4+IGJlIHNldAo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgICogaW4gYXRvbWljIGNoZWNr Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqAgKi8KPj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGNvbmZp Zy5zdGF0ZSA9PSBWUlJfU1RBVEVfQUNUSVZFX0ZJWEVEICYmCj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgY29uZmlnLmZpeGVkX3JlZnJlc2hfaW5fdWh6ICYmIAo+Pj4+IGNvbmZpZy5tYXhf cmVmcmVzaF9pbl91aHogJiYKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25maWcubWlu X3JlZnJlc2hfaW5fdWh6ICYmCj4+Pgo+Pj4gVGhpcyBjb25kaXRpb24gZG9lc24ndCBuZWVkIHRv IGNoZWNrIG1heF9yZWZyZXNoL21pbl9yZWZyZXNoIGFzIGl0J3MgCj4+PiBhbHJlYWR5IGNoZWNr ZWQgYWJvdmVkLgo+Pgo+PiBXaWxsIGZpeC4KPj4+Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKCFkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldCgmbmV3X2NydGNfc3RhdGUtPmJhc2Up IHx8Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZXdfY3J0Y19zdGF0ZS0+ZnJlZXN5 bmNfdmlkZW9fbW9kZSkpIHsKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2cnJfcGFyYW1z Lm1heF9yZWZyZXNoX2luX3VoeiA9IGNvbmZpZy5tYXhfcmVmcmVzaF9pbl91aHo7Cj4+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgdnJyX3BhcmFtcy5taW5fcmVmcmVzaF9pbl91aHogPSBjb25m aWcubWluX3JlZnJlc2hfaW5fdWh6Owo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZycl9w YXJhbXMuZml4ZWRfcmVmcmVzaF9pbl91aHogPSAKPj4+PiBjb25maWcuZml4ZWRfcmVmcmVzaF9p bl91aHo7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdnJyX3BhcmFtcy5zdGF0ZSA9IFZS Ul9TVEFURV9BQ1RJVkVfRklYRUQ7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIH0gZWxzZSB7Cj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uZmlnLnN0YXRlID0gbmV3X2NydGNfc3RhdGUtPmJh c2UudnJyX2VuYWJsZWQgPwo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBWUlJfU1RBVEVfQUNUSVZFX1ZBUklBQkxFIDoKPj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg VlJSX1NUQVRFX0lOQUNUSVZFOwo+Pj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4gKwo+Pj4+IMKg wqDCoMKgwqAgfSBlbHNlIHsKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgY29uZmlnLnN0YXRlID0g VlJSX1NUQVRFX1VOU1VQUE9SVEVEOwo+Pj4+IMKgwqDCoMKgwqAgfQo+Pj4+IEBAIC04MTcxLDcg KzgyNDgsOCBAQCBzdGF0aWMgdm9pZCBhbWRncHVfZG1fY29tbWl0X3BsYW5lcyhzdHJ1Y3QgCj4+ Pj4gZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBh cyBwYXJ0IG9mIGNvbW1pdC4KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoCBpZiAoYW1kZ3B1X2RtX3Zycl9hY3RpdmUoZG1fb2xkX2NydGNfc3RhdGUp ICE9Cj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2RtX3Zycl9hY3RpdmUoYWNy dGNfc3RhdGUpKSB7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2RtX3Zycl9h Y3RpdmUoYWNydGNfc3RhdGUpIHx8Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWNydGNf c3RhdGUtPmZyZWVzeW5jX3ZpZGVvX21vZGUpIHsKPj4+Cj4+PiBEbyB3ZSByZWFsbHkgbmVlZCB0 aGlzIGNoZWNrIGhlcmU/IGFtZGdwdV9kbV92cnJfYWN0aXZlIHNob3VsZCBwaWNrIAo+Pj4gdXAg b24gVlJSX1NUQVRFX0FDVElWRV9GSVhFRCwgbm8/IElmIGl0IGRvZXNuJ3QgdGhlbiB0aGF0IHNo b3VsZCBiZSAKPj4+IGZpeGVkLgo+Pgo+PiBUaGlzIHNwZWNpZmljYWxseSBjaGVja3MgZm9yIGEg Y2hhbmdlIHRoZSBjdXJyZW50IGFuZCBwcmV2aW91cyBzdGF0ZS4gCj4+IEluIGJvdGggdGhlIHN0 YXRlcywgZnJlZXN5bmNfdmlkZW9fbW9kZSBjYW4gYmUgYWN0aXZlLiBUaGlzIGNvbmRpdGlvbiAK Pj4gd291bGQgcmV0dXJuIGZhbHNlIGluIHRoZSBhYnNlbmNlIG9mIGFkZGl0aW9uYWwgT1Igd2l0 aCAKPj4gZnJlZXN5bmNfdmlkZW9fbW9kZS4gSWYgZnJlZXN5bmNfdmlkZW9fbW9kZSBpcyBhY3Rp dmUsIHdlIHdhbnQgdGhpcyAKPj4gYmxvY2sgb2YgY29kZSB0byBnZXQgZXhlY3V0ZWQuIElmIGZy ZWVzeW5jX3ZpZGVvX21vZGUgaXMgbm90IGFjdGl2ZSwgCj4+IHRoZW4gY29tcGFyaXNvbiB3aXRo IG9sZCBhbmQgbmV3IHN0YXRlIGlzIHN1ZmZpY2llbnQuIEkgY2FuIGFkZCB0aGlzIAo+PiBsb2dp YyBpbnRvIGFub3RoZXIgZnVuY3Rpb24gYW5kIGtlZXAgaXQgY2xlYW5lciBoZXJlLgo+Pgo+IAo+ IEkgdGhpbmsgYWNydGNfc3RhdGUtPmZyZWVzeW5jX3ZpZGVvX21vZGUgaXMgcmVkdW5kYW50IC0g aXQgZG9lc24ndCBjaGVjayAKPiBwcmV2L25ldywgaXQgb25seSBjaGVja3Mgd2hldGhlciBvciBu b3QgaXQncyBhY3RpdmUuIFRoaXMgc2hvdWxkIGJlIAo+IGFscmVhZHkgY2hlY2tlZCBpbiBhbWRn cHVfZG1fdnJyX2FjdGl2ZSgpLCBhbmQgdGhlOgo+IAo+IGFtZGdwdV9kbV92cnJfYWN0aXZlKGRt X29sZF9jcnRjX3N0YXRlKSAhPSAKPiBhbWRncHVfZG1fdnJyX2FjdGl2ZShhY3J0Y19zdGF0ZSkK PiAKPiBzaG91bGQgYmUgZG9pbmcgdGhpcyBmb3IgeW91LgoKVGhpcyBpcyBleGFjdGx5IHdoYXQg dGhlIGNvZGUgd2FzIG9yaWdpbmFsbHkuIFRoZSBwcm9ibGVtIGhlcmUgaXMgdGhhdCAKY2hlY2tp bmcgdGhlIHByZXZpb3VzIGFuZCBuZXh0IHN0YXRlIGRpZmZlcmVuY2UgaXMgbm90IGVub3VnaCwg d2hpY2ggaXMgCndoeSBJIGhhZCB0byBjcmVhdGUgYW4gYWRkaXRpb25hbCBwYXJhbXRlciB0byBr bm93IHdoZXRoZXIgd2UgYXJlIApjdXJyZW50bHkgaW4gZnJlZXN5bmMgbW9kZS4gQnV0IHRoaXMg Y2FuIGJlIGF2b2lkZWQsIGlmIHdlIGhhdmUgYW4gZWFybHkgCnJldHVybiBpZiBmaXhlZCB2cnIg bW9kZSBpcyBhY3RpdmUsIGFuZCBhbiBhZGRpdGlvbmFsIGNoZWNrIGZvciB0aGUgCmZpeGVkIHZy ciBzdGF0ZSBkdXJpbmcgbW9kZXNldC4gV2lsbCBhZGQgdGhpcyB0byBuZXh0IGl0ZXJhdGlvbi4K Cj4gCj4+Pgo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNwaW5fbG9ja19pcnFzYXZl KCZwY3J0Yy0+ZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZGNfc3RyZWFtX2FkanVzdF92bWluX3ZtYXgoCj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBkbS0+ZGMsIGFjcnRjX3N0YXRlLT5zdHJlYW0sCj4+Pj4gQEAg LTg0NDIsOCArODUyMCwxMCBAQCBzdGF0aWMgdm9pZCAKPj4+PiBhbWRncHVfZG1fYXRvbWljX2Nv bW1pdF90YWlsKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPj4+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIH0KPj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZG1fb2xkX2NydGNf c3RhdGUtPnN0cmVhbSkKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZG1fb2xkX2Ny dGNfc3RhdGUtPnN0cmVhbSkgewo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmVtb3ZlX3N0cmVhbShhZGV2LCBhY3J0YywgCj4+Pj4gZG1fb2xkX2NydGNfc3RhdGUtPnN0 cmVhbSk7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkbV9vbGRfY3J0Y19z dGF0ZS0+ZnJlZXN5bmNfdmlkZW9fbW9kZSA9IDA7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBtX3J1bnRpbWVfZ2V0X25vcmVz dW1lKGRldi0+ZGV2KTsKPj4+PiBAQCAtODQ1NCw4ICs4NTM0LDEwIEBAIHN0YXRpYyB2b2lkIAo+ Pj4+IGFtZGdwdV9kbV9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlKQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9IGVsc2UgaWYgKG1vZGVyZXNldF9yZXF1 aXJlZChuZXdfY3J0Y19zdGF0ZSkpIHsKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBE Uk1fREVCVUdfRFJJVkVSKCJBdG9taWMgY29tbWl0OiBSRVNFVC4gY3J0YyBpZCAKPj4+PiAlZDpb JXBdXG4iLCBhY3J0Yy0+Y3J0Y19pZCwgYWNydGMpOwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIC8qIGkuZS4gcmVzZXQgbW9kZSAqLwo+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGlmIChkbV9vbGRfY3J0Y19zdGF0ZS0+c3RyZWFtKQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGlmIChkbV9vbGRfY3J0Y19zdGF0ZS0+c3RyZWFtKSB7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCByZW1vdmVfc3RyZWFtKGFkZXYsIGFjcnRjLCAKPj4+PiBkbV9v bGRfY3J0Y19zdGF0ZS0+c3RyZWFtKTsKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGRtX29sZF9jcnRjX3N0YXRlLT5mcmVlc3luY192aWRlb19tb2RlID0gMDsKPj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbW9k ZV9zZXRfcmVzZXRfcmVxdWlyZWQgPSB0cnVlOwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ Pj4gwqDCoMKgwqDCoCB9IC8qIGZvcl9lYWNoX2NydGNfaW5fc3RhdGUoKSAqLwo+Pj4+IEBAIC04 ODY3LDYgKzg5NDksNyBAQCBzdGF0aWMgdm9pZCBnZXRfZnJlZXN5bmNfY29uZmlnX2Zvcl9jcnRj KAo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRvX2FtZGdwdV9kbV9jb25uZWN0b3Io bmV3X2Nvbl9zdGF0ZS0+YmFzZS5jb25uZWN0b3IpOwo+Pj4+IMKgwqDCoMKgwqAgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKm1vZGUgPSAmbmV3X2NydGNfc3RhdGUtPmJhc2UubW9kZTsKPj4+PiDC oMKgwqDCoMKgIGludCB2cmVmcmVzaCA9IGRybV9tb2RlX3ZyZWZyZXNoKG1vZGUpOwo+Pj4+ICvC oMKgwqAgYm9vbCBmc192aWRfbW9kZSA9IGZhbHNlOwo+Pj4+IMKgwqDCoMKgwqAgbmV3X2NydGNf c3RhdGUtPnZycl9zdXBwb3J0ZWQgPSAKPj4+PiBuZXdfY29uX3N0YXRlLT5mcmVlc3luY19jYXBh YmxlICYmCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZy ZWZyZXNoID49IGFjb25uZWN0b3ItPm1pbl92ZnJlcSAmJgo+Pj4+IEBAIC04ODc0LDE3ICs4OTU3 LDI1IEBAIHN0YXRpYyB2b2lkIGdldF9mcmVlc3luY19jb25maWdfZm9yX2NydGMoCj4+Pj4gwqDC oMKgwqDCoCBpZiAobmV3X2NydGNfc3RhdGUtPnZycl9zdXBwb3J0ZWQpIHsKPj4+PiDCoMKgwqDC oMKgwqDCoMKgwqAgbmV3X2NydGNfc3RhdGUtPnN0cmVhbS0+aWdub3JlX21zYV90aW1pbmdfcGFy YW0gPSB0cnVlOwo+Pj4+IC3CoMKgwqDCoMKgwqDCoCBjb25maWcuc3RhdGUgPSBuZXdfY3J0Y19z dGF0ZS0+YmFzZS52cnJfZW5hYmxlZCA/Cj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBWUlJfU1RBVEVfQUNUSVZFX1ZBUklBQkxFIDoKPj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIFZSUl9TVEFURV9JTkFDVElWRTsKPj4+PiAtwqDCoMKgwqDCoMKgwqAgY29u ZmlnLm1pbl9yZWZyZXNoX2luX3VoeiA9Cj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBhY29ubmVjdG9yLT5taW5fdmZyZXEgKiAxMDAwMDAwOwo+Pj4+IC3CoMKgwqDCoMKgwqDC oCBjb25maWcubWF4X3JlZnJlc2hfaW5fdWh6ID0KPj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGFjb25uZWN0b3ItPm1heF92ZnJlcSAqIDEwMDAwMDA7Cj4+Pj4gK8KgwqDCoMKg wqDCoMKgIGZzX3ZpZF9tb2RlID0gbmV3X2NydGNfc3RhdGUtPmZyZWVzeW5jX2NvbmZpZy5zdGF0 ZSA9PSAKPj4+PiBWUlJfU1RBVEVfQUNUSVZFX0ZJWEVEIHx8Cj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgbmV3X2NydGNfc3RhdGUtPmZyZWVzeW5jX3ZpZGVvX21vZGU7Cj4+Pj4gKwo+Pj4+ ICvCoMKgwqDCoMKgwqDCoCBjb25maWcubWluX3JlZnJlc2hfaW5fdWh6ID0gYWNvbm5lY3Rvci0+ bWluX3ZmcmVxICogMTAwMDAwMDsKPj4+PiArwqDCoMKgwqDCoMKgwqAgY29uZmlnLm1heF9yZWZy ZXNoX2luX3VoeiA9IGFjb25uZWN0b3ItPm1heF92ZnJlcSAqIDEwMDAwMDA7Cj4+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgIGNvbmZpZy52c2lmX3N1cHBvcnRlZCA9IHRydWU7Cj4+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgIGNvbmZpZy5idHIgPSB0cnVlOwo+Pj4+IC3CoMKgwqAgfQo+Pj4+ICvCoMKgwqDC oMKgwqDCoCBpZiAoZnNfdmlkX21vZGUpIHsKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBj b25maWcuc3RhdGUgPSBWUlJfU1RBVEVfQUNUSVZFX0ZJWEVEOwo+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGNvbmZpZy5maXhlZF9yZWZyZXNoX2luX3VoeiA9IAo+Pj4+IG5ld19jcnRjX3N0 YXRlLT5mcmVlc3luY19jb25maWcuZml4ZWRfcmVmcmVzaF9pbl91aHo7Cj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIH0gZWxzZSBpZiAo bmV3X2NydGNfc3RhdGUtPmJhc2UudnJyX2VuYWJsZWQpIHsKPj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBjb25maWcuc3RhdGUgPSBWUlJfU1RBVEVfQUNUSVZFX1ZBUklBQkxFOwo+Pj4+ICvC oMKgwqDCoMKgwqDCoCB9IGVsc2Ugewo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbmZp Zy5zdGF0ZSA9IFZSUl9TVEFURV9JTkFDVElWRTsKPj4+PiArwqDCoMKgwqDCoMKgwqAgfQo+Pj4+ ICvCoMKgwqAgfQo+Pj4+ICtvdXQ6Cj4+Pj4gwqDCoMKgwqDCoCBuZXdfY3J0Y19zdGF0ZS0+ZnJl ZXN5bmNfY29uZmlnID0gY29uZmlnOwo+Pj4+IMKgIH0KPj4+PiBAQCAtODg5Nyw2ICs4OTg4LDUx IEBAIHN0YXRpYyB2b2lkIHJlc2V0X2ZyZWVzeW5jX2NvbmZpZ19mb3JfY3J0YygKPj4+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc2l6ZW9mKG5ld19jcnRjX3N0YXRlLT52cnJfaW5mb3BhY2tl dCkpOwo+Pj4+IMKgIH0KPj4+PiArc3RhdGljIGJvb2wKPj4+PiAraXNfdGltaW5nX3VuY2hhbmdl ZF9mb3JfZnJlZXN5bmMoc3RydWN0IGRybV9jcnRjX3N0YXRlIAo+Pj4+ICpvbGRfY3J0Y19zdGF0 ZSwKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9jcnRj X3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkKPj4+PiArewo+Pj4+ICvCoMKgwqAgc3RydWN0IGRybV9k aXNwbGF5X21vZGUgb2xkX21vZGUsIG5ld19tb2RlOwo+Pj4+ICsKPj4+PiArwqDCoMKgIGlmICgh b2xkX2NydGNfc3RhdGUgfHwgIW5ld19jcnRjX3N0YXRlKQo+Pj4+ICvCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gZmFsc2U7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgb2xkX21vZGUgPSBvbGRfY3J0Y19zdGF0 ZS0+bW9kZTsKPj4+PiArwqDCoMKgIG5ld19tb2RlID0gbmV3X2NydGNfc3RhdGUtPm1vZGU7Cj4+ Pj4gKwo+Pj4+ICvCoMKgwqAgaWYgKG9sZF9tb2RlLmNsb2NrwqDCoMKgwqDCoMKgID09IG5ld19t b2RlLmNsb2NrICYmCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIG9sZF9tb2RlLmhkaXNwbGF5wqDCoMKg ID09IG5ld19tb2RlLmhkaXNwbGF5ICYmCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIG9sZF9tb2RlLnZk aXNwbGF5wqDCoMKgID09IG5ld19tb2RlLnZkaXNwbGF5ICYmCj4+Pj4gK8KgwqDCoMKgwqDCoMKg IG9sZF9tb2RlLmh0b3RhbMKgwqDCoMKgwqAgPT0gbmV3X21vZGUuaHRvdGFsICYmCj4+Pj4gK8Kg wqDCoMKgwqDCoMKgIG9sZF9tb2RlLnZ0b3RhbMKgwqDCoMKgwqAgIT0gbmV3X21vZGUudnRvdGFs ICYmCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIG9sZF9tb2RlLmhzeW5jX3N0YXJ0ID09IG5ld19tb2Rl LmhzeW5jX3N0YXJ0ICYmCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIG9sZF9tb2RlLnZzeW5jX3N0YXJ0 ICE9IG5ld19tb2RlLnZzeW5jX3N0YXJ0ICYmCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIG9sZF9tb2Rl LmhzeW5jX2VuZMKgwqAgPT0gbmV3X21vZGUuaHN5bmNfZW5kICYmCj4+Pj4gK8KgwqDCoMKgwqDC oMKgIG9sZF9tb2RlLnZzeW5jX2VuZMKgwqAgIT0gbmV3X21vZGUudnN5bmNfZW5kICYmCj4+Pj4g K8KgwqDCoMKgwqDCoMKgIG9sZF9tb2RlLmhza2V3wqDCoMKgwqDCoMKgID09IG5ld19tb2RlLmhz a2V3ICYmCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIG9sZF9tb2RlLnZzY2FuwqDCoMKgwqDCoMKgID09 IG5ld19tb2RlLnZzY2FuICYmCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIChvbGRfbW9kZS52c3luY19l bmQgLSBvbGRfbW9kZS52c3luY19zdGFydCkgPT0KPj4+PiArwqDCoMKgwqDCoMKgwqAgKG5ld19t b2RlLnZzeW5jX2VuZCAtIG5ld19tb2RlLnZzeW5jX3N0YXJ0KSkKPj4+PiArwqDCoMKgwqDCoMKg wqAgcmV0dXJuIHRydWU7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgcmV0dXJuIGZhbHNlOwo+Pj4+ICt9 Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgdm9pZCBzZXRfZnJlZXN5bmNfZml4ZWRfY29uZmlnKHN0cnVj dCBkbV9jcnRjX3N0YXRlIAo+Pj4+ICpkbV9uZXdfY3J0Y19zdGF0ZSkgewo+Pj4+ICvCoMKgwqAg dWludDY0X3QgbnVtLCBkZW4sIHJlczsKPj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fY3J0Y19zdGF0 ZSAqbmV3X2NydGNfc3RhdGUgPSAmZG1fbmV3X2NydGNfc3RhdGUtPmJhc2U7Cj4+Pj4gKwo+Pj4+ ICvCoMKgwqAgZG1fbmV3X2NydGNfc3RhdGUtPmZyZWVzeW5jX2NvbmZpZy5zdGF0ZSA9IFZSUl9T VEFURV9BQ1RJVkVfRklYRUQ7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgbnVtID0gKHVuc2lnbmVkIGxv bmcgbG9uZyluZXdfY3J0Y19zdGF0ZS0+bW9kZS5jbG9jayAqIDEwMDAgKiAKPj4+PiAxMDAwMDAw Owo+Pj4+ICvCoMKgwqAgZGVuID0gKHVuc2lnbmVkIGxvbmcgbG9uZyluZXdfY3J0Y19zdGF0ZS0+ bW9kZS5odG90YWwgKgo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgKHVuc2lnbmVkIGxvbmcgbG9u ZyluZXdfY3J0Y19zdGF0ZS0+bW9kZS52dG90YWw7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgcmVzID0g ZGl2X3U2NChudW0sIGRlbik7Cj4+Pj4gK8KgwqDCoCBkbV9uZXdfY3J0Y19zdGF0ZS0+ZnJlZXN5 bmNfY29uZmlnLmZpeGVkX3JlZnJlc2hfaW5fdWh6ID0gcmVzOwo+Pj4+ICvCoMKgwqAgZG1fbmV3 X2NydGNfc3RhdGUtPmZyZWVzeW5jX3ZpZGVvX21vZGUgPSB0cnVlOwo+Pj4+ICt9Cj4+Pj4gKwo+ Pj4+IMKgIHN0YXRpYyBpbnQgZG1fdXBkYXRlX2NydGNfc3RhdGUoc3RydWN0IGFtZGdwdV9kaXNw bGF5X21hbmFnZXIgKmRtLAo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+Pj4+IEBAIC04OTg3LDYgKzkx MjMsMTEgQEAgc3RhdGljIGludCBkbV91cGRhdGVfY3J0Y19zdGF0ZShzdHJ1Y3QgCj4+Pj4gYW1k Z3B1X2Rpc3BsYXlfbWFuYWdlciAqZG0sCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBUT0RP OiBSZWZhY3RvciB0aGlzIGZ1bmN0aW9uIHRvIGFsbG93IHRoaXMgY2hlY2sgdG8gd29yawo+Pj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgICogaW4gYWxsIGNvbmRpdGlvbnMuCj4+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgwqAgKi8KPj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGFtZGdwdV9mcmVlc3luY192 aWRfbW9kZSAmJgo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRtX25ld19jcnRjX3N0YXRl LT5zdHJlYW0gJiYKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpc190aW1pbmdfdW5jaGFu Z2VkX2Zvcl9mcmVlc3luYyhuZXdfY3J0Y19zdGF0ZSwgCj4+Pj4gb2xkX2NydGNfc3RhdGUpKQo+ Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gc2tpcF9tb2Rlc2V0Owo+Pj4+ICsKPj4+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGRtX25ld19jcnRjX3N0YXRlLT5zdHJlYW0gJiYKPj4+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkY19pc19zdHJlYW1fdW5jaGFuZ2VkKG5ld19z dHJlYW0sIAo+Pj4+IGRtX29sZF9jcnRjX3N0YXRlLT5zdHJlYW0pICYmCj4+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZGNfaXNfc3RyZWFtX3NjYWxpbmdfdW5jaGFuZ2VkKG5ld19zdHJl YW0sIAo+Pj4+IGRtX29sZF9jcnRjX3N0YXRlLT5zdHJlYW0pKSB7Cj4+Pj4gQEAgLTkwMTgsNiAr OTE1OSwyNiBAQCBzdGF0aWMgaW50IGRtX3VwZGF0ZV9jcnRjX3N0YXRlKHN0cnVjdCAKPj4+PiBh bWRncHVfZGlzcGxheV9tYW5hZ2VyICpkbSwKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFk bV9vbGRfY3J0Y19zdGF0ZS0+c3RyZWFtKQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGdvdG8gc2tpcF9tb2Rlc2V0Owo+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoYW1kZ3B1X2ZyZWVz eW5jX3ZpZF9tb2RlICYmIGRtX25ld19jcnRjX3N0YXRlLT5zdHJlYW0gJiYKPj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBpc190aW1pbmdfdW5jaGFuZ2VkX2Zvcl9mcmVlc3luYyhuZXdfY3J0 Y19zdGF0ZSwKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgb2xkX2NydGNfc3RhdGUpKSB7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgbmV3X2NydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCA9IGZhbHNlOwo+Pj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIERSTV9ERUJVR19EUklWRVIoCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAiTW9kZSBjaGFuZ2Ugbm90IHJlcXVpcmVkIGZvciBmcm9udCBwb3JjaCBj aGFuZ2UsICIKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJzZXR0aW5nIG1v ZGVfY2hhbmdlZCB0byAlZCIsCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBu ZXdfY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2VkKTsKPj4+PiArCj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgc2V0X2ZyZWVzeW5jX2ZpeGVkX2NvbmZpZyhkbV9uZXdfY3J0Y19zdGF0ZSk7Cj4+ Pj4gKwo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gc2tpcF9tb2Rlc2V0Owo+Pj4+ ICvCoMKgwqDCoMKgwqDCoCB9IGVsc2UgaWYgKGFtZGdwdV9mcmVlc3luY192aWRfbW9kZSAmJiBh Y29ubmVjdG9yICYmCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaXNfZnJlZXN5 bmNfdmlkZW9fbW9kZSgmbmV3X2NydGNfc3RhdGUtPm1vZGUsCj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFjb25uZWN0b3IpKSB7Cj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2V0X2ZyZWVzeW5jX2ZpeGVkX2NvbmZpZyhkbV9uZXdf Y3J0Y19zdGF0ZSk7Cj4+Pgo+Pj4gSSBkb24ndCB0aGluayB0aGlzIGV4dHJhIGNoZWNrIGlzIG5l ZWRlZCBoZXJlIGJlY2F1c2Ugd2UgaGF2ZSB0aGUgb25lIAo+Pj4gYWJvdmUuCj4+Cj4+IEluIHRo ZSBzZWNvbmQgYnJhbmNoLCBzaW5jZSB3ZSBjYWxsIGlzX2ZyZWVzeW5jX3ZpZGVvX21vZGUoKSwg dGhlIAo+PiBjaGVjayB3aXRoIHRoZSBtb2R1bGUgcGFyYW1ldGVyIHdhcyBhbHNvIG5lY2Vzc2Fy eSBhcyB0aGlzIGlzIHRoZSAKPj4gdHJpZ2dlcmluZyBwb2ludCBmb3IgdGhlIFZSUiBhcGkgY29u ZmlndXJhdGlvbiBjaGFuZ2UuIEFsc28sIHRoZSBmaXJzdCAKPj4gYnJhbmNoIHNraXBzIHRoZSBt b2Rlc2V0LCB3aGlsZSB0aGUgc2Vjb25kIGRvZXNudC4gU28gd2UgY2Fubm90IGNsdWIgCj4+IHRo ZW0gdG9nZXRoZXIuIFRoZSBzZWNvbmQgYnJhbmNoIGlzIGZvciB0aGUgY2FzZSB3aGVuIGEgZnJl ZXN5bmMgbW9kZSAKPj4gd2FzIHNldCBhY2NvbXBhbmllZCBieSBhIG1vZGVzZXQuIFRoaXMgaGFw cGVucyB3aGVuIHRoZSBwcmV2aW91cyBtb2RlIAo+PiBoYWQgZGlmZmVyZW50IGJhc2UgdGltaW5n cyBhbmQgaGVuY2UgYSBtb2Rlc2V0IGlzIG5lY2Vzc2FyeS4KPj4KPj4KPj4gVGhhbmtzICYgUmVn YXJkcywKPj4gQXVyYWJpbmRvIFBpbGxhaQo+Pgo+IAo+IE9rYXksIEkgdW5kZXJzdGFuZCB0aGlz IGJsb2NrIG5vdy4gVGhhbmtzLgo+IAo+IFJlZ2FyZHMsCj4gTmljaG9sYXMgS2F6bGF1c2thcwo+ IAo+Pj4KPj4+IFJlZ2FyZHMsCj4+PiBOaWNob2xhcyBLYXpsYXVza2FzCj4+Pgo+Pj4+ICvCoMKg wqDCoMKgwqDCoCB9IGVsc2UgaWYgKGRtX25ld19jcnRjX3N0YXRlLT5mcmVlc3luY192aWRlb19t b2RlKSB7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZG1fbmV3X2NydGNfc3RhdGUtPmZy ZWVzeW5jX3ZpZGVvX21vZGUgPSAwOwo+Pj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4gKwo+Pj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBkbV9hdG9taWNfZ2V0X3N0YXRlKHN0YXRlLCAmZG1f c3RhdGUpOwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocmV0KQo+Pj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGdvdG8gZmFpbDsKPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uaCAKPj4+PiBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmgKPj4+PiBpbmRleCAzZWE4NWJl OWM1NDYuLmZmNDY3NTU3MjEyNSAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5oCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uaAo+Pj4+IEBAIC00NzQsNiArNDc0LDcg QEAgc3RydWN0IGRtX2NydGNfc3RhdGUgewo+Pj4+IMKgwqDCoMKgwqAgYm9vbCBmcmVlc3luY190 aW1pbmdfY2hhbmdlZDsKPj4+PiDCoMKgwqDCoMKgIGJvb2wgZnJlZXN5bmNfdnJyX2luZm9fY2hh bmdlZDsKPj4+PiArwqDCoMKgIGJvb2wgZnJlZXN5bmNfdmlkZW9fbW9kZTsKPj4+PiDCoMKgwqDC oMKgIGJvb2wgZHNjX2ZvcmNlX2NoYW5nZWQ7Cj4+Pj4gwqDCoMKgwqDCoCBib29sIHZycl9zdXBw b3J0ZWQ7Cj4+Pj4KPj4+Cj4+Cj4gCj4gCgotLSAKUmVnYXJkcywKQXVyYWJpbmRvIFBpbGxhaQpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwg bWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK 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=-15.2 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 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 BF8B9C433E0 for ; Fri, 12 Feb 2021 20:01:55 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7149764E35 for ; Fri, 12 Feb 2021 20:01:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7149764E35 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=amd-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id CC06889932; Fri, 12 Feb 2021 20:01:53 +0000 (UTC) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2081.outbound.protection.outlook.com [40.107.243.81]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7236189864; Fri, 12 Feb 2021 20:01:53 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DgnI8ZqrVxkUtfcn/Uzca2XkpL2BTI37IDuysHwhfha5J162j8EXq9jwGtiO9chn6CzFjl1q4G3XIg9K0o9gq+ZlmJ+lJVMm3LnkpC2P7Vcc3V82SJjtU5nh2ben6lmyWvgHUJzSgXgiXw41NMMTXEniHBxwNNXv84+PtlPnlPKPxoaYbR8AVbPvU8rstk0TxdRlJmMiyf/sGDkjwc1ljg1j5afIlGn7pwN0GaXdVHfPfwiaKCeqZQm9dFgQDcC/BASA3YW5ol5MOeivFYgf37/AbmeuD81oGiBew5G3EPxdQWowz2RR3YchcLMbs/lyZy7IyEr6RFZtwkK7ISZgnA== 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-SenderADCheck; bh=XWqP3wwKl33Wijj2gET9Xum7BhOzqGSus02fo7eQdVI=; b=hCNAVT2UCei01wIV2Kvo3C0SRiUGr4fCCy+LiruJZJOOfysKshHoYwhlOFdlp1zsoXe7LSj0VrfsEVQO0IRpbjW+SyBfjpTd9LtraaS9oTRtTQkbnUCKo5t6wssmKFPt8I1OBayKoTNOhNoKAErAk1qE38TC3Oxmx146WqzofDLo4pR/o1Nuy9rCtund8NHoe0BTlKZkeHnVymkW/vlEipxjamT7N7gx9Ipp5ORioxeVTmufymYW2QHaBU1oDvoCKhGFLQ+ntAcv9zoiVpP4dUCLr78ltnymr/SUpUGft1XXP4CSg0/g6o5P815jZqkKt93mXXl7GcUuexzW03OOFQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XWqP3wwKl33Wijj2gET9Xum7BhOzqGSus02fo7eQdVI=; b=BDySm30MPSmIPsjZtnp9LthzCYqbOyBw18mHFMoUGiyFowz2z1hUkxvM9DfWG2iW+45OE2v6Q/9wR6RoHs2Ulx2o14Q+XXLiNBMDC5nkHVX8rVQsBelgIgLkfhVSB4BpEQzck/596WUoBvwvjLpExMpiJdpOxuSaz+HdB1SXZ00= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; Received: from DM6PR12MB4484.namprd12.prod.outlook.com (2603:10b6:5:28f::24) by DM6PR12MB2891.namprd12.prod.outlook.com (2603:10b6:5:188::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3846.31; Fri, 12 Feb 2021 20:01:50 +0000 Received: from DM6PR12MB4484.namprd12.prod.outlook.com ([fe80::994c:be64:b250:cf13]) by DM6PR12MB4484.namprd12.prod.outlook.com ([fe80::994c:be64:b250:cf13%8]) with mapi id 15.20.3846.027; Fri, 12 Feb 2021 20:01:50 +0000 Subject: Re: [PATCH 3/3] drm/amd/display: Skip modeset for front porch change To: "Kazlauskas, Nicholas" , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org References: <20210119155029.18943-1-aurabindo.pillai@amd.com> <20210119155029.18943-4-aurabindo.pillai@amd.com> <500e8330-cdab-583d-e8c8-167b445c0ec7@amd.com> <9319bd1a-063c-8fd4-d82a-88fc5e688e57@amd.com> From: Aurabindo Pillai Message-ID: Date: Fri, 12 Feb 2021 15:01:45 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.0 In-Reply-To: <9319bd1a-063c-8fd4-d82a-88fc5e688e57@amd.com> Content-Language: en-US X-Originating-IP: [165.204.84.11] X-ClientProxiedBy: BN6PR1401CA0022.namprd14.prod.outlook.com (2603:10b6:405:4b::32) To DM6PR12MB4484.namprd12.prod.outlook.com (2603:10b6:5:28f::24) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [172.31.6.122] (165.204.84.11) by BN6PR1401CA0022.namprd14.prod.outlook.com (2603:10b6:405:4b::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3846.28 via Frontend Transport; Fri, 12 Feb 2021 20:01:47 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 884ee5ed-4ab0-415d-eb0b-08d8cf91087a X-MS-TrafficTypeDiagnostic: DM6PR12MB2891: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 27pw9MAV1Vr0nHs9bQLiR0JldjRWT1gIm7FdC2p0CZWjtYN92mgkzy1jRZsivaUyiGIDlo90Eyal4KdGnduaj9wmnOXloLUedFeXkgn//MkpU+XJoY+HogJMa0T/6xOokiN3mbO1vUJZO7pRfDNqYpkREMLpXB5LzZDMUfHAXEBC2OxauqLNeZaHQdGb1Z1yy2vjldOfF60ibH4hBnlaJzFfasimrjuCR7SpjgthJYmEx2HioD223RPyLzcwcTN2mMdtgN0kbDWNlaCEK/W3Zp2b5so1GW6crWRbvCxVQBiij/3YDGJ5yeKlikGKoMjki3UrDIOnXyaL8rEJgSB9ajVqoO9r5K003Ht+uytcZl+17TgInKUSjtJqkgys+QCO+wTi4/2VE26Dchi8gGFUBNCGDdG23sUy519MQx+3bUTnjaHCQjb/kcDNJtD9vIUBJrI6ZEZMN2AL5nu0/H4O55kOvbiyFwtkn+0dLPnNvs6pODEiJbIN3Eb5dvvYhRcHYF/7aC7E+Qqcl9r//VIiPnvPfDrKk42uY4RWBXsi4KxKhF2G5B/WT0MKiGorrSIShCYs4ddwOrFafOKBaDlmOp8RPgLFA/EETPgeHmGcTwE= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR12MB4484.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(396003)(39860400002)(136003)(346002)(376002)(366004)(478600001)(66556008)(8676002)(36756003)(8936002)(44832011)(31686004)(30864003)(53546011)(86362001)(31696002)(66574015)(2616005)(956004)(16526019)(83380400001)(66476007)(4326008)(5660300002)(186003)(52116002)(26005)(6486002)(16576012)(66946007)(2906002)(316002)(450100002)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?OWNxRGZrYVVFWnNUc09SQVU5d3d6SVduUGtjWkdZT0UzdUVrK0lic2o3WUZh?= =?utf-8?B?djgzU2FWaDFuMkQ0NDJvL083SFkyZ3RBdVl2bGZ0RmdCQ1Y2V3hDdDZZZEs0?= =?utf-8?B?SStYTXo0bmZFNG1WWk1GS0dkODNBS0JGajYvNWlsUGxvQ2pQbjJlMUZ0RUhJ?= =?utf-8?B?TnBqUm5aRmR4eEpTRTdHOHVqMzMveWxIWldwZzl5WEsrNDB0dmoyNkZtNFZF?= =?utf-8?B?Z1JvM2ZRKytSM2VmNlJhTnpjcjM5UXI5WEQyb3drVXV3OFhoR05qWXl3VWpo?= =?utf-8?B?RFNEVS9Va2psZHFlVi82V0dOaGU1M0RpdzdVb1pzOWtxZ2d4anJRWnNsSTFh?= =?utf-8?B?aG9UdmsyU0FhZTBjdHhEbWh4aFk3OTRNVTNDTkdtcVk3TUpIOUpWUW9xYzBY?= =?utf-8?B?YnBmNUNucEdndXlYRmFBZDl6dWVMa1YyNlhVSGw3cDc1ZXRQUzBZOUw4N0xi?= =?utf-8?B?VjFhOW5OeEVtVmFCems4VEl1a0tnMGpzaTgyYmtXdXpVZ2hrZ3l6V1RwMHNQ?= =?utf-8?B?Ymt6QnRVWTNldEx3dHFRZ05WWnRITkM4RTRSUkpQMkVQYXVVMWNiZGx1SDNu?= =?utf-8?B?VG5CSThpbGQwMHI1UVA4MmFKUTcyWnIrY0JhZ1ZVZEp0RXQ2K041Z29LOFMv?= =?utf-8?B?QWt4aVN2TndHSk1Vb09IcUYyOFlXM09CSDFsYnVPa0VtZkJ1Q3g2NUNzUEUz?= =?utf-8?B?MkMxTTlGWHpxVFFFY3RnTHJXRnFuZDNrL2Q2N2g3MXE1ZWJycTBJUVNmNUNz?= =?utf-8?B?bHpXakhETVBxbSt0Y1ZmdTdDWGJsdkw1OEJma3VhWHJVK0ZvKzlYRTVicFFZ?= =?utf-8?B?Umx1SWMvYXdrb3ludUNaSHZiZzRHU0NPa1hsMlk1ZlUwd1R1NkhkWkNxbE8y?= =?utf-8?B?RlIrLzFJMXV5a0x0Ui82V051Nk9DUjZqbmRiYmRGWEhyczVPM1VVS0JqWmtT?= =?utf-8?B?KzJrSFNHTGJvaWdiS2NORVF2Zmp3RDJaTVBpaEdJakdpU1JJNkN3MkJaTGs1?= =?utf-8?B?SWdMRVVCc2RqaW1PQUNmN0xDczBtK3prU0hDbk1URmVwL3Mwa2hVUDlZanBz?= =?utf-8?B?dmloMW9zQ0lNT0Q0MGM5SUpkYlNNb1FINFNHZFE1SkIzUGlYRklkME04WnUr?= =?utf-8?B?SmFNc2llcGE2QzBnOHNOQ2R4V3lQeDl6ekJleGFBcUZzNzl2blBJelM3eDc3?= =?utf-8?B?SU5BMjJNQ3Q1R1RlUVZhbG9JeU84RStsSWdZT1h0T25rUnJta0sza2hWREFD?= =?utf-8?B?cEsrYTJPZTErUzR0ZExpTExzcWFEMlRhbkI5dG9oVWdRWTJGRVFHcFJSaSts?= =?utf-8?B?L3ZNVit5Q2pkM0duYXhUY1JZWENnd1RaemIzMFpnL2FxaCt4SHdRSXc4QzFM?= =?utf-8?B?VkJkUGpva1cwNEhPZ0V5eVRCZWthdzNKVnJJYmJEN0FUbjBMZVl3UFlRQzVD?= =?utf-8?B?UzRrQ09qeXRuS1VqRm1zTVRpek5aWVNPbjRmL2ZrN0NOU25wMTg2TUFwVTMy?= =?utf-8?B?ei9nVU94dUFpSG04Syt6djVwcUoxTW92cjBybTlSL2RTS0h2UWtTbE13Q3c3?= =?utf-8?B?d2dkTmJ6QzRmQzRUd0dYZFlscFdSTG1jM0FqRE9rNFg5RmV3UVU3aUI2azhX?= =?utf-8?B?L1dRNUFzVFNWRWk5ZVY0VUIwbVlodjdmQzc3SXlKUElPMXkwNngwVC9xWlhL?= =?utf-8?B?bStjRUpUUWkyOTRWcnhIYjEvOFpWS0JxZkRCSVp5WE93RW8vZWwvaUxMa3E4?= =?utf-8?Q?g0HeQAoG+pGmZXUlRURBJol3evhb3CMEog0fIVK?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 884ee5ed-4ab0-415d-eb0b-08d8cf91087a X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB4484.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Feb 2021 20:01:49.9265 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 2xmn7/+zulFIrW3WGoWdH3YDEnKE2O0GT0mwUDQS4uVKf9kAPOkYm1Jh0RRmmGVXYuyJDadL57ZaVXeW8xdF2A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB2891 X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: stylon.wang@amd.com, thong.thai@amd.com, shashank.sharma@amd.com, wayne.lin@amd.com, alexander.deucher@amd.com, christian.koenig@amd.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" CgpPbiAyMDIxLTAyLTA4IDEwOjA2IGEubS4sIEthemxhdXNrYXMsIE5pY2hvbGFzIHdyb3RlOgo+ IE9uIDIwMjEtMDEtMjQgMTE6MDAgcC5tLiwgQXVyYWJpbmRvIFBpbGxhaSB3cm90ZToKPj4KPj4K Pj4gT24gMjAyMS0wMS0yMSAyOjA1IHAubS4sIEthemxhdXNrYXMsIE5pY2hvbGFzIHdyb3RlOgo+ Pj4gT24gMjAyMS0wMS0xOSAxMDo1MCBhLm0uLCBBdXJhYmluZG8gUGlsbGFpIHdyb3RlOgo+Pj4+ IFtXaHldCj4+Pj4gQSBzZWFtbGVzcyB0cmFuc2l0aW9uIGJldHdlZW4gbW9kZXMgY2FuIGJlIHBl cmZvcm1lZCBpZiB0aGUgbmV3IAo+Pj4+IGluY29taW5nCj4+Pj4gbW9kZSBoYXMgdGhlIHNhbWUg dGltaW5nIHBhcmFtZXRlcnMgYXMgdGhlIG9wdGltaXplZCBtb2RlIG9uIGEgCj4+Pj4gZGlzcGxh eSB3aXRoIGEKPj4+PiB2YXJpYWJsZSB2dG90YWwgbWluL21heC4KPj4+Pgo+Pj4+IFNtb290aCB2 aWRlbyBwbGF5YmFjayB1c2VjYXNlcyBjYW4gYmUgZW5hYmxlZCB3aXRoIHRoaXMgc2VhbWxlc3Mg Cj4+Pj4gdHJhbnNpdGlvbiBieQo+Pj4+IHN3aXRjaGluZyB0byBhIG5ldyBtb2RlIHdoaWNoIGhh cyBhIHJlZnJlc2ggcmF0ZSBtYXRjaGluZyB0aGUgdmlkZW8uCj4+Pj4KPj4+PiBbSG93XQo+Pj4+ IFNraXAgZnVsbCBtb2Rlc2V0IGlmIHVzZXJzcGFjZSByZXF1ZXN0ZWQgYSBjb21wYXRpYmxlIGZy ZWVzeW5jIG1vZGUgCj4+Pj4gd2hpY2ggb25seQo+Pj4+IGRpZmZlcnMgaW4gdGhlIGZyb250IHBv cmNoIHRpbWluZyBmcm9tIHRoZSBjdXJyZW50IG1vZGUuCj4+Pj4KPj4+PiBTaWduZWQtb2ZmLWJ5 OiBBdXJhYmluZG8gUGlsbGFpIDxhdXJhYmluZG8ucGlsbGFpQGFtZC5jb20+Cj4+Pj4gQWNrZWQt Ynk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KPj4+PiAtLS0K Pj4+PiDCoCAuLi4vZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMgfCAy MzMgCj4+Pj4gKysrKysrKysrKysrKysrLS0tCj4+Pj4gwqAgLi4uL2dwdS9kcm0vYW1kL2Rpc3Bs YXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5oIHzCoMKgIDEgKwo+Pj4+IMKgIDIgZmlsZXMgY2hhbmdl ZCwgMTk4IGluc2VydGlvbnMoKyksIDM2IGRlbGV0aW9ucygtKQo+Pj4+Cj4+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMgCj4+ Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jCj4+ Pj4gaW5kZXggYWFlZjJmYjUyOGZkLi5kNjY0OTRjZGQ4YzggMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYwo+Pj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMKPj4+PiBA QCAtMjEzLDYgKzIxMyw5IEBAIHN0YXRpYyBib29sIGFtZGdwdV9kbV9wc3JfZGlzYWJsZV9hbGwo c3RydWN0IAo+Pj4+IGFtZGdwdV9kaXNwbGF5X21hbmFnZXIgKmRtKTsKPj4+PiDCoCBzdGF0aWMg Y29uc3Qgc3RydWN0IGRybV9mb3JtYXRfaW5mbyAqCj4+Pj4gwqAgYW1kX2dldF9mb3JtYXRfaW5m byhjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqY21kKTsKPj4+PiArc3RhdGljIGJvb2wK Pj4+PiAraXNfdGltaW5nX3VuY2hhbmdlZF9mb3JfZnJlZXN5bmMoc3RydWN0IGRybV9jcnRjX3N0 YXRlIAo+Pj4+ICpvbGRfY3J0Y19zdGF0ZSwKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSk7Cj4+Pj4gwqAg LyoKPj4+PiDCoMKgICogZG1fdmJsYW5rX2dldF9jb3VudGVyCj4+Pj4gwqDCoCAqCj4+Pj4gQEAg LTQ5NDAsNyArNDk0Myw4IEBAIHN0YXRpYyB2b2lkIAo+Pj4+IGZpbGxfc3RyZWFtX3Byb3BlcnRp ZXNfZnJvbV9kcm1fZGlzcGxheV9tb2RlKAo+Pj4+IMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPj4+PiDCoMKgwqDCoMKgIGNvbnN0IHN0cnVjdCBkcm1f Y29ubmVjdG9yX3N0YXRlICpjb25uZWN0b3Jfc3RhdGUsCj4+Pj4gwqDCoMKgwqDCoCBjb25zdCBz dHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpvbGRfc3RyZWFtLAo+Pj4+IC3CoMKgwqAgaW50IHJlcXVl c3RlZF9icGMpCj4+Pj4gK8KgwqDCoCBpbnQgcmVxdWVzdGVkX2JwYywKPj4+PiArwqDCoMKgIGJv b2wgaXNfaW5fbW9kZXNldCkKPj4+PiDCoCB7Cj4+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgZGNfY3J0 Y190aW1pbmcgKnRpbWluZ19vdXQgPSAmc3RyZWFtLT50aW1pbmc7Cj4+Pj4gwqDCoMKgwqDCoCBj b25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfaW5mbyAqaW5mbyA9ICZjb25uZWN0b3ItPmRpc3BsYXlf aW5mbzsKPj4+PiBAQCAtNDk5NSwxOSArNDk5OSwyOCBAQCBzdGF0aWMgdm9pZCAKPj4+PiBmaWxs X3N0cmVhbV9wcm9wZXJ0aWVzX2Zyb21fZHJtX2Rpc3BsYXlfbW9kZSgKPj4+PiDCoMKgwqDCoMKg wqDCoMKgwqAgdGltaW5nX291dC0+aGRtaV92aWMgPSBodl9mcmFtZS52aWM7Cj4+Pj4gwqDCoMKg wqDCoCB9Cj4+Pj4gLcKgwqDCoCB0aW1pbmdfb3V0LT5oX2FkZHJlc3NhYmxlID0gbW9kZV9pbi0+ Y3J0Y19oZGlzcGxheTsKPj4+PiAtwqDCoMKgIHRpbWluZ19vdXQtPmhfdG90YWwgPSBtb2RlX2lu LT5jcnRjX2h0b3RhbDsKPj4+PiAtwqDCoMKgIHRpbWluZ19vdXQtPmhfc3luY193aWR0aCA9Cj4+ Pj4gLcKgwqDCoMKgwqDCoMKgIG1vZGVfaW4tPmNydGNfaHN5bmNfZW5kIC0gbW9kZV9pbi0+Y3J0 Y19oc3luY19zdGFydDsKPj4+PiAtwqDCoMKgIHRpbWluZ19vdXQtPmhfZnJvbnRfcG9yY2ggPQo+ Pj4+IC3CoMKgwqDCoMKgwqDCoCBtb2RlX2luLT5jcnRjX2hzeW5jX3N0YXJ0IC0gbW9kZV9pbi0+ Y3J0Y19oZGlzcGxheTsKPj4+PiAtwqDCoMKgIHRpbWluZ19vdXQtPnZfdG90YWwgPSBtb2RlX2lu LT5jcnRjX3Z0b3RhbDsKPj4+PiAtwqDCoMKgIHRpbWluZ19vdXQtPnZfYWRkcmVzc2FibGUgPSBt b2RlX2luLT5jcnRjX3ZkaXNwbGF5Owo+Pj4+IC3CoMKgwqAgdGltaW5nX291dC0+dl9mcm9udF9w b3JjaCA9Cj4+Pj4gLcKgwqDCoMKgwqDCoMKgIG1vZGVfaW4tPmNydGNfdnN5bmNfc3RhcnQgLSBt b2RlX2luLT5jcnRjX3ZkaXNwbGF5Owo+Pj4+IC3CoMKgwqAgdGltaW5nX291dC0+dl9zeW5jX3dp ZHRoID0KPj4+PiAtwqDCoMKgwqDCoMKgwqAgbW9kZV9pbi0+Y3J0Y192c3luY19lbmQgLSBtb2Rl X2luLT5jcnRjX3ZzeW5jX3N0YXJ0Owo+Pj4+IC3CoMKgwqAgdGltaW5nX291dC0+cGl4X2Nsa18x MDBoeiA9IG1vZGVfaW4tPmNydGNfY2xvY2sgKiAxMDsKPj4+PiArwqDCoMKgIGlmIChpc19pbl9t b2Rlc2V0KSB7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHRpbWluZ19vdXQtPmhfYWRkcmVzc2FibGUg PSBtb2RlX2luLT5oZGlzcGxheTsKPj4+PiArwqDCoMKgwqDCoMKgwqAgdGltaW5nX291dC0+aF90 b3RhbCA9IG1vZGVfaW4tPmh0b3RhbDsKPj4+PiArwqDCoMKgwqDCoMKgwqAgdGltaW5nX291dC0+ aF9zeW5jX3dpZHRoID0gbW9kZV9pbi0+aHN5bmNfZW5kIC0gCj4+Pj4gbW9kZV9pbi0+aHN5bmNf c3RhcnQ7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHRpbWluZ19vdXQtPmhfZnJvbnRfcG9yY2ggPSBt b2RlX2luLT5oc3luY19zdGFydCAtIAo+Pj4+IG1vZGVfaW4tPmhkaXNwbGF5Owo+Pj4+ICvCoMKg wqDCoMKgwqDCoCB0aW1pbmdfb3V0LT52X3RvdGFsID0gbW9kZV9pbi0+dnRvdGFsOwo+Pj4+ICvC oMKgwqDCoMKgwqDCoCB0aW1pbmdfb3V0LT52X2FkZHJlc3NhYmxlID0gbW9kZV9pbi0+dmRpc3Bs YXk7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHRpbWluZ19vdXQtPnZfZnJvbnRfcG9yY2ggPSBtb2Rl X2luLT52c3luY19zdGFydCAtIAo+Pj4+IG1vZGVfaW4tPnZkaXNwbGF5Owo+Pj4+ICvCoMKgwqDC oMKgwqDCoCB0aW1pbmdfb3V0LT52X3N5bmNfd2lkdGggPSBtb2RlX2luLT52c3luY19lbmQgLSAK Pj4+PiBtb2RlX2luLT52c3luY19zdGFydDsKPj4+PiArwqDCoMKgwqDCoMKgwqAgdGltaW5nX291 dC0+cGl4X2Nsa18xMDBoeiA9IG1vZGVfaW4tPmNsb2NrICogMTA7Cj4+Pj4gK8KgwqDCoCB9IGVs c2Ugewo+Pj4+ICvCoMKgwqDCoMKgwqDCoCB0aW1pbmdfb3V0LT5oX2FkZHJlc3NhYmxlID0gbW9k ZV9pbi0+Y3J0Y19oZGlzcGxheTsKPj4+PiArwqDCoMKgwqDCoMKgwqAgdGltaW5nX291dC0+aF90 b3RhbCA9IG1vZGVfaW4tPmNydGNfaHRvdGFsOwo+Pj4+ICvCoMKgwqDCoMKgwqDCoCB0aW1pbmdf b3V0LT5oX3N5bmNfd2lkdGggPSBtb2RlX2luLT5jcnRjX2hzeW5jX2VuZCAtIAo+Pj4+IG1vZGVf aW4tPmNydGNfaHN5bmNfc3RhcnQ7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHRpbWluZ19vdXQtPmhf ZnJvbnRfcG9yY2ggPSBtb2RlX2luLT5jcnRjX2hzeW5jX3N0YXJ0IC0gCj4+Pj4gbW9kZV9pbi0+ Y3J0Y19oZGlzcGxheTsKPj4+PiArwqDCoMKgwqDCoMKgwqAgdGltaW5nX291dC0+dl90b3RhbCA9 IG1vZGVfaW4tPmNydGNfdnRvdGFsOwo+Pj4+ICvCoMKgwqDCoMKgwqDCoCB0aW1pbmdfb3V0LT52 X2FkZHJlc3NhYmxlID0gbW9kZV9pbi0+Y3J0Y192ZGlzcGxheTsKPj4+PiArwqDCoMKgwqDCoMKg wqAgdGltaW5nX291dC0+dl9mcm9udF9wb3JjaCA9IG1vZGVfaW4tPmNydGNfdnN5bmNfc3RhcnQg LSAKPj4+PiBtb2RlX2luLT5jcnRjX3ZkaXNwbGF5Owo+Pj4+ICvCoMKgwqDCoMKgwqDCoCB0aW1p bmdfb3V0LT52X3N5bmNfd2lkdGggPSBtb2RlX2luLT5jcnRjX3ZzeW5jX2VuZCAtIAo+Pj4+IG1v ZGVfaW4tPmNydGNfdnN5bmNfc3RhcnQ7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHRpbWluZ19vdXQt PnBpeF9jbGtfMTAwaHogPSBtb2RlX2luLT5jcnRjX2Nsb2NrICogMTA7Cj4+Pj4gK8KgwqDCoCB9 Cj4+Pj4gKwo+Pj4KPj4+IE5vdCBzdXJlIGlmIEkgY29tbWVudGVkIG9uIHRoaXMgbGFzdCB0aW1l IGJ1dCBJIGRvbid0IHJlYWxseSAKPj4+IHVuZGVyc3RhbmQgd2hhdCB0aGlzIGlzX2luX21vZGVz ZXQgbG9naWMgaXMgc3VwcG9zZWQgdG8gYmUgZG9pbmcgaGVyZS4KPj4KPj4gVGhpcyBpcyBzbyBi ZWNhdXNlIGNyZWF0ZV9zdHJlYW1fZm9yX2xpbmsoKSB0aGF0IGVuZHMgdXAgY2FsbGluZyB0aGlz IAo+PiBmdW5jdGlvbiBoYXMgdHdvIGNhbGxlcnMsIG9uZSB3aGljaCBpcyBmb3Igc3RyZWFtIHZh bGlkYXRpb24gaW4gd2hpY2ggCj4+IHRoZSBjcmVhdGVkIHN0cmVhbSBpcyBpbW1lZGlhdGVseSBk aXNjYXJkZWQuIFRoZSBvdGhlciBpcyBkdXJpbmcgCj4+IG1vZGVzZXQuIERlcGVuZGluZyBvbiB0 aGVzZSB0d28gY2FzZXMsIHdlIHdhbnQgdG8gY29weSB0aGUgcmlnaHQgCj4+IHRpbWluZyBwYXJh bWV0ZXJzLiBXaXRoIHRoaXMgbWV0aG9kLCBtYWpvciByZWZhY3RvciB3YXNuJ3QgbmVjZXNzYXJ5 IAo+PiB3aXRoIHRoZSB1cHBlciBsYXllcnMuCj4gCj4gSSBkb24ndCB1bmRlcnN0YW5kIHdoeSB0 aGUgdGltaW5nIHBhcmFtZXRlcnMgd291bGQgY2hhbmdlIGJldHdlZW4gd2hhdCAKPiB3ZSB2YWxp ZGF0ZWQgYW5kIHdoYXQgd2UncmUgcGxhbm5pbmcgb24gYXBwbHlpbmcgdG8gdGhlIGhhcmR3YXJl LiBJIAo+IHRoaW5rIHdlIHNob3VsZCBiZSB2YWxpZGF0aW5nIHRoZSBzYW1lIHRoaW5nIGluIGJv dGggY2FzZXMsIGVzcGVjaWFsbHkgCj4gaWYgaXQncyBmb3Igc29tZXRoaW5nIGludGVybmFsIGxp a2UgREMgc3RyZWFtIHRpbWluZy4KCkFjdHVhbGx5LCB0aGUgdmFsaWRhdGVkIHRpbWluZ3MgZGlk bid0IGNoYW5nZSwgYnV0IHRoZSBkaWZmZXJlbmNlIGlzIAp3aGVyZSB0aGUgY29ycmVjdCB2YWx1 ZXMgZXhpc3QuIEkgdG9vayBhIHNlY29uZCBsb29rcyBhdCB0aGlzLCB0aGUgCnRpbWluZyBpcyBh bHdheXMgcHJlc2VudCBpbiBtb2RlX2luLCBidXQgbm90IGluIGNydGMuIEhvd2V2ZXIsIApvcmln aW5hbGx5IGl0IGhhZCBjcnRjXyBwYXJhbWV0ZXJzIGJlaW5nIHVzZWQgZm9yIGZpbGxpbmcgdGlt aW5nX291dCwgc28gCmluIG9yZGVyIHRvIGtlZXAgdGhlIGRlbHRhIGJldHdlZW4gdGhlICJmcmVl c3luYyBtb2RlIiBhbmQgb3RoZXIgbm9ybWFsIAptb2RlcywgYW5kIGluIHRoZSBpbnRlcmVzdCBr ZWVwaW5nIHRoZSBmdW5jdGlvbmFsIGltcGFjdCBvZiB0aGlzIHBhdGNoIAptaW5pbXVtLCBJIGNo b3NlIHRvIGFwcGx5IHRoZW0gc2VwYXJhdGVseSBkZXBlbmRpbmcgb24gaXNfaW5fbW9kZXNldCAK bG9naWMuIEluIG15IHRlc3RpbmcsIHVzaW5nIHRoZSBub24gY3J0Y18gcGFyYW10ZXJzIGFyZSB3 b3JraW5nIGZpbmUsIAp3aXRob3V0IHRoZSBpc19pbl9tb2Rlc2V0IGxvZ2ljLgoKPiAKPj4KPj4+ Cj4+PiBXZSBzaG91bGQgYmUgbW9kaWZ5aW5nIGNydGNfdnN5bmNfKiBmb3IgdGhlIGdlbmVyYXRl ZCBtb2Rlcywgbm8/IE5vdCAKPj4+IGp1c3QgdGhlIHZzeW5jXyogcGFyYW1ldGVycy4KPj4KPj4g VGhpcyBpcyBhbHJlYWR5IGhhbmRsZWQgd2l0aDoKPj4KPj4gwqDCoMKgwqDCoGlmICghZG1fc3Rh dGUpCj4+IMKgwqDCoMKgwqDCoMKgwqAgZHJtX21vZGVfc2V0X2NydGNpbmZvKCZtb2RlLCAwKTsK Pj4KPj4gwqDCoMKgwqDCoGlmIChkbV9zdGF0ZSAmJiBpc19mc192aWRfbW9kZSkKPj4gwqDCoMKg wqDCoMKgwqDCoCBkcm1fbW9kZV9zZXRfY3J0Y2luZm8oJnNhdmVkX21vZGUsIDApOwo+Pgo+IAo+ IE9LLCB0aGF0J3MgZmluZSB0aGVuLgo+IAo+Pj4KPj4+PiDCoMKgwqDCoMKgIHRpbWluZ19vdXQt PmFzcGVjdF9yYXRpbyA9IGdldF9hc3BlY3RfcmF0aW8obW9kZV9pbik7Cj4+Pj4gwqDCoMKgwqDC oCBzdHJlYW0tPm91dHB1dF9jb2xvcl9zcGFjZSA9IGdldF9vdXRwdXRfY29sb3Jfc3BhY2UodGlt aW5nX291dCk7Cj4+Pj4gQEAgLTUyMjcsNiArNTI0MCwzMyBAQCBnZXRfaGlnaGVzdF9yZWZyZXNo X3JhdGVfbW9kZShzdHJ1Y3QgCj4+Pj4gYW1kZ3B1X2RtX2Nvbm5lY3RvciAqYWNvbm5lY3RvciwK Pj4+PiDCoMKgwqDCoMKgIHJldHVybiBtX3ByZWY7Cj4+Pj4gwqAgfQo+Pj4+ICtzdGF0aWMgYm9v bCBpc19mcmVlc3luY192aWRlb19tb2RlKHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+ Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9k bV9jb25uZWN0b3IgKmFjb25uZWN0b3IpCj4+Pj4gK3sKPj4+PiArwqDCoMKgIHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICpoaWdoX21vZGU7Cj4+Pj4gK8KgwqDCoCBpbnQgdGltaW5nX2RpZmY7Cj4+ Pj4gKwo+Pj4+ICvCoMKgwqAgaGlnaF9tb2RlID0gZ2V0X2hpZ2hlc3RfcmVmcmVzaF9yYXRlX21v ZGUoYWNvbm5lY3RvciwgZmFsc2UpOwo+Pj4+ICvCoMKgwqAgaWYgKCFoaWdoX21vZGUgfHwgIW1v ZGUpCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBmYWxzZTsKPj4+PiArCj4+Pj4gK8KgwqDC oCB0aW1pbmdfZGlmZiA9IGhpZ2hfbW9kZS0+dnRvdGFsIC0gbW9kZS0+dnRvdGFsOwo+Pj4+ICsK Pj4+PiArwqDCoMKgIGlmIChoaWdoX21vZGUtPmNsb2NrID09IDAgfHwgaGlnaF9tb2RlLT5jbG9j ayAhPSBtb2RlLT5jbG9jayB8fAo+Pj4+ICvCoMKgwqDCoMKgwqDCoCBoaWdoX21vZGUtPmhkaXNw bGF5ICE9IG1vZGUtPmhkaXNwbGF5IHx8Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGhpZ2hfbW9kZS0+ dmRpc3BsYXkgIT0gbW9kZS0+dmRpc3BsYXkgfHwKPj4+PiArwqDCoMKgwqDCoMKgwqAgaGlnaF9t b2RlLT5oc3luY19zdGFydCAhPSBtb2RlLT5oc3luY19zdGFydCB8fAo+Pj4+ICvCoMKgwqDCoMKg wqDCoCBoaWdoX21vZGUtPmhzeW5jX2VuZCAhPSBtb2RlLT5oc3luY19lbmQgfHwKPj4+PiArwqDC oMKgwqDCoMKgwqAgaGlnaF9tb2RlLT5odG90YWwgIT0gbW9kZS0+aHRvdGFsIHx8Cj4+Pj4gK8Kg wqDCoMKgwqDCoMKgIGhpZ2hfbW9kZS0+aHNrZXcgIT0gbW9kZS0+aHNrZXcgfHwKPj4+PiArwqDC oMKgwqDCoMKgwqAgaGlnaF9tb2RlLT52c2NhbiAhPSBtb2RlLT52c2NhbiB8fAo+Pj4+ICvCoMKg wqDCoMKgwqDCoCBoaWdoX21vZGUtPnZzeW5jX3N0YXJ0IC0gbW9kZS0+dnN5bmNfc3RhcnQgIT0g dGltaW5nX2RpZmYgfHwKPj4+PiArwqDCoMKgwqDCoMKgwqAgaGlnaF9tb2RlLT52c3luY19lbmQg LSBtb2RlLT52c3luY19lbmQgIT0gdGltaW5nX2RpZmYpCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJl dHVybiBmYWxzZTsKPj4+PiArwqDCoMKgIGVsc2UKPj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJu IHRydWU7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gwqAgc3RhdGljIHN0cnVjdCBkY19zdHJlYW1fc3Rh dGUgKgo+Pj4+IMKgIGNyZWF0ZV9zdHJlYW1fZm9yX3Npbmsoc3RydWN0IGFtZGdwdV9kbV9jb25u ZWN0b3IgKmFjb25uZWN0b3IsCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Y29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmRybV9tb2RlLAo+Pj4+IEBAIC01MjQwLDE1 ICs1MjgwLDIxIEBAIGNyZWF0ZV9zdHJlYW1fZm9yX3Npbmsoc3RydWN0IAo+Pj4+IGFtZGdwdV9k bV9jb25uZWN0b3IgKmFjb25uZWN0b3IsCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGRtX3N0YXRl ID8gJmRtX3N0YXRlLT5iYXNlIDogTlVMTDsKPj4+PiDCoMKgwqDCoMKgIHN0cnVjdCBkY19zdHJl YW1fc3RhdGUgKnN0cmVhbSA9IE5VTEw7Cj4+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSBtb2RlID0gKmRybV9tb2RlOwo+Pj4+ICvCoMKgwqAgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgc2F2ZWRfbW9kZTsKPj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpm cmVlc3luY19tb2RlID0gTlVMTDsKPj4+PiDCoMKgwqDCoMKgIGJvb2wgbmF0aXZlX21vZGVfZm91 bmQgPSBmYWxzZTsKPj4+PiDCoMKgwqDCoMKgIGJvb2wgc2NhbGUgPSBkbV9zdGF0ZSA/IChkbV9z dGF0ZS0+c2NhbGluZyAhPSBSTVhfT0ZGKSA6IGZhbHNlOwo+Pj4+IMKgwqDCoMKgwqAgaW50IG1v ZGVfcmVmcmVzaDsKPj4+PiDCoMKgwqDCoMKgIGludCBwcmVmZXJyZWRfcmVmcmVzaCA9IDA7Cj4+ Pj4gK8KgwqDCoCBib29sIGlzX2ZzX3ZpZF9tb2RlID0gZmFsc2U7Cj4+Pj4gwqAgI2lmIGRlZmlu ZWQoQ09ORklHX0RSTV9BTURfRENfRENOKQo+Pj4+IMKgwqDCoMKgwqAgc3RydWN0IGRzY19kZWNf ZHBjZF9jYXBzIGRzY19jYXBzOwo+Pj4+IMKgwqDCoMKgwqAgdWludDMyX3QgbGlua19iYW5kd2lk dGhfa2JwczsKPj4+PiDCoCAjZW5kaWYKPj4+PiDCoMKgwqDCoMKgIHN0cnVjdCBkY19zaW5rICpz aW5rID0gTlVMTDsKPj4+PiArCj4+Pj4gK8KgwqDCoCBtZW1zZXQoJnNhdmVkX21vZGUsIDAsIHNp emVvZihzYXZlZF9tb2RlKSk7Cj4+Pj4gKwo+Pj4+IMKgwqDCoMKgwqAgaWYgKGFjb25uZWN0b3Ig PT0gTlVMTCkgewo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fRVJST1IoImFjb25uZWN0b3Ig aXMgTlVMTCFcbiIpOwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gc3RyZWFtOwo+Pj4+ IEBAIC01MzAxLDI1ICs1MzQ3LDM5IEBAIGNyZWF0ZV9zdHJlYW1fZm9yX3Npbmsoc3RydWN0IAo+ Pj4+IGFtZGdwdV9kbV9jb25uZWN0b3IgKmFjb25uZWN0b3IsCj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgwqAgKi8KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX0RFQlVHX0RSSVZFUigiTm8gcHJl ZmVycmVkIG1vZGUgZm91bmRcbiIpOwo+Pj4+IMKgwqDCoMKgwqAgfSBlbHNlIHsKPj4+PiAtwqDC oMKgwqDCoMKgwqAgZGVjaWRlX2NydGNfdGltaW5nX2Zvcl9kcm1fZGlzcGxheV9tb2RlKAo+Pj4+ ICvCoMKgwqDCoMKgwqDCoCBpc19mc192aWRfbW9kZSA9IGFtZGdwdV9mcmVlc3luY192aWRfbW9k ZSAmJgo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpc19mcmVlc3luY192 aWRlb19tb2RlKCZtb2RlLCBhY29ubmVjdG9yKTsKPj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGlz X2ZzX3ZpZF9tb2RlKSB7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZnJlZXN5bmNfbW9k ZSA9IAo+Pj4+IGdldF9oaWdoZXN0X3JlZnJlc2hfcmF0ZV9tb2RlKGFjb25uZWN0b3IsIGZhbHNl KTsKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzYXZlZF9tb2RlID0gbW9kZTsKPj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtb2RlID0gKmZyZWVzeW5jX21vZGU7Cj4+Pj4gK8KgwqDC oMKgwqDCoMKgIH0gZWxzZSB7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGVjaWRlX2Ny dGNfdGltaW5nX2Zvcl9kcm1fZGlzcGxheV9tb2RlKAo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgJm1vZGUsIHByZWZlcnJlZF9tb2RlLAo+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZG1fc3RhdGUgPyAoZG1fc3RhdGUtPnNjYWxpbmcgIT0gUk1Y X09GRikgOiBmYWxzZSk7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4+PiArCj4+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgIHByZWZlcnJlZF9yZWZyZXNoID0gZHJtX21vZGVfdnJlZnJlc2gocHJlZmVy cmVkX21vZGUpOwo+Pj4+IMKgwqDCoMKgwqAgfQo+Pj4+IMKgwqDCoMKgwqAgaWYgKCFkbV9zdGF0 ZSkKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZHJtX21vZGVfc2V0X2NydGNpbmZvKCZtb2RlLCAw KTsKPj4+PiAtwqDCoMKgIC8qCj4+Pj4gK8KgwqDCoCBpZiAoZG1fc3RhdGUgJiYgaXNfZnNfdmlk X21vZGUpCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGRybV9tb2RlX3NldF9jcnRjaW5mbygmc2F2ZWRf bW9kZSwgMCk7Cj4+Pj4gKwo+Pj4+ICsKPj4+Cj4+PiBOb3Qgc3VyZSB3aGF0IHRoaXMgYWJvdmUg Yml0IGlzIGRvaW5nIGhlcmU6Cj4+Pgo+Pj4gKDEpIFdlJ3JlIGluIGF0b21pYyBjaGVjayBhbmQg KDIpIEl0J3MgYSBGUyB2aWRlbyBtb2RlCj4+Pgo+Pj4gLT4gc2V0IENSVEMgbW9kZXNldHRpbmcg dGltaW5nIHBhcmFtZXRlcnM/Cj4+Pgo+Pj4gV2hhdCdzIHRoaXMgZm9yPwo+Pgo+PiBXaXRob3V0 IHRoaXMgY2hhbmdlLCBrZXJuZWwgd291bGQgdGVsbCB0aGUgdXNlcnNwYWNlIHdlJ3JlIHNlbmRp bmcgb25lIAo+PiBvZiB0aGUgZnJlZXN5bmMgbW9kZSB0aW1pbmcsIGJ1dCBhY3R1YWxseSBpdCB3 b3VsZCBzZW5kIHRoZSBvcHRpbWl6ZWQgCj4+IG1vZGUgdGltaW5nIHBhcmFtZXRlci4gRm9yIGlu c3RhbmNlLCBpZiAxNDRIeiBpcyB0aGUgb3B0aW1pemVkIG1vZGUsIAo+PiBhbmQgdGhlIHVzZXIg c2V0cyA0OEh6LCB0aGUgZGlzcGxheSBzZXR0aW5ncyB3b3VsZCByZWZsZWN0IHRoZSBjaGFuZ2Us IAo+PiBidXQgdGhlIG1vbml0b3Igd291bGQgc3RpbGwgc2VlIDE0NEh6Lgo+IAo+IFNvcnJ5LCBi dXQgSSBzdGlsbCBkb24ndCB1bmRlcnN0YW5kIHdoeSBpdCBkZXBlbmRzIG9uIGRtX3N0YXRlIGhl cmUuIAo+IFlvdSdyZSB0cnlpbmcgdG8gYXZvaWQgdXBkYXRpbmcgY3J0Y2luZm8gaW4gbW9kZSB2 YWxpZGF0aW9uIGZvciBzb21lIAo+IHJlYXNvbj8KClllcywgSSBjb3VsZCBzYXkgdGhhdC4gVGhl IHdob2xlIHJlYXNvbiB3aHkgd2UgaGF2ZSBkbV9zdGF0ZSBpbiB0aGlzIApmdW5jdGlvbidzIGFy Z3VtZW50IHNlZW1zIHRvIGJlIGp1c3QgdG8gcmV1c2UgdGhlIGNvZGUgZm9yIHZhbGlkYXRpb24u IApCdXQgdGhpcyBjYW4gYmUgc2ltcGxpZmllZCBpbnRvOgoKICAgICAgICBpZiAoaXNfZnNfdmlk X21vZGUpCiAgICAgICAgICAgICAgICAgZHJtX21vZGVfc2V0X2NydGNpbmZvKCZzYXZlZF9tb2Rl LCAwKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBkcm1fbW9kZV9zZXRfY3J0Y2luZm8o Jm1vZGUsIDApOwoKPiAKPj4+Cj4+PiDCoMKgwqDCoMKgwqDCoCAvKgo+Pj4+IMKgwqDCoMKgwqAg KiBJZiBzY2FsaW5nIGlzIGVuYWJsZWQgYW5kIHJlZnJlc2ggcmF0ZSBkaWRuJ3QgY2hhbmdlCj4+ Pj4gwqDCoMKgwqDCoCAqIHdlIGNvcHkgdGhlIHZpYyBhbmQgcG9sYXJpdGllcyBvZiB0aGUgb2xk IHRpbWluZ3MKPj4+PiDCoMKgwqDCoMKgICovCj4+Pj4gLcKgwqDCoCBpZiAoIXNjYWxlIHx8IG1v ZGVfcmVmcmVzaCAhPSBwcmVmZXJyZWRfcmVmcmVzaCkKPj4+PiAtwqDCoMKgwqDCoMKgwqAgZmls bF9zdHJlYW1fcHJvcGVydGllc19mcm9tX2RybV9kaXNwbGF5X21vZGUoc3RyZWFtLAo+Pj4+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgICZtb2RlLCAmYWNvbm5lY3Rvci0+YmFzZSwgY29uX3N0YXRl LCBOVUxMLCByZXF1ZXN0ZWRfYnBjKTsKPj4+PiArwqDCoMKgIGlmICghKHNjYWxlICYmIGlzX2Zz X3ZpZF9tb2RlKSB8fCBtb2RlX3JlZnJlc2ggIT0gCj4+Pj4gcHJlZmVycmVkX3JlZnJlc2gpCj4+ Pj4gK8KgwqDCoMKgwqDCoMKgIGZpbGxfc3RyZWFtX3Byb3BlcnRpZXNfZnJvbV9kcm1fZGlzcGxh eV9tb2RlKAo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cmVhbSwgJm1vZGUsICZhY29u bmVjdG9yLT5iYXNlLCBjb25fc3RhdGUsIE5VTEwsCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmVxdWVzdGVkX2JwYywgZG1fc3RhdGUgPyAxIDogMCk7Cj4+Pj4gwqDCoMKgwqDCoCBlbHNl Cj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGZpbGxfc3RyZWFtX3Byb3BlcnRpZXNfZnJvbV9kcm1fZGlz cGxheV9tb2RlKHN0cmVhbSwKPj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmbW9kZSwgJmFj b25uZWN0b3ItPmJhc2UsIGNvbl9zdGF0ZSwgb2xkX3N0cmVhbSwgCj4+Pj4gcmVxdWVzdGVkX2Jw Yyk7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGZpbGxfc3RyZWFtX3Byb3BlcnRpZXNfZnJvbV9kcm1f ZGlzcGxheV9tb2RlKAo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cmVhbSwgJm1vZGUs ICZhY29ubmVjdG9yLT5iYXNlLCBjb25fc3RhdGUsIG9sZF9zdHJlYW0sCj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcmVxdWVzdGVkX2JwYywgZG1fc3RhdGUgPyAxIDogMCk7Cj4+Pgo+Pj4g SSBkb24ndCBzZWUgbXkgZmVlZGJhY2sgb24gcHJldmlvdXMgcGF0Y2hlcyBhZGRyZXNzZWQgaGVy ZSAtIGlzbid0IGl0IAo+Pj4gY2xlYW5lciB0byBqdXN0IG1lcmdlIHRoZSBpc19zY2FsaW5nL2lz X2ZzX3ZpZF9tb2RlIGNoZWNrcyBoZXJlPyBUaGUgCj4+PiBpZGVhIGlzIHRoYXQgd2UncmUgcmVw bGFjaW5nIHRoZSBtb2RlIHdpdGggdGhlIHByaW1hcnkvcHJlZmVycmVkIGluIAo+Pj4gYm90aCBj YXNlcy4KPj4KPj4gU29ycnksIEkgbXVzdCBoYXZlIG1pc3NlZCBpdC4gV2lsbCBhZGRyZXNzIHRo aXMgaW4gdGhlIG5leHQgaXRlcmF0aW9uLgo+Pj4KPj4+IFVzaW5nIGRtX3N0YXRlIGFzIGEgY2hl Y2sgZm9yIHZhbGlkYXRpb24gLyB2cyBhdG9taWMgY2hlY2sgaXMgCj4+PiBxdWVzdGlvbmFibGUg YXMgd2VsbC4gSW4gcHJhY3RpY2Ugd2UncmUgZ3VhcmFudGVlZCB0byBoYXZlIGl0IHRvZGF5IAo+ Pj4gYnV0IGl0IG1pZ2h0IG5vdCBiZSBjbGVhciBpZiB0aGVyZSBhcmUgZnV0dXJlIGNoYW5nZXMg dGhhdCBpdCdzIGJlaW5nIAo+Pj4gdXNlZCBmb3IgdGhpcyBwdXJwb3NlIGhlcmUgaWYgdGhhdCBj aGFuZ2VzLgo+Pgo+PiBUaGlzIGlzIGJlY2F1c2Ugd2UncmUgcmV1c2luZyB0aGlzIGZ1bmN0aW9u IGZvciB0ZXN0aW5nIHN0cmVhbSAKPj4gdmFsaWRhdGlvbiBieSBjYWxsaW5nIGl0IGRpcmVjdGx5 IHdpdGggYSBOVUxMIHBhcmFtZXRlciBmb3IgZG1fc3RhdGUuIAo+PiBJZiB0aGlzIHVzYWdlIGlz IG5vdCByZWNvbW1lbmRlZCwgdGhlbiBhIHNlcGFyYXRlIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIAo+ PiBmb3IganVzdCBzdHJlYW0gdmFsaWRhdGlvbiBhbmQgdGhpcyB1c2FnZSBvZiBkbV9zdGF0ZSBj YW4gYmUgZHJvcHBlZC4KPj4KPiAKPiBMaWtlIG15IGNvbW1lbnRzIGFib3ZlIEknbSBub3Qgc3Vy ZSB3aHkgdGhlc2Ugd291bGQgZGlmZmVyIGJldHdlZW4gCj4gdmFsaWRhdGlvbi9jb21taXQgdGlt ZSAtIHRoZXkgKGlkZWFsbHkpIHNob3VsZCBub3QuCgpUaGlzIGNhbiBiZSByZW1vdmVkIGlmIEkg Y29weSB0aGUgbm9uIGNydGNfKiBwYXJhbWV0ZXJzIGxpa2UgSSBtZW50aW9uZWQgCmFib3ZlLiBU aGF0cyB0aGUgb25seSByZWFzb24gZG1fc3RhdGUgd2FzIHVzZWQuCgo+IAo+Pj4KPj4+PiDCoMKg wqDCoMKgIHN0cmVhbS0+dGltaW5nLmZsYWdzLkRTQyA9IDA7Cj4+Pj4gQEAgLTU0NTYsNiArNTUx Niw3IEBAIGRtX2NydGNfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPj4+ PiDCoMKgwqDCoMKgIHN0YXRlLT5hYm1fbGV2ZWwgPSBjdXItPmFibV9sZXZlbDsKPj4+PiDCoMKg wqDCoMKgIHN0YXRlLT52cnJfc3VwcG9ydGVkID0gY3VyLT52cnJfc3VwcG9ydGVkOwo+Pj4+IMKg wqDCoMKgwqAgc3RhdGUtPmZyZWVzeW5jX2NvbmZpZyA9IGN1ci0+ZnJlZXN5bmNfY29uZmlnOwo+ Pj4+ICvCoMKgwqAgc3RhdGUtPmZyZWVzeW5jX3ZpZGVvX21vZGUgPSBjdXItPmZyZWVzeW5jX3Zp ZGVvX21vZGU7Cj4+Pj4gwqDCoMKgwqDCoCBzdGF0ZS0+Y3JjX3NyYyA9IGN1ci0+Y3JjX3NyYzsK Pj4+PiDCoMKgwqDCoMKgIHN0YXRlLT5jbV9oYXNfZGVnYW1tYSA9IGN1ci0+Y21faGFzX2RlZ2Ft bWE7Cj4+Pj4gwqDCoMKgwqDCoCBzdGF0ZS0+Y21faXNfZGVnYW1tYV9zcmdiID0gY3VyLT5jbV9p c19kZWdhbW1hX3NyZ2I7Cj4+Pj4gQEAgLTcxNDksNyArNzIxMCw3IEBAIHN0YXRpYyB2b2lkIAo+ Pj4+IGFtZGdwdV9kbV9jb25uZWN0b3JfYWRkX2ZyZWVzeW5jX21vZGVzKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0Cj4+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2RtX2Nvbm5lY3Rv ciAqYW1kZ3B1X2RtX2Nvbm5lY3RvciA9Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHRvX2FtZGdw dV9kbV9jb25uZWN0b3IoY29ubmVjdG9yKTsKPj4+PiAtwqDCoMKgIGlmICghKGFtZGdwdV9leHBf ZnJlZXN5bmNfdmlkX21vZGUgJiYgZWRpZCkpCj4+Pj4gK8KgwqDCoCBpZiAoIShhbWRncHVfZnJl ZXN5bmNfdmlkX21vZGUgJiYgZWRpZCkpCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybjsK Pj4+PiDCoMKgwqDCoMKgIGlmIChlZGlkLT52ZXJzaW9uID09IDEgJiYgZWRpZC0+cmV2aXNpb24g PiAxKSB7Cj4+Pj4gQEAgLTc4NDcsOSArNzkwOCwyNSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfc3Ry ZWFtX2lycV9wYXJhbWV0ZXJzKAo+Pj4+IMKgwqDCoMKgwqAgaWYgKG5ld19jcnRjX3N0YXRlLT52 cnJfc3VwcG9ydGVkICYmCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGNvbmZpZy5taW5fcmVmcmVz aF9pbl91aHogJiYKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgY29uZmlnLm1heF9yZWZyZXNoX2lu X3Voeikgewo+Pj4+IC3CoMKgwqDCoMKgwqDCoCBjb25maWcuc3RhdGUgPSBuZXdfY3J0Y19zdGF0 ZS0+YmFzZS52cnJfZW5hYmxlZCA/Cj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVlJSX1NU QVRFX0FDVElWRV9WQVJJQUJMRSA6Cj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVlJSX1NU QVRFX0lOQUNUSVZFOwo+Pj4+ICvCoMKgwqDCoMKgwqDCoCAvKgo+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgICogaWYgZnJlZXN5bmMgY29tcGF0aWJsZSBtb2RlIHdhcyBzZXQsIGNvbmZpZy5zdGF0ZSB3 aWxsIAo+Pj4+IGJlIHNldAo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgICogaW4gYXRvbWljIGNoZWNr Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqAgKi8KPj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGNvbmZp Zy5zdGF0ZSA9PSBWUlJfU1RBVEVfQUNUSVZFX0ZJWEVEICYmCj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgY29uZmlnLmZpeGVkX3JlZnJlc2hfaW5fdWh6ICYmIAo+Pj4+IGNvbmZpZy5tYXhf cmVmcmVzaF9pbl91aHogJiYKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25maWcubWlu X3JlZnJlc2hfaW5fdWh6ICYmCj4+Pgo+Pj4gVGhpcyBjb25kaXRpb24gZG9lc24ndCBuZWVkIHRv IGNoZWNrIG1heF9yZWZyZXNoL21pbl9yZWZyZXNoIGFzIGl0J3MgCj4+PiBhbHJlYWR5IGNoZWNr ZWQgYWJvdmVkLgo+Pgo+PiBXaWxsIGZpeC4KPj4+Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKCFkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldCgmbmV3X2NydGNfc3RhdGUtPmJhc2Up IHx8Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZXdfY3J0Y19zdGF0ZS0+ZnJlZXN5 bmNfdmlkZW9fbW9kZSkpIHsKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2cnJfcGFyYW1z Lm1heF9yZWZyZXNoX2luX3VoeiA9IGNvbmZpZy5tYXhfcmVmcmVzaF9pbl91aHo7Cj4+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgdnJyX3BhcmFtcy5taW5fcmVmcmVzaF9pbl91aHogPSBjb25m aWcubWluX3JlZnJlc2hfaW5fdWh6Owo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZycl9w YXJhbXMuZml4ZWRfcmVmcmVzaF9pbl91aHogPSAKPj4+PiBjb25maWcuZml4ZWRfcmVmcmVzaF9p bl91aHo7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdnJyX3BhcmFtcy5zdGF0ZSA9IFZS Ul9TVEFURV9BQ1RJVkVfRklYRUQ7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIH0gZWxzZSB7Cj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uZmlnLnN0YXRlID0gbmV3X2NydGNfc3RhdGUtPmJh c2UudnJyX2VuYWJsZWQgPwo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBWUlJfU1RBVEVfQUNUSVZFX1ZBUklBQkxFIDoKPj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg VlJSX1NUQVRFX0lOQUNUSVZFOwo+Pj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4gKwo+Pj4+IMKg wqDCoMKgwqAgfSBlbHNlIHsKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgY29uZmlnLnN0YXRlID0g VlJSX1NUQVRFX1VOU1VQUE9SVEVEOwo+Pj4+IMKgwqDCoMKgwqAgfQo+Pj4+IEBAIC04MTcxLDcg KzgyNDgsOCBAQCBzdGF0aWMgdm9pZCBhbWRncHVfZG1fY29tbWl0X3BsYW5lcyhzdHJ1Y3QgCj4+ Pj4gZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBh cyBwYXJ0IG9mIGNvbW1pdC4KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoCBpZiAoYW1kZ3B1X2RtX3Zycl9hY3RpdmUoZG1fb2xkX2NydGNfc3RhdGUp ICE9Cj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2RtX3Zycl9hY3RpdmUoYWNy dGNfc3RhdGUpKSB7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2RtX3Zycl9h Y3RpdmUoYWNydGNfc3RhdGUpIHx8Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWNydGNf c3RhdGUtPmZyZWVzeW5jX3ZpZGVvX21vZGUpIHsKPj4+Cj4+PiBEbyB3ZSByZWFsbHkgbmVlZCB0 aGlzIGNoZWNrIGhlcmU/IGFtZGdwdV9kbV92cnJfYWN0aXZlIHNob3VsZCBwaWNrIAo+Pj4gdXAg b24gVlJSX1NUQVRFX0FDVElWRV9GSVhFRCwgbm8/IElmIGl0IGRvZXNuJ3QgdGhlbiB0aGF0IHNo b3VsZCBiZSAKPj4+IGZpeGVkLgo+Pgo+PiBUaGlzIHNwZWNpZmljYWxseSBjaGVja3MgZm9yIGEg Y2hhbmdlIHRoZSBjdXJyZW50IGFuZCBwcmV2aW91cyBzdGF0ZS4gCj4+IEluIGJvdGggdGhlIHN0 YXRlcywgZnJlZXN5bmNfdmlkZW9fbW9kZSBjYW4gYmUgYWN0aXZlLiBUaGlzIGNvbmRpdGlvbiAK Pj4gd291bGQgcmV0dXJuIGZhbHNlIGluIHRoZSBhYnNlbmNlIG9mIGFkZGl0aW9uYWwgT1Igd2l0 aCAKPj4gZnJlZXN5bmNfdmlkZW9fbW9kZS4gSWYgZnJlZXN5bmNfdmlkZW9fbW9kZSBpcyBhY3Rp dmUsIHdlIHdhbnQgdGhpcyAKPj4gYmxvY2sgb2YgY29kZSB0byBnZXQgZXhlY3V0ZWQuIElmIGZy ZWVzeW5jX3ZpZGVvX21vZGUgaXMgbm90IGFjdGl2ZSwgCj4+IHRoZW4gY29tcGFyaXNvbiB3aXRo IG9sZCBhbmQgbmV3IHN0YXRlIGlzIHN1ZmZpY2llbnQuIEkgY2FuIGFkZCB0aGlzIAo+PiBsb2dp YyBpbnRvIGFub3RoZXIgZnVuY3Rpb24gYW5kIGtlZXAgaXQgY2xlYW5lciBoZXJlLgo+Pgo+IAo+ IEkgdGhpbmsgYWNydGNfc3RhdGUtPmZyZWVzeW5jX3ZpZGVvX21vZGUgaXMgcmVkdW5kYW50IC0g aXQgZG9lc24ndCBjaGVjayAKPiBwcmV2L25ldywgaXQgb25seSBjaGVja3Mgd2hldGhlciBvciBu b3QgaXQncyBhY3RpdmUuIFRoaXMgc2hvdWxkIGJlIAo+IGFscmVhZHkgY2hlY2tlZCBpbiBhbWRn cHVfZG1fdnJyX2FjdGl2ZSgpLCBhbmQgdGhlOgo+IAo+IGFtZGdwdV9kbV92cnJfYWN0aXZlKGRt X29sZF9jcnRjX3N0YXRlKSAhPSAKPiBhbWRncHVfZG1fdnJyX2FjdGl2ZShhY3J0Y19zdGF0ZSkK PiAKPiBzaG91bGQgYmUgZG9pbmcgdGhpcyBmb3IgeW91LgoKVGhpcyBpcyBleGFjdGx5IHdoYXQg dGhlIGNvZGUgd2FzIG9yaWdpbmFsbHkuIFRoZSBwcm9ibGVtIGhlcmUgaXMgdGhhdCAKY2hlY2tp bmcgdGhlIHByZXZpb3VzIGFuZCBuZXh0IHN0YXRlIGRpZmZlcmVuY2UgaXMgbm90IGVub3VnaCwg d2hpY2ggaXMgCndoeSBJIGhhZCB0byBjcmVhdGUgYW4gYWRkaXRpb25hbCBwYXJhbXRlciB0byBr bm93IHdoZXRoZXIgd2UgYXJlIApjdXJyZW50bHkgaW4gZnJlZXN5bmMgbW9kZS4gQnV0IHRoaXMg Y2FuIGJlIGF2b2lkZWQsIGlmIHdlIGhhdmUgYW4gZWFybHkgCnJldHVybiBpZiBmaXhlZCB2cnIg bW9kZSBpcyBhY3RpdmUsIGFuZCBhbiBhZGRpdGlvbmFsIGNoZWNrIGZvciB0aGUgCmZpeGVkIHZy ciBzdGF0ZSBkdXJpbmcgbW9kZXNldC4gV2lsbCBhZGQgdGhpcyB0byBuZXh0IGl0ZXJhdGlvbi4K Cj4gCj4+Pgo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNwaW5fbG9ja19pcnFzYXZl KCZwY3J0Yy0+ZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZGNfc3RyZWFtX2FkanVzdF92bWluX3ZtYXgoCj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBkbS0+ZGMsIGFjcnRjX3N0YXRlLT5zdHJlYW0sCj4+Pj4gQEAg LTg0NDIsOCArODUyMCwxMCBAQCBzdGF0aWMgdm9pZCAKPj4+PiBhbWRncHVfZG1fYXRvbWljX2Nv bW1pdF90YWlsKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPj4+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIH0KPj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZG1fb2xkX2NydGNf c3RhdGUtPnN0cmVhbSkKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZG1fb2xkX2Ny dGNfc3RhdGUtPnN0cmVhbSkgewo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmVtb3ZlX3N0cmVhbShhZGV2LCBhY3J0YywgCj4+Pj4gZG1fb2xkX2NydGNfc3RhdGUtPnN0 cmVhbSk7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkbV9vbGRfY3J0Y19z dGF0ZS0+ZnJlZXN5bmNfdmlkZW9fbW9kZSA9IDA7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBtX3J1bnRpbWVfZ2V0X25vcmVz dW1lKGRldi0+ZGV2KTsKPj4+PiBAQCAtODQ1NCw4ICs4NTM0LDEwIEBAIHN0YXRpYyB2b2lkIAo+ Pj4+IGFtZGdwdV9kbV9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlKQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9IGVsc2UgaWYgKG1vZGVyZXNldF9yZXF1 aXJlZChuZXdfY3J0Y19zdGF0ZSkpIHsKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBE Uk1fREVCVUdfRFJJVkVSKCJBdG9taWMgY29tbWl0OiBSRVNFVC4gY3J0YyBpZCAKPj4+PiAlZDpb JXBdXG4iLCBhY3J0Yy0+Y3J0Y19pZCwgYWNydGMpOwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIC8qIGkuZS4gcmVzZXQgbW9kZSAqLwo+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGlmIChkbV9vbGRfY3J0Y19zdGF0ZS0+c3RyZWFtKQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGlmIChkbV9vbGRfY3J0Y19zdGF0ZS0+c3RyZWFtKSB7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCByZW1vdmVfc3RyZWFtKGFkZXYsIGFjcnRjLCAKPj4+PiBkbV9v bGRfY3J0Y19zdGF0ZS0+c3RyZWFtKTsKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGRtX29sZF9jcnRjX3N0YXRlLT5mcmVlc3luY192aWRlb19tb2RlID0gMDsKPj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbW9k ZV9zZXRfcmVzZXRfcmVxdWlyZWQgPSB0cnVlOwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ Pj4gwqDCoMKgwqDCoCB9IC8qIGZvcl9lYWNoX2NydGNfaW5fc3RhdGUoKSAqLwo+Pj4+IEBAIC04 ODY3LDYgKzg5NDksNyBAQCBzdGF0aWMgdm9pZCBnZXRfZnJlZXN5bmNfY29uZmlnX2Zvcl9jcnRj KAo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRvX2FtZGdwdV9kbV9jb25uZWN0b3Io bmV3X2Nvbl9zdGF0ZS0+YmFzZS5jb25uZWN0b3IpOwo+Pj4+IMKgwqDCoMKgwqAgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKm1vZGUgPSAmbmV3X2NydGNfc3RhdGUtPmJhc2UubW9kZTsKPj4+PiDC oMKgwqDCoMKgIGludCB2cmVmcmVzaCA9IGRybV9tb2RlX3ZyZWZyZXNoKG1vZGUpOwo+Pj4+ICvC oMKgwqAgYm9vbCBmc192aWRfbW9kZSA9IGZhbHNlOwo+Pj4+IMKgwqDCoMKgwqAgbmV3X2NydGNf c3RhdGUtPnZycl9zdXBwb3J0ZWQgPSAKPj4+PiBuZXdfY29uX3N0YXRlLT5mcmVlc3luY19jYXBh YmxlICYmCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZy ZWZyZXNoID49IGFjb25uZWN0b3ItPm1pbl92ZnJlcSAmJgo+Pj4+IEBAIC04ODc0LDE3ICs4OTU3 LDI1IEBAIHN0YXRpYyB2b2lkIGdldF9mcmVlc3luY19jb25maWdfZm9yX2NydGMoCj4+Pj4gwqDC oMKgwqDCoCBpZiAobmV3X2NydGNfc3RhdGUtPnZycl9zdXBwb3J0ZWQpIHsKPj4+PiDCoMKgwqDC oMKgwqDCoMKgwqAgbmV3X2NydGNfc3RhdGUtPnN0cmVhbS0+aWdub3JlX21zYV90aW1pbmdfcGFy YW0gPSB0cnVlOwo+Pj4+IC3CoMKgwqDCoMKgwqDCoCBjb25maWcuc3RhdGUgPSBuZXdfY3J0Y19z dGF0ZS0+YmFzZS52cnJfZW5hYmxlZCA/Cj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBWUlJfU1RBVEVfQUNUSVZFX1ZBUklBQkxFIDoKPj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIFZSUl9TVEFURV9JTkFDVElWRTsKPj4+PiAtwqDCoMKgwqDCoMKgwqAgY29u ZmlnLm1pbl9yZWZyZXNoX2luX3VoeiA9Cj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBhY29ubmVjdG9yLT5taW5fdmZyZXEgKiAxMDAwMDAwOwo+Pj4+IC3CoMKgwqDCoMKgwqDC oCBjb25maWcubWF4X3JlZnJlc2hfaW5fdWh6ID0KPj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGFjb25uZWN0b3ItPm1heF92ZnJlcSAqIDEwMDAwMDA7Cj4+Pj4gK8KgwqDCoMKg wqDCoMKgIGZzX3ZpZF9tb2RlID0gbmV3X2NydGNfc3RhdGUtPmZyZWVzeW5jX2NvbmZpZy5zdGF0 ZSA9PSAKPj4+PiBWUlJfU1RBVEVfQUNUSVZFX0ZJWEVEIHx8Cj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgbmV3X2NydGNfc3RhdGUtPmZyZWVzeW5jX3ZpZGVvX21vZGU7Cj4+Pj4gKwo+Pj4+ ICvCoMKgwqDCoMKgwqDCoCBjb25maWcubWluX3JlZnJlc2hfaW5fdWh6ID0gYWNvbm5lY3Rvci0+ bWluX3ZmcmVxICogMTAwMDAwMDsKPj4+PiArwqDCoMKgwqDCoMKgwqAgY29uZmlnLm1heF9yZWZy ZXNoX2luX3VoeiA9IGFjb25uZWN0b3ItPm1heF92ZnJlcSAqIDEwMDAwMDA7Cj4+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgIGNvbmZpZy52c2lmX3N1cHBvcnRlZCA9IHRydWU7Cj4+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgIGNvbmZpZy5idHIgPSB0cnVlOwo+Pj4+IC3CoMKgwqAgfQo+Pj4+ICvCoMKgwqDC oMKgwqDCoCBpZiAoZnNfdmlkX21vZGUpIHsKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBj b25maWcuc3RhdGUgPSBWUlJfU1RBVEVfQUNUSVZFX0ZJWEVEOwo+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGNvbmZpZy5maXhlZF9yZWZyZXNoX2luX3VoeiA9IAo+Pj4+IG5ld19jcnRjX3N0 YXRlLT5mcmVlc3luY19jb25maWcuZml4ZWRfcmVmcmVzaF9pbl91aHo7Cj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIH0gZWxzZSBpZiAo bmV3X2NydGNfc3RhdGUtPmJhc2UudnJyX2VuYWJsZWQpIHsKPj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBjb25maWcuc3RhdGUgPSBWUlJfU1RBVEVfQUNUSVZFX1ZBUklBQkxFOwo+Pj4+ICvC oMKgwqDCoMKgwqDCoCB9IGVsc2Ugewo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbmZp Zy5zdGF0ZSA9IFZSUl9TVEFURV9JTkFDVElWRTsKPj4+PiArwqDCoMKgwqDCoMKgwqAgfQo+Pj4+ ICvCoMKgwqAgfQo+Pj4+ICtvdXQ6Cj4+Pj4gwqDCoMKgwqDCoCBuZXdfY3J0Y19zdGF0ZS0+ZnJl ZXN5bmNfY29uZmlnID0gY29uZmlnOwo+Pj4+IMKgIH0KPj4+PiBAQCAtODg5Nyw2ICs4OTg4LDUx IEBAIHN0YXRpYyB2b2lkIHJlc2V0X2ZyZWVzeW5jX2NvbmZpZ19mb3JfY3J0YygKPj4+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc2l6ZW9mKG5ld19jcnRjX3N0YXRlLT52cnJfaW5mb3BhY2tl dCkpOwo+Pj4+IMKgIH0KPj4+PiArc3RhdGljIGJvb2wKPj4+PiAraXNfdGltaW5nX3VuY2hhbmdl ZF9mb3JfZnJlZXN5bmMoc3RydWN0IGRybV9jcnRjX3N0YXRlIAo+Pj4+ICpvbGRfY3J0Y19zdGF0 ZSwKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9jcnRj X3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkKPj4+PiArewo+Pj4+ICvCoMKgwqAgc3RydWN0IGRybV9k aXNwbGF5X21vZGUgb2xkX21vZGUsIG5ld19tb2RlOwo+Pj4+ICsKPj4+PiArwqDCoMKgIGlmICgh b2xkX2NydGNfc3RhdGUgfHwgIW5ld19jcnRjX3N0YXRlKQo+Pj4+ICvCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gZmFsc2U7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgb2xkX21vZGUgPSBvbGRfY3J0Y19zdGF0 ZS0+bW9kZTsKPj4+PiArwqDCoMKgIG5ld19tb2RlID0gbmV3X2NydGNfc3RhdGUtPm1vZGU7Cj4+ Pj4gKwo+Pj4+ICvCoMKgwqAgaWYgKG9sZF9tb2RlLmNsb2NrwqDCoMKgwqDCoMKgID09IG5ld19t b2RlLmNsb2NrICYmCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIG9sZF9tb2RlLmhkaXNwbGF5wqDCoMKg ID09IG5ld19tb2RlLmhkaXNwbGF5ICYmCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIG9sZF9tb2RlLnZk aXNwbGF5wqDCoMKgID09IG5ld19tb2RlLnZkaXNwbGF5ICYmCj4+Pj4gK8KgwqDCoMKgwqDCoMKg IG9sZF9tb2RlLmh0b3RhbMKgwqDCoMKgwqAgPT0gbmV3X21vZGUuaHRvdGFsICYmCj4+Pj4gK8Kg wqDCoMKgwqDCoMKgIG9sZF9tb2RlLnZ0b3RhbMKgwqDCoMKgwqAgIT0gbmV3X21vZGUudnRvdGFs ICYmCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIG9sZF9tb2RlLmhzeW5jX3N0YXJ0ID09IG5ld19tb2Rl LmhzeW5jX3N0YXJ0ICYmCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIG9sZF9tb2RlLnZzeW5jX3N0YXJ0 ICE9IG5ld19tb2RlLnZzeW5jX3N0YXJ0ICYmCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIG9sZF9tb2Rl LmhzeW5jX2VuZMKgwqAgPT0gbmV3X21vZGUuaHN5bmNfZW5kICYmCj4+Pj4gK8KgwqDCoMKgwqDC oMKgIG9sZF9tb2RlLnZzeW5jX2VuZMKgwqAgIT0gbmV3X21vZGUudnN5bmNfZW5kICYmCj4+Pj4g K8KgwqDCoMKgwqDCoMKgIG9sZF9tb2RlLmhza2V3wqDCoMKgwqDCoMKgID09IG5ld19tb2RlLmhz a2V3ICYmCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIG9sZF9tb2RlLnZzY2FuwqDCoMKgwqDCoMKgID09 IG5ld19tb2RlLnZzY2FuICYmCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIChvbGRfbW9kZS52c3luY19l bmQgLSBvbGRfbW9kZS52c3luY19zdGFydCkgPT0KPj4+PiArwqDCoMKgwqDCoMKgwqAgKG5ld19t b2RlLnZzeW5jX2VuZCAtIG5ld19tb2RlLnZzeW5jX3N0YXJ0KSkKPj4+PiArwqDCoMKgwqDCoMKg wqAgcmV0dXJuIHRydWU7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgcmV0dXJuIGZhbHNlOwo+Pj4+ICt9 Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgdm9pZCBzZXRfZnJlZXN5bmNfZml4ZWRfY29uZmlnKHN0cnVj dCBkbV9jcnRjX3N0YXRlIAo+Pj4+ICpkbV9uZXdfY3J0Y19zdGF0ZSkgewo+Pj4+ICvCoMKgwqAg dWludDY0X3QgbnVtLCBkZW4sIHJlczsKPj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fY3J0Y19zdGF0 ZSAqbmV3X2NydGNfc3RhdGUgPSAmZG1fbmV3X2NydGNfc3RhdGUtPmJhc2U7Cj4+Pj4gKwo+Pj4+ ICvCoMKgwqAgZG1fbmV3X2NydGNfc3RhdGUtPmZyZWVzeW5jX2NvbmZpZy5zdGF0ZSA9IFZSUl9T VEFURV9BQ1RJVkVfRklYRUQ7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgbnVtID0gKHVuc2lnbmVkIGxv bmcgbG9uZyluZXdfY3J0Y19zdGF0ZS0+bW9kZS5jbG9jayAqIDEwMDAgKiAKPj4+PiAxMDAwMDAw Owo+Pj4+ICvCoMKgwqAgZGVuID0gKHVuc2lnbmVkIGxvbmcgbG9uZyluZXdfY3J0Y19zdGF0ZS0+ bW9kZS5odG90YWwgKgo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgKHVuc2lnbmVkIGxvbmcgbG9u ZyluZXdfY3J0Y19zdGF0ZS0+bW9kZS52dG90YWw7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgcmVzID0g ZGl2X3U2NChudW0sIGRlbik7Cj4+Pj4gK8KgwqDCoCBkbV9uZXdfY3J0Y19zdGF0ZS0+ZnJlZXN5 bmNfY29uZmlnLmZpeGVkX3JlZnJlc2hfaW5fdWh6ID0gcmVzOwo+Pj4+ICvCoMKgwqAgZG1fbmV3 X2NydGNfc3RhdGUtPmZyZWVzeW5jX3ZpZGVvX21vZGUgPSB0cnVlOwo+Pj4+ICt9Cj4+Pj4gKwo+ Pj4+IMKgIHN0YXRpYyBpbnQgZG1fdXBkYXRlX2NydGNfc3RhdGUoc3RydWN0IGFtZGdwdV9kaXNw bGF5X21hbmFnZXIgKmRtLAo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+Pj4+IEBAIC04OTg3LDYgKzkx MjMsMTEgQEAgc3RhdGljIGludCBkbV91cGRhdGVfY3J0Y19zdGF0ZShzdHJ1Y3QgCj4+Pj4gYW1k Z3B1X2Rpc3BsYXlfbWFuYWdlciAqZG0sCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBUT0RP OiBSZWZhY3RvciB0aGlzIGZ1bmN0aW9uIHRvIGFsbG93IHRoaXMgY2hlY2sgdG8gd29yawo+Pj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgICogaW4gYWxsIGNvbmRpdGlvbnMuCj4+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgwqAgKi8KPj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGFtZGdwdV9mcmVlc3luY192 aWRfbW9kZSAmJgo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRtX25ld19jcnRjX3N0YXRl LT5zdHJlYW0gJiYKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpc190aW1pbmdfdW5jaGFu Z2VkX2Zvcl9mcmVlc3luYyhuZXdfY3J0Y19zdGF0ZSwgCj4+Pj4gb2xkX2NydGNfc3RhdGUpKQo+ Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gc2tpcF9tb2Rlc2V0Owo+Pj4+ICsKPj4+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGRtX25ld19jcnRjX3N0YXRlLT5zdHJlYW0gJiYKPj4+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkY19pc19zdHJlYW1fdW5jaGFuZ2VkKG5ld19z dHJlYW0sIAo+Pj4+IGRtX29sZF9jcnRjX3N0YXRlLT5zdHJlYW0pICYmCj4+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZGNfaXNfc3RyZWFtX3NjYWxpbmdfdW5jaGFuZ2VkKG5ld19zdHJl YW0sIAo+Pj4+IGRtX29sZF9jcnRjX3N0YXRlLT5zdHJlYW0pKSB7Cj4+Pj4gQEAgLTkwMTgsNiAr OTE1OSwyNiBAQCBzdGF0aWMgaW50IGRtX3VwZGF0ZV9jcnRjX3N0YXRlKHN0cnVjdCAKPj4+PiBh bWRncHVfZGlzcGxheV9tYW5hZ2VyICpkbSwKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFk bV9vbGRfY3J0Y19zdGF0ZS0+c3RyZWFtKQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGdvdG8gc2tpcF9tb2Rlc2V0Owo+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoYW1kZ3B1X2ZyZWVz eW5jX3ZpZF9tb2RlICYmIGRtX25ld19jcnRjX3N0YXRlLT5zdHJlYW0gJiYKPj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBpc190aW1pbmdfdW5jaGFuZ2VkX2Zvcl9mcmVlc3luYyhuZXdfY3J0 Y19zdGF0ZSwKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgb2xkX2NydGNfc3RhdGUpKSB7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgbmV3X2NydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCA9IGZhbHNlOwo+Pj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIERSTV9ERUJVR19EUklWRVIoCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAiTW9kZSBjaGFuZ2Ugbm90IHJlcXVpcmVkIGZvciBmcm9udCBwb3JjaCBj aGFuZ2UsICIKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJzZXR0aW5nIG1v ZGVfY2hhbmdlZCB0byAlZCIsCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBu ZXdfY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2VkKTsKPj4+PiArCj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgc2V0X2ZyZWVzeW5jX2ZpeGVkX2NvbmZpZyhkbV9uZXdfY3J0Y19zdGF0ZSk7Cj4+ Pj4gKwo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gc2tpcF9tb2Rlc2V0Owo+Pj4+ ICvCoMKgwqDCoMKgwqDCoCB9IGVsc2UgaWYgKGFtZGdwdV9mcmVlc3luY192aWRfbW9kZSAmJiBh Y29ubmVjdG9yICYmCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaXNfZnJlZXN5 bmNfdmlkZW9fbW9kZSgmbmV3X2NydGNfc3RhdGUtPm1vZGUsCj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFjb25uZWN0b3IpKSB7Cj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2V0X2ZyZWVzeW5jX2ZpeGVkX2NvbmZpZyhkbV9uZXdf Y3J0Y19zdGF0ZSk7Cj4+Pgo+Pj4gSSBkb24ndCB0aGluayB0aGlzIGV4dHJhIGNoZWNrIGlzIG5l ZWRlZCBoZXJlIGJlY2F1c2Ugd2UgaGF2ZSB0aGUgb25lIAo+Pj4gYWJvdmUuCj4+Cj4+IEluIHRo ZSBzZWNvbmQgYnJhbmNoLCBzaW5jZSB3ZSBjYWxsIGlzX2ZyZWVzeW5jX3ZpZGVvX21vZGUoKSwg dGhlIAo+PiBjaGVjayB3aXRoIHRoZSBtb2R1bGUgcGFyYW1ldGVyIHdhcyBhbHNvIG5lY2Vzc2Fy eSBhcyB0aGlzIGlzIHRoZSAKPj4gdHJpZ2dlcmluZyBwb2ludCBmb3IgdGhlIFZSUiBhcGkgY29u ZmlndXJhdGlvbiBjaGFuZ2UuIEFsc28sIHRoZSBmaXJzdCAKPj4gYnJhbmNoIHNraXBzIHRoZSBt b2Rlc2V0LCB3aGlsZSB0aGUgc2Vjb25kIGRvZXNudC4gU28gd2UgY2Fubm90IGNsdWIgCj4+IHRo ZW0gdG9nZXRoZXIuIFRoZSBzZWNvbmQgYnJhbmNoIGlzIGZvciB0aGUgY2FzZSB3aGVuIGEgZnJl ZXN5bmMgbW9kZSAKPj4gd2FzIHNldCBhY2NvbXBhbmllZCBieSBhIG1vZGVzZXQuIFRoaXMgaGFw cGVucyB3aGVuIHRoZSBwcmV2aW91cyBtb2RlIAo+PiBoYWQgZGlmZmVyZW50IGJhc2UgdGltaW5n cyBhbmQgaGVuY2UgYSBtb2Rlc2V0IGlzIG5lY2Vzc2FyeS4KPj4KPj4KPj4gVGhhbmtzICYgUmVn YXJkcywKPj4gQXVyYWJpbmRvIFBpbGxhaQo+Pgo+IAo+IE9rYXksIEkgdW5kZXJzdGFuZCB0aGlz IGJsb2NrIG5vdy4gVGhhbmtzLgo+IAo+IFJlZ2FyZHMsCj4gTmljaG9sYXMgS2F6bGF1c2thcwo+ IAo+Pj4KPj4+IFJlZ2FyZHMsCj4+PiBOaWNob2xhcyBLYXpsYXVza2FzCj4+Pgo+Pj4+ICvCoMKg wqDCoMKgwqDCoCB9IGVsc2UgaWYgKGRtX25ld19jcnRjX3N0YXRlLT5mcmVlc3luY192aWRlb19t b2RlKSB7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZG1fbmV3X2NydGNfc3RhdGUtPmZy ZWVzeW5jX3ZpZGVvX21vZGUgPSAwOwo+Pj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4gKwo+Pj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBkbV9hdG9taWNfZ2V0X3N0YXRlKHN0YXRlLCAmZG1f c3RhdGUpOwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocmV0KQo+Pj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGdvdG8gZmFpbDsKPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uaCAKPj4+PiBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmgKPj4+PiBpbmRleCAzZWE4NWJl OWM1NDYuLmZmNDY3NTU3MjEyNSAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5oCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uaAo+Pj4+IEBAIC00NzQsNiArNDc0LDcg QEAgc3RydWN0IGRtX2NydGNfc3RhdGUgewo+Pj4+IMKgwqDCoMKgwqAgYm9vbCBmcmVlc3luY190 aW1pbmdfY2hhbmdlZDsKPj4+PiDCoMKgwqDCoMKgIGJvb2wgZnJlZXN5bmNfdnJyX2luZm9fY2hh bmdlZDsKPj4+PiArwqDCoMKgIGJvb2wgZnJlZXN5bmNfdmlkZW9fbW9kZTsKPj4+PiDCoMKgwqDC oMKgIGJvb2wgZHNjX2ZvcmNlX2NoYW5nZWQ7Cj4+Pj4gwqDCoMKgwqDCoCBib29sIHZycl9zdXBw b3J0ZWQ7Cj4+Pj4KPj4+Cj4+Cj4gCj4gCgotLSAKUmVnYXJkcywKQXVyYWJpbmRvIFBpbGxhaQpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1h aWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK