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=-12.0 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, 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 169BAC4743C for ; Mon, 21 Jun 2021 11:18:43 +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 D94C0611C1 for ; Mon, 21 Jun 2021 11:18:42 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D94C0611C1 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.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 816358908C; Mon, 21 Jun 2021 11:18:42 +0000 (UTC) Received: from mail-ej1-x635.google.com (mail-ej1-x635.google.com [IPv6:2a00:1450:4864:20::635]) by gabe.freedesktop.org (Postfix) with ESMTPS id 18C8D8908C for ; Mon, 21 Jun 2021 11:18:41 +0000 (UTC) Received: by mail-ej1-x635.google.com with SMTP id gt18so28109574ejc.11 for ; Mon, 21 Jun 2021 04:18:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=Bv70V8TfkRO72eHyyEbMtjp/clHLq7Zq5U0p6Bs0VEw=; b=KRqSaagd6xGJEnYUZjjo5qs4luUimF9wGXgA06Gcf9/PfrYi9xGW7h1tsbr51Pdu3B IxKTBrHmuDStIKwLxtkmpNTAfge2Fh933w8S7imw1met4/Ul8QhRlVoAcI3rQTaBHHAU Eqx5bw9oE1KouO2Cd1Sp+FjYAwALswM2vanOuTtkUNkTc1fWUHPPX0i2Fz8orHzSLDwe v3PX831weFCMmvcoiSldD0ffSj2blnUvNpkLqE2YbceEKtHngyaw69UlXcNP5fwqWygf +S114JNerMeLsdMbBSX/1g7RYsenSfSVmuIR32xv+TbwXMKqco0AB/W/lXY+TZlPsU9N 1PUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=Bv70V8TfkRO72eHyyEbMtjp/clHLq7Zq5U0p6Bs0VEw=; b=sQZfFYYmMonNrBGswbCN0h8WUyC+Lfx3Z8UqdrHw+V6/ND3eVb+L2Lf9sVg5hUhulC yH61kFDPxac8Bh8XM3ceTqFF34hw8Wvc5COMjNoBdo2wc8MWwFBaRnsJTvrxKZi82c3L mbsdCjp8sWs2bwefnqEhmPYb7/chSTCHvxmNsExdPMQQ3P5rqiuDO5bA7KRDOLuKVS9g h95etET6hDT1cl6oc/IxWzhxEJWVECH+/+T/zny1zE/c34aQxadayiF3GdBOs5Pnw/at MV3ft/s+k0b0eocVyMEoHWHFtQRN4kA881Nt/rYeleMIMU5apwWdKMmS7FPLkHwPdWnP +psw== X-Gm-Message-State: AOAM531sLdRwtaVw90miGO3KrBYxhr/2Rgz4vCRQ0RxZ4ZUEZ9/BNSK0 x8WAXfa5uD75St4OxQlZYfmPmNz+ydo= X-Google-Smtp-Source: ABdhPJzBgVfz4Z7HJuz4fK9611Q3wOiHSnIWwzHJIOBcwdHjdELgz0izsdqqNQGxEixMAD6Z8wRIIg== X-Received: by 2002:a17:907:2da6:: with SMTP id gt38mr6420565ejc.528.1624274319741; Mon, 21 Jun 2021 04:18:39 -0700 (PDT) Received: from ?IPv6:2a02:908:1252:fb60:aae5:6e05:c:d69? ([2a02:908:1252:fb60:aae5:6e05:c:d69]) by smtp.gmail.com with ESMTPSA id hz11sm2569257ejc.125.2021.06.21.04.18.38 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 21 Jun 2021 04:18:39 -0700 (PDT) Subject: Re: [PATCH 1/1] drm/amdgpu: add helper function for vm pasid To: "Das, Nirmoy" , =?UTF-8?Q?Christian_K=c3=b6nig?= , amd-gfx@lists.freedesktop.org References: <20210617130334.15366-1-nirmoy.das@amd.com> <5745d21a-93e2-4446-3299-f7a807136817@amd.com> <6ae31f0a-712b-0404-5885-c2a7ca244d38@amd.com> <26ce2800-e2f0-2dd6-bf7d-b837a55a3c42@amd.com> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <0952081a-d779-b676-4db7-c828bfd9bfe3@gmail.com> Date: Mon, 21 Jun 2021 13:18:38 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US 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: 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" QW0gMjEuMDYuMjEgdW0gMTM6MTAgc2NocmllYiBEYXMsIE5pcm1veToKPgo+IE9uIDYvMjEvMjAy MSAxMjo1OSBQTSwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPj4gQW0gMjEuMDYuMjEgdW0gMTI6 NTYgc2NocmllYiBEYXMsIE5pcm1veToKPj4+Cj4+PiBPbiA2LzIxLzIwMjEgMTI6MjYgUE0sIENo cmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4+Pj4gV2VsbCB5b3UgY29tcGxldGVseSBicmVhayB0aGUg aGFuZGxpbmcgaW4gYW1kZ3B1X3ZtX2hhbmRsZV9mYXVsdCgpIAo+Pj4+IHdpdGggdGhpcy4KPj4+ Cj4+Pgo+Pj4gSSBzZWUgb25lIGlzc3VlIHdpdGg6wqAgaWYgKCF2bSB8fCAodm0gJiYgdm0tPnJv b3QuYm8gIT0gcm9vdCkpIC4gSSAKPj4+IHdpbGwgc3BsaXQgaXQgYW5kIHJlc2VuZC4KPj4+Cj4+ PiBBbSBJIG1pc3Npbmcgc29tZXRoaW5nIGVsc2UgPwo+Pgo+PiBUaGUgcHJvYmxlbSBpcyB5b3Ug ZHJvcCBhbmQgcmUtdGFrZSB0aGUgbG9jayBub3cgYXQgdGhlIHdyb25nIHRpbWUuCj4KPgo+IEkg c2VlIHRoZSBwcm9ibGVtLgo+Cj4+Cj4+IEkgZG9uJ3QgdGhpbmsgd2hhdCB5b3UgdHJ5IHRvIGRv IGhlcmUgaXMgcG9zc2libGUgYXQgYWxsLgo+Cj4KPiBEb2VzIGl0IG1ha2VzIHNlbnNlIHRvIHJl c2VuZCB3aXRob3V0IGFtZGdwdV92bV9oYW5kbGVfZmF1bHQoKSBjaGFuZ2VzID8KClNvbWUgb3Ro ZXIgY2hhbmdlcyBkb24ndCBtYWtlIHNlbnNlIHRvIG1lIGFzIHdlbGwuCgpGb3IgZXhhbXBsZToK CnBhc2lkID0gYW1kZ3B1X3Bhc2lkX2FsbG9jKDE2KTsKCldoeSBkbyB5b3Ugd2FudCB0byBhbGxv Y2F0ZSBhIGhhcmQgY29kZWQgcGFzaWQgbnVtYmVyIGhlcmU/CgpDaHJpc3RpYW4uCgoKPgo+Pgo+ PiBDaHJpc3RpYW4uCj4+Cj4+Pgo+Pj4KPj4+IFJlZ2FyZHMsCj4+Pgo+Pj4gTmlybW95Cj4+Pgo+ Pj4KPj4+Cj4+Pj4KPj4+PiBDaHJpc3RpYW4uCj4+Pj4KPj4+PiBBbSAyMS4wNi4yMSB1bSAxMTo0 NyBzY2hyaWViIERhcywgTmlybW95Ogo+Pj4+PiBwaW5nLgo+Pj4+Pgo+Pj4+PiBPbiA2LzE3LzIw MjEgMzowMyBQTSwgTmlybW95IERhcyB3cm90ZToKPj4+Pj4+IENsZWFudXAgY29kZSByZWxhdGVk IHRvIHZtIHBhc2lkIGJ5IGFkZGluZyBoZWxwZXIgZnVuY3Rpb24uCj4+Pj4+PiBUaGlzIHJlZHVj ZXMgbG90cyBjb2RlIGR1cGxpY2F0aW9uLgo+Pj4+Pj4KPj4+Pj4+IFNpZ25lZC1vZmYtYnk6IE5p cm1veSBEYXMgPG5pcm1veS5kYXNAYW1kLmNvbT4KPj4+Pj4+IC0tLQo+Pj4+Pj4gwqAgZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ttcy5jIHzCoCAxNyArLS0KPj4+Pj4+IMKgIGRy aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jwqAgfCAxNzYgCj4+Pj4+PiArKysr KysrKysrKystLS0tLS0tLS0tLS0KPj4+Pj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV92bS5owqAgfMKgwqAgMiArLQo+Pj4+Pj4gwqAgMyBmaWxlcyBjaGFuZ2VkLCA5NiBp bnNlcnRpb25zKCspLCA5OSBkZWxldGlvbnMoLSkKPj4+Pj4+Cj4+Pj4+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ttcy5jIAo+Pj4+Pj4gYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfa21zLmMKPj4+Pj4+IGluZGV4IGNiYjkzMmY5NzM1 NS4uMjc4NTFmYjBlMjViIDEwMDY0NAo+Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2ttcy5jCj4+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfa21zLmMKPj4+Pj4+IEBAIC0xMTQ5LDcgKzExNDksNyBAQCBpbnQgYW1kZ3B1X2Ry aXZlcl9vcGVuX2ttcyhzdHJ1Y3QgCj4+Pj4+PiBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1f ZmlsZSAqZmlsZV9wcml2KQo+Pj4+Pj4gwqAgewo+Pj4+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiA9IGRybV90b19hZGV2KGRldik7Cj4+Pj4+PiDCoMKgwqDCoMKgIHN0 cnVjdCBhbWRncHVfZnByaXYgKmZwcml2Owo+Pj4+Pj4gLcKgwqDCoCBpbnQgciwgcGFzaWQ7Cj4+ Pj4+PiArwqDCoMKgIGludCByOwo+Pj4+Pj4gwqAgwqDCoMKgwqDCoCAvKiBFbnN1cmUgSUIgdGVz dHMgYXJlIHJ1biBvbiByaW5nICovCj4+Pj4+PiBmbHVzaF9kZWxheWVkX3dvcmsoJmFkZXYtPmRl bGF5ZWRfaW5pdF93b3JrKTsKPj4+Pj4+IEBAIC0xMTcyLDE1ICsxMTcyLDkgQEAgaW50IGFtZGdw dV9kcml2ZXJfb3Blbl9rbXMoc3RydWN0IAo+Pj4+Pj4gZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGVfcHJpdikKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9z dXNwZW5kOwo+Pj4+Pj4gwqDCoMKgwqDCoCB9Cj4+Pj4+PiDCoCAtwqDCoMKgIHBhc2lkID0gYW1k Z3B1X3Bhc2lkX2FsbG9jKDE2KTsKPj4+Pj4+IC3CoMKgwqAgaWYgKHBhc2lkIDwgMCkgewo+Pj4+ Pj4gLcKgwqDCoMKgwqDCoMKgIGRldl93YXJuKGFkZXYtPmRldiwgIk5vIG1vcmUgUEFTSURzIGF2 YWlsYWJsZSEiKTsKPj4+Pj4+IC3CoMKgwqDCoMKgwqDCoCBwYXNpZCA9IDA7Cj4+Pj4+PiAtwqDC oMKgIH0KPj4+Pj4+IC0KPj4+Pj4+IC3CoMKgwqAgciA9IGFtZGdwdV92bV9pbml0KGFkZXYsICZm cHJpdi0+dm0sIHBhc2lkKTsKPj4+Pj4+ICvCoMKgwqAgciA9IGFtZGdwdV92bV9pbml0KGFkZXYs ICZmcHJpdi0+dm0pOwo+Pj4+Pj4gwqDCoMKgwqDCoCBpZiAocikKPj4+Pj4+IC3CoMKgwqDCoMKg wqDCoCBnb3RvIGVycm9yX3Bhc2lkOwo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gZnJlZV9m cHJpdjsKPj4+Pj4+IMKgIMKgwqDCoMKgwqAgZnByaXYtPnBydF92YSA9IGFtZGdwdV92bV9ib19h ZGQoYWRldiwgJmZwcml2LT52bSwgTlVMTCk7Cj4+Pj4+PiDCoMKgwqDCoMKgIGlmICghZnByaXYt PnBydF92YSkgewo+Pj4+Pj4gQEAgLTEyMDgsMTAgKzEyMDIsNyBAQCBpbnQgYW1kZ3B1X2RyaXZl cl9vcGVuX2ttcyhzdHJ1Y3QgCj4+Pj4+PiBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmls ZSAqZmlsZV9wcml2KQo+Pj4+Pj4gwqAgZXJyb3Jfdm06Cj4+Pj4+PiDCoMKgwqDCoMKgIGFtZGdw dV92bV9maW5pKGFkZXYsICZmcHJpdi0+dm0pOwo+Pj4+Pj4gwqAgLWVycm9yX3Bhc2lkOgo+Pj4+ Pj4gLcKgwqDCoCBpZiAocGFzaWQpCj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X3Bhc2lk X2ZyZWUocGFzaWQpOwo+Pj4+Pj4gLQo+Pj4+Pj4gK2ZyZWVfZnByaXY6Cj4+Pj4+PiDCoMKgwqDC oMKgIGtmcmVlKGZwcml2KTsKPj4+Pj4+IMKgIMKgIG91dF9zdXNwZW5kOgo+Pj4+Pj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jIAo+Pj4+Pj4gYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwo+Pj4+Pj4gaW5kZXggNjM5NzVi ZGE4ZTc2Li41NjJjMmM0OGEzYTMgMTAwNjQ0Cj4+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfdm0uYwo+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X3ZtLmMKPj4+Pj4+IEBAIC04Nyw2ICs4Nyw2OSBAQCBzdHJ1Y3QgYW1kZ3B1 X3BydF9jYiB7Cj4+Pj4+PiDCoMKgwqDCoMKgIHN0cnVjdCBkbWFfZmVuY2VfY2IgY2I7Cj4+Pj4+ PiDCoCB9Owo+Pj4+Pj4gwqAgK3N0YXRpYyBpbnQgYW1kZ3B1X3ZtX3Bhc2lkX2FsbG9jKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LAo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHN0cnVjdCBhbWRncHVfdm0gKnZtLCB1bnNpZ25lZCBpbnQgcGFzaWQpCj4+Pj4+PiAr ewo+Pj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBsb25nIGZsYWdzOwo+Pj4+Pj4gK8KgwqDCoCBpbnQg cjsKPj4+Pj4+ICsKPj4+Pj4+ICvCoMKgwqAgaWYgKCFwYXNpZCkKPj4+Pj4+ICvCoMKgwqDCoMKg wqDCoCByZXR1cm4gMDsKPj4+Pj4+ICsKPj4+Pj4+ICsgc3Bpbl9sb2NrX2lycXNhdmUoJmFkZXYt PnZtX21hbmFnZXIucGFzaWRfbG9jaywgZmxhZ3MpOwo+Pj4+Pj4gK8KgwqDCoCByID0gaWRyX2Fs bG9jKCZhZGV2LT52bV9tYW5hZ2VyLnBhc2lkX2lkciwgdm0sIHBhc2lkLCBwYXNpZCAKPj4+Pj4+ ICsgMSwKPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHRlBfQVRPTUlDKTsKPj4+ Pj4+ICsgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYWRldi0+dm1fbWFuYWdlci5wYXNpZF9sb2Nr LCBmbGFncyk7Cj4+Pj4+PiArwqDCoMKgIGlmIChyIDwgMCkKPj4+Pj4+ICvCoMKgwqDCoMKgwqDC oCByZXR1cm4gcjsKPj4+Pj4+ICsKPj4+Pj4+ICvCoMKgwqAgdm0tPnBhc2lkID0gcGFzaWQ7Cj4+ Pj4+PiArwqDCoMKgIHJldHVybiAwOwo+Pj4+Pj4gK30KPj4+Pj4+ICtzdGF0aWMgdm9pZCBhbWRn cHVfdm1fcGFzaWRfcmVtb3ZlX2lkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+Pj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQg cGFzaWQpCj4+Pj4+PiArewo+Pj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBsb25nIGZsYWdzOwo+Pj4+ Pj4gKwo+Pj4+Pj4gK8KgwqDCoCBpZiAoIXBhc2lkKQo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJl dHVybjsKPj4+Pj4+ICsKPj4+Pj4+ICsgc3Bpbl9sb2NrX2lycXNhdmUoJmFkZXYtPnZtX21hbmFn ZXIucGFzaWRfbG9jaywgZmxhZ3MpOwo+Pj4+Pj4gK8KgwqDCoCBpZHJfcmVtb3ZlKCZhZGV2LT52 bV9tYW5hZ2VyLnBhc2lkX2lkciwgcGFzaWQpOwo+Pj4+Pj4gKyBzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZhZGV2LT52bV9tYW5hZ2VyLnBhc2lkX2xvY2ssIGZsYWdzKTsKPj4+Pj4+ICsKPj4+Pj4+ ICt9Cj4+Pj4+PiArCj4+Pj4+PiArc3RhdGljIHZvaWQgYW1kZ3B1X3ZtX3Bhc2lkX3JlbW92ZShz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV92bSAqdm0pCj4+Pj4+PiArewo+Pj4+Pj4gK8Kg wqDCoCBhbWRncHVfdm1fcGFzaWRfcmVtb3ZlX2lkKGFkZXYsIHZtLT5wYXNpZCk7Cj4+Pj4+PiAr wqDCoMKgIHZtLT5wYXNpZCA9IDA7Cj4+Pj4+PiArfQo+Pj4+Pj4gKwo+Pj4+Pj4gK3N0YXRpYyB2 b2lkIGFtZGdwdV92bV9wYXNpZF9mcmVlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+Pj4+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfdm0gKnZt KQo+Pj4+Pj4gK3sKPj4+Pj4+ICvCoMKgwqAgaWYgKCF2bS0+cGFzaWQpCj4+Pj4+PiArwqDCoMKg wqDCoMKgwqAgcmV0dXJuOwo+Pj4+Pj4gKwo+Pj4+Pj4gK8KgwqDCoCBhbWRncHVfcGFzaWRfZnJl ZSh2bS0+cGFzaWQpOwo+Pj4+Pj4gK8KgwqDCoCBhbWRncHVfdm1fcGFzaWRfcmVtb3ZlKGFkZXYs IHZtKTsKPj4+Pj4+ICt9Cj4+Pj4+PiArCj4+Pj4+PiArc3RhdGljIHN0cnVjdCBhbWRncHVfdm0g KmFtZGdwdV92bV9wYXNpZF9maW5kKHN0cnVjdCAKPj4+Pj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYs Cj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdW5zaWduZWQgaW50IHBhc2lkKQo+Pj4+Pj4gK3sKPj4+Pj4+ICvCoMKgwqAgc3RydWN0IGFt ZGdwdV92bSAqdm07Cj4+Pj4+PiArwqDCoMKgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+Pj4+PiAr Cj4+Pj4+PiArIHNwaW5fbG9ja19pcnFzYXZlKCZhZGV2LT52bV9tYW5hZ2VyLnBhc2lkX2xvY2ss IGZsYWdzKTsKPj4+Pj4+ICvCoMKgwqAgdm0gPSBpZHJfZmluZCgmYWRldi0+dm1fbWFuYWdlci5w YXNpZF9pZHIsIHBhc2lkKTsKPj4+Pj4+ICsgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYWRldi0+ dm1fbWFuYWdlci5wYXNpZF9sb2NrLCBmbGFncyk7Cj4+Pj4+PiArCj4+Pj4+PiArwqDCoMKgIHJl dHVybiB2bTsKPj4+Pj4+ICt9Cj4+Pj4+PiArCj4+Pj4+PiDCoCAvKgo+Pj4+Pj4gwqDCoCAqIHZt IGV2aWN0aW9uX2xvY2sgY2FuIGJlIHRha2VuIGluIE1NVSBub3RpZmllcnMuIE1ha2Ugc3VyZSBu byAKPj4+Pj4+IHJlY2xhaW0tRlMKPj4+Pj4+IMKgwqAgKiBoYXBwZW5zIHdoaWxlIGhvbGRpbmcg dGhpcyBsb2NrIGFueXdoZXJlIHRvIHByZXZlbnQgCj4+Pj4+PiBkZWFkbG9ja3Mgd2hlbgo+Pj4+ Pj4gQEAgLTI4NTksMTcgKzI5MjIsMTcgQEAgbG9uZyBhbWRncHVfdm1fd2FpdF9pZGxlKHN0cnVj dCBhbWRncHVfdm0gCj4+Pj4+PiAqdm0sIGxvbmcgdGltZW91dCkKPj4+Pj4+IMKgwqAgKgo+Pj4+ Pj4gwqDCoCAqIEBhZGV2OiBhbWRncHVfZGV2aWNlIHBvaW50ZXIKPj4+Pj4+IMKgwqAgKiBAdm06 IHJlcXVlc3RlZCB2bQo+Pj4+Pj4gLSAqIEBwYXNpZDogUHJvY2VzcyBhZGRyZXNzIHNwYWNlIGlk ZW50aWZpZXIKPj4+Pj4+IMKgwqAgKgo+Pj4+Pj4gwqDCoCAqIEluaXQgQHZtIGZpZWxkcy4KPj4+ Pj4+IMKgwqAgKgo+Pj4+Pj4gwqDCoCAqIFJldHVybnM6Cj4+Pj4+PiDCoMKgICogMCBmb3Igc3Vj Y2VzcywgZXJyb3IgZm9yIGZhaWx1cmUuCj4+Pj4+PiDCoMKgICovCj4+Pj4+PiAtaW50IGFtZGdw dV92bV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtIAo+ Pj4+Pj4gKnZtLCB1MzIgcGFzaWQpCj4+Pj4+PiAraW50IGFtZGdwdV92bV9pbml0KHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtIAo+Pj4+Pj4gKnZtKQo+Pj4+Pj4g wqAgewo+Pj4+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2JvICpyb290X2JvOwo+Pj4+Pj4g wqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2JvX3ZtICpyb290Owo+Pj4+Pj4gK8KgwqDCoCB1bnNp Z25lZCBpbnQgcGFzaWQ7Cj4+Pj4+PiDCoMKgwqDCoMKgIGludCByLCBpOwo+Pj4+Pj4gwqAgwqDC oMKgwqDCoCB2bS0+dmEgPSBSQl9ST09UX0NBQ0hFRDsKPj4+Pj4+IEBAIC0yOTQwLDE5ICszMDAz LDE1IEBAIGludCBhbWRncHVfdm1faW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAKPj4+Pj4+ICph ZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwgdTMyIHBhc2lkKQo+Pj4+Pj4gwqAgwqDCoMKgwqDC oCBhbWRncHVfYm9fdW5yZXNlcnZlKHZtLT5yb290LmJvKTsKPj4+Pj4+IMKgIC3CoMKgwqAgaWYg KHBhc2lkKSB7Cj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgbG9uZyBmbGFnczsKPj4+ Pj4+IC0KPj4+Pj4+IC0gc3Bpbl9sb2NrX2lycXNhdmUoJmFkZXYtPnZtX21hbmFnZXIucGFzaWRf bG9jaywgZmxhZ3MpOwo+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIHIgPSBpZHJfYWxsb2MoJmFkZXYt PnZtX21hbmFnZXIucGFzaWRfaWRyLCB2bSwgcGFzaWQsIAo+Pj4+Pj4gcGFzaWQgKyAxLAo+Pj4+ Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR0ZQX0FUT01JQyk7Cj4+Pj4+ PiAtIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFkZXYtPnZtX21hbmFnZXIucGFzaWRfbG9jaywg ZmxhZ3MpOwo+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGlmIChyIDwgMCkKPj4+Pj4+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyb3JfZnJlZV9yb290Owo+Pj4+Pj4gLQo+Pj4+Pj4gLcKg wqDCoMKgwqDCoMKgIHZtLT5wYXNpZCA9IHBhc2lkOwo+Pj4+Pj4gK8KgwqDCoCBwYXNpZCA9IGFt ZGdwdV9wYXNpZF9hbGxvYygxNik7Cj4+Pj4+PiArwqDCoMKgIGlmIChwYXNpZCA8IDApIHsKPj4+ Pj4+ICvCoMKgwqDCoMKgwqDCoCBkZXZfd2FybihhZGV2LT5kZXYsICJObyBtb3JlIFBBU0lEcyBh dmFpbGFibGUhIik7Cj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcGFzaWQgPSAwOwo+Pj4+Pj4gwqDC oMKgwqDCoCB9Cj4+Pj4+PiDCoCArwqDCoMKgIGlmIChhbWRncHVfdm1fcGFzaWRfYWxsb2MoYWRl diwgdm0sIHBhc2lkKSkKPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIGVycm9yX2ZyZWVfcGFz aWQ7Cj4+Pj4+PiArCj4+Pj4+PiDCoMKgwqDCoMKgIElOSVRfS0ZJRk8odm0tPmZhdWx0cyk7Cj4+ Pj4+PiDCoCDCoMKgwqDCoMKgIHJldHVybiAwOwo+Pj4+Pj4gQEAgLTI5NjAsNiArMzAxOSwxMCBA QCBpbnQgYW1kZ3B1X3ZtX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgCj4+Pj4+PiAqYWRldiwg c3RydWN0IGFtZGdwdV92bSAqdm0sIHUzMiBwYXNpZCkKPj4+Pj4+IMKgIGVycm9yX3VucmVzZXJ2 ZToKPj4+Pj4+IMKgwqDCoMKgwqAgYW1kZ3B1X2JvX3VucmVzZXJ2ZSh2bS0+cm9vdC5ibyk7Cj4+ Pj4+PiDCoCArZXJyb3JfZnJlZV9wYXNpZDoKPj4+Pj4+ICvCoMKgwqAgaWYgKHBhc2lkKQo+Pj4+ Pj4gK8KgwqDCoMKgwqDCoMKgIGFtZGdwdV9wYXNpZF9mcmVlKHBhc2lkKTsKPj4+Pj4+ICsKPj4+ Pj4+IMKgIGVycm9yX2ZyZWVfcm9vdDoKPj4+Pj4+IMKgwqDCoMKgwqAgYW1kZ3B1X2JvX3VucmVm KCZyb290LT5zaGFkb3cpOwo+Pj4+Pj4gwqDCoMKgwqDCoCBhbWRncHVfYm9fdW5yZWYoJnJvb3Rf Ym8pOwo+Pj4+Pj4gQEAgLTMwMzksMTggKzMxMDIsMTEgQEAgaW50IGFtZGdwdV92bV9tYWtlX2Nv bXB1dGUoc3RydWN0IAo+Pj4+Pj4gYW1kZ3B1X2RldmljZSAqYWRldiwgc3RydWN0IGFtZGdwdV92 bSAqdm0sCj4+Pj4+PiDCoMKgwqDCoMKgIGlmIChyKQo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg IGdvdG8gdW5yZXNlcnZlX2JvOwo+Pj4+Pj4gwqAgLcKgwqDCoCBpZiAocGFzaWQpIHsKPj4+Pj4+ IC3CoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIGZsYWdzOwo+Pj4+Pj4gLQo+Pj4+Pj4gLSBz cGluX2xvY2tfaXJxc2F2ZSgmYWRldi0+dm1fbWFuYWdlci5wYXNpZF9sb2NrLCBmbGFncyk7Cj4+ Pj4+PiAtwqDCoMKgwqDCoMKgwqAgciA9IGlkcl9hbGxvYygmYWRldi0+dm1fbWFuYWdlci5wYXNp ZF9pZHIsIHZtLCBwYXNpZCwgCj4+Pj4+PiBwYXNpZCArIDEsCj4+Pj4+PiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHRlBfQVRPTUlDKTsKPj4+Pj4+IC0gc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmYWRldi0+dm1fbWFuYWdlci5wYXNpZF9sb2NrLCBmbGFncyk7Cj4+Pj4+PiAr wqDCoMKgIHIgPSBhbWRncHVfdm1fcGFzaWRfYWxsb2MoYWRldiwgdm0sIHBhc2lkKTsKPj4+Pj4+ ICvCoMKgwqAgaWYgKHIgPT3CoCAtRU5PU1BDKQo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8g dW5yZXNlcnZlX2JvOwo+Pj4+Pj4gwqAgLcKgwqDCoMKgwqDCoMKgIGlmIChyID09IC1FTk9TUEMp Cj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIHVucmVzZXJ2ZV9ibzsKPj4+Pj4+ IC3CoMKgwqDCoMKgwqDCoCByID0gMDsKPj4+Pj4+IC3CoMKgwqAgfQo+Pj4+Pj4gK8KgwqDCoCBy ID0gMDsKPj4+Pj4+IMKgIMKgwqDCoMKgwqAgLyogQ2hlY2sgaWYgUEQgbmVlZHMgdG8gYmUgcmVp bml0aWFsaXplZCBhbmQgZG8gaXQgYmVmb3JlCj4+Pj4+PiDCoMKgwqDCoMKgwqAgKiBjaGFuZ2lu ZyBhbnkgb3RoZXIgc3RhdGUsIGluIGNhc2UgaXQgZmFpbHMuCj4+Pj4+PiBAQCAtMzA4OCwxOSAr MzE0NCw3IEBAIGludCBhbWRncHVfdm1fbWFrZV9jb21wdXRlKHN0cnVjdCAKPj4+Pj4+IGFtZGdw dV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfdm0gKnZtLAo+Pj4+Pj4gwqDCoMKgwqDCoCB2 bS0+bGFzdF91cGRhdGUgPSBOVUxMOwo+Pj4+Pj4gwqDCoMKgwqDCoCB2bS0+aXNfY29tcHV0ZV9j b250ZXh0ID0gdHJ1ZTsKPj4+Pj4+IMKgIC3CoMKgwqAgaWYgKHZtLT5wYXNpZCkgewo+Pj4+Pj4g LcKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+Pj4+PiAtCj4+Pj4+PiAtIHNw aW5fbG9ja19pcnFzYXZlKCZhZGV2LT52bV9tYW5hZ2VyLnBhc2lkX2xvY2ssIGZsYWdzKTsKPj4+ Pj4+IC3CoMKgwqDCoMKgwqDCoCBpZHJfcmVtb3ZlKCZhZGV2LT52bV9tYW5hZ2VyLnBhc2lkX2lk ciwgdm0tPnBhc2lkKTsKPj4+Pj4+IC0gc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYWRldi0+dm1f bWFuYWdlci5wYXNpZF9sb2NrLCBmbGFncyk7Cj4+Pj4+PiAtCj4+Pj4+PiAtwqDCoMKgwqDCoMKg wqAgLyogRnJlZSB0aGUgb3JpZ2luYWwgYW1kZ3B1IGFsbG9jYXRlZCBwYXNpZAo+Pj4+Pj4gLcKg wqDCoMKgwqDCoMKgwqAgKiBXaWxsIGJlIHJlcGxhY2VkIHdpdGgga2ZkIGFsbG9jYXRlZCBwYXNp ZAo+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqAgKi8KPj4+Pj4+IC3CoMKgwqDCoMKgwqDCoCBhbWRn cHVfcGFzaWRfZnJlZSh2bS0+cGFzaWQpOwo+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIHZtLT5wYXNp ZCA9IDA7Cj4+Pj4+PiAtwqDCoMKgIH0KPj4+Pj4+ICvCoMKgwqAgYW1kZ3B1X3ZtX3Bhc2lkX2Zy ZWUoYWRldiwgdm0pOwo+Pj4+Pj4gwqAgwqDCoMKgwqDCoCAvKiBGcmVlIHRoZSBzaGFkb3cgYm8g Zm9yIGNvbXB1dGUgVk0gKi8KPj4+Pj4+IGFtZGdwdV9ib191bnJlZigmdG9fYW1kZ3B1X2JvX3Zt KHZtLT5yb290LmJvKS0+c2hhZG93KTsKPj4+Pj4+IEBAIC0zMTExLDEzICszMTU1LDggQEAgaW50 IGFtZGdwdV92bV9tYWtlX2NvbXB1dGUoc3RydWN0IAo+Pj4+Pj4gYW1kZ3B1X2RldmljZSAqYWRl diwgc3RydWN0IGFtZGdwdV92bSAqdm0sCj4+Pj4+PiDCoMKgwqDCoMKgIGdvdG8gdW5yZXNlcnZl X2JvOwo+Pj4+Pj4gwqAgwqAgZnJlZV9pZHI6Cj4+Pj4+PiAtwqDCoMKgIGlmIChwYXNpZCkgewo+ Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+Pj4+PiArwqDCoMKg IGFtZGdwdV92bV9wYXNpZF9yZW1vdmVfaWQoYWRldiwgcGFzaWQpOwo+Pj4+Pj4gwqAgLSBzcGlu X2xvY2tfaXJxc2F2ZSgmYWRldi0+dm1fbWFuYWdlci5wYXNpZF9sb2NrLCBmbGFncyk7Cj4+Pj4+ PiAtwqDCoMKgwqDCoMKgwqAgaWRyX3JlbW92ZSgmYWRldi0+dm1fbWFuYWdlci5wYXNpZF9pZHIs IHBhc2lkKTsKPj4+Pj4+IC0gc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYWRldi0+dm1fbWFuYWdl ci5wYXNpZF9sb2NrLCBmbGFncyk7Cj4+Pj4+PiAtwqDCoMKgIH0KPj4+Pj4+IMKgIHVucmVzZXJ2 ZV9ibzoKPj4+Pj4+IMKgwqDCoMKgwqAgYW1kZ3B1X2JvX3VucmVzZXJ2ZSh2bS0+cm9vdC5ibyk7 Cj4+Pj4+PiDCoMKgwqDCoMKgIHJldHVybiByOwo+Pj4+Pj4gQEAgLTMxMzMsMTQgKzMxNzIsNyBA QCBpbnQgYW1kZ3B1X3ZtX21ha2VfY29tcHV0ZShzdHJ1Y3QgCj4+Pj4+PiBhbWRncHVfZGV2aWNl ICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwKPj4+Pj4+IMKgwqAgKi8KPj4+Pj4+IMKgIHZv aWQgYW1kZ3B1X3ZtX3JlbGVhc2VfY29tcHV0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwg Cj4+Pj4+PiBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSkKPj4+Pj4+IMKgIHsKPj4+Pj4+IC3CoMKgwqAg aWYgKHZtLT5wYXNpZCkgewo+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgZmxh Z3M7Cj4+Pj4+PiAtCj4+Pj4+PiAtIHNwaW5fbG9ja19pcnFzYXZlKCZhZGV2LT52bV9tYW5hZ2Vy LnBhc2lkX2xvY2ssIGZsYWdzKTsKPj4+Pj4+IC3CoMKgwqDCoMKgwqDCoCBpZHJfcmVtb3ZlKCZh ZGV2LT52bV9tYW5hZ2VyLnBhc2lkX2lkciwgdm0tPnBhc2lkKTsKPj4+Pj4+IC0gc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmYWRldi0+dm1fbWFuYWdlci5wYXNpZF9sb2NrLCBmbGFncyk7Cj4+Pj4+ PiAtwqDCoMKgIH0KPj4+Pj4+IC3CoMKgwqAgdm0tPnBhc2lkID0gMDsKPj4+Pj4+ICvCoMKgwqAg YW1kZ3B1X3ZtX3Bhc2lkX3JlbW92ZShhZGV2LCB2bSk7Cj4+Pj4+PiDCoMKgwqDCoMKgIHZtLT5p c19jb21wdXRlX2NvbnRleHQgPSBmYWxzZTsKPj4+Pj4+IMKgIH0KPj4+Pj4+IMKgIEBAIC0zMTY0 LDE1ICszMTk2LDcgQEAgdm9pZCBhbWRncHVfdm1fZmluaShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAK Pj4+Pj4+ICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSkKPj4+Pj4+IMKgIMKgwqDCoMKgwqAg cm9vdCA9IGFtZGdwdV9ib19yZWYodm0tPnJvb3QuYm8pOwo+Pj4+Pj4gwqDCoMKgwqDCoCBhbWRn cHVfYm9fcmVzZXJ2ZShyb290LCB0cnVlKTsKPj4+Pj4+IC3CoMKgwqAgaWYgKHZtLT5wYXNpZCkg ewo+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+Pj4+PiAtCj4+ Pj4+PiAtIHNwaW5fbG9ja19pcnFzYXZlKCZhZGV2LT52bV9tYW5hZ2VyLnBhc2lkX2xvY2ssIGZs YWdzKTsKPj4+Pj4+IC3CoMKgwqDCoMKgwqDCoCBpZHJfcmVtb3ZlKCZhZGV2LT52bV9tYW5hZ2Vy LnBhc2lkX2lkciwgdm0tPnBhc2lkKTsKPj4+Pj4+IC0gc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm YWRldi0+dm1fbWFuYWdlci5wYXNpZF9sb2NrLCBmbGFncyk7Cj4+Pj4+PiAtwqDCoMKgwqDCoMKg wqAgdm0tPnBhc2lkID0gMDsKPj4+Pj4+IC3CoMKgwqAgfQo+Pj4+Pj4gLQo+Pj4+Pj4gK8KgwqDC oCBhbWRncHVfdm1fcGFzaWRfcmVtb3ZlKGFkZXYsIHZtKTsKPj4+Pj4+IMKgwqDCoMKgwqAgZG1h X2ZlbmNlX3dhaXQodm0tPmxhc3RfdW5sb2NrZWQsIGZhbHNlKTsKPj4+Pj4+IMKgwqDCoMKgwqAg ZG1hX2ZlbmNlX3B1dCh2bS0+bGFzdF91bmxvY2tlZCk7Cj4+Pj4+PiDCoCBAQCAtMzMzNCwxNiAr MzM1OCwxMCBAQCBpbnQgYW1kZ3B1X3ZtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlIAo+Pj4+Pj4g KmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxwKQo+Pj4+Pj4gwqAgdm9pZCBh bWRncHVfdm1fZ2V0X3Rhc2tfaW5mbyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdTMyIAo+ Pj4+Pj4gcGFzaWQsCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBh bWRncHVfdGFza19pbmZvICp0YXNrX2luZm8pCj4+Pj4+PiDCoCB7Cj4+Pj4+PiAtwqDCoMKgIHN0 cnVjdCBhbWRncHVfdm0gKnZtOwo+Pj4+Pj4gLcKgwqDCoCB1bnNpZ25lZCBsb25nIGZsYWdzOwo+ Pj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSA9IGFtZGdwdV92bV9wYXNpZF9maW5k KGFkZXYsIHBhc2lkKTsKPj4+Pj4+IMKgIC0gc3Bpbl9sb2NrX2lycXNhdmUoJmFkZXYtPnZtX21h bmFnZXIucGFzaWRfbG9jaywgZmxhZ3MpOwo+Pj4+Pj4gLQo+Pj4+Pj4gLcKgwqDCoCB2bSA9IGlk cl9maW5kKCZhZGV2LT52bV9tYW5hZ2VyLnBhc2lkX2lkciwgcGFzaWQpOwo+Pj4+Pj4gwqDCoMKg wqDCoCBpZiAodm0pCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKnRhc2tfaW5mbyA9IHZtLT50 YXNrX2luZm87Cj4+Pj4+PiAtCj4+Pj4+PiAtIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFkZXYt PnZtX21hbmFnZXIucGFzaWRfbG9jaywgZmxhZ3MpOwo+Pj4+Pj4gwqAgfQo+Pj4+Pj4gwqAgwqAg LyoqCj4+Pj4+PiBAQCAtMzM4MCwyNCArMzM5OCwxNiBAQCBib29sIGFtZGdwdV92bV9oYW5kbGVf ZmF1bHQoc3RydWN0IAo+Pj4+Pj4gYW1kZ3B1X2RldmljZSAqYWRldiwgdTMyIHBhc2lkLAo+Pj4+ Pj4gwqAgewo+Pj4+Pj4gwqDCoMKgwqDCoCBib29sIGlzX2NvbXB1dGVfY29udGV4dCA9IGZhbHNl Owo+Pj4+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2JvICpyb290Owo+Pj4+Pj4gLcKgwqDC oCB1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+Pj4+Pj4gwqDCoMKgwqDCoCB1aW50NjRfdCB2YWx1 ZSwgZmxhZ3M7Cj4+Pj4+PiDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfdm0gKnZtOwo+Pj4+Pj4g wqDCoMKgwqDCoCBpbnQgcjsKPj4+Pj4+IMKgIC0gc3Bpbl9sb2NrX2lycXNhdmUoJmFkZXYtPnZt X21hbmFnZXIucGFzaWRfbG9jaywgaXJxZmxhZ3MpOwo+Pj4+Pj4gLcKgwqDCoCB2bSA9IGlkcl9m aW5kKCZhZGV2LT52bV9tYW5hZ2VyLnBhc2lkX2lkciwgcGFzaWQpOwo+Pj4+Pj4gLcKgwqDCoCBp ZiAodm0pIHsKPj4+Pj4+IC3CoMKgwqDCoMKgwqDCoCByb290ID0gYW1kZ3B1X2JvX3JlZih2bS0+ cm9vdC5ibyk7Cj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgaXNfY29tcHV0ZV9jb250ZXh0ID0gdm0t PmlzX2NvbXB1dGVfY29udGV4dDsKPj4+Pj4+IC3CoMKgwqAgfSBlbHNlIHsKPj4+Pj4+IC3CoMKg wqDCoMKgwqDCoCByb290ID0gTlVMTDsKPj4+Pj4+IC3CoMKgwqAgfQo+Pj4+Pj4gLSBzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZhZGV2LT52bV9tYW5hZ2VyLnBhc2lkX2xvY2ssIGlycWZsYWdzKTsK Pj4+Pj4+IC0KPj4+Pj4+IC3CoMKgwqAgaWYgKCFyb290KQo+Pj4+Pj4gK8KgwqDCoCB2bSA9IGFt ZGdwdV92bV9wYXNpZF9maW5kKGFkZXYsIHBhc2lkKTsKPj4+Pj4+ICvCoMKgwqAgaWYgKCF2bSkK Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gZmFsc2U7Cj4+Pj4+PiDCoCArwqDCoMKg IHJvb3QgPSBhbWRncHVfYm9fcmVmKHZtLT5yb290LmJvKTsKPj4+Pj4+ICvCoMKgwqDCoMKgwqDC oCBpc19jb21wdXRlX2NvbnRleHQgPSB2bS0+aXNfY29tcHV0ZV9jb250ZXh0Owo+Pj4+Pj4gwqDC oMKgwqDCoCBhZGRyIC89IEFNREdQVV9HUFVfUEFHRV9TSVpFOwo+Pj4+Pj4gwqAgwqDCoMKgwqDC oCBpZiAoaXNfY29tcHV0ZV9jb250ZXh0ICYmCj4+Pj4+PiBAQCAtMzQxMSwxMiArMzQyMSw4IEBA IGJvb2wgYW1kZ3B1X3ZtX2hhbmRsZV9mYXVsdChzdHJ1Y3QgCj4+Pj4+PiBhbWRncHVfZGV2aWNl ICphZGV2LCB1MzIgcGFzaWQsCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJvcl91 bnJlZjsKPj4+Pj4+IMKgIMKgwqDCoMKgwqAgLyogRG91YmxlIGNoZWNrIHRoYXQgdGhlIFZNIHN0 aWxsIGV4aXN0cyAqLwo+Pj4+Pj4gLSBzcGluX2xvY2tfaXJxc2F2ZSgmYWRldi0+dm1fbWFuYWdl ci5wYXNpZF9sb2NrLCBpcnFmbGFncyk7Cj4+Pj4+PiAtwqDCoMKgIHZtID0gaWRyX2ZpbmQoJmFk ZXYtPnZtX21hbmFnZXIucGFzaWRfaWRyLCBwYXNpZCk7Cj4+Pj4+PiAtwqDCoMKgIGlmICh2bSAm JiB2bS0+cm9vdC5ibyAhPSByb290KQo+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIHZtID0gTlVMTDsK Pj4+Pj4+IC0gc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYWRldi0+dm1fbWFuYWdlci5wYXNpZF9s b2NrLCBpcnFmbGFncyk7Cj4+Pj4+PiAtwqDCoMKgIGlmICghdm0pCj4+Pj4+PiArwqDCoMKgIHZt ID0gYW1kZ3B1X3ZtX3Bhc2lkX2ZpbmQoYWRldiwgcGFzaWQpOwo+Pj4+Pj4gK8KgwqDCoCBpZiAo IXZtIHx8ICh2bSAmJiB2bS0+cm9vdC5ibyAhPSByb290KSkKPj4+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoCBnb3RvIGVycm9yX3VubG9jazsKPj4+Pj4+IMKgIMKgwqDCoMKgwqAgZmxhZ3MgPSBBTURH UFVfUFRFX1ZBTElEIHwgQU1ER1BVX1BURV9TTk9PUEVEIHwKPj4+Pj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uaCAKPj4+Pj4+IGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmgKPj4+Pj4+IGluZGV4IGRkYjg1YTg1Y2JiYS4u ZWU5OTRlMjFkZmZhIDEwMDY0NAo+Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X3ZtLmgKPj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV92bS5oCj4+Pj4+PiBAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgYW1kZ3B1X3ZtX21hbmFn ZXJfaW5pdChzdHJ1Y3QgCj4+Pj4+PiBhbWRncHVfZGV2aWNlICphZGV2KTsKPj4+Pj4+IMKgIHZv aWQgYW1kZ3B1X3ZtX21hbmFnZXJfZmluaShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7Cj4+ Pj4+PiDCoCDCoCBsb25nIGFtZGdwdV92bV93YWl0X2lkbGUoc3RydWN0IGFtZGdwdV92bSAqdm0s IGxvbmcgdGltZW91dCk7Cj4+Pj4+PiAtaW50IGFtZGdwdV92bV9pbml0KHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtIAo+Pj4+Pj4gKnZtLCB1MzIgcGFzaWQpOwo+ Pj4+Pj4gK2ludCBhbWRncHVfdm1faW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgc3Ry dWN0IGFtZGdwdV92bSAKPj4+Pj4+ICp2bSk7Cj4+Pj4+PiDCoCBpbnQgYW1kZ3B1X3ZtX21ha2Vf Y29tcHV0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgc3RydWN0IAo+Pj4+Pj4gYW1kZ3B1 X3ZtICp2bSwgdTMyIHBhc2lkKTsKPj4+Pj4+IMKgIHZvaWQgYW1kZ3B1X3ZtX3JlbGVhc2VfY29t cHV0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgCj4+Pj4+PiBzdHJ1Y3QgYW1kZ3B1X3Zt ICp2bSk7Cj4+Pj4+PiDCoCB2b2lkIGFtZGdwdV92bV9maW5pKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LCBzdHJ1Y3QgCj4+Pj4+PiBhbWRncHVfdm0gKnZtKTsKPj4+Pgo+Pgo+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gYW1kLWdmeCBtYWlsaW5n IGxpc3QKPiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==