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.1 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, 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 1BE48C43460 for ; Tue, 11 May 2021 17:52:36 +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 B8A1661606 for ; Tue, 11 May 2021 17:52:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B8A1661606 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 2D23D6EAA4; Tue, 11 May 2021 17:52:35 +0000 (UTC) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2042.outbound.protection.outlook.com [40.107.244.42]) by gabe.freedesktop.org (Postfix) with ESMTPS id 85E196EAA3; Tue, 11 May 2021 17:52:33 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=c8hUj/wJBC1/Pbfu7IBL0pdMtaTRj/hZKbZgV9aP/57sL9xMf7FURK3PA7KLVh32FEL60wXaopv765H58gtWmSDBfg/5Ok8ohVtkcVL6vM8NiOtVaR8b0iGHmNdwfyLLomXjwoca4SndCZ+SxJjPnjju/7Pk26xrl1yCFW1TslrydIEApOmcc8eJuxUwQaqBJ+Zmu1Af6mm06uhLqCMMMuHqNo9zLOJ+WWp0bScEix3JckKkFW1r13YFF/SYCpizEzNH/yyZtKv0CGC8+SzCzozVfnWTVuO5ELm8MI9J7HwFvfvgdZKBwlGQLWXFJJfET9bug5Dg1WIQBPBkRywxEA== 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=8fJpaK2AGCDzQkdXzvTFVcoumhDjRriRiObvhrpgKs8=; b=Ca/xqXY+CPspfPlhKKxGJYPueJiwiOWEvJqcXm2wbnRUVxo9DYHeU2hVi3Ix9/DdWhCV7F2tm1V7r2eemYJ6LpqWvrqA8L58LHnRuDROzuRl5v/+akwoz+J06EA9s9xAnQV9azcj7raraFErw4uIgyMOxu3BvnrNuBw5yr3dD6d/eGRIq1zLR/kOLCxCvMgE+yL1layCvzX0sVJlAOJkUR1gbtFJmn9/yKvuNK48UxHyN1m1RzLuZ/vhmO+xQtQAtSaOcjZNiEy4NPAwmDG9MGoQkdLDMS5KgXx70hDYdIp5rlPV3IUNujdBSSgbsaKYR93GXDNkTMEjVfw0Fb5Msw== 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=8fJpaK2AGCDzQkdXzvTFVcoumhDjRriRiObvhrpgKs8=; b=BiEQU5W/jQXPcnsKCLWN9h4mqACb2OnmFe+IUq6qrFMNaC4Cx6yIgUOHTMVB4W/Vbd7cDBZpRBcYCdHvuXdBW93Oooo9/v7R0qnT14hT5u7KNCM4CBjePlvyv2JXmfF92y+qU/6FmB3RTGV1o1CS1P578Tmg1WUYs0tp1Wjn9ao= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; Received: from SN6PR12MB4623.namprd12.prod.outlook.com (2603:10b6:805:e9::17) by SA0PR12MB4447.namprd12.prod.outlook.com (2603:10b6:806:9b::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.27; Tue, 11 May 2021 17:52:31 +0000 Received: from SN6PR12MB4623.namprd12.prod.outlook.com ([fe80::ad51:8c49:b171:856c]) by SN6PR12MB4623.namprd12.prod.outlook.com ([fe80::ad51:8c49:b171:856c%7]) with mapi id 15.20.4108.031; Tue, 11 May 2021 17:52:31 +0000 Subject: Re: [PATCH v6 10/16] drm/amdgpu: Guard against write accesses after device removal To: =?UTF-8?Q?Christian_K=c3=b6nig?= , dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, linux-pci@vger.kernel.org, daniel.vetter@ffwll.ch, Harry.Wentland@amd.com References: <20210510163625.407105-1-andrey.grodzovsky@amd.com> <20210510163625.407105-11-andrey.grodzovsky@amd.com> <19ec5ffa-48a7-863d-0b5a-5c2a43d65e81@gmail.com> From: Andrey Grodzovsky Message-ID: Date: Tue, 11 May 2021 13:52:26 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 In-Reply-To: <19ec5ffa-48a7-863d-0b5a-5c2a43d65e81@gmail.com> Content-Language: en-US X-Originating-IP: [2607:fea8:3edf:49b0:7576:4f76:97d8:1487] X-ClientProxiedBy: YT1PR01CA0098.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:2c::7) To SN6PR12MB4623.namprd12.prod.outlook.com (2603:10b6:805:e9::17) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [IPv6:2607:fea8:3edf:49b0:7576:4f76:97d8:1487] (2607:fea8:3edf:49b0:7576:4f76:97d8:1487) by YT1PR01CA0098.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:2c::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.30 via Frontend Transport; Tue, 11 May 2021 17:52:29 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5c434600-5a54-4449-a0b3-08d914a58c6c X-MS-TrafficTypeDiagnostic: SA0PR12MB4447: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4303; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0u2/m8+ZXR1vLmXjN1rdKMW1L41HyWQP90il6mQIZkn0cJS2Xq+nHPbfw5u8NcmPSwc2kBKPBs5qAF/8YlKwffz4swcm5F5zmey13BTqMMiQV9Zp2EDOg/8X7Mt9IanNjQBHcOgowhI8HUF4wDy758p2ggGQ6Pwa2qWfjuf+HrJfAv2W+ea3TQ+0JcChTzYs6/eG1aTiRSqObH6Mh9etXZ9iF/TM5E1JZLvWZj6SxQR4KYGWv8e0fcqzpOn6AfY30otLOhYBfG9nNv1zfYlHUTWmJk302N/2jW7ZNTfLbjASdpZIEr3mVntXkAAWHWml/EWCnxngL6j34/3yPJ7jl8mHguuNAWOBZM8cvoDyAyVC3WYcAW4iKQhJ6P4qy8tCH8g8qjHZ8D8/RI9ioSFrkNZMb/kO+xd06n6r+tPeiSIa5V1R0+JtthHZNeuPNmbJSIYMWaAMIl6WVqIGtCMNoENpUtedCVxXXXn/WIXDAneeXDsECvVHvBuqoiIW/upwtKVsqOphySHJgf3DPJjpeLz4ierK1RPRPHFFNS43hLUYXeVnxcvegy6rYu+kvQwEVMXtVP47QuNI/4XI0gsxGYrY/qY/aMF01XNmdbmwmk01FbyNnNI1IUf6mbukwlJRp5JUa9dg2yDXxhoHQxjVw1vQr62doTFb6YkarhamlE80K9sJEygKDJdsqhxcwHC2 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN6PR12MB4623.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(366004)(376002)(136003)(396003)(346002)(66476007)(16526019)(478600001)(186003)(5660300002)(6486002)(8936002)(31686004)(316002)(2616005)(36756003)(66946007)(44832011)(4326008)(66556008)(30864003)(53546011)(6636002)(2906002)(83380400001)(38100700002)(66574015)(52116002)(6666004)(86362001)(31696002)(8676002)(45980500001)(43740500002)(579004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?K3RiRmVzdGVTNE4yd1piSWk2RlBUNUhCcE1GcG14Y1BSdVJvMHE1QytVZENG?= =?utf-8?B?Q0wyMXVRbXR6U3E3bEJQRmo5WHhPUTQ1ZUdJYU1GcFd4MVJJRHpIWlBMV2ow?= =?utf-8?B?UEpIUjN6S05FNWRldmR2d1ZOOEwrMzZXM2hoRG5IQlZwaERmTG80YTVTa284?= =?utf-8?B?V0hQVXcrV2dydmVOakNaNmRtcWM0RnZ1RXl4M1REVjF1VU5HZVNyb1Qzc1dy?= =?utf-8?B?OWpXNjBaZm9Tbk5vbmVmMnhNQTdqeFVLWjI5KzJPRlBtVHM2dW5ZUDZRb2lu?= =?utf-8?B?RVNhMkpGT1d2QWxDbEd2UGcrZkt0SkFyZTJaL1VpMFM3b0Z6eHZ1MU9CaXZl?= =?utf-8?B?SS9BR1gyWVVOeHFKNzVtMEtWZXJHRU9SRGJUMlVIWTNxQ0VZeE9KNTMvTHNQ?= =?utf-8?B?cTkvWWJvcFB5V2JPVXFBLytjcXBtMjZLa0k5M1BJT2dtZzQ2WmhreFp1Zjdl?= =?utf-8?B?QzZaRjd6SUlJbkc0K0k1c3lpOUZpdWZEOU16WUkrRXcyU2ZYZkUrRThka04r?= =?utf-8?B?VktMRzcrNiswVGpIUWg3cEdsUTYvOWhNYTMyQVl0L25mamtzM1liR1hXdnpR?= =?utf-8?B?Rm1NZG0rdGIydFNhWUNDL3AwQlVFWkVzUHZrQkVjb2JMMUFCS0c5Umd4Zi9t?= =?utf-8?B?SzlJYVMreFNYU2ZIZGNsVk80VzRNL256ZmNMSnJlZjh2S05XemFabnZBNWdn?= =?utf-8?B?Zm1NeUNDMTZFN2UxY1BUOE9xQ2Y3VDd0TWIxNTdqZkxxNHNpbkttQnEzeUQx?= =?utf-8?B?MDVSekFxc3B1b2w1TWQ3dnI0M2grbW1mMG9zS2pIc2ozSjN0UlFSTnNYdmpn?= =?utf-8?B?NUMyaUFKZHNOVloxVjE0OEJlZDUvbkRCRExwVnpKS0wzaFVUeXBQRkRFcjN1?= =?utf-8?B?T250WE1LS1AvdXdPbEwzLzlLeTNxR2lPamVLN1BLT0ltYkMxWVZDMGhoWllX?= =?utf-8?B?Z0tWbE5YOXNuUFhLOWViTXo2WCs4ZklwTGhuNzY0TTRaVmNQRm9VYW8wcEFI?= =?utf-8?B?OUZNM0VBMGJLb205VmVrRElqdVJOTDMzWXRzVXJOZlVoK1k4eTl0bXlvZlZB?= =?utf-8?B?UU9ERjdXd1Erdk5RdFcrMmJtQWJVTkpHK0dJMjM1Y3hOZ3RpUUJwSFNxazdY?= =?utf-8?B?cVBmU1hXQ2hJZUN2UlpTMlBXNU5ONWVtSFVzK2Mrb1V6aEQrVVFFeVM0U2ZH?= =?utf-8?B?dzlDVlRZVTdsWGlIZ1ZzcitQZTh2V1pZZUhQUXNYeFJwbWVUaUpJaytwelVO?= =?utf-8?B?R0hHRkdudDQrUFpiZG1UTW85bmhnakdLamdGdGk2WExydGZyUzM5d0Jib3dJ?= =?utf-8?B?WUl5eWcvdjJ4Q3R6aFhDdDIwUjVKN1M1bnpOcGpDYmdDT2NkdmNRRzdiRWpk?= =?utf-8?B?MGRCWGMwajJ0QmN1VDVBZXduQms2aW1DMVlBK2FUS3dadmI3SWNNcHBpU1F3?= =?utf-8?B?Q2J6Slpiclp3VjEydjZzUjdvSms0SmtlY3JwdmpWSHhXb2FBMEZOL0NiZU52?= =?utf-8?B?eG52QVRSYi9aVFZEaFJrRFk1aEdBd2o2NW45Umw3VFhSSzllVXl1S0x4SDFW?= =?utf-8?B?S2p6V0VBeEtScGVtUjVDajNDaEFSWDZjbkVDRnhuQlRWUEhHN1BQOXpYNHFz?= =?utf-8?B?d3VUOUFycnRRc3NqeE9qQ2V0MjluYlVLOXI3QXNtN3NnQVdUMVpJMVA1Ynhp?= =?utf-8?B?UkRROVhtV1dadWtSVHBLV3g1OHJZeWpzVE0xejVIcG1ZdVF0THJTd1hVQ29R?= =?utf-8?B?em5STEZEQ0MzeVlaNi9xTDdMK3dOTHlTZldSa296czNLU0Z5cTZFM2JBMG0z?= =?utf-8?B?aGkrY0grczFWeHUvOUl3QlNaUmdWUmllL0xXR20zNW40d0pYUmE0M3dtRXVO?= =?utf-8?Q?flMUTBeRxn5DV?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5c434600-5a54-4449-a0b3-08d914a58c6c X-MS-Exchange-CrossTenant-AuthSource: SN6PR12MB4623.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2021 17:52:30.9963 (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: TlmnRXiwjRTiZhD1Bx3zmP/C0PanbSss2HQrpCs+j+FnWZSp7KkZCZ3TRtZ+9e4yNh1uslkQCdSKeb8mnksSyQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB4447 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: Alexander.Deucher@amd.com, gregkh@linuxfoundation.org, ppaalanen@gmail.com, helgaas@kernel.org, Felix.Kuehling@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" CgpPbiAyMDIxLTA1LTExIDI6NTAgYS5tLiwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPiBBbSAx MC4wNS4yMSB1bSAxODozNiBzY2hyaWViIEFuZHJleSBHcm9kem92c2t5Ogo+PiBUaGlzIHNob3Vs ZCBwcmV2ZW50IHdyaXRpbmcgdG8gbWVtb3J5IG9yIElPIHJhbmdlcyBwb3NzaWJseQo+PiBhbHJl YWR5IGFsbG9jYXRlZCBmb3Igb3RoZXIgdXNlcyBhZnRlciBvdXIgZGV2aWNlIGlzIHJlbW92ZWQu Cj4+Cj4+IHY1Ogo+PiBQcm90ZWN0IG1vcmUgcGxhY2VzIHdoZXIgbWVtY29weV90by9mb3JtX2lv IHRha2VzIHBsYWNlCj4+IFByb3RlY3QgSUIgc3VibWlzc2lvbnMKPj4KPj4gdjY6IFN3aXRjaCB0 byAhZHJtX2Rldl9lbnRlciBpbnN0ZWFkIG9mIHNjb3BpbmcgZW50aXJlIGNvZGUKPj4gd2l0aCBi cmFja2V0cy4KPj4KPj4gU2lnbmVkLW9mZi1ieTogQW5kcmV5IEdyb2R6b3Zza3kgPGFuZHJleS5n cm9kem92c2t5QGFtZC5jb20+Cj4+IC0tLQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfZGV2aWNlLmPCoMKgwqAgfCAxMSArKy0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2dtYy5jwqDCoMKgwqDCoMKgIHzCoCA5ICsrKwo+PiDCoCBkcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfaWIuY8KgwqDCoMKgwqDCoMKgIHwgMTcgKysrLS0K Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jwqDCoMKgwqDCoMKg IHwgNjMgKysrKysrKysrKystLS0tLS0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X3BzcC5owqDCoMKgwqDCoMKgIHzCoCAyICsKPj4gwqAgZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3JpbmcuY8KgwqDCoMKgwqAgfCA3MCArKysrKysrKysrKysrKysrKysr Cj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmjCoMKgwqDCoMKg IHwgNDkgKystLS0tLS0tLS0tLQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfdXZkLmPCoMKgwqDCoMKgwqAgfCAzMSArKysrKy0tLQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfdmNlLmPCoMKgwqDCoMKgwqAgfCAxMSArKy0KPj4gwqAgZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Zjbi5jwqDCoMKgwqDCoMKgIHwgMjIgKysrKy0t Cj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jwqDCoMKgwqDCoMKg wqAgfMKgIDcgKy0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvcHNwX3YxMV8wLmPC oMKgwqDCoMKgwqDCoCB8IDQ0ICsrKysrKy0tLS0tLQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9wc3BfdjEyXzAuY8KgwqDCoMKgwqDCoMKgIHzCoCA4ICstLQo+PiDCoCBkcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjNfMS5jwqDCoMKgwqDCoMKgwqDCoCB8wqAgOCArLS0K Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmNlX3Y0XzAuY8KgwqDCoMKgwqDCoMKg wqAgfCAyNiArKysrLS0tCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3Zjbl92M18w LmPCoMKgwqDCoMKgwqDCoMKgIHwgMjIgKysrLS0tCj4+IMKgIC4uLi9kcm0vYW1kL3BtL3Bvd2Vy cGxheS9zbXVtZ3Ivc211N19zbXVtZ3IuYyB8wqAgMiArCj4+IMKgIDE3IGZpbGVzIGNoYW5nZWQs IDI1NyBpbnNlcnRpb25zKCspLCAxNDUgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMgCj4+IGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jCj4+IGluZGV4IGEwYmZmNDcxMzY3Mi4u OTRjNDE1MTc2Y2RjIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfZGV2aWNlLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2RldmljZS5jCj4+IEBAIC03MSw2ICs3MSw4IEBACj4+IMKgICNpbmNsdWRlIDxkcm0vdGFza19i YXJyaWVyLmg+Cj4+IMKgICNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+Cj4+ICsjaW5jbHVk ZSA8ZHJtL2RybV9kcnYuaD4KPj4gKwo+PiDCoCBNT0RVTEVfRklSTVdBUkUoImFtZGdwdS92ZWdh MTBfZ3B1X2luZm8uYmluIik7Cj4+IMKgIE1PRFVMRV9GSVJNV0FSRSgiYW1kZ3B1L3ZlZ2ExMl9n cHVfaW5mby5iaW4iKTsKPj4gwqAgTU9EVUxFX0ZJUk1XQVJFKCJhbWRncHUvcmF2ZW5fZ3B1X2lu Zm8uYmluIik7Cj4+IEBAIC0yODEsNyArMjgzLDEwIEBAIHZvaWQgYW1kZ3B1X2RldmljZV92cmFt X2FjY2VzcyhzdHJ1Y3QgCj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGxvZmZfdCBwb3MsCj4+IMKg wqDCoMKgwqAgdW5zaWduZWQgbG9uZyBmbGFnczsKPj4gwqDCoMKgwqDCoCB1aW50MzJfdCBoaSA9 IH4wOwo+PiDCoMKgwqDCoMKgIHVpbnQ2NF90IGxhc3Q7Cj4+ICvCoMKgwqAgaW50IGlkeDsKPj4g K8KgwqDCoMKgIGlmICghZHJtX2Rldl9lbnRlcigmYWRldi0+ZGRldiwgJmlkeCkpCj4+ICvCoMKg wqDCoMKgwqDCoMKgIHJldHVybjsKPj4gwqAgI2lmZGVmIENPTkZJR182NEJJVAo+PiDCoMKgwqDC oMKgIGxhc3QgPSBtaW4ocG9zICsgc2l6ZSwgYWRldi0+Z21jLnZpc2libGVfdnJhbV9zaXplKTsK Pj4gQEAgLTI5OSw4ICszMDQsMTAgQEAgdm9pZCBhbWRncHVfZGV2aWNlX3ZyYW1fYWNjZXNzKHN0 cnVjdCAKPj4gYW1kZ3B1X2RldmljZSAqYWRldiwgbG9mZl90IHBvcywKPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgbWVtY3B5X2Zyb21pbyhidWYsIGFkZHIsIGNvdW50KTsKPj4gwqDCoMKg wqDCoMKgwqDCoMKgIH0KPj4gLcKgwqDCoMKgwqDCoMKgIGlmIChjb3VudCA9PSBzaXplKQo+PiAr wqDCoMKgwqDCoMKgwqAgaWYgKGNvdW50ID09IHNpemUpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZHJtX2Rldl9leGl0KGlkeCk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybjsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPiAKPiBNYXliZSB1c2UgYSBnb3RvIGluc3RlYWQs IGJ1dCByZWFsbHkganVzdCBhIG5pdCBwaWNrLgo+IAo+IAo+IAo+PiDCoMKgwqDCoMKgwqDCoMKg wqAgcG9zICs9IGNvdW50Owo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgYnVmICs9IGNvdW50IC8gNDsK Pj4gQEAgLTMyMyw2ICszMzAsOCBAQCB2b2lkIGFtZGdwdV9kZXZpY2VfdnJhbV9hY2Nlc3Moc3Ry dWN0IAo+PiBhbWRncHVfZGV2aWNlICphZGV2LCBsb2ZmX3QgcG9zLAo+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAqYnVmKysgPSBSUkVHMzJfTk9fS0lRKG1tTU1fREFUQSk7Cj4+IMKgwqDC oMKgwqAgfQo+PiDCoMKgwqDCoMKgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFkZXYtPm1taW9f aWR4X2xvY2ssIGZsYWdzKTsKPj4gKwo+PiArwqDCoMKgIGRybV9kZXZfZXhpdChpZHgpOwo+PiDC oCB9Cj4+IMKgIC8qCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfZ21jLmMgCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dtYy5j Cj4+IGluZGV4IDRkMzIyMzNjZGU5Mi4uMDRiYTVlZWYxZTg4IDEwMDY0NAo+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ21jLmMKPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dtYy5jCj4+IEBAIC0zMSw2ICszMSw4IEBACj4+IMKgICNp bmNsdWRlICJhbWRncHVfcmFzLmgiCj4+IMKgICNpbmNsdWRlICJhbWRncHVfeGdtaS5oIgo+PiAr I2luY2x1ZGUgPGRybS9kcm1fZHJ2Lmg+Cj4+ICsKPj4gwqAgLyoqCj4+IMKgwqAgKiBhbWRncHVf Z21jX3BkYjBfYWxsb2MgLSBhbGxvY2F0ZSB2cmFtIGZvciBwZGIwCj4+IMKgwqAgKgo+PiBAQCAt MTUxLDYgKzE1MywxMCBAQCBpbnQgYW1kZ3B1X2dtY19zZXRfcHRlX3BkZShzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAKPj4gKmFkZXYsIHZvaWQgKmNwdV9wdF9hZGRyLAo+PiDCoCB7Cj4+IMKgwqDCoMKg wqAgdm9pZCBfX2lvbWVtICpwdHIgPSAodm9pZCAqKWNwdV9wdF9hZGRyOwo+PiDCoMKgwqDCoMKg IHVpbnQ2NF90IHZhbHVlOwo+PiArwqDCoMKgIGludCBpZHg7Cj4+ICsKPj4gK8KgwqDCoCBpZiAo IWRybV9kZXZfZW50ZXIoJmFkZXYtPmRkZXYsICZpZHgpKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIDA7Cj4+IMKgwqDCoMKgwqAgLyoKPj4gwqDCoMKgwqDCoMKgICogVGhlIGZvbGxvd2luZyBp cyBmb3IgUFRFIG9ubHkuIEdBUlQgZG9lcyBub3QgaGF2ZSBQREVzLgo+PiBAQCAtMTU4LDYgKzE2 NCw5IEBAIGludCBhbWRncHVfZ21jX3NldF9wdGVfcGRlKHN0cnVjdCBhbWRncHVfZGV2aWNlIAo+ PiAqYWRldiwgdm9pZCAqY3B1X3B0X2FkZHIsCj4+IMKgwqDCoMKgwqAgdmFsdWUgPSBhZGRyICYg MHgwMDAwRkZGRkZGRkZGMDAwVUxMOwo+PiDCoMKgwqDCoMKgIHZhbHVlIHw9IGZsYWdzOwo+PiDC oMKgwqDCoMKgIHdyaXRlcSh2YWx1ZSwgcHRyICsgKGdwdV9wYWdlX2lkeCAqIDgpKTsKPj4gKwo+ PiArwqDCoMKgIGRybV9kZXZfZXhpdChpZHgpOwo+PiArCj4+IMKgwqDCoMKgwqAgcmV0dXJuIDA7 Cj4+IMKgIH0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9pYi5jIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9pYi5jCj4+IGlu ZGV4IDE0OGEzYjQ4MWIxMi4uNjJmY2JkNDQ2YzcxIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfaWIuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfaWIuYwo+PiBAQCAtMzAsNiArMzAsNyBAQAo+PiDCoCAjaW5jbHVkZSA8 bGludXgvc2xhYi5oPgo+PiDCoCAjaW5jbHVkZSA8ZHJtL2FtZGdwdV9kcm0uaD4KPj4gKyNpbmNs dWRlIDxkcm0vZHJtX2Rydi5oPgo+PiDCoCAjaW5jbHVkZSAiYW1kZ3B1LmgiCj4+IMKgICNpbmNs dWRlICJhdG9tLmgiCj4+IEBAIC0xMzcsNyArMTM4LDcgQEAgaW50IGFtZGdwdV9pYl9zY2hlZHVs ZShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIAo+PiB1bnNpZ25lZCBudW1faWJzLAo+PiDCoMKg wqDCoMKgIGJvb2wgc2VjdXJlOwo+PiDCoMKgwqDCoMKgIHVuc2lnbmVkIGk7Cj4+IC3CoMKgwqAg aW50IHIgPSAwOwo+PiArwqDCoMKgIGludCBpZHgsIHIgPSAwOwo+PiDCoMKgwqDCoMKgIGJvb2wg bmVlZF9waXBlX3N5bmMgPSBmYWxzZTsKPj4gwqDCoMKgwqDCoCBpZiAobnVtX2licyA9PSAwKQo+ PiBAQCAtMTY5LDEzICsxNzAsMTYgQEAgaW50IGFtZGdwdV9pYl9zY2hlZHVsZShzdHJ1Y3QgYW1k Z3B1X3JpbmcgKnJpbmcsIAo+PiB1bnNpZ25lZCBudW1faWJzLAo+PiDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0dXJuIC1FSU5WQUw7Cj4+IMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgIGlmICghZHJtX2Rl dl9lbnRlcigmYWRldi0+ZGRldiwgJmlkeCkpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVO T0RFVjsKPj4gKwo+PiDCoMKgwqDCoMKgIGFsbG9jX3NpemUgPSByaW5nLT5mdW5jcy0+ZW1pdF9m cmFtZV9zaXplICsgbnVtX2licyAqCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByaW5nLT5mdW5jcy0+ ZW1pdF9pYl9zaXplOwo+PiDCoMKgwqDCoMKgIHIgPSBhbWRncHVfcmluZ19hbGxvYyhyaW5nLCBh bGxvY19zaXplKTsKPj4gwqDCoMKgwqDCoCBpZiAocikgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAg ZGV2X2VycihhZGV2LT5kZXYsICJzY2hlZHVsaW5nIElCIGZhaWxlZCAoJWQpLlxuIiwgcik7Cj4+ IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gcjsKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gZXhpdDsK Pj4gwqDCoMKgwqDCoCB9Cj4+IMKgwqDCoMKgwqAgbmVlZF9jdHhfc3dpdGNoID0gcmluZy0+Y3Vy cmVudF9jdHggIT0gZmVuY2VfY3R4Owo+PiBAQCAtMjA1LDcgKzIwOSw3IEBAIGludCBhbWRncHVf aWJfc2NoZWR1bGUoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCAKPj4gdW5zaWduZWQgbnVtX2li cywKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHIgPSBhbWRncHVfdm1fZmx1c2gocmluZywgam9iLCBu ZWVkX3BpcGVfc3luYyk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocikgewo+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBhbWRncHVfcmluZ191bmRvKHJpbmcpOwo+PiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCByZXR1cm4gcjsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBl eGl0Owo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiDCoMKgwqDCoMKgIH0KPj4gQEAgLTI4Niw3 ICsyOTAsNyBAQCBpbnQgYW1kZ3B1X2liX3NjaGVkdWxlKHN0cnVjdCBhbWRncHVfcmluZyAqcmlu ZywgCj4+IHVuc2lnbmVkIG51bV9pYnMsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoam9iICYm IGpvYi0+dm1pZCkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X3ZtaWRfcmVz ZXQoYWRldiwgcmluZy0+ZnVuY3MtPnZtaHViLCBqb2ItPnZtaWQpOwo+PiDCoMKgwqDCoMKgwqDC oMKgwqAgYW1kZ3B1X3JpbmdfdW5kbyhyaW5nKTsKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiBy Owo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBleGl0Owo+PiDCoMKgwqDCoMKgIH0KPj4gwqDCoMKg wqDCoCBpZiAocmluZy0+ZnVuY3MtPmluc2VydF9lbmQpCj4+IEBAIC0zMDQsNyArMzA4LDEwIEBA IGludCBhbWRncHVfaWJfc2NoZWR1bGUoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCAKPj4gdW5z aWduZWQgbnVtX2licywKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJpbmctPmZ1bmNzLT5lbWl0X3dh dmVfbGltaXQocmluZywgZmFsc2UpOwo+PiDCoMKgwqDCoMKgIGFtZGdwdV9yaW5nX2NvbW1pdChy aW5nKTsKPj4gLcKgwqDCoCByZXR1cm4gMDsKPj4gKwo+PiArZXhpdDoKPj4gK8KgwqDCoCBkcm1f ZGV2X2V4aXQoaWR4KTsKPj4gK8KgwqDCoCByZXR1cm4gcjsKPj4gwqAgfQo+PiDCoCAvKioKPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuYyAKPj4g Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmMKPj4gaW5kZXggOWU3Njlj ZjYwOTViLi5iYjZhZmVlNjE2NjYgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9wc3AuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfcHNwLmMKPj4gQEAgLTI1LDYgKzI1LDcgQEAKPj4gwqAgI2luY2x1ZGUgPGxpbnV4L2Zp cm13YXJlLmg+Cj4+IMKgICNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgo+PiArI2luY2x1 ZGUgPGRybS9kcm1fZHJ2Lmg+Cj4+IMKgICNpbmNsdWRlICJhbWRncHUuaCIKPj4gwqAgI2luY2x1 ZGUgImFtZGdwdV9wc3AuaCIKPj4gQEAgLTM5LDYgKzQwLDggQEAKPj4gwqAgI2luY2x1ZGUgImFt ZGdwdV9yYXMuaCIKPj4gwqAgI2luY2x1ZGUgImFtZGdwdV9zZWN1cmVkaXNwbGF5LmgiCj4+ICsj aW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4KPj4gKwo+PiDCoCBzdGF0aWMgaW50IHBzcF9zeXNmc19p bml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKPj4gwqAgc3RhdGljIHZvaWQgcHNwX3N5 c2ZzX2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwo+PiBAQCAtMjUzLDcgKzI1Niw3 IEBAIHBzcF9jbWRfc3VibWl0X2J1ZihzdHJ1Y3QgcHNwX2NvbnRleHQgKnBzcCwKPj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBwc3BfZ2Z4X2NtZF9yZXNwICpjbWQsIHVpbnQ2NF90 IGZlbmNlX21jX2FkZHIpCj4+IMKgIHsKPj4gwqDCoMKgwqDCoCBpbnQgcmV0Owo+PiAtwqDCoMKg IGludCBpbmRleDsKPj4gK8KgwqDCoCBpbnQgaW5kZXgsIGlkeDsKPj4gwqDCoMKgwqDCoCBpbnQg dGltZW91dCA9IDIwMDAwOwo+PiDCoMKgwqDCoMKgIGJvb2wgcmFzX2ludHIgPSBmYWxzZTsKPj4g wqDCoMKgwqDCoCBib29sIHNraXBfdW5zdXBwb3J0ID0gZmFsc2U7Cj4+IEBAIC0yNjEsNiArMjY0 LDkgQEAgcHNwX2NtZF9zdWJtaXRfYnVmKHN0cnVjdCBwc3BfY29udGV4dCAqcHNwLAo+PiDCoMKg wqDCoMKgIGlmIChwc3AtPmFkZXYtPmluX3BjaV9lcnJfcmVjb3ZlcnkpCj4+IMKgwqDCoMKgwqDC oMKgwqDCoCByZXR1cm4gMDsKPj4gK8KgwqDCoCBpZiAoIWRybV9kZXZfZW50ZXIoJnBzcC0+YWRl di0+ZGRldiwgJmlkeCkpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4gKwo+PiDCoMKg wqDCoMKgIG11dGV4X2xvY2soJnBzcC0+bXV0ZXgpOwo+PiDCoMKgwqDCoMKgIG1lbXNldChwc3At PmNtZF9idWZfbWVtLCAwLCBQU1BfQ01EX0JVRkZFUl9TSVpFKTsKPj4gQEAgLTI3MSw4ICsyNzcs NyBAQCBwc3BfY21kX3N1Ym1pdF9idWYoc3RydWN0IHBzcF9jb250ZXh0ICpwc3AsCj4+IMKgwqDC oMKgwqAgcmV0ID0gcHNwX3JpbmdfY21kX3N1Ym1pdChwc3AsIHBzcC0+Y21kX2J1Zl9tY19hZGRy LCAKPj4gZmVuY2VfbWNfYWRkciwgaW5kZXgpOwo+PiDCoMKgwqDCoMKgIGlmIChyZXQpIHsKPj4g wqDCoMKgwqDCoMKgwqDCoMKgIGF0b21pY19kZWMoJnBzcC0+ZmVuY2VfdmFsdWUpOwo+PiAtwqDC oMKgwqDCoMKgwqAgbXV0ZXhfdW5sb2NrKCZwc3AtPm11dGV4KTsKPj4gLcKgwqDCoMKgwqDCoMKg IHJldHVybiByZXQ7Cj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIGV4aXQ7Cj4+IMKgwqDCoMKgwqAg fQo+PiDCoMKgwqDCoMKgIGFtZGdwdV9hc2ljX2ludmFsaWRhdGVfaGRwKHBzcC0+YWRldiwgTlVM TCk7Cj4+IEBAIC0zMTIsOCArMzE3LDggQEAgcHNwX2NtZF9zdWJtaXRfYnVmKHN0cnVjdCBwc3Bf Y29udGV4dCAqcHNwLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBzcC0+Y21kX2J1 Zl9tZW0tPmNtZF9pZCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwc3AtPmNtZF9i dWZfbWVtLT5yZXNwLnN0YXR1cyk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIXRpbWVvdXQp IHsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbXV0ZXhfdW5sb2NrKCZwc3AtPm11dGV4KTsK Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHJldCA9IC1FSU5WQUw7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdv dG8gZXhpdDsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gwqDCoMKgwqDCoCB9Cj4+IEBAIC0z MjEsOCArMzI2LDEwIEBAIHBzcF9jbWRfc3VibWl0X2J1ZihzdHJ1Y3QgcHNwX2NvbnRleHQgKnBz cCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHVjb2RlLT50bXJfbWNfYWRkcl9sbyA9IHBzcC0+Y21k X2J1Zl9tZW0tPnJlc3AuZndfYWRkcl9sbzsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHVjb2RlLT50 bXJfbWNfYWRkcl9oaSA9IHBzcC0+Y21kX2J1Zl9tZW0tPnJlc3AuZndfYWRkcl9oaTsKPj4gwqDC oMKgwqDCoCB9Cj4+IC3CoMKgwqAgbXV0ZXhfdW5sb2NrKCZwc3AtPm11dGV4KTsKPj4gK2V4aXQ6 Cj4+ICvCoMKgwqAgbXV0ZXhfdW5sb2NrKCZwc3AtPm11dGV4KTsKPj4gK8KgwqDCoCBkcm1fZGV2 X2V4aXQoaWR4KTsKPj4gwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiDCoCB9Cj4+IEBAIC0zNTks OCArMzY2LDcgQEAgc3RhdGljIGludCBwc3BfbG9hZF90b2Moc3RydWN0IHBzcF9jb250ZXh0ICpw c3AsCj4+IMKgwqDCoMKgwqAgaWYgKCFjbWQpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4g LUVOT01FTTsKPj4gwqDCoMKgwqDCoCAvKiBDb3B5IHRvYyB0byBwc3AgZmlybXdhcmUgcHJpdmF0 ZSBidWZmZXIgKi8KPj4gLcKgwqDCoCBtZW1zZXQocHNwLT5md19wcmlfYnVmLCAwLCBQU1BfMV9N RUcpOwo+PiAtwqDCoMKgIG1lbWNweShwc3AtPmZ3X3ByaV9idWYsIHBzcC0+dG9jX3N0YXJ0X2Fk ZHIsIHBzcC0+dG9jX2Jpbl9zaXplKTsKPj4gK8KgwqDCoCBwc3BfY29weV9mdyhwc3AsIHBzcC0+ dG9jX3N0YXJ0X2FkZHIsIHBzcC0+dG9jX2Jpbl9zaXplKTsKPj4gwqDCoMKgwqDCoCBwc3BfcHJl cF9sb2FkX3RvY19jbWRfYnVmKGNtZCwgcHNwLT5md19wcmlfbWNfYWRkciwgCj4+IHBzcC0+dG9j X2Jpbl9zaXplKTsKPj4gQEAgLTYyNSw4ICs2MzEsNyBAQCBzdGF0aWMgaW50IHBzcF9hc2RfbG9h ZChzdHJ1Y3QgcHNwX2NvbnRleHQgKnBzcCkKPj4gwqDCoMKgwqDCoCBpZiAoIWNtZCkKPj4gwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PTUVNOwo+PiAtwqDCoMKgIG1lbXNldChwc3AtPmZ3 X3ByaV9idWYsIDAsIFBTUF8xX01FRyk7Cj4+IC3CoMKgwqAgbWVtY3B5KHBzcC0+ZndfcHJpX2J1 ZiwgcHNwLT5hc2Rfc3RhcnRfYWRkciwgcHNwLT5hc2RfdWNvZGVfc2l6ZSk7Cj4+ICvCoMKgwqAg cHNwX2NvcHlfZncocHNwLCBwc3AtPmFzZF9zdGFydF9hZGRyLCBwc3AtPmFzZF91Y29kZV9zaXpl KTsKPj4gwqDCoMKgwqDCoCBwc3BfcHJlcF9hc2RfbG9hZF9jbWRfYnVmKGNtZCwgcHNwLT5md19w cmlfbWNfYWRkciwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHNw LT5hc2RfdWNvZGVfc2l6ZSk7Cj4+IEBAIC03ODEsOCArNzg2LDcgQEAgc3RhdGljIGludCBwc3Bf eGdtaV9sb2FkKHN0cnVjdCBwc3BfY29udGV4dCAqcHNwKQo+PiDCoMKgwqDCoMKgIGlmICghY21k KQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9NRU07Cj4+IC3CoMKgwqAgbWVtc2V0 KHBzcC0+ZndfcHJpX2J1ZiwgMCwgUFNQXzFfTUVHKTsKPj4gLcKgwqDCoCBtZW1jcHkocHNwLT5m d19wcmlfYnVmLCBwc3AtPnRhX3hnbWlfc3RhcnRfYWRkciwgCj4+IHBzcC0+dGFfeGdtaV91Y29k ZV9zaXplKTsKPj4gK8KgwqDCoCBwc3BfY29weV9mdyhwc3AsIHBzcC0+dGFfeGdtaV9zdGFydF9h ZGRyLCBwc3AtPnRhX3hnbWlfdWNvZGVfc2l6ZSk7Cj4+IMKgwqDCoMKgwqAgcHNwX3ByZXBfdGFf bG9hZF9jbWRfYnVmKGNtZCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHBzcC0+ZndfcHJpX21jX2FkZHIsCj4+IEBAIC0xMDM4LDggKzEwNDIsNyBAQCBzdGF0aWMgaW50 IHBzcF9yYXNfbG9hZChzdHJ1Y3QgcHNwX2NvbnRleHQgKnBzcCkKPj4gwqDCoMKgwqDCoCBpZiAo IWNtZCkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PTUVNOwo+PiAtwqDCoMKgIG1l bXNldChwc3AtPmZ3X3ByaV9idWYsIDAsIFBTUF8xX01FRyk7Cj4+IC3CoMKgwqAgbWVtY3B5KHBz cC0+ZndfcHJpX2J1ZiwgcHNwLT50YV9yYXNfc3RhcnRfYWRkciwgCj4+IHBzcC0+dGFfcmFzX3Vj b2RlX3NpemUpOwo+PiArwqDCoMKgIHBzcF9jb3B5X2Z3KHBzcCwgcHNwLT50YV9yYXNfc3RhcnRf YWRkciwgcHNwLT50YV9yYXNfdWNvZGVfc2l6ZSk7Cj4+IMKgwqDCoMKgwqAgcHNwX3ByZXBfdGFf bG9hZF9jbWRfYnVmKGNtZCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHBzcC0+ZndfcHJpX21jX2FkZHIsCj4+IEBAIC0xMjc1LDggKzEyNzgsNyBAQCBzdGF0aWMgaW50 IHBzcF9oZGNwX2xvYWQoc3RydWN0IHBzcF9jb250ZXh0ICpwc3ApCj4+IMKgwqDCoMKgwqAgaWYg KCFjbWQpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT01FTTsKPj4gLcKgwqDCoCBt ZW1zZXQocHNwLT5md19wcmlfYnVmLCAwLCBQU1BfMV9NRUcpOwo+PiAtwqDCoMKgIG1lbWNweShw c3AtPmZ3X3ByaV9idWYsIHBzcC0+dGFfaGRjcF9zdGFydF9hZGRyLAo+PiArwqDCoMKgIHBzcF9j b3B5X2Z3KHBzcCwgcHNwLT50YV9oZGNwX3N0YXJ0X2FkZHIsCj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBwc3AtPnRhX2hkY3BfdWNvZGVfc2l6ZSk7Cj4+IMKgwqDCoMKgwqAgcHNwX3ByZXBf dGFfbG9hZF9jbWRfYnVmKGNtZCwKPj4gQEAgLTE0MjcsOCArMTQyOSw3IEBAIHN0YXRpYyBpbnQg cHNwX2R0bV9sb2FkKHN0cnVjdCBwc3BfY29udGV4dCAqcHNwKQo+PiDCoMKgwqDCoMKgIGlmICgh Y21kKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9NRU07Cj4+IC3CoMKgwqAgbWVt c2V0KHBzcC0+ZndfcHJpX2J1ZiwgMCwgUFNQXzFfTUVHKTsKPj4gLcKgwqDCoCBtZW1jcHkocHNw LT5md19wcmlfYnVmLCBwc3AtPnRhX2R0bV9zdGFydF9hZGRyLCAKPj4gcHNwLT50YV9kdG1fdWNv ZGVfc2l6ZSk7Cj4+ICvCoMKgwqAgcHNwX2NvcHlfZncocHNwLCBwc3AtPnRhX2R0bV9zdGFydF9h ZGRyLCBwc3AtPnRhX2R0bV91Y29kZV9zaXplKTsKPj4gwqDCoMKgwqDCoCBwc3BfcHJlcF90YV9s b2FkX2NtZF9idWYoY21kLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg cHNwLT5md19wcmlfbWNfYWRkciwKPj4gQEAgLTE1NzMsOCArMTU3NCw3IEBAIHN0YXRpYyBpbnQg cHNwX3JhcF9sb2FkKHN0cnVjdCBwc3BfY29udGV4dCAqcHNwKQo+PiDCoMKgwqDCoMKgIGlmICgh Y21kKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9NRU07Cj4+IC3CoMKgwqAgbWVt c2V0KHBzcC0+ZndfcHJpX2J1ZiwgMCwgUFNQXzFfTUVHKTsKPj4gLcKgwqDCoCBtZW1jcHkocHNw LT5md19wcmlfYnVmLCBwc3AtPnRhX3JhcF9zdGFydF9hZGRyLCAKPj4gcHNwLT50YV9yYXBfdWNv ZGVfc2l6ZSk7Cj4+ICvCoMKgwqAgcHNwX2NvcHlfZncocHNwLCBwc3AtPnRhX3JhcF9zdGFydF9h ZGRyLCBwc3AtPnRhX3JhcF91Y29kZV9zaXplKTsKPj4gwqDCoMKgwqDCoCBwc3BfcHJlcF90YV9s b2FkX2NtZF9idWYoY21kLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg cHNwLT5md19wcmlfbWNfYWRkciwKPj4gQEAgLTMwMjIsNyArMzAyMiw3IEBAIHN0YXRpYyBzc2l6 ZV90IHBzcF91c2JjX3BkX2Z3X3N5c2ZzX3dyaXRlKHN0cnVjdCAKPj4gZGV2aWNlICpkZXYsCj4+ IMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBkcm1fdG9fYWRldihkZGV2 KTsKPj4gwqDCoMKgwqDCoCB2b2lkICpjcHVfYWRkcjsKPj4gwqDCoMKgwqDCoCBkbWFfYWRkcl90 IGRtYV9hZGRyOwo+PiAtwqDCoMKgIGludCByZXQ7Cj4+ICvCoMKgwqAgaW50IHJldCwgaWR4Owo+ PiDCoMKgwqDCoMKgIGNoYXIgZndfbmFtZVsxMDBdOwo+PiDCoMKgwqDCoMKgIGNvbnN0IHN0cnVj dCBmaXJtd2FyZSAqdXNiY19wZF9mdzsKPj4gQEAgLTMwMzEsNiArMzAzMSw5IEBAIHN0YXRpYyBz c2l6ZV90IHBzcF91c2JjX3BkX2Z3X3N5c2ZzX3dyaXRlKHN0cnVjdCAKPj4gZGV2aWNlICpkZXYs Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVCVVNZOwo+PiDCoMKgwqDCoMKgIH0KPj4g K8KgwqDCoCBpZiAoIWRybV9kZXZfZW50ZXIoZGRldiwgJmlkeCkpCj4+ICvCoMKgwqDCoMKgwqDC oCByZXR1cm4gLUVOT0RFVjsKPj4gKwo+PiDCoMKgwqDCoMKgIHNucHJpbnRmKGZ3X25hbWUsIHNp emVvZihmd19uYW1lKSwgImFtZGdwdS8lcyIsIGJ1Zik7Cj4+IMKgwqDCoMKgwqAgcmV0ID0gcmVx dWVzdF9maXJtd2FyZSgmdXNiY19wZF9mdywgZndfbmFtZSwgYWRldi0+ZGV2KTsKPj4gwqDCoMKg wqDCoCBpZiAocmV0KQo+PiBAQCAtMzA2MiwxNiArMzA2NSwzMCBAQCBzdGF0aWMgc3NpemVfdCAK Pj4gcHNwX3VzYmNfcGRfZndfc3lzZnNfd3JpdGUoc3RydWN0IGRldmljZSAqZGV2LAo+PiDCoCBy ZWxfYnVmOgo+PiDCoMKgwqDCoMKgIGRtYV9mcmVlX2NvaGVyZW50KGFkZXYtPmRldiwgdXNiY19w ZF9mdy0+c2l6ZSwgY3B1X2FkZHIsIGRtYV9hZGRyKTsKPj4gwqDCoMKgwqDCoCByZWxlYXNlX2Zp cm13YXJlKHVzYmNfcGRfZncpOwo+PiAtCj4+IMKgIGZhaWw6Cj4+IMKgwqDCoMKgwqAgaWYgKHJl dCkgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX0VSUk9SKCJGYWlsZWQgdG8gbG9hZCBVU0JD IFBEIEZXLCBlcnIgPSAlZCIsIHJldCk7Cj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+ PiArwqDCoMKgwqDCoMKgwqAgY291bnQgPSByZXQ7Cj4+IMKgwqDCoMKgwqAgfQo+PiArwqDCoMKg IGRybV9kZXZfZXhpdChpZHgpOwo+PiDCoMKgwqDCoMKgIHJldHVybiBjb3VudDsKPj4gwqAgfQo+ PiArdm9pZCBwc3BfY29weV9mdyhzdHJ1Y3QgcHNwX2NvbnRleHQgKnBzcCwgdWludDhfdCAqc3Rh cnRfYWRkciwgCj4+IHVpbnQzMl90IGJpbl9zaXplKQo+PiArewo+PiArwqDCoMKgIGludCBpZHg7 Cj4+ICsKPj4gK8KgwqDCoCBpZiAoIWRybV9kZXZfZW50ZXIoJnBzcC0+YWRldi0+ZGRldiwgJmlk eCkpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+ICsKPj4gK8KgwqDCoCBtZW1zZXQocHNw LT5md19wcmlfYnVmLCAwLCBQU1BfMV9NRUcpOwo+PiArwqDCoMKgIG1lbWNweShwc3AtPmZ3X3By aV9idWYsIHN0YXJ0X2FkZHIsIGJpbl9zaXplKTsKPj4gKwo+PiArwqDCoMKgIGRybV9kZXZfZXhp dChpZHgpOwo+PiArfQo+PiArCj4+ICsKPj4gwqAgc3RhdGljIERFVklDRV9BVFRSKHVzYmNfcGRf ZncsIFNfSVJVR08gfCBTX0lXVVNSLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHNwX3Vz YmNfcGRfZndfc3lzZnNfcmVhZCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBzcF91c2Jj X3BkX2Z3X3N5c2ZzX3dyaXRlKTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9wc3AuaCAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfcHNwLmgKPj4gaW5kZXggNDZhNTMyOGUwMGUwLi4yYmZkYzI3ODgxN2YgMTAwNjQ0Cj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuaAo+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmgKPj4gQEAgLTQyMyw0ICs0MjMsNiBA QCBpbnQgcHNwX2dldF9md19hdHRlc3RhdGlvbl9yZWNvcmRzX2FkZHIoc3RydWN0IAo+PiBwc3Bf Y29udGV4dCAqcHNwLAo+PiDCoCBpbnQgcHNwX2xvYWRfZndfbGlzdChzdHJ1Y3QgcHNwX2NvbnRl eHQgKnBzcCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2Zp cm13YXJlX2luZm8gKip1Y29kZV9saXN0LCBpbnQgCj4+IHVjb2RlX2NvdW50KTsKPj4gK3ZvaWQg cHNwX2NvcHlfZncoc3RydWN0IHBzcF9jb250ZXh0ICpwc3AsIHVpbnQ4X3QgKnN0YXJ0X2FkZHIs IAo+PiB1aW50MzJfdCBiaW5fc2l6ZSk7Cj4+ICsKPj4gwqAgI2VuZGlmCj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmluZy5jIAo+PiBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmMKPj4gaW5kZXggNjg4NjI0ZWJlNDIxLi5l MTk4NWJjMzQ0MzYgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9yaW5nLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jp bmcuYwo+PiBAQCAtMzUsNiArMzUsOCBAQAo+PiDCoCAjaW5jbHVkZSAiYW1kZ3B1LmgiCj4+IMKg ICNpbmNsdWRlICJhdG9tLmgiCj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4KPj4gKwo+PiDC oCAvKgo+PiDCoMKgICogUmluZ3MKPj4gwqDCoCAqIE1vc3QgZW5naW5lcyBvbiB0aGUgR1BVIGFy ZSBmZWQgdmlhIHJpbmcgYnVmZmVycy7CoCBSaW5nCj4+IEBAIC00NjEsMyArNDYzLDcxIEBAIGlu dCBhbWRncHVfcmluZ190ZXN0X2hlbHBlcihzdHJ1Y3QgYW1kZ3B1X3JpbmcgCj4+ICpyaW5nKQo+ PiDCoMKgwqDCoMKgIHJpbmctPnNjaGVkLnJlYWR5ID0gIXI7Cj4+IMKgwqDCoMKgwqAgcmV0dXJu IHI7Cj4+IMKgIH0KPj4gKwo+PiArdm9pZCBhbWRncHVfcmluZ19jbGVhcl9yaW5nKHN0cnVjdCBh bWRncHVfcmluZyAqcmluZykKPj4gK3sKPj4gK8KgwqDCoCBpbnQgaWR4Owo+PiArwqDCoMKgIGlu dCBpID0gMDsKPj4gKwo+PiArwqDCoMKgIGlmICghZHJtX2Rldl9lbnRlcigmcmluZy0+YWRldi0+ ZGRldiwgJmlkeCkpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+ICsKPj4gK8KgwqDCoCB3 aGlsZSAoaSA8PSByaW5nLT5idWZfbWFzaykKPj4gK8KgwqDCoMKgwqDCoMKgIHJpbmctPnJpbmdb aSsrXSA9IHJpbmctPmZ1bmNzLT5ub3A7Cj4+ICsKPj4gK8KgwqDCoCBkcm1fZGV2X2V4aXQoaWR4 KTsKPj4gKwo+PiArfQo+PiArCj4+ICt2b2lkIGFtZGdwdV9yaW5nX3dyaXRlKHN0cnVjdCBhbWRn cHVfcmluZyAqcmluZywgdWludDMyX3QgdikKPj4gK3sKPj4gK8KgwqDCoCBpbnQgaWR4Owo+PiAr Cj4+ICvCoMKgwqAgaWYgKCFkcm1fZGV2X2VudGVyKCZyaW5nLT5hZGV2LT5kZGV2LCAmaWR4KSkK Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4gKwo+PiArwqDCoMKgIGlmIChyaW5nLT5jb3Vu dF9kdyA8PSAwKQo+PiArwqDCoMKgwqDCoMKgwqAgRFJNX0VSUk9SKCJhbWRncHU6IHdyaXRpbmcg bW9yZSBkd29yZHMgdG8gdGhlIHJpbmcgdGhhbiAKPj4gZXhwZWN0ZWQhXG4iKTsKPj4gK8KgwqDC oCByaW5nLT5yaW5nW3JpbmctPndwdHIrKyAmIHJpbmctPmJ1Zl9tYXNrXSA9IHY7Cj4+ICvCoMKg wqAgcmluZy0+d3B0ciAmPSByaW5nLT5wdHJfbWFzazsKPj4gK8KgwqDCoCByaW5nLT5jb3VudF9k dy0tOwo+PiArCj4+ICvCoMKgwqAgZHJtX2Rldl9leGl0KGlkeCk7Cj4+ICt9Cj4+ICsKPj4gK3Zv aWQgYW1kZ3B1X3Jpbmdfd3JpdGVfbXVsdGlwbGUoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdm9p ZCAqc3JjLCBpbnQgY291bnRfZHcpCj4+ICt7Cj4+ICvCoMKgwqAgdW5zaWduZWQgb2NjdXBpZWQs IGNodW5rMSwgY2h1bmsyOwo+PiArwqDCoMKgIHZvaWQgKmRzdDsKPj4gK8KgwqDCoCBpbnQgaWR4 Owo+PiArCj4+ICvCoMKgwqAgaWYgKCFkcm1fZGV2X2VudGVyKCZyaW5nLT5hZGV2LT5kZGV2LCAm aWR4KSkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4gKwo+PiArwqDCoMKgIGlmICh1bmxp a2VseShyaW5nLT5jb3VudF9kdyA8IGNvdW50X2R3KSkKPj4gK8KgwqDCoMKgwqDCoMKgIERSTV9F UlJPUigiYW1kZ3B1OiB3cml0aW5nIG1vcmUgZHdvcmRzIHRvIHRoZSByaW5nIHRoYW4gCj4+IGV4 cGVjdGVkIVxuIik7Cj4+ICsKPj4gK8KgwqDCoCBvY2N1cGllZCA9IHJpbmctPndwdHIgJiByaW5n LT5idWZfbWFzazsKPj4gK8KgwqDCoCBkc3QgPSAodm9pZCAqKSZyaW5nLT5yaW5nW29jY3VwaWVk XTsKPj4gK8KgwqDCoCBjaHVuazEgPSByaW5nLT5idWZfbWFzayArIDEgLSBvY2N1cGllZDsKPj4g K8KgwqDCoCBjaHVuazEgPSAoY2h1bmsxID49IGNvdW50X2R3KSA/IGNvdW50X2R3OiBjaHVuazE7 Cj4+ICvCoMKgwqAgY2h1bmsyID0gY291bnRfZHcgLSBjaHVuazE7Cj4+ICvCoMKgwqAgY2h1bmsx IDw8PSAyOwo+PiArwqDCoMKgIGNodW5rMiA8PD0gMjsKPj4gKwo+PiArwqDCoMKgIGlmIChjaHVu azEpCj4+ICvCoMKgwqDCoMKgwqDCoCBtZW1jcHkoZHN0LCBzcmMsIGNodW5rMSk7Cj4+ICsKPj4g K8KgwqDCoCBpZiAoY2h1bmsyKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBzcmMgKz0gY2h1bmsxOwo+ PiArwqDCoMKgwqDCoMKgwqAgZHN0ID0gKHZvaWQgKilyaW5nLT5yaW5nOwo+PiArwqDCoMKgwqDC oMKgwqAgbWVtY3B5KGRzdCwgc3JjLCBjaHVuazIpOwo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDC oMKgIHJpbmctPndwdHIgKz0gY291bnRfZHc7Cj4+ICvCoMKgwqAgcmluZy0+d3B0ciAmPSByaW5n LT5wdHJfbWFzazsKPj4gK8KgwqDCoCByaW5nLT5jb3VudF9kdyAtPSBjb3VudF9kdzsKPj4gKwo+ PiArwqDCoMKgIGRybV9kZXZfZXhpdChpZHgpOwo+PiArfQo+IAo+IFRoZSByaW5nIHNob3VsZCBu ZXZlciB3ZSBpbiBNTUlPIG1lbW9yeSwgc28geW91IGNhbiBjb21wbGV0ZWx5IGRyb3AgdGhhdCAK PiBhcyBmYXIgYXMgSSBjYW4gc2VlLgoKWWVhLCBpdCdzIGluIGFsbCBpbiBHQVJULCBtaXNzZWQg aXQgZm9yIHNvbWUgcmVhc29uLi4uCj4gCj4gTWF5YmUgc3BsaXQgdGhhdCBwYXRjaCBieSB1c2Ug Y2FzZSBzbyB0aGF0IHdlIGNhbiBtb3JlIGVhc2lseSByZXZpZXcvYWNrIAo+IGl0LgoKSW4gZmFj dCBldmVyeXRoaW5nIGhlcmUgaXMgdGhlIHNhbWUgdXNlIGNhc2UsIG9uY2UgSSBhZGRlZCB1bm1h cCBvZgphbGwgTU1JTyByYW5nZXMgKGJvdGggcmVnaXN0ZXJzIGFubiBWUkFNKSBpIGdvdCBhIGxv dCBvZiBwYWdlIGZhdWx0cwpvbiBkZXZpY2UgcmVtb3ZlIGFyb3VuZCBhbnkgbWVtY3B5IHRvIGZy b20gSU8uIFRoYXQgd2hlcmUgSSBwdXQgdGhlCmRybl9kZXZfZW50ZXIvZXhpdCBzY29wZS4gQWxz byBJIHNlYXJjaGVkIGluIGNvZGUgYW5kIHByZWVtZXB0aXZseQphZGRlZCBndWFyZHMgdG8gYW55 IG90aGVyIHN1Y2ggcGxhY2UuIEkgZGlkIGRyb3AgYW1kZ3B1X3NjaGVkdWxlX2liCmZyb20gdGhp cyBwYXRjaCBib3RoIGJlY2F1c2UgaXQgaGFkIGRtYV9mZW5jZV93YWl0IGluc2lkZSBhbmQgc28g d2UKd2lsbCB0YWtlIGNhcmUgb2YgdGhpcyBvbmNlIHdlIGRlY2lkZSBvbiBob3cgdG8gaGFuZGxl IGRtYV9mZW5jZSB3YWl0cy4KCkFuZHJleQoKPiAKPiBUaGFua3MsCj4gQ2hyaXN0aWFuLgo+IAo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuaCAK Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmluZy5oCj4+IGluZGV4IGU3 ZDNkMGRiZGQ5Ni4uYzY3YmM2ZDNkMDM5IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfcmluZy5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9yaW5nLmgKPj4gQEAgLTI5OSw1MyArMjk5LDEyIEBAIHN0YXRpYyBpbmxpbmUg dm9pZCAKPj4gYW1kZ3B1X3Jpbmdfc2V0X3ByZWVtcHRfY29uZF9leGVjKHN0cnVjdCBhbWRncHVf cmluZyAqcmluZywKPj4gwqDCoMKgwqDCoCAqcmluZy0+Y29uZF9leGVfY3B1X2FkZHIgPSBjb25k X2V4ZWM7Cj4+IMKgIH0KPj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBhbWRncHVfcmluZ19jbGVhcl9y aW5nKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZykKPj4gLXsKPj4gLcKgwqDCoCBpbnQgaSA9IDA7 Cj4+IC3CoMKgwqAgd2hpbGUgKGkgPD0gcmluZy0+YnVmX21hc2spCj4+IC3CoMKgwqDCoMKgwqDC oCByaW5nLT5yaW5nW2krK10gPSByaW5nLT5mdW5jcy0+bm9wOwo+PiAtCj4+IC19Cj4+IC0KPj4g LXN0YXRpYyBpbmxpbmUgdm9pZCBhbWRncHVfcmluZ193cml0ZShzdHJ1Y3QgYW1kZ3B1X3Jpbmcg KnJpbmcsIAo+PiB1aW50MzJfdCB2KQo+PiAtewo+PiAtwqDCoMKgIGlmIChyaW5nLT5jb3VudF9k dyA8PSAwKQo+PiAtwqDCoMKgwqDCoMKgwqAgRFJNX0VSUk9SKCJhbWRncHU6IHdyaXRpbmcgbW9y ZSBkd29yZHMgdG8gdGhlIHJpbmcgdGhhbiAKPj4gZXhwZWN0ZWQhXG4iKTsKPj4gLcKgwqDCoCBy aW5nLT5yaW5nW3JpbmctPndwdHIrKyAmIHJpbmctPmJ1Zl9tYXNrXSA9IHY7Cj4+IC3CoMKgwqAg cmluZy0+d3B0ciAmPSByaW5nLT5wdHJfbWFzazsKPj4gLcKgwqDCoCByaW5nLT5jb3VudF9kdy0t Owo+PiAtfQo+PiArdm9pZCBhbWRncHVfcmluZ19jbGVhcl9yaW5nKHN0cnVjdCBhbWRncHVfcmlu ZyAqcmluZyk7Cj4+IC1zdGF0aWMgaW5saW5lIHZvaWQgYW1kZ3B1X3Jpbmdfd3JpdGVfbXVsdGlw bGUoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdm9pZCAqc3JjLCBpbnQgY291bnRfZHcpCj4+IC17 Cj4+IC3CoMKgwqAgdW5zaWduZWQgb2NjdXBpZWQsIGNodW5rMSwgY2h1bmsyOwo+PiAtwqDCoMKg IHZvaWQgKmRzdDsKPj4gLQo+PiAtwqDCoMKgIGlmICh1bmxpa2VseShyaW5nLT5jb3VudF9kdyA8 IGNvdW50X2R3KSkKPj4gLcKgwqDCoMKgwqDCoMKgIERSTV9FUlJPUigiYW1kZ3B1OiB3cml0aW5n IG1vcmUgZHdvcmRzIHRvIHRoZSByaW5nIHRoYW4gCj4+IGV4cGVjdGVkIVxuIik7Cj4+IC0KPj4g LcKgwqDCoCBvY2N1cGllZCA9IHJpbmctPndwdHIgJiByaW5nLT5idWZfbWFzazsKPj4gLcKgwqDC oCBkc3QgPSAodm9pZCAqKSZyaW5nLT5yaW5nW29jY3VwaWVkXTsKPj4gLcKgwqDCoCBjaHVuazEg PSByaW5nLT5idWZfbWFzayArIDEgLSBvY2N1cGllZDsKPj4gLcKgwqDCoCBjaHVuazEgPSAoY2h1 bmsxID49IGNvdW50X2R3KSA/IGNvdW50X2R3OiBjaHVuazE7Cj4+IC3CoMKgwqAgY2h1bmsyID0g Y291bnRfZHcgLSBjaHVuazE7Cj4+IC3CoMKgwqAgY2h1bmsxIDw8PSAyOwo+PiAtwqDCoMKgIGNo dW5rMiA8PD0gMjsKPj4gK3ZvaWQgYW1kZ3B1X3Jpbmdfd3JpdGUoc3RydWN0IGFtZGdwdV9yaW5n ICpyaW5nLCB1aW50MzJfdCB2KTsKPj4gLcKgwqDCoCBpZiAoY2h1bmsxKQo+PiAtwqDCoMKgwqDC oMKgwqAgbWVtY3B5KGRzdCwgc3JjLCBjaHVuazEpOwo+PiAtCj4+IC3CoMKgwqAgaWYgKGNodW5r Mikgewo+PiAtwqDCoMKgwqDCoMKgwqAgc3JjICs9IGNodW5rMTsKPj4gLcKgwqDCoMKgwqDCoMKg IGRzdCA9ICh2b2lkICopcmluZy0+cmluZzsKPj4gLcKgwqDCoMKgwqDCoMKgIG1lbWNweShkc3Qs IHNyYywgY2h1bmsyKTsKPj4gLcKgwqDCoCB9Cj4+IC0KPj4gLcKgwqDCoCByaW5nLT53cHRyICs9 IGNvdW50X2R3Owo+PiAtwqDCoMKgIHJpbmctPndwdHIgJj0gcmluZy0+cHRyX21hc2s7Cj4+IC3C oMKgwqAgcmluZy0+Y291bnRfZHcgLT0gY291bnRfZHc7Cj4+IC19Cj4+ICt2b2lkIGFtZGdwdV9y aW5nX3dyaXRlX211bHRpcGxlKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZvaWQgKnNyYywgaW50 IGNvdW50X2R3KTsKPj4gwqAgaW50IGFtZGdwdV9yaW5nX3Rlc3RfaGVscGVyKHN0cnVjdCBhbWRn cHVfcmluZyAqcmluZyk7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfdXZkLmMgCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3V2 ZC5jCj4+IGluZGV4IGM2ZGJjMDgwMTYwNC4uODJmMDU0MmM3NzkyIDEwMDY0NAo+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXZkLmMKPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3V2ZC5jCj4+IEBAIC0zMiw2ICszMiw3IEBACj4+IMKg ICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPj4gwqAgI2luY2x1ZGUgPGRybS9kcm0uaD4KPj4g KyNpbmNsdWRlIDxkcm0vZHJtX2Rydi5oPgo+PiDCoCAjaW5jbHVkZSAiYW1kZ3B1LmgiCj4+IMKg ICNpbmNsdWRlICJhbWRncHVfcG0uaCIKPj4gQEAgLTM3NSw3ICszNzYsNyBAQCBpbnQgYW1kZ3B1 X3V2ZF9zdXNwZW5kKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+PiDCoCB7Cj4+IMKgwqDC oMKgwqAgdW5zaWduZWQgc2l6ZTsKPj4gwqDCoMKgwqDCoCB2b2lkICpwdHI7Cj4+IC3CoMKgwqAg aW50IGksIGo7Cj4+ICvCoMKgwqAgaW50IGksIGosIGlkeDsKPj4gwqDCoMKgwqDCoCBib29sIGlu X3Jhc19pbnRyID0gYW1kZ3B1X3Jhc19pbnRyX3RyaWdnZXJlZCgpOwo+PiDCoMKgwqDCoMKgIGNh bmNlbF9kZWxheWVkX3dvcmtfc3luYygmYWRldi0+dXZkLmlkbGVfd29yayk7Cj4+IEBAIC00MDMs MTEgKzQwNCwxNSBAQCBpbnQgYW1kZ3B1X3V2ZF9zdXNwZW5kKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2KQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFhZGV2LT51dmQuaW5zdFtqXS5zYXZl ZF9ibykKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9NRU07Cj4+IC3C oMKgwqDCoMKgwqDCoCAvKiByZS13cml0ZSAwIHNpbmNlIGVycl9ldmVudF9hdGh1YiB3aWxsIGNv cnJ1cHQgVkNQVSBidWZmZXIgKi8KPj4gLcKgwqDCoMKgwqDCoMKgIGlmIChpbl9yYXNfaW50cikK Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbWVtc2V0KGFkZXYtPnV2ZC5pbnN0W2pdLnNhdmVk X2JvLCAwLCBzaXplKTsKPj4gLcKgwqDCoMKgwqDCoMKgIGVsc2UKPj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgbWVtY3B5X2Zyb21pbyhhZGV2LT51dmQuaW5zdFtqXS5zYXZlZF9ibywgcHRyLCBz aXplKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChkcm1fZGV2X2VudGVyKCZhZGV2LT5kZGV2LCAm aWR4KSkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiByZS13cml0ZSAwIHNpbmNlIGVy cl9ldmVudF9hdGh1YiB3aWxsIGNvcnJ1cHQgVkNQVSAKPj4gYnVmZmVyICovCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGlmIChpbl9yYXNfaW50cikKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBtZW1zZXQoYWRldi0+dXZkLmluc3Rbal0uc2F2ZWRfYm8sIDAsIHNpemUpOwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbHNlCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgbWVtY3B5X2Zyb21pbyhhZGV2LT51dmQuaW5zdFtqXS5zYXZlZF9ibywgcHRyLCBz aXplKTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcm1fZGV2X2V4aXQoaWR4KTsK Pj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gwqDCoMKgwqDCoCB9Cj4+IMKgwqDCoMKgwqAgaWYgKGlu X3Jhc19pbnRyKQo+PiBAQCAtNDIwLDcgKzQyNSw3IEBAIGludCBhbWRncHVfdXZkX3Jlc3VtZShz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPj4gwqAgewo+PiDCoMKgwqDCoMKgIHVuc2lnbmVk IHNpemU7Cj4+IMKgwqDCoMKgwqAgdm9pZCAqcHRyOwo+PiAtwqDCoMKgIGludCBpOwo+PiArwqDC oMKgIGludCBpLCBpZHg7Cj4+IMKgwqDCoMKgwqAgZm9yIChpID0gMDsgaSA8IGFkZXYtPnV2ZC5u dW1fdXZkX2luc3Q7IGkrKykgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGFkZXYtPnV2ZC5o YXJ2ZXN0X2NvbmZpZyAmICgxIDw8IGkpKQo+PiBAQCAtNDMyLDcgKzQzNywxMCBAQCBpbnQgYW1k Z3B1X3V2ZF9yZXN1bWUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4+IMKgwqDCoMKgwqDC oMKgwqDCoCBwdHIgPSBhZGV2LT51dmQuaW5zdFtpXS5jcHVfYWRkcjsKPj4gwqDCoMKgwqDCoMKg wqDCoMKgIGlmIChhZGV2LT51dmQuaW5zdFtpXS5zYXZlZF9ibyAhPSBOVUxMKSB7Cj4+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgIG1lbWNweV90b2lvKHB0ciwgYWRldi0+dXZkLmluc3RbaV0uc2F2 ZWRfYm8sIHNpemUpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZHJtX2Rldl9lbnRl cigmYWRldi0+ZGRldiwgJmlkeCkpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBtZW1jcHlfdG9pbyhwdHIsIGFkZXYtPnV2ZC5pbnN0W2ldLnNhdmVkX2JvLCBzaXplKTsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcm1fZGV2X2V4aXQoaWR4KTsKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBrdmZy ZWUoYWRldi0+dXZkLmluc3RbaV0uc2F2ZWRfYm8pOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBhZGV2LT51dmQuaW5zdFtpXS5zYXZlZF9ibyA9IE5VTEw7Cj4+IMKgwqDCoMKgwqDCoMKg wqDCoCB9IGVsc2Ugewo+PiBAQCAtNDQyLDggKzQ1MCwxMSBAQCBpbnQgYW1kZ3B1X3V2ZF9yZXN1 bWUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGhkciA9IChjb25zdCBzdHJ1Y3QgY29tbW9uX2Zpcm13YXJlX2hlYWRlciAKPj4gKilhZGV2 LT51dmQuZnctPmRhdGE7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChhZGV2LT5m aXJtd2FyZS5sb2FkX3R5cGUgIT0gQU1ER1BVX0ZXX0xPQURfUFNQKSB7Cj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb2Zmc2V0ID0gbGUzMl90b19jcHUoaGRyLT51Y29kZV9h cnJheV9vZmZzZXRfYnl0ZXMpOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1l bWNweV90b2lvKGFkZXYtPnV2ZC5pbnN0W2ldLmNwdV9hZGRyLCAKPj4gYWRldi0+dXZkLmZ3LT5k YXRhICsgb2Zmc2V0LAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBsZTMyX3RvX2NwdShoZHItPnVjb2RlX3NpemVfYnl0ZXMpKTsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZHJtX2Rldl9lbnRlcigmYWRldi0+ZGRldiwgJmlk eCkpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1lbWNweV90 b2lvKGFkZXYtPnV2ZC5pbnN0W2ldLmNwdV9hZGRyLCAKPj4gYWRldi0+dXZkLmZ3LT5kYXRhICsg b2Zmc2V0LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGxlMzJfdG9fY3B1KGhkci0+dWNvZGVfc2l6ZV9ieXRlcykpOwo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJtX2Rldl9leGl0KGlkeCk7Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHNpemUgLT0gbGUzMl90b19jcHUoaGRyLT51Y29kZV9zaXplX2J5dGVzKTsK Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwdHIgKz0gbGUzMl90b19jcHUo aGRyLT51Y29kZV9zaXplX2J5dGVzKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZjZS5jIAo+ PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92Y2UuYwo+PiBpbmRleCBlYTZh NjJmNjdlMzguLjgzMzIwMzQwMWVmNCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3ZjZS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV92Y2UuYwo+PiBAQCAtMjksNiArMjksNyBAQAo+PiDCoCAjaW5jbHVkZSA8bGludXgv bW9kdWxlLmg+Cj4+IMKgICNpbmNsdWRlIDxkcm0vZHJtLmg+Cj4+ICsjaW5jbHVkZSA8ZHJtL2Ry bV9kcnYuaD4KPj4gwqAgI2luY2x1ZGUgImFtZGdwdS5oIgo+PiDCoCAjaW5jbHVkZSAiYW1kZ3B1 X3BtLmgiCj4+IEBAIC0yOTMsNyArMjk0LDcgQEAgaW50IGFtZGdwdV92Y2VfcmVzdW1lKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2KQo+PiDCoMKgwqDCoMKgIHZvaWQgKmNwdV9hZGRyOwo+PiDC oMKgwqDCoMKgIGNvbnN0IHN0cnVjdCBjb21tb25fZmlybXdhcmVfaGVhZGVyICpoZHI7Cj4+IMKg wqDCoMKgwqAgdW5zaWduZWQgb2Zmc2V0Owo+PiAtwqDCoMKgIGludCByOwo+PiArwqDCoMKgIGlu dCByLCBpZHg7Cj4+IMKgwqDCoMKgwqAgaWYgKGFkZXYtPnZjZS52Y3B1X2JvID09IE5VTEwpCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPj4gQEAgLTMxMyw4ICszMTQsMTIg QEAgaW50IGFtZGdwdV92Y2VfcmVzdW1lKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+PiDC oMKgwqDCoMKgIGhkciA9IChjb25zdCBzdHJ1Y3QgY29tbW9uX2Zpcm13YXJlX2hlYWRlciAqKWFk ZXYtPnZjZS5mdy0+ZGF0YTsKPj4gwqDCoMKgwqDCoCBvZmZzZXQgPSBsZTMyX3RvX2NwdShoZHIt PnVjb2RlX2FycmF5X29mZnNldF9ieXRlcyk7Cj4+IC3CoMKgwqAgbWVtY3B5X3RvaW8oY3B1X2Fk ZHIsIGFkZXYtPnZjZS5mdy0+ZGF0YSArIG9mZnNldCwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgYWRldi0+dmNlLmZ3LT5zaXplIC0gb2Zmc2V0KTsKPj4gKwo+PiArwqDCoMKgIGlmIChkcm1f ZGV2X2VudGVyKCZhZGV2LT5kZGV2LCAmaWR4KSkgewo+PiArwqDCoMKgwqDCoMKgwqAgbWVtY3B5 X3RvaW8oY3B1X2FkZHIsIGFkZXYtPnZjZS5mdy0+ZGF0YSArIG9mZnNldCwKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhZGV2LT52Y2UuZnctPnNpemUgLSBvZmZzZXQpOwo+PiAr wqDCoMKgwqDCoMKgwqAgZHJtX2Rldl9leGl0KGlkeCk7Cj4+ICvCoMKgwqAgfQo+PiDCoMKgwqDC oMKgIGFtZGdwdV9ib19rdW5tYXAoYWRldi0+dmNlLnZjcHVfYm8pOwo+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Zjbi5jIAo+PiBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92Y24uYwo+PiBpbmRleCAyMDE2NDU5NjNiYTUuLjIxZjdk MzY0NGQ3MCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X3Zjbi5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92Y24uYwo+ PiBAQCAtMjcsNiArMjcsNyBAQAo+PiDCoCAjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KPj4g wqAgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+PiDCoCAjaW5jbHVkZSA8bGludXgvcGNpLmg+ Cj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4KPj4gwqAgI2luY2x1ZGUgImFtZGdwdS5oIgo+ PiDCoCAjaW5jbHVkZSAiYW1kZ3B1X3BtLmgiCj4+IEBAIC0yNzUsNyArMjc2LDcgQEAgaW50IGFt ZGdwdV92Y25fc3VzcGVuZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPj4gwqAgewo+PiDC oMKgwqDCoMKgIHVuc2lnbmVkIHNpemU7Cj4+IMKgwqDCoMKgwqAgdm9pZCAqcHRyOwo+PiAtwqDC oMKgIGludCBpOwo+PiArwqDCoMKgIGludCBpLCBpZHg7Cj4+IMKgwqDCoMKgwqAgY2FuY2VsX2Rl bGF5ZWRfd29ya19zeW5jKCZhZGV2LT52Y24uaWRsZV93b3JrKTsKPj4gQEAgLTI5Miw3ICsyOTMs MTAgQEAgaW50IGFtZGdwdV92Y25fc3VzcGVuZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikK Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghYWRldi0+dmNuLmluc3RbaV0uc2F2ZWRfYm8pCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PTUVNOwo+PiAtwqDCoMKgwqDC oMKgwqAgbWVtY3B5X2Zyb21pbyhhZGV2LT52Y24uaW5zdFtpXS5zYXZlZF9ibywgcHRyLCBzaXpl KTsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChkcm1fZGV2X2VudGVyKCZhZGV2LT5kZGV2LCAmaWR4 KSkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtZW1jcHlfZnJvbWlvKGFkZXYtPnZjbi5p bnN0W2ldLnNhdmVkX2JvLCBwdHIsIHNpemUpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBk cm1fZGV2X2V4aXQoaWR4KTsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gwqDCoMKgwqDCoCB9Cj4+ IMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+IMKgIH0KPj4gQEAgLTMwMSw3ICszMDUsNyBAQCBpbnQg YW1kZ3B1X3Zjbl9yZXN1bWUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4+IMKgIHsKPj4g wqDCoMKgwqDCoCB1bnNpZ25lZCBzaXplOwo+PiDCoMKgwqDCoMKgIHZvaWQgKnB0cjsKPj4gLcKg wqDCoCBpbnQgaTsKPj4gK8KgwqDCoCBpbnQgaSwgaWR4Owo+PiDCoMKgwqDCoMKgIGZvciAoaSA9 IDA7IGkgPCBhZGV2LT52Y24ubnVtX3Zjbl9pbnN0OyArK2kpIHsKPj4gwqDCoMKgwqDCoMKgwqDC oMKgIGlmIChhZGV2LT52Y24uaGFydmVzdF9jb25maWcgJiAoMSA8PCBpKSkKPj4gQEAgLTMxMyw3 ICszMTcsMTAgQEAgaW50IGFtZGdwdV92Y25fcmVzdW1lKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcHRyID0gYWRldi0+dmNuLmluc3RbaV0uY3B1X2Fk ZHI7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoYWRldi0+dmNuLmluc3RbaV0uc2F2ZWRfYm8g IT0gTlVMTCkgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtZW1jcHlfdG9pbyhwdHIsIGFk ZXYtPnZjbi5pbnN0W2ldLnNhdmVkX2JvLCBzaXplKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgaWYgKGRybV9kZXZfZW50ZXIoJmFkZXYtPmRkZXYsICZpZHgpKSB7Cj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgbWVtY3B5X3RvaW8ocHRyLCBhZGV2LT52Y24uaW5zdFtpXS5z YXZlZF9ibywgc2l6ZSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJtX2Rl dl9leGl0KGlkeCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAga3ZmcmVlKGFkZXYtPnZjbi5pbnN0W2ldLnNhdmVkX2JvKTsKPj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWRldi0+dmNuLmluc3RbaV0uc2F2ZWRfYm8gPSBOVUxM Owo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfSBlbHNlIHsKPj4gQEAgLTMyMyw4ICszMzAsMTEgQEAg aW50IGFtZGdwdV92Y25fcmVzdW1lKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBoZHIgPSAoY29uc3Qgc3RydWN0IGNvbW1vbl9maXJtd2Fy ZV9oZWFkZXIgCj4+ICopYWRldi0+dmNuLmZ3LT5kYXRhOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpZiAoYWRldi0+ZmlybXdhcmUubG9hZF90eXBlICE9IEFNREdQVV9GV19MT0FEX1BT UCkgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9mZnNldCA9IGxlMzJf dG9fY3B1KGhkci0+dWNvZGVfYXJyYXlfb2Zmc2V0X2J5dGVzKTsKPj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBtZW1jcHlfdG9pbyhhZGV2LT52Y24uaW5zdFtpXS5jcHVfYWRkciwg Cj4+IGFkZXYtPnZjbi5mdy0+ZGF0YSArIG9mZnNldCwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGUzMl90b19jcHUoaGRyLT51Y29kZV9zaXplX2J5 dGVzKSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGRybV9kZXZfZW50 ZXIoJmFkZXYtPmRkZXYsICZpZHgpKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBtZW1jcHlfdG9pbyhhZGV2LT52Y24uaW5zdFtpXS5jcHVfYWRkciwgCj4+IGFk ZXYtPnZjbi5mdy0+ZGF0YSArIG9mZnNldCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsZTMyX3RvX2NwdShoZHItPnVjb2RlX3NpemVf Ynl0ZXMpKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRybV9k ZXZfZXhpdChpZHgpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaXplIC09IGxlMzJfdG9fY3B1KGhkci0+ dWNvZGVfc2l6ZV9ieXRlcyk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg cHRyICs9IGxlMzJfdG9fY3B1KGhkci0+dWNvZGVfc2l6ZV9ieXRlcyk7Cj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIH0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV92bS5jIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92 bS5jCj4+IGluZGV4IDlmODY4Y2YzYjgzMi4uN2RkNWYxMGFiNTcwIDEwMDY0NAo+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwo+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwo+PiBAQCAtMzIsNiArMzIsNyBAQAo+PiDCoCAj aW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgo+PiDCoCAjaW5jbHVkZSA8ZHJtL2FtZGdwdV9kcm0u aD4KPj4gKyNpbmNsdWRlIDxkcm0vZHJtX2Rydi5oPgo+PiDCoCAjaW5jbHVkZSAiYW1kZ3B1Lmgi Cj4+IMKgICNpbmNsdWRlICJhbWRncHVfdHJhY2UuaCIKPj4gwqAgI2luY2x1ZGUgImFtZGdwdV9h bWRrZmQuaCIKPj4gQEAgLTE2MDYsNyArMTYwNywxMCBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV9i b191cGRhdGVfbWFwcGluZyhzdHJ1Y3QgCj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+IMKgwqDC oMKgwqAgc3RydWN0IGFtZGdwdV92bV91cGRhdGVfcGFyYW1zIHBhcmFtczsKPj4gwqDCoMKgwqDC oCBlbnVtIGFtZGdwdV9zeW5jX21vZGUgc3luY19tb2RlOwo+PiDCoMKgwqDCoMKgIHVpbnQ2NF90 IHBmbjsKPj4gLcKgwqDCoCBpbnQgcjsKPj4gK8KgwqDCoCBpbnQgciwgaWR4Owo+PiArCj4+ICvC oMKgwqAgaWYgKCFkcm1fZGV2X2VudGVyKCZhZGV2LT5kZGV2LCAmaWR4KSkKPj4gK8KgwqDCoMKg wqDCoMKgIHJldHVybiAtRU5PREVWOwo+PiDCoMKgwqDCoMKgIG1lbXNldCgmcGFyYW1zLCAwLCBz aXplb2YocGFyYW1zKSk7Cj4+IMKgwqDCoMKgwqAgcGFyYW1zLmFkZXYgPSBhZGV2Owo+PiBAQCAt MTcxNSw2ICsxNzE5LDcgQEAgc3RhdGljIGludCBhbWRncHVfdm1fYm9fdXBkYXRlX21hcHBpbmco c3RydWN0IAo+PiBhbWRncHVfZGV2aWNlICphZGV2LAo+PiDCoCBlcnJvcl91bmxvY2s6Cj4+IMKg wqDCoMKgwqAgYW1kZ3B1X3ZtX2V2aWN0aW9uX3VubG9jayh2bSk7Cj4+ICvCoMKgwqAgZHJtX2Rl dl9leGl0KGlkeCk7Cj4+IMKgwqDCoMKgwqAgcmV0dXJuIHI7Cj4+IMKgIH0KPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3BzcF92MTFfMC5jIAo+PiBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L3BzcF92MTFfMC5jCj4+IGluZGV4IDU4OTQxMGMzMmQwOS4uMmNl YzcxZTgyM2Y1IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3Bf djExXzAuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjExXzAuYwo+ PiBAQCAtMjMsNiArMjMsNyBAQAo+PiDCoCAjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KPj4g wqAgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+PiDCoCAjaW5jbHVkZSA8bGludXgvdm1hbGxv Yy5oPgo+PiArI2luY2x1ZGUgPGRybS9kcm1fZHJ2Lmg+Cj4+IMKgICNpbmNsdWRlICJhbWRncHUu aCIKPj4gwqAgI2luY2x1ZGUgImFtZGdwdV9wc3AuaCIKPj4gQEAgLTI2OSwxMCArMjcwLDggQEAg c3RhdGljIGludCBwc3BfdjExXzBfYm9vdGxvYWRlcl9sb2FkX2tkYihzdHJ1Y3QgCj4+IHBzcF9j b250ZXh0ICpwc3ApCj4+IMKgwqDCoMKgwqAgaWYgKHJldCkKPj4gwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybiByZXQ7Cj4+IC3CoMKgwqAgbWVtc2V0KHBzcC0+ZndfcHJpX2J1ZiwgMCwgUFNQXzFf TUVHKTsKPj4gLQo+PiDCoMKgwqDCoMKgIC8qIENvcHkgUFNQIEtEQiBiaW5hcnkgdG8gbWVtb3J5 ICovCj4+IC3CoMKgwqAgbWVtY3B5KHBzcC0+ZndfcHJpX2J1ZiwgcHNwLT5rZGJfc3RhcnRfYWRk ciwgcHNwLT5rZGJfYmluX3NpemUpOwo+PiArwqDCoMKgIHBzcF9jb3B5X2Z3KHBzcCwgcHNwLT5r ZGJfc3RhcnRfYWRkciwgcHNwLT5rZGJfYmluX3NpemUpOwo+PiDCoMKgwqDCoMKgIC8qIFByb3Zp ZGUgdGhlIFBTUCBLREIgdG8gYm9vdGxvYWRlciAqLwo+PiDCoMKgwqDCoMKgIFdSRUczMl9TT0Mx NShNUDAsIDAsIG1tTVAwX1NNTl9DMlBNU0dfMzYsCj4+IEBAIC0zMDIsMTAgKzMwMSw4IEBAIHN0 YXRpYyBpbnQgcHNwX3YxMV8wX2Jvb3Rsb2FkZXJfbG9hZF9zcGwoc3RydWN0IAo+PiBwc3BfY29u dGV4dCAqcHNwKQo+PiDCoMKgwqDCoMKgIGlmIChyZXQpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gcmV0Owo+PiAtwqDCoMKgIG1lbXNldChwc3AtPmZ3X3ByaV9idWYsIDAsIFBTUF8xX01F Ryk7Cj4+IC0KPj4gwqDCoMKgwqDCoCAvKiBDb3B5IFBTUCBTUEwgYmluYXJ5IHRvIG1lbW9yeSAq Lwo+PiAtwqDCoMKgIG1lbWNweShwc3AtPmZ3X3ByaV9idWYsIHBzcC0+c3BsX3N0YXJ0X2FkZHIs IHBzcC0+c3BsX2Jpbl9zaXplKTsKPj4gK8KgwqDCoCBwc3BfY29weV9mdyhwc3AsIHBzcC0+c3Bs X3N0YXJ0X2FkZHIsIHBzcC0+c3BsX2Jpbl9zaXplKTsKPj4gwqDCoMKgwqDCoCAvKiBQcm92aWRl IHRoZSBQU1AgU1BMIHRvIGJvb3Rsb2FkZXIgKi8KPj4gwqDCoMKgwqDCoCBXUkVHMzJfU09DMTUo TVAwLCAwLCBtbU1QMF9TTU5fQzJQTVNHXzM2LAo+PiBAQCAtMzM1LDEwICszMzIsOCBAQCBzdGF0 aWMgaW50IAo+PiBwc3BfdjExXzBfYm9vdGxvYWRlcl9sb2FkX3N5c2RydihzdHJ1Y3QgcHNwX2Nv bnRleHQgKnBzcCkKPj4gwqDCoMKgwqDCoCBpZiAocmV0KQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAg cmV0dXJuIHJldDsKPj4gLcKgwqDCoCBtZW1zZXQocHNwLT5md19wcmlfYnVmLCAwLCBQU1BfMV9N RUcpOwo+PiAtCj4+IMKgwqDCoMKgwqAgLyogQ29weSBQU1AgU3lzdGVtIERyaXZlciBiaW5hcnkg dG8gbWVtb3J5ICovCj4+IC3CoMKgwqAgbWVtY3B5KHBzcC0+ZndfcHJpX2J1ZiwgcHNwLT5zeXNf c3RhcnRfYWRkciwgcHNwLT5zeXNfYmluX3NpemUpOwo+PiArwqDCoMKgIHBzcF9jb3B5X2Z3KHBz cCwgcHNwLT5zeXNfc3RhcnRfYWRkciwgcHNwLT5zeXNfYmluX3NpemUpOwo+PiDCoMKgwqDCoMKg IC8qIFByb3ZpZGUgdGhlIHN5cyBkcml2ZXIgdG8gYm9vdGxvYWRlciAqLwo+PiDCoMKgwqDCoMKg IFdSRUczMl9TT0MxNShNUDAsIDAsIG1tTVAwX1NNTl9DMlBNU0dfMzYsCj4+IEBAIC0zNzEsMTAg KzM2Niw4IEBAIHN0YXRpYyBpbnQgcHNwX3YxMV8wX2Jvb3Rsb2FkZXJfbG9hZF9zb3Moc3RydWN0 IAo+PiBwc3BfY29udGV4dCAqcHNwKQo+PiDCoMKgwqDCoMKgIGlmIChyZXQpCj4+IMKgwqDCoMKg wqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiAtwqDCoMKgIG1lbXNldChwc3AtPmZ3X3ByaV9idWYs IDAsIFBTUF8xX01FRyk7Cj4+IC0KPj4gwqDCoMKgwqDCoCAvKiBDb3B5IFNlY3VyZSBPUyBiaW5h cnkgdG8gUFNQIG1lbW9yeSAqLwo+PiAtwqDCoMKgIG1lbWNweShwc3AtPmZ3X3ByaV9idWYsIHBz cC0+c29zX3N0YXJ0X2FkZHIsIHBzcC0+c29zX2Jpbl9zaXplKTsKPj4gK8KgwqDCoCBwc3BfY29w eV9mdyhwc3AsIHBzcC0+c29zX3N0YXJ0X2FkZHIsIHBzcC0+c29zX2Jpbl9zaXplKTsKPj4gwqDC oMKgwqDCoCAvKiBQcm92aWRlIHRoZSBQU1Agc2VjdXJlIE9TIHRvIGJvb3Rsb2FkZXIgKi8KPj4g wqDCoMKgwqDCoCBXUkVHMzJfU09DMTUoTVAwLCAwLCBtbU1QMF9TTU5fQzJQTVNHXzM2LAo+PiBA QCAtNjA4LDcgKzYwMSw3IEBAIHN0YXRpYyBpbnQgcHNwX3YxMV8wX21lbW9yeV90cmFpbmluZyhz dHJ1Y3QgCj4+IHBzcF9jb250ZXh0ICpwc3AsIHVpbnQzMl90IG9wcykKPj4gwqDCoMKgwqDCoCB1 aW50MzJfdCBwMmNfaGVhZGVyWzRdOwo+PiDCoMKgwqDCoMKgIHVpbnQzMl90IHN6Owo+PiDCoMKg wqDCoMKgIHZvaWQgKmJ1ZjsKPj4gLcKgwqDCoCBpbnQgcmV0Owo+PiArwqDCoMKgIGludCByZXQs IGlkeDsKPj4gwqDCoMKgwqDCoCBpZiAoY3R4LT5pbml0ID09IFBTUF9NRU1fVFJBSU5fTk9UX1NV UFBPUlQpIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIERSTV9ERUJVRygiTWVtb3J5IHRyYWluaW5n IGlzIG5vdCBzdXBwb3J0ZWQuXG4iKTsKPj4gQEAgLTY4MSwxNyArNjc0LDI0IEBAIHN0YXRpYyBp bnQgcHNwX3YxMV8wX21lbW9yeV90cmFpbmluZyhzdHJ1Y3QgCj4+IHBzcF9jb250ZXh0ICpwc3As IHVpbnQzMl90IG9wcykKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9N RU07Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IC3CoMKgwqDCoMKgwqDCoCBtZW1jcHlfZnJv bWlvKGJ1ZiwgYWRldi0+bW1hbi5hcGVyX2Jhc2Vfa2FkZHIsIHN6KTsKPj4gLcKgwqDCoMKgwqDC oMKgIHJldCA9IHBzcF92MTFfMF9tZW1vcnlfdHJhaW5pbmdfc2VuZF9tc2cocHNwLCAKPj4gUFNQ X0JMX19EUkFNX0xPTkdfVFJBSU4pOwo+PiAtwqDCoMKgwqDCoMKgwqAgaWYgKHJldCkgewo+PiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fRVJST1IoIlNlbmQgbG9uZyB0cmFpbmluZyBtc2cg ZmFpbGVkLlxuIik7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoZHJtX2Rldl9lbnRlcigmYWRldi0+ ZGRldiwgJmlkeCkpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbWVtY3B5X2Zyb21pbyhi dWYsIGFkZXYtPm1tYW4uYXBlcl9iYXNlX2thZGRyLCBzeik7Cj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHJldCA9IHBzcF92MTFfMF9tZW1vcnlfdHJhaW5pbmdfc2VuZF9tc2cocHNwLCAKPj4g UFNQX0JMX19EUkFNX0xPTkdfVFJBSU4pOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAo cmV0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX0VSUk9SKCJTZW5k IGxvbmcgdHJhaW5pbmcgbXNnIGZhaWxlZC5cbiIpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHZmcmVlKGJ1Zik7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ZHJtX2Rldl9leGl0KGlkeCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIHJldDsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIG1lbWNweV90b2lvKGFkZXYtPm1tYW4uYXBlcl9iYXNlX2thZGRyLCBidWYs IHN6KTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWRldi0+aGRwLmZ1bmNzLT5mbHVzaF9o ZHAoYWRldiwgTlVMTCk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZmcmVlKGJ1Zik7 Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGRybV9kZXZfZXhpdChpZHgpOwo+PiArwqDCoMKgwqDCoMKgwqAgfSBlbHNlIHsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmZyZWUoYnVmKTsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuIC1FTk9ERVY7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IC0KPj4g LcKgwqDCoMKgwqDCoMKgIG1lbWNweV90b2lvKGFkZXYtPm1tYW4uYXBlcl9iYXNlX2thZGRyLCBi dWYsIHN6KTsKPj4gLcKgwqDCoMKgwqDCoMKgIGFkZXYtPmhkcC5mdW5jcy0+Zmx1c2hfaGRwKGFk ZXYsIE5VTEwpOwo+PiAtwqDCoMKgwqDCoMKgwqAgdmZyZWUoYnVmKTsKPj4gwqDCoMKgwqDCoCB9 Cj4+IMKgwqDCoMKgwqAgaWYgKG9wcyAmIFBTUF9NRU1fVFJBSU5fU0FWRSkgewo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvcHNwX3YxMl8wLmMgCj4+IGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvcHNwX3YxMl8wLmMKPj4gaW5kZXggYzQ4MjhiZDMyNjRiLi42 MThlNWI2Yjg1ZDkgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3Bz cF92MTJfMC5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3BzcF92MTJfMC5j Cj4+IEBAIC0xMzgsMTAgKzEzOCw4IEBAIHN0YXRpYyBpbnQgCj4+IHBzcF92MTJfMF9ib290bG9h ZGVyX2xvYWRfc3lzZHJ2KHN0cnVjdCBwc3BfY29udGV4dCAqcHNwKQo+PiDCoMKgwqDCoMKgIGlm IChyZXQpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiAtwqDCoMKgIG1lbXNl dChwc3AtPmZ3X3ByaV9idWYsIDAsIFBTUF8xX01FRyk7Cj4+IC0KPj4gwqDCoMKgwqDCoCAvKiBD b3B5IFBTUCBTeXN0ZW0gRHJpdmVyIGJpbmFyeSB0byBtZW1vcnkgKi8KPj4gLcKgwqDCoCBtZW1j cHkocHNwLT5md19wcmlfYnVmLCBwc3AtPnN5c19zdGFydF9hZGRyLCBwc3AtPnN5c19iaW5fc2l6 ZSk7Cj4+ICvCoMKgwqAgcHNwX2NvcHlfZncocHNwLCBwc3AtPnN5c19zdGFydF9hZGRyLCBwc3At PnN5c19iaW5fc2l6ZSk7Cj4+IMKgwqDCoMKgwqAgLyogUHJvdmlkZSB0aGUgc3lzIGRyaXZlciB0 byBib290bG9hZGVyICovCj4+IMKgwqDCoMKgwqAgV1JFRzMyX1NPQzE1KE1QMCwgMCwgbW1NUDBf U01OX0MyUE1TR18zNiwKPj4gQEAgLTE3OSwxMCArMTc3LDggQEAgc3RhdGljIGludCBwc3BfdjEy XzBfYm9vdGxvYWRlcl9sb2FkX3NvcyhzdHJ1Y3QgCj4+IHBzcF9jb250ZXh0ICpwc3ApCj4+IMKg wqDCoMKgwqAgaWYgKHJldCkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+IC3C oMKgwqAgbWVtc2V0KHBzcC0+ZndfcHJpX2J1ZiwgMCwgUFNQXzFfTUVHKTsKPj4gLQo+PiDCoMKg wqDCoMKgIC8qIENvcHkgU2VjdXJlIE9TIGJpbmFyeSB0byBQU1AgbWVtb3J5ICovCj4+IC3CoMKg wqAgbWVtY3B5KHBzcC0+ZndfcHJpX2J1ZiwgcHNwLT5zb3Nfc3RhcnRfYWRkciwgcHNwLT5zb3Nf YmluX3NpemUpOwo+PiArwqDCoMKgIHBzcF9jb3B5X2Z3KHBzcCwgcHNwLT5zb3Nfc3RhcnRfYWRk ciwgcHNwLT5zb3NfYmluX3NpemUpOwo+PiDCoMKgwqDCoMKgIC8qIFByb3ZpZGUgdGhlIFBTUCBz ZWN1cmUgT1MgdG8gYm9vdGxvYWRlciAqLwo+PiDCoMKgwqDCoMKgIFdSRUczMl9TT0MxNShNUDAs IDAsIG1tTVAwX1NNTl9DMlBNU0dfMzYsCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9wc3BfdjNfMS5jIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3Bz cF92M18xLmMKPj4gaW5kZXggZjJlNzI1ZjcyZDJmLi5kMGE2Y2NjZDA4OTcgMTAwNjQ0Cj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3BzcF92M18xLmMKPj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvcHNwX3YzXzEuYwo+PiBAQCAtMTAyLDEwICsxMDIsOCBAQCBz dGF0aWMgaW50IHBzcF92M18xX2Jvb3Rsb2FkZXJfbG9hZF9zeXNkcnYoc3RydWN0IAo+PiBwc3Bf Y29udGV4dCAqcHNwKQo+PiDCoMKgwqDCoMKgIGlmIChyZXQpCj4+IMKgwqDCoMKgwqDCoMKgwqDC oCByZXR1cm4gcmV0Owo+PiAtwqDCoMKgIG1lbXNldChwc3AtPmZ3X3ByaV9idWYsIDAsIFBTUF8x X01FRyk7Cj4+IC0KPj4gwqDCoMKgwqDCoCAvKiBDb3B5IFBTUCBTeXN0ZW0gRHJpdmVyIGJpbmFy eSB0byBtZW1vcnkgKi8KPj4gLcKgwqDCoCBtZW1jcHkocHNwLT5md19wcmlfYnVmLCBwc3AtPnN5 c19zdGFydF9hZGRyLCBwc3AtPnN5c19iaW5fc2l6ZSk7Cj4+ICvCoMKgwqAgcHNwX2NvcHlfZnco cHNwLCBwc3AtPnN5c19zdGFydF9hZGRyLCBwc3AtPnN5c19iaW5fc2l6ZSk7Cj4+IMKgwqDCoMKg wqAgLyogUHJvdmlkZSB0aGUgc3lzIGRyaXZlciB0byBib290bG9hZGVyICovCj4+IMKgwqDCoMKg wqAgV1JFRzMyX1NPQzE1KE1QMCwgMCwgbW1NUDBfU01OX0MyUE1TR18zNiwKPj4gQEAgLTE0Mywx MCArMTQxLDggQEAgc3RhdGljIGludCBwc3BfdjNfMV9ib290bG9hZGVyX2xvYWRfc29zKHN0cnVj dCAKPj4gcHNwX2NvbnRleHQgKnBzcCkKPj4gwqDCoMKgwqDCoCBpZiAocmV0KQo+PiDCoMKgwqDC oMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4gLcKgwqDCoCBtZW1zZXQocHNwLT5md19wcmlfYnVm LCAwLCBQU1BfMV9NRUcpOwo+PiAtCj4+IMKgwqDCoMKgwqAgLyogQ29weSBTZWN1cmUgT1MgYmlu YXJ5IHRvIFBTUCBtZW1vcnkgKi8KPj4gLcKgwqDCoCBtZW1jcHkocHNwLT5md19wcmlfYnVmLCBw c3AtPnNvc19zdGFydF9hZGRyLCBwc3AtPnNvc19iaW5fc2l6ZSk7Cj4+ICvCoMKgwqAgcHNwX2Nv cHlfZncocHNwLCBwc3AtPnNvc19zdGFydF9hZGRyLCBwc3AtPnNvc19iaW5fc2l6ZSk7Cj4+IMKg wqDCoMKgwqAgLyogUHJvdmlkZSB0aGUgUFNQIHNlY3VyZSBPUyB0byBib290bG9hZGVyICovCj4+ IMKgwqDCoMKgwqAgV1JFRzMyX1NPQzE1KE1QMCwgMCwgbW1NUDBfU01OX0MyUE1TR18zNiwKPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZjZV92NF8wLmMgCj4+IGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmNlX3Y0XzAuYwo+PiBpbmRleCA4ZTIzOGRlYTdi ZWYuLjkwOTEwZDE5ZGIxMiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvdmNlX3Y0XzAuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92Y2VfdjRf MC5jCj4+IEBAIC0yNSw2ICsyNSw3IEBACj4+IMKgwqAgKi8KPj4gwqAgI2luY2x1ZGUgPGxpbnV4 L2Zpcm13YXJlLmg+Cj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4KPj4gwqAgI2luY2x1ZGUg ImFtZGdwdS5oIgo+PiDCoCAjaW5jbHVkZSAiYW1kZ3B1X3ZjZS5oIgo+PiBAQCAtNTU1LDE2ICs1 NTYsMTkgQEAgc3RhdGljIGludCB2Y2VfdjRfMF9od19maW5pKHZvaWQgKmhhbmRsZSkKPj4gwqAg c3RhdGljIGludCB2Y2VfdjRfMF9zdXNwZW5kKHZvaWQgKmhhbmRsZSkKPj4gwqAgewo+PiDCoMKg wqDCoMKgIHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNl ICopaGFuZGxlOwo+PiAtwqDCoMKgIGludCByOwo+PiArwqDCoMKgIGludCByLCBpZHg7Cj4+IMKg wqDCoMKgwqAgaWYgKGFkZXYtPnZjZS52Y3B1X2JvID09IE5VTEwpCj4+IMKgwqDCoMKgwqDCoMKg wqDCoCByZXR1cm4gMDsKPj4gLcKgwqDCoCBpZiAoYWRldi0+ZmlybXdhcmUubG9hZF90eXBlID09 IEFNREdQVV9GV19MT0FEX1BTUCkgewo+PiAtwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgc2l6ZSA9 IGFtZGdwdV9ib19zaXplKGFkZXYtPnZjZS52Y3B1X2JvKTsKPj4gLcKgwqDCoMKgwqDCoMKgIHZv aWQgKnB0ciA9IGFkZXYtPnZjZS5jcHVfYWRkcjsKPj4gK8KgwqDCoCBpZiAoZHJtX2Rldl9lbnRl cigmYWRldi0+ZGRldiwgJmlkeCkpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChhZGV2LT5maXJt d2FyZS5sb2FkX3R5cGUgPT0gQU1ER1BVX0ZXX0xPQURfUFNQKSB7Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHVuc2lnbmVkIHNpemUgPSBhbWRncHVfYm9fc2l6ZShhZGV2LT52Y2UudmNwdV9i byk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZvaWQgKnB0ciA9IGFkZXYtPnZjZS5jcHVf YWRkcjsKPj4gLcKgwqDCoMKgwqDCoMKgIG1lbWNweV9mcm9taW8oYWRldi0+dmNlLnNhdmVkX2Jv LCBwdHIsIHNpemUpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtZW1jcHlfZnJvbWlvKGFk ZXYtPnZjZS5zYXZlZF9ibywgcHRyLCBzaXplKTsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gK8Kg wqDCoMKgwqDCoMKgIGRybV9kZXZfZXhpdChpZHgpOwo+PiDCoMKgwqDCoMKgIH0KPj4gwqDCoMKg wqDCoCByID0gdmNlX3Y0XzBfaHdfZmluaShhZGV2KTsKPj4gQEAgLTU3NywxNiArNTgxLDIwIEBA IHN0YXRpYyBpbnQgdmNlX3Y0XzBfc3VzcGVuZCh2b2lkICpoYW5kbGUpCj4+IMKgIHN0YXRpYyBp bnQgdmNlX3Y0XzBfcmVzdW1lKHZvaWQgKmhhbmRsZSkKPj4gwqAgewo+PiDCoMKgwqDCoMKgIHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxl Owo+PiAtwqDCoMKgIGludCByOwo+PiArwqDCoMKgIGludCByLCBpZHg7Cj4+IMKgwqDCoMKgwqAg aWYgKGFkZXYtPnZjZS52Y3B1X2JvID09IE5VTEwpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gLUVJTlZBTDsKPj4gwqDCoMKgwqDCoCBpZiAoYWRldi0+ZmlybXdhcmUubG9hZF90eXBlID09 IEFNREdQVV9GV19MT0FEX1BTUCkgewo+PiAtwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgc2l6ZSA9 IGFtZGdwdV9ib19zaXplKGFkZXYtPnZjZS52Y3B1X2JvKTsKPj4gLcKgwqDCoMKgwqDCoMKgIHZv aWQgKnB0ciA9IGFkZXYtPnZjZS5jcHVfYWRkcjsKPj4gLcKgwqDCoMKgwqDCoMKgIG1lbWNweV90 b2lvKHB0ciwgYWRldi0+dmNlLnNhdmVkX2JvLCBzaXplKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGlm IChkcm1fZGV2X2VudGVyKCZhZGV2LT5kZGV2LCAmaWR4KSkgewo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB1bnNpZ25lZCBzaXplID0gYW1kZ3B1X2JvX3NpemUoYWRldi0+dmNlLnZjcHVfYm8p Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2b2lkICpwdHIgPSBhZGV2LT52Y2UuY3B1X2Fk ZHI7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbWVtY3B5X3RvaW8ocHRyLCBhZGV2 LT52Y2Uuc2F2ZWRfYm8sIHNpemUpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcm1fZGV2 X2V4aXQoaWR4KTsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gwqDCoMKgwqDCoCB9IGVsc2Ugewo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgciA9IGFtZGdwdV92Y2VfcmVzdW1lKGFkZXYpOwo+PiDCoMKg wqDCoMKgwqDCoMKgwqAgaWYgKHIpCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS92Y25fdjNfMC5jIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3Zjbl92 M18wLmMKPj4gaW5kZXggM2YxNWJmMzQxMjNhLi5kZjM0YmU4ZWM4MmQgMTAwNjQ0Cj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3Zjbl92M18wLmMKPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvdmNuX3YzXzAuYwo+PiBAQCAtMzQsNiArMzQsOCBAQAo+PiDCoCAj aW5jbHVkZSAidmNuL3Zjbl8zXzBfMF9zaF9tYXNrLmgiCj4+IMKgICNpbmNsdWRlICJpdnNyY2lk L3Zjbi9pcnFzcmNzX3Zjbl8yXzAuaCIKPj4gKyNpbmNsdWRlIDxkcm0vZHJtX2Rydi5oPgo+PiAr Cj4+IMKgICNkZWZpbmUgbW1VVkRfQ09OVEVYVF9JRF9JTlRFUk5BTF9PRkZTRVTCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIDB4MjcKPj4gwqAgI2RlZmluZSBtbVVWRF9HUENPTV9WQ1BVX0NNRF9JTlRF Uk5BTF9PRkZTRVTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MGYKPj4gwqAgI2RlZmluZSBtbVVW RF9HUENPTV9WQ1BVX0RBVEEwX0lOVEVSTkFMX09GRlNFVMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg MHgxMAo+PiBAQCAtMjY4LDE2ICsyNzAsMjAgQEAgc3RhdGljIGludCB2Y25fdjNfMF9zd19pbml0 KHZvaWQgKmhhbmRsZSkKPj4gwqAgc3RhdGljIGludCB2Y25fdjNfMF9zd19maW5pKHZvaWQgKmhh bmRsZSkKPj4gwqAgewo+PiDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0g KHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOwo+PiAtwqDCoMKgIGludCBpLCByOwo+PiAr wqDCoMKgIGludCBpLCByLCBpZHg7Cj4+IC3CoMKgwqAgZm9yIChpID0gMDsgaSA8IGFkZXYtPnZj bi5udW1fdmNuX2luc3Q7IGkrKykgewo+PiAtwqDCoMKgwqDCoMKgwqAgdm9sYXRpbGUgc3RydWN0 IGFtZGdwdV9md19zaGFyZWQgKmZ3X3NoYXJlZDsKPj4gK8KgwqDCoCBpZiAoZHJtX2Rldl9lbnRl cigmYWRldi0+ZGRldiwgJmlkeCkpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGZvciAoaSA9IDA7IGkg PCBhZGV2LT52Y24ubnVtX3Zjbl9pbnN0OyBpKyspIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdm9sYXRpbGUgc3RydWN0IGFtZGdwdV9md19zaGFyZWQgKmZ3X3NoYXJlZDsKPj4gLcKgwqDC oMKgwqDCoMKgIGlmIChhZGV2LT52Y24uaGFydmVzdF9jb25maWcgJiAoMSA8PCBpKSkKPj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7Cj4+IC3CoMKgwqDCoMKgwqDCoCBmd19zaGFy ZWQgPSBhZGV2LT52Y24uaW5zdFtpXS5md19zaGFyZWRfY3B1X2FkZHI7Cj4+IC3CoMKgwqDCoMKg wqDCoCBmd19zaGFyZWQtPnByZXNlbnRfZmxhZ18wID0gMDsKPj4gLcKgwqDCoMKgwqDCoMKgIGZ3 X3NoYXJlZC0+c3dfcmluZy5pc19lbmFibGVkID0gZmFsc2U7Cj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGlmIChhZGV2LT52Y24uaGFydmVzdF9jb25maWcgJiAoMSA8PCBpKSkKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZndfc2hhcmVkID0gYWRldi0+dmNuLmluc3RbaV0uZndfc2hhcmVkX2NwdV9hZGRyOwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmd19zaGFyZWQtPnByZXNlbnRfZmxhZ18wID0gMDsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZndfc2hhcmVkLT5zd19yaW5nLmlzX2VuYWJsZWQg PSBmYWxzZTsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgZHJt X2Rldl9leGl0KGlkeCk7Cj4+IMKgwqDCoMKgwqAgfQo+PiDCoMKgwqDCoMKgIGlmIChhbWRncHVf c3Jpb3ZfdmYoYWRldikpCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3BtL3Bv d2VycGxheS9zbXVtZ3Ivc211N19zbXVtZ3IuYyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bt L3Bvd2VycGxheS9zbXVtZ3Ivc211N19zbXVtZ3IuYwo+PiBpbmRleCBhYWUyNTI0M2ViMTAuLmQ2 MjhiOTE4NDZjOSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wbS9wb3dlcnBs YXkvc211bWdyL3NtdTdfc211bWdyLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wbS9w b3dlcnBsYXkvc211bWdyL3NtdTdfc211bWdyLmMKPj4gQEAgLTQwNSw2ICs0MDUsOCBAQCBpbnQg c211N19yZXF1ZXN0X3NtdV9sb2FkX2Z3KHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVUNPREVfSURfTUVDX1NUT1JBR0UsICZ0b2Mt PmVudHJ5W3RvYy0+bnVtX2VudHJpZXMrK10pLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICJGYWlsZWQgdG8gR2V0IEZpcm13YXJlIEVudHJ5LiIsIHIgPSAtRUlOVkFMOyBn b3RvIAo+PiBmYWlsZWQpOwo+PiDCoMKgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIC8qIEFHIFRP RE8gQ2FuJ3QgY2FsbCBkcm1fZGV2X2VudGVyL2V4aXQgYmVjYXVzZSBhY2Nlc3MgCj4+IGFkZXYt PmRkZXYgaGVyZSAuLi4gKi8KPj4gwqDCoMKgwqDCoCBtZW1jcHlfdG9pbyhzbXVfZGF0YS0+aGVh ZGVyX2J1ZmZlci5rYWRkciwgc211X2RhdGEtPnRvYywKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc2l6ZW9mKHN0cnVjdCBTTVVfRFJBTURhdGFfVE9DKSk7Cj4+IMKgwqDCoMKgwqAgc211 bV9zZW5kX21zZ190b19zbWNfd2l0aF9wYXJhbWV0ZXIoaHdtZ3IsCj4gCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFt ZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=