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=-13.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_RED 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 7C608C433E0 for ; Sun, 24 Jan 2021 16:51:33 +0000 (UTC) Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (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 19FF522CA2 for ; Sun, 24 Jan 2021 16:51:32 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 19FF522CA2 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=opensynergy.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=virtualization-bounces@lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id AA180871B8; Sun, 24 Jan 2021 16:51:32 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id PrL8ssv9XoeV; Sun, 24 Jan 2021 16:51:31 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by hemlock.osuosl.org (Postfix) with ESMTP id 3B05187102; Sun, 24 Jan 2021 16:51:31 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 2661FC0FA7; Sun, 24 Jan 2021 16:51:31 +0000 (UTC) Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by lists.linuxfoundation.org (Postfix) with ESMTP id E642DC013A for ; Sun, 24 Jan 2021 16:51:29 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id E1AE585E27 for ; Sun, 24 Jan 2021 16:51:29 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6rZ6zHkgnazY for ; Sun, 24 Jan 2021 16:51:28 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mx1.opensynergy.com (mx1.opensynergy.com [217.66.60.4]) by fraxinus.osuosl.org (Postfix) with ESMTPS id 2FFFD852F6 for ; Sun, 24 Jan 2021 16:51:28 +0000 (UTC) Received: from SR-MAILGATE-02.opensynergy.com (localhost.localdomain [127.0.0.1]) by mx1.opensynergy.com (Proxmox) with ESMTP id 7AB08A147A; Sun, 24 Jan 2021 17:51:26 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=opensynergy.com; h=cc:cc:content-transfer-encoding:content-type:content-type :date:from:from:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=srmailgate02; bh=UPMWevWRlkwJ o6SnyPvwo55u7w/ukdaZRZmJvyJvsIo=; b=FUQZLvuLZSH+Y9FDIsc0Fr1PPtmz 5HQLNgj3MXoql7z2NxEpUeFfUa3bP2To2adAg9/pu7Pb11HJbXc4SB36T82TISd3 X1wbEot1/ELtB7AIXUuo3sTv35lblyq5x8LeGGS4J6J6Yug3fsJOmVa/5FMli4CH N1CiwGxmPT5L+83U4hG/PxoaMZH5TwXtrOy52g5j62BmkDebfBbX1orLtcfy8zlo LeH5F08CzSR7G2uqzGUIaKxO59LQ99bVzMxnN9Kzlmc9f/5lFAwDlWtjiU17GhI5 +NGFnXR5a0gIK8ZD3KnSDeCdYiXOyh9jlBI54m5H6sblQ8uLvbMVKLCeEw== Subject: Re: [PATCH 5/7] ALSA: virtio: PCM substream operators To: "Michael S. Tsirkin" References: <20210120003638.3339987-1-anton.yakovlev@opensynergy.com> <20210120003638.3339987-6-anton.yakovlev@opensynergy.com> <20210120033334-mutt-send-email-mst@kernel.org> From: Anton Yakovlev Message-ID: <61b9fe09-84c7-f109-3242-167bc324844e@opensynergy.com> Date: Sun, 24 Jan 2021 17:51:23 +0100 MIME-Version: 1.0 In-Reply-To: <20210120033334-mutt-send-email-mst@kernel.org> Content-Language: en-US X-ClientProxiedBy: SR-MAIL-02.open-synergy.com (10.26.10.22) To SR-MAIL-01.open-synergy.com (10.26.10.21) Cc: virtio-dev@lists.oasis-open.org, alsa-devel@alsa-project.org, Takashi Iwai , linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" CgpPbiAyMC4wMS4yMDIxIDA5OjM2LCBNaWNoYWVsIFMuIFRzaXJraW4gd3JvdGU6Cj4gQ0FVVElP TjogVGhpcyBlbWFpbCBvcmlnaW5hdGVkIGZyb20gb3V0c2lkZSBvZiB0aGUgb3JnYW5pemF0aW9u Lgo+IERvIG5vdCBjbGljayBsaW5rcyBvciBvcGVuIGF0dGFjaG1lbnRzIHVubGVzcyB5b3UgcmVj b2duaXplIHRoZSBzZW5kZXIgYW5kIGtub3cgdGhlIGNvbnRlbnQgaXMgc2FmZS4KPiAKPiAKPiBP biBXZWQsIEphbiAyMCwgMjAyMSBhdCAwMTozNjozM0FNICswMTAwLCBBbnRvbiBZYWtvdmxldiB3 cm90ZToKPj4gSW50cm9kdWNlIHRoZSBvcGVyYXRvcnMgcmVxdWlyZWQgZm9yIHRoZSBvcGVyYXRp b24gb2Ygc3Vic3RyZWFtcy4KPj4KPj4gU2lnbmVkLW9mZi1ieTogQW50b24gWWFrb3ZsZXYgPGFu dG9uLnlha292bGV2QG9wZW5zeW5lcmd5LmNvbT4KPj4gLS0tCj4+ICAgc291bmQvdmlydGlvL01h a2VmaWxlICAgICAgICAgfCAgIDMgKy0KPj4gICBzb3VuZC92aXJ0aW8vdmlydGlvX3BjbS5jICAg ICB8ICAgNSArLQo+PiAgIHNvdW5kL3ZpcnRpby92aXJ0aW9fcGNtLmggICAgIHwgICAyICsKPj4g ICBzb3VuZC92aXJ0aW8vdmlydGlvX3BjbV9vcHMuYyB8IDUwOSArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCj4+ICAgNCBmaWxlcyBjaGFuZ2VkLCA1MTcgaW5zZXJ0aW9ucygrKSwg MiBkZWxldGlvbnMoLSkKPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgc291bmQvdmlydGlvL3ZpcnRp b19wY21fb3BzLmMKPj4KPj4gZGlmZiAtLWdpdCBhL3NvdW5kL3ZpcnRpby9NYWtlZmlsZSBiL3Nv dW5kL3ZpcnRpby9NYWtlZmlsZQo+PiBpbmRleCA2MjZhZjNjYzNlZDcuLjM0NDkzMjI2NzkzZiAx MDA2NDQKPj4gLS0tIGEvc291bmQvdmlydGlvL01ha2VmaWxlCj4+ICsrKyBiL3NvdW5kL3ZpcnRp by9NYWtlZmlsZQo+PiBAQCAtNiw1ICs2LDYgQEAgdmlydGlvX3NuZC1vYmpzIDo9IFwKPj4gICAg ICAgIHZpcnRpb19jYXJkLm8gXAo+PiAgICAgICAgdmlydGlvX2N0bF9tc2cubyBcCj4+ICAgICAg ICB2aXJ0aW9fcGNtLm8gXAo+PiAtICAgICB2aXJ0aW9fcGNtX21zZy5vCj4+ICsgICAgIHZpcnRp b19wY21fbXNnLm8gXAo+PiArICAgICB2aXJ0aW9fcGNtX29wcy5vCj4+Cj4+IGRpZmYgLS1naXQg YS9zb3VuZC92aXJ0aW8vdmlydGlvX3BjbS5jIGIvc291bmQvdmlydGlvL3ZpcnRpb19wY20uYwo+ PiBpbmRleCAxYWI1MGRjYzg4YzguLjZhMWNhNmIyYzNjYSAxMDA2NDQKPj4gLS0tIGEvc291bmQv dmlydGlvL3ZpcnRpb19wY20uYwo+PiArKysgYi9zb3VuZC92aXJ0aW8vdmlydGlvX3BjbS5jCj4+ IEBAIC0xMjEsNyArMTIxLDggQEAgc3RhdGljIGludCB2aXJ0c25kX3BjbV9idWlsZF9odyhzdHJ1 Y3QgdmlydGlvX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKPj4gICAgICAgICAgICAgICAgU05E UlZfUENNX0lORk9fTU1BUF9WQUxJRCB8Cj4+ICAgICAgICAgICAgICAgIFNORFJWX1BDTV9JTkZP X0JBVENIIHwKPj4gICAgICAgICAgICAgICAgU05EUlZfUENNX0lORk9fQkxPQ0tfVFJBTlNGRVIg fAo+PiAtICAgICAgICAgICAgIFNORFJWX1BDTV9JTkZPX0lOVEVSTEVBVkVEOwo+PiArICAgICAg ICAgICAgIFNORFJWX1BDTV9JTkZPX0lOVEVSTEVBVkVEIHwKPj4gKyAgICAgICAgICAgICBTTkRS Vl9QQ01fSU5GT19QQVVTRTsKPj4KPj4gICAgICAgIGlmICghaW5mby0+Y2hhbm5lbHNfbWluIHx8 IGluZm8tPmNoYW5uZWxzX21pbiA+IGluZm8tPmNoYW5uZWxzX21heCkgewo+PiAgICAgICAgICAg ICAgICBkZXZfZXJyKCZ2ZGV2LT5kZXYsCj4+IEBAIC01MDMsNiArNTA0LDggQEAgaW50IHZpcnRz bmRfcGNtX2J1aWxkX2RldnMoc3RydWN0IHZpcnRpb19zbmQgKnNuZCkKPj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmIChyYykKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIHJjOwo+PiAgICAgICAgICAgICAgICAgICAgICAgIH0KPj4gKwo+ PiArICAgICAgICAgICAgICAgICAgICAgc25kX3BjbV9zZXRfb3BzKHBjbS0+cGNtLCBpLCAmdmly dHNuZF9wY21fb3BzKTsKPj4gICAgICAgICAgICAgICAgfQo+Pgo+PiAgICAgICAgcmV0dXJuIDA7 Cj4+IGRpZmYgLS1naXQgYS9zb3VuZC92aXJ0aW8vdmlydGlvX3BjbS5oIGIvc291bmQvdmlydGlv L3ZpcnRpb19wY20uaAo+PiBpbmRleCBkMDExYjdlMWQxOGQuLmZlNDY3YmMwNWQ4YiAxMDA2NDQK Pj4gLS0tIGEvc291bmQvdmlydGlvL3ZpcnRpb19wY20uaAo+PiArKysgYi9zb3VuZC92aXJ0aW8v dmlydGlvX3BjbS5oCj4+IEBAIC05MCw2ICs5MCw4IEBAIHN0cnVjdCB2aXJ0aW9fcGNtIHsKPj4g ICAgICAgIHN0cnVjdCB2aXJ0aW9fcGNtX3N0cmVhbSBzdHJlYW1zW1NORFJWX1BDTV9TVFJFQU1f TEFTVCArIDFdOwo+PiAgIH07Cj4+Cj4+ICtleHRlcm4gY29uc3Qgc3RydWN0IHNuZF9wY21fb3Bz IHZpcnRzbmRfcGNtX29wczsKPj4gKwo+PiAgIGludCB2aXJ0c25kX3BjbV92YWxpZGF0ZShzdHJ1 Y3QgdmlydGlvX2RldmljZSAqdmRldik7Cj4+Cj4+ICAgaW50IHZpcnRzbmRfcGNtX3BhcnNlX2Nm ZyhzdHJ1Y3QgdmlydGlvX3NuZCAqc25kKTsKPj4gZGlmZiAtLWdpdCBhL3NvdW5kL3ZpcnRpby92 aXJ0aW9fcGNtX29wcy5jIGIvc291bmQvdmlydGlvL3ZpcnRpb19wY21fb3BzLmMKPj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwMDAwLi44ZDI2YzExNDRhZDYKPj4gLS0t IC9kZXYvbnVsbAo+PiArKysgYi9zb3VuZC92aXJ0aW8vdmlydGlvX3BjbV9vcHMuYwo+PiBAQCAt MCwwICsxLDUwOSBAQAo+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArCj4+ ICsvKgo+PiArICogU291bmQgY2FyZCBkcml2ZXIgZm9yIHZpcnRpbwo+PiArICogQ29weXJpZ2h0 IChDKSAyMDIwICBPcGVuU3luZXJneSBHbWJICj4+ICsgKgo+PiArICogVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPj4g KyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5Cj4+ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgo+PiArICogKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KPj4gKyAqCj4+ICsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPj4gKyAqIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4+ICsg KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCj4+ICsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz Lgo+PiArICoKPj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCj4+ICsgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg aWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgo+PiArICovCj4+ICsj aW5jbHVkZSA8c291bmQvcGNtX3BhcmFtcy5oPgo+PiArCj4+ICsjaW5jbHVkZSAidmlydGlvX2Nh cmQuaCIKPj4gKwo+PiArLyoKPj4gKyAqIE91ciBtYWluIGNvbmNlcm4gaGVyZSBpcyBtYWludGFp bmluZyB0aGUgY29ycmVjdCBzdGF0ZSBvZiB0aGUgdW5kZXJseWluZyBJL08KPj4gKyAqIHZpcnRx dWV1ZXMuIFRodXMsIG9wZXJhdG9ycyBhcmUgaW1wbGVtZW50ZWQgdG8gc3VwcG9ydCBhbGwgb2Yg dGhlIGZvbGxvd2luZwo+PiArICogcG9zc2libGUgY29udHJvbCBwYXRocyAoZXhjbHVkaW5nIGFs bCB0cml2aWFsIG9uZXMpOgo+PiArICoKPj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgKy0t LS0tLS0tLSsKPj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgfCBvcGVuKCkgIHw8LS0tLS0t LS0tLS0tLS0tLS0tKwo+PiArICogICAgICAgICAgICAgICAgICAgICAgICArLS0tLSstLS0tKyAg ICAgICAgICAgICAgICAgICB8Cj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAg ICAgICAgICAgICAgICAgICAgICAgIHwKPj4gKyAqICAgICAgICAgICAgICAgICAgICAgICstLS0t LS0rLS0tLS0tKyAgICAgICAgICAgICAgICAgfAo+PiArICogICAgICAgKy0tLS0tLS0tLS0tLS0+ fCBod19wYXJhbXMoKSB8PC0tLS0tLS0tLS0tLS0rICB8Cj4+ICsgKiAgICAgICB8ICAgICAgICAg ICAgICArLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgIHwgIHwKPj4gKyAqICAgICAgIHwgICAg ICAgICAgICAgICAgICAgICB2ICAgICAgICAgICAgICAgICAgICAgfCAgfAo+PiArICogICAgICAg fCAgICAgICAgICAgICAgICstLS0tLS0tLS0tLSsgICAgICAgICAgICAgICB8ICB8Cj4+ICsgKiAg ICAgICB8ICAgICAgICAgICAgICAgfCBwcmVwYXJlKCkgfDwtLS0tLS0tLS0tLSsgIHwgIHwKPj4g KyAqICAgICAgIHwgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0rICAgICAgICAgICAgfCAgfCAg fAo+PiArICogICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHYgICAgICAgICAgICAgICAgICB8 ICB8ICB8Cj4+ICsgKiAgICAgICB8ICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsg ICAgIHwgIHwgIHwKPj4gKyAqICstLS0tLS0tLS0tLSsgIHwgdHJpZ2dlcihTVEFSVC8gICAgICAg ICAgfCAgICAgfCAgfCAgfAo+PiArICogfCByZXN0b3JlKCkgfCAgfCAgICAgICAgIFBBVVNFX1JF TEVBU0UvICB8PC0rICB8ICB8ICB8Cj4+ICsgKiArLS0tLS0tLS0tLS0rICB8ICAgICAgICAgUkVT VU1FKSAgICAgICAgIHwgIHwgIHwgIHwgIHwKPj4gKyAqICAgICAgIF4gICAgICAgICstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKyAgfCAgfCAgfCAgfAo+PiArICogICAgICAgfCAgICAgICAgICAg ICAgICAgICAgIHYgICAgICAgICAgICAgICB8ICB8ICB8ICB8Cj4+ICsgKiAgICAgICB8ICAgICAg ICAgICAgICAgKy0tLS0tLS0tLS0tKyAgICAgICAgIHwgIHwgIHwgIHwKPj4gKyAqICAgICAgIHwg ICAgICAgICAgICAgICB8IHBvaW50ZXIoKSB8ICAgICAgICAgfCAgfCAgfCAgfAo+PiArICogICAg ICAgfCAgICAgICAgICAgICAgICstLS0tLS0tLS0tLSsgICAgICAgICB8ICB8ICB8ICB8Cj4+ICsg KiAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgICAgIHwgIHwgIHwgIHwK Pj4gKyAqICAgICAgIHwgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgfCAgfCAg fCAgfAo+PiArICogKy0tLS0tLS0tLS0tKyAgICB8IHRyaWdnZXIoU1RPUC8gICAgICAgfC0tLS0r ICB8ICB8ICB8Cj4+ICsgKiB8IGZyZWV6ZSgpICB8PC0tLXwgICAgICAgICBQQVVTRV9QVVNILyB8 LS0tLS0tLSsgIHwgIHwKPj4gKyAqICstLS0tLS0tLS0tLSsgICAgfCAgICAgICAgIFNVU1BFTkQp ICAgIHwgICAgICAgICAgfCAgfAo+PiArICogICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0t LS0tLS0tLS0tKyAgICAgICAgICB8ICB8Cj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdiAgICAgICAgICAgICAgICAgICAgIHwgIHwKPj4gKyAqICAgICAgICAgICAgICAgICAgICAg ICArLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgfCAgfAo+PiArICogICAgICAgICAgICAgICAg ICAgICAgIHwgaHdfZnJlZSgpIHwtLS0tLS0tLS0tLS0tLS0rICB8Cj4+ICsgKiAgICAgICAgICAg ICAgICAgICAgICAgKy0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgIHwKPj4gKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2ICAgICAgICAgICAgICAgICAgICAgICAgfAo+PiArICog ICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICB8Cj4+ ICsgKiAgICAgICAgICAgICAgICAgICAgICAgIHwgY2xvc2UoKSB8LS0tLS0tLS0tLS0tLS0tLS0t LSsKPj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLSsKPj4gKyAqLwo+PiAr Cj4+ICsvKiBNYXAgZm9yIGNvbnZlcnRpbmcgQUxTQSBmb3JtYXQgdG8gVmlydElPIGZvcm1hdC4g Ki8KPj4gK3N0cnVjdCB2aXJ0c25kX2Eydl9mb3JtYXQgewo+PiArICAgICB1bnNpZ25lZCBpbnQg YWxzYV9iaXQ7Cj4+ICsgICAgIHVuc2lnbmVkIGludCB2aW9fYml0Owo+PiArfTsKPj4gKwo+PiAr c3RhdGljIGNvbnN0IHN0cnVjdCB2aXJ0c25kX2Eydl9mb3JtYXQgZ19hMnZfZm9ybWF0X21hcFtd ID0gewo+PiArICAgICB7IFNORFJWX1BDTV9GT1JNQVRfSU1BX0FEUENNLCBWSVJUSU9fU05EX1BD TV9GTVRfSU1BX0FEUENNIH0sCj4+ICsgICAgIHsgU05EUlZfUENNX0ZPUk1BVF9NVV9MQVcsIFZJ UlRJT19TTkRfUENNX0ZNVF9NVV9MQVcgfSwKPj4gKyAgICAgeyBTTkRSVl9QQ01fRk9STUFUX0Ff TEFXLCBWSVJUSU9fU05EX1BDTV9GTVRfQV9MQVcgfSwKPj4gKyAgICAgeyBTTkRSVl9QQ01fRk9S TUFUX1M4LCBWSVJUSU9fU05EX1BDTV9GTVRfUzggfSwKPj4gKyAgICAgeyBTTkRSVl9QQ01fRk9S TUFUX1U4LCBWSVJUSU9fU05EX1BDTV9GTVRfVTggfSwKPj4gKyAgICAgeyBTTkRSVl9QQ01fRk9S TUFUX1MxNl9MRSwgVklSVElPX1NORF9QQ01fRk1UX1MxNiB9LAo+PiArICAgICB7IFNORFJWX1BD TV9GT1JNQVRfVTE2X0xFLCBWSVJUSU9fU05EX1BDTV9GTVRfVTE2IH0sCj4+ICsgICAgIHsgU05E UlZfUENNX0ZPUk1BVF9TMThfM0xFLCBWSVJUSU9fU05EX1BDTV9GTVRfUzE4XzMgfSwKPj4gKyAg ICAgeyBTTkRSVl9QQ01fRk9STUFUX1UxOF8zTEUsIFZJUlRJT19TTkRfUENNX0ZNVF9VMThfMyB9 LAo+PiArICAgICB7IFNORFJWX1BDTV9GT1JNQVRfUzIwXzNMRSwgVklSVElPX1NORF9QQ01fRk1U X1MyMF8zIH0sCj4+ICsgICAgIHsgU05EUlZfUENNX0ZPUk1BVF9VMjBfM0xFLCBWSVJUSU9fU05E X1BDTV9GTVRfVTIwXzMgfSwKPj4gKyAgICAgeyBTTkRSVl9QQ01fRk9STUFUX1MyNF8zTEUsIFZJ UlRJT19TTkRfUENNX0ZNVF9TMjRfMyB9LAo+PiArICAgICB7IFNORFJWX1BDTV9GT1JNQVRfVTI0 XzNMRSwgVklSVElPX1NORF9QQ01fRk1UX1UyNF8zIH0sCj4+ICsgICAgIHsgU05EUlZfUENNX0ZP Uk1BVF9TMjBfTEUsIFZJUlRJT19TTkRfUENNX0ZNVF9TMjAgfSwKPj4gKyAgICAgeyBTTkRSVl9Q Q01fRk9STUFUX1UyMF9MRSwgVklSVElPX1NORF9QQ01fRk1UX1UyMCB9LAo+PiArICAgICB7IFNO RFJWX1BDTV9GT1JNQVRfUzI0X0xFLCBWSVJUSU9fU05EX1BDTV9GTVRfUzI0IH0sCj4+ICsgICAg IHsgU05EUlZfUENNX0ZPUk1BVF9VMjRfTEUsIFZJUlRJT19TTkRfUENNX0ZNVF9VMjQgfSwKPj4g KyAgICAgeyBTTkRSVl9QQ01fRk9STUFUX1MzMl9MRSwgVklSVElPX1NORF9QQ01fRk1UX1MzMiB9 LAo+PiArICAgICB7IFNORFJWX1BDTV9GT1JNQVRfVTMyX0xFLCBWSVJUSU9fU05EX1BDTV9GTVRf VTMyIH0sCj4+ICsgICAgIHsgU05EUlZfUENNX0ZPUk1BVF9GTE9BVF9MRSwgVklSVElPX1NORF9Q Q01fRk1UX0ZMT0FUIH0sCj4+ICsgICAgIHsgU05EUlZfUENNX0ZPUk1BVF9GTE9BVDY0X0xFLCBW SVJUSU9fU05EX1BDTV9GTVRfRkxPQVQ2NCB9LAo+PiArICAgICB7IFNORFJWX1BDTV9GT1JNQVRf RFNEX1U4LCBWSVJUSU9fU05EX1BDTV9GTVRfRFNEX1U4IH0sCj4+ICsgICAgIHsgU05EUlZfUENN X0ZPUk1BVF9EU0RfVTE2X0xFLCBWSVJUSU9fU05EX1BDTV9GTVRfRFNEX1UxNiB9LAo+PiArICAg ICB7IFNORFJWX1BDTV9GT1JNQVRfRFNEX1UzMl9MRSwgVklSVElPX1NORF9QQ01fRk1UX0RTRF9V MzIgfSwKPj4gKyAgICAgeyBTTkRSVl9QQ01fRk9STUFUX0lFQzk1OF9TVUJGUkFNRV9MRSwKPj4g KyAgICAgICBWSVJUSU9fU05EX1BDTV9GTVRfSUVDOTU4X1NVQkZSQU1FIH0KPj4gK307Cj4+ICsK Pj4gKy8qIE1hcCBmb3IgY29udmVydGluZyBBTFNBIGZyYW1lIHJhdGUgdG8gVmlydElPIGZyYW1l IHJhdGUuICovCj4+ICtzdHJ1Y3QgdmlydHNuZF9hMnZfcmF0ZSB7Cj4+ICsgICAgIHVuc2lnbmVk IGludCByYXRlOwo+PiArICAgICB1bnNpZ25lZCBpbnQgdmlvX2JpdDsKPj4gK307Cj4+ICsKPj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydHNuZF9hMnZfcmF0ZSBnX2Eydl9yYXRlX21hcFtdID0g ewo+PiArICAgICB7IDU1MTIsIFZJUlRJT19TTkRfUENNX1JBVEVfNTUxMiB9LAo+PiArICAgICB7 IDgwMDAsIFZJUlRJT19TTkRfUENNX1JBVEVfODAwMCB9LAo+PiArICAgICB7IDExMDI1LCBWSVJU SU9fU05EX1BDTV9SQVRFXzExMDI1IH0sCj4+ICsgICAgIHsgMTYwMDAsIFZJUlRJT19TTkRfUENN X1JBVEVfMTYwMDAgfSwKPj4gKyAgICAgeyAyMjA1MCwgVklSVElPX1NORF9QQ01fUkFURV8yMjA1 MCB9LAo+PiArICAgICB7IDMyMDAwLCBWSVJUSU9fU05EX1BDTV9SQVRFXzMyMDAwIH0sCj4+ICsg ICAgIHsgNDQxMDAsIFZJUlRJT19TTkRfUENNX1JBVEVfNDQxMDAgfSwKPj4gKyAgICAgeyA0ODAw MCwgVklSVElPX1NORF9QQ01fUkFURV80ODAwMCB9LAo+PiArICAgICB7IDY0MDAwLCBWSVJUSU9f U05EX1BDTV9SQVRFXzY0MDAwIH0sCj4+ICsgICAgIHsgODgyMDAsIFZJUlRJT19TTkRfUENNX1JB VEVfODgyMDAgfSwKPj4gKyAgICAgeyA5NjAwMCwgVklSVElPX1NORF9QQ01fUkFURV85NjAwMCB9 LAo+PiArICAgICB7IDE3NjQwMCwgVklSVElPX1NORF9QQ01fUkFURV8xNzY0MDAgfSwKPj4gKyAg ICAgeyAxOTIwMDAsIFZJUlRJT19TTkRfUENNX1JBVEVfMTkyMDAwIH0KPj4gK307Cj4+ICsKPj4g Ky8qKgo+PiArICogdmlydHNuZF9wY21fcmVsZWFzZSgpIC0gUmVsZWFzZSB0aGUgUENNIHN1YnN0 cmVhbSBvbiB0aGUgZGV2aWNlIHNpZGUuCj4+ICsgKiBAc3Vic3RyZWFtOiBWaXJ0SU8gc3Vic3Ry ZWFtLgo+PiArICoKPj4gKyAqIFRoZSBmdW5jdGlvbiB3YWl0cyBmb3IgYWxsIHBlbmRpbmcgSS9P IG1lc3NhZ2VzIHRvIGNvbXBsZXRlLgo+PiArICoKPj4gKyAqIENvbnRleHQ6IEFueSBjb250ZXh0 IHRoYXQgcGVybWl0cyB0byBzbGVlcC4KPj4gKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCAtZXJy bm8gb24gZmFpbHVyZS4KPj4gKyAqLwo+PiArc3RhdGljIGlubGluZSBib29sIHZpcnRzbmRfcGNt X3JlbGVhc2VkKHN0cnVjdCB2aXJ0aW9fcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQo+PiArewo+ PiArICAgICByZXR1cm4gYXRvbWljX3JlYWQoJnN1YnN0cmVhbS0+bXNnX2NvdW50KSA9PSAwOwo+ IAo+IEFsbCB0aGlzIHVzZSBvZiBhdG9taWNfcmVhZC9hdG9taWNfc2V0IGFsbCBvdmVyIHRoZSBw bGFjZSBtYWtlcyBtZSBwYXVzZS4KPiBDb3VsZCB5b3UgYWRkIGRvY3VtZW50YXRpb24gZXhwbGFp bmluZyB0aGUgdXNlIHJ1bGVzIGZvciB0aGVzZSBhdG9taWMgZmllbGRzPwoKSSBhZGRlZCBzb21l IGFkZGl0aW9uYWwgY29tbWVudHMgYWJvdXQgdGhhdCBpbiB2MjoKCiAgIFs1LzldIHZpcnRpb19w Y21fbXNnLmM6dmlydHNuZF9wY21fbXNnX2NvbXBsZXRlKCkKICAgWzYvOV0gdmlydGlvX3BjbV9v cHMuYzp2aXJ0c25kX3BjbV9yZWxlYXNlZCgpCgoKCj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQg dmlydHNuZF9wY21fcmVsZWFzZShzdHJ1Y3QgdmlydGlvX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVh bSkKPj4gK3sKPj4gKyAgICAgc3RydWN0IHZpcnRpb19zbmQgKnNuZCA9IHN1YnN0cmVhbS0+c25k Owo+PiArICAgICBzdHJ1Y3QgdmlydGlvX3NuZF9tc2cgKm1zZzsKPj4gKyAgICAgdW5zaWduZWQg aW50IGpzID0gbXNlY3NfdG9famlmZmllcyhtc2dfdGltZW91dF9tcyk7Cj4+ICsgICAgIGludCBy YzsKPj4gKwo+PiArICAgICBtc2cgPSB2aXJ0c25kX3BjbV9jdGxfbXNnX2FsbG9jKHN1YnN0cmVh bSwgVklSVElPX1NORF9SX1BDTV9SRUxFQVNFLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdGUF9LRVJORUwpOwo+PiArICAgICBpZiAoSVNfRVJSKG1zZykpCj4+ICsg ICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIobXNnKTsKPj4gKwo+PiArICAgICByYyA9IHZpcnRz bmRfY3RsX21zZ19zZW5kX3N5bmMoc25kLCBtc2cpOwo+PiArICAgICBpZiAocmMpCj4+ICsgICAg ICAgICAgICAgcmV0dXJuIHJjOwo+PiArCj4+ICsgICAgIHJldHVybiB3YWl0X2V2ZW50X2ludGVy cnVwdGlibGVfdGltZW91dChzdWJzdHJlYW0tPm1zZ19lbXB0eSwKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnRzbmRfcGNtX3JlbGVhc2VkKHN1YnN0 cmVhbSksCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq cyk7Cj4+ICt9Cj4+ICsKPj4gKy8qKgo+PiArICogdmlydHNuZF9wY21fb3BlbigpIC0gT3BlbiB0 aGUgUENNIHN1YnN0cmVhbS4KPj4gKyAqIEBzdWJzdHJlYW06IEtlcm5lbCBBTFNBIHN1YnN0cmVh bS4KPj4gKyAqCj4+ICsgKiBDb250ZXh0OiBBbnkgY29udGV4dC4KPj4gKyAqIFJldHVybjogMCBv biBzdWNjZXNzLCAtZXJybm8gb24gZmFpbHVyZS4KPj4gKyAqLwo+PiArc3RhdGljIGludCB2aXJ0 c25kX3BjbV9vcGVuKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQo+PiArewo+ PiArICAgICBzdHJ1Y3QgdmlydGlvX3BjbSAqcGNtID0gc25kX3BjbV9zdWJzdHJlYW1fY2hpcChz dWJzdHJlYW0pOwo+PiArICAgICBzdHJ1Y3QgdmlydGlvX3BjbV9zdWJzdHJlYW0gKnNzID0gTlVM TDsKPj4gKwo+PiArICAgICBpZiAocGNtKSB7Cj4+ICsgICAgICAgICAgICAgc3dpdGNoIChzdWJz dHJlYW0tPnN0cmVhbSkgewo+PiArICAgICAgICAgICAgIGNhc2UgU05EUlZfUENNX1NUUkVBTV9Q TEFZQkFDSzoKPj4gKyAgICAgICAgICAgICBjYXNlIFNORFJWX1BDTV9TVFJFQU1fQ0FQVFVSRTog ewo+PiArICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZpcnRpb19wY21fc3RyZWFtICpzdHJl YW0gPQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGNtLT5zdHJlYW1zW3N1YnN0 cmVhbS0+c3RyZWFtXTsKPj4gKwo+PiArICAgICAgICAgICAgICAgICAgICAgaWYgKHN1YnN0cmVh bS0+bnVtYmVyIDwgc3RyZWFtLT5uc3Vic3RyZWFtcykKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3MgPSBzdHJlYW0tPnN1YnN0cmVhbXNbc3Vic3RyZWFtLT5udW1iZXJdOwo+PiAr ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICsgICAgICAgICAgICAgfQo+PiArICAgICAg ICAgICAgIH0KPj4gKyAgICAgfQo+PiArCj4+ICsgICAgIGlmICghc3MpCj4+ICsgICAgICAgICAg ICAgcmV0dXJuIC1FQkFERkQ7Cj4+ICsKPj4gKyAgICAgc3Vic3RyZWFtLT5ydW50aW1lLT5odyA9 IHNzLT5odzsKPj4gKyAgICAgc3Vic3RyZWFtLT5wcml2YXRlX2RhdGEgPSBzczsKPj4gKwo+PiAr ICAgICByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArLyoqCj4+ICsgKiB2aXJ0c25kX3BjbV9jbG9z ZSgpIC0gQ2xvc2UgdGhlIFBDTSBzdWJzdHJlYW0uCj4+ICsgKiBAc3Vic3RyZWFtOiBLZXJuZWwg QUxTQSBzdWJzdHJlYW0uCj4+ICsgKgo+PiArICogQ29udGV4dDogQW55IGNvbnRleHQuCj4+ICsg KiBSZXR1cm46IDAuCj4+ICsgKi8KPj4gK3N0YXRpYyBpbnQgdmlydHNuZF9wY21fY2xvc2Uoc3Ry dWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCj4+ICt7Cj4+ICsgICAgIHJldHVybiAw Owo+PiArfQo+PiArCj4+ICsvKioKPj4gKyAqIHZpcnRzbmRfcGNtX2h3X3BhcmFtcygpIC0gU2V0 IHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBQQ00gc3Vic3RyZWFtLgo+PiArICogQHN1YnN0cmVhbTog S2VybmVsIEFMU0Egc3Vic3RyZWFtLgo+PiArICogQGh3X3BhcmFtczogSGFyZHdhcmUgcGFyYW1l dGVycyAoY2FuIGJlIE5VTEwpLgo+PiArICoKPj4gKyAqIFRoZSBmdW5jdGlvbiBjYW4gYmUgY2Fs bGVkIGJvdGggZnJvbSB0aGUgdXBwZXIgbGV2ZWwgKGluIHRoaXMgY2FzZSwKPj4gKyAqIEBod19w YXJhbXMgaXMgbm90IE5VTEwpIG9yIGZyb20gdGhlIGRyaXZlciBpdHNlbGYgKGluIHRoaXMgY2Fz ZSwgQGh3X3BhcmFtcwo+PiArICogaXMgTlVMTCwgYW5kIHRoZSBwYXJhbWV0ZXIgdmFsdWVzIGFy ZSB0YWtlbiBmcm9tIHRoZSBydW50aW1lIHN0cnVjdHVyZSkuCj4+ICsgKgo+PiArICogSW4gYWxs IGNhc2VzLCB0aGUgZnVuY3Rpb246Cj4+ICsgKiAgIDEuIGNoZWNrcyB0aGUgc3RhdGUgb2YgdGhl IHZpcnRxdWV1ZSBhbmQsIGlmIG5lY2Vzc2FyeSwgdHJpZXMgdG8gZml4IGl0LAo+PiArICogICAy LiBzZXRzIHRoZSBwYXJhbWV0ZXJzIG9uIHRoZSBkZXZpY2Ugc2lkZSwKPj4gKyAqICAgMy4gYWxs b2NhdGVzIGEgaGFyZHdhcmUgYnVmZmVyIGFuZCBJL08gbWVzc2FnZXMuCj4+ICsgKgo+PiArICog Q29udGV4dDogQW55IGNvbnRleHQgdGhhdCBwZXJtaXRzIHRvIHNsZWVwLgo+PiArICogUmV0dXJu OiAwIG9uIHN1Y2Nlc3MsIC1lcnJubyBvbiBmYWlsdXJlLgo+PiArICovCj4+ICtzdGF0aWMgaW50 IHZpcnRzbmRfcGNtX2h3X3BhcmFtcyhzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVh bSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzbmRfcGNtX2h3X3Bh cmFtcyAqaHdfcGFyYW1zKQo+PiArewo+PiArICAgICBzdHJ1Y3Qgc25kX3BjbV9ydW50aW1lICpy dW50aW1lID0gc3Vic3RyZWFtLT5ydW50aW1lOwo+PiArICAgICBzdHJ1Y3QgdmlydGlvX3BjbV9z dWJzdHJlYW0gKnNzID0gc25kX3BjbV9zdWJzdHJlYW1fY2hpcChzdWJzdHJlYW0pOwo+PiArICAg ICBzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldiA9IHNzLT5zbmQtPnZkZXY7Cj4+ICsgICAgIHN0 cnVjdCB2aXJ0aW9fc25kX21zZyAqbXNnOwo+PiArICAgICBzdHJ1Y3QgdmlydGlvX3NuZF9wY21f c2V0X3BhcmFtcyAqcmVxdWVzdDsKPj4gKyAgICAgc25kX3BjbV9mb3JtYXRfdCBmb3JtYXQ7Cj4+ ICsgICAgIHVuc2lnbmVkIGludCBjaGFubmVsczsKPj4gKyAgICAgdW5zaWduZWQgaW50IHJhdGU7 Cj4+ICsgICAgIHVuc2lnbmVkIGludCBidWZmZXJfYnl0ZXM7Cj4+ICsgICAgIHVuc2lnbmVkIGlu dCBwZXJpb2RfYnl0ZXM7Cj4+ICsgICAgIHVuc2lnbmVkIGludCBwZXJpb2RzOwo+PiArICAgICB1 bnNpZ25lZCBpbnQgaTsKPj4gKyAgICAgaW50IHZmb3JtYXQgPSAtMTsKPj4gKyAgICAgaW50IHZy YXRlID0gLTE7Cj4+ICsgICAgIGludCByYzsKPj4gKwo+PiArICAgICAvKgo+PiArICAgICAgKiBJ ZiB3ZSBnb3QgaGVyZSBhZnRlciBvcHMtPnRyaWdnZXIoKSB3YXMgY2FsbGVkLCB0aGUgcXVldWUg bWF5Cj4+ICsgICAgICAqIHN0aWxsIGNvbnRhaW4gbWVzc2FnZXMuIEluIHRoaXMgY2FzZSwgd2Ug bmVlZCB0byByZWxlYXNlIHRoZQo+PiArICAgICAgKiBzdWJzdHJlYW0gZmlyc3QuCj4+ICsgICAg ICAqLwo+PiArICAgICBpZiAoYXRvbWljX3JlYWQoJnNzLT5tc2dfY291bnQpKSB7Cj4+ICsgICAg ICAgICAgICAgcmMgPSB2aXJ0c25kX3BjbV9yZWxlYXNlKHNzKTsKPj4gKyAgICAgICAgICAgICBp ZiAocmMpIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoJnZkZXYtPmRldiwKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNJRCAldTogaW52YWxpZCBJL08gcXVldWUg c3RhdGVcbiIsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzLT5zaWQpOwo+PiAr ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJjOwo+PiArICAgICAgICAgICAgIH0KPj4gKyAg ICAgfQo+PiArCj4+ICsgICAgIC8qIFNldCBoYXJkd2FyZSBwYXJhbWV0ZXJzIGluIGRldmljZSAq Lwo+PiArICAgICBpZiAoaHdfcGFyYW1zKSB7Cj4+ICsgICAgICAgICAgICAgZm9ybWF0ID0gcGFy YW1zX2Zvcm1hdChod19wYXJhbXMpOwo+PiArICAgICAgICAgICAgIGNoYW5uZWxzID0gcGFyYW1z X2NoYW5uZWxzKGh3X3BhcmFtcyk7Cj4+ICsgICAgICAgICAgICAgcmF0ZSA9IHBhcmFtc19yYXRl KGh3X3BhcmFtcyk7Cj4+ICsgICAgICAgICAgICAgYnVmZmVyX2J5dGVzID0gcGFyYW1zX2J1ZmZl cl9ieXRlcyhod19wYXJhbXMpOwo+PiArICAgICAgICAgICAgIHBlcmlvZF9ieXRlcyA9IHBhcmFt c19wZXJpb2RfYnl0ZXMoaHdfcGFyYW1zKTsKPj4gKyAgICAgICAgICAgICBwZXJpb2RzID0gcGFy YW1zX3BlcmlvZHMoaHdfcGFyYW1zKTsKPj4gKyAgICAgfSBlbHNlIHsKPj4gKyAgICAgICAgICAg ICBmb3JtYXQgPSBydW50aW1lLT5mb3JtYXQ7Cj4+ICsgICAgICAgICAgICAgY2hhbm5lbHMgPSBy dW50aW1lLT5jaGFubmVsczsKPj4gKyAgICAgICAgICAgICByYXRlID0gcnVudGltZS0+cmF0ZTsK Pj4gKyAgICAgICAgICAgICBidWZmZXJfYnl0ZXMgPSBmcmFtZXNfdG9fYnl0ZXMocnVudGltZSwg cnVudGltZS0+YnVmZmVyX3NpemUpOwo+PiArICAgICAgICAgICAgIHBlcmlvZF9ieXRlcyA9IGZy YW1lc190b19ieXRlcyhydW50aW1lLCBydW50aW1lLT5wZXJpb2Rfc2l6ZSk7Cj4+ICsgICAgICAg ICAgICAgcGVyaW9kcyA9IHJ1bnRpbWUtPnBlcmlvZHM7Cj4+ICsgICAgIH0KPj4gKwo+PiArICAg ICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShnX2Eydl9mb3JtYXRfbWFwKTsgKytpKQo+PiAr ICAgICAgICAgICAgIGlmIChnX2Eydl9mb3JtYXRfbWFwW2ldLmFsc2FfYml0ID09IGZvcm1hdCkg ewo+PiArICAgICAgICAgICAgICAgICAgICAgdmZvcm1hdCA9IGdfYTJ2X2Zvcm1hdF9tYXBbaV0u dmlvX2JpdDsKPj4gKwo+PiArICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICsgICAgICAg ICAgICAgfQo+PiArCj4+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGdfYTJ2X3Jh dGVfbWFwKTsgKytpKQo+PiArICAgICAgICAgICAgIGlmIChnX2Eydl9yYXRlX21hcFtpXS5yYXRl ID09IHJhdGUpIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgIHZyYXRlID0gZ19hMnZfcmF0ZV9t YXBbaV0udmlvX2JpdDsKPj4gKwo+PiArICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICsg ICAgICAgICAgICAgfQo+PiArCj4+ICsgICAgIGlmICh2Zm9ybWF0ID09IC0xIHx8IHZyYXRlID09 IC0xKQo+PiArICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiArCj4+ICsgICAgIG1zZyA9 IHZpcnRzbmRfcGNtX2N0bF9tc2dfYWxsb2Moc3MsIFZJUlRJT19TTkRfUl9QQ01fU0VUX1BBUkFN UywKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRlBfS0VSTkVMKTsK Pj4gKyAgICAgaWYgKElTX0VSUihtc2cpKQo+PiArICAgICAgICAgICAgIHJldHVybiBQVFJfRVJS KG1zZyk7Cj4+ICsKPj4gKyAgICAgcmVxdWVzdCA9IHNnX3ZpcnQoJm1zZy0+c2dfcmVxdWVzdCk7 Cj4+ICsKPj4gKyAgICAgcmVxdWVzdC0+YnVmZmVyX2J5dGVzID0gY3B1X3RvX3ZpcnRpbzMyKHZk ZXYsIGJ1ZmZlcl9ieXRlcyk7Cj4+ICsgICAgIHJlcXVlc3QtPnBlcmlvZF9ieXRlcyA9IGNwdV90 b192aXJ0aW8zMih2ZGV2LCBwZXJpb2RfYnl0ZXMpOwo+PiArICAgICByZXF1ZXN0LT5jaGFubmVs cyA9IGNoYW5uZWxzOwo+PiArICAgICByZXF1ZXN0LT5mb3JtYXQgPSB2Zm9ybWF0Owo+PiArICAg ICByZXF1ZXN0LT5yYXRlID0gdnJhdGU7Cj4+ICsKPj4gKyAgICAgaWYgKHNzLT5mZWF0dXJlcyAm ICgxVSA8PCBWSVJUSU9fU05EX1BDTV9GX01TR19QT0xMSU5HKSkKPj4gKyAgICAgICAgICAgICBy ZXF1ZXN0LT5mZWF0dXJlcyB8PQo+PiArICAgICAgICAgICAgICAgICAgICAgY3B1X3RvX3ZpcnRp bzMyKHZkZXYsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMVUgPDwg VklSVElPX1NORF9QQ01fRl9NU0dfUE9MTElORyk7Cj4+ICsKPj4gKyAgICAgaWYgKHNzLT5mZWF0 dXJlcyAmICgxVSA8PCBWSVJUSU9fU05EX1BDTV9GX0VWVF9YUlVOUykpCj4+ICsgICAgICAgICAg ICAgcmVxdWVzdC0+ZmVhdHVyZXMgfD0KPj4gKyAgICAgICAgICAgICAgICAgICAgIGNwdV90b192 aXJ0aW8zMih2ZGV2LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFV IDw8IFZJUlRJT19TTkRfUENNX0ZfRVZUX1hSVU5TKTsKPj4gKwo+PiArICAgICByYyA9IHZpcnRz bmRfY3RsX21zZ19zZW5kX3N5bmMoc3MtPnNuZCwgbXNnKTsKPj4gKyAgICAgaWYgKHJjKQo+PiAr ICAgICAgICAgICAgIHJldHVybiByYzsKPj4gKwo+PiArICAgICAvKiBJZiB0aGUgYnVmZmVyIHdh cyBhbHJlYWR5IGFsbG9jYXRlZCBlYXJsaWVyLCBkbyBub3RoaW5nLiAqLwo+PiArICAgICBpZiAo cnVudGltZS0+ZG1hX2FyZWEpCj4+ICsgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+ICsKPj4gKyAg ICAgLyogQWxsb2NhdGUgaGFyZHdhcmUgYnVmZmVyICovCj4+ICsgICAgIHJjID0gc25kX3BjbV9s aWJfbWFsbG9jX3BhZ2VzKHN1YnN0cmVhbSwgYnVmZmVyX2J5dGVzKTsKPj4gKyAgICAgaWYgKHJj IDwgMCkKPj4gKyAgICAgICAgICAgICByZXR1cm4gcmM7Cj4+ICsKPj4gKyAgICAgLyogQWxsb2Nh dGUgYW5kIGluaXRpYWxpemUgSS9PIG1lc3NhZ2VzICovCj4+ICsgICAgIHJjID0gdmlydHNuZF9w Y21fbXNnX2FsbG9jKHNzLCBwZXJpb2RzLCBydW50aW1lLT5kbWFfYXJlYSwKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGVyaW9kX2J5dGVzKTsKPj4gKyAgICAgaWYgKHJjKQo+ PiArICAgICAgICAgICAgIHNuZF9wY21fbGliX2ZyZWVfcGFnZXMoc3Vic3RyZWFtKTsKPj4gKwo+ PiArICAgICByZXR1cm4gcmM7Cj4+ICt9Cj4+ICsKPj4gKy8qKgo+PiArICogdmlydHNuZF9wY21f aHdfZnJlZSgpIC0gUmVzZXQgdGhlIHBhcmFtZXRlcnMgb2YgdGhlIFBDTSBzdWJzdHJlYW0uCj4+ ICsgKiBAc3Vic3RyZWFtOiBLZXJuZWwgQUxTQSBzdWJzdHJlYW0uCj4+ICsgKgo+PiArICogVGhl IGZ1bmN0aW9uIGRvZXMgdGhlIGZvbGxvd2luZzoKPj4gKyAqICAgMS4gdHJpZXMgdG8gcmVsZWFz ZSB0aGUgUENNIHN1YnN0cmVhbSBvbiB0aGUgZGV2aWNlIHNpZGUsCj4+ICsgKiAgIDIuIGZyZWVz IHRoZSBoYXJkd2FyZSBidWZmZXIuCj4+ICsgKgo+PiArICogQ29udGV4dDogQW55IGNvbnRleHQg dGhhdCBwZXJtaXRzIHRvIHNsZWVwLgo+PiArICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIC1lcnJu byBvbiBmYWlsdXJlLgo+PiArICovCj4+ICtzdGF0aWMgaW50IHZpcnRzbmRfcGNtX2h3X2ZyZWUo c3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCj4+ICt7Cj4+ICsgICAgIHN0cnVj dCB2aXJ0aW9fcGNtX3N1YnN0cmVhbSAqc3MgPSBzbmRfcGNtX3N1YnN0cmVhbV9jaGlwKHN1YnN0 cmVhbSk7Cj4+ICsgICAgIGludCByYzsKPj4gKwo+PiArICAgICByYyA9IHZpcnRzbmRfcGNtX3Jl bGVhc2Uoc3MpOwo+PiArCj4+ICsgICAgIC8qCj4+ICsgICAgICAqIEV2ZW4gaWYgd2UgZmFpbGVk IHRvIHNlbmQgdGhlIFJFTEVBU0UgbWVzc2FnZSBvciB3YWl0IGZvciB0aGUgcXVldWUKPj4gKyAg ICAgICogZmx1c2ggdG8gY29tcGxldGUsIHdlIGNhbiBzYWZlbHkgZGVsZXRlIHRoZSBidWZmZXIu IEJlY2F1c2UgYWZ0ZXIKPj4gKyAgICAgICogcmVjZWl2aW5nIHRoZSBTVE9QIGNvbW1hbmQsIHRo ZSBkZXZpY2UgbXVzdCBzdG9wIGFsbCBJL08gbWVzc2FnZQo+PiArICAgICAgKiBwcm9jZXNzaW5n LiBJZiB0aGVyZSBhcmUgc3RpbGwgcGVuZGluZyBtZXNzYWdlcyBpbiB0aGUgcXVldWUsIHRoZQo+ PiArICAgICAgKiBuZXh0IG9wcy0+aHdfcGFyYW1zKCkgY2FsbCBzaG91bGQgZGVhbCB3aXRoIHRo aXMuCj4+ICsgICAgICAqLwo+PiArICAgICBzbmRfcGNtX2xpYl9mcmVlX3BhZ2VzKHN1YnN0cmVh bSk7Cj4+ICsKPj4gKyAgICAgcmV0dXJuIHJjOwo+PiArfQo+PiArCj4+ICsvKioKPj4gKyAqIHZp cnRzbmRfcGNtX2h3X3BhcmFtcygpIC0gUHJlcGFyZSB0aGUgUENNIHN1YnN0cmVhbS4KPj4gKyAq IEBzdWJzdHJlYW06IEtlcm5lbCBBTFNBIHN1YnN0cmVhbS4KPj4gKyAqCj4+ICsgKiBUaGUgZnVu Y3Rpb24gY2FuIGJlIGNhbGxlZCBib3RoIGZyb20gdGhlIHVwcGVyIGxldmVsIG9yIGZyb20gdGhl IGRyaXZlcgo+PiArICogaXRzZWxmLgo+PiArICoKPj4gKyAqIEluIGFsbCBjYXNlcywgdGhlIGZ1 bmN0aW9uOgo+PiArICogICAxLiBjaGVja3MgdGhlIHN0YXRlIG9mIHRoZSB2aXJ0cXVldWUgYW5k LCBpZiBuZWNlc3NhcnksIHRyaWVzIHRvIGZpeCBpdCwKPj4gKyAqICAgMi4gcHJlcGFyZXMgdGhl IHN1YnN0cmVhbSBvbiB0aGUgZGV2aWNlIHNpZGUuCj4+ICsgKgo+PiArICogQ29udGV4dDogQW55 IGNvbnRleHQgdGhhdCBwZXJtaXRzIHRvIHNsZWVwLiBNYXkgdGFrZSBhbmQgcmVsZWFzZSB0aGUg dHgvcngKPj4gKyAqICAgICAgICAgIHF1ZXVlIHNwaW5sb2NrLgo+PiArICogUmV0dXJuOiAwIG9u IHN1Y2Nlc3MsIC1lcnJubyBvbiBmYWlsdXJlLgo+PiArICovCj4+ICtzdGF0aWMgaW50IHZpcnRz bmRfcGNtX3ByZXBhcmUoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCj4+ICt7 Cj4+ICsgICAgIHN0cnVjdCB2aXJ0aW9fcGNtX3N1YnN0cmVhbSAqc3MgPSBzbmRfcGNtX3N1YnN0 cmVhbV9jaGlwKHN1YnN0cmVhbSk7Cj4+ICsgICAgIHN0cnVjdCB2aXJ0aW9fc25kX3F1ZXVlICpx dWV1ZSA9IHZpcnRzbmRfcGNtX3F1ZXVlKHNzKTsKPj4gKyAgICAgc3RydWN0IHZpcnRpb19zbmRf bXNnICptc2c7Cj4+ICsgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+ICsgICAgIGludCByYzsK Pj4gKwo+PiArICAgICAvKgo+PiArICAgICAgKiBJZiB3ZSBnb3QgaGVyZSBhZnRlciBvcHMtPnRy aWdnZXIoKSB3YXMgY2FsbGVkLCB0aGUgcXVldWUgbWF5Cj4+ICsgICAgICAqIHN0aWxsIGNvbnRh aW4gbWVzc2FnZXMuIEluIHRoaXMgY2FzZSwgd2UgbmVlZCB0byByZXNldCB0aGUKPj4gKyAgICAg ICogc3Vic3RyZWFtIGZpcnN0Lgo+PiArICAgICAgKi8KPj4gKyAgICAgaWYgKGF0b21pY19yZWFk KCZzcy0+bXNnX2NvdW50KSkgewo+PiArICAgICAgICAgICAgIHJjID0gdmlydHNuZF9wY21faHdf cGFyYW1zKHN1YnN0cmVhbSwgTlVMTCk7Cj4+ICsgICAgICAgICAgICAgaWYgKHJjKQo+PiArICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJjOwo+PiArICAgICB9Cj4+ICsKPj4gKyAgICAgc3Bp bl9sb2NrX2lycXNhdmUoJnF1ZXVlLT5sb2NrLCBmbGFncyk7Cj4+ICsgICAgIHNzLT5tc2dfbGFz dF9lbnF1ZXVlZCA9IC0xOwo+PiArICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZxdWV1ZS0+ bG9jaywgZmxhZ3MpOwo+PiArCj4+ICsgICAgIC8qCj4+ICsgICAgICAqIFNpbmNlIEkvTyBtZXNz YWdlcyBhcmUgYXN5bmNocm9ub3VzLCB0aGV5IGNhbiBiZSBjb21wbGV0ZWQKPj4gKyAgICAgICog d2hlbiB0aGUgcnVudGltZSBzdHJ1Y3R1cmUgbm8gbG9uZ2VyIGV4aXN0cy4gU2luY2UgZWFjaAo+ PiArICAgICAgKiBjb21wbGV0aW9uIGltcGxpZXMgaW5jcmVtZW50aW5nIHRoZSBod19wdHIsIHdl IGNhY2hlIGFsbCB0aGUKPj4gKyAgICAgICogY3VycmVudCB2YWx1ZXMgbmVlZGVkIHRvIGNvbXB1 dGUgdGhlIG5ldyBod19wdHIgdmFsdWUuCj4+ICsgICAgICAqLwo+PiArICAgICBzcy0+ZnJhbWVf Ynl0ZXMgPSBzdWJzdHJlYW0tPnJ1bnRpbWUtPmZyYW1lX2JpdHMgPj4gMzsKPj4gKyAgICAgc3Mt PnBlcmlvZF9zaXplID0gc3Vic3RyZWFtLT5ydW50aW1lLT5wZXJpb2Rfc2l6ZTsKPj4gKyAgICAg c3MtPmJ1ZmZlcl9zaXplID0gc3Vic3RyZWFtLT5ydW50aW1lLT5idWZmZXJfc2l6ZTsKPj4gKwo+ PiArICAgICBhdG9taWNfc2V0KCZzcy0+aHdfcHRyLCAwKTsKPj4gKyAgICAgYXRvbWljX3NldCgm c3MtPnhmZXJfeHJ1biwgMCk7Cj4+ICsgICAgIGF0b21pY19zZXQoJnNzLT5tc2dfY291bnQsIDAp Owo+PiArCj4+ICsgICAgIG1zZyA9IHZpcnRzbmRfcGNtX2N0bF9tc2dfYWxsb2Moc3MsIFZJUlRJ T19TTkRfUl9QQ01fUFJFUEFSRSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHRlBfS0VSTkVMKTsKPj4gKyAgICAgaWYgKElTX0VSUihtc2cpKQo+PiArICAgICAgICAg ICAgIHJldHVybiBQVFJfRVJSKG1zZyk7Cj4+ICsKPj4gKyAgICAgcmV0dXJuIHZpcnRzbmRfY3Rs X21zZ19zZW5kX3N5bmMoc3MtPnNuZCwgbXNnKTsKPj4gK30KPj4gKwo+PiArLyoqCj4+ICsgKiB2 aXJ0c25kX3BjbV90cmlnZ2VyKCkgLSBQcm9jZXNzIGNvbW1hbmQgZm9yIHRoZSBQQ00gc3Vic3Ry ZWFtLgo+PiArICogQHN1YnN0cmVhbTogS2VybmVsIEFMU0Egc3Vic3RyZWFtLgo+PiArICogQGNv bW1hbmQ6IFN1YnN0cmVhbSBjb21tYW5kIChTTkRSVl9QQ01fVFJJR0dFUl9YWFgpLgo+PiArICoK Pj4gKyAqIERlcGVuZGluZyBvbiB0aGUgY29tbWFuZCwgdGhlIGZ1bmN0aW9uIGRvZXMgdGhlIGZv bGxvd2luZzoKPj4gKyAqICAgMS4gZW5hYmxlcy9kaXNhYmxlcyBkYXRhIHRyYW5zbWlzc2lvbiwK Pj4gKyAqICAgMi4gc3RhcnRzL3N0b3BzIHRoZSBzdWJzdHJlYW0gb24gdGhlIGRldmljZSBzaWRl Lgo+PiArICoKPj4gKyAqIENvbnRleHQ6IEF0b21pYyBjb250ZXh0LiBNYXkgdGFrZSBhbmQgcmVs ZWFzZSB0aGUgdHgvcnggcXVldWUgc3BpbmxvY2suCj4+ICsgKiBSZXR1cm46IDAgb24gc3VjY2Vz cywgLWVycm5vIG9uIGZhaWx1cmUuCj4+ICsgKi8KPj4gK3N0YXRpYyBpbnQgdmlydHNuZF9wY21f dHJpZ2dlcihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwgaW50IGNvbW1hbmQp Cj4+ICt7Cj4+ICsgICAgIHN0cnVjdCB2aXJ0aW9fcGNtX3N1YnN0cmVhbSAqc3MgPSBzbmRfcGNt X3N1YnN0cmVhbV9jaGlwKHN1YnN0cmVhbSk7Cj4+ICsgICAgIHN0cnVjdCB2aXJ0aW9fc25kICpz bmQgPSBzcy0+c25kOwo+PiArICAgICBzdHJ1Y3QgdmlydGlvX3NuZF9xdWV1ZSAqcXVldWUgPSB2 aXJ0c25kX3BjbV9xdWV1ZShzcyk7Cj4+ICsgICAgIHN0cnVjdCB2aXJ0aW9fc25kX21zZyAqbXNn Owo+PiArCj4+ICsgICAgIHN3aXRjaCAoY29tbWFuZCkgewo+PiArICAgICBjYXNlIFNORFJWX1BD TV9UUklHR0VSX1NUQVJUOgo+PiArICAgICBjYXNlIFNORFJWX1BDTV9UUklHR0VSX1BBVVNFX1JF TEVBU0U6IHsKPj4gKyAgICAgICAgICAgICBpbnQgcmM7Cj4+ICsKPj4gKyAgICAgICAgICAgICBz cGluX2xvY2soJnF1ZXVlLT5sb2NrKTsKPj4gKyAgICAgICAgICAgICByYyA9IHZpcnRzbmRfcGNt X21zZ19zZW5kKHNzKTsKPj4gKyAgICAgICAgICAgICBzcGluX3VubG9jaygmcXVldWUtPmxvY2sp Owo+PiArICAgICAgICAgICAgIGlmIChyYykKPj4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVy biByYzsKPj4gKwo+PiArICAgICAgICAgICAgIGF0b21pY19zZXQoJnNzLT54ZmVyX2VuYWJsZWQs IDEpOwo+PiArCj4+ICsgICAgICAgICAgICAgbXNnID0gdmlydHNuZF9wY21fY3RsX21zZ19hbGxv YyhzcywgVklSVElPX1NORF9SX1BDTV9TVEFSVCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdGUF9BVE9NSUMpOwo+PiArICAgICAgICAgICAgIGlmIChJ U19FUlIobXNnKSkKPj4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKG1zZyk7 Cj4+ICsKPj4gKyAgICAgICAgICAgICByZXR1cm4gdmlydHNuZF9jdGxfbXNnX3NlbmQoc25kLCBt c2cpOwo+PiArICAgICB9Cj4+ICsgICAgIGNhc2UgU05EUlZfUENNX1RSSUdHRVJfU1RPUDoKPj4g KyAgICAgY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9QQVVTRV9QVVNIOiB7Cj4+ICsgICAgICAgICAg ICAgYXRvbWljX3NldCgmc3MtPnhmZXJfZW5hYmxlZCwgMCk7Cj4+ICsKPj4gKyAgICAgICAgICAg ICBtc2cgPSB2aXJ0c25kX3BjbV9jdGxfbXNnX2FsbG9jKHNzLCBWSVJUSU9fU05EX1JfUENNX1NU T1AsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRlBf QVRPTUlDKTsKPj4gKyAgICAgICAgICAgICBpZiAoSVNfRVJSKG1zZykpCj4+ICsgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gUFRSX0VSUihtc2cpOwo+PiArCj4+ICsgICAgICAgICAgICAgcmV0 dXJuIHZpcnRzbmRfY3RsX21zZ19zZW5kKHNuZCwgbXNnKTsKPj4gKyAgICAgfQo+PiArICAgICBk ZWZhdWx0OiB7Cj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsgICAgIH0KPj4g KyAgICAgfQo+PiArfQo+PiArCj4+ICsvKioKPj4gKyAqIHZpcnRzbmRfcGNtX3BvaW50ZXIoKSAt IEdldCB0aGUgY3VycmVudCBoYXJkd2FyZSBwb3NpdGlvbiBmb3IgdGhlIFBDTQo+PiArICogICAg ICAgICAgICAgICAgICAgICAgICAgc3Vic3RyZWFtLgo+PiArICogQHN1YnN0cmVhbTogS2VybmVs IEFMU0Egc3Vic3RyZWFtLgo+PiArICoKPj4gKyAqIENvbnRleHQ6IEF0b21pYyBjb250ZXh0Lgo+ PiArICogUmV0dXJuOiBIYXJkd2FyZSBwb3NpdGlvbiBpbiBmcmFtZXMgaW5zaWRlIFswIC4uLiBi dWZmZXJfc2l6ZSkgcmFuZ2UuCj4+ICsgKi8KPj4gK3N0YXRpYyBzbmRfcGNtX3VmcmFtZXNfdAo+ PiArdmlydHNuZF9wY21fcG9pbnRlcihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVh bSkKPj4gK3sKPj4gKyAgICAgc3RydWN0IHZpcnRpb19wY21fc3Vic3RyZWFtICpzcyA9IHNuZF9w Y21fc3Vic3RyZWFtX2NoaXAoc3Vic3RyZWFtKTsKPj4gKwo+PiArICAgICBpZiAoYXRvbWljX3Jl YWQoJnNzLT54ZmVyX3hydW4pKQo+PiArICAgICAgICAgICAgIHJldHVybiBTTkRSVl9QQ01fUE9T X1hSVU47Cj4+ICsKPj4gKyAgICAgcmV0dXJuIChzbmRfcGNtX3VmcmFtZXNfdClhdG9taWNfcmVh ZCgmc3MtPmh3X3B0cik7Cj4+ICt9Cj4+ICsKPj4gKy8qIFBDTSBzdWJzdHJlYW0gb3BlcmF0b3Jz IG1hcC4gKi8KPj4gK2NvbnN0IHN0cnVjdCBzbmRfcGNtX29wcyB2aXJ0c25kX3BjbV9vcHMgPSB7 Cj4+ICsgICAgIC5vcGVuID0gdmlydHNuZF9wY21fb3BlbiwKPj4gKyAgICAgLmNsb3NlID0gdmly dHNuZF9wY21fY2xvc2UsCj4+ICsgICAgIC5pb2N0bCA9IHNuZF9wY21fbGliX2lvY3RsLAo+PiAr ICAgICAuaHdfcGFyYW1zID0gdmlydHNuZF9wY21faHdfcGFyYW1zLAo+PiArICAgICAuaHdfZnJl ZSA9IHZpcnRzbmRfcGNtX2h3X2ZyZWUsCj4+ICsgICAgIC5wcmVwYXJlID0gdmlydHNuZF9wY21f cHJlcGFyZSwKPj4gKyAgICAgLnRyaWdnZXIgPSB2aXJ0c25kX3BjbV90cmlnZ2VyLAo+PiArICAg ICAucG9pbnRlciA9IHZpcnRzbmRfcGNtX3BvaW50ZXIsCj4+ICt9Owo+PiAtLQo+PiAyLjMwLjAK Pj4KPj4KPiAKPiAKCi0tIApBbnRvbiBZYWtvdmxldgpTZW5pb3IgU29mdHdhcmUgRW5naW5lZXIK Ck9wZW5TeW5lcmd5IEdtYkgKUm90aGVyc3RyLiAyMCwgMTAyNDUgQmVybGluCgpQaG9uZTogKzQ5 IDMwIDYwIDk4IDU0IDAKRS1NYWlsOiBhbnRvbi55YWtvdmxldkBvcGVuc3luZXJneS5jb20KCnd3 dy5vcGVuc3luZXJneS5jb20KCkhhbmRlbHNyZWdpc3Rlci9Db21tZXJjaWFsIFJlZ2lzdHJ5OiBB bXRzZ2VyaWNodCBDaGFybG90dGVuYnVyZywgSFJCIDEwODYxNkIKR2VzY2jDpGZ0c2bDvGhyZXIv TWFuYWdpbmcgRGlyZWN0b3I6IFJlZ2lzIEFkamFtYWgKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClZpcnR1YWxpemF0aW9uIG1haWxpbmcgbGlzdApWaXJ0 dWFsaXphdGlvbkBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZwpodHRwczovL2xpc3RzLmxpbnV4 Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby92aXJ0dWFsaXphdGlvbg==